時鐘周期 機(jī)器周期 指令周期 時鐘周期:時鐘是CPU的動力源,CPU之所以能夠快速工作就是由時鐘驅(qū)動,時鐘不停的振蕩,CPU就不停的工作。時鐘周期是CPU內(nèi)部衡量時長的最基本單位。 機(jī)器周期:也叫CPU周期,規(guī)定為CPU訪問一次內(nèi)存所需要的最短時間。這就是說,一條指令的取值階段(從內(nèi)存讀取)就需要一個機(jī)器周期。一個機(jī)器周期可能由若干個時鐘周期組成。 指令周期:一條指令完成所需要的時間,可能由若干個機(jī)器周期組成。 因此,從時間長度來說,指令周期 > 機(jī)器周期 > 時鐘周期 ![]() 精簡指令集與復(fù)雜指令集 精簡指令集(RISC)與復(fù)雜指令集(CISC)是相對于指令執(zhí)行時長來說的,而不是指令本身的復(fù)雜度。精簡指令集追求的是在單個機(jī)器周期里面完成指令。 舉個例子,如果對于"啟動汽車"這個功能,復(fù)雜指令集可能直接就是一條指令,告訴處理器"啟動汽車",那么處理器內(nèi)部會完成整個啟動過程,發(fā)出這條復(fù)雜指令的人不用關(guān)心處理器的內(nèi)部實(shí)現(xiàn)。如果使用精簡指令集,就得告訴處理器3條指令: 1 插入鑰匙指令 可以看到,完成同一件事,復(fù)雜指令集使用了一條指令,而精簡指令集需要3條指令來完成一個復(fù)雜動作。 接下來看一個實(shí)際的編程例子,對于乘法操作來說,復(fù)雜指令集使用一條簡單指令MUL來完成: mul A, B 當(dāng)處理器看到這樣一條指令,內(nèi)部會做如下操作: 1. 從內(nèi)存中加載地址A上的數(shù),存放在寄存器中 接下來看使用精簡指令集如何完成這項(xiàng)工作: LOAD RA, A ; 從內(nèi)存讀取數(shù)據(jù)A LOAD RB, B ; 從內(nèi)存讀取數(shù)據(jù)B PROD RA, RB ; 計(jì)算兩者乘積 STORE A, RA ; 將寄存器中的結(jié)果寫回內(nèi)存 雖然從代碼量來看,完成同一件事精簡指令集占用的空間更多,但是這些指令都很簡單,不需要復(fù)雜的硬件邏輯來進(jìn)行解碼,可以節(jié)約晶體管的數(shù)量,處理器就可以更小。 同時,從編譯器的角度看,復(fù)雜指令集CPU對編譯器隱藏了實(shí)現(xiàn)細(xì)節(jié),編譯器能夠優(yōu)化代碼的可能性很小,而精簡指令集CPU的執(zhí)行過程都暴露出來,更有利于編譯器進(jìn)行代碼優(yōu)化。 指令集與處理器架構(gòu) 目前流行的兩種指令集:精簡指令集與復(fù)雜指令集都有與之對應(yīng)的處理器架構(gòu)。所謂處理器架構(gòu),可以看成是使用一堆硬件電路來完成指令集中的指令,使用相同指令集的處理器,可能會有不同的架構(gòu)設(shè)計(jì)。使用精簡指令集的架構(gòu)有:PowerPC架構(gòu)、ARM架構(gòu)、MIPS架構(gòu);使用復(fù)雜指令集的架構(gòu)有x86架構(gòu)。 ![]() 參考鏈接: 本文轉(zhuǎn)自:白羊哈哈,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。如不支持轉(zhuǎn)載,請聯(lián)系小編demi@刪除。 |
|