說到電子計(jì)算機(jī),當(dāng)今世界社會和科技發(fā)展的一個重要基石,其實(shí)是一個出現(xiàn)不到一個世紀(jì)的產(chǎn)物。世界上第一臺公認(rèn)的數(shù)字電子計(jì)算是“ENIAC”,是美國軍方為了計(jì)算彈道而研制的計(jì)算機(jī),由美國賓夕法尼亞大學(xué)莫爾電工學(xué)院制造的,它的體積龐大,占地面積170多平方米,重量約30噸,使用了超過1.8萬個真空管,消耗近140千瓦的電力。當(dāng)時彈道計(jì)算需要消耗相當(dāng)?shù)乃懔Γ绻萌肆τ?jì)算,是非常龐大而且耗時的消耗。這也就催生了電子計(jì)算機(jī)的研制。
盡管人們制造的計(jì)算機(jī)產(chǎn)品,不管是外觀,結(jié)構(gòu)等經(jīng)過了幾十年的發(fā)展,早已發(fā)生了極大地變化,而計(jì)算機(jī)也分化為了通用PC,和各種專用計(jì)算機(jī)。而計(jì)算機(jī)體系結(jié)構(gòu)中經(jīng)典的馮諾伊曼計(jì)算機(jī)結(jié)構(gòu)歷經(jīng)幾十年仍然是當(dāng)今計(jì)算機(jī)的數(shù)據(jù)硬件處理架構(gòu)的主流計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)地址變換,也稱為存儲程序型計(jì)算機(jī)。
存儲程序型計(jì)算機(jī),主要分為五個組件,存儲器,運(yùn)算器,和控制器。程序與數(shù)據(jù)都存放在存儲器中,運(yùn)行時,需要將數(shù)據(jù)和指令從存儲器中取出,運(yùn)算器負(fù)責(zé)進(jìn)行數(shù)據(jù)運(yùn)算及邏輯運(yùn)算等操作,而控制器則負(fù)責(zé)控制計(jì)算機(jī)程序的運(yùn)行與狀態(tài)。
計(jì)算機(jī)的運(yùn)行過程,如果進(jìn)行極度的簡化,我們可以這樣認(rèn)為,計(jì)算機(jī)在控制器的作用的下從存儲器取一條指令,對指令進(jìn)行譯碼,也就是解釋,這樣計(jì)算機(jī)就知道該條指令要做什么操作或者運(yùn)算,然后會將需要操作的數(shù)據(jù)放入運(yùn)算器中進(jìn)行運(yùn)算,將得出的結(jié)果再存入存儲器中。而輸入輸出就是字面上的意思,進(jìn)行信息的輸入輸出,也被稱為I/O設(shè)備或外設(shè)。而通常,包含了運(yùn)算器和控制器的單元,也就是我們常說的CPU( unit),中央處理單元,它集合了運(yùn)算與控制功能,也就是當(dāng)今計(jì)算機(jī)的大腦,電子設(shè)備絕對的核心。
計(jì)算機(jī)運(yùn)行的基本單元就是指令,計(jì)算機(jī)通過運(yùn)行一系列指令來完成任務(wù)。這一系列指令也就是我們常說的指令集,指令集主要分為簡單指令集和復(fù)雜指令集,計(jì)算機(jī)也就分為精簡指令集計(jì)算機(jī)RISC( set )和復(fù)雜指令集計(jì)算機(jī)CISC( set )。
而指令是什么呢?我們都知道計(jì)算機(jī)上運(yùn)行的軟件都是利用編程語言編寫出來的,這些都叫做高級程序語言,也是程序員們經(jīng)常接觸的,例如C++等等。而高級語言編寫出來后,計(jì)算機(jī)并不能直接理解高級語言,因?yàn)橛?jì)算機(jī)的一切基礎(chǔ)都建立在硬件系統(tǒng)所使用的二進(jìn)制上,所以我們編寫的高級語言首先會由我們軟件的編譯器轉(zhuǎn)變?yōu)橐粭l條指令計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)地址變換,復(fù)雜的軟件程序操作被編譯成大量的簡單的指令,程序在計(jì)算機(jī)的底層就是以指令的方式運(yùn)行。而指令到了計(jì)算機(jī)真實(shí)的硬件中,也就是真實(shí)的電路和晶體管,會被轉(zhuǎn)化為真正的二進(jìn)制碼,也就是一連串的0和1,這樣的碼叫做機(jī)器碼,這是硬件能直接使用或理解的。
RISC的特點(diǎn)就是指令集中的每條指令長度一定,每條指令所做的操作相對簡單。而CISC的特點(diǎn)就是指令集相對復(fù)雜,一般來說指令集中包含的指令的數(shù)目更多,而且指令的長度不等,每條的指令所做的操作相對復(fù)雜,即CISC一條指令所做的操作,RISC可能需要更多的指令來完成。
隨著計(jì)算機(jī)系統(tǒng)的復(fù)雜,要求計(jì)算機(jī)指令系統(tǒng)的構(gòu)造能使計(jì)算機(jī)的整體性能更快更穩(wěn)定。最初,人們采用的優(yōu)化方法是通過設(shè)置一些功能復(fù)雜的指令,把一些原來由軟件實(shí)現(xiàn)的、常用的功能改用硬件的指令系統(tǒng)實(shí)現(xiàn),以此來提高計(jì)算機(jī)的執(zhí)行速度。對于特殊的任務(wù)或者科學(xué)計(jì)算等,CISC能以更少的指令,更少的時間來完成。CISC的硬件相對更為復(fù)雜,電路占用的面積大,功耗更高。而CISC指令集的計(jì)算機(jī)通常是通用機(jī),包括我們常用的PC。
我們常聽說的所謂X86架構(gòu)就是一種復(fù)雜指令集架構(gòu),現(xiàn)在市場上常見的電腦都是基于X86架構(gòu)的,也就是我們的PC。X86架構(gòu)下的專利主要由Intel和AMD擁有,X86已經(jīng)成為一個復(fù)雜而龐大的體系,各種軟件公司所開發(fā)的軟件都是基于X86架構(gòu)的,不管是游戲還是影音辦公等等,可以把這個叫做X86的小生態(tài)圈。
RISC的指令簡單,指令執(zhí)行的平均周期即消耗的時間短,可以進(jìn)行深度的優(yōu)化,效率更高,指令并行執(zhí)行的性能更好,所以在追求最高性能上,優(yōu)勢明顯。對于非特殊任務(wù),效率很高,適用于高效處理器。而RISC因?yàn)橹噶詈唵危瑓R編語言程序需要的存儲程序的內(nèi)存空間更大,使用RISC的指令集的計(jì)算機(jī)主要是服務(wù)器等專用機(jī)。
而我國最著名的國產(chǎn)處理器項(xiàng)目龍芯,擁有MIPS指令集的授權(quán),就是以MIPS這種RISC型指令集為基礎(chǔ)的MIPS-like型處理器。可以說龍芯現(xiàn)在的不溫不火的狀態(tài),很大程度上是因?yàn)椋琗86架構(gòu)的市場太過龐大,整個PC業(yè)務(wù)可以說是Intel和聯(lián)盟,一大批的軟件是支持X86架構(gòu),也就形成了這樣一個復(fù)雜龐大而封閉的生態(tài)。而龍芯的生態(tài)才剛剛起步,要使得龍芯能夠大范圍應(yīng)用,需要眾多軟件的支持,例如在使用龍芯的電腦上,玩游戲或者使用以及其他各種軟件是不能實(shí)現(xiàn)的,因?yàn)檫@些軟件公司一開始就沒有開發(fā)能兼容龍芯這樣架構(gòu)的電腦的軟件。我想當(dāng)我們能夠在使用龍芯的電腦上獲得與使用Intel,AMD芯片的電腦一樣的軟件兼容服務(wù)的時候,相信龍芯就能夠打出一片天地。
我們所說到的處理器的性能,常常會提到一個指標(biāo),也就是主頻。主頻就是整個處理器工作的頻率,然而主頻高低并不等于性能的高低。主頻的實(shí)質(zhì)是處理器內(nèi)的最基礎(chǔ)的時鐘周期,這個周期決定了在一定的時間內(nèi),處理器能夠擁有多少個工作周期。
而性能除了主頻外,還依賴于指令集,緩存,CPU的位數(shù)等等。指令執(zhí)行的時間常常是以周期為單位的,即一個周期內(nèi)執(zhí)行一條指令,或一條指令執(zhí)行需要數(shù)個周期,來主頻高可能意味著同一時間內(nèi)可執(zhí)行的指令更多,但不同架構(gòu)的處理器在主頻相同,性能也有很大不同,頻率即使低,但是處理器微結(jié)構(gòu)設(shè)計(jì)更好,指令集有不同,例如RISC架構(gòu)的處理器可以實(shí)現(xiàn)各種優(yōu)化如更好的指令并行執(zhí)行效率,多級流水線等等策略時,性能可能更好。
除了處理器微結(jié)構(gòu)外,緩存也是制約處理器性能提升的瓶頸之一。當(dāng)我們處理器的工作頻率越來越快時,執(zhí)行指令與運(yùn)算越來越塊,需要取指令和存取數(shù)據(jù)也足夠快,才能提升性能。就像一座工廠,雖然它的產(chǎn)能大,工作效率高,當(dāng)運(yùn)送原材料與產(chǎn)品的汽車運(yùn)輸效率慢時,工廠更多的時間花在了等待原材料和等待產(chǎn)品離開工廠上。而現(xiàn)在我們的計(jì)算機(jī)訪存速度遠(yuǎn)遠(yuǎn)低于處理器速度,這也是為什么多級緩存的設(shè)計(jì)如此重要。