学霸的计算机组成原理知识点清单

没什么技术含量,只是把学校里学的东西整理出来,还挺用心的,希望大家喜欢

一、计算机系统概论二、数据表示三、运算方法与运算器四、存储系统五、指令系统六、中央处理器七、总线八、输入输出系统

一、计算机系统概论

1. 冯诺依曼计算机组成

  • 主机(cpu+内存),外设(输入设备+输出设备+外存),总线(地址总线+数据总线+控制总线)

2. 计算机层次结构

  • 应用程序-高级语言-汇编语言-操作系统-指令集架构层-微代码层-硬件逻辑层

3. 计算机性能指标

  • 非时间指标【字长】机器一次能处理的二进制位数 ,常见的有 32 位或 64 位【总线宽度】数据总线一次能并行处理的最大信息位数,一般指运算器与存储器之间的数据总线的位数【主存容量】主存的大小【存储带宽】单位时间内与主存交换的二进制位数 B/s
  • 时间指标【主频 f】时钟震荡的频率 Hz;【时钟周期 T】时钟震荡一次的时间 t【外频】cpu 与主板之间同步的时钟频率,系统总线的工作频率;【倍频】主频与外频的倍数 =主频/外频【CPI】clock cycles per instruction,执行一条指令需要的周期数(平均)【MIPS】million instructions per second,每秒执行的指令总条数 MIPS= f / CPI (忽略单位)

二、数据表示

1. 基本概念

  • 真值:+0101,-0100
  • 机器数: [x]原=0101

2. 几种机器数

  • 原码:x = -0101,[x]原 = 1101
  • 反码:x = -0101,[x]反 = 1010
  • 补码:x = -0101,[x]补 = 1011
  • 移码:x = -0101,[x]移 = 2^n + x = 0011

PS:这里说说对补码与移码自己的理解。补码是为了化减法为加法方便计算机设计运算,移码是为了方便比较大小,用在浮点数的阶码中。

补码——任何一个有模的系统中,减法都可以通过加其补码来表示。最简单的例子就是以 12 为模的钟表,比如现在是 3 点,那么-5 个小时就等于+7 个小时,都是 10 点。这里 7 就是 5 的补码。

移码——数据对应关系一次挪动一下位置,使得看起来小的数真值也小。比如原本 0000 表示 0,现在表示-128,然后 0001 表示-127,一直到 1111 表示+127,这样就方便比较了。

3. 定点数与浮点数

定点数:小数点固定 x.xxxxxx,表示范围受限,忘掉它吧

浮点数:数的范围和精度分别表示。

  一般格式 :EEEE......EMMM.......M,E 部分是阶码(数的范围 i),M 部分是尾数(数的精度)。缺点:阶码和尾数位数不固定,太灵活了

  IEEE754 格式:跟我背下来----

    32 位的是(单精度):1 位符号位 S + 8 位偏指数 E + 23 位有效尾数 M,偏移值为 127。

    64 位的是(双精度):1 位符号位 S + 11 位偏指数 E + 52 位有效尾数 M,偏移值为 1023。

    真值就是(32 位为例) N = (-1)^S * 2^(E-127) * 1.M

浮点数的特殊情况

  E=0,M=0:机器零

  E=255,M=0:无穷大,对应于 x/0

  E=255,M!=0:非数值 NaN,对应 0/0

ps:附上一份 IEEE754 文档:https://files.cnblogs.com/files/flashsun/7542008-2008.pdf

4. 数据校验

  • 基本原理:增加冗余码
  • 码距:合法编码之间不同二进制位数的最小值
  • 码距与检错、纠错能力:码距 d>=e+1:检查 e 个错误码距 d>=2t+1:纠正 t 个错误码距 d>=e+t+1:同时检查 e 个错误,并纠正 t 个错误。(e>=t)

PS:这里说下我的理解,增加码距就是增加非法编码的数量,看到非法编码就算检查出错误了,而非法编码距离哪个合法编码比较进就认为正确的应该是什么(简单理解),也就是可以纠正错误

举个例子:比如一共有 8 位,码距为 1 则检查不出任何错误,因为所有编码都是合法编码。如果码距为 2,那合法编码应该像 00000000,00000011,00001100,00001111 这样,那如果出现 00000001 这样的非法编码就出错了,可检查一位错,但如果两位同时错了,则有可能又跳到另一个合法编码上了,就检查不出 2 位错。

那如果码距是 3,那合法编码应该像 00000000,00000111,00111000,00111111 这样,那如果出现一位错 00000001,或者两位错 00000011,都是非法编码,都能检查出错误,并且此时可以纠正 00000001 为 00000000,纠正 00000011 为 00000111。但是三位同时错就检查不出了。

常见校验策略:奇偶校验,CRC 校验,海明校验

ps:海明编码最强视频演示教程:https://www.youtube.com/watch?v=373FUw-2U2k

三、运算方法与运算器

1. 定点数运算及溢出

定点数加减法:减法化加法,用补码直接相加,忽略进位

溢出:运算结果超出了某种数据类型的表示范围

溢出检测方法:统一思想概括为正正得负或负负得正则溢出,正负或负正不可能溢出

  方法 1:V = XYS + XYS(XY 为两个加数的符号位,S 为结果的符号位,_表示非),那么 V = 1 则为溢出

  方法 2:V = C0 ⊕ C1(C0 是最高数据位产生的进位,C1 是符号位产生的进位),那么 V = 1 则为溢出

  方法 3:V = Xf1 ⊕ Xf2(数据采用变型补码 Xf1Xf2 X0X1X2X3... )

PS:以上方法都是利用正正得负负负得正则溢出为出发点的电路设计

2. 补码一位乘法——Booth 算法

[x·y]补 = [x]补·( -y0+∑ yi2-i )

    = [x]补·[ - y0 + y12-1 + y22-2 + … + yn2-n]

    = [x]补·[ - y0 + (y1 - y12-1) + (y22-1 - y22-2) + … + (yn2-(n-1) - yn2-n)]

    = [x]补·[(y1 - y0) + (y2 - y1) 2-1 + … + (yn - yn-1) 2-(n-1) + (0 - yn)2-n]

总结起来设计数字电路的规则就是:

  • 为 00 或者为 11 的时候,直接右移一位
  • 为 01 的时候,加 x 的补,然后右移一位
  • 为 10 的时候,加-x 的补,然后右移一位

PS:其实第一行和最后一行都能设计数字电路,为什么要从第一个式子推到最后一个式子呢?原因有两点:

  1)二进制中如果有 0,可以不进行运算

  2)如果有连续的 1 可以减少计算次数,比如 a * 001111100 = a * (010000000 - 0000000100)

所以每次判断 yn+1 - yn 就可以减少计算次数了

参考:https://www.cnblogs.com/xisheng/p/9260861.html

3. 定点数除法 --- 略,没找到好的资料

4. 浮点数加减法

(1)求阶差,阶码小的对齐大的

  (2)尾数加减

  (3)结果规格化

四、存储系统

1. 存储系统层次结构

主存速度缓慢的原因:主存增速与 CPU 不同步,执行指令期间多次访问主存

主存容量不足的原因

  • 存在制约主存容量的技术因素:如由 CPU、主板等相关技术指标规定了主存容量

  • 应用对主存容量需求不断扩大:window98 -- 8M,windows 8 -- 1G

    -----> 存储体系结构化层次: CPU -- Cache1 -- Cache2(解决速度) -- 主存 -- 辅存(解决容量)

存储体系结构化层次理论基础

  • 时间局部性:程序体现为循环结构
  • 空间局部性:程序体现为顺序结构

2. 主存中的数据组织

存储字长:主存的一个存储单元所包含的二进制位数,目前大多数计算机主存按字节编址,主要由 32 为和 64 位

数据存储与边界的关系

  • 按边界对齐的数据存储,未按边界对齐的数据存储
  • 边界对齐与存储地址的关系:(32 位为例)
  1. 双字长边界对齐:起始地址最末三位为 000(8 字节整数倍)
  2. 单字长边界对齐:起始地址最末二位为 00(4 字节整数倍)
  3. 半字长边界对齐:起始地址最末一位为 0(2 字节整数倍)

大端与小端存储方式

  • 大端:最高字节地址是数据地址(0123 存成 0123)
  • 小端:最低字节地址是数据地址(0123 存成 3210)

3. 存储器分类

  • SRAM 存储器:存取速度快,但集成度低,功耗大,做缓存

  • DRAM 存储器:存取速度慢,但集成度高,功耗低,做主存

        DRAM 刷新方式:集中刷新、分散刷新、异步刷新

4. 主存容量的扩展

  • 位扩展法:8K * 8 位 --> 8K * 32 位
  • 字扩展法:8K * 8 位 --> 32K * 8 位
  • 字位同时扩展法:8K * 8 位 --> 32K * 32 位

5. Cache 的基本原理

  • cache 的工作过程

    • 数据:cpu 与 cache 交换字,cache 与内存交换块
    • :命中,不命中
    • :写穿策略,写回策略
  • 写策略

    • 写穿策略(write through):同时写缓存和内存,好像穿过缓存一样。若不命中,先写到主存中,并选择性地同时分配到缓存中(写分配/非写分配)
    • 写回策略(write back):写到缓存后不管了,只有当缓存的内容替换回主存时再管,需有脏位。好像隔段时间后再写回到主存中一样
  • 地址映射机制

  • 相联存储器:地址本身包含着位置啊可比较的信息啊等内容信息,可根据区分地址内容进行寻址

  • 主存地址 = 块地址 + 块内偏移地址 = (Tag + Index) + 块内偏移地址

- cache 结构好多行,每行与主存块大小相等每行 = tag + data + valid + dirty

  • 三种映射方式

    • 全相联:cache 行号 = random(内存块号)
    • 直接相联:cache 行号 = 内存块号 % cache 行数
    • 组相联:两者结合。8 行 1 路组相联就是全相联,8 行 8 路组相联就是直接相联
  • 替换算法

    • 先进先出法-FIFO
  • 最近最不经常使用法-LFU

  • 近期最少使用法-LRU

  • 随机替换法

6. 虚拟存储器

  • 解决问题:主存容量不足。希望向程序员提供更大(比主存大)的编程空间
  • 分类:页式,段式,段页式
  • 页式实现方式:MMU(Memory Management Unit) + 页表 + TLB(Transaction Lookaside Buffer:地址转换后备缓冲器)
  • 页式转换过程:虚拟地址 = 虚拟页号 + 页内偏移 ==> 物理页号 + 页内偏移

7. RAID

  • 概念:独立磁盘构成的具有冗余能力的阵列(Redundant Arrays Independent Disks)
  • 核心技术:使用异或运算恢复数据 (x⊕y = z --> x = y⊕z)
  • 分类
    • RAID0:条带均匀分布
    • RAID1:以镜像为冗余方式
    • RAID3/4:有校验盘
    • RAID5:校验信息分布式RAID10/01:10 是先镜像再条带化,01 是先条带化再镜像RAID50:先 RAID5,再条带化

五、指令系统

1. 指令系统基本概念

  • 指令集:一台机器所有指令的集合。系列机(同一公司不同时期生产);兼容机(不同公司生产)
  • 指令字长:指令中包含的二进制位数,有等长指令变长指令
  • 指令分类
    • 根据层次结构:高级、汇编、机器、微指令
    • 根据地址码字段个数:零、一、二、三地址指令
    • 根据操作数物理位置存储器-存储器(SS)寄存器-寄存器(RR)寄存器-存储器(RS)
    • 根据指令功能:传送、算术运算、位运算、控制转移
  • 指令格式:操作码+数据源+寻址方式

2. 寻址方式

  • 指令寻址方式:顺序寻址,跳跃寻址
  • 操作数寻址方式
    • 立即数寻址:地址码字段是操作数本身 MOV AX, 200H
    • 寄存器寻址:地址码字段是寄存器地址 MOV AX, BX
    • 直接寻址:地址码字段是内存地址 MOV AX, [200H]
    • 间接寻址:地址码字段是内存地址的地址 MOV AX, I[200H]
    • 寄存器间接寻址:地址码字段是存内存地址的寄存器地址 MOV AX, [BX]
    • 相对寻址:操作数地址 + 当前 PC 的值
    • 基址寻址:操作数地址 + 基址寄存器的值(一段程序中不变) MOV AX, 32[B]
    • 变址寻址:操作数地址 + 变址寄存器的值(随程序不断变化) MOV AX, 32[SI]

六、中央处理器

1. CPU 的组成与功能

  • 控制器、运算器、寄存器、PC

2. 数据通路

  • 概念:执行部件间传送信息的路径,分共享通路(总线)和专用通路
  • 抽象模型:时钟驱动下,A --> 组合逻辑 --> B

3. 指令周期

  • 指令执行的一般流程:取指令、指令译码、取操作数、执行操作数、存操作数 -- 中断

  • 基本概念 时钟周期 = 节拍脉冲 = 震荡周期机器周期 = CPU 周期 = 从主存读取一条指令的最短时间指令周期 = 从主存读指令并执行指令的时间

  • 指令时间控制

机器周期数节拍数同步方式实践
定长指令周期不变不变按机器周期mips 单周期
变长指令周期按时钟周期mips 多周期

七、总线

1. 系统总线的特性及应用

  • 总线概念:将计算机系统中各部件连接起来
  • 总线分类:(外部/内部,系统/非系统,串行/并行,同步/异步...)
    • 按用途分类
      • 存储总线:cpu 与存储器
      • 系统总线:连接存储总线和 IO 总线的中间总线
      • IO 总线:连接外部设备
    • 按位置分类
      • 外部总线:USB,火线(IEEE1394)
      • 内部总线:PCI(连网卡),AGB(连显卡)(芯)
      • 片内总线:AMBA(ARM 处理器)
    • 按组成分类
      • 数据总线:传数据,双向三态
      • 地址总线:传地址,单向三态
      • 控制总线:控制信号和时序信号
      • 电源线和地线:略

2. 总线性能和总线事物

  • 总线的性能参数总线频率:总线工作速率 f,单位是 MHz总线宽度:数据总线的宽度 w,单位是 bit总线传输速率:总线传输数据量 BW,单位是 MB/s。BW = w / 8 * f
  • 总线事务概念:从请求总线到完成使用的操作序列(请求 - 裁决 - 地址传输 - 数据传输 - 总线释放)角色:主设备(CPU,DMA)和从设备四个阶段:请求与仲裁 - 传输 - 寻址 - 结束常见总线操作:读,写,读修改写,写后读,块操作

3. 总线连接方式

  • 单总线结构
  • 双总线结构
  • 多总线结构
  • 总线桥:不同速率总线之间的连接,起速度缓冲、电平转换、控制协议转换的作用多级总线结构(南北桥)
  • 总线结构对系统性能的影响
多总线单总线
对最大存储容量不影响因要与 io 共享内存,影响
对指令系统增加 IO 指令无 IO 指令
对吞吐量

4. 总线仲裁和数据传输方式

  • 菊花链式串行总线仲裁:简单,只要有一个主设备占用总线,其他就占不了
  • 集中式并行总线仲裁固定优先级策略:优先级高的主设备,总会优先控制总线权轮叫式策略:皇帝轮流做LRG 策略:最近获得控制权的,再获得控制权的优先级高(经常用的就更容易获得总线控制权)

5. 总线标准

  • - 概念:计算机各部件之间利用总线传输信息应遵守的协议和规范,包括硬件和软件两部分
  • 常见的总线标准机箱内部总线:ISA - EISA - VESAISA(Industrial Standard Architecture):最早指定的总线技术标准,总线宽度 8/16 位,频率 5-8MHz,带宽 5-8MB/sEISA:宽度变成 32 位VESA:宽度变成 64 位PCI(PCIe) - AGP主要用于系统总线和 IO 总线,取代 ISA 地址总线和数据总线分时复用,支持即插即用(自动寻找驱动程序)32/64 位,133/264MB/s机箱外部总线:USB 等...

八、输入输出系统

1. 输入输出系统概述

  • 组成:外设、接口、总线、管理软件
  • 基本功能:完成计算机内外的信息传递保证 CPU 正确选择输出设备利用缓冲等,实现主机与外设的速度匹配
  • 特点:异步性、实时性、设备无关性
  • 输入过程:CPU 把地址值放入总线 --> CPU 等候设备数据有效 --> CPU 从总线读入数据存入寄存器
  • 输出过程:CPU 把地址值放入总线 --> CPU 把数据值放入总线 --> 设备等数据有效取走数据
  • IO 系统性能:存储 IO、通信 IO连接特性:哪些设备可以和 IO 相连IO 系统容量:IO 系统可以容纳的设备数响应时间:从用户输入命令到得到结果所花的时间(s)吞吐率:单位时间完成的 IO 操作次数(用 IOP 表示)

2. 输入输出方式

  • 无条件 IO 方式:执行 IO 指令时,CPU 默认外设已经准备就绪,外设很难满足这一点
  • 程序控制 IO 方式:执行 IO 指令时,先获取设备状态(设备状态寄存器),决定下一步操作(程序决定)数据要经过 CPU,CPU 还要浪费大量时间查询设备状态
  • 中断 IO 方式:外设主动通知 CPU 接收或输出数据,有实时性
  • DMA 方式:由硬件执行 IO,外设准备好后通知 DMA,DMA 接管总线,完成数据交换既有中断的优点,又降低了服务的开销
  • 通道和 IO 处理机方式:外设种类很多速度差别很大,将外设管理工作从 CPU 总分离出来通道本身就是个简单的 CPU,执行 IO 指令的处理机 IO 处理机是通道的进一步发展,更像一个 CPU 了

3. 中断请求与响应

  • 概念:CPU 由内部外部事件引起 CPU 中断正在运行的程序,具有随机性(符合输入输出系统特性)
  • 作用:主机与外设并行;故障处理;实时处理
  • 类型内部中断(软件、异常)外部中断(可屏蔽中断 INTR、不可屏蔽中断 NMI)
  • 基本功能中断信号的保持与清除:通过寄存器存起来,处理完清零中断优先级:硬件响应优先序、软件服务优先序(中断服务程序开头,设置自己的中断屏蔽位)中断源识别:系统分配给每个中断源的代号(中断号),中断号获取可以用硬件或软件方式中断处理响应:每执行完一条指令,就会判断是否有中断请求处理:保存断点(返回地址)、执行中断程序、返回断点中断控制中断触发方式:指外设以什么逻辑信号去申请中断(边沿触发、电平触发)中断排队方式:按优先级、循环轮流排队中断嵌套:中断正在执行的中断程序,不可屏蔽中断不能嵌套中断屏蔽:处理器内部有个触发器,“1”时才会响应外部中断

4. DMA 方式

  • 原理:数据传送不经过 CPU,由 DMA 控制器实现内存和外设、外设和外设之间的直接快速传递

  • 系统构成:-- DMA 作为主设备之一-- DMA 与 IO 接口集成-- DMA 提供专门 IO 总线

  • DMA 的两种工作状态:被动态(未获得总线控制权,受 CPU 控制)、主动态(获得总线控制权)

  • 传输步骤申请:一个设备接口试图通过总线向另一个设备发送数据,先向 CPU 发送 DMA 信号响应:CPU 收到 DMA 信号,当前总线周期结束后,按 DMA 信号优先级响应相应的 DMA 控制器数据传送:DMA 收到 CPU 响应,获得总线控制权,开始直接数据传送传送结束:设备向 CPU 发送 DMA 结束信号,交换总线控制权

  • DMA 操作类型数据传送:源地址数据传到目的地址数据校验:不传输,只校验某数据块内部的每个字节数据检索:不传输,只在制定内存区域内查找某个关键字或某几个数据位是否存在

  • DMA 操作方式单字节传输模式:每次 DMA 操作传送一个字节块传输模式:每次传送多个字节,有个当前字节计数器,+1 +1 +1请求传输模式:DMA 控制器询问外设,当外设请求信号无效时,暂停传输(不释放总线);再次有效再继续传输级联传输模式:多个 DMA 级联,分布式

  • DMA 传输模式停止 CPU 访问内存:传输速率高的设备传输时有优势周期挪用:DMA 挪用一个或几个内存周期。若此时 CPU 不需要访存则不冲突,若冲突则 DMA 优先DMA 与 CPU 交替访存:直接交替访存,不需要浪费时间

阅读全文: http://gitbook.cn/gitchat/activity/5da83adc17ef014feb30b461

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

FtooAtPSkEJwnW-9xkCLqSTRpBKX

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值