存儲(chǔ)器層次結(jié)構(gòu)

存儲(chǔ)器層次結(jié)構(gòu)

一、存儲(chǔ)器概述

1.存儲(chǔ)器的分類(lèi)

1.按存儲(chǔ)元件分類(lèi)

  • 半導(dǎo)體存儲(chǔ)器
  • 磁表面存儲(chǔ)器
  • 光盤(pán)存儲(chǔ)器

2.按存取方式分類(lèi)

  • 隨機(jī)存取存儲(chǔ)器
  • 順序存取存儲(chǔ)器
  • 直接存取存儲(chǔ)器

3.按信息的可更改性分類(lèi)

  • 讀寫(xiě)存儲(chǔ)器
  • 只讀存儲(chǔ)器

4.按斷電后信息的可保存性分類(lèi)

  • 非易失(不揮發(fā))性存儲(chǔ)器
  • 易失(揮發(fā))性存儲(chǔ)器

2.主存儲(chǔ)器的組成和基本操作

1.存儲(chǔ)器的組成:
存儲(chǔ)元(或位元):存儲(chǔ)一位二進(jìn)制代碼。(椅子)
存儲(chǔ)單元(編址單元):由多個(gè)存儲(chǔ)元構(gòu)成,可存儲(chǔ)多位二進(jìn)制代碼。(教室)
存儲(chǔ)芯片:由多個(gè)存儲(chǔ)單元組成的存儲(chǔ)陣列構(gòu)成。(樓層)
存儲(chǔ)器:由多個(gè)存儲(chǔ)芯片構(gòu)成。(教學(xué)樓)
存儲(chǔ)容量:存儲(chǔ)單元的位數(shù)與存儲(chǔ)單元的個(gè)數(shù)的乘積。

2.存儲(chǔ)器的讀寫(xiě):
寫(xiě)操作,CPU同時(shí)將要寫(xiě)的信息送主存數(shù)據(jù)寄存器MDR中,在讀寫(xiě)控制電路的控制下,經(jīng)數(shù)據(jù)線將信息寫(xiě)入選中的單元。
讀操作,則主存讀出選中單元的內(nèi)容送數(shù)據(jù)線,然后被送到MDR中。
最大可尋址范圍:地址線的位數(shù)決定了主存地址空間的最大可尋址范圍。
n位地址數(shù):空間大小為2^n

2KB的存儲(chǔ)器至少需要的地址線數(shù):11條
地址線的位數(shù)決定了主存地址空間的最大可尋址范圍,2KB=2^11B,所以至少需要11根地址線。

3.存儲(chǔ)器的主要性能指標(biāo)

存儲(chǔ)器容量:指它能存放的二進(jìn)制位數(shù)或字(字節(jié))數(shù)。

存取時(shí)間:一般用讀出時(shí)間TA及寫(xiě)入時(shí)間TW來(lái)描述:

  • TA是指從存儲(chǔ)器接到讀命令開(kāi)始至信息被送到數(shù)據(jù)線上所需的時(shí)間;
  • TW是指存儲(chǔ)器接到寫(xiě)命令開(kāi)始至信息被寫(xiě)入存儲(chǔ)器所需的時(shí)間。

存儲(chǔ)周期:是指存儲(chǔ)器進(jìn)行一次讀寫(xiě)操作所需要的全部時(shí)間,也就是存儲(chǔ)器進(jìn)行連續(xù)讀寫(xiě)操作所允許的最短間隔時(shí)間。

存儲(chǔ)器帶寬B:表示存儲(chǔ)器被連續(xù)訪問(wèn)時(shí),可以提供的數(shù)據(jù)傳送速率,通常用每秒鐘傳送信息的位數(shù)(或字節(jié)數(shù))來(lái)衡量。

存儲(chǔ)器的價(jià)格:可用總價(jià)格C或每位價(jià)格c來(lái)表示,若存儲(chǔ)器按位計(jì)算的容量為S,則c=C/S??們r(jià)C中應(yīng)包括存儲(chǔ)單元本身的價(jià)格以及完成存儲(chǔ)器操作所必需的外圍電路的價(jià)格。

存儲(chǔ)器速度:可用存?。ㄔL問(wèn))時(shí)間、存儲(chǔ)周期或帶寬來(lái)表示。

4.存儲(chǔ)器的層次化結(jié)構(gòu)

存儲(chǔ)器的層次化結(jié)構(gòu).png

二、半導(dǎo)體隨機(jī)存取存儲(chǔ)器

1.基本存儲(chǔ)元件

1.六管靜態(tài)MOS管存儲(chǔ)元件
T1和T2構(gòu)成觸發(fā)器,
T5、T6是觸發(fā)器的負(fù)載管,
T3、T4為門(mén)控管。
使用這6個(gè)MOS管即可組成存儲(chǔ)一位二進(jìn)制信息的基本存儲(chǔ)元。

六管靜態(tài)存儲(chǔ)元件.png

2.單管動(dòng)態(tài)MOS管存儲(chǔ)元件
動(dòng)態(tài)RAM利用MOS管的柵極電容Cs來(lái)保存信息。
由于MOS管柵極上存儲(chǔ)的電荷會(huì)緩慢放電,超過(guò)了一定時(shí)間,就會(huì)丟失信息。因此必須定時(shí)給柵極電容充電,這一過(guò)程稱(chēng)為刷新。
只能存儲(chǔ)一位二進(jìn)制信息

單管動(dòng)態(tài)存儲(chǔ)元件.png

3.靜態(tài)存儲(chǔ)元件和動(dòng)態(tài)存儲(chǔ)元件的比較
SRAM存儲(chǔ)元件所用MOS管多,占硅片面積大,功耗大,集成度低;但無(wú)需刷新,也無(wú)需讀后再生,特別是它的讀寫(xiě)速度快。因而它適合做高速小容量的半導(dǎo)體存儲(chǔ)器。
DRAM存儲(chǔ)元件所用MOS管少,占硅片面積小,功耗小,集成度很高;但必須定時(shí)刷新和讀后再生,特別是它的讀寫(xiě)速度相對(duì)SRAM元件要慢得多。因而適合做慢速大容量的主存。

2.半導(dǎo)體RAM芯片

半導(dǎo)體RAM芯片由存儲(chǔ)體、I/O讀寫(xiě)電路、地址譯碼和控制電路等部分組成。

RAM的陣列結(jié)構(gòu).png

①存儲(chǔ)體(存儲(chǔ)矩陣):存儲(chǔ)體是存儲(chǔ)單元的集合
②地址譯碼器:用來(lái)將地址轉(zhuǎn)換為譯碼輸出線上的高電平,以便驅(qū)動(dòng)相應(yīng)的讀寫(xiě)電路。
譯碼方式有單譯碼和雙譯碼兩種,容量較大的存儲(chǔ)芯片,一般采用雙譯碼方式。
位片式芯片:采用二維雙譯碼結(jié)構(gòu)的存儲(chǔ)器芯片被稱(chēng)為位片式芯片。
存儲(chǔ)字:有些芯片的存儲(chǔ)陣列采用三維結(jié)構(gòu),用多個(gè)位平面構(gòu)成存儲(chǔ)陣列,不用位平面在相同行和列的交叉點(diǎn)上的多位構(gòu)成一個(gè)存儲(chǔ)字,被同時(shí)讀出或?qū)懭搿?br> 單譯碼方式:


單譯碼方式.png

選通線4096

雙譯碼方式:


雙譯碼方式.png

6條線經(jīng)過(guò)行譯碼,6條線經(jīng)過(guò)列譯碼,選通線只有26+26=128

③驅(qū)動(dòng)器:在雙譯碼結(jié)構(gòu)中,一條X方向的選擇線要控制在其上的各個(gè)存儲(chǔ)單元的字選擇線,負(fù)載較大,因此需要在地址譯碼器后加驅(qū)動(dòng)電路。

④I/O控制電路。用以控制被選中的單元的讀出或?qū)懭?,具有放大信息的作用?/p>

⑤讀/寫(xiě)控制信號(hào)。根據(jù)CPU給出的是讀命令還是寫(xiě)命令,控制被選中存儲(chǔ)單元進(jìn)行讀或?qū)憽?/p>

3.SDRAM芯片技術(shù)

SDRAM是一種與當(dāng)年Intel推出的芯片組中北橋芯片的前端總線同步運(yùn)行的DRAM芯片,因此,稱(chēng)為同步DRAM。
①SDRAM芯片技術(shù)
SDRAM的工作方式與傳統(tǒng)的DRAM有很大不同。傳統(tǒng)DRAM與CPU之間采用異步交換數(shù)據(jù),而SDRAM芯片則不同,其讀寫(xiě)受系統(tǒng)時(shí)鐘(即前端總線時(shí)鐘CLK)控制,因此與CPU之間采用異步方式交換數(shù)據(jù)。
SDRAM的每一步操作都在外部系統(tǒng)時(shí)鐘CLK的控制下進(jìn)行,支持突發(fā)(burst)傳送方式。只要第一次存取時(shí)給出首地址,以后按地址順序讀寫(xiě)即可,而不再需要地址建立時(shí)間和行、列預(yù)充電時(shí)間,就能連續(xù)快速地從行緩沖器(row buffer)中輸出一連串?dāng)?shù)據(jù)。內(nèi)部的工作方式寄存器(也稱(chēng)為模式寄存器)可用來(lái)設(shè)置傳送數(shù)據(jù)的長(zhǎng)度以及收到讀命令(與CAS信號(hào)同時(shí)發(fā)出)到開(kāi)始傳送數(shù)據(jù)的延遲時(shí)間等,前者稱(chēng)為突發(fā)長(zhǎng)度(burst lengths,簡(jiǎn)稱(chēng)BL),后者稱(chēng)為CAS潛伏期(CAS latency ,簡(jiǎn)稱(chēng)CL)。

②DDR SDRAM芯片技術(shù)
DDR(Double Data Rate)SDRAM是對(duì)標(biāo)準(zhǔn)SDRAM的改進(jìn)設(shè)計(jì),通過(guò)芯片內(nèi)部I/O緩沖中數(shù)據(jù)的兩位預(yù)取功能,并利用存儲(chǔ)器總線上時(shí)鐘信號(hào)的上升沿與下降沿進(jìn)行兩次傳送,以實(shí)現(xiàn)一個(gè)時(shí)鐘內(nèi)傳送兩次數(shù)據(jù)的功能。

③DDR2 SDRAM芯片技術(shù)
DDRA SDRAM內(nèi)存條采用與DDR類(lèi)似的技術(shù),利用芯片內(nèi)部的I/O緩沖可以進(jìn)行4位預(yù)取。

④DDR3 SDRAM芯片技術(shù)
DDR3 SDRAM芯片內(nèi)部I/O緩沖可以進(jìn)行8位預(yù)取。

半導(dǎo)體存儲(chǔ)器可分為哪兩類(lèi)?
它們分別以什么方式存儲(chǔ)信息“0”和“1”?
半導(dǎo)體存儲(chǔ)器分為靜態(tài)RAM(簡(jiǎn)稱(chēng)SRAM)和動(dòng)態(tài)RAM(簡(jiǎn)稱(chēng)DRAM)。
靜態(tài)RAM利用六管靜態(tài)MOS管組成的雙靜態(tài)電路來(lái)保存信息,
動(dòng)態(tài)RAM利用MOS管的柵極電容Cs來(lái)保存信息。

三、存儲(chǔ)器的擴(kuò)展及其與CPU的連接

1.內(nèi)存條和內(nèi)存條插槽

CPU通過(guò)其芯片內(nèi)的總線接口部件(即總線控制邏輯)與系統(tǒng)總線相連,然后再通過(guò)總線之間的I/O橋接器、存儲(chǔ)器總線連接到主存。


1.png

內(nèi)存條與內(nèi)存條插槽:


內(nèi)存條與內(nèi)存條插槽.png

內(nèi)存條插槽就是存儲(chǔ)器總線,內(nèi)存條中的信息通過(guò)內(nèi)存條的引腳,再通過(guò)插槽內(nèi)的引線連接到主板上,通過(guò)主板上的導(dǎo)線連接到北橋芯片或CPU芯片。

2.存儲(chǔ)器芯片的擴(kuò)展

1.擴(kuò)展的方法

擴(kuò)展的方法.png

2.擴(kuò)展的步驟

  • 確定需要的芯片數(shù)
  • 確定組織方式
  • 畫(huà)出地址分配圖及寫(xiě)出片選邏輯值(位擴(kuò)展沒(méi)有這一步)
  • 畫(huà)出存儲(chǔ)器邏輯圖或存儲(chǔ)器與CPU的連接圖
設(shè)計(jì)題.png

8k1位--->8k8位:位擴(kuò)展

答案.png

SARM.jpg
8片SARM.jpg
3.png
設(shè)計(jì)題2.png
答案2.png
f7ace332690eb90f99d82a735089df8.png

總結(jié):(此處僅僅為了做題)
計(jì)算芯片:(存儲(chǔ)器的字?jǐn)?shù)/芯片的字?jǐn)?shù))*(存儲(chǔ)器的位數(shù)/芯片的位數(shù))
計(jì)算幾位地址,即計(jì)算字?jǐn)?shù) 轉(zhuǎn)為以2為底的指數(shù),指數(shù)即是幾位地址。
片選信號(hào)地址線就是片外尋址。片外地址就是看字?jǐn)U展了多少,然后用那個(gè)轉(zhuǎn)換為2為底的指數(shù),指數(shù)就是地址線。

問(wèn)題3.png
答案3.png
bd3d158376df6e241140a6c378979ec.png

(1)有8*4=32片,8組,每一組4片。
(4)片選信號(hào)地址線都是用靠后的。

3.連續(xù)編址和交叉編址

多模塊存儲(chǔ)器:通常把由多個(gè)獨(dú)立并行工作的多個(gè)存儲(chǔ)模塊構(gòu)成的存儲(chǔ)器稱(chēng)之。
根據(jù)不同的編址方式,多模塊存儲(chǔ)器分為2種結(jié)構(gòu):

  • 連續(xù)編址
  • 交叉編制

1.連續(xù)編址方式
連續(xù)編址的多模塊主存儲(chǔ)器中,主存地址的高位表示模塊號(hào)(或體號(hào)),低位表示模塊內(nèi)地址(或體內(nèi)地址),因此,也稱(chēng)為按高位地址劃分模塊方式,地址在模塊內(nèi)連續(xù)。
假定存儲(chǔ)器有4個(gè)模塊M0~M3,每個(gè)模塊有n個(gè)單元,
則M0的地址范圍為0~n-1;
M1的地址范圍為n~2n-1;
M2的地址范圍為2n~3n-1;
M3的地址范圍為3n~4n-1;

64a8affa8ee44743d6dfcf8c5e853bf.png

對(duì)于連續(xù)編址的多模塊主存儲(chǔ)器,當(dāng)訪問(wèn)一個(gè)連續(xù)主存塊時(shí),總是先在一個(gè)模塊內(nèi)訪問(wèn),等到該模塊全部單元訪問(wèn)完才轉(zhuǎn)到下一個(gè)模塊訪問(wèn),存儲(chǔ)模塊之間不能被并行訪問(wèn),因而,這種情況下,連續(xù)編址的多模塊存儲(chǔ)器不能提高存取速度。

2.交叉編址方式
交叉編址存儲(chǔ)器中,主存地址的低位表示模塊號(hào),高位表示模塊內(nèi)地址,因此,也稱(chēng)按低位地址劃分模塊方式。若有m個(gè)存儲(chǔ)模塊,則每個(gè)模塊按“模m”交叉方式編址,稱(chēng)為m體交叉編址方式。
例如,對(duì)于4體交叉編址存儲(chǔ)器,共有4個(gè)模塊,若每個(gè)模塊有n個(gè)單元,則第0,4,...,4i,...,4n-4單元位于第0模塊;
....;
第3,7,...,4i+3,...,4n-1單元位于第3模塊;

f34952bd763a47ae3e08e412fea6874.png

交叉編址多模塊存儲(chǔ)器可以采用輪流啟動(dòng)或同時(shí)啟動(dòng)兩種方式。
①輪流啟動(dòng)
按每隔1/m個(gè)存儲(chǔ)器周期輪流啟動(dòng)各模塊進(jìn)行讀寫(xiě)。如果每個(gè)存儲(chǔ)模塊一次讀寫(xiě)的位數(shù)(稱(chēng)為一個(gè)存儲(chǔ)字)正好等于系統(tǒng)總線中數(shù)據(jù)線條數(shù)(即總線傳輸單位),則采用輪流啟動(dòng)方式。
②同時(shí)啟動(dòng)
如果所有存儲(chǔ)模塊一次并行讀寫(xiě)的總位數(shù)正好等于系統(tǒng)總線中數(shù)據(jù)線數(shù),則可采用同時(shí)啟動(dòng)方式。

四、半導(dǎo)體只讀存儲(chǔ)器與Flash存儲(chǔ)器

1.半導(dǎo)體只讀存儲(chǔ)器

根據(jù)只讀存儲(chǔ)器的工藝,可分為MROM、PROM、EPROM和EEPROM(E^2PROM)等類(lèi)型。
①掩膜只讀存儲(chǔ)器(Mask ROM,MROM)中存儲(chǔ)的信息由生產(chǎn)廠家在掩膜工藝過(guò)程中“寫(xiě)入”,用戶不能修改。MROM存儲(chǔ)內(nèi)容固定,所以可靠性高,但靈活性差,生產(chǎn)周期長(zhǎng),只適合定型批量生產(chǎn)。
②可編程只讀存儲(chǔ)器(Programmable ROM,PROM)芯片出廠時(shí)內(nèi)容全部為0(半成品),用戶可用專(zhuān)門(mén)的PROM寫(xiě)入器將信息寫(xiě)入,但寫(xiě)入不可逆,因此稱(chēng)為一次編程型只讀存儲(chǔ)器。
③可擦除可編程只讀存儲(chǔ)器(Erasable Programmable ROM,EPROM)允許用戶通過(guò)某種編程器向ROM芯片中寫(xiě)入信息,并可擦除所有信息后重新寫(xiě)入??煞磸?fù)擦除-寫(xiě)入多次。
④電擦除電改寫(xiě)只讀存儲(chǔ)器(Electrically Erasable Programmable ROM,E^2PROM)。這種存儲(chǔ)器在讀數(shù)據(jù)的方式上與EPROM完全一樣,但它有一個(gè)明顯優(yōu)點(diǎn),即可用電來(lái)擦除和重編程,因此,可以選擇只刪除個(gè)別字,而不像EPROM那樣,每次都要抹除芯片上的全部信息,這給現(xiàn)場(chǎng)重編程帶來(lái)了極大的方便。

2.半導(dǎo)體Flash存儲(chǔ)器

Flash存儲(chǔ)器也稱(chēng)為閃存,是高密度非易失性讀寫(xiě)存儲(chǔ)器,它兼有RAM和ROM的優(yōu)點(diǎn),而且功耗低、集成度高,不需后備電源。這種器件沿用了EPROM的簡(jiǎn)單結(jié)構(gòu)和浮柵/熱電子注入的編程寫(xiě)入方式,又兼?zhèn)銭^2PROM的可擦除特點(diǎn),可在計(jì)算機(jī)內(nèi)進(jìn)行擦除和編程寫(xiě)入。因此又稱(chēng)為快擦型電可擦除重編程ROM。

閃存有三種基本操作:編程(充電)、擦除(放電)、讀取。
①編程操作:最初所有存儲(chǔ)元都是“1”狀態(tài),通過(guò)“編程”,在需要改寫(xiě)為“0”的存儲(chǔ)元的控制柵加上一個(gè)正電壓VP。一旦某存儲(chǔ)元被編程,則存儲(chǔ)的數(shù)據(jù)可保持100年而無(wú)需外電源。
②擦除操作:采用電擦除。即在所有存儲(chǔ)元的源極S加正電壓VE,使浮空柵中的電子被吸收掉,從而使所有存儲(chǔ)元都變成“1”狀態(tài)。因此,寫(xiě)的過(guò)程實(shí)際上是先全部擦除,使全部變成“1”狀態(tài)后再在需要的地方改寫(xiě)為“0”。也即,先全部放電,再在寫(xiě)0的地方充電。
③讀取操作:在控制柵加上正電壓VR,
若原存為“0”,則讀出電路檢測(cè)不到電流;
若原存為"1",則浮空柵不帶負(fù)電荷,
控制柵上的正電壓足以開(kāi)啟晶體管,電源Vd提供從漏極D到源極S的電流,讀出電路檢測(cè)到電流。
Flash存儲(chǔ)器的讀操作速度和寫(xiě)操作速度相差很大,其讀取速度與半導(dǎo)體RAM芯片相當(dāng),而寫(xiě)數(shù)據(jù)(快擦-編程)的速度則與硬磁盤(pán)存儲(chǔ)器相當(dāng)。
(讀:快;寫(xiě):慢)

總結(jié):

  • MROM中存儲(chǔ)的信息由生產(chǎn)廠家在掩膜工藝過(guò)程中“寫(xiě)入”,用戶不能修改;
  • PROM是用戶可用專(zhuān)門(mén)的PROM寫(xiě)入器將信息寫(xiě)入,只能寫(xiě)一次;
  • EPROM允許用戶通過(guò)某種編程器向RMO芯片中寫(xiě)入信息,并可擦除所有信息后重新寫(xiě)入;
  • E^2PROM可用電來(lái)擦除和重編程。

五、高速緩沖存儲(chǔ)器

1.程序訪問(wèn)的局部性

程序訪問(wèn)的局部性:
在較短時(shí)間間隔內(nèi),程序產(chǎn)生的地址往往集中在存儲(chǔ)空間的一個(gè)很小范圍,這種現(xiàn)象稱(chēng)之。
時(shí)間局部性是指被訪問(wèn)的某個(gè)存儲(chǔ)單元在一個(gè)較短的時(shí)間間隔內(nèi)很可能又被訪問(wèn)。
空間局部性是指被訪問(wèn)的某個(gè)存儲(chǔ)單元的鄰近單元在一個(gè)較短的時(shí)間間隔內(nèi)很可能也被訪問(wèn)。

2.cache的基本工作原理

cache由快速的SRAM組成,直接制作在CPU芯片內(nèi),也可在CPU和主存之間,在CPU和主存之間設(shè)置cache,總是把主存中被頻繁訪問(wèn)的活躍程度塊和數(shù)據(jù)塊復(fù)制到cache中。由于程序訪問(wèn)的局部性,大多數(shù)情況下,CPU能直接從cache中取得指令和數(shù)據(jù),而不必訪問(wèn)主存。
cache和主存空間都被劃分為相等的區(qū)域。主存中的區(qū)域稱(chēng)為塊(block),也稱(chēng)為主存塊,它是cache和主存之間的信息交換單位;cache中存放一個(gè)主存塊的區(qū)域稱(chēng)為cache行(line)或槽(slot)。
在系統(tǒng)啟動(dòng)或復(fù)位時(shí),每個(gè)cache行都為空,其中的信息無(wú)效,只有裝入了主存塊后信息才有效。每個(gè)cache行需要一個(gè)有效位(valid bit),可通過(guò)將有效位清0來(lái)淘汰某cache行中的主存塊,稱(chēng)為沖刷(flush),裝入一個(gè)新主存塊時(shí),再使有效位置1。

cache的基本工作原理.png

CPU在cache-主存層次的平均訪問(wèn)時(shí)間為:

Ta=p*Tc+(1-p)*(Tm+Tc)=Tc+(1-p)*Tm。

其中p是命中率;
Tc是cache訪問(wèn)時(shí)間;
Tm是把從主存讀入一個(gè)主存塊到cache的時(shí)間,稱(chēng)為缺失損失。

f3eb9cb180557e208f4121f19181f31.png
96ad76874ffc9a4f72e0e400d4442f9.png

3.cache行和主存塊之間的映射方式

根據(jù)不同的映射規(guī)則,主存塊和cache行之間有以下三種映射方式:
①直接映射(direct map):每個(gè)主存塊映射到cache的固定行中。
②全相聯(lián)映射(full associate map):每個(gè)主存塊映射到cache的任意行中。
③組相聯(lián)映射(set associate map):每個(gè)主存塊映射到cache的固定組的任意行中。

1.直接映射
直接映射的基本思想是把主存的每一塊映射到固定的一個(gè)cache行中,也稱(chēng)模映射,其映射關(guān)系如下:
cache行號(hào)=主存塊號(hào) mod cache行數(shù)

13bbd966d02a94957c962d861f52746.png
主存地址17位,分為了三部分
每塊大小為512B,512=2^9,所以塊內(nèi)地址為9位
分為32塊群(區(qū)),32=2^5,所以群號(hào)為5位
每個(gè)群有8塊,8=2^3,塊號(hào)為3位
主存容量為128KB,128KB=2^7*2^10=2^17B
9+5+3=17;
群里的塊號(hào)恰好是cache的塊號(hào)
4a30a3e4693e86b403880056acf6032.png

主存結(jié)構(gòu)地址:


主存結(jié)構(gòu)地址.png

主存塊內(nèi)地址=cache行內(nèi)地址
主存的塊號(hào)=cache行號(hào)
區(qū)號(hào)(群號(hào))

9f71e3c443320c2c00260e1ff010a0c.png
c1197b0b7ece0b711b5821316741c3f.png
0fb22196e8ace70d3b62aae86e92892.png
1.計(jì)算主存塊:主存的容量/每塊大?。挥?jì)算cache的行數(shù):cache的容量/每塊大小
2.塊內(nèi)地址:256B = 2^8 ,所以有8位,
塊號(hào):塊號(hào)=cache行號(hào),第一問(wèn)中cache有16行,16=2^4,所以有4位;
區(qū)號(hào)(群號(hào)):
方式一:用總的主存容量減去塊號(hào)和塊內(nèi)地址的
總的主存容量512KB=2^9*2^10=2^19
19-8-4=7位
方式二:直接計(jì)算:主存分為了2K=2^11塊,
再用2^11/cache的行數(shù)=2^11/16=2^7群 所以為7位。
3.方式一:使用取模方式,用12345H mod 16
方式二:把12345這個(gè)十六進(jìn)制的數(shù)轉(zhuǎn)為二進(jìn)制:
00010010001101000101
按照第二問(wèn)分析的,從第9位到第12位這四位為塊號(hào)0011,即為3

2.全相聯(lián)映射
全相聯(lián)映射的基本思想是一個(gè)主存塊可裝入cache任意一行中。全相聯(lián)映射cache中,每行的標(biāo)記用于指出該行取自主存的哪個(gè)塊。

全相聯(lián)映射.jpg
60b7afc4719d8af40f891ab2782f42e.png
f1eb011f05dbffb8f39c592ce110b49.png

3.組相聯(lián)映射
組相聯(lián)映射的主要思想是,

將cache所有行分成2^q個(gè)大小相等的組,每組有2^s行。

每個(gè)主存塊被映射到cache固定組中的任意一行,映射關(guān)系如下:
cache組號(hào)=主存塊號(hào) mod cache組數(shù)(余數(shù))
說(shuō)明:主存組群內(nèi)塊號(hào)=主存塊號(hào)/cache組數(shù)(商)

3fd26522eff0c51e1fdb4fb26159235.png

cache組號(hào)=主存塊號(hào) mod cache組數(shù)(余數(shù))
主存塊號(hào)為100,cache組數(shù)為2^3組 100 mod 8 = 4

如此設(shè)置的2^q組*2^s行/組的cache映射方式稱(chēng)為2^s路組相聯(lián)映射,

即s=1為2-路組相聯(lián);
s=2為4-路組相聯(lián);
以此類(lèi)推。

e19f3e9dfc6b8fbf951e6f65de84f52.png

主存地址結(jié)構(gòu):標(biāo)記+cache組號(hào)+塊內(nèi)地址
標(biāo)記:主存的組群數(shù),比如256組,256=2^8,則有8個(gè)標(biāo)記
cache:如果有8組,則是2^3,為3位
塊內(nèi)地址:塊大小,512位,512=2^9,所以有9位

bd0f032f5415f8225b47ac08bebbf53.png

采用2路:s=1,每一組有兩行cache。

86e853bf3694c652ba6fe6a9cdc8057.png
0ebcd1d59e165a8da3109326dc1cc05.png
d90400b70da7dd67e0abf37b647007a.png
組相聯(lián).png

第0塊只能映射到第0組,而具體到第0組的某一塊則隨意。

組相聯(lián)映射方式結(jié)合了直接映射和全相聯(lián)映射的優(yōu)點(diǎn)。當(dāng)cache的組數(shù)為1時(shí),變?yōu)槿嗦?lián)映射;當(dāng)每組只有一個(gè)cache行時(shí),則變?yōu)橹苯佑成洹?/p>

4.cache中主存塊的替換算法

常用的替換算法:

  • 先進(jìn)先出(first-in-first-out,簡(jiǎn)稱(chēng)FIFO)
  • 最近最少用(least-recently used,簡(jiǎn)稱(chēng)LRU)
  • 最不經(jīng)常用(least-frequently used,LFU)
  • 隨機(jī)替換算法等

①先進(jìn)先出算法(FIFO)的基本思想是:總是選擇最早裝入cache的主存塊被替換掉。
②最近最少用算法(LRU)的基本思想:總是選擇近期最少使用的主存塊被替換掉。
③最不經(jīng)常用算法:總是替換掉cache中引用次數(shù)最少的塊;
④隨機(jī)替換算法:從候選行的主存塊中隨機(jī)選取一個(gè)淘汰掉,與使用情況無(wú)關(guān)。
LRU算法用計(jì)數(shù)值來(lái)記錄主存塊的使用情況,通過(guò)硬件修改計(jì)數(shù)值,并根據(jù)計(jì)數(shù)值選擇淘汰某個(gè)cache行中的主存塊。這個(gè)計(jì)數(shù)值稱(chēng)為L(zhǎng)RU位,其位數(shù)與cache組大小有關(guān)。2路時(shí)有一位LRU位,4路時(shí)有兩位LRU位。

5.cache的一致性問(wèn)題

因?yàn)閏ache中的內(nèi)容是主存塊副本,當(dāng)對(duì)cache中的內(nèi)容進(jìn)行更新時(shí),就存在cache和主存如何保持一致的問(wèn)題。
解決cache一致性問(wèn)題的關(guān)鍵是處理好寫(xiě)操作。通常有全寫(xiě)法和會(huì)寫(xiě)法兩種方式。
1.全寫(xiě)法
全寫(xiě)法(write through)的基本做法是:若寫(xiě)命中,則同時(shí)寫(xiě)cache和主存;若寫(xiě)不命中,則有以下兩種處理方式:
①寫(xiě)分配法(write allocate)。先在主存塊中更新相應(yīng)存儲(chǔ)單元,然后分配一個(gè)cache行,將更新后的主存塊裝入分配的cache行中。
②非寫(xiě)分配法(not write allocate)。僅更新主存單元而不裝入主存塊到cache中。

2.回寫(xiě)法
回寫(xiě)法(write back)的基本做法是:
若寫(xiě)命中,則信息只被寫(xiě)入cache中而不被寫(xiě)入主存;
若寫(xiě)不命中,則在cache中分配一行,將主存塊調(diào)入該cache行中并更新相應(yīng)單元的內(nèi)容。
因此,該方式下載寫(xiě)不命中時(shí),通常采用寫(xiě)分配法進(jìn)行寫(xiě)操作。
由此可見(jiàn),該方式實(shí)際上采用的是回頭再寫(xiě)或最后一次性寫(xiě)的做法,因此,該方式通常被稱(chēng)為回寫(xiě)法或一次性寫(xiě)方式,也有教材稱(chēng)之為寫(xiě)回法。

六、虛擬存儲(chǔ)器

1.程序與進(jìn)程的概念

虛擬存儲(chǔ)器:借用外存為程序提供的很大的虛擬存儲(chǔ)空間。
程序(program):是代碼和數(shù)據(jù)的集合,程序的代碼是一個(gè)機(jī)器指令序列,因而的概念。它可以作為目標(biāo)模塊存放在磁盤(pán)中。
進(jìn)程(process):就是程序的一次運(yùn)行過(guò)程。
程序是靜態(tài)的,進(jìn)程是動(dòng)態(tài)的。
進(jìn)程是操作系統(tǒng)對(duì)處理器中程序運(yùn)行過(guò)程的一種抽象。進(jìn)程有自己的生命周期,它由于任務(wù)的啟動(dòng)而創(chuàng)建,隨著任務(wù)的完成(或終止)而消亡,它所占用的資源也隨著進(jìn)程的終止而釋放。
一個(gè)可執(zhí)行目標(biāo)文件可以被多次加載執(zhí)行,也就是說(shuō),一個(gè)程序可能對(duì)應(yīng)多個(gè)不同的進(jìn)程。

2.虛擬地址空間

虛擬存儲(chǔ)器管理方式采用“請(qǐng)求分頁(yè)”思想,每次訪問(wèn)僅將當(dāng)前需要的頁(yè)面調(diào)入主存,而將不活躍的頁(yè)面放在磁盤(pán)上。當(dāng)訪問(wèn)某個(gè)信息所在頁(yè)不在主存時(shí)發(fā)生缺頁(yè),此時(shí),從磁盤(pán)將缺失的頁(yè)面調(diào)入主存。
虛擬存儲(chǔ)器機(jī)制為程序員提供了一個(gè)極大的虛擬地址空間(邏輯地址空間)。
未分配頁(yè):沒(méi)有和任何內(nèi)容相關(guān)聯(lián)的頁(yè)。
已分配頁(yè):對(duì)于代碼和數(shù)據(jù)等有內(nèi)容的區(qū)域所關(guān)聯(lián)的頁(yè)面。
已分配頁(yè)中又有兩類(lèi):緩存頁(yè)和未緩存頁(yè)
緩存頁(yè):已調(diào)入主存而被緩存在DRAM中的頁(yè)面
未緩存頁(yè):未調(diào)入主存而存在磁盤(pán)上的頁(yè)
任何時(shí)刻一個(gè)進(jìn)程中的所有頁(yè)面都被劃分成三個(gè)不相交的頁(yè)面集合:未分配頁(yè)集合、緩存頁(yè)集合和未緩存頁(yè)集合。

3.虛擬存儲(chǔ)器的實(shí)現(xiàn)

虛擬存儲(chǔ)器分成三種不同類(lèi)型:分頁(yè)式、分段式和段頁(yè)式。
1.分頁(yè)式虛擬存儲(chǔ)器
在分頁(yè)式虛擬存儲(chǔ)器系統(tǒng)中,主存儲(chǔ)器和虛擬地址空間都被劃分成大小相等的頁(yè)面,磁盤(pán)和主存之間按頁(yè)面為單位交換信息。通常把虛擬地址空間中的頁(yè)面稱(chēng)為虛擬頁(yè)、邏輯頁(yè)或虛頁(yè)。主存空間中的頁(yè)面被稱(chēng)為頁(yè)框(頁(yè)幀)、物理頁(yè)或?qū)嶍?yè)。有時(shí)虛擬頁(yè)簡(jiǎn)稱(chēng)為VP(virtual page),物理頁(yè)簡(jiǎn)稱(chēng)為PF(page frame)或PP(physical page)。
①頁(yè)表(Page Table)
操作系統(tǒng)在主存中給每個(gè)進(jìn)程都生成了一個(gè)頁(yè)表,每個(gè)虛擬頁(yè)在頁(yè)表中都有一個(gè)對(duì)應(yīng)的頁(yè)表項(xiàng),其內(nèi)容包括該虛擬頁(yè)的存放位置、裝入位(valid)、修改位(dirty)、使用位(替換控制位)、存取權(quán)限位和禁止緩存位等。
裝入位也稱(chēng)為有效位或存在位,用來(lái)表示對(duì)應(yīng)頁(yè)面是否在主存,若為“1”,表示該虛擬頁(yè)面已從外存調(diào)入主存,是一個(gè)“緩存頁(yè)”,此時(shí),存放位置字段指向主存頁(yè)框號(hào)(即物理頁(yè)號(hào)或?qū)嶍?yè)號(hào));若為“0”,則表示沒(méi)有調(diào)入主存,此時(shí),若存放位置字段為null,則說(shuō)明是一個(gè)“未分配頁(yè)”,否則是一個(gè)“未緩存頁(yè)”,其位置字段給出該虛擬頁(yè)在磁盤(pán)上的起始地址;
某進(jìn)程有7個(gè)頁(yè)面,其中
4個(gè)緩存頁(yè):VP1、VP2、VP5和VP7;
兩個(gè)未分配頁(yè):VP0和VP4;
兩個(gè)未緩存頁(yè):VP3和VP6,
其頁(yè)表如下:

2cb33811847c3441d8bdb0423a48281.png

系統(tǒng)中每個(gè)進(jìn)程都有一個(gè)頁(yè)表,頁(yè)表屬于進(jìn)程控制信息,存放在進(jìn)程地址空間的內(nèi)核區(qū),頁(yè)表在主存的首地址記錄在頁(yè)表基址寄存器中。頁(yè)表的項(xiàng)數(shù)由虛擬地址空間大小決定,因虛擬地址空間可能是一個(gè)比主存大得多的地址空間。因此,頁(yè)表項(xiàng)數(shù)會(huì)很多,會(huì)帶來(lái)頁(yè)表過(guò)大的問(wèn)題。解決頁(yè)表過(guò)大的方法有很多,可以采用限制大小的一級(jí)頁(yè)表、二級(jí)或多級(jí)頁(yè)表、倒置頁(yè)表等方案,由操作系統(tǒng)解決此問(wèn)題。

②地址轉(zhuǎn)換(Address Translationg)
將虛擬地址轉(zhuǎn)換為主存物理地址的轉(zhuǎn)換工作由CPU中的存儲(chǔ)器管理部件(Memory Management Unit,簡(jiǎn)稱(chēng)MMU)來(lái)完成。

75e9c5be14257c85c91b1357fd4d0ff.png
50443cb06e1c232bf2e46708f814b61.png

③快表(TLB)
采用虛擬存儲(chǔ)器機(jī)制后,使得訪存次數(shù)增加了。為了減少訪存次數(shù),往往把頁(yè)表中最活躍的幾個(gè)頁(yè)表項(xiàng)復(fù)制到高速緩存中,這種在高速緩存中的頁(yè)表項(xiàng)組成的頁(yè)表稱(chēng)為后備轉(zhuǎn)換緩沖器(Translation Lookaside Buffer),通常簡(jiǎn)稱(chēng)為T(mén)LB或快表,相應(yīng)地稱(chēng)主存中的頁(yè)表為慢表。
這樣,在地址轉(zhuǎn)換時(shí),首先到快表中查頁(yè)表項(xiàng),如果命中,則無(wú)需訪問(wèn)主存中的頁(yè)表。

1862f6e750c692eddf6ec22d8842a36.png

2.分段式虛擬存儲(chǔ)器
根據(jù)程序的模塊化性質(zhì),可按程序的邏輯結(jié)構(gòu)劃分為多個(gè)相對(duì)獨(dú)立的部分,這些相對(duì)獨(dú)立的部分被稱(chēng)為段(Segment),每個(gè)段的描述信息通常有段名、段起點(diǎn)、段長(zhǎng)等。
分段方式下,將主存空間按實(shí)際程序中的段來(lái)劃分,每個(gè)段在主存中的位置記錄在段表中,段的長(zhǎng)度可變,所以段表中需有長(zhǎng)度指示,即段長(zhǎng)。每個(gè)進(jìn)程有一個(gè)段表,每個(gè)段在段表中有一個(gè)段表項(xiàng),用來(lái)指明對(duì)應(yīng)段在主存中的位置,段長(zhǎng)、訪問(wèn)權(quán)限、使用和裝入情況等。
虛擬地址由段號(hào)和段內(nèi)地址組成。通過(guò)段表把虛擬地址變?yōu)橹鞔嫖锢淼刂贰?br>

a437c48e835c05286f495d2c4fe9036.png

3.段頁(yè)式虛擬存儲(chǔ)器
在段頁(yè)式虛擬存儲(chǔ)器中,程序按模塊分段,段內(nèi)再分頁(yè),用段表和頁(yè)表(每段一個(gè)頁(yè)表)進(jìn)行兩級(jí)定位管理。段表中每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)段,每個(gè)段表項(xiàng)中包含一個(gè)指向該段頁(yè)表起始位置的指針,以及該段其他的控制和存儲(chǔ)保護(hù)信息,由頁(yè)表指明該段各頁(yè)在主存中的位置以及是否裝入、修改等狀態(tài)信息。程序的調(diào)入調(diào)出按頁(yè)進(jìn)行,但它又可以按段實(shí)現(xiàn)共享和保護(hù)。因此,它兼有頁(yè)式和段式的優(yōu)點(diǎn)。它的缺點(diǎn)是在地址轉(zhuǎn)換過(guò)程中需要多次查表,即先查段表,再查頁(yè)表。

08ca9f07753f24758b0ec109cd57b49.png

名詞解釋?zhuān)禾摂M存儲(chǔ)器
借用外存為程序提供的很大的虛擬存儲(chǔ)空間稱(chēng)為虛擬存儲(chǔ)器。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容