iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 24
0
自我挑戰組

計算機概論X30天系列 第 24

Day 24:[計算機概論]如果把加減乘除串起來用?——Toy Machine的ALU結構

  • 分享至 

  • xImage
  •  

閱讀前,建議可以參考Day1:閱讀指南&為何選擇這個題目?

▌挑戰簡介

  • 題目:計算機概論X30天

  • 挑戰內容:連續30天紀錄計算機概論、離散數學、演算法、資料結構等課程,還有自己學習程式的心得體悟。

  • 本篇性質:

    • 純粹學習內容的紀錄,不會有太嚴謹或是流暢的說明,看不懂不要難過,真不是你的智商有問題
    • Toy Machine不是很重要,就是看看ALU是怎麼做出來的這樣

▌前情提要

在前面的內容,介紹了如何製作「加法/減法器」、「乘法/減法器」,但是要怎麼把他們混再一起讓我直接可以做運算呢?

我總不能每次要做加法的時候,就設置一次電路。然後又做減法時,又設置一次電路吧?(很累耶)

沒關係!把這些運算器綁一綁,變成一個ALU(邏輯運算單元)就可以了。

所謂ALU(邏輯運算單元):聽起來很厲害,但其實就是一個可以進行邏輯or運算的處理器。比如說ALU把2和2被吞進去,那ALU就會看你是要把他們乘在一起,還是加再一起...,然後把結果吐出來。

▌Toy Machine的ALU結構

外部

(補圖)

  • 16bit的input進去,可以做加減/乘除/and/xor,然後輸出
  • 有3條ALU select的input,用來選擇要做什麼計算
  • 有1條substract的input,用來告訴加減法器要不要做減法
  • 有1條shift direction的input,用來告訴ALU要做乘法還是剪法

內部

(補圖)

簡單來說,就是把16bit的input都分別送進去加減法器shift乘法andxor,然後把大家算出來的結果,送到MUX(Mutiplexer)裡面,讓MUX決定要讓哪個結果Output。

因為ALU select是3bit,因此可以表示0~7的數字。那就把乘法、加法、and、xor從0~7編號,如果ALU select輸入了某個編號,那就讓相應的運算結果輸出。

▌心得

  • MUX(Mutiplexer)真的很神奇,它讓我們不用重新設計電路,而是可以直接選擇說要做A還是B運算,然後MUX再幫忙輸出。

上一篇
Day 23:[計算機概論]奇怪的1010如何做乘除法
下一篇
Day25:[離散數學]威爾斯定理——一個很沒用檢驗質數的方法
系列文
計算機概論X30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言