第一章 计算机系统体系结构
1.1 什么是計算機體系結構
本章的第一個概念是計算機系統(computer system)。
計算機系統包括讀取并執行程序的?中央處理單元(CPU,
保存程序和數據的存儲器以及將芯片轉換為實用系統的?其他子系統。
這些子系統會使CPU與顯示器、打印機、Internet等外部設備之間的通信變得更加容易。
- cpu(處理器): 計算機實際執行程序的部分
- 微處理器: 在單個硅片上實現的CPU
- 微機: 圍繞微處理器構建的計算機
計算機的性能既取決于CPU;也取決于其他子系統。如果不能高效進行數據傳輸,
僅僅提高CPU的性能是毫無意義的。
Figure :
- 信息(程序和數據): 保存在存儲器中;計算機會使用不同類型的存儲器,達到不同的目的。
- 如果不能叫信息保存在正確的存儲器,那么CPU的速度再快也將毫無意義
- Cache: 保存常用的數據是?高速專用?的存儲器。
- 主存: 存放大量的工作數據,斷電消失
- 輔存: 指磁盤等,用于存儲海量的數據。永久存儲
- 組成計算機的各個子系統通過?總線?連接在一起,
數據通過總線從計算機中的一個位置傳遞到另一個位置。
什么是計算機
Figure :
- 輸入: 指用戶交給計算機的信息
- 輸出: 指計算機返回給用戶的信息
可編程計算機接收兩種類型的輸入: 它將要處理的?數據,
以及準確描述要如何處理輸入數據的程序。
程序?不過是計算機所執行的完成給定任務的?操作序列。
Figure :
- CPU 讀程序并完成程序指定的操作。內部使用寄存器來保存數據
- 存儲器系統保存兩類信息:程序,程序處理或產生的數據
計算機從存儲器中讀出指令并執行這些指令(即完成或執行指令定義的動作)。
執行指令時,可能要從存儲器中讀出數據,對數據進行操作,將數據寫回存儲器。
寄存器是CPU內部用來存放數據的存儲單元。時鐘提供了脈沖流,
所有內部操作都在?時鐘脈沖?的觸發下進行。時鐘頻率是決定計算機速度的一個因素
程序執行過程
Figure :
CPU先讀取一條指令;在CPU分析或解碼指令;從存儲器中讀出這條指令所需的所有數據。
###計算機指令
盡管計算機能夠執行上百種不同指令,但下面的6條?基本指令?可以將所有計算機指令進行分類:
- Mov A, B: 將B的值復制到A
- LOAD A, B: 將存儲單元B的值復制到寄存器A中
- STORE A, B: 將寄存器B的值復制到存儲單元A中
- ADD A, B: A與B相加,結果保存到A中
- TEST A: 測試A的值是否為o
- BEQ Z: 若最后一次測試結果為TRUE,執行地址Z處的代碼,否則繼續執行
1.2 體系結構和組成
體系結構: 描述了一些與計算機組成方式有關的內容;因為不同的用戶會從完全不同的角度看待計算機。
寄存器
- 典型的有8位、16位、32位和64位。
訪問速度遠遠大于存儲器
計算機體系結構通常被認為是程序員視角中的計算機
- 程序員看到的是計算機的抽象視圖;計算機的實際硬件和實現都被隱藏起來了
- 這個抽象視圖現在通常被稱作?指令集體系結構(ISA)
計算機?組成表示其體系結構的具體實現
機器碼 匯編語言 高級語言
計算機上執行的代碼表示為二進制1和0組成的串,被稱作機器碼(machine code)。
每種計算機都只能執行一種特定的機器碼。
人類可讀的機器碼(例如 ADD R0 ,Time)叫作匯編語言。
能夠在類型完全不同的計算機上運行,與底層計算機體系結構幾乎沒有關系的代碼叫作高級語言
(比如C或Java)。在執行之前,高級語言程序必須首先被編譯為計算機的本地機器碼。
體系結構與組成是不能完全分離的。例如;微處理器內的32位寄存器可以按照
與16位計算機相同的方式實現,如使用16位數據總線,以16位為單位傳輸數據,
功能單元也是16位的。如果程序員指示計算機將寄存器A中的32位數據復制到寄存器B中,
他將要執行一個32位操作,但16位計算機將執行兩個16位操作,
這對程序員來說是完全不可見的。
按照這個例子,我們可以說一臺計算機的體系結構是32位的,但它的組成卻是16位的。
指令集體系結構包括: 數據類型(每個字的位數以及各個位的含義),
用來保存臨時結果的寄存器,指令的類型和格式,以及尋址方式
(表示數據在存儲器中存放位置的方法)。
不同層次的程序員看到的計算機是不一樣的。匯編語言程序員看到的計算機與C或Java
等高級語言程序員看到的有很大的區別。
即使都是高級語言程序員,C程序員所看到的也與Prolog或LISP程序員看到的有很大的不同。
微代碼(Microcode)與微處理器無關。微代碼定義了一組基本操作(微指令),
通過執行這些操作可以解釋執行機器碼。ADD P,Q,R是一條典型的機器指令,
而微指令可能像“將數據從寄存器X移到總線Y上”那么簡單。
如何定義微指令是芯片設計者的職責。
- “組成”一詞也會被用于描述完整的計算機,包括它的CPU、存儲器、
總線以及輸入/輸出機制。
1.2.1 計算機系統和技術
Figure :
- 技術: 說明了計算機組件的工藝的重要性(例如,芯片制造技術決定了芯片的速度和功耗)。
- 計算機速度是設計計算機首要考慮的問題。
- 摩爾定律: 芯片的集成度每18個月翻一番。
- 應用: 表示計算機的最終應用。一些計算機被用于汽車的嵌入式控制系統,一些被用于游戲機,還有一些用于家庭或辦公室。
- 工具: 一些計算機之外的因素也會影響計算機設計
最先進的計算機使用了最新的制造技術。
Figure :
包括那些用于制造處理器和主存的半導體技術; 制造硬盤的磁技術;
用于CD-ROM、DVD和藍光光碟的光技術; 以及網絡連接技術。
都會影響計算機系統的設計。
1.2.2 計算機體系結構在計算機科學中的地位
時鐘
時鐘是用于生成?連續?的?間隔固定?的電脈沖流。
之所以被稱作時鐘,是因為可用這些電脈沖來計時或確定計算機內所有事件的順序
時鐘可用它的?重復速率?或?頻率?來定義。
時鐘也可以用?時鐘脈沖的寬度?或?持續時間?來定義,即頻率的倒數
事件由時鐘信號觸發的數字電路被稱作同步的,因為它們由時鐘信號來同步。
1.3 計算機發展
計算機的發展歷史豐富而復雜,遠比許多人想象得久遠。
1.3.1 機械計算機
人類是會計算的生物。
穴居人發明數學也許不是為了在濕冷的天氣里玩數獨游戲,而是為了丈量土地、建造房屋和報稅。
羅馬人將鵝卵石放在小托盤上表示數字。后來,他們沿著線滑動鵝卵石輔助進行加法或減法,從而完成計算。
中亞的一些商店,那里的人們用算盤快速地進行計算。
- 1642年,法國數學家布萊士·帕斯卡(Blaise Pascal)設計了一個原始的機械加減法計算裝置,
能夠借助發條完成加減法。 - 1694年,德國數學家弗里德·威廉·萊布尼茨Gottfried wilhelm Leibnite)制作了一臺
復雜的機械計算器,能夠完成加減乘除運算。
這些設備都不能稱作現代意義上的計算機,因為它們都是不可編程的。
可編程這個概念產生于?工業革命?時期,出于工業化控制的需要。
- 1801年,人們發明了?提花織機,能夠自動地將預先設計好的圖案織在布上
提花織機使用?穿孔木制卡片?控制織在紡織品上的圖案
卡片上的一個位置上有沒有洞決定水平方向的線是在垂直方向的線之前還是之后。
每個打了孔的卡片就是一個程序,因為每個孔的圖案指定了一個唯一的操作序列。 - 1882年,查爾斯·巴貝奇(Charles Babbage)在英格蘭設計了一臺叫作?差分機
( difference engine)的計算裝置,能夠自動地計算構造數學表所需的?多項式?的值。
巴貝奇沒有完成他的差分機,1855年 Per Georg Scheutz 在瑞典制造出差分機。
1.3.2 機電式計算機
機電( electromechanical)指那些有?活動件?但卻?由電控制?的零件。
- 1867年發明的?打字機?和 1879年發明的?穿孔制表機(穿孔卡片輸入機)
都促進了機電式計算機的發展。機電式計算機是連接機械時代與以真空管、晶體管和集成電路
為代表的電子時代的紐帶。 - 20世紀40年代康拉德.楚澤在德國制造出自己設計的計算機,在第二次世界大戰期間該計算機用來設計飛機。
- 楚澤的計算機是第一臺可編程計算機;而同時代的其他機器都不是軟件可編程的,只能算作是自動計算器。
楚澤還設計了世界上第一種程序設計語言,叫作 Plankalküil,
1.3.3 早期電子計算機
- 1937年~1942年,約翰·文森特·阿塔那索夫(John V.Atanasoff)制造出第一臺電子計算機
(ABC),用于解線性方程。 - 1944年制造的巨像計算機(Colossus)是另一臺早期計算機,它安放于布萊切利園,
二戰期間用來破譯德軍的恩格瑪密文。巨像計算機使用真空管,是一臺真正的電子計算機,
但它不能存儲程序,因而只能完成專門的任務。 - 1945年,J.莫奇利(J.Mauchly)和J.埃克特( J.Eckert)設計了ENIAC,
一臺能夠處理10位10進制數的真空管計算機,但它不能像今天我們編寫程序那樣編程。 - 埃克特和莫奇利還設計了一臺更先進的計算機——EDVAC,具有存儲程序的特征。
- 在英格蘭,曼徹斯特大學的研究人員于1948年設計出世界上第一臺可操作的存儲程序計算機
——曼徹斯特寶寶。 - AT&T貝爾實驗室在1948年發明了晶體管,之后發展出了半導體,
它在功能上與真空管等效,但體積更小,功耗更低。晶體管的發明,
使將多個晶體管放在一塊硅片上構成一個完整的電路成為可能。 - 到20世紀60年代中期,IBM設計出System/360體系結構,
在從商用的小型機到科學計算的大型機的產品線上實現了兼容和互操作性。
正是IBM System/360導致了計算機體系結構這一概念的出現(即指令集體系結構)。
1.3.4 微機和PC革命
到20世紀70年代,Intel公司和摩托羅拉公司都發布了8位微處理器。
第一臺可用的微機Altair 8800是由MITS公司于1975年推向市場的。
基于Intel的技術和微軟的操作系統軟件,IBM 在20世紀80年代推出了個人電腦(PC機)。
由于它的開放式體系結構,PC機在第三方軟、硬件開發者中流行起來。
Intel將8080微處理器擴展為包括16位80286(1982年)和32位80386(1985年),
以及含有64位數據總線的Pentium(1990年)。
1.3.5 摩爾定律和進步的歷程
“摩爾定律”一詞是卡沃·米德(Carver Mead)于1975年根據戈登·摩爾(GordonMoore)
所?觀察?到集成電路的集成度?每兩年?翻一番的現象而創造的。
摩爾定律當然是一個?經驗性?的觀測結果,但在過去的40年里,
技術的進步的確導致芯片內晶體管數量呈指數式增長。這一增長還伴隨著集成電路速度的相應提升。
集成電路內晶體管數量的增加還導致體系結構復雜度的急劇增加以及一些極其聰明的性能提升方法的出現。
RISC(精簡指令集)與CISC(復雜指令集)
1.3.6 存儲技術發展
1.3.7 普適計算
計算是無所不在的。
1.3.8 多媒體計算機
多媒體處理能力是現代計算機(包括普適的和傳統的個人計算機)的一個重要特征。
多媒體處理(處理和存儲音頻/視頻數據)需要很大的存儲容量以及完成大量簡單
重復操作的實時處理聲音樣本和圖像像素的能力。
1.4 存儲程序計算機
1.4.1 問題
Figure :
求最大游程,即?同一個數字連續出現的最大次數
1.4.2 解決問題
如果我們從數串的左邊開始逐個檢查數字,在任何一個位置,我們都會得到以下兩個結果之一:
- 要么這個數與前一個相同,序列還在增長;
- 要么這個數與上一個不同,前一個序列結束,一個新的序列開始。
Figure :
1.4.3 構造一個算法
算法的一些符號
算法
1.4.4 計算機需要通過什么來解決問題
盡管這個問題相對簡單,它卻含有解決任一問題所需的全部元素
- 有將信息從一個位置傳遞到另一個的賦值操作
- 有加、減等算術運算
- 還有根據計算結果(如比較)從兩個候選動作中選擇一個的操作。
Figure :
1.4.5 存儲器
下圖描述了程序怎樣找出保存在一個?假想存儲器?中的數串的最大序列長度。
必須強調的是,這個程序是概念上的而不是實際的,因為真正的計算機指令比其更加基礎。
這幅圖叫作?存儲器映射,它展示了信息在存儲器中的存放位置。
它是存儲器的一幅快照,因為它表示存儲器在某個特定時刻的狀態。
存儲器映射也包含程序使用的變量和數字串。
存儲程序計算機會將指令、變量和常量全部保存在同一個存儲器內。
Figure :
寄存器傳輸語言(RTL): 描述性的語言,不能被執行
- 使用文字描述計算機的操作很不方便。使用RTL可以更加容易地定義計算機內發生的操作。
存儲系統
- 描述了存儲系統的組成。處理器將一個放在地址總線上的地址以及一個用于選擇讀操作或寫操作
(它們有時也被稱作讀或寫周期)的控制信號發送給存儲器。 - 在讀周期中,存儲器將數據放在數據總線上供CPU讀取。
- 在寫周期中,放在數據總線上的數據被寫入存儲器。
- 信息進入或離開存儲器的位置(或計算機系統的其他功能部分)叫作端口。
- 盡管上圖存儲器是簡化后的版本,它卻準確地描述了將數據和指令連續存放的計算機存儲器。
一臺真正的計算機會使用存儲系統層次(每個層次都有可能采用不同的技術來實現)。
這些層次包括保存頻繁被訪問數據的速度非常快的Cache、主存,以及速度非常慢的輔存
在這一層次中大量數據會一直保存在磁盤、光盤或DVD中,直到使用時才會被調入主存。
1.5 存儲程序概念
存儲程序計算機的基本操作
執行指令
在這臺機器上執行一條指令需要至少兩次訪存。
- 第一次訪存是?讀取指令。
- 第二次訪存?要么從存儲器中讀出指令需要的數據,
要么將它之前的指令產生的或修改過的數據寫回存儲器。
三地址指令
存儲程序計算機的一種直觀合理的指令格式可以用下面的形式表示
operation Address1 ,Address2 ,Address3
- operation表示要執行的指令的動作
- Address_i分別是操作數在存儲器中的位置。在這條一般性的指令中,操作數為數據的地址,而不是數據本身。
- RTL: [Address1] <-- [Address2] Operation [Address3]
Figure :
指令的4個字段、cpu、存儲器和指令執行方式之間關系: 解釋執行指令
Figure :
兩地址指令
指令格式如下
Operation Address1, Address2
- Address2為源操作數,Address1既是源操作數也是目的操作數。
- RTL語言: [P]<--[P] Operation [Q]
實際的計算機中,一般都?不允許同一條指令中使用兩個存儲地址;
大多數計算機規定一個地址是存儲器地址,另一個地址是寄存器。
單地址指令
指令格式如下
operation address
也就是說,第二個操作數來自CPU內一個叫作?累加器(accumulator)的寄存器。
操作結果將一直保存在寄存器中,直到另一條指令將它送入存儲器。
Figure :
計算機分類
并將結果保存在存儲器中
其中一個位于存儲器中,另一個位于寄存器中(結果要么被寫回存儲器,要么被寫回寄存器)。
- 使用LOAD指令將數據讀入寄存器
- 使用STORE指令將數據從寄存器送回存儲器。
1.6 計算機系統概覽
CPU變成計算機系統的存儲系統和總線系統。存儲器被視作一個巨大的通過?地址訪問的數組。
例如,如果用數組M表示存儲器,那么它的第i個元素可以表示為M[i];
存儲器非常重要,因為它的大小(即存儲容量)決定了程序能夠存儲的數據量,
它的速度(訪問時間)決定了程序的數據處理速率。
程序體積不斷增加,程序所使用的數據總量增加得更快。
計算機技術正在飛速進步,而存儲技術從某些方面來說卻嚴重地滯后了。
處理器速度的增加速率遠遠超過了存儲器的。
1.6.1 存儲層次
由于CPU與存儲器的性能之間的差距不斷加大,設計者們試圖通過在使用數據之前將它們
從存儲器中取出來消除相對慢速的存儲器的影響,以?隱藏等待時間(也叫作?延遲)
上圖給出了經典的存儲層次圖,展示了計算機中存儲部件的類型、速度(訪問時間)
以及它們在PC機中的典型容量。
- 與計算機的地址總線和數據總線相連,監聽著CPU與存儲器之間的事務。
只要Cache注意到CPU發出的地址與它保存的某個數據元素的地址相同,
它就會把這個數據發送給CPU,而不會去主存訪問數據- 一級緩存: 它是CPU的一部分,并希望92%的信息都會在這里找到
- 二級緩存: 容量更大但速度更慢;找到數據的概率為98%
- 三級緩存:
- 易失性半導體存儲器構成的立即存取存儲器;斷電數據丟失
1.6.2 總線
總線?將計算機的?兩個或多個?功能單元連接在一起并允許它們相互交換數據;
總線還將計算機與外設連接在一起
沒有總線的情況
- 結點之間的互連復雜并且凌亂。
- 新增結點麻煩,需要與所有結點建立聯系
有公共總線情況
- 每次只有唯一一個設備能夠與其他設備通信(只有一條數據通路)
- 當有多個設備同時請求使用總線,需要一個仲裁器來決定那個設備占用總線
總線相關術語
多總線系統: 包括片內總線、功能單元間(如CPU和存儲器間)的總線以及總線間的總線。
Figure :
總結
以上是生活随笔為你收集整理的第一章 计算机系统体系结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端研习录(20)——JavaScrip
- 下一篇: pmc订单表格_PMC部门需掌控各部门表