CN111666253B - 向具有共享存储器的共享处理元件的***传递可编程数据 - Google Patents
向具有共享存储器的共享处理元件的***传递可编程数据 Download PDFInfo
- Publication number
- CN111666253B CN111666253B CN202010150294.1A CN202010150294A CN111666253B CN 111666253 B CN111666253 B CN 111666253B CN 202010150294 A CN202010150294 A CN 202010150294A CN 111666253 B CN111666253 B CN 111666253B
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- agents
- processing
- memory components
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
- 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
-
- 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/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Multi Processors (AREA)
Abstract
提供了用于实现多个计算组件之间的通信存储器的实施例。在一个实施例中,一种装置包括驻留在处理芯片上的多个存储器组件,该多个存储器组件在处理芯片的至少一个处理核心的多个处理元件和处理芯片外部的至少一个外部存储器组件之间互连。该装置还包括处理芯片上的多个加载代理和多个存储代理,每个加载代理和每个存储代理与多个存储器组件接口。多个加载代理和多个存储代理中的每一个执行独立程序,该独立程序指定在多个存储器组件、至少一个外部存储器组件和多个处理元件之间交易的数据的目的地。
Description
技术领域
本发明总体上涉及计算***,并且更具体地,涉及用于在多处理器环境中实现通信存储器的各种实施例。
背景技术
传统上,具有多个具有共享存储器的处理元件的***将片上存储器作为高速缓存子***来管理。中央处理单元(CPU)高速缓存由硬件自动管理,使得当请求的存储器内容不在高速缓存中时,数据从外部(片外)存储器中检索。除了实现共享高速缓存存储器之外,还可能希望实现暂存(scratchpad)存储器,该暂存存储器可以被保留用于微处理器的直接和私有使用,用于诸如临时存储或用于进程之间的通信的任务。暂存存储器通常作为片上静态或“从属(slave)”存储器手动管理,使得软件程序显式地寻址存储器。这允许并行进程的低延迟,以高可靠性和可预测性临时存储和访问数据、计算或指令。
发明内容
公开了用于实现多个计算组件之间的通信存储器的各种实施例。在一个实施例中,一种装置包括驻留在处理芯片上的多个存储器组件,该多个存储器组件在处理芯片的至少一个处理核心的多个处理元件和处理芯片外部的至少一个外部存储器组件之间互连。该装置还包括处理芯片上的多个加载代理和多个存储代理,每个加载代理和每个存储代理与多个存储器组件接口。多个加载代理和多个存储代理中的每一个异步地执行独立程序,该独立程序指定在多个存储器组件、至少一个外部存储器组件和多个处理元件之间交易(transacted)的数据的目的地。执行独立程序还包括使用多个加载代理和多个存储代理中的每一个之间的握手操作来执行显式同步指令,以避免在数据被交易到目的地时的写前读(read-before-write)冲突。
除了前述示例性实施例,还提供了各种其他方法和计算机程序产品实施例,并提供了相关的优点。提供前述发明内容是为了以简化的形式介绍构思的选择,这些构思将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。要求保护的主题不限于解决背景技术中提到的任何或所有缺点的实施方式。
附图说明
为了使本发明的优点容易理解,将通过参考附图中示出的具体实施例来呈现上面简要描述的本发明的更具体的描述。应当理解,这些附图仅描绘了本发明的典型实施例,因此不应被认为是对其范围的限制,将通过使用附图以附加的特征和细节来描述和解释本发明,其中:
图1是描绘根据本发明实施例的示例性计算节点的框图;
图2是描绘根据本发明实施例的高级通信存储器和接口组件的框图;
图3是描绘根据本发明实施例的通信存储器体系结构的框图;
图4是描绘根据本发明实施例的用于通信存储器的硬件/软件接口的组件的框图;
图5是描绘根据本发明实施例的实现通信存储器的硬件装置的组件的框图;
图6是描绘根据本发明实施例的实现通信存储器的硬件装置的组件的附加框图;
图7是描绘根据本发明实施例的用于在通信存储器内引导数据的具有显式目的地标识的示例指令的附加框图;和
图8是描绘根据本发明实施例的用于实现多个计算组件之间的通信存储器的方法的流程图。
具体实施方式
如上所述,传统上,具有共享存储器的多个处理元件的***将片上存储器作为高速缓存子***来管理。这种***的示例包括几种商业可用的通用处理器和图形处理单元(Graphical Processing Units,GPU)。由于高速缓存完全由硬件管理,所以存储器地址的映射并不总是适合于请求或写入临时存储在其中的数据的应用的数据访问模式。此外,硬件支持用于替换来自高速缓存的数据以管理其有限容量,并且用于替换的候选数据也不是基于每个应用的数据访问要求来选择的。最后,如果多个处理器正在从高速缓存中读取/写入该相同的数据,还需要硬件支持来管理访问顺序,以保证预期的行为。随着处理元件数量的持续增长,不仅需要增加片上高速缓存的容量,而且高速缓存管理的硬件开销也需要持续扩展。此外,硬件高速缓存以不能显式地利用可用的容量和带宽的方式,对于应用程序员来说是不可见的,从而使得难以保持多个处理元件被充分利用。
因此,在具有共享存储器(例如,高速缓存)的多个处理元件和互连网络的这样一个***中,以以下这样的方式管理处理元件之间的数据传递是必要的:a)在访问数据(尤其是对于数据更新)时最小化冲突;b)映射共享数据,以便于通过互连网络的数据的多播;以及c)利用应用的数据访问模式来确定何时保存/丢弃来自有限片上存储器的数据。
与硬件管理的高速缓存不同,显式软件管理的暂存存储器已经被提议在片上存储器中实现软件引导的数据布置和替换。这种存储器具有它们自己的私有地址空间,或者充当片外存储器的扩展地址空间。因此,本发明引入了新颖的技术来存储和检索来自这些软件管理的暂存存储器的数据,这些暂存存储器用于实现编程指令和其他数据的应用感知(application-aware)存储,以减少延迟并改善存储布置和执行该数据的处理元件的整体性能。与针对常规数据访问的编译器引导的软件管理的存储器的现有工作不同,本公开特别针对(a)在硬件支持下增加暂存存储器的带宽效率;(b)由软件控制的分层结构(hierarchy)中的层级(level)的旁路,将数据最优地布置在多层级的暂存存储器分层结构的期望层级中;以及(c)通过将双重缓冲写入的完成与数据到特定层级或其他目的地(例如,外部、片外存储器)的后续读取显式地同步,来对双重缓冲数据进行软件支持。
本发明进一步考虑设计和操作硬件/软件共同管理的片上存储器的新颖方法和装置,其利用了如下知识:利用应用的数据访问模式来将数据映射到由其间具有互连网络的多个处理元件和数据流体系结构组成的***的片上存储器。本公开包括硬件机制,以保证处理元件之间的数据访问没有冲突,以及软件支持,以在数据的使用之前将数据传递到片上存储器。下面将进一步描述该功能及其伴随的益处。
现在参考图1,示出了包含前述处理元件的计算节点的示例的示意图。计算节点10仅仅是合适的计算节点的一个示例,并且不旨在对这里描述的本发明的实施例的使用范围或功能提出任何限制。无论如何,计算节点10能够被实现和/或执行所阐述的任何功能。
在计算节点10中,存在计算机***/服务器12,其可与许多其他通用或专用计算***环境或配置一起操作。适于与计算机***/服务器12一起使用的众所周知的计算***、环境和/或配置的示例包括但不限于个人计算机***、服务器计算机***、瘦客户机、胖客户机、手持或膝上型设备、多处理器***、基于微处理器的***、机顶盒、可编程消耗电子产品、网络PC、小型计算机***、大型计算机***以及包括上述任何***或设备的分布式云计算环境等。
计算机***/服务器12可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般上下文中描述。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。在一些实施例中,计算机***/服务器12可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备来执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机***存储介质中。
如图1所示,在计算节点10中的计算机***/服务器12以通用计算设备的形式表现。计算机***/服务器12的组件可以包括但不限于:一个或者多个处理器芯片或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机***/服务器12典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机***/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28(或存储器自***28)可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。高速缓存存储器32可以包括例如在处理器16的多个核心之间共享的共享高速缓存(诸如L2高速缓存)和/或可以包括专用高速缓存(诸如L1高速缓存)。计算机***/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM、DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。***存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如***存储器28中,这样的程序模块42包括——但不限于——操作***、一个或者多个应用、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机***/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机***/服务器12交互的设备通信,和/或与使得该计算机***/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机***/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机***/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机***/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
继续图2,描绘了根据本发明实施例的高级通信存储器和接口组件200。组件200包括处理元件202(即,驻留在处理芯片上的多个处理元件)、通信存储器204A、204B(即,物理的、处理芯片上暂存存储器)、外部存储器206(即,诸如外部随机存取存储器(RAM)、硬盘驱动器(HDD)、固态驱动器(SSD)等的处理芯片外存储器),以及连接处理元件202、通信存储器204A、204B和外部存储器206的接口208。如将进一步描述的,接口208可以包括片上/片外互连网络或先进先出(First-In-First-Out,FIFO)。
本发明的机制利用组件200来实现支持脉动数据流体系结构的***,该***使用由软件显式管理的多层级的暂存存储器,以基于利用应用的要求来获取和替换数据。该***还包括可经由软件和/或显式硬件实现的处理芯片上代理(加载和存储代理),以获取数据并将其存储到存储器分层结构的每个层级中。建议使用硬件支持来管理由这些代理的读取/写入访问,并保证代理之间的同步,使得在写入存储器之前不会过早发生读取。
在一些实施例中,该***包括在加载和存储代理中的每一个中执行的独立程序,该独立程序控制对给定通信存储器204A、204B的数据写入/从给定通信存储器204A、204B的数据读取,使得每个通信存储器204A、204B包括其自己的加载/存储代理,以与一个或多个目的地通信。在一些描述的实施例中,可以利用对多个源/目的地互连通信的支持,使得多个源(例如,通信存储器204A、204B、处理元件202或外部存储器206)可以在彼此之间同时传送数据。这里描述的机制还包括请求者之间的仲裁逻辑,以保证当数据被同时写入/读取时,在通信存储器204A、204B内不会发生数据读取/写入的冲突,以及包括指令粒度支持(instruction granularity support),以指定数据的目的地。
在一些实施例中,可以实现使用FIFO或片上/片外互连网络,经由接口208向/从通信存储器204A、204B传递数据的硬件支持,使得FIFO逻辑可以用作接口,以将读取/写入排序到其给定目的地。该功能还包括使用实现FIFO逻辑的同步接口在通信存储器204A、204B的加载和存储代理之间进行同步的硬件和软件支持。最后,在一些实施例中,软件机制可以用于为通信存储器204A、204B的加载/存储代理生成程序,使得可以考虑利用应用的数据访问模式来优化存储器分层结构内的数据布置。
所公开的***包括使用前述软件代理(即,加载代理和存储代理)来管理从暂存存储器分层结构的一个层级到另一个层级的数据传输。在一些实施例中,为了避免要求处理元件202等待请求的数据,较低层级的暂存存储器被分成多个存储体(bank),每个存储体具有足够的读取/写入端口,使得来自较高层级的暂存存储器的数据可以被双重缓冲。这允许加载代理从一组暂存存储器存储体向处理元件202传递数据,同时由存储代理写入数据,以供将来在其他组存储体中使用,并且其间没有冲突。
图3是描绘通信存储器体系结构300的框图。通信存储器体系结构包括图1中描述的处理器芯片16,该处理器芯片16包括多个核心302,每个核心具有处理元件202的阵列。处理器芯片还包括共享存储器304,其经由接口208(即,片上互连网络)在多个核心302内部和之间传送数据。接口208还允许处理器芯片16和外部存储器206(即,包括RAM、HDD、SSD等的片外外部存储器)之间的通信。
在优选实施例中,假设N×N个处理元件202的阵列具有2-D环形(2-D-torus-like)互连网络以支持脉动数据流,其中暂存存储器的每一层级被分割成N个片,并且每个片由加载和存储代理独立管理。此外,每个片由多个存储体组成,并且存储体中的每一个都被分割以支持存储代理对数据的双重缓冲。在每个片内,存储体仲裁逻辑管理对存储体的读取和写入请求。体系结构300另外描绘了分别在水平和垂直方向上连接到两个暂存存储器(L0-X(204A)和L0-Y(204B))的N×N个处理元件202的优选实施例。暂存存储器分层结构的下一个最高层级被显示为Lx(204N),并且被假定为具有其自己的分割成片、存储体以及支持的加载和存储代理。
图4更详细地示出了相应一个核心302的体系结构300的组件400。如所描绘的,组件400使用FIFO接口208来描述处理元件202的阵列的关系,以在较低层级的暂存存储器(即,L0-X(204A)和L0-Y(204B))与较高层级的暂存存储器(即,LX(204N))之间传送数据。加载代理404A、404B(称为LA)将数据从较高层级的暂存存储器LX 204N加载到处理元件202的阵列和加载到较低层级的暂存存储器LO 204A、204B,并经由接口208将数据从暂存存储器LX 204N加载到外部存储器206。类似地,存储代理402A、402B(称为SA)将来自处理元件202的阵列和来自外部存储器206的数据存储到暂存存储器LX 204N。应当注意,组件400详细描述了通过***的数据流的一个实施例,并且该描绘纯粹是示例性的。换句话说,组件400的描绘更确切地用于示出处理元件202、较低层级的暂存存储器204A、204B、较高层级的暂存存储器LX 204N和外部存储器206经由接口208互连,并且示出多个加载代理404A、404B和存储代理402A、402B被用于在个别情况需要时检索数据并将数据存储到存储器分层结构的相应层级。
现在参考图5,单层级的暂存存储器(较低层级L0 204A、204B)的优选实施例的硬件装置500。L0-LA 502和L0-SA 504包括分别执行加载代理404A、404B和存储代理402A、402B的软件程序的硬件装置。所示的L0-LA单元502包括直接从较高层级的暂存存储器(例如,Lx 204N)流式传输数据或者从暂存存储器L0 204A、204B读取数据并将该数据提供给处理元件202的选项。在优选实施例中,L0-LA单元502加载代理程序通过软件以编程方式显式控制数据源。
图3和图4所示的互连网络允许数据被发送到相对于特定层级的暂存存储器的位置最近的处理元件202(称为近PE)或最远的处理元件202(称为远PE)。在图5中,L0-SA单元504存储代理程序从暂存存储器分层结构的下一层级(Lx 204N)接收数据,或者从近处理元件和远处理元件202接收计算结果。在优选实施例中,来自处理元件202的数据和/或计算结果具有特殊的标识符,以指示数据是否能够存储在暂存存储器L0 204A、204B中,或者是否能够直接发送到暂存存储器Lx 204N分层结构的下一层级。在替代实施例中,L0-SA单元504单元中的专用寄存器被编程为指示来自处理元件202的数据和/或计算结果的目的地(即,目的地是暂存存储器L0 204A、204B或Lx 204N)。
在装置500中,示出了不存在从L0-SA单元504到L0-LA单元502的数据的显式传输。这是因为L0-SA单元504与L0-LA单元之间的唯一通信是管理数据访问的同步,以确保暂存存储器L0 204A、204B中的双重缓冲的数据准备好被相应的处理元件202消耗。显式软件指令用于L0-LA单元502和L0-SA单元504之间的这种通信,其中L0-LA单元502执行等待同步(wait-for-sync)指令,并且L0-SA单元504执行相应的发送同步(send-sync)指令以确认数据已经被写入,并且准备好用于消耗。类似地,存在反向的相同通信(即,从L0-LA单元502(执行发送同步指令)到L0-SA单元504(执行等待同步指令)),以确认加载在暂存存储器L0204A、204B的数据在被使用之前没有被重写。前述同步机制的一个新颖特征是,软件支持通过在每个LA单元执行同步指令结束时切换(toggling)活动分区(active partition)和特定层级的暂存存储器的双重缓冲存储来显式管理数据的这种双重缓冲。
图6示出了硬件装置600的附加描绘,其描述了多层级的暂存存储器分层结构的优选实施例,其具有对显式加载代理和存储代理的相关的硬件支持,以在暂存存储器204A-N的相应层级和处理元件202之间发送和接收数据。装置600描绘了暂存存储器Lx 204N以及相关的LX LA单元610和LX SA 612单元,每个单元分别执行加载和存储代理的软件程序。在优选实施例中,使用L0-X LA单元610和L0-Y LA单元602代理的软件程序,将暂存存储器L0204A中存储的数据和/或计算结果传输到暂存存储器Lx 204N层级。此外,来自(多个)处理元件202的数据和/或计算结果可以通过L0-SA单元504,使用硬件支持显示地引导到暂存存储器Lx 204N(如前所述)。
Lx-SA 612单元代理程序控制数据的源,暂存存储器Lx 204N的数据将从该源写入。从这些多个源到达的数据具有不同的标识符,并且相应的Lx SA单元612程序也使用不同的标识符来选择要写入暂存存储器Lx 204N的数据。装置600示出了优选实施例,其中LxLA单元610执行软件程序来读取暂存存储器Lx 204N并将数据发送到暂存存储器L0 204A、204B或发送到处理元件202。Lx LA 610程序提供具有目标标识符的数据,该目标标识符被选择逻辑用来将数据引导到L0-LA单元602、606或L0-SA单元604、608(在X和Y方向上),以直接流式传输到(多个)处理元件202或分别存储到暂存存储器L0 204A 204B。
现在参考图7,示例指令700支持一个以上的操作数702(基于操作码(opcode),一些操作数可能未被使用),以及指令中的具有目标标识的显式字段(例如,L0-X-LA 606、L0-X-SA 608、L0-Y-LA 602、L0-Y-SA 604),该显式字段使得选择逻辑能够以FIFO的方式将数据引导到指定的目的地,以使用相应L0-LA或SA单元中的软件代理来读取。在优选实施例中,经由相应的LA和/或SA到达/来自暂存存储器L0 204A、204B/Lx 204N的数据在硬件FIFO中排队,硬件FIFO保持在单元之间发送并由软件代理处理的数据的顺序。
该通信存储器***还包括一种新颖的硬件装置,以支持与单指令多数据(SingleInstruction,Multiple Data,SIMD)向量的标量乘法,该装置改善了暂存存储器L0 204A、204B和LX 204N之间的带宽要求。在L0-LA中执行的软件程序包括支持对由L0-LA单元从暂存存储器L0 204A、204B获取的每个标量值进行溅射(splatting)的指令。如果SIMD宽度为M,这将增加所获取标量的数据重用M倍,而不会增加暂存存储器中的存储开销,或者增加从分层结构的不同层级多次重复获取标量数据的带宽。
现在转向图8,描绘了用于由处理器实现多个计算组件之间的通信存储器的方法800,其中可以实现所示实施例的各个方面。功能800可以被实现为在机器上作为指令执行的方法,其中指令被包含在有形的、非暂时性的机器可读存储介质上。
方法800的功能可以从步骤802开始。在一些实施例中,提供驻留在处理芯片上的多个存储器组件,多个存储器组件在处理芯片的至少一个处理核心的多个处理元件和处理芯片外部的至少一个外部存储器组件之间互连(步骤804)。在处理芯片上另外提供多个加载代理和多个存储代理,每个加载代理和每个存储代理与多个存储器组件接口(步骤806)。多个加载代理和多个存储代理中的每一个执行独立程序,该独立程序指定在多个存储器组件、至少一个外部存储器组件和多个处理元件之间交易的数据的目的地(步骤808)。方法800结束(步骤810)。
结合方法800,多个存储器组件可以以分层结构排列成多个层级;其中多个层级中的最低层级被分成多个存储体,每个存储体在多个端口处从多个层级中的较高层级接受数据。
结合方法800,多个加载代理和多个存储代理中的每一个可以经由接口并发地将数据异步地传送到多个处理元件、多个存储器组件和至少一个外部存储器组件中的至少一个内的目的地。
结合方法800,接口可以包括先进先出(FIFO)接口或片外互连网络。
结合方法800,执行独立程序还可以包括使用多个加载代理和多个存储代理中的每一个之间的握手操作来执行显式同步指令,以避免经由连接这些代理的公共暂存存储器来交易数据时的数据冲突。
结合方法800,按照并发地传送数据,仲裁逻辑可以用于处理对由目标标识符标识的相同目的地的并发数据请求。
结合方法800,多个存储器组件中的每一个可以包括暂存存储器。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质(或媒介),其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是—但不限于—电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集体系结构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系结构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (22)
1.一种用于由处理器实现多个计算组件之间的通信存储器的方法,所述方法包括:
提供驻留在处理芯片上的多个存储器组件,所述多个存储器组件在所述处理芯片的至少一个处理核心的多个处理元件和所述处理芯片外部的至少一个外部存储器组件之间互连;
提供所述处理芯片上的多个加载代理和多个存储代理,每个加载代理和每个存储代理与所述多个存储器组件接口;和
由所述多个加载代理和所述多个存储代理中的每一个执行独立程序,所述独立程序指定在所述多个存储器组件、至少一个外部存储器组件和所述多个处理元件之间交易的数据的目的地。
2.根据权利要求1所述的方法,还包括以分层结构将所述多个存储器组件排列成多个层级;其中所述多个层级中的最低层级被分成多个存储体,每个存储体在多个端口处从所述多个层级中的较高层级接受数据。
3.根据权利要求1所述的方法,其中,所述多个加载代理和所述多个存储代理中的每一个经由接口并发地将数据异步地传送到所述多个处理元件、所述多个存储器组件和至少一个外部存储器组件中的至少一个内的目的地。
4.根据权利要求3所述的方法,其中,所述接口包括先进先出(FIFO)接口或片外互连网络。
5.根据权利要求3所述的方法,其中,执行所述独立程序还包括使用所述多个加载代理和所述多个存储代理中的每一个之间的握手操作来执行显式同步指令,以避免在数据被交易时的数据冲突。
6.根据权利要求5所述的方法,还包括按照并发地传送数据,使用仲裁逻辑来处理对由目标标识符标识的相同目的地的并发数据请求。
7.根据权利要求1所述的方法,其中,所述多个存储器组件中的每一个包括暂存存储器。
8.一种用于实现多个计算组件之间的通信存储器的***,包括:
驻留在处理芯片上的多个存储器组件,所述多个存储器组件在所述处理芯片的至少一个处理核心的多个处理元件和所述处理芯片外部的至少一个外部存储器组件之间互连;和
所述处理芯片上的多个加载代理和多个存储代理,每个加载代理和每个存储代理与所述多个存储器组件接口;其中:
所述多个加载代理和所述多个存储代理中的每一个执行独立程序,所述独立程序指定在所述多个存储器组件、至少一个外部存储器组件和所述多个处理元件之间交易的数据的目的地。
9.根据权利要求8所述的***,其中,所述多个存储器组件以分层结构排列成多个层级;并且其中所述多个层级中的最低层级被分成多个存储体,每个存储体在多个端口处从所述多个层级中的较高层级接受数据。
10.根据权利要求8所述的***,其中,所述多个加载代理和所述多个存储代理中的每一个经由接口并发地将数据异步地传送到所述多个处理元件、所述多个存储器组件和至少一个外部存储器组件中的至少一个内的目的地。
11.根据权利要求10所述的***,其中,所述接口包括先进先出(FIFO)接口或片外互连网络。
12.根据权利要求10所述的***,其中,执行所述独立程序还包括使用所述多个加载代理和所述多个存储代理中的每一个之间的握手操作来执行显式同步指令,以避免在数据被交易时的数据冲突。
13.根据权利要求12所述的***,其中,按照并发地传送数据,使用仲裁逻辑来处理对由目标标识符标识的相同目的地的并发数据请求。
14.根据权利要求8所述的***,其中,所述多个存储器组件中的每一个包括暂存存储器。
15.一种用于实现多个计算组件之间的通信存储器的计算机可读存储介质,所述计算机可读存储介质具有存储在其中的计算机可读程序代码部分,所述计算机可读程序代码部分包括:
提供驻留在处理芯片上的多个存储器组件的通信的可执行部分,所述多个存储器组件在所述处理芯片的至少一个处理核心的多个处理元件和所述处理芯片外部的至少一个外部存储器组件之间互连;
提供所述处理芯片上的多个加载代理和多个存储代理的通信的可执行部分,每个加载代理和每个存储代理与所述多个存储器组件接口;和
使得所述多个加载代理和所述多个存储代理中的每一个执行独立程序的可执行部分,所述独立程序指定在所述多个存储器组件、所述至少一个外部存储器组件和所述多个处理元件之间交易的数据的目的地。
16.根据权利要求15所述的计算机可读存储介质,还包括以分层结构将所述多个存储器组件排列成多个层级的可执行部分;其中所述多个层级中的最低层级被分成多个存储体,每个存储体在多个端口处从所述多个层级中的较高层级接受数据。
17.根据权利要求15所述的计算机可读存储介质,其中,所述多个加载代理和所述多个存储代理中的每一个经由接口并发地将数据异步地传送到所述多个处理元件、所述多个存储器组件和所述至少一个外部存储器组件中的至少一个内的目的地。
18.根据权利要求17所述的计算机可读存储介质,其中,所述接口包括通过片上和片外互连网络中的至少一个的先进先出(FIFO)接口。
19.根据权利要求17所述的计算机可读存储介质,其中,执行所述独立程序还包括使用所述多个加载代理和所述多个存储代理中的每一个之间的握手操作来执行显式同步指令,以避免在数据被交易时的数据冲突。
20.根据权利要求19所述的计算机可读存储介质,还包括按照并发地传送数据,使用仲裁逻辑来处理对由目标标识符标识的相同目的地的并发数据请求。
21.根据权利要求15所述的计算机可读存储介质,其中,所述多个存储器组件中的每一个包括暂存存储器。
22.一种装置,包括被单独配置为执行根据权利要求1至7中任一项所述的方法的每个步骤的模块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/295,408 | 2019-03-07 | ||
US16/295,408 US10838868B2 (en) | 2019-03-07 | 2019-03-07 | Programmable data delivery by load and store agents on a processing chip interfacing with on-chip memory components and directing data to external memory components |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111666253A CN111666253A (zh) | 2020-09-15 |
CN111666253B true CN111666253B (zh) | 2023-05-12 |
Family
ID=72335241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010150294.1A Active CN111666253B (zh) | 2019-03-07 | 2020-03-06 | 向具有共享存储器的共享处理元件的***传递可编程数据 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10838868B2 (zh) |
CN (1) | CN111666253B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100121B (zh) * | 2020-11-17 | 2021-02-12 | 北京壁仞科技开发有限公司 | 计算装置、计算设备以及可编程调度方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1685297A (zh) * | 2001-11-01 | 2005-10-19 | 英特尔公司 | 在多处理器环境中单方地加载安全操作***的装置和方法 |
WO2010095004A1 (en) * | 2009-02-23 | 2010-08-26 | Freescale Semiconductor, Inc. | Priority search trees |
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
CN105103142A (zh) * | 2013-03-29 | 2015-11-25 | 惠普发展公司,有限责任合伙企业 | 在计算节点中的代理之间共享固件 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5420991A (en) * | 1994-01-04 | 1995-05-30 | Intel Corporation | Apparatus and method for maintaining processing consistency in a computer system having multiple processors |
JPH07262156A (ja) * | 1994-03-16 | 1995-10-13 | Fujitsu Ltd | マルチダウンロードシステム |
US7080169B2 (en) | 2001-12-11 | 2006-07-18 | Emulex Design & Manufacturing Corporation | Receiving data from interleaved multiple concurrent transactions in a FIFO memory having programmable buffer zones |
US8176265B2 (en) | 2006-10-30 | 2012-05-08 | Nvidia Corporation | Shared single-access memory with management of multiple parallel requests |
US7698528B2 (en) | 2007-06-28 | 2010-04-13 | Microsoft Corporation | Shared memory pool allocation during media rendering |
US7979844B2 (en) | 2008-10-14 | 2011-07-12 | Edss, Inc. | TICC-paradigm to build formally verified parallel software for multi-core chips |
US10564929B2 (en) | 2016-09-01 | 2020-02-18 | Wave Computing, Inc. | Communication between dataflow processing units and memories |
US20170147513A1 (en) * | 2015-11-24 | 2017-05-25 | Knuedge, Inc. | Multiple processor access to shared program memory |
-
2019
- 2019-03-07 US US16/295,408 patent/US10838868B2/en active Active
-
2020
- 2020-03-06 CN CN202010150294.1A patent/CN111666253B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1685297A (zh) * | 2001-11-01 | 2005-10-19 | 英特尔公司 | 在多处理器环境中单方地加载安全操作***的装置和方法 |
WO2010095004A1 (en) * | 2009-02-23 | 2010-08-26 | Freescale Semiconductor, Inc. | Priority search trees |
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
CN105103142A (zh) * | 2013-03-29 | 2015-11-25 | 惠普发展公司,有限责任合伙企业 | 在计算节点中的代理之间共享固件 |
Non-Patent Citations (1)
Title |
---|
多DSP***独立加载模块在线编程软件设计;刘峰等;计算机工程;266-269 * |
Also Published As
Publication number | Publication date |
---|---|
US20200285579A1 (en) | 2020-09-10 |
CN111666253A (zh) | 2020-09-15 |
US10838868B2 (en) | 2020-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110741356B (zh) | 多处理器***中的中继一致存储器管理 | |
US10545762B2 (en) | Independent mapping of threads | |
US10255228B2 (en) | System and method for performing shaped memory access operations | |
US20140109102A1 (en) | Technique for improving performance in multi-threaded processing units | |
US9710306B2 (en) | Methods and apparatus for auto-throttling encapsulated compute tasks | |
US9069609B2 (en) | Scheduling and execution of compute tasks | |
US20140052935A1 (en) | Scalable multi-bank memory architecture | |
CN111209232B (zh) | 访问静态随机存取存储器的方法、装置、设备和存储介质 | |
US7930483B2 (en) | Associativity implementation in a system with directly attached processor memory | |
US20190354409A1 (en) | Virtualized and synchronous access to hardware accelerators | |
US7617338B2 (en) | Memory with combined line and word access | |
US11556391B2 (en) | CPU utilization for service level I/O scheduling | |
TW201337829A (zh) | 暫存器檔案型讀取 | |
US20130185725A1 (en) | Scheduling and execution of compute tasks | |
CN111666253B (zh) | 向具有共享存储器的共享处理元件的***传递可编程数据 | |
TWI501156B (zh) | 多頻時間切面組 | |
CN117631974A (zh) | 跨越基于存储器的通信队列的多信道接口的存取请求重新排序 | |
KR20210151250A (ko) | 확장 메모리 인터페이스 | |
US11321068B2 (en) | Utilizing memory coherency to improve bandwidth performance | |
CN115705306A (zh) | 多功能灵活计算存储设备 | |
US9305036B2 (en) | Data set management using transient data structures | |
CN113490915A (zh) | 扩展存储器操作 | |
US10423424B2 (en) | Replicated stateless copy engine | |
US12008243B2 (en) | Reducing index update messages for memory-based communication queues | |
US20240069805A1 (en) | Access request reordering for memory-based communication queues |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |