计算机基本组成(一)
CPU
CPU组成部分主要为 控制单元、算术逻辑单元、寄存器组
控制单元:
- 程序计数器PC(存储下一条指令地址)、指令寄存器IR(存储即将执行指令)、指令译码器ID(对指令分析解释)、时序部件(提供时序控制信号指令中的操作码字段)
- 控制单元负责从内存中获取指令,并解释执行这些指令
- 它包括指令寄存器、指令译码器和时序控制器等组件,用于协调和控制CPU内部的操作
算术逻辑单元:
- 算术逻辑单元ALU、累加寄存器AC(为ALU提供工作区,暂存数据)、数据缓冲寄存器DR(写内存时,暂存指令或数据)、状态条件寄存器PSW(存放状态标志和控制标志)
- 执行算术运算(如加法、减法)和逻辑运算(如与、或、非)
- 接收来自寄存器的数据,并根据指令执行相应的运算
寄存器组:
- 寄存器是CPU内部用于存储临时数据的高速存储器、
- 包括数据寄存器、地址寄存器、指令寄存器等,用于存储运算中的操作数、地址和指令等信息
基本概念:
- CPU的性能指标:主频、字长、CPU缓存、核心数量
- 总线的分类:数据总线、控制总线、地址总线
- 总线的性能指标:带宽、位宽、工作频率
- BIOS/CMOS
- 系统性能评测方法:时钟频率(Clock Frequency)、指令执行速度(Instructions per Second,IPS)、IPC(Instructions per Cycle)、Cache 命中率、指令集(Instruction Set)等
总线系统
定义:总线系统(Bus System)是计算机系统中用于连接各个组件(如 CPU、内存、I/O 设备等)之间进行数据传输和通信的重要组成部分。它承担着在不同组件之间传递数据、地址和控制信号的任务,是计算机系统内部通信的主要通道。
构成要素:
-
数据总线:
数据总线用于传输数据信号,包括 CPU 和其他设备之间的数据传输、内存和外部设备之间的数据传输等;
它的宽度决定了一次能够传输的数据位数,通常以位(bit)为单位来衡量
-
地址总线:
地址总线用于传输地址信息,指示数据的存储位置或外设的寻址
它的宽度决定了系统能够寻址的内存范围,通常以位(bit)为单位来衡量
-
控制总线:
控制总线用于传输控制信号,包括读写控制、时序同步、中断请求等
它传输的信号通常包括读写信号、时钟信号、中断请求信号等
总线性能指标:带宽、位宽、工作频率
带宽:
- 单位时间内可以传输的数据量
- 时间频率f,时间周期T= 1 / f
- 公式:带宽 = 数据位数(bit) * 时钟频率(Hz) = 数据量 / 时间
工作原理:
-
数据传输:
当 CPU 需要从内存中读取数据或将数据写入内存时,它通过数据总线向内存发送数据或从内存读取数据
-
地址定位:
当 CPU 需要访问内存中的特定位置时,它通过地址总线向内存发送地址信息,指示所需数据的存储位置
-
控制操作:
控制总线负责传输控制信号,指示数据传输的方式(读或写)、时序同步和其他操作
基本工作原理
- 取指阶段(Fetch):控制单元从内存中获取下一条指令,并将其存储在指令寄存器中
- 译码阶段(Decode):控制单元对获取的指令进行译码,确定指令的操作类型和操作数
- 执行阶段(Execute):控制单元根据指令的类型和操作数控制ALU执行相应的运算操作
- 访存阶段(Memory Access):如果指令需要访问内存,则控制单元将计算得到的地址发送到内存,并读取或写入数据。
- 写回阶段(Write Back):如果执行的指令产生了结果,并且这些结果需要存储到寄存器或内存中,则将结果写回到目标位置
循环执行,每个时钟周期执行一个阶段,以完成程序的执行。CPU的性能通常由时钟频率(Clock Frequency)和指令执行的效率等因素决定
指令
**定义:**一种命令或者操作码,用于指示计算机系统执行特定的操作。指令是计算机程序的基本组成单位,它包含了执行特定任务的操作码以及相关的操作数(即指令的参数),并且按照一定的格式和规范组织;机器语言的一个语句,一组有意义的二进制代码
基本结构:
-
操作码:
操作码是指令中的关键部分,用于指示执行的操作类型。不同的操作码对应不同的操作,如加法、减法、乘法、逻辑运算等
-
操作数:
操作数是指令中的参数,用于指定操作所需的数据或者地址。操作数可以是立即数(Immediate)、寄存器(Register)地址、存储单元地址等
指令功能:
- 数据处理指令用于对数据进行算术运算(如加法、减法、乘法、除法)和逻辑运算(如与、或、非)等操作
- 数据传输指令用于将数据从一个位置传输到另一个位置,包括加载(Load)数据到寄存器、存储(Store)数据到内存、移动数据等操作
- 控制指令用于控制程序的执行流程,包括条件分支(Branch)、循环(Loop)、子程序调用(Call)等操作
CISC(Complex Instruction Set Computer):
- 指令设计:CISC 架构的指令集通常包含复杂的指令,一个指令可以执行多个操作,包括加载、存储、运算和控制等多种功能
- 指令长度:CISC 指令通常较长,包含大量的操作码和操作数,可以完成较复杂的操作
- 寻址方式:CISC 架构支持多种寻址方式,包括直接寻址、间接寻址、寄存器间接寻址等
- 硬件复杂度:CISC 处理器的硬件实现相对复杂,通常需要更多的硬件资源和复杂的控制逻辑
- 应用领域:CISC 架构适用于通用计算、多任务处理、科学计算等需求较为复杂的场景
RISC(Reduced Instruction Set Computer):
- 指令设计:RISC 架构的指令集精简,每条指令只完成一个简单的操作,如加载、存储、运算等,指令的功能单一而清晰
- 指令长度:RISC 指令长度相对较短,通常为固定长度,简化了指令译码和执行过程
- 寻址方式:RISC 架构通常采用间接寻址或寄存器寻址等简单的寻址方式
- 硬件复杂度:RISC 处理器的硬件实现相对简单,采用了精简的指令集和流水线等技术,使得处理器的设计更加 modularity 和 scalable
- 应用领域:RISC 架构适用于需要高性能和低功耗的应用场景,如嵌入式系统、移动设备、服务器等
寻址方式
**定义:**指用于确定指令中操作数地址的方法或机制。它定义了指令如何访问内存或寄存器中的数据,以及如何计算操作数的地址。
-
立即寻址(Immediate Addressing)
操作数直接包含在指令中,无需额外的地址计算
例如:MOV A, #5,表示将立即数 5 移动到寄存器 A 中
-
直接寻址(Direct Addressing)
操作数的地址直接包含在指令中,指令中使用的是操作数的实际地址
例如:MOV A, [1000],表示将内存地址 1000 处的数据加载到寄存器 A 中
-
间接寻址(Indirect Addressing)
操作数的地址存储在指定的寄存器或内存单元中,指令中使用的是存储地址的地址,需要进行一次额外的寻址操作
例如:MOV A, [B],表示将寄存器 B 中存储的地址处的数据加载到寄存器 A 中
-
寄存器寻址(Register Addressing)
操作数直接存储在寄存器中,指令中使用的是寄存器的编号或名称
例如:ADD A, B,表示将寄存器 B 中的数据加到寄存器 A 中
-
相对寻址(Relative Addressing)
操作数的地址相对于指令执行的地址或程序计数器(PC)计算得到,通常用于分支或跳转指令
例如:JMP Label,表示跳转到标签 Label 处执行指令
-
基址寻址(Base Addressing)
操作数的地址是基址寄存器中存储的地址加上一个偏移量,用于访问数组或结构体中的元素
例如:MOV A, [B + Offset],表示将基址寄存器 B 中的地址加上偏移量 Offset 所得的地址处的数据加载到寄存器 A 中
**不同寻找方式的目的:**扩大寻址空间,并提高编程灵活性
流水线
**定义:**多条指令重叠进行操作的一种准并行处理实现技术
基本原理:
- 指令流水线:流水线将指令执行过程划分为若干个阶段,如取指、译码、执行、访存、写回等。每个阶段都由专门的硬件单元执行,并且不同指令可以同时处于不同阶段,实现了指令的并行执行
- 并行执行:流水线允许多条指令同时处于不同阶段,从而提高了指令的执行效率。当一条指令完成一个阶段后,即可进入下一个阶段,而后续的指令则可以进入前一条指令的前一个阶段,实现了指令的连续执行
- 重叠执行:由于流水线的存在,不同指令的不同阶段可以重叠执行,从而使得整个计算机系统的吞吐量得到提高。即使一条指令的执行时间较长,也不会影响到其他指令的执行速度
计算公式:(t1 + t2 + t3 + … + tk) + (n - 1) * ▲t
t1 t2 t3 为指令的每个阶段的时间,▲t为第一个和最后一个间隔时间
**流水线的吞吐量:**完成的指令数 / 流水线周期