TW202211034A - 處理資料集的方法及系統、以及記憶體模組 - Google Patents

處理資料集的方法及系統、以及記憶體模組 Download PDF

Info

Publication number
TW202211034A
TW202211034A TW110115844A TW110115844A TW202211034A TW 202211034 A TW202211034 A TW 202211034A TW 110115844 A TW110115844 A TW 110115844A TW 110115844 A TW110115844 A TW 110115844A TW 202211034 A TW202211034 A TW 202211034A
Authority
TW
Taiwan
Prior art keywords
memory
data structure
memory module
module
local data
Prior art date
Application number
TW110115844A
Other languages
English (en)
Inventor
皇甫文沁
克里希納T 馬拉迪
冬岩 姜
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 TW202211034A publication Critical patent/TW202211034A/zh

Links

Images

Classifications

    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/04Arrangements for selecting an address in a digital store using a sequential addressing device, e.g. shift register, counter
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B30/00ICT specially adapted for sequence analysis involving nucleotides or amino acids
    • G16B30/10Sequence alignment; Homology search
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B50/00ICT programming tools or database systems specially adapted for bioinformatics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Medical Informatics (AREA)
  • Biophysics (AREA)
  • Human Computer Interaction (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Biotechnology (AREA)
  • Evolutionary Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Chemical & Material Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Analytical Chemistry (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一種記憶體模組可包括:一或多個記憶體元件;以及近記憶體計算模組,耦合至所述一或多個記憶體元件,近記憶體計算模組包括:一或多個處理組件,被配置成處理來自所述一或多個記憶體元件的資料;以及記憶體控制器,被配置成協調自主機及所述一或多個處理組件對所述一或多個記憶體元件的存取。一種處理資料集的方法可包括:將資料集的第一部分分配至第一記憶體模組;將資料集的第二部分分配至第二記憶體模組;基於資料集的第一部分在第一記憶體模組處構建第一本地資料結構;基於資料集的第二部分在第二記憶體模組處構建第二本地資料結構;以及合併第一本地資料結構與第二本地資料結構。

Description

近數據處理之系統、方法以及元件
本揭露大體而言是有關於資料處理,且更具體而言是有關於用於近資料處理(near data processing,NDP)的系統、方法及元件。
一些資料處理應用(例如k-mer計數)可能涉及存取及/或處理遍及儲存於工作記憶體空間中的資料集而隨機散佈的小資料單元。
在此先前技術部分中揭露的以上資訊僅用於增強對本發明的背景的理解,且因此其可能含有不構成先前技術的資訊。
一種記憶體模組可包括:一或多個記憶體元件;以及近記憶體計算(near-memory computing,NMC)模組,耦合至所述一或多個記憶體元件,所述近記憶體計算模組包括:一或多個處理組件(processing element,PE),被配置成處理來自所述一或多個記憶體元件的資料;以及記憶體控制器,被配置成協調自主機及所述一或多個處理組件對所述一或多個記憶體元件的存取。所述近記憶體計算模組可被配置成基於第一晶片選擇(chip select,CS)訊號控制所述一或多個記憶體元件中的第一記憶體元件,且基於第二晶片選擇訊號控制所述一或多個記憶體元件中的第二記憶體元件。所述一或多個記憶體元件及所述近記憶體計算模組被佈置為第一階級(rank),所述記憶體模組更包括:第二階級;以及階層式匯流排結構,被配置成在所述第一階級與所述第二階級之間傳送資料。所述一或多個記憶體元件可包括一或多個第一記憶體元件,所述近記憶體計算模組可包括第一近記憶體計算模組,且所述一或多個處理組件可包括一或多個第一處理組件;並且所述第二階級可包括:一或多個第二記憶體元件;以及第二近記憶體計算模組,耦合至所述一或多個第二記憶體元件,所述第二近記憶體計算模組包括:一或多個第二處理組件,被配置成處理來自所述一或多個第二記憶體元件的資料;以及第二記憶體控制器,被配置成協調自主機及所述一或多個第二處理組件對所述一或多個第二記憶體元件的存取。所述記憶體模組可更包括:階層式匯流排結構;並且所述近記憶體計算模組可更包括:輸入緩衝器,耦合於所述階層式匯流排結構與所述一或多個處理組件之間;以及輸出緩衝器,耦合於所述階層式匯流排結構與所述一或多個處理組件之間。所述近記憶體計算模組可更包括工作負載監控器,所述工作負載監控器被配置成平衡所述一或多個處理組件中的第一處理組件的第一工作負載與所述一或多個處理組件中的第二處理組件的第二工作負載。
一種處理資料集的方法可包括:將所述資料集的第一部分分配至第一記憶體模組;將所述資料集的第二部分分配至第二記憶體模組;基於所述資料集的所述第一部分在所述第一記憶體模組處構建第一本地資料結構;基於所述資料集的所述第二部分在所述第二記憶體模組處構建第二本地資料結構;以及合併所述第一本地資料結構與所述第二本地資料結構。合併所述第一本地資料結構與所述第二本地資料結構可形成經合併資料結構;並且所述方法可更包括在所述第一記憶體模組及所述第二記憶體模組處對所述經合併資料結構實行計數操作。合併所述第一本地資料結構與所述第二本地資料結構可包括縮減所述第一本地資料結構及所述第二本地資料結構。縮減所述第一本地資料結構及所述第二本地資料結構可形成經合併資料結構;並且所述方法可更包括將所述經合併資料結構散佈至所述第一記憶體模組及所述第二記憶體模組。所述方法可更包括將所述資料集的所述第一部分分配至所述第一記憶體模組處的二或更多個記憶體元件。所述方法可更包括將所述資料集的所述第一部分分配至所述第一記憶體模組處的二或更多個階級。所述第一本地資料結構可在所述第一記憶體模組處由第一處理組件及第二處理組件構建;並且所述方法可更包括平衡所述第一處理組件的第一工作負載與所述第二處理組件的第二工作負載。所述方法可更包括在第一任務與第二任務之間交錯進行對所述資料集的所述第一部分的記憶體存取。所述方法可更包括在對所述資料集的所述第一部分的記憶體存取之間在所述第一任務與所述第二任務之間進行切換。合併所述第一本地資料結構與所述第二本地資料結構可形成第一經合併資料結構,且所述方法可更包括:將所述第一經合併資料結構散佈至所述第一記憶體模組及所述第二記憶體模組;基於所述第一經合併資料結構在所述第一記憶體模組處構建第三本地資料結構;基於所述第一經合併資料結構在所述第一記憶體模組處構建第四本地資料結構;合併所述第三本地資料結構與所述第四本地資料結構以形成第二經合併資料結構;以及在所述第一記憶體模組及所述第二記憶體模組處對所述第二經合併資料結構實行計數操作。所述資料集可包括基因序列;所述第一本地資料結構可包括布隆過濾器(Bloom filter);並且所述布隆過濾器可包括所述基因序列的一或多個k-mer。
一種系統可包括:第一記憶體模組,被配置成基於資料集的第一部分構建第一本地資料結構;第二記憶體模組,被配置成基於所述資料集的第二部分構建第二本地資料結構;以及主機,藉由一或多個記憶體通道耦合至所述第一記憶體模組及所述第二記憶體模組,其中所述主機可被配置成:將所述資料集的所述第一部分分配至所述第一記憶體模組;將所述資料集的所述第二部分分配至所述第二記憶體模組;以及合併所述第一本地資料結構與所述第二本地資料結構。所述第一本地資料結構與所述第二本地資料結構可形成經合併資料結構;並且所述主機可被進一步配置成將所述經合併資料結構散佈至所述第一記憶體模組及所述第二記憶體模組。所述第一記憶體模組可被配置成對所述經合併資料結構實行計數操作。
一些資料處理應用可涉及存取及/或處理遍及儲存於工作記憶體空間中的大資料集而隨機散佈的諸多小資料單元(例如,一個位元)。此種類型的精細粒度(fine-grained)資料存取及處理在利用中央處理單元(central processing unit,CPU)或具有較大資料寬度(例如,32或64位元)的其他處理單元實施時可能效率低下及/或耗時,當資料相對於處理器遠端地儲存於具有被配置成依序存取較大資料單元(例如,儲存於連續記憶體位置中的多個64位元字元)的匯流排的記憶體系統中時尤其如此。
根據本揭露示例性實施例的近資料處理(NDP)系統可包括具有一或多個處理資源的記憶體模組,所述一或多個處理資源被配置成在所述模組處處理資料,藉此減少或消除向主機處理單元的資料傳送。在一些實施例中,近資料處理系統可包括一或多個特徵,所述一或多個特徵可利於存取及/或處理精細粒度資料單元及/或記憶體模組內的高效通訊。
舉例而言,一些實施例可包括一或多個近記憶體計算(NMC)模組,所述一或多個近記憶體計算(NMC)模組可包括一或多個處理組件,所述一或多個處理組件被配置成並行處理多個相對小的資料單元及/或實施一或多個特定演算法或其部分。在一些實施例中,近記憶體計算模組可包括例如記憶體控制器、工作負載監控器、匯流排控制器、一或多個緩衝器、多工器及/或類似物等一或多個特徵,以支援資料通訊及/或同步、使得能夠進行任務排程及/或記憶體存取、及/或進行類似操作。在一些實施例中,對於記憶體模組中的記憶體元件的每一階級,可包括一近記憶體計算模組。
作為另一例子,一些實施例可實施階層式匯流排架構,所述階層式匯流排架構可使得能夠在模組內的階級之間、階級內的記憶體元件之間及/或類似結構之間進行高效資料傳送。一些實施例可實施獨立的晶片選擇(CS)訊號,所述晶片選擇(CS)訊號可使得能夠達成對各別記憶體元件的精細粒度記憶體存取。
根據本揭露示例性實施例的工作流程可將資料集的部分分配至具有近資料處理能力的多個記憶體模組。記憶體模組可處理其關於資料集的相應部分以構建本地資料結構,所述本地資料結構可然後被合併及/或重新分配至記憶體模組以供進一步處理。
舉例而言,工作流程的實施例可實施k-mer計數過程,其中記憶體模組可構建本地布隆過濾器。來自布隆過濾器的資料可然後例如藉由縮減過程(reduction process)而被合併且然後被散佈至記憶體模組。記憶體模組可然後對其關於經合併且經散佈的布隆過濾器的拷貝實行本地計數過程。在一些實施例中,記憶體模組可實施計數布隆過濾器,其可利於使用本地化處理。
一些實施例可實施分配式資料映射方案,以遍及記憶體元件、階級、記憶體模組及/或類似物來分配資料。依據實施細節,此可例如藉由減少或消除資料在記憶體元件、階級、記憶體模組及/或類似物內的集中來改善記憶體頻寬利用率及/或能量利用率。
一些實施例可基於監控一或多個計算資源的工作負載來實施任務排程方案。舉例而言,任務排程方案可平衡近記憶體計算模組中的處理組件之間的工作負載。依據實施細節,此可改善一或多個計算資源的利用率。
一些實施例可實施散佈記憶體存取及/或任務切換方案。舉例而言,對一個任務的記憶體存取可與對一或多個其他任務的記憶體存取交錯進行。依據實施細節,此可減少或消除不可用資料存取。另外或作為另一選擇,任務可在記憶體存取之間切換,以例如利用對可用資料的存取來填充記憶體存取時間槽。依據實施細節,此可改善記憶體頻寬利用率及/或降低能耗。
本文中所揭露的原理具有獨立的實用性且可被各別地實施,且並非每個實施例均可利用每個原理。然而,所述原理亦可以各種組合來實施,所述組合中一些組合可以協同方式放大各別原理的益處。 K-mer計數
K-mer計數可用於確定含有基因序列(例如,去氧核糖核酸(deoxyribonucleic acid,DNA)序列)的資料集中具有長度k的子序列的數目。舉例而言,可使用k=3的k-mer計數過程來找到圖1的頂部處所示的DNA序列中每一類型的3-mer的數目。k=3的k-mer計數過程的結果可示出於圖1的底部處的表中。因此,DNA序列可包括一個ATC 3-mer、兩個TCT 3-mer、一個CTC 3-mer,等等。在一些實施例中,k-mer計數可用於例如生物資訊學、藥物開發、進化研究、作物改良、法醫分析、基因治療、次世代定序(next generation sequencing,NGS)及/或類似應用等應用。在一些實施例中,例如NGS技術等應用可幫助表徵全球大流行冠狀病毒疾病2019(Coronavirus Disease 2019,COVID-19)。
在一些應用中,唯一(unique)k-mer(例如,在資料集中可能僅出現一次的k-mer)可能有高機率含有錯誤。因此,一些k-mer計數過程可過濾出唯一k-mer。舉例而言,在一些應用中,高達75%的k-mer可能是唯一的,且因此,消除唯一k-mer可顯著減少DNA序列資料集的記憶體佔用面積(memory footprint)。
圖2示出根據本揭露示例性實施例的k-mer計數方法及資料結構的實施例。圖2中所示方法可接收DNA序列211作為輸入。所述方法可讀取並處理DNA序列211中的k-mer,以構建一系列三個資料結構,在此實施例中,可將所述三個資料結構實施為第一布隆過濾器213、第二布隆過濾器215及散列表217。
第一布隆過濾器213可包括容量為m 位元的位元陣列,且可使用n 個獨立的散列函數來將k-mer插入至所述陣列中。布隆過濾器最初可利用全零(all zero)填充。當自DNA序列211讀取k-mer時,可將所述n個散列函數應用於所述k-mer以計算n個散列值。可然後設置位元陣列中對應於所述n個散列值的所述n個位元。舉例而言,若n=3,則將三個獨立的散列函數h1、h2及h3應用於第一k-mer(x)可分別產生散列值1、5及13(例如,h1(x)=1、h2(x)=5,且h3(x)=13)。因此,可如圖3中所示設置位置1、5及13處的位元。將所述三個散列函數應用於第二k-mer(y)可分別產生散列值4、11及16。因此,可如圖3中所示設置位置4、11及16處的位元。將所述三個散列函數應用於第三k-mer(z)可分別產生散列值3、5及11。因此,可如圖3中所示設置位置3處的位元(位置5及11處的位元可能已被設置)。
為在第一布隆過濾器213中檢查特定k-mer的存在,可將所述n個散列函數應用於所述特定k-mer以計算n個散列值。可然後檢查位元陣列的對應於所述n個散列值的所述n個位元位置中的條目。若所述n個條目中的任一者為零,則其可指示特定k-mer不存在於布隆過濾器213中。(在一些實施例中,布隆過濾器213可具有零假陰性率(rate of false negatives)。)若所有n個條目均為一,則可高度肯定地指示特定k-mer存在於所述陣列中。(在一些實施例中,布隆過濾器213可具有低假陰性率。)
舉例而言,若n=3,則將所述三個獨立的散列函數應用於特定k-mer(w)可如圖3中所示產生散列值4、13及15。由於布隆過濾器213可在位元位置15處含有零,因此可得出特定k-mer不存在的結論。
重新參照圖2,第二布隆過濾器215可以相似於第一布隆過濾器213的方式進行構建及操作。在一些實施例中,可使用兩個布隆過濾器213及215構成的系列來實施修剪處理(pruning process),所述修剪處理可如下過濾出唯一k-mer。每當自資料集211讀取到新k-mer(w)時,所述方法可在第一布隆過濾器213中檢查新k-mer(w)的存在。若新k-mer(w)存在於第一布隆過濾器213中,此可指示其並非唯一k-mer。因此,可將新k-mer(w)寫入至第二布隆過濾器215中。然而,若新k-mer(w)不存在於第一布隆過濾器213中,則可將其添加至第一布隆過濾器213,以使第一布隆過濾器213的未來檢查將指示已遇到新k-mer(w)的一個實例。
在以此種方式讀取及處理所輸入的DNA序列資料集211中的所有k-mer之後,可在已過濾出唯一k-mer的情況下將所有的非唯一k-mer儲存於第二布隆過濾器215中。在一些實施例中,可然後捨棄第一布隆過濾器213。
可然後如下對儲存於第二布隆過濾器215中的非唯一k-mer進行計數。對於自DNA序列資料集211讀取的每一所輸入k-mer(w),可檢查第二布隆過濾器215中是否存在所述所輸入k-mer(w)。若所輸入k-mer(w)存在於第二布隆過濾器215中,則散列表217中用於所述所輸入k-mer(w)的對應條目(例如,頻率計數器)可遞增。在一些實施例中,用於k-mer(w)的頻率計數器的值可指示DNA序列資料集211中k-mer(w)的實例的數目。因此,在已讀取及處理所有k-mer之後,散列表217可儲存資料集211中所有非唯一k-mer的出現頻率。
在一些實施例中,對於布隆過濾器213及215二者以及散列表217而言,圖2中所示方法可涉及對相對小的資料單元實行的諸多精細粒度記憶體存取及/或處理操作。 近資料處理架構
圖4示出根據本揭露示例性實施例的近資料處理系統的實施例。圖4中所示系統可包括主機402以及二或更多個記憶體模組404。主機402可藉由一或多個記憶體通道406連接至記憶體模組404。圖4中所示系統可更包括邏輯408及/或410,邏輯408及/或410可使部件將資料集的部分分配至記憶體模組404、處理資料集的所述部分以在記憶體模組404處構建本地資料結構、合併所述本地資料結構及/或對經合併資料結構實行一或多個計數操作。
邏輯408及/或410及/或其部分可位於圖4中所示部件中的任一者處。舉例而言,在一些實施例中,邏輯408可位於主機402處,且可控制資料集向記憶體模組404的分配及/或本地資料結構的合併,而邏輯410可位於記憶體模組404中的每一者處,且可控制資料集的所分配部分的處理、本地資料結構的構建及/或記憶體模組404處的計數操作。
主機402可利用例如以下等任何類型的處理裝置來實施:一或多個CPU、圖形處理單元(graphics processing unit,GPU)、神經處理單元(neural processing unit,NPU)、張量處理單元(tensor processing unit,TPU)及/或類似物,包括執行儲存於任何類型的記憶體中的指令的複雜指令集電腦(complex instruction set computer,CISC)處理器(例如x86處理器)及/或精簡指令集電腦(reduced instruction set computer,RISC)處理器(例如進階精簡指令集電腦機器(advanced RSIC machine,ARM)處理器)及/或類似物。
所述一或多個記憶體通道406可利用例如以下等適合於記憶體互連的任何類型的介面來實施:任意世代的雙倍資料速率(double data rate,DDR)介面、開放記憶體介面(Open Memory Interface,OMI)、周邊部件互連高速(Peripheral Component Interconnect Express,PCIe)、計算高速鏈路(Compute Express Link,CXL)、進階可擴展介面(Advanced eXtensible Interface,AXI)、開放同調加速器處理器介面(Open Coherent Accelerator Processor Interface,OpenCAPI)、Z世代(Gen-Z)及/或類似物。所述一或多個記憶體通道406可以任何配置(例如,其中兩個記憶體模組404藉由單一多點匯流排(multi-drop bus)連接至主機402、其中每一記憶體模組404藉由單獨的點對點匯流排(point-to-point bus)連接至主機402及/或類似配置)進行佈置。
記憶體模組404可利用以任何實體配置佈置的任何類型及/或配置的記憶體元件、緩衝器、介面(包括上述介面)及/或類似物來實施。舉例而言,記憶體模組404可利用包括以下在內的任何類型的記憶體元件來實施:揮發性記憶體,例如動態隨機存取記憶體(dynamic random access memory,DRAM)及/或靜態隨機存取記憶體(static random access memory,SRAM);非揮發性記憶體,例如包括反及(not-AND,NAND)記憶體的快閃記憶體;持續記憶體,例如交叉網格非揮發性記憶體(cross-gridded nonvolatile memory);具有體電阻變化的記憶體;及/或類似物;及/或其任意組合。記憶體模組404可被配置成單列直插記憶體模組(single in-line memory module,SIMM)、雙列直插記憶體模組(dual in-line memory module,DIMM)、小輪廓DIMM(small outline DIMM,SO-DIMM)、負載降低的DIMM(load-reduced DIMM,LRDIMM)及/或類似物。在一些實施例中,記憶體模組404中的一或多者可不被實施為單獨的實體部件,而是可被簡單地實施為例如具有一或多個記憶體元件及任何支援電路系統、跡線及/或類似物的電路板的一部分,且其能夠用作記憶體模組。
邏輯408及/或410及/或其部分可利用硬體、軟體或其任意組合來實施。舉例而言,在一些實施例中,邏輯中的任一者可利用以下來實施:組合邏輯、順序邏輯、一或多個定時器、計數器、暫存器、狀態機、揮發性記憶體(例如DRAM及/或SRAM)、非揮發性記憶體(例如快閃記憶體)、複雜可程式化邏輯元件(complex programmable logic device,CPLD)、現場可程式化閘陣列(field programmable gate array,FPGA)、特殊應用積體電路(application specific integrated circuit,ASIC)、CISC處理器及/或精簡指令集電腦(reduced instruction set computer,RISC)處理器及/或執行指令及/或類似物的類似物、以及CPU、GPU、NPU、TPU及/或類似物。
圖5示出根據本揭露示例性實施例的具有近資料處理能力的記憶體模組的實施例。圖5中所示記憶體模組504可例如用於實施圖4中所示記憶體模組404中的任一者。圖5中所示記憶體模組504可包括由一或多個記憶體元件510、近記憶體計算模組512、匯流排結構514及記憶體通道介面516構成的階級。
舉例而言,如以上參照記憶體模組404所述,所述一或多個記憶體元件510可利用任何類型及/或配置的記憶體元件來實施。
近記憶體計算模組512可包括一或多個處理組件,所述一或多個處理組件能夠處理藉由匯流排結構514自記憶體元件510的所述階級、記憶體元件的另一階級及/或另一記憶體模組接收的任何資料單元。在一些實施例中,近記憶體計算模組512可包括例如以下等一或多個特徵以實施任務排程、記憶體存取及/或類似操作:任何類型的通用及/或專用控制器,例如記憶體控制器、匯流排控制器及/或類似物;工作負載監控器、一或多個輸入及/或輸出(input and/or output,I/O)緩衝器、一或多個多工器及/或解多工器;及/或類似物。在一些實施例中,近記憶體計算模組512可實施例如以下等寬廣範圍的功能中的任一者:k-mer計數、加密及/或解密、重複刪除、編碼及/或解碼、錯誤校正、任何類型的資料過濾及/或類似功能。在一些實施例中,近記憶體計算模組512可實施任何類型的通用控制器功能,例如輸入及/或輸出(I/O)控制、一或多個控制演算法、監督控制、基板控制、可程式化邏輯控制、過程控制及/或類似控制。如以上參照邏輯408及/或410所述,近記憶體計算模組512及/或其任何部分及/或特徵可利用硬體、軟體或其任意組合來實施。
匯流排結構514可例如利用階層式匯流排架構來實施,所述階層式匯流排架構可在階級內的記憶體元件之間、記憶體元件與記憶體通道介面516之間及/或類似結構之間傳送資料。在一些實施例中,獨立的晶片選擇訊號可使得能夠達成對各別的記憶體元件510的精細粒度記憶體存取。匯流排結構514可使用任何類型的信令(signaling)及/或配置(包括多點、點對點及/或類似配置)來實施。
圖6示出根據本揭露示例性實施例的具有近資料處理能力的記憶體模組的另一實施例。圖6中所示記憶體模組604可包括相似於圖5中所示部件的部件,然而,所述一或多個記憶體元件610、近記憶體計算模組612及/或匯流排結構614的多個實例可被配置成例如多個階級618。
在圖6中所示實施例中,匯流排結構614中的一或多者可利用階層式匯流排架構來實施,所述階層式匯流排架構可在不同的階級618之間以及在階級內的記憶體元件之間、記憶體元件與記憶體通道介面616之間及/或類似結構之間傳送資料。
圖4至圖6中所示實施例不限於任何特定應用,且可用於實施各種各樣的處理方法、工作流程及/或類似應用。然而,依據實施細節,其對於實施可能為記憶體受限的(memory bound)及/或可能涉及精細粒度記憶體存取(例如k-mer計數、DNA播種及/或類似操作)的資料處理應用而言可尤其有效。
出於例示本揭露的原理的目的,下文可在k-mer計數應用的上下文中、且利用一些特定的實施細節(例如LRDIMM、DDR記憶體介面及/或類似物)來闡述系統、記憶體模組、近記憶體計算模組、方法、工作流程及/或類似應用的一些示例性實施例。然而,所述原理不限於k-mer計數應用,且可應用於各種各樣的其他應用及/或可利用諸多不同的實施細節來達成。
出於例示目的,圖7至圖10共同地示出根據本揭露示例性實施例的近資料處理系統及可與其一起使用的一些示例性部件的示例性架構。
圖7示出根據本揭露示例性實施例的近資料處理系統的示例性實施例。圖7中所示系統700可包括主機CPU 702以及一或多個記憶體控制器703,所述一或多個記憶體控制器703被配置成實施DDR記憶體通道,所述DDR記憶體通道在圖7中所示實施例中可包括記憶體通道CH1、CH2、CH3及/或CH4。記憶體通道中的一或多者可安裝有一或多個DIMM 704。圖7中所示部件的數目僅為例示性的,且可使用更少或更多的部件。為防止圖式變得模糊,可能並不會示出所有部件。
圖8示出根據本揭露示例性實施例的記憶體模組的示例性實施例。圖8中所示實施例可例如用於實施圖7中所示DIMM 704中的任一者。圖8中所示記憶體模組804可例如利用LRDIMM及近記憶體計算模組824來實施,LRDIMM可包括一或多個階級820,所述一或多個階級820中的每一者可包括一或多個記憶體元件810。記憶體模組804亦可包括可共同地形成記憶體緩衝器的暫存時脈驅動器(registering clock driver,RCD)826與一或多個資料緩衝器828。暫存時脈驅動器826可緩衝及/或重複藉由DDR記憶體通道自主機(例如,702)接收的命令及/或位址訊號(command and/or address signal,C/A)。所述一或多個資料緩衝器828可緩衝去往及/或來自記憶體元件810的資料訊號DQ,以保持及/或改善訊號的完整性。記憶體模組804可藉由卡邊緣連接件828實體連接至記憶體通道(例如,CH1、CH2、...)中的一者。
圖9示出根據本揭露示例性實施例的記憶體模組的階級或其部分的更詳細的示例性實施例。圖9中所示實施例可例如用於實施圖8中所示階級820中的一者的虛線830所示的部分。圖9中所示階級920可包括一或多個記憶體元件910,所述一或多個記憶體元件910中的每一者可具有用於儲存具有所輸入DNA序列的資料集的一部分的區(DNA)、用於儲存作為k-mer計數操作的輸出的一或多個散列表的一部分的區(散列)以及用於儲存用於k-mer計數操作的一或多個布隆過濾器的區(過濾器)。
近記憶體計算模組924可包括一或多個處理組件932及控制模組934,控制模組934可包括記憶體控制器936、工作負載監控器938及/或匯流排控制器940中的一或多者。近記憶體計算模組924可更包括用於處理組件932的輸入緩衝器942及輸出緩衝器944。輸入緩衝器942可藉由多工器946耦合至階層式匯流排結構914,且輸出緩衝器944可藉由解多工器948耦合至階層式匯流排結構914。多工器946及解多工器948可由來自控制模組934的一或多個賦能訊號EN控制。
記憶體元件910可至少部分地因應於藉由暫存時脈驅動器926自主機接收的一或多個主機C/A訊號而由控制模組934所產生的一或多個C/A訊號及/或CS訊號控制。資料可藉由資料匯流排914a傳送至記憶體元件910及/或自記憶體元件910傳送,資料匯流排914a可為階層式匯流排結構914的一部分。階層式匯流排結構914可藉由一或多個資料緩衝器928將階級920耦合至DDR記憶體通道。
圖10示出根據本揭露示例性實施例的處理組件的示例性實施例。圖10中所示處理組件可例如用於實施圖9中所示處理組件932中的任一者。圖10中所示處理組件1032可包括輸入緩衝器1050及散列模組1052,散列模組1052可自輸入緩衝器1050接收輸入且可藉由回饋連接1051向輸入緩衝器1050提供回饋輸出。處理組件1032可更包括位址轉譯模組1054,位址轉譯模組1054可自散列模組1052接收輸入且向記憶體控制器936及/或輸出緩衝器944提供輸出。
參照圖7至圖10,在一些實施例中,且依據實施細節,使邏輯(例如一或多個處理組件)及/或控制功能(例如每一階級內的記憶體控制、工作負載監控、工作負載控制及/或匯流排控制)集中化可改善每一階級內的部件之間及/或階級之間的通訊及/或同步。使邏輯集中化亦可改善記憶體存取管理、任務管理及/或類似管理。
階層式匯流排的使用可改善記憶體模組內的通訊的速度及/或效率(例如,增強DIMM內通訊)及/或可減少記憶體模組之間的通訊(例如,減少DIMM間通訊)。在一些實施例中,階層式匯流排可能夠使得資料在記憶體元件之間傳送(例如,晶片間通訊)。在一些實施例中,階層式匯流排可包括可在同一記憶體模組內的不同階級之間傳送C/A訊號的階級-階級C/A匯流排及/或可在同一記憶體模組內的不同階級之間傳送資料的階級-階級資料匯流排。在一些實施例中,利用一或多個階級間匯流排,可在本地達成DIMM內通訊,而無需藉由記憶體通道向主機發送資料,此可減少或消除通訊瓶頸的來源。
參照圖9,在一些實施例中,每一近記憶體計算模組內部的處理組件(PE)932的數目可為可配置的。處理組件932可自輸入緩衝器942讀取輸入資料,且將輸出資料寫入至近記憶體計算模組924中的輸出緩衝器944。在一些實施例中,處理組件932中的一或多者可被配置成並行處理多個相對小的資料單元及/或實施一或多個特定演算法或其部分。舉例而言,在一些實施例中,處理組件932中的一或多者的首要功能可為對輸入資料(例如,自儲存於記憶體元件910中的DNA序列資料集的一部分讀取的k-mer)應用一或多個散列函數(例如,MurmurHash3)。
參照圖10,在處理組件1032的一些實施例中,緩衝器1050可儲存來自DNA序列的所輸入k-mer,散列模組1052可包括用於對所述k-mer實行一或多個散列函數(例如,獨立的散列函數)的邏輯,且位址轉譯模組1054可包括用於將虛擬位址轉換為本地記憶體元件(例如,DRAM)位址的邏輯。在一些實施例中,位址轉譯模組1054可用於至少部分地實施位址映射方案來分配精細粒度資料,以例如改善記憶體頻寬利用率。
參照圖9,在一些實施例中,記憶體控制器936可協調自主機及所述一或多個處理組件932對所述一或多個記憶體元件910的存取。主機側記憶體控制器(例如,圖7中的記憶體控制器703中的一者)一或多個近記憶體計算模組924內的記憶體控制器936之間的協調可例如利用主機優先請求排程來實施。
在一些實施例中,主機側記憶體控制器可能無法知曉記憶體模組中的模組側記憶體控制器936可向記憶體元件910發送請求。因此,若主機側記憶體控制器及模組側記憶體控制器936二者向記憶體元件910中的一者發送重疊請求,則可能出現時序問題。主機優先請求排程可例如藉由在主機側實施關閉頁面策略、從而為模組側實施主機優先請求排程來解決此種類型的時序問題。舉例而言,利用關閉頁面策略,主機側記憶體控制器可期望其對記憶體元件910的記憶體請求符合一或多個DDR時序約束。由於模組側記憶體控制器936可向記憶體元件910發出請求,因此來自主機側記憶體控制器的記憶體請求的潛時(latency)可能是不可預測的且因此可能與一或多個DDR時序約束衝突。因此,一旦記憶體元件910完成當前任務,主機優先請求排程便可提供來自主機的記憶體請求。在一些實施例中,可修改一或多個主機側DDR時序參數,以使主機側記憶體管理器可具有更長的資料返回時間預期,以使得模組側記憶體控制器936能夠對進行請求排程。
工作負載監控器938可監控輸入緩衝器942及/或一或多個處理組件932及/或與輸入緩衝器942及/或一或多個處理組件932協作,以例如在k-mer計數期間平衡處理組件的工作負載,此可改善處理組件932的利用率。
可被實施為例如匯流排仲裁器的匯流排控制器940可調節階層式匯流排結構914上的資料及/或C/A傳送。在一些實施例中,匯流排控制器940可將階層式匯流排結構的資源指派至所述一或多個處理組件932。 近資料處理工作流程
圖11A至圖11C示出根據本揭露示例性實施例的k-mer計數工作流程的示例性實施例。圖11A示出根據本揭露示例性實施例的第一布隆過濾器構建操作及第二布隆過濾器構建操作的實施例。圖11B示出根據本揭露示例性實施例的第一合併操作及第二合併操作的實施例。圖11C示出根據本揭露示例性實施例的計數操作的實施例。出於例示目的,可在圖7中所示系統的上下文中闡述圖11A至圖11C中所示實施例,但所述工作流程可與任何適合的系統一起使用。圖11A至圖11C中所示實施例可各自包括主機CPU 1102、一或多個記憶體控制器1103以及一或多個記憶體模組1104。
為能夠使得在k -mer計數工作流程中進行並行處理,可將可包括例如DNA序列的輸入資料集均勻地分割成可被分配至不同記憶體模組1104的部分,在此例子中,記憶體模組1104可被實施為DIMM。在第一布隆過濾器構建操作①期間,如圖11A中所示,每一記憶體模組1104可如由箭頭所示獨立地構建第一本地布隆過濾器。在此操作期間,每一記憶體模組可讀取資料集的本地部分且使用所述資料來構建亦可儲存於本地的第一本地布隆過濾器。在此操作期間,可藉由使用任務分割及/或資料本地化來減少或消除模組間通訊。
在完成第一布隆過濾器構建之後,如圖11B中所示,可在第一合併操作②期間縮減及散佈本地布隆過濾器,第一合併操作②可同步不同記憶體模組1104中的布隆過濾器。在一些實施例中,布隆過濾器可僅含有零及一,且因此可例如藉由在對應的布隆過濾器條目之間使用或運算而如由無陰影箭頭所示縮減布隆過濾器。在縮減之後,可例如藉由向記憶體模組1104廣播經縮減布隆過濾器而如由陰影箭頭所示散佈經縮減布隆過濾器。在一些實施例中,縮減及/或散佈操作可僅涉及用於資料傳送的順序讀取及/或寫入操作。
在記憶體模組1104中的第一布隆過濾器同步之後,如由圖11A中的箭頭所示,每一記憶體模組1104可在第二布隆過濾器構建操作③期間獨立地及/或並行地構建第二布隆過濾器。除記憶體模組可使用來自第一合併操作的經合併布隆過濾器作為輸入來構建第二布隆過濾器以外,此操作可相似於第一布隆過濾器構建操作。在每一記憶體模組1104處構建的第二布隆過濾器可在對應的記憶體模組處儲存於本地。如與第一布隆過濾器構建操作一樣,可藉由使用任務分割及/或資料本地化來減少或消除模組間通訊。
在構建第二布隆過濾器之後,如圖11B中所示,可在第二合併操作④期間縮減及散佈第二布隆過濾器,第二合併操作④可同步不同記憶體模組1104中的第二布隆過濾器。在一些實施例中,第二布隆過濾器可僅含有零及一,且因此可例如藉由在對應的布隆過濾器條目之間使用或運算而如由無陰影箭頭所示縮減第二布隆過濾器。在縮減之後,可例如藉由向記憶體模組1104廣播經縮減布隆過濾器而如由陰影箭頭所示散佈經縮減的第二布隆過濾器。如與第一合併操作一樣,在一些實施例中,第二縮減及/或散佈操作可僅涉及用於資料傳送的順序讀取及/或寫入操作。
在完成第二布隆過濾器的構建之後,每一記憶體模組1104可含有第二布隆過濾器的拷貝。然後,可然後在記憶體模組處並行實行k-mer計數操作。在k-mer計數操作期間,對於每一k-mer,記憶體模組可如由圖11C中的無陰影箭頭所示首先檢查第二布隆過濾器,以判斷當前k-mer是否是非唯一的。若當前k-mer是非唯一的,則可如由圖11C中的陰影箭頭所示存取散列表中對應於當前k-mer的條目(其可分配於不同記憶體模組1104中)且將其遞增一。在一些實施例中,舉例而言,由於模組間通訊可僅用於經驗證的非唯一k-mer,因而此操作可減少或消除模組間通訊。
因此,在圖11A至圖11C中所示實施例中,依據實施細節,可由記憶體模組1104並行實行用於k-mer計數的處理。再者,第一布隆過濾器及第二布隆過濾器的本地構建可改善系統效能,此乃因其可涉及很少或不涉及模組間通訊。第一布隆過濾器及第二布隆過濾器的縮減及散佈可僅涉及可對效能具有很小影響或對效能不具有影響的連續的順序讀取及/或寫入操作。另外,在k-mer計數操作期間,藉由檢查可能儲存於本地的第二布隆過濾器,可避免不必要的模組間記憶體存取。
在一些實施例中,且依據實施細節,在其中輸入資料集可被分配至多個記憶體模組的系統及/或工作流程中串聯使用兩個布隆過濾器可能導致一或多個假陰性結果。此可例示於圖12中,在圖12中,使用全域資料集的k-mer計數方法例示於圖式的左側。可應用包括3-mer ATC的三個實例的DNA序列1211作為輸入而無需任何分割。由於第一全域布隆過濾器(global Bloom filter)1213可辨別出ATC 3-mer是非唯一的,因此第一全域布隆過濾器1213可讀取ATC 3-mer的所述三個實例且將3-mer傳遞至第二全域布隆過濾器1215。第二全域布隆過濾器1215可然後遞增散列表1217中對應於ATC 3-mer的計數。
然而,若包括DNA序列的資料集被分配至三個不同的記憶體模組,且如圖12的右側所示ATC 3-mer 1211a的僅一個實例被分配至記憶體模組中的每一者,則每一記憶體模組處的第一本地布隆過濾器1219可確定ATC 3-mer是唯一的,且因此不將ATC 3-mer傳遞至所述記憶體模組處的第二本地布隆過濾器1221。因此,在最終散列表1223中可能不存在用於ATC 3-mer的條目。
在一些實施例中,可藉由在每一記憶體模組處使用計數布隆過濾器來減少或消除假陰性。計數布隆過濾器可以相似於具有由單一位元構成的陣列的布隆過濾器的方式使用n個獨立的散列函數。然而,計數布隆過濾器不再含有由單一位元構成的陣列,而是可含有對應於可由所述n個散列函數計算的可能散列值的計數器陣列。舉例而言,具有4位元計數器陣列的計數布隆過濾器可能能夠追蹤特定k-mer的零至15個實例。因此,若n=3,則對於特定k-mer(x),對應於所計算的散列值h1(x)、h2(x)及h3(x)的計數器可各自遞增一。為在計數布隆過濾器中查找特定k-mer,可使用所述n個獨立的散列函數來為所述特定k-mer計算n個散列值,且可讀取對應於所計算的散列值的計數器。可將具有最小計數的計數器的值假定為特定k-mer的實例的數目。
圖13示出根據本揭露示例性實施例的k-mer計數方法工作流程的實施例。在圖13中所示實施例中,可將包括ATC 3-mer的三個實例的資料集分配至三個不同的記憶體模組,且可將ATC 3-mer 1311的僅一個實例分配至記憶體模組中的每一者。然而,每一記憶體模組可包括可對ATC的一個實例進行計數的本地計數布隆過濾器1319,且可將計數1傳遞至全域布隆過濾器1321。因此,可將ATC辨別為是非唯一3-mer且添加至最終散列表1323。
圖14A至圖14C示出根據本揭露示例性實施例的使用計數布隆過濾器的k-mer計數工作流程的示例性實施例。圖14A示出根據本揭露示例性實施例的計數布隆過濾器構建操作的實施例。圖14B示出根據本揭露示例性實施例的合併操作的實施例。圖14C示出根據本揭露示例性實施例的計數操作的實施例。圖14A至圖14C中所示實施例可各自包括主機CPU 1402、一或多個記憶體控制器1403以及一或多個記憶體模組1404。出於例示目的,可在圖7中所示系統的上下文中闡述圖14A至圖14C中所示實施例,但所述工作流程可與任何適合的系統一起使用。
如與圖11A至圖11C中所示實施例一樣,為能夠使得在圖14A至圖14C中所示實施例中進行k -mer計數工作流程中的並行處理,可將可包括例如DNA序列的輸入資料集均勻地分割成可分配至不同記憶體模組1404的部分,在此例子中,記憶體模組1404可被實施為DIMM。在如圖14A中所示計數布隆過濾器構建操作期間,每一記憶體模組1404可如由箭頭所示獨立地構建本地計數布隆過濾器。在此操作期間,每一記憶體模組可讀取資料集的本地部分且使用所述資料來構建亦可儲存於本地的本地計數布隆過濾器。在此操作期間,可藉由使用任務分割及/或資料本地化來減少或消除模組間通訊。
在完成計數布隆過濾器構建之後,可在合併操作期間縮減及散佈本地計數布隆過濾器,所述合併操作可如圖14B中所示同步不同記憶體模組1404中的計數布隆過濾器。在一些實施例中,可如由無陰影箭頭所示藉由添加計數布隆過濾器的對應條目(例如,計數器)來縮減計數布隆過濾器。在已添加條目之後,若經縮減布隆過濾器中的計數器條目大於二,則可將經合併布隆過濾器中的對應條目可設定為一,否則可將其設定為零。在一些實施例中,可如由陰影箭頭所示藉由將經合併布隆過濾器分配至每一記憶體模組1404來散佈經合併計數布隆過濾器。在一些實施例中,縮減及/或散佈操作可僅涉及用於資料傳送的順序讀取及/或寫入操作。
在散佈經合併布隆過濾器之後,每一記憶體模組1404可含有經合併布隆過濾器的拷貝。然後可在記憶體模組1404處並行實行k-mer計數操作。在k-mer計數操作期間,對於每一k-mer,記憶體模組可如由無陰影箭頭所示首先檢查第二布隆過濾器,以判斷當前k-mer是否是非唯一的。若當前k-mer是非唯一的,則可如由陰影箭頭所示存取散列表中對應於當前k-mer的條目(其可分配於不同記憶體模組1404中)且將其遞增一。在一些實施例中,舉例而言,由於模組間通訊可僅用於經驗證的非唯一k-mer,因而此操作可減少或消除模組間通訊。
因此,在圖14A至圖14C中所示實施例中,依據實施細節,可由記憶體模組1404並行實行用於k-mer計數的處理。再者,計數布隆過濾器的本地構建可改善系統效能,此乃因其可涉及很少或不涉及模組間通訊。計數布隆過濾器的縮減及散佈可僅涉及可對效能具有很小影響或不對效能具有影響的連續的順序讀取及/或寫入操作。另外,在k-mer計數操作期間,藉由檢查可能儲存於本地的經合併布隆過濾器,可避免不必要的模組間記憶體存取。
在一些實施例中,且依據實施細節,根據本揭露示例性實施例的系統、方法及/或元件可藉由實施可減少或消除不必要的模組間記憶體存取的工作流程(例如,藉由將用於k -mer計數的輸入資料集劃分成多個分區且將所述分區及/或所述分區上的操作本地化於可以大的並行性程度進行操作的多個記憶體模組中)來減少或防止通訊瓶頸。在一些實施例中,且依據實施細節,根據本揭露示例性實施例的系統、方法及/或元件可藉由實施可包括階級間C/A匯流排及/或階級間資料匯流排的階層式匯流排來減少或防止通訊瓶頸,藉此減少或最小化模組間通訊。 頻寬利用率
圖15A示出根據本揭露示例性實施例的用於記憶體元件的位址映射的實施例。圖15A中所示映射可以最高有效位元(most significant bit,MSB)位置處的2位元通道位址開始,隨後是4位元階級位址、4位元元件位址、4記憶體組記憶體組位址、16位元列位址、10位元行位址、3位元叢發位址及最低有效位元(least significant bit,LSB)位置處的2位元寬度。圖15A中所示映射可聯合記憶體元件內的資料,在一些實施例中,此可利用資料局部性(data locality)。然而,例如k-mer計數等應用可能涉及大量可能具有很少或沒有局部性的精細粒度(例如,1位元或2位元)隨機記憶體存取。因此,依據實施細節,記憶體頻寬可能得不到充分利用。
根據本揭露示例性實施例的一些實施例可實施分配式資料映射方案,以遍及記憶體元件、階級、記憶體模組及/或類似物分配資料。
圖15B示出根據本揭露示例性實施例的記憶體元件的位址映射的另一實施例。圖15B中所示映射可以MSB位置處的2位元通道位址開始,隨後是16位元列位址、4位元記憶體組位址、4位元階級位址、4位元元件位址、10位元行位址、3位元叢發位址及LSB位置處的2位元寬度。圖15B中所示映射可對用於記憶體元件的位址位元進行重新排序,以使在不同記憶體元件(例如,DRAM晶片)中分配資料優先化。依據實施細節,此可例如藉由減少或消除資料在記憶體元件、階級、記憶體模組及/或類似物內的集中來改善記憶體頻寬利用率。 工作負載平衡
在一些實施例中,例如圖9中所示工作負載監控器938等工作負載監控器可基於監控一或多個計算資源的工作負載來實施任務排程方案。舉例而言,任務排程方案可平衡近記憶體計算模組924中的處理組件932之間的工作負載。
在一些實施例中,任務排程方案可利用輸入緩衝器942作為傳入任務佇列。工作負載監控器938可監控所述一或多個處理組件932及輸入緩衝器942的狀態。若處理組件932中的一者完成任務,則工作負載監控器938可自輸入緩衝器942選擇輸入資料單元且將其作為任務調度至處理組件932,以使處理組件932保持忙碌。因此,在一些實施例中,工作負載監控器938可藉由以精細粒度(fine granularity)向處理組件932動態地調度任務來實施任務排程方案。依據實施細節,此可改善一或多個計算資源的利用率。 冗餘記憶體存取
圖16A示出根據本揭露示例性實施例的用於布隆過濾器的第一記憶體存取方法的示例性實施例。圖16A中所示實施例可使用四個散列函數(n=4)。因此,可針對每一k-mer檢查四個布隆過濾器條目。在k-mer計數操作期間,可檢查經合併布隆過濾器中與當前k-mer相關的所有布隆過濾器條目,以驗證其為一。若所有的對應布隆過濾器條目均為一,則可更新散列表。否則,可不實行寫入操作。然而,在一些實施例中,對經合併布隆過濾器的順序記憶體存取可能導致如下所述的浪費的記憶體頻寬。
在圖16A中所示實施例中,對經合併布隆過濾器的記憶體存取可針對每一任務依序發出(其可針對每一k-mer由不同的處理組件實行)。圖16A中的頂部序列示出布隆過濾器存取的序列,其中對相同任務(k-mer及處理組件)的請求用相同類型的陰影指示。圖16A中的底部序列示出針對每一讀取請求返回至處理組件的資料,其中針對特定任務的返回資料用與所述任務相同類型的陰影指示。因此,可依序發出對每一k-mer的四次記憶體存取,且亦可依序返回所述資料。
為第一任務返回的第一布隆過濾器條目(以無陰影指示)可為零。然而,若第一條目為零,則接下來的三個條目(由粗輪廓指示)可能是不相關的(例如,「不關心(don’t care)」用語)。因此,接下來的三次存取可能是不必要的且可能浪費記憶體頻寬。
一些實施例可實施散佈記憶體存取及/或任務切換方案。舉例而言,對一個任務的記憶體存取可與對一或多個其他任務的記憶體存取交錯進行。依據實施細節,此可減少或消除不可用資料存取。另外或作為另一選擇,任務可在記憶體存取之間切換,以例如利用對可用資料的存取來填充記憶體存取時間槽。依據實施細節,此可改善記憶體頻寬利用率。
圖16B示出根據本揭露示例性實施例的用於布隆過濾器的第二記憶體存取方法的示例性實施例。在圖16B中所示實施例中,可以時間間隔散佈及/或發出對不同任務(k-mer及布隆過濾器)的記憶體存取。舉例而言,可僅在所有先前存取均返回一的情況下發出對特定任務的後續記憶體存取。因此,如圖16B中所示,由於對前兩個任務中的每一者的第一存取返回零,因此在對前兩個任務的第一存取之後可不發出後續記憶體存取。然而,由於對第三任務的第一記憶體存取可返回一,因此可在一時間間隔之後發出對第三任務的第二記憶體存取(BF-1)。在一些實施例中,且依據實施細節,此可減少或消除冗餘記憶體存取及/或更高效地利用可用記憶體頻寬。
儘管冗餘記憶體存取可隨著散佈記憶體存取而減少或消除,然而在一些實施例中,記憶體頻寬仍然可能例如由於缺少記憶體存取來填充對任務的記憶體存取之間的時間間隔而被浪費。因此,一些實施例可如圖16B中所示在記憶體存取之間切換任務。舉例而言,在為針對第一k-mer的第一任務發出記憶體存取之後,處理組件可切換至屬於第二k-mer的第二任務,同時等待第一任務的返回資料。因此,可利用屬於不同任務及/或處理組件的記憶體存取來填充散佈記憶體存取之間引起的時間間隔。在一些實施例中,且依據實施細節,此可進一步改善記憶體頻寬利用率。在一些實施例中,散佈記憶體存取與任務切換的組合可生成協同效應,其可減少或消除冗餘記憶體存取及/或高效地利用記憶體頻寬。
圖17示出根據本揭露示例性實施例的處理資料集的方法的實施例。圖17中所示實施例可在操作1702處開始。在操作1704處,所述方法可將資料集的第一部分分配至第一記憶體模組。在操作1706處,所述方法可將資料集的第二部分分配至第二記憶體模組。在操作1708處,所述方法可基於資料集的第一部分在第一記憶體模組處構建第一本地資料結構。在操作1710處,所述方法可基於資料集的第二部分在第二記憶體模組處構建第二本地資料結構。在操作1712處,所述方法可合併第一本地資料結構與第二本地資料結構。所述方法可在操作1714處結束。
圖17中所示實施例以及本文中所述的所有的其他實施例是示例性操作及/或部件。在一些實施例中,可省略一些操作及/或部件,及/或可包括其他操作及/或部件。再者,在一些實施例中,操作及/或部件的時間及/或空間次序可有所變化。儘管一些部件及/或操作可被示為各別的部件,然而在一些實施例中,單獨示出的一些部件及/或操作可被整合至單一部件及/或操作中,及/或示為單一部件及/或操作的一些部件及/或操作可利用多個部件及/或操作來實施。
以上所揭露的實施例已在各種實施細節的上下文中進行闡述,但本揭露的原理並非僅限於該些或任何其他具體細節。舉例而言,一些功能性已被闡述為由某些部件實施,但在其他實施例中,所述功能性可分配於位於不同位置且具有各種使用者介面的不同系統及部件之間。某些實施例已被闡述為具有特定的過程、操作等,但該些用語亦囊括其中可利用多個過程、操作等來實施特定過程、操作等的實施例或者其中可將多個過程、操作等整合至單一過程、步驟等中的實施例。對部件或組件的引用可僅指代所述部件或組件的一部分。舉例而言,對積體電路的引用可指代所述積體電路的全部或僅一部分,且對區塊的引用可指代整個區塊或者一或多個子區塊。除非上下文另外明確指示,否則在本揭露及申請專利範圍中使用例如「第一(first)」及「第二(second)」等用語可僅是為了區分所述用語所修飾的事物且可能並不指示任何空間次序或時間次序。在一些實施例中,對事物的引用可指代所述事物的至少一部分,舉例而言,「基於」可指代「至少部分地基於」,「存取」可指代「至少部分地存取」及/或類似指代關係。對第一組件的引用可能並不暗示第二組件的存在。為方便起見,可提供各種組織輔助(例如章節標題及類似物),但根據該些輔助及本揭露的原理佈置的標的物不受該些組織輔助所限制。
根據本專利揭露的發明原理,可對上述各種細節及實施例進行組合以生成附加的實施例。由於可在不背離本發明概念的條件下對本專利揭露的發明原理進行佈置及細節上的潤飾,因此此種變更及潤飾被認為落於以下申請專利範圍的範圍內。
0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18~m、h1 (x)、h2 (x)、h3 (x):散列值 211:DNA序列/資料集/DNA序列資料集 213:布隆過濾器/第一布隆過濾器 215:布隆過濾器/第二布隆過濾器 217、1217:散列表 402:主機 404、504、604、804、1104、1404:記憶體模組 406:記憶體通道 408、410:邏輯 510、610、810、910:記憶體元件 512、612、824、924:近記憶體計算模組 514、614:匯流排結構 516、616:記憶體通道介面 618、820、920:階級 700:系統 702、1102、1402:主機CPU 703、1103、1403:記憶體控制器 704:DIMM 826、926:暫存時脈驅動器 828:資料緩衝器/卡邊緣連接件 830:虛線 914:階層式匯流排結構 914a:資料匯流排 928:資料緩衝器 932、1032:處理組件 934:控制模組 936:記憶體控制器/模組側記憶體控制器 938:工作負載監控器 940:匯流排控制器 942:輸入緩衝器 944:輸出緩衝器 946:多工器 948:解多工器 1050:緩衝器/輸入緩衝器 1051:回饋連接 1052:散列模組 1054:位址轉譯模組 1211:DNA序列 1211a、1311:ATC 3-mer 1213:第一全域布隆過濾器 1215:第二全域布隆過濾器 1219:第一本地布隆過濾器 1221:第二本地布隆過濾器 1223、1323:最終散列表 1319:本地計數布隆過濾器 1321:全域布隆過濾器 1702、1704、1706、1708、1710、1712、1714:操作 BF-1:第二記憶體存取 CH1、CH2、CH3、CH4:記憶體通道 EN:賦能訊號 ①:第一布隆過濾器構建操作 ②:第一合併操作 ③:第二布隆過濾器構建操作 ④:第二合併操作
各圖未必按比例繪製,且出於例示目的,在所有圖中具有相似的結構或功能的組件可一般由相同的參考編號或其部分表示。各圖僅旨在利於達成對本文中闡述的各種實施例的說明。各圖並未闡述本文中所揭露的教示內容的每個態樣,且不對申請專利範圍的範圍進行限制。為防止圖式變得模糊,可能並未示出所有的部件、連接及類似物,且並非所有的部件皆可具有參考編號。然而,部件配置的圖案在圖式中可容易地顯而易見。附圖與說明書一同示出本揭露的示例性實施例,且與說明一同用於闡釋本揭露的原理。
圖1示出根據本揭露示例性實施例的k-mer計數方法的實施例。 圖2示出根據本揭露示例性實施例的k-mer計數方法及資料結構的實施例。 圖3示出根據本揭露示例性實施例的用於k-mer計數方法的布隆過濾器的實施例。 圖4示出根據本揭露示例性實施例的近資料處理系統的實施例。 圖5示出根據本揭露示例性實施例的具有近資料處理能力的記憶體模組的實施例。 圖6示出根據本揭露示例性實施例的具有多個階級及近資料處理能力的記憶體模組的實施例。 圖7示出根據本揭露示例性實施例的近資料處理系統的示例性實施例。 圖8示出根據本揭露示例性實施例的記憶體模組的示例性實施例。 圖9示出根據本揭露示例性實施例的記憶體模組的階級或其部分的更詳細的示例性實施例。 圖10示出根據本揭露示例性實施例的處理組件的示例性實施例。 圖11A示出根據本揭露示例性實施例的第一布隆過濾器構建操作及第二布隆過濾器構建操作的實施例。 圖11B示出根據本揭露示例性實施例的第一合併操作及第二合併操作的實施例。 圖11C示出根據本揭露示例性實施例的計數操作的實施例。 圖12示出根據本揭露示例性實施例的使用全域資料集的k-mer計數方法的實施例。 圖13示出根據本揭露示例性實施例的k-mer計數方法工作流程的實施例。 圖14A示出根據本揭露示例性實施例的計數布隆過濾器構建操作的實施例。 圖14B示出根據本揭露示例性實施例的合併操作的實施例。 圖14C示出根據本揭露示例性實施例的計數操作的實施例。 圖15A示出根據本揭露示例性實施例的用於記憶體元件的聯合位址映射方案的實施例。 圖15B示出根據本揭露示例性實施例的用於記憶體元件的散佈位址映射方案的另一實施例。 圖16A示出根據本揭露示例性實施例的用於布隆過濾器的順序記憶體存取方法的示例性實施例。 圖16B示出根據本揭露示例性實施例的用於布隆過濾器的散佈記憶體存取方法的示例性實施例。 圖17示出根據本揭露示例性實施例的處理資料集的方法的實施例。
402:主機
404:記憶體模組
406:記憶體通道
408、410:邏輯

Claims (20)

  1. 一種記憶體模組,包括: 一或多個記憶體元件;以及 近記憶體計算模組,耦合至所述一或多個記憶體元件,所述近記憶體計算模組包括: 一或多個處理組件,被配置成處理來自所述一或多個記憶體元件的資料;以及 記憶體控制器,被配置成協調自主機及所述一或多個處理組件對所述一或多個記憶體元件的存取。
  2. 如請求項1所述的記憶體模組,其中所述一或多個處理組件中的至少一者被配置成藉由對來自所述一或多個記憶體元件的資料實行計數操作來處理所述資料。
  3. 如請求項1所述的記憶體模組,其中所述近記憶體計算模組被配置成基於第一晶片選擇訊號控制所述一或多個記憶體元件中的第一記憶體元件,且基於第二晶片選擇訊號控制所述一或多個記憶體元件中的第二記憶體元件。
  4. 如請求項1所述的記憶體模組,其中所述一或多個記憶體元件及所述近記憶體計算模組被佈置為第一階級,所述記憶體模組更包括: 第二階級;以及 階層式匯流排結構,被配置成在所述第一階級與所述第二階級之間傳送資料。
  5. 如請求項4所述的記憶體模組,其中: 所述一或多個記憶體元件包括一或多個第一記憶體元件,所述近記憶體計算模組包括第一近記憶體計算模組,且所述一或多個處理組件包括一或多個第一處理組件;並且 所述第二階級包括: 一或多個第二記憶體元件;以及 第二近記憶體計算模組,耦合至所述一或多個第二記憶體元件,所述第二近記憶體計算模組包括: 一或多個第二處理組件,被配置成處理來自所述一或多個第二記憶體元件的資料;以及 第二記憶體控制器,被配置成協調自主機及所述一或多個第二處理組件對所述一或多個第二記憶體元件的存取。
  6. 如請求項1所述的記憶體模組,其中: 所述記憶體模組更包括階層式匯流排結構;並且 所述近記憶體計算模組更包括: 輸入緩衝器,耦合於所述階層式匯流排結構與所述一或多個處理組件之間;以及 輸出緩衝器,耦合於所述階層式匯流排結構與所述一或多個處理組件之間。
  7. 如請求項1所述的記憶體模組,其中所述近記憶體計算模組更包括工作負載監控器,所述工作負載監控器被配置成平衡所述一或多個處理組件中的第一處理組件的第一工作負載與所述一或多個處理組件中的第二處理組件的第二工作負載。
  8. 一種處理資料集的方法,所述方法包括: 將所述資料集的第一部分分配至第一記憶體模組; 將所述資料集的第二部分分配至第二記憶體模組; 基於所述資料集的所述第一部分在所述第一記憶體模組處構建第一本地資料結構; 基於所述資料集的所述第二部分在所述第二記憶體模組處構建第二本地資料結構;以及 合併所述第一本地資料結構與所述第二本地資料結構。
  9. 如請求項8所述的方法,其中: 合併所述第一本地資料結構與所述第二本地資料結構形成經合併資料結構;並且 所述方法更包括在所述第一記憶體模組及所述第二記憶體模組處對所述經合併資料結構實行計數操作。
  10. 如請求項7所述的方法,其中: 合併所述第一本地資料結構與所述第二本地資料結構包括縮減所述第一本地資料結構及所述第二本地資料結構; 縮減所述第一本地資料結構及所述第二本地資料結構形成經合併資料結構;並且 所述方法更包括將所述經合併資料結構散佈至所述第一記憶體模組及所述第二記憶體模組。
  11. 如請求項7所述的方法,更包括將所述資料集的所述第一部分分配至所述第一記憶體模組處的二或更多個記憶體元件。
  12. 如請求項11所述的方法,更包括將所述資料集的所述第一部分分配至所述第一記憶體模組處的二或更多個階級。
  13. 如請求項7所述的方法,其中: 構建所述第一本地資料結構是由第一處理組件及第二處理組件實行;並且 所述方法更包括平衡所述第一處理組件的第一工作負載與所述第二處理組件的第二工作負載。
  14. 如請求項8所述的方法,更包括在第一任務與第二任務之間交錯進行對所述資料集的所述第一部分的記憶體存取。
  15. 如請求項14所述的方法,更包括在對所述資料集的所述第一部分的記憶體存取之間在所述第一任務與所述第二任務之間進行切換。
  16. 如請求項7所述的方法,其中合併所述第一本地資料結構與所述第二本地資料結構形成第一經合併資料結構,所述方法更包括: 將所述第一經合併資料結構散佈至所述第一記憶體模組及所述第二記憶體模組; 基於所述第一經合併資料結構在所述第一記憶體模組處構建第三本地資料結構; 基於所述第一經合併資料結構在所述第一記憶體模組處構建第四本地資料結構; 合併所述第三本地資料結構與所述第四本地資料結構以形成第二經合併資料結構;以及 在所述第一記憶體模組及所述第二記憶體模組處對所述第二經合併資料結構實行計數操作。
  17. 如請求項7所述的方法,其中: 所述資料集包括基因序列; 所述第一本地資料結構包括布隆過濾器;並且 所述布隆過濾器包括所述基因序列的一或多個k-mer。
  18. 一種系統,包括: 第一記憶體模組,被配置成基於資料集的第一部分構建第一本地資料結構; 第二記憶體模組,被配置成基於所述資料集的第二部分構建第二本地資料結構;以及 主機,藉由一或多個記憶體通道耦合至所述第一記憶體模組及所述第二記憶體模組,其中所述主機被配置成: 將所述資料集的所述第一部分分配至所述第一記憶體模組; 將所述資料集的所述第二部分分配至所述第二記憶體模組;以及 合併所述第一本地資料結構與所述第二本地資料結構。
  19. 如請求項18所述的系統,其中: 所述第一本地資料結構與所述第二本地資料結構形成經合併資料結構;並且 所述主機更被配置成將所述經合併資料結構散佈至所述第一記憶體模組及所述第二記憶體模組。
  20. 如請求項19所述的系統,其中所述第一記憶體模組被配置成對所述經合併資料結構實行計數操作。
TW110115844A 2020-05-07 2021-05-03 處理資料集的方法及系統、以及記憶體模組 TW202211034A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063021675P 2020-05-07 2020-05-07
US63/021,675 2020-05-07
US17/214,778 US20210349837A1 (en) 2020-05-07 2021-03-26 Systems, methods, and devices for near data processing
US17/214,778 2021-03-26

Publications (1)

Publication Number Publication Date
TW202211034A true TW202211034A (zh) 2022-03-16

Family

ID=75870417

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110115844A TW202211034A (zh) 2020-05-07 2021-05-03 處理資料集的方法及系統、以及記憶體模組

Country Status (5)

Country Link
US (1) US20210349837A1 (zh)
EP (1) EP3910488A1 (zh)
KR (1) KR20210136881A (zh)
CN (1) CN113628647A (zh)
TW (1) TW202211034A (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230095775A (ko) 2021-12-22 2023-06-29 에스케이하이닉스 주식회사 Ndp 기능을 포함하는 메모리 확장 장치 및 이를 포함하는 가속기 시스템
US11625251B1 (en) 2021-12-23 2023-04-11 Advanced Micro Devices, Inc. Mechanism for reducing coherence directory controller overhead for near-memory compute elements
US20230281128A1 (en) * 2022-03-03 2023-09-07 Samsung Electronics Co., Ltd. Cache-coherent interconnect based near-data-processing accelerator
US11977782B2 (en) * 2022-06-30 2024-05-07 Advanced Micro Devices, Inc. Approach for enabling concurrent execution of host memory commands and near-memory processing commands
US20240086100A1 (en) * 2022-09-12 2024-03-14 Micron Technology, Inc. Sequence alignment with memory arrays

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078544A1 (en) * 2002-10-18 2004-04-22 Silicon Integrated Systems Corporation Memory address remapping method
JP2004213104A (ja) * 2002-12-26 2004-07-29 Fujitsu Ltd データ提供方法、データ提供プログラムおよびデータ提供装置
US20080005516A1 (en) * 2006-06-30 2008-01-03 Meinschein Robert J Memory power management through high-speed intra-memory data transfer and dynamic memory address remapping
US8103853B2 (en) * 2008-03-05 2012-01-24 The Boeing Company Intelligent fabric system on a chip
US20130138923A1 (en) * 2011-11-30 2013-05-30 International Business Machines Multithreaded data merging for multi-core processing unit
US9378135B2 (en) * 2013-01-08 2016-06-28 Violin Memory Inc. Method and system for data storage
WO2014200991A1 (en) * 2013-06-10 2014-12-18 University Of Virginia Patent Foundation System, method and computer readable medium for rapid dna identification
US20160299874A1 (en) * 2013-11-08 2016-10-13 Silicon Graphics International Corp. Shared memory eigensolver
US10185499B1 (en) * 2014-01-07 2019-01-22 Rambus Inc. Near-memory compute module
US10303662B1 (en) * 2015-09-30 2019-05-28 EMC IP Holding Company LLC System and method for efficiently measuring physical space for an ad-hoc subset of files in protection storage filesystem with stream segmentation and data deduplication
US10198349B2 (en) * 2016-09-19 2019-02-05 Advanced Micro Devices, Inc. Programming in-memory accelerators to improve the efficiency of datacenter operations
KR102649048B1 (ko) * 2016-11-02 2024-03-18 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US10656859B2 (en) * 2017-03-01 2020-05-19 Tintri By Ddn, Inc. Efficient deduplication for storage systems
US10719512B2 (en) * 2017-10-23 2020-07-21 International Business Machines Corporation Partitioned bloom filter merge for massively parallel processing clustered data management
WO2019114979A1 (en) * 2017-12-15 2019-06-20 Huawei Technologies Co., Ltd. Transparent lrdimm mode and rank disaggregation for use with in-memory processing
US10922316B2 (en) * 2018-06-13 2021-02-16 Amazon Technologies, Inc. Using computing resources to perform database queries according to a dynamically determined query size

Also Published As

Publication number Publication date
KR20210136881A (ko) 2021-11-17
CN113628647A (zh) 2021-11-09
EP3910488A1 (en) 2021-11-17
US20210349837A1 (en) 2021-11-11

Similar Documents

Publication Publication Date Title
TW202211034A (zh) 處理資料集的方法及系統、以及記憶體模組
US11340794B2 (en) Multiprocessor system with independent direct access to bulk solid state memory resources
US10410693B2 (en) Multiprocessor system with independent direct access to bulk solid state memory resources
Akel et al. Onyx: A prototype phase change memory storage array
US7743191B1 (en) On-chip shared memory based device architecture
CN108121672A (zh) 一种基于NandFlash存储器多通道的存储阵列控制方法与装置
Jung et al. Sprinkler: Maximizing resource utilization in many-chip solid state disks
US20150106560A1 (en) Methods and systems for mapping a peripheral function onto a legacy memory interface
CN108874303B (zh) 非易失性存储器命令冲突避免的储存系统和方法
WO2015134941A1 (en) Multiprocessor system with independent direct access to bulk solid state memory resources
JP2016053983A (ja) メモリシステムコントローラを含む装置
US11029746B2 (en) Dynamic power management network for memory devices
KR20120105045A (ko) 스택 메모리에서의 에러 정정
CN107025181B (zh) 存取存储器单元的方法、分配存储器请求的方法、系统及存储器控制器
CN103744644A (zh) 采用四核结构搭建的四核处理器系统及数据交换方法
US11010054B1 (en) Exabyte-scale data processing system
JP7242170B2 (ja) メモリープールを有するコンピューティングシステムのためのメモリー分割
TWI520152B (zh) 資料儲存裝置與快閃記憶體控制方法
EP3462327A2 (en) Systems, methods and apparatus for memory access and scheduling
Ou et al. A scalable multi-channel parallel NAND flash memory controller architecture
CN109983443B (zh) 实现分叉非易失性存储器快速驱动器的技术
CN101930407B (zh) 闪速存储器控制电路及其存储系统与数据传输方法
JP6232936B2 (ja) 情報処理装置、記憶装置制御回路及び記憶装置の制御方法
Kim et al. Networked ssd: Flash memory interconnection network for high-bandwidth ssd
JP2012230554A (ja) データ記憶装置、メモリ制御装置及びメモリ制御方法