存儲器的層次結構原理圖解分析
存儲器的層次結構原理圖解分析
? 學習目錄:
??? 理解多級存儲層次的思想及其作用;
??? 掌握存儲層次的三個性能參數的定義及計算方法;
??? 掌握“Cache-主存”層次、“主存-輔存”層次及其區別;
??? 理解存儲層次的四個問題。
??? 正文:
??? 4.1存儲器的層次結構
??? 存儲器是計算機的核心部件之一。其性能直接關系到整個計算機系統性能的高低。如何以合理的價格,設計出容量和速度滿足計算機系統要求的存儲器系統,始終是計算機體系結構設計中的關鍵問題之一。 計算機軟件設計者和計算機用戶對于存儲器容量的需求是無止境的,他們希望容量越大越好,而且速度還要快,價格要便宜。僅用單一的一種存儲器是很難達到這一目標的。較好的方法是采用存儲層次,用多種存儲器構成存儲器的層次結構。
?4.1.1從單級存儲器到多級存儲器
從用戶的角度來看,存儲器的三個主要指標是:容量、速度和價格(本節中,“價格”均指每位價格)。那么,究竟一個存儲器的容量應是多大、速度應多快、價格應是多少才比較合理呢?
先來看看人們對這三個指標的期望。
然而,人們對于存儲器的容量大、速度快、價格低的三個要求是相互矛盾的。綜合考慮不同的存儲器實現技術,可以發現:
(1) 速度越快,每位價格就越高;
(2) 容量越大,每位價格就越低;
(3) 容量越大,速度越慢。
如果只采用其中的一種技術,存儲器設計者就會陷入困境:從實現“容量大、價格低”的要求來看,應采用能提供大容量的存儲器技術;但從滿足性能需求的角度來看,又應采用昂貴且容量較小的快速存儲器。走出這種困境的唯一方法,是采用多種存儲器技術,構成多級存儲層次。
要實現上述目標,必須做到:存儲器若越靠近 CPU,則 CPU 對它的訪問頻度越高,而且最好大多數的訪問都能在 M1 完成。這是通過利用 局部性原理來實現的。局部性原理指出,絕大多數程序訪問的指令和數據是相對簇聚的。我們可以把近期內 CPU 使用的程序和數據放在盡可能靠近 CPU 的存儲器中。
??? 4.1.2存儲層次的性能參數
??? 為簡單起見,我們僅考慮由 M1 和 M2 兩個存儲器構成的兩級存儲層次結構。并假設 M1 的容量、訪問時間和每位價格分別為 S1,TA1,C1,M2 的參數為 S2,TA2,C2 。
??? 1. 存儲層次的平均每位價格C
??? 顯然,當 S1<<S2 時,C ≈ C2 。
??? 2. 命中率H
??? 命中率為 CPU 訪問存儲系統時,在 M1 中找到所需信息的概率。命中率一般用模擬的方法來確定,也就是通過模擬執行一組有代表性的程序,分別記錄下訪問 M1 和 M2 的次數 N1 和 N2 ,則:
為了突出反映不命中的情況,我們還經常使用不命中率或失效率 F 這個參數。它是指CPU 訪存時,在 M1 中找不到所需信息的概率。顯然
??? F=1-H
??? 3. 平均訪問時間TA
??? TA = HTA1+(1-H)(TA1+TM)
??? = TA1+(1-H)TM
??? 或 TA = TA1+FTM
??? 其中: TA1 -- 命中時間
??? TM -- 失效開銷
4.1.3“cache-主存”和“主存-輔存”層次
??? “Cache-主存”和“主存-輔存”層次是常見的兩種層次結構,幾乎所有當代計算機都同時具有這兩種層次。我們知道,程序在執行前需先調入主存(在虛擬存儲器中也是如此,只是不必一次全部調入,而是調入一部分執行一部分)。因此,下面我們將從主存的角度來討論這兩個存儲層次。
??? 1. “Cache-主存”層次
??? (1) CPU和主存之間在性能上的差距越來越大
現代計算機都采用 Cache 來解決這個問題。
??? (2) “Cache-主存”層次
??? 這是在 CPU 和主存之間增加一級速度快、但容量較小且每位價格較高的高速緩沖存儲器(Cache)。借助于輔助軟硬件,它與主存構成一個有機的整體,以彌補主存速度的不足。這個層次的工作主要由硬件實現。
?2.“主存-輔存”層次
??? “主存-輔存”層次的目的是為了彌補主存容量的不足。它是在主存外面增加一個容量更大、每位價格更低、但速度更慢的存儲器(稱為輔存,一般是硬盤)。它們依靠輔助軟硬件的作用,構成一個整體,如圖4.1.6所示?!爸鞔?輔存”層次常被用來實現虛擬存儲器,向編程人員提供大量的程序空間。
3. 兩者的比較
??? 表4.1對“Cache-主存”和“主存-輔存”層次做了一個簡單的比較。
??? 表4.1 “Cache-主存”與“主存-輔存”層次的區別
4.1.4存儲層次的四個問題
??? 后面幾節將論述“Cache-主存”層次和虛擬存儲器(“主存-輔存”)。對于每一個層次,都將討論以下四個問題:
??? 1. 當把一個塊調入高一層(靠近CPU)存儲器時,可以放到哪些位置上? (映象規則)
??? 動畫演示
??? 2. 當所要訪問的塊在高一層存儲器中時,如何找到該塊? (查找算法)
??? 動畫演示
??? 3. 當發生失效時,應替換哪一塊? (替換算法)
??? 4. 當進行寫訪問時,應進行哪些操作? (寫策略)
??? 動畫演示
??? 搞清楚這些問題,對于理解一個具體存儲層次的工作原理以及設計時的考慮是十分重要的。
非常好我支持^.^
(6) 35.3%
不好我反對
(11) 64.7%
相關閱讀:
- [電子說] uboot的基本概念和啟動流程分析 2023-10-24
- [控制/MCU] 單片機的三大功能 2023-10-24
- [電子說] 怎樣延長半導體元器件的壽命呢? 2023-10-24
- [電子說] 您的存儲器堆疊了嗎?—賽靈思推出16GB HBM FPGA 2023-10-24
- [制造/封裝] 什么是引線鍵合?引線鍵合的演變 2023-10-24
- [電子說] 物聯網無線傳感器節點可使用國產鐵電存儲器PB85RS2MC 2023-10-24
- [電子說] 應用在PC機中的低功耗觸摸感應芯片 2023-10-24
- [電子說] 3線串行數據通訊EEPROM的使用 2023-10-23
( 發表人:admin )