暑期系列:计算机组成原理
1 计算机系统简介
硬件:主机、外设等
软件:程序
2 计算机基本组成
graph LR A[运算器] -->B(CPU) C[控制器] -->B B -->E D[存储器] -->E(主机) F[输入设备] -->H(I/O设备) G[输出设备] -->H style A fill:#ccf style C fill:#ccf style D fill:#ccf style F fill:#ccf style G fill:#ccf
一条指令[操作码|地址码]的完成过程:
取指令:从MAR–>IR (PC 指向下一条指令的地址)
指令译码:ID获取指令类别和操作数
指令执行:
访存取数:根据指令地址码访问主存取到对应操作数
结果写回:CPU内部寄存器 || 主存..
3 计算机硬件主要技术指标
- 机器字长:CPU一次能处理的数据位数(取决于CPU寄存器位数)
- 运算速度
CPI 执行一条指令所需时钟周期数
MIPS 每秒执行百万条指令
FLOPS 每秒浮点运算次数 - 主存容量(内存)
64K × 32位 :MAR 16个 存储字长32位
1KB = 2 13 b - 辅存容量(外存) :1GB = 2 30 B 、1B = 8b(bit)
4 存储器
层级
主存储器
与CPU通过总线直接相连
CPU与主存的读写过程
读出:CPU将该字地址送至MAR经地址总线送至主存–>发读命令–>主存读出内容后送至数据总线上由MDR送至目的地
存入:CPU将该字地址送至MAR经地址总线,将字送入MDR—>发写命令–>主存将数据总线上信息写入对应地址
技术指标
存储容量:存在二进制代码的总位数
存取时间:访问时间(读出时间或写入时间)
存取周期:进行连续两次存储器操作所需最小间隔时间
带宽:每秒从存储器进出信息的最大数量 [b/s 字节/s]
…
5 I/O系统
发展过程
CPU与I/O串行:程序查询方式
CPU…并行:中断 | DMA
通道结构
I/O处理机
I/O接口
设置原因:
选择设备
实现数据缓冲(匹配速度)
串并转换
电平转换
传输控制命令
反映设备状态(”忙“”就绪“”中断请求“)
程序查询方式
中断方式
保护现场[出栈]
中断服务
恢复现场[进栈]
中断返回
DMA方式
6 计算机的运算方法
原码
补码:正数与其原码相同 | 负数是原码除符号位外取反加一
反码:原码除符号位外取反
移码:与补码符号位相反
- 定点表示:小数点位置不变
定点数x=xnxn-1…x2x1 [xn为符号位]
若X为纯小数:小数点位于xn与xn-1之间
若X为纯整数:小数点位于x1的右边
浮点表示:任意二进制数N = 2^e.M
相关运算
乘法:靠一些移位和加减🚬
[但是我感觉第二步就是一般整数乘法的算法就ok?]
除法:加减交替法
结果为负数[11 1110] –> 商0、下一步 +Y、余数左移[11 1100]
结果为正数[00 1001] –> 商1、下一步 -Y、余数左移[01 0010]
结果为正数[00 0101] –> 商1、下一步 -Y、余数左移[00 1010]
结果为负数[11 1101] –> 商0、下一步 +Y、余数左移[11 1010]
结果为正数[00 0111] –> 商1 –> 最终商:01101 余数:00 0111(0.0111)
结果:0.0111 * 2-4 + 0.1101
浮点数加减:🚬🚬🚬
对阶:小向大看齐
尾数相加
结果规格化
溢出[双符号位不相等]:右归->小数点左移 若没给出双符号位,则不会溢出
未溢出:左归直到是
舍入处理:丢弃最高位0舍1入
阶码溢出判断
[补码–>原码:除符号位减1再取反]
7 指令系统^ 详见
机器指令
操作类型|操作数
寻址方式
8 CPU
CPU结构
寄存器种类
通用寄存器:存放操作数
数据寄存器:存放操作数
地址寄存器:存放地址
条件码寄存器:存在条件码
指令周期:取出并执行一条指令所需的全部时间
指令流水
![测试用](./computer consistency/image-20210811155339260.png)
中断系统
引起中断的因素
人为设置中断
程序性事故(溢出、除法非法、操作码无法识别)
硬件故障
I/O设备
外部事件(键盘 。。)
中断过程^ 详见
[^ ]:OneNote微机原理-中断中断请求: 中断请求信号 –>CPU INTR口
中断源识别: 中断类型号 –>高优先级先,同优先级按FCFS,低可被高打断
中断响应:
- 一条指令的最后一个时钟周期CPU检测INTR信号
- 向中断源发出INTA中断响应信号
- 断点保护(入栈)
- 获取中断服务程序首地址:【查询中断向量表:中断类型号|中断服务程序的入口地址】
中断服务
- 保护现场
- 中断服务
- 恢复现场
- 中断返回
中断返回:弹出堆栈中断点信息