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