从较为宏观的层面了解一下计算机的指令系统,在这之前也浅显地说一说体系结构,对认识当今要处理越来越多任务、处理速度也越来越快的计算机是比较有帮助的。除此之外,从认识流水线开始,知道执行一条指令需要经过多个步骤、多个处理器并行,也可以更好地体会到这是提高系统性能的一种思想,在缓冲技术中尤甚。
以下插入的图片都引自文老师软考教育
初识体系结构
计算机的体系结构指的是计算机硬件与软件之间的接口和组织方式,它定义了计算机系统的组成部分、数据的存储方式、指令的执行方式以及数据和指令的传输方式等。而指令系统是计算机体系结构中的一部分,它定义了计算机所支持的指令集合以及这些指令的操作和功能。
关于体系结构的分类,按照Flynn分类法可以分为四类:
Flynn分类法::分类有两个因素,即指令流和数据流,指令流由控制部分处理,每一个控制部分处理一条指令流,多指令流就有多个控制部分;数据流由处理器来处理,每一个处理器处理一条数据流,多数据流就有多个处理器;至于主存模块,是用来存储的,存储指令流或者数据流,因此,无论是多指令流还是多数据流,都需要多个主存模块来存储,对于主存模块,指令和数据都一样
- 单指令流单数据流(Single Instruction, Single Data – SISD):这是传统的串行计算机体系结构,其中每个指令按顺序执行,每次只处理一个数据。这种体系结构的计算机通常具有单个中央处理单元(CPU)和单个存储器,例如传统的个人计算机。
- 单指令流多数据流(Single Instruction, Multiple Data – SIMD):在这种体系结构中,多个处理单元同时执行相同的指令,但每个处理单元处理不同的数据。指令是并行执行的,但数据是独立的。SIMD体系结构通常用于数据并行计算,例如向量处理器和图形处理器(GPU),用于图形渲染和科学计算等领域。
- 多指令流单数据流(Multiple Instruction, Single Data – MISD):MISD体系结构中,多个处理单元并行执行不同的指令,但每个处理单元处理相同的数据流。——这种体系结构被证明是不可实现的,或者说是不实际的。
- 多指令流多数据流(Multiple Instruction, Multiple Data – MIMD):这是一种多处理器体系结构,其中多个处理单元同时执行不同的指令,并处理不同的数据。每个处理单元都有自己的指令流和数据流。MIMD体系结构常见于并行计算系统,例如多核处理器、分布式计算集群和超级计算机。
初识指令系统
指令系统定义了计算机所支持的指令集合和指令的操作。指令可以是算术操作(例如加法、减法)、逻辑操作(例如与、或)、数据传输操作(例如加载、存储)以及控制操作(例如跳转、条件分支)等。指令系统可以分为不同的类型,例如精简指令集(RISC)和复杂指令集(CISC)等,每种类型的指令系统具有不同的特点和优势。
指令系统的设计需要考虑指令的操作和功能、寻址方式、寄存器的使用、指令格式等方面。它直接影响到计算机的性能、编程模型以及软件的开发和执行方式。
计算机指令的组成:一条指令由操作码和操作数两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令以二进制编码的形式存放在存储器中。(指令基本上都放在主存或程序计数器PC中)
计算机指令执行过程:取指令——分析指令——执行指令三个步骤,首先将程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR;而后由指令译码器进行分析,分析指令操作码;最后执行指令,取出指令执行所需的源操作数。
指令系统当中的流水线技术
当我们在探讨指令系统的流水线技术时,主要是针对的是RISC(精简型指令系统)。因此接下来的讲述范围规定在了RISC当中。
在RISC(Reduced Instruction Set Computer)指令系统中,流水线技术是一种常用的优化技术,用于提高指令的执行效率。流水线将指令的执行过程分为多个阶段,并允许多个指令在同一时刻在不同的阶段进行处理,以实现指令级并行。
RISC中的流水线技术可分为三类:
(1)超流水线(Super Pipe Line)技术:它通过细化流水、增加级数和提高主频,使得在每个机器周期内能完成一个甚至两个浮点操作。其实质是以时间换取空间
(2)超标量(Super Scalar)技术:它通过内装多条流水线来同时执行多个处理,其时钟频率虽然与一般流水接近,却有更小的CPI。其实质是以空间换取时间
(3)超长指令字(VeryLongInstruction Word,VLiW)技术:VLIW和超标量都是20世纪80年代出现的概念,其共同点是要同时执行多条指令,其不同在于超标量依靠硬件来实现并行处理的调度,VLIW则充分发挥软件的作用,而使硬件简化,性能提高。
一些常用的计算公式:
然后是一些便于之后复习的典型例题: