101-104 著名计算机 远古 :ABC, ENIAC, EDVAC, EDSAC, UNIVAC 大型 :IBM S/360 超级 :CDC6600 小型 :PDP-8 微型 :Altair 8800, Apple II, IBM PC 5150 三个约翰 : 冯诺依曼, 莫克利, 埃克特 关于 EDVAC 的报告草案 开关连线 存储程序 十进制 二进制 CA CC M I O 冯诺依曼结构的要点 五个组成部分 数据与程序存放在同一存储器 自动取指
105-107 模型机 控制器 :IR PC MAR MDR 指令译码 控制电路 存储器 :MAR MDR 控制逻辑 地址译码器 运算器 : 通用寄存器 ALU XYZ F 控制总线 地址总线 数据总线 CPU 内部总线 指令执行的 4 个步骤 独立芯片 南桥芯片 磁盘 键盘 鼠标 音频 网络 USB 等设备的控制器
201-202 Intel 8086 16 位通用寄存器 16 根数据线,20 根地址线 段加偏移 标志寄存器 状态标志 :A C O P S Z 控制标志 :D I T Intel 80386 32 位通用寄存器 32 位地址总线 改进了保护模式 增加了虚拟 8086 模式 实模式与保护模式的区别 寻址方式 : 如何取段基址 wrap-around 段大小 : 固定 64KB/4KB 对齐 段基址的存放地点 : 段寄存器 / 段描述符 段保护机制
203-205 传送类指令 MOV WORD PTR [BX+2*SI+500], 01H 逻辑运算 移位指令 立即数不能是唯一的操作数 条件转移指令 JNZ/JNE: ZF=0 JB: CF=1 JA: CF=0 && ZF=0 JG: ZF=0 && SF=OF 控制类指令 STC/CLC/CMC/STD/CLD/STI/CLI HLT/WAIT/ESC/LOCK NOP 串操作指令 MOVSB copy string from DS:SI to ES:DI for CX byte(s) DF=0 increasingly REP MOVSB MIPS 指令的特点 只有 LOAD 和 STORE 可以访存 需要优秀的编译器支持
206-306 MIPS 分支指令 条件 :PC = PC + 4 + 4 imm R 型非条件 :PC = R rs I 型非条件 :PC = { PC + 进位 / 溢出 MIPS/x86 对溢出的处理方式 实现减法运算的 trick RCA/CLA 的关键路径 进位输出信号 通常把多个小 CLA 拼起来
401-606 两版乘法器 并行优化 两版除法器 无法并行优化 简单的 CPU IFU 控制信号 超标量结构 = 超标量流水线 = 超标量 超标量处理器 单周期 标量流水线 时间并行性, 切分现有的硬件资源 标量流水线 超标量流水线 空间并行性, 成倍增加硬件资源 现代的多核 CPU 通常是在一个 CPU 芯片中集成了多个超标量处理器核 结构冒险 lw 访存时, 后面的指令要取指 bubble/ 指令和数据分开存放 lw 写回时, 后面的指令要译码 数据冒险 分开读写口, 先写后读 一般把访存 /ALU 运算结果前递给 ALU Load-Use Hazard, 例如 lw+add 控制冒险 I 型无条件 : 取指时确定, 无影响 R 型无条件 : 译码时确定,1 bubble 条件 : 执行时确定,2 bubbles 增加额外电路, 译码时确定,1 bubble
701-706 DRAM/SRAM 的写入 读出 存储单元 集成度 功耗 价格 速度 刷新 trcd, CL, trp SDRAM 读操作的典型访问过程 行地址 -trcd- 列地址 -CL- 数据 - 预充电 -trp 预充电信号和倒数第二个数据信号同时发出 带宽 = 等效频率 *64bit/(8bit/byte) 写回 写穿透 写分配 写不分配 如何计算平均访存时间 路 组 tag offset 磁盘 1KB=1000B, 内存 1KB=1024B 核心频率 :I/O 频率 : 等效频率 SDR 1:1:1; DDR 1:2:2; DDR2 1:2:4; DDR3 1:2:8
801-806 实模式下中断向量表的结构 保护模式下如何找到中断向量 中断处理的六个步骤 每一步都做些什么? 软硬件如何分工? 保存断点和保护现场的区别是什么? 内部中断处理的十步图 五个专用中断 区分单步中断和断点中断 单步中断比较特殊 ( 优先级 用 TF 位屏蔽 ) BIOS 中断 DOS 中断 (INT 21H) 进一步屏蔽了设备的物理特性及接口特性 功能更加常用
901-907 I/O 接口的六个基本功能 x86 分开编址 ARM/MIPS/PowerPC 统一编址 IN to cpu, OUT to device 可以用 DX 指定端口号 优缺点 指令功能 内部结构,CPU 引脚数目 指令长度, 指令执行时间 占用存储空间 易读性 无条件传送 程序简单, 对外设要求低, 但只适合简单外设 程序查询方式 准确可靠, 对外设要求低, 但效率低 输入输出的六步 中断方式 并行效率高, 外设有主动权, 实时性要求, 但进入和退出中断需要额外的指令 输入输出的六步 DMA 方式的八步 DMA 的配置寄存器 地址初始值 ( 端口地址? 内存地址?) 地址增减方式 ( 端口地址一般不变 ) 数据长度 ( 可不设置 )
第八讲 : 流水线优化技术 流水线的发展变化 没什么理论知识, 只是想说明流水线朝着多级 超标量的方向发展了 转移指令的影响 改变指令流向, 破坏流水模式 如何减小转移指令的影响 延迟转移 转移预测技术 转移预测技术 要不要转移 转移到哪里 为什么可以用 RAS? 过程结尾一定有 RET RET 一定会转移 转移目标地址容易预知 为什么不用 BTB? 同一条 RET 的转移地址往往不同 转移目标地址在存储器中, 访问时间较长, 且在流水线晚期才能获得 要不要转移 硬件总是预测不转移 编译制导 : 在转移指令中多加一位, 由编译器设置是否转移 基于偏移 : 例如 BTFN 基于历史信息 历史信息转移预测器 Pentium 版本 无倾向性的版本 一般在首次进入循环和退出循环时出错 转移目标缓冲器 (BTB) Pentium BTB 的工作机制示意图 如果 BTB 不命中 && 发生转移, 那么新建表项, 设定历史位为 11
第九讲 : 输入输出接口 串并行的比较 传输线数量 传输率 串 / 并转换 信号线串扰 差分信号传输技术 抗干扰, 时序定位准确 布线难度高 可编程并行接口电路 8255A 端口 ABC 数据 地址 控制 复位 电源 地线 ABC 的功能区别 端口选择 方式 012 方式选择控制字 端口 C 按位置 1/ 置 0 控制字 XLAT 指令 AL = [BX+AL]
第十讲 : 中断控制器和定时器 MIPS CPU 的异常处理 在 EPC 保存出现异常的指令地址 需要将当前保存的指令地址 -4??? 清空流水线之后的指令 记录产生异常的原因 跳转到特定地址 x86 系统如何获取中断处理程序的入口地址 如何确定外部中断优先级 软件查询 硬件中断优先级编码电路 ( 菊花链 ) 可编程中断控制器 定时器 Intel 8253 计数器 控制字 数据 读写逻辑 CLK GATE OUT 方式 2 分频器 方式 3 方波发生器 8253 在 IBM PC/AT 中的连接结构 OUT 0 : 系统时钟, 接 IR 0 OUT 1 :DRAM 刷新 OUT 2 : 扬声器 南北桥架构演变 Local APIC 与 I/O APIC 如何协同工作
第十一讲 : 总线与总线标准 片上总线, 系统总线, 通信总线 译码器 仲裁器 总线逻辑电路示意图 PCI Express (PCIe) 串行 高频 全双工 点对点 ( 而不是共享 ) 差分信号传输 峰值带宽 = 总线频率 * 数据位宽 *2(GT/s) 端到端, 两端都含有 RX 和 TX Advanced Microcontroller Bus Architecture Advanced High-performance Bus, from AMBA2 AHB 的基本结构 AHB 读写一个数据 从模块插入等待周期的读写传输 三次连续的总线传输 HTRANS 和 HBURST 信号示例 HTRANS: IDLE, BUSY, NONSEQ, SEQ HBURST: SINGLE, INCR(1,4,8,16), WRAP(4,8,16) 高速缓存的行填充 ( 读 ) 行替换( 写 ) 外设 主存的大量连续数据传输 地址回卷的四个数据的传输 关键字优先 的高速缓存行填充
第十二讲 : 存储结构 Page Miss, Page Hit, Page Fast Hit 读操作时序图 示意图 DDR4 的 Bank Grouping