首页 > 代码库 > 计算机体系架构
计算机体系架构
两种架构:
体系结构:是指指令集体系结构。
微体系结构:是指体系结构的具体逻辑实现,不同的微体系结构有不同的流水线设计,不同的分支预测技术。
微体系结构的多样性使得同一种体系结构能够不断的推陈出新,提高微处理器的性能,同时保证代码的兼容性。
预定义的指令集也叫做指令集体系结构(ISA,Instruction Set Architecture)。
ISA是软件与硬件之间的接口,程序与处理器之间的接口。
ISA是设计的规范,微处理器是设计的实现。
指令集体系结构(ISA)作为软件与硬件,程序与处理器之间的一种约定,起着十分重要的作用。使得程序与机器之间可以独立的发展。
ISA通常要定义一套汇编指令,每一条指令都指定一种操作类型和多个操作数,早期的ISA将操作数放在一个栈结构中,在栈顶操作。
现代多数的ISA将操作数放在多端口的寄存器文件中。
相较于微体系结构,ISA架构为了匹配编译器和操作系统,一般不会有太大改变。微体系结构每3-5年就会有较大的发展。
高端微处理器设计的步骤:
1):微体系结构设计,为获得预期的性能而对关键技术进行的研究和确定,通常用一个性能模型来进行评估。规定处理器的功能性行为。
性能模型,在时钟周期的颗粒度上,模拟处理器的行为,计算执行一个测试程序(benchmark)所需要的时钟周期数目。
2):逻辑设计,通过RTL的verilog代码描述,设计实现内部主要的模块以及模块之间的互联。
ISA中还有一个内在的接口定义,区别哪些是编译时静态完成的,哪些是运行时动态完成的程序。
所有在编译时由软件和编译器静态完成的任务和优化,被认为是DSI之上的。
所有在运行时,由硬件动态完成的任务和优化,被认为是DSI之下的。
处于DSI之上的软件和DSI之下的硬件是相互独立的。
处理器的性能法则:
处理器性能是依据执行一段特殊代码所需要的时间来衡量的,可以分为三大类:
1):程序需要的指令数;
2):每条指令的时钟数(Cycles Per Instruction)
3):每个时钟周期需要的时间;
处理器的性能优化:
1):编译器优化,减少不必要的冗余代码,从而减少指令数;
2):使用更为先进的工艺,减少信号传输延时,减小机器时钟周期;
3):增加复杂指令,来减少指令数,但是增加执行部件复杂性,增加指令的时钟数;
4):深度流水线来减小每条指令的时钟数(CPI),但是分支预测出错会使得CPI变大;
目前主要的提升性能的方式还是减小CPI,两种方法:
1):使用RISC,但是指令数目增加;
2):增加指令流水;
指令级并行处理(ILP):
指令级并行可以定义为多条指令的并行执行,
传统的串行处理器每次只执行一条指令。
流水线处理器可以重叠执行多条指令,实现指令级并行。
传统的CISC处理器每处理一条指令,需要10个机器周期,CPI=10
流水线处理器(RISC),通过多条指令的重叠执行,将平均CPI降低到接近1。
标量流水线处理器,在每个周期最多只能发射一条指令。吞吐量在最好状态,CPI等于1。
超标量流水线处理器,每个周期可以进行多条指令的发射,CPI可以小于1。
标量处理器是一种最简单的计算机处理器类型,在同一时间内只处理一条数据,标量处理器是一种单指令单数据流(SISD)处理器。
分为复杂指令集CISC(Complex Instruction Set Computing),对编译器设计要求不高,但是芯片设计复杂,耗电量大。(X86)
精简指令集RISC(Reduced Instruction Set Computing),需要强大的编译器使得多个部件并行执行,采用流水线pipeline,
指令乱序out-oder instruction来发挥CPU性能。(包括MIPS/PowerPC/ARM)
向量处理器,也称为阵列处理器,在科学计算领域应用广泛。多数商业CPU都包括一些向量处理器指令,如SIMD。
向量处理器早于ILP处理器而商业化,采用一种不同的策略来控制多个深度流水的功能部件,典型的向量操作是两个64位浮点数据相加得到新的64位的元素向量。
每条向量指令等同于一个循环,可以执行上百次操作,向量间的各个元素计算相互独立。
标量并行处理器的性能建模:(每个计算中,只有一个处理器处于使用状态),(由向量处理器和标量处理器组成)
Amdahl定律的效率公式:E = 1-h+h/N,N是机器中处理器的数量,h为进行标量运算的时间片。当h从100%稍微下降一点时,流水线处理器的性能下降的很厉害。
并行处理器的性能模型可以用于流水线处理器,机器并行度N代表流水线的深度,执行过程分为流水线填充阶段,完全流水阶段,流水线排空阶段。
假设流水线一旦停顿,流水线中只存在一条指令,相当于流水线暂停N个时钟,模型可以简化为:
其中gi表示流水线中有i条指令的时间片,即流水线停顿(N-i)个周期的时间片。
指令级并行相对于其他的程序段和计算任务的同时处理,称为”细粒度并行”,为开发ILP设计的处理器称为ILP处理器。
ILP处理器可以根据一些列参数进行分类:
1):操作延时(OL),指令执行需要的机器时钟周期数。
2):机器并行度(MP),能够同时在流水线中运行的最大指令数。
3):发射延迟(IL),一条新的指令初始化后进入流水线。
4):发射并行度(IP),每个时钟周期内可以发射的最大指令数。
对于4级流水的基准的标量流水线处理器,相对于标量的非流水处理器,流水线处理器获得了更高的吞吐率。
超流水处理器比基准处理器有着更高的流水度,在超流水处理器中,处理器的时钟周期比基准处理器短,并定义为“次时钟周期“,
一个基准处理器的时钟周期中有m个次时钟周期。
超流水处理器发射指令的速度比执行的速度要快,每个次时钟都会发射指令,但是一条指令的执行可能需要m个次时钟。
从技术上来看,如果传统流水线处理器需要多个时钟来执行简单指令,那应当归类为超流水处理器。
超流水处理器可以被看作m*k段的深度流水线处理器,某条指令的结果不能被后续的m-1条指令利用。
超标量处理器是基准标量流水线处理器的扩展,IP=n条指令/时钟周期,流水线深度n*k,具有相同深度的超流水处理器和超标量处理器具有同样的并行度。
超标量也可以超流水,并行度进一步提高:MP=n*m*k
计算机体系架构