天天看點

《計算機組成原理》----1.6 計算機系統概覽

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

為了學習後面的章節,本節簡要介紹把cpu變成計算機系統的存儲系統和總線系統。計算機科學家将存儲器視作一個巨大的通過位址通路的數組。例如,如果用數組m表示存儲器,那麼它的第i個元素可以表示為m[i]或mi。存儲器非常重要,因為它的大小(即存儲容量)決定了程式能夠存儲的資料量,它的速度(通路時間)決定了程式的資料處理速率。在過去的50年裡,程式體積不斷增加,程式所使用的資料總量增加得更快。20世紀70年代的飛行模拟器就是一個很好的例子,那時它還是非常簡單、僅關注基本的飛行動作(直線和水準飛行、爬升、下降和轉向)。現代的飛行模拟器不僅可以完成這些基本操作,還可以生成駕駛艙和外部世界的複雜視圖。而且,它還可以提供一個覆寫大部分地球表面的詳細地圖。這樣一個程式的體積也從16kb增加到幾gb。

計算機技術正在飛速進步,而存儲技術從某些方面來說卻嚴重地滞後了。例如,處理器速度的增加速率遠遠超過了存儲器的。後面的章節将介紹如何隐藏慢速存儲器帶來的問題。人們提出“存儲牆”一詞,以說明存儲性能最終會制約處理器的性能。

存儲系統的制造技術種類繁多,在計算機中随處可見。最快的存儲器能夠在10-9秒内完成資料通路,最慢的則會超過100秒,性能差距為1:1011。為了便于了解,大家可以參考下面的資料:我的步行速度與飛彈的速度之比約為1:104。由于cpu與存儲器的性能之間的差距不斷加大,設計者們試圖通過在使用資料之前将它們從存儲器中取出來消除相對慢速的存儲器的影響,以隐藏等待時間(也叫作延遲)。圖1-16給出了經典的存儲層次圖,展示了計算機中存儲部件的類型、速度(通路時間)以及它們在pc機中的典型容量。對于每種部件,還列出了速度比和容量比。寄存器存放處理器的工作資料,cache是緩存常用資料的快速存儲器,dram存放工作資料塊,硬碟則儲存程式和資料。請注意,硬碟的容量是寄存器的4000萬倍,但其速度卻比寄存器慢2000萬倍。在讨論存儲器之前,我們會簡要介紹cache,因為它對決定計算機的性能具有非常關鍵的作用。

《計算機組成原理》----1.6 計算機系統概覽

經常被用到的資料儲存在cache中,cache的通路時間比主存短得多。cache對計算機總體性能的影響也許與處理器體系結構的影響相同。盡管由于它的實作細節,cache是一個非常複雜的話題,但它的基本操作卻非常簡單。cache儲存着主存中經常使用的資料的副本,就像筆記本和手機中儲存着常用的使用者名和位址一樣,以便我們能友善地使用。cache系統與計算機的位址總線和資料總線相連,監聽着cpu與存儲器之間的事務。

隻要cache注意到cpu發出的位址與它儲存的某個資料元素的位址相同,它就會喊道:“我有這個資料!”之後把這個資料發送給cpu,并告訴存儲器不要為此次通路而煩惱了。在日常生活中,如果你要給一個朋友打電話,你也會首先檢視你的位址簿。如果他的名字不在位址簿中,你必須在一本更大的電話目錄中查找。一旦找到了朋友的号碼,你就會将它記在位址簿中,當你下次要給他打電話時就可以節約時間了。

将cache與位址簿類比是比較準确的。位址簿非常有用,因為你經常要打電話的人數僅僅是那些有電話的人中的很小一個子集,并且你會發現你90%的電話都是打給位址簿上的人的。另一個很好的類比是當你購買了一本新的位址簿時,上面沒有任何名字,當你第一次給某人打電話時,你必須把他的名字記到位址簿上。位址簿說明了cache設計的另一個問題。假設你将所有名字以“s”開頭的朋友記在“s頁”上。現在,如果你碰到了某個名字也是以“s”開頭的人,你就會面臨一個問題。你依次檢視那些以“s”開頭的姓名并且說,“這家夥今年沒有給我寄生日賀卡;他已經成為曆史了。”按照cache的術語,當cache中填滿資料元素時,你必須删去某個舊的資料,以便騰出空間容納新的資料。

人類世界與cache還有另外一種類比。你也許會随身攜帶一本記載了你最重要朋友的位址簿,而将另外一本放在辦公桌上。當你想給某個朋友打電話時,你首先會查找你個人位址簿中的姓名。如果那裡沒有,你會去試着查找桌子上那本。多個位址簿類似于多級cache。處理器會通路快速的l1(一級)cache,它是cpu的一部分,并希望92%的資訊都會在那裡找到。如果資料不在l1 cache中,則會去通路容量更大但速度更慢的l2(二級)cache。也許在那裡找到資料的機率為98%。如果這次通路也失敗了,計算機也許還會去另外一個cache中查找——三級cache。如果那裡也沒有,就隻能從主存中取出這個資料了。

cache與位址簿之間也還有另外一種類比。假設某人有3個位址簿。當他結識了一位新朋友後,他會将名字寫入3本位址簿中。如果這個朋友搬家了,他可能隻更新了一個位址簿而忘記去更新另外兩個。當他從辦公室給這位朋友電話時,他可能會撥打舊的号碼,因為他恰好使用了未更新的位址簿。如何保持cache存儲器和磁盤中的資料一緻,是計算機設計者所關注的主要問題。

我們還會讨論存放正在執行的程式的主存。它是由一種叫作動态随機通路存儲器(dynamic random access memory,dram)的易失性半導體存儲器構成的立即存取存儲器。這種存儲器之是以是易失性的,是因為掉電時其中的資料都會丢失,是以不能用它長時間地儲存程式。對于立即存取存儲器,我們會讨論一些新興的存儲技術,特别是那種掉電了資料依然還在的非易失性存儲器。這種存儲器對于mp3播放器和數位相機之類的便攜式應用非常重要。

總線将計算機的兩個或多個功能單元連接配接在一起并允許它們互相交換資料(例如cpu與顯示卡之間的總線)。總線還将計算機與外設連接配接在一起(例如将列印機接入計算機的usb總線)。總線是計算機系統非常重要的組成部分,是以《計算機存儲與外設》第4章的大部分内容都用來讨論計算機總線。本節将簡要介紹總線并強調若幹相關概念。

圖1-17描述了一個沒有總線的假想系統的結構。假設其中帶陰影的圓圈代表那些必須與其他單元通信的處理單元。在這個例子裡,一些單元隻能與另外一個單元通信,而其他單元必須與另外幾個單元通信。正如讀者所看到的那樣,結點之間的互連複雜并且淩亂。而且,若要向該系統中增加一個新的單元,必須在這個新單元與它所連接配接的每一個單元之間增加一條新的連線。

圖1-18展示了通過公共總線将所有單元連接配接在一起的好處。此時隻有一條高速資料通路,每個單元通過一個接口與這條通路相連。

《計算機組成原理》----1.6 計算機系統概覽

圖1-18所示互連結構的問題在于,每次隻有唯一一個裝置能夠與其他裝置通信,因為這裡隻有一條資訊通路。如果兩個裝置同時請求使用總線,它們不得不去競争總線的控制權。我們用術語仲裁來描述這種兩個或多個裝置競争同一資源(本例中是總線)的過程。一些系統使用一個名為仲裁器的專用部件來決定允許哪個裝置繼續工作,而其他競争者隻能等待輪到自己。

《計算機組成原理》----1.6 計算機系統概覽
《計算機組成原理》----1.6 計算機系統概覽

現代計算機中有多條總線,包括片内總線、功能單元間(如cpu和存儲器間)的總線以及總線間的總線。

《計算機組成原理》----1.6 計算機系統概覽

圖1-19描述了一個多總線系統。處理器①通過總線a進行通信。第二條總線b,通過一個總線接口部件連接配接到總線a上。為什麼要使用兩條總線?首先,多條總線允許并發操作。例如,兩個裝置可以通過總線a互相通信,與此同時另一對裝置可以通過總線b互相通信。一個更重要的原因在于這些總線可能具有完全不同的特點和操作速度。

一台計算機可能擁有完整的總線層次結構——每條總線都面向其預期應用進行了優化。計算機中速度最快的總線是那些與高速存儲或視訊裝置通信的。這些總線的設計和結構必須面向速度專門優化。另一些總線則擔任不同的角色(如将計算機與大量外設連在一起)。usb和firewire總線都是非常典型的、專門為了某些功能而設計的低開銷總線的執行個體。這些總線的通路長度比存儲總線長得多。本書最後一部分将非常詳細地讨論總線及其體系結構。

标準和協定是本書中兩個經常讨論的主題(特别是當讨論存儲接口、總線和i/o技術時)。标準是一種約定好的設計系統、定義系統或對其他任何方面進行分類的方式。标準在日常生活中非常重要。例如,為了允許人們将電子裝置從一個地方移到第一個地方,電源插座和插頭必須符合約定的标準。即便是我們通常不考慮的一些因素(比如機場跑道和滑行道上的燈和标記)也是标準化的,這樣隻要飛行員知道兩個城市标記的含義完全相同,他就可以離開北京抵達波士頓。計算标準指明了插頭和插座(比如usb)的實體尺寸、電壓和電路表示信号,以及資料交換過程中的信号序列。

協定與标準類似,但它覆寫的範圍較窄。協定決定了雙方通信時各事件的發生順序。例如,當計算機将資料發送給存儲器時,寫協定定義了信号序列(位址、寫指令、要儲存的資料)以及信号的最長和最短持續時間。

下一章将介紹數字是如何在計算機中表示的,以及适用于這些數字的操作類型。我們還會介紹基本電路元素、門和觸發器,并說明如何利用它們搭建計算機的基本電路。實際上,如果将本章中對計算機的介紹與下一章中對簡單電路的介紹合并在一起,讀者将會了解計算機是如何工作的。盡管今天的數字計算機極其複雜,它們(原則上)仍然是非常簡單的裝置。其複雜性在于那些精細的細節以及試圖用來加速計算機操作的手段(比如在完成測試之前對其結果進行預測)。