http://zhidao.baidu.com/link?url=OmHYd0uUJ3elyOnx1Qpdw1GGhMQBzwbdKSwR62Dn6j0090-sR0sQWR02THP-uPx7cK6izC0qFMMRTbrEvCMGtq
1 CPU是負責運算和處理的,內存是交換數據的。
當程序或者操作者對CPU發出指令,這些指令和數據暫存在內存里,在CPU空閑時傳送給CPU,CPU處理后把結果輸出到輸出設備上,輸出設備就是顯示器,打印機等。在沒有顯示完之前,這些數據也保存在內存里,如果內存不足,那么系統自動從硬盤上划分一部分空間作為虛擬內存來用。但寫入和讀取的速度 跟物理內存差的很遠很遠,所以,在內存不足的時候,會感到機器反應很慢,硬盤一直在響。
512M的物理內存如果增加到2GB,你會感到電腦變得飛快。但內存512,即使你把CPU從單核換成雙核,加速感覺也不明顯。
如果你本來就有2G內存,再增加2G,使用起來幾乎沒有多少性能的改變。
在理論上,物理內存太大反而會減慢速度,因為它增加了尋址的時間。
所以家用機器推薦使用2GB-4GB足矣。
2 將電腦比作一個加工廠,
CPU就是加工車間,
內存就是加工車間的臨時倉庫
硬盤就是加工的原料倉庫
而操作系統就是協調整間工廠的調度辦公室,
用戶要運行一個游戲,雙擊鼠標,操作系統接收到用戶的指令,將指令傳達給CPU,CPU根據用戶的需要,將運行這個游戲所需要的東西返回給操作系統,操作系統將游戲的運行要求返回給CPU(包括游戲放在硬盤上的哪個地方,運行游戲需要多少CPU資源,多少內存資源,多少聲卡支援,多少顯卡資源),CPU接到信息后,開始向各個硬件設備申請資源(包括從硬盤讀取游戲數據,讓聲卡准備為游戲工作,顯卡准備為游戲工作),等所有硬件資源都准備就緒,CPU就開始處理游戲程序的各種效果(登陸界面,聲音,3D效果等等)用戶就可以看到熟悉的游戲畫面了。
以上是電腦處理每一次用戶操作的大致流程,那內存和CPU有什么關系呢,最初的電腦是是沒有內存的,CPU處理的數據全部直接讀取硬盤內的數據,但是隨着CPU技術的發展,CPU的處理速度日益加快,而硬盤的傳輸速度提升跟不上CPU,就造成了CPU在處理任務的時候,要花費很多時間來等待硬盤的數據傳輸,在一定程度上影響了電腦的整體運行效率,這時,工程師們在CPU和硬盤直接的傳輸通道中間加上了內存,這種內存的存儲速度是硬盤的數倍到幾十倍不等,並在操作系統內制定了相關的預讀功能,
這樣在電腦啟動之后,操作系統就預先將平時最常使用的功能先從硬盤讀取,並放在內存里,在用戶運行常用程序的時候,CPU就直接從內存讀取,而不再去頻繁的訪問硬盤,因此有了內存,電腦的整體性能就得到了很大的提升,
后話:為什么不將內存直接做到CPU里面呢?CPU內部也有它自己的內存的,我們一般稱之為CPU的緩存,根據CPU不同,CPU有1級緩存、二級緩存、這些緩存的作用也跟內存一樣,但速度比內存更快
其實緩存就是內存,內存是整機的緩存,顯存是顯卡的緩存,CPU的CACHE就是CPU的緩存,
3
存工作原理:
內存帶寬一般取決於內存頻率,而總線帶寬最好和內存帶寬保持一致。內存帶寬超過總線帶寬的話,不超頻的情況下,那么也只能按總線帶寬來傳輸數據。那么在這種情況下,內存的頻率是否有變化?
比如:1.假設有一塊總線頻率為800MHZ,並且支持1066MHZ內存的主板上插一根1066MHZ的內存條,(CPU總線800)那么內存帶寬最多只有6.4G/S,而其頻率仍然是1066?還是只有800了?
2.如果在一塊總線頻率為1066的主板上(CPU總線1066)組2根667內存雙通道,那么其內存帶寬為8.5G/S,而其內存頻率是2個667還是2個533?
另外,現在的DDR3號稱雖然延遲時序比DDR2要多,但絕對延遲值卻比DDR2要小,因為要將內存運行頻率計算在內。那么問題就來了:DDR3的絕對延遲值是在其運行頻率100%發揮的前提下的結果,如果內存頻率受到瓶頸限制的話,其絕對延遲值還是這么低嗎?比如:總線頻率為800MHZ,主板支持的情況下,配一根DDR3 1066MHZ的內存,其絕對延遲值是變大了,還是不變?
CPU的原始工作模式
在了解CPU工作原理之前,我們先簡單談談CPU是如何生產出來的。CPU是在特別純凈的硅材料上制造的。一個CPU芯片包含上百萬個精巧的晶體管。人們在一塊指甲蓋大小的硅片上,用化學的方法蝕刻或光刻出晶體管。因此,從這個意義上說,CPU正是由晶體管組合而成的。簡單而言,晶體管就是微型電子開關,它們是構建CPU的基石,你可以把一個晶體管當作一個電燈開關,它們有個操作位,分別代表兩種狀態:ON(開)和OFF(關)。這一開一關就相當於晶體管的連通與斷開,而這兩種狀態正好與二進制中的基礎狀態“0”和“1”對應!這樣,計算機就具備了處理信息的能力。
但你不要以為,只有簡單的“0”和“1”兩種狀態的晶體管的原理很簡單,其實它們的發展是經過科學家們多年的辛苦研究得來的。在晶體管之前,計算機依靠速度緩慢、低效率的真空電子管和機械開關來處理信息。后來,科研人員把兩個晶體管放置到一個硅晶體中,這樣便創作出第一個集成電路,再后來才有了微處理器。
看到這里,你一定想知道,晶體管是如何利用“0”和“1”這兩種電子信號來執行指令和處理數據的呢?其實,所有電子設備都有自己的電路和開關,電子在電路中流動或斷開,完全由開關來控制,如果你將開關設置為OFF,電子將停止流動,如果你再將其設置為ON,電子又會繼續流動。晶體管的這種ON與OFF的切換只由電子信號控制,我們可以將晶體管稱之為二進制設備。這樣,晶體管的ON狀態用“1”來表示,而OFF狀態則用“0”來表示,就可以組成最簡單的二進制數。眾多晶體管產生的多個“1”與“0”的特殊次序和模式能代表不同的情況,將其定義為字母、數字、顏色和圖形。舉個例子,十進位中的1在二進位模式時也是“1”,2在二進位模式時是“10”,3是“11”,4是“100”,5是“101”,6是“110”等等,依此類推,這就組成了計算機工作采用的二進制語言和數據。成組的晶體管聯合起來可以存儲數值,也可以進行邏輯運算和數字運算。加上石英時鍾的控制,晶體管組就像一部復雜的機器那樣同步地執行它們的功能。
CPU的內部結構
現在我們已經大概知道CPU是負責些什么事情,但是具體由哪些部件負責處理數據和執行程序呢?
1.算術邏輯單元ALU(Arithmetic Logic Unit)
ALU是運算器的核心。它是以全加器為基礎,輔之以移位寄存器及相應控制邏輯組合而成的電路,在控制信號的作用下可完成加、減、乘、除四則運算和各種邏輯運算。就像剛才提到的,這里就相當於工廠中的生產線,負責運算數據。
2.寄存器組 RS(Register Set或Registers)
RS實質上是CPU中暫時存放數據的地方,里面保存着那些等待處理的數據,或已經處理過的數據,CPU訪問寄存器所用的時間要比訪問內存的時間短。采用寄存器,可以減少CPU訪問內存的次數,從而提高了CPU的工作速度。但因為受到芯片面積和集成度所限,寄存器組的容量不可能很大。寄存器組可分為專用寄存器和通用寄存器。專用寄存器的作用是固定的,分別寄存相應的數據。而通用寄存器用途廣泛並可由程序員規定其用途。通用寄存器的數目因微處理器而異。
3.控制單元(Control Unit)
正如工廠的物流分配部門,控制單元是整個CPU的指揮控制中心,由指令寄存器IR(Instruction Register)、指令譯碼器ID(Instruction Decoder)和操作控制器0C(Operation Controller)三個部件組成,對協調整個電腦有序工作極為重要。它根據用戶預先編好的程序,依次從存儲器中取出各條指令,放在指令寄存器IR中,通過指令譯碼(分析)確定應該進行什么操作,然后通過操作控制器OC,按確定的時序,向相應的部件發出微操作控制信號。操作控制器OC中主要包括節拍脈沖發生器、控制矩陣、時鍾脈沖發生器、復位電路和啟停電路等控制邏輯。
4.總線(Bus)
就像工廠中各部位之間的聯系渠道,總線實際上是一組導線,是各種公共信號線的集合,用於作為電腦中所有各組成部分傳輸信息共同使用的“公路”。直接和CPU相連的總線可稱為局部總線。其中包括: 數據總線DB(Data Bus)、地址總線AB(Address Bus) 、控制總線CB(Control Bus)。其中,數據總線用來傳輸數據信息;地址總線用於傳送CPU發出的地址信息;控制總線用來傳送控制信號、時序信號和狀態信息等。
CPU的工作流程
由晶體管組成的CPU是作為處理數據和執行程序的核心,其英文全稱是:Central Processing Unit,即中央處理器。首先,CPU的內部結構可以分為控制單元,邏輯運算單元和存儲單元(包括內部總線及緩沖器)三大部分。CPU的工作原理就像一個工廠對產品的加工過程:進入工廠的原料(程序指令),經過物資分配部門(控制單元)的調度分配,被送往生產線(邏輯運算單元),生產出成品(處理后的數據)后,再存儲在倉庫(存儲單元)中,最后等着拿到市場上去賣(交由應用程序使用)。在這個過程中,我們注意到從控制單元開始,CPU就開始了正式的工作,中間的過程是通過邏輯運算單元來進行運算處理,交到存儲單元代表工作的結束。
數據與指令在CPU中的運行
剛才已經為大家介紹了CPU的部件及基本原理情況,現在,我們來看看數據是怎樣在CPU中運行的。我們知道,數據從輸入設備流經內存,等待CPU的處理,這些將要處理的信息是按字節存儲的,也就是以8位二進制數或8比特為1個單元存儲,這些信息可以是數據或指令。數據可以是二進制表示的字符、數字或顏色等等。而指令告訴CPU對數據執行哪些操作,比如完成加法、減法或移位運算。
我們假設在內存中的數據是最簡單的原始數據。首先,指令指針(Instruction Pointer)會通知CPU,將要執行的指令放置在內存中的存儲位置。因為內存中的每個存儲單元都有編號(稱為地址),可以根據這些地址把數據取出,通過地址總線送到控制單元中,指令譯碼器從指令寄存器IR中拿來指令,翻譯成CPU可以執行的形式,然后決定完成該指令需要哪些必要的操作,它將告訴算術邏輯單元(ALU)什么時候計算,告訴指令讀取器什么時候獲取數值,告訴指令譯碼器什么時候翻譯指令等等。
假如數據被送往算術邏輯單元,數據將會執行指令中規定的算術運算和其他各種運算。當數據處理完畢后,將回到寄存器中,通過不同的指令將數據繼續運行或者通過DB總線送到數據緩存器中。
基本上,CPU就是這樣去執行讀出數據、處理數據和往內存寫數據3項基本工作。但在通常情況下,一條指令可以包含按明確順序執行的許多操作,CPU的工作就是執行這些指令,完成一條指令后,CPU的控制單元又將告訴指令讀取器從內存中讀取下一條指令來執行。這個過程不斷快速地重復,快速地執行一條又一條指令,產生你在顯示器上所看到的結果。我們很容易想到,在處理這么多指令和數據的同時,由於數據轉移時差和CPU處理時差,肯定會出現混亂處理的情況。為了保證每個操作准時發生,CPU需要一個時鍾,時鍾控制着CPU所執行的每一個動作。時鍾就像一個節拍器,它不停地發出脈沖,決定CPU的步調和處理時間,這就是我們所熟悉的CPU的標稱速度,也稱為主頻。主頻數值越高,表明CPU的工作速度越快。
如何提高CPU工作效率
既然CPU的主要工作是執行指令和處理數據,那么工作效率將成為CPU的最主要內容,因此,各CPU廠商也盡力使CPU處理數據的速度更快。
根據CPU的內部運算結構,一些制造廠商在CPU內增加了另一個算術邏輯單元(ALU),或者是另外再設置一個處理非常大和非常小的數據浮點運算單元(Floating Point Unit,FPU),這樣就大大加快了數據運算的速度。
而在執行效率方面,一些廠商通過流水線方式或以幾乎並行工作的方式執行指令的方法來提高指令的執行速度。剛才我們提到,指令的執行需要許多獨立的操作,諸如取指令和譯碼等。最初CPU在執行下一條指令之前必須全部執行完上一條指令,而現在則由分布式的電路各自執行操作。也就是說,當這部分的電路完成了一件工作后,第二件工作立即占據了該電路,這樣就大大增加了執行方面的效率。
另外,為了讓指令與指令之間的連接更加准確,現在的CPU通常會采用多種預測方式來控制指令更高效率地執行。