用于支持存儲器內(nèi)處理的方法和存儲器模塊的制作方法
【專利說明】
[0001] 本申請要求于2014年10月1日提交的第62/058, 568號美國臨時申請以及2015 年4月15日提交的第14/687, 676號美國臨時申請的優(yōu)先權(quán),所述美國臨時申請的公開通 過引用全部合并于此。
技術(shù)領(lǐng)域
[0002] 本公開總體地涉及存儲器。更具體地且不以限制的方式,在本公開中公開的各發(fā) 明方面的具體實施例涉及在存儲器模塊自身內(nèi)總數(shù)計數(shù)操作(P0PC0UNT operation)和邏 輯逐位運算的處理。
【背景技術(shù)】
[0003] 延遲敏感處理和實時分析被預(yù)計占據(jù)超大規(guī)模數(shù)據(jù)中心中的處理周期的顯著部 分,該超大規(guī)模數(shù)據(jù)中心可包括基于云的計算中心。實時分析是一個正在成長的市場,據(jù)估 計,到2018年將超過一百三十億美金。位圖(bitmap)操作是很多實時分析操作中的重要組 成部分(building block)。位圖存儲用戶、事件、網(wǎng)頁等的位陣列。此外,位圖便于許多有 效的查詢,諸如,事件的跟蹤,或者,唯一訪問者的數(shù)量的跟蹤,數(shù)據(jù)挖掘等。對于位圖的常 見的實時分析操作包括P0PC0UNT操作(在下面討論)和邏輯逐位運算,例如,0R( "或")、 AND( "與")、X0R( "異或")、NAND( "與非")等。
[0004] 實時分析中的常見的用例是通過大位圖(large bitmap)維護網(wǎng)站使用的各種統(tǒng) 計數(shù)據(jù)。P0PC0UNT(或總數(shù)計數(shù))操作對位序列中的一(1)的數(shù)量進行計數(shù)。它的使用傳 統(tǒng)上一直在密碼學(xué)中,但近年來在實時數(shù)據(jù)分析域中越來越受到歡迎。例如,網(wǎng)站可通過位 向量(其中,每一個"1"位對應(yīng)于一個用戶)來跟蹤每個用戶的網(wǎng)頁訪問。因此,對給定 網(wǎng)頁的唯一訪問者的數(shù)量進行計數(shù)實際上是對位向量進行總數(shù)計數(shù)。作為示例,在具有4 百萬用戶的網(wǎng)站的情況下,需要考慮到所有的用戶的位向量的大小為512千字節(jié)(KB)的數(shù) 量級上(=4MB(兆比特))。
[0005] 這里請注意,為了便于討論,大寫術(shù)語"P0PC0UNT(總數(shù)計數(shù))"(它的非大寫型式 "popcount")和術(shù)語"bitcount (位計數(shù))"可以在本文中可互換地使用。類似地,為了便 于討論,術(shù)語"位圖"和"位向量"可以在下面可互換地使用,其實際上指位序列。
【發(fā)明內(nèi)容】
[0006] 在一個實施例中,一種用于支持存儲器內(nèi)處理的方法可包括如下步驟:在存儲器 模塊處從主機接收用于對在存儲器模塊中存儲的位向量執(zhí)行總數(shù)計數(shù)操作的指令;以及, 在存儲器模塊內(nèi)執(zhí)行總數(shù)計數(shù)操作,而不將位向量傳輸?shù)街鳈C以執(zhí)行總數(shù)計數(shù)操作。
[0007] 所述方法還可包括如下步驟:在存儲器模塊內(nèi)存儲執(zhí)行總數(shù)計數(shù)操作的結(jié)果;以 及,將所述結(jié)果從存儲器模塊提供給主機。
[0008] 執(zhí)行總數(shù)計數(shù)操作的步驟可包括:將位向量中的位劃分成多個非重疊段;針對所 述多個非重疊段中的每一個非重疊段,計算段特定的位計數(shù);以及,將所有的段特定的位計 數(shù)相加來產(chǎn)生所述結(jié)果。
[0009] 每一個非重疊段可包括8位。
[0010] 計算段特定的位計數(shù)的步驟可包括如下方式中的一個:使用在存儲器模塊中存儲 的查找表(LUT)來獲得段特定的位計數(shù);以及,對所述多個非重疊段中的每一個非重疊段 執(zhí)行一系列的移位和邏輯逐位運算來產(chǎn)生段特定的位計數(shù)。
[0011] 將所有的段特定的位計數(shù)相加的步驟可包括:使用每一個段特定的位計數(shù)作為對 于存儲器模塊內(nèi)的多個加法器中的對應(yīng)一個加法器的輸入;以及,累積所述多個加法器中 的所有加法器的輸出來產(chǎn)生所述結(jié)果。
[0012] 所述方法還可包括如下步驟:從主機接收存儲器模塊中的存儲有位向量的相應(yīng)部 分的存儲器位置的物理地址;針對每一個接收到的物理地址,從存儲器位置檢索位向量的 相應(yīng)部分;對檢索到的位向量的部分執(zhí)行部分位計數(shù);以及,組合所有的部分位計數(shù)的結(jié) 果,來實現(xiàn)對位向量的總數(shù)計數(shù)操作的執(zhí)行。
[0013] 所述方法還可包括如下步驟:在存儲器模塊內(nèi)的預(yù)定義的存儲位置中存儲每一個 接收到的物理地址;訪問預(yù)定義的存儲位置,以獲得用于檢索位向量的相應(yīng)部分的每一個 接收到的物理地址;以及,將所有的部分位計數(shù)的組合結(jié)果存儲在預(yù)定義的存儲位置中以 便提交給主機作為執(zhí)行總數(shù)計數(shù)操作的最終結(jié)果。
[0014] 存儲器模塊可以是三維堆棧存儲器模塊、高帶寬存儲器模塊、混合存儲器立方體 存儲器模塊、固態(tài)驅(qū)動器、動態(tài)隨機存取存儲器模塊、靜態(tài)隨機存取存儲器、相變隨機存取 存儲器、電阻隨機存取存儲器、導(dǎo)電橋接隨機存取存儲器、磁隨機存取存儲器以及自旋轉(zhuǎn)移 力矩磁隨機存取存儲器中的一個。
[0015] 位向量可通過加密算法而被生成。
[0016] 所述方法還可包括如下步驟:基于執(zhí)行總數(shù)計數(shù)操作的結(jié)果,確定加密算法的加 密質(zhì)量。
[0017] 位向量可被存儲在存儲器模塊中。
[0018] 所述方法還可包括如下步驟:在存儲器模塊內(nèi)存儲執(zhí)行總數(shù)計數(shù)操作的結(jié)果;以 及,將結(jié)果從存儲器模塊提供給主機。
[0019] 在另一個實施例中,一種用于支持存儲器內(nèi)處理的方法可包括如下步驟:在存儲 器模塊處從主機接收用于對在存儲器模塊中存儲的兩個或更多個位向量執(zhí)行邏輯逐位運 算的指令;以及,在存儲器模塊內(nèi)執(zhí)行邏輯逐位運算,而沒有將位向量傳輸?shù)街鳈C以便執(zhí) 行。
[0020] 所述方法還可包括如下步驟:在存儲器模塊內(nèi)存儲執(zhí)行邏輯逐位運算的結(jié)果;以 及,將所述結(jié)果從存儲器模塊提供給主機。
[0021] 邏輯逐位運算可以是或運算、與運算、非運算、非與運算、或非運算、以及,異或運 算中的一個。
[0022] 執(zhí)行邏輯逐位運算的步驟可包括:將每一個位向量劃分成多個位向量特定的非重 疊段;將來自所有的位向量的對應(yīng)的位向量特定的非重疊段對齊成多組對齊的段;對每一 組對齊的段執(zhí)行邏輯逐位運算,從而產(chǎn)生多個部分結(jié)果;以及,組合所有的部分結(jié)果,來實 現(xiàn)邏輯逐位操作的執(zhí)行。
[0023] 每一個位向量特定的非重疊段可包括8位。
[0024] 所述方法還可包括在將每一個位向量劃分成多個位向量特定的段之前執(zhí)行如下: 從主機接收存儲器模塊中的存儲有相應(yīng)的位向量的存儲器位置的物理地址;以及,從對應(yīng) 的存儲器位置檢索位向量。
[0025] 所述方法還可包括:在存儲器模塊內(nèi)的預(yù)定義的存儲位置中存儲每一個接收到的 物理地址;訪問預(yù)定義的存儲位置,以獲得用于檢索相應(yīng)的位向量的每一個接收到的物理 地址;以及,在預(yù)定義的存儲位置中存儲組合所有的部分結(jié)果的最終結(jié)果,以便將來提交給 主機。
[0026] 存儲器模塊可以是三維堆棧存儲器模塊、高帶寬存儲器模塊、混合存儲器立方體 存儲器模塊、固態(tài)驅(qū)動器、動態(tài)隨機存取存儲器模塊、靜態(tài)隨機存取存儲器、相變隨機存取 存儲器、電阻隨機存取存儲器、導(dǎo)電橋接隨機存取存儲器、磁隨機存取存儲器以及自旋轉(zhuǎn)移 力矩磁隨機存取存儲器中的一個。
[0027] 在另一個實施例中,一種存儲器模塊可包括:存儲器芯片;以及,邏輯裸片,與存 儲器芯片連接,并且控制存儲器芯片和外部主機之間的數(shù)據(jù)傳輸,其中,邏輯裸片包括控制 器,該控制器執(zhí)行對在存儲器芯片中存儲的第一位向量的總數(shù)計數(shù)操作和對在存儲器芯片 中存儲的兩個或更多個第二位向量的邏輯逐位運算中的至少一個,其中,控制器響應(yīng)于從 主機接收用于執(zhí)行總數(shù)計數(shù)操作的指令而執(zhí)行總數(shù)計數(shù)操作,而沒有將第一位向量傳輸?shù)?主機以便執(zhí)行總數(shù)計數(shù)操作,以及,其中,控制器響應(yīng)于從主機接收用于執(zhí)行邏輯逐位運算 的指令而執(zhí)行邏輯逐位運算,而沒有將第二位向量傳輸?shù)街鳈C以便執(zhí)行邏輯逐位運算。
[0028] 存儲器模塊可以是三維堆棧存儲器模塊、高帶寬存儲器模塊、混合存儲器立方體 存儲器模塊、固態(tài)驅(qū)動器、動態(tài)隨機存取存儲器模塊、靜態(tài)隨機存取存儲器、相變隨機存取 存儲器、電阻隨機存取存儲器、導(dǎo)電橋接隨機存取存儲器、磁隨機存取存儲器以及自旋轉(zhuǎn)移 力矩磁隨機存取存儲器中的一個。
[0029] 邏輯裸片還可包括:寄存器,與控制器結(jié)合,其中,在總數(shù)計數(shù)操作的執(zhí)行之后,寄 存器由控制器操作以存儲執(zhí)行總數(shù)計數(shù)操作的第一結(jié)果,并且控制器將第一結(jié)果發(fā)送到存 儲器模塊內(nèi)的第一存儲位置,以便由主機檢索執(zhí)行總數(shù)計數(shù)操作的第一結(jié)果,以及,其中, 在邏輯逐位運算的執(zhí)行之后,寄存器由控制器操作以存儲執(zhí)行邏輯逐位運算的第二結(jié)果, 并且控制器將第二結(jié)果發(fā)送到存儲器模塊內(nèi)的第二存儲位置,以便由主機檢索。
[0030] 控制器可包括:處理邏輯單元,包括多個加法器,其中處理邏輯單元執(zhí)行作為執(zhí)行 總數(shù)計數(shù)操作的部分的如下操作:從存儲器芯片檢索第一位向量;將第一位向量中的位劃 分成多個非重疊段;針對所述多個非重疊段中的每一個非重疊段,計算段特定的位計數(shù); 使用每一個段特定的位計數(shù)作為對于所述多個加法器中的對應(yīng)一個的輸入;在寄存器中累 積來自所述多個加法器中的所有加法器的輸出;將所有累積的輸出相加來產(chǎn)生第一結(jié)果; 以及,在寄存器中存儲第一結(jié)果。
[0031] 根據(jù)本公開的各方面,建議了一種存儲器內(nèi)處理(P頂)模型,其中,與總數(shù)計數(shù)操 作和邏輯逐位運算有關(guān)的計算在存儲器模塊內(nèi)而不是在主機中央處理單元(CPU)內(nèi)實現(xiàn)。 存儲器內(nèi)執(zhí)行由此消除了貫穿整個系統(tǒng)將數(shù)據(jù)從大的位向量移動的需要。通過將這些操作 的處理卸載到存儲器,經(jīng)由存儲器-CPU接口的冗余數(shù)據(jù)傳輸被大大地減少,從而提高系統(tǒng) 性能和能效。存儲器模塊的邏輯裸片中的控制器和專用寄存器操作用來與主機連接并提供 由主機請求的總數(shù)計數(shù)操作和邏輯逐位運算的存儲器內(nèi)執(zhí)行。本公開的PIM模型由此釋放 CPU用于其他任務(wù),因為現(xiàn)在可以在P頂使能存儲器自身內(nèi)執(zhí)行許多實時分析任務(wù)。存儲器 模塊可以是三維堆棧(3DS)存儲器或任何其他的半導(dǎo)體存儲器。
【附圖說明】
[0032] 在下面的部分中,將參考在附圖中圖示的示例性實施例來描述本公開的各發(fā)明方 面,在附圖中:
[0033] 圖1A示出根據(jù)本公開的一個實施例的系統(tǒng)的高度簡化的局部布局;
[0034] 圖1B示出作為示例的圖1A中的系統(tǒng)的使用3DS存儲器模塊的另一個實施例;
[0035] 圖2示出表示根據(jù)本公開的一個實施例的可如何執(zhí)行總數(shù)計數(shù)操作的示例性流 程圖;
[0036] 圖3描繪示出根據(jù)本公開的一個實施例的可如何執(zhí)行邏輯逐位運算的示例性流 程圖;
[0037] 圖4是描繪根據(jù)本公開的一個實施例的在圖1A至1B的存儲器模塊內(nèi)可如何執(zhí)行 總數(shù)計數(shù)操作的示例性略圖;
[0038] 圖5示出根據(jù)本公開的一個實施例的用于對8位向量段中的位進行計數(shù)的示例性 偽代碼;
[0039] 圖6示出根據(jù)本公開的一個實施例的用于對16字節(jié)數(shù)據(jù)進行總數(shù)計數(shù)的全約簡 樹(full reduction tree)的不例;
[0040] 圖7示出根據(jù)本公開的一個實施例的用于對16字節(jié)數(shù)據(jù)進行總數(shù)計數(shù)的緊湊約 簡樹(compact reduction tree)的不例;
[0041] 圖8A至圖8B示出根據(jù)本公開的具體實施例的在圖1A的存儲器模塊內(nèi)可如何執(zhí) 行邏輯逐位運算的兩個示例性實施方式;
[0042] 圖9示出根據(jù)本公開的一個實施例的圖1A中的存儲器模塊的邏輯部的示例性布 局;以及
[0043] 圖10描繪根據(jù)本公開的一個實施例的圖1A中的系統(tǒng)的整體布局。
【具體實施方式】
[0044] 在下面的詳細描述中,為了提供對本公開的徹底的理解,闡述了大量的具體細節(jié)。 但是,本領(lǐng)域的技術(shù)人員將會理解,所公開的各發(fā)明方面可以在沒有這些具體細節(jié)的情況 下被實踐。在其他示例中,公知的方法、過程、部件和電路未被詳細地描述,以便不模糊本公 開。此外,所描述的發(fā)明方面可被實現(xiàn)以在包括例如3DS以及非3DS存儲器的任何的基于 半導(dǎo)體的存儲系統(tǒng)中執(zhí)行內(nèi)存儲器操作。
[0045] 貫穿本說明書中對"一個實施例"或"實施例"的提及是指,結(jié)合該實施例描述的 特定的特征、結(jié)構(gòu)或特性被包括在本公開的至少一個實施例中。因此,在貫穿本說明書的不 同地方中短語"在一個實施例中"或"在實施例中"或"根據(jù)一個實施例"(或具有類似含義 的其他短語)的出現(xiàn)未必都指同一實施例。此外,特定的特征、結(jié)構(gòu)或特性可以在一個或更 多個實施例中以任何合適的方式組合。另外,根據(jù)本文中討論的情景,單數(shù)術(shù)語可包括其復(fù) 數(shù)形式,并且,復(fù)數(shù)術(shù)語可包括其單數(shù)形式。類