G
N
I
D
A
O
L

【组成原理-总线】总线的概念和计算

1 计算机系统的总线结构

先回顾几个总线技术:

  • 串行总线:只需要一条传输线,成本低廉,广泛应用于长距离传输;应用于计算机内部时,可以节省布线空间。
  • 并行总线:总线的逻辑时序比较简单,电路实现起来比较容易。占用更多的布线空间;工作频率较高时,并行的信号线之间会产生严重干扰。
  • 总线复用:是指一种信号线在不同的时间传输不同的信息。可以使用较少的线传输更多的信息,从而节省了空间和成本。

1.1 内部总线

在 CPU 内部,寄存器之间和算术逻辑部件 ALU 与控制部件之间传输数据所用的总线称为片内总线(又称内部总线,即芯片内部的总线)。它是外设与处理器之间的总线,用于芯片一级的互连。

1.2 系统总线(内总线、板级总线)

又称内总线或板级总线,它将 CPU、主存、I/O 接口之间相互连接起来。系统总线的结构可分为三类(除这三类外还有四总线结构):

1.2.1 单总线结构

将 CPU、主存、I/O 接口挂在同一组总线上,注意是同一组,一组里有三种总线——数据总线、地址总线、控制总线。

  • 数据总线:双向传输,用来传输各部件之间的数据信息,总线位宽与机器字长、存储字长有关
  • 地址总线:单向传输,用来指出数据总线上的数据所在的主存单元或 I/O 端口地址,总线位宽与主存地址空间大小有关
  • 控制总线:传输控制信号,包括 CPU 送出的控制命令和主存返回 CPU 的反馈信号

1.2.2 双总线结构

一条是主存总线,另一条是 I/O 总线,而通道作为两条总线的传输中介。这种结构支持突发传送。

  • 主存总线:这里面实际是三种总线——数据总线、地址总线、控制总线。
  • I/O 总线:用于连接中低速的 I/O 设备,通过 I/O 接口与系统总线相连,目的是将低速设备与高速设备分离,如 USB、PCI 总线。
  • I/O 通道:具有特殊功能的处理器,能对 I/O 设备进行统一管理,减轻了设备控制器的负担。通道程序统一放在主存中。

1.2.3 三总线结构

主存总线(这里面实际是三种总线——数据总线、地址总线、控制总线)、I/O 总线、DMA 总线。

  • 主存总线:这里面实际是三种总线——数据总线、地址总线、控制总线。
  • I/O 总线:用于连接中低速的 I/O 设备,通过 I/O 接口与系统总线相连,目的是将低速设备与高速设备分离,如 USB、PCI 总线。
  • DMA 总线:直接内存访问总线。

1.3 外部总线(外总线、通信总线)

计算机和外部设备(如远程通信设备、测试设备)之间的总线称为外部总线。

2 总线事务和定时

总线事务的四个阶段:

  • 申请分配阶段
  • 寻址阶段
  • 传输阶段
  • 结束阶段

2.1 同步定时方式

总线控制器采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。

若干个时钟产生相等的时间间隔,每个间隔构成一个总线周期。在一个总线周期中,发送方和接收方可进行一次数据传送。

因为采用统一的时钟,每个部件或设备发送或接收信息都在固定的总线传送周期中,一个总线的传送周期结束,下一个总线传送周期开始。

  • 优点:传送速度快,具有较高的传输速率;总线控制逻辑简单。
  • 缺点:主从设备属于强制性同步;不能及时进行数据通信的有效性检验,可靠性较差。
  • 特点:同步通信适用于总线长度较短(不容易发生信号跳变)及总线所接部件的存取时间比较接近的系统

2.2 异步定时方式

在异步定时方式中,没有统一的时钟,也没有固定的时间间隔,完全依靠传送双方相互制约的“握手”信号来实现定时控制。

  • 优点:总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换,自动适应时间的配合。
  • 缺点:比同步控制方式稍复杂一些,速度比同步定时方式慢。

四种方式:

  • 不互锁方式:主设备发出“请求”信号后,不必等到接到从设备的“回答”信号,而是经过一段时间,便撤销“请求”信号。而从设备在接到“请求”信号后,发出“回答”信号,并经过一段时间,自动撤销“回答”信号。双方不存在互锁关系。
  • 半互锁方式:主设备发出“请求”信号后,必须待接到从设备的“回答”信号后,才撤销“请求”信号,有互锁的关系。而从设备在接到“请求”信号后,发出“回答”信号,但不必等待获知主设备的“请求”信号已经撤销,而是隔一段时间后自动撤销“回答”信号,不存在互锁关系。
  • 全互锁方式:主设备发出“请求”信号后,必须待从设备“回答”后,才撤销“请求”信号;从设备发出“回答”信号,必须待获知主设备“请求”信号已撤销后,再撤销其“回答”信号。双方存在互锁关系。

3 总线的性能指标

3.1 性能指标

性能指标 描述
总线传输周期总线周期 一次总线操作所需的时间(包括申请阶段、寻址阶段、传输阶段和结束阶段),通常由若干个总线时钟周期构成
总线时钟周期 机器的时钟周期
总线工作频率 总线周期的倒数,指一秒内传送几次数据
总线时钟频率 机器的时钟频率
总线宽度 又称为总线位宽,它是总线上同时能够传输的数据位数,通常是指数据总线的根数,如 32 根称为 32 位(bit)总线
总线带宽 即总线的数据传输率,即单位时间内总线上可传输数据的位数,通常用每秒钟传送信息的字节数来衡量,单位可用字节/秒(B/s) 表示
信号线数 地址总线、数据总线和控制总线 3 种总线数的总和称为信号线数

【注】大多数情况下,一个总线周期包含多个总线时钟周期;有的时候,一个总线周期就是一个总线时钟周期;有的时候,一个总线时钟周期可包含多个总线周期。

3.2 性能指标的相关公式

  • 总线带宽 = 总线工作频率 × 总线宽度(bit/s) = 总线工作频率 × (总线宽度/8)(B/s)
  • 总线带宽 = (1/总线周期) × 总线宽度(bit/s) = (1/总线周期) × (总线宽度/8)(B/s)

【注 1】总线带宽是指总线本身所能达到的最高传输速率。在计算实际的有效数据传输率时,要用实际传输的数据量除以耗时。

【注 2】总线带宽的单位中,KB、MB 等均是以 10 为底的单位,切记!!(严格来讲 KB、MB 应写成 kB、mB)

3.3 相关例题

【例 1】在 32 位总线系统中,若时钟频率为 500MHz,传送一个 32 位字需要 5 个时钟周期,则该总线系统的数据传送速率为多少?

【解法 1】时钟频率为 500MHz,则时钟周期为 1/500MHz = 2us。

传送一个 32 位字需要 5 个时钟周期,所以需要的总线周期为 10us。

所以数据传送速率 = 4B/10us = 0.4B/us = 0.4*106B/s = 400MB/s。

【解法 2】时钟频率为 500MHz,而总线传送一个 32 位字需要 5 个时钟周期,所以总线的工作频率为 500MHz/5 = 100MHz。

数据传送速率 = 4B*100MHz = 400MB/s。

【例 2】假设某系统总线在一个总线周期中并行传输 4 字节信息,一个总线周期占用 2 个时钟周期,总线时钟频率为 10MHz,则总线带宽为多少?

【解法 1】时钟频率为 10MHz,则时钟周期为 1/10MHz = 100us。

一个总线周期占用 2 个时钟周期,所以需要的总线周期为 200us。

所以数据传送速率 = 4B/200us = 0.02B/us = 0.02*106B/s = 20MB/s。

【解法 2】总线时钟频率为 10MHz,而一个总线周期占用 2 个时钟周期,所以总线的工作频率为 10MHz/2 = 5MHz。

总线带宽 = 4B*5MHz = 20MB/s。

【注】通过以上两题,可以发现解法二更为便捷。以后我们采用解法二来解题。

【例 3】某同步总线采用数据线和地址线复用方式,其中地址/数据线有 32 根,总线时钟频率为 66MHz,每个时钟周期传送两次数据(上升沿和下降沿各传送一次数据)。

(1)该总线的最大数据传输率(总线带宽)是多少?

(2)若该总线支持突发(猝发)传输方式,传输一个地址占用一个时钟周期,则一次“主存写”总线事务传输 128 位数据所需要的时间至少是多少?

【解】(1)总线时钟频率为 66MHz,每个时钟周期传送两次数据,所以总线工作频率为 66MHz*2 = 132MHz。

最大数据传输率 = 132MHz*4B = 528MB/s。

(2)可以将突发(猝发)传输方式视为 DMA 传输,则只需传送一个地址,然后再传输 4 次数据即可。

因此,按照题意,传输 128 位数据所需要的时钟周期数 = 1 + 4/2 = 3,所需时间是 3 * (1/66MHz) = 45ns。

【注】我们一般将突发(猝发)传输方式视为 DMA 传输。

【例 4】假定一台计算机采用 3 通道存储器总线,配套的内存条型号为 DDR3-1333,即内存条所接插的存储器总线的工作频率为 1333 MHz、总线宽度为 64 位,则存储器总线的总带宽大约是多少?

【解】采用 3 通道存储器总线,总线宽度扩大三倍,即 64*3 = 128 位 = 24B,则总带宽大约是 24B*1333MHz = 32GB/s。

【例 5】在异步串行传输方式下,起始位为 1 位,数据位为 7 位,偶校验位为 1 位,停止位为 1 位,如果波特率为 1200bit/s(即每秒传输 1200 比特),求这时的有效数据传输率为多少?

【解】一个数据包含 1+7+1+1=10 位,而每秒传输 1200 比特,则每秒可传输 1200/10=120 个数据。

每个数据中,有效数据位为 7 位,则每秒可传输 7*120 = 840 位有效数据,即有效数据传输率 = 840b/s。

【例 6】假定 CPU 通过存储器总线读取数据的过程为:发送地址和读命令需 1 个时钟周期,存储器准备一个数据需 8 个时钟周期,总线上每传送 1 个数据需 1 个时钟周期。若主存和 Cache 之间交换的主存块大小为 64B,存取宽度和总线宽度都为 8B,则 Cache 的一次缺失损失至少为()个时钟周期?

【解】Cache 一次缺失的数据大小为 64B,而存取宽度和总线宽度都为 8B,所以一共需要传送 8 次。

每次传送都有:发送地址和读命令需 1 个时钟周期,存储器准备一个数据需 8 个时钟周期,总线上每传送 1 个数据需 1 个时钟周期,所以一共花费 10 个时钟周期。

因此Cache 的一次缺失损失至少为 10*8 = 80 个时钟周期。

【例 7】假定采用多模块交叉存储器组织方式,存储器芯片和总线支持突发传送,CPU 通过存储器总线读取数据的过程为:发送首地址和读命令需 1 个时钟周期,存储器准备第一个数据需 8 个时钟周期,随后每个时钟周期总线上传送 1 个数据,可连续传送 8 个数据(即突发长度 = 8)。若主存和 Cache 之间交换的主存块大小为 64B,存取宽度和总线宽度都为 8B,则 Cache 的一次缺失损失至少为()个时钟周期?

【解】支持突发传送,即 DMA 传输,传输前:发送首地址和读命令需 1 个时钟周期,存储器准备第一个数据需 8 个时钟周期;传送时:后每个时钟周期总线上传送 1 个数据,可连续传送 8 个数据。总时钟周期为 8+8+1 = 17。

Cache 一次缺失的数据大小为 64B,而存取宽度和总线宽度都为 8B,又因为可连续传送 8 个数据(即突发长度 = 8),所以一共需要传送 1 次,因而 Cache 的一次缺失损失至少为 17 个时钟周期。

posted @ 2022-09-15 15:38  漫舞八月(Mount256)  阅读(1665)  评论(0编辑  收藏  举报