|
不說那些外行的話了,很多東西是想當(dāng)然的,可能不正確。
CPU內(nèi)的各種數(shù)字電路,在每個(gè)脈沖周期都在工作,沒有接到指令也在工作,它們?cè)诟墒裁茨兀?br />
我們知道,CPU開發(fā)的時(shí)候,系統(tǒng)提供了很多指令,如MOV、JMP等等,我們稱之為指令集。我猜想這些不同的指令,實(shí)質(zhì)上就是對(duì)應(yīng)著CPU內(nèi)部不同的數(shù)字電路,所有的數(shù)字電路都擁有共同的特點(diǎn),就是都具有輸入和輸出端,這些輸入和輸出端是接在總線上的,輸入端每時(shí)每刻都在監(jiān)視著總線上電平的變化,輸出端每時(shí)每刻都在輸出給總線相應(yīng)的電平。
內(nèi)存同樣也是數(shù)字電路,它也在總線上接著,內(nèi)存的工作相對(duì)更簡(jiǎn)單,就是感知總線上的電平高低,你高了我也高,你低了我也低。但是總這樣高高低低的也不行,這就像你拿起筆總在一個(gè)方格里寫字一樣,寫了擦,擦了寫,文章還是出不來,怎么辦?筆要?jiǎng)硬判校@里就需要移位電路,每一個(gè)周期執(zhí)行完畢,移位電路就要工作一次, 這就是前面學(xué)過的指針的概念。對(duì)程序員來說是指針,對(duì)硬件開發(fā)者來說是移位電路。
大概的脈絡(luò)在腦子里基本有點(diǎn)狀態(tài)了,我們不妨先把龐大的超大規(guī)模的CPU系統(tǒng)簡(jiǎn)化一下,這樣更好理解。假設(shè)CPU內(nèi)部只有一個(gè)數(shù)字電路,內(nèi)存只有8個(gè)字節(jié)(8位機(jī)同時(shí)傳輸8個(gè)字節(jié))。
現(xiàn)在通電開始工作,脈沖電路發(fā)出脈沖, 數(shù)字電路的8個(gè)輸入端在總線上的8條支路上分別感知電平,假設(shè)內(nèi)存的數(shù)據(jù)為00001111,那么數(shù)字電路的8個(gè)支路會(huì)檢測(cè)到低低低低高高高高8個(gè)電平,然后數(shù)字電路馬上得出運(yùn)算結(jié)果,假設(shè)為10101010,并送到總線上去。請(qǐng)注意,這里數(shù)字電路輸出數(shù)據(jù)的前提是00001111這個(gè)輸入值里面包含自己需要的識(shí)別碼,就像密碼一樣,如果不包含,對(duì)不起我不輸出任何數(shù)據(jù),保持原電平不變,假設(shè)密碼為0000,那么每當(dāng)它看到這個(gè)0000就會(huì)立即輸出數(shù)據(jù),這個(gè)識(shí)別的密碼是唯一的,不能和別的數(shù)字電路重復(fù)。
|
|