← 返回 计组与微机控制

计组与微机控制

5.4 总线结构和时序

5.4 总线结构和时序

5.4 总线结构和时序 图 1

一.总线的结构:

5.4 总线结构和时序 图 25.4 总线结构和时序 图 3

二.总线周期:

一次总线传输通常包括:

1. 总线请求与仲裁阶段;

2. 寻址阶段;

3. 数据传输阶段;

4. 结束阶段。

总线时序要解决的问题:

> 发送方什么时候把数据放到总线上,接收方什么时候采样数据。

常见控制信号:

- 读信号;

- 写信号;

- 地址锁存信号;

- 准备好/等待信号;

- 中断请求;

- DMA 请求。(也就是之前操作系统的直接DMA来内存分配来的)

5.4 总线结构和时序 图 4

三.总线性能

总线带宽表示单位时间内总线最大数据传输能力。

公式:总线带宽 = 数据宽度 / 总线周期

例如:

数据宽度 = 2 Byte

时钟频率 = 10 MHz

若每周期传一次,则带宽约为 20 MB/s

如果一次传输需要 2 个时钟周期,则带宽约减半。

5.4 总线结构和时序 图 5

PCXT总线:

PC XT 总线是 IBM PC XT 中使用的总线,后来扩展为 ISA 总线。

特点:

- 8 位数据总线;

- 包含地址线、数据线、控制线;

- 支持存储器读写、I/O 读写;

- 支持中断和 DMA;

- 有电源、时钟、复位等信号。

典型信号:

- 地址:`SA0-SA19`;

- 数据:`SD0-SD7`;

- I/O 读写:`IOR#`、`IOW#`;

- 存储器读写:`MEMR#`、`MEMW#`;

- 中断:`IRQ`;

- DMA:`DRQ/DACK`。

5.4 总线结构和时序 图 65.4 总线结构和时序 图 7

四.总线的时序与仲裁:从请求总线到完成总线使用的操作序列称为总线事务。

一次总线事务就是一次完整的总线操作。

比如 CPU 从内存读一个数据,这不是一瞬间完成的,而是有一连串步骤:

申请总线获得总线放出地址和命令传输数据释放总线

这一整套过程就叫 总线事务。

典型总线事务的五个阶段:

请求阶段 仲裁阶段 寻址阶段 传输阶段 释放阶段

请求阶段: 主设备想使用总线时,不能直接抢。

因为总线是公共资源,同一时刻通常只能一个主设备使用。

比如 CPU 想访问内存,DMA 控制器也想访问内存,它们都想用总线。

这时候主设备会发出请求:这个阶段叫 请求阶段。

5.2 仲裁阶段:决定谁先用

如果只有一个主设备请求总线,那很简单,直接给它用。

但如果多个主设备同时请求总线,就需要一个机构决定谁先使用。

这个过程叫 总线仲裁。

总线仲裁就像老师点名:CPU 举手。DMA 也举手。老师决定先让谁发言。

谁被允许,谁就获得总线控制权。

仲裁就是多个设备抢总线时,决定谁先用。

5.3 寻址阶段:告诉从设备“我要访问你”

主设备拿到总线使用权后,会把目标地址放到地址总线上。

同时,还会通过控制总线发出读/写命令。

比如 CPU 想读内存地址 1000H:

地址总线:1000H控制总线:读命令数据总线:暂时还没有有效数据

这个阶段叫 寻址阶段。

寻址阶段的核心是:主设备告诉系统:我要访问哪个从设备、哪个地址、做什么操作。

5.4 传输阶段:真正交换数据

寻址完成后,从设备开始响应。

如果是读操作:CPU 发地址和读命令。内存找到对应数据。内存把数据放到数据总线上。CPU 从数据总线上取走数据。

如果是写操作:CPU 发地址和写命令。CPU 把数据放到数据总线上。内存把数据写入对应地址。

所以传输阶段才是真正的数据交换阶段。

5.5 释放阶段:总线用完了,让给别人

一次操作完成后,主设备要撤销相关信号,释放总线。

释放之后,其他设备才可以申请使用总线。

所以完整过程是:

申请 → 分配 → 给地址/命令 → 传数据 → 释放

五.总线的数据传送方式

非突发传送方式:每个传送周期内都先传送地址,再传送数据,每次只能传输一个数据。

这个很好理解。

假设 CPU 要从内存连续读 3 个数据:

地址1 → 数据1地址2 → 数据2地址3 → 数据3

每传一个数据,都要重新给一次地址。

所以非突发传送的特点是:

一个地址对应一个数据。

它的好处是简单。缺点是效率低,因为每传一次数据都要重新传地址。

突发,也叫猝发传送方式

突发传送方式:寻址阶段发送连续数据单元的首地址,在传输阶段传送多个连续单元的数据,直到全部数据传完后才释放总线。

突发传送的核心是:

只给一次首地址,然后连续传多个数据。

比如 CPU 要读地址 1000、1004、1008、100C 这几个连续地址中的数据。

非突发方式:

地址1000 → 数据1地址1004 → 数据2地址1008 → 数据3地址100C → 数据4

突发方式:

首地址1000 → 数据1 → 数据2 → 数据3 → 数据4

也就是说,后面的地址不用一个一个传,因为它们是连续的。

从设备知道:

你给我首地址 1000,接下来连续传 4 个数据,那我就自动按顺序取:

100010041008100C

突发传送为什么快?

因为它减少了地址传送次数。

非突发传 4 个数据,需要:

地址1 + 数据1地址2 + 数据2地址3 + 数据3地址4 + 数据4

如果地址和数据各占 1 个时钟周期,那就是 8 个周期。突发传 4 个数据,需要:

首地址 + 数据1 + 数据2 + 数据3 + 数据4 只需要 5 个周期。

所以突发传送适合连续数据块传输,比如:

从内存连续读一段数据。CPU取一段连续指令。Cache和主存之间传送一个块。DMA连续搬运数据。

练习题:题目大意:

总线时钟频率 100MHz,宽度 32位,地址/数据线复用。每传一个地址或数据占用一个时钟周期。总线支持突发传送。一次“主存写”总线事务传输 128位数据,问至少需要多少时间。

先算一个时钟周期多长:100MHz = 每秒 100,000,000 次。

所以周期:T = 1 / 100MHz = 10ns 所以一个时钟周期是 10ns。

数据总线宽度 32位,说明一次最多传 32位数据。

现在要传 128位数据。128 / 32 = 4 所以数据要传 4 次。

题目说 地址/数据线复用。这句话很重要。地址/数据线复用的意思是:

地址和数据使用同一组线。同一时刻这组线不能既传地址又传数据。

所以必须分时使用:先用这组线传地址。然后再用这组线传数据。

因为是突发传送,所以只需要传一次首地址。

于是总周期数是:

首地址:1 个周期 数据1:1 个周期数据2:1 个周期 数据3:1 个周期数据4:1 个周期 总共 5 个周期。

每个周期 10ns,所以:5 × 10ns = 50ns9.2 再看总线宽度 32位

数据总线宽度 32位,说明一次最多传 32位数据。

现在要传 128位数据。

需要传几次?

128 / 32 = 4

所以数据要传 4 次。

9.3 为什么还要加一次地址?

题目说 地址/数据线复用。

这句话很重要。

地址/数据线复用的意思是:

地址和数据使用同一组线。

同一时刻这组线不能既传地址又传数据。

所以必须分时使用:

先用这组线传地址。然后再用这组线传数据。

因为是突发传送,所以只需要传一次首地址。

于是总周期数是:

首地址:1 个周期数据1:1 个周期数据2:1 个周期数据3:1 个周期数据4:1 个周期

总共 5 个周期。

每个周期 10ns,所以:

5 × 10ns = 50ns答案就是 50ns,选 C。

9.4 为什么不是 40ns?

40ns 只算了 4 次数据传输,没有算首地址。

但题目明确说地址/数据线复用,并且每传一个地址或数据占一个周期。

所以地址必须占 1 个周期。

9.5 为什么不是 80ns?

80ns 是非突发传送的思路。

如果不用突发,每传一个 32位数据都要传一次地址:

地址1 + 数据1地址2 + 数据2地址3 + 数据3地址4 + 数据4一共 8 个周期。

8 × 10ns = 80ns。但是题目说支持突发传送,所以最少时间是 50ns。

10. 总线定时是什么意思?

总线定时就是研究:

总线上的每个信号什么时候出现,什么时候有效,什么时候撤销。

比如 CPU 读内存时:什么时候把地址放到地址总线上?什么时候发读命令?内存什么时候把数据放到数据总线上?CPU什么时候取数据?什么时候释放总线?

这些时序安排就叫总线定时。

可以把总线定时理解成“大家按照什么节奏配合”。

11. 同步定时方式

同步定时方式的核心是:

所有操作都跟着统一的总线时钟走。

就像全班同学做广播体操,所有人听同一个口令。

T1:CPU放地址。T2:CPU发读命令。T3:内存准备数据。T4:CPU读取数据。

所有阶段都是提前规定好的。

11.1 同步方式的优点

同步方式速度快。因为大家都知道什么时候该做什么,不需要反复确认。

控制逻辑也简单。比如规定好:

第一个时钟周期放地址。第二个时钟周期发读命令。第四个时钟周期数据一定有效。

那 CPU 到第四个周期直接取数据就行。

11.2 同步方式的缺点

缺点是可靠性差一些,适应性差。为什么?

因为同步方式假设从设备一定能按规定时间准备好数据。

比如 CPU 规定:第 4 个周期我来取数据。

可是如果内存慢了一点,第 4 个周期数据还没准备好,那 CPU 就可能读到错误数据。所以同步方式适合:总线比较短。设备速度差不多。传输延迟比较稳定。系统内部部件配合紧密。