04計組課後習題:存儲器

第4章 存儲器

教材課後思考題與習題:

4.1 解釋概念:主存、輔存、Cache、RAM、SRAM、DRAM、ROM、PROM、EPROM、EEPROM、CDROM、Flash Memory

  • 主存:主存儲器,用於存放正在執行的程序和數據。CPU可以直接進行隨機讀寫,訪問速度較高。
    • RAM:(Random Access Memory),隨機存取存儲器,是一種可讀/寫存儲器,一般用於計算機的主存。
      • SRAM:(Static RAM),靜態隨機存儲器
      • DRAM:(Dynamic RAM),動態隨機存儲器
    • ROM:(Read Only Memory),掩膜式半導體只讀存儲器
      • PROM:(Programmable ROM),可編程只讀存儲器
      • EPROM:(Erasable Programmable ROM),可擦寫可編程只讀存儲器
      • EEPROM:(Electrically Erasable Programmable ROM),用電可擦除可編程只讀存儲器
  • 輔存:輔助存儲器,作爲主存的後備存儲器,不直接與CPU交換信息,容量比主存大,速度比主存慢。
    • CDROM:只讀型光盤
  • Cache:爲解決主存和CPU的速度匹配,提高訪存速度的一種存儲器,設在CPU和主存之間,存放CPU近期要用的信息。
  • Flash Memory:閃速存儲器。或稱快擦型存儲器

 

4.2 計算機中哪些部件可以用於存儲信息?按速度、容量和價格/位排序說明。

計算機中的寄存器、Cache、主存、硬盤可以用於存儲信息,這個順序:速度從高到低、容量從小到大、價格從高到低。

 

4.3 存儲器的層次結構主要體現在什麼地方?爲什麼要分這些層次?計算機如何管理這些層次?

  • 存儲器的層次結構主要體現在下面兩個層次上:Cache—主存、主存—輔存。

  • ”Cache—主存“層次在存儲系統中主要對CPU訪存起加速作用,即從整體運行的效果分析,CPU訪存速度加快,接近於Cache的速度,而尋址空間和位價卻接近於主存。

  • ”主存—輔存“層次在存儲系統中主要起擴容作用,即從程序員的角度看,他所使用的存儲器其容量和位價接近於輔存,而速度接近於主存。

  • 綜合上述兩個存儲層次的作用,從整個存儲系統來看,就達到了速度快、容量大、位價低的優化效果。

  • 主存與Cache之間的信息調度功能全部由硬件自動完成。而主存與輔存層次的調度目前廣泛採用虛擬存儲技術實現,即將主存與輔存的一部分通過軟硬結合的技術組成虛擬存儲器,程序員可使用這個比主存實際空間(物理地址空間)大得多的虛擬地址空間(邏輯地址空間)編程,當程序運行時,再由軟、硬件自動配合完成虛擬地址空間與主存實際物理空間的轉換。因此,這兩個層次上的調度或轉換操作對於程序員來說都是透明的。

 

4.4 說明存取週期和存取時間的區別。

存取週期和存取時間的主要區別是:存取時間僅爲完成一次操作的時間,而存取週期不僅包含操作時間,還包含操作後線路的恢復時間。即: 存取週期 = 存取時間 + 恢復時間

 

4.5 什麼是存儲器的帶寬?若存儲器的數據總線寬度爲32位,存取週期爲200ns,則存儲器的帶寬是多少?

  • 存儲器帶寬:單位時間內存儲器存取的信息量,單位用:字/秒 or 字節/秒 or 位/秒
  • 帶寬計算:1/200ns ×32位  = 160M位/秒 = 20MB/秒 = 5M字/秒

 

4.6 某機字長爲32位,其存儲容量是64KB,按字編址它的尋址範圍是多少?若主存以字節編址,試畫出主存字地址和字節地址的分配情況。

  • 按“字”編址尋址範圍:64KB /(32/8) = 16K
  • 按“字節”編址尋址範圍:就是64K
  • 字地址與字節地址的分配情況如下圖:

 

4.7  一個容量爲16K×32位的存儲器,其地址線和數據線的總和是多少?當選用下列不同規格的存儲芯片時,各需要多少片?

1K×4位,2K×8位,4K×4位,16K×1位,4K×8位,8K×8位

  • 地址線總數:log2(16×1024) = 14根
  • 數據線總數:32根
  • 1K×4位:16K×32) / (1K×4) = 16×8 = 128片;每組8片,共16組。每次讀出一個存儲字,只需選中一組芯片(8片)。
  • 2K×8位:16K×32) / (2K×8) = 8×4 = 32片
  • 4K×4位:16K×32) / (4K×4) = 4×8 = 32片
  • 16K×1位:16K×32)/ (16K×1) = 1×32 = 32片
  • 4K×8位:16K×32)/ (4K×8) = 4×4 = 16片
  • 8K×8位:16K×32) / (8K×8) = 2×4 = 8片

 

4.8 試比較靜態RAM和動態RAM。

  • 靜態RAM和動態RAM都屬於隨機存儲器,即在程序的執行過程中既可讀出信息又可寫入信息。但靜態RAM靠觸發器原理存儲信息,只要電源不掉電,信息就不會丟失;

  • 動態RAM靠電容存儲電荷原理存儲信息,即使電源不掉電,由於電容要放電,信息也會丟失,故需再生。

 

4.9 什麼叫刷新?爲什麼要刷新?說明刷新有幾種方法。

  • 動態RAM靠電容存儲電荷原理存儲信息,電容上的電荷要放電,信息即丟失。爲了維持所存信息,需要再一定時間(2ms)內,將所存信息讀出再重新寫入(恢復),這一過程稱爲刷新,刷新是一行一行進行的,由CPU自動完成。
  • 刷新方式有三種:
    • 集中刷新:即在2ms時間內,集中一段時間對存儲芯片的每行刷新一遍,在這段時間裏不能對存儲器進行訪問,即所謂的死時間。
    • 分散刷新:是將存儲系統週期分爲兩半,前半段時間用來讀/寫操作,後半段時間用來刷新操作,顯然整個系統的速度降低了,但分散刷新沒有存儲器的死時間。
    • 異步刷新:爲集中刷新和分散刷新的結合。這種刷新可在2ms時間內對存儲芯片的每一行刷新一遍,兩行之間的刷新時間間隔爲 2ms/芯片的片數。

 

4.10 半導體存儲器芯片的譯碼驅動方式有幾種?

  • 線選法:地址信號只需經過一個方向的譯碼就可選中某一存儲單元的所有位,適用於地址線較少的芯片。
  • 重合法:適用於地址線較多的芯片。地址線分爲兩組,分別經過行、列兩個方向譯碼,只有行、列兩個方向均被選中的存儲元才能進行讀/寫信息。

 

4.11 一個8K×8位的動態RAM芯片,其內部結構排列成256×256形式,存取週期爲0.1μs。試問採用集中刷新、分散刷新和異步刷新三種方式的刷新間隔各爲多少?

  • 集中刷新方式:刷新時間間隔:2ms,其中刷新的死時間爲:256×0.1μs=25.6μs
  • 分散刷新方式:刷新時間間隔:256×(0.1μs+×0.1μs)=51.2μs
  • 異步刷新方式:刷新時間間隔:2ms

 

4.12 畫出用1024×4位的存儲芯片組成一個容量爲64K×8位的存儲器邏輯框圖。要求將64K分成4個頁面,每個頁面分16組,指出共需多少片存儲芯片。

  • 將存儲器分成若干個容量相等的區域,每一個區域可看作一個頁面。假設採用SRAM芯片:
    • 總片數:64K×8位 / (1024×4位)= 128片

  • 本題設計的存儲器結構上,分爲‘總體’、‘頁面’、‘組’三級,因此畫圖時,也應分成三級畫,首先應確定各級的容量:
    • 頁面容量:64K×8位 / 4 = 16K×8位
    • 組容量:頁面容量 / 組數 = 16K×8位 / 16 =  1K×8位
    • 組內片數:組容量 / 片容量 = 1K×8位 / (1K×4位) = 2片
  • 因此地址分配:頁面號(2位)+組號(4位)+組內地址(10位)

  

 

4.13 設有一個64K×8位的RAM芯片,試問該芯片共有多少個基本單元電路(簡稱存儲基元)?欲設計一種具有上述同樣多存儲基元的芯片,要求對芯片字長的選擇應滿足地址線和數據線的總和爲最小,試確定這種芯片的地址線和數據線,並說明有幾種解答。

  • 存儲基元總數:64K×8位 = 64×2×10×8 = 512K位 = 2^19位。
  • 如果要滿足地址線和數據線總和最小,應儘量把存儲元安排在字向,因爲地址位數和字數成2的冪關係,可較好的壓縮線數。設地址線根數爲a,數據線根數爲b,則片容量爲:(2^a)× b = 2^19位,b = 2^(19-a)。

              若a = 19,b = 1,總和 = 19+1 = 20;

                 a = 18,b = 2,總和 = 18+2 = 20;

                 a = 17,b = 4,總和 = 17+4 = 21;

                 a = 16,b = 8,總和 = 16+8 = 24;

                   ……     ……

               由上可看出:芯片字數越少,芯片字長越長,引腳數越多。芯片字數減1、芯片位數均按2的冪變化。

               結論:如果滿足地址線和數據線的總和爲最小,這種芯片的引腳分配方案有兩種:地址線 = 19根,數據線 = 1根;或地                 址線 = 18根,數據線 = 2根。

 

4.14 某8位微型機地址碼爲18位,若使用4K×4位的RAM芯片組成模塊板結構的存儲器,試問:

(1)該機所允許的最大主存空間是多少?

(2)若每個模塊板爲32K×8位,共需幾個模塊板?

(3)每個模塊板內共有幾片RAM芯片?

(4)共有多少片RAM?

(5)CPU如何選擇各模塊板?

  1. 該機所允許的最大主存空間是:2^18 × 8位 = 2^8 × 1K × 8位 = 256K × 8位 = 256KB
  2. 模板快總數:256K × 8位 / (32K ×8位)= 8塊
  3. 板內片數:32K × 8位 / (4K×4位) = 16片
  4. 總片數:16片 × 8快 = 128片
  5. CPU通過最高3位地址譯碼輸出選擇模板,次高3位地址譯碼選擇芯片。地址格式分配如下:

 

4.15 設CPU共有16根地址線,8根數據線,並用MREQ(低電平有效)作訪存控制信號,R / W 作讀寫命令信號(高電平爲讀,低電平爲寫)。現有下列存儲芯片:ROM(2K×8位,4K×4位,8K×8位),RAM(1K×4位,2K×8位,4K×8位),及74138譯碼器和其他門電路(門電路自定)。試從上述規格中選用合適芯片,畫出CPU和存儲芯片的連接圖。要求:

(1)最小4K地址爲系統程序區,4096~16383地址範圍爲用戶程序區。

(2)指出選用的存儲芯片類型及數量。

(3)詳細畫出片選邏輯。

 

  • 第1步,根據題目的地址範圍寫出相應的二進制地址碼: 

CPU共16根地址線,8根數據線。最小4K(即 2^12)爲系統程序區,則其地址的二進制碼爲:

0000 0000 0000 0000

... ...

0000 1111 1111 1111

CPU尋址時,以上地址範圍是系統程序區,大小爲:4KB。用戶程序的二進制地址碼範圍爲:

0001 0000 0000 0000

... ...

0011 1111 1111 1111

CPU尋址時,以上地址範圍是用戶程序區,大小爲:12KB

 

  • 第2步,根據地址範圍的容量以該範圍在計算機系統中的作用,選擇存儲芯片

存儲系統程序:2片  4K × 4 的ROM芯片,位擴展

存儲用戶程序:3片  4K × 8 的RAM芯片,字擴展

 

  • 第3步,分配CPU地址線

將CPU的低12位 A11 ~ A0 與 2片  4K × 4 的ROM芯片的地址線相連;

將CPU的低12位 A11 ~ A0與 3片  4K × 8 的RAM芯片的地址線相連;

剩下的高位地址與訪存控制信號 MREQ共同產生存儲芯片的片選信號。

 

  • 第4步,形成片選信號

由74138譯碼器輸入邏輯關係可知,必須保證控制端G1爲高電平,-G2A 與 -G2B 爲低電平,才能使譯碼器正常工作。根據第1步寫出的存儲器地址範圍得出,A15始終爲低電平,而訪存控制信號 MREQ 是低電平有效。因此將74138譯碼器的控制端 G1接 +5V, -G2A,-G2B分別接 A15和 -MREQ。

CPU的A14,A13,A12分別接在譯碼器的 C,B,A 端;使其輸出 -Y0作爲ROM的片選信號。輸出-Y1,-Y2,-Y3分別作爲串聯的3片RAM的片選信號。

 

 

4.16 CPU假設同上題,現有8片8K×8位的RAM芯片與CPU相連,試回答:

(1)用74138譯碼器畫出CPU與存儲芯片的連接圖;

(2)寫出每片RAM的地址範圍;

(3)如果運行時發現不論往哪片RAM寫入數據後,以A000H爲起始地址的存儲芯片都有與其相同的數據,分析故障原因。

(4)根據(1)的連接圖,若出現地址線A13與CPU斷線,並搭接到高電平上,將出現什麼後果?

如果運行時發現不論往哪片RAM寫入數據後,以A000H爲起始地址的存儲芯片都有與其相同的數據,則根本故障原因爲:該存儲芯片的片選輸入端很有可能總是處於低電平。可能的情況有:

  • 該片的 -CS端 與 -WE端 連錯或短路
  • 該片的 -CS端與 CPU的 -MREQ端 錯連 或 短路
  • 該片的 -CS端與地線錯連或短路,在此假設芯片與譯碼器本身都是好的。
  • 譯碼器故障等。

若出現地址線A13與CPU斷線,並搭接到高電平上,將會出現A13恆爲“1”的情況。此時存儲器只能尋址A13=1的地址空間,A13=0的另一半地址空間將永遠訪問不到。若對A13=0 的地址空間進行訪問,只能錯誤地訪問到A13=1的對應空間中去。

 

4.17 寫出1100、1101、1110、1111對應的漢明碼。

有效信息位均爲n=4位,假設有效信息用b4b3b2b1表示

校驗位位數 k=3位(2^k >= n+k+1

設校驗位分別位c1、c2、c3,則漢明碼共 4 + 3 = 7位,即c1c2b4c3b3b2b1

校驗碼在漢明碼中分別處於第1、2、4位

c1=b4⊕b3⊕b1

c2=b4⊕b2⊕b1

c3=b3⊕b2⊕b1

當有效信息爲1100時,c3c2c1=110,漢明碼爲0111100。

當有效信息爲1101時,c3c2c1=001,漢明碼爲1010101。

當有效信息爲1110時,c3c2c1=000,漢明碼爲0010110。

當有效信息爲1111時,c3c2c1=111,漢明碼爲1111111。

 

4.18 已知收到的漢明碼(按配偶原則配置)爲1100100、1100111、1100000、1100001,檢查上述代碼是否出錯?第幾位出錯?

假設接收到的漢明碼爲:c1’  c2’  b4’  c3’  b3’  b2’  b1’

糾錯過程如下:

P1=c1’⊕b4’⊕b3’⊕b1’

P2=c2’⊕b4’⊕b2’⊕b1’

P3=c3’⊕b3’⊕b2’⊕b1’

如果收到的漢明碼爲1100100,則p3p2p1=011,說明代碼有錯,第3位(b4’)出錯,有效信息爲:1100

如果收到的漢明碼爲1100111,則p3p2p1=111,說明代碼有錯,第7位(b1’)出錯,有效信息爲:0110

如果收到的漢明碼爲1100000,則p3p2p1=110,說明代碼有錯,第6位(b2’)出錯,有效信息爲:0010

如果收到的漢明碼爲1100001,則p3p2p1=001,說明代碼有錯,第1位(c1’)出錯,有效信息爲:0001

 

4.19 已經接收到下列漢明碼,分別寫出它們所對應的欲傳送代碼。

(1)1100000(按偶性配置)

(2)1100010(按偶性配置)

(3)1101001(按偶性配置)

(4)0011001(按奇性配置)

(5)1000000(按奇性配置)

(6)1110001(按奇性配置)

(一)假設接收到的漢明碼爲C1’C2’B4’C3’B3’B2’B1’,按偶性配置則:

P1=C1’⊕B4’⊕B3’⊕B1’

P2=C2’⊕B4’⊕B2’⊕B1’

P3=C3’⊕B3’⊕B1’

1)如接收到的漢明碼爲1100000,

P1=1⊕0⊕0⊕0=1

P2=1⊕0⊕0⊕0=1

P3=0⊕0⊕0=0

P3P2P1=011,第3位出錯,可糾正爲1110000,故欲傳送的信息爲1000。

2)如接收到的漢明碼爲1100010,

P1=1⊕0⊕0⊕0=1

P2=1⊕0⊕1⊕0=0

P3=0⊕0⊕0=0

P3P2P1=001,第1位出錯,可糾正爲0100010,故欲傳送的信息爲0010。

3)如接收到的漢明碼爲1101001,

P1=1⊕0⊕0⊕1=0

P2=1⊕0⊕0⊕1=0

P3=1⊕0⊕1=0

P3P2P1=000,傳送無錯,故欲傳送的信息爲0001。

(二)假設接收到的漢明碼爲C1’C2’B4’C3’B3’B2’B1’,按奇性配置則:

P1=C1’⊕B4’⊕B3’⊕B1’⊕1

P2=C2’⊕B4’⊕B2’⊕B1’⊕1

P3=C3’⊕B3’⊕B1’⊕1

4)如接收到的漢明碼爲0011001,

P1=0⊕1⊕0⊕1⊕1=1

P2=0⊕1⊕0⊕1⊕1=1

P3=1⊕0⊕1⊕1=1

P3P2P1=111,第7位出錯,可糾正爲0011000,故欲傳送的信息爲1000。

5)如接收到的漢明碼爲1000000,

P1=1⊕0⊕0⊕0⊕1=0

P2=0⊕1⊕0⊕0⊕1=0

P3=0⊕0⊕0⊕1=1

P3P2P1=100,第4位出錯,可糾正爲1001000,故欲傳送的信息爲0000。

6)如接收到的漢明碼爲1110001,

P1=1⊕1⊕0⊕1⊕1=0

P2=1⊕1⊕0⊕1⊕1=0

P3=0⊕0⊕1⊕1=0

P3P2P1=000,傳送無錯,故欲傳送的信息爲1001。

 

4.20 欲傳送的二進制代碼爲1001101,用奇校驗來確定其對應的漢明碼,若在第6位出錯,說明糾錯過程。

欲傳送的二進制代碼爲1001101,有效信息位數爲n=7位,則漢明校驗的校驗位爲k位,則:2^k >= n+k+1,k=4,進行奇校驗設校驗位爲C1C2C3C4,漢明碼爲C1C2B7C3B6B5B4C4B3B2B1,

C1=1⊕B7⊕B6⊕B4⊕B3⊕B1=1⊕1⊕0⊕1⊕1⊕1=1

C2=1⊕B7⊕B5⊕B4⊕B2⊕B1=1⊕1⊕0⊕1⊕0⊕1=0

C3=1⊕B6⊕B5⊕B4=1⊕0⊕0⊕1=0

C4=1⊕B3⊕B2⊕B1=1⊕1⊕0⊕1=1

   故傳送的漢明碼爲10100011101,若第6位(B5)出錯,即接收的碼字爲10100111101,則

P1=1⊕C1’⊕B7’⊕B6’⊕B4’⊕B3’⊕B1’=1⊕1⊕1⊕0⊕1⊕1⊕1=0

P2=1⊕C2’⊕B7’⊕B5’⊕B4’⊕B2’⊕B1’=1⊕0⊕1⊕1⊕1⊕0⊕1=1

P3=1⊕C3’⊕B6’⊕B5’⊕B4’=1⊕0⊕0⊕1⊕1=1

P4=1⊕C4’⊕B3’⊕B2’⊕B1’=1⊕1⊕1⊕0⊕1=0

P4P3P2P1=0110說明第6位出錯,對第6位取反即完成糾錯。

 

4.21 爲什麼在漢明碼糾錯過程中,新的檢測位P4P2P1的狀態即指出了編碼中錯誤的信息位?

答:漢明碼屬於分組奇偶校驗,P4P2P1=000,說明接收方生成的校驗位和收到的校驗位相同,否則不同說明出錯。由於分組時校驗位只參加一組奇偶校驗,有效信息參加至少兩組奇偶校驗,若果校驗位出錯,P4P2P1的某一位將爲1,剛好對應位號4、2、1;若果有效信息出錯,將引起P4P2P1中至少兩位爲1,如B1出錯,將使P4P1均爲1,P2=0,P4P2P1=101,

 

4.22 某機字長16位,常規的存儲空間爲64K字,若想不改用其他高速的存儲芯片,而使訪存速度提高到8倍,可採取什麼措施?畫圖說明。

解:

機器字長爲16位,說明CPU一次能處理的數據位數是16位,不過這和本題無關。

存儲空間爲64K字,如果是採用單個存儲體,每個存取週期的時間內,該單個存儲體能向CPU提供 1個存儲字長(具體是幾位題幹未給出)的二進制代碼。

現在,若想不改用高速存儲芯片,而使訪存速度提高到8倍,也就是希望在一個存取週期的時間內,向CPU提供8個存儲字長的二進制代碼,則可採取八體交叉存取技術,8體交叉訪問的結構圖 和 時序圖:

由下圖可知,每隔1/8 個存期週期就可在存儲總線上獲得一個數據。

 

4.23 設CPU共有16根地址線,8根數據線,並用 M/IO 作爲訪問存儲器或I/O的控制信號(高電平爲訪存,低電平爲訪I/O),WR(低電平有效)爲寫命令,RD(低電平有效)爲讀命令。設計一個容量爲64KB的採用低位交叉編址的8體並行結構存儲器。現有下圖所示的存儲器芯片和138譯碼器。

                        

畫出CPU和存儲器芯片(芯片容量自定)的連接圖,並寫出圖中每個存儲芯片的地址範圍(用十六進制數表示)。

解答:

8體低位交叉並行存儲器的每個存儲體的容量:64KB / 8 = 8KB,因此選擇 8KB 的 RAM芯片。

8體存儲器的低位交叉,地址編址範圍如下圖:

方案1:8體交叉編址的CPU和存儲芯片的連接圖:

注:此設計方案只能實現八體之間的低位交叉尋址,但並不能實現八體並行操作。

 

方案2:八體交叉並行存取系統體內邏輯如下圖:

 

4.24 一個4體低位交叉的存儲器,假設存儲週期爲T,CPU每隔1/4存取週期啓動一個存儲體,試問依次訪問64個字需多少個存取週期?

解答:

只有訪問第1個字需要一個存取週期,從第2個字開始,每隔1 / 4存取週期即可訪問一個字,因此,依次訪問64個字需:

存取週期個數 = (64-1)× (1/4)T + T = 16.75T

與常規存儲器的速度相比,加快了 (64 - 16.75)T = 47.25T

注:4體交叉存取雖然從理論上講可講存取速度提高到4倍,但實現時喲由於並行存取的分時啓動需要一定的時間,故實際上只能提高到接近4倍。

 

4.25 什麼是“程序訪問的局部性”?存儲系統中哪一級採用了程序訪問的局部性原理?

解答:

程序運行的局部性原理指:

  • 在一小段時間內,最近被訪問過的程序和數據很可能再次被訪問;
  • 在空間上,這些被訪問的程序和數據往往集中在一小片存儲區;
  • 在訪問順序上,指令順序執行比轉移執行的可能性大(大約 5:1)。

存儲系統中Cache - 主存 層次採用了程序訪問的局部性原理。

 

4.26 計算機中設置Cache的作用是什麼?能否將Cache的容量擴大,最後取代主存,爲什麼?

解答:

計算機中設置Cache主要是爲了加速CPU訪存速度。

不能把Cache的容量擴大到最後取代主存,主要因爲Cache和主存的結構原理以及訪問機制不同(主存是按地址訪問,Cache是按內容及地址訪問)。

 

4.27 Cache做在CPU芯片內有什麼好處?將指令Cache和數據Cache分開又有什麼好處?

Cache做在CPU芯片內主要有下面幾個好處:

  • 可提高外部總線的利用率。因爲Cache在CPU芯片內,CPU訪問Cache時不必佔用外部總線;
  • Cache不佔用外部總線就意味着外部總線可更多地支持 I/O 設備與主存地信息傳輸,增強了系統地整體效率;
  • 可提高存取速度。因爲Cache 與 CPU 之間地數據通路大大縮短,故存取速度得以提高。

將指令Cache和數據Cache分開有如下好處:

  • 可支持超前控制和流水線控制,有利於這類控制方式下指令預取操作地完成;
  • 指令Cache可用ROM實現,以提高指令存取地可靠性;
  • 數據Cache對不同數據類型的支持更爲靈活,即可支持整數(例32位),也可支持浮點數據(如64位)。

 

4.28 設主存容量爲256K字,Cache容量爲2K字,塊長爲4。

(1)設計Cache地址格式,Cache中可裝入多少塊數據?

(2)在直接映射方式下,設計主存地址格式。

(3)在四路組相聯映射方式下,設計主存地址格式。

(4)在全相聯映射方式下,設計主存地址格式。

(5)若存儲字長爲32位,存儲器按字節尋址,寫出上述三種映射方式下主存的地址格式。

解答:

  1. Cache中可裝入塊數:2K字 / 4字 = 2×2^10 / 4 = 2^9 = 512塊,因此緩存塊的地址需要9位。每一塊4個字,且訪存地址爲字地址,因此塊內地址爲2位。
  2. 主存容量爲 256K字 = 2^18字。因此主存地址共18位。直接映射方式下,由於Cache中共有512塊,因此主存中需要分區成512個區,512個區 ×(每個區 y個字塊)×4字 = 256K 字 =  2^18字。得 y = 2^7,即每個區域需要2^7個字塊。因此直接映射方式下主存地址格式爲:
    主存字塊標記(7位) 緩存塊地址(9位) 字塊內地址(2位) 
    緩存塊地址:可以找到主存塊中的哪一個區域;主存字塊標記:可以找到主存某個區域下的哪一塊;字塊內地址:可以找到某個塊的某個塊的哪一個字
  3. 四路組相連映射時,對Cache進行分組,每個組中共有4個塊,因此可以講Cache分成512 / 4 = 2^7 組,因此Cache組地址需要7位。四路組相連下地址格式爲:
    主存字塊標記(9位) 組地址(7位) 字塊內地址(2位) 
    映射的時候,也需要將主存分爲2^7個區域,每個區域則需要有2^9個塊,每個塊有4個字。映射規則:主存每個區域的第 i 塊,都可以映射到Cache的第 i 組中去。
  4. 全相連映射下,主存地址格式爲:主存字塊標記(16位)+塊內地址(2位)
  5. 若存儲字長爲32位,存儲器按字節尋址,則主存容量爲256K*32/4=221B,

    Cache容量爲2K*32/4=214B,塊長爲4*32/4=32B=25B,字塊內地址爲5位,

    在直接映射方式下,主存字塊標記爲21-9-5=7位,主存地址格式爲:

    主存字塊標記(7位)

    Cache字塊地址(9位)

    字塊內地址(5位)

    在四路組相聯映射方式下,主存字塊標記爲21-7-5=9位,主存地址格式爲:

    主存字塊標記(9位)

    組地址(7位)

    字塊內地址(5位)

    在全相聯映射方式下,主存字塊標記爲21-5=16位,主存地址格式爲

    主存字塊標記(16位)

    字塊內地址(5位)

 

4.29 假設CPU執行某段程序時共訪問Cache命中4800次,訪問主存200次,已知Cache的存取週期爲30ns,主存的存取週期爲150ns,求Cache的命中率以及Cache-主存系統的平均訪問時間和效率,試問該系統的性能提高了多少倍?

解答:

命中率 H = 4800 / (4800 + 200) = 0.96

Cache - 主存 的平均訪問時間 ta = 0.96 × 30ns + (1 - 0.96)× 150ns = 34.8ns

訪問效率 e = tc / ta × 100% = 86.2%

性能爲原來的 150ns / 34.8ns = 4.31倍,即提高了 3.31倍。

 

4.30 一個組相連映射的CACHE由64塊組成,每組內包含4塊。主存包含4096塊,每塊由128字組成,訪存地址爲字地址。試問主存和高速存儲器的地址各爲幾位?畫出主存地址格式。

解:cache組數:64/4=16 ,Cache容量爲:64*128=213字,cache地址13位

主存共分4096/16=256區,每區16塊

主存容量爲:4096*128=219字,主存地址19位,地址格式如下:

主存字塊標記(8位)

組地址(4位)

字塊內地址(7位)

 

4.31 設主存容量爲1MB,採用直接映射方式的Cache容量爲16KB,塊長爲4,每字32位。試問主存地址爲ABCDEH的存儲單元在Cache中的什麼位置?

解:主存和Cache按字節編址,

Cache容量16KB=214B,地址共格式爲14位,分爲16KB/(4*32/8B)=210塊,每塊4*32/8=16B=24B,Cache地址格式爲:

Cache字塊地址(10位)

字塊內地址(4位)

主存容量1MB=220B,地址共格式爲20位,分爲1MB/(4*32/8B)=216塊,每塊24B,採用直接映射方式,主存字塊標記爲20-14=6位,主存地址格式爲:

主存字塊標記(6位)

Cache字塊地址(10位)

字塊內地址(4位)

主存地址爲ABCDEH=1010 1011 1100 1101 1110B,主存字塊標記爲101010,Cache字塊地址爲11 1100 1101,字塊內地址爲1110,故該主存單元應映射到Cache的101010塊的第1110字節,即第42塊第14字節位置。或者在Cache的第11 1100 1101 1110=3CDEH字節位置。

 

4.32 設某機主存容量爲4MB,Cache容量爲16KB,每字塊有8個字,每字32位,設計一個四路組相聯映射(即Cache每組內共有4個字塊)的Cache組織。

(1)畫出主存地址字段中各段的位數。

(2)設Cache的初態爲空,CPU依次從主存第0,1,2,…,89號單元讀出90個字(主存一次讀出一個字),並重覆按此次序讀8次,問命中率是多少?

(3)若Cache的速度是主存的6倍,試問有Cache和無Cache相比,速度約提高多少倍?

解:

(1)根據每字塊有8個字,每字32位(4字節),得出主存地址字段中字塊內地址爲3+2=5位。

         根據Cache容量爲16KB=214B,字塊大小爲8*32/8=32=25B,得Cache地址共14位,Cache共有214-5=29塊。

         根據四路組相聯映射,Cache共分爲29/22=27組。

         根據主存容量爲4MB=222B,得主存地址共22位,主存字塊標記爲22-7-5=10位,故主存地址格式爲:

主存字塊標記(10位)

組地址(7位)

字塊內地址(5位)

(2)由於每個字塊中有8個字,而且初態爲空,因此CPU讀第0號單元時,未命中,必須訪問主存,同時將該字所在的主存塊調入Cache第0組中的任一塊內,接着CPU讀第1~7號單元時均命中。同理,CPU讀第8,16,…,88號時均未命中。可見,CPU在連續讀90個字中共有12次未命中,而後8次循環讀90個字全部命中,命中率爲:(90*8 - 12)/(90*8) = 0.984

 

(3)設Cache的週期爲t,則主存週期爲6t,沒有Cache的訪問時間爲6t*90*8,有Cache的訪問時間爲t(90*8-12)+6t*12,則有Cache和無Cache相比,速度提高的倍數爲:(6t*90*8)/ { (90 * 8 - 12)t + 6t * 12 }  - 1 = 5.54

 

4.33 簡要說明提高訪存速度可採取的措施。

解答:提高訪存速度可採取三種措施:

(1)採用高速器件。即採用存儲週期短的芯片,可提高訪存速度。

(2)採用Cache。CPU最近要使用的信息先調入Cache,而Cache的速度比主存快得多,這樣CPU每次只需從Cache中讀寫信息,從而縮短訪存時間,提高訪存速度。

(3)調整主存結構。如採用單體多字或採用多體結構存儲器。

 

4.34 反映主存和外存的速度指標有何不同?

由於主存採用RAM,所以其主要速度指標 存期週期對所有存儲單元來說是個常數,尋址時間很短且不受單元物理位置影響。另外,主存的存期週期、存取時間、帶寬等幾個常用速度指標之間是相關的。

外存主要採用DAM 或 SAM,其尋址時間較長,且信息所存物理位置絕對有關,因此外存的速度通常受尋址時間和數據傳輸時間兩個因素決定,需要用平均尋址時間和數據傳輸率兩個指標來共同描述。

而平均尋址時間和數據傳輸率分別描述了外存的兩個性質完全不同、時間段完全不同的操作,這兩個指標之間沒有多少相關性。

 

38. 磁盤組有6片磁盤,最外兩側盤面可以記錄,存儲區域內徑22cm,外徑33cm,道密度爲40道/cm,內層密度爲400位/cm,轉速3600轉/分,問:

(1)共有多少存儲面可用?

(2)共有多少柱面?

(3)盤組總存儲容量是多少?

(4)數據傳輸率是多少?

 

 

39. 某磁盤存儲器轉速爲3000轉/分,共有4個記錄盤面,每毫米5道,每道記錄信息12 288字節,最小磁道直徑爲230mm,共有275道,求:

(1)磁盤存儲器的存儲容量。

(2)最高位密度(最小磁道的位密度)和最低位密度。

(3)磁盤數據傳輸率。

(4)平均等待時間。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章