计算机组成原理笔记-第3章 系统总线

2024-06-23 01:36

本文主要是介绍计算机组成原理笔记-第3章 系统总线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第三章 系统总线

笔记PDF版本已上传至Github个人仓库:CourseNotes,欢迎fork和star,拥抱开源,一起完善。

该笔记是最初是没打算发网上的,所以很多地方都为了自我阅读方便,我理解了的地方就少有解释;我不理解的地方理解后加上的解释便很多。

因此,若读者在阅读过程中遇到错误或理解问题,请评论区留言或者私信,我们一起讨论:看到会及时回复。

3.1 总线的基本概念

  • 以存储器为中心的双总线结构

在这里插入图片描述

3.2 总线的分类

  • 片内总线:芯片内部各部件之间的的总线,如CPU内部连接各寄存器及运算器之间的总线。
  • 系统总线:计算机各部件之间 的信息传输线
    • 数据总线双向 与机器字长、存储字长有关,但不一定等于字长,一个字可以分多次传输
    • 地址总线单向 与存储地址、 I/O地址有关,和 MAR 位数相等
    • 控制总线双向,存储器读、存储器写,总线允许、中断确认,中断请求、总线请求。
  • 通信总线:用于 计算机系统之间 或 计算机系统与其他系统(如控制仪表、移动通信等)
  • 按照传输方式分类
    • 并行通信总线:同一时刻,可以传输多个bit位的信号,有多少个信号位就需要多少根信号线。并行通讯的效率高,但是对信号线路要求也很高,很容易产生干扰,反而传输速度不能很快。
    • 串行通信总线:同一时刻,只能传输一个bit位的信号,只需要一根信号线。串行通讯效率较低,但是对信号线路要求低,抗干扰能力强,传输速度可以很快。

3.3 总线特性及性能指标

  • 总线特性
    • 机械特性:尺寸、形状、管脚数及排列顺序
    • 电气特性:传输方向和有效的 电平 范围
    • 功能特性 :每根传输线的功能,如地址线,数据线,控制线,反馈线
    • 时间特性:信号的时序 关系
  • 总线的性能指标
    • 总线宽度:数据线的根数
    • 标准传输率 :每秒传输的最大字节数(MBps)
    • 时钟同步/异步: 同步、不同步
    • 总线复用:地址线 与 数据线 复用,8086的20根地址线和16根数据线复用,减少芯片的管脚数量。
    • 信号线数地址线、数据线和控制线的总和
    • 总线控制方式 :突发、自动、仲裁、逻辑、计数

3.4 总线结构

  • 单总线结构

在这里插入图片描述

  • 双总线结构

    通道既是硬件数据通路,又是具有特殊功能的处理器,由通道对I/O统一管理

    通道的作用:①存储;②串并转换;③计算

  • 三总线结构
    • 主存总线和DMA总线不能同时工作,要进行判优工作。
    • 当主存总线和DMA总线出现竞争时,我们把优先权交给DMA总线

在这里插入图片描述

  • 三总线结构的又一形式
    • 在此结构中,主机由缓存主存CPU组成,而不再是2部分组成。

在这里插入图片描述

  • 四总线结构

在这里插入图片描述

  • 传统微型机总线结构

在这里插入图片描述

  • VL-BUS局部总线结构

在这里插入图片描述

  • PCI 总线结构

  • 多层 PCI 总线结构

3.5 总线控制

3.5.1 总线判优控制
  • 主设备( 模块): 对总线有 控制权

  • 从设备( 模块) :响应 从主设备发来的总线命令

  • 总线判优控制两种方式:分布式(针对多机系统)集中式

    下面给出集中式的三种优先权仲裁方式,注意其中(BS总线忙、BR总线请求、BG总线同意)

    • 链式查询

      • 缺点:①请求不公平,越靠近总线控制部件,优先级越高;②不可靠,一旦BG链断裂,其后接口均无法再获得BG信号。
    • 计数器定时查询

      在这里插入图片描述

      • 缺陷:计数器的设计要重点考虑,是总线同意后重置位还是继续计数
    • 独立请求方式

      在这里插入图片描述

      • 缺陷:线路冗余
3.5.2 总线通信控制
  • 总线传输周期

    • 申请分配阶段:主模块申请,总线仲裁决定
    • 寻址阶段:主模块向从模块给出 地址 和 命令
    • 传输阶段:主模块和从模块 交换数据
    • 结束阶段:主模块 撤消有关信息
  • 总线通信:为解决通信双方 协调配合 问题

    • 同步通信

      由 统一时标 控制数据传送 ,一般在总线长度比较短,各个部件速度比较一致的时候使用,存在短板效应。

      地址线为高电平有效,读命令为低电平有效,数据线为高电平有线;三线非方波是因为操作不是一瞬间的,而是有缓冲时间的。

      地址线传输一直有信号是因为数据具有指向性,一旦地址失效,则传输无法寻址,因此必须长期有效才行。

    在这里插入图片描述

    • 异步通信

      异步通信克服了同步通信的缺点,允许各模块速度的不一致性,它没有公共的时钟标准,,不要求所有部件严格的统一操作时间,而是采用应答方式。

      异步通信的应答方式又可分为不互锁、半互锁和全互锁三种类型

      • 不互锁:通信双方非必须收到对方的响应消息才做出反应,如,主模块发送请求信号后,过了一段时间,自动确认从模块已收到,此时主动撤销请求信号,而不是等到从模块的回答才撤销;从模块亦然。
      • 半互锁:此时主模块对从模块持有锁,须等到从模块的回答才撤销请求信号;而从模块依然无锁,回答后过一段时间自动撤销回答信号。
      • 全互锁:双方均持有锁。

      以上三种应答方式,我们可用下图进行表述:

      在这里插入图片描述

      异步串行通信的数据传送速率用波特率来衡量。波特率是指单位时间内传送二进制数据的位数,单位用bps(位/秒)表示,记作波特,特别注意的是严格来说,波特率与比特率不同,仅仅在一个一个波特位用一个比特位表示时,波特率和比特率相等。

    • 半同步通信

      同步、异步 结合,发送方 用系统 时钟前沿 发信号,接收方 用系统 时钟后沿 判断、识别。增加一条 “等待”响应信号。当从设备数据没有准备好时发出 WAIT ‾ \overline {\text{WAIT}} WAIT信号,数据准备好了再开始开始同步传输数据。

      在这里插入图片描述

      上面三种数据通信的共同点

      • 主模块发地址、命令 需占用总线
      • 从模块准备数据 不占用总线
      • 从模块向主模块发数据 占用总线
    • 分离式通信

      主模块申请占用总线发地址 、命令,使用完后放弃总线的使用权;从模块准备数据完毕后,从模块申请占用总线(身份转换为主设备),向主模块发数据。从模块准备数据是不占用总线的,这时候其他设备可以请求总线,充分挖掘系统总线每个瞬间的潜力。

      • 各模块有权申请占用总线
      • 同步通信,不等回答
      • 各模块准备数据不占用总线
      • 总线被占用时,不空闲

这篇关于计算机组成原理笔记-第3章 系统总线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085957

相关文章

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

MySQL的隐式锁(Implicit Lock)原理实现

《MySQL的隐式锁(ImplicitLock)原理实现》MySQL的InnoDB存储引擎中隐式锁是一种自动管理的锁,用于保证事务在行级别操作时的数据一致性和安全性,本文主要介绍了MySQL的隐式锁... 目录1. 背景:什么是隐式锁?2. 隐式锁的工作原理3. 隐式锁的类型4. 隐式锁的实现与源代码分析4