天天看點

第六章、存儲器層次結構

存儲器層次結構

 6.1存儲技術

  6.1.1随機通路存儲器

   随機通路存儲器分為兩類:靜态和動态

1、靜态RAM

  靜态RAM 的基本存儲電路為觸發器,每個觸發器存放一位二進制資訊,由若幹個觸發器組成一個存儲單元,再由若幹存儲單元組成存儲器矩陣,加上位址譯碼器和讀/寫控制電路就組成靜态RAM。但由于靜态RAM 是通過有源電路來保持存儲器中的資料,是以,要消耗較多功率,價格也較高。

2、動态RAM

  每一個比特的資料都隻需一個電容跟一個半導體來處理,相比之下在SRAM上一個比特通常需要六個半導體。正因這緣故,DRAM擁有非常高的密度,機關體積的容量較高是以成本較低。但相反的,DRAM也有通路速度較慢,耗電量較大的缺點。

3、傳統的DRAM

  采用二位陣列組織

6.1.2磁盤存儲

1、磁盤構造

盤片

表面:每個盤片有兩個表面

主軸:盤片中央,可旋轉 

旋轉速率:通常5400~15000/min 

磁道:同心圓們 

扇區:每個磁道被劃分為一組扇區 

資料位:每個扇區包含相等數量的~,通常為512位元組 

間隙:存儲用來辨別扇區的格式化位 

磁盤驅動器-磁盤-旋轉磁盤

柱面:所有盤片表面上到主軸中心的距離相等的磁道的集合

2.磁盤容量

      記錄密度:(位/英寸)磁道一英寸的段中可以放入的位數

      磁道密度:(道/英寸)從盤片中心出發半徑上一英寸的段内可以有的磁道數

      面密度:(為/平方英寸)記錄密度*磁道密度

      磁盤容量  =  (位元組數/扇區) * (平均扇區數/磁道)*(磁道數/表面)*(表面數/盤片)*(盤片數/磁盤)

3.磁盤操作

      通路時間=尋道時間+旋轉時間+傳送時間

      旋轉時間:最大旋轉延遲=(1/旋轉速率)*(60sec*1000ms/sec)

           平均旋轉延遲=(1/2) * 最大旋轉延遲

      傳送時間:平均傳送時間=(1/旋轉速率)*(60sec*1000ms/sec)*(1/平均扇區數/磁道)

4、通路磁盤

CPU使用一種稱為存儲器映射I/O的技術來向I/O裝置發出指令。在使用存儲器映射I/O的系統中,位址空間中有一塊位址是為與I/O裝置通信保持的,這樣的位址稱為一個I/O端口。

CPU通過将指令、邏輯塊号和目的存儲器位址寫到與磁盤相關聯的存儲器映射位址,發起一個磁盤讀。

CPU執行對位址的存儲指令,發起磁盤讀: 

第一條指令時發送一個指令字;第二條指令指明應該讀的邏輯塊号;第三條指令指明應該存儲磁盤扇區内内容的主存位址。 

直接存儲器通路:裝置可以自己執行讀或者寫總線事務,而不需要CPU幹涉的過程。這種資料傳送稱為DMA傳送 

基本思想:中斷會發信号到CPU晶片的一個外部引腳上。這會導緻CPU暫停它目前正在做的工作,跳轉到一個作業系統例程。這個程式會記錄下I/O已經完成,然後将控制傳回到CPU被中斷的地方.

6.2局部性

  1、局部性原理: CPU通路存儲器時,無論是存取指令還是存取資料,所通路的存儲單元都趨于聚集在一個較小的連續區域中。

2、三種不同類型的局部性:時間局部性(Temporal Locality):如果一個資訊項正在被通路,那麼在近期它很可能還會被再次通路。程式循環、堆棧等是産生時間局部性的原因。空間局部性(Spatial

Locality):在最近的将來将用到的資訊很可能與現在正在使用的資訊在空間位址上是臨近的。順序局部性(Order Locality):在典型程式中,除轉移類指令外,大部分指令是順序進行的。順序執行和非順序執行的比例大緻是5:1。此外,對大型數組通路也是順序的。指令的順序執行、數組的連續存放等是産生順序局部性的原因

3、取指令的局部性

循環體裡的指令是按照連續的存儲器順序執行的,是以循環有良好的空間局部性,因為循環體會被執行多次,是以它也有良好的時間局部性。 

代碼差別于程式資料的一個重要屬性時在運作時是不能被修改的。

6.3 存儲器層次結構

1、緩存命中

若需要通路k+1層裡的資料塊d,如果d已經緩存在第k層,則稱緩存命中。這樣從第k層取塊d要比k+1層更塊。

2、緩存不命中

若d不在第k層,則是緩存不命中,此時将k+1層存儲中取出塊d,放入k層。可能需要替換掉k層中已有的塊。替換政策是:随機,最近最少使用等。

需要有個東西對緩存進行管理,比如怎麼進行塊的劃分,各層次間怎麼傳送塊,判斷是否命中,不命中該如何處理,寫回資料的時候該如何處理。

都是需要考慮的問題,可用硬體管理如cache,也可用軟體管理如虛拟記憶體。

3、緩存的管理

i)相關假定

假定存儲器的位址有m位,便有M=2m 不同位址。

一個緩存被分成S=2s個的高速緩存組(cache set),

每個組包含 E 個高速緩存行。

每個緩存行由一個B=2b位元組的資料塊,一個有效位,t=m-(b+s)個标記位組成。

一個高速緩沖區的大小C = S * E * B。

ii)如何通路緩存

當要通路存儲器中的一個位元組時,給出的通路位址的m位中,前t位表示标記位,中間s位為組索引,最後b位為塊偏移。

iii)緩存不命中時

當緩存不命中時,則若需要将存儲器中的塊放入緩存對應的組中。

若組中的行都有資料,則需要進行替換,替換政策是:LFU或這LRU(不想細說了)

iv)三種緩存方式的劃分

分為直接映射高速緩存,組相聯高速緩存,全相聯高速緩存

若指定了S,E,B的值,則緩存的劃分方式就已經确定了。

緩存塊與存儲塊之間也就建立了一種映射關系。

參考資料

1、《深入了解計算機系統》課本第六章

2、51cto.com

3、zengxg14的部落格

4、百度百科

本章小結

在數字邏輯電路中有對RAM 和 ROM有簡短的介紹。但是并不具體,通過這一章的學習,了解了存儲器的分類,工作原理,以及如何提高性能等方面的知識。