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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 關(guān)于CPU的胡言亂語

          關(guān)于CPU的胡言亂語

          作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
          CPU具體是如何工作的?

          工作多年的資深程序員也未必說得清楚,即便是匯編高手也不一定能準(zhǔn)確描述,大部分人對這些幾乎沒有興趣,照樣能寫出優(yōu)秀的程序。
          作為一個學(xué)生時代就開始對電子電路發(fā)生興趣的愛好者,模擬電路自然很好理解,也很形象,比如一個波形經(jīng)過放大,變成電壓更高的相同的波形,比如發(fā)光二極管加上一個正向電壓就會發(fā)光......可是,一旦接觸到數(shù)字電路,這些東西都排不上了用場,有種不會外語的中國人到了外國的感覺。
          數(shù)字電路接觸多了,大概也理解了一些皮毛,不過是輸入一個高或低的電平,輸出一個高或低的電平,這些規(guī)則是設(shè)計好的(程序),這些與非或門就是最原始最純樸的CPU,而這些程序是固化的,焊接上去就那個樣子的,你輸入一串脈沖,它就按照規(guī)則輸出一串脈沖,如此這般。
          后來,接觸了編程,先學(xué)了高級語言VB、VB.net,再瀏覽過幾本C語言,瞻仰了一下匯編語言,不明覺歷??!時間長了,感覺也就那么回事,沒什么深奧的,只要下功夫研究,完全可以成為一個合格的程序員,就這么感覺著突然就少了興趣,唉,人就是這么及安!

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

          許多年來,對數(shù)字電路到程序之間的聯(lián)絡(luò),一直處于糊涂一盆的狀態(tài),苦于沒有名師指點(diǎn),也缺乏這方面的資料,頓時感到那些所謂講師都是書呆子,我堅信他們可以照本宣科地把匯編指令倒背如流,卻講不明白CPU內(nèi)部那些神奇的脈沖是如何跳躍的,這是我所關(guān)心的,我想也是很多人關(guān)心的。

          下面,就按我的個人傻瓜式的理解描述一下我認(rèn)為的CPU工作原理,太雷人,游客請止步,防止觸電身亡!

          先說內(nèi)存,內(nèi)存就像一張方格信紙,每行多個列,共有多上行都是固定的。這張方格紙被劃了幾個區(qū)域,分別存放不同性質(zhì)的數(shù)據(jù)。內(nèi)存又像一塊黑板,所有的演算過程都要在黑板上進(jìn)行。
          舉個例子,老師在黑板上講課,學(xué)生問:“1+1=?”,老師拿起粉筆(CPU的指針),在黑板上寫下了“1+1=” ,相當(dāng)于在方格紙上占了4個格(事實(shí)上不是那么少,先不管它),眾所周知,CPU是靠程序發(fā)出指令的,所以這時候程序員的指令必定是要求CPU進(jìn)行加法運(yùn)算,假設(shè)這個等號就是要求運(yùn)算的指令,那么“1+1”這個算式就會被CPU編譯成10010100101100010001110001......這樣的二進(jìn)制機(jī)器碼送進(jìn)CPU內(nèi)部的加法器,然后輸出一串011101010010011100101......之類的結(jié)果,結(jié)果放在哪里呢,自然是寫在黑板上,同理,放在方格紙的指定位置(這個位置必須是閑置的,不然會將原來的格子里的數(shù)據(jù)擦除,帶來不可知的后果)。于是就完成了計算的過程。
          如果覺得還是難以理解,那我舉個更淺顯的例子。以前給火鍋店修理過一臺羊肉切片機(jī),這種機(jī)器是通過調(diào)整切刀的間隙達(dá)到調(diào)整羊肉片的厚薄的,這里的羊肉就代表需要運(yùn)算的數(shù)據(jù),間隙的大小就代表邏輯算法,如果切刀間隙是固定的,那么你放進(jìn)去一斤羊肉,會切出5盤肉片(老板好黑?。矸胚M(jìn)兩斤羊肉就出出10盤肉片。這里的羊肉、肉片都是要占用空間的(內(nèi)存),羊肉片端出去上桌(輸出),內(nèi)存的數(shù)據(jù)就完成了任務(wù)。

          按照這樣似是而非的邏輯,發(fā)揮我胡思亂想的特長,CPU內(nèi)部世界林立著幾億個二極管,這些二極管組成了各種各樣的邏輯電路,隨時等待著羊肉的到來,在迅雷不及掩耳盜鈴的時間內(nèi)切出了一盤一盤的羊肉片,羊肉絲,羊肉塊,羊肉丁......
          這是最簡單的一個運(yùn)算,而程序往往十分復(fù)雜和冗長,CPU像一個不知疲倦的工人,時刻等著下一條指令?;氐絼偛欧礁窦埬莻€思路上來,所有的程序代碼必須在內(nèi)存上進(jìn)行存放才能進(jìn)入CPU進(jìn)行運(yùn)算,運(yùn)算后的結(jié)果也必須寫在內(nèi)存里,這就像老師不能把1+1的結(jié)果“2”放在心里一樣,他必須寫在黑板上。

          CPU在內(nèi)存這張方格紙上讀取和寫入數(shù)據(jù)的時候,并不像我們寫文章從左到右,從上到下一個字一個字,一行一行地寫,而是隨時進(jìn)行跳轉(zhuǎn),神經(jīng)病一樣,它可能走著走著突然就跳走了,然后又突然跳回來,它的節(jié)奏永遠(yuǎn)是那么齊整,他跳一百米和一米的時間是一樣的,不可思議吧!

          這就是我所理解的CPU底層工作的狀態(tài),不管你懂不懂,反正我是似懂非懂。至于如何將結(jié)果送到顯示器,如何將鼠標(biāo)鍵盤的數(shù)據(jù)送進(jìn)來,這不屬于最底層,不是今天學(xué)習(xí)的筆記。這些東西相對還是容易理解的,至少我真的略知一二。



          關(guān)鍵詞: CPU資深程序員模擬電

          評論


          技術(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); })();