乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      計算機(jī)的大腦:實現(xiàn)簡易的CPU

       東耳果果 2019-11-18

      QuincySx

      簡書作者

      2018-11-07 13:49

      我們已經(jīng)看了基本邏輯電路,運算電路,內(nèi)存的概述。今天我們用著幾個東西來組裝 CPU。

      CPU 簡易結(jié)構(gòu)圖

      image

      我們看到這張圖,我們的簡易 CPU 有運算邏輯部件、寄存器部件和控制部件(圖中的指令解析)

      CPU 工作流程

      CPU 的運行有讀取指令,解析指令,運行三個階段。
      我們模擬一下使用計算機(jī)來計算一個 1+1,看看計算機(jī)是如何工作的!
      假設(shè)我們已經(jīng)寫好了我們的程序,并放到了內(nèi)存中,如下圖所示:


      image

      假如我們 指令地址寄存器 的地址為 00000000

      1. CPU 通電首先讀取指令地址寄存器的地址(可以理解成系統(tǒng)第一條指令),然后讀取相應(yīng)的內(nèi)存數(shù)據(jù)。
      2. 得到 00010001 ,然后拆分命令是 0001 數(shù)據(jù)是 0001(假設(shè) 0001 是加載到 寄存器1 中)
      3. 執(zhí)行命令把 0001 存儲到 寄存器1 中,把下一個地址 00000001 存到 指令地址寄存器 中
      4. 然后開始第二輪 讀取內(nèi)存地址 00000001 的數(shù)據(jù)
      5. 得到 00110001 ,然后拆分命令是 0011 數(shù)據(jù)是 0001(假設(shè) 0011 是加載到 寄存器2 中)
      6. 執(zhí)行命令把 0001 存儲到 寄存器2 中,把下一個地址 00000011 存到 指令地址寄存器 中
      7. 然后開始第三輪 讀取內(nèi)存地址 00000011 的數(shù)據(jù)
      8. 得到 10000111 ,然后拆分命令是 1000 數(shù)據(jù)是 0111(假設(shè) 1000 是對兩個寄存器進(jìn)行加法運算)
      9. 執(zhí)行命令把 寄存器1 寄存器2 的值進(jìn)行相加。

      OK! 我們看了上邊流程,我們還有幾個問題?

      1. 我們還隱約的發(fā)現(xiàn)還缺個東西沒有說也就是「指令表」,每款 CPU 都需要一定的指令表,寫好程序來讓計算機(jī)去運算。
      2. 晶振的頻率來推進(jìn) CPU 的運算速度,如果 CPU 早就計算完了晶振還不繼續(xù)往下運算,就拖慢了整體運行速度。晶振這個詞我們可能聽著比較生疏,我們平常買 CPU 上面寫的多少多少 HZ 就是指的這個。( 1GHZ = 十億赫茲 現(xiàn)代的 CPU 運算速度都比較快)

      小結(jié)

      看完了上面,我就理解了為什么 C 語言之類程序不同的平臺需要進(jìn)行移植,因為不同的 CPU 指令集不一樣。然而像 Java 這些虛擬機(jī)語言,是在虛擬機(jī)上提供了通用的指令表,虛擬機(jī)還是需要針對不同的 CPU 平臺進(jìn)行單獨編碼!

      你們還看了什么,歡迎留言一起討論。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多