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.

[参考译文] TMS320C6678:MSMC 配置(预取、L3、L2)

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1316751/tms320c6678-msmc-configuration-prefetching-l3-l2

器件型号:TMS320C6678

背景:

我们希望在多个内核之间共享数据。 为此、我们实施了2种方法。 一种方法基于多核导航器模块、另一种方法基于 MSMC。 我们需要 从性能的角度对这两种方法进行比较。 但是、为了验证性能、我们需要知道每种方法的特定配置。

Question:

  • 如何知道 MSMC 的配置方式? MSMC 手册提到可以配置为2级或3级存储器、但没有找到任何来源说明如何将共享存储器配置为2级或3级存储器。 知道这一点很重要、因为我猜内存配置的选择会因可缓存性和预取而影响性能。
  • 如何知道存储器区域是否可预取。 我知道、我们可以通过设置相应 MAR 寄存器中的相应位使存储区域可预提取。 但是、默认情况下这些设置了吗? 我必须设置它们吗? MSMC 的存储器区域是否始终启用预取?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、负责的工程师(Sankari)目前在未来 几 周内不在办公室。

    请等待 2周 后回复。

    谢谢。

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

    Nikla,

    是的、回答正确。

    本手册未提及 MSMC 如何配置为2级/ 3级共享内存。

    即使在 IPC 示例中、也已配置和使用 MSMC、但仍不归类为级别2和级别3。 ( MSMC 由 IPC 模块的 API 配置和使用,即"共享内存区域")

    --

    请给我一些时间... 让我更仔细地看一下并返回。

    [quote userid="557132" url="~/support/processors-group/processors/f/processors-forum/1316751/tms320c6678-msmc-configuration-prefetching-l3-l2如何知道内存区域是否可以预取? 我知道、我们可以通过设置相应 MAR 寄存器中的相应位使存储区域可预提取。 但是、默认情况下这些设置了吗? 我必须设置它们吗? MSMC 的内存区域是否始终启用预取?

    为此,我们可能需要查看 MSMC 用户指南/应用程序说明--> https://www.ti.com/lit/pdf/sprugw7 

     即使我还在研究它……

    我很快就会回到你的身边。

    此致

    尚卡里

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

    Niklas、

    关于第二个问题、

    [quote userid="557132" url="~/support/processors-group/processors/f/processors-forum/1316751/tms320c6678-msmc-configuration-prefetching-l3-l2如何知道内存区域是否可以预取? 我知道、通过设置相应的中的相应位、可以使存储器区域具有可预取性

    为确保正确,请读取这些位...并检查默认设置的方式...并根据您的需要进行更改...

    使用 C66x 的 MAR 寄存器的以下位字段。

    1. PC - 允许复制字段启用/禁用受影响地址范围的缓存能力。

           0内存范围不可高速缓冲

          1个存储器范围可高速缓冲。

    2.pfx - 启用/禁用受影响地址范围的可预取性。 L2存储器控制器使用该位向 XMC 传送给定地址范围是否可预取。

            0内存范围不可预取。

            1存储器范围可预取。

    如需更多信息、请参阅该主题。  https://e2e.ti.com/support/processors-group/processors/f/processors-forum/590641/tms320c6678-mar-configuration-for-cache-prefetch-with-openmp-runtime

    关于您的第一个问题、让我回过头来谈谈您。

    此致

    尚卡里

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid="557132" url="~/support/processors-group/processors/f/processors-forum/1316751/tms320c6678-msmc-configuration-prefetching-l3-l2如何知道 MSMC 是如何配置的? MSMC 手册提到可以配置为2级或3级存储器、但我没有找到任何来源来说明如何将共享存储器配置为2级或3级存储器

    我从 MSMC 应用手册(如下)中理解的是、当在*。cfg / linker.cmd 文件中配置 MSMC 时、如果它使用 MPAX 重新映射以进行存储器扩展、则被视为3级共享存储器。

    因为,除此之外,级别2和级别3 MSMC SRAM 没有任何其他差异。

    --

    从位于 C:\ti\pdk_c665x_2_0_16\packages\ti\csl\arch\c66x\dsp.c 的 dsp_xmc.c 中提取 src

    /**
     * \brief   Set prefetch request priority for XMC
     *
     * \param   baseAddress   Base Address of the XMC instance
     *                        (SOC_DSP_XMC_CTRL_BASE)
     *
     * \param   priority      Priority from 0(highest) to 7(lowest)
     *
     * \return  status        Always returns STW_SOK
     */
    int32_t DSPXMCSetPrefetchPriority(uint32_t baseAddress, uint32_t priority)
    {
        HW_WR_FIELD32((baseAddress + MDMAARBX), MDMAARBX_PRI, priority);
        return STW_SOK;
    }
    
    /**
     * \brief   Invalidate Prefetch buffers in XMC
     *
     * \param   baseAddress   Base Address of the XMC instance
     *                        (SOC_DSP_XMC_CTRL_BASE)
     *
     * \return  status        Always returns STW_SOK
     */
    int32_t DSPXMCInvalidatePrefetch(uint32_t baseAddress)
    {
        HW_WR_FIELD32((baseAddress + XPFCMD), XPFCMD_INV, 0x1U);
    
        /* Dummy read to ensure completion of command */
        HW_RD_REG32((baseAddress + XPFACS));
        return STW_SOK;
    }
    

    ——

    cfg 文件中的示例、

    "image_processing_evmc6657l_master_pe66.cfg"  

    位于 \ti\processor_sdk_rtos_c665x_6_03_00_106\demos\image_processing\ipc\evmc6657l\master\no_instrument\build\configPkg\package.cfg

    /* Shared Memory base address and length */
    var SHAREDMEM           = 0x0c200000;
    var SHAREDMEMSIZE       = 0x00200000;
    
    SharedRegion.setEntryMeta(0,
        { base: SHAREDMEM, 
          len:  SHAREDMEMSIZE,
          ownerProcId: 0,
          isValid: true,
          name: "MSMCSRAM_IPC", /**** NIKLAS ---> have a look at here ***/
        });
    
    /* ===

    MSMC 应用手册中的说明:- https://www.ti.com/lit/ug/sprugw7a/sprugw7a.pdf

    页号:20  

    2.3 MSMC 存储器

    2.3.1 MSMC SRAM

    MSMC SRAM 可用作共享2级或3级存储器:

    •共享2级内存- MSMC 内存可由 L1D 和 L1P 高速缓存进行高速缓存;L2不会高速缓存对 MSMC SRAM 的请求。

    •共享3级存储器- MSMC 存储器不是可以在 L2上直接进行缓存、而是可以在 L1D 和 L1P 进行缓存。 但是、如果它使用 C66x CorePac MPAX 中的地址扩展功能重新映射到外部地址、MSMC 存储器可以在 L1和 L2高速缓存中缓存为共享的 L3存储器。 为此、必须在 MAR 寄存器中启用缓存(使用 MAR PC 位)的映射区域的映射空间。

    此致

    尚卡里