ISA – instruction set architecture 指令集架构
date: April 10, 2023 8:33 PM
Content: Notes
Category: Computer, ComputerOrganization
tags: The Essentials of Computer Organization and Architecture
Link: https://herbidog.cc/isp/
Completion: 100
Blog: To be posted
Status: Done
指令格式
小端 vs. 大端
小端存储:低位放在低地址
大端存储:高位放在低地址
换字节顺序 而不是数字位
大端易于读取十六进制数(用于位图bitmap和网络) 小端易于快速实现高精度算数运算
小端在字节对齐的情况下存储方式更高效
![Untitled](https://cdn.jsdelivr.net/gh/XFishalways/ImageHosting@master/2023/07/23/CleanShot%202023-07-23%20at%2016.28.50@2x.jpg)
字节对齐
一个字节存储两位十六进制数
数据的存储位置需要考虑以字节为单位进行对齐 可能是多个字节一对齐 方便一次取多个字节的数据
可以确保数据对象在内存上连续
指令长度
![Untitled](https://cdn.jsdelivr.net/gh/XFishalways/ImageHosting@master/2023/07/23/CleanShot%202023-07-23%20at%2016.29.06@2x.jpg)
指令集所代表的计算模型
![Untitled](https://cdn.jsdelivr.net/gh/XFishalways/ImageHosting@master/2023/07/23/CleanShot%202023-07-23%20at%2016.29.22@2x.jpg)
MARIE是累加器型架构
![Untitled](https://cdn.jsdelivr.net/gh/XFishalways/ImageHosting@master/2023/07/23/CleanShot%202023-07-23%20at%2016.29.43@2x.jpg)
GPR
Most systems today are GPR systems
![Untitled](https://cdn.jsdelivr.net/gh/XFishalways/ImageHosting@master/2023/07/23/CleanShot%202023-07-23%20at%2016.30.01@2x.jpg)
逆波兰式
堆栈架构使用 (后缀表达式)RPN reverse polish notation
波兰式(前缀表达式)
算数优先级顺序 先乘除后加减 但仍然要从左到右 看好顺序一步步来
指令:push, pop. mult, add, sub,div, store
扩展操作码
注意关注指令字长是多少
![Untitled](https://cdn.jsdelivr.net/gh/XFishalways/ImageHosting@master/2023/07/23/CleanShot%202023-07-23%20at%2016.30.17@2x.jpg)
指令字长为8bit时:
![Untitled](https://cdn.jsdelivr.net/gh/XFishalways/ImageHosting@master/2023/07/23/CleanShot%202023-07-23%20at%2016.30.33@2x.jpg)
- 先计算各种指令的数目 判断
- 列编码 写出中间的转义操作码是哪些个
寻址方式
- ⽴即寻址(Immediate Addressing)
- 直接寻址(Direct Addressing)
- 间接寻址(Indirect Addressing)
- 变址寻址(Indexed Addressing)
- 基址寻址(Based Addressing)
- 堆栈寻址(Stack Addressing)
![Untitled](https://cdn.jsdelivr.net/gh/XFishalways/ImageHosting@master/2023/07/23/CleanShot%202023-07-23%20at%2016.30.49@2x.jpg)
指令流水线
ILP – Instruction Level Parallelism 指令集并行
指令流水线用于实现ILP
每一个步骤是一个流水线阶段
![Untitled](https://cdn.jsdelivr.net/gh/XFishalways/ImageHosting@master/2023/07/23/CleanShot%202023-07-23%20at%2016.31.12@2x.jpg)
k个阶段 n条指令 ⇒ 共需时钟周期k+n-1个
![Untitled](https://cdn.jsdelivr.net/gh/XFishalways/ImageHosting@master/2023/07/23/CleanShot%202023-07-23%20at%2016.31.41@2x.jpg)
不是所有的指令都要经过流水线的每一阶段 如操作数少的情况
流水线冲突:
- 资源冲突(结构冒险):同时读写内存
- 数据依赖:前一个执行结果没产生时就被取为下一条指令的操作数
Show Comments