|
內(nèi)存計(jì)算(In-Memory Computing, IMC) 是一種基于RAM數(shù)據(jù)存儲(chǔ)和索引的技術(shù),由MIT研究組提出,其主要目的是加速卷積計(jì)算。 我們知道,卷積計(jì)算可以擴(kuò)展為加權(quán)累加計(jì)算。從另一個(gè)角度看,其實(shí)是多個(gè)數(shù)字的加權(quán)平均。因此,該電路實(shí)現(xiàn)了電荷疇的加權(quán)平均。權(quán)重(1位)存儲(chǔ)在SRAM中,輸入數(shù)據(jù)(7位數(shù)字信號(hào))通過(guò)DAC變?yōu)槟M信號(hào)。根據(jù)SRAM中對(duì)應(yīng)的權(quán)重,輸出在模擬域中乘以1或-1,在模擬域中求平均值,最后由ADC作為數(shù)字信號(hào)讀出。具體地說(shuō),由于乘法的權(quán)重是1比特(1或-1),所以可以簡(jiǎn)單地通過(guò)使用開(kāi)關(guān)和差分線來(lái)控制它。如果權(quán)重為1,則差分線一側(cè)的電容充電到所需的輸出值。否則,讓差分線的另一端充電到這個(gè)值。至于平均值,將電荷域中的幾條差分線連接在一起。 當(dāng)然,內(nèi)存計(jì)算的電路不止一個(gè),計(jì)算精度也不限于1位。但是我們可以從上面的例子看出,內(nèi)存計(jì)算的核心思想一般是將計(jì)算轉(zhuǎn)化為加權(quán)計(jì)算。將權(quán)重存儲(chǔ)在存儲(chǔ)單元中,然后對(duì)存儲(chǔ)器的核心電路(例如讀出電路)進(jìn)行修改。以至于讀取的過(guò)程就像是輸入數(shù)據(jù)和權(quán)重在模擬域相乘的過(guò)程,也就是卷積。因?yàn)榫矸e是AI和其他計(jì)算的核心部分,所以內(nèi)存計(jì)算可以廣泛應(yīng)用于此類應(yīng)用。內(nèi)存計(jì)算使用模擬電路進(jìn)行計(jì)算,這是與傳統(tǒng)數(shù)字邏輯計(jì)算的區(qū)別。 在更傳統(tǒng)的架構(gòu)中,有一些乘法累加電路(MAC)用于張量數(shù)學(xué),尤其是矩陣乘法。這些架構(gòu)試圖以將權(quán)重和激活移動(dòng)到適當(dāng)位置的方式來(lái)安排MAC。激活是從先前的神經(jīng)網(wǎng)絡(luò)層計(jì)算的。乘法通常涉及激活和權(quán)重,兩者都必須移動(dòng)到相乘的地方。因此,如果權(quán)重存儲(chǔ)在存儲(chǔ)器中,則存儲(chǔ)器可以通過(guò)激活來(lái)訪問(wèn),以獲得乘法和累加。與實(shí)際內(nèi)存的唯一區(qū)別在于,內(nèi)存計(jì)算一次連接所有字線,而不是對(duì)輸入進(jìn)行解碼以僅獲得一條字線。 嘗試進(jìn)入模擬域,將存儲(chǔ)單元作為模擬單元而不是數(shù)字單元對(duì)待,以降低消耗。我們已經(jīng)有了在推理機(jī)前端使用模擬的方法。這就是內(nèi)存計(jì)算。因此,我們采用數(shù)字?jǐn)?shù)據(jù),使用DAC將其轉(zhuǎn)換為模擬值,然后用這些模擬內(nèi)容驅(qū)動(dòng)一個(gè)存儲(chǔ)器,以獲得模擬位線輸出,最后使用ADC將結(jié)果轉(zhuǎn)換回?cái)?shù)字格式。然而,內(nèi)存計(jì)算仍處于探索階段,有許多具體的實(shí)現(xiàn)方法可以研究,目前有三種類型:RRAM、閃存、SRAM和DRAM。 基于RRAM RRAM是最常見(jiàn)的方法,因?yàn)樗ㄟ^(guò)將歐姆定律應(yīng)用于一系列電阻而易于使用,但它仍然存在依賴RRAM的問(wèn)題。編程和電阻之間的關(guān)系是非線性的,這需要做更多的工作來(lái)為市場(chǎng)制造RRAM存儲(chǔ)器中可行的計(jì)算電路。所以只是一個(gè)想法,具體方案還在研究中。 基于Flash NOR閃存具有更傳統(tǒng)的字線/位線結(jié)構(gòu)。它既是電阻性的又是電容性的。通常,存儲(chǔ)單元是導(dǎo)通或截止的晶體管。然而,如果它是部分導(dǎo)電的,它可以用作電阻器。電阻取決于存儲(chǔ)單元(電容器)的浮柵上的電荷量。當(dāng)一直運(yùn)行時(shí),電池將傳導(dǎo)至其最大容量。在此過(guò)程中,它根本不導(dǎo)電,但是,它可以被部分編程。有一個(gè)問(wèn)題是,你不能精確地控制電子的數(shù)量。此外,對(duì)任何數(shù)字的響應(yīng)將隨著過(guò)程和溫度以及其他變量而變化。 兩家公司正在研究這種方法。由于收購(gòu)了SST,Microchip擁有了他們的memBrain array,Mythic是一家初創(chuàng)公司,致力于使用閃存進(jìn)行內(nèi)存計(jì)算的推理引擎。兩家公司都表示,他們正在使用廣泛的校準(zhǔn)技術(shù)來(lái)應(yīng)對(duì)這種變化。 另一個(gè)問(wèn)題是,隨著時(shí)間的推移,閃存電池會(huì)失去電子。電子會(huì)四處流動(dòng),這就帶來(lái)了一個(gè)有趣的話題:在這種類型的存儲(chǔ)器陣列上,數(shù)據(jù)保持力和持久性會(huì)是什么樣的? 從應(yīng)用角度看,要看是要用在云計(jì)算還是邊緣推理機(jī)。在邊緣,它可以在設(shè)備的整個(gè)生命周期中執(zhí)行某些固定的推理功能。因此,如果有足夠多的數(shù)組,那么您將首次加載權(quán)重,并且不再需要對(duì)其進(jìn)行編程(除非您進(jìn)行更新),因?yàn)殚W存是非易失性的。盡管您仍然需要移動(dòng)激活,但是沒(méi)有必要移動(dòng)權(quán)重,權(quán)重將永久存儲(chǔ)在數(shù)組中。這將表明數(shù)據(jù)持久性(在累積損壞將電子泄漏加速到不可接受的水平之前器件可以被編程的次數(shù))并不重要,它只需要編程一次。 相比之下,在云應(yīng)用程序中,設(shè)備可能會(huì)作為通用計(jì)算資源共享,因此這需要為每個(gè)新應(yīng)用程序重新編程。這意味著電池壽命在云中變得更加重要。Mythic聲稱有一個(gè)10K寫(xiě)周期,并觀察到即使它每天都被重新編程,也將持續(xù)10年以上。 如果為它設(shè)置一個(gè)模擬值并在單元格中使用一個(gè)模擬值,那么理論上,每個(gè)電子都是重要的。但是,如果有足夠的電子遷移,就需要刷新存儲(chǔ)單元,或者以某種方式補(bǔ)償電子的變化。因?yàn)榻裉焱瑯拥哪M輸入會(huì)產(chǎn)生與一年前不同的結(jié)果。校準(zhǔn)電路還可以處理一些老化問(wèn)題。然而,對(duì)于數(shù)據(jù)保留,Mythic表示他們會(huì)定期更新存儲(chǔ)在閃存中的重量值。這將使持久性而不是數(shù)據(jù)保留成為主要的磨損機(jī)制。微芯片表示,其數(shù)據(jù)保留時(shí)間為T(mén)BD,但它可能會(huì)每季度或每年對(duì)設(shè)備進(jìn)行重新編程,以恢復(fù)該單元。 所以他們需要大量高質(zhì)量的ADC和DAC來(lái)保持信噪比在精確推理的范圍內(nèi),這是設(shè)計(jì)工作的重點(diǎn)。Mythic聲稱,他們提供了一種新穎的ADC,以便微芯片可以共享它,以減少所需的數(shù)量。雖然ADC確實(shí)會(huì)消耗能量,但它也大大降低了整體系統(tǒng)功耗。 基于SRAM 這個(gè)想法來(lái)自普林斯頓大學(xué)Hot Chips的一次講座。根據(jù)定義,SRAM是一個(gè)雙穩(wěn)態(tài)單元。因此,它不能處于中間狀態(tài),這應(yīng)該如何處理?就面積和功耗而言,需要校正的DAC和ADC比陣列多。 這個(gè)問(wèn)題的重點(diǎn)歸結(jié)為如何模擬的問(wèn)題。他們解釋說(shuō),這種方法使用一個(gè)以上的位線進(jìn)行計(jì)算。由于單位仍然是一個(gè)數(shù)字值,它需要幾個(gè)位線來(lái)執(zhí)行計(jì)算。位線可以被分割,不同的組執(zhí)行不同的乘法。下圖說(shuō)明了這一點(diǎn)。 一次8個(gè)輸入,因此輸入向量被切片,并且執(zhí)行幾次連續(xù)的乘法以獲得最終結(jié)果。位線電荷沉積在電容器上。準(zhǔn)備讀取時(shí),電荷被讀出并發(fā)送至ADC,以便轉(zhuǎn)換回?cái)?shù)字域。它們的基本單元結(jié)構(gòu)如下: 這些電容器可能會(huì)影響芯片尺寸問(wèn)題,但他們表示,電池上方的金屬可以使用。當(dāng)然,現(xiàn)在一個(gè)單元比標(biāo)準(zhǔn)的6T SRAM單元大80%(即使沒(méi)有電容器),但他們說(shuō)他們的整體電路仍然比基于標(biāo)準(zhǔn)數(shù)字實(shí)現(xiàn)的所需電路小得多。此外,由于它們的基本陣列操作仍然是數(shù)字形式,因此對(duì)噪聲和變化不太敏感,這意味著它們的ADC可以更簡(jiǎn)單,功耗更低。 這種想法是指不使用大量的電力來(lái)獲取DRAM內(nèi)容,并以某種方式將計(jì)算納入CPU或其他計(jì)算結(jié)構(gòu),并直接在DRAM芯片上運(yùn)行,這就是UPMEM所做的。一個(gè)簡(jiǎn)單的處理器建立在DRAM芯片上,該架構(gòu)也不會(huì)與Xeon芯片競(jìng)爭(zhēng),他們稱之為“內(nèi)存處理”或PIM。 他們不是將數(shù)據(jù)轉(zhuǎn)化為計(jì)算,而是將計(jì)算轉(zhuǎn)化為數(shù)據(jù)。運(yùn)行時(shí)由DRAM芯片中的CPU執(zhí)行。也就是說(shuō),不需要將數(shù)據(jù)移動(dòng)到DRAM芯片之外的任何位置,只需將計(jì)算結(jié)果發(fā)送回主機(jī)系統(tǒng)。此外,由于最大似然計(jì)算通常涉及大量的簡(jiǎn)化,計(jì)算所需的數(shù)據(jù)較少。盡管這確實(shí)需要對(duì)DRAM進(jìn)行一些小的改動(dòng),但它們并沒(méi)有改變制造工藝。在這種情況下,標(biāo)準(zhǔn)DRAM模塊將為分布式計(jì)算提供多種機(jī)會(huì)。同時(shí),使用這個(gè)函數(shù)編寫(xiě)程序也變得復(fù)雜起來(lái)。 他們表示,使用PIM offload的服務(wù)器的功耗是連接到?jīng)]有PIM的DRAM模塊的標(biāo)準(zhǔn)服務(wù)器的兩倍。然而,由于吞吐量是20倍,它仍然為他們提供了10倍的能效優(yōu)勢(shì)。此外,這種方法有助于抵御側(cè)信道安全攻擊。因此,最初包含在一個(gè)或多個(gè)CPU中的一組計(jì)算線程流向DRAM。因此,有必要檢查所有的DRAMs并以某種方式找出線程在哪里,但這將是一項(xiàng)艱巨的任務(wù)。 由于人們?cè)缇驼J(rèn)識(shí)到了“內(nèi)存墻”問(wèn)題,具有高能效比的內(nèi)存計(jì)算引起了人們的關(guān)注。對(duì)于內(nèi)存計(jì)算,內(nèi)存特性通常決定了內(nèi)存計(jì)算的效率。因此,新內(nèi)存的改進(jìn)通常會(huì)推動(dòng)內(nèi)存計(jì)算的發(fā)展。例如,最近流行的ReRAM使用電阻調(diào)制來(lái)存儲(chǔ)數(shù)據(jù),因此每位的讀出使用電流信號(hào)而不是傳統(tǒng)的電荷信號(hào)。這樣,電流累積就是一個(gè)非常自然的操作(直接把幾個(gè)電流組合起來(lái),達(dá)到電流之和,甚至不需要額外的電路)。也就是說(shuō)ReRAM非常適合內(nèi)存計(jì)算。 用于內(nèi)存計(jì)算的芯片產(chǎn)品預(yù)計(jì)有兩種形式。第一種形式是作為具有計(jì)算功能的內(nèi)存IP出售,這種存儲(chǔ)器IP可以是傳統(tǒng)的SRAM,或者諸如eFlash、ReRAM、MRAM和PCM之類的新存儲(chǔ)器。第二種形式是基于內(nèi)存計(jì)算直接構(gòu)建AI加速芯片,例如Mythic計(jì)劃制造基于閃存的PCIe加速卡,即通過(guò)PCIe接口與主CPU訪問(wèn)數(shù)據(jù),權(quán)重?cái)?shù)據(jù)存儲(chǔ)在記憶芯片上,當(dāng)數(shù)據(jù)發(fā)送到IPU時(shí)直接讀出計(jì)算結(jié)果。(張嘉汐,產(chǎn)通發(fā)布)
|