# 計組 L3 ## 2nd期中考 ### 加減法(減法就是將A+B的B去(負數)做2's complement再去加它) 基本直式加法即可,注意overflow #### Overflow: 拿加法為例 ![](https://i.imgur.com/2W2Em9B.png =60%x60%) #### 不常見特例: Saturating Operation: 當overflow發生時,取最大正值或最小負值。 --- ### :heavy_plus_sign: :heavy_multiplication_x: 無號數乘法 #### :one: 傳統乘法Example ![](https://i.imgur.com/JXJmuiB.png =60%x60%) ![](https://i.imgur.com/LqQu1ez.png =70%x70%) #### :two: Optimized乘法Example : .被乘數register瘦身成32bits .乘數存在Product右半部32bits . 因為 ![](https://i.imgur.com/jq2GPmO.png =30%x60%) .所以當一次乘法(加Multiplicand)做完後, 乘數(Multiplier)LSB位就不需要了 .同理Product左邊32bits存放目前result暫時值的 LSB位因為不會再做到加法運算,也不需要了 .>>**因此我們就一起shift right!!** .見下例 ![](https://i.imgur.com/scZIqdT.png =60%x60%) ![](https://i.imgur.com/u2Nueqw.png =70%x70%) --- ### :heavy_minus_sign: :heavy_multiplication_x: 有號數乘法: Booth's Algorithm #### <font color="blue">Booth's Algorithm: (1)可對有號數做乘法(2)效率比傳統或Optimized乘法都快</font> . 在optimized乘法的基礎下 **核心精神: 一次檢查乘數(Multiplier)的2個bit** **分為beginning(10), middle(11), end(01) of a run of 1s** ![](https://i.imgur.com/XeOLuSL.png =70%x70%) . 演算法分為2 steps `一樣在最後會Shift Product register right 1 bit!!!` | bits | 要幹嘛 | | -------- | -------- | | 01 | 加被乘數到product左邊 | | 10 | 減被乘數到product左邊 | ![](https://i.imgur.com/EghB5X3.png =70%x70%) . 下面是例子:正數 1. 一開始先在最右邊補個0當作虛構的bit 2. 當Product做shift right時,MSB(最左位)做sign extention ![](https://i.imgur.com/bpLmIeF.png) . **負數的例子!!!!** ![](https://i.imgur.com/thIZO2Q.png) --- #### MIPS Multiplication ![](https://i.imgur.com/b61OTnm.png =60%x60%) --- ### :heavy_division_sign: 除法 #### :one: 傳統除法 ![](https://i.imgur.com/LZZVbIP.png =60%x60%) . 觀察式子可以發現除數(divisor)其實一直在shift right 而且ALU是在做Remainder(餘數)去減divisor(除數) `如果得到結果<0,Shift left商數(Quotient),然後Q0(商的LSB)=0` `如果得到結果>=0,Shift left商數(Quotient),然後Q0(商的LSB)=1` ![](https://i.imgur.com/FRF1YvA.png) . 下面是例子 ![](https://i.imgur.com/RkPqpok.png) #### :two: Optimized除法 . **將餘數(Remainder)存在左邊32-bits,商數(Quotient)存在右邊32-bits** **原本是移Quotient往左,現在變成移Remainder往左** ![](https://i.imgur.com/oxe5kRg.png) :::success 這裡我們可以發現,這可以跟乘法共用一個hardware(乘法是Product shift right),在實際設計電路時可以省下hardware的cost。 ::: . 下面是例子 ![](https://i.imgur.com/WYNRWlT.png) --- #### MIPS Division ![](https://i.imgur.com/L7OHU1W.png =60%x60%) --- 第二次期中考結束!!!!! --- ##### tags: `計組` `CO` `L3` --- :::warning #### <font color="black">問答區/Chatting Room </font> :::