计算机系统硬件的基本组成
计算机系统是由 软件和硬件 构成的。硬件系统由 运算器、控制器、存储器、输入设备、输出设备 五大部件组成。运算器、控制器等部件被集成在一起统称为中央处理单元 Central Processing Unit 。输入和输出设备合称为外部设备。存储器分为内部存储器和外部存储器,内部存储器 速度高、容量小,一般用于临时存放程序、数据及中间结果, 外部存储器 速度慢、容量大,长期保存程序和数据。
中央处理单元
中央处理单元 CPU 是计算机系统的核心不见,它负责 获取 程序指令、对指令进行 译码 并进行 处理 。
CPU的功能
- 程序控制 :控制程序执行的 顺序
- 操作控制 :发出 操作信号 至对应部件并使对应部件执行程序
- 时间控制 :控制操作信号的 出现 时间、保持 时间和出现的 时间顺序
- 数据处理 :算术和 逻辑运算
- 中断(异常)响应
CPU的组成
CPU主要由 运算器 、 控制器 、 寄存器组 和 内部总线 等部件组成。
运算器
运算器由 算术逻辑单元(Arithmetic and Logic Unit, ALU)、累加寄存器、数据缓冲寄存器 和 状态条件寄存 等组成。它是数据加工处理部件,用于完成计算机的各种算术和逻辑运算。
- 算术逻辑单元 ALU 处理数据
- 累加寄存器 AC 提供工作区,存放结果
- 数据缓冲寄存器 DR 数据暂存,速度缓冲,单AC结构兼做操作数寄存器
- 状态条件寄存器 PSW 保存状态标志和控制标志
控制器
保证程序正确执行,且能够处理异常事件。一般包括指 令控制逻辑 , 时序控制逻辑 , 总线控制逻辑 和 终端控制逻辑 几个部分。
指令控制逻辑要完成取指令、分析指令和执行指令的操作,其过程分为取指令、指令译码、按指令操作码执行、形成下一条指令地址 等步骤。
- 指令寄存器 IR 指令暂存,指令从内存中取出放入DR中,再从DR通过总线到达IR。
- 程序计数器 PC 寄存信息、计数,指向下一条地址
- 地址寄存器 AR 保存当前访问的指令
- 指令译码器 ID 分析解释操作码字段,发出控制信号
多核CPU
核心,又称内核,使CPU最重要的组成部分。CPU所有的 计算、接收/存储命令、处理数据 都由 核心 执行。
单核多线程CPU是 交替地转换执行 多个任务。多核在理论上则是在 任何时间内 每个核执行各自的任务,不存在交替问题。因此多核速度更快。注:采用了 Intel超线程技术 的单核可以视为是双核,但 比不上 实际双核的性能。
数据表示
仅在数值为 负 时,各种码的相互转换 如下图 。当数值为 正 时各码 相同 。
数值0的原码表示有两种形式: [ + 0 ] 原 = 00000000 [+0]_原=0 0000000 [+0]原=00000000 , [ − 0 ] 原 = 10000000 [-0]_原=1 0000000 [−0]原=10000000
浮点数表示时采用 IEEE754 标准, N = 2 E × F N = 2^E \times F N=2E×F , E为解码,F为尾数。浮点数所能表示的 数值范围 由 阶码 决定,所表示数值的 精度 则是由 尾数 决定。为了充分利用尾数来表示更多的有效数字,通常采用 规格化浮点数 。将尾数的绝对值限定在区间[0.5,1]。
IEEE754标准,一般单精度浮点个参数需牢记
数符 S(1位) | 阶码 E (8位) | 尾数 M (23位) |
---|
参数 | 单精度浮点 | 双精度浮点 | 扩充精度浮点 |
---|---|---|---|
浮点数字长 | 32 | 64 | 80 |
尾数长度P | 23 | 52 | 64 |
符号位S | 1 | 1 | 1 |
指数长度E | 8 | 11 | 15 |
最大指数 | +127 | +1023 | +16383 |
最小指数 | -126 | -1022 | -16383 |
指数偏移量 | +127 | +1023 | +16383 |
可表示的实数范围 | 1 0 − 38 − 1 0 + 38 10^{-38}-10^{+38} 10−38−10+38 | 1 0 − 308 − 1 0 + 308 10^{-308}-10^{+308} 10−308−10+308 | 1 0 − 4932 − 1 0 + 4932 10^{-4932}-10^{+4932} 10−4932−10+4932 |
IEE754对阶码采用偏移量表示,单精度浮点数 偏移值为 127 ,双精度浮点数的偏移值为1023,临时浮点数的偏移值为16383。计算阶码时需要在 阶数的原码上加上偏移量,以单精度浮点数为例阶数为7,则 [ 7 ] 原 [7]_原 [7]原 = 0000 0111 ,阶码为 [ 7 ] 原 + [ 偏移量 ] 原 [7]_原+[偏移量]_原 [7]原+[偏移量]原= 0000 0111 + 0111 1111 = 1000 0110
- 规格化的值 :阶码部分的二进制值不全为0或1。表示的是规格化的值。
- 非规格化的值 :当阶码部分的二进制全为0时,所表示的数是非规格化的。表示数值0,或是哪些非常接近0的数
- 特殊值 :当阶码部分的二进制权威1时,符号位为0表示正无穷,为1表示负无穷
校验码
- 合法编码 :用于传送数据。
- 错误编码 :不允许在数据中出现的编码。
- 码距 : 任意两个合法编码之间至少有多少个二进制位不同。
奇偶校验码
奇偶校验 Parity Codes ,通过在编码中加入一位校验位来使编码中的 1的个数为奇数 (奇校验),或者使1的个数为偶数 (偶校验)
数据 | 偶校验编码C | 奇校验编码C |
---|---|---|
1010 1010 | 1010 1010 0 (偶数个1) | 1010 1010 1 (奇数个1) |
0101 0100 | 0101 0100 1 | 0101 0100 0 |
0111 1111 | 0111 1111 1 | 0111 1111 0 |
1111 1111 | 1111 1111 0 | 1111 1111 1 |
海明码
海明码 Hamming Code 在数据为之间的特定位置上插入k个校验码,通过扩大码距来实现检错和纠错。假设k个校验位为 P k , P k − 1 , . . . , P 1 P_k,P_{k-1},...,P_1 Pk,Pk−1,...,P1,n个数据位为 D n − 1 , D n − 2 , . . . , D 0 D_{n-1},D_{n-2},...,D_{0} Dn−1,Dn−2,...,D0 ,对应的海明码为 H k + n . . . , H 1 H_{k+n} ... ,H_1 Hk+n...,H1
- P i P_i Pi 在海明码的第 2 i − 1 2^{i-1} 2i−1 位置,数据位则依序从低到高占据海明码的剩余位置
- 海明码中的任何一位都是由若干个校验位来校验的。其对应关系如下:被校验的海明位的下标等于所有参与校验该位的校验位的下标之和,而校验位由自身校验。
海明码 | 海明码的下标 | 校验位组 |
---|---|---|
H 1 ( P 1 ) H_1(P_1) H1(P1) | 1 | P 1 P_1 P1 |
H 2 ( P 2 ) H_2(P_2) H2(P2) | 2 | P 2 P_2 P2 |
H 3 ( D 0 ) H_3(D_0) H3(D0) | 3=1+2 | P 1 , P_1, P1, P 2 P_2 P2 |
H 4 ( P 3 ) H_4(P_3) H4(P3) | 4 | P 3 P_3 P3 |
H 5 ( D 1 ) H_5(D_1) H5(D1) | 5=1+4 | P 1 , P 3 P_1,P_3 P1,P3 |
H 6 ( D 2 ) H_6(D_2) H6(D2) | 6=2+4 | P 2 , P 3 P_2,P_3 P2,P3 |
H 7 ( D 3 ) H_7(D_3) H7(D3) | 7=1+2+4 | P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3 |
H 8 ( P 4 ) H_8(P_4) H8(P4) | 8 | P 8 P_8 P8 |
其中校验位的生成由校验位组的异或和决定:
P 1 = D 0 ⊕ D 1 ⊕ D 3 P_1 = D_0\oplus D_1 \oplus D_3 P1=D0⊕D1⊕D3
P 2 = D 0 ⊕ D 2 ⊕ D 3 P_2 = D_0\oplus D_2\oplus D_3 P2=D0⊕D2⊕D3
P 3 = D 1 ⊕ D 2 ⊕ D 3 P_3 = D_1\oplus D_2 \oplus D_3 P3=D1⊕D2⊕D3
循环冗余校验码
循环冗余校验码 Cyclic Redundancy Check 广泛应用于数据通信领域和磁介质存储系统中。利用生成多项式为k个数据为产生r个校验位来进行编码。左边信息码k位,右边校验码n-k位。故又称(n,k)码。