本節書摘來自華章出版社《計算機組成原理》一書中的第1章,第1.7節, 作 者 computer organization and architecture: themes and variations[英]艾倫·克萊門茨(alan clements) 著,沈 立 王蘇峰 肖曉強 譯, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
計算機系統體系結構是一個不斷發展的領域,但它各個方面的發展是不均衡的。例如,在《計算機存儲與外設》第3章介紹磁盤時我們将看到,盡管這些年來磁盤容量得到了巨大的增長,但磁盤速度或磁盤通路時間卻幾乎維持不變。不過一種叫作固态盤的新技術改變了這種局面,磁盤速度也開始提高。是以,我們将更加關注計算機系統的某些方面而不是全部。
性能和能耗是今天人們尤其感興趣的兩個方面。幾十年前計算機的設計目标就是獲得計算能力——在微處理器發展的早期,有計算能力總比什麼都沒有要好。今天,微處理器已經非常成熟,而且需要比以往更高的性能,因為它所承擔的任務越來越有挑戰性,比如高分辨率和高性能遊戲等應用領域。是以本書将重點關注性能,比如怎樣測量性能以及怎樣創造性能。
我們還生活在一個普适計算的世界中。計算機無處不在——它在超級計算實驗室、大學、工廠、家庭辦公室、幾乎所有的家用電器、電視和顯示系統、音樂和娛樂系統,以及手機裡。這種普适計算會帶來兩個需求。第一個是可連接配接性。如果要在一些裝置之間共享資料,那麼必須能夠将它們連在一起。例如,人們經常通過無線網絡将數位相機、mp3播放器、個人電腦和電視機連接配接起來。普适計算帶來的另一個需求是由為mp3播放器那樣的微小裝置供電(即能源)所引起的。人們希望能将它們裝在口袋裡,用它們看視訊,還希望它們用一小塊電池就能續航8小時。有時人們對計算機發展的期望遠遠超過計算機性能的提升。減少能耗的需求使設計者不得不尋找解決能效更高的計算問題解決方法。讀者在最後一章将會看到,能耗的制約是如何導緻擁有多個片上處理器的微處理器(稱作多核處理器)的出現和發展的。
最後,計算機系統體系結構研究與發展目前所關注的一些焦點問題也是由計算能力飛速增長所引發的一些制約而引起的。在存儲牆一詞中我們已經使用了牆這個術語,它表示處理器的速度增長遠遠快于存儲器,這使得處理器不得不停下來等待存儲器取出資料。本書中有好幾處會将如何處理存儲牆所帶來的問題作為主要議題。另外一堵牆則是由功耗限制引起的(無法冷卻現代晶片)。
本書着重關注計算機系統體系結構,即一個完整計算機系統從中央處理單元到磁盤和外設的全部内部操作。
為了更好地了解計算時發生了什麼,必須弄清楚計算機體系結構與計算機組成之間的差別。計算機體系結構關注彙編語言程式員層次的計算機操作,并提供了一個理想的、抽象的計算機視圖。計算機組成則關注如何用真正的門和電路實作體系結構。盡管原則上體系結構與組成無關,它們卻的确是互相影響的。
本章介紹了存儲程式計算機,并描述了它是如何從存儲器中讀出指令,一條一條地執行這些指令,并處理與指令存放在同一存儲器中的資料的。本章解決了一個簡單的問題,并說明計算機僅需要一個類型相對較少的操作集合。
存儲程式計算機是一個小而簡單的裝置。它從儲存設備中讀出1/0二進制串,并執行這些1和0所定義的操作。計算機所完成的操作一般包括一個動作(如加或減)以及參加計算的資料的位址或位置。讀者還看到了計算機必須包括某些提供條件操作的機制,這是一種使用資料操作結果決定接下來應該執行兩個動作序列中哪一個的手段。
本章還包括一段簡單的計算機發展曆史。人們從來沒有發明過現在被稱為計算機的裝置。計算機來自一系列發展,每次新的發展都采用過去提出的思想,并采用更加現代的技術加以實作。20世紀40年代的早期計算機并不符合現在的标準,因為它們不能運作不同的程式,或注定隻能一遍遍地完成同樣的操作序列(即它們沒有提供必要的條件操作以允許程式響應輸入)。
到1950年,計算機與今天的計算機已經非常相似了——至少在原理上。所變化的僅僅是計算機在技術、内部組成和外設上的發展方式。
1.1
專用計算機與通用計算機有什麼差別?
飛機的自動駕駛儀是專用計算機還是通用計算機的執行個體?
1.2 為什麼我們說計算機内用來表示指令的1/0二進制序列并沒有内在意義?這句話隐含的意思是什麼?
1.3 為什麼計算機的性能非常依賴如半導體、磁、光、化學等一系列技術?
1.4 修改本章所用的算法,使之能夠找到最長的非連續字元序列的位置。
1.5 我曾經批評過“查爾斯·巴貝奇是計算機發明者”這一說法。我批評這一說法的理由是巴貝奇設計的計算機完全是機械的(輪子、齒輪和機械關聯),而一台真正的計算機應該是電子的。我的批評對嗎?
1.6 以下rtl指令序列的結果是什麼?描述每一條rtl指令的功能,并說出這個指令序列的作用。注意,[x]表示位址為x的存儲單元的内容。
1.7 rtl語言、機器語言、彙編語言、進階語言和僞碼的差別是什麼?
1.8 什麼是存儲程式計算機?
1.9 我堅持認為條件操作是計算機之是以為計算機的關鍵要素。在機器一級,條件操作是通過諸如beq xyz(為0則跳轉到指令xyz)那樣的指令實作的,而在進階語言一級,它是通過if x=y then do this else do that之類的語句實作的。為什麼這種條件操作是計算所必需的?
1.10 單位址、雙位址和三位址計算機體系結構各有什麼優點?
1.11
a.計算機體系結構與它的組成之間有什麼差別?
b.除了計算機外,你能想出還有哪些系統既有體系結構也有組成?
1.12 外體系結構與内體系結構有何差別?
1.13 這些年來,計算機的發展是在計算機體系結構方面更多一些,還是在計算機組成方面更多一些?
1.14 人類的記憶與計算機的存儲器之間有何不同?
1.15 什麼是馮·諾依曼瓶頸?
1.16 假設intel沒有開發出第一個微處理器,微處理器是否仍然會不可避免地出現?
1.17 盡可能地列舉出你能想到的制造計算機的所有使能技術。
1.18 什麼是語義鴻溝?它在計算機體系結構中的重要性展現在哪裡?要回答這一問題,你需要在internet上或在圖書館裡查閱相關資料。
1.19 假設巴貝奇成功地制造出了一台每秒完成一個操作的通用機械式計算機。你認為這台計算機會對巴貝奇所處的維多利亞時代社會産生怎樣的影響(如果的确有影響的話)?
1.20 使用有限差分方法計算172的值。
1.21 擴充下表的有線差分方法,計算113和123的值。

1.22 若你決定試着将計算機變得更加“人性”并引入了“随機元素”。你應該如何去做?
1.23 計算機總是盲目遵循邏輯規則——執行同樣的程式總會得到相同的答案。這就是計算機教材上所說的。但這是真的嗎?我的計算機在不同的場合就會有不同的行為。為什麼你會認為這是有可
能的?
1.24 x的值為7。一些計算機語言(或符号)将x+1解釋為8,而另一些則将它解釋為y。為什麼?
1.25 進行必要的資料收集,并撰寫一篇有關計算機存儲系統發展的論文(例如crt記憶體,延遲線存儲器,鐵氧體磁芯存儲器,等等)。
1.26 為什麼總線對計算機非常重要?
1.27 我們經常會聽到一些有關cpu的大小、功耗、速度的進步推動了計算機革命的争論。計算機系統還有哪些方面推動了計算機革命?
1.28 計算機在哪些領域的應用最成功?在哪些領域的應用最不成功或甚至根本沒用?
1.29 你認為計算機發展(在計算能力以及它的能力/應用等方面)的瓶頸(限制或障礙)在哪裡?
1.30
a.摩爾定律是準則嗎?
b.為什麼你認為摩爾定律是“存在的”?到底是什麼在驅動着摩爾定律或使它成為可能?
1.31 按照現在的标準判斷,你認為所有的早期計算機中哪一台計算機才應該被稱作“第一台計算機”?