關聯存儲器(又譯作相聯存儲器)也稱為按內容訪問存儲器或簡稱為TLB;它是一種不根據地址而是根據存儲內容來進行存取的存儲器,可以實現快速地查找快表。
原理:
寫入信息時按順序寫入,不需要地址。
讀出時,要求中央處理單元給出一個相聯關鍵字,用它和存儲器中所有單元中的一部分信息進行比較,若它們相等,則將此單元中餘下的信息讀出。這是實現存儲器並行操作的一種有效途徑,特別適合於信息的檢索和更新。
考慮表3-1所示的表格,假設它存放在計算機的主存儲器中。該表格由五個記錄所組成,每個記錄包含四個子段:職工號、姓名、出生年月和工資數。
在表3-1中,信息的存貯與檢索問題往往涉及到訪問一個記錄中的某個子段,如「李四的出生年月是什麼時間?」「職工號是5199109的人的姓名是什麼?」這類問題如果採用傳統的隨機存儲器,那麼一定要確切地指出「李四」的那一項在表格中的物理地址(n+1)與職工號「5199109」和姓名「李四」沒有邏輯上的關系,因而用常規方法尋找上述答案時,增加了程序的復雜性。
但是如果我們選擇記錄的一個子段作為地址來訪問存儲器時,那麼會明顯地帶來好處,例如,我們選職工號5199109作為地址來訪問存儲器,那麼很快就能知道5199109號是「李四」,「1960年09月」生,工資數為「4000元」。
上述表格的問題採用相聯存儲器結構,就能圓滿得到解決。一般而言,相聯存儲器是指其中任一存儲項都可以直接用該項的內容作為地址來存取的存儲器。選用來定址存儲器的子段叫做關鍵字,簡稱為鍵。這樣,存放在相聯存儲器的項中的項可以看成具有下列格式:
KEY,DATA
其中鍵KEY是地址,而數據DATA是讀寫信息。
由此可知,相聯存儲器的基本原理是把存儲單元所存內容的某一部分作為檢索項(即關鍵字項),去檢索該存儲器,並將存儲器中與該檢索項符合的存儲單元內容進行讀出或寫入。
B. 計算機組成原理(三)存儲系統
輔存中的數據要調入主存後才能被CPU訪問
按存儲介質,存儲器可分為磁表面存儲器(磁碟、磁帶)、磁心存儲器半導體存儲器(MOS型存儲器、雙極型存儲器)和光存儲器(光碟)。
隨機存取存儲器(RAM):讀寫任何一個存儲單元所需時間都相同,與存儲單元所在的物理位置無關,如內存條等
順序存取存儲器(SAM):讀寫一個存儲單元所需時間取決於存儲單元所在的物理位置,如磁碟等
直接存取存儲器(DAM):既有隨機存取特性,也有順序存取特性。先直接選取信息所在區域,然後按順序方式存取。如硬碟等
相聯存儲器,即可以按內容訪問的存儲器(CAM)可以按照內容檢索到存儲位置進行讀寫,「快表」就是一種相聯存儲器
讀寫存儲器—即可讀、也可寫(如:磁碟、內存、Cache)
只讀存儲器—只能讀,不能寫(如:實體音樂專輯通常採用CD-ROM,實體電影採用藍光光碟,BIOS通常寫在ROM中)
斷電後,存儲信息消失的存儲器——易失性存儲器(主存、Cache)
斷電後,存儲信息依然保持的存儲器——非易失性存儲器(磁碟、光碟)
信息讀出後,原存儲信息被破壞——破壞性讀出(如DRAM晶元,讀出數據後要進行重寫)
信息讀出後,原存儲信息不被破壞——非破壞性讀出(如SRAM晶元、磁碟、光碟)
存儲器晶元的基本電路如下
封裝後如下圖所示
圖中的每條線都會對應一個金屬引腳,另外還有供電引腳、接地引腳,故可以由此求引腳數目
n位地址對應2 n 個存儲單元
假如有8k×8位的存儲晶元,即
現代計算機通常按位元組編址,即每個位元組對應一個地址
但也支持按位元組定址、按字定址、按半字定址、按雙字定址
(Dynamic Random Access Memory,DRAM)即動態RAM,使用柵極電容存儲信息
(Static Random Access Memory,SRAM)即靜態RAM,使用雙穩態觸發器存儲信息
DRAM用於主存、SRAM用於Cache,兩者都屬於易失性存儲器
簡單模型下需要有 根選通線,而行列地址下僅需 根選通線
ROM晶元具有非易失性,斷電後數據不會丟失
主板上的BIOS晶元(ROM),存儲了「自舉裝入程序」,負責引導裝入操作系統(開機)。邏輯上,主存由 輔存RAM+ROM組成,且二者常統一編址
位擴展的連接方式是將多個存儲晶元的地址端、片選端和讀寫控制端相應並聯,數據端分別引出。
字擴展是指增加存儲器中字的數量,而位數不變。字擴展將晶元的地址線、數據線、讀寫控制線相應並聯,而由片選信號來區分各晶元的地址范圍。
實際上,存儲器往往需要同時擴充字和位。字位同時擴展是指既增加存儲字的數量,又增加存儲字長。
兩個埠對同一主存操作有以下4種情況:
當出現(3)(4)時,置「忙」信號為0,由判斷邏輯決定暫時關閉一個埠(即被延時),未被關閉的埠正常訪問,被關閉的埠延長一個很短的時間段後再訪問。
多體並行存儲器由多體模塊組成。每個模塊都有相同的容量和存取速度,各模塊都有獨立的讀寫控制電路、地址寄存器和數據寄存器。它們既能並行工作,又能交義工作。多體並行存儲器分為高位交叉編址(順序方式)和低位交叉編址(交叉方式)兩種.
①高位交叉編址
②低位交叉編址
採用「流水線」的方式並行存取(宏觀上並行,微觀上串列),連續取n個存儲字耗時可縮短為
宏觀上,一個存儲周期內,m體交叉存儲器可以提供的數據量為單個模塊的m倍。存取周期為T,存取時間/匯流排傳輸周期為r,為了使流水線不間斷,應保證模塊數
單體多字系統的特點是存儲器中只有一個存儲體,每個存儲單元存儲m個字,匯流排寬度也為m個字。一次並行讀出m個字,地址必須順序排列並處於同一存儲單元。
缺點:每次只能同時取m個字,不能單獨取其中某個字;指令和數據在主存內必須是連續存放的
為便於Cache 和主存之間交換信息,Cache 和主存都被劃分為相等的塊,Cache 塊又稱Cache 行,每塊由若干位元組組成。塊的長度稱為塊長(Cache 行長)。由於Cache 的容量遠小於主存的容盤,所以Cache中的塊數要遠少於主存中的塊數,它僅保存主存中最活躍的若干塊的副本。因此 Cache 按照某種策略,預測CPU在未來一段時間內欲訪存的數據,將其裝入Cache.
將某些主存塊復制到Cache中,緩和CPU與主存之間的速度矛盾
CPU欲訪問的信息已在Cache中的比率稱為命中率H。先訪問Cache,若Cache未命中再訪問主存,系統的平均訪問時間t 為
同時訪問Cache和主存,若Cache命中則立即停止訪問主存系統的平均訪問時間t 為
空間局部性:在最近的未來要用到的信息(指令和數據),很可能與現在正在使用的信息在存儲空間上是鄰近的
時間局部性:在最近的未來要用到的信息,很可能是現在正在使用的信息
基於局部性原理,不難想到,可以把CPU目前訪問的地址「周圍」的部分數據放到Cache中
直接映射方式不需要考慮替換演算法,僅全相聯映射和組相聯映射需要考慮
①隨機演算法(RAND):若Cache已滿,則隨機選擇一塊替換。實現簡單,但完全沒考慮局部性原理,命中率低,實際效果很不穩定
②先進先出演算法(FIFO):若Cache已滿,則替換最先被調入Cache的塊。實現簡單,依然沒考慮局部性原理
③近期最少使用演算法(LRU):為每一個Cache塊設置一個「計數器」,用於記錄每個Cache塊已經有多久沒被訪問了。當Cache滿後替換「計數器」最大的.基於「局部性原理」,LRU演算法的實際運行效果優秀,Cache命中率高。
④最不經常使用演算法(LFU):為每一個Cache塊設置一個「計數器」,用於記錄每個Cache塊被訪問過幾次。當Cache滿後替換「計數器」最小的.並沒有很好地遵循局部性原理,因此實際運行效果不如LRU
現代計算機常採用多級Cache,各級Cache之間常採用「全寫法+非寫分配法」;Cache-主存之間常採用「寫回法+寫分配法」
寫回法(write-back):當CPU對Cache寫命中時,只修改Cache的內容,而不立即寫入主存,只有當此塊被換出時才寫回主存。減少了訪存次數,但存在數據不一致的隱患。
全寫法(寫直通法,write-through):當CPU對Cache寫命中時,必須把數據同時寫入Cache和主存,一般使用寫緩沖(write buffer)。使用寫緩沖,CPU寫的速度很快,若寫操作不頻繁,則效果很好。若寫操作很頻繁,可能會因為寫緩沖飽和而發生阻塞訪存次數增加,速度變慢,但更能保證數據一致性
寫分配法(write-allocate):當CPU對Cache寫不命中時,把主存中的塊調入Cache,在Cache中修改。通常搭配寫回法使用。
非寫分配法(not-write-allocate):當CPU對Cache寫不命中時只寫入主存,不調入Cache。搭配全寫法使用。
頁式存儲系統:一個程序(進程)在邏輯上被分為若干個大小相等的「頁面」, 「頁面」大小與「塊」的大小相同 。每個頁面可以離散地放入不同的主存塊中。CPU執行的機器指令中,使用的是「邏輯地址」,因此需要通「頁表」將邏輯地址轉為物理地址。頁表的作用:記錄了每個邏輯頁面存放在哪個主存塊中
邏輯地址(虛地址):程序員視角看到的地址
物理地址(實地址):實際在主存中的地址
快表是一種「相聯存儲器」,可以按內容尋訪,表中存儲的是頁表項的副本;Cache中存儲的是主存塊的副本
地址映射表中每一行都有對應的標記項
主存-輔存:實現虛擬存儲系統,解決了主存容量不夠的問題
Cache-主存:解決了主存與CPU速度不匹配的問題
C. 計算機存儲器的分類
計算機存儲器的分類如下:
1、按存儲介質可以分類為半導體存儲器、磁表面存儲器、光存儲器。
2、按存儲器的讀寫功能可以分類為只讀存儲器(ROM)、 隨機讀寫存儲器(RAM)。
3、按信息的可保存性可以分類為非永久記憶的存儲器、永久記憶性存儲器。
4、按在計算機系統中的作用可以分類為主存儲器(內存)、輔助存儲器(外存儲器)、緩沖存儲器。
5、按功能/容量/速度/所在位置可以分類為寄存器、高速緩存、內存儲器、外存儲器。
6、工作性質/存取方式可以分類為隨機存取存儲器、順序存取存儲器、直接存取存儲器、相聯存儲器。
計算機存儲器的類型特點
計算機存儲器一類設在主機中的內存儲器,也叫主存儲器,用於存放當前運行的程序和程序所用的數據,屬於臨時存儲器。主存儲器是與CPU直接交換數據的內部存儲器。它可以隨時讀寫(刷新時除外),而且速度很快,通常作為操作系統或其他正在運行中的程序的臨時數據存儲介質。
另一類是屬於計算機外部設備的存儲器,叫外部存儲器(簡稱外存),也叫輔助存儲器。外存屬於永久性存儲器,存放著暫時不用的數據和程序。
D. 操作系統內存的連續與非連續分配管理方式
1.單一連續分配
內存分為系統區和用戶區,系統區僅供操作系統使用,通常在低地址部分,用戶區為用戶提供
優點:
無須進行內存保護,不會出現越界異常
實現簡單,無外部碎片,採用覆蓋技術,不需要額外技術支持
缺點:
只適用於單用戶,單任務的操作系統
存在內部碎片,存儲器利用率低
2.固定分區分配
種類:
分區大小相等:用一台計算機去控制多個相同對象的場合,缺乏靈活性
分區大小不等:劃分為多個較小的分區,適量的中等分區和少量的大分區
優點:適用於多道程序的存儲,無外部碎片
缺點:
程序太大,無法進入任何一個分區
主存利用率低,存在內部碎片
不能實現多進程共享一個主存區
3.動態分區分配
在進程裝入內存的時候,根據內存的大小動態的建立分區
優點:分區大小可以根據實際情況進行分配
缺點:存在外部碎片,最後導致主存利用率下降(採用緊湊技術可以緩解這種缺陷)
動態分配演算法:
首次適應演算法:空閑分區按照地址遞增的順序進行查找,找到第一個滿足要求的分區進行分配
優點:綜合看性能最好。演算法開銷最小,回首分區後一般不需要對空閑分區隊列進行重新排序
最佳適應演算法:
按照容量遞增的順序進行查找,找到第一個滿足要求的分區進行分配
優點:可以盡可能多地留下大片的空閑去
缺點:性能較差,產生最多的外部碎片;回收分區後可能需要對空閑分區隊列進行重新排序
最壞適應演算法(最大適應演算法):
空閑分區按照容量遞減的次序進行查找,第一個滿足條件的進行分配
優點:可以減少難以利用的小碎片
缺點:導致很快沒有較大的內存, 性能很差;不利於大進程,演算法開銷大
鄰近適應演算法(首次適應演算法):
分配內存時從上次查找結束的位置開始繼續查找
優點:演算法開銷小
缺點:會使高地址的大分區也被用完
4.非連續分配管理方式
允許一個程序分散的裝入不相鄰的內存分區
5.基本分頁存儲的管理方式
(1)設計思想
將主存空間劃分為大小相等且固定的塊,塊相對較小,作為主存的基本單位,進程以塊為單位進行空間申請。
分頁存儲與固定分區技術很像,但是其分頁相對於分區又很小,分頁管理不會產生外部碎片,產生的內部碎片也非常小
(2)分頁存儲的基本概念
頁面和頁面大小:進程中的塊=頁;內存中的塊=頁框(頁幀);進程申請主存空間,為每個頁面分配主存中可用頁框,即頁與頁框一一對應
頁面大小要適中:頁面太小:進程頁面數過多,頁表過程,增加內存佔用,降低硬體地址轉換效率;頁面太大:頁內碎片過多,降低內存利用率
地址結構:頁號(有多少頁的編號)+頁內偏移(頁內存了多少東西)
頁表:為了便於在內存中找到進程的每個頁面對應的物理塊,系統為每個進程建立一張頁表,記錄頁面在內存中對應的物理塊號,頁表一般放在內存中
頁表項:頁號+物理內存中的塊號(不要與地址結構搞混); 頁表項的物理內存塊號+地址結構中的頁內偏移=物理地址
(3)基本地址變換機構
計算方式:
頁號P=A/L,頁內偏移量W=A%L
比較頁號P和頁表長度M,若P>=M產生越界中斷
頁表中頁號P對應的頁表項地址=頁表地址F+頁號P 頁表項長度 取出該頁表項內容b
計算E=b L+W 使用E去訪問內存
頁表項大小的設計應當盡量一頁正好能裝下所有的頁表項
分頁管理存在的問題:地址變換過程必須足夠快,否則訪存速率會降低;頁表不能太大,否則會降低內存利用率。
組成:設置一個頁表寄存器(PTR),存放頁表在內存中的起始地址F和頁表長度M
頁表的始址和頁表長度放在進程式控制制塊(PCB)中
(4)具有塊表的地址變換機構
可優化方向:如果頁表放在內存中,取地址訪問一次內存,按照地址取出數據訪問一次內存,共需要兩次訪問內存
優化:地址變換機構中增加一個具有並行查找能力的告訴緩沖寄存器(塊表),又稱為相聯存儲器(TLB);相聯存儲器既可以按照地址查找也可以按照內容查找
訪問一個邏輯地址的訪問次數:
基本地址變換機構,兩次緩存。
具有塊表的地址變換機構,快表命中,只需一次訪存,快表未命中,需要兩次訪存
變換過程:
CPU給出邏輯地址後,先查詢快表中是否命中
若快表命中,直接從快表中該頁對應的頁框號,與頁內偏移量拼接成物理地址
若快表不命中,再按照正常方式從頁表中查詢相應頁表項,並將該頁表項存入快表中(按照一定策略)
(5)兩級頁表
如果頁數過多,就會導致頁表也過多,那麼我們可以考慮設置一個用來儲存頁表的頁表
邏輯地址空間格式=一級頁號+二級頁號+頁內偏移
設計多集頁表的時候,最後一定要保證頂級頁表一定只有一個
建立多級頁表的目的在於建立索引,不必浪費主存空間去儲存無用的頁表項,也不用盲目式的查詢頁表項
E. 相聯存貯器是按( )進行定址的存貯器
C
關聯存儲器(相聯存儲器),是一種不根據地址而是根據存儲內容來進行存取的存儲器,可以實現快速地查找塊表。既可以按照地址定址也可以按照內容定址(通常是某些欄位),為了與傳統寄存器作區別,稱為按內容定址的存儲器。
中文名相聯存儲器外文名Content Addressed Memory也 稱為按內容訪問存儲器
F. 相聯存儲器是什麼組成原理裡面的相聯是什麼
相聯存儲器的定義介紹可見網路:
http://ke..com/link?url=-flumWFF1OGCxB7aJ7hNINv0vCb5k6
相聯存儲器可以用來作虛擬內存頁表訪問時的TLB快表。
下面是快表的介紹:
根據功能可以譯為快表,直譯可以翻譯為旁路轉換緩沖,也可以把它理解成頁表緩沖。裡面存放的是一些頁表文件(虛擬地址到物理地址的轉換表)。當處理器要在主內定址時,不是直接在內存的物理地址里查找的,而是通過一組虛擬地址轉換到主內存的物理地址,頁表文件(PTE page table entry 頁表條目存放在內存中)就是負責將虛擬內存地址翻譯成實際的物理內存地址,TLB中存放了部分PTE頁表的緩存。而CPU定址時會優先在TLB中進行定址。TLB是在MMU中包括的一段小的緩存(MMU memory management unit 存儲器管理單元,是CPU晶元上的一個專用硬體)。處理器的性能就和定址的命中率有很大的關系。
如果TLB中正好存放著所需的頁表,則稱為TLB命中(TLB Hit);如果TLB中沒有所需的頁表,則稱為TLB失敗(TLB Miss)。如果快表命中的話,實現虛擬地址到物理地址的映射可以少訪問一次內存。
如果命中的話,就可以直接將虛擬地址轉換為物理地址,如果不命中,則必須在PTE頁表中繼續查找,並將找到的PTE存放到TLB中,覆蓋已經存在的一個條目。
G. 存儲器分類及各自特點有哪些
存儲器分類依據不同的特性有多種分類方法。
(1)按工作性質/存取方式分類
•隨機存取存儲器 (RAM) -每個單元讀寫時間一樣,且與各單元所在位置無關。如:內存。
•順序存取存儲器 (SAM) -數據按順序從存儲載體的始端讀出或寫入,因而存取時間的長短與信息所在位置有關。例如:磁帶。
•直接存取存儲器 (DAM) -直接定位到讀寫數據塊,在讀寫數據塊時按順序進行。如磁碟。
•相聯存儲器 -按內容檢索到存儲位置進行讀寫。例如:快表。
(2)按存儲介質分類
半導體存儲器:雙極型,靜態MOS型,動態MOS型
磁表面存儲器:磁碟、磁帶
光存儲器:CD,CD-ROM,DVD
(3)按信息的可更改性分類
讀寫存儲器:可讀可寫
只讀存儲器:只能讀不能寫
(4)按斷電後信息的可保存性分類
非易失(不揮發)性存儲器:信息可一直保留, 不需電源維持。
易失(揮發)性存儲器
(5)按功能/容量/速度/所在位置分類
•寄存器 -封裝在CPU內,用於存放當前正在執行的指令和使用的數據 -用觸發器實現,速度快,容量小(幾~幾十個)
•高速緩存-位於CPU內部或附近,用來存放當前要執行的局部程序段和數據 -用SRAM實現,速度可與CPU匹配,容量小(幾MB)
•內存儲器 -位於CPU之外,用來存放已被啟動的程序及所用的數據 -用DRAM實現,速度較快,容量較大(幾GB)
•外存儲器-位於主機之外,用來存放暫不運行的程序、數據或存檔文件 -用磁表面或光存儲器實現,容量大而速度慢