计算机组成原理哈工大期末_浅谈计算机组成原理(三)
1、
第二章:存儲系統(tǒng)
通過下面的思維導(dǎo)圖來依次分享「存儲系統(tǒng)」里面重要知識點(diǎn)。
2、
第一節(jié):存儲器的結(jié)構(gòu)
1. 主存儲器:簡稱主存,又稱內(nèi)存儲器(內(nèi)存),用來存放計(jì)算機(jī)運(yùn)行期間所需的大量程序和數(shù)據(jù),CPU可以直接隨機(jī)地對其訪問,也可以和高速緩沖存儲器(Cache)以及輔助存儲器交換數(shù)據(jù)。其特點(diǎn)是容量較小、存儲速度較快、每位價(jià)格高。
2. 輔助存儲器:簡稱輔存,又稱外存儲器(外存),是主存儲器的后援存儲器,用來存放當(dāng)前暫時(shí)不用的數(shù)據(jù)和程序,以及一些需要永久性保存的信息,它不與CPU直接交換信息,其特點(diǎn)是容量極大、存儲速度較慢、單位成本低。
3. 高速緩沖存儲器:簡稱Cache,位于主存和CPU之間,用來存放正在執(zhí)行的程序段和數(shù)據(jù),以便CPU能夠高速地使用它們。Cache的存儲速度可以與CPU的存儲速度相匹配,但存儲容量小,價(jià)格高。
4. 隨機(jī)存儲器(RAM):存儲器的任何一個(gè)存儲單元的內(nèi)容都可以隨機(jī)存取,而且存取時(shí)間與存儲單元的物理位置無關(guān)。同時(shí)RAM也是易失性存儲器,即斷電后存儲信息即消失的存儲器。其優(yōu)點(diǎn)是讀寫方便、使用靈活,主要用作主存和高速緩沖存儲器。
5. 只讀存儲器(ROM):存儲器的內(nèi)容只能隨機(jī)讀出而不能寫入。信息一旦寫入存儲器就固定不變了,即使斷電,內(nèi)容也不會丟失。同時(shí)ROM也是非易失性存儲器,即斷電后信息仍保持的存儲器。因此,通常用它存放固定不變的程序、常數(shù)和漢字字庫,甚至用于操作系統(tǒng)的固化。它與隨機(jī)存儲器可共同作為主存的一部分,統(tǒng)一構(gòu)成主存的地址域。
6. 串行訪問存儲器:對存儲單元進(jìn)行讀/寫操作時(shí),需按其物理位置的先后順序?qū)ぶ?#xff0c;包括順序存取存儲器(如磁帶)與直接存取存儲器(如磁盤)。
7. 多級存儲系統(tǒng):主存與CPU直接相連,輔存與主存直接相連,同時(shí)Cache介于CPU與主存之間,分別于CPU和主存相連。其中“Cache—主存”層次主要是解決CPU與主存速度不匹配問題,“主存—輔存”層次主要的解決存儲系統(tǒng)的容量的問題。在存儲系統(tǒng)中,Cache、主存能與CPU直接交換信息,輔存則要通過主存與CPU交換信息。
補(bǔ)充:主存和Cache之間的數(shù)據(jù)調(diào)動是由硬件自動完成的,對所有程序員均是透明的(即不可見的),而主存和輔存之間的數(shù)據(jù)調(diào)動則是由硬件和操作系統(tǒng)共同完成的,對應(yīng)用程序員的透明的(即不可見的)。
3、
第二節(jié):半導(dǎo)體隨機(jī)存儲器
1. 半導(dǎo)體存儲芯片的基本結(jié)構(gòu)如下:
①存儲矩陣:由大量相同的位存儲單元陣列構(gòu)成。
②譯碼驅(qū)動:將來自地址總線的地址信號翻譯成對應(yīng)存儲單元的選通信號,該信號再讀寫電路的配合下完成對被選中單元的讀/寫操作。
③讀寫電路:包括讀出放大器和寫入電路,用來完成讀/寫操作。
④讀/寫控制線:決定芯片進(jìn)行讀/寫操作。
⑤片選線:確定哪個(gè)存儲芯片被選中。
⑥地址線:是單向輸入的,其位數(shù)與存儲字的個(gè)數(shù)有關(guān)。
⑦數(shù)據(jù)線:是雙向的,其位數(shù)與讀出或?qū)懭氲臄?shù)據(jù)位數(shù)有關(guān),數(shù)據(jù)線數(shù)與地址線數(shù)共同反映存儲芯片容量的大小。
2. 存儲體的構(gòu)成:把存放一個(gè)二進(jìn)制的物理器件稱為存儲元,它是存儲器的最基本構(gòu)件;地址碼相同的多個(gè)存儲元構(gòu)成一個(gè)存儲單元,由若干存儲單元的集合構(gòu)成存儲體。
3. 靜態(tài)隨機(jī)存儲器(SRAM):其存儲元是用雙穩(wěn)態(tài)觸發(fā)器(六管MOS)來記憶信息的,因此即使信息被讀出后,它仍保持其原狀態(tài)而不需要再生(非破壞性讀出)。但是只要電源被切斷,原來保存的信息便會消失,故屬于易失性半導(dǎo)體存儲器。
SRAM的存取速度快,但集成度低,功耗較大,所以一般用來組成高速緩沖存儲器。
4. 動態(tài)隨機(jī)存儲器(DRAM):是利用存儲元電路中柵極電容上的電荷來存儲信息的;DRAM采用地址復(fù)用技術(shù),地址線是原來的1/2,且地址信號分行、列兩次傳遞;DRAM電容上的電荷一般只能維持1~2ms,因此即使電源不掉電,信息也會自動消失,為此,每隔一定時(shí)間必須刷新,通常取2ms,這個(gè)時(shí)間稱為刷新周期。
相對于SRAM來說,DRAM具有容易集成、價(jià)位低、容量大和功耗低等優(yōu)點(diǎn),但是DRAM的存取速度比SRAM慢,一般用來組成大容量主存系統(tǒng)。
5. 只讀存儲器(ROM):ROM和RAM都是支持隨機(jī)存取的存儲器,其中SRAM和DRAM均為易失性存儲器,而ROM中一旦有了信息,就不能輕易改變,即使掉電也不會丟失,它在計(jì)算機(jī)系統(tǒng)中是只供讀出的存儲器。其優(yōu)點(diǎn)為結(jié)構(gòu)簡單,所以位密度比可讀寫存儲器高,具有非易失性,所以可靠性高。
6. ROM的類型:根據(jù)制造工藝的不同,ROM可分為掩膜式只讀存儲器(MROM)、一次可編程只讀存儲器(PROM)、可擦除可編程只讀存儲器(EPROM)、閃速存儲器(Flash Memory)和固態(tài)硬盤(Solid State Drives)。
4、
第三節(jié):主存儲器與CPU的連接
1. 主存儲器與CPU的連接圖如下:
連接原理為:
①主存儲器通過數(shù)據(jù)總線、地址總線和控制總線與CPU連接
②數(shù)據(jù)總線的位數(shù)與工作頻率的乘積正比于數(shù)據(jù)傳輸速率。
③地址總線的位數(shù)決定了可尋址的最大內(nèi)容空間。
④控制總線(讀/寫)指出總線周期的類型和本次輸入/輸出操作完成的時(shí)刻。
2. 主存的擴(kuò)容方法:
①位擴(kuò)展法:用多個(gè)存儲器件對字長進(jìn)行補(bǔ)充,增加存儲字長,使其數(shù)據(jù)位數(shù)與CPU的數(shù)據(jù)線數(shù)相等。位擴(kuò)展的連接方式是將多個(gè)存儲芯片的地址端、片選端和讀寫控制端相應(yīng)并聯(lián),數(shù)據(jù)端分別引出。
②字?jǐn)U展法:增加存儲器中字的數(shù)量,而位數(shù)不變。字?jǐn)U展將芯片的地址線、數(shù)據(jù)線、讀寫控制線相應(yīng)并聯(lián),而由片選信號來區(qū)分各芯片的地址范圍。
③字位同時(shí)擴(kuò)展法:指既增加存儲字的數(shù)量,又增加存儲字長。
5、
第四節(jié):雙口RAM和多模塊存儲器
1. 雙端口RAM:指同一個(gè)存儲器有左、右兩個(gè)獨(dú)立的端口,分別具有兩組相互獨(dú)立的地址線、數(shù)據(jù)線和讀寫控制線,允許兩個(gè)獨(dú)立的控制器同時(shí)異步地訪問存儲單元。
2. 多模塊存儲器:為提高訪問速度,常采用多模塊存儲器,常用的有單體多字存儲器和多體并行存儲器。
①單體多字存儲器:指存儲器中只有一個(gè)存儲體,每個(gè)存儲單元存儲m個(gè)字,總線寬度也為m個(gè)字,一次并行讀出m個(gè)字,地址必須順序排列并處于同一存儲單元。
②多體并行存儲器:指由多體模塊組成,每個(gè)模塊都有相同的容量和存儲速度,各模塊都有獨(dú)立的讀寫控制電路、地址寄存器和數(shù)據(jù)寄存器。它們既能并行工作,又能交叉工作。
6、
第五節(jié):高速緩沖存儲器
1. 時(shí)間局部性:指在最近的未來要用到的信息,很可能是現(xiàn)在正在使用的信息,這是因?yàn)槌绦虼嬖谘h(huán)。
2. 空間局部性:指在最近的未來要用到的信息,很可能與現(xiàn)在正在使用的信息在存儲空間上是臨近的,這是因?yàn)橹噶钔ǔJ琼樞虼娣拧㈨樞驁?zhí)行的,數(shù)據(jù)一般也是以向量、數(shù)組、表等形式簇聚地存儲在一起的。
3. 高速緩沖技術(shù):利用程序訪問的局部性原理,把程序中正在使用的部分存放在一個(gè)高速的、容量較小的Cache中,使CPU的訪存操作大多數(shù)針對Cache進(jìn)行,從而使程序的執(zhí)行速度大大提高。
4. 高速緩沖存儲器(Cache)的工作原理:Cache位于存儲器層次結(jié)構(gòu)的頂層,通常由SRAM構(gòu)成。Cache和主存被分成若干大小相等的快(Cache塊又稱為Cache行),每塊由若干字節(jié)組成,塊的長度稱為長(Cache行長)。由于Cache的容量遠(yuǎn)小于主存的容量,所以Cache中的塊數(shù)要遠(yuǎn)少于主存中的塊數(shù),它僅保存主存中最活躍的若干塊的副本。故而Cache按照某種策略,預(yù)測CPU在未來一段時(shí)間內(nèi)欲訪存的數(shù)據(jù),將其裝入Cache。
當(dāng)CPU發(fā)出讀請求時(shí),如果訪存地址在Cache中命中,就將此地址轉(zhuǎn)換成Cache地址,直接對Cache進(jìn)行讀操作,與主存無關(guān);如果Cache不命中,則仍需訪問主存,并把此字所在的塊一次從主存調(diào)入Cache內(nèi)。若此時(shí)Cache已滿,則需根據(jù)某種替換算法,用這個(gè)快替換掉Cache中原來的某塊信息。(注意:CPU與Cache之間的數(shù)據(jù)交換以字為單位,而Cache與主存之間的數(shù)據(jù)交換則是以Cache塊為單位。)
5. Cache和主存的映射:指把主存地址空間映射到Cache地址空間,也就是把存放在主存中的程序按照某種規(guī)則裝入Cache中。Cache和主存的映射方式有:
①直接映射:主存數(shù)據(jù)塊只能裝入Cache中的唯一位置。若這個(gè)位置已有內(nèi)容,則產(chǎn)生沖突,原來的塊將無條件地替換出去(無需使用替換算法)。直接映射實(shí)現(xiàn)簡單,但不夠靈活,直接映射的塊沖突概率最高,空間利用率最低。
②全相聯(lián)映射:可以把主存數(shù)據(jù)塊裝入Cache中的任何位置。全相聯(lián)映射方式的優(yōu)點(diǎn)是比較靈活,Cache塊的沖突概率低,空間利用率高,命中率也高;缺點(diǎn)是地址變換速度慢,實(shí)現(xiàn)成本高。
③組相聯(lián)映射:將Cache空間分成大小相同的組,主存的一個(gè)數(shù)據(jù)塊可以裝入到一組內(nèi)的任何一個(gè)位置,即組間采用直接映射,而組內(nèi)采用全相聯(lián)映射。它是對直接映射和全相聯(lián)映射的一種折中。
6. Cache中主存塊的替換算法:在采用全相聯(lián)映射和組相聯(lián)映射方式時(shí),從主存向Cache傳送一個(gè)新快,當(dāng)Cache中的空間已被占滿時(shí),就需要使用替換算法置換Cache行。替換算法有:
①隨機(jī)算法(RAND):隨機(jī)地確定替換的Cache塊。它的實(shí)現(xiàn)比較簡單,但沒有依據(jù)程序訪問的局部性原理,故可能命中率較低。
②先進(jìn)先出(FIFO)算法:選擇最早調(diào)入的行進(jìn)行替換。但也沒有依據(jù)程序訪問的局部性原理,可能會把一些經(jīng)常使用的程序塊(如循環(huán)程序)也作為最早進(jìn)入Cache的塊替換掉。
③近期最少使用(LRU)算法:依據(jù)程序訪問的局部性原理選擇近期內(nèi)長久未訪問過的存儲行作為替換的行,平均命中率要比FIFO要高,是堆棧類的算法。
LFU算法對每行設(shè)置一個(gè)計(jì)數(shù)器,Cache每命中一次,命中行計(jì)數(shù)器清0,而其他各行計(jì)數(shù)器均加1,需要替換時(shí)比較各特定行的計(jì)數(shù)值,將計(jì)數(shù)值最大的行換出。
④最不經(jīng)常使用(LFU)算法:將一段時(shí)間內(nèi)被訪問次數(shù)最少的存儲行換出。每行也設(shè)置一個(gè)計(jì)數(shù)器,新行建立后從0開始計(jì)數(shù),每訪問一次,被訪問的行計(jì)數(shù)器加1,需要替換時(shí)比較各特定行的計(jì)數(shù)值,將計(jì)數(shù)值最小的行換出
7. Cache寫策略:因Cache中的內(nèi)容是主存塊副本,當(dāng)對Cache中的內(nèi)容進(jìn)行更新時(shí),就需選用寫操作策略使Cache內(nèi)容和主存內(nèi)容保持一致。此時(shí)有兩種情況:
對于Cache寫命中:
①全寫法(也稱寫直通法、write-through):
當(dāng)CPU對Cache寫命中時(shí),必須把數(shù)據(jù)同時(shí)寫入Cache和主存。當(dāng)某一塊需要替換時(shí),不必把這一塊寫回主存,將新調(diào)入的塊直接覆蓋即可。該方法實(shí)現(xiàn)簡單,能隨時(shí)保持主存數(shù)據(jù)的正確性。缺點(diǎn)是增加了訪存次數(shù),降低了Cache的效率。
②寫回法(write-back):
當(dāng)CPU對Cache寫命中時(shí),只修改Cache的內(nèi)容,而不立即寫入主存,只有當(dāng)此塊被換出時(shí)才寫回主存。采用這種策略時(shí),每個(gè)Cache行必須設(shè)置一個(gè)標(biāo)志位(臟位),以反映此塊是否被CPU修改過。
對于Cache寫不命中:
①寫分配法(write-allocate):加載主存中的塊到Cache中,然后更新這個(gè)Cache塊,它試圖利用程序的空間局部性,但缺點(diǎn)是每次不命中都需要從主存中讀取一塊。
②非寫分配法(not-write-allocate):只寫入主存,不進(jìn)行調(diào)塊。
說明:非寫分配法通常與全寫法合用;寫分配法通常和寫回法合用。
7、
第六節(jié):虛擬存儲器
1. 虛擬存儲器:主存和聯(lián)機(jī)工作的輔存共同構(gòu)成了虛擬存儲器,二者在硬件和系統(tǒng)軟件的共同管理下工作。對于應(yīng)用程序員而言,虛擬存儲器是透明的。虛擬存儲器具有主存的速度和輔存的容量,提高了存儲器的性能價(jià)格比。
2. 虛擬存儲器的特點(diǎn):虛擬存儲器將主存或輔存的地址空間統(tǒng)一編址,形成一個(gè)龐大的地址空間,在這個(gè)空間內(nèi),用戶可以自由編程,而不必在乎實(shí)際的主存容量和程序在主存中實(shí)際的存放位置。用戶編程允許涉及的地址稱為虛地址或者邏輯地址,虛地址對于的存儲空間稱為虛擬空間或程序空間。實(shí)際的主存單元地址稱為實(shí)地址或者物理地址,實(shí)地址對應(yīng)的是主存地址空間,也稱為實(shí)地址空間。虛地址比實(shí)地址要大很多。
3. 頁式虛擬存儲器:以頁為基本單位的虛擬存儲器稱為頁式虛擬存儲器。虛擬空間與主存空間都被劃分成同樣大小的頁,主存的頁稱為實(shí)頁,虛存的頁稱為虛頁。把虛擬地址分為兩個(gè)字段:虛頁號和頁內(nèi)地址。虛地址到實(shí)地址之間的變換是由頁表來實(shí)現(xiàn)的。頁表是一張存放在主存中的虛頁號和實(shí)頁號的對照表,記錄著程序的虛頁調(diào)入主存時(shí)被安排在主存中的位置。頁表一般長久地保存在內(nèi)存中。
4. 段式虛擬存儲器:段式虛擬存儲器中的段是按程序的邏輯結(jié)構(gòu)劃分的,各個(gè)段的長度因程序而異。把虛擬地址分為兩部分:段號和段內(nèi)地址。虛擬地址到實(shí)地址之間的變換是由段表來實(shí)現(xiàn)的。段表是程序的邏輯段和在主存中存放位置的對照表。段表的每一行記錄了與某個(gè)段對應(yīng)的段號、裝入位、段起點(diǎn)和段長等信息。由于段的長度可變,所以段表中要給出各段的起始地址與段的長度。
5. 段頁式虛擬存儲器:
把程序按邏輯結(jié)構(gòu)分段,每段再劃分為固定大小的頁,主存空間也劃分為大小相等的頁,程序?qū)χ鞔娴恼{(diào)入、調(diào)出仍以頁為基本傳送單位,這樣的虛擬存儲器稱為段頁式虛擬存儲器。在段頁式虛擬存儲器中,每個(gè)程序?qū)?yīng)一個(gè)段表,每段對應(yīng)一個(gè)頁表,段的長度必須是頁長的整數(shù)倍,段的起點(diǎn)必須是某一頁的起點(diǎn)。
此時(shí)虛地址分為段號、段內(nèi)頁號、頁內(nèi)地址三部分。CPU根據(jù)虛地址訪存時(shí),首先根據(jù)段號得到段表地址:然后從段表中取出該段的頁表起始地址,與虛地址段內(nèi)頁號合成, 得到頁表地址:最后從頁表中取出實(shí)頁號,與頁內(nèi)地址拼接形成主存實(shí)地址。
總結(jié)
以上是生活随笔為你收集整理的计算机组成原理哈工大期末_浅谈计算机组成原理(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: easyvision视觉软件 源码_一对
- 下一篇: android+内存清理+代码,最新版本