<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CPU學(xué)習(xí)心得續(xù)集2

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

          作者: 時(shí)間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
          一直試圖用電路的方式去理解程序的運(yùn)行,最終還是百撕不得其姐。

          數(shù)字電路的核心就是各種各樣的門,有點(diǎn)像諸葛亮布的八卦陣,CPU自然是復(fù)雜化的數(shù)字電路,內(nèi)部充斥著海量的門。注:這里沒有艷照門,莫奈門。

          本文引用地址:http://www.ex-cimer.com/article/201612/324207.htm

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

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

          大概的脈絡(luò)在腦子里基本有點(diǎn)狀態(tài)了,我們不妨先把龐大的超大規(guī)模的CPU系統(tǒng)簡化一下,這樣更好理解。假設(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ì)檢測到低低低低高高高高8個(gè)電平,然后數(shù)字電路馬上得出運(yùn)算結(jié)果,假設(shè)為10101010,并送到總線上去。請注意,這里數(shù)字電路輸出數(shù)據(jù)的前提是00001111這個(gè)輸入值里面包含自己需要的識別碼,就像密碼一樣,如果不包含,對不起我不輸出任何數(shù)據(jù),保持原電平不變,假設(shè)密碼為0000,那么每當(dāng)它看到這個(gè)0000就會(huì)立即輸出數(shù)據(jù),這個(gè)識別的密碼是唯一的,不能和別的數(shù)字電路重復(fù)。



          關(guān)鍵詞: CPU學(xué)習(xí)心

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();