『壹』 計算機的存儲系統中將主存地址定位到cache上的過程叫做地址映射對嗎
對。
主存與cache的地址映射:與主存相比,cache的容量很小,它保存的內容只是主存內容的一個子集,因此,把主存地址定位到cache中,稱為地址映射。
『貳』 在程序運行時,高速緩沖存儲器與主存的地址映射是由什麼實現
高速緩沖存儲器(Cache)實際上是為了把由DRAM組成的大容量內存儲器都看做是高速存儲器而設置的小容量局部存儲器,一般由高速SRAM構成。這種局部存儲器是面向CPU的,引入它是為減小或消除CPU與內存之間的速度差異對系統性能帶來的影響。Cache 通常保存著一份內存儲器中部分內容的副本(拷貝),該內容副本是最近曾被CPU使用過的數據和程序代碼。Cache的有效性是利用了程序對存儲器的訪問在時間上和空間上所具有的局部區域性,即對大多數程序來說,在某個時間片內會集中重復地訪問某一個特定的區域。如PUSH/POP指令的操作都是在棧頂順序執行,變數會重復使用,以及子程序會反復調用等,就是這種局部區域性的實際例證。因此,如果針對某個特定的時間片,用連接在局部匯流排上的Cache代替低速大容量的內存儲器,作為CPU集中重復訪問的區域,系統的性能就會明顯提高。
系統開機或復位時,Cache 中無任何內容。當CPU送出一組地址去訪問內存儲器時,訪問的存儲器的內容才被同時「拷貝」到Cache中。此後,每當CPU訪問存儲器時,Cache 控制器要檢查CPU送出的地址,判斷CPU要訪問的地址單元是否在Cache 中。若在,稱為Cache 命中,CPU可用極快的速度對它進行讀/寫操作;若不在,則稱為Cache未命中,這時就需要從內存中訪問,並把與本次訪問相鄰近的存儲區內容復制到Cache 中。未命中時對內存訪問可能比訪問無Cache 的內存要插入更多的等待周期,反而會降低系統的效率。而程序中的調用和跳轉等指令,會造成非區域性操作,則會使命中率降低。因此,提高命中率是Cache 設計的主要目標。
『叄』 有關操作系統原理中CACHE與主存的地址映象問題.
·地址映像
所謂映象問題是指如何確定Cache中的內容是主存中的哪一部分的拷貝,即必須應用某種函數把主存地址映象到Cache中定位,也稱地址映象。當信息按這種方式裝入Cache中後,執行程序時,應將主存地址變換為Cache地址,這個變換過程叫作地址變換。地址映象方式通常採用直接映象、全相聯映象、組相聯映象三種。
1.直接映象
每個主存地址映像到Cache中的一個指定地址的方式,稱為直接映象方式。在直接映象方式下,主存中存儲單元的數據只可調入Cache中的一個位置,如果主存中另一個存儲單元的數據也要調入該位置則將發生沖突。地址映像的方法一般是將主存空間按Cache的尺寸分區,每區內相同的塊號映像到Cache中相同的塊位置。一般地,Cache被分為2N塊,主存被分為同樣大小的2M塊,主存與Cache中塊的對應關系可用如下映像函數表示:j = i mod 2N。式中,j是Cache中的塊號,i是主存中的塊號。
直接映象是一種最簡單的地址映像方式,它的地址變換速度快,而且不涉及其他兩種映像方式中的替換策略問題。但是這種方式的塊沖突概率較高,當稱序往返訪問兩個相互沖突的塊中的數據時,Cache的命中率將急劇下降,因為這時即使Cache中有其他空閑塊,也因為固定的地址映像關系而無法應用。
2.全相聯映象
主存中的每一個字塊可映像到Cache任何一個字塊位置上,這種方式稱為全相聯映像。這種方式只有當Cache中的塊全部裝滿後才會出現塊沖突,所以塊沖突的概率低,可達到很高的Cache命中率;但實現很復雜。當訪問一個塊中的數據時,塊地址要與Cache塊表中的所有地址標記進行比較已確定是否命中。在數據塊調入時存在著一個比較復雜的替換問題,即決定將數據塊調入Cache中什麼位置,將Cache中那一塊數據調出主存。為了達到較高的速度,全部比較和替換都要用硬體實現。
3.組相聯映象
組相聯映象方式是直接映象和全相聯映象的一種折衷方案。這種方法將存儲空間分為若干組,各組之間是直接映像,而組內各塊之間則是全相聯映像。它是上述兩種映像方式的一般形式,如果組的大小為1,即Cache空間分為2N組,就變為直接映像;如果組的大小為Cache整個的尺寸,就變為了全相聯映像。組相聯方式在判斷塊命中及替換演算法上都要比全相聯方式簡單,塊沖突的概率比直接映像的低,其命中率也介於直接映像和全相聯映像方式之間。
·替換策略和一致性問題的處理方法
Cache和存儲器一樣具有兩種基本操作,即讀操作和寫操作。
當CPU發出讀操作命令時,根據它產生的主存地址分為兩種情形:一種是需要的數據已在Cache中,那麼只需直接訪問Cache,從對應單元中讀取信息到數據匯流排;另一種是需要的數據尚未裝入Cache,CPU需從主存中讀取信息的同時,Cache替換部件把該地址所在的那塊存儲內容從主存拷貝到Cache中;若Cache中相應位置已被字塊占滿,就必須去掉舊的字塊。常見的替換策略有兩種:
1.先進先出策略(FIFO)FIFO(First In First Out)策略總是把最先調入的Cache字塊替換出去,它不需要隨時記錄各個字塊的使用情況,較容易實現;缺點是經常使用的塊,如一個包含循環程序的塊也可能由於它是最早的塊而被替換掉。
2.最近最少使用策略(LRU)LRU(Least Recently Used)策略是把當前近期Cache中使用次數最少的那塊信息塊替換出去,這種替換演算法需要隨時記錄Cache中字塊的使用情況。LRU的平均命中率比FIFO高,在組相聯映像方式中,當分組容量加大時,LRU的命中率也會提高。
當CPU發出寫操作命令時,也要根據它產生的主存地址分為兩種情形:一種是不命中時,只向主存寫入信息,不必同時把這個地址單元所在的整塊內容調入Cache中;另一種是命中時,這時會遇到如何保持Cache與主存的一致性問題,通常有三種處理方式:
1.直寫式(write through)即CPU在向Cache寫入數據的同時,也把數據寫入主存以保證Cache和主存中相應單元數據的一致性,其特點是簡單可靠,但由於CPU每次更新時都要對主存寫入,速度必然受影響。
2.緩寫式(post write)即CPU在更新Cache時不直接更新主存中的數據,而是把更新的數據送入一個緩存器暫存,在適當的時候再把緩存器中的內容寫入主存。在這種方式下,CPU不必等待主存寫入而造成的時延,在一定程度上提高了速度,但由於緩存器只有有限的容量,只能鎖存一次寫入的數據,如果是連續寫入,CPU仍需要等待。
3.回寫式(write back)即CPU只向Cache寫入,並用標記加以註明,直到Cache中被寫過的塊要被進入的信息塊取代時,才一次寫入主存。這種方式考慮到寫入的往往是中間結果,每次寫入主存速度慢而且不必要。其特點是速度快,避免了不必要的冗餘寫操作,但結構上較復雜。
此外,還有一種設置不可Cache區(Non-cacheable Block)的方式,即在主存中開辟一塊區域,該區域中的數據不受Cache控制器的管理,不能調入Cache,CPU只能直接讀寫該區域的內容。由於該區域不與Cache發生關系,也就不存在數據不一致性問題。目前微機系統的BIOS設置程序大多允許用戶設置不可Cache區的首地址和大小。
『肆』 256mb為什麼是28位地址
1.主存中存儲單元地址的分配
例:對24位地址線的主存而言,按位元組定址的范圍是16M,而對於按字定址需要觀察
即每一個存儲字包含幾個獨立定址的位元組,若包含4個,則按字定址為4M,若包含兩個,則按定址為8M
2.主存的技術指標
主存的主要技術指標是存儲容量和存儲速度
(1)存儲容量
存儲容量=存儲單元個數*存儲字長
也可以用位元組總數來表示(1位元組=8字長)
存儲容量=存儲單元個數*存儲字長/8
例:某機存儲容量為256MB,則按位元組定址的地址線位數應對應28位
(2)存儲速度
存儲速度由存取時間和存儲周期表示
存儲時間是指啟動一次存儲器操作(讀或寫)到完成該操作所需的全部時間
存儲周期是指存儲器進行連續兩次獨立的存儲器操作(如連續兩次讀操作)所需的最小間隔時間
(3)存儲器帶寬
它表示單位時間內存儲器存取的信息量,單位可用字/秒或位元組/秒或位/秒1
1ns=10-9s
為了提高存儲器的帶寬,可以採用一下措施
1.縮短存取周期 2.增加存儲字長,使每個存儲儲周期可讀/寫更多的二進制位數 3.增加存儲體
3.Cache-主存地址映射
cache的作用:解決CPU和主存速度不匹配的問題
不能將Cache的容量擴大取代主存,原因是(1)Cache容量越大,成本越大,難以滿足人們追求價格的要求
(2)如果取消主存,當CPU訪問Cache失敗時,需要將輔存的內容調入Cache再由CPU訪問,造成CPU等待時間太長,損失更大。
(1)直接映射
每個主存塊只與一個緩存塊相對應
一個緩存塊對應若干個主存塊
缺點:不夠靈活,每個主存塊只能固定地對應某個緩存塊,即使緩存內還空著許多位置也不能佔用,使緩存的存儲空間得不到充分地利用
(2)全相連映射
允許主存中每一字塊映射到Cache中的任何一塊位置上
缺點:這種方式所需的邏輯電路甚多,成本較高,實際的Cache還要採用各種措施來減少地址的比較次數
(3)組相聯映射
(4)命中率
h=Nc/Nc+Nm
Nc為訪問cache的總命中次數,Nm為訪問主存的總次數
(5)訪問效率
例:
假設主存容量為512KB,Cache容量為4KB,每個字塊為16個字,每個字32位。
(1)Cache地址有多少位?可容納多少塊
根據1K=2^10B 1M=2^10K 4K=2^12
『伍』 什麼是字塊內地址什麼是主存塊地址什麼是緩存塊地址什麼是組地址
字塊內地址: 一個塊含有幾個字,數據位於第幾個字就是字塊內地止。
主存塊地址:將主存分塊存儲,位於第幾塊就是主存塊地址。
緩存塊地址:將cache分塊存儲,位於第幾塊就是主存塊地址。
組地址:將cache的塊分組,位於第幾組就是組地址。
具體關系如圖所示:
(5)地址映射主存和緩存擴展閱讀:
cache(緩存)與主存映射有三種映射:
全相聯映射:主存的一塊可以映射到cache的任意一行中。
直接相聯映射 :根據cache的大小將主存劃分為若干個區,每個區中的塊與cache中的行一一對應。主存的一塊只能存放到cache的某一特定行中。
組相聯映射:
1、首先將cache的劃分為若干組(U組),每組有V行(稱為V路組相聯)。
2、主存按每U塊劃分為一組,每組有U塊。
3、主存的第j塊按模U映射到cache的第i組中的任意一行。
4、組間直接映射,組內全相聯映射
參考資料:網路-塊映射策略
『陸』 cache內存的地址映射主要有幾種方式
cache內存的地址映射主要有以下三種方式:x0dx0a一、直接映像:x0dx0a指主存的一個字塊只能映像到Cache的一個准確確定的字塊中。x0dx0a特點:主存的字塊只可以和固定的Cache字塊對應,方式直接,利用率低。x0dx0ax0dx0a二、全相聯映像:x0dx0ax0dx0a全相聯映射是指主存中任意一個塊都可以映射到Cache中任意一個塊的方式,也就是說,當主存中的某一塊需調入Cache時,可根據當時Cache的塊佔用或分配情況,選擇一個塊給主存塊存儲,所選的Cache塊可以是Cache中的任意一個塊。x0dx0a特點:貯存中的字塊可以和Cache的任何字塊對應,利用率高,方式靈活,標記位較長,使用成本太高。x0dx0a三、組相聯映像:x0dx0ax0dx0a是對全相聯和直接映像的一種折中的處理方案。既不在主存和Cache之間實現字塊的完全隨意對應,也不在主存和Cache之間實現字塊的多對一的硬性對應,而是實現一種有限度的隨意對應。x0dx0a特點:折中方案。組間全相聯,組內直接映像。集中了兩個方式的優點。成本也不太高。最常見的Cache映像方式。
『柒』 淺談主存和Cache間的地址映射
最近在學計算機架構,正好學到主存與Cache間的地址映射,記錄一下,方便以後復習回顧。
學一個東西要弄清楚這個東西有什麼用,發明它的目的是什麼。Cache和主存的地址映射則主要是為了加快CPU的處理速度,因為如果CPU每次都要從主存(如4GB)中找數據的話就太慢了,但是如果在Cache(如64K)中有對應主存的數據,這樣就很快了。下面的地址映射方式都是想判斷主存中某個數據在不在Cache中,只不過效率不同而已。
首先指明基礎單位,簡單來說,有4個基礎單位: Bit , Byte , Block , Word
其中
在主存和Cache間的地址映射過程中,都是使用 Block 作為基本單位來交換數據,因為這樣更加高效
主存和Cache有三種地址映射方式
全相連映射大概如下圖所示:
Cache和 Main Memory(MM) 都被分為一定數量的 Block ,即圖中的b(0), b(1), ...
由圖可知,Cache被分為 C/B-1 個 Block ,Main Memory被分為 M/B-1 個 Block (C是緩存大小,如64k=2^16 Bytes,同理B和M分別是 Block 和MM大小)
全相連映射方式比較簡單,其思想是MM中的任意一個Block可以存在Cache中任意一個Block中,定址方式如下圖:
BTW:Associative Memory(相聯存儲器)的列數和Cache的列數一致
例題1:
Assume that cache capacity is 64KB in a computer system, data block size is 16 bytes, main memory capacity is 4MB, fully associative mapping is used.
直接相連映射與全相連映射的不同之處在於它將MM中的Block分成了一個個Area,每個Area的大小都和Cache相同,並且每個Area中的Block只能存在Cache中對應位置的Block,例如:MM中Area0的b(0)只能存在Cache中的b(0),Area1的b(0)也只能存在Cache中的b(0),以此類推。因此它也要求MM的大小必須是Cache大小的整數倍。
Ei是Area編號,Bi是Area中的Block編號,bi是Cache中Block編號,Block Address是Block中的地址
首先,由Bi選出Directory Table中對應的Block,該Block存著Area編號,將這個編號和MM Address的Ei比較一下,相同的話就說明在Cache中找到了對應MM中的數據(Hit),然後直接把MM Address的Bi和Block Address當做Cache Address去Cache找。
例題2:
Assume that cache capacity is 64KB in a computer system, data block size is 16 bytes, main memory capacity is 4MB, direct associative mapping is used.
組相連映射的思想相當於結合了前兩種映射思想,在已經分好Area的基礎上再進一步地分Group,每個Areaz裡面有若干個Group,與直接相連映射不同的是,組相連映射要求的只是每個Group必須一一對應,而Group裡面的Block則是隨意對應(即全相連映射)
Gi是Group的編號,其餘同直接相連映射
同理,先由Gi選出Directory Table中對應的Group,再把Ei和Bi與其內容作比較,相等就說明Cache中存在MM中的數據,然後直接把Directory Table中的bi和MM Address中的Gi當成Cache Address去Cache中找數據
例題3:
Assume that cache capacity is 32KB in a computer system, data block size is 64 bytes, main memory capacity is 1MB, set associative mapping is used and the group count is 128.
最後,總結一下三種映射方式,當組相連映射中的Group數量減少到1時,組相連映射變成全相連映射,當Group數量增加到Block總數時,組相連映射變成直接相連映射。