日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

计算机组成原理第3章-存储系统

發布時間:2025/4/5 windows 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机组成原理第3章-存储系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面:本文參考王道論壇主編的 計算機組成原理單科教材。

文章目錄

    • 3.1 存儲器概述
      • 3.1.1 存儲器的分類
        • 1 按照在計算機的作用(層次)分類
        • 2 按照存儲介質分類
        • 3 按照存取方式分類
        • 4 按照信息的可保存性分類
      • 3.1.2 存儲器的性能指標
        • 王道題目精選
    • 3.2 存儲器的層次化結構
    • 3.3 半導體隨機存儲器
      • 3.3.1 SRAM和DRAM
        • 1 SRAM的工作原理
        • 2 DRAM的工作原理
      • 3.3.2 只讀存儲器
        • 1 只讀存儲器的特點
        • 2 ROM的類型
    • 3.4 主存儲器與CPU的連接
      • 3.4.2 主存容量的擴展
        • 1.位擴展法
        • 2.字擴展法
        • 3.字位同時擴展法
      • 王道習題
    • 3.5 雙端口RAM和多模塊存儲器
      • 3.5.1 雙端口RAM
      • 3.5.2 多模塊存儲器
        • 1 單體多字存儲器
        • 2 多體并行存儲器
      • 王道題目
    • 3.6 高速緩沖存儲器(cache)
      • 3.6.1 程序訪問的局部性原理
      • 3.6.2 cache的基本工作原理
      • 3.6.3 Cache和主存的映射方式
        • 1 直接映射
        • 2 全相聯映射
        • 3組相聯映射
      • 王道書上Cache例題
      • 3.6.4 Cache中主存塊的替換算法
      • 3.6.5 Cache寫策略
      • 王道習題
        • 2010年408統考真題--兩段for循環程序
        • 全相聯映射-塊表
        • 四路組相聯-標記陣列和LRU替換
        • 2013年408統考真題(undone)
        • 2016年408統考真題(undone)
      • 3.7虛擬存儲器
        • 3.7.1 虛擬存儲器的基本概念
        • 3.7.2 頁式虛擬存儲器
        • 3.7.3 加快地址轉換:快表(TLB)
        • 3.7.4 段式虛擬存儲器
        • 3.7.5 段頁式虛擬存儲器

3.1 存儲器概述

3.1.1 存儲器的分類

1 按照在計算機的作用(層次)分類

1)主存儲器。 簡稱主存,又稱內存,用來存放計算機運行期間所需的大量程序和數據,CPU可以直接隨機地對其進行訪問,也可以和高速緩沖存儲器(Cache)及輔助寄存器交換數據。

特點是:容量較小、存儲速度較快、每位價格較高。

2)輔助存儲器。簡稱輔存,又稱外存, 是主存儲器的外援存儲器,用來存放當前暫時不用的程序和數據,以及一些需要永久性保存的信息,它不能與CPU直接交換信息。

特點是:容量極大、存儲速度較慢、單位成本低。

3) 高速緩沖存儲器。簡稱Cache,位于主存和CPU之間,用來存放正在執行的程序段和數據,以便CPU能高速地使用它們。

特點是:存取速度可與CPU的速度相匹配,但存儲容量小、價格高。

目前的高檔計算機通常將Cache制作在CPU中。

2 按照存儲介質分類

按照存儲介質分類,存儲器可分為磁表面存儲器(磁盤、磁帶)、磁心存儲器半導體存儲器(MOS型存儲器、雙極型存儲器)和光存儲器(光盤)。

3 按照存取方式分類

1)隨機存儲器(RAM)。存儲器的任何一個存儲單元的內容都可以隨機存取,而且存儲時間與存儲單元的物理位置無關。其優點是讀寫方便、使用靈活,主要用作主存或者cache。RAM又分為靜態RAM(以觸發器原理寄存信息)和動態RAM(以電容充電原理寄存信息).

2)只讀存儲器(ROM)。 存儲器的內容只能隨機地讀出而不能寫入。 信息一旦寫入存儲器就固定不變,即使斷電,內容也不會丟失。 因此,通常用它存放固定不變的程序、常數和漢字字庫,甚至用于操作系統的固化。它與隨機存儲器可共同作為主存的一部分,同一構成主存的地址域。

3)串行訪問存儲器。 對存儲單元進行讀寫操作時,需按照物理位置的先后順序尋址,包括順序存取存儲器(如磁帶)和直接存取存儲器(如磁盤)。

直接存取存儲器既不像RAM那樣隨機地訪問任何一個存儲單元,又不像順序存取存儲器那樣完全按順序存取,而是介于兩者之間。存取信息通常先尋找整個存儲器的某個小區域(比如磁盤上的某個磁道),再在小區域內順序查找。

4 按照信息的可保存性分類

斷電后存儲信息立刻消失的存儲器,稱為易失性存儲器,比如RAM。

斷電后存儲信息仍然保持的存儲器,稱為非易失性存儲器,比如ROM、磁表面存儲器和光存儲器。

若某個存儲單元所存儲的信息被讀出時,原存儲信息被破壞,則稱為破壞性讀出(比如DRAM);若讀出時,被讀單元原存儲信息不被破壞,稱為非破壞性讀出。

3.1.2 存儲器的性能指標

存儲器有3個主要性能指標,即存儲容量單位成本存儲速度。 這三個指標相互制約,設計存儲器系統所追求的目標就是大容量、低成本和高速度。

1) 存儲容量 =存儲字數× 字長 (比如 1M × 8位,又比如 1M × 32位)

存儲字數表示存儲器的地址空間大小,字長表示一次存取操作的數據量。

2)單位成本:每位價格=總成本/總容量

3) 存儲速度:數據傳輸率=數據的寬度/ 存儲周期

存取時間(TaT_aTa?):存取時間是指從啟動一次存儲器操作到完成該操作所經歷的時間,分為讀出時間和寫入時間。

存取時間是指從存儲器讀出或寫入一次信息所需要的平均時間。

存取周期(TmT_mTm?):存取周期又稱為讀寫周期或訪問周期。它是指存儲器進行一次完整的讀寫操作所需的全部時間,即連續兩次獨立訪問存儲器操作(讀或寫操作)之間所需的最小時間間隔。 通常包括存取時間+恢復時間。

主存帶寬(BmB_mBm?):主存帶寬又稱為數據傳輸率,表示每秒從主存進出信息的最大數量。

存取時間不等于存儲周期,通常存儲周期大于存取時間。這是因為對任何一種存儲器,在讀寫操作之后,總要有一段回復內部狀態的復原時間。對于破壞性讀出的存儲器,存取周期往往比存取時間大得多。

王道題目精選


3.2 存儲器的層次化結構

為了解決存儲系統大容量、高速度和低成本三個相互制約的矛盾,在計算機系統中,通常采用多級存儲器結構,如下圖所示。 在圖中,從上到下, 價位越來越低,速度越來越慢,容量越來越大, CPU訪問的頻率越來越低。

實際上, 存儲系統層次結構主要體現在“cache-主存”層次和“主存-輔存”層次。前者主要解決CPU和主存速度不匹配的問題,后者主要解決存儲系統的容量問題。在存儲體系中,cache、主存能和CPU直接交換信息, 輔存則許喲啊通過主存與CPU交換信息;主存與CPU、cache和輔存都能夠交換信息。

存儲器層次結構的主要思想是上一層的存儲器作為低一層存儲器的高速緩存。從CPU和角度看, cache-主存 層次速度接近于cache,而容量和價格卻接近于主存; 從主存-輔存層次看,其速度接近于主存,而價格和容量卻接近于輔存。

需要注意的是,主存和cache之間的數據調動是由硬件自動完成的,對所有程序員透明; 而主存和輔存之間的數據調動是硬件和操作系統共同完成的,對應用程序員透明。

3.3 半導體隨機存儲器

主存儲器由DRAM實現,cache由SRAM實現,它們都是易失性存儲器,只要電源被切斷,原來保存的信息就會丟失。 DRAM的每比特成本低于SRAM,速度也慢于SRAM,價格差異主要是因為SRAM集成度較低,同樣面積的硅片可以做出更大容量的DRAM,而只能做出很少的SRAM,所以SRAM更貴。【價格差異的原因】 而ROM則屬于非易失性存儲器。

3.3.1 SRAM和DRAM


DRAM SRAM

  • 為什么 SRAM 和DRAM都是易失性存儲器?
    答: 因為兩者都是以電信號的形式儲存0/1 ,所以斷電之后就丟失信息。

  • 為什么 SRAM 不需要刷新,而DRAM需要刷新?
    答: 因為DRAM存儲信息的元件是電容,電容上的電荷只能維持2ms左右(即使不斷電),為了防止電荷自動丟失,所以需要刷新,恢復電荷量(即恢復信息);而SRAM存儲信息所用的是雙穩態觸發器,它有兩種穩定的狀態,不需要刷新。

  • SRAM和DRAM讀寫的原理是什么呢?以及為什么DRAM是破壞性讀?
    DRAM使用電容,【1】讀取數據的時候需要別的電路連接電容,檢測電流的變化,所以會改變電容中儲存的電荷,因而會改變存儲的信息,也就是破壞性讀。 【2】寫數據的時候要給電容充放電
    SRAM使用觸發器,有兩種穩定的狀態,【1】讀取數據僅需要查看觸發器的狀態;【2】寫數據需要修改觸發器的狀態。

  • 1 SRAM的工作原理

    通常把存放一個二進制位的物理器件稱為存儲元,它是存儲器的最基本的構件。地址碼相同的多個存儲元構成一個存儲單元。 若干存儲單元的集合構成存儲體。

    靜態RAM的存儲元是用雙穩態觸發器實現的,因此即時信息被讀出后,它仍保持其原狀態而不需要再生。

    2 DRAM的工作原理

    與SRAM不同,動態隨機存儲器(DRAM)是利用存儲元電路中柵極電容上的電荷來存儲信息的,DRAM的基本存儲元通常只使用一個晶體管,所以它比SRAM的密度更高。DRAM采用地址復用技術,地址信號分行列兩次傳送。

    DRAM電容上的電荷一般只能維持1~2ms,因此即使電源不斷電,信息也會自動消失。 為此,每隔一定時間必須刷新,通常取2ms,這個時間稱為刷新周期。 常用的刷新方式有三種:集中刷新、分散刷新和異步刷新。

    1)集中刷新。指在一個刷新周期內,利用一端固定的時間,依次對存儲器的所有行進行逐一再生(讀出一行信息后重新寫入),在此期間停止對存儲器的讀寫操作,稱為"死時間",又稱訪存“死區”。

    集中刷新的優點是讀寫操作時不受刷新工作的影響,因此系統的存取速度較高;缺點是在集中刷新期間(死區)不能訪問存儲器。

    2)分散刷新。 把對每行的刷新分散到各個工作周期中。這樣,一個存儲器的系統工作周期分為兩部分:前半部分用于正常讀、寫或保持;后半部分用于刷新某一行。 這種刷新方式增加了系統的存取周期, 如存儲芯片的存取周期為0.5 us,則系統存取周期為1us。

    存取周期,它是指存儲器進行一次完整的讀寫操作所需的全部時間,即連續兩次獨立訪問存儲器操作(讀或寫操作)之間所需的最小時間間隔。 通常包括存取時間+恢復時間。

    分散刷新的優點是沒有死區;缺點是加長了系統的存取周期,降低了整機的速度。

    3)異步刷新。

    異步刷新是前兩種方法的結合,它既可以縮短“死時間”,又能充分利用最大刷新間隔為2ms的特點。 具體做法是將刷新周期除以行數, 得到兩次刷新操作之間的時間間隔t,利用邏輯電路每個時間t產生一次刷新請求。這樣可以避免使CPU連續等待過長的時間,而且減少了刷新次數。

    若將刷新安排在不需要訪問存儲器的譯碼階段, 則既不會加長存取周期,也不會產生“死時間”,這是分散刷新方式的發展,也稱為“透明刷新”。

    3.3.2 只讀存儲器

    1 只讀存儲器的特點

    ROM和RAM都是支持隨機存取的存儲器,其中DRAM和SRAM都是易失性存儲器;而ROM中一旦有了信息,就不能輕易改變,即使掉電也不會丟失,也在計算機系統中是只供讀出的存儲器。 ROM器件有兩個顯著的優點:
    1)結構簡單,所以位密度比可讀寫存儲器的高;
    2)具有非易失性,所以可靠性高;

    2 ROM的類型

    U盤屬于閃存(flash)!!!

    3.4 主存儲器與CPU的連接

    3.4.2 主存容量的擴展

    由于單個存儲芯片的容量是有限的,它在字數或者字長方面與實際存儲器的要求有差別,因此需要在字和位兩方面進行擴充才能滿足實際存儲器的容量要求。 通常采用位擴展法、字擴展法和字位同時擴展法來擴展主存容量。

    1.位擴展法

    CPU的數據線數和存儲芯片的數據位數不一定相等,此時必須對存儲芯片擴位(即進行位擴展,用多個存儲器對字長進行擴充,增加存儲字長),使其數據位數與CPU的數據線數相等。

    位擴展的連接方式是將多個存儲芯片的地址端片選端讀寫控制端相應并聯, 數據端分別引出。

    注意: 僅采用位擴展時,各芯片連接地址線的方式相同,但連接數據線的方式不同,在某一時刻選中所有的芯片,所以片選信號要連接到所有芯片。

    2.字擴展法

    字擴展是指增加存儲器中字的數量,而位數不變。 字擴展將芯片的地址線、數據線、讀寫控制線相應并聯,而由片選信號來區分各個芯片的地址范圍

    3.字位同時擴展法

    王道習題


    解答:


    解答:


    解答:

    解答:

    解答:

    3.5 雙端口RAM和多模塊存儲器

    提高CPU訪問存儲器的速度,可以采用雙端口存儲器、多模塊存儲器等技術,它們同屬于并行技術,前者為空間并行,后者為時間并行。

    3.5.1 雙端口RAM

    雙端口RAM是指同一個存儲器有左右兩個獨立的端口,分別具有兩組相互獨立的地址線、數據線和讀寫控制線,允許兩個獨立的控制器同時異步地訪問存儲單元。 當兩個端口的地址不相同時,在兩個端口上進行讀寫操作一定不會發生沖突。

    3.5.2 多模塊存儲器

    1 單體多字存儲器

    單體多字系統的特點是存儲器中只有一個存儲體,每個存儲單元存儲m個字,總線寬度也是m個字。一次并行讀出m個字,地址必須順序排列并處于同一存儲單元。

    單體多字系統在一個存取周期內,從同一地址取出m條指令,然后將指令逐跳送至CPU執行,即每隔1/m存取周期,CPU向主存取一條指令。這增大了存儲器的帶寬,提高了單體存儲器的工作速度。

    缺點: 指令和數據在主存內必須是連續存放的,一旦遇到轉移指令,或操作數不能連續存放,這種方法的效果就不明顯。

    2 多體并行存儲器

    多體并行存儲器由多體模塊組成。每個模塊都有相同的存儲容量和存取速度,各個模塊都有獨立的讀寫控制電路,地址寄存器和數據寄存器。它們既能并行工作,又能交叉工作。

    多體并行存儲器分為高位交叉編址(順序方式)和低位交叉編址(交叉方式)兩種。

    1)高位交叉編址

    高位地址表示體號,低位地址為體內地址。

    2 ) 低位交叉編址
    低位地址是體號,高位地址是體內地址。

    程序連續存放在相鄰模塊中,因此稱為交叉存儲器。采用低位交叉編址后,可以在不改變每個模塊存取周期的前提下,采用流水線的方式進行并行存取,提高存儲器的帶寬。

    模塊數為4的流水線方式存取示意圖。

    王道題目


    3.6 高速緩沖存儲器(cache)

    3.6.1 程序訪問的局部性原理

    程序訪問的局部性原理包括時間局部性和空間局部性。

    時間局部性是指在最近的未來要用到的信息,很可能是現在正在使用的信息,因為程序中存在循環;

    空間局部性是指在最近的未來要用的信息,很可能與現在真在使用的信息在存儲空間上是鄰近的,因為指令通常是順序存放、順序執行的。

    高速緩沖技術就是利用程序訪問的局部性原理,把程序中正在使用的部分存放在一個高速的、容量較小的cache中,使CPU的訪存操作大多數針對cache行進行,從而大大提高程序的執行速度。

    3.6.2 cache的基本工作原理

    Cache位于存儲器層次結構的頂層,通常由SRAM構成。

    為便于Cache和主存之間交換信息,Cache和主存都被劃分為相等的塊,Cache塊又稱為Cache行,每塊由若干字節構成,塊的長度稱為塊長(Cache行長)。由于Cache的容量遠遠小于內存的容量,所以Cache中的塊數要遠少于主存中塊數,它僅保存主存中最活躍的若干塊的副本。因此Cache按照某種策略,預測CPU在未來一段時間內欲訪存的數據,將其裝入Cache.

    當CPU發出讀請求時,若訪存地址在Cache中命中,就將此地址轉換成Cache地址,直接對Cache進行讀操作,與主存無關。

    如果Cache不命中,則仍然需要訪問主存, 并把此字所在的塊一次性地從主存調入Cache。如果此時Cache已滿,需要按照某種替換算法,用這個塊替換Cache中原來的那塊信息。

    CPU與Cache之間的數據交換以為單位,而Cache與主存之間的數據交換以Cache塊為單位。

    3.6.3 Cache和主存的映射方式

    Cache行中的信息是主存中某個塊的副本,地址映射是指把主存地址空間映射到Cache地址空間,即把存放在主存中的信息按照某種規則裝入Cache。

    由于Cache行數比主存塊數要少得多,因此主存中只有一部分塊的信息可放在Cache中,因此在Cache中要為每塊加一個標記,指明它是主存中哪一塊的副本。 該標記的內容相當于主存塊的編號。 為了說明Cache行中的信息是否有效,每個cache行需要一個有效位。

    1 直接映射

    主存中的每一塊只能裝入Cache中的唯一位置。 若這個位置已經有內容,則產生塊沖突,原來的塊將被無條件替換出去(無需使用替換算法)。直接映射實現簡單,但不夠靈活,即使Cache的其他許多地址空著也不能占用,這使得直接映射的塊沖突概率最高,空間利用率最低。

    直接映射的關系可定義為

    j=imod2cj= i \,mod\, 2^c\,j=imod2c

    其中j是Cache的塊號,i是主存的塊號,2c2^c2c是Cache中的總塊數

    直接映射的地址結構是

    由映射函數可以看出,主存塊號的低C位正好是它要裝入的Cache行號。給每個Cache行設置一個長度為t=m?ct=m-ct=m?c的標記(tag),當主存某塊調入Cache后,就將其某塊號的高t位設置在對應Cache行的標記中。

    2 全相聯映射

    主存中的每一塊可以裝入Cache中的任何位置,每行的標記用于指出該行取自主存的哪一塊,所以CPU訪存時需要與所有Cache行的標記進行比較。全相聯映射方式的優點是比較靈活,Cache塊的沖突概率低,空間利用率高,命中率也高;缺點是標記的比較速度較慢,實現成本較高,通常需要采用昂貴的按內容尋址的相聯存儲器進行地址映射。

    全相聯映射方式的地址結構

    3組相聯映射

    將Cache空間分成大小相同的組,主存的一個數據塊可以裝入一組內的任何一個位置,即組間采用直接映射,而組內采用全相聯映射。


    組相聯映射是對直接映射和全相聯映射方式的一種折中,當Q=1時,變成全相聯映射,當Q=Cache塊數時變成直接映射。 假設每組有r個Cache行,則稱之為r路組相聯。 上圖中每組有兩個cache行,所以稱為2路組相聯。

    組相聯映射的關系可以定義為:
    j=imodQj= i\, mod\, Qj=imodQ

    其中,j是Cache行的組號,i是主存的塊號, Q是cache 的組數。

    路數越多,即每組Cache行的數量越大,發生塊沖突的概率越低, 但相聯比較電路也越復雜。 選定適當的數量, 可使得組相聯電路的成本接近直接映射,而性能上接近于全相聯映射。

    組相聯映射的地址結構為

    CPU訪存過程如下:

    首先根據訪存地址中間的組號,找到對應的Cache組

    將對應的Cache組中每個行的標記與主存地址的高位標記進行比較:

    1)若有一個相等且有效位是1,則訪問,Cache命中,此時根據主存地址中的塊內地址,在對應Cache行上存取信息;

    2)若都不相等或雖相等但有效位為0,則不命中,此時CPU從主存中讀出該地址所在的一塊信息送到對應的Cache組的任意一個空閑行中,將有效位置1,并設置標志,同時將該地址中的內容送CPU


    來源于:王道課件

    王道書上Cache例題

    注意:

    【1】 這里計算每個Cache行的容量 : 數據容量(64B=64 * 8位=512位)+ 有效位1位+標記字段位數 。然后再乘以Cache行的行數。

    【2】主存地址3200(十進制)如何使用? 別忘了按照字節編址,則為3200B,然后除以每個Cache行長(Cache塊大小)64B,得到對應的塊號(3200B/ 64B=50,塊號是50)。然后看Cache有幾行? 8行 ,則 50 mod 8 = 2 ,即對應的Cache行號為2.(注意:Cache行號從0開始)。

    第一問答案:

    第二問答案


    第三問答案:

    需要把地址0123456H寫成二進制,并且分清楚每部分的功能。

    3.6.4 Cache中主存塊的替換算法

    在采用全相聯映射方式或組相聯映射方式時,從主存向Cache傳送一個新塊,當Cache或Cache組中的空間已被占滿時,就需要使用替換算法置換Cache行。 而采用直接映射時,一個給定的主存塊只能放到唯一的固定的Cache行中,所以在對應Cache行已有一個主存塊的情況下,新的主存塊毫無選擇地把原先已有的那個主存塊替換掉,因而無需考慮替換算法。

    常用的替換算法有隨機(RAND)算法,先進先出(FIFO)算法、近期最少使用(LRU,Least Recently Used)算法和最不經常使用(LFU)算法。其中最長考察的是LRU算法。

    近期最少使用算法:依據程序訪問的局部性原理,選擇近期內未訪問過的Cache行作為替換的行,平均命中率要比FIFO高,是堆棧類算法。

    3.6.5 Cache寫策略

    因為Cache中的內容是主存塊副本,當對Cache中的內容進行更新時,就需要選用寫操作策略使cache內容和主存內容保持一致。 此時分為兩種情況。

    1)全寫法(寫直通法、write-through)。當CPU對Cache寫命中時,必須把數據同時寫入Cache和主存。當某一塊需要替換時,不比把這一塊寫回主存,用新調入的塊直接覆蓋即可。這種方法實現簡單,能隨時保持主存數據的正確性。 缺點是增加了訪存次數,降低了cache的效率。

    寫緩沖:為減少全寫法直接寫入主存的時間損耗,在cache和主存之間加一個寫緩沖(Write Buffer)。 CPU同時寫數據到Cache和寫緩沖中,寫緩沖再控制將內容寫入主存。 寫緩沖是一個FIFO隊列,寫緩沖可以解決速度不匹配的問題。 但如果出現頻繁寫時,會使得寫緩沖飽和溢出。

    2)寫回法(write-back).當CPU對Cache寫命中時,只修改Cache 的內容,而不立即寫入主存,只有當此塊被換出時才寫回主存,這種方法減少了訪存次數,但存在不一致的隱患。 采用這種策略時,每個cache行必須設置一個標志位(臟位),以反映此位是否被CPU修改過。

    對于寫不命中的情況,也有兩種方式處理。

    1) 寫分配法(Write-allocate).加載主存中的塊到cache中,然后更新這個cache塊。

    2 ) 非寫分配法(not-write-allocate)。只寫入主存,不進行調塊。

    王道習題

    2010年408統考真題–兩段for循環程序

    第一問解答

    第二問解答

    第三問解答

    全相聯映射-塊表

    題目

    第一問解答

    第二問解答

    第三問解答

    四路組相聯-標記陣列和LRU替換

    注:

    【1】 cache 的標記陣列只與Cache行數有關!!!,不管是直接映射,還是全相聯映射、組相聯映射。

    【2】寫直達式cache每個標記項包含啥? 寫回式cache每個標記項又包含什么?

    寫直達式cache每個標記項= 標記+替換控制位+有效位1位

    寫回式cache每個標記項=標記+替換控制位+有效位1位+臟位1位

    解答


    2013年408統考真題(undone)


    2016年408統考真題(undone)

    3.7虛擬存儲器

    主存和輔存共同構成了虛擬存儲器,二者在硬件和軟件的共同管理下工作。 對于應用程序員而言,虛擬存儲器是透明的。 虛擬存儲器具有主存的速度和輔存的容量,提高了存儲系統的性價比。

    3.7.1 虛擬存儲器的基本概念

    虛擬存儲器將主存或輔存的地址空間統一編址,形成一個龐大的地址空間,在這個空間中,用戶可以自由編程,而不用考慮實際的主存容量和程序在主存中實際的存放位置。

    用戶編程允許的地址稱為虛地址或邏輯地址,虛地址對應的存儲空間稱為虛擬空間或程序空間。 實際的主存單元地址稱為實地址或物理地址,實地址對應的是主存地址空間,也稱實地址空間。 虛地址比實地址要大得多。

    CPU使用虛地址時,由輔助硬件找出虛地址和實地址之間的對應關系,并判斷這個虛地址對應的存儲單元內容是否已經裝入主存。

    如果已經在主存,則通過地址變換,CPU可直接訪問主存指示的實際單元;
    若不在主存中,則把包含這個字的一頁或一段調入主存后再由CPU訪問。如果主存已滿,則采用替換算法置換主存中的一頁或一段。

    3.7.2 頁式虛擬存儲器

    以頁為基本單位的虛擬存儲器稱為頁式虛擬存儲器。

    虛擬空間與主存空間都被劃分為同樣大小的頁,主存的頁稱為實頁,虛存的頁稱為虛頁。

    把虛擬地址分為兩個字段:虛頁號和頁內地址。 虛擬地址到物理地址的轉換是由頁表實現的。頁表是一張存放在主存中的虛頁號和實頁號的對照表,它記錄程序的虛頁調入內存時被安排在主存中的位置。 頁表一般長久地保存在內存中。

    下圖是一個頁表示例。

    有效位也稱為裝入位,用來表示對應頁面是否在主存中,若為1,表示該虛擬頁已經從外存調入主存,此時頁表項存放該頁的物理頁號;若為0,則表示沒有調入內存,此時頁表項可以存放該頁的磁盤地址。

    臟位也稱修改位,用來表示頁面是否被修改過,虛擬機制中采用回寫策略,利用臟位可判斷替換時是否需要寫回磁盤。

    引用位也稱使用位,用來配合替換策略進行設置,例如是否實現最先調入(FIFO位)或最近最少使用(LRU位)策略等。


    CPU執行指令時,需要先將虛擬地址轉化為主存的物理地址。每個進程都有一個頁表基址寄存器,存放該進程的頁表首地址,然后根據虛擬地址高位部分的虛擬頁號找到對應的頁表項,若裝入位為1,則取出物理頁號,和虛擬地址低位部分的頁內地址拼接,形成實際物理地址。若裝入位為0,則說明缺頁,需要操作系統進行缺頁處理。地址變換過程如下圖所示。

    頁式虛擬存儲器的優點:頁面的長度固定,頁表簡單,調入方便。

    頁式虛擬存儲器的缺點:由于程序不可能是頁面的整數倍,最后一頁的零頭將無法利用而造成浪費,并且頁也不是邏輯上獨立的實體,所以處理、保護和共享都不及段式虛擬存儲器方便。

    3.7.3 加快地址轉換:快表(TLB)

    由地址轉換過程可知,訪存時先訪問一次主存去查頁表,再訪問主存才能得到數據。如果缺頁,還要進行頁面替換、頁面修改等,因此采用虛擬存儲機制后,訪問主存的次數更多了。

    依據程序執行的局部性原理,在一段時間內總是經常訪問某些頁時,若把這些頁對應的頁表項存放在高速緩沖器組成的快表(TLB)中,則可以明顯提高效率。相應地把放在主存中的頁表稱為慢表(Page)。在地址轉換時,首先查找快表,若命中,則無需訪問主存中的頁表。


    3.7.4 段式虛擬存儲器

    段式虛擬存儲器中的段是按程序的邏輯結構劃分的,各個段的長度因程序而異。把虛擬地址分為兩部分,段號和段內地址。虛擬地址到實地址之間的變換是由段表來實現的。段表是程序的邏輯段和在主存中存放位置的對照表。段表的每行記錄與某個段對應的段號、裝入位、段起點和段長等信息。 由于段的長度可變,所以段表中要給出各段的起始地址與段的長度。

    CPU根據虛擬地址訪存時,首先根據段號與段表基地址拼接成對應的段表行,然后根據該段表行的裝入位判斷該段是否已調入主存(裝入位為1,表示該段已經調入主存;;裝入位為0,表示該段不在主存中)。已調入主存時,從段表讀出該段在主存中的起始地址,與段內地址(偏移量)相加,得到相應的主存實地址。

    段式虛擬存儲器的優點:段的分界與程序的自然分界相對應,因而具有邏輯獨立性,便于編譯、管理、修改和保護,也便于多道程序的共享。
    段式虛擬存儲器的缺點:段長度可變,分配空間不便,容易在段間留下碎片,不好利用,造成浪費。

    3.7.5 段頁式虛擬存儲器

    把程序按照邏輯結構分段每段再劃為固定大小的,主存空間也劃分為大小相等的頁,程序對主存的調入、調出仍以頁為基本傳送單位,這樣的虛擬存儲器稱為段頁式虛擬存儲器。在段頁式虛擬存儲器中,每個程序對應一個段表,每段對應一個頁表,段的長度必須是頁長的整數倍,段的起點必須是某一頁的起點。

    虛地址分為段號、段內頁號、頁內地址三部分。 CPU根據虛地址訪存時,首先根據段號得到段表地址;然后從段表中取出該段的頁表起始地址,與虛地址段內頁號合成,得到頁表地址;最后從頁表中取出實頁號,與頁內地址拼接形成主存實地址。

    段頁式虛擬存儲器的優點:兼具頁式和段式虛擬存儲器的優點,可以按段實現共享和保護;
    段頁式虛擬存儲器的缺點:在地址變換過程中需要兩次查表,系統開銷較大。

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的计算机组成原理第3章-存储系统的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。