文章目录
1 Memory
1.1 寄存器:
- 锁存器:打开允许写入线,将数据保存在锁存器中;关闭允许写入线,输出不会随输入发生改变
- 1个锁存器保存1位,即1bit的数据。
- 一组8个锁存器,可以组成一个8位寄存器
- 简单组合:一根允许写入线连接所有的数据输入线+所有的输出线。
- 8位=8+8+1=17根线,256位=256+256+1=513根线
- 矩阵:行列选择线+允许写入线+允许读取线+数据输入线。256位=16+16+3=35根线
|
|
1.2 RAM
- 矩阵排列的地址:
- 256位内存排列=16x16,用4个位就足够表示(1111,0~15),所以地址可表示为8个位
- 多路复用器multiplexer
- 通过多路复用器传输二进制地址,选择实际矩阵的行列
(将4个位的二进制转为十进制)
- 通过多路复用器传输二进制地址,选择实际矩阵的行列
- 可寻址内存
- 8位地址:28 = 256字节
- 32位地址:232 = 1024 x 1024 x 1024字节=4G
| 256位内存,需要8位地址 = 4位行 + 4位列 (4位二进制表示0~15,实际16根线) 16行列选择线 + 1允许写入线 + 1允许读取线 + 1数据线 将8个256位内存按线性排列,每个内存给同一个地址, 则:一次保存8位,即1个字节,总共可以保存256个字节 |
2 微体系架构:CPU
|
2.1 读取
- 取指令fetch phase
- 打开1、2、3,根据==EIP(程序计数器,指令地址寄存器)==中保存的地址,从RAM中读取指令到指令寄存器中
- 解码decode
- 指令寄存器,对读取的指令进行解码
- 执行指令execute phase
- 打开1、2、5、6,将RAM中对应地址中的数据写入到寄存器中
2.2 运算
- 取指令fetch phase
- 打开1、2、3,根据EIP(程序计数器,指令地址寄存器)中保存的地址,从RAM中读取指令到指令寄存器中
- 解码decode
- 指令寄存器,对读取的指令进行解码
- 执行指令execute phase
- 打开7、11,将数据从寄存器读取到==ALU(算术逻辑单元)==中
- 打开8、9,执行运算并将结果先保存到控制单元的内部寄存器中
2.3 写入
- 取指令fetch phase
- 打开1、2、3,根据EIP(程序计数器,指令地址寄存器)中保存的地址,从RAM中读取指令到指令寄存器中
- 解码decode
- 指令寄存器,对读取的指令进行解码
- 执行指令execute phase
- 打开1、10、11、12,将数据从寄存器写入到RAM的对应地址
2.4 clock
- 时钟速度/频率hz
- 以精确和固定的间隔触发电信号,信号被控制单元用于推进CPU内部操作。
- 动态时钟频率调整
- 超频:修改时钟,加快CPU速度
- 超频:修改时钟,加快CPU速度
3 数据的高速读写—高级CPU设计
- CPU和RAM的数据传输——总线BUS。
3.1 高速缓存cache
- 为了减少RAM完成一个指令(寻址,取数据等操作)的时钟周期,在CPU中加入高速缓存cache。
- 高速缓存命中/缺失
- 当CPU读取一次数据时,会直接读取该地址一定范围内的所有数据到cache中。
当再次读取数据时,所需要的数据已经保存在缓存中,称为高速缓存命中,否则称为高速缓存缺失。 - 缓存也可以用来暂时存储长度较长和更复杂的中间数据值
- 当CPU读取一次数据时,会直接读取该地址一定范围内的所有数据到cache中。
- 脏位
- 当CPU执行结束后修改后的数据没有立即写入到RAM中,而是写入到cache中,方便下一步的运算。
- 因此,缓存中的数据和RAM中的数据不匹配,这种不匹配需要记录下来,以保证后续缓存和RAM的同步(一般是缓存满)
- 所以,缓存的每个BLOCK都有特殊的标志,脏位,即:页面重写标志位。
3.2 指令流水线
- 顺序执行:完成一个指令需要3个时钟周期。
不同阶段,CPU只有一个部分在工作 - 流水线设计:平行处理,即:取指令,解码,执行同时进行。
每个时钟周期都有指令执行,CPU各个部分时刻保持活跃,吞吐量变为原来的3倍。
| 缺点:指令依赖性,下一条指令可能读取到上一条未经处理的数据。 流水线处理器需要提前检查数据的依赖性,必要时停止流水线处理 |
3.3 高级设计
- 乱序执行:
- 动态安排有依赖的指令顺序,减少停止
- 分支预测和推测执行:
- 针对if、jump等分支指令发生跳转,导致处理器等待情况,在分支指令执行结束前,预测安排正确分支的指令提前执行,如果预测错误则清除已经执行的结果,重新执行另一个分支。
- 优化单个指令流的吞吐量:增加计算单元,如多个ALU,多指令平行执行
- 多核处理器:
- 多个独立处理单元,同时运行多指令流,共享资源共同计算
- 超级计算机:多CPU