CN107924309A - 用于可变通道架构的***和方法 - Google Patents

用于可变通道架构的***和方法 Download PDF

Info

Publication number
CN107924309A
CN107924309A CN201680044636.3A CN201680044636A CN107924309A CN 107924309 A CN107924309 A CN 107924309A CN 201680044636 A CN201680044636 A CN 201680044636A CN 107924309 A CN107924309 A CN 107924309A
Authority
CN
China
Prior art keywords
calculate node
calculate
node
instruction
task
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.)
Granted
Application number
CN201680044636.3A
Other languages
English (en)
Other versions
CN107924309B (zh
Inventor
苏什马·沃克鲁
艾伦·葛加理
阿希什·莱·什里瓦斯塔瓦
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN107924309A publication Critical patent/CN107924309A/zh
Application granted granted Critical
Publication of CN107924309B publication Critical patent/CN107924309B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

提供了一种可变通道架构的***和方法,其中所述***包括位于存储体中的存储区、形成用于执行任务的向量指令流水线的一个或多个计算节点,每个所述计算节点位于存储体中,每个所述计算节点独立于其他计算节点执行任务的一部分。此外,所述***包括形成用于执行任务的标量指令流水线的全局程序控制器单元(GPCU),所述GPCU被配置为在一个或多个计算节点处调度用于任务的指令,并且所述GPCU还被配置为向所述计算节点分派每个所述计算节点使用的所述存储区的地址。

Description

用于可变通道架构的***和方法
相关申请的交叉引用
本申请要求享有于2016年7月26日提交的、申请号为15/220,067、名称为“用于可变通道(Lane)架构的***和方法”的美国非临时专利申请的优先权,该美国非临时专利申请又要求享有于2015年7月30日提交的、申请号为62/198,886的美国临时申请的优先权,以上两专利申请的全部内容通过引用结合在本申请中。
技术领域
本发明通常涉及计算机架构,并且在特定实施例中,涉及用于可变通道架构的***和方法。
背景技术
通常,诸如无线基带(baseband,BB)***的实时***是数据流***。在数据流***中,序列数据符号(诸如无线电帧中的符号)通常是不同的,并且典型地从共享存储器位置移动到用于确定的计算的特定存储器位置。共享存储器典型地位于远离执行这种计算的位置,并且特定存储器典型地位于执行这种计算的位置附近。
在无线BB***中,通过不同的无线资源分配支持多个用户。这些不同的分配可以在单指令、多数据(single instruction,multiple data,SIMD)***中通过一些限制被计算为一组。SIMD计算需要大量的数据移动、操作和重组以支持SIMD指令,这增加了功耗,并且需要额外的存储器来将数据的冗余副本保存在多个位置。大型SIMD处理器中的调度任务可能更复杂。进一步地,必须创建和编译算法以高效地利用SIMD。因此,尽管大型SIMD处理器可以理论上提高数据流***的性能,但是获得这些性能的提升是不现实的和困难的。
发明内容
根据本发明的优选实施例,处理器包括位于存储体中的存储区;形成用于执行任务的向量指令流水线的一个或多个计算节点,每个所述计算节点位于所述存储体中,每个所述计算节点独立于其它的所述计算节点执行所述任务的一部分;以及形成用于执行所述任务的标量指令流水线的全局程序控制器单元(global program controller unit,GPCU),所述GPCU被配置为在一个或多个所述计算节点处调度用于所述任务的指令,所述GPCU还被配置为向所述计算节点分派每个所述计算节点使用的所述存储区的地址。
根据本发明的优选实施例,一种方法包括接收用于任务的程序代码;分配多个计算节点以执行所述任务;将用于所述程序代码的第一提取数据包和用于所述第一提取数据包的第一相应数据指针分派给所述多个计算节点中的每个;响应于每个节点完成向所述节点分派所述第一提取数据包的执行,从所述多个计算节点中的每个节点接收差拍;以及根据所述接收的差拍来追踪所述多个计算节点对所述程序代码的执行。
根据本发明的优选实施例,程序控制单元包括:被配置为解码用于第一任务的程序代码的超长指令字(very long instruction word,VLIW)包分派器;被配置为为所述程序代码分配数据指针的数据地址生成和组织(data address generation andorganization,DAGO)单元;以及耦合到多个计算节点的调度器,所述调度器被配置为分配所述多个计算节点以执行所述程序代码,所述调度器被配置为将第一线程分配给所述多个计算节点的第一子集,并且将第二线程分配给所述多个计算节点的第二子集。
附图说明
为了更全面地理解本发明及其优点,现在结合附图参照以下描述,其中:
图1是数据流***的简图;
图2-5是处理***的框图;
图6是RIMD计算节点的框图;
图7是RIMD指令执行的时序图;
图8是RIMD处理方法的流程图;以及
图9是处理***的框图。
具体实施方式
根据各种实施例,向量数据可以存储在高速存储器中并且在计算元件附近。将数据存储在计算元件附近可以允许在非一致性存储器访问(non-uniform memory access,NUMA)架构上高效地和确定地执行任务。高速存储器可以包括高速缓存、专用L1(privateL1,PL1)存储器等。将数据存储在高速存储器中可以非常快速地访问数据,但可能需要在执行任务之前将整个数据集设置为被加载。高速存储器可能很小,限制将适于高速存储器的任务的大小,并且当高速存储器中的数据被刷新到更高容量的存储器时,停止执行任务。双向调度方案可以改善在执行之前加载数据集的延迟,但这样的方案增加了存储器需求,因为它们需要当前作业的数据并将下一个作业加载到存储器中。集中式共享存储器方案试图解决容量问题,但可能会遇到较长的延迟。较大的高速缓存可能有助于解决容量和延迟问题,但增加设计的额外水平可能会增加复杂性并导致一致性问题。
图1是数据流***100的简图。数据流***100示出了在无线基带***中向量计算期间发生的操作。当执行指令时,相同的计算在向量中的每个元素上操作。因此,向量计算***可以被提及为包括多个通道,其中每个通道对向量的元素执行指令。数据流***100包括天线空间、波束空间和用户空间。数据在传输期间流经每个空间。例如,向量数据首先流经天线空间,在天线空间中选择天线。向量数据然后流经波束空间,在波束空间中选择用于天线的波束。向量数据接着流经用户空间,在用户空间中选择广播代码或序列。在天线空间、波束空间和用户空间中执行不同的计算。因此,数据流***100中的向量数据必须在数据流***100的点102和104处(例如在每个空间之间)***控和/或重组。向量数据***控以使其可以为每个后续空间中的算法做准备。例如,每个空间中的算法可以在不同大小的数据向量上操作。此外,数据可能需要在点102和104处预取。尽管在无线基带***的背景下讨论本发明,但是应当理解,数据流***100可以是任何***的一部分。
实施例提供了基于动态可编程和分布式计算节点的可扩展的、可变长度的多通道架构。多通道***的实施例可以被称为“松散指令多数据”(relaxed instructionmultiple data,RIMD)***。RIMD架构可能比SIMD架构更高效。在一些实施例中,RIMD计算节点与***存储器同位。在这样的实施例中,RIMD计算节点可以直接访问远程存储体,而无需首先将数据复制到邻近存储体。将数据从远程存储体移动或复制到邻近存储体可能是一个缓慢的操作。将计算节点定位在靠近存储器的位置可以减少数据移动量、增加访问速度。在一些实施例中,用于任务或程序的指令从全局程序控制器单元(GPCU)通过存储器传送到计算节点。
实施例将处理器的流水线划分为标量处理部分和向量处理部分。向量处理部分是RIMD流水线。SIMD处理器典型地在锁步执行中对数据向量执行计算,其中向量中的每个元素在SIMD流水线继续之前被处理。
实施例消除了对锁步执行的需求,允许可变长度的多通道包括任意数量的计算节点并且从而处理任意长度的数据向量。处理器的标量处理部分配置处理器的向量处理部分,并且向向量处理部分分派编程。
RIMD流水线中的每个计算节点独立于其他计算节点执行指令。在一些实施例中,RIMD流水线的所有通道可以或可以不同时或者在相同的时钟周期执行指令。在这样的实施例中,RIMD流水线的多个通道在时域中移位。该移位可以小至一个时钟周期,并且多达可以通过RIMD***在计算节点处缓冲指令和/或数据的能力确定的时钟周期的最大数量。
由于计算节点独立地执行并且可以处于不同的时钟周期,计算节点可能会彼此独立地停止,从而降低单个计算节点停止对整体性能影响。由于计算节点独立地执行指令,因此无需将数据从远程存储器移动到邻近存储器即可访问存储器。虽然对远程存储器的存储器访问操作可能较慢,但是存储器性能损失可能小于通过消除对重新组织和高速缓存数据的需要以及通过消除对以锁步方式执行指令的需要而实现的性能提升。由于计算节点不在锁步中执行指令,因此向量流水线的每个通道可以适应***存储器的延迟。因此,与SIMD处理器相比,RIMD处理器可以具有总体性能提升。这样的处理器可以被称为划分延迟自适应流水线(split latency adaptive pipeline,SLAP)处理器。
图2是处理***200的框图。处理***200对数据流***100中的一个或多个空间执行多数据计算。处理***200包括GPCU 202、向量指令流水线204和存储器206。GPCU 202耦合到向量指令流水线204和存储器206。存储器206也可以耦合到向量指令流水线204。
GPCU 202追踪和管理处理***200中的指令的执行。数据处理可以在处理***200中的一个或多个通道中停止。GPCU 202追踪每个通道中的停止,并基于每个通道的进度将指令分配给每个通道进行处理。形成标量指令流水线的功能单元包括在GPCU 202中,GPCU202可以用于执行创建和维护向量指令流水线204的控制操作。控制操作可以包括改变程序流;输入和输出数据地址计算和/或操控;与本地、集中式或分散式操作***交互的操作;中断处理;存储器分配等等。标量控制操作使用和操控标准数据类型,如C数据类型。在一些实施例中,GPCU 202是运行诸如Linux的操作***的***。
向量指令流水线204包括多个通道,每个通道对向量数据类型执行数学计算。向量指令流水线204是具有多个计算节点的RIMD流水线,其中每个计算节点独立于其它计算节点处理指令。向量指令流水线204中的计算节点可以不以锁步方式操作,并且可以各自在相同或不同的周期中执行指令。可以构造任务或线程以由向量指令流水线204中的任意数量的RIMD计算节点执行。特别地,GPCU 202可以动态地将向量指令流水线204中的可变数量的RIMD计算节点分组,以形成类似于SIMD机器的流水线。形成的流水线可能不具有SIMD所具有的缺点,例如要求重组数据以使其与SIMD兼容。
对于不同类型的算法,向量指令流水线204可以是可扩展的、灵活的和高效的。用于特定算法的分配在向量指令流水线204中的RIMD计算节点的数量可以是可变的,并且可以被选择以优化用于该算法的通道数量。优化RIMD计算节点的数量可能会增加节电量,因为不需要的节点可能掉电。
存储器206可以是远程存储器,或者可以是诸如高速缓存的邻近存储器。存储器206是包括多个存储区的共享存储器。向量指令流水线204中的每个RIMD独立地访问存储器206。因此,数据可能不需要被重组、操控或对齐,以使向量指令流水线204正确地访问存储器206。共享存储器是分布式的,并且可能不具有向量指令流水线204中的每个RIMD访问的中心位置。尽管它们被示为单独的区,但是应当理解,向量指令流水线204的计算节点位于存储器206中。存储器206中的存储体或节点由邻近计算节点共享。将向量指令流水线204的计算节点定位在存储器206中可以提高性能、降低数据移动的成本并且减少存储器访问操作的数量。
图3是处理***300的框图。除了向量指令流水线204包括计算节点302、指令缓冲器304和数据缓冲器306之外,处理***300类似于处理***200。GPCU 202将用于计算节点302的指令发送到指令缓冲器304。指令缓冲器304可以是例如队列。当计算节点302执行完它们的当前指令时,这些计算节点中的每个从指令缓冲器304中提取更多指令以用于执行。因此,缓冲的指令可以被称为提取数据包。数据缓冲器306可以是队列,并且缓冲计算节点302存储在存储器206中的数据。此外,数据缓冲器306可以缓冲来自存储器206的读取数据,并且可以对从存储器206读取的数据重新排序。在一些实施例中,GPCU202将对数据的读取请求分派到数据缓冲器306,从而数据以适当的顺序到达适当的计算节点302。
GPCU 202可以以多种方式调度计算节点302。在一些实施例中,GPCU 202半随机地调度计算节点302。在一些实施例中,GPCU 202试图尽最大努力地协调位于指令将访问的存储器206体附近的计算节点302处的指令。
向量指令流水线204还包括高效地向计算节点302分配指令的仲裁器(未示出)。在一些实施例中,计算节点302使用直接存储器访问(direct memory access,DMA)来将数据从计算节点302之一附近的存储器206的部分复制另一计算节点附近的存储器206的部分。直接复制数据通过避免中间复制操作而允许更快地访问存储器。在这样的实施例中,可以将DMA操作调度到具有较少开放DMA连接的计算节点302,以平衡计算节点302中的DMA主控器的数量。
图4是处理***400的框图。除了每个计算节点302具有它们自己的指令缓冲器402和数据缓冲器404之外,处理***400类似于处理***300。通过使每个计算节点302包括指令缓冲器402,计算节点302进一步彼此隔离以及和GPCU 202隔离。因此,向量指令流水线204的一条通道的停止可能不会导致其他通道的停止。
每个指令缓冲器402包括帮助GPCU 202保持程序执行的追踪的差拍机制。每当计算节点302执行完指令缓冲器402中的指令时,指令缓冲器402向GPCU 202发送差拍。差拍可以是例如1比特连贯的通知。在一些实施例中,GPCU 202通过对发送自指令缓冲器402的差拍进行计数来追踪每个计算节点302中的停止。当计数的差拍的数量超过阈值时,例如当计算节点302落后很多时,GPCU可以减缓或停止到指令缓冲器402的指令的调度。在一些实施例中,每个指令缓冲器402可以缓冲一个完整提取数据包。
如上所述,计算节点302独立于彼此执行指令,并且因此可以彼此独立地停止。独立的停止可以降低处理***400中停止的整体影响。尽管计算节点302执行相同的程序,但计算节点302可以独立地停止或被时钟控制,减少它们的存储器访问,并且访问不同于其他计算节点302的唯一的数据模式。这种独立的执行和停止的方式可以降低RIMD***的功耗,并且允许多个计算节点302在单个指令上访问同一存储体中的数据。在一些实施例中,当多个计算节点302试图同时访问同一存储器位置时,GPCU 202可以访问存储器中的公共数据,并且然后使用指令缓冲器402将该数据广播到所有请求节点。在这样的实施例中,该数据可以是指令缓冲器402中的指令中的字段。
在一些实施例中,GPCU 202可以使用来自每个指令缓冲器402的差拍来在计算节点302的子集之间形成界线(barrier)。隔栏可以用于使计算节点302与GPCU 202同步。GPCU202通过不发送进一步的指令来在指令流中形成界线,直到所有计算节点302已经同步到同一(界线)指令。GPCU 202对来自每个计算节点302的差拍进行计数(如上讨论的),以确定每个节点何时同步到同一指令。一旦每个计算节点302已经达到界线,GPCU 202重新开始发送指令,并且允许计算节点302再次异步地流动。同步计算节点302降低了节点访问之前由其他节点产生的过期数据的风险。因此,在形成界线的实施例中,来自计算节点的存储器访问操作被同步,以使得它们以适当的顺序执行。
图5是处理***500的框图。处理***500包括控制单元502和向量指令流水线504。控制单元502管理和分派指令到向量指令流水线504。向量指令流水线504位于存储器中,从而向量指令流水线504中的计算节点分布在存储器子体中。
控制单元502包括GPCU 512、调度器内核514、部分解码的超长指令字(very longinstruction word,VLIW)包分派单元516、数据地址生成和组织(data addressgeneration and organization,DAGO)单元518、VLIW包和数据地址队列520和DMA控制器522。
GPCU 512控制指令解码和分派。调度器内核514为特定作业或任务调度RIMD计算节点534(如下讨论的)。部分解码的VLIW包分派单元516从VLIW指令包中提取指令并将它们发送到VLIW包和数据地址队列520。DAGO 518生成存储器地址(或“数据指针”)并将它们分配给计算单元,并将它们发送到VLIW包和数据地址队列520。DAGO 518还可以执行任何所需的存储器操作重组。执行的程序可以划分为全局和本地控制器。某些阶段之间可能会有一些重叠,以缓和复杂性并提供最佳性能。
向量指令流水线504包括指令路由器532、RIMD计算节点534、存储器子体536以及智能路由器和预取器单元538。指令路由器532从VLIW包和数据地址队列520接收指令,并将它们分发到RIMD计算节点534。可以有一个或多个指令路由器532。
每个RIMD计算节点534彼此独立地执行指令。每个RIMD计算节点534的时钟门控可以是灵活的,以使得每个节点具有其自己的输入时钟连接,当不使用该节点时,输入时钟连接为节点选通。RIMD计算节点534耦合到部分解码的VLIW包分派单元516。每当RIMD计算节点534执行完指令时,它们通知部分解码的VLIW包分派单元516。在一些实施例中,该通知是1比特差拍。GPCU 512对差拍数进行计数并根据接收的差拍的数量向向量指令流水线504分派更多指令。RIMD计算节点534访问存储子体536。每个RIMD计算节点534靠近至少一个可由相应的RIMD计算节点534更快速地访问的存储子体536。RIMD计算节点534可以经由智能路由器和预取器单元538访问进一步远离的其他存储子体536。
使RIMD计算节点534分布在存储子体536之间可能导致RIMD计算节点534具有可变延迟。然而,尽管存在若干额外的存储器操作费用,但是标量流水线(例如,GPCU)和向量流水线(例如,独立的RIMD计算节点)之间的流水线的划分可以获得可扩展和高性能的***。
智能路由器和预取器单元538路由和仲裁存储器访问操作,并执行一些存储器预取、写入缓冲和数据合并。智能路由器和预取器单元538是可编程预取器,并且与每个RIMD计算节点534一起工作以减少与访问远端数据节点相关联的延迟。智能路由器和预取器单元538基于步幅或来自基本存储器地址的偏移预取数据。在一些实施例中,智能路由器和预取器单元538合并来自多个计算节点的写入操作,这可以减少对存储器的总访问量。在一些实施例中,DMA控制器522是允许RIMD计算节点534通过智能路由器和预取器单元538执行DMA的辅助模块。智能路由器和预取器单元538可以被称为智能仲裁器和预取器(smartarbiter and prefetchers,SAPs)
图6是RIMD计算节点600的框图。RIMD计算节点600包括RIMD接口602、队列604、本地程序控制单元(local program control unit,LPCU)606、计算单元608和可选的数据缓冲器610。RIMD接口602连接RIMD计算节点600与处理器中的其他设备(例如,指令路由器532)。
队列604从指令路由器532接收指令和数据并对它们进行缓冲。缓冲指令和输入数据允许RIMD计算节点600独立于RIMD处理器中的其他RIMD计算节点进行操作。队列604使RIMD计算节点600中的任何停止局部化,以使得其他RIMD计算节点不受影响。队列604包括指令缓冲器612(或“指令队列”)和输入数据缓冲器614(或“结果队列”)。指令缓冲器612缓冲指令,并且输入数据缓冲器614缓冲执行该指令所需的数据。
LPCU606包括指令解码和分派功能。LPCU 606包括每当RIMD计算节点600执行完指令缓冲器612中的指令时向GPCU 512发送差拍的逻辑。
计算单元608包括在RIMD计算节点600中执行主要计算的功能单元。例如,计算单元608包括多路复用单元、寄存器和加载/存储单元。在一些实施例中,计算单元608具有用于加载/存储单元的专用加载/存储路径,从而计算单元608可独立于其他RIMD计算单元访问存储器。
一些实施例包括数据缓冲器610。数据缓冲器610可以类似于输入数据缓冲器614,并且可以在加载/存储路径中,以缓冲存储器访问操作。当RIMD计算节点600试图访问另一个RIMD计算节点正在访问的存储器时,使用数据缓冲器610可以防止RIMD计算节点600停止。可变存储器延迟可能导致背靠背读取操作将数据无顺序地返回到计算单元608。缓冲读取数据暂时地允许计算单元608按顺序读取存储器。数据缓冲器610可以是例如内容可寻址存储器(content-addressable memory,CAM)高速缓存、先进先出(first-in-first-out,FIFO)缓冲器等。在一些实施例中,数据缓冲器610可以是小的,例如大小小于大约1千字节(KB)。数据缓冲器610的大小可以根据对存储体的延迟来确定。在一些实施例中,对存储体的最大延迟可用于确定数据缓冲器610的大小。在一些实施例中,数据缓冲器610可以小于或等于指令缓冲器612的大小的大约两倍。数据缓冲器610还缓冲写入操作。
图7是执行RIMD指令的时序图700。时序图700示出了***时钟的时序状态和九个计算节点。时序图700示出了RIMD计算节点如何独立地执行指令。在时序图700中,由GPCU在周期1分派程序。计算节点1、2和3接收程序,并在周期2执行这些程序。计算节点4、5和6接收程序并在周期3执行这些程序。计算节点7、8和9接收程序并在周期4执行这些程序。基于例如计算节点物理上位于处理器中的哪个位置,程序在不同时问到达不同的计算节点。其他节点可能具有更高的延迟。其他因素也可以影响计算节点何时接收程序并开始执行程序。
为任务选择的RIMD计算节点的数量是可动态地配置的,并且可以基于例如任务需求。在时序图700中,配置九个线程来运行程序。这个数量对于不同的任务可以改变。此外,RIMD计算节点可以进一步划分为并行线程。从RIMD群集分配的并行线程的数量也是可配置的,例如,可以增加所分配的线程的数量的最大限制。例如,继续时序图700所示的示例,RIMD集群可以以几种方式被划分:(1)所有的RIMD计算节点可以运行相同的线程;(2)所有的RIMD计算节点可以运行不同的线程;(3)某些单元可以运行第一线程,而其他单元可以运行第二线程;以及(4)某些单元可以运行第一和第二线程,而其他单元可能掉电。其他配置也是可能的。
图8是RIMD处理方法800的流程图。应当理解,RIMD处理方法800并未示出步骤的顺序。相反,RIMD处理方法800中的框可以并行操作。
首先,由GPCU将执行的程序移动到全局程序存储器(步骤802)。该程序可能处于远端存储器中,或者可以从程序高速缓存或存储器中获取,以用于编程。在程序在存储器中的实施例中,程序可以通过DMA获取。接下来,自远端存储器移动执行程序所需的数据(步骤804)。在一些实施例中,可以通过用DMA复制数据来实现移动。调度器将任务调度到一个或多个RIMD计算节点(步骤806)。调度器为任务选择计算节点的数量,并对每个节点分配标识符(identifier,ID)。GPCU提取任务的程序代码,并将其和任务的数据地址一起分派给分配的RIMD计算节点(步骤808)。然后将程序代码推送到每个RIMD计算节点。因为RIMD计算节点在分布式共享存储器中,可能不需要使用昂贵操作(诸如高速缓存或DMA等)将编程复制到节点。
每个RIMD计算节点接收并缓冲程序代码和数据地址(步骤810)。RIMD计算节点解码并执行分派给它们的程序代码(步骤812)。RIMD计算节点在执行期间使用接收的数据地址在来自使用分配给每个计算节点的ID计算的数据地址的偏移处访问数据(步骤814)。可以使用SAP将访问的数据带到更接近RIMD计算节点(步骤816)。SAP可以通过与存储器中的其他SAP进行通信来预取数据。每个RIMD计算节点在执行完或分派完指令时向GPCU发送差拍(步骤818)。
GPCU通过对发送的差拍数进行计数来保持追踪每个RIMD计算节点的进度(步骤820)。当RIMD计算节点执行完缓冲区中的指令时,GPCU将更多的程序代码和数据地址分派给RIMD计算节点。如果需要,GPCU还可以使用来自RIMD计算节点的差拍来同步节点(步骤822)。当任务完成时,GPCU可以通过重复步骤802-822来为另一任务调度RIMD计算节点,或者如果没有更多的任务,则GPCU可以使节点掉电(步骤824)。
图9是用于执行本文描述的方法的处理***900的框图,该处理***900可以安装在主设备中。如图所示,处理***900包括处理器902、存储器904和接口906-910,其可以(或可以不)如图9所示地布置。处理器902可以是适于执行计算和/或其他与任务相关的处理的任何组件或组件的集合,并且存储器904可以是适于存储用于由处理器902执行的程序和/或指令的组件或组件的集合。在一个实施例中,存储器904包括非暂时性计算机可读介质。接口906、908、910可以是允许处理***900与其他设备/组件和/或用户通信的任何组件或组件的集合。例如,接口906、908、910中的一个或多个可以适于将数据、控制或管理消息从处理器902传送到安装在主设备和/或远程设备上的应用。作为另一示例,接口906、908、910中的一个或多个可以适于允许用户或用户设备(例如个人计算机(personal computer,PC)等)与处理***900进行交互/通信。处理***900可以包括未在图9中示出的附加组件,诸如长期存储器(例如,非易失性存储器等)。
在一些实施例中,处理***900被包括在正在访问电信网络或以其他方式部分地访问电信网络的网络设备中。在一个示例中,处理***900位于无线或有线电信网络中的网络侧设备(诸如基站、中继站、调度器、控制器、网关、路由器、应用服务器或电信网络中的任何其他设备)中。在其他实施例中,处理***900位于访问无线或有线电信网络的用户侧设备(诸如移动台、用户设备(UE)、个人计算机(PC)、平板电脑、可穿戴通信设备(例如,智能手表等)或适于访问电信网络的任何其他设备)中。
在一个示例实施例中,处理***900包括接收用于任务的程序代码的代码接收模块、分配多个计算节点以执行任务的分配模块、将用于程序代码的第一提取数据包和用于第一提取数据包的第一相应数据指针分派给多个计算节点的每个的分派器、响应于每个节点完成向所述节点分派第一提取数据包的执行,从多个计算节点中的每个节点接收差拍的差拍模块以及根据接收的差拍来追踪多个计算节点对程序代码的执行的追踪模块。在一些实施例中,处理***900可以包括用于执行实施例中描述的任何一个步骤或步骤的组合的其他或附加模块。
虽然已经参照说明性的实施例描述了本发明,但是本说明书并不意图以限制性的方式被解释。对于本领域技术人员来说,参照本说明书,对说明性的实施例的各种修改和组合以及本发明的其他实施例将是显而易见的。因此,所附权利要求意图涵盖任何这样的修改或实施例。

Claims (20)

1.一种处理器,包括:
位于存储体中的存储区;
形成用于执行任务的向量指令流水线的一个或多个计算节点,每个所述计算节点位于所述存储体中,每个所述计算节点独立于其它的所述计算节点执行所述任务的一部分;以及
形成用于执行所述任务的标量指令流水线的全局程序控制器单元GPCU,所述GPCU被配置为在一个或多个所述计算节点处调度用于所述任务的指令,所述GPCU还被配置为向所述计算节点分派每个所述计算节点使用的所述存储区的地址。
2.根据权利要求1所述的处理器,其中所述计算节点包括计算节点的多个子集,所述计算节点的多个子集中的每一个在不同周期期间执行所述任务的不同部分。
3.根据权利要求2所述的处理器,其中所述计算节点的多个子集中的每一个访问由分派到所述计算节点的多个子集中的每一个的所述地址指定的所述存储区。
4.根据权利要求1至3中任一项所述的处理器,还包括:
被配置为接收用于调度至所述计算节点的所述任务的指令的指令队列。
5.根据权利要求1至4中任一项所述的处理器,其中所述一个或多个计算节点中的每个计算节点包括:
被配置为接收用于调度至所述计算节点的所述任务的所述一部分的指令的指令队列;
用于执行所述指令的计算单元;
被配置为存储来自所述计算单元的执行所述指令的结果的结果队列;以及
被配置为当所述计算单元完成执行来自所述指令队列的所述指令时通知所述GPCU的本地程序控制器单元LPCU。
6.根据权利要求5所述的处理器,其中所述GPCU还被配置为一旦接收到所述计算节点完成执行所述计算节点的所述指令队列中的所述指令的通知就在计算节点处调度用于所述任务的附加指令。
7.根据权利要求1至6中任一项所述的处理器,其中所述GPCU还被配置为执行用于所述任务的所有指令。
8.根据权利要求1至7中任一项所述的处理器,其中所述一个或多个计算节点中的每一个同时执行不同的指令。
9.根据权利要求1至8中任一项所述的处理器,还包括被配置为从所述计算节点的第二计算节点预取所述计算节点的第一计算节点所需的数据的仲裁器。
10.根据权利要求1至9中任一项所述的处理器,其中,所述GPCU还被配置为一旦所述任务完成就同步所述计算节点。
11.根据权利要求1至10中任一项所述的处理器,其中,为所述任务调度所述计算节点的子集,并且在所述任务的执行期间,未调度的所述计算节点掉电。
12.一种方法,包括:
接收用于任务的程序代码;
分配多个计算节点以执行所述任务;
将用于所述程序代码的第一提取数据包和用于所述第一提取数据包的第一相应数据指针分派给所述多个计算节点中的每个;
响应于每个节点完成向所述节点分派所述第一提取数据包的执行,从所述多个计算节点中的每个节点接收差拍;以及
根据所述接收的差拍来追踪所述多个计算节点对所述程序代码的执行。
13.根据权利要求12所述的方法,还包括根据所述接收的差拍同步所述多个计算节点。
14.根据权利要求12至13中任一项所述的方法,其中分派所述第一提取数据包和所述第一相应数据指针包括为所述多个计算节点中的每个在缓冲器中对所述第一提取数据包和所述第一相应数据指针排序。
15.根据权利要求14所述的方法,还包括:
在所述缓冲器中执行所述第一提取数据包;以及
访问由用于所述第一提取数据包的所述第一相应数据指针指示的存储器。
16.根据权利要求14所述的方法,还包括响应于完成用于所述节点的所述缓冲器中的所述第一提取数据包之一,由所述多个计算节点中的每个发送所述差拍。
17.根据权利要求12至16中任一项所述的方法,其中追踪所述程序代码的所述执行包括:
对从所述多个计算节点中的每个节点接收到的差拍数进行计数;以及
响应于所述计数的差拍数超过阈值,将用于所述程序代码的第二提取数据包和用于所述第二提取数据包的第二相应数据指针分派给所述多个计算节点中的每个。
18.根据权利要求12至17中任一项所述的方法,还包括从所述多个计算节点中的相邻计算节点向所述多个计算节点的第一计算节点提供数据。
19.一种程序控制单元,包括:
被配置为解码用于第一任务的程序代码的超长指令字VLIW包分派器;
被配置为为所述程序代码分配数据指针的数据地址生成和组织DAGO单元;以及
耦合到多个计算节点的调度器,所述调度器被配置为分配所述多个计算节点以执行所述程序代码,所述调度器被配置为将第一线程分配给所述多个计算节点的第一子集,并且将第二线程分配给所述多个计算节点的第二子集。
20.根据权利要求19所述的程序控制单元,其中,所述VLIW包分派器还被配置为从所述多个计算节点接收用于所述第一任务的所述程序代码完成的通知,并且其中所述调度还被配置为分配所述多个计算节点以执行用于第二任务的程序代码。
CN201680044636.3A 2015-07-30 2016-07-27 用于可变通道架构的***和方法 Active CN107924309B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562198886P 2015-07-30 2015-07-30
US62/198,886 2015-07-30
US15/220,067 US10691463B2 (en) 2015-07-30 2016-07-26 System and method for variable lane architecture
US15/220,067 2016-07-26
PCT/CN2016/091922 WO2017016486A1 (en) 2015-07-30 2016-07-27 System and method for variable lane architecture

Publications (2)

Publication Number Publication Date
CN107924309A true CN107924309A (zh) 2018-04-17
CN107924309B CN107924309B (zh) 2021-03-23

Family

ID=57882420

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680044636.3A Active CN107924309B (zh) 2015-07-30 2016-07-27 用于可变通道架构的***和方法

Country Status (5)

Country Link
US (2) US10691463B2 (zh)
EP (1) EP3320429B1 (zh)
JP (1) JP2018521427A (zh)
CN (1) CN107924309B (zh)
WO (1) WO2017016486A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10331445B2 (en) * 2017-05-24 2019-06-25 Microsoft Technology Licensing, Llc Multifunction vector processor circuits
CN109861781B (zh) 2017-11-30 2021-02-12 华为技术有限公司 接口传输方法、装置及设备
GB2575289B (en) * 2018-07-04 2020-09-16 Graphcore Ltd Streaming engine
CN112099768B (zh) * 2020-08-04 2024-02-23 北京奇艺世纪科技有限公司 业务流程处理方法、装置及计算机可读存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588152A (en) * 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
US20030018868A1 (en) * 2001-07-19 2003-01-23 Chung Shine C. Method and apparatus for using smart memories in computing
CN1172240C (zh) * 2001-09-03 2004-10-20 松下电器产业株式会社 多处理器***及程序最佳化方法
CN101443740A (zh) * 2006-05-17 2009-05-27 高通股份有限公司 用于高速缓存存储器的最大驻留替换的方法和***
CN102282542A (zh) * 2008-10-14 2011-12-14 奇托尔·V·斯里尼瓦桑 对于多核芯片建立正式验证的并行软件的ticc-范例
CN102695249A (zh) * 2011-03-23 2012-09-26 北京天地互连信息技术有限公司 IPv6无线传感器网络节能方法
CN104199801A (zh) * 2014-08-26 2014-12-10 山东超越数控电子有限公司 一种基于龙芯服务器的高性能计算集群的实现方法
CN104636182A (zh) * 2013-11-06 2015-05-20 国际商业机器公司 一种操作数据处理***的方法、数据处理***和处理器
CN104778080A (zh) * 2014-01-14 2015-07-15 中兴通讯股份有限公司 基于协处理器的作业调度处理方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2552075B2 (ja) 1992-05-22 1996-11-06 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システム
US6026478A (en) 1997-08-01 2000-02-15 Micron Technology, Inc. Split embedded DRAM processor
JPH11306037A (ja) 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法
JPH11306149A (ja) 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法
JP2003091415A (ja) 2001-09-17 2003-03-28 Sanyo Electric Co Ltd データ処理方法と装置およびデータ変換方法
CN1142484C (zh) 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
GB2399900B (en) 2003-03-27 2005-10-05 Micron Technology Inc Data reording processor and method for use in an active memory device
US7472392B2 (en) 2003-04-23 2008-12-30 Micron Technology, Inc. Method for load balancing an n-dimensional array of parallel processing elements
US9015390B2 (en) 2003-04-25 2015-04-21 Micron Technology, Inc. Active memory data compression system and method
US7676647B2 (en) 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US8180998B1 (en) 2007-09-10 2012-05-15 Nvidia Corporation System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations
US7873869B2 (en) 2008-10-09 2011-01-18 International Business Machines Corporation Checkpointing a hybrid architecture computing system
JP5091912B2 (ja) 2009-05-21 2012-12-05 株式会社東芝 マルチコアプロセッサシステム
CN102156637A (zh) 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
JP2013054625A (ja) 2011-09-06 2013-03-21 Toyota Motor Corp 情報処理装置、情報処理方法
US9934043B2 (en) 2013-08-08 2018-04-03 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing computational imaging pipeline

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588152A (en) * 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
US20030018868A1 (en) * 2001-07-19 2003-01-23 Chung Shine C. Method and apparatus for using smart memories in computing
CN1172240C (zh) * 2001-09-03 2004-10-20 松下电器产业株式会社 多处理器***及程序最佳化方法
CN101443740A (zh) * 2006-05-17 2009-05-27 高通股份有限公司 用于高速缓存存储器的最大驻留替换的方法和***
CN102282542A (zh) * 2008-10-14 2011-12-14 奇托尔·V·斯里尼瓦桑 对于多核芯片建立正式验证的并行软件的ticc-范例
CN102695249A (zh) * 2011-03-23 2012-09-26 北京天地互连信息技术有限公司 IPv6无线传感器网络节能方法
CN104636182A (zh) * 2013-11-06 2015-05-20 国际商业机器公司 一种操作数据处理***的方法、数据处理***和处理器
CN104778080A (zh) * 2014-01-14 2015-07-15 中兴通讯股份有限公司 基于协处理器的作业调度处理方法及装置
CN104199801A (zh) * 2014-08-26 2014-12-10 山东超越数控电子有限公司 一种基于龙芯服务器的高性能计算集群的实现方法

Also Published As

Publication number Publication date
EP3320429B1 (en) 2023-05-31
US10884756B2 (en) 2021-01-05
US20200278869A1 (en) 2020-09-03
EP3320429A1 (en) 2018-05-16
JP2018521427A (ja) 2018-08-02
WO2017016486A1 (en) 2017-02-02
EP3320429A4 (en) 2018-07-18
US10691463B2 (en) 2020-06-23
CN107924309B (zh) 2021-03-23
US20170031689A1 (en) 2017-02-02

Similar Documents

Publication Publication Date Title
JP7426979B2 (ja) ゲートウェイ上のホストプロキシ
US10884756B2 (en) System and method for variable lane architecture
CN103635875A (zh) 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
CN105579978A (zh) 用于动态控制高速缓存存储器的寻址模式的方法、设备和***
CN103562866A (zh) 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
CN101165655A (zh) 多处理器计算***及其任务分配方法
JP7322131B2 (ja) データ通過ゲートウェイ
US11675633B2 (en) Virtualised gateways
CN104657308A (zh) 一种用fpga实现的服务器硬件加速的方法
CN103744644A (zh) 采用四核结构搭建的四核处理器***及数据交换方法
KR20220011681A (ko) 싱크 네트워크
CN102136993A (zh) 一种数据迁移的方法、装置和***
CN103649932B (zh) 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
US11782760B2 (en) Time-multiplexed use of reconfigurable hardware
CN103914412B (zh) 用于存储设备中的流量优先化的方法,存储设备以及存储***
CN104679689A (zh) 一种用于gpdsp的采用从机计数的多核dma分段数据传输方法
CN105824604B (zh) 多输入多输出处理器流水线数据同步装置及方法
CN102629238B (zh) 支持向量条件访存的方法和装置
CN108196883A (zh) 一种智能指令调度器
JP7406539B2 (ja) ストリーミングエンジン
CN105224258B (zh) 一种数据缓冲区的复用方法与***
CN108228323A (zh) 基于数据本地性的Hadoop任务调度方法及装置
US9104465B2 (en) Main processor support of tasks performed in memory
CN103377085B (zh) 指令管理方法及装置、指令管理***、运算核心
CN109324982B (zh) 一种数据处理方法以及数据处理装置

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