中央處理器內的組成部分,有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和地址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數器(PC)。在中央處理器的算術及邏輯部件中,存器有累加器(ACC)。寄存器,是集成電路中很是重要的一種存儲單元,一般由觸發器組成,寄存器擁有很是高的讀寫速度,因此在寄存器之間的數據傳送很是快。算法
數據寄存器- 用來儲存整數數字(參考如下的浮點寄存器)。在某些簡單/舊的CPU,特別的數據寄存
器是累加器,做爲數學計算之用編程
地址寄存器- 持有存儲器地址,用來訪問存儲器。在某些簡單/舊的CPU裏,特別的地址寄存器是索引寄存器(可能出現一個或多個)緩存
通用目的寄存器(GPRs) - 能夠保存數據或地址二者,也就是說它們是結合數據/地址 寄存器的功用,修改他們的值一般不會對計算機的運行形成很大的影響。微信
浮點寄存器(FPRs) - 用來儲存浮點數字。性能
常數寄存器- 用來持有隻讀的數值spa
向量寄存器- 用來儲存由向量處理器運行SIMD(Single Instruction, Multiple Data)指令所獲得的數據設計
特殊目的寄存器- 儲存CPU內部的數據,像是程序計數器(或稱爲指令指針),堆棧寄存器,以及狀態寄存器(或稱微處理器狀態字組)。指針
指令寄存器(instruction register)- 儲存如今正在被運行的指令code
索引寄存器(index register)- 是在程序運行時用來更改運算對象地址之用。對象
寄存器的基本單元是 D觸發器,按照其用途分爲基本寄存器和移位寄存器
基本寄存器(見圖)是由 D觸發器組成,在 CP 脈衝做用下,每一個 D觸發器可以寄存一位二進制碼。在 D=0 時,寄存器儲存爲 0,在 D=1 時,寄存器儲存爲 1
CPU的頻率就是指數字集成電路的時鐘頻率
移位寄存器按照移位方向能夠分爲單向移位寄存器和雙向移位寄存器,單向移位寄存器是由多個 D 觸發器串接而成
寄存器所能存儲的數據不必定是8bit,有一些寄存器能夠存儲16bit數據
主存儲器,存放指令和數據,並能由中央處理器(CPU)直接隨機存取,通常採用半導體存儲器,與輔助存儲器相比有容量小、讀寫速度快、價格高等特色,存放一個機器字的存儲單元,一般稱爲字存儲單元,相應的單元地址叫字地址,而存放一個字節的單元,稱爲字節存儲單元,相應的地址稱爲字節地址,若是計算機中可編址的最小單位是字存儲單元,則該計算機稱爲按字編址的計算機。若是計算機中可編址的最小單位是字節,則該計算機稱爲按字節編址的計算機。一個機器字能夠包含數個字節,因此一個存儲單元也能夠包含數個可以單獨編址的字節地址。
從一次讀操做命令發出到該操做完成,將數據讀入數據緩衝寄存器爲止所經歷的時間
連續啓動兩次獨立的存儲器操做(如連續兩次讀操做)所需間隔的最小時間
RAM
RAM通常使用動態半導體存儲器件(DRAM),由於CPU工做的速度比RAM的讀寫速度快,因此CPU讀寫RAM時須要花費時間等待,這樣就使CPU的工做速度降低。人們爲了提升CPU讀寫程序和數據的速度,在RAM和CPU之間增長了高速緩存(Cache)部件。Cache的內容是隨機存儲器(RAM)中部分存儲單元內容的副本
ROM
只讀存儲器,出廠時其內容由廠家用掩膜技術寫好,只可讀出,但沒法改寫。信息已固化在存儲器中,通常用於存放系統程序BIOS和用於微程序控制
PROM
PROM是可編程ROM,只能進行一次寫入操做(與ROM相同),可是能夠在出廠後,由用戶使用特殊電子設備進行寫入。
EROM
EPROM是可擦除的PROM,能夠讀出,也能夠寫入。可是在一次寫操做以前必須用紫外線照射,以擦除全部信息,而後再用EPROM編程器寫入,能夠寫屢次
EEROM
EEPROM是電可擦除PROM,與EPROM類似,能夠讀出也可寫入,並且在寫操做以前,不須要把之前內容先擦去,可以直接對尋址的字節或塊進行修改
閃速存儲器
介於EPROM與EEPROM之間。閃速存儲器也可以使用電信號進行快速刪除操做,速度遠快於EEPROM。但不能進行字節級別的刪除操做,其集成度高於EEPROM
主存與CPU之間的硬鏈接:主存與CPU的硬鏈接有三組連線:地址總線(AB)、數據總線(DB)和控制總線(CB),存儲器地址寄存器(MAR)和存儲器數據寄存器(MDR)是主存和CPU之間的接口,MAR能夠接收由程序計數器(PC)的指令地址或來自運算器的操做數的地址,以肯定要訪問的單元。MDR是向主存寫入數據或從主存讀出數據的緩衝部件。MAR和MDR從功能上看屬於主存,但一般放在CPU內
CPU-(須要讀取數據的地址)->MAR->AB-(讀命令)->DB-(交換信息)->MDR-(讀數據)->CPU
CPU-(須要寫數據的地址)->MAR->AB-(寫命令)->MDR->DB
不管是讀仍是寫數據 DB起到了數據交換做用
CPU和主存間沒有統一的時鐘,由主存工做完成信號(MFC)通知CPU「主存工做已完成」。
CPU和主存採用統一時鐘,同步工做,由於主存速度較慢,因此CPU與之配合必須放慢速度,在這種存儲器中,不須要主存工做完成信號。
位於CPU與內存之間的臨時存儲器,它的容量比內存小的多可是交換速率卻比內存要快得多。緩存的出現主要是爲了解決CPU運算速率與內存讀寫速率不匹配的矛盾,緩存每每使用的是RAM,L1 Cache(一級緩存)是CPU第一層高速緩存,通常L1緩存的容量一般在32—256KB,L1分爲數據Cache,指令Cache,L2 Cache(二級緩存)是CPU的第二層高速緩存,份內部和外部兩種芯片,內部的芯片二級緩存運行速率與主頻相同,而外部的二級緩存則只有主頻的一半,緩存只是內存中少部分數據的複製品。二級緩存是比一級緩存速率更慢,容量更大的內存,主要就是作一級緩存和內存之間數據臨時交換的地方用。爲了適應速率更快的處理器。
緩存基本上都是採用SRAM存儲器,SRAM是英文Static RAM的縮寫,它是一種具備靜態存取功能的存儲器,不須要刷新電路即能保存它內部存儲的數據。不像DRAM內存那樣須要刷新電路,每隔一段時間,固定要對DRAM刷新充電一次,不然內部的數據即會消失,所以SRAM具備較高的性能,可是SRAM也有它的缺點,即它的集成度較低,相同容量的DRAM內存能夠設計爲較小的體積,可是SRAM卻須要很大的體積,這也是不能將緩存容量作得太大的重要緣由。它的特色概括以下:優勢是節能、速率快、沒必要配合內存刷新電路、可提升總體的工做效率,缺點是集成度低、相同的容量體積較大、並且價格較高,只能少許用於關鍵性系統以提升效率。
緩存的工做原理是當CPU要讀取一個數據時,首先從CPU緩存中查找,找到就當即讀取並送給CPU處理;沒有找到,就從速率相對較慢的內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可使得之後對整塊數據的讀取都從緩存中進行,沒必要再調用內存。正是這樣的讀取機制使CPU讀取緩存的命中率很是高,通常把靜態RAM緩存叫一級緩存,而把後來增長的動態RAM叫二級緩存。
預讀取
當硬盤受到CPU指令控制開始讀取數據時,硬盤上的控制芯片會控制磁頭把正在讀取的簇的下一個或者幾個簇中的數據讀到緩存中,當須要讀取下一個或者幾個簇中的數據的時候,硬盤則不須要再次讀取數據,直接把緩存中的數據傳輸到內存中就能夠了,因爲緩存的速率遠遠高於磁頭讀寫的速率,因此可以達到明顯改善性能的目的。
寫入
當硬盤接到寫入數據的指令以後,並不會立刻將數據寫入到盤片上,而是先暫時存儲在緩存裏,而後發送一個「數據已寫入」的信號給系統,這時系統就會認爲數據已經寫入,並繼續執行下面的工做,而硬盤則在空閒(不進行讀取或寫入的時候)時再將緩存中的數據寫入到盤片上,掉電時,磁頭會藉助慣性將緩存中的數據寫入零磁道之外的暫存區域,等到下次啓動時再將這些數據寫入目的地。
從技術角度上說,高容量緩存的算法是直接影響到硬盤性能發揮的重要因素。更大容量緩存是將來硬盤發展的必然趨勢
最近最少使用算法,最近一段時間內最少被訪問過的行淘汰出局,所以須要爲每行設置一個計數器,LRU算法是把命中行的計數器清零,其餘各行計數器加1。當須要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的算法
CPU在Cache中找到有用的數據被稱爲命中,當Cache中沒有CPU所需的數據時(這時稱爲未命中),CPU才訪問內存。從理論上講,在一顆擁有2級Cache的CPU中,讀取L1 Cache的命中率爲80%。也就是說CPU從L1 Cache中找到的有用數據佔數據總量的80%,剩下的20%從L2 Cache讀取。因爲不能準確預測將要執行的數據,讀取L2的命中率也在80%左右(從L2讀到有用的數據佔總數據的16%)。那麼還有的數據就不得不從內存調用,但這已是一個至關小的比例了。在一些高端領域的CPU(像Intel的Itanium)中,咱們常聽到L3 Cache,它是爲讀取L2 Cache後未命中的數據設計的—種Cache,在擁有L3 Cache的CPU中,只有約5%的數據須要從內存中調用,這進一步提升了CPU的效率。
在BIOS設置中的StandardCMOSSetup(標準CMOS設定)有兩項是用來打開或關閉緩存的:CPUInternalCache設爲Enable時開啓CPU內部的一級緩衝區,若設置爲Disabl則爲關閉,這時系統性能將大大下降;ExternalCache選項是控制主板上二級緩衝區,若是主板上有二級緩存則應設成Enable
感謝您的耐心閱讀,若是您發現文章中有一些沒表述清楚的,或者是不對的地方,請給我留言,你的鼓勵是做者寫做最大的動力,
若是您認爲本文質量不錯,讀後以爲收穫很大,不妨小額贊助我一下,讓我更有動力繼續寫出高質量的文章。
支付寶
微信
做 者 : @mousycoder
原文出處 : http://mousycoder.com/2015/10/14/the-pragmatic-sa-17/
創做時間:2015-9-15
更新時間:2015-10-16