计算机系统-基础知识(一)
一 硬件组成
计算机系统是由硬件和软件组成的,它们协同工作来运行程序。计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备5大部件组成。运算器、控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU)。CPU是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。存储器是计算机系统中的记忆设备,分为内部存储器和外部存储器。前者速度高、容量小,一般用于临时存放程序、数据及中间结果。而后者容量大、速度慢,可以长期保存程序和数据。输入设备和输出设备合称为外部设备(简称外设),输入设备用于输入原始数据及各种命令,而输出设备则用于输出计算机运行的结果。
二 CPU功能
中央处理单元(CPU)是计算机系统的核心部件,它负责获取程序指令、对指令进行译码并加以执行。
控制器 | 程序控制 | CPU通过执行指令来控制程序的执行顺序,这是CPU的重要功能。 |
操作控制 | 一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。 | |
运算器 | 时间控制 | CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要进行严格控制。 |
数据处理 | CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理也是CPU最根本的任务。 | |
此外,CPU还需要对系统内部和外部的中断(异常)做出响应,进行相应的处理。 | ||
三 CPU组成
CPU主要由运算器、控制器、寄存器组和内部总线等部件组成
1、运算器
运算器由算术逻辑单元(Arithmetic and Logic Unit,ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器等组成,它是数据加工处理部件,用于完成计算机的各种算术和逻辑运算。相对控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。
运算器有如下两个主要功能。
- 执行所有的算术运算,例如加、减、乘、除等基本运算及附加运算。
- 执行所有的逻辑运算并进行逻辑测试,例如与、或、非、零值测试或两个值的比较等。
运算器中各组成部件的功能。
算术逻辑单元 (ALU) | ALU是运算器的重要组成部件,负责处理数据,实现对数据的算术运算和逻辑运算。 |
累加寄存器 (AC) | AC通常简称为累加器,它是一个通用寄存器,其功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。例如,在执行一个减法运算前,先将被减数取出暂存在AC 中,再从内存储器中取出减数,然后同AC的内容相减,将所得的结果送回AC中。运算的结果是放在累加器中的,运算器中至少要有一个累加寄存器。 为ALU提供数据并暂存运算结果 |
数据缓冲寄存器 (DR) | 在对内存储器进行读/写操作时,用DR暂时存放由内存储器读/写的一条指令或一个数据字,将不同时间段内读/写的数据隔离开来。DR的主要作用为: 作为CPU和内存、外部设备之间数据传送的中转站; 作为CPU和内存、外围设备之间在操作速度上的缓冲; 在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器。 |
状态条件寄存器 (PSW) | PSW保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,主要分为状态标志和控制标志,例如运算结果进位标志(C)、运算结果溢出标志(V)、运算结果为0标志(Z)、运算结果为负标志(N)、中断标志(I)、方向标志(D)和单步标志等。这些标志通常分别由 1 位触发器保存,保存了当前指令执行完成之后的状态。通常,一个算术操作产生一个运算结果,而一个逻辑操作产生一个判决。 保存由算数指令和逻辑指令运行或测试的结果建立的各种条件码内容。 |
通俗易懂:
- ALU:干活计算的(算盘)
- ACC:主要放被运算数、存结果的草稿本
- DR:内存 ↔ 运算器的数据中转托盘
- PSW:记录计算状态(进位、正负、溢出、是否为 0)的备注条
一个完整流程(如:3+4)
- 内存把数字 3 → 送到【DR 缓冲寄存器】中转
- 把 3 送入【ACC 累加器】
- 内存把数字 4 → 送到【DR】中转
- ACC 的 3、DR 的 4 一起送到【ALU】
- ALU 算出 7,送回 ACC
- ALU 同时把计算情况(有没有进位、是不是 0)写到【状态条件寄存器】
- 需要存结果时:ACC 里的 7 送到 DR,再写回内存
2、 控制器
指令 = 操作码 + 地址码
例如:4 + 5
4和 5 为地址码; + 为操作码
运算器只能完成运算,而控制器用于控制整个CPU 的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且要能够处理异常事件。控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。
指令控制逻辑要完成取指令、分析指令和执行指令的操作,其过程分为取指令、指令译码、按指令操作码执行、形成下一条指令地址等步骤。
指令寄存器 (IR) | 当CPU执行一条指令时,先把它从内存储器取到缓冲寄存器中,再送入IR暂存,指令译码器根据 IR 的内容产生各种微操作指令,控制其他的组成部件工作,完成所需的功能。 保存当前CPU执行的指令(指令 = 操作码 + 地址码) |
程序计数器 (PC) | PC具有寄存信息和计数两种功能,又称为指令计数器。程序的执行分两种情况,一是顺序执行,二是转移执行。在程序开始执行前,将程序的起始地址送入PC,该地址在程序加载到内存时确定,因此PC的内容即是程序第一条指令的地址。执行指令时,CPU自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对PC加1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移量得到,或者根据转移指令给出的直接转移的地址得到。 |
地址寄存器 (AR) | AR保存当前CPU所访问的内存单元的地址。由于内存和CPU存在着操作速度上的差异,所以需要使用AR保持地址信息,直到内存的读/写操作完成为止。 |
指令译码器 (ID) | 指令包含操作码和地址码两部分,为了能执行任何给定的指令,必须对操作码进行分析,以便识别所完成的操作。指令译码器就是对指令中的操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,完成所需的功能。 对指令中的操作码字段进行分析解释 |
时序控制逻辑要为每条指令按时间顺序提供应有的控制信号。总线逻辑是为多个功能部件服务的信息通路的控制电路。中断控制逻辑用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU 处理。
指令寄存器(IR) 存放的是从内存中取得指令,就像个中间站一样,不过是存放指令的中间站
程序计数器(PC) 存放的是指令的地址,还有计数的功能
地址寄存器(AR) 存放的是cpu访问内存单元的地址
指令译码器(ID) 是把操作码解析成对应的指令操作
PC:程序计数器(PC)保存下一条要执行或解码的指令的地址。
IR:指令寄存器(IR)保存当前正在执行或解码的指令。
通俗易懂:
- PC:下条指令地址
- AR:当前送往内存的地址
- IR:存放整条指令
- ID:译码翻译指令
串完整流程(连贯版,和前面运算器串起来)
- PC 保存下一条指令地址 → 送给 AR
- AR 把地址发给内存
- 内存取出指令 → 送入 IR
- IR 把指令交给 ID 译码
- ID 翻译完毕,发控制信号: 让内存送数据到 DR、ACC,让 ALU 去计算,PSW 标记状态
- PC 自动更新,准备取下一条指令
3、寄存器组
寄存器组可分为专用寄存器和通用寄存器。运算器和控制器中的寄存器是专用寄存器,其作用是固定的。通用寄存器用途广泛并可由程序员规定其用途,其数目因处理器不同有所差异。
| 知识点 | 描述 | 图标 |
|---|---|---|
| 通用寄存器 | 如 RAX、RBX(x86-64),用于临时存储数据和运算结果 | 🧱 |
| 专用寄存器 | 如 PC(程序计数器)、SP(栈指针)、BP(基址指针)等 | ⚙️ |
| 标志寄存器(Flags) | 存储运算结果的状态(如零标志 ZF、进位 CF、溢出 OF) | 🚩 |
| 寄存器大小 | 现代架构支持 32 位(如 x86)或 64 位(如 x86-64 / ARMv9)寄存器 | 🔢 |
| 寄存器文件(Register File) | 多个寄存器组成的集合,由控制器选择访问哪个寄存器 | 📁 |
用户可见:通用寄存器组、程序状态字寄存器(PSWR)、程序计数器(PC)、累加寄存器(ACC)
用户不可见:指令寄存器(IR)、暂存寄存器(DR)、存储器地址寄存器(MAR)、存储器数据寄存器(MDR)
CPU 寄存器总速记表
| 部件 | 全称 | 作用 | 四字速记 | 核心考点一句话 |
|---|---|---|---|---|
| ALU | 算术逻辑单元 | 负责加减、逻辑比较、判断,只算不存 | ALU 算 | 运算核心,无存储能力 |
| ACC | 累加寄存器 | 主草稿本,存操作数、存放运算结果 | ACC 存 | 运算默认数据源、结果回存处 |
| DR | 数据缓冲寄存器 | 内存和运算器之间的数据中转托盘 | DR 传 | 匹配内存与 CPU 速度,中转数据 |
| PSW | 状态条件寄存器 | 记录运算标记:进位、溢出、正负、是否为 0 | PSW 标 | 只存标志,不存计算结果 |
| PC | 程序计数器 | 保存下一条指令的内存地址 | PC 记 | 取完指令自动 + 1;跳转就改 PC |
| AR | 地址寄存器 | 把当前地址递给内存,告诉内存去哪读 / 写 | AR 递 | PC 给地址,AR 提交给内存 |
| IR | 指令寄存器 | 存放刚刚取出来的整条二进制指令 | IR 存 | 本条指令执行期间,内容不变 |
| ID | 指令译码器 | 翻译二进制指令,解析要做什么操作 | ID 译 | 翻译官,输出控制信号指挥硬件 |
完整串联流程
- PC 存下一条指令地址 → 送到 AR
- AR 把地址发给内存,内存读出指令 → 送入 IR
- IR 送指令给 ID 译码翻译,发出控制信号
- 按指令要求:内存取出数据→DR→ACC,送入 ALU 运算
- ALU 算出结果送回 ACC,同时更新 PSW 状态标志
- 如需保存结果:ACC→DR→写回内存
- PC 自增,准备取下一条指令
高频易混坑汇总
- PC≠AR:PC 记下一条地址;AR 是当前发给内存的地址
- IR 放【指令】,DR 放【数据】,不要搞混
- ALU 只计算,不能存数;ID 只翻译,不存东西
- PSW 存标志,不是运算结果
相关运算器题目
1、在CPU中,常用来为ALU执行算术逻辑运算提供数据并暂存运算结果的寄存器是 ( ) 。(2014年上半年)
A. 程序计数器 B. 状态寄存器 C. 通用寄存器D. 累加寄存器
2、属于CPU中算术逻辑单元的部件是 ( ) 。(2014年下半年)
A. 程序计数器B. 加法器C. 指令寄存器 D. 指令译码器
3、CPU执行算术运算或者逻辑运算时,常将源操作数和结果暂存在 ( ) 中。(2017年上半年)
A. 程序计数器(PC)B. 累加器(AC)C. 指令寄存器(IR) D. 地址寄存器(AR)
相关控制器题目
1、以下关于CPU的叙述中,错误的是 () 。(2009年下半年)
A. CPU产生每条指令的操作信号并将操作信号送往相应的部件进行控制
B. 程序计数器PC除了存放指令地址,也可以临时存储算术/逻辑运算结果
C. CPU中的控制器决定计算机运行过程的自动化
D. 指令译码器是CPU控制器中的部件
2、计算机指令一般包括操作码和地址码两部分,为分析执行一条指令,其 ( ) 。(2010年上半年)
A. 操作码应存入指令寄存器(IR),地址码应存入程序计数器(PC)
B. 操作码应存入程序计数器(PC),地址码应存入指令寄存器(IR)
C. 操作码和地址码都应存入指令寄存器(IR)
D. 操作码和地址码都应存入程序计数器(PC)
3、在CPU的寄存器中, ( ) 对用户是完全透明的。(2011年下半年)
A. 程序计数器 B. 指令寄存器 C. 状态寄存器D. 通用寄存器
4、CPU中译码器的主要作用是进行 () 。(2011年下半年)
A. 地址译码B. 指令译码C. 数据译码 D. 选择多路数据至ALU
5、在CPU中, ( ) 不仅要保证指令的正确执行,还要能够处理异常事件。(2012年下半年)
A. 运算器B. 控制器C. 寄存器组 D. 内部总线
6、计算机执行指令的过程中,需要由 ( ) 产生每条指令的操作信号并将信号送往相应的部件进行处理,以完成指定的操作。(2019年上半年)
A. CPU的控制器B. CPU的运算器 C. DMA控制器D. Cache控制器
相关程序计数器题目
1、为实现程序指令的顺序执行,CPU ( ) 中的值将自动加1。(2010年上半年)
A. 指令寄存器(IR)B. 程序计数器(PC)C. 地址寄存器(AR) D. 指令译码器(ID)
2、在CPU中用于跟踪指令地址的寄存器是 ( ) 。(2011年上半年)
A. 地址寄存器(MAR) B. 数据寄存器(MDR)C. 程序计数器(PC)D. 指令寄存器(IR)
3、计算机在一个指令周期的过程中,为从内存读取指令操作码,首先要将 ( ) 的内容送到地址总线上。(2016年下半年)
A. 指令寄存器(IR) B. 通用寄存器(GR)C. 程序计数器(PC)D. 状态寄存器(PSW)
4、CPU在执行指令的过程中,会自动修改 ( ) 的内容,以便使其保持的总是将要执行的下一条指令的地址。(2018年下半年)
A. 指令寄存器B. 程序计数器C. 地址寄存器 D. 指令译码器
5、计算机中提供指令地址的程序计数器PC在 () 中。(2020年下半年)
A. 控制器B. 运算器 C. 存储器 D. I/O设备
6、在CPU中,用 ( ) 给出将要执行的下一条指令在内存中的地址。(2021年上半年)
A. 程序计数器B. 指令寄存器 C. 主存地址寄存器 D. 状态条件寄存器