计算机系统
集中在1-5 在6-10的偏少
CPU的功能
- 程序控制
- 操作控制:CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作
- 时间控制
以上三种为CPU内控制器的功能
- 数据处理:CPU通过对数据的加工处理是CPU最根本的任务——运算器
运算器
只完成运算
组成
***算术逻辑单元(ALU):**处理数据,实现对数据的算术运算和逻辑运算
*累加寄存器(AC):是一个通用寄存器,当运算器的算术逻辑单元执行算术或逻辑运算时,AC为ALU提供一个工作区,运算的结果放在累加器中,运算器中至少要有一个累加寄存器
eg.减法运算:先将被减数取出暂存在AC中,再从内存储器中取出减数,然后同AC的内容相减,将所有的结果送回AC中
**数据缓冲寄存器(DR):**内存储器进行读写操作 时,用DR暂时存放内存储器读写操作的一条指令或数据字,隔离不同时间段内读写数据。
主要作用:中转站、缓冲、操作数寄存器
**状态条件寄存器(PSW):**为指令的结果建立各种条件码内容。
通常,一个算术操作产生一个运算结果,而一个逻辑操作产生一个判决
等等…
功能
- 执行算术运算,(加减乘除)基本运算+附加运算
- 执行逻辑运算+逻辑测试。eg.与或非、零值测试或两个值的比较等
控制器
控制整个CPU的工作,决定了计算机运行过程的自动化
不仅要保证程序(指令)的正确执行,而且要能够处理异常事件
种类
指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑、
指令控制逻辑
取指令——>指令译码——>按指令操作码执行——>形成下一条指令地址…
组成
**指令寄存器(IR):**当CPU执行一条指令时,先把它从内存储器取到缓冲寄存器(DR)中,再送入IR暂存
*程序计数器/指令计数器(PC):
-
具有寄存信息(不寄存临时存储算术/运算结果)和计数两种功能
-
程序的执行分两种,一是顺序执行,二是转移执行
-
在程序开始执行之前,将程序的起始地址送入PC,该地址在程序加载到内存时确定,因此PC的内容即是程序的第一条指令的地址;
-
执行指令时,CPU自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址(即跟踪指令地址的寄存器)
-
由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对PC+1
-
当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移量得到,或者根据转移指令给出的直接转移的地址得到
地址寄存器(AR):AR保存当前CPU所访问的内存单元的地址,直到内存的读写操作完成为止
**指令译码器(ID):**ID就是对指令中操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,完成所需的功能。
指令包含操作码和地址码两部分。(eg.2+3:➕为操作码,2、3为地址码)
在汇编语言程序中,程序员可以直接访问通用寄存器以存取数据,可以访问状态寄存器以获取有关数据处理结果的相关信息,可以通过相对程序寄存器进行寻址,但是不能访问 指令寄存器
“完全透明”:看不进、不能访问
计算机基本单位
单位 | 英文名 | 简写 | 单位转换 |
---|---|---|---|
位(比特) | bit | b | |
字节 | byte | B | 1B=8b |
千字节 | KB | 1KB=1024B | |
兆字节 | MB | 1MB=1024GB | |
吉字节 | GB | 1GB=1024MB | |
太字节 | TB | 1TB=1024GB |
最小的数据单位:bit比特
最小的存储单位:byte字节
2的10次方=1024
进制
十进制(D):0~9
二进制(B):0、1
八进制(O):0~7
十六进制(H):0-9&A-F(==10~15) 避免歧义
十进制与二进制
- 十进制转二进制:除以2求余
eg. 35——>0010 0011
**口算简易版:**45——>??? 左乘右除
2的次方有: 0 1 2 3 4 5 6
1 2 4 8 16 32 64… 45<64 所以32以后的不考虑
在2的次方里凑齐45:32(5)、45-32=13——8(3)、13-8=5——4(2)、1=1——1(0)
所以第5、3、2、0位为1=====》0010 1101
- 二进制转十进制:乘以2的位数的次方,再全部相加
eg. 1001 0110 ——>150
同理
- 十进制转n进制:除以n求余,倒着取余
- n进制转十进制:乘以n的位数的次方,再全部相加
编址的区域是闭区间,即 大—小+1=区域容量
数据表示
各种数值在计算机中表示的形式称为机器数,其特点是采用二进制计数制
原码
在原码表示法中,最高位是符号位,0表示正号,1表示负号,其余的n-1位表示数值的绝对值
eg. [+0]原=0 000 0000 [-0]原=1 000 0000
[+45]原=0 010 1101 [-45]原=1 010 1101
反码 (负数取反)
在反码表示中,最高位是符号位,0表示正号,1表示负号,反码的正数与原码相同,反码的负数是反码正数的绝对值按位取反**(符号位不变)**
eg. [+1]反=0 000 0001 [-1]反=1 111 1110
[+45]反=0 010 1101 [-45]反=1 101 0010
补码 (负数反码+1)
在补码表示中,最高位为符号位,0表示正号,1表示负号
正数的补码=正数的原码=正数的反码,负数的补码=其反码的末位+1,从右往左取八位
补码可以简化计算机运算部件的设计
在补码表示中,**0有唯一的编码 **,[+0]补=[-0]补=0 000 0000
eg.[+45]补=0 010 1101 ——>[-45]补=??
[-45]原=1 010 1101 ——> [-45]反=1 101 0010
[-45]补= [-45]反+1 = 1 101 0011
移码 (补码的符号位取反)
移码=补码的符号位取反,其余位相同
在移码表示中,0也有唯一的编码,[+0]移=[-0]移=0 000 0000
eg. [+45]移=1 010 1101 [-45]移=0 101 0011
特性
[ [x]补 ]补 =[x]原
因为 正数的 原码=反码=补码=移码 因此此公式 针对负数
eg1. [-1]原= 1 000 0001
[-1]反=1 111 1110
[-1]补=1 111 1111
[ [-1]补]反=1 000 0000
[ [ [-1]补]反]补 =1 000 0001
即 [ [-1]补 ]补 =[-1]原
eg2.若某整数的16位补码为FFFFH(H表示为十六进制),则该数的十进制值为
A.0 B.-1 C.216-1 D.-216+1
利用 [ [x]补 ]补 =[x]原,先将十六进制转为二进制 F(15=1+2+4+8)==>1111
所以FFFFH=1111 1111 1111 1111B
求其数的反码:1000 0000 0000 0000
再求其数的补码:1000 0000 0000 0001 ====> -1
各种码制表示的带符号数的范围
n为 位数
n-1:减去符号位
末尾-1:是因为我们是从0开始的
当机器字长为n时,定点数的补码和移码可表示2n个数,而其原码和反码只能表示2n-1个数(0的表示占用了两个编码) P51
eg.若计算机采用8位整数补码表示数据,则运算_________将产生溢出
A. -127+1 B.-127-1 C.127+1 D.127-1
8位整数补码范围:-27 ~ 27-1 = -128 ~127 ,故只有C溢出
浮点数
浮点表示法(一般形式):N=2ExF
E:阶码,带符号的纯整数 F:尾数,带符号的纯小数
eg. 24x0.1234 :E=4,F=4
通常采用规格化浮点数就是将尾数的绝对值限定在[0.5,1]
浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定
若两个浮点数要进行运算:先对阶(E要化成相同的数),小阶向大阶转(损失数小,精度高),浮点数向右移(尾数向右移)
如果浮点数的阶码(包括1位阶符)用R位的移码表示,尾数(包括1位数符)用M位的补码表示,则这种浮点数所能表示的数值范围如下:
eg.某个机器的浮点数表示格式如下(允许非规格化表示)。若阶码以补码表示,尾数以原码表示,则1 0001 0 0000000001表示的浮点数是
阶符 阶码 数符 尾数
A. 2-16X2-10 B. 2-15X2-10 C. 2-16X(1-2-10) D. 2-15X(1-2-10)
解:阶符为1——>负数,阶码以补码表示,而负数补码的补码=原码
所以 1 0001—>1 1110—>1 1111—>得原码为-15 即阶码
数符为0——>正数,尾数以原码表示
尾数部分 0 0000 0000 01,其实是0.0000 0000 01(位权从2-1开始,从左往右为-22,…),即2-10
最后得到2-15×2-10
寻址
指令系统中采用不同寻址方式的目的是 扩大寻址空间并提高编程灵活性
- 立即寻址:操作数就包含在指令中。(最快)
- 直接寻址:操作数存放在内存单元中,指令中直接给出操作数所在存储单元的地址。(第3快)
- 寄存器寻址:操作数存放在某一寄存器中,指令中给出存放操作数的寄存器名。(第2快)
- 寄存器间接寻址:操作数存放在内存单元中,操作数所在存储单元的地址在某个寄存器中。(第4快)
- 间接寻址:指令中给出操作数地址的地址。(第5快)
- (了解)相对寻址:指令地址码给出的是一个偏移量(可正可负),操作数地址等于本条指令的地址加上该偏移量。
- (了解)变址寻址:操作数地址等于变址寄存器的内容加偏移量
校验码
码距
指一个编码系统中任意两个合法编码之间至少有多少个二进制位不同
eg.在奇校验中,1 00和0 01——>进行异或运算(两个值不相同,则异或结果为1,两个值相同,异或结果为0),第一位数不同(1、0),第二位数相同(0),第三位数不同(0、1)——>1+0+1=2
码距=2,具有检错能力 (奇偶校验码)
码距≥3,才有纠错能力
奇偶校验码
奇偶校验通过在数据末尾添加一个位,从而使码距变为2,确保数据传输的正确性。
奇偶校验分为奇校验和偶校验两种:
- 奇校验:如果数据单元中1的数量已经是奇数,则校验位设置为0;否则,校验位设置为1。
- 偶校验:如果数据单元中1的数量已经是偶数,则校验位设置为0;否则,校验位设置为1。
eg.对于数据1001101:奇校验码为1 1001101,偶校验码为0 1001101。
不管是奇校验还是偶校验,只能够检测出 奇数位出错(出错的位数有奇数个),不能检测出偶数位出错。——>只能检错,不能纠错!
常用的奇偶校验码3:水平奇偶校验码、垂直奇偶校验码、水平垂直校验码
海明码
(码距=3)一种利用奇偶性来检错和纠错的校验方法。海明码的构成方法是在数据位之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错。
设数据位是n位,校验位是k位,则n和k必须满足以下关系:
2k-1≥n+k
循环冗余检验码
码距=2,可以检错,不能纠错
它利用生成多项式为 k个数据位 产生 r个校验位来进行编码,其编码长度为k+r(k个数据位之后跟r个校验位)
循环冗余校验码由两部分组成,左边为信息码(数据),右边为校验码。
在求CRC编码时,采用的是模2运算
RISC与CISC
指令流水线
I:输入 O:输出 C:计算 n:指令数量
流水线:第一条指令的执行时间+(n-1)X 最长时间段(最长段的时间)
加速比:不采用流水线的时间/流水线执行的时间
操作周期:最长时间段
吞吐率:最长时间的倒数
执行n条指令的吞吐率:n/流水线执行时间
eg.一条指令的执行过程可以分解为取指、分析和执行三步,在取指时间t1=3Δt、分析时间t2=2Δt、执行时间t3=4Δt的情况下,若按串行方式执行,则10条指令全部执行完需要_______Δt。若按照流水线方式执行,则执行完10条指令需要_______Δt。
串行(按顺序方式从头到尾执行):(3+2+4)x10=90Δt
流水线(按照执行第i条,分析第i+1条,读取i+2条重叠):
(3+2+4)+(10-1)x4=9+36=45Δt
存储器
存储系统的层次结构(CPU访问速度最快)
Cache:SRAM静态随机存储器
主存(储器):DRAM动态随机存储器,会周期性地刷新来保存数据
虚拟存储器:辅存+外、主存
CPU具有时间局限性 和 空间局限性
分类
按存储器的工作方式分类:读/写存储器 和 只读存储器
-
读/写存储器(RAM):既能读取数据也能存入数据的存储器
-
只读存储器(ROM、某某ROM):工作过程中仅能读取的存储器,根据数据的写入方式,这种存储器又可分为ROM、PROM、EPROM、EEPROM等
按访问方式分类:按地址访问的存储器 和 按内容访问的存储器
按寻址方式分类:
- 随机存储器(RAM)
- 顺序存储器(SAM)
- 直接存储器(DAM)
闪存:类似于U盘,整块闪存可以在数秒内删除,掉电后信息不会丢失,属于非易失性存储器;以块为单位进行删除操作;在嵌入式系统中可以用Flash来代替ROM存储器
相联存储器
是一种按内容访问的存储器
高速缓存Cache
-
高速缓存用来存放当前最活跃的程序和数据,位于CPU和主存之间
-
其内容是主存局部域的副本,对程序员来说是透明的(程序员看不到)
-
Cache与主存地址的映射是由硬件自动完成的
-
Cache、CPU、主存 之间的关系
Cache存储器部分用来存放主存的部分拷贝(副本)信息。
控制部分的功能是判断 CPU 要访问的信息是否在Cache存储器中
——>若在 即位命中,直接对Cache存储器寻址
——>若不在,要按照替换原则决定主存的一块信息放到Cache存储器的哪一块里
提高cpu访问的效率
替换算法
使Cache获得尽可能高的命中率,常用算法:
- 随机替换算法
- 先进先出算法
- 近期最少使用算法
- 优化替换算法
Cache容量越大,则命中率越高,随着Cache容量的增加,其失效率接近0%
地址映像方法
地址映像:将主存地址转换成Cache存储器的地址
-
直接映像:主存的块与Cache块的对应关系是固定的[0–0,1–1,…](冲突大)
-
全相联映像:主存和Cache均分成大小相同的块,允许主存的任一块可以调入Cache存储器的任何一个块的空间**(冲突最小)**
- 组相联映射
前两种的集大成者,以 组对组 的一种分区方式,每两块是一组。一个Cache对应一个内存中的区,内存区里的组数和Cache中的组数是一一对应的。(冲突较小)
中断
计算机在执行程序过程中,当遇到急需处理的事件时,暂停当前正在运行的程序,转去执行有关服务程序,处理完后自动返回源程序
- 中断向量:提供中断服务程序的入口地址
- 中断响应时间:发出中断请求~进入中断服务程序
- 保存现场:返回来 执行原程序
- 为了便于实现多级中断嵌套,使用堆栈(后进先出)来保护断点和现场最有效
输入输出(I/O)控制方式
-
程序查询方式
- CPU和I/O(外设)只能串行工作,CPU需要一直轮询检查,长期处于忙等状态,CPU利用率低
- 一次只能读/写一个字(8bit)
- 由CPU将数放入内存
-
中断驱动方式
- I/O设备 通过中断信号主动 向CPU 报告I/O操作已完成
- CPU和I/O(外设)可并行工作
- CPU利用率得到提升
- 由CPU将数据放入内存
- 一次只能读/写一个字(8bit)
-
直接存储器方式(DMA)
- CPU和I/O(外设)可并行工作
- 由外设直接将数据放入内存(主存) 即在 主存 和 外设 之间建立了直接的数据通路
- 仅在传送数据块的开始和结束时才需要CPU的干预
- 一次读写的单位为**“块”**而不是字
总线(了解 考偏且分少)
计算机设备和设备之间传输信息的公共数据通道
- 分类:数据总线、地址总线、控制总线(数地控)
- 常见总线:
- ISA总线
- EISA总线
- PCI总线:是目前微型机上广泛采用的内总线,采用并行传输方式。(并行内总线)
- PCI Express总线
- 前端总线
- RS-23C
- SCSI总线:是一条并行外总线 (又叫独立处理器标准?)
- SATA
- USB
- IEEE-1394
- IEEE-488
eg.总线宽度为32bit,时钟频率为200MHz,若总线上每5个时钟周期传送一个32bit的字,则该总线的宽带为___MB/s
解:由单位可推到出公式——>M X B/s
32bit/5 X 200M = 1280 Mbit/s (1B=8bit) ==> 1280/8=160 MB/s
加密技术与认证技术
窃听——>加密
纂改——>摘要
假冒、否认——>数字签名或数字证书
身份认证——>数字证书(处理主动攻击)
公 加验 私 解签
加密技术
-
对称加密(私有密钥加密):
加密和解密是同一把密钥,而只有一把密钥
- 密钥分发存在缺陷,易被窃听
- 加密解密速度很快
- 适合加 大量明文数据
-
非对称加密(公开密钥加密):
加密和解密不是同一把密钥,有两把密钥:公钥和密钥
- 用公钥加密只能用私钥解密,用私钥加密只能用公钥解密,不能通过一把推出另一把
- 用接收方的公钥加密明文,然后接收方用自己的密钥解密,可以实现防止窃听的效果
- 加密解密速度很慢
-
混合加密:当传输大量明文时,先将大量明文进行对称加密,再用接收方的公钥将 对称密钥+对称密钥密文 传输给接收方
认证技术
摘要
将发送的明文进行Hash算法后得到摘要,放在密文后面一起发送过去,与接受方解密后的明文进行相同的Hash算法得到的摘要进行对比,如果一致,则没有纂改,否则有纂改
数字签名
发送方 用自己的私钥对摘要进行签名(加密),得到数字签名放在密文后面一起发送过去
接收方 用发送方的公钥对数字签名进行验证(解密),如果验证成功则消息没有被假冒且不能否认,否则该消息的真实性为假冒
属非对称密钥
数字证书
用户 向CA机构(权威机构)申请数字证书,将个人信息和公钥发给CA机构(两个公钥互相信任要互换公钥)
CA机构 颁给用户数字证书
数字证书 用CA的私钥进行签名(加密),用CA的公钥验证(解密)数字证书
得到用户的公钥(身份验证)
加密算法
- 对称密钥(私钥、私有密钥加密)算法:(共享密钥加密算法)
- DES
- 3DES
- RC-5
- IDEA
- AES
- RC4
- 非对称密钥(公钥、公开密钥加密)算法:
- ECC
- DSA
- RSA
Hash函数、MD5摘要算法(128)、SHA-1安全散列算法
可靠性公式
- 串联系统:
系统可靠性R=R1R2R3…RN
- 并联系统R=1-(1-R1)(1-R2)…(1-RN)