最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

#6 函數(shù)(Part.2)棧,壓棧與彈棧

2023-08-05 11:41 作者:-郭兩歲  | 我要投稿


1.棧

stack

用一個寄存器在中間做RAM指針,用高電平使其永久輸出

然后藍色是彈??刂凭€,橙色是壓棧控制線,綠色是循環(huán)線

當彈棧時,外部輸出激活,RAM讀取和寫入激活,寄存器寫入激活,寄存器輸出值-1后傳輸?shù)絉AM地址入口(彈出RAM指針上一個值并且寫入0,然后寄存器數(shù)值也跟著-1)

當壓棧時,寄存器寫入激活,寄存器輸出值直接導(dǎo)入RAM指針地址,允許外部輸入值并寫入RAM,地址值+1后寫入寄存器(指針移到下一位)

當既不彈棧也不壓棧時,所有激活均關(guān)閉

2.壓棧與彈棧

先給我們的指令集增加棧的操作

指令集

按照指令集設(shè)計電路

因為棧那一關(guān)做出來的元件放不了高速內(nèi)存

所以我直接把整個棧的所有電路直接搬過來

然后換上了高速內(nèi)存,盡量不去增加延遲

(普通內(nèi)存1024的延遲這誰頂?shù)米⊥郏?/p>


把棧的功能接入LEG架構(gòu)

對操作碼第一位進行分線控制pop和push

然后用??刂凭€控制開關(guān)

參數(shù)1接入棧輸入值并且由push控制線控制

棧輸出值接入結(jié)果總線

壓棧與彈棧

寫代碼~

簡單~

自定義匯編別名:

add:00000000(0)

input:00000111(7)

output:00000111(7)

ram_r:00010000(16)

ram_w:00010001(17)

equal:00100000(32)

less_than:00100010(34)

pop:00110000(48)

push:00110001(49)

j:01000000(64)

i:10000000(128)

reg0-reg5:00000000-00000101(0-5)

一點題外話

我在開始寫專欄的時候(下面鏈接這一篇)

Turing Complete開坑占位

我貼了一張圖,是我一開始設(shè)計LEG架構(gòu)的線路

也是做到現(xiàn)在這個程度,包含四個模式(算術(shù),跳轉(zhuǎn),內(nèi)存讀寫,棧)

但是那個時候只是自己玩,就是能過關(guān)就行,不強求那么多

但是自從我開始寫攻略,每一關(guān)都幾乎重新設(shè)計線路

重新復(fù)習了每一種邏輯門,復(fù)習了每一個元件的存在的意義

然后為了減少延遲,我都重新設(shè)計了一套低延遲的線路

LEG架構(gòu)我也是順著攻略的進度重新做了一次

到現(xiàn)在為止從數(shù)據(jù)上就能看出來優(yōu)化了

舊設(shè)計(門數(shù)量16524,總延遲277)

新設(shè)計(門數(shù)量14990,總延遲112)

門數(shù)量多是因為我用了兩個高速內(nèi)存,每個都幾千個門所以壓不下去

但是總延遲在我的優(yōu)化之下減少了超過一半

(這意味著速度提升了100+%)

所以!精益求精!


#6 函數(shù)(Part.2)棧,壓棧與彈棧的評論 (共 條)

分享到微博請遵守國家法律
友谊县| 文昌市| 洛扎县| 曲阳县| 长丰县| 温宿县| 高邮市| 翁牛特旗| 庄浪县| 雷山县| 桐乡市| 文水县| 河源市| 伊宁县| 华宁县| 庆安县| 天长市| 巴马| 呈贡县| 海南省| 神农架林区| 同德县| 沾化县| 辛集市| 尉犁县| 讷河市| 马龙县| 遵义市| 金门县| 河东区| 清涧县| 和龙市| 马公市| 孟津县| 新巴尔虎左旗| 石城县| 珠海市| 兰州市| 芜湖市| 当涂县| 津南区|