博客 / 詳情

返回

讀書筆記 XILINX ug1085-Zynq UltraScale+ Device Technical Reference Manual 技術參考手冊 Chapter4:Real-time Processing Unit

目錄
  • 前言
  • Chapter 4: Real-time Processing Unit 實時處理單元
    • 4.1 Introduction 介紹
    • 4.2 Real-time Processing Unit Features RPU的特性
    • 4.3 Cortex-R5F Processor Functional Description R5F處理器功能性介紹
      • 4.3.1 RPU Pin Configuration
      • 4.3.2 RPU CPU Configuration
    • 4.4 Error Correction and Detection 錯誤糾正與識別
      • 4.4.1 Interrupt Injection Mechanism
    • 4.5 Level2 AXI Interfaces L2AXI接口
    • 4.6 Memory Protection Unit 內存保護單元(MPU)
    • 4.7 Events and Performance Monitor 事件與性能監視器
    • 4.8 Power Management 功耗管理
    • 4.9 Exception Vector Pointers 異常向量指針(EVP)
    • 4.10 System Register Overview 系統寄存器一覽
    • 4.11 Tightly Coupled Memory 緊密耦合內存(TCM)
      • 4.11.1 Tightly Coupled Memory Address Map
  • 本章小節

前言

上一章講了ug1085MPSOC技術參考手冊的第三章,講了有關MPSOC APU的相關內容,這次我們來講第四章,同樣也是MPSOC的核心器件之一的RPU,這部分內容較APU的話會簡單一點。這裏再次事先聲明,由於我對ARM架構完全不熟悉,所以我用了AI工具來理解這些內容,所以解釋可能有問題也歡迎指出。。

Chapter 4: Real-time Processing Unit 實時處理單元

4.1 Introduction 介紹

RPU也就是實時處理單元,聽名字就知道這個處理器是為了實時性的應用而生的,這一節稍微介紹了一下RPU實時性的來源,就是低延遲的中斷,這是通過中斷過程和重啓多指令加載的低延時實現的(我的理解是中斷響應低延時和加載中斷服務程序的低延時),此外專有外設端口以及TCM(緊密耦合內存)也提高了這種低延時性能。

4.2 Real-time Processing Unit Features RPU的特性

這節以列表的方式整理了一下RPU的特性,這裏也過一下,RPU具有以下的特性:

  • Integer unit implementing the Arm v7-R instruction set.

  • Single and double precision FPU with VFPv3 instructions.

  • Arm v7-R architecture memory protection unit (MPU).

  • 64-bit master AXI3 interface for accessing memory and shared peripherals.(RPU訪問外部內存和共享外設的總線)

  • 64-bit slave AXI3 interface for DMA access to the TCMs. (外部DMA方位RPU的TCM的總線)

  • Dynamic branch prediction with a global history buffer and a 4-entry return stack.

  • Separate 128KB TCM memory banks with ECC protection for each TCM.

  • 32KB instruction and data L1 caches with ECC protection.

  • Independent Cortex-R5F processors or dual-redundant configuration.

  • 32-bit master advanced eXtensible interface (AXI) peripheral interface on each processor for direct low-latency device memory type access to the interrupt controller.(訪問中斷控制器的低延時總線)

  • Debug APB interface to a CoreSight debug access port (DAP).

  • Low interrupt latency and non-maskable fast interrupts.

  • Performance monitoring unit.

  • Exception handling and memory protection.

  • ECC detection/correction on level-1 memories.

  • Lock-step (redundant CPU) configuration is available to mitigate random faults in CPU registers and gates.(鎖步運行模式以減少隨機錯誤)

  • Built-in self-test (BIST) to detect random faults in hardware (probably) caused by permanent failure.

  • Watchdog to detect both systematic and random failures causing program flow errors.
    下面我們就跟隨文檔介紹下其中的一些特性。

4.3 Cortex-R5F Processor Functional Description R5F處理器功能性介紹

這節講了R5F處理器的一些功能特性,但是最主要的還是給出了R5F的系統架構圖,我們先來看看R5F的系統架構圖:
image
這張圖整體向我們展示了R5F處理器的連接結構,我在其中標出了三部分,我本來是想對照MPSOC互聯架構圖來確認一下各個部件,但是最後發現有很多地方沒辦法對應上,就只能作罷,不過我們還是分析一下。

最上面的RPU部分,就是R5F核的核心,可以看到兩核的R5F是直接與TCM相連的,TCM分為3塊,一塊64KB的TCMA,兩塊32KB的TCMB,並且都通過64位的AXI總線連接,設計出這麼三塊是有原因的,他們存儲的東西不同,主要是為了提高RPU的實時特性。還可以看到GIC(中斷控制器)與RPU也是緊密連接的,同樣也是為了中斷實時性的考慮。

另外兩部分OCM核共享外設我們放在一起講,首先是OCM部分有一個總線交換器或者説是路由器,這個路由器連接到RPU的64位AXI總線上,RPU就是通過該總線實現對外部設備的訪問,因此該路由器連接到OCM,FPD域路由器(右下角那個),再經過LPD域路由器和IOP Inbound(IO外設流入器,我根據AXI互聯總線圖猜的)實現連接各種各樣的共享外設。同時從LPD Inbound又連接了兩根64bit的AXI Slave總線用於方位RPU的TCM。這樣總體結構就算分析完了,我們在介紹下這節的其他東西。

image

4.3.1 RPU Pin Configuration

這個小節列表描述了一下RPU的控制信號,感覺主要是硬件參考用,這裏也把表擺出來:
image
注意下面的提示,更多信息查看R5F的參考手冊,這裏不多講了。

4.3.2 RPU CPU Configuration

這個小節要講R5F的一個比較重要的功能,Lock-Step鎖步模式,也稱為安全模式。像常規的我們分開使用R5F的兩個核心就是普通模式或者説性能模式,而Lock-Step鎖步模式直接解釋就是使兩個R5F核進行同樣的操作,驗證其輸出結果以確保結果的正確性或者安全性。鎖步模式有這些特性:

  • 只有CPU0這一個處理器接口,也就是外部只能通過訪問CPU0的總線來訪問RPU,同樣RPU也只使用CPU0的總線來訪問外設。(這個是我理解的,原文只説only one set of CPU interfaces are used)

  • 只使用CPU0的數據和指令緩存

  • 中斷控制器只能將中斷分發到CPU0

  • 兩個核心的TCMA核TCMB將會合並,形成128KB的TCMA和TCMB,合計256KB且地址連續

  • 需要使用輸入信號SLCLAMP和SLSPLIT來控制處理器的組模式。

我們來看下鎖步模式的示意圖,可以和我總結的幾點特性對應一下:
image

4.4 Error Correction and Detection 錯誤糾正與識別

這節介紹了一下R5F支持的數據ECC機制。ECC我不太熟悉其應用原理,而且一般來説是處理器自動進行的,這裏的ECC應該是R5F能夠搭配TCM具有的額外ECC冗餘位來實現1bit糾錯和2bit檢測(我隱約記得數電課程好像講了這個東西的原理,但是我已經完全忘了哈哈)

4.4.1 Interrupt Injection Mechanism

中斷注入機制這節我有點沒看明白,主要是還沒有看到中斷的章節,不過我們這裏還是提一下,RPU支持使用自己的中斷控制器實現160個共享外設中斷,這些外設中斷由RPU_INTR_x寄存器標識並被RPU_INTR_MASK_x寄存器掩碼,這些寄存器每個32位一共有5個,組成了160個共享外設中斷,不過中斷具體是怎麼實現的這裏沒説,我們也以後再細講。

4.5 Level2 AXI Interfaces L2AXI接口

這節叫第二級AXI接口,我理解了下原文覺得他這裏想説的是第一級是RPU內部的接口,比如R5F核訪問TCM,中斷控制器以及I/D Cache這些接口叫一級接口,二級的像RPU訪問外設以及外部訪問RPU的TCM的叫二級接口。這節就講了這兩個概念,讓我有點奇怪他為什麼要設置這麼一節。

4.6 Memory Protection Unit 內存保護單元(MPU)

MPU單元有點類似我們講APU時候的MMU內存管理單元,但是我看了下MPU的功能似乎要簡單的多,他主要是用來管理對RPU的L1內存系統和外部內存的訪問,不包含像MMU一樣的地址轉譯功能。我這裏説一下MMU的工作原理。

MMU是通過將內存劃分為不同的區域,通過控制這些區域的訪問權限以實現對內存的包含,其最多可以劃分16個區域,每個區域可以有如下的設置:

  • 區域起始地址

  • 區域大小

  • 子區域使能

  • 區域屬性

  • 區域訪問權限

  • 區域使能

更詳細的介紹還是要參考R5F的技術參考手冊,這裏只帶過一下功能。

4.7 Events and Performance Monitor 事件與性能監視器

我沒看懂這節要講啥,這裏就翻譯一下:

處理器包括用於檢測可能發生的各種事件(例如高速緩存未命中)的邏輯。這些事件提供有關處理器行為的有用信息,供調試或分析代碼時使用。
事件在輸出事件總線上可見,並且可以使用性能監控單元中的寄存器進行計數。

4.8 Power Management 功耗管理

功耗管理這部分RPU相比APU要簡單的多,就只有三狀態,運行,待機,關閉,一張表就解釋完了:
image

4.9 Exception Vector Pointers 異常向量指針(EVP)

異常向量指針EVP類似於中斷向量表IVT,裏面存儲的是異常服務程序的入口地址,這裏講EVP主要是由於EVP能夠根據R5F的SCTRL.V 位設置EVP的存放地址,SCTRL.V為0則EVP就放在0x0000_0000(LOVEC)的位置,為1就放在0xFFFF_0000(HIVEC)的位置上,我本來也不太明白為什麼要這麼設置,後面問了下通義千問也算有了個比較合理的解釋,我這裏説一下。

之所以要給EVP設置一個可切換的地址,是因為在上電時,啓動程序會在OCM上先執行,(因為SCU單元只會將FSBL程序加載到OCM上執行,具體的以後將boot過程細説)TCM此時是沒有數據的,為了RPU的正常工作,此時EVP是會被放在OCM的0xFFFF_0000處,而且在上電時默認EVP為HIVEC,而在執行FSBL時,RPU為了低延遲的響應中斷,EVP會被移動到LOVEC(這一移動應該是可選的,但是最好這麼做),這裏忘記提了,對於RPU來説TCM作為他內部的一塊RAM,實際上是被映射到從0x0000_0000開始的,然而對於APU或者説是全局地址,TCM則位於0xFFE0_0000的位置,這點我們後面會提到。

4.10 System Register Overview 系統寄存器一覽

這小節列表描述了一下RPU內部的一大堆寄存器,我也還是貼一下表,具體的看錶應該就有簡短解釋了:
image
image

4.11 Tightly Coupled Memory 緊密耦合內存(TCM)

TCM緊密耦合內存 我們前面經常提到,這裏借用原文介紹一下:

緊耦合存儲器(TCM)是低延遲存儲器,可提供可預測的指令執行和可預測的數據加載/存儲時序。每個Cortex-R5F處理器在ATCM和BTCM端口上包含兩個64bit寬的64KB內存組,總共有128KB內存。將RAM分為兩個存儲體,並將它們放置在端口A和B上,允許加載-存儲、指令預取或AXI從端口同時訪問兩個存儲體。
BTCM存儲庫分為兩個32 KB的隊列,連接到Cortex-R5F處理器的BTCM-0和BTCM-1端口。有兩個TK接口,允許連接到緊耦合存儲器(ATCM和BTCM)的可配置存儲塊。

  • ATCM通常保存必須高速訪問的中斷或異常代碼,而不會因緩存未命中而導致任何潛在延遲。
  • BTCM通常保存用於密集處理的數據塊,例如音頻或視頻處理。

這裏就解釋了TCM為什麼要分塊的原因,還有一張圖來解釋他們的連接結構,但是這張圖裏的LSU和PFU單元我沒看懂是個啥,通篇也沒介紹,我也不多解釋了,具體的連接其實我我剛開始將RPU系統結構的時候比較類似,可以類比着看。
image
這裏後面還有一部分講鎖步模式和TCM的地址映射的,我看了下鎖步模式其實之前就講的差不多了這裏我們着重講一下TCM的地址映射。

4.11.1 Tightly Coupled Memory Address Map

我們之前講過TCM由於RPU的使用以及EVP異常向量指針的存放的原因,需要對其進行地址映射,這一映射使得RPU能夠通過0x00地址直接訪問TCM,而外部可以通過全局地址訪問TCM,這一映射可以體現在下面的兩個表格中,一個是具體映射的地址,另一個是示意圖:
image
image
這裏我在第一個表中額外多截了幾句話,講的是R5_0的0xFFE6_00000xFFE0_0000和R5_1的0xFFEE_00000xFFE9_0000這些地址可以被連到R5F的從接口,也就是包括TCM和I/D Cache都是可以被外部訪問的。

最後這部分還有一點和GIC相關的內容,大致是説CCI可能會以R5_0的身份訪問內存,如果不把RPU加入可信賴的名單的話可能會由於安全設置導致錯誤,這裏就簡單翻譯一下了:

在某些情況下,CCI-400將使用與R5_0相同的主ID生成交易。如果該區域是一致的並受XMPU保護,則將生成錯誤,除非R5_0添加到XMPU的允許主ID列表中。如果R5_0對該區域的訪問與系統的安全或安全目標不兼容,則用户可以僅使用R5_1運行R5 F應用程序(不使用R5_0),或者跳過使用一致性並且不將R5_0添加到XMPU允許列表。

其實這節最後還有一點介紹使用匯編語言使能R5F處理器的鎖步模式的過程,但是都用上彙編了確實有點抽象,自從微機原理學完我都多久沒見過彙編了,這裏也就不在解釋了,有興趣可以去看第82頁。

本章小節

在寫完前一章的APU的內容後,寫這一章RPU的內容可以讓我感覺十分輕鬆了,大部分概念都不難且也並不複雜,總之我們下一章再見。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.