计算机系统
# 一、计算机系统基础知识
# 1.1 考点
# 1.1.1 计算机系统硬件基本组成
计算机基本硬件系统由运算器、控制器、存储器、输入和输出设备五大不见组成,运算器和控制器等部件集成一起,成为中央处理器 CPU,CPU 是硬件系统的核心
# 1.1.2 中央处理器
# 1. CPU 的功能
(1)程序控制。CPU 通过执行指令来控制程序的执行顺序
(2)操作控制。一条指令功能的实现需要若干操作信号来完成,CPU 产生每条指令*的操作信号并将操作信号送往不同的部件,控制相应的部件按指令的功能要求进行操作。
(3) 时间控制。CPU 对各种操作进行时间上的控制,这就是时间控制。CPU 对每条指令的整个执行时间要进行严格控制。同时,指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要进行严格控制。
(4) 数据处理。CPU 通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理是 CPU 最根本的任务。
# 2. CPU 的组成
CPU 主要由运算器、控制器、寄存器组和内部总线等部件组成
# 运算器
运算器由算术逻辑单元(Arithmetic and Logic Unit,ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器组成,它是数据加工处理部件,完成计算机的各种算术和逻辑运算
运算器各部件的组成和功能。
(1) 算术逻辑单元。ALU ,负责处理数据,实现对数据的
算术运算和逻辑运算
。(2) 累加寄存器(AC)。AC 通常简称为累加器,它是一个通用寄存器。当运算器的算术逻辑单元执行算术或逻辑运算时,为
ALU 提供一个工作区
。(3) 数据缓冲寄存器(DR)。在对内存储器进行读写操作时,用 DR 暂时存放由内存储器读写的一条指令或一个数据字,并将不同时间段内读写的数据隔离开来。
(4) 程序状态字寄存器(PSW)。PSW 保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码和内容,主要分为
状态标志
和控制标志
,如运算结果进位标志(C)、运算结果溢出标志(V)、运算结果为 0 标志(Z)、运算结果为负标志()、中断标志()、方向标志(D)和单步标志等。这些标志通常分别由一位触发器保存,保存了当前指令执行完成之后的状态。通常,一个算术操作产生一个运算结果,而一个逻辑操作则产生一个判决。
# 控制器
运算器只能完成运算,而控制器用于控制整个 CPU 的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且要能够处理异常事件。控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。
(1) 指令寄存器(IR)。当 CPU 执行一条指令时,先把它从内存储器取到缓冲寄存器中,再送入 IR 暂存,指令译码器根据 IR 的内容产生各种微操作指令,控制其他的组成部件工作,从而完成所需的功能。
(2) 程序计数器(PC)。PC 具有寄存信息和计数两种功能,又称为指令计数器。程序的执行分为两种情况,一种是顺序执行,另一种是转移执行。在程序开始执行前,将程序的起始地址送入 PC,该地址在程序加载到内存时确定,因此 PC 的内容即是程序第一条指令的地址。执行指令时,CPU 将自动修改 PC 的内容,以便使其保存的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对 PC 加 1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移量得到,或者根据转移指令给出的直接转移的地址得到。
(3)地址寄存器(AR)。AR 保存当前 CPU 所访问的内存单元的地址。由于内存和 CPU 存在操作速度上的差异,所以需要使用 AR 保存地址信息,直到内存的读/写操作完成为止
(4) 指令译码器(ID)。指令分为操作码和地址码两部分,为了能执行任何给定的指令,必须对操作码进行分析,以便识别所完成的操作。指令译码器就是对指令中的操作码字段进行分析和解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,从而完成所需的功能。
# 1.1.3 数据表示
# 原码、反码、补码和移码
原码
在原码表示中,机器数的
最高位是符号位
,0
代表正号
,1
代表负号
,余下各位是数的绝对值。零有两个编码,即[+0] 原=00000000、[-0]原=10000000。反码
当符号位为正号
0
和原码相同,当符号位为负号1
时候,除符号位全部按位取反
-1 ->
1000 0001
(原码) ——>1111 1110
(反码)补码
当符号位为正号
0
和原码相同,当符号位为负号1
时候, 它就是反码
的基础上在末尾加一
,0 有唯一的补码[-0]#=0 0000000-1 ->
1000 0001
(原码) ——>1111 1110
(反码) ——>1111 1111
(补码)移码
在补码的基础上符号位取反就是移码
-1 ->
1000 0001
(原码) ——>1111 1110
(反码) ——>1111 1111
(补码) ——>0111 1111
一个数的补码的补码
== 原码
机器字长 n 时各个码得范围
# 定点数、浮点数
定点数
小数点位置固定不变的数。
浮点数
浮点数是
小数点不固定
的数,能表示更大范围的数
规格化就是将尾数绝对值现定于[0.5,1]之间
# 1.1.4 校验码
奇偶校验
奇数个数据位出错,可以检测出错误,但是不能纠错
奇偶校验是一种简单而有效的校验方法。其基本思想是,通过在编码中
增加一位校验位
来使编码中 1 的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为 2。对于奇校验,它可以检测代码中奇数位
出错的编码,但不能发现偶数位出错的情况,即当合法编码中奇数位发生了错误,也就是编码中的 1 变成 0 或 0 变成 1,则该编码中 1 的个数的奇偶性就发生了变化,从而可以发现错误。 常用的奇偶校验码有 3 种,即水平奇偶校验码
、垂直奇偶校验码
和水平垂直校验码
。海明码
码距=2 (
检错
) 、 码距 >= 3 (可能有纠错能力
)利用多组数位的奇偶性来检错纠错
海明码的构成方法是:在数据位之间插入
k 个校验码
,通过扩大码距来实现检错和错。设数据位是 n 位
,校验位是 k 位,则 n 和 k 必须满足循环冗余校验码
可以检错不能纠错
求CRC采用模2运算
循环冗余校验码(CRC)广泛应用于数据通信领域和磁介质存储系统中。它利用生成多项式为 k 个数据位产生下个校验位来进行编码,其编码长度为 k+r。
# 二、计算机体系结构
# 1.1 指令系统
# 1.1.1 寻址方式
立即寻址。操作数就包含在指令中。
1+2
直接寻址。操作数存放在内存单元中,指令中直接给出操作数所在存储单元的地址。
0x1 + 0x2
(内存地址) ——>1+2
寄存器寻址。操作数存放在某一寄存器中,指令中给出存放操作数的寄存器名。寄存器间接寻址。操作数存放在内存单元中,操作数所在存储单元的地址在某个寄存器中。
R1 + R2
(寄存器名) ——>1+2
间接寻址。指令中给出操作数地址的地址。
0x3 + 0x4
——>0x1 + 0x2
——>1+2
相对寻址。指令地址码给出的是一个偏移量(可正可负),操作数地址等于本条指令的地址加上该偏移量。
变址寻址。操作数地址等于变址寄存器的内容加偏移量。
# 1.1.2 CISC 和 RISC
# 指令流水线处理
# 指令控制方式
I 输入
<- 1+1
C 计算
2
O 输出
2 ->
- 顺序方式
I 0.1s
C 0.2s
O 0.3s
一条指令执行一百次 : (0.1+0.2+0.3) * 100 = 60s
T1 T2 T3 1/3 设备利用率 一次用一个设备
设备利用率低
顺序方式。顺序方式是指各条机器指令之间顺序串行地执行,执行完一条指令后才取下一条指令,而且每条机器指令内部的各个微操作也是顺序串行地执行。这种方式的优点是控制简单;缺点是速度上不去,机器各部件的利用率低。
- 流水方式
n 条指令执行时间: 一条指令的执行时间 + (n-1) * 最长时间段
(0.1+0.2+0.3) + 99 * 0.3
-> 0.6 + 29.7 = 30.3
流水方式。流水技术是把并行性或并发性嵌入到计算机系统里的一种形式,它把重复的顺序处理过程分解为若干子过程,每个子过程能在专用的独立模块上有效地并发工作
不采用流水线/采用流水线 = 加速比 ——>60/30.3 = 198%
操作周期
:最长时间段
吞吐率
:取最长时间段的倒数 p = 1 / max(0.1,0.2,0.3) ——> 10/3
n条指令的吞吐率
: n / n 条指令执行时间 ——> n/30.3
# 存储系统
按位置分类 1 存储器按位置分类,可分为内存和外存
(1) 内存(主存): 用来存储当前运行所需要的程序和数据,速度快,容量小。
(2) 外存(辅存): 用来存储目前不参与运行的数据,容量大,速度慢
# 存储器的层次结构
DRAM
:(动态随机存储器)构成主存 DRAM需要周期性地刷新保持信息
SRAM
: (静态随机存储器),构成Cache
FLASH
: 闪存,(闪存不能代替主存
)
EEPROM
: 电擦除可编程的只读存储器
主存储器主要由DRAM构成
# 存储器的分类
按工作方式分类
存储器按工作方式分类,可分为
读写存储器
和只读存储器
(1)
读写存储器
: 既能读取数据也能存入数据的存储器(2)
只读存储器
:根据数据写入方式,又可细分为固定只读存储器、可编程只读存储器、可擦除可编程只读存储器、电擦除可编程只读存储器和闪速存储器按访问方式分类 存储器按访问方式分类,可分为按地址访问的存储器和按内容访问的存储器.
按寻址方式分类 存储器按寻址方式分类,可分为
随机存储器
、顺序存储器
和直接存取存储器
。(1)
随机存储器
(Random Access Memory,RAM): 这种存储器可对任何存储单元存入或读取数据,访问任何一个存储单元所需时间都是相同的。(2)
顺序存储器
(Sequentially Addressed Memory,SAM): 访问数据所需时间与数据所在存储位置有关,磁带是典型的顺序存储器。(3)
直接存取存储器
(Direct Addressed Memory,DAM): 采用介于随机存取和顺序存取之间的一种寻址方式。磁盘是一种直接存取控制器,它对磁道的寻址是随机的,而在一个磁道内,则是顺序寻址。
# 相联存储器
相联存储器
是一种按内容访问的存储器
。其工作原理是把数据或数据的某一部分作为关键字,将该关键字与存储器中的每一单元进行比较,找出存储器中所有与关键字相同的数据字。
高速缓冲存储器
(可简称为高速缓存或缓存)可用在相联存储器中,在虚拟存储器中用来作段表、页表或块表存储器,还可以用在数据库和知识库中。
常用的虚拟存储器由主存
和辅存
组成
空间局部性
: 被访问的数据聚集在一个连续的存储区域中,若一个单元已经被访问了,则相邻的存储单元还要被访问
时间局部性
: 被访问的单元之后还会被访问就是时间局部性
# Cache
容量越大,命中率越高
直接映像
:冲突多,关系固定
全相联映像
:冲突少,关系不固定,主存中的一块可以映射到Cache中的任意一块,除非Cache满了才需要替换。
组相联影响
:冲突较少,是直接映像与全相联映像的折中
Cache
与主存
的地址映射记住:由硬件自动完成
# 中断
中断向量提供
:中断服务程序的入口地址
中断响应时间
:从发出中断请求到开始进入中断处理程序
保存现场
:为了正确返回原程序继续执行