首页> 中国专利> 可以对复合操作数进行压缩操作的微处理器

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

摘要

本发明的名称是“可以对复合操作数进行压缩操作的微处理器”。一个处理器包括用于存储第一压缩数据的第一寄存器(209),解码器(202)和功能单元(203)。解码器有一个控制信号输入(207),用以接收第一控制信号和第二控制信号。第一控制信号用以指示压缩操作,而第二控制信号用以指示拆开操作。功能单元连接到解码器(202)和寄存器(209)上。功能单元除执行移动操作外还使用第一压缩数据执行压缩操作和拆开操作。

著录项

  • 公开/公告号CN102841776A

    专利类型发明专利

  • 公开/公告日2012-12-26

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201210161092.2

  • 申请日1995-12-01

  • 分类号G06F9/30;

  • 代理机构中国专利代理(香港)有限公司;

  • 代理人朱海煜

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 07:51:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-07-27

    专利权有效期届满 IPC(主分类):G06F9/30 授权公告日:20160629 申请日:19951201

    专利权的终止

  • 2016-06-29

    授权

    授权

  • 2013-02-13

    实质审查的生效 IPC(主分类):G06F9/30 申请日:19951201

    实质审查的生效

  • 2012-12-26

    公开

    公开

说明书

本申请是申请日为1995年12月1日、申请号为02126161.X、 发明名称为“可以对复合操作数进行压缩操作的微处理器”的专利申 请的分案申请。

技术领域

本发明包括使用单个控制信号处理多个数据元素而执行操作的 一种装置和方法。本发明允许对压缩数据类型执行移动、压缩和拆 开的操作。

背景技术

当今,大多数个人计算机系统的工作机制是使用一个指令产生一 个结果。通过增加指令的执行速度和处理器指令的复杂程度以及并 行执行多个指令来增加处理器性能,这种计算机称为复杂指令集计 算机(CISC)。例如加里福尼亚州Santa Clara的INTEL公司的INTEL  80386TM微处理器就属于CISC类型的处理器。

先前的计算机系统结构经过优化以利用CISC概念。这样的系统 通常具有32位宽的数据总线。然而,针对计算机支持的协作(CSC -电话会议与混合媒体数据操作集成)、2维/3维图像、图像处理、 视频压缩/解压、识别算法和音频处理方面的应用增加了对更高性 能的需求。但是,执行速度和指令复杂性的增加只是一种解决方案。

这些应用的一个共同的特征是它们常常操作大量的数据,其中只 有少数位是重要的。也就是说,是有关位用比数据总线大小少得多 的位表示的数据。例如,处理器的许多操作是就8位和16位数据执 行的(例如视频图像中的像素彩色分量),但是具有宽得多的数据 总线和寄存器。因此,具有32位数据总线和寄存器并且执行这样一 种算法的处理器可能损失多达75%的数据处理、运载和存储能力, 因为只有前8位数据是重要的。

因此,希望有一个处理器,它通过更加有效地利用表示被操作数 据需要的位数和处理器实际数据运载和存储容量之间的差,从而提 高其性能。

发明内容

本文说明一种改进了数据处理操作的处理器。

一种处理器,它包括存储第一压缩数据的第一寄存器,一个解码 器和一个功能单元。解码器有一个控制信号输入。控制信号输入用 于 接收第一控制信号和第二控制信号。第一控制信号用于指示一个压缩 操作。第二控制信号用于指示一个拆开操作。功能单元连接到解码器 和寄存器。功能单元使用第一压缩数据执行压缩和拆开操作。处理器 还支持移动操作。

虽然在说明书和附图中包含了大量的细节,但是,本发明由权利 要求的范围限定。只有在这些权利要求中提到的限制适用于本发明。

附图说明

本发明用附图中的、但不限于附图中的实例说明,相同的参考标 号表示相似的元件。

图1表示使用本发明的方法和装置的计算机系统的一个实施例;

图2表示本发明的处理器的一个实施例;

图3是说明由本发明的处理器使用的操作寄存器文件中的数据的 总步骤的流程图;

图4a说明存储器数据类型;

图4b、图4c和图4d说明整数数据的寄存器内表示;

图5a表示压缩数据类型;

图5b,图5c和图5d说明压缩数据的寄存器内表示;

图6a表示在该计算机系统中使用的指示使用压缩数据的控制信 号格式;

图6b表示第二控制信号格式,它可以用于该计算机系统指示使 用压缩数据或者整数数据;

图7表示由处理器在对压缩数据执行压缩操作时所遵循的方法的 一个实施例;

图8a表示能够对压缩字节数据实现压缩操作的电路;

图8b表示能够对压缩字数据实现压缩操作的电路;

图9表示由处理器在对压缩数据执行拆开操作时所遵循的方法的 一个实施例;

图10表示能够对压缩数据实现拆开操作的电路。

具体实施方式

本文叙述了对多个数据元素进行移动、压缩和拆开操作的处理器。 在下面的说明中,叙述了大量的诸如电路等这样的细节,以便提供对本 发明彻底的了解。在另外的场合,为避免不必要地冲淡对本发明的理 解,对熟知的结构和技术未作详细的叙述。

定义

为了对理解本发明的实施例的说明提供基础,提供下面的定义。

位X到位Y:定义二进制数的一个子字段。例如字节001110102(以2为基表示)的位6到位0表示子字段1110102,二进制数后面 的2表示以2为基。因此,10002等于810,而F16等于1510

Rx:是一个寄存器。寄存器是能够存储和提供数据的任何设备。 寄存器的另外的功能下面说明。一个寄存器不一定是处理器组件的一部 分。

DEST:是一个数据地址。

SRC1:是一个数据地址。

SRC2:是一个数据地址。

Result:要存储在由DEST寻址的寄存器中的数据。

Source1:存储在由SRC1寻址的寄存器中的数据。

Source2:存储在由SRC2寻址的寄存器中的数据。

计算机系统

参考图1,可以实现本发明的实施例的计算机系统作为计算机系统 100表示。计算机系统100包括总线101或者其它传输信息的通信硬件 和软件以及与总线101连接的处理信息的处理器109。计算机系统100 另外还包括一个随机存取存储器(RAM)或者其它动态存储设备(称 为主存储器104),它连接到总线101上,用于存储信息和要由处理器 109执行的指令。主存储器104也可以用于暂存变量或者其它在处理器 109执行指令时期的中间信息。计算机系统100还包括连接在总线101 上的只读存储器(ROM)106,和/或其它静态存储设备,用于存储 静态信息和处理器109要执行的指令。数据存储设备107连接到总线 101上用于存储信息和指令。

另外,数据存储设备107,例如磁盘或光盘以及它们相应的驱动 器,可以连接到计算机100上。计算机系统100也可以通过总线101连 接到一个显示设备121上,以便显示信息给计算机用户。显示设备121 可以包括一个帧缓冲器,专用图形处理设备,一个阴极射线管 (CRT),和/或一个平面面板显示器。通常一个包括字母数字和其 它键的字母数字输入设备122连接到总线101上,用于给处理器109传 输信息和命令选择。另一类型的用户输入设备是光标控制设备123,例 如鼠标、轨迹球、光笔、触摸屏、或者光标指示键,用于给处理器109 传输方向信息和命令选择以及控制光标在显示设备121上的移动。这种 输入设备通常在两个轴上有两个自由度,第一轴(例如x轴)和第二轴 (例如y轴),它们允许光标控制设备在一个平面内指定位置。然而本 发明不应该局限于只有两个自由度的输入设备。

另一个可以连接到总线101上的设备是硬拷贝设备124,它可能用 于在诸如纸、胶片、或者类似类型介质上打印指令、数据或者其它信息。 另外计算机系统100可以连接到声音记录和/或回放设备125上,例如 连接到一个麦克风上记录信息的音频数字转换器。另外,该设备还可能 包括一个连接到数/模(D/A)转换器的扬声器,用于回放数字化 的声音。

还有,计算机系统100可以是一个计算机网络(例如一个局域网) 的一个终端。这样,计算机系统100便是包括若干连网设备的一个计算 机系统的一个计算机子系统。计算机系统100可以包括视频数字化设备 126。视频数字化设备126可以用于获取视频图像,而传输给网络中的 其它设备。

计算机系统100对于支持计算机支持的协作(CSC-电话会议与 混合介质数据操作的集成)、2维/3维图形、图像处理、视频压缩/ 解压、识别算法和音频操作十分有用。

处理器

图2表示处理器109的详图。处理器109可以在使用一层或多层诸 如BiCMOS、CMOS和NMOS等工艺技术的基底上实现。

处理器109包括一个解码由处理器109使用的控制信号和数据的解 码器202。然后数据可以通过内部总线205存储在寄存器文件204中。 显然,一个实施例的寄存器不应该局限于特定类型的电路,相反,一个 实施例的寄存器只需要能够存储和提供数据,以及执行这里叙述的功 能。

根据不同的数据类型,数据可能存储在整数寄存器组201、寄存器 组209、状态寄存器组208或者指令指针寄存器211中。其它的寄存器 例如浮点寄存器可以包含在寄存器文件204中。在一个实施例中,整数 寄存器组201存储32位整数数据。在一个实施例中寄存器209组包括8 个寄存器,R0 212a到R7 212h。寄存器组209中的每一个寄存器为 64位长。R1 212a、R2 212b和R3 212c是寄存器组209中单个寄 存器的例子。寄存器组209中的一个寄存器的32位可以移动到整数寄 存器组201中的一个整数寄存器中。类似地,一个整数寄存器中的值可 以移动到寄存器组209中的一个寄存器的32位中。

状态寄存器组208指示处理器109的状态。指令指针寄存器211存 储下一要执行的指令的地址。整数寄存器组201、寄存器组209、状态 寄存器组208、和指令指针寄存器211都连接到内部总线205上。任何 另外的寄存器也都应该连接到内部总线205上。

在另一个实施例中,这种寄存器中的某一些可以用于两种类型的数 据。例如,寄存器组209和整数寄存器组201可以组合,其中每一个寄 存器既可以存储整数数据也可以存储压缩数据。在另一个实施例中,寄 存器组209可以用作浮点寄存器组。在这一实施例中,压缩数据或者浮 点数据可以存储在寄存器组209中。在一个实施例中,组合寄存器为64 位长,而整数用64位表示。在该实施例中,在存储压缩数据和整数数 据时,寄存器不需区分这两种数据类型。

功能单元203执行由处理器109执行的操作。这样的操作包括移 位、加法、减法和乘法等。功能单元203连接到内部总线205。高速缓 冲存储器206是处理器109的一个选件,可以用于缓冲存储例如来自主 存储器104的数据和/或控制信号。高速缓冲存储器206连接到解码器 202以接收控制信号207。

图3表示处理器109的总操作。也就是说,图3表示处理器109在 对压缩数据执行操作、对未压缩数据执行操作或者执行某个其它操作时 遵循的步骤。例如这样的操作包括用从高速缓冲存储器206、主存储器 104、只读存储器(ROM)106或者数据存储设备107的数据加载寄 存器文件204中的一个寄存器的加载操作。在本发明的一个实施例中, 处理器109支持由加里福尼亚州圣大克拉热INTEL公司的INTEL  80486TM支持的大多数指令。在本发明另一个实施例中,处理器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到寄存器组Rn  212af中的一个寄存器中的存储方式。每个字节数据元素的信息对于字 节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跟踪一个 被寻址的寄存器,例如R1212a,是否正在存储压缩数据或者简单整数 /定点数据。在另一可选实施例中,处理器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表示SRC2  603。这种一般格式允许寄存器到寄存器,存储器到寄存器,由存储器 对寄存器,由寄存器对寄存器,由立即数对寄存器,由寄存器到存储器 寻址。在一个实施例中,这种一般格式也可以支持整数寄存器到寄存器 和寄存器到整数寄存器寻址。

饱和/非饱和的说明

如前所述,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, 于1993年12月30日申请的“在处理器中使用新型操作的方法和装 置”,所有这些申请都转让给本发明的受让人。

移动操作

移动操作把数据传输给寄存器209或从寄存器209传输出数据。在 一个实施例中,SRC2 603是包含源数据的地址,而DEST605是数据 要传输到的地址。在该实施例中,不用SRC1 602。在另一个实施例 中,SRC1 602就是DEST605。

为解释移动操作,要区分寄存器和存储单元这两种情况。寄存器在 寄存器文件204中寻找,而存储器可以是高速缓冲存储器206、主存储 器104、ROM106、数据存储设备107。

移动操作可以从存储器到寄存器组209、从寄存器组209到存储 器、和从寄存器组209中的一个寄存器到寄存器组209中的另一个寄存 器移动数据。在一个实施例中,压缩数据存储在不同于存储整数数据的 寄存器中。在该实施例中,移动操作可以把数据从整数寄存器组201移 动到寄存器组209中。例如,在处理器109中,如果压缩数据存储在寄 存器组209中而整数数据存储在整数寄存器组201中,则可以使用移动 指令从整数寄存器组201移动数据到寄存器组209,反之亦然。

在一个实施例中,当为移动指定一个存储器地址时,在存储单元(指 示最低有效字节的存储器单元)中的数据的8个字节加载到寄存器组 209中的一个寄存器或从该寄存器存储数据的8个字节到该存储单元。 当指定寄存器组209中的一个寄存器时,该寄存器中的内容被移动到寄 存器组209中的第二寄存器或从寄存器组209中的第二寄存器加载内容 到该寄存器。如果整数寄存器201为64位长,且指定一个整数寄存器, 则在该整数寄存器中的数据的8个字节加载到寄存器209中的一个寄存 器中或从后者存储在该整数寄存器中。

在一个实施例中,整数用32位表示。当从寄存器组209到整数寄 存器组201执行移动操作时,则只有低32位压缩数据移动到指定的整 数寄存器。在一个实施例中,高阶32位被置0。相似地,当执行从整 数寄存器组201到寄存器组209的移动时,只加载寄存器组209中的一 个寄存器的低32位。在一个实施例中,处理器109支持在寄存器组209 的一个寄存器到存储器之间的32位移动操作。在另一个实施例中,只 有32位的移动操作是就压缩数据的高阶32位进行的。

压缩操作

在本发明的一个实施例中,SRC1602寄存器包含数据 (Source1),SRC2 603寄存器包含数据(Source2),而DEST605 寄存器包含运算的结果数据(Result)。也就是说,Source1的各部 分和Source2的各部分压缩在一起产生Result。

在一个实施例中,压缩操作通过把源压缩字(或双字)的低位字节 (或字)压缩到Result的字节(或字)中而把压缩字(或双字)变换 为压缩字节(或字)。在一个实施例中,压缩操作把四压缩字变换为压 缩双字。这一操作可选使用带符号数据执行。另外,该操作可选使用饱 和方式执行。

图7表示对压缩数据执行压缩操作的方法的实施例。该实施例可以 在图2中的处理器109中实现。

在步骤701,解码器202解码由处理器109接收的控制信号207。 于是,解码器202解码:适当的压缩操作的操作码;寄存器组209中的 SRC1 602、SRC2 603和DEST605的地址;饱和/非饱和、带符 号/无符号、和在压缩数据中的数据元素的长度。如前所述,SRC1  602(或SRC2 603)可以用作DEST605。

在步骤702,通过内部总线205,解码器202访问寄存器□文件 204中的寄存器组209,给出SRC1 602和SRC2603的地址。寄存器 组209供给功能单元203存储在SRC1602寄存器中的数据 (Source1)和存储在SRC2603寄存器中的数据(Source2)。也 就是说,寄存器组209通过内部总线205给功能单元203传输数据。

在步骤703,解码器202允许功能单元203执行适当的压缩操作。 解码器202通过内部总线205进一步传输在Source1和Source2中的 数据元素的饱和和大小。饱和作为选项用以使在结果数据元素中的数据 取最大值。如果在Source1和Source2中的数据元素的值大于或者小 于在Result中的数据元素所能表示的值的范围,则相应的结果数据元 素设定为其最大或最小值。例如,如果在Source1和Source2中的字 数据元素中的带符号值小于0X80(或对双字来说为0X8000),则结 果字节(或字)数据元素箝位在0X80(或对双字来说为0X8000)。 如果在Source1和Source2中的字数据元素中的带符号值大于0X7F (或对双字来说为0X7FFF),则结果字节(或字)数据元素箝位在 0X7F(或0X7FFF)。

在步骤710,数据元素的大小决定下一步要执行哪个步骤。如果数 据元素的大小为16位(压缩字502数据),则功能单元203执行步骤 712。然而,如果压缩数据的数据元素的大小为32位(压缩双字503 数据),则功能单元203执行步骤714。

假定源数据元素的大小为16位,则执行步骤712。在步骤712, 执行下面的内容。Source1位7到0为Result位7到0。Source1位 23到16为Result位15到8。Source1位39到32为Result位23到 16。Source1位63到56为Result位31到24。Source2位7到0为 Result位39到32。Source2位23到16为Result位47到40。Source2 位39到32为Result位55到48。Source2位63到56为Result31到 24。如果设定了饱和,则测试每一字的高阶位以判定是否要箝位Result 数据元素。

假定源数据元素的大小为32位,则执行步骤714。在步骤714, 执行下面的内容。Source1位15到0为Result位15到0。Source1位 47到32为Result位31到16。Source2位15到0为Result位47到 32。Source2位47到32为Result位63到48。如果设定了饱和,则 测试每一双字的高阶位以判定是否要箝位Result数据元素。

在一个实施例中,步骤712的压缩操作同时执行。然而,在另一个 实施例中,这一压缩操作顺序执行。在再一个实施例中,一部分压缩操 作同时执行,而一部分顺序执行。这一讨论也适用于步骤714的压缩操 作。

在步骤720,Result存储在DEST605寄存器中。

表2表示非饱和无符号字压缩操作的寄存器内表示。第一行的位为 Source1的压缩数据表示。第二行的位为Source2的数据表示。第三行 的位为Result的压缩数据表示。每一数据元素位下面的数字是该数据 元素的号码。例如,Source1数据元素3是100000002

表2

表3表示饱和带符号双字压缩操作的寄存器内表示。

表3

压缩电路

在本发明的一个实施例中,为有效地执行压缩操作,使用并行方 法。图8a和图8b表示能够对压缩数据执行压缩操作的一个电路的实施 例。该电路可选执行饱和压缩操作。

图8a和图8b的电路包括操作控制电路800,结果寄存器852,结 果寄存器853,8个16位到8位的饱和测试电路,和4个32位到16 位的饱和测试电路。

操作控制电路800从解码器202接收信息以允许压缩操作。操作控 制电路800使用饱和值允许对每一饱和测试电路进行饱和测试。如果源 压缩数据的大小为字压缩数据503,则输出许可信号831由操作控制电 路800置位。这就允许输出寄存器852输出。如果源压缩数据的大小是 双字压缩数据504,则输出许可信号832由操作控制电路800置位。这 就允许输出寄存器853输出。

每一饱和测试电路可以选择测试饱和。如果饱和测试被禁止,则每 一饱和测试电路仅仅把低阶位传送给一个结果寄存器的相应位置。如果 饱和测试被许可,则每一饱和测试电路测试高阶位以判定是否应该对结 果箝位。

饱和测试810到饱和测试817有16位输入和8位输出。8位输出 是输入的低8位,或可选为一个箝位值(0X80,0X7F,或0XFF)。饱 和测试810接收Source1位15到0而为结果寄存器852输出位7到0。 饱和测试811接收Source1位31到16而为结果寄存器852输出位15 到8。饱和测试812接收Source1位47到32而为结果寄存器852输出 位23到16。饱和测试813接收Source1位63到48而为结果寄存器 852输出位31到24。饱和测试814接收Source2位15到0而为结果 寄存器852输出位39到32。饱和测试815接收Source2位31到16 而为结果寄存器852输出位47到40。饱和测试816接收Source2位 47到32而为结果寄存器852输出位55到48。饱和测试817接收Source2 位63到48而为结果寄存器852输出位63到56。

饱和测试820到823有32位输入和16位输出。16位输出是输入 的低16位,或可选为一个箝位值(0X8000,0X7FFF,或0XFFFF)。 饱和测试820接收Source1位31到0而为结果寄存器853输出位15 到0。饱和测试821接收Source1位63到32而为结果寄存器853输出 位31到16。饱和测试822接收Source2位31到0而为结果寄存器853 输出位47到32。饱和测试823接收Source2位63到32而为结果寄存 器853输出位63到48。

例如在表4中,执行无符号不饱和字压缩操作。操作控制电路800 许可结果寄存器852输出结果[63:0]860。

表4

然而,如果执行无符号不饱和双字压缩操作,则操作控制电路800 许可结果寄存器853输出结果[63:0]860。表5表示这一结果。

表5

拆开操作

在一个实施例中,拆开操作交错放置两个源压缩数据的低阶压缩字 节、字或者双字以产生结果压缩字节、字或者双字。

图9表示对压缩数据执行拆开操作的方法的实施例。该实施例可以 在图2中的处理器109中实现。

首先执行步骤701和702。在步骤903,解码器202许可功能单元 20执行拆开操作。解码器202通过内部总线205传输Source1和 Source2中的数据元素的大小。

在步骤910,数据元素的大小决定下一步执行哪一步骤。如果数据 元素的大小为8位(压缩字节数据501),则功能单元203执行步骤 912。然而,如果压缩数据中的数据元素的大小为16位(压缩字数据 502),则功能单元203执行步骤914。然而,如果压缩数据中的数据 元素的大小为32位(压缩双字数据503),则功能单元203执行步骤 916。

假定源数据元素的大小为8位,则执行步骤912。在步骤912,执 行下面的内容: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位,则执行步骤914。在步骤914, 执行下面的内容:Source 1位15到0为Result位15到0。Source2位 15到0为Result位31到16。Source1位31到16为Result位47到 32。Source2位31到16为Result位63到48。

假定源数据元素的大小为32位,则执行步骤916。在步骤916, 执行下面的内容:Source1位31到0为Result位31到0。Source2位 31到0为Result位63到32。

在一个实施例中,步骤912的拆开操作同时执行。然而,在另一个 实施例中,拆开操作顺序执行。在再一个实施例中,拆开操作的一部分 同时执行,另一部分顺序执行。这一讨论也适用于在步骤914和步骤 916的拆开操作。

在步骤720,Result存储在DEST605寄存器中。

表6示出字节拆开操作的寄存器内表示。

表6

表7示出字拆开操作的寄存器内表示。

表7

表8示出双字拆开操作的寄存器内表示。

表8

拆开电路

在本发明的一个实施例中,为有效地执行拆开操作,使用并行方 法。图10表示能够对压缩数据执行拆开操作的一个电路的实施例。

图10的电路包括操作控制电路800,结果寄存器1052,结果寄存 器1053和结果寄存器1054。

操作控制电路800从解码器202接收信息而许可拆开操作。如果源 压缩数据的大小是字节压缩数据502,则由操作控制电路800置位输出 许可信号1032。这就允许结果寄存器1052输出。如果源压缩数据的大 小为字压缩数据503,则输出许可信号1033由操作控制电路800置位。 这就允许输出寄存器1053输出。如果源压缩数据的大小是双字压缩数 据504,则输出许可信号1034由操作控制电路800置位。这就允许输 出结果寄存器1054输出。

结果寄存器1052有下列输入。Source1位7到0为结果寄存器 1052的位7到0。Source2位7到0为结果寄存器1052的位15到8。 Source1位15到8为结果寄存器1052的位23到16。Source2位15 到8为结果寄存器1052的位31到24。

Source1位23到16为结果寄存器1052的位39到32。Source2位 23到16为结果寄存器1052的位47到40。Source1位31到24为结 果寄存器1052的位55到48。Source2位31到24为结果寄存器1052 的位63到56。

结果寄存器1053有下列输入。Source1位15到0为结果寄存器 1053的位15到0。Source2位15到0为结果寄存器1053的位31到 16。Source1位31到16为结果寄存器1053的位47到32。Source2位 31到16为结果寄存器1053的位63到48。

结果寄存器1054有下列输入。Source1位31到0为结果寄存器 1054的位31到0。Source2位31到0为结果寄存器1054的位63到 32。

例如,在表9中,执行一个字拆开操作。操作控制电路800将允许 结果寄存器1053输出结果[63:0]860。

表9

然而,如果执行双字拆开操作,则操作控制电路800将允许结果寄 存器1054输出结果[63:0]860。表10表示这一结果。

表10

因此,移动、压缩和拆开操作可以操作多个数据元素。在现有技术 的处理器中,为执行这些类型的操作,需要多个单独的操作来执行单一 压缩数据移动、压缩或者拆开操作。在一个实施例中,用于压缩数据操 作的数据线都带有相关的数据。它将提高计算机系统的性能。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号