CN103154892A - 用于多级处理的方法、系统和设备 - Google Patents
用于多级处理的方法、系统和设备 Download PDFInfo
- Publication number
- CN103154892A CN103154892A CN2011800497413A CN201180049741A CN103154892A CN 103154892 A CN103154892 A CN 103154892A CN 2011800497413 A CN2011800497413 A CN 2011800497413A CN 201180049741 A CN201180049741 A CN 201180049741A CN 103154892 A CN103154892 A CN 103154892A
- Authority
- CN
- China
- Prior art keywords
- processor
- instruction
- subordinate processors
- processors
- superior
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000012545 processing Methods 0.000 title claims description 15
- 238000013507 mapping Methods 0.000 claims abstract description 9
- 230000001360 synchronised effect Effects 0.000 claims description 30
- 238000003860 storage Methods 0.000 claims description 8
- 238000002347 injection Methods 0.000 claims 2
- 239000007924 injection Substances 0.000 claims 2
- 238000002513 implantation Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 23
- 230000015572 biosynthetic process Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000011160 research Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 210000002231 macronucleus Anatomy 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/526—Mutual exclusion algorithms
-
- 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
Abstract
一种用于降低同步开销的成本的多级处理器(200),其包括上级处理器(201),该上级处理器(201)用于控制使用共享数据和进入关键区段的权限并且以处理器速度直接将该权限签发至多个下级处理器(202、203、…20n)中的每一个。在一个实施例中,下级并行处理器的指令寄存器被映射至上级处理器(201)的数据存储器。另一个实施例(1300)包括3个级的处理器。该方法包括将下级处理器的指令映射至上级处理器的存储器中并且控制下级处理器的操作。该方法和设备的一种变形有助于执行单指令多数据(SIMD)以及单到多指令和多数据(SI>MIMD)。处理器包括延长时钟频率以降低功耗的能力。
Description
技术领域
本发明涉及计算机数据处理并特别涉及多处理器数据处理。本发明更特别地涉及用于同步多级处理器的设备、方法和系统。
背景技术
由于近来在技术和架构上的改进,单个微处理器的能力已经在性能、速度和复杂性上持续增长。这一改进在最近遇到了回报递减。由于增长的存储器/处理器速度差距和因芯片内的导体造成的延迟,单个处理器的性能已经开始达到其极限。同时,因较高的组件密度带来的功率和热管理限制造成了在时钟速率增加上的放缓。
尽管单个处理器的性能正在达到其极限,但是由于新的多媒体应用、更复杂的数字信号处理、诸如天气的建模等科学应用、以及使用CAD工具来设计复杂系统的其它工程应用,对计算能力的需求正在增长。
尽管技术仍在改进,从而以更高速度在每个芯片上制造更多的晶体管,但是单个处理器的架构不能继续有效地利用这些改进。结果是使产业界转向单个芯片上的多核。产业界最近已制造出单个芯片上的双核、四核和八核,并且用户期待获得性能上的成比例的增益。此外,利用单个芯片上的多处理器系统,直到最近对许多人仍是遥不可及的并行处理,现在可以以可负担的成本来提供了。
多处理器系统的性能增益也被主要由于同步和通信开销所引起的基本问题所限制。现有的解决同步问题的尝试只取得有限的成功。并行处理器必须将应用分割成可以通过共享数据来被并发地执行并且可以使用网络和存储器相互通信的处理。数据的共享通常使用互斥而在时间上串行。
在并行计算中经常使用Amdahl定律来预测通过使用多个处理器而可获得的理论最大提速。在并行计算中使用多个处理器对程序的提速被程序的顺序片段所需的时间所限制。例如,如果程序使用单个处理器核需要20小时,并且一个1小时的特定部分不能被并行化,而其余19小时(95%)的期望部分可以被并行化,则不管我们将多少处理器投入该程序的并行执行,最小执行时间都不能少于该关键的1小时。因此提速被限制在最多20倍。
已经声明,最乐观的结果当然是有人想出如何制造随着核的数量增加而高效地工作的可靠的并行软件。这将提供构建未来30年的微处理器硬件的亟需的基础。即使每个芯片上的晶体管数量每一年或每两年即翻倍的惯例会停止——即摩尔定律令人害怕的终结,革新的封装也会允许从多个芯片创建经济的系统,这就维持了消费者长久以来享受的性能增益。
在多处理器系统中使用特定原子指令来实现同步,该原子指令允许每个处理器先获取称作锁的特定存储器位置,然后才具有使用共享的数据项或进入关键的代码区段的权限。这牵涉到所有N个处理器使用网络或总线来竞争以获取锁并等待所有其它处理器。处理器在等待期间,在密闭的环路中自循环,从而浪费了时间和功率。每当处理器获取锁时,它都必须在完成时释放该锁。这牵涉到使用总线或网络使供获取和释放每个锁用的锁位置无效。
SGI Origin3000系统中的32处理器的同步的时间成本是花去232000个周期,在此期间32个处理器原本可以执行2千2百万每秒浮点运算次数(22兆FLOPS),并且这明确地显示出传统的同步损害了系统性能。对于使用8个处理器来说,锁对于使用用于侦听的芯片外部的网络的传统的多处理器的可扩展性的影响扩展至仅约为6,然而当使用32个处理器时,可扩展性降至1。当使用32个处理器时,具有芯片内快速网络的多处理器扩展至仅约12。
传统的多核处理器使用特定原子指令作为加载链接,再接着使用存储条件指令来用于同步。LL(加载链接)指令将一个数据块载入高速缓存中,然后后续的存储条件(SC)指令尝试写入同一块。它只有当从前一LL起该块还未被访问时才成功。在LL与SC对之间的来自另一处理器对该块的任何访问都造成SC失败。这种情况的同步成本是使用总线或网络的等待时间,以及每当处理器失败时,它必须反复地使用总线以从高速缓存载入块(因为无效),同时在密闭的环路中自循环以等待成功的SC,从而浪费了时间和功率。
解决这一问题的一种途径是多个处理器的研究加速器(RAMP:Research Accelerator for Multiple Processors)研究工程。RAMP提议在尝试开发用于大规模并行计算机的有效软件中,使用现场可编程门阵列(FPGA)来构建大规模海量并行处理器(MPP)(多达1000个处理器)。这种方法的问题是它对大规模多处理器系统进行仿真但并不精确地代表它的行为。例如,当RAMP使用真实的处理器时,处理器/存储器速度比变得非常大,造成对大量的处理器的性能增益的限制,并需要隐藏存储器差距的大的等待时间。FPGA仿真实现了相对于真实系统的少于100倍的减缓。因此,它不能被用于真实的大规模并行处理系统。
事务存储器(TM)是作为改进并行处理性能的另一种尝试而被开发的。事务存储器尝试通过以原子方式无锁地执行大代码的事务来降低同步开销。如果事务失败,则它不提交,因而支持它的开销被浪费。事务存储器系统的关键挑战是降低实施原子性、一致性和隔离特性的开销。硬件TM限制是由于在存储器分级体系的低级别中强制系统进入溢出状态的硬件缓冲所导致的。软件TM当它被促使操纵元数据以跟踪读和写集合、附加指令时具有附加限制,该附加指令当被执行时增加存储器系统中的开销和功耗。
以上提到的两种方法都不能有效地应对可扩展性问题。RAMP使处理器减缓,以隐藏真实的快速处理器可能需要几千条并行的指令来执行的巨大的存储器等待时间。TM限制大块的代码并行地运行,并且依赖在事务间具有并发性,从而阻止细粒度并行机制,使得系统性能被限制于最慢事务的性能。
最近,研究者已提议了非对称芯片多处理器(ACM)以改进并行应用的串行部分的性能并且还改进关键的区段,而不是每个处理器使用锁来运行关键区段中的代码,单个处理器对大核(特定的强大的处理器)发送运行关键区段的请求,然后发送请求的处理器可以继续执行。该方法要求附加的开销来发送和接收从每个处理器至大核处理器的消息。关键区段中的数据和代码必须使用总线而被传送至大处理器,增加了额外的开销。这种方法以串行方式一次只能运行一个关键区段的代码,并且即使处理器的多个并发的组不相同也不能允许它们在各自的关键区段中运行。所有的处理器都一起竞争以得到使用大处理器的权限,因此一次只有一个处理器成功,而其它处理器必须等待。
ACM所带来的改进主要是因为大处理器比所有处理器更快并且它可以加速串行代码。限制在于大处理器消耗更多的功率并且就硅而言要耗费更多来实施。ACM中的另一限制在于,当所有其它处理器使用大处理器来执行各自的串行代码时,大处理器的高速缓存存储来自缺少空间局部性的不同程序区域的代码和数据,从而造成因清除导致的高速缓存未命中率的增加。
当不同的处理器试图访问共享数据或进入关键代码区段时,传统的多处理器系统使用锁以在该不同的处理器之间进行同步。每个共享的数据项或关键的区段使用称作锁的存储器位置,该锁必须通过将设置成1的寄存器的内容与锁的内容交换来获取,如果寄存器返回0,则锁空闲并且处理器以原子方式使用寄存器的值将锁设置成1。如果该交换在寄存器中返回1,则锁正在被另一处理器所使用,并且该处理器必须在环路中自循环以等待成功的交换。
以下是在传统的多处理器中用于同步的代码:
R=1; ·将处理器寄存器R的值设置成1
Loop:EXCHANGE(R,LOCK); ·将寄存器与锁交换
If R==1then goto Loop; ·如果锁值返回1,则在环路中等待
{enter critical section}; ·否则开始执行关键区段中的代码
Lock=0; ·当完成时,设置lock=0以使其它
处理器进入关键区段
在以上代码中,因为锁是共享的变量并且必须在其它处理器的缓存中被更新或无效化,所以每个处理器都需要使用总线或网络来写入锁。当处理器完成执行关键区段中的代码并将0写入锁中时,它必须使用网络。这就要求处理器再一次地使用总线或网络,并且对于N个处理器,花费将是:
2N+1+2(N-1)+…2+1,即:
(2i+1)从i=0到N的总和=2N+N×N个总线周期。
以上公式给出了最差的状况。最好的状况是2N个总线周期。
图1是示出了在时刻T0处试图使用总线来获取共享变量的3个处理器的框图100。处理器PN是在T0处获取锁的第一个处理器,同时P1、P0等待。在T1处PN释放锁,P1立即获取锁,同时P0等待。在时刻T2处P1释放锁并且P0最终获取该锁。该例子代表最好的可能的状况,即2N。
发明内容
本文说明的多级处理通过使上级处理器控制使用共享的数据或进入关键区段的权限、并且以处理器速度直接将该权限签发至每个处理器,而不需要每个处理器都被牵涉到同步中,从而降低同步开销的成本。下级并行处理器的指令寄存器在不进行拷贝或传送的情况下被映射至上级处理器数据存储器,从而使得上级处理器在不需要牵涉到或得知下级并行处理器的情况下能够读取每个并行处理器的指令并且改变它。使用上述的多级处理的系统对于使用100周期总线的32传统多处理器系统,将同步等待时间从32×32×100周期降低到只有32×1周期,从而提供3200倍的增益。此外,系统允许不同的共享数据项的并发访问和使每个处理器在等待访问共享数据的权限时停止以降低功率的能力。所述实施例使用对SIMD的有效实施来提供支持向量运算的简易方法。该系统通过使高级处理器从顺序代码生成并行代码(这样就降低了取指令的带宽需求),从而为程序员简化并行编程。当下级处理器被用作再下级并行处理器的同步处理器时,系统将为多处理器提供无限制的可扩展性。
附图说明
根据以下为了清楚而结合附图所作出的详细说明,本发明的特征和优点将变得明显。在附图中在下级上仅示出了3个处理器,但应当注意,实际数量将远超过3个。
图1是试图使用总线来获取共享变量的3个传统处理器的框图;
图2是包含本发明的实施例的系统的框图;
图3是示出了包含本发明的图2实施例的系统的另一方面的框图;
图4是包含示出总线的本发明的图2实施例的系统的框图;
图5是图2实施例的一部分的详细设计的示意图;
图6是示出了图2实施例的操作的队列的框图;
图7是包含本发明的方法的流程图;
图8是本发明的图2实施例的另一部分的框图;
图9是本发明的另一实施例的框图;
图10是本发明的图9实施例的一部分的框图;
图11是本发明的第三实施例的框图;
图12是本发明的第四实施例的框图;
图13是本发明的第五实施例的框图。
具体实施方式
以下实施例关注应对包括同步在内的并行处理的基本问题。期望有一种适合于当前和未来的大规模并行系统的解决方案。本实施例消除了对锁的需要并且通过上级处理器提供同步。上级处理器控制以处理器速度直接将使用共享数据或进入关键区段的权限签发至每个处理器,而不需要每个处理器都为一个锁而竞争。针对使用共享数据的权限,同步的开销被降低至一个时钟。传统的利用锁的同步耗费N2个总线周期,与此相比,在本发明的多级处理中,同步耗费N个处理器周期。对于使用100周期总线的32传统多处理器系统,同步耗费32×32×100个周期,与此相比,对于多级处理,同步仅耗费32×1个周期,从而提供3200倍的增益。
图2是包含本发明的实施例的系统200的框图。本实施例使用以下称作SyncP或“同步处理器”的高级处理器201,该高级处理器具有这样的能力:通过将下级处理器的指令寄存器映射至高级处理器数据存储器中,来查看并且监视下级处理器中的所有指令,而不必物理地复制寄存器或拷贝它们,也不必将下级处理器中的指令传送至高级处理器。
图2示出了多级处理器201(SyncP)如何使用专用总线202将所有的下级处理器指令映射至它的数据存储器211中,其中专用总线202使得SyncP201能够像访问它自己的存储器那样访问下级处理器的任何指令寄存器。第一下级处理器203使自己的指令寄存器213映射至SyncP201数据存储器位置210,第二下级处理器204的寄存器214映射至数据存储器位置215。以相似的方式,所有处理器(未示出)都映射至201中的数据存储器位置。最终,最后一个下级处理器206的寄存器216映射至数据存储器位置220。
监视下级处理器203、204至206的指令使得上级处理器201能够通过在任何时刻基于同步需求将期望的指令注入下级处理器203、204至206的指令寄存器213、214至216来控制它们所执行的指令和执行指令的时间。以下在实施章节给出了将下级并行处理器203、204至206的不同指令寄存器213、214至216映射至上级SyncP201的数据存储器211中的实施的详情。SyncP201从下级处理器203、204至206中选择的下级处理器执行停止指令,该停止指令使它停止执行并且等待SyncP201通过读取下级处理器指令然后插入期望的指令来控制执行。
SyncP201还能够控制每个下级处理器203、204至206的时钟速度,以允许它通过使用SyncP总线202将特定数据代码发送至状态机从而可靠地从这些处理器的指令寄存器进行写和读,其中状态机生成时钟或可以将每个处理器的时钟控制映射至SyncP201的数据存储器。SyncP201将状态机用来生成下级处理器时钟的值写至数据存储器211。重要的是要注意:因为下级处理器203、204至206使用停止指令,这给予SyncP201读和写入映射至211的指令寄存器所需要的所有时间,所以该特征在多级处理同步中不需要。该时钟生成特征仅用于SIMD(单指令多数据)和SI>MIMD。使下级处理器时钟同步以使SyncP能够读或写入下级处理器203、204至206的指令寄存器的简单得多的方式是有可能的,并且取决于技术和实施。
本实施例使用高级处理器SyncP201以通过将指令映射至它的数据存储器211来持续地监视下级处理器203、204至206并行处理的指令寄存器。SyncP201用的代码是:
Loop:for(i=0to N-1); ·对所有的处理器
load R,IRi; ·读取下级处理器的每条指令
if((R)==request to use X); ·如果指令是请求使用共享变量X
store R2,IRi; ·通过将GRANT写至IRi来确立使
用X的权限或等待
if((R)==end of request); ·如果处理器从关键区段代码完成
store R3,IRi; ·确立继续执行常规代码
该代码仅在SyncP201中运行,而N个下级处理器203、204至206执行它们的代码。
在本实施例中,同步代码在后台运行,而不需要牵涉到或得知下级处理器203、204至206。SyncP201能够直接写至请求指令并且给予它进入关键区段的权限,同时请求使用同一变量X的其它下级处理器203、204至206等待。请求指令留在它们的指令寄存器中,通过该指令寄存器,处理器203、204至206的流水线通过延长它们的时钟周期或将指令转换成停止而被停止。延长时钟的目的是使它减缓以节省功率。以下在功率节省特征章节中解释停止指令和延长处理器时钟的详情。
当从下级处理器203、204至206中选择的处理器完成执行关键区段中的代码或完成对共享变量X的使用时,它使用另一条指令,该指令具有用于向SyncP201通知请求X的结束的停止能力。当SyncP201读到它时,SyncP201移除该停止指令,并且允许下级处理器203、204至206中所选择的一者继续执行它的代码的其余部分。
为所有N个发出请求的处理器服务以使用X的时间仅是N个周期的量级。
图3是示出了SyncP301用来在3个时钟周期中为PN306、P1304然后是P0303确立使用共享变量的权限的方法300的图。
应该注意,在图3中忽略了执行关键区段中的代码所花费的时间。
为了计算由本实施例所实现的同步时间的增益,假设以下:
处理器的数量=10并且总线周期时间=10个处理器周期;
传统的多处理器同步耗费从2N到2N+N×N;
也即从2×10×10=200到(200+1000)个周期;
多级同步仅耗费N=10个周期;
增益范围是20到120倍。
考虑大量的处理器并且使用100个周期的网络,增益将是1000倍。重要的是要注意:该增益是在同步时间中而不是在整体性能中。
高级处理器301读和写下级处理器303、304至306的指令的能力具有下列重要的优点:
1.由于每个处理器303、304至306不需要自循环以等待锁被释放,因而降低功率。每个下级处理器303、304至306使用停止指令或延长它的时钟。
2.SyncP301监视下级处理器303、304至306中的所有指令,因此可以并发地签发同时使用多于一个共享变量的权限。另一方面,传统的多处理器依赖于共享的总线,以利用不能被来自其它处理器的其它读或写指令中断的原子操作来支持同步。
3.SyncP301可以为所有下级处理器303、304至306插入一条指令,从而实施简单而有效的SIMD以支持向量运算。
4.SyncP301可以将间接数据写至所有下级指令,这使得每个处理器303、304至306将使用数据的一个字段来对微代码ROM进行索引以执行不同的指令,而不需要每个处理器从缓存或存储器中取出任何指令。
处理系统的实施例使用特定监视总线来读和写任何下级处理指令寄存器的内容。图4是示出了使用特定总线402连接至N个下级处理器403、404至406的SyncP401的框图400。
总线402包括地址总线402a,该地址总线402a定义SyncP401想要访问N个下级处理器403、404至406的哪一个指令寄存器。地址总线402a具有logN的引线数量,对于N=32,地址总线402a只有5条地址线。处理器P0403的指令寄存器IR0413是利用地址=0来访问的,处理器P1404的IR1414是利用地址=1来访问的,…并且处理器PN406的IRN416是利用地址=N来访问的。
总线402还包括数据总线402d,该数据总线包括所访问的下级指令寄存器的内容,对于64位指令,数据总线402d的宽度是64位。当SyncP401从所访问的指令寄存器读取数据时,SyncP401将它的值与指令代码的值进行比较。如果该值与像“请求访问共享变量X”那样的、与同步有关的指令的代码匹配,则SyncP401可以决定通过将允许下级处理器403、404至406具有访问共享变量的权限的特定指令写入所访问的指令寄存器中,来准予该请求。
总线402还包括分别用于读/写至下级处理器403、404至406的指令寄存器413、414至416的控制线(402c)。这是1位线,当它的值=0时,SyncP401执行READ(读),当值=1时,SyncP401执行WRITE(写)。
下级处理器403、404至406的指令寄存器413、414至416的地址映射在它的数据存储器映射中不需要在SyncP401的地址0处开始。如果需要将它映射至更高的地址,则当访问指令寄存器413、414至416时将SyncP401的更高地址线设置成1。
例如,如果当访问指令寄存器413、414至416时忽略A10,则访问SyncP401的数据存储器上的IR0的起始地址将是0或1024。
重要的是要注意:因为指令寄存器413、414至416具有下级处理器403、404至406的指令寄存器的速度并且它们不对系统耗费任何物理空间或功耗,所以这些指令寄存器413、414至416的存储器位置被以处理器速度访问。
用来访问下级处理器403、404至406的IR413、414至416的指令包括:
LOAD R4,1024(R0); ·假设P0403的指令寄存器(IR)413
映射至位置1024,读取P0403的IR
413
STORE R7,1028(R0); ·假设P1404的指令寄存器414映射
至位置1028,写至它的IR414
加载指令将1024处的存储器位置的值和R0的内容传送至SyncP401的寄存器R4。R0的值正常地设置成0,并且1024是映射下级处理器403、404至406的指令寄存器413、414至416的起始地址。在本例中,图5中的地址总线402a将被设置成1024,数据总线402d将具有P0的IR的值,并且控制总线402c将使READ/WRITE=0以供读取。
存储指令允许SyncP401将设置在SyncP401的寄存器R7中的值写至P1404的指令寄存器414。该值可能是赋予访问共享变量X的权限的指令。在本例中,图5中的地址总线402a将被设置成1028,数据总线402d将具有R7的值,并且控制总线402c将使READ/WRITE=1以供写入。
图5是示出了SyncP401怎样才能访问任何下级处理器403、404至406以读或写它的指令寄存器的详细设计的示意图500。来自SyncP总线402a的地址被解码器503解码以从下级处理器403、404至406的N个指令寄存器504中选择一个指令寄存器504a~d。解码器输出的信号IRi504c被假设为有效,并且下级处理器404被访问以读或写它的指令寄存器414。触发器506是下级处理器404的被访问的指令寄存器414的一位。在LOAD指令中,SyncP-R/W信号=0,并且因为将反相器连接至信号SyncP-R/W=0,所以上部“与”门506a被启用。当“与”门506a被启用时,通过将指令寄存器的内容写回至每个触发器来保持指令寄存器中的同一指令。而且,在读取时,因为信号IRi是有效的,所以下部“与”门506b被启用,以允许每个触发器的内容经过三态缓冲器到达SyncP数据总线402d。
在STORE(存储)操作中,信号IRi有效,并且SyncP-R/W=1,这使得中间的“与”门506c被启用并且来自上级SyncP的数据“Di SyncP”被存储在触发器中。这是由SyncP401所写的、要由下级处理器404执行的新指令。
SyncP401可以监视下级处理器403、404至406的指令并且将它们分成多个组;每个组竞争一个共享变量。图6是示出了使用队列对不同的共享变量进行排序的SyncP401的图600。图6示出了在P3和P14之间共享屏障事件,在P1和P11之间共享变量X,在P5和P6之间共享Y。
多个变量的同步是通过下列步骤来实现的:
1.SyncP401以任何顺序读取下级处理器403、404至406的所有指令。
2.如果SyncP401发现来自下级处理器403、404至406的其中一个的使用共享变量的请求,则它将发出请求的处理器序号存储在该变量专用的队列中。例如,ACCESS(访问)X队列用于变量X。P11是第一个被发现请求X的处理器(不按请求的顺序排列)。
3.SyncP401继续读取指令寄存器并且对使用共享变量的不同请求进行排序。
4.如果另一处理器请求具有队列的共享变量(例如X),则SyncP401将处理器序号添加至X队列,如图6中的P1。
5.对于每个队列,SyncP401使用以上在多级处理同步的章节中给出的相同代码来准予发出请求的处理器。SyncP使用超标量架构、或通过将每个组的所要求的代码结合起来从而在单个签发顺序代码中。因为同步使用很少的以处理器速度执行的指令,所以顺序代码的性能是可以接受的。
图7是示出了用于并发地管理多个共享变量的方法的流程图700。SyncP401在对不同队列中的请求进行排序后,它开始于对每个请求处理器准予访问。它使用访问的交织来并发地允许多个下级处理器同时访问不同的共享变量。SyncP401使用简单的顺序代码来准予这些访问。交织使得用于不同的共享变量的同步的时间有可能重叠,同时SyncP使用顺序代码和单一总线来访问下级处理器指令。
如图7所示,第一列,P2最初取得在序列中第一个使用X的准予,然后P5按顺序取得使用Y的准予,访问X和Y的同步时间被重叠并且并行地出现。当P2完成使用X时,它确立由SyncP401所读取的停止指令并且立即准予P8使用X的权限而且还允许P2继续。在本图中,假设P2和P8共享X并且两者同时请求X,当P2使用X时,P8停止,直到SyncP401准予它使用X为止。以同样的方式,P1和P5共享Y并且P7和P3共享Z。
下级处理器403、404至406当请求使用或结束使用共享变量时,使用特定停止指令。下级处理器403、404至406中的一个的流水线控制电路使用状态机,该状态机使得当执行使得流水线停止的停止指令时,控制电路停留在相同状态。仅当将不同的指令写至流水线的SyncP401移除该停止指令时,流水线才继续指令的正常执行。
图8是下级处理器403、404至406中的一个怎样通过由于停止指令而延长时钟来停止它的执行的框图800。指令寄存器801包含停止指令,然后解码器输出信号变成有效并且等于1。连接至解码器802的输出的“或”门将生成输出=1,以迫使触发器803的输出和时钟信号等于1。如果指令不是停止,则触发器803的输出由于来自时钟信号的反相的反馈而导致每隔2×时钟切换一次,其中该时钟信号以触发器803的2×时钟的频率的一半生成所需的时钟。
任何电路的功耗都与时钟的频率成正比。新处理器的增加的速度因管理芯片内部的功率的困难而造成这些处理器的设计中的问题。使处理器在等待准予期间停止有助于降低功率。传统的处理器使用锁并且他们持续地自循环并消耗功率以等待锁空闲。
重要的是要注意:通过延长流水线的时钟来停止流水线这一特征也可以被用作任何传统的处理器的特征。
现代的处理器提供SIMD指令集以改进向量运算的性能。例如,Intel的和Intel的处理器支持SSE(流SIMD扩展(StreamingSIMD Extensions))指令集,该指令集提供能够保持4个32位变量的128位寄存器。
SSE扩展由于对ISA添加了额外的指令而使架构复杂。它添加了额外的流水线阶段,并且使用额外指令的开销来支持对寄存器封包和解包数据。
多级处理提供SIMD特征而不对设计增加复杂度。SyncP401的写至下级处理器的指令寄存器的能力允许它通过对所有指令寄存器启用写信号来将一条指令写至下级处理器403、404至406的所有指令寄存器。SIMD是作为在多个不同数据上工作的多个相同指令而在多级处理中实施的,这是实施SIMD的不同的和有效的方法。每个下级处理器都不知道指令是SIMD;因此,与Intel SSE实施相比,不需要增加复杂度来支持它。因为它使用被传统的指令所访问的相同寄存器作为它的数据,所以也不需要对寄存器封包或解包数据。在多级中,可以将多个数据元素封包至下级处理器中的一个寄存器。如果将4个元素封包在每个寄存器中而产生32的向量长度(与之相比Intel SSE仅为4),则使用128位寄存器将形成8个下级处理器。如果32个处理器将16位元素的数据封包,则它们将产生在一个周期操作中执行的32×8=256个元素的向量长度。支持像CRAY的长向量的向量处理器构建起来很昂贵。
图9是将指令ADDV R1、R2、R3写至所有下级处理器902、903至904的指令寄存器912、913至914的SyncP901的框图900。当该指令被每个下级处理器902、903至904执行时,它执行对每个处理器寄存器902、903至904中R2和R3的内容的添加,然而处理器902、903至904中的每一个中的R2和R3将不同元素的值保持在向量阵列中。例如,如果将向量A加至向量B,则首先执行LOADV R2,0(R5)指令,并且将每个下级处理器902、903至904中的R5设置成阵列A中不同元素的地址。执行该SIMD指令将A的元素传送至不同处理器的R2寄存器。
下列代码解释了在多级处理中使用SIMD所执行的向量运算:
ADDI R5,R0,#i+1000; ·对R5进行初始化以指向A[i]中的元素i
ADDI R6,R0,#i+10000; ·对R6进行初始化以指向B[i]中的元素i
ADDI R7,R0,#100,000; ·对R7进行初始化以指向C[i]中的元素i
LOADV R8,0(R5); ·R8=将向量A[]或它的一部分加载至不同
处理器的R8寄存器
LOADV R9,0(R6); ·R9=将向量B[]或它的一部分加载至不同
处理器的R8寄存器
ADDV R10,R8,R9; ·将A至B的元素相加并且将结果作为向
量存储在每个处理器的R10中
STOREV R10,0(R7); ·将不同处理器的R10寄存器存储至C或
它的一部分
SyncP901使用图10所示的它的数据总线902d,通过使它的数据总线的最高有效位DN等于1来分别写至所有下级处理器902、903至904的指令寄存器912、913至914。对于不是SIMD的任何其它指令,DN位被设置为0。
图10是示出了在多级处理中实施SIMD的框图1000。用于选择其中一个指令寄存器的解码器1001的所有输出1002连接至以DN作为另一输入的“或”门1003、1004至1005。作为DN=1的结果,所有下级处理器的所有指令寄存器的所有“或”门的输出被置成1。返回图9,如前面所解释的,当R/W=1时,来自SyncP901的所有输入数据DN-1至D0被同时写入所有下级处理器902、903至904的指令寄存器912、913至914。然后每个下级处理器902、903至904开始执行并行地写入它们的指令寄存器的同一指令。该图示出了所执行的指令相加R2至R3的内容并且将结果作为向量存储在R1中。
每个处理器902、903至904的R2和R3中的元素形成元素的向量,该向量可以利用另一LOADDV SIMD指令从存储器加载。
多级处理还有另一个重要的特征,即允许顺序指令生成在多个数据流中工作的多个指令。SyncP901将它的数据分割成字段,然后每个字段被用作到ROM的地址,其中该ROM存储有准备要被执行的已解码指令的列表。使用微代码ROM消除了为了保持流水线而对解码阶段的需要,而没有像在Intel的中那样停滞。
图11是示出了支持SI>MIMD的系统的框图1100。SyncP1101的数据总线1102d被假设为64位并且被分割成8个单独字段,其中每个字段分别用作访问相应的下级处理器1103、1104至1105的ROM1113、1114至1116的地址。在本例中,P01103使用SyncP数据的D7…D0对它的具有256个位置的ROM1113进行寻址。如果SyncP1101具有更长的数据,则每个ROM1113、1114至1116可以具有已编码指令的更大存储。10位地址将访问1024个不同的已解码指令。
图11还示出了SyncP1101的数据D7至D0被用作产生对P0的ADD指令的P01103的ROM1113的地址。SyncP数据D15至D8是到产生SUB指令的P11114的ROM1114的地址。如图11所示,这些是被并行地执行的不同的指令,所述不同的指令是由SyncP1101执行这样的一条指令所产生的:该指令将它用作从一些ROM1113、1114至1116访问多个不同指令的多个地址。
该SI>MIMD方法有许多优点,包括:
1.因为它使用单个顺序指令来为多个处理器1103、1104至1106生成并行代码,所以使得写并行代码变得容易。
2.对于从单个指令生成的代码的部分,不需要同步。
3.下级处理器1103、1104至1105不需要从高速缓存或慢速存储器中取出指令而是直接分别从它们的ROM1113、1114至1116执行这些指令,从而降低了功率和复杂度。
4.以处理器速度从ROM1113、1114至1116执行指令,这就改进了向处理器1103、1104至1105的指令分发的性能和带宽。
5.对于下级处理器1103、1104至1106,可以降低或消除对昂贵而复杂的指令高速缓存或指令存储器的需求。
图12是示出了SyncP1101如何控制不同的指令到下级处理器1103、1104至1106的签发的图1200。复用器1201用于基于由SyncP1101对下级处理供给的数据的类型来选择对下级处理器1103、1104至1106的IR的不同类型的指令。复用器的选择线连接至SyncP1101的某些数据线,并且受到SyncP1101所执行的特定操作的控制。例如,在SIMD中,SyncP1101的DN位被设置成1。
下列不同的复用器选择是:
1.如果SyncP1101不需要写和改变指令,则下级处理将同一指令保持在指令寄存器中。复用器1201选择相同指令寄存器的内容作为输入。
2.如果需要写主要用于同步的停止或准予指令,则复用器1201选择SyncPD1101的第一数据输入。
3.如果SyncP需要执行SIMD,则复用器1201选择SyncPD1101的第二数据输入。在这种情况下,SyncP1101的数据被写至所有下级处理器的指令寄存器。
4.如果SyncP1101需要执行SI>MIMD指令,则复用器1201选择ROMOUT输入。
多级处理可以将级的数量扩展至下级处理器的3个或更多级,同时执行代码执行SyncP至另一下级处理器的职责。系统中处理器的数量将是N×N并且该系统的可扩展性将是N×N。通过具有对下级处理器的同步进行管理的更高级处理器来实现的降低的同步开销将帮助将系统的可扩展性增加至N×N。
图13是示出了3级处理的框图1300。第一级处理器SyncP1301如前面解释的那样将第二级处理1305的处理器1303、1304至1306的所有指令寄存器1313、1114至1116映射至它的数据存储器,并且可以使用特定总线1302读或写至它们。
第二级1305的每个处理器1303、1304至1306还可以与SyncP1301类似地控制多个其它下级处理器,除了这些第二级处理器1303、1304至1306还执行他们的普通处理操作。第二级处理器1303、1304至1306将指令寄存器1331至1332由第二级处理器1303、并且将指令寄存器1336至1337由第二级处理器1306、并且将第三级处理器1321至1322由第二级处理器(1393,图中未示出)映射至它们的数据存储器以管理它们的同步。因为以处理器速度停止或准予下级处理器1321至1327只需要一个周期,所以下级处理器1321至1327的管理需要最小支持。
对于包括SIMD、SI>MIMD的3个级的处理,也可以实施以上提到的特征中的一些。
通过在不需要多个下级处理器的任何介入的情况下读和写它们的指令寄存器来控制这些下级处理器的更高级处理器将同步开销从几千个处理器周期降低至几个周期。示例实施例还可以具有许多其它重要的优点,包括通过在等待访问共享变量时停止这些处理器来降低功率的能力。
更高级处理器能够将简单的顺序指令转换成并行指令,这使得写并行软件变得更容易。对于长向量利用简单SIMD实施可以有效地支持向量运算。还能够将多级处理扩展至其它级,从而允许无限的可扩展性。
所示出的实施例仅是示例性的,本发明仅由所附权利要求书来限定。
Claims (38)
1.一种用于处理数据的处理器,包括:
多个下级处理器,该下级处理器具有存储用于处理数据的指令的寄存器;以及
上级处理器,该上级处理器包括连接至所述第一级处理器的用于处理数据的存储器,其中所述上级处理器控制所述多个第二级处理器的操作的至少一部分。
2.根据权利要求1所述的处理器,其中所述上级处理器将每个所述下级处理器的指令的一部分映射至所述上级处理器的存储器。
3.根据权利要求2所述的处理器,其中所述上级处理器将所有的所述下级处理器的指令映射至存储器。
4.根据权利要求1所述的处理器,进一步包括连接在所述上级处理器和每个所述下级处理器之间的总线。
5.根据权利要求3所述的处理器,其中为每个所述下级处理器分配单独的存储器区域。
6.根据权利要求1所述的处理器,其中使得所述上级处理器能够控制所述下级处理器执行的指令和执行所述指令的时间。
7.根据权利要求6所述的处理器,其中使得所述上级处理器能够将指令注入所述下级处理器,以控制所述下级处理器执行的指令和执行所述指令的时间。
8.根据权利要求7所述的处理器,其中所述指令的注入基于同步需求。
9.根据权利要求7所述的处理器,其中所注入的指令是停止指令。
10.根据权利要求1所述的处理器,其中使得所述上级处理器能够控制每个所述下级处理器的时钟速度。
11.根据权利要求1所述的处理器,其中使得所述上级处理器能够对多个下级处理器提供同一变量。
12.根据权利要求2所述的处理器,其中所述总线进一步包括:
地址总线,该地址总线用于定义所述上级处理器对所述下级处理器的哪个地址寄存器进行寻址;
数据总线,该数据总线用于包括所访问的下级处理器的寄存器的内容;以及
控制线,该控制线用于控制对所述下级处理器的读/写。
13.根据权利要求12所述的处理器,其中所述数据总线具有64位宽度并且所述控制线具有一位的值。
14.一种用于同步多级处理器中的不同处理器的方法,所述方法包括以下步骤:
将下级处理器的寄存器的指令映射至上级处理器的存储器;以及
将来自所述上级处理器的指令注入所述下级处理器以使它们同步。
15.根据权利要求14所述的用于同步多级处理器中的不同处理器的方法,进一步包括由上级处理器控制每个下级处理器的时钟速度的步骤。
16.根据权利要求14所述的用于同步多级处理器中的不同处理器的方法,其中所述注入步骤注入停止指令。
17.根据权利要求15所述的用于同步多级处理器中的不同处理器的方法,其中通过使期望被减缓的下级处理器的时钟周期延长来控制所述时钟速度。
18.根据权利要求14所述的用于同步多级处理器中的不同处理器的方法,其中所述方法进一步包括:一旦执行关键代码,则移除对所述下级处理器的停止指令。
19.根据权利要求14所述的用于同步多级处理器中的不同处理器的方法,其中所述方法进一步包括:一旦已经发生共享变量的执行,则移除对所述下级处理器的停止指令。
20.根据权利要求17所述的用于同步多级处理器中的不同处理器的方法,其中延长时钟周期的方法通过使用触发器来进行。
21.一种用于处理数据的系统,包括:
多个下级处理器,该下级处理器具有存储用于处理数据的指令的寄存器;
上级处理器,该上级处理器包括连接至第一级处理器的用于处理数据的存储器,其中所述上级处理器控制多个第二级处理器的操作的至少一部分;以及
用于输入数据的输入端和用于输出数据的输出端。
22.根据权利要求21所述的系统,其中所述上级处理器将每个所述下级处理器的指令的一部分映射至所述上级处理器的存储器。
23.根据权利要求21所述的系统,其中所述上级处理器将所有的所述下级处理器的指令映射至存储器。
24.根据权利要求21所述的系统,进一步包括连接在所述上级处理器和每个所述下级处理器之间的总线。
25.根据权利要求23所述的系统,其中为每个所述下级处理器分配单独的存储器区域。
26.根据权利要求21所述的系统,其中使得所述上级处理器能够控制所述下级处理器执行的指令和执行所述指令的时间。
27.根据权利要求26所述的系统,其中使得所述上级处理器能够将指令注入所述下级处理器中,以控制所述下级处理器执行的指令和执行所述指令的时间。
28.根据权利要求27所述的系统,其中所述指令的注入基于同步需求。
29.根据权利要求27所述的系统,其中所注入的指令是停止指令。
30.根据权利要求21所述的系统,其中使得所述上级处理器能够控制每个所述下级处理器的时钟速度。
31.根据权利要求21所述的系统,其中使得所述上级处理器能够对多个下级处理器提供同一指令。
32.根据权利要求21所述的系统,其中所述总线进一步包括:
地址总线,该地址总线用于定义所述上级处理器对所述下级处理器的哪个地址寄存器进行寻址;
数据总线,该数据总线用于包括所访问的下级处理器的寄存器的内容;以及
控制线,该控制线用于控制对所述下级处理器的读/写。
33.根据权利要求32所述的系统,其中所述数据总线具有64位宽度并且所述控制线具有一位的值。
34.一种处理器,包括:执行单元,该执行单元用于处理指令;以及连接至所述执行单元的时钟,该时钟用于对指令的处理进行定时;并且,其中该处理器具有延长时钟周期以允许降低功耗的能力。
35.根据权利要求34所述的处理器,进一步包括通过使时钟频率减半来延长所述时钟频率的电路。
36.根据权利要求34所述的处理器,其中所述电路包括触发器。
37.根据权利要求34所述的处理器,其中在接收到停止指令时所述时钟周期被延长。
38.一种处理器,包括:具有ROM的上级处理器;以及多个下级处理器,该下级处理器各自具有它们自己的ROM,其中所述上级处理器的ROM中的单个指令被分割成在所述下级处理器中的多个ROM索引,以用于从更高级处理器所发布的一个指令生成多个且不同的独立并行指令。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US39353110P | 2010-10-15 | 2010-10-15 | |
US61/393,531 | 2010-10-15 | ||
US13/239,977 | 2011-09-22 | ||
US13/239,977 US20120096292A1 (en) | 2010-10-15 | 2011-09-22 | Method, system and apparatus for multi-level processing |
PCT/CA2011/001087 WO2012048402A1 (en) | 2010-10-15 | 2011-09-28 | Method, system and apparatus for multi-level processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103154892A true CN103154892A (zh) | 2013-06-12 |
Family
ID=45935155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011800497413A Pending CN103154892A (zh) | 2010-10-15 | 2011-09-28 | 用于多级处理的方法、系统和设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20120096292A1 (zh) |
EP (1) | EP2628078A1 (zh) |
JP (1) | JP2013541101A (zh) |
KR (1) | KR20140032943A (zh) |
CN (1) | CN103154892A (zh) |
WO (1) | WO2012048402A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020893A (zh) * | 2016-05-26 | 2016-10-12 | 北京小米移动软件有限公司 | 应用安装的方法及装置 |
CN106200868A (zh) * | 2016-06-29 | 2016-12-07 | 联想(北京)有限公司 | 多核处理器中共享变量获取方法、装置及多核处理器 |
CN107077187A (zh) * | 2014-10-16 | 2017-08-18 | 华为技术有限公司 | 新颖的低成本、低功率高性能smp/asmp多处理器系统 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9916189B2 (en) * | 2014-09-06 | 2018-03-13 | Advanced Micro Devices, Inc. | Concurrently executing critical sections in program code in a processor |
US9690360B2 (en) * | 2015-08-13 | 2017-06-27 | Intel Corporation | Technologies for discontinuous execution by energy harvesting devices |
FR3091363B1 (fr) * | 2018-12-27 | 2021-08-06 | Kalray | Système de synchronisation inter-processeurs configurable |
KR20210003370A (ko) | 2019-07-02 | 2021-01-12 | 삼성전자주식회사 | 하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치 |
WO2021126217A1 (en) | 2019-12-19 | 2021-06-24 | Google Llc | Resource management unit for capturing operating system configuration states and memory management |
WO2021126216A1 (en) | 2019-12-19 | 2021-06-24 | Google Llc | Resource management unit for capturing operating system configuration states and offloading tasks |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050166073A1 (en) * | 2004-01-22 | 2005-07-28 | International Business Machines Corporation | Method and apparatus to change the operating frequency of system core logic to maximize system memory bandwidth |
WO2010020828A1 (en) * | 2008-08-18 | 2010-02-25 | Telefonaktiebolaget L M Ericsson (Publ) | Data sharing in chip multi-processor systems |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0619760B2 (ja) * | 1986-04-23 | 1994-03-16 | 日本電気株式会社 | 情報処理装置 |
US5742842A (en) * | 1992-01-28 | 1998-04-21 | Fujitsu Limited | Data processing apparatus for executing a vector operation under control of a master processor |
IT1260848B (it) * | 1993-06-11 | 1996-04-23 | Finmeccanica Spa | Sistema a multiprocessore |
CA2137488C (en) * | 1994-02-18 | 1998-09-29 | Richard I. Baum | Coexecuting method and means for performing parallel processing in conventional types of data processing systems |
JPH10105524A (ja) * | 1996-09-26 | 1998-04-24 | Sharp Corp | マルチプロセッサシステム |
US6058414A (en) * | 1998-01-07 | 2000-05-02 | International Business Machines Corporation | System and method for dynamic resource access in an asymmetric resource multiple processor computer system |
JP2003296123A (ja) * | 2002-01-30 | 2003-10-17 | Matsushita Electric Ind Co Ltd | 電力制御情報を付与する命令変換装置及び命令変換方法、命令変換を実現するプログラム及び回路、変換された命令を実行するマイクロプロセッサ |
US7076774B2 (en) * | 2002-09-10 | 2006-07-11 | Microsoft Corporation | Infrastructure for generating a downloadable, secure runtime binary image for a secondary processor |
US7865485B2 (en) * | 2003-09-23 | 2011-01-04 | Emc Corporation | Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server |
GB0407384D0 (en) * | 2004-03-31 | 2004-05-05 | Ignios Ltd | Resource management in a multicore processor |
US8321849B2 (en) * | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
US8122230B2 (en) * | 2007-12-28 | 2012-02-21 | Intel Corporation | Using a processor identification instruction to provide multi-level processor topology information |
-
2011
- 2011-09-22 US US13/239,977 patent/US20120096292A1/en not_active Abandoned
- 2011-09-28 CN CN2011800497413A patent/CN103154892A/zh active Pending
- 2011-09-28 JP JP2013533059A patent/JP2013541101A/ja active Pending
- 2011-09-28 EP EP11831871.6A patent/EP2628078A1/en not_active Withdrawn
- 2011-09-28 KR KR1020137012293A patent/KR20140032943A/ko not_active Application Discontinuation
- 2011-09-28 WO PCT/CA2011/001087 patent/WO2012048402A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050166073A1 (en) * | 2004-01-22 | 2005-07-28 | International Business Machines Corporation | Method and apparatus to change the operating frequency of system core logic to maximize system memory bandwidth |
WO2010020828A1 (en) * | 2008-08-18 | 2010-02-25 | Telefonaktiebolaget L M Ericsson (Publ) | Data sharing in chip multi-processor systems |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107077187A (zh) * | 2014-10-16 | 2017-08-18 | 华为技术有限公司 | 新颖的低成本、低功率高性能smp/asmp多处理器系统 |
CN106020893A (zh) * | 2016-05-26 | 2016-10-12 | 北京小米移动软件有限公司 | 应用安装的方法及装置 |
CN106020893B (zh) * | 2016-05-26 | 2019-03-15 | 北京小米移动软件有限公司 | 应用安装的方法及装置 |
CN106200868A (zh) * | 2016-06-29 | 2016-12-07 | 联想(北京)有限公司 | 多核处理器中共享变量获取方法、装置及多核处理器 |
CN106200868B (zh) * | 2016-06-29 | 2020-07-24 | 联想(北京)有限公司 | 多核处理器中共享变量获取方法、装置及多核处理器 |
Also Published As
Publication number | Publication date |
---|---|
WO2012048402A1 (en) | 2012-04-19 |
JP2013541101A (ja) | 2013-11-07 |
EP2628078A1 (en) | 2013-08-21 |
US20120096292A1 (en) | 2012-04-19 |
KR20140032943A (ko) | 2014-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103154892A (zh) | 用于多级处理的方法、系统和设备 | |
US8108659B1 (en) | Controlling access to memory resources shared among parallel synchronizable threads | |
CN100449478C (zh) | 用于实时多线程处理的方法和装置 | |
Bergman et al. | Exascale computing study: Technology challenges in achieving exascale systems | |
JP5035277B2 (ja) | 共有メモリに対するアトミックな更新を可能にするロックメカニズム | |
Zhu et al. | Synchronization state buffer: supporting efficient fine-grain synchronization on many-core architectures | |
CN101320360B (zh) | 用于并行集成电路结构的消息排队系统和相关操作方法 | |
US5511212A (en) | Multi-clock SIMD computer and instruction-cache-enhancement thereof | |
Sterling et al. | Gilgamesh: A multithreaded processor-in-memory architecture for petaflops computing | |
CN106164881A (zh) | 异构计算系统中的工作窃取 | |
CN103870397A (zh) | 数据处理系统中访问数据的方法以及电路安排 | |
CN101231619A (zh) | 一种基于非连续页的动态内存管理方法 | |
CN105700941A (zh) | 三维调度器模型及其调度算法 | |
KR20210029725A (ko) | 게이트웨이를 통한 데이터 | |
Holt et al. | Flat combining synchronized global data structures | |
CN105393210A (zh) | 用于模拟共享存储器结构的存储器单元 | |
CN100557581C (zh) | 一种面向数据流的Cache管理方法 | |
Riedel et al. | MemPool: A scalable manycore architecture with a low-latency shared L1 memory | |
CN111475205B (zh) | 一种基于数据流解耦合的粗粒度可重构阵列结构设计方法 | |
Liu et al. | Lock-free scheduling of logical processes in parallel simulation | |
Yamawaki et al. | Coherence Maintenances to realize an efficient parallel processing for a Cache Memory with Synchronization on a Chip-Multiprocessor | |
CN111863139B (zh) | 一种基于近内存计算结构的基因比对加速方法和系统 | |
Bayoumi et al. | Massive parallelization of SPICE device model evaluation on GPU-based SIMD architectures | |
Rho et al. | Compilation of a functional language for the multithreaded architecture: Davrid | |
Zhang et al. | An effective 2-dimension graph partitioning for work stealing assisted graph processing on multi-FPGAs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent of invention or patent application | ||
CB02 | Change of applicant information |
Address after: Ontario, Canada Applicant after: Examine Vincent Zhi Cai management company Address before: Ontario, Canada Applicant before: Mosaid Technologies Inc. |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: MOSAID TECHNOLOGIES INC. TO: CONVERSANT INTELLECTUAL PROPERTY MANAGEMENT INC. |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130612 |