这篇博客一方面是上过课后把一些很宏观的想法理一下,不会涉及太多细节;另一方面是两年前整理的《计算范式》里堆叠了一些相对细一些的东西,这篇算作一个补充。
本文由giantpoplar发表于CSDN,转载请保留本声明。
串行 : 冯·诺依曼架构
冯·诺依曼架构是通用计算机一个基本的结构,其特征有两点,一是存储指令和数据,二是指令顺序执行。通用计算机里面指令一般有存取数、计算、控制这三类指令,顺序执行就是这些指令一条执行接着一条执行,任何时刻只有一条指令在执行,这是一种串行的计算。在这种串行的模式下,性能的提升主要来自于处理器频率的提升。
各级并行
流水线
一个简单的mips处理器一条指令的执行可能分为4个阶段:取指,译码和取操作数,执行,写回。如果一条指令执行一个周期,在一个周期里面,指令执行的不同的阶段使用的硬件资源是不一样的,这样会产生资源闲置,资源没有充分利用。
流水线是多阶段处理提升性能(吞吐)应用很广泛的做法。
理想的流水线每阶段花费时间等长,阶段之间没有依赖,n段的流水线充满后就可以获得n倍的性能。流水线的思想在软件里也很常见,比如磁盘I/O和计算的流水,通信和计算的流水。
处理器上的流水线不是理想的,每阶段的时间一般不一样,时钟周期的长度要和最长的阶段一致;各阶段之间还会有依赖,比如取寄存器操作数的时候需要前一条指令的执行结果,但是还没执行完,流水线就要停顿了,还有就是分支指令下一条指令是不确定的,指令进入流水线发现不