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