天天看點

《計算機組成原理》----1.2 體系結構群組成

本節書摘來自華章出版社《計算機組成原理》一書中的第1章,第1.2節, 作 者 computer organization and architecture: themes and variations[英]艾倫·克萊門茨(alan clements) 著,沈 立 王蘇峰 肖曉強 譯, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

我們已經建立起計算機和系統這兩個概念,我們還必須單獨定義術語體系結構。計算機體系結構含有結構(structure)的意思,描述了一些與計算機組成方式有關的内容。之是以定義計算機體系結構,是因為不同的使用者會從完全不同的角度看待計算機。例如,秘書可能會将計算機視作一個聰明的字處理裝置,而實體學家可能會将它看作是晶體中電子的活動。

《計算機組成原理》----1.2 體系結構群組成

我們對這兩種極端的觀點都不感興趣。計算機體系結構通常被認為是程式員視角中的計算機。程式員所看到的是計算機的抽象視圖,對他們來說,計算機的實際硬體和實作都被隐藏起來了。例如,程式員可以在完全不清楚加法操作如何進行的情況下訓示計算機将a與b相加。計算機體系結構的這個抽象視圖現在通常被稱作指令集體系結構(instruction set architecture, isa)。

在有關計算機的文獻中,術語組成(organization)的出現頻率與體系結構差不多。盡管這兩個詞有時會互換使用,但它們卻有不同的含義。計算機組成表示其體系結構的具體實作。軟體工程師也許會說計算機組成是計算機體系結構的執行個體化(即它将抽象變為具體)。現在人們通常會使用術語微體系結構(microarchitecture)而不是組成。從一個日常生活的例子中就可以看出體系結構與組成之間的差別。時鐘是報時工具,它的體系結構可被定義為在有刻度的表盤上轉動指針。而它的組成卻可以是機械式的飛輪或鐘擺,電子式的石英晶體振蕩器,或者由無線電波進行外部控制。

時鐘的例子說明一種給定的體系結構可以由不同的組成來實作。例如,在翻新一座塔上的古代時鐘時,可以将它的發條更換為電動馬達,而遊客卻根本察覺不到任何變化。

《計算機組成原理》----1.2 體系結構群組成

同樣,微處理器内的32位寄存器可以按照與16位計算機相同的方式實作,如使用16位資料總線,以16位為機關傳輸資料,功能單元也是16位的。如果程式員訓示計算機将寄存器a中的32位資料複制到寄存器b中,他将要執行一個32位操作,但16位計算機将執行兩個16位操作,這對程式員來說是完全不可見的。按照這個例子,我們可以說一台計算機的體系結構是32位的,但它的組成卻是16位的。

将體系結構和實作完全分離是錯誤的,因為二者是互相影響的。一種給定的體系結構可能最适合采用x技術實作,另一種體系結構則可能最适合采用y技術實作,即使每種體系結構都能采用x技術和y技術實作。本書不會深入讨論較低層次的組成和實作(即門級和電路級的計算機組成),這是電子工程師關注的事情。但是,我們會讨論負責解釋指令的控制單元(control unit),因為它對計算機體系結構的發展影響很大。

《計算機組成原理》----1.2 體系結構群組成

當我們說計算機體系結構描述了程式員所看到的計算機時,會引起歧義。哪個層次的程式員?彙編語言程式員看到的計算機與c或java等進階語言程式員看到的有很大的差別。即使都是進階語言程式員,c程式員所看到的也與prolog或lisp程式員看到的有很大的不同。

《計算機組成原理》----1.2 體系結構群組成

本書将介紹寄存器級的微處理器體系結構(即彙編語言程式員所看到的計算機),既包括一些與處理器實作有關的方面(例如流水線和cache),也包括一些與進階語言有關的方面(例如棧和資料結構)。本書關注微處理器體系結構而不是大型機體系結構,因為桌面計算機和小型機中都有微處理器,而大型機越來越多地被用于專門的應用領域。現在再談論大型計算機也許不合适,因為它屬于價格便宜、體積小的微機之前的一個時代。我們用術語“超級計算機”(supercomputer)來描述那些用于科學計算和軍事應用、性能極其強大的計算機,它們像過去的大型機那樣需要自己的機房。

《計算機組成原理》----1.2 體系結構群組成
《計算機組成原理》----1.2 體系結構群組成

本書用術語“體系結構(architecture)”代表計算機的抽象指令集體系結構(它的指令集),而用術語“組成(organization)”代表計算機的實際硬體實作。然而,“組成”一詞也會被用于描述完整的計算機,包括它的cpu、存儲器、總線以及輸入/輸出機制。最後,我們用術語“微體系結構(microarchitecture)”代表cpu的實作。intel在其pentium及後續處理器的介紹中使用這個詞表示cpu的實作,是以它變得越來越流行。顯然,組成和微體系結構的使用越來越重合。

《計算機組成原理》----1.2 體系結構群組成
《計算機組成原理》----1.2 體系結構群組成

圖1-5指出了一些能夠影響計算機設計和性能的因素。标有“技術”的方框說明了制造計算機元件的工藝的重要性(例如,晶片制造技術決定了晶片的速度和功耗)。計算機的速度在計算機系統其餘部分的設計中成了主角,因為将快速處理器和慢速存儲器放在一起使用是毫無意義的。同樣,功耗決定了計算機的使用範圍(是位置固定的還是可移動的)。

20世紀70年代以來,半導體技術一直按照摩爾定律的預測發展。摩爾定律是一個經驗觀察結果,它指出,晶片的內建度每18個月翻一番。這個定律使得晶片制造商得以在所需的制造技術還不存在的情況下就開始設計未來的處理器産品。摩爾定律一詞被計算機論文廣泛引用,即使一些引用已經偏離了它的本意(即晶片的內建度每18個月翻一番)。通常,摩爾定律也意味着處理器的性能每18個月翻一番。

圖1-5中标有“應用”的方框表示計算機的最終應用。一些計算機被用于汽車的嵌入式控制系統,一些被用于遊戲機,還有一些用于家庭或辦公室。如果不同的計算機所做的事情也不相同,那麼有理由認為目标應用對計算機體系結構群組成的設計有一定的影響。

圖1-5中标有“工具”的方框說明一些計算機之外的因素也會影響計算機設計。計算機已被用于設計計算機。計算機工具中有很多軟體産品,從電路級的硬體設計工具,到計算機模拟程式,到被用來比較不同計算機速度的基準程式或測試用例。

最先進的計算機使用了最新的制造技術。圖1-6列出了計算機設計者感興趣的一些技術。裝置技術決定了計算機的速度及其存儲系統的容量,包括那些用于制造處理器和主存的半導體技術,制造硬碟的磁技術,用于cd-rom、dvd和藍光光碟的光技術,以及網絡連接配接技術。

《計算機組成原理》----1.2 體系結構群組成

圖1-6中還包括計算機總線技術,因為它的結構、組成和控制均對計算機性能有很大影響。圖中還列出了外設(如數據機、鍵盤、列印機和顯示系統)與應用(如桌上排版、圖形和多媒體)等技術,因為它們都會影響計算機系統的設計。

計算機科學專業的一些學生畢業後會在工業界工作,與資料庫、網絡、web設計、視訊後期制作或安全計算機軟體打交道。即使隻有少數畢業生會從事計算機系統設計工作,也不能将計算機同計算機科學分開,就像不能将飛行員同空氣動力學和噴氣式發動機分開一樣。盡管飛行員在大多數時候不需要了解空氣動力學或發動機原理,但當發生故障或情況明顯反常時,他會去尋找最有用的知識。

計算機體系結構課程會概述計算機是如何工作的,計算機能做什麼,并告訴學生們一台典型的存儲程式計算機是如何運轉的。一門好的課程應該突出設計者今天所面臨的重要問題,并為學生提供進行研究所需的工具。而且,了解計算機工作原理的學生能夠更好地适應各種要求。例如,了解了cache會使程式員借助優化資料通路方式的技術編寫出速度更快的程式。

計算機是計算機科學的心髒——沒有計算機,計算機科學隻能作為理論數學的一個分支。學生不應僅僅将計算機視作一個被施了魔法的能夠執行程式的黑盒子。就像哲學一樣,為什麼說計算機體系結構仍然與計算機科學專業的所有學生和從業者有關,也是有具體原因的。

了解計算機體系結構對從事計算機領域的工作具有重要幫助。假設一名畢業生進入工業界并被要求為某大型機構選擇一台性能價格比最高的計算機。了解計算機的各個組成部分對總體性能的影響就非常重要。例如,花30美元将cache容量翻倍,或者花60美元将主頻提高到200m,哪個對性能的影響大呢?

計算機體系結構不能完全與軟體分離。使用處理器最多的并不是pc機或工作站,而是mp3播放器和手機那樣的嵌入式應用。多處理器和實時系統的設計者必須了解商用處理器的基本體系結構概念和實作限制。一些開發汽車電子點火系統的人員可能會使用c語言來程式設計,但他們也許需要使用一個能夠顯示引擎中發生的事件與機器代碼執行之間關系的邏輯分析器。

學習計算機體系結構的另外一個原因在于它支撐了計算機科學課程體系中其他領域的許多重要觀點。對計算機體系結構的了解會幫助學生通過一些反複出現的主題了解計算機科學其他領域中的概念。例如,學習計算機為進階語言提供的體系結構支援可以鞏固對程式設計語言和編譯器等課程的學習。第4章我們将介紹底層體系結構對c等語言的棧幀和參數傳遞的支援。同樣,學習計算機總線設計也會涉及諸如公平vs優先級等重要内容,這些也會出現在作業系統課程中。

《計算機組成原理》----1.2 體系結構群組成
《計算機組成原理》----1.2 體系結構群組成

繼續閱讀