CN1173931A - 处理器的定制的基本操作的方法与设备 - Google Patents
处理器的定制的基本操作的方法与设备 Download PDFInfo
- Publication number
- CN1173931A CN1173931A CN96191245.6A CN96191245A CN1173931A CN 1173931 A CN1173931 A CN 1173931A CN 96191245 A CN96191245 A CN 96191245A CN 1173931 A CN1173931 A CN 1173931A
- Authority
- CN
- China
- Prior art keywords
- data
- operand
- group
- input
- input data
- 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
Links
- 238000000034 method Methods 0.000 title description 17
- 238000012545 processing Methods 0.000 claims abstract description 27
- 238000012856 packing Methods 0.000 claims description 21
- 238000010008 shearing Methods 0.000 claims description 18
- 238000000151 deposition Methods 0.000 claims description 4
- 239000004065 semiconductor Substances 0.000 claims 2
- 238000013500 data storage Methods 0.000 claims 1
- 230000006870 function Effects 0.000 abstract description 52
- 230000008901 benefit Effects 0.000 abstract description 13
- 101150099915 Rsrc2 gene Proteins 0.000 description 73
- 239000011159 matrix material Substances 0.000 description 15
- 230000005236 sound signal Effects 0.000 description 5
- 238000011068 loading method Methods 0.000 description 4
- 230000017105 transposition Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000009833 condensation Methods 0.000 description 1
- 230000005494 condensation Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7828—Architectures of general purpose stored program computers comprising a single central processing unit without memory
- G06F15/7832—Architectures of general purpose stored program computers comprising a single central processing unit without memory on one IC chip (single chip microprocessors)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Executing Machine-Instructions (AREA)
Abstract
定制操作可用于执行包括多媒体功能在内等功能的处理器系统。这些定制操作在保留专用嵌入方案的成本低廉芯片数少等优点以及通用处理器可编程性等优点不变的同时,提高系统(诸如PC系统)提供实时多媒体功能的能力。这些定制操作所作用的计算机系统,提供带操作数的输入数据,对操作数进行操作,并将结果送到目的寄存器。所执行的操作包括包含剪切或饱和操作在内的视频与音频信号处理。本发明也以来自输入寄存器(rscr)的选定操作数为运算对象进行并行操作并将操作结果存入目的寄存器(rdes)。
Description
引用相关申请文件
本发明要求1995年9月1日提交的美国临时申请60/003,140号和1995年9月25日提交的美国临时申请60/004,642号的优先权。
本说明书中为讨论VLIM处理系统引用了如下专利申请:
5,103,311号美国专利:数据处理模块及包括该模块的视频处理系统;
5,450,556号美国专利:应用由分支控制单元生成的路径数据阻止非正确路径上操作的VLIW处理器;
5,313,551号美国专利:软件控制下的多端口存储器旁路;
1992年12月29日申请的序列号07/998,080的美国专利申请:指令发布槽位数少于功能单元的VLIW处理器;
1990年10月5日申请的序列号07/594,534的美国专利申请:包括一存储电路和一组功能单元的处理器;
1994年12月16日申请的序列号08/358,127的美国专利申请:数据处理系统中的例外恢复(exception recovery);以及
同时提交的申请:应用剪切功能的用于多媒体应用的定制操作的方法与设备;应用多操作数进行单一指令控制下并行处理的定制操作的方法与设备。
发明背景
1、发明领域
本发明涉及应用于执行包括多媒体功能等功能的处理器系统—诸如具有处理高质量视频和音频信号能力、执行专业高级功能操作的系统一的定制操作。
2、相关技术描述
系统可使用一个通用CPU和附加单元来作为多功能PC增强器。一般来说,PC必须处理有多重标准的视频和音频信号流,用户还要求尽可能有解压和压缩这两种功能。尽管PC机中使用的CPU芯片功能正朝着能解压低分辨率实时视频信号的方向发展,它们还不可能对视频信号进行高质量的解压和压缩。此外,用户还要求系统提供生动的视频和音频信号,同时又不降低系统的响应灵敏度。
无论是通用应用软件还是嵌入基于微处理器的应用软件,人们都希望用高级语言进行程序设计。为了有效地支持优化编译器和简单化的编程模型,要求微处理器的体系结构具有一定的特点,例如有较大的线性地址空间、通用寄存器以及直接支持使用线性地址指针的寄存器对寄存器操作。近来微处理器体系结构普遍采用32位线性地址、32位寄存器和32位整数操作,而64位及128位的处理器系统正处于研究开发之中。
不过,对于许多算法中进行的数据处理来说,如果数据运算占用全部位数(例如,32位系统中的32位),是对昂贵的硅片资源的一种浪费。有些重要的多媒体应用(如MPEG视频信号流的解压缩),对长度8位的数据项的处理要花费相当长的运算时间。用32、64、128…位类型的运算方式来处理长度短的数据项,不能发挥系统应用的32、64、128…位类型的运算硬件的效率。因而,定制的操作可以同时对数据项进行操作,只要增加少许硬件花费,就能大大地改善运算的效能。
其它方法也能达到改善运算效能的类似效果,例如在每个时钟周期执行大量的传统微处理器指令。然而,所述的其它方法对于要求低成本的目标应用,一般来说成本惊人地昂贵。此外,用M位类型的运算(例如32位类型的运算)来处理长度短的N位数据项(N<M)不能发挥系统应用的M位类型的运算硬件的效率。
常规的数据信号处理(DSP)运算的逻辑计算模数值。本发明所述的剪切或饱和运算方法在数据处理生成的数据超过寄存器物理限度的信号处理应用中具有特殊的价值。按照常规,当生成的数据超过寄存器物理范围限度时,数据就被映射到有效物理范围的另一端。在进行信号处理时,这种周期性的数据映射会产生恶劣的后果。例如,应用常规方法,一组音量很低的音频信号数据可能会被映射到最高音量对应的位置上。在控制应用和视频/音频信号处理应用系统中,当控制范围或强度范围饱和时,模数值对系统是不利的。
发明概述
本发明旨在在保留专用嵌入方式的优点,即芯片成本低廉和芯片数少,以及通用处理器可再编程性等优点不变的同时,对系统(例如PC系统)进行增强以提供实时多媒体功能。在PC应用中,本发明超越了固定功能多媒体芯片的功能。
与此对应,本发明的一个目的是,以低廉的成本获得极高的多媒体性能。
本发明的另一个目的是,提高应用软件的小内核程序的处理速度。
本发明的另一个目的是,充分发挥高速缓冲存储器/存储器带宽的优点,同时又不需要过度数量的字节操作指令。
本发明的另一个目的是提供功能强大的专门操作,以改善多媒体应用软件的性能。
本发明的另一个目的是提供执行中有效地利用专门的位操作硬件的定制操作。
本发明的另一个目的是提供专用于应用系统(如多媒体应用软件)的定制操作。
本发明的另一个目的是运用能储存多个操作数的多操作数寄存器来进行单指令的控制下的并行处理。这对当前信号样本为8位或16位格式的音频和/或视频处理应用软件具有特殊的好处。
本发明的另一个目的是,利用剪切操作在被截断的范围的正确一端保存接收到的信号,如音频或视频信号。
本发明的应用范围是从如视频电话这样的低价格、单用途系统到传统个人计算机用的可重新编程的多用途插件卡。另外,本发明还可以应用于容易实行通用多媒体标准—如MPEG-1和MPEG-2的系统。此外,应用本发明能使功能强大的多用途CPU执行各种无论是开放式的还是专有的多媒体算法。
在源码级定义软件兼容性的好处是能自由地掌握成本与性能间的最佳平衡。功能强大的编译器保证程序员不需要用繁琐的汇编语言进行程序设计。本发明允许程序员从源码中选用功能强大的低级操作,用熟悉的函数调用文法调用数字信号处理那样的操作。
计算机系统包括,1、输入寄存器,每个均用于接收输入数据,每个输入数据含有M位,每个操作数包含N位,其中N小于或等于M;2、一个处理器,该处理器执行一组以选定操作数为对象的操作,每组操作中至少含有一个操作,操作结果产生N位长度的数据;3、一个目的寄存器,用于存放每组操作的运算结果数据。该组操作可以包含一个剪切或饱和操作。此外,该组操作可以并行运行,并且响应某命令集中的一个命令。
通过以下的详细说明,本发明还有一些目的和优点,对熟悉本领域的人来说是显而易见的。以下的说明中,只是仅仅通过对本发明最佳实施方式思想的描述,叙述和说明了本发明的较佳实施例。正如将会认识到的,本发明还可以有其它不同的实施方式,在许多明显的方面,可以对本发明的一些细节上作出改进,但都不会偏离本发明的本质。同样,附图及说明的性质也应被视作是说明性的,而不是限制性的。
附图简要说明
本发明的上述目的以及其它目的的显而易见性,体现在对本发明进行的、包括以下附图的说明中:
附图1是本发明使用的一示例系统的方框图;
附图2所示是CPU寄存器结构的一个例子;
附图3(a)所示是存储器中矩阵组织的一个例子;
附图3(b)所示是该例中要被执行的一个任务;
附图4所示是一例用定制操作进行一个字节矩阵置换的应用;
附图5(a)和5(b)所示是执行附图4所示字节矩阵置换的一列操作;
附图6所示是一个dspiadd操作;
附图7所示是一个dspuadd操作;
附图8所示是一个dspidualadd操作;
附图9所示是一个dspuquadaddui操作;
附图10所示是一个dspimul操作;
附图11所示是一个dspumul操作;
附图12所示是一个dspidualmul操作;
附图13所示是一个dspisub操作;
附图14所示是一个dspusub操作;
附图15所示是一个dspidualsub操作;
附图16所示是一个ifir16操作;
附图17所示是一个ifir8ii操作;
附图18所示是一个ifir8ui操作;
附图19所示是一个ufir16操作;
附图20所示是一个ufir8uu操作;
附图21所示是一个mergelsb操作;
附图22所示是一个mergemsb操作;
附图23所示是一个pack16lsb操作;
附图24所示是一个pack16msb操作;
附图25所示是一个packbytes操作;
附图26所示是一个quadavg操作;
附图27所示是一个quadumulmsb操作;
附图28所示是一个ume8ii操作;
附图29所示是一个ume8uu操作;
附图30所示是一个iclipi操作;
附图31所示是一个uclipi操作;
附图32所示是一个uclipu操作;
较佳实施例说明
附图1是本发明使用的一示例系统的方框图。该系统包括一个微处理器、一个同步动态随机存取寄存器(SDRAM)和作为与多媒体入、出数据流通路接口所需的外部线路。
本例中,由一个32位CPU组成VLIW处理器的内核。该CPU使用一个32位线性地址空间和128个全部为通用型的32位寄存器。本系统中没有将寄存器分类归组,相反,任何操作可以使用任何寄存器来存放任何操作数。
在本系统中,CPU使用VLIW指令集结构,允许同时发出多达五个同时操作。本例中,这些操作可以指向CPU内27个功能单元中的任何五个,包括整数和浮点算术单元和数据并行的的数字信号处理(DSP)类单元。
运用本发明的CPU的操作集中,包括传统的微处理器操作,此外还有多媒体专用操作,它们能极大地加快标准视频信号压缩和解压算法的速度,一个专门操作或者定制操作,即一条指令内的数个操作(本例中是5个)中的一个操作,能执行多达11个传统的微处理器操作。多媒体专用操作与VLIW、RISC或其它体系结构相结合,在多媒体应用中产生巨大的信息通量。本发明允许使用32、64、128…位的寄存器存放数据,执行这些“多媒体”运算。
附图2所示是CPU寄存器结构的一个例子。本实施例中的CPU有128个32位通用寄存器,分别以r0…r127记之。本实施例中寄存器r0和r1实际上作为专用寄存器使用,寄存器r2至r127才真正被当作通用寄存器。
本系统中,处理器每隔一个时钟周期发出一条长指令,每个这种指令包括几个操作(本实施例中有5个操作),每个操作都类似一条RISC机器指令,所不同的是操作的执行是有条件的,取决于某通用寄存器的内容。
寄存器中的数据可以是—例如—整数表示或浮点表示。
本实施例中,整数分为‘带符号整数’和‘无符号整数’两种,以二进制数2的补码位模式表示。整数算术运算不会产生陷阱。如果运算结果不可被表示,则返回的位模式是特定于操作的,如在对各运算的说明部分所定义的。典型的情况有:对常规加减类操作实行回绕式处理,DSP类型的操作返回值为可表示的最高值或最低值,64位结果(例如无符号整数积)的返回值为其中的最低32位。
因为本实施例是32位结构的,它不用浮点表示法表示多媒体运算中使用的数据的值。不过很显然,对64位,128位…结构的系统而言,可以用浮点表示法来表示多媒体运算中使用的数据值。例如,单精度(32位)IEEE-754浮点算术表示法和/或双精度(64位)IEEE-754浮点表示法就可以用来表示数据值。
在本发明的结构体系中,所有运算均可选用“保护”(guarded)功能。保护运算有条件地执行运算,其条件值存放在保护寄存器(rguard)中。例如,一个保护的整数加法指令的写法是:
IF r23 iadd r14 r10->r13
本例的意思是,“ifr23then r13=r14+r10”。语句“ifr23”根据r23中值的最低有效位(LSB)的内容来判断“真”与“假”。因此,根据r23中值的最低有效位(LSB)的内容,r13要么不变,要么被设置为等于r14与r10的整数和。例如,在本发明的本实施例中,如果LSB被判断为1,就对目的寄存器(rdest)(本例中为r13)进行写操作。保护用于控制对程序员可见的系统状态—如寄存器值、存储器内容及设备状态—等的影响。
本发明中的存储器是字节可寻址的。数据的寄存或存储采用“自然对齐”方式,就是说,寄存或存储一个16位数据时,寻找的地址数是2的倍数;寄存或存储一个32位数据时,寻找的地址数是4的倍数。熟悉本领域的人很容易据此修改。
计算操作是寄存器对寄存器的操作。一个特定的操作,要有一个或两个寄存器作为操作对象,操作的结果被写入一个目的寄存器(rdest)。
定制操作属于特殊的计算操作范畴,象是正常的计算操作,而通用CPU中又没有这些定制操作。定制操作的优点在于允许执行例如多媒体应用软件中的运算。本发明的定制操作是为显著提高重要的多媒体应用软件及其它应用软件的性能而设计的、功能强大的专用操作。如果在应用程序的源码中适当地结合定制操作,会能使该应用程序充分利用本发明的微处理器(例如Philips公司的Trimedia TM-1芯片)的高度并行操作的潜力。
无论是通用应用软件还是基于微处理器的嵌入应用,人们都希望用高级语言进行程序设计。为了有效地支持优化编译器和简单化的编程模型,要求微处理器的体系结构具有一定的特点,例如有较大的线性地址空间、通用寄存器以及直接支持使用线性地址指针的寄存器对寄存器操作功能。
本发明允许利用系统的全部资源。举例来说,利用32位资源同时处理两个16位数据项或4个8位数据项。这种资源利用只需增加极少的的费用投入就能极大地改进系统的性能。而且,这种资源利用能从在标准的微处理器资源中获得较高的执行速度。
有些功能强的定制操作不使用条件转移语句,这有助于调度程序有效地利用目前系统中(例如使用TM-1指令的Philips TM-1芯片)每一条指令的五个操作槽(slot)。充满所有五个操作槽,对于计算密集的多媒体应用软件中的内部循环过程,具有特别重要的意义。定制操作帮助本发明以尽可能低的代价换取极高的多媒体操作性能。
表1是本发明中定制操作一览表。有些定制操作有不同的格式,其区别表现于对操作数及结果的不同处理上。表示不同格式命令的助记符,试图对上述不同处理加以区分,以便于用户选择合适的操作。当然,每个操作也可以使用完全不同的助记符或名称。表1:按功能分类的定制操作一览表
功能 | 助记符 | 说明 |
DSP绝对值 | dspiabs | 带符号32位值的绝对值的剪切值 |
dspidualabs | 两个带符号16位半字的绝对值的剪切值 | |
DSP加 | dspiadd | 带符号32位值之和的剪切值 |
dspuadd | 无符号32位值之和的剪切值 | |
dspidualadd | 两个带符号16位半字值之和的剪切值 | |
dspuquadaddui | 四个带符号/无符号字节值之和的剪切值 | |
DSP积 | dspimu1 | 带符号32位值乘积的剪切值 |
dspumu1 | 无符号32位值乘积的剪切值 | |
dspidualmu1 | 两个带符号16位半字值乘积的剪切值 | |
DSP差 | dspisub | 带符号32位值之差的剪切值 |
dspusub | 无符号32位值之差的剪切值 | |
dspidualsub | 两个带符号16位半字值之差的剪切值 | |
积之和 | ifir16 | 带符号16位半字值乘积之和 |
ifir8ii | 带符号字节值乘积之和 | |
ifir8ui | 带符号与无符号字节值乘积之和 | |
ufir16 | 无符号16位半字值乘积之无符号和 | |
ufir8uu | 无符号字节值乘积之无符号和 | |
合并 | mergelsb | 合并最低有效字节 |
mergemsb | 合并最高有效字节 | |
打包 | pack16lsb | 打包最低有效16位半字 |
pack16msb | 打包最高有效16位半字 | |
packbytes | 打包最低有效字节 | |
字节平均值 | quadavg | 四个无符号字节的平均值 |
字节积 | quadumulmsb | 四个8位无符号字节对的积的最高字节 |
动态评估 | ume8ii | 带符号8位之差的绝对值的无符号的和 |
ume8uu | 无符号8位之差的绝对值之无符号和 |
剪切 | iclipi | 将一带符号值剪切为另一带符号值 |
uclipi | 将一带符号值剪切为另一无符号值 | |
uclipu | 将一无符号值剪切为另一无符号值 |
下面举例说明本发明所述的一个定制操作的使用方法。本例通过一个字节矩阵变换,简要说明了定制操作是如何显著提高应用软件小型内核的处理速度的。正如大多数定制操作应用所反映的那样,本例中定制操作的效能体现在其对多个数据项进行并行处理的能力上。
本例的任务是对存储器中的一个4×4字节压缩矩阵进行转置。该矩阵中的数据可以是例如8位象素值。附图3(a)表示转置前后矩阵数据在存储器中的位置。附图3(b)用标准的数学语言叙述了本例要执行的任务。
用传统微处理器指令执行这个过程,其指令直截了当,但却耗费时间。一种方法是,执行12个字节加载指令来加载字节(16个字节中只有12个需要易位),再用12个字节存储指令将它们存放回存储器中的新位置上。另一种方法是执行4个字(Word)加载指令,将已加载各字按字节在寄存器中重新排列,然后在执行4个字(Word)存储指令。不幸的是,在寄存器中将个字节重新排列,需要用大量的指令来进行适当的字节屏蔽和字节移位操作,而第一种方法总共进行24次加载和存储操作,实质上使用了加载/存储单元中的数据移位和数据屏蔽硬件,因而,该方法所需的指令序列长度较短。
进行24次加载和存储操作的问题是,加载和存储操作的本身速度并不快:至少要访问高速缓冲存储器,可能还要访问存储器体系中速度更慢的某些层次;再者说,进行字节加载和存储操作,通过字长32位的数据接口访问高速缓冲存储器或存储器,这是对高速缓冲存储器或存储器数据接口资源的一种浪费。因此,需要有一种充分发挥高速缓冲存储器/存储器带宽的优点、同时又不需要过度数量的字节操作指令的快速算法。
本发明含有对字节和16位半字(halfwords)直接和并行地进行合并(mergemsb和mergelsb)和打包(pack16msb和pack16lsb)的操作指令。这些指令中有四条可应用于本例中来加快将字节打包成字的处理速度。
附图4所示的是这些指令在字节矩阵置换例中的应用。附图5(a)所示是进行字节矩阵置换所需的一列操作命令,将其汇编成实际指令时,这些定制操作将尽可能地被相互组合,例如组合成每个指令含有5个操作。附图5(a)中的低级代码在此仅作示意之用。
附图5(a)中第一组4个字加载操作(ld32d)将输入矩阵中打包的字送入寄存器r10、r11、r12和r13;第二组4个合并操作(mergemsb和mergelsb)在寄存器r14、r15、r16和r17中生成中间结果;第三组4个打包操作命令(pack16msb和pack16lsb)对源操作数进行替换,假如为了进行其它计算需要保留原矩阵操作数(有一种TM-1优化C编译器可以自动执行这种分析),该组操作可以将转置后的矩阵另存到各个独立的寄存器中。本例中,转置矩阵被用st32d存入四个寄存器r18、r19、r20和r21中。最后4个字存储操作命令将置换后的矩阵存回到存储器中。
因此,使用本发明的定制操作,进行该字节矩阵置换需要4个字操作和4个字存储操作(至少这个数)以及8个寄存器到对寄存器的数据处理操作,总共是16次操作,换言之,字节矩阵置换的速度是平均每个字节一次操作。附图5(b)是一段对应的C语言程序。
就本例而言,运用基于定制操作的算法与需要24次字节加载和存储操作的简单算法相比,表面上看其优点也就是减少了8次操作(减少了33%),而实际上,其优点远不止于此。首先,运用定制操作时,对存储器的访问次数从24次减少到8次,即减少到原需次数的三分之一,而存储器操作速度要比寄存器间操作速度慢(本例中所用定制操作就是后一种操作),所以,减少访问存储器的次数非常重要。
第二,基于定制操作的代码的使用,使本系统采用的编译系统(TM-1系统)利用TM-1微处理器硬件潜在功能的能力得到加强。具体地说,当访问存储器的次数与寄存器间操作的次数相当时,编译系统更容易生成一个对代码的优化调度方案。一般来说,高性能的微处理器在一个时钟周期内访问存储器的次数有一定的限度,如果代码很长,又都是访问存储器的语句,就会在长的TM-1指令中产生空操作槽,从而浪费了硬件的潜在功能。
如本例所示,使用本发明的定制操作,可以减少进行一次计算所需操作的绝对次数,也有助于编译系统生成充分利用所用CPU潜能的程序码。对于诸如用于例如一个完整MPEG视频解码算法的MPEG图像恢复系统以及动态评估(motion-estimation)内核等其它应用软件,使用本发明的定制操作也有益处。当然,本发明的定制操作的作用并不仅仅限于这些。
表1所列的为本发明包含的定制操作。以下将对这些定制操作逐一地进行详细说明。在以下的功能语句代码中,使用了标准符号、文法等。例如,temp1和temp2代表两个临时寄存器;再例如,功能temp1<-sign_ext16to32(rsrc1<15:0>)表示将寄存器rsrc1中15:0位(位0至位15)的内容装入tem1寄存器,其中符号位(本例中为第15位)被扩展至16至32位(符号位扩展);同理,temp2<-sign_ext16to32(rsrc1<16:31>)表示将寄存器rsrc1中的第16位至第31位的内容被提取(并被置于第0位至第15位用于计算),其中符号位(本例中为第31位)被扩展至16至32位。扩展符号位用于带符号数值上,本例中的带符号数值为带符号整数。对于无符号数值,使用的是填零方法。表示填零的记法与表示符号扩展的记法类似,例如,zero_ext8to32(rsrc1<15:0>)表示15至0位的值被用于计算,8至32位要被填零。源寄存器rsrc1与rsrc2及目的寄存器rdest可以是上述任何空闲的寄存器。
以下所列各操作中,每个操作可以选用保护(guard)的方式,其在寄存器rguard中定义。如果采用保护方式,则在本例中,其最低有效位(LSB)决定了是否对目的寄存器进行修改。在本例中,如果rguard中的最低有效位的值为1,则对目的寄存器rdest进行写操作,否则就不改变rdest的值。
dspiabs:dspiabs操作计算一个带符号数的绝对值的剪切值,伪码记作h_dspiabs:(硬件dspiabs)。该操作具有以下功能:
if rguard then{ if rsrc1>=0 then rdest<-rsrc1 else if rsrc1=0x800000000 then rdest<-0x7fffffff else rdest<-rsrc1 }
dspiabs操作是一个伪操作,由调度程序转换为h_dspiabs,其第一个参数为常量零,第二个参数等于dspiabs的参数。在汇编源程序文件中一般不使用伪操作。h_dspiabs执行与dspiabs相同的功能,只不过前者需要一个零作为其第一个参数。
dspiabs计算rsrc1的绝对值,将结果剪切(clip)成[231-1…0]即[0x7fffffff…0]范围内的值,并将该剪切值存入目的寄存器rdest。所有值都是带符号整数。
dspidualabs:dspidualabs操作计算两个带符号16位半字(halfword)的绝对值的剪切值,伪码记作h_dspidualabs:(硬件dspidualabs)。该操作具有以下功能:
if rguard then{ temp1<-sign_ext16to32(rsrc1<15:0>) temp2<-sign_ext16to32(rsrc1<31:16>) if temp1=oxffff8000 then temp1<-0x7fff if temp2=oxffff8000 then temp2<-0x7fff if temp1<0 then temp1<--temp1 if temp2<0 then temp2<--temp2 rdest<31:16><-temp2<15:0> rdest<15:0<-temp1<15:0> }
dspidualabs操作是一个伪操作,由调度程序转换为双参数的h_dspidualabs,本例中,其第一个参数为常量零,第二个参数等于dspidualabs的参数。
dspidualabs操作功能是分别计算寄存器rsrc1内高16位半字(halfword)和低16位半字的两个16位带符号数绝对值的剪切值。两个绝对值均被剪切为[0x0…0x7fff]范围内的值,并被分别存入目的寄存器rdest中的两个对应的半字位置。所有值都是16位带符号整数。h_dspidualabs操作执行与dspidualabs相同的功能,只不过前者需要一个零作为其第一参数。
dspiadd:dspiadd操作计算带符号数之和的剪切值,该操作具有以下功能:
if rguard then{ temp<-sign_ext32to64(rsrc1)+sign_ext32to64(rsrc2) <dp n="d12"/> if temp<0xffffffff80000000 then rdest<-0x80000000 else if temp>0x00000007fffffff then rdest<-0x7fffffff else rdest<-temp }
如附图6所示,dspiadd操作计算rsrc1+rsrc2的带符号和,将结果剪切成[231-1…-231]即[0x7fffffff…0x80000000]范围内的32位带符号值,并将该剪切值存入目的寄存器rdest。所有值都是带符号整数。
dspuadd:dspuadd操作计算无符号数之和的剪切值,该操作具有以下功能:
if rguard then{ temp<-zero_ext32to64(rsrc1)+zero_ext32to64(rsrc2) if(无符号)temp>0x00000000ffffffff then rdest<-0xffffffff else rdest<-temp<31:0> }
如附图7所示,dspuadd操作计算rsrc1+rsrc2的无符号和,将结果剪切成[231-1…0]即[0xffffffff…0]范围内的值,并将该剪切值存入目的寄存器rdest。
dspidualadd:dspidualadd操作计算两个带符号16位半字之和的剪切值,该操作具有以下功能:
if rguard then{ temp1<-sign_ext16to32(rsrc1<15:0>)+sign_ext16to32(rsrc2<15:0>) temp2<sign_ext16to32(rsrc1<31:16>)+sign_ext16to32(rsrc2<31:16>) if temp1<0xffff8000 then temp1<-0x8000 if temp2=0xffff8000 then temp2<-0x8000 if temp1>0x7fff then temp1<-0x7fff if temp2<0x7fff then temp2<-0x7fff rdest<31:16><-temp2<15:0> <dp n="d13"/> rdest<15:0><-temp1<15:0> }
如附图8所示,dspidualadd操作分别计算rsrc1与rsrc2中两对16位半字的16位带符号和的剪切值。两个和数值均被剪切(clip)成[215-1…-215]即[0x7fff…0x8000]范围内的值,写入目的寄存器rdest中对应的半字位置。所有值均为16位带符号整数。
dspuquadaddui:dspuquadaddui操作计算四个带符号与无符号字节(byte)之和的剪切值,该操作具有以下功能:
if rguard then{ for(i<-0,m<-31,n<-24;i<4;i<-i+1,m<-m-8,n<-n-8){ temp<-zero_ext8to32(rsrc1<m:n>) +sign_ext8to32(rsrc2<m:n>) if temp<0 then rdest<m:n><-0 else if temp>0xff then rdest<m:n><-0xff else rdest<m:n><-temp<7:0> }
如附图9所示,dspuquadaddui操作为rsrc1与rsrc2的四对8位字节分别计算出四个带符号和,其中假定rsrc1中的各字节值为无符号值,rsrc2中的各字节值为带符号值。将四个和数剪切成无符号的[255…0]即[0xff…0]范围内的值,其结果是,所有四个字节和数均为无符号值。所有各计算均保留原数值精度。
dspimu1:dspimu1操作计算带符号数乘法的剪切值,该操作具有以下功能:
if rguard then{ temp<-sign_ext32to64(rsrc1)+sign_ext32to64(rsrc2) if temp<0xffffffff80000000 then rdest<-0x80000000 <dp n="d14"/> else if temp>0x000000007fffffff then rdest<-0x7fffffff else rdest<-temp<31:0> }
如附图10所示,dspimu1操作计算rsrc1×rsrc2的积,将结果剪切成[231-1…-231]即[0x7fffffff…0x80000000]范围内的值,并将该剪切值存入目的寄存器rdest。所有值都是带符号整数。
dspumu1:dspumu1操作计算无符号数乘积的剪切值,该操作具有以下功能:
if rguard then{ temp<-zero_ext32to64(rsrc1)×zero_ext32to64(rsrc2) if(无符号值)temp>0x00000000ffffffff then rdest<-0xffffffff else rdest<-temp<31:0> }
如附图11所示,dspumu1操作计算rsrc1×rsrc2的无符号乘积值,将结果剪切成[231-1…0]即[0xffffffff…0]范围内的值,并将该剪切值存入目的寄存器rdest。
dspidualmu1:dspidualmu1操作计算两个带符号16位半字乘积的剪切值,该操作具有以下功能:
if rguard then{ temp1<-sign_ext16to32(rsrc1<15:0>)×sign_ext16to32(rsrc2<15:0>) temp2<-sign_ext16to32(rsrc1<31:16>)×sign_ext16to32(rsrc2<31:16>) if temp 1<0xffff8000 then temp1<-0x8000 if temp2=0xffff8000 then temp2<-0x8000 if temp1>0x7fff then temp1<-0x7fff if temp2<0x7fff then temp2<-0x7fff rdest<31:16><-temp2<15:0> rdest<15:0><-temp1<15:0> }
如附图12所示,dspidualmu1操作分别计算rsrc1与rsrc2中两对16位高和低半字的带符号乘积的16位剪切值,两个乘积数值均被剪切成[215-1…-215]即[0x7fff…0x8000]范围内的值,并被存入目的寄存器rdest中对应的半字位置。所有值均为16位带符号整数。
dspisub:dspisub操作计算带符号减的剪切值,该操作具有以下功能:
if rguard then{ temp<-sign_ext32to64(rsrc1)-sign_ext32to64(rsrc2) if temp<0xffffffff80000000 then rdest<-0x80000000 else if temp>0x000000007fffffff then rdest<-0x7fffffff else rdest<-temp<31:0> }
如附图13所示,dspisub操作计算rsrc1-rsrc2的算术差,将结果剪切成[0x80000000…0x7fffffff]范围内的值,并将该剪切值存入目的寄存器rdest。所有值都是带符号整数。
dspusub:dspusub操作计算无符号减的剪切值,该操作具有以下功能:
if rguard then{ temp<-zero_ext32to64(rsrc1)-zero_ext32to64(rsrc2) if(带符号值)temp<0 then rdest<-0 else rdest<-temp<31:0> }
如附图14所示,dspusub操作计算rsrc1-rsrc2的无符号差,将结果剪切成[0…0xffffffff]范围内的值,并将该剪切值存入目的寄存器rdest。
dspidualsub:dspidualsub操作计算两个带符号16位半字减的剪切值,该操作具有以下功能:
if rguard then{ temp1<-sign_ext16to32(rsrc1<15:0>)-sign_ext16to32(rsrc2<15:0>) temp2<-sign_ext16to32(rsrc1<31:16>)-sign_ext16to32(rsrc2<31:16>) if temp1<0xffff8000 then temp1<-0x8000 if temp2<0xffff8000 then temp2<-0x8000 if temp1>0x7fff then temp1<-0x7fff if temp2>0x7fff then temp2<-0x7fff rdest<31:16><-temp2<15:0> rdest<15:0><-temp1<15:0> }
如附图15所示,dspidualsub操作分别计算rsrc1与rsrc2中两对16位高和低半字的带符号16位算术差数值,两个算术差数值均被剪切成[215-1…-215]即[0x7fff…0x8000]范围内的值,并被存入目的寄存器rdest中对应的半字位置。所有值均为16位带符号整数。
ifir16:ifir16操作计算两个带符号16位半字乘积之和,该操作具有以下功能:
if rguard then rdest<-sign ext16to32(rsrc1<31:16>)× sign_ext16to32(rsrc2<31:16>)+ sign_ext16to32(rsrc1<15:0>)× sign_ext16to32(rsrc2<15:0>)
如附图16所示,ifir16操作先计算rsrc1与rsrc2中两对16位半字的乘积,再将两个乘积数相加后存入目的寄存器rdest。假定所有的半字均为带符号值,因此,两个乘积数及其和也均为带符号数值。所有计算均保留原来的数值精度。
ifir8ii:ifir8ii操作计算带符号字节值乘积的带符号和,该操作具有以下功能:
if rguard then rdest<-sign_ext8to32(rsrc1<31:24>)× sign_ext8to32(rsrc2<31:24>)+ sign_ext8to32(rsrc1<23:16>)× sign_ext8to32(rsrc2<23:16>)+ <dp n="d17"/> sign_ext8to32(rsrc1<15:8>)× sign_ext8to32(rsrc2<15:8>)+ sign_ext8to32(rsrc1<7:0>)× sign_ext8to32(rsrc2<7:0>)
如附图17所示,ifir8ii操作先分别计算rsrc1与rsrc2中四个8位字节对的乘积,再将四个乘积数相加后写入目的寄存器rdest。假定所有的字节值均为带符号值,因此,四个乘积数及其和也均为带符号数值。所有计算均保留原来的数值精度。
ifir8ui:ifir8ui操作计算带符号与无符号字节值乘积的带符号和,该操作具有以下功能:
if rguard then rdest<-zero_ext8to32(rsrc1<31:24>)× sign_ext8to32(rsrc2<31:24>)+ zero_ext8to32(rsrc1<23:16>)× sign_ext8to32(rsrc2<23:16>)+ zero_ext8to32(rsrc1<15:8>)× sign_ext8to32(rsrc2<15:8>)+ zero_ext8to32(rsrc1<7:0>)× sign_ext8to32(rsrc2<7:0>)
如附图18所示,ifir8ui操作先分别计算rsrc1与rsrc2中四个8位字节对的乘积,再将四个乘积数相加后存入目的寄存器rdest。假定rsrc1中的字节值为无符号值,rsrc2中的字节值为带符号值,因此,四个乘积数及其和也均为带符号数值。所有计算均保留原来的数值精度。
ufir16:ufir16操作计算无符号16位半字值乘积之和,该操作具有以下功能:
if rguard then{ rdest<-zero_ext16to32(rsrc1<31:16>)× zero_ext16to32(rsrc2<31:16>)+ zero_ext16to32(rsrc1<15:0>)× zero_ext16to32(rsrc2<15:0>)
如附图19所示,ufir16操作先计算rsrc1与rsrc2中两对16位半字的乘积,再将两个乘积数相加后存入目的寄存器rdest。假定所有的半字均为无符号值,因此,两个乘积数及其和也均为无符号数值。所有计算均保留原来的数值精度。最后的积之和在被写入rdest之前被剪切成[0xffffffff…0]范围的值。
ufir8uu:ufir8uu操作计算无符号字节值乘积之和的无符号和,该操作具有以下功能:
if rguard then{ rdest<-zero_ext8to32(rsrc1<31:24>)× zero_ext8to32(rsrc2<31:24>)+ zero_ext8to32(rsrc1<23:16>)× zero_ext8to32(rsrc2<23:16>)+ zero_ext8to32(rsrc1<15:8>)× zero_ext8to32(rsrc2<15:8>)+ zero_ext8to32(rsrc1<7:0>)× zero_ext8to32(rsrc2<7:0>)
如附图20所示,ufir8uu操作先分别计算rsrc1与rsrc2中四个8位字节对的乘积,再将四个乘积数相加后存入目的寄存器rdest。假定所有的字节值均为无符号值。所有计算均保留原精度。
mergelsb:mergelsb操作为合并最低有效字节,该操作具有以下功能:
if rguard then{ rdest<7:0><-rsrc2<7:0> rdest<15:8><-rsrc1<7:0> rdest<23:16><-rsrc2<15:8> rdest<31:24><-rsrc1<15:8>
如附图21所示,mergelsb操作从rsrc1与rsrc2各取两对最低有效字节合并存入rdest中。其中rsrc2中的最低有效字节被组合到rdest中的最低有效字节位置,rsrc1中的最低有效字节被组合到rdest中的次低有效字节位置,rsrc2中的次低有效字节被组合到rdest中的次高有效字节位置,rsrc1中的次低有效字节被组合到rdest中的最高有效字节位置。
mergemsb:mergemsb操作为合并最高有效字节,该操作具有以下功能:
if rguard then{ rdest<7:0><-rsrc2<23:15> rdest<15:8><-rsrc1<23:15> rdest<23:16><-rsrc2<31:24> rdest<31:24><-rsrc1<31:24>
如附图22所示,mergemsb操作从rsrc1与rsrc2各取两对最高有效字节合并存入rdest中。其中rsrc2中的次高有效字节被放置到rdest中的最低有效字节位置,rsrc1中的次高有效字节被放置到rdest中的次低有效字节位置,rsrc2中的最高有效字节被放置到rdest中的次高有效字节位置,rsrc1中的最高有效字节被放置到rdest中的最高有效字节位置。
pack16lsb:pack16lsb操作为打包最低有效16位半字,该操作具有以下功能:
if rguard then{ rdest<15:0><-rsrc2<15:0> rdest<31:16><-rsrc1<15:0>
如附图23所示,pack16lsb操作从rsrc1与rsrc2各取一个最低有效16位半字组合存入rdest中。其中rsrc1中的最低有效16位半字被放置到rdest中的最高有效半字位置,rsrc2中的最低有效16位半字被放置到rdest中的最低有效半字位置。
pack16msb:pack16msb操作为打包最高有效16位半字,该操作具有以下功能:
if rguard then{ rdest<15:0><-rsrc2<31:16> rdest<31:16><-rsrc1<31:16>
如附图13所示,pack16msb操作从rsrc1与rsrc2各取一个最高有效16位半字组合存入rdest中。其中rsrc1中的最高有效16位半字被放置到rdest中的最高位半字位置,rsrc2中的最高有效16位半字被放置到rdest中的最低位半字位置。
packbytes:packbytes操作是打包最低字节,它具有以下功能:
if rguard then{ <dp n="d20"/> rdest<7:0><-rsrc2<7:0> rdest<15:8><-rsrc1<7:0>
如附图25所示,packbytes操作从rsrc1与rsrc2各取一个最低有效字节组合存入rdest中。其中rsrc1中的最低有效字节被放置到rdest中的次低有效字节位置,rsrc2中的最低有效字节被放置到rdest中的最低有效字节位置。rdest中的两个最高有效字节位置被填零。
quadavg:quadavg操作计算四个无符号字节的平均值。该操作具有以下功能:
if rguard then{temp<-(zero_ext8to32(rsrc1<7:0>)+zero_ext8to32(rsrc2<7:0>)+1)/2 rdest<7:0><-temp<7:0> temp<-(zero_ext8to32(rsrc1<15:8>)+ zero ext8to32(rsrc2<15:8>)+1)/2 rdest<15:8><-temp<7:0> temp<-(zero_ext8to32(rsrc1<23:16>)+ zero_ext8to32(rsrc2<23:16>)+1)/2 rdest<23:16><-temp<7:0> temp<-(zero_ext8to32(rsrc1<31:24>)+ zero_ext8to32(rsrc2<31:24>)+1)/2 rdest<31:24><-temp<7:0> }
如附图26所示,quadavg操作对寄存器rser1与rscr2中的四对8位字节分别计算平均值。假定所有字节均为无符号字节。每对字节的平均值的最低8位被写入目的寄存器rdest中与该对字节位置相对应的字节位置。不对上溢与下溢情况作检查。
quadumulmsb:quadumulmsb操作计算四个无符号8位字节对的积的最高字节。该操作具有以下功能:
if rguard then{ temp<-(zero_ext8to32(rsrc1<7:0>)×zero_ext8to32(rsrc2<7:0>)) rdest<7:0><-temp<15:8> temp<-(zero_ext8to32(rsrc1<15:8>)×zero_ext8to32(rsrc2<15:8>)) rdest<15:8><-temp<15:8> <dp n="d21"/> temp<-(zero_ext8to32(rsrc1<23:16>)× zero_ext8to32(rsrc2<23:16>)) rdest<23:16><-temp<15:8> temp<-(zero_ext8to32(rsrc1<31:24>)× zero_ext8to32(rsrc2<31:24>)) rdest<31:24><-temp<15:8> }
如附图27所示,quadumulmsb操作分别计算寄存器rscr1与rscr2中的四对8位字节的积。假定所有字节均为无符号字节。每对字节的16位积的最高8位被写入目的寄存器rdest中与该对字节位置相对应的字节位置。
ume8ii:ume8ii操作计算带符号8位字节之差的绝对值的无符号之和。该操作具有以下功能:
if rguard then rdest<-abs_val(sign_ext8to32(rsrc1<31:24>)- sign_ext8to32(rsrc2<31:24>))+ abs_val(sign_ext8to32(rsrc1<23:16>)- sign_ext8to32(rsrc2<23:16>))+ abs_val(sign_ext8to32(rsrc1<15:8>)- sign_ext8to32(rsrc2<15:8>))+ abs_val(sign_ext8to32(rsrc1<7:0>)- sign_ext8to32(rsrc2<7:0>))
如附图28所示,ume8ii操作分别计算寄存器rscr1与rscr2中的四对带符号8位字节的差,并将这四个差的绝对值的和写入目的寄存器rdest。所有计算均保留原精度。
ume8uu:ume8uu操作计算无符号8位字节之差的绝对值之和。该操作具有以下功能:
if rguard then rdest<-abs_val(zero_ext8to32(rsrc1<31:24>)- zero_ext8to32(rsrc2<31:24>))+ abs_val(zero_ext8to32(rsrc1<23:16>)- zero_ext8to32(rsrc2<23:16>))+ <dp n="d22"/> abs_val(zero_ext8to32(rsrc1<15:8>)- zero_ext8to32(rsrc2<15:8>))+ abs_val(zero_ext8to32(rsrc1<7:0>)- zero_ext8to32(rsrc2<7:0>))
如附图29所示,ume8uu操作分别计算寄存器rscr1与rscr2中的四对无符号8位字节的差,并将这四个差的绝对值的和写入目的寄存器rdest。所有计算均保留原精度。
iclipi:iclipi操作将一带符号值剪切为另一带符号值。该操作具有以下功能:
if rguard then rdest<-min(max(rscr1,-rscr2-1),rscr2)
iclipi操作返回scrc1在无符号整数范围-rscr2-1至rscr2内(包含边界值)的剪切值。假定参数rsrc1是带符号整数,rscr2是0至0x7fffffff范围内(包含边界值)的一个无符号整数。
uclipi:uclipi操作将一带符号值剪切为另一无符号值。该操作具有以下功能:
if rguard then rdest<-min(max(rscr1,0),rscr2)
uclipi操作返回scrc1在无符号整数范围0至rscr2内(包含边界值)的剪切值。假定参数rsrc1是无符号整数,rscr2无符号整数。
uclipu:uclipu操作将一无符号值剪切为另一无符号值。该操作具有以下功能:
if rguard then{ if rscr1>rscr2 then rdest<-rscr2 else rdest<-rscr1 }
uclipu操作返回scrc1在无符号整数范围0至rscr2内(包含边界值)的剪切值。假定参数rsrc1及rscr2均为带符号整数。
通过运用以上的多媒体定制操作,应用软件具有以较低的成本使微处理器高度并行地执行多媒体功能的优点。
从以上说明应该了解的是,本发明可应用于用VLIW、RISC、超标量等指令格式的处理器高度并行处理。此外,熟悉本领域的人也可以容易地根据以上思想添加一些操作。例如,虽然本说明中未对四对字节剪切差的操作予以专门描述,但熟悉本领域的人可以容易地根据以上说明开发出这条操作命令。
本文至此就描述了用于执行多媒体功能的定制操作的方法和系统。
本文仅描述和显示了本发明的较佳实施例,但正如前所述,应该清楚,本发明能被应用于其它各种组合与环境中,并能在所表述的本发明思想的范围内加以修改。
Claims (25)
1、一个计算机系统,包括:
接收输入数据的输入寄存器,每个输入数据含有M位,每个输入数据中具有操作数,每个操作数包含M位输入数据中N位,其中N小于或等于M;
一个处理器,该处理器在某指令集中的一个指令的控制下,并行执行Q个以输入数据的操作数为对象的运算操作产生N位的结果数据;
一个目的寄存器,用于存放作为M位输出的Q组运算结果数据。
2、一个计算机系统,包括:
提供M位输入数据的输入寄存器,每个输入数据至少包含两个操作数,每个操作数包含N位,其中N小于或等于M;
一个专用处理器,并行执行一组以输入数据中选定操作数为操作对象的运算操作,每组操作产生N位的结果数据;该处理器响应某指令集中的某个指令而执行操作;
一个M位目的寄存器,用于存放N位结果数据,用作一个M位输出数据。
3、如权利要求2中所述的计算机系统,其中:
各M位输入寄存器的每个输入数据包括一个N位的第一操作数和一个N位的第二操作数;
该处理器包括:
将第一输入数据中的第一操作数与第二输入数据中的第一操作数相加产生一个N位的第一操作结果数据以及将第一输入数据中的第二操作数与第二输入数据中的第二操作数相加产生一个N位的第二操作结果数据的装置,以及将各个结果数据在某限定范围内分别剪切成长度分别为N位的剪切结果数据的装置;
由所述目的寄存器将该分别剪切的结果数据存储在一起。
4、如权利要求2中所述的计算机系统,其中:
M位的输入数据包括长度各为N位的两个操作数;
该处理器包括:
计算每个操作数的绝对值并分别产生N位长度的绝对值的结果数据的装置,以及将各个绝对值在某限定范围内分别剪切成长度各为N位的剪切结果数据的装置;
由所述目的寄存器将该分别剪切的结果数据存储在一起。
5、如权利要求2中所述的计算机系统,其中:
M位的输入数据包含一个N位的第一操作数和一个N位的第二操作数;
该处理器包括:
将第一输入数据中的第一操作数与第二输入数据中的第一操作数相乘产生第一个积以及将第一输入数据中的第二操作数与第二输入数据中的第二操作数相乘产生第二个积、两个积的长度均为N位的装置,以及将各个积在某限定范围内分别剪切成长度各为N位的剪切结果数据的装置:
由所述目的寄存器将该分别剪切的结果数据存储在一起。
6、如权利要求2中所述的计算机系统,其中:
M位的输入数据包含一个N位的第一操作数和一个N位的第二操作数;
该处理器包含:
将第一输入数据中的第一操作数与第二输入数据中的第一操作数相减产生第一个差、将第一输入数据中的第二操作数与第二输入数据中的第二操作数相减产生第二个差、两个差的长度均为N位的装置,以及将第一个差与第二个差在某限定范围内分别剪切成长度各为N位的剪切结果数据的装置;
由所述目的寄存器将该分别剪切的结果数据存储在一起。
7、如权利要求2中所述的计算机系统,其中:
M位的输入数据包含P个长度各为N位的操作数,其中P至少是2;
该处理器包含:
将第一输入数据P个操作数中的每个操作数依次与第二输入数据P个操作数中对应的操作数相加、每次相加产生一个对应的N位的和的装置,以及将各个和在某限定范围内分别剪切成P个N位的剪切结果数据的装置;
由所述目的寄存器将该P个剪切结果数据存储在一起。
8、如权利要求2中所述的计算机系统,其中:
M位的输入数据包含P个长度各为N位的操作数,其中P至少是2;
该处理器包含:
将第一输入数据P个操作数中的每个操作数依次与第二输入数据P个操作数中对应的操作数相减、每次相减产生一个对应的N位的差的装置,以及将各个差在某限定范围内分别剪切成P个N位的剪切结果数据的装置;
由所述目的寄存器将该P个剪切结果数据存储在一起。
9、如权利要求2中所述的计算机系统,其中:
M位的输入数据包含P个长度各为N位的操作数,其中P至少是2;
该处理器包含:
将第一输入数据P个操作数中的每个操作数依次与第二输入数据P个操作数中对应的操作数相乘、每次相乘产生一个对应的N位的积的装置,以及将各个积在某限定范围内分别剪切成P个N位的剪切结果数据的装置;
由所述目的寄存器将该P个剪切结果数据存储在一起。
10、如权利要求2中所述的计算机系统,其中:
M位的输入数据包含P个长度各为N位的操作数,其中P至少是2;
该处理器包含依次计算第一输入数据与第二输入数据内P对操作数中的每对操作数的平均值、每次计算产生一个对应的N位的平均值的装置;
由所述目的寄存器存储该P个平均值。
11、如权利要求2中所述的计算机系统,其中:
M位的输入数据包含P个长度各为N位的操作数,其中P至少是2;
该处理器包含将第一输入数据P个操作数中的每个操作数依次与第二输入数据P个操作数中对应的操作数相乘、每次相乘产生一个对应的2*N位的积的装置;
由所述目的寄存器从各个积中读取共N个选定位,形成对应的中间数据,将该P个中间数据存储到某目的寄存器,所述目的寄存器长度为M位。
12、一个计算机系统,包括:
一个输入寄存器,用于提供M位的输入数据;
一个处理器,用于从输入数据读取N个位的数据值用于P输入数据N<M;
一个目的寄存器,用于存放从P输入数据的读取的各组N位数据值。
13、一个计算机系统,包括:
一个输入寄存器,用于提供M位的输入数据;
一个处理器,用于从输入数据中每个输入数据读取N个位的数据值用于P数据,N<M,该处理器包含将该从P输入数据的读取的各组N位数据值组合存入一个目的寄存器的装置。
14、如权利要求12中所述的计算机系统,其中:
P为2,N为M的一半,并且所述处理器读取输入数据的最高有效位组(bits)或输入数据的最低有效位组之一。
15、如权利要求12中所述的计算机系统,其中:
提供一个第一输入数据和一个第二输入数据;
所述处理器读取各个输入数据的最高有效位组(msb),各个最高有效位组被分别用作最高有效位组内的最高有效位组(mmsb)和最高有效位组内的最低有效位组(lmsb);
所述打包装置将第一输入数据中的最高有效位组内的最高有效位组(mmsb)组合成目的寄存器中的最高有效位组;
所述打包装置将第二输入数据中的最高有效位组内的最高有效位组(mmsb)组合成寄存器中的次高有效位组;
所述打包装置将第二输入数据中的最高有效位组内的最低有效位组(lmsb)组合成寄存器中的最低有效位组;
所述打包装置将第一输入数据中的最高有效位组内的最低有效位组(lmsb)组合成寄存器中的次低有效位组。
16、如权利要求12中所述的计算机系统,其中:
提供一个第一输入数据和一个第二输入数据;
所述处理器读取各个输入数据的最低有效位组(lsb),各个最低有效位组被分别用作最低有效位组内的最高有效位组(mlsb)和最低有效位组内的最低有效位组(llsb);
所述打包装置将第一输入数据中的最低有效位组内的最高有效位组(mlsb)组合成寄存器中的最高有效位组;
所述打包装置将第二输入数据中的最低有效位组内的最高有效位组(mlsb)组合成寄存器中的次高有效位组;
所述打包装置将第二输入数据中的最低有效位组内的最低有效位组(llsb)组合成寄存器中的最低有效位组;
所述打包装置将第一输入数据中的最低有效位组内的最低有效位组(llsb)组合成寄存器中的次低有效位组。
17、如权利要求12中所述的计算机系统,其中:
提供一个第一输入数据和一个第二输入数据;
所述处理器读取各个输入数据的最低有效位组(lsb);
所述打包装置将第二输入数据中的最低有效位组(lsb)组合成目的寄存器中的最低有效位组;
所述打包装置将第一输入数据中的最低有效位组(lsb)组合成目的寄存器中的次低有效位组;
所述打包装置用预定的位值填充目的寄存器中的最高有效位组。
18、一个计算机系统,包含:
一个用于接收输入数据的输入寄存器,每个输入数据有M位,包含Q个操作数,每个操作数包含N位,其中N小于或等于M;
一个用于对所述输入数据进行数据处理的处理器,所述数据处理包括并行执行以选定操作数为操作对象的一组运算操作,每组操作产生对应于各个操作数的N位长度的结果数据;
一个用于存放作为包括M位的输出数据的Q个结果数据的目的寄存器。
19、如权利要求18中所述的计算机系统,其中所述数据处理至少是音频处理和视频处理之一。
20、如权利要求18中所述的计算机系统,其中所述计算机系统集成在半导体基片上。
21、一个计算机系统,包含:
一个用于提供输入数据的输入寄存器,输入数据包含操作数;
一个用于执行以操作数为操作对象的一组运算操作的处理器,所述操作包含剪切功能,所述处理器产生结果数据;
一个用于存放结果数据中选定数据的目的寄存器。
22、如权利要求21中所述的计算机系统,其中
每个输入数据至少包含两个操作数;
所述处理器响应某指令集中的某个指令而并行执行选定的操作,所述操作包含剪切功能并产生结果数据。
23、一个计算机系统,包含:
一组输入寄存器,每个存放多个操作数的连接;
从输入寄存器中接收操作数、响应某指令并行执行以该操作数中特定操作数为操作对象的一组操作的数据处理装置,所述操作包括单操作数的第一种操作和多操作数的第二种操作,每个操作均产生结果数据,每一组操作产生各自的输出数据,并且至少包含一个操作;
一个与该数据处理装置相连、用于将各个输出结果数据存放一起的目的寄存器。
24、一个用于信号数据处理的信号处理系统,包含:
至少一个用于存储和提供信号数据的输入寄存器;
一个处理器,用于在指令控制下,执行系统硬件提供的一组机器指令,每个指令指示该处理器至少执行一个操作并产生结果数据,该组指令至少包含一个剪切指令,用于在将对信号数据操作的结果数据送到目的寄存器之前对该结果数据进行剪切。
25、权利要求24中的计算机系统,其中所述计算机系统集成在半导体基片上。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US314095P | 1995-09-01 | 1995-09-01 | |
US60/003,140 | 1995-09-01 | ||
US60/003140 | 1995-09-01 | ||
US464295P | 1995-09-25 | 1995-09-25 | |
US60/004642 | 1995-09-25 | ||
US60/004,642 | 1995-09-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1173931A true CN1173931A (zh) | 1998-02-18 |
CN1153129C CN1153129C (zh) | 2004-06-09 |
Family
ID=26671377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB961912456A Expired - Lifetime CN1153129C (zh) | 1995-09-01 | 1996-08-30 | 用于处理器定制操作的设备 |
Country Status (8)
Country | Link |
---|---|
US (2) | US5963744A (zh) |
EP (1) | EP0789870B1 (zh) |
JP (1) | JP3739403B2 (zh) |
KR (1) | KR100445542B1 (zh) |
CN (1) | CN1153129C (zh) |
AU (2) | AU6905496A (zh) |
DE (1) | DE69625790T2 (zh) |
WO (2) | WO1997009671A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1296823C (zh) * | 2000-10-05 | 2007-01-24 | 皇家菲利浦电子有限公司 | 可重定目标的编译系统和方法 |
CN104133748A (zh) * | 2006-05-10 | 2014-11-05 | 高通股份有限公司 | 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统 |
CN105765484A (zh) * | 2013-12-23 | 2016-07-13 | 英特尔公司 | 输入输出数据对齐 |
CN110704368A (zh) * | 2019-09-25 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 基于fpga的安全智能合约处理器的高效运算方法及装置 |
CN112199118A (zh) * | 2020-10-13 | 2021-01-08 | Oppo广东移动通信有限公司 | 指令合并方法、乱序执行设备、芯片及存储介质 |
Families Citing this family (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
EP0918280B1 (en) * | 1997-11-19 | 2004-03-24 | IMEC vzw | System and method for context switching on predetermined interruption points |
US6041404A (en) * | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
ATE557343T1 (de) * | 1998-08-24 | 2012-05-15 | Microunity Systems Eng | Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand |
US7932911B2 (en) * | 1998-08-24 | 2011-04-26 | Microunity Systems Engineering, Inc. | Processor for executing switch and translate instructions requiring wide operands |
GB2343319B (en) * | 1998-10-27 | 2003-02-26 | Nokia Mobile Phones Ltd | Video coding |
US6247112B1 (en) * | 1998-12-30 | 2001-06-12 | Sony Corporation | Bit manipulation instructions |
US20020135611A1 (en) * | 1999-03-04 | 2002-09-26 | Trevor Deosaran | Remote performance management to accelerate distributed processes |
DE50014621D1 (de) * | 1999-05-06 | 2007-10-18 | Siemens Ag | Kommunikationseinrichtung mit Mitteln zur Echtzeitverarbeitung von zu übertragenden Nutzdaten |
EP2267896A3 (en) * | 1999-05-12 | 2013-02-20 | Analog Devices, Inc. | Method for implementing finite impulse response filters |
US6542989B2 (en) * | 1999-06-15 | 2003-04-01 | Koninklijke Philips Electronics N.V. | Single instruction having op code and stack control field |
US6757023B2 (en) * | 1999-10-14 | 2004-06-29 | Mustek Systems Inc. | Method and apparatus for displaying and adjusting subtitles of multiple languages between human-machine interfaces |
US7890566B1 (en) * | 2000-02-18 | 2011-02-15 | Texas Instruments Incorporated | Microprocessor with rounding dot product instruction |
US7124160B2 (en) * | 2000-03-08 | 2006-10-17 | Sun Microsystems, Inc. | Processing architecture having parallel arithmetic capability |
US7305540B1 (en) | 2001-12-31 | 2007-12-04 | Apple Inc. | Method and apparatus for data processing |
US6877020B1 (en) | 2001-12-31 | 2005-04-05 | Apple Computer, Inc. | Method and apparatus for matrix transposition |
US7558947B1 (en) | 2001-12-31 | 2009-07-07 | Apple Inc. | Method and apparatus for computing vector absolute differences |
US7114058B1 (en) | 2001-12-31 | 2006-09-26 | Apple Computer, Inc. | Method and apparatus for forming and dispatching instruction groups based on priority comparisons |
US6822654B1 (en) | 2001-12-31 | 2004-11-23 | Apple Computer, Inc. | Memory controller chipset |
US6697076B1 (en) | 2001-12-31 | 2004-02-24 | Apple Computer, Inc. | Method and apparatus for address re-mapping |
US6693643B1 (en) | 2001-12-31 | 2004-02-17 | Apple Computer, Inc. | Method and apparatus for color space conversion |
US7055018B1 (en) | 2001-12-31 | 2006-05-30 | Apple Computer, Inc. | Apparatus for parallel vector table look-up |
US6573846B1 (en) | 2001-12-31 | 2003-06-03 | Apple Computer, Inc. | Method and apparatus for variable length decoding and encoding of video streams |
US7034849B1 (en) | 2001-12-31 | 2006-04-25 | Apple Computer, Inc. | Method and apparatus for image blending |
US7467287B1 (en) | 2001-12-31 | 2008-12-16 | Apple Inc. | Method and apparatus for vector table look-up |
US7681013B1 (en) | 2001-12-31 | 2010-03-16 | Apple Inc. | Method for variable length decoding using multiple configurable look-up tables |
US6931511B1 (en) | 2001-12-31 | 2005-08-16 | Apple Computer, Inc. | Parallel vector table look-up with replicated index element vector |
US7015921B1 (en) | 2001-12-31 | 2006-03-21 | Apple Computer, Inc. | Method and apparatus for memory access |
JP3857614B2 (ja) | 2002-06-03 | 2006-12-13 | 松下電器産業株式会社 | プロセッサ |
US7047383B2 (en) | 2002-07-11 | 2006-05-16 | Intel Corporation | Byte swap operation for a 64 bit operand |
JP3958662B2 (ja) | 2002-09-25 | 2007-08-15 | 松下電器産業株式会社 | プロセッサ |
US20040062308A1 (en) * | 2002-09-27 | 2004-04-01 | Kamosa Gregg Mark | System and method for accelerating video data processing |
US6707398B1 (en) | 2002-10-24 | 2004-03-16 | Apple Computer, Inc. | Methods and apparatuses for packing bitstreams |
US6781528B1 (en) | 2002-10-24 | 2004-08-24 | Apple Computer, Inc. | Vector handling capable processor and run length encoding |
US6781529B1 (en) | 2002-10-24 | 2004-08-24 | Apple Computer, Inc. | Methods and apparatuses for variable length encoding |
US6707397B1 (en) | 2002-10-24 | 2004-03-16 | Apple Computer, Inc. | Methods and apparatus for variable length codeword concatenation |
US20040098568A1 (en) * | 2002-11-18 | 2004-05-20 | Nguyen Hung T. | Processor having a unified register file with multipurpose registers for storing address and data register values, and associated register mapping method |
US7925891B2 (en) * | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
GB2409068A (en) * | 2003-12-09 | 2005-06-15 | Advanced Risc Mach Ltd | Data element size control within parallel lanes of processing |
GB2409067B (en) * | 2003-12-09 | 2006-12-13 | Advanced Risc Mach Ltd | Endianess compensation within a SIMD data processing system |
GB2409060B (en) * | 2003-12-09 | 2006-08-09 | Advanced Risc Mach Ltd | Moving data between registers of different register data stores |
GB2411973B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | Constant generation in SMD processing |
GB2409062C (en) * | 2003-12-09 | 2007-12-11 | Advanced Risc Mach Ltd | Aliasing data processing registers |
GB2409063B (en) * | 2003-12-09 | 2006-07-12 | Advanced Risc Mach Ltd | Vector by scalar operations |
GB2409061B (en) * | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | Table lookup operation within a data processing system |
GB2409064B (en) * | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing in parallel a data processing operation on data elements |
GB2411975B (en) * | 2003-12-09 | 2006-10-04 | Advanced Risc Mach Ltd | Data processing apparatus and method for performing arithmetic operations in SIMD data processing |
GB2409059B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2411976B (en) * | 2003-12-09 | 2006-07-19 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2409066B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2411974C (en) * | 2003-12-09 | 2009-09-23 | Advanced Risc Mach Ltd | Data shift operations |
GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
US9081681B1 (en) | 2003-12-19 | 2015-07-14 | Nvidia Corporation | Method and system for implementing compressed normal maps |
GB2410097B (en) * | 2004-01-13 | 2006-11-01 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing data processing operations on floating point data elements |
GB2411978B (en) * | 2004-03-10 | 2007-04-04 | Advanced Risc Mach Ltd | Inserting bits within a data word |
US9557994B2 (en) | 2004-07-13 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number |
US8078656B1 (en) * | 2004-11-16 | 2011-12-13 | Nvidia Corporation | Data decompression with extra precision |
US7961195B1 (en) | 2004-11-16 | 2011-06-14 | Nvidia Corporation | Two component texture map compression |
US7928988B1 (en) | 2004-11-19 | 2011-04-19 | Nvidia Corporation | Method and system for texture block swapping memory management |
US7916149B1 (en) | 2005-01-04 | 2011-03-29 | Nvidia Corporation | Block linear memory ordering of texture data |
US8417922B2 (en) * | 2006-08-02 | 2013-04-09 | Qualcomm Incorporated | Method and system to combine multiple register units within a microprocessor |
US20080170611A1 (en) * | 2007-01-17 | 2008-07-17 | Srikrishna Ramaswamy | Configurable functional multi-processing architecture for video processing |
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 |
US8610732B2 (en) * | 2008-12-11 | 2013-12-17 | Nvidia Corporation | System and method for video memory usage for general system application |
US9785565B2 (en) | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
US11074305B1 (en) * | 2016-03-10 | 2021-07-27 | Amazon Technologies, Inc. | Extending data store operations using function objects |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4209852A (en) * | 1974-11-11 | 1980-06-24 | Hyatt Gilbert P | Signal processing and memory arrangement |
JPS6057090B2 (ja) * | 1980-09-19 | 1985-12-13 | 株式会社日立製作所 | データ記憶装置およびそれを用いた処理装置 |
US5047975A (en) * | 1987-11-16 | 1991-09-10 | Intel Corporation | Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode |
US5189636A (en) * | 1987-11-16 | 1993-02-23 | Intel Corporation | Dual mode combining circuitry |
NL8800053A (nl) * | 1988-01-11 | 1989-08-01 | Philips Nv | Videoprocessorsysteem, alsmede afbeeldingssysteem en beeldopslagsysteem, voorzien van een dergelijk videoprocessorsysteem. |
US5692139A (en) * | 1988-01-11 | 1997-11-25 | North American Philips Corporation, Signetics Div. | VLIW processing device including improved memory for avoiding collisions without an excessive number of ports |
US4931950A (en) * | 1988-07-25 | 1990-06-05 | Electric Power Research Institute | Multimedia interface and method for computer system |
US5313551A (en) * | 1988-12-28 | 1994-05-17 | North American Philips Corporation | Multiport memory bypass under software control |
US5239654A (en) * | 1989-11-17 | 1993-08-24 | Texas Instruments Incorporated | Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode |
EP0474297B1 (en) * | 1990-09-05 | 1998-06-10 | Koninklijke Philips Electronics N.V. | Very long instruction word machine for efficient execution of programs with conditional branches |
FR2693287B1 (fr) * | 1992-07-03 | 1994-09-09 | Sgs Thomson Microelectronics Sa | Procédé pour effectuer des calculs numériques, et unité arithmétique pour la mise en Óoeuvre de ce procédé. |
JPH0792654B2 (ja) * | 1992-10-23 | 1995-10-09 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ビデオ・データ・フレーム伝送方法および装置 |
JP3206619B2 (ja) * | 1993-04-23 | 2001-09-10 | ヤマハ株式会社 | カラオケ装置 |
US5598514A (en) * | 1993-08-09 | 1997-01-28 | C-Cube Microsystems | Structure and method for a multistandard video encoder/decoder |
US5390135A (en) * | 1993-11-29 | 1995-02-14 | Hewlett-Packard | Parallel shift and add circuit and method |
US5883824A (en) * | 1993-11-29 | 1999-03-16 | Hewlett-Packard Company | Parallel adding and averaging circuit and method |
US5509129A (en) * | 1993-11-30 | 1996-04-16 | Guttag; Karl M. | Long instruction word controlling plural independent processor operations |
US5497373A (en) * | 1994-03-22 | 1996-03-05 | Ericsson Messaging Systems Inc. | Multi-media interface |
US5579253A (en) * | 1994-09-02 | 1996-11-26 | Lee; Ruby B. | Computer multiply instruction with a subresult selection option |
US5798753A (en) * | 1995-03-03 | 1998-08-25 | Sun Microsystems, Inc. | Color format conversion in a parallel processor |
US5774600A (en) * | 1995-04-18 | 1998-06-30 | Advanced Micro Devices, Inc. | Method of pixel averaging in a video processing apparatus |
US5835782A (en) * | 1996-03-04 | 1998-11-10 | Intel Corporation | Packed/add and packed subtract operations |
-
1996
- 1996-08-30 WO PCT/US1996/013900 patent/WO1997009671A1/en active IP Right Grant
- 1996-08-30 AU AU69054/96A patent/AU6905496A/en not_active Abandoned
- 1996-08-30 US US08/836,852 patent/US5963744A/en not_active Expired - Lifetime
- 1996-08-30 CN CNB961912456A patent/CN1153129C/zh not_active Expired - Lifetime
- 1996-08-30 KR KR1019970703017A patent/KR100445542B1/ko not_active IP Right Cessation
- 1996-08-30 DE DE69625790T patent/DE69625790T2/de not_active Expired - Lifetime
- 1996-08-30 JP JP51128197A patent/JP3739403B2/ja not_active Expired - Lifetime
- 1996-08-30 WO PCT/US1996/014155 patent/WO1997009679A1/en active Application Filing
- 1996-08-30 EP EP96929788A patent/EP0789870B1/en not_active Expired - Lifetime
- 1996-08-30 AU AU69134/96A patent/AU6913496A/en not_active Abandoned
- 1996-08-30 US US08/706,059 patent/US6141675A/en not_active Expired - Lifetime
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1296823C (zh) * | 2000-10-05 | 2007-01-24 | 皇家菲利浦电子有限公司 | 可重定目标的编译系统和方法 |
CN104133748A (zh) * | 2006-05-10 | 2014-11-05 | 高通股份有限公司 | 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统 |
CN105765484A (zh) * | 2013-12-23 | 2016-07-13 | 英特尔公司 | 输入输出数据对齐 |
CN105765484B (zh) * | 2013-12-23 | 2019-04-09 | 英特尔公司 | 输入输出数据对齐 |
CN110704368A (zh) * | 2019-09-25 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 基于fpga的安全智能合约处理器的高效运算方法及装置 |
CN112199118A (zh) * | 2020-10-13 | 2021-01-08 | Oppo广东移动通信有限公司 | 指令合并方法、乱序执行设备、芯片及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
AU6905496A (en) | 1997-03-27 |
DE69625790T2 (de) | 2003-11-20 |
JPH10512988A (ja) | 1998-12-08 |
CN1153129C (zh) | 2004-06-09 |
AU6913496A (en) | 1997-03-27 |
US5963744A (en) | 1999-10-05 |
EP0789870B1 (en) | 2003-01-15 |
JP3739403B2 (ja) | 2006-01-25 |
EP0789870A1 (en) | 1997-08-20 |
EP0789870A4 (en) | 1999-06-09 |
DE69625790D1 (de) | 2003-02-20 |
US6141675A (en) | 2000-10-31 |
WO1997009671A1 (en) | 1997-03-13 |
KR100445542B1 (ko) | 2004-11-20 |
WO1997009679A1 (en) | 1997-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1153129C (zh) | 用于处理器定制操作的设备 | |
CN1302380C (zh) | 处理器和编译器 | |
CN100339824C (zh) | 高效执行特长指令字的处理器和方法 | |
CN1094610C (zh) | 可以对复合操作数进行压缩操作和拆开操作的微处理器 | |
CN1107905C (zh) | 在分组数据上执行乘-加运算的装置 | |
CN1210647C (zh) | 适于作由正值处理及饱和运算处理组成的修整处理的处理器 | |
CN1252587C (zh) | 移位分组数据的方法、装置和处理数字音频信号的系统 | |
CN1112635C (zh) | 多媒体信号处理器中的单指令多数据处理方法及其装置 | |
CN1117316C (zh) | 采用多个向量寄存器组的单指令多数据处理方法及其装置 | |
CN1801082A (zh) | 在分组数据上执行乘-加运算的装置 | |
CN1656495A (zh) | 标量/矢量处理器 | |
CN1684058A (zh) | 处理器 | |
CN1862521A (zh) | 处理器 | |
CN1115631C (zh) | 具有risc结构的八位微控制器 | |
CN1607518A (zh) | 在Montgomery乘法内利用SIMD指令 | |
CN1862486A (zh) | 数字信号处理器 | |
CN1279435C (zh) | 数字信号处理器 | |
CN1152300C (zh) | 多媒体信号处理器中的单指令多数据处理方法及其装置 | |
CN100351782C (zh) | 用于设计数字处理器的方法以及装置 | |
CN1326566A (zh) | 对多个带符号的数据值执行算术运算的数据处理系统和方法 | |
CN1207527A (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 | ||
ASS | Succession or assignment of patent right |
Owner name: NXP CO., LTD. Free format text: FORMER OWNER: PHILIP ELECTRONS(NORTH AMERICA) CORP. Effective date: 20100129 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20100129 Address after: Holland Ian Deho Finn Patentee after: Koninkl Philips Electronics NV Address before: American New York Patentee before: Philips Electronics Na |
|
CX01 | Expiry of patent term |
Granted publication date: 20040609 |
|
EXPY | Termination of patent right or utility model |