JP2009527035A - マイクロプロセッサにおけるパックされた加減演算 - Google Patents

マイクロプロセッサにおけるパックされた加減演算 Download PDF

Info

Publication number
JP2009527035A
JP2009527035A JP2008554452A JP2008554452A JP2009527035A JP 2009527035 A JP2009527035 A JP 2009527035A JP 2008554452 A JP2008554452 A JP 2008554452A JP 2008554452 A JP2008554452 A JP 2008554452A JP 2009527035 A JP2009527035 A JP 2009527035A
Authority
JP
Japan
Prior art keywords
halfword
register
designated
adder
alu
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.)
Abandoned
Application number
JP2008554452A
Other languages
English (en)
Inventor
ペダーセン,ロニー
レノ,エリク・ケイ
ストロム,オイビンド
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.)
Atmel Corp
Original Assignee
Atmel 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 Atmel Corp filed Critical Atmel Corp
Publication of JP2009527035A publication Critical patent/JP2009527035A/ja
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • 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
    • 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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Discrete Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

パックされたハーフワード加算および減算演算が、レジスタファイル(19)の指定されたソースレジスタ(REGA,REGB)の指定された上部(_T)または下部(_B)ハーフワード位置から得られるハーフワードオペランドに対して並行して行なわれる。このような演算の和および差の結果は、指定された宛先レジスタ(DST_REG)の上部および下部ハーフワード位置のそれぞれへとパックされる。マイクロプロセッサは、加算演算または減算演算のいずれかを選択されたハーフワードオペランド(OP B T,OP_A_T,OP_B_B,OP_AB)に対して行なうよう独立して選択可能な(ADDSUB_CTL_T,ADDSUB CTL B)別個のハーフワード加算器(13,15)に選択的に分割され得る加算器回路網を有する算術論理ユニット(ALU11)を含む。ALUのハーフワード加算器は、上部および下部ハーフワード位置の中から選択を行なうマルチプレクサ(21−26)の組を介してソースレジスタからオペランドにアクセスする。和および差の結果に対する2等分および飽和修正を伴う演算も与えられ得る。

Description

技術背景
この発明は、一般的には、コンピュータ処理ハードウェアにおける命令処理および算術演算の実行と、このような演算の実行において効率性を改善するための、このような処理ハードウェアの具体的な適合例とに関する。この発明は、より特定的には、高速フーリエ変換および関係付けられる変換の実現例において特に用いられるバタフライ演算に関する。
背景技術
音声および映像信号処理ならびにマルチメディアの圧縮から自動車の衝突検知に至るまで、今日、広範囲のアプリケーションが自身のアルゴリズムにおいて信号の離散変換を用いる。このような離散変換は、たとえば離散コサイン変換および離散フーリエ変換を含み、1秒あたり数十メガビットを超えるデータ速度でリアルタイムに実行されることがしばしば必要となる。これは、高クロック速度および高速なプロセッサを要求するだけでなく、変換計算における効率性およびこのようなプロセッサによるデータ処理における効率性も要求する。離散変換演算はしばしば、高速フーリエ変換(FFT)を用いることにより効率的に計算され得る。これには、2つの基礎的な「性質」、すなわち時間間引き(クーリー−ターキー;Cooley-Tukey)と、周波数間引き(サンド−ターキー;Sande-Tukey)とがある。FFTの両方の性質は、基礎的な計算要素としていわゆる「バタフライ」計算を含む。バタフライ計算は、他の変換(たとえばウォルシュ−アダマール;Walsh-Hadamard)、およびビタビ符号化/復号化アルゴリズムにおいても用いられる。したがって、処理ハードウェアにおいてバタフライ計算を効率的に実行することには、多くのアプリケーションにおいて多大な価値がある。
基本的なバタフライ計算は、複素数のオペランドの実数および虚数成分の加算および減算の両方を伴う。たとえば、時間間引きのFFT変形例では、複素数値a、b、ci、A、およびBを有する1つのバタフライ演算を行なうための代表的な擬似コードは以下のように与えられる。式中、Re( )およびIm( )は、複素数値の実数および虚数成分をそれぞれ示す。
Figure 2009527035
この計算から、同じ入力オペランドに対して、加算および減算演算の両方について2つの発生があることがわかり得る。
計算において用いられる固定小数点オペランドの精度がマイクロプロセッサのワード長(wordlength)のそれの半分であり、かつマイクロプロセッサのALUが、パックされた
ハーフワードに対して演算を行うための単一命令複数データ(single-instruction, multiple-data;SIMD)命令をサポートするならば、マイクロプロセッサは1つの演算において加算および減算の両方を実行するよう用いられるかもしれない。たとえば、(英国の会社組織である)ARMリミテッド(ARM Limited)が提供するARM11プロセッサは、パックされたデータに対して同時にハーフワードの加算および減算を行ない得る命令を有する。したがって、命令SADDSUBX Rd,Rn,RmおよびUADDSUBX Rd,Rn,Rmは、
Figure 2009527035
の符号付きおよび符号なしのものをそれぞれ行なう。
同様に、命令SSUBADDX Rd,Rn,RmおよびUSUBADDX Rd,Rn,Rmは、
Figure 2009527035
の符号付きおよび符号なしのものをそれぞれ行なう。
しかしながらこれらの命令は、ハーフワードオペランドの両方が同じレジスタにパックされなければ、バタフライ演算の加減演算を実行し得ず、これにより、さらなる処理が必要になる。
米国特許出願公報第2004/0078404号(メーシー(Macy)ら)は、8点の時間間引きウォルシュ−アダマール変換が効率的に計算され得るように、多くの演算の中から水平またはイントラ加減演算を、第1のオペランドの4つのパックされたデータ要素(x3,x2,x1,x0)と、第2のオペランドの4つのパックされたデータ要素(y3,y2,y1,y0)とに対して行ない、4つのパックされたデータ要素(y2+y3,y1−y0,x2+x3,x1−x0)または代替的には(y2−y3,y1+y0,x2−x3,x1+x0)を含む結果を生成し得るプロセッサを示す。さらに、高速フーリエ変換の計算がSIMD乗算演算との組合せにおいて示唆される。
米国特許第6,754,687号(キュラクJr.(Kurak,Jr.)ら)は、二次元データマトリックスに対して効率的に逆離散コサイン変換を計算するための処理システムを記載する。この計算は、クワッドハーフワードデータ(4つのパックされた16ビットのオペランド)またはデュアルワードデータ(2つの32ビットのオペランド)のいずれかに対する別個の加算および減算演算からなるバタフライ(BFLYS)命令を行なうことを含む。
発明の概要
この発明は、異なるソースレジスタに保存される場合でさえ、オペランドとしてどのハーフワードを用いるかを特定し得るパックされたハーフワード加算および減算演算を実行する方法を提供する。これらのハーフワードオペランドは、レジスタまたは他のアドレス指定可能な記憶位置の上または下部分のいずれかに位置し得る。それぞれの和および差の結果が、指定された宛先レジスタの上および下部分のそれぞれへとパックされる。加算および減算の両方は並行して行われる。当該和および差の結果に対する、2等分および符号付きまたは符号なし飽和修正を伴うハーフワード加算および減算演算も与えられてもよい。
この発明はさらに、このパックされたハーフワード加算および減算演算を実現するよう、マイクロプロセッサに対する修正例を提供する。プロセッサのALUは、2つのハーフワード加算器へと分けられ得、オペランドは、この演算のためのデコードされた命令に従って生成されるマルチプレクサの制御を介して、指定されるソースレジスタからアクセス可能である。これらハーフワード加算器は、一方の加算器では加算を行い、他方の加算器では減算を行うよう設定され得、これら加算器からの和および差の出力は、宛先レジスタの上および下部分のそれぞれに供給される。
発明の詳細な説明
この発明は、高速フーリエ変換またはその他の類似の変換を行なうようしばしば用いられるバタフライ計算の部分を高速化するための手段および方法を提供する。特に、同じハーフワードオペランドに対する、パックされたハーフワードの加算および減算演算がマイクロプロセッサにおいて実現され得る。「マイクロプロセッサ」という用語は、ロード−ストア(RISC)およびメモリ指向(CISC)アーキテクチャの両方の様々なデータ処理ハードウェアと、汎用プロセッサ、およびデジタル信号プロセッサのようなアプリケーション独自のプロセッサの両方と、埋込プロセッサとを含むことを意図する。パックされた加減演算は、プロセッサの命令セット内の対応する命令によって、マイクロプロセッサに示され得る。
例示的なマイクロプロセッサ実現例は、16ビット(ハーフワード)の精度と(1.15)の形式とを有する計算で用いられる固定小数点数とともに、32ビットのワード長を含んでもよい。これは、各ハーフワードの最上位ビットが符号を示すとともに、残る15個のそれより下位ビットは小数部ビットであるということを意味する。ハーフワードはレジスタまたはメモリワードの上および下部分の両方にパックされ得、ビットにおける上部分[31:16]はビットにおける下部分[15:0]とは別個の値である。いくつかの場合において、ある複素数の実数および虚数部分を同じレジスタまたはメモリワードの対応する上および下部分に入れることは便利であるように思われるかもしれないが、これはある値の実数および虚数部分を一緒に保つのに、絶対に必要というわけではなく、または演算の後にデータのリシャッフリングが必須であるために効率性の観点から望ましくもない。通常は、それらが配置され得るどのワードにおいても、それらの位置を追跡することが単純に最良である。この発明が提供する柔軟性により、ハーフワードオペランドが異なるレジスタに位置する場合でさえも、パックされた加減演算が行われることが可能になる。
図1を参照すると、この発明を効率的に実現するよう特別に適合された、マイクロプロセッサの関連部分が示される。算術論理ユニット(ALU)11は、2つのハーフワード加算器13および15の間に結合されるマルチプレクサ17を有する。マルチプレクサ17は制御信号PROPAGATE_CARRYを受取る。この制御信号が1と等しい場合、下部ハーフワード加算器15からのCARRY_OUTがCARRY_INとして上部ハーフワード加算器13に供給され、これによりコンポーネント13、15、および17
が通常のフルワード加算器となる。しかしながら、制御信号PROPAGATE_CARRYが0に設定されるときはいつでも、下部ハーフワード加算器15からのCARRY_OUTは上部ハーフワード加算器13に伝搬されない。その代わり、上部ハーフワード加算器13は、そのCARRY_IN値として、マルチプレクサ17から0を受取る。効果的なことに、PROPAGATE_CARRYを0に設定することにより、ワード加算器は2つの別個のハーフワード加算器13および15になる。この0の制御設定は、この発明に従ったパックされたハーフワードの加減演算を実行する際に用いられるものである。
上部および下部ハーフワード加算器13および15はさらに、加算または減算が行なわれるかどうか、すなわち、対応するハーフワードオペランド入力OP_B_TまたはOP_B_Bが補完されることになるか否かを決定する制御信号ADDSUB_CTL_TおよびADDSUB_CTL_Bをそれぞれ受取る。制御信号のいずれかまたは両方が0に設定される場合、関連する入力OP_B_TまたはOP_B_Bで与えられる値は変更されないままであり、加算(A+B)が行なわれる。制御信号のいずれかまたは両方が1に設定される場合、関連する入力OP_B_TまたはOP_B_Bで与えられる値は補完され、減算(A−B)が行なわれる。パックされたハーフワード加減演算の場合、上部および下部ハーフワード加算器13および15がハーフワードオペランドに対してそれぞれの加算および減算演算を行なうように、これらの制御信号のうちの1つ、たとえばADDSUB_CTL_Tが加算のために設定され、これらの制御信号の他方、たとえばADDSUB_CTL_Bが減算のために設定される。
ALU11は、さまざまなレジスタを含むレジスタファイル19へのアクセスを有する。パックされたハーフワードの加減演算においては、REG AおよびREG Bとしてここで指定される、レジスタファイル19における2つのレジスタが、対応する命令によって、当該演算についてのソースレジスタとして示されるとともに、その一方ではDST
REGとして指定される、レジスタファイル19における別のレジスタが、命令によって、当該演算の結果のための宛先レジスタとして示される。パックされたデータの場合、レジスタファイルにおけるレジスタの各々は、上部ハードワード、すなわち、REGA_T、REGB_T、およびDST_REG_Tと、異なる下部ハーフワード、すなわち、REGA_B、REGB_B、およびDST_REG_Bとの両方に対して指定される記憶位置を有する。
柔軟性の改善のために、ALU11は、REG AおよびREG Bとして指定される、命令が特定したレジスタから、それぞれのソースレジスタREG AおよびREG Bからの選択されたハーフワードのオペランド入力を提供するマルチプレクサ21−26の組を介してオペランドに間接的にアクセスするようにされている。
マルチプレクサ22、23、25、および26に供給される制御信号HALFWORD_ADDが0に設定される場合、当該制御信号によって、それぞれのレジスタAおよびBからのそれぞれの上部および下部ハーフワードがオペランド入力としてALU11の上部および下部ハーフワード加算器13および15のそれぞれに供給される。1に設定された制御信号PROPAGATE_CARRYと組合せると、ALU11は通常のフルワード加算器として動作することになる。
しかしながら、HALFWORD_ADDが1に設定されると、マルチプレクサ22および23は、ハーフワード加算器13および15の両方へのハーフワードオペランド入力として、REG Bからマルチプレクサ21によって選択される同じハーフワードを供給する。このハーフワードオペランドは上部ハーフワード加算器13に入力される際にはOP_B_Tとして指定され、下部ハーフワード加算器15に入力される際にはOP_B_Bとして指定される。(同じハーフワードがハーフワード加算器13および15の両方へ
のオペランド入力として選択されるこの場合には、当該オペランドは一般的にはOP_Bとしても指定され得る。)同様に、マルチプレクサ25および26は、ハーフワード加算器13および15の両方へのハーフワードオペランド入力として、REG Aからマルチプレクサ24によって選択される同じハーフワードを供給する。このハーフワードオペランドは、上部ハーフワード加算器13に入力される際にはOP_A_Tとして指定され、下部ハーフワード加算器15に入力される際にはOP_A_Bとして指定される。(同様に、同じハーフワードがハーフワード加算器13および15の両方へのオペランド入力として選択される場合、当該オペランドはOP_Aとしても指定され得る。)0に設定された制御信号PROPAGATE_CARRYと組合せると、ALU11はハーフワード加算器の対として動作することになる。
マルチプレクサ21および24のそれぞれに供給される制御信号OP_B_TOPおよびOP_A_TOPは、レジスタREG BおよびREG Aのそれぞれからの上部または下部ハーフワードが選択されるかどうか決定する。制御信号のいずれかまたは両方が1に設定されるならば、対応する上部ハーフワードは、関連するハーフワードオペランドとして選択されることになる。
したがって、対象のいくつかの制御信号の組合せは以下のものを含む。
Figure 2009527035
これは和を計算する通常のフルワード加算器である。
Figure 2009527035
これは差を計算する通常のフルワード加算器である。
Figure 2009527035
これにより、レジスタAおよびBからの下部ハーフワードの和および差のそれぞれが、宛先レジスタの上部および下部ハーフワード位置のそれぞれに配置される。
(d)以下の点を除いて、(c)と同じである。
Figure 2009527035
この変形例により、レジスタAおよびBからの下部ハーフワードの差および和のそれぞれが、宛先レジスタの上部および下部ハーフワード位置のそれぞれに配置される。
(e)以下の点を除いて、(c)と同じである。
Figure 2009527035
これは、オペランドとしてレジスタAおよびBからの上部ハーフワードを用いる。和および差の宛先を反転させる、(d)に類似した変形例も可能である。
(f)以下の点を除いて、(c)と同じである。
Figure 2009527035
これは、オペランドとしてREG Aからの下部ハーフワードと、REG Bからの上部ハーフワードとを用いる。
同様に、
(g)以下の点を除いて、(c)と同じである。
Figure 2009527035
これは、オペランドとしてREG Aからの上部ハーフワードと、REG Bからの下部ハーフワードとを用いる。
変形例(f)または(g)のいずれかにおいて、ADDSUB_CTL_T=1であってADDSUB_CTL_B=0であるならば、(d)でのように、差がDST REGの上部ハーフワードに入るように和と差の宛先が反転され得る。
図1に示される適合例を有するマイクロプロセッサを用いると、変換関数を実行する際に用いられるバタフライ計算をより効率的に実行し得る。当該バタフライ計算は、以下の例示的なアセンブリコードに変形する。
Figure 2009527035
(!右へ15ビット分シフトすることにより、32ビットの固定小数点の積が乗算によって生成された後にオリジナルの16ビット(1.15)の形式が復元される。)
Figure 2009527035
特に、指定されたソースレジスタの上または下部分から同じハーフワードオペランドが選択されるパックされたハーフワードの加減演算(paddsub.h)が実行され得、和および差が、たとえば上記のオプション(c)または(e)のような、指定された宛先レジスタの上部および下部ハーフワードのそれぞれに(飽和なしで)パックされる。これにより、バタフライ計算
Figure 2009527035
の4つの以前には別個であった和および差の演算がここで組合され、パックされたハーフワード加減演算の対になる。
Figure 2009527035
式中、第1の言及されたパラメータは指定された宛先レジスタであり、最後の2つの言及されたパラメータは指定されたAおよびBのソースレジスタであり、これらはここでは指定されたAおよびBのソースレジスタからの下部ハーフワードを用いるとして識別される。
Figure 2009527035
である命令
Figure 2009527035
に対応する演算の均等な機能は擬似コードの項で簡便に以下のように記載され得る。
Figure 2009527035
(なお、しかしながら、プロセッサハードウェアは、ソフトウェアのような記述によって示唆される連続的なステップのシーケンスの代わりに、1つの演算クロックサイクルにおける単一の統合された動作としてこのパックされた加減演算を行なう。)この機能記述のif−elseのラインは、ALU11へのOp_AおよびOp_Bハーフワードオペランド入力を選択するマルチプレクサ21−26によって、図1のプロセッサ回路網において行なわれる。機能記述の最後の2つのラインは、ハーフワード加算器13および15によって、かつ、和および差の結果を宛先レジスタDST REGの上部および下部ハー
フワード位置のそれぞれに与えることによって行なわれる加減演算に対応する。
代替的には、対応する命令PSUBADD.Hが代わりに用いられ得る。これは、差の結果が上部ハーフワードに入り、和が下部ハーフワードに入るように和および差の結果の宛先が反転されるということを除いて、上述したパックされた加減演算PADDSUB.Hと同じである。
Figure 2009527035
これは、上述した変形例(d)と、変形例(e)、(f)、または(g)などの類似している、宛先が反転されたものとに対応する。
この発明に従ったパックされた加算および減算の他の変形例が可能である。たとえば、1つ以上の他の命令が、パックされた加減演算に2等分(paddsubh.shおよびpsubaddh.sh)を与え得る。2等分は、ハーフワードの和および差の結果を、それらを宛先レジスタに書込む前に、2で割る算術的除算(1ビット位置分だけ右にシフトすることにより実現される)を行なうことを伴う。この右への算術シフト(arithmetic
shift right; asr)は、最上位ビットの符号を維持する。すなわち、
Figure 2009527035
{a,b}は、aおよびbの連結を示す。2等分は、結果の成長の制限を可能にするので、しばしばデジタル信号処理(DSP)アプリケーションにおいて用いられる。
1つ以上の他の命令が、パックされた加減演算に符号付きまたは符号なし飽和(paddsubs.sh,paddsubs.uh,psubadds.sh,psubadds.uh)を与え得る。飽和は、オーバーフローまたはアンダーフロー状態によって引起される誤差を最小限にするのに用いられる。2つのオペランドの和または差が数の形式によって示され得る範囲の外側にあるならば、和または差は、当該形式によって示され得る最大または最小の数値に設定される。
符号なし飽和の場合、ハーフワードの値0000HからFFFFHまでが、0から65535までの範囲の自然数(または、0から65535/65536までの小数値)を示し得る。正の数の加算の間にオーバーフローが起こり得、その一方、正の数の減算の間にアンダーフローが起こり得る。オーバーフローまたはアンダーフロー状態は、関連するハーフワード加算器からのキャリー出力(carry output)の生成によって検知される。加算の結果発生するオーバーフローの場合、飽和値FFFFH(最大の符号なしの数)が結果として割当てられる。減算の結果発生するアンダーフローの場合、飽和値0(最小の符号なしの数)が結果として割当てられる。
符号付き飽和の場合、ハーフワード値は、(符号付きビット8000HからFFFFHまでと0000Hから7FFFHまでとによって示される)−32768から32767までの範囲にある。(均等な小数値が、これらの符号付きビットによって同様に示され得る。)2つの正の値の加算によって当該範囲の最大値を上回り得、それと同様に、ある正の値
から負の値の減算によっても当該最大値を上回り得る。その場合には、最も大きい(最大の正の)符号付きの数(7FFFHで示される)が結果に割当てられることになる。同様に、2つの負の値の加算、または負の値からの正の値の減算により、当該範囲における最小値を下回る和または差の結果が生み出され得る。その場合には、最も小さい(最小の負の)符号付きの数(8000Hで示される)が結果の代わりに割当てられることになる。オーバーフローまたはアンダーフローの存在、したがって飽和についての必要性が、4つの状態、すなわち
Figure 2009527035
のいずれかを判断することによって検知される。
式中、〜は論理NOTを意味し、&は論理ANDを意味し、|は論理ORを意味する。オーバーフロー/アンダーフロー状態は、各オペランドの符号ビット(ハーフワードビット15)と和/差の結果との比較の際に示される。オーバーフローは、オペランドAの符号ビットによって単純にアンダーフローと識別され得る。
Figure 2009527035
変形例を実現するよう、結果修正論理ユニット31が、ALU11から出力される和/差の出力、SUMDIFF_TおよびSUMDIFF_Bと、対応する宛先レジスタのハーフワード、DST_REG_TおよびDST_REG_Bとの間に挿入されてもよい。この結果修正論理31は、明確となるように図2にさらに詳細に示されるように、それぞれの結果SUMDIFF_TおよびSUMDIFF_Bのそれぞれの上部および下部ハーフワード宛先のための、概して同じである結果変形論理サブユニット31Tおよび31Bである。図2はさらに、これらサブユニットが必要とするさまざまなパラメータおよび制御入力を示す。このような論理ユニット31に加えられる制御信号HWMOD[1:0]は、変形例のどれか、すなわち、修正なし、2等分、符号なし飽和、または符号付き飽和が適用されることになるかを決定する。ALUへのオペランド入力(符号ビット)も、それぞれのADDSUB_CTL信号とともに、論理サブユニット31Tおよび31Bに結合される。上部および下部出力SUMDIFF_TおよびSUMDIFF_Bの両方に対応する論理は同じものである。このような論理ユニットからの修正された出力MODOUT[15:0]が、宛先レジスタDST REGへの入力として用いられる。
この発明に従ったパックされた加減演算を実行するための、マイクロプロセッサハードウェアの関連部分の例示的な実現例の概略ブロック図である。 宛先レジスタにおける結果の記憶の前に、パックされた加減結果に対して2等分または飽和修正を行なうための、図1の実現例における結果修正論理をより詳細に示す概略ブロック図である。

Claims (9)

  1. 選択されたオペランドの対に対して、パックされたハーフワードの加算および減算演算を実行するようにされるプロセッサ回路であって、
    2つのハーフワード加算器に選択的に分けられ得る加算器回路網を有する算術論理ユニット(ALU)を含み、各ハーフワード加算器は前記ハーフワード加算器へのそれぞれのオペランド入力で受取られたオペランドに対して加算または減算演算のいずれかを行なうよう独立的に選択可能であり、ALUは、上部および下部ハーフワード記憶位置を有する選択可能なレジスタの組を有するレジスタファイルへのアクセスを有し、ALUのハーフワード加算器は、当該レジスタファイルにおける、命令が指定した宛先レジスタの上部および下部ハーフワード記憶位置のそれぞれに対して選択的に結合可能である出力を有し、前記プロセッサ回路はさらに、
    レジスタファイルとALUのハーフワード加算器のオペランド入力との間に結合されるマルチプレクサの組を含み、マルチプレクサの組は、レジスタファイルの指定された第1のソースレジスタの指定された上部または下部ハーフワードからの第1のオペランド入力と、レジスタファイルの指定された第2のソースレジスタの指定された上部または下部ハーフワードからの第2のオペランド入力とを、命令が決定した制御信号に応答して選択するよう構成され、当該指定された第2のソースレジスタは必ずしも当該指定された第1のソースレジスタと同じではない、プロセッサ回路。
  2. マルチプレクサの組は、指定された第1および第2のソースレジスタからの上部および下部ハーフワードオペランドの間での選択のための上部/下部制御信号に応答するマルチプレクサの第1の組を含む、請求項1に記載のプロセッサ回路。
  3. マルチプレクサの組はさらに、指定された第1および第2のソースレジスタからのハーフワードおよびフルワードのオペランドの間での選択のためのハーフワード/フルワード制御信号に応答するマルチプレクサの第2の組を含む、請求項2に記載のプロセッサ回路。
  4. ALUは、下部ハーフワード加算器のキャリー出力と上部ハーフワード加算器のキャリー入力との間に結合されるマルチプレクサを含み、当該マルチプレクサは、フルワード加算器を作り出すようキャリー出力を伝搬することと、別個のハーフワード加算器を作り出すようキャリー出力を伝搬しないこととの間で選択を行うためのプロパゲート−キャリー制御信号に応答する、請求項1に記載のプロセッサ回路。
  5. 2つのハーフワード加算器は、それぞれのハーフワード加算器によってオペランド入力の加算または減算を指定するための別個の加算/減算制御信号に応答する、請求項1に記載のプロセッサ回路。
  6. ALUの出力と宛先レジスタとの間に結合される結果修正論理をさらに含み、当該結果修正論理は、命令が指定する2等分、符号なし飽和、符号付き飽和、および修正なしのうちのいずれか1つ以上を、ALUのハーフワード出力のそれぞれに対して選択的に実現するよう構成される、請求項1に記載のプロセッサ回路。
  7. プロセッサ回路の単一演算サイクルにおけるパックされたハーフワードの加算および減算演算を実行する方法であって、
    算術論理ユニット(ALU)によってアクセス可能なレジスタファイルの指定された第1のソースレジスタの指定された上部または下部ハーフワードから第1のオペランドを、マルチプレクサの組を用いて選択するステップと、
    当該レジスタファイルの指定された第2のソースレジスタの指定された上部または下部
    ハーフワードから第2のオペランドをマルチプレクサの組を用いて選択するステップとを含み、当該指定された第2のソースレジスタは指定された第1のソースレジスタと必ずしも同じではなく、前記方法はさらに、
    プロセッサ回路の単一演算サイクルにおいて、選択された第1および第2のオペランドのハーフワード加算およびハーフワード減算のそれぞれを、ALUにて並列に行なうステップと、
    レジスタファイルの指定された宛先レジスタの上部および下部ハーフワード位置のそれぞれに対して、並列なハーフワードの加算およびハーフワードの減算演算の結果得られる和および差を与えるステップとを含む、方法。
  8. 和および差を、指定された宛先レジスタの上部および下部ハーフワード位置のそれぞれに対して与える前に、ビットシフトを通じて2等分するステップをさらに含む、請求項7に記載の方法。
  9. 和および差のそれぞれにおけるオーバーフローまたはアンダーフロー状態を検知し、かつ、もしこのような状態が検知されるならば、このような状態が起こる和または差を指定された宛先レジスタに与える前に、当該和または差を飽和させるステップをさらに含む、請求項7に記載の方法。
JP2008554452A 2006-02-13 2007-01-17 マイクロプロセッサにおけるパックされた加減演算 Abandoned JP2009527035A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/352,711 US7555514B2 (en) 2006-02-13 2006-02-13 Packed add-subtract operation in a microprocessor
PCT/US2007/060625 WO2007095408A2 (en) 2006-02-13 2007-01-17 Packed add-subtract operation in a micrprocessor

Publications (1)

Publication Number Publication Date
JP2009527035A true JP2009527035A (ja) 2009-07-23

Family

ID=38370019

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008554452A Abandoned JP2009527035A (ja) 2006-02-13 2007-01-17 マイクロプロセッサにおけるパックされた加減演算

Country Status (8)

Country Link
US (2) US7555514B2 (ja)
EP (1) EP1987424A4 (ja)
JP (1) JP2009527035A (ja)
KR (1) KR20080094833A (ja)
CN (1) CN101438239A (ja)
NO (1) NO20083888L (ja)
TW (1) TW200816045A (ja)
WO (1) WO2007095408A2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7555514B2 (en) * 2006-02-13 2009-06-30 Atmel Corportation Packed add-subtract operation in a microprocessor
US10802990B2 (en) * 2008-10-06 2020-10-13 International Business Machines Corporation Hardware based mandatory access control
CN102375805B (zh) * 2011-10-31 2014-04-02 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
US9563401B2 (en) 2012-12-07 2017-02-07 Wave Computing, Inc. Extensible iterative multiplier
US9933996B2 (en) 2012-12-20 2018-04-03 Wave Computing, Inc. Selectively combinable shifters
US10289382B2 (en) 2012-12-20 2019-05-14 Wave Computing, Inc. Selectively combinable directional shifters
US9395988B2 (en) 2013-03-08 2016-07-19 Samsung Electronics Co., Ltd. Micro-ops including packed source and destination fields
US9830150B2 (en) * 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US10296342B2 (en) * 2016-07-02 2019-05-21 Intel Corporation Systems, apparatuses, and methods for cumulative summation
US20180088946A1 (en) * 2016-09-27 2018-03-29 Intel Corporation Apparatuses, methods, and systems for mixing vector operations
GB2564853B (en) * 2017-07-20 2021-09-08 Advanced Risc Mach Ltd Vector interleaving in a data processing apparatus
US10802826B2 (en) 2017-09-29 2020-10-13 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US10552154B2 (en) 2017-09-29 2020-02-04 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US11074073B2 (en) 2017-09-29 2021-07-27 Intel Corporation Apparatus and method for multiply, add/subtract, and accumulate of packed data elements
US11243765B2 (en) * 2017-09-29 2022-02-08 Intel Corporation Apparatus and method for scaling pre-scaled results of complex multiply-accumulate operations on packed real and imaginary data elements
US11256504B2 (en) 2017-09-29 2022-02-22 Intel Corporation Apparatus and method for complex by complex conjugate multiplication
US10795676B2 (en) 2017-09-29 2020-10-06 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US10514924B2 (en) 2017-09-29 2019-12-24 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US10795677B2 (en) 2017-09-29 2020-10-06 Intel Corporation Systems, apparatuses, and methods for multiplication, negation, and accumulation of vector packed signed values
US10534838B2 (en) 2017-09-29 2020-01-14 Intel Corporation Bit matrix multiplication
US10664277B2 (en) 2017-09-29 2020-05-26 Intel Corporation Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words
US11880683B2 (en) * 2017-10-31 2024-01-23 Advanced Micro Devices, Inc. Packed 16 bits instruction pipeline
US11502715B2 (en) * 2020-04-29 2022-11-15 Eagle Technology, Llc Radio frequency (RF) system including programmable processing circuit performing block coding computations and related methods
US11411593B2 (en) * 2020-04-29 2022-08-09 Eagle Technology, Llc Radio frequency (RF) system including programmable processing circuit performing butterfly computations and related methods

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721892A (en) * 1995-08-31 1998-02-24 Intel Corporation Method and apparatus for performing multiply-subtract operations on packed data
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
GB2317466B (en) * 1996-09-23 2000-11-08 Advanced Risc Mach Ltd Data processing condition code flags
US5909572A (en) * 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
GB2326253A (en) * 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
US6408320B1 (en) * 1998-01-27 2002-06-18 Texas Instruments Incorporated Instruction set architecture with versatile adder carry control
US7395302B2 (en) * 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US6839728B2 (en) * 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US6272512B1 (en) * 1998-10-12 2001-08-07 Intel Corporation Data manipulation instruction for enhancing value and efficiency of complex arithmetic
EP2267896A3 (en) * 1999-05-12 2013-02-20 Analog Devices, Inc. Method for implementing finite impulse response filters
US6754687B1 (en) * 1999-11-12 2004-06-22 Pts Corporation Methods and apparatus for efficient cosine transform implementations
JP3716695B2 (ja) * 1999-12-24 2005-11-16 日本電気株式会社 高速アダマール変換器
KR100399932B1 (ko) * 2001-05-07 2003-09-29 주식회사 하이닉스반도체 메모리의 양을 감소시키기 위한 비디오 프레임의압축/역압축 하드웨어 시스템
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
KR100645442B1 (ko) 2005-07-25 2006-11-14 삼성전자주식회사 칼라 하프톤 스크린 설계 방법 및 그 장치
US7555514B2 (en) 2006-02-13 2009-06-30 Atmel Corportation Packed add-subtract operation in a microprocessor

Also Published As

Publication number Publication date
TW200816045A (en) 2008-04-01
EP1987424A4 (en) 2009-07-29
US7555514B2 (en) 2009-06-30
WO2007095408A2 (en) 2007-08-23
US20070192396A1 (en) 2007-08-16
US20090265410A1 (en) 2009-10-22
KR20080094833A (ko) 2008-10-24
NO20083888L (no) 2008-09-11
WO2007095408A3 (en) 2008-11-20
CN101438239A (zh) 2009-05-20
EP1987424A2 (en) 2008-11-05
US8224883B2 (en) 2012-07-17

Similar Documents

Publication Publication Date Title
JP2009527035A (ja) マイクロプロセッサにおけるパックされた加減演算
US10474466B2 (en) SIMD sign operation
KR101300431B1 (ko) 내적 연산을 수행하기 위한 명령 및 논리
JP4480997B2 (ja) Simd整数乗算上位丸めシフト
KR101005718B1 (ko) 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛
JP4869552B2 (ja) 符号乗算処理を実行する方法及び装置
US7917568B2 (en) X87 fused multiply-add instruction
GB2553783A (en) Vector multiply-add instruction
JP5456167B2 (ja) マイクロプロセッサおよびマイクロプロセッサ上での精度が改善された積の和計算のための方法
KR100307980B1 (ko) 산술 또는 논리 연산의 수행과 동시에 조건 코드 비트를 발생하는 방법 및 시스템
Le-Huu et al. Towards a RISC instruction set architecture for the 32-bit VLIW DSP processor core
JP2006171827A (ja) 演算処理装置および演算処理プログラム

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090610

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090617

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090617

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091210

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20100118