SylixOS在ZYNQ7000上劃分CACHE

  • 範圍
    本文檔介紹了SylixOS在Xilinx Zynq-7000開發板上如何進行L2 Cache劃分。
    在AMP模式中,core 0與core 1共用512K L2 Cache,這勢必會引起兩個核的Cache競爭問題。
  • 用處
     通常情況下,L2 Cache被core 0,core 1共享。
    core 0的內存訪問操作可能會清除core 1所使用的L2緩存內容,從而使core 1的軟件性能有不確定性。
     有時,我們需要爲core 0 或core 1提供更多的確定性行爲。
    尤其是架構爲AMP時。
     L2 Cache劃分可以滿足這種需求。
    如圖 2.1、圖 2.2爲SMP與AMP架構圖。
    SylixOS在ZYNQ7000上劃分CACHE
    圖 2.1 SMP架構圖
    SylixOS在ZYNQ7000上劃分CACHE
    圖 2.2 AMP架構圖
  • 原理
     通過寄存器的控制可以將L2 Cache鎖定在不同core上。
    這讓用戶可以將L2 Cache的功能保留在特定的core上。
    Cache way是分區的寬度,Zynq的L2 Cache有8 Cache ways。
     L2 Cache控制器只能被鎖定8個不同的方式。
    如圖 3.1所示,在Zynq 7000中,Cortex-A9 MP核的64個AXI被分爲8個可以鎖定的組。
    SylixOS在ZYNQ7000上劃分CACHE
    圖 3.1分組
  • 配置
    具體寄存器說明參照Xilinx 官方數據手冊UG585。
    配置1:通常情況(L2 Cache 被core 0和core 1共享)。
    Reg9_d_lockdown0 = 0x0;
    Reg9_1_lockdown0 = 0x0;
    Reg9_d_lockdown1 = 0x0;
    Reg9_1_lockdown1 = 0x0;
     配置2:4-0-4方式,每個核用一半(core 0使用Cache way【0..3】;core 1使用Cache way【4..7】)。
    reg9_d_lockdown0 = 0xFFF0;
    reg9_1_lockdown0 = 0xFFF0;
    reg9_d_lockdown1 = 0xFF0F;
    reg9_1_lockdown1 = 0xFF0F;
     配置3:2-4-2方式(core 0使用Cache way【0..1】;core 1使用Cache way【6..7】;兩個核共享Cache way【2..5】)。
    reg9_d_lockdown0 = 0xFFC0;
    reg9_1_lockdown0 = 0xFFC0;
    reg9_d_lockdown1 = 0xFF03;
    reg9_1_lockdown1 = 0xFF03;
  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章