專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

CPU學習心得續(xù)集2

作者:又見飛刀   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年12月07日   【字體:

 
        一直試圖用電路的方式去理解程序的運行,最終還是百撕不得其姐。
        數(shù)字電路的核心就是各種各樣的門,有點像諸葛亮布的八卦陣,CPU自然是復雜化的數(shù)字電路,內(nèi)部充斥著海量的門。注:這里沒有艷照門,莫奈門。

        我在想,假如連接這些門的不是電路,而是一根根橡膠管,我在橡膠管的開始位置(震蕩電路)吹一口氣,有哪些門可以被吹開呢?
        在第一個周期內(nèi),應該只有0000H里面的門會開,假如數(shù)據(jù)為01010101,那么相應為1的門就會打開,0的門是關(guān)閉的。而根據(jù)這些信息,假設(shè)01010101指向了001AH這個地址,好了好了,知道了,我再吹第二口氣。
        這時候別的門依舊是關(guān)閉的,0000H或許保持不變,而001AH卻有門被打開,這些門的狀態(tài)是設(shè)定好的(編程),由于我的這口氣有著強大的力量,我吹的這個地址的八扇門(8位機)會發(fā)生連鎖反應,吹開其它的門(運算),假設(shè)001AH的數(shù)據(jù)為: MOV A,#20H,氣流會根據(jù)指令去吹累加器A的地址,然后打開相應的門使之數(shù)據(jù)等于20H。至于為什么看到這個指令就會去吹累加器地址,是因為MOV A 這個指令就是打開了累加器A的門,它就是打開累加器A的密碼。這個指令是唯一的,不重復的。
        回到電路的思路上來,負責執(zhí)行MOV指令的門電路一直沒有閑著,它隨時掃描著各個地址中有沒有MOV字眼,有的話直接執(zhí)行,同理,其它的門電路也是如此,程序員不管它們是什么門電路,統(tǒng)稱為指令,這些指令是INTER公司設(shè)計好的,拿來用就行了。對于我這種鉆牛角尖的,它們就是一個個門的組合,它們每個周期都在內(nèi)存里掃描有沒有自己的工作,有就工作,沒有就繼續(xù)掃描。

        不說那些外行的話了,很多東西是想當然的,可能不正確。
        CPU內(nèi)的各種數(shù)字電路,在每個脈沖周期都在工作,沒有接到指令也在工作,它們在干什么呢?
        我們知道,CPU開發(fā)的時候,系統(tǒng)提供了很多指令,如MOV、JMP等等,我們稱之為指令集。我猜想這些不同的指令,實質(zhì)上就是對應著CPU內(nèi)部不同的數(shù)字電路,所有的數(shù)字電路都擁有共同的特點,就是都具有輸入和輸出端,這些輸入和輸出端是接在總線上的,輸入端每時每刻都在監(jiān)視著總線上電平的變化,輸出端每時每刻都在輸出給總線相應的電平。
        內(nèi)存同樣也是數(shù)字電路,它也在總線上接著,內(nèi)存的工作相對更簡單,就是感知總線上的電平高低,你高了我也高,你低了我也低。但是總這樣高高低低的也不行,這就像你拿起筆總在一個方格里寫字一樣,寫了擦,擦了寫,文章還是出不來,怎么辦?筆要動才行,這里就需要移位電路,每一個周期執(zhí)行完畢,移位電路就要工作一次, 這就是前面學過的指針的概念。對程序員來說是指針,對硬件開發(fā)者來說是移位電路。

        大概的脈絡(luò)在腦子里基本有點狀態(tài)了,我們不妨先把龐大的超大規(guī)模的CPU系統(tǒng)簡化一下,這樣更好理解。假設(shè)CPU內(nèi)部只有一個數(shù)字電路,內(nèi)存只有8個字節(jié)(8位機同時傳輸8個字節(jié))。
        現(xiàn)在通電開始工作,脈沖電路發(fā)出脈沖, 數(shù)字電路的8個輸入端在總線上的8條支路上分別感知電平,假設(shè)內(nèi)存的數(shù)據(jù)為00001111,那么數(shù)字電路的8個支路會檢測到低低低低高高高高8個電平,然后數(shù)字電路馬上得出運算結(jié)果,假設(shè)為10101010,并送到總線上去。請注意,這里數(shù)字電路輸出數(shù)據(jù)的前提是00001111這個輸入值里面包含自己需要的識別碼,就像密碼一樣,如果不包含,對不起我不輸出任何數(shù)據(jù),保持原電平不變,假設(shè)密碼為0000,那么每當它看到這個0000就會立即輸出數(shù)據(jù),這個識別的密碼是唯一的,不能和別的數(shù)字電路重復。

關(guān)閉窗口

相關(guān)文章