TWI672631B - 記憶體內處理方法以及記憶體模組 - Google Patents

記憶體內處理方法以及記憶體模組 Download PDF

Info

Publication number
TWI672631B
TWI672631B TW104132052A TW104132052A TWI672631B TW I672631 B TWI672631 B TW I672631B TW 104132052 A TW104132052 A TW 104132052A TW 104132052 A TW104132052 A TW 104132052A TW I672631 B TWI672631 B TW I672631B
Authority
TW
Taiwan
Prior art keywords
memory
memory module
host
bit
bit vector
Prior art date
Application number
TW104132052A
Other languages
English (en)
Other versions
TW201626207A (zh
Inventor
玆維 古玆
尹亮
Original Assignee
南韓商三星電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW201626207A publication Critical patent/TW201626207A/zh
Application granted granted Critical
Publication of TWI672631B publication Critical patent/TWI672631B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Complex Calculations (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

提供一種記憶體內處理(PIM)模型,在所述PIM模型中 與種群計數運算及邏輯逐位元運算相關的計算被實作於記憶體模組內而非主機中央處理單元(CPU)內。記憶體內執行因此無需在整個系統內自大的位元向量轉移資料。藉由將對此等運算的處理卸載至記憶體,極大減少了記憶體-CPU介面上的冗餘資料傳輸,藉此提高了系統效能及能量效率。記憶體模組的邏輯晶粒中的控制器及專用暫存器進行運作以與主機介接並提供由主機所請求的種群計數運算及邏輯逐位元運算的記憶體內執行。

Description

記憶體內處理方法以及記憶體模組 【相關申請案的交叉參考】
本申請案主張於2014年10月1日提出申請的美國臨時申請案第62/058,568號的優先權權益,所述美國臨時申請案的揭露內容全文併入本案供參考。
本發明大體而言是有關於記憶體。更具體而言(而並非以限制方式),在本發明中所揭露的發明態樣的具體實施例是有關於在記憶體模組自身內對種群計數運算及邏輯逐位元運算的處理。
延遲敏感(latency-sensitive)處理及即時分析有望用於超大規模資料中心中相當一部分的處理循環,所述超大規模資料中心可包括基於雲端的計算中心。即時分析是不斷成長的市場,預計其在2018年將達到超過130億美元。位元映像(bitmap)運算是諸多即時分析運算中的重要構成區塊。位元映像儲存使用者、事件、網頁等的位元陣列。此外,位元映像有利於諸多高效查詢,例如事件追蹤、或唯一訪客數目追蹤、資料挖掘等。對位元映像的常見即時分析運算包括種群計數運算(將在下文論述)及邏輯逐位元運算(例如,或(OR)、及(AND)、互斥或(XOR)、反及(NAND)等)。
即時分析中的常用情形是經由大的位元映像對各種網站使用統計資料進行維護。種群計數(或POPCOUNT)運算對位元序列中的一(1)的數目進行計數。種群計數傳統上用於密碼學中,但近年來在即時資料分析領域受到歡迎。舉例而言,網站可經由位元向量追蹤每一使用者的網頁訪問,其中每一「1」位元對應於一個使用者。因此,對給定網頁的唯一訪客的數目進行計數本質上是對位元向量進行種群計數。作為例證,在具有4百萬使用者的網站的情形中,為慮及所有使用者而需要的位元向量大小大約為512千位元組(KB)(=4 Mb(百萬位元))。
此處應注意,為便於論述,大寫的用語「種群計數(POPCOUNT)」、其非大寫型式「種群計數(popcount)」、及用語「位元計數(bitcount)」在本文中可互換使用。類似地,為便於論述,用語「位元映像(bitmap)」及「位元向量(bit vector)」可在以下互換使用,因其本質上皆指代一系列位元。
在一個實施例中,本發明是有關於一種方法,所述方法包括:(i)在記憶體模組處自主機接收對儲存於所述記憶體模組中的位元向量執行種群計數運算的指令;以及(ii)在所述記憶體模組內執行所述種群計數運算,而不將所述位元向量傳輸至所述主機進行執行。
在另一實施例中,本發明是有關於一種方法,所述方法包括:(i)在記憶體模組處自主機接收對儲存於所述記憶體模組中的兩個或更多個位元向量執行邏輯逐位元運算的指令;以及(ii)在所述記憶體模組內執行所述邏輯逐位元運算,而不將所述位元向量傳輸至所述主機進行執行。
在又一實施例中,本發明是有關於一種記憶體模組,所述記憶體模組包括:記憶體晶片;以及邏輯晶粒,連接至所述記憶體晶片。所述記憶體晶片及所述邏輯晶粒可包括於所述記憶體模組的封裝內。所述邏輯晶粒能夠運作以控制資料在所述記憶體晶片與外部主機之間的傳輸。在所述記憶體模組中,所述邏輯晶粒包括控制器,所述控制器能夠運作以:(i)自所述主機接收用以執行以下中的至少一者的指令:(a)對儲存於所述記憶體晶片中的第一位元向量進行種群計數運算,以及(b)對儲存於所述記憶體晶片中的兩個或更多個第二位元向量進行邏輯逐位元運算;以及(ii)執行以下中的至少一者:(a)執行所述種群計數運算,而不將所述第一位元向量傳輸至所述主機來進行所述種群計數運算的執行,以及(b)執行所述邏輯逐位元運算,而不將所述第二位元向量傳輸至所述主機來進行所述邏輯逐位元運算的執行。
在以下詳細說明中,闡述了許多具體細節以提供對本發明的透徹理解。然而,熟習此項技術者將理解,所揭露的發明態樣可在沒有該些具體細節的情況下得到實踐。在其他情形中,為了避免使本發明模糊不清,未詳細闡述眾所習知的方法、程序、組件及電路。此外,所闡述的發明態樣可被實作成在任何基於半導體的儲存系統(包括例如3DS記憶體以及非3DS記憶體)中執行記憶體內運算。
在本說明書通篇中提及「一個實施例」或「實施例」意指結合所述實施例所闡述的具體特徵、結構、或特性包括在本發明的至少一個實施例中。因此,在本說明書通篇中各種地方出現的片語「在一個實施例中」或「在實施例中」或「根據一個實施例」(或具有類似含義的其他片語)未必皆指代同一實施例。此外,在一或多個實施例中,可以任何適當方式對具體特徵、結構、或特性進行組合。此外,根據本文中所作論述的上下文,單數用語可包括其複數形式且複數用語可包括其單數形式。類似地,用連字符連接的用語(例如,「即時的(real-time)」、「預定義的(pre-defined)」、「基於CPU的(CPU-based)」等)可偶爾與其非連字符連接型式(例如,「即時的(real time)」「預定義的(pre defined)」「基於CPU的(CPU based)」等互換使用),且大寫的項(例如,「種群計數(POPCOUNT)」、「邏輯晶粒(Logic Die)」等)可與其非大寫型式(例如,「種群計數(popcount)」、「邏輯晶粒(logic die)」等)互換使用。此偶爾的互換使用不應被理解為彼此不一致。
在一開始時應注意,用語「耦合(coupled)」、「能夠運作地耦合(operatively coupled)」、「連接(connected)」、「連接(connecting)」、「電性連接(electrically connected)」等在本文中互換使用以泛指以能夠運作的方式電性/電子連接的狀況。類似地,當第一實體以電性方式(不論經由有線還是無線方式)將資訊訊號(不論含有位址、資料、還是控制資訊)發送至(一或多個)第二實體及/或自所述第二實體接收所述資訊訊號而無論該些訊號的類型如何(類比還是數位)時,所述第一實體被視為與所述第二實體「通訊」。更應注意,本文中所示出及論述的各種附圖(包括組件圖式)僅用於說明性目的,而並非按比例繪製。
本文中使用的用語「第一」、「第二」等用作緊跟於其後的名詞的標號,且除非明確地進行如此定義,否則不暗指任何類型的次序(例如,空間次序、時間次序、邏輯次序等)。
目前,所有即時分析架構皆依賴於用於儲存資料集的記憶體,然而種群計數運算或逐位元邏輯運算是在中央處理單元(Central Processing Unit,CPU)中執行。因此,大量資料需要被自其中保存有資料或位元映像的記憶體傳輸至CPU以進行計算。因此,用於執行種群計數運算或邏輯逐位元運算的系統(例如,早前提及的超大規模資料中心)的效能受到記憶體與CPU之間的多次往返資料傳輸的限制。
在具有4百萬使用者的網站的先前例子的情形中,大量資料需要被自記憶體傳輸至CPU以進行計算。然而,CPU產生的種群計數運算結果因222 = 512 KB而可僅近似地為三個位元組長,因此CPU可輸出log2 (222 ) = 22個二進制位元(≈3個位元組)作為代表512 KB位元向量的種群計數值。此類似於使用三個二進制位元來計數最大至八(8),或使用四個二進制位元來計數最大至十六(16),依次類推。因此,種群計數本質上是對大的位元向量的歸約運算。然而,如上所指出,傳統計算模型是低效的,乃因計算時間及能量被大的資料集在整個系統內自記憶體至CPU並自CPU返回記憶體的冗餘移動支配。由於通常僅最終的種群計數結果被程式使用、而所有中間位元向量或資料集皆被捨棄,故此低效性會進一步加劇。
在一個實施例中,記憶體模組可被配置成包括控制器,所述控制器可包括硬體及/或軟體以支援種群計數運算及邏輯逐位元運算的記憶體內實作。在一個實施例中,記憶體模組可為其基礎或邏輯晶粒可被配置成包括控制器的三維堆疊(3DS)記憶體模組。舉例而言,在種群計數運算的情形中,根據本發明的教示內容的記憶體內處理(Processing-In-Memory,PIM)模型可向記憶體模組(或3DS記憶體的基礎/邏輯晶粒)提供以下添加:(i)基於硬體的歸約樹,其可一次計算(最多達)整個動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)頁面的種群計數。(ii)硬體邏輯,其可使得能夠遍歷大小不同於一個DRAM頁面的向量。(iii)專用暫存器(本文中稱為「PIM結果暫存器(PIMResultRegister」),其可儲存最終結果(即,種群計數值)並可被記憶體的主機用以擷取最終種群計數值。在具體實施例中,當向量大小大於DRAM頁面時,此暫存器亦可用以保持中間結果。在此種情況下,此暫存器可累加所有中間結果以最後儲存最終結果以供主機隨後擷取。(iv)介面(例如,應用程式化介面(Application Programming Interface,API)),主機可使用所述介面用於啟動種群計數及用於自PIM結果暫存器讀取結果。在一個實施例中,此運算啟動及結果擷取可藉由對記憶體模組中一或多個預定義儲存位置的寫入及讀取來完成。舉例而言,在一個實施例中,API可將PIM結果暫存器暴露為一個其中儲存有最終種群計數值的此種預定義記憶體位置。因此,任何對所述專用記憶體位置的存取皆為對PIM結果暫存器的直接存取。
用於種群計數的上述記憶體內實作的硬體/軟體配置可適當地與邏輯逐位元運算的記憶體實作共享。此外,可以額外的指令適當地擴增主機介面API,所述指令中的每一者對應於具體邏輯功能(OR、AND、NAND等)。因此,在3DS記憶體模組的情形中,3DS記憶體模組的邏輯晶粒可根據本發明的教示內容而被配置成使得記憶體模組能夠在所述記憶體模組自身內完整地處理種群計數運算及邏輯逐位元運算。
在記憶體內處理(PIM)模型中,與種群計數運算及其他邏輯逐位元運算相關的計算是在記憶體模組內實作/執行,而無需在整個系統內轉移資料。在具體實施例中,記憶體模組可為基於動態隨機存取記憶體(DRAM)的三維堆疊(3DS)記憶體模組,例如高頻寬記憶體(High Bandwidth Memory,HBM)模組、或混合記憶體立方體(Hybrid Memory Cube,HMC)記憶體模組。在具體實施例中,本發明的教示內容亦可應用至固體驅動機(Solid State Drive,SSD)、非3DS DRAM模組、及任何其他基於半導體的儲存系統,例如靜態隨機存取記憶體(Static Random Access Memory,SRAM)、相變隨機存取記憶體(Phase-Change Random Access Memory,PRAM或PCRAM)、電阻式隨機存取記憶體(Resistive Random Access Memory,RRAM或ReRAM)、導電橋接隨機存取記憶體(Conductive-Bridging RAM,CBRAM)、磁性隨機存取記憶體(Magnetic RAM,MRAM)、自旋轉移矩磁性隨機存取記憶體(Spin-Transfer Torque MRAM,STT-MRAM)等。藉由將對種群計數運算及邏輯逐位元運算的處理卸載至記憶體,極大地減少了記憶體-CPU介面(以及其他系統介面)上的冗餘資料傳輸,藉此提高了系統效能及能量效率。根據本發明的具體實施例的教示內容的PIM模型因此騰出CPU來用於其他任務,減少了在整個記憶體系統內的快取污染(cache pollution),並藉由極大減少記憶體-CPU介面上的交易(transaction)而節省了記憶體頻寬。
因此,本發明的具體實施例提供種群計數運算及邏輯逐位元運算在記憶體模組自身內的實作,因此消除了將大的位元向量自記憶體轉移至CPU的需要。此外,記憶體模組可並列地對較大的向量執行位元計數歸約樹,因此相較於傳統CPU實作方式進一步提高了效能。藉由根據本發明的教示內容使用PIM方法,可在具有PIM能力(PIM-enabled)的記憶體自身內執行多種即時分析任務,藉此提高整體系統效能並節省系統電力/能量消耗。
圖1A示出根據本發明一個實施例的系統10的高度簡化的局部佈局。如圖所示,系統10可包括經由一或多個高速鏈路16而連接至處理器或主機14並與處理器或主機14通訊的記憶體模組12。在本文中的論述中,參考編號「12」亦指代記憶體模組的封裝或殼體。封裝12可包括一或多個記憶體晶片(圖中未示出),例如DRAM(或其他基於半導體的記憶體)晶片。在本發明中,例如每一記憶體模組的晶粒/晶片數目、每一晶片的記憶庫(memory bank)數目及晶片中的記憶庫的內部配置、或每一晶片的儲存容量等細節均與本發明不相關,因此本文中未提供此等細節。
在本發明的具體實施例中,PIM控制器(例如圖9所示的PIM控制器97)可實作為記憶體模組12的一部分。如以下將更詳細地論述,PIM控制器可與主機14交互作用並管理/達成種群計數運算以及邏輯逐位元運算的記憶體內執行。在具體實施例中,用於種群計數運算及邏輯逐位元運算的PIM邏輯(或PIM控制器)可在記憶體模組12內實作而無論「傳統」記憶體控制器是否被整合為記憶體模組的邏輯晶粒的一部分。
在一個實施例中,主機14可為CPU,所述CPU可為通用微處理器。在本文中的論述中,為便於論述,用語「處理器」及「CPU」可互換使用。然而,應理解,處理器14可含有例如以下任何其他類型的處理器來替代CPU、或除CPU以外亦可含有所述任何其他類型的處理器:例如,微控制器、數位訊號處理器(Digital Signal Processor,DSP)、圖形處理單元(Graphics Processing Unit,GPU)、應用專用積體電路(Application Specific Integrated Circuit,ASIC)處理器等。此外,在一個實施例中,處理器/主機14可包括多於一個CPU,所述CPU可在分佈式處理環境中運作。處理器14可用以根據例如以下具體指令集架構(Instruction Set Architecture,ISA)來執行指令並處理資料:例如,x86指令集架構(32位元或64位元型式)、PowerPC® ISA、或依賴於精簡指令集電腦(Reduced Instruction Set Computer,RISC)ISA的不具有互鎖管線級的微處理器(Microprocessor without Interlocked Pipeline Stage,MIPS)指令集架構。在一個實施例中,外部主機可為除處理器或CPU功能以外亦具有其他功能的系統晶片(System on Chip,SoC)。
記憶體模組12與外部主機14之間的高速鏈路16可為資料在記憶體模組12與主機14之間的移動提供寬的高速區域匯流排(local bus)。如稍後在以下將更詳細地論述,在一個實施例中,基於邏輯晶粒的PIM控制器與主機14之間的交互作用可經由應用程式化介面(API)而達成,所述API在記憶體模組12被最初安裝在系統10中時例如由記憶體模組12提供至主機14。如在圖1A中所象徵性地說明,API可經由高速鏈路16而被提供至主機/處理器14。如之前所指出且如稍後在以下將更詳細地論述,主機14可使用API來啟動種群計數及讀取種群計數的結果。此外,可以額外的指令適當地擴增主機介面(API),所述指令中的每一者對應於具體邏輯功能(例如,OR、AND、NAND等)以使得記憶體模組12能夠在記憶體模組自身內執行邏輯逐位元運算。
此處應注意,僅為了便於說明起見,僅示出單個記憶體模組12作為圖1A所示系統10的一部分。在實際實作方式中,系統10可包括多於一個記憶體模組,所有所述記憶體模組可為相同的類型或可為不同的類型。在一個實施例中,系統10可包括處於處理器14的運作控制下的3DS記憶體模組以及非3DS記憶體模組。一般而言,記憶體模組12可為任何基於半導體的記憶體或儲存系統,其某些例子在早前已提及(但為了簡潔起見本文中不再予以重複贅述)。此外應理解,被示出為圖1A或圖10所示系統10的一部分的單元可自身含有許多其他複雜組件。然而,因該些組件與本發明缺乏相關性,故該些組件未說明於圖1A或圖10中。
圖1B示出圖1A所示系統10的使用3DS記憶體模組13作為例子的另一實施例。參考編號「13」亦指代記憶體模組的3D封裝或殼體。應理解,3DS記憶體配置相較於具有相同大小的典型DRAM記憶體可提供更高的頻寬及胞元密度(cell density)。此外,3DS記憶體模組相較於傳統DRAM記憶體(如雙倍資料速率(Double Data Rate,DDR)2、3、或4(DDR2/DDR3/DDR4)記憶體)可消耗更少功率並以更高頻率運作。在一個實施例中,3DS記憶體模組13可為HBM模組。在另一實施例中,3DS記憶體模組13可為HMC記憶體模組。
在圖1B所示的示例性實施例中,3D封裝13被示出為包括四(4)個彼此堆疊的DRAM晶粒/晶片18,其中基礎晶粒/邏輯晶粒20位於所堆疊的DRAM晶片的底部。儘管每一DRAM晶片被使用參考編號18-1至18-4來個別地辨識,但DRAM晶片可藉由參考編號「18」來統稱。DRAM晶片18可為同步DRAM(Synchronous DRAM,SDRAM)記憶體,所述SDRAM記憶體可利用矽通孔(through-silicon via,TSV)及/或微凸起(圖中未示出)而彼此連接並連接至邏輯晶粒20。在另一實施例中,在3DS記憶體模組13中可存在多於或少於四個DRAM晶粒。
在3DS記憶體配置中,記憶體控制器功能可整合至記憶體封包中作為單獨的邏輯晶粒,例如圖1B所示的邏輯晶粒20。邏輯晶粒20可在外部主機/處理器14與DRAM晶粒18之間提供必要的介面。因此,資料及控制資訊在3DS記憶體模組13與主機14之間的所有傳輸皆可經過邏輯晶粒20並受邏輯晶粒20控制。在本發明的具體實施例中,PIM控制器(例如,圖9所示的PIM控制器97)可實作為基礎晶粒20的一部分。如早前所提及,用於種群計數運算及邏輯逐位元運算的PIM邏輯(或PIM控制器)可在3DS記憶體模組13內實作而無論「傳統」記憶體控制器是否被整合為記憶體模組的邏輯晶粒20的一部分。
邏輯晶粒20與外部主機14之間的高速鏈路16可為資料在3DS記憶體模組13與主機14之間的移動提供寬的高速區域匯流排。如稍後在以下將更詳細地論述,在一個實施例中,基於邏輯晶粒的PIM控制器與主機14之間的交互作用可經由應用程式化介面(API)而達成,所述API在3DS記憶體模組13被最初安裝在系統10中時例如由3DS記憶體模組13中的邏輯晶粒20提供至主機14。
此處應注意,僅是為了便於說明起見,僅示出單個3DS記憶體模組13作為圖1B所示系統10的一部分。在實際實作方式中,系統10可包括多於一個3DS記憶體模組,所有所述3DS記憶體模組可為相同的類型或可為不同的類型。在一個實施例中,系統10可包括處於處理器14的運作控制下的3DS記憶體模組以及非3DS記憶體模組。此外應理解,被示出為圖1B所示系統10的一部分的單元可自身含有許多其他複雜組件。然而,因該些組件與本發明缺乏相關性,故該些組件未說明於圖1B中。
儘管以下論述可能頻繁地提及圖1B所示的基於DRAM的記憶體配置,但此種提及在本質上純粹為示例性的;圖1B所示的配置僅用以有利於論述根據本發明具體實施例的PIM模型。應理解,本發明的教示內容保持適用於任何基於半導體的記憶體或儲存系統,例如早前提及的SRAM、PRAM、RRAM、CBRAM等。為簡潔起見,在圖1A及圖1B所示的記憶體模組的上下文中解釋本發明的教示內容時,未提及所有該些基於半導體的儲存系統/記憶體。
在以下的論述中,假定將被執行種群計數運算的位元向量或位元映像早已儲存於記憶體模組12中的一或多個半導體記憶體晶片中,例如3DS記憶體模組13中的DRAM晶片18中。類似地,亦假定將被執行邏輯逐位元運算的兩個或更多個位元向量亦儲存於一或多個DRAM晶片18中。關於該些位元映像是如何儲存於記憶體晶片中或該些位元向量的來源的資訊與本發明不相關,因此未對其予以進一步詳述。
圖2說明根據本發明的一個實施例,示出可如何執行種群計數運算的示例性流程圖25。可由記憶體模組12執行流程圖25中所說明的過程。更具體而言,在一個實施例中,可由可在記憶體模組12內實作的控制器(例如,如圖9所示的邏輯部分95中的PIM控制器97)來執行圖2中所說明的步驟。首先,在方塊27處,記憶體模組12可自主機14接收對儲存於記憶體模組12的一或多個記憶體中的位元向量執行種群計數運算的指令。如之前所提及且如在方塊28處所表示,記憶體模組12可為具有一或多個記憶體18的3DS記憶體模組13,抑或可為任何其他基於半導體的記憶體(其某些例子已在之前給出)。3DS記憶體模組13可為HBM記憶體模組或HMC記憶體模組。因應於在方塊27處來自主機的指令,記憶體模組12可在所述記憶體模組自身內執行所述種群計數運算,而不將所述位元向量傳輸至主機來執行所述種群計數運算,如在方塊29處所指出。因此,與基於傳統處理器/CPU執行種群計數運算形成對比,圖2所示的實施例能夠基於記憶體來執行種群計數運算,藉此顯著消除了在主機/處理器14與記憶體模組12之間傳輸大的資料集的需要。由於藉由此種記憶體內處理而消除了冗餘資料移動,改善了指令執行時間並減小了系統延遲及快取污染(乃因不太需要將位元向量儲存於快取中),同時節省了系統能量及電力。本文中所揭露的PIM模型因此減小了CPU負載並騰出CPU/主機用於其他任務。稍後將在以下參照對圖4至圖7的論述來提供關於記憶體模組12可如何執行種群計數運算的某些示例性細節。
如在方塊30處所指出,在執行了種群計數運算之後,記憶體模組12可將所述處理的結果(亦即,在方塊27處輸入的位元向量的種群計數值)儲存於記憶體模組12內。如稍後將論述,在一個實施例中,此結果可儲存於記憶體模組12內的預定義儲存位置中以作為所述種群計數運算的所述執行的最終結果而提交至主機。隨後,在方塊31處,舉例而言當主機14存取記憶體模組12以擷取所述種群計數運算的結果時,記憶體模組12可將所述結果提供或發送至主機14。
圖3繪示根據本發明的一個實施例,示出可如何執行邏輯逐位元運算的示例性流程圖33。除著重於邏輯逐位元運算以外,圖3所示的流程圖33實質上類似於圖2所示的流程圖25,因此本文中僅提供對圖3的簡要說明。如在圖2所示的情形中一般,在圖3的流程圖33中所說明的過程亦可由記憶體模組12執行。更具體而言,在一個實施例中,圖3中所說明的步驟可由邏輯晶粒20中的控制器(例如,圖9所示的PIM控制器97)執行。首先,在方塊35處,記憶體模組12可自主機14接收對儲存於記憶體模組12的一或多個記憶體(例如,3DS記憶體模組13中的記憶體18)中的兩個或更多個位元向量執行邏輯逐位元運算的指令。如之前所提及且在方塊36處所表示,記憶體模組12可為3DS記憶體模組(如HBM記憶體模組或HMC記憶體模組),且邏輯逐位元運算可為例如OR、AND、NOT、NAND、XOR、或NOR運算。稍後將在以下對圖8A及圖8B的論述的上下文中論述示例性邏輯逐位元AND運算。一般而言,如早前所指出,記憶體模組12可為任何基於半導體的儲存系統且邏輯逐位元運算可為任何邏輯運算,而無論此處是否明確地提及。因應於在方塊35處來自主機的指令,記憶體模組12可在所述記憶體模組自身內執行所規定的邏輯逐位元運算,而不將所述位元向量傳輸至所述主機進行執行,如方塊37處所指出。因此,基於記憶體的執行顯著消除了系統10中的冗餘資料移動並提高了系統效能,同時節省了系統能量及電力。邏輯逐位元運算執行的PIM模型亦減小了CPU負載並騰出CPU/主機用於其他任務。
如方塊38處所指出,在執行了邏輯逐位元運算之後,記憶體模組12可將處理結果儲存於記憶體模組12內。如稍後將論述,在一個實施例中,此結果可儲存於記憶體模組12內的預定義儲存位置中以用於提交至主機。在方塊39處,舉例而言當主機14存取記憶體模組12以擷取所述結果時,記憶體模組12可將所述結果提供至主機14。
在以下論述中,參照圖4至圖7提供種群計數運算的記憶體內實作的細節,並參照圖8A至圖8B提供邏輯逐位元運算的記憶體內實作的細節。在具體實施例中,在圖4至圖7中說明的種群計數專有實作方式可針對逐位元邏輯運算而加以適當修改或共享,如亦將在以下所解釋。
圖4是根據本發明的一個實施例的示例性簡圖42,其繪示可如何在圖1A所示的記憶體模組12(或圖1B所示的3DS記憶體模組13)內執行種群計數運算。在一個實施例中,記憶體模組12可因應於如圖2中的方塊27處所指出來自主機14的用以執行種群計數的指令而啟動種群計數運算。圖4中的方塊44表示藉由記憶體模組12對種群計數運算的此種啟動。在一個實施例中,可分兩個步驟來實作種群計數運算。首先,如方塊45處所指出,記憶體模組12可在預定義的小的資料類型上(例如在規定位元向量的每一8位元部分上)(對所述位元向量)執行種群計數。然後,如方塊46處所指出,記憶體模組12可使用歸約樹(稍後論述)來累加中間結果並產生最終種群計數。因此,在一個實施例中,方塊45處的結果可為用於方塊46處的歸約樹的輸入。更具體而言,方塊45處的運算可形成方塊46處的歸約樹的第一級,如稍後將參照圖6至圖7所論述。
作為方塊45處的種群計數的一部分,在一個實施例中,記憶體模組12(例如,3DS記憶體模組13中的邏輯晶粒20)可將位元向量中的位元劃分成多個各自具有8個位元的不交疊區段。然後,記憶體模組12可對每一區段計算區段專有位元計數。然後可使用歸約樹將所有此等區段專有位元計數相加以而產生最終種群計數值。應理解,僅選擇具有8位元長度的區段作為例子。在不同實施例中,方塊45處的預定義資料類型可小於或大於8個位元。
在圖4中,列舉了兩種示例性方法以在方塊45處執行部分位元計數:(i)基於查找表(Look-Up Table,LUT)的計數(方塊47)、或(ii)藉由一系列移位及邏輯逐位元運算的計數(方塊48)。在將被執行種群計數的位元向量的8位元區段的情形中,LUT可能需要256個項(28 =256),每一個項容納與被表示為LUT(圖中未示出)的位址輸入的8位元向量區段對應的位元計數結果。在一個實施例中,方塊47處基於LUT的種群計數可在單個時脈循環中執行。
作為另一選擇,如在方塊48處所指出,對8位元向量區段的位元計數可藉由一系列移位及邏輯逐位元運算實作。圖5說明根據本發明的一個實施例,用於對8位元向量區段中的位元進行計數的示例性偽碼。為便於關聯,在圖5中使用同一參考編號「48」來指代用於圖4中方塊48所示計數運算的偽碼。在圖5中,由記號(「&」)符號來表示邏輯逐位元運算AND,且使用不同的十六進位數來完成位元移位(使用例如「0x33333333」中的前綴「0x」表示)。
參照圖4中的方塊46,可例如利用歸約樹來對小的資料大小進行的種群計數(方塊45)進行相加。在圖4中指出了歸約樹的兩種示例性配置:(i)如圖6中所示的完整歸約樹(方塊49)(將在下文論述)、或(ii)如圖7中所示的緊湊歸約樹(方塊50),其可重複使用加法器以減小歸約樹的整體大小(將在下文論述)。
圖6示出根據本發明的一個實施例,用於對16個位元組的資料進行種群計數的完整歸約樹49的例子。在一個實施例中,歸約樹49可為在記憶體模組12內實作的專用功能區塊。在另一實施例中,歸約樹49可實作為專用功能區塊,所述專用功能區塊被實作為3DS記憶體模組13的基礎晶粒20中的邏輯單元。在另一實施例中,如圖9所示,此邏輯單元可實作為PIM控制器97的一部分。在圖6中,(將被執行種群計數的)位元向量的16位元組部分由8位元區塊B0至B15辨識(共同利用參考編號「55」辨識)。每一此種8位元區塊被輸入至對應的位元計數單元中。所有此種位元計數單元在圖6中被籠統地表示為「CNT8」區塊,且為便於說明而共同利用參考編號「57」辨識。CNT8區塊57構成歸約樹49的第一級並實作在圖4中方塊45處所指出的種群計數操作。因此,在一個實施例中,圖6中的每一CNT8區塊可利用圖4中方塊47的基於LUT的方法來執行8位元種群計數。作為另一選擇,在另一實施例中,每一CNT8區塊可利用圖5中的示例性偽碼48來對8個位元執行種群計數,其中示例性偽碼48代表圖4中的方塊48的移位及邏輯逐位元計數步驟。歸約樹49中的後續層階/級可為簡單的加法器。舉例而言,如圖6所示,歸約樹49的第二層階可包括被表示為「ADD0」區塊並共同利用參考編號「59」來辨識的加法器,歸約樹49的第三層階可包括被表示為「ADD1」區塊並共同利用參考編號「61」來辨識的加法器,歸約樹49的第四層階可包括被表示為「ADD2」區塊並共同利用參考編號「63」來辨識的加法器,且歸約樹49的第五層階可包括被表示為「ADD3」區塊並共同利用參考編號「65」來辨識的加法器。如可自圖6所見,隨著加法自歸約樹49中的第二層階59向更高層階進展,加法器可變得更寬。
來自每一對CNT8區塊的位元計數可利用來自第二層階的對應加法器59而被相加,來自第二層階的一對加法器的輸出然後可利用來自第三層階的對應加法器61而被相加,依此類推。最終,加法器65的輸出可儲存於累加器單元66中,累加器單元66在一個實施例中可為圖9中所示並稍後將在以下論述的PIM結果暫存器99。此後,與(正被執行種群計數運算的)位元向量相關聯的另一16位元組的資料區塊可自恰當的記憶體晶片(例如,圖1B中的記憶體晶片18)被擷取,並應用至用於種群計數的歸約樹49。如此一來,對向量資料的每一16位元組區塊的位元計數可在單元66中被累加並相加以用於產生對所考量的位元向量進行的種群計數運算的最終結果。然後,處理器14可擷取最終的種群計數值。
圖7是根據本發明的一個實施例,用於對16位元組的資料進行種群計數的緊湊歸約樹50的例子。與圖6中的完整歸約樹49形成對比,圖7中的緊湊歸約樹50重複使用同一組加法器來進行與給定種群計數運算相關聯的每一歸約迭代(reduction iteration)。因此,圖7中的實作方式可減少加法器的數目,但可增加執行歸約所需的時間成本。因需要使用一個層階中的加法器的輸出作為下一層階中的加法器的輸入,故其亦可增加路由矩陣的複雜性。在一種實作方式中,緊湊歸約樹50可包括可被記憶體模組12中的其他組件(例如,3DS記憶體模組13中的基礎晶粒20中的組件)共享的一般加法器單元70。在一個實施例中,緊湊歸約樹50可被包括作為圖9所示PIM控制器97的一部分。加法器單元70在圖7中以虛線示出。對加法器單元70的輸入可為來自CNT8區塊57的初始種群計數(代表圖4中的方塊45)。加法器單元70可包括多個多工器(被表示為「MUX」區塊並共同利用參考編號「72」來辨識)以接收來自用於形成歸約樹的第一級的CNT8區塊57的對應輸入。MUX區塊(多工器)72亦可接收呈加法器單元70中「ADD」區塊的輸出形式的第二組輸入。「ADD」或加法器區塊被共同地利用參考編號「74」辨識。對MUX區塊72的第二組輸入由具有圖案「_ _ _ _ _ 」的虛線箭頭75示出。另一方面,MUX區塊72的輸出由具有圖案「─∙─∙─」的虛線箭頭76示出,以與箭頭75區分開並指示在加法器74被重複使用時輸出產生的迭代性質。
儘管圖7中未示出,但在一個實施例中,由加法器單元70針對每一16位元組資料區塊所產生的最終位元計數可儲存於累加器中。在一個實施例中,加法器74中的一者可用以充當累加器。藉由加法器單元70中的每一回路,參數皆被減半。在最後一輪迭代中,僅留下兩個參數,且所述兩個參數的和將為種群計數運算的最終結果。在一個實施例中,此最終結果可傳輸至記憶體模組12內的儲存位置以供主機14擷取。在圖9所示的實施例中,此儲存位置為PIM結果暫存器99。在另一實施例中,充當累加器的加法器74可自身發揮PIM結果暫存器99的功能。
在一個實施例中,圖6至圖7中的基於歸約樹的實作方式可用以對在大小上最高達一個DRAM頁面的向量計算種群計數。DRAM頁面大小可為固定的及預定義的。舉例而言,在一個實施例中,DRAM頁面大小可為1 KB。然而,DRAM頁面大小在不同的系統中可為不同的。如稍後將論述,在一個實施例中,對於大於一個DRAM頁面的向量大小,可使用圖9所示的記憶體內PIM控制器97。對於小於一個DRAM頁面的向量的位元計數而言,記憶體模組12中的(或在3DS記憶體模組13的情形中,則為邏輯晶粒20中的)PIM控制器或其他適當的實體可藉由禁用歸約樹中的初始加法器(如圖6中的加法器59)的子集或遮蔽歸約樹的一部分而僅啟用歸約樹49或緊湊歸約樹50的子集。舉例而言,可添加「遮罩」至歸約樹49、緊湊歸約樹50的第一級以使得「CNT8」區塊57的輸出為0,除非與此區塊相關聯的賦能位元被設定為「1」。在此方法中,可以賦能位元來擴增每一CNT8區塊57,所述賦能位元控制結果為「0」還是真實位元計數值。此種選擇性賦能關閉了對小於預定義大小(此處,為一個DRAM頁面)的向量的計數。如以上所提及,在一個實施例中,可由PIM控制器97(圖9)來調節賦能訊號(或「遮罩向量」)。
另一方面,針對跨越多個DRAM頁面的向量的位元計數運算可需要多個步驟。在DRAM頁面大小為1 KB的情形中,每一步驟可計算向量的1 KB子集的位元計數,且可在記憶體模組12內(或在3DS記憶體模組13的情形中,為在邏輯晶粒20中)的專用暫存器中累加部分結果。在一個實施例中,所述專用暫存器為圖9所示的PIM結果暫存器99。可藉由將所有此等部分結果相加而產生最終種群計數值。
在對跨越多個DRAM頁面的大的向量執行種群計數時,記憶體模組12可能需要知曉儲存有向量的所有頁面位址。因此,在處理向量的第一DRAM頁面之後,記憶體模組12可能需要算出向量所在的後續頁面。在一個實施例中,在需要遍歷多個頁面時,可實作直接記憶體存取(Direct Memory Access,DMA)式機制。在此種實作方式中,向量所佔據的DRAM頁面的物理位址可例如由主機14發送至記憶體模組12。該些頁面然後可被記憶體模組內的內部控制器(例如,圖9中的PIM控制器97)遍歷。
上述關於DRAM頁面大小的論述在本質上僅為示例性的。在不為DRAM的半導體記憶體情形中,可對此種非DRAM記憶體中的記憶體頁面使用類似的方法。
本文中所論述的基於PIM模型的種群計數方法在密碼學中可十分有用。舉例而言,為判斷某一演算法的加密品質,可能需要在所述演算法上運行諸多不同的位元圖案。一種優良的加密演算法應較佳地產生相等數目的1及0以使得輸出碼看起來是完全隨機的。具有不相等數目的1及0的加密輸出可表明為不良演算法。種群計數因此成為此種驗證過程的主導因素。根據本發明的教示內容的記憶體內種群計數可顯著加快此驗證過程。在密碼學應用中,欲被計數的資料(例如,由加密演算法產生的輸出碼)可為不具有任何空間局部性(spatial locality)的資料流。因此,僅在記憶體內部對此資料執行種群計數更有意義。(此資料可能早已由主機儲存於記憶體中。)此外,根據本發明的教示內容的基於PIM模型的種群計數亦可被用作若干不同「攻擊(attack)」(即,嘗試進行加密解密)的一部分。
圖8A至圖8B示出根據本發明的具體實施例,可如何在圖1A所示的記憶體模組12內執行邏輯逐位元運算的兩種示例性實作方式。圖8A說明基於單緩衝器的PIM實作方式中的78,而圖8B說明基於雙緩衝器的PIM實作方式中的87。圖8A或圖8B中的配置可被實作為記憶體模組12的一部分。在一個實施例中,所述兩種配置中的任一者可被實作為圖9所示PIM控制器97的一部分。為便於參考,使用相同的參考編號來辨識圖8A與圖8B之間的共同組件。儘管圖8A及圖8B的實施例說明對兩個8位元向量的逐位元邏輯運算,但此說明僅為示例性的。實際上,圖8A至圖8B所示的配置可擴展至任意數目(>2)的位元向量以及具有任意長度(大於或小於8個位元)的位元向量。
對於在圖8A所示的實施例中兩個8位元運算元(operand)之間的邏輯逐位元運算,兩個運算元中的一者的8個位元可由對應的感測放大器(sense amplifiers)80自恰當的記憶體胞元79傳輸或「讀取」,如由實箭頭81所表示。記憶體胞元79可為任何半導體記憶體(例如,圖1A中的記憶體模組12或圖1B中的3DS記憶體模組13)的記憶體胞元。第一運算元(8位元向量)可在本文中被稱為「運算元0」。感測放大器80可將所接收的內容傳輸至用於運算元0的緩衝器82,如由實箭頭83所表示。在圖8A所示的實施例中,可由感測放大器80而各別的記憶體胞元79接收用於邏輯逐位元運算的第二8位元運算元(在本文中被稱為「運算元1」)。如由具有圖案「_ _ _ _ _ 」的虛線箭頭84所表示,感測放大器80可直接將此運算元1傳輸至計算區塊85,計算區塊85自緩衝器82接收運算元0(如由實箭頭83所表示)。
計算區塊85可含有必要的邏輯以執行例如由主機14所指示的恰當的邏輯逐位元運算。就此而言,在具體實施例中,計算區塊85可與實作種群計數運算的記憶體模組12的一部分共享某些邏輯單元或邏輯電路。所述邏輯逐位元運算可包括許多不同邏輯運算(例如,AND、OR、NOR、NAND、XOR等)中的任一者。在運算元0與運算元1之間的指定邏輯逐位元運算結束時,計算區塊85可產生輸出,所述輸出可被傳輸至記憶體模組12內的儲存器、或傳輸至記憶體模組12內的其他邏輯區塊、或傳輸至記憶體模組12內的恰當輸出單元以最終遞送至主機14。在一個實施例中,記憶體模組12內的此儲存器或輸出單元可為圖9所示的PIM結果暫存器99。在圖8A所示的實施例中,此輸出由具有圖案「─∙─∙─」的虛線箭頭86表示。作為例子,運算元0可為位元向量「11010010」,而運算元1可為位元向量「10001111」。在所述兩種位元向量之間的邏輯逐位元AND運算的情形中,計算區塊85將在箭頭86處產生輸出向量「10000010」。
在圖8B所示的實施例中,感測放大器80將每一運算元(運算元0及運算元1)傳輸至其自身的緩衝器,如由實箭頭88所表示。運算元0儲存於第一緩衝器82中(如在圖8A所示的實施例中),而運算元1儲存於第二緩衝器89中。因此,與圖8A所示的實施例形成對比,在圖8B所示的實施例中,感測放大器80不直接將第二運算元供應至計算區塊85。每一運算元首先在其各自的第一緩衝器82或第二緩衝器89中被緩衝。如由具有圖案「_ _ _ _ _ 」的虛線箭頭90及具有圖案「..............」的虛線箭頭91所表示,被緩衝的運算元然後被發送至計算區塊85以進行所需的邏輯運算。如在圖8A所示的實施例的情形中一般,計算區塊85可對所接收的成對運算元進行運算並在箭頭86處產生輸出。
圖9說明根據本發明的一個實施例,圖1A所示記憶體模組12的邏輯部分95的示例性佈局。在邏輯部分95中所說明的組件可在記憶體模組12內實作。為簡潔起見,僅在圖9中示出並在本文中論述與本發明相關的組件。在圖1B所示的3DS記憶體模組13的情形中,邏輯晶粒20可被配置成包括與邏輯部分95中所示的組件類似的組件。因此,對圖9的論述亦同等地適用於圖1B所示的實施例。
如圖9所示,邏輯部分95可實作能夠運作地連接至PIM結果暫存器99(在本文中亦被稱為「結果暫存器」)的PIM控制器97(在本文中亦被稱為「控制器」)。在一個實施例中,控制器97可包括用於對儲存於記憶體模組12的半導體記憶體晶片(圖中未示出)中的位元向量實施種群計數運算及邏輯逐位元運算的硬體邏輯及必要的軟體。在圖1B所示的實施例中,此種記憶體晶片為晶片18。如前文所述,舉例而言,控制器97可包括硬體(例如圖6至圖7中的歸約樹49或緊湊歸約樹50及/或圖8A至圖8B中的邏輯結構78或87)及軟體(例如圖5中的偽碼48),以用於執行圖4中的方塊44至方塊46處的步驟以及在圖2至圖3中的流程圖中示出的步驟。因此,利用控制器97,記憶體模組12可完成種群計數運算及邏輯逐位元運算的記憶體內執行。PIM控制器97可執行許多任務以達成本文中所論述的記憶體內處理。此等任務可包括例如:提供介面(API)以使主機14能夠發起命令並提取資料;與主機14交互作用;控制所實作的歸約樹49或緊湊歸約樹50;控制邏輯結構78或87的運作;調處對跨越多個記憶體頁面的向量的種群計數的計算;在PIM結果暫存器99中累加位元計數的中間結果並產生最終種群計數值以儲存於PIM結果暫存器99中。
PIM控制器97可經由主機鏈路介面及控制單元101(簡稱為「主機介面單元」)而與主機14通訊,並經由記憶體介面及控制單元103(簡稱為「記憶體介面單元」)而與記憶體晶片(例如,圖1B所示實施例中的DRAM晶粒18)通訊。主機介面單元101可支援高速鏈路16上的資料傳輸,而記憶體介面單元103可有利於經由內部連接(例如,前文提及的矽通孔(TSV))的資料傳輸。主機介面單元101及記憶體介面單元103可能夠運作地耦合至控制器97,且可處於控制器97的運行控制下,控制器97亦可提供必要的定時及控制傳訊以協調該些單元的運作。控制器97可首先自主機經由主機介面單元101接收位元向量,並利用記憶體介面單元103將所述位元向量儲存於記憶體模組12的記憶體晶片中的一或多個記憶體位置(或記憶體胞元)中。在種群計數運算或邏輯逐位元運算期間,記憶體介面單元103可自恰當位元向量的物理儲存器擷取所述位元向量並將所述位元向量供應至PIM控制器97來進行該些運算的記憶體內執行。在某些實施例中,可實作記憶體介面單元103的多種實例(instance),其中每一實例用以控制記憶體模組12中的各自記憶體晶片庫。關於記憶庫選擇、列/行存取、及由控制器97進行的往返於(記憶體模組12中的)記憶體晶片中的記憶庫的資料傳輸的細節與本發明不相關,因此在本文中未予以論述。
邏輯部分95亦可包括耦合至記憶體介面單元103及主機介面單元101的自我測試及錯誤偵測/修正單元105(簡稱為「錯誤控制單元」)。在將自主機14接收的資料儲存於記憶體晶片(例如,圖1B所示實施例中的DRAM晶片18)之前,錯誤控制單元105可應用恰當的錯誤修正碼(Error Correcting Code,ECC)來對所述資料進行編碼。當此資料自記憶體模組12中的記憶體晶片讀回時,所述資料中的一或多個錯誤可根據用以對初始資料進行編碼的ECC方案而被偵測及/或修正。此外,錯誤控制單元105可例行地執行「自我測試」程序以保持儲存於記憶體晶片中的資料的完整性。
現在主要參照種群計數運算的實作方式來闡述控制器97與主機14之間經由主機介面單元101的交互作用。在一個實施例中,主機14與控制器97之間的通訊可藉由對一組「PIM專有位址」的寫入及讀取操作而完成,所述PIM專有位址可為記憶體模組12內的一或多個預定義儲存位置或此等位置的配置位址。預定義儲存位置的某些例子包括邏輯部分95中的現有暫存器、記憶體模組12的記憶體晶片中的一者中的記憶體胞元、或在邏輯部分95中實作的(新的)專用暫存器。當記憶體模組12首次經由高速鏈路16而連接至主機14時(例如,當記憶體模組12首次安裝於系統10中時),PIM控制器97可向主機14提供API。當在被處理器14執行的程式中遇到與種群計數相關的指令時,所述API可將種群計數過程「劃分」成有利於種群計數運算的記憶體內實作的一組功能。在一個實施例中,PIM專有位址可為主機14經由系統10的基本輸入輸出系統(Basic Input Output System,BIOS)所知曉的系統配置的一部分。所述API可向主機提供對該些PIM專有位址的存取以達成種群計數運算的記憶體內執行。
API可將預定義位址與對應功能(將在下文論述)之間的關聯告知主機,以使主機能夠針對給定功能執行讀取或寫入操作。PIM控制器97亦知曉存取哪些儲存位置—例如,儲存最終種群計數以使主機讀取或擷取自主機接收的任何資訊。可經由API提供的用於使PIM控制器97能夠與主機14通訊以達成種群計數運算的記憶體內執行的某些示例性功能如下: (i)void POPCOUNT(*p_vector,size):此功能可轉化成由主機對預定義PIM專有位址的兩個後續寫入操作。第一寫入操作指示將被執行種群計數的位元向量的起始位址(即,物理記憶體位址),且第二寫入操作指示所述向量的大小。此功能可適用於例如在向量大小小於一個記憶體頁面時或在向量跨越多個連續的記憶體頁面時。所述物理記憶體位址可與記憶體模組12的記憶體晶片中的一者相關聯。 (ii)void IsDone( ):此功能可指示最後的運算是否完成。所述最後的運算可為例如對位元向量的最後未決部分進行的種群計數。此功能可轉化成(由主機)自預定義PIM專有位址的單個讀取操作。作為此讀取操作的一部分,記憶體模組12可傳回「1」以指示相關的PIM操作完成,否則就傳回「0」。可在記憶體模組12中不存在對主機14的回饋機制的情況下使用此方法。在其中記憶體模組12具有對主機14的回饋機制的另一實施例中,記憶體模組12可向主機14發送訊息以表示PIM操作完成。 (iii)data_t ReadResult( ):此功能可傳回最後種群計數的結果。此功能亦可轉化成(由主機)自預定義PIM專有位址的讀取操作。如之前所指出,最後種群計數值可首先在PIM結果暫存器99中累加。此種群計數值然後可由控制器97傳輸至預定義儲存位置(或PIM專有位址)以供主機使用此功能讀取。
在一個實施例中,當向量跨越多個記憶體頁面(其可為連續的或可不為連續的)時,主機14可明確地指明所述向量所在的所有物理頁面或記憶體位址。換言之,主機14可提供記憶體模組12中儲存有位元向量的相應部分的記憶體位置的物理位址。主機14可藉由對預定義PIM專有位址的指定寫入操作而進行上述操作。舉例而言,主機14可使用API所提供的功能「void PhysicalPage(*p_page)」來通知控制器97儲存有被運算的當前向量的下一頁面的物理位址。PIM控制器97可追蹤該些位址並啟動針對含有位元向量的每一記憶體頁面的部分種群計數。主機14可同時提供所有所述物理位址或以預定間隔依序提供所述物理位址。所接收的物理位址可儲存於單個儲存位置(或PIM專有位址)處或多個儲存位置處。更具體而言,控制器97可首先將每一所接收的物理位址儲存於其對應的PIM專有位址(或儲存位置)中,然後存取所述儲存位置以獲得所接收的物理位址,從而自對應的記憶體位置擷取位元向量的相應部分以對所擷取的部分執行部分位元計數。PIM控制器97可將所有部分位元計數的結果進行組合以完成對位元向量的種群計數運算的執行。如之前所提及,所述部分位元計數可在PIM結果暫存器99中被累加。藉由將所有部分位元計數進行組合而產生的最終位元計數可首先儲存於PIM結果暫存器99中,然後傳輸至相關的PIM專有位址以作為所述種群計數運算的執行的最終結果而提交至主機。如之前所指出,主機14可使用「data_t ReadResult( )」功能來讀取此最終結果。
如之前所提及,本發明亦是有關於對大的向量的記憶體內邏輯逐位元運算。在記憶體內實施此類運算的一個原因是在即時分析工作負載中邏輯逐位元運算常常與種群計數運算一起使用。舉例而言,若網站正使用位元映像來追蹤每一網頁的訪客,則與兩個網頁相關聯的兩個位元映像(或位元向量)的「或運算(ORing)」可指示多少數目的使用者訪問了所述兩個網頁中的至少一者。在基於CPU的實作方式中,兩個向量皆被自記憶體(在其中儲存有向量)傳輸至CPU(在其中執行邏輯運算)。由於記憶體內實作方式將僅傳輸邏輯逐位元運算的最終結果,故記憶體內實作方式可使經由系統匯流排傳輸的資料減半。此可顯著減少冗餘資料移動,尤其是在位元向量大時。此外,常用情形可通常涉及諸多向量而非僅兩個向量之間的逐位元運算(例如,「或運算」或「及運算」)。此外,在常用情形中,逐位元運算常常以由逐位元邏輯運算產生最終向量的種群計數而結束。在此種情景中,由種群計數運算及邏輯逐位元運算的記憶體內實作所提供的資料傳輸的減少可更為顯著,乃因所有中間結果皆被保存於記憶體模組12內而未經由系統匯流排發送至主機14。因此,在記憶體模組12(或3DS記憶體模組13)內實作邏輯逐位元運算可為能夠經由PIM卸載即時分析工作負載提供必要的基礎。
如圖3中的方塊36處所表示,根據本發明的教示內容的PIM模型可用以在記憶體模組12(或3DS記憶體模組13)內實作任何邏輯逐位元運算,例如OR、AND、NOT、NAND、NOR、及XOR運算。逐位元邏輯運算的記憶體內實作可與種群計數實作具有諸多相似之處。圖8A至圖8B提供示出逐位元運算的記憶體內實作的兩種示例性實施例。此外,對圖4至圖7及圖9的早前論述在用於邏輯逐位元運算的PIM模型的上下文中仍舊適用,儘管作出如以下所簡要闡述的適當潤飾。
參照圖8A至圖8B觀察到,邏輯逐位元運算的記憶體內實作可比種群計數運算的實作簡單得多。舉例而言,在逐位元運算的情形中,可能不需要如圖6中的歸約樹49般的完整歸約樹。可以恰當的邏輯運算替換CNT8區塊57。舉例而言,在邏輯「或」運算的情形中,在計算區塊85中可能僅需要單個級的加法器。所述單個級可例如藉由以邏輯運算加法器替換每一CNT8區塊57而達成。類似於前面對用於種群計數的向量大小的論述,在向量大小小於一個記憶體頁面的情形中,可藉由用以禁用非必要加法器的遮罩來實作邏輯逐位元運算。較大的向量大小可分多個步驟進行計算,且暫時的結果可以與之前在種群計數運算的上下文中所論述者類似的方式在PIM結果暫存器99中累加。如前所述,PIM控制器97可安排並管理該些計算。PIM控制器97亦可以額外的功能來擴增API所支援的主機介面,其中所述功能中的每一者對應於具體的邏輯逐位元運算。舉例而言,對兩個向量的邏輯逐位元「或」運算可使用以下語義: data_t OR(*p_vec1, *p_vec2,size):此功能可轉化成由主機14對預定義PIM專有位址(或儲存位置)的三個寫入操作。第一寫入操作可指明第一向量的物理記憶體位址,第二寫入操作可指明第二向量的物理記憶體位址,且第三寫入操作可指明所述兩個向量的大小。
因此,前文在圖4至圖7及圖9的上下文中對種群計數的記憶體內實作的論述亦仍舊適用於邏輯逐位元運算的記憶體內實作。簡言之,例如在對多個向量進行邏輯逐位元運算的情形中,PIM控制器97可首先自主機14接收記憶體模組12中儲存有各別位元向量的記憶體位置(如圖8A至圖8B所示的記憶體胞元79)的物理位址,然後將每一所接收的物理位址儲存於記憶體模組12內的PIM專有位址(或儲存位置)。PIM控制器97可存取恰當的儲存位置,以獲得對應的物理位址然後自規定的記憶體位置擷取相應的位元向量。在一個實施例中,PIM控制器97可將每一位元向量劃分成多個位元向量專有不交疊區段,然後將來自所有位元向量的對應位元向量專有區段對齊以形成多個對齊區段群組。然後,PIM控制器97可對每一對齊區段群組執行逐位元運算,以藉此產生多個部分結果。如前所述,所述部分結果可儲存於PIM結果暫存器99中。隨後PIM控制器97可對PIM結果暫存器99中的所有部分結果進行組合以完成邏輯逐位元運算的執行。來自所述組合的最終結果可首先儲存於PIM結果暫存器99中,然而最終儲存於預定義儲存位置(或PIM專有位址)中以在將來提交至主機14。主機14可存取此儲存位置以讀取所述結果。
應注意,在記憶體模組12的上下文中種群計數運算及邏輯逐位元運算的記憶體內執行的上述原理可適用於固態驅動機(SSD)或任何基於半導體的儲存系統。舉例而言,在SSD的上下文中,可在SSD控制器中實作位元計數運算,藉此減少往返於CPU的冗餘傳輸。然而,在一個實施例中,位元計數運算亦可(與任何其他歸約運算一起)更靠近SSD中的快閃記憶體儲存胞元實作,因此減少內部SSD匯流排上的流量及競爭。在此種情形中,歸約運算可在快閃晶粒自身而非SSD控制器內執行。同樣,為簡潔起見,由於已詳細論述了圖4至圖9中的示例性實施例,故在本文中未論述此等實作方式的額外細節。
圖10繪示根據本發明的一個實施例,圖1A所示系統10(包含記憶體模組12)的整體佈局。因此,為便於參考及論述,在圖1A及圖10中使用相同的參考編號來表示共同的系統組件/單元。
在圖10中,主機處理器單元14被示出為耦合至系統記憶體單元107以及周邊儲存單元109、一或多個輸入裝置111、一或多個輸出裝置112、及網路介面單元114。在某些實施例中,系統10可包括所示裝置或單元的多於一個實例。系統10的某些例子包括電腦系統(桌上型或膝上型)、平板電腦、行動裝置、蜂巢式電話、視訊遊戲單元或遊戲機、機器對機器(machine-to-machine,M2M)通訊單元、無狀態「薄」客戶端系統(stateless 「thin」 client system)、或任何其他類型的計算或資料處理裝置。在各種實施例中,系統10可被配置成機架可安裝式伺服器系統、獨立系統、或具有任何其他適當的形狀因數。在某些實施例中,系統10可被配置成客戶端系統而非伺服器系統。
在具體實施例中,主機處理器單元14可包括多於一個CPU,及/或系統10可包括多於一個主機處理器單元14(例如,具有分佈式處理配置)。當系統10為多處理器系統時,可存在CPU或處理器的多於一個實例。如前文所提及,主機14可為系統晶片(SoC)。
系統記憶體單元107可包括至少一個記憶體模組,如圖1所示的記憶體模組12。如前文所提及,記憶體模組12可為任何基於半導體的儲存系統,例如DRAM、SRAM、PRAM、RRAM、CBRAM、MRAM、STT-MRAM等。在某些實施例中,系統記憶體單元107可包括至少一個3DS記憶體模組連同一或多個非3DS記憶體模組。非3DS記憶體可包括DDR/DDR2/DDR3/DDR4 SDRAM、Rambus® DRAM、快閃記憶體、及各種類型的唯讀記憶體(Read Only Memory,ROM)等。此外,在某些實施例中,與單一類型的記憶體相反,系統記憶體單元107可包括多種不同類型的半導體記憶體。總之,系統記憶體單元107可包括至少一個邏輯基礎(或邏輯晶粒)(如圖9所示的邏輯部分95),所述邏輯基礎使系統記憶體單元107能夠根據本發明的教示內容在系統記憶體單元107內執行種群計數運算及邏輯逐位元運算。
在各種實施例中,周邊儲存單元109可包括對磁性媒體、光學媒體、磁光媒體、或固態儲存媒體(例如,硬碟驅動機、光碟(例如CD或DVD)、非揮發性RAM裝置等)的支援。在某些實施例中,周邊儲存單元109可包括更複雜的儲存裝置/系統,例如磁碟陣列(其可具有適當的獨立磁碟冗餘陣列(Redundant Array of Independent Disk,RAID)配置)或儲存器區域網路(Storage Area Network,SAN)(其可經由標準小型電腦系統介面(Small Computer System Interface,SCSI)、光纖通道介面、Firewire®(IEEE 1394)介面、或另一適當介面而耦合至處理器14)。在一個實施例中,周邊儲存單元109可經由標準周邊介面(例如,基於周邊組件介面快速(Peripheral Component Interface Express,PCI ExpressTM )標準的介面、基於通用串列匯流排(Universal Serial Bus,USB)協定的介面、或基於IEEE 1394(Firewire®)協定的介面)而耦合至處理器14。
在具體實施例中,輸入裝置111可包括標準輸入裝置,例如電腦鍵盤、滑鼠或其他指向裝置、觸控墊、搖桿、或任何其他類型的資料輸入裝置。輸出裝置112可包括圖形/顯示裝置、電腦螢幕、音訊揚聲器、報警系統、電腦輔助設計/電腦輔助加工(Computer Aided Design/Computer Aided Machining,CAD/CAM)系統、視訊遊戲站、或任何其他類型的資料輸出或過程控制裝置。在某些實施例中,輸入裝置111及輸出裝置112可經由輸入/輸出或周邊介面而耦合至主機處理器單元14。
在一個實施例中,網路介面單元114可與主機處理器單元14通訊以使系統10能夠耦合至網路(圖中未示出)。在另一實施例中,可完全不存在網絡介面單元114。網路介面單元114可包括任何用於將系統10以有線方式或無線方式連接至網路的適當裝置、媒體及/或協定內容。在各種實施例中,網路可包括區域網路(Local Area Network,LAN)、廣域網路(Wide Area Network,WAN)、有線或無線乙太網路、電訊網路、或其他適當類型的網路。
系統10可包括板載(on-board)電力供應單元115以向圖10中所說明的各種系統組件提供電力。電力供應單元115可容置電池或可連接至交流電源插座。在一個實施例中,電力供應單元115可將太陽能轉換成電力。
在前述說明中,出於解釋而非限制目的,闡述了具體細節(例如,具體架構、介面、技術等)以提供對所揭露技術的透徹理解。然而,熟習此項技術者將易知,所揭露的技術可在背離該些具體細節的其他實施例中實踐。亦即,熟習此項技術者將能夠設想出儘管未在本文中明確闡述或示出、但體現所揭露技術的原理的各種設置。在某些情形中,省略了對眾所習知的裝置、電路、及方法的詳細說明,以避免因不必要的細節而使對所揭露技術的說明模糊不清。本文中闡述所揭露技術的原理、態樣及實施例、以及其具體例子的所有表述皆旨在涵蓋其結構等效形式及功能等效形式兩者。此外,旨在使此等等效形式包括當前已知的等效形式以及在將來開發的等效形式,例如任何所開發的用於執行同一功能的元件而無論其結構如何。
因此,舉例而言,熟習此項技術者將理解,本文中的方塊圖(例如,圖1A至圖1B以及圖6至圖10)可代表體現所述技術原理的說明性電路或其他功能性單元的概念性圖式。類似地,將理解,本文中例如在圖2至圖4中的流程圖可代表可實質上由控制器(例如,圖9所示的PIM控制器97)執行而不將所述處理傳輸至主機14的各種過程或創新態樣。在具體實施例中,控制器或主機處理器可包括例如通用處理器、專用處理器、傳統處理器、數位訊號處理器(DSP)、多個微處理器、與DSP核心相關聯的一或多個微處理器、微控制器、應用專用積體電路(Application Specific Integrated Circuit,ASIC)、現場可程式化閘陣列(Field Programmable Gate Array,FPGA)電路、任何其他類型的積體電路(integrated circuit,IC)、及/或狀態機。以上在圖2至圖4的上下文中闡述的某些或所有功能可在硬體中提供。
當某些發明態樣需要基於軟體的處理時,此軟體或程式碼可駐存於電腦可讀取資料儲存媒體(圖中未示出)中。此資料儲存媒體可為圖10所示實施例中的周邊儲存單元109的一部分,抑或可為圖9所示PIM控制器97的內部記憶體的一部分。主機14或PIM控制器97可執行儲存於此媒體上的相關指令以執行基於軟體的處理。此相關指令可包括例如圖5所示的偽碼及前文所論述的不同的由API提供的功能、以及為完成本文中所論述的PIM功能而可能需要的任何輔助程式碼。電腦可讀取資料儲存媒體可為含有電腦程式、軟體、韌體、或用於由通用電腦或上述處理器執行的微碼(microcode)的非暫時性資料儲存媒體。電腦可讀取儲存媒體的例子包括唯讀記憶體(ROM)、隨機存取記憶體(RAM)、數位暫存器、快取記憶體、半導體記憶體裝置、磁性媒體(例如內置硬碟、磁帶、及可移式磁碟)、磁光媒體、及光學媒體(例如,CD-ROM碟及數位多功能光碟(Digital Versatile Disk,DVD))。
根據本發明的發明態樣的PIM模型的替代實施例可包括負責提供額外功能(包括以上所述功能中的任一者及/或為支援根據本發明的教示內容的解決方案所需要的任何功能)的額外組件。儘管以上以具體組合形式闡述了特徵及元件,但每一特徵或元件可在不存在其他特徵及元件的情況下單獨使用,或在存在或不存在其他特徵的情況下以各種組合形式使用。如之前所提及,系統10中的某些元件(例如,PIM控制器97及主機處理器單元14)的功能可藉由使用硬體(例如,邏輯電路)及/或能夠執行呈儲存於電腦可讀取資料儲存媒體(已在上文提及)上的編碼指令或微碼的形式的軟體/韌體的硬體來提供。因此,此等功能及所說明的功能區塊將被理解為以硬體實作及/或以電腦實作,且因此是以機器實作。
以上闡述了PIM模型,在所述PIM模型中與種群計數運算及邏輯逐位元運算相關的計算是在記憶體模組內而非CPU內實作,藉此消除了在整個系統內自大的位元向量轉移資料的需要。藉由將對此等運算的處理卸載至記憶體,極大減少了記憶體-CPU介面上的冗餘資料傳輸,藉此提高了系統效能及能量效率。所揭露的PIM方法可例如在密碼學及即時分析中獲得有益應用。所述記憶體模組可為任何半導體記憶體。記憶體模組的邏輯晶粒中的控制器及專用暫存器可運作以與主機介接並提供由主機所請求的種群計數運算及邏輯逐位元運算的記憶體內執行。根據本發明的具體實施例的教示內容的PIM模型因此騰出CPU來用於其他任務,乃因諸多即時分析任務現在可在具有PIM能力的記憶體自身內執行。
如熟習此項技術者將認識到,在本申請案中闡述的創新概念可在各種各樣的應用範圍內進行潤飾及改變。因此,專利主題的範圍不應被限制於以上所論述的任何具體示例性教示內容,而是由以下申請專利範圍界定。
10‧‧‧系統
12‧‧‧記憶體模組/封裝
13‧‧‧3DS記憶體模組/3D封裝
14‧‧‧主機/處理器/主機處理器單元
16‧‧‧高速鏈路
18-1、18-2、18-3、18-4‧‧‧DRAM晶片
20‧‧‧基礎晶粒/邏輯晶粒
25、33‧‧‧流程圖
27~31、35~39‧‧‧方塊
42‧‧‧簡圖
44~47‧‧‧方塊
48‧‧‧方塊/偽碼
49‧‧‧方塊/歸約樹
50‧‧‧方塊/緊湊歸約樹
55‧‧‧8位元區塊
57‧‧‧CNT8區塊
59‧‧‧加法器/第二層階
61、63、65、74‧‧‧加法器
66‧‧‧累加器單元
70‧‧‧加法器單元
72‧‧‧MUX區塊
75‧‧‧箭頭
76、84、86、90、91‧‧‧虛線箭頭
78、87‧‧‧邏輯結構
79‧‧‧記憶體胞元
80‧‧‧感測放大器
81、83、88‧‧‧實箭頭
82‧‧‧緩衝器/第一緩衝器
85‧‧‧計算區塊
89‧‧‧第二緩衝器
95‧‧‧邏輯部分
97‧‧‧控制器/PIM控制器
99‧‧‧PIM結果暫存器
101‧‧‧主機鏈路介面及控制單元/主機介面單元
103‧‧‧記憶體介面及控制單元/記憶體介面單元
105‧‧‧自我測試及錯誤偵測/修正單元/錯誤控制單元
107‧‧‧系統記憶體單元
109‧‧‧周邊儲存單元
111‧‧‧輸入裝置
112‧‧‧輸出裝置
114‧‧‧網路介面單元
115‧‧‧電力供應單元
ADD、ADD0、ADD1、ADD2、ADD3‧‧‧加法器
API‧‧‧應用程式化介面
B0~B15‧‧‧8位元區塊
CNT8‧‧‧位元計數單元
MUX‧‧‧多工器
在以下部分中,將參照在附圖中說明的示例性實施例來闡述本發明的發明態樣,在附圖中: 圖1A示出根據本發明一個實施例的系統的高度簡化的局部佈局。 圖1B示出圖1A所示系統的使用3DS記憶體模組作為例子的另一實施例。 圖2說明根據本發明的一個實施例,示出可如何執行種群計數運算的示例性流程圖。 圖3繪示根據本發明的一個實施例,示出可如何執行邏輯逐位元運算的示例性流程圖。 圖4是根據本發明的一個實施例的示例性簡圖,其繪示可如何在圖1A至圖1B所示的記憶體模組內執行種群計數運算。 圖5說明根據本發明的一個實施例,用於對8位元向量區段中的位元進行計數的示例性偽碼。 圖6示出根據本發明的一個實施例,用於對16個位元組的資料進行種群計數的完整歸約樹(full reduction tree)的例子。 圖7示出根據本發明的一個實施例,用於對16個位元組的資料進行種群計數的緊湊歸約樹(compact reduction tree)的例子。 圖8A至圖8B示出根據本發明的具體實施例,可如何在圖1A所示的記憶體模組內執行邏輯逐位元運算的兩種示例性實作方式。 圖9說明根據本發明的一個實施例,圖1A所示記憶體模組的邏輯部分的示例性佈局。 圖10繪示根據本發明的一個實施例,圖1A所示系統的整體佈局。

Claims (20)

  1. 一種記憶體內處理方法,包括:在記憶體模組處自主機接收對儲存於所述記憶體模組中的位元向量執行種群計數運算的指令;以及在所述記憶體模組內執行所述種群計數運算,而不將所述位元向量傳輸至所述主機進行執行,其中執行所述種群計數運算包括:將所述位元向量中的位元劃分成多個不交疊區段,對所述多個不交疊區段中的每一者計算區段專有位元計數,以及將所有所述區段專有位元計數相加以產生結果。
  2. 如申請專利範圍第1項所述的記憶體內處理方法,更包括:將所述種群計數運算的所述執行的結果儲存於所述記憶體模組內;以及將所述結果自所述記憶體模組提供至所述主機。
  3. 如申請專利範圍第1項所述的記憶體內處理方法,其中每一區段包括8個位元。
  4. 如申請專利範圍第1項所述的記憶體內處理方法,其中計算所述區段專有位元計數包括以下中的一者:使用儲存於所述記憶體模組中的查找表獲得所述區段專有位元計數;以及 對所述多個不交疊區段中的每一者執行一系列移位及邏輯逐位元運算,以產生所述區段專有位元計數。
  5. 如申請專利範圍第1項所述的記憶體內處理方法,其中將所有所述區段專有位元計數相加包括:使用每一所述區段專有位元計數作為所述記憶體模組內多個加法器中對應一個加法器的輸入;以及對所述多個加法器中所有加法器的輸出進行累加,以產生所述結果。
  6. 如申請專利範圍第1項所述的記憶體內處理方法,其中所述記憶體模組是以下中的至少一者:三維堆疊記憶體模組;高頻寬記憶體模組;混合記憶體立方體記憶體模組;固態驅動機;動態隨機存取記憶體模組;靜態隨機存取記憶體;相變隨機存取記憶體;電阻式隨機存取記憶體;導電橋接隨機存取記憶體;磁性隨機存取記憶體;以及自旋轉移矩磁性隨機存取記憶體。
  7. 如申請專利範圍第1項所述的記憶體內處理方法,其中所述位元向量是藉由加密演算法而產生。
  8. 如申請專利範圍第7項所述的記憶體內處理方法,更包括:基於所述種群計數運算的所述執行的結果而確定所述加密演算法的加密品質。
  9. 一種記憶體內處理方法,包括:在記憶體模組處自主機接收對儲存於所述記憶體模組中的位元向量執行種群計數運算的指令;以及在所述記憶體模組內執行所述種群計數運算,而不將所述位元向量傳輸至所述主機進行執行,其中執行所述種群計數運算包括:自所述主機接收所述記憶體模組中儲存有所述位元向量的各別部分的記憶體位置的物理位址,對於每一所接收的物理位址,自所述記憶體位置擷取所述位元向量的所述各別部分,對所述位元向量的所述所擷取部分執行部分位元計數,以及對所有所述部分位元計數的結果進行組合,以完成對所述位元向量的所述種群計數運算的所述執行。
  10. 如申請專利範圍第9項所述的記憶體內處理方法,更包括:將每一所接收物理位址儲存於所述記憶體模組內的預定義儲 存位置;存取所述預定義儲存位置,以獲得每一所接收物理位址來用於擷取所述位元向量的所述各別部分;以及將所有所述部分位元計數的組合結果儲存於所述預定義儲存位置中以作為所述種群計數運算的所述執行的最終結果而提交至所述主機。
  11. 一種記憶體內處理方法,包括:在記憶體模組處自主機接收對儲存於所述記憶體模組中的兩個或更多個位元向量執行邏輯逐位元運算的指令;以及在所述記憶體模組內執行所述邏輯逐位元運算,而不將所述位元向量傳輸至所述主機進行執行,其中執行所述邏輯逐位元運算包括:將每一位元向量劃分成多個位元向量專有不交疊區段,將來自所有所述位元向量的對應位元向量專有區段對齊以形成多個對齊區段群組,對每一所述對齊區段群組執行所述邏輯逐位元運算,以藉此產生多個部分結果,以及對所有部分結果進行組合以完成所述邏輯逐位元運算的所述執行。
  12. 如申請專利範圍第11項所述的記憶體內處理方法,更包括:將所述邏輯逐位元運算的所述執行的結果儲存於所述記憶體 模組內;以及將所述結果自所述記憶體模組提供至所述主機。
  13. 如申請專利範圍第11項所述的記憶體內處理方法,其中所述邏輯逐位元運算是以下中的至少一者:或運算;及運算;反運算;反及運算;反或運算;以及互斥或運算。
  14. 如申請專利範圍第11項所述的記憶體內處理方法,其中每一所述位元向量專有區段包括8個位元。
  15. 如申請專利範圍第11項所述的記憶體內處理方法,更包括在將每一所述位元向量劃分成所述多個位元向量專有區段之前執行以下操作:自所述主機接收所述記憶體模組中儲存有各別位元向量的各記憶體位置的物理位址;以及自所述對應記憶體位置擷取所述位元向量。
  16. 如申請專利範圍第15項所述的記憶體內處理方法,更包括:將每一所接收物理位址儲存於所述記憶體模組內的預定義儲存位置; 存取所述預定義儲存位置,以獲得每一所接收物理位址來用於擷取所述各別位元向量;以及將對所有所述部分結果進行組合的最終結果儲存於所述預定義儲存位置中以在將來提交至所述主機。
  17. 如申請專利範圍第11項所述的記憶體內處理方法,其中所述記憶體模組是以下中的至少一者:三維堆疊記憶體模組;高頻寬記憶體模組;混合記憶體立方體記憶體模組;固態驅動機;動態隨機存取記憶體模組;靜態隨機存取記憶體;相變隨機存取記憶體;電阻式隨機存取記憶體;導電橋接隨機存取記憶體;磁性隨機存取記憶體;以及自旋轉移矩磁性隨機存取記憶體。
  18. 一種記憶體模組,包括:記憶體晶片;以及邏輯晶粒,連接至所述記憶體晶片並能夠運作以控制資料在所述記憶體晶片與外部主機之間的傳輸,其中所述邏輯晶粒包括控制器,所述控制器能夠運作以: 自所述主機接收用以執行以下中的至少一者的指令:對儲存於所述記憶體晶片中的第一位元向量進行種群計數運算,以及對儲存於所述記憶體晶片中的兩個或更多個第二位元向量進行邏輯逐位元運算;以及執行以下中的至少一者:執行所述種群計數運算,而不將所述第一位元向量傳輸至所述主機來進行所述種群計數運算的執行,以及執行所述邏輯逐位元運算,而不將所述第二位元向量傳輸至所述主機來進行所述邏輯逐位元運算的執行,其中所述控制器包括處理邏輯,所述處理邏輯包括多個加法器,其中所述處理邏輯能夠運作以執行以下操作來作為執行所述種群計數運算的一部分:自所述記憶體晶片擷取所述第一位元向量;將所述第一位元向量中的位元劃分成多個不交疊區段;對所述多個不交疊區段中的每一者計算區段專有位元計數;使用每一所述區段專有位元計數作為所述多個加法器中的對應一個加法器的輸入;在暫存器中對所述多個加法器中所有加法器的輸出進行累加;將所有累加的輸出相加以產生所述種群計數運算的所述 執行的第一結果;以及將所述第一結果儲存於所述暫存器中。
  19. 如申請專利範圍第18項所述的記憶體模組,其中所述記憶體模組是以下中的一者:三維堆疊記憶體模組;高頻寬記憶體模組;混合記憶體立方體記憶體模組;固態驅動機;動態隨機存取記憶體模組;靜態隨機存取記憶體;相變隨機存取記憶體;電阻式隨機存取記憶體;導電橋接隨機存取記憶體;磁性隨機存取記憶體;以及自旋轉移矩磁性隨機存取記憶體。
  20. 如申請專利範圍第18項所述的記憶體模組,其中所述邏輯晶粒更包括:所述暫存器,耦合至所述控制器,其中所述暫存器能夠由所述控制器運作以儲存以下中的至少一者:所述種群計數運算的所述執行的所述第一結果;以及所述邏輯逐位元運算的所述執行的第二結果,且其中所述控制器能夠運作以更執行以下中的至少一者: 將所述第一結果發送至所述記憶體模組內的第一儲存位置以供所述主機擷取,且將所述第二結果發送至所述記憶體模組內的第二儲存位置以供所述主機擷取。
TW104132052A 2014-10-01 2015-09-30 記憶體內處理方法以及記憶體模組 TWI672631B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462058568P 2014-10-01 2014-10-01
US62/058,568 2014-10-01
US14/687,676 US9836277B2 (en) 2014-10-01 2015-04-15 In-memory popcount support for real time analytics
US14/687,676 2015-04-15

Publications (2)

Publication Number Publication Date
TW201626207A TW201626207A (zh) 2016-07-16
TWI672631B true TWI672631B (zh) 2019-09-21

Family

ID=55632840

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104132052A TWI672631B (zh) 2014-10-01 2015-09-30 記憶體內處理方法以及記憶體模組

Country Status (4)

Country Link
US (1) US9836277B2 (zh)
KR (1) KR102191229B1 (zh)
CN (1) CN105487812B (zh)
TW (1) TWI672631B (zh)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10146537B2 (en) * 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US11164033B2 (en) 2015-05-29 2021-11-02 Micron Technology, Inc. Histogram creation process for memory devices
KR102402672B1 (ko) * 2015-09-01 2022-05-26 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법
KR102521654B1 (ko) * 2016-01-25 2023-04-13 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 타일-기반 렌더링의 그래픽스 파이프라인을 수행하는 방법
CN108540126A (zh) * 2017-03-03 2018-09-14 成都海存艾匹科技有限公司 基于三维可写存储器的可编程门阵列
US10956439B2 (en) * 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
US9997232B2 (en) * 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10262721B2 (en) * 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
CN107315568B (zh) * 2016-04-26 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行向量逻辑运算的装置
CN106294226A (zh) * 2016-07-27 2017-01-04 中电海康集团有限公司 基于嵌入式stt‑mram的ssd控制器芯片、固态硬盘
KR102479212B1 (ko) * 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법
JP2018049387A (ja) * 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステム及びプロセッサシステム
KR101867219B1 (ko) 2017-02-22 2018-06-12 연세대학교 산학협력단 동적 메모리 인터페이스에 기반하여 서로 다른 메모리 연산들을 처리하기 위한 장치 및 방법
US10346092B2 (en) 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US10416927B2 (en) * 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US10741239B2 (en) 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10908820B2 (en) * 2017-09-14 2021-02-02 Samsung Electronics Co., Ltd. Host-based and client-based command scheduling in large bandwidth memory systems
US10474600B2 (en) * 2017-09-14 2019-11-12 Samsung Electronics Co., Ltd. Heterogeneous accelerator for highly efficient learning systems
JP2019057053A (ja) * 2017-09-20 2019-04-11 東芝メモリ株式会社 半導体記憶装置
KR102395463B1 (ko) * 2017-09-27 2022-05-09 삼성전자주식회사 적층형 메모리 장치, 이를 포함하는 시스템 및 그 동작 방법
US10866900B2 (en) 2017-10-17 2020-12-15 Samsung Electronics Co., Ltd. ISA extension for high-bandwidth memory
CN107818591A (zh) * 2017-11-22 2018-03-20 深圳赛隆文化科技有限公司 一种虚拟现实三维模型的融合建模方法及系统
US11119677B2 (en) 2017-12-15 2021-09-14 Samsung Electronics Co., Ltd. HBM based memory lookup engine for deep learning accelerator
KR20190075363A (ko) * 2017-12-21 2019-07-01 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈
US10628295B2 (en) 2017-12-26 2020-04-21 Samsung Electronics Co., Ltd. Computing mechanisms using lookup tables stored on memory
CN108388498B (zh) * 2018-02-12 2020-09-08 北京大学 内存中计算的功率建模方法及功率管理方法
KR102665410B1 (ko) 2018-07-30 2024-05-13 삼성전자주식회사 메모리 장치의 내부 프로세싱 동작 방법
US10802883B2 (en) * 2018-08-21 2020-10-13 Intel Corporation Method, system, and device for near-memory processing with cores of a plurality of sizes
KR102692017B1 (ko) 2018-08-29 2024-08-05 삼성전자주식회사 전자 장치 및 전자 장치의 동작 방법
CN109298884B (zh) * 2018-08-29 2021-05-25 北京中科睿芯科技集团有限公司 一种通用字符操作加速处理硬件装置及控制方法
US11443185B2 (en) 2018-10-11 2022-09-13 Powerchip Semiconductor Manufacturing Corporation Memory chip capable of performing artificial intelligence operation and method thereof
TWI714003B (zh) * 2018-10-11 2020-12-21 力晶積成電子製造股份有限公司 可執行人工智慧運算的記憶體晶片及其操作方法
US11487699B2 (en) * 2019-06-04 2022-11-01 Micron Technology, Inc. Processing of universal number bit strings accumulated in memory array periphery
CN110476209B (zh) * 2019-06-28 2020-11-17 长江存储科技有限责任公司 三维存储器件中的存储器内计算
WO2020258209A1 (en) 2019-06-28 2020-12-30 Yangtze Memory Technologies Co., Ltd. Computation-in-memory in three-dimensional memory device
KR102213258B1 (ko) 2019-07-29 2021-02-08 한국전자기술연구원 효율적인 명령어 처리를 위한 프로세싱-인-메모리 제어 방법 및 이를 적용한 연산장치
KR102425909B1 (ko) * 2019-07-30 2022-07-29 한국과학기술원 뉴럴 네트워크 가속기 시스템 및 그것의 동작 방법
US20220269645A1 (en) * 2019-08-13 2022-08-25 Neuroblade Ltd. Memory mat as a register file
US11436071B2 (en) 2019-08-28 2022-09-06 Micron Technology, Inc. Error control for content-addressable memory
TWI774985B (zh) * 2019-09-09 2022-08-21 新唐科技股份有限公司 記憶體裝置、寫入方法以及讀取方法
US11099788B2 (en) * 2019-10-21 2021-08-24 Advanced Micro Devices, Inc. Near-memory data reduction
CN110597740A (zh) 2019-11-11 2019-12-20 北京中科寒武纪科技有限公司 共享存储空间的访问方法、装置以及系统和存储介质
KR20210060022A (ko) * 2019-11-18 2021-05-26 삼성전자주식회사 인공 지능 기능이 탑재된 스토리지 장치 및 이를 포함하는 스토리지 시스템
KR20210081663A (ko) 2019-12-24 2021-07-02 삼성전자주식회사 인터커넥트 장치, 인터커넥트 장치의 동작 방법 및 인터커넥트 장치를 포함하는 AI(Artificial Intelligence) 가속기 시스템
KR20210106226A (ko) 2020-02-20 2021-08-30 삼성전자주식회사 펑션-인-메모리 동작을 수행하는 적층형 메모리 장치 및 그 동작 방법
US11182159B2 (en) * 2020-02-26 2021-11-23 Google Llc Vector reductions using shared scratchpad memory
US11216373B2 (en) 2020-05-29 2022-01-04 Advanced Micro Devices, Inc. Memory access commands with near-memory address generation
KR20220067961A (ko) * 2020-11-18 2022-05-25 삼성전자주식회사 프로세싱-인-메모리 및 프로세싱-인-메모리를 이용한 인스트럭션 출력 방법
US11893278B2 (en) * 2021-02-08 2024-02-06 Samsung Electronics Co., Ltd. Memory controller and memory control method for generating commands based on a memory request
US20230195618A1 (en) * 2021-12-21 2023-06-22 Advanced Micro Devices, Inc. Approach for performing efficient memory operations using near-memory compute elements
US20240004647A1 (en) * 2022-07-01 2024-01-04 Andes Technology Corporation Vector processor with vector and element reduction method
KR102482300B1 (ko) * 2022-07-06 2022-12-29 주식회사 스퀴즈비츠 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치
KR20240123185A (ko) * 2023-02-06 2024-08-13 삼성전자주식회사 메모리 장치 및 그 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999026144A1 (en) * 1997-11-17 1999-05-27 Cray Research, Inc. Multi-dimensional cache coherence directory structure
US20050024983A1 (en) * 2002-04-22 2005-02-03 Graham Kirsch Providing a register file memory with local addressing in a SIMD parallel processor
US20070255894A1 (en) * 2005-02-10 2007-11-01 Hessel Richard E Vector processor
TW201124996A (en) * 2009-10-21 2011-07-16 Micron Technology Inc Memory having internal processors and data communication methods in memory

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687861B1 (en) * 2000-10-31 2004-02-03 Agilent Technologies, Inc. Memory tester with enhanced post decode
KR100648290B1 (ko) * 2005-07-26 2006-11-23 삼성전자주식회사 프로그램 속도를 향상시킬 수 있는 불 휘발성 메모리 장치및 그것의 프로그램 방법
US7958173B2 (en) 2007-07-13 2011-06-07 Freescale Semiconductor, Inc. Population count approximation circuit and method thereof
US8661072B2 (en) 2008-08-19 2014-02-25 International Business Machines Corporation Shared parallel adder tree for executing multiple different population count operations
KR101416879B1 (ko) * 2008-10-06 2014-08-07 삼성전자주식회사 비휘발성 메모리의 동작 방법
US9442846B2 (en) * 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
US8387065B2 (en) 2009-04-16 2013-02-26 International Business Machines Corporation Speculative popcount data creation
DE102010029735A1 (de) * 2010-06-07 2011-12-08 Robert Bosch Gmbh Verfahren zum Generieren eines Bitvektors
KR102014834B1 (ko) * 2012-05-14 2019-08-27 삼성전자주식회사 메모리 장치, 메모리 시스템 및 그 동작방법
US9053018B2 (en) 2012-06-29 2015-06-09 International Business Machines Corporation Compressed memory page selection based on a population count of a dataset
US9449675B2 (en) * 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999026144A1 (en) * 1997-11-17 1999-05-27 Cray Research, Inc. Multi-dimensional cache coherence directory structure
US20050024983A1 (en) * 2002-04-22 2005-02-03 Graham Kirsch Providing a register file memory with local addressing in a SIMD parallel processor
US20070255894A1 (en) * 2005-02-10 2007-11-01 Hessel Richard E Vector processor
TW201124996A (en) * 2009-10-21 2011-07-16 Micron Technology Inc Memory having internal processors and data communication methods in memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
)A1 *

Also Published As

Publication number Publication date
KR20160039544A (ko) 2016-04-11
CN105487812B (zh) 2019-12-24
KR102191229B1 (ko) 2020-12-15
TW201626207A (zh) 2016-07-16
US20160098200A1 (en) 2016-04-07
CN105487812A (zh) 2016-04-13
US9836277B2 (en) 2017-12-05

Similar Documents

Publication Publication Date Title
TWI672631B (zh) 記憶體內處理方法以及記憶體模組
US11403044B2 (en) Method and apparatus for performing multi-object transformations on a storage device
CN106575346B (zh) 存储器中的加密完整性校验
TW202008160A (zh) 記憶體系統、記憶體裝置以及其操作方法
TWI594182B (zh) 用於在共用記憶體通道上實施多位準記憶體階層之裝置及方法
US10761779B2 (en) Storage compute offloads on sharded and erasure-coded data
TWI596474B (zh) 用於系統存取非依電性半導體儲存體作為隨機存取記憶體之方法及半導體晶片
US20180095674A1 (en) Selective data compression/decompression for intermemory transfer interface
TWI600015B (zh) 用於相變記憶體與開關(pcms)之元資料管理及支援技術
US10033411B2 (en) Adjustable error protection for stored data
CN104115230B (zh) 基于高效pcms刷新机制的计算装置、方法和系统
NL2029100B1 (en) Accelerator controller hub
JP2017532657A (ja) 圧縮アルゴリズムのためのキャッシュバンク分散
JP2020510951A (ja) マルチコアオンダイメモリマイクロコントローラ
US11907120B2 (en) Computing device for transceiving information via plurality of buses, and operating method of the computing device
US10503654B2 (en) Selective caching of erasure coded fragments in a distributed storage system
US11188474B2 (en) Balanced caching between a cache and a non-volatile memory based on rates corresponding to the cache and the non-volatile memory
US20210165569A1 (en) Selectively operable memory device
US10379768B2 (en) Selective memory mode authorization enforcement
US20230135891A1 (en) Storage device including storage controller and operating method
US11989088B2 (en) Read data path
WO2021112981A1 (en) Memory control method and system
WO2021034654A1 (en) Hierarchical memory systems
CN114258534A (zh) 阶层式存储器系统