HyperLink 编程和性能考量
|
摘要 HyperLink 为两个 KeyStone 架构 DSP 之间提供了一种高速,低延迟,引脚数量少的通信接口。HyperLink 的用户手册已经详细的对其进行了描述。本文主要是为 HyperLink 的编程提供了一些额外的补充信息。 同时本文还讨论了 HyperLink 的性能,提供了在各种操作条件下的性能测试数据。对影响HyperLink 性能的一些参数进行了讨论。 文章的最后附上对应本文的应用代码。 1、HyperLink 介绍 HyperLink 为两片 DSP 之间提供一种高速、低延迟,引脚数少的通信连接接口。 HyperLink 的设计速度最高速率支持 12.5Gbps,目前在大部分的 KeyStone DSPs 上, 由于受限于 SerDes 和板级布线,速度接近为 10Gbps 。HyperLink 是 TI 专有的外设接口。相对于用于高速 Serdes 接口的传统的 8b10b 编码方式,HyperLink 减少了编码冗余,编码方式等效于 8b9b。单片 DSP 为 HyperLink 提供 4 个 SerDes 通道,所以 10Gbps 的HyperLink 理论吞吐率为 10*4*(8/9)= 35.5Gbps= 4.44GB/s. HyperLink 使用了 PCIE 类似的内存映射机制,但它为多核 DSP 提供了一些更灵活的特性。本文将会使用几个范例来详细解释这一点。 本文还讨论了 HyperLink 的性能,提供了在各种操作条件下的性能测试数据。对影响HyperLink 性能的一些因素进行了讨论。 2、HyperLink 配置 本节提供了一些配置 HyperLink 模块的补充信息。 2.1 Serdes 配置 Serdes 必须配置成期望的链接速度。 图 1 表示了输入参考时钟和输出时钟之间的关系。
输入参考时钟建议限制在 156.25MHz ~312.5MHz 范围内。Serdes PLL 的倍频系数必须合理配置生成的内部时钟(internal clock) 限制在 1.5625GHz ~ 3.125GHz 范围内。 最后的链接速度由内部时钟(internal clock)驱动,通过 link rate 配置来得到。 2.2 HyperLink 存储映射配置 HyperLink 的存储映射非常的灵活。 HyperLink 的用户手册对此作了详细的描述。本节将用两个例子来详细的解释它。图 2 是第一个例子。
图 2 通过 HyperLink 窗口 映射到远端不同类型的存储空间 在这个例子里面, DSP1 的存储空间映射到了 DSP0 的存储空间窗口 0x40000000~0x50000000DSP0 可以访问 DSP1 的所有内存空间,包括 LL2,SL2,DDR,就像访问自己的本地的存储空间一样。在 DSP0 上,所有的 Master 都可以通过以 0x40000000 起始的 Outbound 窗口地址来访问 DSP1 的存储空间,但是不同 master 事实上可能访问到 DSP1 上不同的存储空间。原因是HyperLink 发送侧传输数据时,会将 PrivID 一起传输。接受侧通过 PrivID 值,可以建立不同的地址映射表 对 DSP0 与 DSP1 的内存映射关系总结在下表(表 1)。
通过上表的配置,可知 当 DSP0 的 core 0/1 访问 0x40800000,它事实上 访问了 DSP1 上的 LL2 地址空间。 当 DSP0 的 core0 访问 0x4D000000,它事实上访问了 DSP1 上 DDR 的地址空间 0x8C000000 当 DSP0 的 core1 访问 0x4D000000 ,它事实上访问了 DSP1 上 DDR 的地址空间 0x8F000000 与本文档对应的范例工程将 HyperLink 配置成上述的内存映射关系。下面是关键部分的配置代码。
对于一些简单的应用,可能只是想访问远程 DSP 的 DDR 空间,那么下面的例子用于这种情况。存储映射关系如下图所示。
图 3 通过 HyperLink 窗口只映射到远端的 DDR 空间 这是最简单的例子,但是却可以访问远端DSP 的大块存储空间。DSP0 上的每个 master(core 或者其他外设) 都可以可以访问 DSP1 上 256MB DDR 空间。下表描述了 core0 和 core1 的对 remote DSP DDR 存储映射。
3、HyperLink 性能考虑 本节将让设计者对 HyperLink 访问远程存储空间的性能评估有基本的认识。同时提供了在不同的操作条件下获得的性能测试数据。大部分测试是在最理想的测试条件进行,以评估可以获得的最大吞吐量。 本文所描述的绝大部分性能数据是在 C6670EVM 上获得。C6670 EVM 上 DDR 配置成 64bit 位宽1333M, HyperLink 速率配置成 10Gbit。 一些影响 HyperLink 访问性能的因素在本节中将会被讨论到。 3.1 通过 HyperLink 实现存储拷贝的性能 下表(表 3)描述了使用 HyperLink 在 LL2 与远程大块线性存储空间进行数据传送测试获得的传输带宽。传输块的大小为 64KB。带宽的计算是通过计算传输总的字节数除以传输所用的时间获得。
上述数据展示了 cache 能够极大的改善 DSP 内核通过 HyperLink 读取数据的性能。 但是 L2 cache 却遏制了通过 HyperLink 写数据的性能,这是因为 L2 是 write-allocate cache。对于使能 L2cache 后的写操作,它总是会先从将要写入的存储区读取 128 字节的数据到 L2cache ,然后在 L2 cache 中修改数据,最后在 cache 冲突的时候回写回到原先的存储区,或者人为的回写回原存储区。
上述 EDMA 吞吐率数据是通过 TC0 (传输控制器 0)和 CC0(通道控制器 0)上测试得到,其他 TCs的数据会比 TC0 稍低。整个传输的瓶颈是在 HyperLink,不是在 EDMA 传输控制器上。 上述测试结果表明通过 HyperLink 进行写操作的性能会比通过 HyperLink 进行读操作的性能要好。 远程 DSP 存储空间类型不会对带宽造成明显的影响。访问远程 DSP 的 SL2 会比 LL2 快一些。 目前,通过 HyperLink 来访问远程 DSP 存储空间(相对其他接口)是具有最高的带宽性能的,但是访问远程存储空间比访问本地存储空间还是要慢。下表对比了访问本地 LL2 和 DDR 与远程DDR 的吞吐性能。
大体来说,对本地存储空间的写入吞吐率是对远程空间进行写入操作的吞吐率的 3 倍。对远程空间的读性能会更差些。我们应该尽量避免远程读取数据。 3.2 DSP core 通过 HyperLink 进行远程访问的延迟 DSP 核通过 HyperLink 访问远程空间的性能高度依赖于 cache。当 DSP 内核通过 HyperLink 来访问远程存储空间的时候,一个 TR(传输请求)可能会被生成并传送给 XMC(这取决于数据是否可以进入 cache 和被预取)。TR 将会是下面中的一种。 u 一个单一的元素- 如果存储空间不能被 cache 和预存取。 u 一个 L1 cache line – 如果存储空间可以进入 cache ,但是 L2 cache 没有被使能。 |






