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.

[参考译文] TMS570LC4357:加载/存储指令时序

Guru**** 2606375 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/718928/tms570lc4357-load-store-instructions-timings

器件型号:TMS570LC4357

您好!

我正在使用 PMU 在指令级执行一些测量、以验证 EMIF 访问外部 FPGA 的预期结果。

我还扩展了这些测试以测量负载并写入不同类型的存储器:L2_Flash、L2_RAM、EMIF、系统模块寄存器。

根据系统的不同时钟、我尝试根据 Cortex-R5文档(附录 B)了解单个负载或单个存储指令的时序、但在将测量值与预期时序进行比较时、我不理解任何内容。

执行测量时、系统处于以下状态:

  • PMU 周期计数器配置为对每个周期进行计数
  • GCLK = 300MHz (cortex-R5时钟)
  • HCLK=150MHz (2级存储器时钟)
  • VCLK = 75MHz (PCR1下系统模块的时钟)
  • VCLK3 = 50MHz (EMIF 时钟)
  • 闪存等待状态根据 TMS570LC4357数据表进行配置(即3)
  • 用于访问 FPGA 的 EMIF 配置:16位数据总线、读取设置/选通/保持周期组合= 8个 EMIF 时钟周期;写入设置/选通/保持周期组合= 5个 EMIF 时钟周期
  • 缓存已禁用
  • MPU 被启用:EMIF 和系统外设存储器是严格排序的存储器、RAM 和闪存是正常的可高速缓冲存储器
  • 下面给出的所有周期数都是针对 PMU 周期计数寄存器访问的(6个周期:根据 Cortex-R5文档、这个测量是准确的)
  • 测量仅涵盖一条指令(LDR 或 str)
  • 用于加载和存储的所有地址在64位上对齐
  • 所有 cortex-R5性能特性(例如:双问题)被保持在它们的复位状态(被启用)

测试期间使用的地址:

  • L2RAM:0x08000000
  • L2FLASH: 0x00044000
  • 系统模块: 0xFFFFFF00
  • EMIF:0x60000000

以下是测量结果:

  • L2RAM:加载16位>> 14个周期
  • L2RAM:加载32位>> 14个周期
  • L2RAM:加载64位>> 14个周期
  • L2RAM:存储16位>> 1个周期
  • L2RAM:存储32位>> 1个周期
  • L2RAM:存储64位>> 1个周期
  • L2FLASH:加载16位>> 24个周期
  • L2FLASH:加载32位>> 24个周期
  • L2FLASH:加载64位>> 24个周期
  • SYS:加载16位>> 31个周期
  • SYS:加载32位>> 31个周期
  • SYS:写入16位>> 27个周期
  • SYS:写入32位>> 27个周期
  • EMIF:加载16位>> 129个周期
  • EMIF:加载32位>> 177个周期
  • EMIF:加载64位>> 275个周期
  • EMIF:存储16位>> 50个周期
  • EMIF:存储32位>> 48个周期
  • EMIF:存储64位>> 88个周期

我可以从这些测量中看到的一些信息:

  • 对于 EMIF 访问、一个读取的16位传输应该需要48个内核周期(50 MHz 时为8个周期>300 MHz 时为48个周期)、并且一个负载16位和一个负载32位之间大约有48个周期。 加载32位和加载64位之间还有2*48个周期的差异。
  • 在 Cortex-R5 TRM 的第 B.11章中、存储在内部 RAM 中需要一个周期、这就是测量值

但我无法回答以下问题、即使在搜索此论坛、ARM 社区论坛和 ARM 应用手册之后也是如此。 我不明白我做了什么错!

  • L2 RAM 有0个等待状态、其时钟(HCLK)是内核时钟(GCLK)的一半:负载应该持续2或3个周期、对吧?
  • L2闪存有3个等待状态、 其时钟(HCLK)是内核时钟(GCLK)的一半:负载应该持续6或7个周期、对吧?  
  • EMIF:单个 EMIF 16位读取传输应该花费48个周期:为什么有81个周期(129 - 48)的开销?
  • EMIF:为什么存储16位和存储32位具有相同的持续时间(应该是5个 EMIF 周期>> 30个内核周期)? 我认为所有对严格排序存储器的访问都应该在内核继续执行之前完成?
  • EMIF:为什么64位存储不会持续4 * 30个周期、而是更少(88)?
  • 系统模块寄存器:为什么是这些数字?

我们非常感谢您在这方面提供的任何帮助!

谢谢、

盖尔

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

    使用最新的芯片修订版本(修订版 B)、有一个针对 EMIF 问题的修复、此问题强制将外部存储器配置为"严格排序"。 现在、您可以将其配置为正常类型或器件类型、并看到显著的性能改进。

    我们需要一些时间来完成对您所测量访问的周期分析。 我会随时向您发布获取此数据的进度。

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

    您好、Sunil、

    感谢您提供信息。 我意识到这一点、并且我也对系统外设和 EMIF 空间的 MPU 配置为"器件"进行了测量。

    在这种情况下、测量的时间如下:

    • L2RAM:加载16位>> 14个周期
    • L2RAM:加载32位>> 14个周期
    • L2RAM:加载64位>> 14个周期
    • L2RAM:存储16位>> 1个周期
    • L2RAM:存储32位>> 1个周期
    • L2RAM:存储64位>> 1个周期
    • L2FLASH:加载16位>> 24个周期
    • L2FLASH:加载32位>> 24个周期
    • L2FLASH:加载64位>> 24个周期
    • SYS:加载16位>> 29个周期
    • SYS:加载32位>> 29个周期
    • SYS:写入16位>> 1个周期
    • SYS:写入32位>> 1个周期
    • EMIF:加载16位>> 125个周期
    • EMIF:加载32位>> 173个周期
    • EMIF:加载64位>> 271个周期
    • EMIF:存储16位>> 1个周期
    • EMIF:存储32位>> 1个周期
    • EMIF:存储64位>> 1个周期

    在器件模式下、访问顺序是否在 MPU 区域内? 我的意思是:如果内核对0x60000000执行写操作、则需要1个周期、但如果随后对0x60000004执行读操作、内核是否会在之前的写操作完成前被挂起?

    我还在论坛上发现、EMIF 访问具有"内部延迟12 VCLK"来启动传输(假设"VCLK"指的是 VCLK3)、但它不是专门针对 TMS570LC4357。 该延迟是否适用于 TMS570LC4357中的 EMIF?

    从 L2RAM 读取是否有类似的延迟? L2FLASH? 外设互连子系统下的外设寄存器?

    我希望您能给我一些答案。

    谢谢、

    盖尔

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

    有没有关于存储器访问时间的新闻?
    谢谢
    盖尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Gael、

    我还没有这些数据。 我将检查进度并返回给您。

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

    是否有进展的最新情况?

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

    我希望事情进展顺利。 您认为何时能够提供一些答案?

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

    遗憾的是、我无法找到 EMIF 的任何带宽或吞吐量信息。 数据可能必须在我们的末尾被重新唤醒、具体取决于所需数据的严重程度。

    尝试回答您提出的其他一些问题:

    在器件模式下、访问顺序是否在 MPU 区域内? 我的意思是:如果内核对0x60000000执行写操作、则需要1个周期、但如果随后对0x60000004执行读操作、内核是否会在之前的写操作完成前被挂起?

    >>是的、在这种情况下、CPU 将等待写入完成。

    我还在论坛上发现、EMIF 访问具有"内部延迟12 VCLK"来启动传输(假设"VCLK"指的是 VCLK3)、但它不是专门针对 TMS570LC4357。 该延迟是否适用于 TMS570LC4357中的 EMIF?

    >>是的、此延迟也适用于 LC4357。

    从 L2RAM 读取是否有类似的延迟? L2FLASH? 外设互连子系统下的外设寄存器?

    >>是的、从 L2RAM/L2FLASH 或从 LC4357上的任何外设寄存器读取需要30个 CPU 周期。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答。

    对于最后一个、您能详细说明一次读取的30个 CPU 周期吗? 如果每个闪存、RAM 和外设的时钟和等待状态不同(闪存、RAM、外设)、该数字如何相同?

    此外、我提供给您的测量结果显示每个访问类型的周期少于30个(RAM:14个周期、闪存:24个周期、SYS 模块:29个周期)。 如何解释这一点?

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

    您能否提供调查进度的最新信息?

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

    关于此主题的任何新闻?

    谢谢、
    盖尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    有什么想法、您什么时候可以回答这个问题?
    此致、
    盖尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Gael、

    获得这些内部时序很困难、因为需要设计团队专门的时间来重现访问并提供数据。 我将向您提供数据可用的估计时间。 很抱歉、您收到这些计时信息的时间很长。

    此致、
    Sunil
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、谢谢。 我知道这可能很长、但我想确保我没有错过不同存储器访问配置(如果适用)中可能影响系统性能的任何内容。