#3 處理器架構(gòu)(Part.2)OVERTURE架構(gòu)全解


開(kāi)始搭建真正的計(jì)算機(jī)咯!
(激動(dòng)地搓手手)
在開(kāi)始之前我想先介紹幾個(gè)我的自定義零件

自定義元件
1.RegisterPlus(寄存器加強(qiáng)版)

寄存器的加強(qiáng)版
上面有一個(gè)永久輸出口,左右分別有兩個(gè)控制輸出口和一個(gè)控制輸入口
有兩個(gè)輸出口是為了LEG架構(gòu)準(zhǔn)備,在OVERTURE架構(gòu)暫時(shí)用不上兩個(gè)
但是多一個(gè)口總歸沒(méi)啥壞處吧!
2.COND(條件判斷)

輸入一個(gè)判斷的條件(<0,<=0,=0,!<0,>0,>=0這一類)和一個(gè)數(shù)字
然后輸出是否符合條件
這一個(gè)COND組件在之前的小關(guān)卡已經(jīng)做過(guò)了
3.Order Decoder(控制碼解碼器)

用來(lái)把輸入的兩位控制模式進(jìn)行分線
(其實(shí)就是一個(gè)2位解碼器)
但是因?yàn)檫@一坨線放在大電路圖里面太丑了
所以就做成一個(gè)組件了
4.ALU(算術(shù)邏輯單元)For OVERTURE

之前小關(guān)卡做過(guò)的
輸入指令和兩個(gè)數(shù)值,輸出計(jì)算結(jié)果
但是因?yàn)镺VERTURE架構(gòu)的ALU和LEG架構(gòu)的ALU里面的指令不同
所以名字特地標(biāo)開(kāi)了ALU FOR OVERTURE
我自己添加了一個(gè)輸出控制口,只是因?yàn)楹竺嬗幸恍┑胤饺菀自诳偩€短路
所以加一個(gè)控制口沒(méi)那么容易打架

1.寄存器之間

第一關(guān)只是為了搭建6個(gè)寄存器用來(lái)臨時(shí)存儲(chǔ)數(shù)值
就把線分開(kāi),分別接到每一個(gè)讀取控制口和寫(xiě)入控制口,然后全部連起來(lái)就行了
很簡(jiǎn)單,過(guò)

2.計(jì)算單元

因?yàn)殚_(kāi)始有兩種指令了,所以就要把Order Decoder放進(jìn)去用來(lái)解碼
然后分出控制線,算術(shù)模式(綠色線)
因?yàn)榈谝环N模式是復(fù)制模式,沒(méi)有什么需要單獨(dú)控制的,所以就空出來(lái)了
右邊放一個(gè)ALU,控制輸入打開(kāi),把指令碼和兩個(gè)數(shù)導(dǎo)進(jìn)去ALU
計(jì)算結(jié)果輸回去3號(hào)寄存器
但是要禁用三位解碼器(避免寄存器打開(kāi)了寫(xiě)入開(kāi)關(guān))

3.立即數(shù)

橙色線是立即數(shù)模式控制線
立即數(shù)模式的時(shí)候禁用三位解碼器(避免寄存器打開(kāi)了寫(xiě)入開(kāi)關(guān))
同時(shí)單獨(dú)打開(kāi)0號(hào)寄存器的寫(xiě)入開(kāi)關(guān)將立即數(shù)寫(xiě)進(jìn)去(白色線)
因?yàn)榱⒓磾?shù)模式的時(shí)候指令最高兩位是00所以不需要處理就能直接寫(xiě)入了

4.圖靈完備

最后一步!條件跳轉(zhuǎn)
把3號(hào)寄存器引一條永久輸出線接到COND,指令碼也接進(jìn)去
然后在Order Decoder引一條控制線下來(lái)控制開(kāi)關(guān)
(記得禁用三位解碼器)

至此,OVERTURE架構(gòu)已經(jīng)建好了!
很棒!
在沙盒模式里面查一下
門(mén)數(shù)量1297總延遲60

原來(lái)60的延遲里面有+54都來(lái)自ALU
然后這+54里面就是來(lái)自減法的NEG(取負(fù))和ADD(加)
所以減法成為了OVERTURE架構(gòu)的短木板(暴論)
很好已經(jīng)踏出了第一步
我已經(jīng)在人類智慧的結(jié)晶上打造出了人類智慧的結(jié)晶(?)
