文章 ID: 000086179 内容类型: 产品信息和文件 上次审核日期: 2021 年 08 月 27 日

如何配置 SoC 系统,以便从FPGA软逻辑到 HPS 内存的高速缓存一致性访问?

环境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
说明

要允许高速缓存一致性访问从FPGA 软逻辑到 HPS 内存的物件数量,必须:

  • MMU 页面表
  • NOC 安全设置
  • CoreLink™ 二级高速缓存控制器 L2C-310 配置
  • AXI 边带信号:Axi_cache_security桥
    • AxCache 和 AxUser
    • AXPROT

MMU 页面表

必须设置 MMU 页面表,以便定义目标内存区域可缓存、安全或不安全。  有关 MMU 页表分配属性和安全模式(信任区)的更多详细信息,请参阅 Linux 和 ARM 文档。

  • 内存必须标记为"写回写分配"(WBWA)。
  • 要从 Linux 用户空间应用程序或内核访问内存,安全模式应该是不安全的。
  • 安全性应该用于通过在 ARM 安全状态下运行的过程来访问内存(不会与主管模式相混淆)。

如果 CP15:SDR:NS = 1,则启用安全模式。  注:NS 寄存器将仅在监督模式下可用。

 

NOC 安全设置

Arria® 的 10 SoC 片上 SoC 网络 iinterconnect (NOC) 可在每个桥上和整个互连过程中通过防火墙进行配置。  要通过 HPS 桥允许访问

  • 必须配置防火墙以允许通过桥梁进行交易
  • 必须设置主控件以允许/禁用安全访问
  • 如果主程序设置为禁用安全访问,则所有交易将更改为非安全状态,从而会破坏一致性。

由 SoC EDS 软件版本 16.0 及更高版本生成的 U-boot 禁用 NOC 防火墙,但设置主设备以禁用安全访问。

要通过 FPGA2HPA 桥实现安全访问:

设置寄存器fpga2soc_ctrl:allow_secure为 1(默认 = 0,不允许安全)

 

级别 2 高速缓存控制器配置

CoreLink™ 二级高速缓存控制器 L2C-310 配置

建议将 Aux Control 寄存器位 [22]: 共享属性覆盖启用位 设置为 ON。   此设置禁用 L2 高速缓存控制器的优化,后者将一些非高速缓存访问从 MPU 内核或 ACP 端口转换为可缓存的非分配访问,并将一致性点从 SDRAM 移到 L2 高速缓存。    如果大师通过 L3 或 FPGA2SDRAM 网桥访问 SDRAM,一致性点的变化可能会导致问题。

参考 :CoreLink™ 二级高速缓存控制器 L2C-310,修订版:r3p3 技术参考手册 (ARM DDI 0246H (ID080112)):第 2.3.2 节可分享属性。

以上内容默认设置为从 https://github.com/altera-opensource/u-boot-socfpga 提供的最新 u-boot-socfPGA 版本 https://github.com/altera-opensource/u-boot-socfpga

 

驱动来自 Qsys 的 AXI 边带信号:Axi_cache_security桥

Axi_cache_security桥应该用于将 AxCache/AxUser/AxProt 边带信号驱动到正确的值。 Arria 10 桥示例 https://www.altera.com/support/support-resources/design-examples.html中可找到Axi_cache_security

 

AxCache[3:0] 侧带信号

正确的 AxCache [3:0] 设置取决于 MMU Page 表设置

请参阅 ARM® 架构参考手册 ARMv7-A 和 ARMv7-R 版本 (ARM DDI 0406C.c (ID051414) :A3.5 内存类型和属性以及内存顺序模型 AxCache[1] 必须是 1,以进行一致的访问。

参考 :Cortex™-A9 MPCore® 修订版:r3p0 技术参考手册 (ARM DDI 0407G (ID072711):2.4 加速器一致性端口

AW ® 高速缓存[3:0]

[3] - 写入可分配

[2] - 读取可分配

[1] - 可缓存

[0] - 可缓冲

AW®高速缓存的初始值建议[3:0]

awcache = 0xF;4'b1111 写入分配,读取分配,可缓冲,可缓存

arcache = 0xF;4'b1111 写入分配,读取分配,可缓冲,可缓存

注意:应根据使用案例更改这些设置

 

AxUser[4-0] 侧带信号

AxUser 信号用于传递额外信息,对于 ACP 交易,用于传递内部和外部可缓存信息。

AW®用户[3:0]

[0] - 必须将共享属性设置为 1 以进行一致访问

[3:1] - 未经 SCU 解释为 ACP 没有内部高速缓存策略,如果高速缓存以专有模式设置,将传递给 L2 高速缓存控制器使用。

参考资料 :Cortex™-A9 MPCore® 修订版:r3p0 技术参考手册 (ARM DDI 0407G (ID072711):2.4 加速器一致性端口,

AxUSER 的初始值建议[4:0]

awuser = 0x1;5'b00001

aruser = 0x1;5'b00001

注:在 Arria 10 上,AXI 共享属性与"1"内部绑定。

 

AxProt[2:0] 侧带信号

AxProt 指定了交易的安全状态,且必须匹配目标内存的安全状态,以确保高速缓存受到打击。

AW®PROT[2:0]

[2] - 指令预取

[1] - 非安全访问

[0] - 特权访问

 

AxProt 的初始值建议[2:0]

MMU 页面表内存安全设置,CPU 安全设置和 ACP 交易安全状态必须完全匹配,以确保高速缓存受到打击。

CPU 在安全状态下访问的安全内存位置的非安全 ACP 交易将导致高速缓存丢失和一致访问。

 

 

支持的场景摘要:

不安全

  • MMU Page 表设置为将目标内存区域定义为非安全性
  • 设置了 NOC 防火墙,以允许非安全地访问目标区域
  • F2H 桥对目标区域执行安全或非安全的访问

安全

  • MMU 页面表设置为将目标内存区域定义为安全
  • NOC 防火墙设置为允许安全地访问目标区域
  • F2H 桥对目标区域执行安全访问。

相关产品

本文适用于 1 产品

英特尔® Arria® 10 SX SoC FPGA

本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。