【计算机组成原理】重点总结(详版)
【計算機組成原理】復習
【考查目標】
一、 計算機系統概述
(一) 計算機發展歷程
第一臺電子計算機ENIAC(Electronic Numerical Integrator And Computer)誕生于1946年的美國賓夕法尼亞大學。ENIAC用了18000電子管、1500繼電器、重30噸、占地170m3、耗電140kw、每秒計算5000次加法。馮?諾依曼(VanNeumann)首次提出存儲程序的概念,將數據和程序一起放在存儲器中,使得編程更加方便。50多年來,雖然對馮?諾依曼機進行了很多改革,但結構變化不大,仍然稱為馮?諾依曼機。
一般把計算機的發展分為四個階段:
第一代(1946-50‘s后期):電子管計算機時代;
第二代(50‘s中期-60’s后期):晶體管計算機時代;
第三代(60‘s中期-70’s前期):集成電路計算機時代;
第四代(70‘s初-):大規模集成電路計算機時代。
(二) 計算機系統層次結構
1. 計算機硬件的基本組成
計算機硬件主要指計算機的實體部分,通常有運算器、控制器、存儲器、輸入和輸出五部分。
CPU是指將運算器和控制器集成到一個電路芯片中。
2. 計算機軟件的分類
計算機軟件按照面向對象的不同可分兩類:
系統軟件:用于管理整個計算機系統,合理分配系統資源,確保計算機正常高效地運行,這類軟件面向系統。
應用軟件:是面向用戶根據用戶的特殊要求編制的應用程序,這類軟件通常實現用戶的某類要求。
3. 計算機的工作過程
(1)計算機的工作過程就是執行指令的過程
指令由操作碼和操作數組成:
操作碼 地址碼
(2)指令的存儲
指令按照存儲器的地址順序連續的存放在存儲器中。
(3)指令的讀取
為了紀錄程序的執行過程,需要一個記錄讀取指令地址的寄存器,稱為指令地址寄存器,或者程序計數器。指令的讀取就可以根據程序計數器所指出的指令地址來決定讀取的指令,由于指令通常按照地址增加的順序存放,故此,每次讀取一條指令之后,程序計數器加一就為讀取下一條指令做好準備。
(4)執行指令的過程
在控制器的控制下,完成以下三個階段任務:
1)取指令階段
按照程序計數器取出指令,程序計數器加一
2)指令譯碼階段
分析操作碼,決定操作內容,并準備操作數
3)指令執行階段
執行操作碼所指定內容
4. 計算機性能指標
4.1 吞吐量、響應時間
(1) 吞吐量:單位時間內的數據輸出數量。
(2) 響應時間:從事件開始到事件結束的時間,也稱執行時間。
4.2 CPU時鐘周期、主頻、CPI、CPU執行時間
(1) CPU時鐘周期:機器主頻的倒數,Tc
(2)主頻:CPU工作主時鐘的頻率,機器主頻Rc
(3)CPI:執行一條指令所需要的平均時鐘周期
(4)CPU執行時間:
TCPU=In×CPI×TC
In執行程序中指令的總數
CPI執行每條指令所需的平均時鐘周期數
TC時鐘周期時間的長度
4.3 MIPS、MFLOPS
(1)MIPS:
Te:執行該程序的總時間
In:執行該程序的總指令數
Rc:時鐘周期Tc的到數
MIPS只適合評價標量機,不適合評價向量機。標量機執行一條指令,得到一個運行結果。而向量機執行一條指令,可以得到多個運算結果。
(2) MFLOPS:
MFLOPS(Million Floating Point Operations Per Second)
MFLOPS=Ifn/(Te×106)
Ifn:程序中浮點數的運算次數
MFLOPS測量單位比較適合于衡量向量機的性能。一般而言,同一程序運行在不同的計算機上時往往會執行不同數量的指令數,但所執行的浮點數個數常常是相同的。
二、 數據的表示和運算
(一) 數制與編碼
1. 進位計數制及其相互轉換
1)進位計數制
進位計數制是指按照進位制的方法表示數,不同的數制均涉及兩個基本概念:基數和權。
基數:進位計數制中所擁有數字的個數。
權:每位數字的值等于數字乘以所在位數的相關常數,這個常數就是權。
任意一個R進制數X,設整數部分為n位,小數部分為m位,則X可表示為:
X=an-1rn-1 + an-2rn-2 + ┅ + a0r0 + a-1r-1 + a-2r-2 + ┅ + a-mr-m
(X)r =
2)不同數制間的數據轉換
(1)二、八、十六進制數轉換成十進制數
利用上面講到的公式:
(N)2=∑Di?2i 、(N)8=∑Di?8i、 (N)16=∑Di?16i、進行計算。
(2)十進制數轉換成二進制數
通常要對一個數的整數部分和小數部分分別進行處理,各自得出結果后再合并。
對整數部分,一般采用除2取余數法,其規則如下:
將十進制數除以2,所得余數(0或1)即為對應二進制數最低位的值。然后對上次所得商除以2,所得余數即為二進制數次低位的值,如此進行下去,直到商等于0為止,最后得的余數是所求二進制數最高位的值。
對小數部分,一般用乘2取整數法,其規則如下:
將十進制數乘以2,所得乘積的整數部分即為對應二進制小數最高位的值,然后對所余數的小數部分部分乘以2,所得乘積的整數部分為次高位的值,如此進行下去,直到乘積的小數部分為0,或結果已滿足所需精度要求為止。
(3)二進制數、八進制數和十六進制數之間的轉換
八進制數和十六進制數是從二進制數演變而來的:
由3位二進制數組成1位八進制數;
由4位二進制數組成1位十六進制數。
對于一個兼有整數和小數部分的數以小數點為界,小數點前后的數分別分組進行處理,不足的位數用0補足。
對整數部分將0補在數的左側,對小數部分將0補在數的右側。這樣數值不會發生差錯。
2. 真值和機器數
真值:數據的數值通常以正(+)負(-)號后跟絕對值來表示,稱之為?真值?。
機器數:在計算機中正負號也需要數字化,一般用0表示正號,1表示負號。把符號數字化的數成為機器數。
3. BCD碼
在計算機中采用4位二進制碼對每個十進制數位進行編碼。4位二進制碼有16種不同的組合,從中選出10種來表示十進制數位的0~9,用0000,0001,…,1001分別表示0,1,…,9,每個數位內部滿足二進制規則,而數位之間滿足十進制規則,故稱這種編碼為?以二進制編碼的十進制(binary coded decima1,簡稱BCD)碼?。
在計算機內部實現BCD碼算術運算,要對運算結果進行修正,對加法運算的修正規則是:
如果兩個一位BCD碼相加之和小于或等于(1001)2,即(9)10,不需要修正;
如相加之和大于或等于(1010)2,或者產生進位,要進行加6修正,如果有進位,要向高位進位。
4. 字符與字符串
在計算機中要對字符進行識別和處理,必須通過編碼的方法,按照一定的規則將字符用一組二進制數編碼表示。字符的編碼方式有多種,常見的編碼有ASCII碼、EBCDIC碼等。
1)ASCII碼
ASCII碼用7位二進制表示一個字符,總共128個字符元素,包括10個十進制數字(0-9)、52個英文字母(A-Z和a-z)、34專用符號和32控制符號。
2)EBCDIC碼為Extended Binary Coded Decimal Interchange Code的簡稱,它采用8位來表示一個字符。
3)字符串的存放
向量存儲法:字符串存儲時,字符串中的所有元素在物理上是鄰接的。
串表存儲法:字符串的每個字符代碼后面設置一個鏈接字,用于指出下一個字符的存儲單元的地址。
5. 校驗碼
數據校驗碼是一種常用的帶有發現某些錯誤或自動改錯能力的數據編碼方法。其實現原理,是加進一些冗余碼,使合法數據編碼出現某些錯誤時,就成為非法編碼。
這樣,可以通過檢測編碼的合法性來達到發現錯誤的目的。合理地安排非法編碼數量和編碼規則,可以提高發現錯誤的能力,或達到自動改正錯誤的目的。
碼距: 碼距根據任意兩個合法碼之間至少有幾個二進制位不相同而確定的,僅有一位不同,稱其碼距為1。
1)奇偶校驗碼
它的實現原理,是使碼距由1增加到2。若編碼中有1位二進制數出錯了,即由1變成0,或者由0變成1。這樣出錯的編碼就成為非法編碼,就可以知道出現了錯誤。在原有的編碼之上再增加一位校驗位,原編碼n位,形成新的編碼為n+1 位。增加的方法有2種:
奇校驗:增加位的0或1要保證整個編碼中1的個數為奇數個。
偶校驗:增加位的0或1要保證整個編碼中1的個數為偶數個。
2)海明校驗碼
它的實現原理,是在數據中加入幾個校驗位,并把數據的每一個二進制位分配在幾個奇偶校驗組中。當某一位出錯就會引起有關的幾個校驗組的值發生變化,這不但可以發現出錯,還能指出是哪一位出錯,為自動糾錯提供了依據。
假設校驗位的個數為r,則它能表示2r個信息,用其中的一個信息指出?沒有錯誤?,其余2r-1個信息指出錯誤發生在哪一位。然而錯誤也可能發生在校驗位,因此只有
k=2r-1-r個信息能用于糾正被傳送數據的位數,也就是說要滿足關系:
2r>=k+r+1
3)CRC校驗碼
CRC校驗碼一般是指k位信息之后拼接r位校驗碼。關鍵問題是如何從k位信息方便地得到r位校驗碼,以如何從位k+r信息碼判斷是否出錯。
將帶編碼的k位有效信息位組表達為多項式:
M(x)=Ck-1xk-1+ Ck-2xk-2 + ┅ + Cixi + C1x + C0
式Ci中為0或1.
若將信息位左移r位,則可表示為多項式M(x).xr。這樣就可以空出r位,以便拼接r位校驗位。
CRC碼是用多項式M(x).xr除以生成多項式G(x)所得的余數作為校驗碼的。為了得到r位余數,G(x)必須是r+1位。
設所得的余數表達式為R(x),商為Q(x)。將余數拼接在信息位組左移r位空出的r位上,就構成了CRC碼,這個碼的可用多項式表達為:
M(x)·xr+R(x)=[Q(x)·G(x)+R(x)]+R(x)
=[Q(x)·G(x)]+[R(x)+R(x)]
=Q(x)·G(x)
因此,所得CRC碼可被G(x)表示的數碼除盡。
將收到的CRC碼用約定的生成多項式G(x)去除,如果無錯,余數應為0,有某一位出錯,余數不為0.
(二) 定點數的表示和運算
1. 定點數的表示
1)無符號數的表示
無符號數就是指正整數,機器字長的全部位數均用來表示數值的大小,相當于數的絕對值。
對于字長為n+1位的無符號數的表示范圍為:
0-2n+1-1
2)帶符號數的表示
帶符號數是指在計算機中將數的符號數碼化。在計算機中,一般規定二進制的最高位為符號位,最高位為??表示該數為正,為??表示該數為負。這種在機器中使用符號位也被數碼化的數稱為機器數。
根據符號位和數值位的編碼方法不同,機器數分為原碼、補碼和反碼。
(1)原碼表示法
機器數的最高位為符號位,0表示正數,1表示負數,數值跟隨其后,并以絕對值形式給出。這是與真值最接近的一種表示形式。
原碼的定義:
(2)補碼表示法
機器數的最高位為符號位,0表示正數,1表示負數,其定義如下:
(3)反碼表示法
機器數的最高位為符號,0表示正數,1表示負數。反碼的定義:
2. 定點數的運算
1)定點數的位移運算
左移,絕對值擴大;右移,絕對值縮小。
算術移位規則
符號位不變
碼制 添補代碼
正數 0
負數 原 0
補 右移添0
左移添1
反 1
算術移位和邏輯移位的區別:
算術移位:帶符號數移位;
邏輯移位:無符號數移位;
2)原碼定點數的加/減運算;
對原碼表示的兩個操作數進行加減運算時,計算機的實際操作是加還是減,不僅取決指令中的操作碼,還取決于兩個操作數的符號。而且運算結果的符號判斷也較復雜。
例如,加法指令指示做(+A)+(-B)由于一操作數為負,實際操作是做減法(+A)-(+B),結果符號與絕對值大的符號相同。同理,在減法指令中指示做(+A)-(-B)實際操作做加法(+A)+(+B),結果與被減數符號相同。由于原碼加減法比較繁瑣,相應地需要由復雜的硬件邏輯才能實現,因此在計算機中很少被采用。
3)補碼定點數的加/減運算;
(1) 加法
整數 [A]補 + [B]補= [A+B]補(mod 2n+1)
小數 [A]補 + [B]補= [A+B]補(mod 2)
(2) 減法
整數 [A]補 - [B]補= [A+(-B)]補=[A]補 + [-B]補(mod 2n+1)
小數 [A]補 - [B]補= [A+(-B)]補=[A]補 + [-B]補(mod 2)
無需符號判定,連同符號位一起相加,符號位產生的進位自然丟掉
4)定點數的乘/除運算
(1)一位乘法
<1>原碼定點一位乘法
兩個原碼數相乘,其乘積的符號為相乘兩數的異或值,數值兩數絕對值之積。
設 [X]原=X0 X1 X2 …Xn
[Y]原=Y0 Y1 Y2 …Yn
[X·Y]原=[X]原·[Y]原
= (X0⊕Y0)∣(X1 X2 …Xn)·(Y1 Y2 …Yn)
符號∣表示把符號位和數值鄰接起來。
<2>定點補碼一位乘法
有的機器為方便加減法運算,數據以補碼形式存放。乘法直接用補碼進行,以減少轉換次數。具體規則如下:
[X·Y]補=[X]補(-Y0 + 0. Y1 Y2… Yn )
<3>布斯法
“布斯公式”:
在乘數Yn后添加Yn+1=0。按照Yn+1 ,Yn相鄰兩位的三種情況,其運算規則如下:
(1) Yn+1 ,Yn =0( Yn+1 Yn =00或11),部分積加0,右移1位;
(2) Yn+1 ,Yn =1( Yn+1 Yn =10) ,部分積加[X]補,右移1位;
(3) Yn+1 ,Yn =-1( Yn+1 Yn =01) ,部分積加[-X]補,右移1位
最后一步不移位。
(2)兩位乘法
<1>原碼兩位乘法,因此實際操作用Yi-1、Yi、C三位來控制,運算規則如下
Yi-1 Yi C 操作
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 +0, 右移2位 0→C +X, 右移2位 0→C +X, 右移2位 0→C +2X,右移2位 0→C +2X,右移2位 0→C -X, 右移2位 1→C -X, 右移2位 1→C +0, 右移2位 1→C
<2>補碼兩位乘法
根據前述的布斯算法,將兩步合并成一步,即可推導出補碼兩位乘的公式。
Yn-i-1 Yn-i Yn-i+1 [Pi+2]補
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 +0, 右移2位 +[X]補, 右移2位 +[X]補, 右移2位 +2[X]補,右移2位 -2[X]補,右移2位 -[X]補, 右移2位 -[X]補, 右移2位 +0, 右移2位
求部分積的次數和右移操作的控制問題。
當乘數由1位符號位和以n(奇數)位數據位組成時,求部分積的次數為(1+n)/2,而且最后一次的右移操作只右移一位。
若數值位本身為偶數n,可采用下述兩種方法之一:
①可在乘數的最后一位補一個0,乘數的數據位就成為奇數,而且其值不變,求部分積的次數為1+(n+l)/2,即n/2+1,最后一次右移操作也只右移一位。
②乘數增加一位符號位,使總位數仍為偶數,此時求部分積的次數為n/2+1,而且最后一次不再執行右移操作。
(3)補碼除法
<1>定點原碼一位除法
1>恢復余數法
被除數(余數)減去除數,如果為0或者為正值時,上商為1,不恢復余數;如果結果為負,上商為0,再將除數加到余數中,恢復余數。余數左移1位。
2>加減交替法
當余數為正時,商上1,求下一位商的辦法,余數左移一位,再減去除數;當余數為負時,商上0,求下一位商的辦法,余數左移一位,再加上除數。
<2>定點補碼一位除法(加減交替法)
1〉如果被除數與除數同號,用被除數減去除數;若兩數異號,被除數加上除數。如果所得余數與除數同號商上1,否則,商上0,該商為結果的符號位。
2〉求商的數值部分。如果上次商上1,將除數左移一位后減去除數;如果上次商上0,將余數左移一位后加除數。然后判斷本次操作后的余數,如果余數與除數同號商上1,如果余數與除數異號商上0。如此重復執行n-1次(設數值部分n位)。
3〉商的最后一位一般采用恒置1的辦法,并省略了最低+1的操作。此時最大的誤差為2-n。
5)溢出概念和判別方法
當運算結果超出機器數所能表示的范圍時,稱為溢出。顯然,兩個異號數相加或兩個同號數相減,其結果是不會溢出的。僅當兩個同號數相加或者兩個異號數相減時,才有可能發溢出的情況,一旦溢出,運算結果就不正確了,因此必須將溢出的情況檢查出來。判別方法有三種:
1〉當符號相同的兩數相加時,如果結果的符號與加數(或被加數)不相同,則為溢出。
2〉當任意符號兩數相加時,如果C=Cf,運算結果正確,其中C為數值最高位的進位,Cf為符號位的進位。如果C≠Cf ,則為溢出,所以溢出條件=C⊕Cf 。
3〉采用雙符號fs2fs1。正數的雙符號位為00,負數的雙符號位為11。符號位參與運算,當結果的兩個符號位甲和乙不相同時,為溢出。所以溢出條件= fs2⊕fs1 ,或者溢出條件= fs2fs1 + fs2fs1
(三) 浮點數的表示和運算
1. 浮點數的表示
1)浮點數的表示范圍;
浮點數是指小數點位置可浮動的數據,通常以下式表示:
N=M·RE
其中,N為浮點數,M為尾數,E為階碼,R稱為“階的基數(底)”,而且R為一常數,一般為2、8或16。在一臺計算機中,所有數據的R都是相同的,于是不需要在每個數據中表示出來。因此,浮點數的機內表示一般采用以下形式:
浮點數的機內表示一般采用以下形式:
Ms E M
1位 n+1位 m位
Ms是尾數的符號位,設置在最高位上。
E為階碼,有n+1位,一般為整數,其中有一位符號位,設置在E的最高位上,用來表正階或負階。
M為尾數,有m位,由Ms和M組成一個定點小數。Ms=0,表示正號,Ms=1,表示負。為了保證數據精度屬數通常用規格化形式表示:當R=2,且尾數值不為0時,其絕對值大于或等于(0.5)10。對非規格化浮點數,通過將尾數左移或右移,并修改階碼值使之滿足規格化要求。
2)IEEE754標準
根據IEEE 754國際標準,常用的浮點數有兩種格式:
(1)單精度浮點數(32位),階碼8位,尾數24位(內含:位符號位)。
(2)雙精度浮點數(64位),階碼11位,尾數53位(內含:位符號位)。
單精度格式32位,階碼為8位,尾數為23位。另有一位符號位S,處在最高位。
由于IEEE754標準約定在小數點左部有一位隱含位,從而實際有效位數為24位。這樣使得尾數的有效值變為1.M 。
例如,最小為x1.0…0,,最大為x1.1…1。規格化表示。故小數點左邊的位橫為1,可省去。
階碼部分采用移碼表示,移碼值127,1到254經移碼為-126到+127。
S(1位) E(8位) M(23位) N(共32位)
符號位 0 0 0
符號位 0 不等于0 (-1)S·2-126·(0.M) 為非規格化數
符號位 1到254之間 - (-1)S·2E-127·(1.M) 為規格化數
符號位 255 不等于0 NaN(非數值)
符號位 255 0 無窮大
0 有了精確的表示,無窮大也明確表示。對于絕對值較小的數,可以采用非規格化數表示,減少下溢精度損失。非規格化數的隱含位是0,不是1。
2. 浮點數的加/減運算
加減法執行下述五步完成運算:
1)“對階”操作
比較兩浮點數階碼的大小,求出其差ΔE,保留其大值E,E=max(Ex, Ey)。當ΔE≠0時,將階碼小的尾數右移ΔE位,并將其階碼加上ΔE,使兩數的階碼值相等。
2)尾數加減運算
執行對階之后,兩尾數進行加減操作。
3)規格化操作
規格化的目的是使得尾數部分的絕對值盡可能以最大值的形式出現。
4)舍入
在執行右規或者對階時,尾數的低位會被移掉,使數值的精度受到影響,常用“0”舍“1”入法。當移掉的部分最高位為1時,在尾數的末尾加1,如果加1后又使得尾數溢出,則要再進行一次右規。
5)檢查階碼是否溢出
階碼溢出表示浮點數溢出。在規格化和舍入時都可能發生溢出,若階碼正常,加/減運算正常結束。若階碼下溢,則設置機器運算結果為機器零,若上溢,則設置溢出標志。
(四) 算術邏輯單元ALU
1. 串行加法器和并行加法器
1)串行進位加法器
并行加法器可以同時對數據的各位進行相加,一般用n個全加器來實現2個操作數的各位同時向加。其操作數的各位是同時提供的,由于進位是逐位形成,低位運算所產生的進位會影響高位的運算結果。
串行進位(也稱波形進位)加法器,邏輯電路比較簡單,但是最高位的加法運算,一定要等到所有低位的加法完成之后才能進行,低位的進位要逐步的傳遞到高位,逐級產生進位,因此運算速度比較慢。
2)并行進位加法器
為了提高運算速度,減少延遲時間,可以采用并行進位法,也叫提前進位或先行進位。
全加器中,輸入Ai 、Bi、Ci-1,輸出:
Si = Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1
Ci = Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1 = Ai Bi + (Ai+Bi)Ci-1
進位產生函數:Gi = Ai Bi
進位傳遞函數:Pi = Ai+Bi
Ci = Gi + Pi Ci-1
C4 = G4 + P4G3 + P4P3G2 + P4P3P2G1 + P4P3P2P1C0
并行進位加法器的運算速度很快,形成最高進位輸出的延遲時間很短,但是以增加硬件邏輯線路為代價。對于長字長的加法器,往往將加法器分成若干組,在組內采用并行進位,組間則采用串行進位或并行進位,由此形成多種進位結構。
(1)單級先行進位
單級先行進位方式將n位字長分為若干組,每組內采用并行進位方式,組與組之間冊采用串行進位方式。
(2)多級先行進位
多級先行進位在組內和組間都采用先行進位方式。
16位單級先行進位加法器
2. 算術邏輯單元ALU的功能和機構
ALU部件是運算器中的主要組成部分,又稱為多功能函數發生器,主要用于完成各種算術運算和邏輯運算。
ALU的算術運算部件包含加法器、減法器、乘法器、除法器、增量器(+1)、減量器(-1)、BCD碼運算器等組件。
ALU的主要工作是根據CPU的指令要求執行各種指定的運算,如加法、減法、乘法、除法、比較、邏輯移位等操作。
通用寄存器組是一組存取速度最快的存儲器,用于保存參加運算的操作數和中間結果。訪問寄存器無需高速緩存,也不需要運行總線周期,因此指令的執行速度很快。幾乎所有的指令都要將寄存器指定為一個操作數,有些指令還要求將操作數存放在專用的寄存器中。
專用寄存器通常用于表示CPU所處于某種系統狀態,ALU中有兩個重要的狀態寄存器:指令指針寄存器IP(即程序計數器PC)和標志寄存器FLAGS。
三、 存儲器層次機構
(一) 存儲器的分類
1)半導體存儲器
2)磁表面存儲器
3)磁芯存儲器
4)光盤存儲器
1)隨機存儲器
2)只讀存儲器
3)串行訪問存儲器
(二) 存儲器的層次化結構
存儲器有3個重要的指標:速度、容量和每位價格,一般來說,速度越快,位價越高;容量越大,位價越低,容量大,速度就越低。上述三者的關系用下圖表示:
存儲系統層次結構主要體現在緩存-主存-輔存這兩個存儲層次上,如下圖所示:
(三) 半導體隨機存取存儲器
1. SRAM存儲器的工作原理
1)靜態存儲單元
SRAM靜態存儲單元的每個存儲位需要四到六個晶體管組成。比較典型的是六管存儲單元,即一個存儲單元存儲一位信息“0”或“1”。靜態存儲單元保存的信息比較穩定,信息為非破壞性讀出,故不需要重寫或者刷新操作;另一方面,其結構簡單、可靠性高、速度較快,但其占用元件較多,占硅片面積大,且功耗大,所以集成度不高。
靜態隨機存儲單元
2. DRAM存儲器的工作原理
1)動態存儲單元
常見的動態RAM存儲單元有三管式和單管式兩種,它們的共特點是靠電容存儲電荷的原理來寄存信息。若電容上存有足夠的電荷表示“”,電容上無電荷表示“0”。電容上的電荷一般只能維持1-2ms,因此即使電源不掉電,電容上的電荷會自動消失。因此,為保證信息的不丟失,必須在2ms之內就要對存儲單元進行一次恢復操作,這個過程稱為再生或者刷新。與靜態RAM相比,動態RAM具有集成度更高、功耗更低等特點,目前被各類計算機廣泛使用。
三管動態RAM基本單元
單管動態RAM基本單元
(四) 只讀存儲器
前面介紹的DRAM和SRAM均為可任意讀/寫的隨機存儲器,當掉電時,所存儲的內容消失,所以是易失性存儲器。只讀存儲器,即使停電,所存儲的內容也不丟失。根據半導體制造工藝的不同,可分為ROM,PROM,EPROM,E2ROM和Flash Memory
掩模式ROM由芯片制造商在制造時寫入內容,以后只能讀而不能再寫入。其基本存儲原理是以元件的“有/無”來表示該存儲單元的信息(“1”或“0”),可以用二極管或晶體管作為元件,顯而易見,其存儲內容是不會改變的。
PROM可由用戶根據自己的需要來確定ROM中的內容,常見的熔絲式PROM是以熔絲的通和斷開來表示所存的信息為“1”或“0”。剛出廠的產品,其熔絲是全部接通的。根據需要斷開某些單元的熔絲(寫入)。顯而易見,斷開后的熔絲是不能再接通了,因而一次性寫入的存儲器。掉電后不會影響其所存儲的內容。
為了能修改ROM中的內容,出現了EPROM。利用浮動柵MOS電路保存信息,信息的改寫用紫外線照射即可擦除。
E2PROM的編程序原理與EPROM相同,但擦除原理完全不同,重復改寫的次數有限制(因氧化層被磨損),一般為10萬次。
其讀寫操作可按每個位或每個字節進行,類似SRAM,但每字節的寫入周期要幾毫秒,比SRAM長得多。E2PROM每個存儲單元采則2個晶體管。其柵極氧化層比EPROM薄,因此具有電擦除功能。
F1ash Memory是在EPROM與E2PROM基礎上發展起來的,其讀寫過程和E2PROM不同,F1ash Memory的讀寫操作一般是以塊為單位。
(五) 主存儲器與CPU的連接
1個存儲器的芯片的容量是有限的,它在字數或字長方面與實際存儲器的要求都有很大差距,所以需要在字向和位向進行擴充才能滿足需要。根據存儲器所需的存儲容量和所提供的芯片的實際容量,可以計算出總的芯片數。一個存儲器的容量為M×N位,若使用L×K位存儲器芯片,那么,這個存儲器共需要M/L×N/K存儲器芯片。
1.位擴展
位擴展指的是用多個存儲器器件對字長進行擴充。位擴展的連接方式是將多片存儲器的地址、片選己、讀寫控制端R/W可相應并聯,數據端分別引出。
2)字擴展
字擴展指的是增加存儲器中字的數量。
靜態存儲器進行字擴展時,將各芯片的地址線、數據線、讀寫控制線相應并聯,而由片選信號來區分各芯片的地址范圍。
3)字位擴展
實際存儲器往往需要字向和位向同時擴充。
(六) 雙口RAM和多模塊存儲器
1.雙端口存儲器
雙端口存儲器是一種具有兩個單獨的讀/寫端口及控制電路的存儲器,通過增加一個讀/寫端口,雙端口存儲器擴展了存儲器的的信息交換能力。
2.多模塊存儲器
為了解決CPU與主存儲器之間的速度匹配問題,在高速存儲器中,普遍采用并行主存系統。即利用類似存儲器擴展(位擴展、字擴展、字位擴展)的方法,將n個字長為W位的存儲器并行連接,構建一個更大的存儲器。并行主存有單體多字方式、多體并行方式和多體交叉方式。
(七) 高速緩沖存儲器(Cache)
1. 程序訪問的局部性
從大量的統計中得到的一個規律是,程序中對于存儲空間90%的訪問局限于存儲空間的10%的區域中,而另外10%的訪問則分布在存儲空間的其余90%的區域中。這就是通常說的局部性原理。訪存的局部性規律包括兩個方面:
時間局部性:如果一個存儲項被訪問,則可能該項會很快被再次訪問。
空間局部性:如果一個存儲項被訪問,則該項及其鄰近的項也可能很快被訪問。
2. Cache的基本工作原理
Cache通常由兩部分組成,塊表和快速存儲器。其工作原理是:處理機按主存地址訪問存儲器,存儲器地址的高段通過主存-Cache地址映象機構借助查表判定該地址的存儲單元是否在Cache中,如果在,則Cache命中,按Cache地址訪問Cache。否則,Cache不命中,則需要訪問主存,并從主存中調入相應數據塊到Cache中,若Cache中已寫滿,則要按某種算法將Cache中的某一塊替換出去,并修改有關的地址映象關系。
從這個工作原理我們可以看出,它已經涉及到了兩個問題。首先是定位、然后是替換的問題。
Cache的存在對程序員是透明的。其地址變換和數據塊的替換算法均由硬件實現。通常Cache被集成到CPU內以提高訪問速度。
3. Cache和主存之間的映射方式
因為處理機訪問都是按主存地址訪問的,而Cache的空間遠小于主存,如何知道這一次的訪問內容是不是在Cache中,在Cache中的哪一個位置呢? 這就需要地址映象,即把主存中的地址映射成Cache中的地址。讓Cache中一個存儲塊(空間)與主存中若干塊相對應,如此,訪問一個主存地址時,就可以對應地知道在cache中哪一個地址了。地址映象的方法有三種:直接映象、全相聯映象和組相聯映象。
直接映象就是將主存地址映象到Cache中的一個指定地址。任何時候,主存中存儲單元的數據只能調入到Cache中的一個位置,這是固定的,若這個位置已有數據,則產生沖突,原來的塊將無條件地被替換出去。
直接映射
全相聯映象就是任何主存地址可映象到任何Cache地址的方式。在這種方式下,主存中存儲單元的數據可調入到Cache中的任意位置。只有在Cache中的塊全部裝滿后才會出現塊沖突。
全相連映射
組相聯映象指的是將存儲空間的頁面分成若干組,各組之間的直接映象,而組內各塊之間則是全相聯映象。
組相聯映射
4. Cache中主存塊的替換算法
在直接映象方式下,不存在塊替換的算法,因為每一塊的位置映象是固定的,需要哪一塊數據就可直接確定地將該塊數據調入上層確定位置。而其他兩種映象就存在替換策略的問題,就是要選擇替換到哪一個Cache塊。即替換算法。
思想 優點 缺點
隨機算法RAND 用軟的或硬的隨機數產生器產生上層中要被替換的頁號 簡單、易于實現 沒有利用上層存儲器使用的"歷史信息",沒有反映等程序局部性,命中率低。
先進先出FIFO 選擇最早裝入上層的頁作為被替換的頁 實現方便,利用了主存歷史的信息 不能正確反映程序局部性原理,命中率不高,可能出現一種異常現象。
近期最少使用法LRU 選擇近期最少訪問的頁作為被替換的頁 比較正確反映程序局部性,利用訪存的歷史信息,命中率較高 實現較復雜
優化替換算法OPT 將未來近期不用的頁換出去 命中率最高,可作為衡量其他替換算法的標準 不現實,只是一種理想算法
5. Cache寫策略
對Cache的寫操作,情況比讀操作要復雜一些。由于寫入Cache時,并沒有寫入主存,因此就出現Cache和主存數據不一致的情況。
如何處理Cache和主存不一致的方法就稱為更新策略。
更新策略 思想 優點 缺點
寫回法 是指在CPU執行寫操作時,信息只寫入Cache中,僅當需要替換時,才將改寫過的Cache塊先送回主存(寫回),然后再調塊(設置dirty位) 有利于省去許多將中間結果寫入主存的無謂開銷。 需設修改位增加Cache的復雜性
全寫法(寫直達法) 在寫操作時,將數據同時寫入Cache和主存 實現開銷小、簡單 為了寫中間結果浪費了不少時間
另外,當寫不命中時(也就是寫Cache塊時,這塊早被人替換出去而在Cache中找不到時)是不是要把這塊再取回Cache中,有兩個解決方法:
? 不按寫分配法,就是直接寫到主存里,不再把該地址對應的塊調回Cache中。
? 按寫分配法,就是寫到主存,而且把這一塊從主存中調入到Cache。
一般寫回法用按寫分配法,全寫法則采用不按寫分配。
(八) 虛擬存儲器
1. 虛擬存儲器的基本概念
虛擬存儲器是主存的擴展,虛擬存儲器的空間大小取決于計算機的訪存能力而不是實際外存的大小,實際存儲空間可以小于虛擬地址空間。從程序員的角度看,外存被看作邏輯存儲空間,訪問的地址是一個邏輯地址(虛地址),虛擬存儲器使存儲系統既具有相當于外存的容量又有接近于主存的訪問速度。
虛擬存儲器的訪問也涉及到虛地址與實地址的映象、替換算法等,這與Cache中的類似,前面我們講的地址映象以塊為單位,而在虛擬存儲器中,地址映象以頁為單位。設計虛擬存儲系統需考慮的指標是主存空間利用率和主存的命中率。
虛擬存儲器與Cache存儲器的管理方法有許多相同之處,它們都需要地址映象表和地址變換機構。但是二者也是不同的。
虛擬存儲器的三種不同管理方式:按存儲映象算法,分為段式、頁式和段頁式等,這些管理方式的基本原理是類似的。
2. 頁式虛擬存儲器
頁式管理:是把虛擬存儲空間和實際空間等分成固定大小的頁,各虛擬頁可裝入主存中的不同實際頁面位置。頁式存儲中,處理機邏輯地址由虛頁號和頁內地址兩部分組成,實際地址也分為頁號和頁內地址兩部分,由地址映象機構將虛頁號轉換成主存的實際頁號。
頁式管理用一個頁表,包括頁號、每頁在主存中起始位置、裝入位等。頁表是虛擬頁號與物理頁號的映射表。頁式管理由操作系統進行,對應用程序員的透明的。
3. 段式虛擬存儲器
段式管理: 把主存按段分配的存儲管理方式。它是一種模塊化的存儲管理方式,每個用戶程序模塊可分到一個段,該程序模塊只能訪問分配給該模塊的段所對應的主存空間。段長可以任意設定,并可放大和縮小。
系統中通過一個段表指明各段在主存中的位置。段表中包括段名(段號)、段起點、裝入位和段長等。段表本身也是一個段。段一般是按程序模塊分的。
4. 段頁式虛擬存儲器
段頁式管理:是上述兩種方法的結合,它將存儲空間按邏輯模塊分成段,每段又分成若干個頁,訪存通過一個段表和若干個頁表進行。段的長度必須是頁長的整數倍,段的起點必須是某一頁的起點。
5. TLB(快表)
在虛擬存儲器中進行地址變換時,需要虛頁號變換成主存中實頁號的內部地址變換,這一般通過查內頁表實現。當表中該頁對應的裝入位為真時,表示該頁在主存中,可按主存地址問主存;如果裝入位為假時,表示該頁不在存儲器中,就產生頁失效中斷,需從外存調入頁。
中斷處理時先通過外部地址變換,一般通過查外頁表,將虛地址變換為外存中的實際地址,到外存中去選頁,然后通過I/0通道調入內存。當外存頁面調入主存中時還存在一個頁面替換略的問題。
提高頁表的訪問速度是提高地址變換速度的關鍵。因為,每次訪存都要讀頁表,如果頁存放在主存中,就意味著訪存時間至少是兩次訪問主存的時間,這樣查表的代價大大。只有內部地址變換速度提高到使訪問主存的速度接近于不采用虛擬存儲器時的訪主存速度時,虛擬存儲器才能實用。
根據訪存的局部性,表內各項的使用的概率不是均勻分布的。在一段時間內,可能只用表中的很少幾項,因此應重點提高使用概率高的這部分頁表的訪問速度,可用快速硬件構成全表小得多的部分表格,而將整個表格放在主存中,這就引出了快表和慢表的概念和技術。這樣,虛地址到實地址的變換方法如后圖所示。
查表時,根據虛頁表同時查找快表和慢表,當在快表中查到該虛頁號時,就能很快找到對應的實頁號,將其送入主存實地址寄存器,同時使慢表的查找作廢,這時主存的訪問速度沒降低多少。
如果在快表中查不到,則經過一個訪主存的時間延遲后,將從慢表中查到的實頁送入實地址寄存器,同時將此虛頁號和對應的實頁號送入快表,這里也涉及到用一個替換算法從快表中替換出一行。
快表的存在對所有的程序員都是透明的。
四、 指令系統
(一) 指令格式
計算機是通過執行指令來處理各種數據的。為了指出數據的來源、操作結果的去向及所執行的操作,一條指令必須包含下列信息:
(1)操作碼,具體說明了操作的性質及功能。
(2)操作數的地址。
(3)操作結果的存儲地址。
(4)下一條指令的地址。
從上述分析可知,一條指令實際上包括兩種信息即操作碼和地址碼。
操作碼(operation code)用來表示該指令所要完成的操作(如加、減、乘、除、數據傳送等),其長度取決于指令系統中的指令條數。
地址碼用來描述該指令的操作對象,或者直接給出操作數或者指出操作數的存儲器地址或寄存器地址(即寄存器名)。
1)零地址指令
OPCODE
格式:
OPCODE–操作碼
指令中只有操作碼,而沒有操作數或沒有操作數地址。這種指令有兩種可能:
(1)無需任何操作數,如空操作指令,停機指令等。
(2)所需的操作數是默認的。如堆棧結構計算機的運算指令,所需的操作數默認在堆棧中,由堆棧指針SP隱含指出,操作結果仍然放回堆棧中。又如Intel 8086的字符串處理指令,源、目的操作數分別默認在源變址寄存器SI和目的變址寄存器DI所指定的存儲器單元中。
2)一地址指令
OPCODE A
格式:
OPCODE–操作碼
A–操作數的存儲器地址或寄存器名
指令中只給出一個地址,該地址既是操作數的地址,又是操作結果的存儲地址。如加1,減1和移位等單操作數指令均采用這種格式,對這一地址所指定的操作數執行相應的操作后,產生的結果又存回該地址中。
在某些字長較短的微型機中(如早期的Z80,Intel8080,MC6800等),大多數算術邏輯指令也采用這種格式,第一個源操作數由地址碼A給出,第二個源操作數在一個默認的寄存器中,運算結果仍送回到這個寄存器中,替換了原寄存器內容,通常把這個寄存器稱累加器。
3)二地址指令
OPCODE A1 A2
格式:
OPCODE–操作碼
A1–第一個源操作數的存儲器地址或寄存器地址。
A2–第二個源操作數和存放操作結果的存儲器地址或寄存器地址。
這是最常見的指令格式,兩個地址指出兩個源操作數地址,其中一個還是存放結果的目的地址。對兩個源操作數進行操作碼所規定的操作后,將結果存入目的地址,在本例中即為A2指定的地址
4)三地址指令
OPCODE A1 A2 A3
格式:
OPCODE–操作碼
A1–第一個源操作數的存儲器地址或寄存器地址
A2–第二個源操作數的存儲器地址或寄存器地址
A3–操作結果的存儲器地址或寄存器地址
其操作是對A1,A2指出的兩個源操作數進行操作碼(OPCODE)所指定的操作,結果存入A3中。
5)多地址指令
在某些性能較好的大、中型機甚至高檔小型機中,往往設置一些功能很強的,用于處理成批數據的指令,如字符串處理指令,向量、矩陣運算指令等。
為了描述一批數據,指令中需要多個地址來指出數據存放的首地址、長度和下標等信息
設某機器的指令長度為16位,包括4位基本操作碼字段和三個4位地址字段,其格式下:
OPCODE(4) A1(4) A2(4) A3(4)
4位基本操作碼有16個碼點(即有16種組合),若全部用于表示三地址指令,則只有16條。但是,若三地址指令僅需15條,兩地址指令需15條,一地址指令需15條,零地址指令需16條,共61條指令,應如何安排操作碼?
顯然,只有4位基本操作碼是不夠的,必須將操作碼的長度向地址碼字段擴展才行。
一種可供擴展的方法和步驟如下:
(1)15條三地址指令的操作碼由4位基本操作碼從0000~1110給出,剩下一個碼點1111用于把操作碼擴展到A1,即4位擴展到8位;
(2)15條二地址指令的操作碼由8位操作碼從11110000~11111110給出,剩下一個碼點11111111用于把操作碼擴展到A2,即從8位擴展到12位;
(3)15條一地址指令的操作碼由12位操作碼從111111110000~111111111110給出,剩下的一個碼點111111111111用于把操作碼擴展到A3,即從12位擴展到16位;
(4)16條零地址指令的操作碼由16位操作碼從1111111111110000~1111111111111111給出。
(二) 指令的尋址方式
操作數的真實地址稱為有效地址,記做EA,它是尋址方式和形式地址共同來決定的。
尋址方式是指確定本條指令的數據地址以及下一條將要執行的指令的地址,與硬件結構密切相關,尋址方式分為指令尋址和數據尋址兩大類
指令尋址分為順序尋址和跳躍尋址兩種。
順序尋址可以通過程序計數器PC加1自動形成下一條指令的地址,跳躍尋址則通過轉移類指令實現,是通過對PC的運算得到新的下一條指令的地址。
1)立即尋址
所需的操作數由指令的地址碼部分直接給出,就稱為立即數(或直接數)尋址方式。這種方式的特點是取指時,操作碼和一個操作數同時被取出,不必再次訪問存儲器,提高了指令的執行速度。但是由于這一操作數是指令的一部分,不能修改,而一般情況下,指令所處理的數據都是在不斷變化的(如上條指令的執行結果作為下條指令的操作數),故這種方式只能適用于操作數固定的情況。通常用于給某一寄存器或存儲器單元賦初值或提供一個常數等。
2)直接尋址
指令的地址碼部分給出操作數在存儲器中的地址。
3)隱含尋址
操作數的地址隱含在操作碼或者某個寄存器中。
4)間接尋址
在尋址時,有時根據指令的地址碼所取出的內容既不是操作數,也不是下一條要執行的指令,而是操作數的地址或指令的地址,這種方式稱為間接尋址或間址。
5)寄存器尋址
計算機的中央處理器一般設置有一定數量的通用寄存器,用以存放操作數、操作數的地址或中間結果。假如指令地址碼部分給出某一通用寄存器地址,而且所需的操作數就在這一寄存器中,則稱為寄存器尋址。通用寄存器的數量一般在幾個至幾十個之間,比存儲單元少很多,因此地址碼短,而且從寄存器中存取數據比從存儲器中存取快得多,所以這種方式可以縮短指令長度、節省存儲空間,提高指令的執行速度,在計算機中得到廣泛應用。
6)寄存器間接尋址
寄存器中給出的是操作數的地址,因此還需要訪問一次存儲器才能得到操作數。
7)基址尋址
在計算機中設置一個專用的基址寄存器,或由指令指定一個通用寄存器為基址寄存器。操作數的地址由基址寄存器的內容和指令的地址碼A相加得到
8)變址尋址
指令地址碼部分給出的地址A和指定的變址寄存器X的內容通過加法器相加,所得的和作為地址從存儲器中讀出所需的操作數。這是幾乎所有計算機都采用的一種尋址方式。
9)相對尋址
把程序計數器PC的內容(即當前執行指令的地址)與指令的地址碼部分給出的位移量(disp)之和作為操作數的地址或轉移地址,稱為相對尋址。
主要用于轉移指令,執行本條指令后,將轉移到(PC)+disp,(PC)為程序計數器的內容。相對尋址有兩個特點:
1〉轉移地址不是固定的,它隨著PC值的變化而變化,并且總是與PC相差一個固定值disp,因此無論程序裝人存儲器的任何地方,均能正確運行,對浮動程序很適用。
2〉位移量可正、可負,通常用補碼表示。如果位移量為n位,則這種方式的尋址范圍在
(PC)-2n-1 ~(PC)+2n-1-1之間
計算機的程序和數據一般是分開存放的,程序區在程序執行過程中不允許修改。在程序與數據分區存放的情況下,不用相對尋址方式來確定操作數地址。
10)堆棧尋址
在一般計算機中,堆棧主要用來暫存中斷和子程序調用時現場數據及返回地址,用于訪問堆棧的指令只有壓入(即進棧)和彈出(即退棧)兩種,它們實際上是一種特殊的數據傳送指令:
壓入指令(PUSH)是把指定的操作數送入堆棧的棧頂;
彈出指令(POP)的操作剛好相反,是把棧頂的數據取出,送到指令所指定的目的地。
一般的計算機中,堆棧從高地址向低地址擴展,即棧底的地址總是大于或等于棧頂的地址(也有少數計算機剛好相反)當執行壓入操作時,首先把堆棧指針(SP)減量(減量的多少取決于壓入數據的字節數,若壓入一個字節,則減1;若壓入兩個字節,則減2,以此類推),然后把數據送人SP所指定的單元;當執行彈出操作時,首先把sp所指定的單元(即棧頂)的數據取出,然后根據數據的大小(即所占的字節數)對SP增量。
(三) CISC和RISC的基本概念
1.CISC(復雜指令集計算機)
隨著VLSI技術的發展,計算機的硬件成本不斷下降,軟件成本不斷提高,使得人們熱衷于在指令系統中增加更多的指令和復雜的指令,來提高操作系統的效率,并盡量縮短指令系統與高級語言的語義差別,以便于高級語言的編譯和降低軟件成本。
另外,為了做到程序兼容,同一系列計算機的新機器和高檔機的指令系統只能擴充而不能減去任意一條,因此,促使指令系統越來越復雜,某些計算機的指令多達幾百條。例如,DEC公司的VAX 11/780計算機有303條指令,18種尋址方式,我們稱這些計算機為復雜指令系統計算機(complex instruction set computer,簡稱CISC)。Intel公司的180X86微處理器,IBM公司的大、中計算機均為CISC。
2.RISC(簡單指令集計算機)
(1)RISC的產生
1975年IBM公司開始研究指令的合理性問題,IBM的John cocke 提出了RISC的想法。 對CISC的測試表明:
最長使用的是一些簡單指令,占指令總數的20%,但在程序中出現的頻率卻占80%。 而占20%的復雜指令,為實現其功能而設計的微程序代碼卻占總代碼的80%。CISC研制時間長、成本高、難于實現流水線;因此出現了RIC技術。
(2)RISC的特點
1)優先選取使用頻率最高的一些簡單指令;
2)指令長度固定;
3)只有取數/存數指令(load/store)訪問內存;
4)CPU中的寄存器數量很多;
5)大部分指令在一個或小于一個機器周期完成;
6)硬布線控制邏輯為主,不用或少用微碼控制;
7)一般用高級語言編程,特別重視編譯優化,以減少程序執行時間。
(3)RISC的發展
1983年,一些中小型公司開始推出RISC產品,由于其高性能價格比,市場占有率不斷提高。1987年SUN公司用SPARC芯片構成工作站;目前一些大公司,IBM、DEC、Intel、Motorola以將部分力量轉移到RISC方面。
(4)CISC機與RISC機的主要特征對比
CISC RISC
指令系統 指令數 指令格式 指令字長 尋址方式 可訪問指令 各種指令使用頻率 各種指令執行時間 復雜、龐大 一般大于200 一般大于4 一般大于4 不固定 不加限制 相差很大 相差很大 簡單、精簡 一般小于100 一般小于4 一般小于4 固定32位 只有LOAD/STORE指令 相差不大 絕大多數在一個機器周期完成
優化編譯實現 很難 較容易
程序源代碼長度 較短 較長
控制邏輯實現方式 絕大多數為微程序控制 絕大多數為硬連線控制
五、 中央處理器(CPU)
(一) CPU的功能和基本結構
CPU主要是由運算器和控制器組成,由于運算器部分在第二部分介紹過,所以本節主要介紹控制器的組成和工作原理。
1.控制器的功能
計算機對信息進行處理(或計算)是通過程序的執行而實現的,程序是完成某個確定算法的指令序列,要預先存放在存儲器中。控制器的作用是控制程序的執行,它必須具有以下基本功能:
1).取指令
2).分析指令
3).執行指令
計算機不斷重復順序執行上述三種基本操作:取指、分析、執行;再取指、再分析、再執行,如此循環,直到遇到停機指令或外來的干預為止。
4).控制程序和數據的輸入與結果輸出
根據程序的安排或人的干預,在適當的時候向輸入輸出設備發出一些相應的命令來完成I/O功能,這實際上也是通過執行程序來完成的。
5).對異常情況和某些請求的處理
當機器出現某些異常情況,諸如算術運算的溢出和數據傳送的奇偶錯等;或者某些外來請求,諸如磁盤上的成批數據需送存儲器或程序員從鍵盤送入命令等,此時由這些部件或設備發出:
(1)“中斷請求”信號。
(2)DMA請求信號。
2.控制器的組成
根據對控制器功能分析,得出控制器的基本組成如下:
1).程序計數器(PC)
即指令地址寄存器。在某些計算機中用來存放當前正在執行的指令地址;而在另一些計算機中則用來存放即將要執行的下一條指令地址;而在有指令預取功能的計算機中,一般還需要增加一個程序計數器用來存放下一條要取出的指令地址。
有兩種途徑來形成指令地址,其一是順序執行的情況,通過程序計數器加“1”形成下一條指令地址(如存儲器按字節編址,而指令長度為4個字節,則加“4”)。其二是遇到需要改變順序執行程序的情況,一般由轉移類指令形成轉移地址送往程序計數器,作為下一條指令的地址。
2).指令寄存器(IR)
用以存放當前正在執行的指令,以便在指令執行過程中,控制完成一條指令的全部功能。
3). 指令譯碼器或操作碼譯碼器
對指令寄存器中的操作碼進行分析解釋,產生相應的控制信號。
在執行指令過程中,需要形成有一定時序關系的操作控制信號序列,為此還需要下述組成部分。
4).脈沖源及啟停線路
脈沖源產生一定頻率的脈沖信號作為整個機器的時鐘脈沖,是機器周期和工作脈沖的基準信號,在機器剛加電時,還應產生一個總清信號(reset)。啟停線路保證可靠地送出或封鎖時鐘脈沖,控制時序信號的發生或停止,從而啟動機器工作或使之停機。
5).時序控制信號形成部件
當機器啟動后,在CLK時鐘作用下,根據當前正在執行的指令的需要,產生相應的時序控制信號,并根據被控功能部件的反饋信號調整時序控制信號。例如,當執行加法指令時,若產生運算溢出的異常情況,一般不再執行將結果送入目的寄存器(或存儲單元)的操作,而發出中斷請求信號,轉入中斷處理;又如執行條件轉移指令時,根據不同的條件產生不同的控制信號,從而進入適當的程序分支。
(二) 指令執行過程
1.指令執行的時序
計算機工作的過程是取指令、分析指令、執行指令三個基本動作的重復。考慮到所有的器件中(寄存器、存儲器)存儲器的速度最慢,因此,取最慢的器件工作時間(周期)作為整個工作的最長同步標準。
計算機的工作時序是按照存儲器的工作周期劃分的。每個存儲器工作周期又稱為機器周期。因此,每個機器周期至少完成一個基本操作。一般最長的操作是訪問存儲器(讀/寫),這個時間也用于訪問外設接口(寄存器)。如果,某個操作,比如利用運算器執行一次運算,如果不訪問存儲器,即使占用的時間很短,但是,也必須為其劃分一個機器周期。因此,機器周期是計算時序劃分的最大單位。
現在我們為計算機的執行時間進行最基本的劃分:由于計算機不斷地重復執行每個指令,所以,我們將執行的時間劃分為一條一條指令執行所占用的時間,如下:
執行指令1 執行指令2 執行指令3 執行指令4 執行指令5
我們將每指令占用的時間稱為指令周期。由于每條指令的功能不一樣,因此執行的時間也不同,指令周期長短不一樣。
而每條指令的執行,又可以是取指令,分析指令,執行指令。由于取指令必須訪問存儲器,所以占用一個機器周期。分析指令是由指令譯碼電路完成的,所占用的時間極短,無需分配一個完整的機器周期。一般是在取指周期后期(結束之前的很短時間內)就可以完成。指令的執行較為復雜:可能不訪問存儲器;訪問一次存儲器;訪問兩次存儲器等。因此,可能是一個機器周期到幾個機器周期。
因此,每條指令的執行過程如下:
取指周期 執行周期1 執行周期2 執行周期3 執行周期4
第一個機器周期總是取指周期,而指令的地址總是從PC中獲得,當發出讀取存儲器命令后,指令總是從數據總線DB送回,CPU接受到指令之后,將指令放在指令寄存器IR之中。指令在IR中一直保留到取下一條指令為止。
第二個機器周期開始,根據指令有所不同:
執行一次ALU運算:分配一個機器周期。
執行訪問一次存儲器:分配一個機器周期。
所以,根據指令執行的不同情況,將會得到不同指令執行所占用的機器周期。
根據每個機器周期完成的任務不同,我們將每個機器周期按照任務命名。如同用取指周期命名第一個機器周期一樣。
2.指令執行過程舉例
假設指令格式如下:
操作碼 rs,rd rs1 imm(Disp)
rs,rd,rsl為通用寄存器地址;imm(或disp)為立即數(或位移量)。
加法指令功能:將寄存器(rs)中的一個數與存儲器中的一個數(其地址為(rsl)+disp)相加,結果放在寄存器rd中,rs與rd為同一寄存器。
加法指令完成以下操作:
①取指周期
從存儲器取指令,送入指令寄存器,并進行操作碼譯碼(分析指令)。
程序計數器加1,為下一條指令作好準備。
控制器發出的控制信號:PC→AB,W/R=0,M/IO=1;DB→IR;PC+1。
②計算地址周期
計算數據地址,將計算得到的有效地址送地址寄存器AR。
控制器發出的控制信號:rsl→GR,(rsl)→ALU,disp→ALU(將rsl的內容與disp送ALU);“+”(加法命令送ALU);ALU→AR(有效地址送地址寄存器)。
③取數周期
到存儲器取數。
控制器發出的控制信號:AR→AB,W/R=0,M/IO=1;DB→DR(將地址寄存器內容送地址總線,同時發訪存讀命令,存儲器讀出數據送數據總線后,打入數據寄存器)。
④執行周期
進行加法運算,結果送寄存器,并根據運算結果置狀態位N,Z,V,C。
控制器送出的控制信號:rs,rd→GR, (rs)→ALU,DR→ALU(兩個源操作數送ALU);
ALU→rd(運算結果送寄存器rd)
(三) 數據通路的功能和基本結構
CPU的數據通路是連接CPU內部各個部件以及和CPU外部個部件之間的數據和控制信號的連接關系圖。
(四) 控制器的功能和工作原理
1. 硬布線控制器
控制器控制信號的產生是采用邏輯電路,也稱組合邏輯電路控制方式。 “時序控制信號形成部件”是由硬邏輯布線完成的。實際設計中,需要幾十~幾百條指令,確定每條指令所需的機器周期,將情況相同的指令歸并在一起,列出表達式,畫出邏輯圖。
(1)時序與節拍
每一步由一個機器周期來完成,假設采用4個機器周期,總之,需要4個不同的信號輸出,代表4個不同的周期。
(2)操作碼譯碼器
指令的操作碼部分指出本指令將執行什么指令,如加法、減法等。對于不同的指令,采用不同的代碼表示。
(3)操作控制信號的產生
以加法指令為例,加法指令的完成是由4個機器周期cy1、cy2、cy3、cy4組成,分別是取指、計算地址、取數、計算4個機器周期。
將所有的機器周期的操作控制信號的邏輯表達式全部寫出來,就會得到各個操作控制信號的所有表達式,再將這些表達式安每個操作控制信號組合起來,就得到某個操作控制信號的表達式。
取指周期需要產生的操作控制信號如下:
PC→AB=cy1 ;將PC送地址總線
ADS=cy1·T1 ;存儲器地質有效
M/IO=cy1 ;存儲器操作
W/R=cy1 ;讀操作
DB→IR=cy1 ;將讀出的結果送IR
PC+1=cy1 ;將程序計數器加1
計算地址周期cy2需要完成有效地址((rs1)+Disp)的計算。產生的操作控制信號如下:
rs1→GR=加法指令·cy2 ;送通用寄存器地址
(rs1)→ALU=加法指令·cy2 ;通用寄存器送ALU
Disp→ALU=加法指令·cy2 ;偏移量送ALU
“+”=加法指令·cy2 ;ALU執行加法操作
ALU→AR=加法指令·cy2 ;運算結果送地址總線
例如,“+”操作控制信號在加法指令的cy2(計算有效地址)和cy4(操作數相加)時需要;減法指令的cy2(計算有效地址)時需要;轉移指令的cy2(計算有效地址)時需要;…。
所以,“+”操作控制信號的邏輯表達式如下:
“+”=加法指令·(cy2+cy4)+減法指令·cy2+轉移指令·cy2+…
設機器有7位操作碼(OP0~OP6),假設加法指令的操作碼為0001100,形成的加法指令信號的邏輯表達式為:
加法指令= OP0OP1OP2OP3OP4OP5OP6
如,某機器128條指令,用7位操作碼(OP0~OP6),如果其中有16條算術邏輯運算指令,可以將這些指令的3位操作碼都設計相同的編碼,如OP0OP1OP2= 001,而其他位OP3~OP6編碼表示16個不同的指令。
設命令A是所有算術邏輯運算在cy2周期需要產生的,邏輯表達式:
A=加法指令·cy2+減法指令·cy2+邏輯加指令·cy2+…
=(加法指令·+減法指令+邏輯加指令+…)·cy2
= OP0·OP1·OP2·cy2
只需要一個與門,就可實現命令A。
2. 微程序控制器
(1)微程序、微指令和微命令
在計算機中,一條指令的功能是通過按一定次序執行一系列基本操作完成的,這些基本操作稱為微操作。例如,前面講到的加法指令,分成四步(取指令、計算地址、取數、加法運算)完成,每一步實現若干個微操作。實現這些微操作的控制命令就是微命令。
微操作是指最基本的、不可再分的操作,如前面提到的:
PC→AB; W/R=0; DB→IR等。
PC→AB等就是微命令。
微指令:在微程序控制的計算機中,將由同時發出的控制信號所執行的一組微操作稱為微指令,所以微指令就是把同時發出的控制信號的有關信息匯集起來而形成的。將一條指令分成若干條微指令,按次序執行這些微指令,就可以實現指令的功能。組成微指令的微操作又稱微命令。
微程序:計算機的程序由指令序列構成,而計算機每條指令的功能均由微指令序列解釋完成,這些微指令序列的集合就叫做微程序。
(2)微指令的編碼方式;
1)直接控制法
在微指令的控制字段中,每一位代表一個微命令,在設計微指令時,是否發出某個微命令,只要將控制字段中相應位置成“1”或“0”,這樣就可打開或關閉某個控制門,這就是直接控制法。
2)字段直接編譯法
在計算機中的各個控制門,在任一微周期內,不可能同時被打開,而且大部分是關閉的(相應的控制位為“0”)。所謂微周期,指的是一條微指令所需的執行時間。如果有若干個(一組)微命令,在每次選擇使用它們的微周期內,只有一個微命令起作用,那么這若干個微命令是互斥的。
選出互斥的微命令,并將這些微命令編成一組,成為微指令字的一個字段,用二進制編碼來表示, 就是字段直接編譯法。
3)字段間接編譯法
字段間接編譯法是在字段直接編譯法的基礎上,進一步縮短微指令字長的一種編譯法。 如果在字段直接編譯法中,還規定一個字段的某些微命令,要兼由另一字段中的某些微命令來解釋,稱為字段間接編譯法。
(3)微地址的形式方式。
1)微程序入口地址的形成
<1>一級轉移方式
當操作碼的位數與位置固定時,可直接使操作碼與入口地址的部分位對應。
<2>多級轉移方式
先按照指令類型標志轉移到某條微指令,以區分出是哪一大類,然后可以進一步按指令操作碼轉移,區分出是該指令中的哪一類具體操作。
2)微程序后繼地址的形成
<1>以增量方式產生后繼微地址。
在順序執行微指令時,后繼微地址由現行微地址加上一個增量(通常為1)形成的;而在非順序執行時則要產生一個轉移微地址。
<2>增量與下址字段結合產生后繼微地址
將微指令的下址字段分成兩部分:轉移控制字段BCF和轉移地址字段BAF,當微程序實現轉移時,將BAF送μPC,否則順序執行下一條微指令(μPC+1)。
(五) 指令流水線
1. 指令流水線的基本概念
(1)流水線基本原理
流水線技術是一種顯著提高指令執行速度與效率的技術。方法是:指令取指完成后,不等該指令執行完畢即可取下一條指令。
如果把一條指令的解釋過程進一步細分,例如,把分析、執行兩個過程分成取指、譯碼、執行、訪存和寫回寄存器五個子過程,并用五個子部件分別處理這五個子過程。
這樣只需在上一指令的第一子過程處理完畢進入第二子過程處理時,在第一子部件中就開始對第二條指令的第一子過程進行處理。隨著時間推移,這種重疊操作最后可達到五個子部件同時對五條指令的子過程進行操作。
(2)影響流水線性能的因素
在流水線中會出現三種相關,影響流水線的暢通流動,這三種相關是結構相關、數據相關和控制相關。
結構相關是當多條指令進人流水線后,硬件資源滿足不了指令重疊執行的要求時產生的。
數據相關是指令在流水線中重疊執行時,當后繼指令需要用到前面指令的執行結果時發生的。
控制相關是當流水線遇到分支指令和其他改變PC值的指令時引起的。
(3)流水線性能
流水線的性能通常用吞吐率、加速比和效率3項指標來衡量。
1)吞吐率
在指令流水線中,吞吐率是指單位時間內流水線所完成的指令或輸出結果的數量。
2)加速比
流水線的加速比是指m段流水線的速度與等功能的非流水線的速度之比。
3)效率
效率是指流水線中個功能段的利用率。
2. 超標量和動態流水線的基本概念
(1) 超標量
在超標量的處理器結構中,整數和浮點數運算、裝入、存儲以及條件轉移等普通操作指令可以同時啟動并獨立執行。
超標量流水CPU是指集成了多條流水線結構的CPU,當流水線滿載時,每個時鐘周期可以完成一條以上的指令。
(2) 動態流水線
流水線按功能可分成單功能流水線和多功能流水線兩種。
單功能流水線只完成一種功能。如浮點加法或乘法流水線。
多功能流水線則可完成多種功能,它允許在不同時間,甚至同一時間內在流水線內連接不同功能段的子集來實現不同功能。
流水線按工作方式可分為靜態流水線和動態流水線兩種。
在靜態流水線中,同一時間內它只能以一種功能方式工作。它可以是單功能的,也可以是多功能的。當是多功能流水線時,則從一種功能方式變為另一種功能方式時,必須先排空流水線,然后為另一種功能設置初始條件后方可使用。顯然,不希望這種功能的轉換頻繁的發生,否則將嚴重影響流水線的處理效率。
動態流水線則允許在同一時間內將不同的功能段連接成不同的功能子集(前提條件是功能部件的使用不發生沖突),以完成不同的運算功能。顯然,動態流水線必是多功能流水線,而單功能流水線則必是靜態的。
六、 總線
(一) 總線概述
1. 總線的基本概念
總線是連接各個部件的信息傳輸線,是各個部件共享的傳輸介質,總線上信息的傳送分為串行和并行傳輸。
2. 總線的分類
1)片內總線:芯片內部的總線
2)系統總線:計算機各部件之間 的信息傳輸線
數據總線:雙向 與機器字長、存儲字長有關
地址總線:單向 與存儲地址、 I/O地址有關
控制總線:部分出部分入 控制器控制所有部件
3)通信總線:用于 計算機系統之間 或 計算機系統,與其他系統(如控制儀表、移動通信等)之間的通信
傳輸方式:串行通信總線和并行通信總線
3. 總線的組成及性能指標
總線的結構通常分為單總線結構和多總線結構。
單總線結構是將CPU、主存、I/O設備(通過I/O接口)都掛在一組總線上。
多總線結構的特點是將速度較低的I/O設備從單總線上分離出來,形成主總線與I/O設備總線分開的結構。
總線的性能指標
1)總線寬度:數據總線的根數
2)總線帶寬:數據傳輸率
3)時鐘同步/異步:總線上的數據與時鐘同步的稱為同步總線,與時鐘不同步的稱為異步總線
4)總線復用:一條信號線上分時傳送兩種信號。
5)信號線數:地址總線、數據總線和控制總線三種總線數的總和。
6)總線控制方式:包括突發工作、自動配置、總裁方式、邏輯方式、技術方式等。
7)其他指標:負載能力、電源電壓、總線寬度能否擴展等。
(二) 總線仲裁
由于總線上連接著多個部件,何時由哪個部件發送信息,如何定時,如何防止信息丟失,如何避免多個設備同時發送,如何規定接收部件等一系列問題都需要總線控制器統一管理,主要包括總線的判優控制(仲裁邏輯)和通信控制。
總線仲裁邏輯可分為集中式和分布式兩種,前者將控制邏輯集中在一處(如在CPU中),后者將控制邏輯分散在總線的各個部件之上。
1. 集中仲裁方式
集中仲裁方式有三種:
(1)鏈式查詢
當一個或多個設備同時發出總線使用請求信號BR時,中央仲裁器發出的總線授權信號BG沿著菊花鏈串行的從一個設備依次傳送到下一個設備,到達離出發點最近的發出總線請求的設備之后就不再往下傳。
(2)計數器定時查詢
總線上個設備通過總線請求信號BR,發出請求,中央仲裁器接收到請求信號后,在總線忙信號BS為“0”的情況下,讓計數器開始計數,計數值通過一組地址線發往各設備。每個設備有一個地址判別電路,如果地址線上的計數值與總線請求設備地址一致,則該設備對BS線置“1”,表示該設備獲得了總線使用權,同時中止計數查詢。
(3)獨立請求方式
每個連接到總線的設備都有一組單獨的總線請求信號BRi與總線授權信號BGi。每個設備請求使用總線時,它們各自發出自己的總線請求信號。中央仲裁器中設置了一個專門的排隊電路,由它根據一定的優先次序決定優先響應哪個設備的請求,然后給該設備總線授權信號BGi
2. 分布仲裁方式
同集中式仲裁相比,分布式仲裁不需要中央仲裁器,而是讓各個主設備功能模塊都有自己的仲裁號和仲裁電路。需要使用總線時,各個設備的功能模塊將自己唯一的仲裁號發送到共享的總線上,各自的仲裁電路再將從仲裁總線上獲得的仲裁號和自己的仲裁號相對比,獲勝的仲裁號將保留在仲裁總線上,相應設備的總線請求獲得響應。
(三) 總線操作和定時
目前在總線上的操作主要有以下幾種:
1)讀和寫
讀是將從設備(如存儲器)中的數據讀出并經總線傳輸到主設備(如CPU);寫是主設備到從設備的數據傳輸過程。
2)塊傳送
主設備給出要傳輸的數據塊的起始地址后,就可以利用總線對固定長度的數據一個接一個的讀出或寫入。
3)寫后讀或讀后寫
主設備給出地址一次,就可以進行先寫后讀或者先讀后寫操作,先讀后寫往往用于校驗數據的正確性,先寫后讀往往用于多道程序的對共享存儲資源的保護。
4)廣播和廣集
主設備同時向多個從設備傳輸數據的操作模式稱為廣播。廣集操作和廣播操作正好相反,它將從多個從設備的數據在總線上完成AND或OR操作,常用于檢測多個中斷源。
所謂定時,是指事件出現在總線上的時間關系。總線常用的定時協議有同步定時方式和異步定時方式
1. 同步定時方式
同步定時方式要求所有的模塊由統一的始終脈沖進行操作的控制,各模塊的所有動作均在時鐘周期的開始產生,并且多數動作在一個時鐘周期內完成。
2. 異步定時方式
異步定時方式是一種應答方式或者互鎖機制的定時方式。對于異步操作,操作的發生由主設備或從設備的的特定信號來確定。總線上一個事件的發生取決于前一個事件的發生,雙方互相提供聯絡信號。
(四) 總線標準
總線標準就是系統與各模塊、模塊與模塊之間的一個互連的標準界面。
目前流行的總線標準有以下幾種:
1.系統總線
1)ISA----工業標準體系(Industry Standard Architecture),它是最早出現的微型計算機總線標準,應用在IBM的AT機上。直到現在,微型計算機主板或工作站主板上還保留有少量的ISA擴展槽。
2) EISA----擴展工業標準體系(Extended Industry Standard Architecture),主要用于286微機。EISA對ISA完全兼容。
3) VESA----視頻電子標準協會(Video Electronic Standard Association),是按照局部總線標準設計的一種開放總線,只適合于486的一種過渡標準,已淘汰。
4) PCI----外圍設備互聯(Peripheral Component Interconnection),PCI局部總線是高性能的32位或64位總線,它是專門為高集成度的外圍部件、擴充插板和處理器/存儲器系統而設計的互連機制。
5)AGP----是一種新型的視頻接口的技術標準,專用于連接主存和圖形存儲器。AGP總線寬32位,時鐘頻率66MHz,能以133MHz工作,最高的傳輸速率可達533Mbps。
2.設備總線
1)IDE----集成驅動電子設備(Integrated Drive Electronics),它是一種在主機處理器和磁盤驅動器之間廣泛使用的集成總線。絕大部分PC的硬盤和相當數量的CD-ROM驅動器都是通過這種接口和主機連接的。
2)SCSI----小型計算機系統接口(Small Computer System Interface),現在這種接口不再局限于將各種設備與小型計算機直接連接起來,它已經成為各種計算機(包括工作站、小型機、甚至大型機)的系統接口。
3)RS-232----(Recommended Standard-232C),是由美國電子工業協會EIA(Electronic Industries Association)推薦的一種串行通信總線標準。
4) USB----USB(Universal Serial Bus)接口基于通用的連接技術,可實現外設的簡單快速連接,已達到方便用戶、降低成本、擴展微機連接外設范圍的目的。
七、 輸入輸出(I/O)系統
(一) I/O系統基本概念
除了CPU存儲器兩大模塊之外,計算機硬件系統的第三個關鍵部分就是輸入輸出模塊,也稱輸入輸出系統。輸入輸出系統的發展概況
1)早期
分散連接,CPU 和 I/O設備 串行 工作,程序查詢方式
2)接口模塊和 DMA 階段
總線連接,CPU 和 I/O設備 并行 工作,中斷方式和DMA 方式
3)具有通道結構的階段
4)具有 I/O 處理機的階段
(二) 外部設備
1. 輸入設備:鍵盤、鼠標
(1) 鍵盤
鍵盤是目前應用最普遍的一種輸入設備,與CRT顯示器組成終端設備。
鍵盤是由一組排列成陣列形式的按鍵開關組成的,每按下一個鍵,產生一個相應的字符代碼(每個按鍵的位置碼),然后將它轉換成ASCII碼或其他碼,送主機。目前常用的標準鍵盤有101個鍵,它除了提供通常的ASCII字符以外,還有多個功能鍵(由軟件系統定義功能)、光標控制鍵(上、下、左、右移動等)與編輯鍵(插入或消去字符)等。
(2)鼠標
機械式: 金屬球 電位器,
光電式: 光電轉換器
2. 輸出設備:顯示器、打印機
(1)顯示器
顯示器分類:
按器件分:CRT顯示器;
LED顯示器;
等離子體顯示器。
按顯示內容分:字符顯示器;
圖形顯示器;
圖像顯示器。
按設備功能分:普通顯示器;僅供顯示,也稱監視器。
顯示終端;顯示器和鍵盤組成的輸入輸出設備。
1) 字符顯示:字符發生器
通過字符發生器在CRT上顯示字符。
2) 圖形顯示:主觀圖像
用點、線(直線和曲線)、面(平面和曲面)組合成平面或立體圖形的顯示設備。主要用于計算機輔助設計和計算機輔助制造等。
3) 圖像顯示:客觀圖像
圖像顯示器所顯示的圖像(如遙感圖形、醫學圖像、自然景物、新聞圖片等)通常來自客觀世界,又被稱為客觀圖像。圖像顯示器是把由計算機處理后的圖像(數字圖像)以點陣的形式顯示出來,通常以光柵掃描方式,其分別率可達256x256像素,或者512x512像素,也可以與圖形顯示器兼容,其分別率可達到1024x1024像素,灰度等級可達64至256級。
(2)打印機
打印機分類:
按印字原理分:
打擊式:點陣式打印機;
非打擊式:激光、靜電、噴墨等。
按工作方式分:
串行打印機,逐字打印;
行式打印機,逐行打印。
1)點陣式打印機
點陣針式打印機的印字原理是由打印針(鋼針)印出nxm個點陣組成字符或圖形。西文字符點陣有5x7、7x7、7x9、9x9幾種,漢字點陣有16x16、24x24、32x32、48x48幾種。
打印頭中的鋼針數與打印機的型號有關,有7針、9針,也有雙列14(2x7)針或雙列24(2x12)針。
2) 激光打印機
激光打印機采用了激光技術和照相技術,印字的質量最好,在各個計算機系統中被廣泛采用。
激光打印機完成打印操作的基本工作過程大致是:充電→曝光→顯影→轉印→分離→定影→放電、清潔。
3) 噴墨打印機
噴墨打印機是串行非打擊式打印機,印字原理是將墨水噴射到普通打印紙上。若采用紅、綠、藍三色噴墨頭,便可實現彩色打印。
噴墨打印機按照噴墨方式分為連續式和隨機式兩大類。連續噴射方式是給墨水加壓,使墨水流通過噴嘴連續噴射而粒子化。隨機式是指墨水只有在打印需要時才噴射,所以又稱為按需打印式。目前,隨機式噴墨打印機采用的噴墨技術主要有壓電式和氣泡式。
3. 外存儲器:硬盤存儲器、磁盤陣列、光盤存儲器
(1)硬盤存儲器
1)性能指標
<1>存儲密度
道密度 Dt,位密度 Db
<2>存儲容量
C = n × k × s
<3>尋址時間
尋道時間 + 等待時間
輔存的速度=尋址時間+磁頭讀寫時間
<4>數據傳輸率
Dr = Db × V
<5>誤碼率
出錯信息位數與讀出信息的總位數之比。
2)硬磁盤存儲器的類型
<1> 固定磁頭和移動磁頭
固定磁頭的磁盤存儲器,其磁頭位置固定不動,磁盤上的每一個磁道都對應著一個磁頭,盤片也不可更換,其特點是省去了磁頭沿著盤片徑向運動所需的尋道時間,存取速度快,只要磁頭進入工作狀態即可以進行讀寫操作。
移動磁頭的磁盤存儲器在存取數據時,磁頭在盤面上作徑向運動,這類存儲器可以由一個盤片組成,也可以由多個盤片裝在一個同心的主軸上,每個紀錄面各有一個磁頭。
<2> 可換盤和固定盤
可換盤磁盤存儲器是指盤片可以脫機保存,這種磁盤可以在互為兼容的磁盤存儲器之間交換數據,便于擴大存儲容量。
固定盤磁盤存儲器是指磁盤不能從驅動器上取下,更換時要把整個頭盤組合體一起更換。
3)硬磁盤存儲器的磁道記錄格式
一個具有n個盤片的磁盤組,可將n個面上的同一半徑的磁道看成一個圓柱面,這些磁道存儲的信息稱為柱面信息。盤面又分為若干個扇區,每條磁道有被分割為若干個扇段,數據在盤片上的布局如圖所示:
因此,尋制用的磁盤地址應該由頭號、磁道號、盤面號、扇段號等字段組成,也可將扇段號用扇區號代替。
(2)磁盤陣列
1)廉價冗余磁盤陣列(RAID-Redundant Arrays of Inexpensive Disk)
其原理是將并行處理原理引入磁盤系統。它采用低成本的小溫盤,使多臺磁盤構成同步化的磁盤陣列,數據展開存儲在多臺磁盤上,提高了數據傳輸的帶寬,并利用冗余技術提高可靠性,類似于存儲器中的多體交叉技術。
磁盤陣列還具有容量大、數據傳輸速率高、功耗低、體積小、成本低和便于維護等優點,其發展前途十分光明。同步磁盤陣列的關鍵技術是對多臺磁盤機進行同步控制,包括采用緩沖器使數據同步。
2)RAID分類
工業界公認的標準有6級別,分別為RAID0~RAID5:
RAID-0級采用無冗余無校驗的數據分塊技術。
RAID-1級采用磁盤鏡像陣列技術。
RAID-2級采用海明糾錯碼的磁盤陣列,通過增加校驗磁盤實現單糾錯雙檢錯功能。
RAID-3級是采用奇偶校驗冗余的磁盤陣列,它也采用數據位交叉,陣列中只用一個校驗盤。
RAID-4級是一種獨立傳送磁盤陣列,它采用數據塊交叉,用一個校驗盤。
RAID-5也是一種獨立傳送磁盤陣列,它采用數據塊交叉和分布的冗余校驗,將數據和校驗位都分布在各磁盤中,沒有專門的奇偶校驗驅動器。
(3)光盤存儲器
(1)光盤存儲器
光盤存儲器利用激光束在介質表面上燒蝕凹坑存儲信息。根據激光束及其反射光的強弱不同,可以完成信息的讀和寫。
光盤存儲器稱光盤,是目前廣泛使用的一種外存儲器,更是多媒體計算機不可缺少的設備。它以介質材料的光學性質(如反射率、偏振方向)的變化來表示所存儲信息的“1”和“0”。其突出的優點是,激光束可以聚焦到1μm以下,記錄密度可達645Mb/i2。
光盤的種類根據光盤的可讀寫性分為只讀光盤、寫一次/多次讀光盤和可重寫光盤。
(2)CD-ROM光盤
<1>光盤的信息記錄方式
光盤的信息記錄方式以凹坑方式永久性存儲。當激光束聚焦點照射在兩個凹坑之間的盤面上時大部分光將返回,而照在凹坑上時將發生衍射,反射率低,將反射光的光強變化在轉換成電信號,即可讀出記錄信息。
<2>光盤的扇區數據結構
光道上劃分出一個個的扇區,這是光盤最小的可尋址單元。扇區結構如圖所示:
由圖可見,光盤扇區分為4個區域。2個全0字節和10個全1字節組成的同步(SYNC)區,標志著扇區的開始。4字節的扇區標示(ID)區用于說明此扇區的地址和工作模式。光盤的扇區標志地址以分(MN)、秒(SC)和分數秒(FR,1/75s)時間值為地址。
(三) I/O接口(I/O控制器)
1. I/O接口的功能和基本結構
1)I/O接口的基本功能是:
(1)實現設備的選擇
(2)實現數據緩沖達到速度匹配
(3)實現數據串并格式轉換
(4)實現電平轉換
(5)傳送控制命令
(6)反映設備的狀態(“忙”、“就緒”、“中斷請求”)
2)接口的基本組成
IO接口的基本組成
2. I/O端口及其編址
CPU采用2種方法訪問I/O設備,也稱2種不同的I/O端口編址方法:
(1)專門的I/O指令
例如,指令:IN完成輸入,指令OUT完成輸出操作。指令的地址碼字段指出輸入輸出設備的設備代碼。
由相應的控制信號(如M/IO#)來區分CPU執行的是什么指令。
(2)利用訪問存儲器指令完成I/O功能
從主存的地址空間中分出一部分地址碼作為I/O的設備代碼,當訪問到這些地址時,表示被訪的不是主存儲器,而是I/O設備端口。
沒有控制信號區分存儲器和端口,采用的是將該段地址譯碼輸出連接到外設的端口。
(四) I/O方式
1. 程序查詢方式
程序查詢方式的核心問題是每時每刻需要不斷查詢I/O設備是否準備好。CPU不斷地詢問外設是否準備好:如果準備好,CPU執行IO操作;否則,CPU一直等待。CPU大部分時間處于等待狀態,利用率不高。
2. 程序中斷方式
(1)中斷的基本概念
計算機在執行程序的過程中,當出現異常情況或者特殊情況時,CPU停止當前程序的運行,轉向對這些異常情況或者特殊情況的處理,處理結束之后再返回到現行程序的間斷處繼續運行,該過程就是中斷。
(2)中斷響應過程
當多個中斷源向CPU提出中斷請求時,CPU在任何一個時刻只能接受一個中斷源的請求,所以,當多個中斷源同時請求時,CPU必須對各個中斷源的請求進行排隊,且只能接受級別最高的中斷源的請求,不允許低級別的中斷源中斷正在運行的中斷服務程序。
每個設備都配備一個中斷請求觸發器和中斷屏蔽觸發器,當中斷請求觸發器為“1”時,表示該設備向CPU提出中斷請求,如果中斷屏蔽觸發器為“1”時,表示該設備被屏蔽,即封鎖其中斷源的請求。
當多個中斷源同時向CPU提出請求,CPU需要對這些中斷源的請求進行排隊,也稱為中斷判優,有兩種判優的方法:
1)查詢法
由測試程序按一定優先排隊次序檢查各個設備的“中斷觸發器”(或稱為中斷標志),當遇到第一個“1”標志時,即找到了優先進行處理的中斷源,通常取出其設備碼,根據設備碼轉入相應的中斷服務程序。
2)串行排隊鏈法
由硬件組成一個串行的優先鏈,稱作排隊鏈。
一旦CPU確定接受某個中斷源的請求,就需要執行該設備的中斷服務程序,因此需要找到中斷服務程序的入口地址。入口地址的尋找可以用軟件或硬件的方法實現。硬件向量法就是通過向量地址來尋找設備的中斷服務程序的入口地址。中斷向量地址形成部件可以通過向接受請求的中斷源發送中斷響應信號,然后由被響應的設備回送設備碼,根據設備碼來產生中斷向量地址。
(3)中斷處理過程
中斷處理過程可分以下幾個步驟:
1)關中斷
進入不可再次響應中斷的狀態,由硬件自動實現。因為接下去要保存斷點,保存現場。在保存現場過程中,即使有更高級的中斷源申請中斷,CPU也不應該響應;否則,如果現場保存不完整,在中斷服務程序結束之后,也就不能正確地恢復現場并 繼續執行現行程序。
2)保存斷點和現場
為了在中斷處理結束后能正確地返回到中斷點,在響應中斷時,必須把當前的程序計數器PC中的內容(即斷點)保存起來。
現場信息一般指的是程序狀態字,中斷屏蔽寄存器和CPU中各寄存器的內容。
3)判別中斷源,轉向中斷服務程序
在多個中斷源同時請求中斷的情況下,本次實際響應的只能是優先權最高的那個中斷源。所以,需進一步判別中斷源,并轉入相應的中斷服務程序入口。
4)開中斷
因為接下去就要執行中斷服務程序,開中斷將允許更高級中斷請求得到響應,實現中斷嵌套。
5)執行中’斷服務程序
不同中斷源的中斷服務程序是不同的,實際有效的中斷處理工作是在此程序段中實現的。
6)退出中斷
在退出時,又應進入不可中斷狀態,即關中斷,恢復現場、恢復斷點,然后開中斷,返回原程序執行。
(4)多重中斷和中斷屏蔽的概念
多重中斷是指在處理某一個中斷過程又發生了新的中斷請求,從而中斷該服務程序的執行,又轉去進行新的中斷處理。這種重疊處理中斷的現象又稱為中斷嵌套。
中斷屏蔽
當產生中斷請求后,用程序方式有選擇地封鎖部分中斷,而允許其余部分中斷仍得到響立,稱為中斷屏蔽。
實現方法是為每個中斷源設置一個中斷屏蔽觸發器來屏蔽該設備的中斷請求。具體說,用程序方法將該觸發器置“1”,則對應的設備中斷被封鎖,若將其置“0”,才允許該設備的中斷請求得到響應。由各設備的中斷屏蔽觸發器組成中斷屏蔽寄存器。
3. DMA方式
DMA是I/O設備與主存儲器之間由硬件組成的直接數據通路,用于高速I/O設備與主存之間的成組數據傳送。
數據傳送是在DMA控制器控制下進行的,由DMA控制器給出當前正在傳送的數據字的主存地址,并統計傳送數據的個數以確定一組數據的傳送是否已結束。在主存中要開辟連續地址的專用緩沖器,用來提供或接收傳送的數據。在數據傳送前和結束后要通過程序或中斷方式對緩沖器和DMA控制器進行預處理和后處理。
(1)DMA控制器的組成;
1)主存地址寄存器(MAR)
寄存器初始值為主存緩沖區的首地址。
2)外圍設備地址寄存器(ADR )
該寄存器存放I/O設備的設備碼,具體內容取決于I/O設備的數據格式和地址字編址方式。
3)字數計數器(WC)
該計數器對傳送數據的總字數進行統計 。
4)控制與狀態寄存器(CSR)
該寄存器用來存放控制字和狀態字。
5)數據緩沖寄存器(DBR)
該寄存器用來暫存I/O設備與主存傳送的數據。
6)中斷機構
當字計數器溢出(全“0”)時,表示一批數據交換完成,由“溢出信號”通過中斷機構向CPU提出中斷請求,請求CPU作DMA操作后處理。
(2)DMA傳送過程
1)DMA預處理
在進行DMA數據傳送之前要用程序做一些必要的準備工作。先由CPU執行幾條輸入輸出指令,測試設備狀態,向DMA控制器的設備地址寄存器中送入設備地址并啟動設備,在主存地址寄存器中送入交換數據的主存起始地址,在數據字數寄存器中送入交換的數據個數。在這些工作完成之后,CPU繼續執行原來的程序。
2)DMA控制I/O設備與主存之間的數據交換
I/O設備啟動后,若為輸入數據,則要進行以下操作:
<1>從輸入介質讀入一個字到數據緩沖寄存器DBR中。
<2>向CPU發DMA請求,在取得總線控制權后,將DBR中的數據送人主存的數據寄存器。
<3>將DMA中的MAR內容送主存的地址寄存器,啟動寫操作,將數據寫入主存。
<4>將WC內容減1,將MAR的內容加1,給出下一個字的地址。
<5>判斷WC是否為“0”,若不是,說明還有數據需要傳送,檢查無錯后準備下一字的輸入。若WC為0,表明一組數據已傳送完畢,此時應置結束標志,向CPU發中斷請求。
3) CPU中斷原程序進行后處理
若需繼續交換數據,則又要對DMA控制器進行初始化;若不需交換數據,則停止外設;若為出錯,則轉錯誤診斷及處理程序。
(3)DMA三種工作方式:
1)CPU暫停方式
主機響應DMA請求后,讓出存儲總線,直到一組數據傳送完畢后,DMA控制器才把總線控制權交還給CPU。
2)CPU周期竊取方式
DMA控制器與主存儲器之間傳送一個數據,占用(竊取)一個或幾個CPU周期,即CPU暫停工作一個或幾個周期,然后繼續執行程序。
3)CPU和DMA交替工作方式
當CPU的工作周期比主存訪問時間長時,使用這種方式。這種方式不需要總線使用權的申請、建立和歸還過程。將CPU周期分成C1和C2兩個周期,其中C1專門用于給DMA訪問主存,C2提供給CPU訪問主存。總線使用權通過C1和C2分別控制。CPU和DMA各自有自己的訪問地址寄存器、數據寄存器和讀寫信號。
4. 通道方式
I/O通道是計算機系統中代替CPU管理控制外設的獨立部件,是一種能執行有限I/O指令集合–通道命令的I/O處理機。
在通道控制方式下,一個主機可以連接幾個通道。每個通道又可連接多臺I/O設備,這些設備可具有不同速度,可以是不同種類。這種輸入輸出系統增強了主機與通道操作的并行能力以及各通道之間、同一通道的各設備之間的并行操作能力。同時也為用戶提供了增減外圍設備的靈活性。
采用通道方式組織輸入輸出系統,多使用主機-通道-設備控制器- I/0設備四級連接方式。通道通過執行通道程序實施對I/O系統的統一管理和控制,因此,它是完成輸入輸出操作的主要部件。在CPU啟動通道后,通道自動地去內存取出通道指令并執行指令。直到數據交換過程結束向CPU發出中斷請求,進行通道結束處理工作。
I/O通道的種類:
根據多臺設備共享通道的不同情況,可將通道分為三類:字節多路通道、選擇通道和數組多路通道。
(1)字節多路通道(低速、分時)
字節多路通道(multiplexor channel)是一種簡單的共享通道,在時間分割的基礎上,服務于多臺低速和中速面向字符的外圍設備。
字節多路通道包括多個子通道,每個子通道服務于一個設備控制器,可以獨立地執行通直指令。每個子通道都需要有字符緩沖寄存器、I/O請求標志/控制寄存器、主存地址寄存器和字節計數寄存器。而所有子通道的控制部分是公共的,由所有子通道所共享。通常,每個通道的有關指令和參量存放在主存固定單元中。當通道在邏輯上與某一設備連通時,將這些指令和參量取出來,送入公共控制部分的寄存器中使用。
字節多路通道要求每種設備分時占用一個很短的時間片,不同的設備在各自分得的時間片內與通道建立傳輸連接,實現數據的傳送。
(2)選擇通道(高速、獨占)
選擇通道每次只能從所連接的設備中選擇一臺I/O設備的通道程序,此刻該通道程序獨占了整個通道。當它與主存交換完數據后,才能轉去執行另一個設備的通道程序,為另一臺設備服務。因此,連接在選擇通道上的若干設備,只能依次使用通道與主存傳送數據。數據傳送是以成組(數據塊)方式進行,每次傳送一個數據塊,因此,傳送速率很高。選擇通道多適合于快速設備(磁盤),這些設備相鄰字之間的傳送空閑時間極短。
(3)數組多路通道(綜合)
數組多路通道把字節多路通道和選擇通道的特點結合起來。它有多個子通道,既可以執行多路通道程序,像字節多路通道那樣、所有子通道分時共享總通道;又可以用選擇通道那樣的方式傳送數據。
數組多路通道具有多路并行操作能力,又具有很高的數據傳送速率,贏得了吞吐率的較大提高。它的缺點是增加了控制的復雜性。
總結
以上是生活随笔為你收集整理的【计算机组成原理】重点总结(详版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(1750):前端调试值之cal
- 下一篇: 前端学习(1892)vue之电商管理系统