CN104823164B - 具有同步控制器的多处理器系统以及维持同步的方法 - Google Patents

具有同步控制器的多处理器系统以及维持同步的方法 Download PDF

Info

Publication number
CN104823164B
CN104823164B CN201380063373.7A CN201380063373A CN104823164B CN 104823164 B CN104823164 B CN 104823164B CN 201380063373 A CN201380063373 A CN 201380063373A CN 104823164 B CN104823164 B CN 104823164B
Authority
CN
China
Prior art keywords
processor
controller
subset
data
group
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
Application number
CN201380063373.7A
Other languages
English (en)
Other versions
CN104823164A (zh
Inventor
C·S·多布斯
A·M·马里克
K·R·福克纳
M·B·索尔卡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Coherent Logix Inc
Original Assignee
Coherent Logix Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Coherent Logix Inc filed Critical Coherent Logix Inc
Publication of CN104823164A publication Critical patent/CN104823164A/zh
Application granted granted Critical
Publication of CN104823164B publication Critical patent/CN104823164B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier 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和CraigM.Chase的标题为“Processing System With Interspersed Stall PropagatingProcessors And Communication Elements”的第7415594号美国专利的全部内容通过引用包含于此, 就好像在这里充分而完整地阐述该专利。
发明人是Michael B.Doerr、Carl S.Dobbs、Michael B.Solka、 Michael RTrocino和David A.Gibson的于2011年10月14日提交 的标题为“DisablingCommunication 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。在其它实施例中,多处理器IC 300还可包括其它电路和功能块(未示出)。例如,多处理器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中的多个处理器进入锁步执 行。这可极大地提高这种阵列的并行性的效用(尤其是对于实时处理 任务)和在脉动阵列模式(systolicmode)下的操作。脉动阵列模式是 一种编程方法,其中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.一种用于操作多处理器系统的方法,其中所述多处理器系统包括多个处理器和多个同步控制器,其中所述方法包括:
同步所述多个处理器的第一子集,其中所述多个处理器的第一子集中的每个处理器被耦合到所述多个同步控制器中的第一同步控制器;
同步所述多个处理器的第二子集,其中所述多个处理器的第二子集中的每个处理器被耦合到所述多个同步控制器中的第二同步控制器,并且其中所述多个处理器的第二子集中的至少一个处理器还被耦合到所述多个同步控制器中的第一同步控制器;以及
响应于确定所述多个处理器的第二子集的同步已完成,重新同步所述多个处理器的第一子集。
CN201380063373.7A 2012-12-06 2013-10-10 具有同步控制器的多处理器系统以及维持同步的方法 Active CN104823164B (zh)

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 CN104823164A (zh) 2015-08-05
CN104823164B true 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)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6341930B2 (ja) 2012-12-13 2018-06-13 コーヒレント・ロジックス・インコーポレーテッド 改善された二次相互接続ネットワークを備えたマルチプロセッサシステム
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
DE102015221064A1 (de) * 2015-10-28 2017-05-04 Robert Bosch Gmbh Anordnung aus wenigstens zwei Mikrocontrollern und Verfahren zur Herstellung einer solchen Anordnung
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
JP7073580B2 (ja) * 2019-04-04 2022-05-23 中科寒武紀科技股▲分▼有限公司 データ処理方法、装置、及び関連製品
CN112306945B (zh) * 2019-07-30 2023-05-12 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
CN112130898A (zh) * 2019-06-24 2020-12-25 华为技术有限公司 一种插入同步指令的方法及装置
GB2597078B (en) * 2020-07-14 2022-07-13 Graphcore Ltd Communication between host and accelerator over network
CN112559054B (zh) * 2020-12-22 2022-02-01 上海壁仞智能科技有限公司 用于同步指令的方法和计算系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1061482A (zh) * 1990-11-13 1992-05-27 国际商业机器公司 并行相联处理器系统
CN1326150A (zh) * 2000-05-25 2001-12-12 国际商业机器公司 用于numa系统的基于开关的时间同步协议
CN101048739A (zh) * 2004-10-27 2007-10-03 松下电器产业株式会社 多处理器系统、同步控制装置及同步控制方法
CN101634979A (zh) * 2008-07-22 2010-01-27 中国科学院计算技术研究所 一种满足SystemC语法的多核处理器
CN102200961A (zh) * 2011-05-27 2011-09-28 清华大学 一种动态可重构处理器内子单元的扩展方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
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 日本電気株式会社 情報処理装置
EP0748540A4 (en) * 1994-03-03 1997-10-29 Proxim Inc PROTOCOL FOR MEDIUM ACCESS CONTROL IN THE FREQUENCY JUMP PROCESS
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
CN100568247C (zh) * 2008-07-22 2009-12-09 中国科学院计算技术研究所 一种满足systemC语法的多核处理器的事件处理单元组
US8483196B2 (en) * 2010-03-12 2013-07-09 Qualcomm Incorporated Methods and apparatus for supporting synchronization between groups of devices
EP3432152B1 (en) * 2010-10-15 2020-03-18 Coherent Logix Incorporated Disabling communication in a multiprocessor system
CN104813306B (zh) * 2012-11-21 2017-07-04 相干逻辑公司 具有散布处理器dma‑fifo的处理系统
JP2016508258A (ja) * 2012-12-13 2016-03-17 コーヒレント・ロジックス・インコーポレーテッド 多重周波数多重プロセッサシステムのためのクロック分配ネットワーク

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1061482A (zh) * 1990-11-13 1992-05-27 国际商业机器公司 并行相联处理器系统
CN1326150A (zh) * 2000-05-25 2001-12-12 国际商业机器公司 用于numa系统的基于开关的时间同步协议
CN101048739A (zh) * 2004-10-27 2007-10-03 松下电器产业株式会社 多处理器系统、同步控制装置及同步控制方法
CN101634979A (zh) * 2008-07-22 2010-01-27 中国科学院计算技术研究所 一种满足SystemC语法的多核处理器
CN102200961A (zh) * 2011-05-27 2011-09-28 清华大学 一种动态可重构处理器内子单元的扩展方法

Also Published As

Publication number Publication date
EP2929434B1 (en) 2019-01-16
JP6574865B2 (ja) 2019-09-11
US9558150B2 (en) 2017-01-31
JP2018116735A (ja) 2018-07-26
US20160196234A1 (en) 2016-07-07
JP6317365B2 (ja) 2018-04-25
EP2929434A2 (en) 2015-10-14
US9323714B2 (en) 2016-04-26
US20140164735A1 (en) 2014-06-12
CN104823164A (zh) 2015-08-05
WO2014088698A2 (en) 2014-06-12
JP2016501414A (ja) 2016-01-18

Similar Documents

Publication Publication Date Title
CN104823164B (zh) 具有同步控制器的多处理器系统以及维持同步的方法
US11055141B2 (en) Quiesce reconfigurable data processor
US10318260B2 (en) Method and apparatus for a compiler and related components for stream-based computations for a general-purpose, multiple-core system
US7984448B2 (en) Mechanism to support generic collective communication across a variety of programming models
Ajima et al. Tofu interconnect 2: System-on-chip integration of high-performance interconnect
Butts Synchronization through communication in a massively parallel processor array
US11068641B1 (en) Systems and methods for intelligently buffer tracking for optimized dataflow within an integrated circuit architecture
Weisz et al. CoRAM++: Supporting data-structure-specific memory interfaces for FPGA computing
US20230125149A1 (en) Fractional Force-Quit for Reconfigurable Processors
CN117222991A (zh) 片上网络处理系统
Gatherer et al. Towards a Domain Specific Solution for a New Generation of Wireless Modems
Cohen et al. Dynamic barrier architecture for multi-mode fine-grain parallelism using conventional processors Part I: Barrier Architecture
Apduhan et al. Experiments of a reconfigurable multiprocessor simulation on a distributed environment
Tota et al. The NoCRay graphic accelerator: A case-study for MP-SoC network-on-chip design methodology
Sterling et al. The “MIND” scalable PIM architecture
KR20090016643A (ko) 비동기적 절전형 컴퓨터

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