計(jì)算機(jī)組成原理期末復(fù)習(xí)期末速成

計(jì)算機(jī)的組成:
①五個(gè)功能部件:運(yùn)算器、存儲(chǔ)器、控制器、輸入輸出設(shè)備
②兩種信息流:控制、數(shù)據(jù)信息流

控制信息流包括指令信息、狀態(tài)信息、時(shí)序信息,這些信息的組合產(chǎn)生各類控制信號(hào),對(duì)數(shù)據(jù)進(jìn)行加工處理,并控制數(shù)據(jù)信息的流向,實(shí)現(xiàn)計(jì)算機(jī)的各項(xiàng)功能。
馮·諾伊曼體系結(jié)構(gòu)計(jì)算機(jī)的特點(diǎn):
1)硬件由五大部分組成
2)軟件以二進(jìn)制表示
3)采用存儲(chǔ)程序
Ⅰ:所有的程序預(yù)先存放再存儲(chǔ)器中
Ⅱ:指令采用串行執(zhí)行方式
(指令一條接一條執(zhí)行 而不能同時(shí)執(zhí)行兩條)
3、計(jì)算機(jī)系統(tǒng)的層次結(jié)構(gòu)

4、區(qū)分機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言:
機(jī)器語(yǔ)言:一種用二進(jìn)制代碼表示的計(jì)算機(jī)語(yǔ)言,機(jī)器可以直接執(zhí)行用機(jī)器語(yǔ)言編寫的程序。
匯編語(yǔ)言:一種用助記符表示的與機(jī)器語(yǔ)言一一對(duì)應(yīng)的語(yǔ)言,用匯編語(yǔ)言編寫的程序要經(jīng)過(guò)匯編后才能執(zhí)行。
高級(jí)語(yǔ)言:一種接近人類自然語(yǔ)言的與計(jì)算機(jī)結(jié)構(gòu)無(wú)關(guān)的語(yǔ)言,用高級(jí)語(yǔ)言編寫的程序要經(jīng)過(guò)解釋和編譯才能執(zhí)行。(c,c++,java等)
5、編譯程序、解釋程序和匯編程序
編譯程序:編譯程序是先完整編譯后運(yùn)行的程序,編譯程序把高級(jí)語(yǔ)言源程序作為輸入,進(jìn)行翻譯轉(zhuǎn)換,產(chǎn)生出機(jī)器語(yǔ)言的目標(biāo)程序,然后讓計(jì)算機(jī)去執(zhí)行這個(gè)目標(biāo)程序,得到計(jì)算結(jié)果。如C、C++等;
解釋程序:一句一句翻譯且邊翻譯邊執(zhí)行的程序,是高級(jí)語(yǔ)言翻譯程序的一種,它將源語(yǔ)言書寫的源程序作為輸入,解釋一句就提交給計(jì)算機(jī)執(zhí)行一句,并不形成目標(biāo)程序。如Python、JavaScript
編譯程序和解釋程序最大區(qū)別在于︰前者生成目標(biāo)代碼,而后者不生成
匯編程序:匯編程序是用匯編語(yǔ)言編寫的程序,與編譯程序、解釋程序完全不是一個(gè)概念。
例題1:

CPI——條指令所需的時(shí)鐘周期數(shù)
運(yùn)行時(shí)間=指令數(shù)*CPI/主頻。
M1的時(shí)間=指令數(shù)*2/1.5,
M2的時(shí)間=指令數(shù)*1/ 1.2,兩者之比為(2/1.5) : (1/ 1.2)=1.6。
2.1定點(diǎn)數(shù)的表示與運(yùn)算
1.定點(diǎn)數(shù)的表示
一.無(wú)符號(hào)數(shù)和有符號(hào)數(shù)的表示
在計(jì)算機(jī)中參與運(yùn)算的機(jī)器數(shù)有兩大類:無(wú)符號(hào)數(shù)和有符號(hào)數(shù)。
1)無(wú)符號(hào)數(shù) 全部二進(jìn)制位均為數(shù)值位,沒(méi)有符號(hào)位,相當(dāng)于數(shù)的絕對(duì)值。
若機(jī)器字長(zhǎng)為8位,則數(shù)的表示范圍為0~2^8-1,即0~255。
2)有符號(hào)數(shù).在機(jī)器中,數(shù)的“正“負(fù)”號(hào)是無(wú)法識(shí)別的,有符號(hào)數(shù)用“0”表示“正”號(hào),用“1”表示“負(fù)”號(hào),二進(jìn)制數(shù)的最高位為符號(hào)位.

機(jī)器數(shù)的定點(diǎn)表示:
1)定點(diǎn)小數(shù):
定點(diǎn)小數(shù)是純小數(shù),約定小數(shù)點(diǎn)位置在符號(hào)位之后、有效數(shù)值部分最高位之前

2)定點(diǎn)整數(shù)
定點(diǎn)整數(shù)是純整數(shù),約定小數(shù)點(diǎn)位置在有效數(shù)值部分最低位之后。



原碼表示:最高符號(hào),其余表示數(shù)的絕對(duì)值
移碼:移碼(又叫增碼或偏置碼)通常用于表示浮點(diǎn)數(shù)的階碼,其表示形式與補(bǔ)碼相似,只是其符號(hào)位用“1”表示正數(shù),用“0”表示負(fù)數(shù),數(shù)值部分與補(bǔ)碼相同。
溢出判斷:
(1)采用一位符號(hào)位
參加操作的兩個(gè)數(shù)符號(hào)相同,結(jié)果又與原操作數(shù)符號(hào)不同,則表示結(jié)果溢出.
(2)采用雙符號(hào)位
①Ss1Ss2=00:表示結(jié)果為正數(shù),無(wú)溢出。②Ss1Ss2=01:表示結(jié)果為正數(shù),溢出。
③Ss1Ss2=10:表示結(jié)果為負(fù)數(shù),溢出。
④Ss1Ss2=11:表示結(jié)果為負(fù)數(shù),無(wú)溢出。

浮點(diǎn)數(shù)(類似科學(xué)計(jì)數(shù)法
一.浮點(diǎn)數(shù)的表示格式
E和M都是有符號(hào)的定點(diǎn)數(shù),E稱為階碼,M稱為尾數(shù)??梢姼↑c(diǎn)數(shù)由階碼和尾數(shù)兩部分組成,如圖所示:

階符僅表示次方的正負(fù) 數(shù)符才表示該數(shù)的正負(fù)號(hào)
二.規(guī)格化浮點(diǎn)數(shù)
為了提高運(yùn)算的精度,需要充分地利用尾數(shù)的有效數(shù)位,通常采取浮點(diǎn)數(shù)規(guī)格化形式,即規(guī)定尾數(shù)的最高數(shù)位必須是一個(gè)有效值。
左規(guī):當(dāng)浮點(diǎn)數(shù)運(yùn)算的結(jié)果為非規(guī)格化時(shí),要進(jìn)行規(guī)格化處理,將尾數(shù)算術(shù)左移一位、階碼減1(基數(shù)為2時(shí))的方法稱為左規(guī),左規(guī)可能要進(jìn)行多次。
右規(guī):當(dāng)浮點(diǎn)數(shù)運(yùn)算的結(jié)果尾數(shù)出現(xiàn)溢出(雙符號(hào)位為01或10)時(shí),將尾數(shù)算術(shù)右移一位、階碼加1(基數(shù)為2時(shí))的方法稱為右規(guī)。需要右規(guī)時(shí),只需進(jìn)行一次。
1)原碼規(guī)格化后.
正數(shù)為0.1xx……x的形式,負(fù)數(shù)為1.1xx···x的形式.
2)補(bǔ)碼規(guī)格化后.
正數(shù)為0.1xx……x的形式,尾數(shù)的表示范圍為1/ 2<M≤ (12^(-n)) 、
負(fù)數(shù)為1.0xx……x的形式,其最大值表示為1.01…1,最小值表示為1.000.



數(shù)值的表示范圍:
(1)若定點(diǎn)數(shù)和浮點(diǎn)數(shù)字長(zhǎng)相同,則浮點(diǎn)表示法所能表示的數(shù)值范圍將遠(yuǎn)遠(yuǎn)大于定點(diǎn)表示法。
(2)精度
精度是指一個(gè)數(shù)所含有效數(shù)值位的位數(shù)。對(duì)于字長(zhǎng)相同的定點(diǎn)數(shù)和浮點(diǎn)數(shù)來(lái)說(shuō),浮點(diǎn)數(shù)雖然擴(kuò)大了數(shù)的表示范圍,但精度降低了。
(3)數(shù)的運(yùn)算
浮點(diǎn)數(shù)包括階碼和尾數(shù)兩部分,運(yùn)算時(shí)要做尾數(shù)的運(yùn)算,也做階碼的運(yùn)算,而且運(yùn)算結(jié)果要求規(guī)格化,所以浮點(diǎn)運(yùn)算比定點(diǎn)運(yùn)算復(fù)雜。
(4)溢出問(wèn)題
在定點(diǎn)運(yùn)算中,當(dāng)運(yùn)算結(jié)果超出數(shù)的表示范圍時(shí),發(fā)生溢出; 在浮點(diǎn)運(yùn)算中,運(yùn)算結(jié)果超出尾數(shù)表示范圍卻不一定溢出,只有規(guī)格化后階碼超出所能表示的范圍時(shí),才發(fā)生溢出。
浮點(diǎn)數(shù)的加減運(yùn)算:
浮點(diǎn)數(shù)運(yùn)算的特點(diǎn)是階碼運(yùn)算和尾數(shù)運(yùn)算分開進(jìn)行。浮點(diǎn)數(shù)的加減運(yùn)算一律采用補(bǔ)碼浮點(diǎn)數(shù)加減運(yùn)算步驟
一.對(duì)階
對(duì)階的目的是使兩個(gè)操作數(shù)的小數(shù)點(diǎn)位置對(duì)齊,即使得兩個(gè)數(shù)的階碼相等。為此,先求階差,然后以小階向大階看齊的原則,將階碼小的尾數(shù)右移一位(基數(shù)為2),階加1,直到兩個(gè)數(shù)的階碼相等為止。尾數(shù)右移時(shí),舍棄掉有效位會(huì)產(chǎn)生誤差。

二.尾數(shù)求和
將對(duì)階后的尾數(shù)按定點(diǎn)數(shù)加(減)運(yùn)算規(guī)則運(yùn)算.
三.規(guī)格化
以雙符號(hào)位為例,當(dāng)尾數(shù)大于0時(shí),其補(bǔ)碼規(guī)格化形式為[S]補(bǔ)=00.1xx···x
當(dāng)尾數(shù)小于0時(shí),其補(bǔ)碼規(guī)格化形式為[S]補(bǔ)=11.0xx··.·x
當(dāng)尾數(shù)的最高數(shù)值位與符號(hào)位不同時(shí),即為規(guī)格化形式。規(guī)格化分為左規(guī)與右規(guī)兩種。
1)左規(guī):當(dāng)尾數(shù)出現(xiàn)00.0xx…x或11.1xx……x時(shí),需左規(guī),即尾數(shù)左移1位,和的階
碼減1,直到尾數(shù)為00.1xx…x或11.0xX…X。
2)右規(guī):當(dāng)尾數(shù)求和結(jié)果溢出(如尾數(shù)為10. xx…x或01. xx…x)時(shí),需右規(guī),
即尾數(shù)右移一位,和的階碼加1。
四.舍入
在對(duì)階和右規(guī)的過(guò)程中,可能會(huì)將尾數(shù)低位丟失,引起誤差。常見的舍入方法“0”舍“1"入法和恒置“1”法.
“0”舍“1”入法:類似于十進(jìn)制數(shù)運(yùn)算中的“四舍五入”法,即在尾數(shù)右移時(shí),被移去的最高數(shù)值位為o,則舍去;被移去的最高數(shù)值位為1時(shí),則在尾數(shù)的末位加1。這樣做可能會(huì)使尾數(shù)又溢出,此時(shí)需再做一次右規(guī)。
恒置“1”法:尾數(shù)右移時(shí),不論丟掉的最高數(shù)值位是“1”還是“0”,
都使右移后的尾數(shù)末位恒置“1”。
這種方法同樣有使尾數(shù)變大和變小的兩種可能。
五.溢出判斷
在浮點(diǎn)數(shù)規(guī)格化中已指出,當(dāng)尾數(shù)之和(差)出現(xiàn)01. xx……x或10. xx…x時(shí),并不表示溢出,只能將此數(shù)右規(guī)后,再根據(jù)階碼來(lái)判斷浮點(diǎn)數(shù)運(yùn)算結(jié)果是否溢出。

存儲(chǔ)器的分類
—.按在計(jì)算機(jī)中的作用(層次)分類
1)主存儲(chǔ)器。簡(jiǎn)稱主存,又稱內(nèi)存儲(chǔ)器(內(nèi)存),用來(lái)存放計(jì)算機(jī)運(yùn)行期間所需的大量程序和數(shù)據(jù),CPU可以直接隨機(jī)地對(duì)其進(jìn)行訪問(wèn),也可以和高速緩沖存儲(chǔ)器(Cache)及輔助存儲(chǔ)器交換數(shù)據(jù)。其特點(diǎn)是容量較小、存取速度較快、單位價(jià)格較高。
2)輔助存儲(chǔ)器。簡(jiǎn)稱輔存,又稱外存儲(chǔ)器(外存),是主存儲(chǔ)器的后援存儲(chǔ)器,用來(lái)存放當(dāng)前暫時(shí)不用的程序和數(shù)據(jù),以及一些需要永久性保存的信息,它不能與CPU直接交換信息。其特點(diǎn)是容量極大、存取速度較慢、單位成本低。
3)高速緩沖存儲(chǔ)器。簡(jiǎn)稱Cache,位于主存和CPU之間,用來(lái)存放正在執(zhí)行的程序段和數(shù)據(jù),以便CPU能高速地使用它們。Cache的存取速度可與CPU的速度相匹配,但存儲(chǔ)容量小、價(jià)格高。目前的高檔計(jì)算機(jī)通常將它們制作在CPU中。
二.按存儲(chǔ)介質(zhì)分類
按存儲(chǔ)介質(zhì),存儲(chǔ)器可分為磁表面存儲(chǔ)器(磁盤、磁帶)、磁心存儲(chǔ)器半導(dǎo)體存儲(chǔ)器(MOS型存儲(chǔ)器、雙極型存儲(chǔ)器)和光存儲(chǔ)器(光盤)。
三.按存取方式分類
1)隨機(jī)存儲(chǔ)器(RAM)。存儲(chǔ)器的任何一個(gè)存儲(chǔ)單元的內(nèi)容都可以隨機(jī)存取,而且存取時(shí)間與存儲(chǔ)單元的物理位置無(wú)關(guān)。其優(yōu)點(diǎn)是讀寫方便、使用靈活,主要用作主存或高速緩沖存儲(chǔ)器。RAM又分為靜態(tài)RAM也叫 (SRAM) ,Cache就是SRAM,動(dòng)態(tài)RAM (也叫DRAM),內(nèi)存條屬于DRAM。
2)只讀存儲(chǔ)器(ROM)。存儲(chǔ)器的內(nèi)容只能隨機(jī)讀出而不能寫入。信息一旦寫入存儲(chǔ)器就固定不變,即使斷電,內(nèi)容也不會(huì)丟失。硬盤就是ROM。
四.按信息的可保存性分類
斷電后、存儲(chǔ)信息即消失的存儲(chǔ)器,稱為易失性存儲(chǔ)器,如RAM。
斷電后、存儲(chǔ)信息仍然保持的存儲(chǔ)器,稱為非易失性存儲(chǔ)器,如ROM、磁表面存儲(chǔ)器和光存儲(chǔ)器。
存儲(chǔ)器有3個(gè)主要性能指標(biāo),即存儲(chǔ)容量、單位成本和存儲(chǔ)速度。這3個(gè)指標(biāo)相互制約,設(shè)計(jì)存儲(chǔ)器系統(tǒng)所追求的目標(biāo)就是大容量、低成本和高速度。
一、存儲(chǔ)容量=存儲(chǔ)字?jǐn)?shù)x字長(zhǎng)(如1Mx8位)。單位換算:1B (Byte,字節(jié))=8b (bit,位)。存儲(chǔ)字?jǐn)?shù)表示存儲(chǔ)器的地址空間大小,字長(zhǎng)表示一次存取操作的數(shù)據(jù)量。
二、單位成本:每位價(jià)格=總成本/總?cè)萘俊?/p>
三、存儲(chǔ)速度:數(shù)據(jù)傳輸率=數(shù)據(jù)的寬度/存儲(chǔ)周期。
⑴)存取時(shí)間(T)︰存取時(shí)間是指從啟動(dòng)一次存儲(chǔ)器操作到完成該操作所經(jīng)歷的時(shí)間,分為讀出時(shí)間和寫入時(shí)間。
(2)存取周期(T)∶存取周期又稱讀寫周期或訪問(wèn)周期。它是指存儲(chǔ)器進(jìn)行一次完整的讀寫操作所需的全部時(shí)間,即連續(xù)兩次獨(dú)立訪問(wèn)存儲(chǔ)器操作(讀或?qū)懖僮鳎┲g所需的最小時(shí)間間隔。
(3)主存帶寬(B)︰主存帶寬又稱數(shù)據(jù)傳輸率,表示每秒從主存進(jìn)出信息的最大數(shù)量,單位為字/秒、字節(jié)/秒(B/ s)或位/秒(b / s) .
存取時(shí)間不等于存儲(chǔ)周期,通常存儲(chǔ)周期大于存取時(shí)間。這是因?yàn)閷?duì)任何一種存儲(chǔ)器,在讀寫操作之后,總要有一段恢復(fù)內(nèi)部狀態(tài)的復(fù)原時(shí)間。
對(duì)于破壞性讀出的存儲(chǔ)器,存取周期往往比存取時(shí)間大得多,因?yàn)榇鎯?chǔ)器中的信息讀出后需要馬上進(jìn)行再生。

1.多級(jí)存儲(chǔ)系統(tǒng)
為了解決存儲(chǔ)系統(tǒng)大容量、高速度和低成本3個(gè)相互制約的矛盾,在計(jì)算機(jī)系統(tǒng)中,通常采用多級(jí)存儲(chǔ)器結(jié)構(gòu),如圖所示。在圖中由上至下,位價(jià)越來(lái)越低,速度越來(lái)越慢,容量越來(lái)越大,CPU訪問(wèn)的頻度也越來(lái)越低.

主存儲(chǔ)器由DRAM實(shí)現(xiàn),靠處理器的那一層(Cache)則由SRAM實(shí)現(xiàn),屬于易失性存儲(chǔ)器,只要斷電,保存的信息便會(huì)丟失.
DRAM的每比特成本低于SRAM,速度也慢于SRAM,
價(jià)格差異主要是因?yàn)橹圃霥RAM需要更多的硅.
ROM屬于非易失性存儲(chǔ)器。
1.SRAM 和DRAM
一.SRAM的工作原理
靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的存儲(chǔ)元是用雙穩(wěn)態(tài)觸發(fā)器(六晶體管MOS)記憶信息,信息被讀出后,保持其原狀態(tài)而不需要再生(非破壞性讀出);
SRAM的存取速度快,但集成度低,功耗較大,一般用來(lái)組成高速緩沖存儲(chǔ)器.
二.DRAM的工作原理
動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DRAM)是利用存儲(chǔ)元電路中柵極電容上的電荷來(lái)存儲(chǔ)信息的,DRAM的基本存儲(chǔ)元通常只使用一個(gè)晶體管,比SRAM的密度要高很多。
DRAM采用地址復(fù)用技術(shù),地址線是原來(lái)的1/2,且地址信號(hào)分行、列兩次傳送。
相對(duì)于SRAM來(lái)說(shuō),DRAM具有容易集成、位價(jià)低、容量大和功耗低等優(yōu)點(diǎn),但DRAM的存取速度較慢,一般用來(lái)組成大容量主存系統(tǒng)。
DRAM電容上的電荷一般只能維持1~2ms,即使不斷電,信息也會(huì)自動(dòng)消失。為此,每隔一定時(shí)間必須刷新,通常取2ms,這個(gè)時(shí)間稱為刷新周期。
常用的刷新方式有3種:集中刷新、分散刷新和異步刷新。
1)集中刷新:指在一個(gè)刷新周期內(nèi),利用一段固定的時(shí)間,依次對(duì)存儲(chǔ)器的所有行進(jìn)行逐一再生,在此期間停止對(duì)存儲(chǔ)器的讀寫操作,稱為“死時(shí)間”,又稱訪存“死區(qū)”。
集中刷新的優(yōu)點(diǎn)是讀寫操作時(shí)不受刷新工作的影響,因此系統(tǒng)的存取速度較高;
缺點(diǎn)是在集中刷新期間(死區(qū))不能訪問(wèn)存儲(chǔ)器。
2)分散刷新:把對(duì)每行的刷新分散到各個(gè)工作周期中。
一個(gè)存儲(chǔ)器的系統(tǒng)工作周期分為兩部分:
前半部分用于正常讀、寫或保持;
后半部分用于刷新某一行。
會(huì)增加系統(tǒng)的存取周期,如存儲(chǔ)芯片的存取周期為0.5μs,則系統(tǒng)的存取周期為1μs.
其優(yōu)點(diǎn)是沒(méi)有死區(qū);缺點(diǎn)是加長(zhǎng)了系統(tǒng)的存取周期,降低了整機(jī)的速度。
3)異步刷新:異步刷新是前兩種方法的結(jié)合,既可縮短“死時(shí)間”",又能充分利用最大刷新間隔為2ms的特點(diǎn)。
具體做法︰將刷新周期除以行數(shù),得到兩次刷新操作之間的時(shí)間間隔t,利用邏輯電路每隔時(shí)間t產(chǎn)生一次刷新請(qǐng)求??杀苊馐笴PU連續(xù)等待過(guò)長(zhǎng)的時(shí)間,且減少了刷新次數(shù),從根本上提高整機(jī)的工作效率
DRAM的刷新需注意以下問(wèn)題:
①刷新對(duì)CPU是透明的,即刷新不依賴于外部的訪問(wèn);
②動(dòng)態(tài)RAM的刷新單位是行,因此刷新操作時(shí)僅需要行地址;
③刷新操作類似于讀操作,但又有所不同。刷新操作僅給柵極電容補(bǔ)充電荷,不需要信息輸出。刷新時(shí)不需要選片,即整個(gè)存儲(chǔ)器中的所有芯片同時(shí)被刷新。
注意易失性存儲(chǔ)器和刷新的區(qū)別:
易失性存儲(chǔ)器是指斷電后數(shù)據(jù)丟失,SRAM和DRAM都滿足斷電內(nèi)容消失,但需要刷新的只有DRAM,而SRAM不需要刷新。

2.只讀存儲(chǔ)器
一.只讀存儲(chǔ)器(ROM)的特點(diǎn)
ROM和RAM都是支持隨機(jī)存取的存儲(chǔ)器,其中SRAM和DRAM均為易失性半導(dǎo)體存儲(chǔ)器。
而ROM中一旦有了信息,就不能輕易改變,即使掉電也不會(huì)丟失,它在計(jì)算機(jī)系統(tǒng)中是只供讀出的存儲(chǔ)器。
ROM器件有兩個(gè)顯著的優(yōu)點(diǎn)∶
1)結(jié)構(gòu)簡(jiǎn)單,所以位密度比可讀寫存儲(chǔ)器的高。2)具有非易失性,所以可靠性高。
二.ROM的類型
根據(jù)制造工藝的不同,ROM可分為
掩模式只讀存儲(chǔ)器(MROM) 、
一次可編程只讀存儲(chǔ)器(PROM) 、
可擦除可編程只讀存儲(chǔ)器(EPROM) 、
閃速存儲(chǔ)器(Flash Memory)
和固態(tài)硬盤(SolidState Drives)。
1.連接原理
1)主存儲(chǔ)器通過(guò)數(shù)據(jù)總線、地址總線和控制總線與CPU連接。
2)地址總線的位數(shù)決定了可尋址的最大內(nèi)存空間。

2.主存容量的擴(kuò)展
單個(gè)存儲(chǔ)芯片的容量有限,在字?jǐn)?shù)或字長(zhǎng)方面與實(shí)際存儲(chǔ)器的要求有差距,需在字和位兩方面進(jìn)行擴(kuò)充才能滿足要求。
通常采用位擴(kuò)展法、字?jǐn)U展法和字位同時(shí)擴(kuò)展法來(lái)擴(kuò)展主存容量.
一.位擴(kuò)展法
CPU的數(shù)據(jù)線數(shù)與存儲(chǔ)芯片的數(shù)據(jù)位數(shù)不一定相等,此時(shí)必須對(duì)存儲(chǔ)芯片擴(kuò)位(即進(jìn)行位擴(kuò)展,用多個(gè)存儲(chǔ)器件對(duì)字長(zhǎng)進(jìn)行擴(kuò)充,增加存儲(chǔ)字長(zhǎng)),
使其數(shù)據(jù)位數(shù)與CPU的數(shù)據(jù)線數(shù)相等.
二.字?jǐn)U展法
字?jǐn)U展是指增加存儲(chǔ)器中字的數(shù)量,而位數(shù)不變。
字?jǐn)U展將芯片的地址線、數(shù)據(jù)線、讀寫控制線相應(yīng)并聯(lián).而由片選信號(hào)來(lái)區(qū)分各芯片的地址范圍。
三.字位同時(shí)擴(kuò)展法
存儲(chǔ)器往往需要同時(shí)擴(kuò)充字和位。
字位同時(shí)擴(kuò)是指既增加存儲(chǔ)字的數(shù)量,又增加存儲(chǔ)字長(zhǎng)。
例題:初始芯片:2k*1位 想讓存儲(chǔ)器變?yōu)?6k*8位
需要多少塊初始芯片 8*8=64

3.5儲(chǔ)存器
1.程序訪問(wèn)的局部性原理
程序訪問(wèn)的局部性原理包括時(shí)間局部性和空間局部性。
時(shí)間局部性是指在最近的未來(lái)要用到的信息,很可能是現(xiàn)在正在使用的信息,因?yàn)槌绦蛑写嬖谘h(huán)。
空間局部性是指在最近的未來(lái)要用到的信息,很可能與現(xiàn)在正在使用的信息在存儲(chǔ)空間上是鄰近的,因?yàn)橹噶钔ǔJ琼樞虼娣拧㈨樞驁?zhí)行的,數(shù)據(jù)一般也是以向量、數(shù)組等形式簇聚地存儲(chǔ)在一起的.
高速緩沖技術(shù)就是利用程序訪問(wèn)的局部性原理,把程序中正在使用的部分存放在一個(gè)高速的、容量較小的Cache中,使CPU的訪存操作大多數(shù)針對(duì)Cache進(jìn)行,從而大大提高程序的執(zhí)行速度。
例題:假定數(shù)組元素按行優(yōu)先方式存儲(chǔ),對(duì)于下面的兩個(gè)函數(shù):
1)對(duì)于數(shù)組a的訪問(wèn),哪個(gè)空間局部性更好?哪個(gè)時(shí)間局部性更好?
2)對(duì)于指令訪問(wèn)來(lái)說(shuō),for循環(huán)體的空間局部性和時(shí)間局部性如何?

雖然程序A和程序B的功能相同,但因內(nèi)、外兩重循環(huán)的順序不同而導(dǎo)致兩者對(duì)數(shù)組a訪問(wèn)的空間局部性相差較大,從而帶來(lái)執(zhí)行時(shí)間的不同。
程序A優(yōu)先把同行元素相加,其時(shí)間空間局部性都更好
2.Cache的基本工作原理
Cache位于存儲(chǔ)器層次結(jié)構(gòu)的頂層,通常由SRAM構(gòu)成.
為便于Cache和主存之間交換信息,Cache和主存都被劃分為相等的塊,(Cache塊又稱Cache行)每塊由若干字節(jié)組成,塊的長(zhǎng)度稱為塊長(zhǎng)(Cache行長(zhǎng))
由于Cache的容量遠(yuǎn)小于主存的容量,所以Cache中的塊數(shù)要遠(yuǎn)少于主存中的塊數(shù),它僅保存主存中最活躍的若干塊的副本.
因此Cache按照某種策略,預(yù)測(cè)CPU在未來(lái)一段時(shí)間內(nèi)欲訪存的數(shù)據(jù),將其裝入Cache.
發(fā)出讀請(qǐng)求時(shí),若訪存地址在Cache中命中,就將此地址轉(zhuǎn)換成Cache地址直接來(lái)的某塊信息。
注意:CPU與Cache之間的數(shù)據(jù)交換以字為單位,
CPU與主存之間的數(shù)據(jù)交換以Cache塊為單位。

2.Cache的基本工作原理
CPU欲訪問(wèn)的信息已在Cache中的比率稱為Cache的命中率。設(shè)一個(gè)程序執(zhí)行期間,Cache的總命中次數(shù)為Nc,訪問(wèn)主存的總次數(shù)為Nm,則命中率H為
H= Nc/(Nc+Nm)
可見為提高訪問(wèn)效率,命中率H越接近1越好,即Nc越高越好。設(shè)t為命中時(shí)的Cache訪問(wèn)時(shí)間,tm為未命中時(shí)的訪問(wèn)時(shí)間,1-H表示未命中率,則Cache-主存系統(tǒng)的平均訪問(wèn)時(shí)間Ta為
Ta= Ht+(1-H )tm
(訪問(wèn)的總時(shí)間:訪問(wèn)catch命中的時(shí)間來(lái)乘以catch的命中率+未命中的時(shí)間乘以catch的未命中率)
例題:假設(shè)Cache的速度是主存的5倍,且Cache的命中率為95 %,則采用Cache后,存儲(chǔ)器性能提高多少?
(設(shè)Cache和主存同時(shí)被訪問(wèn),若Cache命中則中斷訪問(wèn)主存)

地址映射不同于地址變換。地址變換是指CPU在訪存時(shí),將主存地址按映射規(guī)則換算成Cache地址的過(guò)程。地址映射的方法有以下3種。
一.直接映射
直接映射的關(guān)系可定義為j=i mod 2^c
式中,j是Cache的塊號(hào)(又稱Cache行號(hào)),i是主存的塊號(hào),2是Cache中的總塊數(shù)。在這種映射方式中,主存的第0塊、第塊、第塊!……只能映射到Cache的第0行﹔而主存的第1塊、第2塊、第2+1塊……只能映射到Cache的第1行,以此類推。

由函數(shù)看出,主存塊號(hào)的低c位正好是它要裝入的Cache行號(hào)。
給每個(gè)Cache行設(shè)置一個(gè)長(zhǎng)為t=m-c的標(biāo)記(tag) ,當(dāng)主存某塊調(diào)入Cache后,就將其塊號(hào)的高t位設(shè)置在對(duì)應(yīng)Cache行的標(biāo)記中,如圖(a)所示。
直接映射的地址結(jié)構(gòu)為

CPU訪存過(guò)程如圖(b)所示。說(shuō)明︰
1)首先根據(jù)訪存址中間的c位,直接找到對(duì)應(yīng)的Cache行,
(2)將對(duì)應(yīng)Cache行中的標(biāo)記和主存地址的高位標(biāo)記進(jìn)行比較,若相等且有效位為1,則訪問(wèn)Cache“命中”,
(3)此時(shí)根據(jù)主存地址中低位的塊內(nèi)地址,在對(duì)應(yīng)的Cache行中存取信息;若不相等或有效位為0,則不命中,此時(shí)從CPU主存中讀出該地址所在的一塊信息送到對(duì)應(yīng)的Cache行中,將有效位置1.并將標(biāo)記設(shè)置為地址中的高t位,同時(shí)將該地址中的內(nèi)容送入CPU

除去第b位塊內(nèi)地址后的行號(hào)第c位與其標(biāo)記字段相比,相等命中,否則缺失,從主存讀出將cache塊調(diào)入

將Cache空間分成大小相同的組,
主存的一個(gè)數(shù)據(jù)塊可以裝入一組內(nèi)的任何一個(gè)位置,即組間采取直接映射,而組內(nèi)采取全相聯(lián)映射,

例題:假設(shè)某個(gè)計(jì)算機(jī)的主存地址空間大小為256MB,按字節(jié)編址,其數(shù)據(jù)Cache有8個(gè)Cache行,行長(zhǎng)為64B。
1)若不考慮用于Cache的一致維護(hù)性和替換算法控制位,并且采用直接映射方式,則該數(shù)據(jù)Cache的總?cè)萘繛槎嗌?
①:按字節(jié)編,將內(nèi)存空間轉(zhuǎn)化為字節(jié)2^nB,即為n位的地址空間
②行長(zhǎng)*行數(shù)=?數(shù)據(jù)容量(未包含映射 并非直接總?cè)萘?/p>
③根據(jù)映射方式寫出具體結(jié)構(gòu) 本題直接映射
④行長(zhǎng)64B,塊內(nèi)地址6位;塊號(hào)即行數(shù),8個(gè)即3位,剩下標(biāo)記字段總地址空間位數(shù)=28-6-3=19;除去這些,隱藏的有效位1位
⑤計(jì)算前統(tǒng)一單位,注意:cache塊內(nèi)地址在數(shù)據(jù)位中表示出來(lái),在算容量要注意舍去,只取標(biāo)記位和有效位,即29
⑥總?cè)萘浚簲?shù)據(jù)容量+映射=64B*8+(1+19)Bit



Cache的總?cè)萘堪?存儲(chǔ)容量、標(biāo)記陣列容量(有效位、標(biāo)記位)
假設(shè)某個(gè)計(jì)算機(jī)的主存地址空間大小為256MB,按字節(jié)編址,其數(shù)據(jù)Cache有8個(gè)Cache行,行長(zhǎng)為64B。
2)若該Cache采用直接映射方式,則主存地址為3200(十進(jìn)制)的主存塊對(duì)應(yīng)的Cache行號(hào)是多少?采用二路組相聯(lián)映射時(shí)又是多少?
①直接映射 計(jì)算第幾塊:3200/64=50塊
②行號(hào)計(jì)算 8行 c=3, i mod 2^c=50 mod 2^3=2,行號(hào)為2
①二路相連映射 兩個(gè)cache行合并 內(nèi)部采用全相連
外部直接映射 即數(shù)據(jù)行數(shù)/2 求出的是組數(shù)
②組號(hào)計(jì)算 i mod 2^c=50 mod 2^2=2
③行號(hào)計(jì)算:0號(hào)組0,1行 1號(hào)組2,3行 3號(hào)組4,5行 故cache行號(hào)對(duì)應(yīng)4或5
假設(shè)某個(gè)計(jì)算機(jī)的主存地址空間大小為256MB,按字節(jié)編址,其數(shù)據(jù)Cache有8個(gè)Cache行,行長(zhǎng)為64B。
3〉以直接映射方式為例,簡(jiǎn)述訪存過(guò)程(設(shè)訪存的地址為0123456H)
訪存地址轉(zhuǎn)化為28位2進(jìn)制,根據(jù)直接映射

對(duì)應(yīng)出標(biāo)記 行號(hào)和塊內(nèi)地址
首先根據(jù)塊號(hào),查Cache (即001號(hào)Cache行)中對(duì)應(yīng)的主存標(biāo)記位。
若相同,再看Cache行中的裝入有效位是否為1,若是,則表示有效,稱此訪問(wèn)命中,按塊內(nèi)地址010110讀出 Cache行所對(duì)應(yīng)的單元并送入CPU中,完成訪存。
若出現(xiàn)標(biāo)記位不相等或有效位為0的情況,則不命中,訪問(wèn)主存將數(shù)據(jù)取出并送往CPU和Cache的對(duì)應(yīng)塊中,把主存的最高19位存入001行的Tag中,并將有效位置1。
4.Cache中主存塊的替換算法
常用的替換算法有隨機(jī)(RAND)算法、先進(jìn)先出 (FIFO)算法、近期最少使用(LR)算法和最不經(jīng)常使用(LFU)算法。其中最??疾榈氖荓RU算法。
1)隨機(jī)算法︰隨機(jī)地確定替換的Cache塊。它的實(shí)現(xiàn)比較簡(jiǎn)單,但未依據(jù)程序訪問(wèn)的局部性原理,因此可能命中率較低。
2)先進(jìn)先出算法:選擇最早調(diào)入的行進(jìn)行替換。它比較容易實(shí)現(xiàn),但也未依據(jù)程序訪問(wèn)的局部性原理,因?yàn)樽钤邕M(jìn)入的主存塊也可能是目前經(jīng)常要用的。3)近期最少使用算法∶依據(jù)程序訪問(wèn)的局部性原理,選擇近期內(nèi)長(zhǎng)久未訪問(wèn)過(guò)的Cache行作為替換的行,平均命中率要比FIFO的高,是堆棧類算法。
5.Cache 寫策略
因?yàn)镃ache中的內(nèi)容是主存塊副本,當(dāng)對(duì)Cache中的內(nèi)容進(jìn)行更新時(shí),就需選用寫操作策略使Cache內(nèi)容和主存內(nèi)容保持一致。此時(shí)分兩種情況。
1)全寫法(寫直通法、write-through)。當(dāng)CPU對(duì)Cache寫命中時(shí),必須把數(shù)據(jù)同時(shí)寫入Cache和主存。當(dāng)某一塊需要替換時(shí),不必把這一塊寫回主存,用新調(diào)入的塊直接覆蓋即可。
2)寫回法(write-back)。當(dāng)CPU對(duì)Cache寫命中時(shí),只修改Cache的內(nèi)容,而不立即寫入主存,只有當(dāng)此塊被換出時(shí)才寫回主存。這種方法減少了訪存次數(shù),但存在不一致的隱患。采用這種策略時(shí),每個(gè)Cache行必須設(shè)置一個(gè)標(biāo)志位(臟位),以反映此塊是否被CPU修改過(guò)。
二.對(duì)于Cache寫不命中,也有兩種理方法。
1)寫分配法(write-allocate)。加載主存中的塊到Cache中,然后更新這個(gè)Cache塊。它試圖利用程序的空間局部性,但缺點(diǎn)是每次不命中都需要從主存中讀取一塊。
2)非寫分配法(not-write-allocate)法。只寫入主存,不進(jìn)行調(diào)塊。
非寫分配法通常與全寫法合用,寫分配法通常和寫回法合用。
4.1指令格式
指令(又稱機(jī)器指令)是指示計(jì)算機(jī)執(zhí)行某種操作的命令,程序由一條條指令構(gòu)成。
1.指令的基本格式
一條指令就是機(jī)器語(yǔ)言的一個(gè)語(yǔ)句,它是一組有意義的二進(jìn)制代碼。一條指令通常包括操作碼字段和地址碼字段(不止一個(gè))兩部分。
操作碼指出指令中該指令應(yīng)該執(zhí)行什么性質(zhì)的操作和具有何種功能。
地址碼給出被操作的信息(指令或數(shù)據(jù))的地址,包括參加運(yùn)算的一個(gè)或多個(gè)操作數(shù)所在的地址、運(yùn)算結(jié)果的保存地址、程序的轉(zhuǎn)移地址、被調(diào)用的子程序的入口地址等。
指令的長(zhǎng)度是指一條指令中所包含的二進(jìn)制代碼的位數(shù)。指令字長(zhǎng)取決于操作碼的長(zhǎng)度、操作數(shù)地址碼的長(zhǎng)度和操作數(shù)地址的個(gè)數(shù)。
根據(jù)指令中操作數(shù)地址碼的數(shù)目的不同,指令分:
一.零地址指令
零地址 OP
只給出操作碼OP,沒(méi)有顯式地址。這種指令有兩種可能:
1)不需要操作數(shù)的指令,如空操作指令、停機(jī)指令、關(guān)中斷指令等。
2)零地址的運(yùn)算類指令僅用在堆棧計(jì)算機(jī)中。通常參與運(yùn)算的兩個(gè)操作數(shù)隱含地從棧頂和次棧頂彈出,送到運(yùn)算器進(jìn)行運(yùn)算,運(yùn)算結(jié)果再隱含地壓入堆棧。
1)只有目的操作數(shù)的單操作數(shù)指令,按A1地址讀取操作數(shù),進(jìn)行OP操作后,結(jié)果存回原地址。
指令含義:OP (A1)→A1
如操作碼含義是加1、減1、求反、求補(bǔ)等。
2)隱含約定目的地址的雙操作數(shù)指令,按指令地址A1可讀取源操作數(shù),指令可隱含約定另一個(gè)操作數(shù)由ACC(累加器)提供,運(yùn)算結(jié)果也將存放在ACC中。指令含義: (AcC)oP (A1)→ACC
用1地址指令指實(shí)現(xiàn)兩操作數(shù)相加:
A由地址碼字段顯示 B由累加器ACC提供 結(jié)果放入ACC
若指令字長(zhǎng)為32位,操作碼占8位,1個(gè)地址碼字段占24位(字長(zhǎng)減操作碼長(zhǎng)),則指令操作數(shù)的直接尋址范圍為2^24=16M。
二地址指令:

指令含義:(A1) OP (A2)→A1
對(duì)于常用的算術(shù)和邏輯運(yùn)算指令,往往要求使用兩個(gè)操作數(shù),需分別給出目的操作數(shù)和源操作數(shù)的地址,其中目的操作數(shù)地址還用于保存本次的運(yùn)算結(jié)果。
若指令字長(zhǎng)為32位,操作碼占8位,兩個(gè)地址碼字段各占12位((32-8)/2=12),則指令操作數(shù)的直接尋址范圍為2^12=4K.
三地址指令:

指令含義: (A1) OP (A2)→A3
若指令字長(zhǎng)為32位,操作碼占8位,3個(gè)地址碼字段各占8(32-8)/3位,則指令操作數(shù)的直接尋址范圍為2^8=256
若地址字段均為主存地址,則完成一條三地址需要4次訪問(wèn)存儲(chǔ)器(取指令1次,取兩個(gè)操作數(shù)2次,存放結(jié)果1次).
四地址指令:

指令含義:(A1) OP (A2)→A3,A4=下一條將要執(zhí)行指令的地址。
若指令字長(zhǎng)為32位,操作碼占8位,4個(gè)地址碼字段各占6位,則指令操作數(shù)的直接尋址范圍為2^6=64。
4.2指令的尋址方式
尋址方式是指尋找指令或操作數(shù)有效地址的方式,即確定本條指令的數(shù)據(jù)地址及下一條待執(zhí)行指令的地址的方法。尋址方式分為指令尋址和數(shù)據(jù)尋址兩大類。
指令中的地址碼字段并不代表操作數(shù)的真實(shí)地址,這種地址稱為形式地址(A) ;形式地址結(jié)合尋址方式,可以計(jì)算出操作數(shù)在存儲(chǔ)器中的真實(shí)地址,這種地址稱為有效地址(EA)。
注意:(A)表示地址為A的數(shù)值,
例如,EA= (A)意思是有效地址是地址A中的數(shù)值。
1.指令尋址和數(shù)據(jù)尋址
尋找下一條將要執(zhí)行的指令地址稱為指令尋址;尋找操作數(shù)的地址稱為數(shù)據(jù)尋址
一.指令尋址
指令尋址方式有兩種:一種是順序?qū)ぶ贩绞?/strong>,另一種是跳躍尋址方式。
1)順序?qū)ぶ房赏ㄟ^(guò)程序計(jì)數(shù)器(PC)加1 (1個(gè)指令字長(zhǎng) 不一定都是為1),自動(dòng)形成下一條指令的地址。
2)跳躍尋址通過(guò)轉(zhuǎn)移類指令實(shí)現(xiàn)。所謂跳躍,是指下條指令的地址碼不由程序計(jì)數(shù)器給出,而由本條指令給出下條指令地址的計(jì)算方式。
2.常見的數(shù)據(jù)尋址方式—.隱含尋址
不明顯地給出操作數(shù)的地址,而在指令中隱含操作數(shù)的地址。(例如棧堆
例如,單地址的指令格式就不明顯地在地址字段中指出第二操作數(shù)的地址,而規(guī)定累加器(ACC)作為第二操作數(shù)地址,指令格式明顯指出的僅是第一操作數(shù)的地址。
因此,累加器(ACC)對(duì)單地址指令格式來(lái)說(shuō)是隱含尋址,如圖所示。
隱含尋址的優(yōu)點(diǎn)是有利于縮短指令字長(zhǎng);
缺點(diǎn)是需增加存儲(chǔ)操作數(shù)或隱含地址的硬件,增加成本.

二.立即(數(shù))尋址
此指令的地址字段指出的不是操作數(shù)的地址,而是操作數(shù)本身,又稱立即數(shù)。數(shù)據(jù)采用補(bǔ)碼形式存放。
圖示為立即尋址示意圖,圖中#表示立即尋址特征,A就是操作數(shù)本身。
立即尋址的優(yōu)點(diǎn)是指令在執(zhí)行階段不訪問(wèn)主存,指令執(zhí)行時(shí)間最短;
缺點(diǎn)是A的位數(shù)限制了立即數(shù)的范圍。
三.直接尋址
指令字中的形式地址A是操作數(shù)的真實(shí)地址EA,即EA=A,如圖所示。

其優(yōu)點(diǎn)是簡(jiǎn)單,指令在執(zhí)行階段僅訪問(wèn)一次主存,不需專門計(jì)算操作數(shù)的地址;
缺點(diǎn)是A的位數(shù)決定了該指令操作數(shù)的尋址范圍,操作數(shù)的地址不易修改。
四.間接尋址
相對(duì)于直接尋址而言的,指令的地址字段給出的形式地址不是操作數(shù)的真正地址,而是操作數(shù)有效地址所在的存儲(chǔ)單元的地址,也就是操作數(shù)地址的地址,即EA= (A),如圖所示。
間接尋址可以是一次間接尋址,也可是多次間接尋址。
間接尋址的優(yōu)點(diǎn)是可擴(kuò)大尋址范圍(有效地址EA的位數(shù)大于形式地址A的位數(shù)),
便于編制程序(用間接尋址可方便地完成子程序返回)﹔
缺點(diǎn)是指令在執(zhí)行階段要多次訪存(一次間接尋址需兩次訪存,多次間接尋址需根據(jù)存儲(chǔ)字的最高位確定訪存次數(shù))。
訪問(wèn)速度過(guò)慢,這種尋址方式并不常用。一般問(wèn)到擴(kuò)大尋址范圍時(shí),通常指的是寄存器間接尋址。

五.寄存器尋址
寄存器尋址是指在指令字中直接給出操作數(shù)所在的寄存器編號(hào),即EA=R;,其操作數(shù)在由R;所指的寄存器內(nèi),如圖所示。

寄存器尋址的優(yōu)點(diǎn)是指令在執(zhí)行階段不訪問(wèn)主存,只訪問(wèn)寄存器,因寄存器數(shù)量較少,對(duì)應(yīng)地址碼長(zhǎng)度較小,使得指令字短且因不用訪存,所以執(zhí)行速度快,支持向量/矩陣運(yùn)算;
缺點(diǎn)是寄存器價(jià)格昂貴,計(jì)算機(jī)中的寄存器個(gè)數(shù)有限。
六.寄存器間接尋址
指在寄存器R;中給出的不是一個(gè)操作數(shù),而是操作數(shù)所在主存單元的地址,即EA=(R;),如圖所示。

特點(diǎn):
與一般間接尋址相比速度更快,但指令的執(zhí)行階段需要訪問(wèn)主存(因?yàn)椴僮鲾?shù)在主存中)。
七.相對(duì)尋址
把程序計(jì)數(shù)器(PC)的內(nèi)容加上指令格式中的形式地址A而形成操作數(shù)的有效地址,即EA= (PC) +A,
其中A是相對(duì)于當(dāng)前指令地址的位移量,可正可負(fù),補(bǔ)碼表示,如圖所示。

其優(yōu)點(diǎn)是操作數(shù)的地址不是固定的,它陂PC值的變化而變化,且與指令
地址之間總是相差一個(gè)固定值,因此便于程序浮動(dòng)。相對(duì)尋址廣泛應(yīng)用于轉(zhuǎn)移指令。
注意:對(duì)于轉(zhuǎn)移指令JMPA,當(dāng)CPU從存儲(chǔ)器中取出一字節(jié)時(shí),會(huì)自動(dòng)執(zhí)行(PC)+1→PC。
若轉(zhuǎn)移指令的地址為X,且占2B,在取出該指令后,PC的值會(huì)增2,即(PC)=x+2,這樣在執(zhí)行完該指令后,會(huì)自動(dòng)跳轉(zhuǎn)到X+2+A的地址繼續(xù)執(zhí)行。
八.基址尋址
指將CPU中基址寄存器(BR)的內(nèi)容加上指令格式中的形式地址A而形成操作數(shù)的有效地址,
即EA= (BR)+A
其中基址寄存器既可采用專用寄存器,又可采用通用寄存器,如圖所示。

基址寄存器是面向操作系統(tǒng)的,其內(nèi)容由操作系統(tǒng)或管理程序確定,主要用于解決程序邏輯空間與存儲(chǔ)器物理空間的無(wú)關(guān)性。
在程序執(zhí)行過(guò)程中,基址寄存器的內(nèi)容不變(作為基地址),形式地址可變(作為偏移量)。
采用通用寄存器作為基址寄存器時(shí),可由用戶決定哪個(gè)寄存器作為基址寄存器,但其內(nèi)容仍由操作系統(tǒng)確定。
優(yōu)點(diǎn)是可擴(kuò)大尋址范圍(基址寄存器的位數(shù)大于形式地址A的位數(shù));
用戶不必考慮自己的程序存于主存的哪個(gè)空間區(qū)域,因此有利于多道程序設(shè)計(jì),并可用于編制浮動(dòng)程序,但偏移量(形式地址A)的位數(shù)較短。
九.變址尋址
變址尋址是搭有效地址A等子指令字中的形式地址A與變址寄存器IX的內(nèi)容之和,即EA=(IX)+A,其中IX為變址寄存器(專用),也可用通用寄存器作為變址寄存器。圖示為采用專用寄存器IX的變址尋址示意圖。
變址寄存器是面向用戶的,在程序執(zhí)行過(guò)程中,變址寄存器的內(nèi)容可由用戶改變(作為偏移量),形式地址A不變(作為基地址)。
其優(yōu)點(diǎn)是可擴(kuò)大尋址范圍(變址寄存器的位數(shù)大于形式地址A的位數(shù));
在數(shù)組處理過(guò)程中,可設(shè)定A為數(shù)組的首地址,
不斷改變變址寄存器IX的內(nèi)容,
便可很容易形成數(shù)組中任一數(shù)據(jù)的地址,特別適合編制循環(huán)程序。
變址尋址與基址尋址的有效地址形成過(guò)程極為相似。本質(zhì)上,兩者區(qū)別較大。
基址尋址面向系統(tǒng),主要用于為多道程序或數(shù)據(jù)分配存儲(chǔ)空間,因此基址寄存器的內(nèi)容通常由操作系統(tǒng)或管理程序確定,在程序的執(zhí)行過(guò)程中其值不可變,而指令字中的A是可變的;
變址尋址立足于用戶,主要用于處理數(shù)組問(wèn)題,
在變址尋址中,變址寄存器的內(nèi)容由用戶設(shè)定,
在程序執(zhí)行過(guò)程中其值可變,而指令字中的A是不可變的。
4.3CISC和RISC的基本概念
復(fù)雜指令系統(tǒng)計(jì)算機(jī)(CISC)
隨著VLSI技術(shù)的發(fā)展,硬件成本不斷下降,軟件成本不斷上升,促使人們?cè)谥噶钕到y(tǒng)中增加更多、更復(fù)雜的指令,以適應(yīng)不同的應(yīng)用領(lǐng)域,這樣就構(gòu)成了復(fù)雜指令系統(tǒng)計(jì)算機(jī) (CISC) 。
一.CISC的主要特點(diǎn)如下:
1)指令系統(tǒng)復(fù)雜龐大,指令數(shù)目一般為200條以上。2)指令的長(zhǎng)度不固定,指令格式多,尋址方式多。3)可以訪存的指令不受限制。(病毒程序也會(huì)訪問(wèn),導(dǎo)致安全性存疑)
4)各種指令使用頻度相差很大。
5)各種指令執(zhí)行時(shí)間相差很大,大多數(shù)指令需多個(gè)時(shí)鐘周期才能完成。
6)控制器大多數(shù)采用微程序控制。有些指令非常復(fù)雜,以至于無(wú)法采用硬連線控制。
7)難以用優(yōu)化編譯生成高效的目標(biāo)代碼程序。
⒉精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)(RISC)
精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī) (RISC)的中心思想是要求指令系統(tǒng)簡(jiǎn)化,盡量使用寄存器-寄存器操作指令,指令格式力求一致。
一.RISC的主要特點(diǎn)如下:
1)選取使用頻率最高的一些簡(jiǎn)單指令,復(fù)雜指令的功能由簡(jiǎn)單指令的組合來(lái)實(shí)現(xiàn)。
2)指令長(zhǎng)度固定,指令格式種類少,尋址方式種類少。
3)只有Load /Store(取數(shù)/存數(shù))指令訪存,其余指令的操作都在寄存器之間進(jìn)行。(間接導(dǎo)致了4)
4)CPU中通用寄存器的數(shù)量相當(dāng)多。
5)RISC一定采用指令流水線技術(shù),大部分指令在一個(gè)時(shí)鐘周期內(nèi)完成。
6)以硬布線控制為主,不用或少用微程序控制。
7)特別重視編譯優(yōu)化工作,以減少程序執(zhí)行時(shí)間。

例題:



1)直接尋址時(shí),有效地址是指令中的地址碼部分500,裝入ACC的是800。
2)立即尋址時(shí),指令的地址碼部分是操作數(shù)而不是地址,所以將500裝入ACC。
3)間接尋址時(shí),操作數(shù)的有效地址存儲(chǔ)在地址為500的單元中,由此得到有效地址為800,操作數(shù)是300。
4)相對(duì)尋址時(shí),有效地址=(PC)+A=202+500=702,
(雙子長(zhǎng)隱藏指令執(zhí)行完要+2)所以裝入ACC的操作數(shù)是325。這是因?yàn)橹噶钍请p字長(zhǎng),在該指令的執(zhí)行階段,PC的內(nèi)容已經(jīng)加2,更新為下一條指令的地址202。
5)變址尋址時(shí),有效地址EA=(XR)+A=100+500=600,所以裝入ACC的操作數(shù)是900。
6)寄存器尋址時(shí),R1的內(nèi)容400裝入ACC。
7)寄存器間接尋址時(shí),有效地址是R1的內(nèi)容400,裝入ACC的操作數(shù)是700。

5.1 CPU的功能和基本結(jié)構(gòu)
1.CPU的功能
中央處理器(CPU)由運(yùn)算器和控制器組成。
其中,控制器的功能是負(fù)責(zé)協(xié)調(diào)并控制計(jì)算機(jī)各部件執(zhí)行程序的指令序列包括取指令、分析指令和執(zhí)行指令﹔運(yùn)算器的功能是對(duì)數(shù)據(jù)進(jìn)行加工。
CPU的具體功能包括:
1)指令控制.完成取指令、分析指令和執(zhí)行指令的操作,即程序的順序控制。
2) 操作控制.一條指令的功能往往由若干操作信號(hào)的組合來(lái)實(shí)現(xiàn)。CPU管理并產(chǎn)生由內(nèi)存取出的每條指令的操作信號(hào),把各種操作信號(hào)送往相應(yīng)的部件,從而控制這些部件按指令的要求進(jìn)行動(dòng)作。
3) 時(shí)間控制.對(duì)各種操作加以時(shí)間上的控制。時(shí)間控制要為每條指令按時(shí)間順序
提供應(yīng)有的控制信號(hào)。
4)數(shù)據(jù)加工.對(duì)數(shù)據(jù)進(jìn)行算術(shù)和邏輯運(yùn)算。
5)中斷處理.對(duì)計(jì)算機(jī)運(yùn)行過(guò)程中出現(xiàn)的異常情況和特殊請(qǐng)求進(jìn)行處理。

一.運(yùn)算器
運(yùn)算器接收從控制器送來(lái)的命令并執(zhí)行相應(yīng)的動(dòng)作,對(duì)數(shù)據(jù)進(jìn)行加工和處理。運(yùn)算器是計(jì)算機(jī)對(duì)數(shù)據(jù)進(jìn)行加工處理的中心,它主要由算術(shù)邏輯單元(ALU)、暫存寄存器、累加寄存器(ACC)、通用寄存器組、程序狀態(tài)字寄存器(PSW)、移位器、計(jì)數(shù)器(CT)等組成。
1) 算術(shù)邏輯單元.主要功能是進(jìn)行算術(shù)/邏輯運(yùn)算。
2) 暫存寄存器. 用于暫存從主存讀來(lái)的數(shù)據(jù),該數(shù)據(jù)不能存放在通用寄存器中,否則會(huì)破壞其原有內(nèi)容。暫存寄存器對(duì)應(yīng)用程序員是透明的。
3)累加寄存器. 它是一個(gè)通用寄存器,用于暫時(shí)存放ALU運(yùn)算的結(jié)果信息,可以作為加法運(yùn)算的—個(gè)輸入端
4)通用寄存器組.如AX、BX、CX、DX、SP等,用于存放操作數(shù)(包括源操作數(shù)、目的操作數(shù)及中間結(jié)果)和各種地址信息等。SP是堆棧指針,用于指示棧頂?shù)牡刂贰?/p>
5)程序狀態(tài)字寄存器.保留由算術(shù)邏輯運(yùn)算指令或測(cè)試指令的結(jié)果而建立的各種狀態(tài)信息,如溢出標(biāo)志(OF)、符號(hào)標(biāo)志(SF)、零標(biāo)志(ZF)、進(jìn)位標(biāo)志(CF)等。PSW中的這些位參與并決定微操作的形成。
6)移位器.對(duì)操作數(shù)或運(yùn)算結(jié)果進(jìn)行移位運(yùn)算。
7)計(jì)數(shù)器.控制乘除運(yùn)算的操作步數(shù)。
二.控制器
控制器是整個(gè)系統(tǒng)的指揮中樞,在控制器的控制下,運(yùn)算器、存儲(chǔ)器和輸入/輸出設(shè)備等功能部件構(gòu)成一個(gè)有機(jī)的整體,根據(jù)指令的要求指揮全機(jī)協(xié)調(diào)工作??刂破鞯幕竟δ苁?strong>執(zhí)行指令,每條指令的執(zhí)行是由控制器發(fā)出的一組微操作實(shí)現(xiàn)的??刂破饔沙绦蛴?jì)數(shù)器(PC)、指令寄存器(IR)、指令譯碼器、存儲(chǔ)器地址寄存器(MAR)、存儲(chǔ)器數(shù)據(jù)寄存器(MDR)、時(shí)序系統(tǒng)和微操作信號(hào)發(fā)生器等組成。
1)程序計(jì)數(shù)器.用于指出下一條指令在主存中的存放地址。CPU根據(jù)PC的內(nèi)容去主存中取指令。因程序中指令(通常)是順序執(zhí)行的,所以PC有自增功能。
2)指令寄存器.用于保存當(dāng)前正在執(zhí)行的那條指令。
3)指令譯碼器 僅對(duì)操作碼字段進(jìn)行譯碼,向控制器提供特定的操作信號(hào)。
4)存儲(chǔ)器地址寄存器.用于存放要訪問(wèn)的主存單元的地址。
5)存儲(chǔ)器數(shù)據(jù)寄存器.用于存放向主存寫入的信息或從主存讀出的信息。
6)時(shí)序系統(tǒng).用于產(chǎn)生各種時(shí)序信號(hào),它們都由統(tǒng)一時(shí)鐘(CLOCK)分頻得到。
7)微操作信號(hào)發(fā)生器.根據(jù)IR的內(nèi)容(指令)、PSW的內(nèi)容(狀態(tài)信息)及時(shí)序信號(hào),產(chǎn)生控制整個(gè)計(jì)算機(jī)系統(tǒng)所需的各種控制信號(hào),其結(jié)構(gòu)有組合邏輯型和存儲(chǔ)邏輯型兩種。
控制器的工作原理是,根據(jù)指令操作碼、指令的執(zhí)行步驟(微命令序列)和條件信號(hào)來(lái)形成當(dāng)前計(jì)算機(jī)各部件要用到的控制信號(hào)。
計(jì)算機(jī)整機(jī)各硬件系統(tǒng)在這些控制信號(hào)的控制下協(xié)同運(yùn)行,產(chǎn)生預(yù)期的執(zhí)行結(jié)果。注意:CPU內(nèi)部寄存器可分兩類:
1、用戶可見的寄存器,可對(duì)這類寄存器編程,如通用寄存器組、程序狀態(tài)字寄存器;
2、用戶不可見的寄存器,對(duì)用戶是透明的,不可對(duì)這類寄存器編程,如存儲(chǔ)器地址寄存器、存儲(chǔ)器數(shù)據(jù)寄存器、指令寄存器。
1.指令周期
CPU從主存中取出并執(zhí)行一條指令的時(shí)間稱為指令周期,不同指令的指令周期可能不同。
當(dāng)CPU采用中斷方式實(shí)現(xiàn)主機(jī)和I /O設(shè)備的信息交換時(shí),CPU在每條指令執(zhí)行結(jié)束前,都要發(fā)中斷查詢信號(hào),若有中斷請(qǐng)求,則CPU進(jìn)入中斷響應(yīng)階段,又稱中斷周期.一個(gè)完整的指令周期應(yīng)包括取指、間址、執(zhí)行和中斷4個(gè)周期,如圖所示.

4個(gè)工作周期都有CPU訪存操作,只是訪存的目的不同.
取指周期是為了取指令,
間址周期是為了取有效地址,
執(zhí)行周期是為了取操作數(shù),
中斷周期是為了保程序斷點(diǎn).
為了區(qū)別不同的工作周期,在CPU內(nèi)設(shè)置4個(gè)標(biāo)志觸發(fā)器FE、IND、EX和INT,它們分別對(duì)應(yīng)取指、間址、執(zhí)行和中斷周期,并以“1”狀態(tài)表示有效,
分別由1→FE、1一IND、1一>EX和1→INT這4個(gè)信號(hào)控制.
數(shù)據(jù)流是根據(jù)指令要求依次訪問(wèn)的數(shù)據(jù)序列.
在指令執(zhí)行的不同階段,要求依次訪問(wèn)的數(shù)據(jù)序列是不同的。而且對(duì)于不同的指令,它們的數(shù)據(jù)流往往也是不同的。
—.取指周期
取指周期的任務(wù)是根據(jù)PC中的內(nèi)容從主存中取出指令代碼并存放在IR中。取指周期的數(shù)據(jù)流如圖所示。PC中存放的是指令的地址,根據(jù)此地址從內(nèi)存單元中取出的是指令,并放在指令寄存器IR中,取指令的同時(shí),PC加1(也有可能+2,取決于字長(zhǎng)。

二.間址周期
間址周期的數(shù)據(jù)流向如下:
1)d(IRy或MDR)①M(fèi)AR②地址總線③主存.
2)CU發(fā)出讀指令④控制總線⑤主存.
3)主存⑥數(shù)據(jù)總線⑦M(jìn)DR(存放有效地址) .
三.執(zhí)行周期
執(zhí)行周期的任務(wù)是根據(jù)IR中的指令字的操作碼和操作數(shù)通過(guò)ALU操作產(chǎn)生執(zhí)行結(jié)果.不同指令的執(zhí)行周期操作不同,因此沒(méi)有統(tǒng)一的數(shù)據(jù)流向。
四.中斷周期
中斷周期的任務(wù)是處理中斷請(qǐng)求.假設(shè)程序斷點(diǎn)存入堆棧中,并用SP指示棧頂?shù)刂?,而且進(jìn)棧操作是先修改棧頂指針,后存入數(shù)據(jù),數(shù)據(jù)流如圖所示。

1.數(shù)據(jù)通路的基本結(jié)構(gòu)
數(shù)據(jù)通路的基本結(jié)構(gòu)主要有以下幾種:
1) CPU內(nèi)部單總線方式。
將所有寄存器的輸入端和輸出端都連接到一條公共通路上,這種結(jié)構(gòu)簡(jiǎn)單,但數(shù)據(jù)傳輸存在較多的沖突現(xiàn)象,性能較低。
連接各部件的總線只有一條時(shí),稱為單總線結(jié)構(gòu);
CPU中有兩條或更多的總線時(shí),構(gòu)成雙/多總線結(jié)構(gòu).圖示為CPU內(nèi)部總線的數(shù)據(jù)通路和控制信號(hào)。
2) CPU內(nèi)部三總線方式將所有寄存器的輸入端和輸出端都連接到多條公共通路上,相比之下單總線中一個(gè)時(shí)鐘內(nèi)只允許傳一個(gè)數(shù)據(jù),因而指令執(zhí)行效率很低,因此采用多總線方式,同時(shí)在多個(gè)總線上傳送不同的數(shù)據(jù),提高效率。
3)專用數(shù)據(jù)通路方式。
根據(jù)指令執(zhí)行過(guò)程中的數(shù)據(jù)和地址的流動(dòng)方向安排連接線路,避免使用共享的總線,性能較高,但硬件量大。
圖中,規(guī)定各部件用大寫字母表示,
字母加"in”表示該部件的允許輸入控制信號(hào);
字母加“out”表示該部件的允許輸出控制信號(hào)。
注意:內(nèi)部總線是指同一部件,
如CPU內(nèi)部連接各寄存器及運(yùn)算部件之間的總線;
系統(tǒng)總線是指同一臺(tái)計(jì)算機(jī)系統(tǒng)的各部件,
如CPU、內(nèi)存、通道和各類I /o接口間互相連接的總線.
一.寄存器之間的數(shù)據(jù)傳送
寄存器之間的數(shù)據(jù)傳送可通過(guò)CPU內(nèi)部總線完成。
在上圖中,某寄存器AX的輸出和輸入分別由AXout和AXin控制。
以PC寄存器為例,把PC內(nèi)容送至MAR,實(shí)現(xiàn)傳送操作的流程及控制信號(hào)為PC→Bus PCout有效,PC內(nèi)容送總線
Bus→MAR MARin有效,總線內(nèi)容送MAR
二.主存與CPU之間的數(shù)據(jù)傳送
主存與CPU之間的數(shù)據(jù)傳送也要借助CPU內(nèi)部總線完成。
現(xiàn)以CPU從主存讀取指令為例說(shuō)明數(shù)據(jù)在數(shù)據(jù)通路中的傳送過(guò)程。實(shí)現(xiàn)傳送操作的流程及控制信號(hào)為
PC→Bus→MAR PCout和MARin有效,現(xiàn)行指令
1一>R CU發(fā)讀命令
MEM(MAR)→MDR MDRin有效
MDR→Bus→IR MDRout和IRin有效,現(xiàn)行指令→IR
(即取指操作
三.執(zhí)行算術(shù)或邏輯運(yùn)算
執(zhí)行算術(shù)或邏輯操作時(shí),由于ALU本身是沒(méi)有內(nèi)部存儲(chǔ)功能的組合電路,因此如要執(zhí)行加法運(yùn)算,相加的兩個(gè)數(shù)必須在ALU的兩個(gè)輸入端同時(shí)有效。
圖中的暫存器Y即用于該目的。
先將一個(gè)操作數(shù)經(jīng)CPU內(nèi)部總線送入暫存器Y保存,
Y的內(nèi)容在ALU的左輸入端始終有效,
再將另一個(gè)操作數(shù)經(jīng)總線直接送到ALU的右輸入端。
這樣兩個(gè)操作數(shù)都送入了ALU,運(yùn)算結(jié)果暫存在暫存器Z中。