计算机组成原理知识点
計(jì)算機(jī)體系結(jié)構(gòu)(Computer Architecture)主要研究硬件和軟件功能的劃分,確定硬件和軟件的界面,哪部分功能由硬件系統(tǒng)來完成,哪部分功能由軟件系統(tǒng)來完成。
計(jì)算機(jī)組成原理(Computer Organization)是依據(jù)計(jì)算機(jī)體系結(jié)構(gòu),在確定且分配了硬件子系統(tǒng)的概念結(jié)構(gòu)和功能特性的基礎(chǔ)上,設(shè)計(jì)計(jì)算機(jī)各部件的具體組成,以及它們之間的連接關(guān)系,實(shí)現(xiàn)機(jī)器指令級(jí)的各種功能和特性,這點(diǎn)上說計(jì)算機(jī)組成原理是計(jì)算機(jī)體系結(jié)構(gòu)的邏輯實(shí)現(xiàn)。
計(jì)算機(jī)實(shí)現(xiàn)(Computer Implementation)是計(jì)算機(jī)組成的物理實(shí)現(xiàn),包括中央處理器、主存儲(chǔ)器、輸入輸出接口和設(shè)備的物理結(jié)構(gòu),所選用的半導(dǎo)體器件的集成度和速度,器件、模塊、插件、底板的劃分,電源、冷卻、裝配等技術(shù),生產(chǎn)工藝和系統(tǒng)調(diào)試等各種問題。總之,就是將完成邏輯設(shè)計(jì)的計(jì)算機(jī)組成方案轉(zhuǎn)換成真實(shí)的計(jì)算機(jī),也就是將滿足設(shè)計(jì)、運(yùn)行、價(jià)格等各項(xiàng)要求的計(jì)算機(jī)系統(tǒng)真正地制作并調(diào)試出來。
計(jì)算機(jī)組成原理
【考查目標(biāo)】????????
1. 理解單處理器計(jì)算機(jī)系統(tǒng)中各部件的內(nèi)部工作原理,組成結(jié)構(gòu)以及相互連接方式,具有完整的計(jì)算機(jī)系統(tǒng)的整機(jī)概念.
2. 理解計(jì)算機(jī)系統(tǒng)層次化結(jié)構(gòu)概念,熟悉硬件與軟件間的界面,掌握指令集體系結(jié)構(gòu)的基本知識(shí)和基本實(shí)現(xiàn)方法
3. 能夠運(yùn)用計(jì)算機(jī)組成的基本原理和基本方法,對有關(guān)計(jì)算機(jī)硬件系統(tǒng)中的理論和實(shí)際問題進(jìn)行計(jì)算,分析,并能對一些基本部件進(jìn)行簡單設(shè)計(jì).
一, 計(jì)算機(jī)系統(tǒng)概述
(一) 計(jì)算機(jī)發(fā)展歷程
第一臺(tái)電子計(jì)算機(jī)ENIAC誕生于1946年美國賓夕法尼亞大學(xué).ENIAC用了18000電子管,1500繼電器,重30噸,占地170m2,耗電140kw,每秒計(jì)算5000次加法.馮?諾依曼(VanNeumann)首次提出存儲(chǔ)程序概念,將數(shù)據(jù)和程序一起放在存儲(chǔ)器,使編程更加方便.50年來,雖然對馮?諾依曼機(jī)進(jìn)行很多改革,但結(jié)構(gòu)變化不大,仍稱馮?諾依曼機(jī).
一般把計(jì)算機(jī)的發(fā)展分為五個(gè)階段:
| 發(fā)展階段 | 時(shí)間 | 硬件技術(shù) | 速度/(次/秒) |
| 第一代 | 1946-1957 | 電子管計(jì)算機(jī)時(shí)代 | 40 000 |
| 第二代 | 1958-1964 | 晶體管計(jì)算機(jī)時(shí)代 | 200 000 |
| 第三代 | 1965-1971 | 中小規(guī)模集成電路計(jì)算機(jī)時(shí)代 | 1 000 000 |
| 第四代 | 1972-1977 | 大規(guī)模集成電路計(jì)算機(jī)時(shí)代 | 10 000 000 |
| 第五代 | 1978-現(xiàn)在 | 超大規(guī)模集成電路計(jì)算機(jī)時(shí)代 | 100 000 000 |
?? ENIAC(Electronic Numerical IntegratorAnd Computer)電子數(shù)字積分機(jī)和計(jì)算機(jī)
??EDVAC(Electronic Discrete Variable Automatic Computer)電子離散變量計(jì)算機(jī)??
組成原理是講硬件結(jié)構(gòu)的 系統(tǒng)結(jié)構(gòu)是講結(jié)構(gòu)設(shè)計(jì)的
摩爾定律??? 微芯片上的集成管數(shù)目每3年翻兩番.處理器的處理速度每18個(gè)月增長一倍.
??每代芯片的成本大約為前一代芯片成本的兩倍
??新摩爾定律? 全球入網(wǎng)量每6個(gè)月翻一番.
??數(shù)學(xué)家馮·諾依曼(von Neumann)在研究EDVAC機(jī)時(shí)提出了“儲(chǔ)存程序”的概念.以此為基礎(chǔ)的各類計(jì)算機(jī)通稱為馮·諾依曼機(jī).它有如下特點(diǎn):
①計(jì)算機(jī)由運(yùn)算器,控制器,存儲(chǔ)器,輸入和輸出五部分組成
②指令和數(shù)據(jù)以同等的地位存放于存儲(chǔ)器內(nèi),并可按地址尋訪
③指令和數(shù)據(jù)均用二進(jìn)制數(shù)表示
④指令由操作碼和地址碼組成,操作碼用來表示操作的性質(zhì),地址碼用來表示操作數(shù)在存儲(chǔ)器中的位置
⑤指令在存儲(chǔ)器內(nèi)按順序存放
⑥機(jī)器以運(yùn)算器為中心,輸入輸出設(shè)備與存儲(chǔ)器間的數(shù)據(jù)傳送通過運(yùn)算器完成
圖中各部件的功能
·運(yùn)算器用來完成算術(shù)運(yùn)算和邏輯運(yùn)算并將的中間結(jié)果暫存在運(yùn)算器內(nèi)
·存儲(chǔ)器用來存放數(shù)據(jù)和程序
·控制器用來控制,指揮程序和數(shù)據(jù)的輸入,運(yùn)行以及處理運(yùn)行結(jié)果
·輸入設(shè)備用來將人們熟悉的信息轉(zhuǎn)換為機(jī)器識(shí)別的信息
·輸出設(shè)備將機(jī)器運(yùn)算結(jié)果轉(zhuǎn)為人熟悉的信息形式
?
?
運(yùn)算器最少包括3個(gè)寄存器(現(xiàn)代計(jì)算機(jī)內(nèi)部往往設(shè)有通用寄存器)和一個(gè)算術(shù)邏輯單元(ALU Arithmetic Logic Unit).其中ACC(Accumulator)為累加器,MQ(Multiplier-QuotientRegister)為乘商寄存器,X為操作數(shù)寄存器,這3個(gè)寄存器在完成不同運(yùn)算時(shí),說存放的操作數(shù)類別也各不相同.
計(jì)算機(jī)的主要硬件指標(biāo)
(4.a) 主機(jī)完成一條指令的過程——以取數(shù)指令為例
(4.b) 主機(jī)完成一條指令的過程——以存數(shù)指令為例
(二) 計(jì)算機(jī)系統(tǒng)層次結(jié)構(gòu)
1. 計(jì)算機(jī)硬件的基本組成
計(jì)算機(jī)硬件主要指計(jì)算機(jī)的實(shí)體部分,通常有運(yùn)算器,控制器,存儲(chǔ)器,輸入和輸出五部分.
CPU是指將運(yùn)算器和控制器集成到一個(gè)電路芯片中.
2. 計(jì)算機(jī)軟件的分類
計(jì)算機(jī)軟件按照面向?qū)ο蟮牟煌煞謨深?
系統(tǒng)軟件:用于管理整個(gè)計(jì)算機(jī)系統(tǒng),合理分配系統(tǒng)資源,確保計(jì)算機(jī)正常高效地運(yùn)行,這類軟件面向系統(tǒng).(包括:標(biāo)準(zhǔn)程序庫,語言處理程序,OS,服務(wù)程序,數(shù)據(jù)庫管理系統(tǒng),網(wǎng)絡(luò)軟件)
應(yīng)用軟件:是面向用戶根據(jù)用戶的特殊要求編制的應(yīng)用程序,這類軟件通常實(shí)現(xiàn)用戶的某類要求.
3. 計(jì)算機(jī)的工作過程
(1)計(jì)算機(jī)的工作過程就是執(zhí)行指令的過程
??? 指令由操作碼和操作數(shù)組成:
| 操作碼 | 地址碼 |
??操作碼指明本指令完成的操作
地址碼指明本指令的操作對象
(2)指令的存儲(chǔ)???? 指令按照存儲(chǔ)器的地址順序連續(xù)的存放在存儲(chǔ)器中.
(3)指令的讀取??? 為了紀(jì)錄程序的執(zhí)行過程,需要一個(gè)記錄讀取指令地址的寄存器,稱為指令地址寄存器,或者程序計(jì)數(shù)器.指令的讀取就可以根據(jù)程序計(jì)數(shù)器所指出的指令地址來決定讀取的指令,由于指令通常按照地址增加的順序存放,故此,每次讀取一條指令之后,程序計(jì)數(shù)器加一就為讀取下一條指令做好準(zhǔn)備.
(4)執(zhí)行指令的過程?? 在控制器的控制下,完成以下三個(gè)階段任務(wù):
1)取指令階段?? ???按照程序計(jì)數(shù)器取出指令,程序計(jì)數(shù)器加一
2)指令譯碼階段 ???分析操作碼,決定操作內(nèi)容,并準(zhǔn)備操作數(shù)
3)指令執(zhí)行階段 ???執(zhí)行操作碼所指定內(nèi)容
(三) 計(jì)算機(jī)性能指標(biāo)
1. 吞吐量,響應(yīng)時(shí)間
(1) 吞吐量:單位時(shí)間內(nèi)的數(shù)據(jù)輸出數(shù)量.
(2) 響應(yīng)時(shí)間:從事件開始到事件結(jié)束的時(shí)間,也稱執(zhí)行時(shí)間.
2. CPU時(shí)鐘周期,主頻,CPI,CPU執(zhí)行時(shí)間
(1) CPU時(shí)鐘周期:機(jī)器主頻的倒數(shù),TC
(2)主頻:CPU工作主時(shí)鐘的頻率,機(jī)器主頻Rc
(3)CPI:執(zhí)行一條指令所需要的平均時(shí)鐘周期
(4)CPU執(zhí)行時(shí)間:
TCPU=In×CPI×TC
?? In執(zhí)行程序中指令的總數(shù)
?? CPI執(zhí)行每條指令所需的平均時(shí)鐘周期數(shù)
?? TC時(shí)鐘周期時(shí)間的長度
3. MIPS,MFLOPS
(1)MIPS:(Million Instructions Per Second)
2)不同數(shù)制間的數(shù)據(jù)轉(zhuǎn)換
(1)二,八,十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)
?利用上面講到的公式: (N)2=∑Di?2i?,(N)8=∑Di?8i, (N)16=∑Di?16i,進(jìn)行計(jì)算.
(2)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)
通常要對一個(gè)數(shù)的整數(shù)部分和小數(shù)部分分別進(jìn)行處理,各自得出結(jié)果后再合并.
u?對整數(shù)部分,一般采用除2取余數(shù)法,其規(guī)則如下:
將十進(jìn)制數(shù)除以2,所得余數(shù)(0或1)即為對應(yīng)二進(jìn)制數(shù)最低位的值.然后對上次所得商除以2,所得余數(shù)即為二進(jìn)制數(shù)次低位的值,如此進(jìn)行下去,直到商等于0為止,最后得的余數(shù)是所求二進(jìn)制數(shù)最高位的值.
u?對小數(shù)部分,一般用乘2取整數(shù)法,其規(guī)則如下:
將十進(jìn)制數(shù)乘以2,所得乘積的整數(shù)部分即為對應(yīng)二進(jìn)制小數(shù)最高位的值,然后對所余數(shù)的小數(shù)部分部分乘以2,所得乘積的整數(shù)部分為次高位的值,如此進(jìn)行下去,直到乘積的小數(shù)部分為0,或結(jié)果已滿足所需精度要求為止.
(3)二進(jìn)制數(shù),八進(jìn)制數(shù)和十六進(jìn)制數(shù)之間的轉(zhuǎn)換
八進(jìn)制數(shù)和十六進(jìn)制數(shù)是從二進(jìn)制數(shù)演變而來的:
由3位二進(jìn)制數(shù)組成1位八進(jìn)制數(shù);
由4位二進(jìn)制數(shù)組成1位十六進(jìn)制數(shù).
對一個(gè)兼有整數(shù)和小數(shù)部分的數(shù)以小數(shù)點(diǎn)為界,小數(shù)點(diǎn)前后的數(shù)分別分組進(jìn)行處理,不足的位數(shù)用0補(bǔ)足.
對整數(shù)部分將0補(bǔ)在數(shù)的左側(cè),對小數(shù)部分將0補(bǔ)在數(shù)的右側(cè).這樣數(shù)值不會(huì)發(fā)生差錯(cuò).
2. 真值和機(jī)器數(shù)
真值:數(shù)據(jù)的數(shù)值通常以正(+)負(fù)(-)號(hào)后跟絕對值來表示,稱之為“真值”.????
機(jī)器數(shù):在計(jì)算機(jī)中正負(fù)號(hào)也需要數(shù)字化,一般用0表示正號(hào),1表示負(fù)號(hào).把符號(hào)數(shù)字化的數(shù)成為機(jī)器數(shù).
3. BCD碼(Binary Coded Decimal以二進(jìn)制編碼的十進(jìn)制碼)
在計(jì)算機(jī)中采用4位二進(jìn)制碼對每個(gè)十進(jìn)制數(shù)位進(jìn)行編碼.4位二進(jìn)制碼有16種不同的組合,從中選出10種來表示十進(jìn)制數(shù)位的0~9,用0000,0001,…,1001分別表示0,1,…,9,每個(gè)數(shù)位內(nèi)部滿足二進(jìn)制規(guī)則,而數(shù)位之間滿足十進(jìn)制規(guī)則,故稱這種編碼為“以二進(jìn)制編碼的十進(jìn)制(binary coded decima1,簡稱BCD)碼”.
在計(jì)算機(jī)內(nèi)部實(shí)現(xiàn)BCD碼算術(shù)運(yùn)算,要對運(yùn)算結(jié)果進(jìn)行修正,對加法運(yùn)算的修正規(guī)則是:
? 如果兩個(gè)一位BCD碼相加之和小于或等于(1001)2,即(9)10,不需要修正;
? 如相加之和大于或等于(1010)2,或者產(chǎn)生進(jìn)位,要進(jìn)行加6修正,如果有進(jìn)位,要向高位進(jìn)位.
4. 字符與字符串
在計(jì)算機(jī)中要對字符進(jìn)行識(shí)別和處理,必須通過編碼的方法,按照一定的規(guī)則將字符用一組二進(jìn)制數(shù)編碼表示.字符的編碼方式有多種,常見的編碼有ASCII碼,EBCDIC碼等.
1)ASCII碼(American StandardCode for Information Interchange 美國信息交換標(biāo)準(zhǔn)碼)
ASCII碼用7位二進(jìn)制表示一個(gè)字符,總共128個(gè)字符元素,包括10個(gè)十進(jìn)制數(shù)字(0-9),52個(gè)英文字母(A-Z和a-z),34專用符號(hào)和32控制符號(hào).
2)EBCDIC碼為Extended Binary CodedDecimal Interchange Code的簡稱,它采用8位來表示一個(gè)字符.
3)字符串的存放
向量存儲(chǔ)法:字符串存儲(chǔ)時(shí),字符串中的所有元素在物理上是鄰接的.
串表存儲(chǔ)法:字符串的每個(gè)字符代碼后面設(shè)置一個(gè)鏈接字,用于指出下一個(gè)字符的存儲(chǔ)單元的地址.
5. 校驗(yàn)碼CheckDigit
數(shù)據(jù)校驗(yàn)碼是一種常用的帶有發(fā)現(xiàn)某些錯(cuò)誤或自動(dòng)改錯(cuò)能力的數(shù)據(jù)編碼方法.其實(shí)現(xiàn)原理,是加進(jìn)一些冗余碼,使合法數(shù)據(jù)編碼出現(xiàn)某些錯(cuò)誤時(shí),就成為非法編碼.
? ??這樣,可以通過檢測編碼的合法性來達(dá)到發(fā)現(xiàn)錯(cuò)誤的目的.合理地安排非法編碼數(shù)量和編碼規(guī)則,可以提高發(fā)現(xiàn)錯(cuò)誤的能力,或達(dá)到自動(dòng)改正錯(cuò)誤的目的.
碼距:碼距根據(jù)任意兩個(gè)合法碼之間至少有幾個(gè)二進(jìn)制位不相同而確定的,僅有一位不同,稱其碼距為1.
1)奇偶校驗(yàn)碼(Parity Bit)WIKI
??? (開銷最小,能發(fā)現(xiàn)數(shù)據(jù)代碼中一位出錯(cuò)情況的編碼,常用于存儲(chǔ)器讀寫檢查或ASCII字符或其它類型的信息傳輸?shù)臋z查)P216
它的實(shí)現(xiàn)原理,是使碼距由1增加到2.若編碼中有1位二進(jìn)制數(shù)出錯(cuò)了,即由1變成0,或者由0變成1.這樣出錯(cuò)的編碼就成為非法編碼,就可以知道出現(xiàn)了錯(cuò)誤.在原有的編碼之上再增加一位校驗(yàn)位,原編碼n位,形成新的編碼為n+1 位.增加的方法有2種:
?? 奇校驗(yàn):增加位的0或1要保證整個(gè)編碼中1的個(gè)數(shù)為奇數(shù)個(gè).
?? 偶校驗(yàn):增加位的0或1要保證整個(gè)編碼中1的個(gè)數(shù)為偶數(shù)個(gè).
2)海明校驗(yàn)碼(Hamming Code)P100
實(shí)現(xiàn)原理,在數(shù)據(jù)中加入幾個(gè)校驗(yàn)位,并把數(shù)據(jù)的每一個(gè)二進(jìn)制位分配在幾個(gè)奇偶校驗(yàn)組中.當(dāng)某一位出錯(cuò)就會(huì)引起有關(guān)的幾個(gè)校驗(yàn)組的值發(fā)生變化,這不但可以發(fā)現(xiàn)出錯(cuò),還能指出是哪一位出錯(cuò),為自動(dòng)糾錯(cuò)提供了依據(jù).
? 假設(shè)校驗(yàn)位的個(gè)數(shù)為r,則它能表示2r個(gè)信息,用其中的一個(gè)信息指出“沒有錯(cuò)誤”,其余2r-1個(gè)信息指出錯(cuò)誤發(fā)生在哪一位.然而錯(cuò)誤也可能發(fā)生在校驗(yàn)位,因此只有
k=2r-1-r個(gè)信息能用于糾正被傳送數(shù)據(jù)的位數(shù),也就是說要滿足關(guān)系:
2r k+r+1
3)CRC校驗(yàn)碼(Cyclic Redundancy Check 循環(huán)冗余校驗(yàn))P144
CRC校驗(yàn)碼一般是指k位信息之后拼接r位校驗(yàn)碼.關(guān)鍵問題是如何從k位信息方便地得到r位校驗(yàn)碼,以如何從位k+r信息碼判斷是否出錯(cuò).
? 將帶編碼的k位有效信息位組表達(dá)為多項(xiàng)式:
?
式Ci中為0或1.
若將信息位左移r位,則可表示為多項(xiàng)式M(x).xr.這樣就可以空出r位,以便拼接r位校驗(yàn)位.
? CRC碼是用多項(xiàng)式M(x).xr除以生成多項(xiàng)式G(x)所得的余數(shù)作為校驗(yàn)碼的.為了得到r位余數(shù),G(x)必須是r+1位.
設(shè)所得的余數(shù)表達(dá)式為R(x),商為Q(x).將余數(shù)拼接在信息位組左移r位空出的r位上,就構(gòu)成了CRC碼,這個(gè)碼的可用多項(xiàng)式表達(dá)為:
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)表示的數(shù)碼除盡.
將收到的CRC碼用約定的生成多項(xiàng)式G(x)去除,如果無錯(cuò),余數(shù)應(yīng)為0,有某一位出錯(cuò),余數(shù)不為0.?
(二) 定點(diǎn)數(shù)的表示和運(yùn)算
1. 定點(diǎn)數(shù)的表示
1)無符號(hào)數(shù)的表示
? ??無符號(hào)數(shù)就是指正整數(shù),機(jī)器字長的全部位數(shù)均用來表示數(shù)值的大小,相當(dāng)于數(shù)的絕對值.
?? ?對于字長為n+1位的無符號(hào)數(shù)的表示范圍為: 0 -1
2)帶符號(hào)數(shù)的表示 (真值范圍-n-1 n)
? ??帶符號(hào)數(shù)是指在計(jì)算機(jī)中將數(shù)的符號(hào)數(shù)碼化.在計(jì)算機(jī)中,一般規(guī)定二進(jìn)制的最高位為符號(hào)位,最高位為“0”表示該數(shù)為正,為“1”表示該數(shù)為負(fù).這種在機(jī)器中使用符號(hào)位也被數(shù)碼化的數(shù)稱為機(jī)器數(shù).
?? ?根據(jù)符號(hào)位和數(shù)值位的編碼方法不同,機(jī)器數(shù)分為原碼,補(bǔ)碼和反碼.
(1)原碼表示法
機(jī)器數(shù)的最高位為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù),數(shù)值跟隨其后,并以絕對值形式給出.這是與真值最接近的一種表示形式.
????? 原碼的定義:
(2)補(bǔ)碼表示法
機(jī)器數(shù)的最高位為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù),其定義如下:
(3)反碼表示法
?機(jī)器數(shù)的最高位為符號(hào),0表示正數(shù),1表示負(fù)數(shù).反碼的定義:
?
| ? | 原碼 | 補(bǔ)碼 | 反碼 |
| 整數(shù) |
|
???????????? (mod ) |
???????????????? (mod( )) |
| 小數(shù) |
|
???????????? (mod 2) |
???????????????? (mod(2- )) |
| 0 | =0.0000 =1.0000 | =0.0000 | =0.0000 =1.1111 |
| ? | ? | 負(fù)數(shù)原碼求反+1 | 負(fù)數(shù)每位求反 |
| 移碼? ?移碼表示中零也是唯一的 真值的移碼和補(bǔ)碼僅差一個(gè)符號(hào)位.若將補(bǔ)碼的符號(hào)位由0改為1或從1改為0即可得到真值的移碼 乘法運(yùn)算可用移碼和加法來實(shí)現(xiàn),兩個(gè)n位數(shù)相乘,總共要進(jìn)行n次加法運(yùn)算和n次移位運(yùn)算 | |||
三種機(jī)器數(shù)的特點(diǎn)可以歸納為:
·三種機(jī)器數(shù)的最高位均為符號(hào)位.符號(hào)位和數(shù)值位之間可用“.”(對于小數(shù))或“,”(對于整數(shù))隔開
·當(dāng)真值為正時(shí),原碼,補(bǔ)碼和反碼的表示形式均相同,即符號(hào)位用“0”表示,數(shù)值部分與真值部分相同
·當(dāng)真值為負(fù)時(shí),原碼,補(bǔ)碼和反碼的表示形式不同,其它符號(hào)位都用“1”表示,而數(shù)值部分有這樣的關(guān)系,即補(bǔ)碼是原碼的“求反加1”,反碼是原碼的“每位求反”.
2. 定點(diǎn)數(shù)的運(yùn)算
1)定點(diǎn)數(shù)的位移運(yùn)算
左移,絕對值擴(kuò)大;右移,絕對值縮小.
算術(shù)移位規(guī)則
符號(hào)位不變
| ? | 碼制 | 添補(bǔ)代碼 |
| 正數(shù) | ? | 0 |
| 負(fù)數(shù) | 原 | 0 |
| 補(bǔ) | 右移添0 | |
| 左移添1 | ||
| 反 | 1 |
算術(shù)移位和邏輯移位的區(qū)別:
算術(shù)移位:帶符號(hào)數(shù)移位;
邏輯移位:無符號(hào)數(shù)移位;
2)原碼定點(diǎn)數(shù)的加/減運(yùn)算;
對原碼表示的兩個(gè)操作數(shù)進(jìn)行加減運(yùn)算時(shí),計(jì)算機(jī)的實(shí)際操作是加還是減,不僅取決指令中的操作碼,還取決于兩個(gè)操作數(shù)的符號(hào).而且運(yùn)算結(jié)果的符號(hào)判斷也較復(fù)雜.
例如,加法指令指示做(+A)+(-B)由于一操作數(shù)為負(fù),實(shí)際操作是做減法(+A)-(+B),結(jié)果符號(hào)與絕對值大的符號(hào)相同.同理,在減法指令中指示做(+A)-(-B)實(shí)際操作做加法(+A)+(+B),結(jié)果與被減數(shù)符號(hào)相同.由于原碼加減法比較繁瑣,相應(yīng)地需要由復(fù)雜的硬件邏輯才能實(shí)現(xiàn),因此在計(jì)算機(jī)中很少被采用.
3)補(bǔ)碼定點(diǎn)數(shù)的加/減運(yùn)算;
(1) 加法
整數(shù) [A]補(bǔ) + [B]補(bǔ)= [A+B]補(bǔ)(mod2n+1)
小數(shù) [A]補(bǔ) + [B]補(bǔ)= [A+B]補(bǔ)(mod2)
(2) 減法
整數(shù) [A]補(bǔ) - [B]補(bǔ)= [A+(-B)]補(bǔ)=[A]補(bǔ) + [-B]補(bǔ)(mod2n+1)
小數(shù) [A]補(bǔ) - [B]補(bǔ)= [A+(-B)]補(bǔ)=[A]補(bǔ) + [-B]補(bǔ)(mod2)
無需符號(hào)判定,連同符號(hào)位一起相加,符號(hào)位產(chǎn)生的進(jìn)位自然丟掉
4)定點(diǎn)數(shù)的乘/除運(yùn)算
(1)一位乘法
<1>原碼定點(diǎn)一位乘法??
兩個(gè)原碼數(shù)相乘,其乘積的符號(hào)為相乘兩數(shù)的異或值,數(shù)值兩數(shù)絕對值之積.
設(shè)??? [X]原=X0 X1 X2 …Xn
???? [Y]原=Y0 Y1 Y2 …Yn
???? [X·Y]原=[X]原·[Y]原= (X0⊕Y0)∣(X1 X2 …Xn)·(Y1 Y2 …Yn)
符號(hào)∣表示把符號(hào)位和數(shù)值鄰接起來.
| 原碼兩位乘和原碼一位乘比較 | ||
| ? | 原碼一位乘 | 原碼兩位乘 |
| 符號(hào)位 | ||
| 操作數(shù) | 絕對值 | 絕對值的補(bǔ)碼 |
| 移位 | 邏輯右移 | 算術(shù)右移 |
| 移位次數(shù) | n | |
| 最多加法次數(shù) | n | |
<2>定點(diǎn)補(bǔ)碼一位乘法
有的機(jī)器為方便加減法運(yùn)算,數(shù)據(jù)以補(bǔ)碼形式存放.乘法直接用補(bǔ)碼進(jìn)行,減少轉(zhuǎn)換次數(shù).具體規(guī)則如下:
? [X·Y]補(bǔ)=[X]補(bǔ)(-Y0 + 0. Y1 Y2… Yn )
<3>布斯法
“布斯公式”: 在乘數(shù)Yn后添加Yn+1=0.按照Yn+1 ,Yn相鄰兩位的三種情況,其運(yùn)算規(guī)則如下:
(1) Yn+1 ,Yn =0( Yn+1 Yn =00或11),部分積加0,右移1位;
(2) Yn+1 ,Yn =1( Yn+1 Yn =10),部分積加[X]補(bǔ),右移1位;
(3) Yn+1 ,Yn =-1( Yn+1 Yn =01),部分積加[-X]補(bǔ),右移1位???????????? 最后一步不移位.
(2)兩位乘法
<1>原碼兩位乘法,因此實(shí)際操作用Yi-1,Yi,C三位來控制,運(yùn)算規(guī)則如下
| 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>補(bǔ)碼兩位乘法
根據(jù)前述的布斯算法,將兩步合并成一步,即可推導(dǎo)出補(bǔ)碼兩位乘的公式.
| Yn-i-1? Yn-i??? Yn-i+1 | [Pi+2]補(bǔ) |
| ??? 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]補(bǔ),? 右移2位?????? ??????? +[X]補(bǔ),? 右移2位?????? ??????? +2[X]補(bǔ), 右移2位?????? ??????? -2[X]補(bǔ), 右移2位?????? ???? ???-[X]補(bǔ),? 右移2位?????? ????? ??-[X]補(bǔ),? 右移2位?????? ???????? +0, ???右移2位?????????? |
求部分積的次數(shù)和右移操作的控制問題.
??? 當(dāng)乘數(shù)由1位符號(hào)位和以n(奇數(shù))位數(shù)據(jù)位組成時(shí),求部分積的次數(shù)為(1+n)/2,而且最后一次的右移操作只右移一位.
?? 若數(shù)值位本身為偶數(shù)n,可采用下述兩種方法之一:
①可在乘數(shù)的最后一位補(bǔ)一個(gè)0,乘數(shù)的數(shù)據(jù)位就成為奇數(shù),而且其值不變,求部分積的次數(shù)為1+(n+l)/2,即n/2+1,最后一次右移操作也只右移一位.
②乘數(shù)增加一位符號(hào)位,使總位數(shù)仍為偶數(shù),此時(shí)求部分積的次數(shù)為n/2+1,而且最后一次不再執(zhí)行右移操作.
(3)補(bǔ)碼除法
| 筆算除法和機(jī)器除法的比較 | |
| 筆算除法 | 機(jī)器除法 |
| 商符單獨(dú)處理 | 符號(hào)位異或形成 |
| 心算上商 | |
| 余數(shù) 不動(dòng) 低位補(bǔ)“0” 減右移一位 的除數(shù) | 余數(shù) 左移一位 低位補(bǔ)“0” 減 除數(shù) |
| 2 倍字長加法器 | 1 倍字長加法器 |
| 上商位置 不固定 | 在寄存器 最末位上商 |
<1>定點(diǎn)原碼一位除法
1>恢復(fù)余數(shù)法
被除數(shù)(余數(shù))減去除數(shù),如果為0或者為正值時(shí),上商為1,不恢復(fù)余數(shù);如果結(jié)果為負(fù),上商為0,再將除數(shù)加到余數(shù)中,恢復(fù)余數(shù).余數(shù)左移1位.
2>加減交替法
當(dāng)余數(shù)為正時(shí),商上1,求下一位商的辦法,余數(shù)左移一位,再減去除數(shù);當(dāng)余數(shù)為負(fù)時(shí),商上0,求下一位商的辦法,余數(shù)左移一位,再加上除數(shù).
<2>定點(diǎn)補(bǔ)碼一位除法(加減交替法)
1〉如果被除數(shù)與除數(shù)同號(hào),用被除數(shù)減去除數(shù);若兩數(shù)異號(hào),被除數(shù)加上除數(shù).如果所得余數(shù)與除數(shù)同號(hào)商上1,否則,商上0,該商為結(jié)果的符號(hào)位.
2〉求商的數(shù)值部分.如果上次商上1,將除數(shù)左移一位后減去除數(shù);如果上次商上0,將余數(shù)左移一位后加除數(shù).然后判斷本次操作后的余數(shù),如果余數(shù)與除數(shù)同號(hào)商上1,如果余數(shù)與除數(shù)異號(hào)商上0.如此重復(fù)執(zhí)行n-1次(設(shè)數(shù)值部分n位).
3〉商的最后一位一般采用恒置1的辦法,并省略了最低+1的操作.此時(shí)最大的誤差為2-n.
5)溢出概念和判別方法
當(dāng)運(yùn)算結(jié)果超出機(jī)器數(shù)所能表示的范圍時(shí),稱為溢出.顯然,兩個(gè)異號(hào)數(shù)相加或兩個(gè)同號(hào)數(shù)相減,其結(jié)果是不會(huì)溢出的.僅當(dāng)兩個(gè)同號(hào)數(shù)相加或者兩個(gè)異號(hào)數(shù)相減時(shí),才有可能發(fā)溢出的情況,一旦溢出,運(yùn)算結(jié)果就不正確了,因此必須將溢出的情況檢查出來.判別方法有三種:
1〉當(dāng)符號(hào)相同的兩數(shù)相加時(shí),如果結(jié)果的符號(hào)與加數(shù)(或被加數(shù))不相同,則為溢出.
2〉當(dāng)任意符號(hào)兩數(shù)相加時(shí),如果C=Cf,運(yùn)算結(jié)果正確,其中C為數(shù)值最高位的進(jìn)位,Cf為符號(hào)位的進(jìn)位.如果C≠Cf ,則為溢出,所以溢出條件=C⊕Cf .
3〉采用雙符號(hào)fs2fs1.正數(shù)的雙符號(hào)位為00,負(fù)數(shù)的雙符號(hào)位為11.符號(hào)位參與運(yùn)算,當(dāng)結(jié)果的兩個(gè)符號(hào)位甲和乙不相同時(shí),為溢出.所以溢出條件= fs2⊕fs1 ,或者溢出條件= fs2fs1 + fs2fs1
(三) 浮點(diǎn)數(shù)的表示和運(yùn)算
1. 浮點(diǎn)數(shù)的表示
1)浮點(diǎn)數(shù)的表示范圍;
浮點(diǎn)數(shù)是指小數(shù)點(diǎn)位置可浮動(dòng)的數(shù)據(jù),通常以下式表示:
???????? N=M×RE
其中,N為浮點(diǎn)數(shù),M(Mantissa)為尾數(shù)(可正可負(fù)),E(Exponent)為階碼(可正可負(fù)),R(Radix)稱為“階的基數(shù)(底)”,而且R為一常數(shù),一般為2,8或16.在一臺(tái)計(jì)算機(jī)中,所有數(shù)據(jù)的R都是相同的,于是不需要在每個(gè)數(shù)據(jù)中表示出來.因此,浮點(diǎn)數(shù)的機(jī)內(nèi)表示一般采用以下形式:
浮點(diǎn)數(shù)的機(jī)內(nèi)表示一般采用以下形式:
| Ms | E | M |
?? ???????1位???????????n+1位???????????? m位
Ms是尾數(shù)的符號(hào)位,設(shè)置在最高位上.
E為階碼(移碼),有n+1位,一般為整數(shù),其中有一位符號(hào)位,設(shè)置在E的最高位上,用來表正階或負(fù)階.
M為尾數(shù)(原碼),有m位,由Ms和M組成一個(gè)定點(diǎn)小數(shù).Ms=0,表示正號(hào),Ms=1,表示負(fù).為了保證數(shù)據(jù)精度屬數(shù)通常用規(guī)格化形式表示:當(dāng)R=2,且尾數(shù)值不為0時(shí),其絕對值大于或等于(0.5)10.對非規(guī)格化浮點(diǎn)數(shù),通過將尾數(shù)左移或右移,并修改階碼值使之滿足規(guī)格化要求.
浮點(diǎn)數(shù)的表示范圍以通式N=M×RE設(shè)浮點(diǎn)數(shù)階碼的數(shù)值位取m位,尾數(shù)的數(shù)值位取n位
2)IEEE754標(biāo)準(zhǔn)(Institute of Electrical andElectronics Engineers美國電氣和電子工程協(xié)會(huì))
| S | 階碼(含階符) | 尾??? 數(shù) |
數(shù)符???????????? 小數(shù)點(diǎn)位置
根據(jù)IEEE 754國際標(biāo)準(zhǔn),常用的浮點(diǎn)數(shù)有三種格式:
| ? | 符號(hào)位S | 階碼 | 尾數(shù) | 總位數(shù) |
| 短實(shí)數(shù) | 1 | 8 | 23 | 32 |
| 長實(shí)數(shù) | 1 | 11 | 52 | 64 |
| 臨時(shí)實(shí)數(shù) | 1 | 15 | 64 | 80 |
單精度格式32位,階碼為8位,尾數(shù)為23位.另有一位符號(hào)位S,處在最高位.
由于IEEE754標(biāo)準(zhǔn)約定在小數(shù)點(diǎn)左部有一位隱含位,從而實(shí)際有效位數(shù)為24位.這樣使得尾數(shù)的有效值變?yōu)?.M .
例如,最小為x1.0…0,,最大為x1.1…1.規(guī)格化表示.故小數(shù)點(diǎn)左邊的位橫為1,可省去.??
階碼部分采用移碼表示,移碼值127,1到254經(jīng)移碼為-126到+127.
| S(1位) | E(8位) | M(23位) | N(共32位) |
| 符號(hào)位 | 0 | 0 | 0 |
| 符號(hào)位 | 0 | 不等于0 | (-1)S·2-126·(0.M) 為非規(guī)格化數(shù) |
| 符號(hào)位 | 1到254之間 | - | (-1)S·2E-127·(1.M) 為規(guī)格化數(shù) |
| 符號(hào)位 | 255 | 不等于0 | NaN(非數(shù)值) |
| 符號(hào)位 | 255 | 0 | 無窮大 |
0 有了精確的表示,無窮大也明確表示.對于絕對值較小的數(shù),可以采用非規(guī)格化數(shù)表示,減少下溢精度損失.非規(guī)格化數(shù)的隱含位是0,不是1.
2. 浮點(diǎn)數(shù)的加/減運(yùn)算
加減法執(zhí)行下述五步完成運(yùn)算:
1)“對階”操作????比較兩浮點(diǎn)數(shù)階碼的大小,求出其差ΔE,保留其大值E,E=max(Ex, Ey).當(dāng)ΔE≠0時(shí),將階碼小的尾數(shù)右移ΔE位,并將其階碼加上ΔE,使兩數(shù)的階碼值相等.
2)尾數(shù)加減運(yùn)算???? 執(zhí)行對階之后,兩尾數(shù)進(jìn)行加減操作.
3)規(guī)格化操作?????? 規(guī)格化的目的是使得尾數(shù)部分的絕對值盡可能以最大值的形式出現(xiàn).
4)舍入????????????在執(zhí)行右規(guī)或者對階時(shí),尾數(shù)的低位會(huì)被移掉,使數(shù)值的精度受到影響,常用“0”舍“1”入法.當(dāng)移掉的部分最高位為1時(shí),在尾數(shù)的末尾加1,如果加1后又使得尾數(shù)溢? 出,則要再進(jìn)行一次右規(guī).
5)檢查階碼是否溢出 階碼溢出表示浮點(diǎn)數(shù)溢出.在規(guī)格化和舍入時(shí)都可能發(fā)生溢出,若階碼正常,加/減運(yùn)算正常結(jié)束.若階碼下溢,則設(shè)置機(jī)器運(yùn)算結(jié)果為機(jī)器零,若上溢,則設(shè)置溢出標(biāo)志.
定點(diǎn)數(shù)和浮點(diǎn)數(shù)可從如下幾個(gè)方面進(jìn)行比較
①當(dāng)浮點(diǎn)機(jī)和定點(diǎn)機(jī)中的位數(shù)相同時(shí),浮點(diǎn)數(shù)的表示范圍比定點(diǎn)數(shù)大得多
②當(dāng)浮點(diǎn)數(shù)位規(guī)格化數(shù)時(shí),其相對絕對遠(yuǎn)比定點(diǎn)數(shù)高
③浮點(diǎn)數(shù)運(yùn)算要分階碼部分和尾數(shù)部分,而且運(yùn)算結(jié)果都要求規(guī)格化,故浮點(diǎn)運(yùn)算步驟比定點(diǎn)運(yùn)算的步驟多,運(yùn)算速度比定點(diǎn)運(yùn)算的低,運(yùn)算線路比定點(diǎn)運(yùn)算的復(fù)雜
④在溢出的判斷方法上,浮點(diǎn)數(shù)是對規(guī)格化的階碼進(jìn)行判斷,而定點(diǎn)數(shù)是對數(shù)值本身進(jìn)行判斷
總之,浮點(diǎn)數(shù)在數(shù)的表示范圍,數(shù)的精度,溢出處理和程序編程方面(不取比例因子)均優(yōu)于定點(diǎn)數(shù).但在運(yùn)算規(guī)則即硬件成本方面又不如定點(diǎn)數(shù)
?
?
(四) 算術(shù)邏輯單元ALU
1.? 串行加法器和并行加法器
1)串行進(jìn)位加法器
并行加法器可以同時(shí)對數(shù)據(jù)的各位進(jìn)行相加,一般用n個(gè)全加器來實(shí)現(xiàn)2個(gè)操作數(shù)的各位同時(shí)向加.其操作數(shù)的各位是同時(shí)提供的,由于進(jìn)位是逐位形成,低位運(yùn)算所產(chǎn)生的進(jìn)位會(huì)影響高位的運(yùn)算結(jié)果.
串行進(jìn)位(也稱波形進(jìn)位)加法器,邏輯電路比較簡單,但是最高位的加法運(yùn)算,一定要等到所有低位的加法完成之后才能進(jìn)行,低位的進(jìn)位要逐步的傳遞到高位,逐級(jí)產(chǎn)生進(jìn)位,因此運(yùn)算速度比較慢.
2)并行進(jìn)位加法器
為了提高運(yùn)算速度,減少延遲時(shí)間,可以采用并行進(jìn)位法,也叫提前進(jìn)位或先行進(jìn)位.
全加器中,輸入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
進(jìn)位產(chǎn)生函數(shù):Gi = Ai Bi
進(jìn)位傳遞函數(shù):Pi = Ai+Bi
Ci = Gi + Pi Ci-1
C4 = G4 + P4G3 + P4P3G2 +P4P3P2G1 + P4P3P2P1C0
并行進(jìn)位加法器的運(yùn)算速度很快,形成最高進(jìn)位輸出的延遲時(shí)間很短,但是以增加硬件邏輯線路為代價(jià).對于長字長的加法器,往往將加法器分成若干組,在組內(nèi)采用并行進(jìn)位,組間則采用串行進(jìn)位或并行進(jìn)位,由此形成多種進(jìn)位結(jié)構(gòu).
(1)單級(jí)先行進(jìn)位
單級(jí)先行進(jìn)位方式將n位字長分為若干組,每組內(nèi)采用并行進(jìn)位方式,組與組之間冊采用串行進(jìn)位方式.
(2)多級(jí)先行進(jìn)位
多級(jí)先行進(jìn)位在組內(nèi)和組間都采用先行進(jìn)位方式.
16位單級(jí)先行進(jìn)位加法器
2. 算術(shù)邏輯單元ALU的功能和機(jī)構(gòu)
ALU部件是運(yùn)算器中的主要組成部分,又稱多功能函數(shù)發(fā)生器,主要用于完成各種算術(shù)運(yùn)算和邏輯運(yùn)算.
ALU的算術(shù)運(yùn)算部件包含加法器,減法器,乘法器,除法器,增量器(+1),減量器(-1),BCD碼運(yùn)算器等組件.
ALU的主要工作是根據(jù)CPU指令要求執(zhí)行各種指定運(yùn)算,如加法,減法,乘法,除法,比較,邏輯移位等操作.
通用寄存器組是一組存取速度最快的存儲(chǔ)器,用于保存參加運(yùn)算的操作數(shù)和中間結(jié)果.訪問寄存器無需高速緩存,也不需要運(yùn)行總線周期,因此指令的執(zhí)行速度很快.幾乎所有的指令都要將寄存器指定為一個(gè)操作數(shù),有些指令還要求將操作數(shù)存放在專用的寄存器中.
專用寄存器通常用于表示CPU所處于某種系統(tǒng)狀態(tài),ALU中有兩個(gè)重要的狀態(tài)寄存器:指令指針寄存器IP(即程序計(jì)數(shù)器PC)和標(biāo)志寄存器FLAGS.
?
三, 存儲(chǔ)器層次機(jī)構(gòu)
(一) 存儲(chǔ)器的分類
| 提高存儲(chǔ)器帶寬 1縮短儲(chǔ)存周期 2增加存儲(chǔ)字長,使每個(gè)周期可讀/寫更多的二進(jìn)制數(shù) 3增加存儲(chǔ)體 | 內(nèi)存 地址線n,數(shù)據(jù)線數(shù)k 芯片的容量為2k×k位 |
| 20位的地址可以訪問1MB的存儲(chǔ)空間,32位的地址可以訪問4GB的內(nèi)存空間,64位可以訪問1800萬TB | |
靜態(tài)RAM和動(dòng)態(tài)RAM之間的比較。目前,動(dòng)態(tài)RAM的應(yīng)用比靜態(tài)RAM要廣泛的多:
①???同樣大小的芯片中,動(dòng)態(tài)的RAM的集成度遠(yuǎn)高于靜態(tài)RAM,DRAM的基本單元電路為一個(gè)MOS管,SRAM的基本單元電路可為4~6個(gè)MOS管
②???DRAM行、列按先后順序輸送,減少了芯片引腳,封裝尺寸也減少
③???DRAM的功耗比SRAM小
④???DRAM的價(jià)格比SRAM的價(jià)格便宜
DRAM也有缺點(diǎn)
①???由于使用動(dòng)態(tài)元件(電容),因此它的速度比SRAM低
②???DRAM需再生,需配置再生電路,也消耗一部分功率.通常容量不大的Cache大多用SRAM實(shí)現(xiàn)存儲(chǔ)器與CPU連接
| 對比項(xiàng)目 | SRAM | DRAM |
| 儲(chǔ)存信息 | 觸發(fā)器 | 電容 |
| 破壞性讀出 | 非 | 是 |
| 需要刷新 | 非 | 是 |
| 行列地址 | 同時(shí)送 | 分兩次 |
| 運(yùn)行速度 | 快 | 慢 |
| 集成度 | 低 | 高 |
| 發(fā)熱量 | 大 | 小 |
| 存儲(chǔ)成本 | 高 | 低 |
?(二) 存儲(chǔ)器的層次化結(jié)構(gòu)
存儲(chǔ)器有3個(gè)重要的指標(biāo):速度,容量和每位價(jià)格,一般來說,速度越快,位價(jià)越高;容量越大,位價(jià)越低,容量大,速度就越低.上述三者的關(guān)系用下圖表示:
存儲(chǔ)系統(tǒng)層次結(jié)構(gòu)主要體現(xiàn)在緩存-主存-輔存這兩個(gè)存儲(chǔ)層次上,如下圖所示:
?
緩存-主存層次主要解決CPU和主存速度不匹配的問題??
主存-輔存層次主要解決存儲(chǔ)系統(tǒng)的容量問題
從CPU角度來看緩存-主存層次的速度接近于緩存,高于主存;其容量和價(jià)位卻接近于主存,這就從速度和成本的矛盾中獲得了理想的解決辦法.
主存-輔存層次從整體分析,其速度接近于主存,容量接近于輔存,平均價(jià)位也接近于低速的、廉價(jià)的存儲(chǔ)價(jià)位,這又解決了速度、容量、成本這三者之間的矛盾.
現(xiàn)代計(jì)算機(jī)系統(tǒng)幾乎都具有這兩個(gè)存儲(chǔ)層次,構(gòu)成了緩存、主存、輔存三級(jí)存儲(chǔ)系統(tǒng).
?(三) 半導(dǎo)體隨機(jī)存取存儲(chǔ)器
1. SRAM存儲(chǔ)器的工作原理
SRAM靜態(tài)存儲(chǔ)單元的每個(gè)存儲(chǔ)位需要四到六個(gè)晶體管組成.比較典型的是六管存儲(chǔ)單元,即一個(gè)存儲(chǔ)單元存儲(chǔ)一位信息"0"或"1".靜態(tài)存儲(chǔ)單元保存的信息比較穩(wěn)定,信息為非破壞性讀出,故不需要重寫或者刷新操作;另一方面,其結(jié)構(gòu)簡單,可靠性高,速度較快,但其占用元件較多,占硅片面積大,且功耗大,所以集成度不高.
靜態(tài)隨機(jī)存儲(chǔ)單元
2. DRAM存儲(chǔ)器的工作原理
常見的DRAM存儲(chǔ)單元有三管式和單管式兩種,它們的共特點(diǎn)是靠電容存儲(chǔ)電荷的原理來寄存信息.若電容上存有足夠的電荷表示“”,電容上無電荷表示"0".電容上的電荷一般只能維持1-2ms,因此即使電源不掉電,電容上的電荷會(huì)自動(dòng)消失.因此,為保證信息的不丟失,必須在2ms之內(nèi)就要對存儲(chǔ)單元進(jìn)行一次恢復(fù)操作,這個(gè)過程稱為再生或者刷新.與SRAM相比,DRAM具有集成度更高,功耗低等特點(diǎn),目前被各類計(jì)算機(jī)廣泛使用.
?
?
?
?
?
(四) 只讀存儲(chǔ)器
前面介紹的DRAM和SRAM均為可任意讀/寫的隨機(jī)存儲(chǔ)器,當(dāng)?shù)綦姇r(shí),所存儲(chǔ)的內(nèi)容消失,所以是易失性存儲(chǔ)器.只讀存儲(chǔ)器,即使停電,存儲(chǔ)內(nèi)容也不丟失.根據(jù)半導(dǎo)體制造工藝不同,分為ROM,PROM,EPROM,E2ROM和Flash Memory
1. 只讀存儲(chǔ)器(ROM)
?? ?掩模式ROM由芯片制造商在制造時(shí)寫入內(nèi)容,以后只能讀而不能再寫入.其基本存儲(chǔ)原理是以元件的“有/無”來表示該存儲(chǔ)單元的信息(“1”或“0”),可以用二極管或晶體管作為元件,顯而易見,其存儲(chǔ)內(nèi)容是不會(huì)改變的.
2. 可編程序的只讀存儲(chǔ)器(PROM)
?? ?PROM可由用戶根據(jù)自己的需要來確定ROM中的內(nèi)容,常見的熔絲式PROM是以熔絲的通和斷開來表示所存的信息為“1”或“0”.剛出廠的產(chǎn)品,其熔絲是全部接通的.根據(jù)需要斷開某些單元的熔絲(寫入).顯而易見,斷開后的熔絲是不能再接通了,因而一次性寫入的存儲(chǔ)器.掉電后不會(huì)影響其所存儲(chǔ)的內(nèi)容.
3. 可擦可編程序的只讀存儲(chǔ)器(EPROM)
為了能修改ROM中的內(nèi)容,出現(xiàn)了EPROM.利用浮動(dòng)?xùn)臡OS電路保存信息,信息改寫用紫外線照射即可擦除.
4. 可電擦可編程序只讀存儲(chǔ)器(E2PROM)
?? ?E2PROM的編程序原理與EPROM相同,擦除原理完全不同,重復(fù)改寫次數(shù)有限制(因氧化層被磨損),一般10萬次.
?? ?其讀寫操作可按每個(gè)位或每個(gè)字節(jié)進(jìn)行,類似SRAM,但每字節(jié)的寫入周期要幾毫秒,比SRAM長得多.E2PROM每個(gè)存儲(chǔ)單元采則2個(gè)晶體管.其柵極氧化層比EPROM薄,因此具有電擦除功能.
5. 快除讀寫存儲(chǔ)器(Flash? Memory) F1ash Memory是在EPROM與E2PROM基礎(chǔ)上發(fā)展起來的,其讀寫過程和E2PROM不同,F1ash Memory的讀寫操作一般是以塊為單位.
(五) 主存儲(chǔ)器與CPU的連接
1個(gè)存儲(chǔ)器的芯片的容量是有限的,它在字?jǐn)?shù)或字長方面與實(shí)際存儲(chǔ)器的要求都有很大差距,所以需要在字向和位向進(jìn)行擴(kuò)充才能滿足需要.根據(jù)存儲(chǔ)器所需的存儲(chǔ)容量和所提供的芯片的實(shí)際容量,可以計(jì)算出總的芯片數(shù).一個(gè)存儲(chǔ)器的容量為M×N位,若使用L×K位存儲(chǔ)器芯片,那么,這個(gè)存儲(chǔ)器共需要M/L×N/K存儲(chǔ)器芯片.
1.位擴(kuò)展
?? ?位擴(kuò)展指的是用多個(gè)存儲(chǔ)器器件對字長進(jìn)行擴(kuò)充.位擴(kuò)展的連接方式是將多片存儲(chǔ)器的地址,片選己,讀寫控制端R/W可相應(yīng)并聯(lián),數(shù)據(jù)端分別引出.
2)字?jǐn)U展
??? 字?jǐn)U展指的是增加存儲(chǔ)器中字的數(shù)量.
??? 靜態(tài)存儲(chǔ)器進(jìn)行字?jǐn)U展時(shí),將各芯片的地址線,數(shù)據(jù)線,讀寫控制線相應(yīng)并聯(lián),而由片選信號(hào)來區(qū)分各芯片的地址范圍.
3)字位擴(kuò)展
???? 實(shí)際存儲(chǔ)器往往需要字向和位向同時(shí)擴(kuò)充.
(六) 雙口RAM和多模塊存儲(chǔ)器
1.雙端口存儲(chǔ)器
雙端口存儲(chǔ)器是一種具有兩個(gè)單獨(dú)的讀/寫端口及控制電路的存儲(chǔ)器,通過增加一個(gè)讀/寫端口,雙端口存儲(chǔ)器擴(kuò)展了存儲(chǔ)器的的信息交換能力.
2.多模塊存儲(chǔ)器
為了解決CPU與主存儲(chǔ)器之間的速度匹配問題,在高速存儲(chǔ)器中,普遍采用并行主存系統(tǒng).即利用類似存儲(chǔ)器擴(kuò)展(位擴(kuò)展,字?jǐn)U展,字位擴(kuò)展)的方法,將n個(gè)字長為W位的存儲(chǔ)器并行連接,構(gòu)建一個(gè)更大的存儲(chǔ)器.并行主存有單體多字方式,多體并行方式和多體交叉方式.
(七) 高速緩沖存儲(chǔ)器(Cache實(shí)際上,這是來自法文的一個(gè)單詞,意思是隱蔽之所或藏東西的地方)
概述
1. 問題的提出
避免 CPU “空等” 現(xiàn)象
CPU 和主存(DRAM)的速度差異
1. 程序訪問的局部性
從大量的統(tǒng)計(jì)中得到的一個(gè)規(guī)律是,程序中對于存儲(chǔ)空間90%的訪問局限于存儲(chǔ)空間的10%的區(qū)域中,而另外10%的訪問則分布在存儲(chǔ)空間的其余90%的區(qū)域中.這就是通常說的局部性原理.訪存的局部性規(guī)律包括兩個(gè)方面:
時(shí)間局部性:如果一個(gè)存儲(chǔ)項(xiàng)被訪問,則可能該項(xiàng)會(huì)很快被再次訪問.
空間局部性:如果一個(gè)存儲(chǔ)項(xiàng)被訪問,則該項(xiàng)及其鄰近的項(xiàng)也可能很快被訪問.
2. Cache的基本工作原理
?
Cache通常由兩部分組成,塊表和快速存儲(chǔ)器.其工作原理是:處理機(jī)按主存地址訪問存儲(chǔ)器,存儲(chǔ)器地址的高段通過主存-Cache地址映象機(jī)構(gòu)借助查表判定該地址的存儲(chǔ)單元是否在Cache中,如果在,則Cache命中,按Cache地址訪問Cache.否則,Cache不命中,則需要訪問主存,并從主存中調(diào)入相應(yīng)數(shù)據(jù)塊到Cache中,若Cache中已寫滿,則要按某種算法將Cache中的某一塊替換出去,并修改有關(guān)的地址映象關(guān)系.
從這個(gè)工作原理我們可以看出,它已經(jīng)涉及到了兩個(gè)問題.首先是定位,然后是替換的問題.
Cache的存在對程序員是透明的.其地址變換和數(shù)據(jù)塊的替換算法均由硬件實(shí)現(xiàn).通常Cache被集成到CPU內(nèi)以提高訪問速度.
3. Cache和主存之間的映射方式
因?yàn)樘幚頇C(jī)訪問都是按主存地址訪問的,而Cache的空間遠(yuǎn)小于主存,如何知道這一次的訪問內(nèi)容是不是在Cache中,在Cache中的哪一個(gè)位置呢? 這就需要地址映象,即把主存中的地址映射成Cache中的地址.讓Cache中一個(gè)存儲(chǔ)塊(空間)與主存中若干塊相對應(yīng),如此,訪問一個(gè)主存地址時(shí),就可以對應(yīng)地知道在cache中哪一個(gè)地址了.地址映象的方法有三種:直接映象,全相聯(lián)映象和組相聯(lián)映象.
直接映象就是將主存地址映象到Cache中的一個(gè)指定地址.任何時(shí)候,主存中存儲(chǔ)單元的數(shù)據(jù)只能調(diào)入到Cache中的一個(gè)位置,這是固定的,若這個(gè)位置已有數(shù)據(jù),則產(chǎn)生沖突,原來的塊將無條件地被替換出去.
全相聯(lián)映象就是任何主存地址可映象到任何Cache地址的方式.在這種方式下,主存中存儲(chǔ)單元的數(shù)據(jù)可調(diào)入到Cache中的任意位置.只有在Cache中的塊全部裝滿后才會(huì)出現(xiàn)塊沖突.
組相聯(lián)映象指的是將存儲(chǔ)空間的頁面分成若干組,各組之間的直接映象,而組內(nèi)各塊之間則是全相聯(lián)映象.
4. Cache中主存塊的替換算法
在直接映象方式下,不存在塊替換的算法,因?yàn)槊恳粔K的位置映象是固定的,需要哪一塊數(shù)據(jù)就可直接確定地將該塊數(shù)據(jù)調(diào)入上層確定位置.而其他兩種映象就存在替換策略的問題,就是要選擇替換到哪一個(gè)Cache塊.即替換算法.
| ? | 思想 | 優(yōu)點(diǎn) | 缺點(diǎn) |
| 隨機(jī)算法RAND | 用軟的或硬的隨機(jī)數(shù)產(chǎn)生器產(chǎn)生上層中要被替換的頁號(hào) | 簡單,易于實(shí)現(xiàn) | 沒有利用上層存儲(chǔ)器使用的"歷史信息",沒有反映等程序局部性,命中率低. |
| 先進(jìn)先出FIFO | 選擇最早裝入上層的頁作為被替換的頁 | 實(shí)現(xiàn)方便,利用了主存歷史的信息 | 不能正確反映程序局部性原理,命中率不高,可能出現(xiàn)一種異常現(xiàn)象. |
| 近期最少使用法LRU | 選擇近期最少訪問的頁作為被替換的頁 | 比較正確反映程序局部性,利用訪存的歷史信息,命中率較高 | 實(shí)現(xiàn)較復(fù)雜 |
| 優(yōu)化替換算法OPT | 將未來近期不用的頁換出去 | 命中率最高,可作為衡量其他替換算法的標(biāo)準(zhǔn) | 不現(xiàn)實(shí),只是一種理想算法 |
5. Cache寫策略
對Cache的寫操作,情況比讀操作要復(fù)雜一些.由于寫入Cache時(shí),并沒有寫入主存,因此就出現(xiàn)Cache和主存數(shù)據(jù)不一致的情況.如何處理Cache和主存不一致的方法就稱為更新策略.
| 更新策略 | 思想 | 優(yōu)點(diǎn) | 缺點(diǎn) |
| 寫回法 | 是指在CPU執(zhí)行寫操作時(shí),信息只寫入Cache中,僅當(dāng)需要替換時(shí),才將改寫過的Cache塊先送回主存(寫回),然后再調(diào)塊(設(shè)置dirty位) | 有利于省去許多將中間結(jié)果寫入主存的無謂開銷. | 需設(shè)修改位增加Cache的復(fù)雜性 |
| 全寫法(寫直達(dá)法) | 在寫操作時(shí),將數(shù)據(jù)同時(shí)寫入Cache和主存 | 實(shí)現(xiàn)開銷小,簡單 | 為了寫中間結(jié)果浪費(fèi)了不少時(shí)間 |
另外,當(dāng)寫不命中時(shí)(也就是寫Cache塊時(shí),這塊早被人替換出去而在Cache中找不到時(shí))是不是要把這塊再取回Cache中,有兩個(gè)解決方法:
u 不按寫分配法,就是直接寫到主存里,不再把該地址對應(yīng)的塊調(diào)回Cache中.
u 按寫分配法,就是寫到主存,而且把這一塊從主存中調(diào)入到Cache.
一般寫回法用按寫分配法,全寫法則采用不按寫分配.
(八) 虛擬存儲(chǔ)器
1. 虛擬存儲(chǔ)器的基本概念
虛擬存儲(chǔ)器是主存的擴(kuò)展,虛擬存儲(chǔ)器的空間大小取決于計(jì)算機(jī)的訪存能力而不是實(shí)際外存的大小,實(shí)際存儲(chǔ)空間可以小于虛擬地址空間.從程序員的角度看,外存被看作邏輯存儲(chǔ)空間,訪問的地址是一個(gè)邏輯地址(虛地址),虛擬存儲(chǔ)器使存儲(chǔ)系統(tǒng)既具有相當(dāng)于外存的容量又有接近于主存的訪問速度.
虛擬存儲(chǔ)器的訪問也涉及到虛地址與實(shí)地址的映象,替換算法等,這與Cache中的類似,前面我們講的地址映象以塊為單位,而在虛擬存儲(chǔ)器中,地址映象以頁為單位.設(shè)計(jì)虛擬存儲(chǔ)系統(tǒng)需考慮的指標(biāo)是主存空間利用率和主存的命中率.
虛擬存儲(chǔ)器與Cache存儲(chǔ)器的管理方法有許多相同之處,它們都需要地址映象表和地址變換機(jī)構(gòu).但是二者也是不同的.
虛擬存儲(chǔ)器的三種不同管理方式:按存儲(chǔ)映象算法,分為段式,頁式和段頁式等,這些管理方式的基本原理是類似的.
2. 頁式虛擬存儲(chǔ)器
頁式管理:是把虛擬存儲(chǔ)空間和實(shí)際空間等分成固定大小的頁,各虛擬頁可裝入主存中的不同實(shí)際頁面位置.頁式存儲(chǔ)中,處理機(jī)邏輯地址由虛頁號(hào)和頁內(nèi)地址兩部分組成,實(shí)際地址也分為頁號(hào)和頁內(nèi)地址兩部分,由地址映象機(jī)構(gòu)將虛頁號(hào)轉(zhuǎn)換成主存的實(shí)際頁號(hào).
頁式管理用一個(gè)頁表,包括頁號(hào),每頁在主存中起始位置,裝入位等.頁表是虛擬頁號(hào)與物理頁號(hào)的映射表.頁式管理由操作系統(tǒng)進(jìn)行,對應(yīng)用程序員的透明的.
3. 段式虛擬存儲(chǔ)器
段式管理: 把主存按段分配的存儲(chǔ)管理方式.它是一種模塊化的存儲(chǔ)管理方式,每個(gè)用戶程序模塊可分到一個(gè)段,該程序模塊只能訪問分配給該模塊的段所對應(yīng)的主存空間.段長可以任意設(shè)定,并可放大和縮小.
系統(tǒng)中通過一個(gè)段表指明各段在主存中的位置.段表中包括段名(段號(hào)),段起點(diǎn),裝入位和段長等.段表本身也是一個(gè)段.段一般是按程序模塊分的.
4. 段頁式虛擬存儲(chǔ)器
段頁式管理:是上述兩種方法的結(jié)合,它將存儲(chǔ)空間按邏輯模塊分成段,每段又分成若干個(gè)頁,訪存通過一個(gè)段表和若干個(gè)頁表進(jìn)行.段的長度必須是頁長的整數(shù)倍,段的起點(diǎn)必須是某一頁的起點(diǎn).
5. TLB(快表)
在虛擬存儲(chǔ)器中進(jìn)行地址變換時(shí),需要虛頁號(hào)變換成主存中實(shí)頁號(hào)的內(nèi)部地址變換,這一般通過查內(nèi)頁表實(shí)現(xiàn).當(dāng)表中該頁對應(yīng)的裝入位為真時(shí),表示該頁在主存中,可按主存地址問主存;如果裝入位為假時(shí),表示該頁不在存儲(chǔ)器中,就產(chǎn)生頁失效中斷,需從外存調(diào)入頁.
中斷處理時(shí)先通過外部地址變換,一般通過查外頁表,將虛地址變換為外存中的實(shí)際地址,到外存中去選頁,然后通過I/0通道調(diào)入內(nèi)存.當(dāng)外存頁面調(diào)入主存中時(shí)還存在一個(gè)頁面替換略的問題.
提高頁表的訪問速度是提高地址變換速度的關(guān)鍵.因?yàn)?每次訪存都要讀頁表,如果頁存放在主存中,就意味著訪存時(shí)間至少是兩次訪問主存的時(shí)間,這樣查表的代價(jià)大大.只有內(nèi)部地址變換速度提高到使訪問主存的速度接近于不采用虛擬存儲(chǔ)器時(shí)的訪主存速度時(shí),虛擬存儲(chǔ)器才能實(shí)用.
根據(jù)訪存的局部性,表內(nèi)各項(xiàng)的使用的概率不是均勻分布的.在一段時(shí)間內(nèi),可能只用表中的很少幾項(xiàng),因此應(yīng)重點(diǎn)提高使用概率高的這部分頁表的訪問速度,可用快速硬件構(gòu)成全表小得多的部分表格,而將整個(gè)表格放在主存中,這就引出了快表和慢表的概念和技術(shù).這樣,虛地址到實(shí)地址的變換方法如后圖所示.
查表時(shí),根據(jù)虛頁表同時(shí)查找快表和慢表,當(dāng)在快表中查到該虛頁號(hào)時(shí),就能很快找到對應(yīng)的實(shí)頁號(hào),將其送入主存實(shí)地址寄存器,同時(shí)使慢表的查找作廢,這時(shí)主存的訪問速度沒降低多少.
如果在快表中查不到,則經(jīng)過一個(gè)訪主存的時(shí)間延遲后,將從慢表中查到的實(shí)頁送入實(shí)地址寄存器,同時(shí)將此虛頁號(hào)和對應(yīng)的實(shí)頁號(hào)送入快表,這里也涉及到用一個(gè)替換算法從快表中替換出一行.
快表的存在對所有的程序員都是透明的.
| 軟磁盤存儲(chǔ)器 | ||
| ? | 硬盤 | 軟盤 |
| 速度 | 高 | 低 |
| 磁頭 | 固定、活動(dòng)、浮動(dòng) | 活動(dòng)、接觸盤片 |
| 盤片 | 固定盤、盤組大部分不可換 | 可換盤片 |
| 價(jià)格 | 高 | 低 |
| 環(huán)境 | 苛刻 | ? |
?
四, 指令系統(tǒng)
| 人們習(xí)慣把每一條機(jī)器語言的語句稱為機(jī)器指令,而又將全部機(jī)器指令的集合稱為機(jī)器的指令系統(tǒng) |
| 指令的執(zhí)行過程 ???????? 讀取指令 ?????????????? 指令地址(在PC中)送到地址寄存器??????????????????? ??? ?????????????? 讀主存,讀出內(nèi)容(指令代碼)送入指令寄存器IR ? ???????? 分析指令 ?????????????????????????????????????????????????????? 形成下一條指令的地址并送到PC中 ???????? 執(zhí)行指令 ?????????????? 用一到幾個(gè)執(zhí)行步驟,完成指令的運(yùn)算、操作功能, ?????????????? 不同的指令操作步驟和具體運(yùn)算、操作功能各不相同???? ??? ???????? 減產(chǎn)有無中斷請求 ?????????????? 無中斷請求、進(jìn)入下一條指令的執(zhí)行過程 |
?(一) 指令格式
1. 指令的基本格式
計(jì)算機(jī)是通過執(zhí)行指令來處理各種數(shù)據(jù)的.為了指出數(shù)據(jù)的來源,操作結(jié)果的去向及所執(zhí)行的操作,一條指令必須包含下列信息:
??? (1)操作碼,具體說明了操作的性質(zhì)及功能.
??? (2)操作數(shù)的地址.
??? (3)操作結(jié)果的存儲(chǔ)地址.
??? (4)下一條指令的地址.
從上述分析可知,一條指令實(shí)際上包括兩種信息即操作碼和地址碼.
操作碼(operation code)用來表示該指令所要完成的操作(如加,減,乘,除,數(shù)據(jù)傳送等),其長度取決于指令系統(tǒng)中的指令條數(shù).如操作碼占7位,則該機(jī)器最多包含27=128條指令.
地址碼用來描述該指令的操作對象,或直接給出操作數(shù)或指出操作數(shù)的存儲(chǔ)器地址或寄存器地址(即寄存器名).
操作碼的長度不固定會(huì)增加指令譯碼和分析難度,使控制器的設(shè)計(jì)復(fù)雜.
| 操作碼 | 尋址地址 | 形式地址A |
形式地址? 指令字中的地址
有效地址? 操作數(shù)的真實(shí)地址
約定? 指令字長=存儲(chǔ)字長=機(jī)器字長
2. 定長操作碼指令格式
1)零地址指令
| OP |
格式:
OP——操作碼
指令中只有操作碼,而沒有操作數(shù)或沒有操作數(shù)地址.這種指令有兩種可能:
(1)無需任何操作數(shù),如空操作指令,停機(jī)指令等.
(2)所需的操作數(shù)是默認(rèn)的.如堆棧結(jié)構(gòu)計(jì)算機(jī)的運(yùn)算指令,所需的操作數(shù)默認(rèn)在堆棧中,由堆棧指針SP隱含指出,操作結(jié)果仍然放回堆棧中.又如Intel 8086的字符串處理指令,源,目的操作數(shù)分別默認(rèn)在源變址寄存器SI和目的變址寄存器DI所指定的存儲(chǔ)器單元中.
2)一地址指令
格式:
OP——操作碼
A——操作數(shù)的存儲(chǔ)器地址或寄存器名
指令中只給出一個(gè)地址,該地址既是操作數(shù)的地址,又是操作結(jié)果的存儲(chǔ)地址.如加1,減1和移位等單操作數(shù)指令均采用這種格式,對這一地址所指定的操作數(shù)執(zhí)行相應(yīng)的操作后,產(chǎn)生的結(jié)果又存回該地址中.
在某些字長較短的微型機(jī)中(如早期的Z80,Intel8080,MC6800等),大多數(shù)算術(shù)邏輯指令也采用這種格式,第一個(gè)源操作數(shù)由地址碼A給出,第二個(gè)源操作數(shù)在一個(gè)默認(rèn)的寄存器中,運(yùn)算結(jié)果仍送回到這個(gè)寄存器中,替換了原寄存器內(nèi)容,通常把這個(gè)寄存器稱累加器.
3)二地址指令
格式:
OP——操作碼
? A1——第一個(gè)源操作數(shù)的存儲(chǔ)器地址或寄存器地址.
? A2——第二個(gè)源操作數(shù)和存放操作結(jié)果的存儲(chǔ)器地址或寄存器地址.
這是最常見的指令格式,兩個(gè)地址指出兩個(gè)源操作數(shù)地址,其中一個(gè)還是存放結(jié)果的目的地址.對兩個(gè)源操作數(shù)進(jìn)行操作碼所規(guī)定的操作后,將結(jié)果存入目的地址,在本例中即為A2指定的地址
4)三地址指令
格式:
OP——操作碼
???? A1——第一個(gè)源操作數(shù)的存儲(chǔ)器地址或寄存器地址
???? A2——第二個(gè)源操作數(shù)的存儲(chǔ)器地址或寄存器地址
???? A3——操作結(jié)果的存儲(chǔ)器地址或寄存器地址
其操作是對A1,A2指出的兩個(gè)源操作數(shù)進(jìn)行操作碼(OP)所指定的操作,結(jié)果存入A3中.
6)多地址指令
在某些性能較好的大,中型機(jī)甚至高檔小型機(jī)中,往往設(shè)置一些功能很強(qiáng)的,用于處理成批數(shù)據(jù)的指令,如字符串處理指令,向量,矩陣運(yùn)算指令等.
為了描述一批數(shù)據(jù),指令中需要多個(gè)地址來指出數(shù)據(jù)存放的首地址,長度和下標(biāo)等信息
3. 擴(kuò)展操作碼指令格式
設(shè)某機(jī)器的指令長度為16位,包括4位基本操作碼字段和三個(gè)4位地址字段,其格式下:
| OP(4) | A1(4) | A2(4) | A3(4) |
4位基本操作碼有16個(gè)碼點(diǎn)(即有16種組合),若全部用于表示三地址指令,則只有16條.但,若三地址指令僅需15條,兩地址指令需15條,一地址指令需15條,零地址指令需16條,共61條指令,應(yīng)如何安排操作碼?
顯然,只有4位基本操作碼是不夠的,必須將操作碼的長度向地址碼字段擴(kuò)展才行.
一種可供擴(kuò)展的方法和步驟如下:
(1)15條三地址指令的操作碼由4位基本操作碼從0000~1110給出,剩下一個(gè)碼點(diǎn)1111用于把操作碼擴(kuò)展到A1,即4位擴(kuò)展到8位;
(2)15條二地址指令的操作碼由8位操作碼從11110000~11111110給出,剩下一個(gè)碼點(diǎn)11111111用于把操作碼擴(kuò)展到A2,即從8位擴(kuò)展到12位;
(3)15條一地址指令的操作碼由12位操作碼從111111110000~111111111110給出,剩下的一個(gè)碼點(diǎn)111111111111用于把操作碼擴(kuò)展到A3,即從12位擴(kuò)展到16位;
(4)16條零地址指令的操作碼由16位操作碼從1111111111110000~1111111111111111給出.
指令字長取決于操作碼的長度、操作數(shù)地址的長度和操作數(shù)地址的個(gè)數(shù).為了提高指令的運(yùn)行速度和節(jié)省存儲(chǔ)空間,通常盡可能的吧常用的指令(如數(shù)據(jù)傳輸指令、算邏運(yùn)算指令等)設(shè)計(jì)成單字長或短字長格式的指令.
| 操作數(shù)類型 | |
| 地址 | 地址實(shí)際也可以看做是一種數(shù)據(jù),在許多情況下要計(jì)算操作數(shù)的地址.這時(shí)地址可看作無符號(hào)的整數(shù) |
| 數(shù)字 | 計(jì)算機(jī)中常見的數(shù)字有定點(diǎn)數(shù)、浮點(diǎn)數(shù)和十進(jìn)制數(shù)字 |
| 字符 | 在應(yīng)用計(jì)算機(jī)時(shí),文本或者字符串也是一種常見的數(shù)據(jù)類型 |
| 邏輯數(shù)據(jù) | 計(jì)算機(jī)除了做算術(shù)運(yùn)算外,有時(shí)還做邏輯運(yùn)算,此時(shí)n個(gè)0和1的組合不是被看做算術(shù)數(shù)字而被看做邏輯數(shù) |
| 奔騰Pentium處理器的數(shù)據(jù)類型有邏輯數(shù)、有符號(hào)數(shù)(補(bǔ)碼)、無符號(hào)數(shù)、壓縮和未壓縮的BCD碼、地址指針、位串以及浮點(diǎn)數(shù)(符合IEEE754標(biāo)準(zhǔn))等 | |
?
| 指令操作類型 | ||
| 1.數(shù)據(jù)傳送 | 數(shù)據(jù)傳送包括寄存器與寄存器,寄存器與存儲(chǔ)單元,存儲(chǔ)單元與存儲(chǔ)單元之間的傳送 | |
| 2.算術(shù)邏輯操作 | 這操作可實(shí)現(xiàn)算術(shù)運(yùn)算(加,減,乘,除,增1,減1,取負(fù)即求補(bǔ))邏輯運(yùn)算(與,或,非,異或) | |
| 3.移位 | 移位可分為算術(shù)移位,邏輯移位和循環(huán)移位三種 | |
| 4.轉(zhuǎn)移 | 無條件轉(zhuǎn)移 | 不受任何約束條件直接把程序轉(zhuǎn)移到下一條需執(zhí)行指令的地址 |
| 條件轉(zhuǎn)移 | 根據(jù)當(dāng)前指令的執(zhí)行結(jié)果決定是否需要轉(zhuǎn)移 | |
| 調(diào)用與返回 | l?? 子程序可在多處被調(diào)用 l?? 子程序調(diào)用可出現(xiàn)在子程序中,即允許子程序嵌套 l?? 每個(gè)CALL指令都對應(yīng)一條RETURN指令 | |
| CPU必須記住返回地址,使子程序能準(zhǔn)確返回,返回地址存放在以下3處 l?? 寄存器內(nèi).機(jī)器內(nèi)設(shè)有專用寄存器,專用于存放返回地址 l?? 子程序的入口地址內(nèi) l?? 棧頂內(nèi).現(xiàn)代計(jì)算機(jī)都設(shè)有堆棧,執(zhí)行RETURN指令后,便可自動(dòng)從堆棧內(nèi)取出應(yīng)返回的地址 | ||
| 陷阱(Trap)與陷阱指令 | 其實(shí)是一種意外事故的中斷,一般不提供給用戶使用,作為隱指令,再出現(xiàn)故障時(shí),由CPU自動(dòng)產(chǎn)生并執(zhí)行 | |
| 5.輸入輸出 | 對于I/O單獨(dú)編址的計(jì)算機(jī)而言,通常設(shè)有輸入輸出指令,他完成從外設(shè)中的寄存器讀入一個(gè)數(shù)據(jù)到CPU寄存器內(nèi),或?qū)?shù)據(jù)從CPU的寄存器輸出至某外設(shè)的寄存器中 | |
| 6.其它 | 包括等待指令、停機(jī)指令、空操作指令、開中斷指令、關(guān)中斷指令、置條件碼指令等 | |
| 備注 | 有些大型或巨型機(jī)還設(shè)有向量指令,可對整個(gè)向量或矩陣進(jìn)行求和求積運(yùn)算 | |
(二) 指令的尋址方式
1. 有效地址的概念
操作數(shù)的真實(shí)地址稱為有效地址,記做EA,它是尋址方式和形式地址共同來決定的.
2. 數(shù)據(jù)尋址和指令尋址
尋址方式是指確定本條指令的數(shù)據(jù)地址以及下一條將要執(zhí)行的指令的地址,與硬件結(jié)構(gòu)密切相關(guān),尋址方式分為指令尋址和數(shù)據(jù)尋址兩大類
指令尋址分為順序?qū)ぶ泛吞S尋址兩種.
順序?qū)ぶ房梢酝ㄟ^程序計(jì)數(shù)器PC加1自動(dòng)形成下一條指令的地址,跳躍尋址則通過轉(zhuǎn)移類指令實(shí)現(xiàn),是通過對PC的運(yùn)算得到新的下一條指令的地址.
3. 常見尋址方式
1)立即尋址
所需的操作數(shù)由指令的地址碼部分直接給出,就稱為立即數(shù)(或直接數(shù))尋址方式.這種方式的特點(diǎn)是取指時(shí),操作碼和一個(gè)操作數(shù)同時(shí)被取出,不必再次訪問存儲(chǔ)器,提高了指令的執(zhí)行速度.但是由于這一操作數(shù)是指令的一部分,不能修改,而一般情況下,指令所處理的數(shù)據(jù)都是在不斷變化的(如上條指令的執(zhí)行結(jié)果作為下條指令的操作數(shù)),故這種方式只能適用于操作數(shù)固定的情況.通常用于給某一寄存器或存儲(chǔ)器單元賦初值或提供一個(gè)常數(shù)等.(圖中“#”表示立即尋址的標(biāo)記,A的位數(shù)限制了這類指令所能表述的立即數(shù)的范圍)
2)直接尋址
指令的地址碼部分給出操作數(shù)在存儲(chǔ)器中的地址.
3)隱含尋址
操作數(shù)的地址隱含在操作碼或者某個(gè)寄存器中.
4)間接尋址
? 在尋址時(shí),有時(shí)根據(jù)指令的地址碼所取出的內(nèi)容既不是操作數(shù),也不是下一條要執(zhí)行的指令,而是操作數(shù)的地址或指令的地址,這種方式稱為間接尋址或間址.
5)寄存器尋址
計(jì)算機(jī)的中央處理器一般設(shè)置有一定數(shù)量的通用寄存器,用以存放操作數(shù),操作數(shù)的地址或中間結(jié)果.假如指令地址碼部分給出某一通用寄存器地址,而且所需的操作數(shù)就在這一寄存器中,則稱為寄存器尋址.通用寄存器的數(shù)量一般在幾個(gè)至幾十個(gè)之間,比存儲(chǔ)單元少很多,因此地址碼短,而且從寄存器中存取數(shù)據(jù)比從存儲(chǔ)器中存取快得多,所以這種方式可以縮短指令長度,節(jié)省存儲(chǔ)空間,提高指令的執(zhí)行速度,在計(jì)算機(jī)中得到廣泛應(yīng)用.
6)寄存器間接尋址??????????????????????????????????? EA = ( Ri)有效地址在寄存器中
寄存器中給出的是操作數(shù)的地址,因此還需要訪問一次存儲(chǔ)器才能得到操作數(shù).
7)基址尋址
在計(jì)算機(jī)中設(shè)置一個(gè)專用的基址寄存器,或由指令指定一個(gè)通用寄存器為基址寄存器.操作數(shù)的地址由基址寄存器的內(nèi)容和指令的地址碼A相加得到
8)變址尋址
指令地址碼部分給出的地址A和指定的變址寄存器X的內(nèi)容通過加法器相加,所得的和作為地址從存儲(chǔ)器中讀出所需的操作數(shù).這是幾乎所有計(jì)算機(jī)都采用的一種尋址方式.
9)相對尋址
把程序計(jì)數(shù)器PC的內(nèi)容(即當(dāng)前執(zhí)行指令的地址)與指令的地址碼部分給出的位移量(disp)之和作為操作數(shù)的地址或轉(zhuǎn)移地址,稱為相對尋址.
?主要用于轉(zhuǎn)移指令,執(zhí)行本條指令后,將轉(zhuǎn)移到(PC)+disp,(PC)為程序計(jì)數(shù)器的內(nèi)容.相對尋址有兩個(gè)特點(diǎn):
? 1〉轉(zhuǎn)移地址不是固定的,它隨著PC值的變化而變化,并且總是與PC相差一個(gè)固定值disp,因此無論程序裝人存儲(chǔ)器的任何地方,均能正確運(yùn)行,對浮動(dòng)程序很適用.
? 2〉位移量可正,可負(fù),通常用補(bǔ)碼表示.如果位移量為n位,則這種方式的尋址范圍在
????? (PC)-2n-1?~(PC)+2n-1-1之間
? 計(jì)算機(jī)的程序和數(shù)據(jù)一般是分開存放的,程序區(qū)在程序執(zhí)行過程中不允許修改.在程序與數(shù)據(jù)分區(qū)存放的情況下,不用相對尋址方式來確定操作數(shù)地址.
?
10)堆棧尋址
在一般計(jì)算機(jī)中,堆棧主要用來暫存中斷和子程序調(diào)用時(shí)現(xiàn)場數(shù)據(jù)及返回地址,用于訪問堆棧的指令只有壓入(即進(jìn)棧)和彈出(即退棧)兩種,它們實(shí)際上是一種特殊的數(shù)據(jù)傳送指令:
壓入指令(PUSH)是把指定的操作數(shù)送入堆棧的棧頂;
彈出指令(POP)的操作剛好相反,是把棧頂?shù)臄?shù)據(jù)取出,送到指令所指定的目的地.
一般的計(jì)算機(jī)中,堆棧從高地址向低地址擴(kuò)展,即棧底的地址總是大于或等于棧頂?shù)牡刂?也有少數(shù)計(jì)算機(jī)剛好相反)當(dāng)執(zhí)行壓入操作時(shí),首先把堆棧指針(SP)減量(減量的多少取決于壓入數(shù)據(jù)的字節(jié)數(shù),若壓入一個(gè)字節(jié),則減1;若壓入兩個(gè)字節(jié),則減2,以此類推),然后把數(shù)據(jù)送人SP所指定的單元;當(dāng)執(zhí)行彈出操作時(shí),首先把sp所指定的單元(即棧頂)的數(shù)據(jù)取出,然后根據(jù)數(shù)據(jù)的大小(即所占的字節(jié)數(shù))對SP增量.
設(shè)計(jì)指令格式應(yīng)考慮的各種因素
指令系統(tǒng)集中反映了機(jī)器的性能,又是程序員編程的依據(jù),高檔機(jī)必須能兼容低檔機(jī)的程序運(yùn)行,稱之為“向上兼容”.
指令格式集中體現(xiàn)了指令系統(tǒng)的功能.為此,在確定指令系統(tǒng)時(shí),必須從以下幾個(gè)方面綜合考慮.
①?? 操作類型:包括指令數(shù)及操作的難易程度
②?? 數(shù)據(jù)類型:確定哪些數(shù)據(jù)類型可以參加操作
③?? 指令格式:包括指令字長、操作碼位數(shù)、地址碼位數(shù)、地址個(gè)數(shù)、尋址方式類型、以及指令字長和操作碼位數(shù)是否可變等.
④?? 尋址方式:包括指令和操作數(shù)具體有哪些尋址方式.
⑤? 寄存器個(gè)數(shù):寄存器的多少直接影響指令的執(zhí)行時(shí)間.
?
| 尋址方式 | 詳情 | |||
| 指令尋址 | 順序?qū)ぶ?/p> | 順序?qū)ぶ?/strong>可通過程序計(jì)數(shù)器PC加1自動(dòng)形成下一條指令的地址 | ||
| 跳躍尋址 | 跳躍尋址則通過轉(zhuǎn)移類指令實(shí)現(xiàn) | |||
| 數(shù)據(jù)尋址 | 1.立即尋址 | 操作數(shù)本身設(shè)在指令字內(nèi),即形式地址A不是操作數(shù)地址而是操作數(shù)本身 | ||
| l?? 指令執(zhí)行階段不訪存 l?? A的位數(shù)限制了這類指令所能表述的立即數(shù)的范圍 | ||||
| 2.直接尋址 | 指令中的形式地址A就是操作數(shù)的真實(shí)地址EA,即EA=A | |||
| l?? 執(zhí)行階段訪問一次存儲(chǔ)器 l?? 缺點(diǎn)在于A的位數(shù)限制了操作數(shù)的尋址范圍而且必須修改A的值才能修改操作數(shù)的地址 | ||||
| 3.隱含尋址 | 指令字中不明顯給出操作數(shù)的地址,其操作數(shù)的地址隱含在操作碼或某個(gè)寄存器中 | |||
| l?? 由于隱含尋址在指令字中少了一個(gè)地址,因此,這種尋址方式的指令有利于縮短指令字長 | ||||
| 4.間接尋址 | 倘若指令字中的形式地址不直接指出操作數(shù)的地址,而是指出操作數(shù)有效地址所在的存儲(chǔ)單元的地址,也就是說,有效地址是由形式地址間接提供的,即為間接地址,即EA=(A) | |||
| 優(yōu)點(diǎn) | 1.?? 與直接尋址相比,擴(kuò)大了操作數(shù)的尋址范圍,因?yàn)锳的位數(shù)通常小于指令字長,而存儲(chǔ)字長可與指令字長相等 2.?? 它便于編制程序 | |||
| 缺點(diǎn) | l?? 指令的執(zhí)行階段需要訪存兩次(一次間接尋址)或多次(多次間接尋址),致使指令執(zhí)行時(shí)間延長 | |||
| 5.寄存器尋址 | 在寄存器尋址的指令字中,地址碼字段直接指出了寄存器的編號(hào),即EA=R | |||
| l?? 由于地址字段只需指明寄存器編號(hào)(計(jì)算機(jī)中寄存器數(shù)有限)故指令字 l?? 較短,節(jié)省了存儲(chǔ)空間,因此寄存器尋址在計(jì)算機(jī)中得到廣泛應(yīng)用 l?? 執(zhí)行階段不訪存,只訪問寄存器,執(zhí)行速度快 l?? 寄存器個(gè)數(shù)有限,可縮短指令字長 | ||||
| 6.寄存器間接尋址 | 有效地址EA+=(Ri),因有效地址 | |||
| l?? 有效地址在寄存器中, 操作數(shù)在存儲(chǔ)器中,執(zhí)行階段訪存 l?? 便于編制循環(huán)程序 | ||||
| 7.基址尋址 | 基址尋址需設(shè)有基址寄存器BR,其操作數(shù)的有效地址EA等于指令字中的形式地址與基址寄存器中的內(nèi)容(稱為基地址)相加,即EA=A+(BR) | |||
| 采用專用寄存器作基址寄存器 | l?? 可擴(kuò)大尋址范圍 l?? 有利于多道程序 l?? BR內(nèi)容由操作系統(tǒng)或管理程序確定 l?? 在程序的執(zhí)行過程中 BR 內(nèi)容不變,形式地址 A 可變 | |||
| 采用通用寄存器作基址寄存器 | l?? 由用戶指定哪個(gè)通用寄存器作為基址寄存器 l?? 基址寄存器的內(nèi)容由操作系統(tǒng)確定 l?? 在程序的執(zhí)行過程中 R0? 內(nèi)容不變,形式地址 A 可變 | |||
| 8.變址尋址 | 變址尋址與基址尋址極為相似.其有效地址EA等于指令字中的形式地址A與變址寄存器IX的內(nèi)容相加之和,即EA=A+(IX) | |||
| l?? 可擴(kuò)大尋址范圍 l?? IX 的內(nèi)容由用戶給定 l?? 在程序的執(zhí)行過程中 IX 內(nèi)容可變,形式地址 A 不變 l?? 便于處理數(shù)組問題 | ||||
| 9.相對尋址 | ~的有效地址是將PC的內(nèi)容(即當(dāng)前指令地址)與指令字中的形式地址A(A 是相對于當(dāng)前指令的位移量(可正可負(fù),補(bǔ)碼)相加而成,即EA=(PC)+A | |||
| l?? A 的位數(shù)決定操作數(shù)的尋址范圍 l?? 程序浮動(dòng) l?? 廣泛應(yīng)用于轉(zhuǎn)移指令 | ||||
| 10.堆棧尋址 | 要求計(jì)算機(jī)中設(shè)有堆棧.堆棧既可用寄存器組(稱為硬堆棧)來實(shí)現(xiàn),也可利用主存的一部分空間作堆棧(稱為軟堆棧) l?? 硬堆棧 多個(gè)寄存器 l?? 軟堆棧 制定的存儲(chǔ)空間 | |||
?(三) CISC和RISC的基本概念
1.CISC(復(fù)雜指令集計(jì)算機(jī))
隨著VLSI技術(shù)的發(fā)展,計(jì)算機(jī)的硬件成本不斷下降,軟件成本不斷提高,使得人們熱衷于在指令系統(tǒng)中增加更多的指令和復(fù)雜的指令,來提高操作系統(tǒng)的效率,并盡量縮短指令系統(tǒng)與高級(jí)語言的語義差別,以便于高級(jí)語言的編譯和降低軟件成本.
? ??另外,為了做到程序兼容,同一系列計(jì)算機(jī)的新機(jī)器和高檔機(jī)的指令系統(tǒng)只能擴(kuò)充而不能減去任意一條,因此,促使指令系統(tǒng)越來越復(fù)雜,某些計(jì)算機(jī)的指令多達(dá)幾百條.例如,DEC公司的VAX 11/780計(jì)算機(jī)有303條指令,18種尋址方式,我們稱這些計(jì)算機(jī)為復(fù)雜指令系統(tǒng)計(jì)算機(jī)(complex instruction? set? computer,簡稱CISC).Intel公司的180X86微處理器,IBM公司的大,中計(jì)算機(jī)均為CISC.
2.RISC(簡單指令集計(jì)算機(jī))
(1)RISC的產(chǎn)生
? ??1975年IBM公司開始研究指令的合理性問題,IBM的John cocke 提出了RISC的想法.????? 對CISC的測試表明:
最長使用的是一些簡單指令,占指令總數(shù)的20%,但在程序中出現(xiàn)的頻率卻占80%.???? 而占20%的復(fù)雜指令,為實(shí)現(xiàn)其功能而設(shè)計(jì)的微程序代碼卻占總代碼的80%.CISC研制時(shí)間長,成本高,難于實(shí)現(xiàn)流水線;因此出現(xiàn)了RIC技術(shù).
計(jì)算機(jī)執(zhí)行程序所需的時(shí)間P可用下式表述:
P=I×C×T
其中,I是高級(jí)語言程序編譯后在機(jī)器上運(yùn)行的機(jī)器指令數(shù);C為執(zhí)行每條機(jī)器指令所需的平均機(jī)器周期;T是每個(gè)機(jī)器周期的執(zhí)行時(shí)間.
(2)RISC的特點(diǎn)
| 1)優(yōu)先選取使用頻率最高的一些簡單指令; | 選用使用頻度較高的一些 簡單指令,復(fù)雜指令的功能由簡單指令來組合 |
| 2)指令長度固定; | 指令 長度固定、指令格式種類少、尋址方式少 |
| 3)只有取數(shù)/存數(shù)指令(load/store)訪問內(nèi)存; | 只有 LOAD / STORE 指令訪存 |
| 4)CPU中的寄存器數(shù)量很多; | CPU 中有多個(gè) 通用 寄存器 |
| 5)大部分指令在一個(gè)或小于一個(gè)機(jī)器周期完成; | 采用 流水技術(shù)? 一個(gè)時(shí)鐘周期 內(nèi)完成一條指令 |
| 6)硬布線控制邏輯為主,不用或少用微碼控制; | 采用 組合邏輯 實(shí)現(xiàn)控制器 |
| 7)一般用高級(jí)語言編程,特別重視編譯優(yōu)化,以減少程序執(zhí)行時(shí)間. | 采用 優(yōu)化 的 編譯 程序 |
(3)RISC的發(fā)展
? ??1983年,一些中小型公司開始推出RISC產(chǎn)品,由于其高性能價(jià)格比,市場占有率不斷提高.1987年SUN公司用SPARC芯片構(gòu)成工作站;目前一些大公司,IBM,DEC,Intel,Motorola以將部分力量轉(zhuǎn)移到RISC方面.
(4)CISC機(jī)與RISC機(jī)的主要特征對比
| ? | CISC | RISC |
| 指令系統(tǒng) 指令數(shù) 指令格式 指令字長 尋址方式 可訪問指令 各種指令使用頻率 各種指令執(zhí)行時(shí)間 | 復(fù)雜,龐大 一般大于200 一般大于4 一般大于4 不固定 不加限制 相差很大 相差很大 | 簡單,精簡 一般小于100 一般小于4 一般小于4 固定32位 只有LOAD/STORE指令 相差不大 絕大多數(shù)在一個(gè)機(jī)器周期完成 |
| 優(yōu)化編譯實(shí)現(xiàn) | 很難 | 較容易 |
| 程序源代碼長度 | 較短 | 較長 |
| 控制邏輯實(shí)現(xiàn)方式 | 絕大多數(shù)為微程序控制 | 絕大多數(shù)為硬連線控制 |
| RISC機(jī)的主要優(yōu)點(diǎn)可歸納如下 ①充分利用VLSI芯片的面積 ②提高了計(jì)算機(jī)運(yùn)行速度 ③便于設(shè)計(jì),降低成本,提高可靠性 ④有效支持高級(jí)語言程序 | ||
?
五, 中央處理器(CPU)
(一) CPU的功能和基本結(jié)構(gòu)
CPU主要是由運(yùn)算器和控制器組成,由于運(yùn)算器(實(shí)現(xiàn)算術(shù)運(yùn)算和邏輯運(yùn)算)部分在第二部分介紹過,所以本節(jié)主要介紹控制器的組成和工作原理.
1.控制器的功能
計(jì)算機(jī)對信息進(jìn)行處理(或計(jì)算)是通過程序的執(zhí)行而實(shí)現(xiàn)的,程序是完成某個(gè)確定算法的指令序列,要預(yù)先存放在存儲(chǔ)器中.控制器的作用是控制程序的執(zhí)行,它必須具有以下基本功能:
1).取指令
2).分析指令
3).執(zhí)行指令
計(jì)算機(jī)不斷重復(fù)順序執(zhí)行上述三種基本操作:取指,分析,執(zhí)行;再取指,再分析,再執(zhí)行,如此循環(huán),直到遇到停機(jī)指令或外來的干預(yù)為止.
4).控制程序和數(shù)據(jù)的輸入與結(jié)果輸出
根據(jù)程序的安排或人的干預(yù),在適當(dāng)?shù)臅r(shí)候向輸入輸出設(shè)備發(fā)出一些相應(yīng)的命令來完成I/O功能,這實(shí)際上也是通過執(zhí)行程序來完成的.
5).對異常情況和某些請求的處理
當(dāng)機(jī)器出現(xiàn)某些異常情況,諸如算術(shù)運(yùn)算的溢出和數(shù)據(jù)傳送的奇偶錯(cuò)等;或者某些外來請求,諸如磁盤上的成批數(shù)據(jù)需送存儲(chǔ)器或程序員從鍵盤送入命令等,此時(shí)由這些部件或設(shè)備發(fā)出:?
(1)“中斷請求”信號(hào).
(2)DMA請求信號(hào).
2.控制器的組成
根據(jù)對控制器功能分析,得出控制器的基本組成如下:
1).程序計(jì)數(shù)器(PC)
即指令地址寄存器.在某些計(jì)算機(jī)中用來存放當(dāng)前正在執(zhí)行的指令地址;而在另一些計(jì)算機(jī)中則用來存放即將要執(zhí)行的下一條指令地址;而在有指令預(yù)取功能的計(jì)算機(jī)中,一般還需要增加一個(gè)程序計(jì)數(shù)器用來存放下一條要取出的指令地址.
有兩種途徑來形成指令地址,其一是順序執(zhí)行的情況,通過程序計(jì)數(shù)器加“1”形成下一條指令地址(如存儲(chǔ)器按字節(jié)編址,而指令長度為4個(gè)字節(jié),則加“4”).其二是遇到需要改變順序執(zhí)行程序的情況,一般由轉(zhuǎn)移類指令形成轉(zhuǎn)移地址送往程序計(jì)數(shù)器,作為下一條指令的地址.
2).指令寄存器(IR)
用以存放當(dāng)前正在執(zhí)行的指令,以便在指令執(zhí)行過程中,控制完成一條指令的全部功能.
3). 指令譯碼器或操作碼譯碼器
對指令寄存器中的操作碼進(jìn)行分析解釋,產(chǎn)生相應(yīng)的控制信號(hào).
在執(zhí)行指令過程中,需要形成有一定時(shí)序關(guān)系的操作控制信號(hào)序列,為此還需要下述組成部分.
4).脈沖源及啟停線路
脈沖源產(chǎn)生一定頻率的脈沖信號(hào)作為整個(gè)機(jī)器的時(shí)鐘脈沖,是機(jī)器周期和工作脈沖的基準(zhǔn)信號(hào),在機(jī)器剛加電時(shí),還應(yīng)產(chǎn)生一個(gè)總清信號(hào)(reset).啟停線路保證可靠地送出或封鎖時(shí)鐘脈沖,控制時(shí)序信號(hào)的發(fā)生或停止,從而啟動(dòng)機(jī)器工作或使之停機(jī).
5).時(shí)序控制信號(hào)形成部件
當(dāng)機(jī)器啟動(dòng)后,在CLK時(shí)鐘作用下,根據(jù)當(dāng)前正在執(zhí)行的指令的需要,產(chǎn)生相應(yīng)的時(shí)序控制信號(hào),并根據(jù)被控功能部件的反饋信號(hào)調(diào)整時(shí)序控制信號(hào).例如,當(dāng)執(zhí)行加法指令時(shí),若產(chǎn)生運(yùn)算溢出的異常情況,一般不再執(zhí)行將結(jié)果送入目的寄存器(或存儲(chǔ)單元)的操作,而發(fā)出中斷請求信號(hào),轉(zhuǎn)入中斷處理;又如執(zhí)行條件轉(zhuǎn)移指令時(shí),根據(jù)不同的條件產(chǎn)生不同的控制信號(hào),從而進(jìn)入適當(dāng)?shù)某绦蚍种?
(二) 指令執(zhí)行過程
1.指令執(zhí)行的時(shí)序
??? 計(jì)算機(jī)工作的過程是取指令,分析指令,執(zhí)行指令三個(gè)基本動(dòng)作的重復(fù).考慮到所有的器件中(寄存器,存儲(chǔ)器)存儲(chǔ)器的速度最慢,因此,取最慢的器件工作時(shí)間(周期)作為整個(gè)工作的最長同步標(biāo)準(zhǔn).
??? 計(jì)算機(jī)的工作時(shí)序是按照存儲(chǔ)器的工作周期劃分的.每個(gè)存儲(chǔ)器工作周期又稱為機(jī)器周期.因此,每個(gè)機(jī)器周期至少完成一個(gè)基本操作.一般最長的操作是訪問存儲(chǔ)器(讀/寫),這個(gè)時(shí)間也用于訪問外設(shè)接口(寄存器).如果,某個(gè)操作,比如利用運(yùn)算器執(zhí)行一次運(yùn)算,如果不訪問存儲(chǔ)器,即使占用的時(shí)間很短,但是,也必須為其劃分一個(gè)機(jī)器周期.因此,機(jī)器周期是計(jì)算時(shí)序劃分的最大單位.
現(xiàn)在我們?yōu)橛?jì)算機(jī)的執(zhí)行時(shí)間進(jìn)行最基本的劃分:由于計(jì)算機(jī)不斷地重復(fù)執(zhí)行每個(gè)指令,所以,我們將執(zhí)行的時(shí)間劃分為一條一條指令執(zhí)行所占用的時(shí)間,如下:
| 執(zhí)行指令1 | 執(zhí)行指令2 | 執(zhí)行指令3 | 執(zhí)行指令4 | 執(zhí)行指令5 |
??? 我們將每指令占用的時(shí)間稱為指令周期.由于每條指令的功能不一樣,因此執(zhí)行的時(shí)間也不同,指令周期長短不一樣.
? ??而每條指令的執(zhí)行,又可以是取指令,分析指令,執(zhí)行指令.由于取指令必須訪問存儲(chǔ)器,所以占用一個(gè)機(jī)器周期.分析指令是由指令譯碼電路完成的,所占用的時(shí)間極短,無需分配一個(gè)完整的機(jī)器周期.一般是在取指周期后期(結(jié)束之前的很短時(shí)間內(nèi))就可以完成.指令的執(zhí)行較為復(fù)雜:可能不訪問存儲(chǔ)器;訪問一次存儲(chǔ)器;訪問兩次存儲(chǔ)器等.因此,可能是一個(gè)機(jī)器周期到幾個(gè)機(jī)器周期.
因此,每條指令的執(zhí)行過程如下:
| 取指周期 | 執(zhí)行周期1 | 執(zhí)行周期2 | 執(zhí)行周期3 | 執(zhí)行周期4 |
?? ?第一個(gè)機(jī)器周期總是取指周期,而指令的地址總是從PC中獲得,當(dāng)發(fā)出讀取存儲(chǔ)器命令后,指令總是從數(shù)據(jù)總線DB送回,CPU接受到指令之后,將指令放在指令寄存器IR之中.指令在IR中一直保留到取下一條指令為止.
? ??第二個(gè)機(jī)器周期開始,根據(jù)指令有所不同:
?? ?執(zhí)行一次ALU運(yùn)算:分配一個(gè)機(jī)器周期.
?? ?執(zhí)行訪問一次存儲(chǔ)器:分配一個(gè)機(jī)器周期.
?? ?所以,根據(jù)指令執(zhí)行的不同情況,將會(huì)得到不同指令執(zhí)行所占用的機(jī)器周期.
?? ?根據(jù)每個(gè)機(jī)器周期完成的任務(wù)不同,我們將每個(gè)機(jī)器周期按照任務(wù)命名.如同用取指周期命名第一個(gè)機(jī)器周期一樣.
2.指令執(zhí)行過程舉例
假設(shè)指令格式如下:
| 操作碼 | rs,rd | rs1 | imm(Disp) |
???? rs,rd,rsl為通用寄存器地址;imm(或disp)為立即數(shù)(或位移量).
????? 加法指令功能:將寄存器(rs)中的一個(gè)數(shù)與存儲(chǔ)器中的一個(gè)數(shù)(其地址為(rsl)+disp)相加,結(jié)果放在寄存器rd中,rs與rd為同一寄存器.
加法指令完成以下操作:
①取指周期
從存儲(chǔ)器取指令,送入指令寄存器,并進(jìn)行操作碼譯碼(分析指令).
?? ?程序計(jì)數(shù)器加1,為下一條指令作好準(zhǔn)備.
? ??控制器發(fā)出的控制信號(hào):PC→AB,W/R=0,M/IO=1;DB→IR;PC+1.
②計(jì)算地址周期
計(jì)算數(shù)據(jù)地址,將計(jì)算得到的有效地址送地址寄存器AR.
?? ?控制器發(fā)出的控制信號(hào):rsl→GR,(rsl)→ALU,disp→ALU(將rsl的內(nèi)容與disp送ALU);“+”(加法命令送ALU);ALU→AR(有效地址送地址寄存器).
③取數(shù)周期
到存儲(chǔ)器取數(shù).
??? 控制器發(fā)出的控制信號(hào):AR→AB,W/R=0,M/IO=1;DB→DR(將地址寄存器內(nèi)容送地址總線,同時(shí)發(fā)訪存讀命令,存儲(chǔ)器讀出數(shù)據(jù)送數(shù)據(jù)總線后,打入數(shù)據(jù)寄存器).
④執(zhí)行周期
進(jìn)行加法運(yùn)算,結(jié)果送寄存器,并根據(jù)運(yùn)算結(jié)果置狀態(tài)位N,Z,V,C.
? ??控制器送出的控制信號(hào):rs,rd→GR,? (rs)→ALU,DR→ALU(兩個(gè)源操作數(shù)送ALU);
ALU→rd(運(yùn)算結(jié)果送寄存器rd)
(三) 數(shù)據(jù)通路的功能和基本結(jié)構(gòu)
CPU的數(shù)據(jù)通路是連接CPU內(nèi)部各個(gè)部件以及和CPU外部個(gè)部件之間的數(shù)據(jù)和控制信號(hào)的連接關(guān)系圖.
數(shù)據(jù)通路的基本結(jié)構(gòu):
(四) 控制器的功能和工作原理
1. 硬布線控制器
控制器控制信號(hào)的產(chǎn)生是采用邏輯電路,也稱組合邏輯電路控制方式. “時(shí)序控制信號(hào)形成部件”是由硬邏輯布線完成的.實(shí)際設(shè)計(jì)中,需要幾十~幾百條指令,確定每條指令所需的機(jī)器周期,將情況相同的指令歸并在一起,列出表達(dá)式,畫出邏輯圖.
(1)時(shí)序與節(jié)拍
每一步由一個(gè)機(jī)器周期來完成,假設(shè)采用4個(gè)機(jī)器周期,總之,需要4個(gè)不同的信號(hào)輸出,代表4個(gè)不同的周期.
(2)操作碼譯碼器
? 指令的操作碼部分指出本指令將執(zhí)行什么指令,如加法,減法等.對于不同的指令,采用不同的代碼表示.
(3)操作控制信號(hào)的產(chǎn)生
? 以加法指令為例,加法指令的完成是由4個(gè)機(jī)器周期cy1,cy2,cy3,cy4組成,分別是取指,計(jì)算地址,取數(shù),計(jì)算4個(gè)機(jī)器周期.
將所有的機(jī)器周期的操作控制信號(hào)的邏輯表達(dá)式全部寫出來,就會(huì)得到各個(gè)操作控制信號(hào)的所有表達(dá)式,再將這些表達(dá)式安每個(gè)操作控制信號(hào)組合起來,就得到某個(gè)操作控制信號(hào)的表達(dá)式.
取指周期需要產(chǎn)生的操作控制信號(hào)如下:
? PC→AB=cy1????????;將PC送地址總線
? ADS=cy1·T1??? ????;存儲(chǔ)器地質(zhì)有效
? M/IO=cy1?????????? ;存儲(chǔ)器操作
? W/R=cy1??????????? ;讀操作
? DB→IR=cy1????????;將讀出的結(jié)果送IR
? PC+1=cy1?????????? ;將程序計(jì)數(shù)器加1
計(jì)算地址周期cy2需要完成有效地址((rs1)+Disp)的計(jì)算.產(chǎn)生的操作控制信號(hào)如下:
? rs1→GR=加法指令·cy2?????? ;送通用寄存器地址
?(rs1)→ALU=加法指令·cy2???? ;通用寄存器送ALU
? Disp→ALU=加法指令·cy2???? ;偏移量送ALU
? “+”=加法指令·cy2???????? ;ALU執(zhí)行加法操作
? ALU→AR=加法指令·cy2?????? ;運(yùn)算結(jié)果送地址總線
例如,“+”操作控制信號(hào)在加法指令的cy2(計(jì)算有效地址)和cy4(操作數(shù)相加)時(shí)需要;減法指令的cy2(計(jì)算有效地址)時(shí)需要;轉(zhuǎn)移指令的cy2(計(jì)算有效地址)時(shí)需要;….
? 所以,“+”操作控制信號(hào)的邏輯表達(dá)式如下:
? “+”=加法指令·(cy2+cy4)+減法指令·cy2+轉(zhuǎn)移指令·cy2+…
? 設(shè)機(jī)器有7位操作碼(OP0~OP6),假設(shè)加法指令的操作碼為0001100,形成的加法指令信號(hào)的邏輯表達(dá)式為:
? 加法指令= OP0OP1OP2OP3OP4OP5OP6
如,某機(jī)器128條指令,用7位操作碼(OP0~OP6),如果其中有16條算術(shù)邏輯運(yùn)算指令,可以將這些指令的3位操作碼都設(shè)計(jì)相同的編碼,如OP0OP1OP2= 001,而其他位OP3~OP6編碼表示16個(gè)不同的指令.
? 設(shè)命令A(yù)是所有算術(shù)邏輯運(yùn)算在cy2周期需要產(chǎn)生的,邏輯表達(dá)式:
? A=加法指令·cy2+減法指令·cy2+邏輯加指令·cy2+…
?? =(加法指令·+減法指令+邏輯加指令+…)·cy2
?? = OP0·OP1·OP2·cy2
? 只需要一個(gè)與門,就可實(shí)現(xiàn)命令A(yù).
2. 微程序控制器
(1)微程序,微指令和微命令
在計(jì)算機(jī)中,一條指令的功能是通過按一定次序執(zhí)行一系列基本操作完成的,這些基本操作稱為微操作.例如,前面講到的加法指令,分成四步(取指令,計(jì)算地址,取數(shù),加法運(yùn)算)完成,每一步實(shí)現(xiàn)若干個(gè)微操作.實(shí)現(xiàn)這些微操作的控制命令就是微命令.
微操作是指最基本的,不可再分的操作,如前面提到的:
???? PC→AB; W/R=0; DB→IR等.
PC→AB等就是微命令.
微指令:在微程序控制的計(jì)算機(jī)中,將由同時(shí)發(fā)出的控制信號(hào)所執(zhí)行的一組微操作稱為微指令,所以微指令就是把同時(shí)發(fā)出的控制信號(hào)的有關(guān)信息匯集起來而形成的.將一條指令分成若干條微指令,按次序執(zhí)行這些微指令,就可以實(shí)現(xiàn)指令的功能.組成微指令的微操作又稱微命令.
微程序:計(jì)算機(jī)的程序由指令序列構(gòu)成,而計(jì)算機(jī)每條指令的功能均由微指令序列解釋完成,這些微指令序列的集合就叫做微程序.
(2)微指令的編碼方式;
1)直接控制法
在微指令的控制字段中,每一位代表一個(gè)微命令,在設(shè)計(jì)微指令時(shí),是否發(fā)出某個(gè)微命令,只要將控制字段中相應(yīng)位置成“1”或“0”,這樣就可打開或關(guān)閉某個(gè)控制門,這就是直接控制法.
2)字段直接編譯法
在計(jì)算機(jī)中的各個(gè)控制門,在任一微周期內(nèi),不可能同時(shí)被打開,而且大部分是關(guān)閉的(相應(yīng)的控制位為“0”).所謂微周期,指的是一條微指令所需的執(zhí)行時(shí)間.如果有若干個(gè)(一組)微命令,在每次選擇使用它們的微周期內(nèi),只有一個(gè)微命令起作用,那么這若干個(gè)微命令是互斥的.
選出互斥的微命令,并將這些微命令編成一組,成為微指令字的一個(gè)字段,用二進(jìn)制編碼來表示, 就是字段直接編譯法.
3)字段間接編譯法
字段間接編譯法是在字段直接編譯法的基礎(chǔ)上,進(jìn)一步縮短微指令字長的一種編譯法.????? 如果在字段直接編譯法中,還規(guī)定一個(gè)字段的某些微命令,要兼由另一字段中的某些微命令來解釋,稱為字段間接編譯法.?
(3)微地址的形式方式.
1)微程序入口地址的形成
<1>一級(jí)轉(zhuǎn)移方式
? 當(dāng)操作碼的位數(shù)與位置固定時(shí),可直接使操作碼與入口地址的部分位對應(yīng).
<2>多級(jí)轉(zhuǎn)移方式
??? 先按照指令類型標(biāo)志轉(zhuǎn)移到某條微指令,以區(qū)分出是哪一大類,然后可以進(jìn)一步按指令操作碼轉(zhuǎn)移,區(qū)分出是該指令中的哪一類具體操作.
2)微程序后繼地址的形成
<1>以增量方式產(chǎn)生后繼微地址.
?? ?在順序執(zhí)行微指令時(shí),后繼微地址由現(xiàn)行微地址加上一個(gè)增量(通常為1)形成的;而在非順序執(zhí)行時(shí)則要產(chǎn)生一個(gè)轉(zhuǎn)移微地址.
<2>增量與下址字段結(jié)合產(chǎn)生后繼微地址
?? ?將微指令的下址字段分成兩部分:轉(zhuǎn)移控制字段BCF和轉(zhuǎn)移地址字段BAF,當(dāng)微程序?qū)崿F(xiàn)轉(zhuǎn)移時(shí),將BAF送μPC,否則順序執(zhí)行下一條微指令(μPC+1).
(五) 指令流水線
1. 指令流水線的基本概念
(1)流水線基本原理
流水線技術(shù)是一種顯著提高指令執(zhí)行速度與效率的技術(shù).方法是:指令取指完成后,不等該指令執(zhí)行完畢即可取下一條指令.
如果把一條指令的解釋過程進(jìn)一步細(xì)分,例如,把分析,執(zhí)行兩個(gè)過程分成取指,譯碼,執(zhí)行,訪存和寫回寄存器五個(gè)子過程,并用五個(gè)子部件分別處理這五個(gè)子過程.
? 這樣只需在上一指令的第一子過程處理完畢進(jìn)入第二子過程處理時(shí),在第一子部件中就開始對第二條指令的第一子過程進(jìn)行處理.隨著時(shí)間推移,這種重疊操作最后可達(dá)到五個(gè)子部件同時(shí)對五條指令的子過程進(jìn)行操作.
指令六級(jí)流水時(shí)序
(2)影響流水線性能的因素
在流水線中會(huì)出現(xiàn)三種相關(guān),影響流水線的暢通流動(dòng),這三種相關(guān)是結(jié)構(gòu)相關(guān),數(shù)據(jù)相關(guān)和控制相關(guān).
結(jié)構(gòu)相關(guān)是當(dāng)多條指令進(jìn)人流水線后,硬件資源滿足不了指令重疊執(zhí)行的要求時(shí)產(chǎn)生的.
數(shù)據(jù)相關(guān)是指令在流水線中重疊執(zhí)行時(shí),當(dāng)后繼指令需要用到前面指令的執(zhí)行結(jié)果時(shí)發(fā)生的.
控制相關(guān)是當(dāng)流水線遇到分支指令和其他改變PC值的指令時(shí)引起的.
(3)流水線性能
流水線的性能通常用吞吐率,加速比和效率3項(xiàng)指標(biāo)來衡量.
1)吞吐率
?? 在指令流水線中,吞吐率是指單位時(shí)間內(nèi)流水線所完成的指令或輸出結(jié)果的數(shù)量.
2)加速比
?? 流水線的加速比是指m段流水線的速度與等功能的非流水線的速度之比.
3)效率
效率是指流水線中個(gè)功能段的利用率.
2. 超標(biāo)量和動(dòng)態(tài)流水線的基本概念
(1) 超標(biāo)量
在超標(biāo)量的處理器結(jié)構(gòu)中,整數(shù)和浮點(diǎn)數(shù)運(yùn)算,裝入,存儲(chǔ)以及條件轉(zhuǎn)移等普通操作指令可以同時(shí)啟動(dòng)并獨(dú)立執(zhí)行.
超標(biāo)量流水CPU是指集成了多條流水線結(jié)構(gòu)的CPU,當(dāng)流水線滿載時(shí),每個(gè)時(shí)鐘周期可以完成一條以上的指令.
(2) 動(dòng)態(tài)流水線
流水線按功能可分成單功能流水線和多功能流水線兩種.
??? 單功能流水線只完成一種功能.如浮點(diǎn)加法或乘法流水線.
??? 多功能流水線則可完成多種功能,它允許在不同時(shí)間,甚至同一時(shí)間內(nèi)在流水線內(nèi)連接不同功能段的子集來實(shí)現(xiàn)不同功能.
流水線按工作方式可分為靜態(tài)流水線和動(dòng)態(tài)流水線兩種.
??? 在靜態(tài)流水線中,同一時(shí)間內(nèi)它只能以一種功能方式工作.它可以是單功能的,也可以是多功能的.當(dāng)是多功能流水線時(shí),則從一種功能方式變?yōu)榱硪环N功能方式時(shí),必須先排空流水線,然后為另一種功能設(shè)置初始條件后方可使用.顯然,不希望這種功能的轉(zhuǎn)換頻繁的發(fā)生,否則將嚴(yán)重影響流水線的處理效率.
???? 動(dòng)態(tài)流水線則允許在同一時(shí)間內(nèi)將不同的功能段連接成不同的功能子集(前提條件是功能部件的使用不發(fā)生沖突),以完成不同的運(yùn)算功能.顯然,動(dòng)態(tài)流水線必是多功能流水線,而單功能流水線則必是靜態(tài)的.
?
?
六, 總線
(一) 總線概述
1. 總線的基本概念
總線是連接各個(gè)部件的信息傳輸線,是各個(gè)部件共享的傳輸介質(zhì),總線上信息的傳送分為串行和并行傳輸
| 同步通信 | 通信雙方由統(tǒng)一時(shí)標(biāo)控制數(shù)據(jù)傳送稱為同步通信 | 一般用于總線長度較短,各部件存取時(shí)間比較一致的場合 |
| 異步通信 | 異步通信克服了同步通信的缺點(diǎn),允許各模塊速度的不一致性,給設(shè)計(jì)者充分的靈活性和選擇余地. | (1)不互鎖方式.主模塊發(fā)出請求信號(hào)后,不等待接到從模塊的回答信號(hào),而是經(jīng)過一段時(shí)間.確認(rèn)從模塊已收到請求信號(hào)后,便撤消其請求信號(hào);從設(shè)備接到請求信號(hào)后,在條件允許時(shí)發(fā)出回答信號(hào),并經(jīng)過一段時(shí)間,確認(rèn)主設(shè)備已收到回答信號(hào)后,自動(dòng)撤消回答信號(hào).可見通信雙方并無互鎖關(guān)系. (2)半互鎖方式.主模塊發(fā)出請求信號(hào),待接到從模塊的回答信號(hào)后再撤消其請求信號(hào),存在著簡單的互鎖關(guān)系:而從模塊發(fā)出回答信號(hào)后,不等待主模塊回答,在一段時(shí)間后便撤消其回答信號(hào),無互鎖關(guān)系.故稱半互鎖方式. (3)全互鎖方式.主模塊發(fā)出請求信號(hào),待從模塊回答后再撤其請求信號(hào);從模塊發(fā)出回答信號(hào),待主模塊獲知后,再撤消其回答信號(hào).故稱全互鎖方式. |
| 半同步通信 | 半同步通信集同步與異步通信之優(yōu)點(diǎn),既保留了同步通信的基本特點(diǎn),如所有的地址,命令,數(shù)據(jù)信號(hào)的發(fā)出時(shí)間,都嚴(yán)格參照系統(tǒng)時(shí)鐘的某個(gè)前沿開始,而接收方都采用系統(tǒng)時(shí)鐘后沿時(shí)刻來進(jìn)行判斷識(shí)別.同時(shí)又像異步通信那樣,允許不同速度的模塊和諧地工作.為此增設(shè)了一條“等待”( )響應(yīng)信號(hào)線. | 半同步通信適用于系統(tǒng)工作速度不高,但又包含了許多工作速度差異較大的各類設(shè)備的簡單系統(tǒng).半同步通信控制方式比異步通信簡單,在全系統(tǒng)內(nèi)各模塊又在統(tǒng)一的系統(tǒng)時(shí)鐘控制下同步工作,可靠性較高,同步結(jié)構(gòu)較方便.其缺點(diǎn)是對系統(tǒng)時(shí)鐘頻率不能要求太高,故從整體上來看,系統(tǒng)工作的速度還是不很高. |
| 分離式通信 | 分離式通信的基本思想是將一個(gè)傳輸周期(或總線周期)分解為兩個(gè)子周期 | 這種方式控制比較復(fù)雜,一般在普通微機(jī)系統(tǒng)很少采用 |
按照系統(tǒng)總線傳輸信息的不同
| 數(shù)據(jù)總線 | 雙向傳輸 | ?? 高電平為1低電平為0 | |
| 地址總線 | 單向傳輸 | 地址線位數(shù)n與存儲(chǔ)單元N數(shù)之間的關(guān)系?? N=2n | |
| 控制總線 | 讀寫控制線 片選線 | 每根都是單向的 總體輸入輸出 | 用來發(fā)出各種控制信號(hào)的傳輸線 |
?
| 通信總線 | 串行總線 | 近距離 小于30米 |
| 并行總線 | 遠(yuǎn)距離 幾米到數(shù)公里 |
?
2. 總線的分類
1)片內(nèi)總線:芯片內(nèi)部的總線
2)系統(tǒng)總線:計(jì)算機(jī)各部件之間 的信息傳輸線
數(shù)據(jù)總線:雙向? 與機(jī)器字長,存儲(chǔ)字長有關(guān)
地址總線:單向? 與存儲(chǔ)地址, I/O地址有關(guān)
控制總線:部分出部分入 控制器控制所有部件
3)通信總線:用于 計(jì)算機(jī)系統(tǒng)之間 或 計(jì)算機(jī)系統(tǒng),與其他系統(tǒng)(如控制儀表,移動(dòng)通信等)之間的通信
傳輸方式:串行通信總線和并行通信總線
3. 總線的組成及性能指標(biāo)
總線的結(jié)構(gòu)通常分為單總線結(jié)構(gòu)和多總線結(jié)構(gòu).
單總線結(jié)構(gòu)是將CPU,主存,I/O設(shè)備(通過I/O接口)都掛在一組總線上.
多總線結(jié)構(gòu)的特點(diǎn)是將速度較低的I/O設(shè)備從單總線上分離出來,形成主總線與I/O設(shè)備總線分開的結(jié)構(gòu).
總線的性能指標(biāo)
1)總線寬度:數(shù)據(jù)總線的根數(shù)
2)總線帶寬:數(shù)據(jù)傳輸率
3)時(shí)鐘同步/異步:總線上的數(shù)據(jù)與時(shí)鐘同步的稱為同步總線,與時(shí)鐘不同步的稱為異步總線
4)總線復(fù)用:一條信號(hào)線上分時(shí)傳送兩種信號(hào).
5)信號(hào)線數(shù):地址總線,數(shù)據(jù)總線和控制總線三種總線數(shù)的總和.
6)總線控制方式:包括突發(fā)工作,自動(dòng)配置,總裁方式,邏輯方式,技術(shù)方式等.
7)其他指標(biāo):負(fù)載能力,電源電壓,總線寬度能否擴(kuò)展等.
(二) 總線仲裁
由于總線上連接著多個(gè)部件,何時(shí)由哪個(gè)部件發(fā)送信息,如何定時(shí),如何防止信息丟失,如何避免多個(gè)設(shè)備同時(shí)發(fā)送,如何規(guī)定接收部件等一系列問題都需要總線控制器統(tǒng)一管理,主要包括總線的判優(yōu)控制(仲裁邏輯)和通信控制.
總線仲裁邏輯可分為集中式和分布式兩種,前者將控制邏輯集中在一處(如在CPU中),后者將控制邏輯分散在總線的各個(gè)部件之上.
1. 集中仲裁方式
集中仲裁方式有三種:
(1)鏈?zhǔn)讲樵?/p>
當(dāng)一個(gè)或多個(gè)設(shè)備同時(shí)發(fā)出總線使用請求信號(hào)BR時(shí),中央仲裁器發(fā)出的總線授權(quán)信號(hào)BG沿著菊花鏈串行的從一個(gè)設(shè)備依次傳送到下一個(gè)設(shè)備,到達(dá)離出發(fā)點(diǎn)最近的發(fā)出總線請求的設(shè)備之后就不再往下傳.
(2)計(jì)數(shù)器定時(shí)查詢
總線上個(gè)設(shè)備通過總線請求信號(hào)BR,發(fā)出請求,中央仲裁器接收到請求信號(hào)后,在總線忙信號(hào)BS為“0”的情況下,讓計(jì)數(shù)器開始計(jì)數(shù),計(jì)數(shù)值通過一組地址線發(fā)往各設(shè)備.每個(gè)設(shè)備有一個(gè)地址判別電路,如果地址線上的計(jì)數(shù)值與總線請求設(shè)備地址一致,則該設(shè)備對BS線置“1”,表示該設(shè)備獲得了總線使用權(quán),同時(shí)中止計(jì)數(shù)查詢.
(3)獨(dú)立請求方式
每個(gè)連接到總線的設(shè)備都有一組單獨(dú)的總線請求信號(hào)BRi與總線授權(quán)信號(hào)BGi.每個(gè)設(shè)備請求使用總線時(shí),它們各自發(fā)出自己的總線請求信號(hào).中央仲裁器中設(shè)置了一個(gè)專門的排隊(duì)電路,由它根據(jù)一定的優(yōu)先次序決定優(yōu)先響應(yīng)哪個(gè)設(shè)備的請求,然后給該設(shè)備總線授權(quán)信號(hào)BGi
2. 分布仲裁方式
同集中式仲裁相比,分布式仲裁不需要中央仲裁器,而是讓各個(gè)主設(shè)備功能模塊都有自己的仲裁號(hào)和仲裁電路.需要使用總線時(shí),各個(gè)設(shè)備的功能模塊將自己唯一的仲裁號(hào)發(fā)送到共享的總線上,各自的仲裁電路再將從仲裁總線上獲得的仲裁號(hào)和自己的仲裁號(hào)相對比,獲勝的仲裁號(hào)將保留在仲裁總線上,相應(yīng)設(shè)備的總線請求獲得響應(yīng).
(三) 總線操作和定時(shí)
目前在總線上的操作主要有以下幾種:
1)讀和寫
? 讀是將從設(shè)備(如存儲(chǔ)器)中的數(shù)據(jù)讀出并經(jīng)總線傳輸?shù)街髟O(shè)備(如CPU);寫是主設(shè)備到從設(shè)備的數(shù)據(jù)傳輸過程.
2)塊傳送
? 主設(shè)備給出要傳輸?shù)臄?shù)據(jù)塊的起始地址后,就可以利用總線對固定長度的數(shù)據(jù)一個(gè)接一個(gè)的讀出或?qū)懭?
3)寫后讀或讀后寫
? 主設(shè)備給出地址一次,就可以進(jìn)行先寫后讀或者先讀后寫操作,先讀后寫往往用于校驗(yàn)數(shù)據(jù)的正確性,先寫后讀往往用于多道程序的對共享存儲(chǔ)資源的保護(hù).
4)廣播和廣集
? 主設(shè)備同時(shí)向多個(gè)從設(shè)備傳輸數(shù)據(jù)的操作模式稱為廣播.廣集操作和廣播操作正好相反,它將從多個(gè)從設(shè)備的數(shù)據(jù)在總線上完成AND或OR操作,常用于檢測多個(gè)中斷源.
所謂定時(shí),是指事件出現(xiàn)在總線上的時(shí)間關(guān)系.總線常用的定時(shí)協(xié)議有同步定時(shí)方式和異步定時(shí)方式
1. 同步定時(shí)方式
同步定時(shí)方式要求所有的模塊由統(tǒng)一的始終脈沖進(jìn)行操作的控制,各模塊的所有動(dòng)作均在時(shí)鐘周期的開始產(chǎn)生,并且多數(shù)動(dòng)作在一個(gè)時(shí)鐘周期內(nèi)完成.
2. 異步定時(shí)方式
異步定時(shí)方式是一種應(yīng)答方式或者互鎖機(jī)制的定時(shí)方式.對于異步操作,操作的發(fā)生由主設(shè)備或從設(shè)備的的特定信號(hào)來確定.總線上一個(gè)事件的發(fā)生取決于前一個(gè)事件的發(fā)生,雙方互相提供聯(lián)絡(luò)信號(hào).
(四) 總線標(biāo)準(zhǔn)
總線標(biāo)準(zhǔn)就是系統(tǒng)與各模塊,模塊與模塊之間的一個(gè)互連的標(biāo)準(zhǔn)界面.
目前流行的總線標(biāo)準(zhǔn)有以下幾種:
1.系統(tǒng)總線
1)ISA----工業(yè)標(biāo)準(zhǔn)體系(Industry Standard Architecture),它是最早出現(xiàn)的微型計(jì)算機(jī)總線標(biāo)準(zhǔn),應(yīng)用在IBM的AT機(jī)上.直到現(xiàn)在,微型計(jì)算機(jī)主板或工作站主板上還保留有少量的ISA擴(kuò)展槽.
2)EISA----擴(kuò)展工業(yè)標(biāo)準(zhǔn)體系(Extended Industry Standard Architecture),主要用于286微機(jī).EISA對ISA完全兼容.
3)VESA----視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(Video Electronic Standard Association),是按照局部總線標(biāo)準(zhǔn)設(shè)計(jì)的一種開放總線,只適合于486的一種過渡標(biāo)準(zhǔn),已淘汰.
4)PCI----外圍設(shè)備互聯(lián)(Peripheral Component Interconnection),PCI局部總線是高性能的32位或64位總線,它是專門為高集成度的外圍部件,擴(kuò)充插板和處理器/存儲(chǔ)器系統(tǒng)而設(shè)計(jì)的互連機(jī)制.
5)AGP----是一種新型的視頻接口的技術(shù)標(biāo)準(zhǔn),專用于連接主存和圖形存儲(chǔ)器.AGP總線寬32位,時(shí)鐘頻率66MHz,能以133MHz工作,最高的傳輸速率可達(dá)533Mbps.
2.設(shè)備總線
1)IDE----集成驅(qū)動(dòng)電子設(shè)備(Integrated Drive Electronics),它是一種在主機(jī)處理器和磁盤驅(qū)動(dòng)器之間廣泛使用的集成總線.絕大部分PC的硬盤和相當(dāng)數(shù)量的CD-ROM驅(qū)動(dòng)器都是通過這種接口和主機(jī)連接的.
2)SCSI----小型計(jì)算機(jī)系統(tǒng)接口(Small Computer System Interface),現(xiàn)在這種接口不再局限于將各種設(shè)備與小型計(jì)算機(jī)直接連接起來,它已經(jīng)成為各種計(jì)算機(jī)(包括工作站,小型機(jī),甚至大型機(jī))的系統(tǒng)接口.
3)RS-232----(Recommended Standard-232C),是由美國電子工業(yè)協(xié)會(huì)EIA(Electronic Industries Association)推薦的一種串行通信總線標(biāo)準(zhǔn).
4) USB----USB(Universal Serial Bus)接口基于通用的連接技術(shù),可實(shí)現(xiàn)外設(shè)的簡單快速連接,已達(dá)到方便用戶,降低成本,擴(kuò)展微機(jī)連接外設(shè)范圍的目的.
七, 輸入輸出(I/O)系統(tǒng)
(一) I/O系統(tǒng)基本概念
除了CPU存儲(chǔ)器兩大模塊之外,計(jì)算機(jī)硬件系統(tǒng)的第三個(gè)關(guān)鍵部分就是輸入輸出模塊,也稱輸入輸出系統(tǒng).輸入輸出系統(tǒng)的發(fā)展概況
1)早期????????????????????? 分散連接,CPU 和 I/O設(shè)備? 串行 工作,程序查詢方式
2)接口模塊和 DMA 階段?????? 總線連接,CPU 和 I/O設(shè)備? 并行 工作,中斷方式和DMA 方式
3)具有通道結(jié)構(gòu)的階段
4)具有 I/O 處理機(jī)的階段
輸入輸出系統(tǒng)應(yīng)該由I/O軟件和I/O硬件兩部分組成
I/O軟件
(1) I/O 指令? CPU 指令的一部分
(2) 通道指令 通道自身的指令
指出數(shù)組的首地址、傳送字?jǐn)?shù)、操作命令
如 IBM/370 通道指令為 64 位
2. I/O 硬件
設(shè)備 I/O 接口
設(shè)備 設(shè)備控制器? 通道
輸入輸出系統(tǒng)軟件的主要任務(wù)是:
①何將用戶編制的程序(或數(shù)據(jù))輸入至主機(jī)內(nèi);
②如何將運(yùn)算結(jié)果輸送給用戶;
③如何實(shí)現(xiàn)I/O系統(tǒng)與主機(jī)工作的協(xié)調(diào)等.
I/O設(shè)備與主機(jī)的聯(lián)系方式
1.I/O編址方式
通常將I/O設(shè)備碼視為地址碼,對I/O地址碼的編址可采用兩種方式:
統(tǒng)一編址??? 用取數(shù)、存數(shù)指令
就是將I/O地址看作是存儲(chǔ)器地址的一部分.如在64K地址的存儲(chǔ)空間中,劃出8K地址作為I/O的地址,.凡是在這8K地址范圍內(nèi)的訪問,就是對 I/O的訪問,所用的指令與訪存指令相似.
不統(tǒng)一編址? 有專門的I/O 指令
就是指I/O地址和存儲(chǔ)器地址是分開的,所有對I/O的訪問必須有專用的I/O指令.
顯然統(tǒng)一編址占用了存儲(chǔ)空間,減少了主存容量,但無需專用的I/O指令.不統(tǒng)一編址由于不占用主存空間,故不影響主存容量,但需設(shè) I/O專用指令.因此,設(shè)計(jì)機(jī)器時(shí),需根據(jù)實(shí)際情況權(quán)衡考慮選取何種編址方式.
2.設(shè)備尋址 用設(shè)備選擇電路識(shí)別是否被選中
由于每臺(tái)設(shè)備都賦予一個(gè)設(shè)備號(hào),因此,當(dāng)要啟動(dòng)某一設(shè)備時(shí),可由I/O指令的設(shè)備碼字段直接指出該設(shè)備的設(shè)備號(hào). 通過接口電路中的設(shè)備選擇電路,便可選中要交換信息的設(shè)備.
3.傳送方式
并行傳送
串行傳送
4.聯(lián)絡(luò)方式? 三種聯(lián)絡(luò)方式
(1)立即響應(yīng)方式
(2)異步工作采用應(yīng)答信號(hào)聯(lián)絡(luò)
(3)同步工作采用同步時(shí)標(biāo)聯(lián)絡(luò)
5.I/O與主機(jī)的連接方式
I/O設(shè)備與主機(jī)的連接方式通常有兩種:輻射式和總線式.
采用輻射式連接方式時(shí),要求每臺(tái) I/O設(shè)備都有一套控制線路和一組信號(hào)線,因此所用的器件和連線較多,對 I/O設(shè)備的增刪都比較困難.這種連接方式大多出現(xiàn)在計(jì)算機(jī)發(fā)展的初期階段.
圖5.2所示的是總線連接方式,通過一組總線(包括地址線,數(shù)據(jù)線,控制線等),將所有的I/O設(shè)備與主機(jī)連接.這種連接方式是現(xiàn)代大多數(shù)計(jì)算機(jī)系統(tǒng)所采用的方式.
為了進(jìn)一步提高CPU的工作效率,又出現(xiàn)了DMA(Direct Memory Access)技術(shù),其特點(diǎn)是I/O 與主存之間有一條直接數(shù)據(jù)通路,I/O設(shè)備可以與主存直接交換信息,使CPU 在I/O與主存交換信息時(shí),能繼續(xù)完成自身的工作,故其資源利用率得到了進(jìn)一步的提高.
(二) 外部設(shè)備
1. 輸入設(shè)備:鍵盤,鼠標(biāo)
(1)鍵盤
鍵盤是目前應(yīng)用最普遍的一種輸入設(shè)備,與CRT顯示器組成終端設(shè)備.
鍵盤是由一組排列成陣列形式的按鍵開關(guān)組成的,每按下一個(gè)鍵,產(chǎn)生一個(gè)相應(yīng)的字符代碼(每個(gè)按鍵的位置碼),然后將它轉(zhuǎn)換成ASCII碼或其他碼,送主機(jī).目前常用的標(biāo)準(zhǔn)鍵盤有101個(gè)鍵,它除了提供通常的ASCII字符以外,還有多個(gè)功能鍵(由軟件系統(tǒng)定義功能),光標(biāo)控制鍵(上,下,左,右移動(dòng)等)與編輯鍵(插入或消去字符)等.
(2)鼠標(biāo)
機(jī)械式: 金屬球?電位器,
光電式: 光電轉(zhuǎn)換器
2. 輸出設(shè)備:顯示器,打印機(jī)
(1)顯示器
顯示器分類:
按器件分:CRT顯示器; ??????Cathode Ray Tube陰極射線管
?????? LED顯示器; ??????Light Emitting Diode發(fā)光二極管
?????? 等離子體顯示器 ??PDP Plasma Display Panel,中文叫等離子顯示器
按顯示內(nèi)容分:字符顯示器;字符發(fā)生器 通過字符發(fā)生器在CRT上顯示字符.
???????????? 圖形顯示器;主觀圖像??用點(diǎn),線(直線和曲線),面(平面和曲面)組合成平面或立體圖形的顯示設(shè)備.主要用于計(jì)算機(jī)輔助設(shè)計(jì)和計(jì)算機(jī)輔助制造等.
?????????? ??圖像顯示器; 客觀圖像? 圖像顯示器所顯示的圖像(如遙感圖形,醫(yī)學(xué)圖像,自然景物,新聞圖片等)通常來自客觀世界,又被稱為客觀圖像.圖像顯示器是把由計(jì)算機(jī)處理后的圖像(數(shù)字圖像)以點(diǎn)陣的形式顯示出來,通常以光柵掃描方式,其分別率可達(dá)256x256像素,或者512x512像素,也可以與圖形顯示器兼容,其分別率可達(dá)到1024x1024像素,灰度等級(jí)可達(dá)64至256級(jí).
按設(shè)備功能分:普通顯示器;僅供顯示,也稱監(jiān)視器.
????????????? ?顯示終端;顯示器和鍵盤組成的輸入輸出設(shè)備.
?(2)打印機(jī)
打印機(jī)分類
| 印字原理 | 打擊式 | 點(diǎn)陣式打印機(jī) | 點(diǎn)陣針式打印機(jī)的印字原理是由打印針(鋼針)印出nxm個(gè)點(diǎn)陣組成字符或圖形.西文字符點(diǎn)陣有5x7,7x7,7x9,9x9幾種,漢字點(diǎn)陣有16x16,24x24,32x32,48x48幾種. 打印頭中的鋼針數(shù)與打印機(jī)的型號(hào)有關(guān),有7針,9針,也有雙列14(2x7)針或雙列24(2x12)針. |
| 非打擊式 | 激光 | 激光打印機(jī)采用激光技術(shù)和照相技術(shù),印字質(zhì)量最好,各個(gè)計(jì)算機(jī)系統(tǒng)中被廣泛采用. 激光打印機(jī)完成打印操作的基本工作過程大致是:充電→曝光→顯影→轉(zhuǎn)印→分離→定影→放電,清潔. | |
| 靜電 | 靜電打印機(jī)(Electrostatic Printer),(基于靜電成像原理(像許多復(fù)印機(jī)一樣)的打印設(shè)備.靜電打印機(jī)將充電版材上或是噴嘴中釋放的色粉樹脂或是染料傳遞到承印材料上,然後對它進(jìn)行熱固化處理. | ||
| 噴墨 | 噴墨打印機(jī)是串行非打擊式打印機(jī),印字原理是將墨水噴射到普通打印紙上.若采用紅,綠,藍(lán)三色噴墨頭,便可實(shí)現(xiàn)彩色打印. 噴墨打印機(jī)按照噴墨方式分為連續(xù)式和隨機(jī)式兩大類.連續(xù)噴射方式是給墨水加壓,使墨水流通過噴嘴連續(xù)噴射而粒子化.隨機(jī)式是指墨水只有在打印需要時(shí)才噴射,所以又稱為按需打印式.目前,隨機(jī)式噴墨打印機(jī)采用的噴墨技術(shù)主要有壓電式和氣泡式. | ||
| 工作方式 | 串行打印機(jī),逐字打印 | ||
| 行式打印機(jī),逐行打印 | |||
3. 外存儲(chǔ)器:硬盤存儲(chǔ)器,磁盤陣列,光盤存儲(chǔ)器
(1)硬盤存儲(chǔ)器
1)性能指標(biāo)
| <1>存儲(chǔ)密度 | 道密度 Dt,位密度 Db |
| <2>存儲(chǔ)容量 | C = n × k × s |
| <3>尋址時(shí)間 | 尋道時(shí)間 + 等待時(shí)間 輔存的速度=尋址時(shí)間+磁頭讀寫時(shí)間 |
| <4>數(shù)據(jù)傳輸率 | Dr? = Db× V |
| <5>誤碼率 | 出錯(cuò)信息位數(shù)與讀出信息的總位數(shù)之比 |
外存設(shè)備的主要技術(shù)指標(biāo)
<1>存儲(chǔ)密度
<2>存儲(chǔ)容量
<3>尋址時(shí)間
<4>數(shù)據(jù)傳輸率
<5>誤碼率
<6>價(jià)格
2)硬磁盤存儲(chǔ)器的類型
<1> 固定磁頭和移動(dòng)磁頭
??? 固定磁頭的磁盤存儲(chǔ)器,其磁頭位置固定不動(dòng),磁盤上的每一個(gè)磁道都對應(yīng)著一個(gè)磁頭,盤片也不可更換,其特點(diǎn)是省去了磁頭沿著盤片徑向運(yùn)動(dòng)所需的尋道時(shí)間,存取速度快,只要磁頭進(jìn)入工作狀態(tài)即可以進(jìn)行讀寫操作.
移動(dòng)磁頭的磁盤存儲(chǔ)器在存取數(shù)據(jù)時(shí),磁頭在盤面上作徑向運(yùn)動(dòng),這類存儲(chǔ)器可以由一個(gè)盤片組成,也可以由多個(gè)盤片裝在一個(gè)同心的主軸上,每個(gè)紀(jì)錄面各有一個(gè)磁頭.
<2> 可換盤和固定盤
可換盤磁盤存儲(chǔ)器是指盤片可脫機(jī)保存,這種磁盤可在互為兼容的磁盤存儲(chǔ)器間交換數(shù)據(jù),便于擴(kuò)大存儲(chǔ)容量.
固定盤磁盤存儲(chǔ)器是指磁盤不能從驅(qū)動(dòng)器上取下,更換時(shí)要把整個(gè)頭盤組合體一起更換.
3)硬磁盤存儲(chǔ)器的磁道記錄格式
一個(gè)具有n個(gè)盤片的磁盤組,可將n個(gè)面上的同一半徑的磁道看成一個(gè)圓柱面,這些磁道存儲(chǔ)的信息稱為柱面信息.盤面又分為若干個(gè)扇區(qū),每條磁道有被分割為若干個(gè)扇段,數(shù)據(jù)在盤片上的布局如圖所示:
因此,尋制用的磁盤地址應(yīng)該由頭號(hào),磁道號(hào),盤面號(hào),扇段號(hào)等字段組成,也可將扇段號(hào)用扇區(qū)號(hào)代替.
(2)磁盤陣列
1)廉價(jià)冗余磁盤陣列(RAID-Redundant? Arrays?of Inexpensive? Disk)
??? 其原理是將并行處理原理引入磁盤系統(tǒng).它采用低成本的小溫盤,使多臺(tái)磁盤構(gòu)成同步化的磁盤陣列,數(shù)據(jù)展開存儲(chǔ)在多臺(tái)磁盤上,提高了數(shù)據(jù)傳輸?shù)膸?并利用冗余技術(shù)提高可靠性,類似于存儲(chǔ)器中的多體交叉技術(shù).
??? 磁盤陣列還具有容量大,數(shù)據(jù)傳輸速率高,功耗低,體積小,成本低和便于維護(hù)等優(yōu)點(diǎn),其發(fā)展前途十分光明.同步磁盤陣列的關(guān)鍵技術(shù)是對多臺(tái)磁盤機(jī)進(jìn)行同步控制,包括采用緩沖器使數(shù)據(jù)同步.
?
?
2)RAID分類
工業(yè)界公認(rèn)的標(biāo)準(zhǔn)有6級(jí)別,分別為RAID0~RAID5:
RAID-0級(jí)采用無冗余無校驗(yàn)的數(shù)據(jù)分塊技術(shù).
RAID-1級(jí)采用磁盤鏡像陣列技術(shù).
RAID-2級(jí)采用海明糾錯(cuò)碼的磁盤陣列,通過增加校驗(yàn)磁盤實(shí)現(xiàn)單糾錯(cuò)雙檢錯(cuò)功能.
RAID-3級(jí)是采用奇偶校驗(yàn)冗余的磁盤陣列,它也采用數(shù)據(jù)位交叉,陣列中只用一個(gè)校驗(yàn)盤.
RAID-4級(jí)是一種獨(dú)立傳送磁盤陣列,它采用數(shù)據(jù)塊交叉,用一個(gè)校驗(yàn)盤.
RAID-5也是一種獨(dú)立傳送磁盤陣列,它采用數(shù)據(jù)塊交叉和分布的冗余校驗(yàn),將數(shù)據(jù)和校驗(yàn)位都分布在各磁盤中,沒有專門的奇偶校驗(yàn)驅(qū)動(dòng)器.
?
?
(3)光盤存儲(chǔ)器
(1)光盤存儲(chǔ)器
光盤存儲(chǔ)器利用激光束在介質(zhì)表面燒蝕凹坑存儲(chǔ)信息.根據(jù)激光束及其反射光的強(qiáng)弱不同,完成信息的讀和寫.
光盤存儲(chǔ)器稱光盤,是目前廣泛使用的一種外存儲(chǔ)器,更是多媒體計(jì)算機(jī)不可缺少的設(shè)備.它以介質(zhì)材料的光學(xué)性質(zhì)(如反射率,偏振方向)的變化來表示所存儲(chǔ)信息的“1”和“0”.其突出的優(yōu)點(diǎn)是,激光束可以聚焦到1μm以下,記錄密度可達(dá)645Mb/i2.
光盤的種類根據(jù)光盤的可讀寫性分為只讀光盤,寫一次/多次讀光盤和可重寫光盤.
(2)CD-ROM光盤
<1>光盤的信息記錄方式
光盤的信息記錄方式以凹坑方式永久性存儲(chǔ).當(dāng)激光束聚焦點(diǎn)照射在兩個(gè)凹坑之間的盤面上時(shí)大部分光將返回,而照在凹坑上時(shí)將發(fā)生衍射,反射率低,將反射光的光強(qiáng)變化在轉(zhuǎn)換成電信號(hào),即可讀出記錄信息.
<2>光盤的扇區(qū)數(shù)據(jù)結(jié)構(gòu)
光道上劃分出一個(gè)個(gè)的扇區(qū),這是光盤最小的可尋址單元.扇區(qū)結(jié)構(gòu)如圖所示:
| 00 |
| FF(x10) |
| 00 |
| MN |
| SC |
| MD |
| 數(shù)據(jù) |
| 校驗(yàn) |
| SYNC (12字節(jié)) |
| ID (4字節(jié)) |
| 數(shù)據(jù) (2048字節(jié)) |
| 校驗(yàn)區(qū) (288字節(jié)) |
| ?扇區(qū) (2352字節(jié)) |
| 光盤扇區(qū)結(jié)構(gòu) |
由圖可見,光盤扇區(qū)分為4個(gè)區(qū)域.2個(gè)全0字節(jié)和10個(gè)全1字節(jié)組成的同步(SYNC)區(qū),標(biāo)志著扇區(qū)的開始.4字節(jié)的扇區(qū)標(biāo)示(ID)區(qū)用于說明此扇區(qū)的地址和工作模式.光盤的扇區(qū)標(biāo)志地址以分(MN),秒(SC)和分?jǐn)?shù)秒(FR,1/75s)時(shí)間值為地址.
(三) I/O接口(I/O控制器)
1. I/O接口的功能和基本結(jié)構(gòu)
1)I/O接口的基本功能是:
(1)實(shí)現(xiàn)設(shè)備的選擇
(2)實(shí)現(xiàn)數(shù)據(jù)緩沖達(dá)到速度匹配
(3)實(shí)現(xiàn)數(shù)據(jù)串并格式轉(zhuǎn)換
(4)實(shí)現(xiàn)電平轉(zhuǎn)換
(5)傳送控制命令
(6)反映設(shè)備的狀態(tài)(“忙”,“就緒”,“中斷請求”)
2)接口的基本組成
2. I/O端口及其編址
CPU采用2種方法訪問I/O設(shè)備,也稱2種不同的I/O端口編址方法:
(1)專門的I/O指令
例如,指令:IN完成輸入,指令OUT完成輸出操作.指令的地址碼字段指出輸入輸出設(shè)備的設(shè)備代碼.
?? 由相應(yīng)的控制信號(hào)(如M/IO#)來區(qū)分CPU執(zhí)行的是什么指令.
(2)利用訪問存儲(chǔ)器指令完成I/O功能
? ??從主存的地址空間中分出一部分地址碼作為I/O的設(shè)備代碼,當(dāng)訪問到這些地址時(shí),表示被訪的不是主存儲(chǔ)器,而是I/O設(shè)備端口.沒有控制信號(hào)區(qū)分存儲(chǔ)器和端口,采用的是將該段地址譯碼輸出連接到外設(shè)的端口.
(四) I/O方式(I/O設(shè)備與主機(jī)信息傳送的控制方式)
1. 程序查詢方式
程序查詢方式的核心問題是每時(shí)每刻需要不斷查詢I/O設(shè)備是否準(zhǔn)備好.CPU不斷地詢問外設(shè)是否準(zhǔn)備好:如果準(zhǔn)備好,CPU執(zhí)行IO操作;否則,CPU一直等待.CPU大部分時(shí)間處于等待狀態(tài),利用率不高.
2. 程序中斷方式
(1)中斷的基本概念
計(jì)算機(jī)在執(zhí)行程序的過程中,當(dāng)出現(xiàn)異常情況或者特殊情況時(shí),CPU停止當(dāng)前程序的運(yùn)行,轉(zhuǎn)向?qū)@些異常情況或者特殊情況的處理,處理結(jié)束之后再返回到現(xiàn)行程序的間斷處繼續(xù)運(yùn)行,該過程就是中斷.
(2)中斷響應(yīng)過程
當(dāng)多個(gè)中斷源向CPU提出中斷請求時(shí),CPU在任何一個(gè)時(shí)刻只能接受一個(gè)中斷源的請求,所以,當(dāng)多個(gè)中斷源同時(shí)請求時(shí),CPU必須對各個(gè)中斷源的請求進(jìn)行排隊(duì),且只能接受級(jí)別最高的中斷源的請求,不允許低級(jí)別的中斷源中斷正在運(yùn)行的中斷服務(wù)程序.
每個(gè)設(shè)備都配備一個(gè)中斷請求觸發(fā)器和中斷屏蔽觸發(fā)器,當(dāng)中斷請求觸發(fā)器為“1”時(shí),表示該設(shè)備向CPU提出中斷請求,如果中斷屏蔽觸發(fā)器為“1”時(shí),表示該設(shè)備被屏蔽,即封鎖其中斷源的請求.
當(dāng)多個(gè)中斷源同時(shí)向CPU提出請求,CPU需要對這些中斷源的請求進(jìn)行排隊(duì),也稱中斷判優(yōu),有兩種判優(yōu)的方法:
1)查詢法
由測試程序按一定優(yōu)先排隊(duì)次序檢查各個(gè)設(shè)備的“中斷觸發(fā)器”(或稱為中斷標(biāo)志),當(dāng)遇到第一個(gè)“1”標(biāo)志時(shí),即找到了優(yōu)先進(jìn)行處理的中斷源,通常取出其設(shè)備碼,根據(jù)設(shè)備碼轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序.
2)串行排隊(duì)鏈法
由硬件組成一個(gè)串行的優(yōu)先鏈,稱作排隊(duì)鏈.
一旦CPU確定接受某個(gè)中斷源的請求,就需要執(zhí)行該設(shè)備的中斷服務(wù)程序,因此需要找到中斷服務(wù)程序的入口地址.入口地址的尋找可以用軟件或硬件的方法實(shí)現(xiàn).硬件向量法就是通過向量地址來尋找設(shè)備的中斷服務(wù)程序的入口地址.中斷向量地址形成部件可以通過向接受請求的中斷源發(fā)送中斷響應(yīng)信號(hào),然后由被響應(yīng)的設(shè)備回送設(shè)備碼,根據(jù)設(shè)備碼來產(chǎn)生中斷向量地址.
(3)中斷處理過程
中斷處理過程可分以下幾個(gè)步驟:
1)關(guān)中斷
進(jìn)入不可再次響應(yīng)中斷的狀態(tài),由硬件自動(dòng)實(shí)現(xiàn).因?yàn)榻酉氯ヒ4鏀帱c(diǎn),保存現(xiàn)場.在保存現(xiàn)場過程中,即使有更高級(jí)的中斷源申請中斷,CPU也不應(yīng)該響應(yīng);否則,如果現(xiàn)場保存不完整,在中斷服務(wù)程序結(jié)束之后,也就不能正確地恢復(fù)現(xiàn)場并 繼續(xù)執(zhí)行現(xiàn)行程序.
2)保存斷點(diǎn)和現(xiàn)場.
為了在中斷處理結(jié)束后能正確地返回到中斷點(diǎn),在響應(yīng)中斷時(shí),必須把當(dāng)前的程序計(jì)數(shù)器PC中的內(nèi)容(即斷點(diǎn))保存起來.
現(xiàn)場信息一般指的是程序狀態(tài)字,中斷屏蔽寄存器和CPU中各寄存器的內(nèi)容.
3)判別中斷源,轉(zhuǎn)向中斷服務(wù)程序.
在多個(gè)中斷源同時(shí)請求中斷的情況下,本次實(shí)際響應(yīng)的只能是優(yōu)先權(quán)最高的那個(gè)中斷源.所以,需進(jìn)一步判別中斷源,并轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序入口.
4)開中斷.
因?yàn)榻酉氯ゾ鸵獔?zhí)行中斷服務(wù)程序,開中斷將允許更高級(jí)中斷請求得到響應(yīng),實(shí)現(xiàn)中斷嵌套.
5)執(zhí)行中’斷服務(wù)程序.
不同中斷源的中斷服務(wù)程序是不同的,實(shí)際有效的中斷處理工作是在此程序段中實(shí)現(xiàn)的.
6)退出中斷.
在退出時(shí),又應(yīng)進(jìn)入不可中斷狀態(tài),即關(guān)中斷,恢復(fù)現(xiàn)場,恢復(fù)斷點(diǎn),然后開中斷,返回原程序執(zhí)行.
(4)多重中斷和中斷屏蔽的概念.
多重中斷是指在處理某一個(gè)中斷過程又發(fā)生了新的中斷請求,從而中斷該服務(wù)程序的執(zhí)行,又轉(zhuǎn)去進(jìn)行新的中斷處理.這種重疊處理中斷的現(xiàn)象又稱為中斷嵌套.
中斷屏蔽
當(dāng)產(chǎn)生中斷請求后,用程序方式有選擇地封鎖部分中斷,而允許其余部分中斷仍得到響立,稱為中斷屏蔽.
實(shí)現(xiàn)方法是為每個(gè)中斷源設(shè)置一個(gè)中斷屏蔽觸發(fā)器來屏蔽該設(shè)備的中斷請求.具體說,用程序方法將該觸發(fā)器置“1”,則對應(yīng)的設(shè)備中斷被封鎖,若將其置“0”,才允許該設(shè)備的中斷請求得到響應(yīng).由各設(shè)備的中斷屏蔽觸發(fā)器組成中斷屏蔽寄存器.
3. DMA方式
DMA是I/O設(shè)備與主存儲(chǔ)器之間由硬件組成的直接數(shù)據(jù)通路,用于高速I/O設(shè)備與主存之間的成組數(shù)據(jù)傳送.
數(shù)據(jù)傳送是在DMA控制器控制下進(jìn)行的,由DMA控制器給出當(dāng)前正在傳送的數(shù)據(jù)字的主存地址,并統(tǒng)計(jì)傳送數(shù)據(jù)的個(gè)數(shù)以確定一組數(shù)據(jù)的傳送是否已結(jié)束.在主存中要開辟連續(xù)地址的專用緩沖器,用來提供或接收傳送的數(shù)據(jù).在數(shù)據(jù)傳送前和結(jié)束后要通過程序或中斷方式對緩沖器和DMA控制器進(jìn)行預(yù)處理和后處理.
| 3.DMA 方式與程序中斷方式的比較 | ||
| ? | 中斷方式 | DMA方式 |
| (1) 數(shù)據(jù)傳送 | 程序 | 硬件 |
| (2) 響應(yīng)時(shí)間 | 指令執(zhí)行結(jié)束????? | 存取周期結(jié)束 |
| (3) 處理異常情況 | 能 | 不能 |
| (4) 中斷請求 | 傳送數(shù)據(jù)????????????? | 后處理 |
| (5) 優(yōu)先級(jí) | 低 | 高 |
(1)DMA控制器的組成;
1)主存地址寄存器(MAR)???????寄存器初始值為主存緩沖區(qū)的首地址.
2)外圍設(shè)備地址寄存器(ADR )?? 該寄存器存放I/O設(shè)備的設(shè)備碼,具體內(nèi)容取決于I/O設(shè)備的數(shù)據(jù)格式和地址字編址方式.
3)字?jǐn)?shù)計(jì)數(shù)器(WC)????????????該計(jì)數(shù)器對傳送數(shù)據(jù)的總字?jǐn)?shù)進(jìn)行統(tǒng)計(jì).
4)控制與狀態(tài)寄存器(CSR)?????該寄存器用來存放控制字和狀態(tài)字.
5)數(shù)據(jù)緩沖寄存器(DBR)???????該寄存器用來暫存I/O設(shè)備與主存?zhèn)魉偷臄?shù)據(jù).
6)中斷機(jī)構(gòu)?????????????????? 當(dāng)字計(jì)數(shù)器溢出(全“0”)時(shí),表示一批數(shù)據(jù)交換完成,由“溢出信號(hào)”通過中斷機(jī)構(gòu)向CPU提出中斷請求,請求CPU作DMA操作后處理.
(2)DMA傳送過程.
1)DMA預(yù)處理
在進(jìn)行DMA數(shù)據(jù)傳送之前要用程序做一些必要的準(zhǔn)備工作.先由CPU執(zhí)行幾條輸入輸出指令,測試設(shè)備狀態(tài),向DMA控制器的設(shè)備地址寄存器中送入設(shè)備地址并啟動(dòng)設(shè)備,在主存地址寄存器中送入交換數(shù)據(jù)的主存起始地址,在數(shù)據(jù)字?jǐn)?shù)寄存器中送入交換的數(shù)據(jù)個(gè)數(shù).在這些工作完成之后,CPU繼續(xù)執(zhí)行原來的程序.
2)DMA控制I/O設(shè)備與主存之間的數(shù)據(jù)交換
I/O設(shè)備啟動(dòng)后,若為輸入數(shù)據(jù),則要進(jìn)行以下操作:
<1>從輸入介質(zhì)讀入一個(gè)字到數(shù)據(jù)緩沖寄存器DBR中.
<2>向CPU發(fā)DMA請求,在取得總線控制權(quán)后,將DBR中的數(shù)據(jù)送人主存的數(shù)據(jù)寄存器.
<3>將DMA中的MAR內(nèi)容送主存的地址寄存器,啟動(dòng)寫操作,將數(shù)據(jù)寫入主存.
<4>將WC內(nèi)容減1,將MAR的內(nèi)容加1,給出下一個(gè)字的地址.
<5>判斷WC是否為“0”,若不是,說明還有數(shù)據(jù)需要傳送,檢查無錯(cuò)后準(zhǔn)備下一字的輸入.若WC為0,表明一組數(shù)據(jù)已傳送完畢,此時(shí)應(yīng)置結(jié)束標(biāo)志,向CPU發(fā)中斷請求.
3) CPU中斷原程序進(jìn)行后處理
若需繼續(xù)交換數(shù)據(jù),則又要對DMA控制器進(jìn)行初始化;若不需交換數(shù)據(jù),則停止外設(shè);若為出錯(cuò),則轉(zhuǎn)錯(cuò)誤診斷及處理程序.
三種方式的CPU工作效率比較
?(3)DMA三種工作方式:
| 1)CPU暫停方式 | 主機(jī)響應(yīng)DMA請求后,讓出存儲(chǔ)總線,直到一組數(shù)據(jù)傳送完畢后,DMA控制器才把總線控制權(quán)交還給CPU |
| 2)CPU周期竊取方式 | DMA控制器與主存儲(chǔ)器之間傳送一個(gè)數(shù)據(jù),占用(竊取)一個(gè)或幾個(gè)CPU周期,即CPU暫停工作一個(gè)或幾個(gè)周期,然后繼續(xù)執(zhí)行程序 |
| 3)CPU和DMA交替工作方式 | 當(dāng)CPU的工作周期比主存訪問時(shí)間長時(shí),使用這種方式.這種方式不需要總線使用權(quán)的申請,建立和歸還過程.將CPU周期分成C1和C2兩個(gè)周期,其中C1專門用于給DMA訪問主存,C2提供給CPU訪問主存.總線使用權(quán)通過C1和C2分別控制.CPU和DMA各自有自己的訪問地址寄存器,數(shù)據(jù)寄存器和讀寫信號(hào) |
4. 通道方式
I/O通道是計(jì)算機(jī)系統(tǒng)中代替CPU管理控制外設(shè)的獨(dú)立部件,是一種能執(zhí)行有限I/O指令集合——通道命令的I/O處理機(jī).
? 在通道控制方式下,一個(gè)主機(jī)可以連接幾個(gè)通道.每個(gè)通道又可連接多臺(tái)I/O設(shè)備,這些設(shè)備可具有不同速度,可以是不同種類.這種輸入輸出系統(tǒng)增強(qiáng)了主機(jī)與通道操作的并行能力以及各通道之間,同一通道的各設(shè)備之間的并行操作能力.同時(shí)也為用戶提供了增減外圍設(shè)備的靈活性.
? 采用通道方式組織輸入輸出系統(tǒng),多使用主機(jī)—通道—設(shè)備控制器— I/0設(shè)備四級(jí)連接方式.通道通過執(zhí)行通道程序?qū)嵤/O系統(tǒng)的統(tǒng)一管理和控制,因此,它是完成輸入輸出操作的主要部件.在CPU啟動(dòng)通道后,通道自動(dòng)地去內(nèi)存取出通道指令并執(zhí)行指令.直到數(shù)據(jù)交換過程結(jié)束向CPU發(fā)出中斷請求,進(jìn)行通道結(jié)束處理工作.
I/O通道的種類:?????
根據(jù)多臺(tái)設(shè)備共享通道的不同情況,可將通道分為三類:字節(jié)多路通道,選擇通道和數(shù)組多路通道.
(1)字節(jié)多路通道(低速,分時(shí))
字節(jié)多路通道(multiplexor? channel)是一種簡單的共享通道,在時(shí)間分割的基礎(chǔ)上,服務(wù)于多臺(tái)低速和中速面向字符的外圍設(shè)備.
字節(jié)多路通道包括多個(gè)子通道,每個(gè)子通道服務(wù)于一個(gè)設(shè)備控制器,可以獨(dú)立地執(zhí)行通直指令.每個(gè)子通道都需要有字符緩沖寄存器,I/O請求標(biāo)志/控制寄存器,主存地址寄存器和字節(jié)計(jì)數(shù)寄存器.而所有子通道的控制部分是公共的,由所有子通道所共享.通常,每個(gè)通道的有關(guān)指令和參量存放在主存固定單元中.當(dāng)通道在邏輯上與某一設(shè)備連通時(shí),將這些指令和參量取出來,送入公共控制部分的寄存器中使用.
字節(jié)多路通道要求每種設(shè)備分時(shí)占用一個(gè)很短的時(shí)間片,不同的設(shè)備在各自分得的時(shí)間片內(nèi)與通道建立傳輸連接,實(shí)現(xiàn)數(shù)據(jù)的傳送.
(2)選擇通道(高速,獨(dú)占)
選擇通道每次只能從所連接的設(shè)備中選擇一臺(tái)I/O設(shè)備的通道程序,此刻該通道程序獨(dú)占了整個(gè)通道.當(dāng)它與主存交換完數(shù)據(jù)后,才能轉(zhuǎn)去執(zhí)行另一個(gè)設(shè)備的通道程序,為另一臺(tái)設(shè)備服務(wù).因此,連接在選擇通道上的若干設(shè)備,只能依次使用通道與主存?zhèn)魉蛿?shù)據(jù).數(shù)據(jù)傳送是以成組(數(shù)據(jù)塊)方式進(jìn)行,每次傳送一個(gè)數(shù)據(jù)塊,因此,傳送速率很高.選擇通道多適合于快速設(shè)備(磁盤),這些設(shè)備相鄰字之間的傳送空閑時(shí)間極短.
(3)數(shù)組多路通道(綜合)
數(shù)組多路通道把字節(jié)多路通道和選擇通道的特點(diǎn)結(jié)合起來.它有多個(gè)子通道,既可以執(zhí)行多路通道程序,像字節(jié)多路通道那樣,所有子通道分時(shí)共享總通道;又可以用選擇通道那樣的方式傳送數(shù)據(jù).
數(shù)組多路通道具有多路并行操作能力,又具有很高的數(shù)據(jù)傳送速率,贏得了吞吐率的較大提高.它的缺點(diǎn)是增加了控制的復(fù)雜性.
總結(jié)
以上是生活随笔為你收集整理的计算机组成原理知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(1692):前端系列javas
- 下一篇: Unity3D 脚本实现动画效果