新四季網

計算機存儲器系統包括哪些結構(計算機組成原理)

2023-09-22 03:58:23 4

按照在計算機中作用的不同,存儲器分為緩衝存儲器、主存、輔助存儲器。按照存儲信息的材料或介質可以分為磁帶存儲器.磁碟存儲器、半導體存儲器、光碟存儲器。

理想狀態中,我們將存儲器系統視為一個線性字節數組,CPU能在常數時間內訪問每個存儲器位置。但實際上存儲器系統(Memory System)是一個具有不同容量、成本和訪問時間的存儲設備的層次結構,分別具有以下幾部分:

CPU中的寄存器保存最常使用的數據,能在0個時鐘周期內訪問高速緩存存儲器(Cache Memory)是靠近CPU的、較小的快速存儲器,保存一部分從主存儲器(Main Memory)取出的常用指令和數據,能在4~75個時鐘周期內訪問主存緩存存儲磁碟上的數據,需要上百個時鐘周期訪問磁碟存儲通過網絡連接的其他機器的磁碟或磁帶上的數據,需要幾千萬個周期進行訪問

上方存儲器作為下方存儲器的緩存,速度更快、容量更小。

存儲器的層次結構之所以有效,是因為程序具有局部性(Locality)的基本屬性,傾向於不斷訪問相同的數據項集合,或者傾向於訪問相鄰的數據項集合。我們希望程序能具有更好的局部性,使得數據項存儲在較高層次的存儲器中,這樣程序就會傾向於從存儲器結構中較高層次訪問數據項,運行會更快。

1 存儲技術1.1 隨機訪問存儲器

隨機訪問存儲器(Random-Access Memory,RAM)根據存儲單元實現方式可以分為兩類:靜態的RAM(SRAM)和動態的RAM(DRAM)。

1.1.1 SRAM將每個位保存到由6個電晶體電路構成的雙穩態的(Bistable)存儲器單元。屬性:可以無限期地保持在兩個不同的電壓配置或狀態之一,而其他的都是不穩定狀態,會迅速轉移到兩個穩定狀態之一。特點:由於具有雙穩態,所以只要有電,就會永遠保持它的值,即使有幹擾,當幹擾消除時就會恢復到穩態。

由於SRAM存取速度較快,只要供電就會保持不變,對光和電噪音等幹擾不敏感,但是每位的存儲需要6個電晶體,使得造價較為昂貴,且密集度低,使其適合作為小容量高速的高速緩存存儲器。

1.1.2 DRAM將每個位保存為,對一個由訪問電晶體控制的電容的充電。特點:由於每個存儲單元比較小,DRAM可以製造的十分密集,可以作為主存或圖形系統的幀緩衝區。由於通過電容電壓來保存位,當電容電壓受到擾動時就無法恢復了。並且電容存在漏電現象,存儲單元10~100毫秒會失去電荷,使得內存系統必須周期性通過讀出重寫來刷新內存的每一位。暴露在光線中會導致電容電壓改變。

我們可以將w個DRAM單元組成一個超單元(Supercell),使得一個超單元就能存儲w位的信息,並且將d個超單元組合在一個構成一個 d \times wd×w DRAM晶片,能夠存儲dw位信息,並且能對每個超單元進行尋址。並且為了降低地址引腳的數量,我們可以將d個超單元組織成r行、c列的陣列形式。

如上圖所示,我們有一個16 \times 816×8的DRAM晶片,其中包含16個超單元,每個超單元由8個DRAM單元組成,使得每個超單元能存儲8位信息。並且16個超單元被組成4行4列的陣列形式。由一個內存控制器(Memory Controller)通過addr引腳和data引腳將控制DRAM晶片數據的傳入和傳出,比如想要獲得(2,1)處超單元的數據

內存控制器發送行地址(Row Access Strobe,RAS)2到DRAM晶片,則DRAM晶片會將行2中的整行內容複製到內部行緩衝區。內存控制器發送列地址(Column Access Strobe,CAS)1到DRAM晶片,則DRAM晶片會從內部行緩衝區獲得1列的數據,將其發送到內存控制器。

注意:

內存控制器發送RAS和CAS時,使用相同的addr引腳,使得必須分兩步發送地址,會增加訪問時間。如果將16個DRAM單元組織成線性形式,則需要4位的地址引腳才能索引到每個超單元,但是將其組織成4行4列的陣列形式,只需要2位的地址引腳。

為了一次性能訪問更多的數據,可以將多個DRAM晶片封裝到一個內存模塊(Memory Module)中,將其扎到主板的擴展槽中。

如上圖所示是封裝了8個 8M \times 88M×8 DRAM晶片的內存模塊,每個DRAM晶片負責8位數據,這樣一次能對64位字進行讀寫。比如想要獲得地址A處的字:

內存控制器首先將A轉化為(i,j)的超單元地址,然後內存控制器依次將i和j廣播到所有DRAM晶片中每個DRAM晶片依次接收到RAS i和CAS j,會通過上述的方法輸出8位數據模塊中的電路收集到所有DRAM晶片輸出的8位數據,然後將其合併成一個64位的字,返回給內存控制器

為了進一步擴大存儲能力,可以將多個內存模塊連接到內存控制器,能夠聚合成主存。當內存控制器想要讀取地址A處的字時,會先找到包含地址A的內存模塊k,然後根據上述步驟得到對應的字。

而基於傳統的DRAM單元,可以做一些優化來提高訪問基本DRAM單元的速度:

快頁模式DRAM(Fast Page Mode DRAM,FPM DRAM):傳統的DRAM晶片通過CAS獲得數據後,會將那一行的數據從內部行緩衝區直接刪掉,如果訪問多個在同一行的超單元時,需要反覆讀取相同的行。而FPM DRAM能夠獲取一次性數據後,後面的讀取直接從內部行緩衝區讀取。擴展數據輸出DRAM(Extended Data Out DRAM,EDO DRAM):對FPM DRAM進行改進,使得各個CAS信號在時間上更加緊密。同步DRAM(Synchronous DRAM,SDRAM):DRAM晶片與內存控制器的通信使用一組顯示的控制信號,通常是異步的,而SDRAM使用了,控制內存控制器的外部時鐘信號的上升沿來代替控制信號。雙倍數據速率同步DRAM(Double Data-Rate Sychronous DRAM,DDR SDRAM):對SDRAM的優化,通過使用兩個時鐘沿作為控制信號,從而使得DRAM的速度翻倍。視頻RAM(Video RAM,VRAM): 用於圖形系統的幀緩衝區,與FPM DRAM的區別:VRAM的輸出是通過對內部緩衝區的移位得到的,VRAM允許對內存並行地讀和寫。

從更高層面來看,數據流是通過稱為總線(Bus)的共享電子電路在處理器和DRAM主存之間傳遞數據的。總線是一組並行的導線,能夠攜帶地址、數據和控制信號,也可以將數據和地址信號使用相同的導線。

如上圖所示是一個連接CPU和DRAM主存的總線結構。其中I/O橋接器(I/O Bridge)晶片組包括內存控制器,能夠將系統總線的電子信號和內存總線的電子信號互相翻譯,也能將系統總線和內存總線連接到I/O總線。

當從內存加載數據到寄存器中:

CPU晶片通過總線接口(Bus Interface)在總線上發送讀事務(Read Transaction)CPU會將內存地址發送到系統總線上I/O橋將信號傳遞到內存總線內存接收到內存總線上的地址信號,會從DRAM讀取出數據字,然後將數據寫到內存總線I/O橋將內存總線信號翻譯成系統總線信號,然後傳遞到系統總線上CPU從總能線上讀取數據,並將其複製到寄存器中

當將寄存器中的數據保存到內存中:

CPU晶片通過總線接口發起寫事務(Write Transaction)CPU會將內存地址發送到系統總線上I/O橋將信號傳遞到內存總線內存接收到內存總線上的地址信號,會等待數據到達CPU將寄存器中的數據字複製到系統總線I/O橋將內存總線信號翻譯成系統總線信號,然後傳遞到系統總線上內存從內存總線讀出數據,並將其保存到DRAM中。

這裡的讀事務和寫事務統稱為總線事務(Bus Transaction)。

1.1.3 非易失性存儲器

之前介紹的DRAM和SRAM在斷電時都會丟失數據,所以是易失的(Volatile),而非易失性存儲器(Nonvolatile Memory)即使斷電後,也會保存信息,該類存儲器稱為只讀存儲器(Read-Only Memory,ROM),但是現在ROM中有的類型既可以讀也可以寫了,可以根據ROM能夠重編程的次數以及對它們進行重編程所用的機制進行區分,包括:

可編程ROM(PROM):可以編程一次可擦寫PROM(EPROM):可以批量擦除快閃記憶體(Flash Memory):具有部分(塊級)擦除功能,大約擦除十萬次後會耗盡

存儲在ROM設備中的程序稱為固件(Firmware),包括BIOS、磁碟控制器、網卡、圖形加速器和安全子系統等。當計算機系統通電後,會運行存儲在ROM中的固件。

1.2 磁碟存儲

磁碟(Disk)是被用來保存大量數據的存儲設備,但是讀信息的速度比DRAM慢10萬倍,比SRAM慢100萬倍。

如上圖所示是一個磁碟的構造。磁碟是由多個疊放在一起的碟片(Platter)構成,每個碟片有兩個覆蓋著磁性記錄材料的表面(Surface)。每個表面由一組稱為磁軌(Track)的同心圓組成,每個磁軌被劃分為若干扇區(Sector),每個扇區包含相同數量的數據位(通常為512位)作為讀寫數據的基本單位。扇區之間通過間隙(Gap)分隔開來,間隙不保存數據信息,只用來表示扇區的格式化位。通常會使用柱面(Cylinder)來描述不同表面上相同磁軌的集合,比如柱面k就是6個表面上磁軌k的集合。碟片中央會有一個可以旋轉的主軸(Spindle),使得碟片以固定的旋轉速率(Rotational Rate)旋轉,單位通常為RPM(Revolution Per Minute)

將磁碟能記錄的最大位數稱為最大容量(容量),主要由以下方面決定:

記錄密度(Recording Density):一英寸的磁軌中可以放入的位數磁軌密度(Track Density):從碟片中心出發,沿著半徑方向一英寸,包含多少磁軌面密度(Areal Density):記錄密度和磁軌密度的乘積

磁碟容量的計算公式為:

在面密度較低時,每個磁軌都被分成了相同的扇區,所以能夠劃分的扇區數由最內側磁軌能記錄的扇區數決定,這就使得外側的磁軌具有很多間隙。現代大容量磁碟採用多區記錄(Multiple Zone Recording)技術,將一組連續的柱面劃分成一個區,在同一個區中,每個柱面的每條磁軌都有相同數量的扇區,由該區中最內側的磁軌決定,由此使得外側的區能劃分成更多的扇區。

如上圖所示,磁碟通過一個連接在傳動臂(Actuator Arm)上的讀/寫頭(Read/Write Head)來進行讀寫,對於有多個盤面的磁碟,會用多個位於同一柱面上的垂直排列的讀/寫頭。對於扇區的訪問時間(Access Time)由以下幾部分構成:

尋道時間:為了讀取到目標扇區,會先控制傳動臂將讀/寫頭移動到該扇區對應的磁軌上,該時間稱為尋道時間。影響因素:依賴於讀/寫頭之前的位置,以及傳動臂在盤面上移動的速度。通常為3~9ms,最大時間可為20ms。- 旋轉時間:當讀/寫頭處於目標磁軌時,需要等待目標扇區的第一個位旋轉到讀/寫頭下。影響因素:目標扇區之前的位置,以及磁碟的旋轉速度。T_{max \, rotation} = \frac{1}{RPM} \cdot \frac{60s}{1min} ,平均旋轉時間為一半傳送時間:當讀/寫頭處於目標扇區的第一位時,就可以進行傳送了影響因素:磁碟旋轉速率,以及每條磁軌的扇區數$$ T_{max \, rotation} = \frac{1}{RPM} \cdot \frac{1}{平均每條磁軌的扇區數} \times \frac{60s}{1min} $$

可以發現:尋道時間和旋轉時間是主要影響部分,並且兩者大致相等,通常可以尋道時間乘2來估計訪問時間。

由於磁碟構造的複雜性,現代磁碟將其抽象為B個扇區大小的邏輯塊序列,編號為0,1,...,B-1,通過磁碟中的磁碟控制器來維護邏輯塊號和實際扇區之間的映射關係。為此需要通過磁碟控制器對磁碟進行格式化:

會用表示扇區的信息填寫在扇區之間的間隙表示出表面有故障的柱面,並且不進行使用在每個區會預留一組柱面作為備用,沒有映射為邏輯塊。當損壞時,磁碟控制器會將數據複製到備用柱面,則磁碟就可以繼續正常工作了。

當從磁碟讀取數據到主存,需要以下步驟:

作業系統發送一個命令到磁碟控制器,讀取某個邏輯塊號磁碟控制器上的固件執行快速表查找,得到該邏輯塊號翻譯成一個三元組(盤面,磁軌,扇區)磁碟控制器解釋三元組信息,將讀/寫頭移動到對應的扇區將讀取到的信息放到磁碟控制器的緩衝區中將緩衝區中的數據保存到主存中。

如上圖所示是一個總線結構實例。對於像圖形卡、滑鼠、鍵盤、監視器這類輸入/輸出設備,都是通過I/O總線連接到CPU和主存的,比如Intel的外圍設備互聯(Peripheral Component Interconnect,PCI)總線,在PCI模型中,系統中所有的設備共享總線,一個時刻只能有一臺設備訪問這些線路,目前PCI總線已被PCEe總線取代了。雖然I/O總線比系統總線和內存總線慢,但是能容納種類繁多的第三方I/O設備。

通用串行總線(Universal Serial Bus,USB)控制器:USB總線是一個廣泛使用的標準,連接許多外圍I/O設備,而USB控制器作為連接到USB總線的設備的中轉站。圖形卡(或適配器):包含硬體和軟體邏輯,負責CPU在顯示器上畫像素。主機總線適配器:用於將一個或多個磁碟連接到I/O總線,使用主機總線接口定義的通信協議,磁碟接口包括SCSI和SATA,通常SCSI磁碟比SATA磁碟速度更快更昂貴,且SCSI主機總線適配器可以支持多個磁碟驅動器,而SATA只能支持一個。網絡適配器:可以通過將適配器插入到主板上空的插槽,從而連接到I/O總線。

注意:系統總線和內存總線是與CPU相關的,而PCI總線這樣的I/O總線被設計成與底層CPU無關。

CPU會在地址空間中保留一塊地址用於與I/O設備通信,每個地址稱為I/O埠(I/O Port),而連接到總線的設備會被映射到一個或多個埠,則處理器可通過埠地址來訪問該I/O設備,該技術稱為內存映射I/O(Memory-mapped I/O)

假設磁碟控制器映射到埠0xa0,探討磁碟的讀取過程:

CPU會通過對地址0xa0執行三個存儲指令,將地址0xa0的內容保存到內存中,完成對磁碟的讀取。發送完指令後,由於磁碟讀取速度比CPU執行速度慢很多,所以CPU會先去執行其他工作。指令1:發送一個命令字,告訴磁碟發起一個Read指令2:指明應該讀取的邏輯塊號指令3:指明保存的內存地址磁碟控制器接收到Read命令後,會通過上述方法直接將磁碟內容傳送到主存中。這種設備可以自己執行讀寫總線事務而無需CPU幹涉的過程,稱為直接內存訪問(Direct Memory Access,DMA)。磁碟發送完數據後,會給CPU發送一個中斷信號,暫停CPU正在做的工作,然後將控制返回到CPU被中斷的地方。1.3 固態硬碟

固態硬碟(Solid State Disk,SSD)是一種基於快閃記憶體的存儲技術,插在I/O總線上標準硬碟插槽(通常為USB或SATA),處於磁碟和DRAM存儲器的中間點。從CPU的角度來看,SSD與磁碟完全相同,有相同的接口和包裝。它由快閃記憶體和快閃記憶體翻譯層(Flash Translation Layer)組成

快閃記憶體翻譯層是一個硬體/固件設備,用來將對邏輯塊的請求翻譯成對底層物理設備的訪問。快閃記憶體的基本屬性決定了SSD隨機讀寫的性能,通常由B個塊的序列組成,每個塊由P頁組成,頁作為數據的單位進行讀寫。通常頁大小為512位元組~4KB,塊中包含32~128頁,則塊的大小有16KB~512KB。

當對頁進行寫操作時,首先需要先對該頁所處的整個塊進行擦除。

以上是Intel SSD 730的性能,IOPS是每秒I/O操作數,吞吐量數量基於4KB塊的讀寫。我們可以發現隨機寫操作較慢,這是因為:

對頁進行寫操作時,通常需要花費較長時間來擦除塊,比訪問頁所需的時間慢了一個數量級當塊中包含其他數據時,會先將塊中帶有有效數據的頁複製到被擦出過的塊中,才能對那個塊進行擦除。在快閃記憶體翻譯層中實現了複雜的邏輯,試圖最小化這些重複的操作。

塊的擦除次數是有限的,當塊磨損後,就不能再使用了,快閃記憶體翻譯層中的平均磨損(Wear Leveling)邏輯會試圖將擦除平均到所有塊中,來最大化每個塊的壽命。

SSD的優缺點:

優點:由於快閃記憶體是半導體存儲器,沒有移動的部件,所以速度比磁碟更快且磨損小,能耗低缺點:SSD每字節比磁碟貴大約30倍,所以常用的存儲容量比磁碟小100倍左右。1.4 存儲技術趨勢

具有以下重要思想:

不同存儲技術有不同的價格和性能折中:從性能而言,SRAM>DRAM>SSD>磁碟,而從每字節造價而言,SRAM>DRAM>SSD>磁碟。不同存儲技術的價格和性能屬性以不同的速率變化著

從上一圖中可看出,DRAM主存和磁碟的性能滯後於CPU性能,訪問時間比單個處理器的周期時間慢很多,而SRAM的性能雖然也滯後於CPU性能,但是還保持增長,所以現代計算機會使用基於SRAM的高速緩存,來彌補CPU和內存之間的差距。

2 局部性

具有良好局部性(Locality)的程序,會傾向於引用最近引用過的數據項本身,或者引用最近引用過的數據項周圍的數據項。局部性主要具有兩種形式:

時間局部性(Temporal Locality):引用過的數據項在不久會被多次引用。空間局部性(Spatial Locality):引用過的數據項,在不久會引用附近的數據項。

從硬體到作業系統,再到應用程式,都利用了局部性。

硬體:在處理器和主存之間引入一個小而快速的高速緩存存儲器,來保存最近引用的指令和數據,從而提高對主存的訪問速度。作業系統:用主存來緩存虛擬空間中最近被引用的數據塊。應用程式:比如Web瀏覽器會將最近引用的文檔放入本地磁碟中,來緩存伺服器的數據。

有良好局部性的程序比局部性較差的程序運行更快。

想要分析一個程序的局部性是否好,可以依次分析程序中的每個變量,然後根據所有變量的時間局部性和空間局部性來總和判斷程序的局部性。

例1:

分析上述程序的局部性。對於變量sum,每一輪迭代都會引用一次,所以sum具有好的時間局部性,而sum是標量,所以沒有空間局部性。對於變量v,其數據在內存中的分布如圖b中所示,每一輪迭代都是引用不同的數據項,所以時間局部性較差,但是會按照內存存儲的順序依次引用數據項,所以空間局部性較好。 綜合來說,該程序具有較好的局部性。

並且由於程序是以指令形式保存在內存中的,而CPU會從內存中讀取指令,所以也可以考慮取指的局部性。由於該循環體內的指令是順序保存在內存中的,而CPU會按順序進行取指,所以具有良好的空間局部性,並且迭代多次會反覆讀取相同的指令,所以具有良好的時間局部性,所以該程序的局部性較好。

對於一個向量,如果每一輪引用的數據項之間在內存空間中相隔k,則稱該程序具有步長為k的引用模式(Stride-k Reference Pattern)。步長k越大,則每一輪引用的數據在內存中間隔很大,則空間局部性越差。

例2:

對於以上代碼,變量sum的時間局部性較好且不具有空間局部性,對於二維數組變量v,在內存中是按照行優先存儲的,而代碼中也是按照行優順序進行應用的,所以變量v具有步長為1的引用模式,所以具有較好的空間局部性,而時間局部性較差。總體來說,該程序具有良好的局部性。

例3:

上述代碼將變量v的引用順序變為了列優先,則根據v的內存存儲形式,變量v具有步長為N的引用模式,則時間局部性較差,且空間局部性也較差。總體來說,該程序的局部性較差。

例4:

我們需要判斷以上三個函數的局部性。首先根據結構體的定義可以得到結構體數組在內存中的存儲形式如下所示

則clear1函數的步長為1,具有良好的空間局部性;而clear2函數會在結構體中不同的欄位中反覆跳躍,空間局部性相對clear1差一些;而clear3函數會在相鄰兩個結構體中反覆跳躍,空間局部性相比clear2更差。

總體而言:

重複引用相同變量的程序具有良好的時間局部性考慮變量的內存存儲形式,判斷程序引用模式的步長,步長越大則空間局部性越差從取指角度而言,具有循環體則空間局部性和時間局部性較好,而且循環體越小、迭代次數越多,則局部性越好。3 存儲器層次結構

通過上面兩節,我們可以得到存儲技術和軟體的基本屬性

不同存儲技術的訪問時間相差較大,速度快的技術每字節的成本比速度慢的技術高,且容量小。並且CPU和主存之間的差距在變大。編寫良好的程序具有良好的局部性。

兩者存在一定的互補,由此可以得到一種組織存儲器系統的方法,存儲器層次結構(Memory Hierarchy)

如上圖所示是一種經典的存儲器層次結構,會使用基於SRAM的高速緩存存儲器來解決CPU和DRAM主存之間的鴻溝,通常還可以在DRAM主存和本地磁碟之間添加一層SSD,來彌補兩者之間的差距。通常還可以在本地磁碟下方添加一個本地磁帶,提供成本更低的存儲。

高速緩存(Cache)是一個小而快速的存儲設備,用來作為存儲在更大更慢設備中的數據對象的緩衝區域。而使用高速緩存的過程稱為緩存(Caching)

存儲器層次結構的中心思想是讓層次結構中的每一層來緩存低一層的數據對象,將第k層的更快更小的存儲設備作為第k 1層的更大更慢的存儲設備的緩存。

該結構之所以有效,是因為程序的局部性原理。相比於第k 1層的數據,程序會傾向於訪問存儲在第k層的數據。如果我們訪問第k 1層存儲的數據,我們會將其拷貝到第k層,因為根據局部性原理我們很有可能將再次訪問該數據,由此我們就能以第k層的訪問速度來訪問數據。而且因為我們不經常訪問第k 1層的數據,我們就可以使用速度更慢且更便宜的存儲設備。

上圖展示的是存儲器層次結構的基本緩存原理。每一層存儲器都會被劃分成連續的數據對象組塊,稱為塊(Block),每個塊都有一個唯一的地址或名字,並且通常塊的大小都是固定的。第k層作為第k 1層的緩存,數據會以塊大小作為傳送單元(Transfer Unit)在第k層和第k 1層之間來回賦值,使得第k層保存第k 1層塊的一個子集的副本。通常存儲器層次結構中較低層的設備的訪問時間較長,所以較低層中會使用較大的塊。

3.1 緩存命中

當程序需要第k 1層的某個數據對象d時,會先在第k層的塊中搜索d,如果d剛好緩存在第k層中,則成為緩存命中(Cache Hit),則該程序會直接從第k層中讀取d。根據存儲器層次結構,可以知道第k層的讀取速度更快,因此緩存命中會使得程序更快。

3.2 緩存不命

如果第k層沒有緩存數據對象d,則稱為緩存不命中(Cache Miss),則會從第k 1層中取出包含d的塊,然後第k層的緩存會執行某個放置策略(Placement Policy)來決定該塊要保存在第k層的什麼位置

來自第k 1層的任意塊能保存在第k層的任意塊中,如果第k層的緩存滿了,則會覆蓋現存的一個犧牲塊(Victim Block),稱為替換(Replacing)或驅逐(Evicting)這個犧牲塊,會根據替換策略(Replacement Policy)來決定要替換第k層的哪個塊:隨機替換策略:會隨機選擇一個犧牲塊最近最少被使用(LRU)替換策略:選擇最後被訪問的時間離現在最遠的塊

隨機放置塊會使得定位起來代價很高。

可以採用更嚴格的放置策略,將第k 1層的某個塊限制放置在第k層塊的一個小的子集中,比如第k 1層的第i個塊保存在第k層的i mod 4中。但是該放置策略會引起衝突不命中(Conflict Miss),此時緩衝區足夠大,但是由於需要的對象會反覆映射到同一個緩存塊,使得緩存一直不命中。此時就需要修改放置策略。

比較特殊的情況是第k層的緩存為空,那麼對於任意的數據對象的訪問都會不命中。空的緩存稱為冷緩存(Cold Cache),該不命中稱為強制性不命中(Compulsory Miss)或冷不命中(Cold Miss)

程序通常會按照一系列階段來運行,每個階段會訪問緩存塊的某個相對穩定不變的集合,則該集合稱為工作集(Working Set),如果工作集大小超過緩存大小,則緩存會出現容量不命中(Capacity Miss),這是由緩存太小導致的。

3.3 緩存管理

對於每層存儲器,都會有某種形式的邏輯來管理緩存:將緩存劃分成塊、在不同層之間傳遞塊、判斷緩存是否命中並進行處理。

編譯器管理寄存器文件,當寄存器文件中不含有數據時出現不明中,它會決定何時發射加載操作,以及確定用哪個寄存器來存放數據。SRAM高速緩存是DRAM主存的緩存,由內置在緩存中的硬體邏輯管理的。在有虛擬內存的系統中,DRAM主存是本地磁碟的緩存,由作業系統軟體和CPU上的地址翻譯硬體共同管理。在具有分布式文件系統的機器中,本地磁碟作為緩存,由運行在本地機器上的客戶端進行管理。

通過以上內容,就能解釋局部性好的程序的優勢:

時間局部性:當一個數據對象在第一次不命中被複製到緩存中時,我們希望程序的時間局部性好,則在不久的將來就能反覆在第k層訪問到該塊,使得程序運行更快。空間局部性:由於緩存中一個塊包含多個數據對象,我們希望程序的空間局部性好,就可以直接利用第k層的數據塊,避免再從第k 1層傳輸塊到第k層。,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了