CN1326033C - 可以对复合操作数进行压缩操作的微处理器 - Google Patents

可以对复合操作数进行压缩操作的微处理器 Download PDF

Info

Publication number
CN1326033C
CN1326033C CNB021261601A CN02126160A CN1326033C CN 1326033 C CN1326033 C CN 1326033C CN B021261601 A CNB021261601 A CN B021261601A CN 02126160 A CN02126160 A CN 02126160A CN 1326033 C CN1326033 C CN 1326033C
Authority
CN
China
Prior art keywords
data element
data
register
bit
group
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
Application number
CNB021261601A
Other languages
English (en)
Other versions
CN1492314A (zh
Inventor
A·皮莱格
Y·雅列
M·米陶尔
L·M·门纳梅尔
B·艾坦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1492314A publication Critical patent/CN1492314A/zh
Application granted granted Critical
Publication of CN1326033C publication Critical patent/CN1326033C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value

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比特;响应于所述第一指令,存储长度为至少N比特的第一压缩数据到目标位置,所述第一压缩数据包括第一组多个数据元素中的每个数据元素和第二组多个数据元素中的每个数据元素的转换形式,每个所述转换形式是长度小于N比特的多比特元素。
根据本发明,还提供了一种装置,包括:接收第一指令的解码器,所述第一指令表明具有第一组多个数据元素的第一操作数和具有第二组多个数据元素的第二操作数,所述第一组多个数据元素和第二组多个第二数据元素中的每一个的长度是N比特;与所述解码器耦接的一个功能单元,响应于所述解码器解码第一指令而存储长度为2N比特的第一压缩数据,所述第一压缩数据包括含有对应于第一组多个数据元素和第二组多个数据元素中的每一个的转换数据元素的多个转换数据元素,其中所述转换数据元素是长度小于N比特的多比特元素。
根据本发明,还提供了一种微处理器,包括:保持第一压缩数据的第一源寄存器,所述第一压缩数据具有包含第一压缩数据元素和第二压缩数据元素的第一组多个压缩数据,每个第一压缩数据元素和第二压缩数据元素的长度是N比特;保持第二压缩数据的第二源寄存器,所述第二压缩数据具有包含第三压缩数据元素和第四压缩数据元素的第二组多个压缩数据,每个第三压缩数据元素和第四压缩数据元素的长度是N比特;被耦接的电路,用于从第一源寄存器接收第一压缩数据和从第二源寄存器接收第二压缩数据,并响应于一个压缩指令压缩所述第一压缩数据和所述第二压缩数据,其中第一压缩数据元素的第一部分和第二压缩数据元素的所述第一部分被压缩到目标寄存器中,而第三压缩数据元素的第二部分和第四压缩数据元素的所述第二部分被压缩到目标寄存器中,每个第一和第二部分的长度是N/2比特。
根据本发明,还提供了一种设备,包括:用于接收第一指令的装置,所述第一指令包括一个操作码字段、表明具有第一组多个数据元素的第一操作数的一个第一字段以及表明具有第二组多个数据元素的第二操作数的一个第二字段,第一组多个数据元素和第二组数据元素中的每个数据元素的长度是N比特;以及用于响应于所述第一指令而存储长度为至少N比特的第一压缩数据到目标位置的装置,所述第一压缩数据包括第一组多个数据元素中的每个数据元素和第二组多个数据元素中的每个数据元素的转换形式,每个所述转换形式是长度小于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 212b。寄存器组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     264-1
带符号双字     -263     263-1
表1
如上所述,T611指示是否正在执行饱和操作。因此,使用无符号字节数据格式,如果一个运算结果=258并且允许饱和,则在该结果被存储在该操作的目的寄存器之前被箝位在255。类似地,如果运算的结果=-32999且处理器109使用带符号字数据格式同时允许饱和,则运算结果在被存储在该运算的目的寄存器之前被箝位在-32768。
数据处理操作
在本发明的一个实施例中,多媒体应用的性能不仅通过支持标准的CISC指令集(未压缩数据操作),而且通过支持对压缩数据的操作而得以改善。这样的压缩数据操作可能包括加法、减法、乘法、比较、移位、与和异或。然而,为充分使用这些操作,已经确定,应该包括数据处理操作。这样的数据处理操作可能包括移动、压缩和拆开。移位、压缩和拆开由于产生出允许程序员容易使用的格式的压缩数据而方便了其它操作的执行。
对于其它压缩操作的进一步的背景,参见流水号为—,于—申请的“具有比较操作的微处理器”,流水号为—于—申请的“具有移位操作的新型处理器”,流水号为08/176123,于1993年12月30日申请的“处理器中使用压缩数据的方法和装置”,流水号为08/175772,于19933年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访问寄存器
Figure C0212616000221
文件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
                                                                               Source1
00101010 01010101  01010101 11111111 10000000 01110000 10001111 10001000
                3                        2                                         0
                                                               1
                                                                               Source2
00000000 00000000 11000000 00000000 11110011 00000000 10001110  10001000
                 3                     2                                            0
                                                               1
                                                                                Result
00000000 00000000 00000000 10001000  01010101  11111111 01110000  10001000
       7           6          5         4          3          2          1          0
表2
表3表示饱和带符号双字压缩操作的寄存器内表示。
                                                                              Source1
   00101010   01010101    01010101   11111111    10000000   01110000   10001111   10001000
                                        1                                           0
                                                                               Source2
  00000000   00000000   11000000   00000000     11110011   00000000   10001110   10001000
                                       1                                            0
                                                                                Result
  11000000   00000000    10000000   00000000   01111111   11111111    10000000   00000000
                   3                     2                   1                   0
表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。
                                                                           Source1
    ...    ...     00001110       01110000         00001110               00001000
   3      2                                                                      0
                                   1
                                                                           Source2
    ...     ...     00001110       10000001        00001110              10000001
   3      2                                                                      0
                                   1
                                                                              Result
... ...  10000001  10000001 ... ...  01110000 00001000
  7     6                5               4      3    2               1             0
表4
然而,如果执行无符号不饱和双字压缩操作,则操作控制电路800许可结果寄存器853输出结果[63:0]860。表5表示这一结果。
                                                                            Source1
...            ...  00001110            01000001            00001110             00001000
              1                                                                   0
                                                                            Source2
...            ...  00001110            00000001            00001110            10000001
              1                                                                   0
                                                                           Result
          ...  00001110            10000001          ...   00001110          00001000
          3                               2                                     0
表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示出字节拆开操作的寄存器内表示。
                                                                              Source1
00101010 01010101 01010101 11111111 10000000 01110000 10001111 10001000
     7              6        5          4          3         2           1           0
                                                                              Source2
00000000 00000000 11000000 00000000 11110011 00000000  10001110 10001000
     7             6         5         4          3          2           1           0
                                                                              Result
11110011  10000000 00000000  01110000 10001110 10001111 10001000 10001000
     7            6          5          4         3          2          1            0
表6
表7示出字拆开操作的寄存器内表示。
                                                                             Source1
00101010 01010101  01010101 11111111 10000000 01110000 10001111 10001000
                   3                    2                                           0
                                                            1
                                                                             Source2
  00000000 00000000   11000000 00000000   11110011 00000000  10001110 10001000
                  3                        2                                            0
                                                                       1
                                                                             Result
11110011 00000000   10000000 01110000   10001110 10001000   10001111 10001000
              3                        2                                             0
                                                                1
表7
表8示出双字拆开操作的寄存器内表示。
                                                                             Source2
00101010 01010101 01010101 11111111 10000000 01110000 10001111 10001000
                                      1                                              0
                                                                             Source2
00000000 00000000 11000000 00000000 11110011 00000000 10001110 10001000
                                       1                                             0
                                                                            Result
11110011 00000000 10001110 10001000 10000000 01110000 10001111 10001000
                                        1                                           0
表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
                                                                               Source1
... ... 00001110 01110000 00001110 00001000
   3      2                                                                         0
                                               1
                                                                               Source2
... ... 00001110 00000001 00001110 10000001
   3      2                                                                         0
                                                1
                                                                                                      Result
00001110 00000001 00001110 01110000 00001110 10000001 00001110 00001000
                   3                      2                                         0
                                                               1
然而,如果执行双字拆开操作,则操作控制电路800将允许结果寄存器1054输出结果[63:0]860。表10表示这一结果。
                                                                             Source1
      ...     00001110          01000001          00001110            00001000
      1                                                                          0
                                                                             Source2
      ...    00001110           00000001          00001110            10000001
     1                                                                          0
                                                                               Result
    00001110   00000001   00001110   10000001     00001110   01000001   00001110   00001000
                                         1                                         0
表10
因此,移动、压缩和拆开操作可以操作多个数据元素。在现有技术的处理器中,为执行这些类型的操作,需要多个单独的操作来执行单一压缩数据移动、压缩或者拆开操作。在一个实施例中,用于压缩数据操作的数据线都带有相关的数据。它将提高计算机系统的性能。

Claims (41)

1.一种方法,包括:
接收第一指令,所述第一指令包括一个操作码字段、表明具有第一组多个数据元素的第一操作数的一个第一字段以及表明具有第二组多个数据元素的第二操作数的一个第二字段,第一组多个数据元素和第二组数据元素中的每个数据元素的长度是N比特;
响应于所述第一指令,存储长度为至少N比特的第一压缩数据到目标位置,所述第一压缩数据包括第一组多个数据元素中的每个数据元素和第二组多个数据元素中的每个数据元素的转换形式,每个所述转换形式是长度小于N比特的多比特元素。
2.根据权利要求1的方法,其中所述第一指令是压缩指令。
3.根据权利要求1的方法,其中还包括步骤:用所述第一压缩数据重写所述第一操作数的第一组多个数据元素。
4.根据权利要求1的方法,其中每个所述转换形式的长度是N/2比特。
5.根据权利要求4的方法,其中所述转换形式包括各个数据元素的N/2个最低有效位。
6.根据权利要求4的方法,其中存储所述数据元素的转换形式包括:
如果没有达到饱和,则复制所述数据元素的多个比特;
如果达到饱和,则使用有符号的饱和箝位从所述数据元素产生所述转换形式。
7.根据权利要求4的方法,其中存储所述数据元素的转换形式包括:
如果没有达到饱和,则复制所述数据元素的多个比特;
如果达到饱和,则使用没有符号的饱和箝位从所述数据元素产生所述转换形式。
8.根据权利要求1的方法,其中存储一个数据元素的转换形式包括:
判断所述数据元素的值是否在一个转换形式范围之外;
如果所述数据元素的值在一个转换形式范围之外,则设置所述转换形式到一个箝位值;
如果所述数据元素的值不在转换形式范围之外,则复制所述数据元素的多个比特以形成所述转换形式。
9.根据权利要求8的方法,其中每个转换形式代表一个16比特的字数据和每个数据元素代表一个32比特的双字数据。
10.根据权利要求8的方法,其中使用有符号的饱和箝位来获得每个转换形式。
11.根据权利要求2的方法,其中每个转换形式代表一个8比特字节数据。
12.根据权利要求11的方法,其中每个数据元素代表一个16比特的字数据。
13.根据权利要求11的方法,其中使用有符号的饱和箝位导出每个转换形式。
14.根据权利要求11的方法,其中使用没有符号的饱和箝位导出每个转换形式。
15.根据权利要求2的方法,其中还包括:用第一组多个数据元素中的每个数据元素的转换形式重写第一组多个数据元素的一个或者多个低阶数据元素。
16.根据权利要求15的方法,其中还包括:用第二组多个数据元素中的每个数据元素的转换形式重写第一组多个数据元素的一个或者多个高阶数据元素。
17.根据权利要求2的方法,其中所述目标操作数是由所述压缩指令的第一字段表明的。
18.根据权利要求17的方法,其中所述压缩指令包括3个或者更多个字节,所述第一字段由所述压缩指令的第3字节的第3到第5比特构成,其中所述第二字段包括所述压缩指令的第3字节的第0到第2比特。
19.根据权利要求4的方法,其中所述第一组多个数据元素包括第一操作数第一数据元素和与所述第一操作数第一数据元素相邻的第一操作数第二数据元素,所述第二组多个数据元素包括第二操作数第一数据元素和与所述第二操作数第一数据元素相邻的第二操作数第二数据元素,其中存储第一压缩数据包括:
响应于第一指令,将从第一操作数第一数据元素导出的一个目标第一数据元素存储在第一目标位置部分;
响应于第一指令,将从第一操作数第二数据元素导出的一个目标第二数据元素存储在与所述第一目标位置部分相邻的第二目标位置部分;
响应于第一指令,将从第二操作数第一数据元素导出的一个目标第三数据元素存储在第三目标位置部分;
响应于第一指令,将从第二操作数第二数据元素导出的一个目标第四数据元素存储在与所述第三目标位置部分相邻的第四目标位置部分。
20.一种装置,包括:
接收第一指令的解码器,所述第一指令表明具有第一组多个数据元素的第一操作数和具有第二组多个数据元素的第二操作数,所述第一组多个数据元素和第二组多个第二数据元素中的每一个的长度是N比特;
与所述解码器耦接的一个功能单元,响应于所述解码器解码第一指令而存储长度为2N比特的第一压缩数据,所述第一压缩数据包括含有对应于第一组多个数据元素和第二组多个数据元素中的每一个的转换数据元素的多个转换数据元素,其中所述转换数据元素是长度小于N比特的多比特元素。
21.根据权利要求20的装置,其中所述第一指令是压缩指令。
22.根据权利要求20的装置,其中所述第一组多个数据元素包括第一操作数第一数据元素和第一操作数第二数据元素,其中所述第二组多个数据元素包括第二操作数第一数据元素和第二操作数第二数据元素,其中所述功能单元响应于所述第一指令在一个目标操作数的连续相邻的部分存储用于第一操作数第一数据元素的转换数据元素、用于第一操作数第二数据元素的转换数据元素、用于第二操作数第一数据元素的转换数据元素、用于第一操作数第二数据元素的转换数据元素。
23.根据权利要求22的装置,其中所述目标操作数是由第一操作数指定的,其中所述功能单元重写所述第一组多个数据元素。
24.根据权利要求20的装置,其中所述功能单元用于在一个目标操作数中按第一操作数中的顺序彼此相邻地写入用于第一组多个数据元素中的每个数据元素的转换元素和在所述目标操作数中按第二操作数中的顺序彼此相邻地写入用于第二组多个数据元素中的每个数据元素的转换元素。
25.根据权利要求21的装置,其中所述压缩指令具有包含3个或者更多个字节的整数操作码格式,所述3字节中的第三字节允许一个第一3比特源目标寄存器地址和一个第二3比特源寄存器地址。
26.根据权利要求25的装置,其中所述第一操作数对应于第一3比特源目标寄存器地址。
27.根据权利要求25的装置,其中所述第二操作数对应于第二3比特源寄存器地址。
28.根据权利要求20的装置,其中所述功能单元用于在所述数据元素在一个转换数据元素范围之外时产生用于所述数据元素的转换数据元素的一个箝位值,而在所述数据元素在所述转换数据元素范围之内时,复制所述数据元素的多个比特以产生所述转换数据元素。
29.根据权利要求21的装置,其中还包括:
一个保持压缩指令的存储器,所述压缩指令具有包含三个或者更多个字节的整数操作码的格式,所述三个字节之一允许一个第一3比特源目标寄存器地址和一个第二3比特源寄存器地址;和
一个保持一个软件的存储装置,所述软件向所述存储器提供所述压缩指令以供执行。
30.一种微处理器,包括:
保持第一压缩数据的第一源寄存器,所述第一压缩数据具有包含第一压缩数据元素和第二压缩数据元素的第一组多个压缩数据,每个第一压缩数据元素和第二压缩数据元素的长度是N比特;
保持第二压缩数据的第二源寄存器,所述第二压缩数据具有包含第三压缩数据元素和第四压缩数据元素的第二组多个压缩数据,每个第三压缩数据元素和第四压缩数据元素的长度是N比特;
被耦接的电路,用于从第一源寄存器接收第一压缩数据和从第二源寄存器接收第二压缩数据,并响应于一个压缩指令压缩所述第一压缩数据和所述第二压缩数据,其中第一压缩数据元素的第一部分和第二压缩数据元素的所述第一部分被压缩到目标寄存器中,而第三压缩数据元素的第二部分和第四压缩数据元素的所述第二部分被压缩到目标寄存器中,每个第一和第二部分的长度是N/2比特。
31.根据权利要求30的微处理器,其中所述第一压缩数据元素的第一部分被压缩到目标寄存器的低阶数据元素,所述第四压缩数据元素的第二部分被压缩到目标寄存器的高阶数据元素。
32.根据权利要求31的微处理器,其中所述第二压缩数据元素的第一部分被压缩到目标寄存器中与第三压缩数据元素的第二部分相邻的地方。
33.根据权利要求30的微处理器,其中所述目标寄存器是第一源寄存器,所述第一源寄存器的至少一部分通过压缩所述第三压缩数据元素的第二部分而被重写。
34.根据权利要求33的微处理器,其中所述第一源寄存器的至少一部分通过压缩第二压缩数据元素的第一部分而被覆盖,其中第一部分和第二部分对应于每个数据元素中一组相同的比特。
35.根据权利要求30的微处理器,其中所述压缩指令具有包含三个或者更多个字节的整数操作码的格式,所述三个或者更多个字节中的第三字节允许一个识别第一源寄存器的第一3比特寄存器地址。
36.根据权利要求35的微处理器,其中所述第一3比特寄存器地址还识别目标寄存器。
37.根据权利要求36的微处理器,其中所述第一3比特寄存器地址占用所述3个或者更多个字节中的第三字节的第三到第五比特。
38.根据权利要求37的微处理器,其中所述三个或者更多个字节中的第三字节表明识别第二源寄存器的第二3比特寄存器地址,所述第二3比特寄存器地址位于所述三个或者更多个字节中的第三字节的第0到第2比特。
39.根据权利要求37的微处理器,其中所述电路通过在没有达到饱和时复制所述数据元素的预定的一组比特和在达到饱和时使用有符号的饱和箝位来压缩数据元素的第一或第二部分。
40.根据权利要求37的微处理器,其中所述电路通过在没有达到饱和时复制所述数据元素的预定的一组比特和在达到饱和时使用没有符号的饱和箝位来压缩数据元素的第一或第二部分。
41.一种设备,包括:
用于接收第一指令的装置,所述第一指令包括一个操作码字段、表明具有第一组多个数据元素的第一操作数的一个第一字段以及表明具有第二组多个数据元素的第二操作数的一个第二字段,第一组多个数据元素和第二组数据元素中的每个数据元素的长度是N比特;以及
用于响应于所述第一指令而存储长度为至少N比特的第一压缩数据到目标位置的装置,所述第一压缩数据包括第一组多个数据元素中的每个数据元素和第二组多个数据元素中的每个数据元素的转换形式,每个所述转换形式是长度小于N比特的多比特元素。
CNB021261601A 1994-12-02 1995-12-01 可以对复合操作数进行压缩操作的微处理器 Expired - Lifetime CN1326033C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US34904794A 1994-12-02 1994-12-02
US349047 1999-07-07

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
CN1492314A CN1492314A (zh) 2004-04-28
CN1326033C true CN1326033C (zh) 2007-07-11

Family

ID=23370692

Family Applications (5)

Application Number Title Priority Date Filing Date
CNB02126161XA Expired - Lifetime CN100412786C (zh) 1994-12-02 1995-12-01 可以对复合操作数进行压缩操作的微处理器
CN2007101657203A Expired - Lifetime CN101211255B (zh) 1994-12-02 1995-12-01 对复合操作数进行压缩操作的处理器、设备和计算系统
CNB021261601A Expired - Lifetime CN1326033C (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
CNB02126161XA Expired - Lifetime CN100412786C (zh) 1994-12-02 1995-12-01 可以对复合操作数进行压缩操作的微处理器
CN2007101657203A Expired - Lifetime CN101211255B (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) CN100412786C (zh)
AU (1) AU4464596A (zh)
BR (1) BR9509845A (zh)
WO (1) WO1996017291A1 (zh)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
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 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
WO1993022722A1 (en) * 1992-05-01 1993-11-11 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
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
EP1107111A3 (en) * 1992-12-31 2002-02-06 Seiko Epson Corporation System and method for register renaming
CN100412786C (zh) 1994-12-02 2008-08-20 英特尔公司 可以对复合操作数进行压缩操作的微处理器
US6813699B1 (en) 1995-06-02 2004-11-02 Transmeta Corporation Speculative address translation for processor using segmentation and optional paging
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
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
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
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
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
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
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
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6504550B1 (en) * 1998-05-21 2003-01-07 Mitsubishi Electric & Electronics Usa, Inc. System for graphics processing employing semiconductor device
US6535218B1 (en) * 1998-05-21 2003-03-18 Mitsubishi Electric & Electronics Usa, Inc. Frame buffer memory for graphic processing
ATE557342T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur matrixmultiplikation mit einem breiten operand
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
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
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
US7028171B2 (en) * 2002-03-28 2006-04-11 Intel Corporation Multi-way select instructions using accumulated condition codes
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
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
JP2005535966A (ja) * 2002-08-09 2005-11-24 インテル・コーポレーション アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
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
US8289324B1 (en) 2007-12-17 2012-10-16 Nvidia Corporation System, method, and computer program product for spatial hierarchy traversal
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
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
US8555036B1 (en) 2010-05-17 2013-10-08 Nvidia Corporation System and method for performing predicated selection of an output register
US8564589B1 (en) 2010-05-17 2013-10-22 Nvidia Corporation System and method for accelerated ray-box intersection testing
US20120254589A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers
JP5853177B2 (ja) * 2011-04-08 2016-02-09 パナソニックIpマネジメント株式会社 データ処理装置、及びデータ処理方法
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
US9760371B2 (en) 2011-12-22 2017-09-12 Intel Corporation Packed data operation mask register arithmetic combination processors, methods, systems, and instructions
US9600285B2 (en) 2011-12-22 2017-03-21 Intel Corporation Packed data operation mask concatenation 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
US10402198B2 (en) 2013-06-18 2019-09-03 Nxp Usa, 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
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指令译码方法、数据处理方法、译码器及数据处理装置

Citations (4)

* Cited by examiner, † Cited by third party
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
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
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)

* Cited by examiner, † Cited by third party
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
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
US5168751A (en) * 1991-08-01 1992-12-08 Raymond Hwang Digital tire pressure gauge
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
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
US5696955A (en) * 1994-06-01 1997-12-09 Advanced Micro Devices, Inc. Floating point stack and exchange instruction
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
AU4738396A (en) * 1994-12-01 1996-06-19 Intel Corporation A microprocessor having a multiply operation
CN100412786C (zh) * 1994-12-02 2008-08-20 英特尔公司 可以对复合操作数进行压缩操作的微处理器
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
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
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
US5940859A (en) * 1995-12-19 1999-08-17 Intel Corporation Emptying packed data state during execution of packed data instructions
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
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
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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
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

Also Published As

Publication number Publication date
US7966482B2 (en) 2011-06-21
US20060236076A1 (en) 2006-10-19
EP0795153A1 (en) 1997-09-17
US20130117540A1 (en) 2013-05-09
US6516406B1 (en) 2003-02-04
KR100329338B1 (ko) 2002-07-18
US20130124833A1 (en) 2013-05-16
EP0795153A4 (en) 2001-11-14
JP3615222B2 (ja) 2005-02-02
US20120198210A1 (en) 2012-08-02
US8190867B2 (en) 2012-05-29
US20130124832A1 (en) 2013-05-16
WO1996017291A1 (en) 1996-06-06
US20030115441A1 (en) 2003-06-19
EP1265132A2 (en) 2002-12-11
US6119216A (en) 2000-09-12
US8521994B2 (en) 2013-08-27
BR9509845A (pt) 1997-12-30
US8639914B2 (en) 2014-01-28
US8793475B2 (en) 2014-07-29
US20130117547A1 (en) 2013-05-09
US20130124830A1 (en) 2013-05-16
US20110219214A1 (en) 2011-09-08
CN1173230A (zh) 1998-02-11
US20130117538A1 (en) 2013-05-09
US9141387B2 (en) 2015-09-22
US9361100B2 (en) 2016-06-07
CN1094610C (zh) 2002-11-20
US5881275A (en) 1999-03-09
US8495346B2 (en) 2013-07-23
JPH10512070A (ja) 1998-11-17
US20130124835A1 (en) 2013-05-16
US20130117537A1 (en) 2013-05-09
US5802336A (en) 1998-09-01
CN1492315A (zh) 2004-04-28
US20130124831A1 (en) 2013-05-16
US8838946B2 (en) 2014-09-16
CN100412786C (zh) 2008-08-20
US9015453B2 (en) 2015-04-21
CN101211255A (zh) 2008-07-02
US20110093682A1 (en) 2011-04-21
US9389858B2 (en) 2016-07-12
US9116687B2 (en) 2015-08-25
US9182983B2 (en) 2015-11-10
EP1265132A3 (en) 2005-02-09
US20030131219A1 (en) 2003-07-10
CN1492314A (zh) 2004-04-28
US9223572B2 (en) 2015-12-29
US8601246B2 (en) 2013-12-03
CN101211255B (zh) 2012-07-04
US20130124834A1 (en) 2013-05-16
CN102841776B (zh) 2016-06-29
CN102841776A (zh) 2012-12-26
AU4464596A (en) 1996-06-19
US20130117539A1 (en) 2013-05-09

Similar Documents

Publication Publication Date Title
CN1326033C (zh) 可以对复合操作数进行压缩操作的微处理器
JP3924307B2 (ja) 算術演算装置及び算術演算方法
CN100541422C (zh) 用于执行具有取整和移位的组合型高位乘法的方法和装置
US5675526A (en) Processor performing packed data multiplication
CN100461093C (zh) 在分组数据上执行乘-加运算的方法、处理器、设备和系统
US5819101A (en) Method for packing a plurality of packed data elements in response to a pack instruction
US20010016902A1 (en) Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
US5835392A (en) Method for performing complex fast fourier transforms (FFT's)
JPS6097435A (ja) 演算処理装置
EP0795154A1 (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: 20070711

EXPY Termination of patent right or utility model