CPU的工作過(guò)程是怎樣的你知道嗎?
CPU的工作過(guò)程
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ǔ)器提取到的指令來(lái)決定其執(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),易于輸出端完成簡(jiǎn)單的普通運(yùn)算和邏輯運(yùn)算(比如加法和位元運(yùn)算)。如果加法運(yùn)算產(chǎn)生一個(gè)對(duì)該cpu處理而言過(guò)大的結(jié)果,在標(biāo)志暫存器里可能會(huì)設(shè)置運(yùn)算溢出(arithmetic overflow)標(biāo)志。
寫回
最終階段,寫回,以一定格式將執(zhí)行階段的結(jié)果簡(jiǎn)單的寫回。運(yùn)算結(jié)果經(jīng)常被寫進(jìn)cpu內(nèi)部的暫存器,以供隨后指令快速存取。在其它案例中,運(yùn)算結(jié)果可能寫進(jìn)速度較慢,但容量較大且較便宜的主記憶體中。某些類型的指令會(huì)操作程序計(jì)數(shù)器,而不直接產(chǎn)生結(jié)果。這些一般稱作“跳轉(zhuǎn)”(jumps),并在程式中帶來(lái)循環(huán)行為、條件性執(zhí)行(透過(guò)條件跳轉(zhuǎn))和函式。許多指令會(huì)改變標(biāo)志暫存器的狀態(tài)位元。這些標(biāo)志可用來(lái)影響程式行為,緣由于它們時(shí)常顯出各種運(yùn)算結(jié)果。例如,以一個(gè)“比較”指令判斷兩個(gè)值大小,根據(jù)比較結(jié)果在標(biāo)志暫存器上設(shè)置一個(gè)數(shù)值。這個(gè)標(biāo)志可藉由隨后跳轉(zhuǎn)指令來(lái)決定程式動(dòng)向。在執(zhí)行指令并寫回結(jié)果之后,程序計(jì)數(shù)器值會(huì)遞增,反覆整個(gè)過(guò)程,下一個(gè)指令周期正常的提取下一個(gè)順序指令。
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7434瀏覽量
163521 -
cpu
+關(guān)注
關(guān)注
68文章
10806瀏覽量
210850
原文標(biāo)題:CPU的工作過(guò)程是怎樣的?
文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論