存算一體打破了當前馮諾依曼架構的內存、功耗、帶寬等方面面臨的瓶頸,對計算系統的計算效率產生了重大影響。
特邀作者:劉家倫
北京航空航天大學 集成電路科學與工程學院
半導體產業技術的發展促進了信息技術的全面發展,對信息技術的核心載體-計算機提出了更高的要求。在巨大需求的推動下,摩爾定律應運而生:在價格不變的情況下,每18-24個月,一塊集成電路上可容納的元件數量就會翻一番,性能也會翻一番。該定律揭示了信息技術發展的速度。然而,經過半個世紀的摩爾定律,它的生命力已經開始衰退。每年新增的網絡數據量呈指數級增長,而計算機性能的增長速度開始放緩。
舊有的馮諾依曼體系已經難以跨越這些限制,人們試圖開發新的計算方式來避開這些瓶頸,以實現更為有效的數據運算和更大的數據吞吐量,其中存算一體(computing in memory,縮寫為 CIM,又稱存算一體)是最有前途的方法。存算一體是一種新興的計算體系結構,它打破了當前馮諾依曼架構的內存、功耗、帶寬等方面面臨的瓶頸,對計算系統的計算效率產生了重大影響。

目前主流電腦中採用的是在 40 年代提出的馮諾依曼體系。如下圖所示,該架構將計算機簡單分為處理器(CPU)、存儲器、輸入輸出設備這幾個相互獨立的模塊,各模塊通過總線相互連接。馮諾依曼架構中不區分數據與程序,程序以數據的形式,與其他類型數據共同存儲在存儲器中,是一種以 CPU 為核心,構築的存儲程序體系。
馮諾依曼架構
基於馮諾依曼架構的計算機在計算過程中,會將計算所需的包括輸入數據、計算後的返回數據等信息帶到一個被稱為計算機內存的位置。程序在運行過程中需要計算機存儲器及時地為計算提供指令和操作數。由於計算機的 CPU 和存儲器是相互獨立發展的,兩者的發展速度並不一致。雖然近幾年 CPU 的性能增長速度放緩,但存儲系統的性能並沒有跟上,計算機對內存的訪問速度依舊比計算的速度慢得多。CPU 和內存系統之間的性能差距嚴重影響目標應用程序的功率和性能指標。半導體技術的不斷提升,又將導致內存性能差距的繼續擴大,致使在運行程序時,CPU 需要等待存儲器提供數據,無法充分發揮 CPU 的性能。這種 CPU 處理數據的速度與存儲器讀寫數據速度之間嚴重失衡的問題,被稱為"內存牆"。另一方面,系統的計算能力不僅取決於它在一秒鐘內可以執行的計算量,還取決於將數據轉移到這些計算中的能力和效率。隨着數據處理量呈指數級增長,在面對如卷積神經網絡、人工智能等這些需要頻繁讀寫操作的數據密集型應用時,數據在 CPU 和存儲器間來回的傳輸導致了巨大的數據複製和通信成本,功耗巨大。此外,由於當前的存儲體系將程序以數據的形式與其他數據共同存儲在存儲器中,為了在執行程序時不引起訪問錯誤,需要從內存中提取指令並在處理單元中執行。隨着計算的並行度在不斷提高,和通信帶寬的限制,導致數據傳輸速率受限,影響算力。內存、功耗、帶寬等方面存在的種種問題不利於執行當前以數據為中心的應用,阻礙了高性能、節能計算系統的進一步發展。
CPU 與存儲器發展趨勢

存算一體是指數據的計算、移動和存儲等操作均在內存陣列中進行。存算一體與馮諾依曼體系結構最大的不同之處在於,它將算術邏輯單元(ALU)和存儲器集成在一起。從概念上來說存儲模塊將不僅僅起到存儲器的作用,同時還會是一個運算器,打破了馮諾依曼體系中各模塊相互獨立的劃分方法。通過形成一種存儲-運算緊密交織在一起的結構,在存儲/讀取數據的同時通過不同的邏輯運算完成對數據的計算。這樣一來,計算所需數據的位置將不再是以前物理分離的存儲器。這不僅有助於加快執行速度,還減少了數據在內存和計算器之間連續傳輸所消耗的能量,並且由於可以在存儲模塊中提前處理一些簡單的數據,不需要頻繁地在內存系統中來回移動數據,減輕了帶寬的壓力。
存算一體概念圖
早在 1990 年代,CIM 架構的思想就非常流行,抽象出許多前人的注意力,例如 Teras、IRAM、DIVA、Active Page、FlexRAM 。1995 年,Gokhale 等人提出了一個配備設計和製造的處理器內存處理器芯片的 Terasys 系統。該芯片是一個標準的 4 位存儲器,增加了一個控制每一列存儲器的單位算術邏輯單元 (ALU),它可以執行本地操作和可選的讀/寫 OR 操作。
但是,1990 年代 CIM 體系結構的努力未能改變計算機體系結構的模式,因為存在一些實際問題和限制。首先,難以將複雜的邏輯與 DRAM 技術集成。通常,內存有 3 或 4 層金屬層,但計算邏輯在製造過程中需要 10 層以上。
其次,內存的優化方向更傾向於高密度、低成本、低泄漏的晶體管,而優化的邏輯更傾向於高速晶體管。具體來說,即使在 DRAM 工藝技術中包含簡單的加法器也會導致相當大的開銷並降低內存的性能 。
第三,數據移動量在當時不是關鍵問題,摩爾定律仍然遵循規則。另外,軟件和算法開發緩慢,主要應用可以找到合適的硬件加速器。此外,技術驅動的計算機體系結構使處理器的性能在當年翻了一番。綜上所述,與主存集成的 CIM 針對內存密度和低功耗進行了優化。並邏輯裸片和內存裸片可以達到減少處理器和片外內存之間數據移動的目的,但是內存的區域開銷引起服務器的關注。
隨着互補金屬氧化物半導體晶體管(CMOS)和內存技術,以前在主內存上的方法已經被重新審視,例如緩衝的 COM-parator、DRISA 和 SCOPE 。已經開發了幾個關於 CIM 架構的新實現。主要工作負載,包括機器學習算法、大數據處理、雲計算和物聯網正在興起,以推動硬件架構和電路搜索革命性的解決方案 。此外,時間到了後摩爾時代,計算機體系結構的技術驅動效益正在下降。新穎的非馮諾依曼架構是預計將解決數據移動問題,並且需要對 AI 處理器的性能進行巨大改進。
具有大規模並行、自適應、自學習特徵的人腦中,信息的存儲和計算沒有明確的分界線,都是利用神經元和突觸來完成的。人們開始研究新型的納米器件,希望能夠模擬神經元和突觸的特性。在這類納米器件中,憶阻器因與突觸的特性十分相似且具有巨大的潛力而備受青睞。突觸可以根據前後神經元的激勵來改變其權重,而憶阻器則可以通過外加電壓的調製改變其電導值。利用這類新型的憶阻器可以實現數據存儲的同時也能夠原位計算,使存儲和計算一體化,從根本上消除了內存瓶頸。這類新型的憶阻器包括磁效應憶阻器(magnetic random-access memory,MRAM)、相變 效 應 憶 阻 器(phase-change random-accessmemory,PRAM)和阻變效應憶阻器(resistiverandom-access memory,RRAM)等。
模擬方式的存算一體的實現方案:利用具有多級阻態的模擬型憶阻器可以實現在模擬域的乘法-加法運算。模擬型交叉結構陣列有行列兩個正交互連線,互連線的每個結點處夾着1 個憶阻器件。電壓Vj 是施加在第j 列的電壓值,根據歐姆定律和基爾霍夫定律,可以得到第i 行的總電流值其中Gij 為位於第j 列第i 行的憶阻器件的電導值。總電流值Ii 是電導矩陣與電壓向量的乘積結果,從存內計算角度來說,模擬型交叉陣列完成乘法-加法過程只需要一步,自然地可以實現矩陣向量乘的硬件加速。相比於傳統的計算過程,這樣的加速陣列更加節時、節能。模擬型交叉陣列可以在稀疏編碼、圖像壓縮、神經網絡等任務中擔任加速器的角色。在神經網絡中,Gij 代表突觸權重的大小,Vj 是前神經元j 的輸出值,Ii 是第i 個神經元的輸入值。下圖是3×3 的交叉陣列,列線與行線分別代表神經網絡中的輸入神經元和輸出神經元,憶阻器的電導值為神經元之間相互連接的突觸權重值,利用反向傳播等學習算法可以通過SET/RESET 操作來原位更新網絡權重。

模擬型交叉結構陣列

存算一體芯片市場廣闊,國內外企業、科研院所紛紛布局。據 Gartner 預測,全球內存計算市場將以每年 22% 的速度持續增長,截至 2020 年底有望達到 130 億美元。
科研院所方面,加州大學聖芭芭拉分校謝源教授團隊致力於在新型存儲器件 ReRAM(阻變存儲)裡面實現計算的功能研究,即 PRIME 架構。清華大學劉勇攀教授團隊和汪玉教授團隊均參與了 PRIME 架構的研發,目前已實現在150nm 工藝下流片,在阻變存儲陣列里實現了計算存儲一體化的神經網絡,功耗降低 20倍,速度提高 50 倍。此外,清華大學與 SK海力士聯合成立智能存儲計算芯片聯合研究中心,未來五年,中心將致力於研發存算一體與近存儲處理技術。
在產業應用方面,英特爾、博世、美光、Lam Research、應用材料、微軟、亞馬遜、軟銀都投資了 NOR閃存存算一體芯片。其中,英特爾發布的傲騰固態盤採用片外存儲技術,實現 CPU 與硬盤之間數據高速搬運,從而平衡高級分析和人工智能等大規模內存工作負載的性價比。
SK 海力士在今年的ISSCC 發表存內計算的開發成果-基於GDDR 接口的DRAM 存內計算,並展示了其首款基於存內計算技術產品-GDDR6-AiM 的樣本。SK 海力士表示,GDDR6-AiM 是將計算功能添加到數據傳輸速度為16Gbps 的GDDR6 內存產品中。與傳統DRAM 相比,將GDDR6-AiM 與CPU、GPU 相結合的系統可在特定計算環境中將計算速度提高16 倍。此外,由於存內計算在運算中減少了內存與CPU、GPU 間的數據傳輸往來,大大降低了功GDDR6-AiM 可使功耗降低80%。SK 海力士解決方案開發擔當副社長安炫表示:「基於具備獨立計算功能的存內計算技術,SK 海力士將通過GDDR6-AiM 構建全新的存儲器解決方案生態系統。」SK 海力士定製設計項目負責人Dae-han Kwon 也指出:「對於RNN(循環神經網絡)等內存受限的應用程序,當應用程序在DRAM 中使用計算電路執行時,性能和功率效率有望顯著提高。考慮到要處理的數據量將大幅增加,存內計算有望成為改善當前計算機系統性能極限的有力候選者。」
三星2022年1月12日在頂級期刊nature發表題為」crossbar array of magnetoresistive memory devices for in-memory computin」的論文,實現了在mram(磁效應憶阻器)上的存內計算,並在MNIST(Mixed National Institute of Standards and Technology database 美國國家標準與技術研究所混合數據庫包含 7 萬張黑底白字手寫數字圖片,其中 55000 張為訓練集,5000 張為驗證集,10000 張為測試集。每張圖片大小為 28*28 像素),使用64 × 64 mram交叉開關陣列執行了 10000 個MNIST 圖像進行分類所需的所有 MAC 操作。使用BNN(二值化神經網絡,神經網絡量化的一種,在之前的文章中對神經網絡量化有過介紹)對10,000 幅圖像重複分類三次,達到了 93.23 ± 0.05% 的準確度。
與利用電流求和的方法來完成模擬方式的存算計算不同,因為mram的低電阻特性,若採用電流求和會導致模擬MAC運算時的功耗十分大,三星提出了一個基於 MRAM 單元的 64 × 64 交叉開關陣列,該陣列通過使用電阻求和進行MAC計算,從而達到了較好的效果。

64 × 64 MRAM 交叉開關陣列的顯微照片
國內知存科技、新憶科技等大量初創公司也進入存算一體市場,其中知存科技開發的超低功耗語音識別存算一體芯片,採用片外存儲技術,預計今實現量產,與普通專用芯片相比,其算力可提高 10 至 50 倍。
阿里達摩院於2021年11月成功研發存算一體芯片。為全球首款基於DRAM 的 3D 鍵合堆疊存算一體芯片。它可突破馮・諾依曼架構的性能瓶頸,滿足人工智能等場景對高帶寬、高容量內存和極致算力的需求。在特定 AI 場景中,該芯片性能提升 10 倍以上,效能比提升高達 300 倍。
也許在不久的將來,存算一體芯片就會出現在我們的日常生活中,改變現有芯片應用格局。




