CN1234560A - 用于执行重排指令的系统和方法 - Google Patents

用于执行重排指令的系统和方法 Download PDF

Info

Publication number
CN1234560A
CN1234560A CN99106097A CN99106097A CN1234560A CN 1234560 A CN1234560 A CN 1234560A CN 99106097 A CN99106097 A CN 99106097A CN 99106097 A CN99106097 A CN 99106097A CN 1234560 A CN1234560 A CN 1234560A
Authority
CN
China
Prior art keywords
data
operand
packed
data element
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN99106097A
Other languages
English (en)
Other versions
CN1158613C (zh
Inventor
P·鲁塞尔
S·舍尼帕蒂
M·克兰福特
M·阿卜杜拉
J·科凯
K·贡
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 CN1234560A publication Critical patent/CN1234560A/zh
Application granted granted Critical
Publication of CN1158613C publication Critical patent/CN1158613C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种利用由计算机实行的步骤对压缩数据执行重排操作的装置和方法。在一个实施例中,存取一具有至少两个数据元的第一压缩数据操作数。存取一具有至少两个数据元的第二压缩数据操作数。将在第一压缩数据操作数中的其中一个数据元移动到目的寄存器中的较低目的区,以及将在第二压缩数据操作数中的其中一个数据元移动到目的寄存器中的较高目的区。

Description

用于执行重排指令的系统和方法
本发明一般涉及计算机系统领域,更具体地说涉及一种根据移动重排操作实现多维计算的装置和方法。
为了提高多媒体应用和具有相以特征的其它应用的效率,一种单指令多数据(SIMD)体系结构已经在计算机系统中实现以便能够用一个指令同时运算几个数据而不是一个数据。特别是,SIMD体系结构具有对在一个寄存器或存储器存储单元内部的很多数据元组合的优点。由于并行的硬件执行,可以按照一个指令实现多个操作,从而明显改进性能。
虽然目前很多应用场合在应用中具有称之为统管操作的这些操作的优点,但仍有一些重要的应用场合,需要在可以实行统管操作之前重排各数据元,以便能保证实现应用。这些重要的应用的实例包含通常用在3D图形和信号处理应用场合中的点积和矩阵乘法运算。
关于在寄存器或存储器字内部的数据元重新排列次序的一个问题是用于指示应怎样重新排列数据的机制。通常使用掩码或控制字。控制字必须包含足够的位以指示源数据区中的哪一些必须移入每一目的数据区中。例如若一源操作数具有八个数据区,需要3位来指定任何特定的数据区,以及目的寄存器具有4个数据区,对于控制字需要(3×4)或12位。然而,按照其中对于控制寄存器可用的位(数)小于12位时的处理器实施方案,不能支持完全的移动重排。
因此,需要一种方法来识别在对于一控制寄存器可使用的位数小于完全位数的情况下的数据元的次序。
本发明提供一种装置和方法,用于对压缩数据利用以计算机实施的步骤实现移动操作。在一个实施例中,存取具有至少两个数据元的第一压缩数据操作数。存取具有至少两个数据元的第二压缩数据操作数。将在第一压缩的数据操作数中的其中一个数据元,移动到一目的寄存器的较低目的区,以及将在第二压缩数据操作数中的其中一个数据元移动到该目的寄存器的较高目的区。
以举例的方式介绍本发明,通过结合附图参照如下介绍可以更好地理解本发明,在附图中,相似的标号表示相似的元件,及其中:
图1表示根据本发明的一个实施例的示范性的计算机系统;
图2表示根据本发明的一个实施例的移动指令的操作;
图3表示根据本发明的一个实施例的重排指令的操作;
图4表示根据本发明的一个实施例的内部附加指令的操作;
图5表示根据本发明的一个实施例的重排指令的操作;
图6a和6b表示根据本发明的一个实施的重排指令的操作;
图7是表示根据本发明的一个实施例的一实现重排操作的,用于对TV广播信号滤波的数字滤波器的总体方块图;
图8是表示在使图形目的物变得生动时所用的重排操作的总体方块图。
在如下的介绍中,介绍很多具体的细节,以保证透彻地理解本发明。然而,本技术领域的普通技术人员应理解,本发明可以不按这些具体细节来实现。为了不使本发明模糊不清,在另外一些例子中,没有详细表示公知的电路、结构和技术。
本发明提供一种在其中控制寄存器可使用的位数小于完全位数的情况下,识别各数据元的次序的方法。根据本发明的一个方面,提供用于移动在数据包操作数中的数据元(重排操作)的一种方法和装置。这种重排操作使一定规模的数据能重排成由两个源寄存器或存储器构成的任意组合或移动到目的寄存器中。目的寄存器可以与源寄存器相同。重排指令常用于数据识别和将数据移动到寄存器中的不同存储单元,以便例如能为了定标操作而额外存储,或者为了便于在各数据格式之间变换例如由压缩整数变换为压缩浮点或者相反。
术语“寄存器”这里所用含义是指该机载处理器存储单元(位置),其用作识别操作的宏指令的一部分。换句话说,这里所指的寄存器是由处理器的外侧(由程序员的观点)可看到的。然而,这里所述的寄存器可以利用很多不同的技术例如专用的物理意义上的寄存器,在利用寄存器重新命名的动态分配的物理上的寄存器和动态分配的物理上的寄存器等的处理器内的电路装置来实施。
计算机系统
图1表示实现本发明原理的计算机系统的一个实施例。该计算机系统100包含:处理器105、存储装置110和总线115。处理器105利用总线115连接到存储装置110上。此外,一些用户输入/输出装置例如键盘120和显示器125连接到总线115。处理器105代表任何结构类型的中央处理单元,例如CISC、RISC、VLIW或混合结构。此外,处理器105可以在一或多个芯片上实现。存储装置110代表一或多种用于存储数据的机构。例如,存储装置110可以包含:只读存储器(ROM),随机存取存储器(RAM),磁盘类存储媒体,光盘类存储媒体,闪速存储器装置,和/或其它机器可读的媒体。总线115代表一或多种总线(例如,AGP、PCI、ISA、X-Bus,VESA等)以及一些桥接器(也称为总线控制器)。虽然,这一实施例是针对单一的处理器计算机系统介绍的,但本发明可以按照多处理器计算机系统实现。此外,虽然这里所介绍的这一实施例是针对64位计算机系统的,但本发明不局限于64位计算机系统。
除了这些装置之外,一或多个网络130、TV广播信号接收器131、传真/调制解调器132、数字化装置133,音响装置134和图形装置135以可选择的方式可连接到总线115上。网络130和传真调制解调器132代表一或多个用于发送机器可读的媒体(例如为载波)传输数据的网络连接器件。数字化装置133代表一或多个用于将图像数字化的装置(即扫描器,摄像机等),音响装置134代表一或多个用于输入和/或输出声音的装置(例如麦克风、扬声器、磁存储装置,光存储装置等)。图形装置135代表—或多个用于产生3D图像的装置(例如图形卡)。
图1还表示存储装置110其中已存储有数据135和软件136。数据135代表存储如在这里所述的一个或多个格式存储的数据。软件136代表为了实施该参照图3-6中所介绍的技术中某一些和/或全部所需的编码。本技术领域的普通技术人员会认识到,该存储装置110最好包含有对于理解本发明不是必备的另外的软件(未表示)。
图1还另外表示出处理器105包含解码器140、一组寄存器141、执行器142和用于执行指令的内部总线143。本技术领域的普通技术人员会认识到,处理器105可包含对于理解本发明不是必备的辅加电路装置。解码器140、寄存器141和执行器142由内部总线143连接在一起。解码器140用于将由处理器105接收的指令解码成为控制信号和/或微代码输入点。响应于这些控制信号和/或微代码输入点,执行器142执行相应的操作。解码器140可以利用一些不同机制实现(例如,查询表,硬件实施方案,PLA等)。虽然这里是利用一系列的如果/则的叙述方式表示各种指令的解码,但应理解指令的执行不需要对这些如果/则的表述语句进行一系列的处理过程。相反,任何逻辑上能实现这种如果/则的逻辑处理的机制都会被认为处在实现本发明的范围内。
所示解码器140包含压缩数据指令集145,用于对压缩数据进行运算。在一个实施例中,压缩数据指令集145包含如下的指令:移动指令150、重排指令155、相加指令(例如ADDPS)160以及乘法指令165。MOVAPS、SHUFPS和ADDPS指令可适用于压缩浮点数据,其中将在具有预定位数的两组数字以间的运算结果存储在具有相同预定位数的寄存器中,即操作数的规模或结构与该结果寄存器的对应部分相同。这里进一步介绍关于这些指令中的每一个指令的操作。虽然,所介绍的一个实施例其中压缩数据指令对于浮点数据操作,但另外的实施例可以按照另外的方式具有对于整数数据操作的相似的指令。
除了压缩数据指令以外,处理器105可以包含新的指令和/或与在已有通用处理器中可找到的相似或者相同的指令。例如,在一个实施例中,处理器105支持与由已有的处理器例如PentiumRⅡ型处理器使用的IntelR Architecture指令集。本发明的另外一些实施例可以包含或多或少的以及不同的压缩数据指令以及仍然利用本发明的论述方案。
在处理器105上的寄存器141(代表一般存储装置)用于存储包含控制/状态信息、整数数据、浮点数据和压缩数据的信息。本技术领域的普通技术人员会理解,本发明的一个方面是用于对压缩数据进行运算的所述指令集。根据本发明的这一方面,用于存储该压缩数据的存储区不是关键的。这里使用的术语“数据处理系统”是指用于处理数据的任何机器,包含参阅图1介绍的计算机系统。
虽然所介绍的本发明的一个实施例其中对128位压缩数据操作数(包含4个32位单一精确度的浮点值)执行压缩数据指令操作,可以对按几种不同的压缩数据格式的压缩数据进行操作。例如在一个实施例中,对压缩数据可以按照三种格式:“压缩字节”格式(例如PAD Db),“压缩字”格式(例如PADDW)或者“压缩双字”(dword)格式(例如PADDd)中的一种格式进行操作。该压缩字节格式包含8个独立的8位数据元;压缩字格式包含4个独立的16位数据元;压缩双字格式包含两个独立的32位数据元。虽然下面参照一或两种压缩数据格式讨论某一些指令,该指令可以按相似的方式适用于本发明的其它压缩数据格式。
本发明的重排指令是一族按照SIMD体系结构操作的很多不同指令中的一部分。例如,图2表示根据本发明的一个实施例的移动指令150的操作。在这一实例中,移动指令150(MOVAPS)将数据位从一个寄存器向另一个寄存器或者从一个存储器存储单元向另一个移动。在一个实施例中,64位代表由一个存储器存储单元到另一个存储单元或者由一个寄存器到另一个寄存器的4个压缩字。
图3表示根据本发明的一个实施例的重排指令155的操作。在一个实施例中,重排指令155(SHUFPS)能够将多个(例如4个)单浮点(FP)数字中任何一个由第一运算数310移动到目的寄存器330中的较低两个目的区;通过多个(例如4个)单纯FP数字中的任一个由第二操作数320移动产生较高两个目的区。
图4表示根据本发明一个实施例的压缩统管加法指令160的操作。在一个实施例中,该压缩统管操作是一加法指令(ADDPS)160,其对第一操作数410和第二操作数420中的数据元进行操作。具体是将第一操作数410中的数据元添加到第二操作数420中对应的压缩数据元,用于产生一结果430。例如将第一操作数410中的数据元0添加到第二操作数420中的数据元0,并将其结果存储作为结果430中的数据元0。压缩乘法指令与压缩加法指令按类似的方式作用,除了执行乘法运算以外。
重排操作
图5表示根据本发明一个实施例的对两个数字进行重排操作的技术。在这种应用中,数据用一些椭圆表示,而指令用矩形表示。由起始状态开始,操作过程S500进行到处理步骤S510,其中将数字X0、X1、X2和X3作为数据元存储在压缩数据项515中。为了便于讨论,每个数据元为16位宽,并且按照如下的次序存储在寄存器X0中:
|X3|X2|X1|X0|
然后处理过程S500进行到处理步骤S520,在其中数字Y0、Y1、Y2和Y3作为数据元存储在压缩数据项525中。为了便于讨论,每个数据元为16位宽,并且按照如下的次序存储在寄存器X1中:
|Y3|Y2|Y1|Y0|
然后处理过程S500进行到处理步骤S530,在其中对寄存器X0(数据项515)中和寄存器X1(数据项525)的存储值执行重排指令,以便将4个数据元的其中任一个由第一数据项515移动到目的寄存器535中的较低两个区,以及将4个数据元的其中任一个由第二数据项525移动到目的寄存器535中的较高两个区。所形成的数据项535如下:
|{Y3,Y2,Y1,Y0}|{Y3,Y2,Y1,Y0}|{X3,X2,X1,X0}|{X3,X2,X1,X0}|
因此,进行了重排操作。虽然,图5按照具有4个数据元的数据操作数表示重排操作的一个实例,但按具有至少两个数据元的数据操作数也可实现本发明的原理。
一个8位中间值用作控制字,以指示数据元应怎样移动。控制字中位0,1指示在第一操作数中的四个数据元中的哪一个移动到目的寄存器中的第一或最低数据元。控制字中的位2、3指示在第一操作数中的四个数据元中的哪一个移动到目的寄存器中的第二数据元。控制字中位4,5指示在第二操作数中的四个数据元中的哪一个移动到目的寄存器中的第三数据元。控制字中位6、7指示在第二操作数中的四个数据元的哪一个移动到目的寄存器中的第四数据元。例如,按照如下的次序存储的四个数据元给定第一数据操作数:
|D|C|B|A|以及还按照如下的次序存储的四个数据元给定第二数据操作数:
|H|G|F|E|以及还给定一为10001111的重排控制字,重排的结果如下
|G|E|D|D|
本技术领域的普通技术人员会认识到,重排控制字的大小可以根据利用本发明不会丧失兼容性的原则,根据在源数据操作数中的数据元的数字和在目的寄存器中的区数变化。
图6a表示根据本发明的一个实施例的用于对两个数字进行重排操作的示意图。装置600读出第一原压缩数据操作数605和第二原压缩数据操作数610的存储值。一个四对一的数据多路切换器615将数据元{D,C,B,A}中的任何一个由某一个数据操作数(605、610)移动到目的数据项625中较低的区中。一个四对一的数据多路切换器620将数据元{D,C,B,A}中的任何一个由某一个数据操作数(605,610)移动到目的数据项625中较高区。
图6b表示根据本发明的一个实施例的用于对两个数字进行重排操作的示意图,装置630读取第一原压缩数据操作数635的存储值。将数据元{D,C,B,A}中的任何一个移动到目的数据项645中较低的两个区。然后装置630读取第二原压缩数据操作数640的存储值。将数据元{H,G,F,E}中的任何一个由数据操作数640移动到目的数据项645中的较高两个区。第一原数据操作数635可以与第二原数据操作数640相同。这种重排方法可以仅用一个八位的控制字来实施。
因此,执行了重排操作。虽然图6a和6b是按照具有两个数据元的数据操作数介绍重排操作的实例的,但本发明的原理也可以按照具有两个以上数据元的数据操作数来实现。
本发明的重排指令可以用作很多不同应用的一部分。例如,图7是一表示数字滤波器使用的总体方块图,该滤波器利用重排操作,用以根据本发明的一个实施例对TV广播信号进行滤波。图7表示代表由计算机系统700中的接收装置706接收的电视广播的TV广播信号703。接收装置706接收TV广播信号703并将它们转换为数字数据709。数字滤波器715利用一组系数712对数字数据709进行数字滤波(例如FIR,IIR等)。因此,数字滤波器装置715产生代表经滤波的模拟TV广播信号的滤波数据(也称为“滤波数据项”。在进行滤波操作中,实现重排操作。由视频解马器721接收该滤波数据718,用以变换为音频和视频数据724。利用视频解码器721实现的技术是公知的(见由Jack,Smith,keith,“NTSC/PAL Digital Decoder”,Video Demystified High Text Publication,Inc.,1993)。该音频和视频数据可用于各种目的(例如在屏幕上显示)。
在一个实施例中,如图1中所示的计算机系统100用来实现图7中的计算机系统。在这一实施例中,TV广播信号接收机131用作接收装置706,可以包含TV调谐器、模数变换器和DMA频道。由TV调谐器接收的TV广播信号703由模数变换器变换为数字数据,然后通过DMA频道存储在存储装置110中。本技术领域的普通技术人员会认识到,由TV广播信号接收机131存储的数字数据可以按照很多的格式存储。例如,TV广播信号接收机131可以在主存储器中按一或多种这里所介绍的格式存储数据一存储该数据中的每一组成部分的两种表达,这样就可读取按照所述格式的压缩数据项。于是这一数据就可以按照压缩数据存取并复制到在处理器105中的寄存器。由于按照所公开的格式存储数据,处理器105可以容易和有效地进行参照图5和图6所述的操作。本技术领域的普通技术人员会认识到,接收装置706可以包含附加的硬件、软件,和/或在TV广播信号接收机131中的固件或者在处理器105中执行的软件。例如,为了在进行数字滤波之前进一步处理,可以将另外的软件存储在存储装置110中。
在这一实施例中,利用处理器105和软件136实现数字滤波装置718,以便进行数字滤波。在这一实施例中,执行软件136的处理器105利用重排操作实现数字滤波,并将滤波数据718存储在存储装置110中。按照这种方式,利用计算机系统中的主处理器而不是TV广播信号接收机131来实现数字滤波器。因此,降低了TV广播信号接收机131的复杂性。在这一实施例中,视频解码器721可以按照硬件、软件和/或固件的不同组合方式实现。音频和视频数据724然后分别存储,和/或显示在显示器125以及作用于音响装置134。
图8是表示根据本发明一个实施例的为了使图形目的物生动的重排操作的总体方块图。图8表示包含表示三维(3D)图形的数字数据755的计算机系统800。数字数据810可以存储在CD ROM或者其它类型的存储装置,以便后来使用。在某些情况下,变换装置706利用3D几何图形实现数据变更,其包含利用重排操作以便操纵(例如改比例、旋转等)3D目的物以使之生动。然后将形成的图形目的物830显示在显示器屏幕840上。所形成的图形目的物还可以传输到一记录装置(例如磁存储装置,例如磁带)。
在一个实施例中,图1中所示的计算机系统100用于实行图8中的3D图形操作800。在这一实施例中,来自图8的数字数据是代表3D图形的在存储装置110中存储的数据。在一个实施例中,图8中的变换装置820利用处理器105和软件136来实现,以便利用3D几何图形变换数据。这种数据变换的实例包含实现3D转换。在这一实施例中,执行软件136的处理器105实现该转换,并将经转换的数据830存储在存储装置110中和/或将经转换的数据提供到图形装置135。按照这种方式,由计算机系统中的主处理器实行的3D操纵是以增速实现的。因此,本发明还便于通过使用可使用的指令序列来执行重排操作。
虽然,已介绍的几个实例是采用重排操作的,但本技术领域的普通技术人员会理解,本发明不局限于这些应用。此外,虽然是按照几个实施例对本发明进行介绍的,但本技术领域的普通技术人员会认识到本发明不局限于所述的实施例。在所提出的权利要求的构思和范围内通过改型和替换可以实施本发明的方法和装置。因此,所作介绍只应看作是说明性而不是对本发明的限定。

Claims (23)

1、一种计算机系统,包含:
硬件装置,用于向另一个计算机或显示器发送表示图形的数据;
处理器,连接到硬件装置;以及
存储装置,连接到处理器,其中存储有程序,当由处理器执行时,使处理器产生数据,该程序使处理器至少能,
存取一至少具有两个数据元的第一压缩数据操作数;
存取一至少具有两个数据元的第二压缩数据操作数;
将在第一压缩数据操作数其中的一个数据元移动到目的寄存器中的较低目的区;以及
将在第二压缩数据操作数其中的一个数据元移动到目的寄存器中的较高目的区。
2、如权利要求1所述的计算机系统,其中该存储装置还包含一个压缩装置,用于将浮点数据压缩为数据元。
3、如权利要求1所述的计算机系统,其中该存储装置还包含一个压缩装置,用于将整数数据压缩为数据元。
4、一种计算机系统,包含:
硬件装置,用于向另一个计算机或显示器发送表示图形的数据;
处理器,连接到该硬件装置;以及
存储装置,连接到处理器,其中存储有程序,当由处理器执行时,使处理器产生数据,该程序使处理器至少能:
存取一具有至少两个数据元的第一压缩数据操作数;以及
将在第一压缩数据操作数中的任一数据元移动到目的寄存器中的任一目的区。
5、如权利要求4所述的计算机系统,其中该存储装置还使处理器能:
存取一具有至少两个数据元的第二压缩数据操作数;以及
将在第二压缩数据操作数中的任一数据元移动到目的寄存器中的任一目的区。
6、如权利要求4所述的计算机系统,其中该存储装置还包含一个压缩装置,用于将浮点数据压缩为数据元。
7、如权利要求4所述的计算机系统,其中该存储装置还包含一个压缩装置,用于将整数数据压缩为数据元。
8、一种方法,包含由计算机实施的步骤有:
对一单指令解码;
响应于对该单指令的解码步骤,
存取一具有至少两个数据元的第一压缩数据操作数;
存取一具有至少两个数据元的第二压缩数据操作数;
将在第一压缩数据操作数的其中一个数据元移动到目的寄存器中的较低目的区;以及
将在第二压缩数据操作数的其中一个数据元移动到目的寄存器中的较高目的区。
9、如权利要求8所述的方法,还包含的步骤有将浮点数据压缩为数据元。
10、如权利要求8所述的方法,还包含的步骤有将整数数据压缩为数据元。
11、一种方法,包含由计算机实行的步骤有:
对一单指令解码;
响应于对该单指令的解码步骤,
存取一具有至少两个数据元的第一压缩数据操作数;以及
将在第一压缩数据操作数中的任一数据元移动到目的寄存器中的任一目的区。
12、如权利要求11所述的方法,还包含的步骤有:
存取一具有至少两个数据元的第二压缩数据操作数;以及
将在第二压缩数据操作数中的任一数据元移动到目的寄存区中的任一目的区。
13、如权利要求11所述的方法,还包含的步骤有:将浮点数据压缩为数据元。
14、如权利要求11所述的方法,还包含的步骤有:将整数数据压缩为数据元。
15、一种方法,包含由计算机实行的步骤有:
存取表示第一三维图像的数据;
利用三维几何图形变换数据,以便产生第二三维图像,该变换步骤至少包含:
存取一具有至少两个数据元的第一压缩数据操作数;
存取一具有至少两个数据元的第二压缩数据操作数;
将在第一压缩数据操作数其中的一个数据元移动到目的寄存器中的较低目的区;
将在第二压缩数据操作数其中的一个数据元移动到目的寄存器中的较高目的区;以及
显示第二三维图像。
16、如权利要求15所述的方法,其中的变换步骤包含三维转换的操作。
17、如权利要求15所述的方法,其中的变换步骤包含将浮点数据压缩为数据元的步骤。
18、如权利要求15所述的方法,其中的变换步骤包含将整数数据压缩为数据元的步骤。
19、一种方法,包含由计算机实行的步骤有:
存取表示第一三维图像的数据;
通过利用三维几何图形变换数据,以便产生第二三维图像,该变换步骤至少包含:
存取一具有至少两个数据元的第一压缩数据操作数;
将在第一压缩数据操作数中的任一数据元移动到目的寄存器中的任一目的区;以及
显示第二三维图像。
20、如权利要求19所述的方法,其中的变换步骤还包含的步骤有:
存取一具有至少两个数据元的第二压缩数据操作数;以及
将在第二压缩数据操作数中的任一操作数移动到目的寄存器中的任一目的区。
21、如权利要求19所述的方法,其中的变换步骤包含三维转换的操作。
22、如权利要求19所述的方法,其中的变换步骤包含将浮点数据压缩为数据元的步骤。
23、如权利要求19所述的方法,其中的变换步骤包含将整数数据压缩成数据元的步骤。
CNB991060970A 1998-03-31 1999-03-31 用于执行重排指令的方法、处理器、设备和系统 Expired - Lifetime CN1158613C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/052996 1998-03-31
US09/052,996 US6041404A (en) 1998-03-31 1998-03-31 Dual function system and method for shuffling packed data elements

Publications (2)

Publication Number Publication Date
CN1234560A true CN1234560A (zh) 1999-11-10
CN1158613C CN1158613C (zh) 2004-07-21

Family

ID=21981242

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB991060970A Expired - Lifetime CN1158613C (zh) 1998-03-31 1999-03-31 用于执行重排指令的方法、处理器、设备和系统

Country Status (6)

Country Link
US (2) US6041404A (zh)
EP (1) EP0947918A3 (zh)
CN (1) CN1158613C (zh)
BR (1) BR9901145A (zh)
SG (1) SG77228A1 (zh)
TW (1) TW452735B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101059865B (zh) * 2006-04-18 2010-05-12 太极控股有限公司 指令摺叠处理单元及其方法以及使用该摺叠处理单元及该方法之像素处理系统
CN102163140A (zh) * 2011-02-28 2011-08-24 孙瑞琛 一种数据的重排方法及重排装置
CN101495959B (zh) * 2006-08-02 2012-04-25 高通股份有限公司 组合微处理器内的多个寄存器单元的方法和设备
CN104081342A (zh) * 2011-12-23 2014-10-01 英特尔公司 经改进的插入指令的装置和方法
US9588764B2 (en) 2011-12-23 2017-03-07 Intel Corporation Apparatus and method of improved extract instructions
US9632980B2 (en) 2011-12-23 2017-04-25 Intel Corporation Apparatus and method of mask permute instructions
US9658850B2 (en) 2011-12-23 2017-05-23 Intel Corporation Apparatus and method of improved permute instructions
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US7133040B1 (en) * 1998-03-31 2006-11-07 Intel Corporation System and method for performing an insert-extract instruction
US7392275B2 (en) * 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US6418529B1 (en) * 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US7395302B2 (en) 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
ATE467171T1 (de) * 1998-08-24 2010-05-15 Microunity Systems Eng System mit breiter operandenarchitektur und verfahren
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
US7155601B2 (en) * 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
US7725521B2 (en) * 2001-10-29 2010-05-25 Intel Corporation Method and apparatus for computing matrix transformations
US7624138B2 (en) 2001-10-29 2009-11-24 Intel Corporation Method and apparatus for efficient integer transform
US7631025B2 (en) * 2001-10-29 2009-12-08 Intel Corporation Method and apparatus for rearranging data between multiple registers
US20040054877A1 (en) 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7739319B2 (en) * 2001-10-29 2010-06-15 Intel Corporation Method and apparatus for parallel table lookup using SIMD instructions
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US7853778B2 (en) 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
US7047383B2 (en) * 2002-07-11 2006-05-16 Intel Corporation Byte swap operation for a 64 bit operand
ATE493703T1 (de) * 2004-11-03 2011-01-15 Koninkl Philips Electronics Nv Programmierbare datenverarbeitungsschaltung, die simd-befehle unterstützt
US7761694B2 (en) * 2006-06-30 2010-07-20 Intel Corporation Execution unit for performing shuffle and other operations
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
US8909901B2 (en) * 2007-12-28 2014-12-09 Intel Corporation Permute operations with flexible zero control
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
US9652231B2 (en) * 2008-10-14 2017-05-16 International Business Machines Corporation All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture
US8423983B2 (en) * 2008-10-14 2013-04-16 International Business Machines Corporation Generating and executing programs for a floating point single instruction multiple data instruction set architecture
US8327344B2 (en) * 2008-10-14 2012-12-04 International Business Machines Corporation Array reference safety analysis in the presence of loops with conditional control flow
US9086872B2 (en) 2009-06-30 2015-07-21 Intel Corporation Unpacking packed data in multiple lanes
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
US9436469B2 (en) 2011-12-15 2016-09-06 Intel Corporation Methods to optimize a program loop via vector instructions using a shuffle table and a mask store table
WO2013095554A1 (en) 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
CN104011644B (zh) 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
US10223111B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
US9395988B2 (en) 2013-03-08 2016-07-19 Samsung Electronics Co., Ltd. Micro-ops including packed source and destination fields
US9766888B2 (en) 2014-03-28 2017-09-19 Intel Corporation Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
EP3001307B1 (en) 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
CN105511838B (zh) * 2014-09-29 2018-06-29 上海兆芯集成电路有限公司 处理器及其执行方法
US9898286B2 (en) * 2015-05-05 2018-02-20 Intel Corporation Packed finite impulse response (FIR) filter processors, methods, systems, and instructions
US10503502B2 (en) 2015-09-25 2019-12-10 Intel Corporation Data element rearrangement, processors, methods, systems, and instructions
US10678545B2 (en) 2016-07-07 2020-06-09 Texas Instruments Incorporated Data processing apparatus having streaming engine with read and read/advance operand coding
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
CN113190791A (zh) 2018-08-06 2021-07-30 华为技术有限公司 矩阵的处理方法、装置及逻辑电路

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US4139899A (en) 1976-10-18 1979-02-13 Burroughs Corporation Shift network having a mask generator and a rotator
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
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
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 デイジタルシグナルプロセツサ
JP2613223B2 (ja) * 1987-09-10 1997-05-21 株式会社日立製作所 演算装置
US4989168A (en) 1987-11-30 1991-01-29 Fujitsu Limited Multiplying unit in a computer system, capable of population counting
US5019968A (en) * 1988-03-29 1991-05-28 Yulan Wang Three-dimensional vector processor
US4903228A (en) 1988-11-09 1990-02-20 International Business Machines Corporation Single cycle merge/logic unit
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
US5497497A (en) * 1989-11-03 1996-03-05 Compaq Computer Corp. Method and apparatus for resetting multiple processors using a common ROM
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
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
US5321810A (en) * 1991-08-21 1994-06-14 Digital Equipment Corporation Address method for computer graphics system
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
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
US5408670A (en) 1992-12-18 1995-04-18 Xerox Corporation Performing arithmetic in parallel on composite operands with packed multi-bit components
US5465374A (en) 1993-01-12 1995-11-07 International Business Machines Corporation Processor for processing data string by byte-by-byte
US5625374A (en) 1993-09-07 1997-04-29 Apple Computer, Inc. Method for parallel interpolation of images
US5390135A (en) 1993-11-29 1995-02-14 Hewlett-Packard Parallel shift and add circuit and method
US5487159A (en) * 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
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
US5931945A (en) * 1994-04-29 1999-08-03 Sun Microsystems, Inc. Graphic system for masking multiple non-contiguous bytes having decode logic to selectively activate each of the control lines based on the mask register bits
US5594437A (en) 1994-08-01 1997-01-14 Motorola, Inc. Circuit and method of unpacking a serial bitstream
US5579253A (en) * 1994-09-02 1996-11-26 Lee; Ruby B. Computer multiply instruction with a subresult selection option
EP0795153A4 (en) 1994-12-02 2001-11-14 Intel Corp MICROPROCESSOR WITH COMPASS OPERATION OF COMPOSITE OPERANDS
US6381690B1 (en) * 1995-08-01 2002-04-30 Hewlett-Packard Company Processor for performing subword permutations and combinations
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
EP0789870B1 (en) * 1995-09-01 2003-01-15 Philips Electronics North America Corporation Method and apparatus for custom operations of a processor
US5819117A (en) * 1995-10-10 1998-10-06 Microunity Systems Engineering, Inc. Method and system for facilitating byte ordering interfacing of a computer system
US6009191A (en) * 1996-02-15 1999-12-28 Intel Corporation Computer implemented method for compressing 48-bit pixels to 16-bit pixels
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
GB2317467B (en) * 1996-09-23 2000-11-01 Advanced Risc Mach Ltd Input operand control in data processing systems
US5909572A (en) * 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
GB2326253A (en) * 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6223277B1 (en) * 1997-11-21 2001-04-24 Texas Instruments Incorporated Data processing circuit with packed data structure capability
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6115812A (en) 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
US6243808B1 (en) 1999-03-08 2001-06-05 Chameleon Systems, Inc. Digital data bit order conversion using universal switch matrix comprising rows of bit swapping selector groups

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101059865B (zh) * 2006-04-18 2010-05-12 太极控股有限公司 指令摺叠处理单元及其方法以及使用该摺叠处理单元及该方法之像素处理系统
CN101495959B (zh) * 2006-08-02 2012-04-25 高通股份有限公司 组合微处理器内的多个寄存器单元的方法和设备
CN102163140A (zh) * 2011-02-28 2011-08-24 孙瑞琛 一种数据的重排方法及重排装置
CN104081342B (zh) * 2011-12-23 2017-06-27 英特尔公司 经改进的插入指令的装置和方法
US10459728B2 (en) 2011-12-23 2019-10-29 Intel Corporation Apparatus and method of improved insert instructions
US9619236B2 (en) 2011-12-23 2017-04-11 Intel Corporation Apparatus and method of improved insert instructions
US9632980B2 (en) 2011-12-23 2017-04-25 Intel Corporation Apparatus and method of mask permute instructions
US9658850B2 (en) 2011-12-23 2017-05-23 Intel Corporation Apparatus and method of improved permute instructions
CN104081342A (zh) * 2011-12-23 2014-10-01 英特尔公司 经改进的插入指令的装置和方法
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
US9588764B2 (en) 2011-12-23 2017-03-07 Intel Corporation Apparatus and method of improved extract instructions
US10467185B2 (en) 2011-12-23 2019-11-05 Intel Corporation Apparatus and method of mask permute instructions
US10474459B2 (en) 2011-12-23 2019-11-12 Intel Corporation Apparatus and method of improved permute instructions
US10719316B2 (en) 2011-12-23 2020-07-21 Intel Corporation Apparatus and method of improved packed integer permute instruction
US11275583B2 (en) 2011-12-23 2022-03-15 Intel Corporation Apparatus and method of improved insert instructions
US11347502B2 (en) 2011-12-23 2022-05-31 Intel Corporation Apparatus and method of improved insert instructions
US11354124B2 (en) 2011-12-23 2022-06-07 Intel Corporation Apparatus and method of improved insert instructions

Also Published As

Publication number Publication date
TW452735B (en) 2001-09-01
EP0947918A2 (en) 1999-10-06
EP0947918A3 (en) 2000-04-26
CN1158613C (zh) 2004-07-21
SG77228A1 (en) 2000-12-19
US6041404A (en) 2000-03-21
BR9901145A (pt) 1999-12-21
USRE45458E1 (en) 2015-04-07

Similar Documents

Publication Publication Date Title
CN1234560A (zh) 用于执行重排指令的系统和方法
US10514916B2 (en) In-lane vector shuffle instructions
US7155601B2 (en) Multi-element operand sub-portion shuffle instruction execution
DE19983189B4 (de) System, Verfahren, Befehl und Prozessor zum Parallelverarbeiten von Graphikdaten
CN101620525B (zh) 混洗数据的方法和装置
US6618728B1 (en) Multi-process compression
US5666298A (en) Method for performing shift operations on packed data
US6502115B2 (en) Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
CA2190797C (en) High speed digital video decompression
KR100331136B1 (ko) 멀티미디어정보용역코사인변환함수를수행하는컴퓨터시스템
US6292815B1 (en) Data conversion between floating point packed format and integer scalar format
US20010016902A1 (en) Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
CN1391668A (zh) 使用推测、基于掩码、由打包数据选择写入数据元素
US6744928B1 (en) Variable-length decoding method and apparatus employing code length and a recording medium
JP3729540B2 (ja) 画像処理装置
US5935240A (en) Computer implemented method for transferring packed data between register files and memory
US5951624A (en) Computer system to compress pixel bits
CN1532686A (zh) 处理器以及由处理器为矩阵处理使用两组寄存器的方法
US6247112B1 (en) Bit manipulation instructions
US5710919A (en) Record compression
EP0928100B1 (en) Run-length encoding
US6212627B1 (en) System for converting packed integer data into packed floating point data in reduced time
Cardelli The amber machine
US6307553B1 (en) System and method for performing a MOVHPS-MOVLPS instruction
JP4862894B2 (ja) 符号化装置と方法及びプロセッサ

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20040721