CN105393240A - 具有辅助异步向量处理器的异步处理器的方法和装置 - Google Patents

具有辅助异步向量处理器的异步处理器的方法和装置 Download PDF

Info

Publication number
CN105393240A
CN105393240A CN201480041103.0A CN201480041103A CN105393240A CN 105393240 A CN105393240 A CN 105393240A CN 201480041103 A CN201480041103 A CN 201480041103A CN 105393240 A CN105393240 A CN 105393240A
Authority
CN
China
Prior art keywords
vxu
instruction
vector
processor
token
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201480041103.0A
Other languages
English (en)
Other versions
CN105393240B (zh
Inventor
张其蕃
史无限
葛屹群
黄韬
童文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN105393240A publication Critical patent/CN105393240A/zh
Application granted granted Critical
Publication of CN105393240B publication Critical patent/CN105393240B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8092Array of vector units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3871Asynchronous instruction pipeline, e.g. using handshake signals between stages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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/3891Concurrent 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F2009/3883Two-engine architectures, i.e. stand-alone processor acting as a slave processor

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)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种异步处理系统,包括:异步标量处理器和耦合到所述标量处理器的异步向量处理器。所述异步标量处理器用于对输入数据执行处理功能并输出指令。所述异步向量处理器用于响应从所述标量处理器接收的超长指令字(VLIW)执行处理功能。所述VLIW包括第一部分和第二部分,所述第一部分至少包括向量指令。

Description

具有辅助异步向量处理器的异步处理器的方法和装置
技术领域
本发明一般涉及异步电路技术,尤其涉及一种具有辅助异步向量处理器的异步处理器。
背景技术
高性能的同步数字处理系统利用流水线来增加并行性能和吞吐量。在同步系统中,流水线导致划分出或细分出许多更小的块或级,并在位于各块/级之间的寄存器中应用系统时钟。系统时钟启动处理过程以及数据由一级至另一级的移动,各级中的所述处理必须在一个固定的时钟周期内完成。当某些级完成处理所花费的时间少于时钟周期时,下一处理级必须等待-增加了处理延迟(其为附加的)。
相比之下,异步系统(即,无时钟)不利用系统时钟,并且一般而言,一旦前一级中的处理完成,下一级便开始其自己的处理。异步处理系统具有一些有益效果或特点。每个处理级可以具有不同的处理延迟,输入数据可以一经抵达就进行处理,并且仅在有需要的时候消耗功率。
图1示出了现有技术的萨瑟兰(Sutherland)异步微流水线架构100。所述萨瑟兰异步微流水线架构是使用穆勒-C(Muller-C)元件构建的握手协议来控制微流水线构件的异步微流水线架构的一种形式。该架构100包括通过触发器或锁存器104(例如,寄存器)依次相连的多个计算逻辑102。控制信号通过穆勒-C元件106在计算块之间传递并通过延迟逻辑108进行延迟。描述这种架构100的进一步信息由伊万·萨瑟兰(IvanSutherland)发表在1989年6月的ACM通讯(CommunicationsoftheACM)第32卷第6期第720-738页,ACM纽约,美国纽约,其通过引用结合于本申请中。
现在参考图2,其示出了同步系统200的典型部分。该系统200包括用于为逻辑块210的输出信号(数据)206定时的触发器或寄存器202,204。在图2的右侧,示出了亚稳态概念的图示。为了避免亚稳态,必须考虑设置时间和保持时间。换言之,在设置时间和保持时间过程中,数据必须是有效的并被保持,否则可能会发生设置违例212或保持违例214。如果发生任一所述违例,同步系统则可能会出现故障。亚稳态概念也适用于异步系统。因此,设计异步系统以使其避免亚稳态是很重要的。此外,正如同步系统一样,异步系统也需要处理各种潜在的数据/指令冲突,并且应包括检测和解决这些冲突的绕开机构和流水线互锁机构。
因此,需要稳定且能够检测并解决潜在冲突的异步处理系统、异步处理器以及异步处理方法。
发明内容
根据一实施例,提供了一种异步处理系统,包括:异步标量处理器和耦合到所述标量处理器的异步向量处理器。所述异步标量处理器用于对输入数据执行处理功能并输出指令。所述异步向量处理器用于响应于从所述标量处理器接收的超长指令字(VLIW)执行处理功能。所述VLIW包括第一部分和第二部分,至少所述第一部分包括向量指令。
在另一实施例中,提供了一种异步处理系统的操作方法,该异步处理系统包括异步标量处理器和耦合到该异步标量处理器的异步向量处理器。所述方法包括:在所述标量处理器对输入数据执行处理功能,并且向所述向量处理器发送超长指令字(VLIW)。所述VLIW包括第一部分和第二部分,至少所述第一部分包括向量指令。所述方法包括:对所接收的VLIW执行处理功能。
附图说明
为了更全面地理解本发明及其优点,现结合说明书附图进行以下描述,其中相同的附图标记指示相同对象,其中:
图1示出了现有技术的一种异步微流水线架构;
图2为示出了一种同步系统中亚稳态概念的方框图;
图3A示出了根据本发明公开实施例的一种异步处理系统;
图3B示出了根据本发明公开实施例的图3A所示的异步标量处理器的示例的方框图;
图3C示出了根据本发明公开实施例的图3A所示的异步向量处理器的示例的方框图;
图4示出了根据本发明公开实施例的一种由两个标量指令形成的向量处理器VLIW指令的示例;
图5示出了根据本发明公开实施例的图3C所示的向量指令提取块的示例的方框图;
图6示出了根据本发明公开实施例的一种令牌环架构的示例;
图7示出了根据本发明公开实施例的一种异步处理器架构的示例;
图8示出了根据本发明公开实施例的在ALU内进行选通的基于令牌的流水线;
图9示出了根据本发明公开实施例的用于ALU间令牌传递系统的基于令牌的流水线;
图10示出了一种可在其中使用异步处理器和处理系统的通信系统的示例;以及
图11A和图11B示出了一种可在其中使用异步处理器和处理系统的设备的示例。
具体实施方式
异步技术旨在消除同步技术对全局时钟树的需求,该全局时钟树不仅大量消耗芯片能量和芯片面积,同时也降低了电路较快部分的速度(S)以匹配较慢部份(即,最终时钟树速率取决于电路最慢部分)。为了去除时钟树(或使时钟树最小化),异步技术需要一种特殊的逻辑来实现两个连续的无时钟处理电路之间的握手协议。一旦无时钟处理电路完成其操作并进入稳定状态,则触发一个信号(例如,“请求”信号),并下发给其后续电路。如果后续电路已准备好接收数据,则后续电路向前述电路发送信号(例如,“ACK”信号)。虽然这两个电路的处理延迟是不同的,并随时间而变化,但握手协议确保了电路或电路级联的正确性。
Hennessy和Patterson为流水线中的指令会产生错误回复这种情况创造了术语“冲突”。当两个指令可能试图同时使用相同资源的时候,会发生结构冲突。当盲目调度的指令尝试在寄存器文件中的数据可用之前使用该数据的时候,会发生数据冲突。
参照图3A,示出了根据本发明的一种异步处理系统300的方框图。所述系统300包括异步标量处理器310、异步向量处理器330、缓存控制器320和L1/L2缓存存储器340。应理解,术语“异步处理器”可以指处理器310、处理器330或者二者的组合。虽然仅示出了一个处理器310、330,处理系统300可以包括这些处理器中的多个。此外,应理解,每个处理器中可以包括多个CPU、控制单元、执行单元和/或ALU等。例如,异步标量处理器310可以包括多个执行单元,其中每个执行单元具有所需数量的流水线级。在一个示例中,处理器310可以包括16个执行单元,且每个执行单元具有五个级。类似地,异步向量处理器330可以包括多个执行单元,且每个执行单元具有所需数量的流水线级。
L1/L2缓存存储器340可以细分为L1和L2缓存,并且还可以细分为指令缓存和数据缓存。同样地,缓存控制器320可以按功能进行细分。
现在参考图3B,其更详细地示出了图3A中所示的异步标量处理器310的方框图。异步标量处理器310包括耦合到资源总线3112的寄存器文件3102。标量处理器310还包括指令调度器3105、多个CPU(也称为执行单元(XU))3122和交叉总线3124。如前所述,异步标量处理器310耦合到缓存控制器320和/或L1/L2缓存340,以及异步向量处理器330。
指令调度器3105用于调度一个或多个指令并驱动多个CPU3122。当指令正在由指定CPU执行时,指令调度器3105用于将另一指令调度给该指定CPU(例如,预取其它指令)。每个CPU的预取指令存放在相应的CPU指令寄存器3114中。
指令调度器3105包括指令定时历史表3115以及反馈引擎3120。指令调度器3105用于解码从存储器/缓存接收到的指令,确定该指令的定时,基于历史表3115计算数据相关性,并更新历史表3115。例如,反馈引擎3120用于从存储器和/或缓存接收指令,解码接收到的指令,并通过历史表3115检测数据相关性。举例说明,反馈引擎3120用于访问历史表3115,以确定该数据是否在交叉总线3124上或在寄存器文件3102中。为了确定这一点,反馈引擎3115可以追踪寄存器文件3102的指定寄存器最后修改的时间。这个时间可以存储在历史表3115中。
交叉总线3124用于解决数据冲突,并通过从指定CPU访问寄存器写入操作的结果来提供寄存器文件3102的旁路,而不必从寄存器文件3102中读取寄存器写入操作的结果。
多个CPU3122由令牌环3125连接。令牌环3125用于通过沿令牌信号路径将给定令牌从一个处理组件传播给其它处理组件来解决公共资源的结构冲突。
现在参考图3C,其更详细地示出了图3A中所示的异步向量处理器330的方框图。本发明的各方面提供了包括异步向量协处理器的无时钟异步处理器体系的架构和技术。
异步向量处理器330包括寄存器文件3302、乘法/累加(MAC)单元3304、算术逻辑单元(ALU)3306、特殊的寄存器文件3308和耦合到公共资源多路复用器3312的查找表(LUT)3310。向量处理器330还包括输入FIFO3314、指令预解码器3316、预加载模块3318、反馈引擎3320、多个CPU(也称为向量执行单元(VXU))3322和VXU多路复用器(VMUX)3324。如前所述,异步向量处理器330耦合到缓存控制器320和/或L1/L2缓存340,以及异步标量处理器310。
向量处理器330操作超长指令字(VLIW)。图4示出了一种由两个标量指令N和N+1形成向量处理器VLIW指令3200的示例。如图所示,VLIW指令3200包括64比特和3个时隙。VLIW指令在64比特前加有前缀“11”。每个时隙包含可以并行执行的“子”指令。每个“子”指令是单独的指令、多数据(SIMD)指令。例如,第一时隙3202(即“时隙-0”)是支持向量加载/存储、向量ALU、MOVE和CONV、特殊寄存器读/写、查找表(LUT)和短标量指令(SSI)的23位时隙。第二时隙3204(例如,“时隙-1”)是支持向量MUL/MAC指令的16位时隙,第三时隙3206(例如,“时隙-2”)是类似于第一时隙3202的23位时隙。对于时隙-0和时隙-2,MSB为0时,SSI嵌入子指令内。向量引擎指令3200中的未使用时隙可填充NOP指令。如图所示,向量引擎指令3200内的指令仅使用62比特。两个最高有效位(MSB)3210用于区分VLIW与纯标量指令。
这些VLIW指令由从指令缓存中读取标准指令的标量处理器310产生。标量处理器310通过执行特定解码功能(例如,加载/存储指令的地址计算),并向向量处理器330提供相关联的标量数据和/或存储器地址以生成VLIW指令令。向量处理器VLIW指令的执行独立于标量处理器指令的执行。根据这些指令,向量处理器330可以将执行结果返回给标量处理器310。
用于追踪目的的信息也可以随VLIW指令发送至向量处理器330。该追踪信息有助于识别启动VLIW和相关的程序计数器先进先出(FIFO)指针的标量处理器执行单元对,参见下文中结合图5的详细描述。该追踪信息还有助于指示向量处理器330返回给标量处理器310的任何数据。
输入FIFO3314存储来自标量处理器310的VLIW指令和标量寄存器内容。其还接收来自标量处理器310的其它信息,例如标量执行单元ID、LOAD指令和SSI的PCFIFO计数和指示符。只要输入FIFO3314不为空,指定VXU3322就可以从输入FIFO3314中读取指令。只要输入FIFO3314未满,输入FIFO3314将继续从标量处理器3100接收VLIW指令。当VLIW指令占用最后一个存储时隙时,输入FIFO将被填满。输入FIFO3314将通知标量处理器310不再给向量处理器310发送VLIW指令。换言之,即使标量处理器310内的执行单元接收到向量处理器令牌,它将保留该令牌直到来自输入FIFO3314的变满通知被删除。
当VLIW指令从标量处理器310到达输入FIFO3314时,解除输入FIFO空信号的有效状态(de-asserted)。当指定VXU3322从输入FIFO读取最后一个VLIW指令时,激活输入FIFO空信号的有效状态(asserted)。
指令预解码器3316对VLIW指令执行一些预解码功能,例如分析指令类型并确定VLIW内是否存在任何SSI或标量指令。向预加载模块3318发送加载(LOAD)请求,该预加载模块3318发送地址、请求和其它信息给缓存控制器320。缓存控制器320从L1/L2缓存340中请求该数据。并且,缓存控制器320向请求该加载的指定VXU3322发送数据。
反馈引擎3320负责确定指令的输入参数的来源。输入参数可以来自向量寄存器和VMUX3324。为了确定这一点,反馈引擎3320追踪每个向量寄存器最后修改的时间。这个时间可以存储在历史表中。历史表中的每个表项可以对应于一个向量寄存器,并且可以包含指定向量寄存器最后修改的时间。
应理解,输入FIFO3314、指令预编码器3316、预加载模块3318和反馈引擎3320可以统称为向量处理器接口(VPI)或向量指令提取(VIF)块350。
当指定VXU3322读取VLIW指令时,时间增加。基于所读取的指令,VFB指向VR表项并提取其最后一次修改的时间。然后将最后一次修改时间与指令执行的当前时间进行比较。如果差值等于或小于6(所示的VXU的数目),则意味着VMUX3324中指定向量寄存器的内容可用。否则,当时间差值大于6时,指令必须直接从向量寄存器中检索参数。
VXU3322也可按照与向量寄存器相类似的方式,使用特殊寄存器3308(选择/布尔(Boolean)寄存器)。反馈引擎3320确定是否应从VMUX3324或指定的特殊寄存器3308中读取特殊寄存器3308的输入参数。
VXU3322监督向量处理器330的操作并控制向量处理器330内所有的令牌和脉冲发生。指定VXU3322在执行当前VLIW指令时,从反馈引擎3320中接收VLIW指令。根据嵌入在VLIW指令中的具体指令,指定VXU3322从多个可能的源头收集输入操作数。指令由指定VXU或其它计算资源来执行。
令牌流过各VXU3322。在所示实施例中,向量处理器330中共有6个相同的VXU。每个VXU3322用于执行一个VLIW指令内的三个子指令,每个时隙执行一个子指令。每个时隙有其自己的解码器。各所述VXU3322的输出被耦合到VMUX3324。这使得其它VXU一旦做好准备就能使用这些向量输出。
VXU3322的代表功能包括:为向量处理器的操作生成异步脉冲;执行可以分成两个独立的64位部分的简单的128位SIMD操作;管理令牌的流动;执行不使用对齐寄存器的向量加载/存储指令;执行一些最常用的和非计算密集型的指令;在一个VLIW指令中支持三个独立的指令;解码每个指令并生成用于在VXU中执行的内部控制信号;每个时隙支持多达三个输入向量寄存器和一个输出向量寄存器;并支持通过寄存器返回端口向量寄存器回写。
仍参考图3C,向量处理器330包括多种接口或端口。这些接口或端口包括指令端口3402、复位和异常端口3404、加载数据端口3406、存储数据端口3408和寄存器返回端口3410。
标量处理器310和向量处理器330之间通过复位和异常端口3404交换复位指示或异常报告。当用户复位标量处理器310时,标量处理器310通过复位和异常端口3404将复位信号传递到向量处理器330。类似地,向量处理器330使用复位和异常端口3404将异常信息返回给标量处理器310。此信息可用来识别导致异常的指令。
标量处理器330和向量引擎处理器330之间通过加载数据端口3406交换加载操作。向量处理器330用于生成地址/宽度请求并通过存储数据端口3408向缓存控制器320和L1/L2缓存340发送该请求。
寄存器返回端口3410向寄存器提供对标量处理器310中的寄存器的回访。向量处理器330执行的计算结果可通过寄存器返回端口3410反馈给标量处理器310,并进入标量寄存器中。寄存器返回端口3410将值返回给标量处理器310中启动VLIW的执行单元对。向量处理器330内部的寄存器返回令牌控制对访问寄存器返回端口3410的访问,以避免指令竞争。
现在参考图5,其更详细地示出了示例性的向量处理器接口(VPI)或向量指令提取(VIF)块350。如前所述,VIF块350包括输入FIFO3314、指令预解码器3316、预加载模块3318以及反馈引擎3320。VIF块350与标量处理器310连接并接收用于向量处理器330的指令。如图所示,将第一标量执行单元3502生成的第一标量指令3512与第二执行单元3504生成的第二标量指令3514相结合以形成一条VLIW指令3520。VIF块350存储所接收的VLIW和输入FIFO3314中与其相关联的信息,并且根据请求将它们发送给指定VXU3322。在指定VXU3322准备好操作加载指令之前,VIF块350将向量加载地址提取至缓存控制器320,以预先启动加载操作。VIF块350还通过指令预解码器3316对VLIW指令中的多个指令进行预处理,以确定在何处检索输入操作数。加载模块3318为缓存控制器320提取向量加载地址,以进行数据相关性解析。
图6示出了作为图1所示架构的替换方案的一种令牌环架构600的示例。这种架构的组件由芯片实现的标准函数库所支持。例如,令牌环架构600包括令牌处理逻辑单元610。令牌处理逻辑610包括令牌感测锁存逻辑612和可变延迟链614。在一些实施例中,令牌处理逻辑单元610还可以包括脉冲/激活生成逻辑616。令牌处理逻辑单元610可以包括用于检测令牌接收的任意适当电路。令牌处理逻辑单元610用于沿令牌信号路径将令牌从一个处理组件传播到其它处理组件。
正如上述图1所描述的,萨瑟兰异步微流水线架构需要由非标准穆勒-C元件实现的握手协议。为了避免使用穆勒-C元件(如图1中所示),采用一系列令牌处理逻辑单元来控制不同计算逻辑(未示出)的处理,例如芯片上的处理单元(例如,ALU)或者其它功能计算单元,或者控制计算逻辑对诸如寄存器或存储器等系统资源的访问。为了克服某些计算逻辑的较长延迟,将令牌处理逻辑单元610复制几份拷贝并设置成如620中所示的串联的令牌处理逻辑单元。串联620中的每个令牌处理逻辑单元610控制一个或多个令牌信号630(与一个或多个资源相关联)的传递。通过串联620中的令牌处理逻辑单元传递的令牌信号630形成令牌环640。令牌环640控制计算逻辑(未示出)对与该令牌信号相关联的系统资源(例如,存储器、寄存器)的访问。令牌处理逻辑按顺序接受、保持并传递彼此间的令牌信号630。当令牌信号630由令牌处理逻辑单元610保持时,与该令牌处理逻辑单元相关联的计算逻辑被授权独占访问对应于该令牌信号的资源,直到该令牌信号被传递给该令牌环中的下一令牌处理逻辑单元。保持并传递令牌信号使计算逻辑终止对于对应的资源的访问或使用,本文中称其为对令牌的消耗。一旦令牌被消耗,其由给定令牌处理逻辑单元释放给该令牌环中的后续令牌处理逻辑单元。
图7示出了一种异步处理器架构3101。该架构包括如上述图6所示的令牌环架构中并联的多个自定时(异步)算术逻辑单元(ALU)3122。每个ALU3122可以对应于图6所示的令牌处理逻辑单元610。异步处理器架构3101还包括:反馈引擎3120、指令/定时历史表3115、寄存器(存储器)3102和交叉开关3124,其中所述反馈引擎3120用于在ALU3122之间恰当地分配输入指令,所述指令/定时历史表3115能够被反馈引擎3120访问以便确定指令的分配,所述寄存器(存储器)3102能够被ALU3122访问,所述交叉开关3124用于在ALU3122之间交换所需信息。所述历史表3115用于指示传输到处理器系统的多条输入指令之间的定时和相关性信息。来自指令缓存/存储器的指令由反馈引擎3120接收,该反馈引擎利用历史表3115检测或计算数据相关性并确定指令时序。反馈引擎3120对每条指令进行预解码以判断该指令需要多少输入操作数。之后,反馈引擎3120查找历史表3115以查明该片数据是否在交叉开关3124上或寄存器文件3102上。如果数据是在交叉总线3124上找到的,则反馈引擎3120计算是哪个ALU产生的数据。将该信息标记为分配给ALU3122的指令。反馈引擎3120也相应地更新历史表3115.
图8示出了在ALU内进行选通的基于令牌的流水线,本文中也称为ALU内令牌选通系统(tokengatingsystem)2800的基于令牌的流水线。ALU内令牌选通系统2800包括多个令牌,该多个令牌包括:与开始和解码指令相关联的发射令牌2802、与从寄存器文件读取数值相关联的寄存器访问令牌2804、与程序计数器跳转相关联的跳转令牌(jumptoken)2806、与访问存储器相关联的存储器访问令牌2808、与读取下一条指令相关联的指令预取令牌2810、与使用其它资源相关联的其它资源令牌2812以及与寄存器和存储器提交相关联的提交令牌(committoken)2814。
按照流水线的给定顺序采用指定令牌来对其它指定令牌进行选通。这意味着,当指定令牌经过ALU时,允许令牌环架构中的该同一ALU随后对第二指定令牌进行处理并传递。换言之,ALU释放一个令牌成为以该给定顺序消耗(处理)该ALU中另一令牌的条件。
图8中示出了令牌选通关系的一个具体示例。本领域技术人员应理解可以使用其它令牌选通关系。在所示示例中,发射令牌(L)2802选通寄存器访问令牌(R)2804,寄存器访问令牌(R)又依次选通跳转令牌(PC令牌)2806。跳转令牌2806选通存储器访问令牌(M)2808、指令预取令牌(F)2810以及可能使用的其它可能的资源令牌2812。这意味着,令牌M2808、令牌F2810和其它资源令牌2812只能在传递跳转令牌后由ALU消耗掉。这些令牌选通提交令牌(W)2814到寄存器或存储器。提交令牌2814在本文中也称为一种用于写入指令的令牌。提交令牌2814依次选通发射令牌2802。来自选通令牌(流水线中的一令牌)的选通信号被用作传输到选通令牌(流水线下一顺序中的令牌)的消耗条件逻辑的输入。例如,当发射令牌(L)2802被释放给下一ALU时,向寄存器访问或读取令牌(R)2804产生激活信号(activesignal)。这确保了直到发射令牌2802真正发射指令时,任意ALU才读取寄存器文件。
图9示出了ALU间令牌传递系统2900的基于令牌的流水线。ALU令牌间传递系统2900包括第一ALU2902和第二ALU2904。消耗掉的令牌信号向公共资源触发脉冲。例如,第一CPU2902中的寄存器访问令牌2804向寄存器文件(未示出)触发脉冲。该令牌信号在释放给下一ALU(例如,第二ALU2904)之前被延迟这样一段时间,即,第一ALU2902和第二ALU2904之间的公共资源(例如,寄存器文件)上没有发生结构冲突。这些令牌不仅保护多个ALU免于按照程序计数器(PC)的顺序开始并提交(或写入)指令,也避免了多个ALU之间的结构冲突。
图10示出了可用于实现本文所公开的设备和方法的通信系统1400的示例。通常,系统1400能够使多个无线用户发送并接收数据和其它内容。系统1400可以实现一种或多种信道接入方法,例如,码分多址(CDMA)、时分多址(TDMA)、频分多址(FDMA)、正交FDMA(OFDMA)或单载波FDMA(SC-FDMA)。
在本示例中,通信系统1400包括用户设备(UE)1410a-1410c、无线接入网络(RAN)1420a-1420b、核心网络1430、公共交换电话网络(PSTN)1440、因特网1450和其它网络1460。虽然图10中示出了一定数量的这些组件或元件,但是系统1400中可以包括任意数量的这些组件或元件。
UE1410a-1410c用于在系统1400中操作和/或通信。例如,UE1410a-1410c用于发送和/或接收无线信号或有线信号。每个UE1410a-1410c表示任何合适的终端用户设备,并且可以包括这样的装置例如(或可以称为),用户设备/设备(UE)、无线发射/接收单元(WTRU)、移动站、固定或移动用户单元、寻呼机、蜂窝电话、个人数字助理(PDA)、智能电话、笔记本电脑、计算机、触控板、无线传感器或消费电子设备。
这里的RAN1420a-1420b分别包括基站1470a-1470b。每个基站1470a-1470b设置成与一个或多个UE1410a-1410c无线连接,以便能够访问核心网络1430、PSTN1440、因特网1450和/或其它网络1460。例如,基站1470a-1470b可以包括(或者是)几个众所周知的设备中的一种或多种,例如:基站收发台(BTS)、基站(NodeB)、演进型基站(eNodeB)、家庭NodeB、家庭eNodeB、站点控制器、接入点(AP)或无线路由器、或服务器、路由器、交换机、或其它具有有线或无线网络的处理实体。
在图10所示示例中,基站1470a形成RAN1420a的一部分,RAN1420a可以包括其它基站、元件和/或设备。同样,基站1470b形成RAN1420b的一部分,RAN1420b可以包括其它基站、元件和/或设备。每个基站1470a-1470b适于发送和/或接收某一特定地理区域或范围内的无线信号,有时称为“小区”。在一些实施例中,可以采用多输入多输出(MIMO)技术,其中每个小区具有多个收发器。
基站1470a-1470b利用无线通信链路通过一个或多个空中接口1490与一个或多个所述UE1410a-1410c进行通信。空中接口1490可以利用任何适当的无线接入技术。
设想所述系统1400可以使用多信道访问功能,包括如上所述的方案。在具体实施例中,基站和UE实现LTE、LTE-A和/或LTE-B。当然,也可以使用其它多址方案和无线协议。
RAN1420a-1420b与核心网络1430进行通信以提供语音、数据、应用、网络电话(VoIP)或其它服务给UE1410a-1410c。可以理解的是,RAN1420a-1420b和/或核心网络1430可以与一个或多个其它RAN(未示出)直接或间接通信。核心网络1430还可以作为访问其它网络(诸如PSTN1440、因特网1450和其它网络1460)的网关。此外,部分或全部UE1410a-1410c可以包括采用不同无线技术和/或协议在不同无线链路上与不同无线网络进行通信的功能。
虽然图10示出了通信系统的一个示例,但可以对图10进行各种改变。例如,通信系统1400可以包括任意数量的UE、基站、网络或任何合适配置的其它组件,并且还可以包括本文中任意附图所示的EPC。
图15A和图15B示出了可以实现本发明的方法和教导的设备的示例。具体地,图11A示出了示例性UE1410,图11B示出了示例性基站1470。这些组件可以用于系统1400或任何其它合适的系统中。
如图11A中所示,UE1410包括至少一个处理单元1500。处理单元1500实现UE1410的各种处理操作。例如,处理单元1500可以执行信号编码、数据处理、功率控制、输入/输出处理或任何其它能够使UE1410在系统1400中操作的功能。处理单元1500还支持上文中详细描述的方法和教导。每个处理单元1500包括用于执行一个或多个操作的任何合适的处理或计算设备。例如,每个处理单元1500可以包括微处理器、微控制器、数字信号处理器、现场可编程门阵列或专用集成电路。处理单元1500可以是异步处理器310,330或本文中所描述的处理系统300。
UE1410还包括至少一个收发器1502。收发器1502用于调制至少一个天线1504所发送的数据或其它内容。收发器1502还用于解调所述至少一个天线1504所接收的数据或其它内容。每个收发器1502包括任何用于生成以无线方式接收的无线传输和/或处理信号的信号的合适结构。每个天线1504包括任何用于发送和/或接收无线信号的合适结构。UE1410中可以使用一个或多个收发器1502,UE1410中可以使用一个或多个天线1504。虽然收发器1502示为单个功能单元,但是也可以采用至少一个发送器和至少一个独立的接收器来实现。
UE1410还包括一个或多个输入/输出设备1506。输入/输出设备1506有助于与用户的交互。每个输入/输出设备1506包括任何用于向诸如扬声器、麦克风、小键盘、键盘、显示器或触摸屏等用户提供信息或从中接收信息的合适结构。
此外,UE1410包括至少一个存储器1508。存储器1508存储由UE1410使用、生成或收集的指令和数据。例如,存储器1508可以存储由处理单元1500执行的软件或固件指令以及用于降低或消除输入信号中的干扰的数据。每个存储器1508包括任何合适的易失性和/或非易失性存储和检索设备。可以使用任何合适类型的存储器,例如,随机存取存储器(RAM)、只读存储器(ROM)、硬盘、光盘、用户身份识别(SIM)卡、记忆棒、安全数字(SD)存储卡等等。
如图11B所示,基站1470包括至少一个处理单元1550、至少一个发送器1552、至少一个接收器1554、一个或多个天线1556、一个或多个网络接口1560和至少一个存储器1558。处理单元1550实现基站1470的各种处理操作,例如信号编码、数据处理、功率控制、输入/输出处理或任何其它功能。处理单元1550还可以支持上文中详细描述的方法和教导。每个处理单元1550包括用于执行一个或多个操作的任何合适的处理或计算设备。例如,每个处理单元1550可以包括微处理器、微控制器、数字信号处理器、现场可编程门阵列或专用集成电路。处理单元1550可以是本文中所描述的异步处理器310,330或处理系统300。
每个发送器1552包括任何用于生成向一个或多个UE或其它设备无线传输的信号的合适结构。每个接收器1554包括任何用于处理从一个或多个UE或其它设备无线接收的信号的合适结构。虽然至少一个发送器1552和至少一个接收机1554示为分离的部件,但是可以组合成收发器。每个天线1556包括任何用于发送和/或接收无线信号的合适结构。共用天线1556在这里示意为耦合到发送器1552和接收器1554,可以将一个或多个天线1556耦合到发送器1552,可以将一个或多个单独的天线1556耦合到接收器1554。每个存储器1558包括任何合适的易失性和/或非易失性存储和检索设备。
本领域技术人员已知关于UE1410和基站1470的其它细节。因此,为了清楚起见,这里对这些细节进行了省略。
在一些实施例中,一个或多个设备的部分或者全部功能或进程由计算机程序实现或支持,该计算机程序由计算机可读程序代码形成并且包含在计算机可读介质中。短语“计算机可读程序代码”包括任何类型的计算机代码,包括:源代码、目标代码和可执行代码。短语“计算机可读介质”包括任何能够由计算机访问的介质,例如,只读存储器(ROM)、随机存取存储器(RAM)、硬盘驱动器、光盘(CD)、数字视频光盘(DVD)或者任何其它类型的存储器。
阐述一下本专利文件中使用的特定词语和短语的定义是非常有利的。术语“包括”和“包含”及其衍生词是指没有限制的包括。术语“或”是指包含在内的,意味着和/或。短语“与...相关联”和“与其相关联”及其衍生词是指包括、被包括在内、与...互连、包含、被包含在内、连接到或与…连接、耦合到或与…耦合、与…通信、与…配合、交织、并列、与…邻近、绑定到或与…绑定、具有、具有...的属性等等。
尽管本发明已经描述了一些实施例和通常相关联的方法,本领域技术人员可以对这些实施例和方法进行显而易见的改变和变换。相应地,示例性实施例的上述描述并不限定或限制本发明。在不偏离所附权利要求所限定的本发明精神和范围的前提下,可以进行其它改变、替换和变换。

Claims (20)

1.一种异步处理系统,其特征在于,包括:
异步标量处理器,用于对输入数据执行处理功能并输出指令;和
异步向量处理器,耦合到所述异步标量处理器,并且用于响应从所述标量处理器接收的超长指令字VLIW执行处理功能,所述VLIW包括第一部分和第二部分,所述第一部分至少包括向量指令。
2.根据权利要求1所述的处理系统,其特征在于,所述向量处理器包括:
向量指令提取VIF块,用于预解码所接收的VLIW并向一个或多个向量执行单元VXU发送预解码向量指令。
3.根据权利要求2所述的处理系统,其特征在于,所述VLIW的第二部分包括标量指令,并且所述标量处理器和所述向量处理器分别并行处理所述标量指令和所述向量指令。
4.根据权利要求1所述的处理系统,其特征在于,所述向量处理器包括:
多个并行的异步向量执行单元VXU,各所述VXU用于生成指令执行结果;和
向量指令提取VIF块,与所述标量处理器连接并接收用于所述向量处理器执行的VLIW指令,所述VIF块耦合到各异步VXU并且用于向各所述VXU调度单独的向量指令。
5.根据权利要求4所述的处理系统,其特征在于,所述向量处理器还包括:
交叉开关,耦合到各VXU和所述VIF块,所述交叉开关用于存储所述指令执行结果。
6.根据权利要求5所述的处理系统,其特征在于,所述向量处理器还包括:
寄存器文件,耦合到各VXU和所述VIF模块,所述寄存器文件用于存储所述指令执行结果。
7.根据权利要求6所述的处理系统,其特征在于:
响应于所述交叉开关中当前存储有第一向量执行结果,指定VXU用于从所述交叉开关获取所述第一向量执行结果并且绕开所述寄存器文件中所述第一向量执行结果的读取操作;以及
响应于所述交叉开关中当前未存储第一向量执行结果,指定的VXU用于从所述寄存器文件获取所述第一向量执行结果。
8.根据权利要求7所述的处理系统,其特征在于,所述VIF块包括反馈引擎和历史表,所述历史表用于存储所述寄存器文件内的寄存器最后修改的时间,所述反馈引擎用于基于所述寄存器文件内的寄存器最后修改的时间,通过所述历史表检测数据相关性。
9.根据权利要求4所述的处理系统,其特征在于,各VXU包括用于接收、保持并将令牌从一个VXU向另一个VXU传递的令牌处理逻辑;
其中,所述令牌处理逻辑包括所述多个VXU中的令牌信号路径,以使令牌通过所述多个VXU传播,其中所述多个VXU之一拥有所述令牌,使得所述VXU与所述多个VXU共享的资源组件进行交易。
10.根据权利要求9所述的处理系统,其特征在于,所述令牌处理逻辑用于以一传播速率传播令牌,所述传播速率与VXU相关联延迟有关。
11.根据权利要求10所述的处理系统,其特征在于,所述延迟是可变的并且基于所述VXU所要进行的操作。
12.一种异步处理系统的操作方法,其特征在于,所述异步处理系统包括异步标量处理器和耦合到所述异步标量处理器的异步向量处理器,所述方法包括:
在所述标量处理器对输入数据执行处理功能,并且向所述向量处理器发送超长指令字VLIW,所述VLIW包括第一部分和第二部分,所述第一部分至少包括向量指令;以及
对所接收的VLIW执行处理功能。
13.根据权利要求12所述的方法,其特征在于,还包括:
预解码所接收的VLIW并向一个或多个向量执行单元VXU发送预解码向量指令。
14.根据权利要求13所述的方法,其特征在于,所述VLIW的第二部分包括标量指令,并且所述方法还包括:
所述标量处理器和所述向量处理器分别并行处理所述标量指令和所述向量指令。
15.根据权利要求12所述的方法,其特征在于,所述向量处理器包括多个并行的异步向量执行单元VXU,各VXU用于生成指令执行结果,并且所述方法还包括:
接收用于所述向量处理器执行的VLIW指令;以及
向各所述VXU调度单独的向量指令。
16.根据权利要求15所述的方法,其特征在于,还包括:
在耦合到各VXU的交叉开关中存储指令执行结果。
17.根据权利要求16所述的方法,其特征在于,还包括:在耦合到各VXU的寄存器文件中存储所述执行结果。
18.根据权利要求17所述的方法,其特征在于,还包括:
响应于所述交叉开关中当前存储有第一向量执行结果,指定的VXU从所述交叉开关获取所述第一向量执行结果并且绕开所述寄存器文件中所述第一向量执行结果的读取操作;以及
响应于所述交叉开关中当前未存储第一向量执行结果,指定的VXU从所述寄存器文件获取所述第一向量执行结果。
19.根据权利要求18所述的方法,其特征在于,还包括:
在历史表中存储所述寄存器文件内的寄存器最后修改的时间;以及
基于所述寄存器文件内的寄存器最后修改的时间,通过所述历史表检测数据相关性。
20.根据权利要求15所述的方法,其特征在于:
各VXU包括用于接收、保持并将令牌从一个VXU向另一个VXU传递的令牌处理逻辑;
其中,所述令牌处理逻辑包括所述多个VXU中的令牌信号路径,以使令牌通过所述多个VXU传播,其中所述多个VXU之一拥有所述令牌,使得所述VXU与所述多个VXU共享的资源组件进行交易。
CN201480041103.0A 2013-09-06 2014-09-08 具有辅助异步向量处理器的异步处理器的方法和装置 Active CN105393240B (zh)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US201361874914P 2013-09-06 2013-09-06
US201361874794P 2013-09-06 2013-09-06
US201361874866P 2013-09-06 2013-09-06
US201361874810P 2013-09-06 2013-09-06
US201361874889P 2013-09-06 2013-09-06
US201361874856P 2013-09-06 2013-09-06
US201361874880P 2013-09-06 2013-09-06
US61/874,856 2013-09-06
US61/874,810 2013-09-06
US61/874,794 2013-09-06
US61/874,914 2013-09-06
US61/874,880 2013-09-06
US61/874,866 2013-09-06
US61/874,889 2013-09-06
PCT/US2014/054620 WO2015035340A1 (en) 2013-09-06 2014-09-08 Method and apparatus for asynchronous processor with auxiliary asynchronous vector processor

Publications (2)

Publication Number Publication Date
CN105393240A true CN105393240A (zh) 2016-03-09
CN105393240B CN105393240B (zh) 2018-01-23

Family

ID=52626716

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201480040566.5A Pending CN105431819A (zh) 2013-09-06 2014-09-08 异步处理器消除亚稳态的方法和装置
CN201480040506.3A Active CN105379121B (zh) 2013-09-06 2014-09-08 基于时钟时延调整的异步处理器的方法和设备
CN201480041103.0A Active CN105393240B (zh) 2013-09-06 2014-09-08 具有辅助异步向量处理器的异步处理器的方法和装置

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN201480040566.5A Pending CN105431819A (zh) 2013-09-06 2014-09-08 异步处理器消除亚稳态的方法和装置
CN201480040506.3A Active CN105379121B (zh) 2013-09-06 2014-09-08 基于时钟时延调整的异步处理器的方法和设备

Country Status (4)

Country Link
US (6) US20150074680A1 (zh)
EP (3) EP3031137B1 (zh)
CN (3) CN105431819A (zh)
WO (6) WO2015035336A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3031137B1 (en) 2013-09-06 2022-01-05 Huawei Technologies Co., Ltd. Method and apparatus for asynchronous processor based on clock delay adjustment
US9325520B2 (en) * 2013-09-06 2016-04-26 Huawei Technologies Co., Ltd. System and method for an asynchronous processor with scheduled token passing
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US9488692B2 (en) * 2014-08-26 2016-11-08 Apple Inc. Mode based skew to reduce scan instantaneous voltage drop and peak currents
US9400685B1 (en) 2015-01-30 2016-07-26 Huawei Technologies Co., Ltd. Dividing, scheduling, and parallel processing compiled sub-tasks on an asynchronous multi-core processor
CN107636638B (zh) * 2015-05-21 2021-10-26 高盛有限责任公司 通用并行计算架构
WO2017136452A1 (en) 2016-02-01 2017-08-10 Qualcomm Incorporated Programmable distributed data processing in a serial link
US10159053B2 (en) * 2016-02-02 2018-12-18 Qualcomm Incorporated Low-latency low-uncertainty timer synchronization mechanism across multiple devices
US10185699B2 (en) 2016-03-14 2019-01-22 Futurewei Technologies, Inc. Reconfigurable data interface unit for compute systems
US20180121202A1 (en) * 2016-11-02 2018-05-03 Intel Corporation Simd channel utilization under divergent control flow
DE102017207876A1 (de) * 2017-05-10 2018-11-15 Robert Bosch Gmbh Parallelisierte Verarbeitung
CN107239276B (zh) * 2017-05-22 2021-01-12 广州安圣信息科技有限公司 一种基于c语言的异步延时执行方法及执行装置
WO2018237361A1 (en) * 2017-06-22 2018-12-27 Icat Llc HIGH SPEED PROCESSORS
US10326452B2 (en) * 2017-09-23 2019-06-18 Eta Compute, Inc. Synchronizing a self-timed processor with an external event
WO2019241979A1 (en) * 2018-06-22 2019-12-26 Huawei Technologies Co., Ltd. Method of deadlock detection and synchronization-aware optimizations on asynchronous processor architectures
EP3818439A4 (en) * 2018-07-05 2022-04-27 Mythic, Inc. SYSTEMS AND METHODS FOR IMPLEMENTING A DATA PROCESSING COMPUTER ARCHITECTURE
CN109240981B (zh) * 2018-08-13 2023-03-24 中国科学院电子学研究所 多通道数据的同步采集方法、设备和计算机可读存储介质
CN111090464B (zh) 2018-10-23 2023-09-22 华为技术有限公司 一种数据流处理方法及相关设备
EP3792767B1 (en) * 2019-09-13 2023-07-12 Accemic Technologies GmbH Event processing
US11556145B2 (en) * 2020-03-04 2023-01-17 Birad—Research & Development Company Ltd. Skew-balancing algorithm for digital circuitry
GB2592083B8 (en) * 2020-03-27 2022-11-16 Spatialbuzz Ltd Network monitoring system
US11720328B2 (en) 2020-06-26 2023-08-08 Advanced Micro Devices, Inc. Processing unit with small footprint arithmetic logic unit
US11551120B2 (en) * 2020-06-29 2023-01-10 Paypal, Inc. Systems and methods for predicting performance
CN113190081B (zh) * 2021-04-26 2022-12-13 中国科学院近代物理研究所 调整电源时间同步性的方法和装置
CN113505095B (zh) * 2021-07-30 2023-03-21 上海壁仞智能科技有限公司 多核异相处理的系统级芯片和集成电路

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040046590A1 (en) * 2000-10-23 2004-03-11 Montek Singh Asynchronous pipeline with latch controllers
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7605604B1 (en) * 2008-07-17 2009-10-20 Xilinx, Inc. Integrated circuits with novel handshake logic
CN102402418A (zh) * 2010-09-13 2012-04-04 索尼公司 处理器

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916652A (en) 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
US5043867A (en) 1988-03-18 1991-08-27 Digital Equipment Corporation Exception reporting mechanism for a vector processor
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5021985A (en) * 1990-01-19 1991-06-04 Weitek Corporation Variable latency method and apparatus for floating-point coprocessor
GB9014811D0 (en) 1990-07-04 1990-08-22 Pgc Limited Computer
JPH05204634A (ja) 1991-08-29 1993-08-13 Internatl Business Mach Corp <Ibm> マイクロプロセツサ回路
JP3341269B2 (ja) * 1993-12-22 2002-11-05 株式会社ニコン 投影露光装置、露光方法、半導体の製造方法及び投影光学系の調整方法
US5758176A (en) 1994-09-28 1998-05-26 International Business Machines Corporation Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system
US5598113A (en) * 1995-01-19 1997-01-28 Intel Corporation Fully asynchronous interface with programmable metastability settling time synchronizer
US6108769A (en) 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
US5842034A (en) 1996-12-20 1998-11-24 Raytheon Company Two dimensional crossbar mesh for multi-processor interconnect
WO1999004334A1 (en) 1997-07-16 1999-01-28 California Institute Of Technology Improved devices and methods for asynchronous processing
US5987620A (en) 1997-09-19 1999-11-16 Thang Tran Method and apparatus for a self-timed and self-enabled distributed clock
US6049882A (en) 1997-12-23 2000-04-11 Lg Semicon Co., Ltd. Apparatus and method for reducing power consumption in a self-timed system
US6065126A (en) * 1998-02-02 2000-05-16 Tran; Thang Minh Method and apparatus for executing plurality of operations per clock cycle in a single processing unit with a self-timed and self-enabled distributed clock
EP1068619B1 (en) 1998-04-01 2005-02-16 Mosaid Technologies Incorporated Semiconductor memory asynchronous pipeline
US6658581B1 (en) * 1999-03-29 2003-12-02 Agency Of Industrial Science & Technology Timing adjustment of clock signals in a digital circuit
US6633971B2 (en) 1999-10-01 2003-10-14 Hitachi, Ltd. Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline
EP1199629A1 (en) 2000-10-17 2002-04-24 STMicroelectronics S.r.l. Processor architecture with variable-stage pipeline
ATE498158T1 (de) 2000-11-06 2011-02-15 Broadcom Corp Umkonfigurierbares verarbeitungssystem und - verfahren
US7681013B1 (en) * 2001-12-31 2010-03-16 Apple Inc. Method for variable length decoding using multiple configurable look-up tables
WO2004027528A2 (en) 2002-09-20 2004-04-01 Koninklijke Philips Electronics N.V. Adaptive data processing scheme based on delay forecast
US7240231B2 (en) * 2002-09-30 2007-07-03 National Instruments Corporation System and method for synchronizing multiple instrumentation devices
US6889267B2 (en) 2002-11-26 2005-05-03 Intel Corporation Asynchronous communication protocol using efficient data transfer formats
US7573301B2 (en) * 2002-12-02 2009-08-11 Silverbrook Research Pty Ltd Temperature based filter for an on-chip system clock
US7281050B2 (en) 2003-04-08 2007-10-09 Sun Microsystems, Inc. Distributed token manager with transactional properties
US8307194B1 (en) 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US7788332B2 (en) 2004-05-06 2010-08-31 Cornell Research Foundation, Inc. Sensor-network processors using event-driven architecture
US7089518B2 (en) 2004-05-08 2006-08-08 International Business Machines Corporation Method and program product for modelling behavior of asynchronous clocks in a system having multiple clocks
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7533248B1 (en) 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US8416251B2 (en) 2004-11-15 2013-04-09 Nvidia Corporation Stream processing in a video processor
KR101084806B1 (ko) 2004-11-15 2011-11-21 엔비디아 코포레이션 비디오 처리
US7584449B2 (en) 2004-11-22 2009-09-01 Fulcrum Microsystems, Inc. Logic synthesis of multi-level domino asynchronous pipelines
US7536535B2 (en) 2005-04-22 2009-05-19 Altrix Logic, Inc. Self-timed processor
US20070150697A1 (en) 2005-05-10 2007-06-28 Telairity Semiconductor, Inc. Vector processor with multi-pipe vector block matching
CN1993709B (zh) 2005-05-20 2010-12-15 索尼株式会社 信号处理设备
US20060277425A1 (en) 2005-06-07 2006-12-07 Renno Erik K System and method for power saving in pipelined microprocessors
US7313673B2 (en) 2005-06-16 2007-12-25 International Business Machines Corporation Fine grained multi-thread dispatch block mechanism
US7622961B2 (en) 2005-09-23 2009-11-24 Intel Corporation Method and apparatus for late timing transition detection
US7669028B2 (en) 2006-02-07 2010-02-23 International Business Machines Corporation Optimizing data bandwidth across a variable asynchronous clock domain
US7698505B2 (en) 2006-07-14 2010-04-13 International Business Machines Corporation Method, system and computer program product for data caching in a distributed coherent cache system
JP2008198003A (ja) 2007-02-14 2008-08-28 Nec Electronics Corp アレイ型プロセッサ
US7757137B2 (en) * 2007-03-27 2010-07-13 International Business Machines Corporation Method and apparatus for on-the-fly minimum power state transition
US7936637B2 (en) 2008-06-30 2011-05-03 Micron Technology, Inc. System and method for synchronizing asynchronous signals without external clock
US7928790B2 (en) 2008-08-20 2011-04-19 Qimonda Ag Integrated circuit and programmable delay
US8689218B1 (en) 2008-10-15 2014-04-01 Octasic Inc. Method for sharing a resource and circuit making use of same
US7986706B2 (en) 2009-04-29 2011-07-26 Telefonaktiebolaget Lm Ericsson Hierarchical pipelined distributed scheduling traffic manager
GB2470780B (en) * 2009-06-05 2014-03-26 Advanced Risc Mach Ltd A data processing apparatus and method for performing a predetermined rearrangement operation
US20110072236A1 (en) * 2009-09-20 2011-03-24 Mimar Tibet Method for efficient and parallel color space conversion in a programmable processor
US20110072238A1 (en) 2009-09-20 2011-03-24 Mimar Tibet Method for variable length opcode mapping in a VLIW processor
WO2012052774A2 (en) 2010-10-21 2012-04-26 Bluwireless Technology Limited Data processing units
US9170638B2 (en) 2010-12-16 2015-10-27 Advanced Micro Devices, Inc. Method and apparatus for providing early bypass detection to reduce power consumption while reading register files of a processor
US8832412B2 (en) 2011-07-20 2014-09-09 Broadcom Corporation Scalable processing unit
JP5861354B2 (ja) 2011-09-22 2016-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
GB2503438A (en) 2012-06-26 2014-01-01 Ibm Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US9495154B2 (en) 2013-03-13 2016-11-15 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods
EP3031137B1 (en) 2013-09-06 2022-01-05 Huawei Technologies Co., Ltd. Method and apparatus for asynchronous processor based on clock delay adjustment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040046590A1 (en) * 2000-10-23 2004-03-11 Montek Singh Asynchronous pipeline with latch controllers
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7605604B1 (en) * 2008-07-17 2009-10-20 Xilinx, Inc. Integrated circuits with novel handshake logic
CN102402418A (zh) * 2010-09-13 2012-04-04 索尼公司 处理器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MICHEL LAURENCE: "Low-Power High-performance Asynchronous General Purpose ARMv7 Processor for Multi-core Applications", 《13TH INT’L FORUM ON EMBEDDED MPSOC AND MULTICORE》 *

Also Published As

Publication number Publication date
US20150074380A1 (en) 2015-03-12
US20150074680A1 (en) 2015-03-12
EP3031137B1 (en) 2022-01-05
CN105379121A (zh) 2016-03-02
WO2015035333A1 (en) 2015-03-12
WO2015035336A1 (en) 2015-03-12
EP3031137A1 (en) 2016-06-15
US20150074374A1 (en) 2015-03-12
EP3014468A1 (en) 2016-05-04
US9489200B2 (en) 2016-11-08
US10042641B2 (en) 2018-08-07
US9606801B2 (en) 2017-03-28
WO2015035327A1 (en) 2015-03-12
US9846581B2 (en) 2017-12-19
WO2015035330A1 (en) 2015-03-12
EP3031137A4 (en) 2018-01-10
WO2015035338A1 (en) 2015-03-12
US20150074443A1 (en) 2015-03-12
EP3014429B1 (en) 2020-03-04
CN105379121B (zh) 2019-06-28
US20150074446A1 (en) 2015-03-12
CN105393240B (zh) 2018-01-23
US20150074445A1 (en) 2015-03-12
WO2015035340A1 (en) 2015-03-12
US9740487B2 (en) 2017-08-22
EP3014429A4 (en) 2016-09-21
EP3014429A1 (en) 2016-05-04
CN105431819A (zh) 2016-03-23
EP3014468A4 (en) 2017-06-21

Similar Documents

Publication Publication Date Title
CN105393240A (zh) 具有辅助异步向量处理器的异步处理器的方法和装置
US10515046B2 (en) Processors, methods, and systems with a configurable spatial accelerator
CN108268278B (zh) 具有可配置空间加速器的处理器、方法和系统
US10380063B2 (en) Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445451B2 (en) Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10564980B2 (en) Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
EP3726389B1 (en) Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
CN109215728B (zh) 用于分布式存储器危险检测和错误恢复的存储器电路和方法
US10387319B2 (en) Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10416999B2 (en) Processors, methods, and systems with a configurable spatial accelerator
US20190303297A1 (en) Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator
US20190004945A1 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US20190004878A1 (en) Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features
US20190095369A1 (en) Processors, methods, and systems for a memory fence in a configurable spatial accelerator
CN111512292A (zh) 用于可配置空间加速器中的非结构化数据流的装置、方法和系统
US20160011874A1 (en) Silent memory instructions and miss-rate tracking to optimize switching policy on threads in a processing device
US8171259B2 (en) Multi-cluster dynamic reconfigurable circuit for context valid processing of data by clearing received data with added context change indicative signal
CN115668142A (zh) 一种处理器、处理方法及相关设备
CN105144107A (zh) 用于运行可执行代码的方法、处理模块及系统
CN107077381B (zh) 异步指令执行装置和方法
CN116113940A (zh) 一种图计算装置、处理方法及相关设备
CN107273098B (zh) 一种优化数据流架构数据传输延迟的方法及其系统
US20230367596A1 (en) Instruction prediction method and apparatus, system, and computer-readable storage medium
US11023241B2 (en) Systems and methods for selectively bypassing address-generation hardware in processor instruction pipelines
KR20170055964A (ko) 태스크의 배분 경로를 결정하는 방법, 디바이스 및 시스템

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant