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