数据处理引擎的制作方法

文档序号:6598981阅读:156来源:国知局

专利名称::数据处理引擎的制作方法
技术领域
:本发明涉及一种数据端序控制机制,特别涉及一种数据处理引擎。
背景技术
:传统的数据处理引擎(例如一般用途的微处理器)可存取至少一地址空间。每一地址空间可用来存取存储器或I/O装置,或两者皆可。通过不同的读取/储存指令可分辨存储器和I/O装置的地址空间。例如,Loadmemory指令用来存取存储器地址空间,而LoadIO指令用来存取I/O地址空间。另外也可根据实体地址空间片段(无地址转换)或虚拟地址空间片段(有地址转换)来分辨存储器和I/O装置的地址空间。上述每一片段具有不同的地址范围。计算机结构领域中,”数据端序”这个词是用以将字节数据的一序列置入一终点(destination)储存处(例如寄存器、存储器或数据总线)的数据字节次序,终点储存处具有超过一字节的数据宽度。大端序次序和小端序次序最常见。图1是表示大端序字节次序和小端序字节次序的传统概念的一示意图。图1示出了一小端序字节次序110、一大端序字节次序120及用来储存数据字节DO-Dll的一存储器150。根据小端序字节次序110,来自存储器150的最低地址的数据字节DO被置于终点储存处的最低有效字节(LSB),而朝着终点储存处的最高有效方向放置具有较高地址的数据字节。根据大端序字节次序120,来自存储器150的最低地址的数据字节DO被置于终点储存处的最高有效字节(MSB),朝着终点储存处的最低有效方向放置具有较高地址的数据字节。由于硬件实现的差异,不同的地址空间可使用不同的数据端序。例如,个人电脑(PC)使用小端序字节次序,而网路通讯使用大端序字节次序。因此需要端序转换。储存数据的端序转换是指数据被转换至不同储存场所,而且来源和终点场所使用不同数据大小单位时,数据字节次序的转换。例如,一个32比特寄存器和一个以字节为单位来定址(byte-addressable)的存储器之间的数据转换,就需要数据端序转换。数据端序决定32-bit寄存器的哪个字节(最低有效字节或最高有效字节)要被写入至或被读取自存储器的第一字节地址。支持双向端序数据处理的数据处理引擎使用下列其中一种机制来控制数据端序转换。第一种控制机制是分开的两组读取/储存指令。一组指令用来执行大端序读取/储存的操作,而另一组用来执行小端序读取/储存的操作。第二种控制机制是特定的端序转换指令。当数据储存于一寄存器,一组特定指令可用来转换此数据的端序。第三种控制机制利用一专属的软件可写入(software-programmable)的端序控制寄存器来决定所有读取/储存操作的端序。控制寄存器储存一个比特,其值决定所有读取/储存操作的当前端序。软件能更改此比特值以切换于大端序字节次序和小端序字节次序之间。第四种控制机制是用分开的实体地址范围对应不同端序。其中一些地址范围用于大端序读取/储存的存取,而另一些地址范围用于小端序读取/储存的存取。例如,地址范围OOOOh-BFFFh被分配给小端序且地址范围COOOh-FFFFh被分配给大端序,其中最后的"h"表示十六进位制的数字。上述的全部传统控制机制以同样方式处理存储器和I/O装置的地址空间。这些传统控制机制并不特别区分存储器地址空间和I/O地址空间。
发明内容据此,本发明提供一种具有整合性数据端序控制机制的数据处理引擎。此数据处理引擎储存多个可程序化的端序控制比特。利用端序控制比特的状态,每个地址空间类型的数据端序能被独立地设定。每个数据转移的地址空间类型可由指令的类型、地址空间的范围或地址空间的属性来决定。此控制机制的特征是更有弹性的数据端序管理和更简单的软件开发。本发明提供一种数据处理引擎。数据处理引擎包括一端序寄存器、一端序控制装置和一字节交换器。端序寄存器储存多个端序控制比特。每一端序控制比特标示允许数据处理引擎存取的地址空间的一类型的预设数据端序。地址空间的类型可如一存储器空间和一装置空间般简单,或如多个存储器空间和多个装置空间般复杂。每个端序控制比特处于一大端序状态或一小端序状态。端序控制装置连接至端序寄存器。端序控制装置根据端序控制比特和被数据处理引擎执行的一指令来提供一端序信号。端序信号处于大端序状态或小端序状态。字节交换器连接至端序控制装置。字节交换器传送被指令使用或产生的数据,且当数据的字节次序不符合端序信号的状态时,改变数据的字节次序。当一预决条件为真,数据处理引擎将端序控制比特存入一储存装置,例如一程序状态字寄存器(processstatuswordregister),将预设值载入端序寄存器以作为新端序控制比特,执行一预决程序,并从储存装置回复先前端序控制比特至端序寄存器。例如,预决条件可为一例外的发生且预决程序可为例外处理程序(exceptionhandler)0数据处理引擎还可包括一空间解码器。空间解码器连接至端序控制装置。空间解码器解码指令和/或其相关地址,并基于解码结果提供一解码器信号。解码器信号决定地址空间的一类型且端序控制装置使用它以选取并输出对应已决地址空间类型的端序控制比特以作为端序信号。数据处理引擎还可建立用于地址空间的每一片段的多个属性,其中属性代表更多地址空间的微调类型。端序控制装置可根据地址空间属性来输出端序信号。这些属性的种类可被建立于虚拟地址空间层(level)或实体地址层(level)或两者。属性可决定至少,但不限于,相关地址空间片段的可缓存性(cacheability)、可暂存性(bufferability)和可接合性(coalesceability)的至少其中之一。地址空间属性的组合值可对应地址空间的类型之一,且端序控制装置可输出对应地址空间的一类型的端序控制比特以作为端序信号。地址空间的每一片段还可包括处于大端序状态、小端序状态或一禁能状态的一端序选取属性。在此,当端序选取属性处于大端序状态或小端序状态,端序控制装置根据端序选取属性的状态输出端序信号。当端序选取属性处于禁能状态,端序控制装置根据地址空间属性的组合值来输出端序信号。指令可为多个软件可程序指令的一指令或可为执行载入或储存操作从或至一地址的一当前程序的一些隐含(implicit)硬件操作,且端序控制比特、地址空间属性及端序选取属性与当前程序一起进行背景切换(context-switch)。当指令存取同时越过一第一和一第二地址空间的一数据,且第二地址空间的多个地址高于第一地址空间的多个地址,端序控制装置可输出对应第一地址空间或第二地址空间的端序控制比特,但并非同时对应两者,以作为端序信号。或者,数据处理引擎可因此产生一例外。为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。图1是表示大端序字节次序和小端序字节次序的传统概念的一示意图;图2是根据本发明的一实施例示出的用以建立一数据端序控制机制的一数据处理引擎的一部分的示意图;图3是根据本发明的另一实施例示出的用以建立另一数据端序控制机制的另一数据处理引擎的一部分的示意图;图4是一种用以控制被图3中的端序控制装置执行的控制数据端序的方法的一流程图。附图中主要元件符号说明110-小端序字节次序;120-大端序字节次序;150-存储器;210-端序寄存器;220-端序控制比特;230-预设值;240-空间解码器;245-解码器信号;250-端序控制装置;255-端序信号;260-寄存器纵列;270-读取/储存单元;280-字节交换器;340-属性;350-端序控制装置;360-属性提供器;410470-步骤。具体实施例方式图2是根据本发明的一实施例示出的用以建立一数据端序控制机制的一数据处理引擎的一部分的示意图。数据处理引擎包括一端序寄存器210、空间解码器240、一端序控制装置250、寄存器纵列260和读取/储存单元270。读取/储存单元270包括一字节交换器280。读取/储存单元可为数据处理引擎的标准(regular)功能单元,其执行由此引擎的使用者所程序化的读取/储存指令,或是被引擎操作的一种隐含数据移动功能,以存取某些非指令(non-instruction)的特定数据,例如转换后备(look-aside)缓冲(buffer)数据或除虫(debugging)数据。端序寄存器210储存多个端序控制比特220。每一端序控制比特220标示允许该数据处理引擎存取的多个地址空间的一类型的一预设数据端序。每一端序控制比特220处于一大端序状态或一小端序状态。例如,比特值1可代表大端序状态且比特值0可代表小端序状态。另外,比特值1可代表小端序状态且比特值0可代表大端序状态。空间解码器240解码被数据处理引擎执行的指令及/或其相关地址,并基于解码结果来提供一解码器信号245。解码器信号245的每一个值决定地址空间的一类型。端序控制装置250连接至端序寄存器210及空间解码器240。端序控制装置250输出对应由解码器信号245的值所决定的地址空间的类型的端序控制比特以作为端序信号255。与端序控制比特220相似,端序信号255处于大端序状态或小端序状态。寄存器纵列260包括数据处理引擎的多个内部寄存器。读取/储存单元270处理寄存器纵列260的内部寄存器和地址空间之间的读取/储存操作。数据处理引擎的地址空间可用来存取缓存(cache)、局部(local)存储器,或连接外部存储器或I/O装置的寄存器的总线接口。字节交换器280连接至端序控制装置250、寄存器纵列260及上述被地址空间存取的硬件部件。字节交换器280发送被寄存器纵列260的内部寄存器和上述硬件部件之间的操作所使用或产生的数据。此外,当该数据的字节次序不符合端序信号255的状态时,字节交换器280则更改数据的字节次序。为了有效地控制数据端序,字节交换器280知道所有的内部寄存器、缓存、局部存储器、外部存储器和I/O装置的硬件应用,其包括最高有效字节和最低有效字节的位置。因此,字节交换器280能决定数据字节次序是否符合端序信号255。端序控制比特220的状态可被数据处理引擎执行的软件设定。由于地址空间的每一类型的数据端序被对应的端序控制比特控制,地址空间的每一类型的数据端序可独立地被控制。例如,地址空间的一类型可用来存取连接至数据处理引擎的存储器,而地址空间的另一类型而可用来存取连接至数据处理引擎的I/O装置的寄存器。由于此配置,软件能根据不同的规则来控制存储器地址空间和I/O地址空间的数据端序。可用指令类型或地址范围来区别地址空间的类型。当此区别是基于指令类型,数种指令的集合(或类型)的可用来存取地址空间的一类型。空间解码器240根据指令的集合/类型来提供解码器信号245。当此区别是基于地址范围,地址空间的一类型被分配给一地址范围,而数个地址范围可被设定为同样地址空间类型。在此,空间解码器240根据被指令存取的地址空间类型来提供解码器信号245。解码器信号245决定地址空间的类型,其地址范围包括被指令存取的存储器地址。端序寄存器210接收多个预设值230。每个端序控制比特220具有一对应的预设值230。当一预决条件为真,数据处理引擎将端序控制比特存入一暂时储存装置(未示出),用预设值230取代端序控制比特220,执行一预决(predetermined)程序,并从暂时储存装置回复先前端序控制比特220至端序寄存器210。例如,预决条件可为硬件重设、例外、陷阱(trap)、错误或中断的发生,使数据处理引擎进入一超级使用者(superuser)或特许状态,或类似的已知状态。预决程序可为例外、陷阱、错误或中断的处理程序。超级使用者状态或特许状态中,端序控制比特220得为常数控制值以确保正确的系统行为。预设值230在超级使用者状态或特许状态中提供常数控制值。更可利用数据处理引擎芯片的外部接脚选择来设定预设值230,因此能通过数据处理引擎芯片被安装的电路版的跳线(jumper)调整预设值230。—些罕见的情况中,指令的读取/储存操作存取同时越过两个地址空间的一数据。例如,被存取的数据字(word)可延展,越过一地址空间片段的边界而进入另一地址空间片段。在此,空间解码器240可输出解码器信号245以选取具有较低地址或较高地址的地址空间片段,端序控制装置250分别输出对应具有较低地址或较高地址的地址空间片段的唯一(unique)端序控制比特以作为端序信号255。另外,若有一应用不打算在解码器中处理这个情况,空间解码器240可产生一例外。图3是根据本发明的另一实施例示出的用以建立另一数据端序控制机制的另一数据处理引擎的一部分的示意图。图2中的空间解码器240和端序控制装置250分别被属性提供器360和端序控制装置350取代。属性提供器360和端序控制装置350互相连接。图3中的其他部件与图2中的相同。在图3的实施例中,被数据处理引擎存取的地址空间片段被分为实体地址空间或虚拟地址空间的片段。每个片段与至少一地址空间属性和一端序选取属性相关。地址空间属性可决定相关地址空间片段的可缓存性(cacheability)、可暂存性(buffertility)和可接合性(coalesceability),或用于标准读取/储存操作的其他能力限制(现有技术,故在此不再赘述)。端序选取属性处于大端序状态、小端序状态或一禁能状态。属性提供器360可储存一表格(table),其包括所有地址空间片段的地址空间属性和端序选取属性。当数据处理引擎执行一指令,属性提供器360解码指令并基于解码结果来查询上述表格。属性提供器360提供对应被指令存取的地址空间片段的地址空间属性和端序选取属性以作为属性340,并给端序控制装置350。端序控制装置350根据属性340而输出端序控制比特220之一以作为端序信号255。图4是一种用以控制被图3中的端序控制装置执行的控制数据端序的方法的一流程图。第一,确认被指令存取的地址空间片段的端序选取属性是否处于禁能状态(步骤410)。当端序选取属性不处于禁能状态,确认端序选取属性处于大端序状态或小端序状态(步骤450)。当端序选取属性处于大端序状态,端序控制装置350输出端序信号255处于大端序状态(步骤460)。当端序选取属性处于小端序状态,端序控制装置350输出端序信号255处于小端序状态(步骤470)。回到步骤410,当端序选取属性处于禁能状态,端序控制装置350根据上述地址空间属性的组合值(combinedvalue)来输出端序信号255,其决定被当前指令存取的地址空间片段的可缓存性(cacheability)、可暂存性(bufferability)及/和可接合性(coalesceability)(步骤430)。例如,不可缓存(non-cacheable)、不可缓冲(non-bufferable)禾口不可接合(non-coalesceable)是地址空间属性的一组合值,而可缓存(cacheable)、可缓冲(bufferable)和可接合(coalesceable)是地址空间属性的另一组合值。每个地址空间属性具有一同意(affirmative)状态和一否定(negative)状态。总的来说,有八种二进位状态的组合,其对应八种地址空间属性的组合值。八种组合值的每一种代表允许数据处理引擎存取的地址空间的一类型。当数据处理引擎执行一指令且此指令执行一读取/储存操作,端序控制装置350接收被读取/储存操作存取的地址空间片段的地址空间属性。地址空间属性的组合值被用来选取端序控制比特220之一。据此,端序控制装置350输出对应上述组合值的端序控制比特以作为端序信号255。一简单的例子为,当只使用两个端序控制比特,则施加第一端序控制比特至具有不可缓#(non_cacheable)、不可缓7中(non-bufferable)禾口不可(non-coalesceable)属性的地址空间的一片段,而施加第二端序控制比特至具有其他属性组合值的地址空间的另一片段。一般应用中,地址空间属性可被作业系统(operatingsystem)或甚至其他应用软件设定,以控制每个地址空间片段的数据端序。用以选取端序控制比特的属性是否与实体地址空间或虚拟地址空间相关是取决于数据处理引擎的地址转换功能。当地址转换功能被禁能,读取/储存操作是基于实体地址,而使用实体地址片段的属性。当地址转换功能被使能,读取/储存操作是基于虚拟地址,而使用虚拟存储器片段的属性。根据相关地址空间属性的组合值,每一端序控制比特220代表一地址空间的类型的预设数据端序。端序选取属性可用来覆盖用于每一单独的地址空间片段的预设数据端序。换言之,端序控制比特220提供粗调(coarse-grained)数据端序控制,而地址空间片段的端序选取属性提供微调(fine-grained)数据端序控制。在本发明的其他实施例中,可忽略端序选取属性以提供一简化(simplified)数据端序控制机制。在一多重程序(multi-process)电脑中,背景切换(context-switching)是常见的且必要的(mandatory)。端序控制比特、地址空间属性和端序选取属性全部皆可与被数据处理引擎执行的当前程序一起做背景切换。当作业系统切换至另一程序,端序控制比特、地址空间属性和端序选取属性可被储存至当前程序的背景。当作业系统切换回当前程序,端序控制比特、地址空间属性和端序选取属性可从当前程序的背景中被回复。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。权利要求1.一种数据处理引擎,包括一端序寄存器,储存多个端序控制比特,其中每一端序控制比特标示允许该数据处理引擎存取的一地址空间一类型的一预设数据端序,每一上述端序控制比特处于一大端序状态或一小端序状态;一端序控制装置,连接至该端序寄存器,根据所述端序控制比特和被该数据处理引擎执行的一指令来提供一端序信号,其中该端序信号处于该大端序状态或该小端序状态;以及一字节交换器,连接至该端序控制装置,传送被该指令使用或产生的一数据,且当该数据的一字节次序不符合该端序信号的该状态时,该字节交换器则改变该数据的该字节次序。2.根据权利要求1所述的数据处理引擎,其中当一预决条件为真,该数据处理引擎将多个预设值载入该端序寄存器以作为所述端序控制比特。3.根据权利要求2所述的数据处理引擎,其中当该预决条件为真,该数据处理引擎将所述端序控制比特存入一储存装置,将所述预设值载入该端序寄存器以作为所述新端序控制比特,执行一预决程序,然后从该储存装置回复所述先前端序控制比特至该端序寄存器。4.根据权利要求1所述的数据处理引擎,其中所述地址空间的所述类型的至少一类型被用来存取连接至该数据处理引擎的一存储器,且所述地址空间的所述类型的至少另一类型被用来存取连接至该数据处理引擎的多个I/O装置的多个寄存器。5.根据权利要求1所述的数据处理引擎,还包括一空间解码器,连接至该端序控制装置,解码该指令和/或其相关地址,并基于该解码结果提供一解码器信号,其中该解码器信号决定所述地址空间的一类型且该端序控制装置使用该解码器信号以选取并输出对应该已决地址空间类型的该端序控制比特以作为该端序信号。6.根据权利要求5所述的数据处理引擎,其中该空间解码器根据该指令的一类型来提供该解码器信号。7.根据权利要求5所述的数据处理引擎,其中该空间解码器根据被该指令存取的一地址所落入的一范围来提供该解码器信号,且该解码器信号选取包括该地址的该地址范围的该地址空间的该类型。8.根据权利要求1所述的数据处理引擎,其中该指令存取一地址空间片段中的一地址,该地址空间片段包括多个地址空间属性,该端序控制装置根据所述地址空间属性来输出该端序信号。9.根据权利要求8所述的数据处理引擎,其中所述地址空间属性的一组合值对应所述地址空间的所述类型之一,且该端序控制装置输出对应所述地址空间的该类型的该端序控制比特以作为该端序信号。10.根据权利要求8所述的数据处理引擎,其中该地址空间片段是一实体地址片段或一虚拟地址片段。11.根据权利要求8所述的数据处理引擎,其中所述地址空间属性决定该地址空间片段的可缓存性、可暂存性和可接合性的至少其中之一。12.根据权利要求8所述的数据处理引擎,其中该地址空间片段还包括处于该大端序状态、该小端序状态或一禁能状态的一端序选取属性;当该端序选取属性处于该大端序状态或该小端序状态,该端序控制装置根据该端序选取属性的该状态来输出该端序信号;当该端序选取属性处于该禁能状态,该端序控制装置根据所述地址空间属性输出该端序信号。13.根据权利要求12所述的数据处理引擎,其中该指令是一当前程序的多个指令之一,且所述端序控制比特、所述地址空间属性及该端序选取属性与该当前程序一起进行背景切换。14.根据权利要求1所述的数据处理引擎,其中当该指令同时存取所述地址空间的一第一地址空间及一第二地址空间,且该第二地址空间的地址高于该第一地址空间的地址,该端序控制装置则输出对应该第一地址空间或该第二地址空间的该端序控制比特,但并非同时对应两者,以作为该端序信号,或该数据处理引擎产生一例外。全文摘要本发明提供了一种数据处理引擎。数据处理引擎包括一端序寄存器、一端序控制装置和一字节交换器。端序寄存器储存多个端序控制比特。每一端序控制比特标示允许数据处理引擎存取的地址空间的一类型的预设数据端序。每个端序控制比特处于一大端序状态或一小端序状态。端序控制装置连接至端序寄存器。端序控制装置根据端序控制比特和被数据处理引擎执行的一指令来提供一端序信号。端序信号处于大端序状态或小端序状态。字节交换器连接至端序控制装置。字节交换器发送被指令使用或产生的数据,且当数据的字节次序不符合端序信号的状态时,改变数据的字节次序。文档编号G06F9/30GK102033734SQ20101012135公开日2011年4月27日申请日期2010年2月23日优先权日2009年10月7日发明者赖吉昌申请人:晶心科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1