可配置的硬件块的制作方法

文档序号:6419163阅读:225来源:国知局
专利名称:可配置的硬件块的制作方法
技术领域
本发明涉及一种如权利要求1的前序部分所述的装置,也即可配置的硬件块,它被设计用来根据其配置读出存于存储装置之内的数据,并对读出的数据进行算术及/或逻辑处理,然后把表示该处理结果的数据写入所述的存储装置。
长期以来,我们已经知道有许多实施形式的可配置硬件块。另外,诸如PAL(可编程阵列逻辑)、GAL(普通阵列逻辑)等所谓的现场可编程的逻辑元件也被视为这种硬件块。
可编程的硬件块也可以应用在程控单元之中;已知它们可应用在所谓的>S<puter之中。
直到前不久,诸如微处理器、微控制器等程控单元几乎都是按照已知的Von-Neumann模型进行设计的。尽管(譬如根据Harvard-模型)已脱离装设分开的代码及数据存储区,但现今在执行(相关作用或操作的)指令时几乎都是纯粹按顺序的。
指令的顺序处理限制了处理指令的最大速率。
通过所谓的RISC处理器可实现非常高的速率。该处理器具有缩减的指令系统,并由此可实现用固定连接的硬件来代替通常被用来对需处理的指令进行解码和执行的微程序。这还可以实现非常快而有效地工作的指令流水线和指令执行单元,这样,平均每个处理器脉冲就能执行将近一个指令。然而,由于前后的处理和结果都是按顺序的,所以即便利用RISC处理器也不能实现每处理器脉冲执行一个指令。
每处理器脉冲能处理多于一个指令的程控单元为上文已经提到的>S<puter。譬如在EP 0825540 A1中就曾讲述过这种>S<puter。
>S<puter的基本结构如图3所示,下面参考附图来对此进行讲述。
出于完整性的原因,需要指出的是,此处只部分地示出和讲述所述的>S<puter、尤其是其处理指令的部分(针对当前所考察的可配置的硬件块,只讲述对其有意义的部分)。
图3所示的>S<puter包括一个预解码单元1、指令缓冲器2、解码重命名及装载单元3、s语句变化单元(s单元)4、数据高速缓冲器5、以及存储器接口6,其中,s单元4包括有结构编程缓冲器(可编程结构缓冲器)41、具有可编程结构的功能单元42、整型/地址指令缓冲器43和寄存器块(整型寄存器文件)44。
所述>S<puter的特殊性尤其在于其s单元4,准确地说是功能单元42。该功能单元42是一种可结构化的硬件,它可根据>S<puter所执行的指令或指令序列进行动态地配置,使得能够执行由指令或指令序列所规定的作用或操作。
由>S<puter执行的指令(准确地说是表示该指令的代码数据)从图中未示出的存储器出发,经过存储器接口6到达预解码单元1,并在此进行预解码;在此,譬如可以在所述的代码数据中插入一些信息,该信息可以使稍后在解码重命名及装载单元3中的解码变得更容易。然后,所述的代码数据经过指令缓冲器2到达该解码重命名及装载单元3,并在此对由代码数据表示的指令的执行进行预处理。该预处理包括代码数据的解码、功能单元42的配置或结构化、整型寄存器文件44的初始化或管理、以及按需要进行配置的功能单元42的启动。
通过采用表示所需配置的配置数据来实现所述功能单元42的结构化或配置,而且该配置数据从解码重命名及装载单元3被写入到可编程结构缓冲器41中。所述表示所需配置的配置数据是在解码重命名及装载单元3内创建的;但它们也可以以编码的形式而包含在所述的编码数据之中。
功能单元42被设计用来从寄存器文件44及/或数据高速缓冲器5中读取数据,并对读出的数据进行算术及/或逻辑处理,然后把表示该处理结果的数据写入寄存器文件44和/或数据高速缓冲器5之中;因此它(即功能单元42)是一种如权利要求1的前序部分所讲述的可配置的硬件块。
在对寄存器文件44进行合适的初始化和对功能单元42进行合适的配置时,由所述功能单元42的工作来完成那些通过执行如下指令而导致的作用或操作,即所述寄存器文件44的初始化和功能单元42的配置就是基于该指令而产生的。
众所周知,对于通过执行指令所导致的作用而言,如果用相应配置的硬件(功能单元42)来执行它,则要比由常规程控单元在“标准”的算术逻辑单元(ALU)中执行这些指令时快得多。这在如下情形尤其是这样,即所述的硬件(功能单元42)作如此配置,使得通过其工作可实现与执行多个相继的指令(包括多个指令的宏指令)相一致的结果。
有关>S<puter的构造、功能以及作用方式的详细情况可以从所述的EP 0825540 A1中查取。
出于完整性的原因,此处应指出的是,并不是所有由>S<puter执行指令时所导致的作用都能由功能单元42执行。尤其是诸如分支、转移、不操作、等待以及停止等被用于程序运行控制或监视流程控制的指令通常都是用常规的方式和方法来执行的。
不过,通过采用诸如功能单元42等可配置的硬件块,每时间单位通常可以比采用常规的程控单元要执行更多的、由执行指令所导致的作用,也就是说,每个处理器脉冲可以处理多于一个指令。
但是也存在一些应用,其中每时间单位可执行的作用数目利用上述类型的硬件块方案是不能提高的。
因此本发明的任务在于,对权利要求1的前序部分所述的硬件块作如下改进,使得该硬件块比其迄今的情形更加灵活和/或通用。
根据本发明,该任务由权利要求1的特征部分规定的特征来解决。
为此规定,硬件块可被置为与外部硬件进行交互作用。
这提高了性能,并扩宽了硬件块的应用可能性;因此,硬件块比在所述类型的常规硬件块情况下更加灵活和通用。
本发明的优选扩展方案由从属权利要求、下文的说明和附图给出。
下面参照附图并借助实施例来详细阐述本发明。


图1示出了下文将要详细讲述的硬件块的原理结构,图2示出了处于为某一应用而结构化的状态的、图1所示的硬件块,以及图3示出了>S<puter的原理结构。
下文将详细考察的硬件块为一种可配置的硬件块,它被设计用来根据其配置读出存于存储装置之内的数据,并对读出的数据进行算术及/或逻辑处理,然后把表示该处理结果的数据写入所述的存储装置;此外,它还可被置为独立地与外部硬件进行交互作用,并由此被置为如下一种硬件块,即它既可以在程控单元(譬如作为>S<puter的功能单元)或其它装置内灵活和通行地应用,也可以作为独立的单元(没有上级或下级控制器也行)而灵活和通行地应用,并因此在下文被称为UCB(通用配置块)。
对于由UCB从其读出数据以及由UCB向其写入数据的存储装置,它们可以装设在UCB之内或之外;在本实施例中,所述存储装置由图3所示的>S<puter的寄存器文件44构成。
UCB对该存储装置的读写访问优选地按脉冲方式来实现。UCB自身为一种位于存储装置输出和输入端之间的异步开关网络;UCB的组件异步地相互进行耦合。
在UCB投入运行之前,可优选地从UCB的外部对存储装置进行初始化;可以想见,也可由UCB自己来促使或实现存储装置的初始化。
UCB的原理结构如图1所示。
所示的UCB具有一个或多个算术单元AU1、AU2,一个或多个第一类型的比较单元CUA,一个或多个第一类型的多路转换器MUXA1、MUXA2、MUXA3,一个或多个第二类型的多路转换器MUXB,一个或多个多路分解器DEMUX,一个或多个脉冲发生单元TGU,以及一个或多个信令单元SU,其中在本实施例中,所述信令单元SU包括一个第一类型的多路转换器MUXA4和一个第二类型的比较单元CUB。
在本实施例中,所述的算术单元AU1、AU2具有两个输入端、一个输出端和一个控制端。算术单元AU1、AU2负责对经其输入端输入的输入信号进行算术和/逻辑处理。由算术单元AU1、AU2执行的操作可以被固定,或可以专门地调整(配置);该单元尤其包括有加法、减法、乘法、除法等算术运算,“与”连接、“或”连接、倒置、求补等逻辑连接,算术和逻辑变换运算,以及数据转接(把输入信号接通到输出端)。所述的算术单元AU1、AU2与诸如微处理器、微控制器等常规程控单元的算术/逻辑单元(ALU)是不同的;算术单元AU1、AU2所执行的操作是有限的,这样其结构可以较为简单。通过算术单元AU1、AU2的控制端,可以规定相关的算术单元是否要执行为其设定的操作。对于其执行取决于存在一定条件的指令来说,这可以为其实现实际的转换。所述的条件譬如为某一标志的状态如果标志被设置,则执行相关算术单元所负责的任务(譬如加法),否则不执行(或返回)。这种在下文被称为“条件指令”的指令可以取消很难运用的条件转移指令;这在稍后还要详细讲述。
在所示的实施例中,第一类型的比较单元CUA具有两个输入端和一个输出端。该比较单元CUA负责把其输入端上的信号或数据进行比较运算。由比较单元CUA执行的运算可以被固定,或可专门地进行调整(配置);该单元譬如包括有大于、大于/等于、小于、小于/等于、等于、以及不等于等比较,而且还包括对正确和错误的检验。比较单元CUA的输出端通过下文将详细讲述的多路分解器DEMUX而被接到算术单元AU1、AU2的控制端上。于是,算术单元AU1、AU2是否要执行为其设定需要执行的运算,取决于在比较单元CUA内所执行的操作的结果。
第一类型的多路转换器MUXA1、MUXA2、MUXA3及MUXA4,第二类型的多路转换器MUXB,以及多路分解器DEMUX被用来选择数据源及/或信号源和选择数据目标及/或信号目标。准确地说是-多路转换器MUXA1用来选择输入到算术单元AU1输入端的数据和/或信号的信源(在本实施例中可能的数据源和/或信号源为寄存器文件44及其它的算术单元),-多路转换器MUXA2用来选择输入到算术单元AU2输入端的数据和/或信号的信源(在本实施例中可能的数据源和/或信号源为寄存器文件44及其它的算术单元),-多路转换器MUXA3用来选择输入到比较单元CUA输入端的数据和/或信号的信源(在本实施例中可能的数据源和/或信号源为寄存器文件44及其它的算术单元),-多路转换器MUXA4用来选择输入到比较单元CUB输入端的数据和/或信号的信源(在本实施例中可能的数据源和/或信号源为寄存器文件44及其它的算术单元),-多路转换器MUXB用来选择输入到寄存器文件的数据和/或信号的信源(在本实施例中可能的数据源和/或信号源为算术单元、寄存器文件本身以及(在本实施例中经过所谓的装载/存储流水线LPL、SPL的)外部硬件),-多路分解器DEMUX用来选择从比较单元CUA输出的数据和/或信号的目标(在本实施例中可能的数据目标和/或信号目标为算术单元)。
第一类型的多路转换器具有多个输入端和两个输出端,第二类型的多路转换器具有多个输入端和一个输出端,而多路分解器具有一个输入端和多个输出端。
所述的多路转换器和多路分解器具有图1未示出的控制端,通过该控制端可以调整将哪些输入数据和/或输入信号接通到哪些输出端上。所述控制端的数目取决于各种分配组合所需要的数目;在32个输入端和两个输出端的情况下譬如需要10个控制端,以便将任意输入端上的信号和/或数据接通到任意的输出端上。在图3所示的>S<puter中采用UCB作为功能单元42的情况下,控制信号端优选地被连接在可编程结构缓冲器41上,这样,写到该缓冲器内的配置数据基本上可以直接地用于多路转换器控制。在可编程结构缓冲器41内存储的配置数据优选地还包括用于规定如下单元相应功能的配置数据,即算术单元AU1、AU2,比较单元CUA、CUB,脉冲发生单元TGU和/或信令单元SU。
利用算术单元AU1、AU2,第一类型的比较单元CUA,第一类型的多路转换器MUXA1、MUXA2、MUXA3,第二类型的多路转换器MUXB以及多路分解器DEMUX,UCB可以读出存于存储装置(寄存器文件44)之内的数据,并对读出的数据进行算术及/或逻辑处理,然后把表示该处理结果的数据写入所述的存储装置(寄存器文件44)。
正如上文已经讲述过的一样,UCB另外还能被置为独立地与外部硬件进行交互作用。在本实施例中,所述的交互作用在于-在对某些事件作出反应时,UCB可促使所述的存储装置接收由外部硬件提供的数据,以及-UCB可以将数据和/或信号输出到所述的外部硬件。
在本实施例中,所述的外部硬件由其它的UCB和/或一种下级或上级控制器和/或包含UCB的系统的其它单元(譬如传感器,A/D变换器,D/A转换器,计时器,中断控制器,需要控制的设备,等等)组成。
UCB与外部硬件的交互作用基本上(但-从图2可以看出-并不仅仅)是通过至少一个脉冲发生单元TGU和至少一个信令单元SU实现的。
所述至少一个脉冲发生单元TGU和至少一个信令单元SU表示了通往外部硬件的接口。正如稍后还要详细讲解一样,UCB由此可以独立地(无需接入上级控制器)与外部硬件进行交互作用。
脉冲发生单元TGU负责根据来自于UCB内部和/或外部的信号及/或数据来生成周期性或非周期性的脉冲信号。在本实施例中,输入信号为包含UCB的系统的周期性主脉冲MCLK和UCB应该与其协作的外部硬件部分的允许信号“允许”。但是,原则上可以采用任意多的、来自任意信源的输入信号来生成脉冲信号。为提高灵活性可以规定,在脉冲发生单元TGU的输入侧串接一个多路转换器;然后,可以根据应用从大量可能的输入信号中选择出输入到脉冲发生单元的输入信号。在本实施例中,由脉冲发生单元TGU生成的脉冲信号CLK是以脉冲信号的形式被本实施例中由寄存器文件44构成的存储装置所采用的;在该情形下,寄存器文件被设计用来在脉冲信号的时钟内实现写入数据和/或输出数据。由此,-由外部硬件(譬如A/D变换器)直接或间接地(譬如通过上文所述的装载/存储流水线LPL,SPL)提供的数据可以在由脉冲发生单元生成的脉冲信号时钟内、也即在准确定义的时间点上(譬如按照A/D变换器的变换端所发出的信号ADC_READY)被接收到寄存器文件44内,及/或-存于寄存器文件44内的数据可以直接或间接地(譬如通过装载/存储流水线LPL,SPL)输出到外部硬件(譬如输出到外部存储器,如图3所示的>S<puter中的数据高速缓冲器5)。
在本实施例中,信令单元SU由第一类型的多路转换器MUXA4和第二类型的比较单元CUB组成;该信令单元负责根据来自于UCB内部及/或外部的信号来生成一个或多个发出某些状态或事件信令的信号,该信号在下文被称作应答信号。在图1所示的UCB中只生成一个应答信号。该一个应答信号为比较单元CUB的输出信号,而所述比较单元CUB将串接在其输入侧的多路转换器MUXA4的两个输出信号进行比较。通过装设多路转换器MUXA4,可以根据应用从大量在此可采用的信号中选出作为生成应答信号的基础的信号。在本实施例中,所述可作为生成应答信号基础的信号另外还包括算术单元AU2的输出信号和寄存器文件44的输出信号;也可附加或选择地把任意的其它信号作为生成应答信号的基础。
由信令单元产生的应答信号被用来给外部硬件发出某些状态或事件信令。由此,譬如可以通过“就绪”信号发出UCB所执行的操作的执行结束信令。如果UCB必须执行的操作为如下操作,即这些操作需要在重复运行的循环内执行,那么通过该应答信号还可以发出所实行的循环运行的结束信令。也就是说,比较单元CUB还可以被用作循环计数器,当由UCB执行的操作已执行了与所实行的循环运行相对应的次数之后,则通过该计数发出信令。另外,所述的应答信号还可以被用作中断请求。
此外,比较单元CUB与第一类型的比较单元CUA保持最大程度的一致;不同的主要“只”是,其输出信号电平的标准调整可以是“错误”,而且输出信号电平的标准调整可优选地根据应用来进行调节。
图1所示的、并参考其进行说明的UCB只是被考虑用来阐述基本的结构。在实际中,所述的算术单元、比较单元、多路转换器、多路分解器以及必要时还有脉冲发生单元及信令单元等等可以装设比图1所示的情形多得多的数量。优选地,如此来选择UCB的大小,使得在通常情况下,由稍后还要详细讲述的所谓超块所导致的全部操作都可一次性地编入到该UCB之中。
装设在UCB中的数据回路和/或信号回路可以通过单个的线路或通过总线来构成,其中,如果在UCB的各个部分中或在总线系统中可以对需要考虑多少和/或哪些总线进行配置,则证明是比较优选的。
相对于常规配置的硬件块(可现场编程的逻辑),上述类型的UCB在很多方面被证明是有利的。
第一个优点在于,USB的数据连接单元能够执行复杂的操作。也就是说,它至少可以部分地背弃基于DNF(析取的标准形式)或面向表格的连接;每个算术单元(AU)都可实现一个或甚至多个算术逻辑连接。
此外,可在UCB内(其算术单元内)执行的操作比譬如在FPGA(现场可编程门阵列)的情况下要具有更大的规模(合成更大的块)。单个算术单元所执行的操作由此可以更快、更简单及更安全地与程控单元的指令或算法所导致的作用保持一致,因此,在程控单元内执行的程序或程序段可以用极小的费用被转换成配置数据,UCB通过这些配置数据如此地进行配置,使得其在工作时完成那些通过处理相关程序或程序段而导致的作用。
正如上文所述,UCB还有一个特征在于,它能够独立地与外部硬件进行协作,其中,如果至少部分地通过所谓的装载/存储流水线而耦合到外部硬件,则尤其在与计算单元进行通信连接时是比较有利的。
另外,与UCB同步的元件、亦即存储装置(在本实施例中为寄存器文件44)还优选地具有通往外部硬件的通信连接。
硬件块可以按照图1所示的类型进行配置,并优选地基于指令或指令序列进行配置。如果把指令或指令序列转换成相应的硬件块结构,则如此配置的硬件块可以作为顺序指令序列的运行单元而进行使用。这种硬件块配置的形式在下面也被称作结构过程的编程。
结构过程的编程的出发点可以是用诸如C、C++等高级语言编写的程序。该程序通过编译器进行翻译,由此获得的代码(优选地以超块的方式)被转换成结构信息,而需配置的硬件块则在该结构信息的基础上进行配置。稍后将详细讲述怎样理解超块。
显然,结构过程的编程的出发点也可以是用汇编语言编写的程序或其它类似的程序。编程的方式和方法(功能式,命令式,面向对象,…)同样是没有限制的。
采取如下做法被证明是有利的,即转换成结构信息的代码、亦即通过编译器或以其它方式及方法生成的机器指令基本上只包括五种机器指令类型,即无条件指令、条件指令、谓词指令、Loopxx指令、以及Intxx指令。于是,通常可形成只具有一个入口点和一个出口点的非常长(尤其包含有许多指令)的指令块。生成尽可能长的、只具有一个入口点和一个出口点的指令块是很有意义的,因为属于一个或同一指令块的指令、并且也只有这些指令可以以一个单元的形式(作为由多个指令组成的宏指令)进行处理,而所述的单元可以转换成一个共同的硬件块结构,并一次性得到执行。如果硬件块的配置总是严格地基于这种单元(而且硬件块大得可以进行该配置),那么,程序处理所需要的、硬件块的再结构化或再配置的数量可减到最小。其生成在目前令人满意的、也可通过上述指令群形成的这种指令块便是上文讲述的超块。
超块尤其还有一个特征在于,通过采用下文还要详细讲述的所谓if(如果)转换,可以取消有条件的转移指令。
有关超块、其它指令决以及相关的主题可以参考
-Wen-Mei W.Hwu等人“用于未来微处理器的编译技术”,IEEE报告的特约文章,卷83(12),1995年12月,微处理器特刊,第1625至1640页,-Henk Neefs,Jan van Campenhout“固定块长度结构的指令群结构所用的微结构”,第8届IASTED国际会议的关于并行及分散的计算和系统的报告,第38~42页,IASTED/ACTA出版,1996,以及-Richard H.Littin,J.A.David McWha,Murray W.Pearson,JohnG.Cleary“基于块的执行和任务级并行性”,出自John Morris(Ed.),“计算机结构98”,第三届大洋洲计算机结构会议的报告,ACAC’98,Perth,1998,2-3月,澳大利亚计算机科学通信,卷20,号4,页57~66,Springer,新加坡。
正如上文已经阐述的一样,优选地如此来确定硬件块的大小,使得能够以超块的方式来实现其配置,也就是说,整个超块总是可以在可能范围内被转换成相应的硬件块结构。
上文所述的无条件指令是指一些无条件地处理数据的指令,包括把数据从一个存储区拷贝到另一存储区(从一个寄存器拷贝到另一寄存器)。这种指令在下面被称为标准指令。它们包括用于得出新值的数据和用于拷贝寄存器内容的所谓Move(移动)指令之间的算术和逻辑连接。该指令的一般格式为<助记符><目标寄存器>,<源寄存器1>,<源寄存器2>。为了实现这种指令,需要硬件块的一个算术单元。
条件指令是指在出现一定条件时对数据进行处理的指令。由该指令执行的作用或操作对应于由标准指令执行的作用或操作,但其中相关作用的执行取决于预定的条件。如果满足条件,则执行由该指令规定的作用,否则不执行(于是相关的指令、譬如NOP指令起作用)。该指令在下文被称为条件指令。该指令的一般格式为<助记符>p<目标寄存器>,<源寄存器1>,<源寄存器2><p标志>,其中,由“p”在助记符的结尾处发出在执行指令时对条件的依赖性的信令,而且所述条件由某一标志(譬如p标志)的某种状态来定义。为了实现由该指令规定的作用,需要硬件块的一个算术单元;为了对条件进行检验,需要一个比较单元,其输出端与所述算术单元的控制端相连。
谓词指令是指用于确定在条件指令中所采用的条件标志(例如p标志)的状态的指令。在此,所述的确定是在程序运行期间根据两个数据的比较来实现的。该指令在下文被称为pxx指令。该指令的一般格式为pxx<源寄存器1>,<源寄存器2>,<p标志>,其中,xx规定了所述需要实现的比较操作,并用gt(大于)、ge(大于或等于)、eq(等于)、ne(不等于)、le(小于或等于)或lt(小于)来代替。该pxx指令可比作为普通的分支指令,并用来通过采用所谓的if转换(对此参见上述由Wen-Mei等人所著的论文)来替代所述的分支指令。
Loopxx指令是指位于超块结束处的用于循环重复的指令。如果满足指令中规定的条件,则由该Loopxx指令促使跳回到相关超块的开始处;倘若不再满足该条件,则由它促使通过信令单元SU产生“就绪”信号。所述的条件是通过比较操作的某个结果来定义的。该指令的一般格式为Loopxx<源寄存器1>,<源寄存器2>,其中,xx规定了需要执行的比较操作。
Intxx指令为用于生成输出到外部硬件的信号的指令。它表示了Loopxx指令的一般化由此可以根据任意的启动将具有任意意义内容的信号输出给包含UCB的系统的任意外部组件。该指令的一般格式为intxx<源寄存器1>,<源寄存器2>,<int_Signal>,其中xx规定了需执行的比较操作,而“int_Signal”则规定了需要(由信令单元SU)产生和输出的应答信号。
UCB可以执行由上面列举和阐述的指令类型所规定的操作,这就使该UCB产生了各种各样的可应用的部分。因此完全可以由UCB执行许多程序或程序段。所述UCB可以或多或少地被用作程控单元的标准替代物,或者-如果它是程控单元的组件或与该程控单元进行协作-还可以大大提高所述程控单元的性能。
出于完整性的原因,下面将简短地讲述一下怎样将指令转换成相应的UCB结构(由顺序的指令流形成UCB的自配置)。由于此处只讲述转换的基本原理,所以下面的实施例只限于转换标准指令、条件指令以及pxx指令。其它的指令,准确地说是Loopxx指令和Intxx指令在某些情况下需要有特殊的处理,但是,如果知道了下面讲述的优选方法,该特殊处理也没有什么难度。
在本实施例中,所述的UCB、准确地说是其子单元(算术单元,比较单元,多路转换器,多路分解器,…),以及各子单元之间的通信连接是通过表示所需配置的配置数据(配置比特)来配置的。据此,下面所讲述的转换方法的任务在于,根据UCB配置所基于的指令或指令序列来生成或修改(优选为预先已确定地配备的)配置比特或包含该配置比特的比特流。
尤其当UCB的子单元可以被配置时,给这些(物理)子单元分配一些逻辑或虚拟的单元,其中,所述虚拟单元规定了物理子单元的不同功能。倘若“第一算术单元AU1”可以被配置,譬如就能够给所述的物理子单元分配一些虚拟单元,如加法器、减法器等等。一个虚拟单元被严格地分配给一个物理子单元,但一个物理子单元可以分配多个虚拟单元。优选地,所有的虚拟单元在一个表格或目录内进行管理。除了针对虚拟单元的信息外,相应表格项还包括有如下有关信息,即各个虚拟单元被分配给哪个物理单元,以及为了给物理子单元赋予由虚拟单元表示的功能,必须通过哪些配置比特和必要时怎样来配置该物理子单元。
把指令转换成UCB结构化信息主要有三个步骤。
在第一步骤中,首先测定需要哪种类型的虚拟单元(加法器,减法器,乘法器…)来执行需要转换的指令,以及该虚拟单元是否仍然可用。如果所需类型的虚拟单元是空闲的,则选出该虚拟单元或从中选出一个虚拟单元来执行相关的指令。然后实行配置或准备配置,并为选出的虚拟单元预备所分配的物理子单元。为了进行配置,简单地对分配给相关物理子单元的配置比特进行设置或复位;这是没有什么难度的,因为哪个物理单元分配了所选的虚拟单元、以及需要通过哪些配置比特和必要时需要怎样配置该物理单元等信息是同所述的虚拟单元一起进行管理的。为选出的虚拟单元预备所分配的物理子单元是必要的,以便避免多次使用相关的物理子单元。在本实施例中,这是通过如下方式来实现的,即每次在为某个目的而分配给物理单元之后,便禁止相关物理子单元所分配的所有虚拟单元。
在pxx指令的情况下,可以按照UCB的结构要求根据p标志选择一个全比较单元。
在条件指令的情况下,如果某些指令只有利用某些标志才是可能的,也即在条件指令的分指令系统中没有完全的正交性,那么,p标志只对虚拟/物理单元的选择起作用。
在UCB配置的第二步骤中,对前接和/或后接于所选的物理子单元之上的多路转换器进行配置,以便根据需转换的指令中的规定来调整数据源和/或信号源以及数据目标和/或信号目标。在理想情况下,所述多路转换器与需转换的指令的格式是相互匹配的,使得所述指令中对数据源和/或信号源以及数据目标和/或信号目标进行规定的部分可以不变地被接收作为配置该多路转换器的配置比特。如果这-出于一些原因总是这样-不可能或不理想,则对多路转换器进行配置的配置数据譬如可以从一个表格中查取,在该表格内存储了指令中用于对数据源和/或信号源以及数据目标和/或信号目标进行规定的部分同对多路转换器进行配置的配置比特之间的分配。优选地,为了建立通往某个数据源和/或信号源及/或通往某个数据目标和/或信号目标的通信连接,所需的配置对于所有多路转换器都是相同的。
倘若需执行的操作所基于的数据至少部分地由包含在指令代码中的恒量组成,则需要进行特殊处理。于是,必须-搜寻空闲的(恒量)寄存器,-将该寄存器用作数据源和/或信号源,以及-在UCB投入运行之前,把在指令代码中所包含的恒量写到所选的寄存器中。
可以规定预先检验所述的相关恒量是否已存储在(恒量)寄存器中。在此,如果结论是已存在包含恒量的(恒量)寄存器,则可以将该已存在的(恒量)寄存器用作数据源和/或信号源。
另外,需要注意的是,所述需转换的指令具有许多不同的数据源和/或信号源以及数据目标和/或信号目标。
此外,用作数据目标和/或信号目标的寄存器被标记为已占用,因为在一个超块内不允许有第二次占用,而且必须通过所谓的(运行时间)寄存器重命名、也即一种从超标量结构得知的技术来进行避免。
在该(对所有指令通用的)第二步骤之后为各个指令类型加入特殊的分步骤,该分步骤是从相应的特殊性得出的。
另外,在条件指令的情况下,必须对检验是否存在条件的比较单元进行测定,并且通过所属的多路分解器将其输出信号接通到执行该操作的算术单元上。另外还需考虑该条件为何种类型。
在条件Move(移动)指令的情况下,还需负责使所述目标寄存器的内容在不执行指令时保持不变。
在所述UCB配置的第二步骤之后,配置可以结束,并启动该UCB。但是优选地,这只有在执行完下述第三步骤之后才施行。
在UCB的该第三步骤中实现一种所谓的数据转发。在此,并不固执地采用指令中给出的数据源和/或信号源作为数据源和/或信号源,而是在可能范围内采用各个超块内的相关数据源和/或信号源已在其上预先写过的物理子单元。这在两方面被证明是有利的一方面,由于可能需要较少的寄存器(如果不采用指令中给出的数据源和/或信号源作为数据源和/或信号源,则无须对其进行写操作,必要时可以完全将其取消),而另一方面,由于若从产生所需数据的子单元(譬如算术单元)读取该数据,则会比先将数据写入寄存器然后再从那儿读取要更早地使用该数据。该数据转发在所有指令中都可应用,而且通常被证明是巨大的优点。
最后来讲述一个应用UCB的实际实施例。
该实施例涉及一种A/D变换器。准确地说,-由计数器来启动变换宽度为8比特的A/D转换器,-将所述A/D变换的结果和12比特的计数标志存储在一起,-对该A/D变换的结果超过和低于某个阈值进行监视,其中,在超过或低于所述阈值时将转移到某个子程序,-在2048个测试之后中断该过程。
如果采取纯粹的软件解决方案,则这种应用需要有较高的费用。由于典型的A/D变换器(譬如集成在微控制器内的A/D变换器)通常都不是自发地提供结果,也就是说它以所谓的高速变换器的形式进行工作,并且变换时间位于几个微秒的范围内,因此,在正确地执行应用规定时,必须遵循下述方法之一1)由计时器触发中断。由中断业务程序启动A/D变换,然后结束。在该变换结束时,该A/D变换器同样也触发中断。通过此后执行的中断业务程序来读出和处理A/D变换的结果。
2)由计时器触发中断。在此后执行的中断业务程序中启动A/D变换,并等待变换的结束,最后(在变换结束后)读出和处理A/D变换的结果。
如果变换时间少于中断等待时间,则采取第二方案是有利的。否则第一方案比较有利。但是,通常最有利的是-在上述“标准”微处理器或微控制器的执行当中-下面的第三方案3)由计时器触发中断。在此后执行的中断业务程序中读出上一个A/D变换结果,并启动下一个A/D变换,然后分析读出的A/D变换结果。
于是,对A/D变换结果的读取和分析通常都要晚于原来的情况。
如果想让UCB来完成所述A/D变换结果的读取、分析和存储,则可以优选地按照下面的C程序来配置该UCB。正如稍后可以更好地理解一样,由此可以在A/D变换结束之后立即对所述的A/D变换结果实行读取、分析和存储,而且费用极小,包含该UCB的系统的负荷也极低。在下面的C程序中采用了一个新的关键字“hardware_thread(硬件线程)”。利用显然也可采取其它任意措词的该关键字,可以给翻译该C程序的编译器发出如下信令,即该编译器应该如此地编译相关的程序或相关的程序段,使得所产生的代码能够尽可能地在一个UCB内执行。然而,也不一定强制需要采用这种关键字。也可以规定,编译器总是如此地编译需要编译的程序,使得这些程序可以放到多个UCB中去执行。
<pre listing-type="program-listing"><![CDATA[int*p_adc,adc_value,upper_limit,lower_limit,adc_ready;  int adc_array(4096);  void hardware thread readAD()  {  int x=0;  while(x<4096)  {  if(adc_ready==1)  {  //访问A/D变换器  adc_value=*p_adc;  //在超过极限值时调用子程序out_of_range  if(adc_value>upper_limit ||(adc_value<lower_limit)out_of_range();  ∥存储指数信息  adc_array[x++]=x;  //存储变换结果  adc_array[x++]=adc_value;  }  }  }]]></pre>在使用上述指令类型的情况下,该源代码可以翻译成如下的汇编代码mov r1,p_adc ;A/D变换器的地址→r1mov r4,0 ;变量x→r4mov r5,1 ;x+1→r5mov r6,adc_array ;存储区地址→r6ld r2,upper_limit;上极限→r2ld r3,lower_limit;下极限→r3LO:ld ro,(r1);装入A/D变换结果intgt ro,r2,i1 ;若r0>r2,则生成应答信号INT1(中断请求1)intgt ro,r3,i2 ;若r0<r3,则生成应答信号INT2(中断请求2)st(r6+r4),r4 ;存储计数标志st(r6+r5),r0 ;A/D变换结果→r0add r4,r4,2 ;更新xadd r5,r5,2 ;更新x+1looplt r4,4096 ;若r4<4096,则从LO开始重复在此,前面6个指令涉及寄存器的初始化,后面(从标号L0开始)的指令则涉及执行由前面C程序所导致的作用。
尽管在该汇编代码中缺少如下条件,即只有当存在ADC_READY信号时才运行所述的循环,但是,在把所述汇编代码转换成UCB结构并由该UCB来执行它的情况下,可以获得与如下情况一样的结果,即把C程序进行“标准地”翻译,然后在常规的微处理器或微控制器内执行它。也就是说,在汇编代码中缺少的条件在一定程度上就表示了一种触发,该触发也可以通过输入到UCB的脉冲发生单元TGU之中的允许信号“允许”来实现。
如果将所述的汇编代码转换成UCB结构,并通过该UCB结构来执行将要导致的作用,则可以获得如图2所示的UCB结构。
图2所示的UCB包括4个作为减法器进行配置的算术单元AU1、AU2、AU3、AU4,一个脉冲发生单元TGU,以及包括三个比较单元CUB1、CUB2、CUB3的信令单元SU。可以知道,UCB的这种结构基于的是图1所示UCB的一般结构;只是对具体的应用情况进行了匹配而已。UCB的子单元的连接及其输入输出信号可以从图2看出,在此无须赘述。应该理解,如此配置的UCB可以准确地执行上述汇编代码(上述C程序)所定义的内容。
显然,如此配置的UCB可以完全独立地(无需下级或上级控制器的负荷)执行需要完成的任务,并且远远快于常规的微处理器或微控制器。
还应该说明的是,所采用的UCB并不局限于所述的实施例。显然,UCB可以用于其它许多的目的。作为其它的应用可能性,它也可以用于芯片测试或密码应用或识别应用当中。通过采用UCB,在实现这种任务时只具有极小的费用,同时又非常灵活。
所述的芯片测试尤其是如下的芯片测试,它们是通过采用装设在需测试的集成电路中的测试模块来实现的,也即主要是自测试的存储器建立(MBIST)、线性反馈移位寄存器(LFSR)、多输入标志寄存器(MISR)、自修复的存储器建立(MBISR)、模拟BIST(譬如在A/D变换器中)以及芯片上的监视器(譬如用于IDDQ的电流测试监视器)等。在此,需测试的集成电路可以是任意的集成电路,譬如微处理器、微控制器、存储器元件、A/D变换器,等等。为了进行上述和其它的测试方法,必须在需测试的芯片内装设特殊的测试模块,由于把这种测试模块集成到需测试的芯片中需要不低的费用(更多的芯片表面、更高的生产价格,等等),所以目前还未大量推广。在此可以通过采用UCB来帮助实现芯片测试。就是说,被用来实现芯片测试的UCB(被用作芯片测试模块)在芯片测试之前和/或之后负责其它的任务,譬如被配置为串行或并行接口。然后再实现上述或其它的芯片测试,而无需在需测试的芯片内装设特殊的芯片测试模块。通过合适地构造UCB和确定其大小,可以使芯片测试没有任何限制;UCB在芯片测试方面的功能性与特殊的芯片测试模块的功能性是完全一致的。一般来说,通过采用UCB的芯片测试比采用特殊芯片测试模块的测试要快。其原因在于,出于位置需要和成本的原因,特殊的芯片测试模块具有尽可能简单的结构,因此所实现的芯片测试有时可能并不是最快的。但在通过采用UCB实现芯片测试时是不同的。UCB总是为通用的应用而设计的,由此它们通常无需特殊构造就可以同其承担的任务进行最佳地匹配。原则上讲,利用UCB可以实现任意模拟的、同步数字或异步数字的电路。此外,采用UCB对芯片测试也是比较有利的,因为任何时候都可以由此毫无问题地改变测试方法;譬如为了克服测试方法中的故障,或将测试方法置为最新状态,都需要进行一些改变。芯片测试所采用的UCB譬如可以通过所谓的扫描测试进行测试。
已经实现了实际测试,其中,用于静态RAM的MBIST控制器是通过UCB来实现的。该结果非常突出。
由于通过UCB实现的电路在任何时候都可以毫无问题地进行改变,所以UCB对密码应用和识别应用也是很有意义的。也就是说,所需要的识别数据变化和/或必要的密码变更(譬如在黑客入侵之后)可以由此只通过对UCB进行再配置来实现,也即可以用一种能想见的简单方式和方法来实现;无须替换掉位于终端用户处的灵巧卡、票价卡(Mifare)或通行令牌(Wegfahrsperren)。
UCB被用于密码应用和识别应用的另一优点在于,与诸如所谓FPGA的其它可配置的硬件相比,UCB能进行更快、更频繁地再编程;此外,UCB比FPGA更小,面积也更有效。
当然UCB也可以用于其它的应用,而且,UCB在实现不同功能时与包含有UCB的设备的不同工作阶段内的应用类型无关,其中,通过相应地规定配置数据或配置数据序列,可以以极低的费用使功能与用户的专用需要相匹配。因此譬如-只列举任意多的实施例中的一个-可以规定,在接入包含有UCB的芯片之后将该UCB用作芯片测试模块,此后,也即在芯片的“标准”工作模式下又被选择性地用作串行接口或智能的并行接口。
在UCB的实际应用中,如果它具有暂时存储数据的可能性,则被证明是比较有利的。为此在UCB内部优选地装设一个存储器,譬如写/读存储器。该存储器优选地构造为具有无选择访问的存储器,或构造为栈存储器(RAM),而且必须只有与该存储器相对应的UCB才能访问。显然,需要时也可以规定,包含UCB的系统的其它组件也可访问该存储器。
UCB的合成可以通过采用诸如VHDL的电路说明语言来实现;用于按需要对UCB进行配置的配置数据譬如可以根据汇编程序、C程序或(有时是用诸如VHDL的电路说明语言实现的)电路说明来产生。
总之,所述的硬件块(UCB)在多方面被证明是有利的在应用时,它比所示类型的常规硬件块的性能更强,而且更灵活、更通用。
参考符号清单1预解码单元2指令缓冲器3解码重命名及装载单元4s单元5数据高速缓冲器6存储器接口41 可编程结构缓冲器42 具有可编程结构的功能单元43 整型/地址指令缓冲器44 整型寄存器文件AUx 算术单元CUA 第一类型的比较单元CUBx 第二类型的比较单元DEMUX多路分解器MUXAx第一类型的多路转换器MUXB 第二类型的多路转换器TGU 冲发生单元SU信令单元MCLK 主脉冲允许 允许信号ADC_READY A/D变换器的就绪信号CLK由TGU产生的脉冲信号就绪 硬件块的就绪信号INT1 硬件块的中断请求1INT2 硬件块的中断请求2LPL装载流水线SPL存储流水线A 地址D 数据
权利要求
1.可配置的硬件块,它被设计用来根据其配置读出存于存储装置(44)之内的数据,并对读出的数据进行算术及/或逻辑处理,然后把表示该处理结果的数据写入所述的存储装置,其特征在于所述硬件块可被置为与外部硬件进行交互作用。
2.如权利要求1所述的可配置的硬件块,其特征在于所述与外部硬件的交互作用在于,在对某些事件作出反应时,促使所述的存储装置(44)接收由外部硬件提供的数据。
3.如权利要求1或2所述的可配置的硬件块,其特征在于所述与外部硬件的交互作用在于,将数据和/或信号输出到所述的外部硬件。
4.如上述权利要求之一所述的可配置的硬件块,其特征在于所述的外部硬件由其它可配置的硬件块和/或一种下级或上级控制器和/或包含可配置硬件块的系统的其它单元组成。
5.如权利要求3或4所述的可配置的硬件块,其特征在于输至所述外部硬件的数据和/或信号为发出某些状态或事件信令的数据和/或信号。
6.如上述权利要求之一所述的可配置的硬件块,其特征在于装设一种脉冲发生单元(TGU)来为存储装置(44)生成脉冲信号(CLK)。
7.如权利要求6所述的可配置的硬件块,其特征在于所述脉冲发生单元(TGU)根据一个或多个周期性或非周期性的、至少部分地来自于所述外部硬件的信号(MCLK,允许;MCLK,ADC_READ)来生成脉冲信号(CLK)。
8.如上述权利要求之一所述的可配置的硬件块,其特征在于装设一种信令单元(SU)来为外部硬件生成应答信号(就绪,INT1,INT2)。
9.如权利要求8所述的可配置的硬件块,其特征在于通过所述应答信号(就绪,INT1,INT2)发出如下信令,即在可配置的硬件块内产生了预定的状态和/或事件。
10.如权利要求8或9所述的可配置的硬件块,其特征在于所述信令单元(SU)被设计用来通过其生成的应答信号(就绪,INT1,INT2)来发出如下信令,即在所述硬件块内重复执行的操作或操作序列已经执行了所需的次数。
11.如权利要求8~10之一所述的可配置的硬件块,其特征在于所述信令单元(SU)被设计用来在需要时以中断请求的形式生成为程控单元所用的应答信号(就绪,INT1,INT2)。
12.如权利要求8~11之一所述的可配置的硬件块,其特征在于所述应答信号(就绪,INT1,INT2)为至少一个比较单元(CUB;CUB1,CUB2,CUB3)的输出信号。
13.如权利要求12所述的可配置的硬件块,其特征在于所述的比较单元(CUB;CUB1,CUB2,CUB3)为至少部分地可配置的比较单元,且该比较单元可以让输入信号进行可选择的比较运算和/或对正确及/或错误进行检验。
14.如权利要求13所述的可配置的硬件块,其特征在于所述可选择的比较运算包括大于、大于/等于、等于、不等于、小于、及/或小于/等于比较。
15.如权利要求12~14之一所述的可配置的硬件块,其特征在于所述比较单元(CUB;CUB1,CUB2,CUB3)至少部分地在输入侧串接了多路转换器(MUXA4),利用该多路转换器来确定哪些信号作为输入信号而被输入到所述的比较单元中。
16.如上述权利要求之一所述的可配置的硬件块,其特征在于所述可配置的硬件块具有按功能配置的子单元(AUx,CUx,DEMUX,MUXx)和/或可配置的数据回路及/或信号回路。
17.如权利要求16所述的可配置的硬件块,其特征在于存在或可以建立通往外部硬件的可配置的数据回路及/或信号回路。
18.如上述权利要求之一所述的可配置的硬件块,其特征在于所述的存储装置(44)为一种包括许多寄存器的寄存器块。
19.如上述权利要求之一所述的可配置的硬件块,其特征在于所述硬件块可以根据指令或指令序列进行配置,使得该硬件块能够执行由所述指令或指令序列规定的操作或操作序列。
20.如权利要求19所述的可配置的硬件块,其特征在于如此来确定所述硬件块的大小,使得其配置可以按超块的方式实现。
21.如上述权利要求之一所述的可配置的硬件块,其特征在于所述硬件块可如此地构造和配置,使得它可以用作一种特殊电路的替代物。
22.如上述权利要求之一所述的可配置的硬件块,其特征在于所述硬件块可如此地构造和配置,使得它可以用作各种特殊电路的替代物。
23.如权利要求21或22所述的可配置的硬件块,其特征在于所述硬件块被用于对包含该硬件块的集成电路进行测试。
24.如权利要求21~23之一所述的可配置的硬件块,其特征在于所述硬件块被用于密码应用和/或识别应用。
25.如上述权利要求之一所述的可配置的硬件块,其特征在于所述硬件块包含用于存储中间结果的存储装置。
全文摘要
讲述一种可配置的硬件块,它被设计用来根据其配置读出存于存储装置之内的数据,并对读出的数据进行算术及/或逻辑处理,然后把表示该处理结果的数据写入所述的存储装置。所讲述的硬件块的特征在于,它可被置为与外部硬件进行交互作用。由此可以获得一种灵活且通用的硬件块。
文档编号G06F9/30GK1321276SQ99811316
公开日2001年11月7日 申请日期1999年9月10日 优先权日1998年9月23日
发明者R·阿诺, H·克莱维, C·西默斯 申请人:因芬尼昂技术股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1