一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

如何计算DS31256 HDLC控制器的PCI 总线利用率

来源:analog 发布时间:2023-08-24

摘要: 本应用笔记说明了如何计算DS31256 HDLC控制器的总线带宽。并展示了一个实验室实测的结果。同时演示了一个总线利用率速算表,该速算表如果需要可以索要。

DS31256 HDLC控制器通过PCI总线存取发送和收到的HDLC包。本应用笔记讨论如何计算DS31256正常工作所需的总线带宽。所涉及到的相关术语的定义在本文的开始部分给出。

根据本应用笔记所提供的信息,用户只需适当调整速算表(备索)中的一些数据,就可将它用于特定的应用中。

表1. 本应用笔记所涉及到的变量的定义

VariableDefinitionValid Range
BAverage number of packets processed before the host updates the receive free queue and transmit pending queue or reads the receive done queue and transmit done queue1, 2, 3, . . . .
CAverage number of bus cycles required per packet1, 2, 3, . . . .
DNumber of bus cycles needed for data to be transferred1, 2, 3, . . . .
PPacket size in bytes64
RAverage number of bus cycles added due to latency in RAM access0, 1, 2, . . . .
XAverage number of bus accesses required to send or obtain packet data to, or from the data buffers1, 2, 3, . . . .


总线访问类型

DS31256或主机执行四种类型的总线访问,以支持DS31256内的直接存储器访问(DMA)。在下面的讨论中,变量D定义为数据周期数,变量R定义为由于RAM访问时间的关系,所需要的总线周期数。

访问类型1:DMA突发读主机RAM

当DMA突发读主机RAM时所需要的总线周期总数为[3+R+D]。这可由图1表2得出。

表2. DMA读所需的总线周期总数

CycleNo. Cycles Required
Address Cycle1
Turnaround Cycle1
RAM Access Latency CycleR
Data CycleD
Turnaround Cycle1


图1. DS31256 PCI总线读

访问类型2:DMA突发写主机RAM

当DMA突发写主机RAM时所需的总线周期总数为[2+R+D]。这可从图2表3得到。

表3. DMA写所需的总线周期总数

CycleNo. Cycles Required
Address Cycle1
RAM Access Latency CycleR
Data CycleD
Turnaround Cycle1


图2. DS31256 PCI总线写周期

访问类型3:主机写DS31256

主机写入DS31256时所需的总线周期总数为7。

访问类型4:主机读DS31256

主机读取DS31256时所需的总线周期总数为7。

注意:对于访问类型3和4,7个访问周期是DS31256所固有的,不能改变。

每个包所需的总线周期数

为计算总线利用率,首先必须知道所需要的总线周期数。为得到该数据,我们做了一些假设列于表4图3给出了在收到或发出一个数据包时主机和DMA将要执行的标准流程。根据图3,我们有可能得出一个公式,来计算每个包所需要的平均总线周期数,即变量C。

发送侧

发送侧周期 = 读等待队列 + 写水平描述符链 + 读描述符 + 从主机存储器读取包 + 写完成队列 + 读/写寄存器。

Ct = [(3 + R + 12)/12] + [2 + R + 1] + [3 + R + 4] + [(P/4) + (3 + R)X] + [(2 + R + 6)/6] + [4(7/B)]

接收侧

接收侧周期 = 读自由队列 + 将包写入主机存储器 + 写描述符 + 写完成队列 + 读/写寄存器。

Cr = [(3 + R + 24)/12] + [(P/4) + (2 + R)X] + [2 + R + 3] + [(2 + R + 6)/6] + [4(7/B)]

总公式

Ct + Cr = 21.16 + 3.5R + 0.5P + (5 + 2R)X + 56/B

表4. 为了便于计算每个包所需总线周期数所作的假设

1All packets are 64 bytes (seen as worst case).
2The Frame Check Sequence (FCS) of the HDLC packet is not transferred to, or from the PCI bus.
3On the receive side, only large buffers are used (small buffers are disabled).
4The receive DMA will burst read the free queue and burst write the done queue.
5The transmit DMA will burst read the pending queue and burst write the done queue.
6All packets fit within a single buffer (i.e., only one descriptor). This is reasonable because packets are 64 bytes.
7All physical layer links are filled with packets; no idle codes are sent or received.
8Interrupt routines and overhead (like accesses to the local bus) are not considered.


图3. 每个包的总线处理流程

注:

  1. 12个描述符 x 1双字 = 12个发送等待队列描述符双字

  2. 包数据字节数 = 4字节/数据周期

  3. 6个描述符 x 1双字 = 6个发送完成队列描述符双字

图3. (续)

注:

  1. 12个描述符 x 2双字 = 24个接收自由队列描述符双字

  2. 包数据字节数 = 4字节/数据周期

  3. 6个描述符 x 1双字 = 6个接收完成队列描述符双字

PCI总线利用率

总线利用率定义为DS31256每秒所需的总线周期数除以每秒可供使用的总线周期总数。总线利用率可按照特定的HDLC配置和业务量计算。计算中假定PCI总线时钟速率为33MHz (33,000,000Hz),并且只用一片DS31256。以下就是PCI总线利用率的详细计算方法。

公式1:

公式2:

注:

声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

社群二维码

关注“华强商城“微信公众号

调查问卷

请问您是:

您希望看到什么内容: