Ⅰ 在電腦中,CPU的作用是什麼
一:CPU主頻: 這是一個最受新手關注的指標,指的就是CPU內核工作的時鍾頻率(CPU Clock Speed)。通常所說的某款CPU是多少兆赫茲的,而這個多少兆赫茲就是「CPU的主頻」。在學校經常聽見一些人問,XXX網吧的CPU2.66G!XXX網吧的才2G,有人用2.66G的賽揚與2.0G-2.66G的P4比,這是無知的表現,和他們爭是無意義的:)。主頻雖與CPU速度有關系,但確對不是絕對的正比關系,因為CPU的運算速度還要看CPU流水線(流水線下面介紹)的各方面性能指標(緩存、指令集,CPU位數等)。因此主頻不代表CPU的整體性能,但提高主頻對於提高CPU運算速度卻是至關重要的。主頻的計算公式為:主頻=外頻*倍頻。 二:外頻: 外頻是CPU乃至整個計算機系統的基準頻率,單位是MHz(兆赫茲)。在早期的電腦中,內存與主板之間的同步運行的速度等於外頻,在這種方式下,可以理解為CPU外頻直接與內存相連通,實現兩者間的同步運行狀態。對於目前的計算機系統來說,兩者完全可以不相同,但是外頻的意義仍然存在,計算機系統中大多數的頻率都是在外頻的基礎上,乘以一定的倍數來實現,這個倍數可以是大於1的,也可以是小於1的。 三:倍頻咯:倍頻 CPU的倍頻,全稱是倍頻系數。CPU的核心工作頻率與外頻之間存在著一個比值關系,這個比值就是倍頻系數,簡稱倍頻。理論上倍頻是從1.5一直到無限的,但需要注意的是,倍頻是以以0.5為一個間隔單位。外頻與倍頻相乘就是主頻,所以其中任何一項提高都可以使CPU的主頻上升。 原先並沒有倍頻概念,CPU的主頻和系統匯流排的速度是一樣的,但CPU的速度越來越快,倍頻技術也就應允而生。它可使系統匯流排工作在相對較低的頻率上,而CPU速度可以通過倍頻來無限提升。那麼CPU主頻的計算方式變為:主頻 === 外頻 x 倍頻。也就是倍頻是指CPU和系統匯流排之間相差的倍數,當外頻不變時,提高倍頻,CPU主頻也就越高。 主頻因素說完了,現在讓我們來看看別的影響CPU速度的「東西」請允許我稱他為東西,說功能現行 四: 流水線: 這東西學地理的應該懂,高一下冊地理書有說,他相當於一個公程的一部分一部分,我自己打個比喻!比如:就拿跑步和走路來說,就分為2級流水線,即左腳,再右腳,再一直循環下去,一級的話就可以說成是雙腳一起跳,這樣效率當然低,對吧。。。。。。這就是生活的流水線,當你左腳走出去之後,如果發現前面有一堆大便,只好重來了(設一次一定走2步)這就是流水線級別上去之後跟隨的錯誤一出來CPU就要重新計算。。。。。也許我說得不太明白,下面引用別人的話來說,在製造CPU的過程中,除了硬體設計之外,還有邏輯設計,流水線設計就屬於邏輯設計范疇,舉個例子來講,比如說一家汽車工廠,在生產汽車的過程中採用了四個大組分別來完成四個生產步驟:1組生產汽車底盤,二組給底盤上裝引擎,三組給汽車裝外殼及輪胎,四組做噴漆,裝玻璃及其他,這就叫做一條四級的流水線.(現在的大型汽車生產廠也的確是按照類似流水線來提高生產效率的). 假設每個步驟需要1小時,那麼如果我們讓1大組在做完1輛車的底盤後馬上開始生產下一輛的底盤,二大組在做完一輛車的引擎後立刻投入下一輛車引擎的組裝,以次類推三,四組的工作也如此,這樣一來,每一小時就會有一輛賓士或寶馬被生產出來,這就相當於是CPU的指令排序執行. 但如果我們還想提升工廠的生產效率,又該怎麼辦呢?那麼我們就可以將上述的每個大組在分成2個小組,形成一條8級的生產流水線,這樣就形成每個小組(注意是"小組")只需要半小時就可以完成自己的工作,那麼相應的每半小時就會有一輛汽車走下生產線,這樣就提高了效率(這里不太好理解,請大家仔細想想就會明白). 根據這個道理,CPU的流水線也就不難理解了,只不過是把生產汽車變成了執行程序指令而已,原理上是相通的。 那麼這里可以想到,如果再把流水線加長,是不是效率還可以提高呢? 當人們把這個想法運用到CPU設計中時才發現,由於採用流水線來安排指令,所以非常不靈活,一旦某一級的指令執行出錯的話,整條流水線就會停止下來,再一極一級地去找出錯誤,然後把整條流水線清空,重新載入指令,這樣一來,會浪費很多時間,執行效率反而十分低下,為了解決這個問題,科學家們又採用了各種預測技術來提高指令執行的正確率,希望在保持長流水線的同時盡量避免發生清空流水線的悲劇,這就是經常看到的Intel的廣告"該處理器採用了先進的分支預測技術....",當你明白了上面我所講的後,你就知道了吹得那麼玄乎,其實也就不過如此. 還有不得不說的就是:長流水線會讓CPU輕易達到很高的運行頻率,但在這2G,3G的頻率中又有多少是真正有效的工作頻率呢? 而且級數越多,所累計出來的延遲越長,因為工作小組在交接工作時是會產生信號延遲的,雖然每個延遲很短,但20甚至30級的流水線所累計出來的延遲是不可忽視的,這樣就形成了一個很好笑的局面,流水線技術為處理器提升了頻率,但又因為自身的缺陷產生了很大的效率空白,將優勢抵消掉,高頻率的CPU還會帶來高功耗和高發熱量,所以說流水線並非越長越好 近年來Intel的奔四處理器經過了三個階段的發展,最早的奔四採用的是(威廉)核心,該核心只有13級的流水線,普遍頻率未上2G,速度一般,第二代的奔四採用的(northwoog北木)核心,這個核心有20級流水線,由於流水線級數比較合適,所以大副提升了奔四的速度,但又未影響執行效率,當時的奔四2.4A是一款經典產品,將AMD的速龍XP系列一直壓制住,Intel因此嘗到了甜頭,很快就推出了Prescott(波塞冬)核心,這個長達31級流水線的新核心將奔四帶入了近3G的速度,這個數字是AMD可望而不可及的,但人們很快發現新奔四的實際運行效率還不如老核心奔四,然爾頻率卻那麼高,發熱和功耗那麼大,Intel憑借這塊新核心"光榮"地獲得了"高頻低能"的美名,這個時候AMD適時推出了"速龍64"系列,全新的架構,20級的流水線,不高的發熱與功耗,最重要的是低頻高效,一舉擊敗了新奔四,獲得了很高的評價,Intel也吞下了自己造的苦果:被迫停止了4G奔四的開發,失去了不少的市場份額,連總裁貝瑞特也在IDF05上給大眾下跪以求原諒. CPU緩存: CPU緩存(Cache Memory)位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩存間的帶寬引起的。 緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。 正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。 最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進行了分類。當時集成在CPU內核中的緩存已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(Data Cache,D-Cache)和指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,用新增的一種一級追蹤緩存替代指令緩存,容量為12KμOps,表示能存儲12K條微指令。 隨著CPU製造工藝的發展,二級緩存也能輕易的集成在CPU內核中,容量也在逐年提升。現在再用集成在CPU內部與否來定義一、二級緩存,已不確切。而且隨著二級緩存被集成入CPU內核中,以往二級緩存與CPU大差距分頻的情況也被改變,此時其以相同於主頻的速度工作,可以為CPU提供更高的傳輸速度。 二級緩存是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級緩存上有差異,由此可見二級緩存對於CPU的重要性。 CPU在緩存中找到有用的數據被稱為命中,當緩存中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問內存。從理論上講,在一顆擁有二級緩存的CPU中,讀取一級緩存的命中率為80%。也就是說CPU一級緩存中找到的有用數據占數據總量的80%,剩下的20%從二級緩存中讀取。由於不能准確預測將要執行的數據,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數據占總數據的16%)。那麼還有的數據就不得不從內存調用,但這已經是一個相當小的比例了。目前的較高端的CPU中,還會帶有三級緩存,它是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的CPU中,只有約5%的數據需要從內存中調用,這進一步提高了CPU的效率。 為了保證CPU訪問時有較高的命中率,緩存中的內容應該按一定的演算法替換。一種較常用的演算法是「最近最少使用演算法」(LRU演算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設置一個計數器,LRU演算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的演算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出緩存,提高緩存的利用率。 CPU產品中,一級緩存的容量基本在4KB到64KB之間,二級緩存的容量則分為128KB、256KB、512KB、1MB、2MB等。一級緩存容量各產品之間相差不大,而二級緩存容量則是提高CPU性能的關鍵。二級緩存容量的提升是由CPU製造工藝所決定的,容量增大必然導致CPU內部晶體管數的增加,要在有限的CPU面積上集成更大的緩存,對製造工藝的要求也就越高 前端匯流排: 前端匯流排是處理器與主板北橋晶元或內存控制集線器之間的數據通道,其頻率高低直接影響CPU訪問內存的速度;BIOS可看作是一個記憶電腦相關設定的軟體,可以通過它調整相關設定。BIOS存儲於板卡上一塊晶元中,這塊晶元的名字叫COMS RAM。但就像ATA與IDE一樣,大多人都將它們混為一談。 因為主板直接影響到整個系統的性能、穩定、功能與擴展性,其重要性不言而喻。主板的選購看似簡單,其實要注意的東西很多。選購時當留意產品的晶元組、做工用料、功能介面甚至使用簡便性,這就要求對主板具備透徹的認識,才能選擇到滿意的產品。 匯流排是將信息以一個或多個源部件傳送到一個或多個目的部件的一組傳輸線。通俗的說,就是多個部件間的公共連線,用於在各個部件之間傳輸信息。人們常常以MHz表示的速度來描述匯流排頻率。匯流排的種類很多,前端匯流排的英文名字是Front Side Bus,通常用FSB表示,是將CPU連接到北橋晶元的匯流排。計算機的前端匯流排頻率是由CPU和北橋晶元共同決定的。 CPU就是通過前端匯流排(FSB)連接到北橋晶元,進而通過北橋晶元和內存、顯卡交換數據。前端匯流排是CPU和外界交換數據的最主要通道,因此前端匯流排的數據傳輸能力對計算機整體性能作用很大,如果沒足夠快的前端匯流排,再強的CPU也不能明顯提高計算機整體速度。數據傳輸最大帶寬取決於所有同時傳輸的數據的寬度和傳輸頻率,即數據帶寬=(匯流排頻率×數據位寬)÷8。目前PC機上所能達到的前端匯流排頻率有266MHz、333MHz、400MHz、533MHz、800MHz幾種,前端匯流排頻率越大,代表著CPU與北橋晶元之間的數據傳輸能力越大,更能充分發揮出CPU的功能。現在的CPU技術發展很快,運算速度提高很快,而足夠大的前端匯流排可以保障有足夠的數據供給給CPU,較低的前端匯流排將無法供給足夠的數據給CPU,這樣就限制了CPU性能得發揮,成為系統瓶頸。 CPU和北橋晶元間匯流排的速度,更實質性的表示了CPU和外界數據傳輸的速度。而外頻的概念是建立在數字脈沖信號震盪速度基礎之上的,也就是說,100MHz外頻特指數字脈沖信號在每秒鍾震盪一萬萬次,它更多的影響了PIC及其他匯流排的頻率。之所以前端匯流排與外頻這兩個概念容易混淆,主要的原因是在以前的很長一段時間里(主要是在Pentium 4出現之前和剛出現Pentium 4時),前端匯流排頻率與外頻是相同的,因此往往直接稱前端匯流排為外頻,最終造成這樣的誤會。隨著計算機技術的發展,人們發現前端匯流排頻率需要高於外頻,因此採用了QDR(Quad Date Rate)技術,或者其他類似的技術實現這個目前。這些技術的原理類似於AGP的2X或者4X,它們使得前端匯流排的頻率成為外頻的2倍、4倍甚至更高,從此之後前端匯流排和外頻的區別才開始被人們重視起來。 CPU工藝: 指在硅材料上生產CPU時內部各元器材的連接線寬度,一般用微米表示。微米值越小製作工藝越先進,CPU可以達到的頻率越高,集成的晶體管就可以更多。目前Intel的P4和AMD的XP都已經達到了0.13微米的製造工藝,明年將達到0.09微米的製作工藝。 從上面我們了解了CPU的邏輯結構以及一些基本技術參數,本文將繼續全面的了解影響CPU性能的有關技術參數。 深入淺出CPU種類介紹<一> 對於一台電腦系統,CPU的作用就象心臟對我們一樣重要。我們選購電腦時總要首先問,是486還是586,是100還是300,是MMX還是3D-NOW!,這些指的就全是CPU的指標,CPU在整個微機系統的核心作用,足以作為劃分CPU檔次的標准,這使它幾乎成為各種檔次微機的代名詞。我們可以說,CPU的性能能大致反映出我們的微機系統的性能,這對我們的選擇的重要性是顯而易見的。 1、什麼是CPU? CPU是英語"Central Processing Unit"的縮寫,其中文的直譯為"中央處理單元",CPU的主要功能是進行運算和邏輯運算,其物理結果包括邏輯運算單元、控制單元和存儲單元組成。在邏輯運算和控制單元中包括一些寄存器,這些寄存器用於CPU在處理數據過程中數據的暫時保存。在這里,並不需要弄清楚CPU的復雜原理,我們只是從性能參數的挑選方面對其進行一些必要的認識,這對認識和采購、配置計算機是大有幫助的。 2、CPU主要的性能指標: 主頻:即CPU內部核心工作的時鍾頻率,單位一般是兆赫茲(MHz)。這是我們最關心的一個參數,我們通常所說的233、 300、450等就是指它。對於同種類的CPU,主頻越高,CPU的速度就越快,整機的性能就越高。由於內部的結構不同,不同種的CPU之間不能直接通過主頻來比較,而且高主頻的CPU的實際表現性能,還與外頻、緩存等大小有關,帶有特殊指令的CPU,則相對程度地依賴軟體的優化程度。 外頻和倍頻數:外頻即CPU的外部時鍾頻率。CPU的主頻與外頻的關系是:CPU主頻 = 外頻×倍頻數,外頻是由電腦主板提供的,486的外頻一般是33MHz,40MHz,Pentium主板的外頻一般是66MHz,也有主板支持75各83MHz。而目前Intel公司最新的晶元組440BX可以使用100MHz甚至更高的時鍾頻率。另外VIA公司的MVP3、MVP4,APPLO PRO 等一些非 Intel的晶元組也開始支持100MHz的外頻,一些主板由於技術精良,工藝先進,可以超頻1/3以上穩定使用,成為超頻愛好者的首選。Intel公司的下一代主板晶元將支持133MHz的外頻,AMD的K7甚至將使用200MHz的外頻。 深入淺出CPU種類介紹<二> 內部緩存(L1 Cache):採用速度極快的SRAM製作,與 CPU共同封裝於晶元內部的高速緩存,用於暫時存儲CPU運算時的最近的部分指令和數據,存取速度與CPU主頻相同 (一般稱為全速) , L1緩存的容量一般以KB為單位。L1緩存全速工作,其容量越大,使用頻率最高的數據和結果就越容易盡快進入CPU進行運算,CPU工作時與存取速度較慢的L2緩存和內存間交換數據的次數越少,相對電腦的運算速度可以提高。486就因為集成了內部Cache,速度比386快了許多。最早的486內部一般有1K~8K的L1 Cache,現在的Pentium II的L1 Cache一般有32K,而Cyrix和AMD的晶元內部有64K甚至更多。 二級緩存(L2 Cache):集成於CPU外部的高速緩存,L2 Cache 的一般容量是128K~2M。容量越大,系統的綜合性能越高。一般的 L2 Cache 運行於系統外頻或 CPU 主頻的一半,後來 Pentium Pro處理器採用的L2和CPU運行在相同頻率下,由於晶元成品率太低,成本昂貴,所以後來Pentium II的L2 Cache運行在相當於CPU頻率一半下的,但容量增加為512K。現在的至強處理器又採用了全速的L2 Cache,容量增大至512K到2M之間,以求性能獲得提高。沒有Cache的賽揚處理器,性能下降不少。
Ⅱ 有誰知道cache的發展過程
縱觀PC系統和CPU二十年的發展,隨著半導體加工工藝水平的不斷提高,CPU和存儲器的性能都有了很大的提高。
CPU頻率的提高,必然要求系統中存儲器的存取速度要提高,還要求其容量要增大。主存儲器DRAM容量的提高還是比較快的,但是DRAM讀取時間的提高卻很慢。從而在速度上與CPU主頻的提高產生了極不相配的情況,這樣會影響整個系統的性能。二十年來,CPU設計的問題之一就是解決高速CPU和低速DRAM之間的平衡或匹配問題,以求系統性能的整體提高。
在它們之間加入高速緩沖存儲器Cache,就是這個問題的解決方案之一。
Cache隨CPU的發展而不斷改變,可以概括為:從無到有,由小到大,先外後內,縱深配備,軟硬兼施。初期的CPU沒有Cache,在80386時期出現外部Cache;80486時期開始有內部僅8kB的Cache。Cache的分級也由L1和L2級,發展到L0和L3級的縱深配備;Cache的大小由當初的8kB,直到Merced的1~2MB。為了更好地利用Cache,還專門配有緩存控制指令。
本文回顧了在過去的二十年中,Cache技術的發展歷程,並對PC其它設備使用Cache技術作了簡單陳述。 PC初期無需Cache在八十年代初,由於CPU主頻很低,DRAM的存取時間甚至快於CPU存取時間,因此無需Cache。例如,當時PC機採用8088CPU,系統主頻為4.77MHz,一個基本匯流排周期為4拍,即840ns。此時64kB的DRAM存取周期200ns,造成DRAM等待CPU的執行的局面,無需Cache。
在PC/AT機採用80286CPU後,系統主頻增加到10MHz,1個基本匯流排周期為2拍,即200ns。此時必須用讀取時間為100ns的DRAM。在採用25MHz的80386DX時,一個基本匯流排周期為2拍,即80ns,當時已沒有速度相匹配的DRAM可用。解決方案有2種:一種是在基本匯流排周期中插入等待,降低CPU的處理能力;另一種是採用內部和外部Cache,使用SRAM晶元以提高存儲器的讀取速度。80386沒有L1 Cache80386初期主頻為20MHz。Intel公司十分重視80386的設計製造,把它定位於「新一代個人電腦架構」,想把一些新技術設計在晶元中。但由於當時工藝所限,內置高速緩存的晶元體積過大,造成成本上升,同時工期有限,幾經權衡,最後決定在80386晶元不設置高速緩沖存儲器,可以生產另外的Cache,以配合80386運作。
盡管人們意識到CPU主頻的增加與內存DRAM存取時間過慢的矛盾已愈加突出,但因條件所限,80386內部沒有L1 Cache,只有外部的Cache。80486出現Cache80486是由80386CPU加80387數字協處理器以及8kB Cache構成。
當CPU的時鍾頻率繼續增加時,外部Cache的SRAM晶元速度也要相應提高,這樣會增加系統成本,為此在設計80486時採用了內部Cache。
80486晶元內由8kB的Cache來存放指令和數據。同時,80486也可以使用處理器外部的第二級Cache,用以改善系統性能並降低80486要求的匯流排帶寬。Cache可以工作在80486所有的操作模式:實地址模式、保護模式和X86模式。對Cache的操作是由系統自動進行的,對程序員透明。而在多處理器系統中,可能要求系統軟體的干預。對於一般的計算機,在系統CMOS設置中均有Cache使用模式的設置。
80486內部Cache是一個4路組相聯Cache,在主存儲器中給定單元的數據能夠存儲在Cache內4個單元中的任何一個。這種4路相聯方式是高命中率的全相聯Cache和快速的直接映像Cache的一種折衷,因而能進行快速查找並獲得高的命中率。Peutium的分離L1 Cache和L2 CachePentium處理器採用了超標量結構雙路執行的流水線,有分支預測技術。
由於Pentium設計有2條並行整數流水線,可同時執行2條命令。整數單元的潛在處理能力實際可增加一倍,處理器也需要對命令和數據進進雙倍的訪問。為使這些訪問不互相干涉,Intel把在486上共用的內部Cache,分成2個彼此獨立的8kB代碼Cache和8kB數據Cache,這兩個Cache可以同時被訪問。這種雙路高速緩存結構減少了爭用Cache所造成的沖突,提高了處理器效能。Pentium的Cache還採用了回寫寫入方式,這同486的貫穿寫入方式相比,可以增加Cache的命中率。此外,還採用了一種稱為MESI高速緩存一致性協議,為確保多處理器環境下的數據一致性提供了保證。Pentium Pro內嵌式L2 Cache為使Pentium Pro的性能超過Pentium,必需使用創新的設計方法。Pentium Pro使用了新的超標量和級流水線技術,包括無序執行、動態分支預測和推測執行的動態執行新技術。它可以使CPU在一個時鍾周期執行3條微操作。CPU並行處理速度的加快,意味著它同時處理指令和數據的數量增加,為不使CPU處於等待狀態,需要重新設計Cache。
Pentium Pro在片內第一級Cache的設計方案中,使指令Cache與數據Cache分別設置。指令Cache的容量為8kB,採用2路組相聯映像方式。數據Cache的容量也為8kB,但採用4路組相聯映像方式。Pentium Pro採用MESI(修改、排他、共享、作廢)協議來維持Cache和主存儲器之間的一致性。通常,人們總以為,像Pentium Pro這樣的3路超標量結構的微處理器會採用更大容量的片內第一級Cache和更大的第二級Cache。然而,Intel公司的設計者卻選擇了另一條設計思路——設計一種Cache存儲階層結構,使得能夠從一個Cache流動到另一個Cache,而不用阻塞執行。
Pentium Pro採用了內嵌式或稱捆綁式L2Cache,大小為256kB或512kB。此時的L2已經用線路直接連到CPU上,益處之一就是減少了對急劇增多L1 Cache的需求。L2 Cache還能與CPU同步運行。即當L1 Cache不命中時,立刻訪問L2 Cache,不產生附加延遲。為進一步減少因要訪問的信息不在高速緩沖中時所帶來的性能損失,Pentium Pro的L1和L2都設計成非鎖定型。即當哪個Cache中沒有CPU所需的信息時,它不妨礙後面訪問Cache的處理過程。Cache可以直接處理最多4次的Cache缺頁情況,藉助CPU的內存有序緩沖區可以順序保存最多12次的內存訪問。非鎖定型Cache適用於Pentium Pro的亂序執行核心,因為在可能引發流水線延遲的長等待內存操作期間,這些Cache可以讓CPU繼續運行。
Pentium Pro的如此捆綁封裝,帶來器件成本提高。一方面專用的L2 cache晶元成本高,另一方面兩個不同功能的晶元只有放在一起聯結後才能最後測試其性能的完整性。而當其中有一個有缺陷時,兩個晶元都被報廢。在以後的Pentium Pro產品中,又將L2 Cache從晶元中去掉。Pentium MMX容量增大的L1和L2CachePentium MMX是能運行多媒體指令MMX的高能奔騰處理器。Pentium MMX具有改進的分支預測和增強型流水線技術,並將L1 Cache容量增加到32kB,L2 Cache為512kB。
Pentium MMX的片內L1數據和指令的Cache,每個增到16kB,4路相聯。較大的獨立內部Cache、減少平均內存存取時間,同時提供對近期所用指令和數據的快速存取,性能因此得到提高。數據Cache支持採用回寫方式更新內存。
由於CacheL1容量的增大,使當時的應用程序運行速度提高了10%左右。PentiumⅡ設有雙獨立匯流排連接L2 CachePentiumⅡ是Pentium Pro的改進型,具有MMX指令,使用動態執行技術,採用雙獨立匯流排結構。PentiumⅡ同樣有2級Cache,L1為32kB(指令和數據Cache各16kB)是Pentium Pro的一倍。L2為512kB。
Pentium Ⅱ與Pentium Pro在L2 Cache 的不同是由於製作成本原因。L2 Cache已不在內嵌晶元上,而是與CPU通過專用64位高速緩存匯流排相聯,與其它元器件共同被組裝在同一基板上,即「單邊接觸盒」上。雙獨立匯流排結構就是:L2高速緩存匯流排和處理器至主內存(Processor-to-main-memory)的系統匯流排。 PentiumⅡ處理器可以同時使用這兩條匯流排,與單一匯流排結構的處理器相比,該處理器可以進出兩倍多的數據,可允許 PentiumⅡ處理器的L2高速緩存比Pentium處理器的L2高速緩存要快1倍。隨著 PentiumⅡ處理器主頻的提高,L2高速緩存的速度也將加快。最後,流水線型系統匯流排可允許同時並行傳輸,而不是單個順序型傳輸。改進型的雙重獨立匯流排結構,可以產生超過與單匯流排結構三倍帶寬的性能。另外,在PentiumⅡ中,採用了ECC技術,此技術應用到二級高速緩存中,大大提高了數據的完整性和可靠性。
為開發低端市場,曾在 PentiumⅡ的基板上除去L2,犧牲一些性能,製造廉價CPU。這就是最初的Celeron處理器。以後的Celeron仍加有較小的片上L2 Cache,其大小為128kB。PentiumⅢ的L2 Cache增大PentiumⅢ也是基於Pentium Pro結構為核心,在原有MMX多媒體指令的基礎上,又增了70多條多媒體指令。它使用動態執行技術,採用雙獨立匯流排結構。
PentiumⅢ具有32kB非鎖定L1 Cache和512kB非鎖定L2 Cache。L2可擴充到1~2MB,具有更合理的內存管理,可以有效地對大於L2緩存的數據塊進行處理,使CPU、Cache和主存存取更趨合理,提高了系統整體性能。在執行視頻回放和訪問大型資料庫時,高效率的高速緩存管理使PⅢ避免了對L2 Cache的不必要的存取。由於消除了緩沖失敗,多媒體和其它對時間敏感的操作性能更高了。對於可緩存的內容,PⅢ通過預先讀取期望的數據到高速緩存里來提高速度,這一特色提高了高速緩存的命中率,減少了存取時間。Merced設有L0即將推出的第7代處理器Merced主頻可達1GHz。很明顯,對Cache的要求更高了。為此,lntel本著「大力提高執行單元和緩存間數據交換速度」的思想,在晶元內開發新的Cache,並增加L1 Cache的容量,來平衡CPU和DRAM間的速度。
為此,在Merced的片上最接近執行單元旁再設另一處Cache,稱為L0緩存,是指令/數據分離型。由於L0Cache在物理位置上比L1離執行單元更近,布線距離的縮短,使它與執行單元間的數據交換速度比L1還快,可以進一步提高工作主頻。
同時,還要在晶元內部配置超過1MB的大容量L1 Cache。晶元內部Cache比外部Cache更易於提升與執行單元間的數據傳送速度。內部Cache的加大,執行單元不易發生「等待」。現行的內部Cache容量僅為32kB~128kB。內部Cache容量的增加會引起晶元面積增大,提高製造成本。但大部分公司認為,由於內部Cache容量增大而導致成本的上揚,可以用製造技術來彌補。與Cache相配合的緩存控制指令為進一步發揮Cache的作用,改進內存性能並使之與CPU發展同步來維護系統平衡,一些製造CPU的廠家增加了控制緩存的指令。如Intel公司在PentiumⅢ處理器中新增加了70條3D及多媒體的SSE指令集。其中有很重要的一組指令是緩存控制指令。AMD公司在K6-2和K6-3中的3DNow!多媒體指令中,也有從L1數據Cache中預取最新數據的數據預取指令(Prefetch)。
PentiumⅢ處理器的緩存控制指令,用於優化內存連續數據流。針對數據流的應用需要對以前的Cache運作方式進行了改進,減少了一些不必要的中間環節,節省了時間,增加了CPU數據匯流排的實際可用帶寬,也提高了Cache的效率。
有兩類緩存控制指令。一類是數據據預存取(Prefetch)指令,能夠增加從主存到緩存的數據流;另一類是內存流優化處理(Memory Streaming)指令,能夠增加從處理器到主存的數據流。這兩類指令都賦予了應用開發人員對緩存內容更大控制能力,使他們能夠控制緩存操作以滿足其應用的需求。
數據預存取指令允許應用識別出所需的信息,並預先將其從主存中取出存入緩存。這樣一來,處理器可以更快地獲取信息,從而改進應用性能。為了進一步削減內存延遲,內存訪問還可以與計算機周期保持流水操作。例如,如果一個應用需要計算一些數值以供3D圖形使用,當它在計算一個值的同時就可以預取下一個需要計算的數值。
內存流優化處理指令允許應用越過緩存直接訪問主存。通常情況下,處理器寫出的數據都將暫時存儲在緩存中以備處理器稍後使用。如果處理器不再使用它,數據最終將被移至主存。然而,對於多媒體應用來就,通常不再需要使用這些數據。因此,這時將數據盡快地移到主存中則顯得至關重要。採用了PentiumⅢ處理器的內存流優化處理指令後,應用程序就能讓數據搭乘「直達快車」,直接到達主存。當數據流直接到達主存時,處理器負責維護緩存的一致性。因為這種方式避免了為數據流留出空間清空緩存的當前內容,從而也提高了緩存的利用率。
總而言之,緩存控制指令改進了進出處理器的數據據流,使處理器保持其高速率運作。通過這些指令(同時還需要一些專為其設計以使其發揮優勢的軟體),商業用戶可以在操作系統和圖形設備驅動程序中感受其性能優勢。Cache在PC中其它設備的應用Cache作為一種速度匹配技術,不僅用在提高CPU對內存的讀寫速度上,而且也用在CPU結構的其它部分和PC系統中。
PC的顯示系統中,由於3D應用的迅猛發展,大量的顯示內存使用著高速緩存技術,如前台緩存、後台緩存、深度緩存和紋理緩存等。
PC的磁碟系統中,為提高內存對磁碟(主要是硬碟)的讀寫速度,就要建立磁碟高速緩存。因為DRAM內存的存取速度對CPU來說較慢,但對磁碟的存取速度卻是很快的。這是因為磁碟存儲系統包含有磁頭的機械運動,而機械運動無法跟傳送電信號的電子速度相比。此外,磁頭中電與磁的信號轉換也對速度有影響。這樣,為了提高磁碟存取速度而採用Cache也就順理成章了。硬碟Cache無需使用高速的SRAM,它只需在內存(DRAM)中劃出一個區域,作為專用的磁碟緩沖區,採用一定的數據結構,即可實現磁碟存取的Cache技術。它的過程也是把即將訪問的數據整塊地拷貝到高速緩存區中,然後內存再到高速緩存中去逐個讀取數據。由於數據在RAM空間內部傳送要比在RAM與磁碟間傳送快得多,系統由此提高了存取速度。
硬碟的Cache可以放在常規內存中。不過,為了不佔用寶貴的用戶程序空間,通常是把它設在擴展內存或擴充內存里。硬碟Cache是由人們共知的SMARTDRIVE.EXE文件自動建立的,用戶只需在AUTOEXEC.BAT與CONFIG.SYS中加入相應的命令行就成了。
在較慢速的其它外圍設備和內存的數據交換中,在網路通訊中,都需要使用Cache技術。推而廣之,凡是在傳輸速度有較大差異的設備之間,都可以利用Cache的速度匹配技術。結束語PC中的Cache主要是為了解決高速CPU和低速DRAM內存間速度匹配的問題,是提高系統性能,降低系統成本而採用的一項技術。隨著CPU和PC的發展,20年來,現在的Cache已成為CPU和PC不可缺少的組成部分,是廣大用戶衡量系統性能優劣的一項重要指標。據預測,在21世紀初期,CPU主頻加快發展的趨勢,加上內存DRAM的存取時間也會提高,從系統的性價比考慮,Cache的配備仍然是重要的技術之一。
Ⅲ 當代計算機為什麼要採用流水線技術和cache存儲技術
總的來說,目的都是一個,充分利用計算資源,即充分利用cpu,防止其閑置
效果都是使計算機更快,計算能力更強
那麼,我們首先要定位到有哪些計算資源是被浪費掉的。
1.對於cpu內部,假設一條指令要經過 取指令,解碼指令,執行指令,存儲訪問,寫回數據 五個步驟完成,且每個步驟都有對應的部件。沒有流水線技術的情況下,當cpu執行一條指令時,你會發現只有一個部件在運行,其餘四個都閑著——這些資源都被閑置了。
於是流水線技術橫空出世了,讓這些閑置的部件都運作了起來。具體技術細節課本上有,我就不贅述了。
2.如果所有程序都只是加減乘除邏輯運算,那麼計算機會很快解決,但是,一旦涉及存儲器訪問就會出現麻煩(比如指令中的操作數在存儲器中),因為從內存讀數據很慢(相對於cpu正常工作速度),得不到數據cpu只能閑置著。
而cache存儲技術就是為了解決這個問題(cpu速度與存儲器存取速度不匹配)而出現的。小而快速的cache能對cpu的數據要求做出快速應答,使cpu不再受等待數據(數據飢餓)的困擾。
技術延拓
技術的出發點比較純粹,而後來許多更復雜的流水線技術已經不再滿足於解決資源利用問題,他們只有一個目的: 讓cpu更快!
於是各種流水線的「奇技淫巧」(指令級的並行,超標量,超流水等)就出現了~
cache方面出現了預取,非阻塞,流水cache等技術
在基礎原理熟練掌握的前提下,再去看看這些進一步的優化吧,否則一頭霧水。
(以上回答僅為個人看法,如有錯誤希望您能批評指正)
Ⅳ 計算機組成原理(三)存儲系統
輔存中的數據要調入主存後才能被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速度不匹配的問題