多处理器系统以及多处理器系统的同步方法

文档序号:6592746阅读:493来源:国知局
专利名称:多处理器系统以及多处理器系统的同步方法
技术领域
本发明涉及多处理器系统及其同步方法,特别涉及在利用硬件来进行障栅同步 (barrier synchronization)处理的多处理器系统及其同步方法中应用而有益的技术。
背景技术
例如,在专利文献1中,记载了由在带广播功能的系统总线上经由总线接口连接 的N个处理器所构成的多处理器系统中,进行各处理器间的同步的方式。具体而言,各处理 器具备各比特对应于N个处理器的N比特的同步用寄存器。各处理器在自身的阶段完成时 对同步用寄存器的对应比特设定“1”,并且还经由系统总线通知其他处理器,其他处理器接 收该通知,进行同步用寄存器的更新。由此,各处理器能够通过识别同步用寄存器的所有比 特的“1”来进行同步处理。另外,在专利文献2中,记载了在分别包括多个处理器的多个集群(cluster)之间 设置集群间通信寄存器来进行集群之间的障栅同步的方式。在集群间通信寄存器中,设定 集群数,通过存在于各集群内的代表处理器对该集群数进行减1运算,能够在变为0的时刻 完成障栅同步处理。另外,在专利文献3以及专利文献4中,记载了通过在多处理器系统的共有存储器 上设置各处理器对应的同步标志(flag)区域来进行软件同步的方式。进而,在专利文献5 中,记载了在具备层次结构的高速缓存(cache)的多处理器系统中,利用该层次结构的高 速缓存来进行同步的方式。具体而言,例如,在处理器模块内,在CPUO与CPUl中分别设置 一次高速缓存,并在这两个一次高速缓存的上位设置共通的二次高速缓存的情况下,利用 在一次高速缓存上确保的标志变量来进行由CPUO执行的多个线程的同步,通过在二次高 速缓存上确保的标志变量来进行CPUO与CPUl的同步。另外,在非专利文献1中,记载了如下结构,该结构具有对P个处理器共通地设置 的1个P比特寄存器、以及对该P比特寄存器的值全部成为零的情况进行检测并将此时的 检测信号发送到P个处理器的检测电路等。在由P个处理器执行了并行处理之后进行障 栅同步的情况下,各处理器在自身的处理结束了的阶段中对P比特寄存器的对应比特写入 零。在所有处理器的处理完成了时,向所有处理器发送检测信号,所以由此能够实现障栅 同步。另外,在非专利文献1中,还示出了为了通过并行处理来进行多重循环,而设置有由 (P-I)组的P比特寄存器构成的寄存器阵列的结构。专利文献1 日本特开平2-105961号公报;专利文献2 日本特开平10-91591号公报;专利文献3 日本特开2000-305919号公报;专利文献4 日本特开2005-71109号公报;专利文献5 日本特开2006-259821号公报;非 专利 文献 1 :C. J. Beckmann, C. D. Polychronopoulos, "Fast barrier synchronization hardware",Supercomputing'90. Proceedings of Publication,1990 年11 月,P. 180-189。

发明内容
近年来,由于伴随半导体芯片的微细化、高速化的泄漏电流、功耗等问题,作为替 代提高动作频率的性能提高对策,使用多处理器(或者多核)技术。在多处理器系统中,通 常,将被称为任务(task)或进程(process)等的一个处理内容分别分割成称为线程等的多 个处理单位,并将该多个线程适宜地分配到各处理器,从而通过多个处理器来执行并行处 理。因此,需要所谓障栅同步,即在多个线程之间,产生例如针对某个线程的处理结果使用 其他线程来进行进一步处理这样的依存关系,而与其相伴地,进行相互依存的处理的多个 处理器在同步点等候。这样的障栅同步既可以由硬件来实现,也可以由软件来实现。例如,在上述专利文 献3、专利文献4以及专利文献5中,记载有通过软件来实现障栅同步的方法。在通过软件 来实现的方法中,总体而言,是在各处理器中共有的存储器上设定标志变量。各处理器能够 通过在自身的处理完成了时更新并参照该标志变量,从而识别自身以外的处理器的处理是 否结束。但是,在通过软件来实现的方法中,各处理器访问共有存储器上的共通标志变量, 所以为了完成障栅同步而需要时间。即,除了单纯的存储器访问时间以外,还需要较长的直 到得到对共有存储器的访问权为止的调停时间。例如,虽然如专利文献5所述,通过在特定 的高速缓存存储器上确保标志变量而实现某种程度的高速化,但例如需要高速缓存存储器 的特定单元、在产生回写(write back)时速度将降低等,从而需要特殊的高速缓存存储器 的控制等。另外,例如,在上述专利文献1、专利文献2以及非专利文献1中,记载了通过硬件 来实现障栅同步的方法。在专利文献2、非专利文献1的方法中,总体而言,是对多个处理器 设定共通的标志寄存器、并通过该标志寄存器的写入、参照来进行障栅同步。在该情况下, 需要排他地控制对该标志寄存器的访问,所以在该处理中有可能花费时间。另一方面,在专 利文献1的方法中,各处理器具备上述的标志寄存器,并通过共通的系统总线来保持各个 标志寄存器的一致性(coherency)(—贯性)。但是,如果使用系统总线,则需要用于确保总 线的访问权的调停时间,所以难以实现高速的障栅同步处理。本发明是鉴于这样的情况而完成的,其目的之一在于,提供一种能够实现高效的 障栅同步处理的多处理器系统及其同步方法。本发明的上述以及其他目的与新的特征根据 本说明书的记述以及附图将更加明确。若简单说明本申请中公开的发明中的代表性的发明的概要,则如下所述。本发明的一个实施方式的多处理器系统具有N(N ^ 2)个处理器;在该N个处理 器内分别设置的N个障栅写寄存器(第1寄存器)及N个障栅读寄存器(第2寄存器);以 及第1单元。第1单元在N个处理器内中的某一个处理器伴随障栅同步而对自身中设置的 障栅写寄存器写入了第1信息时,将该第1信息传送到其他处理器中设置的障栅读寄存器。 该第1单元例如通过使N个障栅写寄存器直接布线到N个障栅读寄存器的布线块来实现。如果使用这样的结构,则能够通过某个处理器将表示自身的同步等待的第1信息 写入到自身的障栅写寄存器,使该第1信息立即反映到其他处理器的障栅读寄存器。因此,其他处理器能够通过读取自身的障栅读寄存器,立即得知自身以外的处理器是否为同步等 待,所以能够实现高速的障栅同步处理。此时,不经由系统总线而是通过使用专用的布线块 从障栅写寄存器向障栅读寄存器传送信息,而实现了高速化。另外,各处理器在将自身的同步等待通知到其他处理器时,对自身的障栅写寄存 器写入第1信息,在得知了其他处理器的同步等待的状况时,读取自身的障栅读寄存器即 可,所以无需对CPU追加特殊的命令组,而能够低成本地实现障栅同步处理。进而,在自身 以外的处理器对障栅写寄存器写入了第1信息时,该第1信息被直接反映到自身的处理器 内的障栅读寄存器而不是中断等间接的方式,所以自身的处理器不会伴随该反映而阻碍自 身当前进行着的处理。由此,能够实现高效的障栅同步处理。另外,在本发明的一个实施方式的多处理器系统中,在各处理器内具备多个组的 上述那样的障栅写寄存器以及障栅读寄存器。由此,例如,在执行包括多个层次的障栅同步 处理的处理内容时,能够针对各层次的每一个分配1个组,能够容易地实现这样的障栅同 步处理。进而,在本发明的一个实施方式的多处理器系统中,上述那样的障栅写寄存器由 多个比特构成。由此,作为版本号,能够设定多个种类的同步点,能够灵活地应对于有高度 或者复杂的障栅同步处理。例如,能够对该障栅写寄存器的多个比特的各比特,分配上述那 样的多个层次的各层次。另外,如果如上所述设置多个组的障栅写寄存器以及障栅读寄存 器,并且与上述那样的版本号并用,则可以更灵活地对应于更高级或者复杂的障栅同步处 理。若简单说明通过本申请中公开的发明中的代表的发明而得到的效果,则如下所 述。通过使用本发明的一个实施方式的多处理器系统,能够实现高效的障栅同步处理。


图1是在本发明的实施方式1的多处理器系统中,示出其整体结构的一个例子的 框图。图2是在本发明的实施方式1的多处理器系统中,示出其主要部的结构例的概略 图。图3是在本发明的实施方式1的多处理器系统中,示出其主要部的其他结构例的 概略图。图4是在图2以及图3的多处理器系统中,示出其动作的一个例子的说明图。图5是示出图4中的障栅同步处理的详细的处理内容的一个例子的说明图。图6是在图2以及图3的多处理器系统中,示出其动作的另一例子的说明图。图7是在本发明的实施方式2的多处理器系统中,示出其主要部的结构例的概略 图。图8是在本发明的实施方式3的多处理器系统中,示出其主要部的结构例的概略 图。图9是示出使用了图8的结构例的情况下的障栅同步处理的动作例的说明图。
图10是示出图9中的障栅同步处理的更详细的处理内容的一个例子的说明图。图11是在本发明的实施方式4的多处理器系统中,示出其主要部的结构例的概略 图。图12是在图11的多处理器系统中,示出其动作的一个例子的说明图。图13是在图11的多处理器系统中,示出其动作的另一例子的说明图。图14是在图11的多处理器系统中,示出动作的又一例子的说明图。图15是在本发明的实施方式4的多处理器系统中,示出将图12变形的动作例的 说明图。图16是在本发明的实施方式5的多处理器系统中,示出其主要部的结构例的概略 图。图17是在图16的多处理器系统中,示出其动作的一个例子的说明图。图18是在图16的多处理器系统中,示出其动作的另一例子的说明图。图19是在图18的动作例中,示出其障栅同步处理中使用的详细的源代码的一个 例子的说明图。图20是在本发明的实施方式6的多处理器系统中,示出使用了图16的结构例的 其他动作的一个例子的说明图。图21是在本发明的实施方式7的多处理器系统中,示出其主要部的结构例的概略 图。图22是在图21的多处理器系统中,示出其使用例的说明图。
具体实施例方式以下,根据附图,对本发明的实施方式进行详细说明。在用于说明实施方式的所有 附图中,对同一部件原则上附加同一符号,省略其的反复说明。另外,在以下的实施方式中, 为便于说明,在需要时分割成多个部分或者实施方式来进行说明,但除了特别明示的情况 以外,它们并不是相互没有关系,一方与另一方的一部分或者全部处于变形例、详述、补充 说明等关系。另外,在以下的实施方式中,在言及要素的数字等(包括个数、数值、量、以及范围 等)的情况下,除了特别明示的情况以及原理上限定于特定的数字的情况等以外,不限于 该特定的数字,而既可以是特定的数字以上也可以是其以下。进而,在以下的实施方式中, 其结构要素(还包括要素步骤等)除了特别明示的情况以及周知在原理上明确是必须的情 况等以外,当然未必是必须的。同样地,在以下的实施方式中,在言及构成要素等的形状、位 置关系等时,除了特别明示的情况以及周知在原理上明确地不是那样的情况等以外,还包 括实质上与其形状等近似或者类似的发明等。其对于上述数值以及范围也是同样的。(实施方式1)图1是在本发明的实施方式1的多处理器系统中,示出其整体结构的一个 例子的框图。图1所示的多处理器系统具备例如包括处理器等的半导体芯片CP、 SRAM (Static Random Access Memory,静态随机访问存储器)等外部存储器MEMl以及 DDR2-SDRAM(Double Data Rate 2-Synchronous Dynamic Random Access Memory,双倍数 据传输率同步动态随机存储器)等外部存储器MEM2。半导体芯片CP虽然没有特别制限,但
9在硅等的半导体基板中通过公知的CMOS制造方法来形成。 在半导体芯片CP中,虽然没有特别制限,但包括系统总线SHWY。在该SHWY上,连接 了多个(此处为两个)集群CLS0、1、存储器控制器LBSC、DBSC、共有存储器CSM、DMA (Direct Memory Access,存储器直接访问)控制器DMAC0、DMAC1、以及外围总线桥HPB等。在经由了 HPB的前端,连接了时钟生成部CPG、通用IO接口部GPI0、定时器部TMUO 3、以及中断控 制器INTC等。存储器控制器LBSC对外部存储器(SRAM)MEMl进行控制,存储器控制器DBSC 对外部存储器(DDR2-SDRAM)MEM2进行控制。另外,集群在概念上是指,通过所谓集群连接 而分散的各个系统单位,一般根据可靠性、高速性的观点来使用。在集群CLSO中,包括侦听总线(snoop bus) SNBO以及对其进行控制的侦听总 线控制器SNC0。在侦听总线SNBO上,连接了多个(此处是4个)处理器(CPU=Central Processing Unit,中央处理单元)CPU#0 #3。SNBO以及SNCO对包含在各CPU#0 #3中 的高速缓存存储器的更新动作等进行监视,进行控制以便能够在各CPU#0 #3之间维持高 速缓存存储器的一致性。这样,通过不经由系统总线SHWY而对高速缓存存储器的一致性进 行控制,实现了系统整体的高速化。另外,在集群CLSO中,还包括调试(debug)控制器DBGO寸。各CPU#0 #3分别包括CPU模块CPU_MD、浮动小数点数运算部FPU、高速缓存控 制器CCN、系统总线用接口 BIC、用户存储器URAM、本地存储器IL、0L、以及一次高速缓存存 储器1$、0$等。各CPU#0 #3将自身的一次高速缓存存储器1$、0$作为最下位存储器而 进行期望的处理。此时,如果产生针对上位存储器的回写等,则通过SHWY而产生对外部存 储器MEM1、MEM2等的访问。另外,此处,简化地仅示出一次高速缓存存储器,但当然也可以 在集群CLSO内设置在各CPU#0 #3中成为共通的二次高速缓存存储器等。集群CLSl的结构与集群CLSO相同。S卩,在集群CLSl中,包括侦听总线SNBl以及 侦听总线控制器SNC1,在SNBl上,连接了多个(此处是4个)处理器CPU#4 #7。另外, 在集群CLSl中,还包括调试控制器DBGl等。各CPU#4 #7内的结构与集群CLSO的情况 相同,所以省略详细的说明。另外,此处,虽然示出了 4CPUX2集群的多处理器(多核)系 统的结构例,但当然能够适宜地改变集群内的CPU数、集群数等。图2是在本发明的实施方式1的多处理器系统中,示出其主要部的结构例的概略 图。在图2所示的多处理器系统中,除了由图1所示的处理器CPU#0 #3构成的集群CLS0、 与由处理器CPU#4 #7构成的集群CLSl以外,还具备布线块WBLK0、WBLKl。各CPU#0 #7分别具备1比特的障栅写寄存器BARW(第1寄存器)、和具有与CPU数(此处是8个) 对应的比特数(此处是8比特)的障栅读寄存器BARR(第2寄存器)。布线块WBLKO使来自CLSO内的CPU#0 #3中包含的各BARW的布线(4比特), 分别以广播的方式,连接到包含在CPU#0 #3中的各BARR内的特定的4比特(例如比特
[3]),并且向布线块WBLKl延伸。同样地,布线块WBLKl使来自CLSl内的CPU#4 #7中包含的各BARW的布线(4比特),分别以广播的方式,连接到包含在CPU#4 #7中的 各BARR内的特定的4比特(例如比特[4] [7]),并且向布线块WBLKO延伸。另外,WBLKO 使从WBLKl延伸来的布线(4比特),分别以广播的方式,连接到包含在CPU#0 #3中的各 BARR内的剩余的4比特(例如比特[4] [7])。同样地,WBLKl使从WBLKO延伸来的布线 (4比特),分别以广播的方式,连接到包含在CPU#4 #7中的各BARR内的剩余的4比特(例如比特
[3])。因此,例如,在CPU#0对自身的BARW写入了信息的情况下,该写入的信息经由布 线块WBLKO、WBLKl,一起向包含在CPU#0 #7中的各BARR内的特定的1比特(例如比特
)反映。另外,例如,在CPU#7对自身的BARW写入了信息的情况下,该写入的信息经由布 线块WBLKO、WBLKl,一起向包含在CPU#0 #7中的各BARR内的特定的1比特(例如比特 [7])反映。另外,虽然没有特别限定,但WBLKO能够在图1中的侦听总线控制器SNCO内形 成,WBLKl能够在侦听总线控制器SNCl内形成。图3是在本发明的实施方式1的多处理器系统中,示出其主要部的其他结构例的 概略图。图3所示的多处理器系统与图2的情况不同,是8个CPU#0 #7没有通过集群 CLSO, CLSl进行层次化而呈平面状态的情况的结构例。在图3的结构例中,与图2的情况 同样地,包含在各CPU#0 #7中的1比特的障栅写寄存器BARW与8比特的障栅读寄存器 BARR相互连接。此时的连接关系实质上与图2的情况相同,但布局概念与图2的情况不同。S卩,在图2的情况下,与多个集群分别对应地设置有多个布线块。于是,在与某个 集群对应的布线块内,进行在自身的集群内包含的BARW与BARR的相互连接,将自身的集群 中的BARW的信息集中成集群信息而传送到其他集群,并且接收来自其他集群的集群信息, 而传送到自身的集群的BARR。另一方面,在图3的情况下,与各CPU#0 #7对应地设置了 一个布线块WBLK3。另外,在WBLK3中,来自包含在CPU#0 #7中的各BARW的布线(8比 特)与包含在CPU#0 #7中的各BARR的8比特分别连接。另外,在图2、图3的结构例中,障栅写寄存器BARW、障栅读寄存器BARR例如能够 用通过CPU执行寄存器访问命令而能够访问的控制寄存器等来实现、或者用通过CPU执行 存储器访问命令而能够访问的存储器映射寄存器等来实现。在使用了存储器映射寄存器的 情况下,无需追加CPU的命令组等,所以与用控制寄存器等来实现的情况相比,从成本方面 或者容易性的观点来说更有优势。存储器映射寄存器虽然没有特别限定,但例如设置在图 1的高速缓存控制器CCN内。图4是在图2以及图3的多处理器系统中,示出其动作的一个例子的说明图。在 多处理器系统中,例如,通过使用图4所示那样的处理内容,能够实现省电化。在图4中, 首先,所有CPU#0 #7通过高速时钟频率并行地执行需要高速动作的规定的处理(线程) (S401)。此时,各CPU在完成了自身的处理之后,执行进行等候自身以外的CPU的障栅同步 处理(S402)。如果障栅同步处理完成,则主CPU(例如CPU#0)等发出降低所有CPU的时钟 频率的命令(S403)。接收该命令,例如,图1的时钟生成部CPG等降低时钟频率。接下来,所有CPU#0 #7通过低速的时钟频率并行地执行无需高速动作的规定的 处理(线程)(S404)。此时,各CPU在完成了自身的处理之后,执行进行等候自身以外的CPU 的障栅同步处理(S405)。如果障栅同步处理完成,则主CPU(例如CPU#0)等发出提高所有 CPU的时钟频率的命令(S406)。之后,所有CPU#0 #7再次通过高速时钟频率并行地执行 需要高速动作的规定的处理(S407)。图5是示出图4中的障栅同步处理的详细的处理内容的一个例子的说明图。在图 5中,为简化说明,将所有CPU数假设为4个(CPU#0 #3)来进行说明。首先,在各CPU执 行的代码内,在进行规定的处理的代码(相应于“do enddo”)之后,附加了用于障栅同步 处理的代码。此处,用于障栅同步处理的代码是“inv rm”与“checkr0-r3 = 1111”。
“ inv rm”表示使障栅写寄存器BARW的信息反转的命令。“rm”表示与BARW对应的 软件上的寄存器字段,标号“m”表示CPU号码。例如,“inv r0”表示使CPU#0的BARW的信 息反转的命令,“inv rl”表示使CPU#1的BARW的信息反转的命令。"checkr0-r3 = 1111” 表示直到障栅读寄存器BARR的4比特的信息全部为“1”为止待机的命令。在该命令中,寄 存器字段“r0-r3”表示BARR,而BARW与BARR相互连接,能够在软件上,通过一个寄存器字 段来处理。即,例如,“r0”是CPU#0的BARW,并且也是包含在CPU#0 #3中的BARR的比特
,“r3”是CPU#3的BARff,并且也是包含在CPU#0 #3中的BARR的比特[3]。在图5的例子中,首先,最初完成了规定的处理的CPU#0伴随之后的“inv rm”命 令而使自身的BARW(设初始值为零)反转为“1”。该信息通过上述布线块WBLK反映到所有 CPU的BARR(在图5的例子中反映到比特
)。之后,CPU#0执行“check r0_r3 = 1111” 命令,但由于自身的BARR的值是“1000”,所以成为待机状态。接下来,完成了规定的处理 的CPU#2伴随之后的“inv rm”命令而使自身的BARW(设初始值为零)反转为“1”。该信息 通过上述布线块WBLK反映到所有CPU的BARR(在图5的例子中反映到比特[2])。之后, CPU#2执行“check r0-r3 = 1111”命令,但由于自身的BARR的值是“1010”,所以成为待机 状态。同样地,由于自身的BARR的值是“1010”,所以CPU#0也保持待机状态。接下来,完成了规定的处理的CPU#1伴随之后的“inv rm”命令而使自身的 BARW (将初始值设为零)为“1”。该信息通过上述布线块WBLK反映到所有CPU的BARR (在 图5的例子中反映到比特[1])。之后,CPU#1执行“check r0_r3 = 1111”命令,但由于自 身的BARR的值是“1110”,所以成为待机状态。同样地,由于自身的BARR的值是“1110”,所 以CPU#0以及CPU#2也保持待机状态。最后,完成了规定的处理的CPU#3伴随之后的“inv rm”命令而使自身的BARW(将 初始值设为零)反转为“1”。该信息通过上述的布线块WBLK反映到所有CPU的BARR(在 图5的例子中反映到比特[3])。之后,CPU#3执行“check r0_r3 = 1111”命令,由于自身 的BARR的值是“ 1111 ”,所以进入到以后的处理。同样地,由于自身的BARR的值是“ 1111”, 所以CPU#0、CPU#1以及CPU#2也进入到以后的处理。由此,障栅同步处理完成。图6是在图2以及图3的多处理器系统中,示出其动作的另一例子的说明图。在 图6中,各CPU#0 #7进行规定的处理(S601)—障栅同步处理(S602)—规定的处理 (S603)—障栅同步处理(S604)—规定的处理(S605)—障栅同步处理(S606)。如果将各 CPU#0 #7中的障栅写寄存器BARW以及障栅读寄存器BARR的初始值设为“0”,则在如上 所述使用“inv rm”命令来进行障栅同步处理时,在障栅同步处理(S602)中BARR的8比特 全部是“1”的情况成为同步点。然后,在接下来的障栅同步处理(S604)中,BARR的8比特 全部是“O”的情况成为同步点,在进一步接下来的障栅同步处理(S606)中,BARR的8比特 全部是“1”的情况成为同步点。这样,通过一边使“1”与“O”反转一边设定同步点,例如,与将同步点固定为“1” 那样的情况相比,实现了障栅同步处理的高速化。即,在完成了某障栅同步处理之后,无需 将障栅写寄存器BARW以及障栅读寄存器BARR复位成“O”的处理。如上所述,本实施方式1的多处理器系统,在各CPU内,设置有将自身的同步等待 的信息通知到其他CPU的第1寄存器(BARW)以及保持从其他CPU通知来的第1寄存器的 信息的第2寄存器(BARR),该第1寄存器的信息通过直接性的布线(例如金属布线层等)反映到第2寄存器。另外,直接性的布线不必须仅由布线构成,例如,也包括通过用于调整 驱动能力的缓冲器电路、触发器电路等也反应的情况等实质上起作用的结构。如果使用这 样的结构,则代表性地,得到(1)能够实现时间上高效的障栅同步处理、以及(2)能够利用 低成本的硬件来实现障栅同步处理等效果。关于(1),在如图5所示,例如CPU#0为了通知同步等待而对第1寄存器(BARW)写 入了信息的情况下,并非中断等那样的间接性的方法,而通过直接性的布线自动地更新其 他CPU#1 #3内的第2寄存器(BARR)的信息。因此,CPU#1 #3即使从CPU#0接收到同 步等待的通知也不会阻碍当前执行着的处理,而能够维持高的处理效率。另外,如果最后完 成了处理的CPU#3对第1寄存器(BARW)写入了信息,则该信息通过直接性的布线立即反映 到各CPU的第2寄存器(BARR),所以能够缩短从CPU#3的处理完成至通过所有CPU进行的 障栅同步处理的完成为止所需的时间。进而,伴随这样的障栅同步处理,各CPU访问设置在 自身内部的第1以及第2寄存器即可,所以与访问自身以外的场所的情况相比,还可以缩短 访问时间。于是,通过如图6所示在进行反转动作的同时设定同步点,也实现时间上的效率 化。关于⑵,本实施方式1的多处理器系统,在各CPU的内部中设置第1寄存器 (BARff)以及第2寄存器(BARR),而能够通过该自身的寄存器操作来实现障栅同步处理。因 此,无需访问自身以外的场所那样的特殊命令,实现了低成本化。进而,通过用存储器映射 寄存器来实现第1以及第2寄存器,能够通过执行各CPU —般具备的存储器访问命令来实 现障栅同步处理,所以能够进一步实现低成本化。另一方面,作为比较例,构成为在使用了上述专利文献1那样的技术的情况下,通 过系统总线来进行该同步等待的通知,每当进行该通知时,检查表示其他CPU的同步等待 状况的同步寄存器,所以各CPU伴随该通知而阻碍当前正在执行的处理。进而,在系统总线 的总线权的调停中需要时间。另外,作为比较例,在使用了上述专利文献2或非专利文献 1那样的技术的情况下,由于对相对各CPU共通的标志寄存器进行访问,所以与访问自身内 部的寄存器的情况相比,有可能需要更多的时间,而且还有可能在其排他控制中需要时间。 另外,在非专利文献1的技术中,只要构成为能够独立且并行地写入标志寄存器的各比特, 则无需寄存器访问的排他控制。但是,作为其他问题,如果如该技术那样,使用对设置在CPU 外部的共通的标志寄存器进行访问那样的结构,则产生在各CPU的命令组中装入特殊命令 (障栅同步命令等)的必要性,产生成本的增加。(实施方式2)图7是在本发明的实施方式2的多处理器系统中,示出其主要部的结构例的概略 图。在上述实施方式1中,示出了使障栅写寄存器BARW与障栅读寄存器BARR为不同寄存 器(在地址映射寄存器的情况下,个别地分配了地址的寄存器)的结构例。另一方面,图7 所示的多处理器系统的特征在于,将上述图3中的障栅写寄存器BARW与障栅读寄存器BARR 合并,设为共通的障栅寄存器BAR。在图7中,多个(此处是8个)处理器CPU#0 #7分别 具备8比特的障栅寄存器BAR。各障栅寄存器BAR中的同一比特彼此通过由布线块WBLK5 实现的直接性的布线而相互连接。即,例如,包含在CPU#0 #7中的8个BAR的比特
彼此相互连接,比特[1]彼此相互连接,同样地比特[2] 比特[7]也分别相互连接。各CPU#0 #7仅能够对自身的障栅寄存器BAR中的与自身对应的比特进行写访问,并且,能够对BAR的8比特进行读访问。即,例如,CPU#0仅能够对自身的BAR的比特
进行写访问,同样地,CPU#1、#2.....#7分别仅能够对自身的BAR的比特[1]、[2].....[7]
进行写访问。因此,各CPU#0 #7通过与在实施方式1中对障栅写寄存器BARW进行写入 的情况同样地,对自身的BAR中的与自身对应的比特进行写入,能够与实施方式1的情况同 样地进行障栅同步处理。以上,通过使用本实施方式2的多处理器系统,除了实施方式1中叙述那样的各种 效果以外,还可以削减寄存器等的面积成本,能够进一步降低硬件成本。但是,需要构成为 例如通过掩码写(mask write)功能、读修改写(read modify write)功能、或者针对各比 特的每一个分配地址来进行管理的功能等,仅能够对自身的BAR的特定1比特进行写入,所 以根据情况,需要新的控制电路、延长1比特写入命令的处理时间。(实施方式3)图8是在本发明的实施方式3的多处理器系统中,示出其主要部的结构例的概略 图。图8所示的多处理器系统的特征在于,将多个处理器CPU的一个(此处是CPU#0)作为 主CPU,以该主CPU为主而对其他CPU的同步等待的状况进行监视,从而与上述图3的情况 相比,削减了障栅读寄存器BARR的比特数。在图8中,作为主CPU的CPU#0具备1比特的障栅写寄存器BARW和7比特(此处 为了易于判别对应关系,省略比特
而设为比特[1] [7])的障栅读寄存器BARR。另一 方面,除其以外的CPU#1 #7具备1比特的障栅写寄存器BARW和1比特的障栅读寄存器 BARR。在布线块WBLK6中,CPU#0中的7比特的BARR的各比特和包含在CPU#1 #7中的 各BARW通过直接性的布线而分别连接。S卩,例如,CPU#0的BARR的比特[1]上连接CPU#1 的BARff,同样地,对比特[2]、比特[3]、…、比特[7]分别连接CPU#2、CPU#3、· · ·、CPU#7的 BARW。另外,在WBLK6中,CPU#0的BARW通过直接性的布线,以广播的方式连接到分别包含 在CPU#1 #7中的1比特的BARR。图9是示出使用了图8的结构例的情况下的障栅同步处理的动作例的说明图。 在图9中,各CPU#0 #7在执行了规定的处理(线程)之后(S901),进行障栅同步处理 (S902)。在障栅同步处理中,与上述图5以及图6的情况不同,在作为主CPU的CPU#0、与 除其以外的CPU#1 #7中,代码不同。即,在简单说明时,作为主CPU的CPU#0在确认了其 他CPU#1 #7的同步等待之后,对自身的BARW设置同步等待,其他CPU#1 #7在自身的 BARR中对该CPU#0中的同步等待的设置一起进行检测,从而进行障栅同步处理。图10是示出图9中的障栅同步处理的更详细的处理内容的一个例子的说明图。此 处,为简化,假设4个CPU#0 #3的情况来进行说明。如图10所示,作为主CPU的CPU#0 在完成了规定的处理(相应于“do enddo”)之后,执行“check rl-r3 = 111”命令,接 下来执行“inv r0”命令。另一方面,其他CPU#1 #3分别在完成了规定的处理(相应于 “do enddo”)之后,执行“inv rm,,命令(m是CPU号码),接下来执行“check r0 = 1”命 令。在图10的例子中,首先,最初完成了规定的处理的CPU#0执行之后的“ check rl-r3 = 111”命令,但由于在其他CPU#1 #3的BARW中尚未设定同步等待标志,且与其相 伴地自身的BARR的值是“000” (设初始值为零),所以成为待机状态。接下来,完成了规定 的处理的CPU#2伴随之后的“inv rm”命令而使自身的BARW(设初始值为零)反转为“1”。
14该信息通过上述布线块WBLK6反映到CPU#0的BARR(图10的例子中反映到比特[2])。之 后,CPU#2执行“checkrO = 1 ”命令,但由于CPU#0对BARW尚未设定同步等待标志,且与 其相伴地自身的BARR的值是“0”,所以成为待机状态。另一方面,由于自身的BARR的值是 “010”,所以CPU#0也保持待机状态。接下来,完成了规定的处理的CPU#1伴随之后的“inv rm”命令而使自身的 BARW(设初始值为零)反转为“1”。该信息经由上述布线块WBLK6反映到CPU#0的BARR(在 图10的例子中反映到比特[1])。之后,CPU#1执行“check r0 = 1”命令,但由于CPU#0在 BARff中尚未设定同步等待标志,且与其相伴地自身的BARR的值是“0”,所以成为待机状态。 另一方面,由于自身的BARR的值是“110”,所以CPU#0也保持待机状态。最后,完成了规定的处理的CPU#3与之后的“ inv rm”命令相伴而使自身的 BARW(将初始值设为零)反转为“1”。该信息经由上述布线块WBLK6反映到CPU#0的 BARR(在图10的例子中反映到比特[3])。之后,CPU#3执行“check r0 = 1”命令,但由于 CPU#0在BARW中尚未设定同步等待标志,且与其相伴地自身的BARR的值是“0”,所以成为 待机状态。另一方面,由于自身的BARR的值成为“111”,所以CPU#0伴随之后的“inv rO” 命令而使自身的BARW (将初始值设为零)反转为“1”,进入到以后的处理。另外,与其并行 地,CPU#0的BARW的信息经由上述布线块WBLK6立即反映到CPU#1 #3的BARR。由此,由 于自身的BARR成为“1”,所以处于待机状态的CPU#1 #3进入到以后的处理。这样障栅同 步处理完成。以上,通过使用本实施方式3的多处理器系统,除了实施方式1中叙述那样的各种 效果以外,还可以大幅削减寄存器的面积成本,能够进一步降低硬件成本。另外,如果与实 施方式1的情况相比,则从最后的CPU结束处理到所有CPU完成同步的时间有可能稍微延 长,但仍然能够确保充分的高速性。(实施方式4)图11是在本发明的实施方式4的多处理器系统中,示出其主要部的结构例的概略 图。图11所示的多处理器系统的特征在于,与图2的结构例相比,在各处理器CPU#0 #7 内,具备多组(此处为3组)的障栅写寄存器BARW以及障栅读寄存器BARR。图11的多处理器系统与图2的情况同样地,包括由CPU#0 #3构成的集群CLS0、 与由CPU#4 #7构成的集群CLSl。各CPU#0 #7分别与图2的情况不同,而包括1比 特父3组的障栅写寄存器841^
[2]、与8比特X3组的障栅读寄存器BARR
[2]。集群CLSO用的布线块WBLKlO使来自在CPU#0 #3中包含的各BARW
的组
用的4比特布线,分别以广播的方式,连接到在CPU#0 #3中包含的各BARR
内的特定的 4比特(例如比特
[3]),并且向布线块WBLKll延伸。另外,同样地,使来自在CPU#0 #3中包含的各BARW[1]的组[1]用的4比特布线、以及来自各BARW[2]的组[2]用的4比 特布线,分别连接到在CPU#0 #3中包含的各BARR[1]内的例如比特
[3]、以及各 BARR[2]内的例如比特
[3]。另夕卜,WBLKlO使上述组[1]用以及组[2]用的4比特 布线向布线块WBLKll延伸。集群CLSl用的布线块WBLKll使来自在CPU#4 #7中包含的各BARW
的组
用的4比特布线,以广播的方式,连接到在CPU#4 #7中包含的各BARR
内的特定的4 比特(例如比特[4] [7]),并且向布线块WBLKlO延伸。另外,同样地,使来自在CPU#4 #7中包含的各BARW[1]的组[1]用的4比特布线、以及来自各BARW[2]的组[2]用的4比 特布线,分别连接到在CPU#4 #7中包含的各BARR[1]内的例如比特[4] [7]、以及各 BARR[2]内的例如比特[4] [7]。另夕卜,WBLKll使这些组[1]用以及组[2]用的4比特 布线向布线块WBLKlO延伸。WBLKlO使从WBLKll延伸来的组
周的4比特布线,以广播的方式,连接到在 CPU#0 #3中包含的各BARRW]内的特定的4比特(例如比特[4] [7])。同样地,使 从WBLKll延伸来的组[1]用的4比特布线、以及组[2]用的4比特布线,分别连接到在 CPU#0 #3中包含的各BARR[1]内的例如比特[4] [7]、以及在CPU#0 #3中包含的各 BARR[2]内的例如比特[4] [7]。WBLKll使从WBLKlO延伸来的组
用的4比特布线, 分别以广播的方式,连接到在CPU#4 #7中包含的各BARR
内的特定的4比特(例如比 特
[3])。同样地,使从WBLKlO延伸来的组[1]用的4比特布线、以及组[2]用的4 比特布线,分别连接到在CPU#4 #7中包含的各BARR[1]内的例如比特
[3]、以及在 CPU#4 #7中包含的各BARR[2]内的例如比特
[3]。图12是在图11的多处理器系统中,示出其动作的一个例子的说明图。图12的例 子示出例如通过8个CPU来分担执行某个循环处理的情况下的动作例。在该情况下,如图 12所示,通过编译程序(coplier),以例如在由8个CPU执行的第1层次的循环处理MTl中 包括由4个CPU执行的第2层次的循环处理MT2_1、MT2_2,进而,在其中包括由两个CPU执 行的第3层次的循环处理MT3_1 MT3_4的方式,分配每一个CPU的处理。由此,需要针对 各循环层次的每一个使用不同的资源来进行障栅同步处理。因此,如图11所示,通过设置 与该层次数对应的组数的障栅写寄存器BARW以及障栅读寄存器BARR,能够容易地实现这 样的循环处理。在图12中,CPU#0、#1在分别进行了规定的循环处理(do enddo)之后,使用自 身的组
用的障栅写寄存器BARWW]以及障栅读寄存器BARR
来进行障栅同步处理 (BARRIER(O-l))。同样地,CPU#2、#3在进行了规定的循环处理(do enddo)之后,使用自 身的BARWW]以及BARR
来进行障栅同步处理(BARRIER(0_2)),CPU#4、#5以及CPU#6、 #7也同样地分别进行障栅同步处理(BARRIER(0-3))以及障栅同步处理(BARRIER(0_4))。这样在两个CPU之间的障栅同步处理完成之后,在4个CPU之间进行障栅同步 处理。S卩,CPU#0 #3使用自身的组[1]用的障栅写寄存器BARW[1]以及障栅读寄存器 BARR[1]来进行障栅同步处理(BARRIER(l-l))。同样地,CPU#4 #7使用自身的BARW[1] 以及BARR[1]来进行障栅同步处理(BARRIER(1-2))。在4个CPU之间的障栅同步处理完成 之后,在8个CPU之间进行障栅同步处理。S卩,CPU#0 #7使用自身的组[2]用的障栅写 寄存器BARW[2]以及障栅读寄存器BARR[2]来进行障栅同步处理(BARRIER(2))。此处,在障栅同步处理(BARRIER(O-l))中,CPU#0、#1首先通过例如“inv rmW]”命令,来进行自身的BARW
的反转(初始值是‘0,)。接下来,等待由于“check r0
-rl
= 11”自身的BARR
的第0比特(即CPU#0的BARff
)与第1比特(即 CPU#1的BARWW])都变为‘1,。另外,虽然未图示,但在障栅同步处理(BARRIER (0-2))中, 同样地,CPU#2、#3等待由于“check r2
-r3
= 11”而自身的BARR
的第2比特(即 CPU#2 的 BARW
)与第 3 比特(即 CPU#3 的 BARff
)都变为 ‘1,。另夕卜,在障栅同步处理(BARRIER(l-l))中,CPU#0 #3首先,通过例如“invrm[l]”命令,进行自身的BARW[1]的反转(初始值是‘0,)。接下来,等待由于“check r0[l]-r3[l] = 1111”而自身的 BARR[1]的第 0 比特(CPU#0 的 BARW[1])、第 1 比特(CPU#1 的 BARW[1])、第 2 比特(CPU#2 的 BARW[1])、以及第 3 比特(CPU#3 的 BARW[1])都成为 ‘1,。 进而,在障栅同步处理(BARRIER⑵)中,CPU#0 #7首先,通过例如“inv rm[2]”命令, 进行自身的BARW[2]的反转(初始值是‘0,)。接下来,等待由于“check r0[2]-r7[2]= 11111111 ”而自身的BARR [2]的第0比特 第7比特(对应于CPU#0 #7的BARW [2])都 成为‘1’。这样,通过设置多个组的障栅写寄存器BARW以及障栅读寄存器BARR,各CPU能够 执行包括通过较少的CPU数来逐次进行同步(即分组)而最终在所有CPU中进行同步那样 的多个层次的障栅同步处理的处理内容(线程)。另外,作为组数,在如图12所示,编译程 序在对整体进行2分割的同时分别分配层次的情况下,优选将CPU数作为i,设置(log2i) 组以上。即在i = 8的情况下设置3组,优选在3组以上。但是,由于在2个CPU之间,还 可以容易地实现使用了软件的同步,所以也可以根据情况而设为((lo&i)_l)组以上。艮口, 也可以根据情况对i = 8设置2组以上。图13是在图11的多处理器系统中,示出其动作的另一例子的说明图,图14是在 图11的多处理器系统中,示出其动作的又一例子的说明图。在图13的例子中,CPU#0与 CPU#1使用组
用的BARWW]以及BARR
来进行障栅同步处理(BARRIER(0-1))。然后, 加上CPU#2与CPU#3,CPU#0 #3使用组[1]用的BARW [1]以及BARR [1]来进行障栅同步 处理(BARRIER(l-l))。另一方面,与CPU#0 #3的处理并行地,CPU#4与CPU#5使用组[1]用的BARW[1] 以及BARR[1]来进行障栅同步处理(BARRIER(1-2))。然后,最后加上CPU#6、#7,CPU#0 #7使用组[2]用的BARW[2]以及BARR[2]来进行障栅同步处理(BARRIER(2))。在图14的例子中,CPU#0与CPU#1在使用组
用的BARWW]以及BARR
进行 了障栅同步处理(BARRIER(O))之后,使用组[1]用的BARW[1]以及BARR[1]来进行障栅 同步处理(BARRIER(l))。另一方面,与其并行地,CPU#2与CPU#3使用组
用的BARW
以及BARR
来进行了障栅同步处理(BARRIER(O))之后,使用组[1]用的BARW[1]以及 BARR[1]来进行障栅同步处理(BARRIER(l))。进而,与其并行地,CPU#4 #7使用组[1]用 的BARW[1]以及BARR[1]来进行障栅同步处理(BARRIER(l))。之后,CPU#0、#1使用组[2]用的BARW[2]以及BARR[2]来进行障栅同步处理 (BARRIER(2)),同样地,CPU#2 #4以及CPU#5 #7也分别使用组[2]用的BARW[2]以 及BARR[2]来进行障栅同步处理(BARRIER(2))。然后,最终,CPU#0 #7使用组
用的 BARff
以及BARR
来进行障栅同步处理(BARRIER(0))。如上所述,即使在各CPU分别进行复杂的分组的同时进行最终的障栅同步处理的 情况下,也可以通过各CPU具备多个组的障栅写寄存器BARW以及障栅读寄存器BARR而容 易地应对。另外,在图11的例子中,使各CPU的障栅读寄存器BARR成为相应于CPU数的8 比特结构,但当然,也可以如实施方式3 (图8 图10)的说明那样定义主CPU来削减BARR 的比特数。另外,还可以如实施方式2(图7)的说明那样合并障栅写寄存器BARW与障栅读 寄存器BARR。此处,以下说明如实施方式3那样定义了主CPU的情况下的结构例以及动作 例。
图15是在本发明的实施方式4的多处理器系统中,示出将图12变形后的动作例 的说明图。此处,例如,以CPU数是4个且在由4个CPU执行的循环处理MTl中包括由2个 CPU执行的循环处理MT2_1、MT2_2的情况为例子而进行说明。在图15中,CPU#0与CPU#1 在进行了规定的循环处理之后,进行障栅同步处理(BARRIER(Bi))。在障栅同步处理(BARRIER(Bl))中,CPU#1在结束了自身的循环处理之后,通过 "inc rl[l]”命令使自身的BARW[1]增加+1(换言之是使BARW[1]反转)。CPU#0是主 CPU,在结束了自身的循环处理之后,通过“check rl[l]”命令,确认该CPU#1的BARW[1]有 无反转。在有反转的情况下,CPU#0使自身的BARW[1]增加+1 (使BARW[1]反转),CPU#1 通过“check r0[l]”命令,对该CPU#0的BARW[1]的反转进行检测。由此,障栅同步处理 (BARRIER(Bi))完成。另外,CPU#2以及CPU#3也同样地,例如以CPU#2为主CPU而进行障 栅同步处理(BARRIER (B2))。接下来,由CPU#0 #3进行障栅同步处理(BARRIER (B3))。在障栅同步处理 (BARRIER(B3))中,CPU#1 通过“inc rl
,,命令,使自身的 BARW
增力口+1 (使 BARW
反转),同样地,CPU#2以及CPU#3也分别通过“inc r2
”命令以及“inc r3W]”命令,使 自身的BARW
反转。作为主CPU的CPU#0通过“check rl
”命令、“check r2
”命 令以及“check『3^)]”命令,确认该0 冊1 #3各自有无8々1^^0]的反转。在全部有反转 的情况下,CPU#0使自身的BARff
增加+1 (使BARff
反转),CPU#1 #3通过“check rOW] ”命令,对该CPU#0的BARWW]的反转进行检测。由此,障栅同步处理(BARRIER(B3)) 完成。因此,在这样的4个CPU的情况下,例如,CPU#0读取CPU#1 #3的BARW的值即 可,CPU#1读取CPU#0的BARW的值即可,CPU#2读取CPU#3与CPU#0的BARW的值即可,CPU#3 读取CPU#2与CPU#0的BARW的值即可。另外,在扩展到8个CPU的情况下,例如,CPU#0读 取CPU#1 #7的BARW的值即可,CPU#1读取CPU#0的BARW的值即可,CPU#2读取CPU#3 与CPU#0的BARW的值即可,CPU#3读取CPU#2与CPU#0的BARW的值即可。进而,CPU#4读 取CPU#5 #7与CPU#0的BARW的值即可,CPU#5读取CPU#4与CPU#0的BARW的值即可, CPU#6 读取 CPU#7 与 CPU#4 与 CPU#0 的 BARW 的值即可,CPU#7 读取 CPU#6 与 CPU#4 与 CPU#0 的BARW的值即可。因此,能够与它们对应地削减BARR的比特数。以上,通过使用本实施方式4的多处理器系统,除了此前的实施方式中叙述那样 的各种效果以外,进而,还可以容易地应对于包括多个层次的障栅同步处理的各CPU的处 理内容(线程)。特别,随着CPU数增加,这样的多个层次的障栅同步处理变得不可欠缺,在 该情况下通过使用本实施方式4的多处理器系统,能够得到有益的效果。(实施方式5)图16是在本发明的实施方式5的多处理器系统中,示出其主要部的结构例的概略 图。图16所示的多处理器系统的特征在于,与在实施方式1中叙述的图2的结构例相比,将 各CPU#0 #7内的障栅写寄存器BARW的比特数设为η比特(η彡2),将障栅读寄存器BARR 的比特数设为(8Χη)比特。S卩,是能够对BARW设定号码(版本号)的结构例。另外,与其 对应地,从集群CLSO用的布线块WBLK20向集群CLSl用的布线块WBLK21的布线条数以及 从WBLK21向WBLK20的布线条数分别是((8Xη)/2)条。进而,例如在WBLK20以及WBLK21 内,各CPU#0 #7内的BARW的η比特以广播的方式布线到BARR内的对应的η比特处,所
18以虽然未明示,但与图2相比,布线条数增加。关于除此以外的结构,与图2的情况相同,所 以省略详细的说明。图17是在图16的多处理器系统中,示出其动作的一个例子的说明图。在图17中, 与实施方式4中叙述的图12的情况同样地,对各CPU#0 #7,分配了由第1层次的循环处 理MTl、第2层次的循环处理MT2_1、MT2_2、以及第3层次的循环处理MT3_1 MT3_4构成 的处理内容。在图12的例子中,通过使用分别不同的组的BARW以及BARR来实现了该3个 层次的处理,但在图17的例子中,通过使用BARW以及BARR内的分别不同的比特来实现该 3个层次的处理。即,在图16中,设η = 3,而使BARW的各比特对应于1层次。在图17中,CPU#0与CPU#1在进行了规定的循环处理之后,进行障栅同步处 理(BARRIER(O-l))。同样地,CPU#2与#3、CPU#4与#5、以及CPU#6与#7也分别在进 行了规定的循环处理之后,进行障栅同步处理(BARRIER(0-2))、(BARRIER(0_3))、以及 (BARRIER(0-4))。以对BARff的η比特(3比特)设置了“χχ (χ ( 任意的值)”的情况为同 步点,而进行这些第3层次的障栅同步处理。S卩,例如,在障栅同步处理(BARRIER(O-I))中,CPU#O与CPU#1分别在结束了自身 的循环处理之后,首先,通过“inv rm”命令,使自身的BARW中的3比特中的特定的1比特 (此处设为右端的比特)反转。如果进行了反转,则各CPU#0 #7的BARR中的与CPU#0 和CPU#1对应的寄存器字段(相应于r0与rl)各自的3比特值经由布线块WBLK而变为 “xxl”。接下来,由于“check rO-rl = all “xxl””命令CPU#0与CPU#1分别,进行等候直 到BARR中的与CPU#0和CPU#1对应的寄存器字段(相应于rO与rl)这两方的3比特值成 为“xxl”为止。然后,在rO以及rl都成为“xxl”的阶段中,障栅同步处理(BARRIER(0-1)) 完成。这样在进行了第3层次的障栅同步处理之后,进行第2层次的障栅同步处理。 即,CPU#0 #3进行障栅同步处理(BARRIER (0-5)),CPU#4 #7进行障栅同步处理 (BARRIER(0-6))。以对BARW的η比特(3比特)设置了 “xlx”的情况为同步点,而进行这 些第2层次的障栅同步处理。例如,在障栅同步处理(BARRIER(0-5))中,各个CPU#0 #3首先通过“inv rm” 命令,使自身的BARW中的3比特中的特定的1比特(此处设为正中间的比特)反转。如 果进行了与该第2层次伴随的反转,则各CPU#0 #7的BARR中的与CPU#0 #3对应的 寄存器字段(相应于rO r3)各自的3比特值成为“xlx”。接下来,由于“checkrO-rf = all “xlx””命令CPU#0 #3分别,进行等候直到BARR中的与CPU#0 #3对应的寄存器字 段(相应于rO r3)各自的3比特值全部成为“xlx”为止。然后,在rO r3全部变为了 “xlx”的阶段中,障栅同步处理(BARRIER(0-5))完成。这样在进行了第2层次的障栅同步处理之后,进行第1层次的障栅同步处理。艮口, CPU#0 #7进行障栅同步处理(BARRIER(0-7))。以对BARW的η比特(3比特)设置了 “lxx”的情况为同步点,而进行该第1层次的障栅同步处理。在障栅同步处理(BARRIER(0-7))中,CPU#0 #7分别首先通过“inv rm”命令, 使自身的BARW中的3比特中的特定的1比特(此处设为左端的比特)反转。如果进行了 与该第1层次相伴的反转,则各CPU#0 #7的BARR中的与CPU#0 #7对应的寄存器字段 (相应于rO r7)各自的3比特值成为“lxx”。接下来,由于“check r0_r7 = all “ lxx””命令CPU#0 #7分别,进行等候直到BARR中的与CPU#0 #7对应的寄存器字段(相应于 r0 r7)各自的3比特值全部成为“lxx”。然后,在rO r7全部变为“lxx”的阶段中,障 栅同步处理(BARRIER (0-7))完成。另外,虽然未图示,但在之后的处理中,例如,再次使用BARW的3比特中的右端的 比特来进行障栅同步处理的情况下,通过上述第3层次的障栅同步处理,BARff的相应比特 已经成为了 ‘1,,所以本次以对BARW的3比特设置了 “XX0(X是任意的值)”的情况为同步 点。由此,能够省略如实施方式1的叙述那样,使反转后的比特复原那样的复位动作,实现 了高速化。图18是在图16的多处理器系统中,示出其动作的另一例子的说明图。图18示出 如实施方式3的叙述那样定义了主CPU的情况下的动作例。此处,以CPU数是4个的情况 为例子而进行说明。在图18中,在由CPU#0 #3执行的第1层次的循环处理MTl中,包括 由CPU#0、#1执行的第2层次的循环处理MT2_1、与由CPU#2、#3执行的第2层次的循环处 理MT2_2。另外,寄存器字段在CPU数是4个的情况下,是rO r3,在rO r3各自中包括 2 比特(log24)。CPU#0、#1在结束了规定的循环处理之后,进行第2层次的障栅同步处理 (BARRIER(Bi))。在障栅同步处理(BARRIER(Bi))中,首先,CPU#1在结束了规定的循环处 理之后,通过“inv rl(l)”命令,使自身的BARW中的2比特中的一个比特反转。CPU#0是主 CPU,在结束了规定的循环处理之后,通过“check rl(l)”命令,确认上述CPU#1有无BARW 的比特反转。在有比特反转的情况下,CPU#0通过“inv rO(l)”命令,使自身的BARW中的2 比特中的一个比特反转。然后,CPU#1通过“check rO(l)”命令,在检测出通过该CPU#0进 行了 BARW的比特反转动作的阶段中,完成障栅同步处理(BARRIER(Bi))。另外,CPU#2、#3 也同样地进行第2层次的障栅同步处理(BARRIER(B2))。如果第2层次的障栅同步处理完成,则CPU#0 #3进行第1层次的障栅同步处 理(BARRIER(B3))。在障栅同步处理(BARRIER(B3))中,CPU#1 通过“inv rl(0)”命令,使 自身的BARW中的2比特中的另一个比特反转,同样地,CPU#2以及CPU#3也分别通过“inv r2(0)”命令以及“inv r3 (0) ”命令,使自身的BARW中的2比特中的另一个比特反转。作 为主 CPU 的 CPU#0 通过 “checkrl (0),,命令、“check r2 (0),,命令、以及"check r3 (0),,命 令,确认该CPU#1 #3是否分别使BARW中的2比特中的另一个比特反转。在全部有反转 的情况下,CPU#0使自身的BARW中的2比特中的另一个比特反转,CPU#1 #3通过“check r0(0) ”命令,对通过该CPU#0进行的BARW的比特反转动作进行检测。由此,障栅同步处理 (BARRIER 3))完成。图19是在图18的动作例中,示出在其障栅同步处理(BARRIER(Bl))中使用的详 细的源代码的一个例子的说明图。在图19中,CPU#1进行变量“ver”与“1”的EXOR(异或) 运算,将作为其结果而得到的“ver”的值代入到变量“rl”。即,在“ver”的值是“00”的情 况下,通过EXOR运算对“r 1 ”代入“ 01 ”,相反地,在“ ver ”的值是“ 01 ”的情况下,通过EXOR 运算对“rl”代入“00”。其相应于图18中的“inv rl(l)”命令。另一方面,CPU#0也进行变量“ver”与“ 1 ”的EXOR运算,将其结果代入到“ver”。 然后,由于“while”语句,CPU#0待机直到作为该EXOR运算结果的“ver”的值与由CPU#1 得到的“rl”的值一致为止。S卩,例如,等待以通过CPU#0的运算而得到的“ver” =“01”的值作为期待值,CPU#1对“rl”设定“01”。其相应于图18中的“check rl(l)”命令。如果 CPU#1对“rl”设定了“01”,则CPU#0跳过“while”语句,对变量“r0”设定“ver”的值。即, 例如对“rO”设定“01”。另一方面,CPU#1等待使用“while”语句而对“r0”设定“01”,通 过对该设定动作进行检测,而完成障栅同步处理。以上,通过使用本实施方式5的多处理器系统,除了此前的实施方式中叙述那样 的各种效果以外,进而,还可以容易地应对于包括多个层次的障栅同步处理的各CPU的处 理内容(线程)。特别,随着CPU数增加,这样的多个层次的障栅同步处理变得不可欠缺,在 该情况下通过使用本实施方式5的多处理器系统,能够得到有益的效果。另外,在图16中, 将障栅写寄存器BARW与障栅读寄存器BARR设为了不同寄存器,但当然,还可以如实施方式 2的图7所示,设为合并的一个寄存器BAR。(实施方式6)图20是在本发明的实施方式6的多处理器系统中,示出使用了图16的结构例的 其他动作的一个例子的说明图。此处,示出在如实施方式5中叙述那样的层次的切分用途 以外,还将图16中的障栅写寄存器BARW等的η比特(即版本号)用于其他用途的情况下 的动作例。在图20中,各CPU#0 #7在进行了规定的处理之后(S2001),将同步点设为‘1, 而进行障栅同步处理(BARRIER(O-l))。接下来,在进行了规定的处理之后(S2002),下次 将同步点设为‘2’而进行障栅同步处理(BARRIER(0-2))。之后,在进行了规定的处理之后 (S2003),下次将同步点设为‘3,而进行障栅同步处理(BARRIER(0-3))。由此,例如能够管 理进行障栅同步处理的次数等。例如,在障栅同步处理(BARRIER(0-3))中,各CPU#0 #7通过“inc rm”命令对 自身的BARW的值加上+1,之后,通过“checkr0-r7 = all ‘3,”命令,等待各CPU#0 #7的 BARff的值全部成为‘3,。在图16中,在例如BARW等的η比特是2比特的情况下,能够使用 ‘0’ ‘3’的版本号。在该情况下,图20中的‘3’之后返回到‘0’而进行障栅同步处理。 如果使用这样的动作,则如实施方式1的叙述那样,不进行使版本号复位那样的动作,所以 实现了高速化。另外,通过使用这样的版本号,能够灵活地应对复杂的障栅同步处理。例如,通过 用直接值来指定版本号,能够使某CPU与其他CPU以版本号‘1’同步,能够使某CPU与另外 其他CPU以版本号‘2’同步。在该情况下,通过用版本号来管理同步,与仅有1比特的信息 的情况相比,能够容易地进行同步处理。(实施方式7)图21是在本发明的实施方式7的多处理器系统中,示出其主要部的结构例的概略 图。图21所示的多处理器系统的特征在于,与实施方式4中叙述的图11的结构例相比,将 CPU#0 #7内的障栅写寄存器BARW W]、[1]、[2]各自的比特数设为η比特(η彡2),将障 栅读寄存器BARR
、[1]、[2]各自的比特数设为(SXn)比特。即,形成除了如实施方式4 的叙述那样设置多个组的BARW以及BARR的结构以外,进而还可以在各组内设定实施方式 5、6中叙述那样的版本号的结构例。如果使用这样的结构,则能够如实施方式4中的叙述那样根据各组的数量来对应 于多个层次,而且能够如实施方式5的叙述那样根据版本号的比特数来对应于多个层次,所以通过该组合还可以对应于例如超过3层次那样的情况。S卩,例如,还可以对应于对图12 追加了由CPU#0与CPU#2构成的第4层次的循环处理那样的情况。图22是在图21的多处理器系统中,示出其使用例的说明图。此处,以CPU数是4 个的情况为例子进行说明。在图22中,在由CPU#0 #3执行的第1层次的循环处理MTl 中,包括由CPU#0与#1执行的第2层次的循环处理MT2_1、和由CPU#2与#3执行的第2层 次的循环处理MT2_2。CPU#0、#1在结束了规定的循环处理之后,进行第2层次的障栅同步 处理(BARRIER(B1)),CPU#2、#3也在结束了规定的循环处理之后,进行第2层次的障栅同步 处理(BARRIER(B2))。然后,在结束了第2层次的障栅同步处理之后,CPU#0 #3进行第1 层次的障栅同步处理(BARRIER(B3))。这样在CPU数是4个的情况下,与两层次对应地例如设置两组的BARW以及BARR 的组。而且,在各组中,形成能够对包含在各CPU中的BARW等设定η比特(η彡2)的版本 号的结构。在该情况下,能够如图22所示,针对各层次的循环处理ΜΤ、ΜΤ2_1、ΜΤ2_2,使用 版本号对各循环处理的运行数进行管理。例如,能够进行如下动作在进行了两次障栅同步 处理(BARRIER(Bi))(即运行了两次循环处理MT2_1)的阶段中,跳过MT2_1,在运行了 3次 循环处理MT2_2的阶段中,跳过MT2_2,在运行了 4次循环处理MTl的阶段中,跳过MT1。另外,通过在每次运行各循环处理时更新版本号,例如,还可以将该版本号用作程 序调试时的断点(break point)的停止条件。而且,还能在进行热点(hot spot)的动态抽 出等时活用等。另外,例如,通过不使用版本号而相应地增加组数、或者相反地将组数设为 1组而相应地增加版本号的比特数等,也可以对应于更高阶的障栅同步处理。但是,在该情 况下,有可能导致程序的可读性降低等,从该观点,优选为并用了组与版本号的方式。以上,通过使用本实施方式7的多处理器系统,除了此前的实施方式中叙述那样 的各种效果以外,进而,还可以灵活地应对于希望进行更复杂或者高级的障栅同步处理的 情况。特别,随着CPU数增加,需要更高级的障栅同步处理,在该情况下通过使用本实施方 式7的多处理器系统,能够得到有益的效果。以上,根据实施方式具体说明了由本发明者完成的发明,但本发明不限于上述实 施方式,而当然能够在不脱离其要旨的范围内实现各种变更。产业上的可利用性本发明的一个实施方式的多处理器系统是特别适用于面向嵌入用途的系统等那 样的面向硬件成本、开发期间的制约较大的领域的系统的技术,而且不限于此,还可以广泛 应用于多处理器系统。
权利要求
一种多处理器系统,其特征在于,具有N个处理器,其中,N≥2;N个障栅写寄存器,分别设置在上述N个处理器内;N个障栅读寄存器,分别设置在上述N个处理器内;以及布线块,使上述N个障栅写寄存器布线到上述N个障栅读寄存器,上述布线块在上述N个处理器内的某一个处理器伴随障栅同步而对设置于自身中的障栅写寄存器写入了第1信息时,向设置在其他处理器中的障栅读寄存器,使用直接性的布线,传送上述第1信息,上述其他处理器能够通过设置在自身中的障栅读寄存器来检测上述第1信息。
2.根据权利要求1所述的多处理器系统,其特征在于, 上述N个障栅写寄存器分别是1比特寄存器。
3.根据权利要求2所述的多处理器系统,其特征在于, 上述N个障栅读寄存器分别是N比特寄存器,上述布线块使上述N个障栅写寄存器中的某一个,以广播的方式,布线到对上述N个障 栅读寄存器具备的N比特中的特定的1比特,使上述N个障栅写寄存器中的其他某一个,以 广播的方式,布线到上述N个障栅读寄存器具备的N比特中的其他特定的1比特。
4.根据权利要求3所述的多处理器系统,其特征在于,上述N个处理器中分别设置的障栅写寄存器是通过并用与其设置在同一处理器中的 障栅读寄存器具备的N比特中的1比特而实现的。
5.根据权利要求2所述的多处理器系统,其特征在于,在上述N个障栅读寄存器内,成为上述N个处理器中的某一个的第1处理器中包含的 第1障栅读寄存器是(N-I)比特以上的寄存器,在上述N个障栅读寄存器内,上述第1障栅读寄存器以外的(N-I)个障栅读寄存器是 1比特寄存器,上述布线块使上述第1处理器以外中包含的(N-I)个障栅写寄存器,以1对1的方式, 布线到上述第1障栅读寄存器的上述(N-I)比特,使包含在上述第1处理器中的障栅写寄 存器,以广播的方式,布线到上述第1障栅读寄存器以外的(N-I)个障栅读寄存器。
6.根据权利要求1所述的多处理器系统,其特征在于,还具有 系统总线,与上述N个处理器共通地连接;以及存储器,与上述系统总线连接,而由上述N个处理器共通地访问。
7.根据权利要求1所述的多处理器系统,其特征在于,上述N个障栅写寄存器以及上述N个障栅读寄存器分别是地址映射寄存器。
8.根据权利要求1所述的多处理器系统,其特征在于, 上述N个处理器被分割成多个集群,与上述多个集群分别对应地设置了多个上述布线块,上述多个布线块分别使自身的集群中包含的障栅写寄存器布线到自身的集群中包含 的障栅读寄存器,使来自上述自身的集群中包含的障栅写寄存器的布线延伸到自身以外的 集群,使从上述自身以外的集群延伸来的来自上述自身以外的集群中包含的障栅写寄存器 的布线布线到上述自身的集群中包含的障栅读寄存器。
9.一种多处理器系统,其特征在于,具有 N个处理器,其中,N≥2 ;(MXN)个障栅写寄存器,其是在上述N个处理器内分别设置了 M组,其中,M≥2 ; (MXN)个障栅读寄存器,其是在上述N个处理器内分别设置了 M组;以及 布线块,使上述(MXN)个障栅写寄存器布线到上述(MXN)个障栅读寄存器, 上述布线块在上述N个处理器内的某一个处理器伴随障栅同步而对设置于自身中的 第K组的障栅写寄存器写入了第1信息时,向设置在其他处理器中的第K组的障栅读寄存 器,使用直接性的布线,传送上述第1信息,其中,K≤M,上述其他处理器能够通过设置在自身中的上述第K组的障栅读寄存器来检测上述第1 信息。
10.根据权利要求9所述的多处理器系统,其特征在于, 上述(MXN)个障栅写寄存器分别是1比特寄存器。
11.根据权利要求10所述的多处理器系统,其特征在于, 上述(MXN)个障栅读寄存器分别是N比特寄存器,上述布线块使成为上述N个处理器中的某一个的第1处理器中设置的上述第K组的障 栅写寄存器,以广播的方式,布线到上述第1处理器以外的处理器中设置的上述第K组的障 栅读寄存器具备的N比特中的特定的1比特,使成为上述N个处理器的其他某一个的第2 处理器中设置的上述第K组的障栅写寄存器,以广播的方式,布线到上述第2处理器以外的 处理器中设置的上述第K组的障栅读寄存器具备的N比特中的其他特定的1比特。
12 .根据权利要求11所述的多处理器系统,其特征在于,上述N个处理器中分别设置的上述第K组的障栅写寄存器是通过并用与其设置在同一 处理器中的上述第K组的障栅读寄存器具备的N比特中的1比特来实现的。
13.根据权利要求9所述的多处理器系统,其特征在于,还具有 系统总线,与上述N个处理器共通地连接;以及存储器,与上述系统总线连接,而由上述N个处理器共通地访问。
14.根据权利要求9所述的多处理器系统,其特征在于,上述(MXN)个障栅写寄存器以及上述(MXN)个障栅读寄存器分别是地址映射寄存器。
15.根据权利要求9所述的多处理器系统,其特征在于, 上述N个处理器被分割成多个集群,与上述多个集群分别对应地设置了多个上述布线块,上述多个布线块分别使自身的集群中包含的障栅写寄存器布线到自身的集群中包含 的障栅读寄存器,使来自上述自身的集群中包含的障栅写寄存器的布线延伸到自身以外的 集群,使从上述自身以外的集群延伸来的来自上述自身以外的集群中包含的障栅写寄存器 的布线布线到上述自身的集群中包含的障栅读寄存器。
16.一种多处理器系统,其特征在于,具备 N个处理器,其中,N≥2 ;(MXN)个障栅写寄存器,其是在上述N个处理器内分别设置了 M组,其中,M≥2; (MXN)个障栅读寄存器,其是在上述N个处理器内分别设置了 M组;以及第1单元,在上述N个处理器内的某一个处理器伴随障栅同步而对设置于自身中的第 K组的障栅写寄存器写入了第1信息时,将上述第1信息传送到设置在其他处理器中的第K 组的障栅读寄存器,其中,K彡M,上述其他处理器能够通过设置在自身中的上述第K组的障栅读寄存器来检测上述第1 fn息ο
17.根据权利要求16所述的多处理器系统,其特征在于,上述第1单元是通过使上述(MXN)个障栅写寄存器直接布线到上述(MXN)个障栅读 寄存器而实现的。
18.根据权利要求16所述的多处理器系统,其特征在于, 上述(MXN)个障栅写寄存器分别是1比特寄存器。
19.根据权利要求16所述的多处理器系统,其特征在于, 上述(MXN)个障栅写寄存器分别是多比特寄存器。
20.一种多处理器系统,其特征在于,具备 N个处理器,其中,N彡2 ;N个障栅写寄存器,分别设置在上述N个处理器内; N个障栅读寄存器,分别设置在上述N个处理器内;以及第1单元,在上述N个处理器内的某一个处理器伴随障栅同步而向设置于自身中的障 栅写寄存器写入了第1信息时,将上述第1信息传送到设置在其他处理器中的障栅读寄存 器,上述N个障栅写寄存器分别是多比特寄存器,能够在上述第1信息中,与上述多比特寄存器的比特数对应地设定多个种类, 上述其他处理器能够通过设置在自身中的上述障栅读寄存器来检测上述第1信息。
21.根据权利要求20所述的多处理器系统,其特征在于,上述第1单元是通过使上述N个障栅写寄存器直接布线到上述N个障栅读寄存器而实 现的。
22.一种多处理器系统的同步方法,其特征在于,使用N个处理器、分别设置在上述N个处理器内的N个障栅写寄存器、分别设置在上述 N个处理器内的N个障栅读寄存器、以及在上述N个处理器内的某一个处理器伴随障栅同步 而向设置于自身中的障栅写寄存器写入了第1信息时将上述第1信息传送到设置在其他处 理器中的障栅读寄存器的第1单元,来执行第1处理,上述N个处理器读取设置在自身中的障栅读寄存器,并将第1值作为同步点 而判别自身以外的处理器的同步等待状态,从而进行上述N个处理器的障栅同步处理;第2处理,在上述第1处理之后,上述N个处理器使自身的障栅写寄存器的值反转或者 增加,从而对自身的障栅写寄存器设定第2值;以及第3处理,在上述第2处理之后,上述N个处理器读取设置在自身中的障栅读寄存器, 将上述第2值作为同步点而判别自身以外的处理器的同步等待状态,从而进行上述N个处 理器的障栅同步处理, 其中,N彡2。
23.一种多处理器系统的同步方法,其特征在于,使用包括1个主处理器的N个处理器、分别设置在上述N个处理器内的N个障栅写寄存器、分别设置在上述N个处理器内的N个 障栅读寄存器、以及在上述N个处理器内的某一个处理器伴随障栅同步而向设置于自身中 的障栅写寄存器写入了第1信息时将上述第1信息传送到设置在其他处理器中的障栅读寄 存器的第1单元,来执行第1处理,上述主处理器通过自身的障栅读寄存器,检测上述主处理器以外的所有处 理器对自身的障栅写寄存器写入上述第1信息的情况;第2处理,在上述第1处理之后,上述主处理器对自身的障栅写寄存器写入上述第1信息;第3处理,与上述第2处理并行地,上述主处理器以外的所有处理器通过自身的障栅读 寄存器,检测上述主处理器对自身的障栅写寄存器写入上述第1信息的情况, 其中,N彡2。
全文摘要
在各处理器CPU#0~#7内,设置有障栅写寄存器BARW与障栅读寄存器BARR,使用专用的布线块WBLK3使各BARW布线到各BARR。例如,CPU#0的1比特的BARW经由WBLK3而与包含在CPU#0~#7中的8比特的各BARR的第1比特连接,CPU#1的1比特的BARW经由WBLK3而与包含在CPU#0~#7中的8比特的各BARR的第2比特连接。例如,CPU#0通过对自身的BARW写入信息而向CPU#1~#7通知同步等待,通过读取自身的BARR而识别CPU#1~#7是否为同步等待。因此,伴随障栅同步处理,无需特殊的专用命令,并且能够高速地进行处理。
文档编号G06F15/173GK101925881SQ20098010300
公开日2010年12月22日 申请日期2009年1月23日 优先权日2008年1月25日
发明者伊藤雅之, 服部俊洋, 木村启二, 笠原博德, 龟井达也 申请人:学校法人早稻田大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1