CN1244050C - 数据处理设备、操作数据处理设备的方法及将程序编译成指令序列的方法 - Google Patents
数据处理设备、操作数据处理设备的方法及将程序编译成指令序列的方法 Download PDFInfo
- Publication number
- CN1244050C CN1244050C CNB018011748A CN01801174A CN1244050C CN 1244050 C CN1244050 C CN 1244050C CN B018011748 A CNB018011748 A CN B018011748A CN 01801174 A CN01801174 A CN 01801174A CN 1244050 C CN1244050 C CN 1244050C
- Authority
- CN
- China
- Prior art keywords
- functional unit
- instruction
- data
- execution
- term
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 26
- 238000012545 processing Methods 0.000 claims abstract description 22
- 238000010586 diagram Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 description 23
- 238000013461 design Methods 0.000 description 6
- 102000006822 Agouti Signaling Protein Human genes 0.000 description 4
- 108010072151 Agouti Signaling Protein Proteins 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000005100 correlation spectroscopy Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241000282461 Canis lupus Species 0.000 description 1
- 208000035126 Facies Diseases 0.000 description 1
- 241000665848 Isca Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008531 maintenance mechanism Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000011079 streamline operation Methods 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
描述一种数据处理设备,至少包括一个主控制器(1)、包括从控制器(20)的第一功能单元(2)和第二功能单元(3),功能单元(2,3)共享公用存储器(11),设备被编程用于执行第一功能单元(2)的指令,指令的执行涉及第一功能单元(2)的输入/输出操作,其中,在所述执行期间,第二功能单元(3)处理第一功能单元(2)的输出数据,和/或在所述执行期间,第二功能单元(3)生成输入数据。
Description
技术领域
本发明涉及数据处理设备。本发明还涉及操作数据处理设备的方法。本发明还涉及编译程序的方法。
背景技术
现代信号处理系统被设计成支持多种标准并提供高性能。多媒体和电信是可找到此类组合要求的典型领域。对高性能的需求产生了可包括专用硬件加速器的体系结构。在HW/SW共同设计共同体中,“映射”是指将应用程序的功能分配到由可获得的硬件部件执行的一组操作的问题[1][2]。操作可按照其复杂性安排成两组:细粒(fine-grain)和粗粒(coarse-grain)操作。
细粒操作的示例有加、乘和条件转移。它们在几个时钟周期中执行,且一次仅处理少数输入值。粗粒操作处理更加多的数据,并执行更复杂的功能,诸如FFT蝶(FFT-butterfly)、DCT或复数乘法。
执行粗粒操作的硬件部件的特征在于具有从几个周期到几百个周期不等的等待时间。另外,所述部件使用和产生的数据并不集中于粗粒操作的结束与开始时。相反地,来自所述部件以及传送到所述部件的数据分布于整个粗粒操作执行过程中。因此,功能部件根据输入输出行为展示(复杂)时形(timeshape)[9]。根据操作的粒度(粗度),体系结构可分组到两个不同类别中,即处理器体系结构和异种多处理器体系结构,定义如下:
-处理器体系结构:该体系结构包括诸如ALU和乘法器的功能部件(FU)的异种集。在此环境中的典型体系结构是多用途CPU和DSP体系结构。其中的一些体系结构,诸如VLIW和超标量体系结构,可具有并行执行的多个操作。FU执行细粒操作,数据一般具有“字”的粒度。
-异种多处理器体系结构:该体系结构包括通过总线连接的专门的专用指令集处理器(ASIP)、ASIC和标准DSP以及CPU。硬件执行诸如256输入FFT的粗粒操作,因而数据具有“字组”粒度。在此环境中,操作经常被视为任务或处理。
上述两种体系结构方法始终是分开的。
发明内容
本发明的目的是提供一种数据处理设备,其中(协)处理器作为FU嵌入在VLIW处理器数据路径中,其中VLIW处理器可具有FU,该FU执行具有不同等待时间的操作并同时在多种数据粒度下操作。
本发明的另一目的是提供一种操作这样的数据处理设备的方法。
本发明的另一目的是提供一种用于编译程序的方法,它有效地调度细粒和粗粒操作的混合,使调度长度(schedule’s length)和VLIW指令宽度最小。
按照本发明,提供了一种数据处理设备,至少包括一个主控制器、第一功能单元和第二功能单元,其中所述第一功能单元包括一个从控制器,所述第一功能单元被安排用于处理第一类型指令,所述第一类型指令对应于具有相对长等待时间的操作,以及所述第二功能单元被安排用于处理第二类型指令,所述第二类型指令对应于具有相对短等待时间的操作;其中所述第一功能单元和所述第二功能单元共享公用存储器,所述数据处理设备被编程用于执行所述第一功能单元的指令,所述指令的执行涉及所述第一功能单元的输入/输出操作,其中,在所述执行期间,所述第二功能单元处理所述第一功能单元的输出数据,和/或在所述执行期间,所述第二功能单元生成输入数据。
所述的数据处理设备可以具有由所述主控制器控制的停止装置,用于停止所述第一功能单元的操作。
本发明还提供了一种操作数据处理设备的方法,所述数据处理设备至少包括:主控制器,用于控制所述设备的操作;第一功能单元,它包括从控制器,所述第一功能单元被安排用于执行第一类型指令,所述第一类型指令对应于具有相对长等待时间的操作;第二功能单元,它被安排用于执行第二类型的指令,所述第二类型的指令对应于具有相对短等待时间的操作,其中,在所述第一类型的指令的执行期间,所述第一功能单元接收输入数据,并提供输出数据,其中,在所述执行期间,所述第二功能单元处理所述输出数据,和/或在所述执行期间,所述第二功能单元生成所述输入数据。
其中,在所述第一类型的指令的执行期间,所述主控制器暂时停止所述第一功能单元的操作。
本发明还提供了一种用于将程序编译成指令序列以操作一个数据处理设备的方法,其中包括以下步骤:构成模型,所述模型代表一个第一功能单元执行指令中所涉及输入/输出操作;根据所述模型,调度一个或多个第二功能单元的指令,用于在所述第一功能单元正在执行要使用输入数据的指令时为所述第一功能单元提供所述输入数据,和/或用于在所述第一功能单元正在执行计算输出数据的指令时从所述第一功能单元提取所述输出数据;所述第一功能单元被安排用于处理第一类型指令,所述第一类型指令对应于具有相对长等待时间的操作,以及所述第二功能单元被安排用于处理第二类型指令,所述第二类型指令对应于具有相对短等待时间的操作。
其中,所述模型是信号流图。
例如,第一功能单元是专用指令集处理器(ASIP)、ASIC、标准DSP或CPU。第二功能单元一般执行细粒操作,诸如ALU或乘法器。由所述第一和第二单元共享的公用存储器可以是程序存储器,该存储器包括要由所述单元执行的指令。另外,公用存储器可用于数据存储。
引入粗粒操作对微码宽度具有有益的影响。首先,由于执行粗粒操作的FU内部具有其自己的控制器。因此,VLIW控制器需要较少的指令比特来操纵整个数据路径。其次,采用I/O时形后使得即使操作本身未被完成也可以提供和使用数据,因而缩短了信号的寿命,并因此减少了数据路径寄存器的数量。寻址数据路径寄存器所需的指令比特和并行操纵大量数据路径资源是导致VLIW微码大宽度的两个重要因素。最终,增强指令层并行度(ILP)对调度长度有积极的影响,并因而对微码长度有积极的影响。对于针对高性能并处理长而复杂的程序代码的嵌入式应用程序,保持小的微码区是基本的必要条件。在调度应用程序时,FU的内部调度将部分地被考虑。这样,FU的内部调度可视为嵌入在应用程序的VLIW调度中。这样做时,可采用有关I/O时形的知识,以便以“准时”方式从FU抽取数据或提供数据。即使不是所有由所述单元使用的数据可用,操作也可以开始。执行粗粒操作的FU也可被重新使用。这意味着它可保持在VLIW数据路径中,而其输出数据的实际使用将会不同。
注意到已知通过商业途径可获得的基于VLIW体系结构的DSP,这些DSP限制数据路径的FU执行的定制操作的复杂性。例如,R.E.A.L.DSP[3]允许引入定制单元,称为专用执行单元(AXU)。然而,这些功能单元的等待时间限于一个时钟周期。象TI‘C6000[4]的其它DSP可包含具有一到四个周期的等待时间的FU。Philips Trimedia VLIW体系结构[5]允许一到三个周期的多个周期流水线操作。体系结构层合成工具Phideo[10]可处理具有时形的操作,但不适用于控制支配的应用。在信号传到FU的不同I/O端口的限制下,Mistral2[11]允许定义时形。当前,调度程序不能适当地处理具有复杂时形的FU。为简化调度程序的工作,传统上执行粗粒操作的单元的特征仅在于其等待时间,且操作视为是原子操作。因此,此方法延长了调度,因为所有数据必须在开始操作前可用,而不顾在不具有整个输入数据的情况下所述单元已经可以执行其部分计算的事实。此方法也延长了信号的寿命,增加了所需寄存器的数量。
按照本发明的方法,在执行第一类型的指令期间,第一功能单元接收输入数据并提供输出数据,按照本发明的方法,在所述执行期间由第二功能单元处理所述输出数据,和/或在所述执行期间由第二功能单元生成所述输入数据。
下面参照附图对本发明的这些特征与其它方面进行更详细的描述。
附图说明
图1示出数据处理设备,
图2示出图1中数据处理设备可执行的操作的示例,
图3A示出操作的信号流图(SFG),
图3B示出操作的调度及其时形功能,
图4A示意性示出图2的操作,
图4B示出用于在可保持定制功能单元(FU)中对图4A的操作执行进行调度的信号流图,
图4C示出用于在非可保持定制功能单元(FU)中对图4A的操作执行进行调度的信号流图,
图5示出包括图2的操作的嵌套循环,
图6A示出SFG中图5的嵌套循环的传统调度,
图6B示出按照本发明的SFG中所述嵌套循环的调度。
具体实施方式
图1示意性示出按照本发明的数据处理设备。该数据处理设备至少包括主控制器1、第一功能单元2及第二功能单元3,其中第一功能单元2包括从控制器20。两个功能单元2和3把包括微码的存储器11共享为公用存储器。数据处理设备被编程用于执行第一功能单元2的指令,其中所述指令的执行涉及第一功能单元2的输入/输出操作。在所述执行期间由第二功能单元3处理第一功能单元2的输出数据,和/或在所述执行期间由第二功能单元3生成输入数据。在所示实施例中,数据处理设备还包括功能单元4和5。
图1所示的数据处理设备的实施例的特征在于第一功能单元2被安排用于处理第一类型指令,第一类型的指令对应于具有相对长等待时间的操作,而第二功能单元3被安排用于处理第二类型指令,第二类型的指令对应于具有相对短等待时间的操作。
作为示例,FFT算法的可能变化可以被考虑,可以使用“FFT基-4(FFTradix-4)”来实现。于是,此定制FU可被重新使用,虽然是从时间抽选到频率抽选FFT来修改所述算法。在嵌入式定制FU忙于其粗粒操作时,VLIW处理器可执行其它细粒操作。因此,长等待时间的粗粒操作可以被看作在硬件上实现的微线程[6],它在剩余数据路径的资源正执行其它计算时执行单独线程的,属于主线程。
在介绍调度问题前,将信号流图(SFG)[7][8][9]定义为表示给定应用程序代码的一种方式。SFG描述了在所述代码中执行的原始操作及这些操作之间的相关性。
定义1.信号流图SFG。
SFG是个8元组(V,I,O,T,Ed,Es,w,δ),其中:
·V是顶点(操作)集合,
·I是输入集合,
·O是输出集合,
·TVxI∪O是I/O操作端子的集合,
·EdTxT是数据边缘(data edge)的集合,
·EsTxT是序列边缘(sequence edge)的集合,以及
·w:Es→Z是描述与每个序列边缘相关的定时延迟(按时钟周期)的函数;
·δ:V→Z是描述与每个SFG的操作相关的执行延迟(按时钟周期)的函数。
在SFG定义中,对有向数据边缘与有向及加权的序列边缘加以区别。它们在调度问题上施加不同的约束条件,其中“调度”是为每个操作v∈V确定开始时间s(v)的任务,以SFG指定的优先约束条件为条件。正式地:
定义2.传统调度问题。
给定SFG(V,I,O,T,Ed,Es,w,δ),找出操作s:V→Z+的整数标记,其中:
s(vj)≥s(vi)+δ(vi) i,j,h,k:((vi,oh),(vj,ik))∈Ed
s(vj)≥s(vi)+w((ti,tj)) i,j:(ti,tj)∈Es
且调度的等待时间:maxi=1…n{s(vi)}为最小值。
如上所定义一样,在调度问题中,对每个操作做单独判定,即其开始时间。因为I/O时形未包括在分析中,因而在完成操作前,没有输出信号被认为有效。同样地,仅在所有输入信号可用时,操作本身才开始。这的确是安全的假设,但在操作的数据消耗(data consumption)与产生时间和SFG中其它操作的开始时间之间不允许同步。
在正式叙述问题之前,定义操作的时形如下:
定义3.操作的时形。
给定SFG,对于每个操作v∈V,时形定义为函数σ:Tv→Z+,其中:
Tv={t∈T|t=(v,p),且p∈I∪O}
是操作v∈V的I/O端子的集合。
分配给每个I/O端子的编号对相对于操作开始时间的I/O活动的延迟进行模仿。因此,对于执行延迟δ的操作,时形函数将0到δ-1之间的整数值与每个I/O端子相关。图3描述了操作的时形的示例。
在传统调度问题中,每个操作在图形中被看成是原子操作。为了采用操作的I/O时形的观念,重访问调度问题。其中对每个操作进行单独的判定,现在进行多个判定。每个调度判定旨在确定属于给定操作的每个I/O端子的开始时间。因此,将操作的时形考虑在内的再访问的调度问题的定义如下:
定义4. I/O时形调度问题:
给定SFG和SFG中每个操作v∈V的时形函数,找出端子s:T→Z+的整数标志,其中:
s((vj,ik))≥s((vi,oh)) i,j,h,k:(t(vi,oh),(vj,ik))∈Ed
s(tj)≥s(ti)+w((ti,tj)) i,j:(ti,ti)∈Es
且调度的等待时间:maxi=1…n{s(vi)}是最小值。
重要的是要注意到,引入时形的概念后,不再需要操作的等待时间函数δ,且对每个操作的端子进行调度判定。找到的调度必须满足有关数据边缘、序列边缘的约束条件,并考虑I/O端子的定时关系,如时形函数中定义的那样。为采用操作的I/O时形特征,时形函数σ被转换成多个序列边缘,被添加在集合Es中。对于任何可行的调度,这些额外约束条件强迫I/O操作端子的开始时间如此,以便原粗粒操作的时形被考虑。
视实施粗粒操作的FU是否可在其计算期间停止而定,时形函数到序列边缘的转换可以以不同的方式来完成。这将参照图4来进行更详细的描述。如果操作可以停止,假如保持I/O端子的并发和顺序,则操作的时形可以变长。如果该单元无法停止,则在图形中必须添加额外约束条件,以确保I/O端子之间不仅顺序而且相对距离也得以保持,如时形函数所强制的那样。
通过示例,考虑属于相同原粗粒操作的两个I/O端子,即t1和t2。于是会发生三种不同的情况:
1)并发性
如果两个I/O端子t1和t2按照粗粒操作的时形在相同周期期间出现,则添加两个序列边缘。那些额外缘保证:对于给定的SFG,任何可行调度中的操作t1和t2将在相同周期中出现(例如,图4B中的o1和i2)。
如果σ(t1)=σ(t2),则(t1,t2),(t2,t1)∈Es
且w(t1,t2)=w(t2,t1)=0
按照再访问的调度问题的定义,那两个添加的边缘强制:
s(t1)≥s(t2)和s(t2)≥s(t1)
2)串行化(可保持操作)
如果两个I/O端子t1和t2按照粗粒操作的时形不是并发的,则添加一个序列边缘。此额外缘保证:在任何可行调度中将保持两个操作的次序。总之,它允许相对于操作t1,可延迟操作t2(例如,图4B中i1和i2)。
如果s(t2)-s(t1)=λ>0,则(t1,t2)∈Es,且w(t1,t2)=λ
按照再访问的调度问题的定义,此添加的边缘强制:
s(i2)≥s(i1)+w(i1,i2)=s(i1)+λ
因此:s(i2)-s(i1)≥λ
3)串行化(非可保持操作)
对于任何可行调度,两个I/O端子t1和t2的开始时间之间的距离被强制,如粗粒时形所定义的那样(例如,图4C中的i1和i2)。这通过添加两个序列边缘来完成:如果s(t2)-s(t1)=λ>0,则(t1,t2),(t2,t1)∈Es且w(t1,t2)=λ,w(t2,t1)=-λ
按照再访问的调度问题的定义,那两个添加的缘强制:
s(t2)≥s(t1)+w(t1,t2)=s(t1)+λ
s(t1)≥s(t2)+w(t2,t1)=s(t2)-λ
根据上两个等式,t1和t2之间的开始时间的差异等于时形中强制的值。
因此:
s(t2)-s(t1)=λ
对于每个操作,该方法会添加大量边缘,大约为|I∪O|2。然而,其中许多缘可以删除,例如在操作端子的集合中引入偏序(partial order)。删除步骤通常不重要,因而此处不做描述。一旦操作由其I/O操作集描述,且添加了序列边缘,则SFG使用已知的常规技术来调度。假设由于操作的时形的约束条件被考虑,则每个操作的I/O端子现在可相互分离,并可以独立地被调度。
通过示例,假定给定应用程序正在密集执行图2中所示的“2Dtransform(二维变换)”函数。为使示例更实际,所考虑的函数正在执行2D图形操作。按照图2中所描述的代码,采用矢量(x,y)并返回矢量(X,Y)。为提高处理器的性能,对于定制FU,用硬件实现“2Dtransform”。由于函数在硬件上执行,它可以真正视为单个粗粒操作。图3A描述了此函数的信号流图。图3B描述了(粗粒)操作的可行内部调度,其中定制FU内可提供一个加法器和一个乘法器,两个均具有一个周期的等待时间。操作具有四个I/O端子并且由定制FU在四个时钟周期σ=0,…3中执行。
在此示例中,虽然FU在所有四个周期期间均是有效的(图3B),但在周期2并未执行I/O操作。从VLIW数据路径,看不到由定制FU执行的内部操作,且仅I/O时形实际上需要模仿操作耗用与产生其数据的方式(图3B)。
图4A中的原粗粒操作的内容现在不描述,它被改变为四个单周期操作的图,每个操作模仿一个I/O端子。必须添加序列边缘以保证在任何可能的可行调度中考虑原粗粒单元的时形。图中,序列边缘由虚线表示,虚线从第一操作开始,并用以箭头在第二操作结束。图4B中,示出了模仿可保持定制FU行为的所得到的SFG。特别地,按照粗粒操作的时形,在不同周期执行的I/O端子被串行化,以便保持它们的次序。例如,在所述图形中,操作i1和i2之间存在具有λ=1值的边缘w(i1,i2)。因此,s(i2)≥s(i1)+w(i1,i2)=s(i1)+λ。两个或两个以上I/O端子的并发性也被保持。例如,图4B的时形包括第一边缘w(i2,o1)和第二边缘w(o1,i2),两个边缘均具有λ=0值,以便保证操作i2和o1的并发性。因此,当保持机制适合于所述单元时,调度程序可延长将I/O端子彼此移开的粗粒操作,直到序列边缘不违例。对硬件的影响是FU可能被停止,以更好地同步传送到其它操作和从其它操作传来的数据。
图4C示出当保持机制不适合于定制FU时描述I/O端子中的粗粒操作而获得的图形。在这种情况下,添加的序列边缘保证:在任何可行调度中,I/O端子的任何连接之间的相对距离不得与粗粒操作的时形所强制的距离不同。
现在,考虑一个代码,其中使用映射在复杂FU上的“2Dtransform”函数,如图5所示。在此示例中,“2Dtransform”操作是循环体的一部分,环形中诸如ALU操作和乘法操作的其它细粒操作也被执行。假定在VLIW处理器上执行所述代码,该VLIW处理器在其数据路径中包含乘法器、加法器和“2Dtransform”FU。
图6A描述了上述环形的SFG的常规调度。粗粒操作被认为是“原子的”,且无另一操作与它平行执行。在图6B中,复杂单元的I/O调度被扩展并嵌入在循环体的SFG中。复杂操作与其它细粒操作同时被执行。按照所述调度,在实际需要时,用于复杂FU的数据被提供到剩余的数据路径,反之亦然,因而减少了调度的等待时间。当某数据不适合于复杂FU并且计算不能继续进行时,单元会停止(例如,图6B中的周期2)。停止周期在算法的调度期间被隐含地确定。利用建议的解决方案,算法的等待时间从10个周期减少到8个周期。所需寄存器的数量也减少。图6A的周期0中产生的值必须在两个周期中保持有效,而图6B的调度中的相同信号直接被使用。就VLIW处理器的微码区域而言,建议的解决方案是有效的。复杂FU包含其自己的控制器,而留给VLIW控制器的仅有任务是将粗粒FU与其余的数据路径资源同步。必须发送给所述单元的仅有指令是开始和停止命令。这可在VLIW指令字中用几个比特来编码。
在嵌入式复杂FU忙于其计算时,VLIW处理器可执行其它操作。
长等待时间单元可看成是硬件上执行的微线程,在其余的数据路径使用其余的数据路径的资源正在执行其它计算的同时执行一个任务。
作为实例研究,已经使用FFT基4算法测试了所述方法的有效性。用分布式寄存器堆实现了用于VLIW体系结构的FFT,用在HP-UX机器上运行的Frontier Design的体系结构层合成工具“A|RT designer”进行了合成。形成所考虑的FFT算法的核心的基4功能处理4个复合数据值和3个复合系数,返回4个复合输出值。定制单元“基4”内部包含加法器、乘法器及其自己的控制器。该单元消耗14个(实)输入值并产生8个(实)输出值。表1给出了“基4”的其它细节。
表1:基4功能单元
等待时间 | 内部寄存器 | 内部资源 | |
基4FU | 26个周期 | 1(218比特) | 1个ALU,1个MULT |
如表2所示,测试了三种不同的VLIW实现。体系结构(“FFT_org”和“FFT_2ALU’s”)包含相同的硬件资源,但在可以执行的操作的粗度方面有所不同。
表2:测试的数据路径体系结构
数据路径资源 | |
FFT_org | 1个ALU,1个MULT,1个ACU,1个RAM,1个ROM |
FFT_2ALU’s | 2个ALU,1个MULT,1个ACU,1个RAM,1个ROM |
FFT_radix4 | 1个ALU,1个ACU,1个RADIX4,1个RAM,1个ROM |
对于每个体系结构实例,表3列出了时钟周期方面的执行的FFT基4算法的性能和存储应用程序代码的VLIW微码存储器的大小。如果第一实现(“FFT_org”)作为参考,则从表3可以看到“FFT_2ALU’s”表现出更高的并行度和最佳的性能。
表3:性能与微码的大小,实验结果
性能(周期) | 微码(宽×长) | 微码宽度对原来的 | 微码n比特 | |
FFT_org | 59701 | 76*82 | 100.0% | 6232 |
FFT_2ALU’s | 40145 | 95*61 | 125.0% | 5795 |
FFT_radix4 | 49461 | 67*74 | 88.2% | 4958 |
然而,数据路径中可用的额外ALU必须直接由VLIW控制器控制,且注意到微码的指令宽度大大增加。另一方面,“FFT_radix4”达到介于开始的两个实验之间的性能,但合成了窄得多的微码存储器。通常,并行所必需的代码部分是整个代码的一小部分。如果FFT是在长得多的应用程序代码中的核心功能,则在所述代码的其它部分中将不会适当使用微码宽度,因此“FFT_2ALU’s”中所需的ILP也将不会在所述代码的其它部分中得到适当使用,导致微码区域的浪费。“FFT_2ALU’s”和“FFT_radix4”在体系结构中均提供2个ALU和一个乘法器,用于处理重要的FFT循环体,但在后者的微码中需要较少的比特来操纵可用并行。
对于每一个示例,表4列出了体系结构中所需的寄存器数。特别地,在最后的体系结构中,寄存器的总数是VLIW处理器中出现的寄存器和“基4”单元中实现的寄存器的总和。完成的实验证实了调度FFT SFG、采用“基4”粗粒操作的I/O时形会减少所需寄存器的数量。
表4:寄存器压力,实验结果
寄存器数量 | 寄存器合计比特数 | |
FFT_org | 57 | 673 |
FFT_2ALU’s | 60 | 710 |
FFT_radix4 | 58(42+16) | 698(481+218) |
按照本发明的方法允许灵活的HW/SW划分,其中复杂函数可用硬件实现,作为VLIW数据路径中的FU。建议的“I/O时形调度”方法允许单独调度每个I/O操作事件的开始时间,并最终使操作时形本身变长,以便更好地使操作与其环境相适应。通过在VLIW体系结构中使用粗粒操作,可实现高的指令层并行,而无需在微码存储器宽度方面付出太多。对旨在提供高性能并处理长而复杂程序代码的嵌入式应用程序,保持小的VLIW微码宽度是基本必要条件。
参考资料
[1]“COSY:用于在芯片上创建视频系统的模块的接口层”(Jean-YvesBrunel,Alberto Sangiovanni-Vincentinelli,Yorsinori Watanabe,LucianoLavagno Wido Kruytzer and Frédéric Pétrot,“COSY:levels of interfaces formodules used to create a video system on chip”,EMMSEC’99Stockholm 21-23 June 1999.)。
[2]“作为系统级设计方法学驱动器的MPEG-2解码器实例研究”(Pietervan der Wolf,Paul Lieverse,Mudit Goel,David La Hei and Kees Vissers,“AnMPEG-2 Decoder Case Study as a Driver for a System Level DesignMethodology”,Proceedings 7th International Workshop on Hardware/SoftwareCodesign(CODES’99),pp 33-37,May 3-5 1999.)。
[3]“R.E.A.L.DSP:低功率/低成本电信与用户应用的可重配置嵌入式DSP体系结构”(Rob Woudsma et al.,“R.E.A.L.DSP:ReconfigurableEmbedded D SP Architecture for Low-Power/Low-Cost Telecommunicationand Consumer Applications”,Philips Semiconductor.)。
[4]“TMS320C6000 CPU与指令集参考指南”(Texas Instruments,“TMS320C6000 CPU and Instruction Set Reference Guide”,Literature Number:SPRU189D March 1999.)。
[5]“Trimedia,TM1300初级数据手册”(Philips Electronics,“Trimedia,TM1300 Preliminary Data Book”,October 1999 First Draft.)。
[6]“同时的从属微线程(SSMT)”(R.Chappel,J.Stark,S.P.Kim,S.K.Reinhardt,Y.N.Patt,“Simultaneous subordinate microthreading(SSMT)”,ISCA Proc.of the International Symposium on Computer Architecture,pp.186-95 Atlanta,GA,USA,2-4 May 1999.)。
[7]“DSP代码生成约束条件分析”(Bart Mesman,Adwin H.Timmer,JefL.van Meerbergen and Jochen Jess,“Constraints Analysis for DSP CodeGeneration”,IEEE Transactions on CAD,pp 44-57,Vol.18,No.1,January1999.)。
[8]“具有分布式寄存器堆的处理器上DSP代码的有效调度”(B.Mesman,Carlos A.Alba Pinto,and Koen A.J.van Eijk,“Efficient Schedulingof DSP Code on Processors With Distributed Register files”Proc.InternationalSymposium on System Syntesis,San Jose,November 1999,pp.100-106.)。
[9]“多维定期调度模型和复杂性”(W.Verhaegh,P.Lippens,J.Meerbergen,A.Van der Werf et al.,“Multidimensional periodic schedulingmodel and complexity”,Proceedings of European Conference on ParallelProcessing EURO-PAR’96,pp.226-35,vol.2,Lyon,France,26-29 Aug,1996.)。
[10]“PHIDEO:高吞吐量应用的高级合成”(W.Verhaegh,P.Lippens,J.Meerbergen,A.Van der Werf,“PHDEO:high-level synthesis for highthroughput applications”,Journal of VLSI Signal Procesing(Netherlands),vol.9,no.1-2,p.89-104,Jan.1995.)。
[11]“Mistral2数据表”(Frontier Design Inc,“Mistral2 Datasheet”,Danville,California CA 94506 U.S.A)。
[12]“Phideo中的模块设计和分层抽取”(P.E.R.Lippens,J.L.vanMeerbergen,W.F.J.Verhaegh,and A.van der Welf,“Modular design andhierarchical abstraction in Phideo”,Proceedings of VLSI Signal Processing VI,1993,pp.197-205.)。
Claims (6)
1.一种数据处理设备,至少包括一个主控制器(1)、第一功能单元(2)和第二功能单元(3),其中所述第一功能单元包括一个从控制器(20),
所述第一功能单元(2)被安排用于处理第一类型指令,所述第一类型指令对应于具有相对长等待时间的操作,以及
所述第二功能单元(3)被安排用于处理第二类型指令,所述第二类型指令对应于具有相对短等待时间的操作;
其中所述第一功能单元和所述第二功能单元共享公用存储器(11),所述数据处理设备被编程用于由所述第一功能单元(2)执行指令,所述指令的执行涉及所述第一功能单元(2)的输入/输出操作,其中,在所述执行期间,所述第二功能单元(3)处理所述第一功能单元(2)的输出数据,和/或在所述执行期间,所述第二功能单元(3)生成输入数据。
2.如权利要求1所述的数据处理设备,其特征在于具有可由所述主控制器(1)控制的停止装置,用于暂时停止所述第一功能单元(2)的操作。
3.一种操作数据处理设备的方法,其特征在于,所述方法包括下列步骤:
-由主控制器(1)控制所述设备的操作;
-由包括从控制器(20)的第一功能单元(2)执行第一类型指令,所述第一类型指令对应于具有相对长等待时间的操作;
-由第二功能单元(3)执行第二类型的指令,所述第二类型的指令对应于具有相对短等待时间的操作,
其中,在所述第一类型的指令的执行期间,所述第一功能单元(2)接收输入数据,并提供输出数据,其中,在所述执行期间,所述第二功能单元(3)处理所述输出数据,和/或在所述执行期间,所述第二功能单元(3)生成所述输入数据。
4.如权利要求3所述的方法,其特征在于:在所述第一类型的指令的执行期间,所述主控制器(1)暂时停止所述第一功能单元(2)的操作。
5.一种用于将程序编译成指令序列以操作一个数据处理设备的方法,其中包括以下步骤:
-构成模型,所述模型代表一个涉及第一功能单元(2)指令的执行的输入/输出操作;
-根据所述模型,调度一个或多个第二功能单元(3)的指令,用于在所述第一功能单元(2)正在执行要使用输入数据的指令时为所述第一功能单元(2)提供所述输入数据,和/或用于在所述第一功能单元(2)正在执行计算输出数据的指令时从所述第一功能单元(2)提取所述输出数据;
所述第一功能单元(2)被安排用于处理第一类型指令,所述第一类型指令对应于具有相对长等待时间的操作,以及
所述第二功能单元(3)被安排用于处理第二类型指令,所述第二类型指令对应于具有相对短等待时间的操作。
6.如权利要求5所述的方法,其特征在于所述模型是信号流图。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP00200870 | 2000-03-10 | ||
EP00200870.4 | 2000-03-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1372661A CN1372661A (zh) | 2002-10-02 |
CN1244050C true CN1244050C (zh) | 2006-03-01 |
Family
ID=8171181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB018011748A Expired - Lifetime CN1244050C (zh) | 2000-03-10 | 2001-02-28 | 数据处理设备、操作数据处理设备的方法及将程序编译成指令序列的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20010039610A1 (zh) |
EP (1) | EP1208423A2 (zh) |
JP (1) | JP4884634B2 (zh) |
CN (1) | CN1244050C (zh) |
WO (1) | WO2001069372A2 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10030380A1 (de) * | 2000-06-21 | 2002-01-03 | Infineon Technologies Ag | Mehrere CPUs enthaltendes System |
WO2003083649A1 (en) * | 2002-03-28 | 2003-10-09 | Koninklijke Philips Electronics N.V. | Vliw processor |
JP3805776B2 (ja) * | 2004-02-26 | 2006-08-09 | 三菱電機株式会社 | グラフィカルプログラミング装置及びプログラマブル表示器 |
KR101571882B1 (ko) | 2009-02-03 | 2015-11-26 | 삼성전자 주식회사 | 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법 |
KR101553652B1 (ko) * | 2009-02-18 | 2015-09-16 | 삼성전자 주식회사 | 이종 프로세서에 대한 명령어 컴파일링 장치 및 방법 |
KR101622266B1 (ko) | 2009-04-22 | 2016-05-18 | 삼성전자주식회사 | 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법 |
KR101084289B1 (ko) | 2009-11-26 | 2011-11-16 | 애니포인트 미디어 그룹 | 미디어 재생 장치에서 실행되는 사용자 애플리케이션을 제공하는 컴퓨팅 장치 및 제공 방법 |
KR20130089418A (ko) * | 2012-02-02 | 2013-08-12 | 삼성전자주식회사 | Asip를 포함하는 연산장치 및 설계 방법 |
CN110825440B (zh) | 2018-08-10 | 2023-04-14 | 昆仑芯(北京)科技有限公司 | 指令执行方法和装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4876643A (en) * | 1987-06-24 | 1989-10-24 | Kabushiki Kaisha Toshiba | Parallel searching system having a master processor for controlling plural slave processors for independently processing respective search requests |
WO1990001192A1 (en) * | 1988-07-22 | 1990-02-08 | United States Department Of Energy | Data flow machine for data driven computing |
US5051885A (en) * | 1988-10-07 | 1991-09-24 | Hewlett-Packard Company | Data processing system for concurrent dispatch of instructions to multiple functional units |
JPH03148749A (ja) * | 1989-07-28 | 1991-06-25 | Toshiba Corp | マスタ/スレーブシステム及びその制御方法 |
JP3175768B2 (ja) * | 1990-06-19 | 2001-06-11 | 富士通株式会社 | 複合型命令スケジューリング処理装置 |
US6378061B1 (en) * | 1990-12-20 | 2002-04-23 | Intel Corporation | Apparatus for issuing instructions and reissuing a previous instructions by recirculating using the delay circuit |
USH1291H (en) * | 1990-12-20 | 1994-02-01 | Hinton Glenn J | Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions |
US5481736A (en) * | 1993-02-17 | 1996-01-02 | Hughes Aircraft Company | Computer processing element having first and second functional units accessing shared memory output port on prioritized basis |
JPH07244588A (ja) * | 1994-01-14 | 1995-09-19 | Matsushita Electric Ind Co Ltd | データ処理装置 |
JP2889842B2 (ja) * | 1994-12-01 | 1999-05-10 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
JP2987308B2 (ja) * | 1995-04-28 | 1999-12-06 | 松下電器産業株式会社 | 情報処理装置 |
US5706514A (en) * | 1996-03-04 | 1998-01-06 | Compaq Computer Corporation | Distributed execution of mode mismatched commands in multiprocessor computer systems |
US6266766B1 (en) * | 1998-04-03 | 2001-07-24 | Intel Corporation | Method and apparatus for increasing throughput when accessing registers by using multi-bit scoreboarding with a bypass control unit |
US6301653B1 (en) * | 1998-10-14 | 2001-10-09 | Conexant Systems, Inc. | Processor containing data path units with forwarding paths between two data path units and a unique configuration or register blocks |
-
2001
- 2001-02-28 CN CNB018011748A patent/CN1244050C/zh not_active Expired - Lifetime
- 2001-02-28 EP EP01921292A patent/EP1208423A2/en not_active Withdrawn
- 2001-02-28 JP JP2001568183A patent/JP4884634B2/ja not_active Expired - Lifetime
- 2001-02-28 WO PCT/EP2001/002270 patent/WO2001069372A2/en not_active Application Discontinuation
- 2001-03-07 US US09/801,080 patent/US20010039610A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2001069372A2 (en) | 2001-09-20 |
EP1208423A2 (en) | 2002-05-29 |
US20010039610A1 (en) | 2001-11-08 |
CN1372661A (zh) | 2002-10-02 |
JP2003527711A (ja) | 2003-09-16 |
JP4884634B2 (ja) | 2012-02-29 |
WO2001069372A3 (en) | 2002-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wolf et al. | Multiprocessor system-on-chip (MPSoC) technology | |
Burger et al. | Scaling to the End of Silicon with EDGE Architectures | |
Yang et al. | Energy-aware runtime scheduling for embedded-multiprocessor SOCs | |
Owaida et al. | Synthesis of platform architectures from OpenCL programs | |
US6059840A (en) | Automatic scheduling of instructions to reduce code size | |
US20060026578A1 (en) | Programmable processor architecture hirarchical compilation | |
Codina et al. | A unified modulo scheduling and register allocation technique for clustered processors | |
CN1244050C (zh) | 数据处理设备、操作数据处理设备的方法及将程序编译成指令序列的方法 | |
Wang et al. | Hardware implementation on FPGA for task-level parallel dataflow execution engine | |
Bauer et al. | Run-time instruction set selection in a transmutable embedded processor | |
Sun et al. | Application-specific heterogeneous multiprocessor synthesis using extensible processors | |
Capalija et al. | Microarchitecture of a coarse-grain out-of-order superscalar processor | |
Parashar et al. | Hardware abstractions for targeting EDDO Architectures with the Polyhedral Model | |
Costero et al. | Energy efficiency optimization of task-parallel codes on asymmetric architectures | |
Ravindran et al. | Partitioning variables across register windows to reduce spill code in a low-power processor | |
Ravindran et al. | Increasing the number of effective registers in a low-power processor using a windowed register file | |
Cardoso | Dynamic loop pipelining in data-driven architectures | |
CN101076780A (zh) | 针对程序中循环的编译方法、编译设备和计算机系统 | |
Damschen et al. | WCET guarantees for opportunistic runtime reconfiguration | |
Busa et al. | Scheduling coarse-grain operations for VLIW processors | |
CN1167005C (zh) | 用于流水线化处理器中跳转控制的方法及装置 | |
Rácz et al. | A decomposition-based system level synthesis method for heterogeneous multiprocessor architectures | |
Guo et al. | Evaluation and tradeoffs for out-of-order execution on reconfigurable heterogeneous MPSoC | |
Park et al. | Resource recycling: putting idle resources to work on a composable accelerator | |
Xiao et al. | VLIW instruction scheduling for minimal power variation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20060301 |