This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM623:基准测试说明

Guru**** 2394305 points
Other Parts Discussed in Thread: AM62L

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1480517/am623-benchmarking-clarification

器件型号:AM623
主题中讨论的其他器件:AM62L

工具与软件:

e2e.ti.com/.../SPRADO91TI-PDFen_2D00_us_2D00_1.pdf

AM62L 基准测试如上:

全部、  

客户询问:

我 对基准测试文档(请参阅下面的注释部分)、特别是第3章有疑问? 我需要更好地理解文档中的一些内容、以便了解任何结果与我们所寻求的内容有多大的相关性。 似乎一般般、当我们在系统存储器(包括 LPDDR4)中移动数据时、大多数测量都用于存储器带宽和延迟测量、但我不清楚它如何/是否与 LPDDR4中的运行指令有关。

我的一些具体问题是:

  • 在第3.1.1节中、我想了解当两个内核必须共享同一个 LPDDR4 PHY 接口时、使用两个线程(2个内核)如何提高性能。 我假设数据访问大小大于所有缓存级别。
  • 请帮助我理解下面两句话(来自第3.3.1节)。 如果 size 参数等于或小于高速缓存大小、这对我们测量外部存储器带宽有何帮助? 这基本上不会排除 LPDDR4存储器(第一次访问除外)吗?是否更能指示与高速缓存相关的延迟?

等于或小于给定级别高速缓存大小的 size 参数测量执行典型 for 循环或 memcpy()类型操作的软件可实现的内存带宽。 通常用于计算外部存储器带宽

  • 在第3.2节(关键存储器访问延迟)中、有一个表格包含 LPDDR4、OCSRAM 主站和 OCSRAM WKUP 的访问延迟。这是否真正意味着如果我们专门从 LPDDR4中提取任何内容(即使在 LPDDR4耗尽时还有指令)、那么我们预计平均延迟为166ns、在1.25GHz 下约为208个 CPU 周期?

谢谢!

此致、  

Blake

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="62892" url="~/support/processors-group/processors/f/processors-forum/1480517/am623-benchmarking-clarification "]在3.1.1节中、我想介绍在两个内核必须共享同一个 LPDDR4 PHY 接口时、使用两个线程(2个内核)如何提高性能。 我假设数据访问大小大于所有缓存级别。

    像 A53这样的现代处理器内核支持多个高速缓存行正在运行(读取时推测预取、写入时写入流式传输)、DDR 控制器具有突发运行的深命令队列尝试管理打开和关闭的页面、结果得到重新排序… 在这种采用 A53的特定情况下、单个内核无法使 DDR 接口饱和、两个内核并行。 对于最大吞吐量情况、飞行中将有大约十几个64字节突发脉冲。

    [报价 userid="62892" url="~/support/processors-group/processors/f/processors-forum/1480517/am623-benchmarking-clarification "]
    • 请帮助我理解下面两句话(来自第3.3.1节)。 如果 size 参数等于或小于高速缓存大小、这对我们测量外部存储器带宽有何帮助? 这基本上不会排除 LPDDR4存储器(第一次访问除外)吗?是否更能指示与高速缓存相关的延迟?

    等于或小于给定级别高速缓存大小的 size 参数测量执行典型 for 循环或 memcpy()类型操作的软件可实现的内存带宽。 通常用于计算外部存储器带宽

    [报价]

    这是存储器延迟、而不是带宽。 这是对 lat_mem_rd (旧开源基准测试)功能的人类语言解释。 有关其他说明、请参阅示例 https:/https://manpages.ubuntu.com/manpages/trusty/lat_mem_rd.8.html。

    [报价 userid="62892" url="~/support/processors-group/processors/f/processors-forum/1480517/am623-benchmarking-clarification "]在第3.2节(关键内存访问延迟)中、有一个 LPDDR4、OCSRAM 主代码和 OCSRAM WKUP 访问延迟表。这是否意味着如果我们专门从 LPDDR4中提取任何内容(即使是在超出 LPDDR4时指令也是如此)、那么我们预计 CPU 周期的平均延迟约为166208ns (报价约为1.25ns)?

    有。 Lat_mem_rd 旨在与 SoC 反向工程工具相同的测量功能。 此处附上的版本是草稿、lat_mem_rd 显示为~183ns、裸机测量(在8k 次迭代中平均32kB 缓冲器)为166ns。 测量和时序计算略有不同、文档中对此进行了说明、lat_mem_rd 代表典型的最坏情况 Linux 缓存行未命中。 在典型的最坏情况下、我不包含 LPDDR4刷新或类似的维护操作。

     Pekka

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Pekka:  

    客户询问:

    我已将以下信息传递给我们 FW 团队的一些成员、看看它是否会改变我们迄今为止对 AM62L 硬件系统性能的理解。 我想我们已经接近尾声、但还没有准备好讨论此行动项目。

    根据 Pekka 的评论,这是我的地方:

    关于 AM62L 系统性能与 LPDDR4相关的结论。

    LPDDR4带宽

    基准测试(LMBench bw_mem -P 2 8M bcopy)表明、双核 AM62L 可实现的 LPDDR4带宽最多约为1600MT/s 线速的73%。 一些基准测试测量(bw_mem -P 2 8M cp)显示、双核带宽仅为1600MT/s 值的40%。

    LPDDR4存储器延迟 (LMBench lat_mem_rd):

    正如下面交换中确认的、访问 LPDDR4 (数据或指令)时、典型最坏情况下 Linux 缓存行缺失的延迟为183ns。 对于在 LPDDR4中运行的裸机、最坏的情况典型值为166ns。 如下面的交换内容中所述、这不包括 LPDDR4器件的任何维护操作。

    James 说:

    在第3.2节(关键存储器访问延迟)中、有一个表格列出了 LPDDR4、OCSRAM 主站和 OCSRAM WKUP 的访问延迟。 这是否真的意味着、如果我们完全从 LPDDR4中提取任何内容(即使在 LPDDR4之外运行时为指令)、那么我们预计平均延迟应为166ns、在(1.25GHz)时约为208个 CPU 周期?

    Pekka 说:

    有。 Lat_mem_rd 旨在与 SoC 反向工程工具相同的测量功能。 此处附上的版本是草稿、lat_mem_rd 显示为~183ns、裸机测量(在8k 次迭代中平均32kB 缓冲器)为166ns。 测量和时序计算略有不同、文档中对此进行了说明、lat_mem_rd 代表典型的最坏情况 Linux 缓存行未命中。 在典型的最坏情况下、我不包含 LPDDR4刷新或类似的维护操作。

    对 James 对您的数据分析有何看法?  谢谢!

    Blake

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="62892" url="~/support/processors-group/processors/f/processors-forum/1480517/am623-benchmarking-clarification/5716047 #5716047"]

    LPDDR4带宽

    基准测试(LMBench bw_mem -P 2 8M bcopy)表明、双核 AM62L 可实现的 LPDDR4带宽最多约为1600MT/s 线速的73%。 一些基准测试测量(bw_mem -P 2 8M cp)显示、双核带宽仅为1600MT/s 值的40%。

    [报价]

    正确。 bcopy 选项意味着使用 memcpy()的完全优化 glibc 实现。 cp 选项意味着执行一个字符类型复制的内联循环、并按字节递增。 glibc 使用 SIMD 指令、对于正常的内联循环、编译器无法执行该操作。 因此,区别确实显示了为什么应该使用优化库中的 memcpy()而不是你自己的编码。 因此与硬件互连或 SoC 实施无关。

    [报价 userid="62892" url="~/support/processors-group/processors/f/processors-forum/1480517/am623-benchmarking-clarification/5716047 #5716047"]

    LPDDR4存储器延迟 (LMBench lat_mem_rd):

    正如下面交换中确认的、访问 LPDDR4 (数据或指令)时、典型最坏情况下 Linux 缓存行缺失的延迟为183ns。 对于在 LPDDR4中运行的裸机、最坏的情况典型值为166ns。 如下面的交换内容中所述、这不包括 LPDDR4器件的任何维护操作。

    [报价]

    圆珠笔数字是的,但让我再尝试一个解释。 裸机是在器件验证环境中捕获的波形。 Linux lat_mem_rd 是软件反向工程工具、根据经验测量 SW 测得的典型延迟。 可能比波形更加悲观、但操作系统本身不会增加任何开销。 因此、19ns 的差异(183与166)可能源于确切的 LPDDR4设置、和/或测量典型延迟的方式与更接近最佳情况的方式之间的差异。 无论如何、对于软件观察到的高速缓存缺失成本、无论使用什么操作系统、我都将使用183ns。 您可以在硬件上运行 lat_mem_rd、并且可以使用 LPDDR4设置来获得更精确的数字。 复制波形捕获将会困难得多。

     Pekka

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Pekka:  

    客户询问:

    虽然我们讨论的主题是不同延迟测量之间的差异、但我想知道为什么第3.1.2节中的流延迟值与166ns 和183ns 值不同。  

    说了这话,我确实有一个后续问题,关于以下与佩卡交换. 具体而言、Pekka 表示并行双核 A53可使 DDR 接口饱和、但单核不能饱和。  

    我的问题是、当我们最终转向四核系统时、仍然有这个 DDR 接口、如果两个内核能够使 DDR 接口饱和、我们不会看到性能下降? 我们将有4个使用相同接口的内核。 四核系统是否仍在使用相同的 DDR 控制器和 PHY 架构(1600MT/s)?  

    James 说:

    在第3.1.1节中、我想了解当两个内核必须共享同一个 LPDDR4 PHY 接口时、使用两个线程(2个内核)如何提高性能。 我假设数据访问大小大于所有缓存级别。

    Pekka 说:

    像 A53这样的现代处理器内核支持多个高速缓存行正在运行(读取时推测预取、写入时写入流式传输)、DDR 控制器具有突发运行的深命令队列尝试管理打开和关闭的页面、结果得到重新排序… 在这种采用 A53的特定情况下、单个内核无法使 DDR 接口饱和、两个内核并行。 对于最大吞吐量情况、飞行中将有大约六个64字节突发。

    Blake

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们讨论不同延迟测量之间的差异这一主题时、我想知道为什么第3.1.2节中的流延迟值与166ns 和183ns 值大不相同。  [报价]

    流用于测量带宽、而不是延迟。 输出的延迟是基于测量带宽的理论平均值、与 lat_mem_rd 测得的随机访问延迟增强无关

    也就是说,我有一个关于与 Pekka 的后续交易的问题。 具体而言、Pekka 表示并行双核 A53可使 DDR 接口饱和、但单核不能饱和。  [报价]

    对于 A53、这是测量结果。

    [报价 userid="62892" url="~/support/processors-group/processors/f/processors-forum/1480517/am623-benchmarking-clarification/5717887 #5717887"]我的问题是、当我们最终转向四核系统但仍然使用此 DDR 接口时、如果两个内核能够使 DDR 接口饱和、那么性能不会下降吗? 我们将有4个使用相同接口的内核。 四核系统是否仍在使用相同的 DDR 控制器和 PHY 架构(1600MT/s)?  [报价]

    如果您的应用程序类似于 memcpy()或与之接近的内容、则正确的2xA53足以被16位1600MT/s 内存接口绑定。 更进一步,您可以看到2xA53足以饱和甚至32位3200MT/s 内存接口 https://www.ti.com/document-viewer/lit/html/SPRADG0A#GUID-91FB0C24-ECF7-4902-8555-8ED25EFBE5A7/GUID-64A2040D-15EF-4C92-89EB-AF758D87CEE0 。

    另一种观察方法是,平均而言,两个内核在运行 memcpy (),而其他几个内核正在执行繁重的计算,两者应该都具有最高的性能。 因此、对于吞吐量导向的多核应用、您甚至希望单个内核能够在需要时使整个外部存储器接口饱和。

    A53实现了公平性,因此如果所有内核都在运行 memcpy(),它们将观察到每个内核大致相同的带宽。

    例如 A72或大多数 x86内核只需一个内核即可使整个存储器控制器饱和。

     Pekka  

    [/quote]