CN101901130B - 一种指令分配和预处理指令译码的装置 - Google Patents

一种指令分配和预处理指令译码的装置 Download PDF

Info

Publication number
CN101901130B
CN101901130B CN201010238659.2A CN201010238659A CN101901130B CN 101901130 B CN101901130 B CN 101901130B CN 201010238659 A CN201010238659 A CN 201010238659A CN 101901130 B CN101901130 B CN 101901130B
Authority
CN
China
Prior art keywords
instruction
unit
functional unit
signal
flag
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201010238659.2A
Other languages
English (en)
Other versions
CN101901130A (zh
Inventor
李兆麟
郑庆伟
陈佳佳
叶剑飞
魏炽频
李圣龙
王芳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN201010238659.2A priority Critical patent/CN101901130B/zh
Publication of CN101901130A publication Critical patent/CN101901130A/zh
Application granted granted Critical
Publication of CN101901130B publication Critical patent/CN101901130B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)

Abstract

本发明提出一种指令分配和预处理指令译码的装置,包括:指令分配模块,用于生成指令分配使能信号和下一个周期的指令分配信号;指令判断及选择模块,用于根据来自指令分配模块的指令分配使能信号,生成各个功能单元的指令选择信号,选择并输出相应的功能单元指令;和指令预处理模块,用于对来自指令判断及选择模块的各个功能单元的指令进行预处理译码,输出各个相应功能单元的指令预处理信号。本发明的装置占用的硬件面积小、速度快,实现了高效的性能和较小的面积功耗的平衡。

Description

一种指令分配和预处理指令译码的装置
技术领域
本发明涉及数字信号处理领域,特别涉及一种指令分配和预处理指令译码的装置。
背景技术
DSP(Digital Signal Processor,数字信号处理器)是一种独特的微处理器,其工作原理是接收模拟信号,转换为数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。DSP的强大数据处理能力和高运行速度,是最值得称道的两大特点。
由于DSP能够实时快速地实现各种数字信号处理算法实时处理等特点,数字信号处理器被广泛应用于语音处理、图形图像处理、通信设备、多媒体设备、仪器仪表、自动控制、医疗仪器、家用电器、汽车工业和军事武器装备等领域。当前科学技术迅速发展,各种应用对DSP处理器的要求越来越高,需要快速的处理大量数据和信息。应对这种性能上的需求,现代数字信号处理器硬件部分均采用了高性能的超长指令字(VLIW,Very Long Instruction Words)的体系结构。VLIW结构是由耶鲁大学的J.A Fisher于1983年首次提出的一种计算机体系结构。该结构通过编译器来发现指令间的并行性,通过调度将能够并行执行的指令合并在一起组成一个超长的指令,由执行部件的多个功能单元同时执行。VLIW把许多条指令连在一起,增加了运算的速度。超长指令字是处理器设计领域中的一种越来越流行的技术。
在VLIW体系下,DSP每次取回的指令由多个功能单元执行,所以必须使指令能够正确的分配到目标功能单元。指令分配单元同步功能单元同时执行的各种操作,并把长指令中的各个字段分配给对应的功能单元,然后在功能单元内进行译码,产生控制信号控制功能单元实现指令规定的功能。指令分配单元的设计是基于该体系结构的微处理器设计的一个重要环节。高速正确地实现指令分配,可以避免指令分配阶段成为整个处理器设计的瓶颈。
在目前的VLIW体系结构下,指令分配单元主要存在如下问题需要解决:
1、正确的指令分配。DSP每次取指取回8条32位的指令,这个指令包称为一个取指包。这8条指令可以全部并行执行,也可以全部串行执行,也可以分为任意组,其中每组中的指令并行执行,每组之间串行执行。并行执行的一组指令称为一个执行包,一个取指包可以分割为1到8个执行包。
2、在确定分配几条指令之后,判断出执行包的这几条指令分别需要由哪个功能单元执行,将它们分配到相应的功能单元中。另外,如果执行包中包含多周期停顿指令,还要输出多周期停顿指令的停顿周期数。
3、由于一个取指包中可能包含1到8个执行包,将这些执行包分配完需要多个周期。在每个周期,如果取指包中有还没分配的执行包,那么在接下来的周期中要停止前面的几级流水线,而分配部分对取指包中还没分配的执行包继续进行分配,直到所有的执行包都分配完,前面的流水线再继续前进。对流水线的暂停通过控制器进行控制。这是流水线正常运转所必需的要求,否则程序执行的正确性无从保证。
4、分支指令进入取指阶段后,会冲掉正在分配阶段的指令,而分配单元需要从分支指令所指示的位置开始分配。所以在这种情况下将会打断正常指令分配的过程,而是直接开始新的指令分配。
5指令分配阶段结束以后,指令将被译码执行。据统计DSP的性能分析表明,指令译码和准备操作数阶段是导致DSP时钟频率不能进一步提升的瓶颈。所以在DSP的实际设计考虑里面,为了尽量使系统具备提升性能的可能,需要在指令分配阶段对指令译码做一些预操作处理。
综上所述,分配指令阶段事件的复杂性使得分配逻辑的设计非常复杂,与此相对应的电路面积和功耗成为VLIW架构下的严重缺点。
发明内容
本发明的目的旨在至少解决上述技术缺陷之一,特别针对适用于超长指令字架构下的数字信号处理器,具有高效的性能和较小的面积功耗的平衡,提出了一种指令分配和预处理指令译码的装置。
为实现上述目的,本发明实施例提出了一种指令分配和预处理指令译码的装置,包括:
指令分配模块,用于生成指令分配使能信号和下一个周期的指令分配信号;
指令判断及选择模块,用于根据来自所述指令分配模块的指令分配使能信号,生成各个功能单元的指令选择信号,选择并输出相应的功能单元指令;和
指令预处理模块,用于对来自所述指令判断及选择模块的各个功能单元的指令进行预处理译码,输出各个相应功能单元的指令预处理信号。
本发明实施例提供的指令分配和预处理指令译码的装置根据输入的指令产生指令分配使能信号和分配标志信号,生成目的单元选择信号,并根据上述目的单元选择信号选择与各功能单元匹配的指令,进一步将指令送给指令预处理单元,最后将选择出的功能单元指令和指令预处理结果信号作为输出给下一级电路。本发明的装置相对于现有的VLIW体系结构下的指令分配单元,查找表占用的硬件面积小、速度快,实现了高效的性能和较小的面积功耗的平衡。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明实施例的指令分配和预处理指令译码的装置的结构示意图;
图2为图1中指令分配和预处理指令译码的装置的整体结构框图;
图3为一个取指包的8条指令的存储格式示意图;
图4为一条指令的存储格式示意图;
图5为指令的目的单元信号格式示意图;
图6为功能单元的指令选择信号格式示意图;
图7为图1中指令分配和预处理指令译码的装置的工作示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本发明主要在于,根据目的单元选择信号,选择与各功能单元匹配的指令,进一步将指令送给指令预处理单元,最后将选择出的功能单元指令和指令预处理结果信号作为输出给下一级电路。
为实现上述目的,本发明的目的是提供一种指令分配和预处理指令译码的装置,该装置适用于超长指令字架构下的数字信号处理器,具有高效的性能和较小的面积功耗的平衡。图1示出了该装置的结构示意图。如图1所示,该装置包括指令分配模块110、指令判断及选择模块120和指令预处理模块130。
具体的说,指令分配模块110进一步包括分配标志处理单元、指令分配使能单元和分配标志寄存单元。结合图2所示,分配标志处理单元将上一个周期的指令分配信号,即分配指令的记录信息pre_flag(n),其中n=1,2,3...8,即pre_flag1至pre_flag8、指示新的取指包指令进入分配单元的信号NEW_FP,以及指示从取指包的8条指令那一条开始分配的指示信号PC_v3作为输入信号输入,通过逻辑处理,生成用于指示本周期的指令分配信号fix_flag(n),其中,n=1,2,3...8。
其中,pre_flag指示前面周期的指令分配情况,pre_flag(n)=1(n=1,2...8)表示第n条指令已经被分配过,pre_flag(n)=0表示第n条指令还没有被分配。每次新指令进入分配单元会指示分配单元从新的取指包开始分配,并且从哪条指令开始分配根据PC_v3指示来设定。这是为了在分支指令进入分配单元的时候,从分支指令所指示的位置开始分配指令进入译码和执行。
具体的说,上一个时钟周期分配标志pre_flag1至pre_flag8信号根据是否有新指令进入,是否有分配起始指令来调整输出为合适的本周期的分配标志信号fix_flag1至fix_flag8。
其中,fx_flag(n)=NEW_FP?(PC_v3>=n):pre_flag(n),
当NEW_FP为真时,则判断PC_v3是否大于等于n,
当PC_v3>=n时,则fx_flag(n)为1;当PC_v3小于1时,则fix_flag(n)为0;
当NEW_FP为假时,则fix_flag(n)=pre_flag(n),其中n=1,2,3...8。
具体的说,fix_flag1=NEW_FP?(PC_v3>=1):pre_flag1;
表示如果NEW_FP为真,则判断PC_v3是否大于等于1,如果PC_v3>=1则fix_flag1=1;如果PC_v3<1则fix_flag1=0;如果NEW_FP为假,则将pre_flag1赋值给fx_flag1,即fix_flag1=pre_flag1。
fix_flag2=NEW_FP?(PC_v3>=2):pre_flag2;
表示如果NEW_FP为真,则判断PC_v3是否大于等于2,如果PC_v3>=2则fix_flag2=1,如果PC_v3<2则fix_flag2=0,如果NEW_FP为假,则将pre_flag2赋值给fix_flag2,即fix_flag2=pre_flag2。
fx_flag3=NEW_FP?(PC_v3>=3):pre_flag3;
表示如果NEW_FP为真,则判断PC_v3是否大于等于3,如果PC_v3>=3则fix_flag3=1,如果PC_v3<1则fix_flag3=0;如果NEW_FP为假,则将pre_flag3赋值给fix_flag3,即fix_flag3 pre_flag3。
fix_flag4=NEW_FP?(PC_v3>=4):pre_flag4;
表示如果NEW_FP为真,则判断PC_v3是否大于等于1,如果PC_v3>=4则fix_flag4=1;如果PC_v3<4则fix_flag4=0;如果NEW_FP为假,则将pre_flag4赋值给fix_flag4,即fix_flag4=pre_flag4。
fix_flag5=NEW_FP?(PC_v3>=5):pre_flag5;
表示如果NEW_FP为真,则判断PC_v3是否大于等于1,如果PC_v3>=5则fix_flag5=1;如果PC_v3<5则fix_flag5=0;如果NEW_FP为假,则将pre_flag5赋值给fix_flag5,即fix_flag5=pre_flag5。
fix_flag6=NEW_FP?(PC_v3>=6):pre_flag6;
表示如果NEW_FP为真,则判断PC_v3是否大于等于1,如果PC_v3>=6则fix_flag6=1;如果PC_v3<6则fix_flag6=0;如果NEW_FP为假,则将pre_flag6赋值给fx_flag6,即fix_flag6=pre_flag6。
fix_flag7=NEW_FP?(PC_v3>=7):pre_flag7;
表示如果NEW_FP为真,则判断PC_v3是否大于等于1,如果PC_v3>=7则fix_flag7=1;如果PC_v3<7则fix_flag7=0;如果NEW_FP为假,则将pre_flag7赋值给fix_flag7,即fix_flag7=pre_flag7。
fix_flag8=NEW_FP?(PC_v3>=8):pre_flag8;
表示如果NEW_FP为真,则判断PC_v3是否大于等于1,如果PC_v3>=8则fix_flag8=1;如果PC_v3<8则fix_flag8=0;如果NEW_FP为假,则将pre_flag8赋值给fix_flag8,即fix_flag8=pre_flag8。
在以上公式中,“A?B:C”为三目运算符,表示如果A成立则执行B,如果不成立则执行C。
将上述本周期的分配标志信号fix_flag1至fix_flag8以及8条32位功能单元的指令的p位,p1至p8输入到指令分配使能单元。上述8条32位功能单元的指令分别位inst1至inst8。
其中,DSP每次取指取回8条32位的指令,在每一条指令中都有1位,即p位用于指示本条指令是否与下一条指令并行执行。每条指令中还有几位用于指示本条指令要在哪个功能单元中执行,称为特征码。
图3示出了每个取指包的8条指令的存储格式。如图3中所示,每条指令的指令长度为32位。指令1:0~31位;指令2:32~63位;指令3:64~95位;指令4:96~127位;指令5:128~159位;指令6:160~191位;指令7:192~223位;指令8:224~255位。图4进一步示出了一条指令的存储格式。上述指令包括两种类型:非NOP指令和NOP指令。其中,非NOP指令表示非空操作指令,即分配到功能单元的指令。NOP指令表示空操作指令。如图4中所示,非NOP指令包括1位用于指示本条指令是否与下一条指令并行执行的p位、特征码、5位源1寄存器地址、5位源2寄存器地址和5位目标寄存器地址。NOP指令包括1位用于指示本条指令是否与下一条指令并行执行的p位、特征码和5位NOP_num。
其中,对于p位,p(n)=1(n=1,2...7)表示第n条指令和第n+1条指令并行执行,p(n)=0表示第n+1条指令在第n条指令的后一个周期执行。
指令分配使能单元对上述输入信号进行逻辑处理,输出指示每条指令的分配使能信号inst(n)_dispatch,其中,n=1,2,3...8,即inst1_dispatch至inst8_dispatch、用于指示下次分配指令的标志信号next_flag(n),其中,n=1,2,3...8,即next_flag1至next_flag8和用于指示流水线停顿的信号STOP_DP_OUT。
具体的说,通过一下逻辑处理生成指示下次分配指令的标志信号next_flag(n)=(next_flag(n-1)&p(n-1))|fix_flag(n-1)。
具体的说,next_flag1=1;表示第1条指令一定是已经分配过或者正要分配;
next_flag2=(next_flag1&p1)|fix_flag1;表示如果第1条指令在上一个周期分配过,或者第1条指令本周期分配并且第2条指令和第1条指令并行,那么第2条指令一定是已经分配过或者正要分配;
next_flag3=(next_flag2&p2)|fix_flag2;表示如果第2条指令在上一个周期分配过,或者第2条指令本周期分配并且第3条指令和第2条指令并行,那么第3条指令一定是已经分配过或者正要分配;
next_flag4=(next_flag3&p3)|fix_flag3;表示如果第3条指令在上一个周期分配过,或者第3条指令本周期分配并且第4条指令和第3条指令并行,那么第4条指令一定是已经分配过或者正要分配;
next_flag5=(next_flag4&p4)|fix_flag4;表示如果第4条指令在上一个周期分配过,或者第4条指令本周期分配并且第5条指令和第4条指令并行,那么第5条指令一定是已经分配过或者正要分配;
next_flag6=(next_flag5&p5)|fix_flag5;表示如果第5条指令在上一个周期分配过,或者第5条指令本周期分配并且第6条指令和第5条指令并行,那么第6条指令一定是已经分配过或者正要分配;
next_flag7=(next_flag6&p6)|fix_flag6;表示如果第6条指令在上一个周期分配过,或者第6条指令本周期分配并且第7条指令和第6条指令并行,那么第7条指令一定是已经分配过或者正要分配;
next_flag8=(next_flag7&p7)|fix_flag7;表示如果第7条指令在上一个周期分配过,或者第7条指令本周期分配并且第8条指令和第7条指令并行,那么第8条指令一定是已经分配过或者正要分配;
在以上公式中,“&”表示逻辑与,“|”表示逻辑或。信号next_nagN指示前面周期已经分配过的指令和本周期被分配的指令,next_flag(n)=1(n=1,2...8)表示第n条指令已经被分配过或者本周期被分配,flag(n)=0表示第n条指令要等到后面的周期才能被分配。next_flag1到next_flag8的值在时钟上升沿存入分配标志寄存器。
在每周期的分配过程中,如果next_flag1到next_flag8不都等于1,说明在本周期分配后取指包中还有没被分配的指令,则需要产生信号STOP_DP_OUT=1来指示前面的流水线需要停止,控制器根据这个信号将前面几级流水线暂停,而分配继续进行。直到next_flag1到next_flag8都等于1,说明所有的指令都分配完了,此时令STOP_DP_OUT=0,控制器会停止对流水线的暂停。同时,寄存器pre_fag1到pre_flag8的值也会被清零。在下一周期,一个新的取指包进入分配阶段,重新开始分配。
其中,STOP_DP_OUT=~(next_flag8&next_flag7&next_flag6&next_flag5&next_flag4&next_flag3&next_flag2&next_flag1);
在以上公式中,“&”表示逻辑与,“~”表示逻辑取反。STOP_DP_OUT来指示前面的流水线是否需要停止。
通过信号fix_flag1到fix_flag8和next_flag1到next_flag8,就可以判断出本周期要分配的执行包包含哪些指令,产生指示信号inst(n)_dispatch,其中,n=1,2...8,即inst1_dispatch到inst8_dispatch,用于控制是否对inst1至inst8进行目的单元检测。
其中,inst(n)_dispatch=next_flag(n)&(~fix_flag(n)),表示当第N条指令在上一个周期没有分配过,而在本周期的分配标志为完成分配,则第N条指令在本周期分配,
其中,“&”表示逻辑与,“~”表示逻辑取反。
具体的说,inst1_dispatch=next_flag1&(~fix_flag1);表示如果第1条指令在上一个周期没有分配过,但本周期的分配标志是完成分配,那么第1条指令一定是在本周期分配的;
mst2_dispatch=next_flag2&(~fix_flag2);表示如果第2条指令在上一个周期没有分配过,但本周期的分配标志是完成分配,那么第2条指令一定是在本周期分配的;
inst3_dispatch=next_flag3&(~fix_flag3);表示如果第3条指令在上一个周期没有分配过,但本周期的分配标志是完成分配,那么第3条指令一定是在本周期分配的;
inst4_dispatch=next_flag4&(~fix_flag4);表示如果第4条指令在上一个周期没有分配过,但本周期的分配标志是完成分配,那么第4条指令一定是在本周期分配的;
inst5_dispatch=next_flag5&(~fix_flag5);表示如果第5条指令在上一个周期没有分配过,但本周期的分配标志是完成分配,那么第5条指令一定是在本周期分配的;
inst6_dispatch=next_flag6&(~fix_flag6);表示如果第6条指令在上一个周期没有分配过,但本周期的分配标志是完成分配,那么第6条指令一定是在本周期分配的;
inst7_dispatch=next_flag7&(~fix_flag7);表示如果第7条指令在上一个周期没有分配过,但本周期的分配标志是完成分配,那么第7条指令一定是在本周期分配的;
inst8_dispatch=next_flag8&(~fix_flag8);表示如果第8条指令在上一个周期没有分配过,但本周期的分配标志是完成分配,那么第8条指令一定是在本周期分配的;
STOP_DP_OUT=~(next_flag8&next_flag7&next_flag6&next_flag5&next_flag4&next_flag3&next_flag2&next_flag1);表示如果指令1至指令8只要还有一条没有分配,就需要停止掉前面的流水线;
在以上公式中,“&”表示逻辑与,“|”表示逻辑或,“~”表示逻辑取反。inst_diapatch指示本周期要分配的执行包包含的指令,inst(n)_dispatch=1(n=1,2...8)表示第n条指令要在本周期分配,inst(n)_dispatch=0表示第n条指令不是在本周期分配。inst(n)_dispatch信号被送到判断指令的目的单元电路,用于产生分配选择信号。
分配逻辑要根据特征码指示位来进行分配。指令分配使能模块用于判断本周期要分配的执行包,实现这个功能除了需要知道取指包中的哪些指令要并行执行以外,还需要知道哪些指令已经分配过了,哪些指令不需要分配。所以,需要分配标志寄存单元记录每条指令是否已经分配过。结合图2所示,分配标志寄存单元保存了前面周期的指令分配情况,在每个周期结束的时候保存本次分配情况,在下一个分配周期输出pre_fag1至pre_flag8。
分配标志寄存单元根据输入的指示下次分配指令的标志信号next_flag1至next_flag8,输出信号用于下个时钟周期的指令分配的标志信息pre_flag1至pre_flag8;
指令判断及选择模块进一步包括判断指令的目的单元、指令选择信号生成单元和指令选择单元。
其中,将8条32位的指令inst1到inst8以及来自上述指令分配使能单元的inst1_dispatch至inst8_dispatch输入到判断指令的目的单元中,用于控制是否对inst1至inst8进行目的单元检测。根据指令中的特征码位判断出每一条指令是在哪个功能单元中执行,分别产生指示信号inst1_unit到inst8_unit。
判断指令的目的单元根据不同的输入指令又分为判断指令1的目的单元、判断指令2的目的单元、判断指令3的目的单元、判断指令4的目的单元、判断指令5的目的单元、判断指令5的目的单元、判断指令6的目的单元、判断指令7的目的单元和判断指令8的目的单元。
结合图2所示,判断指令1的目的单元用于判断输入的指令1应该分配给哪个单元执行,输入信号为一条32位指令1,即inst1,和指令分配使能电路产生的分配使能信号,即inst1_dispatch。如果分配使能信号有效,则根据指令的特征码位来判断指令的目的单元,如果分配使能信号无效或者特征码位非法,则判断目的单元为不分配,输出信号为指令的目的单元信号,即inst1_unit。
判断指令2目的单元用于判断输入的指令2应该分配给哪个单元执行,输入信号为一条32位指令2,即inst2,和指令分配使能电路产生的分配使能信号,即inst2_dispatch。如果分配使能信号有效,则根据指令的特征码位来判断指令的目的单元,如果分配使能信号无效或者特征码位非法,则判断目的单元为不分配,输出信号为指令的目的单元信号,即inst2_unit。
判断指令3的目的单元用于判断输入的指令3应该分配给哪个单元执行,输入信号为一条32位指令3,即inst3,和指令分配使能电路产生的分配使能信号,即inst3_dispatch。如果分配使能信号有效,则根据指令的特征码位来判断指令的目的单元,如果分配使能信号无效或者特征码位非法,则判断目的单元为不分配,输出信号为指令的目的单元信号,即inst3_unit。
判断指令4的目的单元用于判断输入的指令4应该分配给哪个单元执行,输入信号为一条32位指令4,即inst4,和指令分配使能电路产生的分配使能信号,即inst4_dispatch。如果分配使能信号有效,则根据指令的特征码位来判断指令的目的单元,如果分配使能信号无效或者特征码位非法,则判断目的单元为不分配,输出信号为指令的目的单元信号,即inst4_unit。
判断指令5的目的单元用于判断输入的指令5应该分配给哪个单元执行,输入信号为一条32位指令5,即inst5,和指令分配使能电路产生的分配使能信号,即inst5_dispatch。如果分配使能信号有效,则根据指令的特征码位来判断指令的目的单元,如果分配使能信号无效或者特征码位非法,则判断目的单元为不分配,输出信号为指令的目的单元信号,即inst5_unit。
判断指令6的目的单元,用于判断输入的指令6应该分配给哪个单元执行,输入信号为一条32位指令6,即inst6,和指令分配使能电路产生的分配使能信号,即inst6_dispatch。如果分配使能信号有效,则根据指令的特征码位来判断指令的目的单元,如果分配使能信号无效或者特征码位非法,则判断目的单元为不分配,输出信号为指令的目的单元信号,即inst6_unit。
判断指令7的目的单元用于判断输入的指令7应该分配给哪个单元执行,输入信号为一条32位指令7,即inst7,和指令分配使能电路产生的分配使能信号,即inst7_dispatch。如果分配使能信号有效,则根据指令的特征码位来判断指令的目的单元,如果分配使能信号无效或者特征码位非法,则判断目的单元为不分配,输出信号为指令的目的单元信号,即inst7_unit。
判断指令8的目的单元用于判断输入的指令8应该分配给哪个单元执行,输入信号为一条32位指令8,即inst8,和指令分配使能电路产生的分配使能信号,即inst8_dispatch。如果分配使能信号有效,则根据指令的特征码位来判断指令的目的单元,如果分配使能信号无效或者特征码位非法,则判断目的单元为不分配,输出信号为指令的目的单元信号,即inst8_unit。
上述判断指令的目的单元的输出信号inst1_unit到inst_8unit的格式如图5所示。对于功能单元而言,由于每条指令的目的单元信号格式相同,需要把每条指令相同的位进行组合就形成功能单元的指令选择信号和NOP指令选择信号。上述转换过程由指令选择信号生成单元完成,其输出信号分别为inst_L1_sel、inst_D1_sel、inst_M1_sel、inst_S1_sel、inst_L2_sel、inst_D2_sel、inst_M2_sel、inst_S2_sel和inst_NOP_sel。
指令选择信号生成单元生成上述指令选择信号的逻辑为:
inst_L_1sel={inst8_unit[0],inst7_unit[0],inst6_unit[0],inst5_unit[0],inst4_unit[0],inst3_unit[0],inst2_unit[0],inst1_unit[0]};表示将inst8_unit,inst7_unit,inst6_unit,inst5_unit,inst4_unit,inst3_unit,inst2_unit,inst1_unit这8个信号的第0位按顺序组合起来,然后就形成功能单元的指令选择信号;
inst_D1_sel={inst8_unit[1],inst7_unit[1],inst6_unit[1],inst5_unit[1],inst4_unit[1],inst3_unit[1],inst2_unit[1],instl_unit[1]};表示将inst8_unit,inst7_unit,inst6_unit,inst5_unit,inst4_unit,inst3_unit,inst2_unit,inst1_unit这8个信号的第1位按顺序组合起来,然后就形成功能单元的指令选择信号;
inst_M1_sel={inst8_unit[2],inst7_unit[2],inst6_unit[2],inst5_unit[2],inst4_unit[2],inst3_unit[2],inst2_unit[2],inst1_unit[2]};表示将inst8_unit,inst7_unit,inst6_unit,inst5u_nit,inst4_unit,inst3_unit,inst2_unit,inst1_unit这8个信号的第2位按顺序组合起来,然后就形成功能单元的指令选择信号;
inst_S1_sel={inst8_unit[3],inst7_unit[3],inst6_unit[3],inst5_unit[3],inst4_unit[3],inst3_unit[3],inst2_unit[3],inst1_unit[3]};表示将inst8_unit,inst7_unit,inst6_unit,inst5_unit,inst4_unit,inst3_unit,inst2_unit,inst1_unit这8个信号的第3位按顺序组合起来,然后就形成功能单元的指令选择信号;
inst_L2_sel={inst8_unit[4],inst7_unit[4],inst6_unit[4],inst5_unit[4],inst4_unit[4],inst3_unit[4],inst2_unit[4],inst1_unit[4]};表示将inst8_unit,inst7_unit,inst6_unit,inst5_unit,inst4_unit,inst3_unit,inst2_unit,inst1_unit这8个信号的第4位按顺序组合起来,然后就形成功能单元的指令选择信号;
inst_D2_sel={inst8_unit[5],inst7_unit[5],inst6_unit[5],inst5_unit[5],inst4_unit[5],inst3_unit[5],inst2_unit[5],instl_unit[5]};表示将inst8_unit,inst7_unit,inst6_unit,inst5_unit,inst4_unit,inst3_unit,inst2_unit,inst1_unit这8个信号的第5位按顺序组合起来,然后就形成功能单元的指令选择信号;
inst_M2_sel={inst8_unit[6],inst7_unit[6],inst6_unit[6],inst5_unit[6],inst4_unit[6],inst3_unit[6],inst2_unit[6],instl_unit[6]};表示将inst8_unit,inst7_unit,inst6_unit,inst5_unit,inst4_unit,inst3_unit,inst2_unit,inst1_unit这8个信号的第6位按顺序组合起来,然后就形成功能单元的指令选择信号;
inst_S2_sel={inst8_unit[7],inst7_unit[7],inst6_unit[7],inst5_unit[7],inst4_unit[7],inst3_unit[7],inst2_unit[7],inst1_unit[7]};表示将inst8_unit,inst7_unit,inst6_unit,inst5_unit,inst4_unit,inst3_unit,inst2_unit,inst1_unit这8个信号的第7位按顺序组合起来,然后就形成功能单元的指令选择信号;
inst_NOP_sel={inst8_unit[8],inst7_unit[8],inst6_unit[8],inst5_unit[8],inst4_unit[8],inst3_unit[8],inst2_unit[8],inst1_unit[8]};表示将inst8_unit,inst7_unit,inst6_unit,inst5_unit,inst4_unit,inst3_unit,inst2_unit,inst1_unit这8个信号的第8位按顺序组合起来,然后就形成功能单元的指令选择信号。
在以上公式中,“{}”表示将括号内的信号按照位组合起来,形成逻辑值赋值给等号左边的信号。图6示出了功能单元的指令选择信号inst_L1_sel、inst_D1_sel、inst_M1_sel、inst_S1_sel、inst_L2_sel、inst_D2_sel、inst_M2_sel、inst_S2_sel和inst_NOP_sel的信号格式。
指令选择单元,用于根据来自指令选择信号生成单元的指令选择信号,选择并输出与各个功能单元相匹配的功能单元指令。指令选择单元进一步包括L1功能单元的指令选择器、D1功能单元的指令选择器、M1功能单元的指令选择器、S1功能单元的指令选择器、L2功能单元的指令选择器、D2功能单元的指令选择器、M2功能单元的指令选择器、S2功能单元的指令选择器和NOP指令选择器。
上述各个功能单元的指令选择器根据指令选择信号的格式,对功能单元的指令进行选择。当指令选择信号的第i位为1时,选择第i+1条指令作为该功能单元匹配的指令,其中,0≤i≤n-1,i为整数,n=1,2,...8;当指令选择信号的第8位为1或者不是以上任何一种情况,则选择单周期NOP指令。
具体的说,L1功能单元的指令选择器用于从输入的8条指令里面给L1功能单元选择合适的指令。其输入包括8条指令,即inst1至inst8,以及L1功能单元的指令选则择信号inst_L1_sel。根据指令选择信号的格式进行选择,如果第0位为1则选择指令l,如果第1位为1则选择指令2,如果第2位为1则选择指令3,如果第3位为1则选择指令4,如果第4位为1则选择指令5,如果第5位为1则选择指令6,如果第6位为1则选择指令7,如果第7位为1则选择指令8,如果第8位为1或者不是以上任何一种情况则选择单周期NOP指令,输出信号即为选择出的送给功能单元的指令,即L1_inst;
D1功能单元的指令选择电路,用于从输入的八条指令里面给D1功能单元选择合适的指令,电路的输入包括8条指令,即inst1至inst8,以及D1功能单元的指令选则择信号inst_D1_sel。根据指令选择信号的格式进行选择,如果第0位为1则选择指令1,如果第1位为1则选择指令2,如果第2位为1则选择指令3,如果第3位为1则选择指令4,如果第4位为1则选择指令5,如果第5位为1则选择指令6,如果第6位为1则选择指令7,如果第7位为1则选择指令8,如果第8位为1或者不是以上任何一种情况则选择单周期NOP指令,输出信号即为选择出的送给功能单元的指令,即D1_inst;
M1功能单元的指令选择电路,用于从输入的八条指令里面给M1功能单元选择合适的指令,电路的输入包括8条指令,即inst1至inst8,以及M1功能单元的指令选则择信号inst_M1_sel。根据指令选择信号的格式进行选择,如果第0位为1则选择指令1,如果第1位为1则选择指令2,如果第2位为1则选择指令3,如果第3位为1则选择指令4,如果第4位为1则选择指令5,如果第5位为1则选择指令6,如果第6位为1则选择指令7,如果第7位为1则选择指令8,如果第8位为1或者不是以上任何一种情况则选择单周期NOP指令,输出信号即为选择出的送给功能单元的指令,即M1_inst;
S1功能单元的指令选择电路,用于从输入的八条指令里面给S1功能单元选择合适的指令,电路的输入包括8条指令,即inst1至inst8,以及S1功能单元的指令选则择信号inst_S1_sel。根据指令选择信号的格式进行选择,如果第0位为1则选择指令1,如果第1位为1则选择指令2,如果第2位为1则选择指令3,如果第3位为1则选择指令4,如果第4位为1则选择指令5,如果第5位为1则选择指令6,如果第6位为1则选择指令7,如果第7位为1则选择指令8,如果第8位为1或者不是以上任何一种情况则选择单周期NOP指令,输出信号即为选择出的送给功能单元的指令,即S1_inst;
L2功能单元的指令选择电路,用于从输入的八条指令里面给L2功能单元选择合适的指令,电路的输入包括8条指令,即inst1至inst8,以及L2功能单元的指令选则择信号inst_L2_sel。根据指令选择信号的格式进行选择,如果第0位为1则选择指令1,如果第1位为1则选择指令2,如果第2位为1则选择指令3,如果第3位为1则选择指令4,如果第4位为1则选择指令5,如果第5位为1则选择指令6,如果第6位为1则选择指令7,如果第7位为1则选择指令8,如果第8位为1或者不是以上任何一种情况则选择单周期NOP指令,输出信号即为选择出的送给功能单元的指令,即L2_inst;
D2功能单元的指令选择电路,用于从输入的八条指令里面给D2功能单元选择合适的指令,电路的输入包括8条指令,即inst1至inst8,以及D2功能单元的指令选则择信号inst_D2_sel。根据指令选择信号的格式进行选择,如果第0位为1则选择指令1,如果第1位为1则选择指令2,如果第2位为1则选择指令3,如果第3位为1则选择指令4,如果第4位为1则选择指令5,如果第5位为1则选择指令6,如果第6位为1则选择指令7,如果第7位为1则选择指令8,如果第8位为1或者不是以上任何一种情况则选择单周期NOP指令,输出信号即为选择出的送给功能单元的指令,即D2_inst;
M2功能单元的指令选择电路,用于从输入的八条指令里面给M2功能单元选择合适的指令,电路的输入包括8条指令,即inst1至inst8,以及M2功能单元的指令选则择信号inst_M2_sel。根据指令选择信号的格式进行选择,如果第0位为1则选择指令1,如果第1位为1则选择指令2,如果第2位为1则选择指令3,如果第3位为1则选择指令4,如果第4位为1则选择指令5,如果第5位为1则选择指令6,如果第6位为1则选择指令7,如果第7位为1则选择指令8,如果第8位为1或者不是以上任何一种情况则选择单周期NOP指令,输出信号即为选择出的送给功能单元的指令,即M2_inst;
S2功能单元的指令选择电路,用于从输入的八条指令里面给S2功能单元选择合适的指令,电路的输入包括8条指令,即inst1至inst8,以及S2功能单元的指令选则择信号inst_S2_sel。根据指令选择信号的格式进行选择,如果第0位为1则选择指令1,如果第1位为1则选择指令2,如果第2位为1则选择指令3,如果第3位为1则选择指令4,如果第4位为1则选择指令5,如果第5位为1则选择指令6,如果第6位为1则选择指令7,如果第7位为1则选择指令8,如果第8位为1或者不是以上任何一种情况则选择单周期NOP指令,输出信号即为选择出的送给功能单元的指令,即S2_inst;
NOP指令选择电路,用于从输入的八条指令里面选择出NOP指令,电路的输入包括8条指令,即inst1至inst8,以及NOP指令选则择信号NOP_sel。根据指令选择信号的格式进行选择,如果第0位为1则选择指令1,如果第1位为1则选择指令2,如果第2位为1则选择指令3,如果第3位为1则选择指令4,如果第4位为1则选择指令5,如果第5位为1则选择指令6,如果第6位为1则选择指令7,如果第7位为1则选择指令8,如果第8位为1或者不是以上任何一种情况则选择单周期NOP指令,输出信号即为NOP指令,即NOP_inst。
8个多路选择器分别根据相应的选择信号从8条指令中选择出分配到每个功能单元的指令。由于在每个周期中不一定所有8个功能单元都需要执行指令操作,对于不需要执行指令的功能单元就分配一条代表空操作的指令。每个功能单元分配到的指令L1_inst、D1_inst、M1_inst、S1_inst、L2_inst、D2_inst、M2_inst和S2_inst被送到指令分配单元的最终输出,NOP_inst被送到NOP指令预处理中,以便进行后面流水线的操作。
指令预处理模块130接收上述来自指令判断及选择模块的各个功能单元的指令进行预处理译码,输出各个相应功能单元的指令预处理信号。其中,指令预处理模块130进一步包括L1功能单元的指令预处理器、D1功能单元的指令预处理器、M1功能单元的指令预处理器、S1功能单元的指令预处理器、L2功能单元的指令预处理器、D2功能单元的指令预处理器、M2功能单元的指令预处理器、S2功能单元的指令预处理器和NOP指令预处理器。
图7进一步示出了指令分配和预处理指令译码的装置的工作示意图。具体的说,L1功能单元的指令预处理器,用于对分配给L1功能单元的指令进行预处理译码,其输入为送给L1功能单元的指令L1_inst。根据图3中所示的指令格式,从指令的某些位选择出地址信号作为预处理的输出,输出为L1功能单元的指令预处理信号,包括源1寄存器地址L1_src1,源2寄存器地址L1_src2,和目的寄存器地址L1_dst。
D1功能单元的指令预处理器,用于对分配给D1功能单元的指令进行预处理译码,其输入为送给D1功能单元的指令D1_inst。根据指令格式,从指令的某些位选择出地址信号作为预处理的输出,输出为D1功能单元的指令预处理信号,包括源1寄存器地址D1_src1,源2寄存器地址D1_src2,和目的寄存器地址D1_dst。
M1功能单元的指令预处理器,用于对分配给M1功能单元的指令进行预处理译码,其输入为送给M1功能单元的指令M1_inst。根据指令格式,从指令的某些位选择出地址信号作为预处理的输出,输出为M1功能单元的指令预处理信号,包括源1寄存器地址M1_src1,源2寄存器地址M1_src2,和目的寄存器地址M1_dst。
S1功能单元的指令预处理电路,用于对分配给S1功能单元的指令进行预处理译码,其输入为送给S1功能单元的指令S1_inst。根据指令格式,从指令的某些位选择出地址信号作为预处理的输出,输出为S1功能单元的指令预处理信号,包括源1寄存器地址S1_src1,源2寄存器地址S1_src2,和目的寄存器地址S1_dst。
L2功能单元的指令预处理器,用于对分配给L2功能单元的指令进行预处理译码,其输入为送给L2功能单元的指令L2_inst。根据指令格式,从指令的某些位选择出地址信号作为预处理的输出,输出为L2功能单元的指令预处理信号,包括源1寄存器地址L2_src1,源2寄存器地址L2_src2,和目的寄存器地址L2_dst。
D2功能单元的指令预处理器,用于对分配给D2功能单元的指令进行预处理译码,其输入为送给D2功能单元的指令D2_inst。根据指令格式,从指令的某些位选择出地址信号作为预处理的输出,输出为D2功能单元的指令预处理信号,包括源1寄存器地址D2_src1,源2寄存器地址D2_src2,和目的寄存器地址D2_dst。
M2功能单元的指令预处理器,用于对分配给M2功能单元的指令进行预处理译码,其输入为送给M2功能单元的指令M2_inst,。根据指令格式,从指令的某些位选择出地址信号作为预处理的输出,输出为M2功能单元的指令预处理信号,包括源1寄存器地址M2_src1,源2寄存器地址M2_src2,和目的寄存器地址M2_dst。
S2功能单元的指令预处理器,用于对分配给S2功能单元的指令进行预处理译码,其输入为送给S2功能单元的指令S2_inst。根据指令格式,从指令的某些位选择出地址信号作为预处理的输出,输出为S2功能单元的指令预处理信号,包括源1寄存器地址S2_src1,源2寄存器地址S2_src2,和目的寄存器地址S2_dst。
NOP指令预处理器,用于对NOP指令进行预处理译码,电路模块的输入NOP_inst。根据指令格式,从指令选择出NOP操作的指令需要停顿的周期数NOP_num,输出为NOP_num。
指令分配完成本级的操作之后,将每个功能单元的指令和每个功能单元的指令预处理输出信号输出,送给后续的电路操作处理。
由于执行包中可能包含多周期停顿指令,另外一个多路选择器根据选择信号inst_NOP_sel选择出执行包中的多周期停顿指令和停顿的周期数,这个停顿的周期数NOP_num也被存到段间寄存器,以便接下来控制器来控制流水线的停顿。
本发明的指令分配和预处理指令译码的装置可以得到每周期分配给功能单元的指令,以及为加快后续指令译码的速度而做的指令预处理,用相对较小的面积和较快的速度实现的。由于本电路结构将8条指令的分配和预处理并行处理,可以达到较快的速度。本发明可以用在数字信号处理器的指令译码电路之前,得到分配给8个功能单元的指令,输入后面的电路结构。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。

Claims (8)

1.一种指令分配和预处理指令译码的装置,其特征在于,包括:
指令分配模块,用于生成指令分配使能信号和下一个周期的指令分配信号;
指令判断及选择模块,用于根据来自所述指令分配模块的指令分配使能信号,生成各个功能单元的指令选择信号,选择并输出相应的功能单元指令;和
指令预处理模块,用于对来自所述指令判断及选择模块的各个功能单元的指令进行预处理译码,输出各个相应功能单元的指令预处理信号,
其中所述指令分配模块进一步包括:分配标志处理单元、指令分配使能单元和分配标志寄存单元,
所述分配标志处理单元,用于将输入的上一个周期指令分配信号pre_flag(n),其中n=1,2,3…8、指示新的取指包指令进入分配单元的信号NEW_FP以及分配指示信号PC_v3进行逻辑处理,生成指示本周期的指令分配信号fix_flag(n),其中n=1,2,3…8;
所述指令分配使能单元,用于根据输入的各个功能单元的指令的p位和来自所述分配标志处理单元的本周期指令分配信号,判断本周期需要分配的执行包,生成指令分配使能信号inst(n)_dispatch、下一个周期的指令分配信号next_flag(n)以及流水线停顿指示信号;
所述分配标志寄存单元,用于记录本周期分配指令的标志信息,
其中,所述指令判断及选择模块进一步包括:判断指令的目的单元、指令选择信号生成单元和指令选择单元,
所述判断指令的目的单元,用于根据输入的功能单元的指令集合和来自所述指令分配模块的指令分配使能信号,判断所述功能单元的指令集合中与各个功能单元相匹配的指令,输出指令的目的单元信号;
所述指令选择信号生成单元,用于将来自所述判断指令的目的单元的指令的目的单元信号转换为各个功能单元的指令选择信号以及NOP指令选择信号;
所述指令选择单元,用于根据来自所述指令选择信号生成单元的指令选择信号,选择并输出与各个功能单元相匹配的功能单元指令。
2.如权利要求1所述的装置,其特征在于,所述分配标志处理单元生成指示本次分配指令的标志信号fix_flag(n)的逻辑处理进一步包括:
fix_flag(n)=NEW_FP?(PC_v3>=n):pre_flag(n),
当NEW_FP为真时,则判断PC_v3是否大于等于n,
当PC_v3>=n时,则fix_flag(n)为1;当PC_v3小于n时,则fix_flag(n)为0;
当NEW_FP为假时,则fix_flag(n)=pre_flag(n),其中n=1,2,3…8。
3.如权利要求1所述的装置,其特征在于,所述指令分配使能单元生成指令分配使能信号inst(n)_dispatch进一步包括:
inst(n)_dispatch=next_flag(n)&(~fix_flag(n)),
当第n条指令在上一个周期没有分配过,而在本周期的分配标志为完成分配,则第n条指令在本周期分配,
其中,“&”表示逻辑与,“~”表示逻辑取反。
4.如权利要求1所述的装置,其特征在于,所述指令分配使能单元生成下一个周期的指令分配信号next_flag(n)进一步包括:
next_flag(n)=(next_flag(n-1)&p(n-1))|fix_flag(n-1),
当第n-1条指令在上一个周期分配过,或者第n-1条指令本周期分配并且第n条指令和第n-1条指令并行,则第n条指令已经分配过或者正要分配,其中n=1,2,3…8,
当n=1时,next_flag1=1,表示第1条指令已经分配过或者正要分配,
其中,所述p(n-1)表示第n条指令和第n-1条指令的执行顺序关系,当p(n-1)=1表示第n条指令和第n-1条指令并行执行,p(n-1)=0表示第n条指令在第n-1条指令的后一个周期执行,
其中,“|”表示逻辑或。
5.如权利要求1所述的装置,其特征在于,所述判断指令的目的单元判断所述功能单元的指令集合中与各个功能单元相匹配的指令进一步包括:
当所述指令分配使能信号有效,则根据指令的特征码位判断与所述功能单元的指令集合中各条功能指令的相匹配的目的功能单元;
当所述指令分配使能信号无效或者特征码位非法,则判断所述功能单元的指令与目的功能单元不匹配。
6.如权利要求1所述的装置,其特征在于,所述指令选择单元进一步包括L1功能单元的指令选择器、D1功能单元的指令选择器、M1功能单元的指令选择器、S1功能单元的指令选择器、L2功能单元的指令选择器、D2功能单元的指令选择器、M2功能单元的指令选择器、S2功能单元的指令选择器和NOP指令选择器,
所述各个功能单元的指令选择器根据所述指令选择信号的格式,对功能单元的指令进行选择,当所述指令选择信号的第i位为1时,选择第i+1条指令作为该功能单元匹配的指令,其中,0≤i≤N-1,i为整数,N=1,2,…8;
当所述指令选择信号的第8位为1或者不是以上任何一种情况,则选择单周期NOP指令。
7.如权利要求1所述的装置,其特征在于,所述指令预处理模块进一步包括L1功能单元的指令预处理器、D1功能单元的指令预处理器、M1功能单元的指令预处理器、S1功能单元的指令预处理器、L2功能单元的指令预处理器、D2功能单元的指令预处理器、M2功能单元的指令预处理器、S2功能单元的指令预处理器和NOP指令预处理器,
所述各个功能单元的指令预处理器进行预处理译码进一步包括:
根据来自所述指令选择单元的各个功能单元指令的指令格式,从所述指令中选择地址信号作为预处理信号输出。
8.如权利要求7所述的装置,其特征在于,所述预处理信号包括源1寄存器地址、源2寄存器地址和目的寄存器地址。
CN201010238659.2A 2010-07-26 2010-07-26 一种指令分配和预处理指令译码的装置 Active CN101901130B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010238659.2A CN101901130B (zh) 2010-07-26 2010-07-26 一种指令分配和预处理指令译码的装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010238659.2A CN101901130B (zh) 2010-07-26 2010-07-26 一种指令分配和预处理指令译码的装置

Publications (2)

Publication Number Publication Date
CN101901130A CN101901130A (zh) 2010-12-01
CN101901130B true CN101901130B (zh) 2014-01-08

Family

ID=43226687

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010238659.2A Active CN101901130B (zh) 2010-07-26 2010-07-26 一种指令分配和预处理指令译码的装置

Country Status (1)

Country Link
CN (1) CN101901130B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117197B (zh) * 2011-03-04 2012-08-15 中国电子科技集团公司第三十八研究所 高性能通用信号处理器指令分配装置
CN103346861B (zh) * 2013-07-01 2016-06-15 深圳市元征科技股份有限公司 一种汽车数据通信方法及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122722A (en) * 1992-12-29 2000-09-19 Philips Electronics North America Corporation VLIW processor with less instruction issue slots than functional units
EP1148414A2 (en) * 2000-03-30 2001-10-24 Agere Systems Guardian Corporation Method and apparatus for allocating functional units in a multithreated VLIW processor
CN101751244A (zh) * 2010-01-04 2010-06-23 清华大学 微处理器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122722A (en) * 1992-12-29 2000-09-19 Philips Electronics North America Corporation VLIW processor with less instruction issue slots than functional units
EP1148414A2 (en) * 2000-03-30 2001-10-24 Agere Systems Guardian Corporation Method and apparatus for allocating functional units in a multithreated VLIW processor
CN101751244A (zh) * 2010-01-04 2010-06-23 清华大学 微处理器

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Compiler Optimization on VLIW Instruction Scheduling for Low Power;LEE,Chingren et al.;《ACM Transactions Design Automation of Electronic Systems》;20030430;第8卷(第2期);252-268 *
LEE,Chingren et al..Compiler Optimization on VLIW Instruction Scheduling for Low Power.《ACM Transactions Design Automation of Electronic Systems》.2003,第8卷(第2期),252-268.
周志雄等.寄存器堆互连的VLIW结构及其指令调度算法.《计算机学报》.2008,第31卷(第1期),127-132.
寄存器堆互连的VLIW结构及其指令调度算法;周志雄等;《计算机学报》;20080131;第31卷(第1期);127-132 *

Also Published As

Publication number Publication date
CN101901130A (zh) 2010-12-01

Similar Documents

Publication Publication Date Title
KR100236527B1 (ko) 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리
US20020049894A1 (en) Method and apparatus for interfacing a processor to a coprocessor
EP0426393A2 (en) Instructing method and execution system
US5091853A (en) Chained addressing mode pipelined processor which merges separately decoded parts of a multiple operation instruction
US6725357B1 (en) Making available instructions in double slot FIFO queue coupled to execution units to third execution unit at substantially the same time
KR19980703033A (ko) 프로세서
JPH0895824A (ja) データ処理装置及びデータ処理方法
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
CN101802779A (zh) 具有可重新组构的浮点单元的处理器
CN101957744A (zh) 一种用于微处理器的硬件多线程控制方法及其装置
EP0492968B1 (en) Multiple instruction issue
US20030005261A1 (en) Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US6615339B1 (en) VLIW processor accepting branching to any instruction in an instruction word set to be executed consecutively
CN101901130B (zh) 一种指令分配和预处理指令译码的装置
JPH1165839A (ja) プロセッサの命令制御機構
US5745725A (en) Parallel instruction execution with operand availability check during execution
KR100267089B1 (ko) 스칼라/벡터연산이조합된단일명령복수데이터처리
JPH10143365A (ja) 並列処理装置及びその命令発行方式
US20070028077A1 (en) Pipeline processor, and method for automatically designing a pipeline processor
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
US6789185B1 (en) Instruction control apparatus and method using micro program
JP2003084973A (ja) 並列演算処理装置及び並列演算処理用の命令コードのデータ構造、並びに並列演算処理用の命令コードの生成方法
JP3534987B2 (ja) 情報処理装置
WO2021061626A1 (en) Instruction executing method and apparatus
CN116360855A (zh) 一种指令转换电路及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant