KeyStone存儲器架構(gòu)
序言
隨著全球范圍內(nèi)的海量數(shù)據(jù)對無線和有線網(wǎng)絡(luò)的強(qiáng)大沖擊,運(yùn)營商面臨著嚴(yán)峻的挑戰(zhàn),他們需要不斷推出既能滿足當(dāng)前需求也能滿足未來需求的網(wǎng)絡(luò)。因此,通信基礎(chǔ)局端設(shè)備制造商在致力于降低每比特成本和功耗的同時,也在不斷尋求能夠滿足當(dāng)前及至未來需求的核心技術(shù)。TI最新推出的新型 KeyStone 多內(nèi)核 SoC 架構(gòu)能夠游刃有余地滿足這些挑戰(zhàn)。
基于新型 KeyStone 多內(nèi)核 SoC 架構(gòu)的器件集成了多達(dá) 8 個TMS320C66x DSP CorePac,能夠?qū)崿F(xiàn)無與倫比的定點(diǎn)與浮點(diǎn)處理能力。KeyStone 架構(gòu)經(jīng)精心設(shè)計,是一款效率極高的多內(nèi)核存儲器架構(gòu),允許并行執(zhí)行任務(wù)的同時,還能使所有的 CorePac實(shí)現(xiàn)全速處理。本文探討了 KeyStone 存儲器的層級結(jié)構(gòu),及其將如何與 SoC架構(gòu)的其他組件進(jìn)行連接以實(shí)現(xiàn)多內(nèi)核全速處理。
德州儀器 (TI) 積極創(chuàng)新,努力迎接多內(nèi)核 SoC 技術(shù)帶來的挑戰(zhàn)。TI KeyStone 架構(gòu)擁有眾多組件,其中包含全新的 C66x 定點(diǎn)和浮點(diǎn) DSP 內(nèi)核、可實(shí)現(xiàn)基于標(biāo)準(zhǔn)的優(yōu)化功能和接口的可配置協(xié)處理器、層級存儲器架構(gòu)、TeraNet 交換結(jié)構(gòu)以及可將上述各組件連結(jié)在一起的多內(nèi)核導(dǎo)航器。KeyStone 架構(gòu)具備三個存儲等級。每個 C66xCorePac 均擁有自己的一級程序 (L1P) 和一級數(shù)據(jù) (L1D) 存儲器。另外,每個 CorePac 還擁有局域的二級統(tǒng)一存儲器。每個局域存儲器均能獨(dú)立配置成存儲器映射的SRAM、高速緩存,或是兩者的組合。
KeyStone 架構(gòu)包含共享的存儲器子系統(tǒng),其由通過多內(nèi)核共享存儲器控制器 (MSMC) 連接的內(nèi)部和外部存儲器組成。MSMC 允許CorePac動態(tài)地分享程序和數(shù)據(jù)的內(nèi)外部存儲器。
圖 1 - KeyStone 器件方框圖 - TMS320TCI6616
2
MSMC 的內(nèi)部 RAM 允許各部分被配置成共享的二級 RAM 或者共享三級 (SL3) RAM,從而可為程序員提供高度的靈活性。SL2 RAM 僅能夠在局域 L1P 和 L1D 高速緩存中緩存,而 SL3另外還可在局域 L2 高速緩存中進(jìn)行緩存。
為向軟件執(zhí)行提供快速通道,外部存儲器同內(nèi)部共享存儲器一樣,通過同一存儲器控制器進(jìn)行連接,而并非像在嵌入式處理器架構(gòu)上所進(jìn)行的傳統(tǒng)做法那樣,與芯片系統(tǒng)實(shí)現(xiàn)互通互連。外部存儲器始終被看作是 SL3 存儲器,并可在 L1 和 L2 中緩存。接下來的我們將探討在KeyStone 架構(gòu)中實(shí)現(xiàn)的各種性能增強(qiáng)。
存儲性能增強(qiáng) C66x CorePac 的內(nèi)部存儲器架構(gòu)與此前 C6000™ DSP 系列產(chǎn)品相比,主要在四個方面實(shí)現(xiàn)了增強(qiáng),而這突出體現(xiàn)在性能指標(biāo)和實(shí)用性方面。這些改進(jìn)旨在實(shí)現(xiàn)如下優(yōu)勢:1) 無論多個內(nèi)核和數(shù)據(jù) I/O 是否處于高度繁忙狀態(tài),都能提高存儲器各級的執(zhí)行效率;2) 更輕松便捷地管理多個內(nèi)核和數(shù)據(jù) I/O 之間的緩存一致性;3) 存儲器的保護(hù)與地址擴(kuò)展,以及;4) 將對軟錯誤的保護(hù)進(jìn)一步擴(kuò)展至較高級別的存儲器。
執(zhí)行效率 —— C66x CorePac 的存儲器子系統(tǒng)在功能上與最新的 C64x+™ 和C67x™ 系列 DSP 系列 C64x+™ 和 C67x™ 的相當(dāng)。每個局域 L1存儲器均為 32KB,并能夠配置成全速緩存(默認(rèn))、全存儲器映射 SRAM,或是 4、8 或 16KB 高速緩存選項的組合。L1P 始終為直接映射,而 L1D 則始終為雙向集關(guān)聯(lián) (two-way set-associative)。
圖2 – CorePac 存儲器增強(qiáng)[!--empirenews.page--]
3
相應(yīng)地,局域 L2 存儲器是高達(dá) 1MB 的統(tǒng)一存儲器(最初宣布推出的器件為 512KB 或 1MB)。此外,該存儲器也可配置為全高速緩存、全存儲器映射 SRAM(默認(rèn)),或是 32、64、128、256 或 512KB 四路集關(guān)聯(lián)高速緩存選項的組合。
至共享存儲器子系統(tǒng)的存取路徑經(jīng)過精心的重新設(shè)計,能夠顯著降低至較高級存儲器的時延,無論所有CorePac和數(shù)據(jù) I/O 是否處于繁忙狀態(tài),均能維持相同的效率。
二級存儲器效率 —— 與之前的系列產(chǎn)品相比,LL2 存儲器器件和控制器的時鐘運(yùn)行速率更高。C66x LL2 存儲器以等同于 CPU 時鐘的時鐘速率運(yùn)行。更高的時鐘頻率可實(shí)現(xiàn)更快的訪問時間,從而減少了因 L1 高速緩存失效造成的停滯,在此情況下必須從 LL2 高速緩存或 SRAM 獲取存儲器)。光這一項改進(jìn)就自動使得從 C64X+ 或 C67X 器件進(jìn)行應(yīng)用升級實(shí)現(xiàn)了很大的速度提升,而且無需為 C66x 指令集進(jìn)行重新編譯。
此外,無論是對用戶隱藏的還是由軟件命令驅(qū)動的高速緩存一致性操作都會變得更高效,而且需要執(zhí)行的周期數(shù)也更少。反之,這也意味著自動的高速緩存一致性操作(例如檢測、數(shù)據(jù)移出)對處理器的干擾更小,因而停滯周期數(shù)也更少。手動的高速緩存一致性操作(例如全局或模塊回寫和/或無效)占用較少的周期即可完成,這就意味著在為共享存儲器判優(yōu)的過程中,實(shí)現(xiàn)CorePac 之間或 CorePac 與 DMA 主系統(tǒng)的同步將需要更短的等待時間。
共享存儲器效率 —— 為進(jìn)一步提高共享存儲器的執(zhí)行效率,在 CorePac 內(nèi)置了擴(kuò)展存儲器控制器 (XMC)。對共享內(nèi)部存儲器 (SL2/SL3) 和外部存儲器 (DDR3 SRAM) 來說,XMC 是通向 MSMC 的通道,且架構(gòu)的構(gòu)建基礎(chǔ)實(shí)施在此前具有共享二級(SL2)存儲器(比如TMS320C6472 DSP)的器件之上。
圖 3 - 共享存儲器架構(gòu)
在以前具有 SL2 存儲器的器件上,通向 SL2 的存取路徑與通向 LL2的存取路徑一樣,在鄰近內(nèi)部接口處均有一個預(yù)取緩沖器。預(yù)取功能可隱藏對共享 RAM 庫的訪問時延,并可優(yōu)化代碼執(zhí)行及對只讀數(shù)據(jù)的存?。ㄈ嬷С謱懖僮鳎?。XMC 雖然也遵循相同的目標(biāo),但是卻進(jìn)一步擴(kuò)展添加了強(qiáng)大得多的預(yù)取功能,從而對程序執(zhí)行和 R/W 數(shù)據(jù)獲取提供了可與 LL2 相媲美的最佳性能。預(yù)取功能不僅能在訪問存儲器之前通過拉近存儲器和 C66x DSP 內(nèi)核之間的距離來降低存取時延,而且還能緩解其他 CorePac 和數(shù)據(jù) I/O 通過 MSMC 爭奪同一存儲器資源的競爭局面。
MSMC 通過 256 位寬的總線與 XMC 相連,而 XMC 則可直接連接至用于內(nèi)部 SL2/SL3 RAM 的 4 個寬 1024 位存儲器組。內(nèi)部存儲器組使 XMC 中的預(yù)取邏輯功能能夠在未來每次請求訪問物理 RAM 之前獲取程序和數(shù)據(jù),從而避免后續(xù)訪問停滯在 XMC。MSMC 可通過另一 256 位接口與外部存儲器接口控制器直接相連,進(jìn)一步將 CorePac 的高帶寬接口一直擴(kuò)展到外部存儲器。
對于外部存儲器而言,KeyStone架構(gòu)可通過與共享內(nèi)部存儲器相同的通道進(jìn)行訪問,從而較之前的架構(gòu)實(shí)現(xiàn)了顯著的增強(qiáng)。該通道的寬度是之前器件的兩倍,而速度則為一半,從而大幅降低了到達(dá)外部 DDR3 存儲器控制器(通過 XMC 和 MSMC)的時延。在此前的 C6000 DSP 中以及眾多的嵌入式處理器架構(gòu)中,外部 CPU 和高速緩存訪問是通過芯片級互連進(jìn)行發(fā)布的,而 XMC 則可提供更為直接的最優(yōu)通道。當(dāng)從外部存儲器執(zhí)行程序時,其可大幅提高 L1/L2 高速緩存效率,并在多個內(nèi)核與數(shù)據(jù) I/O 對外部存儲器并行判優(yōu)時能夠顯著降低所帶來的遲滯。[!--empirenews.page--]
對于內(nèi)部和外部存儲器,所有的數(shù)據(jù) I/O 流量都可通過多條直接通道進(jìn)入 MSMC 到達(dá)芯片,而不是通過 CorePac 存儲器控制器,從而在當(dāng)數(shù)據(jù) I/O 要訪問 CorePacs 當(dāng)前沒有訪問(例如,當(dāng) CorePac 從 SL2 執(zhí)行,而數(shù)據(jù) I/O往返于 DDR3 時)的存儲器端點(diǎn)時,能使兩者處于完全正交的狀態(tài);而且在 XMC 預(yù)取緩沖器后可提供判優(yōu)以對 CorePacs 隱藏存儲器組之間的沖突。
此外,XMC 還為數(shù)據(jù)和程序預(yù)取嵌入了多流預(yù)取緩沖器。程序預(yù)取緩沖器可為來自 L1P 和 L2 的讀取請求提供服務(wù),從而使其能夠在 CPU 需要之前預(yù)取高達(dá) 128 字節(jié)的程序數(shù)據(jù)。數(shù)據(jù)預(yù)取緩沖器可為來自 L1D 和 L2 的讀取請求提供服務(wù)。數(shù)據(jù)預(yù)取單元能夠支持 8 個預(yù)取流,且每個流都能獨(dú)立地從地址增加方向或地址減少方向預(yù)取數(shù)據(jù)。針對進(jìn)入 DSP 內(nèi)核的數(shù)據(jù)流,預(yù)取功能能夠有助于減少強(qiáng)制失效損失。在多內(nèi)核環(huán)境中,預(yù)取功能還能通過分散帶寬峰值來提升性能。為在不增加負(fù)面影響的情況下利用預(yù)取實(shí)現(xiàn)性能提升,可在 16MB 范圍內(nèi)將存儲器配置為啟用或禁用預(yù)取屬性。
外部存儲器效率——除了將外部存儲器連接到 MSMC 所帶來的優(yōu)勢,KeyStone 外部存儲器還包含了對外部存儲器控制器 (EMIF) 的顯著改進(jìn)。KeyStone 架構(gòu)能夠以 1333MT/s以上的速率支持高性能 DDR3 SDRAM 存儲器。雖然總線能配置成 16 或 32 位(為節(jié)省面板空間和功耗),但其實(shí)際支持的總線寬高達(dá) 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)可提供一些改進(jìn)措施,以簡化共享內(nèi)部與外部存儲器的一致性管理操作。
在 KeyStone 架構(gòu)中,LL2 存儲器始終與 L1D 高速緩存保持一致,所以不需要對一致性管理進(jìn)行特殊的配置(雖然利用 L1D 一致性命令可實(shí)現(xiàn)一些性能優(yōu)化)。SL2 和 SL3 這兩種共享存儲器不能由硬件來保障與 L1 和 L2 高速緩存的同步。因此需要軟件控制往返于數(shù)據(jù) I/O 頁面的傳輸,以及對多內(nèi)核之間共享緩沖器的訪問。
為簡化該過程,已將 fence 操作作為新的 MFENCE 指令添加到 CorePac 中。當(dāng)與簡單的 CPU 環(huán)路組合使用時,能將 MFENCE 用于實(shí)施 fence 操作,以保障讀/寫訪問群組之間的序列一致性。能將其用于對可能從不同路徑到達(dá)的特定端點(diǎn)的存儲器請求進(jìn)行同步。此外,對于多處理器算法,還可將其用于以特定順序?qū)崿F(xiàn)對存儲器的存取,而這-順序從所有 CPU 角度來看都一樣。這可大幅簡化共享數(shù)據(jù)段所需的一致性協(xié)議。
共享存儲器保護(hù)與地址擴(kuò)展 — C64x+ 和 C67x DSP 架構(gòu)均將存儲器保護(hù)作為內(nèi)部存儲器設(shè)計(L1、L2、SL2)的一部分。KeyStone 架構(gòu)將存儲器保護(hù)擴(kuò)展至外部存儲器,同時還增強(qiáng)了對內(nèi)部存儲器進(jìn)行保護(hù)的靈活性。另外,MSMC 允許將外部存儲器的地址空間從 32 位擴(kuò)展至 36 位。
可為每個 C66x DSP 分配唯一的權(quán)限 ID (PrivlD) 值??蔀閿?shù)據(jù) I/O 主系統(tǒng)分配一個 PrivID,EDMA 則例外,但它可以繼承為每次傳輸進(jìn)行配置的主系統(tǒng)的 PrivID 值。KeyStone 器件總共可支持 16 個 PrivID 值。存儲器保護(hù)屬性分別為管理員用戶和普通用戶分配了讀/寫/執(zhí)行訪問權(quán)限。
局域存儲器的存儲保護(hù) —— C66x CorePac可提供由軟件控制的請求者到存儲器映射的靈活性,從而進(jìn)一步擴(kuò)展了此前 C6000 架構(gòu)的存儲器保護(hù)協(xié)議。所有存儲器請求者(C66x CPU、EDMA、導(dǎo)航器、PCIe、SRIO 等)均擁有相關(guān)聯(lián)的特權(quán) ID。內(nèi)部存儲器控制器可以區(qū)分多達(dá) 6 個不同的請求者,并配置所有其他請求者。由于 KeyStone 器件集成了更多的內(nèi)核以及更多的 DMA 主系統(tǒng)(I/O 和加速器),這一數(shù)目已不夠用。KeyStone CorePac 允許將系統(tǒng)主控器的 ID 映射到保護(hù)邏輯中使用的 ID,以使應(yīng)用能夠獲得量身打造的強(qiáng)大保護(hù)功能。
圖 4 - 存儲器保護(hù)屬性
共享存儲器的存儲器保護(hù) —— 共享存儲器擁有多個存儲器保護(hù)和地址擴(kuò)展 (MPAX) 單元。C66x DSP 可通過 XMC 中的局域 MPAX 訪問 MSMC 通道,而數(shù)據(jù) I/O 則通過 MSMC 中的MPAX 邏輯訪問 MSMC,并分別對內(nèi)部共享存儲器和外部存儲器進(jìn)行控制。
MPAX 單元將存儲器保護(hù)和地址擴(kuò)展結(jié)合成一步完成。正如對局域存儲器的訪問一樣,MPAX 的運(yùn)行基礎(chǔ)為每個交易事務(wù)承載的特權(quán) ID,用以代表存儲器的請求者。對于每個 PrivID,相關(guān)聯(lián)的 MPAX 單元在內(nèi)部共享存儲器和外部存儲器中均支持最多 16 個存儲段的定義。每個存儲段均獨(dú)立配置,并提供各自的存儲器保護(hù)地址擴(kuò)展屬性。每個存儲段的大小可以是2 的任意次方,范圍介于 4KB 到 4GB 之間。地址擴(kuò)展功能可將外部存儲空間從 32 位地址擴(kuò)展至 36 位。
圖 5 – MSMC 地址擴(kuò)展
存儲器段的地址區(qū)間定義非常靈活,而且能夠重疊以創(chuàng)建尺寸為非 2 的指數(shù)次方大小的段以及附加的存儲器區(qū)域。[!--empirenews.page--]
地址擴(kuò)展功能可將 32 位地址重新映射到 36 位,從而支持更大的外部存儲器。地址擴(kuò)展能將 DSP 內(nèi)核中相同的虛擬地址映射到不同的物理地址,并將多個虛擬地址映射到同一物理地址,這對于同一個存儲器來說具有不同的語義。MPAX 單元可將運(yùn)行在不同 DSP 內(nèi)核之上的操作系統(tǒng)和應(yīng)用進(jìn)行隔離,并能輕松支持共享程序。
圖 6 顯示了如何在 KeyStone 架構(gòu)內(nèi)使用 MPAX 來構(gòu)建多內(nèi)核虛擬存儲器的實(shí)例。假定所有內(nèi)核均運(yùn)行同一應(yīng)用,則可將該共享程序和靜態(tài)數(shù)據(jù)加載至共享的內(nèi)部和外部存儲器區(qū)域中。私有變量(如數(shù)據(jù) 1)可以使用各個內(nèi)核中的同一虛擬地址,同時 MPAX 將其映射至不同的物理存儲器地址。軟件在運(yùn)行時無需重新進(jìn)行任何地址映射即可使相同的代碼映像在多個內(nèi)核上執(zhí)行。
錯誤檢測與校正 —— 專用于基礎(chǔ)局端系統(tǒng)的數(shù)代 C6000 器件系列,內(nèi)部存儲空間中包含了軟錯誤校正功能。KeyStone 系列器件以該技術(shù)為構(gòu)建基礎(chǔ),能夠進(jìn)一步將軟錯誤保護(hù)擴(kuò)展至存儲器的所有層級。
圖 6 - 多內(nèi)核虛擬存儲器
層級系統(tǒng)中的存儲器控制器可支持多級保護(hù),并可用于實(shí)現(xiàn)對代碼段進(jìn)行全面校正,并對數(shù)據(jù)空間進(jìn)行錯誤檢測。L1P、L2 和 SL2(或 SL3 內(nèi)部 RAM)均包含可用于檢測和校正 128 位或 256 位存儲器段內(nèi)單個位錯誤的奇偶校驗信息。另外,我們還將能檢測到同一訪問中的兩個位錯誤并觸發(fā)訪問 CorePac 產(chǎn)生異常。對于數(shù)據(jù)存取,僅能檢測到位誤差,并觸發(fā)異常。無論發(fā)生檢測還是校正事件,信息均被存儲在錯誤訪問的存儲器控制器中,以便為應(yīng)用和/或主機(jī)恢復(fù)提供信息援助。
通過 ECC 邏輯可將軟錯誤保護(hù)進(jìn)一步擴(kuò)展至外部存儲器空間。每 64 位數(shù)據(jù)有一個 8 位 ECC 碼,根據(jù)選項可配置成支持 32 位和 64 位數(shù)據(jù)寬度。添加 ECC 需要支持 32 位數(shù)據(jù)寬度的額外 4 位 DDR3 IC(實(shí)現(xiàn) 36 位接口),或額外的 8 位 DDR3 IC(實(shí)現(xiàn) 72 位接口)以存放與整個外部數(shù)據(jù)空間相關(guān)的 ECC 值。
總結(jié) 新型 KeyStone 架構(gòu)在存儲器架構(gòu)方面具備各種優(yōu)勢,意味著無論在單內(nèi)核還是在多內(nèi)核 SoC 執(zhí)行環(huán)境中都能夠直接實(shí)現(xiàn)顯著的性能提升。與此前的產(chǎn)品系列相比,這些性能提升涉及各級存儲器,如局域 L2、共享 L2/L3,以及外部存儲器等。通過高效判優(yōu)和預(yù)取機(jī)制,性能改進(jìn)也體現(xiàn)在多內(nèi)核、加速器以及數(shù)據(jù) I/O 的并行訪問方面。
針對內(nèi)核之間以及內(nèi)核與數(shù)據(jù) I/O 之間的共享數(shù)據(jù)頁面,緩存一致性控制的改進(jìn)可實(shí)現(xiàn)更簡單的判優(yōu)。
實(shí)施存儲器保護(hù)和地址擴(kuò)展可實(shí)現(xiàn)高度靈活的編程模型、更大范圍的地址搜索并為錯誤訪問提供保護(hù)。
針對各級存儲器的軟錯誤保護(hù)可確保運(yùn)行時執(zhí)行不受隨機(jī)軟錯誤事件的影響,而這一事件會對所有嵌入式處理器造成影響。
Keystone 架構(gòu)在存儲器性能、易操作性以及靈活性方面實(shí)現(xiàn)的改進(jìn)可確保程序員能夠?qū)崿F(xiàn)由功能強(qiáng)大的新型C66X DSP系列提供的全速性能優(yōu)勢。該架構(gòu)具有卓越的可擴(kuò)展性,其為具有各種數(shù)量的內(nèi)核、加速器和數(shù)據(jù) I/O 的 SoC 系列奠定了堅實(shí)基礎(chǔ),。