CN112579487A - 用于去耦合的存取-执行近存储器处理的技术 - Google Patents

用于去耦合的存取-执行近存储器处理的技术 Download PDF

Info

Publication number
CN112579487A
CN112579487A CN202010592587.5A CN202010592587A CN112579487A CN 112579487 A CN112579487 A CN 112579487A CN 202010592587 A CN202010592587 A CN 202010592587A CN 112579487 A CN112579487 A CN 112579487A
Authority
CN
China
Prior art keywords
memory
data
access
circuit
local memory
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
CN202010592587.5A
Other languages
English (en)
Inventor
B·阿金
A·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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN112579487A publication Critical patent/CN112579487A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • 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
    • 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/1689Synchronisation and timing concerns
    • 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/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/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Advance Control (AREA)

Abstract

用于去耦合的存取‑执行近存储器处理的技术包括近存储器处理器的第一电路或者第二电路的示例接收指令,所述指令使得所述第一电路实现系统存储器存取操作以存取一个或多个数据团块,并且所述指令使得所述第二电路使用所述一个或多个数据团块实现计算操作。

Description

用于去耦合的存取-执行近存储器处理的技术
技术领域
描述通常涉及与用于去耦合的存取-执行近存储器处理的架构相关联的技术。
背景技术
处理器的用于处理数据的能力提高与存储器存取技术的相对应提高从偏爱延迟和能耗的处理器的角度不匹配。尝试从存储器侧解决这些延迟和能耗差异可以包括使用诸如近存储器处理(NMP)或者存储器中处理(PIM)架构的处理架构类型。NMP架构可以被配置为允许在处理器或者CPU的存储器侧上较高的数据带宽存取同时考虑在处理器或者CPU与主存储器或者系统存储器之间的单程往返数据移动。单程往返数据移动会使能带宽-跳跃加速、数据并行以及高字节/操作比计算。在一些NMP架构中,简单的处理元件可以位于存储器侧上。例如,许多小的通用核心、专用的固定功能加速器或者甚至是图形处理单元(GPU)
附图说明
图1说明了示例系统。
图2说明了示例集中式近存储器处理器。
图3说明了示例分布式近存储器处理器。
图4说明了示例过程。
图5说明了示例第一装置。
图6说明了示例第一逻辑流。
图7说明了示例第一存储介质。
图8说明了示例第二装置。
图9说明了示例第二逻辑流。
图10说明了示例第二存储介质。
图11说明了示例计算平台。
具体实施方式
实现为加速带宽跳跃、数据并行和高字节/操作比计算的NMP架构对于处理器的存储器侧上的处理单元会具有有限的管芯区域、功率预算和/或逻辑复杂性。作为这些有限的结果,通用、可编程NMP架构可能不会充分利用在存储器内侧潜在可用的高水平的存储器带宽。尽管域特定加速器可以是有效利用与管芯区域、功率预算和/或逻辑复杂性有关的这些限制资源的一种方式,但是域特定加速器可能仅执行工作载荷的有限集。
NMP架构的先前示例尝试经由使用环境中包括有限的管芯区域、有限的功率预算和/或逻辑复杂性的Von-Neumann风格多核心处理器来提取更大的存储器带宽利用。使用Von-Newmann风格多核心处理器包括多个核心,每一个核心负责(i)发现程序或者应用流并且发出存储器请求(例如,存取)以及(ii)对存取的数据实际执行计算(例如,执行)。然而,这些类型的NMP架构典型地不会显著减少存储器存取延迟。因此,存储器侧上的Von-Neumann风格多核心处理器会由于数据的相对长的延迟载荷/存储与使用存取的数据进行的计算的交织而在提取可接受的存储器水平并行性方面变为限制。并且,这些类型的NMP架构会被过度供应以执行这些基本的存取/执行任务二者。可以利用数据并行特征作为朝向更加高效的路径的单指令多数据(SIMD)执行可以是一种可能的解决方案,其中,多个“执行”动作针对每一个“存取”动作进行捆绑。本公开中描述的示例可以构建于SIMD执行概念之上并且可以包括在单独的专用核心上去耦合存取和执行任务以在不完全牺牲可编程性的情况下通过使每一个专用核心上的过度供应最小化来实现NMP的改善的管芯区域和功率效率。
图1说明了示例系统100。在一些示例中,如图1所示,系统100包括主机应用105、系统存储器110和经由一个或多个通道120耦合到系统存储器的近存储器处理器(NMP)130。并且,如图1所示,NMP控制器131可以与NMP 130耦合并且位于NMP 130外侧(例如,在单独的管芯上)。在其它示例中,尽管NMP控制器131可以存在于NMP 130内侧(例如,在相同的管芯上)。
根据一些示例,如图1所示,NMP 130可以包括本地存储器132、存取处理器(AP)134、执行处理器(EP)136和向量功能单元(VFU)138。如下面更多描述的,AP 134和EP 136可以代表不同类型的功能核心以实现某些指令集架构(ISA)和微架构特征。例如,与传统的、多核心、非专用风格NMP相比较,AP 134专用于系统存储器110和本地存储器132之间的数据移动并且可以更加致力于(aggressive)发现和发出存储器请求。并且,与VFU 138耦合的EP136可以在不执行加载/存储指令或者存储器地址转换的情况下执行计算。对于AP、EP或者VFU的这些专用可以最小化对于每一个核心类型的资源过度供应。当诸如NMP 130的NMP以有限的管芯区域和/或功率预算操作时,最小化资源过度供应可以导致改善的存储器带宽利用和更大的延迟容限。
在一些示例中,如下面更多描述的,AP 134、EP 136和VFU 138可以是用于近存储器处理的去耦合存取-执行架构(DAE-NMP)的类型的一部分。这一类型的DAE-NMP架构的主要动机在于,与经由通过使用有限的区域/功率/复杂性资源与系统存储器110耦合的通道120可用的带宽相比较,能够利用NMP 130内(例如,在本地存储器132和AP 134或者VFU 138之间)可能高水平的可用的内部带宽,以便实现包括诸如AP 134、EP 136或者VFU 138的核心的可编程NMP单元。尽管这一公开可以主要强调或者描述通用可编程NMP单元,但是示例可以被扩展为包括域特定硬件加速器(例如,神经处理单元、矩阵/张量引擎、图形处理单元等)。
根据一些示例,主机应用105可以代表但不局限于由可以将指令路由到NMP控制器131的计算平台(例如,服务器)托管的应用或者软件的类型。例如,网页排名应用、稀疏矩阵-向量乘法(SoMV)应用、流应用或者模板应用。在一些示例中,NMP控制器131可以将从主机应用105接收的指令分支为要由包括在NMP 130中的一个或多个AP 134、EP 136或者VUF138实现或者控制的单独的数据存取和计算指令。如下面更多描述的,一个或多个AP 134以及一个或多个EP 136之间的同步促进分支的指令的执行以生成接着对于主机应用105可用或者被提供到主机应用105的结果。在一些示例中,NMP控制器131可以用作编译器的类型以对从主机应用105接收的指令进行转换,因此这些指令可以被实现在包括在NMP 130中的DAE-NMP架构中以使用有限的区域/功率/复杂性资源来产生及时的结果。
在一些示例中,包括在系统存储器110中的存储器设备112或者包括在NMP130中的本地存储器132可以包括非易失性和/或易失性类型的存储器。易失性类型的存储器可以包括但不局限于随机存取存储器(RAM)、动态RAM(DRAM)、双数据率同步动态RAM(DDR SDRAM)、静态随机存取存储器(SRAM)、晶闸管RAM(T-RAM)或者零-电容器RAM(Z-RAM)。非易失性类型的存储器可以包括具有三维(3D)交叉点存储器结构的可字节或者可块寻址类型的非易失性存储器,包括但不局限于硫族化物相变材料(例如,硫族化物玻璃),以下将其称为“3-D交叉点存储器”。非易失性类型的存储器还可以包括其它类型的可字节或者可块寻址的非易失性存储器,例如但不局限于多阈值水平NAND闪存、NOR闪存、单级或者多级相变存储器(PCM)、电阻存储器、纳米导线存储器、铁电晶体管随机存取存储器(FeTRAM)、防铁电存储器、包括金属氧化物基、氧空位基和传导桥随机存取存储器(CB-RAM)的电阻存储器、自旋电子磁结存储器、磁隧道结(MTJ)存储器、域壁(DW)和自旋轨道转移(SOT)存储器、基于晶闸管的存储器、结合忆阻器技术的磁阻随机存取存储器(MRAM)、自旋转移力矩MRAM(STT-MRAM)、或者上述任意的组合。
根据一些示例,系统存储器110可以被配置为两级存储器(2LM),其中系统存储器110可以用作包括系统100的计算设备或者平台的主存储器。对于这些示例,存储器设备112可以包括包含系统磁盘级存储装置的高速缓存子集的两级存储器。在这一配置中,主存储器可以包括被布置为包括易失性类型的存储器的“近存储器”和被布置为包括易失性或者非易失性类型的存储器的“远存储器”。远存储器可以包括与包括在近存储器中的易失性存储器相比较更大或者可能更慢的易失性或者非易失性存储器。远存储器可以被呈现为对于计算设备的操作系统(OS)的“主存储器”而近存储器是对于OS透明的远存储器的高速缓存。近存储器可以经由用于有效处理的高带宽、低延迟方式耦合到NMP 130,包括使用包括在通道120中的一个或多个存储器通道。远存储器可以经由相对低的带宽、高延迟方式耦合到NMP 130,所述相对低的带宽、高延迟方式包括使用包括在通道120中的一个或多个其它存储器通道。
图2说明了示例集中式NMP 120。在一些示例中,集中式NMP 200可以描绘在本地存储器132周围集中的集中式DAE-NMP组织或架构的类型。对于这些示例,如在图2中示出的,AP 134可以经由内部链路222与存储器通道120耦合。内部链路122例如可以包括硅通孔(TSV)总线、拱顶(vault)或者子阵列,这些可以基于在与存储器通道120耦合的系统存储器和/或包括在本地存储器132中的系统存储器中实现的存储器技术的类型。并且,作为集中式NMP 200的一部分,同步链路225可以代表AP 134和EP 136之间的一个或多个专用连接以促进交换一个或多个同步基元,以便支持用于单独实现存取和计算操作的过程同步。并且,作为集中式NMP 200的一部分,控制链路235可以使EP 136能够向VFU 138-1到138-n发送出控制消息,其中“n”代表大于3的任何正整数。控制消息可以控制与由EP 136接收的计算指令相关联的计算迭代的流。并且,作为集中式NMP 200的一部分,耦合在本地存储器132和相应的VFU 138-1到138-n之间的VRF链路242-1到242-n可以代表单独的向量寄存器文件(VRF)以将这些VFU直接附加到本地存储器132的至少部分。
根据一些示例,AP 134可以包括用于实现与数据移动或者存储器地址计算有关的指令的逻辑和/或特征。AP 134的逻辑和/或特征可以实现数据移动指令的丰富集,可以包括但不局限于加载/存储操作、聚集/散射操作、间接操作、拖曳(shuffle)操作或者置换操作。然而,包括但不局限于浮点数据类型操作、高级计算/向量运算(例如,功率、指数、根、对数、点积、乘积累加等)不被AP 134的逻辑和/或特征支持。注意到,包括在AP 134中的逻辑和/或特征可以仍然实现例如与存储器地址计算相关联的整数算术运算的子集。对于可以具有有限的管芯区域或者功率预算的由集中式NMP 200代表的示例DAE-NMP架构,AP 134可以提供用于将更多资源专用于创建不包括复杂计算操作的增强的数据移动微架构的方式。与通用/非专用核心相比较,这可以降低资源过度供应并且导致更好的管芯区域利用和/或能量效率。
在一些示例中,AP 134还可以包括用于实现或者执行地址转换(translation)和存储器管理的逻辑和/或特征。例如,利用典型地被要求用于通用计算的虚拟存储器系统,存取系统存储器可以要求许可、所有权、边界检查以及虚拟到物理地址转换。这些类型的功能可以由AP 134的逻辑和/或特征支持。根据一些示例,包括在AP 134中的逻辑和/或特征可以结合存储器管理单元(MMU)和指令&数据转换后备缓冲器(I&D-TLB)层级,这可以类似于由传统、通用CPU或者处理器实现的那些。
根据一些示例,EP 136可以包括用于编排或者控制计算操作的逻辑和/或特征。例如,EP 136的逻辑和/或特征可以控制对浮点数据类型的高级向量计算指令和操作(例如,由VFY 138-1到138-n执行)。作为这一控制的一部分,EP 136的逻辑和/或特征可以处理/控制存取指令、解码指令、控制流解析指令、依赖检查指令和这些指令的引退。对于这些示例,与这些类型的计算指令相关联的实际计算可以由一个或多个VUF 138-1到138-n执行。例如,基于执行指令或程序的控制流,EP 136的逻辑和/或特征可以经由控制链路235向包括在VFU 138-1到138-n中的一个或多个VFU发送出控制消息。VFU 138-1到138-n可以被布置为经由相应的VRF链路242-1到242-m耦合到本地存储器132的SIMD算术逻辑单元(ALU)。
在一些示例中,功能性地,对于执行指令或者程序的执行,一个或多个EP 136以及来自VFU 138-1到138-n当中的一个或多个VFU的集合可以被认为是单个计算单元。这一单个计算单元可以代表由集中式NMP 200描绘的架构的DAE-NMP类型的“执行”部分。根据一些示例,来自VFU 138-1到138-n当中的多个VFU可以共享来自EP 136当中的单个EP并且能够利用数据并行执行。根据一些示例,EP 136或者VFU 138-1到138-n可以负责仅存取本地存储器132并且不具有用于到/自系统存储器的存取的任何责任。结果,EP 136或者VFU 138-1到138-n可能不实现MMU或者I&D TLB层级,由于这些类型的功能通过AP 134经由存储器通道120存取系统存储器来实现。因而,与通用/非专用核心相比较,EP 136和/或VFU 138-1到138-n还降低了资源过度供应,并且还改善了管芯区域利用和/或能量效率。
根据一些示例,本地存储器132可以代表管芯上存储器层级。例如,其中AP 134的逻辑和/或特征处理存储器地址转换和系统存储器存取例程以将从系统存储器获得的数据放置或者暂时存储到本地存储器132,本地存储器132可以被实现为作为可寻址存储器空间的一部分的高速缓存或者高速暂存存储器的类型。尽管在图2中被描绘为单个框,但是本地存储器132可以被布置为多级层级。
在一些示例中,如上面简要提及的,同步链路225可以促进可以包括AP 134和EP136之间的一个或多个同步基元的同步信息的交换。对于这些示例,同步基元(例如,屏障、篱笆、锁定/解锁)可以是用于诸如集中式NMP 200的DAE-NMP架构的ISA的一部分。同步基元可以提供AP 134和EP 136之间的通信方式。例如,长序列计算可以被划分为团块,其中数据存取操作被映射到AP 134并且计算操作被映射到EP 136/VFU 138。这些团块可以按照管线-并行方式被执行,使得在一个或多个EP 136/VFU 138计算当前团块的同时,一个或多个AP 134可以进入一个或多个随后的团块。在其中EP/VFU吞吐量与AP存取带宽不匹配的一些示例中,AP 134可以进一步向前,例如在多个数据团块被用于计算中之前存取这些数据团块。如果AP 134进一步向前,屏障同步基元可以与EP 136交换。这一方式,完成迭代i的EP136/VFU 138使AP 134能够使用交换的屏障同步基元开始存取数据团块用于迭代i+p,其中p取决于EP/VFU和AP之间的计算吞吐量/存储器存取带宽不均衡的大小。
根据一些示例,本地存储器132可以用于AP/EP同步。对于这些示例,制造商/消费者类型操作可以使能本地存储器132被填充/排空以被用作用于同步的度量的速率。对于这一类型的度量,当以高速暂存配置来布置本地存储器132时,读取/写入计数器可以被包括在本地存储器132中。当以高速缓存配置布置本地存储器132时,有效/脏/用过的计数器可以被包括在本地存储器132中。这些类型的计数器中的两者可以由AP 134或者EP 136的逻辑和/或特征利用以增强/节流AP 134/EP 136,以便使针对AP 134的存储器存取带宽与EP136/VFU 138的计算吞吐量均衡。
图3说明了示例分布式NMP 300。在一些示例中,分布式NMP300可以描绘在单独的VFU 138当中分布本地存储器132的分布式DAE-NMP组织或者架构的类型。对于这些示例,如图3所示,AP 134-1到134-4可以经由相应的内部链路322-1到322-4与存储器通道120耦合。示例不限于4个AP和4个相应的内部链路,任意数量的AP和相应的内部链路被预期用于分布式NMP。与先前针对集中式NMP 200提及的内部链路222类似,内部链路322-1到322-4可以包括TSV总线、拱顶或者子阵列,其可以基于在与存储器通道120耦合的系统存储器中实现的和/或包括在本地存储器132中的存储器技术类型。并且,作为分布式NMP 300的一部分,同步链路325可以代表AP 134-1到134-4与EP 136-1到136-6(示例不局限于6个EP)之间的一个或多个专用连接以促进交换同步信息,所述同步信息可以包括一个或多个同步基元,以支持过程同步以用于单独实现存取和计算操作。并且,作为分布式NMP 300的一部分,片上网络(OCN)315可以代表片上网络,经由所述片上网络EP 136-1到136-4可以控制VFU 138-1到138-m,其中“m”代表大于8的任意正整数。并且,AP 134-1到134-4可以使用到存储器通道120的相应的内部链路322-1到322-4来经由OCN 315将数据路由到本地存储器132-1到132-8。
在一些示例中,来自EP 136-1到136-6当中的EP以及来自VFU 138-1到138-m当中的一个或多个VFU可以被认为是单个计算单元。这一单个计算单元可以代表由分布式NMP300描绘的DAE-NMP类型架构的“执行”部分。根据一些示例,来自VFU 138-1到138-m当中的多个VFU可以共享来自EP 136-1到136-6当中的单个EP或者由该单个EP控制,并且能够利用数据-并行执行。
根据一些示例,对于其中计算吞吐量与可用存储器存取带宽比对于NMP为高的操作场景,分布式NMP 300可以对集中式NMP 200有益。例如,如果计算吞吐量与可用存储器带宽比为8,则八个VFU可能需要同时从集中式本地存储器132读取,这将使集中式本地存储器的可用带宽饱和并且使性能降级。对于这一示例,如图2中示出的用于来自本地存储器132的集中式NMP 200的可用带宽的集中式本地存储器会变为瓶颈并且如图3示出的用于分布式NMP 300的分布式本地存储器会是优选的。分布式NMP 300将使所有八个VFU使用来自附接的分布式本地存储器的可用带宽,因此来自所有本地存储器LM-132-1到LM-132-n的全部可用本地存储器带宽将提供足够的存取带宽以匹配较高的计算吞吐量。在多层芯片的单独瓦片上组合集中式和分布式架构的混合芯片组合被预期。因而,在一些示例中,多层芯片不局限于单个类型的NMP。
在一些示例中,包括在NMP 300中的AP 134和EP 136可以包括上面针对包括在集中式NMP 200中的AP 134和EP 136提及的类似的逻辑和/或特征。两种类型的NMP的主要区别在于本地存储器132到单独VFU 138的分布以及使用片上网络存取本地存储器132和/或控制VUF 138。
图4说明了示例过程400。在一些示例中,过程400可以描绘从应用接收的指令如何由NMP实现。对于这些示例,过程400可以包括使用图1-3中示出的各种元件,这样的系统存储器110、图1中示出的主机应用105和NMP控制器131或者图1-3中示出的AP 134、EP 136和VFU 138。示例不局限于图1-3中示出的这些元件。
开始于过程4.1(指令),主机应用105可以将指令路由到NMP控制器131。在一些示例中,主机应用105可以是具有细粒度交织的计算和存储器存取操作的应用类型。换句话说,数据要经由迭代计算的类型被从系统存储器重复地存取以完成计算的每一个迭代。例如,网页排名、SpMV、流或者模板应用。对于这些类型的应用,计算吞吐量和存储器存取带宽之间的均衡有益于基于从这些类型的应用接收的指令来生成结果。
移到过程4.2(数据存取指令),一个或多个AP 134的逻辑和/或特征可以从NMP控制器131接收数据存取指令。根据一些示例,NMP控制器131可以从指令(从主机应用105接收)中分离出数据存取指令。在其它示例中,NMP控制器131可以仅仅转发从主机应用105接收的指令并且AP 134的逻辑和/或特征能够识别或者分离出数据存取指令。
移到过程4.3(计算指令),一个或多个EP 136的逻辑和/或特征可以从NMP控制器131接收计算指令。根据一些示例,NMP控制器131可以从指令(从主机应用105接收)中分离出计算指令。在其它示例中,NMP控制器131可以仅仅转发从主机应用105接收的指令并且EP136的逻辑和/或特征能够识别或者分离出计算指令。
移到过程4.4(交换同步信息),一个或多个AP 134以及一个或多个EP 136的逻辑和/或特征可以交换可以包括同步基元或者指令的同步信息。在一些示例中,交换的同步信息可以包括屏障同步基元。对于这些示例,EP 136/VFU 138对于存取的数据团块的单个计算迭代的计算吞吐量可以比AP 134经由存储器通道120存取系统存储器110以获得随后的数据团块的存储器存取带宽更高。换句话说,一个或多个EP 136/VFU 138将不得不等待在移到下一个计算迭代之前要获得的随后的数据团块。为了解决这一不均衡性,屏障同步基元可以被交换。屏障指令可以指示多少个随后的数据团块需要被存取以便将EP 136/VFU138等待时间保持得尽可能地低水平。例如,AP 134可以在提供由EP 136/VFU 138用于第一计算迭代i的数据团块之后开始获取用于迭代i+p的数据团块。如果EP 136/VFU 138具有AP134存储器存取带宽两倍的计算存取带宽,则p将需要具有至少为1的值,以便能够均衡计算吞吐量和存储器存取带宽。
移到过程4.5(映射数据存取操作),基于交换的同步基元或者指令以及数据存取指令,AP 134的逻辑和/或特征映射数据存取操作。根据一些示例,映射的数据存取操作可以指示AP 134的逻辑和/或特征如何和/或在哪里经由存储器通道120从系统存储器110拉出数据团块以及将数据团块放置在本地存储器132中的哪个地方。
移到过程4.6(映射计算操作),基于交换的同步基元或者指令以及计算指令,EP136的逻辑和/或特征映射计算操作。在一些示例中,映射的计算操作可以指示EP 136的逻辑和/或特征如何控制或者指示VFU 138何时以及如何从本地存储器132存取数据团块以用于计算每个迭代以生成一个或多个结果,以便最终被转发到主机应用105。
移到过程4.7(存取系统存储器),AP 134的逻辑和/或特征可以存取系统存储器110。在一些示例中,AP 134可以单独地包括私有存储器高速缓存以便至少暂时存储在对系统存储器110的这些存取期间从系统存储器110获得的数据团块。私有存储器高速缓存可以与由传统处理器的核心利用的非共享高速缓存类似。对于这些示例,基于上面针对过程4.5提及的数据存取操作的映射,数据团块可以被存取并且由AP 134的逻辑和/或特征至少暂时存储到相应的私有高速缓存。
移到过程4.8(提供计算指令),EP 136的逻辑和/或特征向一个或多个VFU 138提供计算指令。根据一些示例,计算指令可以基于如上面针对过程4.6提及的指示EP 136的逻辑和/或特征的计算操作的映射。
移到过程4.9(存储数据团块),AP 132的逻辑和/或特征可以将数据团块存储或者放置在本地存储器132中。在一些示例中,数据团块的存储可以根据映射的数据存储操作进行。如果以类似集中式NMP 200的配置来布置AP 134、EP 136和VFU 138,则数据团块可以被放置在集中式本地存储器132中。如果以类似分布式NMP 300的配置来布置AP 134、EP 136和VFU 138,则数据团块可以被放置在分布式本地存储器132中,所述分布式本地存储器132在VFU 138当中分布(例如,每一个VFU具有本地存储器132的其自己的分配)。
移到过程4.10(存储数据团块),一个或多个VFU 138可以根据由EP 136提供的计算指令存取放置在本地存储器132中的数据团块。这些计算指令可以指示本地存储器132的什么存储器地址要被存取以获得数据团块。
移到过程4.11(计算迭代),一个或多个VFU 138使用从本地存储器132获得的数据团块计算一个或多个迭代。根据一些示例,VFU 138的计算吞吐量可以与AP 134的存储器存取带宽均衡以将数据团块放置在本地存储器132中,以使得当数据团块被存取并用于计算迭代时,随后的数据团块在本地存储器132中可用于随后的计算迭代,VFU 138很少等待或者不等待。这一存储器存取带宽到计算吞吐量均衡可以基于上面针对过程4.4提及的交换的同步信息。
移到过程4.12(存储结果),在完成一个或多个计算迭代之后,VFU 138可以将一个或多个结果存储或者放置在本地存储器132中。在一些示例中,一个或多个结果可以基于从EP 136接收的计算指令被存储。那些指令可以指示要放置一个或多个结果的本地存储器132的存储器地址。对于这些示例,EP 136可以监视结果的放置以便确定其映射的计算操作的状态。
移到过程4.13(拉出结果),AP 134的逻辑和/或特征可以拉出或者获得由VUF 138放置在本地存储器132中的结果。根据一些示例,AP 134的逻辑和/或特征可以至少将拉出或者获得的结果暂时存储在私有高速缓存中。并且,至少部分地基于上面针对过程4.4提及的交换的同步信息来拉出或者获得结果。
移到过程4.14(存储结果),AP 134的逻辑和/或特征可以使一个或多个结果被存储到系统存储器110。在一些示例中,AP 134可以基于包括在从主机应用105接收的指令中的数据存取指令来存储一个或多个结果。
移到过程4.15(提供结果存储器地址),AP 134的逻辑和/或特征可以向NMP控制器131提供指示结果被存储在系统存储器110的哪个位置的一个或多个存储器地址。在一些示例中,结果指示可能不需要。对于这些示例,主机应用105可以监视可能在发送的指令中已经被指示的用于存储结果的存储器地址,以便确定结果何时被接收。
移到过程4.16(转发结果存储器地址),NMP控制器131可以将指示的存储地址转发到主机应用105。在一些示例中,主机应用可以存取指示的存储器地址以获得结果。
移到过程4.17(引退计算指令),EP 136的逻辑和/或特征可以发送指示引退计算指令。根据一些示例,引退计算指令的指示可以基于映射的计算操作。映射的计算操作可能已经指示在计算指令需要被引退之前要将多少个结果放置在本地存储器132中。如上面针对过程4.12提及的,EP 136监视VFU 138将结果放置到LM 132。过程400接着结束。
图5说明了装置500的示例方框图。尽管图5中示出的装置500在某些拓扑中具有有限数量的元件,但是可以意识到,根据对于给定实现的需要,装置500可以在可选的拓扑中包括更多或者更少的元件。
根据一些示例,装置500可以由诸如NMP 130的近存储器处理器的电路520支持。对于这些示例,电路520可以是ASIC、FPGA、可配置逻辑、处理器、处理器电路或者近存储器处理器的一个或多个核心。电路520可以被布置为执行逻辑或者该逻辑的一个或多个软件或固件实现的模块、组件或特征。值得注意的是,本文使用“a”、“b”和“c”以及类似的指代符意在是代表任何正整数的变量。因而,例如,如果实现设置值a=4,则用于逻辑522-a的模块、部件的软件或者固件的完整集可以包括逻辑522-1、522-2、522-3或者522-4。所呈现的示例不局限于这一上下文并且贯穿本文使用的不同变量可以代表相同或者不同的整数值。并且,“模块”、“部件”或者“特征”也可以包括存储在计算机可读介质或者机器可读介质中的软件或者固件,并且尽管特征的类型在图5中被示出为离散的框,但这不将这些类型的特征限制到不同计算机可读介质部件(例如分离的存储器等)中的存储装置。
根据一些示例,装置500可以包括与系统存储器耦合的系统存储器接口503,系统存储器耦合到包括电路520的近存储器处理器。装置500还可以包括同步接口507,电路520的逻辑和/或特征经由该同步接口507可以与近存储器处理器(与电路520分离)的附加电路交换同步信息510。装置500还可以包括内部存储器接口503,其用于存取近存储器处理器处的本地存储器。
在一些示例中,装置500还包括接收逻辑522-1。接收逻辑522-1可以由电路520执行或者支持以接收数据存取指令来存取系统存储器,该系统存储器具有由近存储器处理器的第二电路接收的相对应的计算指令。对于这些示例,数据存取指令505可以包括接收的数据存取指令。并且,第二电路是与电路520分离的电路,可以是用于实现相对应的计算指令的专用电路(例如,执行处理器)。
根据一些示例,装置500还可以包括同步逻辑522-2。同步逻辑522-2可以由电路520执行或者支持以与第二电路交换同步信息,以用于将来自存取的系统存储器的一个或多个数据团块存储到第二电路的近存储器处理器处的本地存储器,以便用于一个或多个计算迭代。对于这些示例,同步信息(Synch.Info.)510可以包括交换的同步信息。同步信息510可以通过同步接口507由同步逻辑522-2交换。
在一些示例中,装置500还可以包括映射逻辑522-3。映射逻辑522-3可以由电路520执行或者支持以基于数据存取指令和交换的同步信息映射针对第一电路的数据存取操作,以便通过系统存储器接口503存取系统存储器以获得一个或多个数据团块。对于这些示例,输入数据团块515可以包括通过系统存储器接口503存取的一个或多个数据团块。
根据一些示例,装置500还可以包括存取逻辑522-4。存取逻辑522-4可以由电路520基于由映射逻辑522-3映射的数据存取操作执行或者支持以通过系统存储器接口503存取系统存储器,以便经由一个或多个存储器通道获得输入数据团块515。存取逻辑522-4可以接着基于由映射逻辑522-3映射的数据存取操作使包括在输入数据团块515中的一个或多个数据团块通过本地存储器接口505被存储到本地存储器。这些一个或多个数据团块可以被包括在输出数据团块530中。存取逻辑522-4可以接着基于包括在同步信息510中的交换的同步信息获得一个或多个计算迭代的结果。该结果可以被包括在结果535中并且例如存取逻辑522-4可以通过本地存储器接口505获得这些结果。存取逻辑522-4可以接着基于数据存取指令使结果535被存储在系统存储器中。
装置500的各种部件可以通过各种类型的通信介质通信地耦合到彼此以协调操作。协调可以涉及信息的单向或者双向交换。例如,部件可以以通过通信介质传送的信号的形式传送信息。信息可以被实现为被分配到各种信号线的信号。在这样的分配中,每一个消息是信号。然而,进一步实施例可以可选地采用数据消息。这样的数据消息可以在各种连接上进行发送。示例连接包括并行接口、串行接口和总线接口。
本文包括代表用于执行所公开的架构的新颖方面的示例方法的逻辑流的集合。然而,为了简化解释,本文示出的一个或多个方法被示出和描述为一系列动作,本领域的技术人员将理解并且意识到,所述方法不局限于动作的顺序。一些动作可以按照与本文示出和描述的其它动作不同的顺序和/或同时发生。例如,本领域的技术人员将理解并且意识到,方法可以可选地被表示为一系列相关的状态或者事件,例如在状态图中。而且,对于新颖实现,并不是要求方法中示出的所有动作。
逻辑流可以被实现在软件、固件和/或硬件中。在软件和固件实施例中,逻辑流可以由存储在至少一个非暂时性计算机可读介质或者机器可读介质(例如,光学、磁或者半导体存储装置)上的计算机可执行指令实现。实施例不被限制在这一上下文中。
图6说明了示例逻辑流600。逻辑流600可以代表由本文描述的一个或多个逻辑、特征或者设备(例如,装置500)执行的一些或者全部操作。更具体地说,逻辑流600可以由接收逻辑522-1、同步逻辑522-2、映射逻辑522-3或者存取逻辑522-4实现。
根据一些示例,在框602处逻辑流600可以在近存储器处理器的第一电路处接收数据存取指令,以存取系统存储器,该数据存取指令具有由近存储器处理器的第二电路接收的相对应的计算指令。对于这些示例,接收逻辑522-1可以接收数据存取指令。并且,第一电路可以是电路520并且第二电路可以是用于实现相对应的计算指令的专用电路。
在一些示例中,在框604处逻辑流600可以与第二电路交换同步信息以将来自被存取的系统存储器的一个或多个数据团块存储到近存储器处理器处的本地存储器用于第二电路使用进行一个或多个计算迭代。对于这些示例,同步逻辑522-2可以交换同步信息。
根据一些示例,在框606处逻辑流600可以基于数据存取指令和交换的同步信息映射第一电路的数据存取操作以存储系统存取,以便获得一个或多个数据团块。对于这些示例,映射逻辑522-3可以映射数据存取操作。
在一些示例中,在框608处逻辑流600可以基于映射的数据存取操作经由与近存储器处理器耦合的一个或多个存储器通道存取系统存储器以获得一个或多个数据团块,并且将该一个或多个数据团块存储到本地存储器。对于这些示例,存取逻辑522-4可以存取系统存储器以获得一个或多个数据团块。
根据一些示例,在框610处逻辑流600可以基于映射的数据存取操作将一个或多个数据团块存储到本地存储器。对于这些示例,存取逻辑522-4也可以将一个或多个数据团块存储到本地存储器。
图7说明了示例存储介质700。在一些示例中,存储介质700可以是制造物品。存储介质700可以包括任何非暂时性计算机可读介质或者机器可读介质,例如光学、磁或者半导体存储装置。存储介质700可以存储各种类型的计算机可执行指令,例如用于实现逻辑流600的指令。计算机可读存储介质或者机器可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或者非易失性存储器、可移除或者不可移除存储器、可擦除或者不可擦除存储器、可写入或者可重新写入存储器等等。计算机可执行指令的示例可以包括任何适合类型的代码,例如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、面向对象的代码、可视代码等。示例不被限制在这一上下文中。
图8说明了装置800的示例方框图。尽管图8中示出的装置800在某些拓扑中具有有限数量的元件,但是可以意识到,根据给定实现的需要,装置800可以在替代的拓扑中包括更多或者更少的元件。
根据一些示例,装置800可以由诸如NMP 130的近存储器处理器的电路820支持。对于这些示例,电路820可以是ASIC、FPGA、可配置逻辑、处理器、处理器电路或者近存储器处理器的一个或多个核心。电路820可以被布置为执行逻辑、该逻辑的一个或多个软件或固件实现的模块、组件或者特征。值得注意的是,本文使用的“a”、“b”和“c”以及类似的指代符意在是代表任何正整数的变量。因而,例如,如果实现设置值a=4,则用于逻辑822-a的模块、组件的软件或者固件的完整集可以包括逻辑822-1、822-2、822-3或者822-4。所呈现的示例不被限制在这一上下文中,并且贯穿本文使用的不同变量可以代表相同或者不同的整数值。并且,“模块”、“组件”或者“特征”也可以包括存储在计算机可读介质中的软件/固件,并且尽管图8中将特征的类型示出为分立的框,但是这不将这些类型的特征限制到在不同的计算机可读介质组件(例如,单独的存储器等)中的存储。
根据一些示例,装置800可以包括同步接口803,电路820的逻辑和/或特征经由该同步接口803可以与和电路520分离的近存储器处理器的附加电路交换同步信息510。装置800还可以包括本地存储器接口805,用于在近存储器处理器处存取本地存储器。
在一些示例中,装置800还可以包括接收逻辑822-1。接收逻辑822-1可以由电路820执行或者支持以接收计算指令,在一个或多个计算迭代中使用从系统存储器存取的一个或多个数据团块,该一个或多个数据团块基于相对应的数据存取指令由近存储器处理器的第二电路存取并存储到本地存储器。对于这些示例,计算指令805可以包括接收的计算指令。并且,第二电路是与电路820分离的电路,可以是专用电路(例如,存取处理器)以实现相对应的数据存取指令。
根据一些示例,装置800还可以包括同步逻辑822-2。同步逻辑822-2可以由电路820执行或者支持以与第二电路交换同步信息,以便存取存储到本地存储器的一个或多个数据团块,以用于在一个或多个计算迭代中使用。对于这些示例,同步信息810可以通过同步接口803交换并且包括交换的同步信息。
在一些示例中,装置800也可以包括映射逻辑822-3。映射逻辑822-3可以由电路820执行或者支持,以便基于包括在计算指令805中的接收的计算指令以及包括在同步信息810中的交换的同步信息来映射计算操作,用于第一电路使用一个或多个数据团块。
根据一些示例,装置800还可以包括计算逻辑822-4以基于映射的计算操作通过本地存储器接口805存取本地存储器,以获得一个或多个数据团块,并且接着基于交换的同步信息通过本地存储器接口805将一个或多个计算迭代的结果存储到本地存储器。对于这些示例,计算逻辑822-4的存取特征822-4a可以通过本地存储器接口805存取本地存储器以获得一个或多个数据团块。计算逻辑822-4的结果特征822-4b可以基于由映射逻辑822-3映射的计算操作生成针对一个或多个计算迭代的结果,并且接着基于包括在同步信息810中的交换的同步信息通过本地存储器接口805将该结果存储到本地存储器。在一些示例中,计算逻辑822-4可以是具有结果特征822-4b或者存取特征822-4a的一个或多个向量功能单元。
装置800的各种组件可以通过各种类型的通信介质通信地耦合到彼此以协调操作。协调可以涉及信息的单向或者双向交换。例如,组件可以按照通过通信介质传送的信号的形式传送信息。信息可以被实现为被分配到各种信号线的信号。在这样的分配中,每一个消息是信号。然而,进一步实施例可以可替换地采用数据消息。这样的数据消息可以通过各种连接进行发送。示例连接包括并行接口、串行接口和总线接口。
图9说明了示例逻辑流900。逻辑流900可以代表由本文描述的一个或多个逻辑、特征或设备(例如装置800)执行的一些或者全部操作。更具体地说,逻辑流900可以由接收逻辑822-1、同步逻辑822-2、映射逻辑822-3或者计算逻辑822-4实现。
根据一些示例,在框902处逻辑流900可以在近存储器处理器的第一电路处接收计算指令以在一个或多个计算迭代中使用从系统存储器存取的一个或多个数据团块。该一个或多个数据团块由近存储器处理器的第二电路基于相对应的数据存取指令被存取并存储到近存储器处理器处的本地存储器。对于这些示例,接收逻辑822-1可以接收计算指令。并且,第一电路可以是电路820并且第二电路可以是专用电路以实现相对应的数据存取指令。
在一些示例中,在框904处逻辑流900可以与第二电路交换同步信息以存取存储到本地存储器的一个或多个数据团块,用于在一个或多个计算迭代中使用。对于这些示例,同步逻辑822-2可以交换同步信息。
根据一些示例,在框906处逻辑流900可以基于接收的计算指令和交换的同步信息映射计算操作用于第一电路使用一个或多个数据团块。对于这些示例,映射逻辑822-3可以映射计算操作。
在一些示例中,在框908处逻辑流900可以基于映射的计算操作存取本地存储器以获得一个或多个数据团块。对于这些示例,计算逻辑822-4的存取特征822-4(a)可以存储本地存储器以获得一个或多个数据团块。
根据一些示例,在框910处逻辑流900可以基于交换的同步信息将一个或多个计算迭代的结果存储到本地存储器。对于这些示例,计算逻辑822-4的结果特征822-4b可以使一个或多个计算迭代的结果被存储到本地存储器。
图10说明了示例存储介质1000。在一些示例中,存储介质1000可以是制造物品。存储介质1000可以包括任何非暂时性计算机可读介质或者机器可读介质,例如光学、磁或者半导体存储装置。存储介质1000可以存储各种类型的计算机可执行指令,例如用于实现逻辑流900的指令。计算机可读存储介质或者机器可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或者非易失性存储器,可移除或者不可移除存储器、可擦除或者不可擦除存储器、可写入或者可重写入存储器等等。计算机可执行指令的示例可以包括任何适合类型的代码,例如源代码、编码代码、解释代码、可执行代码、静态代码、动态代码、面向对象的代码、可视代码等。在这一上下文中,所述示例不被限制。
图11说明了示例计算平台1100。在一些示例中,如图11所示,计算平台1100可以包括处理组件1140、其它平台组件1150或者通信接口1160。
根据一些示例,处理组件1140可以执行或者实现用于装置500、800和/或存储介质700、1000的处理操作或者逻辑。处理组件1140可以包括各种硬件元件、软件元件或者二者的组合以实现近存储器处理器。硬件元件的示例可以包括设备、逻辑设备、组件、处理器、微处理器、管理控制器、同伴管芯(companion dice)、电路、处理器电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、ASIC、可编程逻辑器件(PLD)、数字信号处理器(DSP)、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等等。软件元件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、设备驱动器、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或者其任意组合。确定示例是使用硬件元件和/或软件元件实现可以根据任何数量的因素变化,例如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束,如对于给定示例所期望的。
在一些示例中,其它平台组件1150可以包括公共计算元件、存储器单元(包括系统存储器)、芯片集、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/O)部件(例如,数字显示器)、电源等等。存储器单元或者存储器设备的示例可以包括但不局限于一个或多个较高速度存储器单元形式的各种类型的计算机可读和机器可读存储介质,例如只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双数据速率DRAM(DDRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦出可编程ROM(EPROM)、可电擦除可编程ROM(EEPROM)、闪存、诸如铁电聚合物存储器的聚合物存储器、奥佛存储器、相变或者铁电存储器、硅-氧化物-氮-氧化物-硅(SONOS)存储器、磁卡或者光学卡、诸如独立磁盘冗余阵列(RAID)驱动的设备阵列、固态存储器设备(例如,USB存储器)、固态驱动(SSD)以及适合于存储信息的任何其它类型的存储介质。
在一些示例中,通信接口1160可以包括用于支持通信接口的逻辑和/或特征。对于这些示例,通信接口1160可以包括根据各种通信协议或者标准操作的一个或多个通信接口以通过直接或者网络通信链路进行通信。直接通信可以经由使用在一个或多个工业标准(包括后代或者变体)中描述的通信协议或者标准来发生,例如与PCIe规范、NVMe规范或者I3C规范相关联的那些。网络通信可以经由使用在由电器和电子工程师协会(IEEE)起草的一个或多个以太网标准中描述的那些通信协议或标准来发生。例如,由IEEE起草的一种这样的以太网标准可以包括但不局限于IEEE 802.3-2018、2018年8月出版的具有碰撞检测的载波感测多址(CSMA/CD)存取方法和物理层规范(以下将其称为IEEE 802.3规范)。网络通信也可以根据诸如OpenFlow硬件抽象API规范的一个或多个OpenFlow规范发生。网络通信还可以根据一个或多个Infiniband架构规范发生。
计算平台1100可以被实现在服务器或者客户端计算设备中。因此,本文描述的计算平台1100的功能和/或具体配置可以被包括在计算平台1100的各种实施例中或者在该各种实施例中省去,如对于服务器或者客户端计算设备适当期望的。
计算平台1100的组件和特征可以使用分立电路、ASIC、逻辑门和/或单个芯片架构的任意组合实现。进而,在适当时,计算平台1100的特征可以使用微控制器、FPGA和/或微处理器或者前述的任意组合被实现。注意到,硬件、固件和/或软件元件在本文可以一起或者单独被称为“逻辑”或者“电路”。
应该意识到,在图11的方框图中示出的示例性计算平台1100可以代表许多潜在实现的一个功能性描述示例。因此,划分、省去或者包括在附图中描绘的方框功能并不意指在实施例中一定要划分、省去或者包括用于实现这些功能的硬件组件、电路、软件和/或元件。
至少一个示例的一个或多个方面可以由存储在至少一个机器可读介质上的代表处理器内的各种逻辑的代表性指令实现,所述指令在由机器、计算设备或者系统读取时,使得该机器、计算设备或者系统制造逻辑以执行本文描述的技术。这样的表示被称为“IP核”并且可以与IP块类似。IP核可以被存储在有形的机器可读介质上并且被供应到各种客户或者制造设施以加载到实际制造逻辑或者处理器的制造机器中。
各种示例可以使用硬件元件、软件元件或者二者的组合实现。在一些示例中,硬件元件可以包括设备、组件、处理器、微处理器、电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或者其任意组合。确定示例是使用硬件元件和/或软件元件实现可以根据任何数量的因素变化,例如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束,如对于给定实现期望的。
一些示例可以包括制造物品或者至少一个计算机可读介质。计算机可读介质可以包括用于存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可以包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或者非易失性存储器、可移除或者不可移除存储器、可擦除或者不可擦除存储器、可写入或者可重新写入存储器等等。在一些示例中,逻辑可以包括各种软件元件,例如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或者其任意组合。
根据一些示例,计算机可读介质可以包括用于存储或者维持指令的非暂时性存储介质,所述指令在由机器、计算设备或者系统执行时,使得该机器、计算设备或者系统执行根据所描述的示例的方法和/或操作。指令可以包括任何适合类型的代码,例如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。指令可以根据预定义的计算机语言、方式或者句法实现,用于指导机器、计算设备或系统执行某些功能。指令可以使用任何适合的高级、低级、面向对象、可视、编译和/或解释的编程语言实现。
一些示例可以使用表述“在一个示例中”或者“示例”连同其派生词描述。这些术语意味着结合示例描述的特定特征、结构或者特性被包括在至少一个示例中。短语“在一个示例中”在说明书中各种位置的出现不必全部指代相同的示例。
一些示例可以使用表述“耦合”和“连接”连同其派生词描述。这些术语不必意在是彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或者更多个元件与彼此直接物理或者电学接触。然而,术语“耦合”或者“与……耦合”也可以意味着两个或者更多个元件不与彼此直接接触,但是仍然与彼此协作或者交互。
在本文描述的各种操作或功能的程度上,它们可以被描述或者定义为软件代码、指令、配置和/或数据。内容可以是直接可执行的(“对象”或者“可执行”形式)、源代码或者差异代码(“德尔塔”或者“补丁”代码)。本文描述的软件内容可以经由具有存储在其上的内容的制造物品提供,或者经由操作通信接口以经由该通信接口发送数据的方法提供。机器可读存储介质可以使得机器执行所描述的功能或者操作并且包括以机器(例如,计算设备、电子系统等)可存取的形式存储信息的任何机制,例如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪存设备等)。通信接口包括接口到硬连线、无线、光学等装置以传送到另一设备的任何机制,例如存储器总线接口、处理器总线接口、互联网连接、磁盘控制器等。通信接口可以通过提供配置参数和/或发送信号来准备通信接口以提供描述软件内容的数据信号进行配置。通信接口可以经由发送到该通信接口的一个或多个命令或者信号而被存取。
下面示例涉及本文公开的技术的附加示例。
示例1。一种示例装置可以包括近存储器处理器的第一电路。所述第一电路可以接收数据存取指令以存取系统存储器。数据存取指令可以具有由所述近存储器处理器的第二电路接收的相对应的计算指令。所述第一电路还可以与所述第二电路交换同步信息以将来自被存取的系统存储器的一个或多个数据团块存储到所述近存储器处理器处的本地存储器,用于所述第二电路使用进行一个或多个计算迭代。所述第一电路还可以基于所述数据存取指令和交换的同步信息来映射数据存取操作以用于所述第一电路存取所述系统存储器,以获得所述一个或多个数据团块。
示例2。示例1所述的装置,所述第一电路可以映射所述数据存取操作以使得获得所述一个或多个数据团块并且将所述一个或多个数据团块存储到所述本地存储器的存储器存取带宽与所述第二电路使用被存储到所述本地存储器的所述一个或多个数据团块来计算所述一个或多个计算迭代中的结果的计算吞吐量基本上匹配。
示例3。示例2所述的装置,交换的同步信息包括屏障同步基元,其用于向所述第一电路指示在所述第二电路使用所述一个或多个数据团块的至少一部分来计算结果的同时用于从所述系统存储器存取的随后数据团块的数量,所述随后数据团块的数量是基于所述存储器存取带宽基本上匹配到所述计算吞吐量而确定的。
示例4。示例1所述的装置,所述电路还可以基于映射的数据存取操作,经由一个或多个存储器通道通过与所述近存储器处理器耦合的接口存取所述系统存储器,以经由所述一个或多个存储器通道获得所述一个或多个数据团块。所述第一电路还可以基于映射的数据存取操作,将所述一个或多个数据团块存储到所述本地存储器。
示例5。示例4所述的装置,所述第一电路还可以基于交换的同步信息来获得所述一个或多个计算迭代的结果。所述第一电路还可以基于所述数据存取指令来使所述结果被存储在所述系统存储器中。
示例6。示例1所述的装置,所述数据存取指令可以被包括在从由计算平台托管的应用接收的指令中,所述计算平台也托管所述近存储器处理器。
示例7。示例1所述的装置,所述第一电路包括一个或多个存取处理器并且所述第二电路包括一个或多个执行处理器以及一个或多个向量功能单元。相应的一个或多个执行处理器控制相应的一个或多个向量功能单元用于所述相应的一个或多个向量功能单元计算所述一个或多个计算迭代中的所述结果。
示例8。示例7所述的装置,所述一个或多个向量功能单元可以包括SIMD AUL。
示例9。示例7所述的装置,可以以集中式配置布置所述本地存储器,所述一个或多个向量功能单元经由所述集中式配置单独地存取所述本地存储器。
示例10。示例7所述的装置,可以以分布式配置布置所述本地存储器,所述一个或多个向量功能单元经由所述分布式配置存取所述本地存储器的分配部分。
示例11。一种示例方法可以包括在近存储器处理器的第一电路处接收数据存取指令以存取系统存储器。所述数据存取指令可以具有由所述近存储器处理器的第二电路接收的相对应的计算指令。所述方法还可以包括与所述第二电路交换同步信息以将来自被存取的系统存储器的一个或多个数据团块存储到所述近存储器处理器处的本地存储器,用于所述第二电路使用进行一个或多个计算迭代。所述方法还可以包括基于所述数据存取指令和交换的同步信息来映射数据存取操作以用于所述第一电路存取所述系统存储器,以便获得所述一个或多个数据团块。
示例12。示例11所述的方法还可以包括映射所述数据存取操作以使得获得所述一个或多个数据团块并且将所述一个或多个数据团块存储到所述本地存储器的存储器存取带宽与所述第二电路使用被存储到所述本地存储器的所述一个或多个数据团块计算所述一个或多个计算迭代中的结果的计算吞吐量基本上匹配。
示例13。示例12所述的方法,交换的同步信息可以包括屏障同步基元,其用于向所述第一电路指示在所述第二电路使用所述一个或多个数据团块的至少一部分计算结果的同时要从所述系统存储器存取的随后数据团块的数量,所述随后数据团块的数量是基于所述存储器存取带宽基本上匹配到所述计算吞吐量而确定的。
示例14。示例11所述的方法还可以包括基于映射的数据存取操作,经由一个或多个存储器通道经过与所述近存储器处理器耦合的接口存取所述系统存储器,以经由所述一个或多个存储器通道获得所述一个或多个数据团块。所述方法还可以包括基于映射的数据存取操作,将所述一个或多个数据团块存储到所述本地存储器。
示例15。示例14所述的方法还可以包括基于交换的同步信息获得所述一个或多个计算迭代的结果。所述方法还可以包括基于所述数据存取指令使所述结果被存储在所述系统存储器中。
示例16。示例11所述的方法,所述数据存取指令可以被包括在从由计算平台托管的应用接收的指令中,所述计算平台也托管所述近存储器处理器。
示例17。示例11所述的方法还可以包括所述第一电路包括经过与所述近存储器处理器耦合的一个或多个存储器通道与系统存储器耦合的一个或多个存取处理器。所述方法还可以包括所述第二电路包括一个或多个执行处理器以及一个或多个向量功能单元,相应的一个或多个执行处理器控制相应的一个或多个向量功能单元用于所述相应的一个或多个向量功能单元计算所述一个或多个计算迭代中的所述结果。
示例18。示例17所述的方法,所述一个或多个向量功能单元可以是SIMD AUL。
示例19。示例17所示的方法,可以以集中式配置布置所述本地存储器,所述一个或多个向量功能单元经由所述集中式配置单独地存取所述本地存储器。
示例20。示例17所述的方法,可以以分布式配置布置所述本地存储器,所述一个或多个向量功能单元经由所述分布式配置存取所述本地存储器的分配部分。
示例21。示例性至少一个机器可读介质可以包括多个指令,所述指令对由系统执行做出响应,使所述系统执行示例11-20中的任意一个的方法。
示例22。一种示例性装置可以包括用于执行示例11-20中的任意一个的方法的模块。
示例23。示例性至少一个机器可读介质可以包括多个指令,所述指令对由近存储器处理器的第一电路执行做出响应,可以使所述第一电路接收数据存取指令以存取系统存储器。所述数据存取指令具有由所述近存储器处理器的第二电路接收的相对应的计算指令。所述指令还可以使所述第一电路与所述第二电路交换同步信息以将来自被存取的系统存储器的一个或多个数据团块存储到所述近存储器处理器处的本地存储器,用于所述第二电路使用进行一个或多个计算迭代。所述指令还可以使所述第一电路基于所述数据存取指令和交换的同步信息来映射数据存取操作以用于所述第一电路存取所述系统存储器,以获得所述一个或多个数据团块。
示例24。示例23所述的至少一个机器可读介质,所述指令可以使所述第一电路映射所述数据存取操作以使得获得所述一个或多个数据团块并且将所述一个或多个数据团块存储到所述本地存储器的存储器存取带宽与所述第二电路使用被存储到所述本地存储器的所述一个或多个数据团块在所述一个或多个计算迭代中计算结果的计算吞吐量基本上匹配。
示例25。示例24所述的至少一个机器可读介质,交换的同步信息可以包括屏障同步基元,其用于向所述第一电路指示在所述第二电路使用所述一个或多个数据团块的至少一部分计算结果的同时要从所述系统存储器存取的随后数据团块的数量,所述随后数据团块的数量是基于所述存储器存取带宽基本上匹配到所述计算吞吐量而确定的。
示例26。示例23所述的至少一个机器可读介质,所述指令还可以使所述第一电路基于映射的数据存取操作,经由一个或多个存储器通道经过与所述近存储器处理器耦合的接口存取所述系统存储器,以经由所述一个或多个存储器通道获得所述一个或多个数据团块。所述指令还可以使所述第一电路基于映射的数据存取操作,将所述一个或多个数据团块存储到所述本地存储器。
示例27。示26所述的至少一个机器可读介质,所述指令还可以使所述第一电路基于交换的同步信息获得所述一个或多个计算迭代的结果。所述指令还可以使所述第一电路基于所述数据存取指令使所述结果被存储在所述系统存储器中。
示例28。示例23所述的至少一个机器可读介质,所述第一电路可以包括经过与所述近存储器处理器耦合的一个或多个存储器通道与系统存储器耦合的一个或多个存取处理器。所述第二电路可以包括一个或多个执行处理器以及一个或多个向量功能单元。相应的一个或多个执行处理器控制相应的一个或多个向量功能单元用于所述相应的一个或多个向量功能单元计算所述一个或多个计算迭代中的所述结果。
示例29。示例28所述的至少一个机器可读介质,所述一个或多个向量功能单元可以是SIMD AUL。
示例30。示例28所示的至少一个机器可读介质,可以以集中式配置来布置所述本地存储器,所述一个或多个向量功能单元经由所述集中式配置单独地存取所述本地存储器。
示例31。示例28所述的至少一个机器可读介质,可以以分布式配置来布置所述本地存储器,所述一个或多个向量功能单元经由所述分布式配置存取所述本地存储器的分配部分。
示例32。一种示例装置可以包括近存储器处理器的第一电路,用于接收计算指令以在一个或多个计算迭代中使用从系统存储器存取的一个或多个数据团块。所述一个或多个数据团块基于相对应的数据存取指令由所述近存储器处理器的第二电路存取并且被存储到本地存储器。所述第一电路还与所述第二电路交换同步信息以存取被存储到所述本地存储器的所述一个或多个数据团块,以用于在所述一个或多个计算迭代中使用。所述第一电路还可以基于接收的计算指令和交换的同步信息映射所述第一电路的计算操作以使用所述一个或多个数据团块。
示例33。示例32所述的装置,所述第一电路可以映射所述计算操作以使得获得所述第一电路在所述一个或多个计算迭代中计算结果的计算吞吐量与所述第二电路将所述一个或多个数据团块存储到所述本地存储器的存储器存取带宽基本上匹配。
示例34。示例33所述的装置,交换的同步信息可以包括屏障同步基元,其用于向所述第二电路指示在所述第一电路使用所述一个或多个数据团块的至少一部分计算结果的同时要从所述系统存储器存取的随后数据团块的数量,所述随后数据团块的数量是基于所述存储器存取带宽基本上匹配到所述计算吞吐量而确定的。
示例35。示例32所述的装置还可以包括所述第一电路用于基于映射的计算操作经过到所述本地存储器的接口存取所述本地存储器,以获得所述一个或多个数据团块。所述第一电路还基于交换的同步信息经过所述接口将所述一个或多个计算迭代的结果存储到所述本地存储器。
示例36。示例32所述的装置,所述计算指令可以被包括在从由计算平台头冠的应用接收的指令中,所述计算平台还托管所述近存储器处理器。
示例37。示例32所述的装置,所述第一电路可以包括一个或多个执行处理器以及一个或多个向量功能单元。相应的一个或多个执行处理器控制相应的一个或多个向量功能单元用于所述相应的一个或多个向量功能单元在所述一个或多个计算迭代中计算所述结果。所述第二电路可以包括经过一个或多个存储器通道与系统存储器耦合的一个或多个存取处理器,所述一个或多个存储器通道与所述近存储器处理器耦合。
示例38。示例37所述的装置,所述一个或多个向量功能单元可以是SIMD ALU。
示例39。示例37所述的装置,可以以集中式配置来布置所述本地存储器,所述一个或多个向量功能单元经由所述集中式配置单独地存取所述本地存储器。
示例40。示例37所述的装置,可以以分布式配置来布置所述本地存储器,所述一个或多个向量功能单元经由所述分布式配置存取所述本地存储器的分配部分。
示例41。一种示例方法可以包括在近存储器处理器的第一电路处接收计算指令,以在一个或多个计算迭代中使用从系统存储器存取的一个或多个数据团块。所述一个或多个数据团块可以基于相对应的数据存取指令由所述近存储器处理器的第二电路存取并且存储到所述近存储器处理器的本地存储器。所述方法还可以包括与所述第二电路交换同步信息,以存取被存储到所述本地存储器的所述一个或多个数据团块用于在所述一个或多个计算迭代中使用。所述方法还可以包括基于接收的计算指令和交换的同步信息映射计算操作以便所述第一电路使用所述一个或多个数据团块。
示例42。示例41所述的方法还可以包括映射所述计算操作以使得所述第一电路在一个或多个计算迭代中计算结果的计算吞吐量与所述第二电路将所述一个或多个数据团块存储到所述本地存储器的存储器存取带宽基本上匹配。
示例43。示例42所述的方法,交换的同步信息可以包括用于向所述第第二电路指示在所述第一电路使用所述一个或多个数据团块的至少一部分计算结果的同时要从所述系统存储器存取的随后数据团块的数量的屏障同步基元。所述随后数据团块的数量是基于所述存储器存取带宽基本上匹配到所述计算吞吐量而确定的。
示例44。示例41所述的方法还可以包括基于映射的计算操作存取所述本地存储器以获得所述一个或多个数据团块。所述方法还可以包括基于交换的同步信息将所述一个或多个计算迭代的结果存储到所述本地存储器。
示例45。示例41所述的方法,所述计算指令可以被包括在由计算平台托管的应用接收的指令中,所述计算平台还托管所述近存储器处理器。
示例46。示例41所述的方法,所述第一电路可以包括一个或多个执行处理器以及一个或多个向量功能单元,相应的一个或多个执行处理器控制相应的一个或多个向量功能单元用于所述相应的一个或多个向量功能单元在所述一个或多个计算迭代中计算所述结果。所述第二电路可以包括经过与所述近存储器处理器耦合的一个或多个存储器通道与系统存储器耦合的一个或多个存取处理器。
示例47。示例46所述的方法,所述一个或多个向量功能单元可以是SIMD ALU。
示例48。示例46所述的方法,可以以集中式配置来布置所述本地存储器,所述一个或多个向量功能单元经由所述集中式配置单独地存取所述本地存储器。
示例49。示例46所述的方法,可以以分布式配置来布置所述本地存储器,所述一个或多个向量功能单元经由所述分布式配置存取所述本地存储器的分配部分。
示例50。示例性至少一个机器可读介质可以包括多个指令,所述指令对由系统执行做出响应,使所述系统执行根据示例41到49中的任意一项所述的方法。
示例51。示例装置可以包括用于执行示例41-49中的任意一项所述的方法的模块。
示例52。示例性至少一个机器可读介质可以包括多个指令,所述指令对由近存储器处理器的第一电路执行做出响应,使所述第一电路接收计算指令以在一个或多个计算迭代中使用从系统存储器存取的一个或多个数据团块。所述一个或多个数据团块可以基于相对应的数据存取指令由所述近存储器处理器的第二电路存取并且存储到所述近存储器处理器处的本地存储器。所述指令还可以使所述第一电路与所述第二电路交换同步信息,以存取被存储到所述本地存储器的所述一个或多个数据团块用于在所述一个或多个计算迭代中使用。所述指令还可以基于接收的计算指令和交换的同步信息使所述第一电路映射计算操作,用于所述第一电路使用所述一个或多个数据团块。
示例53。示例52所述的至少一个机器可读介质,所述指令还可以使所述第一电路映射所述计算操作,以使得所述第一电路在所述一个或多个计算迭代中计算结果的计算吞吐量与所述第二电路将所述一个或多个数据团块存储到所述本地存储器的存储器存取带宽基本上匹配。
示例54。示例42所述的至少一个机器可读介质,交换的同步信息可以包括用于向所述第二电路指示在所述第一电路使用所述一个或多个数据团块的至少一部分计算结果的同时要从所述系统存储器存取的随后数据团块的数量的屏障同步基元,所述随后数据团块的数量是基于所述存储器存取带宽基本上匹配到所述计算吞吐量而确定的。
示例55。示例52所述的至少一个机器可读介质,所述指令可以进一步基于映射的数据存取操作,使所述第一电路存取所述系统存储器以获得所述一个或多个数据团块。所述指令还可以使所述第一电路基于交换的同步信息将所述一个或多个计算迭代的结果存储到所述本地存储器。
示例56。示例52所述的至少一个机器可读介质,所述计算指令可以被包括在从由计算平台托管的应用接收的指令中,所述计算平台也托管所述近存储器处理器。
示例57。示例52所述的至少一个机器可读介质,所述第一电路可以包括一个或多个执行处理器以及一个或多个向量功能单元,相应的一个或多个执行处理器控制相应的一个或多个向量功能单元用于所述相应的一个或多个向量功能单元在所述一个或多个计算迭代中计算所述结果。所述第二电路可以包括经过与所述近存储器持录取耦合的一个或多个存储器通道与系统存储器耦合的一个或多个存取处理器。
示例58。示例57所述的至少一个机器可读介质,所述一个或多个向量功能单元可以是SIMD AUL。
示例59。示例57所述的至少一个机器可读介质,可以以集中式配置来布置所述本地存储器,所述一个或多个向量功能单元经由所述集中式配置单独地存取所述本地存储器。
示例60。示例57所述的至少一个机器可读介质,可以以分布式配置来布置所述本地存储器,所述一个或多个向量功能单元经由所述分布式配置存取所述本地存储器的分配部分。
示例61。示例近存储器处理器可以包括用于存取经由一个或多个存储器通道接口与所述近存储器处理器耦合的系统存储器的接口。所述近存储器处理器还可以包括本地存储器、第一电路和第二电路。所述第二电路可以接收具有由所述第一电路接收的相对应的计算指令的用于存取所述系统存储器的数据存取指令。所述第二电路还可以与所述第一电路交换同步信息以将来自被存取的系统存储器的一个或多个数据团块存储到所述本地存储器,以便所述第一电路用于进行一个或多个计算迭代。所述第二电路还可以基于所述数据存取指令和交换的同步信息映射数据存取操作,用于所述第二电路经过所述接口存取所述系统存储器以获得所述一个或多个数据团块。
示例62。示例61所述的近存储器处理器,所述第二电路可以映射所述数据存取操作,以使得获得所述一个或多个数据团块并且将所述一个或多个数据团块存储到所述本地存储器的数据存取带宽与所述第一电路使用存储到所述本地存储器的所述一个或多个数据团块在所述一个或多个计算迭代中计算结果的计算吞吐量基本上匹配。
示例63。示例61所述的近存储器处理器,所述第二电路可以包括一个或多个存取处理器。所述第一电路可以包括一个或多个执行处理器和一个或多个向量功能单元。相应的一个或多个执行处理器控制相应的一个或多个向量功能单元,用于所述相应的一个或多个向量功能单元在所述一个或多个计算迭代中计算所述结果。
应该强调的是,提供本公开的摘要以符合CFR 37条第1.72(b)节的规定,要求允许读者快速确定技术公开的本质的摘要。应该理解的是,摘要不用于解释或者限制权利要求的范围或者含义。此外,在前面的详细描述中,可以看出,为了流水化本公开的目的,各种特征在单个示例中被分组在一起。这一公开的方法并不被解释为反映了请求保护的示例要求比在每一项权利要求中明确引述的特征更多的特征。而是,如下面的权利要求书反映的,创造性主体在于比单个公开的示例的全部特征更少的特征。因而,下面的权利要求书在此被结合在详细描述中,每一项权利要求主张其自己作为单独示例。在所附权利要求书中,术语“包含”和“在其中”分别用作相应术语“包括”和“其中”的普通英语等同物。而且,术语“第一”、“第二”、“第三”等等仅用作标签,并且并不意在对它们的对象提出数量要求。
尽管按照特定于结构特征和/或方法动作的语言描述了所述主题,但是应该理解,所附权利要求书中定义的主题不必局限于上面描述的特定特征或者动作。而是,上面描述的特定特征和动作被公开作为实现所述权利要求的示例形式。

Claims (24)

1.一种装置,包括:
近存储器处理器的第一电路,其用于:
接收数据存取指令以存取系统存储器,所述数据存取指令具有由所述近存储器处理器的第二电路接收的相对应的计算指令;
与所述第二电路交换同步信息以将来自被存取的系统存储器的一个或多个数据团块存储到所述近存储器处理器处的本地存储器,以用于所述第二电路使用来进行一个或多个计算迭代;以及
基于所述数据存取指令和交换的同步信息来映射数据存取操作以用于所述第一电路存取所述系统存储器,以获得所述一个或多个数据团块。
2.根据权利要求1所述的装置,包括所述第一电路映射所述数据存取操作,使得用于获得所述一个或多个数据团块并且将所述一个或多个数据团块存储到所述本地存储器的存储器存取带宽与所述第二电路使用被存储到所述本地存储器的所述一个或多个数据团块计算所述一个或多个计算迭代中的结果的计算吞吐量基本上匹配。
3.根据权利要求2所述的装置,所述交换的同步信息包括屏障同步基元,其用于向所述第一电路指示在所述第二电路使用所述一个或多个数据团块的至少一部分来计算结果的同时用于从所述系统存储器存取的随后数据团块的数量,所述随后数据团块的数量是基于所述存储器存取带宽基本上匹配到所述计算吞吐量而确定的。
4.根据权利要求1所述的装置,进一步包括所述第一电路用于:
基于映射的数据存取操作,经由一个或多个存储器通道通过与所述近存储器处理器耦合的接口存取所述系统存储器,以经由所述一个或多个存储器通道获得所述一个或多个数据团块;以及
基于所述映射的数据存取操作,将所述一个或多个数据团块存储到所述本地存储器。
5.根据权利要求4所述的装置,进一步包括所述第一电路用于:
基于所述交换的同步信息来获得所述一个或多个计算迭代的结果;以及
基于所述数据存取指令来使所述结果被存储在所述系统存储器中。
6.根据权利要求1所述的装置,包括所述数据存取指令被包括在从由计算平台托管的应用接收的指令中,所述计算平台也托管所述近存储器处理器。
7.根据权利要求1所述的装置,包括:
所述第一电路包括一个或多个存取处理器;以及
所述第二电路包括一个或多个执行处理器以及一个或多个向量功能单元,相应的一个或多个执行处理器控制相应的一个或多个向量功能单元以用于所述相应的一个或多个向量功能单元计算所述一个或多个计算迭代中的结果。
8.根据权利要求7所述的装置,包括以集中式配置来布置所述本地存储器,所述一个或多个向量功能单元经由所述集中式配置单独地存取所述本地存储器。
9.根据权利要7所述的装置,包括以分布式配置来布置所述本地存储器,所述一个或多个向量功能单元经由所述分布式配置来存取所述本地存储器的分配部分。
10.一种方法,包括:
在近存储器处理器的第一电路处接收数据存取指令以存取系统存储器,所述数据存取指令具有由所述近存储器处理器的第二电路接收的相对应的计算指令;
与所述第二电路交换同步信息以将来自被存取的系统存储器的一个或多个数据团块存储到所述近存储器处理器处的本地存储器,以用于所述第二电路使用来进行一个或多个计算迭代;以及
基于所述数据存取指令和交换的同步信息来映射数据存取操作以用于所述第一电路存取所述系统存储器,以获得所述一个或多个数据团块。
11.根据权利要求10所述的方法,包括映射所述数据存取操作,使得用于获得所述一个或多个数据团块并且将所述一个或多个数据团块存储到所述本地存储器的存储器存取带宽与所述第二电路使用被存储到所述本地存储器的所述一个或多个数据团块计算所述一个或多个计算迭代中的结果的计算吞吐量基本上匹配。
12.根据权利要求10所述的方法,进一步包括:
基于映射的数据存取操作,经由一个或多个存储器通道通过与所述近存储器处理器耦合的接口来存取所述系统存储器,以经由所述一个或多个存储器通道来获得所述一个或多个数据团块;
基于所述映射的数据存取操作,将所述一个或多个数据团块存储到所述本地存储器;
基于所述交换的同步信息来获得所述一个或多个计算迭代的结果;以及
基于所述数据存取指令来使所述结果被存储在所述系统存储器中。
13.至少一个包括多个指令的机器可读介质,所述多个指令响应于由系统执行,使得所述系统执行根据权利要求10-12中的任一项所述的方法。
14.一种包括用于执行根据权利要求10-12中的任一项所述的方法的单元的装置。
15.一种装置,包括:
近存储器处理器的第一电路,其用于:
接收计算指令以在一个或多个计算迭代中使用从系统存储器存取的一个或多个数据团块,所述一个或多个数据团块被存取并且由所述近存储器处理器的第二电路基于相对应的数据存取指令而存储到本地存储器;
与所述第二电路交换同步信息以存取被存储到所述本地存储器的所述一个或多个数据团块,以用于在所述一个或多个计算迭代中使用;以及
基于接收的计算指令和交换的同步信息映射计算操作以用于所述第一电路使用所述一个或多个数据团块。
16.根据权利要求15所述的装置,包括所述第一电路映射所述计算操作,使得所述第一电路计算所述一个或多个计算迭代中的结果的计算吞吐量与所述第二电路用于将所述一个或多个数据团块存储到所述本地存储器的存储器存取带宽基本上匹配。
17.根据权利要求15所述的装置,进一步包括所述第一电路用于:
基于映射的计算操作,通过到所述本地存储器的接口存取所述本地存储器,以获得所述一个或多个数据团块;以及
基于所述交换的同步信息通过所述接口将所述一个或多个计算迭代的结果存储到所述本地存储器。
18.根据权利要求15所述的装置,包括:
所述第一电路包括一个或多个执行处理器以及一个或多个向量功能单元,相应的一个或多个执行处理器控制相应的一个或多个向量功能单元以用于所述相应的一个或多个向量功能单元计算所述一个或多个计算迭代中的结果;以及
所述第二电路包括一个或多个存取处理器,所述一个或多个存取处理器通过一个或多个存储器通道与系统存储器耦合,所述一个或多个存储器通道与所述近存储器处理器耦合。
19.根据权利要求18所述的装置,所述一个或多个向量功能单元包括单指令多数据(SIMD)算术逻辑单元(ALU)。
20.根据权利要求18所述的装置,包括以集中式配置布置所述本地存储器,所述一个或多个向量功能单元经由所述集中式配置单独地存取所述本地存储器。
21.根据权利要求18所述的装置,包括以分布式配置布置所述本地存储器,所述一个或多个向量功能单元经由所述分布式配置存取所述本地存储器的分配部分。
22.一种近存储器处理器,包括:
用于存取系统存储器的接口,所述系统存储器经由一个或多个存储器通道与所述近存储器处理器耦合;
本地存储器;
第一电路;以及
第二电路,用于:
接收用于存取所述系统存储器的数据存取指令,所述数据存取指令具有由所述第一电路接收的相对应的计算指令;
与所述第一电路交换同步信息以将来自被存取的系统存储器的一个或多个数据团块存储到所述本地存储器,以用于所述第一电路使用来进行一个或多个计算迭代;以及
基于所述数据存取指令和交换的同步信息来映射数据存取操作,以用于所述第二电路通过所述接口存取所述系统存储器以获得所述一个或多个数据团块。
23.根据权利要求22所述近存储器处理器,包括所述第二电路映射所述数据存取操作,使得用于获得所述一个或多个数据团块并且将所述一个或多个数据团块存储到所述本地存储器的存储器存取带宽与所述第一电路使用被存储到所述本地存储器的所述一个或多个数据团块计算所述一个或多个计算迭代中的结果的计算吞吐量基本上匹配。
24.根据权利要求22所述的近存储器处理器,包括:
所述第二电路包括一个或多个存取处理器;以及
所述第一电路包括一个或多个执行处理器和一个或多个向量功能单元,相应的一个或多个执行处理器用于控制相应的一个或多个向量功能单元,以用于所述相应的一个或多个向量功能单元计算所述一个或多个计算迭代中的结果。
CN202010592587.5A 2019-09-27 2020-06-24 用于去耦合的存取-执行近存储器处理的技术 Pending CN112579487A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/585,521 2019-09-27
US16/585,521 US11853758B2 (en) 2019-09-27 2019-09-27 Techniques for decoupled access-execute near-memory processing

Publications (1)

Publication Number Publication Date
CN112579487A true CN112579487A (zh) 2021-03-30

Family

ID=69161881

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010592587.5A Pending CN112579487A (zh) 2019-09-27 2020-06-24 用于去耦合的存取-执行近存储器处理的技术

Country Status (3)

Country Link
US (2) US11853758B2 (zh)
EP (1) EP3798828A3 (zh)
CN (1) CN112579487A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2594498B (en) * 2020-04-30 2022-06-01 Advanced Risc Mach Ltd Instruction scheduling
US11720360B2 (en) * 2020-09-11 2023-08-08 Apple Inc. DSB operation with excluded region

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145073A (en) * 1998-10-16 2000-11-07 Quintessence Architectures, Inc. Data flow integrated circuit architecture
US6728873B1 (en) * 2000-06-06 2004-04-27 International Business Machines Corporation System and method for providing multiprocessor speculation within a speculative branch path
US7437521B1 (en) * 2003-08-18 2008-10-14 Cray Inc. Multistream processing memory-and barrier-synchronization method and apparatus
US7334110B1 (en) * 2003-08-18 2008-02-19 Cray Inc. Decoupled scalar/vector computer architecture system and method
JP5417674B2 (ja) 2009-07-21 2014-02-19 維男 中村 計算機システム及び主記憶装置
US10067765B2 (en) * 2012-05-14 2018-09-04 International Business Machines Corporation Speeding up younger store instruction execution after a sync instruction
CN104937576B (zh) * 2013-03-28 2018-08-31 慧与发展有限责任合伙企业 协调存储在基于非易失性存储器的系统中的数据的复制
US9684682B2 (en) 2013-09-21 2017-06-20 Oracle International Corporation Sharding of in-memory objects across NUMA nodes

Also Published As

Publication number Publication date
EP3798828A2 (en) 2021-03-31
US20200026513A1 (en) 2020-01-23
EP3798828A3 (en) 2021-04-14
US20240078112A1 (en) 2024-03-07
US11853758B2 (en) 2023-12-26

Similar Documents

Publication Publication Date Title
TWI640003B (zh) 用於邏輯/記憶體器件之裝置及方法
US20160098200A1 (en) In-memory popcount support for real time analytics
US20170147516A1 (en) Direct interface between graphics processing unit and data storage unit
KR101720676B1 (ko) 대용량 저장소 디바이스들을 관리하기 위한 장치 및 방법
US20240078112A1 (en) Techniques for decoupled access-execute near-memory processing
CN107301455A (zh) 用于卷积神经网络的混合立方体存储系统及加速计算方法
US20160283111A1 (en) Read operations in memory devices
TW201423600A (zh) 用於在多緒處理單元中改善性能之技術
CN111433758A (zh) 可编程运算与控制芯片、设计方法及其装置
CN111630487B (zh) 用于神经网络处理的共享存储器的集中式-分布式混合组织
CN105474183A (zh) 存储器管理
US20240105260A1 (en) Extended memory communication
CN103218343A (zh) 采用数据驱动机制多处理器间数据通信电路
US20210397448A1 (en) Extended memory component
KR102518010B1 (ko) 휘발성 메모리에 대한 극성 기반 데이터 트랜스퍼 기능
Khalifa et al. Memory controller architectures: A comparative study
US11907120B2 (en) Computing device for transceiving information via plurality of buses, and operating method of the computing device
CN103218344A (zh) 采用数据驱动机制多处理器间数据通信电路
Lu et al. A novel NVM memory file system for edge intelligence
US20240070107A1 (en) Memory device with embedded deep learning accelerator in multi-client environment
CN114127852B (zh) 扩展存储器接口
US11836082B2 (en) Neural processing device and load/store method of neural processing device
WO2023225792A1 (en) Techniques to multiply memory access bandwidth using a plurality of links
US20210406166A1 (en) Extended memory architecture
US20240086102A1 (en) Systems and methods for executing data processing functions

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination