始料不及———计算机组成原理
文章目录
第一章 计算机还要与技术
计算机系统结构的8个伟大思想
1、面向摩尔定律的设计
2、使用抽象简化设计
3、加速大概率事件
4、通过并行提高性能
5、通过流水线提高性能
6、通过预测提高性能
7、存储器层次
8、通过冗余提高可靠性
冯诺依曼计算机的五大部件
控制器、运算器、存储器、输入设备、输出设备。
性能
响应时间:也叫执行时间,计算机完成某任务的总时间。
吞吐率:也叫带宽,单位时间内完成的任务数量。
CPU性能的度量标准是cpu执行时间
CPI:每条指令所需的时钟周期数的平均值
CPU时钟周期数=指令数*CPI
CPU执行时间=CPU时钟周期数 * 时钟周期时间=CPU时钟周期数/时钟频率 =指令数 *CPI * 时钟周期时间
可在指令数、CPI、时钟周期时间三个方面改善COU性能。
第二章 指令:计算机的语言
mips指令
mips字段:
目标寄存器在二进制编码中总是在后面,但在mips汇编指令中总是在前面
R型
op:6位,操作码,指令的基本操作
rs:5位,第一个源操作数寄存器
rt:5位,第二个源操作数寄存器
rd:5位,用于存放操作结果的目的寄存器
shamt:5位,位移量
funct:功能码,用于指明op字段操作的特定形式
add $rd $rs $rt $rd= $rs+ $rt
op:0,rs,rt,rd,shamt:0,func:32
sub:$rd $rs $rt $rd= $rs- $rt
op:0,rs,rt,rd,shamt:0,func:34
slt $rd $rs $rt rt? $rd=1: $rd=0
op:0,rs,rt,rd,shamt:0,funct:42
与以上相同形式的func
add:32
sub:34
addu:33
subu:35
and:36
or:37
xor:38
nor:39
slt(小于则置位,补码形式):42
sltu(小于则置位,自然数形式):43
sll $rd $rt,shamt $rd=rt<<shamt
op:0,rs:0,rt,rd,shamt,funct:0
srl $rd $rt,shamt $rd=rt>>shamt
op:0,rs:0,rt,rd,shamt,funct:2
jr $rs goto $rs
op:0,rs,rt:0,rd:0,shamt:0,funct:8
I型
op:6位,操作码,指令的基本操作
rs:5位,第一个源操作数寄存器
rt:5位,第二个源操作数寄存器,首位的目标寄存器
immediate:16位立即数
addi $rt $rs immediate
$rt= $rs+immediate
op:8,rs,rt,immediate
lw $rt $rs
immediate rs(immediate)
op:43,rs,rt,immediate
格式同上的op
addi:8
lw:35
sw:43
beq:4
bne:5
addiu:9
andi:12
ori:13
xori:14
slti:10
sltiu:11
lui(取立即数高16位,低16位用0补齐) $rt immediate
op:15,rs:0,rt,immediate
j型
op:6位
address:26位
j
op:2
jal:3
寻址:
分支指令:
指令中16位立即数地址左移两位和当前pc值相加(pc+4之后)
跳转指令:
26位地址左移两位后与当前pc前4位组合
寄存器
$zero 0 值恒为0
$at 1 被汇编器保留,用来处理大的常数
$v ~ $v1 2~3 用于返回值的两个值寄存器 调用时不保存
$a0~ $a3 4~7 用于传递参数的4个参数寄存器 调用时不保存
$t0 ~ $t7 8~15 临时变量 调用时不保存
$s0 ~ $s7 16~23 保存寄存器 调用时保存
$t8 ~ $t9 24~25 更多临时变量 调用时不保存
$gp 28 全局指针 调用时保存
$sp 29 栈指针 调用时保存
$fp 30 帧指针 调用时保存
$ra 31 用于返回起始点的返回地址寄存器 调用时保存
第三章 计算机的算术运算
整数
减法
计算a-b可直接减,也可a+(b的补码)
乘法
设乘数位数为4
初始:乘数4位,被乘数8位,置于低4位,乘积8位初始为0
重复4次以下步骤:
1、 乘积+乘数末位*被乘数
2、 左移被乘数
3、 右移乘数
除法
设除数位数为4
初始:商4位初始为0,除数8位,置于高4位,余数8位,初始为被除数,置于低4位
重复5次以下步骤:
1、余数=余数-除数
2、若余数<0则余数+除数,商左移,最低位置0;若余数>=0,则商左移,最低为置1
3、除数右移
浮点数
浮点数表示
单精度
阶码:
符号位:1位
指数:8位
尾数:23位
偏阶:127
| 指数 | 尾数 | 表示对象 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 非0 | 非规格化数 |
| 1~254 | 任何值 | 浮点数 |
| 255 | 0 | 无穷 |
| 255 | 非0 | NaN(非数,即不是数) |
双精度
阶码:
符号位:1位
指数:11位
尾数:20位
偏阶:1023
| 指数 | 尾数 | 表示对象 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 非0 | 非规格化数 |
| 1~2046 | 任何值 | 浮点数 |
| 2047 | 0 | 无穷 |
| 2047 | 非0 | NaN(非数,即不是数) |
加法
1、将较小指数向较大指数对齐,即通过右移(小数点左移)并增大相应指数使两个数指数相同
2、将两数位数相加
3、对结果进行规格化,右移则增大指数,左移则减少指数
4、检查是否溢出(对于单精度,最大的指数是127,最小的指数是-126),若无溢出,继续进行第五步,否则返回异常
5、对尾数按要求进行舍入,判断是否为规格化数,若否,返回第3步,否则结束。
乘法
1、将两个偏阶指数相加,然后减去偏阶得到新的偏阶指数
2、位数相乘
3、将结果规格化
4、检查是否溢出,若溢出,返回异常,否则继续第五步
5、对尾数按要求进行舍入,判断是否为规格化数,若否,返回第3步,否则结束
浮点数精确性
舍入规则:
右边多保留两位,第一位为保护位,第二位为舍入位,若两位为0~49 ,向下舍入,若为 51~ 99,则向上舍入,若为50,则看粘贴位(若舍入后面的位数不全为0,则粘贴位为1,否则为0),若粘贴位为1,则向上舍入,否则向偶数舍入。

浙公网安备 33010602011771号