始料不及———计算机组成原理

第一章 计算机还要与技术

计算机系统结构的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 rs<rs<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 rt=rt=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,则向上舍入,否则向偶数舍入。

第四章 处理器

posted @ 2019-12-07 00:24  GL&HF  阅读(214)  评论(0)    收藏  举报