KeyStone記憶體架構

本文作者:admin       點擊: 2011-12-23 00:00
前言:
序言
隨著全球大量的資料強烈衝擊無線和有線網絡,營運商面臨著嚴峻的挑戰,需要不斷推出能滿足當前與未來需求的網絡。因此,通訊基礎建設設備製造商致力於降低每 bit 成本和功耗的同時,也不斷尋求能夠滿足當前及未來需求的核心技術。TI最新推出的新型 KeyStone 多核心 SoC 架構即能滿足這些挑戰。

基於新型 KeyStone 多核心 SoC 架構的裝置包含了多達 8 個TMS320C66x DSP CorePac,能夠實現無與倫比的定點與浮點處理能力。KeyStone 架構是一款精心設計且效率極高的多核心記憶體架構,能在執行任務的同時,允許所有的 CorePac實現全速處理。本文探討 KeyStone 記憶體層級,以及如何連結至 SoC 架構的其他組件,以實現多核心全速處理。

KeyStone記憶體架構
TI積極創新以面對多核心 SoC 技術挑戰。TI KeyStone 架構包含全新的 C66x 定點和浮點 DSP 核心、針對基於標準的優化功能和介面的可配置協處理器、層級記憶體架構、TeraNet 切換結構以及可將上述各組件連結在一起的多核心導航器。KeyStone 架構具備三種記憶體階級;每個 C66xCorePac 均擁有自己的一級程式 (L1P) 和一級資料 (L1D) 記憶體。另外,每個 CorePac 還擁有本地 (local) 的二級統一記憶體。每個本地記憶體均能獨立配置成記憶體映射的SRAM、快速緩衝貯存區,或是兩者的組合。

KeyStone 架構包含共享的記憶體子系統,是透過多核心共享記憶體控制器 (MSMC) 連結的內部和外部記憶體所組合而成。MSMC 允許CorePac動態地分享程式和資料的內外部記憶體。


圖 1 - KeyStone 裝置方塊圖 - TMS320TCI6616

MSMC 的內部 RAM 透過允許各部分被配置成共享的二級 RAM 或者共享三級 (SL3) RAM,可提供程式設計師高度的靈活度。SL2 RAM 僅能夠在本地 L1P 和 L1D 快速緩衝貯存區中緩存,而 SL3另外可在本地 L2 快速緩衝貯存區中進行緩存。

爲提供軟體執行一個快速路徑,外部記憶體和內部共享記憶體一樣,透過同一記憶體控制器進行連結,而並非像在嵌入式處理器架構上所進行的傳統做法 - 與晶片系統實現相互連結。外部記憶體始終被視為 SL3 記憶體,並可在 L1 和 L2 中緩存。接下來將探討在KeyStone 架構中實現的各種效能提升。

儲存效能提升

C66x CorePac 的內部記憶體架構是從上一代 C6000™ DSP 系列産品達到四方面的提升,特別針對效能指標和實用性方面。這些改進實現以下優勢:1) 無論多個核心和資料 I/O 是否處於高度繁忙狀態,都能提高記憶體各級的執行效率;2) 更輕鬆地管理多個核心和資料 I/O 之間的緩存一致性;3) 記憶體的保護與地址擴展,以及;4) 將對軟錯誤的保護進一步擴展至較高級的記憶體。

執行效率 —— C66x CorePac 記憶體子系統在功能上相當於最新的 C64x+™ 和C67x™ 系列 DSP 系列 C64x+™ 和 C67x™。每個本地 L1記憶體均爲 32KB,並能夠配置成全速緩存(隱含)、全記憶體映射 SRAM,或是 4、8 或 16KB 快速緩衝貯存區選項的組合。L1P 始終爲直接映射,而 L1D 則始終爲雙向集合關聯 (two-way set-associative)。

 
圖2 – CorePac 記憶體提升


相應地,本地 L2 記憶體是高達 1MB 的統一記憶體(最初宣佈推出的裝置爲 512KB 或 1MB)。此外,該記憶體也可配置爲全快速緩衝貯存、全記憶體映射 SRAM(隱含),或是 32、64、128、256 或 512KB 四路集合關聯快速緩衝貯存選項的組合。

要到達共享存記憶體子系統的存取路徑是經過精心的重新設計,能夠顯著降低至較高級記憶體的延遲,無論所有CorePac和資料 I/O 是否處於繁忙狀態,均能維持相同的效率。

第二級記憶體效率 —— 與之前的系列産品相比,LL2 記憶體裝置和控制器在更高時脈下運行。C66x LL2 記憶體以等同於 CPU 的時脈速率運行。更高的時脈速率可實現更快的存取,可减少了因 L1 快速緩衝貯存失效所造成的停滯,在此情况下必須從 LL2 快速緩衝貯存或 SRAM 獲取記憶體。當從 C64X+ 或 C67X 裝置升級時,此項改變就自動地加速應用,而且無需爲 C66x 指令集進行重新編譯。

此外,無論是由使用者隱藏的還是由軟體命令驅動的快速緩衝貯存一致性操作都會變得更高效,而且需要執行的周期數也更少。反之,這也意味著自動的快速緩衝貯存一致性操作(例如檢測、驅逐)對處理器的干擾就更小,因此停滯周期數也更少。手動的快速緩衝貯存一致性操作(例如全域或區塊回寫和/或無效)佔用較少的周期即可完成,這就意味著在爲共享記憶體進行判優的同時,實現CorePac 之間或 CorePac 與 DMA 主系統的同步將需要更短的等待時間。

共享記憶體效率 —— 爲進一步提高共享記憶體的執行效率,在 CorePac 內置了擴展記憶體控制器 (XMC)。對共享內部記憶體 (SL2/SL3) 和外部記憶體 (DDR3 SRAM) 來說,XMC 是通往 MSMC 的途徑,並建立在實施在之前裝置的架構上,該裝置具有共享二級(SL2)記憶體(比如TMS320C6472 DSP)。

圖 3 - 共享記憶體架構


在之前具有 SL2 記憶體的裝置上,通往 SL2 的存取路徑與通往 LL2的存取路徑一樣,在鄰近內部介面均有一個預取緩衝器。預取功能可隱藏對共享 RAM 庫的存取延遲,並可優化程式碼執行及對只讀取資料的存取(全面支援寫入操作)。XMC 雖然也遵循相同的目標,但是卻進一步擴展添加了更加强大的預取功能,從而對程式執行和 R/W 數資料取提供了可與 LL2 相媲美的最佳效能。預取功能不僅能在造訪記憶體之前,透過拉近記憶體和 C66x DSP 核心之間的距離來降低存取延遲,而且還能減緩其他 CorePac 和資料 I/O 透過 MSMC 爭奪同一記憶體資源的競爭局面。

MSMC 透過 256 位元寬的匯流與 XMC 相連,而 XMC 則可直接連結至用於內部 SL2/SL3 RAM 的 4 個寬 1024 位元記憶體組。內部記憶體組使 XMC 中的預取邏輯功能,能夠在未來每次存取物理 RAM 的要求之前獲取程式和資料,從而避免後續訪問停滯在 XMC。MSMC 可透過另一 256 位元介面與外部記憶體介面控制器直接相連,進一步將 CorePac 的高頻寬介面一直擴展到外部記憶體。

對於外部記憶體而言,KeyStone架構可透過與共享內部記憶體相同的通道進行存取,顯著地提升之前的架構。該通道的寬度是之前裝置的兩倍,而速度則爲一半,能大幅降低到達外部 DDR3 記憶體控制器(透過 XMC 和 MSMC)的延遲。在之前的 C6000 DSP 中以及衆多的嵌入式處理器架構中,外部 CPU 和快速緩衝貯存存取是透過晶片級互連進行發佈的,而 XMC 則可提供更爲直接的最佳通道。當從外部記憶體執行程式時,其可大幅提高 L1/L2 快速緩衝貯存效率,並在多個核心與資料 I/O 對外部記憶體同時進行判優時,能夠顯著降低所帶來的遲滯。

對於內部和外部記憶體,所有的資料 I/O 流量都可透過多條直接通道進入 MSMC 到達晶片,而不是透過 CorePac 記憶體控制器,從而在當資料 I/O 要存取 CorePacs 當前沒有存取(例如,當 CorePac 從 SL2 執行,而資料 I/O往返於 DDR3 時)的記憶體端點時,能使兩者處於完全正交的狀態;而且在 XMC 預取緩衝器後可提供判優,以對 CorePacs 隱藏記憶體組之間的衝突。

此外,XMC 還爲資料和程式預取嵌入多串流預取緩衝器。程式預取緩衝器可爲來自 L1P 和 L2 的讀取請求提供服務,從而使其能夠在 CPU 需要之前預取高達 128 位元組的程式資料。資料預取緩衝器可爲來自 L1D 和 L2 的讀取請求提供服務。資料預取單元能夠支援 8 個預取串流,且每個串流都能獨立地從地址增加方向或减少方向預取資料。針對進入 DSP 核心的資料串流,預取功能能夠有助於减少强制失效損失。在多核心環境中,預取功能還能透過分散頻寬尖峰來提升效能。爲在不增加負面影響的情况下利用預取實現效能提升,則可在 16MB 範圍內,記憶體可被配置爲啓用或禁用預取屬性。

外部記憶體效率——除了將外部記憶體連結到 MSMC 所帶來的優勢,KeyStone 外部記憶體還包含了對外部記憶體控制器 (EMIF) 的顯著改進。KeyStone 架構能夠以 1333MT/s以上的速率支援高效能 DDR3 SDRAM 記憶體。雖然匯排流可配置成 16 或 32 位元(爲節省電路板空間和功耗),但其實際支援的匯流排寬高達 64 位元資料寬度。該架構相較於之前的,具有更大的寬度以及更快的速度,可允許多個更高效能的核心、加速器和資料 I/O之整合。

快速緩衝貯存一致性控制——通常在多核心裝置以及多裝置系統內,資料作爲處理的一部分在核心之間共享。KeyStone 架構可提供一些改進措施,以簡化共享內部與外部記憶體的一致性管理操作。

在 KeyStone 架構中,LL2 記憶體始終與 L1D 快速緩衝貯存保持一致,所以不需要對一致性管理進行特殊的配置(雖然使用 L1D 一致性命令有可能實現一些效能優化)。而硬體無法保證SL2 和 SL3 這兩種共享記憶體與 L1 和 L2 快速緩衝貯存的同步,因此需要軟體控制往返於資料 I/O 頁面的傳輸,以及對多核心之間共享緩衝器的存取。

爲簡化該過程,已將圍籬 (fence) 操作增加到 CorePac 中,以作爲新的 MFENCE 指令。當與簡單的 CPU 迴路結合時,MFENCE 可被使用於實施 fence 操作,以保證讀/寫存取群組之間的序列一致性。能對可能從不同路徑到達的特定端點之記憶體要求同步進行。此外,對於多處理器演算法,還可使用於以特定順序實現對記憶體的存取,而這-順序從所有 CPU 角度來看都一樣。這可大幅簡化共享資料段所需的一致性協議。

共享記憶體保護與地址擴展 —記憶體保護在內部記憶體中(L1、L2、SL2) 均是 C64x+ 和 C67x DSP 架構的一部分。KeyStone 架構將記憶體保護擴展至外部記憶體的同時,還為內部記憶體保護添增靈活度。另外,MSMC 允許將外部記憶體的地址空間從 32 位元擴展至 36 位元。

每個 C66x DSP 都被分配一個獨特的權限 ID (PrivlD) 值。資料 I/O 主系統被分配一個 PrivID,而EDMA 則例外,但它可以繼承爲每次傳輸進行配置的主系統 PrivID 值。KeyStone 裝置總共可支援 16 個 PrivID 值。記憶體保護屬性分別爲管理員用戶和普通用戶分配了讀/寫/執行存取權限。

本地記憶體的儲存保護 —— C66x CorePac可提供由軟體控制的請求者到記憶體的靈活映射,進一步從之前的 C6000 架構擴展記憶體保護協議。所有記憶體請求者(C66x CPU、EDMA、導航器、PCIe、SRIO 等)均擁有相關連的特權 ID。內部記憶體控制器可以區分多達 6 個不同的請求者,並配置所有其他請求者。由於 KeyStone 裝置整合了更多的核心以及更多的 DMA 主系統(I/O 和加速器),這一數目已不敷使用。KeyStone CorePac 允許將系統主控器的 ID 映射到保護邏輯中使用的 ID,使應用能夠獲得量身打造的强大保護功能。


圖 4 - 記憶體保護屬性


共享記憶體的記憶體保護 —— 共享記憶體擁有多個記憶體保護和地址擴展 (MPAX) 單元。C66x DSP 可透過 XMC 中的本地 MPAX 訪問 MSMC 通道,而資料 I/O 則透過 MSMC 中的MPAX 邏輯訪問 MSMC,並分別對內部共享記憶體和外部記憶體進行控制。

MPAX 單元將記憶體保護和地址擴展結合成一步完成。正如對本地記憶體的存取一樣,MPAX 的操作基礎爲每個交易事務承載的特權 ID,用以代表記憶體的請求者。對於每個 PrivID,相關連的 MPAX 單元在內部共享記憶體和外部記憶體中均支援最多 16 個記憶體段的定義,每個記憶體段均獨立配置,並提供各自的記憶體保護地址擴展屬性。每個記憶體段的大小可以是2 的任意次方,範圍介於 4KB 到 4GB 之間。地址擴展功能可將外部儲存空間從 32 位元地址擴展至 36 位元。

 
圖 5 – MSMC 地址擴展



記憶體段的地址區間定義非常靈活,而且能夠重疊以建立尺寸爲非 2 的指數次方大小的段,以及附加的記憶體區域。

地址擴展功能可將 32 位元地址重新映射到 36 位元,以支援更大的外部記憶體。地址擴展能將 DSP 核心中相同的虛擬地址,映射到不同的物理地址,並將多個虛擬地址映射到同一物理地址,這對於同一個記憶體來說具有不同的語義。MPAX 單元可將運行在不同 DSP 核心之上的操作系統和應用進行隔離,並能輕鬆支援共享程式。

圖 6 顯示了如何在 KeyStone 架構內,使用 MPAX 來建立多核心虛擬記憶體的實例。假設所有核心均運行同一應用,則可將該共享程式和靜態資料加載至共享的內部和外部記憶體區域中。私有變數(如資料 1)可以使用各個核心中的同一虛擬地址,同時 MPAX 將其映射至不同的物理記憶體地址。軟體在運行時無需重新進行任何地址映射,即可使相同的代碼影像在多個核心上執行。

錯誤偵測與糾正 —— 專用於基礎建設的幾代 C6000 裝置系列,內部記憶體空間中包含了軟錯誤糾正功能。KeyStone 系列裝置以該技術爲基礎,能夠進一步將軟錯誤保護擴展至記憶體的所有層級。

 
圖 6 - 多核心虛擬記憶體

 
層級系統中的記憶體控制器可支援多層級保護,並可用於實現對代碼段進行全面糾正,並對資料空間進行錯誤偵測。L1P、L2 和 SL2(或 SL3 內部 RAM)均包含偵測和糾正 128 元或 256 位元記憶體段內單一位元錯誤的奇偶校驗訊息。另外,還將能偵測到同一存取中的兩個位元錯誤並對存取 CorePac 觸發異常。對於資料存取,僅能偵測到位元誤差,並觸發異常。無論發生偵測還是糾正事件,訊息均被儲存在錯誤存取的記憶體控制器中,以便爲應用和/或主機恢復提供資訊協助。

透過 ECC 邏輯可將軟錯誤保護進一步擴展至外部記憶體空間。每 64 位元資料有一個 8 位元 ECC 碼,根據選項可配置成支援 32 位元和 64 位元資料寬度。添加 ECC 需要支援 32 位元資料寬度的額外 4 位元 DDR3 IC(實現 36 位元介面),或額外的 8 位元 DDR3 IC(實現 72 位元介面)以存放與整個外部資料空間相關的 ECC 值。

總結

新型 KeyStone 架構在記憶體架構方面具備各種優勢,意味著無論在單一核心還是在多核心 SoC 執行環境中,都能夠直接實現顯著的效能提升。與前代産品相比,這些效能提升涉及各級記憶體,如本地 L2、共享 L2/L3,以及外部記憶體等。透過高效判優和預取機制,效能改進也體現在多核心、加速器以及資料 I/O 的同時存取方面。

針對核心之間以及核心與資料 I/O 之間的共享資料頁面,快速緩衝貯存一致性控制的提升,可實現更簡單的判優。實施記憶體保護和地址擴展可實現高度靈活的編程模型、更大範圍的地址搜索,並爲錯誤存取提供保護。針對各級記憶體的軟錯誤保護可確保運行時,執行不受隨機軟錯誤事件的影響,而該事件會對所有嵌入式處理器造成影響。

Keystone 架構在記憶體效能、易操作性以及靈活度方面實現的改進,可確保程式人員能夠實現由功能强大的新型C66X DSP系列提供的全速效能優勢。該架構具有卓越的可擴展性,其爲具有各種數量的核心、加速器和資料 I/O 的 SoC 系列奠定了堅固基礎,。

如欲瞭解更多詳情,敬請參訪 www.ti.com/c66multicore

電子郵件:look@compotechasia.com

聯繫電話:886-2-27201789       分機請撥:11