CN102782672B - 用于高效嵌入式同类多核平台的基于瓦片的处理器架构模型 - Google Patents
用于高效嵌入式同类多核平台的基于瓦片的处理器架构模型 Download PDFInfo
- Publication number
- CN102782672B CN102782672B CN201180007985.5A CN201180007985A CN102782672B CN 102782672 B CN102782672 B CN 102782672B CN 201180007985 A CN201180007985 A CN 201180007985A CN 102782672 B CN102782672 B CN 102782672B
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- tile
- treatment element
- dcl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000006854 communication Effects 0.000 claims abstract description 82
- 238000004891 communication Methods 0.000 claims abstract description 81
- 238000012545 processing Methods 0.000 claims abstract description 12
- 230000004087 circulation Effects 0.000 claims description 40
- 230000015654 memory Effects 0.000 claims description 40
- 238000000034 method Methods 0.000 claims description 35
- 230000008569 process Effects 0.000 claims description 25
- 230000001360 synchronised effect Effects 0.000 claims description 14
- 230000007774 longterm Effects 0.000 claims description 7
- 230000005055 memory storage Effects 0.000 claims description 2
- 239000012141 concentrate Substances 0.000 claims 1
- 238000003860 storage Methods 0.000 abstract description 51
- 230000008901 benefit Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 9
- 230000003068 static effect Effects 0.000 description 8
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 7
- 229910052710 silicon Inorganic materials 0.000 description 7
- 239000010703 silicon Substances 0.000 description 7
- 101100184723 Homo sapiens PMPCA gene Proteins 0.000 description 6
- 102100025321 Mitochondrial-processing peptidase subunit alpha Human genes 0.000 description 6
- 230000001413 cellular effect Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000008520 organization Effects 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 230000011218 segmentation Effects 0.000 description 6
- 230000000875 corresponding effect Effects 0.000 description 5
- 230000007547 defect Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000013523 data management Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000015556 catabolic process Effects 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 241000193935 Araneus diadematus Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000000135 prohibitive effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 101100275159 Arabidopsis thaliana COBL7 gene Proteins 0.000 description 1
- 101100180341 Arabidopsis thaliana IWS1 gene Proteins 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 235000012571 Ficus glomerata Nutrition 0.000 description 1
- 240000000365 Ficus racemosa Species 0.000 description 1
- 101150005224 SBH1 gene Proteins 0.000 description 1
- 101100256357 Schizosaccharomyces pombe (strain 972 / ATCC 24843) seb1 gene Proteins 0.000 description 1
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000000280 densification Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 239000003921 oil Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000010363 phase shift Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17325—Synchronisation; Hardware support therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
- G06F15/17343—Direct connection machines, e.g. completely connected computers, point to point communication networks wherein the interconnection is dynamically configurable, e.g. having loosely coupled nearest neighbor architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/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 or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
本发明涉及处理器,该处理器包括处理元件,该处理元件并行执行指令,并且与被称为数据通信链路(DCL)的点到点通信链路连接在一起。该指令使用DCL来在它们之间传输数据。为了实现那些通信,它们指定它们从其获得它们的操作数的DCL和它们向其写入它们的结果的DCL。DCL允许指令同步它们的执行,并且明确地管理它们操纵的数据。通信是明确的,并且用于实现与长期变量的存储去耦的临时变量的存储。
Description
背景技术
嵌入式系统是专用于通常在实时限制下执行几个特定功能的较大系统的计算机系统部分。它们用于控制以及用于数据或信号处理。它们存在于许多应用领域中,所述许多应用领域除了别的之外是:电信、汽车、工业控制、功率转换、军事、航空电子学、航天、家用电器和消费者电子产品。嵌入式系统的示例是蜂窝电话手机和基站、机载雷达、网络路由器、调制解调器、软件限定的无线电通信终端、发动机控制器、卫星飞行计算机、GPS定位终端、机顶盒或数字相机。嵌入式系统通常因为它们的操作环境或可靠性要求而被高度限制。发动机控制、探油或军事应用可能具有严格的温度要求,而航空电子学和航天被暴露到辐射。蜂窝电话手机被电池使用时间限制,并且它们的基站被冷却限制。
嵌入式应用是向最终用户提供功能的产品的一部分。通常通过路线图来限定那些功能,路线图通过在每次新产品生成时提供更多的功能或增大的生产量来驱动市场需求。在每次新生成时的这种功能增强导致在嵌入式平台上执行更复杂的程序,但是也导致在单个平台上要支持多种程序。新的标准要求更高的数据吞吐量,这意味着更大的计算能力,它们也使用高级算法以能够达到较高吞吐量要求。一个示例是使用用于低数据率发送的简单相移键控波形至复杂得多的、用于最高吞吐量的具有自适应信道能力的多输入多输出正交频分复用的电信标准演进。该高级应用和算法支持使得计算更复杂。事实上,利用在较早的标准中实现的简单图像和信号处理应用,仅在具有较少的指令但是很高的迭代计数和很简单的控制路径的小内核中执行所有的计算负荷。那些面向简单内核的算法允许容易地利用高级的并行计算,并且容易在专用硬件加速器中实现。利用新的高级和复杂的标准,控制部分变得重要,导致难以并行化顺序代码的重要部分。而且,可以甚至在高计算内核内存在复杂的控制路径,使得难以使用专用硬件来实现它们。另一个主要转移是向软件限定的应用,其中,标准不是完全被硬件实现方式限定,而是使用软件被动态地构成。最高级的一个是软件限定的无线电,其处理大量的电信标准。其旨在提供被允许动态地构成服务以实现定制功能的应用调用的标准软件接口。
总之,支持未来的嵌入式应用要求支持具有较高的计算吞吐量的更复杂的功能。也要求高可编程能力来支持高级的功能和复杂的算法直到完全软件限定的应用,这全部在实时限制下。
专用于主机嵌入式系统的嵌入式平台受它们的环境限制。它们不受硅芯片的计算能力限制,因为一平方厘米的硅表面可以已经包含台式多核处理器。嵌入式系统受它们的总的功耗严重地限制。事实上,它们的大多数被电池供电具有有限的电池容量,并且在每一个新的产品生成时有不佳的改进。对于不通过电池供电的系统,由系统功耗引起的热量导致在整合的环境中难以处理冷却问题。例如,对于蜂窝电话基站是这种情况,该蜂窝电话基站在被集成得接近天线的同时必须同时处理成千上万的通信,需要很密集的计算负荷。在象用于在汽车应用中的发动机控制的高温环境中,进一步限制了冷却能力。因为那些问题,功耗是未来嵌入式的计算平台必须处理的主要限制。
用于嵌入式平台实现方式的硅技术也必须面对限制。在技术收缩的情况下,大约每18个月至两年,对于每一个新的技术节点,晶体管的数量加倍。与晶体管收缩一起的问题是,关于它们的功耗,仅存在有限的晶体管缩放。可以在高端FPGA平台中容易观察到,在每一个新的生成时提供双栅极资源并且在晶体管功耗上没有实质的减小,即使它们以相同的频率工作,引起在部件的功耗上的整体增大,这大大地限制了它们的使用。这种不佳的晶体管功耗降低在小于65nm的深次微米技术节点中甚至更差。在这个节点后,不能再依靠技术缩放来解决因为平台增强导致的功耗增大。而且,深次微米技术节点对于它们用作容易栅极计数提供者施加了另外的限制,因为在过去数十年是这样。那些限制是处理变化和泄漏。处理变化是因为制造事故,导致在单个部件上的晶体管的重要的电子特性变化。在平台级,这使得在整个芯片上跨越的单个宽同步设计在很低的保守频率下操作。泄漏提高了晶体管功耗,即使不使用它们。它们强行使用高阈值电压(Vth),特别是在功率限制的嵌入式应用中。也尽可能多地减小电源电压(Vdd),以便减小与Vdd平方成比例的动态功耗。在保持大大地缓和操作频率的高Vth的同时的Vdd的这种减小随着新的技术节点而增加。事实上,对于嵌入式的处理,从90nm的节点起,几乎未有助于任何频率改善。
应用对于高级可编程能力要求较高的计算吞吐量,同时技术仍然提供较高的晶体管计数,但是未显著地减小它们的功耗。它显然不匹配因为有限的功率预算而导致降低总的功耗的嵌入式限制。那些冲突的限制对于未来的嵌入式处理平台的影响导致下面的要求:
●高可编程性,用于使用复杂控制路径和软件限定的应用来支持复杂算法
●高级并行性,用于用有限的操作频率来支持高计算需要
●在每瓦特的操作上的高功率效率,用于在使用未来的技术节点的同时以有限的功率预算来支持高计算负荷。
现有的手段
当今用于满足嵌入式平台要求的主要手段是异质多核。在此,核心是可以是GPP(通用处理器)数字信号处理器和专用加速器的处理资源。多核用于提高整体并行执行,因为有限的频率不允许使用单个处理器核来支持完整的应用,即使是协处理器支持。异质通过使用域特定加速器来出现,以改善功率效率。总是在通过总线连接的加速器围绕的GPP周围建立平台。加速器大多数是限定功能的专用硬件实现方式,或者在特定算法域内具有有限的可配置能力。
存在由该手段引起的四个主要问题,限制了其用于未来的嵌入式计算平台。第一个是存在许多域并且甚至在域内存在许多标准,导致很高的专用加速器计数[REF]。可以甚至根据吞吐量和实时限制在单个域内使用不同的加速器。对于异质多核的第二问题是它们是对于精确的一组应用设计的复杂平台。因此,难以有效地在现有平台上传送(port)新的应用,特别是对于更高级的标准而言。这导致使用功能组修改来进行频繁的重新设计,就像例如对于蜂窝电话手机平台那样。第三问题是对于随着加速器计数增加的硅面积。异质多核具有不佳的硅利用,因为同时真实使用它们的很少的几个。当编程那些异质平台时,产生第四和最后的问题。因为它们分组异质成分,所以它们需要成本大的人为介入,以在可用的资源上划分应用。而且,该划分是平台相关的,并且需要很精确以获得所有的资源能力的益处,而不引起在不适当的资源上执行任务的禁止性成本。这使得当平台改变时,需要在应用级开始向低的装配级再一次进行划分。平台相关的划分因此引起可再用性问题和成本开销。
与异质多核一起,使用其他低功率技术。从架构的视点看的最重要的一个是基于岛的Vdd缩放。利用该手段,将芯片划分为可以在不同的Vdd和速度下操作的岛,以进一步最小化功耗。根据每一个岛的实时限制来动态地调整Vdd。在每一个瓦片中的可变速度在岛之间的通信网络中引入延迟问题。为了容许延迟,芯片的不同瓦片通过支持均步的时钟同步的FIFO(先入先出)通信链路而连接。基于岛的手段被预见为用于处理在大芯片中的处理变化的主要架构解决方案。
当前的异质多核手段很难跟随标准要求和服务的快速增长。甚至使用异质多核解决方案当今实现的蜂窝电话手机平台必须面对那些限制,即使那些手机受益于允许摊消设计成本的很高的生产量。就像在专业电子应用中的情况那样的不被很高的量驱动的其他市场因为禁止性的硅、设计和编程成本而不能采用这种手段。因为那些原因,在加速器上进行重要的研究和改善,以通过在将它们保持低功率的同时改善它们的可编程能力来使得它们更灵活。
用于改善加速器灵活性的一种成熟解决方案是SIMD(单指令、多数据)向量处理器架构。它已经一段时间被用作在台式处理中的多媒体加速器,并且它当前用在用于视频和基带处理的实际嵌入式的平台产品中。SIMD在可编程能力和功率效率之间提供了良好的折衷。它允许用单个加速器来实现大量的标准。尽管如此,很难编程,因为需要向量化算法,并且编译器支持或者是试验性的或者限于很具体的语言构造。而且,它根本不支持顺序代码。因为那个原因,它总是与GPP或VLIW相关联地使用,导致异质加速器。需要人为地和很精确地将其编程,以获得预期的性能。当应用变得更复杂时,向量化的困难限制了该解决方案的性能和功率效率。
用于建立功率有效并且可编程的加速器的更高级的研究手段是粗粒度可重新配置的处理阵列。它们允许实现在运行时间配置的定制数据路径。可以甚至根据配置控制器和配置存储器容量来在每一个时钟循环重写配置。它们具有在配置控制器中或通过使用预测的执行实现的受限的分支支持。因此,不可能用在那些加速器上的复杂控制路径来执行顺序代码或内核。关于SIMD架构,在加速器旁边的异质GPP或VLIW上执行代码的控制和顺序部分。它们几乎没有需要麻烦的人为编程的编译器支持。它们当使用单个配置时具有受限的内核大小支持,或者,它们必须面向在连续的配置存储器装载中的重要的功耗开销。可配置的互连构造的功耗因为可重新配置性能力开销而高。而且,可重新配置的互连构造因为线长度和不能容易地流水线化的它们的高展开而引入延迟。它们的操作频率因此不很高。
对于异质多核平台问题的最后的主要解决方案是异质多核手段。它是在该工作中使用的手段。同质多核由诸如优化的标量RISC、DSP或VLIW处理器的高度可编程的处理器核的阵列构成。在该阵列中的处理器通过专用可编程或可重新配置的通信网络连接在一起。它们受益于良好的编译器支持,允许与其他手段作比较用很少的人为介入来传送应用。它们的均匀ISA(指令集架构)不要求精确的划分。它们可以执行顺序代码并且用复杂的控制路径来支持内核。因为它们的可缩放的通信网络,它们可以利用可以达到用于一些平台的成百上千的核的很高级的并行化。尽管如此,除了它们的很好的可编程性和可缩放性,它们因为它们的完全可编程的处理器核的使用而在功率效率上被限制。当用低功率的简单标量RISC核来建立同质多核时,它们不能在顺序部分中使用ILP。事实上,它们必须使用用于核之间的通信的通信网络,当执行应用的顺序部分时,该通信网络对于ILP具有低效,限制了它们的性能。它们的功率效率被核之间的通信网络开销降低。
作为结论,同质多核手段解决了由异质多核引起的许多问题。使用相同的计算构造来用于所有的应用域。平台设计简单和通用,并且重新用于许多应用。可以使用所有的核,而不论应用如何,导致良好的硅表面利用。它们容易可编程,并且受益于需要很少的人为介入的良好的编译器和工具支持。关于由未来嵌入式系统引起的处理平台限制,它们具有很高的编程能力,它们的可缩放性允许利用很高级的并行性,并且它们的相对简单允许容易限制用于保证在实时限制中的服务质量所需的它们的WCET(最差情况执行时间)。尽管如此,完全可编程的处理器核和低效通信网络的它们的使用导致低功率效率,这是在嵌入式平台中的它们的使用的主要缺点。
当通过使用同质多核手段来解决当前的异质多核平台限制时,需要解决的问题是在很高功率效率和有效的核间通信支持的情况下可以利用ILP的完全可编程的处理器核。
相关工作:数据流架构
数据流架构被研究和使用了几十年[78,79,80,81,82]。已经在七十年代早期由Dennis实现了作为完整的处理器核的第一已知实现方式[78]。数据流架构用于利用细粒度的指令级并行性,并且在执行期间获得高级的并行性。一些架构甚至使用数据流来自动地从代码的顺序线程提取并行性。
在通常的数据流模型中,用标签来装饰所操纵的数据,以形成令牌。通过这样,可以在彼此之间原子地操纵和区分数据,而不使用中央控制器。指令消耗作为操作数的数据令牌,并且作为结果产生令牌。根据数据流解雇规则在单独的处理元件(PE)上异步地执行它们。这个规则是当可获得指令的所有操作数时可以执行该指令。在被产生后,数据令牌被存储,并且等待直到它们被指令消耗。
存在实现数据流执行模型的两种主要的架构模型。第一种在内容寻址的存储器中进行动态标签比较,以将产生的数据与它们的消费者指令匹配。第二个模型使用在寄存器表中的明确地令牌通信。寄存器与指令相关联,并且通过索引被访问。可以从在下面详细描述的那两个模型得出其他数据流架构的大多数。
在HPS[83]中描述的superscalar处理器[83,84,85,86]中并且通过Weiss和Smith来使用第一数据流架构模型。超标量体系结构(Superscalar)使用在IBM计算机中在60'中介绍的Tomasulo调度[87]。它用于通过下述方式来隐藏浮点单元执行延迟:在执行当前指令的同时,在程序的顺序指令流中提前并行执行所选择的指令。超标量体系结构使用在它们的专用单元上等待执行的指令的队列。当PE产生数据时,通过公共数据总线在所有的指令队列中广播用其标签装饰的其数据。如果该标签与在队列中的指令操作数标签匹配,则在操作数位置中复制数据。当指令使得所有其操作数准备好时,它可以在其PE上被执行。在队列中的最旧指令具有较高的优先级。一种变化的方案使用独立的数据寄存器文件,并且仅在指令队列中存储标签,以便降低其复杂度。该后一种手段需要额外的流水线阶段。它例如用在aplha 21264处理器[88]中。
这个数据流模型具有关于在这个工作中呈现的数据流模型的两个重要的特殊性。第一个是需要向所有队列的所有条目呈现所产生的令牌,以便保证匹配所有的潜在消费者。因此,公共数据总线由长线构成,该长线具有导致重要功耗的高展开。第二特殊性是一旦指令在队列中,则可以仅通过使用将属于错误的路径的指令空化的断言来支持分支。而且,使用断言具有沿着条件分支来加载两个路径的指令的缺点。在队列中的指令意味着作为连续顺序流的一部分被执行。因此,这个数据流执行引擎微弱地支持分支。为了减轻这个问题,在误预测[90]的情况下,这个模型使用分支预测器[89]以及状态恢复机构。分支预测器向数据流引擎提供单个路径指令流。
Wavescalar架构[91,92]使用具有标签和指令队列的这个数据流模型来利用指令级并行性。它们提出了分层架构,其中,在被称为WaveCache的高速缓存中分布和直接执行计算。不像在superscalar中那样,该架构不执行顺序程序,而是使用专用ISA来直接地执行数据流代码。它们在与PE相关联的队列中加载被称为Wave的数据流指令的块。通过断言并且也在Wave加载之间实现分支。Wavescalar具有利用很高级的并行性的优点。专用数据流ISA与superscalar作比较较强地降低其复杂度。尽管如此,仍然需要在所有队列中完成令牌广播和标签比较,这是高功耗的,并且降低了其功率效率。
第二主数据流架构模型已经被公布为调度的数据流[93],并且在TRIPS[94]中公布了第二主数据流架构模型。它不使用指令队列,而是由通过索引寻址的表格中的指令保留的操作数寄存器。生产者指令明确地在消费者指令的操作数寄存器中写入它们的结果。为此,在生产者指令中记录与在表格中的消费者地址寄存器对应的两个目的地地址。当超过两次地使用数据时,需要发出复制操作。可以选择将它们的操作数准备好的指令在它们的PE上执行。流水线循环专用于指令选择。TRIPS用与它们的PE相关联的一组表格、一组寄存器文件和数据存储器库来实现这个模型。所有PE的指令表通过操作数NoC可见,并且是同一地址空间的一部分。这个分布地址空间允许在彼此之间传输指令,即使它们属于不同的PE。该架构有具有加载/存储队列的几个存储器端口,并且支持多线程。它的目标是支持指令级、存储器级和线程级并行性以成为具有很高级并行性的多形态执行平台。缺陷是惩罚属于不同的PE的指令的数据通信的NoC延迟。独立的操作数表、NoC和独立的寄存器文件的使用减小了该架构的功率效率。
在这个工作中呈现的数据流执行模型不使用标签或索引。取代具有与PE相关联的指令队列或表格,数据流引擎每一个PE仅具有一个指令时隙。通过下述方式来实现程序执行:首先从顺序子例程选择指令,然后在数据流引擎中逐个地执行它们。从其本地的顺序流获取指令,并且将其呈现给数据流引擎以作为在其PE上执行的下一个。因为动态选择仅遵循顺序流,所以静态地完成指令调度,以便基于数据依赖性和资源可用性来形成本地顺序子线程。即使在数据流中执行指令,也在编译期间确定在瓦片中的它们的执行顺序。这通过使得有可能每一个PE仅使用一个指令时隙来去除大表格或队列的必要。尽管如此,这个模型的无序执行能力很有限,并且在没有编译器支持的情况下不能用于自动地隐藏执行单元延迟。
数据流引擎本身由固定的点到点DFL构成。指令选择数据流链路来获取它们的操作数并且发送它们的结果。数据流引擎具有用于实现在PE之间的通信的最小复杂度。它不需要内容访问的存储器的排队,也不需要用操作数网络的索引化的表格。这允许将延迟减小到与在PE之间的线延迟对应的它们的最小值。而且,这允许获得较高的功率效率,因为它减少了转换行为和线电容。在子线程中的指令选择就像执行支持分支的本地顺序流。由条件分支使用的标记被数据流引擎直接地提供到本地子线程控制器。这是以与在PE之间传输数据相同的方式来完成的。属于簇的瓦片的顺序控制器是同一控制域的一部分,允许簇执行任何控制路径内,就像在传统的RISC机器中。这因此减轻了在其他数据流模型中遇到的分支处理问题。
用于嵌入式系统的同质架构
同质架构是用于处理在未来的嵌入式系统中提出的挑战的良好候选者。除了它们的相对简单性之外,已经提出了多个架构。在同质并行机器中的早期贡献是晶片机[95]。它已经在80年代早期作为单个处理器芯片被提出,该单个处理器芯片具有意欲用于建立高度并行的多处理器系统的核间逻辑。它使用在使用网格布局的相邻的处理器之间的串行点到点连接。通过发出专用移动指令来实现核间通信。
最近,具体地对于嵌入式系统提出了多种同质平台,要求用于很计算密集的工作负荷的大规模并行执行。那些平台被称为用于大规模的并行处理器阵列的MPPA。它们的目标是在单个芯片上尽可能多地提供并行性,达到几百个核。它们由简单RISC核构成,其中它们的本地存储器通过专用的通信网络连接。几乎所有那些架构使用FIFO来作为通信方式。它们允许用中等的开销来传输和同步在独立的核上的执行,而不使用不能在大规模并行平台中实施的中央控制器。在此呈现了在MPPA中的主要贡献。
来自picoChip的PicoArray处理器提出了在单个芯片上的多达300个核的宽多核。每个核是16比特3发出VLIW。它们使用由可编程开关实现的时分复用通过总线而连接。微弱可编程的处理器阵列(WPPA)是研究平台[67]。它使用利用FIFO的可重新配置网络。AsAP架构[97]使用相同的可重新配置的通信模型,但是具有用于根据工作负荷来本地修改点年月和频率的特殊性,以便进一步降低功耗。它们利用允许容易地处理由多个时钟域引起的重新定时问题的基于FIFO的通信。
Ambric提出了由通过数据流可重新配置网络[98,35,66]连接的成百上千的核构成的多核。它们使用与被称为信道的很小的两个寄存器FIFO类似的通信链路。与FIFO的差别是它们在链路中嵌入式能够管理数据产生和连接的信道的消耗的特殊控制逻辑,而不必象FIFO那样实现独立的控制处理。它们也具有下述特殊性:允许使用数据信道来成流和复制指令,以控制来自同一的指令源的几个距离远的核。
最后,实现RAW架构[37,64,100]的Tilera处理器核[99]由64个3发出VLIW核构成。以两种方式来处理核间的通信。第一种是使用能够实现时分复用的可编程路由器的网络。通过连接相邻的核的FIFO来实现第二种核间通信能力。通过寄存器索引来在寄存器文件中访问FIFO。
在那些MPPA平台和建议的架构之间的差别是即使它们使用FIFO,它们在核之间连接,并且不在并行核中使用来传输数据。在核之间的FIFO的使用引入了延迟。FIFO以网格布局连接在相邻部分之间,或者需要动态地重新配置网络。当适当地配置网络时,在核之间的最小延迟是一个循环。但是在后一种情况下,通信是固定的,并且丢失了可编程性。那些架构不能使用在几个核上跨越的细粒度并行性,而所提出的架构可以利用在簇内的瓦片之间的细粒度并行性。而且,因为那些多核架构由独立的核构成,所以它们全部属于不同的控制域。这意味着通过比较指令在一个核中产生的标记不能触发在其他核中的条件分支执行。它们必须通过可重新配置的网络来传输作为完全的数据字的标记,以在使用其来用于分支之前登记其他核的位置。所有这些需要几个循环。而且,如果几个核需要分支,则必须发出复制指令。所提出的架构允许在已经对于簇的任何其他瓦片执行比较指令的下一个循环在瓦片中分支。
因为那些限制,MPPA主要用于执行流送应用,而没有复杂的控制要求。事实上,在计算布局中的重要的改变要求成本大的重新配置处理。它们因此良好地适用于可以获取在阵列上的空间计算的益处的应用,其中,在较长时间段期间执行应用阶段。关于功耗,大量的核增大吞吐量,但是不增大平台的整体功率效率。如上所述的大MPPA成分平均消耗大约10瓦特,这对于高度限制的嵌入式系统相对高。
与MPPA的另一个主要差别是LiteFlow不使用由在指令中的索引访问的本地寄存器文件。原因是用于获取操作数的其读取引入了额外的流水线阶段。这增加了条件分支延迟惩罚,引起加速缺陷。在宽并行空间计算中的一个重要问题是,在循环中的指令的数量达到1。通过展开来减轻分支延迟引起内核大小的重要增大,这限制了本地指令缓冲器的使用。在下面的章节中详细描述那些问题。
可以总是读取寄存器值,对于数据流不是这种情况,并且如果几个消费者使用数据,则必须以某种方式来复制数据。使用本地寄存器文件使得指令通过索引来操纵数据。因此,将基于本地寄存器文件的计算与数据流混和是不适当的。事实上,使用寄存器索引,不可能选择消耗值,就像在LiteFlow中那样。在一个寄存器或有时在两个寄存器中写入基于寄存器的ISA的结果,需要复制数据。在LiteFlow中,使用比特来选择目的地DFL。这允许向所有潜在的消费者广播数据,而不发出复制指令。
专用加速器架构
专用架构已经提出提高在嵌入式系统中的计算任务的并行性和功率效率。在MOVE框架中实现的传送触发的架构(TTA)仅向计算资源[101,102]进行明确地数据通信。在此,向执行的输入的数据传输触发特定的操作执行。该架构使用借助于插座连接到功能单元的通信总线。长指令明确地指定在触发操作的并行执行的插座之间的通信。
已经提出了用于在多核平台中的通信的专用架构。CPA模型(协处理器阵列)由借助于FIFO[103]连接到可编程网络的处理元件构成。在此,PE可以是处理器核或定制的异质加速器。已经用Aethereal[104]提出了NoC的增强版本,其将重点放在作为在嵌入式的硬实时应用中的关键问题的服务质量上。
ADRES平台由与VLIW[31]强耦合的加速器构成。加速器是在架构[32]中引入的粗粒度可重新配置的阵列(CGRA)。VLIW用于应用的控制密集部分,并且在CGRA中加速内核。它由具有本地寄存器文件的互连的PE构成。它完全是同步的,并且不使用数据流。通过从配置存储器在每一个循环加载的配置向量来同步地控制整个CGRA。通过使用断言来实现分支。
最后,在粗粒度可重新配置的平台中的两个主要贡献是Montium[34]和PACT-XPP[33]。它们以用于密集嵌入式计算平台的很高功率效率为目标。Montium由作为ALU的简单PE和通过可编程交叉线互连的存储器块构成。在每一个循环加载配置向量,并且其控制器允许在配置存储器中分支。XPP架构由通过可重新配置的数据流网络在彼此之间连接的小存储器和ALU构成。那两个架构以用于将流送应用的内核加速为目标。
发明内容
本发明涉及处理器,所述处理器包括处理元件,所述处理元件并行执行指令,并且用被称作数据通信链路(DCL)的点到点通信链路连接在一起。
本发明也涉及两级代码组织。
指令使用DCL来在它们之间传输数据。为了实现那些通信,它们指定它们从其获取它们的操作数的DCL和它们向其写入它们的结果的DCL。DCL允许指令同步它们的执行,并且明确地管理它们操纵的数据。通信是明确的,并且用于实现与长期变量的存储去耦的临时变量的存储。
具体地说,本发明涉及具有其执行模型的处理器。所述处理器由执行指令的处理元件、数据通信链路和指令存储器构成。
DCL是也可以提供数据存储能力的点到点通信链路。DCL具有一个写入端口和一个读取端口,并且提供关于那些端口的可用性的信息。以与在写入端口中的数据写入的依序顺序相关的预定义顺序来完成从读取端口的数据读取。除了数据读取和写入之外,DCL还提供使得能够明确地管理存储的数据的另外的操作。那些操作是:没有数据消耗的读取、具有数据替换的强制写入和擦除所有存储的数据的链路存储刷新。可用性信息允许使用DCL来实现同步,并且数据管理操作允许执行在DCL中存储的数据的明确管理。
DCL是在处理元件之间的仅有的通信装置。它们也提供对于处理元件的计算结果的临时存储。处理元件被分组成瓦片。瓦片的处理元件共享连接到瓦片输入端的一组DCL读取端口和连接到瓦片输出端的另一组DCL写入端口。因此,瓦片通过DCL在它们之间连接,并且一些DCL可以提供在同一瓦片的输出端和输入端之间的链路。
本发明的特定性是在处理元件上执行的指令仅从连接到瓦片输入端的DCL读取端口获取它们的操作数。而且,指令仅在连接到瓦片输出端的一个或多个DCL写入端口中写入它们的结果。因为指令仅指定点到点通信链路,所以在处理元件之间的数据通信被明确地和完全地确定。通信不必通过微架构解释和解析。因为DCL也提供同步手段,所以指令可以仅通过使用明确地通信来在它们之间同步它们的执行,即使它们在不同的网络上执行。而且,因为DCL允许明确地管理它们的数据,所以指令对于在瓦片的DCL中存储的数据具有完全的控制。
通过遵循在指令中限定的预定义的命令来执行在瓦片处理元件上的指令的执行。当瓦片处理元件共享相同的一组DCL时,这个优先级命令允许向由属于同一簇的指令使用的DCL指定访问序列。
由相同的指令簇控制的一组瓦片被称为簇,并且与指令存储器相关联。在簇中,一个处理元件是分支单元,该分支单元拥有地址寄存器,并且提供下一个指令簇的地址,以从簇指令存储器读取。
一组簇构成处理器。每一个簇执行在其指令存储器中存储的指令的线程。在属于不同簇的处理元件上执行的指令可以被同步,并且使用DCL来直接地共享数据,而不要求微架构的介入或要求复杂的路由资源。
从可变存储器去耦通信。DCL提供限于临时结果的存储,而使用在处理元件中实现的本地存储器来存储长期变量。
因为通信明确地被指定,提供同步手段并且允许管理数据,所以所述的处理器具有与其他并行处理器作比较大大简化的微架构。事实上,不必具有在其他并行处理器中的复杂的旁路电路、多端口的寄存器文件、用于执行数据更新的流水线或甚至复杂的路由资源等。这个处理器因此允许降低实现复杂度,在利用指令级并行机制并且同步执行的同时具有较高的可缩放性和功率效率。
参考下面的说明书和权利要求,本发明的这些和其他特征、方面和优点将变得更好地理解。
附图说明
图1:本发明的处理器实施例。它具有两个簇,每一个簇包括两个瓦片。
图2:由四个簇构成的处理器实施例,每一个簇具有一个瓦片。通过由点到点通信链路构成的DCL连接瓦片。
图3:很简单和有限DCL实施例。由FIFO和线构成(a),使用其控制信号的通常的2寄存器FIFO实现(b),用于表示简单DCL实施例的符号(c)。
图4:具有四个指令的瓦片实施例。从输入DCL获取操作数,并且向一个或几个输出DCL发送结果。
图5:算术指令的实施例。
图6:具有与簇的三个其他瓦片T2、T3和T4部分连接的两个本地DCL的处理器瓦片实施例T1。
图7:DCL替换用于在所述实施例中的数据操纵的流水线寄存器。
图8:在瓦片实施例之间具有很短DCL的簇实施例平面布置图,允许在与计算相同的循环中进行通信。外出和进入的DCL与其他簇进行通信,它们因为线延迟而较慢。
图9:借助于网络(b)并且用DCL(c)的程序分段(a)的数据区分示例。
图10:由瓦片实施例构成的簇的实施例。
图11:第一级(1)向在簇的瓦片中的本地缓冲器获取EB,并且第二级(2)依序在每一个瓦片中执行指令。
图12:用于实现两个执行级的整体执行流水线。
图13:在簇瓦片中的SEB代码分段的独立执行的执行时隙。
图14:使用中间地址的具有在每一个指令旁边的专用分支字段的本地分支。
图15:持有用于4个瓦片的SEB的EB代码布局示例。(a)表示它的SEB内容,(b)和(c)是同一块的两个存储器,其中,高速缓存线在(b)中是4个指令宽,并且在(c)中为2个指令宽,虽然两个阵列存储同一EB。
图16:EB分支示例。在一个瓦片上执行仅一个EB分支指令,其他瓦片等待它们的新的SEB。
图17:双SEB缓冲器。基于在执行当前SEB的同时要执行的最可能的EB的静态预测来预先获取(1)新的EB。
具体实施方式
本发明涉及具有其执行模型的处理器。处理器包括执行指令的处理元件、数据通信链路和指令存储器。
在图1中给出了处理器的一个实施例的总体视图。它由簇构成,并且一个簇包括一个或几个瓦片图1.1、指令存储器图1.2和用于存储每一个瓦片的指令束的寄存器图1.3。从指令存储器图1.4立即获取长指令束,并且将其分割以写入它们本身的瓦片内。
瓦片分组几个处理元件(PE)图1.5。每一个PE执行来自它的瓦片的指令束的它本身的指令。借助于数据通信链路(DCL)图1.6来实现在PE之间和在瓦片之间的所有数据通信。为此,指令直接地读取和向DCL内写入作为操作数的数据,而不使用寄存器文件和共享的寄存器索引。
数据通信链路
DCL是也可以提供数据存储能力的点到点通信链路。DCL具有一个写入端口和一个读取端口。DCL提供关于那些端口的可用性的信息。更精确而言,DCL指示是否可以访问读取端口以读取数据,意味着实际上有数据进入它。它也指示是否可以访问写入端口以向其写入数据,意味着有可能向其写入数据。根据在写入端口中的数据写入的依序顺序来以预定义的顺序完成来自读取端口的数据读取。在其最简单的版本中,以数据被写入写入端口内的相同顺序来读取数据。
除了数据读取和写入之外,DCL提供使得能够明确地管理存储的数据的另外的操作。那些操作是:没有数据消耗的读取、具有数据替换的强制写入和擦除所有存储的数据的链路存储刷新。
因此,当从DCL的输出端口读取数据时,可以从DCL去除它或不去除它。在后一种情况下,可以从输出端口直接地重新使用数据,而不要求执行复制操作,就像在FIFO类的语义中那样。
强制写入允许覆写存储的数据,而不关心是否已经读取了它。它例如对处理中断的例程有用。以相同的方式,数据链路刷新允许从软件例外恢复。事实上,因为按照定义来说例外是随机的,当它出现时,因此不可能精确地知道是否给定的DCL作为数据进入它。刷新操作允许将可能破坏或无意义的计算状态进驻到限定的状态。当使用简单FIFO时,不可能从未限定的状态进入限定的状态,而不发出复位。事实上,在未知的空FIFO上的读取操作将暂停执行,导致阻断的计算。最后,测试指令允许测试是否已经通过DCL发送了数据,并且可以用于例如触发I/O处理例程。
可用性信息允许使用DCL来实现同步。事实上,当指令必须向DCL的输入端口写入数据时,它必须等待直到端口可用。它的执行因此将被来自DCL的读取端口的另一个指令在数据消耗上同步。相反,当来自读取端口的指令使用数据时,它必须等待其可用性,并且可能另一个指令在DCL中写入数据。
数据管理操作允许执行在DCL中存储的数据的明确的管理,因为它们允许明确地消耗数据或不消耗数据。这允许几次使用数据,而不必发出复制操作或向本地或共享寄存器内复制数据。防止成本大的复制操作的另一种明确地数据管理是指令在瓦片的多个输出DCL中写入其数据结果的能力,如下将解释的。
瓦片
瓦片由共享输入DCL图1.8的相同的一组读取端口的处理元件构成。它们也共享输出DCL图1.9的相同的写入端口组。DCL是在处理元件之间的仅有的通信装置。它们也提供用于处理元件的计算结果的暂时存储。来自瓦片的输出组的一个或几个DCL连接到用于提供本地数据存储图1.7的相同瓦片。在产生必须在下一个指令中重新使用的结果的瓦片中的PE在本地DCL中写入它的结果,并且可以在下一个指令期间重新使用它。其他DCL连接到属于同一簇图1.10的瓦片或连接到属于不同簇图1.11的瓦片。在所有情况下,DCL允许在PE之间并且因此在连续的指令之间直接地进行通信,即使它们属于不同的簇。
指令操作数和执行
本发明的特定性是在处理元件上执行的指令仅从连接到瓦片输入端的DCL读取端口获取它们的操作数。而且,指令仅在连接到瓦片输出端的一个或几个DCL写入端口中写入它们的结果。为此,指令指定在本地进入组中的DCL索引以获取其数据。在指令中的额外信息指定是否必须从DCL去除数据或将其保存以用于未来的使用。该指令也指定在外出的组中的一个或几个DCL写入结果数据。
因为指令仅指定点到点的通信链路,所以在处理元件之间的数据通信是明确的并且完全被确定。通信不必通过微架构解释和解析。因为DCL也提供同步手段,所以指令可以仅通过使用明确地通信来在它们之间同步它们的执行,即使它们在不同的瓦片上执行。一旦指令使用DCL,则有可能了解在将读取或已经写入数据的DCL的相对侧簇的指令是什么。而且,因为DCL允许明确地管理它们的数据,所以指令对于在瓦片的DCL中存储的数据具有完全的控制,并且不要求辅助数据来用于多种用途。
如果在由指令指定的输入DCL中指令的数据可用,并且如果由指令指定的目的地DCL可用于写入,则执行指令。然后,可以执行指令。不必同时执行属于同一指令束的所有指令,并且因为DCL用于数据通信,所以甚至有可能将一组相关的指令封装到同一束内。指令将仅一个接一个地执行,等待通过确定的DCL来发送和接收它们的操作数。这是与VLIW完全不同的方法,在VLIW中,立即执行长指令字。它具有下述优点:当没有足够的并行机制可用时,大大地减少在VLIW代码中公共的空指令时隙的使用。这减小了因为空存储器访问导致的程序大小和功耗。
由同一指令束控制的一组瓦片被称为簇图1.12,并且与指令存储器相关联。在簇中,一个处理元件是分支单元,该分支单元拥有地址寄存器并且提供要从簇指令存储器读取的下一个指令束的地址。
一旦在指令束中的所有指令即将完成它们的执行,则在该簇中的每一个瓦片的指令束寄存器中获取和锁存下一个束。而且,来自在同一瓦片上执行的相同簇的指令可以共享作为操作数的同一DCL。为此,通过在指令中限定的下面的预定义顺序来执行在瓦片处理元件上的指令的执行。当瓦片处理元件共享相同的一组DCL时,这个优先级顺序允许指定对于由属于同一束的指令使用的DCL的访问次序。并且,即使两个指令访问同一DCL端口,优先级顺序也确定哪个指令首先访问它,解决了冲突。
指令指定通信和不共享的存储器位置,就像在von Neumann VLIW架构中的寄存器那样。DCL用于存储在指令之间产生和使用的临时数据。一旦指令产生了数据,则它可以被另一个指令立即使用,而没有微架构的介入,这意味着它可以在下一个循环中被使用。DCL因此点到点用于短期变量。可以以两种方式来处理长期变量。第一种是使得数据在DCL的输出端口中。这对于连续重新使用很有用。另一种方式是一些PE是用于存储变量的小的本地存储阵列。它们必须通过专用指令被明确地存储和恢复。再一次,这不是通过微架构和象在寄存器中那样通过寄存器索引来自动地处理。尽管如此,该方法的优点是通信与变量存储去耦。
因为DCL的通信组对于瓦片是本地的,但是提供对于其他瓦片等的访问,所以在本发明中呈现的架构是高度可缩放的。如果应用需要更长期的变量,则有可能仅增大本地存储的大小,而不使得整体的架构效率和速度降级。在共享寄存器机器中不是这样,在共享寄存器机器中,中心寄存器文件不良好地缩放,特别是如果它被大大地多端口化。
因为通信被明确地指定、提供同步手段并且允许管理数据,所以所描述的处理器与其他并行处理器作比较具有大大简化的微架构。事实上,不必在其他并行处理器中具有复杂的旁路电路、多端口寄存器文件、用于执行数据更新的流水线或真实复杂的路由资源等。这个处理器因此允许降低实现复杂度,在利用指令级并行机制和同步执行的同时具有较高的可缩放性和功率效率。
优选实施例的描述
高效率依序RISC处理器核使用寄存器文件来在指令之间传输数据。依序并行RISC核使用中心寄存器文件来作为在执行单元之间的中央数据池。寄存器文件实现起来复杂,并且限制并行平台的可缩放性。而且,基于登记的数据通信需要另外的微架构支持来在流水线实现方式中保持正确的执行状态。这使得并行VLIW处理器进一步被复杂旁路网络限制,引入了功率开销和频率限制。那些缺点使得能够利用指令级编写的依序VLIW的功率效率降级,因此它们限制了其在同质多核平台中的使用。
在此提供的LiteFlow处理器模型是本发明的实施例。它允许建立能够利用细粒度ILP的高度有效的并行处理器核。它不用其复杂的最差情况旁路网络来使用中央寄存器文件。它相反使用在执行单元之间的直接点到点通信链路以及由指令完全指定的明确数据通信。它也提供快速和有效的核间通信手段,使得它成为用于高效同质多核平台的适当方案。
LiteFlow实施例是基于瓦片的架构模型。LiteFlow处理器由将一组独立的瓦片分组的簇构成。每一个瓦片通过以数据流类的方式执行指令来控制执行单元。在计算瓦片和簇内部和之间的所有数据通信是明确地,并且使用直接点到点数据流类链路,该链路在下面被称为用于数据通信链路的DCL。DCL的很简单的实施例可以是小的同步FIFO。DCL用于在指令之间传输数据,而不使用寄存器索引或标签。与DCL相关联的控制用于在簇之间的不同的瓦片或线程中的指令之间的执行同步。在处理器瓦片中的本地执行控制避免了用于同步和控制信号的长线。计算仅使用DCL,并且不使用象在VLIW处理器中的中央寄存器文件的由微架构维持的中央共享数据池。因为DCL通过实现交易通信方式来原子地操纵数据,所以它们是可缩放的并且对于延迟不敏感,使得它们成为用于大的并行平台的适当的通信手段。
在图2中示出LiteFlow处理器。它由四个簇构成,该四个簇每一个使用专用指令和数据高速缓存或暂存器来分组一个瓦片。相邻的簇被点到点DCL紧密地耦合。那些紧密的连接很快,并且传播控制信息,该控制信息使得能够有效地在几个簇上执行单个线程。在图2中的指令高速缓存可以被看作使用在图中未示出的专用存储器网络的L2高速缓存。
在该实施例中,每一个簇由通过由点到点DCL构成的本地网连接的单个瓦片构成。它连接到数据和指令高速缓存或暂存器。几个瓦片可以通过根据实现方式执行存储器操作来访问数据高速缓存。在这个实施例中的瓦片具有一个或几个执行单元EU、用于持有长期数据的本地存储器LMEM。在这个实施例中,每一个簇具有在此称为SEB-BUFF的本地指令存储器,用于持有在簇上执行的代码的块。因为这个实施例的每一个簇具有一个瓦片,所以每个瓦片在此执行具有分支的代码的顺序线程。
通过使用它们的簇来分组一组连接的瓦片,该实施例的处理器可以在此被看作每一个瓦片仅具有一个指令时隙的轻数据流类的执行引擎。数据流类指的是由一些数据触发的执行或资源可用性。该引擎执行来自在瓦片中的顺序线程的指令。指令被从静态调度的顺序流选择为下一个候选者。当在引擎中所有指令的操作数可用时最后执行该指令。数据流类引擎本身由在指令时隙之间传输未命名的数据令牌的固定点到点DCL链路构成。执行引擎的指令窗口很小,并且对应于在簇中的瓦片的数量。该小窗口大小允许数据流类引擎很功率有效并且具有低复杂度。它允许实现数据流类执行,而没有内容访问指令队列或表格的负担。
在这个实施例中的指令束分组可以并行执行的几个指令。借助于DCL来完成在指令之间的通信,并且通过数据的可用性和目的地DCL来触发它们的执行。通过在此被称为CTRL-REG的簇寄存器中加载的指令束来引导执行。瓦片可以并行执行4种指令,它们是:
●算术,主存储器
●通过移动操作的数据取代
●本地存储器访问
●在指令缓冲器中的分支操作
可以根据实施例的实现方式来在瓦片中呈现除了分支之外的同一指令的几个实例。
LiteFlow模型实施例具有下述特定性:使得在处理器内的数据通信的大多数明确和对于编译器可见,同时它仍然是以指令为中心。这意味着它仍然是象驱动计算的算术或存储器操作那样的数据变换操作。通过操作数选择来自动地实现通信,并且通信可以被看作指令执行的副作用。不是通过寄存器索引或通过使用与复杂微架构一起的标签来命名变量以维持正确的状态,数据被明确地从静态限定的生产者/消费者对获取并且向其转发。这个方法允许通过例如下述方式来在编译器级优化数据通信:将生产者/消费者对布置于在相邻簇中的相邻瓦片或内核中。它允许将数据广播最小化为仅实际上使用它的操作或瓦片。在操作之间的该明确的和优化的数据通信比使用中央数据池更不复杂和更不高耗电。事实上,由专用微架构保持的中央寄存器文件要求数据通过所有的流水线阶段,消耗了不必要的功率。
在簇之间的通信被DCL以与它们在簇内被处理相同的方式处理。在图2中,来自左和右簇的两个DCL分别在瓦片3和瓦片4中结束。它们被指令用作本地DCL。因为通信DCL能够被编译器完全看见,所以在相邻的簇之间的那些有限的连接足以跨越在几个簇上的线程,并且对于加索引的寄存器不需要最差情况完全连接的交叉线。而且,通过那些簇之间的DCL来充分地处理执行同步。所有这一点使得基于DCL的簇之间通信成为可缩放的手段。
在LiteFlow处理器实施例内的通信被称为DCL的点到点链路处理。它们用于在指令之间的数据通信。那些通信可以在瓦片内、在不同瓦片之间或甚至在簇之间是本地的。
可以通过线或FIFO来实现具有降级的功能的简单的基本DCL实施例。对于DCL的这个实施例,许多数据管理功能等不被支持或需要在FIFO周围或在瓦片中被实现。对于这个简单实施例,FIFO大小很小,在一个和三个簇之间,通常为两个。较大的FIFO用于在距离远的瓦片之间的流水线化。图3(a)示出由被FIFO跟随的线构成的简单DCL实施例。在图3(b)中给出了2寄存器FIFO的典型实现方式。它主要由两个寄存器、复用器和管理寄存器内容状态的控制器构成。与简单的通信寄存器作比较,这个受限的DCL实施例的关键路径被FIFO复用器扩增。
使用FIFO的控制信号来建立简单DCL实施例。写入信号允许在FIFO中引入新的数据,并且读取信号以先入先出的顺序来去除数据。两个另外的信号满和空提供了关于FIFO状态的信息。满活动意味着FIFO没有空寄存器,并且可以不被写入而不引发未确定的行为,并且空活动在其输出具有无意义的数据,显然不能读取该数据。图3(c)示出用于在下面表示这个简单DCL实施例的符号。
使用基于FIFO的DCL允许作为由数据可用性触发的执行的、在瓦片中的数据流执行。事实上,FIFO可以在一个方向上建立数据传送,但是它可以在两个方向上传输控制信息。在FIFO的结尾的消费者知道如果FIFO不空,也就是当复位空信号时他是否可以进行计算。因此,存在来自在FIFO输入端处的生产者的控制信息传输,其可以通过仅写入数据来在其输出端处触发消费者。相反,在FIFO输入端处的生产者可以仅在当复位满信号时出现的、他可以在未满的FIFO中写入其结果时进行计算。如果FIFO是满的,则生产者不能进行并且必须等待。在此,控制信息传输来自在FIFO输出处的消费者,其可以通过从满FIFO去除数据来触发生产者执行,允许它计算和写入其结果。
当FIFO具有不止一个寄存器时,可以在请求输入端和输出端侧之间去耦用于其控制的关键路径。事实上,可以总是写入不满的FIFO,而不论是否将读出它的外侧,并且非空FIFO总是在其输出处具有有效的数据,而不论是否将写入其输入。通常的流水线阶段不提供该去耦机构,并且在阶段之间的控制信号必须通过阶段边界,导致在通过阶段的长的控制路径。该缺点被称为流水线互锁,其引起在RISC流水线的处理器中的有问题的重要路径。
指令执行明确地控制DCL,并且控制总是对于瓦片是本地的。这意味着数据总是通过指令被明确地写入DCL中,并且总是被另一个读出。特殊性在于DCL原子地处理数据。当存在剩余的位置时,在DCL中明确地写入数据,但是它也明确地在其端部被破坏。可以总是写入和读取寄存器,即使它的值无意义。中央控制器必须知道和管理它的状态。在LiteFlow处理器实施例中,在瓦片和DCL中的本地指令控制之间分布整体控制。DCL使得数据操纵是交易的,其对于延迟不敏感,这是大的并行平台的优点。
在此的DCL实施例是具有有限临时存储容量的通信资源。它们保留数据顺序,其中在DCL中写入数据的顺序与它们在其结尾被读取的顺序相同。结果是当未在DCL输出处读取数据时,在生产者继续在其输入中写入的同时,其在FIFO满后阻断。通过明确地选择专用链路,数据通过它们被发送到特定瓦片。它们因此不使用任何寄存器索引或标签或地址来区分数据或目的地端口。
指令束引导在瓦片中的操作执行。所有的指令借助于DCL来明确地传输数据。数据通信可以在瓦片中或在瓦片之间是本地的。那些明确地通信被指令指定。所有的指令从DCL获取它们的操作数,并且明确地将它们的结果写入DCL内。图4示出该实施例的网络,其具有四个指令类型:分支、算术、移动和本地存储器。它们全部从输入DCL获取输入数据,并且将它们的结果发送到一个或多个输出DCL。在这个实施例中,至少一个DCL从同一瓦片的输出端循环回输入端,以便重新使用或本地保存所产生的结果。
在从DCL输入端获取操作数并且向DCL输出端发送结果时,在LiteFlow处理器实施例中的操作数和结果操纵具有两个更多的特定性:编程操作数消耗和选择性结果广播。当操作使用来自输入DCL的数据时,它不一定消耗它。这意味着数据在被使用后不被自动地从DCLFIFO实施例读出。相反,对于所使用的每一个DCL源,指令指定是否必须读出数据。这允许保持在DCL端的数据以用于多个用途,而不需要发出复制操作。关于结果广播,指令明确地指定其中必须发送结果的所有的DCL。结果数据然后仅通过那些DCL而不通过未指定者来传播。因此,仅在使用的DCL中而不是在所有连接的目的地DCL中有转换行为。选通电路防止在具有长输入线的DCL中的转换。由指令引导的该选择性目的地广播允许消耗仅用于有用通信的功率。它与在基于寄存器文件的架构中的最差情况旁路网络广播完全不同。
在图5中示出用于实现可选的来源消耗和单独的目的地选择的指令实施例的示例。它是典型的获取两个操作数并且产生结果的算术运算。用于执行的操作码字段编码操作之后跟随两个源字段src和src2选择输入DCL来用作操作数。与那两个源相关联地,存在两个读取比特r1和r2,该两个读取比特r1和r2用于指示是必须从它们的DCL读出数据操作数还是数据操作数可以留下以用于未来的重新使用。最后,被编码为用于N个输出的大小N的比特字段d1…dN的目的地字段对于每一个输出DCL指定是否必须广播结果。对于具有8个输入DCL和8个输出DCL和8比特操作码的瓦片,在3比特上编码源字段,并且在8比特上编码目的地字段,导致24比特宽的算术运算。
即使在LiteFlow处理器实施例中,通信是明确的,引导数据变换的指令仍然驱动计算。通信是获取操作数并且从和向DCL广播结果的副作用,而不是主任务。通信和数据移动的大多数因此与计算一起被实现,并且不要求专用的通信处理或异质资源。
该实施例的处理器瓦片被组织在两条总线——操作数和结果总线——周围。操作数总线将进入的DCL末端与操作输入端口连接。结果总线将操作输出端口与外出的DCL连接。即使它在此被称为总线,它因为在处理单元和DCL之间的控制传输而更复杂。每一个操作获取其操作数,并且通过那些总线发送其结果以到达DCL。在所提供的实施例中,它们被使用简单的复用器实现。在此基于指令、输入数据可用性和输出资源就绪来在瓦片级处管理控制。在与计算相同的循环中执行操作数选择和结果广播。在一个循环中执行整数算法运算、移动和本地存储器操作的大多数。对于更复杂的操作,可以将执行单元流水线化。象通常的算术运算那样,借助于由功能单元执行的加载存储指令来完成主存储器空间访问。因此,专用功能单元用于访问未通过DCL连接的高速缓存或暂存器存储器阵列。
在该实施例中,在执行单元中的内部流水线的使用不阻断下面的指令执行,除非它们同时在同一目的地DCL发送它们的结果。事实上,当存在在执行单元流水线中或在其他资源上执行的多个操作时,瓦片控制器保留由在指令中的使用的目的地和指令顺序次序限定的在每一个DCL中的目的地广播顺序。
在图6中示出LiteFlow处理器的瓦片实施例。它被称为T1,并且与同一簇的被索引化为T2、T3和T4部分的3个其他瓦片连接。该瓦片具有5个输入DCL和5个输出DCL。三个输入和输出用于与簇的其他瓦片进行通信,并且它们的两个是本地循环的DCL。那些本地DCL是重新使用在同一瓦片中的数据或访问来自本地存储器的数据所需的。所示的瓦片具有执行单元EU、由在两条总线之间的垂直箭头所示的移动单元和本地存储器LMEM。也存在在附图中未示出但是在下面的章节中被详细描述的本地分支单元和本地指令。虽然在该示例中存在每个操作类型的一个实例,但是可以在瓦片中呈现每一个操作的几个实例。例如,有可能具有两个执行单元和两个移动操作,或者,甚至有可能仅具有移动和本地存储器,而没有执行单元。
条件分支要求标记来确定它们的结果。为此,在这个实施例中,专用的1比特标记DCL以与它们通过数据DCL连接的相同的方式在彼此之间连接瓦片。为了清楚的原因,在附图中未示出那些标记DCL。标记DCL允许簇的所有瓦片并行地执行同一线程。然后,通过分支或条件分支可以容易地控制该线程,其中在一个瓦片上计算结果,但是通过所有的簇来传输控制。
通过DCL来实现通过计算使用和产生的数据的流水线寄存器。没有用于数据操纵的任何其他流水线寄存器,除了可以在对于处理元件而言本地的功能单元中嵌入式的那些之外。当瓦片产生其本身或另一个瓦片使用的结果时,它被存储在DCL中,替换了在计算循环的尾部簇的流水线寄存器。图7示出两个瓦片T1和T2,其中,仅示出在T1和T2之间的DCL。该瓦片与在图6中相同。
T1的执行单元产生将被其本身和T2使用的结果。因此,通过在T1中的一个循环DCL和在T1和T2之间的DCL来在计算循环的结尾簇发送结果数据。在附图中通过粗线描述了结果数据。在循环的结尾,在DCL中锁存数据,并且在两个瓦片中的下一个循环该数据可用。注意,多个目的地能力允许数据复制,而不使用专用复制操作,就像在大多数数据流架构中的情况那样。
如果数据通信路径因为长的线延迟而仍然需要被进一步流水线化,则在DCL实施例中的FIFO实现额外的流水线阶段。这是对于在相邻的簇之间进行通信的DCL的情况。事实上,优化内部簇通信以在与计算相同的循环中被执行,同时,根据实施例,因为线长度,与簇边界相交的DCL可以采用一个完整的循环来传输数据。通过平面布置簇瓦片使得它们的DCL结尾彼此很接近来实现很短的内部簇通信延迟,如在图8中所示。因为在子微米技术中多个路由级可用,所以可以缩短在附图中所示的DCL长度,以便将通信延迟减小为关键路径的较小部分。如图8中所示的四个簇之间DCL因为线延迟而更长或更慢。
在这个实施例中,每个簇单独地执行其自己的代码,而不使用全局控制器。尽管如此,它们不象在通常的RISC机器中那样每个循环执行指令。以数据流类方式来完成执行,该执行被输入数据可用性和输出DCL准备状态同步,这可以使得指令等待。因为由在简单DCL实施例中嵌入式的FIFO实现的数据流类行为,该数据流类执行是可能的。生产者可以通过经由FIFO发送数据来触发消费者的执行,并且消费者可以通过从慢的FIFO去除数据来触发生产者的执行。
作为在瓦片上执行的指令束的一部分的指令可以根据它们的DCL状态而被独立地执行。如果所有其操作数可用并且可以使用所有其目的地,则可以执行操作。当从其获取操作数的所有输入DCL非空时,所有的其操作数可用。如果其中必须写入结果的所有输出DCL不是满的,则可以使用所有其目的地。对于多循环或流水线化的操作,第一执行循环需要操作数可用而不是目的地,并且最后的执行驯顺仅需要准备好目的地。当几个操作在执行中时,瓦片控制器在目的地DCL中维持写入顺序。通过指令的顺序次序来限定在给定的DCL中的写入顺序。
当在瓦片中获取指令时,其操作被异步地执行,意味着一旦操作的所有DCL准备好,则可以执行它。唯一的例外是对于分支操作,该分支操作总是作为在操作束中的最后操作被执行。事实上,执行在分支操作后的循环,在瓦片控制寄存器中重写新的指令,并且,必须已经执行了所有在前的操作,或至少开始它们的执行。指令的执行可以根据数据可用性而花费几个循环,如果所有的数据和输出DCL准备好,则在一个循环中执行它。
在瓦片上的指令束的指令部分可以异步地被执行,但是也可以共享相同的输入和输出DCL。两个操作可以使用相同的输入DCL,并且因此使用相同的数据。它们也可以使用相同的目的地DCL来用于广播它们的结果。为了避免用于消耗被未已经执行的另一个操作用于共享的目的地的数据的操作,在冲突资源使用的情况下,在操作执行中有预定义的顺序。正常地在指令中编码该顺序。尽管如此,在这个实施例中,这个顺序在硬件被硬编码,但是也能够借助于配置寄存器来配置它。在这个实施例中的顺序首先是本地存储器访问,然后是移动,然后是算术和主存储器操作,并且最后是分支。在这种执行中,在不同的循环期间执行操作,并且整个指令束需要几个循环来完成。
使用数据流类同步的独立瓦片执行按照数据依赖性被动态地调度,并且容许动态执行延迟。代码接近其数据流图形,该数据流图像必须被布置在瓦片上并且在瓦片上被路由,而不象在RISC架构中那样被调度。动态调度的优点是代码不要求被填充空操作,也不象软件流水线化的循环那样使用序言或结语。因此,这个系统调度对大的并行应用有用,诸如在同质多核平台上分布的那些应用。
数据流类执行可以遇到僵局。它们可以被在代码中的误差或很高的延迟I/O引起,使得两者将簇置于长的未预测的等待状态中。可以通过下述方式来减轻在代码中的误差:编译来自程序的正确的顺序定义的代码,在该程序中,所有的变量在被使用前需要被限定和初始化。尽管如此,如果在代码中仍然和僵局误差,则容易检测在簇中的所有瓦片正等待,而没有诸如高速缓存未中的长延迟操作。僵局可以因此在其出现后的下一个循环被检测,并且用于发出中断。值得注意的是,在代码中的误差大多数时间生成僵局。它具有优点:避免象在顺序寄存器机器中的那样的进一步的机器状态破坏,在顺序寄存器机器中,处理器可以长时间运行,并且破坏存储器内容,直到分段故障中断了其执行。
不可预测的长延迟数据流I/O可以使得处理器在中间量的时间期间等待,使得其计算被阻断。通过test_df1指令在LiteFlow实施例中减轻这个问题,test_df1指令测试是否特定的DCL具有数据就绪。通过这一点,循环可以定期地轮询不可预测的I/O,以查看是否可以处理数据。test_df1指令生成标记,该标记可以用于有条件地分支到I/O处理子例程。
在并行执行的簇上的空间计算具有特殊性:需要依赖于在整个处理器中的簇位置的二进制。除了处理重新定位能力,空间目标代码也需要空间重新定位能力,以便能够在簇之间移动计算。代码的便携性可以通过一般解码阶段并且通过动态空间重新定位能力来实现。
在LiteFlow处理器中的代码执行是高度并行的。该并行性出现在指令束中的指令之间、在簇瓦片上的指令期间和在簇之间。与明确的通信一起使用点到点数据流链路,而不是使用借助于索引的随机寄存器访问。长期变量被保持在小的本地存储器中。DCL与寄存器在根本上不同,因为它们原子地处理数据,并且不能通过操作来随机地访问所有它们的端部。它们不是本地的,并且它们的大多数连接到两个不同的瓦片。DCL FIFO寄存器被用作用于计算的流水线寄存器。通过这一点,DCL将大多数操作连接在一起,使得通过一个操作在一个循环期间计算的数据可以被下一个循环使用。在这个实施例中,可以看到借助于DCL在操作之间的通信在与用于标量RISC流水线和VLIW的旁路网络相同的位置。差别是:(i)原子地处理数据,(ii)它们用于执行同步,(iii)没有动态寄存器标签比较,(iv)数据仅穿行到选择的点到点链路,并且最后,(v)它们其后不被写回寄存器文件中。已知全旁路网络广播、中央寄存器文件和它们的专用流水线阶段是高度消耗功率的,并且在使用中央寄存器文件的嵌入式平台中限制功率效率。
DCL点到点网络允许区分数据,而不使用标签或寄存器索引,即使在独立的执行瓦片之间交换数据。瓦片通过选择其到达DCL和在DCL数据序列中的其顺序来将一个数据与另一个相区分。编译器因此需要精确地了解涵盖所有使用的瓦片的全局执行环境。在图9中给出了示例。
在图9(a)中给出在三个瓦片上执行的小程序分段。瓦片1产生和向瓦片2发送数据A和B,并且,瓦片3产生和向瓦片2发送数据D。图9(b)示出在由标准总线或象在用于NoC的情况下那样在每一个瓦片中具有单个进入端口的网络实现的在瓦片之间的通信网络。图9(c)是网络的点到点DCL实现。瓦片1和3通过从两个独立存储器加载A和D来开始它们的执行。因为高速缓存未中问题,并且因为两个瓦片单独地执行代码,所以A可以在D之前发送,或者,D可以在A之前发送,精确的时隙是数据相关的,并且因此被动态地确定。当使用象在图9(b)中那样具有独立控制的瓦片的标准总线或NoC解决方案时,不可能从瓦片2了解A或D的哪个首先到达。因此,需要使用可以例如是本地寄存器位置的索引来标注数据,以便能够动态地区分A、B和D。使用在图9(c)中的点到点DCL网络实现方式,A和B将需要从瓦片1到达DCL,并且D需要从瓦片3到达DCL。因为在瓦片1中在B前产生A,所以从瓦片1到达DCL中的顺序是A然后是B,并且,可以不使用标签来区分所有的数据。
在所呈现的实施例中,存在三种类型的存储器存储。由暂存器或高速缓存实现的通常的加载/存储操作访问的大阵列、为由专门操作员访问的瓦片中的小本地存储器和DCL寄存器。两个最后者用于替换用于存储临时变量的在RISC架构中的寄存器文件。那些变量可以根据它们的使用期限被分类。很短期的变量仅被存储在DCL中。它们可以在被产生后被紧后的操作使用。它们可以甚至被几次使用,因为不从DCL自动地破坏数据,并且数据可以被几个操作本地地重新使用。因为在多个输出DCL中的指令的广播能力,可以在几个位置容易地复制单个数据。长期变量可以在其使用期限期间位于对于特定数据保留的DCL中。它们也可以被存储在一个或几个瓦片的本地存储器中。一旦变量在本地存储器中,则需要在操作执行中被使用之前的一个循环读取该变量。因此,必须在前一个指令中发出专用本地存储器操作。簇的总的数据存储包括本地存储器存储和DCL,虽然不能随机地访问全部。
对于在假定8个数据字的本地存储器的情况下象在图6中那样的4个瓦片的簇,有32个本地存储器条目和20个DCL,其中总共52个数据存储位置。关于在LiteFlow处理器实施例中的寄存器使用的、应当注意的重要优点是天然地将数据流执行流水线化。这允许在同一DCL中发送结果的同时在每一个循环执行象多个循环加载的流水线化的长延迟操作。在RISC寄存器架构中,必须使用循环展开,引起较高的寄存器消耗。
图10描述了本发明的另一个实施例。该实施例由一个瓦片的簇构成。该瓦片被瓦片控制器名称TIC图10.11控制。处理元件图10.8被本地控制单元(CU)图10.5控制。簇被簇控制器(CLC)图10.12控制。处理元件在处理元件的CU的请求下通过选择单元来获取它们的操作数。处理元件在CU的控制下向访问DCL的分发单元发送它们的结果。选择单元和分发单元可以是不规则的,这意味着不是所有的DCL对于所有的处理元件端口可用。该特征允许降低那些单元的复杂度。分支单元持有程序计数器,并且提供下一个指令束的图10.15的地址,以存储在指令束寄存器图10.18中。在这个实施例中,可以延迟分支,并且分支可以是统计地预测的分支。
本发明也涉及新的和创造性的代码组织。在此提供的代码组织用于在根据本发明的瓦片的簇上运行的程序,或者更一般地,用于在一组处理元件上运行的程序。不是作为原子指令的序列,在此以块来组织程序,并且程序具有两个执行级。第一级在簇上加载代码的块。那些块由小的和专用的代码段构成,每一个瓦片一个。第二级依序在每一个瓦片上并行执行每个分段。从主指令存储器空间执行第一级,而从使用本地和私有地址空间的小本地缓冲器来本地地执行第二级。该本地地址空间通过使用立即目标地址来允许快速本地分支。一旦已经在簇上加载了块,则可以直接地从指令的本地存储器重新执行指令,而不要求从高速缓存重新加载。
这个两级代码执行具有将在本章节的剩余部分中详细描述的三个主要优点。首先,当本地指令存储器捕获回路时,通过远比高速缓存访问小的本地存储器访问功率来控制获取功耗。第二,在本地代码中的本地分支允许捕获包含复杂控制路径的回路,这增加了重新使用的回路的数量。第三,使用立即地址在本地缓冲器中执行条件分支允许使得分支具有很有限的惩罚的很短的流水线。这允许执行分支密集代码,而不招致重要的性能损失或不使用高耗电减轻技术。
如图11中所示,存在两个执行级。在第一级中,从最后指令存储器获取被称为执行块(EB)的代码块。代码块由被称为子执行块(SEB)的代码段构成。SEB是目标要在瓦片上执行的小指令分段。从主指令存储器空间获取EB,并且向在簇中的瓦片的本地缓冲器分发它们的代码段。在第二执行级中,在簇的所有瓦片上独立地和并行地执行SEB。从本地缓冲器获取它们的指令,并且在瓦片执行流水线中处理它们的指令。
没有其中原子地寻址和执行指令的用于程序的唯一地址空间。存在其中寻址EB的主地址空间和多个本地地址空间,每一个SEB一个本地地址空间。分支的两个级与两个执行级相关联。在第一级,分支修改在EB之间的执行流,并且在主地址空间中表达目标地址。在第二级,分支允许修改在瓦片上的执行的SEB内的执行流,并且在本地缓冲器的本地地址空间中表达短的目标地址。
在图12中示出用于实现两个执行级的整体执行流水线。它具有从EB高速缓存开始并且在瓦片执行阶段结束的四个阶段。前两个第一阶段与EB执行级相关,而后两个与SEB执行级相关。在第一执行级中,从EB高速缓存获取块,并且向瓦片本地缓冲器写入它们的SEB。在第二执行级中,在簇的每一个瓦片中单独地执行SEB。在图12中仅表示了在一个瓦片中的一个SEB执行,通过离开最后的EB执行阶段的虚线来描述对于其他瓦片的SEB分布。借助于EB指针寄存器EBP来访问EB高速缓存,而借助于SEB指针寄存器SEBP来访问在SEB中的指令。使用在流水线中的线寄存器LINE-REG从高速缓存逐行地获取EB。
以两个步骤来解码指令,当EB被从主指令存储器加载并且被写入持有SEB的本地存储器时,完成第一和主解码步骤。当从SEB缓冲器向瓦片控制寄存器读取指令时,执行第二步骤。那两个步骤在图12中被称为解码(1)和解码(2)。在SEB缓冲器中写入前的第一解码步骤进行解码的大部分,而第二步骤仅看作在SEB缓冲器中存储的指令。因为这个第二步骤具有很低的复杂度,所以它允许立即执行从本地缓冲器获取的指令,而不要求专用的流水线阶段。在缓冲器中的压缩的指令格式允许将其大小维持得合理。这两个步骤的解码在解码延迟和解码大小之间进行了折衷。
SEB被封装到EB内,并且在EB执行期间被写入簇的每一个瓦片的本地缓冲器中。它们由指令序列构成,该指令序列编码真实计算以通过程序来执行。在SEB执行期间,从SEB缓冲器获取指令,并且在瓦片上执行该指令。因为该两个步骤解码,所以不需要专用解码流水线阶段。而且,因为瓦片不使用用于操作数的寄存器文件,所以不需要寄存器读取和写回阶段。SEB执行仅需要两个流水线阶段来执行指令,也就是在图12中的本地指令存储器获取和执行、本地获取和解码(2)和执行。
在小的本地存储器中写入SEB,该小的本地存储器作为没有高速缓存机构支持的暂存器被直接地访问。该本地存储器实现了私有地址空间。因此通过必须长得足以持有整个SEB的本地存储器的大小来限制SEB大小。
SEB的执行总是通过其第一指令而开始。之后,内部分支自由地以在SEB中的任何指令为目标。在SEB中的执行顺序是依序的。这意味着如果分支未破坏控制流,则隐含地执行的下面的指令是位于下一个地址的指令。因为分支自由地以任何指令为目标,所以可以从本地SEB缓冲器重复地执行循环或甚至内嵌的循环,而不要求从指令高速缓存重复地重新加载EB。
一旦EB被加载并且开始其执行,则在簇的所有瓦片上并行地执行所有的SEB。在SEB中的执行顺序是依序的,但是未限定属于不同的SEB的指令的执行顺序。事实上,因为指令的执行取决于其操作数可用性,所以其在SEB内的执行顺序被其在代码段中的位置而不是被其真实执行时隙保证。指令的真实执行时隙被动态地确定,并且可以被外部延迟影响,该外部延迟诸如是数据高速缓存未中或来自另一个瓦片的操作数依赖性。图13给出了在4瓦片簇上的单独SEB执行的示例。
从FIR滤波器内核获取示例。该示例首先通过相加来递增索引变量,然后加载数据和系数以最后将它们相乘,并且累加结果。每个SEB持有位于它们的第一地址的单个指令。它们在第一循环期间全部被发出,但是因为数据延迟,它们在这个循环期间不全部被执行。通过操作数可用性来触发它们的实际执行,并且在每一个瓦片中单独地控制该执行。在附图的底部的表格给出了每个指令的执行时隙。加载和MAC操作花费两个循环。在附图中通过带阴影的箭头来表示引起依赖性的数据移动。重要的是注意,因为在每一个瓦片中的独立执行控制和数据流执行,不必用空操作来填充代码段以统计地调度正确的执行。这也不需要在软件流水线化的内核中的序言和结语,减小了程序指令计数。
SEB执行总是通过其第一指令来开始。之后,内部分支是自由的,并且可以以任何指令为目标。可以在代码中单独执行分支指令,或者分支指令可以象在VLIW代码中那样是操作束的一部分,但是仍然用于单个瓦片。在后一种情况下,其执行可以与指令的其他操作部分同步或不同步。当它不同步时,指令的所有操作不立即被调拨,但是总是最后调拨分支操作——如果有的话。这被要求来避免通过获取新的操作束来重写不完全结束的操作束。
本地指令存储器实现本地和私有地址空间。这个地址空间具有有限的大小,并且通常小于或甚至远小于256个指令。因为小于一个字节的小地址的使用,所以将分支目标地址直接地在代码中提供为中间值。事实上,这样的小地址不必是相对的,并且通过向当前的下一个地址加上位移来计算这样的小地址,就像在宽32比特地址空间中的情况下那样。
图14示出在本地流水线中的SEB分支支持实现。专用分支字段被提供有每一个指令。它持有用于条件分支的立即目标地址以及分支操作码。在本地获取阶段的开始,本地控制器根据分支操作码字段opc借助于复用器在下一个SEP指针SEBP和当前指令的立即地址字段之间选择。
该使用立即值的本地分支具有两个优点。第一个是在功耗上。不必维持32比特的全程序计数器,需要对于每一个执行的指令的32比特相加和用于每一个所获取的分支的另一个额外的相加。在小的本地地址空间的情况下,仅需要维持小于1字节的本地计数器,并且对于分支不需要相加。第二优点是延迟。不必使用专用流水线阶段来用于分支目标地址计算。这使得下一个指令跟随可以没有延迟地立即可用的分支,即使在条件分支的情况下。事实上,如图14中所示,在本地存储器获取阶段期间选择下一个顺序地址或分支目标地址。因此,如果当执行分支指令时已知分支条件标记,则对于执行分支没有惩罚。如果在分支执行期间必须计算条件标记,则可以基于低成本静态预测来完成推测。因为该推测仅在获取阶段期间出现,所以不在执行阶段中计算错误的值,并且不必使得复杂状态覆盖机构处理错误的推测。
分支字段相对短,并且花费少于16比特来编码立即目标地址、分支操作码和关于要使用的标记条件来源的信息。这个有限的大小是有趣的,因为分支操作与算术或存储器操作引起被封装在作为一个长指令被编码的操作束中。当执行紧密的循环内核时,封装的分支操作很有用。事实上,当与内核操作一起执行分支操作时,它们不需要专用的时隙。执行分支因此具有零执行延迟开销。与静态执行一起地,它不需要循环展开,减少了EB高速缓存占用和带宽。
需要有效地执行紧密的循环来将在可以甚至跨越几个处的一组瓦片上的内核并行化。当将内核并行化时,在空间计算的情况下,每一个瓦片的指令计数减小,并且可以甚至达到1。在该情况下,每一个瓦片重复地执行单个指令。如上所述,因为零延迟开销分支执行,所以有可能达到在瓦片中的单个指令循环。
在从SEB缓冲器获取指令前,检查其已经存在于瓦片的控制寄存器CTRL-REG中。如果是这样,则不访问缓冲器,并且将瓦片控制寄存器时钟选通。因此,在当重复执行单个指令时的空间计算中,存在来自指令流水线的零个动态功耗,并且仅从控制寄存器直接地重新使用指令。
总之,在SEB中的本地分支提供了延迟和功率效率改善。事实上,本地分支执行惩罚当其方向在执行之前已知时是零个循环,并且当必须计算它时是一个循环。在后一种情况下,推测可以隐藏这个延迟,并且它仅出现在获取阶段中。而且,与指令并行的本地分支执行使得具有用于分支指令本身的零循环。因此,它完全减轻了在很小内核中的分支发出时隙的问题,并且不必使用展开或循环ILP变换。
在具有分支的执行流后,连续地执行EB。EB执行不是依序的,这意味着要执行的下一个EB不隐含地位于下一个地址处的EB。必须通过块分支的执行来明确地确定当结束当前的EB时要执行的下一个跟随的EB。
在瓦片的簇上执行EB,并且EB执行对应于程序执行线程。执行模型允许以与多核处理器可以执行控制的多个线程相同的方式,使用多个线程来在多个簇上执行单个基于EB/SEB的程序。在此,每一个线程执行EB的序列。
EB由报头和几个SEB代码段构成。报头给出作为其大小的解码信息、所使用的瓦片和指令格式。它也可以嵌入与在下面解释的下一个随后的块的静态预测相关的信息。EB持有用于簇的SEB分段,使得它成为二维代码。一个维度与瓦片索引相关,并且第二维度与SEB中的顺序指令相关。这个2D代码具有两个实现缺陷。第一个是高速缓存行组织可能不适合于以可能不使用一些瓦片的方式进一步可变的簇大小。高速缓存也可以被不同的簇共享。在高速缓存和瓦片之间的代码对齐也可以通过使用用于在较少执行的部分中的代码紧凑化的紧凑指令格式而改变。第二个缺陷是SEB可能在同一EB中具有很不同的大小。因为那些问题,EB代码布局不完全依赖于固定高速缓存实现。也可行的是,在空指令的有限使用的情况下来表示可变大小的SEB。
EB代码布局由在主指令存储器空间中的SEB指令的一维序列构成。指令通过它们在EB中的相对地址排序。每一个指令被其SEB索引加前缀,该SEB索引允许与它们的相对地址一起当在簇上加载EB时构造独立的SEB分段。在这个步骤期间,在图12中所示的第一EB解码阶段基于报头、它们的顺序和它们的前缀索引信息向它们相应的瓦片分派SEB指令。在图15中给出了EB代码布局示例。
在图15(a)中给出了EB内容,它持有用于4个瓦片的簇的SEB。不是所有的它的SEB具有相同的指令计数。它的逻辑内容由在图15(b)中所示的SEB指令的序列构成。最低有效地址在行内,而最高有限地址随着行索引增加,这以与在高速缓存索引空间中编址原子指令相同的方式向每一个SEB指令给出了相对位置。当以同一瓦片为目标的两个指令属于同一行时,首先加载在该行中的第一指令,而第二指令等待下一个循环。在该示例中,将以瓦片1在图15(b)的第三行中加前缀的两个指令排序,使得第一insn 1.2在第二insn 1.3前,因此是在瓦片1中的SEB中的它们的相对位置2和3,
在图15(b)和(c)中示出物理高速缓存组织独立性,其中,在两个高速缓存实现中存储相同的EB。在(b)中,高速缓存行是4个指令宽,并且在(c)中,它们仅由两个指令构成。在使用瓦片前缀的第一解码阶段中的指令分派允许在EB中封装SEB指令,而不必维持瓦片对齐并且因此使用空的指令来填充代码。图15(b)和(c)示出仅必须通过在图15(a)中的SEB来插入一个空指令,具有很不同的大小。细小的对齐的实现对于14个有用指令具有10个空的指令,导致42%的未使用的条目。
在EB执行期间,使用在图12中所示的LINE-REG寄存器从EB高速缓存向SEB缓冲器逐行地加载块。通过行组织的这个块布局允许当已经在EB执行的较早开始时加载第一指令行时已经开始SEB执行。基于每个指令的瓦片索引前缀,解码器向它们相应的瓦片派遣指令,即使未在与瓦片对应的行中组织它们。瓦片索引前缀是灵活的,并且允许编译器基于高速缓存大小和它们的可能执行时隙来在EB中布置指令。
与两个执行级一起,存在两个分支级。SEB级允许在仅在SEB内的指令之间分支,而在EB级,在EB之间执行分支。EB分支指令象通常的指令那样被执行,并且是SEB的一部分。因为EB提供了用于整个簇的代码,所以当EB分支出现时,在簇中的所有瓦片必须分支到它们的新SEB。因为在每一个瓦片中的本地控制,必须在簇的每一个瓦片中执行专用控制指令。尽管如此,在瓦片中的所有分支指令不是相同的。在簇的仅一个瓦片中执行仅一个EB分支指令,其他瓦片等待在EB执行期间加载下一个SEB。通过以保留的地址为目标的本地分支来实现这个SEB等待,意味着瓦片等待加载第一个下一个SEB指令以执行。在图16中给出了EB分支示例。
三个EB用它们的SEB来表示。在该附图中,指令前缀表示与块分支相关的分支字段内容。条件分支被称为CB,并且对于在另一个瓦片中发出的块分支的等待被称为W。EB分支执行通过与insn 1.1引起执行本地条件分支CB来在该示例中开始。如果获取了它,则执行EB分支指令EB-BR2,否则执行下面的指令EB-BR1。EB-BR1以EB 3为目标,而EB-BR2以EB 2为目标。独立于该分支结果,瓦片2、3和4通过执行对于新的SEB的等待W分支指令来等待新的SEB。当结束当前的SEB时,执行对于新的SEB的等待。EB 2和EB 3两者用无条件的块分支EB-RB的执行来结束。注意,对于新的SEB的等待,W具有两个功能:(i)允许本地SEB缓冲器存储器被新的SEB安全地重写,而不破坏未执行的指令。并且,(ii)当至少其第一指令就绪时,使用新的SEB来开始执行。
当EB在高速缓存并且结束在所有瓦片中的执行时,对于EB分支的惩罚是四个循环。一个循环执行向EB控制器提供新的地址的分支指令,第二循环从EB高速缓存获取第一块线,第三循环在本地SEB缓冲器中写入它,并且最后,第四循环本地地获取并且向瓦片的瓦片控制寄存器写入这个指令。来自新的EB的第一指令然后准备好在下一个随后的循环被执行。有可能当瓦片准备好时通过旁路本地的SEB缓冲器来将这个分支惩罚减小为三个循环,并且直接地解码和向瓦片控制寄存器派遣指令。当如此进行时,仍然在本地SEB缓冲器中写入该指令的拷贝,以用于可以因为本地分支而导致附加的可能的未来执行。
在EB之间的分支在EB分支指令执行至新的SEB执行之间花费至少三个时钟循环。为了减轻该延迟,使得本地SEB缓冲器持有两个SEB。如图17中所示,本地SEB缓冲器持有两个SEB:SEB 0和SEB1。在执行SEB的同时(2),可以在缓冲器的第二部分中加载新的SEB(1)。因此,新的EB可以开始被仅加载在前一个之后。优点是当当前的SEB已经结束其执行并且新的SEB就绪时,它可以立即被执行,而没有任何惩罚。在附图中被称为S的状态比特提供了用于缓冲器的两个部分的本地地址的最高阶比特。它与在缓冲器的两个部分之间夹着的EB分支切换,
为了在未完成当前的EB时预取新的EB,必须提供新的地址,因为EB执行不是依序的,并且EB分支指令还没有被执行。这个地址被提供在作为最可能执行的下一个块的当前EB的报头中。这对应于在下面的块分支中上的静态预测。当下一个随后的EB地址匹配已经在缓冲器中的两个EB之一时,它不从EB高速缓存再一次被加载,而是相反从缓冲器直接地被重新使用。该块重新使用允许重复地执行跨越缓冲器的两个部分的循环内核而不引发持续加载块的惩罚,或者允许仅使用用于SEB执行的缓冲器的一半。因此可以充分地使用该两个部分SEB缓冲器。
将有可能执行的块的下一个EB地址在编译时间被记录在当前块的报头中。因此,以这个块为目标的EB分支指令不必再一次提供这个地址,因为编译器知道它已经在报头中存在。因此,那些EB分支指令仅被实现为以保留的本地目标地址为目标的本地分支指令。当执行这样的本地分支指令时,它被解释为以已经在缓冲器中的下一个预测块地址为目标的块分支。而且,它可以被执行为用于缓冲器的其他部分的第一指令的本地分支指令。因此,当静态下一个块预测正确时并且当至少第一个下一个SEB指令已经被预取或在缓冲器中有效时,块分支惩罚与作为零循环的本地分支惩罚相同。
虽然已经参考其特定的优选版本以相当多的细节描述了本发明,但是其他版本是可能的。因此,所附的权利要求的精神和范围应当不限于其中包含的优选版本的描述。
读者的注意力被引导到与本申请同时提交并且与本申请一起对于公众查看开放的所有文章和文件,并且通过引用在此包含所有这样的文章和文件的内容。在本说明书(包括任何所附的权利要求、摘要和附图)中公开的所有特征可以被替换为用于相同、等同或类似的目的的替代特征,除非另外明确地描述。除非另外地明确地所述,所公开的每一个特征仅是等同或类似特定的通用系列的一个示例。
引用文献
21.A.Jerraya and W.Wolf,″Multiprocessor Systems-on-Chips″.Elsevier,2004.
31.B.Bougard,B.De Sutter,D.Verkest,L.Van der Perre,and R.Lauwereins,″A Coarse-Grained Array Accelerator forSoftware-Deffned Radio Baseband Processing″,Micro,IEEE,vol.28,pp.41-50,July-Aug.2008.
32.H.Singh,M.-H.Lee,G.Lu,F.Kurdahi,N.Bagherzadeh,and E.Chaves Filho,″MorphoSys:an integratedreconfigurable system for data-parallel and computation-intensive applicaticns″,Computers,IEEE Transactions on,vol.49,pp.465-481,May 2000.
33.V.Baumgarte,G.Ehlers,F.May,A.N.M.Vorbach,andM.Weinhardt,″PACT XPP-self-reccnfigurabie dataprocessing architecture″,The Journal of Supercomputing,vol.26,pp.167-184,September 2003.
34.P.Heysters,G.Smit,E.Molenkamp,and G.Rauwerda,″Flexibility of the Montium Coarse-Grained ReconfigurableProcessing Tile″,in 4th PROGRESS Symposium on EmbeddedSystems,Nieuwegein,The Netherlands.,pp.102-108,2003.
35.M.Butts,″Synchronization through Communication in aMassively Perallel Processor Array″,Micro,IEEE,vol.27,pp.32-40,Sept.-Oct.2007.
37.M.Taylor,J.Kim,J.Miller,D.Wentzlaff,F.Ghodrat,B.Greenwald,H.Eoff-man,P.Johnson,J.-W.Lee,W.Lee,A.Ma,A.Saraf,M.Seneski,N.Shnidman,V.Strumpen,M.Frank,S.Amarasinghe,and A.Agarwal,″The Rawmicroprocessor:a computational fabric for softwarecircuits and general-purpose programs″,Micro,IEEE,vol.22,pp.25-35,Mar/Apr 2002.
60.S.Pasricha and N.Dutt,″On-chip communicationarchitectures:system on chip interconnect″.MorganKaufmann,2008.
61.L.Benini and G.D.Micheli,″Networks on Chips:technology and tools″.Morgan Kaufmann,2006.
64.M.Taylor,G.Psota,A.Saraf,N.Shnidman,V.Strumpen,M.Frank,S.Amarasinghe,A.Agarwal,W.Lee,J.Miller,D.Wentzlaff,I.Bratt,B.Greenwald,H.Hoffmann,P.Johnson,and J.Kim,″Evaluation of the Rawmioroprocessor:an exposed-wire-delay architecture for ILPand streams″,in Computer Architecture,2004.Proceedings.31st Annual International Symposium on,pp.2-13,June2004.
66.M.Butts,A.M.Jones,and P.Wasson,″A structuralobject programming model,architecture,chip and tools forreconfigurable computing″,Field-Programmable CustomComputing Machines,Annual IEEE Symposium on,vol.0,pp.55-64,2007.
67.D.Kissler,F.Hannig,A.Kupriyanov,and J.Teich,″Adynamically reconfigurable weakly prognammable processorarray architecture template″,in International Workshop onReconfigurable Communication Centric System-on-Chips(ReCoSoC),pp.31-37,2006.
71.R.Bajwa,M.Hiraki,H.Kojima,D.Gorny,K.Nitta,A.Shridhar,K.Seki,and K.Sasaki,″Instruction buffering toreduce power in processors for signal processing″,VeryLarge Scale Integration(VLSI)Systems,IEEE Transactionson,vol.5,pp.417-424,Dec 1997.
72.M.Jayapala,F.Barat,T.Vander Aa,F.Catthoor,H.Corporaal,and G.Deconinck,″Clustered loop bufferorganization for low energy VLIW embedded processors″,Computers,IEEE Transactions on,vol.54,pp.672-683,Jun2005.
73.T.V.Aa,M.Jayapala,H.Corporaal,F.Catthoor,andG.Deconinck,″Impact of ILP-imprcving Code Transformationson Instruction Memory Energy″,in Proc.of 11th Workshop onInteraction between Compilers and Architectures(INTERACT-11),pp.443-448,2007.
78.J.Dennis and D.Misunas,″A preliminary architecturefor a basic data-ow processor″,ACM SIGARCH ComputerArchitecture News,vol.3,no.4,pp.126-132,1974.
79.G.Papadopoulos and D.Culler,″Monsoon:an explicittoken-store architecture″,in Proceedings of the 17thannual international symposium on Computer Architecture,pp.82-91,ACM New York,NY,USA,1990.
80.A.Davis,″The architecture and system method of DDM1:A recursively structured Data Driver.Machine″,inProceedings of the 5th annual symposium on Computerarchitecture,pp.210-215,ACM New York,NY,USA,1978.
81.M.Kishi,H.Yasuhara,and Y.Kawamura,″Dddp-adistributed data driven processor″,in Proceedings of the10th annual international symposium on Computerarchitecture,pp.236-242,ACM New York,NY,USA,1983.
82.M.Amamiya,M.Takesue,R.Easegawa,and H.Mikami,″DFM:the data ow machine highly parallel symbolmanipulation″,in Proceedings of the 1987 Fall JointComputer Conference on Exploring technology:tcday andtomorrow,pp.602-611,IEEE Computer Society Press LosAlamitos,CA,USA,1987.
83.Y.Patt,W.Hwu,and X.Shebanow,″HPS,a newmicroarchitecture:rationale and introduction″,inProceedings of the 18th annual workshop onMicroprogramming,pp.103-108,ACM New York,NY,USA,1985.
84.Y.Patt,S.Melvin,W.Hwu ,and M.Shebanow,″Criticalissues regarding EPS,a high performancemicroarchitecture″,in Proceedings of the 18th annualworkshop on Microprogramming,pp.109-116,ACM New York,NY,USA,1985.
85.S.Weiss and J.Smith,″Instrtction issue logic forpipelined supercoxputers″,ACM SIGARCH ComputerArchitecture News,vol.12,no.3,pp.110-118,1984.
86.J.Smith and G.Sohi,″The microarchitecture ofsuperscalar processors″,Prcceedings of the IEEE,vol.83,no.12,pp.1609-1624,1995.
87.R.Tomasulo,″An e#cient algorithm for exploitingmultiple arithmetic units″,IBM Journal of research andDevelopment,vol.11,no.1,pp.25-33,1967.
88.R.Kessler et al.,″The alpha 21264 microprccessor″,IEEE micro,vol.19,no.2,pp.24-36,1999.
89.S.McFarling,″Combining branch predictors″,tech.rep.,Technical Report TN-36,Digital Western ResearchLaboratory,1993.
90.J.Smith and A.Pleszkun,″Implcmenting preciseinterrupts in pipelined processors″,IEEE Transactions onComputers,vol.37,no.5,pp.562-573,1988.
91.S.Swanson,K.Michelson,A.Schwerin,and M.Oskin,″WaveScalar″,in Proceedings of the 36th InternationalSymposium on Microarchitecture (MICRO),Citeseer,2003.
92.S.Swanson,A.Schwerin,M.Mercaldi,A.Petersen,A.Putnam,K.Michelscn,M.Oskin,and S.Eggers,″Thewavescalar architecture″,ACM Transactions on ComputerSystems(TOCS ),vol.25,no.2,p.4,2007.
93.K.Kavi,R.Giorgi,and J.Arul,″Scheduled data ow:execution paradigm,architecture,and performanceevaluation″,IEEE Transactions on Computers,pp.834-846,2001.
94.K.Sankaralingam,R.Nagarajan,H.Liu,C.Kim,J.Huh,D.Burger,S.Keckler,and C.Mcore,″Exploiting ILP,TLP,and DLP with the polymorphous TRIPS architecture″,inProceedings of the 30th annual international symposium onComputer architecture,p.433,ACM,20003.
95.M.Homewood,D.May,D.Shepherd,and R.Shepherd,″TheIMS T 800transputer.″,IEEE Micro,vol.7,no.5,pp.10-26,1987.
96.A.Duller,G.Panesar,and D.Towner,″ParallelProcessing-the picoChip way″,Communicating ProcessingArchitectures,pp.125-138,2003.
97.Z.Yu,M.Meeuwsen,R.Apperson,O.Sattari,M.Lai,J.Webb,E.Work,D.Truong,T.Mohsenin,and B.Baas,″AsAP:An asynchronous array of simple processors″,IEEE Journalof Solid State Circuits,vol.43,no.3,p.695,2008.
98.M.Butts,B.Budlong,P.Wasson,and E.White,″Reconfigurable Work Farms on a Massively ParallelProcessor Array″,in Field-Programmable Custom ComputingMachines,2008.FCCM′08.16th International Symposium on,pp.206-215,April 2008.
99.″Tilera.″http://www.tilera.com.
100.C.Moritz,D.Yeung,and A.Agarwal,″Exploringoptimal cost-performance designs for Raw microprocessors″,in FPGAs for Custom Computing Machines,1998.Proceedings.IEEE Symposium on,pp.12-27,Apr1998.
101.E.Corporaal and H.Mulder,″MOVE:A framework forhigh-performance processor design″,in Proceedings of the1991ACM/IEEE confererce on Supercomputing,pp.692-701,ACM New York,NY,USA,1991.
102.H.Corporaal and M.Arnold,″Using transport triggeredarchitectures for embedded processor
103.J.Leijten,J.van Meerbergen,A.Timmer,and J.Jess,″PROPHID:a datadriver.multi-processor architecture forhigh-performance DSP″,in Proceedings of the 1997Europeanconference on Design and Test,IEEE Computer SocietyWashington,DC,USA,1997.
104.K.Goossens,J.Dielissen,and A.Radulescu,″Aethereal network on chip:concepts,architectures,andimplementations″,IEEE Design and Test of Computers,vol.22,no.5,pp.414-421,2005.
105.W.Hwu,S.Mahlke,W.Chen,P.Chang,N.Warter,R.Bringmann,R.Ouellette,R.Hank,T.Kiyohara,G.Haab,etal.,″The superblock:an effective technique for VLIW andsuperscalar compilation″,The Journal of Superccnputing,vol.7,no.1,pp.229-248,1993.
Claims (12)
1.一种允许并行执行指令的线程的处理器,包括:
一个或多个指令存储器,所述一个或多个指令存储器包括多个指令束,所述多个指令束包括一个或多个指令,
多个点到点通信装置,以下称为数据通信链路,其中,能够存储数据,所述多个点到点通信装置包括
写入端口,其中,能够通过执行写入操作来写入数据,并且其中,能够获得关于写入操作可用性的信息,
读取端口,其中,能够通过执行读取操作来按照与先前对于所述写入端口执行的写入操作的次序相关的预定义顺序来读取数据,并且其中,能够获得关于读取操作可用性的信息,
多个处理装置,以下称为处理元件,
其中,通过以下来执行所述指令:处理从一个或多个所述读取端口获得的输入数据,并且向一个或多个所述写入端口写入通过所述执行产生的所述数据,
其中,能够通过基于指令数据执行由所述数据通信链路提供的所述读取和写入操作来明确地管理在所述数据通信链路中存储的数据,
其中,仅使用所述点到点通信装置来执行在所述处理元件上执行的指令之间的数据通信,
其中,基于由所述数据通信链路提供的读取和写入操作信息可用性来同步在所述处理元件上的所述指令执行,
其中,对于每一个指令存储器,存在所述处理元件中作为提供要执行的下一个所述指令束的地址的分支单元的处理元件。
2.根据权利要求1所述的处理器,
其中,所述处理元件进一步被分组成瓦片,
其中,一组所述读取端口连接到所述瓦片输入端并且在所述瓦片处理元件之间共享,并且,
其中,一组所述写入端口连接到所述瓦片输出端并且在所述瓦片处理元件之间共享,并且
其中,所述数据通信链路中的一个或多个使得它们的写入端口连接到一个瓦片输出端,并且使得它们的读取端口连接到不同的瓦片输入端,
其中,在相同的所述瓦片中执行的所述指令遵循基于在所述执行的指令数据中指定的优先级的预定义顺序。
3.根据权利要求2所述的处理器,
其中,所述瓦片进一步被分组成簇,所述簇每一个包括
单个指令存储器,
单个分支单元处理元件,
其中,所述簇指令存储器基于由所述簇分支单元提供的所述地址来向每一个所述簇瓦片提供指令束。
4.根据权利要求3所述的处理器,其中,一些处理元件是允许存储程序长期变量的存储装置。
5.根据权利要求4所述的处理器,其中,数据通信链路能够执行另外的操作,所述另外的操作包括:
数据读取操作,所述数据读取操作不消耗在所述通信链路中存储的数据,
数据写入操作,所述数据写入操作即使当写入操作不可用时也强制在所述数据通信链路中的写入操作,
刷新操作,所述刷新操作擦除在所述数据通信链路中存储的所有数据。
6.根据权利要求5所述的处理器,
其中,每一个处理元件进一步包括一个控制装置,所述控制装置基于指令数据、处理元件输入数据通信链路可用性信息和处理元件输出数据通信链路可用性信息来提供控制信号,
其中,每一个瓦片进一步包括一个控制装置,所述控制装置用于提供用于在所述处理元件中处理指令执行协调的控制信号,并且提供用于通知在所述处理元件中执行的所述指令的最后执行循环的控制信号,
其中,每一个簇进一步包括控制装置,所述控制装置用于基于由所述瓦片控制装置提供的控制信号来提供用于通知允许所述簇执行下一个指令的控制信号。
7.根据权利要求6所述的处理器,
其中,所有的控制装置集中在单个控制装置中。
8.根据权利要求6所述的处理器,其中,每一个瓦片进一步包括:
一个选择装置
包括连接到所述数据通信链路读取端口的一个或多个输入端口,
包括连接到处理元件输入端的一个或多个输出端口,
其中,基于来自所述处理装置控制装置的控制信号,向每一个所述处理元件控制装置提供关于一个或多个所述数据通信链路读取端口读取操作可用性的信息,
其中,基于来自所述处理元件控制装置的控制信号,向每一个所述处理元件输入端提供来自一个或多个所述数据通信链路读取端口的数据,
其中,基于来自所述处理元件控制装置的控制信号来对于所述数据通信链路读取端口执行操作,以及
一个分发装置
包括连接到处理元件输出端和所述处理装置控制装置的一个或多个输入端口,
包括连接到所述数据通信链路写入端口的一个或多个输出端口,
其中,向每个所述处理装置控制装置提供关于所述数据通信链路写入端口写入操作可用性的信息,
其中,基于来自所述处理元件控制装置的控制信号,从所述处理元件输出端向一个或多个所述数据通信链路写入端口提供数据,
其中,基于来自所述处理元件控制装置的控制信号,对于所述数据通信链路写入端口执行操作。
9.根据权利要求8所述的处理器,
其中,每一个瓦片进一步包括多个选择装置,并且其中,每一个瓦片处理元件输入端被划分为一个或多个组,并且,独立的所述选择装置归属于每一个组,并且所有瓦片数据通信链路读取端口的仅仅子集连接到所述选择装置输入端,
其中,每一个瓦片进一步包括多个分发装置,其中,数据通信链路写入端口被划分为多个组,并且,一个独立的所述分发装置归属于每组,并且其中,处理元件输出端的仅仅子集连接到所述分发装置输入端。
10.根据权利要求6所述的处理器,其中,所述指令存储器向所述簇控制装置提供用于通知所获取的指令束的可用性的信号。
11.一种允许在权利要求3的处理器上执行程序的方法,所述方法包括:
a)从每一个簇指令存储器读取指令束;
b)当由向处理元件提供数据的指令指定的数据通信链路对于读取操作全部可用,并且由接收由所述处理元件计算的数据的指令指定的数据通信链路对于写入操作全部可用时,在所述处理元件中执行所述指令;
c)对于由所述指令指定的、其中分发数据的所述数据通信链路执行写入操作;
d)对于由所述指令指定的、从其向功能单元提供数据的所述数据通信链路执行读取操作;
e)计算要在所述分支单元中获取的下一个指令束的地址
f)当执行来自当前束的所有指令时,请求获取下一个指令束。
12.根据权利要求11所述的方法,所述指令执行步骤用下述验证来进一步限制在每一个瓦片内的指令执行:只有已经首先执行了在所述瓦片中具有高优先级的所有其他指令,才能够执行在所述瓦片中执行的指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB1001621.0A GB201001621D0 (en) | 2010-02-01 | 2010-02-01 | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
GB1001621.0 | 2010-02-01 | ||
PCT/EP2011/051297 WO2011092323A1 (en) | 2010-02-01 | 2011-01-31 | A tile-based processor architecture model for high efficiency embedded homogneous multicore platforms |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102782672A CN102782672A (zh) | 2012-11-14 |
CN102782672B true CN102782672B (zh) | 2015-05-20 |
Family
ID=42084294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180007985.5A Active CN102782672B (zh) | 2010-02-01 | 2011-01-31 | 用于高效嵌入式同类多核平台的基于瓦片的处理器架构模型 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9275002B2 (zh) |
EP (1) | EP2531929B1 (zh) |
JP (1) | JP5762440B2 (zh) |
KR (1) | KR101713815B1 (zh) |
CN (1) | CN102782672B (zh) |
CA (1) | CA2788263C (zh) |
GB (1) | GB201001621D0 (zh) |
WO (1) | WO2011092323A1 (zh) |
Families Citing this family (122)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
WO2011159309A1 (en) | 2010-06-18 | 2011-12-22 | The Board Of Regents Of The University Of Texas System | Combined branch target and predicate prediction |
US9946665B2 (en) * | 2011-05-13 | 2018-04-17 | Melange Systems Private Limited | Fetch less instruction processing (FLIP) computer architecture for central processing units (CPU) |
WO2013100783A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for control signalling in a data path module |
JP5876319B2 (ja) * | 2012-02-21 | 2016-03-02 | 日本電信電話株式会社 | サービス提供システム、サービス提供方法、リソースマネージャ、プログラム |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
WO2015035341A1 (en) * | 2013-09-06 | 2015-03-12 | Huawei Technologies Co., Ltd. | System and method for an asynchronous processor with assisted token |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
KR102174335B1 (ko) * | 2013-11-01 | 2020-11-04 | 삼성전자주식회사 | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 |
KR102197071B1 (ko) * | 2014-02-04 | 2020-12-30 | 삼성전자 주식회사 | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 |
KR102204282B1 (ko) * | 2013-11-25 | 2021-01-18 | 삼성전자주식회사 | 다수의 기능 유닛을 가지는 프로세서를 위한 루프 스케쥴링 방법 |
CN104750659B (zh) * | 2013-12-26 | 2018-07-20 | 中国科学院电子学研究所 | 一种基于自动布线互连网络的粗粒度可重构阵列电路 |
US20160246602A1 (en) * | 2015-02-19 | 2016-08-25 | Arizona Board Of Regents On Behalf Of Arizona State University | Path selection based acceleration of conditionals in coarse grain reconfigurable arrays (cgras) |
US9513832B2 (en) | 2015-03-25 | 2016-12-06 | International Business Machines Corporation | Accessing global data from accelerator devices |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US20170083341A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Segmented instruction block |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10031756B2 (en) | 2015-09-19 | 2018-07-24 | Microsoft Technology Licensing, Llc | Multi-nullification |
US20170083338A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Prefetching associated with predicated load instructions |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
US10061584B2 (en) | 2015-09-19 | 2018-08-28 | Microsoft Technology Licensing, Llc | Store nullification in the target field |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US20170083313A1 (en) * | 2015-09-22 | 2017-03-23 | Qualcomm Incorporated | CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs) |
US20170315812A1 (en) | 2016-04-28 | 2017-11-02 | Microsoft Technology Licensing, Llc | Parallel instruction scheduler for block isa processor |
US10402168B2 (en) | 2016-10-01 | 2019-09-03 | Intel Corporation | Low energy consumption mantissa multiplication for floating point multiply-add operations |
US10891254B2 (en) | 2016-10-26 | 2021-01-12 | Intel Corporation | Switchable topology processor tile and computing machine |
US10496409B2 (en) | 2016-11-22 | 2019-12-03 | The Arizona Board Of Regents | Method and system for managing control of instruction and process execution in a programmable computing system |
US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US11531552B2 (en) | 2017-02-06 | 2022-12-20 | Microsoft Technology Licensing, Llc | Executing multiple programs simultaneously on a processor core |
US11113051B2 (en) | 2017-04-28 | 2021-09-07 | Tenstorrent Inc. | Processing core with metadata actuated conditional graph execution |
US10817293B2 (en) | 2017-04-28 | 2020-10-27 | Tenstorrent Inc. | Processing core with metadata actuated conditional graph execution |
US20180341488A1 (en) * | 2017-05-26 | 2018-11-29 | Microsoft Technology Licensing, Llc | Microprocessor instruction predispatch before block commit |
CN110998513A (zh) * | 2017-06-22 | 2020-04-10 | Icat有限责任公司 | 高吞吐量处理器 |
US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10467183B2 (en) * | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
CN107562549B (zh) * | 2017-08-21 | 2019-12-03 | 西安电子科技大学 | 基于片上总线和共享内存的异构众核asip架构 |
US11360934B1 (en) * | 2017-09-15 | 2022-06-14 | Groq, Inc. | Tensor streaming processor architecture |
US11243880B1 (en) | 2017-09-15 | 2022-02-08 | Groq, Inc. | Processor architecture |
US11114138B2 (en) | 2017-09-15 | 2021-09-07 | Groq, Inc. | Data structures with multiple read ports |
US11868804B1 (en) | 2019-11-18 | 2024-01-09 | Groq, Inc. | Processor instruction dispatch configuration |
US11170307B1 (en) | 2017-09-21 | 2021-11-09 | Groq, Inc. | Predictive model compiler for generating a statically scheduled binary with known resource constraints |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
US20190101952A1 (en) * | 2017-09-30 | 2019-04-04 | Intel Corporation | Processors and methods for configurable clock gating in a spatial array |
US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
US10380063B2 (en) * | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
GB201717295D0 (en) | 2017-10-20 | 2017-12-06 | Graphcore Ltd | Synchronization in a multi-tile processing array |
US10963003B2 (en) | 2017-10-20 | 2021-03-30 | Graphcore Limited | Synchronization in a multi-tile processing array |
GB2569269B (en) | 2017-10-20 | 2020-07-15 | Graphcore Ltd | Synchronization in a multi-tile processing arrangement |
GB2569275B (en) | 2017-10-20 | 2020-06-03 | Graphcore Ltd | Time deterministic exchange |
GB2569276B (en) | 2017-10-20 | 2020-10-14 | Graphcore Ltd | Compiler method |
GB2569775B (en) | 2017-10-20 | 2020-02-26 | Graphcore Ltd | Synchronization in a multi-tile, multi-chip processing arrangement |
GB2569271B (en) | 2017-10-20 | 2020-05-13 | Graphcore Ltd | Synchronization with a host processor |
GB2569844B (en) | 2017-10-20 | 2021-01-06 | Graphcore Ltd | Sending data off-chip |
CN109697084B (zh) * | 2017-10-22 | 2021-04-09 | 刘欣 | 一个用于时分复用流水线处理器的快速访问存储器结构 |
US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
US10963379B2 (en) | 2018-01-30 | 2021-03-30 | Microsoft Technology Licensing, Llc | Coupling wide memory interface to wide write back paths |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
CN110347632B (zh) * | 2018-04-04 | 2022-05-06 | 杭州海康机器人技术有限公司 | 一种通信方法和装置 |
US10929136B2 (en) * | 2018-04-11 | 2021-02-23 | Futurewei Technologies, Inc. | Accurate early branch prediction using multiple predictors having different accuracy and latency in high-performance microprocessors |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
GB2575294B8 (en) | 2018-07-04 | 2022-07-20 | Graphcore Ltd | Host Proxy On Gateway |
US10606797B2 (en) * | 2018-07-05 | 2020-03-31 | Mythic, Inc. | Systems and methods for implementing an intelligence processing computing architecture |
US10824429B2 (en) | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
CN111079908B (zh) * | 2018-10-18 | 2024-02-13 | 上海寒武纪信息科技有限公司 | 片上网络数据处理方法、存储介质、计算机设备和装置 |
EP4009184A1 (en) | 2018-10-18 | 2022-06-08 | Shanghai Cambricon Information Technology Co., Ltd | Network-on-chip data processing method and device |
US11455370B2 (en) | 2018-11-19 | 2022-09-27 | Groq, Inc. | Flattened input stream generation for convolution with expanded kernel |
GB2579412B (en) | 2018-11-30 | 2020-12-23 | Graphcore Ltd | Gateway pull model |
GB2580165B (en) * | 2018-12-21 | 2021-02-24 | Graphcore Ltd | Data exchange in a computer with predetermined delay |
US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US11900156B2 (en) * | 2019-09-24 | 2024-02-13 | Speedata Ltd. | Inter-thread communication in multi-threaded reconfigurable coarse-grain arrays |
US11409643B2 (en) | 2019-11-06 | 2022-08-09 | Honeywell International Inc | Systems and methods for simulating worst-case contention to determine worst-case execution time of applications executed on a processor |
CN114930351A (zh) | 2019-11-26 | 2022-08-19 | 格罗克公司 | 使用仅单个侧从多维阵列加载操作数并输出结果 |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
US12086080B2 (en) | 2020-09-26 | 2024-09-10 | Intel Corporation | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits |
CN112463717B (zh) * | 2020-11-05 | 2022-07-22 | 上海交通大学 | 一种粗粒度可重构架构下条件分支实现方法 |
KR20230159596A (ko) * | 2021-03-26 | 2023-11-21 | 아세니움 인코포레이티드 | 추론적 인코딩을 사용하는 병렬 처리 아키텍처 |
KR20240038109A (ko) * | 2021-08-12 | 2024-03-22 | 아세니움 인코포레이티드 | 분산 레지스터 파일을 사용한 병렬 처리 아키텍처 |
KR20240090242A (ko) * | 2021-10-12 | 2024-06-21 | 아세니움 인코포레이티드 | 번치 버퍼를 사용한 로딩 레이턴시 개선 |
CN114610394B (zh) * | 2022-03-14 | 2023-12-22 | 海飞科(南京)信息技术有限公司 | 指令调度的方法、处理电路和电子设备 |
WO2023198453A1 (en) * | 2022-04-12 | 2023-10-19 | Technische Universität Berlin | A computer processor |
CN116841618B (zh) * | 2023-07-04 | 2024-02-02 | 上海耀芯电子科技有限公司 | Tta处理器的指令压缩方法和系统,解压方法和系统 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0782478B2 (ja) * | 1987-04-15 | 1995-09-06 | 工業技術院長 | マルチプロセツサシステム |
US5471593A (en) * | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
JP3384601B2 (ja) * | 1994-02-23 | 2003-03-10 | 三洋電機株式会社 | 並列処理計算機 |
US7315934B2 (en) * | 2002-03-06 | 2008-01-01 | Matsushita Electric Industrial Co., Ltd. | Data processor and program for processing a data matrix |
US7472258B2 (en) * | 2003-04-21 | 2008-12-30 | International Business Machines Corporation | Dynamically shared group completion table between multiple threads |
US20050050305A1 (en) * | 2003-08-28 | 2005-03-03 | Kissell Kevin D. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
US20080235490A1 (en) * | 2004-06-18 | 2008-09-25 | Anthony Mark Jones | System for configuring a processor array |
US7831804B2 (en) * | 2004-06-22 | 2010-11-09 | St Microelectronics S.R.L. | Multidimensional processor architecture |
US7394288B1 (en) * | 2004-12-13 | 2008-07-01 | Massachusetts Institute Of Technology | Transferring data in a parallel processing environment |
EP1952583A4 (en) * | 2005-11-07 | 2009-02-04 | Ambric Inc | SYSTEM OF VIRTUAL DATA CHANNELS BETWEEN CLOCK LIMITS IN AN INTEGRATED CIRCUIT |
US7577820B1 (en) * | 2006-04-14 | 2009-08-18 | Tilera Corporation | Managing data in a parallel processing environment |
US20080244238A1 (en) * | 2006-09-01 | 2008-10-02 | Bogdan Mitu | Stream processing accelerator |
US7552312B2 (en) * | 2007-02-09 | 2009-06-23 | International Business Machines Corporation | Identifying messaging completion in a parallel computer by checking for change in message received and transmitted count at each node |
US7979674B2 (en) * | 2007-05-16 | 2011-07-12 | International Business Machines Corporation | Re-executing launcher program upon termination of launched programs in MIMD mode booted SIMD partitions |
US7814295B2 (en) * | 2007-05-18 | 2010-10-12 | International Business Machines Corporation | Moving processing operations from one MIMD booted SIMD partition to another to enlarge a SIMD partition |
US7831803B2 (en) * | 2007-07-19 | 2010-11-09 | International Business Machines Corporation | Executing multiple instructions multiple date (‘MIMD’) programs on a single instruction multiple data (‘SIMD’) machine |
US7831802B2 (en) * | 2007-07-19 | 2010-11-09 | International Business Machines Corporation | Executing Multiple Instructions Multiple Data (‘MIMD’) programs on a Single Instruction Multiple Data (‘SIMD’) machine |
CN101299199A (zh) * | 2008-06-26 | 2008-11-05 | 上海交通大学 | 基于可配置处理器及指令集扩展的异构多核系统 |
US9003165B2 (en) * | 2008-12-09 | 2015-04-07 | Shlomo Selim Rakib | Address generation unit using end point patterns to scan multi-dimensional data structures |
US8713285B2 (en) * | 2008-12-09 | 2014-04-29 | Shlomo Selim Rakib | Address generation unit for accessing a multi-dimensional data structure in a desired pattern |
US20100281234A1 (en) * | 2009-04-30 | 2010-11-04 | Novafora, Inc. | Interleaved multi-threaded vector processor |
US20100281236A1 (en) * | 2009-04-30 | 2010-11-04 | Novafora, Inc. | Apparatus and method for transferring data within a vector processor |
US9298621B2 (en) * | 2011-11-04 | 2016-03-29 | Hewlett Packard Enterprise Development Lp | Managing chip multi-processors through virtual domains |
US9424191B2 (en) * | 2012-06-29 | 2016-08-23 | Intel Corporation | Scalable coherence for multi-core processors |
-
2010
- 2010-02-01 GB GBGB1001621.0A patent/GB201001621D0/en not_active Ceased
-
2011
- 2011-01-31 KR KR1020127022959A patent/KR101713815B1/ko active IP Right Grant
- 2011-01-31 US US13/576,219 patent/US9275002B2/en active Active
- 2011-01-31 CN CN201180007985.5A patent/CN102782672B/zh active Active
- 2011-01-31 JP JP2012550469A patent/JP5762440B2/ja active Active
- 2011-01-31 EP EP11705833.9A patent/EP2531929B1/en active Active
- 2011-01-31 WO PCT/EP2011/051297 patent/WO2011092323A1/en active Application Filing
- 2011-01-31 CA CA2788263A patent/CA2788263C/en active Active
Also Published As
Publication number | Publication date |
---|---|
CA2788263A1 (en) | 2011-08-04 |
US9275002B2 (en) | 2016-03-01 |
KR20120140653A (ko) | 2012-12-31 |
EP2531929B1 (en) | 2020-06-24 |
EP2531929A1 (en) | 2012-12-12 |
JP2013529322A (ja) | 2013-07-18 |
JP5762440B2 (ja) | 2015-08-12 |
WO2011092323A1 (en) | 2011-08-04 |
GB201001621D0 (en) | 2010-03-17 |
US20120303933A1 (en) | 2012-11-29 |
KR101713815B1 (ko) | 2017-03-09 |
CN102782672A (zh) | 2012-11-14 |
CA2788263C (en) | 2019-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102782672B (zh) | 用于高效嵌入式同类多核平台的基于瓦片的处理器架构模型 | |
CN109213723B (zh) | 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质 | |
Sankaralingam et al. | Trips: A polymorphous architecture for exploiting ilp, tlp, and dlp | |
CN105378651B (zh) | 具有可编程优化的存储器-网络处理器 | |
KR100497078B1 (ko) | 프로그램 제품 및 데이터 처리장치 | |
CN109074261A (zh) | 用于乱序块isa处理器的增量调度器 | |
CN104040490A (zh) | 用于多引擎微处理器的加速的代码优化器 | |
CN104040491A (zh) | 微处理器加速的代码优化器 | |
CN104040492A (zh) | 微处理器加速的代码优化器和依赖性重排序方法 | |
US20160239461A1 (en) | Reconfigurable graph processor | |
KR101445794B1 (ko) | 소프트웨어 기반 무선통신 터미널을 위한 프로그래밍 가능한 장치 | |
CN116670644A (zh) | 通用计算核上的交错处理的方法 | |
EP4384902A1 (en) | Parallel processing architecture using distributed register files | |
Seidel | A Task Level Programmable Processor | |
US20230221931A1 (en) | Autonomous compute element operation using buffers | |
US20240264974A1 (en) | Parallel processing hazard mitigation avoidance | |
US20220308872A1 (en) | Parallel processing architecture using distributed register files | |
US20220291957A1 (en) | Parallel processing architecture with distributed register files | |
KR20240050339A (ko) | 원자 조작을 위한 병렬 처리 아키텍처 | |
Wijtvliet et al. | Concept of the Blocks Architecture | |
Rutzig | Multicore platforms: Processors, communication and memories | |
WO2023183279A1 (en) | Autonomous compute element operation using buffers | |
JP2004102988A (ja) | データ処理装置 | |
CN118708534A (zh) | 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质 | |
Kavitha et al. | Performance Enhancement of MRPSOC for Multimedia Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |