0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SoC芯片設(shè)計系列-ARM CPU子系統(tǒng)組件介紹

SoC芯片 ? 來源:SoC芯片 ? 2024-05-31 10:56 ? 次閱讀

ARM CPU子系統(tǒng)組件介紹

1、概述

在ARM架構(gòu)的CPU子系統(tǒng)中,組件設(shè)計旨在高效地整合了多種功能模塊,以支持處理器核心的運行、內(nèi)存管理、中斷處理、數(shù)據(jù)交換以及與外部設(shè)備的交互等。以下是ARM CPU子系統(tǒng)中的一些關(guān)鍵組件:

1. CPU Cores (處理器核心): 包括多個處理單元,如高性能的Cortex-A系列核心或高效能效核心,負責(zé)執(zhí)行指令。

2. GIC (Generic Interrupt Controller): 管理中斷請求,確保系統(tǒng)對事件做出快速響應(yīng),支持多級中斷處理和虛擬化。

3. DSU (DynamIQ Shared Unit): 在具備DynamIQ技術(shù)的SoC中,DSU管理共享資源,如L3緩存,優(yōu)化多核通信和數(shù)據(jù)一致性。

4. Cache System: 包括L1 Cache(靠近核心的高速緩存,分指令和數(shù)據(jù)緩存),L2 Cache(更大,有時是多核共享)。

5. Memory Controller: 控制內(nèi)存訪問,如DDR控制器,管理與主存交互。6. AMBA總線: 如AMBA總線架構(gòu),提供系統(tǒng)內(nèi)部組件間的通信,包括常見的AXI(Advanced eXtensible Interface)協(xié)議。

7. System Control Block: 負理系統(tǒng)復(fù)位、時鐘、電源管理等初始化配置。

8. Security Features: 如TrustZone、加密引擎,確保系統(tǒng)安全。

9. Debugging and Trace: CoreSight、JTAGC等,方便調(diào)試和性能分析。

10. Connectivity and Peripherals: 包括USBEthernet控制器、顯示接口、I2C、SPI等,以支持與外設(shè)別交互。

這些組件共同構(gòu)成了復(fù)雜且高度集成的CPU子系統(tǒng),支持現(xiàn)代計算平臺的高效、低功耗、安全性以及可擴展性需求。

以下是一張比較早期的經(jīng)典的bit-LITTLE的架構(gòu)圖。

ba1c1472-1e70-11ef-91d2-92fbcf53809c.png

2、CPU Cores

2.1終端芯片處理器

Arm架構(gòu)是當(dāng)今世界上最受歡迎的處理器架構(gòu)之一,經(jīng)過多年的發(fā)展和經(jīng)營,ARM在經(jīng)典處理器,嵌入式處理器和應(yīng)用型處理器方面研發(fā)設(shè)計出了多個系列的產(chǎn)品。ARM Cortex系列是經(jīng)典處理器ARM11以后產(chǎn)品的新的命名系列,只在各種不同的市場提供服務(wù),采用的是ARMv7或者ARMv8體系結(jié)構(gòu),并分為三個系列,分別是Cortex-A,Cortex-R,Cortex-M。

ba42a376-1e70-11ef-91d2-92fbcf53809c.jpg ? ?

ba725f62-1e70-11ef-91d2-92fbcf53809c.jpg

2.2服務(wù)器芯片處理器

2024年2月,Arm 推出了新的 Neoverse N3 和 V3 內(nèi)核以及針對這兩個內(nèi)核的 CSS 產(chǎn)品。正如人們所期望的那樣,Neoverse N3 更新了 N2,Neoverse V3 更新了 V2。CSS 是 Arm 的計算子系統(tǒng),可提供更多預(yù)封裝 IP,幫助公司更快地開發(fā)芯片或小芯片。

ba92651e-1e70-11ef-91d2-92fbcf53809c.jpg

3、DynamIQ Shared Unit (DSU)

bab72084-1e70-11ef-91d2-92fbcf53809c.png

DynamIQ Shared Unit (DSU) 是ARM Cortex-A 系列列處理器中引入的一個關(guān)鍵組件,尤其是那些采用DynamIQ技術(shù)的高端多核設(shè)計中,如Cortex-A57、Cortex-A53、Cortex-A72、Cortex-A73等。DSU在SoC(System-on-Chip)架構(gòu)中扮演著至關(guān)重要的角色,其主要功能和特點包括:

1. L3緩存控制器:DSU集成L3緩存控制器,為整個CPU集群提供共享的、大容量的高速緩存,以減少對更慢速主存的依賴,提高數(shù)據(jù)交換效率。

2. 一致性管理:在多核處理器系統(tǒng)中,DSU負責(zé)維護緩存一致性,確保所有核心看到的數(shù)據(jù)是一致的,通過實施緩存一致性協(xié)議(如MESI、MOESI)來協(xié)調(diào)數(shù)據(jù)更新。

3. 數(shù)據(jù)共享與分配:DSU優(yōu)化多核間的數(shù)據(jù)分配和共享,通過有效的緩存分配策略和傳輸機制,減少數(shù)據(jù)復(fù)制,提高數(shù)據(jù)訪問效率。

4. 能效管理:作為SoC的一部分,DSU還可能集成能效管理機制,支持動態(tài)調(diào)整頻率和電源狀態(tài),以平衡性能與能耗。

5. 系統(tǒng)互聯(lián):DSU通過高帶寬、低延遲的內(nèi)部總線與CPU核心、外設(shè)別、內(nèi)存控制器等SoC組件相連,確保數(shù)據(jù)快速流動。

簡言之,DynamIQ Shared Unit是DynamIQ架構(gòu)中的一個核心組件,它通過提供共享緩存、緩存一致性管理、數(shù)據(jù)高效共享和能效優(yōu)化,支持高性能、多核處理器系統(tǒng)中復(fù)雜數(shù)據(jù)處理和高效協(xié)作。

bae2a51a-1e70-11ef-91d2-92fbcf53809c.png

4、Snoop Control Unit(SCU)

Snoop Control Unit(SCU)是多處理器系統(tǒng)中的一個關(guān)鍵組件,特別是在包含緩存一致性設(shè)計中,如對稱多處理機群集(SMP)或片上系統(tǒng)(SoC)中。其主要作用是維護緩存一致性,確保所有處理器核心對共享緩存的內(nèi)容有統(tǒng)一的視圖景,從而保證數(shù)據(jù)的一致性和正確性。SCU的工作機制通常包括以下方面:

1. 監(jiān)聽(Snooping): SCU監(jiān)聽所有處理器核心對共享緩存的訪問請求,包括讀取和寫入操作。當(dāng)一個核心試圖修改緩存中的數(shù)據(jù)時,SCU介入以確保其他核心對該數(shù)據(jù)的緩存副本不會變得陳舊。

2. 緩存更新: 如果一個核心請求的數(shù)據(jù)在另一個核心的緩存中是臟(已修改但未回寫回主存),SCU會促使持有該臟數(shù)據(jù)的核心將其寫回到共享緩存或主存,然后更新請求核心的緩存,保證數(shù)據(jù)最新。

3. 一致性協(xié)議: SCU遵循一定的緩存一致性協(xié)議,如MESI(Modified, Exclusive, Shared, Invalid)、MOESI(Modified, Owner, Exclusive, Shared, Invalid)或其他協(xié)議,來決定如何響應(yīng)緩存訪問并維護一致性。

4. 廣播與仲裁: 在多核系統(tǒng)中,SCU可能需要廣播某些緩存操作,比如寫操作,給所有核心,或仲裁緩存訪問沖突,決定哪個核心優(yōu)先級次序。

5. 目錄管理: 在大型系統(tǒng)中,SCU可能配合緩存目錄使用,目錄存儲哪個緩存行位于哪些地方,其狀態(tài),減少廣播范圍和提高效率。

綜上所述,Snoop Control Unit是多處理器緩存一致性機制中的重要一環(huán),通過監(jiān)聽和協(xié)調(diào)處理器間的緩存操作,確保數(shù)據(jù)的一致性,從而支持高效、可靠并行計算。

baf3eff0-1e70-11ef-91d2-92fbcf53809c.png

5、Coresight system

CoreSight架構(gòu)是ARM公司為復(fù)雜系統(tǒng)級芯片(SoC)設(shè)計的調(diào)試和追蹤解決方案,它提供了一個高度集成且可擴展的框架,用于系統(tǒng)級的調(diào)試、性能分析和優(yōu)化。CoreSight架構(gòu)旨在支持多核和多處理器環(huán)境,尤其是在面對現(xiàn)代嵌入式系統(tǒng)和高性能計算領(lǐng)域,其功能強大且靈活的特性能夠顯著提升開發(fā)效率和系統(tǒng)性能。以下是CoreSight架構(gòu)的一些關(guān)鍵組成部分和功能:

1. 調(diào)試和追蹤IP模塊:?包括嵌入式追蹤宏單元(ETM, Embedded Trace Macrocell, ETM)、系統(tǒng)追蹤宏單元(STM, System Trace Macrocell, STM)、數(shù)據(jù)觀看點單元(Data Watchpoint Unit, DWT)等,這些模塊負責(zé)捕獲程序執(zhí)行時的指令流、數(shù)據(jù)訪問、系統(tǒng)事件、性能計數(shù)等信息

2. 跨觸發(fā)接口 - CTI(Cross Trigger Interface, CTI):允許不同調(diào)試和追蹤組件之間同步事件,支持復(fù)雜的系統(tǒng)級調(diào)試和性能分析。

3. 調(diào)試訪問點 - DAP(Debug Access Port, DAP)和DP(Debug Port):提供調(diào)試接口,允許調(diào)試器通過串行線調(diào)試協(xié)議(如JTAG, SWD)訪問系統(tǒng)。

4. 電源管理:支持系統(tǒng)級的動態(tài)電壓和頻率調(diào)整(DVFS),優(yōu)化能效。

bb217682-1e70-11ef-91d2-92fbcf53809c.jpg ? ?

CoreSight架構(gòu)的組件可按需組合,根據(jù)SoC的具體需求定制化集成,以達到最佳的調(diào)試、性能監(jiān)控和系統(tǒng)優(yōu)化效果,支持從簡單的單核微控制器到復(fù)雜的多核服務(wù)器芯片的廣泛應(yīng)用。

6、System Memory Management Unit(SMMU)

ARM SMMU指的是ARM架構(gòu)中的System Memory Management Unit,它是一種系統(tǒng)級的內(nèi)存管理單元,主要負責(zé)地址轉(zhuǎn)換和內(nèi)存訪問權(quán)限控制。在ARM架構(gòu)中,SMMU主要用于處理非CPU核心的內(nèi)存管理,尤其是外設(shè)別和硬件加速器的內(nèi)存訪問。與CPU核心中的MMU(管理虛擬地址到物理地址轉(zhuǎn)換)類似,SMMU提供了對系統(tǒng)其他組件的內(nèi)存訪問控制,確保安全和高效的數(shù)據(jù)交互。特別地,ARM SMMU在不同場景下的應(yīng)用和功能包括:

1. 外設(shè)別DMA訪問隔離:SMMU通過配置映射表管理外設(shè)別DMA請求,確保其只能訪問被授權(quán)的內(nèi)存區(qū)域,防止非法或越界訪問,增強了系統(tǒng)安全性。

2. 硬件加速器訪問控制:對于硬件加速器(如GPU、網(wǎng)絡(luò)加速器、加密加速器等),SMMU確保它們僅訪問指定的內(nèi)存區(qū)域,避免對系統(tǒng)關(guān)鍵數(shù)據(jù)的干擾,同時優(yōu)化訪問效率。

3. 虛擬化支持:在虛擬化環(huán)境中,SMMU為每個虛擬機提供獨立的地址空間映射表,實現(xiàn)內(nèi)存的隔離,保障虛擬機間不能互相干擾,提升了虛擬化平臺的安全性和穩(wěn)定性。

4. 中斷處理:SMMU在某些實現(xiàn)中,如GICv3,可能間接參與中斷路由和管理,特別是與中斷的虛擬化處理,確保中斷能被正確、高效地路由至目標處理器。

5. 內(nèi)存屬性管理:SMMU還可以控制內(nèi)存訪問屬性,如是否緩存、共享與否、訪問權(quán)限等,進一步細化內(nèi)存管理,提升系統(tǒng)整體性能和安全性。組件與實現(xiàn):?Stream Table:根表基地址寄存于寄存器中,是SMMU查找中斷或DMA請求映射的起點。?Context Descriptor:描述符定義了第一階段映射表的基地址,與第二階段配置相關(guān)聯(lián)。?Translation Tables:用于實際的地址轉(zhuǎn)換,依據(jù)不同階段的映射表結(jié)構(gòu),完成從虛擬到物理地址的映射。

綜上,ARM SMMU是系統(tǒng)中一個關(guān)鍵的組件,它對內(nèi)存訪問的高效、安全控制和虛擬化支持至關(guān)重要,特別是在高性能、多核和異構(gòu)計算系統(tǒng)中。

6.1. 什么是SMMU?

SMMU(system mmu),是I/O device與總線之間的地址轉(zhuǎn)換橋。

它在系統(tǒng)的位置如下圖:

bb438984-1e70-11ef-91d2-92fbcf53809c.jpg

它與mmu的功能類似,可以實現(xiàn)地址轉(zhuǎn)換,內(nèi)存屬性轉(zhuǎn)換,權(quán)限檢查等功能。

6.2. 為什么需要SMMU?

了解SMMU出現(xiàn)的背景,需要知道系統(tǒng)中的兩個概念:DMA和虛擬化。

DMA:((Direct Memory Access),直接內(nèi)存存取, 是一種外部設(shè)備不通過CPU而直接與系統(tǒng)內(nèi)存交換數(shù)據(jù)的接口技術(shù) 。外設(shè)可以通過DMA,將數(shù)據(jù)批量傳輸?shù)絻?nèi)存,然后再發(fā)送一個中斷通知CPU取,其傳輸過程并不經(jīng)過CPU, 減輕了CPU的負擔(dān)。但由于DMA不能像CPU一樣通過MMU操作虛擬地址,所以DMA需要連續(xù)的物理地址。

虛擬化:在虛擬化場景, 所有的VM都運行在中間層hypervisor上,每一個VM獨立運行自己的OS(guest OS),Hypervisor完成硬件資源的共享, 隔離和切換。

bb60a03c-1e70-11ef-91d2-92fbcf53809c.png

但對于Hypervisor + GuestOS的虛擬化系統(tǒng)來說, guest VM使用的物理地址是GPA, 看到的內(nèi)存并非實際的物理地址(也就是HPA),因此Guest OS無法正常的將連續(xù)的物理地址分給硬件。

因此,為了支持I/O透傳機制中的DMA設(shè)備傳輸,而引入了IOMMU技術(shù)(ARM稱作SMMU)。

總而言之,SMMU可以為ARM架構(gòu)下實現(xiàn)虛擬化擴展提供支持。它可以和MMU一樣,提供stage1轉(zhuǎn)換(VA->PA), 或者stage2轉(zhuǎn)換(IPA->PA),或者stage1 + stage2轉(zhuǎn)換(VA->IPA->PA)的靈活配置。

*[VA:虛擬地址;IPA: 中間物理地址;PA:物理地址]

6.3. SMMU常用概念

術(shù)語 概念

StreamID 一個平臺上可以有多個SMMU設(shè)備,每個SMMU設(shè)備下面可能連接著多個Endpoint, 多個設(shè)備互相之間可能不會復(fù)用同一個頁表,需要加以區(qū)分,SMMU用StreamID來做這個區(qū)分( SubstreamID的概念和PCIe PASID是等效的)

STE Stream Table Entry, STE里面包含一個指向stage2地址翻譯表的指針,并且同時還包含一個指向CD(Context Descriptor)的指針.

CD Context Descriptor, 是一個特定格式的數(shù)據(jù)結(jié)構(gòu),包含了指向stage1地址翻譯表的基地址指針

4. SMMU數(shù)據(jù)結(jié)構(gòu)查找

SMMU翻譯過程需要使用多種數(shù)據(jù)結(jié)構(gòu),如STE, CD,PTW等。

4.1 SID查找STE

Stream Table是存放在內(nèi)存中的一張表,在SMMU驅(qū)動初始化時由驅(qū)動程序創(chuàng)建好。

Stream table有兩種格式,一種是Linear Stream Table, 一種是2-level Stream Table.

1. Linear Stream Table

bb9ff958-1e70-11ef-91d2-92fbcf53809c.png

Linear Stream Table是將整個stream table在內(nèi)存中線性展開成一個數(shù)組, 用Stream Id作為索引進行查找.

Linear Stream Table 實現(xiàn)簡單,只需要一次索引,速度快;但是平臺上外設(shè)較少時,浪費連續(xù)的內(nèi)存空間。

2. 2-level Stream Table

bbc5f9d2-1e70-11ef-91d2-92fbcf53809c.png

2-level Stream Table, 顧名思義,就是包含2級table, 第一級table, 即STD,包含了指向二級STE的基地址STD。第二級STE是Linear stream Table. 2-level Stream Table的優(yōu)點是更加節(jié)省內(nèi)存。

SMMU根據(jù)寄存器配置的STRTAB_BASE地址找到STE, STRTAB_BASE定義了STE的基地值, Stream id定義了STE的偏移。如果使用linear 查找, 通過STRTAB_BASE + sid * 64(一個STE的大小為64B)找到STE;若使用2-level查找, 則先通過sid的高位找到L1_STD(STRTAB_BASE + sid[9:8] * 8, 一個L1_STD的大小為8B), L1_STD定義了下一級查找的基地址,然后通過sid 找到具體的STE(l2ptr + sid[7:0] * 64).

最終找到的STE如下所示,表中的信息包含屬性相關(guān)信息, 翻譯模式信息(是否 stream bypass, 若否,選擇stage1, stage2或者stage1 + stage2翻譯模式)。

bbf0872e-1e70-11ef-91d2-92fbcf53809c.png

.2 SSID查找CD

CD包含了指向stage1地址翻譯表的基地址指針.

如下圖所示, STE指明了CD數(shù)據(jù)結(jié)構(gòu)在DDR中的基地址S1ContextPTR, SSID(substream id)指明了CD數(shù)據(jù)結(jié)構(gòu)的偏移,如果SMMU選擇進行l(wèi)inear, 則使用S1ContextPTR + 64 * ssid 找到CD。如果SMMU選擇2-level, 則使用ssid進行二級查找獲得CD(與上節(jié)STE的方式一致)。

bc0b9f5a-1e70-11ef-91d2-92fbcf53809c.png

最終找到的CD如下所示:

bc3bc2de-1e70-11ef-91d2-92fbcf53809c.png ? ?

表中信息包含memory屬性,翻譯控制信息,異??刂菩畔⒁约癙age table walk(PTW)的起始地址TTB0, TTB1, 找到TTBx后,就可以PTW了。

5. SMMU地址轉(zhuǎn)換

5.1 單stage的地址轉(zhuǎn)換:

bc56f892-1e70-11ef-91d2-92fbcf53809c.png

TTB 和 VA[47:39]組成獲取Level0頁表的地址PA;

Level0頁表中的next-level table address 和 VA[38:30]組成獲取Level1的頁表地址PA;

Level1頁表中的next-level table address 和 VA[29:21]組成獲取Level2的頁表地址PA;

Level2頁表中的next-level table address 和 VA[20:12]組成獲取Leve3的頁表地址PA;

level3頁表中的output address和va[12:0]組成獲取組后的鉆換地址

在stage1地址翻譯階段:硬件先通過StreamID索引到STE,然后用SubstreamID索引到CD, CD里面包含了stage1地址翻譯(把進程的GVA/IOVA翻譯成IPA)過程中需要的頁表基地址信息、per-stream的配置信息以及ASID。在stage1翻譯的過程中,多個CD對應(yīng)著多個stage1的地址翻譯,通過Substream去確定對應(yīng)的stage1地址翻譯頁表。所以,Stage1地址翻譯其實是一個(RequestID, PASID) => GPA的映射查找過程。

5.2 stage1+stage2的地址轉(zhuǎn)換:

bc7f51ca-1e70-11ef-91d2-92fbcf53809c.png

在使能SMMU兩階段地址翻譯的情況下,stage1負責(zé)將設(shè)備DMA請求發(fā)出的VA翻譯為IPA并作為stage2的輸入, stage2則利用stage1輸出的IPA再次進行翻譯得到PA,從而DMA請求正確地訪問到Guest的要操作的地址空間上。

在stage2地址翻譯階段:STE里面包含了stage2地址翻譯的頁表基地址(IPA->HPA)和VMID信息。如果多個設(shè)備被直通給同一個虛擬機,那么意味著他們共享同一個stage2地址翻譯頁表。

在兩階段地址翻譯場景下, 地址轉(zhuǎn)換流程步驟:

1.Guest驅(qū)動發(fā)起DMA請求,這個DMA請求包含VA + SID前綴

2.DMA請求到達SMMU,SMMU提取DMA請求中的SID就知道這個請求是哪個設(shè)備發(fā)來的,然后去StreamTable索引對應(yīng)的STE

3.從對應(yīng)的STE表中查找到對應(yīng)的CD,然后用ssid到CD中進行索引找到對應(yīng)的S1 Page Table

4.IOMMU進行S1 Page Table Walk,將VA翻譯成IPA并作為S2的輸入

5.IOMMU執(zhí)行S2 Page Table Walk,將IPA翻譯成PA,地址轉(zhuǎn)化結(jié)束。

6. SMMU command queue 與 event queue

系統(tǒng)軟件通過Command Queue和Event Queue來和SMMU打交道,這2個Queue都是循環(huán)隊列。

Command queue用于軟件與SMMU的硬件交互,軟件寫命令到command queue, SMMU從command queue中 地區(qū)命令處理。

Event Queue用于SMMU發(fā)生軟件配置錯誤的狀態(tài)信息記錄,SMMU將配置錯誤信息寫到Event queue中,軟件通過讀取Event queue獲得配置錯誤信息并進行配置錯誤處理。

bcb6ca4c-1e70-11ef-91d2-92fbcf53809c.png ? ?

7、 GIC Controller

6.1 gic的版本號

§gic400,支持gicv2架構(gòu)版本。

§gic500,支持gicv3架構(gòu)版本。

§gic600,支持gicv3架構(gòu)版本

§gic700, 支持gicv4.1架構(gòu)版本

6.2 gic中斷類型

GIC 分為不同類型的中斷源:

§Shared Peripheral Interrupt (SPI) : 共享中斷

§Private Peripheral Interrupt (PPI) : 私有中斷

§Software Generated Interrupt (SGI) : 軟件產(chǎn)生中斷

§Locality-specific Peripheral Interrupt (LPI)

每個中斷源都由一個 ID 號標識,稱為 INTID。 前面列表中介紹的中斷類型就是根據(jù) INTID 的范圍定義的:

bcdb25d6-1e70-11ef-91d2-92fbcf53809c.png

6.3 LPI介紹

bd12b1cc-1e70-11ef-91d2-92fbcf53809c.png

Locality Specific Interrupts(LPI),這是一個與GICv3及之后版本相關(guān)的概念。LPI中斷是GIC架構(gòu)中用來優(yōu)化中斷管理的一部分,特別是針對PCI Express (PCIe) 設(shè)備的中斷處理,它與傳統(tǒng)的共享中斷線方法不同,提供了更高效的中斷處理機制。以下是LPI的主要特點和工作原理

1. 基于消息的中斷:LPI中斷不同于傳統(tǒng)的硬件中斷線機制,它基于消息傳遞,即中斷信號通過寫入內(nèi)存中的特定地址(中斷向量寄存器)來觸發(fā),而非通過物理線路。

2. 中斷優(yōu)化:LPI機制設(shè)計用于優(yōu)化了中斷處理,減少中斷延遲和提高吞吐量,特別是在多核和虛擬化環(huán)境中。它避免了物理中斷線的限制,簡化了系統(tǒng)設(shè)計和擴展性。

3. 中斷狀態(tài)表:LPI中斷的狀態(tài)信息存儲在內(nèi)存中,GIC通過配置的中斷狀態(tài)表(Pending狀態(tài)表)來跟蹤這些中斷,這允許快速查詢和處理狀態(tài),減少了硬件開銷耗。

4. GICv3及以后支持:GICv3開始引入了對LPI中斷的直接注入支持,包括了中斷狀態(tài)表和中斷配置寄存取址等,而GICv4在此基礎(chǔ)上進一步優(yōu)化,如支持虛擬中斷直接注入到虛擬機。

5. 中斷路由與優(yōu)先級:LPI中斷也涉及到中斷的路由和優(yōu)先級管理,GIC的Distributor組件會根據(jù)中斷的屬性和系統(tǒng)策略,決定如何路由到適當(dāng)?shù)腃PU核心,以及處理的優(yōu)先級。

綜上所述,LPI在GIC框架下是針對高性能和高效中斷處理的一個設(shè)計,特別是在現(xiàn)代的多核處理器和虛擬化系統(tǒng)中,它利用內(nèi)存消息機制替代傳統(tǒng)的硬件中斷線,優(yōu)化中斷管理,提升了系統(tǒng)響應(yīng)速度和效率。

bd21fa88-1e70-11ef-91d2-92fbcf53809c.jpg

LPI,和SPI,PPI,SGI有些差別,LPI的中斷的配置,以及中斷的狀態(tài),是保存在memory的表中,而不是保存在gic的寄存器中的。

·GICR_PROPBASER:保存LPI中斷配置表的基地址

·GICR_PENDBASER: 保存LPI中斷狀態(tài)表的基地址

這里,就涉及到兩個表:

6.3.1 LPI中斷配置表

該表,保存在memory中。基地址,由GICR_PROPBASER寄存器決定。

bd5005ae-1e70-11ef-91d2-92fbcf53809c.jpg

該寄存器描述如下:

bd766d84-1e70-11ef-91d2-92fbcf53809c.png

其中的Physical_Address字段,指定了LPI中斷配置表的基地址。

對于LPI配置表,每個LPI中斷,占用1個字節(jié),指定了該中斷的使能和中斷優(yōu)先級。

bd90d282-1e70-11ef-91d2-92fbcf53809c.jpg

當(dāng)外部發(fā)送LPI中斷給redistributor,redistributor首先要查該表,也就是要訪問memory來獲取LPI中斷的配置。為了加速這過程,redistributor中可以配置cache,用來緩存LPI中斷的配置信息。

因為有了cache,所以LPI中斷的配置信息,就有了2份拷貝,一份在memory中,一份在redistributor的cache中。如果軟件修改了memory中的LPI中斷的配置信息,需要將redistributor中的cache信息給無效掉。

6.3.2 LPI中斷狀態(tài)表

該表,處于memory中,保存了LPI中斷的狀態(tài),是否pending狀態(tài)。

LPI中斷的狀態(tài),不是保存在寄存器中,而是保存在memory中的pending表中。該狀態(tài)表,由redistributor來進行更改。而該table的基地址,是由軟件來設(shè)置的。

軟件通過設(shè)置 GICR_PENDBASER 寄存器來設(shè)置。

bdb82148-1e70-11ef-91d2-92fbcf53809c.jpg

該寄存器,設(shè)置LPI狀態(tài)表的基地址,該狀態(tài)表的memory的屬性,如shareability,cache屬性等。

bdcf4030-1e70-11ef-91d2-92fbcf53809c.png

每個LPI中斷,占用一個bit空間

·0: 該LPI中斷,沒有處于pending狀態(tài)

·1: 該LPI中斷,處于pending狀態(tài)

該狀態(tài)表,由redistributor來設(shè)置。軟件如果修改該表,會引發(fā)unpredictable行為。

6.4 LPI的實現(xiàn)方式

為了實現(xiàn)LPI,gicv3定義了以下兩種方法來實現(xiàn):

·使用ITS,將外設(shè)發(fā)送到eventID,轉(zhuǎn)換成LPI 中斷號

·forwarding方式,直接訪問redistributor的寄存器GICR_SERLPIR,直接發(fā)送LPI中斷

6.4.1、forwarding方式

這種方式,比較簡單,主要由下面幾個寄存器來實現(xiàn):

·GICR_SERLPIR

·GICR_CLRLPIR

·GICR_INVLPIR

·GICR_INVALLR

·GICR_SYNCR

其gic框圖如下所示:

bdebed84-1e70-11ef-91d2-92fbcf53809c.png

GICR_SERLPIR,將指定的LPI中斷,設(shè)置為pending狀態(tài)。

be1616ea-1e70-11ef-91d2-92fbcf53809c.png

GICR_INVLPIR,將指定的LPI中斷,清除pending狀態(tài)。寄存器內(nèi)容和GICR_SERLPIR一致。

be31967c-1e70-11ef-91d2-92fbcf53809c.png

GICR_INVLPIR,將緩存中,指定LPI的緩存給無效掉,使GIC重新從memory中載入LPI的配置。

be549d70-1e70-11ef-91d2-92fbcf53809c.jpg

GICR_INVALLR,將緩存中,所有LPI的緩存給無效掉,使GIC重新從memory中,載入LPI中斷的配置。

be5eb5ee-1e70-11ef-91d2-92fbcf53809c.jpg

GICR_SYNCR,對redistributor的操作是否完成。

be7ffc9a-1e70-11ef-91d2-92fbcf53809c.png

寄存器,只有第0bit是有效的。如果為0,表示當(dāng)前對redistributor的操作是完成的,如果為1,那么是沒有完成的。

bea562a0-1e70-11ef-91d2-92fbcf53809c.png

6.4.2、使用ITS方式

理解了forwarding方式,那么理解ITS方式,就要容易了。forwarding方式,是直接得到了LPI的中斷號。

但是對于ITS方式,是不知道LPI的中斷號的。需要將外設(shè)發(fā)送的DeviceID,eventID,通過一系列查表,得到LPI的中斷號以及該中斷對應(yīng)的target redistributor,然后將LPI中斷,發(fā)送給對應(yīng)的redistributor。

下圖是帶有ITS的gic框圖:

bec3a9b8-1e70-11ef-91d2-92fbcf53809c.png

外設(shè),通過寫GITS_TRANSLATER寄存器,發(fā)起LPI中斷。寫操作,給ITS提供2個信息:

·EventID:值保存在GITS_TRANSLATER寄存器中,表示外設(shè)發(fā)送中斷的事件類型

·DeviceID:表示哪一個外設(shè)發(fā)起LPI中斷。該值的傳遞,是實現(xiàn)自定義,例如,可以使用AXI的user信號來傳遞。

ITS將DeviceID和eventID,通過一系列查表,得到LPI中斷號,再使用LPI中斷號查表,得到該中斷的目標cpu。

ITS將LPI中斷號,LPI中斷對應(yīng)的目標cpu,發(fā)送給對應(yīng)的redistributor。redistributor再將該中斷信息,發(fā)送給CPU。

6.5 ITS組件

beebc786-1e70-11ef-91d2-92fbcf53809c.png

ITS(Interrupt Translation Service)是GICv3及之后版本中引入的一項高級特性,特別針對PCI Express (PCIe) 系統(tǒng)的中斷處理進行了優(yōu)化。以下是GIC的ITS的主要工作原理和功能:

1. 中斷轉(zhuǎn)換與路由優(yōu)化:ITS的主要職責(zé)是將PCIe的Message Signaled Interrupts (MSI) 轉(zhuǎn)換為系統(tǒng)內(nèi)部中斷ID,進而路由到適當(dāng)?shù)腃PU核心。這一轉(zhuǎn)換過程優(yōu)化了中斷的分配,尤其是對于多核處理器和虛擬化環(huán)境中的中斷路由。

2. 高效中斷處理:通過硬件加速中斷的翻譯和路由,ITS降低了中斷處理延遲,提高了系統(tǒng)響應(yīng)速度,特別是在處理大量中斷的場景下,如數(shù)據(jù)中心、高性能計算和網(wǎng)絡(luò)設(shè)備。

3. 中斷虛擬化支持:在虛擬化環(huán)境中,ITS可以更高效地重定向中斷到正確的虛擬機,支持中斷隔離和虛擬中斷的靈活管理,增強虛擬化平臺的性能和可擴展性。

4. 中斷表管理:ITS維護一個中斷轉(zhuǎn)換表,存儲了中斷源到中斷ID的映射關(guān)系,以及相關(guān)的優(yōu)先級和路由信息。這個表支持動態(tài)更新,允許系統(tǒng)根據(jù)需要調(diào)整中斷配置。

5. 硬件輔助的中斷分配:GIC的Distributor組件與ITS協(xié)同工作,確保中斷被高效地分配給CPU Interface,而CPU Interface負責(zé)中斷的發(fā)送EOI(End of Interrupt)信號,告知中斷已處理完畢,完成循環(huán)。

GIC的ITS特性是現(xiàn)代中斷處理技術(shù)的一個重要進展,它提高了中斷處理的效率、靈活性和可擴展性,特別是在復(fù)雜的多核處理器和虛擬化系統(tǒng)中,確保了中斷處理的高效和及時響應(yīng)。

6.5.1、ITS處理流程

ITS使用三類表格,實現(xiàn)LPI的轉(zhuǎn)換和映射:

·device table: 映射deviceID到中斷轉(zhuǎn)換表

·interrupt translation table:映射EventID到INTID。以及INTID屬于的collection組

·collection table:映射collection到redistributor

bf025f64-1e70-11ef-91d2-92fbcf53809c.jpg

當(dāng)外設(shè)往GITS_TRANSLATER寄存器中寫數(shù)據(jù)后,ITS做如下操作:

·使用DeviceID,從設(shè)備表(device table)中選擇索引為DeviceID的表項。從該表項中,得到中斷映射表的位置

·使用EventID,從中斷映射表中選擇索引為EventID的表項。得到中斷號,以及中斷所屬的collection號

·使用collection號,從collection表格中,選擇索引為collection號的表項。得到redistributor的映射信息

·根據(jù)collection表項的映射信息,將中斷信息,發(fā)送給對應(yīng)的redistributor

以上是物理LPI中斷的ITS流程。虛擬LPI中斷的ITS流程與之類似。以下是處理流程圖:

bf236542-1e70-11ef-91d2-92fbcf53809c.png

6.5.2、ITS命令

ITS操作,會涉及到很多表,而這些表的創(chuàng)建,維護是通過ITS命令,來實現(xiàn)的。雖然這些表,是在內(nèi)存中的,但是GICv3和GICv4,不支持直接訪問這些表,而是要通過ITS命令,來配置這些表。

ITS的操作,是通過命令,來控制的。外部通過發(fā)送命令給ITS,ITS然后去執(zhí)行命令,每個命令,占32字節(jié)。

ITS有command隊列,命令寫在這個隊列里面。ITS會自動的按照隊列順序,一一執(zhí)行。

bf47fdda-1e70-11ef-91d2-92fbcf53809c.jpg

每個命令占32個字節(jié)。

命令,存放在內(nèi)存中,GITS_CBASE,保存命令的首地址。GITS_CREADR,是由ITS控制,表示下一個命令的地址。GITS_CWRITER,是下一個待寫命令的地址。軟件往GITS_CWRITER地址處,寫入命令,之后ITS就會執(zhí)行這個命令。

ITS提供的命令,有很多,可以查閱GIC手冊獲取更多。

以下是CLEAR命令。

bf6940f8-1e70-11ef-91d2-92fbcf53809c.png ? ?

6.5.3、ITS table

ITS包括很多個表,這些表均處于 non-secure區(qū)域。

GITS_BASER,指定ITS表的基地址和大小。軟件,在使用ITS之前,必須要配置。

bf8602d8-1e70-11ef-91d2-92fbcf53809c.png

其中的Physical_Address字段,就指定了表的基地址所在位置。

以下是各個表的基地址,對應(yīng)的寄存器。

bf949c94-1e70-11ef-91d2-92fbcf53809c.jpg




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16026

    瀏覽量

    176633
  • DDR
    DDR
    +關(guān)注

    關(guān)注

    11

    文章

    701

    瀏覽量

    65091
  • ARM處理器
    +關(guān)注

    關(guān)注

    6

    文章

    360

    瀏覽量

    41596
  • SoC芯片
    +關(guān)注

    關(guān)注

    1

    文章

    591

    瀏覽量

    34800
  • Cortex-A
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    34254

原文標題:SoC芯片設(shè)計系列---ARM CPU子系統(tǒng)組件介紹

文章出處:【微信號:gh_9d9a609c9302,微信公眾號:SoC芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于ARM7的SOC系統(tǒng)的設(shè)計

      本文通過對基于ARM7的SOC系統(tǒng)的設(shè)計,介紹了一種Flash結(jié)構(gòu)的FPGA器件及其片上系統(tǒng)的設(shè)計方法,進而給出了兩種驗證該片上
    發(fā)表于 02-05 07:52

    ARM系列之PCSA資料介紹

    1、介紹一個帶SCP的手機SoC系統(tǒng)方案在大規(guī)模的 SoC 設(shè)計中,可以設(shè)計一個硬件模塊來完成頂層的功耗控制邏輯,好處是可以針對芯片的應(yīng)用領(lǐng)
    發(fā)表于 04-01 10:48

    ARM GIC(一)之ARM soc中斷的處理介紹

    ,是為了實現(xiàn)虛擬化而加入的,在這個系列中,不討論虛擬中斷,只介紹物理中斷的相關(guān)知識。在armsoc系統(tǒng)中,會有多個外設(shè),均有可能會產(chǎn)生中斷
    發(fā)表于 04-06 10:12

    如何可靠識別ARM SOC內(nèi)所使用的ARM CPU內(nèi)核IP型號呢

    請問下:對市面上的ARM SOC芯片,如何可靠識別ARM SOC內(nèi)所使用的ARM
    發(fā)表于 08-01 14:14

    Arm Corstone SSE-700子系統(tǒng)技術(shù)參考手冊

    和外圍設(shè)備擴展的SoC需要超出最低子系統(tǒng)組件的額外內(nèi)存和外圍組件。例如,閃存沒有SSE-700,但可以通過實現(xiàn)的接口添加。 傳感器和執(zhí)行器參考設(shè)計可以通過添加傳感器或執(zhí)行器邏輯來擴展,
    發(fā)表于 08-02 07:46

    Arm Corstone SSE-123子系統(tǒng)技術(shù)參考手冊

    SSE?123示例子系統(tǒng)集成了關(guān)鍵Arm組件子系統(tǒng),實現(xiàn)針對物聯(lián)網(wǎng)(IoT)片上系統(tǒng)SoC
    發(fā)表于 08-09 06:00

    Arm Corstone? SSE?123子系統(tǒng)技術(shù)概述

    SSE?123示例子系統(tǒng)集成了一個由關(guān)鍵Arm組件組成的子系統(tǒng),這些組件實現(xiàn)了針對物聯(lián)網(wǎng)(IoT)片上
    發(fā)表于 08-10 07:40

    Arm Corstone SSE-710子系統(tǒng)技術(shù)參考手冊

    支持的Cortex?-A處理器)和ARM?GIC-400集成示例。 ·一套文件,包括安全飛地的PSA L2認證指導(dǎo)文件。 要創(chuàng)建SoC,必須擴展SSE-710子系統(tǒng)。 一個完整的系統(tǒng)
    發(fā)表于 08-17 08:00

    Arm CoreLink? SSE-200嵌入式子系統(tǒng)技術(shù)概述

    SSE-200子系統(tǒng)用于嵌入式驅(qū)動器系統(tǒng)架構(gòu)和軟件標準化,旨在提供包含前沿Cortex M和TrustZone技術(shù)的高性能計算子系統(tǒng)。 該解決方案由硬件、軟件和軟件工具組成,可實現(xiàn)物聯(lián)網(wǎng)系統(tǒng)
    發(fā)表于 08-28 06:30

    基于ARM7TDMI的SoC中MP3子系統(tǒng)的設(shè)計

    以信息系統(tǒng)作為目標直接優(yōu)化軟、硬件的片上系統(tǒng)(SoC)將大大節(jié)省軟件和芯片資源,大大提高系統(tǒng)的集成度和性價比。文中主要
    發(fā)表于 12-01 14:08 ?25次下載

    32位RISC CPU ARM芯片的應(yīng)用和選型

    32位RISC CPU ARM芯片的應(yīng)用和選型 ARM公司以及ARM芯片的現(xiàn)狀和發(fā)展,從應(yīng)用的
    發(fā)表于 02-09 17:37 ?55次下載

    ARM是什么意思,armcpu是什么關(guān)系

    ARM首先是一個公司,這家公司設(shè)計CPU并向各個CPU制造商授權(quán)許可,所以ARM公司是一家CPU設(shè)計公司。同時,
    的頭像 發(fā)表于 03-14 10:28 ?5.2w次閱讀
    <b class='flag-5'>ARM</b>是什么意思,<b class='flag-5'>arm</b>與<b class='flag-5'>cpu</b>是什么關(guān)系

    ARM Architecture, Core, CPUSOC概念簡明介紹資料下載

    電子發(fā)燒友網(wǎng)為你提供ARM Architecture, Core, CPU,SOC概念簡明介紹資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)
    發(fā)表于 03-29 16:49 ?10次下載
    <b class='flag-5'>ARM</b> Architecture, Core, <b class='flag-5'>CPU</b>,<b class='flag-5'>SOC</b>概念簡明<b class='flag-5'>介紹</b>資料下載

    手機處理器叫soc還是cpu soc包含哪些模塊 中端芯soc和中端soc區(qū)別

    CPU核和內(nèi)存子系統(tǒng)SoC芯片需要內(nèi)置處理器和內(nèi)存子系統(tǒng)。處理器主要負責(zé)計算和控制各種運算和任務(wù),內(nèi)存則用于存儲數(shù)據(jù)和程序代碼。
    發(fā)表于 05-03 08:23 ?5122次閱讀

    什么是片上系統(tǒng)(SoC)?SoC是如何工作的?

    片上系統(tǒng)(簡稱SoC)是半導(dǎo)體工業(yè)中常用的一個術(shù)語。它指的是將計算機或其他電子系統(tǒng)的所有必要組件集成到單個芯片上的一種微
    的頭像 發(fā)表于 03-08 10:29 ?5962次閱讀
    什么是片上<b class='flag-5'>系統(tǒng)</b>(<b class='flag-5'>SoC</b>)?<b class='flag-5'>SoC</b>是如何工作的?