CN105379121A - 基于时钟时延调整的异步处理器的方法和设备 - Google Patents
基于时钟时延调整的异步处理器的方法和设备 Download PDFInfo
- Publication number
- CN105379121A CN105379121A CN201480040506.3A CN201480040506A CN105379121A CN 105379121 A CN105379121 A CN 105379121A CN 201480040506 A CN201480040506 A CN 201480040506A CN 105379121 A CN105379121 A CN 105379121A
- Authority
- CN
- China
- Prior art keywords
- asynchronous
- processing
- signal
- circuit
- instruction
- 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
Links
- 238000000034 method Methods 0.000 title claims description 133
- 238000012545 processing Methods 0.000 claims abstract description 123
- 230000008569 process Effects 0.000 claims description 99
- 230000006870 function Effects 0.000 claims description 41
- 230000015654 memory Effects 0.000 claims description 30
- 230000004044 response Effects 0.000 claims description 11
- 230000008878 coupling Effects 0.000 claims description 9
- 238000010168 coupling process Methods 0.000 claims description 9
- 238000005859 coupling reaction Methods 0.000 claims description 9
- 238000013500 data storage Methods 0.000 claims description 5
- 210000000352 storage cell Anatomy 0.000 claims description 4
- 230000008859 change Effects 0.000 abstract description 39
- 238000011282 treatment Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 238000005457 optimization Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 210000004027 cell Anatomy 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000011112 process operation Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 206010012186 Delayed delivery Diseases 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000010924 continuous production Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000002224 dissection Methods 0.000 description 1
- 238000005553 drilling Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/10—Distribution of clock signals, e.g. skew
-
- 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8092—Array of vector 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing 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
-
- 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
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3871—Asynchronous instruction pipeline, e.g. using handshake signals between stages
-
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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
-
- 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures 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
-
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F2009/3883—Two-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)
- Multimedia (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
Abstract
一种无时钟异步处理电路或***利用自计时发生器来调整电路/***中处理周期所需要/允许的处理时延(等待时间)。自计时发生器的定时可依据各种参数动态调整。这些参数可以包括处理指令、操作码信息、电路/***要执行的处理的类型、或整体期望的处理性能。还可以对该等待时间进行调整以改变处理性能,包括功耗、速度等。
Description
技术领域
本公开总体上涉及异步电路技术,并且更具体地,涉及一种利用可编程时间段生成计时信号(clockingsignal)的自计时(self-clocked)电路。
背景技术
高性能同步数字处理***利用流水线来提高并行性能和吞吐量。在同步***中,流水线带来了许多划分的或细分的更小的块或级,并将***时钟施加于这些块/级之间的寄存器。该***时钟启动处理和数据从一级到下一级的运行,并且,每一级的处理必须在一个固定时钟周期内完成。当某些级完成处理的时间少于一个时钟周期时,下一个处理级必须等待——这增加了处理时延(这是累增的)。
相反,异步***(即无时钟,clockless)不使用***时钟,概括地说,就是每一个处理级在前一级处理完后开始其处理。异步处理***存在许多优点或特点,每个处理级可以有不同的处理时延,输入的数据可以在到达后就处理,并且只在需要时才消耗功率。
图1示出了现有技术萨瑟兰(Sutherland)异步微流水线架构100。萨瑟兰异步微流水线架构是利用由Muller-C单元构建的握手协议来控制微流水线构建块的一种异步微流水线架构形式。架构100包括多个依次通过触发器或锁存器104(例如寄存器)连接的计算逻辑102。控制信号通过MullerC单元106在计算块之间传递,并通过时延逻辑108进行延迟。关于描述该架构100进一步的信息由伊万·萨瑟兰发布在《美国计算机学会通讯》第32卷第6期,1989年6月,720-738页,美国纽约ACM(“CommunicationsoftheACMVolume32Issue6,June1989pages720-738,ACMNewYork,NY,USA”)中,其内容通过引用结合在本申请中。
接下来图2示出了同步***200的典型部分或处理级。该***200包括触发器或寄存器202、204,它们用于对来自逻辑块210的输出信号(数据)206进行计时。图2右侧是对亚稳态(meta-stability)概念的描述,建立时间和保持时间必须考虑避免出现亚稳态,换句话说,在建立时间和保持时间期间数据必须是有效并保持的,否则会发生建立违例212或保持违例214。如果其中一个违例出现,同步***可能会发生故障。亚稳态概念也适用于异步***,因此设计异步***来避免亚稳态是非常重要的。此外,与同步***一样,异步***也需要解决各种潜在的数据/指令风险,还应包括用来检测和解决风险的绕行机制和流水线互锁机制。
因此,需要稳定的、能检测并解决潜在风险(即消除亚稳态)的异步处理***、异步处理器和异步处理方法。
发明内容
根据一个实施例,提供了一种异步处理***,包括异步逻辑电路,用于对输入数据执行至少一项处理功能;自计时发生器,与所述异步逻辑电路耦连并用于接收触发信号,并在收到所述触发信号后的时间段内输出自计时信号,其中,所述时间段可配置;以及数据存储单元,用于存储来自所述异步逻辑电路的处理数据,以响应所述自计时信号。
在另一个实施例中,提供了一种操作包括异步逻辑电路的异步处理***的方法。该方法包括,接收第一处理指令,并根据所述第一处理指令从所述第一处理指令中识别所述异步逻辑电路要执行的第一处理类型。从识别的第一处理类型中确定第一处理时延时间段。该方法进一步包括,根据确定的第一处理时延时间段,配置与所述异步逻辑电路耦连的自计时发生器在收到触发信号后输出自计时信号。
附图说明
为了更完整地理解本公开及其优点,现在结合附图参考如下描述,其中同样的标号表示同样的对象,其中:
图1示出了现有技术异步微流水线架构;
图2示出了同步***中的亚稳态概念的框图;
图3示出了根据本公开的异步处理***;
图4示出了根据本公开的异步处理器中单个异步处理级的框图;
图5是图4示出了自计时发生器的一种实现方式的框图;
图6和图7示出了图4所示的自计时发生器的其它实现方式;
图8是示出根据本公开的具有多个处理级的处理流水线的框图;
图9是异步逻辑电路中操作依赖处理时延的概念的概况图;
图10概念性地示出了对ALU(如图9所示)的处理时延的控制(和编程);
图11结合异步处理***(如图10所示)示出了异步指令解码器;
图12概念性地示出了自时钟生成器(如图4所示)的静态和动态控制;
图13是根据本公开的DSP架构的一个实施例的框图;
图14示出了根据本公开的处理***的另一个实施例;
图15示出了时延调整控制***的两个示例实施例;以及
图16A、16B和16C示出了可以利用异步处理器和处理***的示例通信***和示例设备。
具体实施方式
异步技术旨在消除同步技术对全局时钟树的需求,全局时钟树不仅会消耗芯片电源和芯片面积的重要部分,而且还会降低电路较快部分的速度以匹配较慢部分(即最终的时钟树速率来自电路最慢的部分)。为了去除时钟树(或最小化时钟树),异步技术需要专用的逻辑来实现两个连续无时钟处理电路之间的握手协议。一旦一个无时钟处理电路完成其操作,并进入稳定状态,一个信号(例如“请求”或“完成”信号)就会被触发并发给其随后的电路。如果随后的电路准备好接收数据,就会向在前的电路发送信号(例如“ACK”信号)。虽然这两个电路的处理等待时间不同,且随着时间的变化而变化,但是握手协议确保了电路或电路的级联的正确性。
针对流水线中的指令会产生错误应答的情形,亨尼西(Hennessy)和帕特森(Patterson)创造了术语“风险”(hazard)。结构性风险发生在当两个指令可能同时使用相同的资源时。数据风险发生在当盲目调度的指令试图在寄存器文件中的数据在可用之前使用数据时。
参照图3,示出了根据本公开的异步处理***300的框图。***300包括异步标量处理器310、异步向量处理器330、缓冲控制器320和L1/L2高速缓冲存储器340。可以意识到,术语“异步处理器”可以指处理器310、处理器330或处理器310和330的组合。虽然处理器310和330仅示出了一个,但是处理***包括的每个处理器可以不止一个。此外,可以理解,每个处理器其中可能包括多个CPU、控制单元、执行单元和/或运算器等。例如,异步标量处理器310可以包括多个CPU,每个CPU都具有所需数量的流水线级。在一个例子中,处理器310可以包括16个CPU,每个CPU有5个处理级(例如,经典RISC级——取指、指令译码、执行、存储和回写)。类似地,异步向量处理器330也可以包括多个CPU,每个CPU都具有所需数量的流水线级。
L1/L2高速缓冲存储器340可以分为L1缓存和L2缓存,也可以分为指令缓存和数据缓存。同样,缓冲控制器320也可以进行功能性划分。
本公开的各个方面提供了一种无时钟异步处理器架构的架构和技术,该无节拍异步处理器架构利用可配置的自计时发生器来触发时钟信号的生成,并避免亚稳态问题。
图4示出了异步处理器310(或330)内处理流水线的一部分。该处理流水线将包括多个连续处理级。为了便于描述,图4示出了流水线内的单个处理级400。每个级400都包括逻辑块410(或异步逻辑电路)、关联的自计时发生器420、数据存储单元或锁存器(或触发器或寄存器)404。此外,还示出了前一级(标识为412)的数据锁存器(标识为402)。可以意识到,对于每一级,在收到与该级相关联的自计时发生器发出的主动“完成”信号后,被各逻辑块处理的数据输出并锁存到各自的数据锁存器中。逻辑块410可以是任一块或用于以单元或块进行异步操作的处理逻辑的组合。块410的一些例子可以是算术逻辑单元(ALU)、加法器/乘法器、内存访问逻辑等。在一个例子中,其将用于以下进一步解释本公开的内容和概念,逻辑块410是用于执行至少两个不同功能例如加法器/乘法器的逻辑块。在该例子中,逻辑块410有两个处理时延:完成相加功能所需的处理时间和完成乘法功能所需的处理时间。也就是说,触发和锁存之间的时间段。
前一级处理的数据锁存到数据锁存器402中(前一级已经完成了其处理周期)以响应主动完成(Complete)信号408。该完成(Complete)信号408(或前一级完成信号)也输入到下一级自计时发生器420中,用以指示前一级412已经完成处理,锁存器402中的数据已准备好由级400进行进一步处理。该完成(Complete)信号408触发自计时发生器420,并激活自计时生成以生成其当前主动完成(Complete)信号422。然而,自计时发生器420延迟预定的时间段输出当前完成(Complete)信号422,以使逻辑块410充分地处理数据并输出处理数据406。
逻辑块410的处理等待时间或时延取决于几个因素(例如,逻辑处理电路的功能、温度等)。对该可变等待时间的一个解决方案是为该时延配置时延值,该时延值至少等于或大于逻辑处理电路410最差的情况下的等待时间。这种最差情况下的等待时间通常根据最差条件下最长路径的等待时间来确定。在加法器/乘法器的例子中,加法器所需的处理时延可以为400皮秒,而乘法器所需的处理时延可以为1100皮秒。在这种情形下,最差情况处理时延将会为1100皮秒。这可以基于理论时延来计算(例如,通过ASIC级仿真:静态时序分析(STA)+余量),或者可以在实际逻辑块电路410的校准测量级期间进行测量。每一级400(以及每一级400中每个路径/功能)的级处理时延值都存储在级时钟时延表中(图中未示出)。在初始化期间,重置或启动级(以下简称“初始化”),这些级时延值用于配置自计时发生器420内的时钟时延逻辑。在一个实施例中,表中的级时延值加载到一个或多个存储寄存器中(图中未示出),以便在需要时快速访问和进一步处理。在加法器/乘法器的例子中,值400和1100(或代表这些值的其它指标)加载到寄存器中。
在初始化期间,自计时生成器420用于在接收到来自于前一级412的前一完成(Complete)信号408后的一个预定的时间段,生成和输出其主动完成(Complete)信号422。为了确保操作正常(锁存时处理数据是有效的),所需的处理时延要等于或超过块完成其处理所必需的时间。使用相同的例子,当逻辑块负责执行相加功能时,所需的处理时延应该等于或超过400皮秒。类似地,当逻辑块负责执行相加功能时,所需的处理时延应该等于或超过1100皮秒。自计时发生器1420在期望的时间生成其完成(Complete)信号1422,其将逻辑块410的处理输出数据406锁存到数据锁存器404中。同时,当前主动完成(Complete)信号422被输出或传递到下一级。
接下来图5示出了图4的可配置或可编程的自计时发生器420的更详细的图。该自计时发生器420包括第一时延门(或模块或电路)502A、第二时延门(或模块或电路)502B、第一时延输入多路复用器(mux)504A以及第二时延输入多路复用器504B。多路复用器用于控制前一完成(Complete)信号408的接收与当前完成(Complete)信号422的输出(激活或启用)之间的时延量。因此,该自计时发生器420用于控制/编程预定的时延量(或时间段)。在一个实施例中,编程周期取决于操作。
配置参数510控制多路复用器504A和504B为前一完成(Complete)信号408选择信号路径的操作。这能够在计时信号应该发出时,实现可配置的时延量(即,延迟多少)的选择或配置(编程)。例如,对于1100皮秒的可能总时延,第一时延门502A可以用于生成增加500皮秒时延的信号503,而时延门502B可以用于生成增加600皮秒时延的信号505。
配置参数510可以是当处理器310和330初始化时由一个或多个存储寄存器(未示出)生成的N比特的选择信号。因此,该选择信号503可以选择第一信号503、第二信号505、第一信号503和第二信号505的组合或几乎没有时延。在这个例子中,当前完成(Complete)信号422可以以0皮秒、500皮秒、600皮秒或1100皮秒的时延生成和输出。例如,第一配置参数输出512将引起第一多路复用器504A选择和输出延迟信号(500皮秒)503或未延迟信号408。类似地,第二配置参数输出514将引起第二多路复用器504B选择和输出:(1)延迟信号505(被延迟了500皮秒或1100皮秒),或(2)多路复用器504A输出的延迟信号(600皮秒)或(3)未延迟信号408。总体而言,自计时生成器420提供了测量的可编程时延,该时延定义为前一计时信号408的接收与当前完成(Complete)信号422的激活之间的时间量。完成(Complete)信号422的断言锁存数据,并进一步发出数据有效的信号,以备下一级进行处理。
在另一个实施例中,配置参数510可以通过控制器550生成。控制器550确定逻辑块410要执行的处理功能(如相加或相乘),并确定自计时发生器420的程序指令以使其生成具有针对该处理功能的“正确”时延的计时信号422。也就是说,控制器550确定自计时发生器程序指令,以使其在预定处理时间后发出计时信号。该预定处理时间通过要执行的功能进行指定,并与其相关。可以利用各种方法和手段来确定逻辑块410要执行的先验功能。在一个例子中,指令预译码指示具体的处理功能将会为相加功能或相乘功能。这类信息可以存储在寄存器或寄存器文件中。因此,自计时发生器420被编程为,在接收到前一时钟信号(或其它信号)后的一个预定的时间量内,生成计时信号422,以向逻辑块422发出输入数据准备好进行处理的信号。为了响应对逻辑块422将要执行的功能的确定,而对该预定的时间量进行编程。
为了便于解释,虽然在以上例子中描述了第一时延门和第二时延门、第一多路复用器和第二多路复用器、第一配置参数和第二配置参数,但应意识到,可以利用其它的时延门(以及不同时延时间)和多路复用器。
接下来图6示出了可编程时延自计时发生器420的另一个实现方式,该自计时发生器420包括一个具有M个时钟输入信号620的M对1(M-to-1)多路复用器600。与配置参数510类似,N比特配置参数610(和/或控制器)控制多路复用器600来为当前完成(Complete)信号422的输出从M个时钟输入620中选择一个。可以意识到,该时钟输入信号620由前一级完成(Complete)信号生成(例如,图5中的信号408),每个都延迟不同的数量。该时钟输入信号利用任一合适的时钟时延门/电路(未示出)的配置生成。例如,如果M=8,8个时钟输入信号可以从400皮秒开始以100皮秒的增量延迟。在此例子中,可以将当前完成(Complete)信号422的时延范围选择为400-1100皮秒,增量为100皮秒。可以理解,任一合适数的时钟输入信号620和时延数都可以进行配置和利用。
现在接下来图7示出了可编程时延自计时发生器420的另一个实现方式。在这种配置中,自计时发生器420包括若干逻辑门(如图所示),以及用于选择和输出其中一个时钟输入信号的两个时钟输入信号702、704。单个选择线720控制将时钟输入信号702、704选择和输出为时钟输出信号422(完成(Complete)信号)。
现在接下来图8是对异步处理器310和330内具有多个处理级的处理流水线800的局部的框图的描述。可以意识到,流水线800可以有任一数量的期望级400。仅作为例子,流水线800可以包括5级(图8中仅显示三个),每一级400提供不同的功能(例如取指、指令译码、执行、存储和回写)。进一步地,处理器可以包括任一数量的单独的流水线800(例如CPU或执行单元)。
如图所示,流水线800包括多个连续的处理级400A、400B和400C。每个处理级400A、400B和400C分别包括逻辑块(异步逻辑电路)410A、410B和410C,和相关联的自计时发生器420A、420B和420C,以及数据锁存器404A、404B和404C。更多详细描述和级400的操作参照图4。
可以理解,每个逻辑块410A、410B和410C都包括用于对输入数据执行一个或多项处理功能的异步逻辑电路。当数据处理完成后(即,完成处理的时间足够),为了响应完成(Complete)信号422A、422B和422C,将处理数据锁存到数据存储元件或触发器404A、404B和404C中(也向下一级指示处理已完成)。每个中间连续级400处理来自前一级的输入数据输出。
每个逻辑块410完成处理必需的处理时间量取决于其中所包含的具体电路和其执行的功能。每个逻辑块410A、410B和410C都有一个或多个指示完成一个处理周期所花费的时间量的预定处理时延。如前所述,每一级400的级处理时延值都存储在级时钟时延表(未示出)中,可以在初始化期间加载到数据寄存器或文件中。
仅作为例子,对于级400A、400B和400C,其处理时延可以分别为500皮秒、400皮秒或1100皮秒和600皮秒或800皮秒。这意味着级400A能够仅执行一个功能(或仅有一条路径),或能够执行多个功能,但每个功能需要大约相同的处理时延。级400B和400C能够执行至少两个功能(或有至少两条路径),每个功能需要不同的处理时延。
本公开的各个方面还提供无时钟异步处理器的架构和技术,在启动期间利用第一模式初始化和设置异步处理器,并在异步处理器的“正常”操作期间使用第二模式。
继续参照图8,处理器310、330包括模式选择(和时延配置)逻辑850。模式选择电路850配置处理器310、330在两种模式中的一种模式下操作。在一个实施例中,这两种模式包括慢变模式和快变模式。如果需要可以配置其它的模式。可以理解,利用逻辑硬件、软件或二者的组合都可以实现模式选择逻辑。逻辑850配置、使能和/或切换处理器310、330在给定模式下操作,并能够在两种模式之间切换。
在慢变模式中,每个自计时发生器420A、420B和420C用于以最大时延量(每一级可以相同,也可以不同)生成各自的主动完成(Complete)信号422A、422B和422C。在快变模式中,每个自计时发生器420A、420B和420C被用于以预定(或“正确”)时延量生成各自的主动完成(Complete)信号422A、422B和422C(同样,每一级可以相同,也可以不同,取决于逻辑的功能和不同的处理、电压和温度(PVT)角点)。总体而言,慢变模式中时延量大于快变模式中时延量,因此,快变模式执行处理的速度更快。
利用上述例子,其中对于每一级400A、400B和400C,处理时延分别为500皮秒、400皮秒或1100皮秒和600皮秒或800皮秒。慢变模式将初始化或编程自计时发生器420A、420B和420C,使其处理时延为500皮秒、1100皮秒和800皮秒。这就确保为每一级都编程了足够的处理时延来处理初始化程序。快变模式使每一级都能够根据上述程序和方法进行操作——对级的处理时延,将基于当时各逻辑块410执行的具体功能进行设置或编码。
可以理解,一些硬件初始化/设置序列需要在慢变模式中进行操作,以正确地配置逻辑。在慢变模式下,可以设置较大时延,以确保逻辑功能和避免出现亚稳态。其它例子中可以包括电路速度放缓的应用,如专用寄存器配置或过程。可以意识到,不同的异步逻辑电路可以全局或局部(逐个地)切换到较快速度。
处理器310、310何时应在其中一种模式下操作可以由各种因素确定,这些因素可以包括功耗/耗散需求、操作条件、处理类型、PVT角点、实时应用需求等。不同的因素可以适用于不同的应用程序,任何适当地确定何时从一个模式切换到另一个模式在本领域技术人员的知识范围内。此处描述的概念在其它实施例中更广泛,可以包括在第一模式和第二模式之间切换、在慢变模式和快变模式之间切换,以及有多个模式(三个或更多)。可以提供正常操作内的多个模式,通过改变核心速度和适应不同的PVT或实时应用需求来实现。
在一个实施例中,在初始化和设置(例如启动、重置、初始化等)期间,处理器310、330用于在慢变模式中操作。初始化完成后,处理器310、330用于在快变模式中操作——在该快速模式中的操作认为是处理器的“正常”操作。模式选择和可配置时延逻辑850包括慢变模式模块812,用于为自计时发生器420A-420C中的每个自计时发生器生成最大时延,快变模式模块814,用于为自计时发生器420A-420C中的每个自计时发生器生成“正确”时延。一个自计时发生器的最大时延可以不同于另一个自计时发生器的最大时延。类似地,一个自计时发生器的“正确”时延也可以不同于另一个自计时发生器的“正确”时延。
在一个实施例中,给定的自计时发生器420的最大时延可以等于无亚稳态+余量的保证时延。例如,可配置的时延逻辑850可以用于生成与给定的自计时发生器420可以成功处理和操作的最慢速度相关联的慢变模式时延值对应的慢变模式配置信号。如果它可以执行多个功能(或有多个路径),逻辑块的最大处理时延就是最差工作条件下给定的逻辑块410的最长路径的最长时延。这可在晶片校准阶段对给定的逻辑块410进行测量(或从理论上计算)。可配置的时延逻辑850也可以用于生成快变模式配置信号,使逻辑块工作在“正常”模式下——对级的处理时延进行编程或基于当时各逻辑块410执行的具体功能进行设置。为了响应从时延逻辑850接收的响应时延配置信号820A-820C,420A-420C中的每个自计时发生器用于生成主动完成(Complete)信号422A-422C。
在处理器310、330初始化期间,自计时发生器420A可以收到时延配置信号820A,在初始化期间进入慢变模式并设置处理器。可选地,自计时发生器420A可以在初始化期间默认进入慢变模式。初始化完成后,自计时发生器420A可以进入快变模式进行正常操作(响应时延配置信号820A)。其它自计时发生器420B、420C同样可以响应时延配置信号820B和时延配置信号820C进行操作。可选地,这些自计时发生器可以在初始化期间默认进入慢变模式,初始化和设置后,在正常操作期间进入快变模式(响应时延配置信号820B、820C)。
在操作过程中,模式选择和可配置的时延逻辑850用于生成最大时延,这样异步逻辑电路410初始化期间就在第一模式或慢变模式中执行。在具体实施中,慢变模式可以包括每个自计时发生器420A-420C的最大时延。第一标记可以写入处理器310、330的寄存器或其它存储单元,以便在初始化完成前保持慢变模式。此后,可配置的时延逻辑850对自计时发生器进行配置,生成“正确”时延,这样异步逻辑电路410正常操作期间就在第二模式或快变模式中执行。因此,图8所主要描述的实施例中,编程处理时延(或触发和锁存之间的时间段)取决于模式。
除了以上所述,本公开的其它方面提供了利用动态等待时间控制机制的无时钟异步处理器架构的架构和技术。
总体而言,异步逻辑电路在收到触发信号后自计时预定的时间段(即,处理时延)。计时将逻辑电路处理的输出数据锁存到存储寄存器或单元(供后续使用)。预定的时间段是可编程的,并且取决于对异步逻辑电路要执行的处理功能的识别。在一个实施例中,基于处理指令的类型编程预定的时间段。
在特别的例子中,假设异步逻辑电路是算术逻辑单元(ALU)。当接收到用于执行的指令,解码后确定要执行的处理ALU的类型,以响应接收到的指令。基于该确定,将预定的时间段设置或编程为特定的值。例如,当处理类型(或功能)为相加时,预定的时间段为T1(例如,300皮秒),当为相乘时,预订的处理时间段为T2(例如,800皮秒)。通常,这些T值根据其各自的处理功能等于或大于ALU处理数据所需的处理时间。
接下来图9示出了异步逻辑电路900中操作依赖处理时延的概念的概况图。该异步电路900本身有操作相关的时延T。T的值取决于本领域技术人员已知的很多因素,包括电路900的数量和类型、功能、处理技术、电压、温度等。此外,对于给定的电路(例如,ALU),根据同时执行不同的处理功能时延T可以有不同的值。可以意识到,异步电路900与前面描述的异步逻辑块410相同或相似。
现在接下来图10示出了异步处理***1000,包括可变定时控制***1010和关联的异步电路900。在该例子中,可变的或可编程的定时时间基于指令的类型或处理的类型。为了便于下面的描述和说明,我们假定电路900是ALU,但它可以是任何其它合适的按需执行任意一个或多项处理功能的异步逻辑块或电路。
如图所示,***1000进一步包括自计时发生器422,完成(Complete)信号422和数据锁存器404——这些都与ALU900相关联。触发信号可以与前一完成信号408或ALU900触发或启动处理的另一信号相同。
图10还概念性地示出了ALU900的处理时延的控制(以及编程)。如图所示,指令1020指示ALU900执行一项处理功能。例如,指令102会识别处理功能的具体类型——例如,相加功能1022、移位功能1024、相乘功能1026、dot-pack功能1028、累加功能1030。该指令的操作码1340可以用于在执行前识别指令(或功能)的类型。在此基础上,编程或控制自时钟时延发生器420以在接收到触发信号后的一个预定的时间段T后输出时钟信号422——该预定的时间段取决于要执行的过程或功能。因此,指令1020,以及一个实施例中,指令操作码1040用于识别将要被ALU900执行的处理的类型。
对指令进行解码并转发到ALU900后,确定与ALU要执行的特定处理的类型(响应于指令)相关联的预定的时间段T。在一个实施例中,在存储器中存储等待时间或时延表(未在图10中显示),该等待时间或实验表用于将不同的操作码1040与不同的预定义的过程时延时间相关联。然后相应地,为自时钟发生器420配置或编程预定义的时延。该时延或等待时间随着操作码1040的变化而变化。每个不同的操作码1040在表中可以有一个相关联的预定义的时延,或者,与需要相同的时间段来处理的处理功能相对应的操作码1040可以组合在一起。进一步,该表可以基于不同的等级,如一级到n级,随着时序的变化而变化。在一个实施例中,时延表可以静态地提供或在启动或初始化时可用。进一步,在表中可以不提供实际预定义的时延值,但是可以提供与该时延值对应的信息(例如,N比特配置参数510,见图5)。
现在接下来图11示出了与异步处理***1000(如图10所示)结合的异步指令解码器1100。指令由指令提取电路1102提取,发送到解码电路900a(410)进行解码,并分解成存储于与ALU900的各处理功能(例如,相加、移位、相乘等)相关联的标记/计时块1106内的标记/计时信息,并输入到ALU900的各处理功能。可以理解,解码电路900a(410)也可以是与电路相关联的异步逻辑块。
还提供了向ALU900供应请求数据(也可以存储数据)的存储器访问电路1104。这还可以包括访问寄存器和寄存器文件。此外,由寄存器源(RS)402提供其它输入数据。处理数据从ALU900中输出,被锁存/存储到寄存器目的地408。可以理解,RS402和RD408与图4中所示的数据锁存/存储单元402、408相同或相似。
参照图12,概念性地示出了自时钟生成器420的静态和动态控制,该自时钟生成器420的静态和动态控制用于在一个范围内生成独立的计时信号(完成(Complete)信号422),该范围用于确保在锁存处理输出数据前有足够的时间来完成一个自计时功能单元(例如,410、900)内的处理。静态给定的等待时间是给定的异步逻辑块410在最差的情况下(可以包括执行不同的处理类型)完成处理所必需的具有一定余量的等待时间(或所需的时间)。固有频率是电路在一组给定的条件下完成处理所用的实际时间量。在一个实施例中,可以为自时钟生成器420静态地配置和预设有一定余量的给定的最长等待时间。这可以在启动时和/或在初始化阶段或模式(如上文更充分的描述)期间完成。然后,生成器420可以基于逻辑块将要执行的处理(例如,识别指令/操作码)的类型,动态地进行调整,和/或也可以基于由如下关于图14-15进一步详细描述的一个或多个算法的定时时间,动态地进行调整。
现在接下来图13根据本公开示出了DSP架构1300的一个实施例。DSP架构或***1300包括多个并行的自计时(异步)执行单元(XU)1350。每个XU1350可以包括一个或多个连续的处理级(每个都包括异步逻辑块410和相关联的自时钟发生器420)。该***1300还包括指令调度器1302、等待时间表1304、寄存器文件1306、指令缓冲器1308、存储器1310和交叉总线1312。指令缓冲器1308持有要调度的指令,指令调度器1302用于向XU1350调度一个或多个指令。存储器1310和寄存器文件1306提供典型的数据和寄存器存储功能。
指令调度器1302访问等待时间(或时延)表1304以确定处理等待时间时延和指令(例如,操作码)之间的关联。等待时间表或时延表1304在存储器中存储不同的操作码1316(也即1040)和预定义的处理时延时间(如上进一步所述)之间的关联或联系。
指令调度器1302从指令缓冲器1308中提取指令,并选择/调度指令到一个或多个与每个XU1350相关联的指令寄存器或缓冲器1314(例如,FIFO)。当一个特定的寄存器或缓冲器1314满了时,指令调度器会被通知,并延迟发送其它指令。
相对于给定的指令,该指令可以用来识别需要执行的处理的类型。指令调度后,调度器1302也会知道是哪个XU1350将执行处理。基于这些信息,自计时发生器420(对应于将要执行处理的XU1350)被控制/配置为,根据与识别的处理的类型相关联的预定义的时延时间,生成其完成(Complete)信号422。
在仅用于说明的一个例子中,相加指令与第一处理等待时间(例如,1纳秒)相关联,而相乘指令与第二处理等待时间(例如,4纳秒)相关联。这两个指令的不同操作码1316和它们指定的预定义的处理时延(等待时间)1318一起存储在表1304中。指令(在该例子中是乘法指令)调度到给定的XU1350,并基于调度指令的内容访问表1304。这样就可以确定,给定的XU1350所需的预定义的处理时延为4纳秒。然后,当给定的XU1350执行特定指令时,根据该要求控制或编程发生器420,以生成自计时信号。
可以理解,表1304可以包括任一数量的操作码-时延组合对应,该数量取决于不同指令的数目和指令处理所需的处理时延量。其它的每个指令可以有其自己的指定处理等待时间。
参照图14,根据本公开示出了处理***1400的另一个实施例。该1400包括指令调度器(和调度程序)1302、等待时间表1304、多个XU1350及其相关联的指令寄存器或FIFO1314。该***还包括流量监测电路1402和动态等待时间发生器1404。虽然图中动态等待时间发生器1404是分开显示或在调度器1302的外面,但动态等待时间发生器1404及其功能可以是指令调度器1302的一部分,或包括在指令调度器1302内。
流量监测电路1402作用是监测和控制电路间的指令流量和计时,用于测量调度到XU1350的指令的瞬时流量/吞吐量。例如,流量监测电路1402可以通过确定发送到XU1250的前一个X(例如,50)指令的类型和/或复杂度和/或XU1350执行前一个X指令的时间量测量调度的平均流量。这能够使流量监测1402平衡XU1350的负载,并优化处理***的整体性能。
基于指令调度流量/吞吐量和存储在指令调度器1302内的预定义策略、协议或规则,指令调度器1302向XU1350发出控制信号,例如,F(流量、操作码,……表),以使与其相关联的自计时发生器420以适当的预定处理时延进行编程/配置。这会结合等待时间时延发生器基于定义的功能F,例如F(流量、操作码,……表),确定适当的预定处理时延来完成。可以基于合适的所需操作功能利用或确定不同的功能F。
在另一个实施例中,在任一给定时间关联于给定的操作码或指定于给定操作码的处理时延与在不同的时间(或先前)关联于相同的给定操作码的处理时延可以不同。当指令流经过指令调度器1302时,预先定义的策略可以通过命令指令(例如,静态调度)来改变。指令调度器1302还可以用于生成信号以改变XU1350的电压并结合时延发生器1402调度电压相关的时延,例如F(流量、操作码、电压、……表)。
在一些实施例中,时延发生器1402的使用使得异步处理器能暂时增加CPU、ALU等的处理速度,并凭借动态异步自时钟调谐,通过降低CPU、ALU等的处理速度动态地降低功耗。
现在接下来图15示出了时延调整控制***1500的两个示例实施例。第一个实施例通过附图编号1510识别,包括反馈引擎(FBE)1520a和流量监控器1402,用于监测BFE和XU1350的多个指令FIFO1314之间指令流量。当确定指令流量较低时,XU1350(或特定的一个或一组)的处理速度就慢。当指令流量较高时,处理速度就会增加。
第二实施例通过附图编号1550识别,包括反馈引擎(FBE)1520b,没有流量监控器。相反,***通过令牌时延监控器2560监测从FBE1520b到XU1350的令牌时延。令牌时延监控器1560用于确定通过XU2250的一个或多个令牌的时延。当令牌时延较短时,XU1350(或特定的一个或一组)的处理速度就减慢。当令牌时延较长时,处理速度就会加快。
时延调整控制***1500通过利用性能优化法、功率优化法、混合法、或以上任一组合中的一个或多个方法,使得动态定时控制能提高整体处理性能和处理器性能。
性能优化法通过一开始尽力先减少等待时间以便将执行的“每秒指令”(IPS,instruction-per-second)的数量增加到预定的水平或目标水平(或稳定水平)。一旦达到该IPS水平,就不再进一步减少等待时间。在该IPS水平,利用改变(增加或减少)等待时间来保持该水平。例如,如果IPS水平开始下降,该方法开始减少等待时间来增加IPS,如果IPS水平开始上升,等待时间增加。性能优化法使得能够通过指令动态控制时延量(允许完成异步电路处理的时间)。
功率优化法通过一开始先增加等待时间以便将执行的IPS减少(降低)到预定的水平或目标水平(或平台)。一旦达到该IPS水平,就不再进一步增加等待时间。在该IPS水平,利用调整(增加或减少)等待时间来保持该水平。功率优化法同样使得能够通过指令动态控制时延量(允许完成异步电路处理的时间)。
操作混合算法以响应静态调度(编译器、指令或标记)。该策略在一次应用中可以在若干候选者之间切换。例如,混合算法可以包括使用性能优化算法和功率优化算法。
图16A示出了可以用于实现本文所公开的设备和方法的示例通信***1600A。总体上,该***1600A使多个无线用户发送和接收数据和其它内容。该1600A***可以实现一个或多个信道接入方法,如码分多址(CDMA)、时分多址(TDMA)、频分多址(FDMA)、正交频分多址(OFDMA)、或单载波频分多址(SC-FDMA)。
在这个例子中,通信***1600A包括用户设备(UE)1610a-1610c、无线接入网络(RANs)1620a-1620b、核心网络1630、公共交换电话网络(PSTN)1640、互联网1650和其它网络1660。虽然图16A仅示出了一定数量的组件或元件,但是***1600A中可以包括任一数量的这些组件或元件。
UE1610a-1610c用于在***1600A中进行操作和/或通信。例如,UE1610a-1610c用于传输和/或接收无线信号或有线信号。每个UE1610a-1610c代表任何合适的终端用户设备,可以包括(或可以指)用户设备/装置(UE)、无线传输/接收单元(WTRU)、移动台、固定或移动用户单元、寻呼器、蜂窝电话、个人数字助理(PDA)、智能手机、笔记本电脑、电脑、触摸板、无线传感器或消费者电子设备等设备。
RAN1620a-1620b分别包括基站1670a-1670b。每个基站1670a-1670b用于与一个或多个UE1610a-1610c无线连接,以便能访问核心网1630、PSTN940、互联网1650、和/或其它网络1660。例如,基站1670a-1670b可以包括(或者是)若干个已知设备中的一个或多个,例如基站收发站(BTS)、Node-B(NodeB)、家庭NodeB、家庭eNodeB、站点控制器、接入点(AP)、或者无线路由器、或服务器、路由器、交换机或其它具有有线或无线网络的处理实体。
在图16A所示的实施例中,基站1670a是RAN1620a的组成部分,它可以包括其它基站、元件、和/或设备。同时,基站1670b是1620b的组成部分,它可以包括其它基站、元件、和/或设备。每个基站1670a-1670b在特定的地理区域或地区内进行传输和/或接收无线信号,这些区域或地区有时称为“小区”。在一些实施例中,每个小区有多个收发器,可以采用多输入多输出(MIMO)技术。
基站1670a-1670b与UE1610a-1610c中的一个或多个利用无线通信链路在一个或多个空中接口1690上进行通信。该空中接口1690可以利用任何合适的无线接入技术。
可以预见,***1600A可以利用多个信道接入功能,包括如上所述的方案。在具体实施例中,基站和UE可以实现LTE、LTE-A和/或LTE-B。当然,也可以利用其它多址接入方案和无线协议。
RAN1620a-1620b与核心网络1630通信,为UE1610a-1610c提供声音、数据、应用、互联网协议电话(VoIP)或其它服务。可以理解,RAN1620a-1620b和/或核心网络1630可以直接或间接地与一个或多个其它RAN(未示出)通信。核心网络1630也可以作为其它网络的接入网关(如PSTN1640、互联网1650、和其它网络1660)。另外,一些或所有UE1610a-1610c可以包括利用不同的无线技术和/或协议在不同的无线链路上与不同无线网络通信的功能。
虽然图16A示出了通信***的一个例子,但是可以对图16A进行各种变化。例如,通信***1600可以包括任一数量的UE、基站、网络、或任何合适配置中的其它组件,可以进一步包括本公开任一附图描述的EPC。
图16B和16C示出了可以实现根据本公开的方法和内容的设备的例子。具体地,图16B示出了UE1610的示例,图16C示出了基站1670的示例。这些组件可以用于***1600中或任何其它合适的***中。
如图16B所示,UE1610包括至少一个处理单元1605。该处理单元1605实现UE1610的各种处理操作。例如,处理单元1605可以执行信号编码、数据处理、功率控制、输入/输出处理、或任何使UE1610在***1600A中操作的其它功能。处理单元1605也支持以上详细描述的方法和内容。每个处理单元1605包括任何用于进行一个或多个操作的合适处理或计算设备。例如,每个处理单元1605可以包括微处理器、微控制器、数字信号处理器、现场可编程门阵列、或应用程序专用集成电路。处理单元1605可以是异步处理器310、330或本公开所描述的处理***300。
UE1610还包括至少一个收发器1602。该收发器1602用于通过至少一个天线1604调制数据或其它传输内容。收发器1602也用于通过至少一个天线1604解调数据或其它内容。每个收发器1602包括任何合适的用于生成无线传输信号和/或处理无线接收的信号的结构。每个天线1604包括任何合适的传输和/或接收无线信号的结构。一个或多个收发器1602可以用于UE1610,一个或多个天线1604也可以用于UE1610。虽然收发器1602显示为单个功能单元,但也可以利用至少一个发送器和至少一个单独的接收器来实现。
UE1610进一步包括一个或多个输入/输出设备1606。该输入/输出设备1606便于与用户交互。每个输入/输出设备1606包括任何向用户提供信息或接收用户信息的合适结构,例如扬声器、麦克风、小键盘、键盘、显示器、或触摸屏。
另外,UE1610包括至少一个存储器1608。该存储器1608存储UE1610使用、生成、或采集的指令和数据。例如,存储器1608可以存储处理单元(1605)执行的软件或固件指令和用于减少或消除传入信号中的干扰的数据。每个存储器1608包括任何合适的易失性和/或非易失性存储和检索设备。可以使用任何合适类型的存储器,例如随机存取存储器(RAM)、只读存储器(ROM)、硬盘、光盘、用户识别模块(SIM)卡、记忆棒、安全数字(SD)记忆卡等。
如图16C所示,基站1670包括至少一个处理单元1655、至少一个发送器1652、至少一个接收器1654、一个或多个天线1656、一个或多个网络接口1666、和至少一个存储器1658。处理单元1655实现基站1670的各种处理操作,例如信号编码、数据处理、功率控制、输入/输出处理、或任何其它功能。处理单元1655还可以支持以上详细描述的方法和内容。每个处理单元1655包括任何用于进行一个或多个操作的合适处理或计算设备。例如,每个处理单元1655可以包括微处理器、微控制器、数字信号处理器、现场可编程门阵列、或应用程序专用集成电路。处理单元1655可以是异步处理器310、330或本公开所描述的处理***300。
每个发送器1652包括任何生成向一个或多个UE或其它设备无线传输的信号的合适结构。每个接收器1654包括任何处理从一个或多个UE或其它设备无线接收的信号的合适结构。收发器虽然显示为单独的组件,但是可以由至少一个发送器1652和至少一个接收器1654进行组合。每个天线1656包括任何传输和/或接收无线信号的合适结构。虽然图中显示共用天线1656与发送器1652和接收器1654都耦连,但也可以是一个或多个天线1656与发送器1652耦连,一个或多个单独的天线1656与接收器1654耦连。每个存储器1658包括任何合适的易失性和/或非易失性存储和检索设备。
关于UE1610和基站1670的其它详细描述,本技术领域人员均已知晓,因此为了简洁,这里不再赘述。
在一些实施例中,一个或多个设备的全部或部分功能或过程可以通过计算机程序来实现或提供,该计算机程序由计算机可读取程序代码组成,并体现在计算机可读取介质中。术语“计算机可读取程序代码”包括任何类型的计算机代码,包括源代码、目标代码和可执行代码。术语“计算机可读取介质”包括计算机能够访问的任何类型的介质,例如只读存储器(ROM)、随机存取存储器(RAM)、硬盘驱动器、光盘(CD)、数字视频光盘(DVD)、或任何其它类型的存储器。
对本专利文件全篇所用的某些词汇和术语进行定义是有利的。术语“包含”和“包括”及其派生词是指包括但不限于。术语“或”包括和/或。术语“与……关联”和“与此相关”及其派生词指包括、包括于…内、与其关联、包含、包含于...内、连接到或连接于、耦合到或耦合于、与…通信、与…协作、交错、并置、邻近于、被绑定到或被绑定于、具有、具有…属性等。
虽然本公开描述了一些实施例和通常相关联的方法,但显然本领域技术人员可以对这些实施例和方法进行修改和置换。因此,本公开并不限定或约束以上所述实施例。其它可能的变化、替换和修改,在不脱离本公开的精神和范围的前提下,均包含在所附的权利要求中。
Claims (14)
1.一种异步处理***,包括:
异步逻辑电路,用于对输入数据执行至少一项处理功能;
自计时发生器,与所述异步逻辑电路耦连,用于接收触发信号,并在接收到所述触发信号后的一个时间段内输出自计时信号,其中所述时间段是可配置的;以及
数据存储单元,用于响应于所述自计时信号而存储来自所述异步逻辑电路的处理数据。
2.根据权利要求1所述的异步处理***,其中所述时间段在一个范围内可编程,所述范围确保有充足的时间完成所述异步逻辑电路的所述处理功能。
3.根据权利要求1所述的异步处理***,其中所述时间段从至少两个可能的不同时间段中选择。
4.根据权利要求3所述的异步处理***,其中所述时间段是响应于处理指令而选择的。
5.根据权利要求4所述的异步处理***,其中基于与所述处理指令相关联的操作码选择所述时间段。
6.根据权利要求1所述的异步处理***,还包括:
第二异步逻辑电路,用于对输入数据执行至少一项处理功能;
第二自计时发生器,与所述第二异步逻辑电路耦连,用于接收第二触发信号,并在接收到所述第二触发信号后的第二时间段内输出第二自计时信号,所述第二时间段是可配置的;以及
第二数据存储单元,用于响应于所述第二自计时信号而存储来自所述第二异步逻辑电路的处理数据。
7.根据权利要求1所述的异步处理***,其中所述异步逻辑电路包括算术逻辑单元(ALU)。
8.一种操作包括异步逻辑电路的异步处理***的方法,所述方法包括:
接收第一处理指令;
根据所述第一处理指令从所述第一处理指令中识别所述异步逻辑电路要执行的第一类型的处理;
根据所识别的第一类型的处理确定第一处理时延时间段;
按照所确定的第一处理时延时间段,配置与所述异步逻辑电路耦连的自计时发生器,以在接收到触发信号后输出自计时信号。
9.根据权利要求8所述的方法,还包括:
由所述异步逻辑电路处理输入数据以生成处理输出数据;以及
响应于所述自计时信号,在存储器中存储所述处理输出数据。
10.根据权利要求9所述的方法,其中所述存储器是数据锁存器,并且所述方法还包括:
响应于所述自计时信号,将所述处理输出数据锁存到所述数据锁存器中。
11.根据权利要求8所述的方法,还包括:
由所述异步逻辑电路根据所述第一类型的处理和所述第一处理指令处理输入数据以生成处理输出数据;
接收第二处理指令;
根据所述第二处理指令从所述第二处理指令中识别所述异步逻辑电路要执行的第二类型的处理;
根据所识别的第二类型的处理确定第二处理时延时间段;以及
按照所确定的第二处理时延时间段配置与所述异步逻辑电路耦连的所述自计时发生器以在接收到另一触发信号后输出另一自计时信号。
12.根据权利要求11所述的方法,其中所述第一处理功能是相加指令,第二处理指令是相乘功能,以及其中所述第一处理时延时间段小于所述第二处理时延时间段。
13.根据权利要求8所述的方法,其中所述异步逻辑电路包括算术逻辑单元(ALU)。
14.根据权利要求8所述的方法,还包括:
所述从所接收的处理指令中识别所述异步逻辑电路要执行的处理的类型的过程包括:
至少部分解码所述处理指令,以确定操作码。
Applications Claiming Priority (15)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361874880P | 2013-09-06 | 2013-09-06 | |
US201361874914P | 2013-09-06 | 2013-09-06 | |
US201361874794P | 2013-09-06 | 2013-09-06 | |
US201361874856P | 2013-09-06 | 2013-09-06 | |
US201361874889P | 2013-09-06 | 2013-09-06 | |
US201361874810P | 2013-09-06 | 2013-09-06 | |
US201361874866P | 2013-09-06 | 2013-09-06 | |
US61/874,866 | 2013-09-06 | ||
US61/874,880 | 2013-09-06 | ||
US61/874,889 | 2013-09-06 | ||
US61/874,914 | 2013-09-06 | ||
US61/874,794 | 2013-09-06 | ||
US61/874,810 | 2013-09-06 | ||
US61/874,856 | 2013-09-06 | ||
PCT/US2014/054613 WO2015035333A1 (en) | 2013-09-06 | 2014-09-08 | Method and apparatus for asynchronous processor based on clock delay adjustment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105379121A true CN105379121A (zh) | 2016-03-02 |
CN105379121B CN105379121B (zh) | 2019-06-28 |
Family
ID=52626716
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480040506.3A Active CN105379121B (zh) | 2013-09-06 | 2014-09-08 | 基于时钟时延调整的异步处理器的方法和设备 |
CN201480041103.0A Active CN105393240B (zh) | 2013-09-06 | 2014-09-08 | 具有辅助异步向量处理器的异步处理器的方法和装置 |
CN201480040566.5A Pending CN105431819A (zh) | 2013-09-06 | 2014-09-08 | 异步处理器消除亚稳态的方法和装置 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480041103.0A Active CN105393240B (zh) | 2013-09-06 | 2014-09-08 | 具有辅助异步向量处理器的异步处理器的方法和装置 |
CN201480040566.5A Pending CN105431819A (zh) | 2013-09-06 | 2014-09-08 | 异步处理器消除亚稳态的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (6) | US10042641B2 (zh) |
EP (3) | EP3014429B1 (zh) |
CN (3) | CN105379121B (zh) |
WO (6) | WO2015035327A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239276A (zh) * | 2017-05-22 | 2017-10-10 | 广州安圣信息科技有限公司 | 一种基于c语言的异步延时执行方法及执行模块 |
CN110998513A (zh) * | 2017-06-22 | 2020-04-10 | Icat有限责任公司 | 高吞吐量处理器 |
CN113190081A (zh) * | 2021-04-26 | 2021-07-30 | 中国科学院近代物理研究所 | 调整电源时间同步性的方法和装置 |
CN113505095A (zh) * | 2021-07-30 | 2021-10-15 | 上海壁仞智能科技有限公司 | 多核异相处理的***级芯片和集成电路 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3014429B1 (en) | 2013-09-06 | 2020-03-04 | Huawei Technologies Co., Ltd. | Method and apparatus for asynchronous processor removal of meta-stability |
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 |
AU2016264100B2 (en) * | 2015-05-21 | 2020-01-02 | Goldman Sachs & Co. LLC | General-purpose parallel computing architecture |
CN108702358B (zh) | 2016-02-01 | 2020-12-08 | 高通股份有限公司 | 可缩放高效高速串行化互连 |
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 |
US10326452B2 (en) * | 2017-09-23 | 2019-06-18 | Eta Compute, Inc. | Synchronizing a self-timed processor with an external event |
CN112313626B (zh) * | 2018-06-22 | 2024-07-19 | 华为技术有限公司 | 异步处理器架构上的死锁检测及同步感知优化的方法 |
CN112771498A (zh) * | 2018-07-05 | 2021-05-07 | 米西克有限公司 | 用于实施智能处理计算架构的***和方法 |
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 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1471668A (zh) * | 2000-10-23 | 2004-01-28 | ŦԼ�и��ױ��Ǵ�ѧ�йܻ� | 具有锁存控制器的异步管线 |
CN101268615A (zh) * | 2005-09-23 | 2008-09-17 | 英特尔公司 | 用于迟滞时序转变检测的方法和装置 |
US7605604B1 (en) * | 2008-07-17 | 2009-10-20 | Xilinx, Inc. | Integrated circuits with novel handshake logic |
US20110057699A1 (en) * | 2008-08-20 | 2011-03-10 | Qimonda Ag | Integrated circuit and programmable delay |
US7936637B2 (en) * | 2008-06-30 | 2011-05-03 | Micron Technology, Inc. | System and method for synchronizing asynchronous signals without external clock |
US8005636B2 (en) * | 2002-12-02 | 2011-08-23 | Silverbrook Research Pty Ltd | Method of controlling clock signal |
Family Cites Families (57)
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 |
US6381692B1 (en) * | 1997-07-16 | 2002-04-30 | California Institute Of Technology | Pipelined 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 |
CN1154111C (zh) | 1998-04-01 | 2004-06-16 | 睦塞德技术公司 | 异步流水线半导体存储器 |
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 |
EP1332429B1 (en) | 2000-11-06 | 2011-02-09 | Broadcom Corporation | Reconfigurable processing system and method |
US7681013B1 (en) * | 2001-12-31 | 2010-03-16 | Apple Inc. | Method for variable length decoding using multiple configurable look-up tables |
US7376812B1 (en) | 2002-05-13 | 2008-05-20 | Tensilica, Inc. | Vector co-processor for configurable and extensible processor architecture |
US7246251B2 (en) * | 2002-09-20 | 2007-07-17 | Nxp B.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 |
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 |
US7533248B1 (en) * | 2004-06-30 | 2009-05-12 | Sun Microsystems, Inc. | Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor |
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 |
EP1812928A4 (en) * | 2004-11-15 | 2010-03-31 | Nvidia Corp | VIDEO PROCESSING |
US8416251B2 (en) | 2004-11-15 | 2013-04-09 | Nvidia Corporation | Stream processing in a video processor |
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 |
JP4893621B2 (ja) | 2005-05-20 | 2012-03-07 | ソニー株式会社 | 信号処理装置 |
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 |
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 |
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 |
JP5565228B2 (ja) | 2010-09-13 | 2014-08-06 | ソニー株式会社 | プロセッサ |
US9285793B2 (en) | 2010-10-21 | 2016-03-15 | Bluewireless Technology Limited | Data processing unit including a scalar processing unit and a heterogeneous processor unit |
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 |
EP3014429B1 (en) * | 2013-09-06 | 2020-03-04 | Huawei Technologies Co., Ltd. | Method and apparatus for asynchronous processor removal of meta-stability |
-
2014
- 2014-09-08 EP EP14841550.8A patent/EP3014429B1/en active Active
- 2014-09-08 EP EP14842900.4A patent/EP3031137B1/en active Active
- 2014-09-08 CN CN201480040506.3A patent/CN105379121B/zh active Active
- 2014-09-08 WO PCT/US2014/054607 patent/WO2015035327A1/en active Application Filing
- 2014-09-08 CN CN201480041103.0A patent/CN105393240B/zh active Active
- 2014-09-08 WO PCT/US2014/054620 patent/WO2015035340A1/en active Application Filing
- 2014-09-08 US US14/480,573 patent/US10042641B2/en active Active
- 2014-09-08 US US14/480,556 patent/US9846581B2/en active Active
- 2014-09-08 WO PCT/US2014/054616 patent/WO2015035336A1/en active Application Filing
- 2014-09-08 WO PCT/US2014/054613 patent/WO2015035333A1/en active Application Filing
- 2014-09-08 EP EP14842884.0A patent/EP3014468A4/en not_active Ceased
- 2014-09-08 CN CN201480040566.5A patent/CN105431819A/zh active Pending
- 2014-09-08 WO PCT/US2014/054618 patent/WO2015035338A1/en active Application Filing
- 2014-09-08 US US14/480,561 patent/US20150074680A1/en not_active Abandoned
- 2014-09-08 US US14/480,522 patent/US9740487B2/en active Active
- 2014-09-08 US US14/480,491 patent/US9489200B2/en active Active
- 2014-09-08 US US14/480,531 patent/US9606801B2/en active Active
- 2014-09-08 WO PCT/US2014/054610 patent/WO2015035330A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1471668A (zh) * | 2000-10-23 | 2004-01-28 | ŦԼ�и��ױ��Ǵ�ѧ�йܻ� | 具有锁存控制器的异步管线 |
US8005636B2 (en) * | 2002-12-02 | 2011-08-23 | Silverbrook Research Pty Ltd | Method of controlling clock signal |
CN101268615A (zh) * | 2005-09-23 | 2008-09-17 | 英特尔公司 | 用于迟滞时序转变检测的方法和装置 |
US7936637B2 (en) * | 2008-06-30 | 2011-05-03 | Micron Technology, Inc. | System and method for synchronizing asynchronous signals without external clock |
US7605604B1 (en) * | 2008-07-17 | 2009-10-20 | Xilinx, Inc. | Integrated circuits with novel handshake logic |
US20110057699A1 (en) * | 2008-08-20 | 2011-03-10 | Qimonda Ag | Integrated circuit and programmable delay |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239276A (zh) * | 2017-05-22 | 2017-10-10 | 广州安圣信息科技有限公司 | 一种基于c语言的异步延时执行方法及执行模块 |
CN110998513A (zh) * | 2017-06-22 | 2020-04-10 | Icat有限责任公司 | 高吞吐量处理器 |
CN113190081A (zh) * | 2021-04-26 | 2021-07-30 | 中国科学院近代物理研究所 | 调整电源时间同步性的方法和装置 |
CN113505095A (zh) * | 2021-07-30 | 2021-10-15 | 上海壁仞智能科技有限公司 | 多核异相处理的***级芯片和集成电路 |
Also Published As
Publication number | Publication date |
---|---|
US20150074374A1 (en) | 2015-03-12 |
CN105393240A (zh) | 2016-03-09 |
CN105393240B (zh) | 2018-01-23 |
EP3014468A4 (en) | 2017-06-21 |
EP3014468A1 (en) | 2016-05-04 |
US20150074446A1 (en) | 2015-03-12 |
WO2015035327A1 (en) | 2015-03-12 |
WO2015035338A1 (en) | 2015-03-12 |
WO2015035333A1 (en) | 2015-03-12 |
US9606801B2 (en) | 2017-03-28 |
US9846581B2 (en) | 2017-12-19 |
US20150074380A1 (en) | 2015-03-12 |
US20150074680A1 (en) | 2015-03-12 |
US9740487B2 (en) | 2017-08-22 |
WO2015035330A1 (en) | 2015-03-12 |
CN105431819A (zh) | 2016-03-23 |
EP3014429A1 (en) | 2016-05-04 |
EP3014429A4 (en) | 2016-09-21 |
CN105379121B (zh) | 2019-06-28 |
EP3014429B1 (en) | 2020-03-04 |
EP3031137A4 (en) | 2018-01-10 |
EP3031137B1 (en) | 2022-01-05 |
US9489200B2 (en) | 2016-11-08 |
WO2015035340A1 (en) | 2015-03-12 |
EP3031137A1 (en) | 2016-06-15 |
US10042641B2 (en) | 2018-08-07 |
US20150074445A1 (en) | 2015-03-12 |
WO2015035336A1 (en) | 2015-03-12 |
US20150074443A1 (en) | 2015-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105379121A (zh) | 基于时钟时延调整的异步处理器的方法和设备 | |
EP3588285B1 (en) | Sequence optimizations in a high-performance computing environment | |
CN110688160B (zh) | 一种指令流水线处理方法、***、设备及计算机存储介质 | |
KR20070059238A (ko) | 재구성 프로세서에서 루프 버퍼를 최적화하기 위한 장치 및방법 | |
CN105794113B (zh) | 与仿真和原型平台上的分区的动态互连 | |
US20140177832A1 (en) | Provision to an application of a random number not generated by an operating system | |
US20230244497A1 (en) | Context-aware thin-network stack to provide rich network features in split boot architecture | |
Muzaffar et al. | A domain-specific processor microarchitecture for energy-efficient, dynamic iot communication | |
You et al. | Energy‐Efficient Offloading for Mobile Edge Computing | |
KR101737777B1 (ko) | 컴퓨팅 장치 성능 모니터 | |
US9800469B2 (en) | Predicting the performance of a multi-stage communications network under load from multiple communicating servers | |
da Silva et al. | Exploiting partial reconfiguration through PCIe for a microphone array network emulator | |
US9703910B2 (en) | Control path power adjustment for chip design | |
CN109857469A (zh) | 显示屏控制方法及相关产品 | |
US11513936B2 (en) | Computing device application performance optimization system | |
Zompakis et al. | System scenarios-based architecture level exploration of SDR application using a network-on-chip simulation framework | |
KR102216063B1 (ko) | Lte 시스템의 ifft 입력 제어 장치 | |
Sharma et al. | HDLC Implementation in Wireless Sensor Networks | |
JP2019053413A (ja) | データ処理装置及びデータ処理方法 | |
JP2012252496A (ja) | コンパイル装置 | |
JP2011023980A (ja) | 省電力データ伝送装置及び方法及びプログラム |
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 |