摘要: DS3134访问PCI总线来获取和存储HDLC数据包,因为它们被发送和接收。这个 应用笔记详细说明了如何计算 DS3134需要多少可用的总线带宽才能正常运行。希望通过应用程序说明中提供的信息,用户 可以修改这些数字以适应其特定的应用程序。参考表1来引用本文中使用的变量 。
DS3134访问PCI总线来获取和存储HDLC数据包,因为它们被发送和接收。这个 应用笔记详细说明了如何计算 DS3134需要多少可用的总线带宽才能正常运行。希望通过应用程序说明中提供的信息,用户 可以修改这些数字以适应其特定的应用程序。参考表1来引用本文中使用的变量 。
表1 变量的定义
变量 | 定义 | 有效范围 |
B | 主机更新
接收空闲队列并发送之前处理的平均数据包数 等待队列或读取接收-完成 队列和发送-完成队列。 | 1,2,3, .... |
C | 每个数据包所需的平均总线周期数。 | 1,2,3, .... |
D | 传输数据所需的总线周期数。 | 1,2,3, .... |
P | 包的大小(以字节为单位)(在本应用说明中总是64)。 | 64 |
R | 由于RAM访问延迟而增加的平均总线周期数。 | 0,1,2, .... |
X | 向数据缓冲区发送/获取数据包数据所需的平均总线访问次数。 | 1,2,3, .... |
总线访问类型
有四种类型的总线访问由DS3134或主机执行,以支持DS3134中的
DMA。在下面的描述中,变量D定义为数据周期数
,变量R定义为由于RAM访问延迟所需的总线周期数。
类型1:由DMA从主机RAM中突发读取
当DMA突发从主机RAM读取数据时所需的总线周期总数是[3+R+D]。这个
方程来源于DS3134数据表的图9.1B,如下所示。
周期 | 不。周期 要求 |
处理周期 | 1 |
回转周期 | 1 |
RAM访问延迟周期 | R |
数据周期 | D |
回转周期 | 1 |
类型2:DMA对主机RAM的突发写
当DMA突发写入主机RAM时所需的总线周期总数是[2+R+D]。该
方程来自DS3134数据表的图9.1C,如下所示。
周期 | 不。周期 要求 |
处理周期 | 1 |
RAM访问延迟周期 | R |
数据周期 | D |
回转周期 | 1 |
类型3:由主机写入DS3134
当主机写入DS3134时,所需的总线周期总数为7。
类型4:由主机读取到DS3134
当主机从DS3134读取数据时,所需的总线周期总数为7。注:对于3型和4型,7周期是酒庄固有的,不能改变。
每个包所需的总线周期数
为了计算总线利用率,必须知道所需的总线周期数。为了得到这个
数字,我们做了几个假设,如下所示。图1显示了主机和DMA对于接收或传输的每个数据包将遵循的标准
顺序。从图1中我们
可以创建一个公式来计算每个数据包所需的平均总线周期数,即
变量C。
接收方
Cr = [(3 + R + 24) / 12] + [(P / 4) + (2 + R) X] + [2 + R + 3] + [(2 + R + 6) / 6] + [4 (7 / B)]
传输方
Ct = [(3 + R + 12) / 12] + [2 + R + 1] + [3 + R + 4] + [(P / 4) + (3 + R) X] + [(2 + R + 6) / 6] + [4 (7 / B)]
总公式
C = 21.16 + 3.5r + 0.5p + 56 / b + (5 + 2r) x
计算每个包所需的总线周期数的假设
所有数据包都是64字节(最坏的情况)。
HDLC包的FCS不传输到PCI总线或从PCI总线传输。
在接收端,只使用大缓冲区(禁用小缓冲区)。
接收DMA将突然读取空闲队列并突然写入已完成队列。
发送DMA将突发读取挂起队列并突发写入完成队列。
所有的数据包都适合在一个缓冲区中(即,只有一个描述符);这是合理的,因为数据包是64字节。
所有物理层链路都被数据包填充,没有空闲代码发送或接收。
中断例程和开销(如访问本地总线)没有被考虑。
图1所示。每包总线周期流程图
注:
12个描述符x 2个dwords= 24
以字节为单位的数据包,4字节/数据周期
6个描述符x 1个dword = 6
图1继续
注:
12个描述符x 1个dword = 12。
总线利用率
有了每个数据包所需的已知总线周期数,就可以计算总线利用率。总线
利用率被定义为DS3134在一秒钟内所需的总线周期数除以
除以一秒钟内可用的总线周期总数,对于本应用说明
的目的,由于PCI时钟速率假设为33MHz,因此将为33,000,000。以下两个公式可用于
计算总线利用率。
下面是总线使用的三个例子。在每种情况下,假设所有 传入和传出的数据包都是64字节长(P = 64),并且主机平均每8个数据包(B = 8)更新和读取DS3134上DMA使用的 队列。在每种情况下都有 两种情况。在场景A中,主机RAM是紧密耦合的,每次访问平均只为 增加一个总线周期。在方案B中,主机RAM不是紧密耦合的,每次访问 平均要增加7个总线周期。可以修改这三个示例以适应确切的应用程序。
表2 示例说明
情况下 | 描述 | 不。每秒包数 每个HDLC通道 |
案例1 | 256个通道,64kbps | 125 |
案例2 | 64通道T1 | 3000 |
案例3 | 2清通道T3 | 84000 |
表3。巴士使用的例子
情况下 | R | P | B | X | 不。巴士单车 [C] | 总线利用率(%) |
1 | 1 | 64 | 8 | 3. | 84.7 | 8.2 |
1 b | 4 | 4 | 8 | 3. | 113.2 | 11.0 |
2 | 1 | 64 | 8 | 1 | 70.7 | 41.1 |
2 b | 4 | 64 | 8 | 1 | 87.2 | 50.7 |
3 | 1 | 64 | 8 | 1 | 70.7 | 36.0 |
3 b | 4 | 64 | 8 | 1 | 87.2 | 44.4 |
假设:B = 8;病例A, R = 1;情况B, R = 4。
注:
每秒包数:(HDLC通道速度)x(1字节/8位)/(字节/包数)
例如,情形1:64000bps x (1/8) / 64 bytes = 125
案例1
在Chateau内部FIFO中有1024个块,每个块是4个dwords(16字节)。加载了256个通道后,每个通道只能分配给1024 / 256 = 4个块(4 x 16 = 64字节/通道)。
由于每个FIFO块是64字节,因此FIFO中的64字节数据包可以在两次总线访问中填充或清空。对于最坏情况的假设,我们在这个例子中使用3个。
案例2
在情形2中有64个通道,因此,FIFO中的块大小可以是1024 / 64 = 16块(16 × 16 = 256字节/通道)。
每个FIFO块大小为256字节;因此,FIFO中的64字节数据包可以在一次总线访问中填充或清空。
案例3
在情况3中有两个通道,因此,FIFO中的块大小可以是1024 / 2 = 512 块(512 × 16 = 8192字节/通道)。
每个FIFO块大小为8192字节;因此,FIFO中的64字节数据包可以在一次总线访问中填充或清空。
修订历史
版本 | 日期 | 变化 |
1 | 02/24/98 | 最初的发布 |
2 | 12/2/98 |
|
3. | 03/02/99 明代修改 |
|
4 |
| |
5 | 2/20/01 |
|
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308