CN100412786C - 可以对复合操作数进行压缩操作的微处理器 - Google Patents
可以对复合操作数进行压缩操作的微处理器 Download PDFInfo
- Publication number
- CN100412786C CN100412786C CNB02126161XA CN02126161A CN100412786C CN 100412786 C CN100412786 C CN 100412786C CN B02126161X A CNB02126161X A CN B02126161XA CN 02126161 A CN02126161 A CN 02126161A CN 100412786 C CN100412786 C CN 100412786C
- Authority
- CN
- China
- Prior art keywords
- data element
- operand
- apart
- register
- data
- 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 - Lifetime
Links
- 239000002131 composite material Substances 0.000 title 1
- 238000003860 storage Methods 0.000 claims description 43
- 238000000034 method Methods 0.000 claims description 30
- 230000004044 response Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 5
- 238000006386 neutralization reaction Methods 0.000 claims description 2
- 238000012423 maintenance Methods 0.000 claims 1
- 230000005055 memory storage Effects 0.000 claims 1
- 230000014509 gene expression Effects 0.000 description 33
- 238000012360 testing method Methods 0.000 description 28
- 230000006835 compression Effects 0.000 description 26
- 238000007906 compression Methods 0.000 description 26
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 23
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 23
- 229920006395 saturated elastomer Polymers 0.000 description 12
- 230000014759 maintenance of location Effects 0.000 description 10
- 241001269238 Data Species 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000001174 ascending effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 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
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 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
- 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/30181—Instruction operation extension or modification
-
- 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/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49921—Saturation, i.e. clipping the result to a minimum or maximum value
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一个处理器包括用于存储第一压缩数据的第一寄存器(209),解码器(202)和功能单元(203)。解码器有一个控制信号输入(207),用以接收第一控制信号和第二控制信号。第一控制信号用以指示压缩操作,而第二控制信号用以指示拆开操作。功能单元连接到解码器(202)和寄存器(209)上。功能单元除执行移动操作外还使用第一压缩数据执行压缩操作和拆开操作。
Description
技术领域
本发明包括使用单个控制信号处理多个数据元素而执行操作的一种装置和方法。本发明允许对压缩数据类型执行移动、压缩和拆开的操作。
背景技术
当今,大多数个人计算机系统的工作机制是使用一个指令产生一个结果。通过增加指令的执行速度和处理器指令的复杂程度以及并行执行多个指令来增加处理器性能,这种计算机称为复杂指令集计算机(CISC)。例如加里福尼亚州Santa Clara的INTEL公司的INTEL80386TM微处理器就属于CISC类型的处理器。
先前的计算机系统结构经过优化以利用CISC概念。这样的系统通常具有32位宽的数据总线。然而,针对计算机支持的协作(CSC-电话会议与混合媒体数据操作集成)、2维/3维图像、图像处理、视频压缩/解压、识别算法和音频处理方面的应用增加了对更高性能的需求。但是,执行速度和指令复杂性的增加只是一种解决方案。
这些应用的一个共同的特征是它们常常操作大量的数据,其中只有少数位是重要的。也就是说,是有关位用比数据总线大小少得多的位表示的数据。例如,处理器的许多操作是就8位和16位数据执行的(例如视频图像中的像素彩色分量),但是具有宽得多的数据总线和寄存器。因此,具有32位数据总线和寄存器并且执行这样一种算法的处理器可能损失多达75%的数据处理、运载和存储能力,因为只有前8位数据是重要的。
因此,希望有一个处理器,它通过更加有效地利用表示被操作数据需要的位数和处理器实际数据运载和存储容量之间的差,从而提高其性能。
发明内容
本文说明一种改进了数据处理操作的处理器。
一种处理器,它包括存储第一压缩数据的第一寄存器,一个解码器和一个功能单元。解码器有一个控制信号输入。控制信号输入用于接收第一控制信号和第二控制信号。第一控制信号用于指示一个压缩操作。第二控制信号用于指示一个拆开操作。功能单元连接到解码器和寄存器。功能单元使用第一压缩数据执行压缩和拆开操作。处理器还支持移动操作。
根据本发明的第一方面,提供一种方法,包括:
接收第一指令,所述第一指令包括一个操作码字段,一个第一字段表示具有第一组多个数据元素的第一操作数,所述第一组多个数据元素包括第一操作数第一数据元素和第一操作数第二数据元素,一个第二字段表示具有第二组多个数据元素的第二操作数,所述第二组多个数据元素包括第二操作数第一数据元素和第二操作数第二数据元素,每个第一操作数第一数据元素、第一操作数第二数据元素、第二操作数第一数据元素和第二操作数第二数据元素的长度是N/2位;
响应于所述第一指令,存储长度为N位的第一结果数据元素,所述第一结果数据元素包括第一操作数第一数据元素和第二操作数第一数据元素。
根据本发明的第二方面,提供一种装置,包括:
解码第一指令的解码器,所述第一指令包括一个操作码字段,一个第一字段表示具有第一组多个数据元素的第一操作数,所述第一组多个数据元素包括第一操作数第一数据元素和第一操作数第二数据元素,一个第二字段表示具有第二组多个数据元素的第二操作数,所述第二组多个数据元素包括第二操作数第一数据元素和第二操作数第二数据元素,每个第一操作数第一数据元素、第一操作数第二数据元素、第二操作数第一数据元素和第二操作数第二数据元素的长度是N/2位;
响应于所述第一指令存储长度为N位的第一结果数据元素的功能单元,所述第一结果数据元素包括第一操作数第一数据元素和第二操作数第一数据元素。
根据本发明的第三方面,提供一种微处理器,包括:
保持第一压缩数据的第一源寄存器,所述第一压缩数据具有包含第一压缩数据元素和第三压缩数据元素的第一组多个压缩数据,每个第一压缩数据元素和第三压缩数据元素的长度是N/2位;
保持第二压缩数据的第二源寄存器,所述第二压缩数据具有包含第二压缩数据元素和第四压缩数据元素的第二组多个压缩数据,每个第二压缩数据元素和第四压缩数据元素的长度是N/2位;
被耦接的电路,用于从第一源寄存器接收第一压缩数据和从第二源寄存器接收第二压缩数据,并响应于一个拆开指令通过复制第一压缩数据元素和第二压缩数据元素到目标寄存器的第一拆开数据元素中和复制第三数据元素和第四数据元素到目标寄存器的第二拆开数据元素中来拆开所述第一压缩数据和所述第二压缩数据,每个第一和第二拆开数据元素的长度是N位。
根据本发明的第四方面,提供一种设备,包括:
用于接收第一指令的装置,所述第一指令包括一个操作码字段,一个第一字段表示具有第一组多个数据元素的第一操作数,所述第一组多个数据元素包括第一操作数第一数据元素和第一操作数第二数据元素,一个第二字段表示具有第二组多个数据元素的第二操作数,所述第二组多个数据元素包括第二操作数第一数据元素和第二操作数第二数据元素,每个第一操作数第一数据元素、第一操作数第二数据元素、第二操作数第一数据元素和第二操作数第二数据元素的长度是N/2位;
响应于所述第一指令存储长度为N位的第一结果数据元素的装置,所述第一结果数据元素包括第一操作数第一数据元素和第二操作数第一数据元素。
虽然在说明书和附图中包含了大量的细节,但是,本发明由权利要求的范围限定。只有在这些权利要求中提到的限制适用于本发明。
附图说明
本发明用附图中的、但不限于附图中的实例说明,相同的参考标号表示相似的元件。
图1表示使用本发明的方法和装置的计算机系统的一个实施例;
图2表示本发明的处理器的一个实施例;
图3是说明由本发明的处理器使用的操作寄存器文件中的数据的总步骤的流程图;
图4a说明存储器数据类型;
图4b、图4c和图4d说明整数数据的寄存器内表示;
图5a表示压缩数据类型;
图5b,图5c和图5d说明压缩数据的寄存器内表示;
图6a表示在该计算机系统中使用的指示使用压缩数据的控制信号格式;
图6b表示第二控制信号格式,它可以用于该计算机系统指示使用压缩数据或者整数数据;
图7表示由处理器在对压缩数据执行压缩操作时所遵循的方法的一个实施例;
图8a表示能够对压缩字节数据实现压缩操作的电路;
图8b表示能够对压缩字数据实现压缩操作的电路;
图9表示由处理器在对压缩数据执行拆开操作时所遵循的方法的一个实施例;
图10表示能够对压缩数据实现拆开操作的电路。
具体实施方式
本文叙述了对多个数据元素进行移动、压缩和拆开操作的处理器。在下面的说明中,叙述了大量的诸如电路等这样的细节,以便提供对本发明彻底的了解。在另外的场合,为避免不必要地冲淡对本发明的理解,对熟知的结构和技术未作详细的叙述。
定义
为了对理解本发明的实施例的说明提供基础,提供下面的定义。
位X到位Y:定义二进制数的一个子字段。例如字节001110102(以2为基表示)的位6到位0表示子字段1110102,二进制数后面的2表示以2为基。因此,10002等于810,而F16等于1510。
Rx:是一个寄存器。寄存器是能够存储和提供数据的任何设备。寄存器的另外的功能下面说明。一个寄存器不一定是处理器组件的一部分。
DEST:是一个数据地址。
SRC1:是一个数据地址。
SRC2:是一个数据地址。
Result:要存储在由DEST寻址的寄存器中的数据。
Source1:存储在由SRC1寻址的寄存器中的数据。
Source2:存储在由SRC2寻址的寄存器中的数据。
计算机系统
参考图1,可以实现本发明的实施例的计算机系统作为计算机系统100表示。计算机系统100包括总线101或者其它传输信息的通信硬件和软件以及与总线101连接的处理信息的处理器109。计算机系统100另外还包括一个随机存取存储器(RAM)或者其它动态存储设备(称为主存储器104),它连接到总线101上,用于存储信息和要由处理器109执行的指令。主存储器104也可以用于暂存变量或者其它在处理器109执行指令时期的中间信息。计算机系统100还包括连接在总线101上的只读存储器(ROM)106,和/或其它静态存储设备,用于存储静态信息和处理器109要执行的指令。数据存储设备107连接到总线101上用于存储信息和指令。
另外,数据存储设备107,例如磁盘或光盘以及它们相应的驱动器,可以连接到计算机100上。计算机系统100也可以通过总线101连接到一个显示设备121上,以便显示信息给计算机用户。显示设备121可以包括一个帧缓冲器,专用图形处理设备,一个阴极射线管(CRT),和/或一个平面面板显示器。通常一个包括字母数字和其它键的字母数字输入设备122连接到总线101上,用于给处理器109传输信息和命令选择。另一类型的用户输入设备是光标控制设备123,例如鼠标、轨迹球、光笔、触摸屏、或者光标指示键,用于给处理器109传输方向信息和命令选择以及控制光标在显示设备121上的移动。这种输入设备通常在两个轴上有两个自由度,第一轴(例如x轴)和第二轴(例如y轴),它们允许光标控制设备在一个平面内指定位置。然而本发明不应该局限于只有两个自由度的输入设备。
另一个可以连接到总线101上的设备是硬拷贝设备124,它可能用于在诸如纸、胶片、或者类似类型介质上打印指令、数据或者其它信息。另外计算机系统100可以连接到声音记录和/或回放设备125上,例如连接到一个麦克风上记录信息的音频数字转换器。另外,该设备还可能包括一个连接到数/模(D/A)转换器的扬声器,用于回放数字化的声音。
还有,计算机系统100可以是一个计算机网络(例如一个局域网)的一个终端。这样,计算机系统100便是包括若干连网设备的一个计算机系统的一个计算机子系统。计算机系统100可以包括视频数字化设备126。视频数字化设备126可以用于获取视频图像,而传输给网络中的其它设备。
计算机系统100对于支持计算机支持的协作(CSC-电话会议与混合介质数据操作的集成)、2维/3维图形、图像处理、视频压缩/解压、识别算法和音频操作十分有用。
处理器
图2表示处理器109的详图。处理器109可以在使用一层或多层诸如BiCMOS、CMOS和NMOS等工艺技术的基底上实现。
处理器109包括一个解码由处理器109使用的控制信号和数据的解码器202。然后数据可以通过内部总线205存储在寄存器文件204中。显然,一个实施例的寄存器不应该局限于特定类型的电路,相反,一个实施例的寄存器只需要能够存储和提供数据,以及执行这里叙述的功能。
根据不同的数据类型,数据可能存储在整数寄存器组201、寄存器组209、状态寄存器组208或者指令指针寄存器211中。其它的寄存器例如浮点寄存器可以包含在寄存器文件204中。在一个实施例中,整数寄存器组201存储32位整数数据。在一个实施例中寄存器209组包括8个寄存器,R0 212a到R7 212h。寄存器组209中的每一个寄存器为64位长。R1 212a、R2 212b和R3 212c是寄存器组209中单个寄存器的例子。寄存器组209中的一个寄存器的32位可以移动到整数寄存器组201中的一个整数寄存器中。类似地,一个整数寄存器中的值可以移动到寄存器组209中的一个寄存器的32位中。
状态寄存器组208指示处理器109的状态。指令指针寄存器211存储下一要执行的指令的地址。整数寄存器组201、寄存器组209、状态寄存器组208、和指令指针寄存器211都连接到内部总线205上。任何另外的寄存器也都应该连接到内部总线205上。
在另一个实施例中,这种寄存器中的某一些可以用于两种类型的数据。例如,寄存器组209和整数寄存器组201可以组合,其中每一个寄存器既可以存储整数数据也可以存储压缩数据。在另一个实施例中,寄存器组209可以用作浮点寄存器组。在这一实施例中,压缩数据或者浮点数据可以存储在寄存器组209中。在一个实施例中,组合寄存器为64位长,而整数用64位表示。在该实施例中,在存储压缩数据和整数数据时,寄存器不需区分这两种数据类型。
功能单元203执行由处理器109执行的操作。这样的操作包括移位、加法、减法和乘法等。功能单元203连接到内部总线205。高速缓冲存储器206是处理器109的一个选件,可以用于缓冲存储例如来自主存储器104的数据和/或控制信号。高速缓冲存储器206连接到解码器202以接收控制信号207。
图3表示处理器109的总操作。也就是说,图3表示处理器109在对压缩数据执行操作、对未压缩数据执行操作或者执行某个其它操作时遵循的步骤。例如这样的操作包括用从高速缓冲存储器206、主存储器104、只读存储器(ROM)106或者数据存储设备107的数据加载寄存器文件204中的一个寄存器的加载操作。在本发明的一个实施例中,处理器109支持由加里福尼亚州圣大克拉热INTEL公司的INTEL80486TM支持的大多数指令。在本发明另一个实施例中,处理器109支持由加里福尼亚州圣大克拉热INTEL公司的INTEL 80486TM支持的全部操作。在本发明的再一个实施例中,处理器109支持由加里福尼亚州圣大克拉热INTEL公司制造的奔腾处理器、INTEL 80486TM处理器、80386TM处理器、INTEL 80286TM处理器、和INTEL 8086TM处理器支持的全部操作。在本发明的另一个实施例中,处理器109支持由加里福尼亚州Santa Clara的INTEL公司定义的IATM-INTEL结构支持的全部操作(参见“微处理器”,INTEL数据丛书卷1和卷2,1992年和1993年,加里福尼亚州Santa Clara INTEL公司出版)。一般来说,处理器109可以支持奔腾处理器的当前指令集,但是也可以修改为支持未来指令以及这里叙述的指令集的集合。重要的是,处理器109除这里叙述的操作外,可以支持先前所用的操作。
在步骤301,解码器202从高速缓冲存储器206或者总线101接收一个控制信号207。解码器202解码控制信号以判定要执行的操作。
在步骤302,解码器202访问寄存器204或者存储器中的一个存储单元。根据在控制信号207中指定的寄存器地址访问寄存器文件204中的寄存器或在存储器中的存储单元。例如,为对压缩数据进行操作,控制信号207可以包括SRC1、SRC2和DEST寄存器地址。SRC1是第一源寄存器地址。SRC2是第二源寄存器地址。在一些情况下,SRC2地址是可选项,因为并非所有的操作需要两个源地址。如果一个操作不需要SRC2地址,则只使用SRC1地址。DEST是存储结果数据的目的寄存器的地址。在一个实施例中,SRC1或SRC2也用作DEST。SRC1、SRC2和DEST将结合图6a和图6b更充分地说明。存储在相应寄存器中的数据分别称为Source1、source2和Result。它们每一个为64位长。
在本发明的另一个实施例中,SRC1、SRC2和DEST中的任何一个或者全部可以定义为处理器109中的可寻址存储器空间的一个存储单元。例如,SRC1可能确定在主存储器104中的一个存储单元,而SRC2确定在整数寄存器组201中的第一寄存器,以及DEST确定寄存器组209中的第二寄存器。这里为说明简单起见,参考标号是对寄存器文件204的访问标注的,然而这些访问也可以对存储器进行。
在本发明的另一个实施例中,操作码只包含两个地址,SRC1和SRC2。在该实施例中,运算结果存储在SRC1或SRC2寄存器中,也就是说,SRC1(或SRC2)用作DEST。这种类型的寻址与前面只具有两个地址的CISC指令兼容。这简少了解码器202的复杂性。注意,在这一实施例中,如果在SRC1寄存器中包含的数据不准备破坏,则在执行操作前必须首先把该数据复制到另一个寄存器中。这一复制需要一个另外的指令。这里为说明简单起见,将使用三地址寻址模式(亦即SRC1、SRC2和DEST)。然而应当记住,在一个实施例中,控制信号可能只包括SRC1和SRC2,以及SRC1(或SRC2)标识目的寄存器。
在控制信号需要一个操作时,在步骤303,允许功能单元203对来自寄存器文件204的被访问的数据执行该项操作。一旦功能单元203执行完这一操作,在步骤304,则根据控制信号207的要求把结果回存到寄存器文件204中。
数据和存储格式
图4a表示可以用于图1的计算机系统的一些数据格式。这些数据格式是定点格式。处理器109可以操作这些数据格式。多媒体算法常常使用这些数据格式。一个字节401包含8个信息位。一个字402包含16个信息位,或者两个字节。一个双字403包含32个信息位,或者4个字节。于是,处理器109执行可能操作这些存储器数据格式中任何一个的控制信号。
在下面的说明中,对位、字节、字、和双字的子字段加参考标号。例如,字节001110102(以2为基表示)的位6到位0表示子字段1110102。
图4b到图4d表示本发明的实施例中使用的寄存器内表示。例如无符号字节寄存器内表示410可以表示存储在整数寄存器组201中的一个寄存器中的数据。在一个实施例中,整数寄存器组201中的一个寄存器为64位长。在另一个实施例中,整数寄存器组201中的一个寄存器为32位长。为说明简单起见,下面叙述64位的整数寄存器,然而也可以使用32位的整数寄存器。
无符号字节的寄存器内表示410示出处理器109在整数寄存器组201中存储一个字节401,在该寄存器中的头8位,即位7到位0用于该数据字节401。这些位表示为{b}。为适当地表示这一字节,其余的56位必须为0。对于一个有符号字节的寄存器内表示411,整数寄存器组201在头7位,即位6到位0存储该数据,为数据部分,第7位表示符号位,图中表示为{S}。其余的位63到位8为该字节的符号的延续。
无符号字的寄存器内表示412存储在整数寄存器组201中的一个寄存器中。位15到位0包含一个无符号字402。这些位表示为{w}。为适当地表示该字,其余的位63到位16必须为0。带符号的字402存储在位14到位0,如带符号字的寄存器内表示413所示。其余的位64到位15是符号字段。
双字403可以作为无符号双字的寄存器内表示414存储,或者作为带符号双字的寄存器内表示415存储。无符号双字的寄存器内表示414的位31到位0为数据。这些位表示为{d}。为适当表示该无符号双字,其余的位63到位32必须为0。整数寄存器组201在其位30到位0存储一个带符号双字的寄存器内表示415,其余的位63到位31是符号字段。
如上面图4b到图4d所示,一些数据类型在64位宽的寄存器中的存储是一种低效的存储方法。例如,为存储一个无符号字节的寄存器内表示410,位63到位8必须为0,而只有位7到位0可能包含非0位。因此,在一个64位寄存器中存储一个字节的处理器只使用寄存器容量的12.5%。相似地,由功能单元203执行的操作只有前几位是重要的。
图5a表示压缩数据的数据格式。每一压缩数据包括多于一个独立的数据元素。图中说明3种压缩数据格式:压缩字节501,压缩字502和压缩双字503。在本发明的一个实施例中,压缩字节为64位长,包含8个数据元素,每一个数据元素为一字节长。一般来说,一个数据元素是一个单个的数据,它与具有同样长度的其它数据元素存储在一个单一寄存器中(或存储单元)。在本发明的一个实施例中,存储在一个寄存器中的数据元素的数目等于64除以数据元素的位长。
压缩字502为64位长,包含4个字402数据元素。每一个字402数据元素包含16个信息位。
压缩双字503为64位长,包含两个双字403数据元素。每一个双字403数据元素包含32个信息位。
图5b到图5d表示寄存器内压缩数据存储表示。无符号压缩字节的寄存器内表示510示出压缩字节501在寄存器组R0 212a到寄存器组Rn212af中的一个寄存器中的存储方式。每个字节数据元素的信息对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,对于字节3存储在位31到位24,对于字节4存储在位39到位32,对于字节5存储在位47到位40,对于字节6存储在位55到位48,对于字节7存储在位63到位56。因此寄存器中所有可用的位都被使用。这种存储安排增加了处理器的存储效率。另外,通过访问8个数据元素,现在可以同时对8个数据元素执行操作。带符号压缩字节的寄存器内表示511类似地存储在寄存器组209中的一个寄存器中。注意,每一字节数据元素只有第8位是必须的符号位,其它位可以用于或者可以不用于指示符号。
无符号压缩字的寄存器内表示512示出字3到字0是怎样存储在寄存器组209中的一个寄存器中的。位15到位0包含对于字0的数据元素信息,位31到位16包含对于字1的数据元素信息,位47到位32包含对于字2的数据元素信息,而位63到位48包含对于字3的数据元素信息。带符号压缩字的寄存器内表示513类似于无符号压缩字的寄存器内表示512。注意,每一字数据元素只有第16位包含必要的符号指示符。
无符号压缩双字的寄存器内表示514表示寄存器组209怎样存储两个双字数据元素。双字0存储在寄存器的位31到位0。双字1存储在寄存器的位63到位32。带符号压缩双字的寄存器内表示515类似于无符号压缩双字的寄存器内表示514。注意,必要的符号位是该双字数据元素的第32位。
如前所述,寄存器组209既可以用于压缩数据,也可以用于整数数据。在本发明的这一实施例中,可以要求单个程序处理器109跟踪一个被寻址的寄存器,例如R1 212a,是否正在存储压缩数据或者简单整数/定点数据。在另一可选实施例中,处理器109可以跟踪存储在寄存器组209中的单个寄存器中的数据类型。因此,如果例如试图对简单/定点整数数据施行一个压缩的加法运算的话,这一可选实施例可能产生错误。
控制信号格式
下面说明处理器109所用操作压缩数据的控制信号格式的一个实施例。在本发明的一个实施例中,控制信号用32位表示。解码器202可以从总线101接收控制信号207。在另一个实施例中,解码器202也可以从高速缓冲存储器206接收这样的控制信号。
图6a表示对压缩数据进行操作的控制信号的一般格式。操作字段OP601,即位31到位26,提供关于由处理器109要执行的操作的信息;例如压缩加,压缩减等。SRC1602,即位25到位20,提供寄存器组209中的一个寄存器的源寄存器地址。该源寄存器包含在控制信号执行中要用的第一压缩数据,Source1。相似地,SRC2 603,即位19到位14,包含寄存器组209中的一个寄存器的地址。这一第二源寄存器包含执行操作期间要用到的压缩数据,Source2。DEST605,即位5到位0包含寄存器组209中的一个寄存器的地址。该目的寄存器将存储压缩数据操作的结果压缩数据Result。
控制位SZ610,即位12和位13,指示在第一和第二压缩数据源寄存器中的数据元素的长度。如果SZ610等于012,则压缩数据作为压缩字节501格式化。如果SZ610等于102,则压缩数据作为压缩字502格式化。SZ610等于002或112预留,然而,在另一个实施例中,其中的一个可以用来指示压缩双字503。
控制位T611,即位11,指示该操作是否以饱和方式执行。如果T611等于1,则执行饱和操作。如果T611等于0,则执行非饱和操作。后面说明饱和操作。
控制位S612,即位10,指示使用带符号操作。如果S612等于1,则执行带符号操作;如果S612等于0,则执行无符号操作。
图6b表示操作压缩数据的控制信号的第二种一般格式。该格式相应于在“奔腾处理器系列用户手册”中叙述的一般整数操作码格式,该手册由INTEL公司文献销售部出版,地址为P.O.Box 7641,Mt.prospect,IL,60056-7641。注意,OP601,SZ610,T611,和S612都结合在一个大字段中。对于一些控制信号,位3到位5是SRC1 602。在一个实施例中,其中有一个SRC1 602地址,则位3到位5也相应于DEST605。在一个可选的实施例中,其中有一个SRC2 603地址,则位0到位2也相应于DEST605。对于其它的控制信号,例如压缩移位立即操作,位3到位5表示操作码场的扩展。在一个实施例中,这种扩展允许程序员把一个立即数与控制信号结合,例如一个移位计数值。在一个实施例中,立即数跟着控制信号。这在“奔腾处理器系列用户手册”一书的附录F,从F-1到F-3页有详细介绍。位0到位2表示SRC2603。这种一般格式允许寄存器到寄存器,存储器到寄存器,由存储器对寄存器,由寄存器对寄存器,由立即数对寄存器,由寄存器到存储器寻址。在一个实施例中,这种一般格式也可以支持整数寄存器到寄存器和寄存器到整数寄存器寻址。
饱和/非饱和的说明
如前所述,T611指示操作是否可选为饱和。在允许饱和的场合,当一个操作的结果溢出或下溢数据的范围时,其结果被箝位。箝位指的是如果结果超过该范围的最大或最小值时把结果设定在最大或最小值。在下溢的场合,饱和把结果箝位在该范围的最小值,而在溢出的场合,饱和把结果箝位在最大值。对于每一种数据格式允许的范围示于表1。
数据格式 | 最小值 | 最大值 |
无符号字节 | 0 | 255 |
带符号字节 | -128 | 127 |
无符号字 | 0 | 65535 |
带符号字 | -32768 | 32767 |
无符号双字 | 0 | 2<sup>64</sup>-1 |
带符号双字 | -2<sup>63</sup> | 2<sup>63</sup>-1 |
表1
如上所述,T611指示是否正在执行饱和操作。因此,使用无符号字节数据格式,如果一个运算结果=258并且允许饱和,则在该结果被存储在该操作的目的寄存器之前被箝位在255。类似地,如果运算的结果=-32999且处理器109使用带符号字数据格式同时允许饱和,则运算结果在被存储在该运算的目的寄存器之前被箝位在-32768。
数据处理操作
在本发明的一个实施例中,多媒体应用的性能不仅通过支持标准的CISC指令集(未压缩数据操作),而且通过支持对压缩数据的操作而得以改善。这样的压缩数据操作可能包括加法、减法、乘法、比较、移位、与和异或。然而,为充分使用这些操作,已经确定,应该包括数据处理操作。这样的数据处理操作可能包括移动、压缩和拆开。移位、压缩和拆开由于产生出允许程序员容易使用的格式的压缩数据而方便了其它操作的执行。
对于其它压缩操作的进一步的背景,参见流水号为-,于-申请的“具有比较操作的微处理器”,流水号为-于-申请的“具有移位操作的新型处理器”,流水号为08/176123,于1993年12月30日申请的“处理器中使用压缩数据的方法和装置”,流水号为08/175772,于1993年12月30日申请的“在处理器中使用新型操作的方法和装置”,所有这些申请都转让给本发明的受让人。
移动操作
移动操作把数据传输给寄存器209或从寄存器209传输出数据。在一个实施例中,SRC2 603是包含源数据的地址,而DEST605是数据要传输到的地址。在该实施例中,不用SRC1 602。在另一个实施例中,SRC1 602就是DEST605。
为解释移动操作,要区分寄存器和存储单元这两种情况。寄存器在寄存器文件204中寻找,而存储器可以是高速缓冲存储器206、主存储器104、ROM106、数据存储设备107。
移动操作可以从存储器到寄存器组209、从寄存器组209到存储器、和从寄存器组209中的一个寄存器到寄存器组209中的另一个寄存器移动数据。在一个实施例中,压缩数据存储在不同于存储整数数据的寄存器中。在该实施例中,移动操作可以把数据从整数寄存器组201移动到寄存器组209中。例如,在处理器109中,如果压缩数据存储在寄存器组209中而整数数据存储在整数寄存器组201中,则可以使用移动指令从整数寄存器组201移动数据到寄存器组209,反之亦然。
在一个实施例中,当为移动指定一个存储器地址时,在存储单元(指示最低有效字节的存储器单元)中的数据的8个字节加载到寄存器组209中的一个寄存器或从该寄存器存储数据的8个字节到该存储单元。当指定寄存器组209中的一个寄存器时,该寄存器中的内容被移动到寄存器组209中的第二寄存器或从寄存器组209中的第二寄存器加载内容到该寄存器。如果整数寄存器201为64位长,且指定一个整数寄存器,则在该整数寄存器中的数据的8个字节加载到寄存器209中的一个寄存器中或从后者存储在该整数寄存器中。
在一个实施例中,整数用32位表示。当从寄存器组209到整数寄存器组201执行移动操作时,则只有低32位压缩数据移动到指定的整数寄存器。在一个实施例中,高阶32位被置0。相似地,当执行从整数寄存器组201到寄存器组209的移动时,只加载寄存器组209中的一个寄存器的低32位。在一个实施例中,处理器109支持在寄存器组209的一个寄存器到存储器之间的32位移动操作。在另一个实施例中,只有32位的移动操作是就压缩数据的高阶32位进行的。
压缩操作
在本发明的一个实施例中,SRC1 602寄存器包含数据(Source1),SRC2 603寄存器包含数据(Source2),而DEST605寄存器包含运算的结果数据(Result)。也就是说,Source1的各部分和Source2的各部分压缩在一起产生Result。
在一个实施例中,压缩操作通过把源压缩字(或双字)的低位字节(或字)压缩到Result的字节(或字)中而把压缩字(或双字)变换为压缩字节(或字)。在一个实施例中,压缩操作把四压缩字变换为压缩双字。这一操作可选使用带符号数据执行。另外,该操作可选使用饱和方式执行。
图7表示对压缩数据执行压缩操作的方法的实施例。该实施例可以在图2中的处理器109中实现。
在步骤701,解码器202解码由处理器109接收的控制信号207。于是,解码器202解码:适当的压缩操作的操作码;寄存器组209中的SRC1 602、SRC2 603和DEST605的地址;饱和/非饱和、带符号/无符号、和在压缩数据中的数据元素的长度。如前所述,SRC1602(或SRC2 603)可以用作DEST605。
在步骤702,通过内部总线205,解码器202访问寄存器口文件204中的寄存器组209,给出SRC1 602和SRC2603的地址。寄存器组209供给功能单元203存储在SRC1602寄存器中的数据(Source1)和存储在SRC2 603寄存器中的数据(Source2)。也就是说,寄存器组209通过内部总线205给功能单元203传输数据。
在步骤703,解码器202允许功能单元203执行适当的压缩操作。解码器202通过内部总线205进一步传输在Source1和Source2中的数据元素的饱和和大小。饱和作为选项用以使在结果数据元素中的数据取最大值。如果在Source1和Source2中的数据元素的值大于或者小于在Result中的数据元素所能表示的值的范围,则相应的结果数据元素设定为其最大或最小值。例如,如果在Source1和Source2中的字数据元素中的带符号值小于0X80(或对双字来说为0X8000),则结果字节(或字)数据元素箝位在0X80(或对双字来说为0X8000)。如果在Source1和Source2中的字数据元素中的带符号值大于0X7F(或对双字来说为0X7FFF),则结果字节(或字)数据元素箝位在0X7F(或0X7FFF)。
在步骤710,数据元素的大小决定下一步要执行哪个步骤。如果数据元素的大小为16位(压缩字502数据),则功能单元203执行步骤712。然而,如果压缩数据的数据元素的大小为32位(压缩双字503数据),则功能单元203执行步骤714。
假定源数据元素的大小为16位,则执行步骤712。在步骤712,执行下面的内容。Source1位7到0为Result位7到0。Source1位23到16为Result位15到8。Source1位39到32为Result位23到16。Source1位63到56为Result位31到24。Source2位7到0为Result位39到32。Source2位23到16为Result位47到40。Source2位39到32为Result位55到48。Source2位63到56为Result31到24。如果设定了饱和,则测试每一字的高阶位以判定是否要箝位Result数据元素。
假定源数据元素的大小为32位,则执行步骤714。在步骤714,执行下面的内容。Source1位15到0为Result位15到0。Source1位47到32为Result位31到16。Source2位15到0为Result位47到32。Source2位47到32为Result位63到48。如果设定了饱和,则测试每一双字的高阶位以判定是否要箝位Result数据元素。
在一个实施例中,步骤712的压缩操作同时执行。然而,在另一个实施例中,这一压缩操作顺序执行。在再一个实施例中,一部分压缩操作同时执行,而一部分顺序执行。这一讨论也适用于步骤714的压缩操作。
在步骤720,Result存储在DEST605寄存器中。
表2表示非饱和无符号字压缩操作的寄存器内表示。第一行的位为Source1的压缩数据表示。第二行的位为Source2的数据表示。第三行的位为Result的压缩数据表示。每一数据元素位下面的数字是该数据元素的号码。例如,Source1数据元素3是100000002。
表2
表3表示饱和带符号双字压缩操作的寄存器内表示。
表3
压缩电路
在本发明的一个实施例中,为有效地执行压缩操作,使用并行方法。图8a和图8b表示能够对压缩数据执行压缩操作的一个电路的实施例。该电路可选执行饱和压缩操作。
图8a和图8b的电路包括操作控制电路800,结果寄存器852,结果寄存器853,8个16位到8位的饱和测试电路,和4个32位到16位的饱和测试电路。
操作控制电路800从解码器202接收信息以允许压缩操作。操作控制电路800使用饱和值允许对每一饱和测试电路进行饱和测试。如果源压缩数据的大小为字压缩数据503,则输出许可信号831由操作控制电路800置位。这就允许输出寄存器852输出。如果源压缩数据的大小是双字压缩数据504,则输出许可信号832由操作控制电路800置位。这就允许输出寄存器853输出。
每一饱和测试电路可以选择测试饱和。如果饱和测试被禁止,则每一饱和测试电路仅仅把低阶位传送给一个结果寄存器的相应位置。如果饱和测试被许可,则每一饱和测试电路测试高阶位以判定是否应该对结果箝位。
饱和测试810到饱和测试817有16位输入和8位输出。8位输出是输入的低8位,或可选为一个箝位值(0X80,0X7F,或0XFF)。饱和测试810接收Source1位15到0而为结果寄存器852输出位7到0。饱和测试811接收Source1位31到16而为结果寄存器852输出位15到8。饱和测试812接收Source1位47到32而为结果寄存器852输出位23到16。饱和测试813接收Source1位63到48而为结果寄存器852输出位31到24。饱和测试814接收Source2位15到0而为结果寄存器852输出位39到32。饱和测试815接收Source2位31到16而为结果寄存器852输出位47到40。饱和测试816接收Source2位47到32而为结果寄存器852输出位55到48。饱和测试817接收Source2位63到48而为结果寄存器852输出位63到56。
饱和测试820到823有32位输入和16位输出。16位输出是输入的低16位,或可选为一个箝位值(0X8000,0X7FFF,或0XFFFF)。饱和测试820接收Source1位31到0而为结果寄存器853输出位15到0。饱和测试821接收Source1位63到32而为结果寄存器853输出位31到16。饱和测试822接收Source2位31到0而为结果寄存器853输出位47到32。饱和测试823接收Source2位63到32而为结果寄存器853输出位63到48。
例如在表4中,执行无符号不饱和字压缩操作。操作控制电路800许可结果寄存器852输出结果[63:0]860。
表4
然而,如果执行无符号不饱和双字压缩操作,则操作控制电路800许可结果寄存器853输出结果[63:0]860。表5表示这一结果。
表5
拆开操作
在一个实施例中,拆开操作交错放置两个源压缩数据的低阶压缩字节、字或者双字以产生结果压缩字节、字或者双字。
图9表示对压缩数据执行拆开操作的方法的实施例。该实施例可以在图2中的处理器109中实现。
首先执行步骤701和702。在步骤903,解码器202许可功能单元203执行拆开操作。解码器202通过内部总线205传输Source1和Source2中的数据元素的大小。
在步骤910,数据元素的大小决定下一步执行哪一步骤。如果数据元素的大小为8位(压缩字节数据501),则功能单元203执行步骤712。然而,如果压缩数据中的数据元素的大小为16位(压缩字数据502),则功能单元203执行步骤714。然而,如果压缩数据中的数据元素的大小为32位(压缩双字数据503),则功能单元203执行步骤716。
假定源数据元素的大小为8位,则执行步骤712。在步骤712,执行下面的内容:Source1位7到0为Result位7到0。Source2位7到0为Result位15到8。Source1位15到8为Result位23到16。Source2位15到8为Result位31到24。Source1位23到16为Result位39到32。Source2位23到16为Result位47到40。Source1位31到24为Result位55到48。Source2位31到24为Result位63到56。
假定源数据元素的大小为16位,则执行步骤714。在步骤714,执行下面的内容:Source1位15到0为Result位15到0。Source2位15到0为Result位31到16。Source1位31到16为Result位47到32。Source2位31到16为Result位63到48。
假定源数据元素的大小为32位,则执行步骤716。在步骤716,执行下面的内容:Source1位31到0为Result位31到0。Source2位31到0为Result位63到32。
在一个实施例中,步骤712的拆开操作同时执行。然而,在另一个实施例中,拆开操作顺序执行。在再一个实施例中,拆开操作的一部分同时执行,另一部分顺序执行。这一讨论也适用于在步骤714和步骤716的拆开操作。
在步骤720,Result存储在DEST605寄存器中。
表6示出字节拆开操作的寄存器内表示。
表6
表7示出字拆开操作的寄存器内表示。
表7
表8示出双字拆开操作的寄存器内表示。
表8
拆开电路
在本发明的一个实施例中,为有效地执行拆开操作,使用并行方法。图10表示能够对压缩数据执行拆开操作的一个电路的实施例。
图10的电路包括操作控制电路800,结果寄存器1052,结果寄存器1053和结果寄存器1054。
操作控制电路800从解码器202接收信息而许可拆开操作。如果源压缩数据的大小是字节压缩数据502,则由操作控制电路800置位输出许可信号1032。这就允许结果寄存器1052输出。如果源压缩数据的大小为字压缩数据503,则输出许可信号1033由操作控制电路800置位。这就允许输出寄存器1053输出。如果源压缩数据的大小是双字压缩数据504,则输出许可信号1034由操作控制电路800置位。这就允许输出结果寄存器1054输出。
结果寄存器1052有下列输入。Source1位7到0为结果寄存器1052的位7到0。Source2位7到0为结果寄存器1052的位15到8。Source1位15到8为结果寄存器1052的位23到16。Source2位15到8为结果寄存器1052的位31到24。
Source1位23到16为结果寄存器1052的位39到32。Source2位23到16为结果寄存器1052的位47到40。Source1位31到24为结果寄存器1052的位55到48。Source2位31到24为结果寄存器1052的位63到56。
结果寄存器1053有下列输入。Source1位15到0为结果寄存器1053的位15到0。Source2位15到0为结果寄存器1053的位31到16。Source1位31到16为结果寄存器1053的位47到32。Source2位31到16为结果寄存器1053的位63到48。
结果寄存器1054有下列输入。Source1位31到0为结果寄存器1054的位31到0。Source2位31到0为结果寄存器1054的位63到32。
例如,在表9中,执行一个字拆开操作。操作控制电路800将允许结果寄存器1053输出结果[63:0]860。
表9
然而,如果执行双字拆开操作,则操作控制电路800将允许结果寄存器1054输出结果[63:0]860。表10表示这一结果。
表10
因此,移动、压缩和拆开操作可以操作多个数据元素。在现有技术的处理器中,为执行这些类型的操作,需要多个单独的操作来执行单一压缩数据移动、压缩或者拆开操作。在一个实施例中,用于压缩数据操作的数据线都带有相关的数据。它将提高计算机系统的性能。
Claims (32)
1. 一种方法,包括:
接收第一指令,所述第一指令包括一个操作码字段,一个第一字段表示具有第一组多个数据元素的第一操作数,所述第一组多个数据元素包括第一操作数第一数据元素和第一操作数第二数据元素,一个第二字段表示具有第二组多个数据元素的第二操作数,所述第二组多个数据元素包括第二操作数第一数据元素和第二操作数第二数据元素,每个第一操作数第一数据元素、第一操作数第二数据元素、第二操作数第一数据元素和第二操作数第二数据元素的长度是N/2位;
响应于所述第一指令,存储长度为N位的第一结果数据元素,所述第一结果数据元素包括第一操作数第一数据元素和第二操作数第一数据元素。
2. 根据权利要求1的方法,其中所述第一指令是拆开操作指令,其中所述第一结果数据元素是第一拆开数据元素。
3. 根据权利要求2的方法,其中还包括步骤:用所述第一拆开数据元素覆盖所述第一操作数的第一组多个数据元素。
4. 根据权利要求2的方法,其中第一操作数第一数据元素是第一操作数的低阶数据元素,第二操作数第一数据元素是第二操作数的低阶数据元素,所述拆开指令的操作码字段包含一组操作码之一以从所述第一和第二组多个数据元素识别拆开操作交叉低阶字节元、字元或双字元。
5. 根据权利要求4的方法,其中存储第一拆开数据元素的步骤包括:存储第一操作数第一数据元素和将第二操作数第一数据元素存储在与第一操作数第一数据元素相邻的位置。
6. 根据权利要求2的方法,其中第一操作数第一数据元素是第一操作数的高阶数据元素,第二操作数第一数据元素是第二操作数的高阶数据元素,所述拆开指令的操作码字段包含一组操作码之一以从所述第一和第二组多个数据元素识别拆开操作交叉高阶字节元、字元或双字元。
7. 根据权利要求2的方法,其中还包括:响应于所述拆开指令存储长度为N位的第二拆开数据元素,所述第二拆开数据元素包括第一操作数第二数据元素和第二操作数第二数据元素。
8. 根据权利要求7的方法,其中存储第一拆开数据元素和第二拆开数据元素的步骤包括:
将第一操作数第一数据元素放在第一存储位置;
将第二操作数第一数据元素放在第二存储位置,所述第二存储位置与所述第一存储位置相邻;
将第一操作数第二数据元素放在第三存储位置,所述第三存储位置与所述第二存储位置相邻;
将第二操作数第二数据元素放在第四存储位置,所述第四存储位置与所述第三存储位置相邻。
9. 根据权利要求8的方法,其中所述第一存储位置、第二存储位置、第三存储位置、第四存储位置是由所述拆开指令标明的目标操作数的一部分。
10. 根据权利要求9的方法,其中所述目标操作数是由所述拆开指令的第一字段标明的。
11. 根据权利要求10的方法,其中还包括:用所述目标操作数覆盖所述第一操作数的至少一部分。
12. 根据权利要求11的方法,其中所述第一字段由拆开指令的位3-位5构成。
13. 根据权利要求9的方法,其中所述第二字段由拆开指令的第三字节的位0-位2构成。
14. 根据权利要求13的方法,其中所述目标操作数由拆开指令的第二字段表示。
15. 根据权利要求14的方法,其中还包括:用所述目标操作数覆盖所述第二操作数的至少一部分。
16. 一种装置,包括:
解码第一指令的解码器,所述第一指令包括一个操作码字段,一个第一字段表示具有第一组多个数据元素的第一操作数,所述第一组多个数据元素包括第一操作数第一数据元素和第一操作数第二数据元素,一个第二字段表示具有第二组多个数据元素的第二操作数,所述第二组多个数据元素包括第二操作数第一数据元素和第二操作数第二数据元素,每个第一操作数第一数据元素、第一操作数第二数据元素、第二操作数第一数据元素和第二操作数第二数据元素的长度是N/2位;
响应于所述第一指令存储长度为N位的第一结果数据元素的功能单元,所述第一结果数据元素包括第一操作数第一数据元素和第二操作数第一数据元素。
17. 根据权利要求16的装置,其中所述第一指令是拆开操作指令,其中所述第一结果数据元素是第一拆开数据元素。
18. 根据权利要求17的装置,其中所述拆开指令是一个包含3个或者更多个字节的整数操作数,其中第3个字节允许一个第一3位源寄存器地址和一个第二3位源目标寄存器地址。
19. 根据权利要求18的装置,其中所述第一操作数对应于所述第一3位源寄存器地址。
20. 根据权利要求18的装置,其中第一操作数对应于一个存储器中的一个可寻址存储器位置。
21. 根据权利要求18的装置,其中所述第二操作数对应于所述第二3位源目标寄存器地址,其中所述功能单元用于在对应于第二3位源目标寄存器地址的目标存储第一拆开数据元素并覆盖所述第二操作数。
22. 根据权利要求21的装置,其中所述功能单元用于响应于所述第一指令,在所述目标的第一部分存储第一操作数第一数据元素和在与所述第一部分相邻的所述目标的第二部分存储第二操作数第一数据元素,在与所述第二部分相邻的所述目标的第三部分存储第一操作数第二数据元素,在与所述第三部分相邻的所述目标的第四部分存储第二操作数第二数据元素。
23. 根据权利要求17的装置,其中还包括:
一个保持拆开指令的存储器,所述拆开指令具有包含三个或者更多个字节的整数操作码的格式,所述三个字节之一允许一个第一3位源寄存器地址和一个第二3位源目标寄存器地址;和
一个保持一个软件的存储装置,所述软件向所述存储器提供所述拆开指令以供执行。
24. 根据权利要求23的装置,其中所述解码器是用于接收和解码来自存储器的拆开指令、对应于第一3位源寄存器地址的第一操作数、对应于第二3位源目标寄存器地址的第二操作数。
25. 根据权利要求24的装置,其中所述功能单元用于在对应于第二3位源目标寄存器地址的目标存储第一拆开数据元素。
26. 一种微处理器,包括:
保持第一压缩数据的第一源寄存器,所述第一压缩数据具有包含第一压缩数据元素和第三压缩数据元素的第一组多个压缩数据,每个第一压缩数据元素和第三压缩数据元素的长度是N/2位;
保持第二压缩数据的第二源寄存器,所述第工压缩数据具有包含第二压缩数据元素和第四压缩数据元素的第二组多个压缩数据,每个第二压缩数据元素和第四压缩数据元素的长度是N/2位;
被耦接的电路,用于从第一源寄存器接收第一压缩数据和从第二源寄存器接收第二压缩数据,并响应于一个拆开指令通过复制第一压缩数据元素和第二压缩数据元素到目标寄存器的第一拆开数据元素中和复制第三数据元素和第四数据元素到目标寄存器的第二拆开数据元素中来拆开所述第一压缩数据和所述第二压缩数据,每个第一和第二拆开数据元素的长度是N位。
27. 根据权利要求26的微处理器,其中所述第一压缩数据元素是第一压缩数据的低阶数据元素,所述第二压缩数据元素是第二压缩数据的低阶数据元素,所述拆开指令包括一个操作码字段以包含一个至少第一组操作码之一以识别从第一和第二组多个数据元素中交叉低阶数据元素的拆开操作,所述第一组操作码识别选自由字节元、字元和双字元组成的组的数据元素。
28. 根据权利要求26的微处理器,其中所述第一压缩数据元素是第一压缩数据的高阶数据元素,所述第二压缩数据元素是第二压缩数据的高阶数据元素,所述拆开指令包括一个操作码字段以包含一个操作码以交替地包含一个第二组操作码之一以从第一和第二组多个数据元素中交叉高阶数据元素的拆开操作,所述第二组操作码识别选自由字节元、字元和双字元组成的组的数据元素。
29. 根据权利要求26的微处理器,其中所述目标寄存器是第一源寄存器,所述第一源寄存器的一部分被所述第一和第二拆开数据元素覆盖。
30. 根据权利要求26的微处理器,其中所述拆开指令具有包含三个或者更多个字节的整数操作码的格式,所述三个或者更多个字节的第三个字节允许用于识别第一源寄存器的一个第一3位源寄存器地址。
31. 根据权利要求30的微处理器,其中所述第一3位源寄存器地址还识别目标寄存器。
32. 一种设备,包括:
用于接收第一指令的装置,所述第一指令包括一个操作码字段,一个第一字段表示具有第一组多个数据元素的第一操作数,所述第一组多个数据元素包括第一操作数第一数据元素和第一操作数第二数据元素,一个第二字段表示具有第二组多个数据元素的第二操作数,所述第二组多个数据元素包括第二操作数第一数据元素和第二操作数第二数据元素,每个第一操作数第一数据元素、第一操作数第二数据元素、第二操作数第一数据元素和第二操作数第二数据元素的长度是N/2位;
响应于所述第一指令存储长度为N位的第一结果数据元素的装置,所述第一结果数据元素包括第一操作数第一数据元素和第二操作数第一数据元素。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US34904794A | 1994-12-02 | 1994-12-02 | |
US349047 | 1994-12-02 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN95197430A Division CN1094610C (zh) | 1994-12-02 | 1995-12-01 | 可以对复合操作数进行压缩操作和拆开操作的微处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1492315A CN1492315A (zh) | 2004-04-28 |
CN100412786C true CN100412786C (zh) | 2008-08-20 |
Family
ID=23370692
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101657203A Expired - Lifetime CN101211255B (zh) | 1994-12-02 | 1995-12-01 | 对复合操作数进行压缩操作的处理器、设备和计算系统 |
CNB021261601A Expired - Lifetime CN1326033C (zh) | 1994-12-02 | 1995-12-01 | 可以对复合操作数进行压缩操作的微处理器 |
CNB02126161XA Expired - Lifetime CN100412786C (zh) | 1994-12-02 | 1995-12-01 | 可以对复合操作数进行压缩操作的微处理器 |
CN95197430A Expired - Lifetime CN1094610C (zh) | 1994-12-02 | 1995-12-01 | 可以对复合操作数进行压缩操作和拆开操作的微处理器 |
CN201210161092.2A Expired - Lifetime CN102841776B (zh) | 1994-12-02 | 1995-12-01 | 可以对复合操作数进行压缩操作的微处理器 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101657203A Expired - Lifetime CN101211255B (zh) | 1994-12-02 | 1995-12-01 | 对复合操作数进行压缩操作的处理器、设备和计算系统 |
CNB021261601A Expired - Lifetime CN1326033C (zh) | 1994-12-02 | 1995-12-01 | 可以对复合操作数进行压缩操作的微处理器 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN95197430A Expired - Lifetime CN1094610C (zh) | 1994-12-02 | 1995-12-01 | 可以对复合操作数进行压缩操作和拆开操作的微处理器 |
CN201210161092.2A Expired - Lifetime CN102841776B (zh) | 1994-12-02 | 1995-12-01 | 可以对复合操作数进行压缩操作的微处理器 |
Country Status (8)
Country | Link |
---|---|
US (21) | US5802336A (zh) |
EP (2) | EP1265132A3 (zh) |
JP (1) | JP3615222B2 (zh) |
KR (1) | KR100329338B1 (zh) |
CN (5) | CN101211255B (zh) |
AU (1) | AU4464596A (zh) |
BR (1) | BR9509845A (zh) |
WO (1) | WO1996017291A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102841776A (zh) * | 1994-12-02 | 2012-12-26 | 英特尔公司 | 可以对复合操作数进行压缩操作的微处理器 |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
JP3730252B2 (ja) * | 1992-03-31 | 2005-12-21 | トランスメタ コーポレイション | レジスタ名称変更方法及び名称変更システム |
JP3637920B2 (ja) * | 1992-05-01 | 2005-04-13 | セイコーエプソン株式会社 | スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法 |
DE69330889T2 (de) * | 1992-12-31 | 2002-03-28 | Seiko Epson Corp., Tokio/Tokyo | System und Verfahren zur Änderung der Namen von Registern |
US5628021A (en) * | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
US6813699B1 (en) | 1995-06-02 | 2004-11-02 | Transmeta Corporation | Speculative address translation for processor using segmentation and optional paging |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US7483935B2 (en) * | 1995-08-16 | 2009-01-27 | Microunity Systems Engineering, Inc. | System and method to implement a matrix multiply unit of a broadband processor |
US5953241A (en) * | 1995-08-16 | 1999-09-14 | Microunity Engeering Systems, Inc. | Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction |
US5742840A (en) | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US6295599B1 (en) * | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
US7395298B2 (en) | 1995-08-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed data |
US6385634B1 (en) | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US6260137B1 (en) | 1997-09-12 | 2001-07-10 | Siemens Aktiengesellschaft | Data processing unit with digital signal processing capabilities |
US6263420B1 (en) * | 1997-09-17 | 2001-07-17 | Sony Corporation | Digital signal processor particularly suited for decoding digital audio |
US6138274A (en) * | 1998-01-23 | 2000-10-24 | Lucent Technologies, Inc. | Method and apparatus for updating an online computer program |
US6041404A (en) | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
US6122725A (en) * | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6233671B1 (en) | 1998-03-31 | 2001-05-15 | Intel Corporation | Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions |
US6230253B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Executing partial-width packed data instructions |
US6230257B1 (en) | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US6535218B1 (en) * | 1998-05-21 | 2003-03-18 | Mitsubishi Electric & Electronics Usa, Inc. | Frame buffer memory for graphic processing |
US6504550B1 (en) * | 1998-05-21 | 2003-01-07 | Mitsubishi Electric & Electronics Usa, Inc. | System for graphics processing employing semiconductor device |
US7932911B2 (en) * | 1998-08-24 | 2011-04-26 | Microunity Systems Engineering, Inc. | Processor for executing switch and translate instructions requiring wide operands |
ATE557343T1 (de) * | 1998-08-24 | 2012-05-15 | Microunity Systems Eng | Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand |
US7242414B1 (en) * | 1999-07-30 | 2007-07-10 | Mips Technologies, Inc. | Processor having a compare extension of an instruction set architecture |
US7346643B1 (en) * | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US6446195B1 (en) * | 2000-01-31 | 2002-09-03 | Intel Corporation | Dyadic operations instruction processor with configurable functional blocks |
US6829696B1 (en) * | 1999-12-30 | 2004-12-07 | Texas Instruments Incorporated | Data processing system with register store/load utilizing data packing/unpacking |
US6638239B1 (en) * | 2000-04-14 | 2003-10-28 | Glaukos Corporation | Apparatus and method for treating glaucoma |
GB0024312D0 (en) | 2000-10-04 | 2000-11-15 | Advanced Risc Mach Ltd | Single instruction multiple data processing |
JP3779540B2 (ja) | 2000-11-08 | 2006-05-31 | 株式会社ルネサステクノロジ | 複数レジスタ指定が可能なsimd演算方式 |
FR2818145B1 (fr) * | 2000-12-18 | 2003-11-28 | Oreal | Compositions cosmetiques antisolaires a base d'un melange synergetique de filtres et utilisations |
US7913261B2 (en) * | 2001-05-02 | 2011-03-22 | nCipher Corporation, Ltd. | Application-specific information-processing method, system, and apparatus |
AU2002339867A1 (en) | 2001-09-04 | 2003-03-18 | Microunity Systems Engineering, Inc. | System and method for performing multiplication |
US7430578B2 (en) | 2001-10-29 | 2008-09-30 | Intel Corporation | Method and apparatus for performing multiply-add operations on packed byte data |
US7028171B2 (en) * | 2002-03-28 | 2006-04-11 | Intel Corporation | Multi-way select instructions using accumulated condition codes |
US20030188135A1 (en) * | 2002-03-28 | 2003-10-02 | Intel Corporation | Addressing modes and/or instructions and/or operating modes for on-the-fly, precision adjustment of packed data |
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
AU2003256870A1 (en) * | 2002-08-09 | 2004-02-25 | Intel Corporation | Multimedia coprocessor control mechanism including alignment or broadcast instructions |
US6986023B2 (en) | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
US7899855B2 (en) * | 2003-09-08 | 2011-03-01 | Intel Corporation | Method, apparatus and instructions for parallel data conversions |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
US7457938B2 (en) * | 2005-09-30 | 2008-11-25 | Intel Corporation | Staggered execution stack for vector processing |
WO2007085914A1 (en) * | 2006-01-27 | 2007-08-02 | Freescale Semiconductor, Inc. | Device and method for adding and subtracting two variables and a constant |
US7958181B2 (en) | 2006-09-21 | 2011-06-07 | Intel Corporation | Method and apparatus for performing logical compare operations |
US9069547B2 (en) * | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US8341165B2 (en) | 2007-12-03 | 2012-12-25 | Intel Corporation | Method and apparatus for searching extensible markup language (XML) data |
US8780128B2 (en) * | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Contiguously packed data |
US8502819B1 (en) | 2007-12-17 | 2013-08-06 | Nvidia Corporation | System and method for performing ray tracing node traversal in image rendering |
US8289324B1 (en) | 2007-12-17 | 2012-10-16 | Nvidia Corporation | System, method, and computer program product for spatial hierarchy traversal |
US8078836B2 (en) | 2007-12-30 | 2011-12-13 | Intel Corporation | Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits |
US9086872B2 (en) * | 2009-06-30 | 2015-07-21 | Intel Corporation | Unpacking packed data in multiple lanes |
US9747105B2 (en) * | 2009-12-17 | 2017-08-29 | Intel Corporation | Method and apparatus for performing a shift and exclusive or operation in a single instruction |
US8564589B1 (en) | 2010-05-17 | 2013-10-22 | Nvidia Corporation | System and method for accelerated ray-box intersection testing |
US8555036B1 (en) | 2010-05-17 | 2013-10-08 | Nvidia Corporation | System and method for performing predicated selection of an output register |
US20120254589A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
US8604946B2 (en) * | 2011-04-08 | 2013-12-10 | Panasonic Corporation | Data processing device and data processing method |
WO2013095510A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask concatenation processors, methods, systems, and instructions |
US20140082333A1 (en) * | 2011-12-22 | 2014-03-20 | Elmoustapha Ould-Ahmed-Vall | Systems, apparatuses, and methods for performing an absolute difference calculation between corresponding packed data elements of two vector registers |
WO2013095515A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions |
WO2013095666A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing vector packed unary decoding using masks |
US8849885B2 (en) * | 2012-06-07 | 2014-09-30 | Via Technologies, Inc. | Saturation detector |
US9436474B2 (en) * | 2012-07-27 | 2016-09-06 | Microsoft Technology Licensing, Llc | Lock free streaming of executable code data |
US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
WO2014203034A1 (en) * | 2013-06-18 | 2014-12-24 | Freescale Semiconductor, Inc. | Signal processing device and method of performing a pack-insert operation |
US10228941B2 (en) * | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US9785565B2 (en) | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
EP3001306A1 (en) * | 2014-09-25 | 2016-03-30 | Intel Corporation | Bit group interleave processors, methods, systems, and instructions |
US10489158B2 (en) | 2014-09-26 | 2019-11-26 | Intel Corporation | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores |
US9772848B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772850B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Morton coordinate adjustment processors, methods, systems, and instructions |
US9772849B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US10387150B2 (en) * | 2015-06-24 | 2019-08-20 | International Business Machines Corporation | Instructions to count contiguous register elements having a specific value in a selected location |
US20170177351A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Even and Odd Vector Get Operations |
US11204764B2 (en) * | 2016-03-31 | 2021-12-21 | Intel Corporation | Processors, methods, systems, and instructions to Partition a source packed data into lanes |
US10891131B2 (en) * | 2016-09-22 | 2021-01-12 | Intel Corporation | Processors, methods, systems, and instructions to consolidate data elements and generate index updates |
US20180173527A1 (en) * | 2016-12-15 | 2018-06-21 | Optimum Semiconductor Technologies, Inc. | Floating point instruction format with embedded rounding rule |
CN111381874B (zh) * | 2018-12-28 | 2022-12-02 | 上海寒武纪信息科技有限公司 | Compress指令译码方法、数据处理方法、译码器及数据处理装置 |
US20220197642A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Processor instructions for data compression and decompression |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4139899A (en) * | 1976-10-18 | 1979-02-13 | Burroughs Corporation | Shift network having a mask generator and a rotator |
US5168751A (en) * | 1991-08-01 | 1992-12-08 | Raymond Hwang | Digital tire pressure gauge |
US5265204A (en) * | 1984-10-05 | 1993-11-23 | Hitachi, Ltd. | Method and apparatus for bit operational process |
US5276891A (en) * | 1990-01-11 | 1994-01-04 | Bull Hn Information Systems Inc. | Alignment of sign, data, edit byte operand results for storage in memory |
Family Cites Families (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3541516A (en) * | 1965-06-30 | 1970-11-17 | Ibm | Vector arithmetic multiprocessor computing system |
US3711692A (en) * | 1971-03-15 | 1973-01-16 | Goodyear Aerospace Corp | Determination of number of ones in a data field by addition |
US3723715A (en) * | 1971-08-25 | 1973-03-27 | Ibm | Fast modulo threshold operator binary adder for multi-number additions |
US4141005A (en) | 1976-11-11 | 1979-02-20 | International Business Machines Corporation | Data format converting apparatus for use in a digital data processor |
US4161784A (en) * | 1978-01-05 | 1979-07-17 | Honeywell Information Systems, Inc. | Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands |
JPS5537648A (en) * | 1978-09-07 | 1980-03-15 | Matsushita Electric Ind Co Ltd | Instruction decoder circuit |
US4229801A (en) * | 1978-12-11 | 1980-10-21 | Data General Corporation | Floating point processor having concurrent exponent/mantissa operation |
US4481580A (en) * | 1979-11-19 | 1984-11-06 | Sperry Corporation | Distributed data transfer control for parallel processor architectures |
US4418383A (en) * | 1980-06-30 | 1983-11-29 | International Business Machines Corporation | Data flow component for processor and microprocessor systems |
US4393468A (en) * | 1981-03-26 | 1983-07-12 | Advanced Micro Devices, Inc. | Bit slice microprogrammable processor for signal processing applications |
US4498177A (en) * | 1982-08-30 | 1985-02-05 | Sperry Corporation | M Out of N code checker circuit |
US4595911A (en) * | 1983-07-14 | 1986-06-17 | Sperry Corporation | Programmable data reformat system |
US4707800A (en) * | 1985-03-04 | 1987-11-17 | Raytheon Company | Adder/substractor for variable length numbers |
JPS6297060A (ja) * | 1985-10-23 | 1987-05-06 | Mitsubishi Electric Corp | デイジタルシグナルプロセツサ |
JPH0827716B2 (ja) * | 1985-10-25 | 1996-03-21 | 株式会社日立製作所 | データ処理装置及びデータ処理方法 |
US4760525A (en) * | 1986-06-10 | 1988-07-26 | The United States Of America As Represented By The Secretary Of The Air Force | Complex arithmetic vector processor for performing control function, scalar operation, and set-up of vector signal processing instruction |
US5193159A (en) * | 1986-09-24 | 1993-03-09 | Hitachi, Ltd. | Microprocessor system |
JP3070744B2 (ja) * | 1987-04-10 | 2000-07-31 | 株式会社日立製作所 | ベクトル処理装置 |
US4992938A (en) * | 1987-07-01 | 1991-02-12 | International Business Machines Corporation | Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers |
JP2613223B2 (ja) * | 1987-09-10 | 1997-05-21 | 株式会社日立製作所 | 演算装置 |
US4868748A (en) * | 1987-11-25 | 1989-09-19 | General Electric Company | Rapid processing of three-dimensional graphical objects from tomographic data |
US4989168A (en) * | 1987-11-30 | 1991-01-29 | Fujitsu Limited | Multiplying unit in a computer system, capable of population counting |
US5008812A (en) * | 1988-03-18 | 1991-04-16 | Digital Equipment Corporation | Context switching method and apparatus for use in a vector processing system |
US4903228A (en) | 1988-11-09 | 1990-02-20 | International Business Machines Corporation | Single cycle merge/logic unit |
US5241635A (en) * | 1988-11-18 | 1993-08-31 | Massachusetts Institute Of Technology | Tagged token data processing system with operand matching in activation frames |
KR920007505B1 (ko) * | 1989-02-02 | 1992-09-04 | 정호선 | 신경회로망을 이용한 곱셈기 |
US5081698A (en) | 1989-02-14 | 1992-01-14 | Intel Corporation | Method and apparatus for graphics display data manipulation |
US5127098A (en) * | 1989-04-12 | 1992-06-30 | Sun Microsystems, Inc. | Method and apparatus for the context switching of devices |
US5001662A (en) * | 1989-04-28 | 1991-03-19 | Apple Computer, Inc. | Method and apparatus for multi-gauge computation |
JPH03139726A (ja) * | 1989-10-26 | 1991-06-13 | Hitachi Ltd | 命令読出し制御方式 |
US5212777A (en) * | 1989-11-17 | 1993-05-18 | Texas Instruments Incorporated | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
US5168571A (en) * | 1990-01-24 | 1992-12-01 | International Business Machines Corporation | System for aligning bytes of variable multi-bytes length operand based on alu byte length and a number of unprocessed byte data |
WO1991011765A1 (en) * | 1990-01-29 | 1991-08-08 | Teraplex, Inc. | Architecture for minimal instruction set computing system |
CA2045773A1 (en) * | 1990-06-29 | 1991-12-30 | Compaq Computer Corporation | Byte-compare operation for high-performance processor |
WO1992008188A1 (en) | 1990-11-02 | 1992-05-14 | Seiko Epson Corporation | Semiconductor device |
US5268854A (en) * | 1990-11-13 | 1993-12-07 | Kabushiki Kaisha Toshiba | Microprocessor with a function for three-dimensional graphic processing |
EP0485776A3 (en) | 1990-11-15 | 1993-07-07 | Motorola Inc. | A method for executing graphics pixel packing instructions in a data processor |
JP2601960B2 (ja) * | 1990-11-15 | 1997-04-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理方法及びその装置 |
US5268995A (en) * | 1990-11-21 | 1993-12-07 | Motorola, Inc. | Method for executing graphics Z-compare and pixel merge instructions in a data processor |
US5680161A (en) * | 1991-04-03 | 1997-10-21 | Radius Inc. | Method and apparatus for high speed graphics data compression |
US5187679A (en) * | 1991-06-05 | 1993-02-16 | International Business Machines Corporation | Generalized 7/3 counters |
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5239399A (en) | 1991-08-22 | 1993-08-24 | Radiant Technologies | Electrical-optical interface device |
US5530835A (en) * | 1991-09-18 | 1996-06-25 | Ncr Corporation | Computer memory data merging technique for computers with write-back caches |
US5423010A (en) * | 1992-01-24 | 1995-06-06 | C-Cube Microsystems | Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words |
US5657253A (en) * | 1992-05-15 | 1997-08-12 | Intel Corporation | Apparatus for monitoring the performance of a microprocessor |
KR950009687B1 (ko) * | 1992-06-30 | 1995-08-26 | 삼성항공산업주식회사 | 프로그램어블 로직 콘트롤러용 고속 래더명령 처리장치 |
US5522051A (en) * | 1992-07-29 | 1996-05-28 | Intel Corporation | Method and apparatus for stack manipulation in a pipelined processor |
US5426783A (en) * | 1992-11-02 | 1995-06-20 | Amdahl Corporation | System for processing eight bytes or less by the move, pack and unpack instruction of the ESA/390 instruction set |
US5519841A (en) * | 1992-11-12 | 1996-05-21 | Digital Equipment Corporation | Multi instruction register mapper |
US5408670A (en) * | 1992-12-18 | 1995-04-18 | Xerox Corporation | Performing arithmetic in parallel on composite operands with packed multi-bit components |
KR0122528B1 (ko) | 1993-01-08 | 1997-11-20 | 윌리엄 티.엘리스 | 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템 |
US5467473A (en) * | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
US5465374A (en) * | 1993-01-12 | 1995-11-07 | International Business Machines Corporation | Processor for processing data string by byte-by-byte |
US5717947A (en) | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
JP3203401B2 (ja) * | 1993-05-21 | 2001-08-27 | 三菱電機株式会社 | データ処理装置 |
US5535397A (en) * | 1993-06-30 | 1996-07-09 | Intel Corporation | Method and apparatus for providing a context switch in response to an interrupt in a computer process |
US5625374A (en) * | 1993-09-07 | 1997-04-29 | Apple Computer, Inc. | Method for parallel interpolation of images |
US5499352A (en) * | 1993-09-30 | 1996-03-12 | Intel Corporation | Floating point register alias table FXCH and retirement floating point register array |
EP0651321B1 (en) * | 1993-10-29 | 2001-11-14 | Advanced Micro Devices, Inc. | Superscalar microprocessors |
US5390135A (en) * | 1993-11-29 | 1995-02-14 | Hewlett-Packard | Parallel shift and add circuit and method |
US5590350A (en) * | 1993-11-30 | 1996-12-31 | Texas Instruments Incorporated | Three input arithmetic logic unit with mask generator |
US5499376A (en) * | 1993-12-06 | 1996-03-12 | Cpu Technology, Inc. | High speed mask and logical combination operations for parallel processor units |
US5487159A (en) * | 1993-12-23 | 1996-01-23 | Unisys Corporation | System for processing shift, mask, and merge operations in one instruction |
US5541865A (en) * | 1993-12-30 | 1996-07-30 | Intel Corporation | Method and apparatus for performing a population count operation |
US5546554A (en) * | 1994-02-02 | 1996-08-13 | Sun Microsystems, Inc. | Apparatus for dynamic register management in a floating point unit |
US5781457A (en) | 1994-03-08 | 1998-07-14 | Exponential Technology, Inc. | Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU |
US5734874A (en) * | 1994-04-29 | 1998-03-31 | Sun Microsystems, Inc. | Central processing unit with integrated graphics functions |
US5696955A (en) * | 1994-06-01 | 1997-12-09 | Advanced Micro Devices, Inc. | Floating point stack and exchange instruction |
US5649225A (en) * | 1994-06-01 | 1997-07-15 | Advanced Micro Devices, Inc. | Resynchronization of a superscalar processor |
US5594437A (en) | 1994-08-01 | 1997-01-14 | Motorola, Inc. | Circuit and method of unpacking a serial bitstream |
US5481719A (en) * | 1994-09-09 | 1996-01-02 | International Business Machines Corporation | Exception handling method and apparatus for a microkernel data processing system |
US5507000A (en) * | 1994-09-26 | 1996-04-09 | Bull Hn Information Systems Inc. | Sharing of register stack by two execution units in a central processor |
WO1996017293A1 (en) * | 1994-12-01 | 1996-06-06 | Intel Corporation | A microprocessor having a multiply operation |
US5819101A (en) * | 1994-12-02 | 1998-10-06 | Intel Corporation | Method for packing a plurality of packed data elements in response to a pack instruction |
EP1265132A3 (en) * | 1994-12-02 | 2005-02-09 | Intel Corporation | Microprocessor with packing operation of composite operands |
US5537606A (en) * | 1995-01-31 | 1996-07-16 | International Business Machines Corporation | Scalar pipeline replication for parallel vector element processing |
US5634118A (en) * | 1995-04-10 | 1997-05-27 | Exponential Technology, Inc. | Splitting a floating-point stack-exchange instruction for merging into surrounding instructions by operand translation |
US5760792A (en) * | 1995-05-01 | 1998-06-02 | Intergraph Corporation | Fifo logical addresses for control and error recovery |
US5752001A (en) * | 1995-06-01 | 1998-05-12 | Intel Corporation | Method and apparatus employing Viterbi scoring using SIMD instructions for data recognition |
US5721892A (en) * | 1995-08-31 | 1998-02-24 | Intel Corporation | Method and apparatus for performing multiply-subtract operations on packed data |
US5940859A (en) * | 1995-12-19 | 1999-08-17 | Intel Corporation | Emptying packed data state during execution of packed data instructions |
US5852726A (en) * | 1995-12-19 | 1998-12-22 | Intel Corporation | Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner |
US5835748A (en) * | 1995-12-19 | 1998-11-10 | Intel Corporation | Method for executing different sets of instructions that cause a processor to perform different data type operations on different physical registers files that logically appear to software as a single aliased register file |
US5857096A (en) * | 1995-12-19 | 1999-01-05 | Intel Corporation | Microarchitecture for implementing an instruction to clear the tags of a stack reference register file |
US5701508A (en) * | 1995-12-19 | 1997-12-23 | Intel Corporation | Executing different instructions that cause different data type operations to be performed on single logical register file |
US5862067A (en) * | 1995-12-29 | 1999-01-19 | Intel Corporation | Method and apparatus for providing high numerical accuracy with packed multiply-add or multiply-subtract operations |
US5687336A (en) * | 1996-01-11 | 1997-11-11 | Exponential Technology, Inc. | Stack push/pop tracking and pairing in a pipelined processor |
US5835782A (en) * | 1996-03-04 | 1998-11-10 | Intel Corporation | Packed/add and packed subtract operations |
US6115812A (en) * | 1998-04-01 | 2000-09-05 | Intel Corporation | Method and apparatus for efficient vertical SIMD computations |
-
1995
- 1995-12-01 EP EP20020078326 patent/EP1265132A3/en not_active Withdrawn
- 1995-12-01 BR BR9509845A patent/BR9509845A/pt not_active IP Right Cessation
- 1995-12-01 JP JP51912596A patent/JP3615222B2/ja not_active Expired - Lifetime
- 1995-12-01 CN CN2007101657203A patent/CN101211255B/zh not_active Expired - Lifetime
- 1995-12-01 KR KR1019970703682A patent/KR100329338B1/ko not_active IP Right Cessation
- 1995-12-01 AU AU44645/96A patent/AU4464596A/en not_active Abandoned
- 1995-12-01 CN CNB021261601A patent/CN1326033C/zh not_active Expired - Lifetime
- 1995-12-01 CN CNB02126161XA patent/CN100412786C/zh not_active Expired - Lifetime
- 1995-12-01 EP EP95943362A patent/EP0795153A4/en not_active Withdrawn
- 1995-12-01 CN CN95197430A patent/CN1094610C/zh not_active Expired - Lifetime
- 1995-12-01 CN CN201210161092.2A patent/CN102841776B/zh not_active Expired - Lifetime
- 1995-12-01 WO PCT/US1995/015713 patent/WO1996017291A1/en active IP Right Grant
-
1997
- 1997-01-27 US US08/791,003 patent/US5802336A/en not_active Expired - Lifetime
- 1997-02-13 US US08/799,468 patent/US5881275A/en not_active Expired - Lifetime
-
1999
- 1999-03-22 US US08/974,435 patent/US6119216A/en not_active Expired - Lifetime
-
2000
- 2000-09-08 US US09/657,448 patent/US6516406B1/en not_active Expired - Lifetime
-
2002
- 2002-06-27 US US10/185,896 patent/US8601246B2/en not_active Expired - Fee Related
- 2002-06-27 US US10/184,197 patent/US20030115441A1/en not_active Abandoned
-
2006
- 2006-06-12 US US11/451,906 patent/US7966482B2/en not_active Expired - Fee Related
-
2010
- 2010-12-22 US US12/975,807 patent/US8521994B2/en not_active Expired - Fee Related
-
2011
- 2011-05-16 US US13/108,723 patent/US8190867B2/en not_active Expired - Fee Related
-
2012
- 2012-04-11 US US13/444,090 patent/US8495346B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,849 patent/US8838946B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,832 patent/US9141387B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,842 patent/US9116687B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,835 patent/US9223572B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,837 patent/US8793475B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,831 patent/US8639914B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,846 patent/US9389858B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,841 patent/US20130124830A1/en not_active Abandoned
- 2012-12-29 US US13/730,839 patent/US9182983B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,845 patent/US9361100B2/en not_active Expired - Fee Related
- 2012-12-29 US US13/730,848 patent/US9015453B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4139899A (en) * | 1976-10-18 | 1979-02-13 | Burroughs Corporation | Shift network having a mask generator and a rotator |
US5265204A (en) * | 1984-10-05 | 1993-11-23 | Hitachi, Ltd. | Method and apparatus for bit operational process |
US5276891A (en) * | 1990-01-11 | 1994-01-04 | Bull Hn Information Systems Inc. | Alignment of sign, data, edit byte operand results for storage in memory |
US5168751A (en) * | 1991-08-01 | 1992-12-08 | Raymond Hwang | Digital tire pressure gauge |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102841776A (zh) * | 1994-12-02 | 2012-12-26 | 英特尔公司 | 可以对复合操作数进行压缩操作的微处理器 |
US9015453B2 (en) | 1994-12-02 | 2015-04-21 | Intel Corporation | Packing odd bytes from two source registers of packed data |
US9116687B2 (en) | 1994-12-02 | 2015-08-25 | Intel Corporation | Packing in destination register half of each element with saturation from two source packed data registers |
US9141387B2 (en) | 1994-12-02 | 2015-09-22 | Intel Corporation | Processor executing unpack and pack instructions specifying two source packed data operands and saturation |
US9182983B2 (en) | 1994-12-02 | 2015-11-10 | Intel Corporation | Executing unpack instruction and pack instruction with saturation on packed data elements from two source operand registers |
US9223572B2 (en) | 1994-12-02 | 2015-12-29 | Intel Corporation | Interleaving half of packed data elements of size specified in instruction and stored in two source registers |
US9361100B2 (en) | 1994-12-02 | 2016-06-07 | Intel Corporation | Packing saturated lower 8-bit elements from two source registers of packed 16-bit elements |
CN102841776B (zh) * | 1994-12-02 | 2016-06-29 | 英特尔公司 | 可以对复合操作数进行压缩操作的微处理器 |
US9389858B2 (en) | 1994-12-02 | 2016-07-12 | Intel Corporation | Orderly storing of corresponding packed bytes from first and second source registers in result register |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100412786C (zh) | 可以对复合操作数进行压缩操作的微处理器 | |
JP3924307B2 (ja) | 算術演算装置及び算術演算方法 | |
US5677862A (en) | Method for multiplying packed data | |
CN100541422C (zh) | 用于执行具有取整和移位的组合型高位乘法的方法和装置 | |
CN100461093C (zh) | 在分组数据上执行乘-加运算的方法、处理器、设备和系统 | |
US5819101A (en) | Method for packing a plurality of packed data elements in response to a pack instruction | |
CN100465874C (zh) | 根据指令对数据执行运算的方法、处理器和系统 | |
US5835392A (en) | Method for performing complex fast fourier transforms (FFT's) | |
CN102207849A (zh) | 用于执行逻辑比较操作的方法和装置 | |
WO1996017292A1 (en) | Microprocessor with compare operation of composite operands |
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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20080820 |
|
EXPY | Termination of patent right or utility model |