一、计算机的概念
(一)计算机的基本组成
计算机由硬件系统和软件系统两个部分组成,从硬件系统来看,主要由运算器、存储器、控制器、输入设备和输出设备五个部分组成,如下:
现代计算机可简化将五大部件认为由三部分组成,即CPU(中央处理器,运算器+控制器)、主存储器和I/O设备(Input /Output),其中CPU和主存储器可以称为主机,I/O设备可以称为外部设备。
(二)五大部件的功能
机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。
1、运算器
运算器由算术逻辑单元(ALU)、累加器(AC)、通用寄存器和数据暂存器等组成,它用于完成算术运算和逻辑运算,并将运算的结果暂存在运算器中(通用寄存器用于存放操作数、中间结果以及各地址信息等,常见的通用寄存器有数据寄存器、地址指针寄存器、累加寄存器等等)。【CPU执行算术运算或者逻辑运算时,常将源操作数和结果暂存在AC中】
算术逻辑单元(ALU):是用于完成算术运算和逻辑运算的逻辑电路,它是CPU的执行单元,即CPU的核心组成部分,由And(与门) 和Or(或门)构成,其基本功能为加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、求补等操作。
2、存储器
存储器是计算机系统中的存储设备,用于存放程序和数据,它根据控制器指定位置进行存入和存出操作。
3、控制器
控制器,是计算机系统的控制中心,它决定计算机运行过程的自动化,用于控制程序和数据的输入、运行以及处理运算结果,由程序计数器PC、指令寄存器IR、地址寄存器AR、数据寄存器DR和指令译码器ID等部分组成,控制器从存储器中逐条取出指令,经过分析后向目标位置部件发送控制信号,从而使计算机完成指令。
以下是各部件以及各种寄存器的作用:
名称 | 作用 |
程序计数器PC | 也称为指令计数器,指出下条指令在主存中的存放地址,从而CPU取得指令,其功能是计数、存储信息,另外它也可以临时存储算术/逻辑运算结果 |
指令寄存器IR | 寄存,即保存当前正在执行的这条指令的代码 |
地址寄存器AR | 存放CPU当前访问的内存单元地址 |
数据寄存器DR | 暂存从内存储器中读出或写入的指令或数据 |
指令译码器ID | 译码,对获取的指令进行译码,并产生信号使计算机各部件完成指令 |
例如,程序员可以通过汇编语言访问程序计数器PC,可以通过指令进行改变,但 不能访问指令寄存器IR、存储器数据寄存器MDR、存储器地址寄存器MAR等。
4、输入设备和输出设备
输入设备和输出设备合并称为I/O设备,输入设备将人们熟悉的信息形式转换为机器能识别的信息形式,而输出设备相反,例如键盘、鼠标等是输入设备;打印机、显示器等是输出设备。
(三)计算机硬件的主要技术指标
1、机器字长
CPU进行一次运算所能处理的二进制数据位数称为机器字长,以单位bit(位,也称为比特)来衡量,位是数据存储的最小单位【1字节=8位(1byte=8bit)】,由于是二进制代码,即1和0,其中每一个1或0就是一位(bit)。
它通常与CPU的寄存器位数有关,机器字长越长,数的表示范围越大且精度也越高,目前大多数常用计算机处理器都为64位,即64位的计算机,其CPU一次可以处理的二进制数据位数为64位。
2、存储容量
存储容量包括主存容量和辅存容量,主存容量是指主存中存放的二进制代码的总位数,它等于存储单元个数×存储字长,主存中有两个寄存器,分别为存储器地址寄存器(MAR)和存储器数据寄存器(MDR),其中MAR存放将访问的存储单元地址,其位数代表存储单元的个数;MDR存放从存储体中取出的代码或将向某存储单元存入的代码,其位数代表存储字长。辅存通常以字节数表示。
例如,MAR为16位,MDR为32位,则存储单元个数为216=65536,即64K个存储字(1K=1024=210),存储字长为32,所以存储容量为216×32=221=2M(1M=1024K=220)位,也等于218byte(1byte(字节)=8bit(位))。
3、运算速度
常用单位时间内执行指令的平均条数来衡量计算机的运算速度,单位为百万条指令每秒(MIPS),另外还有CPI或FLOPS也可以衡量。
二、CPU(中央处理器)
(一)CPU 的基本概念
CPU(中央处理器,Center processing units),又称为微处理器,它是运算器+控制器组合起来的,这是由于这两者在逻辑关系和电路结构上联系十分紧密。
常与CPU相提到的还有GPU(图形处理器,Graphics processing unit)、NPU(网络处理器,Neural-network Processing Unit)等,这里简单了解一下,GPU是用作图像和图形相关运算工作的微处理器,从而使显卡(显卡用于转换驱动,即计算机系统要显示的信息进行转换驱动,并向输出设备输出并显示)减少取CPU的依赖;NPU采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
以下两张图:
1、OPPO发布首个自研NPU芯片 马里亚纳 MariSilicon X。
2、麒麟9000E和麒麟9000的差别。
(二)CPU 指令集
CPU用来计算和控制计算机系统的一套指令集合称为指令集,可将指令集分为精简指令集(RISC)和复杂指令集(CISC)两种,精简指令集采用简单的指令,而复杂指令集采用复杂的指令,如下表:
不同点 | 精简指令集(RISC) | 复杂指令集(CISC) |
指令数量 | 简单 | 复杂 |
CPU中通用寄存器数量 | 多 | 较少 |
控制器实现 | 硬布线控制,即组合逻辑器 | 微程序控制器 |
指令执行方式 | 并行处理(采用超标量和超流水线结构) | 顺序串行执行 |
计算机各部分利用率 | 高 | 低 |
指令执行速度 | 快 | 较慢 |
编程的便利性 | 较难 | 较容易 |
(三)CPU的主要性能指标
1、主频 (CPU的时钟频率)
时钟频率,其单位为MHz或GHz,它用于表示CPU运算和处理数据的速度,由于计算机的操作在时钟信号的控制下分步进行的,每个时钟信号周期完成一步操作,时钟频率的高低在很大程度上反映了CPU速度的快慢(CPU内数字脉冲信号震荡的速度),但单从时钟频率上并不能代表CPU的整体性能,因为它只是CPU性能的一个方面。
2、缓存(高速存储器)
缓存是位于CPU与内存之间的高速存储器,其速度比内存快(比随机存储器RAM快),缓存主要解决CPU运行速度与内存读写速度不匹配的问题,所以说缓存容量的大小也是衡量CPU的主要性能指标之一,它对CPU速度的影响很大。
缓存分为一级缓存、二级缓存和三级缓存等,一级缓存位于CPU内核旁边,它的容量最小;二级缓存是处理器内部的一些缓冲存储器;三级缓存可以提升大数据计算时处理器的性能。
3、另外,衡量CPU的主要性能指标的还有位和字长。
三、指令系统和指令流水
(一)指令的组成
CPU中一条指令由一组二进制代码来表示,指令是由操作码和地址码组成的,一条指令必须有一个操作码,但是可以有多个地址码。
操作码,用于指明指令要完成的操作,如加法、减法、移位等等,其位数反映了机器的操作种类,即机器允许的指令条数,若操作码占X位,则该机器最多包含2X条指令。
地址码,用于指出操作数的地址(一或两个)、结果的地址以及下一条指令的地址。
(二)CPU指令的执行过程
CPU指令的执行过程简单可以概括为:首先通过指令译码器ID对操作码进行测试,以便识别所要求的操作,操作码经过译码后,向控制器发出具体的对应信号。
控制器的基本功能为取指令、分析指令和执行指令,即CPU指令的执行过程如下三个步骤:
1、取指令
控制器根据程序计数器(PC)提供的指令地址从主存储器中读取指令,送到主存数据缓冲器中,然后再送往CPU内的指令寄存器(IR)中,同时改变PC的内容,使其指向下一条指令地址或紧跟当前指令的立即数或地址码。
2、分析指令
分析控制器要发出的指令所对应的操作,且分析参与此次操作的操作数地址,根据寻址方式计算地址,然后到存储器中取操作数;若是双操作数指令,这需两个取数周期来取操作数;另外若无操作数指令,则直接进入下一个过程。
3、执行指令
形成操作控制信号序列,通过对运算器、存储器以及I/O设备的操作,执行每条指令。
总之,CPU必须具有控制程序的顺序执行(指令控制)、产生完成每条指令所需的控制命令(操作控制)、对各种操作加以时间上的控制(时间控制)、对数据进行算术运算和逻辑运算(数据加工)以及处理中断等功能。
(三)指令的寻址方式
寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它分为指令寻址和数据寻址,这里简单介绍指令寻址,主要针对数据寻址展开(介绍主要的几个数据寻址)。
1、指令寻址
指令寻址又分为顺序寻址和跳跃寻址,顺序寻址通过程序计数器PC加1,自动形成下一条指令的地址;跳跃寻址通过转移类指令实现。
2、数据寻址
在指令系统中的各种寻址方式中,获取操作数最快的是立即寻址,它的执行速度最快,在取指令时一并将操作数取出。
直接寻址不需要专门计算操作数的地址,只对主存访问一次,但必须修改形式地址的值才能修改操作数的地址,形式地址的位数限制了操作数的寻址范围。
间接寻址中有效地址由形式地址间接提供,它与直接寻址相比扩大了操作数的寻址范围,另外一个优点是便于编制程序。
寄存器寻址中寄存器直接寻址,在其指令执行阶段无须访问主存,减少了执行时间,且由于指令字较短,也节省了存储空间。
例、若某计算机字长为32位,内存容量为2GB,按字编址,则寻址范围为____________。
解:由1GB=1024MB,1MB=1024KB,1KB=1024B,且1B=8bit可得:
内存容量2GB=2×1024×1024×1024×8位,
由于计算机字长为32位,所以存储单元的个数为2×1024×1024×1024×8/32=512×1024×1024,即512MB,
所以寻址范围为512M。
(四)指令周期
1、指令周期的关系
指令周期可以划分为几个不同的阶段,每个阶段所需的时间称为机器周期,也称为CPU工作周期或基本周期,这个周期是处理操作的最基本单位,另外机器周期又由若干个时钟周期组成。
2、指令周期的组成
按刚刚上述CPU指令的处理过程来看,也就是完成一条指令的全部时间等于取指令、分析指令和执行指令所花的时间总和,所以我们将CPU每取出并执行一条指令所需的全部时间称为指令周期,也就是CPU完成一条指令的时间。
另外将完成取指令和分析指令的操作所花的时间称为取指周期,而执行指令所花的时间称为执行周期,如下图:
当对于间接寻址的命令来说,还要在取指周期和执行周期之间加一个间址周期,此时需先访问一次存储器,取出有效地址,然后再访问存储器,从而取出操作数,如下图:
准确的来说,一个完整的指令周期包括取指周期、间址周期、执行周期和中断周期四个子周期,其中间址周期的存在是判断是否有间接寻址,中断周期的存在是判断是否有中断,即中间址周期和中断周期不一定包含在每个指令周期内,所以我们一开始所述一般的指令周期包括指令周期包含两部分。
(五)指令流水
指令流水原理也就是将指令分解成多个小步骤,其中各个步骤相互,重叠,从而可以使多条命令并行处理从而提高效率,例如下图是指令的二级流水:
流水线中执行的总时间主要取决于流水操作步骤中耗时时间最长的操作,设流水线由N段组成,每段所需时间分别为t,其中tj为时间最长的那一段的执行时间,则完成M个任务的实际时间为每段时间的总和+(M-1)×tj。
例、某四级指令流水线分别完成取指、取数、运算、保存结果四步操作,其完成相应操作的时间依次为1ns、2ns、3ns、4ns。
①求该流水线的操作周期至少为多长时间?
②求执行完100条指令后需多长时间?
答:①可知其中执行时间最长的操作时间为T=4ns,故该流水线的操作周期至少为4ns。
②T总=(1+2+3+4)+(100-1)×4=406ns。
例、将一条指令的执行过程分解为取指、分析、执行三步,按照流水方式执行,若取指时间为4△t,分析时间为2△t,执行时间3△t,则执行100条指令需要的时间为___________△t。
解:建立时间为:4△t+2△t+3△t=9△t,
由于该流水线的操作周期为4△t,每4△t执行完一条指令,所以:
9△t+(100-1)×4△t=405△t。
流水线的性能通常用吞吐率、加速比和效率三项指标来衡量,如下:
1、吞吐率
在单位时间内流水线可以处理的任务或执行指令的数量称为吞吐率,吞吐率分为最大吞吐率和实际吞吐率,其中实际吞吐率总是小于最大吞吐率。
最大吞吐率是指流水线在连续流动达到稳定状态后所获得的吞吐率,若各段时间均为△t,则最大吞吐率Tpmax如下:
实际吞吐率是指流水线完成n条指令的实际吞吐率,对于m段的指令流水线,若各段时间均为△t,则在m段流水线上完成n条指令的时间为T=m△t+(m-1)△t,连续处理n条指令,其实际吞吐率Tp如下(当n≫m时,Tp≈Tpmax):
2、加速比
加速比是指m段流水线的工作速度与等功能的非流水线工作速度之比,若数值越大,则说明该流水线的工作安排方式越好。
设流水线各段时间均为△t,在m段流水线上完成n条指令的时间为T1=m△t+(m-1)△t,但对于等效的非流水线工作,其所需时间为T2=nm△t,即加速比Sp为(当n≫m时,Sp≈m):
3、效率
效率是指流水线中各功能段的利用率,利用率等于加速比Sp/m(m为流水线的段数),也等于Tp△t(流水线各段时间为△t)。