CN116701247A - 基于缓存一致性的互连的近数据处理加速器 - Google Patents
基于缓存一致性的互连的近数据处理加速器 Download PDFInfo
- Publication number
- CN116701247A CN116701247A CN202310172463.5A CN202310172463A CN116701247A CN 116701247 A CN116701247 A CN 116701247A CN 202310172463 A CN202310172463 A CN 202310172463A CN 116701247 A CN116701247 A CN 116701247A
- Authority
- CN
- China
- Prior art keywords
- cxl
- memory
- memory module
- switch
- data
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 114
- 230000015654 memory Effects 0.000 claims abstract description 412
- 238000000034 method Methods 0.000 claims abstract description 44
- 230000001427 coherent effect Effects 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 17
- 238000003860 storage Methods 0.000 claims description 32
- 238000004519 manufacturing process Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 9
- 230000009977 dual effect Effects 0.000 claims description 7
- 238000011331 genomic analysis Methods 0.000 description 25
- 239000000872 buffer Substances 0.000 description 19
- 238000013507 mapping Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 10
- 230000033001 locomotion Effects 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 9
- 238000010899 nucleation Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 5
- 238000007792 addition Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 241001465754 Metazoa Species 0.000 description 2
- OPTASPLRGRRNAP-UHFFFAOYSA-N cytosine Chemical compound NC=1C=CNC(=O)N=1 OPTASPLRGRRNAP-UHFFFAOYSA-N 0.000 description 2
- 201000010099 disease Diseases 0.000 description 2
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 2
- 239000003814 drug Substances 0.000 description 2
- UYTPUPDQBNUYGX-UHFFFAOYSA-N guanine Chemical compound O=C1NC(N)=NC2=C1N=CN2 UYTPUPDQBNUYGX-UHFFFAOYSA-N 0.000 description 2
- 238000007481 next generation sequencing Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- RWQNBRDOKXIBIV-UHFFFAOYSA-N thymine Chemical compound CC1=CNC(=O)NC1=O RWQNBRDOKXIBIV-UHFFFAOYSA-N 0.000 description 2
- 229930024421 Adenine Natural products 0.000 description 1
- GFFGJBXGBJISGV-UHFFFAOYSA-N Adenine Chemical compound NC1=NC=NC2=C1N=CN2 GFFGJBXGBJISGV-UHFFFAOYSA-N 0.000 description 1
- 208000025721 COVID-19 Diseases 0.000 description 1
- 241000711573 Coronaviridae Species 0.000 description 1
- 229960000643 adenine Drugs 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 229940104302 cytosine Drugs 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 229940079593 drug Drugs 0.000 description 1
- 239000000890 drug combination Substances 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000004374 forensic analysis Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000001415 gene therapy Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 231100000989 no adverse effect Toxicity 0.000 description 1
- 231100000590 oncogenic Toxicity 0.000 description 1
- 230000002246 oncogenic effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000009331 sowing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 229940113082 thymine Drugs 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17312—Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B20/00—ICT specially adapted for functional genomics or proteomics, e.g. genotype-phenotype associations
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B30/00—ICT specially adapted for sequence analysis involving nucleotides or amino acids
- G16B30/10—Sequence alignment; Homology search
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B30/00—ICT specially adapted for sequence analysis involving nucleotides or amino acids
- G16B30/20—Sequence assembly
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B50/00—ICT programming tools or database systems specially adapted for bioinformatics
- G16B50/30—Data warehousing; Computing architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computer Hardware Design (AREA)
- Biophysics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Medical Informatics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Biotechnology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Analytical Chemistry (AREA)
- Chemical & Material Sciences (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Bioethics (AREA)
- Mathematical Physics (AREA)
- Genetics & Genomics (AREA)
- Molecular Biology (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了存储器系统(115)。存储器系统(115)可以包括第一缓存一致性互连存储器模块(310)和第二缓存一致性互连存储器模块(310)。缓存一致性互连交换机(305)可以将第一缓存一致性互连存储器模块(310)、第二缓存一致性互连存储器模块(310)和处理器(110)连接。处理元件(315)可以处理存储在第一缓存一致性互连存储器模块(310)和第二缓存一致性互连存储器模块(310)中的至少一个上的数据。
Description
相关申请数据
本申请要求于2022年3月3日提交的美国临时专利申请序列号63/316,399的权益,该申请出于所有目的通过引用并入本文。
技术领域
本公开一般涉及存储器系统,更具体地,涉及包括用于近数据(near-data)处理的加速器的存储器系统。
背景技术
一些问题,诸如基因组学(genomics),可能涉及大量数据。当数据存储在存储器系统中时,将数据从存储器移动到处理器来处理数据可能经历瓶颈。此外,使用处理器来处理数据可能阻止处理器执行其他操作。
仍然需要对在不将数据移动到处理器的情况下处理存储器系统中的数据的方法。
发明内容
本公开的实施例可以包括存储器系统。计算快速链接(CXL)存储器模块可以经由CXL交换机连接到主机处理器。存储器系统中的处理元件可以处理存储在CXL存储器模块中的至少一个上的数据。
附图说明
下面描述的附图是可以如何实现本公开的实施例的示例,并且不旨在限制本公开的实施例。本公开的单独的实施例可以包括在特定附图中未示出的元素和/或可以省略在特定附图中示出的元素。附图旨在提供说明,可能不按比例。
图1示出了根据本公开的实施例的被配置为在存储器系统中执行近数据处理的机器。
图2示出了根据本公开的实施例的图1的机器的细节。
图3A示出了根据本公开的实施例的图1的存储器系统的细节。
图3B示出了根据本公开的其它实施例的图1的存储器系统的细节。
图4A示出了根据本公开的实施例的在图3A的存储器系统中可以如何访问数据。
图4B示出了根据本公开的实施例的在图3B的存储器系统中可以如何访问数据。
图5示出了根据本公开的实施例的图4A至图4B的加速器的细节。
图6示出了根据本公开的实施例的用于在图3A至图3B的存储器系统中执行近数据处理的示例进程的流程图。
图7示出了根据本公开的实施例的用于在图3A至图3B的存储器系统中执行近数据处理的示例进程的可替代流程图。
图8示出了根据本公开的实施例的用于从图3A至图3B的存储器系统中的存储器模块访问数据的示例进程的流程图。
具体实施方式
现在将详细参考本公开的实施例,其示例在附图中示出。在以下详细描述中,阐述了许多具体细节,以使得能够彻底理解本公开。然而,应该理解,本领域普通技术人员可以在没有这些具体细节的情况下实践本公开。在其他实例中,没有详细描述公知的方法、过程、组件、电路和网络,以免不必要地模糊实施例的各个方面。
将理解,尽管术语第一、第二等可以在本文中用来描述各种元素,但是这些元素不应该被这些术语所限制。这些术语仅用于区分一个元素和另一个元素。例如,在不脱离本公开的范围的情况下,第一模块可以被称为第二模块,并且类似地,第二模块可以被称为第一模块。
本文公开的描述中使用的术语仅出于描述特定实施例的目的,并不旨在限制本公开。如在本公开的描述和所附权利要求中所使用的,单数形式“一(a)”、“一个(an)”和“所述”也旨在包括复数形式,除非上下文另有清楚地指示。还应该理解,本文使用的术语“和/或”指的是并且涵盖一个或多个相关联的所列出的项目的任何和所有可能的组合。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元素和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或其群组(group)的存在或添加。附图的组件和特征不一定按比例绘制。
基因组学分析越来越重要。基因组学分析可以用于开发精确的药物,设计针对特定状况的药剂,研究进化,改进作物以包括特定的表型,执行法医分析,或设计基因疗法。
但是基因组学分析可能涉及处理大量的数据。要处理的生物数据量预期将比存储在互联网上的天文数据或视频数据大一个数量级。该数据可以存储在存储器系统中。
使用主机处理器来处理数据可能是低效的,因为重要的数据可能被移动到存储器中以支持数据的主机处理,这可能影响由主机处理器正在执行的其他操作。近数据加速是另一种可能性。但是近数据加速也可能涉及通信和编制(orchestration)延迟。在两个情况中,存储器访问和带宽可能成为执行基因组学分析的瓶颈。
本公开的实施例可以在存储器系统内执行近数据处理。处理元件可以位于例如存储器模块内。使用计算快速链接(CXL)协议或一些其他缓存一致性互连协议,可以从存储器模块访问数据。CXL或其他缓存一致性互连协议可以以比可以用于向主机处理器传送数据更高的带宽提供数据。处理元件可以被设计成执行特定的近数据处理任务,因此可以比执行命令的通用处理器更有效地执行这些任务。例如,在基因组学分析中,只有四种碱基(base):腺嘌呤(A)、胞嘧啶(C)、鸟嘌呤(G)和胸腺嘧啶(T)。可以仅使用2位数据来区分这四个碱基,因此可以使用两位算术,这可能比使用32位或64位处理器来执行算术更有效。
本公开的实施例可以扩展到除了基因组学分析之外的使用近似数据处理来解决的问题:例如,图形处理或机器学习。
本公开的实施例可以支持存储器扩展,即使存储器模块本身不包括近数据处理。
图1示出了根据本公开的实施例的被配置为在存储器系统中执行近数据处理的机器。在图1中,机器105也可以称为主机或系统,可以包括处理器110、存储器系统115和存储设备120。处理器110可以是各种处理器。(为了便于说明,处理器110以及下面讨论的其他组件被示出在机器外部:本公开的实施例可以在机器内包括这些组件)。虽然图1示出了单个处理器110,但是机器105可以包括任何数量的处理器,每个处理器可以是单核或多核处理器,每个处理器可以实现精简指令集计算机(RISC)架构或复杂指令集计算机(CISC)架构(以及其他可能性),并且可以以任何期望的组合混合。
处理器110可以耦合到存储器系统115。存储器系统115可以是各种存储器,诸如闪存、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、永久随机存取存储器、铁电随机存取存储器(FRAM)或非易失性随机存取存储器(NVRAM),诸如磁阻随机存取存储器(MRAM)等。根据所期望的,存储器系统115可以是易失性或非易失性存储器。存储器系统115也可以是不同存储器类型的任何期望的组合,并且可以由存储器控制器125管理。存储器系统115可以用于存储可以被称为“短期”的数据:即,不期望被存储延长的时间段的数据。短期数据的示例可以包括临时文件、由应用在本地使用的数据(可能已从其他存储位置复制)等。下面参考图3A至图3B进一步讨论存储器系统115。
处理器110和存储器系统115还可以支持操作系统,各种应用可以在该操作系统下运行。应用程序可以发布请求(也可以称为命令),以从任一存储器系统115读取数据或向其写入数据。当存储设备120用于支持经由某种文件系统读取或写入数据的应用时,可以使用设备驱动器130来访问存储设备120。虽然图1示出了一个存储设备120,但是机器105中可以有任何数量(一个或多个)的存储设备。存储设备120可以各自支持任何期望的一个或多个协议,包括例如非易失性存储器快速(NVMe)协议。不同的存储设备120可以支持不同的协议和/或接口。
虽然图1使用通用术语“存储设备”,但是本公开的实施例可以包括可以受益于计算存储单元的使用的任何存储设备格式,其示例可以包括硬盘驱动器和固态驱动器(SSD)。下面对“SSD”的任何引用都应该被理解为包括本公开的这样的其他实施例。此外,不同类型的存储设备可以混合。例如,一个存储设备120可以是硬盘驱动器,而另一个存储设备120可以是SSD。
图2示出了根据本公开的实施例的图1的机器的细节。在图2中,典型地,机器105包括一个或多个处理器110,处理器110可以包括存储器控制器120和时钟205,它们可以用于协调机器的组件的操作。处理器110还可以耦合到存储器系统115,作为示例,存储器系统115可以包括随机存取存储器(RAM)、只读存储器(ROM)或其他状态保存介质。处理器110还可以耦合到存储设备120和网络连接器210,网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可以连接到总线215,用户接口220和可以使用输入/输出(I/O)引擎225管理的I/O接口端口以及其他组件可以附接到总线215。
图3A示出了根据本公开的一些实施例的图1的存储器系统115的细节。在图3A中,处理器110可以连接到交换机305-1和305-2。在图3A中,交换机305-1和305-2(可以统称为交换机305)可以是缓存一致性的互连交换机:例如,交换机305-1和305-2可以是计算快速链路(CXL)交换机。对CXL的任何进一步引用可以被理解为概括为任何缓存一致性互连适当元件:例如,对CXL存储器模块的引用可以被理解为包括任何缓存一致性互连存储器模块,或者对CXL协议的引用可以被理解为包括任何缓存一致性互连协议。虽然图3A示出了两个CXL交换机305-1和305-2,但是本公开的实施例可以包括任意数量的CXL交换机。
CXL交换机305也可以连接到CXL存储器模块310-1到310-6(它们可以统称为存储器模块310):CXL交换机305-1可以连接到CXL存储器模块310-1到310-3,CXL交换机305-2可以连接到CXL存储器模块310-4到310-6。CXL存储器模块310可以是任何期望类型的存储器模块:例如,CXL存储器模块310可以是双列直插式存储器模块(DIMM),并且可以用作DRAM。虽然图3A示出了连接到三个CXL存储器模块310(总共六个CXL存储器模块310)的每个CXL交换机305,但是本公开的实施例可以包括任意数量的CXL存储器模块310,并且可以具有连接到每个CXL交换机305的任意数量的CXL存储器模块310。
在图3A中,CXL交换机305还可以包括处理元件。例如,CXL交换机305-1被示为包括处理元件315。处理元件315可以对存储在CXL存储器模块310中的数据执行近数据处理。虽然图3A示出了包括处理元件315的两个CXL交换机305,但是本公开的实施例可以在一些而不是全部CXL交换机305中包括处理元件315。
CXL交换机305和CXL存储器模块310可以使用CXL链路来连接。CXL链路可以供应比例如连接存储器模块310和处理器110的链路更高的带宽。结果,处理元件315可能能够比处理器110可能能够从CXL存储器模块310访问数据更快地访问相同数据。
图3B示出了根据本公开的其它实施例的图1的存储器系统115的细节。在图3B中,处理器、CXL交换机305和CXL存储器模块310类似于图3A中的那些。但是不是处理元件315处于CXL交换机305中,而是处理元件315可以被包括在CXL存储器模块310中。
图4A示出了根据本公开的实施例的在图3A的存储器系统115中可以如何访问数据。在图4A中,例如CXL交换机305-1中的处理元件315可以从CXL存储器模块310-1访问数据,因为CXL存储器模块310-1被示为连接到CXL交换机305-1,如路径405-1所示。对于从连接到CXL交换机305-1的其他CXL存储器模块310-2和310-3访问数据来说也是如此。
但是CXL交换机305-1中的处理元件315也可以从例如CXL存储器模块310-5访问数据,即使CXL存储器模块310-5没有直接连接到CXL交换机305-1。例如,可以使用处理器110从CXL交换机305-1访问CXL交换机305-2。由于CXL存储器模块310-5可以连接到CXL交换机305-1,CXL交换机305-1中的处理元件315可以使用处理器110和CXL交换机305-2从CXL存储器模块310-5访问数据,如路径405-2所示。
在本公开的一些实施例中,处理元件315可以直接被包括在交换机305中。但是在本公开的其他实施例中,处理元件315可以被包括在加速器中,诸如加速器410-1。加速器410-1可以直接实现为CXL交换机305的部分,或者加速器410-1可以实现为可以安装在CXL交换机305内或者连接到CXL交换机305的分离的组件。加速器410-1可以使用中央处理单元(CPU)或一些其他处理器(诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)或片上系统(SoC))、图形处理单元(GPU)、通用GPU(GPGPU)、数据处理单元(DPU)、神经处理单元(NPU)、网络接口卡(NIC)或张量处理单元(TPU)等来实现。下面参考图5进一步讨论加速器410-1。
图4B示出了根据本公开的实施例的在图3B的存储器系统115中可以如何访问数据。在图4B中,处理元件315可以被实现为CXL存储器模块310的部分。如以上参考图4A所讨论的,处理元件可以被实现为加速器的部分,诸如加速器410-2。(图4A的加速器410-1和410-2可以统称为加速器410。)与图4A的加速器410-1一样,加速器410-2可以直接实现为CXL存储器模块310的部分,或者加速器410-2可以实现为可以安装在CXL存储器模块310内或者连接到CXL存储器模块310的分离的组件。加速器410-2可以使用CPU或一些其他处理器(诸如FPGA、ASIC或SoC)、GPU、GPGPU、DPU、NPU、NIC或TPU等来实现。下面参考图5进一步讨论加速器410-2。
显然,CXL存储器模块310-1中的处理元件315可以从CXL存储器模块310-1访问数据。CXL存储器模块310-1中的处理元件315也可以跨CXL交换机305-1访问来自其他CXL存储器模块(诸如CXL存储器模块310-2)的数据,如路径405-3所示。并且CXL存储器模块310-1中的处理元件315可以使用处理器110和CXL交换机305-2来访问来自其他CXL存储器模块(诸如CXL存储器模块310-5)的数据,该其他CXL存储器模块没有直接连接到与CXL存储器模块310-1(在图4B中,CXL交换机305-1)相同的CXL交换机,如路径405-4所示。
虽然图3A至图4B的存储器系统115聚焦于使用CXL存储器模块315,但是本公开的实施例也可以包括可以使用CXL访问的其他形式的存储。例如,本公开的实施例可以包括CXL存储设备以及CXL存储器模块,尽管可能与存储器系统115分离,但是它们可以提供另外的存储。
图5示出了根据本公开的实施例的图4A至图4B的加速器410的细节。在图5中,加速器可以包括处理元件315、存储器控制器505、任务调度器510、输入缓冲器515和输出缓冲器520。存储器控制器505可以管理来自CXL存储器模块310的数据请求,而不需要由图1的处理器110(或图1的存储器控制器125)处理这样的请求。任务调度器可以调度任务以在处理元件310上执行。输入缓冲器515可以存储作为输入接收的数据(作为执行该命令的请求的一部分来自图1的处理器110,或者来自图3A至图3B的CXL存储器模块310),以供该命令处理。作为执行命令的一部分,处理元件310可以从输入缓冲器515读取数据。最后,输出缓冲器520可以存储由用于写入图3A至图3B的CXL存储器模块310的命令输出的数据。一旦命令完成,处理元件310可以将数据存储在输出缓冲器520中,用于稍后写入图3A至图3B的CXL存储器模块310中的一个(或多个);一旦输出被写入,并且处理元件310通知图1的处理器110该命令已经完成执行,则图1的处理器110可以从该输出最终被写入的图3A至图3B的CXL存储器模块310的地方或者直接从输出缓冲器520访问该输出。
图6示出了根据本公开的实施例的用于在图3A至图3B的存储器系统115中执行近数据处理的示例进程的流程图。在图6中,在框605,图4A至图4B的加速器410(或图3A至图3B的处理元件315)可以从图1的处理器110接收对图3A至图3B的存储器系统115中的数据执行命令的请求。在框610,图3A至图3B的处理元件315可以从图3A至图3B的CXL存储器模块310中的一个(或多个)访问数据。如上所述,图3A至图3B的CXL存储器模块310可以包括图3A至图3B的处理元件315,或者可以是没有图3A至图3B的处理元件315的CXL存储器模块。在框615,图3A至图3B的处理元件315可以执行该命令。最后,在框620,图4A至图4B的加速器410(或者图3A至图3B的处理元件315)可以向图1的处理器110发送响应,通知图1的处理器110该命令已经被执行。
图7示出了根据本公开的实施例的用于在图3A至图3B的存储器系统115中执行近数据处理的示例进程的可替代流程图。图7类似于图6,但是增加了一些元素。在图7中,在框605,图4A至图4B的加速器410(或图3A至图3B的处理元件315)可以从图1的处理器110接收对图3A至图3B的存储器系统115中的数据执行命令的请求。在框610,图3A至图3B的处理元件315可以从图3A至图3B的CXL存储器模块310中的一个(或多个)访问数据。如上所述,图3A至图3B的CXL存储器模块310可以包括图3A至图3B的处理元件315,或者可以是没有图3A至图3B的处理元件315的CXL存储器模块。在框615,图3A至图3B的处理元件315可以执行该命令。在框705,图3A至图3B的处理元件315可以存储命令的结果:例如,结果可以存储在图3A至图3B的CXL存储器模块310之一中,或者存储在图5的输出缓冲器520中。在框620,图4A至图4B的加速器410(或者图3A至图3B的处理元件315)可以向图1的处理器110发送响应,通知图1的处理器110该命令已经被执行。最后,在框710,图1的处理器110可以从图3A至图3B的处理元件315存储结果的地方访问结果。图1的处理器110可以使用与图3A至图3B的适当的CXL存储器模块310的CXL链路,或者通过使用其他链路(例如,双数据速率(DDR)存储器访问)来访问结果。
图8示出了根据本公开的实施例的用于从图3A至图3B的存储器系统115中的存储器模块访问数据的示例进程的流程图。在图8中,在框805,图3A至图3B的处理元件315可以从连接到图3A至图3B的公共CXL交换机305的图3A至图3B的另一个CXL存储器模块310访问数据。可替代地,在框810,图3A至图3B的处理元件315可以使用图3A至图3B的多个CXL交换机305(也可能是图1的处理器110)从连接到图3A至图3B的另一个CXL交换机305的图3A至图3B的另一个CXL存储器模块310访问数据。
在图6至图8中,示出了本公开的一些实施例。但是本领域技术人员将认识到,通过改变方框的顺序、省略方框或包括附图中未示出的链接,本公开的其他实施例也是可能的。无论是否显式地(expressly)描述,流程图的所有这些变化都被认为是本公开的实施例。
本公开的实施例包括可以包括处理元件的缓存一致性互连存储器系统。处理元件可能能够使用具有存储器模块的缓存一致性互连链路(诸如CXL链路)来访问数据,这可以供应比主机处理器使用的链路更高带宽的技术优势。使用缓存一致性互连链路可以供应不与由主机处理器用来从存储器系统访问数据的其他链路竞争的技术优势。
该存储器系统可以供应可拓展性的技术优势,因为CXL存储器模块可以被添加到存储器系统以增加可用存储,即使没有另外的CXL存储器模块必须支持近数据处理本身。此外,存储器系统可以供应从诸如CXL存储设备的其他CXL存储元件访问数据的技术优势。
基因组学分析变得越来越重要,并且与日常生活越来越密切相关,因为它有助于了解复杂的人类疾病、精确的医疗保健、野生动物保护等等。例如,基因组学分析可能有助于理解和设计针对致癌突变的最佳药剂组合给药(cocktail)。此外,基因组学分析在应对全球疫情冠状病毒疾病2019(新冠肺炎)方面也有很大帮助。然而,随着下一代测序(NGS)技术的快速发展和精确医疗所要求的大量测序数据,基因组学数据的增长速度远远快于摩尔定律,对基因组学分析提出了巨大挑战。
由于基因组学分析的耗时事实,研究人员越来越关注其硬件加速。由于涉及大量数据、简单的计算操作和存储器受限的特征,基因组学分析中的许多应用非常适合近数据处理(NDP)。探索了许多不同的NDP方法来加速基因组学分析中的不同应用。
基于计算快速链路(CXL)协议的协议和硬件,可以提出用于基因组学分析的两个NDP加速器(可以称为CXL基因组)。首先,CXL基因组可以用于基因组学分析中的多种应用,而不是专注于单一应用。第二,CXL基因组可以避免消耗双倍数据速率(DDR)通道的带宽。对主机的性能可能没有副作用。第三,CXL接口,其可以具有比DDR通道更高的带宽,可以用于CXL基因组中的双列直插式存储模块(DIMM)间通信,可以缓解DIMM间通信的带宽瓶颈的问题。第四,CXL基因组可能支持存储器扩展。常规CXL-DIMM存储器模块可以用作CXL基因组中的存储器。第五,随着采用CXL,存储器分解可能成为趋势,CXL基因组可以为基因组学分析提供比基于DIMM的加速器改进的可扩展性和适应性。
如图3A至图3B所示,CXL基因组可以加速多种应用,并用于不同的场景。
CXL协议可以被利用,以使得通过用于加速器的CXL-DIMM来实现存储器扩展。这种想法可以在CXL基因组中实现,以改进其可扩展性和适应性,但这种想法也可以用于其他加速器。
与常规CXL-DIMM相比,图3A至图3B的CXL基因组可以实现高效的存储器访问。此外,CXL基因组可以支持本地原子存储器操作,这对于许多其他应用也是有用的。此外,数据打包/解包可以改进带宽利用率并降低能耗。
负载平衡、数据放置和地址映射可以用提议的集中式任务调度、层次感知数据放置以及位置和应用感知混合地址映射来解决。
基因组学分析可以检查人类疾病理解、精确医疗保健、野生动物保护等的基础。在典型的基因组学分析管道中可能有一些应用。用于基因组学分析的大多数加速器专注于单个应用。CXL基因组可以用于加速基因组学分析中至少三种存储器受限应用的不同算法:
DNA播种(seeding):作为DNA比对(alignment)中的瓶颈阶段的DNA播种是指将种子(短DNA子序列)匹配回长参考基因组的过程。DNA播种算法可以预先建立参考基因组的索引,以加速种子定位过程。FM索引和哈希索引可能是现代DNA比对器使用的两个主流种子索引。这两种方法都涉及简单的计算操作,即加法和哈希,并涉及大量的随机存储器访问,因此它们可能适合于NDP加速。
k-mer计数:k-mer计数是指对测序数据当中具有长度为k的DNA子串的出现进行计数的过程,即测序读数。k-mer计数在许多基因组学应用中是有用且耗时的,诸如纠错和从头基因组组装。k-mer计数中涉及的主要计算操作可能只是哈希和加法,而k-mer计数由于频繁访问布隆过滤器和哈希表而涉及大量细粒度的随机存储器访问。因此,k-mer计数可能也适用于NDP加速。
DNA预比对:在DNA播种后找到DNA比对的候选匹配位置后,可以执行种子扩展以检查在这些候选位置处提取的读取片段和长参考基因组之间的相似性。然而,种子扩展可能计算昂贵且耗时。为了减少在种子扩展阶段需要检查的候选匹配位置的量,读取映射器(read mappers)可以使用被称为DNA预比对的过滤方法。DNA预比对通过计数候选匹配位置附近匹配DNA碱基的数量来确定候选匹配位置是否有效。DNA预比对中主要计算机操作是简单的逐位比较和加法。类似于DNA播种和k-mer计数,DNA预比对也可能是NDP加速的候选。
计算快速链接(CXL):CXL是开放的行业标准互连。CXL在主机处理器和诸如智能I/O设备、加速器和存储器缓冲器的设备之间供应高带宽和低延迟的连接。CXL启用了用于异构处理和存储器系统的缓存一致性和存储器语义,以在不断发展的使用模式中优化性能。此外,CXL可以支持缓存线粒度(即,64字节)的存储器访问,并且支持切换(switch)以使得能够扇出(fan-out)到多个设备,这对于存储器扩展可能是有用的。
单个CXL链路上有三个动态复用的子协议:
CXL.io:基于外围设备组件互连快速(PCIe)规范,与设备发现、配置、寄存器访问、中断等相关。
CXL.cache:使CXL设备能够访问主机处理器的存储器。
CXL.mem:使主机处理器能够访问CXL设备的存储器。
CXL启用的三个示例使用用例如下所示:
类型1设备:没有自己的设备存储器的缓存设备和加速器,诸如网络接口控制器(NIC)。至于协议,CXL.io和CXL.cache可能涉及类型1设备。
类型2设备:具有自己的设备存储器的加速器,诸如GPU。至于协议,CXL中的所有三个子协议都可能涉及类型2设备。
类型3设备:存储器缓冲器,诸如主机处理器的存储器扩展。至于协议,CXL.io和CXL.mem可能涉及类型3设备。
图3A至图3B的CXL基因组的目标是利用CXL协议和硬件,构建用于基因组学分析的多应用加速器,提供更好的性能,并改进可扩展性和适应性。
为此,识别了两个类型的CXL基因组:一个使用CXL交换机中的处理元件,而另一个使用CXL DIMM中的处理元件。对于任一类型的CXL基因组,不需要对成本敏感的DRAM管芯进行修改。
当CXL基因组可以在如图3A所示的CXL交换机中实现时,计算逻辑和控制逻辑两者都可以集成在CXL交换机中。未经修改的CXL-DIMM可以用作存储器扩展。至于计算,可以将能够加速基因组学分析中的多种应用的NDP模块添加到CXL交换机。至于存储器,CXL基因组可以利用由CXL链路提供的CXL-DIMM的高存储器带宽,而不会干扰主机的DDR带宽。至于通信,可以在CXL交换机中添加CXL总线,以减少数据移动并支持数据路由。
当CXL基因组可以在如图3A所示的CXL交换机中实现时,可能不需要制造具有CXL接口的专用加速器并将其插入CXL插槽。此外,借助于未经修改的CXL-DIMM,存储器扩展可能变得容易和方便。
当CXL基因组可以在如图3B所示的CXL-DIMM中实现时,计算逻辑可以集成到定制的基于CXL-DIMM的加速器(可以称为CXLG-DIMM)中,而控制逻辑可以分离到CXL交换机和CXLG-DIMM中的任一个或两个中。未经修改的CXL-DIMM可以用作CXL基因组的存储器扩展。至于计算,NDP模块可以放在CXLG-DIMM内,以利用高的DIMM内的带宽。至于存储器,除了DIMM内的存储列(rank)级别并行性,与MEDAL类似,CXL基因组可以向不同的DRAM芯片提供单独的芯片选择(CS)信号,以启用细粒度的存储器访问,并充分利用可用的存储器带宽。至于通信,可以在CXL交换机中添加CXL总线,以减少数据移动并支持数据路由。
当CXL基因组可以在如图3B所示的CXL-DIMM中实现时,CXL基因组可以利用更高的DIMM内的存储器储器带宽。第二,通过向系统中添加更多的CXLG-DIMM,可以方便和容易地扩展CXL基因组中的计算能力。第三,CXL交换机中可能不需要专用逻辑。CXL交换机中的控制逻辑可以是通用的,并且也可以用于其他加速器/应用。
如图3A所示的CXL基因组的高级别架构可以包括NDP模块、CXL总线和总线控制器作为CXL交换机一部分。
NDP模块可以包括各种组件:
拆包器(Depacker):拆包器可以解包和分离来自远程存储器请求的细粒度数据传入。在解包过程结束之后,解包器可以将数据转发到输入缓冲器。
输入缓冲器:输入缓冲器可以接收到NDP模块的输入,包括来自其他CXLG-DIMM的远程存储器请求和从本地/远程存储器请求返回的数据。对于来自其他CXLG-DIMM的远程存储器请求,这些请求可以被转发到DIMM侧存储器控制器(MC),并且可以在那里等待被发布。对于从本地/远程存储器请求返回的数据,数据可以从拆包器传递到输入缓冲器。然后,数据可以被转发到任务调度器,并且任务调度器中对应的数据状态被设置为“就绪”。
任务调度器:任务调度器可以存储不活动的任务,包括从存储器中读出的新任务和等待操作数(operand)就绪的任务两者。如果任务调度器发现(find)队列中没有足够的任务要处理,则可以从存储器中读出新的任务。那些新任务可以被分配给需要处理更多任务的处理元件(PE)。对于等待操作数的任务,如果操作数未就绪,PE可以将它们推回到任务调度器中。当相关的存储器请求完成时,操作数的状态被设置为“就绪”,并且这些任务可以被推回到PE以进行处理。
PE:NDP模块中可以包括多个PE。为了减少硬件开销,可以针对期望的加速来分析应用和算法中的主要操作。这里,可以示出那些应用和算法共享一些基本操作。然后,可以示出由一些基本计算单元组成的可配置PE的设计。基因组学分析中的目标应用和算法的加速可以通过那些基本计算单元的适当配置来实现。在本公开的一些实施例中,PE可能能够加速基因组学分析中三种不同应用的四种算法,包括DNA播种、K-mer计数和DNA预比对,使得CXL基因组适用于基因组学分析中的不同使用场景。此外,PE还可以帮助执行CXL基因组中的原子存储器操作。
至于输入,可以接收来自任务调度器的任务。至于输出,存储器请求和最终结果可能被发送到地址转换器以获得物理地址。如果PE中的活动任务正在等待存储器请求,为了充分利用可用的硬件资源并改进计算效率,PE可以将该任务放入任务调度器,并且属于该任务的操作数的对应数据状态可以被设置为“未就绪”。同时,PE可以切换到处理另一个等待的任务,该任务的操作数已经准备好。
地址转换器:地址转换器可以接收来自PE的输出存储器请求,并将存储器请求转换成它们的物理地址。如果存储器请求的目的地是连接到该CXL交换机的CXL-DIMM,则地址转换器可以将存储器请求发送到交换机侧MC,否则,存储器请求可以被转发到目标CXL交换机上的交换机侧MC。
交换机侧存储器控制器:在CXL基因组的一些实施例中,NDP模块中的交换机侧MC可以负责维护DRAM状态,并处理与和该交换机连接的CXL-DIMM相关的存储器请求,从而消除对主机的不必要的流量。首先与那些CXL-DIMM相关的所有存储器请求可以被收集在交换机侧MC中。那么那些存储器请求可以在那里发布。
打包器:打包器可以在将细粒度数据发送到输出缓冲器之前将它们打包在一起,从而改进带宽利用率并降低能耗。
输出缓冲器:输出缓冲器可以接收来自打包器的存储器请求。当所需的通信资源可用时,可以将存储器请求发送到它们的目的地。
多路复用器(MUX):MUX可以控制到NDP模块的输入和输出的路由。
除了NDP模块,CXL总线和总线控制器也可以添加到CXL交换机:
CXL总线:CXL总线可以包括用于请求、响应和数据的三个通道。CXL总线可以被添加到CXL交换机,以支持同一CXL交换机内的不同虚拟CXL交换机(VCS)和定制的交换机逻辑之间的有效通信,从而消除CXL交换机和主机之间不必要的通信。
总线控制器:总线控制器可以负责CXL交换机内的通信和数据路由的调节。
图3B所示的CXL基因组的高级别架构可以包括基于定制的CXL-DIMM的加速器,即CXLG-DIMM。与图3A所示的CXL基因组相比,图3B的CXLG-DIMM可以包括NDP模块。除了NDP模块中的MC可能成为DIMM侧MC之外,NDP模块中的大多数组件可能与上面讨论的相同。DIMM侧MC可以负责向CXLG-DIMM中的本地DRAM芯片发布存储器请求,包括从本地PE生成的存储器请求和从其他CXLG-DIMM发送的远程存储器请求两者。与这些本地DRAM芯片相关的所有存储器请求可以首先聚集在DIMM侧MC中。那么那些存储器请求可以在那里发布。
在图3B所示的CXL基因组的高级别架构中,可以从CXL交换机中移除NDP模块,并且可以添加三个组件-原子引擎、交换机侧MC和打包器/拆包器。总线控制器可以保持相同。
原子引擎:原子引擎可以与交换机侧MC协作来执行原子存储器操作。最初,交换机侧MC发布存储器请求,以取回原子存储器操作的目标数据。接下来,交换机侧MC向原子引擎转发可能要求原子存储器操作的数据。然后,可以在原子引擎内执行所需的原子存储器操作。在原子存储器操作已经完成之后,结果可以被发送回交换机侧MC。最后,交换机侧MC可以将最终结果写入回存储器。
交换机侧存储器控制器:因为在CXL交换机内可能有属于不同VCS的多个CXLG-DIMM,并且这些CXLG-DIMM可以独立地发布它们自己的存储器请求,所以可以使用集中的MC来管理所有这些存储器请求并维护DRAM状态。因此,交换机侧MC可以被添加到CXL交换机中。交换机侧MC可以负责维护DRAM状态,并处理与和该CXL交换机连接的CXL-DIMM相关的存储器请求,从而消除对主机的不必要的流量。
打包器/拆包器:类似于NDP模块中的打包器和拆包器,CXL交换机中的打包器/拆包器也可以在发送经由CXL交换机传送的细粒度数据之前/接收经由CXL交换机传送的细粒度数据之后对其进行打包/解包,以改进带宽消耗并降低能耗。
因为如图3A至图3B所示的CXL基因组可以支持使用常规CXL-DIMM作为存储器扩展,这改进了CXL基因组的可扩展性和适应性,所以CXL-DIMM中的数据可能需要可被NDP模块访问。有效支持从NDP模块对常规CXL-DIMM进行存储器访问的挑战是关于主机和CXL交换机之间的冗余数据移动。
当使用如图3A所示的CXL基因组时,因为CXL是一致性协议,去往/来自CXL-DIMM的存储器请求、响应和数据可能需要通过具有简单实施方式的主机。为了解决这个问题,可以将CXL-DIMM中的相关存储器空间设置为设备存储器,并利用CXL协议将CXL交换机上的NDP模块设置为设备偏置模式。根据CXL协议,当设置为设备偏置模式时,加速器可以访问设备存储器,而无需询问主机。由于CXL-DIMM中的存储器空间可以设置为设备存储器,因此CXL交换机上的NDP模块可以直接访问CXL-DIMM,而无需询问主机。因为需要MC来维护不同CXL-DIMM的DRAM状态并发布存储器请求,所以除了不需要响应消息之外,存储器请求和数据仍然可以通过主机。为了移除那些不必要的数据移动,可以将交换机侧MC和CXL总线添加到CXL交换机,以启用本地存储器发布和数据路由。在如图3A所示的CXL基因组中,在逐步设计优化之后,可以消除主机和CXL交换机之间的冗余数据移动,并且可以实现对常规CXL-DIMM的高效存储器访问。
当使用如图3B所示的CXL基因组时,可以使用对具有简单实施方式的常规CXL-DIMM的存储器访问流量。CXL-DIMM中的存储器空间可以被设置为设备存储器,并且CXLG-DIMM可以被设置为设备偏置模式。在同一个CXL交换机中可能有属于不同VCS的多个CXLG-DIMM,并且这些CXLG-DIMM独立地向CXL-DIMM发布存储器请求。管理来自不同CXLG-DIMM的所有那些存储器请求并维护CXL-DIMM的DRAM状态的集中式MC可以用于管理这样的存储器请求。因此,交换机侧MC和CXL总线也可以被添加到CXL交换机,以支持本地化的存储器管理和数据路由。在如图3B所示的CXL基因组中,在逐步设计优化之后,可以消除主机和CXL交换机之间的冗余数据移动,并且可以实现对常规CXL-DIMM的高效存储器访问。
在基因组学分析中,为了在不同应用内改进性能和利用可用的任务级别并行性,可以利用多任务。然而,对于多任务处理,读取-修改-写入(RMW)数据竞争,即同时读取和更新存储器可能导致不正确的结果是一担忧(concern)。例如,在并行处理k-mer计数期间,多个任务可能会尝试同时读取、增加、然后写入回同一个k-mer计数器。这些操作的不确定顺序可能导致k-mer计数器的不正确值。
原子存储器操作可以解决RMW数据竞争的问题,并且还减少流量和带宽消耗。此外,原子存储器操作对于许多不同应用的加速可能是有用的。由于这些原因,CXL基因组中的原子存储器操作可以能够解决RMW数据竞争的挑战。对于如图3A所示的CXL基因组,可能不需要额外的组件。对于如图3B所示的CXL基因组,可以将原子引擎添加到CXL交换机中。
对于在CXL基因组中执行原子存储器操作的工作流程,如图3A所示:1.NDP模块中的交换机侧MC向目标CXL-DIMM发布存储器请求以取回目标数据。2.数据可以被带回NDP模块中的CXL侧MC。3.数据也可以转发给可用的PE。4.算术运算可以在可用的PE内执行。5.算术操作之后的结果可以从PE发送回NDP模块中的交换机侧MC。6.NDP模块中的交换机侧MC可以发布存储器请求,以将结果写入回其原始位置。
在如图3B所示的CXL基因组中执行原子存储器操作的工作流程类似于如图3A所示的CXL基因组的工作流程。执行原子存储器操作的一个区别在于,算术操作可以在如图3A所示的CXL基因组中的PE中执行,而在如图3B所示的CXL基因组中,那些算术操作可以在原子引擎中执行。
基因组学分析中的应用可能涉及细粒度随机存储器访问,例如,32字节用于DNA播种,甚至1位用于k-mer计数。然而,CXL中的默认数据传送粒度是64字节,这远远高于实际有用的数据量,并导致不必要的带宽和能耗。解决这个问题的一个方式可以是在发送数据之前丢弃无用的数据并将有用的数据打包在一起。在接收到数据之后,打包的细粒度数据可以被解包和分离。这种方法可以消除无用数据的传送和移动,导致降低带宽和能耗。
数据打包和解包可以在打包器和解包器中进行。在如图3A所示的CXL基因组中,打包器和拆包器可以在CXL交换机中。在如图3B所示的CXL基因组中,CXLG-DIMM和CXL交换机两者都可以包含打包器和解包器,以尽可能减少或消除不必要的数据移动。此外,由于CXL交换机充当传送集线器,CXL交换机上的打包器和拆包器也可以根据目的地对数据进行解包、重分群组和重新打包。
为了更好地利用数据局部性并减少数据移动,可以使用层次感知数据放置。层次感知数据放置的一个想法是充分利用本地存储器,这提供了更短的延迟和更高的带宽。因此,在CXL基因组中,数据可以被放置到对应于存储器层次中的高级别的存储器位置。
为了启用高效的存储器访问,可以在NDP架构中使用地址映射。与为整个加速器提供一个固定地址映射方案不同,由于以下两个原因,可以使用位置和应用感知的混合地址映射方案:
在如图3A至图3B所示的CXL基因组中,存储器访问的粒度可以是多样的。CXLG-DIMM可以支持单独的芯片选择,以提供芯片级别的存储器可访问性,如果每存储列有16个DRAM芯片,则可访问性可以是4个字节。另一方面,CXL-DIMM可以是用于CXL基因组中的存储器扩展的未经修改的商业存储器组件。因此,对CXL-DIMM的存储器访问的粒度可以是64字节。
基因组学分析中不同应用的每次存储器请求所需的数据量可能变化。例如,DNA播种的每个存储器请求所需的数据量可能是32字节,但是k-mer计数的每个存储器请求所需的数据量可能只有1位。
顾名思义,位置和应用感知混合地址映射可以确定数据位置和应用类型两者上的地址映射方案。此外,多个地址映射方案可以在系统中共存。
默认的地址映射方案可以在不同的通道和存储列之间以连续的地址来交织数据,以便为主机充分利用来自不同通道和存储列的可用存储器带宽。对于CXL-DIMM,可以使用粗粒度的NDP感知地址映射。粗粒度的NDP感知地址映射可以在本地聚合每个存储列内的数据,而不是交织数据,以启用高效的本地存储器访问并减少数据移动。对于CXLG-DIMM,如果需要多次连续的细粒度存储器访问来访问目标数据,例如DNA播种,则可以使用细粒度和合并的地址映射。细粒度和合并的地址映射可以支持细粒度的存储器访问,并且可以在每个DRAM芯片内聚合数据以更好地利用局部性。另一方面,如果单次细粒度的存储器访问远足以访问目标数据,例如k-mer计数,则可以使用细粒度和分布式地址映射。粗粒度和分布式地址映射还可以支持细粒度的存储器访问,同时它尽可能地将数据分布到不同的DRAM芯片,以更好地利用芯片级别带宽和并行性。
以下讨论旨在提供其中可以实现本公开的某些方面的一个或多个合适机器的简要概括描述。一个或多个机器可以至少部分地由来自传统输入设备(诸如键盘、鼠标等)的输入、以及通过从另一台机器接收的指令、与虚拟现实(VR)环境的交互、生物反馈或其他输入信号来控制。如本文所使用的,术语“机器”旨在广泛地涵盖单个机器、虚拟机或通信地耦合的机器、虚拟机或一起操作的设备的系统。示例性机器包括计算设备,诸如个人计算机、工作站、服务器、便携式计算机、手持设备、电话、平板电脑等、以及运输设备,诸如私人或公共运输,例如,汽车、火车、出租车等。
一个或多个机器可以包括嵌入式控制器,诸如可编程或不可编程逻辑器件(Device)或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等。一个或多个机器可以利用到一个或多个远程机器的一个或多个连接,诸如通过网络接口、调制解调器或其他通信耦合。机器可以通过物理和/或逻辑网络互连,诸如内联网、互联网、局域网、广域网等。本领域技术人员将理解,网络通信可以利用各种有线和/或无线短程或远程载波和协议,包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11、光学、红外、电缆、激光等。
本公开的实施例可以通过参考或结合包括功能、进程、数据结构、应用程序等的关联的数据来描述,其在被机器访问时导致机器执行任务或定义抽象数据类型或低级别硬件上下文。关联的数据可以存储在例如易失性和/或非易失性存储器中,例如RAM、ROM等,或者存储在其他存储设备及其相关联的存储介质中,包括硬盘驱动器、软盘、光存储、磁带、闪存、记忆棒(memory stick)、数字视频盘、生物存储等。关联的数据可以以分组、串行数据、并行数据、传播信号等的形式在包括物理和/或逻辑网络的传输环境中递送,并且可以以压缩或加密格式使用。关联的数据可以在分布式环境中使用,并且被本地地和/或远程地存储以供机器访问。
本公开的实施例可以包括有形的、非暂时性的机器可读介质,该介质包括可由一个或多个处理器执行的指令,该指令包括执行如本文所述的本公开的元素的指令。
上述方法的各种操作可以由能够执行操作的任何合适的装置来执行,诸如各种硬件和/或软件组件、电路和/或模块。该软件可以包括用于实现逻辑功能的可执行指令的有序列表,并且可以实施在任何“处理器可读介质”中,以供指令执行系统、装置或设备(诸如单核或多核处理器或包含处理器的系统)使用或与之结合。
结合本文公开的实施例描述的方法或算法和功能的块或步骤可以直接实施在硬件、由处理器执行的软件模块或两者的组合中。如果在软件中实现,这些功能可以作为有形的非暂时性计算机可读介质上的一个或多个指令或代码来存储或发送。软件模块可以驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CD ROM或本领域已知的任何其他形式的存储介质中
已经参照所示实施例描述和示出了本公开的原理,将会认识到,所示实施例可以在布置和细节上进行修改而不背离这样的原理,并且可以以任何期望的方式进行组合。并且,尽管前面的讨论集中在特定的实施例上,但是也可以考虑其他的配置。具体地,尽管在本文使用了诸如“根据本公开的实施例”等的表述,但是这些短语旨在一般地指代实施例的可能性,并不旨在将本公开限于特定的实施例配置。如本文所使用的,这些术语可以指代相同或不同的实施例,这些实施例可以组合成其他实施例。
前述说明性实施例不应被解释为限制其公开内容。尽管已经描述了几个实施例,但是本领域技术人员将容易理解,在本质上不脱离本公开的新颖教导和优点的情况下,对这些实施例的许多修改是可能的。因此,所有这样的修改旨在被包括在权利要求中定义的本公开的范围内。
本公开的实施例可以没有限制地扩展到以下陈述:
陈述1.本公开的实施例包括一种存储器系统(115),包括:
第一缓存一致性互连存储器模块(310);
第二缓存一致性互连存储器模块(310);
缓存一致性互连交换机(305),将第一缓存一致性互连存储器模块(310)、第二缓存一致性互连存储器模块(310)和处理器(110)连接;以及
处理元件(315),处理存储在第一缓存一致性互连存储器模块(310)和第二缓存一致性互连存储器模块(310)中的至少一个上的数据。
陈述2.本公开的实施例包括根据陈述1的存储器系统(115),其中:
第一缓存一致性互连存储器模块(310)包括第一缓存一致性互连双列直插式存储器模块(DIMM)(310);以及
第二缓存一致性互连存储器模块(310)包括第二缓存一致性互连DIMM(310)。
陈述3.本公开的实施例包括根据陈述1的存储器系统(115),其中:
第一缓存一致性互连存储器模块(310)包括第一计算快速链接(CXL)存储器模块(310);
第二缓存一致性互连存储器模块(310)包括第二CXL存储器模块(310);以及
缓存一致性互连交换机(305)包括CXL交换机。
陈述4.本公开的实施例包括根据陈述3的存储器系统(115),还包括:
第三CXL存储器模块(310);
第四CXL存储器模块(310);以及
第二CXL交换机(305),将第三CXL存储器模块(310)、第四CXL存储器模块(310)和处理器(110)连接。
陈述5.本公开的实施例包括根据陈述4的存储器系统(115),其中,CXL交换机(305)被配置为与第二CXL交换机(305)通信。
陈述6.本公开的实施例包括根据陈述5的存储器系统(115),其中,CXL交换机(305)被配置为使用处理器(110)与第二CXL交换机(305)通信。
陈述7.本公开的实施例包括根据陈述3的存储器系统(115),其中,第一CXL存储器模块(310)包括处理元件(315)。
陈述8.本公开的实施例包括根据陈述7的存储器系统(115),其中,第一CXL存储器模块(310)包括加速器(410),加速器(410)包括处理元件(315)。
陈述9.本公开的实施例包括根据陈述8的存储器系统(115),其中,加速器(410)还包括第二处理元件(315)。
陈述10.本公开的实施例包括根据陈述8的存储器系统(115),其中,加速器(410)还包括任务调度器(510)以为处理元件(315)或第二处理元件(315)调度操作。
陈述11.本公开的实施例包括根据陈述8的存储器系统(115),其中,加速器(410)还包括存储器控制器(505)以从第一CXL存储器模块(310)或第二CXL存储器模块(310)访问数据。
陈述12.本公开的实施例包括根据陈述11的存储器系统(115),其中,存储器控制器(505)被配置为使用CXL交换机(305)和处理器(110)从连接到第二CXL交换机(305)的第三CXL存储器模块(310)访问第二数据。
陈述13.本公开的实施例包括根据陈述8的存储器系统(115),其中,加速器(410)还包括输入缓冲器(515)。
陈述14.本公开的实施例包括根据陈述8的存储器系统(115),其中,加速器(410)还包括输出缓冲器(520)。
陈述15.本公开的实施例包括根据陈述7的存储器系统(115),其中:
第一CXL存储器模块(310)包括第一CXL接口;
第二CXL存储器模块(310)包括第二CXL接口;以及
CXL交换机(305)使用第一CXL接口连接第一CXL存储器模块(310),使用第二CXL接口连接第二CXL存储器模块(310)。
陈述16.本公开的实施例包括根据陈述1的存储器系统(115),其中,处理元件(315)被配置为执行基因组学分析。
陈述17.本公开的实施例包括一种方法,包括:
从处理器(110)接收(605)在存储器系统(115)中的处理元件(315)上执行命令的请求;
使用缓存一致性互连通道从存储器系统(115)的缓存一致性互连存储器模块(310)访问(610)数据;
由处理元件(315)执行(615)命令;以及
向处理器(11O)发送(620)命令已经由处理元件(315)执行的响应。
陈述18.本公开的实施例包括根据陈述17的方法,其中,缓存一致性互连存储器模块(310)包括缓存一致性互连双列直插式存储器模块(DIMM)(310)。
陈述19.本公开的实施例包括根据陈述17的方法,其中使用缓存一致性互连通道从存储器系统(115)的缓存一致性互连存储器模块(310)访问(610)数据包括使用计算快速链接(CXL)通道从存储器系统(115)的CXL存储器模块(310)访问(610)数据。
陈述20.本公开的实施例包括根据陈述19的方法,其中,CXL存储器模块(310)包括处理元件(315)。
陈述21.本公开的实施例包括根据陈述19的方法,其中第二CXL存储器模块(310)包括处理元件(315)。
陈述22.本公开的实施例包括根据陈述21的方法,其中,使用CXL通道从存储器系统(115)的CXL存储器模块(310)访问(610)数据包括使用CXL交换机(305)访问(805)数据。
陈述23.本公开的实施例包括根据陈述22的方法,其中,CXL交换机(305)将CXL存储器模块(310)和第二CXL存储器模块(310)连接。
陈述24.本公开的实施例包括根据陈述21的方法,其中:
CXL交换机(305)将CXL存储器模块(310)和处理器(110)连接;
第二CXL交换机(305)将第二CXL存储器模块(310)和处理器(11O)连接;以及
使用CXL通道从存储器系统(115)的CXL存储器模块(310)访问(610)数据包括使用CXL交换机(305)和第二CXL交换机(305)访问(810)数据。
陈述25.本公开的实施例包括根据陈述19的方法,其中:
由处理元件(315)执行(615)命令包括生成结果;以及
该方法还包括将该结果存储(705)在CXL存储器模块(310)中。
陈述26.本公开的实施例包括根据陈述25的方法,还包括由处理器(110)从CXL存储器模块(310)访问(710)结果。
陈述27.本公开的实施例包括一种制品,该制品包括非暂时性存储介质,该非暂时性存储介质上存储有指令,该指令当由机器执行时使得:
从处理器(110)接收(605)在存储器系统(115)中的处理元件(315)上执行命令的请求;
使用缓存一致性互连通道从存储器系统(115)的缓存一致性互连存储器模块(310)访问(610)数据;
由处理元件(315)执行(615)命令;以及
向处理器(110)发送(620)命令已经由处理元件(315)执行的响应。
陈述28.本公开的实施例包括根据陈述27的制品,其中,缓存一致性互连存储器模块(310)包括缓存一致性互连双列直插式存储器模块(DIMM)(310)。
陈述29.本公开的实施例包括根据陈述27的制品,其中,使用缓存一致性互连通道从存储器系统(115)的缓存一致性互连存储器模块(310)访问(610)数据包括使用计算快速链接(CXL)通道从存储器系统(115)的CXL存储器模块(310)访问(610)数据。
陈述30.本公开的实施例包括根据陈述29的制品,其中,CXL存储器模块(310)包括处理元件(315)。
陈述31.本公开的实施例包括根据陈述29的制品,其中,第二CXL存储器模块(310)包括处理元件(315)。
陈述32.本公开的实施例包括根据陈述31的制品,其中,使用CXL通道从存储器系统(115)的CXL存储器模块(310)访问(610)数据包括使用CXL交换机(305)访问(805)数据。
陈述33.本公开的实施例包括根据陈述32的制品,其中,CXL交换机(305)将CXL存储器模块(310)和第二CXL存储器模块(310)连接。
陈述34.本公开的实施例包括根据陈述31的制品,其中:
CXL交换机(305)将CXL存储器模块(310)和处理器(110)连接;
第二CXL交换机(305)将第二CXL存储器模块(310)和处理器(110)连接;以及
使用CXL通道从存储器系统(115)的CXL存储器模块(310)访问(610)数据包括使用CXL交换机(305)和第二CXL交换机(305)访问(810)数据。
陈述35.本公开的实施例包括根据陈述29的物品,其中:
由处理元件(315)执行(615)命令包括生成结果;以及
非暂时性存储介质在其上存储了另外的指令,该另外的指令当由机器执行时,使得将结果存储(705)在CXL存储器模块(310)中。
陈述36.本公开的实施例包括根据陈述35的制品,其中,非暂时性存储介质在其上存储有另外的指令,该另外的指令当由机器执行时,使得由处理器(110)从CXL存储器模块(310)访问(710)结果。
因此,鉴于本文描述的实施例的各种编排,该详细描述和附随材料仅旨在说明,而不应被视为限制本公开的范围。因此,本公开所要求保护的是可能落入所附权利要求及其等同物的范围和精神内的所有这样的修改。
Claims (20)
1.一种存储器系统,包括:
第一缓存一致性互连存储器模块;
第二缓存一致性互连存储器模块;
缓存一致性互连交换机,将第一缓存一致性互连存储器模块、第二缓存一致性互连存储器模块和处理器连接;以及
处理元件,处理存储在第一缓存一致性互连存储器模块和第二缓存一致性互连存储器模块中的至少一个上的数据,
其中,所述处理元件被包括在第一缓存一致性互连存储器模块中。
2.根据权利要求1所述的存储器系统,其中:
第一缓存一致性互连存储器模块包括第一缓存一致性互连双列直插式存储器模块DIMM;以及
第二缓存一致性互连存储器模块包括第二缓存一致性互连DIMM。
3.根据权利要求1所述的存储器系统,其中:
第一缓存一致性互连存储器模块包括第一计算快速链接CXL存储器模块;
第二缓存一致性互连存储器模块包括第二CXL存储器模块;并且
所述缓存一致性互连交换机包括CXL交换机。
4.根据权利要求3所述的存储器系统,还包括:
第三CXL存储器模块;
第四CXL存储器模块(310);以及
第二CXL交换机,将第三CXL存储器模块、第四CXL存储器模块和所述处理器连接。
5.根据权利要求4所述的存储器系统,其中,所述CXL交换机被配置为与第二CXL交换机通信。
6.根据权利要求3所述的存储器系统,其中,第一CXL存储器模块包括加速器,所述加速器包括处理元件。
7.根据权利要求6所述的存储器系统,其中,所述加速器还包括第二处理元件。
8.根据权利要求6所述的存储器系统,其中,所述加速器还包括任务调度器以为处理元件或第二处理元件调度操作。
9.根据权利要求6所述的存储器系统,其中,所述加速器还包括存储器控制器以从第一CXL存储器模块或第二CXL存储器模块访问数据。
10.根据权利要求6所述的存储器系统,其中,所述存储器控制器被配置为使用CXL交换机和处理器从连接到第二CXL交换机的第三CXL存储器模块访问第二数据。
11.根据权利要求3所述的存储器系统,其中:
第一CXL存储器模块包括第一CXL接口;
第二CXL存储器模块包括第二CXL接口;以及
CXL交换机使用第一CXL接口连接第一CXL存储器模块,以及使用第二CXL接口连接第二CXL存储器模块。
12.一种方法,包括:
从处理器接收在存储器系统中的缓存一致性互连存储器模块中的处理元件上执行命令的请求;
使用缓存一致性互连通道从存储器系统的缓存一致性互连存储器模块访问数据;
由缓存一致性互连存储器模块中的处理元件执行命令;以及
向处理器发送命令已经由处理元件执行的响应。
13.根据权利要求12所述的方法,其中,所述缓存一致性互连存储器模块包括缓存一致性互连双列直插式存储器模块(DIMM)。
14.根据权利要求12所述的方法,其中,使用缓存一致性互连通道从存储器系统的缓存一致性互连存储器模块访问数据包括使用计算快速链接CXL通道从存储器系统的CXL存储器模块访问数据。
15.根据权利要求14所述的方法,其中,使用CXL通道从存储器系统的CXL存储器模块访问数据包括使用CXL交换机访问数据。
16.根据权利要求14所述的方法,其中:
CXL交换机将CXL存储器模块和处理器连接;
第二CXL交换机将第二CXL存储器模块和所述处理器连接;以及
使用CXL通道从存储器系统的CXL存储器模块访问数据包括使用CXL交换机和第二CXL交换机访问数据。
17.根据权利要求14所述的方法,其中:
由所述处理元件执行命令包括生成结果;以及
所述方法还包括将所述结果存储在所述CXL存储器模块中。
18.一种制品,包括非暂时性存储介质,所述非暂时性存储介质上存储有指令,所述指令当由机器执行时,使得:
从处理器接收在存储器系统中的缓存一致性互连存储器模块中的处理元件上执行命令的请求;
使用缓存一致性互连通道从存储器系统的缓存一致性互连存储器模块访问数据;
由所述缓存一致性互连存储器模块中的处理元件执行命令;以及
向处理器发送命令已经由所述处理元件执行的响应。
19.根据权利要求18所述的制品,其中,所述缓存一致性互连存储器模块包括缓存一致性互连双列直插式存储器模块(DIMM)。
20.根据权利要求18所述的制品,其中,使用缓存一致性互连通道从所述存储器系统的缓存一致性互连存储器模块访问数据包括使用计算快速链接CXL通道从存储器系统的CXL存储器模块访问数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/316,399 | 2022-03-03 | ||
US17/834,896 | 2022-06-07 | ||
US17/834,896 US20230281128A1 (en) | 2022-03-03 | 2022-06-07 | Cache-coherent interconnect based near-data-processing accelerator |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116701247A true CN116701247A (zh) | 2023-09-05 |
Family
ID=87842127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310172463.5A Pending CN116701247A (zh) | 2022-03-03 | 2023-02-16 | 基于缓存一致性的互连的近数据处理加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116701247A (zh) |
-
2023
- 2023-02-16 CN CN202310172463.5A patent/CN116701247A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3754498B1 (en) | Architecture for offload of linked work assignments | |
US9542244B2 (en) | Systems and methods for performing primitive tasks using specialized processors | |
CN108337910B (zh) | 用于软件定义的互连交换机的架构 | |
Chang et al. | The smem seeding acceleration for dna sequence alignment | |
KR100925572B1 (ko) | 상이한 길이의 캐시 위치 내의 캐시 코히어런시를 위한시스템, 방법, 프로세스 및 장치 | |
Shi et al. | Designing efficient small message transfer mechanism for inter-node MPI communication on InfiniBand GPU clusters | |
CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
KR101747966B1 (ko) | 자율 서브시스템 아키텍처 | |
KR20170124995A (ko) | 자율 메모리 아키텍처 | |
US9411613B1 (en) | Systems and methods for managing execution of specialized processors | |
CN109983443B (zh) | 实现分叉非易失性存储器快速驱动器的技术 | |
CN109314103B (zh) | 用于远程现场可编程门阵列处理的方法和装置 | |
CN118119933A (zh) | 用于触发协作进程的提前终止的机制 | |
CN115033188A (zh) | 一种基于zns固态硬盘的存储硬件加速模块系统 | |
CN117631974A (zh) | 跨越基于存储器的通信队列的多信道接口的存取请求重新排序 | |
WO2023022906A1 (en) | Tile-based result buffering in memory-compute systems | |
Huangfu et al. | Beacon: Scalable near-data-processing accelerators for genome analysis near memory pool with the cxl support | |
Contini et al. | Enabling Reconfigurable HPC through MPI-based Inter-FPGA Communication | |
EP3398067A1 (en) | Method and system for shared direct access storage | |
CN117435549A (zh) | 用于硬件组件之间的通信的方法和系统 | |
Xue et al. | Softssd: Software-defined ssd development platform for rapid flash firmware prototyping | |
EP4239487A1 (en) | Cache-coherent interconnect based near-data-processing accelerator | |
CN116701247A (zh) | 基于缓存一致性的互连的近数据处理加速器 | |
JP2004192621A (ja) | クラスタベースのマルチプロセッサ・システムでのマイクロプロセッサ通信の方法およびデータ処理システム | |
US11853216B2 (en) | High bandwidth gather cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |