《控制移位分组数据的位校正的装置.pdf》由会员分享,可在线阅读,更多相关《控制移位分组数据的位校正的装置.pdf(90页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103092562 A(43)申请公布日 2013.05.08CN103092562A*CN103092562A*(21)申请号 201210574889.5(22)申请日 1996.07.1708/521,360 1995.08.31 US96197839.2 1996.07.17G06F 7/57(2006.01)G06F 7/544(2006.01)G06F 7/60(2006.01)G06F 9/30(2006.01)G06F 15/78(2006.01)(71)申请人英特尔公司地址美国加利福尼亚州(72)发明人 A.D.佩勒格 Y.雅里 M.米塔尔L.M.门。
2、内梅尔 B.艾坦 A.F.格卢C.杜龙 E.科瓦施 W.维特(74)专利代理机构中国专利代理(香港)有限公司 72001代理人徐予红 朱海煜(54) 发明名称控制移位分组数据的位校正的装置(57) 摘要一种在处理器中加入支持典型的多媒体应用所要求的分组数据上的操作的指令集的装置。在一个实施例中,本发明包括具有存储区(150)、解码器(165)及多个电路(130)的处理器。该多个电路提供若干指令的执行来操作分组数据。在这一实施例中,这些指令包含组装、分解、分组乘法、分组加法、分组减法、分组比较及分组移位。(30)优先权数据(62)分案原申请数据(51)Int.Cl.权利要求书2页 说明书57页 。
3、附图30页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书57页 附图30页(10)申请公布号 CN 103092562 ACN 103092562 A1/2页21.一种处理器,包括:多个寄存器,用于存储64位分组数据操作数;解码器,用于解码分解指令,所述分解指令具有32位指令格式,所述分解指令具有用于指示所述多个寄存器中的用来存储第一64位源分组数据操作数的第一寄存器的第一字段,并且所述分解指令具有用于指示所述多个寄存器中的用来存储第二64位源分组数据操作数的第二寄存器的第二字段,所述第一64位源操作数包括第一8个8位数据元素,所述第一8个8位数据元素包括在位7。
4、:0上的第一8位数据元素、在位15:8上的第二8位数据元素、在位23:16上的第三8位数据元素、在位31:24上的第四8位数据元素,所述第二64位源操作数包括第二8个8位数据元素,所述第二8个8位数据元素包括在位7:0上的第五8位数据元素、在位15:8上的第六8位数据元素、在位23:16上的第七8位数据元素、在位31:24上的第八8位数据元素;以及执行单元,所述执行单元与所述解码器和所述多个寄存器耦合,所述执行单元响应于所述分解指令将64位目的地分组数据操作数存储在所述多个寄存器中的通过所述分解指令的第三字段指示的第三寄存器中,所述64位目的地操作数的位7:0存储来自所述第一64位源操作数的位。
5、7:0的第一8位数据元素,所述64位目的地操作数的位15:8存储来自所述第二64位源操作数的位7:0的第五8位数据元素,所述64位目的地操作数的位23:16存储来自所述第一64位源操作数的位15:8的第二8位数据元素,所述64位目的地操作数的位31:24存储来自所述第二64位源操作数的位15:8的第六8位数据元素,所述64位目的地操作数的位39:32存储来自所述第一64位源操作数的位23:16的第三8位数据元素,所述64位目的地操作数的位47:40存储来自所述第二64位源操作数的位23:16的第七8位数据元素,所述64位目的地操作数的位55:48存储来自所述第一64位源操作数的位31:24的第。
6、四8位数据元素,所述64位目的地操作数的位63:56存储来自所述第二64位源操作数的位31:24的第八8位数据元素,其中所述处理器包括通用中央处理单元CPU,并且其中所述处理器具有RISC体系结构。2.如权利要求1所述的处理器,还包括允许所述处理器在以栈定位方式在所述多个寄存器的寄存器上操作和以非栈定位方式在所述多个寄存器的寄存器上操作之间切换的机构。3.如权利要求1所述的处理器,其中所述处理器能够处理80位浮点数。4.如权利要求1所述的处理器,其中所述处理器包括64位处理器。5.一种系统,包括:平板显示器;触摸屏光标控制装置,用于控制所述平板显示器上光标移动;捕获视频图像的装置;以及处理器,。
7、所述处理器与所述平板显示器、所述触摸屏光标控制装置、所述捕获视频图像的装置耦合,所述处理器包括:多个寄存器,用于存储64位分组数据操作数;解码器,用于解码分解指令,所述分解指令具有32位指令格式,所述分解指令具有用于指示所述多个寄存器中的用来存储第一64位源分组数据操作数的第一寄存器的第权 利 要 求 书CN 103092562 A2/2页3一字段,并且所述分解指令具有用于指示所述多个寄存器中的用来存储第二64位源分组数据操作数的第二寄存器的第二字段,所述第一64位源操作数包括第一8个8位数据元素,所述第一8个8位数据元素包括在位7:0上的第一8位数据元素、在位15:8上的第二8位数据元素、在。
8、位23:16上的第三8位数据元素、在位31:24上的第四8位数据元素,所述第二64位源操作数包括第二8个8位数据元素,所述第二8个8位数据元素包括在位7:0上的第五8位数据元素、在位15:8上的第六8位数据元素、在位23:16上的第七8位数据元素、在位31:24上的第八8位数据元素;以及执行单元,所述执行单元与所述解码器和所述多个寄存器耦合,所述执行单元响应于所述分解指令将64位目的地分组数据操作数存储在所述多个寄存器中的通过所述分解指令的第三字段指示的第三寄存器中,所述64位目的地操作数的位7:0存储来自所述第一64位源操作数的位7:0的第一8位数据元素,所述64位目的地操作数的位15:8存。
9、储来自所述第二64位源操作数的位7:0的第五8位数据元素,所述64位目的地操作数的位23:16存储来自所述第一64位源操作数的位15:8的第二8位数据元素,所述64位目的地操作数的位31:24存储来自所述第二64位源操作数的位15:8的第六8位数据元素,所述64位目的地操作数的位39:32存储来自所述第一64位源操作数的位23:16的第三8位数据元素,所述64位目的地操作数的位47:40存储来自所述第二64位源操作数的位23:16的第七8位数据元素,所述64位目的地操作数的位55:48存储来自所述第一64位源操作数的位31:24的第四8位数据元素,所述64位目的地操作数的位63:56存储来自所。
10、述第二64位源操作数的位31:24的第八8位数据元素。6.如权利要求5所述的系统,其中所述处理器包括具有RISC体系结构的通用中央处理单元CPU。权 利 要 求 书CN 103092562 A1/57页4控制移位分组数据的位校正的装置0001 本申请是申请日为1996年7月17日、申请号为200610101459.6、发明名称为“控制移位分组数据的位校正的装置”的专利申请的分案申请。技术领域0002 本发明具体涉及计算机系统领域。更具体地,本发明涉及分组数据操作领域。背景技术0003 在典型的计算机系统中,将处理器实现为利用产生一种结果的指令在由大量的位(如64)表示的值上操作。例如,执行加法。
11、指令将第一个64位值与第二个64位值相加并作为第三个64位值存储该结果。然而,多媒体应用(诸如以计算机支持的协作为目的的应用(CSC-电话会议与混合媒体数据处理的集成)、2D/3D图形、图象处理、视频压缩/解压、识别算法与音频处理)要求处理可以用少量的位表示的大量数据。例如,图形数据通常需要8或16位,声音数据通常需要8或16位。这些多媒体应用的各个需要一种或多种算法,各需要若干操作。例如,算法可能需要加法、比较及移位操作。0004 为了改进多媒体应用(以及具有相同特征的其它应用),先有技术处理器提供分组数据格式。分组数据格式中通常用来表示单个值的位被分成若干固定长度的数据元素,各元素表示单独。
12、的值。例如,可将一个64位寄存器分成两个32位元素,各元素表示一个单独的32位值。此外,这些先有技术处理器提供并行分开处理这些分组数据类型中各元素的指令。例如,分组的加法指令将来自第一分组数据与第二分组数据的对应数据元素相加。从而,如果多媒体算法需要包含必须在大量数据元素上执行的五种操作的循环,总是希望组装该数据并利用分组数据指令并行执行这些操作。以这一方式,这些处理器便能更高效地处理多媒体应用。0005 然而,如果该操作循环中包含处理器不能在分组数据上执行的操作(即处理器缺少适当的指令),则必须分解该数据来执行该操作。例如,如果多媒体算法要求加法运算而不能获得上述分组加法指令,则程序员必须分。
13、解第一分组数据与第二分组数据(即分开包含第一分组数据与第二分组数据的元素),将各个分开的单独的元素相加,然后将结果组装成分组的结果供进一步分组处理。执行这种组装与分解所需的处理时间通常抵消了提供分组数据格式的性能优点。因此,希望在通用处理器上包含提供典型多媒体算法所需的所有操作的分组数据指令集。然而,由于当今微处理器上的有限芯片面积,可以增加的指令数目是有限的。0006 包含分组数据指令的一种通用处理器便是加州Santa Clara的Intel公司制造的i860XPTM处理器。i860XP处理器包含具有不同元素大小的若干分组数据类型。此外,i860XP处理器包含分组加法与分组比较指令。然而,分。
14、组加法指令并不断开进位链,因此程序员必须保证软件正在执行的运算不会导致溢出,即运算不会导致来自分组数据中一个元素的位溢出到该分组数据的下一元素中。例如,如果将值1加到存储“11111111”的8位分组数据元素上,便出现溢出而结果为“100000000”。此外,i860XP所支持的分组数据类型中的小数说 明 书CN 103092562 A2/57页5点位置是固定的(即i860XP处理器支持数8.8、6.10与8.24,其中数i.j包含i个最高位及小数点后的j位)。从而限制了程序员可以表示的值。由于i860XP处理器只支持这两条指令,它不能执行采用分组数据的多媒体算法所要求的许多运算。0007 另。
15、一种支持分组数据的通用处理器便是Motorala公司制造的MC88110TM处理器。MC88110处理器支持具有不同长度元素的若干种不同的分组数据格式。此外,MC88110处理器所支持的分组指令集中包括组装、分解、分组加法、分组减法、分组乘法、分组比较与分组旋转。0008 MC88110处理器分组命令通过连接第一寄存器对中的各元素的(t*r)/64(其中t为该分组数据的元素中的位数)个最高有效位进行操作来生成宽度为r的一个字段。该字段取代存储在第二寄存器对中的分组数据的最高有效位。然后将这一分组数据存储在第三寄存器对中并左旋r位。下面在表1与2中示出所支持的t与r值,以及这一指令的运算实例。0。
16、009 0010 X未定义的操作0011 表10012 0013 表20014 分组指令的这一实现具有两个缺点。第一是需要附加的逻辑在指令结束时执行旋转。第二是生成分组数据结果所需的指令数目。例如,如果希望使用4个32位值来生成第三寄存器(以上所示)中的结果,便需要两条具有t32与r32的指令,如下面表3中所示。说 明 书CN 103092562 A3/57页60015 0016 表30017 MC88110处理器分解命令通过将来自分组数据的4、8或16位数据元素放入两倍长(8、16或32位)的数据元素的低位一半中,并填充以零,即将得出的数据元素的较高位设定为零进行操作。下面表4中示出了这一分。
17、解命令的操作的一个例子。0018 0019 表40020 MC88110处理器分组乘法指令将64位分组数据的各元素乘以一个32位值,如同该分组数据表示单一的值一样,如下面表5中所示。0021 说 明 书CN 103092562 A4/57页70022 表50023 这一乘法指令具有两个缺点。首先这一乘法指令并不断开进位链,从而程序员必须保证在分组数据上执行的运算并不导致溢出。结果,程序员有时必须加入附加的指令来防止这一溢出。第二,这一乘法指令将分组数据中的各元素乘以单一的值(即该32位值)。结果,用户没有选择分组数据中哪些元素乘以该32位值的灵活性。因此,程序员必须制备数据使得分组数据中的每一。
18、个元素上都需要相同的乘法或者每当需要对该数据中少于全部元素进行乘法时浪费处理时间来分解数据。因此程序员不能并行利用多个乘数来执行多个乘法。例如,将8个不同的数据片相乘,每一数据片一个字长,需要四次单独的乘法运算。各运算每次乘两个字,实际上浪费了用于位16以上的位的数据线与电路。0024 MC88110处理器分组比较指令比较来自第一分组数据与第二分组数据的对应的32位数据元素。两个比较中各个可能返回小于()或大于等于()之一,得出四种可能的组合。该指令返回一个8位结果串;四位表示符合四种可能条件中哪一种,四位表示这些位的补码。根据这一指令的结果的条件转移能以两种方式实现:1)用一序列条件转移;或。
19、2)用跳转表。该指令的问题在于它需要根据数据的条件转移来执行函数的事实,诸如:ifYA then XX+B else XX。这一函数的伪码编译表示将是:0025 0026 新的微处理器试图通过推测转移到哪里来加快执行。如果预测正确,便不损失性能并且存在着提高性能的潜力。然而如果预测错误,便损失性能。因此,预测得好的鼓励是巨大的。然而根据数据的转移(诸如上面的)呈现为不可预测的方式,这破坏了预测算法并得出更多的错误预测。结果,使用这一比较指令来建立根据数据的条件转移要付出性能上的高昂代价。0027 MC88110处理器旋转指令旋转一个64位值到0与60位之间的任一模4边界上(见下面表6的示例)。。
20、0028 0029 表60030 由于旋转指令使移出寄存器的高位移入寄存器的低位,MC88110处理器并不支持说 明 书CN 103092562 A5/57页8单个地移位分组数据中的各元素。结果,要求单独移位分组数据类型中各元素的编程算法需要:1)分解数据,2)单独地在各元素上执行移位,及3)将结果组装成结果分组数据供进一步分组数据处理。发明内容0031 本发明描述了在处理器中加入支持典型的多媒体应用所要求的操作的分组数据指令集的方法与装置。在一个实施例中,本发明包括一个处理器及一个存储区。存储区中包含若干指令供处理器执行以操作分组数据。在这一实施例中,这些指令包括组装、分解、分组加法、分组减。
21、法、分组乘法、分组移位及分组比较。0032 处理器对接收组装指令作出响应,组装来自至少两个分组数据中的数据元素的一部分位以构成第三分组数据。作为比较,处理器对接收该分解指令作出响应,生成包含来自第一分组数据操作数的至少一个数据元素及来自第二分组数据操作数的至少一个对应数据元素的第四分组数据。0033 处理器响应接收该分组加法指令单独地将来自至少两个分组数据的对应数据元素并行加在一起。作为对比,处理器响应接收该分组减法指令单独地将来自至少两个分组数据的对应数据元素并行相减。0034 处理器响应接收分组乘法指令单独地将来自至少两个分组数据的对应数据元素并行相乘。0035 处理器响应接收分组移位指令。
22、单独地将分组数据操作数中的各数据元素并行移位所指示的计数值。0036 处理器响应接收分组比较指令按照指示的关系单独地将来自至少两个分组数据的对应数据元素并行比较,并作为结果将一个分组掩码存储在第一寄存器中。分组掩码至少包含第一掩码元素与第二掩码元素。第一掩码元素中的各位表示比较一组对应数据元素的结果,而第二掩码元素中的各位表示第二组数据元素的比较结果。附图说明0037 本发明是在附图中用示例而非限制方式说明的。相同的参照指示相同的元素。0038 图1说明按照本发明的一个实施例的示例性计算机系统。0039 图2说明按照本发明的一个实施例的处理器的寄存器文件。0040 图3为说明按照本发明的一个实。
23、施例的处理器用来处理数据的通用步骤的流程图。0041 图4说明按照本发明的一个实施例的分组数据类型。0042 图5a表示按照本发明的一个实施例的寄存器中分组数据。0043 图5b表示按照本发明的一个实施例的寄存器中分组数据。0044 图5c表示按照本发明的一个实施例的寄存器中分组数据。0045 图6a表示按照本发明的一个实施例指示分组数据的使用的控制信号格式。0046 图6b说明按照本发明的一个实施例的指示分组数据的使用的第二控制信号格式。0047 分组加法/减法说 明 书CN 103092562 A6/57页90048 图7a说明按照本发明的一个实施例执行分组加法的方法。0049 图7b说明。
24、按照本发明的一个实施例执行分组减法的方法。0050 图8说明按照本发明的一个实施例在分组数据的各个位上执行分组加法与分组减法的电路。0051 图9说明按照本发明的一个实施例在分组字节数据上执行分组加法与分组减法的电路。0052 图10为按照本发明的一个实施例在分组字数据上执行分组加法与分组减法的电路的逻辑视图。0053 图11为按照本发明的一个实施例在分组双字数据上执行分组加法与分组减法的电路的逻辑视图。0054 分组乘法0055 图12为说明按照本发明的一个实施例在分组数据上执行分组乘法运算的方法的流程图。0056 图13说明按照本发明的一个实施例执行分组乘法的电路。0057 乘-加/减00。
25、58 图14为说明按照本发明的一个实施例在分组数据上执行乘-加与乘-减运算的方法的流程图。0059 图15说明按照本发明的一个实施例在分组数据上执行乘-加与/或乘-减运算的电路。0060 分组移位0061 图16为说明按照本发明的一个实施例在分组数据上执行分组移位操作的方法的流程图。0062 图17说明按照本发明的一个实施例在分组数据的各个字节上执行分组移位的电路。0063 组装0064 图18为说明按照本发明的一个实施例在分组数据上执行组装操作的方法的流程图。0065 图19a说明按照本发明的一个实施例在分组字节数据上执行组装操作的电路。0066 图19b说明按照本发明的一个实施例在分组字数。
26、据上执行组装操作的电路。0067 分解0068 图20为说明按照本发明的一个实施例在分组数据上执行分解操作的方法的流程图。0069 图21说明按照本发明的一个实施例在分组数据上执行分解操作的电路。0070 个数计数0071 图22为说明按照本发明的一个实施例在分组数据上执行个数计数操作的方法的流程图。0072 图23为说明按照本发明的一个实施例在分组数据的一个数据元素上执行个数计数操作及为结果分组数据生成单一结果数据元素的方法的流程图。0073 图24说明按照本发明的一个实施例在具有四个字数据元素的分组数据上执行个说 明 书CN 103092562 A7/57页10数计数操作的电路。0074 。
27、图25说明按照本发明的一个实施例在分组数据的一个字数据元素上执行个数计数操作的详细电路。0075 分组逻辑运算。0076 图26为说明按照本发明的一个实施例在分组数据上执行若干逻辑运算的方法的流程图。0077 图27说明按照本发明的一个实施例在分组数据上执行逻辑运算的电路。0078 分组比较0079 图28为说明按照本发明的一个实施例在分组数据上执行分组比较操作的方法的流程图。0080 图29说明按照本发明的一个实施例的分组数据的单个字节上执行分组比较操作的电路。具体实施方式0081 本申请描述在处理器中包括支持典型的多媒体应用所要求的分组数据上的操作的指令集的方法与装置。在下面的描述中,陈述。
28、了许多特定细节以提供对本发明的全面理解。然而,应理解本发明可以不用这些特定细节实现。在其它实例中,为了避免使本发明不必要地冲淡,不详细示出众所周知的电路、结构与技术。0082 定义0083 为了提供理解本发明的实施例的描述的基础,提出以下定义。0084 位X至位Y;0085 定义二进制数的子字段。例如,字节001110102(以基2表示)的位6至位0表示子字段1110102。二进制数后面的2表示基2。因此,10002等于810,而F16等于1510。0086 RX:为寄存器。寄存器为能存储与提供数据的任何器件。寄存器的进一步功能在下面描述。寄存器不是处理器组件的必要部件。0087 SRC1,S。
29、RC2与DEST:0088 标识存储区(诸如存储器地址、寄存器等)0089 Source1-i与Result1-i:表示数据0090 计算机系统0091 图1说明按照本发明的一个实施例的示范性计算机系统100。计算机系统100包括用于传递信息的总线101或其它通信硬件与软件,及用于处理信息的与总线101耦合的处理器109。处理器109表示包含CISC(复杂指令集计算)或RISC(精减指令集计算)类型体系结构在内的任何类型体系结构的中央处理单元。计算机系统100还包括耦合在总线101上用于存储信息及要由处理器109执行的指令的随机存取存储器(RAM)或其它动态存储设备(称作主存储器104)。在处理器109执行指令期间,主存储器104也可用来存储临时变量或其它中间信息。计算机系统100还包括耦合在总线101上用于存储静态信息及处理器109的指令的只读存储器(ROM)106与/或其它静态存储设备。数据存储设备107耦合在总线101上用于存储信息与指令。0092 图1还示出处理器109包括执行单元130、寄存器文件150、高速缓冲存储器160、说 明 书CN 103092562 A10。