CN101206635A - 处理器中执行掩码存储操作的方法和集成电路 - Google Patents
处理器中执行掩码存储操作的方法和集成电路 Download PDFInfo
- Publication number
- CN101206635A CN101206635A CNA2007101968611A CN200710196861A CN101206635A CN 101206635 A CN101206635 A CN 101206635A CN A2007101968611 A CNA2007101968611 A CN A2007101968611A CN 200710196861 A CN200710196861 A CN 200710196861A CN 101206635 A CN101206635 A CN 101206635A
- Authority
- CN
- China
- Prior art keywords
- mask
- data
- byte
- instruction
- address
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000003860 storage Methods 0.000 claims description 94
- 230000015654 memory Effects 0.000 claims description 74
- 238000012545 processing Methods 0.000 claims description 13
- 230000001419 dependent effect Effects 0.000 claims description 2
- 230000014509 gene expression Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 101150012579 ADSL gene Proteins 0.000 description 4
- 102100020775 Adenylosuccinate lyase Human genes 0.000 description 4
- 108700040193 Adenylosuccinate lyases Proteins 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
Abstract
本发明涉及一种处理器中执行掩码存储操作的方法和集成电路,用于加速处理器或基于处理器的系统/芯片中掩码存储操作的处理。本发明提供了一组指令,该组指令可支持逐字节谓词掩码下的存储操作。本发明加速了任意排列小传输的处理,如那些被xDSL调制解调器用来处理ATM信元或Reed Solomon码字的传输。
Description
技术领域
本发明涉及可编程数字处理器,更具体地说,涉及一种在处理器系统中使用的数据储存指令。
背景技术
任意排列或大小的数据传输用于某些软件功能的执行。在数据通信领域,可能会遇到这种传输。举个例子,在处理具有固定大小单元如53字节ATM信元的序列时,在处理构成Reed-Solomon码字(其大小可以在3到255字节之间)的数据块时,或者在处理可变大小的数据包流时(各个数据包的的大小可在几字节到一千字节以上)。
标准的可编程数字处理器系统包括存储器,其中数据存储最小的单个可存取单元具有第一大小(如一个字节保存8位),而存储器的优先存取机制可以以具有第二大小(比第一大小大,例如32位的字,或64位的长字等)的单个存取单元进行存储器数据进出传输。在许多这种系统中,处理器将大于1个字节的数据单元存入存储器只能全部同时完成,或只能在某些排列下有效执行,这是由处理器数据寻址方案决定的。
举个例子,设想一种典型的系统,包括处理器和接入其中的存储器。为了举例说明(尽管原理的应用与这些特定细节无关),选择的处理器是64位机器。也就是说,该处理器中单个寄存器操作和保存数据值的基本大小是64位单元,等于八个8位字节,或存储器中的一个完整存储单元。该存储器是由64位宽(长字节)的存储单元阵列构成,其中每个64位单元可在单个存储操作中写入。该存储器也可在单个存储操作中存储单独的字节,或16位半字,或32位字。
为了让多数存取类型能够使用而又不会过度增加逻辑的复杂度,此类系统中处理器和存储器之间的接口一般只使用“自然队列(natural alignment)”提供存取。即,一个字节可自由存储在指定8字节长字存储单元中的偏移量为{0,1,2,…7}的八个不同字节中的任意位置,一个半字只能存储在4个均匀偏移地址{0,2,4,6}之一处(即半字对齐),而一个字只能写入两个排列字偏移地址{0,4}之一中,字对齐。
我们还要考虑到,存储指令存储的数据单元小于处理器普通寄存器的大小的情况是很典型的,就是从一个64位寄存器中存储半字(16位,两个8位字节),通常只用来支持在源寄存器中存储这种最低有效子单元。该限制通常是为了减少处理器中存储器接口线路的复杂性,或是为了防止相异指令的数目变的过大,亦或是以上两种原因。考虑到示例系统的后一原因,需要15个相异指令来使寄存器中的所有自然排列的子单元针对4种大小(字节,半字,字,长字,分别在源寄存器中有8、4、2、1个可能自然排列的位置)都能直接存储。即使如此,对于半字和全字大小的情形,也不允许源寄存器中非自然排列的单元存储。相反,受限制的情形只需要4个相异指令来支持存储操作的4种大小。编程者可通过合并指令来实现任何其它情形(如在右移指令后跟着使用存储指令)。
在此类系统中,如上所述,通常需要能够在存储器中任意位置存储单独的字节。这种存储(例如由“存储字节”指令实现)暗指存储器中无论哪个完整大小(64位)的存储位置都包括特殊的字节位置,因为基本存取单位是64位宽的。尽管如此,存储操作必须以此方式实现,以此避免将任何数据存至该同一长字存储单元中的其它字节位置。为此,许多存储器系统都是用“字节支持(byte-enable)”信号来实现的。“字节支持”信号是为存储器整个宽度中每个字节通道而定义的(例如,针对8字节(长字)宽存储器有八个信号)。为每个字节通道选择的这些信号用于判断在执行存储操作时,选择的长字存储器存储位置的该部分处的字节是否将由通过对应通道内的存取路径提供的新数据所覆盖。字节支持信号通常在处理器的存储器存取逻辑中生成,其根据每个执行的存储操作的特定细节而定。在处理器向存储器写数据而执行存储指令的操作过程中,针对每个数据字节在存取路径上传送一个字节支持信号。
为了在任意使用此系统(例如存储以偏移地址3开始的4字节的字)的队列中完成数据存储,或为了存储高达基本存储单元大小的任意大小单元(例如数据中一个5字节部分存储在偏移地址2..6),编程者必须开发一种使用处理器中可用存储器存储指令的算法。一种达到此目的的方式包括读出目前存储在目标存储器位置中的数据,然后将它与源数据合并,补在由任意排列引起的间隙里面。完整存储单元大小的合并数据然后可写入目标存储器位置。尽管如此,该算法可能会很慢,因为可能存在从目标位置读出数据的延时。该算法也可能很复杂,而且包括几个指令,特别是如果存储操作的大小和相对的排列未预先固定的情况下。此种算法在即将存储的目标存储器位置相邻近的情况下会对存储器位置的使用带来某些约束。
另一种方法中,任意排列的将要存储的数据可分割成多个更小的部分,每个部分具有单独的大小并重新排列,以满足接口的约束条件并单独存储。然而,这种算法与自然排列的存储操作相比,也可能比较复杂并且很慢。因而这种算法的软件实现可能不太方便,并且不会用作通用的机制,因为其成本太高。
因此,我们需要一种能显著减少以任意排列或任意大小执行数据存储的成本和复杂性的系统和方法。
发明内容
本发明包括一种在目标存储器中存储数据的方法。该方法包括以下步骤:发送掩码存储指令到处理器,然后在处理器中处理该掩码存储指令。根据本发明的一个实施例,处理掩码存储指令的步骤还包括确定数据寄存器、目标地址和掩码的步骤,以及确定数据寄存器中数据的哪个字节不被掩盖的步骤,以及将数据寄存器中所述未被掩盖的字节写入目标存储器的步骤。
本发明也包括一种用于处理存储器存取指令的集成电路。该集成电路包括处理器、数据寄存器、谓词寄存器(predicate register)和用于处理器将数据存入存储器的器件。该存储器可包含在此集成电路中,或在其外部。处理器设定来将包含在数据寄存器中的数据存储到存储器里。根据本发明实施例,处理器还通过询问谓词寄存器读出掩码,并仅当掩码表明数据的字节要储存时,将数据的每个字节从数据寄存器存储到存储器。
本发明还包括一种创建掩码的方法,其中掩码定义了字节序列中哪些字节要被存储。该方法包括以下几个步骤:传送一组掩码指令,从所述指令中确定掩码结果位置、偏移地址和字节数,以及通过字节数减去偏移地址来决定数据大小。如果数据大小小于或等于0,掩码设为全0。如果数据大小大于掩码的位宽,掩码设为全1。如果数据大小大于0,且小于或等于掩码的位宽,从掩码的最低有效位开始,与数据大小对应的掩码位的连续序列将被设为1,并且掩码的剩余位将设为0,以此来形成分配给已确定的掩码结果位置的掩码值。掩码中的每个位的值对应于目标存储器位置中的一个字节位置。根据本发明实施例,掩码中的0值表示对应的字节位置将不被存储,而掩码中的1值表示对应字节位置将被存储。在另一个替代实施例中,0和1的意思交换了,所以0位表示相应字节位置应该存储,而1位不应该存储。
本发明另外还提出了创建掩码的第二种方法,其中掩码定义了字节序列中的哪些字节要存储。第二种方法包括以下步骤:传送一组掩码指令,从指令中确定掩码结果位置、偏移地址和字节数,以及通过字节数减去偏移地址决定数据大小。如果数据大小小于或等于0,掩码设为全1。如果数据大小大于掩码位宽,掩码设为全0。如果数据大小大于0,且小于或等于掩码位宽,从掩码的最低有效位开始,与数据大小对应的掩码位的连续序列将被设为0,并且掩码的剩余位将设为1。掩码中的每个位值对应目标存储器位置中的一个字节位置。根据本发明的实施例,掩码中的0表示相应的字节位置将不被存储,而掩码中的1表示相应的字节位置将被存储。在另一替代实施例中,交换了掩码位中0和1的意思。
根据本发明的一个方面,本发明提供了一种目的存储器中存储数据的方法,该方法包括:
传送掩码存储指令到处理器;
在处理器中处理所述掩码存储指令;其中处理掩码存储指令的步骤进一步包括:
从所述指令中确定数据寄存器、目标地址、掩码;
确定数据寄存器中哪些数据字节没被掩盖,其中所述掩码包含有表明数据寄存器中每个数据字节是否被掩盖的位;
将数据寄存器中没被掩盖的字节写入目的存储器,其中数据的每个字节都写入相应地址,该地址对应于目标地址和数据寄存器中所述字节相关位置的总和。
优选地,将掩码存储指令传送到处理器的步骤包括:
用目标地址和掩码设定处理器。
优选地,该方法还包括:
将掩码存储在谓词寄存器中;
设定处理器从谓词寄存器中获取掩码。
优选地,该方法还包括:
确定谓词寄存器的位置。
优选地,将掩码存储指令传送到处理器的步骤包括:
以数据寄存器的位置来设定处理器。
优选地,处理掩码存储指令的步骤还包括:
确定数据寄存器的位置。
根据本发明的一个方面,本发明提供了一种处理存储器存取指令的集成电路,所述集成电路包括:
处理器;
数据寄存器,其中所述数据寄存器包含一个或多个数据字节;
谓词寄存器,其中所述谓词寄存器设定来保存掩码;
存储器;
其中所述处理器设定来将数据寄存器中的数据储存到存储器;
其中所述处理器通过询问谓词寄存器读出掩码;
其中仅当掩码表明数据字节将被储存时,所述处理器将数据寄存器中的所述一个或多个数据字节存入存储器。
优选地,该集成电路还包括:
存储器指针,其中该存储器指针包含有到存储器的地址。
优选地,该存储器指针包含到存储器的长字地址。
优选地,该集成电路还包括:
偏移地址指针,其中该偏移地址指针包含有到存储器的地址,该地址与存储器指针中的地址相关。
优选地,该偏移地址指针包含到存储器的长字地址。
优选地,该集成电路还包括:
字节数寄存器,其中该字节数寄存器设定来存储将从数据寄存器复制到存储器的数据字节的数量。
优选地,该处理器设定来询问字节数寄存器,通过确定存储操作中有多少数据字节将被复制来创建掩码。
优选地,该处理器设定来在谓词寄存器中存储掩码。
根据本发明的另一个方面,本发明提供了一种创建掩码的方法,其中所述掩码定义了字节序列中哪些字节将被存储,该方法包括:
传送一组掩码指令;
从所述指令中确定掩码结果位置、偏移地址和字节数;
通过字节数减去偏移地址来确定数据大小;
如果数据大小小于或等于0,将掩码设为全0;
如果数据大小大于掩码位宽,将掩码设为全1;
如果数据大小大于0且小于获等于掩码位宽,从掩码的最低有效位开始,与数据大小对应的掩码位的连续序列被设为1,并且掩码的剩余位设为0;
将掩码分配到掩码结果位置;
其中,掩码中每个位的值对应于目标存储器位置中的一个字节位置。
优选地,掩码中的0表示相应字节位置将不被存储,而掩码中的1表示相应的字节位置将被存储。
优选地,掩码中的0表示相应字节位置将被存储,而掩码中的1表示相应字节位置将不被存储。
优选地,将对应数据大小的数量的掩码位设置为1的步骤还包括:
将掩码设为全1;
将掩码向右移与掩码宽度减去数据大小相等的量。
优选地,该方法此外还包括:
从指令中确定谓词;
通过询问该谓词决定是否执行该组掩码指令。
优选地,该方法此外还包括:
从字节数中减去一条数据线内的字节数量。
优选地,该方法此外还包括:
如果该字节数表明剩余待复制的字节数目是正数,则重复每个步骤。
优选地,该方法此外还包括:
在字节序列中复制每个字节,并使用掩码决定哪些字节应该被复制。
根据本发明的一个方面,本发明提供了一种创建掩码的方法,其中所述掩码定义了字节序列中哪些字节将被存储,该方法包括:
传送一组掩码指令;
从所述指令中确定掩码结果位置、偏移地址和字节数;
通过字节数减去偏移地址来确定数据大小;
如果数据大小小于或等于0,将掩码设为全1;
如果数据大小大于掩码位宽,将掩码设为全0;
如果数据大小大于0且小于或等于掩码位宽,从掩码的最低有效位开始,将与数据大小对应的掩码位的连续序列设为0,并且将掩码的剩余位设为1;
将所述掩码分配到掩码结果位置;
其中,所述掩码中每个位的值对应于目标存储器位置中的一个字节位置。
优选地,掩码中的0表示相应字节位置将不被存储,而其中的1表示相应的字节位置将被存储。
优选地,掩码中的0表示相应字节位置将被存储,而其中的1表示相应字节位置将不被存储。
优选地,将对应数据大小的数量的掩码位设置为0的步骤还包括:
将掩码设为全1;
将掩码向左移与所述数据大小相等的量。
优选地,该方法此外还包括:
从指令中确定谓词;
通过询问谓词来决定是否执行该组掩码指令。
优选地,该方法此外还包括:
从字节数中减去一条数据线内的字节数量。
优选地,该方法此外还包括:
如果字节数表明剩余待复制的字节数目是正数,重复每个步骤。
优选地,该方法此外还包括:
在字节序列中复制每个字节,并使用掩码决定哪些字节应该被复制。
附图说明
附图构成说明书的一部分,结合具体实施方式一起说明了本发明,此外还解释了本发明的原理,并使相关领域的技术人员了解使用本发明:
图1是用于实现本发明的典型处理器系统的示意图;
图2是根据本发明实施例的掩码下存储长字指令(store long-word undermask instruction)的典型示意图格式的示意图;
图3是根据本发明实施例的典型的谓词掩码寄存器的示意图;
图4是根据本发明的实施例的掩码下存储长字的一种典型实现的示意图;
图5是根据本发明实施例的测试计数以设置掩码用于掩码下存储长字指令的典型格式的示意图;
图6是根据本发明实施例的测试反向计数以设置掩码用于掩码下存储长字指令的典型格式的示意图;
图7是根据本发明实例例的存储器中一组源数据和目的数据的示意图。
以下将结合附图对本发明进行描述。在附图中,类似的标号表示相同或功能类似的元件。此外,标号中最左边位表明该标号第一次出现的附图号。
具体实施方式
1、结构总括
图1示出了一种在本发明中使用的典型处理器系统100。一个实施例中,该处理器系统是64位长指令字机器,包括两个并行的SIMD(单指令多数据)执行单元,用标号X和Y来表示。相关领域的技术人员知悉,处理器系统100的其它配置可使用在本发明中。
处理器系统100包括一个从程序存储器(图中没有示出)中接收和保存指令的指令缓存110。该指令缓存110连接到取指/解码电路120。取指/解码电路120发出从中获取指令的程序存储器中的地址,并在每个取指操作中接收来自缓存110(或程序存储器)的64位指令。此外,取指/解码电路120从指令中确定操作码,并沿着通道125x、125y传输控制信号,以此控制指定寄存器和MAC(乘加器)132、INT(整数单元)134、GFU(有限域单元)、LSU(加载/存储单元)140功能单元之间的数据移动。其它类型的功能单元(图中没有示出)也可在处理器中出现,类似地连接到取指/解码电路和一些或所有不同的寄存器。
处理器系统100包括两个SIMD执行单元130x、130y,一个在机器的X侧,另一个在机器的Y侧。SIMD执行单元130x、130y每个都包括有乘加器单元(MAC)132、整数单元(INT)134和有限域单元(GFU)136。乘加器单元132x、132y执行乘法和乘积的加法运算,这通常用在许多数字信号处理算法中。整数单元134x、134y执行许多整数值的普通运算,用在一般的计算和信号处理中。有限域单元136x、136y用有限域算法执行一些特殊运算,例如用于Reed-Solomon错误保护代码方案的实现。
除此以外,根据本发明的实施例,加载/存储单元(LSU)140x、140y用在SIMD单元的X侧和Y侧。加载/存储单元140x、140y执行对数据存储器和I/O系统170的存取,并从其中加载数据值到通用寄存器155,或者将值从通用寄存器155存入其中。加载/存储单元140x、140y也能连接(通过图1中未示出的手段)来实现对指令存储器进行数据存取,或者对处理器系统100内的其它存储器进行数据存取。
根据本发明的实施例,处理器系统100包括有数据缓存,以此提供对数据存储器170中的值的高速存取。相关领域的技术人员知悉,其它存储实现也能用在本发明中。
处理器系统100包括大量用来保存乘加结果的乘加寄存器(M寄存器)150和多个通用寄存器155。根据本发明的实施例,处理器系统100包括四个M寄存器和64个通用寄存器。根据本发明的另一实施例,处理器系统100也包括多个控制寄存器160和多个谓词寄存器165。
2、掩码存储指令
2.1掩码下存储长字
图2是根据本发明实施例的掩码下存储长字(STLM)指令200的典型格式。STLM指令200在谓词寄存器的控制下,将寄存器中0到8字节的数据存储到存储器位置。
STLM指令200包括谓词操作数202、操作码204、源操作数206、基操作数208和偏移地址操作数210。基操作数208和偏移地址操作数210值的和计算为目标地址。目标地址表示的是将执行存储操作的存储器中的地址。相关领域的技术人员知悉,STLM指令200中的操作数不用按图2所示的顺序出现,并可随意地伴随有另外的操作数。此外,相关领域的技术人员知悉,操作数能以任何形式在软件实现中给出定义,这种形式允许STLM指令200中描述的操作数的值是预先确定的。
根据本发明的实施例,基操作数208标示出通用寄存器155中的一个,其中的内容是为基值读出的,偏移地址操作数210是指令的该字段内以某种形式(例如,作为2的二进制补数)表示的常量整数。相关领域的技术人员知悉,可使用另外的表示目标地址的方式,例如通过缩放常量整数偏移地址值来实现更大范围的偏移地址值,其为缩放因子的多倍。
根据本发明另外的实施例,偏移地址操作数210并不表示一个常量整数,而是标示出通用寄存器155中的第二个寄存器,其中的内容是读出来提供偏移地址值的。根据本发明另外的实施例,偏移地址操作数210被忽略或不出现在指令中,基操作数208的值直接构成目标地址。
根据本发明的实施例,为了存入存储器空间(该空间是64位宽长字并且不支持未排列的存储操作),STLM指令200的目标地址应该对齐在长字边界上。在另外的实施例中,为了存入支持未排列存储的存储器空间,STLM指令200的目标地址不需要对齐在长字边界上。目标地址指定了存储数据的存储器位置。
源操作数206指定了一个寄存器,如通用寄存器155中的一个,从该寄存器中可获得数据的长字。根据本发明的实施例,长字定义为8字节。谓词(predicate)202标示出一个谓词寄存器,如谓词寄存器165中的一个,其每字节包含一位,在STLM指令200的操作中进行存储。根据本发明的实施例,谓词202标示出一个8位寄存器。
相关领域的技术人员知悉,STLM指令200稍作改变就可扩展到类似的应用中。例如,类似的STLM指令200可用于使用任意字宽和任意粒度的数据寻址的系统。
以下是使用图2所述形式的一个典型STLM指令200。在该例子中,“pM”表示谓词操作数202,“STLM”是操作码204的表示符号,“src”表示源操作数206,“base”表示基操作数208,“#offset”表示偏移地址操作常数210,其中“offset”代表此例中特殊偏移地址值。
pM.STLM src,[base,#offset]
图3示出了谓词掩码寄存器300,其可是已经被谓词操作数202标示出来的谓词寄存器165中的一个。根据本发明的实施例,谓词掩码寄存器300包括谓词掩码位pM0-pM7(302a-302h),其中的一位对应寄存器中每个字节,该寄存器由源操作数206指定。
图4示出了包含8字节的数据R0-R7(402a-402h)的寄存器,该组数据使用STLM指令200存储在目的存储器410中的位置D0-D7(404a-404h)处。使用了谓词寄存器掩码300的情况下,掩码位302a-302h控制寄存器400中哪些字节存入目的存储器410。根据本发明的实施例,控制是通过将掩码控制位302a-302h作为字节使能信号发送到存储系统中来实现。相关领域的技术人员知悉,其它方式也可用来控制寄存器400中哪些字节将存入目的存储器410。
相关领域的技术人员知悉,使用STLM指令进行数据存储的过程,独立于获取待存储的数据序列的方法。根据本发明的实施例,类似这种方法是通过从存储器中的源地址加载数据字节序列来执行的。使用一个或多个STLM指令实例的加载方式和存储过程的结合效果是,从源存储器中复制数据字节序列到目的存储器。在执行这些步骤的过程中,STLM的使用实现了最大效率,即,虽然所有的存储操作都存储了如单次操作需要存储的那么多数据字节到各自的源寄存器中,但是将被复制的数据覆盖的目的存储器中,只有该正确的字节位置才实际写入了数据。因此,复制操作可使用目的存储器的存取宽度所需的最小数量的存储操作来执行,并不需要执行从目的存储器加载的操作。
2.2为STLM设置掩码的测试计数算
图5是根据本发明实施例的测试计数以设置掩码用于STLM(test count toset mask for STLM,缩写为TSTCM)指令500的示意图。TSTCM指令500设计来在存储字节序列时为STLM的使用提供帮助,这是通过设置谓词掩码寄存器的各位来进行的,如图3的谓词掩码寄存器300,其可是图1中处理器100的谓词寄存器165中的一个。为了实现连续字节序列的存储过程中的持续传输,TSTCM指令500决定以一定偏移地址保存字节的源寄存器中哪些字节应该被存储。TSTCM指令500包括操作码504、谓词掩码操作数506、计数操作数508、偏移地址操作数510。谓词掩码操作数506用来标示谓词掩码寄存器,由TSTCM指令生成的掩码值将被写该标示出的谓词掩码寄存器内。计数操作数508指出被写的字节数量,通常确定通用寄存器155中的一个,并从中读出计数值。根据本发明的实施例,偏移地址操作数510定义地址偏移值,通常是常量整数。相关领域的技术人员知悉,TSTCM指令500中的操作数不需要按图5中所示的顺序出现,并可随意地伴随有其它操作数。此外,相关领域的技术人员也知悉,操作数能以任何形式在软件实现中定义,这种形式允许TSTCM指令500中描述的操作数的值是预先确定的。
在一种TSTCM指令500的典型使用中,存储总长为L的数据字节连续序列,其中长度L是直到存储操作即将进行才知道的(即,L不是常量)。该L个字节将存入目的存储器。因为长度L一般未知,为方便起见,可使用软件循环重复执行指令序列,直到所有L字节被存储下来,如此可实现存储操作。在广义函数中,L=K*M+N,其中M是大于0的常量整数,表示一个循环迭代中可存储的数据字节的最大数量,K和N是大于等于0的整数,是在L值已知时计算出来的。该存储操作可使用K次循环迭代来实现,每次迭代存储M字节,然后执行最后一个存储序列,N个字节被存储下来。最终N字节的存储能以同一循环的第(K+1)次迭代来实现,或根据情况以单独的指令序列实现。在存储至少最终N字节时,一组经排序的一个或多个源寄存器SR0、SR1等准备有总量为M个数据字节的序列,该序列中的N个数据字节(N≤M)将存入目的存储器中从目标地址T开始的位置。该组源寄存器中单个源寄存器SRn保存有可能被传输的部分数据字节。如果包含该N字节的传输部分具有足够的长度,即如果N>R,SRn中至少一个数据字节将存入目的存储器中从相对于地址T偏移R开始的位置。根据本发明的实施例,给出与该组源寄存器中源寄存器SRn的最低寻址字节关联的N值和偏移地址R,TSTCM指令500用来确定SRn中哪些字节将被存入目标存储器内从地址T+R开始的各自位置。为此,创建出适合用于关联的STLM指令内的谓词操作数202的掩码值,该关联STLM指令还以SRn作为它的源操作数206,如此便将那些确定字节存储到目标存储器。
根据本发明的实施例,TSTCM指令500此外还包括有可选的谓词器502,该谓词器502确定出一个谓词寄存器,如谓词寄存器165中的一个,按谓词掩码寄存器300的每一位包含有一个位。。根据本发明更多的实施例,如指定了谓词器502,确定出的谓词寄存器300的各位指示出谓词掩码寄存器300的关联位是否将由TSTCM指令500置值。
以下是一种典型的使用图5所述形式的TSTCM指令:
pC.TSTCM pM,count,#offset
根据确定的计数(count)、常量、偏移地址(offset)的操作数值和另外的谓词pC值,此TSTCM指令实例500起到设定谓词掩码寄存器pC的作用。该计算基于或等效于以下算法,其中size是本地临时整数值,tm是8位宽的本地临时掩码值:
size=count-offset;
if(size<=0)then tm=000000002;
else if(size>7)then tm=111111112;
else tm=111111112>>(8-size);
pM=(tm&pC)|(pM&(~pC));
在以上算法中,”PM”是谓词掩码寄存器,下标“2”表示紧接在前的二进制数。“>>”符号表示在其结果的最高有效结尾插入0的逻辑右移(以逐位的方式)运算符。二进制符号“&”是逐位逻辑与(AND),二进制符号“|”是逐位逻辑或(OR),一元符号“~”是逐位逻辑实现(求反)。count和offset都是以字节为单位测量的。在TSTCM指令500的其它示例中,如果没有明确提供可选的谓词器502(上述例子中的pC),算法的执行以pC为111111112进行。该算法的具体应用在下面将进一步讨论。
2.3为STLM设定反转掩码的测试计数
图6是根据本发明实施例的测试计数以设置反向掩码用于STLM(TSTIM)指令600的示意图。TSTIM指令600的设计目的与图5所示的TSTCM指令500类似。尽管如此,TSTIM指令600用于将不被存储的一系列字节的邻近传输起始位置(而不是结尾)存在大量字节的特定情况。
TSTIM指令600包括操作码604、谓词掩码操作数606、计数操作数608、偏移地址操作数610。谓词掩码操作数606用于确定谓词掩码寄存器,如图3中的谓词掩码寄存器300,并将从TSTIM指令中得到的掩码值写入其中。根据本发明的实施例,计数操作数608表示正在写入多少字节,而偏移地址操作数610表示当前长字偏移地址。相关领域的技术人员知悉,TSTIM指令600的操作数并不需要按图6中的顺序出现,其可任意地伴随有其它操作数。此外,相关领域的技术人员也知悉,操作数能以任何形式在软件实现中定义,这种形式允许STLM指令200中描述的操作数值是预先确定的。
根据本发明的实施例,TSTIM指令600此外还包括一个任意的谓词602,其中谓词602确定一个谓词寄存器,如谓词寄存165,谓词掩码寄存器300中每一位包含一个位(containing one bit per bit of predicate mask register300)。根据本发明更多的实施例,如果指定谓词602,确定谓词寄存器300的位表示谓词掩码寄存器300的关联位是否由TSTIM指令600设定。
以下是一种典型的使用图6所述形式的TSTIM指令:
pC.TSTIM pM,count,#offset
TSTIM指令600起到基于以下算法设定输出谓词掩码寄存器300(标示为pM)的作用,其中size是本地临时整数值,tm是8位宽的本地临时掩码值。
size=count-offset;
if(size<=0)then tm=111111112;
else if(size>7)then tm=000000002;
else tm=111111112<<size;
pM=(tm&pC)|(pM&(~pC));
之前用于解释TSTCM算法的现有技术,包括可选的谓词pC的处理,同样也可应用在此算法中。此外,在此算法中,“<<”符号表示在其结果的最低有效结尾插入0的逻辑左移(以逐位的方式)运算符。具体的应用将在下面进一步讨论。
3、STLM指令的典型应用
图7是根据本发明实施例的8位宽长字寻址存储器700的一部分的示意图。在此例中,所示存储器部分包含于缓存内,其中ATM信元(cell)正作为ADSL调制解调器操作的一部分写入该缓存内。该缓存以循环的方式使用,即软件数据的处理以升序(增加地址)方式进行通过缓存时,在缓存中最后的地址处理完以后,下一个处理的数据将重新位于缓存的起始位置。这种处理重复地发生在两个交替的阶段。第一阶段中,ATM信元(每个长53字节)由某种方式产生并存入缓存。第二阶段中,重新读出这些单元。然后再次执行第一阶段以写入更多的信元数据,如此下去。这些信元不需要以准确的53字节完整ATM信元来写入或读出。例如,读取阶段可将缓存简单地作为字节序列来处理,任何时候都可以提取出任意数量的字节(不超过总的可用数目)。因此当有空间时,写入阶段就必须从正在写入的信元中存储该空间能够容纳的足够多的数据字节,因为读取阶段可能在任意的点停止。写入阶段不能重写缓存中尚未被读取阶段读出的字节。
如何生成ATM信元以写入缓存的一种情况是:当没有活跃数据信元可以处理时,必须生成“空闲信元”来代替。空闲信元包括具有固定形式的5字节头端(header),跟着是48个有效载荷字节,其中每个字节都有相同的固定值。生成空闲信元并不是高强度的计算处理,因为它包含的值是固定的。所有的有效载荷字节都包含同样的值;在ADSL调制解调器内部运算的情况中,这个值是十六进制数56(十进制数86)。因此当写入处理没有可用的活跃数据信元时,它会写入(只要有空间进行)一个字节序列,该字节序列具有形式,包括5个空闲信元头端字节,跟着是48个空闲有效载荷字节(每个字节的值为十六进制56),然后是另外5个头端字节,再然后又是48个空闲有效载荷字节,依此类推。
在另一例子中,当写入阶段将空闲信元数据写入缓存时,写入阶段便赶上读取阶段。在此例中,48字节的空闲信元有效载荷数据在处理过程中被写入。尽管如此,在软件功能的执行过程中,发现不能将所有48字节都写入,因为缓存几乎是满的,而且只存在一个只有27可用字节位置的间隙,这个间隙位于第一个空闲信元有效载荷字节发出的地方与缓存中还没被读取阶段读出并不能被重写的第一字节之间。因此,写入阶段只能将27个空闲信元有效载荷字节写入缓存,然后必须停止。在图7中,27个可用字节位置用“W”标出了。因为由读取阶段读出的字节数量不需要是常数,且ATM信元在任何情况下都是53字节长但53不是8字节长字存储单元大小的倍数,所以27字节可用空间的初始和结束位置一般都是随意排列的。图7中,第一个待写的空闲有效载荷字节在它包含的长字存储单元710中偏移地址为2(即在字节地址WRITE_BASE+2处),而最后一个空闲有效载荷字节在其包含的长字存储单元716中的偏移地址是4(即在字节地址WRITE_BASE+24+4处)。
根据本发明的实施例,可使用传统储存方法来执行将空闲信元有效载荷字节值存入两个中间的长字712和714的所有字节内。因为需要写入每个存储单元中的所有字节位置,所以用两个现有的“存储长字”指令来执行所需功能,其中每个指令将空闲信元有效载荷字节值的完整8个字节写入到对应的长字存储单元。每个被存储的数据含有8个字节,都是十六进制值56;表示为单个64位值,就是十六进制数5656565656565656。
还要涉及到的是如何处理将写出到存储器700的缓存内相关部分的27字节序列的头部和尾部的简短(子长字(sub-long-word))部分。这些部分的效率对整个写入阶段功能是十分重要的,特别是如果写出操作大部分具有较小的大小时,如在此特例中。
在另一例子中,在编程时就已预先知道这两个简短部分的具体大小和偏移地址,而不只是软件功能真正实现时才知道。在没有STLM指令200时,存储六个初始空闲有效载荷字节到长字712可由两个普通存储指令执行,即,一个存储半字指令将2字节十六进制数值5656写入长字位置712内偏移地址为2处的已对齐的半字(halfword)内,一个存储字指令将十六进制数值56565656存入同一长字712内偏移地址为4处的已对齐的字内。类似地,相关领域的技术人员知悉,可用一个存储字指令(写入偏移地址为0处的字内)和一个存储字节指令(在字节偏移地址为4处)将最后5个字节存入长字716中。这个方法总共需要4个存储指令,在待写的头部和尾部简短部分均包含7个字节的情况下,最多需要6个存储指令。
在ADSL调制解调器应用中处理的软件范例部分,STLM指令200可用来减少存储出这些简短部分的成本。相关领域的技术人员知悉,STLM指令200也能在许多其它的类似应用中使用,并且ADSL调制解调器的示例是用来举例说明的,不是对本发明的限制。根据本发明的实施例,预先知道头部和尾部简短部分的大小时,可预先构建两个相应的掩码值,分别放在两个谓词寄存器165之一中,这里分别标识为pI(头部)和pF(尾部)。根据情况,构建的掩码值也可在后续多种STLM指令中使用,并使得构建它们的成本得到分摊。头部简短部分的掩码值在第一谓词寄存器pI中构建为111111002。谓词寄存器pF中的第二掩码值为000111112。64位通用寄存器155中的一个寄存器,在此标识为rICP,可用于包含复制的8字节空闲信元有效载荷值,即十六进制数5656565656565656。另一个标识为rWB的通用寄存器155可用于包含长字存储单元710的基地址(即地址WRITE_BASE)。执行一个单独的STLM指令200,可以实现初始六字节序列的存储。为执行所需操作,pI用作谓词寄存器202,rICP用作源操作数206,rWB用作基寄存器操作数208,0用作偏移地址操作数210,如下:
pI.STLM rICP,[rWB,#0]
因此,根据本发明的实施例,在单个步骤中,长字存储单元710中所有相关字节位置用所需空闲信元有效载荷字节值写入。相反,如果STLM指令200不可用,则需要两个常规存储指令甚至三个常规存储指令来达到相同的效果。STLM指令200的第二个例子通过在单个步骤中存储出整个5字节尾部简短部分来完成处理,以pF代替pF作为它的控制掩码值谓词操作数202,适当的寻址偏移地址为:
pF.STLM rICP,[rWB,#24]
4、TSTCM指令的典型应用
STLM指令200的上述例子是基于以下情形提出的:任何数据的头部和/或尾部简短部分在编程设计时已经知道,而不只是代码执行的时候。这个条件在某些应用中保留,因此上述例子中使用的方法就足够了。然而,一般说来,这些简短数据部分的大小和排列预先都不知道。相反,通常当特殊的软件功能执行后,相关信息才可用;例如在上述的缓存中处理ATM信元的写入阶段,便会出现这种情形。
图5中的TSTCM指令支持将任意大小和排列的简短部分存入存储器700。这是通过创建一个掩码值使得STLM指令200的执行仅存储出所需字节组来实现的,如当将字节序列的任意大小和排列的简短尾部部分存储到存储器中时。我们注意到,尽管前述的STLM例子假定尾部部分被限制在一个存储单元,如仅具有0...7字节的大小,实际上也还可以使用TSTCM和STLM指令相结合来处理存储序列的延伸部分。此特征相关的结构在前面已经提到过。
在实际使用中,在序列中仍有一定数量(又表示为计数(Count),一般是动态变量)的字节待存储的情况下,STLM和TSTCM指令结合起来使用。。根据本发明的实施例,Count的当前值保存在通用寄存器rCount中。根据本发明更多的实施例,此例中最高为16字节的可能将被存储的数据值,分别保存在两个通用寄存器(SR0和SR1)中,每个寄存器中保存8字节。相关领域的技术人员知悉,将该值引入寄存器SR0和SR1的方法很容易理解,此外,使用的特殊方法也不影响STLM和TSTCM指令的行为。根据本发明的实施例,序列中当前存储位置的地址(即,下一待写字节存储的位置)保存在另一个寄存器rWP中。为了实现所需数量(Count,或至多16个)的数据字节的写出,可使用以下指令序列:
TSTCM p0,rCount,#0
p0.STLM SR0,[rWP,#0]
TSTCM p1,rCount,#8
p1.STLM SR1,[rWP,#8]
根据本发明的实施例,我们注意到,为在处理器100的实施例中实现增加性能(定义为更少的指令执行周期),两组TSTCM和STLM操作对可以并行执行如下:在每一行上,“:”之前的第一指令在对应的X侧执行单元上执行(例如INTx单元134x对应TSTCM指令和LSUx 140x对应后续的STLM指令),而“:”之后的第二指令接下来在适当的Y侧执行单元上执行。
TSTCM p0,rCount,#0 :TSTCM p1,rCount,#8
p0.STLM SR0,[rWP,#0] :p1.STLM SR1,[rWP,#8]
5、TSTIM指令的典型应用
对于存储序列的头部简短部分内的初始数据字节随意排列的特定情况,图6中的TSTIM指令600提供了加速存储序列的能力。在这种情况下,为了避免重写比将存储第一数据字节的地址更低的地址所在的任何位置,简短部分内的第一被写地址与前一长字对齐位置的相对排列,在使用STLM指令200时是很重要的。之前的例子中(图7),对于地址是WRITE_BASE的长字位置710内的标记为W的第一个(最右边的)字节位置,地址偏移量是2。这种情况下,将为该偏移地址量计算出一个值(该方法没示出),存入寄存器rOffset中。根据本发明的实施例,操作中,TSTIM指令600生成一个掩码值,该掩码值确保只有目标长字存储单元内这一初时位置处或之后的位置的数据字节才存入,这些字节的存入由STLM指令200使用该掩码值作为它的谓词操作数202并使用标识为rWB、包含有基地址(WRITE_BASE)的寄存器来执行。一个示例中,它以如下形式使用:
TSTIM p0,rOffset,#0
p0.STLM rData,[rWP,#0]
6.存储器系统设计
各种各样存储器系统的设计提供了对访问存储器中未排列地址的不同程度的支持。关于写操作(存储操作),上述对STLM指令200的可能应用的举例和说明假定了相应类别存储器的最小能力(即最普通的)模型,即,该类存储器虽然支持存储到比单个字节级别更低的子单元,但其仅允许自然排列的存储操作。在此最严格的情形,在增加任意大小或任意排列的存储操作的软件效率方面,所有的STLM、TSTCM、TSTIM指令都提供了一定的作用。
在另一实施例中,使用一个具有更大能力但更复杂的存储器实现700(或者处理器系统100中到它的界面),在非自然边界上(如奇字节偏移地址上的半字)存储数据是可能的。根据本发明更多的实施例,在另一个更大能力的实现中,可执行与长字边界交叉的存储操作,如在一个长字存储单元中存储一个或多个字节在最高偏移字节位置处,以及作为同一存储操作的一部分,在随后的(下个更高寻址)长字存储单元中存储一个或多个字节在最低偏移地址处。对于采用此种设计的存储器,TSTIM和STLM结合的优势被减小了,因为在第一个被写的字节地址直接进行任何存储操作是可能的,在此不考虑它与长字存储单元界的关系。虽然如此,TSTCM和STLM指令结合的使用相对于此种存储操作或存储操作的序列依然存在优势,因为最后一次储操作仍然可能是任意长度的,所以最后一个被写的字节之后紧接着需要进行字节的掩盖。STLM指令200,或者上述的TSTCM指令500和STLM指令200的结合,提供了存储操作效率的增加,即使使用能力更强的存储器系统设计。相关领域的技术人员知悉,在此揭露的操作用于更多的存储系统时,也能得到类似的作用。所揭露的存储器系统仅仅是举例说明,并不是对本发明的限制。
上述描述基于通常被称为存储器寻址的“小尾”(little-endian)模式给出,其中长字存储单元的地址定义为与其最低有效字节的地址相同。在本发明更多的实施例中,相同的原理可适用于使用可选择的“大尾”(big-endian)模式的存储系统,其中存储的长字地址与其最高有效字节的地址相同。相关领域的技术人员很清楚的知道,可以通过对上述描述中的结构和定义进行调整来完成。
7、结论
本发明的各种实施例已经在上面描述到,应该知道它们只通过举例的方式介绍,并没有限制。相关领域的技术人员知悉,在不超过权利要求定义的实质和范围的情况下,可作出各种形式和细节上的变更。因此,本发明的保护范围不当仅局限于以上描述的任一实施例,而应该依照权利要求及其等同来限定。
Claims (10)
1.一种在目的存储器中存储数据的方法,其特征在于,该方法包括:
传送掩码存储指令到处理器;
在处理器中处理所述掩码存储指令;其中处理掩码存储指令的步骤进一步包括:
从所述指令中确定数据寄存器、目标地址、掩码;
确定数据寄存器中哪些数据字节没被掩盖,其中所述掩码包含有表明数据寄存器中每个数据字节是否被掩盖的位;
将数据寄存器中没被掩盖的字节写入目的存储器,其中数据的每个字节都写入相应地址,该地址对应于目标地址和数据寄存器中所述字节相关位置的总和。
2.根据权利要求1所述的方法,其特征在于,将掩码存储指令传送到处理器的步骤包括:
用目标地址和掩码设定处理器。
3.根据权利要求2所述的方法,其特征在于,该方法还包括:
将掩码存储在谓词寄存器中;
设定处理器从谓词寄存器中获取掩码。
4.根据权利要求3所述的方法,其特征在于,该方法还包括:
确定谓词寄存器的位置。
5.一种处理存储器存取指令的集成电路,其特征在于,所述集成电路包括:
处理器;
数据寄存器,其中所述数据寄存器包含一个或多个数据字节;
谓词寄存器,其中所述谓词寄存器设定来保存掩码;
存储器;
其中所述处理器设定来将数据寄存器中的数据储存到存储器;
其中所述处理器通过询问谓词寄存器读出掩码;
其中仅当掩码表明数据字节将被储存时,所述处理器将数据寄存器中的所述一个或多个数据字节存入存储器。
6.根据权利要求5所述的集成电路,其特征在于,该集成电路还包括:
存储器指针,其中该存储器指针包含有到存储器的地址。
7.根据权利要求6所述的集成电路,其特征在于,所述存储器指针包含到存储器的长字地址。
8.根据权利要求6所述的集成电路,其特征在于,该集成电路还包括:
偏移地址指针,其中该偏移地址指针包含有到存储器的地址,该地址与存储器指针中的地址相关。
9.一种创建掩码的方法,其中所述掩码定义了字节序列中哪些字节将被存储,其特征在于,该方法包括:
传送一组掩码指令;
从所述指令中确定掩码结果位置、偏移地址和字节数;
通过字节数减去偏移地址来确定数据大小;
如果数据大小小于或等于0,将掩码设为全0;
如果数据大小大于掩码位宽,将掩码设为全1;
如果数据大小大于0且小于获等于掩码位宽,从掩码的最低有效位开始,与数据大小对应的掩码位的连续序列被设为1,并且掩码的剩余位设为0;
将掩码分配到掩码结果位置;
其中,掩码中每个位的值对应于目标存储器位置中的一个字节位置。
10.一种创建掩码的方法,其中所述掩码定义了字节序列中哪些字节将被存储,其特征在于,该方法包括:
传送一组掩码指令;
从所述指令中确定掩码结果位置、偏移地址和字节数;
通过字节数减去偏移地址来确定数据大小;
如果数据大小小于或等于0,将掩码设为全1;
如果数据大小大于掩码位宽,将掩码设为全0;
如果数据大小大于0且小于或等于掩码位宽,从掩码的最低有效位开始,将与数据大小对应的掩码位的连续序列设为0,并且将掩码的剩余位设为1;
将所述掩码分配到掩码结果位置;
其中,所述掩码中每个位的值对应于目标存储器位置中的一个字节位置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/643,999 | 2006-12-22 | ||
US11/643,999 US7921263B2 (en) | 2006-12-22 | 2006-12-22 | System and method for performing masked store operations in a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101206635A true CN101206635A (zh) | 2008-06-25 |
CN101206635B CN101206635B (zh) | 2011-11-30 |
Family
ID=39243717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101968611A Expired - Fee Related CN101206635B (zh) | 2006-12-22 | 2007-12-06 | 处理器中执行掩码存储操作的方法和集成电路 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7921263B2 (zh) |
EP (1) | EP1939727A3 (zh) |
KR (1) | KR100956970B1 (zh) |
CN (1) | CN101206635B (zh) |
HK (1) | HK1120876A1 (zh) |
TW (1) | TWI410865B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103827815A (zh) * | 2011-09-26 | 2014-05-28 | 英特尔公司 | 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑 |
CN103946795A (zh) * | 2011-12-14 | 2014-07-23 | 英特尔公司 | 用于生成循环对齐计数或循环对齐掩码的系统、装置和方法 |
CN103988173A (zh) * | 2011-11-25 | 2014-08-13 | 英特尔公司 | 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑 |
CN104025020A (zh) * | 2011-12-23 | 2014-09-03 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
CN104025040A (zh) * | 2011-12-23 | 2014-09-03 | 英特尔公司 | 用于混洗浮点或整数值的装置和方法 |
CN104169867A (zh) * | 2011-12-23 | 2014-11-26 | 英特尔公司 | 用于执行掩码寄存器至向量寄存器的转换的系统、装置和方法 |
WO2019000456A1 (zh) * | 2017-06-30 | 2019-01-03 | 华为技术有限公司 | 传输数据掩码的方法、内存控制器、内存芯片和计算机系统 |
CN114510271A (zh) * | 2022-02-09 | 2022-05-17 | 海飞科(南京)信息技术有限公司 | 用于在单指令多线程计算系统中加载数据的方法和装置 |
CN116150058A (zh) * | 2023-04-17 | 2023-05-23 | 合肥芯荣微电子有限公司 | 一种基于axi总线的并发传输模块和方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7610472B2 (en) * | 2005-06-05 | 2009-10-27 | Apple Inc. | Performing variable and/or bitwise shift operation for a shift instruction that does not provide a variable or bitwise shift option |
US7921263B2 (en) | 2006-12-22 | 2011-04-05 | Broadcom Corporation | System and method for performing masked store operations in a processor |
US8732437B2 (en) * | 2010-01-26 | 2014-05-20 | Oracle America, Inc. | Low-overhead misalignment and reformatting support for SIMD |
US9703558B2 (en) | 2011-12-23 | 2017-07-11 | Intel Corporation | Systems, apparatuses, and methods for setting an output mask in a destination writemask register from a source write mask register using an input writemask and immediate |
US20140019718A1 (en) * | 2012-07-10 | 2014-01-16 | Shihjong J. Kuo | Vectorized pattern searching |
US9170811B2 (en) * | 2013-01-09 | 2015-10-27 | King Fahd University Of Petroleum And Minerals | Structured control instruction fetch unit |
US9888077B2 (en) * | 2014-04-22 | 2018-02-06 | Western Digital Technologies, Inc. | Metadata based data alignment in data storage systems |
KR101649828B1 (ko) * | 2015-07-30 | 2016-08-19 | 엘에스산전 주식회사 | 이더넷 프레임 감지 장치 그의 동작 방법 |
US9875214B2 (en) * | 2015-07-31 | 2018-01-23 | Arm Limited | Apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6058473A (en) * | 1993-11-30 | 2000-05-02 | Texas Instruments Incorporated | Memory store from a register pair conditional upon a selected status bit |
US6035369A (en) * | 1995-10-19 | 2000-03-07 | Rambus Inc. | Method and apparatus for providing a memory with write enable information |
US5703810A (en) * | 1995-12-15 | 1997-12-30 | Silicon Graphics, Inc. | DRAM for texture mapping |
US5867444A (en) * | 1997-09-25 | 1999-02-02 | Compaq Computer Corporation | Programmable memory device that supports multiple operational modes |
US6122189A (en) * | 1998-10-02 | 2000-09-19 | Rambus Inc. | Data packet with embedded mask |
US7529907B2 (en) * | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US6820195B1 (en) * | 1999-10-01 | 2004-11-16 | Hitachi, Ltd. | Aligning load/store data with big/little endian determined rotation distance control |
JP3721129B2 (ja) | 2000-01-18 | 2005-11-30 | ミップス テクノロジーズ インコーポレイテッド | コンピュータのロードとストア演算を改善する方法および装置 |
DE10127194B4 (de) * | 2001-06-05 | 2008-08-21 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Ausblenden von nicht funktionstüchtigen Speicherzellen |
US7051168B2 (en) * | 2001-08-28 | 2006-05-23 | International Business Machines Corporation | Method and apparatus for aligning memory write data in a microprocessor |
US6826663B2 (en) * | 2003-01-13 | 2004-11-30 | Rambus Inc. | Coded write masking |
JP4717798B2 (ja) * | 2003-01-13 | 2011-07-06 | ラムバス・インコーポレーテッド | 符号化書き込みマスキング |
US7610466B2 (en) * | 2003-09-05 | 2009-10-27 | Freescale Semiconductor, Inc. | Data processing system using independent memory and register operand size specifiers and method thereof |
US7921263B2 (en) | 2006-12-22 | 2011-04-05 | Broadcom Corporation | System and method for performing masked store operations in a processor |
-
2006
- 2006-12-22 US US11/643,999 patent/US7921263B2/en not_active Expired - Fee Related
-
2007
- 2007-08-03 EP EP07015284A patent/EP1939727A3/en not_active Withdrawn
- 2007-12-06 CN CN2007101968611A patent/CN101206635B/zh not_active Expired - Fee Related
- 2007-12-21 TW TW096149224A patent/TWI410865B/zh not_active IP Right Cessation
- 2007-12-24 KR KR1020070136701A patent/KR100956970B1/ko not_active IP Right Cessation
-
2008
- 2008-11-11 HK HK08112358.3A patent/HK1120876A1/xx not_active IP Right Cessation
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103827815B (zh) * | 2011-09-26 | 2017-11-28 | 英特尔公司 | 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑 |
CN103827815A (zh) * | 2011-09-26 | 2014-05-28 | 英特尔公司 | 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑 |
CN103988173A (zh) * | 2011-11-25 | 2014-08-13 | 英特尔公司 | 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑 |
CN103988173B (zh) * | 2011-11-25 | 2017-04-05 | 英特尔公司 | 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑 |
CN103946795A (zh) * | 2011-12-14 | 2014-07-23 | 英特尔公司 | 用于生成循环对齐计数或循环对齐掩码的系统、装置和方法 |
US10083032B2 (en) | 2011-12-14 | 2018-09-25 | Intel Corporation | System, apparatus and method for generating a loop alignment count or a loop alignment mask |
CN103946795B (zh) * | 2011-12-14 | 2018-05-15 | 英特尔公司 | 用于生成循环对齐计数或循环对齐掩码的系统、装置和方法 |
CN104025040A (zh) * | 2011-12-23 | 2014-09-03 | 英特尔公司 | 用于混洗浮点或整数值的装置和方法 |
CN104025040B (zh) * | 2011-12-23 | 2017-11-21 | 英特尔公司 | 用于混洗浮点或整数值的装置和方法 |
CN104025020B (zh) * | 2011-12-23 | 2017-06-13 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
CN104169867A (zh) * | 2011-12-23 | 2014-11-26 | 英特尔公司 | 用于执行掩码寄存器至向量寄存器的转换的系统、装置和方法 |
US9983873B2 (en) | 2011-12-23 | 2018-05-29 | Intel Corporation | Systems, apparatuses, and methods for performing mask bit compression |
CN104025020A (zh) * | 2011-12-23 | 2014-09-03 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
WO2019000456A1 (zh) * | 2017-06-30 | 2019-01-03 | 华为技术有限公司 | 传输数据掩码的方法、内存控制器、内存芯片和计算机系统 |
CN114510271A (zh) * | 2022-02-09 | 2022-05-17 | 海飞科(南京)信息技术有限公司 | 用于在单指令多线程计算系统中加载数据的方法和装置 |
CN114510271B (zh) * | 2022-02-09 | 2023-08-15 | 海飞科(南京)信息技术有限公司 | 用于在单指令多线程计算系统中加载数据的方法和装置 |
CN116150058A (zh) * | 2023-04-17 | 2023-05-23 | 合肥芯荣微电子有限公司 | 一种基于axi总线的并发传输模块和方法 |
CN116150058B (zh) * | 2023-04-17 | 2023-06-23 | 合肥芯荣微电子有限公司 | 一种基于axi总线的并发传输模块和方法 |
Also Published As
Publication number | Publication date |
---|---|
TWI410865B (zh) | 2013-10-01 |
TW200842702A (en) | 2008-11-01 |
US7921263B2 (en) | 2011-04-05 |
EP1939727A2 (en) | 2008-07-02 |
EP1939727A3 (en) | 2008-10-22 |
CN101206635B (zh) | 2011-11-30 |
KR20080059106A (ko) | 2008-06-26 |
HK1120876A1 (en) | 2009-04-09 |
KR100956970B1 (ko) | 2010-05-11 |
US20080155210A1 (en) | 2008-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101206635B (zh) | 处理器中执行掩码存储操作的方法和集成电路 | |
US4814976A (en) | RISC computer with unaligned reference handling and method for the same | |
US6052766A (en) | Pointer register indirectly addressing a second register in the processor core of a digital processor | |
US11183225B2 (en) | Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size | |
US7529907B2 (en) | Method and apparatus for improved computer load and store operations | |
US11269638B2 (en) | Exposing valid byte lanes as vector predicates to CPU | |
KR20010085614A (ko) | 임의 벡터 어드레싱을 이용한 벡터 레지스터 파일 | |
US6430684B1 (en) | Processor circuits, systems, and methods with efficient granularity shift and/or merge instruction(s) | |
US7308559B2 (en) | Digital signal processor with cascaded SIMD organization | |
US9471316B2 (en) | Using a single-instruction processor to process messages | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
US20170161069A1 (en) | Microprocessor including permutation instructions | |
JP4955149B2 (ja) | ビットfifoを有するディジタル信号プロセッサ | |
US9781062B2 (en) | Using annotations to extract parameters from messages | |
KR102458467B1 (ko) | 벡터 생성 명령 | |
EP1257912B1 (en) | Method and apparatus for improved computer load and store operations | |
JP2006527436A (ja) | データ処理装置及びレジスタ・ファイルとメモリとの間でデータ値を転送する方法 | |
JP2010044515A (ja) | 信号処理プロセッサ及び半導体装置 | |
JP2007334819A (ja) | ベクトルリネーミング方式およびベクトル型計算機 | |
EP4254176A1 (en) | System for managing a group of rotating registers defined arbitrarily in a processor register file | |
JP3766413B2 (ja) | データ並び替え方法 | |
JPH04107632A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1120876 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1120876 Country of ref document: HK |
|
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: 20111130 Termination date: 20161206 |