相應地,局域 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 操作作為新的 MFENCE 指令添加到 CorePac 中。當與簡單的 CPU 環路組合使用時,能將 MFENCE 用于實施 fence 操作,以保障讀/寫訪問群組之間的序列一致性。能將其用于對可能從不同路徑到達的特定端點的存儲器請求進行同步。此外,對于多處理器算法,還可將其用于以特定順序實現對存儲器的存取,而這-順序從所有 CPU 角度來看都一樣。這可大幅簡化共享數據段所需的一致性協議。
共享存儲器保護與地址擴展 — C64x+ 和 C67x DSP 架構均將存儲器保護作為內部存儲器設計(L1、L2、SL2)的一部分。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 位。
?
評論
查看更多