《计算机组成原理》
一、計(jì)算機(jī)系統(tǒng)概述
·計(jì)算機(jī)硬件系統(tǒng)=運(yùn)算器+存儲(chǔ)器+控制器+輸入、輸出設(shè)備
·(集成到一個(gè)芯片上)運(yùn)算器+控制器=CPU(中央處理器)
·計(jì)算機(jī)軟件分為:系統(tǒng)軟件(OS/DBMS)、應(yīng)用軟件(應(yīng)用程序)
·語(yǔ)言(從低到高):機(jī)器語(yǔ)言,匯編語(yǔ)言,高級(jí)語(yǔ)言
·翻譯程序:高級(jí)語(yǔ)言轉(zhuǎn)為機(jī)器語(yǔ)言,分為:解釋/編譯
解釋:逐條翻譯,立即執(zhí)行,不會(huì)生成目標(biāo)程序
編譯:一次性翻譯為目標(biāo)程序(會(huì)生成目標(biāo)程序)后執(zhí)行,時(shí)間長(zhǎng),運(yùn)行速度比解釋快
·匯編:把匯編語(yǔ)言源程序翻譯為機(jī)器語(yǔ)言程序的翻譯程序
·從源程序到可執(zhí)行文件:
預(yù)處理:將.h文件插入,生成.i文件
編譯階段:生成匯編語(yǔ)言程序,.s文件
匯編階段:講.s翻譯為機(jī)器語(yǔ)言指令,打包重定向?yàn)槟繕?biāo)文件.o
鏈接階段:生成可執(zhí)行文件
·馮諾依曼機(jī)到基本工作方式是:控制流驅(qū)動(dòng)方式
特點(diǎn):按地址訪問并順序執(zhí)行指令
指令和數(shù)據(jù)均以二進(jìn)制的形式放在存儲(chǔ)器中,CPU用指令周期的不同階段區(qū)分它們
程序功能都通過中央處理器實(shí)現(xiàn)
程序執(zhí)行前,指令和數(shù)據(jù)需要預(yù)先存放在存儲(chǔ)器中
·欲執(zhí)行指令在IR中;下一條指令地址在PC中
·CPU內(nèi)包括:控制器CU、ALU、PC、IR、MAR、MDR、標(biāo)志寄存器、通用寄存器組GPRs
·地址譯碼器在主存中
·位數(shù):MAR=地址碼長(zhǎng)度;MDR=存儲(chǔ)字長(zhǎng)
·相聯(lián)存儲(chǔ)器:既可以按地址尋址又可以按內(nèi)容尋址
·計(jì)算機(jī)硬件能夠直接執(zhí)行的只有機(jī)器語(yǔ)言
·字長(zhǎng):一次整數(shù)運(yùn)算能處理的二進(jìn)制位數(shù),一般等于內(nèi)部寄存器大小,通常取字節(jié)的整數(shù)倍
機(jī)器字長(zhǎng):CPU進(jìn)行一次整數(shù)運(yùn)算所能處理的二進(jìn)制數(shù)據(jù)位數(shù)(通常與ALU直接相關(guān))
指令字長(zhǎng):一條指令的總長(zhǎng)度,取決于操作碼與操作數(shù)的長(zhǎng)度(可能會(huì)改變)
存儲(chǔ)字長(zhǎng):一個(gè)存儲(chǔ)單元中的二進(jìn)制代碼位數(shù)(通常與MDR位數(shù)相同)
(指令字長(zhǎng)和機(jī)器字長(zhǎng)必須為字節(jié)的整數(shù)倍)
(機(jī)器字長(zhǎng)(一般)=內(nèi)部寄存器的位數(shù)=存儲(chǔ)字長(zhǎng)(的1,2,4…倍))
p.s.半/單/雙指令:指令長(zhǎng)度是機(jī)器字長(zhǎng)的半/單/雙倍(會(huì)影響取一條指令的訪存次數(shù))
數(shù)據(jù)字長(zhǎng):數(shù)據(jù)總線一次能并行傳送的信息位數(shù)
·數(shù)據(jù)通路帶寬:數(shù)據(jù)總線一次并行傳輸?shù)男畔⑽粩?shù)
·主存容量: 字?jǐn)?shù)(MAR)字長(zhǎng)(MDR)
MAR位數(shù)反映存儲(chǔ)單元的個(gè)數(shù)、可尋址的最大范圍;
MDR位數(shù)=存儲(chǔ)字長(zhǎng)=每個(gè)存儲(chǔ)單元大小
·運(yùn)算速度:吞吐量:取決于主存的存取周期
響應(yīng)時(shí)間:通常包括CPU時(shí)間與等待時(shí)間(磁盤訪問、存儲(chǔ)器訪問、IO操作、等開銷
主頻:CPU時(shí)鐘頻率,CPU時(shí)鐘周期的倒數(shù)
CPI:執(zhí)行一條指令所需的(平均)時(shí)鐘周期數(shù)
與系統(tǒng)結(jié)構(gòu)、指令集、計(jì)算機(jī)組織有關(guān)(與時(shí)鐘頻率無(wú)直接關(guān)系)
MIPS:每秒執(zhí)行多少百萬(wàn)條指令
M/G/T/P/EFLOPS:每秒執(zhí)行多少百萬(wàn)106/十億109/萬(wàn)億1012/億億1015/10^18
次浮點(diǎn)運(yùn)算
·寄存器由觸發(fā)器構(gòu)成
·CPU內(nèi)部的寄存器:IR、MAR、MDR對(duì)任何人均為透明的
匯編程序員可通過指令設(shè)置PC的值,也可見狀態(tài)寄存器和通用寄存器
·程序執(zhí)行時(shí)間=(CPI指令條數(shù))/時(shí)鐘頻率f
[補(bǔ)充]計(jì)算機(jī)系統(tǒng)組成
計(jì)算機(jī)系統(tǒng)=硬件系統(tǒng)+軟件系統(tǒng)
硬件系統(tǒng):主機(jī)(CPU+內(nèi)存)、系統(tǒng)總線、外部設(shè)備(外存儲(chǔ)器+輸入、輸出設(shè)備)
軟件系統(tǒng):系統(tǒng)軟件(OS,編譯和解釋程序,DBMS)、應(yīng)用軟件(文字處理)
CPU=控制器+運(yùn)算器(ALU+通用寄存器組+狀態(tài)條件寄存器)
內(nèi)存=Cache+主存(隨機(jī)存取存儲(chǔ)器RAM+只讀存儲(chǔ)器ROM)
二、數(shù)據(jù)的表示和運(yùn)算
【數(shù)制與編碼】
·二進(jìn)制優(yōu)點(diǎn):運(yùn)算簡(jiǎn)單、造2個(gè)穩(wěn)態(tài)的器件容易、便于利用邏輯門電路實(shí)現(xiàn)算術(shù)運(yùn)算
·二進(jìn)制轉(zhuǎn)八/十六進(jìn)制:以小數(shù)點(diǎn)為分界線,往左往右每3/4個(gè)劃為一組,不足位時(shí)補(bǔ)0
八進(jìn)制和十六進(jìn)制互轉(zhuǎn)以二進(jìn)制為中介
·任意進(jìn)制轉(zhuǎn)十進(jìn)制:各位數(shù)碼與位權(quán)乘積的和
·十進(jìn)制轉(zhuǎn)任意進(jìn)制:整數(shù)部分:除基取余;小數(shù)部分:乘基取整
·不是每一個(gè)十進(jìn)制小數(shù)都可以準(zhǔn)確的用二進(jìn)制表示(反過來(lái)可以)
·BCD碼(二進(jìn)制編碼十進(jìn)制數(shù)):8421碼、余3碼、2421碼
BCD轉(zhuǎn)二進(jìn)制:每4個(gè)一組,表示范圍0-9
·原碼、補(bǔ)碼、反碼、移碼
原碼中0有兩種表示:+0和-0
補(bǔ)碼和反碼中:正數(shù)==原碼;
負(fù)數(shù):(除符號(hào)位)反碼:各位取反;補(bǔ)碼:各位取反,末位加1
補(bǔ)碼中0的表示唯一,小數(shù)補(bǔ)碼比小數(shù)原碼多表示一個(gè)最小負(fù)數(shù)-1;
整數(shù)補(bǔ)碼多一個(gè)最大負(fù)數(shù)-2
變形補(bǔ)碼(模4補(bǔ)碼):雙符號(hào)位多補(bǔ)碼小數(shù)
移碼:常用于表示浮點(diǎn)數(shù)的階碼,只能表示整數(shù),0的表示唯一
整數(shù)的補(bǔ)碼和移碼,符號(hào)位相反,數(shù)值位相同
·n位無(wú)符號(hào)整數(shù)的表示范圍:0~2^n-1
·無(wú)符號(hào)整數(shù)的最大值為相同位數(shù)的有符號(hào)整數(shù)的最大負(fù)數(shù)(-1)
·216=65536;215=32768
·補(bǔ)碼的補(bǔ)碼是原碼
·使用補(bǔ)碼表示時(shí),若符號(hào)位相同,數(shù)值位越大碼值越大
·若寄存器的內(nèi)容為1111 1111,且等于+127,則為移碼
0000 0000,等于-128,則為移碼
·在求8位移碼機(jī)器數(shù)0000 0000的[-x]移時(shí),會(huì)發(fā)生溢出
【運(yùn)算方法與運(yùn)算電路】
·加法
進(jìn)位信號(hào)Gi=AiBi;進(jìn)位傳遞信號(hào)Pi=Ai異或Bi
·標(biāo)志(OF、SF、ZF、CF)
溢出標(biāo)志OF:=1時(shí),有符號(hào)整數(shù)運(yùn)算溢出
符號(hào)標(biāo)志SF:運(yùn)算結(jié)果的符號(hào),1負(fù)0正
零標(biāo)志ZF:=1時(shí),運(yùn)算結(jié)果為零
進(jìn)位/借位標(biāo)志CF:=1時(shí),無(wú)符號(hào)整數(shù),加法結(jié)果溢出或減法有借位
(有符號(hào)考慮OF,無(wú)符號(hào)考慮CF)
·移位
算術(shù)移位:有符號(hào)數(shù)移位,移位過程中符號(hào)位固定
補(bǔ)位規(guī)則:若為正數(shù),原反補(bǔ)左右移均補(bǔ)0
為負(fù)數(shù),原碼補(bǔ)0,反碼補(bǔ)1;補(bǔ)碼左移補(bǔ)0,右移補(bǔ)1
補(bǔ)碼算術(shù)左移的前提:原最高位和符號(hào)位相同
雙符號(hào)位算術(shù)移位,只有低符號(hào)位參加
邏輯移位:無(wú)符號(hào)數(shù)的移位,左移舍高位,右移舍低位,均補(bǔ)0
循環(huán)移位:分為帶進(jìn)位標(biāo)志CF的和不帶的(應(yīng)用:低字節(jié)與高字節(jié)數(shù)據(jù)互換)
(不帶CF不代表不會(huì)影響CF里的值,左移:最高位進(jìn)入CF;右移:最低位進(jìn)入CF)
·溢出判別方法:一位符號(hào)位:兩操作數(shù)符號(hào)相同,但與結(jié)果不同
雙符號(hào)位(模4補(bǔ)碼):S1S2相同不溢,01:正溢,10:負(fù)溢,S1代表真正的符號(hào)
符號(hào)位進(jìn)位Cs與最高數(shù)據(jù)位進(jìn)位C1異或,為0(相同)不溢,為1(不同)溢出
·僅當(dāng)兩個(gè)符號(hào)相同的數(shù)相加++/ - -或兩個(gè)不同符號(hào)數(shù)相減± -/- -+時(shí)才有可能溢出
·ACC:累加器,用于存放操作數(shù)或運(yùn)算結(jié)果(乘積高位,初始為0)
MQ:乘商寄存器,在乘,除運(yùn)算時(shí),用于存放操作數(shù)或運(yùn)算結(jié)果(乘積低位,乘數(shù))
X:通用的操作數(shù)寄存器,用于存放操作數(shù)(被乘數(shù))
·乘法
原碼一位乘:符號(hào)位與數(shù)值位分開,符號(hào)位異或得到,數(shù)值位兩數(shù)絕對(duì)值的乘積
先加法再邏輯右移,重復(fù)n次(數(shù)值位n位)
MQ中最低位=0:1?+0 : |x|
無(wú)符號(hào)數(shù)乘法電路:可能產(chǎn)生進(jìn)位,設(shè)置進(jìn)位位
補(bǔ)碼一位乘(booth算法)
符號(hào)參與運(yùn)算,n輪加法和算數(shù)移位,最后再加一次(乘數(shù)的符號(hào)位參與運(yùn)算)
雙符號(hào)位,輔助位初始為0
輔助位-MQ中最低位=1/0/-1,+|x補(bǔ)|/+0/+|-x補(bǔ)|
·除法
原碼除法:符號(hào)位單獨(dú)異或處理
(1)恢復(fù)余數(shù)法(2)加減交替法(不恢復(fù)余數(shù)法)
恢復(fù)余數(shù)法:默認(rèn)上商1(MQ最低位),若ACC中(被除數(shù)-除數(shù))為負(fù),改為上商0(恢復(fù)余數(shù)),再邏輯左移
加減交替法/不恢復(fù)余數(shù):若余數(shù)為負(fù),上商0,并讓余數(shù)左移移位后加上|除數(shù)|
最后一步若余數(shù)為負(fù),還需最后恢復(fù)一次余數(shù)
加/減n+1次,左移n次
如第一次上商1,可判斷被除數(shù)>除數(shù),結(jié)果大于1,無(wú)法用定點(diǎn)小數(shù)表示,不算
補(bǔ)碼除法:加減交替法
符號(hào)參與,雙符號(hào)位
余數(shù)和除數(shù)同號(hào):商1,余數(shù)左移一位減去除數(shù)
異號(hào):商0,余數(shù)左移移位加上除數(shù)
重復(fù)n次,末位恒置1
異號(hào)相除時(shí),夠減商0,不夠商1
·大字長(zhǎng)向小字長(zhǎng)強(qiáng)制類型轉(zhuǎn)換:多余高位部分直接截?cái)?br /> ·小到大:高位擴(kuò)展
零擴(kuò)展:無(wú)符號(hào)數(shù),補(bǔ)0
符號(hào)擴(kuò)展:原數(shù)符號(hào)位填充
·char:8位無(wú)符號(hào)整數(shù);int/float:4B;double:8B;short:2B
·大端/小端方式存儲(chǔ):從最高到最低/最低到最高有效字節(jié)順序存儲(chǔ)
(小端:高字節(jié)存放在大地址里,如i地址位0800H,i=01H 23H 45H 67H
0800H:67H,0801H:45H,0802H:23H,0803H:01H)
·機(jī)器代碼字節(jié)編址,從左往右,地址從低到高(所以若采用小端方式存儲(chǔ),在機(jī)器代碼里是逆的
·邊界對(duì)齊:訪問一個(gè)字/半字只需一次訪存;不對(duì)齊可能兩次
(采用邊界對(duì)齊,半字2B會(huì)被填充為4B)
·在定點(diǎn)運(yùn)算中,無(wú)論采用雙or單符號(hào)位,都必須有溢出判斷電路,一般用異或門實(shí)現(xiàn)
·模4補(bǔ)碼
優(yōu)于模2補(bǔ)碼,更易于檢查加減運(yùn)算中的溢出問題
在ALU中運(yùn)算時(shí)位兩位符號(hào)位,但存儲(chǔ)時(shí)只存一位
·實(shí)現(xiàn)n位(不含符號(hào)位)補(bǔ)碼一位乘時(shí),乘積為2n+1位
·低位進(jìn)位信息:1:做減法;0:做加法
【浮點(diǎn)數(shù)的表示與運(yùn)算】
·IEEE 754標(biāo)準(zhǔn)(短浮點(diǎn)數(shù))
數(shù)符(1)|階碼(8):移碼表示|尾數(shù)(23):隱藏位策略的原碼表示
偏置值=127,階碼范圍(1,254),對(duì)應(yīng)原范圍(-126,127)
全0階碼全0位數(shù):+0/-0
全1階碼全0尾數(shù):+∞/-∞
全1階碼尾數(shù)不全為0:NaN(非數(shù))
·正/負(fù)上溢:報(bào)錯(cuò);正/負(fù)下溢:零處理
·規(guī)格化:左規(guī)可能多次,右規(guī)只需1次
·浮點(diǎn)數(shù)擴(kuò)大了表示數(shù)的范圍,但降低了精度,運(yùn)算比定點(diǎn)復(fù)雜,
·尾數(shù)溢出,結(jié)果不一定溢出,規(guī)格化后階碼超出表示范圍才溢出
·浮點(diǎn)數(shù)的加減運(yùn)算
對(duì)階、尾數(shù)求和、規(guī)格化、舍入、溢出判斷
·判斷一個(gè)浮點(diǎn)數(shù)是否為規(guī)格化數(shù)
原碼:尾數(shù)第一位是1
補(bǔ)碼:小數(shù)點(diǎn)后一位(尾數(shù)最高位)與符號(hào)位相反
·右規(guī)和尾數(shù)舍入可能導(dǎo)致階碼上溢;左規(guī)可能導(dǎo)致階碼下溢
【強(qiáng)化課程補(bǔ)充】
1、加減法
(1)有、無(wú)符號(hào)數(shù)的加減運(yùn)算共用同一個(gè)電路
加法:直接按位相加
減法:被減數(shù)+減數(shù)的相反數(shù)的補(bǔ)碼
a-b=a+[-b]補(bǔ)([-b]補(bǔ)=~b+1)
(2)OF和CF的判斷
OF:對(duì)于有符號(hào)數(shù),次高位進(jìn)位Cn-1和最高位進(jìn)位Cn的異或
CF:對(duì)于無(wú)符號(hào)數(shù),進(jìn)位Cout與sub的異或
(Cn=Cout,sub=Cin,sub=0:1?加法:減法)
sub=1時(shí),這個(gè)“1”就是原碼轉(zhuǎn)補(bǔ)碼中“各位取反,末位加1”里的“1”
(3)ALU不區(qū)分有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的運(yùn)算,但兩種運(yùn)算對(duì)應(yīng)不同的指令(如addu/addi)利用指令不同來(lái)區(qū)分接下來(lái)要進(jìn)行的微操作(是查看OF還是CF標(biāo)志)
(4)標(biāo)志存儲(chǔ)在程序狀態(tài)字寄存器PSW中
2、乘除法:
(1)乘法判溢出:兩個(gè)n位相乘,用2n位保存中間結(jié)果,不會(huì)溢出
但結(jié)果只保留低n位,所以
對(duì)于無(wú)符號(hào)數(shù)的除法,當(dāng)且僅當(dāng)前n位全0時(shí)不溢出
對(duì)于有符號(hào)數(shù)的乘法,僅當(dāng)前n+1位全0或1時(shí)不溢出
(2)除法的溢出:當(dāng)除數(shù)為小數(shù)時(shí)可能溢出
3、精度丟失
整數(shù)與浮點(diǎn)數(shù)的轉(zhuǎn)換
E.g. int轉(zhuǎn)float(32bit->23+1bit)精度可能丟失
精度丟失問題,本質(zhì)就是有效位的比較問題,對(duì)于浮點(diǎn)數(shù)就是尾數(shù)能表示的位數(shù)
補(bǔ)充:(1)浮點(diǎn)數(shù)的尾數(shù)有效位數(shù)bit:
float:23+1;double:52+1;long double:64+1;
(2)整數(shù)有效位數(shù):
short(2B):15bit;int(4B):31bit;unsigned int:32bit;long(8B):63bit
辨別:精度與表示范圍
三、存儲(chǔ)系統(tǒng)
【概述】
·存儲(chǔ)器包括:主存、閃速存儲(chǔ)器(FlASH)、輔存、緩存(Cache)
主存=隨機(jī)存儲(chǔ)器RAM(靜態(tài)SRAM,動(dòng)態(tài)DRAM)+只讀存儲(chǔ)器ROM(M/P/EP/E^2PROM)
閃存位于主存與輔存之間
輔存:磁盤、磁帶、光盤
緩存位于CPU與主存之間(現(xiàn)代:在CPU內(nèi)部)
·RAM:斷電,信息消失,易失性存儲(chǔ)器;ROM:斷電,內(nèi)容不丟失
·ROM和RAM的存取方式:隨機(jī)存取
·串行訪問存儲(chǔ)器:按物理地址的先后順序?qū)ぶ?#xff0c;包含順序存取(磁帶),
直接存取(磁盤DAM、光盤)
·存取時(shí)間:從啟動(dòng)一次存儲(chǔ)器到操作完成的時(shí)間,包含讀出時(shí)間和寫入時(shí)間
存取周期:讀寫/訪問周期,存儲(chǔ)器進(jìn)行一次完整的讀寫操作所需的全部時(shí)間=連續(xù)兩次獨(dú)立訪存操作的最小時(shí)間間隔,通常大于存取時(shí)間
·數(shù)據(jù)傳輸率=數(shù)據(jù)的寬度/存儲(chǔ)周期(=主存帶寬)
·Cache-主存層:解決CPU與主存速度不匹配問題;
主存-輔存層:解決容量問題
·主存和Cache間的數(shù)據(jù)調(diào)用由硬件自動(dòng)完成,對(duì)所有程序員透明;
主存和輔存間數(shù)據(jù)調(diào)動(dòng)由硬件和操作系統(tǒng)共同完成,對(duì)應(yīng)用程序員透明
·CPU不能直接訪問硬盤
·速度由快到慢:寄存器、Cache、主存、輔存
【主存儲(chǔ)器】
·主存由DRAM實(shí)現(xiàn),Cache:SRAM實(shí)現(xiàn),都為易失性存儲(chǔ)器
SRAM:雙穩(wěn)態(tài)觸發(fā)器(六晶體管MOS),非破壞性讀出(不需再生)
DRAM:存儲(chǔ)元電路中柵極電容上的電荷來(lái)儲(chǔ)存信息,(集成)密度高于SRAM,必須定時(shí)刷新
·刷新方式: 集中刷新:存在死區(qū),存儲(chǔ)周期0.5us
分散刷新:每次讀寫完都刷新一行,無(wú)死區(qū),存儲(chǔ)周期增加變?yōu)?us
異步刷新:結(jié)合前兩種方法,以刷新周期為2ms的特點(diǎn),2ms內(nèi)每行刷新 一次即可
·刷新操作=讀出一行后,重新寫入
·刷新對(duì)CPU是透明的,DRAM以行為刷新單位
·DRAM讀寫周期信號(hào)控制
目的:行列地址分兩次傳送,正確接收行、列信息
行選通信號(hào)RAS先有效,列選通CAS滯后一段時(shí)間后有效,讀寫控制WE至少在CAS前有效
·DRAM行列信息分兩次送;SRAM同時(shí)送
原因:DRAM芯片通常容量大,地址數(shù)較多,為了減少芯片的地址引腳數(shù),采用地址引腳復(fù)用技術(shù)
·存儲(chǔ)器芯片=存儲(chǔ)體+IO讀寫電路+地址譯碼+控制電路(片選CS、讀/寫WE)
·ROM:只讀存儲(chǔ)器,支持隨機(jī)存取,非易失存儲(chǔ)器,結(jié)構(gòu)簡(jiǎn)單位密度高
包括:掩膜式MROM;一次可編程PROM;可擦除可編程EPROM;Flash;固態(tài)硬盤SSD
·地址線的位數(shù)決定了主存地址空間的最大可尋址范圍
·提升主存速度:雙口RAM、多模塊存儲(chǔ)器
雙端口RAM作用:優(yōu)化多核訪問一根內(nèi)存條的速度
要求:兩組完全獨(dú)立的數(shù)據(jù)線、地址線、控制線(控制電路復(fù)雜)
·多模塊存儲(chǔ)器:空間并行技術(shù),包括:單體多字/多體并行存儲(chǔ)器
單體多字存儲(chǔ)器:一個(gè)存儲(chǔ)體,優(yōu)點(diǎn):可一次并行讀出多個(gè)字
(每個(gè)存儲(chǔ)單元=總線寬度=并行讀出字?jǐn)?shù))
缺點(diǎn):不靈活
多體并行存儲(chǔ)器,包括:高位交叉、低位交叉
高位/低位:用高位/低位地址碼區(qū)分每個(gè)存儲(chǔ)體
(簡(jiǎn)單記憶)把存儲(chǔ)體看作內(nèi)存條,高位:讀完一條再讀下一條,低位:輪著讀
假設(shè):存儲(chǔ)周期=T,存儲(chǔ)時(shí)間=r,T=4r,則連續(xù)存儲(chǔ)n個(gè)存儲(chǔ)字耗時(shí):
高位交叉:nT(每讀完一個(gè)單元都需要恢復(fù)的時(shí)間)
低位交叉:T+(n-1)r(加上最后的恢復(fù)時(shí)間,宏觀上趨近于r)
·為了實(shí)現(xiàn)低位交叉流水線,存儲(chǔ)體數(shù)應(yīng)>=存儲(chǔ)周期T/傳輸周期r
·高位四體交叉存儲(chǔ)器可能在一個(gè)存儲(chǔ)周期內(nèi)連續(xù)訪問4個(gè)模塊(但是概率小)
·關(guān)于閃存Flash:是E^2PROM的進(jìn)一步發(fā)展,可讀可寫,用MOS管的浮柵上有無(wú)電荷來(lái)存儲(chǔ)信息;
是一種ROM,寫入時(shí)必須先擦除原有數(shù)據(jù),因此寫速度慢于讀速度;
是非易失性存儲(chǔ)器,采用隨機(jī)訪問方式,可替代計(jì)算機(jī)外部存儲(chǔ)器;
固態(tài)硬盤SSD是由Flash芯片組成的
·SDRAM:同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,是一種DRAM
【主存儲(chǔ)器與CPU的連接】
·主存儲(chǔ)器通過數(shù)據(jù)、地址、控制總線與CPU相連
·主存容量擴(kuò)展方式:位擴(kuò)展,字?jǐn)U展,字位擴(kuò)展
·產(chǎn)生片選信號(hào):線選法:線路簡(jiǎn)單,不需要譯碼電路;地址資源浪費(fèi);譯碼片選法
·地址存儲(chǔ)器的位數(shù)要確保能訪問到整個(gè)主存空間
【外部存儲(chǔ)器】
·硬盤存儲(chǔ)器=磁盤驅(qū)動(dòng)器(磁頭組件+盤片組件)+磁盤控制器(硬盤存儲(chǔ)器和主機(jī)度接口)+盤片
·一塊硬盤=若干記錄面(盤面,磁頭數(shù))=若干磁道(柱面數(shù))=若干扇區(qū)(塊)
·扇區(qū)是磁盤讀寫的最小單元,磁盤按塊存取
·格式化:按照某種特定的格式存儲(chǔ)信息,故格式化后的磁盤比未格式化的容量小
·記錄密度:道密度,位密度,面密度
·平均存取時(shí)間=尋道時(shí)間+旋轉(zhuǎn)延遲時(shí)間+傳輸時(shí)間(前兩個(gè)通常取平均值)
·磁盤地址:驅(qū)動(dòng)器號(hào)|柱面(磁道)號(hào)|盤面號(hào)|扇區(qū)號(hào)
·硬盤的讀寫操作是串行的,不能同時(shí)讀寫或同時(shí)讀/寫兩組數(shù)據(jù)
·RAID:獨(dú)立冗余磁盤列陣(交叉存儲(chǔ)、并行訪問、更好的存儲(chǔ)性能、可靠性、安全性)
RAID0:無(wú)冗余無(wú)校驗(yàn),沒有容錯(cuò)能力
RAID1:鏡像,容量少一半;
2:海明碼糾錯(cuò);3:位交叉奇偶校驗(yàn);4:塊交叉奇偶校驗(yàn);5:無(wú)獨(dú)立校驗(yàn)奇偶校驗(yàn)
0~5可靠性增加
·固態(tài)硬盤SSD(EPROM)
(1)組成:多個(gè)閃存芯片(Flash)+閃存翻譯層(相當(dāng)于磁盤控制器)
(2)SSD包含多個(gè)閃存芯片=多個(gè)塊=多個(gè)頁(yè)
以頁(yè)為單位讀寫(塊類比磁道,頁(yè)類比扇區(qū))
以塊為單位擦除,擦除后才能寫入新數(shù)據(jù)
(3)若要擦除的數(shù)據(jù)所在塊,有其他數(shù)據(jù),需先將其余數(shù)據(jù)復(fù)制到已經(jīng)擦干凈的塊中,再寫入新頁(yè)
故SSD讀快,寫慢
(4)支持隨機(jī)訪問
(5)與機(jī)械硬盤比較:SSD讀寫速度快(電路控制訪問位置);
SSD的一個(gè)塊若擦除次數(shù)過多,會(huì)壞;機(jī)械硬盤不會(huì)因?yàn)閷懘螖?shù)多壞
(6)磨損均衡技術(shù):動(dòng)態(tài):寫時(shí),優(yōu)先選擇累計(jì)擦除次數(shù)少的;
靜態(tài):SSD監(jiān)聽并自動(dòng)進(jìn)行數(shù)據(jù)分配、遷移
·考點(diǎn):1、計(jì)算存取時(shí)間;2、計(jì)算數(shù)據(jù)傳輸率;3、常識(shí)
【高速緩沖存儲(chǔ)器】
·程序訪問的局部性原理:
時(shí)間局部性:程序中存在循環(huán);空間局部性:指令順序存放,順序執(zhí)行
·寫策略:
(1)全寫法(寫直通法):Cache命中時(shí),將數(shù)據(jù)同時(shí)寫入Cache和主存
實(shí)現(xiàn)簡(jiǎn)單,保證準(zhǔn)確;增加訪存次數(shù),降低效率
與非寫分配法搭配(不命中時(shí)只寫入主存,不進(jìn)行調(diào)塊)
(2)回寫法:命中時(shí)不寫回主存,直到該塊被替換出Cache
需設(shè)置修改位(臟位),存在隱患;減少開銷
與寫分配法搭配(不命中時(shí),加載主存中的塊到Cache中后更新Cache塊)
·Cache和主存的映射方式:
(1)直接映射:Cache行號(hào)=主存塊號(hào)mod Cache總行數(shù)
主存塊號(hào)=主存地址/塊大小
地址結(jié)構(gòu):標(biāo)記|Cache行號(hào)|塊內(nèi)地址
(2)全相聯(lián)映射:主存中每一塊可以裝入Cache中的任意一塊
地址結(jié)構(gòu):標(biāo)記|塊內(nèi)地址
(3)組相聯(lián)映射:組間直接相連,組內(nèi)全相聯(lián)
地址結(jié)構(gòu):標(biāo)記|Cache組號(hào)|塊內(nèi)地址
·Cache替換算法:先進(jìn)先出FIFO、最近最少使用LRU、最不經(jīng)常使用LFU
·考點(diǎn):1、cache命中率,計(jì)算平均訪問時(shí)間,性能提高多少
2、計(jì)算不同映射方式下主存對(duì)應(yīng)的Cache地址
3、通過推算地址結(jié)構(gòu),計(jì)算Cache總?cè)萘?br /> (1)通過主存地址空間大小,得出主存地址位數(shù)M;
(2)行號(hào)占位數(shù)n=log2行數(shù),塊內(nèi)地址占位數(shù)m=log2行長(zhǎng);(行長(zhǎng)=每行存儲(chǔ)的數(shù)據(jù)量)
(3)計(jì)算tag位數(shù)t=M-n-m;
(4)總?cè)萘?單位為位)=行數(shù)*(1+t+每行數(shù)據(jù)量位數(shù));(“1”—有效位,一定有!!!)
注意:標(biāo)記的位數(shù)不一定全部使用,按需分配,
如,臟位、頁(yè)面替換控制位
4、訪存過程分析(以直接映射為例)
(1)根據(jù)分析劃分訪存地址(主存標(biāo)記位|行號(hào)|塊內(nèi)地址)
(2)通過主存塊號(hào)計(jì)算對(duì)應(yīng)Cache行號(hào)
(3)查看對(duì)應(yīng)Cache行的標(biāo)記位是否與主存標(biāo)記位相同,相同再查看有效位
(4)相同且有效位為1則命中,通過Cache中記錄的塊內(nèi)地址讀出對(duì)應(yīng)數(shù)據(jù)
(5)若未命中,訪問主存取出相應(yīng)數(shù)據(jù)分別送入CPU和Cahce,修改Cache的tag位,有效位1
5、計(jì)算Cache的一次損失時(shí)鐘周期(是否支持突發(fā)傳送)
6、計(jì)算Cache缺失率(數(shù)組行/列優(yōu)先訪問)
·CPU與Cache/主存交換信息以字為單位;Cache與主存交換信息以塊為單位
【虛擬存儲(chǔ)器】
·地址:
實(shí)地址=主存頁(yè)號(hào)+頁(yè)內(nèi)字地址
虛地址=虛存頁(yè)號(hào)+頁(yè)內(nèi)字地址
輔存地址=磁盤號(hào)+盤面號(hào)+磁道號(hào)+扇區(qū)號(hào)
·頁(yè)表一般包存在內(nèi)存中
·采用全相聯(lián)映射機(jī)制與寫回法
·標(biāo)志位:
有效位:對(duì)應(yīng)頁(yè)面是否在主存中
臟位:頁(yè)面是否被修改
引用位:用于配合替換策略
·虛擬地址轉(zhuǎn)換為物理地址的步驟:
用虛擬地址的虛擬頁(yè)號(hào)查詢頁(yè)表,若有效位為1,則取出頁(yè)表項(xiàng)中記錄的物理頁(yè)號(hào),將物理頁(yè)號(hào)與虛擬地址的頁(yè)內(nèi)地址進(jìn)行拼接,得到物理地址
·頁(yè)式虛擬存儲(chǔ)器
優(yōu)點(diǎn):長(zhǎng)度固定,頁(yè)表簡(jiǎn)單,調(diào)入方便;
缺點(diǎn):頁(yè)不是邏輯上獨(dú)立的實(shí)體,處理、保護(hù)、共享不如段式存儲(chǔ)器方便
·快表TLB
(1)作用:頁(yè)表項(xiàng)的高速緩存(相應(yīng)的,存放在主存里的頁(yè)表稱為慢表)
(2)組成:SRAM或相聯(lián)存儲(chǔ)器組成,采用全相聯(lián)或組相聯(lián);
頁(yè)表項(xiàng)=標(biāo)記tag字段(虛頁(yè)號(hào))+有效位+實(shí)頁(yè)號(hào)
(3)速度快于頁(yè)表的原因:
1、TLB:SRAM;慢表:DRAM;2、TLB是相聯(lián)存儲(chǔ)器,可根據(jù)內(nèi)容尋訪(硬件支持)
(4)TLB與Cache
1、TLB是頁(yè)表項(xiàng)的副本;Cache是主存的副本(以塊存儲(chǔ))
2、TLB存儲(chǔ)信息量小;Cache信息量大
3、目的:TLB:加快邏輯地址轉(zhuǎn)換為物理地址;Cache:加快對(duì)物理地址的訪問
4、缺失后都需要訪問主存;缺失處理都能由硬件處理(TLB可軟可硬,Cache只能硬)
·TLB、Page、Cache的命中與缺失
(1)三中,無(wú)需訪存
(2)在page命中的前提下,缺TLB或Cache會(huì)增加一次訪存
(3)TLB或Cache命中其一,Page必命中
(4)全不中,缺頁(yè)異常,需訪問磁盤,且至少兩次訪存
·TLB命中則page一定命中;page命中,信息一定在主存里,但不一定在Cache中
·段式虛擬存儲(chǔ)器
(1)按程序的邏輯結(jié)構(gòu)劃分,各段長(zhǎng)度因程序而異
(2)虛擬地址=段號(hào)+段內(nèi)地址;虛實(shí)變換由段表實(shí)現(xiàn),段表中包含:各段起始地址和段長(zhǎng)
(3)優(yōu)點(diǎn):具有邏輯獨(dú)立性,易于編譯、管理、修改、保護(hù)以及多道程序的共享
缺點(diǎn):段長(zhǎng)不定,分配空間不易,易產(chǎn)生碎片,浪費(fèi)
·段頁(yè)式虛擬存儲(chǔ)器
(1)按程序邏輯分段,再將每段分頁(yè)
(2)虛擬地址=段號(hào)+段內(nèi)頁(yè)號(hào)+頁(yè)內(nèi)地址
(3)優(yōu)點(diǎn):兼具頁(yè)式和段式的優(yōu)點(diǎn);缺點(diǎn):兩次地址變換需兩次查表,加大系統(tǒng)開銷
·Cache不命中時(shí)能與CPU直接通信;
虛擬存儲(chǔ)器不命中時(shí),只能先由硬盤調(diào)入主存,不能與CPU通信
·內(nèi)存=主存+Cache;TLB和慢表都在內(nèi)存中,不等于在主存中
·缺頁(yè)是在地址轉(zhuǎn)換時(shí)CPU檢測(cè)到的一種異常,由操作系統(tǒng)提供的缺頁(yè)處理程序處理,處理程序通過頁(yè)故障地址從外存讀入所缺失的頁(yè),處理完成后返回發(fā)生缺頁(yè)的指令繼續(xù)執(zhí)行
四、指令系統(tǒng)
【指令格式】
·指令=操作碼+(若干)操作數(shù)(地址碼)
根據(jù)操作數(shù)中地址碼數(shù)目的不同,分為:
零地址指令:兩個(gè)操作數(shù)隱含存放在棧頂和次棧頂中(例,空指令)
一地址指令:單操作數(shù)指令或隱含目的地址的雙操作數(shù)指令(如在ACC寄存器中)
二地址指令:給出目的與源操作數(shù)地址,結(jié)果保存在目的操作數(shù)的地址中
三地址指令:最后一個(gè)地址放結(jié)果;四地址:最后一個(gè)放下一條指令地址
·指令字長(zhǎng)與機(jī)器字長(zhǎng)無(wú)固定關(guān)系
·根據(jù)指令系統(tǒng)中所有指令的長(zhǎng)度是否相等分為:定長(zhǎng)/變長(zhǎng)指令字結(jié)構(gòu)
·指令操作類型:
數(shù)據(jù)傳送:MOV/LOAD/STORE
算術(shù)和邏輯運(yùn)算:ADD/SUB/CMP/MUL/DIV/INC/DEC/AND/OR/NOT/XOR
移位操作:算法/邏輯/循環(huán)移位
轉(zhuǎn)移操作:JMP/BRANCH/CALL/RET/TRAP
輸入輸出操作:CPU與外部設(shè)備交換數(shù)據(jù)或傳送控制命令及狀態(tài)信息
·指令系統(tǒng)是計(jì)算機(jī)軟/硬件度界面
·指令的地址由程序計(jì)數(shù)器PC給出
·中斷隱指令不屬于程序控制指令,由硬件實(shí)現(xiàn)
·程序控制指令主要包括:無(wú)/有條件轉(zhuǎn)移、子程序調(diào)用、返回指令、循環(huán)指令等
·尋址單元數(shù)=存儲(chǔ)器容量/尋址字長(zhǎng)
·采用擴(kuò)展操作碼:保持指令字長(zhǎng)不變,增加指令等數(shù)量
·變長(zhǎng)指令設(shè)計(jì)中,n地址指令要在操作碼中留出一位,用于(n-1)地址指令的擴(kuò)展(不一定是最后一位)
而(n-1)地址指令的數(shù)量=[2(操作碼長(zhǎng)度)-n地址指令數(shù)]*2(地址碼位數(shù))
例,32位單字長(zhǎng)指令,地址碼12位,若有250條二地址指令,則還可以有幾條單地址指令?
2^8-250=6, 6*2^12=24K
·大/小端方式:指令中給出的地址是操作數(shù)的最高/低有效字節(jié)所在地址
·變長(zhǎng)操作碼=哈夫曼樹=變長(zhǎng)子網(wǎng)劃分(短碼不能是長(zhǎng)碼的前綴)
【指令的尋址方式】
·形式地址:A;有效地址EA(虛擬地址),A->EA=VA(CPU完成)
1、隱含尋址 | 程序指定 | 0
縮短指令字長(zhǎng);增加存儲(chǔ)操作數(shù)或硬件
2、立即尋址 | A為操作數(shù) | 0
不訪存,執(zhí)行時(shí)間最短,適用于給寄存器賦初值;A位數(shù)限制
3、直接尋址 | EA=A | 1
簡(jiǎn)單;A有位數(shù)限制
4、一次間接尋址 | EA=(A) | 2
可擴(kuò)大尋址范圍;多次訪存(多次:主存字第一位為0時(shí)才為操作數(shù)的地址)
5、寄存器尋址 | EA=Ri | 0
不訪存訪寄存器,執(zhí)行快,可縮短地址段位數(shù);寄存器個(gè)數(shù)有限
6、寄存器間接一次 | EA=(Ri) | 1
比一般的間接尋址快
7、相對(duì)尋址 | EA=(PC)+A | 1
轉(zhuǎn)移指令,便于程序浮動(dòng)(操作數(shù)的地址隨PC的值變化)
8、基址尋址 | EA=(BR)+A | 1
面向操作系統(tǒng)的,有利于多道程序的設(shè)計(jì)(重定位)(可類比為相對(duì)尋址)
9、變址尋址 | EA=(IX)+A | 1
面向用戶編程的,循環(huán)程序,數(shù)組問題
10、堆棧尋址 |入/出棧時(shí)EA的確定方式不同
地址由堆棧指針SP給出,表面上表現(xiàn)為無(wú)操作數(shù)指令
硬堆棧:寄存器堆棧;軟堆棧:主存中劃出一片區(qū)域
·基址尋址與變質(zhì)尋址:都是寄存器內(nèi)容+偏移地址
基址:操作(改變)偏移地址,基址寄存器中內(nèi)容不能變;變址則相反
·若采用定長(zhǎng)指令字結(jié)構(gòu),指令字長(zhǎng)=存儲(chǔ)字長(zhǎng)=2B,主存按字/字節(jié)編址,(PC)+1/2->PC
若采用變長(zhǎng),則先讀入一個(gè)字,再根據(jù)操作碼判斷這條指令的總字節(jié)數(shù),(PC)+n->PC
·特權(quán)指令,通常僅用于實(shí)現(xiàn)系統(tǒng)軟件,一般不提供給用戶
【程序的機(jī)器級(jí)代碼表示】
x86
1、相關(guān)寄存器:8個(gè)32位bit的通用寄存器
EAX:累加器,EBX:基地址寄存器,ECX:計(jì)數(shù)寄存器,EDX:數(shù)據(jù)寄存器,
ESI/EDI:變址寄存器,EBP:堆棧基指針,ESP:堆棧頂指針
前4個(gè)通用寄存器可劃分EAX=AX(16)+AH(8)+AL(8)
2、常見指令
(1)算術(shù)運(yùn)算類 op d,s(結(jié)果存入d)
add;sub;mul/imul(無(wú)/有符號(hào)乘法);
div/idiv:edx:eax(拼在一起使用,拓展為64位),商存入eax,余數(shù)存入edx
neg:取負(fù);inc:自增;dec:自減
(2)邏輯運(yùn)算類
and;or;not;xor;shl;shr
(3)其他
分支,循環(huán):cmp,test,jmp,jxxx,bxxx;函數(shù)調(diào)用:push,pop,call,ret;數(shù)據(jù)轉(zhuǎn)移:mov
·AT&T與intel格式的區(qū)別
1、操作數(shù)d與s位置互換;2、立即數(shù)前加$;3、主存地址[]變?yōu)榍凹?;
4、讀寫長(zhǎng)度的表示:在指令后加b、w、l分別表示讀寫長(zhǎng)度為byte、word、dword
5、主存地址偏移量的表示:偏移量(基址,變址,比例因子)
·dword:雙字32bit;word:單字16bit;byte:字節(jié)8bit
·假設(shè)P為調(diào)用過程,Q為被調(diào)用過程,涉及操作步驟:
(1)P將實(shí)參存放到Q能訪問到的地方
(2)P將返回地址存放到特定處,并跳轉(zhuǎn)到Q執(zhí)行
(3)Q保存P到現(xiàn)場(chǎng),并為非靜態(tài)局部變量分配空間
(4)執(zhí)行Q
(5)Q恢復(fù)P到現(xiàn)場(chǎng),并釋放局部變量所占空間
(6)Q取出返回地址,并轉(zhuǎn)跳回到P執(zhí)行
【CISC和RISC的基本概念】
·CISC:復(fù)雜指令系統(tǒng)計(jì)算機(jī)
指令數(shù)目、格式,尋址方式多,指令長(zhǎng)度不固定;訪存指令不受限;
控制器大多數(shù)采用微程序控制;難以用優(yōu)化編譯生成高效目標(biāo)代碼
·RISC:精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)
指令簡(jiǎn)單種類少,格式一致,長(zhǎng)度固定
只有Load/Store指令訪存
RISC機(jī)一定采用流水技術(shù)
增加寄存器數(shù)目,以盡量減少放存次數(shù)(內(nèi)部寄存器數(shù)量相對(duì)于CISC多)
大多數(shù)指令在一個(gè)時(shí)鐘周期內(nèi)完成
指令數(shù)、尋址方式、指令格式相對(duì)于CISC少
以硬布線控制為主,不用或少用微程序控制
【強(qiáng)化補(bǔ)充】
1、編譯器、匯編器、鏈接器
C語(yǔ)言(高級(jí)語(yǔ)言)to 匯編語(yǔ)言:編譯器
匯編語(yǔ)言 to 機(jī)器語(yǔ)言(一一對(duì)應(yīng)):匯編器
鏈接:鏈接使用到的庫(kù)等,使之形成一個(gè)完整的VA,可執(zhí)行文件
2、選擇結(jié)構(gòu)語(yǔ)句的機(jī)器級(jí)表示
if-else=cmp+j(je/jle/jg/jge…)
goto:破壞了程序的局部性原理(可能導(dǎo)致頻繁缺頁(yè),Cache缺失)
3、循環(huán)結(jié)構(gòu)語(yǔ)句的機(jī)器級(jí)表示
4、過程(函數(shù))調(diào)用
(1)調(diào)用指令call
例,程序a調(diào)用程序b(call b())
call指令壓入返回地址;程序員壓入a棧棧底,作為b棧的棧底,由EBP指向
b棧獲取調(diào)用參數(shù):EBP+偏移量;b棧獲取局部變量:EBP-偏移量
(2)返回指令ret’
當(dāng)前信息出棧;恢復(fù)上一層函數(shù)的運(yùn)行現(xiàn)場(chǎng),包括棧底指針、ebp、pc等
五、中央處理器
【CPU的功能和基本結(jié)構(gòu)】
·CPU的功能包括:指令控制、操作控制、時(shí)間控制、數(shù)據(jù)加工、中斷處理
·CPU=運(yùn)算器+控制器(硬布線/微程序)
運(yùn)算器=算術(shù)邏輯單元ALU+暫存寄存器(從主存來(lái)度數(shù)據(jù);對(duì)應(yīng)用程序員透明)
+累加寄存器ACC(可作為ALU的一個(gè)輸入端)+通用寄存器組(如AX、BX、SP)
+程序狀態(tài)字寄存器PSW(OF、SF、ZF、CF;表征程序和機(jī)器運(yùn)行的狀態(tài))
+移位器+計(jì)數(shù)器CT(控制乘除)
控制器=程序計(jì)數(shù)器PC(下一條指令地址;自增)+指令寄存器IR(保存正在執(zhí)行的指令)
+指令譯碼器(譯操作碼)+存儲(chǔ)器地址寄存器MAR(存放要訪問的主存單元地址)
+存儲(chǔ)器數(shù)據(jù)寄存器MDR(存放向主存中寫入或從主存中讀出的信息)
+時(shí)序系統(tǒng)+微操作信號(hào)發(fā)生器
·CPU內(nèi)部寄存器
用戶可見:通用寄存器組、PSW;用戶不可見(透明,不可編程):MAR、MDR、IR
匯編語(yǔ)言程序員可見:PC
·n位CPU,即CPU一次能處理的數(shù)據(jù)位數(shù)=數(shù)據(jù)總線位數(shù)
·PC的位數(shù)一般=MAR的位數(shù),取決于存儲(chǔ)器的容量
【指令執(zhí)行過程】
·指令周期:CPU從主存中取出并執(zhí)行一條指令的時(shí)間
指令周期=若干機(jī)器(CPU)周期(指令周期內(nèi)大機(jī)器周期數(shù)可以不等)=若干時(shí)鐘周期
機(jī)器周期通常由存取周期決定
·不同指令的指令周期包含的階段不同(取指、間址、執(zhí)行、中斷)
·指令周期數(shù)據(jù)流
1、取指:根據(jù)PC取出指令放入IR(自動(dòng)進(jìn)行)
PC=>MAR=>Bus=>主存(取出指令)=>MDR=>IR(放到指令寄存器);PC+1
2、間址:取操作數(shù)的有效地址
IR/MDR=>MAR=>Bus=>主存=>Bus=>MDR
3、執(zhí)行:ALU產(chǎn)生執(zhí)行結(jié)果
4、中斷:若有中斷請(qǐng)求時(shí)(不一定有)CPU只有在一條指令結(jié)束后才會(huì)響應(yīng)中斷
(SP指向棧頂,SP-1)SP=>MAR=>Bus=>主存;
PC=>MDR=>Bus=>主存(程序斷點(diǎn)存人主存);CU(中斷服務(wù)程序的入口地址)=>PC
·單指令周期:指令周期取決于執(zhí)行時(shí)間最長(zhǎng)的指令
多指令周期:每條指令需要幾個(gè)就分配幾個(gè)
流水線:每個(gè)時(shí)鐘周期都啟動(dòng)一條指令,各自處于不同的執(zhí)行步驟中
·使用DMA方式傳送數(shù)據(jù)時(shí),每傳送一個(gè)數(shù)據(jù)就需花費(fèi)一個(gè)存取周期
·指令字長(zhǎng)=存儲(chǔ)字長(zhǎng),則取指周期=機(jī)器周期
【數(shù)據(jù)通路的功能和基本結(jié)構(gòu)】
·CPU數(shù)據(jù)通路結(jié)構(gòu)包括:單總線、多總線、專用數(shù)據(jù)通路
單/雙總線,屬于CPU內(nèi)部總線方式傳送數(shù)據(jù),特點(diǎn)是:結(jié)構(gòu)簡(jiǎn)單,性能低,沖突多;
使用專用數(shù)據(jù)通路的特點(diǎn):結(jié)構(gòu)復(fù)雜,硬件量大,基本不存在數(shù)據(jù)沖突現(xiàn)象
·單總線CPU中,ALU只能有一個(gè)輸入端與總線相連,另一個(gè)輸入端需要通過暫存寄存器與總線相連;輸出端也需一個(gè)暫存寄存器與總線相連
原因:若其中一個(gè)輸入端不與暫存寄存器相連,則ALU大兩端會(huì)同時(shí)收到相同的數(shù)據(jù),不能進(jìn)行正確的計(jì)算
·單周期CPU不能采用單總線:一個(gè)周期內(nèi)無(wú)法同時(shí)輸入輸出
單周期CPU特點(diǎn):時(shí)鐘頻率較低;指令執(zhí)行過程中控制信號(hào)不變;每條指令CPI=1
·程序員可見的寄存器:通用寄存器(R0/1/2…)、PC(JMP指令改)
不可見:MAD、MDR、IR、SR(移位)
【控制器的功能和工作原理】
·總線:數(shù)據(jù)、地址、控制
·控制器分類:硬布線控制器、微程序控制器
PC和IR相同,指令執(zhí)行和給出控制信號(hào)的方式不同
·硬布線控制器:邏輯門+觸發(fā)器,又稱組合邏輯控制器
1、工作原理:微操作控制信號(hào)由組合邏輯電路根據(jù)當(dāng)前的指令碼、狀態(tài)和時(shí)序,即時(shí)生成
2、應(yīng)用:RISC CPU
3、設(shè)計(jì)步驟
(1)分析每個(gè)階段的微操作序列(FE、IND、EX、INT/取指、間址、執(zhí)行、中斷)
(2)選擇CPU的控制方式(定長(zhǎng)or 不定長(zhǎng))
(3)安排微操作時(shí)序
(4)電路設(shè)計(jì)
4、一些微操作縮寫
CLA:清ACC/COM:取反/SHR:算術(shù)右移/CSL:循環(huán)左移/STP:停機(jī)/ADD:加法/STA:存數(shù)指令/LDA:取數(shù)指令/JMP:跳轉(zhuǎn)/BAN:ACC為負(fù)時(shí)跳轉(zhuǎn)
5、補(bǔ)充:
(1)控制信號(hào)的形成主要與指令譯碼信號(hào)和時(shí)鐘有關(guān)
·微程序控制
1、工作原理:以微程序的形式存放在控制存儲(chǔ)器中(每條指令都需從控制存儲(chǔ)器中取一次),執(zhí)行指令時(shí)讀出即可(存儲(chǔ)邏輯實(shí)現(xiàn))
控制存儲(chǔ)器CM用于存放微程序,在CPU內(nèi)部,用ROM實(shí)現(xiàn)
(主存儲(chǔ)器,程序與數(shù)據(jù),CPU外部,RAM)
2、應(yīng)用:CISC CPU
3、微命令、微操作、微指令、微程序、機(jī)器指令
(1)微命令與微操作一一對(duì)應(yīng);微程序與機(jī)器指令一一對(duì)應(yīng)
(2)微指令由微命令組成,微操作指揮
(3)一條微指令存儲(chǔ)在一個(gè)控制存儲(chǔ)器單元中
(4)通常,一個(gè)微程序周期=一個(gè)指令周期
若系統(tǒng)有n種指令,則控制存儲(chǔ)器中的微程序數(shù)至少為n+1(1為公共取指微程序)
4、編碼方式:
(1)直接編碼:n個(gè)微命令需n位指令操作字段,造成控制存儲(chǔ)器體積大
(2)字段直接編碼:分成若干字段,互斥微命令組合在同一字段,相容(兼容)性的指令的放不同字段,需要譯碼電路(兼容:指可以同時(shí)產(chǎn)生、共同完成某些微操作的微命令)
比直接譯碼慢,每個(gè)小段需留出一個(gè)狀態(tài),表示該字段不發(fā)出任何命令
(3)字段間接編碼(隱式編碼):削弱了微指令的并行控制能力,進(jìn)一步縮短微指令字長(zhǎng)
5、地址形成方式
(1)直接由微指令的下地址字段指出,又稱斷定方式
(2)微程序的入口地址:根據(jù)機(jī)器指令的操作碼形成
(3)其他:增量計(jì)數(shù)器法、標(biāo)志決定分支轉(zhuǎn)移地址、測(cè)試網(wǎng)絡(luò)、硬件產(chǎn)生
uPC:在微程序中指向下一條微指令地址的寄存器(無(wú)法得知下一條指令)
6、微指令格式
(1)水平型:微程序短,執(zhí)行速度快,并行能力強(qiáng),靈活;微指令長(zhǎng),編寫麻煩
(2)垂直型:類似機(jī)器指令,微指令短,簡(jiǎn)單規(guī)整,便于編寫;微程序長(zhǎng),執(zhí)行速度慢
(3)混合型:在垂直的基礎(chǔ)上增加不太復(fù)雜的并行操作
7、微程序控制單元設(shè)計(jì)步驟
(1)分析每個(gè)階段的微操作序列
(2)寫出對(duì)應(yīng)機(jī)器指令的微操作命令及節(jié)拍安排
取址微程序中除第一條微指令,其余微指令的地址均由上一條微指令的下地址字段直接給出
(3)確定微指令格式(位數(shù)、編碼方式,微指令字長(zhǎng))
(4)編寫微指令碼點(diǎn)
·動(dòng)態(tài)微程序設(shè)計(jì):能根據(jù)用戶的要求改變微程序,需要可寫控制寄存器的支持(EPROM)
毫微程序設(shè)計(jì):用于解釋微程序,代替微程序直接控制硬件
·對(duì)比:硬布線方式更快;但更不規(guī)整;不易擴(kuò)充
·時(shí)鐘脈沖信號(hào):
(1)由機(jī)器脈沖源發(fā)出的脈沖信號(hào)經(jīng)整形和分頻后形成;
(2)其寬度稱為時(shí)鐘周期,倒數(shù)為機(jī)器主頻
(3)時(shí)鐘周期以相鄰狀態(tài)單元間的組合邏輯電路的最大延遲為基準(zhǔn)制定
【異常和中斷機(jī)制】
處理:中斷硬件電路+中斷服務(wù)程序
·異常:又稱為內(nèi)中斷,CPU內(nèi)部產(chǎn)生
分為:
(1)硬故障中斷:硬連接出錯(cuò)。如,存儲(chǔ)器校驗(yàn)錯(cuò)、總線錯(cuò)誤
(2)程序性異常:因執(zhí)行指令引起的。如,整除0、溢出、斷點(diǎn)、單步跟蹤、非法指令、棧溢出、地址越界、缺頁(yè)。(Cache缺失由CPU硬件實(shí)現(xiàn),不需要異常處理程序)
按異常發(fā)生原因和返回方式不同,可分為:故障、自陷和終止
·故障Fault:
發(fā)生階段:指令啟動(dòng)后,執(zhí)行結(jié)束前
舉例:非法操作碼;缺段/缺頁(yè);除數(shù)為0
處理與返回:可以通過異常處理程序解決的,如缺頁(yè),在調(diào)頁(yè)后返回故障點(diǎn)繼續(xù)執(zhí)行;
不能解決的則終止進(jìn)程的執(zhí)行
·自陷Trap
一種“預(yù)先”安排的異常,如斷點(diǎn)設(shè)置、單步跟蹤
完成后返回下一條指令繼續(xù)執(zhí)行,若為跳轉(zhuǎn)指令,則轉(zhuǎn)移到目標(biāo)指令執(zhí)行
·終止Abort
計(jì)算機(jī)無(wú)法繼續(xù)執(zhí)行的硬件故障,如控制器出錯(cuò)、存儲(chǔ)器校驗(yàn)錯(cuò)
調(diào)出中斷服務(wù)程序重啟系統(tǒng)
(終止異常和外中斷屬于硬件中斷)
·中斷:又稱為外中斷,CPU外部產(chǎn)生,與指令無(wú)關(guān)
如I/O中斷:鍵盤輸入、打印機(jī)缺紙;特殊事件:按Esc鍵、定時(shí)器計(jì)數(shù)時(shí)間到
通過特定的中斷請(qǐng)求線告知CPU,CPU每執(zhí)行完一條指令就檢查該信號(hào)線
分為:可屏蔽中斷(由INTR線發(fā)出,CPU可通過設(shè)置屏蔽字來(lái)決定是否接受信號(hào))
不可屏蔽中斷(NMI,如硬件故障、電源掉電等)
·異常于中斷區(qū)別
(1)異常與指令有關(guān),中斷與指令無(wú)關(guān)
(2)異常的檢測(cè)由CPU完成;中斷則需要通過中斷請(qǐng)求線告知CPU
·CPU對(duì)異常和中斷的響應(yīng)過程:
關(guān)中斷、保存斷點(diǎn)和程序狀態(tài)、識(shí)別異常和中斷并轉(zhuǎn)到響應(yīng)的處理程序
(1)關(guān)中斷:設(shè)置中斷允許IF觸發(fā)器:0/1:關(guān)/開中斷
(2)保存斷點(diǎn)和程序狀態(tài):為了處理結(jié)束后能正確返回?cái)帱c(diǎn),將斷點(diǎn)(返回地址)送入棧或特定的寄存器,棧可支持異常或中斷的嵌套
(3)識(shí)別并轉(zhuǎn)移:分為軟件/硬件識(shí)別;異常大都用軟件識(shí)別,中斷軟硬均可
軟件識(shí)別:操作系統(tǒng)使用中斷查詢程序,按優(yōu)先級(jí)查詢異常狀態(tài)寄存器,順序查詢處理,轉(zhuǎn)到內(nèi)核中相應(yīng)的處理程序中
硬件識(shí)別:又稱向量中斷
異常或中斷處理程序的首地址稱為中斷向量,所有中斷向量存放于中斷向量表中
每個(gè)異常或中斷都被指定一個(gè)中斷類型號(hào),與中斷向量一一對(duì)應(yīng)
根據(jù)查表,快速找到對(duì)應(yīng)處理程序
【指令流水線】
·并行:時(shí)間上的:流水線;空間上的:設(shè)置多個(gè)執(zhí)行相同任務(wù)的功能部件
·流水線階段:取指IF、譯碼ID、執(zhí)行EX、訪存MEM、寫回WB
·理想情況下,每條指令的CPI=1
·指令集特征:指令長(zhǎng)度一致、格式規(guī)整;使用Load/Store指令;數(shù)據(jù)和指令對(duì)齊存放
·冒險(xiǎn):
(1)結(jié)構(gòu)冒險(xiǎn)/資源沖突:多條指令在同一時(shí)間爭(zhēng)用同一資源(硬件)
解決:前一條訪存訪存與后一條指令相關(guān),插入空指令;
設(shè)置單獨(dú)的數(shù)據(jù)和指令寄存器
(2)數(shù)據(jù)冒險(xiǎn):下一條指令會(huì)用到上一條指令的計(jì)算結(jié)果;分為:寫后讀、讀后寫、寫后寫
(流水線按序流動(dòng)時(shí),只會(huì)出現(xiàn)寫后讀相關(guān))
解決:暫停幾個(gè)時(shí)鐘周期;硬件阻塞stall/軟件插入NOP;
設(shè)置相關(guān)專用通路(數(shù)據(jù)旁路技術(shù));編譯優(yōu)化,調(diào)整指令順序
(3)控制冒險(xiǎn):遇到如執(zhí)行轉(zhuǎn)移、調(diào)用或返回等指令時(shí)指令執(zhí)行順序改變
解決:分支預(yù)測(cè)
·流水線性能指標(biāo)
(1)吞吐率:單位時(shí)間內(nèi)流水線所完成的任務(wù)數(shù)量
(2)加速比:完成同樣一批任務(wù),不使用與使用流水線的時(shí)間之比
·高級(jí)流水技術(shù)
(1)超標(biāo)量流水線技術(shù)/動(dòng)態(tài)多發(fā)射技術(shù)
每個(gè)時(shí)鐘周期內(nèi)并發(fā)多條獨(dú)立指令,并行操作、編譯執(zhí)行,需要配置多個(gè)功能部件
(2)超長(zhǎng)指令字技術(shù)/靜態(tài)多發(fā)射技術(shù)
利用編譯程序,將多條能并行操作的指令組合成一條具有多個(gè)操作碼字段的超長(zhǎng)指令字,需要多個(gè)處理部件
(3)超流水技術(shù)
通過提高流水線的主頻來(lái)提高性能(增加流水級(jí)數(shù))
但級(jí)數(shù)越多,寄存器開銷越大(硬件要求:Cache容量大),控制更復(fù)雜
·計(jì)算一條流水線執(zhí)行n條指令所需的時(shí)間,假設(shè)流水線分為取址、分析和執(zhí)行三部分,分別用時(shí)a/b/c ns(a>b>c)
T=(a+b+c)+(n-1)a
流水線的CPU/時(shí)鐘周期由所需時(shí)間最長(zhǎng)的功能段決定
·流水線的數(shù)據(jù)通路:由控制部件控制的,包含ALU、通用寄存器、取指部件的,由組合邏輯電路和時(shí)序邏輯電路組合而成
·理想情況下,CPI為1的處理器:(1)基本流水線CPU(2)單周期CPU
【多處理器的概念】
·SISD:單指令流單數(shù)據(jù)流結(jié)構(gòu)(單處理器)
SIMD:單/多;MISD:多/單(不存在);MIMD:多/多(多處理器)
·硬件多線程
為了減少線程切換過程中的開銷;CPU為每個(gè)線程提供單獨(dú)的通用寄存器組、程序計(jì)數(shù)器等
實(shí)現(xiàn)方式:
(1)細(xì)粒度多線程:多個(gè)線程間輪流交叉執(zhí)行指令,可亂序并行
(2)粗粒度多線程:僅在一個(gè)線程出現(xiàn)了較大開銷的阻塞時(shí)才切換線程(如Cache缺失)
線程切換開銷大于細(xì)粒度
(3)同時(shí)多線程SMT:上述兩種的變體,同一時(shí)鐘周期中,發(fā)射不同線程中的多條指令執(zhí)行
實(shí)現(xiàn)指令級(jí)和線程級(jí)的并行
超線程技術(shù)就是SMT,即一個(gè)單處理器或單核中設(shè)置兩套線程狀態(tài)部件,共享高速緩存和功能部件
需要芯片組、操作系統(tǒng)和應(yīng)用軟件的支持,模擬實(shí)體雙核心
·多核處理器
(1)若要充分發(fā)揮硬件性能,必須采用多線程(或多進(jìn)程)執(zhí)行
(2)是真正意義上的并行執(zhí)行
·共享內(nèi)存多處理器SMP
分為(1)統(tǒng)一存儲(chǔ)訪問UMA多處理器(每個(gè)處理器對(duì)所有存儲(chǔ)單元的訪問時(shí)間大致相同)
根據(jù)與共享存儲(chǔ)器連接的方式,分為:基于總線/交叉開關(guān)網(wǎng)絡(luò)/多級(jí)交換網(wǎng)絡(luò)處理器
需解決的問題:Cache一致性問題
(2)非統(tǒng)一存儲(chǔ)訪問NUMA多處理器(取決于哪個(gè)處理器提出訪問請(qǐng)求以及訪問哪個(gè)字)
不帶/帶高速緩存:NC-NUMA:CC-UNMA
·雙核:在CPU上集成兩個(gè)運(yùn)算核心
·組合邏輯電路和時(shí)序邏輯電路的區(qū)別
(1)記憶性:組合邏輯電路的輸出狀態(tài)僅取決于該時(shí)刻各個(gè)輸入信號(hào)的狀態(tài)組合,不含存儲(chǔ)信號(hào)的記憶單元
(2)數(shù)據(jù)流向:組合邏輯電路輸入與輸出間無(wú)反饋通路,信號(hào)單向傳輸
(3)時(shí)鐘控制:組合邏輯無(wú)同一時(shí)鐘;時(shí)序邏輯必須在時(shí)鐘節(jié)拍下工作
【強(qiáng)化課程】
1、指令實(shí)現(xiàn)邏輯
·取指
(1)根據(jù)PC取指令到IR:PC=>MAR;MDR=>IR
(2)PC+“1”
·執(zhí)行
(1)操作數(shù)的來(lái)源,怎么獲取
(2)對(duì)操作數(shù)做什么運(yùn)算?需要什么部件實(shí)現(xiàn)
(3)結(jié)果存哪,怎么存
2、指令的執(zhí)行
·硬件的實(shí)現(xiàn)
(1)控制硬件的信號(hào)
XXXin/XXXout:允許數(shù)據(jù)的進(jìn)入/輸出
XXXop:具體的控制信號(hào)
(2)常見的硬件
操作元件:
三態(tài)門:🔺;控制信號(hào)位數(shù):1bit(in/out)
加法器:1bit
ALU:根據(jù)支持的運(yùn)算數(shù)量
MUX:多路選擇器(多出入一輸出);若有2^n個(gè)輸入,需要nbit控制
譯碼器:3-8/2-4;無(wú)控制信號(hào)(一輸入,多輸出)
存儲(chǔ)元件:
普通寄存器(MAR、MDR、IR、PC),控制信號(hào):允許讀/允許寫
暫存寄存器(單總線中配合ALU使用);允許讀/寫
通用寄存器組:控制信號(hào)1:允許讀、寫;2:選擇哪個(gè)寄存器
特殊功能:移位、自增
六、總線
總線
【總線概述】
·特點(diǎn):(1)分時(shí):同一時(shí)刻只允許一個(gè)部件向總線發(fā)送信息;(2)共享:總線上可掛載多個(gè)部件;各個(gè)部件通過總線傳遞消息,可同時(shí)從總線上接收消息
·主設(shè)備:有控制功能的,能獲得總線控制權(quán)的設(shè)備;從設(shè)備:只能響應(yīng)從主設(shè)備發(fā)來(lái)的總線命令
·總線特性:(1)機(jī)械特性(尺寸、形狀);(2)電氣特性(傳輸方向和有效電平范圍);(3)功能特性(每根傳輸線的功能);(4)時(shí)間特性(信號(hào)和時(shí)序的關(guān)系)
·按功能分類:(1)片內(nèi)總線:CPU內(nèi)部
(2)系統(tǒng)總線:CPU、主存、I/O接口之間,
分為數(shù)據(jù)/地址(指定主存和I/O設(shè)備接口電路的地址)/控制總線
(3)I/O總線:USB、PCI
(4)通信總線(外部總線):計(jì)算機(jī)系統(tǒng)之間或計(jì)算機(jī)系統(tǒng)與其它系統(tǒng)之間
·按時(shí)序控制分類:同步/異步總線
·按數(shù)據(jù)傳輸格式分類:并行/串行總線
·總線結(jié)構(gòu)
1、單總線結(jié)構(gòu)
優(yōu)點(diǎn):結(jié)構(gòu)簡(jiǎn)單,便宜,易接入新設(shè)備;缺點(diǎn):帶寬低,負(fù)載重,多個(gè)部件爭(zhēng)用唯一總線,不支持并發(fā)傳送(注意,單總線≠只有一根信號(hào)線)
2、雙總線結(jié)構(gòu)(主存總線+I/O總線)
優(yōu)點(diǎn):將低速I/O設(shè)備從單總線上分離出來(lái),實(shí)現(xiàn)存儲(chǔ)總線與I/O總線的分離;缺點(diǎn):需要增加通道等硬件設(shè)備
3、三總線結(jié)構(gòu)(主存總線+I/O總線+直接內(nèi)存訪問總線DMA)
優(yōu)點(diǎn):提高了I/O設(shè)備性能,更快地響應(yīng)命令,提高系統(tǒng)吞吐量;缺點(diǎn):系統(tǒng)工作效率低
主存總線:CPU與內(nèi)存之間傳送地址、數(shù)據(jù)和控制信息
I/O總線:CPU和各類外設(shè)之間通信
DMA總線:內(nèi)存和高速外設(shè)之間直接傳送數(shù)據(jù)
·總線標(biāo)準(zhǔn)
(寬度/帶寬/時(shí)鐘頻率/尋址能力/是否支持突發(fā))
(1)ISA:工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu),系統(tǒng)總線(IBM的AT)(2)EISA:擴(kuò)展總線(32位CPU)
(3)VISA:視頻電子標(biāo)準(zhǔn)協(xié)會(huì),局部總線(多媒體PC)
(4)PCI:外部互聯(lián)設(shè)備(顯卡、聲卡、網(wǎng)卡)局部總線
(CPI:每條指令的時(shí)鐘周期數(shù))
(5)AGP:加速圖形接口,局部總線
(6)PCI-E:(將全面取代PCI和AGP)串行
(7)RS-232C:串行通信總線
(8)USB:通用串行總線,設(shè)備總線,可通過級(jí)聯(lián)方式連接多臺(tái)外設(shè),通信總線,即插即用、熱插拔
(9)PCMCIA/IDE/SCSI/SATA
·采用局部總線技術(shù)的作用:節(jié)省系統(tǒng)的總帶寬
·性能指標(biāo)
(1)傳輸周期(2)時(shí)鐘周期(3)工作頻率(4)時(shí)鐘頻率(5)寬度(6)復(fù)用(7)信號(hào)線數(shù)
總線帶寬=總線工作頻率×(總線寬度/8)
·總線復(fù)用:不同信號(hào)在同一信號(hào)線上分時(shí)傳輸
·突發(fā)傳輸:一次總線事務(wù)中,主設(shè)備只需給出一個(gè)首地址,從設(shè)備就能從首地址開始的若干單元的讀出或?qū)懭攵鄠€(gè)數(shù)據(jù)
·并行總線的傳輸速率不一定大于串行總線
原因:當(dāng)時(shí)鐘頻率升高時(shí),并行總線之間的干擾也更嚴(yán)重,造成傳輸數(shù)據(jù)不可恢復(fù)的損壞;而串行總線,線少,干擾易控制,可通過提高f來(lái)提高傳輸速率
·多總線的總線間通過橋接器相連
【總線事物和定時(shí)】
·總線定時(shí):總線在雙方交換數(shù)據(jù)的過程中時(shí)間上的配合關(guān)系控制,是一種協(xié)議或規(guī)則,分為同步和異步
·總線事務(wù):從請(qǐng)求總線到完成總線使用的操作序列,在一個(gè)總線周期中發(fā)生的一系列活動(dòng),
包括:請(qǐng)求/仲裁/尋址/傳輸/釋放階段,傳輸階段一般只能傳輸一個(gè)字節(jié)的數(shù)據(jù)
突發(fā)、猝發(fā)傳送方式能夠進(jìn)行連續(xù)成組數(shù)據(jù)的傳送,直到一組數(shù)據(jù)全部傳送完成后再釋放總線
·同步定時(shí):采用一個(gè)統(tǒng)一的時(shí)鐘信號(hào);優(yōu)點(diǎn):傳送速度快、速率高、控制簡(jiǎn)單;缺點(diǎn):強(qiáng)制性同步,不能及時(shí)進(jìn)行數(shù)據(jù)校驗(yàn),可靠性差;適用:總線長(zhǎng)度較短,存取時(shí)間較接近
·異步定時(shí):沒有統(tǒng)一時(shí)鐘和固定時(shí)間間隔,通過“握手”實(shí)現(xiàn)定時(shí)控制;優(yōu)點(diǎn):總線周期長(zhǎng)度可變;缺點(diǎn)“控制較復(fù)雜,速度慢于同步方式
根據(jù)“請(qǐng)求”和“回答”信號(hào)是否互鎖,分為:不互鎖/半互鎖/全互鎖方式
·引入總線結(jié)構(gòu)的優(yōu)點(diǎn):
簡(jiǎn)化系統(tǒng)結(jié)構(gòu),便于設(shè)計(jì);減少連線數(shù)目;便于接口設(shè)計(jì);便于系統(tǒng)的擴(kuò)充、更新與靈活配置,實(shí)現(xiàn)系統(tǒng)模塊化;便于設(shè)備軟件設(shè)計(jì);便于故障診斷和維修
七、輸入/輸出系統(tǒng)
【基本概念】
·外部設(shè)備:包括I/O設(shè)備和通過I/O接口訪問的外存儲(chǔ)設(shè)備
接口:協(xié)調(diào)外設(shè)與主機(jī)之間數(shù)據(jù)傳輸?shù)倪壿嫴考?br /> 輸入設(shè)備(鼠標(biāo)、鍵盤);輸出設(shè)備(打印機(jī)、顯示器);外存設(shè)備(硬磁盤、光盤)
·I/O系統(tǒng)=I/O軟件+I/O硬件
I/O軟件:驅(qū)動(dòng)程序、用戶程序、管理程序、升級(jí)補(bǔ)丁
I/O硬件:外部設(shè)備、設(shè)備控制器和接口、I/O總線
·I/O控制方式
(1)程序查詢方式:CPU不斷查詢I/O設(shè)備是否已做好準(zhǔn)備
(2)程序中斷方式:只在I/O設(shè)備準(zhǔn)備就緒并向CPI發(fā)出中斷請(qǐng)求時(shí)才給予響應(yīng)(鼠標(biāo)、鍵盤)
(3)DMA方式:主存和I/O設(shè)備間有一條直接數(shù)據(jù)通路
(4)通道方式:系統(tǒng)中設(shè)有通道控制部件,每個(gè)通道掛若干外設(shè),通道程序置于主存中
主機(jī)執(zhí)行I/O命令時(shí),啟動(dòng)相關(guān)通道,通道執(zhí)行通道程序
3、4主要用于高速設(shè)備
·打印機(jī):
(1)按工作方式分類:點(diǎn)陣打印機(jī)、針式打印機(jī)、噴墨式打印機(jī)、激光打印機(jī)
(2)按打字原理:打擊式、非打擊式
(3)按是否能打印漢字:點(diǎn)陣式、活字式
·在微型機(jī)系統(tǒng)中,I/O設(shè)備通過設(shè)備控制器與主板的系統(tǒng)總線相連接
·I/O指令是CPU系統(tǒng)指令的一部分,是一類機(jī)器指令,格式和通用格式不同
·計(jì)算機(jī)中一個(gè)漢字內(nèi)碼在主存中占2B
每個(gè)漢字用16×16點(diǎn)陣表示,占用16×16/8=32B
【I/O接口】
·I/O接口:主機(jī)與外設(shè)之間的交界界面,通過接口實(shí)現(xiàn)主機(jī)與外設(shè)之間的信息交換
·主要功能:(1)進(jìn)行地址譯碼和設(shè)備選擇(2)主機(jī)與設(shè)備間的通信聯(lián)絡(luò)控制(時(shí)序)(3)數(shù)據(jù)緩沖
(4)信號(hào)格式轉(zhuǎn)換(電平、數(shù)據(jù)格式、串并)(5)傳送控制命令和狀態(tài)信息
·CPU通過數(shù)據(jù)總線發(fā)送控制命令到I/O接口的控制寄存器中;
I/O接口通過數(shù)據(jù)總線將存儲(chǔ)在狀態(tài)寄存器中的設(shè)備狀態(tài)傳送給CPU
狀態(tài)端口和控制端口可以合用同一個(gè)寄存器
·I/O指令只能在操作系統(tǒng)內(nèi)核的底層I/O軟件中使用,是一種特權(quán)指令
·I/O端口=接口電路中用于讀/寫的寄存器,可被CPU直接訪問的寄存器;
I/O接口=若干I/O端口+相應(yīng)控制邏輯
·I/O接口類型
(1)根據(jù)數(shù)據(jù)傳送發(fā)送:并/串行接口;
(2)根據(jù)主機(jī)訪問接口控制方式:程序查詢接口;中斷接口;DMA
(3)根據(jù)功能選擇的靈活性:可編程/不可編程接口
·I/O端口分為:數(shù)據(jù)/狀態(tài)/控制端口
·I/O端口編址方式分為
(1)統(tǒng)一編址/存儲(chǔ)器映射方式:優(yōu)點(diǎn):不需要專門的I/O指令(使用訪存指),CPU對(duì)I/O的訪問更靈活,使端口具有較大的編址空間;缺點(diǎn):占用存儲(chǔ)器地址,使內(nèi)存容量變小,執(zhí)行速度較慢
(區(qū)分:不同的地址碼,I/O地址要求相對(duì)固定在地址的某部分)
(2)獨(dú)立編址/IO映射方式:需設(shè)置專門的IO指令,優(yōu)點(diǎn):指令不同,編程清晰;缺點(diǎn):增加控制復(fù)雜性
·I/O總線的數(shù)據(jù)線上傳輸?shù)男畔?#xff1a;I/O接口的命令字/狀態(tài)字、中斷類型號(hào)
通常發(fā)生在通用寄存器和I/O端口之間
·I/O接口有:打印機(jī)適配器、網(wǎng)絡(luò)控制器、可編程中斷控制器(磁盤驅(qū)動(dòng)器不是!)
【I/O方式】
·程序查詢方式
(1)概念:完全由CPU執(zhí)行程序?qū)崿F(xiàn),接口中設(shè)置數(shù)據(jù)端口和狀態(tài)端口
(2)工作方式:CPU執(zhí)行程序初始化并預(yù)置待傳參數(shù);向IO接口發(fā)出命令字啟動(dòng)IO設(shè)備;從外設(shè)接口讀取其狀態(tài)信息;CPU不斷輪詢IO狀態(tài)直到IO就緒;傳送一次數(shù)據(jù);修改地址和計(jì)數(shù)參數(shù);判斷傳送是否結(jié)束(直接計(jì)數(shù)器為0)
(3)特點(diǎn):CPU一旦啟動(dòng)IO就必須停止現(xiàn)進(jìn)程的運(yùn)行,CPU與IO串行工作;接口設(shè)計(jì)簡(jiǎn)單,設(shè)備量少,但CPU會(huì)花費(fèi)較多時(shí)間進(jìn)行查詢和等待,效率低
·程序中斷方式
1、概念:出行某些急需處理的異常情況,CPU暫停終止現(xiàn)行進(jìn)程,轉(zhuǎn)去處理異常,處理完畢后再返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行原程序
2、功能:(1)實(shí)現(xiàn)CPU與IO設(shè)備并行工作;(2)處理硬件故障和軟件錯(cuò)誤;(3)實(shí)現(xiàn)人機(jī)交互;(4)實(shí)現(xiàn)多道程序、分時(shí)操作;(5)實(shí)現(xiàn)應(yīng)用程序和操作系統(tǒng)的切換(管態(tài)程序;軟中斷);(6)多處理器系統(tǒng)中各處理器之間信息交換和任務(wù)切換
3、工作流程
(1)中斷請(qǐng)求(INTR:可屏蔽中斷、NMI:不可屏蔽中斷;內(nèi)部異常在關(guān)中斷模式下也會(huì)被響應(yīng))
(2)中斷響應(yīng)判優(yōu):不可屏蔽中斷>內(nèi)部異常>可屏蔽中斷;硬件故障>軟件中斷;DMA請(qǐng)求優(yōu)先于IO設(shè)備中斷請(qǐng)求;高速設(shè)備優(yōu)先于低速設(shè)備;輸入設(shè)備優(yōu)先于輸出設(shè)備
(3)CPU響應(yīng)中斷的條件
中斷源有請(qǐng)求;CPU允許中斷及開中斷;一條指令執(zhí)行完畢(內(nèi)部異常沒有一條指令執(zhí)行完畢的要求)
(4)中斷響應(yīng)過程
CPU進(jìn)過一些操作后,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,操作由硬件直接(自動(dòng))實(shí)現(xiàn),稱為中斷隱指令
包括:關(guān)中斷、保存斷點(diǎn)、引出中斷服務(wù)程序
(5)中斷向量(回看第5章)
中斷識(shí)別分為向量中斷和非向量中斷(軟件查詢)法
其中采用中斷向量法的中斷稱為向量中斷
(6)中斷處理過程:關(guān)中斷;保存斷點(diǎn);中斷服務(wù)程序?qū)ぶ?#xff1b;
保存現(xiàn)場(chǎng)和屏蔽字;(現(xiàn)場(chǎng):用戶工作寄存器內(nèi)容,通過指令保存在棧中,軟件實(shí)現(xiàn);
斷點(diǎn):在CPU響應(yīng)中斷時(shí),自動(dòng)保存在棧或特定寄存器中,硬件實(shí)現(xiàn))
開中斷(允許響應(yīng)更高級(jí)的中斷);執(zhí)行中斷服務(wù)程序;
關(guān)中斷(保證恢復(fù)現(xiàn)場(chǎng)和屏蔽字時(shí)不受干擾);恢復(fù)現(xiàn)場(chǎng)和屏蔽字;開中斷;中斷返回
(注意)恢復(fù)現(xiàn)場(chǎng)是在中斷返回前,由中斷服務(wù)程序完成
4、多重中斷和中斷屏蔽技術(shù)
(1)單重中斷:CPU在處理一個(gè)中斷期間,對(duì)新的優(yōu)先級(jí)更高的中斷不予響應(yīng)
多重中斷/中斷嵌套:(反之)
(2)條件:在中斷服務(wù)程序中提前設(shè)置開中斷指令;優(yōu)先級(jí)高的中斷有權(quán)中斷低的中斷
·中斷處理優(yōu)先級(jí):指多重中斷的實(shí)際優(yōu)先級(jí)處理次序,可通過中斷屏蔽技術(shù)動(dòng)態(tài)調(diào)整
每個(gè)中斷源有一個(gè)屏蔽觸發(fā)器,所有組合構(gòu)成屏蔽字寄存器
若不使用中斷屏蔽技術(shù),則處理優(yōu)先級(jí)=響應(yīng)優(yōu)先級(jí)
·DMA方式
1、特點(diǎn):
(1)與CPU并行工作,在外設(shè)與內(nèi)存之間開辟一條“直接數(shù)據(jù)通路”,提升了系統(tǒng)效率
(2)數(shù)據(jù)傳送不經(jīng)過CPU,降低了CPU在傳送數(shù)據(jù)時(shí)的開銷,CPU不需要進(jìn)行保護(hù)、恢復(fù)現(xiàn)場(chǎng)等操作
(3)主存既可以被CPU訪問也可以被外設(shè)訪問,主存開辟專用緩沖區(qū),即時(shí)供給和接受外設(shè)數(shù)據(jù)
(4)完全由硬件實(shí)現(xiàn),在進(jìn)行數(shù)據(jù)塊的傳送時(shí),主存地址的確定、傳送數(shù)據(jù)計(jì)數(shù)等
(5)適用于磁盤、顯卡、聲卡、網(wǎng)卡等高速設(shè)備大批量的數(shù)據(jù)傳送,硬件開銷比較大
(6)DMA在開始傳送前要通過程序進(jìn)行預(yù)處理,結(jié)束后要通過中斷方式進(jìn)行后處理
2、DMA控制器的組成
DMA控制器(DMA接口):對(duì)數(shù)據(jù)傳送過程進(jìn)行控制的硬件
功能:
(1)接受外設(shè)的DMA請(qǐng)求,并向CPU發(fā)出總線請(qǐng)求
(2)CPU響應(yīng)請(qǐng)求,發(fā)出總線響應(yīng)信號(hào),接管總線控制權(quán),進(jìn)入DMA操作周期
(3)確定傳送數(shù)據(jù)的主存單元地址及長(zhǎng)度,并自動(dòng)修改主存地址計(jì)數(shù)和傳送長(zhǎng)度
(4)規(guī)定數(shù)據(jù)在主存和外設(shè)間的傳送方向,發(fā)出讀寫等控制信號(hào),執(zhí)行數(shù)據(jù)傳送操作
(5)向CPU報(bào)告DMA操作結(jié)束
DMA控制器內(nèi)包含:主存地址計(jì)數(shù)器、傳送長(zhǎng)度計(jì)數(shù)器、數(shù)據(jù)緩沖寄存器、DMA請(qǐng)求觸發(fā)器、控制/狀態(tài)邏輯、中斷機(jī)構(gòu)
(注意)在DMA傳送過程中,DMA控制權(quán)將接管CPU等地址、數(shù)據(jù)、控制總線,故DMA控制權(quán)必須具有控制系統(tǒng)總線的能力
3、DMA傳送方式
當(dāng)IO設(shè)備與CPU同時(shí)訪問主存產(chǎn)生沖突的解決辦法
(1)停止CPU訪存
(2)周期挪用(周期竊取):當(dāng)CPU不在訪存時(shí),不沖突;當(dāng)CPU在訪存時(shí),必須等待訪存周期結(jié)束;IO和CPU同時(shí)請(qǐng)求,優(yōu)先IO
(3)DMA與CPU交替訪存(CPU工作周期>主存存取周期)
4、DMA傳送過程:分為預(yù)處理、數(shù)據(jù)傳送和后處理
5、DMA方式和中斷方式的區(qū)別
(1)中斷是程序的切換,需保護(hù)和恢復(fù)現(xiàn)場(chǎng);DMA除預(yù)處理和后處理外不占CPU資源
(2)中斷請(qǐng)求的響應(yīng)只能發(fā)生在一條指令執(zhí)行完畢后;DMA每個(gè)機(jī)器周期結(jié)束時(shí)
(3)中斷傳送需要CPU的干預(yù);DMA不需要
(4)DMA請(qǐng)求優(yōu)先于中斷請(qǐng)求
(5)中斷具有對(duì)異常事件的處理能力;DMA只適用于傳送數(shù)據(jù)塊的IO操作
(6)中斷靠程序;DMA靠硬件
【習(xí)題補(bǔ)充】
·中斷判優(yōu)邏輯和總線仲裁方式
(1)在總線仲裁方式中,獨(dú)立請(qǐng)求方式響應(yīng)最快,以增加控制線數(shù)為代價(jià)
定時(shí)器查詢方式,有一根總線請(qǐng)求BR線,和log2n條設(shè)備地址線(n個(gè)設(shè)備)
(2)總線仲裁方式:指IO爭(zhēng)用總線判優(yōu);中斷判優(yōu):IO爭(zhēng)用CPU
(3)中斷判優(yōu)可以通過硬件或軟件實(shí)現(xiàn)
·Cache缺失由硬件實(shí)現(xiàn),不能提出中斷
·能產(chǎn)生DMA請(qǐng)求的總線部件是具有DMA接口的設(shè)備
·中斷響應(yīng)優(yōu)先級(jí)從高到低:訪管、程序性、重新啟動(dòng)
·中斷向量地址:中斷服務(wù)程序入口地址的地址
·在配有通道的計(jì)算機(jī)系統(tǒng)中,用戶程序需要輸入/輸出時(shí),引起訪管中斷
·在中斷響應(yīng)周期中,由中斷隱指令將允許中斷觸發(fā)器置0(硬件完成)
·硬件排隊(duì)電路,決定中斷響應(yīng)次序
通過設(shè)置中斷屏蔽字可改變多個(gè)中斷服務(wù)程序執(zhí)行完的次序(中斷處理次序)
·響應(yīng)中斷時(shí)保護(hù)PC和PSW兩個(gè)硬件
·中斷:與CPU并行;與主程序串行;DMA:與CPU并行;與主程序并行
·程序中斷方式的中斷請(qǐng)求:為了進(jìn)行數(shù)據(jù)傳送;
DMA的中斷請(qǐng)求:為了獲得總線控制器或交回總線控制權(quán)
·一個(gè)完整的DMA過程需要DMA控制器控制和CPU控制
(1)傳送前由設(shè)備驅(qū)動(dòng)器設(shè)置傳送參數(shù)(2)傳送結(jié)束后的處理由中斷服務(wù)程序完成;
但數(shù)據(jù)傳送過程中完全由DMA控制器控制
·中斷隱指令完成:(1)關(guān)中斷(2)保護(hù)斷點(diǎn)(3)引出中斷服務(wù)程序(形成中斷服務(wù)程序入口地址并送入PC)
·單級(jí)中斷系統(tǒng)中,中斷服務(wù)程序內(nèi)的執(zhí)行操作順序:
保護(hù)現(xiàn)場(chǎng)(保存通用寄存器內(nèi)容)、中斷事件處理、恢復(fù)現(xiàn)場(chǎng)、開中斷、中斷返回
·CPU處于關(guān)中斷狀態(tài)時(shí),也能響應(yīng)NMI傳來(lái)的不可屏蔽的中斷請(qǐng)求
程序查詢方式/定時(shí)查詢IO方式:
cpu需要定時(shí)查詢緩沖區(qū)內(nèi)數(shù)據(jù),
設(shè)備輸出輸出與IO接口速率,cpu定時(shí)查詢頻率,高于才不會(huì)丟失數(shù)據(jù)
查一次的時(shí)間開銷,1秒查詢幾次
緩沖區(qū)大小,取數(shù)據(jù)的頻率
總結(jié)
- 上一篇: Unity基础知识2
- 下一篇: 避免摄像机穿透地形模型