本文已收录到 AndroidFamily,技术和职场问题,请重视公众号 [彭旭锐] 发问。
前言
大家好,我是小彭。
在之前的文章中,咱们聊到了计算机的冯诺依曼计算机架构,计算机由五大部件组成。那么,计算机的五大部件是怎么衔接成一个全体的呢?这就需求依靠总线体系。
思想导图:
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、总线具有共享性和独占性,当多个部件一起向总线宣布总线业务,总线天然地将业务串行化;
参考资料
- 深入浅出计算机组成原理(第 42 讲) —— 徐文浩 著,极客时刻 出品
- 计算机组成原理教程(第 3 章) —— 尹艳辉 王海文 邢军 著
- 10分钟速成课 计算机科学 —— Carrie Anne 著
- System Bus —— Wikipedia
- Northbridge (computing) —— Wikipedia
- Southbridge (computing) —— Wikipedia
- HyperTransport —— Wikipedia
- Intel QuickPath Interconnect —— Wikipedia
- Arbiter (electronics) —— Wikipedia