CN104823164A - 具有同步指令的处理系统 - Google Patents
具有同步指令的处理系统 Download PDFInfo
- Publication number
- CN104823164A CN104823164A CN201380063373.7A CN201380063373A CN104823164A CN 104823164 A CN104823164 A CN 104823164A CN 201380063373 A CN201380063373 A CN 201380063373A CN 104823164 A CN104823164 A CN 104823164A
- Authority
- CN
- China
- Prior art keywords
- processor
- controller
- described multiple
- subset
- synchronic command
- 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
Links
Classifications
-
- 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
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
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)
- Multi Processors (AREA)
Abstract
公开了可包括多个处理器和控制器的多处理器阵列的实施例。每个处理器可包括多个处理器端口和sync适配器。每个sync适配器可包括多个适配器端口。每个控制器可包括多个控制器端口和配置端口。所述多个处理器和所述多个控制器可被按照散布布置耦合在一起,并且控制器可不同于处理器。每个处理器可被配置为通过它的适配器端口将同步信号发送给一个或多个控制器,并且在等待来自所述一个或多个控制器的响应的同时暂停程序指令的执行。
Description
技术领域
本公开涉及计算机系统和数字信号处理器(DSP),并且更具体地讲,涉及多处理器系统。
背景技术
本申请涉及电子系统(尤其是数字电子系统,诸如计算机、数字信号处理器(DSP))和嵌入在更大系统中的这些系统。更具体地讲,该构思涉及数字电子系统内的信号网络,并且尤其涉及多处理器阵列(MPA)内的同步信号网络。MPA包括一组处理元件(PE)、支持存储器(SM)、以及支持PE和存储器之间的高带宽数据通信的主互连网络(PIN)。
PE具有用于缓冲输入数据和输出数据的寄存器、指令处理单元(IPU)和用于对数据执行算术和逻辑功能的逻辑/电路以及用于与该系统的其它部分通信的许多开关和端口。IPU从存储器获取指令,对指令进行解码,并且设置用于将数据移入处理器和从处理器移出数据以及用于执行算术和逻辑功能的合适的控制信号。
以分级体系组织用于计算机和DSP的存储器,快速存储器位于顶部,并且较慢但更高容量的存储器位于沿着分级体系向下的每个梯级。在MPA中,位于分级体系的顶部的支持存储器布置为与每个PE相邻。每个支持存储器可专用于仅保存指令或仅保存数据。用于特定PE的支持存储器可专用于该PE或与其它PE共享。
MPA首先被配置为电路板上的数字集成电路(IC)的阵列,每个IC包含一个处理器,并且该电路板提供用于将处理器互连的数据通信链路。基于具有更细的加工规格的互补金属氧化物硅(CMOS)晶体管电路的超大规模集成(VLSI)技术的不断进步已导致每个硅IC芯片的逻辑和存储器电路的密度的极大增加。今天,在单个IC芯片上,制作具有一百个或更多处理器及其支持存储器和互连网络的MPA。这些MPA芯片可在电路板上进一步互连以制作更大的系统。
仅仅因为每个MPA芯片的大量的PE,适合MPA的PE可具有比通用处理器(GPP)高的能效,并且额外的能量变为额外的余热并且它的去除增加了芯片封装和操作成本。
发明内容
公开了多处理器阵列的各种实施例。广泛地讲,设想一种电路和一种方法,其中多个处理器和多个控制器被以散布方式耦合在一起。每个处理器包括多个处理器端口和一个sync(同步)适配器,sync适配器包括多个适配器端口。每个适配器端口被耦合到多个控制器之一的控制器端口,每个控制器包括多个控制器端口和一个配置端口。每个处理器被配置为通过一个或多个适配器端口将同步信号发送给相应的一个或多个控制器,并且还被配置为根据从所述一个或多个控制器接收到响应来暂停程序指令的执行。
在另一实施例中,每个控制器可包括配置端口。配置端口可被配置为接收一个或多个配置数据位。
在另一非限制性实施例中,每个控制器还可被配置为根据所述一个或多个配置位发送响应。
附图说明
图1是表示计算系统的实施例的方框图。
图2A是表示计算系统的软件和硬件分级体系的实施例的方框图。
图2B是表示测试和开发系统的方框图。
图3是表示多处理器集成电路的实施例的方框图。
图4是表示多处理器阵列的实施例的方框图。
图5是表示同步控制器的实施例的方框图。
图6是表示同步网络的另一实施例的方框图。
图7是表示同步适配器的实施例的方框图。
图8是表示同步控制器的实施例的方框图。
图9是表示同步链条的方框图。
图10是描述用于操作多处理器阵列的方法的实施例的流程图。
图11是描述用于操作多处理器阵列的另一方法的实施例的流程图。
图12是表示多处理器阵列的两个处理元件之间的同步的方框图。
图13是描述用于同步多处理器系统的处理元件的方法的实施例的流程图。
图14是表示多处理器系统的三个处理元件之间的同步的方框图。
图15是描述用于操作多处理器系统中的同步控制器的方法的实施例的流程图。
图16是描述用于同步多处理器系统中的两组处理器的方法的实施例的流程图。
图17是描述用于同步多处理器系统中的两组处理器的方法的实施例的流程图。
图18是描述用于同步多处理器系统中的两组处理器的方法的实施例的流程图。
图19是描述用于设计用于多处理器系统的软件的方法的实施例的流程图。
尽管本公开容易具有各种变型和替代形式,但在附图中作为例子示出其特定实施例并且将在这里详细地描述其特定实施例。然而,应该理解,附图及其详细描述并不意图将本公开限制于示出的特定形式,而是相反地,意图包括落在如所附权利要求所定义的本公开的精神和范围内的所有变型、等同物和替代物。这里使用的标题仅用于组织目的,而非意图用于限制该描述的范围。如在整个本申请中所使用,在容许意义(即,意味着具有可能性)而非强制性意义(即,意味着必须)下使用词语“可”。类似地,词语“包括”、“包含”和“具有”表示包括但不限于。
各种单元、电路或其它部件可被描述为“被配置为”执行一个任务或多个任务。在这种语境中,“被配置为”是结构的宽广叙述,通常表示“具有”在操作期间执行所述一个任务或多个任务的“电路”。如此,即使当单元/电路/部件当前未启动时,单元/电路/部件也能够被配置为执行任务。通常,形成与“被配置为”对应的结构的电路可包括硬件电路。类似地,为了描述中的方便,各种单元/电路/部件可被描述为执行一个任务或多个任务。这种描述应该被解释为包括短语“被配置为”。叙述被配置为执行一个或多个任务的单元/电路/部件明确地意图不针对该单元/电路/部件援引35U.S.C.§112第六款解释。更一般地讲,叙述任何元件明确地意图不针对该元件援引35U.S.C.§112第六款解释,除非具体地叙述语言“用于...的装置”或“用于...的步骤”。
具体实施方式
通过引用包括
发明人是Michael B.Doerr、William H.Hallidy、David A.Gibson和Craig M.Chase的标题为“Processing System WithInterspersed Stall Propagating Processors And CommunicationElements”的第7415594号美国专利的全部内容通过引用包含于此,就好像在这里充分而完整地阐述该专利。
发明人是Michael B.Doerr、Carl S.Dobbs、Michael B.Solka、Michael R Trocino和David A.Gibson的于2011年10月14日提交的标题为“Disabling Communication in a Multiprocessor System”的序列号为13/274138的美国专利申请的全部内容通过引用包含于此,就好像在这里充分而完整地阐述该专利申请。
术语
硬件配置程序-包括源文本的程序,该程序能够被编译为二进制映象,二进制映象能够被用于对硬件(诸如,例如集成电路)编程或配置硬件。
计算机系统-各种类型的计算或处理系统中的任何计算或处理系统,包括个人计算机系统(PC)、大型计算机系统、工作站、网络设备、互联网设备、个人数字助手(PDA)、网格计算系统或其它装置或装置的组合。通常,术语“计算机系统”能够被宽广地定义为包括具有执行来自存储器介质的指令的至少一个处理器的任何装置(或装置的组合)。
自动地–表示由计算机系统(例如,由计算机系统执行的软件)或装置(例如,电路、可编程硬件元件、ASIC等)执行的动作或操作,而不用直接指定或执行该动作或操作的用户输入。因此,术语“自动地”与由用户手工地执行或指定操作(其中用户提供输入以直接执行操作)形成对比。可通过由用户提供的输入来开始自动过程,但“自动地”执行的随后的动作不由用户指定,即不被“手工地”执行(其中用户指定执行每个动作)。例如,虽然计算机系统需要响应于用户动作更新表格,但通过选择每个字段并且提供指定信息的输入(例如,通过输入信息、选择复选框、单选选择等)来填写电子表格的用户是手工地填写表格。表格可由计算机系统自动地填写,其中计算机系统(例如,在计算机系统上执行的软件)分析表格的字段并且填写表格,而不用指定字段的答案的任何用户输入。如以上所指示,用户可调用表格的自动填写,但不参与表格的实际填写(例如,用户不手工地指定字段的答案,而是它们被自动地完成)。本说明书提供响应于用户已采取的动作而自动地执行操作的各种例子。
概述
能够并行处理的计算机系统可包括多个数据处理元件(PE)、支持存储器(SM)单元以及用于在个体PE、SM和系统I/O端口之间和之中移动数据的高带宽互连网络(IN)。为了高带宽和低平均传送时间(延时),这种系统中的主IN(或PIN)可被优化。然而,可不为有保障的传送(消息可能阻挡其它消息,导致“繁忙”信号)优化PIN。作为结果,PIN可能不适合跨越一组PE的任务的同步。在一些实施例中,为了同步的目的,另外的网络可被添加到该计算机系统。这种网络可允许消息的有保障的传送,然而,该网络可能增加计算机系统的复杂性、功率耗散或物理尺寸。附图中示出并且在以下描述的实施例可提供这样的技术:同步计算机系统内的并行处理元件,同时使对计算机系统的复杂性、功率耗散和物理尺寸的影响最小化。
并行处理
以前的微处理器和数字信号处理器(DSP)可每次执行一个任务,这通常被称为遵循执行的线程。从处理器的IPU单元观察,执行的线程是指令流。在一些实施例中,响应于指令流产生单个结果流。这种执行模式通常被称为单指令单数据(SISD)。在其它实施例中,可采用多个算术和逻辑单元(ALU),从而允许多个结果流。这种执行模式通常被称为单指令多数据(SIMD)。较大的微处理器和DSP可具有SIMD能力,并且在各种实施例中,软件可被用于利用这种并行性以提高性能。例如,使用SIMD可加速视频压缩和代码转换、计算机视觉、语音识别和加密。
SIMD指令可允许指令的高效处理。然而,效率可能取决于数据被提供给ALU的速率。通常,来自一个SIMD指令的数据结果的数量在从2到8的范围中变化,并且当每个SIMD的数据结果的数量增加时,每个数据项中所包括的位的数量通常减小。增加每个SIMD指令的数据项的数量的努力可能导致各种问题,包括但不限于:从公共存储器将多个数据项同时提供给ALU、将来自ALU的结果同时存储回存储器中、在操作期间的额外的功率耗散和当额外的ALU空闲但已加电并且准备好时的另外的泄漏功率耗散。
最近的微处理器和DSP能够通过多个IPU以及ALU来同时执行多个线程。对于每个微处理器/DSP设计类型,复制什么以及是否使其特殊化广泛地变化。因为每个线程可具有独立指令流,所以这种并行操作模式被称为多指令多数据(MIMD)。每个处理器的线程的典型数量是2-4,但已设计出能够实现16个线程或更多线程的处理器。除了用于供应对应ALU的多个数据流的问题之外,增加每个处理器的线程的数量的努力还遇到这些问题:从公共存储器使同时的指令流到达多个IPU和额外的寄存器的额外的泄漏功率耗散。
多处理
多处理器系统允许程序员将大任务划分成能够并行地执行的多个较小任务。并行执行能够被用于缩短完成大任务的时间或者减少功耗(通过降低处理器的时钟频率)。如果时钟频率降低,则电源电压也可减小以节省能量。
多处理器系统可被用于各种计算机系统之一。计算系统的实施例被示出在图1中。在示出的实施例中,计算系统100可以是桌上型计算机、膝上型计算机、平板计算机、智能电话或任何其它合适的系统。在各种实施例中,计算系统100可包括一个或多个嵌入式系统(诸如,例如嵌入式系统110)。在某个实施例中,嵌入式系统110可包括一个或多个集成电路(IC)(诸如,例如多处理器IC 120)。虽然在嵌入式系统110中仅描述一个IC,但在其它实施例中,可采用不同数量的IC,每个IC可被配置为执行不同功能。
参照图2A,示出描述软件和硬件分级体系的实施例的方框图。在该分级体系的底部,是计算系统240。在一些实施例中,计算系统240可对应于计算系统100。在各种实施例中,计算系统240可以是桌面工作站,而在其它实施例中,计算系统240可以是膝上型计算机或其它移动装置,并且可包括诸如显示器、硬盘驱动器、网络接口装置的部件和任何其它合适的部件。
在该分级体系的下一级别,是操作系统250。在各种实施例中,操作系统250可以是各种类型的操作系统之一(诸如,例如Windows、Linux、Unix等)。在各种实施例中,操作系统(诸如,操作系统250)可提供应用或用户程序访问计算系统240的硬件所需的命令和程序指令。
如上所述,操作系统250可为其它程序提供对硬件资源的访问。在示出的实施例中,这种程序包括设计工具套件210以及项目数据库220A和220B。在一些实施例中,设计工具套件210可被配置为允许用户配置计算系统240内的硬件资源。如以下将更详细描述,这种配置可包括将控制位存储在多处理器内的一个或多个控制寄存器中。在各种实施例中,控制位可控制多处理器的处理元件之间的信息的路由。在一些实施例中,控制位还可控制多处理器的处理元件之间的同步。
测试和开发系统的实施例被示出在图2B中。在示出的实施例中,多处理器IC 270被包括在开发系统250中。开发系统250被耦合到测试台260。在各种实施例中,测试台260可包括测试装备、膝上型计算机和任何其它合适的装备以帮助多处理器IC 270的测试和开发。
在操作期间,开发系统250可被用于确定如何配置多处理器270以与给定软件应用一起使用。在一些实施例中,该配置可包括确定如何同步多处理器270内的一个或多个处理元件,以便允许个体处理元件在并行处理期间交换数据。
需要注意的是,图2B中示出的实施例仅是例子。在其它实施例中,可采用不同数量的多处理器IC和不同测试装备。
多处理器IC的实施例被示出在图3中。在示出的实施例中,多处理器IC 300包括处理器阵列310。在其它实施例中,多处理器IC300还可包括其它电路和功能块(未示出)。例如,多处理器IC 300可包括模拟/混合信号块,该模拟/混合信号块可包括振荡器、锁相环(PLL)、内部电源产生和调节电路等。
在操作期间,存储在存储器中或存储在硬盘驱动器或其它合适的介质上的程序指令可由处理器阵列310执行。在一些实施例中,处理器阵列310内的个体处理元件(PE)可被配置为执行某些程序指令。如以下更详细所述,在各种实施例中,可通过使用同步在PE之间协调程序指令的执行。
参照图4,示出示例性多处理器阵列(MPA)。在一些实施例中,MPA 400可对应于如图3中所示的多处理器IC 300的处理器阵列310。在示出的实施例中,MPA 400包括多个处理元件(PE)和多个支持存储器(SM)和互连网络(IN)。IN包括切换节点和链路。切换节点(还被称为路由器)可被与链路一起使用以形成PE之间以及PE和MPA I/O端口之间的通信路径。然而,在每个PE,可在SM中缓冲传送的任何信息。在示出的实施例中,SM被与通信路径路由器组合,称为数据存储器路由器(DMR)。如这里所使用,PE还可被称为PE节点,并且DMR还可被称为DMR节点。DMR还在这里被称为“可配置通信元件或CCE”。
如图4中所示的DMR之间的链路形成直线网格。然而,在其它实施例中,可采用和设想许多其它连接方案。在图4中示出的MPA连接方案中,每个PE被连接到四个邻居DMR,而每个DMR被连接到四个邻居PE以及四个邻居DMR。还设想其它连接方案以支持更高维数IN,诸如针对每个DMR使用六个DMR至DMR链路以支持三维直线网格或者针对每个DMR使用八个链路以便除了北、东、南和西方向之外还支持四个对角线方向。链路不需要局限于在物理上最近的邻居。
在各种实施例中,MPA和应用软件的组合可被称为并行处理系统(PPS)。例如,MPA可被编程为缓冲和分析来自照相机的原始视频数据,然后对缓冲内容执行视频数据压缩以将压缩数据向外发送到无线电链路上。例如,应用软件和MPA的这种组合可被称为并行视频信号处理器。
具有芯片I/O基元的MPA 400可被用于当前使用通用微处理器、DSP、FPGA或ASIC的各种系统和应用中的任何一种。例如,图4中示出的处理系统可被用于各种类型的计算机系统、数字信号处理器(DSP)或需要计算的其它装置中的任何一种。
需要注意的是,图4中示出的MPA仅是例子。在其它实施例中,可采用不同数量的PE和PE之间的不同连接机构。
同步
尽管多处理可允许同时执行更多程序指令,但多处理可能导致需要在时间和空间中的特定边界同步更小任务以用于高效通信和协调。当两个或更多任务在系统时钟的同一最小瞬间(还被称为时钟周期或仅仅简称为“周期”)开始时,所述两个或更多任务被同步。在各种实施例中,任务的同步可能难以实现与小数量的周期的同步。
如上所述,PIN不保障消息传送,如此不适合PE的同步。替代方案是在每个PE和共享存储器位置中采用软件屏障。当PE到达它的屏障时,它将位置值递增并且随后定期地轮询该位置值,直至该位置值与将要被协调的PE的预期数量匹配。然而,当采用这种技术时,多数PE架构将不会保证一组PE将会全部继续超过在同一时钟周期内与另一PE同步的屏障。
在各种实施例中,PE架构可能能够在宽范围的周期(诸如,例如1至20个周期)内同步任务,但任何特定实例中的周期的实际数量取决于超出程序员的正常控制的几个因素,诸如其它活动线程的状态、SM中的当前处理的数据的位置、高速缓存、中断处理等。
在一些实施例中,同步网络(在这里还被称为“sync网络”)可被用于同步MPA的一个或多个PE之间的任务。多处理器系统的主互连网络(PIN)可包括链路和节点(其中节点具有用于连接到链路以及连接到散布的处理元件(PE)和支持存储器(SM)的端口),而sync网络可包括一组sync控制器、一组PE适配器和它们之间的连接以及每个PE中的新指令。
具有sync网络的MPA的实施例被示出在图5中。在示出的实施例中,单个sync控制器(C)被用于PIN中的每个节点。系统中的sync控制器可全部是相同的。每个sync控制器可具有其中每个端口都耦合到邻近PE的多个端口、和用于配置目的的一个端口。在一些实施例中,耦合到sync控制器的邻近PE的集合可以与最近的PIN节点耦合到的集合相同。配置端口可被耦合到SM位置、PE寄存器、用于编程/调试的辅助网络或为它提供配置数据的任何其它装置。sync控制器上的PE端口具有输入sync信号和输出sync_stall信号。
在一些实施例中,每个PE可采用具有多个端口的sync适配器(A),每个端口用于耦合到sync控制器以及它自己的PE。在一些实施例中,sync适配器可被集成在PE中,而在其它实施例中,sync适配器可以是单独的实体。可通过从PE观察的方向(诸如,在四耦合的情况下的指南针方向NE、SE、SW和NW)来区分耦合到sync控制器的不同端口。适配器上的每个端口具有输出sync信号和输入sync_stall信号。还设想sync控制器和适配器之间的其它连接方案以支持更高维数IN。sync控制器和sync适配器之间的链路不需要局限于在物理上最近的邻居。
需要注意的是,图5中示出的sync网络仅是例子。在其它实施例中,可采用和设想不同数量的sync控制器和适配器以及sync控制器和适配器之间的不同连接。
在一些实施例中,可采用PE之间的同步的软件控制。在这种情况下,专用“sync”指令可被包括到PE指令集。在各种实施例中,用于这种指令的汇编语言格式可以是:
sync<direction list>
<direction list>字段可指示用于发送sync信号(使sync信号变为有效)并且随后等待无效的sync_stall信号的sync控制器方向的列表(即,sync控制器方向中的一个或多个)。PE可在执行下一指令之前等待,直至与该列表对应的所有sync_stall信号已变为无效。
在一些实施例中,如果sync控制器未被配置为使这个PE与一个或多个其它PE同步,则sync_stall信号将会保持无效并且PE可不等待sync_stall信号。sync控制器可忽略来自在sync配置寄存器中“屏蔽”的PE的sync,并且可不使sync_stall对于该PE变为有效。在各种实施例中,sync配置寄存器可存储对正在由MPA执行的给定应用特定的信息配置信息。
如果sync控制器被配置为使给定PE与一个或多个其它非屏蔽的PE同步,并且非屏蔽的PE还未使它们各自的sync信号变为有效,则sync控制器可通过使sync_stall信号变回至有效来做出响应。给定PE可随后等待,直至sync控制器已接收所有非屏蔽的PEsync信号,并且使所有非屏蔽的sync_stall信号变为无效。
需要注意的是,在各种实施例中,sync控制器可被包括作为DMR的一部分,而在其它实施例中,每个sync控制器可被实现为MPA内的独立单元。
参照图6,示出sync网络的一部分的实施例。在示出的实施例中,sync网络600包括sync适配器601、603和605以及sync控制器602、604和606。每个sync控制器和sync适配器之间的连接包括两个导线。一个导线可被用于传送sync_request(SR)信号,而另一导线可被用于传送sync_stall(SS)信号。在一些实施例中,SR信号可被从sync适配器发送给sync控制器,并且SS可被从sync控制器发送给sync适配器。
给定sync控制器和给定sync适配器之间的连接中所包括的这两个导线可编码四个状态。在第一状态下,SR和SS信号都可处于逻辑0电平,指示无效。在第二状态下,SR信号可以是逻辑0电平并且SS信号可以是逻辑1电平,指示sync屏障被激活,但还未被请求。在第三状态下,SR和SS信号都可处于逻辑1值,指示sync屏障有效并且被请求,但还未完成。在第四状态下,SR请求信号可处于逻辑1值并且SS信号可处于逻辑0值,指示sync屏障已被完成。
需要注意的是,图6中示出的实施例仅是例子。在其它实施例中,可采用不同数量的sync适配器和sync控制器以及不同配置的sync控制器和sync适配器。
sync适配器的实施例被示出在图7中。在示出的实施例中,sync适配器700包括耦合的OR(或)门710。在各种实施例中,sync适配器700可被包括在PE内,而在其它实施例中,sync适配器可以是MPA内的分离的实体。虽然sync适配器700包括OR门,但在其它实施例中,可采用其它逻辑门和逻辑门的配置。
在操作期间,sync适配器700可促成PE的指令获取和解码单元以及邻近sync控制器之间的通信。从PE的指令获取和解码单元接收的SR信号可通过sync适配器700到达邻近sync控制器。在一些实施例中,SR信号可以是软件指令(诸如,以前描述的指令)的函数。SS信号从每个sync控制器返回并且由OR门710用逻辑方式组合。所获得的信号可被用于停止PE的指令获取和解码单元。在一些实施例中,来自一个邻近sync控制器的单个有效SS信号可能足以延迟下一个PE时钟周期的指令获取。
需要注意的是,图7中示出的sync适配器仅是例子。在其它实施例中,可采用和设想不同数量的逻辑门以及不同数量的SR和SS信号。
参照图8,示出sync控制器的实施例。在示出的实施例中,sync控制器800包括逻辑门801至804和屏蔽寄存器805。在一些实施例中,屏蔽寄存器可位于sync控制器800的外部或者可以是存储器中的映射位置。寄存器(诸如,这里描述的寄存器)可以是被配置为存储一个或多个数据位的存储电路的特定实施例。在一些实施例中,寄存器可包括一个或多个数据存储基元,诸如锁存器、触发器等。寄存器805可包括与对应PE的每个“方向”对应的屏蔽位。需要注意的是,尽管在屏蔽寄存器805中仅描述了四个方向,但在其它实施例中,可采用和设想不同数量的“方向”。
在操作期间,sync控制器800从邻近sync适配器(诸如,例如如图7中所示的sync适配器700)接收SR信号806。逻辑门801至804可随后通过组合接收的SR信号来产生SS信号807。在一些实施例中,来自屏蔽寄存器805的配置位也可被用于SS信号807的产生。例如,如果屏蔽位是逻辑0,则来自对应方向的输入可被忽略并且与该方向对应的SS信号可被设置为逻辑0电平,指示对应PE未被停止。
当屏蔽位处于逻辑1电平时,用于对应方向的SS信号的状态可取决于来自该方向的SR信号和对应逻辑门内的对应OR门的输出。当屏蔽位处于逻辑0电平时,对应SS信号和对应SR信号的状态将不会影响SS信号的状态。
当两个或更多屏蔽位处于逻辑1电平时,对应SS信号将会处于逻辑0电平,在各种实施例中,当SR信号处于逻辑0电平时,这可指示“不停止”条件。如果与SS信号对应的SR信号处于逻辑1电平,并且至少一个其它SR信号处于逻辑1电平,则SS信号将会处于逻辑1电平,这可指示“停止”条件。
需要注意的是,“低”、“低逻辑电平”或“逻辑0电平”表示地电压或在地附近的电压,并且“高”、“高逻辑电平”或“逻辑1电平”表示足够大以导通n沟道MOSFET和截止p沟道MOSFET的电压电平。在其它实施例中,不同技术可导致针对“低”和“高”的不同电压电平。还需要注意的是,图8中描述的sync控制器的实施例仅是例子。在其它实施例中,可采用不同逻辑门和逻辑门的不同配置。
需要注意的是,对于任何真实的处理器阵列,存在连接到DMR的有限数量n的PE,并且这是能够由该DMR在一个时钟周期中同步的PE的最大数量。在一些实施例中,这个数量可以是4,但在其它实施例中,可采用不同数量。如果在每个PE存在执行的t个线程,则通过将sync和sync_stall信号的数量乘以每个sync控制器端口中以及每个适配器端口中的t,能够利用单个DMR同步t*n个线程。为了同步超过n个PE,可采用不同技术。
通过对跨越大组的PE的仔细配置的sync命令的链条进行编程,能够同步任何数量的PE,但不是在一个时钟周期中立即完成该同步。该编程技术从组中的最外面的PE到位于该组的中心的某个DMR布置停止屏障,然后布置从中心DMR传播到最外面的PE的释放波。在一些实施例中,空操作指令(通常被称为“nop”)可被添加以微调同步。
参照图9,示出描述布置成直线的六个PE的同步的例子。需要注意的是,PE可被按照任何形状布置,但为了清楚的目的,针对该例子选择直线。
对于一行PE,DMR可被用于同步PE对,如图9中所示。给定DMR可被配置为仅当在DMR的NE和NW端口的PE都已向DMR发出sync信号时才从sync stall释放一对PE。为了防止其它PE干扰,所有五个DMR被配置为屏蔽(忽略)它们的沿SW和SE方向的sync端口(除了缺少沿SW、SE方向与其它PE的DMR连接之外,在该示图上未示出这一点)。通过将配置位存储在每个DMR中的sync配置寄存器中来在sync指令之前实现DMR的配置。
同步图9中描述的六个PE所需的sync编程也被示出在图9中。在每个PE下方列出一组指令。每个PE将会从上到下执行对应指令。虚线连接线显示用于不同PE的哪些sync指令被配对以通过公共DMR(连接到该对中的两个PE的DMR)一起操作。每个PE可在不同时钟周期上到达第一sync指令,但由硬件强迫它与它所配对的PE在同一时钟周期上退出该sync指令。在这个特定链条例子中,PE被配对,然而,在满足上述DMR约束的情况下,超过两个PE可根据需要在单个周期中被同步。
检查如图9中所示的PE编程,需要注意的是,两个链条在中心交叉。第一链条具有由用于PE00和PE01的第一对sync指令形成的第一链路、由PE01和PE02之间的第一对sync指令形成的第二链路、由PE02和PE03之间的唯一一对sync指令形成的第三链路、由PE03和PE04之间的第二对sync指令形成的第四链路以及由PE04和PE05之间的第二对sync指令形成的第五链路。第二链条被类似地形成,但按照第一链条的镜像形成;并且它开始于由PE05之间的第一对sync指令形成的链路,并且结束于由PE00和PE01之间的第二对sync指令形成的第五链路。
因此,当在第一syncSW指令PE01被从停止释放时,它将会被第一syncSE指令捕捉,第一syncSE指令通过与PE02的第一syncSW指令配对而变成该链条中的下一个链路。类似地,在PE02的列中,当PE02被从第一syncSW指令释放时,它将会被第一syncSE指令捕捉,第一syncSE指令通过与PE02的第一syncSW指令配对而变成该链条中的下一个链路。诸如此类。
假设每个PE具有编程的任务,并且这些任务中的每一个可能花费不同的并且可能随机的时间量;那么PE将会交换数据以准备另一迭代。为了准备数据交换,可利用图9的sync编程同步PE。
当每个PE结束它的任务时,它执行图9中的它的对应列中的第一sync指令。如果它是链条中遇到sync指令的第一个PE,则它等待。更多PE到达每个链条的上半部,使链路被释放,由此每个PE前进至位于下半部链条中的下一个sync指令,并且等待。最终,两个链条的上部都释放,并且跨越中心DMR 03的链路被释放。由于所有PE现在都正在下半部链条上等待,所以这些链条以每个周期一个链路的速率快速连续地释放PE。
如图中所示,可能需要在sync的向外移动的波退出期间使内部PE等待最外面的PE被释放。可通过在发生退出的sync指令之后添加nop来编程这种情况。当PE执行nop指令时,它等待一个时钟周期。已知每个向外移动的sync执行将会正好花费一个时钟周期,计算在用于每个PE的程序中使用的nop的数量。由于每个向外移动的sync执行花费一个周期,并且所有nop花费一个周期并且没有PE正在执行可能停止的任何代码,所以所有PE可被以同步方式释放。示图中示出的编程将会保证:所有PE将会在正好同一个时钟周期上退出该指令序列。
该技术可扩展至具有数千个PE的MPA。例如,具有2025个PE的正方形阵列具有45个PE或44个PE至PE跳跃的边长、和88个跳跃的对角线曼哈顿(阶梯)距离。能够按照径向扇形模式设立sync链条以覆盖整个区域。从拐角到拐角的链条是88个跳跃长,并且这些确定用于同步所有2025个PE的最坏情况时间间隔,该时间间隔是88个时钟周期。在操作中,当PE遇到sync指令时,PE停止,并且最终,这被传送给阵列的中心。以沿径向向外传播的波的方式从中心释放这些停止。可能需要no-op以延迟在中心较近处的PE,直至该波到达拐角。然后,所有PE可在同一时钟周期上开始随后的指令。
sync指令可被用于协调具有分布式支持存储器的一组处理器以执行并行程序。存在许多不同类型的并行程序。
这个指令可允许程序员使大MPA中的多个处理器进入锁步执行。这可极大地提高这种阵列的并行性的效用(尤其是对于实时处理任务)和在脉动阵列模式(systolic mode)下的操作。脉动阵列模式是一种编程方法,其中MPA被编程为具有可以是一个或多个周期长的心跳。在每个心跳中,一些数据项被每个PE接收,一些操作被执行,并且结果被输出到邻近PE。脉动阵列模式需要每个PE的很少的存储器,并且已被应用于矩阵数学、滤波和图像处理应用(举几个来说)。在一个维度中的脉动阵列模式通常被称为流水线。这些和其它并行编程方法帮助程序员将大的单个任务的计算工作划分成许多较小的任务。
在具有单指令多数据(SIMD)能力的传统计算机/DSP系统中,并行性受到能够在一个PE周期中可由ALU使用的数据项的数量的限制。通常,这个数量具有固定最大值--对于微处理器,通常为2-8,并且在超级计算机中,也许高达128。能够实现MIMD并行性的传统多处理器系统可被利用它的多个指令流中的每个指令流中的相同指令编程;然而,仅仅这一点并不保证涉及的PE将会开始或保持在锁步执行。
通过采用sync指令链条,在一些实施例中,启动大的PE组可在同一周期上开始,并且克服关于同时执行相同指令的ALU的数量的SIMD限制。它使多个PE能够通过相同任务的多个拷贝的执行保持在锁步中,但不保证多个PE通过相同任务的多个拷贝的执行保持在锁步中。仅当PE对数据值、由于对数据存储器或通信资源的干扰导致的等待状态、中断、断点等不具有周期计数的依赖性时,PE才可保持在锁步中。可能需要仔细的编程以实现用于延长的时间段的锁步执行。然而,如果这不成功,则可通过上述方法定期地重新同步多个线程。
对于添加的Sync指令能力,硬件(并且因此,功率)影响是非常低的。不需要的PE可被关闭。因此,仅根据算法需要来使用功率,而非作为实现SIMD指令所需的但并不总是使用的开销功率的一部分。
参照图10,示出用于操作多处理器阵列(诸如,如图5中所述的阵列MPA 500)的方法的实施例。该方法在方框1001中开始。可随后设计用于多处理器系统的配置和软件(方框1002)。在一些实施例中,该软件可以是其个体程序指令可能能够在MPA内的个体PE上运行的各种应用程序中的任何一种应用程序。在一些实施例中,该配置可包括同步指令和设置以允许用于PE交换数据的公共时间点。
一旦软件和配置的设计已完成,就可随后配置多处理器系统(方框1003)。在一些实施例中,多处理器系统的配置可包括将信息存储在配置寄存器(诸如,例如如图8中所示的寄存器805)中。在其它实施例中,配置数据可被存储在多处理器系统内所包括的一个或多个存储器中。
在多处理器阵列的配置完成的情况下,以前设计的软件可随后被加载到多处理器系统上(方框1004)。在一些实施例中,该软件可被加载到多处理器系统内所包括的一个或多个存储器中。在其它实施例中,该软件可被存储在计算机可访问介质(诸如,例如硬盘驱动器、CD或任何其它合适的存储介质)上。
一旦该软件已被加载到多处理器系统中,多处理器的个体PE随后就被启动(方框1005)。在一些实施例中,每个PE可执行加载的软件内所包括的特定指令集。在各种实施例中,每个PE可在等待正在由多处理器系统内的其它PE执行的指令的完成期间停止指令的执行。随着PE执行指令,该方法可随后在方框1006中结束。
需要注意的是,图10中描述的方法仅是例子。在其它实施例中,可采用不同操作和操作的不同次序。
用于操作多处理器系统的方法的另一实施例被示出在图11中。该方法在方框1101中开始。可随后设计用于操作多处理器系统的多个组(方框1102)。在一些实施例中,每个组可包括配置数据和软件应用。在各种实施例中,配置数据可对于该组中所包括的特定软件应用而言是唯一的。
利用定义的所述多个组,多处理器系统可被基于所述多个组中的第一组的配置数据来配置,并且随后执行对应软件应用(方框1103)。在一些实施例中,多处理器系统内的不同PE可执行作为软件应用的一部分的不同指令。
当来自第一组的软件应用已被执行时,多处理器系统可随后被利用来自所述多个组中的随后的组的数据来配置(方框1104)。可利用新配置的多处理器系统运行对应软件应用。在一些实施例中,可使执行对应软件应用的任务的处理器停止,并且该方法可从方框1103前进,如上所述。该方法可随后在方框1105中结束。
需要注意的是,图11中示出的方法仅是例子。在其它实施例中,可采用和设想不同操作和操作的不同次序。
参照图12,示出描述多处理器系统的两个PE的同步的实施例的方框图。在示出的实施例中,处理元件P1和P2分别通过方向D1和D2被耦合到同步控制器C1。正在由PE P1和P2处理的每个线程包括同步指令。在一些实施例中,同步指令可包括诸如以上更详细地描述的方向。
在操作期间,可配置多处理器系统,并且可加载和执行软件应用。当PE P1和P2正在执行它们各自的指定的任务时,可能遇到同步指令。遇到同步指令的第一PE可停止执行,直至另一PE遇到它的相应的同步指令。此时,这两个PE可交换数据,然后恢复它们各自的线程的执行。
需要注意的是,图12中示出的实施例仅是例子。在其它实施例中,可采用不同数量的PE和不同数量的同步控制器。
在图13中描述表示用于同步多处理器系统内的PE的方法的实施例的流程图。共同参照图12的方框图和图13的流程图,该方法在方框1301中开始。在同步屏障之前的软件指令可随后由处理器P1和P2执行(方框1302)。
处理器P1可随后遇到同步指令,并且响应于该同步指令,将同步请求发送给控制器C1(方框1303)。在一些实施例中,可在软件中识别这样的位置:每个位置需要正在由多处理器系统内的不同处理器执行的指令线程之间的同步。
一旦处理器P1已发送同步指令,处理器P1可随后响应于由控制器C1产生的停止信号停止执行(方框1304)。虽然在图12中示出单个控制器,但在其它实施例中,处理器可被耦合到多个控制器,并且来自所述多个控制器中的任何一个控制器的停止信号可停止另外的程序指令的执行。在各种实施例中,一旦控制器C1从处理器P1和处理器P2两者接收到同步请求,停止信号就可变为无效。当控制器C1从两个处理器都接收到同步请求时,两个处理器都已到达同步屏障,并且被称为“in sync(处于同步)”。在各种实施例中,控制器C1可确定何时以类似于以下参照图15描述的方法的方式使停止信号变为无效。
随着停止信号变为无效,处理器P1可在同步屏障之后恢复软件的执行(方框1305)。此时,该方法可在方框1306中结束。虽然在图13中示出的方法中仅描述同步请求,但在其它实施例中,多个同步指令可被插入到给定处理器的指令线程中。在一些实施例中,另外的同步指令可允许同步多处理器系统内的更大数量的处理器。
需要注意的是,图13中示出的方法仅是例子。在其它实施例中,可采用不同操作和操作的不同次序。
参照图14,示出描述多处理器系统的三个PE的同步的实施例的方框图。在示出的实施例中,处理元件P1通过方向D1被耦合到同步控制器C1,处理元件分别通过方向D2和D4被耦合到同步控制器C1和C2,并且处理元件P3通过方向D3被耦合到同步控制器C2。
在设计阶段期间,设计用于操作这三个PE的配置。在一些实施例中,该配置可包括将要被加载到同步控制器C1和C2中的屏蔽寄存器中的数据位。可根据如上所述的方向D1至D4确定数据位。例如,C1中的寄存器可被配置为屏蔽除方向D1和D2之外的所有方向。该设计还可包括:确定同步指令需要在关联的软件的指令线程中被插入的位置。数据位和同步指令可一起形成屏障,即,这样的时间位置:三个处理元件中的每一个等待直至所有线程到达该点。
配置数据和关联的软件可随后被加载到多处理器系统中。一旦加载,以P1、P2和P3中的每一个为目标的指令(还被称为线程)可被执行。当P1遇到同步指令时,P1可停止它的线程的执行,直至P2遇到沿D2方向的同步指令。以类似方式,当P3遇到同步指令时,它可停止它的线程的执行,直至P2遇到沿D4方向的同步指令。
如果用于P1和P3的同步指令在用于P2的任何同步指令之前到达,则沿D2方向的同步指令的到达允许P1在下一个时钟周期中前进至它的沿D1方向的第二同步指令。此外,在下一个时钟周期中,当P2遇到沿D4方向的同步指令时,这允许P3前进至它的沿D3方向的第二同步指令。在第三时钟周期中,P2到达沿D2方向的同步指令允许在一个周期中与P1重新同步。在一些实施例中,对于P3,可能需要no-op指令。
在P1在P2之后到达屏障的情况下,则P2在它的sync(D2)指令处等待,直至P1到达。如果P3在P2之后到达屏障,则P2在它的sync(D4)指令处等待,直至P3到达屏障。
需要注意的是,图14中示出的实施例仅是例子。在其它实施例中,可采用不同数量的PE和控制器。
参照图15,示出描述用于操作同步控制器(诸如,例如图8的同步控制器)的方法的实施例的流程图。该方法在方框1501中开始。可随后确定配置(方框1502)。在一些实施例中,配置数据可被包括在寄存器(诸如,例如如图8中所示的寄存器805)中。在各种实施例中,存储在这种寄存器中的配置数据位可被解码,以确定从哪个方向允许同步信息的接收。每个方向可对应于邻近处理器中的相应的一个处理器。
来自所有方向的变为有效的同步请求可随后被与该配置进行比较(方框1503)。在一些实施例中,可使用逻辑电路(诸如,例如如图8中所示的逻辑电路801)执行该比较。同步停止信号可随后根据接收的同步请求和该配置变为有效或变为无效(方框1504)。在一些实施例中,逻辑电路(诸如,图8的逻辑电路801)可以逻辑方式组合一个或多个同步请求和配置信息,以确定给定停止信号应该何时变为有效或变为无效。需要注意的是,在一些实施例中,超过一个同步停止信号可在任何给定时间变为有效和变为无效。该方法可随后在方框1505中结束。虽然图15中示出的流程图描述其中描述的操作的单次应用,但在各种实施例中,可在多处理器系统的操作期间不断地执行图15的方法。
需要注意的是,图15中示出的方法仅是例子。在其它实施例中,可采用和设想不同数量的同步请求和配置数据位。
描述用于同步多处理器系统中的两组处理器的方法的实施例的流程图被示出在图16中。该方法在方框1601中开始。可随后开始多处理器系统的第一组处理器的同步(方框1602)。在一些实施例中,第一组处理器的同步可包括与以上参照图13和图15中描述的方法描述的操作类似的操作。在各种实施例中,第一组可包括多处理器系统的一个或多个处理器。在一些实施例中,多处理器系统的第一组处理器的同步可能需要多个时钟周期来完成。
第二组处理器的同步也可开始(方框1603)。像第一组的同步一样,第二组处理器的同步可包括与以上参照图13和图15中描述的方法描述的操作类似的操作。在各种实施例中,第二组可包括多处理器系统的除第一组中所包括的处理器之外的一个或多个处理器。在一些实施例中,可在第一组和第二组之间共享一个或多个处理器。与第一组的同步一样,第二组的同步可能需要多个时钟周期来完成。
该方法可随后取决于第一组和第二组的同步操作的状态(方框1604)。当同步操作之一或二者未完成时,这两组处理器的进一步执行保持停止(方框1605)。一旦两个同步操作都已完成,第一组处理器可恢复程序指令的执行(方框1606)。第二组处理器也可恢复程序指令的执行(方框1607)。一旦两组处理器都已恢复执行,该方法可在方框1608中结束。需要注意的是,这两个恢复执行操作被描述为以串行方式执行。在其它实施例中,可并行地或以相反次序执行这些操作。还可在替代实施例中采用其它操作和操作的其它次序。
参照图17,示出描述用于同步多处理器系统中的两组处理器的方法的实施例的流程图。该方法在方框1701中开始。多处理器系统的第一组处理器可随后被同步(方框1702)。在一些实施例中,该同步可包括与以上参照图13和图15中描述的方法描述的操作类似的操作。在各种实施例中,第一组处理器中所包括的每个处理器可被耦合到公共同步控制器(诸如,例如如图8中所示的同步控制器)。
一旦多处理器系统的第一组处理已被同步,多处理器系统的第二组处理器可随后被同步(方框1703)。在各种实施例中,第二组的每个处理器可被耦合到公共同步控制器。与同步第一组处理器一样,同步第二组处理器可包括与以上参照图13和图15中描述的方法描述的操作类似的操作。
随着第二组处理器的同步的完成,来自第一组处理器的处理器可被与第二组处理器中的处理器同步(方框1704)。在一些实施例中,来自第一组处理器的处理器和来自第二组处理器的处理器可被耦合到公共同步控制器。
一旦来自第一组的处理器和来自第二组的处理器已被同步,第一组处理器可随后被重新同步(方框1705)。第二组处理器也可然后被重新同步(方框1706)。需要注意的是,尽管两个重新同步操作被示出为以串行方式执行,但在其它实施例中,可并行地或以相反次序执行该操作。该方法可随后在方框1707中结束。通过采用图17中描述的方法,在各种实施例中,多处理器系统的任何数量的处理器可被同步。
需要注意的是,图17的流程图中描述的方法仅是例子。在其它实施例中,可采用和设想不同操作和操作的不同次序。
用于同步多处理器系统的两组处理器的方法的另一实施例被示出在图18中。该方法在方框1801中开始。多处理器系统的第一组处理器可随后被同步(方框1802)。在一些实施例中,该同步可包括与以上参照图13和图15中描述的方法描述的操作类似的操作。在各种实施例中,第一组处理器中所包括的每个处理器可被耦合到公共同步控制器(诸如,例如如图8中所示的同步控制器)。
一旦多处理器系统的第一组处理器已被同步,多处理器系统的第二组处理器可随后被同步(方框1803)。在各种实施例中,第二组的每个处理器可被耦合到公共同步控制器,并且第二组处理器中所包括的至少一个处理器也被包括在第一组处理器中。与同步第一组处理器一样,同步第二组处理器可包括与以上参照图13和图15中描述的方法描述的操作类似的操作。
随着多处理器系统的第二组处理器的同步的完成,第一组处理器可随后被重新同步(方框1804)。在一些实施例中,将所述至少一个处理器包括在第一和第二组处理器中可允许第一和第二组两者中的所有处理器被同步。随着第一组处理器的重新同步的完成,该方法可随后在方框1805中结束。通过采用图18中描述的方法,在各种实施例中,多处理器系统的任何数量的处理器可被同步。
需要注意的是,图18中示出的流程图仅是例子。在其它实施例中,可采用替代操作。
描述用于设计用于多处理器系统的软件的方法的实施例的流程图被示出在图19中。该方法在方框1901中开始。可随后为多处理器系统(诸如,例如如图3中所示的多处理器IC 300)设计软件(方框1902)。在各种实施例中,该软件可包括用于处理图形或视频数据的应用、或可被映射到处理器的阵列上的任何其它合适的应用。在一些实施例中,可识别需要与其它指令线程同步的个体处理器的指令线程内的位置。同步指令(诸如,以前描述的同步指令)可被插入到指令线程中,以形成同步屏障并且使得能够实现多处理器系统内的一个或多个处理器之间的同步。
一旦已插入同步指令,可随后设计配置数据(方框1903)。在一些实施例中,配置数据可包括使同步控制器能够接受来自耦合到该同步控制器的一个或多个处理器的同步请求的配置数据位。在一些实施例中,给定的一组配置位中的每个位可代表至耦合的处理器的对应方向,而在其它实施例中,给定的一组配置位可被解码以便确定允许的同步输入的方向。
配置数据可随后被加载到多处理器系统中(方框1905)。在一些实施例中,配置数据的一部分可被加载到控制器内的寄存器(诸如,例如如图8中所示的寄存器805)中。在其它实施例中,配置数据可被加载到多处理器系统内的一个或多个存储器中。
设计的软件可随后被加载到多处理器系统中(方框1905)。在一些实施例中,该软件可被加载到多处理器系统内的一个或多个共享存储器中。在其它实施例中,该软件可被分割,该软件的个体部分可被加载到多处理器系统内的本地存储器中。每个这种本地存储器可被耦合到多处理器系统内的对应处理器。
一旦配置数据和软件已被加载到多处理器系统中,该软件就可被执行(方框1906)。在执行期间,每个处理器可执行插入的同步指令,允许处理器的不同子集或不同处理器在指令线程内的以前识别的位置同步它们的操作。随着该软件的执行的完成,该方法可在方框1907中结束。
需要注意的是,图19的流程图中示出的一些操作被描述为按照顺序方式执行。在其它实施例中,一个或多个操作可被并行执行。
虽然已结合优选实施例描述本发明的系统和方法,但不应该局限于这里阐述的特定形式,而是相反地,应该覆盖能够被合理地包括在由所附权利要求定义的本发明的精神和范围内的这种替代物、变型和等同物。
Claims (27)
1.一种系统,包括:
多个处理器,其中所述多个处理器中的每个处理器包括多个处理器端口和一个同步适配器,其中所述同步适配器包括多个适配器端口;
多个控制器,其中所述多个控制器中的每个控制器包括多个控制器端口,其中所述多个控制器端口中的每个控制器端口被耦合到所述多个处理器中的邻近处理器的适配器端口;
其中所述多个处理器中的每个处理器被配置为:
选择性地通过一个或多个适配器端口将同步信号发送给所述多个控制器中的相应的一个或多个控制器;以及
根据来自所述一个或多个控制器的响应,暂停程序指令的执行;
其中所述多个控制器中的每个控制器被配置为:
从所述多个处理器中的相应的一个或多个处理器接收一个或多个同步信号;以及
根据接收的一个或多个同步信号将响应发送给所述多个处理器中的相应的一个或多个处理器中的每个处理器。
2.如权利要求1所述的系统,其中所述多个控制器中的每个控制器包括被配置为接收一个或多个配置数据位的配置端口。
3.如权利要求2所述的系统,其中为了将响应发送给所述相应的一个或多个处理器中的每个处理器,所述多个控制器中的每个控制器还被配置为根据所述一个或多个配置数据位将响应发送给所述相应的一个或多个处理器。
4.如权利要求1所述的系统,其中所述多个控制器中的每个控制器包括寄存器。
5.如权利要求4所述的系统,其中用于所述多个控制器中的每个控制器的所述一个或多个配置位被存储在每个控制器的寄存器中。
6.一种用于操作多处理器系统的方法,其中所述多处理器系统包括多个处理器和多个同步控制器,其中所述多个处理器中的每个处理器包括同步适配器,所述方法包括:
设计用于处理器的一个或多个组中的每个组的配置数据和软件,其中处理器的所述一个或多个组中的每个组包括所述多个处理器的子集,并且其中设计配置数据和软件包括:
识别处理器的所述一个或多个组中的给定组、和用于插入同步屏障的所述给定组的每个处理器的软件中的至少一个位置;
识别与所述给定组的每个处理器的每个同步适配器耦合的所述多个同步控制器中的同步控制器;
根据耦合到识别的同步控制器的每个同步适配器的方向,确定用于识别的同步控制器的配置数据,其中所述配置数据能够实现识别的同步控制器和所述给定组的选择的处理器的同步适配器之间的多个同步信号的传输;以及
将同步屏障插入到用于所述给定组的每个处理器的软件中的识别的位置中的每个位置中,其中每个同步屏障包括一个或多个同步指令的序列,其中每个同步指令包括一个或多个变元,并且其中所述一个或多个变元中的每个变元根据所述给定组的每个处理器的同步适配器指定识别的同步控制器的一个或多个方向中的给定方向;
将设计的配置数据和软件加载到多处理器系统中;
执行加载的软件;
响应于所述给定组的每个处理器执行插入的同步指令中的给定的一个同步指令,暂停所述给定组的每个处理器的执行;以及
响应于确定所述给定组的所有处理器已执行插入的同步指令中的相应的一个同步指令,恢复所述给定组的每个处理器的执行。
7.如权利要求6所述的方法,其中确定的配置数据包括多个配置数据位,与所述多个配置数据位的每个组合对应的每个数据模式对应于耦合到识别的同步控制器的所述给定组的处理器中的给定处理器的同步适配器的方向。
8.如权利要求7所述的方法,其中将配置数据加载到所述多处理器系统中包括:将所述多个配置数据位存储在识别的同步控制器的寄存器中。
9.如权利要求6所述的方法,其中恢复所述给定组的每个处理器的执行包括:由识别的同步控制器使停止信号变为无效。
10.如权利要求6所述的方法,其中暂停所述给定组的每个处理器的执行包括:由所述给定组的每个处理器的同步适配器使同步请求信号变为有效。
11.一种同步控制器,包括:
寄存器,被配置为存储多个配置位,其中所述多个配置位对多个数据模式进行编码,其中所述多个数据模式中的每个数据模式对应于耦合方向的多个子集中的给定子集;
一个或多个逻辑电路,其中所述一个或多个逻辑电路中的每个逻辑电路被配置为:
接收一个或多个同步请求信号;以及
根据接收的一个或多个同步请求和所述多个数据模式中的对应数据模式来产生用于至少一个处理器的停止信号,其中所述至少一个处理器被沿耦合方向的所述多个子集中的对应的一个子集的给定方向耦合到该同步控制器。
12.如权利要求11所述的同步控制器,其中所述一个或多个条目中的每个条目包括锁存器。
13.如权利要求11所述的同步控制器,其中为了根据接收的一个或多个同步请求和所述多个数据模式中的对应数据模式来产生停止信号,每个逻辑电路还被配置为产生与耦合方向的所述多个子集中的对应的一个子集的方向对应的一个或多个停止信号。
14.如权利要求11所述的同步控制器,其中为了根据接收的同步请求和所述多个数据模式中的对应数据模式来产生停止信号,每个逻辑电路还被配置为响应于接收的同步信号中的选择的一个同步信号变为有效来产生停止信号,其中接收的同步信号中的选择的一个同步信号对应于所述多个数据模式中的对应数据模式的方向。
15.如权利要求14所述的同步控制器,其中为了根据接收的同步请求和所述多个数据模式中的对应数据模式来产生停止信号,每个逻辑电路还被配置为响应于确定剩余的接收的同步信号未变为有效而产生停止信号。
16.一种系统,包括:
多个处理器,其中所述多个处理器中的每个处理器包括同步适配器,其中所述同步适配器包括多个适配器端口;
多个数据存储器路由器,以散布布置耦合到所述多个处理器,其中所述多个数据存储器路由器中的每个数据存储器路由器包括:
本地存储器,耦合到所述多个处理器的子集;
至少一个路由引擎;以及
同步控制器,耦合到所述多个处理器的所述子集中的每个处理器的所述多个适配器端口中的至少一个适配器端口;
其中每个同步适配器被配置为:
选择性地通过所述多个适配器端口中的给定的一个适配器端口将至少一个同步信号发送给至少一个同步控制器;
在发送同步信号之后暂停程序指令的处理器执行;
根据来自所述至少一个同步控制器的对同步信号的响应,恢复程序指令的执行;
其中每个同步控制器被配置为:
从相应的一个或多个同步适配器接收一个或多个同步信号;以及
根据接收的一个或多个同步信号将响应发送给所述多个处理器的所述相应的一个或多个同步适配器中的每个同步适配器。
17.如权利要求16所述的系统,其中每个同步控制器包括被配置为接收一个或多个配置数据位的配置端口。
18.如权利要求17所述的系统,其中为了将响应发送给所述相应的一个或多个同步适配器中的每个同步适配器,每个同步控制器还被配置为根据所述一个或多个配置数据位将响应发送给所述相应的一个或多个同步适配器。
19.如权利要求17所述的系统,其中每个同步控制器还被配置为将接收的一个或多个配置位存储在寄存器中。
20.如权利要求17所述的系统,其中所述一个或多个配置位中的每个配置位对应于一个或多个方向中的给定方向,其中所述一个或多个方向中的每个方向对应于同步适配器中的相应的一个同步适配器。
21.一种用于操作多处理器系统的方法,其中所述多处理器系统包括多个处理器和多个控制器,所述方法包括:
设计用于同步屏障的配置数据,其中所述配置数据包括:
用于所述多个控制器中的第一控制器的配置数据,所述配置数据使能从所述多个处理器中的第一处理器和所述多个处理器中的第二处理器接收同步信息;以及
其中所述多个处理器中的第一处理器被耦合到第一控制器;
用于所述多个处理器中的第二控制器的配置数据,所述配置数据使能从所述多个处理器中的第二处理器和所述多个处理器中的第三处理器接收同步信息;
其中所述多个处理器中的第二处理器被耦合到所述多个控制器中的第一控制器和所述多个控制器中的第二控制器;
其中所述多个处理器中的第三处理器被耦合到所述多个控制器中的第二控制器;
设计用于所述同步屏障的软件,其中所述软件包括:
用于所述多个处理器中的第一处理器的第一多个同步指令;
用于所述多个处理器中的第二处理器的第二多个同步指令;和
用于所述多个处理器中的第三处理器的至少一个同步指令;
将设计的配置数据加载到多处理器阵列中;
将设计的软件加载到所述多处理器阵列中;以及
执行加载的软件,其中执行所述软件包括:
响应于第一处理器执行第一多个同步指令中的第一个同步指令,暂停第一处理器的执行;
响应于第二处理器执行第二多个同步指令中的第一个同步指令,暂停第二处理器的执行;
响应于确定第一处理器已在第一多个同步指令中的第一个同步指令暂停,以及确定第二处理器已在第二多个同步指令中的第一个同步指令暂停,由第一和第二处理器恢复执行;
响应于第一处理器执行第一多个同步指令中的第二个同步指令,暂停第一处理器的执行;
响应于第二处理器执行第二多个同步指令中的第二个同步指令,暂停第二处理器的执行;
响应于第三处理器执行所述至少一个同步指令,暂停第三处理器的执行;
响应于确定第二处理器已在第二多个同步指令中的第二个同步指令暂停,并且第三处理器已在所述至少一个同步指令暂停,由第二处理器和第三处理器恢复执行;
响应于第二处理器执行第二多个同步指令中的第三个同步指令,暂停第二处理器的执行;以及
响应于确定第一处理器已在第一多个同步指令中的第二个同步指令暂停,并且第二处理器已在第二多个同步指令中的第三个同步指令暂停,由第一处理器和第二处理器恢复执行。
22.如权利要求21所述的方法,其中将设计的配置数据加载到多处理器阵列中包括:将一个或多个配置位存储在所述多个控制器中的每个控制器的寄存器中。
23.一种用于操作多处理器阵列的方法,其中所述多处理器阵列包括多个处理器和多个控制器,所述方法包括:
设计用于多处理器系统的多个组,其中所述多个组中的每个组包括配置数据和软件;
其中每个配置数据包括用于所述多个控制器的子集的数据,其中所述数据使得能够针对所述多个控制器的所述子集中的每个控制器从所述多个处理器的子集接收同步信息;
其中每个软件包括用于所述多个处理器的所述子集中的每个处理器的一个或多个同步指令;
将所述多个组中的第一组加载到所述多处理器阵列中;
执行第一组中所包括的软件;
暂停第一组中所包括的软件的执行;
将所述多个组中的第二组加载到所述多处理器阵列中;以及
执行第二组中所包括的软件。
24.如权利要求23所述的方法,其中加载所述多个组中的第一组包括:将配置数据的一部分存储在所述多个控制器的子集中的每个控制器的寄存器中。
25.如权利要求23所述的方法,其中设计所述多个组包括:
针对所述多个组中的每个组识别用于同步指令的多个位置;以及
将同步指令插入到所述多个组中的每个组的软件中的识别的多个位置中的每个位置。
26.一种用于操作多处理器系统的方法,其中所述多处理器系统包括多个处理器和多个同步控制器,其中所述方法包括:
同步所述多个处理器的第一子集,其中所述多个处理器的第一子集中的每个处理器被耦合到所述多个同步控制器中的第一同步控制器;
同步所述多个处理器的第二子集,其中所述多个处理器的第二子集中的每个处理器被耦合到所述多个同步控制器中的第二同步控制器;
使所述多个处理器的第一子集中的至少第一处理器与所述多个处理器的第二子集中的至少第二处理器同步,其中所述多个处理器的第一子集中的至少第一处理器还被耦合到所述多个同步控制器中的第三控制器,并且其中所述多个处理器的第二子集中的至少第二处理器还被耦合到所述多个同步控制器中的第三控制器;以及
响应于至少第一处理器和至少第二处理器的同步的完成,重新同步所述多个处理器的第一子集和处理器的第二子集。
27.一种用于操作多处理器系统的方法,其中所述多处理器系统包括多个处理器和多个同步控制器,其中所述方法包括:
同步所述多个处理器的第一子集,其中所述多个处理器的第一子集中的每个处理器被耦合到所述多个同步控制器中的第一同步控制器;
同步所述多个处理器的第二子集,其中所述多个处理器的第二子集中的每个处理器被耦合到所述多个同步控制器中的第二同步控制器,并且其中所述多个处理器的第二子集中的至少一个处理器还被耦合到所述多个同步控制器中的第一同步控制器;以及
响应于确定所述多个处理器的第二子集的同步已完成,重新同步所述多个处理器的第一子集。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261734190P | 2012-12-06 | 2012-12-06 | |
US61/734,190 | 2012-12-06 | ||
PCT/US2013/064366 WO2014088698A2 (en) | 2012-12-06 | 2013-10-10 | Processing system with synchronization instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104823164A true CN104823164A (zh) | 2015-08-05 |
CN104823164B CN104823164B (zh) | 2019-07-16 |
Family
ID=49517643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380063373.7A Active CN104823164B (zh) | 2012-12-06 | 2013-10-10 | 具有同步控制器的多处理器系统以及维持同步的方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9323714B2 (zh) |
EP (1) | EP2929434B1 (zh) |
JP (2) | JP6317365B2 (zh) |
CN (1) | CN104823164B (zh) |
WO (1) | WO2014088698A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106980591A (zh) * | 2015-10-28 | 2017-07-25 | 罗伯特·博世有限公司 | 由至少两个微控制器构成的装置和制造这种装置的方法 |
CN112130898A (zh) * | 2019-06-24 | 2020-12-25 | 华为技术有限公司 | 一种插入同步指令的方法及装置 |
WO2021018313A1 (zh) * | 2019-07-30 | 2021-02-04 | 中科寒武纪科技股份有限公司 | 数据同步方法及装置以及相关产品 |
CN112559054A (zh) * | 2020-12-22 | 2021-03-26 | 上海壁仞智能科技有限公司 | 用于同步指令的方法和计算系统 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014092968A1 (en) | 2012-12-13 | 2014-06-19 | Coherent Logix, Incorporated | Multiprocessor system with improved secondary interconnection network |
US9760410B2 (en) * | 2014-12-12 | 2017-09-12 | Intel Corporation | Technologies for fast synchronization barriers for many-core processing |
US20160301634A1 (en) * | 2015-04-11 | 2016-10-13 | International Business Machines Corporation | Controlling a delivery of messages to designated computing devices |
US10216430B2 (en) * | 2015-07-01 | 2019-02-26 | Cavium, Llc | Local ordering of instructions in a computing system |
US9910716B2 (en) * | 2016-03-11 | 2018-03-06 | Knuedge Incorporated | Synchronization in a multi-processor computing system |
US20170364473A1 (en) * | 2016-03-31 | 2017-12-21 | Wave Computing, Inc. | Program counter alignment across a reconfigurable hum fabric |
US10783165B2 (en) | 2017-05-17 | 2020-09-22 | International Business Machines Corporation | Synchronizing multiple devices |
GB201717295D0 (en) * | 2017-10-20 | 2017-12-06 | Graphcore Ltd | Synchronization in a multi-tile processing array |
US11795753B1 (en) * | 2018-04-25 | 2023-10-24 | Gmi Holdings, Inc. | Remote monitoring and control of garage door opener incorporating jackshaft door operator drive assembly |
EP3825847B1 (en) * | 2019-04-04 | 2022-05-11 | Cambricon Technologies Corporation Limited | Data processing method and apparatus, and related product |
GB2597078B (en) * | 2020-07-14 | 2022-07-13 | Graphcore Ltd | Communication between host and accelerator over network |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1061482A (zh) * | 1990-11-13 | 1992-05-27 | 国际商业机器公司 | 并行相联处理器系统 |
WO1995024081A1 (en) * | 1994-03-03 | 1995-09-08 | Proxim, Inc. | Frequency hopping medium access control protocol |
CN1326150A (zh) * | 2000-05-25 | 2001-12-12 | 国际商业机器公司 | 用于numa系统的基于开关的时间同步协议 |
CN101048739A (zh) * | 2004-10-27 | 2007-10-03 | 松下电器产业株式会社 | 多处理器系统、同步控制装置及同步控制方法 |
CN101315648A (zh) * | 2008-07-22 | 2008-12-03 | 中国科学院计算技术研究所 | 一种满足systemC语法的多核处理器的事件处理单元组 |
CN101634979A (zh) * | 2008-07-22 | 2010-01-27 | 中国科学院计算技术研究所 | 一种满足SystemC语法的多核处理器 |
WO2011112716A1 (en) * | 2010-03-12 | 2011-09-15 | Qualcomm Incorporated | Methods and apparatus for supporting synchronization between groups of devices |
CN102200961A (zh) * | 2011-05-27 | 2011-09-28 | 清华大学 | 一种动态可重构处理器内子单元的扩展方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0630094B2 (ja) * | 1989-03-13 | 1994-04-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチプロセツサ・システム |
JPH02264352A (ja) * | 1989-04-05 | 1990-10-29 | Hitachi Ltd | マルチプロセッサ同期方式 |
US5345578A (en) * | 1989-06-30 | 1994-09-06 | Digital Equipment Corporation | Competitive snoopy caching for large-scale multiprocessors |
US5434995A (en) | 1993-12-10 | 1995-07-18 | Cray Research, Inc. | Barrier synchronization for distributed memory massively parallel processing systems |
JP2780623B2 (ja) * | 1993-12-28 | 1998-07-30 | 日本電気株式会社 | 情報処理装置 |
US5721921A (en) | 1995-05-25 | 1998-02-24 | Cray Research, Inc. | Barrier and eureka synchronization architecture for multiprocessors |
US7013454B2 (en) * | 1999-02-22 | 2006-03-14 | Sun Microsystems, Inc. | Thread suspension system and method using trapping instructions |
US7415594B2 (en) | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
US20040034858A1 (en) * | 2002-08-14 | 2004-02-19 | Kushlis Robert J. | Programming a multi-threaded processor |
US7810093B2 (en) * | 2003-11-14 | 2010-10-05 | Lawrence Livermore National Security, Llc | Parallel-aware, dedicated job co-scheduling within/across symmetric multiprocessing nodes |
US7398403B2 (en) * | 2004-07-01 | 2008-07-08 | Matsushita Electric Industrial Co., Ltd. | Multiprocessor control apparatus, control method thereof, and integrated circuit |
US7925791B2 (en) * | 2006-07-17 | 2011-04-12 | The Math Works, Inc. | Recoverable error detection for concurrent computing programs |
US20090327354A1 (en) * | 2008-06-26 | 2009-12-31 | Microsoft Corporation | Notification and synchronization of updated data |
US8880866B2 (en) * | 2010-10-15 | 2014-11-04 | Coherent Logix, Incorporated | Method and system for disabling communication paths in a multiprocessor fabric by setting register values to disable the communication paths specified by a configuration |
US9424213B2 (en) * | 2012-11-21 | 2016-08-23 | Coherent Logix, Incorporated | Processing system with interspersed processors DMA-FIFO |
CN104854531B (zh) * | 2012-12-13 | 2018-05-18 | 相干逻辑公司 | 时钟发生电路的重新配置 |
-
2013
- 2013-10-10 EP EP13785989.8A patent/EP2929434B1/en active Active
- 2013-10-10 WO PCT/US2013/064366 patent/WO2014088698A2/en active Application Filing
- 2013-10-10 US US14/051,140 patent/US9323714B2/en active Active
- 2013-10-10 CN CN201380063373.7A patent/CN104823164B/zh active Active
- 2013-10-10 JP JP2015546462A patent/JP6317365B2/ja active Active
-
2016
- 2016-03-17 US US15/073,276 patent/US9558150B2/en active Active
-
2018
- 2018-03-29 JP JP2018063728A patent/JP6574865B2/ja active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1061482A (zh) * | 1990-11-13 | 1992-05-27 | 国际商业机器公司 | 并行相联处理器系统 |
WO1995024081A1 (en) * | 1994-03-03 | 1995-09-08 | Proxim, Inc. | Frequency hopping medium access control protocol |
CN1326150A (zh) * | 2000-05-25 | 2001-12-12 | 国际商业机器公司 | 用于numa系统的基于开关的时间同步协议 |
CN101048739A (zh) * | 2004-10-27 | 2007-10-03 | 松下电器产业株式会社 | 多处理器系统、同步控制装置及同步控制方法 |
CN101315648A (zh) * | 2008-07-22 | 2008-12-03 | 中国科学院计算技术研究所 | 一种满足systemC语法的多核处理器的事件处理单元组 |
CN101634979A (zh) * | 2008-07-22 | 2010-01-27 | 中国科学院计算技术研究所 | 一种满足SystemC语法的多核处理器 |
WO2011112716A1 (en) * | 2010-03-12 | 2011-09-15 | Qualcomm Incorporated | Methods and apparatus for supporting synchronization between groups of devices |
CN102200961A (zh) * | 2011-05-27 | 2011-09-28 | 清华大学 | 一种动态可重构处理器内子单元的扩展方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106980591A (zh) * | 2015-10-28 | 2017-07-25 | 罗伯特·博世有限公司 | 由至少两个微控制器构成的装置和制造这种装置的方法 |
CN106980591B (zh) * | 2015-10-28 | 2021-08-03 | 罗伯特·博世有限公司 | 由至少两个微控制器构成的装置和制造这种装置的方法 |
CN112130898A (zh) * | 2019-06-24 | 2020-12-25 | 华为技术有限公司 | 一种插入同步指令的方法及装置 |
WO2021018313A1 (zh) * | 2019-07-30 | 2021-02-04 | 中科寒武纪科技股份有限公司 | 数据同步方法及装置以及相关产品 |
CN112559054A (zh) * | 2020-12-22 | 2021-03-26 | 上海壁仞智能科技有限公司 | 用于同步指令的方法和计算系统 |
CN112559054B (zh) * | 2020-12-22 | 2022-02-01 | 上海壁仞智能科技有限公司 | 用于同步指令的方法和计算系统 |
Also Published As
Publication number | Publication date |
---|---|
US20160196234A1 (en) | 2016-07-07 |
JP2018116735A (ja) | 2018-07-26 |
US9323714B2 (en) | 2016-04-26 |
WO2014088698A2 (en) | 2014-06-12 |
CN104823164B (zh) | 2019-07-16 |
EP2929434B1 (en) | 2019-01-16 |
JP2016501414A (ja) | 2016-01-18 |
JP6574865B2 (ja) | 2019-09-11 |
US20140164735A1 (en) | 2014-06-12 |
EP2929434A2 (en) | 2015-10-14 |
JP6317365B2 (ja) | 2018-04-25 |
US9558150B2 (en) | 2017-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104823164A (zh) | 具有同步指令的处理系统 | |
US11055141B2 (en) | Quiesce reconfigurable data processor | |
Watkins et al. | ReMAP: A reconfigurable heterogeneous multicore architecture | |
US20080288747A1 (en) | Executing Multiple Instructions Multiple Data ('MIMD') Programs on a Single Instruction Multiple Data ('SIMD') Machine | |
WO2007067562A2 (en) | Methods and apparatus for multi-core processing with dedicated thread management | |
WO2022036690A1 (zh) | 一种图计算装置、处理方法及相关设备 | |
US12056012B2 (en) | Force quit of reconfigurable processor | |
US20240054081A1 (en) | Controlling access to a memory shared by a cluster of multiple processing elements | |
Rettkowski et al. | Application-specific processing using high-level synthesis for networks-on-chip | |
Amouri et al. | FPGA implementation of an invasive computing architecture | |
Venkateswaran et al. | Memory in processor-supercomputer on a chip: processor design and execution semantics for massive single-chip performance | |
Raça | Efficient Execution of High Performance Computing Applications on Asymmetric Heterogeneous Hardware Architectures | |
Porada | A Many-core Parallelizing Processor | |
Hasasneh et al. | Asynchronous arbiter for micro-threaded chip multiprocessors | |
Zhong | Architectural and Complier Mechanisms for Accelerating Single Thread Applications on Mulitcore Processors. | |
Taylor et al. | How to Build Scalable On-Chip ILP Networks for a Decentralized Architecture | |
Kadakia | Data routing in multicore processors using dimension increment method | |
Emmons et al. | Exploiting concurrency in a general-purpose one-instruction computer architecture. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |