ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

系统架构设计师笔记 03:CPU 结构、Cache 与总线怎么考

系统架构设计师笔记 03:CPU 结构、Cache 与总线怎么考 第 2 章我是硬着头皮啃的。翻开全是名词ALU、AC、DR、PSW、MAR、MDR、IR、组相联、PCI-E……每个字都认识连起来不知道要干嘛。第一遍读完做选择题错了一多半。后来摸清它的出题方式发现很规矩不考设计 CPU只考认零件、算两个数。认零件是这寄存器归运算器还是控制器“哪个对用户透明”算数是 Cache 平均访问时间和总线带宽两个公式各三十秒。想明白这点第 2 章从背诵题变成识别题。一、先立骨架冯诺依曼和哈佛不是一回事教材开篇给的冯诺依曼结构五大部件是运算器、控制器、存储器、输入设备、输出设备其中运算器和控制器后来塞进同一块芯片就成了 CPU。真正容易栽的是冯诺依曼和哈佛的区别两者核心分歧只有一条指令和数据放不放在一起。对比项冯诺依曼结构哈佛结构指令与数据同一存储器、同一总线独立的指令与数据存储器取指与取数不能同时分时复用总线可并行吞吐更高硬件成本低一根总线搞定高两套存储与总线典型应用通用计算机、PC、服务器DSP、单片机、嵌入式实时处理常考点瓶颈在取指-执行串行现代 CPU 的 L1 分 I/D Cache即哈佛化记忆方法冯诺依曼是一条路走两趟车哈佛是修了两条路。所以现代 CPU 外面看着是冯诺依曼里面 L1 Cache 已经拆成 I-Cache 和 D-Cache 了——这个外冯内哈的说法几乎年年有选择题在考。二、CPU 拆开运算器和控制器各有哪些零件教材把 CPU 分成运算器、控制器、寄存器组和内部总线四块。考点集中在前两块里那几个英文缩写。运算器负责算ALU算术逻辑单元是核心配 AC累加寄存器存中间结果、DR数据缓冲寄存器暂存进出内存的数据、PSW状态条件寄存器记录进位与溢出等标志。控制器负责指挥PC程序计数器指向下一条指令地址、IR指令寄存器存当前指令、ID指令译码器翻译指令、MAR地址寄存器存要访问的内存地址再加时序部件产生节拍。真正拉开分差的是下面这张表。软考十几年反复考哪个寄存器对用户透明答案几乎每次都是 IR。寄存器归属对用户是否可见为什么这么判通用寄存器寄存器组可见程序员能用指令直接读写AC 累加寄存器运算器可见汇编里直接操作累加器PSW 状态寄存器运算器可见条件转移指令要读标志位PC 程序计数器控制器有争议多判可见转移指令会改它的值IR 指令寄存器控制器不可见透明硬件自动装入无指令可访问MAR 地址寄存器控制器不可见透明内部暂存程序摸不到MDR/DR 数据缓冲运算器/控制器不可见透明同上这里有个坑PC 和 PSW 在不同教材里口径不一致有的书把 PC 划成不可见。选择题通常把 IR、MAR、MDR 当作确定透明的答案项含混时选最保守的。口诀算ALU加AC缓DR状PSW控PC指IR译ID地MAR前半句是运算器后半句是控制器。透明寄存器记译码、指令、地址三个看不见——IR、ID、MAR 都在搬运和翻译程序碰不到。三、存储层次三层是为了同时骗过速度和成本寄存器最快最贵最小辅存最慢最便宜最大。层次从高到低是寄存器 → Cache → 主存 → 联机磁盘 → 脱机光盘磁带这个顺序要能正着背也能倒着背。它靠什么成立局部性原理时间局部性刚用过的数据马上还会用和空间局部性用了这个地址旁边的地址大概率也要用。Cache 就是拿局部性在赌赌对了命中赌错了去主存取。Cache 平均访问时间两个公式别混教材给的公式是t3 h × t1 (1 - h) × t2其中 t1 是 Cache 存取时间、t2 是主存存取时间、h 是命中率。算一遍Cache 存取 1ns主存 10ns命中率 95%则t3 0.95 × 1 0.05 × 10 0.95 0.5 1.45ns相对纯主存的加速比约 6.9 倍。命中率掉到 90% 时t3 0.9 × 1 0.1 × 10 1.9ns。只掉 5 个点平均时间涨了三成多。有些辅导书写成t1 (1-h) × t2把未命中开销拆成先查 Cache 再去主存。两种写法取决于 t2 定义成主存单独访问时间还是未命中总开销。考场认准教材那个式子题干没特殊说明就用h × t1 (1-h) × t2。三种地址映像方式映像方式规则优点缺点冲突率直接映像主存块固定映射到唯一 Cache 行硬件最简单、查表最快常用块抢同一行会反复置换最高全相联映像主存块可放任意 Cache 行冲突最少、命中率最高要全表比较电路复杂最低组相联映像先分组组内全相联折中实际最常用复杂度居中中等记法直接是一个萝卜一个坑全相联是哪有空坐哪组相联是先分车厢再随便坐。再顺一个对比SRAM 用触发器快、贵、不用刷新做 CacheDRAM 用电容慢、便宜、要定时刷新做主存。记刷 DRAM、不刷 SRAM就够了。四、总线三条线各管什么带宽怎么算总线按传的内容分三类数据总线传数据、地址总线传地址、控制总线传读写中断等信号。地址总线宽度直接决定寻址空间这是高频考点32 位地址总线寻址 2^32 字节 4GB32 位系统内存上限卡在 4GB 就卡在这儿。带宽公式带宽 (总线宽度 / 8) × 总线工作频率 × 每周期传输次数。两个算例建议动手算一遍32 位宽、33MHz、每周期传 1 次 →4B × 33MHz 132 MB/s这就是经典 PCI64 位宽、66MHz、每周期传 1 次 →8B × 66MHz 528 MB/sPCI 64 位版本常见总线标准速查总线典型位宽/频率主要用途ISA / EISA8/16 位、8MHz早期 PC 扩展槽已淘汰PCI32/64 位、33/66MHz老式通用扩展槽AGP32 位、66MHz 起专供显卡已被 PCI-E 取代PCI-E串行x1/x4/x8/x16显卡、固态都走它SATA / SCSI串行硬盘等存储设备五、这章值几分论文能不能用考频判断第 2 章在综合知识里稳定占 3~5 分属于必须拿的部分。透明寄存器、Cache 命中率计算、总线带宽计算、地址总线寻址范围是四个最稳的得分点。案例分析不单独考硬件但性能瓶颈分析类案例偶尔要你判断升级 CPU 还是加缓存这时局部性原理和命中率就能用上。论文可用性直接写不合适论文要的是架构实践。但 Cache 的层次思想可以平移成本地缓存 → 分布式缓存 → 数据库的三级缓存论述写性能优化类论文时作理论铺垫提一两句比空喊我们加了 Redis有层次。速记收尾CPU 记算加缓状、控指译地透明记IR 和 MARCache 记h×t1(1-h)×t2总线记位宽/8 × 频率。四句话够用。下一篇讲第 2 章第二块进程管理、调度算法与死锁四条件。死锁的条件与破解方式对应关系更易记混单独拆一篇。
返回列表