一、寄存器簡介
寄存器,是集成電路中非常重要的一種存儲單元,通常由觸發(fā)器組成。在集成電路設計中,寄存器可分為電路內部使用的寄存器和充當內外部接口的寄存器這兩類。內部寄存器不能被外部電路或軟件訪問,只是為內部電路的實現存儲功能或滿足電路的時序要求。而接口寄存器可以同時被內部電路和外部電路或軟件訪問,CPU中的寄存器就是其中一種,作為軟硬件的接口,為廣泛的通用編程用戶所熟知。
寄存器特點:
?、偌拇嫫魑挥贑PU內部,數量很少,僅十四個
?、诩拇嫫魉艽鎯Φ臄祿灰欢ㄊ?bit,有一些寄存器可以存儲16bit數據,對于386/486處理器中的一些寄存器則能存儲32bit數據
?、勖總€內部寄存器都有一個名字,而沒有類似存儲器的地址編號。
寄存器分類:
數據寄存器-用來儲存整數數字(參考以下的浮點寄存器)。在某些簡單/舊的CPU,特別的數據寄存器是累加器,作為數學計算之用。
地址寄存器-持有存儲器地址,以及用來訪問存儲器。在某些簡單/舊的CPU里,特別的地址寄存器是索引寄存器(可能出現一個或多個)。
通用目的寄存器(GPRs)-可以保存數據或地址兩者,也就是說他們是結合數據/地址寄存器的功用。
浮點寄存器(FPRs)-用來儲存浮點數字。
常數寄存器-用來持有只讀的數值(例如0、1、圓周率等等)。
向量寄存器-用來儲存由向量處理器運行SIMD(SingleInstruction,MultipleData)指令所得到的數據。
特殊目的寄存器-儲存CPU內部的數據,像是程序計數器(或稱為指令指針),堆棧寄存器,以及狀態(tài)寄存器(或稱微處理器狀態(tài)字組)。
指令寄存器(instructionregister)-儲存現在正在被運行的指令
索引寄存器(indexregister)-是在程序運行實用來更改運算對象地址之用。
在某些架構下,模式指示寄存器(也稱為“機器指示寄存器”)儲存和設置跟處理器自己有關的數據。由于他們的意圖目的是附加到特定處理器的設計,因此他們并不被預期會成微處理器世代之間保留的標準。
有關從隨機存取存儲器提取信息的寄存器與CPU(位于不同芯片的儲存寄存器集合)
存儲器緩沖寄存器(Memorybufferregister)
存儲器數據寄存器(Memorydataregister)
存儲器地址寄存器(Memoryaddressregister)
存儲器型態(tài)范圍寄存器(MemoryTypeRangeRegisters)
寄存器工作原理:
寄存器的功能十分重要,CPU對存儲器中的數據進行處理時,往往先把數據取到內部寄存器中,而后再作處理。外部寄存器是計算機中其它一些部件上用于暫存數據的寄存器,它與CPU之間通過“端口”交換數據,外部寄存器具有寄存器和內存儲器雙重特點。有些時候我們常把外部寄存器就稱為“端口”,這種說法不太嚴格,但經常這樣說。
外部寄存器雖然也用于存放數據,但是它保存的數據具有特殊的用途。某些寄存器中各個位的0、1狀態(tài)反映了外部設備的工作狀態(tài)或方式;還有一些寄存器中的各個位可對外部設備進行控制;也有一些端口作為CPU同外部設備交換數據的通路。所以說,端口是CPU和外設間的聯系橋梁。CPU對端口的訪問也是依據端口的“編號”(地址),這一點又和訪問存儲器一樣。不過考慮到機器所聯接的外設數量并不多,所以在設計機器的時候僅安排了1024個端口地址,端口地址范圍為0--3FFH。
二、內存簡介
內存是計算機中重要的部件之一,它是與CPU進行溝通的橋梁。計算機中所有程序的運行都是在內存中進行的,因此內存的性能對計算機的影響非常大。內存(Memory)也被稱為內存儲器,其作用是用于暫時存放CPU中的運算數據,以及與硬盤等外部存儲器交換的數據。只要計算機在運行中,CPU就會把需要運算的數據調到內存中進行運算,當運算完成后CPU再將結果傳送出來,內存的運行也決定了計算機的穩(wěn)定運行。內存是由內存芯片、電路板、金手指等部分組成的。
內存容量:
內存容量同硬盤、軟盤等存儲器容量單位都是相同的,它們的基本單位都是字節(jié)(B),并且:
1024B=1KB=1024字節(jié)=2^10字節(jié)(^代表次方)
1024KB=1MB=1048576字節(jié)=2^20字節(jié)1024MB=1GB=1073741824字節(jié)=2^30字節(jié)
1024GB=1TB=1099511627776字節(jié)=2^40字節(jié)
1024TB=1PB=1125899906842624字節(jié)=2^50字節(jié)
1024PB=1EB=1152921504606846976字節(jié)=2^60字節(jié)
1024EB=1ZB=1180591620717411303424字節(jié)=2^70字節(jié)
1024ZB=1YB=1208925819614629174706176字節(jié)=2^80字節(jié)
內存大?。?/strong>
內存的種類和運行頻率會對性能有一定影響,不過相比之下,容量的影響更加大。在其他配置相同的條件下內存越大機器性能也就越高。內存的價格小幅走低,2011年前后,電腦內存的配置越來越大,一般都在1G以上,更有2G、4G、6G內存的電腦。
內存作為電腦中重要的配件之一,內存容量的大小確實能夠直接關系到整個系統的性能。因此,內存容量已經越來越受到消費者的關注。尤其在目前WIN7操作系統已經開始取代XP之時,對于最新的WIN7操作系統,多數消費者都認為大容量能讓其內存評分得到提升。
內存的工作原理。從功能上理解,我們可以將內存看作是內存控制器與CPU之間的橋梁,內存也就相當于“倉庫”。顯然,內存的容量決定“倉庫”的大小,而內存的速度決定“橋梁”的寬窄,兩者缺一不可,這也就是我們常常說道的“內存容量”與“內存速度”。
內存帶寬的計算方法并不復雜,大家可以遵循如下的計算公式:帶寬=總線寬度×總線頻率×一個時鐘周期內交換的數據包個數。很明顯,在這些乘數因子中,每個都會對最終的內存帶寬產生極大的影響。在PCMarkVantage測試中,可以看到2GB和4GBDDR3-1600內存性能比較接近,其中2GB內存僅在啟動一些辦公軟件時候比較落后,畢竟少了一半容量所以運行起來比較吃力。而在3DmarkVantage游戲性能測試中,我們可以看出在Win7系統下,2GB和4GB內存的性能區(qū)別不是很大,成績非常接近。同時,在WIN7環(huán)境下,2GB內存與4GB內存差別很小,有些情況下甚至沒有差別,這時如果想提高內存性能,光想著升級容量意義并不是很大。
內存選購方法:
做工要精良
對于選擇內存來說,最重要的是穩(wěn)定性和性能,而內存的做工水平直接會影響到性能、穩(wěn)定以及超頻。
內存顆粒的好壞直接影響到內存的性能,可以說也是內存最重要的核心元件。所以大家在購買時,盡量選擇大廠生產出來的內存顆粒,一般常見的內存顆粒廠商有三星、現代、鎂光、南亞、茂矽等,它們都是經過完整的生產工序,因此在品質上都更有保障。而采用這些頂級大廠內存顆粒的內存條品質性能,必然會比其他雜牌內存顆粒的產品要高出許多。
內存PCB電路板的作用是連接內存芯片引腳與主板信號線,因此其做工好壞直接關系著系統穩(wěn)定性。目前主流內存PCB電路板層數一般是6層,這類電路板具有良好的電氣性能,可以有效屏蔽信號干擾。而更優(yōu)秀的高規(guī)格內存往往配備了8層PCB電路板,以起到更好的效能。
SPD隱藏信息
SPD信息可以說非常重要,它能夠直觀反映出內存的性能及體制。它里面存放著內存可以穩(wěn)定工作的指標信息以及產品的生產,廠家等信息。不過,由于每個廠商都能對SPD進行隨意修改,因此很多雜牌內存廠商會將SPD參數進行修改或者直接COPY名牌產品的SPD,但是一旦上機用軟件檢測就會原形畢露。
因此,大家在購買內存以后,回去用常用的Everest、CPU-Z等軟件一查即可明白。不過需要注意的是,對于大品牌內存來說SPD參數是非常重要的,但是對于雜牌內存來說,SPD的信息并不值得完全相信。
假冒返修產品
目前有一些內存往往使用了不同品牌、型號的內存顆粒,大家一眼就可以看出區(qū)別。同時有些無孔不入的JS也會采用打磨內存顆粒的作假手段,然后再加印上新的編號參數。不過仔細觀察,就會發(fā)現打磨過后的芯片比較暗淡無光,有起毛的感覺,而且加印上的字跡模糊不清晰。這些一般都是假冒的內存產品,需要注意。
此外,大家還要觀察PCB電路板是否整潔,有無毛刺等等,金手指是否很明顯有經過插拔所留下的痕跡,如果有,則很有可能是返修內存產品(當然也不排除有廠家出廠前經過測試,不過比較少數)。需要提醒大家的是,返修和假冒內存無論多么便宜都不值得購買,因為其安全隱患十分嚴重。
三、寄存器比內存快的原因分析
原因一:距離不同
距離不是主要因素,但是最好懂,所以放在最前面說。內存離CPU比較遠,所以要耗費更長的時間讀取。
以3GHz的CPU為例,電流每秒鐘可以振蕩30億次,每次耗時大約為0.33納秒。光在1納秒的時間內,可以前進30厘米。也就是說,在CPU的一個時鐘周期內,光可以前進10厘米。因此,如果內存距離CPU超過5厘米,就不可能在一個時鐘周期內完成數據的讀取,這還沒有考慮硬件的限制和電流實際上達不到光速。相比之下,寄存器在CPU內部,當然讀起來會快一點。
距離對于桌面電腦影響很大,對于手機影響就要小得多。手機CPU的時鐘頻率比較慢(iPhone5s為1.3GHz),而且手機的內存緊挨著CPU。
原因二:硬件設計不同
蘋果公司新推出的iPhone5s,CPU是A7,寄存器有6000多位(31個64位寄存器,加上32個128位寄存器)。而iPhone5s的內存是1GB,約為80億位(bit)。這意味著,高性能、高成本、高耗電的設計可以用在寄存器上,反正只有6000多位,而不能用在內存上。因為每個位的成本和能耗只要增加一點點,就會被放大80億倍。
事實上確實如此,內存的設計相對簡單,每個位就是一個電容和一個晶體管,而寄存器的設計則完全不同,多出好幾個電子元件。并且通電以后,寄存器的晶體管一直有電,而內存的晶體管只有用到的才有電,沒用到的就沒電,這樣有利于省電。這些設計上的因素,決定了寄存器比內存讀取速度更快。
原因三:工作方式不同
寄存器的工作方式很簡單,只有兩步:(1)找到相關的位,(2)讀取這些位。
內存的工作方式就要復雜得多:
?。?)找到數據的指針。(指針可能存放在寄存器內,所以這一步就已經包括寄存器的全部工作了。)
(2)將指針送往內存管理單元(MMU),由MMU將虛擬的內存地址翻譯成實際的物理地址。
(3)將物理地址送往內存控制器(memorycontroller),由內存控制器找出該地址在哪一根內存插槽(bank)上。
?。?)確定數據在哪一個內存塊(chunk)上,從該塊讀取數據。
(5)數據先送回內存控制器,再送回CPU,然后開始使用。
內存的工作流程比寄存器多出許多步。每一步都會產生延遲,累積起來就使得內存比寄存器慢得多。
為了緩解寄存器與內存之間的巨大速度差異,硬件設計師做出了許多努力,包括在CPU內部設置緩存、優(yōu)化CPU工作方式,盡量一次性從內存讀取指令所要用到的全部數據等等。
評論
查看更多