CN103038760B - 分布式处理器系统中的数据组播的方法、设备及系统 - Google Patents
分布式处理器系统中的数据组播的方法、设备及系统 Download PDFInfo
- Publication number
- CN103038760B CN103038760B CN201080035523.XA CN201080035523A CN103038760B CN 103038760 B CN103038760 B CN 103038760B CN 201080035523 A CN201080035523 A CN 201080035523A CN 103038760 B CN103038760 B CN 103038760B
- Authority
- CN
- China
- Prior art keywords
- instruction
- target
- message
- processing core
- router
- 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
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000012545 processing Methods 0.000 claims abstract description 206
- 230000008569 process Effects 0.000 claims abstract description 5
- 238000000605 extraction Methods 0.000 claims description 5
- 230000003362 replicative effect Effects 0.000 claims description 3
- 238000004590 computer program Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000009826 distribution Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 230000003993 interaction Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17312—Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17318—Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
-
- 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本申请描述了大体上涉及分布式处理器架构中的数据组播的方法、过程、设备、计算机程序、计算机可访问介质、处理装置和系统。各种实施例可以包括:识别被配置为从源接收第一消息的多个目标指令;针对每个目标指令,给第一消息提供包括目标指令所共同共享的所选信息在内的目标路由指令;以及在所识别的目标指令中的两个目标指令相对于路由器位于彼此不同的方向上时,复制第一消息并在不同方向上将复制的消息路由到每个所识别的目标指令。提供目标路由指令还可以包括:所选信息使用目标指令所共同共享的比特的子集,并被识别为左操作数、右操作数或判定操作数,并且可以包括:选择目标指令的多个多指令子集中的一个。
Description
关于政府资助的研究的声明
本发明是在政府的支持下、以美国空军授予的F33615-03-C-4106 资助的。政府对本发明享有一定的权益。
背景技术
在传统的(非分布式的)处理架构中,在执行指令时,指令向中央寄存器文件发送结果并且在广播旁通(bypass)总线上广播结果,使得等待该结果的所有指令都可以立即使用该结果。
在包括经由操作数网络而互连的多个处理核心的分布式的处理器架构中,指令的编码典型地包括标识符,该标识符指明需要该值的一个或多个消耗指令。例如,在美国专利申请No.2005/0005084中描述了一种分布式的处理器架构。
在分布式的处理器架构中执行指令时,指令典型地仅向等待该值的那些消耗指令发送所得到的值。尽管在指令结果必需发送到该实现中的多个消耗指令时会出现某些挑战,但是这种指令编码将与分布式架构的实现很好地匹配,其中,产生和消耗指令位于不同的处理核心中。在标准的超高速缓存相干片上多核系统中也会出现类似的挑战。
发明内容
描述了大体上涉及分布式处理器架构中的数据组播的方法、过程、设备、计算机程序、计算机可访问介质、处理装置和系统。各种实施例可以包括:识别被配置为从源接收第一消息的多个目标指令;针对每个目标指令,给第一消息提供包括目标指令所共同共享的所选信息在内的目标路由指令;以及当所识别的目标指令中的两个目标指令相对于路由器位于彼此不同的方向上时,复制第一消息并在不同方向上将复制的消息路由到每个所识别的目标指令。提供目标路由指令还可以包括:所选信息使用目标指令所共同共享的比特的子集,并被识别为左操作数、右操作数或判定(predicate)操作数,并且可以包括:选择目标指令的多个多指令子集中的一个。
在一个示例中,提供了一种在具有多个互连的处理核心的分布式处理架构中进行数据组播的方法。该方法可以包括:识别被配置为从源接收第一消息的多个目标指令。该方法还可以包括:针对每个所识别的目标,向第一消息提供目标路由指令,每个目标路由指令包括所识别的目标指令所共同共享的所选信息。该方法还包括:当所识别的目标指令中与处理核心相关联的两个目标指令相对于路由器位于彼此不同的方向上时,复制第一消息并在不同方向上将复制的消息路由到每个所识别的目标指令。
在另一示例中,提供了一种在具有多个互连的处理核心的分布式处理器架构中进行数据组播的设备。该设备可以包括:源和路由器。该源可以被配置为:识别被配置为从源接收第一消息的多个目标指令,并针对目标指令,向第一消息提供包括目标指令所共同共享的所选信息在内的目标路由指令。路由器被配置为:读取目标路由指令,以确定每个目标指令的位置,并将第一消息路由到每个目标指令,将第一消息路由到每个目标指令包括:当目标指令中与处理核心相关联的两个目标指令相对于路由器位于彼此不同的方向上时,复制该消息。
在另一示例中,提供了一种在具有多个互连的处理核心的分布式处理架构中进行数据组播的系统。该系统可以包括具有经由片上网络而互连的多个处理核心的分布式处理设备。源与多个处理核心之一相关联。多个目标指令与多个处理核心中的至少一个相关联。该系统还可以包括多个路由器。多个处理核心中的每一个可以与多个路由器中的对应一个相关联。多个路由器中的一个或多个路由器可以被配置为:从源接收消息;根据该消息来识别目标路由指令,其中所识别的目标路由指令包括目标指令所共同共享的所选信息,用以确定每个目标指令的位置;当目标指令中的与处理核心相关联的两个目标指令相对于路由器位于彼此不同的方向上时,复制该消息;以及将复制的消息路由到每个目标指令。
尽管公开了多个示例,但是本领域技术人员根据以下的详细说明,将显而易见其他示例。显然,可以以各种明显的方式修改这里所描述的系统、装置和方法而不偏离这里的教导的精神和范围。因此,应当将详细说明当做本质上是示意性的,而不是限制性的。
附图说明
根据以下说明和所附权利要求,结合附图,本公开的前述特征将更加清楚。在认识到这些附图仅仅示出了根据本公开的一些示例且因此不应被认为是限制本公开范围的前提下,通过使用附图以额外的特征和细节来详细描述本公开,附图中:
图1示出了分布式处理器架构中被配置用于进行数据组播的计算机系统的硬件配置的示例。
图2示出了处理片的示例。
图3示出了经由网状网络耦合的4×4阵列的处理片的示例。
图4示出了针对指令的比特图的示例。
图5示出了针对指令的比特图的另一示例,其中在寄存器或保留站中包含了比特掩码。
图6示出了示意规定在图4中示出的示例指令的编码的示例方法的流程图。
图7示出了示意图3所示的示例中示出的路由器所执行的示例路由方法的流程图。
所有附图都至少根据本公开的一些实施例来布置。
具体实施方式
在以下详细说明中,参考了作为详细说明的一部分的附图。在附图中,类似符号通常表示类似部件,除非上下文另行指明。具体实施方式部分、附图和权利要求书中记载的示例性实施例并不是限制性的。在不脱离在此所呈现主题的精神或范围的情况下,可以利用其他实施例,且可以进行其他改变。应当理解,在此一般性记载以及附图中图示的本公开的各方案可以按照在此显式和隐含公开并构成本公开的一部分的多种不同配置来设置、替换、组合、分割和设计。
可以单独或者以各种组合方式来使用在此公开和描述的各个方案、特征、示例或实施例。可以通过软件、硬件或硬件和软件的组合来实现根据本公开的方法。
图1示出了被配置用于在根据本公开的至少一些实施例所布置的分布式处理器架构(例如,分布式单处理器架构)中进行数据组播的计算机系统的硬件配置的示例。计算机系统100包括处理装置101、系统总线102、操作系统103、应用104、只读存储器105、随机存取存储器106、盘适配器107、盘单元108、通信适配器109、接口适配器110、显示器适配器111、键盘112、鼠标113、扬声器114、显示器监视器115、处理片118、处理核心120以及路由器121。尽管并不局限于如图1所示的任何特定硬件系统配置,处理装置101可以通过系统总线102耦合至各个其他组件。如这里所使用的,处理片118也可以被称作片118,并且处理核心120也可以被称作核心120。处理装置101可以被实现为一个或多个集成电路芯片和/或集成电路管芯。处理装置101可以是多核处理芯片,并且可以包括多个处理片118,每个处理片118具有相关的处理核心120和对应路由器121。多个处理片118可以通过处理装置101上的网络(例如片上网络)而互连并协同工作。参考图1,操作系统103可以在处理装置101上运行,以提供对图1的各个组件的功能的控制和协调。根据本公开的原理所布置的应用104可以与操作系统103一起执行,并给操作系统103提供调用,其中,调用实施要由应用104执行的各种功能或业务。
参考图1,只读存储器(“ROM”)105可以与系统总线102耦合,并且可以包括控制计算机系统100的某些基本功能的基本输入/输出系统(“BIOS”)。随机存取存储器(“RAM”)106和盘适配器107也可以耦合到系统总线102。应该注意,包括操作系统103和应用104 在内的软件组件可以加载到RAM106中以供执行,RAM106可以是计算机系统的主存储器。盘适配器107可以是与盘单元108进行通信的集成驱动电子设备(“IDE”)适配器(例如,并行高级技术附件“PATA”),例如盘驱动器,或者可以是例如串行高级技术附件(“SATA”)适配器、通用串行总线(“USB”)适配器、小型计算机系统接口(“SCSI”)适配器。
计算机系统100还可以包括与总线102耦合的通信适配器109。通信适配器109可以将总线102与外部网络(未示出)互连,从而便于计算机系统100与其他类似设备进行通信。I/O设备还可以经由用户接口适配器110和显示器适配器111与计算机系统100耦合。键盘112、鼠标113以及扬声器114可以通过用户接口适配器110与总线 102互连。可以通过这些设备中的任意一个将数据输入到计算机系统 100。显示器监视器115可以通过显示器适配器111与系统总线102 耦合。通过这种方式,用户能够通过键盘112或鼠标113与计算机系统100进行交互,并经由显示器115或扬声器114接收计算机系统100 的输出。
图2示出了根据本公开的至少一些实施例所布置的处理片的示例。图2包括处理片210、链路211、212、处理核心213、路由器214、消息215以及链路216。如图所示,处理片210可以经由链路211、212 耦合到其他处理片,消息215可以在链路211、212上传播。处理片 210还可以包括处理核心213和路由器214,处理核心213和路由器 214可以通过链路216彼此耦合。处理核心213和路由器214可以被配置为执行根据本公开的组播路由方法和过程的示例。处理片210可以被配置为与其他处理片一起工作,以执行单线程或多线程程序。在一些示例中,如图3所示,每个处理片可以保存指令,该指令可以通过组播而与多达128条指令进行通信。
图3示出了根据本公开的至少一些实施例所布置的经由网状网络耦合的4×4阵列的处理片的示例。图3包括4×4阵列310、网状网络 312、处理核心213、路由器214、消息315、315a、315b、315c、315d、 315e、315f、315g、路由器316、处理片210、处理片<0,0>325、处理片<2,2>322、处理片<3,0>324、处理片<0,1>326、处理片<3,3>328、链路330、332、338、342、处理片<2,1>334、路由器336、处理片<1,1> 340以及处理片<2,0>344。各个处理片210可以通过在阵列310内的位置(行、列)来引用。例如,处理片<0,1>326可以位于阵列310 的第一行、第二列。处理核心213和路由器214与每个处理片210相关联,其中,处理片210、处理核心213和路由器214可以对应于图2 中的处理片210、处理核心213和路由器214。处理片210可以被配置为一起工作以执行单线程或多线程程序,并且在一些示例(如图3所示)中,每个处理片可以保存指令,该指令可以通过组播而与多个指令(例如,多达128条指令)进行通信。
每个指令标识符可以被映射到处理片210的阵列310中的特定坐标。可以用x坐标两个(2)比特和y坐标两个(2)比特来映射16 个处理片210。由于在本示例的块中可能总共有128个目标指令,所以每个处理片210可以接收八个(8)指令。因此,在一些示例中,针对指令,可以使用三个(3)比特来指定处理片210的处理核心213 内的八个可能时隙(位置)之一。
如图3所示的示例所示,片<2,2>322可以执行指令,并且片 <2,2>322可以向片<3,0>324、<0,1>326和<3,3>328发送其执行指令的结果。可以使用在图4和图5所示的示例中所示意的示例组播格式将位于片<3,0>324、<0,1>326和<3,3>328处的这些目标编码到指令中。片<2,2>322处的路由器316可以被布置为解译消息315的子集和比特掩码,以确定片<2,2>322的东边(例如,右边)和西边(例如,左边) 的列中的片210所需的值。片<2,2>322上的指令可以利用根据本公开的示例目标编码,将两个消息拷贝315a、315b注入网络312。如图3所示,消息315a可以向西,而消息316可以向东。
在本示例中可以实现多种不同的指令到处理片210的映射,以实现指令坐标和路由之间的一致性。一个映射示例可以在所有16个处理片210上平等地对指令标识符进行交织。例如,标识符“0”、“16”、“32”、“48”等可以被映射到阵列310的左上角的处理片<0,0>325,标识符“1”、“17”、“33”、“49”等可以映射到处理片<0,1>326,如此等等。利用这种示例映射,子集(例如,图4所示的示例中的子集0)可以规定一个指令映射到16个片中的每个片。对于每个其他子集(例如,图4 的子集418),情况也是相同的。指令到片的映射可以取决于使用指令标识符中的哪些比特来选择指令所要映射到的处理核心。变型也是有用的,并且指令可以不平等地映射到处理核心(例如,一些块可以将所有指令映射到一个处理核心,一些块可以将指令分布到所有处理核心上,而一些块可以将指令映射到多于一个处理核心但是少于所有处理核心)。
路由器316可以被布置为复制消息315,并分别沿着第2行的链路332和330,向西(如消息315a所示)和向东(如消息315b所示) 发送消息315的拷贝。往东消息315b不需要再复制,并且可以如消息 315f所示,直接路由到片<3,3>328。当往西消息315a到达片<2,1>334 中的路由器336时,路由器336可以认识到需要消息复制。因此,路由器336可以沿着链路338向片<1,1>340向北(例如,向上)发送一个拷贝消息315c,并沿着链路342向片<2,0>344向西发送另一个消息拷贝315d。每个消息拷贝315c和315d则可以如消息315e和315g所示,被直接路由到其对应目标(片<0,1>326、片<3,0>324),而不需要再复制。路由路径可以形成最小生成树,其中没有链路被用于传送多于一个消息拷贝。例如,在一些示例中,消息315的拷贝可以仅遍历特定的链路一次。
可以根据图3所示的示例来实现组播,其中,根据本公开的一些示例,路由器316被布置为从编码中解译多个目标。可以根据16比特的比特掩码来导出处理片210的坐标。路由器214可以包括组合逻辑,组合逻辑可以解码比特掩码,并且可以确定以下操作中的一个或多个操作:
1)如果设置了位于与路由器214相同的处理片210处的处理核心213相对应的比特,则路由器214可以向位于相同处理片210处的处理核心213发送消息315的拷贝。备选地,处理核心213可以转发包含在消息315中的其自身的操作数。
2)如果任何比特指明在路由器214的北边有多个目标,则路由器214可以拷贝消息315,并向阵列310上其位置北边发送拷贝。路由器214还可以将并不位于路由器214北边的目标的比特掩码的比特置零。
3)路由器214可以被配置为针对位于路由器214的南边、东边和西边的可能的目标,重复操作“2”。
可以由并行硬件并行地执行上述操作(1-3)。此外,可以根据阵列310内的路由器214的坐标,针对每个路由器214来调整用于操作 1-3的组合逻辑。图3所示的示例使用X-YDOR(维序路由)。然而,显然,可以使用各种其他路由算法。
图4示出了根据本公开的至少一些实施例的针对指令的比特图的示例。图4包括编译-时间和/或运行时间指令调度器400、指令410、操作码字段411、判定字段412、未使用比特413、比特掩码模式比特 414、2比特左/右/判定操作数字段416、3比特子集字段418以及16 比特的比特掩码420。编译-时间和/或运行时间指令调度器400可以用于例如规定、编译和/或调度指令410,指令410可以包括将要由目标读取的值,并且规定例如该目标将针对该值进行的处理。2比特判定字段412可以根据位于目标处的判定条件,规定多种可能,在该示例中是四种可能,例如(1)指令由目标执行,(2)指令在为真时执行, (3)指令在为假时执行,或者(4)指令不由目标执行。如果目标未判定,则指令可以执行,而无论2比特判定字段412中规定了什么。在其他示例中,可以使用更多或更少的比特判定字段。
根据一些示例,如图4所示的示例所示,指令410可以使用传统上未使用的一些比特来帮助规定多达16个不同目标,其中目标的个数可以根据例如比特分配而改变。这可以部分通过利用共同性对目标进行分组来实现。例如,比特掩码模式比特414可以用于规定指令编码的类型。可以由编译-时间和/或运行时间指令调度器400来进行对指令编码的类型的确定。在这种情况下,如果比特414被设置为0,则指令可以使用本领域已知的其他编码技术。例如,如果可以以点对点消息方案向多个目标中的每个目标分别发送相同的消息(例如,使用典型的片上网络的缺省模式),则可能需要重复利用相同的链路多次以发送相同的数据。但是,如果比特414被设置为1,则使用例如图4 所示的编码,可以针对共享该相同规定的所有目标,使用2比特416 来规定是否应该将值发送到左操作数、右操作数或判定操作数。另一种可能是16比特420规定八个2比特对,每个比特对规定不同类型的操作数,从而需要组播更少的操作数,但是关于目标的灵活性下降。
使用根据本公开的一些示例的映射,当操作数达到了目标处理片 (例如,处理片326)时,可以使用公共的比特(例如公共比特416) 来规定左/右/判定操作数和与子集(例如,图4所示的子集418)相对应的时隙。一些示例可以允许产生指令(producinginstruction)规定可变数目的目标,包括例如多于两个目标,其中目标的数目可以基于例如比特分配而改变。此外,网络312本身可以自动地执行产生指令处理片(例如,处理片326)和目标消耗指令处理片(例如,处理片 324、326、328)之间的网内消息复制。网内消息复制的这种示例可以规定:操作数消息(例如,消息315)需要遍历网络内的链路一次(例如,产生指令处理片可以将一条消息注入网络(例如,网络312),该网络自动地将消息散开并路由到目标片,自动地根据需要复制消息)。
此外,通过采用3比特,指令可以选择128个可能目标指令中的八个可能的16指令子集418之一。以所选子集418为目标的十六个指令可以由16比特的比特掩码420来标识。目标指令因此可以共享相同的子集418和左/右/判定操作数子字段416。编译-时间和/或运行时间指令调度器400可以将目标指令打包到子集418中,以便可以以单个组播指令来规定子集418,并且可以通过向相同子集418分配需要相同操作数的指令来优化程序。例如,针对图4所示指令的编码可以使得八个可能的字节418包括以下指令标识符:
子集0:[0-15];
子集1:[16-31];
子集2:[32-47];
子集3:[48-63];
子集4:[64-79];
子集5:[80-95];
子集6:[96-111];以及
子集7:[112-127]。
此外,16比特420可以规定目标比特掩码,用于指明子集418中的16个目标指令中的哪个目标指令将接收操作数。一比特413可以是未使用的,或者预留用于一些其他用途。其他各种示例编码也是可以的。一个这种示例编码可以通过使用15比特的比特掩码来节约一个比特。
图5示出了根据本公开的至少一些实施例的针对指令的比特图的另一示例,其中,比特掩码包含在寄存器或保留站中。图5包括编译- 时间和/或运行时间指令调度器500、指令510、操作码字段411、判定字段412、4比特513、比特掩码模式比特514、2比特左/右/判定操作数字段516、1比特子集字段518以及15比特520。如图所示,指令 510可以具有与图4所示示例相同的操作码字段411和判定字段412,但是在指令510中编码了不同子集的公共比特。与图4所示示例类似,可以使用1比特掩码模式比特514来规定指令编码的类型。在这种情况下,如果比特514被设置为0,则指令可以使用本领域已知的其他编码技术,规定有限数目的目标。但是,如果比特514被设置为1,则可以针对共享该相同规定的所有目标,使用2比特左/右/判定操作数字段516来规定是否应该将值发送到左操作数、右操作数或判定操作数。1比特子集字段518可以规定:针对组播的所有目标,共同使用1比特来编码在本示例中的128个可能的目标指令中的两个可能的 64比特子集之一。因此,目标指令可以共享相同的子集字段518和左 /右/判定操作数字段516。例如,针对图5所示的指令510的编码可以使得两个可能的子集包括以下指令标识符:
子集0:[0-63]以及
子集1:[64-127]。
由于可以由一个或多个其他指令来创建64比特的比特掩码,并且由组播指令510来显式地或隐式地用于规定指定子集内的64个可能的目标子集中的一个或多个,所以指令510中的剩余比特(例如,513、 520)可以是未使用的(或者预留用于其他用途)。其他各种实施方式是可以的,包括使用32比特的比特掩码,其中针对一些示例,2比特用于规定4个可能的32指令子集之一。利用指令编码410、510中的些许改变,可以共同使用图4和图5所示的示例实施例。例如,通过改变比特掩码中的比特数目和子集中的比特数目并且使用所分配的比特的各种组合,可以实现改变数目的目标。
图6示出了示意根据本公开的至少一些实施例的、规定图4所示示例指令的编码的示例方法的流程图。作为示例,示出了能够识别多达16个指令的目标比特掩码和比特分配,尽管可以预见可以识别多于或少于16个指令的可选的目标比特掩码和/或比特分配。图6示出了处理600,处理600可以包括一个或多个函数运算或函数作用,如框 610、620、630、640、650、660和/或670所示。
处理600可以在框610(识别多达16个指令,这些指令需要来自单个指令的值,例如左操作数、右操作数或判定操作数)、框620(将共享相同公共子集比特的一些或所有目标指令放置在子集中)、框630 (设置组播产生者指令比特掩码模式比特)、框640(将组播操作数类型比特设置为左操作数、右操作数或判定操作数)、框650(设置组播操作数子集比特,以编码16指令的8个子集之一)、框660(如果16 指令子集中的对应指令是接收操作数,则在比特掩码字段中设置每个比特)和/或框670(停止)。比特图的比特分配可以可选地被修改为处理多于或少于图4示例的8个子集。图6所示的处理600可以由例如编译器来执行。尽管在该示例中在编译器中实现处理600,但是所示示例方法也可以各种其他处理装置来执行。
参考图6,在框610中,处理600可以识别多达16个指令,例如,其中目标的个数可以根据比特分配而改变。指令可能需要来自单个指令的值,例如左操作数、右操作数或判定操作数。接下来,在框620 中,根据示例方法,处理600可以将目标指令放置在共享相同公共子集比特的子集(例如16个指令的8个子集之一)中。在框630中,处理600可以设置组播产生指令比特掩码模式比特(比特21)=1。接下来,在框640中,处理600可以根据框610中的识别,将组播操作数类型比特(比特20∶19)设置为左操作数、右操作数或判定操作数。接下来,在框650中,处理600可以设置组播操作数子集比特(18∶ 16),以对16个指令的8个子集之一进行编码。在框660中,如果16 指令的子集中的对应指令是接收操作数,则处理600可以设置比特掩码字段中的每个比特,然后该处理完成(框670)。
图7示出了示意图3所示的示例中示出的路由器所执行的示例路由方法的流程图,其中路由器根据本公开的至少一些实施例而布置。图7示出了:处理700可以包括如框701、710、720、725、730、735、 740、745、750、755、760、765、770和/或775所示的一个或多个功能操作或动作。
处理700可以包括以下框中的一个或多个:框701(利用输入消息而开始),输入消息705、框710(读取输入消息的首部)、框720(查询消息的目标的位置是否向北)、框725(产生消息的拷贝并向北发送拷贝)、框730(查询消息的目标的位置是否位于东边)、框735(产生消息的拷贝并向东发送拷贝)、框740(查询消息的目标的位置是否位于南边)、框745(产生消息的拷贝并向南发送拷贝)、框750(查询消息的目标的位置是否向西)、框755(产生消息的拷贝并向西发送拷贝)、框760(查询消息的目标的位置是否是本地处理核心)、框765(从网络提取消息的拷贝并将其提供给本地处理核心)、框770(查询是否存在另一输入消息)以及框775(停止)。
所示的示例在框701处利用输入消息705而开始,输入消息705 是要通过处理700路由的消息。在一些示例中,处理700可以在图2 和3所示的示例的路由器214中实施。
在框710中,处理700可以读取输入消息的首部以确定消息705 的目标的位置。这可以通过例如上面结合图5所述的组合逻辑来实现。在框720中,处理700可以查询消息705的目标的位置是否是阵列(例如阵列310)上处理700的位置的北边(例如,向上)。如果是,则在框725中,处理700可以产生消息705的拷贝,并从其位置向北发送拷贝。接下来,在框730中,处理700可以查询消息的目标的位置是否是阵列上其位置的东边(例如,向右)。如果是,则在框735中,处理700产生消息的拷贝并从其位置向东发送拷贝。接下来,在框740 中,处理700查询消息的目标的位置是否是阵列上其位置的南边(例如,向下)。如果是,则在框745中,处理700可以产生消息的拷贝并从其位置向南发送拷贝。接下来,在框750中,处理700可以查询消息的目标的位置是否是阵列上其位置的西边(例如,向左)。如果是,则在框755中,处理700可以产生消息的拷贝并从阵列上其位置向西发送拷贝。
在框760中,处理700可以查询消息的目标的位置是否是位于与处理700相关联的处理片(例如,210)处的处理核心(例如213)。如果是,则在框765中,处理700可以从网络中提取消息的拷贝,并将其提供给本地处理核心(例如,位于与处理700相同的处理片上)。接下来,在框770中,处理700可以查询是否存在需要路由的另一输入消息705。如果是,则该方法返回框710,在框710中,处理700 可以读取输入消息705的首部以确定消息705的目标的位置。如果没有其他输入消息,则方法可以在框775处停止,直到存在另一输入消息,此时,处理700可以重复图7所示并在此描述的操作。
根据一些示例,如图3所示,消息705可以在向北或向南方向上路由之前在向东或向西方向上路由。根据其他示例,在向北或向南方向上发送消息先于在向东或向西方向上发送消息。在一些示例中,可以实施动态优先,其中,处理确定应该首先向哪个方向发送消息,以便最小化消息(包括其复制)到达目标所通过的链路的总数。一些示例可以使用动态实施例的组合,利用方向优先实施例之一,使得在不会增加消息(包括其复制)到达目标所通过的链路的总数的情况下,一个方向先于另一个方向。
可以在可组成轻量型处理器(CLP)(例如,TFlex微架构)中使用在此描述的分布式处理器架构(例如,单处理器架构)中的数据组播的各个示例。TFlex微架构是允许动态地将简单的片聚合在一起的 CLP。TFlex是32个片的完全分布式的片架构,具有多个分布式负载- 存储器组,利用多达512个负载和存储器来支持多达64个的发射宽度以及多达4096个指令的执行窗。
TFlex微架构使用Tera-op可靠的机智的自适应处理系统(TRIPS) 显式数据图形执行(EDGE)指令集架构(ISA),其可以将程序编码为块的序列,具有原子执行语义,标识指令获取、完备和完成的控制协议可以对多达128个指令的块进行操作。TFlex CLP微架构可以允许在不同的操作目标下(例如,性能,面积效率或者能量效率),针对每个线程动态地聚合任意数目的片(多达32个片),以找到最优配置。 TFlex微架构没有中央的微架构结构(不同于例如针对每个时钟的PLL 的结构)。可以基于地址来划分参与的片之间的结构。可以基于起始地址(PC)给每个块分配所有者片。可以基于指令ID在参与的片之间划分块内的指令,并且可以基于例如负载/存储器数据地址来划分负载 -存储器队列(LSQ)和数据缓存器。
这里提供并描述了一种在具有多个互连的处理核心的分布式处理器架构中进行数据组播的方法。该方法可以包括:识别被配置为从源接收第一消息的多个目标指令;针对每个目标,向第一消息提供目标路由指令,每个目标路由指令包括目标所共同共享的所选信息;以及,当所识别的两个目标相对于路由器位于彼此不同的方向上时,复制第一消息,并在不同方向上,经由例如路由器的不同输出链路,将复制的消息路由到每个所识别的目标。在该示例中,复制的消息包括来自源的后续要路由的第一消息及其拷贝。提供目标路由指令还可以包括:使用目标所共同共享的比特的子集的所选信息。目标所共同共享的所选信息可以被识别为左操作数、右操作数或判定操作数,并且可以包括对目标的多个多指令子集之一的选择。在一些示例中,多指令子集的数目可以是8。目标路由指令可以包括用于指定指令编码类型的比特。在一些示例中,提供目标路由指令还可以包括使用另一指令所创建的比特掩码。路由复制的消息可以包括:读取输入消息的首部,以确定目标路由指令。在一些其他示例中,处理路由指令还可以包括:当路由指令包括沿着不同方向从源到目标的路由(这些路由共享公共链路)时,配置路由指令,使得复制的消息可以集中通过公共链路一次。将复制的消息路由到每个目标可以包括:在路由器确定目标位于本地处理核心时,提取第一消息和/或复制的消息,并且将提取的消息发送到本地处理核心。
这里提供并描述了一种在分布式处理架构中进行数据组播的设备,该设备包括源,该源被配置为:识别被配置为从源接收第一消息的多个目标,并针对目标,向第一消息提供包括目标所共同共享的所选信息在内的目标路由指令。该设备还包括路由器,路由器被配置为读取目标路由指令,以确定每个目标的位置,并将该消息路由到每个目标,将该消息路由到每个目标包括:当两个目标相对于路由器位于彼此不同的方向上时,复制该消息,并且复制就足以确保每个目标仅接收一个消息。可以使用目标所共同共享的比特的子集来对信息进行编码。目标所共同共享的所选信息可以被识别为左操作数、右操作数或判定操作数,并且可以包括对目标的多个多指令子集之一的选择。路由器可以被配置为在路由器确定目标位于本地处理核心时,提取消息,并且将提取的消息发送到本地处理核心。
这里提供并描述了一种用于在包括分布式处理装置的分布式处理架构中进行数据组播的系统,该分布式处理装置具有经由片上网络而互连的多个处理核心和多个路由器。源与多个处理核心之一相关联,并且至少一个目标可以与多个处理核心中的一个或多个相关联。多个路由器中的每个路由器可以与多个处理核心中的对应一个相关联,并且可以被配置为从源接收消息,识别消息中的目标路由指令,其中,所识别的目标路由指令包括来自接收到的消息的目标所共同共享的所选信息,用以确定每个目标的位置,并将消息路由到目标,当两个目标相对于路由器位于彼此不同的方向上时复制该消息。例如,源可以被配置为使用目标所共同共享的比特的子集来对所选信息进行编码。在一些示例中,源可以被配置为识别左操作数、右操作数或判定操作数之一,并且可以包括对例如目标的多指令子集的选择。在一些示例中,路由器可以被配置为在路由器确定目标指令位于本地处理核心时,从网络提取消息,并且将提取的消息发送到本地处理核心(或者,将消息或其拷贝提供给本地处理核心)。
以上的详细描述通过使用方框图、流程图和/或示例,已经阐述了设备和/或处理的众多示例。在这种方框图、流程图和/或示例包含一个或多个功能和/或操作的情况下,本领域技术人员应理解,这种方框图、流程图或示例中的每一功能和/或操作可以通过各种硬件、软件、固件或实质上它们的任意组合来单独和/或共同实现。例如,本公开所述主题的若干部分可以通过专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、或其他集成格式来实现。然而,本领域技术人员应认识到,这里所公开的示例的一些方面在整体上或部分地可以等同地实现在集成电路中,实现为在一台或多台计算机上运行的一个或多个计算机程序(例如,实现为在一台或多台计算机系统上运行的一个或多个程序),实现为在一个或多个处理器上运行的一个或多个程序(例如,实现为在一个或多个微处理器上运行的一个或多个程序),实现为固件,或者实质上实现为上述方式的任意组合,并且本领域技术人员根据本公开,将具备设计电路和/或写入软件和/或固件代码的能力。例如,如果用户确定速度和精度是极为重要的,则用户可以选择主要硬件和/或固件的手段;如果灵活性是极为重要的,则用户可以选择主要软件的实施方式;或者,备选地,用户可以选择硬件、软件和/或固件的某些组合。
此外,本领域技术人员将认识到,本公开所述主题的机制能够作为多种形式的程序产品进行分发,并且无论实际用来执行分发的信号承载介质的具体类型如何,本公开所述主题的示例性示例均适用。信号承载介质的示例包括但不限于:可记录型介质,如柔性盘、硬盘驱动器、紧致盘(CD)、数字通用盘(DVD)、数字磁带、计算机存储器等;以及传输型介质,如数字和/或模拟通信介质(例如,光纤光缆、波导、有线通信链路、无线通信链路等)。
本领域技术人员应认识到,上文详细描述了设备和/或处理,此后使用工程实践来将所描述的设备和/或处理集成到数据处理系统中是本领域的常用手段。也即,这里所述的设备和/或处理的至少一部分可以通过合理数量的试验而被集成到数据处理系统中。本领域技术人员将认识到,典型的数据处理系统一般包括以下各项中的一项或多项:系统单元外壳;视频显示设备;存储器,如易失性和非易失性存储器;处理器,如微处理器和数字信号处理器;计算实体,如操作系统、驱动程序、图形用户接口、以及应用程序;一个或多个交互设备,如触摸板或屏幕;和/或控制系统,包括反馈环和控制电机(例如,用于感测位置和/或速度的反馈;用于移动和/或调节成分和/或数量的控制电机)。典型的数据处理系统可以利用任意合适的商用部件(如数据计算 /通信和/或网络计算/通信系统中常用的部件)予以实现。
本公开所述的主题有时说明不同部件包含在不同的其他部件内或者不同部件与不同的其他部件相连。应当理解,这样描述的架构只是示例,事实上可以实现许多能够实现相同功能的其他架构。在概念上,有效地“关联”用以实现相同功能的部件的任意设置,从而实现所需功能。因此,这里组合实现具体功能的任意两个部件可以被视为彼此“关联”从而实现所需功能,而无论架构或中间部件如何。同样,任意两个如此关联的部件也可以看作是彼此“可操作地连接”或“可操作地耦合”以实现所需功能,且能够如此关联的任意两个部件也可以被视为彼此“能可操作地耦合”以实现所需功能。能可操作地耦合的具体示例包括但不限于物理上可配对和/或物理上交互的部件,和/或无线交互和/或可无线交互的部件,和/或逻辑交互和/或可逻辑交互的部件。
至于本文中任何关于多数和/或单数术语的使用,本领域技术人员可以从多数形式转换为单数形式,和/或从单数形式转换为多数形式,以适合具体环境和应用。为清楚起见,在此明确声明单数形式/多数形式可互换。
本领域技术人员应当理解,一般而言,所使用的术语,特别是所附权利要求中(例如,在所附权利要求的主体部分中)使用的术语,一般地应理解为“开放”术语(例如,术语“包括”应解释为“包括但不限于”,术语“具有”应解释为“至少具有”等)。本领域技术人员还应理解,如果意在所引入的权利要求中标明具体数目,则这种意图将在该权利要求中明确指出,而在没有这种明确标明的情况下,则不存在这种意图。例如,为帮助理解,所附权利要求可能使用了引导短语“至少一个”和“一个或多个”来引入权利要求中的特征。然而,这种短语的使用不应被解释为暗示着由不定冠词“一”或“一个”引入的权利要求特征将包含该特征的任意特定权利要求限制为仅包含一个该特征的发明,即便是该权利要求既包括引导短语“一个或多个”或“至少一个”又包括不定冠词如“一”或“一个”(例如,“一”和/或“一个”通常应当被解释为意指“至少一个”或“一个或多个”);在使用定冠词来引入权利要求中的特征时,同样如此。另外,即使明确指出了所引入权利要求特征的具体数目,本领域技术人员应认识到,这种列举通常应解释为意指至少是所列数目(例如,不存在其他修饰语的短语“两个特征”通常意指至少两个该特征,或者两个或更多该特征)。另外,在使用类似于“A、B和C 等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释 (例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B 和C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。
尽管已经在此公开了多个方案和示例,但是本领域技术人员应当明白其他方案和示例。这里所公开的多个方案和示例是出于说明性的目的,而不是限制性的,本公开的真实范围和精神由所附权利要求表征。
Claims (23)
1.一种在具有多个互连的处理核心的分布式处理架构中进行数据组播的方法,包括:
识别被配置为从源接收源消息的数据的多个针对目标的指令,其中,所述多个针对目标的指令中的每一个被分配给所述多个互连的处理核心中相关联的处理核心;
利用对应于所述多个针对目标的指令的位置的路由指令对所述源消息进行编码,其中所述路由指令包括比特掩码字段,所述比特掩码字段指明所述多个针对目标的指令中哪个指令将接收数据操作数,所述路由指令包括所述多个针对目标的指令所共同共享的信息;以及
当所述多个针对目标的指令中的第一目标指令被分配给所述多个互连的处理核心中的第一相关联处理核心,相对于与所述源相关联的路由器,所述第一相关联处理核心位于与第二目标指令所分配到的所述多个互连的处理核心中的第二相关联处理核心不同的方向上时:
复制所述源消息以产生第一复制消息和第二复制消息;
在第一方向上,将所述第一复制消息路由到所述第一相关联处理核心;以及
在第二方向上,将所述第二复制消息路由到所述第二相关联处理核心。
2.根据权利要求1所述的方法,其中,利用路由指令对所述源消息进行编码还包括:使用所述多个针对目标的指令中的每一个所共同共享的比特的子集来对所述源消息中的信息进行编码。
3.根据权利要求1所述的方法,其中,所述多个针对目标的指令所共同共享的所述信息包括将所述数据标识为左操作数、右操作数或判定操作数之一的标识。
4.根据权利要求1所述的方法,其中,所述多个针对目标的指令被划分为多个多指令子集,其中所述多个针对目标的指令所共同共享的信息包括对所述多个多指令子集之一的选择的标识。
5.根据权利要求4所述的方法,其中,所述多个多指令子集的数目等于8。
6.根据权利要求1所述的方法,其中,所述路由指令包括指定比特掩码模式的比特。
7.根据权利要求1所述的方法,其中,利用所述路由指令来对所述源消息进行编码还包括:使用比特掩码。
8.根据权利要求1所述的方法,其中,所述路由指令被编码在所述第一复制消息的首部中,其中路由所述第一复制消息包括:读取所述第一复制消息的首部,以确定所述路由指令。
9.根据权利要求1所述的方法,其中,复制所述源消息以产生所述第一复制消息和所述第二复制消息包括:当路由指令包括从路由器至第三目标指令所分配到的所述多个互连的处理核心中的第三相关联处理核心,所述第三相关联处理核心与所述第一目标指令所分配到的所述第一相关联处理核心共享公共链路时,配置所述路由指令,使得所述第一复制消息仅通过所述公共链路一次。
10.根据权利要求1所述的方法,其中,所述路由器与所述第一相关联处理核心相关联,其中在第一方向上将所述第一复制消息路由到所述第一相关联处理核心包括:
提取所述第一复制消息;以及
响应于所述路由器确定所述第一目标指令被分配给所述第一相关联处理核心,将提取的消息发送到所述第一相关联处理核心。
11.一种在具有多个互连的处理核心的分布式处理器架构中进行数据组播的设备,包括:
源,该源被配置为:
识别被配置为从所述源接收源消息的数据的多个针对目标的指令,其中,所述多个针对目标的指令中的每一个被分配给所述多个互连的处理核心中相关联的处理核心;以及
利用对应于所述多个针对目标的指令的位置的路由指令对所述源消息进行编码,其中所述路由指令包括比特掩码字段,所述比特掩码字段指明所述多个针对目标的指令中哪个指令将接收数据操作数,所述路由指令包括所述多个针对目标的指令中的每一个所共同共享的信息;以及
路由器,该路由器被配置为:
读取所述路由指令,以确定所述多个针对目标的指令中的每一个所分配到的所述多个互连的处理核心中的相关联处理核心;以及
响应于确定所述多个针对目标的指令中的第一目标指令被分配给所述多个互连的处理核心中的第一相关联处理核心,相对于所述路由器,所述第一相关联处理核心位于与第二目标指令所分配到的所述多个互连的处理核心中的第二相关联处理核心不同的方向上:
复制该源消息以产生复制消息;
在第一方向上,将所述源消息路由到所述第一相关联处理核心;以及
在第二方向上,将所述复制消息路由到所述第二相关联处理核心。
12.根据权利要求11所述的设备,其中,所述源被配置为使用所述多个针对目标的指令中的每一个所共同共享的比特的子集来对所述源消息中的信息进行编码。
13.根据权利要求11所述的设备,其中,所述信息将所述数据识别为左操作数、右操作数或判定操作数之一。
14.根据权利要求11所述的设备,其中,所述多个针对目标的指令被划分为多个多指令子集,其中所述信息识别对所述多个多指令子集之一的选择。
15.根据权利要求11所述的设备,其中,所述路由器与第一相关联处理核心相关联,其中所述路由器被配置为:响应于确定被分配给所述第一相关联处理核心的第一目标指令位于与第二相关联处理核心不同的方向时,提取所述源消息,并且将提取的源消息发送到所述第一相关联处理核心。
16.一种在具有多个互连的处理核心的分布式处理架构中进行数据组播的系统,包括:
分布式处理装置,具有经由片上网络而互连的多个互连的处理核心,其中源与所述多个互连的处理核心之一相关联,并且所述多个针对目标的指令中的每一个被分配给所述多个互连的处理核心中相关联的处理核心;以及
多个路由器,其中所述多个路由器中的每一个与所述多个互连的处理核心中的对应一个相关联,其中所述多个路由器中的路由器被配置为:
从源接收源消息;
根据源消息来识别与所述多个针对目标的指令的位置的相对应的路由指令,其中所述路由指令包括比特掩码字段,所述比特掩码字段指明所述多个针对目标的指令中哪个指令将接收数据操作数,所述路由指令包括所述多个针对目标的指令所共同共享的信息;
响应于确定第一目标指令被分配给所述多个互连的处理核心中的第一相关联处理核心,相对于所述路由器,所述第一相关联处理核心位于与所述多个针对目标的指令中的第二目标指令所分配到的所述多个互连的处理核心中的第二相关联处理核心不同的方向上:复制该源消息;
在第一方向上,将所述源消息路由到所述第一相关联处理核心;以及
在第二方向上,将所述复制消息路由到所述第二相关联处理核心。
17.根据权利要求16所述的系统,其中,所述源被配置为:使用所述多个针对目标的指令中的每一个所共同共享的比特的子集来对所述信息进行编码。
18.根据权利要求16所述的系统,其中,所述信息指示左操作数、右操作数或判定操作数之一。
19.根据权利要求16所述的系统,其中,所述多个针对目标的指令被划分为多个多指令子集,其中所述信息包括对所述多指令子集之一的选择的标识。
20.根据权利要求16所述的系统,其中,所述路由器还被配置为:
从片上网络提取所述源消息,以产生提取的源消息;并且
响应于确定所述多个针对目标的指令中与所提取的源消息相关联的目标指令被分配到所述多个互连的处理核心中与所述路由器相关联的本地处理核心,将提取的源消息发送到所述本地处理核心。
21.根据权利要求1所述的方法,其中,所述源消息还包括被配置识别所述多个针对目标的指令所分配到的所述多个互连的处理核心中的处理核心的比特掩码字段。
22.根据权利要求1所述的方法,其中,复制所述源消息以产生第一复制消息和第二复制消息包括:
利用与所述多个针对目标的指令中相对于所述路由器位于第一方向的第一子集相对应的路由指令的第一子集来对所述第一复制消息进行编码;以及
利用与所述多个针对目标的指令中相对于所述路由器位于第二方向的第二子集相对应的路由指令的第二子集来对所述第二复制消息进行编码。
23.根据权利要求11所述的设备,其中,所述路由器包括多个输出链路,其中,对于在第一方向上路由所述源消息,所述路由器被配置为通过与所述第一方向相对应的多个输出链路中的第一输出链路来路由所述源消息,并且其中对于在第二方向路由所述复制消息,所述路由器被配置为通过与所述第二方向相对应的多个输出链路中的第二输出链路来路由所述复制消息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/562,940 US10698859B2 (en) | 2009-09-18 | 2009-09-18 | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
US12/562,940 | 2009-09-18 | ||
PCT/US2010/038372 WO2011034643A2 (en) | 2009-09-18 | 2010-06-11 | Data multicasting in a distributed processor system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103038760A CN103038760A (zh) | 2013-04-10 |
CN103038760B true CN103038760B (zh) | 2019-11-19 |
Family
ID=43757622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080035523.XA Active CN103038760B (zh) | 2009-09-18 | 2010-06-11 | 分布式处理器系统中的数据组播的方法、设备及系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10698859B2 (zh) |
JP (1) | JP2013501299A (zh) |
KR (1) | KR101364303B1 (zh) |
CN (1) | CN103038760B (zh) |
GB (1) | GB2485915B (zh) |
WO (1) | WO2011034643A2 (zh) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
US8799914B1 (en) * | 2009-09-21 | 2014-08-05 | Tilera Corporation | Managing shared resource in an operating system by distributing reference to object and setting protection levels |
WO2011159309A1 (en) | 2010-06-18 | 2011-12-22 | The Board Of Regents Of The University Of Texas System | Combined branch target and predicate prediction |
US9344358B2 (en) * | 2012-03-12 | 2016-05-17 | Utah State University | Aging-aware routing for NoCs |
WO2013177854A1 (zh) * | 2012-07-17 | 2013-12-05 | 中兴通讯股份有限公司 | 一种多核处理器的核间通信装置及方法 |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
CN103595627A (zh) * | 2013-11-28 | 2014-02-19 | 合肥工业大学 | 基于多播维序路由算法的NoC路由器及其路由算法 |
CN104506331B (zh) * | 2014-12-22 | 2017-09-29 | 迈普通信技术股份有限公司 | 一种组播报文传输方法及多核网络设备 |
US9946549B2 (en) | 2015-03-04 | 2018-04-17 | Qualcomm Incorporated | Register renaming in block-based instruction set architecture |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
WO2017002371A1 (en) * | 2015-07-02 | 2017-01-05 | Sharp Kabushiki Kaisha | Systems and methods for current service information |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10061584B2 (en) | 2015-09-19 | 2018-08-28 | Microsoft Technology Licensing, Llc | Store nullification in the target field |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10031756B2 (en) | 2015-09-19 | 2018-07-24 | Microsoft Technology Licensing, Llc | Multi-nullification |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US20170315812A1 (en) | 2016-04-28 | 2017-11-02 | Microsoft Technology Licensing, Llc | Parallel instruction scheduler for block isa processor |
US10496409B2 (en) * | 2016-11-22 | 2019-12-03 | The Arizona Board Of Regents | Method and system for managing control of instruction and process execution in a programmable computing system |
US11531552B2 (en) | 2017-02-06 | 2022-12-20 | Microsoft Technology Licensing, Llc | Executing multiple programs simultaneously on a processor core |
WO2018193352A1 (en) * | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Dataflow triggered tasks for accelerated deep learning |
US10797897B2 (en) * | 2017-09-27 | 2020-10-06 | International Business Machines Corporation | Multi-step remote packet broadcasting/multicasting mechanism for cognitive systems |
US10963379B2 (en) | 2018-01-30 | 2021-03-30 | Microsoft Technology Licensing, Llc | Coupling wide memory interface to wide write back paths |
US10824429B2 (en) | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
US11134030B2 (en) * | 2019-08-16 | 2021-09-28 | Intel Corporation | Device, system and method for coupling a network-on-chip with PHY circuitry |
GB2590658A (en) * | 2019-12-23 | 2021-07-07 | Graphcore Ltd | Communication in a computer having multiple processors |
US11500641B2 (en) * | 2020-10-07 | 2022-11-15 | Huawei Technologies Co., Ltd. | Devices, methods, and media for efficient data dependency management for in-order issue processors |
US20210409265A1 (en) * | 2021-01-28 | 2021-12-30 | Intel Corporation | In-network multicast operations |
US20230305848A1 (en) * | 2022-03-25 | 2023-09-28 | Micron Technology, Inc. | Schedule Instructions of a Program of Data Flows for Execution in Tiles of a Coarse Grained Reconfigurable Array |
US11815935B2 (en) | 2022-03-25 | 2023-11-14 | Micron Technology, Inc. | Programming a coarse grained reconfigurable array through description of data flow graphs |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625773B1 (en) * | 1999-06-09 | 2003-09-23 | International Business Machines Corporation | System for multicast communications in packet switched networks |
US6980209B1 (en) * | 2002-06-14 | 2005-12-27 | Nvidia Corporation | Method and system for scalable, dataflow-based, programmable processing of graphics data |
Family Cites Families (130)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4985832A (en) * | 1986-09-18 | 1991-01-15 | Digital Equipment Corporation | SIMD array processing system with routing networks having plurality of switching stages to transfer messages among processors |
US4873626A (en) * | 1986-12-17 | 1989-10-10 | Massachusetts Institute Of Technology | Parallel processing system with processor array having memory system included in system memory |
US5317734A (en) | 1989-08-29 | 1994-05-31 | North American Philips Corporation | Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies |
US5333320A (en) * | 1990-01-09 | 1994-07-26 | Hajime Seki | Electronic computer system and processor element used with the computer system |
JP3679813B2 (ja) * | 1991-07-22 | 2005-08-03 | 株式会社日立製作所 | 並列計算機 |
US5666506A (en) | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5669001A (en) | 1995-03-23 | 1997-09-16 | International Business Machines Corporation | Object code compatible representation of very long instruction word programs |
US6112019A (en) | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
US5729228A (en) | 1995-07-06 | 1998-03-17 | International Business Machines Corp. | Parallel compression and decompression using a cooperative dictionary |
US6295599B1 (en) | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
US5917505A (en) | 1995-12-19 | 1999-06-29 | Cirrus Logic, Inc. | Method and apparatus for prefetching a next instruction using display list processing in a graphics processor |
US5790822A (en) | 1996-03-21 | 1998-08-04 | Intel Corporation | Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor |
US5920724A (en) | 1996-03-28 | 1999-07-06 | Intel Corporation | Software pipelining a hyperblock loop |
US8583895B2 (en) | 1996-05-15 | 2013-11-12 | Nytell Software LLC | Compressed instruction format for use in a VLIW processor |
US5796997A (en) | 1996-05-15 | 1998-08-18 | Hewlett-Packard Company | Fast nullify system and method for transforming a nullify function into a select function |
US5905893A (en) | 1996-06-10 | 1999-05-18 | Lsi Logic Corporation | Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set |
JP3169856B2 (ja) | 1997-05-29 | 2001-05-28 | 甲府日本電気株式会社 | マルチノード情報処理システム |
US5845103A (en) | 1997-06-13 | 1998-12-01 | Wisconsin Alumni Research Foundation | Computer with dynamic instruction reuse |
US5930491A (en) | 1997-06-18 | 1999-07-27 | International Business Machines Corporation | Identification of related instructions resulting from external to internal translation by use of common ID field for each group |
US5943501A (en) | 1997-06-27 | 1999-08-24 | Wisconsin Alumni Research Foundation | Multiple processor, distributed memory computer with out-of-order processing |
US5930158A (en) | 1997-07-02 | 1999-07-27 | Creative Technology, Ltd | Processor with instruction set for audio effects |
GB2331894B (en) * | 1997-11-27 | 2000-03-29 | Connell Anne O | Analysis of data streams |
US6182210B1 (en) | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6178498B1 (en) | 1997-12-18 | 2001-01-23 | Idea Corporation | Storing predicted branch target address in different storage according to importance hint in branch prediction instruction |
US6314493B1 (en) | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
TW440793B (en) | 1998-02-25 | 2001-06-16 | Koninkl Philips Electronics Nv | A method for structuring a multi-instruction computer program from basic blocks that compose from internal instructions and external jumps in an internal directed acyclic graph, and a processor loaded with such program |
US6164841A (en) | 1998-05-04 | 2000-12-26 | Hewlett-Packard Company | Method, apparatus, and product for dynamic software code translation system |
US6988183B1 (en) | 1998-06-26 | 2006-01-17 | Derek Chi-Lan Wong | Methods for increasing instruction-level parallelism in microprocessors and digital system |
US6353883B1 (en) | 1998-08-04 | 2002-03-05 | Intel Corporation | Method and apparatus for performing predicate prediction |
US6240510B1 (en) | 1998-08-06 | 2001-05-29 | Intel Corporation | System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions |
ATE557342T1 (de) | 1998-08-24 | 2012-05-15 | Microunity Systems Eng | Prozessor und verfahren zur matrixmultiplikation mit einem breiten operand |
US6367004B1 (en) | 1998-12-31 | 2002-04-02 | Intel Corporation | Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared |
US7430670B1 (en) | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6513109B1 (en) | 1999-08-31 | 2003-01-28 | International Business Machines Corporation | Method and apparatus for implementing execution predicates in a computer processing system |
US6446197B1 (en) | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
US6615340B1 (en) * | 2000-03-22 | 2003-09-02 | Wilmot, Ii Richard Byron | Extended operand management indicator structure and method |
KR100337149B1 (ko) | 2000-07-05 | 2002-05-18 | 권 기 홍 | 프로그램 테스트 및 디버깅이 용이한 중앙처리장치 |
US6918032B1 (en) | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
US6662294B1 (en) | 2000-09-28 | 2003-12-09 | International Business Machines Corporation | Converting short branches to predicated instructions |
US20030023959A1 (en) | 2001-02-07 | 2003-01-30 | Park Joseph C.H. | General and efficient method for transforming predicated execution to static speculation |
US6592449B2 (en) | 2001-02-24 | 2003-07-15 | International Business Machines Corporation | Smart fan modules and system |
EP1374468A4 (en) * | 2001-02-24 | 2008-12-10 | Ibm | CLASS NETWORK ROUTING |
US8429296B2 (en) | 2001-03-06 | 2013-04-23 | Pluris, Inc. | Method and apparatus for distributing routing instructions over multiple interfaces of a data router |
US6891828B2 (en) | 2001-03-12 | 2005-05-10 | Network Excellence For Enterprises Corp. | Dual-loop bus-based network switch using distance-value or bit-mask |
US7032217B2 (en) | 2001-03-26 | 2006-04-18 | Intel Corporation | Method and system for collaborative profiling for continuous detection of profile phase transitions |
WO2003017562A1 (en) | 2001-08-15 | 2003-02-27 | Precache Inc. | Packet routing via payload inspection and subscription processing in a publish-subscribe network |
US7095343B2 (en) | 2001-10-09 | 2006-08-22 | Trustees Of Princeton University | code compression algorithms and architectures for embedded systems |
AU2002363142A1 (en) | 2001-10-31 | 2003-05-12 | Doug Burger | A scalable processing architecture |
US20030088694A1 (en) | 2001-11-02 | 2003-05-08 | Internet Machines Corporation | Multicasting method and switch |
US7114059B2 (en) | 2001-11-05 | 2006-09-26 | Intel Corporation | System and method to bypass execution of instructions involving unreliable data during speculative execution |
US6892292B2 (en) | 2002-01-09 | 2005-05-10 | Nec Corporation | Apparatus for one-cycle decompression of compressed data and methods of operation thereof |
US7085913B2 (en) * | 2002-02-13 | 2006-08-01 | International Business Machines Corporation | Hub/router for communication between cores using cartesian coordinates |
JP2005522773A (ja) | 2002-04-08 | 2005-07-28 | ユニバーシティー・オブ・テキサス・システム | 非均等型キャッシュ装置、システム及び方法 |
US7320037B1 (en) | 2002-05-10 | 2008-01-15 | Altera Corporation | Method and apparatus for packet segmentation, enqueuing and queue servicing for multiple network processor architecture |
WO2004001584A2 (en) | 2002-06-24 | 2003-12-31 | Ante Vista Gmbh | A method for executing structured symbolic machine code on a microprocessor |
JP3804941B2 (ja) | 2002-06-28 | 2006-08-02 | 富士通株式会社 | 命令フェッチ制御装置 |
US7672275B2 (en) | 2002-07-08 | 2010-03-02 | Precache, Inc. | Caching with selective multicasting in a publish-subscribe network |
JP4196614B2 (ja) | 2002-08-22 | 2008-12-17 | パナソニック株式会社 | 命令スケジューリング方法、命令スケジューリング装置、及びプログラム |
US7299458B2 (en) | 2002-10-31 | 2007-11-20 | Src Computers, Inc. | System and method for converting control flow graph representations to control-dataflow graph representations |
US20040193849A1 (en) | 2003-03-25 | 2004-09-30 | Dundas James D. | Predicated load miss handling |
US7308682B2 (en) | 2003-04-25 | 2007-12-11 | Intel Corporation | Method and apparatus for recovering data values in dynamic runtime systems |
JP4818920B2 (ja) * | 2003-09-09 | 2011-11-16 | シリコン ハイブ ビー・ヴィー | 複数のプログラム可能なプロセッサを有する集積データ処理回路 |
GB2409303B (en) * | 2003-12-18 | 2006-10-18 | Advanced Risc Mach Ltd | Inter-processor communication mechanism |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
WO2005093562A1 (ja) | 2004-03-29 | 2005-10-06 | Kyoto University | データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体 |
US7424482B2 (en) | 2004-04-26 | 2008-09-09 | Storwize Inc. | Method and system for compression of data for block mode access storage |
JP4296996B2 (ja) | 2004-06-15 | 2009-07-15 | 富士通株式会社 | マルチコアプロセサ制御方式 |
US7302543B2 (en) | 2004-06-16 | 2007-11-27 | Nec Laboratories America, Inc. | Compressed memory architecture for embedded systems |
US7624386B2 (en) | 2004-12-16 | 2009-11-24 | Intel Corporation | Fast tree-based generation of a dependence graph |
US7552318B2 (en) | 2004-12-17 | 2009-06-23 | International Business Machines Corporation | Branch lookahead prefetch for microprocessors |
US7380038B2 (en) | 2005-02-04 | 2008-05-27 | Microsoft Corporation | Priority registers for biasing access to shared resources |
US7853777B2 (en) | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
EP1891517A4 (en) | 2005-05-24 | 2008-08-13 | Texas Instruments Inc | OPERAND WITH DISPLAY FOR PROCESSING MICROSE RATES |
US8312452B2 (en) | 2005-06-30 | 2012-11-13 | Intel Corporation | Method and apparatus for a guest to access a privileged register |
US9870267B2 (en) | 2006-03-22 | 2018-01-16 | Intel Corporation | Virtual vector processing |
TW200739419A (en) | 2006-04-07 | 2007-10-16 | Univ Feng Chia | Prediction mechanism of a program backward jump instruction |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US7962725B2 (en) | 2006-05-04 | 2011-06-14 | Qualcomm Incorporated | Pre-decoding variable length instructions |
US20070288733A1 (en) | 2006-06-08 | 2007-12-13 | Luick David A | Early Conditional Branch Resolution |
US7487340B2 (en) | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
US7809926B2 (en) | 2006-11-03 | 2010-10-05 | Cornell Research Foundation, Inc. | Systems and methods for reconfiguring on-chip multiprocessors |
EP2122461A4 (en) | 2006-11-14 | 2010-03-24 | Soft Machines Inc | DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES |
US8250556B1 (en) | 2007-02-07 | 2012-08-21 | Tilera Corporation | Distributing parallelism for parallel processing architectures |
US8180997B2 (en) | 2007-07-05 | 2012-05-15 | Board Of Regents, University Of Texas System | Dynamically composing processor cores to form logical processors |
US8447911B2 (en) | 2007-07-05 | 2013-05-21 | Board Of Regents, University Of Texas System | Unordered load/store queue |
US7818542B2 (en) | 2007-07-10 | 2010-10-19 | Globalfoundries Inc. | Method and apparatus for length decoding variable length instructions |
JP2009026106A (ja) | 2007-07-20 | 2009-02-05 | Oki Electric Ind Co Ltd | 命令コード圧縮方法と命令フェッチ回路 |
JP5043560B2 (ja) | 2007-08-24 | 2012-10-10 | パナソニック株式会社 | プログラム実行制御装置 |
US9384003B2 (en) | 2007-10-23 | 2016-07-05 | Texas Instruments Incorporated | Determining whether a branch instruction is predicted based on a capture range of a second instruction |
US7870371B2 (en) | 2007-12-17 | 2011-01-11 | Microsoft Corporation | Target-frequency based indirect jump prediction for high-performance processors |
US7818551B2 (en) | 2007-12-31 | 2010-10-19 | Microsoft Corporation | Feedback mechanism for dynamic predication of indirect jumps |
US8068491B2 (en) | 2008-02-13 | 2011-11-29 | Telcordia Technologies, Inc. | Methods for reliable multicasting in local peer group (LPG) based vehicle ad hoc networks |
US8321850B2 (en) | 2008-06-06 | 2012-11-27 | Vmware, Inc. | Sharing and persisting code caches |
US8127119B2 (en) | 2008-12-05 | 2012-02-28 | The Board Of Regents Of The University Of Texas System | Control-flow prediction using multiple independent predictors |
US20100146209A1 (en) | 2008-12-05 | 2010-06-10 | Intellectual Ventures Management, Llc | Method and apparatus for combining independent data caches |
US20100191943A1 (en) | 2009-01-26 | 2010-07-29 | Agere Systems Inc. | Coordination between a branch-target-buffer circuit and an instruction cache |
US20100325395A1 (en) | 2009-06-19 | 2010-12-23 | Doug Burger | Dependence prediction in a memory system |
US8130754B2 (en) * | 2009-07-10 | 2012-03-06 | Hewlett-Packard Development Company, L.P. | On-chip and chip-to-chip routing using a processor element/router combination |
US8364902B2 (en) | 2009-08-07 | 2013-01-29 | Via Technologies, Inc. | Microprocessor with repeat prefetch indirect instruction |
US8433885B2 (en) | 2009-09-09 | 2013-04-30 | Board Of Regents Of The University Of Texas System | Method, system and computer-accessible medium for providing a distributed predicate prediction |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
US20110078424A1 (en) | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Optimizing program code using branch elimination |
US8464002B2 (en) | 2009-10-14 | 2013-06-11 | Board Of Regents Of The University Of Texas System | Burst-based cache dead block prediction |
WO2011067896A1 (en) | 2009-12-02 | 2011-06-09 | Mush-A Co., Ltd. | Data processing apparatus, data processing system, packet, recording medium, storage device, and data processing method |
JP5057256B2 (ja) | 2009-12-02 | 2012-10-24 | 株式会社Mush−A | データ処理装置、データ処理システムおよびデータ処理方法 |
US9043769B2 (en) | 2009-12-28 | 2015-05-26 | Hyperion Core Inc. | Optimization of loops and data flow sections in multi-core processor environment |
GB201001621D0 (en) | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
KR101603751B1 (ko) | 2010-02-18 | 2016-03-16 | 삼성전자주식회사 | 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법 |
US8201024B2 (en) | 2010-05-17 | 2012-06-12 | Microsoft Corporation | Managing memory faults |
WO2011159309A1 (en) | 2010-06-18 | 2011-12-22 | The Board Of Regents Of The University Of Texas System | Combined branch target and predicate prediction |
US20120158647A1 (en) | 2010-12-20 | 2012-06-21 | Vmware, Inc. | Block Compression in File System |
EP2689327B1 (en) | 2011-03-25 | 2021-07-28 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US9304776B2 (en) | 2012-01-31 | 2016-04-05 | Oracle International Corporation | System and method for mitigating the impact of branch misprediction when exiting spin loops |
US9513922B2 (en) | 2012-04-20 | 2016-12-06 | Freescale Semiconductor, Inc. | Computer system and a method for generating an optimized program code |
CN103513957B (zh) | 2012-06-27 | 2017-07-11 | 上海芯豪微电子有限公司 | 高性能缓存方法 |
US9424191B2 (en) | 2012-06-29 | 2016-08-23 | Intel Corporation | Scalable coherence for multi-core processors |
US10073779B2 (en) | 2012-12-28 | 2018-09-11 | Intel Corporation | Processors having virtually clustered cores and cache slices |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
GB2515076B (en) | 2013-06-13 | 2020-07-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling retrieval of instructions from an instruction cache |
US9619750B2 (en) | 2013-06-29 | 2017-04-11 | Intel Corporation | Method and apparatus for store dependence prediction |
US9239735B2 (en) | 2013-07-17 | 2016-01-19 | Texas Instruments Incorporated | Compiler-control method for load speculation in a statically scheduled microprocessor |
US9547496B2 (en) | 2013-11-07 | 2017-01-17 | Microsoft Technology Licensing, Llc | Energy efficient multi-modal instruction issue |
JP6488711B2 (ja) | 2015-01-14 | 2019-03-27 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US10606651B2 (en) | 2015-04-17 | 2020-03-31 | Microsoft Technology Licensing, Llc | Free form expression accelerator with thread length-based thread assignment to clustered soft processor cores that share a functional circuit |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US20170083320A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Predicated read instructions |
US20170083318A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Configuring modes of processor operation |
US20170083319A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Generation and use of block branch metadata |
US20170083341A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Segmented instruction block |
-
2009
- 2009-09-18 US US12/562,940 patent/US10698859B2/en active Active
-
2010
- 2010-06-11 GB GB1121576.1A patent/GB2485915B/en active Active
- 2010-06-11 JP JP2012523621A patent/JP2013501299A/ja active Pending
- 2010-06-11 KR KR1020127005877A patent/KR101364303B1/ko active IP Right Grant
- 2010-06-11 WO PCT/US2010/038372 patent/WO2011034643A2/en active Application Filing
- 2010-06-11 CN CN201080035523.XA patent/CN103038760B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625773B1 (en) * | 1999-06-09 | 2003-09-23 | International Business Machines Corporation | System for multicast communications in packet switched networks |
US6980209B1 (en) * | 2002-06-14 | 2005-12-27 | Nvidia Corporation | Method and system for scalable, dataflow-based, programmable processing of graphics data |
Also Published As
Publication number | Publication date |
---|---|
WO2011034643A3 (en) | 2014-03-20 |
KR20120055611A (ko) | 2012-05-31 |
GB201121576D0 (en) | 2012-01-25 |
CN103038760A (zh) | 2013-04-10 |
JP2013501299A (ja) | 2013-01-10 |
GB2485915B (en) | 2017-06-07 |
US10698859B2 (en) | 2020-06-30 |
US20110072239A1 (en) | 2011-03-24 |
WO2011034643A2 (en) | 2011-03-24 |
KR101364303B1 (ko) | 2014-02-18 |
GB2485915A (en) | 2012-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103038760B (zh) | 分布式处理器系统中的数据组播的方法、设备及系统 | |
JP7451587B2 (ja) | 二次および/または三次処理を実行するためのバイオインフォマティクスシステム、装置、および方法 | |
CN110018850A (zh) | 用于可配置空间加速器中的多播的设备、方法和系统 | |
Grama | An Introduction to Parallel Computing: Design and Analysis of Algorithms, 2/e | |
CN106716361B (zh) | 用于运行时例程冗余跟踪的编译器高速缓存 | |
CN109992306A (zh) | 用于可配置空间加速器存储器一致性的装置、方法和系统 | |
CN103180826B (zh) | 在代表计算机程序的数据流图中管理数据集对象 | |
CN109597646A (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
CN109597458A (zh) | 用于空间阵列中的可配置时钟门控的处理器和方法 | |
CN110121747A (zh) | 用于执行二级和/或三级处理的生物信息学系统、设备和方法 | |
CN108633309A (zh) | 协同程序的编译器优化 | |
JP2006509306A (ja) | 関係アプリケーションへのデータ処理システム相互参照用セルエンジン | |
CN105378651A (zh) | 具有可编程优化的存储器-网络处理器 | |
CN108614783A (zh) | 一致性协议表 | |
CN101799760A (zh) | 生成任意目标架构的并行单指令多数据代码的系统和方法 | |
US20190130270A1 (en) | Tensor manipulation within a reconfigurable fabric using pointers | |
Pllana et al. | On customizing the UML for modeling performance-oriented applications | |
WO2019090032A1 (en) | Memory network processor | |
CN102222017A (zh) | 通过不可见接口实现不符合abi特征的方法和系统 | |
TW201913405A (zh) | 用於元組圖形程式之子圖內最佳化之方法 | |
Kim et al. | A parallel and distributed meta-heuristic framework based on partially ordered knowledge sharing | |
TW201913427A (zh) | 用於元組圖形程式之類型推論之系統及跨越網路執行元組圖形程式之方法 | |
Ramakrishnan et al. | Efficient techniques for nested and disjoint barrier synchronization | |
González-Domínguez | Fast and accurate multiple sequence alignment with msaprobs-mpi | |
Wolf et al. | High-level modeling and synthesis of communicating processes using VHDL |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |