前言

  • 在认真学习计算机组成原理之前,先看了期末速通的课程,大致了解了一下计算机组成原理上的内容。简单来说就是介绍计算机硬件、硬件的运行机制、硬件的一些组装思想以及指令集的内容,更简单的概括就是计算机的存储与外设以及指令集。
  • 硬件有介绍:CPU、内存、磁盘、总线
  • 指令集:一般是介绍MIPS、RISC
  • 使用教材:
    • 原本是使用机械工业出版社的《计算机组成原理》,这本书在国内被拆分为两本书分别是《计算机组成原理》(介绍指令集)、《计算机存储与外设》(介绍硬件),而且存储与外设这本书好像也没出售了(虽然学校图书馆还有,但是不考虑了)。
    • 机械工业出版社还有一本《计算机组成与设计硬件/软件接口》
    • 还有就国内408使用的唐朔飞老师的《计算机组成原理》(目前还不知道我们计组上课是用什么教材)
+ 认真看的视频是哈工大刘宏伟老师的计算机组成原理课程,对应教程是唐老师的教材

概论

计算机的硬件总览

  • 现在的计算机硬件一般都有:主板、CPU、内存、显卡、硬盘

计算机历史与应用

计算机的发展史

  • 计算机的发展史是以硬件的发展作为阶段性划分

image-20240824102823164

  • 第一代电子管计算机
    • ENIAC的出现不但实现了制造一台通用计算机的目标,而且标志计算工具进入了一个崭新的时代,是人类文明发展史中的一个里程碑。
    • ENIAC于1955年正式退役
    • 在这十多年的时间里,计算机的性能并未出现奇迹般的提高,而且占用空间也很大,耗电量也大
  • 第二代晶体管计算机
    • 1947年在贝尔实验室成功地用半导体作为基片,制成了第一个晶体管。
    • 进入20世纪五十年代后,出现了以晶体管代替电子管的革命,使得计算机性能大大提高
    • 例如:IBM 700/7000系列
  • 第三代集成电路计算机:小规模集成电路和中规模集成电路
    • 随着1958年微电子学的深入研究,特别是新的光刻技术和设备的成熟,为计算机的发展又开辟了集成电路时代
    • 例如:IBM的System/360和DEC的PDP-8
  • 之后的就是大规模集成电路和超大规模集成电路了

计算机硬件的发展史

  • 摩尔定律:是由英特尔公司的创始人之一戈登·摩尔(Gordon Moore)于1965年提出的一个重要观察和预测。摩尔定律描述了集成电路(IC)技术的发展趋势

    • 晶体管数量的增长:摩尔定律最初的表述是:集成电路上可容纳的晶体管数量每隔大约18至24个月会翻一番。换句话说,集成电路的计算能力每两年左右会翻一番。
    • 性能与成本的提升:随着晶体管数量的增加,计算能力增强,单位计算成本降低。也就是说,计算性能提升的同时,制造成本相对降低,从而使得电子产品越来越强大且价格更亲民。
    • 技术进步的推动:摩尔定律推动了半导体行业的技术进步和创新,促进了计算机硬件的发展,并对其他领域(如通信、消费电子等)产生了深远的影响。
  • 集成电路技术把计算机的控制单元和算术逻辑单元集成到一个芯片上,制成了微处理器芯片。

    • 1971年,美国Intel公司31岁的工程师霍夫研制成世界上第一个4位的微处理器芯片4004
    • 随后微处理器经历了4位、8位、16位、32位和64位几个阶段的发展
  • 半导体存储器的研制也在发展

    • 1970年,Fairchild制作了第一个存储芯片,一个磁心大小,能保存256位二进制信息
    • 1974年后经历了1K位,4K位,16K位,64K位,256K位,1M位,4M位,16M位,64M位,1G位…
  • 微处理器芯片和存储器芯片出席后,微型计算机也随之问世。例如:4004微处理器制成MCS-4微型计算机等

  • Intel公司的典型微处理产品

微处理器类型 处理位数 时间 晶体管个数
8080 8位 1974
8086 16位 1979 2.9万个
80286 16位 1982 13.4万个
80386 32位 1985 27.5万个
80486 32位 1989 120.0万个
Pentium 64位 1993 310.0万个
Pentium Pro 64位 1995 550.0万个
Pentium II 64位 1997 750.0万个
Pentium III 64位 1999 950.0万个
Pentium IV 64位 2000 4200.0万个

计算机软件的发展史

  • 计算机软件技术的兴起和发展,包括三个内容,编程语言、系统软件、软件发展
  • 软件发展的特点:开发周期长,制作的成本非常昂贵,检查软件产品质量的特殊性

编程语言

  • 编程语言分为机器语言,汇编语言,高级语言

  • 计算机发展起初是机器语言

    • 机器语言是面向机器,是二进制的代码
    • 不同的机器,指令集不一样,机器语言也是不一样的
    • 早期计算机每设计一台新机器,就有一个新的指令集,在这台机器上运行的软件,如果想放在另外一台机器上执行就需要重新写程序。而且这一串的0、1代码对程序员来说很难进行记忆
  • 之后就发展出汇编语言

    • 汇编语言只是将二进制代码转换为助记符,所以和机器语言一样也是面向机器
    • 不同的机器有不同的汇编语言,但是汇编语言的符合比0、1二进制代码更容易记忆
  • 后来就发展出了高级语言

    • 高级语言与计算机的硬件指令集关系不大,是面向问题的
    • 使用高级语言编程不需要了解计算机的指令系统
    • 高级语言的发展阶段
      • 第一阶段的代表语言是1954年问世的FORTRAN,主要面向科学计算和工程计算
      • 第二阶段可视为结构化程序设计阶段,其代表是1968年问世的Pascal语言,它定义了一个真正的标准语言,按严谨的结构化编程,具有丰富的数据类型,写出的程序易读懂、一查错
      • 第三阶段是面向对线程序设计阶段,其代表语言是C++。

系统软件

  • 系统软件帮助计算机管理软硬件的资源,使程序员编程和完成一些功能更方便
  • 这些软件包括语言处理程序(汇编程序、编译程序、解释器),操作系统(DOS、UNIX、Windows、Linux、Kylin Linux),服务性程序(装配、调试、诊断、排错),数据库管理系统(数据库和数据库管理软件),网络软件

计算机的应用

  • 科学计算和数据处理
    • 科学计算:在天文学、量子化学、空气动力学和核物理学等领域都要依靠计算机进行复杂的运算。计算量大、数值变化范围大。
    • 数据处理:大银行、大公司、大企业的财务、人物、物料等处理。
  • 工业控制和实时控制
    • 工业控制:实现工业自动化等。
    • 实时控制:无人驾驶等的实现。
  • 网络技术
    • 电子商务:天猫、淘宝等电商。
    • 网络教育:网课等。
    • 敏捷制造:客制化就是为敏捷制造的一种重要应用场景
  • 虚拟现实:利用计算机模拟和产生一个虚拟的世界,使用者可以通过听觉、视觉、触觉这些感官,感受虚拟环境。例如飞行训练系统
  • 办公自动化和管理信息系统
  • CAD/CAM/CIMS:现代制造业中关键的技术和系统。
    • CAD(计算机辅助设计):是一种使用计算机技术进行设计和文档绘制的过程。用于各种设计领域,如建筑、机械、电子等。
    • CAM(计算机辅助制造):是利用计算机技术来控制制造过程的系统。CNC 加工、激光切割等。
    • CIMS(计算机集成制造系统):是一种将 CAD、CAM 和其他制造技术集成在一起的系统,旨在实现制造过程的全面自动化和优化。
  • 多媒体技术
  • 人工智能:在现如今已经展现其厉害

计算机的展望

  • 计算机具有类似人脑的一些超级智能功能:要求计算机的速度要足够快

  • 芯片集成度的提供受以下三方面的限制:

    • 芯片集成度受物理极限的制约
    • 按几何数递增的制作成本
    • 芯片的功耗、散热、线延迟
  • 替代传统的硅芯片

    • 光计算机:目前已经实现了利用光子取代电子进行运算和存储
    • DNA生物计算机:通过控制DNA分子间的生化反应
    • 量子计算机:利用原子所具有的量子特性

计算机的性能指标

存储器的性能指标

  • MAR:反映存储单元的个数,其表示存储地址
  • MDR:每个存储单元的大小,也就是一个存储单元可以存放多少二进制比特位
  • 那么总容量=MAR×MDR(位)或者总容量=MAR(字节)
1
2
例如:MAR为32位,MDR为8位,则总容量 = 2^32^ * 8 = 4GB
2^10^ = K; 2^20^ = M ; 2^30^ = G; 2^40^:T

image-20240826083000883

  • 2的n次方数建议记住前10次方

image-20240826083611560

CPU的性能指标

  • 下图为一下网店售卖CPU,CPU中的一些信息,除了标明CPU的型号如:i9-9900KF,还会标明2.9GHz和CPU的核数与线程数,这些都是衡量CPU性能的一些指标

image-20240826083835155

CPU主频:CPU内数字脉冲信号震荡的频率

  • 单位为赫兹(Hz),主频越高,CPU执行指令的速度越快

  • CPU时钟周期:每个脉冲信号的时间,单位微秒、纳秒

  • CPU主频和时钟周期的关系为:互为倒数

image-20240826084354295

CPI:执行一条指令所需的时钟周期数

  • 同一个CPU执行不同的指令,CPI可能相同也可能不同
  • 同一个CPU执行相同的指令,CPI也有可能不同
  • 一般讨论的是平均执行周期
  • 计算公式为:

image-20240826084727456

  • 一个程序运行的时间:

image-20240826085105348

  • 例如:

image-20240826084817595

1
2
3
4
频率f = 1000Hz
那么周期T = 0.001s
所以执行一条指令需要花费3×0.001s=0.003s
所以该程序要在CPU上执行100×0.003=0.3s

IPS:每秒执行多少条指令

  • 如果知道CPI,即执行一条指令所需要的时间,那么就可以计算出IPS,即每秒可以执行多少条指令

image-20240826085439082

  • KIPS:每千秒执行多少条指令
  • MIPS:每百万秒执行多少指令

FLOPS:每秒执行多少次浮点运算

  • 计算机处理浮点数(即具有小数点的数值)的能力和速度

  • 浮点运算器:现代计算机通常内置浮点运算器(FPU),是专门用于执行浮点运算的硬件

  • 浮点数表示:计算机内部使用二进制来表示浮点数。最常见的浮点数表示方法是IEEE 754标准,它定义了单精度浮点数(32位)和双精度浮点数(64位)的表示方法

系统整体的性能指标

  • 数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
  • 吞吐量:指系统在单位时间内处理请求的数量
    • 它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出活存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存,因此系统吞吐量主要取决于主存的存取周期
  • 响应时间:指从用户向计算机发生一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间
    • 通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)

动态测试

  • 基准程序:是用来测量计算机处理速度的一种实用程序,以便被测量的计算机性能可以与运行相同程序的其他计算机性能进行比较。
    • 比如“跑分软件”就是一个基准程序

注意

  • 主频高的CPU不一定比主频低的CPU快
  • 基准程序的运行结果不能完全说明问题

系统总线

总线的基本概念

  • 总线的引入:

    • 计算机的外设很多,但是都是分散的,这时我们就需要利用总线,将计算机各个外设互联在一起,这样才构成了计算机这样一个整体。
    • 总线的连接方式很多总,但是要考虑到性能、连接复杂度等方面,所以需要找到比较合适的连接方式
  • 总线(bus)的概念:

    • 总线是连接各个部件的信息传输线,是各个部件共享的传输介质
  • 总线上信息的传送

    • 串行:发送方把要传输的信息一位一位的放入总线,然后接收方再一位一位的进行接收(传输距离远,一般用于网络)
    • 并行:发送方把要传输的信息多位同时放入总线,然后接收方再多位位进行接收(传输距离近,一般用于计算机内部)

总线的结构

  • 总线的结构有:
    • 单总线结构
    • 双总线结构

单总线结构

  • 总线是信号的公共传输线,在任何一个时刻只能有一对部件在使用,那么总线就可能成为一个瓶颈
    • 比如:某个IO设备与主存直接进行数据传输,那么CPU就无法与主存之间进行数据传输,这样就会有延迟

image-20240826092808906

双总线结构

  • 面向CPU的双总线结构:CPU运行的时候,指令来自于主存,数据也来自于主存,这样主存与CPU的总线利用的很频繁,就单独使用一个总线专门用来将CPU和主存互联
  • 存在问题:如果IO设备要向主存存储数据或者指令,但是主存和IO设备没有直接连接,需要利用CPU中转才能进行信息传输,这样CPU执行的指令还是会被打断

image-20240826093835966

  • 以存储器为中心的双总线结构:CPU、主存有专用总线,CPU、主存与外部设备可以直接传输数据

image-20240826094231175

总线的分类

image-20240826095335995

总线特性及性能指标

  • 总线的物理实现
    • 总线是焊接在主板的内部,我们看不到的地方,而主板为其他设备提供了插槽,这样其他设备插入插槽,通过主板上的总线,便可以进行数据等传输

image-20240826095635644

  • 主板实物

image-20240826105259403

总线的特性

  • 总线的特性包括机械特性、电气特性、功能特性、时间特性

机械特性

  • 机械特性包括:尺寸、形状、管脚数及排列顺序

电气特性

  • 电气特性包括:
    • 信号传输方向:数据线双向的,地址线单向的
    • 有效的电平范围,什么样的电压范围是高电平,什么样的电压范围是低电平

功能特性

  • 每个传输线的功能:地址、数据、控制

时间特性

  • 时间特性:信号的时序关系

总线的性能指标

  • 总线宽度:数据线的根数,数据进行传输同时可以传输多少位。
  • 标准传输率:每秒传输的最大字节数(MBps)

总线标准

  • 现在制造计算机是分厂商分别制造相关硬件,再组合起来的。所以应该有一套标准,总线也是有这样的一个标准。
  • 总线的一些标准ISA(工业标准体系结构)、EISA(ISA一个扩展,兼容ISA)、VESA(视频电子标准协会)、PCI(外设部件互联标准)、AGP(Intel在1996年推出的接口,点对点的局部总线)、RS-232、USB(通用串行总线)
  • 这些总线详细的可以课后看资料

image-20240828133939575

总线的结构

五种总线结构

  • 总线结构包括单总线结构、双总线结构、三总线结构、四总线结构

  • 单总线结构:导致问题:总线成为系统瓶颈

image-20240828134450950

  • 双总线结构:
    • 这个结构的通道是一种特殊类型结构简单的处理器,专门用于输入输出操作。通常情况下通道程序由操作系统编写。

image-20240828134548638

  • 三总线结构:IO总线、DMA(直接存储器范围)总线即外部设备直接范围内存、主存总线
    • 可以有多个高速外设,他们的IO接口都是连接到DMA总线上

image-20240828134905262

  • 另一种三总线结构:
    • CPU性能的提高比内存的存储延迟改善要快得多,为了解决这个问题现代计算机在设计的时候增加了一个小容量的高速缓存Cache。CPU运行时的指令主要是从Cache中获取
    • 多种速度类型的设备都连接到扩展总线上,这会影响外部设备工作速度

image-20240828135021933

  • 四总线结构:

image-20240828135556676

总线结构举例

  • 传统微型机总线结构

image-20240828135813222

  • VL-BUS局部总线结构

image-20240828135908297

  • PCI总线

image-20240828140026052

  • 多层PCI总线结构

image-20240828140134358

总线控制(重难点)

  • 总线上连接了多个设备,设备之间需要进行通讯这就需要解决两个问题:
    • 总线的判优控制:多个设备可能同时发出占用总线的请求,谁先用(总线在同一时刻只能提供一个设备使用)
    • 总线的通信控制:一对设备占用总线后,如何完成设备在总线的通信过程

总线的判优控制

  • 基本概念:
    • 根据是否能提出总线请求将设备分成两类:
      • 主设备(模块):对总线有控制权
      • 从设备(模块):响应从主设备发来的总线命令
      • 注意有些设备既可以作为主设备也可以作为从设备
    • 总线判优控制方式可以分为两类
      • 集中式:链式查询、计数器定时查询、独立请求方式(主要是介绍这三种方式)
      • 分布式

链式查询方式

  • 总线控制部件是集中在一起的
    • 数据线:主从设备建立通讯后传输数据
    • 地址线:主从设备建立通讯后寻找要传输的数据
    • BR:总线请求,所有的设备都从这条线对总线控制部件发出总线通信请求
    • BS:总线忙,当总线从空闲变成正在进行主从设备通信时,BS的电平就会与之前相反(可能变高电平或者是低电平),表示总线正在通信,这时其他设备无法请求总线通信
    • BG:总线授权线,链式查询方式中的链式就体现在这根线中。BG这条线是一个接着一个向下进行查询,先查询接口0,再查询接口1…
  • 该方式的特点:
    • BG授权顺序也就是优先级顺序。而且这个优先级顺序已经被固定,那么优先级靠后的设备提出的总线占用请求一直不会响应
    • 对电路故障非常复杂,尤其是BG总线处,如果某个IO接口的电路损坏就会导致后面的IO接口始终得不到总线授权,并且授权速度比较慢
    • 结构特别简单,与判优控制有关的线就三条,判优算法也十分简单,进行可靠性设计时容易实现
  • 下面为查询具体过程

image-20240828151523191

  • 当有设备提出总线占用请求时,请求信号就会通过BR传入总线控制部件,当请求不只一个时,BG总线就需要进行查询

image-20240828152339074

  • BG总线查询,先查询IO接口0,查看其是否进行总线请求,如果IO接口0提出总线请求,这时IO接口0就可以使用总线了
  • 但是在该图中IO接口0没有提出总线请求,所以BG线又会接下去检查,查看IO接口1是否进行了总线请求。IO接口1确实进行了总线请求,那么接口1获得了总线使用权

image-20240828152526311

  • 获得总线使用权后,接口1就会将总线忙的信号传给总线控制部件

image-20240828152854034

计数器定时查询方式

  • 该方式同样有数据线和地址线
  • 不同的是,该方式没有BG线,但是有设备地址线并且在总线控制部件里面有计数器,这根线也表明了该方式名称的来源。
  • 该计数器与设备地址线相连接,该计数器的初值可以是0也可以是其他值
  • 特点:
    • 优先级确定很灵活,设定每次查询时计数器都从0开始。也可以设定计数器从上一次停止计数的值开始查询,这个就会变成循环优先级。也可以通过软件对优先级进行设定。
    • 与链式查询方式相比,该方式需要的线更多。

image-20240828154608344

  • 具体过程如下:

  • 当设备发出总线控制请求时,该请求也是通过BR发送

image-20240828154753744

  • 在总线控制部件能够响应、可以让出总线使用权的情况下,计数器就会被启动

image-20240828154931209

  • 计数器的值通过设备地址线,向外进行输出,当计数器为0时,就对IO接口0进行查询,查询IO接口0是否有请求

image-20240828155109761

  • 当IO接口0没有请求,计数器就会进行加1操作,然后对IO接口1进行查询,查询IO接口1是否有请求。如果IO接口1有请求,IO接口1就会通过BS这根线进行响应

image-20240828155240877

独立请求方式

  • 每个设备都有独立的BR和BG线,优先级是由排队器进行设定。优先级的设定就非常灵活
  • 这种方式独立线需要的非常多

image-20240828155834213

  • 具体过程如下:
  • IO接口线进行总线请求,将请求送入控制总线当中,总线控制部件通过排队器进行优先级排队后,他会对某一个IO设备进行应答

image-20240828160025455

总线的通信控制

  • 目的:解决主从设备通信协调配合的问题

  • 总线的传输周期:主设备和从设备之间完成一次完整的可靠的通信需要的时间

  • 总线传输周期的选定:对多个速度不同的模块,要选择速度最慢的模块进行统一的数据传输

  • 应用在总线长度短,各个模块存取时间大致一致的情况

  • 主要解决四个阶段:

    • 申请分配阶段:主模块申请,总线仲裁决定
    • 寻址阶段:主模块向从模块给出地址命令
    • 传输阶段:主模块和从模块交换数据
    • 结束阶段:主从模块撤销有关信息
  • 总线通信的四种方式

    • 同步通信:由统一时标控制数据传送
    • 异步通信:采用应答方式,没有公共时钟标准
    • 半同步通信:同步异步结合
    • 分离式通信:充分挖掘系统总线每个瞬间的潜力

同步式数据输入输出

  • 同步输入的特征需要有一个定宽,定距的图标来控制整个数据的传输过程,并且在固定的时间点上要给出固定的操作
  • 要完成数据输入的话还需要地址信号、读信号、数据输入
  • 例如下图:整个总线周期,有四个时钟周期,那么这四个时钟周期就可以完成一个完整的可靠的数据传输

image-20240828162726130

  • 下面是同步式数据输入的过程
  • 在第一个时钟周期的上升沿,主设备必须要给出地址信号
  • 在第二个时钟周期的上升沿,主设备必须给出读命令信号
  • 在第三个时钟周期的上升沿到达之前,从设备必须要同过数据总线给出数据信号
  • 第四个时钟周期的上升沿,数据信号和控制信号就可以撤销了
  • 在第四个时钟周期结束时,地址信号也撤销了

image-20240828163233222

  • 下面是同步式数据输出的过程
  • 在第一个时钟周期的上升沿,要给出地址信号
  • 在第一个时钟周期的下降沿,要给出数据
  • 在第二个时钟周期的上升沿,要给出写命令
  • 在第三个时钟周期的上升沿,做写入操作
  • 第四个时钟周期的上升沿,撤销数据、撤销写命令
  • 在第四个时钟周期结束时,地址信号也撤销了

image-20240828163558469

异步通信

  • 主设备发起通信,从设备受主设备控制。
  • 与同步相比:
    • 没有定宽定距的时钟
    • 多出两条线,一条是请求线由主设备发出请求信号,另一条是应答线由从设备发出应答信号
  • 下面是具体过程:
    • 在这个过程中从设备不管有没请求收到信号,主设备在一定延迟过后都会撤销请求信号;主设备不管有没接收到应答信号,从设备在一定延迟后都会撤销应答信号。这就是不互锁
    • 这种不互锁的方式通信的可靠性就比较低

image-20240828164702411

  • 半互锁方式:
    • 主设备会等待应答信号,但是从设备过一段时间后就会取消应答信号。如果出于某种原因,主设备没有收到应答信号,那么主设备可能会一直发请求信号

image-20240828182651946

  • 全互锁方式:

image-20240828183236489

半同步通信

  • 半同步通信是同步和异步相结合

  • 同步:发送方用系统时钟前沿发信号,接收方用系统时钟后沿判断、识别

  • 异步:允许不同速度的模块和谐工作,增加了一条“等待信号”,该信号由从设备给出

  • 下图是:输入数据为例子的半通信时序

  • 在第一个时钟周期T1开始的时候(上升沿),主设备给出地址信号

image-20240828183926693

  • 在第二个时钟周期开始的时候,主设备需要给出读信号

image-20240828184046503

  • 在第三个时钟周期开始之前,如果从设备不能把数据准备好,就要发送一个等待信号(低电平),让主设备进行等待,这样就可以在T3周期和T2周期直接插入n个Tw周期

image-20240828184306747

  • 在下一个时钟周期开始之前,主设备依然要检测wait信号,wait信号依然是低电平,就再插入一个等待周期

image-20240828184423203

  • 然后在下一个时钟周期之前,wait信号已经由低电平变为高电平,那么就可以进入T3周期

image-20240828184539775

  • 第四个时钟周期开始时读命令信号和数据信号从总线撤销

image-20240828184659185

  • 第四个时钟周期结束,地址信号也从总线撤销

image-20240828184732324

  • 上述三种通信的共同点:
    • 主模块发地址、命令。占用总线
    • 从模块准备数据。不占用总线(总线空闲)
    • 从模块向主模块发数据。占用总线

分离式通信

  • 将一个总线的传输周期分为俩个子周期
    • 子周期1:主模块申请占用总线,使用完后即放弃总线使用权
    • 子周期2:从模块申请占用总线,将各种信息送至总线上
    • 在这两个周期之间的等待期,总线的使用权是让出的。
  • 特点:
    • 各个模块有权申请占用总线
    • 采用同步方式通信,不等对方回答
    • 各模块准备数据时,不占用总线
    • 总线被占用时,无空闲