具体实施方式
下面将参考附图描述本发明的实施例。首先将给出应用到实施例上的本发明的概论,然后将描述实施例的具体内容。
图1是应用到实施例上的本发明的原理图。
在根据本发明的可重构处理器中,执行运算处理的算术和逻辑单元组由序列器(未示出)控制。用于确定算术和逻辑单元组的运算的多条设置信息被提前设置,其中,所述多条设置信息例如是包括在算术和逻辑单元组中的多个算术和逻辑单元之间的联系与每个算术和逻辑单元所执行的处理。序列器根据预定的切换条件切换这些条设置信息,以控制算术和逻辑单元组的运算。
算术和逻辑单元组包括算术和逻辑单元模块1a、1b、1c和1d,切换条件关联部件2以及切换条件代码输出部件3,其中每个算术和逻辑单元模块1a、1b、1c和1d执行唯一的运算进程。
每个算术和逻辑单元模块1a、1b、1c和1d执行例如算术运算、逻辑运算、计数和地址生成的进程,并且经由切换条件关联部件2连接到切换条件代码输出部件3。每当运算终止时,每个算术和逻辑单元模块1a、1b、1c和1d都将产生的运算结果输出到切换条件代码输出部件3。
切换条件关联部件2将来自算术和逻辑单元模块1a的输出关联到切换条件代码,所述输出被用作切换算术和逻辑单元组的运算状态的切换条件。在这个示例中,切换条件代码被表述为状态1、状态2、状态3和状态4。状态1关联部件2a将来自算术和逻辑单元模块1a的输出关联到状态1。也就是说,根据来自算术和逻辑单元模块1a的输出,产生作为切换条件代码的状态1。类似地,状态2关联部件2b将来自算术和逻辑单元模块1b的输出关联到状态2,状态3关联部件2c将来自算术和逻辑单元模块1c的输出关联到状态3,状态4关联部件2d将来自算术和逻辑单元模块1d的输出关联到状态4。
切换条件代码输出部件3接受来自算术和逻辑单元模块1a、1b、1c和1d的输出并判定切换条件是否成立,其中,切换条件代码输出部件3经由切换条件关联部件2连接到算术和逻辑单元模块1a、1b、1c和1d。例如,切换条件代码输出部件3将来自算术和逻辑单元模块的输出与预定参考值相比较。如果两者匹配,则切换条件代码输出部件3判定切换条件成立。此时切换条件代码输出部件3输出与来自算术和逻辑单元模块的输出相关联的切换条件代码。输出的切换条件代码指示序列器使得算术和逻辑单元组要转变到的下一个状态。
下面将描述具有上述结构的可重构处理器的操作。
切换条件关联部件2将来自算术和逻辑单元模块1a、1b、1c和1d的输出关联到切换条件代码,所述输出被用作切换算术和逻辑单元组状态的条件。算术和逻辑单元模块1a、1b、1c和1d将运算结果输出到切换条件代码输出部件3,其中,来自算术和逻辑单元模块1a、1b、1c和1d的输出被切换条件关联部件2设置为切换条件。每当算术和逻辑单元模块1a、1b、1c和1d进行运算时,切换条件代码输出部件3从产生的运算结果判定切换算术和逻辑单元组状态的条件是否成立。如果切换算术和逻辑单元组状态的条件成立,则切换条件代码输出部件3输出与条件相关联的切换条件代码。输出的切换条件代码被输入到序列器中。序列器基于切换条件代码来切换算术和逻辑单元组的状态。
如上所述,每当算术和逻辑单元模块运行时,都要判定切换条件是否成立。结果,可在执行应用的期间内的任何时刻切换算术和逻辑单元组的状态。而且,可以同时对多个算术和逻辑单元模块进行判定切换条件是否成立。与传统的可重构处理器相比,这样做缩短了处理时间,其中,在传统的可重构处理器中,在一连串进程终止之后,判定切换条件是否成立。
可通过将包括在算术和逻辑单元组中的多个算术和逻辑单元模块或专用模块组合起来,以实现包括在根据本发明的可重构处理器内的切换条件关联部件2和切换条件代码输出部件3,其中,在专用模块中拥有用于判定切换条件是否成立的机制。例如,用于执行预定运算的算术和逻辑单元,用于接受从算术和逻辑单元输出的值、将其与参考值相比较并输出判决结果作为标记的比较器,用于根据从比较器输出的标记输出预定切换条件代码的选择器等等被组合起来以判定切换条件是否成立。专用切换条件判决电路可位于算术和逻辑单元组外部。
下面将参考附图详细描述本发明实施例的具体内容。
图2是示出了根据本发明实施例的可重构处理器的整体结构的方框图。
可重构处理器包括算术和逻辑单元组10和序列器20,其中,算术和逻辑单元组10包括多个排列的算术和逻辑单元,序列器20用于控制包括在算术和逻辑单元组10中的每个算术和逻辑单元模块的运算。
算术和逻辑单元组10包括配置存储器11、配线和开关12、组分算术和逻辑单元模块13a、13b、...和13c、数据存储器件13d、13e等等,以及计数器13f。
配置存储器11存储设置信息以设置算术和逻辑单元组10的运算,所述设置信息例如是要被包括在算术和逻辑单元组10中的每个算术和逻辑单元模块执行的内容、各个算术和逻辑单元模块之间的配线通路以及运算所必需的数据。一条设置信息对应于算术和逻辑单元组10的一种电路配置“状态”。多个状态设定在配置存储器11中。算术和逻辑单元组10运行在序列器20所指定的状态。每个算术和逻辑单元模块以及配线和开关12根据在配置存储器11中设置的内容运行。配线和开关12包括配线部件和切换部件,所述配线部件和切换部件根据在配置存储器11中设置的内容,在各个算术和逻辑单元模块之间进行连接并切换连接。每个算术和逻辑单元模块13a、13b、...和13c对经由配线和开关12输入的输入信号执行预定的运算,并经由配线和开关12输出结果。算术和逻辑单元模块具有数据存储器件13d、13e等等和计数器13f,其中,数据存储器件13d、13e等等为存储器或寄存器,用于存储数据处理所需的数据。此外,每个算术和逻辑单元模块具有与外部单元、地址生成器等交换数据和地址的接口。在图2中,配置存储器1 1位于算术和逻辑单元组10内。然而,配置存储器11也可位于序列器20内,或者位于算术和逻辑单元组10与序列器20外部。此外,配置存储器11可被分割以分别位于算术和逻辑单元组10与序列器20内。
序列器20包括状态控制部件21、状态表22和当前状态地址寄存器23。
状态控制部件21响应于从算术和逻辑单元组10输入的切换条件信号,设置算术和逻辑单元组10下一步将要转变到的状态。该切换条件信号包括切换条件发生的通知和切换条件代码。状态表22中使用的地址与配置存储器11中使用的地址相同。状态表22中的每个条目存储指示转变到下一条目的操作代码和可能被选择的条目的地址。当前状态地址寄存器23存储指示当前状态的地址(在状态表22和配置存储器11中)。
在上述可重构处理器中,算术和逻辑单元组10运行在这样的状态中,所述状态建立在序列器20所指定的配置存储器11中的特定地址内的设置信息基础上。当基于来自算术和逻辑单元模块的输出而做出切换条件成立的判决时,包括切换条件代码的切换条件信号被从算术和逻辑单元组10发送到序列器20。
在序列器20中,切换条件信号启动状态控制部件21,从切换条件代码和状态表22中的条目确定算术和逻辑单元组10下一步将要转变到的状态,计算登记了指示状态的设置信息的地址(目标地址),并在当前状态地址寄存器23、状态表22和配置存储器11中设置所计算的目标地址。结果,配置存储器11中的特定地址被改变为目标地址,且算术和逻辑单元组10转变到该状态。
下面将详细描述算术和逻辑单元组10。首先将描述配置存储器11,然后将描述配线和开关12。
图3示出了根据本发明实施例的配置存储器的结构。
配置存储器11存储用于确定每个状态中算术和逻辑单元组10的运算的配置数据。在这个示例中,根据状态存储了配置数据111、112、113、114等等。每个状态通过地址管理。
对于每个状态,存储了运算模式111a、可重构电路设计信息111b、状态1(111c)、状态2(111d)、状态3(111e)和状态4(111f)。运算模式111a是标识该状态的信息。可重构电路设计信息111b是指示在该运算模式中可重构电路内的每个算术和逻辑单元的运算以及各个算术和逻辑单元之间联系的设计信息。该电路配置的下一个状态的备选项被描述为状态1(111c)、状态2(111d)、状态3(111e)和状态4(111f)。实际上,配置存储器11中的地址是直接记录的,或者记录了可通过执行运算直接产生这些地址的数据。每个备选状态与切换条件相关联。当切换条件成立时,执行转变到相应状态的进程。如何将备选状态关联到切换条件将在后文描述。
在这个示例中,登记的备选状态的数目为4,但是可登记任意数目的备选状态。
下面将描述配线和开关12。图4示出了根据本发明实施例的配线和开关的结构示例。
在算术和逻辑单元组10的输入侧,有触发器(FF)以及位于触发器前面的选择器。在这个示例中,选择器(SEL)12a和12c以及FF 12b和12d位于算术和逻辑单元模块13a的输入侧。类似地,SEL 12e和FF 12f位于数据存储器件(存储器)13d的输入侧。算术和逻辑单元或存储器的输出端口连接到每个选择器的输入端口。
算术和逻辑单元组的配置由上述配置存储器以及配线和开关确定。
下面将描述算术和逻辑单元组10的配置示例。图5是示出了根据本发明实施例的算术和逻辑单元组的配置示例的方框图,其中,算术和逻辑单元组用于判定切换条件是否成立。在图5中,未示出包括在配线和开关12中的选择器和FF。
通过这个算术和逻辑单元组10的配置示例,基于从算术和逻辑单元模块131输出的运算结果来判定切换条件是否成立,并且产生预定的切换条件代码。算术和逻辑单元组10包括用于执行预定运算的算术和逻辑单元模块131、用于比较输入值与参考值的算术和逻辑单元模块132、用于输出预定的“切换条件代码”的算术和逻辑单元模块133以及用于延时输入信号并将其作为“切换条件发生”的通知输出的延时单元134。从算术和逻辑单元模块131输出的运算结果由配线和开关12输入到算术和逻辑单元模块132中,算术和逻辑单元模块132判定切换条件是否成立。从算术和逻辑单元模块132输出的切换条件是否成立的判决结果由配线和开关12输入到算术和逻辑单元模块133和延时单元134中,其中,算术和逻辑单元模块133产生“切换条件代码”,延时单元134产生“切换条件发生”的通知。
在以这种方式配置的算术和逻辑单元组10中,由算术和逻辑单元模块131执行的运算结果被输出到算术和逻辑单元模块132中。算术和逻辑单元模块132将输入的运算结果与其预先保存的参考值相比较,并将结果作为切换条件是否成立的判决结果输出。例如,如果运算结果为0,则输出判决切换条件成立。当输入切换条件成立的判决时,算术和逻辑单元模块133输出“切换条件代码”。延时单元134延时输入并将其输出。也就是说,当从算术和逻辑单元模块132输出切换条件成立的判决时,从算术和逻辑单元模块133输出“切换条件代码”并且在经过预定延时时间后从延时单元134输出“切换条件发生”的通知。以这种方式,指示切换条件成立的切换条件信号被输入到序列器20中。可以任意设置由延时单元134引起的延时时间。例如,该延时时间可以为0。
在这个示例中,算术和逻辑单元模块132基于从算术和逻辑单元模块131输入的运算结果来判定切换条件是否成立。然而,判定切换条件是否成立的机制也可位于算术和逻辑单元模块131中。这样的机制可位于所有的算术和逻辑单元模块中,或者只位于其中一部分中。
此外,在这个示例中,算术和逻辑单元模块133根据从算术和逻辑单元模块132输出的判决结果,产生固定的切换条件代码。然而,切换条件是否成立的判决可以从多个算术和逻辑单元模块输出到产生切换条件代码的算术和逻辑单元模块133中。在这种情况下,产生的切换条件代码取决于哪一个算术和逻辑单元模块输出切换条件是否成立的判决。结果,如果算术和逻辑单元组将转换到的下一个状态存在n个备选,则可以基于n个有关切换条件是否成立的判决中的最大值来确定n个备选中的一个,通过n个备选中所确定的这一个可获得真值。
另外,在这个示例中,有一个切换条件判决电路。然而,可以有任意数目的切换条件判决电路,其中,每个电路都与上述的一个相同。通过拥有多个切换条件判决电路,可以同时进行多个切换条件是否成立的判决。
下面将依次描述根据第一到第五实施例的机制,在所述机制中,算术和逻辑单元组进行切换条件是否成立的判决。在下面的描述中,这些机制将通过简化的电路示出,但实际上这些机制包括如图4所示的算术和逻辑单元模块以及配线和开关。
[第一实施例]
在第一实施例中,判定切换条件是否成立的算术和逻辑单元模块与切换条件代码之间的关系由硬件固定。
图6示出了根据第一实施例的切换条件判决电路的结构。在根据第一实施例的切换条件判决电路中,来自算术和逻辑单元模块301、302、303和304的输出被输入到选择器开关401中。
每个算术和逻辑单元模块301、302、303和304执行预定运算。此外,每个算术和逻辑单元模块301、302、303和304将运算结果与切换条件在该点成立的参考值相比较,并将其是否匹配,也即切换条件是否成立作为标记信息输出。每个算术和逻辑单元模块301、302、303和304可以是在程序块中执行这些进程的算术和逻辑单元模块,或者是只执行运算的算术和逻辑单元与进行比较的比较器的组合。
选择器开关401有四个输入端。由硬件产生的固定的状态值被输入到每个输入端中。例如,连接到第一输入端的算术和逻辑单元模块总是产生状态1。类似地,连接到第二输入端的算术和逻辑单元模块总是产生状态2,连接到第三输入端的算术和逻辑单元模块总是产生状态3,连接到第四输入端的算术和逻辑单元模块总是产生状态4。结果,算术和逻辑单元模块301、302、303和304分别关联到状态1、2、3、4。
在上述的切换条件判决电路中,如果设置标记信息例如从算术和逻辑单元模块301输出,则从选择器开关401输出状态1。如果以这种方式设置从每个算术和逻辑单元模块输出标记信息,则输出与该算术和逻辑单元模块相关联的状态。
在这个示例中,选择器开关401是选择四个输入信号中的一个的4选1开关。然而,也可使用另一种类型的选择器开关。选择器开关上的输入端或输出端的数目没有限制。例如,可使用4选1或7选4选择器开关。
如果同时指示多个状态的条件成立,则选择具有更高优先级的状态并输出。在这种情况下,优先级预先保存在硬件中,或预先注册为设置信息。
[第二实施例]
在第一实施例中,通过使用来自算术和逻辑单元模块的输出判定切换条件是否成立。在第二实施例中,还使用来自计数器模块的输出判定切换条件是否成立。图7示出了根据第二实施例的切换条件判决电路的结构。
在根据第二实施例的切换条件判决电路中,来自算术和逻辑单元模块306和308以及计数器模块305和307的输出被输入到选择器开关402中。选择器开关402的操作与第一实施例中的选择器开关401相同。
下面将描述计数器模块305和307的结构。图8是示出了第二实施例中计数器模块的结构示例的方框图。
每个计数器模块包括用于保存切换条件在该点成立的参考值的参考值寄存器501、用于计数例如时钟信号的输入信号数目的计数器502以及用于将计数器502的值与参考值寄存器501保存的参考值相比较,并将比较结果作为标记信息输出的标记生成器(比较器)503。参考值寄存器501将来自算术和逻辑单元模块的输出或设置为配置数据的数据保存为参考值。
在每个具有上述结构的计数器模块中,标记生成器(比较器)503将计数器502指示为预定输入信号数目的计数结果的值与参考值寄存器501保存的参考值相比较。如果两者匹配,则标记生成器(比较器)503输出指示切换条件成立的标记信息。
当设置从具有上述结构的计数器模块305和307的其中之一输出标记信息或者从算术和逻辑单元模块306和308的其中之一输出标记信息时,选择器开关402输出响应的状态。这与第一实施例相同。
在这个示例中,来自算术和逻辑单元模块与计数器模块的输出被用于判定切换条件是否成立。然而,只有来自计数器模块的输出可用于判定切换条件是否成立。如果算术和逻辑单元模块是地址生成器,则可以同样方式建立切换条件判决电路,在所述切换条件判决电路中,基于由每个地址生成器产生的预定地址来判定切换条件是否成立。
[第三实施例]
在第一和第二实施例中,算术和逻辑单元模块与状态之间的联系由硬件固定。然而在第三实施例中,算术和逻辑单元模块与状态之间的联系以可编程方式设置。图9示出了根据第三实施例的切换条件判决电路的结构。
在根据第三实施例的切换条件判决电路中,来自第一实施例中算术和逻辑单元模块301、302、303和304的输出被输入到可编程开关403中。可编程开关403经由总线接受来自程序信息寄存器404的设置信息,并输出与算术和逻辑单元模块301、302、303和304其中之一的标记信息相关联的状态,其中,程序信息寄存器404存储用于确定算术和逻辑单元模块与状态之间的对应关系的程序信息,标记信息由设置信息设定。
图10示出了第三实施例中可编程开关的结构示例。
可编程开关403包括与(AND)电路、选择器和或(OR)电路。
每个AND电路计算来自算术和逻辑单元模块的输出与状态的逻辑积,并将其输出到为算术和逻辑单元模块而设置的选择器中。例如,AND4031计算来自算术和逻辑单元模块的输出FLAG1与状态1的逻辑积,AND 4032计算FLAG1与状态2的逻辑积,AND 4033计算FLAG1与状态3的逻辑积,AND 4034计算FLAG1与状态4的逻辑积。类似地,AND4035计算来自算术和逻辑单元模块的输出FLAG4与状态1的逻辑积,AND 4036计算FLAG4与状态2的逻辑积,AND 4037计算FLAG4与状态3的逻辑积,AND 4038计算FLAG4与状态4的逻辑积。以同样方式,对于输出FLAG2和FLAG3的算术和逻辑单元模块,也设置了AND电路。
选择器403a、...和403b中的每一个接受来自为每条FLAG信息而设置的AND电路的输出,并且基于存储在程序信息寄存器404a中的程序信息,选择并输出AND电路之一的输出。例如,对于FLAG1,有选择器403a,选择器403a选择并输出程序信息所设置的AND电路4031、4032、4033和4034之一的输出。存储在程序信息寄存器404a中的信息与存储在设置了多个电路配置的配置存储器中的信息相同。类似地,对于FLAG4,有选择器403b,选择器403b选择并输出程序信息所设置的AND电路4035、4036、4037和4038之一的输出。
OR电路403c计算选择器403a、...和403b的输出的逻辑和,并将其作为下一个状态输出。
通过以这种方式使用可编程开关将算术和逻辑单元模块关联到状态,可以更自由地进行设计。
[第四实施例]
在第一到第三实施例中,通过使用来自算术和逻辑单元模块或计数器模块的输出判定切换条件是否成立。然而在第四实施例中,当存储器接口读/写预定存储器或预定数据时,切换条件成立。图11示出了根据第四实施例的切换条件判决电路的结构。
根据第四实施例的切换条件判决电路包括用于在存储器部件601被读出时判定切换条件是否成立的比较器602、参考值寄存器603和可变移位器604,以及用于在存储器部件601被写入时判定切换条件是否成立的比较器605、参考值寄存器606和可变移位器607。
比较器602和605中的每一个在读出或写入时间内接受地址或数据,将其与参考值寄存器603或606中保存的参考值相比较,并判定切换条件是否成立,其中,在参考值点切换条件成立。
可变移位器604和607中的每一个接受比较器602或605产生的指示切换条件是否成立的标记信息,将其延时预定时间并输出。延时时间是可变的。结果,算术和逻辑单元组的状态可在例如写入存储器部件601的动作终止时切换。
在具有上述结构的切换条件判决电路中,通过在存储器部件601中预先设置例如预定地址的数据,或者在参考值寄存器603或606中预先设置指示存储数据结束的特殊代码,当执行从预定地址中读出的操作或写入预定地址的操作时或者当读出或写入预定数据时,切换条件成立。
比较器602和605中的每一个将地址或数据与参考值寄存器603或606中保存的参考值相比较,并判定切换条件是否成立。每个可变移位器604和607将指示切换条件成立的标记信息延时任意时间并输出。
[第五实施例]
在第五实施例中,将描述多重FOR语句的执行情况。图12示出了根据第五实施例的切换条件判决电路的结构。
在根据第五实施例的切换条件判决电路中,多个计数器模块通过进位输出串联。在这个示例中,来自计数器模块701的进位输出被输入到计数器模块702中,来自计数器模块702的进位输出被输入到计数器模块703中。每个计数器模块的结构与图8中所示的计数器模块相同。当计数值匹配切换条件在该点成立的参考值时,每个计数器模块输出标记信息并产生进位输出。此外,每个计数器模块701、702和703与状态相关联。在这个示例中,计数器模块701、702和703分别关联到状态2、3和4。
在具有上述结构的切换条件判决电路中,当计数器模块701达到预定参考值时,对应于状态2的标记信息被输出,且进位被输出到计数器模块702。此时计数器模块702开始计数。当计数器模块702达到参考值时,对应于状态3的标记信息被输出,且进位被输出到计数器模块703。此时计数器模块703开始计数。当计数器模块703达到参考值时,对应于状态4的标记信息被输出。因此,即使每个计数器模块701、702和703中可使用的比特位很小,计数器模块701、702和703的整体可使用的比特位也较大。此外,通过定义根据状态的预定应用,当每个切换条件成立时可以执行进程。因此,可以执行多重FOR语句中的每一个。
例如,为了执行多重FOR语句
FOR(条件A){
状态3
FOR(条件B){
状态2
FOR(条件C){
状态1
}
}
}
在最内层FOR语句中执行的进程表示为状态1,在最内层FOR语句外层的FOR语句中执行的进程表示为状态2,在该层FOR语句外层的FOR语句中执行的进程表示为状态3。此外,计数器模块701判定切换条件C是否成立,计数器模块702判定切换条件B是否成立,计数器模块703判定切换条件A是否成立。
结果,当切换条件C成立且计数器模块701输出标记(状态2)时,状态1终止且开始执行状态1外层的FOR语句中的状态2。类似地,当切换条件B成立且计数器模块702输出标记(状态3)时,状态2终止且开始执行状态3。通常是不可能执行多重FOR语句的。然而,通过以这种方式使用串联的计数器模块中的每一个作为多重FOR语句的其中之一的计数器,可以容易地执行多重FOR语句。
在本发明中,来自包括在算术和逻辑单元组中的算术和逻辑单元模块的输出被预先关联到切换条件代码,其中,基于所述切换条件代码来切换算术和逻辑单元组的运算状态。每当算术和逻辑单元模块运行时,都要判定切换条件是否成立。如果切换条件成立,则输出相应的切换条件代码。因此,每当算术和逻辑单元模块运行时,都可以判定切换条件是否成立。也就是说,可以更自由地判定切换条件是否成立。结果,可以容易地实现期望的应用。
另外,可以同时对多个算术和逻辑单元模块进行切换条件是否成立的判决。这样做与在一连串进程终止之后再判定切换条件是否成立的情况相比,缩短了处理时间。
前述应当认为只是对本发明原理的说明。另外,因为本领域的技术人员可以容易地进行大量修正和改变,所以本发明并不希望被严格限制在所图示和描述的构造和应用上,因此,所附权利要求和其等同物中所有合适的修正和等同物都可认为落在本发明的范围内。