(一)计算机系统硬件基本组成
计算机系统是由硬件和软件组成的,它们协同工作来运行程序。
计算机的硬件组成:
- 运算器
- 控制器
- 存储器
- 输入设备
- 输出设备
(二)中央处理单元
中央处理单元(CPU)是计算机系统的核心部件,负责获取程序指令、对指令进行译码并加以执行。
1.CPU的功能
- 程序控制。cpu通过执行指令来控制程序的执行顺序,是cpu的重要功能。
- 操作控制。cpu产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。
- 时间控制。cpu对指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都进行严格控制。
- 数据处理。cpu对数据进行算术运算及逻辑运算。
2.CPU的组成
- 运算器。是执行部件,执行所有的算术运算、逻辑运算。
- 控制器。控制整个cpu的工作,它决定了计算机运行过程的自动化。
- 寄存器组。分为专用寄存器(运算器和控制器中的寄存器)和通用寄存器。
- 内部总线。是计算机系统中最快的总线,用来与高速缓存、主存和北桥(或MCH)之间传送信息。
(1)运算器
- 运算器由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器等组成,是数据加工处理部件,用于完成计算机的各种算术和逻辑运算。
- 运算器所进行的所有操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。
- 运算器主要有两个主要功能:算术运算、逻辑运算。
(2)控制器
- 用于控制整个cpu的工作。
- 包括指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、指令译码器(ID)。
- 指令控制逻辑。要完成取指令、分析指令和执行指令的操作。一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑等几个部分
- 时序控制逻辑。要为每条指令按时间顺序提供应有的控制信号。
- 总线控制逻辑。为多个功能部件服务的信息通路的控制电路。
- 中断控制逻辑。用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给cpu处理。
(3)寄存器
- 用来暂存运算和控制过程中的中间结果、最终结果以及控制、状态信息的。
- 分为通用寄存器和专用寄存器。
3.多核CPU
- 核心又称为内核,是cpu最重要的组成部分。cpu中心那块突起的芯片就是核心。
- cpu所有的计算、接收/存储命令、处理数据都由核心执行。
- cpu核心都有固定的逻辑结构,包括:一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元。
- 多核是指在一个单芯片上集成两个或多个处理器内核,每个内核都有自己的逻辑单元、控制单元、中断处理器、运算单元等。
- 多核在理论上是在任何时间内每个核执行各自的任务,不存在交替问题;单核是交替地转换执行多个任务,只是交替的时间很短。
(三)数据表示
数值在计算机中表示的形式称为机器数,参用的是二进制,用0
和1
表示。
1.原码、反码、补码和移码
(1)原码
数值X
的原码记为[X]原
,如果机器字长为n
(n
个二进制位表示数据),则原码的定义如下:
在原码表示法中,最高位是符号位,0
表示正号,1
表示负号,其余的n-1
位表示数值的绝对值。
数值0
的原码表示有两种形式:[+0]原=0 0000000,[-0]原=1 0000000
。
(2)反码
数值X
的反码记为[X]反
,如果机器字长为n
,则反码的定义如下:
在反码表示中,最高位是符号位,0
表示正号,1
表示负号,正数的反码与原码相同,负数的反码则是其绝对值按位求反。
数值0
的反码表示有两种形式:[+0]反=0 000000,[-0]反=1 1111111
。
(3)补码
数值X
的补码记为[X]补
,如果机器字长为n
,则补码的定义如下:
在补码表示中,最高位为符号位,0
表示正号,1
表示负号,正数的补码与其原码和反码相同,负数的补码则等于其反码的末位加1
。
数值0
的补码表示只有一种形式:[+0]补=0 0000000,[-0]补=0 0000000
。
(4)移码
移码表示法是在数X
上增加一个偏移量来定义的,常用于表示浮点数中断阶码。如果机器字长为n
,规定偏移量为2^(n-1)
,则移码的定义如下:
实际上,在偏移2^(n-1)
的情况下,只要将补码的符号位取反便可获得相应的移码表示。
2.定点数和浮点数
(1)定点数
定点数就是小数点的位置固定不变的数。分为:定点整数(纯整数,小数点在最低有效数值位之后)、定点小数(纯小数,小数点在最高有效数值位之前)。
(2)浮点数
浮点数是小数点位置固定不变的数,它能表示更大范围的数。
一个二进制数N
可以表示为更一般的形式N=2^E*F
,其中E
称为阶码,F
称为尾数。例如:
1011.10101=2^4*0.101110101
或
1011.10101=2^5*0.0101110101
用阶码和尾数表示的数称为浮点数,这种表示数的方法称为浮点表示法。在浮点表示法中,阶码为带符号的纯整数,尾数为带符号的纯小数。
浮点数的表示格式为:
阶符 | 阶码 | 数符 | 尾数 |
---|
浮点数的特性:
- 一个数的浮点表示不是唯一的,当小数点的位置变化时,阶码也随之改变;
- 浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度由尾数决定;
- 为了充分利用尾数来表示更多的有效数字,通常采用规格化浮点数(规格化是指将尾数的绝对值限定在区间[0.5,1])。
(3)工业标准IEEE 754
浮点数的标准是IEEE 754工业标准,该标准的表示形式为:(-1)^S*2^E*(b0*b1*b2*b3*···bn)
。其中(-1)^S
为该浮点数的数符,当S
为0
时表示正数,为1
时表示负数;E
为阶码,用移码表示;(b0*b1*b2*b3*···bn)
为尾数,长度是n
位,用原码表示。
根据IEEE 754工业标准,被编码的值分为3种:规格化的值、非规格化的值、特殊值。
- 规格化的值。当阶码部分的二进制不全为
0
也不全为1
时。 - 非规格化的值。阶码的二进制值全为
0
时。一是用来表示数值0
,二是表示非常接近于0
的数。 - 特殊值。阶码的二进制值全为
1
时。当尾数部分全为0
时,表示无穷大(当符号位为0
时,表示+无穷大
;当符号位为1
时,表示-无穷大
);当尾数部分不全为0
时,称为NaN
,即不是一个数。
(4)浮点数的运算
浮点数的加减运算步骤:
- 对阶。使两个数的阶码相同,令
K=|i-j|
,把阶码小的数的尾数右移K
位,使其阶码加上K
。 - 求尾数和(差)。
- 结果规格化并判断溢出。
- 舍入处理。在对结果右规时,尾数的最低位将因为移出而丢掉。
- 溢出判别。
浮点数相乘,其积的阶码等于两乘数的阶码相加,积的尾数等于两乘数 的尾数相乘。
浮点数相除,其商的阶码等于被除数的阶码减去除数的阶码,商的尾数等于被除数的尾数除以除数的尾数。
(四)校验码
为了保证计算机系统运行时的数据传输的正确性,通常使用校验码的方法来检测传送的数据是否出错。
数据可能出现的编码分为两类:合法编码和错误编码。合法编码用于传送数据,错误编码不允许出现在数据中。
合理地设计错误编码及编码规则,使得数据在传送中出现某种错误时,会变成错误编码,这样就可以检测出接收到的数据是否有错。
码距,是指一个编码系统中任意两个合法编码之间至少有多少个二进制位不同。
常见的校验码:奇偶校验码、海明码、循环冗余校验码。
1.奇偶校验码
奇偶校验码通过在编码中增加一位校验码来使编码中1
的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2
。
对于奇校验来说,它可以检查代码中奇数位出错的编码,但不能发现偶数位出错的情况,即当合法编码中的奇数位发生了错误时,即编码中的1
变成0
或0
变成1
,则该编码中1
的个数的奇偶性就发生了变化,从而可以发现错误。
常用的奇偶校验码有三种:水平奇偶校验码、垂直奇偶校验码、水平垂直校验码。
2.海明码
海明码是在数据位之间的特定位置上插入k
个校验位,通过扩大码距来实现检错和纠错。
3.循环冗余校验码
循环冗余校验码由两部分组成,左边为信息码(数据),右边为校验码。利用生成多项式为k
个数据位产生r
个校验位来进行编码,编码长度位k+r
。
网友评论