├── README.md ├── pics ├── 4-1.jpg ├── 4-2.jpg ├── 4-3.jpg ├── 5-1.jpg ├── 5-2.jpg ├── 5-3.jpg ├── 6-1.jpg ├── 6-2.jpg ├── 7-1.jpg ├── 7-2.jpg ├── 8-1.jpg ├── 8-2.jpg ├── 8-3.jpg ├── 8-4.jpg ├── 8-5.jpg ├── 9-1.jpg ├── 9-2.jpg ├── 9-3.jpg └── 9-4.jpg ├── Chapter10.md ├── Chapter6.md ├── Chapter7.md ├── Chapter2.md ├── Chapter9.md ├── Chapter1.md ├── Chapter4.md ├── Chapter3.md ├── Chapter5.md └── Chapter8.md /README.md: -------------------------------------------------------------------------------- 1 | # Computer-Architecture-Review 2 | 3 | 4 | -------------------------------------------------------------------------------- /pics/4-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/4-1.jpg -------------------------------------------------------------------------------- /pics/4-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/4-2.jpg -------------------------------------------------------------------------------- /pics/4-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/4-3.jpg -------------------------------------------------------------------------------- /pics/5-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/5-1.jpg -------------------------------------------------------------------------------- /pics/5-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/5-2.jpg -------------------------------------------------------------------------------- /pics/5-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/5-3.jpg -------------------------------------------------------------------------------- /pics/6-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/6-1.jpg -------------------------------------------------------------------------------- /pics/6-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/6-2.jpg -------------------------------------------------------------------------------- /pics/7-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/7-1.jpg -------------------------------------------------------------------------------- /pics/7-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/7-2.jpg -------------------------------------------------------------------------------- /pics/8-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/8-1.jpg -------------------------------------------------------------------------------- /pics/8-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/8-2.jpg -------------------------------------------------------------------------------- /pics/8-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/8-3.jpg -------------------------------------------------------------------------------- /pics/8-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/8-4.jpg -------------------------------------------------------------------------------- /pics/8-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/8-5.jpg -------------------------------------------------------------------------------- /pics/9-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/9-1.jpg -------------------------------------------------------------------------------- /pics/9-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/9-2.jpg -------------------------------------------------------------------------------- /pics/9-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/9-3.jpg -------------------------------------------------------------------------------- /pics/9-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HHTheBest/Computer-Architecture-Review/HEAD/pics/9-4.jpg -------------------------------------------------------------------------------- /Chapter10.md: -------------------------------------------------------------------------------- 1 | # 计算机体系结构第十章整理 2 | 3 | > C10:P5图片填空 向量处理器优势 向量指令干嘛 P12图片 向量指令的意思+汇编指令的意思 旁路:缓解冲突依赖(P17:vector chaining) 4 | 5 | 这里想把每一个PPT的知识点都过一下,最好不要漏。(正在整理) 6 | 7 | - 线程级并行(TLP)定义 8 | 9 | - 10 | 11 | 12 | -------------------------------------------------------------------------------- /Chapter6.md: -------------------------------------------------------------------------------- 1 | # 计算机体系结构第六章整理 2 | 3 | 这里想把每一个PPT的知识点都过一下,最好不要漏。 4 | 5 | - IO Bus 6 | 7 | - 上课的时候,说基本把第十一页的PPT过一遍就差不多了 8 | 9 | - memory总线是处理器和memory之间的,而IO bus是meory,处理器和磁盘之间的 10 | 11 | ![image-20231223112635184](pics/6-1.jpg) 12 | 13 | - RAID (Redundant Array of Inexpensive Drives) 14 | 15 | - 在disk drives之间组raid可以获得容错性 16 | 17 | - RAID 0 vs RAID 1 18 | 19 | ​ ![image-20231223113101779](pics/6-2.jpg) 20 | 21 | - RAID的其它感觉有点难,先不管了。 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Chapter7.md: -------------------------------------------------------------------------------- 1 | # 计算机体系结构第七章整理 2 | 3 | 这里想把每一个PPT的知识点都过一下,最好不要漏。 4 | 5 | - 阿姆达尔定律 6 | 7 | - 其实就是一个并行和串行时间的比较 8 | 9 | ![image-20231223115859918](pics/7-1.jpg) 10 | 11 | 12 | 13 | - 计算CPI 14 | 15 | ​ ![image-20231223115951724](pics/7-2.jpg) 16 | 17 | - Functional Simulation 18 | 19 | - 只对ISA的特征建模 20 | - 可以用来生成指令和地址trace,用来给其它模拟工具做输入 21 | 22 | - Trace-Driven Simulation 23 | 24 | - 把指令和地址的trace放入一个微架构timing simulator里面模拟 25 | - 把功能simulation和计时simulation分离开 26 | 27 | - 缺点是需要trace file,以及在mis-predicted paths上不能有效做预测 28 | 29 | - Execution-Driven Simulation 30 | 31 | - 目前通用的simulation 32 | - 把功能simulation和时间simulation结合在一起,并且准确度比Trace-Driven更高 33 | - 缺点是要更多的开发/evaluation时间 34 | - Example: SimpleScalar GEMS Simis M5 PTLSim GPGPU-Sim 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Chapter2.md: -------------------------------------------------------------------------------- 1 | # 计算机体系结构第二章整理 2 | 3 | 这里想把每一个PPT的知识点都过一下,最好不要漏。(虽然感觉最多考的就是那个五级流水) 4 | 5 | - Computer Design的三个ASPECT 6 | - architecture:指令级,用户怎么去使用 7 | - implementation:这个CPU(微架构)是怎么构成的 8 | - physical design:在芯片上如何实现 9 | 10 | - ISA:定义了数据流和控制流 11 | 12 | - 比如定义了怎么存数据(内存寻址)以及怎么算数据(各种算数指令) 13 | - 定义了指令的格式和语义,且对于同一个ISA会有多种CPU的implementation 14 | 15 | - CISC:复杂指令集计算机(e.g. x86) 16 | 17 | - 编译器友好 18 | - (stack-oriented)用栈来传参,节省程序计数器(显式的Push Pop指令) 19 | - 寄存器-内存架构:计算指令可以直接访问内存 20 | - 用condition code作为运算和逻辑指令的side effect 21 | 22 | - RISC:简单指令集计算机(e.g. MIPS) 23 | 24 | - 更少更简单的指令 25 | - (register-oriented)拥有更多的寄存器来传参 26 | - 只有load/store指令可以访存 27 | - 没有condition code 28 | 29 | - User ISA:应用程序可见的ISA 30 | 31 | - 数据流,ALU操作,控制流 32 | 33 | - System ISA:对OS可见 34 | 35 | - 优先级,控制寄存器,控制处理器,内存,IO等重要资源的指令 36 | 37 | - 五级流水:详见PPT35-41 38 | 39 | -------------------------------------------------------------------------------- /Chapter9.md: -------------------------------------------------------------------------------- 1 | # 计算机体系结构第九章整理 2 | 3 | 这里想把每一个PPT的知识点都过一下,最好不要漏。 4 | 5 | - 线程级并行(TLP)定义 6 | 7 | - 线程代表着一个处理器使用的最小处理单元 8 | - 每一个线程的操作都是parallel的 9 | 10 | - 几种多线程并行 11 | 12 | - Fine-grained(interleaved) multithreading:在每个clock cycle都会做线程切换 13 | 14 | - Coarse-grained multithreading:当latency比较长的时候,会做线程切换 15 | 16 | - Simultaneous multithreading (SMT):在同一个cycle,指令可能从不同的thread发过来 17 | 18 | ![image-20231223150842269](pics/9-1.jpg) 19 | 20 | - 多核让TLP更充分的被使用(比如两个核的) 21 | 22 | ![image-20231223151339553](pics/9-2.jpg) 23 | 24 | 25 | 26 | - 多核+SMT的好处 27 | 28 | - 更加充分利用了TLP 29 | - 让更多的core集成到同一个片上 30 | - 在一个高效的频率上用更多的core 31 | 32 | - Multicore vs Manycore 33 | 34 | ![image-20231223151742551](pics/9-3.jpg) 35 | 36 | - 之前的一个CPU+存储层次结构 37 | 38 | ![image-20231223152026008](pics/9-4.jpg) 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Chapter1.md: -------------------------------------------------------------------------------- 1 | # 计算机体系结构第一章整理 2 | 3 | - 摩尔定律:**Moore's law** is the observation that the number of transistors in an [integrated circuit](https://en.wikipedia.org/wiki/Integrated_circuit) (IC) doubles about every two years. Moore's law is an [observation](https://en.wikipedia.org/wiki/Observation) and [projection](https://en.wikipedia.org/wiki/Forecasting) of a historical trend. Rather than a [law of physics](https://en.wikipedia.org/wiki/Law_of_physics), it is an [empirical relationship](https://en.wikipedia.org/wiki/Empirical_relationship) linked to [gains from experience](https://en.wikipedia.org/wiki/Wright's_Law) in production. 4 | 5 | - NMOS switch closes when switch control input is high 6 | 7 | - PMOS switch closes when switch control input is low 8 | 9 | - Scale Out(horizonal scaling): Add more components to a system(e.g. more nodes) 10 | 11 | - Scale Up(vertical scaling): Add resources to a single component in a system (e.g. upgrade memory) 12 | 13 | -------------------------------------------------------------------------------- /Chapter4.md: -------------------------------------------------------------------------------- 1 | # 计算机体系结构第四章整理 2 | 3 | 这里想把每一个PPT的知识点都过一下,最好不要漏。 4 | 5 | - 几种ILP的method 6 | 7 | - 超标量:每个stage有多个指令并行执行(Superscalar) 8 | 9 | ![image-20231221155115773](pics/4-1.jpg) 10 | 11 | - superpipelined:把EX stage切了,相当于流水线的流水线。 12 | 13 | ![image-20231221160055574](pics/4-2.jpg) 14 | 15 | - VLIW:相当于一条指令字里面塞了很多个小指令,然后一个同时执行多个EX阶段 16 | 17 | ![image-20231221160255412](pics/4-3.jpg) 18 | 19 | - superscalar和superpipelined基本等效,只是时间和空间上的并行性 20 | 21 | - 分支预测 22 | 23 | - 静态:编译器可以去预测(比如基于profile数据和给定的数据) 24 | - 动态:在程序运行的过程中分支条件可能发生变化 25 | 26 | - Reorder Buffer(ROB) 27 | 28 | - 指令格式(分支/ld st/ ALU) 29 | - 存放的寄存器位置/内存位置 30 | - Value:指令的结果 31 | 32 | - Tomasulo+ROB 33 | 34 | - 要放到ROB里面来防止各种数据依赖和conflict 35 | - 感觉这个过程比较难,需要在PPT里面仔细看清楚 36 | - 感觉得结合一个视频才能看的懂 37 | 38 | - VLIW 39 | 40 | - Very Long Instruction Word 41 | - 一条大语句里面有几个操作 42 | 43 | - EPIC 44 | 45 | - Explicitly Parallel Instruction Computing 46 | - VLIW的一个延申 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /Chapter3.md: -------------------------------------------------------------------------------- 1 | # 计算机体系结构第三章整理 2 | 3 | 这里想把每一个PPT的知识点都过一下,最好不要漏。 4 | 5 | - 三种dependence 6 | - data:指令中计算出来数据相互依赖(c=a+b d=c+e) 7 | - name:两个指令用了同一个reg或者是memory的地址 8 | - control:指令被一些控制指令(比如branch指令控制) 9 | 10 | - Data Hazard 11 | 12 | - RAW:写后读(c=a+b d=c+e) 13 | - WAR:读后写(c=a+b a=d+e) 14 | - WAW:写后写(c=a+b c=d+e) 15 | 16 | - 三种Hazard 17 | 18 | - Structual hazard:指令i需要一个被后面的指令j要用的资源(有Use) 19 | - Data hazard:指令i会产生一个后面指令j要用的结果 20 | - Control hazard:指令i决定后面执行哪条指令 21 | 22 | - 克服data hazard 23 | 24 | - 使用旁路:如果数据准备好了,直接使用旁路把它放到需要用的地方 25 | - pipeline interlock:流水线阻塞,直到数据准备好 26 | 27 | - Dynamic scheduling和乱序执行 28 | 29 | - control-centric: scoreboard 30 | - data-centric: tomasulo 31 | 32 | - Scoarboard Example 33 | 34 | - 关键是分析数据什么时候准备好了,以及什么时候能写回 35 | - 看完PPT上的example应该就完事了 36 | 37 | - Scoreboard局限性 38 | 39 | - 无前递硬件 40 | - 指令调度基本块内 41 | - 结构冒险(integer/load store硬件) 42 | - 结构冒险->暂停发射指令 43 | - 通过等待处理WAR冒险 44 | - 防止WAW冒险 45 | 46 | - Tomasulo特点 47 | 48 | - **换名**:寄存器被数值或者指针代替 49 | - 消除WAR,WAW冒险,保留站比实际寄存器多,优化一些编译器不能优化的工作 50 | 51 | - Reservation Stations(RS) 52 | 53 | - operand的一个缓存,全部operand准备好,就enable FU 54 | - load / store buffer:也是FU 55 | - 防止寄存器成为性能瓶颈 56 | - 防止WAR,WAW冒险 57 | - 用硬件动态完成循环展开 58 | 59 | - 指令状态 60 | 61 | - Issue:从Fp Op queue拿指令(按序) 62 | - Exe:执行(可能乱序) 63 | - 写回:写回结果(可能乱序) 64 | 65 | - Tomasulo 66 | 67 | - 主要就是少一个状态 68 | - 每次运算完的东西都写到Register Results Status那里 69 | - 把图看懂了就好了 70 | 71 | - RS的缺点 72 | 73 | - 复杂 74 | - 需要大量相联存储 75 | - 公共数据总线成为性能瓶颈 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /Chapter5.md: -------------------------------------------------------------------------------- 1 | # 计算机体系结构第五章整理 2 | 3 | 这里想把每一个PPT的知识点都过一下,最好不要漏。 4 | 5 | - memory层次的overview 6 | 7 | ![image-20231221183303496](pics/5-1.jpg) 8 | 9 | - cache的组成 10 | 11 | - tag:block的地址 12 | - status:检验是否有效 13 | - data:缓存的数据 14 | 15 | - 三种相联方式 16 | 17 | - 直接映射:每个cache line 都是一个set 18 | - 全相联:block可以放在cache的任何位置 19 | - 组相联:e.g.(4路组相联:每个组里能放四个cacheline) 20 | 21 | - 虚存 22 | 23 | - 页表:把虚拟页映射到物理页上 24 | 25 | - 内存/缓存优化 26 | 27 | - 时间局部性 28 | - 空间局部性 29 | - 算法局部性 30 | 31 | - 缓存的两种cache模式 32 | 33 | - Miss cache相当于就是简单往L1和L2中间插了一个cache,而Victim cache相当于就是当一个buffer,把L1旧的value存下来,方便L1来换 34 | 35 | - Miss Caching 36 | 37 | ![image-20231223105807716](pics/5-2.jpg) 38 | 39 | - Victim Caching 40 | 41 | ![image-20231223105957122](pics/5-3.jpg) 42 | 43 | - cache hit的时候写的policy 44 | 45 | - Write-back(写回):lazy的方式,modify暂时只写到cache上,在替换的时候才把脏块写到memory里 46 | - Write-through(写直达/写穿):对cache和对memory一起写 47 | 48 | - cache miss的时候写的policy 49 | 50 | - Write allocate:将主存的block带到cache上并且更新 51 | - no-write allocate:write miss不影响cache,直接写主存 52 | 53 | - DIMM(Dual in-line memory module)层次架构 54 | 55 | - 每一个DIMM有一个或多个rank 56 | - 每一个rank有一组DRAM Devices 57 | - 每一个DRAM device有一个或多个bank 58 | 59 | - 每一个bank有一些memory array 60 | 61 | - 一些DRAM的其它知识 62 | 63 | - Channel:MC和DRAM module之间的通道,也就是平时说的多少通道内存 64 | - Dram chips上的xN表示DRAM至少有N个memory array在一个bank上,并且每一个列的宽度都是Nbits(一次传输N bits data) 65 | 66 | - Synchronous DRAMs(SDRAM) 67 | 68 | - 用始终取代行和列上的RAS和CAS,获得更高数据传输率 69 | 70 | - Double Data Rate(DDR) SDRAM 71 | 72 | - 数据在一个时钟的两个沿(上升/下降)均会传输 73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /Chapter8.md: -------------------------------------------------------------------------------- 1 | # 计算机体系结构第八章整理 2 | 3 | 这里想把每一个PPT的知识点都过一下,最好不要漏。 4 | 5 | - Flynn分类 6 | 7 | - SIMD:Single Instruction Single Data:一组指令执行在一组数据上 8 | - SIMD:Single Instruction Multiple Data:一组指令执行在多组不相交的数据上 9 | - MISD:Multiple Instruction Single Data:目前没有 10 | - MIMD:Multiple Instruction Multiple Data:每个计算节点对于自己的数据执行自己的指令流 11 | 12 | - 几种具有代表性的并行 13 | 14 | - 指令级并行:前几章的内容有谈过,比如超标量之类的 15 | - 线程级并行:对于多处理器的架构,在多个处理器上做并行(比如OpenMP等) 16 | - 数据级并行:在多核的加速卡(如GPU)上做并行(比如CUDA) 17 | - 任务级并行:在集群中有多个任务一起处理 18 | 19 | - 多处理器的经典内存架构 20 | 21 | ![image-20231223142057829](pics/8-1.jpg) 22 | 23 | - UMA vs NUMA (Uniform memory access & Non-uniform memory access) 24 | 25 | - UMA:Centralizaed shared-memory 多个处理器共享同一个物理内存 26 | - NUMA:distributed shared-memory 每个processor对应的物理地址是分开的 27 | 28 | - Centralized Shared Memory 29 | 30 | - 经常被成为SMP(symmetric multiprocessors),类比同一个NUMA下的processor访存 31 | 32 | ![image-20231223143457047](pics/8-2.jpg) 33 | 34 | - Distributed Shared Memory (DSM) 35 | 36 | - 类比GPU卡上的,每一个processor都会有自己的private memory,并且processor间通信靠片上的互连网络 37 | 38 | ![image-20231223143726065](pics/8-3.jpg) 39 | 40 | - Cache一致性问题 41 | 42 | - local和shared的data都存在,对于每一个processor,看到的值可能不一样 43 | - 一致性需要的几个原则: 44 | 45 | ![image-20231223144239902](pics/8-4.jpg) 46 | 47 | - 基本的condition 48 | 49 | - Program Order:需要做到Read After Write,即对同一个处理器,每次读的时候都是读到最新的值 50 | - Write Propagation:对一个值的写可以最终传到其它处理器上:比如P2写的一个值,P1肯定能够读到 51 | - Write Serialization:对于同一个位置的写要做到串行,比如P1和P2都要写一个值,那么在所有处理器中,看到这两个写的顺序都要是一样的 52 | 53 | - Coherence vs Consistency 54 | 55 | - Coherence:一致性,强调读出值的异同 56 | - Consistency:一贯性,强调读的时间概念 57 | 58 | - Snooping Protocol 59 | 60 | ![image-20231223144915417](pics/8-5.jpg) 61 | 62 | - Snooping Protocol定义 63 | 64 | - 所有对于mem的写会变成事务,这个事务对于每一个processor的local cache是可见的。(类似于他们会去snoop mem bus) 65 | - 发生读请求时,cache会同时衡量processor传来的请求,以及之前总线上面已有的事务,并且得出结果。 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | --------------------------------------------------------------------------------