CN100465880C - 移动位字段的方法和程控单元 - Google Patents

移动位字段的方法和程控单元 Download PDF

Info

Publication number
CN100465880C
CN100465880C CNB2004800151951A CN200480015195A CN100465880C CN 100465880 C CN100465880 C CN 100465880C CN B2004800151951 A CNB2004800151951 A CN B2004800151951A CN 200480015195 A CN200480015195 A CN 200480015195A CN 100465880 C CN100465880 C CN 100465880C
Authority
CN
China
Prior art keywords
register
storage unit
address
bit field
program
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 - Fee Related
Application number
CNB2004800151951A
Other languages
English (en)
Other versions
CN1799025A (zh
Inventor
聂小宁
T·瓦尔
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of CN1799025A publication Critical patent/CN1799025A/zh
Application granted granted Critical
Publication of CN100465880C publication Critical patent/CN100465880C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种方法和一种程控单元,用于由于实施指令而在程控单元的存储设备中移动位字段,其中,将第一存储单元内的位段移动到第二存储单元中,该方法具有以下的方法步骤:(a)在第一起始点上开始地,从第一存储单元的第一位字段中读出具有第一位长度的位段;(b)在第二起始点上开始地,将所读出的位段存储到第二存储单元的第一位字段中;(c)将第一和/或第二起始点更新了预定的值;(d)存储针对随后的方法步骤的所更新的第一和/或第二起始点。

Description

移动位字段的方法和程控单元
技术领域
本发明涉及一种方法和一种程控单元,用于在程控单元的存储设备中、尤其是在位字段操作时移动位字段。
背景技术
这样的程控单元例如被构造为微处理器、微控制器、信号处理器等等。与分别选择的编译技术和各自的应用程序有关联的、选择用于程控单元的处理器架构基本上确定了程控单元的效率、速度和灵活性。
汇编程序设计语言供程控单元的应用者用于进行近似硬件的编程,该汇编程序设计语言在寄存器模型的基础上具有固定的指令组(指令系统(Instruction Set))。
这种程控单元的实例是由Infineon技术股份公司销售的具有16位架构的C166系列的处理器以及具有32位架构的三磁芯的处理器。这些程控单元具有存储设备、指令译码寄存器、地址寄存器和数据寄存器、处理位指令的流水线以及桶式移位器和位掩模发生器。现代的程控单元、尤其是具有流水线架构的处理器或协议处理器具有作为附加功能性的位字段操作(英语为:Bit Field Manipulation)。在进行位字段操作时,从第一数据串中取出位段(Bitsegment),处理该位段并且将该位段插入到第二数据串中的相应的位字段中,该位段由一个或多个被包含在第一数据串中的位组成。数据串例如可以含有字(32位)、双字(64位)、半字(16位)等等。
对于具有位字段操作的程控单元的一般的背景,参阅美国专利6,061,783、美国专利申请US2002/0120828A1以及参阅在开头所提及的Infineon技术股份公司的三磁芯微控制器的技术规范。在位字段操作方面,将这些文献的全部内容包括在本专利申请中。
位字段操作时的通常的指令是“传送(Move)”指令,其中,从第一数据字中取出若干位,并相应修改地插入到第二数据字中。用于位字段操作的该“传送”指令在汇编程序设计语言中具有以下的结构:MVR R #offset1 Rs #offset0 #bits利用“传送”指令MVR,将位长度为#bits的位段从位的位置为#offset0上的源寄存器Rs移动到位的位置为#offset1上的目标寄存器Rd。从形式上看,如下来描述该操作:
Rd(#bits,#offset1)<=Rs(#bits,#offset0)
为了转换具有简单的指令组的该“传送”指令,需要多个单个程序代码。以下应示范性地示出该“传送”指令的转换:
mvr           R2 0 R1 0 8               //请取第一字节
addi          R3 R2 1                   //请处理该字节
str           R15 R3                    //请存储结果
mvr           R2 0 R1 8 8               //请取第二字节,等等
addi          R3 R2 1
str           R15 R3
mvr           R2 0 R1 16 8
addi          R3 R2 1
str           R15 R3
mvr           R2 0 R1 24 8
addi          R3 R2 1
str           R15 0 R3 32 0 0
该程序的第一行说明,应在源寄存器的第一位置R1上取出位的位置0上的第一字节(8位),并且应移动到第二位置R2上的位的位置上。第二行表示了,就是处理(相加)该第二位置R2上的该位。将上一个处理步骤的结果R3插入和存储到目标寄存器中的位置R15上(第三行)。重复这些处理步骤,直至从源寄存器中取出全部32位、也就是整个字,处理该全部32位并且已写入目标寄存器中时为止。相应地因此根据上述程序中的第四行,取出和向前推移位的位置8上的第二字节。
示出,在该情况下,对于指令“传送”的简单功能总共必需12个指令步骤(程序代码)。多个指令步骤的缺点在于,指令存储器变得较大。由于经常对指令存储器进行存取,这直接导致较高的能耗。除此之外,大量指令步骤也导致要相应大地构造的存储器,这最终也增大了芯片面积,并且因此附加地使得整个程控单元更昂贵。
在具有寄存器的直接寻址的程控单元的情况下,已说明了以上的问题。在该寻址方式中,将寄存器的地址(或号码)直接作为(立即)值来说明。
除此之外,也存在寄存器间接的寻址,其中,寄存器的地址是另一个寄存器的内容。这种寻址方式相对于直接寻址具有以下的优点,即在提取指令时不必同时读取操作数地址。当在一个程序部分之内经常存取同一个操作数地址时,采用该寻址方式。
扩展方案是利用位移(Displacement)的寄存器间接的寻址,其中,从恒定的地址距离(位移)的地址寄存器的内容中计算出当前的地址。该地址距离带有符号(二进制补码),并且因此允许到地址寄存器中的基址的、正的或也可是负的地址距离。在进行这种存在于存储器中的固定结构中的数据存取时,应用该方法。因此通过改变地址寄存器中的基址,访问了下一个数据组中的相同的单元,或可以考虑可变的基址。
没有间接的存储器寻址的可能性的处理器在32位存储器的情况下将必须例如将三个单个位存放到32位宽的数据字中。该数据字的剩余的29位因此保持未使用。间接的数据寻址的该形式(以下也称为对数据存储器的位字段存取)因此减小了数据存储器的存储器大小,并且也因此有意义地减小了芯片面积。但是,这种对数据存储器的位字段存取不具有带有对单个位结构的顺序的访问的循环,因为在各自的存取时,将位的位置和这些位的位置的偏移值预定为恒定的值(所谓的立即值)。由此而来的问题也在于,存储器存取的数量总是保持相同,由此与传统的存储器存取相比较未考虑能源节省。
借助以下的程序来说明该问题,该程序在寄存器间接寻址的情况下描述了开头所述的“传送”指令MVR:
1di          R1 0 0x030            //请加载读指针0x30
1di          R3 0 0x040            //请加载写指针=0x40
1dr          R2 0 R1 0 8           //请取第一字节
nop
nop
addi         R3R2 1                //请处理该字节
str          R15 R3                //请存储结果
1dr                  R2 0 R1 8 8           //请取第二字节
nop
nop
add                  R3 R2 1
str                  R15 R3
1dr                  R2 0 R1 16 8          //请取第三字节
nop
nop
add                  R3 R2 1
str                  R15 R3
1dr                  R2 0 R1 24 8          //请取第四字节
nop
nop
addi                 R3 R2 1
str                  R15 0 R3 32 0 0
开始的两行说明,将读指针或写指针加载到相应的位置R1、R3上。随后(第三行)加载第一字节。在两个程序步骤(第四和第五行)之后,其中,未设置操作,所读出的字节根据第六行来处理,并根据第七行被存储为结果。重复该过程,直至已读出了所有四个字节时为止。因此得到针对“传送”指令、也就是用于移动由来自存储器的32位组成的单个字的总共22个指令步骤。但是,大数量的指令步骤和对存储器的经常存取导致了程控单元的高的功率消耗并且此外还导致了大的芯片面积。
在应用程控单元、尤其是具有固定指令组(指令系统)的程控单元时,存在以下需求,即在要实施的程序内更有效地设计经常重复的功能。
发明内容
本发明所基于的任务是,在程控单元中实现一种改进的、尤其是一种简化的指令处理。
根据本发明通过用于移动位字段的方法或程控单元来解决本发明所基于的任务。
因此规定了:
一种用于由于指令的实施而在程控单元中的存储设备中移动位字段的方法,其中,将第一存储单元内的位段移到第二存储单元中,该方法具有以下的方法步骤:
a)在第一起始点开始地,从第一存储单元的第一位字段中读出具有第一位长度的位段;
b)在第二起始点开始地,将所读出的位段存储到第二存储单元的第一位字段中;
c)将第一和/或第二起始点更新了预定的值;
d)存储针对随后的方法步骤的所更新的第一和/或第二起始点。用于在处理器、尤其是具有流水线架构的处理器中处理指令的程控单元具有
-其中存放了指令的存储器,
-具有至少一个从中可读出和/或可重新插入位段和/或位字段的存储单元,
-具有至少一个附加的寄存器,用于借助按照以上权利要求之一所述的方法来存储所更新的第一和/或第二起始点,
-具有至少一个设备,用于计算出所更新的第一和/或第二起始点,
-具有用于进行位字段操作的设备,该设备将第一位字段内的位段移到第二位字段的范围中。
由从属技术方案以及从参考附图的说明中可以获知有利的改进方案和扩展方案。
本发明所基于的知识是,不必持续地重新从存储器或寄存器中下载总是重复的程序步骤。因而,本发明所基于的思想在于,将这些重复的程序步骤嵌入到程序循环(Loop)中。因此,尤其是在大量重复的程序步骤的情况下,可以有意义地降低对此必要的指令的数量。单个程序步骤或程序功能的减少导致功率消耗的降低,并且除此之外,通过较小的存储器也导致存储器大小的降低。
不仅在存储器的寄存器间接的寻址的情况下,而且在直接的寄存器寻址的情况下,都可以借助本发明的方法或本发明的程控单元来有利地使存储器存取或寄存器存取保持非常低。
对于该功能性的实施,根据本发明规定了位的位置指针的更新。
对于该附加的功能性,本发明的方法有利地规定了,将最后的或替代地也将下一个位的位置存储为位的位置指针(起始点)。在重复的程序段的情况下,该位的位置指针说明了,应在哪个位置上存储或读出数据。这利用最后的位的位置指针通过固定偏移的增量来实现,该位的位置指针被存储在附加的寄存器中。于是从旧的、所存储的位的位置指针加上预定的偏移或预定的位长度中得出了新的位的位置指针。
对于在直接寻址的情况下的位字段操作,根据本发明引入附加的寄存器。该附加的寄存器包含程序循环的功能性,其方式是该程序循环包含位的位置,在该位的位置中在从数据串中读出位段之后应读出下一个位段。通过装设用于存储最后的位的位置的该附加的寄存器,有利地不改变寄存器的接线的数量。
通过本发明,尤其在从存储器中顺序地读出数据时,在应用可变的位的位置的情况下扩展了现有的功能性。为此目的规定了程控单元的架构,该程控单元将最后读出的数据(顺序地)存放在超高速缓冲存储器中,由此基于因此取消的存储器存取而进一步降低了功率消耗。这里因此涉及数据超高速缓冲存储器。
附图说明
以下借助附图中说明的实施例来详细阐述本发明。在此:
图1示出用于说明用于在直接寻址时进行位字段操作(Bit FieldManipulation)的本发明方法的示意图;
图2在方框电路图中示出本发明程控单元的流水线架构;
图3示出详细的方框电路图,用于说明图2的本发明程控单元的附加寄存器的实施;
图4示出用于在间接寻址时来移动位字段(Bit Field Movement)的本发明方法的示意图;
图5示出用于实施本发明方法的程控单元的方框电路图,该方法用于借助间接寻址来移动位字段。
在所有的附图中,只要没有另作说明,相同的或功能相同的元件和信号配备了相同的参考符号。
具体实施方式
本发明规定了,在具有流水线架构的程控单元中,对于重复的程序步骤或程序块引入了程序循环。该循环应该有利地在没有装设附加的寄存器接线的情况下是可能的。从中得到的程序具有以下的功能性:
Rd(#bits,offset1_reg)<=Rs(#bits,offset0_reg)
offset0_reg<=(offset_reg+#offset0)
offset1_reg<=(offset1_reg+#offset1)
在此,Rs表示源寄存器(寄存器源(Register Source)),而Rd表示目标寄存器(寄存器目的地(Register Destination))。offset0_reg和offset1_reg分别表示相应的寄存器的位的位置指针。#bit表示了位长度,而#offset0或#offset1表示了源寄存器和目标寄存器中的各自的偏移,在这些源寄存器和目标寄存器中各自的位的位置指针在随后的读出步骤或插入步骤中读出或插入相应的位段。第一行因此包含了,应将位置offset0_reg上的位长度为#bits的位段从源寄存器移动到位置offset1_reg上。下两行表示了本发明方法,其中,从以前分别应用的位的位置指针与相应的偏移的相加中得出了源寄存器和目标寄存器的两个当前的位的位置指针。
在汇编程序设计语言中,相应的程序具有以下语法:
MVRSO    Rd    #offset1    Rs    #offset0   #bits
在简化的转换中从中得出了具有以下步骤的程序:
init             1 0 0 0 0
1di              R4 0 3           //请加载计数器=3
_loop:mvrso      R2 0 R1 8 8
addi             R3 R2 1
str              R15 R3
decibr           R4 1_loop 1      //请以1来递减;当计数器=
                                  0时,跳跃指令。
根据该程序的行1,预加载寄存器位置,其方式是将该寄存器位置初始化。在行二中将计数器的计数器读数设置到3。行三至六包含了程序循环,其中,根据行三,分别从源寄存器的相应的位的位置中读出和写入一个字节。此后更新偏移寄存器。在程序行5中,将R3的内容存储到在R15中含有的地址上(间接寻址)。最后的行6将计数器读数分别向下设置了1(递减)。此外,还应重新在行三处继续该循环,直至计数器读数是零时为止。与开头对于“传送”指令MVR必要的12个指令相比较,单纯引入循环将对于“传送”指令MVR必要的指令的数量减少到了总共5个。
通过更新被分配给源寄存器和目标寄存器Rs、Rd的位的位置指针offset0_reg、offset1_reg,以上程序流程中的循环是可能的。图1示出用于说明本发明方法的示意图。
在图1中分别利用Rs和Rd来表示来自源寄存器或目标寄存器的数据字。首先初始化位的位置指针offset0_reg、offset1_reg,也就是在本情况下将位的位置指针offset0_reg、offset1_reg设置到0。在第一步(1)中,将从由位的位置指针offset0_reg=0位确定的起始位置开始的第一字节(#bits=8位)写到目标寄存器Rd的相应的范围中,该范围从由位的位置指针offset1_reg=0位确定的起始位置开始。在第二步(2)中,将源寄存器Rs的第二字节写到目标寄存器Rd中。再度通过位的位置指针offset0_reg、offset1_reg来确定起始位置,这些起始位置确定了在哪个位置上读出或写入第二字节。但是,在第二步(2)之前,已更新了位的位置指针的值,其方式是通过与各自的偏移值#offset0、#offset1相加来更新分别为旧的位的位置指针、也就是offset0_reg和offset1_reg的值。在本实例中,两个偏移值是相同的,并且为#offset0=#offset1=8位。因此在第二步(2)中,针对起始位置的确定考虑了所更新的位的位置指针offset0_reg、offset1_reg。对于其它的字节(步骤(3),(4)),相应地更新位的位置指针offset0_reg、offset1_reg。
为了更新各自的位的位置指针值,必需装设附加的寄存器。以下借助图2和3来详细阐述具有这种附加的寄存器的程控单元的结构,该附加的寄存器用于存储各更新过的位的位置指针值。
图2在此借助方框电路图来示出具有附加的寄存器的本发明程控单元的流水线架构。
在图2中利用参考符号1表示了这里被构造为流水线处理器的相应的程控单元。在本实施例中装设了三级流水线。参考符号2至4在此表示单个流水线级的不同的流水线寄存器。程控单元1含有其中存放了固定指令组(指令系统)的指令存储器5。指令存储器5通过流水线级2与指令译码器6相连接。在指令译码器6后面连接了源寄存器7,从该源寄存器7中与由指令译码器6译码的指令有关地读出数据,并且该数据通过流水线级3被输送给计算单元8。计算单元8这里被构造为算术逻辑单元(ALU)。此外,在第二流水线级3中,还可装设在输入侧同样与源寄存器7耦合的数据存储器9。ALU单元8和数据存储器9通过流水线级4一方面与输出接线10而另一方面与桶式移位器11相连接。桶式移位器11含有用于进行位字段操作的设备。桶式移位器11在输出侧与目标寄存器12相耦合。
根据本发明装设了附加的寄存器13,用于实施以上借助图1示出的功能性,以更新源寄存器7和目标寄存器11的位的位置指针。在图2中,该附加的寄存器13被布置在第二流水线级3中并且与ALU单元8相耦合。
图3示出详细的方框电路图,用于说明图2的本发明程控单元的附加寄存器的实施。
从程序存储器5中读出单个指令inst,并且将该单个指令inst输送给指令译码器6。指令译码器6借助信号#reg0、#reg1生成源寄存器Rs和目标寄存器Rd的各自的寄存器地址。这些信号#reg0、#reg1被输送给寄存器20,其中,寄存器20包含了源寄存器7和目标寄存器12的功能性。与寄存器地址#reg0、#reg1有关地,从数据寄存器20中输出数据信号data1、data0,并且将该数据信号data1、data0输送给多路复用器21。
此外,程控单元还含有桶式移位器11、掩模发生器22以及加法器23。元件11、22、23用于进行位字段操作。指令译码器6生成说明了位长度和被输送给掩模发生器22的信号#bits。从此出发,掩模发生器22生成用于进行位字段操作的掩模。该位字段操作的作用方式对于专业人员一般是公知的,并且例如在已经在说明书引言中列出的文献中详细进行了说明,以致这里不应对此深入讨论。
此外,指令译码器6在输出侧还提供两个偏移信号#offset0、#offset1,这两个偏移信号#offset0、#offset1在第一工作方式中直接被输送给加法器23。在该第一工作方式中,将加法器23中的信号#offset1从信号#offset0中扣除,并且将由此产生的信号sh0输送给桶式移位器11。除此之外还输送数据信号data0的桶式移位器11从此出发生成被输送给多路复用器21的输出信号。
根据本发明,程控单元具有除了第一工作方式之外还实现了第二工作方式的附加的寄存器13。该附加的寄存器13具有两个输入和两个输出。加法器24、25分别被连接在该附加的寄存器13的输入之前,多路复用器26、27分别被连接在两个输出之后。该附加的寄存器13的输出信号offset0_reg、offset1_reg一方面被输送给分别连接在后面的多路复用器26、27。另一方面,这些信号offset0_reg、offset1_reg通过反馈环路被输送给各自的加法器24、25,并且在那里与偏移信号#offset0、#offset1相加。将这些各自相加的结果分别输入耦合到附加的寄存器13的相应的输入中。
通过同样由指令译码器6提供的起动信号(Enable-Signal)#so_enb来控制多路复用器26、27以及附加的寄存器13。
借助图2和3中示出的装置能有利地执行指令“传送”的实施,并且以很简单的、节省功率的方式来执行位字段操作。
以上借助图1至3说明的实施例涉及已进行位字段操作的直接寻址。在以下的、借助图4和5说明的实施例中,将本发明方法用于存储器存取的寄存器间接的寻址,其中,应移动位字段(Bit FieldMovement)。在开头所述的“传送”指令的情况下,本发明方法在该情况下实施以下的指令:在读过程中:
Rd<=mem((base_adr+#disp),bit_pos,#bits)
在写过程中:
mem((base_adr+disp),bit_pos,#bits)<=Rs
在此,Rs和Rd再度表示源寄存器或目标寄存器的内容。base_adr表示被构造为堆栈存储器的存储器中的起始地址。#disp表示了地址到堆栈存储器中的基址的地址距离(位移),而bit_pos表示了位的位置指针。#b its再度表示位长度、也就是要移动的位的数量。对于汇编操作语言,在读过程的情况下因此得出了以下语法:
LDX Rd #bits @Rs #disp #auto_increment
在此,将寄存器@Rs设置为基址base_adr=Rs[31:5],并且设置位指针bit_pos=Rs[4:0]。#auto_increment=1表示,将位的位置指针分别继续前进(weitersetzen)了位#bits的数量。此外还适用Rs<=Rs+#bits。
指令存储STX具有类似的汇编语法:
STX  @Rd  #bits  Rs  #disp  #auto_increment
这里设置了基址为base_adr=Rd[31:5]的寄存器@Rd和位的位置bit_pos=Rd[4:0]。
在简化的转换中因此得出了读指令中的以下的程序流程:
1di            R4 5 0x030        //请加载位置指针=0x30,
                                   bit_pos=0
1di            R5 5 0x040        //请加载位置指针=0x40,
                                   bit_pos=0
1di            R6 0 8            //请处理4x8位
_loop:1dx      R2 8 R4 0x08 1    //请加载0x030+0x08
nop
nop
addi           R3 R2 1
str            R5 8 R3 0x080 1
decibr         R6 1_loop 1       //请递减了1;当计数器不是1
                                 时,跳跃指令
根据该程序的开始的两行首先加载堆栈存储器的位置指针。此外,还将位置指针bit_pos设置到0。根据行三确定,必须分别处理1个字节8次。行四至九说明了本发明的程序循环。在此,首先根据行四来加载位段,根据行七相应地处理,并根据行八重新写到目标寄存器的相应的行上。根据行九将循环计数器后移了一位,并且该循环重新从前面开始,直至循环计数器到达零时为止。
这里与在说明书引言中对于同一个指令必需的22个指令相比较,为了从存储器中读出和移位一个数据字,仅仅得出九个指令。因此,导致功率消耗的显著降低。
借助图4中的示意图,应阐述用于在间接寻址时移动位字段(BitField Movement)的本发明方法。
在利用位移进行间接寻址的情况下,源寄存器的寄存器内容Rs确定,应在堆栈存储器9的哪个位置上读出数据。为此目的,源寄存器Rs具有其中说明了存储器9中的相应地址的第一位段30。信号#disp说明了涉及在源寄存器中所说明的地址的地址距离,该地址因此确定了当前的地址。第二位段31含有位置指针bit_pos,该位置指针bit_pos说明了,应在当前地址的哪个位置上读出位长度为#bits的数据。于是,将从堆栈存储器9中读出的位段32插入到具有内容Rd的目标寄存器的位段33中。
在此,在图4中的实例中,以目标寄存器Rd的零开始地将位段32写入位段33中,可是按照实施方案也可以在目标寄存器Rd的任意位置写入。
借助本发明方法,在源寄存器7的保持恒定的内容Rs中,持续地将来自堆栈存储器9的数据段32写入位置33上的目标寄存器中。地址距离#disp在此始终保持恒定。仅仅更新下一个读出步骤的各自的位的位置bit_pos。
对于第一读出步骤n例如适用:
n:bit_pos=16;#bits=10
对于下一个读出步骤n+1,于是在32位的数据字的情况下适用:
n+1:bit_pos=10+16=26;#bits=6
在有利的改进方案中,对于数据段32到达堆栈存储器9中的相应的数据字34的末端的情况,实现进位(Uebertrag)到位段30中的地址内容。在此,将存放在位段30中的地址与1相加。这引起,堆栈存储器9中的地址向下偏移了一行,并且因此在恒定的地址距离时也将当前的地址向下偏移了一行。除此之外,通过进位将位置指针由于位段31中的位的位置的复位而设置到零,以致可以从零开始地读出下一行中的数据字。
图5示处实施本发明方法的程控单元的方框电路图,该方法用于借助根据图4的间接寻址来移动位字段。图5也像上述的图3那样仅仅示出程控单元的示意图,也就是在那里为了更好的清晰度没有示出尤其不是直接对于描述本发明所必需的功能单元。
区别于图3的直接寻址,未将指令代码#reg0、#reg1输入耦合到指令译码器6中,而是直接输入耦合到寄存器20中。信号#reg0、#reg1对应于源寄存器或目标寄存器的寄存器内容Rs、Rd。
指令译码器6生成输出信号#disp,该输出信号#disp在加法器40中与寄存器20的输出信号A一起相加。从中得出的信号表示堆栈存储器9中的当前的地址,将该当前的地址输送给堆栈存储器9的地址输入a_mem。在堆栈存储器9的输出o_mem上,从各自的当前的地址出发,给桶式移位器11输送要读出的位段。
此外,指令译码器6还生成被输送给掩模发生器22的信号#bits,该掩模发生器22从此出发生成被输送给桶式移位器11的信号mask。该桶式移位器11从该信号mask和从由堆栈存储器9读出的数据信号中生成被写入到目标寄存器20中的已移位的数据信号。除此之外,更新下一个寻址的位置指针。
图5中的程控单元此外还具有用于控制从存储器9中的读过程的控制单元41。通过由指令译码器6输送给控制单元41的信号#cs,才使得对堆栈存储器9的存储器存取有可能。为此目的,堆栈存储器9具有控制输入cs_mem,控制单元41的由信号#cs导出的控制信号cs_o可被输入耦合到该控制输入cs_mem中。
在已实现的读操作或写操作之后,将同样由指令译码器6提供使用的信号#auto_incrememt用于控制读指针或写指针的递增或也可是递减。
在有利的改进方案中,在存储器9的数据输出o_mem和桶式移位器11之间装设超高速缓冲存储器42。超高速缓冲存储器42此外与输出或者存储器单元41端相连接,并且因此可以施加控制信号cs_o。通过输入adr给控制单元41连接了各自当前的地址,利用该地址可由寄存器20来寻址存储器9。控制单元41将该当前的地址与之前已经输入耦合的地址进行比较,并且因此确定,当前地址是否事先曾已经存在。如果该比较得出了,该地址已经存在,则通过控制信号cs_o去激活存储器9。相反,从超高速缓冲存储器42中读出相应的数据。从超高速缓冲存储器42中读出的位段通过桶式移位器11来移动,并且通过掩模发生器21来掩蔽,并然后作为新的基址重写到寄存器20中的目标寄存器中。对此的前提是,对应于各当前地址的数据还存在于超高速缓冲存储器42中。由于对于该十分有利的实施方案不是专门访问堆栈存储器9,而是可以直接从超高速缓冲存储器42中读出相应的数据,所以有利地得出了能耗的有意义的降低。
尽管以上借助优选的实施例已说明了本发明,但是本发明不局限于此,而是可以以多种多样的方式来修改.
因此程控单元可以例如被构造为微控制器、微处理器、信号处理器等等。在此也可以涉及具有流水线架构的处理器或者协议处理器。
除此之外,以上已借助32位处理器架构说明了本发明,可是本发明不局限于此。更确切地说,这里可以装设具有64位、16位、8位或者任意其他的位长度的任意的处理器架构。
本发明也不局限于以上的、亦即直接的寄存器寻址或利用位移的间接的寄存器寻址的寻址方式,而是可被扩展到任意的寻址方式上。
除此之外,所说明的流水线结构也可以具有多于或少于三级。
本发明此外还不固定到被构造为寄存器的存储器的读出或写入上,而是可以在本发明的范围内被扩展用于例如地址寄存器或者数据寄存器的任意存储器的读出或写入,但是也可被扩展到像RAM、SRAM等等的数据存储器上。
在以上的实施例中,第一和/或第二位字段被构造为32位宽的数据字,并且要读出的位段具有8位的位长度。但是本发明不局限于此,而是当然可被扩展到任意宽的位字段上。重要的只是,位段具有至少一个相同的或者比位字段小的位长度。
参考符号列表
1                  程控单元
2-4                流水线级
5                  指令存储器、程序存储器
6                  指令译码器
7                  源寄存器
8                  计算单元、ALU
9                  数据存储器
10                 输出接线
11                 桶式移位器
12                 目标寄存器
13                 附加的寄存器
20                 寄存器
21                 多路复用器
22                 掩模发生器
23-25              加法器
26-27              多路复用器
30                 地址的位段
31                 位置指针的位段
32                 要读出的数据的位段
33                 要读入的数据的位段
34                 数据字、数据内容
40                 法器
41                 控制单元
42                 超高速缓冲存储器

Claims (34)

1.用于移动位字段的方法,其中,为了将位段从第一存储单元移动到第二存储单元,使用包括流水线架构的程控单元,该程控单元包括:
-指令译码器(6),用于从存储器(5)中读出单个指令;
-用于进行位字段操作的设备(11,22,23),该设备生成具有位长度(#bits)的位字段掩模;
-附加的寄存器(13),该附加的寄存器(13)被布置在指令译码器(6)的下游,其中,附加的寄存器(13)的输出值(offset0_reg,offset1_reg)一方面被反馈,增加偏移值(#offset0,#offset1)并被提供给附加的寄存器(13)的输入侧,而另一方面被提供给用于进行位字段操作的设备(11,22,23),
该方法在一个循环内包括以下步骤:
(a)在位字段内的第一起始点上开始地,从第一存储单元的第一单个位字段中读出具有第一位长度的位段;
(b)在位字段内的第二起始点上开始地,将所读出的位段存储到第二存储单元内的第一单个位字段中;
(c)通过递增这些偏移值来将第一和/或第二起始点均更新预定的偏移值;
(d)针对随后的方法步骤存储所更新的第一和/或第二起始点;
(e)跳回到该循环的方法步骤(a)。
2.按权利要求1所述的方法,
其特征在于,
在所述方法步骤(d)之后设置以下的方法步骤:
(e)再次跳回到所述方法步骤(a)。
3.按权利要求1或2之一所述的方法,
其特征在于,
在所述方法步骤(a)之前进行初始化。
4.按权利要求1或2之一所述的方法,
其特征在于,
在所述方法步骤(a)之前进行所述起始点和/或所述地址的复位。
5.按权利要求1或2之一所述的方法,
其特征在于,
在所述方法步骤(a)到所述方法步骤(c)之间的时期内处理所读出的位段。
6.按权利要求1或2之一所述的方法,
其特征在于,
所述预定的值在所述第一起始点的情况下是第一偏移值而在所述第二起始点的情况下是第二偏移值。
7.按权利要求6所述的方法,
其特征在于,
所述第一偏移值等于所述第二偏移值。
8.按权利要求1或2之一所述的方法,
其特征在于,
所述第一偏移值和/或所述第二偏移值相同地对应于所述位段的位长度。
9.按权利要求1或2之一所述的方法,
其特征在于,
所述第一和所述第二偏移值是相等的。
10.按权利要求1或2之一所述的方法,
其特征在于,
通过所述第一偏移值和所述第二偏移值的相加来更新所述偏移值。
11.按权利要求1或2之一所述的方法,
其特征在于,
通过所述位长度的相加来更新所述偏移值。
12.按权利要求1或2之一所述的方法,
其特征在于,
所述第一和所述第二起始点不是相等的。
13.按权利要求1或2之一所述的方法,
其特征在于,
将所述方法用于进行位字段操作。
14.按权利要求1或2之一所述的方法,
其特征在于,
在所述直接寄存器寻址时应用所述方法,并且将所述第一存储单元构造为用于存储地址的源寄存器,而将所述第二存储单元构造为目标寄存器。
15.按权利要求1或2之一所述的方法,
其特征在于,
在存储器的所述寄存器间接寻址时应用所述方法,并且将所述第一存储单元构造为半导体存储器,而将所述第二存储单元构造为目标寄存器。
16.按权利要求15所述的方法,
其特征在于,
所述半导体存储器是成堆组织的存储器。
17.按权利要求1或2之一所述的方法,
其特征在于,
存储所述最后的地址,并且将所述当前地址与所述最后的、所存储的地址进行比较,其中,对于当前的和所存储的地址的比较得出了这些地址是相同的情况,不激活并因此不读出所述第一存储单元。
18.按权利要求1或2之一所述的方法,
其特征在于,
存储所述最后的地址,并且将所述当前地址与所述最后的、所存储的地址进行比较,其中,对于当前的和所存储的地址的比较得出了这些地址是不相同的情况,从所述第一存储单元中读出所述数据。
19.按权利要求18所述的方法,
其特征在于,
将来自所述第一存储单元的数据写入超高速缓冲存储器。
20.按权利要求1或2之一所述的方法,
其特征在于,
将所述被分配给当前地址的位段从超高速缓冲存储器中读出到所述第二存储单元中。
21.按权利要求1或2之一所述的方法,
其特征在于,
对于在所述第一位字段内的位段到达相应的位字段的末端的情况,实现转移到被分配给所述位字段的地址。
22.按权利要求21所述的方法,
其特征在于,
在所述转移中,实现被分配给所述位字段的地址与一的相加。
23.按权利要求1或2之一所述的方法,
其特征在于,
所述位段是要读出的和要处理的数据项的分量。
24.按权利要求1或2之一所述的方法,
其特征在于,
所述位段是要读出的和要处理的地址的分量。
25.按权利要求1或2之一所述的方法,
其特征在于,
所述位字段包含数据字、或数据字的小部分或者多个数据字。
26.按权利要求1或2之一所述的方法,
其特征在于,
在重复实施指令时,相继处理不同的位字段。
27.一种程控单元,用于将位段从第一存储单元移动到第二存储单元,该程控单元具有
-流水线架构;
-指令译码器(6),用于从存储器(5)中读出单个指令;
-用于进行位字段操作的设备(11,22,23),该设备生成具有位长度(#bits)的位字段掩模;
-附加的寄存器(13),该附加的寄存器被布置在指令译码器(6)的下游,其中附加的寄存器(13)的输出值(offset0_reg,offset1_reg)一方面被反馈,增加偏移值(#offset0,#offset1)并被提供给附加的寄存器(13)的输入侧,而另一方面被提供给用于进行位字段操作的设备(11,22,23)。
28.按权利要求27所述的程控单元,
其特征在于,
装设指令译码器,用于从所述存储器中读出和译码至少一个指令。
29.按权利要求27或28之一所述的程控单元,
其特征在于,
在直接寄存器寻址的情况下,所述第一存储单元被构造为用于存储地址的源寄存器,而所述第二存储单元被构造为目标寄存器。
30.按权利要求27或28之一所述的程控单元,
其特征在于,
在寄存器间接寻址的情况下,所述第一存储单元是半导体存储器,而所述第二存储单元被构造为目标寄存器。
31.按权利要求30所述的程控单元,
其特征在于,
所述半导体存储器是成堆组织的存储器。
32.按权利要求27或28之一所述的程控单元,
其特征在于,
装设一电桥,借助该电桥可以根据释放信号来桥接或接通所述附加的寄存器。
33.按权利要求27或28之一所述的程控单元,
其特征在于,
装设控制单元,该控制单元在寻址所述第一存储单元时将所述当前地址与之前已经存在的地址进行比较,其中,对于该比较得出所述当前地址之前已经存在的情况,未激活地设置或桥接所述第一存储单元。
34.按权利要求33所述的程控单元,
其特征在于,
装设超高速缓冲存储器,其中,对于所述控制单元识别出所述当前地址之前已经存在的情况,将被分配给所述当前地址的位段从超高速缓冲存储器中读出到所述第二存储单元中。
CNB2004800151951A 2003-04-02 2004-03-23 移动位字段的方法和程控单元 Expired - Fee Related CN100465880C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10314928A DE10314928A1 (de) 2003-04-02 2003-04-02 Verfahren und programmgesteuerte Einheit zur Bitfeldverschiebung
DE10314928.7 2003-04-02

Publications (2)

Publication Number Publication Date
CN1799025A CN1799025A (zh) 2006-07-05
CN100465880C true CN100465880C (zh) 2009-03-04

Family

ID=33103170

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800151951A Expired - Fee Related CN100465880C (zh) 2003-04-02 2004-03-23 移动位字段的方法和程控单元

Country Status (5)

Country Link
US (1) US7444488B2 (zh)
EP (1) EP1620790A2 (zh)
CN (1) CN100465880C (zh)
DE (1) DE10314928A1 (zh)
WO (1) WO2004088503A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103229139A (zh) * 2010-11-23 2013-07-31 Arm有限公司 具有位域操纵指令的数据处理装置及方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9740484B2 (en) * 2011-12-22 2017-08-22 Intel Corporation Processor-based apparatus and method for processing bit streams using bit-oriented instructions through byte-oriented storage

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0382246A2 (en) * 1989-02-09 1990-08-16 Nec Corporation Bit addressing system
US5121474A (en) * 1987-09-30 1992-06-09 Mitsubishi Denki Kabushiki Kaisha Bit string data processor using dynamically addressable bit locations in memory so overlapping strings do not destroy data in memory
US5765216A (en) * 1994-01-21 1998-06-09 Motorola, Inc. Data processor with an efficient bit move capability and method therefor
US6061783A (en) * 1996-11-13 2000-05-09 Nortel Networks Corporation Method and apparatus for manipulation of bit fields directly in a memory source
CN1263306A (zh) * 1999-02-05 2000-08-16 Arm有限公司 在数据处理系统内的位图字形数据存储
US6332188B1 (en) * 1998-11-06 2001-12-18 Analog Devices, Inc. Digital signal processor with bit FIFO

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2520882B2 (ja) * 1986-08-27 1996-07-31 株式会社日立製作所 デ−タ処理装置およびデ−タ処理方法
US5210835A (en) * 1986-08-27 1993-05-11 Ken Sakamura Data processing system having apparatus for increasing the execution speed of bit field instructions
US6128725A (en) * 1997-01-24 2000-10-03 Texas Instruments Incorporated Microprocessor with an instruction for setting or clearing a bit field

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121474A (en) * 1987-09-30 1992-06-09 Mitsubishi Denki Kabushiki Kaisha Bit string data processor using dynamically addressable bit locations in memory so overlapping strings do not destroy data in memory
EP0382246A2 (en) * 1989-02-09 1990-08-16 Nec Corporation Bit addressing system
US5765216A (en) * 1994-01-21 1998-06-09 Motorola, Inc. Data processor with an efficient bit move capability and method therefor
US6061783A (en) * 1996-11-13 2000-05-09 Nortel Networks Corporation Method and apparatus for manipulation of bit fields directly in a memory source
US6332188B1 (en) * 1998-11-06 2001-12-18 Analog Devices, Inc. Digital signal processor with bit FIFO
CN1263306A (zh) * 1999-02-05 2000-08-16 Arm有限公司 在数据处理系统内的位图字形数据存储

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103229139A (zh) * 2010-11-23 2013-07-31 Arm有限公司 具有位域操纵指令的数据处理装置及方法
US9207937B2 (en) 2010-11-23 2015-12-08 Arm Limited Apparatus and method for processing a bitfield manipulation instruction having a control value indicating insertion or extraction form
CN103229139B (zh) * 2010-11-23 2016-06-08 Arm有限公司 具有位域操纵指令的数据处理装置及方法
US9619225B2 (en) 2010-11-23 2017-04-11 Arm Limited Apparatus and method including an instruction for performing a logical operation on a repeating data value generated based on data size and control parameter portions specified by the instruction
US10521232B2 (en) 2010-11-23 2019-12-31 Arm Limited Data processing apparatus and method for processing a SIMD instruction specifying a control value having a first portion identifying a selected data size and a second portion identifying at least one control parameter having a number of bits that varies in dependence on a number of bits comprised by the first portion

Also Published As

Publication number Publication date
CN1799025A (zh) 2006-07-05
DE10314928A1 (de) 2004-11-04
WO2004088503A3 (de) 2005-12-01
WO2004088503A2 (de) 2004-10-14
US20060101248A1 (en) 2006-05-11
EP1620790A2 (de) 2006-02-01
US7444488B2 (en) 2008-10-28

Similar Documents

Publication Publication Date Title
US4454578A (en) Data processing unit with pipelined operands
US7386844B2 (en) Compiler apparatus and method of optimizing a source program by reducing a hamming distance between two instructions
DE69233412T2 (de) Vorrichtung und Rechnerprogrammprodukt zur Ausführung von Verzweigungsbefehlen
US6581152B2 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
CN104350492B (zh) 在大寄存器空间中利用累加的向量乘法
CN113050990A (zh) 用于矩阵操作加速器的指令的装置、方法和系统
USRE32493E (en) Data processing unit with pipelined operands
GB2363480A (en) Predicated execution of instructions in processors
US10872642B2 (en) System comprising a memory capable of implementing calculation operations
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
CN112579159A (zh) 用于矩阵操作加速器的指令的装置、方法和系统
US6292845B1 (en) Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
US5307300A (en) High speed processing unit
US6542989B2 (en) Single instruction having op code and stack control field
JP2008513878A (ja) 機能単位が読み出しポートを共有するデータ処理回路
CN100465880C (zh) 移动位字段的方法和程控单元
JP2000200196A (ja) 拡張命令語を有する中央処理装置
US7143268B2 (en) Circuit and method for instruction compression and dispersal in wide-issue processors
US7340591B1 (en) Providing parallel operand functions using register file and extra path storage
JP2007122626A (ja) マイクロプロセッサ
KR950012118B1 (ko) 병렬 파이프라인 명령 처리 장치
CN101515229B (zh) 数据处理器
CN100511278C (zh) 流输入读取的多媒体扩展指令的设计与实现方法
JPH1078872A (ja) 複数命令並列発行/実行管理装置
US8631173B2 (en) Semiconductor device

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090304