KeyStone存儲器架構(gòu)
對于內(nèi)部和外部存儲器,所有的數(shù)據(jù) I/O 流量都可通過多條直接通道進入 MSMC 到達芯片,而不是通過 CorePac 存儲器控制器,從而在當數(shù)據(jù) I/O 要訪問 CorePacs 當前沒有訪問(例如,當 CorePac 從 SL2 執(zhí)行,而數(shù)據(jù) I/O往返于 DDR3 時)的存儲器端點時,能使兩者處于完全正交的狀態(tài);而且在 XMC 預(yù)取緩沖器后可提供判優(yōu)以對 CorePacs 隱藏存儲器組之間的沖突。
此外,XMC 還為數(shù)據(jù)和程序預(yù)取嵌入了多流預(yù)取緩沖器。程序預(yù)取緩沖器可為來自 L1P 和 L2 的讀取請求提供服務(wù),從而使其能夠在 CPU 需要之前預(yù)取高達 128 字節(jié)的程序數(shù)據(jù)。數(shù)據(jù)預(yù)取緩沖器可為來自 L1D 和 L2 的讀取請求提供服務(wù)。數(shù)據(jù)預(yù)取單元能夠支持 8 個預(yù)取流,且每個流都能獨立地從地址增加方向或地址減少方向預(yù)取數(shù)據(jù)。針對進入 DSP 內(nèi)核的數(shù)據(jù)流,預(yù)取功能能夠有助于減少強制失效損失。在多內(nèi)核環(huán)境中,預(yù)取功能還能通過分散帶寬峰值來提升性能。為在不增加負面影響的情況下利用預(yù)取實現(xiàn)性能提升,可在 16MB 范圍內(nèi)將存儲器配置為啟用或禁用預(yù)取屬性。
外部存儲器效率——除了將外部存儲器連接到 MSMC 所帶來的優(yōu)勢,KeyStone 外部存儲器還包含了對外部存儲器控制器 (EMIF) 的顯著改進。KeyStone 架構(gòu)能夠以 1333MT/s以上的速率支持高性能 DDR3 SDRAM 存儲器。雖然總線能配置成 16 或 32 位(為節(jié)省面板空間和功耗),但其實際支持的總線寬高達 64 位數(shù)據(jù)寬度。該架構(gòu)相對于之前的架構(gòu)具有更大的寬度以及更快的速度,從而允許集成多個更高性能的內(nèi)核、加速器和數(shù)據(jù) I/O。
高速緩存一致性控制——通常在多內(nèi)核器件以及多器件系統(tǒng)內(nèi),數(shù)據(jù)作為處理的一部分在內(nèi)核之間共享。KeyStone 架構(gòu)可提供一些改進措施,以簡化共享內(nèi)部與外部存儲器的一致性管理操作。
在 KeyStone 架構(gòu)中,LL2 存儲器始終與 L1D 高速緩存保持一致,所以不需要對一致性管理進行特殊的配置(雖然利用 L1D 一致性命令可實現(xiàn)一些性能優(yōu)化)。SL2 和 SL3 這兩種共享存儲器不能由硬件來保障與 L1 和 L2 高速緩存的同步。因此需要軟件控制往返于數(shù)據(jù) I/O 頁面的傳輸,以及對多內(nèi)核之間共享緩沖器的訪問。
為簡化該過程,已將 fence 操作作為新的 MFENCE 指令添加到 CorePac 中。當與簡單的 CPU 環(huán)路組合使用時,能將 MFENCE 用于實施 fence 操作,以保障讀/寫訪問群組之間的序列一致性。能將其用于對可能從不同路徑到達的特定端點的存儲器請求進行同步。此外,對于多處理器算法,還可將其用于以特定順序?qū)崿F(xiàn)對存儲器的存取,而這-順序從所有 CPU 角度來看都一樣。這可大幅簡化共享數(shù)據(jù)段所需的一致性協(xié)議。
共享存儲器保護與地址擴展 — C64x+ 和 C67x DSP 架構(gòu)均將存儲器保護作為內(nèi)部存儲器設(shè)計(L1、L2、SL2)的一部分。KeyStone 架構(gòu)將存儲器保護擴展至外部存儲器,同時還增強了對內(nèi)部存儲器進行保護的靈活性。另外,MSMC 允許將外部存儲器的地址空間從 32 位擴展至 36 位。
可為每個 C66x DSP 分配唯一的權(quán)限 ID (PrivlD) 值。可為數(shù)據(jù) I/O 主系統(tǒng)分配一個 PrivID,EDMA 則例外,但它可以繼承為每次傳輸進行配置的主系統(tǒng)的 PrivID 值。KeyStone 器件總共可支持 16 個 PrivID 值。存儲器保護屬性分別為管理員用戶和普通用戶分配了讀/寫/執(zhí)行訪問權(quán)限。
局域存儲器的存儲保護 —— C66x CorePac可提供由軟件控制的請求者到存儲器映射的靈活性,從而進一步擴展了此前 C6000 架構(gòu)的存儲器保護協(xié)議。所有存儲器請求者(C66x CPU、EDMA、導(dǎo)航器、PCIe、SRIO 等)均擁有相關(guān)聯(lián)的特權(quán) ID。內(nèi)部存儲器控制器可以區(qū)分多達 6 個不同的請求者,并配置所有其他請求者。由于 KeyStone 器件集成了更多的內(nèi)核以及更多的 DMA 主系統(tǒng)(I/O 和加速器),這一數(shù)目已不夠用。KeyStone CorePac 允許將系統(tǒng)主控器的 ID 映射到保護邏輯中使用的 ID,以使應(yīng)用能夠獲得量身打造的強大保護功能。
圖 4 - 存儲器保護屬性
共享存儲器的存儲器保護 —— 共享存儲器擁有多個存儲器保護和地址擴展 (MPAX) 單元。C66x DSP 可通過 XMC 中的局域 MPAX 訪問 MSMC 通道,而數(shù)據(jù) I/O 則通過 MSMC 中的MPAX 邏輯訪問 MSMC,并分別對內(nèi)部共享存儲器和外部存儲器進行控制。
MPAX 單元將存儲器保護和地址擴展結(jié)合成一步完成。正如對局域存儲器的訪問一樣,MPAX 的運行基礎(chǔ)為每個交易事務(wù)承載的特權(quán) ID,用以代表存儲器的請求者。對于每個 PrivID,相關(guān)聯(lián)的 MPAX 單元在內(nèi)部共享存儲器和外部存儲器中均支持最多 16 個存儲段的定義。每個存儲段均獨立配置,并提供各自的存儲器保護地址擴展屬性。每個存儲段的大小可以是2 的任意次方,范圍介于 4KB 到 4GB 之間。地址擴展功能可將外部存儲空間從 32 位地址擴展至 36 位。
圖 5 – MSMC 地址擴展
存儲器段的地址區(qū)間定義非常靈活,而且能夠重疊以創(chuàng)建尺寸為非 2 的指數(shù)次方大小的段以及附加的存儲器區(qū)域。
評論