天天看點

【ARMv8基礎篇】400系列控制器IP

作者:MuggleZero 

 《ARMv8架構初學者筆記》專欄位址:《ARMv8架構初學者筆記》

前文:

【ARMv8基礎篇】異常等級

【ARMv8基礎篇】寄存器

【ARMv8基礎篇】函數調用标準和棧布局

【ARMv8基礎篇】異常分類以及異常處理機制

這一節我們簡單介紹一下ARMv8架構中的一些控制器。這裡主要介紹400系列的IP。

GIC-400

GIC-400是一個高性能、區域優化的中斷控制器,具有進階微控制器總線架構(AMBA)進階可擴充接口(AXI)接口。它在片上系統(SoC)配置中檢測、管理和配置設定中斷。你可以對GIC-400進行配置,以便為你的預期應用提供所需的最佳功能、性能和門數量。

通過GIC-400的下列軟體可配置設定,提供的中斷控制選項如下所示:

  • 啟用或禁用。
  • 配置設定到兩個組中的一個,組0或組1。
  • 優先處理。
  • 在多處理器實作中向不同的處理器發出信号。
  • 可以是電平敏感的,也可以是邊沿觸發的。

    GIC-400實作了以下的功能:

  • GIC安全擴充,支援。
  • 将0組中斷作為安全中斷,将1組中斷作為非安全中斷。
  • 可以選擇使用FIQ中斷請求,向連接配接的處理器發出安全中斷信号。GIC-400總是使用IRQ中斷請求發出第1組中斷的信号。
  • GIC虛拟化擴充,為管理虛拟化中斷提供硬體支援。 關于GIC安全擴充和GIC虛拟化擴充的更多資訊,請參閱ARM通用中斷控制器架構規範。

我們可以在最多有八個處理器的多處理器系統中使用GIC-400。GIC-400 支援并非每個處理器都實作了 ARM 安全擴充或 ARM 虛拟化擴充的系統。在這種情況下,每個處理器隻使用它所知道的功能。有關資訊,請參閱 ARM 通用中斷控制器V3/V4架構規範。

GIC-400實作了以下的中斷類型:

  • 16個軟體産生的中斷(SGI)。
  • 每個處理器有6個外部私有外設中斷(PPI)。
  • 每個處理器有1個内部PPI。
  • 可配置的共享外設中斷(SPI)的數量。

GIC-400的BD如下圖所示,GIC-400從中斷輸入信号中檢測PPI和SPI。每個處理器的每個PPI中斷ID都有一個信号。每個SPI中斷ID隻有一個輸入信号,與SoC中處理器的數量無關。SGI沒有輸入信号,在GIC-400中使用AXI程式設計接口生成。

【ARMv8基礎篇】400系列控制器IP

GIC-400通過使用中斷輸出信号來通知每個處理器中斷或虛拟中斷的存在。還有中斷輸出信号,為系統電源控制器提供喚醒功能,見第2-12頁的電源管理。

虛拟中斷是由在運作虛拟機的每個處理器上執行的特殊軟體建立和管理的。這種管理程式不是GIC-400架構的一部分,但對于使用中斷控制器虛拟化中斷是必要的。有關管理程式的概述,請參見ARM通用中斷控制器架構規範。

GIC-400實作了ARM通用中斷控制器架構規範所描述的分區。它由一個配置設定器和一個CPU接口以及系統中每個處理器的虛拟CPU接口組成。

GIC-400實作了可選的GIC虛拟化擴充,使其能夠管理虛拟中斷,前提是系統中至少有一個處理器實施了管理程式。盡管管理程式軟體将實體中斷轉化為虛拟中斷并處理複雜的情況,但GIC-400經常在硬體中處理來自虛拟機的中斷通路的确認和結束。在處理器上運作的管理程式和GIC-400中的虛拟接口控制塊構成了虛拟配置設定器。

CCI-400

CCI(Cache Coherent Interconnect)是ARM中的cache一緻性控制器。

CCI-400将互連和一緻性功能結合到一個子產品中。它支援多達兩個ACE 主節點的連接配接,例如:

  • Cortex®-A7 processor
  • Cortex-A15 processor
  • Cortex-A17 processor
  • Cortex-A53 processor
  • Cortex-A57 processor

CCI-400還支援多達三個ACE-Lite主站,例如,ARM MaliTM-T600系列圖形處理器單元(GPU)。

所有這些接口都有可選的DVM消息支援,以管理分布式記憶體管理單元(MMU),例如CoreLink MMU-400。這些單元可以通過CCI-400與最多三個ACE-Lite從機進行通信。

硬體管理的一緻性可以通過共享片上資料來提高系統性能和降低系統功耗。

CCI-400cache一緻性控制器實作了ACE協定,demo系統框圖如下所示:

【ARMv8基礎篇】400系列控制器IP

CCI-400cache一緻性控制器是一個基礎設施元件,支援以下内容:

  • 在最多兩個ACE主站和三個ACE-Lite主站之間的資料一緻性,有三個獨立的序列化點(PoS)和全屏障支援。
  • 主站和最多三個從站之間的高帶寬、跨欄互連功能。
  • 主站之間的DVM消息傳輸。
  • QoS虛拟網絡(QVN)。
  • 服務品質(QoS)調節,用于塑造流量曲線。
  • 性能監測單元(PMU),統計與性能有關的事件。
  • 一個程式員視圖(PV),控制一緻性和互連功能。

NIC-400

CoreLink NIC-400(Network Inter Connect)網絡互連是高度可配置的,使您能夠建立一個完整的高性能、優化和符合AMBA标準的網絡基礎設施。CoreLink NIC-400網絡互連有許多可能的配置。它們的範圍從單一的橋接元件,例如AHB到AXI協定轉換橋,到由多達128個主站和64個AMBA協定的從站組成的複雜互連。我們可以把它看作是晶片内部的連接配接器。

NIC-400的配置可以由多個交換機組成,有許多拓撲結構選項。下面的圖顯示了NIC-400的頂層框圖,其中包含:

  • 多個開關。
  • 多個AMBA從屬接口塊(ASIB)。
  • 多個AMBA主接口塊(AMIB)。
【ARMv8基礎篇】400系列控制器IP

NIC-400支援以下特性:

  • 1-128個slave接口,可以是AXI3/4,AHB-Lite salve和AHB-Lite 鏡像master接口;
  • 1-64個master接口,可以是AXI3/4,AHB-Lite salve,AHB-Lite 鏡像master接口,APB/2/3/4;
  • APB/2/3/4;
  • 階層化的時鐘門控;
  • Switch之間的Noc技術(Network on chip)
  • ….吧啦吧啦一堆特性

NIC-400和AMBA寄存器之間的差別

AMBA Designer是一種配置工具,可以生成CoreLink NIC-400網絡互連的具體實作。AMBA Designer驅動CoreLink NIC-400網絡互連生成引擎,為一組配置參數和實作腳本提供以下内容:

  • Verilog寄存器傳輸級(RTL)。
  • 測試平台和stimulus。
  • 合成腳本。

CoreLink NIC-400網絡互連和AMBA設計器的文檔套件和實作腳本是一起使用的。它們描述了CoreLink NIC-400網絡互連的原理和配置選項。這兩套文檔之間沒有重複的内容。以下章節描述了每套文檔所提供的資訊。

  • CoreLink NIC-400 Network Interconnect documentation on page 1-6.
  • AMBA Designer documentation.
  • Documentation for optional CoreLink features on page 1-6
【ARMv8基礎篇】400系列控制器IP

DMC-400

DMC(Dynamic Memory Controller)-400是400系列的一個動态記憶體控制器。DMC-400是一個符合進階微控制器總線結構(AMBA)的片上系統(SoC)外設,由ARM開發、測試和授權。它是一個高性能、區域優化的記憶體控制器,與AMBA ACE-Lite協定相容。它支援以下記憶體裝置:

  • 雙倍資料速率2(DDR2)同步動态随機存取存儲器(SDRAM)。
  • 低功耗雙倍資料速率2(LPDDR2)-S2 SDRAM
  • lpddr2-s4 SDRAM
  • 雙倍資料速率3(DDR3)SDRAM
  • 低電壓DDR3 SDRAM。
【ARMv8基礎篇】400系列控制器IP

DMC-400實作了SoC和晶片外部DRAM裝置之間的資料傳輸。它通過一個或多個ACE-Lite接口連接配接到片上系統。它通過其存儲器接口塊和DFI接口連接配接到DRAM裝置。

它實作了與以下協定的相容:

  • ACE-Lite協定
  • AMBA3 APB協定
  • JEDEC LPDDR2 JESD209-2标準
  • JEDEC DDR3 JESD79-3D标準
  • JEDEC DDR2 JESD79-2E标準
  • DFI v2.1.1規範。

DMC400有以下特性:

  • 可在Verilog中使用的軟宏單元
  • 可配置的硬體,支援面積和性能優化
  • 多個ACE-Lite系統接口
  • 多個未完成的交易
  • 系統服務品質(QoS)和請求仲裁,以實作低延遲傳輸和記憶體帶寬的最佳利用
  • 對交易障礙的保護
  • ACE-Lite系統接口的可配置位寬
  • 獨立的讀接受能力和寫接受能力
  • AMBA ACE-Lite獨占通路傳輸
  • ACE-Lite和APB接口之間的同步n:1時鐘連接配接
  • 多個記憶體接口
  • 優化使用外部存儲器總線
  • DRAM省電
  • 可程式設計的外部存儲器寬度
  • 每個記憶體接口的可配置的記憶體晶片選擇數量
  • 用于64位和32位SDRAM的記憶體糾錯碼(ECC)。
  • 使用DFI2.1.1接口的實體層(PHY)接口。

MMU-600

MMU-600是一個系統級記憶體管理單元(SMMU),将輸入位址轉換為輸出位址。這種轉換是基于位址映射和記憶體屬性資訊,這些資訊可以從存儲在記憶體中的配置表和轉換表中獲得。 MMU-600實作了Arm SMMU架構3.1版,即SMMUv3.1,正如Arm®系統記憶體管理單元架構規範,SMMU架構3.0版和3.1版所定義的。 從輸入位址到輸出位址的位址轉換被描述為位址轉換的一個階段。MMU-600可以執行。

  • 階段1翻譯,将一個輸入虛拟位址(VA)翻譯成一個輸出實體位址(PA)或中間實體位址(IPA)。
  • 階段2翻譯,将輸入的IPA翻譯成輸出的PA。
  • 第1階段和第2階段的組合翻譯,将輸入的VA翻譯成IPA,然後再将該IPA翻譯成輸出的PA。

MMU-600為每個階段的翻譯執行翻譯表行走。

除了将一個輸入位址翻譯成一個輸出位址,一個階段的位址翻譯還定義了輸出位址的記憶體屬性。通過兩階段翻譯,第二階段翻譯可以修改第一階段翻譯定義的屬性。一個位址轉換階段可以被禁用或旁路,MMU-600可以為禁用和旁路的轉換階段定義記憶體屬性。

MMU-600可以将翻譯表的查找結果緩存在翻譯旁觀緩沖器(TLB)中。它還可以将配置表緩存在一個配置緩存中。

MU-600包含以下關鍵部件:

  • 翻譯緩沖單元(TBU),使用TLB來緩存翻譯表,
  • 翻譯控制單元(TCU),控制和管理位址翻譯。
  • 分布式翻譯接口(DTI)互連部件,将多個TBU連接配接到TCU上。
歡迎關注我的個人微信公衆号,一起交流學習嵌入式開發知識!

繼續閱讀