---恢复内容开始---

除法器

指令集:

android 除法浮点数计算 浮点数除法器_浮点运算

乘法器和除法器共用一套hardware

android 除法浮点数计算 浮点数除法器_除法器_02

对于中间结果,乘法是向右移,除法是向左移,alu的话在乘法时加,在除法时减,这个要记住

 

 

浮点数

表示方法:

android 除法浮点数计算 浮点数除法器_除法器_03

符号、指数、尾数,为什么要这样摆?

方便比较大小

 

biased notation:先不考虑符号,按照二进制数计算出数值,之后单精度浮点数减127,双精度浮点数减1023,得到有符号数

android 除法浮点数计算 浮点数除法器_浮点运算_04

举例说明:

尾数之前有隐藏的1

android 除法浮点数计算 浮点数除法器_浮点数_05

 

把分数变成浮点数,不断乘2,把十进制转换成二进制

 

然后有四种特殊的组合需要单独定义

android 除法浮点数计算 浮点数除法器_浮点运算_06

0,0 表示0,没有隐藏的1了

0,nonzero表示underflow,虽然不在可表示的范围内,但还是尝试去表示它,没有隐藏的1,指数也直接是最负的值

255(全1),0表示 正无限大/负无限大 看符号位

255(全1),nonzero表示 计算结果不是一个数字的情况 比如0/0,或者根号-4这种

 

浮点数的加法:

1.对齐小数点

2.尾数相加

3.标准化

4.处理进位问题

举个例子:

android 除法浮点数计算 浮点数除法器_除法器_07

左移右移指的是number

IC设计:

把算法用hardware表示

 

浮点数加法运算

android 除法浮点数计算 浮点数除法器_浮点数_08

讲的挺清楚的但是记不住,???

 

 

浮点数的乘法:

android 除法浮点数计算 浮点数除法器_浮点运算_09

android 除法浮点数计算 浮点数除法器_除法器_10

在计算机中有FPU这个处理器来做浮点运算(coprocessor)

浮点运算的指令:

android 除法浮点数计算 浮点数除法器_除法器_11

有指令可以让data在mainprocessor中和coprocessor中搬来搬去

 

对同一个数字,解释的方法不同,对应的hardware也不一样

计算机能表示的数字是有限的,范围和精度有限,在编程的时候得把这一点考虑进去

由于这个问题,加法交换律也会“失效”:

android 除法浮点数计算 浮点数除法器_浮点数_12

 

设计processor的时候要知道的一件事:

android 除法浮点数计算 浮点数除法器_android 除法浮点数计算_13

然后MAKE THE COMMON CASE FAST!

 

这一章结束啦!

 

大概是第三章:design a single-cycle processor

指令--->hardware

要清楚的知道每条连线的作用!搞清楚的话就说明硬件搞清楚了

 

android 除法浮点数计算 浮点数除法器_浮点运算_14

到哪里去拿指令? PC

解释指令

接下来的操作取决于指令

 

指令的执行:

android 除法浮点数计算 浮点数除法器_android 除法浮点数计算_15

红色圈圈的地方出现竞争,如果使用两条路的话会比较浪费硬件资源,所以这里用mux来解决问题

有mux就要有控制信号:

android 除法浮点数计算 浮点数除法器_除法器_16

 

设计处理器的步骤:

android 除法浮点数计算 浮点数除法器_浮点数_17