CN1300675C - 在寄存器中使用硬件辅助功能处理多个任意规模数据元素的系统和方法 - Google Patents

在寄存器中使用硬件辅助功能处理多个任意规模数据元素的系统和方法 Download PDF

Info

Publication number
CN1300675C
CN1300675C CNB200410038686XA CN200410038686A CN1300675C CN 1300675 C CN1300675 C CN 1300675C CN B200410038686X A CNB200410038686X A CN B200410038686XA CN 200410038686 A CN200410038686 A CN 200410038686A CN 1300675 C CN1300675 C CN 1300675C
Authority
CN
China
Prior art keywords
register
data
data element
segmentation
independently
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 - Fee Related
Application number
CNB200410038686XA
Other languages
English (en)
Other versions
CN1573685A (zh
Inventor
迈克尔·T·布拉迪
詹妮弗·Q·特拉勒维奇
琼·L·米切尔
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1573685A publication Critical patent/CN1573685A/zh
Application granted granted Critical
Publication of CN1300675C publication Critical patent/CN1300675C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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
    • 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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30112Register structure comprising data of variable length

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

公开了在寄存器中处理多个任意规模数据元素所用的一种系统和方法。本发明的一种方法包括以下步骤:产生一个屏蔽寄存器,它为一个寄存器定义一组任意规模的片段;在一个分段的数据寄存器中,按照屏蔽寄存器排列,存储多个任意规模的数据元素,其中任意规模的数据元素经过了符号扩展;响应一条机器指令,对分段的数据寄存器中的每个数据元素同时进行运算,以产生一组结果数据元素,其中结果数据元素彼此相关;以及压缩恢复结果数据元素,以提供相互独立的多个任意规模的结果。

Description

在寄存器中使用硬件辅助功能 处理多个任意规模数据元素的系统和方法
技术领域
一般说来,本发明涉及在一个计算机寄存器中处理多个数据元素,更确切地说,涉及一种系统和方法,使用一个屏蔽寄存器和若干硬件辅助指令,同时处理任意规模的多个数据元素。
背景技术
计算机处理器的功能在于,按照一个计算机程序提供的若干指令,通过多种寄存器来处理数据元素。寄存器的容量通常是二的幂。例如,一个寄存器的容量可能是8位,它将能够在单一的处理周期中,处理一个最多有八位的数据元素。举例来说,一个8位的寄存器能够在单一周期中,处理一个4位数据元素。当然,典型情况下寄存器的规模大于8位,即寄存器的容量可以是16位、或32位、或64位等等。寄存器承担的运算类型,以非穷尽的、说明性的实例来说,包括以一个常数相乘、相加、相减、逻辑左移、逻辑右移、AND和OR运算。
数据元素经过处理之后,可以把它们发送到另一个寄存器以便进一步处理,或者把它们存储或输出。例如在打印机应用中,一个服务器微处理器按照一个计算机程序,通过其多种寄存器处理输入数据流,而且它可能以所谓的JPEG格式,向一个打印机处理器输出压缩后影像数据的一个数据流,后者再对该数据进行适当的运算,以便指示一个打印机装置如何打印该影像。
处理器本身以机器语言的形式执行指令,它们是低级指令,涉及通过哪些寄存器处理哪些数据元素。不过,大多数软件是以高级编程代码比如C写成的,其优点是人可读,以及使用比较简短、编写快速的命令,体现相对复杂的处理运算。一个编译器接收高级编程代码,在许多选择中决定把它映射到汇编语言的最佳方式,把映射结果传送到一个汇编器,汇编器再把汇编语言映射为处理器可读的所谓的机器语言。有时,一个程序员可能选择直接以一种低级语言来编写比其它部分执行得更加频繁的程序。虽然编写更加麻烦,但是这些所谓的“手工制作的”代码部分无须由一个高级语言编译器翻译,因此能够以更加优化的方式编写,以便在运行时实现更快的处理。
无论处理器从一个编译器还是直接从一个手工制作的程序接收机器代码,本发明都得出了关键的观察结果:往往会发生浪费寄存器空间的情况。更具体地说,如上所述一个寄存器可能不会在每一个处理周期中都使用其全部容量。例如,当一个16位容量的寄存器用于处理4位的数据元素时,每个周期就浪费了寄存器的12位。这就减慢了处理时间,产生了附加的数据高速缓存需求(以及伴随的高速缓存缺失问题),通常不能充分利用处理器的能力。所以本发明认识到,有助于改善处理器性能的潜力在于,在单一的周期中在一个寄存器内处理多个数据元素。
本发明进一步理解,对于以上问题,实施一个解决方案并非微不足道,尤其是当正的和负的(即“带符号的”)数值都要处理时,因为在处理期间超出寄存器容量和/或数据被破坏的可能性都存在。换言之,正如本发明所用的,一个“带符号的”数据元素是一个不限制为非负的元素,并且需要在单一的处理周期中,在单一的寄存器内处理多个带符号的数据元素。不仅如此,本发明还理解,为了稳健,需要做到不是由制造商来限制在处理器中每个寄存器只能接受预定位数的多个数据元素,而是程序员能够灵活地任意定义寄存器能够接受的数据元素位数,以满足具体应用程序可能发出的指令。
2000年9月29日提交的、标题为SYSTEM AND METHOD FORENABLING MULTIPLE SIGNED INDEPENDENT DATA ELEMENTSPER REGISTER的、序列号为09/675779的美国专利申请书介绍了涉及以上问题的一个软件解决方案,其内容在此引用作为参考。这个解决方案允许多个带符号的、独立的数据元素压缩到一个寄存器中。该寄存器以标准的运算运行,还带有若干特定情况下的某些附加运算。然后再把该数据“压缩恢复”,并返回其2的补码形式。术语“压缩”表明该数据可能依赖于其右面的元素。不过,已介绍的方法还有多种增强的可能性。
首先,压缩和压缩恢复过程构成了开销,对于较小的循环规模,在某些情况下这种开销是不可接受的。其次,某些指令需要附加的运算以确保数据没有改变。还有,处理器没有能够设置多个错误旗标或者说条件码的机制。例如,假若“压缩”在一个寄存器中的若干元素超出了已经分配给它们的空间精度,就没有设定的错误旗标或者说条件码。程序员负责确保数据不从其设计的精度溢出。
所以,对于上述问题需要一个更加稳健的解决方案。
发明内容
本发明针对上述问题以及其它问题,提供了一种系统和方法,使用一个屏蔽寄存器和若干硬件辅助功能,同时处理任意规模的多个数据元素。在第一方面,本发明提供了一种方法,在一个寄存器中处理多个任意规模的数据元素,该方法包括:产生一个屏蔽寄存器,它定义了一个寄存器的一组任意规模的片段;提供一个分段数据寄存器,包含按照屏蔽寄存器分段安排的多个任意规模的数据元素;以及响应一条机器指令,在分段数据寄存器内对每个数据元素同时运算,其中,提供包含多个任意规模数据元素的分段数据寄存器的步骤包括以下步骤:提供多个独立的源寄存器,每一个都包含一个独立的数据值;提供一条归并机器指令,用于把若干独立的数据值归并到分段的数据寄存器中;执行归并机器指令,把若干独立的数据值归并到分段的数据寄存器中。
在第二方面,本发明提供了一个处理单元,用于在单一的寄存器中对多个带符号的独立数据元素进行运算,该处理单元包含以下硬件辅助功能装置:归并装置,用于把来自一个源寄存器的一个数据值归并到一个能够保持多个分段数据元素的第一分段寄存器中,其中这些分段数据元素按照一个屏蔽寄存器,以任意规模的片段的形式排列;压缩装置,用于对每个分段的数据元素进行符号扩展,并把结果存储在一个第二分段寄存器中,其中这些分段的数据元素能够同时运算,以提供一组彼此相关的结果分段数据元素;压缩恢复装置,用于把结果数据元素组中的每个元素压缩恢复到第一分段寄存器中,使得结果数据元素组中的元素相互独立;分离装置,用于把数据元素从第一分段寄存器传递到多个独立的寄存器中。
在第三方面,本发明提供了一种方法,在一个寄存器中处理多个任意规模的数据元素,该方法包括:产生一个屏蔽寄存器,它定义了一个寄存器的一组任意规模的片段;按照屏蔽寄存器的安排,在一个分段数据寄存器中存储多个任意规模的数据元素,其特征在于这些任意规模的数据元素经过了符号扩展;响应一条机器指令,在分段数据寄存器内对每个数据元素同时运算以产生一组结果数据元素,其特征在于结果数据元素相互依赖;以及压缩恢复结果数据元素,以提供相互独立的多个任意规模的结果。
所以,本发明的一个优点是采用能够增加到标准算术逻辑单元(ALU)的硬件辅助功能。换言之,这种解决方案配备了特殊的硬件操作,以便在单一的时钟周期内,执行若干功能,比如“压缩”、“压缩恢复”、右移n位等,在一个标准的ALU中这些功能需要多个时钟周期。这种解决方案也可能配备了一种特殊的错误和条件状态位寄存器,标准的ALU核心无须了解有关它的任何情况。采用标准ALU的一个优点在于,使用经过优化和验证的ALU组件,设计定制的硬件(FPGA、ASIC等)时便于实现快速布局。经过优化和验证的组件,其功能、功耗、运算速度、空间占用、峰值电流等,将是已经经过核实。
附图说明
连同附图阅读本发明之不同方面的以下详细说明,本发明的这些和其它特性将会更加易于理解,其中:
图1展示了依据本发明实施例的一个处理单元;
图2展示了实施本发明示范方法的流程图;
图3展示了依据本发明实施例的一个寄存器概要;
图4展示了依据本发明实施例的核心辅助指令之间的逻辑关系;
图5展示了依据本发明实施例的压缩指令所用的寄存器概要;
图6展示了依据本发明实施例的压缩恢复指令第一变量所用的寄存器概要;
图7展示了依据本发明实施例的算术归并指令所用的寄存器概要;
图8展示了依据本发明实施例的逻辑归并指令所用的寄存器概要;
图9展示了依据本发明实施例的逻辑分离指令所用的寄存器概要;
具体实施方式
现在参考附图,图1展示了实施本发明所用的一个示范性处理单元10。处理单元10包括一组标准的ALU(算术逻辑单元)功能12,比如相加、相减、相乘、OR、XOR、左移等。此外,处理单元10还包括一组硬件辅助功能(即机器指令),它们使得多个任意规模的数据元素能够在一个寄存器内同时处理。示范性的硬件辅助功能14包括一组核心辅助功能15和一组补充辅助功能17。核心辅助功能15包括:压缩、压缩恢复、算术归并、算术分离、逻辑归并和逻辑分离。补充辅助功能17包括:逻辑右移和算术右移。处理单元10还包括若干源寄存器Xj 16、一个屏蔽寄存器18、至少一个第一分段寄存器类型E 20以及至少一个第二分段寄存器类型D 22。每个源寄存器18都能够保持若干独立的数据值。第一分段寄存器类型E 20用于保持相互独立、未进行符号扩展的多个数据元素。第二分段寄存器类型D 22用于保持已进行符号扩展、可能彼此相关的多个数据元素。还包括一个条件码状态寄存器(CCSR)23,用于保持溢出、进位等状态的测试位。上述寄存器中的每一个,都可以使用通用寄存器GPR来实现,所以标准的ALU核心不必知晓它们;即为了容纳它们不必改变标准的ALU设计。下面介绍硬件辅助功能14以及寄存器16、18、20、22和23的操作细节。
现在参考图2,其中的流程图展示了实施本发明一般概念的一种示范性方法。首先,在步骤S1中,把来自一个或多个源寄存器Xj的若干数据值,归并和压缩在一个或多个分段寄存器中。在这个步骤中,如果需要,就把数据值连接(即归并)在一起,并且进行符号扩展(即压缩)。然后,在步骤S2中,对于分段数据寄存器中的数据元素,同时进行一个标准的ALU运算(如相加),结果存储在一个分段寄存器中。在分段之间进位、移位等运算之后,结果数据元素可能彼此相关,如同下面进一步的介绍。下一步,在步骤S3中,把结果数据元素“压缩恢复”,以消除结果数据元素之间的任何关联性。最后,在步骤S4中,把结果数据元素分离回到独立的寄存器中。
例如,假设源寄存器X1、X2和X3包含以下已进行符号扩展的数据值{1,-8,-4},每个都具有任意的精度:
X1(1):000001(6位)
X2(-8):11111000(8位)
X3(-4):1111111100(10位)。然后,把来自每个源寄存器的数据值归并和压缩到单一的寄存器D1中,它就包含三个数据元素或者说片段,形式如下:
D1:000000 11110111 1111111100。假设第二组源寄存器X4、X5、X6包含符号扩展后的数据值{-2,-5,4}(与X1、X2、X3的精度类似),归并和压缩到寄存器D2后的形式如下:
D2:111101 11111011 0000000100。
下一步,执行一个标准的ALU运算,在这种情况下是一个“相加”运算,在D3中产生以下结果:
应当理解,展示相加运算仅仅是为了示范的目的,也可以使用其它的标准ALU运算,比如相减、标量乘等。这时,结果数据元素d1:111110、d2:11110011和d3:0000000000需要进行压缩恢复,以调整由任何进位、借位等引起的关联性。按照以下步骤来做到这一点:(1)取出最低有效数据元素d1的符号位,加到次低有效数据元素d2上,(2)取出d2的符号位,加到d3上:
Figure C20041003868600111
得出数据元素e1=111111,e2=11110011,e3=0000000000或者说{-1,-13,0}。
参考图2所介绍的方法,是使用图1中所介绍的硬件辅助指令和寄存器来实施的。下面将参考图3至图9,介绍这些指令。为了便于解释,将假设在定点的M位通用寄存器(GPR)中执行所介绍的指令。
一开始,或者由编译器,或者由用户把一个GPR指定为屏蔽寄存器。屏蔽寄存器用于为一个寄存器定义一组任意规模的片段,每个片段能够保持一个任意规模的数据元素。一开始,可以把屏蔽寄存器设立为一个默认值0,最高有效位(MSB)设定为1,表示在该寄存器中仅有一个元素或者片段。设定为“1”的每一位都将表示一个片段精度的最左位。紧邻这一位的向左一位将表示下一个片段的LSB(最低有效位)。这些1描绘了不同片段之间的分界,从而定义了每个片段的精度,如图3所示。在图3中也显示了pj表示第j个片段的精度,包括所带符号位和保护位(在上述参考资料SYSTEM AND METHOD FOR ENABLING MULTIPLESIGNED INDEPENDENT DATA ELEMENTS PER REGISTER中,详细讲解了保护位),片段的总数为N。
寄存器Xj表示多个独立的源寄存器,每个都包含一个独特的数据值,第j个寄存器称为Xj。
如上所述,屏蔽寄存器为若干寄存器定义了任意规模的片段,这些寄存器用于保持和处理多个数据元素。在图3中描述的示范性实施例中,实施了两种类型分段寄存器,E和D。寄存器类型E包括一个分段的数据寄存器,用于保持多个数据元素e0、e1...eN-1,它们相互独立,并且未进行符号扩展。寄存器类型D包括一个分段的数据寄存器,用于保持多个数据元素d0、d1...dN-1,它们已进行符号扩展,并且可能彼此相关。根据实施的运算类型,可以使用E型寄存器,也可以使用D型寄存器,也可以兼而有之。
对于带有若干元素ej的一个寄存器E,独立元素的定义如下:令q和j为区间[0,N-1]上的整数,元素eq在其中变化,如果q≠j,那么
Figure C20041003868600121
或者如果q=j,那么
Figure C20041003868600122
换言之,对于所有的j,ej恰恰是pj位对应整数之2的补码表达。对于一个寄存器D,相关元素dj的定义如下:元素dq变化时,如果q>j,那么
Figure C20041003868600123
dj是对应的ej减1或0(取决于dj-1)之2的补码表达。注意,可能会有一个保持着相关元素的寄存器D满足一个独立寄存器的条件。不过,所有的元素必须为正,而且符合前面确定的精度。
令sj为dj的符号位(在2的补码表达中,为了方便起见这里把MSB称为“符号位”),0为正,1为负。
dj=ej-sj-1
图4展示了六条核心辅助指令15、一组源寄存器Xj、一个E型寄存器和一个D型寄存器之间的一组关系。一般说来,源寄存器Xj使用“逻辑归并”(MERL)和“逻辑分离”(SPL)机器指令,与E型寄存器互动,使用“算术归并”(MERA)和“算术分离”(SPA)机器指令,与D型寄存器互动。逻辑指令MERL和SPL通常涉及的运算,面对的是未进行符号扩展的独立数据元素,而算术指令MERA和SPA涉及的运算,面对的是符号扩展后的相关数据元素。“压缩”(PCK)和“压缩恢复”(UPCK)机器指令提供的运算,用于相关的和独立的数据元素之间的来回转换。
如上所述,为了实施本发明提供了一组硬件辅助功能14。下面将详细介绍这些功能。除非另外声明,屏蔽寄存器或者“掩模”都是一个恰当掩模,对于压缩恢复寄存器时对应的每个元素具有适当的精度。U表示一个未知的二进制数值,或者是0,或者是1,与一个“X”或“无所谓”相对,sj为第j个元素的符号位。符号扩展功能由Φ( )给出。以下给出一条任意指令的一条示范指令句法,注意一个不同的标准ALU可能会改变自变量的次序和精确格式:INSTR Mask,Source Register(s),TargetRegister(s),Miscellaneous Register(s)这一条缩写为(Source Register(s)→Target Register(s))。
1.压缩(E→D)
指令句法:PCK Mask,E,D,Tmp
D为目标寄存器,其元素彼此相关。E为源寄存器,对其独立的元素进行压缩。Tmp为一个临时寄存器。Tmp的用途对每个元素ej进行符号调整。如上所述,Mask(掩模)包含的信息定义了E和D中每个数据元素的精度。图5展示了压缩指令的寄存器概要,它显示了对寄存器E中的数据元素进行符号扩展并存储在寄存器D中。该指令所用的逻辑如下:
D=0
for j=0 to N-1
Tmp=ej
Tmp=Φ(Tmp)
D=D+Tmp
End
注意,该循环解并不意味着这些元素需要以任何特定的次序来压缩。
2A.压缩恢复(D→E)-第一变量
指令句法:UPCK Mask,D,E
D为源寄存器,其元素彼此相关。E为目标寄存器,带有压缩恢复的、独立的元素。Mask(掩模)寄存器中包含D的精度信息。压缩恢复指令把dj转换为ej。图6展示了压缩恢复指令第一变量所用的寄存器概要,把寄存器D中的符号扩展后的数据元素转换到寄存器E中。这可以由以下方程来完成:
E=D+(D AND Mask)(其中AND为按位逻辑AND运算)
ej=dj+sj-1
注意,这种压缩恢复方法假设,符号位右面的一位包含压缩恢复前符号位同样的信息。
2B.压缩恢复(D→E)-第二变量
指令句法:UPCK Mask,D,E
在这种情况下D为源寄存器,其元素彼此相关。在这种情况下E为目标寄存器,带有压缩恢复的、独立的元素。每个元素的符号位加到左面元素的最低有效位上。从右到左这样做,使符号位在这些元素的其余部分“涟漪”通过,再重复此过程。令mj表示一个寄存器,其中全都充满了0,仅有在第j个元素之符号位的位置是1。更准确地说,它表示mj=2^(p0+p1+...+pj)-1。以下伪码说明了如何“压缩恢复”一个寄存器而保存每个元素的符号位。
E=D
for j=0 to N-1
E=((mj AND E)<<1)+E
End
注意压缩恢复指令2A和2B之间的折衷。指令2A最快,但是对于每个元素还需要一个另外的保护位。指令2B需要的复杂程度更高,不过它不需要一个“额外的”保护位。注意,它不一定更慢——该过程可以并行或使用流水线等技术——但是它更复杂。
3.算术归并(Xj→D)
指令句法:MERA Mask,Xj,D
在这种情况下Xj为源寄存器,其元素是独立的。在这种情况下D为目标寄存器,其元素彼此相关。图7展示了算术归并指令的寄存器概要。实施方程如下:
E=X0+∑j(Xj<<p0+...+pj-1)
4.算术分离(D→Xj)
指令句法:SPA Mask,D,Xj,Tmp
在这种情况下D为源寄存器,其元素彼此相关。在这种情况下Xj为目标寄存器,其元素是独立的。在这种情况下Tmp是一个临时寄存器,其元素是独立的。算术分离指令本质上是以下形式的两步过程:
D→E
E→Xj
第一步利用UPCK命令不难完成。然后第二步可以利用SPL命令来完成,如图4所示。
UPCK Mask,D,Tmp
SPL Mask,Tmp,Xj
5.逻辑归并(Xj→E)
指令句法:MERL Mask,Xj,E
在这种情况下Xj为源寄存器,其元素是独立的。在这种情况下E为目标寄存器,其元素是独立的。图8显示了逻辑归并指令的寄存器概要。实施这条指令的逻辑如下:
for(j>=1),let Pj=p0+...+pj-1
      E=0
for j=N-1 to 1
      E=E(OR(Xj AND(2^(pj-1)-1))<<pj-1
end
E=E OR(X0 AND(2^(p0-1)-1))
注意,AND运算所用的2^(pj-1)-1项仅仅是截取了Xj的底部pj位。
6.逻辑分离(E→Xj)
指令句法:SPL Mask,E,Xj
在这种情况下E为源寄存器,其元素是独立的。在这种情况下Xj为目标寄存器,其元素是独立的。图9显示了逻辑分离指令的寄存器概要。实施所用的逻辑如下:
X0=e0
X1=e1>>p0
Xj=ej>>(p0+...+pj-1)for N-1≥j≥2
以上介绍的六条指令是一组示范性的核心辅助指令15,它们使得本发明的基本原理得以实施。使用这些核心辅助指令15,使得某些特定的核心ALU运算实施时“无须”采取进一步的操作。运算实例包括相加;相减;以一个标量值相乘;逻辑/算术左移;按位AND、OR和XOR;以及判断相等。其它的运算可能需要特殊的处理,以应付数据的压缩性质,或者采用软件,或者采用硬件。在这些情况下,可以提供补充机器指令17。例如,下面介绍的逻辑右移和算术右移是此类操作的两个实例,使用下面介绍的逻辑,就能够在一个分段的寄存器上实施这些操作。
7.逻辑右移
指令句法:SRL Mask,E,Shift
E为源寄存器,其元素是独立的。“Shift”为位移量。逻辑如下:
for i=1 to Shift
E=E>>1
E=E AND~Mask
End
8.算术右移
指令句法:SRA Mask,D,Shift
D为源寄存器,其元素是独立的。“Shift”为位移量。以下功能说明展示了SRA所需的符号扩展:
for i=1 to Shift
Tmp=D AND Mask
D=D>>1
D=(D AND~Mask)OR Tmp
End
注意,除了处理数据以外,为了不同的目的,可能还需要本发明操作旗标。在一个典型的ALU中出现的标准条件寄存器,只能跟踪整个寄存器之每种状态位中的一个。这并不能提供与条件相关的重要信息,比如压缩时元素间的溢出、符号、零,等等。所以,对于每个片段,可以采用一个分别的测试寄存器来实施状态位跟踪。
与元素符号和零等相关联的状态位,只须在每次操作之后测试每个元素,即可实现。确切地说,
Sign=Mask AND E
Zeroj=(ej==0)
以如下方式,,在压缩时测试每个元素,就能够探测压缩时的溢出(由进位输出产生的差异):
D=0
for j=0 to N-1
Tmp=ej
Tmp=Φ(Tmp)
D=D+Tmp
Overflowj=ζ(Tmp)
End
其中如果在dj的左面的位中有若干1和若干0,那么ζ(Tmp)=1,因为只有若干1或者若干0的出现才表示符号扩展。另一方面,其它的条件位比如任何一个元素的进位输出,需要另外的逻辑,如果要确定进位的话。
对于压缩的寄存器格式,给定了一个条件码寄存器(CCSR)(可以在一个标准的GPR中实现)之后,可以在ALU中增加另外的指令,比如一种比较(如“TEST”),它根据每个元素与比较值的关系,独立地设置分别的状态位。
应当理解,虽然本发明的一般原理是在硬件中实施的,但是本文介绍的某些系统的特性、功能、机制、方法和模块,可以在硬件、软件或者硬件和软件的结合中实施。它们可以由任何类型的计算机系统或其它装置实施,只要适于实现本文介绍的方法。一种典型的硬件和软件的结合是带有计算机程序的通用计算机系统,在加载和执行该程序时,控制计算机系统使之执行本文介绍的方法。不然,也可以采用一台专用计算机,它包含专用的硬件,以便执行本发明的一项或多项功能任务。本发明也可以嵌入在一种计算机程序产品中,它包括能够实施本文介绍之方法和功能的全部特性,当加载到计算机系统中时,就能够执行这些方法和功能。计算机程序、软件程序、程序、程序产品或者软件,在此处的上下文中,表示一组指令中以任何语言写成的任何表达式、代码或符号,意在使具有信息处理能力的系统执行一种具体的功能,或者是直接执行,或者是在(a)转换到另一种语言、代码或符号;和/或(b)以不同的材料形式再现这两个步骤中任何一个或两个之后再执行。
对本发明优选实施例的以上说明,只是为了展示和说明的目的。它们并非试图面面俱到,也不将本发明限制到公开的严格形式,在以上教导的指引下,显然有可能作出许多修改和变化。对于本领域的技术人员,这些明显的修改和变化要包括在本发明的范围之内,正如附带的权利要求书的定义。

Claims (18)

1.一种在一个寄存器中处理多个任意规模数据元素的方法,包括:
创建一个屏蔽寄存器,它为一个寄存器定义一组任意规模的片段;
提供一个分段的数据寄存器,它包含多个按照屏蔽寄存器以片段形式排列的任意规模的数据元素;以及
响应一条机器指令,对分段的数据寄存器中的每个数据元素同时进行运算,
特征在于,提供包含多个任意规模数据元素的分段数据寄存器的步骤包括以下步骤:
提供多个独立的源寄存器,每一个都包含一个独立的数据值;
提供一条归并机器指令,用于把若干独立的数据值归并到分段的数据寄存器中;以及
执行归并机器指令,把若干独立的数据值归并到分段的数据寄存器中。
2.根据权利要求1的方法,其特征在于,归并机器指令使分段的数据寄存器中的多个任意规模的数据元素相互独立并且不进行符号扩展。
3.根据权利要求1的方法,其特征在于,归并机器指令使数据寄存器中的多个任意规模的数据元素进行符号扩展。
4.根据权利要求1的方法,其特征在于,对分段的数据寄存器中的每个数据元素同时进行运算的步骤包括一种运算,选自包括下列运算的组:相加、相减、标量乘、左移、AND、OR和XOR。
5.根据权利要求1的方法,其特征在于,对于屏蔽寄存器定义的每个片段,屏蔽寄存器包括最左位上的值1和其余位上的0。
6.根据权利要求1的方法,进一步包括以下步骤:按照屏蔽寄存器,把分段数据寄存器中的数据元素分离成多个独立存储的数据元素。
7.一种处理单元,用于在单一的寄存器中对多个带符号的独立数据元素进行运算,该处理单元包含以下硬件辅助功能装置:
归并装置,用于把来自一个源寄存器的一个数据值归并到一个能够保持多个分段数据元素的第一分段寄存器中,其中这些分段数据元素按照一个屏蔽寄存器,以任意规模的片段的形式排列;
压缩装置,用于对每个分段的数据元素进行符号扩展,并把结果存储在一个第二分段寄存器中,其中这些分段的数据元素能够同时运算,以提供一组彼此相关的结果分段数据元素;
压缩恢复装置,用于把结果数据元素组中的每个元素压缩恢复到第一分段寄存器中,使得结果数据元素组中的元素相互独立;以及
分离装置,用于把数据元素从第一分段寄存器传递到多个独立的寄存器中。
8.根据权利要求7的处理单元,进一步包括:
逻辑右移装置;以及
算术右移装置。
9.根据权利要求7的处理单元,进一步包括测试装置,用于测试分段寄存器中每个片段的数位。
10.根据权利要求9的处理单元,其中,测试装置测试一次溢出。
11.根据权利要求9的处理单元,其中,测试装置测试一次进位。
12.一种在一个寄存器中处理多个任意规模数据元素的方法,包括:
创建一个屏蔽寄存器,它为一个寄存器定义一组任意规模的片段;
在一个分段的数据寄存器中,存储多个按照屏蔽寄存器排列的任意规模的数据元素,其中任意规模的数据元素经过了符号扩展;
响应一条机器指令,对分段的数据寄存器中的每个数据元素同时进行运算,以产生一组结果数据元素,其中结果数据元素彼此相关;以及
压缩恢复结果数据元素,以提供相互独立的多个任意规模的结果。
13根据权利要求12的方法,其特征在于,创建屏蔽寄存器的步骤包括以下步骤:
配置一个通用寄存器,每个片段的最左位为1,其余位为0。
14.根据权利要求12的方法,其特征在于,压缩恢复结果数据元素的步骤包括以下步骤:
把一个第一数据元素的符号位加到相邻的第二数据元素的最低有效位上;以及
把第二数据元素的符号位加到相邻的第三数据元素的最低有效位上。
15.根据权利要求14的方法,进一步包括以下步骤:把第三数据元素的符号位加到相邻的第四数据元素的最低有效位上。
16.根据权利要求12的方法,其特征在于,在分段的数据寄存器中存储多个任意规模数据元素的步骤,包括以下步骤:
提供多个源寄存器,每一个都包含一个独立的数据值;以及
响应归并指令的执行,把每个独立的数据值都归并到分段的数据寄存器中。
17.根据权利要求12的方法,其特征在于,对分段的数据寄存器中的每个数据元素同时进行运算的步骤包括执行一条机器指令的步骤,该机器指令选自包括下列运算的组:相加;相减;以一个标量值相乘;逻辑左移;算术左移;按位AND、OR和XOR;以及判断相等。
18.根据权利要求12的方法,进一步包括以下步骤:响应分离指令的执行,把若干结果数据元素分离到多个独立的寄存器中。
CNB200410038686XA 2003-05-27 2004-04-27 在寄存器中使用硬件辅助功能处理多个任意规模数据元素的系统和方法 Expired - Fee Related CN1300675C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/445,563 2003-05-27
US10/445,563 US7107435B2 (en) 2003-05-27 2003-05-27 System and method for using hardware assist functions to process multiple arbitrary sized data elements in a register

Publications (2)

Publication Number Publication Date
CN1573685A CN1573685A (zh) 2005-02-02
CN1300675C true CN1300675C (zh) 2007-02-14

Family

ID=33450882

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200410038686XA Expired - Fee Related CN1300675C (zh) 2003-05-27 2004-04-27 在寄存器中使用硬件辅助功能处理多个任意规模数据元素的系统和方法

Country Status (2)

Country Link
US (1) US7107435B2 (zh)
CN (1) CN1300675C (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9086872B2 (en) 2009-06-30 2015-07-21 Intel Corporation Unpacking packed data in multiple lanes
US8504807B2 (en) 2009-12-26 2013-08-06 Intel Corporation Rotate instructions that complete execution without reading carry flag
US9733899B2 (en) * 2015-11-12 2017-08-15 Arm Limited Lane position information for processing of vector
WO2019005169A1 (en) 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MEMORY OPERATIONS READY FOR DATA

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
JPH09198231A (ja) * 1996-01-22 1997-07-31 Nec Corp 演算処理装置
US5875315A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Parallel and scalable instruction scanning unit
US6223277B1 (en) * 1997-11-21 2001-04-24 Texas Instruments Incorporated Data processing circuit with packed data structure capability
US20020124038A1 (en) * 2000-08-18 2002-09-05 Masahiro Saitoh Processor for processing variable length data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
US5875315A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Parallel and scalable instruction scanning unit
JPH09198231A (ja) * 1996-01-22 1997-07-31 Nec Corp 演算処理装置
US6223277B1 (en) * 1997-11-21 2001-04-24 Texas Instruments Incorporated Data processing circuit with packed data structure capability
US20020124038A1 (en) * 2000-08-18 2002-09-05 Masahiro Saitoh Processor for processing variable length data

Also Published As

Publication number Publication date
US7107435B2 (en) 2006-09-12
US20040243789A1 (en) 2004-12-02
CN1573685A (zh) 2005-02-02

Similar Documents

Publication Publication Date Title
CN1089460C (zh) 多指令集的数据处理
CN1088214C (zh) 用多指令集处理数据的器件和方法
US10678540B2 (en) Arithmetic operation with shift
CN1961284A (zh) 使用n位乘加操作实现不变量除数的整数除法的方法和系统
CN110235099B (zh) 用于处理输入操作数值的装置和方法
CN1624653A (zh) 使用3字节转义操作码的指令集扩展
CN1257454C (zh) 用于展开计算机程序中超级块的编译装置和方法
CN1250906A (zh) 使用组合的数据处理器系统和指令系统
CN1928809A (zh) 用于执行浮点运算的系统、设备和方法
CN1278931A (zh) 特别适于译码数字音频信号的数字信号处理器
CN1146784C (zh) 用字长短的指令实现多个寄存器的数据传送的信息处理装置
CN1967470A (zh) 处理安全消息认证控制指令
CN1300675C (zh) 在寄存器中使用硬件辅助功能处理多个任意规模数据元素的系统和方法
CN1257462C (zh) 使得能够每寄存器处理多个带符号独立数据元的装置、方法和编译器
CN105765522A (zh) 用于立即数处置和旗标处置的处理器和方法
CN1826580A (zh) 具有初步饱和检测的加法或者减法运算单元
Pyeatt et al. ARM 64-bit assembly language
US7647368B2 (en) Data processing apparatus and method for performing data processing operations on floating point data elements
CN1959630A (zh) 微处理器
CN1321276A (zh) 可配置的硬件块
CN100343799C (zh) 产生流水线微处理器的早期状态标志的装置及方法
CN1537268A (zh) 信息处理装置及信息处理方法
KR100887327B1 (ko) 다양한 정밀도에 대한 고속 부동 소수점 연산을 수행하는방법, 프로그래밍 구조 및 기록 매체
CN1195808A (zh) 算术运算系统
CN111752613A (zh) 迭代运算的处理

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070214