【導讀】主存地址是否命中注定?主存地址應該用多少位來表示?全網經典攻略,解決你的疑惑“主存地址是否命中注定”的內容如下:
本文目錄一覽:
- 1、有關操作系統原理中CACHE與主存的地址映象問題.
- 2、主存和cache之間的映像方式有哪幾種?
- 3、cache直接映像中怎樣判斷命中與否,全相連映像怎樣判斷命中與否以及求塊號
- 4、我在學計算機組成與設計,請教cache line是什么意思?和block size有關系嗎?
- 5、什么是主存物理地址?
- 6、什么是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區的首地址和大小。
主存和cache之間的映像方式有哪幾種?
有3種,直接映像,全相聯映像,細相聯影響。
1直接映像(Direct Mapping)
采用直接映像時,Cache的某一塊只能和固定的一些主存塊建立映像關系,主存的某一塊只能對應一個Cache塊。直接映像的優點是硬件簡單、成本低;缺點是不夠靈活,主存的若干塊只能對應惟一的Cache塊,即使Cache中還有空位,也不能利用。
2全相聯映像(Associative Mapping)
采用全相聯映像時,Cache的某一塊可以和任一主存塊建立映像關系,而主存中某一塊也可以映像到(2ache中任一塊位置上。由于Cache的某一塊可 以和任一主存塊建立映像關系,所以Cache的標記部分必須記錄主存塊塊地址的全部信息。
例如,主存分為2n塊,塊的地址為n位,標記也應為n位。 采用全相聯映像方式時,主存地址被理解為由兩部分組成:標記(主存塊號)和塊內地址。CPU 在訪問存儲器時,為了判斷是否命中,主存地址的標記部分需要和Cache的所有塊的標記進行比較。
為了縮短比較的時間,將主存地址的標記部分和Cache 的所有塊的標記同時進行比較。如果命中,則按塊內地址訪問Cache中的命中塊(其標記與主存地址給出的標記相同);如果未命中,則訪問主存。
全相聯映像的優點是靈活,Cache利用率高。缺點有兩個:一是標記位數增加了(需要記錄主存塊塊地址的全部信息),使得Cache的電路規模變 大,成本變高;二是比較器難于設計和實現(通常采用“按內容尋址的”相聯存儲器)。因此,只有小容量Cache才采用這種映像方式。
3組相聯映像(Set Associative Mapping)
組相聯映像方式是介于直接映像和全相聯映像之間的一種折中方案。設Cache中共有m個塊,在采用組相聯映像方式時,將m個Cache塊分成u組(set),每組k個塊(即m=u×k),組間直接映像,而組內全相聯映像。所謂組間直接映像,是指某組中的Cache塊只能與固定的一些主存塊建立映像關系。
cache直接映像中怎樣判斷命中與否,全相連映像怎樣判斷命中與否以及求塊號
1.全相聯映象
主存中的每一個字塊可映像到Cache任何一個字塊位置上,這種方式稱為全相聯映像。這種方式只有當Cache中的塊全部裝滿后才會出現塊沖突,所以塊沖突的概率低,可達到很高的Cache命中率;但實現很復雜。當訪問一個塊中的數據時,塊地址要與Cache塊表中的所有地址標記進行比較已確定是否命中。在數據塊調入時存在著一個比較復雜的替換問題,即決定將數據塊調入Cache中什么位置,將Cache中那一塊數據調出主存。為了達到較高的速度,全部比較和替換都要用硬件實現。
2.組相聯映象
組相聯映象方式是直接映象和全相聯映象的一種折衷方案。這種方法將存儲空間分為若干組,各組之間是直接映像,而組內各塊之間則是全相聯映像。它是上述兩種映像方式的一般形式,如果組的大小為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區的首地址和大小。
我在學計算機組成與設計,請教cache line是什么意思?和block size有關系嗎?
不知道你做的cache實驗是不是直相連模式。cacheline也是一個存儲器,其中存儲的是一個塊的區號,因為主存的容量通常會是cache容量的很多倍,所以主存的地址中低位地址與cache相同外,其高位地址構成區號。cacheline中存區號就是為了判斷訪問是否命中。一般來說和block size沒什么關系。但是如果主存地址位數一定的話,block size大小會影響主存區號地址的大小,進而會影響cacheline存儲數據的位數。
什么是主存物理地址?
主存一般指內存儲器,簡稱內存。
物理地址是內存實際編址中的位置,即地址。相對而言,真正在編程中使用的是邏輯地址。
什么是Cache?解釋他的命中率.
“Cache”是什么
Cache(即高速緩沖存儲器(Cache Memory),是我們最常聽到的一個詞了。在老鳥們眼中,這個詞或許已沒有再談的必要,因為他們對Cache從設計的必要性到工作原理、工作過程等等都已了如指掌了;而對菜鳥朋友們而言,這些未必就很清楚。那么,它們到底是指的什么呢?不用急,下面就請隨筆者一起來全面認識Cache。
為什么要設計Cache
我們知道,電腦的內存是以系統總線的時鐘頻率工作的,這個頻率通常也就是CPU的外頻(對于雷鳥、毒龍系列的處理器,由于在設計采用了DDR技術,CPU工作的外頻為系統總線頻率的兩倍)。但是,CPU的工作頻率(主頻)是外頻與倍頻因子的乘積。這樣一來,內存的工作頻率就遠低于CPU的工作頻率了。這樣造成的直接結果是:CPU在執行完一條指令后,常常需要“等待”一些時間才能再次訪問內存,極大降了CPU工作效率。在這樣一種情況下,Cache就應運而生了!
Cache是什么
Cache是一種特殊的存儲器,它由Cache 存儲部件和Cache控制部件組成。Cache 存儲部件一般采用與CPU同類型的半導體存儲器件,存取速度比內存快幾倍甚至十幾倍。而Cache 控制器部件包括主存地址寄存器、Cache 地址寄存器,主存—Cache地址變換部件及替換控制部件等。至于它們各自又是怎樣工作的、有何作用等等,我想我們就沒有必要做進一步的研究,知道一般Cache分為L1 Cache(其中又分為數據Cache、代碼Cache)、L2 Cache就行了。
Cache是怎樣工作的
我們知道,CPU運行程序是一條指令一條指令地執行的,而且指令地址往往是連續的,意思就是說CPU在訪問內存時,在較短的一段時間內往往集中于某個局部,這時候可能會碰到一些需要反復調用的子程序。電腦在工作時,把這些活躍的子程序存入比內存快得多的Cache 中。CPU在訪問內存時,首先判斷所要訪問的內容是否在Cache中,如果在,就稱為“命中”,此時CPU直接從Cache中調用該內容;否則,就稱為“不命中”,CPU只好去內存中調用所需的子程序或指令了。CPU不但可以直接從Cache中讀出內容,也可以直接往其中寫入內容。由于Cache的存取速率相當快,使得CPU的利用率大大提高,進而使整個系統的性能得以提升。
Cache的應用
早在486時代,主板上就設計了Cache插槽,用戶可以根據需要自己配置Cache;586級的CPU芯片中已集成了部分Cache,同時還保留了Cache插槽供用戶擴充,而到了Pentium Ⅱ時代后,Cache已全部集成到了CPU芯片中,主板上再也沒有Cache插槽。現在比較流行的CPU芯片中一般集成了至少16KB的代碼Cache 和16KB的數據Cache(作為L1 Cache),以及至少64KB的L2 Cache。
有的朋友可能會問,既然Cache的作用如此重要,那為么不把電腦的全部內存都變為Cache,那樣不是更好嗎?其實對于這個問題,撇開價格因素,單就其實用性而言也是沒有必要的,畢竟,電腦在執任務時,那種使用頻率非常高的子程序或指令不是很多的,因此那些使用頻率不太高的內容只須保存在速度相對較低的內存中就可以了!
在實際應用中,Cache,尤其是L2Cache對系統的性能,特別是對浮點運算能力有較大的影響。而我們知道,大部分游戲的流暢運行需要頻繁的浮點運算。因此,CPU運行游戲的性能的好壞與L2Cache的容量與速度有很大關系。
網上找的資料,比較全面,也比我自己的理解容易懂。
小鼠仔
2005-08-25, 11:07
硬盤的物理緩存是不可以改的,現在買硬盤的話最好買8M緩存的,貴不了多少.性價比高..
但是可以通過修改虛擬磁盤緩存來修改..原理就是占用內存空間來實現磁盤緩存功能.如果裝的xp的話
Quote:
1.運行 "regedit";
2.去[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\IoPageLockLimit];
3.根據你的內存修改其十六進制值:
64M: 1000;
128M: 4000;
256M: 10000;
512M或更大: 40000.
4.重啟
磁盤緩存空間 可以有效的保護和延長你硬盤的壽命 它可以減少硬盤的反復擦寫。如果你經常用BT之類的下載軟件就非常有用。
【回顧】主存地址是否命中注定?主存地址應該用多少位來表示?看完已經懂了嗎,更多關于“主存地址應該用多少位來表示”的旅游關注我們:http://www.zbbsyl.com/
標簽: 主存地址是否命中注定