各部件的公共通道,实现数据,信息的传输与交换
用于完成计算机与外部交换信息,外设种类繁多,总线协议各不相同。因而引入接口,作为信息交换的中间层,简化设计
系统的核心处理单元,主要由运算器,控制器,寄存器阵列,地址和数据缓冲器构成
指令由两部分组成:操作码,操作数
操作码指明操作的性质,操作数指明参与操作的数据或数据存放的地址
亦有教材称,指令由操作码和地址码构成
个人理解地址码指明数据的地址,即地址码是操作数的子集
如有错误欢迎指正
执行如下指令
模型机采用DOS汇编,无指令流水,数据总线宽度为8,一条指令由16字节组成,不同机器细节不同,但流程一致,此处只需关注流程,而不用在意具体细节,如果你不知道这段话在说啥,那就忽略这段话
MOV AX,0X5C -> B0 5C
假定PC此时为0x1000,上述指令翻译的机器码为B053,流程如下
由于冯诺依曼架构指令串行的特点,以及数据和程序混合,带来相应的瓶颈。因而对其有三方面的改进:指令集,存储分层,高速总线
CISC(复杂指令集):由于历史原因,上世纪的存储器造价高,容量小,速度慢,因而为了减少对内存的存取操作,复杂指令通过微程序实现,微程序固化在一块ROM中,而后由硬件实现
其缺点为:
基于以上原因,产生了RISC(精简指令集),其主要思想为将复杂功能拆解为简单指令,而执行简单指令。因而其特别依赖编译器的有效性
其设计原则为:
cache-主存:解决高速度和低成本的矛盾
主存-辅存:解决大容量和低成本的矛盾
连接各子系统的结构称为互连结构,而总线结构是最常用的互连结构,有如下形式
前者一般用于外设少,逻辑简单的系统,后者一般用于体系庞大,逻辑复杂的系统
为了提高系统的并行性,发展出了四种级别的并行技术:SLP(系统级并行,多处理器,多磁盘结构),ISP(指令级并行,流水线技术),TLP(线程级并行,多线程处理器技术),CLP(电路级并行,超前进位加法器)
将一条指令拆分为不同的子过程,每个子过程称为流水线的级,级数也被称为流水线深度。
不同指令的不同子过程在时间上可以重叠,这样就提高了指令的并行性,一个典型的四级流水被划分为:取指,译码,执行,回写。如下所示
宏观上看,每个周期都能完成一个指令,提高了处理效率
过深的流水不仅不会增加效率,反而会以为延时问题降低效率,同时时钟频率越高,也会带来功耗大,指令冒险等问题,因而有了多发射技术,多发射技术又衍生出了超标量和超长指令字两种架构,其CPI可能比1小
超标量处理机通过重复设置多个流水段硬件并行工作来提高性能,但考虑到硬件设计部分的难度,目前一般采用多执行单元的超标量形式
现代的超标量计算机一般采用两条输入流水和三条执行流水
如上所示,执行流水是非对称结构,其依托于此,每个流水适合处理的指令类别就各不相同。为了充分发挥其并行性,其指令分发单元一般会设置一个对指令进行动态调度的机构
与上述不同,VLIW依靠编译器在编译阶段找出潜在的并行指令,并通过指令调度将数据冲突降低至最小,而后将多个并行指令组装为一个指令,形成一条超长的指令,而后由多个部件执行这个超长指令,相当于同时执行多条指令。其效率取决于指令的压缩程度,因而不适用于一般领域。
通过分布式系统实现,由物理上的多个主机构成集群,协同处理问题
利用多线程技术,使得一个处理器能交叠的处理多个线程,使处理器能并发的执行他们。其主要有两种实现方式:
根据费林分类法,有四种类别SISD(单指令流单数据流),MISD(多指令流单数据流),SIMD(单指令流多数据流),MIMD(多指令多数据流)
有如下关系
M I P S = f ( M H z ) C P I MIPS=\frac {f(MHz )}{CPI} MIPS=CPIf(MHz)
以及
T ( s ) = I C × C P I f ( H z ) T(s)=\frac{IC\times CPI}{f(Hz)} T(s)=f(Hz)IC×CPI
其中 I C IC IC 为指令数目, f f f 为时钟频率