0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用ALU,RAM,寄存器打造一個(gè)CPU 2

jf_78858299 ? 來源:北洋洋洋 ? 作者:北洋 ? 2023-01-30 15:56 ? 次閱讀

解碼階段

現(xiàn)在我們拿到了指令, 「前四位是操作碼」 對應(yīng)的是指令表中的LOAD A指令。對應(yīng)的描述是**「將RAM的值放入寄存器A」**

「后四位1110是RAM的內(nèi)存地址」 ,轉(zhuǎn)成十進(jìn)制就是14.

控制單元

指令通過”控制單元“進(jìn)行 「解碼」 。解碼的作用就是判斷這個(gè)操作碼對應(yīng)的操作是什么(通過少量的邏輯門即可判斷)

針對不同的操作碼有對應(yīng)的指令判斷電路從而執(zhí)行不同的操作。例如下面這個(gè)就是檢查操作碼是不是LOADA(0010)指令。

1675065084(1).png

執(zhí)行階段

指令寄存器拿到數(shù)據(jù)DATA后通過控制單元進(jìn)行解碼,現(xiàn)在我們知道了這個(gè)是LOADA指令,就可以進(jìn)行執(zhí)行階段了

  1. 「打開RAM允許讀取線」 :我們將檢查LOADA指令的電路連接到RAM的READ ENBALE中( 「如果LOADA輸輸出為1那么READN ENANLE也是1因此就會(huì)打開RAM的允許讀取線」 ),「并把地址14傳入過去?!?/strong>
  2. 「讀取RAM 對應(yīng)地址的值」 :RAM拿到地址14上的值,0000 0001也就是十進(jìn)制的三
  3. 「RAM DATA線連接所有的寄存器」 :LOAD_A指令代表這個(gè)值存儲(chǔ)在A寄存器中并不影響其他寄存器。因此需要將RAM讀出來的值給到寄存器,所以**「RAM的DATA數(shù)據(jù)線需要將所有的寄存器都連接起來(DATA線既可以用來做輸入又可以用來做輸出使用)。」**
  4. 「打開指定寄存器的允許輸入線」 :用檢查“是否為LOADA指令的電路” 「打開寄存器A的允許寫入線」 (因?yàn)槭荓OADA指令,所以需要將A寄存器的允許寫入打開),這樣就將RAM中地址為14的值輸出保存到了寄存器A中。

1675065167(1).png

  1. 「取下一條指令指令地址寄存器+1」 :執(zhí)行階段結(jié)束。開始下一個(gè)取指令階段(讀取0001的RAM地址到指令寄存器中,然后在解碼執(zhí)行........之后一直重復(fù)這個(gè)過程)

抽象--控制單元

上面解釋的只是一個(gè)LOADA指令,「不同的指令由不同的邏輯電路解碼,這些邏輯電路會(huì)配置CPU內(nèi)的組件來執(zhí)行對應(yīng)操作。這些邏輯電路太復(fù)雜我們可以把整個(gè)邏輯電路封裝為上面所說的控制單元?!?/strong>

小結(jié)

也就是下圖中的線路。可以看到控制單元 「鏈接了所有的寄存器」 (用于存放和讀取數(shù)字),和RAM鏈接的是 「允許讀取和允許輸入線」 (READ ENABLE WRITE ENABLE),還有一條線是**「ADDRESS INPUT」** ,這條線是用來告知使用的是16個(gè)地址空間中的哪個(gè)地址(比如之前的14)

1675065144(1).png

上面解釋了指令表中的LOADA指令,LOADB指令和LOADA原理一致,包括STOREB也是只不過是相反過來 「打開寄存器的允許讀取和RAM的允許寫入傳入地址最后將寄存器的值通過DATA線給到RAM對應(yīng)地址」 。但是ADD指令有些不同,我們看下這個(gè)操作碼是如何做處理的。

參考資料

[1]https://juejin.cn/post/7134166674160222221/:https://juejin.cn/post/7134166674160222221/

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119814
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10804

    瀏覽量

    210829
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1354

    瀏覽量

    114443
  • ALU
    ALU
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    13070
收藏 人收藏

    評論

    相關(guān)推薦

    解析CPU中的寄存器

    8位寄存器在16位寄存器中,而16位寄存器在32位寄存器中。
    發(fā)表于 09-19 10:10 ?3888次閱讀

    閃存存儲(chǔ)寄存器嗎?_寄存器和存儲(chǔ)的區(qū)別

    閃存存儲(chǔ)寄存器嗎? 很明顯不是 ,個(gè)屬于儲(chǔ)存,一個(gè)
    發(fā)表于 10-11 17:12 ?1.2w次閱讀

    寄存器變量

    C語言中使用關(guān)鍵字register來聲明局部變量為寄存器變量。寄存器變量的值會(huì)被存放在CPU寄存器中,每當(dāng)需要使用它們時(shí),CPU就可以直接
    發(fā)表于 06-03 10:13 ?2319次閱讀

    8051單片機(jī)中的寄存器是算CPU還是RAM

    可以劃分CPURAM部分,但CPURAM有交叉的部分(比如寄存器組等) 4、CPU部分
    發(fā)表于 06-14 15:42 ?4000次閱讀

    關(guān)于Block RAM寄存器輸出

    關(guān)于Block RAM寄存器輸出,我們在《通過RTL改善時(shí)序的技巧之Block RAM的輸出》中介紹過。如果我們在時(shí)序報(bào)告中關(guān)鍵路徑上看到這樣條信息: 在第
    的頭像 發(fā)表于 03-26 15:50 ?1782次閱讀
    關(guān)于Block <b class='flag-5'>RAM</b>的<b class='flag-5'>寄存器</b>輸出

    GPIO寄存器

    每組IO口有10個(gè)寄存器組成,如果芯片有GPIOA~GPIOI,9個(gè)組那么共有90個(gè)寄存器如果
    發(fā)表于 12-08 17:06 ?5次下載
    GPIO<b class='flag-5'>寄存器</b>

    如何在VHDL中實(shí)現(xiàn)個(gè)簡單的寄存器

    寄存器是設(shè)備中用于存儲(chǔ)數(shù)據(jù)的常見電子元件。這些是最小的數(shù)據(jù)保存元素,用于存儲(chǔ) CPU 正在處理的操作數(shù)或指令。有不同類型的寄存器,即指令寄存器、程序
    發(fā)表于 07-29 16:48 ?4511次閱讀
    如何在VHDL中實(shí)現(xiàn)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>簡單的<b class='flag-5'>寄存器</b>

    如何使用ALU,RAM,寄存器打造個(gè)CPU 1

    CPU簡介 **「計(jì)算機(jī)的心臟是中央處理單元,簡稱“CPU”」** 。這篇文章就利用前幾篇文章中提到過的ALU,RAM,寄存器組件做
    的頭像 發(fā)表于 01-30 15:56 ?795次閱讀

    如何使用ALU,RAM,寄存器打造個(gè)CPU 3

    在指令表中我們看到ADD指令的后四位 **「寄存器 OR RAM地址列中,列出來的不是之前的RAM地址而是兩位的寄存器ID」** 。兩位可
    的頭像 發(fā)表于 01-30 16:01 ?1077次閱讀
    如何使用<b class='flag-5'>ALU</b>,<b class='flag-5'>RAM</b>,<b class='flag-5'>寄存器</b><b class='flag-5'>打造</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>CPU</b> 3

    cpu寄存器和存儲(chǔ)的區(qū)別

    cpu寄存器和存儲(chǔ)的區(qū)別 寄存器存在于CPU中,速度很快,數(shù)目有限;存儲(chǔ)是內(nèi)存,速度稍慢,但
    發(fā)表于 03-21 15:12 ?1335次閱讀

    計(jì)算機(jī)寄存器和存儲(chǔ)

    存儲(chǔ),CPU都在個(gè)片內(nèi),所以寄存器是片內(nèi)RAM
    發(fā)表于 03-21 15:22 ?1995次閱讀

    寄存器和存儲(chǔ)如何區(qū)分

    寄存器是計(jì)算機(jī)硬件中最快、最小、最常用的存儲(chǔ)。它是CPU內(nèi)部的存儲(chǔ),通常作為指令和數(shù)據(jù)的存儲(chǔ)和暫存空間。在CPU中,
    的頭像 發(fā)表于 04-09 18:43 ?1.4w次閱讀

    用于RISC-V處理的三重模塊化冗余ALU寄存器文件的設(shè)計(jì)示

    用于RISC-V處理的三重模塊化冗余ALU寄存器文件的設(shè)計(jì)示例 演講ppt分享
    發(fā)表于 07-17 16:34 ?2次下載

    CPU的6個(gè)主要寄存器

    CPU寄存器是中央處理內(nèi)的組成部分,是有限存貯容量的高速存貯部件。寄存器CPU內(nèi)部的元件,包括通用
    的頭像 發(fā)表于 02-03 15:15 ?3701次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計(jì)算機(jī)中用于存儲(chǔ)數(shù)據(jù)的高速存儲(chǔ)單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴(kuò)展寄存器兩種類型。
    的頭像 發(fā)表于 07-12 10:31 ?1013次閱讀