JP2002519957A - 符号関数を処理する方法および装置 - Google Patents

符号関数を処理する方法および装置

Info

Publication number
JP2002519957A
JP2002519957A JP2000557623A JP2000557623A JP2002519957A JP 2002519957 A JP2002519957 A JP 2002519957A JP 2000557623 A JP2000557623 A JP 2000557623A JP 2000557623 A JP2000557623 A JP 2000557623A JP 2002519957 A JP2002519957 A JP 2002519957A
Authority
JP
Japan
Prior art keywords
value
bit
sign
bits
processor
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.)
Pending
Application number
JP2000557623A
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2002519957A publication Critical patent/JP2002519957A/ja
Pending legal-status Critical Current

Links

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/30094Condition code generation, e.g. Carry, Zero flag
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • 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/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • 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/49994Sign extension

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Image Processing (AREA)
  • Executing Machine-Instructions (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 符号(x)関数を処理および使用する方法および装置を開示する。本発明によれば、符号(x)関数は、例えば、本発明の簡単な回路を中央処理装置(CPU)に組み込むことによりハードウェアで処理される。符号(x)関数を処理する既知のソフトウェアアプローチとは異なるハードウェアアプローチをすることにより、本発明は、SISDシステムおよびSIMDシステムの両方に良く適した効率的な符号(x)関数の処理を行う。本発明に従って符号(x)関数を処理するのに必要なハードウェアは、比較的簡単でかつ符号(x)関数を単一のプロセッサクロックサイクルで決定することができる。これは、ソフトウェア実施形態では、符号(x)関数を決定するのに、通常、複数のプロセッサクロックサイクルを必要とすることとは顕著な相違である。プロセッサ符号(x)コマンドは、符号(x)関数を遂行するハードウェアがプロセッサに組み込まれた実施形態にサポートされる。単一の符号(x)回路をプロセッサに組み込むことにより、SISD符号(x)関数をサポートできる。本発明に従って、プロセッサ内で基本符号(x)ハードウェアを二重にすることにより、SIMD符号(x)関数を処理できる。本発明の符号(x)ハードウェアおよび新規な符号(x)プロセッサコマンドは、符号(x)関数が遭遇する種々のアプリケーションを容易化するのに使用できる。

Description

【発明の詳細な説明】
【0001】 (技術分野) 本発明は、例えば単一命令複数データ(single instruction multiple data:
SIMD)システムに使用するのに適した符号関数(sign function)を処理および
使用する方法、ならびに装置に関する。
【0002】 (背景技術) 符号(x)関数:
【0003】
【数1】 は、多くの共通アプリケーションにおいて見られる。
【0004】 単一命令単一データ(single instruction single data: SISD)プロセッサの
使用を含むアプリケーションでは、符号(x)関数は、個々のプロセッサ命令(
例えば等号(=)試験の前に行われる不等号(>)試験)として処理される一連
の論理試験として頻繁に実行される。一連のすべての試験の出力が真正ならば次
の試験を行う必要はない。なぜならば、SISD実施形態では、符号(x)関数の出
力は、関数の処理に使用される論理試験(>、=、<)のいずれか1つの真正結
果から生成できるからである。
【0005】 従って、共通SISDプロセッサを使用すれば、符号(x)関数は、ソフトウェア
/ハードウェアサポート形論理試験の使用により比較的容易に処理できる。この
ため、数ある中で、アプリケーション設計者は、例えばビデオ処理演算を含むア
プリケーションを設計するときに、符号(x)関数の使用を回避する必要性を殆
ど考えていない。
【0006】 ISO/IEC 13818-2(1994年11月9日)の論文「Generic Coding of Movin
g Picture and Associated Audio Information: Video」(以下、「MPEG」参考
文献と呼ぶ)に記載されている、一般にMPEG-2規格と呼ばれる動画の符号化につ
いての1つの規格はビデオデータを符号化するために、離散コサイン変換、デー
タ量子化およびモーション補償形予測の使用に依存するところが大きい。本件特
許出願では、MPEG-2準拠のデータストリームおよびMPEG-2準拠の逆量子化演算に
関する参考文献は、MPEG参考文献に記載されている条件に従って処理されるデー
タストリームおよび逆量子化演算を参考にしたものであると考えている。
【0007】 MPEG参考文献には、MPEG-2規格に準拠するビデオビットストリームの復号化に
含まれる処理が詳細に説明されている。多くの処理は、ビデオビットストリーム
の復号化に含まれる。低コストビデオデコーダの開発にとって重要なことは、こ
れらの処理を効率的に実装する方法である。MPEG-2画像の復号化に含まれるこれ
らの処理の1つは逆量子化と呼ばれている。
【0008】 量子化は、デジタル符号語の有限集合からの要素が、サンプリングされた信号
のおおよその値を表すのに使用される構成の信号のデジタル処理、例えばビデオ
符号化に使用される処理である。入力サンプルの量子化処理により作られるデジ
タルコード語は、処理される信号の元の振幅の近似値を表す。
【0009】 逆量子化とは、量子化の逆の処理である。逆量子化処理は、その入力として、
符号語の有限集合からのデジタル符号語を取り入れ、サンプルの元の振幅の近似
値であるいわゆる再構成レベルを作る。
【0010】 MPEG-2規格は、DCT係数の逆量子化方法を定義する。MPEG-2逆量子化処理を実
行しようとするときに遭遇する重要な問題は、逆量子化に必要な符号(x)関数
の計算である。
【0011】 MPEG-2規格によれば、1つの8×8ブロックの係数群の逆量子化は、下記式(
2)〜(6)により説明される。
【0012】
【数2】 ここで、
【0013】
【数3】 および
【0014】
【数4】 QF[v][u]はデジタル符号語または量子化されたDCT係数の二次元配列、W[w][v][u
]は量子化器マトリックス(quantizer matrix)、および量子化器_スケール(q
uantizer_scale)は1つ以上のマクロブロックに使用される共通スケーリングフ
ァクタである。パラメータv、uは各DCT係数を索引付けするのに使用され、パ
ラメータwは符号化形式(INTRAまたはNON-INTRA)および色要素(輝度またはク
ロミナンス(chrominace))に依存するものである。この段階に続いて、結果は
、再構成値が許容範囲内にあることを確保するための飽和段階に至る。これは、
下記式(5)で示される。
【0015】
【数5】 逆量子化処理での最終段階は、下記のようなミスマッチ制御を行うことである。
【0016】
【数6】 式(2)〜(6)により説明される段階は、MPEG-2規格に完全に準拠する逆量
子化処理にとって必要である。図1に示す表Iには、処理すべき64個の値を表
す64個の係数のブロックに対し、1つの特に知られたMPEG-2逆量子化演算を行
うのに必要な離散演算(discrete operation)のおおよその回数が示されている
。表1では、2つの比較演算を用いて、処理された各係数について符号(x)関
数を処理すると仮定していることに留意されたい。
【0017】 特に、式(6)で表されるミスマッチ制御演算は、MPEG-2逆量子化処理でのす
べての段階のうちで最も複雑であると思われるが、実際に必要とされるのは最小
の計算量、すなわち全体の約10%である。符号(x)関数はミスマッチ制御に
比べて非常に簡単にみえるが、符号(x)関数の計算に要するコストは、必要な
全計算数の約20%である。
【0018】 従って、逆量子化演算を処理するのに必要な計算数の減少を試みるとき、符号
(x)関数は、遂行する必要のある計算数に関する改善の可能性がある領域を与
える。
【0019】 計算効率および処理能力を高めるため、単一命令、複数データ、(SIMD)プロ
セッサ設計、およびシステムがより一般的になっている。SIMDアーキテクチャは
、単一のnビットワードを、個別に処理すべき別々のサブワード(たとえばk個
)からなるものとして扱うことにより、複数のデータ要素を同時に処理すること
を可能にする。良く設計されたSIMDアーキテクチャシステムは、より伝統的な単
一命令単一データ(Single-Instruction Single Data: SISD)アーキテクチャシ
ステムのかなりの性能的利益を得ることができる。SIMDアーキテクチャの一例と
して、マイクロプロセッサ領域に現に使用されているMMX技術がある。
【0020】 説明上の目的から、同時に4つのデータサンプルで演算するSIMDアーキテクチ
ャに基いたシステムが存在すると仮定する。このようなシステムでは、データサ
ンプルは、図2の模式図に示す配置で処理ユニットに提供されるべきである。こ
こで、nビットの長さをもつ1つのワードは、4つのサブワード(各サブワード
の長さはn/4ビットである)を含んでいる。従って、例えば1つのnビットワ
ードがプロセッサに提供されたとしても、実際には、当該ワード内に埋め込まれ
た4ピースのデータが存在する。SIMD処理ユニットに提供されると、これらの各
1/4ワードが他から独立して扱われる。一つのワードに含まれるデータ要素の
独立処理は、SIMD処理の主要な特徴の1つである。
【0021】 SIMD処理の一例として、2つの数集合{a、b、c、d}と{e、f、g、h}と
を掛け合せて、積{a・e}、{b・f}、{c・g}および{d・h}を得たい場合を
想定する。例示のSIMDアーキテクチャでは、図4に示したものと同じ2つのデー
タ要素をセットアップできる。これらのうちの1つは集合{a、b、c、d}をを
含み、他は集合{e、f、g、h}を含んでいる。これらは、所望の乗算のための
SIMD処理ユニットに提供される。この処理ユニットは、計算中の独立量として入
力データワードの4つのクウォータを処理する。これによる重要な帰結は、いず
れかのクウォータの乗算がオーバーフローしても、このオーバーフローが隣接ク
ウォータに影響を与えないことである。4つの乗算が同時に行われ、これにより
、同じクロック速度で作動するSISD処理ユニットに比べて性能が飛躍的に高くな
る。この例から、SIMDアーキテクチャは、複数データピースの並列処理に極めて
有効であることが理解されよう。
【0022】 SISDプロセッサ実施形態での一連のプロセッサ命令として符号(x)関数を実
装することは、比較的直接的である。しかしながら、SIMDプロセッサ環境での符
号(x)関数の実装は、比較的複雑になっている。
【0023】 SIMDアーキテクチャでの符号(x)関数の実装の複雑さは、nビットワードの
要素に適用されるSIMD(<、=または>)の真の結果が、各nビットサブワード
についての異なる結果を招くという事実から生じる。従って、SIMDプロセッサで
符号(x)関数を処理するときには、通常、少なくとも2つの論理試験(各試験
は1つのプロセッサクロックサイクルを必要とする)を行って、nビットワード
の各サブワードについて適当な値を決定しなければならない。かくして、ソフト
ウェアおよび慣用のプロセッサ論理演算を用いてSIMD環境において符号(x)演
算を遂行するときには、通常、所望の符号(x)関数出力を発生させるのに2つ
以上のプロセッサクロックサイクルを必要とする。
【0024】 ビデオ復号化、より詳しくはリアルタイムビデオ復号化の場合には、ビデオ信
号の復号化に要するクロックサイクル数を低下させ、これにより所与のプロセッ
サ速度での処理能力を増大させることが望まれている。従って、ビデオデコーダ
としての実施形態では、遂行すべき関数について、できる限り小さいクロックサ
イクル数を必要とする態様で、符号(x)関数を実装することが望ましい。
【0025】 上記観点から、新規で改善された符号(x)関数の実装方法が要望されている
ことが明らかになっている。いかなる新規な方法も、遂行すべきプロセッサ命令
の数に関して符号(x)関数を効率的に遂行できることが望ましい。また、符号
(x)関数は、比較的少数のプロセッサクロックサイクルを用いて遂行できるこ
とも望まれている。更に、符号(x)関数を処理するいかなる新規な方法および
装置も、SIMDアーキテクチャ、特にSIMDプロセッサでの使用に首尾良く適合する
ことが望まれている。
【0026】 任意の新規な方法および装置の処理能力の長所が得られる新規なSIMDおよびSI
SDプロセッサ命令も望まれている。
【0027】 (発明の開示) 本発明は、符号(x)関数を実装し、かつ使用する方法および装置に関する。
本発明によれば、符号(x)関数はハードウェアで処理される。
【0028】 本発明は、符号(x)関数を処理するのに、既知のソフトウェアアプローチで
はなくハードウェアアプローチを採用することにより、SISDシステムおよびSIMD
システムの両方に首尾良く適合する効率的な符号(x)関数の処理が行える。
【0029】 本発明に従って符号(x)関数を処理するのに必要なハードウェアは、比較的
簡単でかつ符号(x)関数を単一のプロセッサクロックサイクルで決定すること
ができる。これは、ソフトウェア実施形態での符号(x)関数の決定には、通常
、複数のプロセッサクロックサイクルが必要とされることと比べて顕著な相違で
ある。
【0030】 プロセッサ符号(x)コマンドは、符号(x)関数を処理するハードウェアが
プロセッサに組み込まれている実施形態にサポートされる。単一の符号(x)回
路をプロセッサに組み込むことにより、SISD符号(x)関数をサポートできる。
本発明に従ってプロセッサ内の基本符号(x)ハードウェアを2つにすることに
より、SIMD符号(x)関数を処理できる。
【0031】 本発明の符号(x)ハードウェア、新規な符号(x)SISDおよびSIMDプロセッ
サ命令は、符号(x)関数が遭遇する種々のアプリケーション(MPEG-2逆量子化
演算を含むビデオ復号化アプリケーションを含む)を容易にするのに使用できる
【0032】 (発明を実施するための最良の形態) 以下、本発明の他の種々の特徴および実施形態を詳細に説明する。
【0033】 前述のように、本発明は、符号関数を実装および使用する方法および装置に関
する。本発明によれば、符号(x)関数は、例えば、本発明の簡単な回路を中央
処理装置(CPU)に組み込むことにより、ハードウェアで実装される。本発明の
方法および装置は、SISDシステムおよびSIMDシステムのいずれにも、符号(x)
関数を実装するのに良く適している。
【0034】 符号(x)関数を効率的に実装できる本発明の方法および装置を以下に説明す
る。
【0035】 説明の目的上、本発明のSIMDシステムの基本的なデータワードはnビットを有
すること、およびこれらのnビットは、図4に示すように、k個の独立サブワー
ド(各サブワードはn/kビットの長さを有する)に区分される。この場合、画
像の一部を表すn/k個の量子化係数(quantized coefficients)の集合は、個
々の各係数がkより小さいビットで容易に表わされると考えれば、単一ワードに
記憶できる。
【0036】 ビデオデコーダとしての実施形態の場合には、n/k個の量子化係数の各々の
符号(x)関数は、効率的態様で同時に計算することが望まれる。これは、各係
数を単一ワード内に置き、次に本発明に従ってSIMD符号(x)演算を遂行するこ
とにより行われる。
【0037】 本発明は、SIMDアーキテクチャではnビットワードの各サブワードが独立的に
処理されるという事実に長所を有している。従って、n/k個の量子化係数の符
号(x)関数を同時に計算する回路は、並列的に演算する1つの「原子的」回路
を多重にした例であると考えることができる。
【0038】 図5には、単一のkビット入力値xについて符号(x)関数を効率的に処理す
る本発明の符号(x)回路50が示されている。図示のように、符号(x)回路
50は、バス60と、k入力ORゲート62とを有している。符号(x)回路50
の入力値および出力値の記憶に、それぞれ、第1および第2kビットレジスタ5
2、54が使用される。出力が入力として同じレジスタに記憶される実施形態で
は、入力を上書きする出力に、単一のレジスタ52を使用できる。
【0039】 図5の例示実施形態では、2の補数表示が使用される。従って、入力値xの最
上位ビット、すなわち入力レジスタの位置53に記憶されたk−1ビットは、入
力値xが正であるか負であるかを表示する。k−1ビットが0の値を有するとき
は、値xが正の値であることを示す。k−1ビットが1の値を有するときは、値
xは負の値であることを示す。
【0040】 符号(x)回路50は、その出力としてkビットの値yを発生し、この値yは
第2kビットレジスタ54に記憶される。レジスタの位置55に記憶されたyの
最上位ビットは、値yが正であるか負であるかを表示する。これは、入力レジス
タの位置53に記憶されたビットが、入力値xが正であるか負であるかを表示す
るのと同様である。
【0041】 符号(x)関数は、ゼロの入力値xに応答してゼロの出力値を発生する。従っ
て、入力値xのすべてのビットがゼロであるときは、出力値yのすべてのビット
はゼロでなくてはならない。
【0042】 符号(x)関数は、ゼロより大きい入力値に応答して、正の出力値yを発生す
る。従って、入力値xがゼロより大きい正の値であるときは、出力値yは正の値
にセットされなくてはならない。かくして、入力値xが、最上位ビットがゼロで
あり、残りのビットのうちの1つ以上のビットに1がセットされているときは、
値yの最上位ビットはゼロにセットされ、最下位ビット(例えば0ビット)は1
にセットされ、出力値yの他のすべてのビットはゼロにセットされるべきである
【0043】 符号(x)関数は、ゼロより大きい入力値に応答して、負の出力値yを発生す
る。2の補数表示では、負の出力値は、すべてのビットが1にセットされている
2進数で表される。従って、入力値xが、レジスタの位置53に記憶された最上
位ビットが1であり、残りのビットのうちの1つ以上のビットに1がセットされ
ている(0より小さい負の値を表示する)ときは、出力値yのすべてのビットは
1にセットすべきである。
【0044】 図5の実施形態では、符号(x)回路50は、単一の論理演算子すなわちORゲ
ート62およびバス60を実装するための要素を使用して実装される。ORゲート
62は、その入力として、入力値xのkビットの各々を受け、かつ、これから、
出力値yの0番目のビット(0 place bit)56として使用される単一ビット値
Tを発生する。バス60は、レジスタ位置53(この位置には、最上位ビットす
なわち入力値xのk−1ビットが記憶されている)を、ORゲート62の入力の1
つ、および出力値yの1番目からk−1番目のビットを記憶するのに使用される
レジスタ54の第1位置57から第k−1位置に接続する。この態様で、出力値
yのビットy1〜yk-1は、入力値xの符号ビットxk-1の値Sで母集団化(popul
ated)される。
【0045】 図5の実施形態では、入力ワードx=[xk-1、xk-2、…、x0]である。本発
明に従って符号(x)の値を計算するため、2つの単一ビット量S、Tが、xか
ら並列ハードウェア演算を介して得られる。ビット値Sは符号ビットxk-1に等
しくなるようにセットされ、ビット値Tは、xの全kビットの論理ORを遂行する
ことにより得られる。符号(x)回路50の演算および入力値xからのビット値
S、Tの生成は、下記式(7)で表される。
【0046】
【数7】 式(7)の和記号(summation symbol)は、入力値xの全kビットの論理ORを示
すのに使用されることに留意されたい。出力値y=符号(x)は、下記式(8)
に従ってSおよびTを使用して、回路50により形成される。
【0047】
【数8】 入力xがゼロに等しい場合、すなわち入力値xのすべてのビットがゼロである
場合について考える。このような場合には、式(7)からT=0およびS=0と
なり、従って式(8)から出力はy=[0、0、0、0…0、0]となり、これは
ゼロの入力値xが与えられた符号(x)関数の所望出力yであることは明らかで
ある。
【0048】 入力xがゼロより大きいときは、符号ビットはゼロとなり、従って式(7)か
らS=0を得る。また、入力ビットxk-2、…x0の少なくとも1つは1になる。
ここで、xi′のすべてがゼロという訳ではないので、すべての入力ビットxk-1 、…x0のOR62は、T=1の結果をもたらす。これは、0より大きい入力を与
えたときの所望の出力値+1である。
【0049】 最後に、入力xがゼロより小さい場合には、符号ビットxk-1、従ってSは1
となる。ビットxk-1は、値Tを発生するOR演算に使用されるので、Tの値は1
となる。この場合、式(7)からS=1およびT=1が得られ、これは、出力y
=[1、1、1、1…1、1](これは、使用される2の補数系では−1である)
を形成する。
【0050】 上記例は、符号(x)回路50が符号(x)関数を適正に遂行することを示し
ている。
【0051】 図5の実施形態では、符号(x)関数の計算を1回の演算として遂行できる。
かくして、計算は、通常2回の論理演算を必要とする既知のソフトウェア実施形
態より50%速くなる。
【0052】 符号(x)回路50は、単一のkビット入力値で所望の符号(x)演算を遂行
する。上記のように、SIMD環境では、符号(x)関数はn/k個のkビットサブ
ワード単位で並列的に遂行されるのが望ましい。このような並列処理を達成する
ため、図6に示す本発明の実施形態によれば、符号(x)回路50は、n/k個
重複する。
【0053】 図6の実施形態では、nビットワード69の各kビットサブワード70、72
、74は、符号(x)回路50の1つによって、図5に関して上述した態様で別
々に処理され、それぞれ対応する出力80、82、84を発生する。かくして、
図6に示す回路600は、すべてのn/k入力サブワードで同時に符号(x)関
数を遂行する。
【0054】 k入力ORゲートはn/k回複写しなければならないので、図6の実施形態では
図5の実施形態に比べてハードウェアが増大されているが、n/k・符号(x)
演算を並列的に遂行できる点で優れている。かくして、SIMD符号(x)演算は、
単一プロセッサクロックサイクルで遂行できる。図5に示す基本符号(x)回路
50および図6に示す拡大符号(x)回路600は、例えば極めて速い処理を行
う超大規模集積(VLSI)技術を用いて容易に構成できる。これらの符号(x)回
路50、600は、符号(x)関数を単一プロセッサクロックサイクルで遂行さ
せるプロセッサ命令をサポートするためのプログラム可能な汎用プロセッサのコ
ア内に組み込むことができる。
【0055】 図7は、本発明の一実施形態に従って実装されるSIMDプロセッサ700を示す
。図示のように、プロセッサ700は、インターフェース702と、キャッシュ
メモリ706と、命令レジスタ/デコーダ回路704と、レジスタ配列708と
、算術論理ユニット(ALU)710とを有し、これらはすべて、バス705を介
して一体に接続されている。プロセッサ700は更にクロック(CLK)711を
有しており、該クロック711は、プロセッサ700に含まれる種々の回路によ
り遂行される演算のタイミングを制御するのに使用される。I/Oインターフェー
ス702は、プロセッサ700をコンピュータバス703に接続するのに使用さ
れる。I/Oインターフェース702は、プロセッサ700に含まれる種々の回路
と、バス703を介してインターフェース702に接続される例えばメモリおよ
び周辺デバイス等の回路との間を電気的にインターフェースする。
【0056】 プロセッサの内部で、キャッシュメモリ706は、プロセッサ700の他の構
成要素が必要とする命令およびデータを記憶するのに使用される。命令レジスタ
/デコーダは、実行されるべき命令を発生させるALU710に対して供給される
命令の受信および信号の発生に応答する。本発明の一実施形態によれば、ALU7
10により処理される命令は、符号(x)関数を含んでいる。図7に示すSIMDプ
ロセッサの実施形態では、ALU710は、単一プロセッサクロックサイクルでSIM
D符号(x)演算を遂行できる符号(x)回路600を有している。レジスタ配
列708は、ALU710により処理されかつ符号(x)演算を含むALU演算の結果
として発生されるデータを記憶する複数のレジスタを有している。レジスタ配列
708はALU710との間の矢印で示すように該ALU710に緊密に接続されてお
り、このため、ALU710はレジスタ配列708の内容に迅速かつ効率的にアク
セスできることに留意されたい。
【0057】 SISDプロセッサの実施形態も実施される。この実施形態では、図5に示した形
式の符号(x)回路50が、図7の実施形態の符号(x)回路600に置換され
る。
【0058】 図7に示すプロセッサは、たとえば、ビデオデコーダ回路の一部、またはMPEG
-2ビデオ復号化演算を行うのに使用される汎用コンピュータでもよい。
【0059】 上記のような回路が組み込まれた符号(x)関数回路およびプロセッサに加え
、本発明は、本発明の上記ハードウェアを使用できる新規なプロセッサ命令に関
するものである。
【0060】 本発明の命令として、SISDおよびSIMD命令、例えば、これらのアーギュメント
としてnビット値を受ける符号(x)命令がある。SISD命令の場合には、値は符
号(x)関数を遂行すべきデータの単一単位を表す。SIMD実施形態の場合には、
データのnビット単位は、符号(x)演算を独立的に遂行すべきn/kサブワー
ドを表す。本発明の符号(x)命令を受けることに応答して、該命令を受けるプ
ロセッサは、符号(x)関数を処理するハードウェア回路を使用して、2プロセ
ッサクロックサイクルより小さい、例えば単一プロセッサクロックサイクル符号
(x)関数に対応する出力を発生する。
【0061】 本発明の上記説明は、ORゲートを使用して関数を処理する符号(x)回路に焦
点を合わせたものであるが、本発明は、単一プロセッサクロックサイクルで符号
(x)関数を遂行するハードウェア回路を実施する種々の態様を考えていること
を理解すべきである。例えば、「ワイヤードOR」を用いることによりk入力ORゲ
ートの使用を回避できる。或いは、OR関数を遂行するのに、論理変換を適用し、
かつ逆入力NANDゲートを使用できる。図8は、ORゲート62の代わりに、逆入力
をもつk入力NANDゲート82を用いて実装される符号(x)回路80を示してい
る。また、例えばOR関数の論理を分割して、論理段階で符号(x)関数を計算す
ることもできる。図9は、論理OR演算が、複数のOR回路段からなるk入力OR木(k
input OR tree)90を用いて遂行される実施形態を示している。
【0062】 実装の如何にかかわらず、プログラム可能な汎用プロセッサに符号(x)命令
をサポートする基礎としてハードウェア回路を使用することは、本発明の特徴を
維持するものである。
【図面の簡単な説明】
【図1】 既知の技術を用いて64個のDCT係数のブロックについての逆量子化演算を遂
行するのに要する演算数を示す表である。
【図2】 SIMDシステムに使用するワード内に4つのサブワードを記憶させる既知の配置
を示す図面である。
【図3】 既知のSIMD乗算を示す図面である。
【図4】 SIMDシステムに使用するnビットワード内にk個のサブワードを記憶させる配
置を示す図面である。
【図5】 本発明の一実施形態による符号(x)関数を処理する回路を示す図面である。
【図6】 本発明によるSIMDシステムで符号(x)関数を処理する装置を示す図面である
【図7】 本発明の一実施形態に従って実施されるSIMDプロセッサを示す図面である。
【図8】 符号(x)関数を処理するための、本発明に従って実施される付加回路を示す
図面である。
【図9】 符号(x)関数を処理するための、本発明に従って実施される付加回路を示す
図面である。
───────────────────────────────────────────────────── 【要約の続き】 アを二重にすることにより、SIMD符号(x)関数を処理 できる。本発明の符号(x)ハードウェアおよび新規な 符号(x)プロセッサコマンドは、符号(x)関数が遭 遇する種々のアプリケーションを容易化するのに使用で きる。

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】 2進入力値xに応答して2進出力値yを発生する段階を有し
    、 2進出力値yおよび2進入力値xの各々が符号ビットおよび少なくとも1つの
    付加ビットを含み、2進出力値yは、入力値xが0より大きい値を有するときに
    は+1の値をとり、入力値xが0の値を有するときには0の値をとり、入力値x
    が0より小さい値を有するときには−1の値をとり、前記2進出力yを発生する
    段階は、 出力値yの符号ビットを、入力値xの符号ビットの値にセッティングする段階
    と、 出力値yの符号ビットのセッティングと並列に、入力値xの各ビットを用いて
    論理OR演算を遂行することにより、出力値yの前記少なくとも1つの付加ビット
    を発生させるハードウェア回路を使用する段階とを有することを特徴とする2進
    データを処理する方法。
  2. 【請求項2】 前記出力値yの前記少なくとも1つの付加ビットを発生させ
    るのに使用されるハードウェアは、論理ORゲートであることを特徴とする請求項
    1記載の方法。
  3. 【請求項3】 前記出力値yの少なくとも1つの付加ビットを発生させるの
    に使用されるハードウェアは、NANDゲートを有していることを特徴とする請求項
    1記載の方法。
  4. 【請求項4】 前記出力値yは、符号ビットと前記少なくとも1つの付加ビ
    ットとの間に配置された複数のビットを有し、前記2進出力値yを発生させる段
    階は、さらに、 符号ビットと前記少なくとも1つの付加ビットとの間に配置された前記複数の
    ビットを、入力値xの符号ビットの値にセッティングする段階を有することを特
    徴とする請求項1記載の方法。
  5. 【請求項5】 前記出力値yの符号ビットをセッティングし、かつ、前記符
    号ビットと前記少なくとも1つの付加ビットとの間に配置された前記複数のビッ
    トをセッティングする段階とを遂行するバスを用いる段階を更に有することを特
    徴とする請求項4記載の方法。
  6. 【請求項6】 前記2進入力値xはzビットを有し、処理される2進ビット
    はn/z・x値を含むnビットワードを有し、ここでnおよびzは整数であり、
    更に、 処理される2進データに含まれるn/z個の別個のzビットの集合からn/z
    個の別個の出力値yを発生させるために、n/z回、並行して、2進入力値xに
    応答して2進出力値yを発生させる段階を遂行する段階を更に有することを特徴
    とする請求項1記載の方法。
  7. 【請求項7】 前記2進入力値xはzビットを有し、処理される2進ビット
    はn/z・x値を含むnビットワードを有し、ここでnおよびzは整数であり、
    更に、 処理される2進データに含まれるn/z個の別個のzビットの集合からn/z
    個の別個の出力値yを発生させるために、n/z回、並行して、2進入力値xに
    応答して2進出力値yを発生させる段階を遂行する段階を更に有することを特徴
    とする請求項4記載の方法。
  8. 【請求項8】 単一命令複数データプロセッサに含まれる複数のハードウェ
    ア回路を使用し、2進入力値xに応答して、処理される2進データに含まれるn
    /z個の別個のzビットの集合からn/z個の別個の出力値yを発生させるため
    に、n/z回、並行して、2進入力値xに応答して2進出力値yを発生させる段
    階を遂行する段階を更に有することを特徴とする請求項1記載の方法。
  9. 【請求項9】 ゼロより大きい入力値xに応答して出力値yとして1を発生
    させ、ゼロの入力値xに応答して出力値yとして0を発生させ、かつ1より小さ
    い入力値xに応答して出力値yとして−1を発生させる第1回路を有し、xおよ
    びyの各々は、複数のビットによりなる2の補数の形態で表現され、値yはビッ
    ト0〜ビットk−1からなり、ビットk−1は値yの符号を表示し、第1回路は
    、 OR関数への入力として入力値xに含まれる各ビットを使用して論理OR関数を遂
    行することにより値yのビット0を母集団化(populating)する手段と、 入力値xに含まれる符号ビットの値を使用して、値yの残余のビットの各々の
    ための手段とを有していることを特徴とする装置。
  10. 【請求項10】 前記装置は単一命令複数データプロセッサであり、入力ワ
    ードを記憶するレジスタを更に有することを特徴とする請求項9記載の装置。
  11. 【請求項11】 ビットxk-1〜x0を含むkビットの第1集合xを処理して
    、ビットyj-1〜y0を含むjビットの第1集合yを発生させる第1回路を有し、
    ビットxk-1の2進値は、kビットの第1集合xが正数または負数であるかを示
    すのに使用され、jおよびkは整数であり、 ビットyj-1の値としてビットxk-1の値を設定する装置と、 ビットy0の値を発生させるために、ビットxk-1〜x0の値を使用してOR関数
    をするための論理回路と、を有する2進データを処理するデバイス。
  12. 【請求項12】 kビットの前記第1集合xを記憶する記憶デバイスと、 jビットの前記第1集合yを記憶する記憶デバイスと、をさらに有し、 ビットyj-1の値をビットxk-1の値にセッティングする前記装置は、ビットx k-1 が記憶されている前記第1記憶デバイス内の記憶位置を、前記第2記憶デバ
    イスの複数の記憶位置に接続するバスであり、前記複数の記憶位置のうちの1つ
    はビットyj-1が記憶される記憶位置を含んでいる請求項11記載のデバイス。
  13. 【請求項13】 ビットの第1集合xと並列的に、ビットxk-1〜x0を含む
    kビットの第2集合x2を処理して、ビットyj-1〜y0を含むjビットの第2集
    合y2を発生させる第2回路を有し、第2集合y2のビットxk-1の2進値は、
    kビットの第2集合x2が正数であるかまたは負数であるかを表示するのに使用
    され、前記第2回路は、 ビットyj-1の値としてビットxk-1の値を設定する装置と、 ビットy0の値を発生させるために、ビットxk-1〜x0の値を使用してOR関数
    をするための論理回路と、をさらに有する請求項11記載のデバイス。
  14. 【請求項14】 第1集合xおよび第2集合x2のビットを記憶する第1レ
    ジスタと、 y2ビットの第1集合および第2集合yを記憶する第2レジスタと、をさらに
    有し、 第1および第2回路の各々においてビットyj-1の値をビットxk-1の値に設定
    する装置が、バスである請求項11記載のデバイス。
  15. 【請求項15】 プロセッサクロックと、 入力値xに応答して、2より少ないプロセッサクロックサイクルで出力値yを
    発生する手段とを有し、出力値yは、ゼロより大きい入力値xに応答して値+1
    をとり、ゼロの入力値xに応答して0の値をとり、1より小さい入力値xに応答
    して−1の値をとるプロセッサ。
  16. 【請求項16】 並列で演算するように構成された、2より少ないプロセッ
    サクロックサイクルでyの出力値を発生する複数の前記手段を、さらに有する請
    求項1記載のプロセッサ。
  17. 【請求項17】 前記プロセッサクロック、および、前記複数の発生手段の
    各々が、単一の半導体デバイスに実装され、 前記発生手段が、1つのプロセッサクロックサイクル内で出力を発生させる請
    求項16記載のプロセッサ。
  18. 【請求項18】 アーギュメントとして、複数の入力値xを含むワードを含
    むプロセッサ命令に応答して発生する前記複数の手段の各々を利用する手段を、
    さらに有する請求項16記載のプロセッサ。
  19. 【請求項19】 復号化すべき画像データを記憶するデータ記憶デバイスを
    さらに有する請求項16記載のプロセッサ。
  20. 【請求項20】 プロセッサクロックに応答して演算するプロセッサを作動
    させる方法であって、 0より大きい入力値が与えられると+1の出力を発生させ、0の入力値が与え
    られると0の出力を発生させ、0より小さい入力が与えられると−1の出力を発
    生させる命令を受ける段階と、 入力値を受ける段階と、 受けた命令および受けた入力値に応答して、プロセッサに含まれたハードウェ
    ア回路を使用し、2より少ないプロセッサクロックサイクルで出力値を発生する
    段階と、を有する方法。
  21. 【請求項21】 前記命令は単一命令複数データ命令であり、入力値は受け
    たnビットワードに含まれるk個のサブワードうちの1つであり、 受けた命令および受けたnビットワードに応答して、プロセッサに含まれる付
    加k−1ハードウェア回路を使用し、2より少ないプロセッサクロックサイクル
    で付加k−1出力値を発生する段階を、さらに有する請求項1記載の方法。
  22. 【請求項22】 復号化すべきビデオデータを、nビットワードを形成する
    ように配置する段階を、さらに有する請求項21記載の方法。
  23. 【請求項23】 前記命令およびnビットワードを使用して、逆量子化演算
    を遂行する段階を、さらに有する請求項22記載の方法。
  24. 【請求項24】 前記ハードウェア回路および付加k−1ハードウェア回路
    を並列的に作動させ、nビットワードから、単一のプロセッサクロックサイクル
    で前記出力値およびk−1付加出力値を発生させる段階を、さらに有する請求項
    21記載の方法。
JP2000557623A 1998-06-26 1999-06-24 符号関数を処理する方法および装置 Pending JP2002519957A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/105,225 1998-06-26
US09/105,225 US6292814B1 (en) 1998-06-26 1998-06-26 Methods and apparatus for implementing a sign function
PCT/JP1999/003359 WO2000001159A1 (en) 1998-06-26 1999-06-24 Methods and apparatus for implementing a sign function

Publications (1)

Publication Number Publication Date
JP2002519957A true JP2002519957A (ja) 2002-07-02

Family

ID=22304686

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000557623A Pending JP2002519957A (ja) 1998-06-26 1999-06-24 符号関数を処理する方法および装置

Country Status (3)

Country Link
US (2) US6292814B1 (ja)
JP (1) JP2002519957A (ja)
WO (1) WO2000001159A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3779602B2 (ja) * 2001-11-28 2006-05-31 松下電器産業株式会社 Simd演算方法およびsimd演算装置
US7539714B2 (en) * 2003-06-30 2009-05-26 Intel Corporation Method, apparatus, and instruction for performing a sign operation that multiplies
US7424501B2 (en) * 2003-06-30 2008-09-09 Intel Corporation Nonlinear filtering and deblocking applications utilizing SIMD sign and absolute value operations
US7555513B2 (en) * 2004-09-13 2009-06-30 Broadcom Corporation SIMD processor having enhanced operand storage interconnects
US7434034B2 (en) * 2004-09-13 2008-10-07 Ati Technologies Inc. SIMD processor executing min/max instructions
JP2010160708A (ja) * 2009-01-09 2010-07-22 Sony Corp 演算器、プロセッサ、コンパイル処理装置およびコンパイル処理方法
AU2016246583B2 (en) 2015-04-07 2020-06-25 Church & Dwight Co., Inc. Multicomponent gummy compositions with soft core

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0736149B2 (ja) 1984-02-10 1995-04-19 株式会社日立製作所 シフトフラグ生成回路
US4924422A (en) 1988-02-17 1990-05-08 International Business Machines Corporation Method and apparatus for modified carry-save determination of arithmetic/logic zero results
US5634087A (en) * 1991-02-28 1997-05-27 Rutgers University Rapidly trainable neural tree network
US5440702A (en) 1992-10-16 1995-08-08 Delco Electronics Corporation Data processing system with condition code architecture for executing single instruction range checking and limiting operations
JP3546437B2 (ja) 1993-03-31 2004-07-28 ソニー株式会社 適応形ビデオ信号演算処理装置
JPH07181737A (ja) 1993-12-24 1995-07-21 Shin Etsu Chem Co Ltd 電子写真トナー用バインダー
US5638312A (en) 1995-03-03 1997-06-10 Hal Computer Systems, Inc. Method and apparatus for generating a zero bit status flag in a microprocessor
GB9514695D0 (en) 1995-07-18 1995-09-13 Sgs Thomson Microelectronics Combining data values
JP3524250B2 (ja) * 1995-11-27 2004-05-10 キヤノン株式会社 デジタル画像処理プロセッサ
US5970093A (en) * 1996-01-23 1999-10-19 Tiernan Communications, Inc. Fractionally-spaced adaptively-equalized self-recovering digital receiver for amplitude-Phase modulated signals
US5764553A (en) * 1996-02-28 1998-06-09 Lsi Logic Corporation Generalized data processing path for performing transformation and quantization functions for video encoder systems
US5808573A (en) * 1996-08-01 1998-09-15 Nec Electronics Incorporated Methods and structure for sampled-data timing recovery with reduced complexity and latency
US6304620B1 (en) * 1998-03-20 2001-10-16 Philips Electronics North America Corproation Sign-cross product automatic frequency control loop

Also Published As

Publication number Publication date
WO2000001159A1 (en) 2000-01-06
US6292814B1 (en) 2001-09-18
US6397237B1 (en) 2002-05-28
US20020042801A1 (en) 2002-04-11

Similar Documents

Publication Publication Date Title
Peleg et al. Intel MMX for multimedia PCs
RU2273044C2 (ru) Способ и устройство для параллельного объединения данных со сдвигом вправо
US6546480B1 (en) Instructions for arithmetic operations on vectored data
US5467131A (en) Method and apparatus for fast digital signal decoding
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
US6629115B1 (en) Method and apparatus for manipulating vectored data
US20030105793A1 (en) Long instruction word controlling plural independent processor operations
US6574651B1 (en) Method and apparatus for arithmetic operation on vectored data
US5880979A (en) System for providing the absolute difference of unsigned values
US7275147B2 (en) Method and apparatus for data alignment and parsing in SIMD computer architecture
JPH11505640A (ja) ビット・スライス式テーブル・ルックアップ・デジタルたたみ込み
KR19990044305A (ko) 압축 데이터에 의한 승산-가산 연산 수행 장치
JP2008117368A (ja) 低消費パワーでデータ値配列に2次元変換を実行する方法及びシステム
KR100261374B1 (ko) 화상처리장치
Abel et al. Applications tuning for streaming SIMD extensions
US6247112B1 (en) Bit manipulation instructions
JP3857308B2 (ja) 逆離散余弦変換を実行する装置および方法
US5742529A (en) Method and an apparatus for providing the absolute difference of unsigned values
EP0928100B1 (en) Run-length encoding
US20030172254A1 (en) Instructions for manipulating vectored data
JP2002519957A (ja) 符号関数を処理する方法および装置
Tung et al. MMX-based DCT and MC algorithms for real-time pure software MPEG decoding
WO1996004733A9 (en) System and method for inverse discrete cosine transform implementation
Shahbahrami et al. Matrix register file and extended subwords: two techniques for embedded media processors
Furht Processor architectures for multimedia: a survey