# CodeBrick 408 计算机组成原理讲义 > 面向 408(计算机学科专业基础)考研的知识讲义,共 67 篇。每个链接都是纯文本 Markdown, > 可直接抓取阅读;公式为 LaTeX、流程图为 mermaid 源码。引用时请保留原文链接。 > 站点:https://www.codebrick.tech/co-blog/ ## 文章 - [总线仲裁——模拟器使用指南](https://www.codebrick.tech/co-blog/posts/bus/bus-arbitration-simulator.md): 408考研计算机组成原理——交互式总线仲裁模拟器的操作说明:三种集中仲裁方式怎么切、BG信号怎么跟、控制线数从哪看 - [总线仲裁](https://www.codebrick.tech/co-blog/posts/bus/bus-arbitration.md): 408考研计算机组成原理——总线判优控制:链式查询、计数器定时查询、独立请求三种集中式仲裁的控制线数与响应速度取舍,以及分布式仲裁。 - [总线概述与分类](https://www.codebrick.tech/co-blog/posts/bus/bus-overview.md): 408考研计算机组成原理——总线的基本概念、数据线地址线控制线的划分、总线层次结构、总线宽度与工作频率、总线带宽的定义边界与计算、突发传送与信号线复用。 - [总线标准](https://www.codebrick.tech/co-blog/posts/bus/bus-standard.md): 408考研计算机组成原理——总线标准规定的四大特性,三代I/O总线的演进,高速总线为什么从并行走向串行、从共享走向点对点。 - [总线事务与定时](https://www.codebrick.tech/co-blog/posts/bus/bus-timing.md): 408考研计算机组成原理——总线事务的四个阶段,同步通信、异步通信(不互锁/半互锁/全互锁)、半同步通信与分离式通信的动机、机制与取舍。 - [CPU 的功能和基本结构](https://www.codebrick.tech/co-blog/posts/cpu/cpu-overview.md): 408考研计算机组成原理——CPU的功能与基本结构,运算器与控制器的组成,PC、IR、MAR、MDR、ACC、PSW各寄存器的功能与位数,程序员可见性的判定,数据通路的操作元件与状态元件。 - [流水线数据冒险模拟器使用指南](https://www.codebrick.tech/co-blog/posts/cpu/data-hazard-simulator.md): 408考研计算机组成原理——交互式流水线数据冒险模拟器,直观理解 RAW 冒险、阻塞与数据转发 - [异常和中断机制](https://www.codebrick.tech/co-blog/posts/cpu/exception-interrupt.md): 408考研计算机组成原理——异常与中断的基本概念与分类,故障/自陷/终止的区别,中断隐指令与检测响应过程,中断服务程序,中断向量表,优先级与中断屏蔽字,流水线中的精确中断。 - [硬布线控制器](https://www.codebrick.tech/co-blog/posts/cpu/hardwired-control.md): 408考研计算机组成原理——硬布线控制器的组成原理,用组合逻辑直接产生控制信号,三类输入信号,设计步骤与PLA实现,与微程序控制器在速度和灵活性上的对比。 - [指令执行过程](https://www.codebrick.tech/co-blog/posts/cpu/instruction-cycle.md): 408考研计算机组成原理——指令周期的四个子周期:取指、间址、执行、中断,各周期的数据流与微操作序列,工作周期标志触发器,指令周期与机器周期、时钟周期的关系。 - [一条指令在CPU里的一生——模拟器使用指南](https://www.codebrick.tech/co-blog/posts/cpu/instruction-lifecycle-simulator.md): 408考研计算机组成原理——交互式CPU数据通路模拟器,跟着一条指令走完取指、译码、执行、访存、写回全过程 - [微程序控制器](https://www.codebrick.tech/co-blog/posts/cpu/microprogrammed.md): 408考研计算机组成原理——微程序控制器的组成与工作原理,微命令与微操作、微指令与微程序的层次关系,控制存储器CM,水平型与垂直型微指令,三种编码方式与下地址字段位数计算。 - [多周期数据通路](https://www.codebrick.tech/co-blog/posts/cpu/multi-cycle.md): 408考研计算机组成原理——多周期CPU数据通路,指令分阶段执行的动机,IR/MDR/A/B/ALUOut中间寄存器的必要性,功能部件复用与状态机控制,单周期与多周期的对比。 - [多处理器的基本概念](https://www.codebrick.tech/co-blog/posts/cpu/multiprocessor.md): 408考研计算机组成原理——Flynn分类法(SISD/SIMD/MIMD)、硬件多线程、多核处理器、共享内存多处理器。 - [指令流水线的基本概念与实现](https://www.codebrick.tech/co-blog/posts/cpu/pipeline-basic.md): 408考研计算机组成原理——流水线的基本思想与五段划分依据,段间寄存器的作用,时空图,吞吐率、加速比、效率三个指标的定义与计算,有利于流水线的指令系统特征。 - [流水线 vs 单周期对比模拟器使用指南](https://www.codebrick.tech/co-blog/posts/cpu/pipeline-compare-simulator.md): 408考研计算机组成原理——交互式流水线与单周期对比模拟器,直观理解流水线为什么快、快多少 - [流水线冒险及其处理](https://www.codebrick.tech/co-blog/posts/cpu/pipeline-hazard.md): 408考研计算机组成原理——流水线三类冒险:结构冒险、数据冒险(RAW/WAR/WAW)、控制冒险,以及阻塞、数据转发、延迟分支、静态与动态分支预测等处理办法及其代价。 - [流水线性能分析与多发射技术](https://www.codebrick.tech/co-blog/posts/cpu/pipeline-performance.md): 408考研计算机组成原理——含冒险时的流水线性能计算,时空图分析,超标量、超流水线与VLIW的区别,按序/无序发射与完成的三种动态流水线模式。 - [单总线数据通路](https://www.codebrick.tech/co-blog/posts/cpu/single-bus-datapath.md): 408考研计算机组成原理——CPU内部单总线数据通路,暂存器Y与Z的存在理由,MDR双端口的四个门控信号,微操作的节拍拆分规则,取指与三类指令执行周期的微操作序列。 - [单周期数据通路](https://www.codebrick.tech/co-blog/posts/cpu/single-cycle.md): 408考研计算机组成原理——单周期CPU数据通路的设计,R型/lw/sw/beq指令的数据流向与控制信号取值,时钟周期由关键路径决定,单周期为什么不能采用单总线结构。 - [算术逻辑单元(ALU)](https://www.codebrick.tech/co-blog/posts/data-repr/alu.md): 408考研计算机组成原理——从一位全加器推出多位加法器,串行进位为何慢、先行进位为何快,带标志加法器与 ALU 的构成,桶形移位器为何放在 ALU 之外。 - [Booth 乘法(补码一位乘)](https://www.codebrick.tech/co-blog/posts/data-repr/booth-multiply.md): 408考研计算机组成原理——补码为何不能照搬原码乘法、Booth 递推公式从补码定义如何推出、附加位 Q₋₁ 的由来、算术右移的必要性。 - [C语言中的数据类型与转换](https://www.codebrick.tech/co-blog/posts/data-repr/c-type-conversion.md): 408考研计算机组成原理——C语言整数类型、有符号与无符号的双重解释、零扩展与符号扩展为什么保值、截断的后果、宽度与符号性同时改变时的固定顺序,以及int/float/double之间的精度损失。 - [补码加减运算与溢出判别](https://www.codebrick.tech/co-blog/posts/data-repr/complement-add.md): 408考研计算机组成原理——补码加减法规则、加减共用一套加法器的电路原理、三种溢出判别方法为何本质相同、OF/SF/ZF/CF 四个标志的生成式。 - [数据对齐与大小端](https://www.codebrick.tech/co-blog/posts/data-repr/data-alignment.md): 408考研计算机组成原理——大端与小端字节序的定义与取舍,边界对齐省下的是什么,结构体对齐的三条规则与尾部填充的作用,以及对齐对地址低位的约束。 - [校验码总述:码距、奇偶校验与 CRC](https://www.codebrick.tech/co-blog/posts/data-repr/error-detection.md): 408考研——检错纠错的共同原理:冗余位买来了什么、最小码距与检错纠错能力的两个公式怎么推出来、奇偶校验与CRC在这个框架中的位置。 - [浮点数的加减运算](https://www.codebrick.tech/co-blog/posts/data-repr/float-arithmetic.md): 408考研计算机组成原理——对阶为何小阶向大阶看齐、五个步骤各自解决什么问题、GRS 附加位的作用、哪一步会引起哪种溢出。 - [浮点数表示(IEEE 754)](https://www.codebrick.tech/co-blog/posts/data-repr/float-repr.md): 408考研计算机组成原理——IEEE 754单精度/双精度格式,阶码为什么用移码、尾数为什么隐含最高位1、五类取值的划分依据、非规格化数与无穷/NaN的编码规则、表数范围与精度、舍入与浮点数比较。 - [海明码详解](https://www.codebrick.tech/co-blog/posts/data-repr/hamming-detail.md): 408考研——海明码的编码与纠错步骤:校验位数量公式 2^r ≥ k+r+1 的来历、校验位为什么放在 2 的幂次位、故障字为什么直接等于出错位编号,以及 SEC-DED 的做法。 - [乘除运算的基本原理与实现结构](https://www.codebrick.tech/co-blog/posts/data-repr/multiply-divide-circuit.md): 408考研计算机组成原理——乘法为何只能化成移位加、部分积为何右移、乘积双倍字长而加法器只需单倍字长的原因,乘法器与除法器的部件构成、寄存器初值与三种实现层次。 - [不恢复余数除法(加减交替法)](https://www.codebrick.tech/co-blog/posts/data-repr/non-restoring-division.md): 408考研计算机组成原理——恢复那一步为何可以省、正1减负0加规则的代数推导、末位余数为负为何仍需修正一次,以及步数固定带来的硬件收益。 - [定点数编码的转换与书写](https://www.codebrick.tech/co-blog/posts/data-repr/number-encoding.md): 408考研计算机组成原理——真值、二进制机器数、十六进制机器数的三向互转,取反加1的扫描法快捷方式、求相反数为什么要连符号位、同一位串按无符号与按补码的双重解释。 - [进位计数制与转换](https://www.codebrick.tech/co-blog/posts/data-repr/number-system.md): 408考研计算机组成原理——位置计数法的统一式子、按权展开、除基取余与乘基取整的由来、二进制与八/十六进制的分组对应,以及哪些十进制小数无法用有限位二进制表示。 - [恢复余数除法](https://www.codebrick.tech/co-blog/posts/data-repr/restoring-division.md): 408考研计算机组成原理——机器除法为何改成余数左移、不够减为何必须恢复、首次试减产生的商位为何不计入商,以及恢复余数法的效率短板。 - [定点数的移位运算](https://www.codebrick.tech/co-blog/posts/data-repr/shift-operations.md): 408考研计算机组成原理——算术移位、逻辑移位、循环移位的规则与分界,补码算术右移为何是向下取整,移位实现乘除的边界条件。 - [真值与机器数:四种编码的定义](https://www.codebrick.tech/co-blog/posts/data-repr/true-value-machine.md): 408考研计算机组成原理——真值与机器数的概念,原码、反码、补码、移码四种编码的定义式、表示范围、零的表示与边界特例,以及补码为什么能用加法做减法。 - [有效地址计算](https://www.codebrick.tech/co-blog/posts/instruction/addressing-calculation.md): 408考研计算机组成原理——各寻址方式下有效地址EA的计算流程、访存次数的数法、相对寻址的PC基准与位移量、基址加变址加比例因子的复合寻址与二维数组地址。 - [数据寻址方式](https://www.codebrick.tech/co-blog/posts/instruction/addressing-modes.md): 408考研计算机组成原理——立即、直接、间接、寄存器、寄存器间接、变址、基址、相对与堆栈寻址的定义与用途,偏移寻址的统称,基址与变址的分工差异。 - [x86 汇编语言基础](https://www.codebrick.tech/co-blog/posts/instruction/assembly-basics.md): 408考研计算机组成原理——编译器、汇编器与链接器的分工,x86 通用寄存器组,数据传送/算术逻辑/控制流指令,条件转移的标志条件,AT&T 与 Intel 两种汇编格式。 - [CISC 与 RISC 的基本概念](https://www.codebrick.tech/co-blog/posts/instruction/cisc-vs-risc.md): 408考研计算机组成原理——CISC 与 RISC 的设计思想、80-20 规律、指令长度与格式种类的区别、Load/Store 架构、寄存器数量与参数传递、硬布线与微程序控制的选择。 - [指令格式设计与扩展操作码](https://www.codebrick.tech/co-blog/posts/instruction/instruction-design.md): 408考研计算机组成原理——指令格式的六条设计原则、字段位宽与可编码对象数的换算、定长操作码与扩展操作码,以及前缀不重复约束的来历与可用编码数的递推算法。 - [指令系统的基本概念](https://www.codebrick.tech/co-blog/posts/instruction/instruction-overview.md): 408考研计算机组成原理——一条指令必须携带的信息、操作码与地址码、三/二/一/零地址指令的划分依据、ISA 与微架构的分界、指令字长与机器字长和存储字长的关系。 - [程序的机器级表示](https://www.codebrick.tech/co-blog/posts/instruction/machine-level-repr.md): 408考研计算机组成原理——选择结构、循环结构与过程调用的机器级表示,条件码与条件转移,循环的三种编译形态,栈帧布局、参数传递与寄存器保存约定。 - [通道方式](https://www.codebrick.tech/co-blog/posts/io/channel.md): 408考研计算机组成原理——通道是能执行通道程序的专用处理器,通道与DMA的分界、通道指令与I/O指令的区别、字节多路/选择/数组多路三种通道的适用场景。 - [DMA直接存储器访问](https://www.codebrick.tech/co-blog/posts/io/dma.md): 408考研计算机组成原理——DMA控制器的组成与传送过程、DMA请求与中断请求的本质区别、停止CPU访存/周期挪用/交替访存三种方式各自的适用条件。 - [I/O方式对比](https://www.codebrick.tech/co-blog/posts/io/io-compare.md): 408考研计算机组成原理——程序查询、程序中断、DMA三种I/O方式的横向对比:它们是CPU介入程度递减的连续谱,每次跃迁放掉的是不同的东西。 - [I/O接口](https://www.codebrick.tech/co-blog/posts/io/io-interface.md): 408考研计算机组成原理——I/O接口的功能与基本结构、三类I/O端口、独立编址与统一编址两种端口编址方式。 - [DMA vs 中断 vs 程序查询——模拟器使用指南](https://www.codebrick.tech/co-blog/posts/io/io-methods-compare-simulator.md): 408考研计算机组成原理——交互式I/O方式对比模拟器的操作说明:三种模式怎么切、时间线怎么读、CPU利用率差异看哪里 - [I/O系统概述](https://www.codebrick.tech/co-blog/posts/io/io-overview.md): 408考研计算机组成原理——I/O系统的组成、主机与外设之间为什么必须有接口、三类端口,以及三种I/O方式为何会演化出来。 - [程序查询方式与程序中断方式](https://www.codebrick.tech/co-blog/posts/io/programmed-interrupt.md): 408考研计算机组成原理——程序查询方式的无条件传送与条件传送、独占查询与定时查询,程序中断方式如何把等待时间还给CPU,以及中断方式成立的物理前提。 - [计算机的性能指标](https://www.codebrick.tech/co-blog/posts/overview/performance-metrics.md): 408考研计算机组成原理——吞吐率与响应时间、时钟周期与主频、CPI、CPU执行时间三个因子分别由哪一层决定、Amdahl定律与加速比上限、MIPS与FLOPS的局限、基准程序。 - [计算机系统层次结构](https://www.codebrick.tech/co-blog/posts/overview/system-architecture.md): 408考研计算机组成原理——冯·诺依曼结构与五大部件、计算机硬件的基本结构、软硬件的关系、多级层次结构(微程序机器到高级语言机器)为什么是这个顺序、ISA作为软硬件分界面、翻译与解释的区别、程序和指令的执行过程。 - [Cache 综合大题(已拆分并入前四篇)](https://www.codebrick.tech/co-blog/posts/storage/cache-comprehensive.md): 本文的方法性内容已并入《Cache 地址映射》与《Cache 基本概念》,完整真题演算请到题库查看。 - [Cache 的基本原理](https://www.codebrick.tech/co-blog/posts/storage/cache-concept.md): 408考研计算机组成原理——Cache的由来与局部性原理、块与行、判命中的完整条件、访存流程、命中率与平均访问时间的串行并行两种模型、效率与加速比、多级Cache的局部与全局命中率、指令Cache与数据Cache分离。 - [Cache 和主存之间的映射方式](https://www.codebrick.tech/co-blog/posts/storage/cache-mapping.md): 408考研计算机组成原理——直接映射、全相联映射、组相联映射的规则与硬件实现,主存地址三字段划分,标记与块群的关系,Cache总容量的构成。 - [Cache 性能分析(已并入「Cache 基本概念」)](https://www.codebrick.tech/co-blog/posts/storage/cache-performance.md): 本文内容已并入《Cache 基本概念与工作原理》,请前往该页阅读命中率、平均访问时间、效率与加速比、多级 Cache。 - [Cache 中主存块的替换算法](https://www.codebrick.tech/co-blog/posts/storage/cache-replace.md): 408考研计算机组成原理——LRU、FIFO、LFU、随机四种替换算法,栈算法与Belady异常,颠簸现象,LRU位的位数与计数器实现。 - [Cache 写策略](https://www.codebrick.tech/co-blog/posts/storage/cache-write-policy.md): 408考研计算机组成原理——Cache一致性问题的三个来源,写直达与写回、写分配与非写分配,脏位与写缓冲器,Cache总容量中的非数据位。 - [DRAM 芯片与内存条](https://www.codebrick.tech/co-blog/posts/storage/dram-memory-module.md): 408考研计算机组成原理——从DRAM芯片到内存条到插槽的层级、SDRAM与DDR系列靠n位预取提速、型号名里的数字是等效传输率、带宽计算的两种等价算法、多通道存储器与多体交叉的区别。 - [外部存储器](https://www.codebrick.tech/co-blog/posts/storage/external-storage.md): 408考研计算机组成原理——磁盘的物理结构与柱面概念、磁盘地址与容量计算、存取时间三段公式、扇区物理格式,以及SSD的页块结构、写放大与磨损均衡。 - [主存和 CPU 之间的连接](https://www.codebrick.tech/co-blog/posts/storage/memory-expansion.md): 408考研计算机组成原理——存储器芯片的位扩展、字扩展与字位同时扩展,片选译码与MREQ使能,全译码与部分译码,为什么片选用高位地址,由地址范围反求连接的三步走查。 - [存储层次全景模拟器使用指南](https://www.codebrick.tech/co-blog/posts/storage/memory-hierarchy-simulator.md): 408考研计算机组成原理——交互式存储层次模拟器,从寄存器到磁盘,直观理解越近越快越小越贵的层次结构 - [层次化存储器的基本结构](https://www.codebrick.tech/co-blog/posts/storage/memory-hierarchy.md): 408考研计算机组成原理——存储器的三重矛盾与层次结构、程序的局部性原理、Cache-主存与主存-辅存两个层次的差别为什么全部源自未命中代价、块大小与页大小的权衡。 - [多模块存储器](https://www.codebrick.tech/co-blog/posts/storage/memory-interleave.md): 408考研计算机组成原理——多体交叉存储器的连续编址与交叉编址、轮流启动的流水线访问、读m个连续字的时间与无冲突条件、最大带宽与平均带宽的口径差别、同体冲突的判定。 - [存储器的分类](https://www.codebrick.tech/co-blog/posts/storage/memory-overview.md): 408考研计算机组成原理——存储器按存取方式、存储介质、信息可保存性、在系统中的位置四种分类维度,随机存取与直接存取的分界,各类器件的典型用途。 - [半导体随机存取存储器](https://www.codebrick.tech/co-blog/posts/storage/sram-dram.md): 408考研计算机组成原理——SRAM与DRAM的存储元差异及由此推出的全部性质、存储周期与存取时间、DRAM刷新的三种方式、地址复用与引脚数计算、行缓冲、Flash存储器与ROM家族。 - [虚拟存储器](https://www.codebrick.tech/co-blog/posts/storage/virtual-memory-hw.md): 408考研计算机组成原理——虚拟存储器的基本概念,页式虚拟存储器的页表、地址转换与TLB,多级页表,TLB与Cache的联合访问,段式与段页式的基本原理。