【Zynq UltraScale+ MPSoC解密學習5】Zynq UltraScale+的RPU

目錄

一、簡單介紹

二、Cortex-R5的結構(單核)

2.1 Data Processing Unit

2.2 Load/Store Unit

2.3 PreFetch Unit

2.4 L1 memory system

2.4.1 Icache和Dcache

2.4.2 Memory Protection Unit(MPU)

2.4.3 Tightly-Coupled Memory(TCM)接口

2.4.4 Error correction and detection

2.5 L2 AXI interfaces

2.5.1 AXI master接口

2.5.2 AXI slave接口

2.5.3 外設接口

2.6 其他模塊


一、簡單介紹

RPU, Real-time Processing Unit,實時處理單元。
Zynq UltraScale+裏的RPU採用的是雙核Cortex-R5,是Cortex R系列的第二代產品(第一代是R4)。
我們知道ARM家族現在有三類主流產品,其中Cortex A系列主打高性能,Cortex M系列主打低功耗,而Cortex R系列則一直比較低調,主打但是更快的響應,也就是高性能實時處理。R系列的處理器一般用於硬盤控制器、消費電子設備、汽車應用等等。
在U+裏,Cortex-R5擴展了Cortex-R4的功能集,增強了可靠實時系統中的錯誤管理,能夠很好的服務於網絡和數據存儲應用,效率和可靠性都很高。 


二、Cortex-R5的結構(單核)

R5是基於ARMv7架構,根據ARM的TRM文檔,單核的R5結構圖如下:
 
主要有以下Features:
• Data Processing Unit
• Load/Store Unit
• PreFetch Unit
• L1 memory system
• L2 AXI interfaces
• Dual-redundant core 
• Split/lock 
• Hard error features
• Debug 
• System control coprocessor 
• Interrupt handling 
• Power management 

下面我們挑幾個主要的模塊單獨做下介紹。

2.1 Data Processing Unit

Data Processing Unit,DPU,數據處理單元。
DPU包含處理器的大部分程序可見狀態,比如通用狀態寄存器、狀態寄存器和控制寄存器。它根據ARM架構去解碼、執行指令或操作寄存器中的數據。指令會經過buffer區域,從PFU獲取到DPU去執行。
從上圖我們可以看到,DPU還包含浮點單元FPU,也就是Floating Point Unit。浮點單元包含VFP寄存器文件和狀態寄存器,是DPU的一個可選部分,負責對VFP寄存器中的數據執行浮點操作。

2.2 Load/Store Unit

Load/Store Unit,LSU,下載存儲單元。
LSU管理所有的下載和存儲操作,與DPU連接到TCMs、緩存、外圍端口和L2 Cache接口。
上面提到的DPU如果要訪問內存,就必須經過LSU。

2.3 PreFetch Unit

PreFetch Unit,PFU,預取單元。
PFU從指令緩存、TCMs或外部內存中獲取指令並預測指令流中分支的結果。
PFU存在的目的:
1、通過預測指令流分支的結果,在DPU之前執行投機性的指令;
2、將指令數據格式化,以幫助DPU更高效地執行。

2.4 L1 memory system

L1 Memory系統包括以下特性:
    Icache和Dcache分離;
    靈活的TCM接口
    整個內存系統均爲64bit的數據路徑
    MPU支持內存區域大小可配置
    導出L2 Memory系統的內存屬性
    本地Memory支持奇偶校驗或ECC校驗
下面可以再詳細來看看L1 Memory系統的幾個子模塊。

2.4.1 Icache和Dcache

Icache和Dcache有以下特徵:
    支持指令Cache和數據Cache的獨立配置,配置大小區間爲4KB~64KB
    僞隨機Cache替換策略
    8字節高速緩存線長度,線長度支持Write-back或Write-through兩種Cache寫機制,由MPU區域來決定
    每個Cache可以獨立地被禁用
    從LDM和LDRM操作順序數據流或者獲取順序指令流
    當Cache miss的時候,可以進行關鍵字首次填補
    使用標準的ASIC RAM編譯器去實現所有的Cache RAM塊、相關tag和有效的RAM塊

2.4.2 Memory Protection Unit(MPU)

MPU爲嵌入式控制應用提供可配置的內存屬性,可以將MPU配置爲8個或者12個區域,每個區域的最小分辨率爲32字節。
MPU的區域可以重疊,編號最高的區域優先級最高。MPU檢查保護和內存屬性,並且可以將它們傳遞給L2的Memory系統。
以下爲MPU默認的Memory map:
 

2.4.3 Tightly-Coupled Memory(TCM)接口

因爲有些應用不需要Cache,所以有兩種TCM接口,分別是ATCM和BCTM。針對不同貸款的擴展應用,BTCM又有兩個Memory端口,爲B0TCM和B1TCM。
ATCM通常包含必須高速訪問的中斷或異常代碼,不會有任何潛在的延遲去造成緩存丟失。
BTCM則通常用於存儲需要密集處理的數據塊,如音頻或視頻處理。

2.4.4 Error correction and detection

爲了增加系統對軟件內存的容錯率,我們在配置Caches的時候可以:
1、進行奇偶校驗和ECC校驗
2、ECC代碼生成、單比特糾錯和雙比特糾錯
類似地,也可以配置TCM接口的ECC代碼生成、單比特糾錯和雙比特糾錯。

2.5 L2 AXI interfaces

L2 AXI interfaces的作用是爲了讓L1 memory systems可以通過AXI master、AXI slave接口以及外設端口去訪問外設和外接Memory。

2.5.1 AXI master接口

AXI主口爲二級緩存、on-chip RAM、外圍設備和到外部內存接口提供了高帶寬接口。它由一個具有64位讀通道和64位寫通道的AXI接口來獲取指令和數據。
AXI主口可以以處理器相同的頻率運行,也可以以較低的同步頻率運行。如果使用了異步時鐘,則需要外接異步AXI slice。

2.5.2 AXI slave接口

AXI從接口支持AXI主機,包括處理器的AXI主端口通過AXI系統總線訪問數據和指令緩存RAMS和TCMs。
AXI從接口可以以處理器相同的頻率運行,也可以以較低的同步頻率運行。如果使用了異步時鐘,則需要外接異步AXI slice。

2.5.3 外設接口

外設接口爲片上RAM和外設提供低延遲接口,只訪問非緩存的數據。外設接口包括一個32位的可以訪問兩個接口的AXI端口,還有一個32位的可以訪問一個接口的AHB端口。
外圍接口可以以與處理器相同的頻率運行,也可以以較低的同步頻率運行。如果使用了異步時鐘,則需要外接異步的AXI slice和異步的AHB橋。

2.6 其他模塊

其他的模塊(Dual-redundant core 、Split/lock、Hard error features、Debug、System control coprocessor 、Interrupt handling、Power management)這邊不做主要介紹了,有興趣的童鞋可以直接去看R5的TRM文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章