计算机组成原理

计算机系统概论

计算机系统

  1. 计算机系统 = 硬件 + 软件
  2. 软件:由具有各类特殊功能的程序组成
    1. 系统软件:用来管理整个计算机系统,如操作系统,数据库管理系统等。
    2. 应用软件:按任务需要编制成的各种程序,如QQ,微信。
  3. 硬件:计算机的实体,如主机,外设等

计算机硬件的基本组成

  1. 冯诺依曼机
    1. image-20240310210425289
    2. 计算机由五大部件组成
    3. 指令和数据一同等地位存于存储器,可按地址寻访
    4. 指令和数据用二进制表示
    5. 指令由操作码和地址码组层
    6. 存储程序
    7. 以运算器为中心
  2. 现代计算机的结构
    1. image-20240310211228946
    2. 存储器为中心
    3. CPU(中央处理器) = 运算器 + 控制器

各个硬件的工作原理

  1. 主存储器
    1. image-20240310212049476
    2. image-20240310212702464
  2. 运算器
    1. 用于实现算术,如加减乘除,逻辑运算
    2. ACC:累加器,用于存放操作数,或运算结果
    3. MQ:乘商寄存器,在乘除运算时,用于存放操作数或运算结果
    4. X:通用的操作数寄出去,用于存放操作数
    5. ALU:算术逻辑单元,通过内部复杂的点了实现算数运算,逻辑运算
    6. image-20240310213208303
  3. 控制器
    1. CU:控制单元,分析指令,给出控制信号。
    2. IR:指令寄存器,存放当前执行的指令
    3. PC: 程序计数器,存放下一条指令地址,有自动加1功能
    4. image-20240310213411269
  4. 计算机 的工作过程
    1. image-20240310215339511

计算机系统的层次结构

  1. image-20240310220434149

计算机硬件的主要技术指标

  1. 存储容量
    1. image-20240310221749664
    2. 2^10^:K, 2^20^:M, 2^30^:G, 2^40^:T
  2. CPU的性能指标
    1. CPU主频:CPU内数字脉冲信号震荡的频率。
    2. CPU执行时间(整个程序的耗时) = CPU时钟周期数/主频 = (指令条数*CPI)/主频
    3. 数据通路带宽:数据总线一次所能并行传送信息的位数(哥硬件补位通过数据总线传输数据)
    4. 吞吐量:指系统在单位时间内处理请求的数量。
    5. 响应时间

总线

  1. image-20240314163513693

  2. 总线简图image-20240311124956116

    1. 每个总线可能有很多跟信号线组成
  3. 总线的物理实现

  4. image-20240311125319235

  5. 4根信号线组成”一根”总线,所有硬件部位都可以通过这根总线传递数据。

  6. 可并行发送4bit数据,同一时刻只能有一个部件数据数据,但是可有多个部件接收数据

概述

  1. 概念:总线是一组能为多个部件分时共享的公共信息传送线路。
  2. image-20240311130259312
  3. 作用:为了更好 解决IO设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接。
  4. 总线的特性
    1. 机械特性:尺寸,形状,管脚数,排列顺序。
    2. 电气特性:传输方向和有效的电平范围
    3. 功能特性:每根传输线的功能(地址,数据,控制)
    4. 时间特性:信号的时序关系

总线的分类

  1. image-20240311131529256

  2. 串行总线

    1. 优点:只需要一条 传输线,成本低,广泛应用于长距离传输;应用于计算机内部是,可以节省布线空间。
    2. 缺点:在数据发送和接收的时候要进行拆卸和装配,要考虑串行-并行转换问题
  3. 并行总线

    1. 优点:总线的逻辑时序比较简单,电路实现起来比较容易。

    2. 缺点:信号线数量多,占用更多的布线空间,成本高,抗干扰性差。


  4. 片内总线:是芯片内部的总线,它是CPU芯片内部寄存器与寄存器之间,寄存器与ALU之间的公共连接线。

  5. 系统总线

    1. 系统总线是计算机系统内各个功能部件(cpu,主存,IO接口)之间相互连接的总线。
    2. image-20240311132251122
  6. 通信总线:用于计算机系统之间或计算机系统与其他系统(如远程通信设备,测试设备)之间信息传送的总线,也称为外部总线


  7. 同步总线:

  8. 异步总线

总线性能指标

  1. 传输周期(总线周期)
  2. 时钟学号周期
  3. 工作频率
  4. 时钟频率
  5. 总线宽度:又称为总线位宽,它是总线上同时能够传输的数据位数,通常是指数据总线的根数,如32根称为32位(bit)总线
  6. 总线带宽
    1. 可理解为总线的数据传输率,即单位时间内总线上可参数数据的位数,通常用每秒钟传送信息的字节数来衡量,单位可用字节/秒(B/s)表示
    2. image-20240311135258912
  7. 总线复用
    1. 总线复用是指一种信号线在不同时间传输不同的 信息。可以使用较少的线传输更多的信息,从而节省了空间和成本。
    2. image-20240311140237311
  8. 信号线数:地址总线,数据总线和控制总线3中展现的总和称为信号线数。

总线仲裁

  1. 主设备:获得总线控制权的设备
  2. 从设备:被主设备访问的设备,只能响应从设备发来的各种总线命令。
  3. 为什么要仲裁?
    1. 总线作为一种共享设备,不可避免地会出现同一时刻多个主设备总线控制权的问题。
  4. 定义:多个主设备同时竞争主线控制权时,以某种方式选择一个主设备优先获得总线控制权称为总线仲裁。
  5. 集中仲裁
    1. image-20240311141356968
    2. 链式查询方式image-20240311141822693
    3. 计数器查询方式image-20240311142422989
    4. 独立请求方式image-20240311143328110
    5. image-20240311143709988
  6. 分布仲裁方式
    1. 特点:不需要中央仲裁器,每个潜在的主模块都有自己的仲裁器和仲裁号,多个仲裁竞争使用总线。
    2. image-20240311143906645

总线操作和定时

  1. 总线周期的四个阶段
    1. 申请分配阶段——传输请求和总线仲裁
    2. 寻址阶段
    3. 传输阶段——主模块和从模块进行进行数据交换
    4. 结束阶段:主模块的有关信息均从系统总线上撤出,让出总线使用权
  2. 总线定时是指总线在双方交换数据的过程中需要时间上配合关系的控制,这种控制称为总线定时,它的实质是一种协议或规则。
  3. 同步通信(同步定时方式): 由统一时钟控制数据传送
    1. 优点:传送速度快,具有较高的传输速率;总线控制逻辑简单。
    2. 缺点:主从设备属于强制性同步,不能及时进行数据通信的有效性检验,可靠性较差。
    3. 同步通信适用于总线长度较短总线所接部件的存取时间比较接近的系统。
  4. 异步通信(异步定时方式):采用应答方式,没有公共时钟标准
    1. image-20240314162948935

总线标准

  1. 总线标准设计的接口可视为通用接口,在接口的两端,任何预防只需根据总线标准的要求完成自身方面的功能要求,无须了解对方接口的要求。
  2. image-20240314164346136

存储系统

基本概念

  1. 存储器的层次结构
    1. image-20240314165823714
    2. image-20240314165832292
    3. 主存辅存实现了虚拟存储系统,解决了主存容量不够的 问题
    4. cache-主存解决了主存于CPU速度不匹配的问题
  2. 存储器的分类
  3. 存储器的性能指标
    1. 存储容量:存储字数*字长
    2. 单位成本
    3. 存储速度:==数据参数率=数据的宽度/存储周期==
  4. image-20240314172136157

主存储器的基本组成

  1. 基本元件
    1. MOS管,作为通电的开关
    2. 电容,存储电荷(即存储二进制),给电容充电为写数据,放电为读数据。
  2. 存储芯片的结构
    1. image-20240314175320902
    2. 译码驱动电路:译码器将地址信号转换为字选通线的高低电平
    3. 存储矩阵(存储体):由多个存储单元构成,每个存储单元由多个存储元构成
    4. 读写电路:每次读写一个存储字
    5. 地址线,数据线,片选线,读写控制线
  3. 寻址:现代计算机通常按字节编址,即每个字节对应一个地址

DRAM(动态随机存储)和SRAM(静态)

  1. DRAM刷新:
    1. 刷新周期:一般为2ms
    2. 为单位,每次刷新一行存储单元,用行列地址是为了减少选通线的数量
    3. 如何刷新:有硬件支持,读出一行的信息后重新写入,占用一个读/写周期。
    4. 在什么时刻刷新?
    5. image-20240320200205849
  2. DRAM的地址线复用技术
    1. image-20240320200523733
    2. 行,列地址分两次送,可是地址线更少,芯片引脚更少。

只读存储器ROM

  1. 非易性,断电后数据不会丢失。
  2. image-20240320202037220

双端口RAM&多模块存储器

存取周期 T = 存取时间r + 恢复时间

双端口RAM

  1. 作用:优化多核CPU访问一根内存条的速度。
  2. 需要有两组完全独立的数据线,地址线,控制线。CPU,RAM中也要有更复杂的控制电路。
  3. 两个端口对同一主存操作
    1. 两个端口同时对不同的地址单元存取数据。
    2. 两个端口同时对同一地址单元读出数据。
    3. 若发生”冲突”,则发出”Busy”信号,其中一个CPU的访问端口暂时关闭。

多模块存储器

  1. 单体多字存储器
    1. 每次并行读出m个连续的字
    2. 总线宽度也要扩展为m个字
  2. 多体并行存储器
    1. 高位交叉编址:理论上多个存储体可以被并行访问,但是偶遇通常连续访问,因此实际效果相当于单纯的扩容
    2. 低位交叉编址
      1. 当存储模块树m>=T/r时,可以使流水线不间断
      2. 某个存储周期内可以读写地址连续的m个字
      3. 微观上,m个模块被串行访问;宏观上,名称存取周期内所有模块被并行访问

主存储器与CPU的连接

存储器芯片的输入输出信号

image-20240428200303177

增加主存的存储字长——位扩展

image-20240428200746885

增加主存的存储字数——字扩展

image-20240428202201012

image-20240428202357930

主存容量扩展——字位同时扩展

image-20240428202650859

总结

image-20240428202801561

外存储器

  1. 计算机的外存储器又称为辅助存储器,目前主要使用磁表面存储器
  2. 所谓“磁表面存储”,是指把某些磁性材料薄薄地涂在铝或塑料表面上张伟伟在磁体来存储信息。磁盘存储器、磁带存储器和磁鼓存储均属于磁表面存储器。
  3. 磁表面存储器每次读写都是以1bit为单位读写,而且读写两个动作是不能够同时进行的。
  4. image-20240428204313090
  5. 优点
    1. 容量大,价格低
    2. 记录介质可以重复使用
    3. 可以长期存储
    4. 非破坏性读出,读出是不需要再生
  6. 缺点
    1. 存取速度慢
    2. 机械结构复杂
    3. 低工作环境要求高

磁盘存储器

image-20240428205046162

  1. 磁盘设备的组成
    1. 存储区域:一块硬盘含有若干个记录面,某个记录面划分为若干条磁道,而每条磁道有划分为若干个扇区,扇区(也称块)是磁盘读写的最小单位,也就是说磁盘按块存取
    2. image-20240428205955218
    3. 硬盘存储器:银盘存储器有磁盘驱动器、磁盘控制器的盘片组成。
  2. 转盘的性能指标
    1. 磁盘的容量
    2. 记录密度
    3. 平均存取时间 = 寻道时间(磁头移动到目的磁道)+旋转延迟时间(磁头定位到所在扇区) + 传输时间(传输数据所花费的时间)
      1. image-20240428211217151
    4. 数据传输率:磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输率。
      1. 假设磁盘转数为r(转/秒),每条磁道容量为N个字节,则数据 传输率为D = rN
  3. 磁盘地址
    1. 主机向磁盘控制器发送寻址信息,磁盘的地址一般为
    2. image-20240428212205703
  4. 硬盘的工作过程
    1. 硬盘的主要操作是寻址,读盘,写盘。每个操作都对应一个控制字,硬盘工作时,第一步是去控制字,第二步是执行控制字。
    2. 硬盘属于机械式部件,其读写 操作是串行的,不可能在同一时刻既读又写,也不可能在 同一时刻读两组数据或写两组数据。

磁盘阵列

  1. RAID(廉价冗余磁盘阵列)是将多个独立的网络磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储,并行访问,具有更好的存储性能,可靠性和安全性。
  2. RAID通过同时使用多个磁盘,提高了传输率;通过多个磁盘上并行存取来大幅提高存储系统的数据吞吐量;通过镜像功能,可以提高安全可靠性;通过数据校验,可以提供容错能力
  3. image-20240428213711969

总结

image-20240428213835054

固态硬盘

image-20240429143716398

Cache缓存

Cache工作原理

  1. image-20240429150202001
  2. 空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在使用的信息在==存储空间上是近邻的==
  3. 时间局部性:在最近的未来要用到的信息,很可能是==现在正在使用的信息==

性能分析

  1. 设tc为访问一次Cache所需时间,tm为访问一次主存所需时间:
  2. 命中率H:CPU欲访问的信息已在Cache中的比率
  3. 为命中率:M = 1- H
  4. Cahe——主存 系统的平均访问时间t为:t = Htc+(1 - H)(tc + tm),即先访问Cache,若Cache未命中再访问主存
  5. 或t = Htc + (1 - H)tm,即同时访问Cache和主存,若Cache命中即立即停止访问主存,这种方法访问时间可能更短
  6. image-20240429151408980

有待解决的问题

  1. 基于局部性原理,不难想到,可以把CPU目前访问的地址”周围”的部分数据放到Cache中,如何界定”周围”?
  2. 答:将主存的==存储空间“分块”==,如:每1KB为一块。==主存与Cache之间已“块”为单位进行数据交换==。
  3. image-20240429152049887
  4. 每次被访问的主存块,一定会被立即调入Cache

总结

image-20240429152538072

Cache和主存的映射关系

image-20240429153022414

全相联映射(随意放)
  1. 假设某个计算机的主存地址空间大小为256MB,按字节编址,其数据Cache有8个Cache行,行长为64B.
  2. :star2:image-20240429154020625
直接映射

主存块在Cache中位置 = ==主存块号 % Cache总块数==

image-20240429154653590

image-20240429154709457

:star:image-20240429154834424

组相联映射(可放到特定分组)

组相联映射,==所属分组 = 主存块号%分组数==

image-20240429155222350

:star2:image-20240429155353523

总结

image-20240429155631188

Cache替换算法

image-20240429160449097

随机算法(RAND)
  1. 随机算法——若Cache已满,则随机选择一块替换。
  2. 优缺点:实现简单,但是完全没考虑局部性原理,命中率低,实际效果不稳定。
  3. image-20240429160938204
先进先出算法(FIFO)
  1. 先进先出算法——若Cache已满,则替换最先被调入Cache的块
  2. 优缺点:实现简单,最开始按#0#1#2#3放入Cache,之后轮流替换#0#1#2#3,FiFO依然没有考虑局部性原理,最先被调入Cache的块也有可能是被频繁访问的。
  3. image-20240429161606001
近期最少使用算法(LRU)
  1. 近期最少使用算法——为每一个Cache块设置一个==“计数器”==,用于记录每个Cache块已经有多久没被访问了。当Cache满后==替换”计数器”最大的==。
  2. image-20240429162830924
  3. 优缺点:基于“局部性原理”,近期被访问过的主存块,在不久的将来也可能被再次访问,因此淘汰最久没被访问过的块是合理的。LRU算法的设计运行效果优秀,Cache命中率高。若被频繁访问的主存块数量>Cache行的数量,则可能发生“抖动”,如{1,2,3,4,5,1,2,3,4,5,1,2…}
最不经常使用算法(LFU)
  1. 最不经常使用算法(LFU)——为每个Cache块设置一个“==计数器==”,用于记录每个Cache块被访问过几次。当Cache满后==替换“计数器”最小的==
  2. image-20240429163837251
  3. 优缺点:LFU算法——曾经被继承访问的主存块在未来不一样定会用到(如:微信视频聊天相关的块),并没有很好低遵循局部性原理,因此实际运行效果不如LRU。
总结

image-20240429164119030

Cache写策略

image-20240429165259564

写命中
  1. 写回法——当CPU对Cache写命中时,只修改Cache的内容,而不逻辑写入主存,只有当此块被换出时才写回主存,减少了访问主存的次数,但存在数据不一致的隐患。
  2. image-20240429165807171

全写法(写直通法)——当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲,访问主存次数增加,速度变慢,但是更能保证数据的一致性。

image-20240429170044721

使用写缓冲,CPU写的速度很快,如写操作不频繁,则效果很好。若写操作很频繁,可能会因为写缓冲饱和而发生阻塞

image-20240429170343237

写不命中
  1. 写分配法——当CPU对Cache写不命中时,把主存中的块调入Cache,在Cache中修改。通常搭配==写回法使用==。
  2. 写回法——当CPU对Cache写命中时,只修改Cache的内容,而不逻辑写入主存,只有当此块被换出时才写回主存
  3. image-20240429170721226

非写分配法——当CPU对Cache写不命中时只写入主存,不调入Cache,搭配全写法使用。

image-20240429170917348

多级Cache

现代计算机常常采用多级Cache,离CPU越近的速度越快,容量越小,离CPU越远的速度越慢,容量越大。

image-20240429171212738

总结

image-20240429171247655