相聯存儲器的定址
A. 請問前輩們相聯存儲器原理,有圖最好了。
相聯存儲器� 新客網 XKER.COM 2007-11-06 來源: 收藏本文相聯存儲器�
1.相聯存儲器的基本原理
� 相聯存儲器是指其中任一存儲項內容作為地址來存取的存儲器。選用來定址存儲器的子段叫做關鍵字。
存放在相聯存儲器中的項可以看成具有KEY,DATA這樣的格式。其中KEY是地址,DATA是被讀寫信息。
相聯存儲器的基本原理是把存儲單元所存內容的某一部分作為檢索項(即關鍵字項),去檢索該存儲器,
並將存儲器中與該檢索項符合的存儲單元內容進行讀出或寫入。
2.相聯存儲器的組成
� 相聯存儲器由存儲體、檢索寄存器、屏蔽寄存器、符合寄存器、比較線路、代碼寄存器、控制線路等
組成。
檢索寄存器:用來存放檢索字,其位數和相聯存儲器的存儲單元位數相等。�
屏蔽寄存器:用來存放屏蔽碼,其位數和檢索寄存位數相同。
符合寄存器:用來存放按檢索項內容檢索存儲體中與之符合的單元地址,其位數等於相聯存儲器
的存儲單元位數,每一位對應一個存儲單元,位的序數即為相聯存儲器的單元地址。
�比較線路:把檢索項和從存儲體中讀出的所有單元內容的相應位進行比較,如果有某個存儲單元
和檢索項符合,就把符合寄存器的相應位置「1」,表示該字已被檢索 。�
代碼寄存器:用來存放存儲體中讀出的代碼,或者存放向存儲體中寫入的代碼。
存儲體:由高速半導體存儲器構成,以求快速存取。�
在計算機系統中,相聯存儲器主要用於虛擬存儲器中存放分段表、頁表和快表;在高速緩沖存儲器
中,相聯存儲器作為存放cache的行地址之用。這是因為,在這兩種應用中,都需要快速查找。
B. 相聯存儲器的原理
寫入信息時按順序寫入,不需要地址。
讀出時,要求中央處理單元給出一個相聯關鍵字,用它和存儲器中所有單元中的一部分信息進行比較,若它們相等,則將此單元中餘下的信息讀出。這是實現存儲器並行操作的一種有效途徑,特別適合於信息的檢索和更新。
考慮表3-1所示的表格,假設它存放在計算機的主存儲器中。該表格由五個記錄所組成,每個記錄包含四個子段:職工號、姓名、出生年月和工資數。
在表3-1中,信息的存貯與檢索問題往往涉及到訪問一個記錄中的某個子段,如「李四的出生年月是什麼時間?」「職工號是5199109的人的姓名是什麼?」這類問題如果採用傳統的隨機存儲器,那麼一定要確切地指出「李四」的那一項在表格中的物理地址(n+1)與職工號「5199109」和姓名「李四」沒有邏輯上的關系,因而用常規方法尋找上述答案時,增加了程序的復雜性。
表3-1 存放在存儲器中的一張表格 物理地址 職工號 姓名 出生年月 工資數 n
n+1
n+2
n+3
n+4 5697102
5199109
6296311
7100212
6211403 張三
李四
王五
趙八
吳九 1975.12
1960.09
1980.05
1953.06
1975.059 2300
4000
1750
4200
2500 但是如果我們選擇記錄的一個子段作為地址來訪問存儲器時,那麼會明顯地帶來好處,例如,我們選職工號5199109作為地址來訪問存儲器,那麼很快就能知道5199109號是「李四」,「1960年09月」生,工資數為「4000元」。
上述表格的問題採用相聯存儲器結構,就能圓滿得到解決。一般而言,相聯存儲器是指其中任一存儲項都可以直接用該項的內容作為地址來存取的存儲器。選用來定址存儲器的子段叫做關鍵字,簡稱為鍵。這樣,存放在相聯存儲器的項中的項可以看成具有下列格式:
KEY,DATA
其中鍵KEY是地址,而數據DATA是讀寫信息。
由此可知,相聯存儲器的基本原理是把存儲單元所存內容的某一部分作為檢索項(即關鍵字項),去檢索該存儲器,並將存儲器中與該檢索項符合的存儲單元內容進行讀出或寫入。
C. 存儲器定址方式有哪些
存儲器定址可進一步分為直接定址、寄存器間接定址、寄存器相對定址、基址變址定址、相對基址變址定址
D. 計算機組成原理(三)存儲系統
輔存中的數據要調入主存後才能被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速度不匹配的問題