普遍用於手機、嵌入式設備的Arm處理器,目前包含了Cortex-A、Cortex-R、Cortex-M等三大系列,其中又以Cortex-A系列最為知名,歷代架構變革也最受外界矚目,可提供32位元與64位元處理器;Cortex-M系列則著重在體型最小、最耗電等特性,可用於獨立處理與微控制器的使用場景,僅提供32位元處理器;至於Cortex-R系列,則是針對高效能、需即時反應的工作負載類型,先前只提供32位元處理器,記憶體定址最大可達到4GB。

但Arm今年9月終於推出64位元處理器Cortex-R82,當中搭配的是40位元的記憶體定址能力,因此,最高可直接存取1TB記憶體,而能夠在儲存類型應用當中,支援進階的資料處理,以及Linux作業系統的執行,並促成配備超大型記憶體的即時系統發展,Arm儲存方案資深經理黃晏祥表示,這樣的規格,能讓固態硬碟的主要儲存容量搭配到1PB,可應付10年以內的記憶體定址需求。

不過,為何Cortex-R82會匯聚這些特色?Arm表示,他們設計這顆處理器的目的,就是為了加快企業級運算型儲存裝置(Computational Storage Device,CSD)的開發,以及部署。

何謂運算型儲存裝置?簡而言之,這是同時提供資料持續儲存與運算服務的裝置,根據Arm的解釋,運算型儲存結合了運算與儲存,而能直接在此執行應用程式,減少資料搬移的程序,而不需頻繁將資料外送到位於遠端的伺服器,進行處理作業,而且,這種形態的固態硬碟當中的處理器,會專門處理這臺硬碟直接存放的資料,如此一來,就能讓伺服器的處理器去執行其他工作。

   

 

就資料處理方式而言,傳統儲存需(左圖)將資料從儲存裝置提取、傳出,交由個人電腦或伺服器進行運算處理之後,之後再將結果傳回儲存裝置,若資料量很大,這些步驟可能要反覆進行到數百次之多。
至於運算型儲存(右圖),資料處理可直接在儲存設備裡面執行,之後再將處理結果回應到伺服器,相較之下,可省去資料提取、回傳的步驟與等待時間。

我們在2019年曾介紹NGD Systems公司推出的Catalina-2,就是很典型的產品,這款解決方案融合了快閃記憶體、Arm處理器(Cortex A53、Neon DSP)。

除此之外,運算型儲存還能用在哪些場景?

例如,資料庫的加速存取,正是其中一種;資料的壓縮/解壓縮、加/解密、編/解碼、重複資料刪除的卸載,也是一種;當紅的人工智慧與機器學習應用當中,衍生出許多資料分析處理的需求,可運用這種解決方案;影像辨識、視訊畫面處理、交通運輸的遙測資料處理,以及內容遞送網路(CDN)的服務,也都可以借助運算型儲存的直接處理能力,而獲得效能上的改善。

另外,在邊緣運算的應用當中,若我們建置可同時執行Linux作業系統的運算型儲存裝置,就可以將其直接當成小型伺服器來使用,而無需去購置佔用更多機箱空間的工業電腦或伺服器。

採用64位元的運算架構,單顆處理器最多可配置8個核心,並可選用Neon架構,加快機器學習處理速度

相較於2016年發表的Cortex-R8,當時採用的是Armv7-R架構,今年新登場的Cortex-R82改用Armv8-R AArch64架構,採用A64指令集,可相容於Armv8.4-A延伸架構,廠商最多可基於這樣的矽智財實作出8個核心。

以運算能力來看,若以既有的Cortex-R8處理器為基準,新登場的Cortex-R82具有兩倍的效能,而且可選用Arm Neon(這項技術是進階的SIMD架構延伸,支援半精度、單精度與雙精度的浮點運算),能讓儲存類型的產品應用以更快的速度(較低的延遲),來執行機器學習這類新的工作負載,提供額外的加速處理機制。Arm表示,若用於類神經網路類型的工作負載時,Cortex-R82的處理速度可達到Cortex-R8的14倍。

其他支援的部份,Cortex-R82也同於採用Armv8.4-A架構的處理器,支援Dot Product指令集,可加速機器學習效能。同時,Arm針對Cortex-A系列處理器及Mali系列GPU,所實作的運算程式庫Arm Compute Library,Cortex-R82也能支援,該套程式庫可涵蓋Armv7a(Armv7-A)架構,以及Arm64-v8a(Armv8-A)架構。

Coretex-R82是Arm第一顆64位元即時處理器,採用Armv8-R AArch64架構,最多可搭配到8個核心,當中也結合了記憶體保護單元(MPU)與選用的記憶體管理單元(MMU),可支援即時處理與高階作業系統的應用。

可選擇是否啟用MMU,兼顧純粹儲存與運算型儲存用途

在記憶體存取的部分,Cortex-R82提供記憶體管理單元(Memory Management Unit,MMU)的選用設計,如此一來,在固態硬碟這類儲存裝置的控制器當中,就能夠直接執行Linux這類高階的作業系統,以及多種支援雲端原生應用的商用與開放原始碼軟體。

事實上,這樣的技術應用形式,有別於傳統儲存裝置的控制器作法,一般而言,這類儲存控制器只會執行裸機或即時作業系統(RTOS)這類工作負載,主要目的是單純儲存、接取與搬移資料。

而現在Cortex-R82整合記憶體管理單元、獲得直接執行作業系統與應用程式的能力之後,就能夠替消費型與商用固態儲存裝置,帶來創新、強化應用的可能性──因為,這些設備的儲存控制器就能直接執行更多種高階作業系統,連帶地,相容於這些系統平臺的上層應用程式,像是容器與虛擬化(Docker、Kubernetes、KVM)、程式語言與程式庫(Go語言、OpenJDK、Python、Node.js)、資料庫與軟體定義儲存應用系統(MySQL、Redis、MongoDB、Ceph),也能順勢運作在搭配Cortex-R82的儲存控制器/硬碟當中,就如同搭配Cortex-A系列處理器的設備或系統,因此,現行的Arm Linux生態系統也能延伸到Cortex-R82。而這樣的整合應用態勢,也更能促成運算型儲存技術的發展。

在此同時,像是物聯網、機器學習與邊緣運算這類橫跨多種應用系統的場景當中,我們若能在資料儲存的位置直接進行資料處理,將會對儲存裝置帶來巨大的商機。以資料庫加速存取的應用為例,有了儲存裝置就近處理機制,存取大量資料與大型檔案時,就不需要傳輸、搬移至其他系統,而能增進安全與隱密性;而在視訊、音訊串流的應用上,相關資料能以更有效率的方式(直接)來執行編碼或轉碼作業,以因應不同的網路串流播放位元率需求。

而這個記憶體管理單元在Cortex-R82/Armv8-A系統層級架構當中,屬於例外層級(Exception levels,ELs)。而Cortex-R82包含3個例外層級,第0層(EL0)是作業系統程式碼以使用者模式執行的位置,第1層(EL1)能讓OEM廠商選用記憶體管理單元,第2層(EL2)則是可設定成記憶體保護單元(Memory Protection Unit,MPU),也是上述傳統儲存裝置執行裸機,或即時作業系統(RTOS)的位置。以及處理MMU與MPU之間的處理程序切換(context switch)。

基於上述的架構設計,Arm表示,Cortex-R82能在單一處理器核心,同時執行即時型處理程序與MMU型處理程序,也是第一顆能這麼做的Arm處理器。

黃晏祥表示,Cortex-R82能帶來很大的彈性與價值,因為新開一顆IC的成本很高,因為製程很新,因此大家都希望可以重複使用,能讓單顆矽晶片可以運用在不同的應用場景,而上述作法就賦予了這樣的彈性。他說,如果客戶只有執行既有的、傳統的應用,執行即時作業系統,沒問題!如果預期未來要升級成運算型儲存的應用場景,也是沒問題的,只要把MMU放在裡面即可。

而在實際的應用上,Cortex-R82也能根據系統工作負載輕重來調配。舉例來說,如果用於資料庫的系統,當中有很繁重的負載是在記憶體存取,在尖峰時間,通常會有相當密集的存取,我們可以把處理器的大部分核心以程式化的方式,設成即時處理器,因此,這顆晶片當下就是執行固態硬碟控制器原本該有的工作,而少量核心則是在進行輔助、資料分析的工作。

到了晚間,大部分資料庫的存取作業都離線了,我們可以透過排程來調整處理器的配置,縮減核心數量來處理即時處理儲存工作負載,而將多數核心設為以運算工作負載為主的處理,此時可以將更多運算資源用於資料分析。

最大可支援到1TB容量記憶體

雖然Cortex-R82是64位元處理器,但記憶體定址是40位元,亦即最大可存取2的40次方Byte的記憶體(1,099,511,627,776 Byte),亦即1TB的記憶體。

事實上,就Armv8-A而言,雖然是64位元架構,但並不是全部採用這架構的處理器的記憶體定址都是64位元,以實體記憶體定址而言,Arm Cortex-A系列處理器是40位元或44位元(最大是48位元,Armv8.2-A可延伸到52位元),虛擬記憶體定址則是48位元(可選用52位元),而若具備52位元的記憶體定址,可支援到4 PB記憶體容量。

相較之下,在其他廠商發展的處理器平臺當中,即便是伺服器等級的產品,在實作上,也大多是支援40位元到52位元之間的記憶體定址,例如,英特爾Xeon Scalable系列目前最高可支援4.5 TB(第二代與第三代Xeon Scalable),AMD EPYC系列最高可支援4TB(第二代)。

Cortex-R82能支援1TB的記憶體存取,還有哪些好處?Arm儲存解決方案總監Neil Werdmuller表示,有了這樣的直接存取機制,能讓具備大量記憶體的設備或即時處理系統,改善整體效能──它們可經由AXI(Advanced eXtensible Interface)或CHI(Coherent Hub Interface)等互連介面,來存取大量記憶體空間,如此一來,能額外獲得微資料讀寫處理(atomic),以及快取存放(Cache Stashing)等功能。

就固態硬碟本身的配置而言,儲存控制器裡面的即時處理器可支援1TB記憶體,也能提供更高的儲存容量搭配,例如上述的1PB。

黃晏祥表示,目前一般中高階的固態硬碟,若是 1TB容量的NAND快閃記憶體固態硬碟,通常需要搭配1GB容量的DRAM記憶體,用於放置經常存取的資料(hot data),目的是為了增加速度,以及延長NAND快閃記憶體的使用壽命(提供更高的存取次數)。而低階的固態硬碟,考量到成本負擔,因此廠商提供的是未內建DRAM記憶體的固態硬碟(DRAM-less SSD),由於固態硬碟本身沒有DRAM記憶體,而是要共享個人電腦或伺服器的系統記憶體,因此會影響到存取效能。

以既有的Cortex-R5與Cortex-R8等即時處理器來看,由於是32位元運算架構,記憶體定址能力最高可達到4GB,以及4TB的快閃記憶體儲存容量,有些廠商則是使用記憶體換頁Pages的方式,來支援4GB以上的記憶體與更大的快閃記憶體儲存容量。

而Arm新推出的Cortex-R82,是64位元運算架構,以及1TB的記憶體定址能力,因此,理論上,可支援1PB的快閃記憶體儲存容量。

熱門新聞

Advertisement