1. 程式人生 > >一種新型記憶體SCM(Storage Class Memory)的簡單介紹

一種新型記憶體SCM(Storage Class Memory)的簡單介紹

1.寫在前面

眾所周知,在傳統的計算機體系結構中,記憶體架構是層級制的。
從片上的暫存器記憶體-快取記憶體(cache),到片外的主存(DRAM),以及磁碟(disk)。不同的計算機*硬體廠商可能在具體的等級劃分數目上有所不同,但大體結構並無二致。*
比如,有的cache做成三層,有的做成兩層。再比如,有些會在內盤與磁碟之間加一個SSD cache,作為磁碟快取。
快取技術是計算機記憶體技術中非常關鍵的一個技術概念,它利用的是程式執行的區域性性原理。區域性性原理又分為空間區域性性和時間區域性性。
更具體地,所謂空間區域性性,是指當某一個數據或程式段被呼叫執行(會調入cache頁)後,在不遠的將來。它在記憶體中的位置地址附近的資料或程式段也很有可能被執行;所謂時間區域性性,是指當某一個數據或程式段被呼叫執行後,在不遠的將來,它會被再次執行。

2.為什麼要引入新型記憶體

我們知道,根據 暫存器記憶體-快取記憶體-主存-硬碟儲存器 這樣的從上到下的層級結構,一個簡單的事實是越往下儲存容量越大,價格更低,但是存取速度也越慢。無論是學術界還是工業界,在儲存器體系上所一直不懈努力的目標就是用相對較低的價格,獲得儲存容量大並且速度快的記憶體。
由於CPU晶片大小的固有限制,暫存器記憶體不能太大,一般只有幾十KB到幾百KB的儲存容量。所以,一個更好地改造目標是DRAM,近年來隨著技術的進步和成熟,DRAM已經從從2GB發展到如今的8GB,16GB甚至更高,且速度效能也在不斷提升。
但是,隨著近些年記憶體計算技術的興起,越來越多的應用需要將更多資料放入記憶體中進行操作,記憶體空間就成為了一個不可忽視的瓶頸。如何能夠在保證訪問速度的情況下,提升記憶體儲存空間成為了一個極具挑戰力的課題。
目前業界一個備受關注並且極具創新力的解決方案是NVM(Non-volatile Memory)的設計。所謂NVM,即是非易失性記憶體。比如我們目前廣泛使用的DRAM記憶體,它是易失的(volatile),具體來說,就是當掉電之後,所有儲存在DRAM中的資料將全部丟失。而像大容量的磁碟儲存裝置,則屬於非易失性的,具有持久儲存的能力。
要注意的是,NVM並不是指某種特定的硬體介質記憶體,而是針對具有非易失特性的記憶體的統稱。
而我們將要介紹的SCM,也就是儲存級記憶體。它不僅具有大容量的突出優點,而且還兼具非易失的儲存特性,這就為記憶體技術革命提供了良好的基礎。

3.SCM的特點

作為新型記憶體的SCM,具有如下幾個突出特點:
1、非易失
2、極短的存取時間(DRAM-like)
3、每比特價格低廉(Disk-like)
4、固態,無移動區(SSD-like)

基於以上特點,SCM勢必成為大資料時代炙手可熱的重要記憶體產品。

4.SCM與DRAM的關係

既然SCM有這麼多優點,是否意味著傳統的DRAM記憶體將被它取而代之呢?
答案是暫時不會。
雖然我們強調SCM具有快速的存取特性,這很像DRAM,但實際上它僅僅讀速度與DRAM相當(但是還是會慢一些,約為一個數量級),寫速度則相差10倍到100倍以上。並且SCM還具有一個作為NVM裝置的致命缺陷,即寫次數有限,寫幾百萬次時會寫穿造成永久失效的問題。因此,對於寫次數大的應用而言,SCM未必是一個好的選擇。
因此,DRAM在現階段是不可能也不應該被淘汰的。一個良好的思路是,是否可以設計一種混合架構記憶體,使得DRAM和SCM強強聯手,達成一個更好的優化目標呢?
這一點是可行的,目前在硬體裝置上,如華為、浪潮這樣的硬體裝置廠商已經基本生產出了符合技術目標的NVM原型,尤其值得一提的是這些硬體在機器上執行時,記憶體堆上層使用者的操作是透明的。也就是說,使用者在使用記憶體時,本身是不知道它是DRAM還是SCM的,這既為使用者提供了便利,也使得應用程式開發人員能夠更好地關注軟體本身的架構及程式執行的合理性,而無需關心記憶體與作業系統之間的互動細節。
DRAM/SCM混合記憶體架構是一種嶄新的記憶體架構,目前學術界和工業界都不遺餘力地在這一架構上尋求突破口和創新點。

5.混合記憶體架構的機遇與挑戰

關於基於SCM的應用變化及創新,更具體地將在後續博文中結合我近期閱讀過的論文(相關研究)
來詳細地介紹,在這裡就先只做一些概要的講述。

針對傳統的DRAM資料儲存掉電易失的問題,計算機從業人員構思出了備份、冗餘碼、transaction、logging等技術機制來保證資料一致性。而在使用SCM之後,事情也許可以發生一些變化,比如,備份機制就沒有必要了。因為資料儲存在SCM中是持久儲存的,在掉電重啟之後只要重新訪問資料儲存區域就可以繼續原來的工作了,當然,這需要transaction和logging技術的支援,以及其他的可能需要提出的新技術(為優化效能使用)。

針對記憶體中計算的應用,比如in-memory database,in-memory KV-Store,使用SCM來儲存如資料庫、KV-Store這樣的結構,既可以結合傳統的技術,又能減輕容錯方面需要考慮的問題複雜性,這就使得進一步優化其他效能指標如load balancing和流量成為了可能。

相關推薦

新型記憶體SCMStorage Class Memory簡單介紹

1.寫在前面 眾所周知,在傳統的計算機體系結構中,記憶體架構是層級制的。 從片上的暫存器記憶體-快取記憶體(cache),到片外的主存(DRAM),以及磁碟(disk)。不同的計算機*硬體廠商可能在具體的等級劃分數目上有所不同,但大體結構並無二致。* 比如

Android系統匿名共享記憶體AshmemAnonymous Shared Memory簡要介紹和學習計劃

                        在Android系統中,提供了獨特的匿名共享記憶體子系統Ashmem(Anonymous Shared Memory),它以驅動程式的形式實現在核心空間中。它有兩個特點,一是能夠輔助記憶體管理系統來有效地管理不再使用的記憶體塊,二是它通過Binder程序間通訊機

新型記憶體SCM簡單應用思考

1.寫在前面 在上一篇部落格中,我們介紹了SCM的產生及其所具有一些特點,並初步展望了它在實際中可能存在的應用場景和巨大潛力。 SCM(Storage-class Memory),它具有大容量、非易失、可位元組定址、存取速度快(幾乎與DRAM相當)的突出優勢

2018-3-20論文新型的智慧演算法-狼群演算法WPA筆記二狼群系統分析,演算法步驟

狼群系統分工:頭狼: 狼群中最有智慧以及最凶猛的。它不斷的根據狼群所感知的資訊進行決策,身份:行動的指揮者探狼:負責偵查資訊,感知獵物的氣味。在進行實物搜尋的階段,會派出一些探狼(只是一小部分)去偵測資訊,他們會根據偵測到的資訊進行自主決策,向著獵物氣味最近的方向前進。猛狼:

Unity IOC容器通過配置實現型別對映的基本使用方法個人比較喜歡

什麼是Unity? Unity是一個輕量級的可擴充套件的依賴注入容器,支援建構函式,屬性和方法呼叫注入。Unity可以處理那些從事基於元件的軟體工程的開發人員所面對的問題。構建一個成功應用程式的關鍵是實現非常鬆散的耦合設計。鬆散耦合的應用程式更靈活,更易於維護。

C語言- 儲存類說明符storage class specifier:typedef

1) 定義一個新的結構型別 1 2 3 4 5 6 7 8 9 10 struct tagMyStruct { int iNum; long lLength;

NDN全棧: 、命名資料網路Named Data Networking背景介紹

最近轉到 NDN 方向進行一些研究,中文資料太少,特整理本人部分經驗供廣大愛好者參考。 一:背景 現今的網際網路沙漏架構(hourglass architecture)以一個普世通用的網路層(network layer)為中心,也就是 IP[1]。在 1970

Android避免記憶體溢位Out of Memory方法總結

避免記憶體溢位的方法,主要是對以下三個方面對程式進行優化 記憶體引用 在處理記憶體引用之前,我們先來複習下什麼是強引用、軟引用、弱引用、虛引用 強引用:強引用是使用最普遍的引用。如果一個物件具有強引用,那垃圾回收器絕不會回收它。 當記憶體空間不足,Java虛擬機器寧願丟擲O

Android 載入圖片過程導致記憶體溢位Out Of Memory

載入圖片的時候,啪啪啪就OOM了。 解決圖片OOM之前,先來了解一下一張圖片記憶體佔用的相關因素——圖片質量,圖片尺寸,填充區域 圖片質量 質量就是圖片大小(多少MB,多少KB)。相對情況下圖片越大,佔用記憶體越大 圖片尺寸 圖片尺寸=圖片的寬高,

Java的記憶體機制堆和棧簡單理解

偶然看到一道面試題,Java在例項化一個類的時候,資料在堆和棧中是如何存放的? public class A{ public int i=1; public static A a1

記憶體洩漏memory leak記憶體溢位out of memory

一、概念: memory leak---記憶體洩漏:是指程式申請記憶體空間後,無法釋放。然而,記憶體洩漏不斷疊加會導致系統把記憶體花完,以致於發生記憶體溢位。(用了不還) out of memory-

Android遇到記憶體溢位Out Of MemoryBUG的經驗與解決方法

突然出現的Out Of Memory這個BUG導致我們專案中斷了好幾天,在經過不斷地摸索之後,今天終於得到了解決。鑑於其強大的破壞力與多發性(尤其是當開發圖形豐富的軟體時),在此將解決方法同大家分享,希望大家以後少走彎路,而本人水平有限,如有不當,還望指教! 那

2018-3-23論文新型智慧演算法--狼群演算法筆記三實驗分析單峰,多峰,可分和不可分函式

表中“U”表示此函式為單峰函式(Unimodal):也就是函式在定義域中只有一個全域性最優解,沒有區域性最優解(區域性極值)“M”為多峰函式(Multimodal):擁有多個區域性極值(是隻有一個全域性最優解??)易陷入區域性最優解以及產生區域性震盪“S”為可分函式(Sepa

淺析在QtWidget中自定義ModelbeginInsertRows()和endInsertRows()是空架子,類似於信號,用來通知底層

cti ron 初學者 開發 http 沒有 insert ati 學習 Qt 4推出了一組新的item view類,它們使用model/view結構來管理數據與表示層的關系。這種結構帶來的功能上的分離給了開發人員更大的彈性來定制數據項的表示,它也提供一個標準的model接

感動叫ACM記WJMZBMR在成都賽區開幕式上的講話

我的朋友 OS div 以及 主題 教練 聊天 andro 一起 各位選手,各位教練,大家好,我是來自清華大學交叉信息學院的陳立傑,今天很榮幸站在這裏代表全體參賽選手發言。對於我來說,這是我第一次正式參加ACM的比賽。不過我跟ACM之間的緣分,大概在很早的時候就已經存在了

5分鐘讀完華為區塊鏈白皮書關鍵信息:推動構建新型價值網絡

華為區塊鏈昨天,華為全球分析師大會(2018HAS)在深圳舉行,華為雲BU總裁鄭葉來對外發布了《華為區塊鏈白皮書》。 5分鐘讀完華為區塊鏈白皮書關鍵信息:推動構建一種新型價值網絡 下面是璽哥整理的《華為區塊鏈白皮書》中的關鍵內容,以饗各位。 一、華為看區塊鏈興起 1、華為認為:電子現金交易的本質是貨幣(或類貨

寫出排序算法要寫出代碼,並說出優化它的方法。

TE 插入排序 我們 part while IT 如果 urn class 1 <?php 2 //快速排序 3 function partition(&$arr, $low, $high) 4 { 5 $pivotkey = $arr[$

CAC安全中心威脅情報 ——新型釣魚郵件威脅與應對策略

CAC安全中心威脅情報 ——一種新型釣魚郵件威脅與應對策略 1、 釣魚郵件威脅情報 2018年9月7日,Coremail CAC安全中心發現有一種新型的釣魚郵件正在呈現擴散趨勢,由於該釣魚郵件的偽裝程度較高,部分使用者容易輕信誤點選釣魚連結。此類郵件通常會偽裝成企業內部的使用者,向

在Ubuntu安裝和使用Anbox完整說明在Linux使用Android應用的方法

在Ubuntu安裝和使用Anbox完整說明(一種在Linux使用Android應用的方法) Anbox是一種基於容器的方法,用於在常規GNU/Linux系統 https://anbox.io上啟動完整的Android系統,相似但不同的專案還有Shashlik和Genimob

Galera Cluster :新型的高一致性MySql叢集框架

Galera Cluster是Codership公司開發的一套免費開源的高可用方案,官網為http://galeracluster.com。Galera Cluster即為安裝了Galera的Mariadb叢集(本文只介紹Mariadb Garela叢集)。其本身具有multi-master特性,支