图解计算机内部的高速公路 —— 总线系统

图解,计算机,内部,高速公路,总线,系统 · 浏览次数 : 1136

小编点评

**总线** 总线是一种连接多个计算机部件的数据通信规范。它可以分为前端总线和后端总线。 **前端总线** 前端总线是 CPU 与外部连接的总线。它通常称为前端总线 (Front-end Bus)。前端总线用于连接 CPU 芯片、存储器、显示卡和其他外设。 **后端总线** 后端总线是 CPU 芯片内部使用的总线。它用于连接 CPU 芯片的不同核心、Cache 之间的通信。 **总线类型** * **共享性**:当多个部件同时向总线发出总线事务时,总线会天然地串行化处理。 * **独占性**:同一时刻,只允许一个部件占有总线的控制权。 **总线架构** * **北桥架构**:北桥架构将 CPU 和北桥芯片连接起来。它具有缓冲功能,可以缓存数据并提高性能。 * **南桥架构**:南桥架构将 CPU 和南桥芯片连接起来。它具有桥接功能,可以将高速部件和低速部件连接在一起。 **前端总线瓶颈** 前端总线是 CPU 连接外界的唯一通道。前端总线的数据传输能力对于计算机系统的整体性能影响非常大。随着 CPU 主频不断提升,前端总线频率却一直跟不上后端总线频率,从而出现性能瓶颈。

正文

本文已收录到  GitHub · AndroidFamily,有 Android 进阶知识体系,欢迎 Star。技术和职场问题,请关注公众号 [彭旭锐] 进 Android 面试交流群。

前言

大家好,我是小彭。

在之前的文章中,我们聊到了计算机的冯·诺依曼计算机架构,计算机由五大部件组成。那么,计算机的五大部件是如何连接成一个整体的呢?这就需要依赖总线系统。


学习路线图:


1. 认识计算机总线系统

1.1 什么是总线?

在冯·诺依曼计算机架构中,计算机由控制器、运算器、存储器、输入设备和输出设备五个部分组成,而这五个部分必须进行 “连接” 起来相互通信才能形成一个完整的整体。 总线就是连接多个计算机部件的数据通信规范。

PC 计算机主板

—— 图片引用自 Wikipedia

1.2 为什么要使用总线结构?

先解释一下为什么现代的计算机系统要采用总线结构:

  • 原因 1 - 降低复杂性: 这个设计思路跟软件开发中的中介者模式是相同的。总线结构将 N-N 网型拓扑结构简化为 N-1-N 总线型结构或星型+总线型拓扑结构,不仅整体的系统结构清晰许多,可以提高系统稳定性。而且需要使用的布线数目也减少了,制造成本也更低;
  • 原因 2 - 促进标准化: 总线结构提供了一个标准化的数据交换方式,各个硬件按照总线的标准实现接口,而无需考虑对方接口或总线的工作原理,有利于各个部件模块化设计。

网状拓扑和总线拓扑对比


2. 总线的内部结构

总线本身的电路功能,又可以拆分成 3 部分:

  • 1、地址总线(Address Bus,AB): 地址总线传输的是地址信号。地址总线是单向的,地址信息只能从主设备发往从设备。地址总线宽度也决定了一个 CPU 的寻址能力,即多大可以访问多少数据空间。举个例子,32 位地址总线可以寻址 4GB 的数据空间;
  • 2、控制总线(Control Bus,CB): 控制总线传输控制或状态信号。控制总线是双向的,信号可以从主模块发往从模块,也可以从从模块发往主模块(例如 CPU 对存储器的读写控制信号,例如 I/O 设备对 CPU 中断请求信号);
  • 3、数据总线(Data Bus,DB): 数据总线传输的是实际的数据信息。数据总线是双向的,数据可以从主模块发往从模块(例如 CPU 向内存的写入操作),也可以从从模块发往主模块(例如 CPU 向内存的读取操作)。

举个例子,当 CPU 要从存储器读取数据时,三类总线的工作过程概要如下:

  • 1、CPU 通过地址总线发送要访问的存储单元的地址信息;
  • 2、CPU 通过控制总线发送读控制信号;
  • 3、存储器通过数据总线发送指定存储单元上的数据,从 CPU 的视角就是读取。

总线内部结构


3. 总线系统的架构

理解了总线的概念后,我们先来看总线系统的整体架构,现代计算机中的总线大多采用分层次多总线架构。

3.1 单总线架构和多总线架构

在早期计算机中,会使用单一总线来连接计算机的各个部件,这种结构叫单总线架构。这种结构实现简单,但缺点有 2 个:

  • 缺点 1: 计算机不同组件之间的速度差较大,例如 CPU 与内存或 I/O 设备的速度差非常大,当传输数据量很大时,CPU 经常需要等待;
  • 缺点 2: 所有的信号都要经过同一个共享的总线,不允许两个以上的部件同时传输信号。

单总线架构

因此,单总线系统很容易形成系统的性能瓶颈,就算是增大总线的带宽也无法从根本上解决系统性缺陷。目前,单总线结构只出现在微型计算机中。大多数现代计算机都采用了分层次多总线结构,所有的设计思路都是围绕单总线架构存在的 2 个缺点展开的:

  • 应对缺点 1: 将高速部件和低速部件分为不同层级,不同层级之间使用独立的总线,减少高速部件对低速部件的等待;
  • 应对缺点 2: 增加多条总线,使得数据可以同时在多个部件之间传输。

3.2 双独立总线:片内 & 片外

现代 CPU 中通常会使用高速缓存,由于 “CPU-高速缓存” 和 “CPU - 内存” 的速度差非常大,计算机系统选择在 CPU 芯片内和 CPU 芯片外使用 双独立总线(Dual Independent Bus,DIB):

  • 前端总线(Front Side Bus,FSB): CPU 与外部连接的总线(即 CPU 连接北桥芯片的总线);
  • 后端总线(Back Side Bus,BSB): 也叫本地总线(Local Bus)或片内总线(On-chip Bus),是 CPU 芯片内部独立使用的总线。CPU 芯片内部一个或多个核心、Cache 之间的通信将不需要占用芯片外的系统总线。

提示: 前端总线和系统总线的概念容易混淆,不同资料的说法不一。我的理解是:前端总线是 “特指” 某些 Intel CPU 架构中,CPU 芯片与外部连接的这条总线,而系统总线 “泛指” 连接计算机各个部件的所有总线。小彭在后续专栏内容都会按照此理解讨论。

前端总线和后端总线

3.3 南北桥架构

南北桥架构是 Intel 提出的总线架构,也叫 Hub 架构 。它将计算机部件分为高速部件和低速部件两类,分为北桥芯片组合和南桥芯片组,中间用两颗桥芯片连接。使用南北桥设计有 2 个优点:

  • 1、缓冲功能: 南北桥芯片实现了两类总线信号速度缓冲;
  • 2、桥接功能: 南北桥芯片实现了两类总线信号的转换,有利于系统升级换代。例如在升级 CPU 时,只需要改动 CPU 和北桥芯片,其它南桥部分不需要改动。

南北桥架构

  • 北桥芯片(Northbridge): 北桥处理高速信号。北桥芯片连接的设备都是高速传输设备,包含 CPU、GPU、存储器与南桥的通信。北桥芯片也是 CPU 与外部连接的纽带;
  • 南桥芯片(Southbridge): 南桥处理低速信号。南桥芯片连接的大多是 I/O 设备,例如 PCI 总线、USB 适配器、显卡适配器、硬盘控制器;
  • 内存控制器(Memory Controller): 管理 CPU 和内存之间的总线数据传输,控制着存储器的读取和写入信号,并且定时刷新 DRAM 内的数据(DRAM 的存储单元包含电容,会自动漏电);
  • 内存总线(Memory Bus): 连接北桥芯片与存储器的总线;
  • DMI 总线(Direct Media Interface): 连接北桥芯片和南桥芯片的专用总线;
  • I/O 总线: 连接南桥芯片与 I/O 设备的总线;
    • PCI 局部总线: 连接高速 I/O 设备的标准;
    • ISA 局部总线: 连接低速 I/O 设备的标准。

3.4 前端总线瓶颈

前端总线是 CPU 连接外界的唯一通道,因此前端总线的数据传输能力对于计算机系统的整体性能影响非常大。 近年来随着 CPU 主频不断提升,前端总线频率却一直跟不上后端总线频率,从而出现性能瓶颈。

为了解决这个问题,传统的南北桥架构被重新设计,北桥芯片的功能几乎都移动到 CPU 内部变成 “片上北桥”。前端总线被淘汰,CPU / 片上北桥继续使用 DMI 连接南桥或 PCH 等外部设备。


4. 总线仲裁

总线既有共享性又有独占性,听起来有点矛盾,其实是表现的时机不一样:

  • 共享性: 总线的共享性是指总线对所有连接的设备共享,主从模块能通过总线传输数据。
  • 独占性: 总线的独占性是指同一时刻,只允许一个部件占有总线的控制权,这个部件就是主模块,主模块可以与一个或多个从模块通信,但同一时刻只有一个主模块。

总线的独占性天然地将事务串行化: 如果多个部件同时向总线发出总线事务,总线仲裁(Bus Arbitration)单元会对竞争做出总裁,未获胜的事务只能等待获胜的事务处理完成后才能执行。当其中一个总线事务在执行时,其他总线事务都会被禁止。


5. 总结

  • 1、总线就是连接多个计算机部件的数据通信规范;

  • 2、总线的电路结构由地址总线、控制总线和数据总线组成。举个例子,当 CPU 要从存储器读取数据时,三类总线的工作过程概要如下:

    • CPU 通过地址总线发送要访问的存储单元的地址信息;
    • CPU 通过控制总线发送读控制信号;
    • 存储器通过数据总线发送指定存储单元上的数据,从 CPU 的视角就是读取。
  • 3、现代计算机中的总线大多采用分层次多总线架构,由片内+片外双独立总线平衡高速缓存和内存的速度差,由南北桥架构平衡高速部件和低速部件的速度差;

  • 4、由于前端总线瓶颈和芯片集成度提高,南北桥架构逐渐被片上系统替代;

  • 5、总线具有共享性和独占性,当多个部件同时向总线发出总线事务,总线天然地将事务串行化;


参考资料

与图解计算机内部的高速公路 —— 总线系统相似的内容:

图解计算机内部的高速公路 —— 总线系统

本文已收录到 GitHub · AndroidFamily,有 Android 进阶知识体系,欢迎 Star。技术和职场问题,请关注公众号 [彭旭锐] 进 Android 面试交流群。 前言 大家好,我是小彭。 在之前的文章中,我们聊到了计算机的冯·诺依曼计算机架构,计算机由五大部件组成。那么,计算

图解计算机的存储器金字塔

本文已收录到 GitHub · AndroidFamily,有 Android 进阶知识体系,欢迎 Star。技术和职场问题,请关注公众号 [彭旭锐] 进 Android 面试交流群。 前言 大家好,我是小彭。 在计算机组成原理中的众多概念中,开发者接触得最多的还是内存、硬盘、虚拟内存、CPU 缓存

深度解读昇腾CANN多流并行技术,提高硬件资源利用率

GE(Graph Engine)图引擎采用多流并行算法,在满足计算图任务内部依赖关系的前提下,支持高效并发执行计算任务,从而大大提高硬件资源利用率和AI计算效率。

一周万星的文本转语音开源项目「GitHub 热点速览」

上周的热门开源项目让我想起了「图灵测试」,测试者在不知道对面是机器还是人类的前提下随意提问,最后根据对方回复的内容,判断与他们交谈的是人还是计算机。如果无法分辨出回答者是机器还是人类,则说明机器已通过测试,具有人类的智力水平。 ​虽然现在大模型的回答还充满 AI “味”,可以一眼识破,但 GitHu

ARKit的理解与使用

AR概述 AR的意义:让虚拟世界套与现实世界建立联系,并可以进行互动。 AR的技术实现:通过实时地计算摄影机输出影像的位置及角度,并在内部通过算法识别将场景中的事物,然后在内部模拟的三维坐标系中给识别到的事物建立坐标,然后在特定的坐标上添加相应的图像、视频、3D模型,最终通过手机屏幕合成一个AR效果

一个用Python将视频变为表情包的工具

这是一个将视频转变为表情包的工具,现实生活中当我们看到一段搞笑的视频,我们可以将这段视频喂给这段程序,生成gif表情包,这样就可以用来舍友斗图了 1、一些限制 1、这个程序不能转化超过15秒以上的视频,因为占用的内存较高,会被终端杀死(除非你的计算机性能很好,也许1分钟的短视频都可以),为了整个程序

python计算机视觉学习笔记——PIL库的用法

如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 这个是之前的笔记,自己看到了就顺带发出来,也是温习一下,内容可能不太全,算是入门贴吧。 前言:PIL 图

计算机视觉五大核心研究任务全解:分类识别、检测分割、人体分析、三维视觉、视频分析

> 本篇文章深入探讨了计算视觉的定义和主要任务。内容涵盖了图像分类与识别、物体检测与分割、人体分析、三维计算机视觉、视频理解与分析等技术,最后展示了无监督学习与自监督学习在计算机视觉中的应用。 > 作者 TechLead,拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦

基于百度AI实现文字和图像敏感内容审核

前言 百度AI是指百度公司的人工智能技术全称。它采用深度学习技术,包括自然语言处理、语音识别、计算机视觉、知识图谱等,可应用于各个领域如互联网、医疗、金融、教育、汽车、物流等。百度AI的发展将帮助人类更好地理解世界和提高生活品质,接下来就通过一个小案例演示实现百度AI在文字和图像敏感审核应用。 项目

我把 CPU 三级缓存的秘密,藏在这 8 张图里

本文已收录到 GitHub · AndroidFamily,有 Android 进阶知识体系,欢迎 Star。技术和职场问题,请关注公众号 [彭旭锐] 进 Android 面试交流群。 前言 大家好,我是小彭。 在上一篇文章里,我们聊到了计算机存储器系统的金字塔结构,其中在 CPU 和内存之间有一层