计算机组成原理-3-系统总线

3. 系统总线

文章目录

  • 3. 系统总线
    • 3.1 总线的基本概念
    • 3.2 总线的分类
    • 3.3 总线特性及性能指标
    • 3.4 总线结构
    • 3.5 总线控制
      • 3.5.1 总线判优控制
      • 3.5.2 总线通信控制

  • 本笔记参考哈工大刘宏伟老师的MOOC《计算机组成原理(上)_哈尔滨工业大学》、《计算机组成原理(下)_哈尔滨工业大学》。
  • 或者是B站《计算机组成原理(哈工大刘宏伟)135讲(全)高清》,大家一起听比较热闹。
  • 中文教材:《计算机组成原理(第二版)-唐朔飞.pdf》、《学习指导与习题解答(第2版)-唐朔飞.pdf》
  • 本篇笔记对应课程第三章(下图加粗)。

3.1 总线的基本概念

  首先来讨论为什么需要总线?计算机基本的硬件包括CPU、内存条、固态硬盘、越来越多的io设备,这些器件之间显然需要相互通信才能配合工作。为了实现相互通信,可以采用“分散连接”的方法,把需要通信的器件单独连接起来,好处是通信互不干扰,但连接线的数量会随着设备的增多指数增长,并且新设备也难以加入;更好的方法就是设立一个公用的通信“总线”,谁需要通信谁就占用总线、其他人等待,实际上大量的io之间很少相互通信,所以这样设置更加合理,可扩展性非常好。

图3-1 串行、并行传输示意图

参考视频:【官方双语】并行和串行有啥区别?

  总线是连接各个部件的信号传输线,是各个部件共享的传输介质。总线上信息的传送方式有“串行”、“并行”两种。由于并行传输有信号间干扰、信号同步、成本高等问题,所以并行传输速率不一定比串行传输快,通常情况下传输距离较长时(外部IO)串行传输、传输距离较短时(主板内)并行传输。下面来看3种总线结构的举例:

图3-2 单总线结构、面向CPU的双总线结构、以存储器为中心的双总线结构
  1. 单总线结构:所有设备都连接到一条总线上,是最简单的总线结构。缺点是当“主存”和“io设备”进行数据输入/输出时,“CPU”无法和“主存”通信导致执行程序暂停,会大大减低CPU的运行效率。另外,如果设备很多,总线就会很长,主存和远端设备进行数据传输的时候时间延迟也会很长。当然,也存在“总线争用”问题。
  2. 面向CPU的双总线结构:“主存”只和“CPU”连接,好处是“CPU”运行程序时的效率大大提升;缺点是“主存”无法和“io设备”直接通信,需要进行数据输入/输出时,“CPU”运行程序还是会被打断。
  3. 以存储器为中心的双总线结构:如上图所示,在“单总线”的基础上,添加一个“CPU”和“主存”之间的存储总线,也就是专门开辟了“CPU”和“主存”的总线,兼顾了程序运行/数据传输的功能。但实际上,目前的内存条还是会分时复用这两条总线,相信未来硬件技术会突破这一问题。

3.2 总线的分类

图3-3 总线的分类

根据总线的位置进行分类:

  1. 片内总线:芯片内部的总线。
  2. 系统总线:计算机各部件之间的信息传输线。再根据传输的信号不同,分为:
  • 数据总线:双向,与机器字长、存储字长有关。通常,数据总线宽度≤机器字长=存储字长。
  • 地址总线:单向,由CPU或主设备发出,与存储地址、I/O地址有关。
  • 控制总线:输出一般是系统的各个部件传输控制信号、自己的状态信号,比如存储器读、存储器写、总线允许、中断确认等。输入一般是外部设备送给CPU,如中断请求、总线请求等。
  1. 通信总线:用于计算机系统之间计算机系统与其他系统(如控制仪表、移动通信等)之间的通信。

3.3 总线特性及性能指标

图3-4 总线的物理实现

  上图给出了总线的物理实现。可以看到总线就是刻印在主板上,然后在主板的某些位置预留出接口,就可以将不同的器件插在主板上。为了实现插板和总线的有效连接,就需要规定一些总线特性

  1. 机械特性:尺寸、形状、管脚数及排列顺序等。
  2. 电气特性:信号传输方向、有效的电平范围。比如数据线是双向的,地址线是单向的。
  3. 功能特性:每根传输线要实现的功能,比如地址信号、数据信号、控制信号、状态信号。
  4. 时间特性:信号的时序关系,保证电路正常工作。

而在使用总线时,我们最关心的其实是总线的性能指标

  1. 总线宽度:数据线的根数。
  2. 标准传输率:每秒传输的最大字节数(MBps)。
  3. 时钟同步/异步:同步、不同步。注意“不同步”≠“异步”。
  4. 总线复用:地址线与数据线复用,减少芯片的管脚数,进一步减小芯片的体积。比如8086就是20根地址线,数据线复用其中的16根,使用时先传输地址、再传输数据。
  5. 信号线数:地址线、数据线和控制线的总和。
  6. 总线控制方式:突发、自动、仲裁、逻辑、计数。
  7. 其他指标:负载能力(挂载多少io设备)。

  现代计算机比较复杂,计算机各部件的生产、制造、设计越来越专业化,于是这时就要有一个“约定”,使得不同厂家生产的不同器件可以组装在一起,形成一个协调运行的计算机硬件系统。其中对于总线的约定,也就是“总线标准”。“总线标准”也在从简单的、低速的总线,逐渐向高速的、可扩展能力强的总线不断的发展,如下表:

表3-1 不同的总线标准
  • ISA(Industry Standard Architecture,工业标准体系结构):是为PC/AT电脑而制定的总线标准,现已被淘汰。
  • EISA(Extended ISA):是对ISA总线的扩展,兼容ISA总线,现已被淘汰。
  • VESA(Video Electronics Standards Association,视频电子标准协会):由140多家成员公司组成的非盈利国际组织,致力于制订并推广个人计算机和小型工作站视频设备显示相关标准。
  • PCI(Peripheral Component Interconnect,外设部件互连标准):PCI是独立于处理器的结构,形成了一种特殊的中间缓冲器式的设计方式,将CPU和外围设备分隔开,使得外部设备的时钟频率不会影响处理器性能。是个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽。现在已经发展为PCIE总线。
  • AGP(Accelerated Graphics Port,加速图像接口):由PCI发展而来。是英特尔推出的一种3D标准图像接口,是点对点的局部总线,主要是为了连接控制芯片和显卡,它能够提供四倍于PCI的效率。
  • RS-232(Recommand Standard-232):是常用的串行通信接口标准之一。
  • USB(Universal Serial Bus,通用串行总线):2024年甚至已经演进出了 USB 80Gbps 标准。

参考视频:USB接口全科普2024版:命名终于变简单了,但厂商不愿意用,雷电5我成替身了?

3.4 总线结构

下面在“3.1-总线的基本概念”基础上,继续分析一些更复杂的多总线结构

图3-5 双总线结构、三总线结构1、三总线结构2、四总线结构
  • 单总线结构:见图3-2。所有设备连接到一条总线上。此时总线会成为系统的瓶颈。
  • 双总线结构:除了前面讲的“面向CPU的双总线”、“以存储器为中心的双总线”,还可以如上图分成主存总线、I/O总线,然后通过“通道”实现 IO 和 CPU/主存 之间的交互。这个“通道”是一个结构简单的专用处理器,一般来说有自己的控制器、指令系统,并且通常由操作系统来编写“通道程序”,而不是人工。
  • 三总线结构1:在“面向CPU的双总线结构”的基础上,增加一条 主存和部分高速IO 直接相连的“DMA总线(Direct Memory Access,直接存储器访问)”。
  • 三总线结构2:随着技术的发展,CPU性能逐渐超过主存性能,于是需要额外增加一个小容量高速cache(如CPU片内缓存)辅助CPU运算,使用“局部总线”与CPU连接。“系统总线”则主要和“扩展总线”相连,外部设备的扩展则全部交给“扩展总线”,极大的增强了外部设备的扩展性,但是会限制某些高速外设的性能
  • 四总线结构:解决了上述“三总线结构2”的问题。也就是将外部设备按照传输速率分开,高速的外设直接连接到“高速总线”上,低速外设还是全部交给“扩展总线”。

下面来看看实际设备中的总线结构

图3-6 传统微型机总线结构、VL-BUS局部总线结构、PCI总线结构、多层PCI总线结构
  • 传统微型机总线结构:双总线,将“系统总线”和“IO总线”分离,非常简单。CPU和存储器通过“系统总线”连接,速度较快;剩下所有外设全部连接到“IO总线”上;“系统总线”通过“标准总线控制器”和“IO总线”相连,实现CPU/主存对外设的控制。
  • VL-BUS局部总线结构:将“高速外设总线”和“低速外设总线”进行分离。
  • PCI总线结构:和上一个结构类似。只不过“高速外设总线”使用PCI总线。
  • 多层PCI总线结构:若总线上挂载设备过多,PCI总线驱动能力不足,于是使用“PCI桥”实现PCI总线的扩展。

3.5 总线控制

本章的重点和难点,主要考虑两个问题:

  1. 总线判优控制:多个设备可能同时发出“占用总线”的请求,这时总线就需要判断哪个设备具有使用的优先权。
  2. 总线通信控制:当两设备占用总线后,如何使用总线进行通信,保证通信过程的正确性。

3.5.1 总线判优控制

图3-7 总线判优控制方法

  首先要明确的是,总线上的主设备(模块)对总线有控制权,从设备(模块)则是响应从主设备发来的总线命令。当然,一条总线上可以有多个主设备。上图给出“总线判优控制方法”:

  • 集中式:将“判优逻辑”放在一个部件上,比如CPU。下面介绍集中式的三种判优逻辑。
  • 分布式:将“判优逻辑”分布到各个设备上。
图3-8 三种集中式的判优逻辑
  • 链式查询:距离优先,优点是结构最简单。所有部件共用BR请求总线,主设备收到请求后,逐个遍历从设备,直到找到第一个提出占用总线的从设备。优先权和距离有关,缺点是距离远的从设备可能一直不会被响应,并且对电路故障非常敏感、速度慢。常用于微型计算机或简单的嵌入式设备中。
  • 计数器定时查询:和链式查询类似,只是引入计数器,可以软件设置遍历的初值。优点是优先级设置灵活,缺点是“设备地址”的位宽和设备总数有关、速度慢
  • 独立请求查询:每个从设备都有两个线连接到主设备,主设备内部设置一个“排队器”进行判优。优点是速度快、缺点是要求主设备有非常多的接口。

个人评论:感觉“独立请求查询”是最笨的,也就适合外设少的情况。

3.5.2 总线通信控制

  “总线通信控制”的目的是解决通信双方协调配合问题。而“总线传输周期”是指主设备和从设备之间,完成一次完整的、可靠的通信所需要的时间,主要分为以下四个阶段:

  • 申请分配阶段:主模块申请和从设备通信,总线仲裁决定。
  • 寻址阶段:主模块向从模块给出地址和命令。
  • 传数阶段:主模块和从模块交换数据。
  • 结束阶段:主模块、从模块撤消有关信息。

那具体到总线的通信方式,主要有以下四种:

  • 同步通信:由统一时标控制数据传送,这个“时标”也就是时钟信号,严格遵循时序。一般要求总线长度较短、各设备读写数据速率相近。
  • 异步通信:采用应答方式,没有公共时钟标准。下面的“半互锁”、“全互锁”若没有收到相应的撤销标志,可以要求对方重发,于是便实现可靠通信。
  • “不互锁”:从设备接收到主设备发送的请求信号后,从设备应答;后面主、从设备自动撤销。
  • “半互锁”:前面都一样,只是主设备等待从设备应答后才撤销、从设备自动撤销。
  • “全互锁”:前面都一样,只是主设备等待从设备应答后才撤销、从设备等待主设备撤销后才撤销。
  • 半同步通信:同步、异步结合,主要为了解决不同速度设备之间的通信。“同步”体现在发送方用系统时钟前沿发信号、接收方用系统时钟后沿判断、识别。“异步”则体现在允许不同速度的模块和谐工作,原理是增加了一条从设备给出的“等待”响应信号WAIT(低电平有效)。

T 1 T_1 T1:主模块发地址。
T 2 T_2 T2:主模块发命令。
T w T_w Tw:当WAIT为低电平时,主模块等待一个 T T T
T w T_w Tw:当WAIT为低电平时,主模块等待一个 T T T

T 3 T_3 T3:从模块将WAIT拉高,同时提供数据。
T 4 T_4 T4:从模块撤销数据,主模块撤销命令。

上述三种通信方式的共同点就是,一个总线传输周期(以输入数据为例)可以分为以下三个阶段:

  1. 主模块发地址、命令【占用总线】。
  2. 从模块准备数据【未释放总线,但总线空闲】。
  3. 从模块向主模块发数据【占用总线】。

可以看到,在第二个阶段,虽然没有数据在总线上传输,但总线未被释放。为了提升总线的利用效率,可以在上述第二个阶段直接释放总线,于是请求数据、接收数据的过程可能被其他设备的通信分隔开,也就是下面的“分离式通信”:

  • 分离式通信:充分提高了总线的有效占用。一个总线传输周期:
  • 阶段1:主模块申请占用总线,使用完后即放弃总线的使用权
  • 阶段2:从模块重新申请占用总线,将信息送至总线上,发送给需要数据的模块。
  • 分离式通信的特点:
  1. 各模块有权申请占用总线。
  2. 采用同步方式通信,不等对方回答。
  3. 各模块准备数据时,不占用总线。比如机械磁盘寻址平均需要十几ms,那么分离式通信就节省了这十几ms的总线占用。
  4. 总线被占用时,无空闲。

参考视频:【CSAPP-深入理解计算机系统】6-2. 机械磁盘——4:12s介绍机械磁盘对扇区的访问时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Positive Technologies 专家发现的漏洞已在 ABB 控制器中得到修复

🌟 我们的同事一如既往地表现出色:应用分析专家 Natalia Tlyapova 和 Denis Goryushev 因发现 Freelance AC 900F 和 AC 700F 控制器中的两个漏洞而受到 ABB 的表彰。 这些设备用于自动化大规模连续循环生产设施和构建企业配送控制系统。利用这些漏洞的…

Codeforces Round 925 (Div. 3) G. One-Dimensional Puzzle【推公式+组合数学+隔板法】

原题链接:https://codeforces.com/problemset/problem/1931/G 题目描述: 有 4 种拼图,其中第 i 种拼图有 ci​ 张。 两张拼图可以连结当且仅当它们相邻的卡槽中一个凹陷一个突出。 我们希望将所有的拼图从左往右拼起来,求总方案…

js 中文乱码解决、乱码对照

1、js iso-8859-1转utf-8 在JavaScript中,可以使用内置的TextEncoder和TextDecoderAPI来实现ISO-8859-1编码和UTF-8编码之间的转换。以下是一个将ISO-8859-1编码的字符串转换为UTF-8编码的示例代码: function convertISO88591ToUTF8(isoString) {// 将…

C语言数据结构基础——二叉树学习笔记(二)topk问题

1.top-k问题 1.1思路分析 TOP-K 问题:即求数据结合中前 K 个最大的元素或者最小的元素,一般情况下数据量都比较大 。 比如:专业前 10 名、世界 500 强、富豪榜、游戏中前 100 的活跃玩家等。 对于 Top-K 问题,能想到的最简单直…

Gradle v8.5 笔记 - 从入门到进阶(基于 Kotlin DSL)

目录 一、前置说明 二、Gradle 启动! 2.1、安装 2.2、初始化项目 2.3、gradle 项目目录介绍 2.4、Gradle 项目下载慢?(万能解决办法) 2.5、Gradle 常用命令 2.6、项目构建流程 2.7、设置文件(settings.gradle.…

什么是web组态?Web组态软件哪个好用?

随着工业4.0的到来,物联网、大数据、人工智能等技术的融合应用,使得工业领域正在经历一场深刻的变革。在这个过程中,Web组态技术以其独特的优势,正在逐渐受到越来越多企业的关注和认可。那么,什么是Web组态&#xff1f…

快速从0-1完成聊天室开发——环信ChatroomUIKit功能详解

聊天室是当下泛娱乐社交应用中最经典的玩法,通过调用环信的 IM SDK 接口,可以快速创建聊天室。如果想根据自己业务需求对聊天室应用的 UI界面、弹幕消息、礼物打赏系统等进行自定义设计,最高效的方式则是使用环信的 ChatroomUIKit 。 文档地址…

打开Railway神奇大门:Railway免费注册部署全面教程

🧙‍♂️ 诸位好,吾乃斜杠君,编程界之翘楚,代码之大师。算法如流水,逻辑如棋局。 📜 吾之笔记,内含诸般技术之秘诀。吾欲以此笔记,传授编程之道,助汝解技术难题。 &#…

JavaScript初学心得

JavaScript JavaScript原名是livescript,是由美国网景开发的一种用于对网页操作的脚本语言 网页操作(图片切换) 脚本语言(不需要编译 sql,html,css,javascript,由某种解释器直接可以运行) livescript也是面向对象的…

外键约束

目录 外键约束 对数据表进行初期设计,暂时不使用外键 验证限制三 验证级联删除 设置级联更新 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 外键约束 外键约束主要是在父子表关系中体现的一种约束操作。…

代码随想录算法训练营day28 | 回溯算法之93.复原IP地址 78.子集 90.子集II

三刷day28 93.复原IP地址判断子串是否合法 78.子集回溯三部曲 90.子集II 93.复原IP地址 题目链接 解题思路: 切割问题就可以使用回溯搜索法把所有可能性搜出来 回溯三部曲 递归参数 startIndex一定是需要的,因为不能重复分割,记录下一层递…

windows取证

Windows事件日志分析 使用Windows事件日志查看器,打开实验文档“security01.evtx”。按“日期和时间”对日志进行分组统计;按“事件ID”对日志进行分组统计: 问题:日志中是否有用户登录失败的记录。如果有,请按“登录…

AI智能客服的数据训练流程

实现智能客服的数据训练流程可以分为几个主要步骤,包括数据准备、模型选择、模型训练和评估。以下是一个基本的数据训练流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.数据准备&am…

1-postgresql数据库高可用脚本详解

问题: pgrep -f postgres > /dev/null && echo 0 || pkill keepalived 这是什么意思 建议换成 pgrep -f postmaster > /dev/null && echo 0 || pkill keepalived 回答 这条命令是一个复合命令,包含条件执行和重定向的元素。让我们…

三、转移字符、字符串、bool类型和eval函数

一、转义字符 \n:换行符 \t:制表符 \:单引号 \":双引号 \\:反斜杠 a人生无常 b我用python print(ab) print(f"{a}\n{b}") print(f"{a}\t{b}") print(fr"{a}\t{b}") 在打印字…

const,static深度总结——c++穿透式分析

前言;c类和对象的知识点中除了几种默认函数, 比较重要的还有使用const和static修饰成员相关知识点。const在c中特性很简单。 但是在使用中, 比较容易疏忽大意出现问题。 static特性也很简单, 但是比起const来要直接的多。 在使用中…

LAMP架构部署--yum安装方式

这里写目录标题 LAMP架构部署web服务器工作流程web工作流程 yum安装方式安装软件包配置apache启用代理模块 配置虚拟主机配置php验证 LAMP架构部署 web服务器工作流程 web服务器的资源分为两种,静态资源和动态资源 静态资源就是指静态内容,客户端从服…

如何选择合适的奶瓶?五大超实用选购技巧,新手宝妈必看

奶瓶什么品牌好?奶瓶是每个新生宝宝都需要用到的辅喂产品,然而市场上许多网红品牌为了赚快钱,往往凭借外观设计、性价比和广告营销来吸引消费者。这些品牌由于缺乏专业技术,往往没有对选材用料和安全性进一步的优化,从…

MNN Session::resize 之流水线编码(五)

系列文章目录 MNN createFromBuffer(一) MNN createRuntime(二) MNN createSession 之 Schedule(三) MNN createSession 之创建流水线后端(四) MNN Session::resize 之流水线编码&am…

【LeetCode: 173. 二叉搜索树迭代器 + dfs + 二叉搜索树】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…