29、CISC和RISC:为什么手机芯片都是ARM?

我在[第5讲]讲计算机指令的时候,给你看过MIPS体系结构计算机的机器指令格式。MIPS的指令都是固定的32位长度,如果要用一个打孔卡来表示,并不复杂。 [第6讲]的时候,我带你编译了一些简单的C语言程序,看了x86体系结构下的汇编代码。眼尖的话,...

28、异常和中断:程序出错了怎么办?

过去这么多讲,我们的程序都是自动运行且正常运行的。自动运行的意思是说,我们的程序和指令都是一条条顺序执行,你不需要通过键盘或者网络给这个程序任何输入。正常运行是说,我们的程序都是能够正常执行下去的,没有遇到计算溢出之类的程序错误。 不过,现实的软件世...

27、SIMD:如何加速矩阵乘法?

上一讲里呢,我进一步为你讲解了CPU里的“黑科技”,分别是超标量(Superscalar)技术和超长指令字(VLIW)技术。 超标量(Superscalar)技术能够让取指令以及指令译码也并行进行;在编译的过程,超长指令字(VLIW)技术可以搞定指令...

26、Superscalar和VLIW:如何让CPU的吞吐率超过1?

到今天为止,专栏已经过半了。过去的20多讲里,我给你讲的内容,很多都是围绕着怎么提升CPU的性能这个问题展开的。 我们先回顾一下[第4讲],不知道你是否还记得这个公式: 这个公式里,有一个叫CPI的指标。我们知道,CPI的倒数,又叫作IPC(Inst...

25、冒险和预测(四):今天下雨了,明天还会下雨么?

过去三讲,我主要为你介绍了结构冒险和数据冒险,以及增加资源、流水线停顿、操作数前推、乱序执行,这些解决各种“冒险”的技术方案。 在结构冒险和数据冒险中,你会发现,所有的流水线停顿操作都要从指令执行阶段开始。流水线的前两个阶段,也就是取指令(IF)和指...