訂閱
糾錯
加入自媒體

計算機架構(gòu)到底是個什么樣子的?

2020-12-03 09:59
一口Linux
關注

一、計算機架構(gòu)

在了解計算機架構(gòu)之前,我們先來認識幾位對計算機的發(fā)明做出關鍵共享的幾位大佬。

1. 巴貝奇

機械計算機之父,英國貴族,曾孤軍奮戰(zhàn)下造出的第一臺差分機,運算精度達到了6位小數(shù),后來又設計了20位精度的差分機,其設計理念已經(jīng)達到了機械設計登峰造極的境界。

1985~1991年,倫敦科學博物館為了紀念巴貝奇誕辰200周年,根據(jù)其1849年的設計,用純19世紀的技術成功造出了差分機2號。

巴貝奇堪稱上個世紀最強大腦,他的大腦現(xiàn)保存在英國科學博物館。

程序員的祖師奶奶Ada正是在和巴貝奇共同工作時提出了程序循環(huán)分支等等我們現(xiàn)在都習以為常的編程理念。

2. 圖靈

被稱為計算機科學之父,人工智能之父。1931年圖靈進入劍橋大學國王學院,畢業(yè)后到美國普林斯頓大學攻讀博士學位,第二次世界大戰(zhàn)爆發(fā)后回到劍橋,后曾協(xié)助軍方破解德國的著名密碼系統(tǒng)Enigma,幫助盟軍取得了二戰(zhàn)的勝利。圖靈對于人工智能的發(fā)展有諸多貢獻,提出了一種用于判定機器是否具有智能的試驗方法,即圖靈試驗,至今,每年都有試驗的比賽。

圖靈在戰(zhàn)時服務的機構(gòu)于1943年研制成功的CO-LOSSUS(巨人)機,這臺機器的設計采用了圖靈提出的某些概念。它用了1500個電子管,采用了光電管閱讀器;利用穿孔紙帶輸入;并采用了電子管雙穩(wěn)態(tài)線路,執(zhí)行計數(shù)、二進制算術及布爾代數(shù)邏輯運算,巨人機共生產(chǎn)了10臺,用它們出色地完成了密碼破譯工作。

強烈推薦這部根據(jù)圖靈生平改編的電影《模仿游戲》,一起感受下這個絕世天才不平凡的一生。

3. 馮諾依曼-《計算機與人腦》

計算機架構(gòu)主要有兩種:哈佛架構(gòu)、馮諾依曼架構(gòu),F(xiàn)代計算機,大部分都是基于馮諾依曼體系結(jié)構(gòu)。

我個人認為馮諾依曼應該是上個世紀「最聰明的人,沒有之一」。

他的個人成就在此就不說了,大家可以自行搜索,很多成就,一口君連名字都看不懂,只有博弈論還勉強知道是啥意思。

本文只討論大神對計算機的貢獻【其實計算機并不是大神的最厲害的成就,而且他也并沒有花太多時間精力在計算機的研究上】。

1955年10月,諾伊曼,被查出患有癌癥。而他幾乎是在他生命的最后時刻,于臨終的病榻上撰寫了關于人的神經(jīng)系統(tǒng)與計算機關系的講稿。1958年,他的講稿以《計算機與人腦》為題出版。

諾依曼從數(shù)學的角度,主要是從邏輯和統(tǒng)計數(shù)學的角度,討論了神經(jīng)系統(tǒng)的刺激——反應和記憶等問題,提出神經(jīng)系統(tǒng)具有數(shù)字部分和模擬部分兩方面的特征,探討了神經(jīng)系統(tǒng)的控制及邏輯結(jié)構(gòu)。

4. 馮諾依曼架構(gòu)

馮諾依曼的核心是:「存儲程序,順序執(zhí)行」,規(guī)定計算機必須具有如下功能:

把需要的程序和數(shù)據(jù)送至計算機中;必須具有長期記憶程序、數(shù)據(jù)、中間結(jié)果及最終運算結(jié)果的能力;能夠完成各種算術、邏輯運算和數(shù)據(jù)傳送等數(shù)據(jù)加工處理的能力;能夠根據(jù)需要控制程序走向,并能根據(jù)指令控制機器的各部件協(xié)調(diào)操作;能夠按照要求將處理結(jié)果輸出給用戶

馮諾依曼架構(gòu)

5. 哈佛架構(gòu)

馮諾依曼結(jié)構(gòu)和哈佛結(jié)構(gòu)是有區(qū)別的。

馮諾依曼結(jié)構(gòu)是程序存儲區(qū)和數(shù)據(jù)存儲器都是可以放到內(nèi)存中,統(tǒng)一編碼的,而哈弗結(jié)構(gòu)是分開編址的。

哈佛架構(gòu)

6. 哪些處理器是哈佛架構(gòu)、馮諾依曼架構(gòu)?

「哈佛架構(gòu)」

MCU(單片機)幾乎都是用哈佛結(jié)構(gòu),譬如廣泛使用的51單片機、典型的STM32單片機(核心是ARM Cortex-M系列的)都是哈佛結(jié)構(gòu)。

「馮諾依曼架構(gòu)」

PC和服務器芯片(譬如Intel AMD),ARM Cortex-A系列嵌入式芯片(譬如核心是ARM Cortex-A9的三星exynos-4412,譬如華為的麒麟970等手機芯片)等都是馮諾依曼結(jié)構(gòu)。這些系統(tǒng)都需要大量內(nèi)存,所以工作內(nèi)存都是DRAM,因為他們更適合使用馮諾依曼系統(tǒng)。

「混合結(jié)構(gòu)」

實際上現(xiàn)代的CPU(準確說叫SoC)基本都不是純粹的哈佛結(jié)構(gòu)或馮諾依曼機構(gòu),而都是混合結(jié)構(gòu)的。

比如三星exynos 4412,使用ARM的Cortex-A9核心。基于exynos 4412開發(fā)板上都配備了1024MB的DDR SDRAM,和8GB的EMMC。

正常工作時所有的程序和數(shù)據(jù)都從EMMC中加載到DDR中,也就是說不管你是指令還是數(shù)據(jù),存儲都是在EMMC中,運行時都在DDR中,再通過cache和寄存器送給CPU去加工處理。這就是典型的馮諾依曼系統(tǒng)。

但是,exynos 4412內(nèi)部仍然有一定容量的64KB irom和64KB iram,這些irom和iram是用于SoC引導和啟動的,芯片上電后首先會執(zhí)行內(nèi)部irom中固化的代碼,其實執(zhí)行這些代碼時4412就好像一個MCU一樣,irom就是他的flash,iram就是他的SRAM,這又是典型的哈佛結(jié)構(gòu)。

這就是混合式結(jié)構(gòu)設計,而非純粹設計。之所以采用混合式設計其實就是為了各取所長而已。

不管白貓黑貓,解決問題就是好貓。

二、計算機組成

計算機系統(tǒng)=硬件系統(tǒng)+軟件系統(tǒng)硬件是計算機系統(tǒng)的物質(zhì)基礎,軟件是計算機系統(tǒng)的靈魂。硬件和軟件是相輔相成的,不可分割的整體。

計算機組成

1).輸入設備

輸入設備的任務是把人們編好的程序和原始數(shù)據(jù)送到計算機中去,并且將它們轉(zhuǎn)換成計算機內(nèi)部所能識別和接受的信息方式。常用的有鍵盤、鼠標、掃描儀等。

2).輸出設備

輸出設備的任務是將計算機的處理結(jié)果以人或其他設備所能接受的形式送出計算機。常用的有顯示器、打印機、繪圖儀等。

3).存儲器、CPU

見第三節(jié)

4). 計算機的總線結(jié)構(gòu)

將各大基本部件,按某種方式連接起來就構(gòu)成了計算機的硬件系統(tǒng)。

系統(tǒng)總線包含有三種不同功能的總線,即數(shù)據(jù)總線DB(Data Bus)、地址總線AB(Address Bus)和控制總線CB(Control Bus)。

數(shù)據(jù)總線DB用于傳送數(shù)據(jù)信息。數(shù)據(jù)總線的位數(shù)是微型計算機的一個重要指標,通常與微處理的字長相一致。例如Intel 8086微處理器字長16位,其數(shù)據(jù)總線寬度也是16位。

地址總線AB專門用來傳送地址的。地址總線的位數(shù)決定了CPU可直接尋址的內(nèi)存空間大小,比如8位微機的地址總線為16位,則其最大可尋址空間為216=64KB,16位微型機的地址總線為20位,其可尋址空間為220=1MB。控制總線CB用來傳送控制信號和時序信號。控制信號中,有的是微處理器送往存儲器和I/O接口電路的,如讀/寫信號,片選信號、中斷響應信號等;也有是其它部件反饋給CPU的,比如:中斷申請信號、復位信號、總線請求信號、限備就緒信號等?刂瓶偩的具體情況取決于CPU。

三、 CPU工作原理

CPU內(nèi)部主要包括運算器和控制器。

指令

1) 存儲器

存儲器是用來存放程序和數(shù)據(jù)的部件,它是一個記憶裝置,也是計算機能夠?qū)崿F(xiàn)“存儲程序控制”的基礎。

包括:Cache、主存儲器、輔助存儲器。

「高速緩沖存儲器(Cache)」CPU可以直接訪問,用來存放當前正在執(zhí)行的程序中的活躍部分,以便快速地向CPU提供指令和數(shù)據(jù)。

「主存儲器」可由CPU直接訪問,用來存放當前正在執(zhí)行的程序和數(shù)據(jù)。

「輔助存儲器」設置在主機外部,CPU不能直接訪問,用來存放暫時不參與運行的程序和數(shù)據(jù),需要時再傳送到主存。

存儲器

2) 運算器

運算器的核心是算術邏輯運算部件ALU,還包括若干個寄存器(如累加寄存器、暫存器等)。

ALU可以執(zhí)行算術運算(包括加減乘數(shù)等基本運算及其附加運算)和邏輯運算(包括移位、邏輯測試或兩個值比較)。相對控制單元而言,運算器接受控制單元的命令而進行動作,即運算單元所進行的全部操作都是由控制單元發(fā)出的控制信號來指揮的,所以它是執(zhí)行部件。

運算器

3)  控制器

控制單元是整個CPU的指揮控制中心,由程序計數(shù)器PC(Program Counter), 指令寄存器IR(Instruction Register)、指令譯碼器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等組成,對協(xié)調(diào)整個電腦有序工作極為重要。

它根據(jù)用戶預先編好的程序,依次從存儲器中取出各條指令,放在指令寄存器IR中,通過指令譯碼(分析)確定應該進行什么操作,然后通過操作控制器OC,按確定的時序,向相應的部件發(fā)出微操作控制信號。操作控制器OC中主要包括節(jié)拍脈沖發(fā)生器、控制矩陣、時鐘脈沖發(fā)生器、復位電路和啟停電路等控制邏輯。

控制器

4) CPU的運行原理總結(jié)

控制單元在時序脈沖的作用下,將指令計數(shù)器里所指向的指令地址(這個地址是在內(nèi)存里的)送到地址總線上去,然后CPU將這個地址里的指令讀到指令寄存器進行譯碼。

對于執(zhí)行指令過程中所需要用到的數(shù)據(jù),會將數(shù)據(jù)地址也送到地址總線,然后CPU把數(shù)據(jù)讀到CPU的內(nèi)部存儲單元(就是內(nèi)部寄存器)暫存起來,最后命令運算單元對數(shù)據(jù)進行處理加工。

周而復始,一直這樣執(zhí)行下去。

5) 指令執(zhí)行過程

一條指令的執(zhí)行通常包括以下4個步驟:

指令執(zhí)行過程

1、取指令:CPU的控制器從內(nèi)存讀取一條指令并放入指令寄存器。2、指令譯碼:指令寄存器中的指令經(jīng)過譯碼,決定該指令應進行何種操作(就是指令里的操作碼)、操作數(shù)在哪里(操作數(shù)的地址)。3、 執(zhí)行指令,分兩個階段“取操作數(shù)”和“進行運算”。4、 修改指令計數(shù)器,決定下一條指令的地址。

6) ARM技術特征

ARM的成功,一方面得益于它獨特的公司運作模式,另一方面,當然來自于ARM處理器自身的優(yōu)良性能。作為一種先進的RISC處理器,ARM處理器有如下特點。

體積小、低功耗、低成本、高性能。支持Thumb(16位)/ARM(32位)雙指令集,能很好地兼容8位/16位器件。大量使用寄存器,指令執(zhí)行速度更快。大多數(shù)數(shù)據(jù)操作都在寄存器中完成。尋址方式靈活簡單,執(zhí)行效率高。指令長度固定。此處有必要講解一下RISC微處理器的概念及其與CISC微處理器的區(qū)別。7) ARM體系架構(gòu)的發(fā)展

體系架構(gòu)的定義:體系架構(gòu)定義了指令集(ISA)和基于這一體系架構(gòu)下處理器的編程模型。基于同種體系架構(gòu)可以有多種處理器,每個處理器性能不同,所面向的應用不同,每個處理器的實現(xiàn)都要遵循這一體系結(jié)構(gòu)。ARM體系架構(gòu)為嵌入系統(tǒng)發(fā)展商提供很高的系統(tǒng)性能,同時保持優(yōu)異的功耗和效率。

ARM體系架構(gòu)為滿足ARM合作者及設計領域的一般需求正穩(wěn)步發(fā)展。目前,ARM體系架構(gòu)共定義了8個版本,從版本1到版本8,ARM體系的指令集功能不斷擴大,不同系列的ARM處理器,性能差別很大,應用范圍和對象也不盡相同,但是,如果是相同的ARM體系架構(gòu),那么基于它們的應用軟件是兼容的。

下面我們簡單介紹下 V7/V8架構(gòu)。

v7架構(gòu)

ARMv7架構(gòu)是在ARMv6架構(gòu)的基礎上誕生的。該架構(gòu)采用了Thumb-2技術,它是在ARM的Thumb代碼壓縮技術的基礎上發(fā)展起來的,并且保持了對現(xiàn)存ARM解決方案的完整的代碼兼容性。Thumb-2技術比純32位代碼少使用31%的內(nèi)存,減小了系統(tǒng)開銷,同時能夠提供比已有的基于Thumb技術的解決方案高出38%的性能。ARMV7架構(gòu)還采用了NEON技術,將DSP和媒體處理能力提高了近4倍。并支持改良的浮點運算,滿足下一代3D圖形、游戲物理應用及傳統(tǒng)嵌入式控制應用的需求。

v8架構(gòu)

ARMv8架構(gòu)是在32位ARM架構(gòu)上進行開發(fā)的,將被首先用于對擴展虛擬地址和64位數(shù)據(jù)處理技術有更高要求的產(chǎn)品領域,如企業(yè)應用、高檔消費電子產(chǎn)品。ARMv8架構(gòu)包含兩個執(zhí)行狀態(tài):AArch64和AArch32。AArch64執(zhí)行狀態(tài)針對64位處理技術,引入了一個全新指令集A64,可以存取大虛擬地址空間;而AArch32執(zhí)行狀態(tài)將支持現(xiàn)有的ARM指令集。目前的ARMv7架構(gòu)的主要特性都將在ARMv8架構(gòu)中得以保留或進一步拓展,如TrustZone技術、虛擬化技術及NEON advanced SIMD技術等。

8) ARM 微處理器架構(gòu)

ARM內(nèi)核采用RISC體系架構(gòu)。ARM體系架構(gòu)的主要特征如下。

采用大量的寄存器,它們都可以用于多種用途。采用Load/Store體系架構(gòu)。每條指令都條件執(zhí)行。采用多寄存器的Load/Store指令。能夠在單時鐘周期執(zhí)行的單條指令內(nèi)完成一項普通的移位操作和一項普通的ALU操作。通過協(xié)處理器指令集來擴展ARM指令集,包括在編程模式中增加了新的寄存器和數(shù)據(jù)類型。如果把Thumb指令集也當做ARM體系架構(gòu)的一部分,那么在Thumb體系架構(gòu)中還可以高密度16位壓縮形式表示指令集。9) ARM指令

ARM指令是RISC(Reduced Instruction Set Computing),即精簡執(zhí)令運算集,RISC把著眼點放在如何使計算機的結(jié)構(gòu)更加簡單和如何使計算機的處理速度更加快速上。RISC選取了使用頻率最高的簡單指令,拋棄復雜指令,固定指令長度,減少指令格式和尋址方式,不用或少用微碼控制。這些特點使得RISC非常適合嵌入式處理器。

RISC可以實現(xiàn)以相對少的晶體管設計出極快的微處理器。通過研究發(fā)現(xiàn),只有大約20%的指令是最常用的,把處理器能執(zhí)行的指令數(shù)目減少到最低限度,對它們的執(zhí)行過行優(yōu)化,就可以極大地提高處理的工作速度。

一般來說,RISC處理器比同等的CISC(Complex Instruction Set Computer,復雜指令集計算機)處理器要快50%-75%,同時RISC處理器更容易設計和糾錯。

一般指令格式如下:

指令格式

「操作碼:」操作碼就是匯編語言里的mov,add,jmp等符號碼;

「操作數(shù)地址:」用于說明該指令需要的操作數(shù)所在的地方,是在內(nèi)存里還是在CPU的內(nèi)部寄存器里。

實際上的機器指令格式遠比這個復雜,下圖是常用的ARM指令格式:

ARM 指令格式

關于這些機器指令格式,后面我們會挑選其中幾個分析,對于我們大部分讀者來說,沒有必要花太多精力去研究這些機器指令,只需要大概了解即可。

關于CPU我們從宏觀上把握到這個程度就OK了,后面我們會逐步進入后續(xù)階段的學習,介紹ARM寄存器模式、異常、尋址、匯編指令,以及C代碼中嵌入的匯編語言的寫法。

四、SOC

SOC: 系統(tǒng)芯片是一個將計算機或其他電子系統(tǒng)集成單一芯片的集成電路。系統(tǒng)芯片可以處理數(shù)字信號、模擬信號、混合信號甚至更高頻率的信號。

從狹義角度講,它是信息系統(tǒng)核心的芯片集成,是將系統(tǒng)關鍵部件集成在一塊芯片上;從廣義角度講, SoC是一個微小型系統(tǒng),如果說中央處理器(CPU)是大腦,那么SoC就是包括大腦、心臟、眼睛和手的系統(tǒng)。

1. ARM base Soc

嵌入式系統(tǒng)中常常要使用系統(tǒng)芯片。系統(tǒng)芯片的集成規(guī)模很大,一般達到幾百萬門到幾千萬門。SOC相對比較靈活,它可以將arm架構(gòu)的處理器與一些專用的外圍芯片集成到一起,組成一個系統(tǒng)。

下圖是一個典型的基于ARM架構(gòu)的SOC架構(gòu)圖。

ARM base Soc

一個典型的基于ARM的Soc架構(gòu)通常包含以下幾個主要部件:

ARM Processor core    處理器核Clocks and Reset Controller   時鐘和復位電路Interrupt Controller   中斷控制器ARM Propherals  外部設備GPIODMA PortExternal Memory Interface 外部內(nèi)存接口On chip RAM 偏上RAMAHB、APB總線

其實現(xiàn)有的ARM處理器如Hisi-3507、exynos-4412等處理器都是一個SOC系統(tǒng),尤其是應用處理器它集成了許多外圍的器件,為執(zhí)行更復雜的任務、更復雜的應用提供了強大的支持。

該架構(gòu)是我們理解匯編指令和編寫裸機程序的基石。

當我們拿到一個新的SOC的datasheet,首先就要根據(jù)這個架構(gòu),來查看SOC的「RAM空間、時鐘頻率、包括哪些外部設備的控制器,各個外設控制器的操作原理,各個外設對GPIO的引腳復用情況、各個控制器的SFR地址、中斷控制器是如何管理眾多中斷源的等等」。

2. 三星 Exynos 4412

2012年初,三星正式推出了自家的首款四核移動處理器Exynos4412。

下面三星的exynos 4412的SOC。

Exynos 4412 SCP結(jié)構(gòu)框圖

如上圖所示,exynos 4412主要包括以下模塊:

4(quad)個Cortex-A9處理器1MB的 L2 CacheInterrupt Controller 中斷控制器,管理所有的中斷源Interrupt Combiner 中斷控制器,管理soc內(nèi)的一些中斷源NEON ARM 架構(gòu)處理器擴展結(jié)構(gòu),旨在通過加速多媒體(video/audio)編解碼,用戶界面,2D/3D圖形及游戲來提高人對多媒體的體驗DRAM、Internal RAM、NAND Flash、SROM Controller 各種存儲設備的控制器SDIO、USB、I2C、UART、SPI等總線RTC、Watchdog TimerAudio Subsystem 聲音子系統(tǒng)IIS(Integrate Interface of Sound)接口 ,集成語音接口Power Management電源管理Multimedia Block 多媒體模塊

這款新Exynos四核處理器,擁有32nm HKMG(高K金屬柵極技術)制程,支持雙通道LPDDR21066。三星公司已將這顆圖形處理器主頻由此前的266MHz提升至400MHz,新聞稿指出其會比現(xiàn)有的雙核機型整體性能提升60%,圖像處理能力提升50%。

三星智能手機Galaxy S III手機就采用了Exynos4412處理器。

學習ARM就必須深刻了解soc架構(gòu),官方提供的datasheet是我們學習ARM、編寫驅(qū)動程序的基石,該手冊內(nèi)容比較多,我們并不需要每一章都掌握,用到哪個地方,我們就去學習即可。

后續(xù)的文章,會基于華清遠見的FS-4412開發(fā)板為大家講解常見的外設的原理,并編寫對應的驅(qū)動程序。

下一篇預告:《2. 從0開始學ARM-CPU原理,基于ARM的SOC講解》


聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

智能制造 獵頭職位 更多
文章糾錯
x
*文字標題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號