In-memory computing(以下簡(jiǎn)稱(chēng)IMC)是一種古老而有爭(zhēng)議的組織計(jì)算機(jī)硬件的方式,以最大限度地減少能耗并提高性能,但除了在一些非常特定的應(yīng)用中,它從未真正進(jìn)入主流。但邊緣計(jì)算AI的需求可能為這種架構(gòu)理念提供了機(jī)會(huì)。
IMC將計(jì)算元素放在內(nèi)存中而不是中央處理器中的概念在計(jì)算機(jī)科學(xué)的邊緣有很長(zhǎng)的歷史。IMC是那些總是建立在合理推理基礎(chǔ)上的想法之一,而且非常有意義,甚至影響了計(jì)算機(jī)架構(gòu)的重大進(jìn)步,但卻沒(méi)有以其純粹的形式突破主流。但現(xiàn)在,一種古老的錄音技術(shù)、邊緣計(jì)算的限制和深度學(xué)習(xí)網(wǎng)絡(luò)的內(nèi)部結(jié)構(gòu)的奇妙結(jié)合,可能會(huì)把IMC重新拉回聚光燈下。
一個(gè)古老的觀點(diǎn)
IMC的概念可以追溯到計(jì)算機(jī)的早期。計(jì)算機(jī)工程師們很快意識(shí)到,雖然馮諾依曼架構(gòu)(中央處理器從主存儲(chǔ)單元讀取指令和數(shù)據(jù))非常靈活并被普遍采用,但它的效率往往很低。重復(fù)地從內(nèi)存中獲取少量數(shù)據(jù),做一些簡(jiǎn)單的計(jì)算,然后把結(jié)果放回內(nèi)存的算法,一遍又一遍地,花費(fèi)大量的時(shí)間和精力獲取指令和移動(dòng)數(shù)據(jù),但在實(shí)際計(jì)算上花費(fèi)的時(shí)間和精力卻被壓縮了。由于從內(nèi)存中獲取一個(gè)單詞的時(shí)間和能量幾乎總是比CPU中的算術(shù)或邏輯成本大,這種低效很要命,特別是在像邊緣計(jì)算這樣的功耗受限的環(huán)境中。
一些架構(gòu)師采取了顯而易見(jiàn)的行動(dòng),為什么把它們?nèi)考性贑PU中,而不直接將簡(jiǎn)單的計(jì)算元素構(gòu)建到內(nèi)存單元中呢?理論上,這將大大減少所有讀寫(xiě)操作的時(shí)間延遲和功耗,并且可以繞過(guò)CPU不斷獲取和解碼指令的需要。
現(xiàn)實(shí)的阻礙
事實(shí)證明,不這么做有一些非常好的實(shí)際理由。賦予內(nèi)存計(jì)算元素什么樣的能力是至關(guān)重要的。將這些功能放在哪里,以及如何將它們連接到內(nèi)存陣列中也是如此。雖然通常有可能設(shè)計(jì)一個(gè)IMC架構(gòu),在一組很窄的算法上工作得很好,但你越試圖使架構(gòu)通用,你放棄的效率就越多。如果你只是在CPU上做了一些聰明的事,那么很快就會(huì)得到一個(gè)效率較低的架構(gòu)。
CPU架構(gòu)師很聰明。他們用另一種方法來(lái)解決所有這些讀寫(xiě)的低效問(wèn)題:緩存。然后是更多緩存,更多的緩存層。通過(guò)嘗試讓大多數(shù)讀寫(xiě)操作發(fā)生在緩存而不是主內(nèi)存中,可以消除一些低效的問(wèn)題(取決于緩存和相關(guān)算法)。
與此同時(shí),主存儲(chǔ)正從一種高度專(zhuān)業(yè)化的手工制造產(chǎn)品變成一種商品。用戶越來(lái)越不愿意做任何迫使他們購(gòu)買(mǎi)專(zhuān)用存儲(chǔ)芯片的事了。因此,IMC成了一種很難銷(xiāo)售的產(chǎn)品。但這并沒(méi)有阻止該領(lǐng)域的研究。今年的ISSCC會(huì)議有許多關(guān)于這個(gè)主題的論文,原因我們稍后將會(huì)看到。
IMC的機(jī)遇
有一種非常狹窄的算法可以從IMC中獲得巨大的收益,這是個(gè)巨大的商業(yè)領(lǐng)域:3D圖形渲染。著色(在3D模型的2D渲染中為像素添加色彩和亮度的過(guò)程)對(duì)3D模型中的每個(gè)點(diǎn)進(jìn)行一些簡(jiǎn)單的操作,反復(fù)進(jìn)行。雖然著色算法有很多變體,但它們都非常相似,一個(gè)設(shè)計(jì)良好的架構(gòu)可以覆蓋很多變體,這是一個(gè)成功的IMC應(yīng)用的處方。
我們知道這種思維的結(jié)果就是GPU。雖然通常不這樣描述,但GPU實(shí)際上是一個(gè)巨大的內(nèi)存芯片,它有專(zhuān)門(mén)的處理器(著色引擎)明智地分散在內(nèi)存塊中。這種架構(gòu)不僅主導(dǎo)了3D圖形渲染,而且通用GPU和CUDA等并行編程語(yǔ)言的出現(xiàn)也顯示了這種架構(gòu)對(duì)更廣泛的并行化問(wèn)題的適應(yīng)性。
進(jìn)入AI
其中一類(lèi)可并行化的問(wèn)題是AI的一個(gè)分支:深度學(xué)習(xí)網(wǎng)絡(luò)。當(dāng)你訓(xùn)練或使用深度學(xué)習(xí)網(wǎng)絡(luò)時(shí),里面發(fā)生的只是我們一直在討論的那種大規(guī)模、有序的簡(jiǎn)單計(jì)算陣列。在訓(xùn)練過(guò)程中,你將輸入和正確的答案輸入到模型中,并進(jìn)行大量的簡(jiǎn)單計(jì)算,將答案通過(guò)網(wǎng)絡(luò)的各層向輸入傳播,同時(shí)細(xì)化稱(chēng)為激活權(quán)重的巨大參數(shù)表。一旦訓(xùn)練好網(wǎng)絡(luò),你就把輸入信息應(yīng)用到模型中,做一系列矩陣乘法(同樣是簡(jiǎn)單操作的有序集合,在網(wǎng)絡(luò)的末端彈出一個(gè)答案,一個(gè)推理)。
通過(guò)對(duì)內(nèi)存非常仔細(xì)的安排和精心編程,這個(gè)過(guò)程對(duì)GPU來(lái)說(shuō)是小菜一碟。因此,GPU在深度學(xué)習(xí)中無(wú)處不在。但是GPU雖然對(duì)優(yōu)秀的軟件非常有效,但在推理計(jì)算方面卻沒(méi)有理想的效率。這一事實(shí)導(dǎo)致了大量的研究論文和初創(chuàng)公司設(shè)計(jì)更適合深度學(xué)習(xí)加速,特別是為推理加速設(shè)計(jì)的加速器芯片。這種架構(gòu)有很多,但大多數(shù)都有一個(gè)共同的想法:使用大量的小型計(jì)算元素來(lái)并行處理深度學(xué)習(xí)的大量計(jì)算負(fù)載,并將這些元素放置在非??拷蛭挥趦?nèi)存中的位置。
Syntiant和Untether等初創(chuàng)公司也屬于非常接近的一類(lèi)。這類(lèi)公司似乎更喜歡“at-memory computing(以下簡(jiǎn)稱(chēng)為AMC)”這個(gè)短語(yǔ),而不是更傳統(tǒng)的術(shù)語(yǔ),可能是因?yàn)樗麄儧](méi)有把計(jì)算元素放在內(nèi)存陣列中,而是放在芯片的旁邊。但還有另外一類(lèi)。
模擬域
這就是那個(gè)奇怪結(jié)合的地方(一個(gè)模擬推理加速器),我們分三步討論。首先,深度學(xué)習(xí)網(wǎng)絡(luò)有一個(gè)奇怪的特性:大多數(shù)網(wǎng)絡(luò)在內(nèi)部計(jì)算中幾乎不受微小誤差的影響。在幾乎所有的有序算術(shù)中,無(wú)論你用32位、8位,甚至有時(shí)是4位來(lái)表示數(shù)字,對(duì)所產(chǎn)生的推理的準(zhǔn)確性都沒(méi)有什么區(qū)別。在這些計(jì)算中,傳統(tǒng)GPU中的大部分內(nèi)存和數(shù)據(jù)路徑位都被浪費(fèi)了。
其次,工程師們很久以前就發(fā)現(xiàn),閃存單元不僅可以存儲(chǔ)數(shù)字位,還可以存儲(chǔ)模擬數(shù)據(jù):例如,足以產(chǎn)生可接受的語(yǔ)音記錄。這一發(fā)現(xiàn)為多級(jí)閃存的工作奠定了基礎(chǔ)。因此,在原則上,模擬閃存可以存儲(chǔ)深度學(xué)習(xí)網(wǎng)絡(luò)的低精度激活權(quán)重,而不放棄推理的準(zhǔn)確性。
第三,由于閃存陣列的組織方式,你可以讓閃存陣列在一個(gè)周期內(nèi)計(jì)算乘積的模擬和乘積,這是矩陣算術(shù)和推理計(jì)算的基本操作,只需要很少的能量。這對(duì)于將激活權(quán)重(只在訓(xùn)練期間改變)作為模擬值存儲(chǔ)在閃存單元中,然后一次性讀出整個(gè)輸入乘以權(quán)重并相加的集合來(lái)說(shuō),是非常好的。整個(gè)過(guò)程功耗非常小。
把這三個(gè)部分放在一起,你就有了一個(gè)非??臁⒎浅8咝У哪M推理加速器背后的想法。這種設(shè)計(jì)消除了數(shù)字設(shè)計(jì)的大部分內(nèi)存和大多數(shù)處理元素,而是在閃存陣列中進(jìn)行模擬乘積。Axelera、Mythic和TetraMem等初創(chuàng)公司正在使用這種方法開(kāi)發(fā)芯片或IP,并瞄準(zhǔn)了對(duì)功耗要求嚴(yán)苛的邊緣計(jì)算領(lǐng)域。
但是在模擬電路中存在著固有的挑戰(zhàn),以至于許多年來(lái)大多數(shù)模擬電路設(shè)計(jì)已經(jīng)被數(shù)字方法所取代。模擬信號(hào)會(huì)被噪聲破壞。模擬內(nèi)存會(huì)隨著時(shí)間的推移而損耗。模擬電路往往是專(zhuān)用的,而且很難從一種工藝擴(kuò)展到下一種。這些問(wèn)題會(huì)再次導(dǎo)致模擬應(yīng)用被其數(shù)字競(jìng)爭(zhēng)對(duì)手超越嗎?
這一次可能會(huì)有所不同。在邊緣計(jì)算中,以極低的功耗進(jìn)行大規(guī)模、快速推理的能力是非常大的優(yōu)勢(shì)。隨著芯片從14nm擴(kuò)展到10nm、5nm及以上,不斷上升的成本、巨大的設(shè)計(jì)挑戰(zhàn)和日益增長(zhǎng)的供應(yīng)鏈擔(dān)憂,使得僅僅遵循摩爾定律的數(shù)字工藝讓模擬方法被淘汰的說(shuō)法沒(méi)那么肯定了。
ARM和IBM的研究人員最近聯(lián)合發(fā)表的一篇論文表明,一些非常重要的玩家正在認(rèn)真對(duì)待這項(xiàng)技術(shù)的長(zhǎng)期發(fā)展。該論文介紹了一種14nm模擬IMC芯片,該芯片直接解決了該技術(shù)的噪聲和內(nèi)存漂移問(wèn)題。
似乎可以肯定的是,更多的IMC和AMC的例子將出現(xiàn)在邊緣計(jì)算應(yīng)用中,無(wú)論具體的實(shí)現(xiàn)是模擬還是數(shù)字。除了在這些環(huán)境中GPU已經(jīng)霸占的領(lǐng)域之外,這種方法是否會(huì)過(guò)渡到云數(shù)據(jù)中心或超級(jí)計(jì)算機(jī),仍然是一個(gè)開(kāi)放和非常有趣的問(wèn)題。
審核編輯 :李倩
-
cpu
+關(guān)注
關(guān)注
68文章
10863瀏覽量
211763 -
中央處理器
+關(guān)注
關(guān)注
1文章
124瀏覽量
16523 -
IMC
+關(guān)注
關(guān)注
0文章
25瀏覽量
4593
原文標(biāo)題:IMC為什么會(huì)回歸?
文章出處:【微信號(hào):Astroys,微信公眾號(hào):Astroys】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論