嵌入式软件开发,非科班专业必须掌握的基本计算机知识
核心知识点:数据表示和运算、存储系统、指令系统、总线系统、中央处理器、输入输出系统
CPU(中央处理器)是计算机的核心部件,它主要负责执行计算机指令,控制和协调计算机各部件的工作,是计算机的大脑。CPU通常由运算器、控制器和寄存器组成。
-
运算器:负责执行各种算术运算和逻辑运算。它包括ALU(算术逻辑单元)、累加器和数据缓冲器等。
-
控制器:负责控制指令的执行顺序,从程序计数器(PC)读取指令,并将其解码为操作码和地址码,然后发出控制信号控制计算机各部件的工作,并把执行结果写入寄存器或在内存中保存。
-
寄存器:是CPU内部用来暂存数据的高速存储器,包括通用寄存器、标志寄存器、程序计数器等。它们可以快速地存取和修改数据,优化了计算机的工作效率。
在计算机系统中,CPU是最关键的组件之一,它的性能直接影响到计算机的运行速度和计算能力。同时,针对不同的应用场景和需求,也出现了许多不同类型和架构的CPU,如x86、ARM、MIPS等,它们在指令集、工作模式、功耗和性能等方面都有所不同,用户可以根据自己的需求进行选择。
一 CPU功能和结构
CPU的功能
指令控制
控制指令的执行,即完成取指令,分析指令,执行指令的操作
操作控制
根据指令生成操作信号,并将其送入相应的部件,进而操作这些部件进行相应的动作
时间控制
对各种操作的发生加以时间上的控制
数据加工
对数据进行算数逻辑运算
中断处理
对计算机运行过程中的异常情况和特殊请求的处理
CPU的结构组成
CU(控制器)和ALU(算术逻辑单元,运算器)的功能
CU是Control Unit(控制器)的缩写,它是计算机系统中的指令控制器,主要负责指令的解码和执行控制。CU从存储器中读取指令,对指令进行分析和解码,并控制CPU对指令进行操作。CU利用时序信号来协调各个子系统的运行,例如ALU、寄存器组、数据通路等,以完成计算机程序的运行。
而ALU则是Arithmetic Logic Unit(算术逻辑单元)的缩写,它是计算机系统中的核心部件,主要负责数值计算和逻辑运算。ALU可以对两个二进制数进行加、减、乘、除、与、或、异或等运算,以及比较、移位、求反等逻辑运算。所有的计算机数据处理都需要经过ALU,因此它被称为计算机的“心脏”。
CU的功能
1.取出指令,并指出下一条指令在主存中的位置
2.对指令译码,产生相应的操作信号进而控制部件进行相应的动作
3.指挥并控制CPU,主存和输入输出设备之间的数据流向
ALU的功能
执行算数和逻辑运算,并执行逻辑测试
CPU中的寄存器
二 指令执行过程
指令周期,包括无条件转移指令,加法指令,乘法指令,不同的指令有不同的指令周期
要注意,不是所有的都是直接寻址,要考虑到间接寻址的情况
——取指周期——有间接寻址吗?——N,执行周期——有中断吗?
指令周期的数据流
1)取值周期的数据流
数据流步骤
1.当前指令地址送至存储器地址寄存器,记作(PC)->MAR;
2.向主存发送读命令,启动主存做读操作,记作:1->R;
3.将MAR所指主存单元中的内容经过数据总线送入MDR,记作:M(MAR)->MDR;
4.将MDR中的指令送入IR记作:(MDR)->IR
5.形成下一条指令地址(由CU发出信号控制),记作(PC)+1->PC
2)间指周期的数据流(间指周期与PC无关)
1.将指令的地址码送入MAR,记作:Ad(IR)->MAR;
2.向主存发送读命令,启动主存做读操作,记作:1->R;
3.将MAR所指主存单元中的内容经过数据总线送入MDR,记作:M(MAR)->MDR;
4.将有效地址送至指令的地址码字段,记作:MDR->Ad(IR);
3)执行周期的数据流
不同指令执行周期操作不同,数据流多种多样,因此没有统一的数据流表示法
4)中断周期的数据流(没有指令寄存器IR),中断当前的任务,指向新的任务,完成新任务后再回来
1.将特定地址a送至MAR(假设将程序断点存入主存地址a处),记作:a->MAR;
2.向主存发送写命令,启动主存做写操作,记作:1->W;
3.将断点(PC内容)送入MDR,记作:PC->MDR;
4.将MDR的内容通过数据总线写入MAR所指示的存储单元内,记作:MDR->M(MAR);
5.将向量地址形成部件的输出送至PC,为下一条指令的取指周期做准备,记作:向量地址->PC;
三 控制器
控制器的输入输出都有哪些?
四 控制信号与数据通路(包括每个命令的运行时间和空间“从哪到哪”)
1)CPU内部采用总线方式的控制信号与数据通路(运行空间)
在计算机组成原理中,CU、IR、PC、MAR、MDR、ACC、ALU分别代表以下概念:
- CU(Control Unit,控制单元):控制器,负责指令的解码和执行控制。
- IR(Instruction Register,指令寄存器):存放当前正在执行的指令。
- PC(Program Counter,程序计数器):存放下一条指令的地址。
- MAR(Memory Address Register,内存地址寄存器):存放要访问的内存地址。
- MDR(Memory Data Register,内存数据寄存器):存放从内存中读取或写入的数据。
- ACC(Accumulator,累加器):用于存储 ALU 运算的结果,并且也可以用于存储数据。
- ALU(Arithmetic Logic Unit,算术逻辑单元):用于进行算术运算和逻辑运算的组件。
以上这些组件都是计算机中的重要组成部分,它们协同工作,以完成计算机程序的执行。其中,CU 通过控制时序信号来协调各个子系统的工作,IR 存储当前正在执行的指令,PC 存储下一条指令的地址,MAR 存储要访问的内存地址,MDR 存储从内存中读取或写入的数据,ACC 用于存储 ALU 运算的结果并可以存储数据,ALU 则是计算机中的核心部件,主要负责数值计算和逻辑运算。
取指周期
1.PC0与MARi有效,完成(PC)->Bus->MAR.
2.通过总线控制向主存发送读信号 1->Bus->R.
3.MDRi有效,存储器通过数据总线,完成M(MAR)->Bus->MDR.
4.MDR0和IRi有效,完成(MDR)->Bus->IR.
5.(PC)+1->PC
间指周期
1.MDR0和MARi有效,将形式地址送往MAR,即完成Ad(MDR)->Bus->MAR.
2.通过总线控制向主存发送读信号 1->Bus->R.
3.MDRi有效,存储器通过数据总线,完成M(MAR)->Bus->MDR.
执行周期
1.MDR0和MARi有效,将有效地址经内部总线送入MAR,即完成:(MDR)->Bus->MAR.
2.通过总线控制向主存发送读信号 1->Bus->R.
3.MDRi有效,存储器通过数据总线,完成M(MAR)->Bus->MDR.
4.MDR0和Yi有效,将操作数送至Y,即(MDR)->Bus->Y.
5.ACC0和ALUi同时有效,同时CU向ALU发"ADD"加控制信号,使ACC的内容和Y的内容相加结果送寄存器Z,即(ACC)+(Y)->Z.
6.Z0和ACCi有效,将结果存入ACC,即(Z)->Bus->ACC.
2)CPU内部不采用总线方式的控制信号与数据通路(运行空间)
取指周期
1.C0有效,完成(PC)->MAR.
2.C1有效,打开MAR送往地址总线的输出门。
3.通过总线控制向主存发送读命令1->R.
4.C2有效,打开数据总线送至MDR的输入门,即M(MAR)->MDR.
5.C3有效,打开MDR和IR之间的控制门,实现(MDR)->IR
6.C4有效,打开指令操作码送至CU的输出门,即:Op(IR)->CU。
7.(PC)+1->PC.
多级时序系统(运行空间)
时钟周期是最小的,而一般把访问一次存储器的时间作为机器周期,一个指令周期包括多个机器周期
组合逻辑(硬布线)控制
取指周期操作节拍安排
1.(PC)->MAR,1->R
2. M(MAR)->MDR
3. (MDR)->IR,OP(IR)->CU,(PC)+1->PC
间指周期操作节拍安排(把指令的形式地址先取出来放到MAR中)
1.Ad(IR)->MAR,1->R
2. M(MAR)->MDR
3. (MDR)->Ad(IR)
执行周期操作节拍安排(以加法为例)
1.Ad(IR)->MAR,1->R
2. M(MAR)->MDR
3. (ACC)+(MDR)->ACC
中断周期操作节拍安排
1.a->MAR,1->W
2.(PC)->MDR 获取指令地址的数据
3.(MDR)->M(MAR),向量地址->PC
微程序控制
微程序控制是一种计算机指令执行方式,它将指令集的控制逻辑用一组微小的指令(称之为“微指令”)来表示,通过这些微指令来控制计算机中各个部件的运行。相比于硬连线控制电路,微程序控制具有更灵活、易于设计、易于修改和维护等优点。
在微程序控制中,CPU通过执行微指令来控制各个部件的操作。每个指令都包含了一些微操作,如存储器读取、算术运算、逻辑运算等,这些微操作被称为微命令。微程序控制器会根据指令的不同生成对应的微指令序列,并将其发送给CPU中的控制线路,以控制各个部件的操作。
使用微程序控制,可以将控制逻辑与处理器的其他部分分离开来,使处理器的设计更加模块化、易于维护和扩展。同时,由于微指令可以被编写成高级语言,并由编译器进行转换,因此微程序控制也能提高设计效率。
取指周期(注意:微指令>微操作(微命令))
1.取指周期微程序首址送入CMAR:M->CMAR
2.取微指令:CM(CMAR)->CMDR
3.产生微操作命令:第一条微指令操作控制字段中为1的各位发出控制信号,如(PC)->MAR,1->R;
4.形成下一条微指令地址:由此条微指令的顺序控制字段指出下一条微指令地址为M+1,送至CMAR,即Ad(CMDR)->CMAR.
执行周期
微指令的编码方式
直接编码方式、字段直接编码方式、字段间接编码方式、混合编码方式
不论哪种编码方式,都要留出一种状态表示不发控制信号(微命令)
微指令的编码方式通常采用二进制编码,即将微指令中的每个操作和控制信号均用二进制位来表示。这些二进制编码可以使用硬布线的方式实现,也可以存储在控制存储器(Control Memory)中。
对于一个典型的微程序控制器而言,其微指令长度通常在10~100位不等,具体长度取决于CPU所支持的操作种类和性能要求。为了节省存储空间,一些压缩编码方式可以被应用到微指令中,例如通过状态码压缩等技术来减少微指令长度。
在编写微指令时,需要定义每个微操作的二进制编码方式,以及指令格式、操作数和寻址方式等信息。这些信息可以通过微指令编写工具来进行描述和生成,例如 Microprogram Editor(微程序编辑器)等工具。此外,也可以使用高级语言来编写微指令,然后通过编译器进行转换为机器码。
微指令序列地址形成
微指令序格式
五 指令流水线
指令流水线是一种通过分阶段、并行执行指令来提高计算机处理器效率的技术。在指令流水线中,每个指令被划分成多个阶段,不同阶段的指令可以并行执行,从而提高了处理器的吞吐量。指令流水线通常包含以下几个阶段:
取指阶段(IF):从存储器中读取指令,并将其送到指令译码器中进行解析。
指令译码阶段(ID):对指令进行译码,并从寄存器中读取操作数。如果有数据冒险或控制冒险,此阶段会等待前一条指令的结果。
执行阶段(EX):根据指令类型执行相应的操作,例如算术、逻辑运算等。
访存阶段(MEM):如果指令需要访问内存,则在此阶段进行读写操作。
写回阶段(WB):将执行结果保存回寄存器。
每个阶段都由专门的电路设备来完成,并且采用流水线技术实现并行处理。在指令流水线中,当一条指令进入下一个阶段时,上一条指令则进入下下一个阶段,依次类推,直到最后所有阶段都完成时,一条指令才被执行完成。
指令流水线的优点是可以提高处理器的吞吐量和运行效率,缺点是可能会因为数据冒险或其他原因导致流水线暂停或出错,并且在进行分支跳转操作时需要额外的处理。因此,设计复杂、高效的指令流水线需要考虑多种因素,并合理选择阶段数、指令设计和控制机制等参数。
含有三个功能段的指令流水线时空图
影响指令流水线效率的因素包括以下几个方面:
数据相关:指令中的操作数依赖于另一条指令未完成的结果,导致后续指令需要等待前一条指令的结果才能执行。这种情况称为数据相关,可能会导致流水线暂停、降低效率。
控制相关:指令之间存在分支、跳转等控制转移操作,需要等待条件满足后才能继续执行。这种情况称为控制相关,也可能会导致流水线暂停、降低效率。
结构相关:指令流水线的硬件结构限制了某些指令的并行度,例如浮点运算指令需要占用特定的功能部件,可能会导致其他指令无法同时执行。
数据通路延迟:不同功能部件的处理速度不同,可能会导致某些指令需要等待前一阶段的指令完成后才能被执行。
在设计指令流水线时,需要合理考虑这些因素,采用一些优化策略来提高流水线的效率。例如使用多级缓存、预测分支跳转、重排列指令流等技术来减少数据相关和控制相关的影响;使用多功能部件、流水线冒险处理等技术来减少结构相关和数据通路延迟的影响。另外,还需要合理选择流水线阶段数和指令设计等参数,以达到最佳的性能和效率。