1. 程式人生 > 其它 >計算機組成與設計--儲存器技術

計算機組成與設計--儲存器技術

第五章 大容量和高速度:開發儲存器層次結構

儲存器技術

這是計算機組成與設計:軟硬體介面的第五章筆記。在這一章中,我們將進入儲存器的世界,去探究儲存器內部的工作原理。

在第五章我們將會學習儲存器技術和Cache的基本原理。

引入

在正式介紹儲存器技術之前,我們引入一個例子來幫助大家對於儲存器的理解。

想象你正坐在圖書館中完成一份關於計算機硬體重要歷史性發展的論文,你可以從圖書館的書架上精心挑選一些經典的計算機書籍,並將它們放在書桌上。你從這些書中找到了需要寫的幾種重要的計算機,但是沒有找到關於EDSAC的,因此,你返回書架去尋找其他書,並在早期的英國計算機書籍中找到了一本有關EDSAC的書。一旦在你的書桌上有了選好的一些書,你就有可能從這些書中找到你需要的內容。這樣一來,你的大部分時間只需花在閱讀這些書上,而無需返回書架。

我們可以把上述例子中放在書桌上的書當作是儲存在Cache中的資料,將放在書架上的書當作是儲存在記憶體或其他儲存裝置的資料。你也就是處理器想要完成一項任務的時候,會先檢查Cache中有沒有需要的資料,如果有,就立即返回給處理器;如果沒有,就會接著向更低階的儲存器中尋找,然後逐級返回。我們稱在Cache中找到資料為一次命中,命中率是在高層儲存器中找到目標資料的儲存訪問比例。而缺失就是沒有在Cache中找到需要的資料,缺失率是高層儲存器中沒有找到目標資料的儲存訪問比例

命中時間指的是訪問某儲存器層次結構所需要的時間,包括了判斷當前訪問時命中還是缺失所用的時間

那麼什麼是高層儲存器,什麼是低階儲存器呢?下面的圖說明了儲存器層次結構。

儲存器層次結構呈正金字塔形狀,最上層的L0是暫存器,接著L1~L3指的是處理器快取Cache,現代處理器均具有三層Cache結構,接著是記憶體也稱為主存,最後是本地磁碟以及雲端儲存。

有了以上的儲存器基本知識,我們開始介紹儲存器技術。

目前,構建儲存器層次結構主要有4種技術。

主存也就是記憶體由DRAM(動態隨機存取儲存器)實現,而Cache由SRAM(靜態隨機存取儲存器)實現。

DRAM每位元成本低於SRAM,但速度比SRAM慢。

第三種技術是快閃記憶體,第四種是磁碟。我們在接下來將依次詳細介紹這四種技術。

SRAM技術

SRAM是一種組織成儲存陣列結構的簡單積體電路。SRAM對任何資料的訪問時間都是固定的。為了防止讀操作時資訊丟失,SRAM的一個基本儲存單元通常由6~8個電晶體組成。

SRAM的儲存單元具有雙穩態特性,所以只要一直通電就能夠一直儲存資料。

DRAM技術

與SRAM技術相比,DRAM的原理是電容充電,DRAM每個位元位儲存對應一個電容和一個電晶體。而且DRAM對干擾十分敏感,當電容的電壓被擾亂之後就再也無法回到擾亂之前的狀態。

而且電容十分容易發生漏電,所以需要不斷重新整理來保持資料的存在。

接下來我們來看一下DRAM的內部結構:

圖中展示了一個16×8的DRAM晶片,其中16表示的是超單元的個數,8表示每個超單元可以儲存8bit的資料。

通過這張圖 我們可以看到所有的超單元被組織成了一個4x4的陣列,每個超單元可以通過類似座標的方式進行定址 其中i表示行j表示列,整個DRAM晶片通過地址引腳和資料引腳與記憶體控制器相連。

簡單來講 記憶體控制器主要用來管理記憶體。

第一次聽到記憶體控制器的同學可能會感到困惑 可以通過一個通俗的例子來理解:

假如我們將資料比作書 記憶體就相當於是一個圖書館 而記憶體控制器可以看成圖書管理員。

例如 我們需要從DRAM晶片中讀出圖中所示的超單元

  1. 首先 記憶體控制器傳送行地址2到DRAM晶片
  2. DRAM所做出的響應就是將整個第二行的內容全部複製到內部的行緩衝區域中
  3. 接下來 記憶體控制器傳送列地址1到DRAM晶片
  4. DRAM對應的操作是從這個行緩衝區中複製出對應的資料位 並把它傳送到記憶體控制器

看到這裡 相信有很多同學會有這樣的疑問:

為什麼要分兩次傳送地址 這樣不是增加了訪問的時間嗎?

這是因為DRAM晶片的設計人員將儲存單元設計成了二維陣列 而不是線性陣列,這樣設計的好處是可以降低晶片上地址引腳的數量。

不過 ,二維陣列的組織方式確實會增加資料訪問的時間。接下來 我們看一下采用DRAM晶片封裝成的記憶體模組。

圖中展示了一個記憶體模組的基本組成 這個模組一共用了八個DRAM晶片,分別用編號0-7來表示。每個DRAM晶片的大小是8×8=64bit也就是8MB個位元組.因此 整個記憶體模組的大小為64MB

在剛才我們提到,每個超單元可以儲存8bit的資料,那麼對於8位元組也就是64bit的資料,就需要八個超單元來儲存。

不過,這八個超單元並不在同一個DRAM晶片上,而是平均分佈在8個DRAM晶片上。其中\(DRAM_0\)儲存第8位\(DRAM_1\)儲存下一個位元組,以此類推 \(DRAM_7\)儲存最高八位。

當處理器向記憶體控制器發起讀資料的請求時,記憶體控制器將地址轉換成超單元地址,然後把它傳送到記憶體模組,然後 記憶體模組再將行地址i和列地址j廣播到每個DRAM,每個DRAM都會輸出它對應的超單元的資料。

最終 記憶體模組將所有的超單元合併成一個64bit的資料返回給記憶體控制器。

在實際生活中,處理器處理資料的速度與記憶體處理資料的差距已經越來越大,為了跟上迅速發展的處理器的速度 市場上會定期推出新的DRAM,這些DRAM都是基於傳統的DRAM單元 然後進行一些優化。

圖中就是我們經常能看到的幾種記憶體型別。

接下來我們介紹第三種技術,快閃記憶體技術。

快閃記憶體技術

快閃記憶體是一種電可擦除的可程式設計只讀儲存器。快閃記憶體是存在損耗的,為了應對快閃記憶體的不斷損耗,大多數快閃記憶體產品中都存在一個控制器,用來將寫操作從已經寫入很多次的塊中對映到寫入次數較少的快中,從而使寫操作儘量分散。這種技術被稱為損耗均衡

快閃記憶體廣泛運用於我們如今十分常見的固態硬碟中。

最後一種技術是磁碟儲存器。

磁碟技術

一個磁製磁碟包含一組圓形磁碟片,它們繞著軸心每分鐘轉動5400~15000周。為了對硬碟上的資訊進行讀寫,每層的表面有一個包含小的電磁線圈的讀寫磁頭。

每個磁碟表面劃分為同心圓盤,稱為磁軌(tracks)。每個面通常有幾萬條磁軌,每條磁軌同樣被劃分為儲存資訊的扇區(sector)。

每個扇區的容量通常是512~4096位元組。資訊在磁介質上儲存的順序為扇區號、一個間隙、包含該扇區糾錯碼的資訊、一個間隙、下一個扇區的扇區號。

為了訪問資料,作業系統必須對磁碟進行三步操作。

  1. 將磁頭移動到適當的磁軌之上,被稱為尋道
  2. 等待訪問的扇區轉動到讀寫頭下面
  3. 傳輸資料

在作業系統視角下,磁碟被抽象為一個個 邏輯塊序列,每個邏輯塊的大小與磁碟扇區的容量是一致的 都是512個位元組。

磁碟內部有一個小的韌體裝置 稱為磁碟控制器。它維護著邏輯塊與實際磁碟扇區之間的對映關係。當作業系統執行從硬碟讀取資料到記憶體時,作業系統會發送一個命令到磁碟控制器。

這個命令就是讓磁碟控制器讀取特定邏輯塊號的資料。可以使用盤面、磁軌、扇區這樣的一個三元組來唯一標識每個物理扇區。接下來,控制器會根據這個三元組的資訊來執行移動讀寫頭以及旋轉盤面的操作。然後 讀寫頭會把讀到的資料放到一個緩衝區中,最後將目標資料複製到記憶體裡。

以上就是四種儲存器技術的全部內容,接下來我們將開始學習Cache的基本原理。