計(jì)算機(jī)執(zhí)行一條指令是什么意思
我們都編寫郭計(jì)算機(jī)程序,比如C語言,程序編寫完成之后,經(jīng)過編譯連接以后,沒有錯(cuò)誤的話,我們就可以直接點(diǎn)擊運(yùn)行,程序便可以執(zhí)行完畢。計(jì)算機(jī)執(zhí)行一條指令的過程,可能我們覺得很簡單,但細(xì)想一下,里面的過程可能并不是很簡單。
這里嘗試從硬件的角度來簡單解釋一下一條指令的執(zhí)行過程。
首先,計(jì)算機(jī)中的任何信息,都是以二進(jìn)制表示的,所以,計(jì)算機(jī)中的指令也不例外。
這里以匯編語言中的匯編指令為例進(jìn)行說明。如圖1所示,每條匯編指令都對應(yīng)這一個(gè)二進(jìn)制數(shù)字,這個(gè)二進(jìn)制數(shù)字就是指令機(jī)器碼。為了說明方便,我們假設(shè)匯編指令A(yù)DD a,1對應(yīng)的機(jī)器碼是一個(gè)四位二進(jìn)制數(shù)字,比如1101。ADD a,1這條指令的作用是把A寄存器的內(nèi)容加1,如果我們假設(shè)A寄存器中的內(nèi)容原來是0,那么,這條指令的執(zhí)行結(jié)果就是寄存器A中的內(nèi)容變成了1。

接下來我們簡單看一下計(jì)算機(jī)指令的執(zhí)行步驟,如圖2所示。首先,計(jì)算機(jī)指令都是放在內(nèi)存中的,這就好像一個(gè)老板交代他的秘書要做多少事情,然后12345列在一張紙條上,那張紙條就相當(dāng)于內(nèi)存。接下來,這個(gè)指令就要由內(nèi)存?zhèn)魉偷紺PU去執(zhí)行,這個(gè)傳送過程是由計(jì)算機(jī)主板上的電路和數(shù)據(jù)線等等設(shè)備實(shí)現(xiàn)的,這個(gè)過程就相當(dāng)于秘書要執(zhí)行老板交代的那些事情,那他就必須按照那張紙條上 的規(guī)定一件件去完成。當(dāng)他從紙條上看到第一件事,并把這件事記進(jìn)自己腦袋瓜的時(shí)候,就相當(dāng)于一條指令由內(nèi)存?zhèn)魉瓦M(jìn)了CPU,CPU就相當(dāng)于人腦。

接下來就是指令的執(zhí)行過程。秘書看到紙條上的第一條指令以后,他的大腦會(huì)對那條指令進(jìn)行分析思考,然后驅(qū)動(dòng)自己的手腳去完成老板交代的第一件事情,對于秘書來說,這個(gè)過程是由他的神經(jīng)系統(tǒng)完成的。同樣,這條指令傳送到CPU以后,如圖2所示的指令寄存器,接下來就必須由CPU的電路系統(tǒng)來執(zhí)行完成。圖2表示,執(zhí)行這條指令的電路系統(tǒng)是運(yùn)算單元,為了方便,我們假設(shè)圖2中運(yùn)算單元的電路大概和圖3類似。
前面已經(jīng)假設(shè),ADD a,1這條指令對應(yīng)的機(jī)器碼是1101,這個(gè)時(shí)候我們只要在圖3 的輸入端
ABCD分別輸入電壓(5v,5v,0v,5v),之后圖3的電路就會(huì)有一個(gè)運(yùn)行結(jié)果Y0--Y9。前面我們已經(jīng)假設(shè),ADD a,1這條指令的運(yùn)行結(jié)果是使得A寄存器的內(nèi)容變成1,這個(gè)時(shí)候我們就可以認(rèn)為Y0--Y9的電壓是Y0--Y8都是0v,而Y9是5V(對應(yīng)數(shù)字1)。

再由圖4看出,ALU(運(yùn)算單元)是和寄存器(累加器)A連接在一起的,所以只要把Y0--Y9的電壓值保存進(jìn)累加器A,那么,ADD a,1這條指令就算執(zhí)行完畢。

從以上過程可以看出,計(jì)算機(jī)執(zhí)行一條指令,和一個(gè)人完成一件事情的過程大概相似,只不過人是由神經(jīng)系統(tǒng)驅(qū)動(dòng)自己的手腳去完成,電腦是CPU驅(qū)動(dòng)電路來完成。