設備技術中的突破被用於 「以計算為中心」 和更為平衡的 「以資料為中心」 的計算基礎架構之間的轉換。 作者調查了存儲級記憶體,演示了如何填充 RAM 和旋轉磁片存儲之間長期存在的性能差距,還詳細介紹了 I/O 匯流排副處理器(處理相近的資料)的使用,說明了如何利用 InfiniBand 構建低成本高性能互連網路, 並討論了非結構化資料的可擴展存儲。
計算系統工程歷來都是由擴展處理器和動態 RAM (DRAM) 介面控制,以便進行記憶體工作,在資料驅動和計算演算法之間留有一個巨大的間隙。 人們對以資料為中心的計算興趣正在快速增長,同新穎系統設計軟體和硬體設備儀器一起支援大量資料集的資料變換。
專注于軟體的資料毫無疑問是人們目前比較關注的應用程式,比如視頻分析、感應器網路、社交網路、電腦視覺和增強現實、智慧交通、機器對機器系統的大資料倡議,比如 IBM 的 智慧星球 和 智慧城市。
目前,引起人們關注的是關於收集、處理、轉換和挖掘大資料集:
在非易失性儲存體(存儲級記憶體,SCM)中,資料焦點逐漸趨向于新的設備級突破,這使得大資料更需要進行處理。 與此同時,輸入/輸出副處理器使得處理更傾向于資料。 最後,InfiniBand 之類的低延遲、高頻寬的現成互連支援研究人員快速構建 3D 圓環和胖樹形集群,可用於限制最奇異和昂貴的自訂高性能計算 (HPC) 設計。
目前為止,系統軟體,甚至系統設計仍然受到過時瓶頸和思想的影響。 例如,考慮執行緒和多程式設計。 整個理念源于慢磁片磁碟機訪問;在等待資料時,程式除了運行另一個程式之外還能進行其他操作嗎? 當然可以,我們有獨立磁碟容錯陣列 (RAID) 擴展和 NAND 快閃記憶體的固態磁片 (SSD),但正如 IBM Almaden 研究表明的那樣,存取時間間隙的時間尺度差異在人類語言中是巨大的。
對於每個設備來說,CPU、RAM 和存儲之間的存取時間間隙能夠以典型性能形式進行度量,但或許在採用人類語言時,間隙可能更容易理解(正如 IBM Almaden 為了便於說明而進行的研究所指出的那樣)。
如果典型 CPU 操作類似于人類在數秒內所做的,那麼 100 多倍的 RAM 存取延遲可能需要花費幾分鐘來訪問資訊。 然而,經過類似比較,100 多倍延遲的磁片存取與 RAM 相比大約是數月(100 天)。 (參見圖 1。 )
圖 1. 資料存取間隙
很多經驗豐富的電腦工程師並沒有認真思考過每秒進行 100 至 200 次隨機 I/O 操作 (IOPS):這是磁片驅動的機械邊界。 (當然,順序存取每秒可高達數百百萬位元組,但是隨機存取仍然和 50 多年前差不多,存在 15K RPM 搜尋和旋轉訪問延遲。 )
最後,正如 Almaden 所指出的,磁帶是極其緩慢的,就像冰川移動一樣緩慢。 既然如此,為什麼我們還感到困惑呢? 當然是因為容量。 但是我們應該如何處理資料或者使資料處理更為高效?
我們再來看看圖 1。 用於行動裝置的 NAND 快閃記憶體方面的改進以及更多近期 SSD 有助於縮小間隙;然而,人們普遍相信 NAND 快閃記憶體設備技術很快將到達極限,正如許多系統研究人員所指出的那樣。 使用的電晶體浮柵技術的應用已達到擴展極限,進一步擴展將會導致可靠性降低,所以,儘管這是一個權宜之計,以便使用進行以資料為中心的計算,但這可能並不是解決方案。
相反,幾個新型非易失性 RAM (NVRAM) 設備技術可能是解決方案,這些設備技術包括:
相變 RAM (PCRAM):該記憶體使用一個加熱元件將稱為硫屬化合物的材料變成一個結晶的或非結晶的玻璃態,從而存儲兩種可程式設計和讀取的狀態,即使不供電狀態也能保持。 對於 M 類同步非易失性儲存體 (NVM),PCRAM 似乎兌現了近期的大部分承諾。 電阻式 RAM (RRAM):大多數 RRAM 通常被描述成一個電路,這和電容器、感應器或電阻器不一樣,RRAM 提供獨一無二的電壓和電流關係(不像其他存儲電荷或電磁波的知名設備),或者提供電流的線性抗阻。 在過去數十年中,使用帶有稱之為憶阻器屬性的材料進行測試,由於它們的非線性屬性以及缺乏應用程式,故工程師通常儘量避免使用它們。 IEEE 會員 Leon Chua 在 「Memristor: The Missing Circuit Element」 一文中對其進行了介紹。 憶阻器行為可概括為:一個方向上的電流導致抗阻性增加,而另一個方向上的電阻降低。 同樣地,可以存儲一個非易失性狀態,並可進行程式設計以及狀態讀取。 自旋轉移矩 RAM(Spin transfer torque RAM,STT-RAM):通過磁層的電流可產生一個自旋極化電流,當指向一個磁層時,該電流可通過角動量改變其方向。 該行為可用於激發震動以及翻轉納米級磁設備的的方向。 主要缺點是翻轉方向需要較高的電流。
從系統角度來看,隨著這些設備的發展,在何處使用這些設備以及每個設備如何更好地填補存取間隙取決於設備的以下方面:
成本 可擴充性(設備集成大小必須小於電晶體才能戰勝緩存;小於 20 納米) 程式和讀取延遲 設備可靠性 或許最重要的是持久性(在變得不可靠之前的程式設計和擦除頻率)。
基於這些設備性能考慮因素,IBM 將 SCM 歸為兩大類:
S 類:通過 I/O 控制器非同步存取。 執行緒或多程式設計被用於隱藏設備的 I/O 延遲。 M 類:通過一個記憶體控制器同步存取。 可以認為這是一個 RAM 存取等候狀態,該狀態下 CPU 核心停止運行。
而且,NAND SSD 被認為是快速存儲、通過面向塊的存儲控制器進行存取(更高的 I/O 率,但類似旋轉磁片驅動頻寬)。
對於資料處理來說,這看起來似乎像是取消了非同步 I/O(當然,除了歸檔存取或者集群擴展之外),但對於以資料為中心的處理來說,這可能是萬能良藥。 從某種意義上說的確如此,但是系統設計師和軟體發展人員必須改變這一習慣。 在系統的每個節點上 I/O 延遲隱藏需求很大程度上都會消失,但無法完全消失。 InfiniBand 中的集群構建將使用 Message Passing Interface 或 MapReduce 模式來處理節點到節點的資料傳輸延遲,您可以享受這個設想 SCM 節點的類似性能,但在啟動的時候或者在節點資料超過節點工作 RAM 大小的時候除外。
因此,對於擴展而言,集群互連和集群中節點之間的 I/O 延遲隱藏仍然是必需的。
通過副處理器使處理更傾向于資料
快速存取大資料似乎很完美,而且看起來很有前景,但是有些應用程式總會從另一個備用方案(使處理更接近資料介面)獲益。 有很多這樣的示例,比如圖形(圖形處理單元,GPU)、網路處理器、協定卸載引擎(比如 TCP/IP Offload Engine、晶片上的 RAID、加密副處理器,以及最近出現的電腦視覺協同處理器理念。 我的研究涉及電腦視覺和圖形處理器,無論是在具有一定規模的集群還是在嵌入式系統中,都存在電腦視覺和圖形處理器。 我將目前從事的工作稱為電腦視覺處理單元,隨著 Khronos 對 OpenVX 2012 通告的發佈,與幾個副處理器相比,這將獲得更多的大眾的追求。
在嵌入式世界中,這樣一種方法可能被描述成一個智慧感應器或智慧相機,原始資料的預處理方法是由感應器介面、一個嵌入式邏輯裝置或者微處理器,甚至是晶片上的多核系統 (SoC) 提供的。
在可擴展世界,這通常涉及到副處理器匯流排或管道配接器(比如 PCI Express、PCIe 和 Ethernet 或 InfiniBand)的使用;它在資料來源(網路端)和節點 I/O 控制器(主機端)之間提供資料處理。
無論是處理應該已經完成還是處理應該更為高效,當在 I/O 路徑或 CPU 核心上進行處理時,它們都是熱門討論主題,但是根據現有理論(GPU 和網路處理器),這很明顯非常有用,與處理器相比,採用基於副處理器技術的使用者更為普遍。 因此,我們將快速流覽其中的幾個方法:
適用于單個程式多個資料的向量處理 目前由 GPU、多用途 GPU (GP-GPU) 和應用程式處理器單元 (APU) 提供。 理念是資料可以按照自己的方式轉換到某個輸出裝置(比如,顯示器)中,或者發送到一個 GP-GPU/APU,並在主機到設備的往返過程中進行轉換。 「通用」 意味著更為複雜的功能,比如,與單精確度運算相比,雙精度運算僅適用于特定的圖形處理。 多個核心 傳統多核心處理器卡可供各個供應商使用。 這裡涉及的原理是:通過使用簡單但數量眾多的 I/O 匯流排核心降低成本和功率消耗,對卡片使用雙程卸載進行處理擁有更強大的功能,但是更耗電,而且需要昂貴的、全面的多核主機。 通常,多核副處理器可能比主機需要更多的核心,通常會包括千兆或者 10G Ethernet,或者其他類型的網路介面。 I/O 匯流排現場可程式設計閘陣列 (FPGA) 在開發早期階段,FPGA 卡通常用於原型化一個新處理器,也可用作一個小容量副處理器解決方案。 嵌入式 SoC 一個多核解決方案,在 I/O 設備中,可使用該解決方案來創建諸如立體測距或飛行時間相機之類的智慧設備。 介面 FPGA/可配置的程式設計邏輯裝置 數位邏輯狀態機可提供緩衝和持續的 I/O 資料轉換,比如數位視訊編碼。