计算机系统
# 一、 运算器与控制器
- 算数逻辑单元(ALU):运算器的重要组成部分,用来对于数据的算数运算和逻辑运算,加法器是算术逻辑运算单元的组成部件
- 累加寄存器(AC):为 ALU 提供原始数据和暂存计算结果
- 数据缓冲寄存器(DR):作为 CPU、内存、外部设备之间通讯数据存储的缓冲区
- 状态条件寄存器(PSW):保存算数指令和逻辑指令的计算或者测试结果建立条件码内容
- 指令:指令 = 操作码 + 地址码 :如 1 + 1 ,1 和 1 为地址码 + 为操作码
- 指令寄存器(IR):保存 CPU 正在执行的指令,从内存中取出后存入 IR, 一 ID 根据 IR 产生的内容生成微操指令。控制其他组成部件并要求其工作。
- 程序计数器(PC):初始化是指向的是第一条指令的地址,执行后对 PC 的内容 + 1,保证其指向的永远是下一条指令的地址。编写汇编语言程序时程序员可以访问
- 地址寄存器(AR):保存的 CPU 执行内存单元的地址
- 指令译码器(ID):对指令中的操作码进行分析解释,识别该指令操作,向控制器发出信号,控制各个部件工作。
- 控制器:控制器为了保证计算机能够有条不紊的工作,作用就是取指令和执行指令
# 二、内存按字节编址
进制简称
D (decimal) 表示这个数是十进制
B (binary) 表示这个数是二进制
O (octor) 表示这个数是八进制
H (hex) 表示这个数是十六进制
进制转换
- n 进制转换 10 进制: 如 1001(2 进制) 转 10 进制,
- **10 进制转换 n 进制:如 9 (10 进制) 转 2 进制,用余数从后往前拼起来 **
做题的遇到的 16 进制减法,都是相减后再加 1。
例题 1
设用 "2K"×"4" 位的存储器芯片组成 "16K"×"8" 位的存储器(地址单元为 0000H〜3FFFH,每个芯片的地址空间连续),则地址单元 0B1FH 所在芯片的最小地址编号为 B 。(2010 年下半年)
A. 0000H B. 0800H C. 2000H D. 2800H
提示
首先题中开头说明 设用"2K"×"4" 位的存储器芯片组成"16K"×"8" 位的存储器
,可以得知需要用到 片存储器,题中又说明每片都是连续的,那么就是 16 份,3FFFH-0000H+1=4000H,分成 16 份。
先转成 10 进制然后除以 16 得到每份的区间为 0400H,所以 0B1FH 正好在第三份,所以选 B。
例题 2
地址编号从 80000H 到 BFFFFH 且按字节编址的内存容量为(5)KB,若用 "16K"×"4bit" 的存储器芯片构成该内存,共需 (6)片。(2013 年上半年)BC
(5) A. 128 B. 256 C. 512 D. 1024
(6) A. 8 B. 16 C. 32 D. 64
提示
这个题需要注意单位,首先 BFFFFH-80000H+1=40000H,40000H 转成 10 进制为 262144,但是单位是字节(B)转成千字节(KB)后是 256 所以第一问为 B,第二问中也是要把 bit 转 B,1B=8bit,所以是,。
# 三、原码、反码、补码、移码
二进制,0 反就是 1,1 反就是 0,补码的补码就是原码
原码:最高位为符号位,0 表示正号,1 表示负号,其余的除了符号位表示数值的绝对值。
反码:最高位为符号位,0 表示正号,1 表示负号,正数和原码一致,负数对原码除了符号位的其他位取反。
补码:最高位为符号位,0 表示正号,1 表示负号,正数和原码、反码一致,负数对反码最后一位加 1。
移码:对补码的符号位取反
范围:
整数 | 小数 | |
---|---|---|
原码 | -(2n-1-1)~(2n-1-1) | -(1-2n-1)~(1-2-(n-1)) |
反码 | -(2n-1-1)~(2n-1-1) | -(1-2n-1)~(1-2-(n-1)) |
补码 | -(2n-1)~(2n-1-1) | -1~(2-(n-1)) |
移码 | -(2n-1)~(2n-1-1) | -1~(2-(n-1)) |
- 补码的补码就是原码,补码求原码步骤:
- (1)如果补码的符号位为 0,表示是一个正数,所以补码就是该数的原码。
- (2)如果补码的符号位为 1,表示是一个负数,其余各位取反,然后再最后一位加 1。
例题 1
若某整数的 16 位补码为 FFFFH(H 表示十六进制),则该数的十进制值为 (20)B 。(2010 年上半年)
(20) A. 0 B. -1 C. D.
提示
补码的补码就是原码,首先 FFFF 得二进制是 1111 1111 1111 1111,反码为 1000 0000 0000 0000,第一位是符号位即负数首先排除 AC,又得到补码为 1000 0000 0000 0001,除去第一位符号位,得到二进制为 000 0000 0000 0001 加上符号位得到1,最后十进制是 - 1。
例题 2:这也是个定义题,遇到过很多次了
原码表示法和补码表示法是计算机中用于表示数据的两种编码方法,在计算机系统中常采用补码来表示和运算数据,原因是采用补码可以 (4) 。(2011 年上半年)
简化计算机运算部件的设计
# 四、浮点数
先对阶码,小阶对大阶,尾数右移
阶码决定数值范围,尾数决定数值精度
当字长为 n ,补码和移码可表示 个数,原码和反码可表示 。
浮点数的一般表示形式为,其中 E 为阶码,F 为尾数
如果浮点数的阶码(包括 1 位阶符)用 R 位的移码表示,尾数(包括 1 位数符)用 M 位的补码表示:
- 最大的正数:
- 最小的负数:
定点表示法中,小数点的使用是隐式的,并不实际占用一个存储位。
# 五、寻址
- 立即寻址方式(Immediate Addressing):操作数直接包含在指令中,不需要额外的内存访问或寄存器读取。
- 寄存器寻址方式(Register Addressing):操作数存储在寄存器中,指令中使用寄存器标识操作数。
- 直接寻址方式(Direct Addressing):操作数的地址直接包含在指令中,需要从存储器中读取数据。
- 寄存器间接寻址方式(Register Indirect Addressing):指令中使用的是一个寄存器作为地址,从该寄存器所指向的内存位置读取数据。
- 寄存器相对寻址方式(Register Relative Addressing):操作数的地址由一个基础寄存器和一个偏移量组合而成,以得到最终的内存地址。
- 基址变址寻址方式(Base Index Addressing):操作数通过将一个基址寄存器和一个索引寄存器相加,然后加上一个可选的偏移量来获得最终的内存地址。
- 相对基址变址寻址方式(Relative Base Index Addressing):操作数通过将一个基址寄存器、一个索引寄存器和一个偏移量相结合,得到最终的内存地址。
速度:
- 立即寻址方式:立即寻址是最快的寻址方式,因为操作数直接包含在指令中,无需额外的内存访问或寄存器读取步骤。
- 寄存器寻址方式:寄存器寻址也是一种快速的寻址方式。由于寄存器存储在处理器内部,访问速度较快,因此直接从寄存器中获取操作数通常比从内存中读取操作数更快。
- 寄存器间接寻址方式:寄存器间接寻址是通过寄存器来访问内存的方式,相对于直接寻址来说速度更慢一些,因为需要从内存中读取对应寄存器指向的数据。
- 直接寻址方式:直接寻址方式需要从内存中读取操作数,相对于寄存器寻址来说速度较慢,因为涉及到内存访问。
- 基址变址寻址方式:基址变址寻址通过相加基址寄存器、索引寄存器和可选偏移量来计算内存地址。相对于直接寻址,这种寻址方式涉及到更多的计算操作,因此速度可能略慢一些。
- 相对基址变址寻址方式:相对基址变址寻址方式与基址变址寻址方式类似,不同之处在于还包含一个偏移量。计算内存地址的过程相对复杂,速度相对较慢。
- 寄存器相对寻址方式:寄存器相对寻址方式是基于寄存器和偏移量来计算内存地址的。相比于其他寻址方式,它可能需要更多的指令和计算操作,因此速度可能慢一些。
指令系统中采用不同寻址方式的目的是扩大寻址空间并提高编程灵活性
# 六、校验码
码距:指的是两个等长编码在相应位置上不同的比特位数量,比如 "101010" 和 "111000",它们的码距就是在对应的位置上不同的比特位的个数。在这个例子中,两个序列的码距为 2,因为有 2 个位置上的比特位不同。
码距 = 2 有检错能力,码距≥3 才可能有纠错能力
奇偶校验:码距为 2,仅能检测出奇数位错误,不能纠错。
海明码:利用多组数位的奇偶性来检错和纠错。码距为 3 。
假设数据位是 n 位,校验位是 k 位,则 n 和 k 必须满足以下关系:
循环冗余码:k 个数据位后跟 r 个校验位,可以检错,但是不能纠错,码距为 2,采用模 2 运算的到校验码。
# 七、CISC 和 RISC
RISC 精简指令集计算机 | CISC 复杂指令集计算机 | |
---|---|---|
指令种类 | 少、精简 | 多、丰富 |
指令复杂度 | 低(简单) | 高(复杂) |
指令长度 | 固定 | 变化 |
寻址方式 | 少 | 复杂多样 |
实现(译码)方式 | 硬布线控制逻辑 (组合逻辑控制器) | 微程序控制技术 |
通用寄存器数量 | 多、大量 | 一般 |
流水线技术 | 支持(采用) | 支持(采用) |
# 八、流水线
加速比:不采用流水线的时间 / 采用流水线的时间
操作周期:流水线中最长执行段的时间
吞吐率:流水线中最长时间段的时间倒数
顺序执行时间:1 条指令执行的时间 * 总指令书
流水线执行时间:1 条指令执行时间 + 最长指令执行时间段 * ( 总指令数 - 1 )
连续输入 n 条指令的吞吐率:总指令数 / 总指令数执行的时间
流水线采用异步控制并不一定会明显提高其性能。异步控制是一种通过控制信号的变化来控制流水线中各个阶段的工作,以达到同步控制的效果。虽然异步控制可以避免某些同步控制的开销,但它也会引入一些新的问题,如时序问题和同步问题,可能会降低流水线的性能。
# 九、存储器
按访问方式可分为按地址访问的存储器和按内容访问的存储器。
相联存储器是按内容访问的存储器
按寻址方式可分为,随机存储器、顺序存储器、直接存储器
虚拟存储器由主存和辅助构成
DRAM(动态随机存储器):是一种常见的主存储器类型,需要通过周期性刷新来保持数据的存储器件。
SRAM(静态随机存储器):是另一种主存储器类型,与 DRAM 不同,SRAM 是基于触发器电路的存储器,不需要刷新操作,并且访问速度更快,但成本也更高。缓存(cache)通常使用 SRAM 作为存储介质。
EEPROM(电可擦除可编程只读存储器):属于非易失性存储器,闪存是其的一种类型,可以理解为 U 盘,故掉电后信息不会丢失。闪存是以块为单位进行删除的。可以代替 ROM 存储器,闪存不能代替主存。
- 数据局部性(Data Locality): 数据局部性是指在程序执行期间,数据访问的特点是在一段较短的时间内,很可能多次访问同一组(或相邻的)数据元素。数据局部性分为两种类型:时间局部性和空间局部性。
- 指令局部性(Instruction Locality): 指令局部性是指在程序执行期间,指令访问的特点是在一段较短的时间内,很可能多次执行同一组(或相邻的)指令。
- 空间局部性(Spatial Locality): 空间局部性是一种数据局部性的类型,指的是在程序执行期间,访问的数据元素与最近访问的数据元素在内存中的地址相近。换句话说,如果程序访问了一个特定的数据元素,那么它很可能会接着访问附近的数据元素。
- 时间局部性(Temporal Locality): 时间局部性是一种数据局部性的类型,指的是在程序执行期间,访问的数据元素在一段时间内可能会再次被访问。例如,如果程序在某个时间点访问了某个数据元素,那么在接下来的几个时钟周期内,该数据元素很可能会再次被访问。
# 十、Cache
- 直接映像:冲突多,关系固定。
- 全相联映像:冲突少,关系不固定,主存中的一块可以映射到 Cache 中的任意一块,除非 Cache 满了才需要替换。
- 组相联影响:冲突较少,是直接映像与全相联映像的折中。
!!!Cache 与主存的地址映射 : 由硬件自动完成
Cache 的设计思想是在合理成本下提高命中率。
替换算法的时间复杂度并不是影响 Cache 命中率的关键因素。替换算法主要影响的是缺失率(Cache Miss Rate),而不是命中率。
# 十一、中断
- 中断向量提供: 中断服务程序的入口地址
- 中断响应时间:从发出中断请求到开始进入中断处理程序
- 保存现场:为了正确返回原程序继续执行
为了便于实现多级中断嵌套,使用堆栈来保护断点和现场最有效。
# 十二、输入输出(IO)控制方式
- 程序查询(Programmed I/O):CPU 通过不断查询设备状态来判断设备是否准备好或是否有数据需要传输。这种方式需要 CPU 的主动干预,效率相对较低。
- CPU 和 IO 只能串行工作,CPU 需要一直轮询检查,长期处于忙等状态,CPU 利用率低。
- 一次只能读 / 写一个字
- 由 CPU 将数据放入内存
- 需要 CPU 保护现场
- 中断控制(Interrupt-driven I/O):设备通过发送中断信号来通知 CPU 设备的状态或数据传输完成。CPU 会在收到中断信号后中断当前正在执行的任务,转而处理中断请求,提高了系统的响应能力。
- IO 设备通过中断信号主动向 CPU 报告 IO 操作已完成
- CPU 和 IO 可并行工作
- CPU 的利用率得到提升
- 一次只能读 / 写一个字
- 由 CPU 将数据放入内存
- 需要 CPU 保护现场
- 直接存储器存取(Direct Memory Access,DMA):外设通过 DMA 控制器直接访问内存,实现数据的直接传输,无需 CPU 的干预。这种方式可以提高数据传输速度,减轻 CPU 的负担,提高系统的效率。
- CPU 和 IO 可并行工作
- 仅在传送数据块的开始和结束时才需要 CPU 的干预
- 由外设直接将数据放入内存或者相反
- 一次读写的单位为 “块” 而不是字
- DMA 传送一个数据占用一个存储周期
- 不需要 CPU 保护现场
异常是指令执行过程中在处理器内部发生的特殊事件,中断是来自处理器外部的请求事件。以下关于中断和异常的叙述中,正确的是 “DMA 传送结束” 为中断、“除运算时除数为 0” 为异常
CPU 是在一个总线周期结束时响应 DMA 请求的
采用 DMA 方式传送数据时,每传送一个数据都需要占用一个总线周期
# 十三、总线
处理机主要由处理器、存储器和总线组成,总线包括数据总线、地址总线、控制总线。
SCSI不属于系统总线。
SCSI (Small Computer System Interface) 是一种并行外总线,用于计算机和智能设备之间 (硬盘软驱、光驱、打印机、扫描仪等) 系统级接口的独立处理器标准。
ISA (Industrial Standard Architecture) 总线标准是 IBM 公司 1984 年为推出 PC/AT 机而建立的系统总线标准,所以也叫 AT 总线。它是对 XT 总线的扩展,以适应 8/16 位数据总线要求。
EISA 总线是 1988 年由 Compag 等 9 家公司联合推出的总线标准。它在 ISA 总线的基础上使用双层插座,在原来 ISA 总线的 98 条信号线上又增加了 98 条信号线,也就是在两条 ISA 信号线之间添加一条 EISA 信号线。在实用中,EISA 总线完全兼容 ISA 总线信号。
PCI (Peripheral Component Interconnect) 总线是当前最流行的总线之一是并行内总线,它是由 Intel 公司推出的一种局部总线。它定义了 32 位数据总线,且可扩展为 64 位。PCI 总线主板插槽的体积比原 ISA 总线插槽还小,支持突发读写操作,最大传输速率可达 132MB/S, 可同时支持多组外围设备。PCI 局部总线不能兼容现有的 ISA、EISA、MCA (Micro ChannelArchitecture) 总线,但它不受制于处理器,是基于奔腾等新一代微处理器而发展的总线。
# 十四、安全性
公钥体系也就是公开密钥加密也就是非对称加密
非对称加密中,用接收方的公钥加密,用接收方的私钥解密。
用发送方的私钥签名(加密),用发送方的公钥验证(解密)
数字签名
- 用发送方的私钥签名,用发送方的公钥验证消息的真实性
- 数字签名可以验证消息的真实性、发送方不可否认
数字证书
- 用 CA 机构的私钥签名,用 CA 证书的公钥验证数字证书的真伪性
- 可以确认网站的合法性,用户的身份等
# 十五、加密算法
对称密钥(私钥、私有密钥加密、共享密钥)算法
- DES
- 3DES
- RC-5
- IDEA
- AES 分组加密算法
- RC4
非对称密钥(公钥、公开密钥加密)算法
- RSA
- ECC
- DSA
概念
对称密钥适合大量明文消息进行加密传输
数字签名通常使用公钥密码学中的非对称加密算法来实现。
Hash 函数
SHA-1 安全散列算法
MD5 摘要算法,输出结果为 128 位
摘要算法防止发送的报文被篡改
加密阻止被动攻击
认证阻止主动攻击
# 十六、系统可靠度
就两个公式
- 串联系统:
- 并联系统: