首页 > 其他分享 >42 | 总线:计算机内部的高速公路

42 | 总线:计算机内部的高速公路

时间:2023-05-22 15:34:41浏览次数:34  
标签:42 总线 通信 高速公路 内存 Bus CPU 设备


专栏讲到现在,如果我再问你,计算机五大组成部分是什么,应该没有人不知道了吧?我们这一节要讲的内容,依然要围绕这五大部分,控制器、运算器、存储器、输入设备和输出设备。


CPU 所代表的控制器和运算器,要和存储器,也就是我们的主内存,以及输入和输出设备进行通信。那问题来了,CPU 从我们的键盘、鼠标接收输入信号,向显示器输出信号,这之间究竟是怎么通信的呢?换句话说,计算机是用什么样的方式来完成,CPU 和内存、以及外部输入输出设备的通信呢?


总线


降低复杂性:总线的设计思路来源


计算机里其实有很多不同的硬件设备,除了 CPU 和内存之外,我们还有大量的输入输出设备。可以说,你计算机上的每一个接口,键盘、鼠标、显示器、硬盘,乃至通过 USB 接口连接的各种外部设备,都对应了一个设备或者模块。


如果各个设备间的通信,都是互相之间单独进行的。如果我们有 N 个不同的设备,他们之间需要各自单独连接,那么系统复杂度就会变成 N2 。每一个设备或者功能电路模块,都要和其他 N−1 个设备去通信。为了简化系统的复杂度,我们就引入了总线,把这个 N2 的复杂度,变成一个 N 的复杂度。


那怎么降低复杂度呢?与其让各个设备之间互相单独通信,不如我们去设计一个公用的线路。CPU 想要和什么设备通信,通信的指令是什么,对应的数据是什么,都发送到这个线路上;设备要向 CPU 发送什么信息呢,也发送到这个线路上。这个线路就好像一个高速公路,各个设备和其他设备之间,不需要单独建公路,只建一条小路通向这条高速公路就好了。



42 | 总线:计算机内部的高速公路_复杂度


总线


总线的英文叫作 Bus,就是一辆公交车。这个名字很好地描述了总线的含义。我们的“公交车”的各个站点,就是各个接入设备。要想向一个设备传输数据,我们只要把数据放上公交车,在对应的车站下车就可以了。


事件总线


进行大规模应用系统开发的时候,系统中的各个组件之间也需要相互通信。模块之间如果是两两之间单独去定义协议,这个软件系统一样会遇到一个复杂度变成了 N2 的问题。所以常见的一个解决方案,就是事件总线这个设计模式。


在事件总线这个设计模式里,各个模块触发对应的事件,并把事件对象发送到总线上。也就是说,每个模块都是一个发布者(Publisher)。而各个模块也会把自己注册到总线上,去监听总线上的事件,并根据事件的对象类型或者是对象内容,来决定自己是否要进行特定的处理或者响应。



42 | 总线:计算机内部的高速公路_计算机原理_02


这样的设计下,注册在总线上的各个模块就是松耦合的。模块互相之间并没有依赖关系。无论代码的维护,还是未来的扩展,都会很方便。


理解总线:三种线路和多总线架构


理解了总线的设计概念,我们来看看,总线在实际的计算机硬件里面,到底是什么样。


现代的 Intel CPU 的体系结构里面,通常有好几条总线。


双独立总线 (Dual Independent Bus,缩写为 DIB)。CPU 里,有一个快速的 本地总线 (Local Bus),以及一个速度相对较慢的 前端总线 (Front-side Bus)。


我们在前面几讲刚刚讲过,现代的 CPU 里,通常有专门的高速缓存芯片。这里的高速本地总线,就是用来和高速缓存通信的。而前端总线,则是用来和主内存以及输入输出设备通信的。有时候,我们会把本地总线也叫作后端总线(Back-side Bus),和前面的前端总线对应起来。而前端总线也有很多其他名字,比如处理器总线(Processor Bus)、内存总线(Memory Bus)。



42 | 总线:计算机内部的高速公路_复杂度_03


CPU 的硬件架构图


CPU 里面的北桥芯片,把我们上面说的前端总线,一分为二,变成了三个总线。


系统总线


事实上,真实的计算机里,这个总线层面拆分得更细。根据不同的设备,还会分成独立的 PCI 总线、ISA 总线等等。



42 | 总线:计算机内部的高速公路_复杂度_04


这些电线之间也是有分工的,我们通常有三类线路。



数据线(Data Bus),用来传输实际的数据信息,也就是实际上了公交车的“人”。



地址线(Address Bus),用来确定到底把数据传输到哪里去,是内存的某个位置,还是某一个 I/O 设备。这个其实就相当于拿了个纸条,写下了上面的人要下车的站点。



虽然我们把总线比喻成了一辆公交车。那么有人想要做公交车的时候,需要告诉公交车司机,这个就是我们的控制信号。


那就是总线不能 同时 给多个设备提供通信功能。


就叫作 总线裁决 (Bus Arbitraction)。总线裁决的机制有很多种不同的实现,如果你对这个实现的细节感兴趣,可以去看一看 Wiki 里面关于 裁决器


总结延伸


好了,你现在明白计算机里的总线、各种不同的总线到底是什么意思了吧?希望这一讲能够帮你厘清计算机总线的知识点。现在我们一起来总结梳理一下这节的内容。


这一讲,我为你讲解了计算机里各个不同的组件之间用来通信的渠道,也就是总线。总线的设计思路,核心是为了减少多个模块之间交互的复杂性和耦合度。实际上,总线这个设计思路在我们的软件开发过程中也经常会被用到。事件总线就是我们常见的一个设计模式,通常事件总线也会和订阅者发布者模式结合起来,成为大型系统的各个松耦合的模块之间交互的一种主要模式。


在实际的硬件层面,总线其实就是一组连接电路的线路。因为不同设备之间的速度有差异,所以一台计算机里面往往会有多个总线。常见的就有在 CPU 内部和高速缓存通信的本地总线,以及和外部 I/O 设备以及内存通信的前端总线。


前端总线通常也被叫作系统总线。它可以通过一个 I/O 桥接器,拆分成两个总线,分别来和 I/O 设备以及内存通信。自然,这样拆开的两个总线,就叫作 I/O 总线和内存总线。总线本身的电路功能,又可以拆分成用来传输数据的数据线、用来传输地址的地址线,以及用来传输控制信号的控制线。


总线是一个各个接入的设备公用的线路,所以自然会在各个设备之间争夺总线所有权的情况。于是,我们需要一个机制来决定让谁来使用总线,这个决策机制就是总线裁决。

标签:42,总线,通信,高速公路,内存,Bus,CPU,设备
From: https://blog.51cto.com/u_15202985/6324699

相关文章

  • Q420NE高强钢、Q420NE执行标准、Q420NE切割加工
    一、Q420NE钢板简介:Q420NE是低合金高强度钢板,Q420NE其中N的意思是正火轧制或者正火的意思,E是-40°冲击同级别牌号还有Q420NB/Q420NC/Q420ND。Q420NE可做Z向性能等级:Z15/Z25/Z35材质书会有体现,Q420NE执行标准按照GB/T1591-2018标准生产。二、Q420NE钢板化学成分:CSiMnPSNiCrMoCuNb......
  • 计算机组成原理:系统总线与总线接口实验
    实验名称:3.系统总线与总线接口实验实验目的理解总线的概念及其特性。掌握控制总线的功能和应用。理解总线的功能和和典型工作流程。掌握在总线上协调ALU和外设交换数据的方法。实验设备PC机一台,TDX-CMX实验系统一套。实验预习1、阅读实验指导书,然后回答问题。本实......
  • 汇编-总线
    总线:连接CPU和其他芯片的导线,统称为总线逻辑上分为:地址总线一个CPU有N根地址总线,就说CPU的地址总线的宽度为N这样的CPU最多可以寻址2的N次方个内存单元一根总线就是1Byte=8bit,64位机子有8根地址总线数据总线控制总线         ......
  • abc242E 求解小于等于一个字符串的回文串的个数
    题目链接:E-(∀x∀)考虑26进制,将字母A~Z折算成数字0~25,求得最大的可能的回文字符串的26进制值即为答案//>>>Qiansui#include<map>#include<set>#include<stack>#include<cmath>#include<queue>#include<deque>#include<cstdio>#include<string&......
  • leetcode-1422-easy
    MaximumScoreAfterSplittingaStringGivenastringsofzerosandones,returnthemaximumscoreaftersplittingthestringintotwonon-emptysubstrings(i.e.leftsubstringandrightsubstring).Thescoreaftersplittingastringisthenumberofze......
  • Apache Log4j2远程代码执行漏洞(CVE-2021-44228)修复
    1、演示说明:最近在项目中遇到用户扫描es时发现ApacheLog4j2远程代码执行漏洞(CVE-2021-44228),该漏洞具体原理不再赘述,此处分享解决过程。2、演示环境:(1)系统版本:#cat/etc/redhat-release(2)JDK版本:#java-version(3)es版本:#./elasticsearch-V3、下载命令行扫描工具:下载地址:https://gi......
  • 总线
    概概述基本概念1、总线:是构成计算机互联的机构,是多个系统功能部之间进行数据传输的公共通路2、总线的分类:内部总线、系统总线、IO总线内部总线:cpu连接寄存器及各运算部件的总线系统总线:cpu连接其他高速功能(如存储器)的总线IO总线:中低速IO设备之间互相连接的总线3、总线的特......
  • 【Azure 服务总线】如何批量删除Azure Service Bus中的Topics(数量较多,需要过滤后批量
    问题描述AzureServiceBus的门户操作页面上,是否可以批量删除其中的Topics呢? 问题解答AzureServiceBus门户或ServiceBusExplorer工具没有提供批量删除Topic的方法。但是可以自己写脚本删除,并且可以在删除的时候自定义过滤条件。以Python举例:第一步:在本地安装PythonServiceB......
  • 【BZOJ4241】【回滚莫队模板题】历史研究
    Description给定一个序列,每次询问区间[l,r][l,r]内,所有权值与其出现次数的乘积的最大值。Solution回滚莫队模板题。将询问以左端点所在块为第一关键字,右端点为第......
  • 使用教程 | 基于TSMaster如何实现LIN RBS 剩余总线仿真
    本文导读RBS全称是:residualbussimulation,也就是所谓的剩余总线仿真。主要是基于车载网络数据库,如CAN/LIN/FlexRay/以太网数据库,仿真该网络内部各个节点的通讯行为。本文主要讲解TSMaster中LINRBS的操作流程。本文目录:一、硬件连接准备二、TSMaster软件LINRBS操作流程1.......