CN102144225A - 实时数据处理方法和装置 - Google Patents
实时数据处理方法和装置 Download PDFInfo
- Publication number
- CN102144225A CN102144225A CN2009801307349A CN200980130734A CN102144225A CN 102144225 A CN102144225 A CN 102144225A CN 2009801307349 A CN2009801307349 A CN 2009801307349A CN 200980130734 A CN200980130734 A CN 200980130734A CN 102144225 A CN102144225 A CN 102144225A
- Authority
- CN
- China
- Prior art keywords
- data
- instruction
- unit
- hardware
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 41
- 238000012545 processing Methods 0.000 title claims description 41
- 239000013598 vector Substances 0.000 claims description 29
- 230000006870 function Effects 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 8
- 230000001360 synchronised effect Effects 0.000 claims description 8
- 230000003139 buffering effect Effects 0.000 claims description 6
- 230000005055 memory storage Effects 0.000 claims description 5
- 238000013500 data storage Methods 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 claims description 2
- 238000010276 construction Methods 0.000 claims 2
- 230000008030 elimination Effects 0.000 claims 1
- 238000003379 elimination reaction Methods 0.000 claims 1
- 238000013461 design Methods 0.000 abstract description 20
- 238000004891 communication Methods 0.000 abstract description 3
- 230000004044 response Effects 0.000 abstract 1
- 238000005516 engineering process Methods 0.000 description 5
- 230000000873 masking effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000012190 activator Substances 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000003169 central nervous system Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- 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/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
揭示用于可编程微处理器的改进的指令集和内核设计、控制和通信,涉及用新颖的分布式程序序列化取代当今的和现有技术处理器中的集中式程序序列化,其中每个功能单元具有它自己的指令取得和解码块,而各功能单元有它自己的本地存储器用于程序存储;以及其中计算硬件执行单元和存储单元被灵活地流水线化为具有不同顺序的可重配置的流水线级的可编程嵌入式处理器,该可重配置的流水线级可响应于变化的应用指令序列,其建立硬件单元的不同配置和切换互连。
Description
技术领域
本发明一般涉及实时数据处理及其微处理器技术领域;更具体地说,涉及改善可编程微处理器等的控制、通信、指令集设计和数据流;特别是,尽管不是排他性的,涉及切换控制的可编程处理器和灵活的流水线和并行处理中的改进的记忆单元设计、编程方法和流程控制,如同共同待决的美国专利申请11/973,184中描述的。
背景技术
如同所述共同待决专利申请中描述的,现有技术和现有的处理器架构还没有实现实时通用多媒体应用所需的足够强大、足够灵活的设计,特别是考虑到一个系统(例如,单个手持装置,比如蜂窝手机)中所集成的不断增长的、各种各样的程序应用。
现有处理器架构(例如,MIPS、ARM等)通常使用单一指令集工作;而以这种指令集编码的控制信息驱动单一处理器内核中的所有的功能电路块。
这种功能块的代表是:
计算下一个取指令地址的定序器(sequencer)(例如,+1以取得紧接着当前指令的指令,加载x以进行分支,等)。这种指令地址的计算可能依赖于条件标志(condition flag)。
对输入数据执行各种算术或逻辑运算的计算单元,比如在所述共同待决专利申请中描述的执行单元。
寄存器文件和它们到该计算单元的输入和输出的可配置连接。
可被配置为对外部存储器中的具体地址发送数据或接收数据的存储器总线。
这些功能块越灵活,它们越能够更好地用于执行任何通用程序。另一方面,这些功能块越灵活,需要越多的位来配置它们进行具体操作。
现在将回顾现有技术的架构及其强处和限制,作为本发明的处理器内核中使用的本发明的指令集设计、本文的控制和通信的策略的背景技术。
在传统的冯诺依曼架构中,兼容的软件程序包含待执行的指令序列以及待处理的数据,而两者一起被存储在存储器中。然而,存储器和CPU之间的带宽限制了其性能,因为它对每个时钟周期中可以向该处理器发送多少位(bit)指令和数据设置了上限。这是在二十世纪七十年代就认识到的著名的冯诺依曼“瓶颈”。
后来的架构,比如哈佛和超级哈佛架构,分开了指令和数据存储;并在CPU内部增加了更快的内部存储器的指令高速缓存以能够从外部存储器进行新的指令页(存储块)的预测性加载,以及老的页的换出。其目标是从更快的高速缓存存储器而不是从主指令存储器中取出下一条指令。使用预测算法来确定要加载哪些新的页和换出哪些旧的页。尽管对于高速缓存“击中”(即,在该高速缓存中找到了该指令)提升了性能,然而当有高速缓存“错过”(即,没有在该高速缓存中找到该指令)时,在等待新的页被加载的时候处理器停顿许多个周期。如果该预测算法效率不高,性能会受损失。这种设计还带来处理这种高效的预测算法的增加的硬件和复杂度。一些现代的处理器架构也使用数据高速缓存。
一种如所述共同待决专利申请所述的被称为RISC处理器与流水线的不同的现有技术致力于限制单个指令的大小。精简指令集计算机(RISC)以任何通用程序的最小公分母为原则限定指令集。该指令集是简单的或“精简的”,使得执行它们所需的硬件也很简单。然后单个指令的执行被分为硬件中的流水线级,其具有相等或类似的传播延迟和寄存器以缓冲中间数据结果,并具有由一级传递到下一级的必要的控制信号。然后该处理器试图将n个指令与执行前面的一级的在先指令的执行并行堆栈起来。当该流水线被充满时,每个指令的吞吐量是完成它在硬件中的执行的时间的1/n。用这种方式,即便该指令集比较简单且每个指令可以执行有限的操作,它也执行地快得多,像例如在经典MIPS处理器(一种熟知的5级RISC)中一样。在这种MIPS设计中,保持该指令集简单,而该硬件被重复使用。例如,在ALU上,块不仅用于数据处理,还用于计算数据存储器存取的地址。寄存器文件被用于存取ALU操作前和操作后的数据,并存储部分存储器存取地址。这是可能的,因为所有指令保持相对简单并需要类似量的硬件处理。但是即使在这种简单架构中,不能一直利用所有的硬件。例如,该MEM(存储器存取)级不被用于任何算术或逻辑操作指令。
而且,应当观察到,在流水线化RISC设计中,所有流水线级的所有控制信号是在ID(指令解码)级产生的,而它们必须被缓冲并传送到其预定级。即便在简单的5级MIPS中,因此还有许多控制信号被缓冲并沿着该流水线级被发送。
尽管,正如还在所述共同待决专利申请中解释的那样,该RISC处理器通过利用流水线化的结构而改进了指令吞吐量,然而这种附加式改进有限制。一个这样的限制是其执行密集计算实时信号处理程序的能力。在没有用于乘法或乘加运算的专用指令和专用硬件的情况下,这些运算会花费许多周期来执行。在一个示例中,16位乘法可能花多达16个周期;而32位的乘法可能花多达32个周期。然而,这种性能不足以用于实时密集计算算法。另一个限制是对填充该流水线的约束。如果下个指令的选择依赖于前一个指令的计算结果(即,分支指令),在不知道结果时不能在取前一个周期之后取一个周期。这阻止了该流水线被充满,这导致停顿。然而,代替停顿,在分支的一个路径上的指令可以以预测方式取得。当能得到该结果时,该流水线因此能正常继续,假定已经取得了正确的分支的话。否则,该流水线必须被刷新(flushed)以回到正确的分支。这种预测性执行因而只在该分支预测具有高精确度的时候才能够提高效率,而高精确度并不总是容易实现的。
如前面在所述共同待决专利申请中还提到的,使用DSP可以显著改善具有连续乘加或MAC操作(例如,滤波,矩阵乘法)的算法的性能,因为具有附加的专用指令和专用硬件的流水线化DSP实现了单个周期的MAC操作吞吐量。
但是对于非密集计算程序,附加的单个周期MAC逻辑会是相当大的开销,因为其不被用于其它指令。而且对于不是主要基于MAC的算法(例如,视频解码中的运动补偿,其反而是基于加法的),MAC逻辑也不能提高性能。
另外,随着当前的实时多媒体处理算法变得越来越复杂,必须向该处理器增加越来越多的计算硬件。为了保持高吞吐量,仍然使用流水线化结构,但是具有更多的级,以使每一级具有合理的传播延迟。
而且,在有更多的硬件并行执行更多计算的情况下,更多的控制信息(即,指令)和更多的数据必须在每个时钟周期进入处理器流水线以利用该硬件块。那么原来的之前讨论的冯诺依曼瓶颈的挑战增加了好多倍,因为时钟速率变得高得多。另外,每个时钟周期有更多指令和数据需要进入处理器流水线级,因此如指令和数据高速缓存、分支预测等技术仍然必须被用于改善性能。
在使用不同的计算硬件并行处理数据的情况下,它们的能力必须被映射到用户程序。与RISC相反,硬件不再是通用程序的最小公分母并且最高效的映射不易于实现。而指令集设计相应地开始背离传统的RISC原则。
然而,一种利用多个并行执行的计算块的方式是复制硬件单元并使用相同的指令驱动多个数据计算集。这被称为单指令多数据(SIMD)且它是对控制位的有效利用;但是它只对具有对不同数据集的许多并行的同样计算的算法才实用。
然而,将并行计算映射到不同的硬件块更加复杂。一种途径是使用固定长度指令,每个指令针对一个硬件块。硬件指令序列化(sequencing)和调度块能够在每个时钟周期取出和序列化多个指令。为每个计算单元提供指令解码块,这被称为“超标量指令调度架构”。
又一种现有途径是使用超长指令字(VLIW)来对并行指令的所有可能组合编码。在这种情况下,只需要一个指令获取模块,该指令获取模块每次能够取一个指令。但是这种长指令对于简单操作(例如,没有并行计算的控制指令)非常低效。
处理器设计的最终复杂度
尽管目前的处理器使用上述技术来提高性能,所有处理器仍旧增加了硬件复杂度和功率消耗。相应地,求助于利用一个或更多个的分级数据和指令存储器层用于利用成熟的页面替换算法来进行高速缓存。然而,这导致了复杂的取指逻辑的需要以计算从哪里取下一个指令。多个计算块集合专用于特定的计算激励器(activator),比如乘法、加法和逻辑操作、移位和旋转(rotate)-这些的确仅在一个周期中能被完全利用,如果1)该程序被序列化为并行使用所有的块,以及2)有足够的带宽使所需的控制位至该计算块。使用分支预测保持流水线的填充当然会碰到分支预测错误,这些错误可能代价更大,因为此时要被刷新的流水线是更深的。
所有上面的处理器设计和现有技术方案,包括增加的硬件和复杂度,尚未实现一种用于实时通用多媒体应用的足够强大、足够灵活的处理器。
对当今的具有片上系统(System On Chip,SoC)通用设计的多媒体移动手机的回顾揭示了对多处理器的使用以及对位于其中的多个专用集成电路(ASIC)块的补充使用(也在所述共同待决申请中讨论过)。当今的高端机顶盒SoC也是这样。这些多处理器往往包括用于控制功能的简单的RISC、用于声音/音频处理的传统的数字信号处理(DSP)以及用于图像和视频处理的VLIW多媒体处理器,并有处置现有可编程处理器无法良好处置的算法的ASIC块作为补充。
然而,在ASIC和独立可编程处理器两种手段之间有显著的差异。
当今的处理器具有集中式指令调度。处理器流水线中的所有逻辑块获得通过该流水线从指令解码级发送的它们的控制信号。例如,对于长达256位的编码指令,解码控制信号可能是多个。这些信号需要在每个周期到达它们的预定块以保持吞吐量,这导致相当大的控制信号的片上带宽要求。指令还必须被序列化以在数据存储器带宽、寄存器文件的大小和它们对该计算单元的可能连接的约束下最大化每个时钟周期的计算硬件的使用,使得有效的指令序列化成为艰巨的任务。
ASIC和这样的通用处理器之间的最显著的差异是:ASIC没有程序或指令。ASIC只有数据流,而没有指令或控制流。输入数据流经不同的功能块和缓冲存储器块到输出,数据在它们遍历(traverse)各功能块时被其处理,并且没有指令通信开销,可以保持低时钟速率。
依照本发明在后面详细描述的手段,成功克服了现存的和现有技术的可编程处理器以及它们的集中式取指或解码块策略(其确定该系统中每个时钟周期每隔一个块的控制)的这些不足中的许多不足。
另外,有许多现存和现有技术通用处理器难以处置的一些流行的算法和操作。其中之一涉及可变长度解码器(VLD)或赫夫曼解码器的实现。通常,霍夫曼编码使用较少的位来编码出现得较频繁的符号(例如,英语中的字母“e”),并用较多的位来编码出现得较不频繁的符号(例如,英语中的字母“x”)。比特流中的这些符号的解码在当前处理器中是困难的,因为:
1、常用符号通常被用比处理器的固定的操作数位(oprand bit)少得多的位编码;以及
2、符号开始的位置取决于当前符号的处理结果,使得下一个指令总是依赖于当前指令的计算结果。实际上没有有效的预测取指算法能够实现,因为该取指是完全依赖数据的。这是很低效的,因为这使得填充该流水线近乎不可能。
当前处理器的另一个挑战是有限状态机(FSM)的实现。FSM被用于根据以前存储的状态和新的输入快速得出新状态。然后从该新状态,或者从新状态和输入得出输出(或动作)。然而,与典型操作数位宽相比,通常有很少的新输入的位,以及很少的代表状态的位。因此,写出能够可以在处理器中很容易被流水线化以进行快速执行的FSM指令序列是极为困难的。但是使用有限的门电路(gate)和若干寄存器位,在数字ASIC中可以实现超快FSM。事实上,各符号的赫夫曼解码可以用一些链接状态以及继续该解码过程要读取的新的位的数量来实现,其中各状态对应于已被读取的特定的位模式。
本发明通过改善到存储体(memory bank)的逻辑电路接口而解决了这些限制。
发明目标
相应地,本发明的主要目标是提供一种新的、改进的灵活的数据处理方法和装置,其特别适于通用和专用二者的实时多媒体应用以及用于数字程序用途,而且没有上面提到的或在下文中描述的以及其它的现有技术中或现存的处理器的限制和困难;而且,结合具有所述共同待决专利申请的可配置流水线级的灵活的可编程嵌入式处理器,开启了一片新的空间,其中应用软件程序几乎可以不受约束地集成到单个装置(比如蜂窝手机、电视接收器的机顶盒或其它类似装置)中。
进一步的目标是提供一种高度创新性的多处理器内核设计和控制,其具有新颖的存储器组织和数据路径,以及与存储体的合适的读取侧和写入侧接口。
其它的和进一步的目标将在下文中指出,也会在所附权利要求中描述。
发明内容
总而言之,从或许更广阔的角度之一来看,本发明包括一种用处理器进行时钟周期同步的灵活可编程数据处理的方法,所述处理器包含多个不同的功能计算单元、存储单元、用于将它们互连的全存取切换单元以及控制单元,其包含
连接不同的功能单元以形成以分层方式的预定的控制路径和数据流水线;
使用公共指令集编程所有的功能单元,其中所述指令集直接编码指令序列化(即,用于计算下一个指令取得的地址的方法)并直接或间接编码硬件控制;
设立分布式程序序列化,其中各功能单元有它自己的程序计数器、指令取得和解码单元和它自己的本地存储器用于程序存储;
每个时钟周期生成控制向量,所述控制向量控制这些功能单元的数据路径;以及
将多个存储单元配置为以不同的存储器存取模式工作并将它们通过所述切换单元连接到功能计算单元以最大化可编程性
随后介绍优选的和最佳的模式设计细节。
附图说明
现在将参考附图描述本发明,其中图1为描绘本发明的方框图,其中具有其分布式程序序列化和去耦合的(de-coupled)指令数据流;
图2是类似的图,显示了图1的各功能单元的优选定序器;
图3显示了一种使用优选的环形总线的有用控制组织;
图4是一种用于数据流水线的合适的供应者-消费者组织化配置;
图5是一种优选的存储单元组织的图示,其包括两个双端口存储体和两个读取侧和写入侧接口;
图6是一种可被编程有图7的查找表的组合电路和方框图;
图8是一种与本发明一起使用的写入侧接口的图示;以及
图9描绘了用作有限状态机的存储单元,其中两个读取侧接口被同步使用以读取一个存储体中的状态表条目和另一个存储体中的输入位流。
具体实施方式
如前所解释,在当代处理器设计中,该指令取得与指令解码级是整个处理器的中枢神经系统,而整个处理器的效率取决于每个时钟周期将进入指令翻译成控制信号以驱动该流水线级中所有硬件执行有用工作。而且,这需要在上述所有硬件、软件和带宽限制的情况下完成。
基于本发明及其实施方式本文所述的是一种取消集中式取得和解码块的非常不同的实现策略,其在每个时钟周期确定该系统中每隔一个块的控制。相反,现有方法是对批量数据处理建立类似于ASIC中的自然的(natural)数据流,但是仍然保持可编程性的优势。以下条目总结了本发明的策略和手段。
表格1
1、采用分布式程序序列化而不是集中式程序序列化,其中该处理器中的各功能块有它自己的程序计数器、指令取得和解码块,且各功能块有它自己的本地存储器用于程序存储。
2、使用所有功能单元共用的通用指令集来编程各功能单元,其中该指令集直接编码指令序列化(即,用于计算下一个指令取得的地址的方法)且直接或间接编码硬件控制。
3、通过将不同功能块连接起来以形成控制分层和数据流水线而以分层方式控制该功能块。
4、使得计算块灵活地符合更多类型的数据流和运算,以便它们可以对输入数据执行更多的算术和逻辑运算步骤而无需在存储器中进行中间缓冲,或减少与数据存储器的往来通信,如同所述共同待决专利申请中所教导的。
5、通过全存取切换(full-access switch)将多个存储器块和相关的逻辑与计算块连接起来以最大化可编程性,如所述共同待决专利申请中的那样。
6、向该存储器读取/写入线路增加逻辑以处置依赖数据的处理、树或图的遍历,如本文随后所述的有限状态机。
本发明的采用分布式程序序列化(上述第1项)的策略的理由首先是基于以下事实:随着该处理器被分为不同功能块、每个功能块着重执行特定操作(例如,用于数据计算的执行单元、用于以特定寻址模式获取数据和写回数据的存储单元),要更少的硬件来控制每个块。用户程序或子例程(subroutine)中每个块所需的不同操作模式的总数量是有限的。而且,用于整个用户程序或至少一些子例程的控制线可被存储在合理量的本地程序和控制向量存储器中。而且,此手段从数据流解耦合出指令流。多个数据集可重复使用功能单元中同样的指令序列,以在该块中被恰当处理。另外,这种控制信息不需要遍历该数据流水线,从而节省了缓冲资源和片上带宽。
分离指令序列化和数据路径控制(上述第2项)的原理是一种简化,同时对数据路径中各种不同硬件块的控制向量的大小和定义提供了灵活性。然而,对各种不同硬件块可使用相同的指令集。
至于上述第3项,使用分层控制,程序和指令流可以在不同层次上、用不同类型的数据和控制交换需求进行管理。
参考图1的功能块指令序列化图示,本发明因而提供了一种灵活的编程方法、控制机制和处理器架构,其中处理器P中的硬件资源,优选地是流水线式架构PS,被分成功能块(例如,执行单元6、存储单元4和切换单元5),例如,如所述共同待决申请中所述的那样。每个功能块有它自己的本地程序存储器(标记为“程序存储器”)、定序器(如此标记)以从程序存储器中取得指令,并解码该指令且产生在每个时钟周期控制该数据路径中的硬件的功能的控制向量,如图2中更完整地显示的。
在图1和2中概括了本发明的示范指令集和相应的定序器设计,其明确编码了计算下一个指令地址(条件分支、跳跃等)的方法,和该数据路径的三个示例性通用操作模式,并能够间接使能该数据路径的所有其它类型的操作。这种指令集设计允许相同的指令集编程各种不同的硬件块,该硬件块需要不同数量的位来编码它们的相应的控制向量。下一个指令的地址的计算依赖于当前指令编码和连接于该指令定序器的状态信号,如图2中所示。
有两种配置该数据路径的间接方法:
a、指令包括用于在定序器内部的专用存储空间内查找下一个时钟周期的控制向量的地址指针。该控制向量行(control vector line)的内容确定时钟周期内数据路径的以下三个方面:
i、数据路径的不同部分之间的互连以构建数据路径内的部分数据流水线,
ii、由该数据路径执行的特定的算术及逻辑操作,
iii、传递至该指令定序器的状态信号的选择。
b、包括规定寄存器地址或寄存器内容的字段的指令,以便此类型的多个指令能被用于更新该数据路径中的寄存器。
在优选操作中,以下三个操作被明确编码:
a、中止该数据路径操作以便如果该状态信号为真的话则该数据路径中的寄存器不会用新值更新。
b、清除该中止。
c、设定控制向量寻址模式为路径更新模式(图2),以便该数据路径负责产生用于在该定序器内部的专用存储空间中查找下一个时钟周期的它自己的控制向量的指针。(数据路径负责清除此模式。)
图1和2的功能块的组织使得它们可以被组织为父块C(处理器控制电路)和附属块或“子”块4、5、6等以用于控制之目的。
该父块控制单元C将程序(通常通过DMA)和控制向量的批量传送初始化至其在该附属块或子块中的分配的存储空间中。
在优选实现中,本发明使用环形总线(图3),其在父块开始并终止于该父块,且其途径其各附属块。此环形总线被用于通过通用寄存器和存储器读取/写入协议在该控制单元父块和其所有附属块4、5、6等之间传递消息。例如,它可被控制块C用于设定该程序计数寄存器指向附属块中待执行的程序的下个模块的开始。
如果需要的话,则从父控制块C到附属块的起始信号的可选集还可被用于控制某些程序模块开始执行的精确的时钟周期;而从附属块回到该父块的中断信号的可选集还可被用于请求来自该父控制块的注意。例如,该附属块可以发出该信号以表明它已经完成了程序模块的执行。
图4描绘了以供应者和消费者的关系为控制目的的功能块沿该数据流水线的组织。
有“有效”信号从供应者至消费者,以表明自消费者发送至供应者的数据是有效的且因此消费者中的处理可以开始。
有“保持”信号从消费者发送至供应者,以表明消费者不能接收新数据。供应者则将中止其操作并将寄存器值保存在其数据路径中直至该保持信号被清除,在该点它将恢复操作。该“有效”和“保持”信号可由控制向量直接设置,或由该数据路径中的逻辑电路设置。
对于本发明,用于上述提及的本发明的处理器设计的将目标数据处理程序映射到指令序列的方法涉及以下步骤:
a、将整个数据处理程序分为不同的数据处理模块。每个模块能由数据流水线处置,该数据流水线构造有如前所述的处理器中的单个或多个功能块。不同的数据处理模块可在该处理器中以不同的时隙执行或可在分开的硬件块(其间有恰当连接)上执行。
b、对应于单个处理模块的各数据流水线被构造有单个或多个指令序列,沿该数据流水线的每个功能块一个。
i、该指令序列始于对开始或有效信号的自转等待(spin wait)。该指令序列终止于中断或至其父块的消息写入。
ii、该指令序列通常包括循环(loop),其循环计数表明根据该循环内的指令序列遍历该功能块内部的数据流水线的该部分的数据集的数量。(即,批量处理)。
iii、该指令序列允许如图4所示的“有效”和“保持”信号的正常设定。
c、对用于构建所有数据流水线的所有功能块,通过父块或控制块C中的指令序列而实现对在时隙中的从一个处理模块到下一个处理模块的行进(progression)的控制。
对于每个数据处理模块-
i、该指令序列确保用于数据处理模块的功能块在适当状态以开始执行。
ii、该指令序列发送起始信号至该数据流水线开始处的功能块(通常是存储单元)。
iii、当用于当前处理模块的数据流水线正在运行时,指令序列初始化该程序(即,指令序列和控制向量)和数据至其相应存储空间的成批加载和该程序(即,指令序列和控制向量)从其相应存储空间的成批卸载(unload),以为下一个处理模块做好准备(假定硬件可用性和必要性)。
[注1:对于某些用户程序,整个程序的所有指令序列可安装于该分布式程序存储空间中,从而它们可在启动(boot-up)时被加载。
注2:对于根据前一模块的结果进行操作的数据处理,该数据能够仅呆在原地而不被卸载。
注3:而且,这种类型的高速缓存重新加载是确定性的而非预测性的。]
iv、该指令序列等待来自位于该流水线末尾的功能块(也通常是存储单元)的消息或中断。
从大体由本发明为可编程处理器提供的改进的方面转开,现在将考虑用于所述共同待决专利申请和本发明的灵活处理器的优选存储单元架构。
本发明的改进的存储单元组织、架构和数据流
在优选存储单元设计(其适于所述共同待决专利申请共用硬件的可编程流水线结构)中,结构被用于协助软件算法与操作的快速执行。本发明的优选处理器设计包括多个存储单元,其可以编程序为作为独立数据存储器用于不同的和独立的计算块的,或同步操作以为互连的计算块提供具有恰当的寻址方式(例如,两维寻址、旋转寻址等等)的统一的数据存储器。图5中显示了本发明的可编程处理器内的存储单元的组织,而图6中显示了单一存储单元的数据路径。
在图5中,显示存储单元的数据路径,包括在图5和6中的两个双端口存储体(标记为“体0”和“体1”)、如图6中所标记的两个读取数据侧接口、两个写入侧接口和数据和状态交换(DSE)。该两个读取侧面接口具有不同的功能。该两个写入侧接口也具有不同的功能。哪个写入侧接口连接到哪个存储体,以及那个读取侧接口连接到哪个存储体是可编程的。该硬件允许分层数据流水线的设立。在上层分层处,该DSE设立在该两个存储体的读取接口和写入接口之间的数据和状态交换。在下层分层处,各读取接口或写入接口为该接口单元内的特定处理设立特定的数据流水线。
本发明允许为了不同的操作而在相同的存储体内或两个存储体之间的同步读取、同步写入或同步的读取和写入。
本发明还允许从切换单元5到适当的存储体的数据发送和接收,作为该数据流水线操作的一部分,并且同时从该DMA向适当的存储体发送和接收数据以向外部存储器进行数据的批量转移。(在实践中,这是为了进行之前提到的确定性高速缓存加载和卸载,以准备好下一个的任务或程序模块)。
图6的读取侧接口由如图7标注的ALU、数据掩蔽和选择块和小随机存取存储器(RAM,其可被编程为具有查找表)组成。该数据掩蔽和选择块可以屏蔽掉数据字中的某些位或者选择数据字中的子字以进行传递。该RAM可被编程为具有查找表,在该查找表中可使用输入地址重新获取一个内容行,其是寻址用于该功能单元的控制向量存储器的地址指针。该RAM可被配置为接受来自不同源的地址输入(例如,该数据路径中的部分处理后的数据或状态)。
图6的写入侧接口在图8中显示为由ALU和数据组合器块组成。该数据组合器可以将来自两个数据字的两个子字合并以形成新的数据字。
该读取侧接口和该写入侧接口允许为存储器的读取和写入进行不同的地址计算模式。它们还允许在读取操作之后处理读取数据和在写入操作之前处理写入数据。
另外,依照本发明,它们还提供所需的硬件以编程该存储单元以作为有限状态机(FSM)工作。这样的机器例如可以是已知的米利机或莫尔机的形式。在这种操作中,
a、该两个存储体被用在每个存储单元中以在一个存储体中保持该状态表条目,而在另一个存储体中保持输入位流,如图9所示。
b、每个状态表条目由两个字段组成-
i、标签字段TG,其将被用于通过编程在该RAM中的查找表索引对应于此状态的控制向量;以及
ii、基地址字段BA,与该输入流结合使用以计算下一个状态条目的读取地址。
c、该两个读取侧接口被同步使用以读取一个存储体中的状态表条目和另一个存储体中的输入位流。该输入位流被发送至负责读取该状态表条目的读取侧接口并在其寄存器文件中被缓冲。
d、用于存储单元的控制向量寻址模式被设定为数据路径更新模式,允许数据路径为下一个周期选择它自己的控制向量。
e、对于每个状态条目读取,数据掩蔽和选择块将表条目分解为两个字段TG和BA。
f、标签TG通过编程在该RAM中的查找表(在图7中显示为1)索引控制向量。该控制向量将该数据路径配置为
i、从该输入流中重新获取适当数量的位
ii、基于BA字段和重新获取的输入位计算下一个状态条目的读取地址
iii、采取动作或产生当前状态的输出
g、如果花了多个时钟周期来完成f中描述的三个操作,图7的查找表1可被配置为通过TG索引的控制向量接受来自缓冲它自己的输出的寄存器的地址输入(图7中的B)。该查找表因此能被用于索引若干控制向量,直至最后的控制向量将该查找表配置为再次接受来自该数据掩蔽和选择块的输出(图7中的A)。
熟悉本领域的技术人员将可想到进一步的修改,其也被认为是落入如所附权利要求所述的本发明的精神和范围。
Claims (39)
1.一种用处理器进行时钟周期同步的灵活可编程数据处理的方法,所述处理器包含多个不同的功能计算单元、存储单元、用于将它们互连的全存取切换单元以及控制单元,其包含
连接不同的功能单元以形成以分层方式的预定的控制路径和数据流水线;
使用公共指令集编程所有功能单元,其中所述指令集直接编码指令序列化(即,计算下一个指令取得的地址)并直接或间接编码硬件控制;
设立分布式程序序列化,其中各功能单元有它自己的程序计数器、指令取得和解码单元和它自己的本地存储器用于程序存储;
每个时钟周期生成控制向量,所述控制向量控制这些功能单元的数据路径;以及
将多个存储单元配置为以不同的存储器存取模式工作并将它们通过所述切换单元连接到功能计算单元以最大化可编程性。
2.根据权利要求1所述的方法,其中产生数据处理程序,其中整个数据处理程序被分成不同的数据处理模块,每个数据处理模块由数据流水线处置,所述数据流水线构造有在所述处理器中的一个或多个所述功能单元,且每个数据流水线构造有单个或多个时钟周期同步的指令序列,沿着所述数据流水线的每个功能单元一个。
3.根据权利要求2所述的方法,其中不同的数据处理模块可以以如下方式映射:(a)映射在不同的硬件块上,这些不同的硬件块之间有用于从一个模块到下一个模块行进的连接,(b)不同的数据处理模块映射到相同的硬件块上,其中模块的执行以模块行进的顺序被多路复用到不同的时隙上,以及(c)(a)和(b)两者的结合。
4.根据权利要求3所述的方法,其中在时隙中从一个数据处理模块到下一个数据处理模块的行进的控制和同步是通过在用来构建所述数据流水线的所有功能单元的父控制单元中的指令序列实现得。
5.根据权利要求1所述的方法,其中所述处理器的硬件被动态组织到一个或更多数据流水线中。
6.根据权利要求5所述的方法,其中每个数据流水线使用分层结构,其中首先在不同的父单元之间建立数据流,然后在父单元的附属单元之间建立数据流,以便整个数据流水线一个层次接一个层次地被构建。
7.根据权利要求1所述的方法,其中所述处理器中的功能单元被动态组织为控制分层,在所述控制分层中提供父控制器,所述父控制器只与相应的附属单元交换控制和同步消息和信号。
8.根据权利要求1所述的方法,其中数据处理可以通过由指令序列在不同种类的硬件块中的并行执行而进行。
9.根据权利要求1所述的方法,其中所述功能计算单元被灵活布置为能够在数据流水线中进行不同类型的数据流和算术及逻辑操作序列以消除存储器中的缓冲并减少与数据存储器的往来流量。
10.根据权利要求1所述的方法,其中相同指令集被用于对它们的相应的控制编码需要不同数量的位的各种功能硬件块进行编程。
11.根据权利要求10所述的方法,其中所述指令集使用这样的指令格式:所述指令格式允许通过对控制向量存储器的地址指针或寄存器读取和写入命令对指令序列化的直接编码(即,用于计算下一个指令取得的地址)、所述硬件控制的子集的直接编码以及硬件控制的间接编码。
12.根据权利要求11所述的方法,其中以指令编码的硬件控制规定块内的子块的组织和块内的子块之间的互连以形成特定的硬件构造。
13.根据权利要求1所述的方法,其中存储单元包括两个双端口存储体,每个存储体能够在以下两者间交替:作为数据流水线构造的一部分,以及与外部存储器连接以进行数据的批量加载和卸载。
14.根据权利要求13所述的方法,其中两个存储体中的每一个都由指令编程成连接到两个具有不同功能的读取侧接口之一和两个具有不同功能的写入侧接口之一。
15.根据权利要求14所述的方法,其中所述四个接口中的每一个包含支持针对每个接口的特定的功能组的算术单元和其它元件以使能够进行不同模式的存储地址计算或简单的数据处理。
16.根据权利要求14所述的方法,其中每个存储单元被用于构造分层数据流水线,其包含,
编程DSE以在所述两个读取侧接口和两个写入侧接口之中进行数据和状态交换,从而支持所述两个存储体在所述四个接口之中进行必要的协调和定时调准;以及
编程所述四个接口中的每一个以在所述接口内建立数据流水线,其中所述算术单元能被用于数据被写到所述存储体之前或数据被从所述存储体读取之后的简单的数据处理。
17.根据权利要求1所述的方法,其中实现有限状态机,其使用所述存储单元中的一个存储体以保持状态表条目,以及用于所述存储单元的指令序列,以对另一个存储体中的输入数据位流进行操作以从一个状态条目遍历到下一个状态条目。
18.根据权利要求7所述的方法,其中环形总线被用于所述处理器父控制单元和其控制的功能单元之间,其中所述功能单元包括执行单元、切换单元和存储单元。
19.装置,在位于时钟周期同步的灵活可编程数据处理器中,其中所述处理器包含多个不同的功能计算单元、存储单元、用于将它们互连的全存取切换单元以及控制单元,所述装置具有以下各项,以组合的形式:
不同功能单元之间的连接,从而以分层方式形成预定的控制路径和数据流水线;
编程所有功能单元的公共指令集,其中所述指令集直接编码指令序列化(即,用于计算下一个指令取得的地址)并直接或间接编码硬件控制;
分布式程序定序器,其中每个功能单元具有它自己的程序计数器、指令取得和解码单元和它自己的本地存储器用于程序存储;
用于每个时钟周期产生控制这些功能单元的数据路径的控制向量的装置;以及
用于将多个存储单元配置成以不同存储器存取模式工作的装置以及用于将它们通过所述切换单元连接到功能计算单元以最大化可编程性的装置。
20.根据权利要求19所述的装置,其中产生数据处理程序,其中整个数据处理程序被分成不同的数据处理模块,每个数据处理模块由数据流水线处置,所述数据流水线构造有在所述处理器中的一个或更多个所述功能单元,且每个数据流水线构造有单个或多个时钟周期同步的指令序列,针对沿着所述数据流水线的所述功能单元中的每一个有一个指令序列。
21.根据权利要求20所述的装置,其中不同的数据处理模块可被映射到不同的硬件块上,所述块之间有连接用于从一个模块到下一个模块的行进。
22.根据权利要求20所述的装置,其中不同的数据处理模块被映射到相同的硬件块上,其中模块的执行以模块行进的顺序被多路复用到不同的时隙。
23.根据权利要求21或22所述的装置,其中在时隙中从一个数据处理模块到下一个数据处理模块的行进的控制和同步是通过在用于构造所述数据流水线的所有功能单元的所述父控制单元中的指令序列实现得。
24.根据权利要求19所述的装置,其中所述处理器的硬件被动态组织到在一个或多个数据流水线中。
25.根据权利要求24所述的装置,其中每个数据流水线使用分层结构,其中首先在不同的父单元之间建立数据流,然后在父单元的附属单元之间建立数据流,以便整个数据流水线一个层次接一个层次地被构造。
26.根据权利要求19所述的装置,其中所述处理器中的功能单元被动态组织为控制分层,其中每个父控制单元只与其附属单元交换控制和同步消息。
27.根据权利要求19所述的装置,其中数据处理是通过指令序列在不同种类的硬件块中的并行执行而进行的。
28.根据权利要求19所述的装置,其中所述功能计算单元被灵活布置以能够在数据流水线中进行不同类型的数据流和算术及逻辑操作序列以消除存储器中的缓冲并减少与数据存储器的往来流量。
29.根据权利要求19所述的装置,其中相同指令集被用于对它们的相应的控制编码需要不同数量的位的各种功能硬件块进行编程。
30.根据权利要求29所述的装置,其中所述指令集使用这样的指令格式,所述指令格式允许通过对控制向量存储器的地址指针或寄存器读取和写入命令之一对指令序列化的直接编码(即,用于计算下一个指令取得的地址)、所述硬件控制的子集的直接编码以及硬件控制的间接编码。
31.根据权利要求30所述的装置,其中以指令编码的所述硬件控制规定块内的子块的组织和块内的子块之间的互连以形成特定的硬件构造。
32.根据权利要求19所述的装置,其中存储单元包括两个双端口存储体,所述存储体能够在以下两者间交替:作为数据流水线构造的一部分,以及与外部存储器连接用于数据的批量加载和卸载。
33.根据权利要求32所述的装置,其中两个存储体中的每一个都能由指令编程成连接到两个具有不同功能的读取侧接口之一和两个具有不同功能的写入侧接口之一。
34.根据权利要求33所述的装置,其中所述四个接口中的每一个包含支持针对每个接口的特定的功能组的算术单元和其它元件,以能够进行不同模式的存储地址计算或简单的数据处理。
35.根据权利要求19所述的装置,其中每个存储单元被用于构造分层数据流水线,其包含:用于编程DSE的装置,用于在两个读取侧接口和两个写入侧接口之中进行数据和状态交换,从而支持两个存储体在它们接口间进行必要的协调和定时调准;以及
用于编程所述接口中的每一个以在所述接口内建立数据流水线的装置,其中所述算术单元能被用于在数据被写入所述存储体之前或数据被从所述存储体读取之后进行简单的数据处理。
36.根据权利要求19所述的装置,其中实现有限状态机,其使用存储单元中的一个存储体以保持状态表条目,以及用于所述存储单元的指令序列,以对另一个存储体中的输入数据位流进行操作以从一个状态条目遍历到下一个状态条目。
37.根据权利要求19所述的装置,其中环形总线被用于所述处理器父控制单元和其控制的功能单元之间,其中所述功能单元包括执行单元、切换单元和存储单元。
38.一种可编程数据处理器,具有,以组合的形式:多个存储单元,以组织方式被编程为:作为独立数据存储单元工作用于相应的不同的和独立的计算功能块,或者同步工作以用互连的计算功能块提供统一的存储器存储,所述统一的存储器存储具有适当的两维寻址和旋转寻址模式。
39.根据权利要求38所述的处理器,其中所述存储单元和所述独立的计算功能块是能够矩阵切换式互连的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/156007 | 2008-05-29 | ||
US12/156,007 US8181003B2 (en) | 2008-05-29 | 2008-05-29 | Instruction set design, control and communication in programmable microprocessor cores and the like |
PCT/IB2009/000131 WO2009144538A1 (en) | 2008-05-29 | 2009-01-26 | Method & apparatus for real-time data processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102144225A true CN102144225A (zh) | 2011-08-03 |
Family
ID=40668367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801307349A Pending CN102144225A (zh) | 2008-05-29 | 2009-01-26 | 实时数据处理方法和装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8181003B2 (zh) |
EP (1) | EP2289003B1 (zh) |
JP (1) | JP2011525008A (zh) |
CN (1) | CN102144225A (zh) |
AU (1) | AU2009252885A1 (zh) |
CA (1) | CA2725130A1 (zh) |
TW (1) | TW200951809A (zh) |
WO (1) | WO2009144538A1 (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102393657A (zh) * | 2011-11-30 | 2012-03-28 | 洛阳正扬冶金技术股份有限公司 | 一种自动化控制系统的功能块化控制方法 |
CN102508643A (zh) * | 2011-11-16 | 2012-06-20 | 刘大可 | 一种多核并行数字信号处理器及并行指令集的运行方法 |
CN104951281A (zh) * | 2014-03-28 | 2015-09-30 | 英特尔公司 | 用于实现动态无序处理器流水线的方法和装置 |
CN108304344A (zh) * | 2017-01-12 | 2018-07-20 | 罗伯特·博世有限公司 | 计算单元及其运行方法 |
CN108874730A (zh) * | 2018-06-14 | 2018-11-23 | 北京理工大学 | 一种数据处理器及数据处理方法 |
CN109074378A (zh) * | 2016-03-30 | 2018-12-21 | 微软技术许可有限责任公司 | 模块化电子数据分析计算系统 |
CN109196494A (zh) * | 2016-08-26 | 2019-01-11 | 华为技术有限公司 | 用于对数据流执行信息处理的设备和方法 |
CN109697185A (zh) * | 2017-10-20 | 2019-04-30 | 图核有限公司 | 多瓦片处理阵列中的同步 |
CN110214309A (zh) * | 2017-01-26 | 2019-09-06 | 威斯康星校友研究基金会 | 可重新配置专用计算机加速器 |
CN110325963A (zh) * | 2017-02-28 | 2019-10-11 | 微软技术许可有限责任公司 | 用于神经网络处理的针对可编程硬件节点的多功能单元 |
CN110647358A (zh) * | 2018-06-27 | 2020-01-03 | 展讯通信(上海)有限公司 | 同步多线程处理器 |
CN110647357A (zh) * | 2018-06-27 | 2020-01-03 | 展讯通信(上海)有限公司 | 同步多线程处理器 |
CN110688157A (zh) * | 2017-07-20 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 一种计算装置及计算方法 |
CN111008039A (zh) * | 2018-10-05 | 2020-04-14 | Arm有限公司 | 一种用于提供解码指令的装置和方法 |
CN111475205A (zh) * | 2020-03-02 | 2020-07-31 | 上海交通大学 | 一种基于数据流解耦合的粗粒度可重构阵列结构设计方法 |
CN111971652A (zh) * | 2018-03-31 | 2020-11-20 | 美光科技公司 | 多线程自调度可重新配置计算架构的条件分支控制 |
CN112463723A (zh) * | 2020-12-17 | 2021-03-09 | 王志平 | 一种微内核阵列的实现方法 |
CN113342269A (zh) * | 2021-05-31 | 2021-09-03 | 上海蓝色帛缔智能工程有限公司 | 基于云统计的多路数据存储的方法、装置、设备及介质 |
CN114168526A (zh) * | 2017-03-14 | 2022-03-11 | 珠海市芯动力科技有限公司 | 可重构并行处理 |
TWI767303B (zh) * | 2019-08-22 | 2022-06-11 | 美商谷歌有限責任公司 | 在神經網路中傳播延遲減少之電腦實施方法 |
CN118349286A (zh) * | 2024-06-18 | 2024-07-16 | 联芸科技(杭州)股份有限公司 | 处理器、指令处理的装置、电子设备以及指令处理方法 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7840914B1 (en) * | 2005-05-13 | 2010-11-23 | Massachusetts Institute Of Technology | Distributing computations in a parallel processing environment |
TWI424371B (zh) * | 2009-12-30 | 2014-01-21 | Altek Corp | Video processing device and processing method thereof |
CN102183921B (zh) * | 2011-03-01 | 2012-09-12 | 上海维宏电子科技股份有限公司 | 数控系统中实现限位自动释放功能的方法 |
WO2012124995A2 (en) * | 2011-03-15 | 2012-09-20 | Samsung Electronics Co., Ltd. | Method and system for maintaining vector clocks during synchronization for data race detection |
US8739101B1 (en) * | 2012-11-21 | 2014-05-27 | Maxeler Technologies Ltd. | Systems and methods for reducing logic switching noise in parallel pipelined hardware |
JP5977209B2 (ja) * | 2013-07-18 | 2016-08-24 | 日本電信電話株式会社 | ステートマシン回路 |
US20150178078A1 (en) * | 2013-12-21 | 2015-06-25 | H. Peter Anvin | Instructions and logic to provide base register swap status verification functionality |
US9582282B2 (en) * | 2014-07-17 | 2017-02-28 | Arm Limited | Prefetching using a prefetch lookup table identifying previously accessed cache lines |
US20170177542A1 (en) * | 2015-12-16 | 2017-06-22 | Cognitive Systems Corp. | Operating a VLIW Processor in a Wireless Sensor Device |
CN106155632A (zh) * | 2016-08-02 | 2016-11-23 | 合肥奇也信息科技有限公司 | 一种用于计算机最优定位数据处理中小码集的系统 |
US11151077B2 (en) | 2017-06-28 | 2021-10-19 | Wisconsin Alumni Research Foundation | Computer architecture with fixed program dataflow elements and stream processor |
EP3611722B1 (en) * | 2018-08-13 | 2024-09-25 | Axis AB | Controller and method for reducing a peak power consumption of a video image processing pipeline |
CN111090464B (zh) * | 2018-10-23 | 2023-09-22 | 华为技术有限公司 | 一种数据流处理方法及相关设备 |
CN110058882B (zh) * | 2019-03-14 | 2023-01-06 | 深圳市比昂芯科技有限公司 | 一种用于cnn加速的opu指令集定义方法 |
WO2020197964A1 (en) | 2019-03-26 | 2020-10-01 | Axis Semiconductor, Inc. | Computing device with circuit switched memory access |
CN114883301B (zh) * | 2022-04-29 | 2023-03-21 | 西安电子科技大学 | 基于Chiplet的微系统可重构网络拓扑结构及实现方法 |
CN117111857B (zh) * | 2023-09-15 | 2024-05-07 | 上海合芯数字科技有限公司 | 读取数据信息的方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5212777A (en) * | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
US6216223B1 (en) * | 1998-01-12 | 2001-04-10 | Billions Of Operations Per Second, Inc. | Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor |
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3137117B2 (ja) | 1987-03-27 | 2001-02-19 | 将容 曽和 | 高速処理計算機 |
EP0429733B1 (en) * | 1989-11-17 | 1999-04-28 | Texas Instruments Incorporated | Multiprocessor with crossbar between processors and memories |
US5226125A (en) * | 1989-11-17 | 1993-07-06 | Keith Balmer | Switch matrix having integrated crosspoint logic and method of operation |
US5239654A (en) * | 1989-11-17 | 1993-08-24 | Texas Instruments Incorporated | Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode |
US6070003A (en) * | 1989-11-17 | 2000-05-30 | Texas Instruments Incorporated | System and method of memory access in apparatus having plural processors and plural memories |
US5471626A (en) | 1992-05-06 | 1995-11-28 | International Business Machines Corporation | Variable stage entry/exit instruction pipeline |
JP3546437B2 (ja) * | 1993-03-31 | 2004-07-28 | ソニー株式会社 | 適応形ビデオ信号演算処理装置 |
US5706459A (en) | 1994-01-06 | 1998-01-06 | Fujitsu Limited | Processor having a variable number of stages in a pipeline |
JP3251421B2 (ja) * | 1994-04-11 | 2002-01-28 | 株式会社日立製作所 | 半導体集積回路 |
US6052773A (en) | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
US5996083A (en) * | 1995-08-11 | 1999-11-30 | Hewlett-Packard Company | Microprocessor having software controllable power consumption |
US5771362A (en) | 1996-05-17 | 1998-06-23 | Advanced Micro Devices, Inc. | Processor having a bus interconnect which is dynamically reconfigurable in response to an instruction field |
US5784636A (en) | 1996-05-28 | 1998-07-21 | National Semiconductor Corporation | Reconfigurable computer architecture for use in signal processing applications |
US5937203A (en) | 1996-09-16 | 1999-08-10 | Advanced Micro Devices, Inc. | Port for fine tuning a central processing unit |
US5887160A (en) | 1996-12-10 | 1999-03-23 | Fujitsu Limited | Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US6085317A (en) | 1997-08-15 | 2000-07-04 | Altera Corporation | Reconfigurable computer architecture using programmable logic devices |
US6023753A (en) * | 1997-06-30 | 2000-02-08 | Billion Of Operations Per Second, Inc. | Manifold array processor |
JP4156794B2 (ja) * | 1997-11-07 | 2008-09-24 | アルテラ コーポレイション | iVLIWのPE間通信を用いた効率的な同期MIMD動作のための方法および装置 |
US6173389B1 (en) * | 1997-12-04 | 2001-01-09 | Billions Of Operations Per Second, Inc. | Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor |
US6101592A (en) * | 1998-12-18 | 2000-08-08 | Billions Of Operations Per Second, Inc. | Methods and apparatus for scalable instruction set architecture with dynamic compact instructions |
US6539438B1 (en) | 1999-01-15 | 2003-03-25 | Quickflex Inc. | Reconfigurable computing system and method and apparatus employing same |
JP2001169068A (ja) * | 1999-12-14 | 2001-06-22 | Ricoh Co Ltd | 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6704857B2 (en) * | 1999-12-23 | 2004-03-09 | Pts Corporation | Methods and apparatus for loading a very long instruction word memory |
JP3922859B2 (ja) * | 1999-12-28 | 2007-05-30 | 株式会社リコー | 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
EP1199629A1 (en) | 2000-10-17 | 2002-04-24 | STMicroelectronics S.r.l. | Processor architecture with variable-stage pipeline |
GB2370381B (en) | 2000-12-19 | 2003-12-24 | Picochip Designs Ltd | Processor architecture |
GB2370380B (en) | 2000-12-19 | 2003-12-31 | Picochip Designs Ltd | Processor architecture |
US6574764B2 (en) | 2001-04-25 | 2003-06-03 | Agilent Technologies, Inc. | Algorithmically programmable memory tester with history FIFO's that aid in error analysis and recovery |
US20030088757A1 (en) | 2001-05-02 | 2003-05-08 | Joshua Lindner | Efficient high performance data operation element for use in a reconfigurable logic environment |
US6859873B2 (en) | 2001-06-08 | 2005-02-22 | Infineon Technologies Ag | Variable length instruction pipeline |
US20030043848A1 (en) * | 2001-08-30 | 2003-03-06 | Sonksen Bradley Stephen | Method and apparatus for data item processing control |
US7200735B2 (en) | 2002-04-10 | 2007-04-03 | Tensilica, Inc. | High-performance hybrid processor with configurable execution units |
EP1383042B1 (en) * | 2002-07-19 | 2007-03-28 | STMicroelectronics S.r.l. | A multiphase synchronous pipeline structure |
WO2004010320A2 (en) | 2002-07-23 | 2004-01-29 | Gatechance Technologies, Inc. | Pipelined reconfigurable dynamic instruciton set processor |
US7571303B2 (en) | 2002-10-16 | 2009-08-04 | Akya (Holdings) Limited | Reconfigurable integrated circuit |
KR100546331B1 (ko) * | 2003-06-03 | 2006-01-26 | 삼성전자주식회사 | 스택 뱅크들 마다 독립적으로 동작하는 멀티 포트 메모리장치 |
TW200504592A (en) | 2003-07-24 | 2005-02-01 | Ind Tech Res Inst | Reconfigurable apparatus with high hardware efficiency |
JP2006018412A (ja) * | 2004-06-30 | 2006-01-19 | Fujitsu Ltd | アドレス生成器および演算回路 |
JP4594666B2 (ja) * | 2004-07-12 | 2010-12-08 | 富士通株式会社 | 再構成可能な演算装置 |
CN100545827C (zh) | 2004-07-30 | 2009-09-30 | 富士通株式会社 | 可重配置电路及可重配置电路的控制方法 |
US7205864B2 (en) | 2004-11-02 | 2007-04-17 | Nextg Networks, Inc. | Distributed matrix switch |
JP4527571B2 (ja) * | 2005-03-14 | 2010-08-18 | 富士通株式会社 | 再構成可能演算処理装置 |
US7395411B2 (en) | 2005-03-14 | 2008-07-01 | Sony Computer Entertainment Inc. | Methods and apparatus for improving processing performance by controlling latch points |
US8966223B2 (en) | 2005-05-05 | 2015-02-24 | Icera, Inc. | Apparatus and method for configurable processing |
TWI259659B (en) | 2005-05-13 | 2006-08-01 | Ind Tech Res Inst | Pipelined datapath with dynamically reconfigurable pipeline stages |
US20060259742A1 (en) | 2005-05-16 | 2006-11-16 | Infineon Technologies North America Corp. | Controlling out of order execution pipelines using pipeline skew parameters |
US7454598B2 (en) | 2005-05-16 | 2008-11-18 | Infineon Technologies Ag | Controlling out of order execution pipelines issue tagging |
JP4861030B2 (ja) * | 2006-03-24 | 2012-01-25 | 株式会社東芝 | 半導体装置 |
US8099583B2 (en) | 2006-08-23 | 2012-01-17 | Axis Semiconductor, Inc. | Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing |
US7519797B1 (en) * | 2006-11-02 | 2009-04-14 | Nividia Corporation | Hierarchical multi-precision pipeline counters |
US8078833B2 (en) * | 2008-05-29 | 2011-12-13 | Axis Semiconductor, Inc. | Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions |
-
2008
- 2008-05-29 US US12/156,007 patent/US8181003B2/en active Active
-
2009
- 2009-01-26 EP EP09754166.8A patent/EP2289003B1/en not_active Not-in-force
- 2009-01-26 CA CA2725130A patent/CA2725130A1/en not_active Abandoned
- 2009-01-26 JP JP2011511099A patent/JP2011525008A/ja active Pending
- 2009-01-26 WO PCT/IB2009/000131 patent/WO2009144538A1/en active Application Filing
- 2009-01-26 CN CN2009801307349A patent/CN102144225A/zh active Pending
- 2009-01-26 AU AU2009252885A patent/AU2009252885A1/en not_active Abandoned
- 2009-02-10 TW TW098104221A patent/TW200951809A/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5212777A (en) * | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
US6216223B1 (en) * | 1998-01-12 | 2001-04-10 | Billions Of Operations Per Second, Inc. | Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor |
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508643A (zh) * | 2011-11-16 | 2012-06-20 | 刘大可 | 一种多核并行数字信号处理器及并行指令集的运行方法 |
CN102393657A (zh) * | 2011-11-30 | 2012-03-28 | 洛阳正扬冶金技术股份有限公司 | 一种自动化控制系统的功能块化控制方法 |
CN104951281A (zh) * | 2014-03-28 | 2015-09-30 | 英特尔公司 | 用于实现动态无序处理器流水线的方法和装置 |
CN104951281B (zh) * | 2014-03-28 | 2018-08-24 | 英特尔公司 | 用于实现动态无序处理器流水线的方法和装置 |
US10338927B2 (en) | 2014-03-28 | 2019-07-02 | Intel Corporation | Method and apparatus for implementing a dynamic out-of-order processor pipeline |
CN109074378A (zh) * | 2016-03-30 | 2018-12-21 | 微软技术许可有限责任公司 | 模块化电子数据分析计算系统 |
CN109196494A (zh) * | 2016-08-26 | 2019-01-11 | 华为技术有限公司 | 用于对数据流执行信息处理的设备和方法 |
CN108304344A (zh) * | 2017-01-12 | 2018-07-20 | 罗伯特·博世有限公司 | 计算单元及其运行方法 |
CN108304344B (zh) * | 2017-01-12 | 2023-09-26 | 罗伯特·博世有限公司 | 计算单元及其运行方法 |
CN110214309B (zh) * | 2017-01-26 | 2023-10-31 | 威斯康星校友研究基金会 | 可重新配置专用计算机加速器 |
CN110214309A (zh) * | 2017-01-26 | 2019-09-06 | 威斯康星校友研究基金会 | 可重新配置专用计算机加速器 |
US11663450B2 (en) | 2017-02-28 | 2023-05-30 | Microsoft Technology Licensing, Llc | Neural network processing with chained instructions |
CN110325963B (zh) * | 2017-02-28 | 2023-05-23 | 微软技术许可有限责任公司 | 用于神经网络处理的针对可编程硬件节点的多功能单元 |
CN110325963A (zh) * | 2017-02-28 | 2019-10-11 | 微软技术许可有限责任公司 | 用于神经网络处理的针对可编程硬件节点的多功能单元 |
CN114168526A (zh) * | 2017-03-14 | 2022-03-11 | 珠海市芯动力科技有限公司 | 可重构并行处理 |
CN114168526B (zh) * | 2017-03-14 | 2024-01-12 | 珠海市芯动力科技有限公司 | 可重构并行处理 |
CN110688157A (zh) * | 2017-07-20 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 一种计算装置及计算方法 |
CN110688157B (zh) * | 2017-07-20 | 2022-02-22 | 上海寒武纪信息科技有限公司 | 一种计算装置及计算方法 |
CN109697185A (zh) * | 2017-10-20 | 2019-04-30 | 图核有限公司 | 多瓦片处理阵列中的同步 |
CN109697185B (zh) * | 2017-10-20 | 2023-06-20 | 图核有限公司 | 多瓦片处理阵列中的同步 |
CN111971652B (zh) * | 2018-03-31 | 2024-06-04 | 美光科技公司 | 多线程自调度可重新配置计算架构的条件分支控制 |
CN111971652A (zh) * | 2018-03-31 | 2020-11-20 | 美光科技公司 | 多线程自调度可重新配置计算架构的条件分支控制 |
CN108874730A (zh) * | 2018-06-14 | 2018-11-23 | 北京理工大学 | 一种数据处理器及数据处理方法 |
CN110647357B (zh) * | 2018-06-27 | 2021-12-03 | 展讯通信(上海)有限公司 | 同步多线程处理器 |
CN110647358A (zh) * | 2018-06-27 | 2020-01-03 | 展讯通信(上海)有限公司 | 同步多线程处理器 |
CN110647357A (zh) * | 2018-06-27 | 2020-01-03 | 展讯通信(上海)有限公司 | 同步多线程处理器 |
CN111008039B (zh) * | 2018-10-05 | 2023-12-08 | Arm有限公司 | 一种用于提供解码指令的装置和方法 |
CN111008039A (zh) * | 2018-10-05 | 2020-04-14 | Arm有限公司 | 一种用于提供解码指令的装置和方法 |
TWI767303B (zh) * | 2019-08-22 | 2022-06-11 | 美商谷歌有限責任公司 | 在神經網路中傳播延遲減少之電腦實施方法 |
TWI817490B (zh) * | 2019-08-22 | 2023-10-01 | 美商谷歌有限責任公司 | 在神經網路中傳播延遲減少之電腦實施方法 |
CN111475205A (zh) * | 2020-03-02 | 2020-07-31 | 上海交通大学 | 一种基于数据流解耦合的粗粒度可重构阵列结构设计方法 |
CN111475205B (zh) * | 2020-03-02 | 2023-03-17 | 上海交通大学 | 一种基于数据流解耦合的粗粒度可重构阵列结构设计方法 |
CN112463723A (zh) * | 2020-12-17 | 2021-03-09 | 王志平 | 一种微内核阵列的实现方法 |
CN113342269A (zh) * | 2021-05-31 | 2021-09-03 | 上海蓝色帛缔智能工程有限公司 | 基于云统计的多路数据存储的方法、装置、设备及介质 |
CN118349286A (zh) * | 2024-06-18 | 2024-07-16 | 联芸科技(杭州)股份有限公司 | 处理器、指令处理的装置、电子设备以及指令处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CA2725130A1 (en) | 2009-12-03 |
US20090300337A1 (en) | 2009-12-03 |
EP2289003A1 (en) | 2011-03-02 |
WO2009144538A1 (en) | 2009-12-03 |
EP2289003B1 (en) | 2013-05-22 |
TW200951809A (en) | 2009-12-16 |
US8181003B2 (en) | 2012-05-15 |
AU2009252885A1 (en) | 2009-12-03 |
JP2011525008A (ja) | 2011-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102144225A (zh) | 实时数据处理方法和装置 | |
CN102004719B (zh) | 支持同时多线程的超长指令字处理器结构 | |
CN101751244B (zh) | 微处理器 | |
CN102750133B (zh) | 支持simd的32位三发射的数字信号处理器 | |
CN100533428C (zh) | 半导体器件 | |
US20060212685A1 (en) | Ultra low power ASIP architecture | |
KR20220147732A (ko) | 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치 | |
CN104813279B (zh) | 用于减少具有步幅式访问模式的向量寄存器中的元素的指令 | |
KR100346515B1 (ko) | 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일 | |
CN115562729A (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
CN1841314A (zh) | 双线程处理器 | |
WO2000033178A1 (en) | Local and global register partitioning in a vliw processor | |
JPH04245540A (ja) | 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム | |
CN102402415B (zh) | 一种动态可重构阵列内数据缓存的装置及方法 | |
US7383419B2 (en) | Address generation unit for a processor | |
US20050081021A1 (en) | Automatic register backup/restore system and method | |
US11726912B2 (en) | Coupling wide memory interface to wide write back paths | |
CN101211256A (zh) | 一种专用双流水线risc指令系统及其操作方法 | |
CN114168197B (zh) | 指令执行方法、处理器以及电子装置 | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
CN108351780A (zh) | 邻接数据元素成对交换处理器、方法、系统和指令 | |
US20120144393A1 (en) | Multi-issue unified integer scheduler | |
CN102012802A (zh) | 面向向量处理器数据交换的方法及装置 | |
US6119220A (en) | Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions | |
US6539469B1 (en) | Rotator circular buffer with entries to store divided bundles of instructions from each cache line for optimized instruction supply |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1160530 Country of ref document: HK |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110803 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1160530 Country of ref document: HK |