當(dāng)我們在選購電腦、手機(jī)的時(shí)候,銷售人員都會(huì)告訴我們電腦、手機(jī)的配置,都會(huì)提到CPU,朋友也會(huì)提醒注意下CPU。那么CPU到底是什么?
CPU的英文全稱是Central Processing Unit,翻譯成中文也就是中央處理器。cpu有著處理指令、執(zhí)行操作、控制時(shí)間、處理數(shù)據(jù)四大作用,打個(gè)比喻來說,cpu就像我們的大腦,幫我們完成各種各樣的生理活動(dòng)。因此如果沒有cpu,那么電腦就是一堆廢物,無法工作。
CPU從存儲(chǔ)器或高速緩沖存儲(chǔ)器中取出指令,放入指令寄存器,并對(duì)指令譯碼。它把指令分解成一系列的微操作,然后發(fā)出各種控制命令,執(zhí)行微操作系列,從而完成一條指令的執(zhí)行。指令是計(jì)算機(jī)規(guī)定執(zhí)行操作的類型和操作數(shù)的基本命令。指令是由一個(gè)字節(jié)或者多個(gè)字節(jié)組成,其中包括操作碼字段、一個(gè)或多個(gè)有關(guān)操作數(shù)地址的字段以及一些表征機(jī)器狀態(tài)的狀態(tài)字以及特征碼。有的指令中也直接包含操作數(shù)本身。
處理器基本知識(shí)
處理器:超大規(guī)模集成電路,就是模電里說的集成電路,不同的是它所要做的就是處理機(jī)器碼,對(duì)應(yīng)機(jī)器碼的不同做出不同的處理。比較出名的處理器廠商有inter ,AMD ,IBM,以及ARM~~ 其中inter主要是PC機(jī)上,而ARM主要在手機(jī)上。
處理器:Center Process Unit - 》 中央處理器 具有運(yùn)算器跟控制器功能的大規(guī)模集成電路。
處理器的基本組成包括:
1.運(yùn)算器(ALU,Arithmetic Logic Unit)
2.高速緩存儲(chǔ)器(Cache)
3.實(shí)現(xiàn)ALU與Data聯(lián)系的Data
4.控制及狀態(tài)總線(Bus)
處理器架構(gòu):
處理器架構(gòu)代表了各個(gè)部件的排列組合方式,處理器就像是計(jì)算機(jī)的心臟,它除了可以運(yùn)算一些東西外其實(shí)也不會(huì)什么,真正要把它計(jì)算出來的東西實(shí)現(xiàn)出來的還是要依靠外面的設(shè)備。而如何把CPU跟外面的設(shè)備有序的鏈接起來就是處理器架構(gòu)要做的事情了。處理器架構(gòu)是有一些規(guī)范的,沒有規(guī)范的話,拿給別人用別人也不知道怎么用,現(xiàn)在主流的處理器架構(gòu)分為兩類:一個(gè)是intel系列CPU,另一個(gè)是AMD系列CPU,了解這些架構(gòu)對(duì)于這些架構(gòu)怎么用以后把CPU的說明書拿來看就清楚了。
中央處理器cpu由什么組成
CPU包括運(yùn)算邏輯部件、寄存器部件和控制部件等。
邏輯部件
英文Logic components;運(yùn)算邏輯部件??梢詧?zhí)行定點(diǎn)或浮點(diǎn)算術(shù)運(yùn)算操作、移位操作以及邏輯操作,也可執(zhí)行地址運(yùn)算和轉(zhuǎn)換。
寄存器
寄存器部件,包括寄存器、專用寄存器和控制寄存器。 通用寄存器又可分定點(diǎn)數(shù)和浮點(diǎn)數(shù)兩類,它們用來保存指令執(zhí)行過程中臨時(shí)存放的寄存器操作數(shù)和中間(或最終)的操作結(jié)果。 通用寄存器是中央處理器的重要部件之一。
控制部件
英文Control unit;控制部件,主要是負(fù)責(zé)對(duì)指令譯碼,并且發(fā)出為完成每條指令所要執(zhí)行的各個(gè)操作的控制信號(hào)。
其結(jié)構(gòu)有兩種:一種是以微存儲(chǔ)為核心的微程序控制方式;一種是以邏輯硬布線結(jié)構(gòu)為主的控制方式。
微存儲(chǔ)中保持微碼,每一個(gè)微碼對(duì)應(yīng)于一個(gè)最基本的微操作,又稱微指令;各條指令是由不同序列的微碼組成,這種微碼序列構(gòu)成微程序。中央處理器在對(duì)指令譯碼以后,即發(fā)出一定時(shí)序的控制信號(hào),按給定序列的順序以微周期為節(jié)拍執(zhí)行由這些微碼確定的若干個(gè)微操作,即可完成某條指令的執(zhí)行。
簡單指令是由(3~5)個(gè)微操作組成,復(fù)雜指令則要由幾十個(gè)微操作甚至幾百個(gè)微操作組成。
中央處理器的作用
CPU從存儲(chǔ)器或高速緩沖存儲(chǔ)器中取出指令,放入指令寄存器,并對(duì)指令譯碼。它把指令分解成一系列的微操作,然后發(fā)出各種控制命令,執(zhí)行微操作系列,從而完成一條指令的執(zhí)行。指令是計(jì)算機(jī)規(guī)定執(zhí)行操作的類型和操作數(shù)的基本命令。指令是由一個(gè)字節(jié)或者多個(gè)字節(jié)組成,其中包括操作碼字段、一個(gè)或多個(gè)有關(guān)操作數(shù)地址的字段以及一些表征機(jī)器狀態(tài)的狀態(tài)字以及特征碼。有的指令中也直接包含操作數(shù)本身。
提取
第一階段,提取,從存儲(chǔ)器或高速緩沖存儲(chǔ)器中檢索指令(為數(shù)值或一系列數(shù)值)。由程序計(jì)數(shù)器(Program Counter)指定存儲(chǔ)器的位置。(程序計(jì)數(shù)器保存供識(shí)別程序位置的數(shù)值。換言之,程序計(jì)數(shù)器記錄了CPU在程序里的蹤跡。)
解碼
CPU根據(jù)存儲(chǔ)器提取到的指令來決定其執(zhí)行行為。在解碼階段,指令被拆解為有意義的片段。根據(jù)CPU的指令集架構(gòu)(ISA)定義將數(shù)值解譯為指令。一部分的指令數(shù)值為運(yùn)算碼(Opcode),其指示要進(jìn)行哪些運(yùn)算。其它的數(shù)值通常供給指令必要的信息,諸如一個(gè)加法(Addition)運(yùn)算的運(yùn)算目標(biāo)。
執(zhí)行
在提取和解碼階段之后,緊接著進(jìn)入執(zhí)行階段。該階段中,連接到各種能夠進(jìn)行所需運(yùn)算的CPU部件。
例如,要求一個(gè)加法運(yùn)算,算術(shù)邏輯單元(ALU,Arithmetic Logic Unit)將會(huì)連接到一組輸入和一組輸出。輸入提供了要相加的數(shù)值,而輸出將含有總和的結(jié)果。ALU內(nèi)含電路系統(tǒng),易于輸出端完成簡單的普通運(yùn)算和邏輯運(yùn)算(比如加法和位元運(yùn)算)。如果加法運(yùn)算產(chǎn)生一個(gè)對(duì)該CPU處理而言過大的結(jié)果,在標(biāo)志暫存器里可能會(huì)設(shè)置運(yùn)算溢出(Arithmetic Overflow)標(biāo)志。
寫回
最終階段,寫回,以一定格式將執(zhí)行階段的結(jié)果簡單的寫回。運(yùn)算結(jié)果經(jīng)常被寫進(jìn)CPU內(nèi)部的暫存器,以供隨后指令快速存取。在其它案例中,運(yùn)算結(jié)果可能寫進(jìn)速度較慢,但容量較大且較便宜的主記憶體中。某些類型的指令會(huì)操作程序計(jì)數(shù)器,而不直接產(chǎn)生結(jié)果。這些一般稱作“跳轉(zhuǎn)”(Jumps),并在程式中帶來循環(huán)行為、條件性執(zhí)行(透過條件跳轉(zhuǎn))和函式。許多指令會(huì)改變標(biāo)志暫存器的狀態(tài)位元。這些標(biāo)志可用來影響程式行為,緣由于它們時(shí)常顯出各種運(yùn)算結(jié)果。例如,以一個(gè)“比較”指令判斷兩個(gè)值大小,根據(jù)比較結(jié)果在標(biāo)志暫存器上設(shè)置一個(gè)數(shù)值。這個(gè)標(biāo)志可藉由隨后跳轉(zhuǎn)指令來決定程式動(dòng)向。在執(zhí)行指令并寫回結(jié)果之后,程序計(jì)數(shù)器值會(huì)遞增,反覆整個(gè)過程,下一個(gè)指令周期正常的提取下一個(gè)順序指令。
處理器工作過程
比如我們寫的C語言代碼亦或者是匯編代碼,在通過編譯器編譯成機(jī)器碼后發(fā)送給內(nèi)存,而處理器就是從內(nèi)存里拿那些機(jī)器碼來一條一條執(zhí)行,具體執(zhí)行過程如下
取址,譯碼,執(zhí)行--》CUP上處理數(shù)據(jù)通過這種三級(jí)流水線操作來實(shí)現(xiàn)機(jī)器碼內(nèi)部的功能 不排除有些CPU有多于3級(jí)的流水線(多一級(jí)流水線就多一個(gè)準(zhǔn)備,會(huì)提升執(zhí)行質(zhì)量與效率),但這三個(gè)流水線是必須存在的
每一級(jí)流水線要做的工作如下:
取址:從存儲(chǔ)器中找到機(jī)器碼
譯碼:把機(jī)器碼翻譯成有意義的片段
執(zhí)行:執(zhí)行所翻譯后的代碼段
指令集:
就是CPU能夠識(shí)別的有意義的機(jī)器碼段的集合(舉個(gè)例子,比如機(jī)器碼0X000112120780,CPU會(huì)讀取這個(gè)機(jī)器碼,然后再對(duì)比自己的指令集,查出這個(gè)機(jī)器碼具體要做什么,而這具體要做什么的信息的集合就是指令集)。主要有它們之間的區(qū)別 前兩者主要是指令長度,其實(shí)RISC指令集是從CISC指令集里比較常用的指令的一個(gè)集合,ARM就是用RISC,而X86是用CISC,其實(shí)RISC是從CISC中提煉出來的,但通過RISC指令間的配合也能實(shí)現(xiàn)CISC中的指令。
1.CISC指令集,也稱為復(fù)雜指令集,英文名是CISC(Complex Instruction Set Computer) 使用此類指令集的CPU用 inter 的X86
2.RISC指令集,精簡指令集,英文名(Reduced Instruction Set Computing ) 使用此類指令集的CPU用ARM大多數(shù)芯片
3.IA-64指令集,精確并行指令計(jì)算機(jī)。
處理器技術(shù):
如何讓處理器更加高效的工作。
多線程,簡稱SMT,線程其實(shí)就是正在運(yùn)行的程序。而多線程就是讓多個(gè)程序同時(shí)在CPU上跑,當(dāng)然我們知道單核CUP一次只能執(zhí)行一個(gè)程序的,那么我們要如何才能夠讓多個(gè)程序在一個(gè)CPU上跑?道理很簡單,就是你跑一下,我再跑一下。讓多個(gè)線程一個(gè)跑一下,由于跑的很快,所以我們使用者是不會(huì)感覺他們之間的停頓的,也就是說,我們會(huì)認(rèn)為他們同時(shí)在跑。
多核心,簡稱CMP(Chip Multiprocessors,簡稱CMP ),單芯片多處理器,就是多個(gè)處理器在同一個(gè)芯片中,可以這樣做的原因是元器件越來越小制成越來越高,這樣做可以節(jié)省芯片體積,又能提高程序運(yùn)行效率。這就是我們的手機(jī)為什么越多核賣的又并不是很貴的原因,當(dāng)然也并不是越多核心越好,這個(gè)買多核心手機(jī)的人應(yīng)該可以體會(huì),因?yàn)橹噶罘衷诓煌幚砥骼镞\(yùn)行,雖然增加了它的執(zhí)行效率但是最后要把它們的數(shù)據(jù)組裝起來也是要費(fèi)一番功夫的,所以并不是越多核心越好。
評(píng)論