20、面向流水线的指令设计(上):一心多用的现代CPU前面我们用了三讲,用一个个的电路组合,制作出了一个完整功能的CPU。这里面一下子给你引入了三个“周期”的概念,分别是指令周期、机器周期(或者CPU周期)以及时钟周期。 你可能会有点摸不着头脑了,为什么小小一个CPU,有那么多的周期(Cycle)呢?我...2025-11-01深入浅出计算机组成原理
21、面向流水线的指令设计(下):奔腾4是怎么失败的?上一讲,我给你初步介绍了CPU的流水线技术。乍看起来,流水线技术是一个提升性能的灵丹妙药。它通过把一条指令的操作切分成更细的多个步骤,可以避免CPU“浪费”。每一个细分的流水线步骤都很简单,所以我们的单个时钟周期的时间就可以设得更短。这也变相地让CP...2025-11-01深入浅出计算机组成原理
22、冒险和预测(一):hazard是“危”也是“机”过去两讲,我为你讲解了流水线设计CPU所需要的基本概念。接下来,我们一起来看看,要想通过流水线设计来提升CPU的吞吐率,我们需要冒哪些风险。 任何一本讲解CPU的流水线设计的教科书,都会提到流水线设计需要解决的三大冒险,分别是结构冒险(Structu...2025-11-01深入浅出计算机组成原理
23、冒险和预测(二):流水线里的接力赛上一讲,我为你讲解了结构冒险和数据冒险,以及应对这两种冒险的两个解决方案。一种方案是增加资源,通过添加指令缓存和数据缓存,让我们对于指令和数据的访问可以同时进行。这个办法帮助CPU解决了取指令和访问数据之间的资源冲突。另一种方案是直接进行等待。通过插...2025-11-01深入浅出计算机组成原理
24、冒险和预测(三):CPU里的“线程池”过去两讲,我为你讲解了通过增加资源、停顿等待以及主动转发数据的方式,来解决结构冒险和数据冒险问题。对于结构冒险,由于限制来自于同一时钟周期不同的指令,要访问相同的硬件资源,解决方案是增加资源。对于数据冒险,由于限制来自于数据之间的各种依赖,我们可以提...2025-11-01深入浅出计算机组成原理
25、冒险和预测(四):今天下雨了,明天还会下雨么?过去三讲,我主要为你介绍了结构冒险和数据冒险,以及增加资源、流水线停顿、操作数前推、乱序执行,这些解决各种“冒险”的技术方案。 在结构冒险和数据冒险中,你会发现,所有的流水线停顿操作都要从指令执行阶段开始。流水线的前两个阶段,也就是取指令(IF)和指...2025-11-01深入浅出计算机组成原理
26、Superscalar和VLIW:如何让CPU的吞吐率超过1?到今天为止,专栏已经过半了。过去的20多讲里,我给你讲的内容,很多都是围绕着怎么提升CPU的性能这个问题展开的。 我们先回顾一下[第4讲],不知道你是否还记得这个公式: 这个公式里,有一个叫CPI的指标。我们知道,CPI的倒数,又叫作IPC(Inst...2025-11-01深入浅出计算机组成原理
27、SIMD:如何加速矩阵乘法?上一讲里呢,我进一步为你讲解了CPU里的“黑科技”,分别是超标量(Superscalar)技术和超长指令字(VLIW)技术。 超标量(Superscalar)技术能够让取指令以及指令译码也并行进行;在编译的过程,超长指令字(VLIW)技术可以搞定指令...2025-11-01深入浅出计算机组成原理
28、异常和中断:程序出错了怎么办?过去这么多讲,我们的程序都是自动运行且正常运行的。自动运行的意思是说,我们的程序和指令都是一条条顺序执行,你不需要通过键盘或者网络给这个程序任何输入。正常运行是说,我们的程序都是能够正常执行下去的,没有遇到计算溢出之类的程序错误。 不过,现实的软件世...2025-11-01深入浅出计算机组成原理
29、CISC和RISC:为什么手机芯片都是ARM?我在[第5讲]讲计算机指令的时候,给你看过MIPS体系结构计算机的机器指令格式。MIPS的指令都是固定的32位长度,如果要用一个打孔卡来表示,并不复杂。 [第6讲]的时候,我带你编译了一些简单的C语言程序,看了x86体系结构下的汇编代码。眼尖的话,...2025-11-01深入浅出计算机组成原理