CN103810125A - 有源存储器件聚集、分散和过滤 - Google Patents

有源存储器件聚集、分散和过滤 Download PDF

Info

Publication number
CN103810125A
CN103810125A CN201310561131.2A CN201310561131A CN103810125A CN 103810125 A CN103810125 A CN 103810125A CN 201310561131 A CN201310561131 A CN 201310561131A CN 103810125 A CN103810125 A CN 103810125A
Authority
CN
China
Prior art keywords
address
storer
instruction
treatment element
destination
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
Application number
CN201310561131.2A
Other languages
English (en)
Inventor
B.M.弗莱舍
T.W.福克斯
H.M.雅各布森
J.A.卡伦
J.H.莫雷诺
R.奈尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103810125A publication Critical patent/CN103810125A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • 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/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/785Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) with decentralized control, e.g. smart memories
    • 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
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

实施例涉及加载和存储数据。一个方面包括用于在有源存储器件中传送数据的方法,该有源存储器件包括存储器和处理元件。取出并解码指令用于由该处理元件执行。基于确定该指令是聚集指令,处理元件确定要从中聚集数据元素的所述存储器中的多个源地址以及所述存储器中的目的地地址。将一个或多个聚集的数据元素从所述源地址传送到存储器中以所述目的地地址开始的连续位置。基于确定所述指令是分散指令,确定要从中读取在连续位置处的多个数据元素的所述存储器中的源地址以及用于在不连续的位置处存储所述数据元素的所述存储器中的一个或多个目的地地址,并传送所述数据元素。

Description

有源存储器件聚集、分散和过滤
技术领域
本公开一般涉及计算机存储器,更具体地涉及向/从有源存储器件中的存储器传送数据。
背景技术
计算机系统通常需要相当大量的高速存储器(比如随机存取存储器(RAM))来在计算机通电和操作时保持诸如数据和程序的信息。由于计算机系统具有增加的性能和复杂性,存储器件需求持续增长。
从主处理器到存储器件上的位置的通信可以涉及相当长的数据存取时间和等待时间。主处理器访问存储器花费的时间可以是例如几百个周期,包括意识到数据不在高速缓存中(用于存储器读取)的时间、从主处理器的处理器核跨过模块或其他封装遍历到I/O的时间、在多处理器/共享的存储器系统中建立到存储器的通道的仲裁时间、以及使数据进或出存储器单元的时间。当要读取或写入的数据值的存储器地址散布在存储器的各个不连续的位置时,可能遇到进一步的访问时间延迟,特别是如果每次存取都需要地址翻译。
发明内容
示例实施例包括用于在有源存储器件中传送数据的方法,该有源存储器件包括存储器和处理元件。取出并解码指令用于由该处理元件执行。基于确定该指令是聚集指令,处理元件确定要从中聚集数据元素的所述存储器中的多个源地址以及所述存储器中的目的地地址。将一个或多个聚集的数据元素从所述多个源地址传送到存储器中以所述目的地地址开始的连续位置。基于确定所述指令是分散指令,确定要从中读取在连续位置处的多个数据元素的所述存储器中的源地址以及用于在不连续的位置处存储所述数据元素的所述存储器中的一个或多个目的地地址。将所述数据元素中的一个或多个从所述源地址传送到一个或多个目的地地址。
另外的示例实施例包括有源存储器件的处理元件,其包括:加载存储队列,配置为与所述有源存储器件中的存储器接口;指令缓冲器,耦接到所述加载存储队列,并且配置为接收指令;以及解码器,耦接到所述指令缓冲器。所述解码器配置为解码所述指令,并且基于确定所述指令是聚集指令,所述处理元件配置为:确定要从中聚集数据元素的存储器中的多个源地址以及存储器中的目的地地址。处理元件还配置为将一个或多个聚集的数据元素从所述多个源地址传送到存储器中的以所述目的地地址开始的连续位置。基于确定所述指令是分散指令,确定要从中读取在连续位置处的多个数据元素的所述存储器中的源地址,以及在不连续的位置处存储所述数据元素的所述存储器中的一个或多个目的地地址。将所述数据元素中的一个或多个从所述源地址传送到所述一个或多个目的地地址。
进一步的示例实施例包括有源存储器件,其包括:存储器以及配置为与所述存储器通信的处理元件。所述处理元件配置为进行包括以下处理的方法:取出并解码指令,用于由该处理元件执行。基于确定该指令是聚集指令,该处理元件确定要从中聚集数据元素的所述存储器中的多个源地址和所述存储器中的目的地地址。将一个或多个聚集的数据元素从所述多个源地址传送到所述存储器中的以所述目的地地址开始的连续位置。基于确定所述指令是分散指令,确定要从中读取在连续位置处的多个数据元素的所述存储器中的源地址以及在不连续的位置处存储所述数据元素的所述存储器中的一个或多个目的地地址。将所述数据元素中的一个或多个从所述源地址传送到所述一个或多个目的地地址。
通过本发明的技术实现了另外的特征和优点。在此详细描述了本发明的其他实施例和方面,并且其被认为是要求保护的发明的一部分。为了更好地理解具有这些优点和特征的本发明,请参见具体实施方式和附图。
附图说明
在本说明书的结尾处的权利要求书中具体指出并明确地声明了作为发明的主题。结合附图,本发明的以上和其他特征和优点从以下的详细描述而显而易见,附图中:
图1例示根据实施例的有源存储器的系统的框图;
图2例示根据实施例的具有有源存储器的存储器系统的框图;
图3例示根据实施例的具有有源存储器的存储器系统的示意图;
图4例示根据实施例的有源存储器件中的处理元件的框图;
图5例示根据实施例在有源存储器件中聚集分散的数据的例子;
图6例示根据实施例在有源存储器件中分散存储数据的例子;
图7例示根据实施例在有源存储器件中在数据传送时的数据过滤的例子;以及
图8例示根据实施例用于在有源存储器件中聚集、分散和过滤数据的流程图。
具体实施方式
一个实施例指向有源存储器件中的数据的聚集、存储和过滤。该有源存储器件可以是包括连接到逻辑部分和处理元件的多个存储器元件(例如芯片)的任何适当的存储器件。在一个实施例中,该有源存储器件包括形成三维(“3D”)存储器件(例如存储器立方体(cube))的存储器的层,其中各列芯片形成与处理元件和逻辑通信的区块(vault)。该有源存储器件可以包括配置为通信至芯片和其他处理元件的多个处理元件。在一个实施例中,处理元件通过互联网络访问区块中所选择的地址。另外,互联网络提供了在有源存储器件上的处理元件之间以及在处理元件和主处理器之间的通信路径。每个区块可以具有相关联的存储器控制器或者逻辑单元,该存储器控制器或者逻辑单元也耦接到互联网络。
实施例包括可以使用有源存储器件内的多个位置(例如:存储在特定地址的数据)作为操作数来进行一组复杂的操作的有源存储器件。此外,提供处理,通过该处理,在有源存储器件内对这些操作数自治地进行指令和操作。具体地,这些指令存储在有源存储器件本身内,并且不由主处理器执行。在有源存储器件中,存储的指令被提供给处理元件用于由处理元件处理。在一个实施例中,处理元件是可编程的引擎,包括:指令缓冲器,具有分支(branching)能力和指令解码的指令单元,向量、标量和掩码寄存器文件的混合,用于在存储器和寄存器文件之间移动数据的多个加载/存储单元,以及用于各种数据类型的算术和逻辑运算的多个执行单元。有源存储器件中还包括:用于将虚拟地址转换为物理地址的地址翻译能力,用于按序排序在存储器和处理元件之间的数据移动的统一加载/存储队列,以及用于与主处理器通信的处理器通信单元。
在一个实施例中,有源存储器件配置为在从诸如主处理器或者另一处理元件的外部请求者接收到命令后,将配置信息或指令从有源存储器件的一部分加载到处理元件。另外,处理元件可以进行在执行加载的指令的同时计算的虚拟-真实地址翻译。在一个例子中,当执行加载指令时,有源存储器件访问来自存储器位置的操作数,并将该操作数放置在处理元件中的寄存器中。该存储器位置的虚拟位置由加载指令产生并且被处理元件翻译为真实地址。类似地,当执行存储指令时,有源存储器件在存储器位置写入处理元件中的寄存器中的内容(例如操作数)。该存储器位置的虚拟地址由存储指令产生并且被处理元件翻译为真实地址。
有源存储器件中的处理元件的实施例还具有通过互联网络在有源存储器件的任意部分中读取或写入操作数的能力。具体地,处理元件可以使用互联网络访问有源存储器件中的其他区块。在一个实施例中,处理元件形成池(pooled)并且经由互联网络耦接到区块,其中处理元件不是物理地位于区块堆叠中。在一个实施例中,互联网络是诸如交叉开关的耦合器件,配置为将任意的处理元件连接到任意的存储器区块,前提是处理元件和存储器区块耦接到互联网络。在一个实施例中,互联网络可以耦接多个有源存储器件,其中互联网络提供了分离的器件的处理元件和存储器区块之间的通信路径。
在一个实施例中,处理元件与存储器控制器一起作为堆叠的部分而被包括。另外,处理元件可以对读取的操作数进行复杂的运算和逻辑操作并将得到的结果写回存储器中的位置。该有源存储器件可以向主处理器返回单个结果值或者信号,指示期望的复杂操作的结果在有源存储器件中已经准备好,由此对有源存储器件进行高带宽处理,并且在有源存储器件和主处理器之间使用较低带宽通信。
有源存储器件内的处理能力可以减少在驻留在单独的芯片上的处理器存取存储器时将经历的存储器等待时间和能量消耗。代替通过较低带宽通信路径将数据从存储器放入到单独的处理芯片、对数据进行通常是非常简单的计算、然后将处理过的数据传送回到存储器,主处理器可以配置有源存储器件内的处理元件,然后指示它们执行数据处理任务。这可以通过从主处理器向有源存储器件发送一个或多个命令来实现。在此情况下,在进行数据处理的位置和存储器之间的数据移动在其需要从存储器行进到数据处理位置的距离方面以及在遍历存储器层级的高速缓存的级别的数量方面都大大减少。
在一个实施例中,有源存储器件包括在存储器立方体内的无状态处理元件。处理元件对于主处理器中的程序而言看起来就像长等待时间功能单元。处理元件本身是可编程的引擎,包括:指令缓冲器,包括分支能力和指令解码的指令单元,向量、标量和掩码寄存器文件的混合,用于在存储器和寄存器文件之间移动数据的多个加载/存储单元,以及用于各种数据类型的算术和逻辑运算的多个执行单元。还包括:用于将程序虚拟地址转换为实际地址的地址翻译能力,用于按序排序在存储器和处理元件之间的数据移动的统一加载/存储队列,以及用于与主处理器通信的处理器通信单元。
图1例示根据实施例的用于在存储器存储和取回数据的系统的框图。图1所示的系统100包括计算机处理器(CPU)102、具有存储器件的存储器106、以及用于接收和处理来自计算机处理器102的要存储在存储器106中的数据的存储器控制器104和处理元件108。计算机处理器102还可以接口到高速缓存体系110,该高速缓存体系110可以包括多个高速缓存的层级,其中高速缓存体系110的一个或多个层级可以包括在计算机处理器102内和/或在计算机处理器102外部。
存储器控制器104可以与计算机处理器102通信,并且接收来自计算机处理器102的写请求而不使用处理元件108的功能。写请求包含要被写到存储器106的数据以及用于标识该数据将被写到的存储器106中的位置的虚拟地址。存储器控制器104将数据存储在存储器106内的真实地址。在存储或取回数据时,计算机处理器102可以将该虚拟地址映射到存储器106中的真实地址处。
在实施例中,处理元件108与计算机处理器102通信,并且接收来自计算机处理器102的命令。该命令可以对应于存储在存储器106中的指令。该命令还可以包括用于标识数据将被写到的存储器106中的位置的虚拟地址。存储器控制器104和/或处理元件108将数据存储在存储器106内的真实地址处。在实施例中,当存储或取回数据时,处理元件108将虚拟地址映射到存储器106中的真实地址。每次存储器106中的数据被修改时,对于给定的逻辑地址的真实地址可能改变。如以下更详细描述的,计算机处理器102向存储器106提供命令,其中处理元件108接收该命令并且从存储器106取出相应的指令。该系统100是可以用来进行在此所述的处理的配置的一个例子。尽管已经将系统100描绘为仅具有单个存储器106、存储器控制器104、处理元件108或计算机处理器102,但是将理解,其他实施例还将在具有两个或多个存储器106、存储器控制器104、处理元件108或计算机处理器102的其他系统中操作。在一个实施例中,存储器106、存储器控制器104、处理元件108和计算机处理器102不位于相同的计算机内。例如,存储器106、处理元件108和存储器控制器104可以位于一个物理位置(例如在存储器模块上),而计算机处理器102位于另一物理位置(例如,计算机处理器102经由网络访问存储器控制器104和/或处理元件108)。另外,在此所述的处理的部分可以跨越存储器106、存储器控制器104、处理元件108和计算机处理器102中的一个或多个。
图2是实现有源存储器的计算机系统200的实施例的示意图。在一个实施例中,计算机系统200包括有源存储器件202、有源存储器件203和有源存储器件204。有源存储器件202包括存储器区块206、存储器控制器208和处理元件201。在实施例中,处理元件210、存储器区块206和存储器控制器208经由互联网络212耦接并通信。具体地,处理元件210经由互联网络212与存储器区块206、存储器控制器208和诸如有源存储器件203和204的其他存储器件通信。互联网络212还通过处理器链路220和222耦接到主处理器224。互联网络212提供用于诸如处理元件、存储器控制器和存储器的该器件的各部分之间的通信的快速和高带宽路径,以便为有源存储器提供改进的性能和减少的等待时间。
有源存储器件203包括存储器区块226、存储器控制器228和处理元件230。在实施例中,处理元件230、存储器区块226和存储器控制器228全部位于互联网络212的同一侧,比如在单个堆叠内。通过将处理元件230定位在与存储器区块226相同的堆叠中,当访问存储器区块226中的位置时,减少了等待时间,因此进一步改进性能。在一个实施例中,有源存储器204包括存储器区块214和经由互联网络212耦接到处理元件210和处理元件218的存储器控制器216。如所示的,处理元件218位于互联网络212的与存储器控制器216和存储器区块214不同的另一侧。在实施例中,有源存储器件202、203和204包括多层堆叠的可寻址存储器元件。此外,堆叠的存储器可以被划分为存储器区块206、226和214,或者共享共同的存储器控制器和/或存储器元件的存储器件的三维分块的区域,并且能够彼此独立地服务对于其自己的存储器域的存储器访问请求。
在实施例中,处理元件、存储器区块和存储器控制器可以依赖于应用而按适当的方式布置。例如,一个或多个诸如处理元件218的处理元件可以被定位在互联网络212的一侧,并且可以作为可用于访问耦接到互联网络212的存储器系统中的任意存储器的处理元件的池来操作。连成池的处理元件不限于访问特定存储器区块,因此在接收来自主处理器224的命令时可以利用一个或多个存储器元件。因而,处理元件218可以配置为访问每个存储器区块206、226和214。在另一实施例中,一个或多个诸如处理元件230的处理元件定位为包括存储器区块226和存储器控制器228的堆叠的一部分。在这样的配置中,处理元件230配置为访问存储器区块226而不经过互联网络212。处理元件230也耦接到互联网络212并且可以访问存储器区块206和214。在一个实施例中,一个或多个诸如处理元件210的处理元件位于互联网络212的与存储器区块206和存储器控制208的相对侧。在该配置中,处理元件210配置为访问耦接到互联网络212的任意存储器,包括存储器区块226和214。
在实施例中,计算机系统可以包括多个有源存储器件,比如有源存储器件202、203和204。此外,每个有源存储器件可以包括多个堆叠,每个堆叠包括存储器区块、存储器控制器和相关联的处理元件。在一个例子中,处理元件的数量可以大于存储器区块的数量。在另一实施例中,存储器件可以包括比存储器区块要少的处理元件。在实施例中,处理元件连成池并且可用于访问该系统中的任意存储器。例如,一个存储器件可以包括16个存储器区块和存储器控制器,但是仅包括八个处理元件。这八个处理元件被连成池,并且被用作用于访问耦接到互联网络的任意存储器区块的资源。在另一例子中,存储器件可以是无源的,其中该器件由耦接到互联网络的有源存储器件的处理元件控制。
图3是实现有源存储器的示例计算机系统300的图。计算机系统300包括电路板302、主处理器304、有源存储器件306和有源存储器件308。有源存储器件306、有源存储器件308和主处理器304布置在电路板302上。如所示,剖解(explode)有源存储器件306和308的部分,以示出计算机系统300布置的细节。有源存储器件306和308分别经由信号路径324和344与主处理器304通信。如所示,有源存储器件306按层布置,其中基底层(baselayer)311包括多个存储器控制器310和处理元件312。例如,有源存储器件306包括放置在基底层311之上的存储器的层309,其中每个层309具有多个存储器元件。如所示,基底层311还包括互联网络346,以使能在该器件中的存储器、存储器控制器和处理元件之间的高带宽通信。
在一个实施例中,有源存储器件306包括多个存储器区块314、其中每个存储器区块314包括来自每个层309的存储器元件,存储器区块314定位为与存储器控制器310和处理元件312相邻。具体地,示例的有源存储器件306包括16个存储器元件的层,其中元件层形成堆叠,包括堆叠316,其中堆叠316包括布置在存储器控制器318和处理元件320以上的存储器区块322。高带宽通信路径326提供在处理元件320和存储器区块322内的存储器位置之间的高带宽、直接和长度实质上减小(例如与路径324、344相比)的通信路径,因此减少对于存储器访问的等待时间和功耗。例如,处理元件320可以接收来自主处理器304的命令,基于该命令从有源存储器件306内加载指令,并且作为加载的指令的部分,访问在存储器区块314中的一位置处的数据并在处理元件320中对该数据进行复杂的操作。此外,处理元件320还可以将诸如结果的数据存储在存储器区块314中并且在执行命令之后向主处理器304传送值或信号。在实施例中,处理元件320将来自处理元件320中的寄存器的数据(例如操作数)存储或写到存储器区块314。作为读取或存储操作的部分,处理元件320还配置为将地址从虚拟翻译为真实以及从真实翻译为虚拟。因此,处理元件320提供指令加载、地址翻译、复杂操作以及对于存储器本地的其他任务,以降低等待时间、节省功率并释放主处理器304来进行其他任务。
类似地,有源存储器件308包括布置在基底层331上的多个存储器控制器328和处理元件330。在一个实施例中,有源存储器308包括放置在基底层331之上的存储器件的层329,其中每层329具有多个存储器件。基底层331还包括互联网络346以使能在器件中的存储器和处理元件之间的高带宽通信。在一个实施例中,有源存储器件306和有源存储器件308的互联网络346耦接,并且允许在分离的器件上的处理元件和存储器之间的通信。
在一个实施例中,有源存储器件308包括多个存储器区块322,其中每个存储器区块322包括来自每层309的存储器元件,存储器区块322定位为与存储器控制器328和处理元件330相邻。示例的有源存储器件308包括16个堆叠,包括堆叠334,其中堆叠344包括布置在存储器控制器340和处理元件338以上的存储器区块336。高带宽通信路径342提供了在处理元件330和存储器区块336内的存储器位置之间的通信。
图4绘出作为图1-3的处理元件中的一个的实施例的、耦接到互联网络402的处理元件400的例子。处理元件400是位于诸如图1-3的有源存储器件中的一个的有源存储器件中的可编程向量处理元件。在图4的例子中,处理元件400包括耦接到互联网络402和指令缓冲器406的加载-存储队列(LSQ)404。指令缓冲器406还耦接到通道控制单元(LCU)408和解码器410。处理器通信单元(PCU)412提供在处理元件400和主处理器或者其他处理元件之间经过互联网络402的通信接口。LSQ404还耦接到向量计算寄存器文件(VCR)414和标量计算寄存器文件(SCR)416。VCR414和SCR416通过多个多路复用器耦接到算术逻辑单元(ALU)418和存储器访问单元420,其也被称为加载-存储单元(LSU)420。ALU418通过多路复用器耦接到其自身和LSU420,并且还耦接到VCR414和SCR416。LSU420也可以耦接到其自身、耦接到LSQ404、耦接到有效-真实地址翻译单元(ERAT)422、耦接到VCR414以及耦接到SCR416(未绘出所有连接)。ERAT422还耦接到LSQ404。如将认识到的,处理元件400中可以包括许多其他的连接和元件。例如,为了清楚起见,没有绘出在解码器410和其他元件之间的连接。另外,图4中绘出的连接可以被修改或省略,比如绘出的在解码器410和PCU412之间的连接。
处理元件400支持包括对于许多数据类型的宽范围的算术能力的指令集架构。处理元件400的向量处理能力允许时间上的单指令多数据(SIMD),同时也支持空间维度的SIMD。指令缓冲器406保持按顺序取回并执行的经历分支的指令(也称为“通道指令”)。在一个实施例中,每个通道指令包含用于在处理元件400内的各个单元中执行的9个子指令。通道指令内可以包括迭代计数,允许重复子指令达预定的次数(例如达32次)。这有助于时间上的SIMD。LCU408可以管理该迭代计数并确定何时前进到下一指令或者重复执行相同的指令。在一个实施例中,ALU418的运算管线(pipeline)为64位宽,并且依靠与多个执行间隙同时地并行执行小于64位的数据类型的能力而支持空间SIMD。例如,假设通道指令包括9个子指令,子指令的执行可以在四个处理片(slice)中在用于通道控制的LCU408中进行,每个处理片包括ALU418和LSU420。每个处理片段可以实现VCR414和SCR416的对,并且它们可以由每对ALU418和LSU420访问。因而,VCR414、SCR416、ALU418、LSU420和相关联的多路复用器被绘出为四个元件的堆叠,以指示在图4的例子中的4个处理片段。
在处理片级别,可以在64位向量元件上以时间SIMD的方式在例如64位的粒度在浮点和定点数据类型上发生计算,并且在可以是32位、16位或者8位宽的更窄的向量子元件上以时间和空间SIMD的方式发生计算。
在处理元件400内的每个处理片段包括存储器访问管线(加载/存储管线)和运算管线。管理作为加载/存储管线经过LSU420的流可以使能每个向量数据元素或子元素一个地址的计算,并且便利于从存储器聚集以及向存储器分散数据。聚集/分散能力通过同时实现多个向量数据元素访问而提供了对存储在非连续的存储器位置中的数据的访问,而不管其在不连续的存储器中分开分布。处理元件400提供了进行相关联的定点有效地址(即虚拟地址)计算的能力,以支持聚集-分散功能。经过ALU418的运算管线可以包括浮点和定点操作的稳固的分类以支持各种工作负荷。
LSU420可以支持向以及从填充了数据的寄存器的例如8、4、2和1字节的加载和存储操作,以及4、2和1字节的加载和存储操作。
ALU418可以支持寄存器文件之间的复制操作,对双精度(64位)和单精度(32位)的浮点数据类型的运算、舍入和转换、比较以及最大值和最小值操作,以及对双字(64位)、字(32位)、半字(16位)和字节(8位)的定点数据类型的运算、轮转/移位、比较、逻辑、前导零计数和“1”种群计数(ones population count)操作。
在一个实施例中,处理元件400内的处理片段的计算模型是利用VCR414和SCR416的向量单指令多数据(SIMD)模型。VCR414可以支持多维度的寄存器,而SCR416支持单维度的寄存器。例如,VCR414可以包括16个寄存器项,每个寄存器项具有32个64位的元素,并且SCR416可以包括16个寄存器项,每个寄存器项具有1个64位的元素,尽管可以支持许多其他配置。可以使用可变数量的执行间隙,对相等数量的子元素操作,由此一同取得的子元素合计达此例子中的64位的一个寄存器元素(VCR414或者SCR416)。执行间隙的数量和向量子元素的对应数量依赖于指令的数据类型。数据类型的例子和各种格式的大小包括:具有双精度(64位)和单精度(32位)数据类型的浮点以及对于双字(64位)、字(32位)、半字(16位)和字节(8位)数据类型的定点。
图5例示根据实施例在有源存储器件中聚集分散的数据的例子。诸如图2中的处理元件210的处理元件可以接收来自诸如图2的主处理器224的主处理器的聚集指令。在执行该聚集指令时,处理元件聚集来自一组存储器位置的数据元素,并将这些数据元素组合为以指定的目的地的地址开始的连续的存储器位置的序列。在图5的例子中,数据元素A、B、C和D位于不连续的存储器位置中,其中数据元素B和D处于存储器区块502中,而数据元素A和C处于存储器区块504中。响应于该聚集指令,处理元件从存储器区块502和504中的各个位置读取数据元素A、B、C和D,并将数据元素A、B、C、D写到可由发出该聚集指令的主处理器访问的存储器区域508中的连续位置506中。
该主处理器可以提供列表510,该列表510包括要从中聚集数据元素的存储器中的多个源地址、标识连续的位置506的存储器开始地址的目的地地址、以及指示对于来自源地址的每个聚集的数据元素将目的地地址递增多少的步幅大小。步幅大小可以对于所有聚集的数据元素是单个值,或者可以是向量以支持与每个源地址相关联的不同步幅大小。列表510可以直接发送到处理元件或者被放置到可由主处理器和处理元件两者访问的存储器中。可以以虚拟或有效地址格式指定列表510中的地址,其中处理元件随后使用例如图4的ERAT422将该有效地址格式转换为真实或物理地址格式,以定位由主处理器请求的数据元素。
当列表510未被直接提供给处理元件时,聚集指令可以包括一个或多个指针512,该一个或多个指针512向处理元件提供更简洁的表示以在存储器中定位列表510或者列表510的具体字段。在图5的例子中,该一个或多个指针512包括指向列表510中的源地址1的源地址指针、指向列表510中的目的地地址的目的地地址指针、指向列表510中的步幅大小的步幅指针、以及指示列表510中的源地址的数量的计数。将理解,也可以支持其他格式。例如,一个或多个指针512可以简单地指向列表510的开头,并且可以可选地包括该计数。作为另一替换,可以从列表510中省去步幅大小,并且代替步幅指针,将该步幅大小存储在一个或多个指针512中。一个或多个指针512中的地址值可以是被处理元件转换为真实地址来访问列表510的有效地址格式。
进一步关于图5,将理解,聚集指令可以访问一个或多个存储器区块中的一个或多个存储器芯片,以支持使用单个聚集指令来聚集任意数量的数据元素。如从图2将认识到的,主处理器224可以向图2的多个处理元件210、218和230发送聚集指令,以进行跨过多个存储器区块或者多个有源存储器件的同时聚集,而不需要主处理器224知道各个数据元素的真实地址。主处理器224可以读取存储在连续的位置506处的数据元素的值并将它们放到图1的高速缓存体系110中用于进一步处理。因为数据元素存储在连续的位置506处,所以相比于每个数据元素进行一系列较窄数据宽度的操作,可以使用更大数据宽度的业务(transaction)、比如高速缓存线业务来进行对数据的操作。
图6例示根据实施例在有源存储器件中分散地存储数据的例子。类似图5的例子,诸如图2中的处理元件210的处理元件可以接收来自诸如图2的主处理器224的主处理器的存储指令。该存储指令可以指定多个不连续的位置用于存储数据元素,并且像这样的存储指令被称为分散指令或者分散存储指令。在执行分散指令时,处理元件从来自一组存储器位置的以指定的源地址开始的连续存储器位置读取数据元素,并将这些数据元素分散写到在一个或多个目的地地址中标识的一个或多个不连续的存储器位置。在图6的例子中,数据元素A、B、C和D位于存储器区域604中的连续的存储器位置602中。响应于分散指令,处理元件读取在连续的存储器位置602处的数据元素A、B、C和D,并将数据元素A和D写到存储器区块606中的各个位置,将数据元素B和C写到存储器区块608中的各个位置。在一个示例实施例中,存储器区域604中的连续的存储器位置602可由发出该分散指令的主处理器访问。
该主处理器可以提供列表610,该列表610包括从中读取连续的存储器位置602的源地址、标识用于写入数据元素的不连续的位置的多个目的地地址、以及标识对于每个数据元素源地址递增多少的步幅大小。步幅大小可以对于所有数据元素是单个值,或者可以是向量以支持与每个源地址增量相关联的不同步幅大小。该列表610可以直接发送到处理元件或者被放置在可由主处理器和处理元件两者访问的存储器中。列表610中的地址可以以虚拟或有效地址格式指定,其中处理元件随后使用例如图4的ERAT422将有效地址格式转换为真实或物理地址格式以定位主处理器请求的数据元素。
当列表610未被直接提供给处理元件时,分散指令可以包括一个或多个指针612,该一个或多个指针612向处理元件提供更简洁的表示以在存储器中定位列表610或者列表610的具体字段。在图6的例子中,该一个或多个指针612包括指向列表610中的源地址的源地址指针、指向列表610中的目的地地址1的目的地地址指针、指向列表610中的步幅大小的步幅指针、以及指示列表610中的目的地地址的数量的计数。将理解,也可以支持其他格式。例如,一个或多个指针612可以简单地指向列表610的开头,并且可以可选地包括该计数。作为另一替换,可以从列表610中省去步幅大小,并且代替步幅指针,将该步幅大小存储在一个或多个指针512中。一个或多个指针612中的地址值可以是被处理元件转换为真实地址来访问列表610的有效地址格式。
进一步关于图6,将理解,分散指令可以访问一个或多个存储器区块中的一个或多个存储器芯片,以支持使用单个聚集指令来分散存储任意数量的数据元素。如从图2还将认识到的,主处理器224可以向图2的多个处理元件210、218和230发送分散指令,以进行跨过多个存储器区块或者多个有源存储器件的同时分散存储,而不需要主处理器224知道各个数据元素的真实地址。主处理器224可以将数据元素的值从图1的高速缓存体系110写到连续的位置602。因为数据元素存储在连续的位置602处,所以相比于每个数据元素进行一系列较窄数据宽度的操作,可以使用更大数据宽度的业务、比如高速缓存线业务来进行对数据的操作。
图7例示根据实施例在有源存储器件中的数据传送时的数据过滤的例子。包括由诸如图4的处理元件400的处理元件使用聚集指令或分散指令而发起的传送的数据传送可以包括并入到该指令中以限制所选值的存储的过滤功能。例如,当作为聚集或分散指令的一部分由图4的处理元件400读取数据值时,图4的ALU418和/或LSY420可以应用过滤标准以阻止某些值被存储。在图7的例子中,根据具有过滤标准的传送指令706,在存储器位置702处读取的数据在被存储到存储器位置704之前被过滤。该具有过滤标准的传送指令706可以被格式化以指示:源地址、指示将源地址和目的地地址递增的量的步幅大小、以及指示用于检查和过滤的多个相继的位置的计数。步幅大小可以对于所有源地址和目的地地址是单个值,或者可以是向量以支持与每个地址相关联的不同步幅大小。该具有过滤标准的传送指令706中的计数可以被处理元件覆写以指示在目的地地址储存储的值的数量。该具有过滤标准的传送指令706可以定义目的地地址和要应用的过滤标准。在图7的例子中,过滤标准配置为将大于10(>10)的所有值从存储器位置702传送到存储器位置704。过滤标准还可以被定义为传送处理包括或排除的值。
尽管仅单个源地址和目的地地址被包括在图7的具有过滤标准的示例传送指令706中,但是将理解,可以包括多个地址作为相同指令的部分,比如图5和6中的为聚集和分散指令而提供的例子。该具有过滤标准的传送指令706允许主处理器使用单个指令发起由处理元件对数据的选择性块传送。该主处理器还可以通过将具有过滤标准的传送指令706的实例发送到多个处理元件(比如图2的处理元件210、218和230)而进一步分发工作量,以进行跨过多个存储器区块或者多个有源存储器件的同时传送和过滤。
图8绘出在诸如图1-3的有源存储器件的有源存储器件中用于聚集、分散和过滤数据的示例处理800。图8所示的块可以由有源存储器件中的图1-4的处理元件中的一个进行。例如,可以由有源存储器件中的一个处理元件执行各块,其中该处理元件访问存储器的部分(例如与该处理元件共享堆叠的存储器区块)并对从该存储器访问的数据进行操作。为了说明的目的,参考图4的处理元件400描述该处理元件,其中处理元件400可以是图2的处理元件210、218或230的实施例。尽管关于有源存储器件描述了图8,但是将理解,图8的处理可以在包括与其他配置的存储器通信的处理元件400的系统中实现,所述其他配置的存储器例如远离处理元件400定位的存储器。因而,处理元件400不需要位于有源存储器件内,并且可以对包括例如位于分离的应用存储器件上的存储器的位于远处的存储器进行聚集/分散/过滤操作。
在块802,处理元件400取出并解码指令用于由处理元件400执行。可以从指令缓冲器406取出该指令并由图4的解码器410解码。
在块804,处理元件400确定该指令是否是聚集指令。在块806,基于确定该指令是聚集指令,处理元件400确定要从中聚集数据元素的存储器中的多个源地址、步幅大小以及存储器中的目的地地址。在块808,应用为该指令定义的过滤标准,处理元件400将来自多个源地址的一个或多个聚集的数据元素传送到存储器中以该目的地地址开始的连续位置。
所述指令、多个源地址、目的地地址以及可选的过滤标准可以由与处理元件400通信的主处理器提供,所述主处理器例如图2的主处理器224。可以以有效地址格式从主处理器接收多个源地址和目的地地址,并且在进行向存储器的加载和存储操作时,可以由处理元件400使用图4的ERAT422将其翻译为真实地址。可以使用来自主处理器的源地址指针以标识存储器中包含该多个源地址的位置。类似地,可以使用来自主处理器的目的地地址指针来标识存储器中包含该目的地地址的位置,或者可以直接提供该目的地地址。该多个源地址标识在存储器中的不连续的位置。该有源存储器件可以是三维存储器立方体,其中该存储器被划分为三位分块的区域作为存储器区块,并且通过有源存储器件中的一个或多个存储器控制器访问该存储器中的不连续的位置。
在块810,处理元件400确定该指令是否是分散指令。在块812,基于确定该指令是分散指令,处理元件400确定要从中读取连续位置处的多个数据元素的存储器中的源地址、步幅大小以及用于在不连续的位置处存储数据元素的存储器中的一个或多个目的地地址。在块814,应用为该指令定义的任何过滤标准,处理元件将该数据元素中的一个或多个从源地址传送到一个或多个目的地地址,。
在块816,处理元件400确定该指令是否是除了聚集或分散指令之外的具有过滤标准的传送指令。在块818,处理元件400应用该过滤标准以根据过滤标准限制在源地址和目的地地址之间的传送。处理800继续处理来自指令缓冲器406的进一步指令。
本文所使用的术语仅仅是为了描述特定的实施例的目的,而不意图限制本发明。如此处所使用的,单数形式“一”、“一个”和“该”意图也包括复数形式,除非上下文清楚地另外指明。还应该理解,当在本说明书中使用时,术语“包括”和/或“包括有”指明所述特征、整体、步骤、操作、元素和/或组件的存在,但不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或它们的组合的存在或添加。
在以下权利要求书中的相应的结构、材料、行为和所有部件或步骤加功能元素的等价物也意图包括用于与明确声明的其它要求保护的元素相结合来执行功能的任何结构、材料、或行为。已经为了例示和描述的目的给出对本发明的描述,但并不旨在穷举或将本发明限制到公开的形式。对本技术领域的普通技术人员来说,不脱离本发明的范围和精神的许多修改和变型将是显而易见的。选取和描述实施例以便最佳地说明本发明的原理及其实际应用,以及使本领域其他普通技术人员理解对于具有适合于预期的具体用途的各种修改的各种实施例理解本发明。
在此绘出的流程图仅仅是一个例子。不脱离本发明的精神,可以存在对此图或其中所述的步骤(或操作)的变化。例如,可以按不同的顺序进行各步骤,或者可以添加、删除或修改步骤。所有这些变化被认为是要求保护的本发明的一部分。
尽管已经描述了本发明的优选实施例,但是将理解,本领域技术人员现在以及将来可以做出落在接下来的权利要求的范围内的各种改进和增强。这些权利要求应该被解释为主张对于首次描述的本发明的适当的保护范围。

Claims (20)

1.一种用于在有源存储器件中传送数据的方法,该有源存储器件包括存储器和处理元件,该方法包括:
取出并解码指令,用于由该处理元件执行;以及
基于确定该指令是聚集指令,该处理元件进行:
确定要从中聚集数据元素的所述存储器中的多个源地址;
确定所述存储器中的目的地地址;以及
将一个或多个聚集的数据元素从所述多个源地址传送到所述存储器中的以所述目的地地址开始的连续位置。
2.如权利要求1的方法,其中所述指令、所述多个源地址以及所述目的地地址由与所述处理元件通信的主处理器提供。
3.如权利要求2的方法,其中以有效地址格式从所述主处理器接收所述多个源地址和所述目的地地址,并且当进行向所述存储器的加载和存储操作时,由所述处理元件将其翻译为真实地址格式。
4.如权利要求2的方法,其中确定从中聚集数据元素的所述存储器中的多个源地址还包括从所述主处理器接收源地址指针,该源地址指针标识包含所述多个源地址的、所述存储器中的位置。
5.如权利要求1的方法,其中所述多个源地址标识所述存储器中的不连续的位置,所述有源存储器件是三维存储器立方体,所述存储器被划分为三维分块的区域作为存储器区块,并且通过所述有源存储器件中的一个或多个存储器控制器访问所述存储器中的不连续的位置。
6.如权利要求1的方法,还包括:
基于确定所述指令是分散指令:
确定要从中读取在连续位置处的多个数据元素的所述存储器中的源地址;
确定用于在不连续的位置处存储所述数据元素的所述存储器中的一个或多个目的地地址;以及
将所述数据元素中的一个或多个从所述源地址传送到所述一个或多个目的地地址。
7.如权利要求6的方法,还包括:
标识与所述指令相关联的过滤标准;以及
应用所述过滤标准以根据所述过滤标准限制在源地址和目的地地址之间的传送。
8.一种有源存储器件的处理元件,包括:
加载存储队列,配置为与所述有源存储器件中的存储器接口;
指令缓冲器,耦接到所述加载存储队列,并且配置为接收指令;以及
解码器,耦接到所述指令缓冲器,所述解码器配置为解码所述指令,并且基于确定所述指令是聚集指令,所述处理元件配置为进行:
确定要从中聚集数据元素的存储器中的多个源地址;
确定存储器中的目的地地址;以及
将一个或多个聚集的数据元素从所述多个源地址传送到存储器中的以所述目的地地址开始的连续位置。
9.如权利要求8的处理元件,其中所述指令、所述多个源地址以及所述目的地地址由与所述处理元件通信的主处理器提供。
10.如权利要求9的处理元件,还包括有效-真实地址翻译单元,其中以有效地址格式从所述主处理器接收所述多个源地址和所述目的地地址,并且由所述有效-真实地址翻译单元将其翻译为真实地址格式。
11.如权利要求9的处理元件,其中确定从中聚集数据元素的存储器中的多个源地址还包括从所述主处理器接收源地址指针,该源地址指针标识包含所述多个源地址的、所述存储器中的位置。
12.如权利要求8的处理元件,其中基于确定所述指令是分散指令,所述处理元件还配置为进行:
确定要从中读取在连续位置处的多个数据元素的所述存储器中的源地址;
确定用于在不连续的位置处存储所述数据元素的所述存储器中的一个或多个目的地地址;以及
将所述数据元素中的一个或多个从所述源地址传送到所述一个或多个目的地地址。
13.如权利要求12的处理元件,其中所述解码器还配置为标识与所述指令相关联的过滤标准,并且所述处理元件还配置为应用所述过滤标准以根据所述过滤标准限制在源地址和目的地地址之间的传送。
14.一种有源存储器件,包括:
存储器;以及
处理元件,配置为与所述存储器通信,所述处理元件配置为进行包括以下处理的方法:
取出并解码指令,用于由该处理元件执行;以及
基于确定该指令是聚集指令,该处理元件进行:
确定要从中聚集数据元素的所述存储器中的多个源地址;
确定所述存储器中的目的地地址;以及
将一个或多个聚集的数据元素从所述多个源地址传送到所述存储器中的以所述目的地地址开始的连续位置。
15.如权利要求14的有源存储器件,其中所述指令、所述多个源地址以及所述目的地地址由与所述处理元件通信的主处理器提供。
16.如权利要求15的有源存储器件,其中以有效地址格式从所述主处理器接收所述多个源地址和所述目的地地址,并且当进行向所述存储器的加载和存储操作时,由所述处理元件将其翻译为真实地址格式。
17.如权利要求15多有源存储器件,其中确定从中聚集数据元素的所述存储器中的多个源地址还包括从所述主处理器接收源地址指针,该源地址指针标识包含所述多个源地址的、所述存储器中的位置。
18.如权利要求14多有源存储器件,其中所述多个源地址标识所述存储器中的不连续的位置,所述有源存储器件是三维存储器立方体,所述存储器被划分为三维分块的区域作为存储器区块,并且通过所述有源存储器件中的一个或多个存储器控制器访问所述存储器中的不连续的位置。
19.如权利要求14多有源存储器件,其中基于确定所述指令是分散指令,所述处理元件还配置为进行:
确定要从中读取在连续位置处的多个数据元素的所述存储器中的源地址;
确定用于在不连续的位置处存储所述数据元素的所述存储器中的一个或多个目的地地址;以及
将所述数据元素中的一个或多个从所述源地址传送到所述一个或多个目的地地址。
20.如权利要求19的有源存储器件,其中所述处理元件还配置为标识与所述指令相关联的过滤标准,并应用所述过滤标准以根据所述过滤标准限制在源地址和目的地地址之间的传送。
CN201310561131.2A 2012-11-12 2013-11-12 有源存储器件聚集、分散和过滤 Pending CN103810125A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/674,520 US10049061B2 (en) 2012-11-12 2012-11-12 Active memory device gather, scatter, and filter
US13/674,520 2012-11-12

Publications (1)

Publication Number Publication Date
CN103810125A true CN103810125A (zh) 2014-05-21

Family

ID=50682878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310561131.2A Pending CN103810125A (zh) 2012-11-12 2013-11-12 有源存储器件聚集、分散和过滤

Country Status (2)

Country Link
US (1) US10049061B2 (zh)
CN (1) CN103810125A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108292293A (zh) * 2015-12-18 2018-07-17 英特尔公司 用于得到多个向量元素操作的指令和逻辑
CN108351835A (zh) * 2015-11-23 2018-07-31 英特尔公司 用于高速缓存控制操作的指令和逻辑
CN110968533A (zh) * 2018-09-28 2020-04-07 三星电子株式会社 存储器设备和用于存储器设备之间直接通信的存储器系统
CN111459548A (zh) * 2019-01-22 2020-07-28 图核有限公司 双加载指令
CN112631597A (zh) * 2019-10-09 2021-04-09 中科寒武纪科技股份有限公司 混洗方法及计算装置
CN113626079A (zh) * 2020-05-08 2021-11-09 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品
WO2021223644A1 (zh) * 2020-05-08 2021-11-11 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品
CN113806246A (zh) * 2020-06-16 2021-12-17 安徽寒武纪信息科技有限公司 数据处理装置及方法以及相关产品

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9811464B2 (en) * 2014-12-11 2017-11-07 Intel Corporation Apparatus and method for considering spatial locality in loading data elements for execution
US20170177364A1 (en) * 2015-12-20 2017-06-22 Intel Corporation Instruction and Logic for Reoccurring Adjacent Gathers
US10067708B2 (en) 2015-12-22 2018-09-04 Arm Limited Memory synchronization filter
US20170177543A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Aggregate scatter instructions
US20170371657A1 (en) * 2016-06-24 2017-12-28 Qualcomm Incorporated Scatter to gather operation
US10528518B2 (en) 2016-08-21 2020-01-07 Mellanox Technologies, Ltd. Using hardware gather-scatter capabilities to optimize MPI all-to-all
US10474461B2 (en) 2016-09-22 2019-11-12 Qualcomm Incorporated Instruction-based synchronization of operations including at least one SIMD scatter operation
US10353601B2 (en) * 2016-11-28 2019-07-16 Arm Limited Data movement engine
US20190095340A1 (en) * 2017-09-28 2019-03-28 Hewlett Packard Enterprise Development Lp Discontiguous storage and contiguous retrieval of logically partitioned data
US10887252B2 (en) * 2017-11-14 2021-01-05 Mellanox Technologies, Ltd. Efficient scatter-gather over an uplink
TW201935305A (zh) * 2018-02-02 2019-09-01 美商多佛微系統公司 用於後快取互鎖之系統和方法
CN110737396B (zh) * 2018-07-20 2023-08-11 伊姆西Ip控股有限责任公司 数据复制的方法、设备和计算机存储介质
US10782918B2 (en) * 2018-09-06 2020-09-22 Advanced Micro Devices, Inc. Near-memory data-dependent gather and packing
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
CN111679785A (zh) * 2019-03-11 2020-09-18 三星电子株式会社 用于处理操作的存储器装置及其操作方法、数据处理系统
US11061676B2 (en) 2019-04-24 2021-07-13 International Business Machines Corporation Scatter gather using key-value store
US11086808B2 (en) * 2019-11-25 2021-08-10 Micron Technology, Inc. Direct memory access (DMA) commands for noncontiguous source and destination memory addresses
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105075A (en) * 1997-08-05 2000-08-15 Adaptec, Inc. Scatter gather memory system for a hardware accelerated command interpreter engine
CN1795442A (zh) * 2003-05-26 2006-06-28 皇家飞利浦电子股份有限公司 用于在主存储器和存储装置之间传送数据的方法和设备
CN1991809A (zh) * 2005-12-19 2007-07-04 威盛电子股份有限公司 可执行分散/聚集直接存储器存取的系统与方法
CN101123113A (zh) * 2007-09-20 2008-02-13 上海交通大学 同步动态随机访问存储器的访问方法及控制装置
CN101149714A (zh) * 2006-09-18 2008-03-26 国际商业机器公司 用于执行直接存储器存取的方法和系统
CN101241478A (zh) * 2008-03-07 2008-08-13 威盛电子股份有限公司 数据传送方法
CN101556565A (zh) * 2009-01-22 2009-10-14 杭州中天微系统有限公司 嵌入式处理器的片上高性能dma
CN101876948A (zh) * 2009-04-30 2010-11-03 国际商业机器公司 在本地存储器中支持数据的不连续访问的方法和设备
CN102171649A (zh) * 2008-12-22 2011-08-31 英特尔公司 用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统
CN102232215A (zh) * 2008-10-30 2011-11-02 美光科技公司 多串行接口堆叠裸片存储器架构
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2270780A (en) 1992-09-21 1994-03-23 Ibm Scatter-gather in data processing systems.
US5537606A (en) * 1995-01-31 1996-07-16 International Business Machines Corporation Scalar pipeline replication for parallel vector element processing
WO1999034273A2 (en) 1997-12-30 1999-07-08 Lsi Logic Corporation Automated dual scatter/gather list dma
US6105080A (en) * 1997-12-30 2000-08-15 Lsi Logic Corporation Host adapter DMA controller with automated host reply capability
US7392256B2 (en) 2000-03-02 2008-06-24 International Business Machines Corporation Data gather scatter—redistribution machine
US6732198B1 (en) * 2001-07-20 2004-05-04 Lsi Logic Corporation Methods and apparatus for saving and restoring scatter/gather list processing context in intelligent controllers
US6678754B1 (en) * 2001-07-30 2004-01-13 Lsi Logic Corporation Methods and structure for recursive scatter/gather lists
US6754732B1 (en) 2001-08-03 2004-06-22 Intervoice Limited Partnership System and method for efficient data transfer management
US6904473B1 (en) * 2002-05-24 2005-06-07 Xyratex Technology Limited Direct memory access controller and method of filtering data during data transfer from a source memory to a destination memory
US7389364B2 (en) 2003-07-22 2008-06-17 Micron Technology, Inc. Apparatus and method for direct memory access in a hub-based memory system
US7287101B2 (en) * 2003-08-05 2007-10-23 Intel Corporation Direct memory access using memory descriptor list
US7689814B2 (en) * 2004-12-20 2010-03-30 Sony Computer Entertainment Inc. Methods and apparatus for disabling error countermeasures in a processing system
US8397013B1 (en) * 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US20070162647A1 (en) * 2005-12-19 2007-07-12 Via Technologies, Inc. System and Method for Performing Scatter/Gather Direct Memory Access Transfers
US7620780B1 (en) 2007-01-23 2009-11-17 Xilinx, Inc. Multiprocessor system with cache controlled scatter-gather operations
US7934025B2 (en) * 2007-01-24 2011-04-26 Qualcomm Incorporated Content terminated DMA
US8176252B1 (en) 2007-11-23 2012-05-08 Pmc-Sierra Us, Inc. DMA address translation scheme and cache with modified scatter gather element including SG list and descriptor tables
JP5573134B2 (ja) * 2009-12-04 2014-08-20 日本電気株式会社 ベクトル型計算機及びベクトル型計算機の命令制御方法
US20140040532A1 (en) * 2012-08-06 2014-02-06 Advanced Micro Devices, Inc. Stacked memory device with helper processor

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105075A (en) * 1997-08-05 2000-08-15 Adaptec, Inc. Scatter gather memory system for a hardware accelerated command interpreter engine
CN1795442A (zh) * 2003-05-26 2006-06-28 皇家飞利浦电子股份有限公司 用于在主存储器和存储装置之间传送数据的方法和设备
CN1991809A (zh) * 2005-12-19 2007-07-04 威盛电子股份有限公司 可执行分散/聚集直接存储器存取的系统与方法
CN101149714A (zh) * 2006-09-18 2008-03-26 国际商业机器公司 用于执行直接存储器存取的方法和系统
CN101123113A (zh) * 2007-09-20 2008-02-13 上海交通大学 同步动态随机访问存储器的访问方法及控制装置
CN101241478A (zh) * 2008-03-07 2008-08-13 威盛电子股份有限公司 数据传送方法
CN102232215A (zh) * 2008-10-30 2011-11-02 美光科技公司 多串行接口堆叠裸片存储器架构
CN102171649A (zh) * 2008-12-22 2011-08-31 英特尔公司 用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统
CN101556565A (zh) * 2009-01-22 2009-10-14 杭州中天微系统有限公司 嵌入式处理器的片上高性能dma
CN101876948A (zh) * 2009-04-30 2010-11-03 国际商业机器公司 在本地存储器中支持数据的不连续访问的方法和设备
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108351835A (zh) * 2015-11-23 2018-07-31 英特尔公司 用于高速缓存控制操作的指令和逻辑
CN108292293A (zh) * 2015-12-18 2018-07-17 英特尔公司 用于得到多个向量元素操作的指令和逻辑
CN110968533A (zh) * 2018-09-28 2020-04-07 三星电子株式会社 存储器设备和用于存储器设备之间直接通信的存储器系统
CN111459548A (zh) * 2019-01-22 2020-07-28 图核有限公司 双加载指令
CN111459548B (zh) * 2019-01-22 2024-03-22 图核有限公司 双加载指令
CN112631597A (zh) * 2019-10-09 2021-04-09 中科寒武纪科技股份有限公司 混洗方法及计算装置
CN113626079A (zh) * 2020-05-08 2021-11-09 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品
WO2021223644A1 (zh) * 2020-05-08 2021-11-11 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品
WO2021223642A1 (zh) * 2020-05-08 2021-11-11 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品
CN113806246A (zh) * 2020-06-16 2021-12-17 安徽寒武纪信息科技有限公司 数据处理装置及方法以及相关产品

Also Published As

Publication number Publication date
US20140136811A1 (en) 2014-05-15
US10049061B2 (en) 2018-08-14

Similar Documents

Publication Publication Date Title
CN103810125A (zh) 有源存储器件聚集、分散和过滤
US11681650B2 (en) Execution engine for executing single assignment programs with affine dependencies
Foley et al. Ultra-performance Pascal GPU and NVLink interconnect
US9632777B2 (en) Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9104532B2 (en) Sequential location accesses in an active memory device
US9110778B2 (en) Address generation in an active memory device
US20090300327A1 (en) Execution engine
US20140149680A1 (en) Low latency data exchange
US20110067039A1 (en) Autonomous memory architecture
CN104049937A (zh) 裸露向量管线之间的链接
US9390038B2 (en) Local bypass for in memory computing
CN108874730A (zh) 一种数据处理器及数据处理方法
US20230102690A1 (en) Near-memory engine for reducing bandwidth utilization in sparse data applications
US9535694B2 (en) Vector processing in an active memory device
WO2021115149A1 (zh) 神经网络处理器、芯片和电子设备
CN110750210B (zh) 存储系统
EP3108358B1 (en) Execution engine for executing single assignment programs with affine dependencies
CN109983443A (zh) 实现分叉非易失性存储器快速驱动器的技术
US20060146852A1 (en) Dataport and methods thereof
KR20210108487A (ko) 저장 디바이스 동작 오케스트레이션
US20230305970A1 (en) Streaming Transfers and Ordering Model
WO2023183015A1 (en) Streaming transfers and ordering model

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140521

RJ01 Rejection of invention patent application after publication