文章 ID: 000087175 內容類型: 疑難排解 最近查看日期: 2017 年 08 月 10 日

為什麼在執行 Linux 作業系統的 SoC 設計上,會看到快取一致性問題?

環境

  • Intel® Quartus® Prime Standard Edition 軟體
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    描述

    由於 Linux BSP 預設未在 SMP 模式中啟用快取和 TLB 維護廣播(暫存器 ACTLR 的位 0'0」),因此可能會看到快取一致性問題。

    如需此位的描述,請參閱 ARM A9 MPCore 技術參考手冊[2]中廣播的第 1.7.3 節維護作業:

    所有在同一一致性領域以 SMP 模式運作的處理器,都可以傳送並接收 TLB 與快取記憶體維護作業。ARM 架構參考手冊提供廣播作業的詳細資訊。A9-MP 叢集中的 Cortex-A9 處理器在 SMP 模式 (ACTLR) 中運作時,會廣播可廣播的維護作業。SMP=1)以及啟用維護操作廣播時 (ACTLR)。FW=1)。Cortex-A9 處理器在 SMP 模式 ACTLR 中運作時,可接收並執行廣播維護作業。SMP=1。

    解決方法

    建議同時設定 ACTLR。FW 與 ACTLR。SMP 至 1。我們可以透過在 proc-v7 中修改 linux 代碼來設定位。S 檔案如下:

    #ifdef CONFIG_SMP
    ALT_SMP(mrc p15,0,r0,c1,c0,1)
    ALT_UP (mov r0,#(1 << 6)) @ 偽造以供 UP 使用
    已啟用 tst r0、#(1 << 6) @ SMP/nAMP 模式?
    orreq r0, r0, #(1 << 6) @ 啟用 SMP/nAMP 模式
    orreq r0, r0, r10 @ 啟用 CPU 特定 SMP 位
    orr r0, r0, #(1) @ 新增此行可啟用 ACTLR[0]
    mcreq p15, 0, r0, c1, c0, 1
    #endif

     

    相關產品

    本文章適用於 2 產品

    Cyclone® V FPGA 與 SoC FPGA
    Intel® Arria® 10 FPGA 與 SoC FPGA

    這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。