JP2009536773A - 2つの独立した差分絶対値和を生成するための命令 - Google Patents

2つの独立した差分絶対値和を生成するための命令 Download PDF

Info

Publication number
JP2009536773A
JP2009536773A JP2009510124A JP2009510124A JP2009536773A JP 2009536773 A JP2009536773 A JP 2009536773A JP 2009510124 A JP2009510124 A JP 2009510124A JP 2009510124 A JP2009510124 A JP 2009510124A JP 2009536773 A JP2009536773 A JP 2009536773A
Authority
JP
Japan
Prior art keywords
register
sad
source
section
stored
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
Application number
JP2009510124A
Other languages
English (en)
Other versions
JP4995897B2 (ja
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2009536773A publication Critical patent/JP2009536773A/ja
Application granted granted Critical
Publication of JP4995897B2 publication Critical patent/JP4995897B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/12Systems in which the television signal is transmitted via one channel or a plurality of parallel channels, the bandwidth of each channel being less than the bandwidth of the television signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

単一の命令を受信するとき、2つの独立した差分絶対値和(SAD)演算(505、705)を実行するための方法および装置が提供される。2つの演算は並列で実行され得る。演算は2個のソースレジスタ(405、410)内に記憶された値を処理して、結果はデスティネーションレジスタ(425)に記憶される。ソースレジスタおよびデスティネーションレジスタはそれぞれ2つの独立したアクセス可能な区分を有し、それにより、第1のSAD演算(401)は第1の区分にアクセスすることが可能であり、一方、第2の独立したSAD演算(402)はレジスタの第2の区分に同時にアクセスすることが可能である。第1のSAD演算は、ソースレジスタの第1の区分内の値に関して実行され、結果はデスティネーションレジスタの第1の区分に記憶されている。第2のSAD演算は、ソースレジスタの第2の区分内の値に関して実行され、結果はデスティネーションレジスタの第2の区分に記憶されている。値は画素値を含み得る。

Description

背景
(分野)
本実施形態は、一般に、2つの独立した差分絶対値和(sums of absolute differences)を生成するための命令に関する。
(背景)
現在、動作推定は、ビデオ情報を符号化/圧縮するために広く使用される方法である。ブロックベースの動作推定では、各ビデオフレームは16×16、8×8、または4×4画素(pixels)のブロックなど、ブロック(画素アレイ(pixel arrays))内に区分化される。図1は、動作推定方法の概念図である。図1に示されるように、現在のフレーム105の現在のブロック110の場合、探索は(画素値(pixel values)の点で)ブロック110が最も一致するブロックに関する基準フレーム115(例えば、現在のフレームの前のフレームまたは後のフレーム)の探索領域120内で実行される。最も一致するブロック125が基準フレーム115内で発見されるとき、(現在のブロック110に照らして最も一致するブロック125の偏位を表示する)動作ベクトル130と、現在のブロック110との画素値の差とが現在のブロックを符号化するために使用される。このプロセスは、現在のフレームの各ブロックに関して繰り返される。
現在のブロックに最も一致する基準フレーム内のブロックを決定するための技術は、通常、差分絶対値和(sum-of-absolute-differences)(SAD)演算を使用して決定される(平均絶対誤差(mean absolute error)(MAE)または差分絶対値平均(mean absolute difference)(MAD)などの)基準を使用する。これらの技術では、現在のブロックと基準フレームの探索領域内の各ブロックの間の画素値の差分絶対値和が計算される。画素値Aを有する現在のブロックと、画素値Bを有する基準ブロックに関して実行されるSAD演算は、方程式
Σ|A−B|=C
によって表現され得る。
SAD演算は探索領域内の各基準ブロックに関して実行され、最低SAD値(C)を有する基準ブロックが最も一致するブロックとして選択される。しかし、動作推定で要求される多数のSAD演算は演算処理上集中的であり、大量の処理時間と資源とを消費する可能性がある。したがって、SAD演算を実行するための効率的な方法の必要性が存在する。
概要
開示されるいくつかの態様は、単一のSAD命令を受信するとき、2つの独立したSAD演算を実行するための方法および装置を提供する。いくつかの実施形態では、2つの独立したSAD演算は並列で(in parallel)実行される。SAD演算は、演算の2つの和の結果がデスティネーションレジスタ(destination register)にロードされる2個のソースレジスタ(source registers)内に記憶されたソース値(source values)に関して動作する。いくつかの実施形態では、ソースレジスタおよびデスティネーションレジスタはそれぞれ位置合わせされた1対のレジスタを備え、対の第1のレジスタはソースレジスタまたはデスティネーションレジスタの第1の区分(first section)と呼ばれ、対の第2のレジスタはソースレジスタまたはデスティネーションレジスタの第2の区分(second register)と呼ばれる。いくつかの実施形態では、第1のSAD演算がソースレジスタまたはデスティネーションレジスタの第1の区分(レジスタ)にアクセスすることができ、一方、第2の独立したSAD演算がソースレジスタまたはデスティネーションレジスタの第2の区分に同時に(並列で)アクセスすることができるように、位置合わせされた1対のレジスタの各区分(レジスタ)は独立してアクセス可能である。
第1のSAD演算は、第1のソースレジスタの第1の区分内に記憶された第1の値のセットおよび第2のソースレジスタの第1の区分内に記憶された第2の値のセットに関して実行される。第1のSAD演算の結果は、次いで、デスティネーションレジスタの第1の区分に記憶される。第2のSAD演算は、第1のソースレジスタ内の第2の区分内に記憶された第3の値のセットおよび第2のソースレジスタの第2の区分内に記憶された第4の値のセットに関して実行される。第2のSAD演算の結果は、次いで、デスティネーションレジスタの第2の区分に記憶される。
いくつかの実施形態では、2つの独立したSAD演算によって処理される値は、ビデオフレームのブロックの画素値(pixel values)である。いくつかの実施形態では、2つの独立したSAD演算はビデオ圧縮または動作推定に関して使用される。
詳細な説明
語「例示的な(exemplary)」は、「例(example)、事例(instance)、または例示(illustration)としての役割を果たしている」を意味するようにここでは使用される。「例示的な」としてここに説明されるいずれの実施形態も、他の実施形態よりも好ましいあるいは有利であると必ずしも解釈されるべきではない。
図2は、現在のフレームの現在のブロック205および基準フレームの基準ブロック210に関して実行されるSAD演算の概念図を示す。図2の例では、フレームのブロックは、各画素が1バイトの画素値を備える、4×4の画素アレイを備える。他の実施形態では、ブロックは、各画素が異なるサイズの画素値を備える、異なるサイズの画素アレイを備える。
図2に示されるように、現在のブロック205は複数の画素A0〜A15を備え、基準ブロック210は複数の画素B0〜B15を備える。現在のブロックおよび基準ブロックに関して実行されるSAD演算は、まず現在のブロックおよび基準ブロック205および210の対応する画素の画素値の間の差(すなわち、A0−B0、A1−B1、A2−B2、...A15−B15)を決定する。SAD演算は、次いで、現在のブロックおよび基準ブロック205および210の対応する画素の画素値の間の差分絶対値を備える差分絶対値のセット(すなわち、|A0−B0|、|A1−B1|、|A2−B2|、...|A15−B15|)を決定する。最後に、SAD演算は、差分絶対値のセットの和(すなわち、|A0−B0|+|A1−B1|+|A2−B2|...+|A15−B15|)を決定する。
ここにおいて使用されるように、SAD演算は、少なくとも2つの値(例えば、画素値A0およびA1)を備える第1の値のセットならびに少なくとも2つの値(例えば、画素値B0およびB1)を備える第2の値のセットに関して実行され、SAD演算は、第1および第2の値のセットの特定の値の間の少なくとも2つの差分絶対値を備える差分絶対値のセット(例えば、|A0−B0|および|A1−B1|)と、少なくとも2つの差分絶対値のセットの和(例えば、|A0−B0|+|A1−B1|)とを決定する。いくつかの実施形態では、第1および第2の値のセットはそれぞれ2つ以上の値(例えば、画素値A0〜A15およびB0〜B15)を備える。第1の値のセットAおよび第2の値のセットBに関して実行されるSAD演算は、方程式
Σ|A−B|=C
によって表現され得る。式中、CはSAD演算の結果(すなわち、生成された値)を表す。
動作推定に関して実行されるSAD演算は、通常、ソフトウェアまたはハードウェア(例えば、中央演算処理装置、マイクロプロセッサ、デジタル信号プロセッサなど)を介して実施される。SAD演算を使用して現在のブロックを複数の基準ブロックと比較するためにソフトウェアまたはハードウェアがどのように構成されるかに応じて、ブロック比較は直列または並列で行われ得る。直列のブロック比較では、画素は、第2の基準ブロックの任意の画素に対する現在のブロックの比較が始まる前に、第1の基準ブロックのすべての対応する画素と比較される。
直列のブロック比較の例は、別の基準ブロックからの画素値に対する比較が始まる前に、現在のブロック205からのすべての画素値(A0〜A15)が基準ブロック210からのすべての画素値(B0〜B15)と比較される図2に示される。現在のブロック205からの画素値(A0〜A15)および基準ブロック210からの画素値(B0〜B15)は、別の基準ブロックからの任意の画素値がメモリからレジスタにロードされる前に基準ブロックの処理を完了するために、メモリからレジスタにロードされる(しかし、レジスタのサイズに応じて、2つ以上のロードサイクルが、通常必要とされることになる)。
他の実施形態では、並列のブロック比較が実行され、それにより、現在のブロックの第1の画素のサブセット(例えば、第1の画素の行)が第1の基準ブロックの対応する画素のサブセット(例えば、第1の画素の行)と比較され、かつ、同時に第2の基準ブロックの対応する第2の画素のサブセット(例えば、第1の画素の行)と比較される。現在のブロックの次の画素のサブセット(例えば、第2の画素の行)は、次いで、第1の基準ブロックの対応する次の画素のサブセット(例えば、第2の画素の行)と比較され、かつ、第2の基準ブロックの画素の対応する次のサブセット(例えば、第2の画素の行)と同時に比較され、現在のブロックならびに第1および第2の基準ブロックの各画素が処理されるまで、以下同様に行われる。これにより、並列のブロック比較では、現在のブロックおよび2つ以上の基準ブロックの間の比較は並列で実行され得る。並列のブロック比較では、メモリからのより少ないデータ取出しが存在するため、データ取出し時間は削減され得る点に留意されたい。例えば、値A0〜A3は一度取り出されて、2つのSAD演算に使用される(一方、直列のブロック比較では、値A0〜A7はより長い取出し時間を要求して取り出される)。
図3は、第1のSAD演算が現在のブロックの(画素A0〜A3を備える)第1の行305および第1の基準ブロックの(画素B0〜B3を備える)第1の行310に関して実行され、第2のSAD演算が現在のブロック305の第1の行および第2の基準ブロックの(画素C0〜C3を備える)第1の行315に関して実行される並列ブロック処理の概念図を示す。いくつかの実施形態では、第1および第2のSAD演算は並列で実行される。図3の例では、フレームのブロックは4×4の画素アレイを備え、アレイ内の各行は4画素を備え、各画素は1バイトの画素値を備える。他の実施形態では、ブロックは異なるサイズの画素アレイを備え、アレイ内の各行は異なる数の画素を備え、各画素は異なるサイズの画素値を備える。
現在のブロック205からの画素値(A0〜A3)ならびに第1および第2の基準ブロックからの画素値(B0〜B3およびC0〜C3)は、通常、処理のためにレジスタにロードされる。現在のブロックの第1の行305および第1の基準ブロックの(B0〜B3を備える)第1の行310に関して実行される第1のSAD演算は、対応する画素の間の差分絶対値を決定すること(すなわち、|A0−B0|、|A1−B1|、|A2−B2|および|A3−B3|)と、差分絶対値を合計すること(すなわち、|A0−B0|+|A1−B1|+|A2−B2|および|A3−B3|)とを備える。現在ブロックの第1の行305および第2の基準ブロックの(画素C0〜C3を備える)第1の行315に関して実行される第2のSAD演算は、対応する画素の間の差分絶対値を決定すること(すなわち、|A0−C0|、|A1−C1|、|A2−C2|、および|A3−C3|)と、差分絶対値を合計すること(すなわち、|A0−C0|+|A1−C1|+|A2−C2|+|A3−C3|)とを備える。次いで、第3および第4のSAD演算は、現在のブロックならびに第1および第2の基準ブロックに関する第2の画素の行に関して実行され、現在のブロックのすべての画素が処理されるまで、以下同様に行われる。
現在のブロックがSAD演算を使用して基準ブロックと直列で比較されるかまたは並列で比較されるかにかかわらず、SAD動作が、処理時間および処理資源の使用を削減して効率的に実行される場合は、動作推定は最適化され得る。いくつかの実施形態では、2つの独立したSAD演算は、2つの独立したSAD演算の結果を記憶するためのデスティネーションレジスタを使用して並列で実行される。いくつかの実施形態では、2つの独立したSAD演算を指定する(specify)ために単一の命令が使用され、単一の命令の実行は2つの独立したSAD結果を生成する。
図4は、2つの独立したSAD演算401および402が2個のソースレジスタと1個のデスティネーションレジスタとを使用して並列で実行されるコンピュータアーテクチャ400の概念図を示す。図4は、例示だけを目的とし、SAD演算の個別のステップを例示する点に留意されたい。他の実施形態では、SAD演算は(図4に示されるように)複数のステップを用いて実行されず、単一のステップで実行される。図4に示されるように、2つのSAD演算401および402は、第1のソースレジスタRss405にロードされた値X0〜X7および第2のソースレジスタRtt410にロードされた値Y0〜Y7に関して実行される。ここにおいて参照されるように、SAD演算によって処理される入力値(例えば、X0〜X7およびY0〜Y7)はソース値と呼ばれる。ソースレジスタ内の各値は、ソースレジスタ内の他の値と相対的な特定の順序また配置(第1の値、第2の値など)を有する。第1のソースレジスタ内の特定の値および第2のソースレジスタ内の特定の値が第1および第2のレジスタ内に同じ順序または同じ位置を有する場合は、第1のソースレジスタ内の特定の値および第2のソースレジスタ内の特定の値は「対応する値」と見なされる。例えば、第1のソースレジスタ内の第1の値および第2のソースレジスタ内の第1の値は対応する値である。2つのSAD演算401および402の結果はデスティネーションレジスタRdd425にロードされる。
SAD演算401および402は、(例えば、値X0〜X7が図2の値A0〜A7に等しく、値Y0〜Y7が図2の値B0〜B7に等しい場合)ブロック処理に直列で使用され得る。SAD演算401および402はまた、(例えば、値X0〜X3が図3の値A0〜A3に等しく、値X4〜X7も図3の値A0〜A3に等しく、値Y0〜Y3が図3のC0〜C3に等しく、値Y4〜Y7が図3の値B0〜B3等しい場合)ブロック処理に並列で使用されることも可能である。他の実施形態では、SAD演算401および402は他のタイプの処理の際に使用される。いくつかの実施形態では、SAD演算401および402は、2つのベクトルを備える値に関して動作し、スカラ値の結果を生成する。
第1のSAD演算401は、第1のソースレジスタRss405の第1の区分内に記憶された第1の値のセットX0〜X3および第2のソースレジスタRtt410の第1の区分内に記憶された第2の値のセットY0〜Y3に関して実行される。第1のSAD演算401は、第1および第2のソースレジスタの第1の区分内に記憶された第1および第2の値のセット内の対応する値の間の差分絶対値を備える第1の差分絶対値のセットを決定すること(すなわち、|X0−Y0|、|X1−Y1|、|X2−Y2|および|X3−Y3|)と、第1の差分絶対値のセットを合計すること(すなわち、|X0−Y0|+|X1−Y1|+|X2−Y2|+|X3−Y3|)とを備える。第1のSAD演算401の和の結果は、デスティネーションレジスタRdd425の第1の区分(W0)内に記憶される。
第2のSAD演算402は、第1のソースレジスタRss405の第2の区分内に記憶された第3の値のセットX4〜X7および第2のソースレジスタRtt410の第2の区分内に記憶された第4の値のセットY4〜Y7に関して実行される。第2のSAD演算402は、第1および第2のソースレジスタの第2の区分内に記憶された第3および第4の値のセット内の対応する値の間の差分絶対値を備える第2の差分絶対値のセットを決定すること(すなわち、|X4−Y4|、|X5−Y5|、|X6−Y6|および|X7−Y7|)と、差分絶対値の第2のセットを合計すること(すなわち、|X4−Y4|+|X5−Y5|+|X6−Y6|+|X7−Y7|)とを備える。第2のSAD演算402の和の結果は、デスティネーションレジスタRdd425の第2の区分(W1)内に記憶される。
いくつかの実施形態では、図4に例示される処理ステップは、上で説明された処理ステップを実行するように構成された(演算論理ユニットなどの)成分を有する実行ユニットによって実施される。例えば、複数のAD成分415は差分絶対値(AD)演算を実行するように構成されることが可能であり、複数の加算成分420は追加の演算を実行するように構成されることが可能である。他の実施形態では、図4に例示される処理ステップは演算論理ユニット内に含まれる実行ユニットによって実施される。
いくつかの実施形態では、演算を実行するために実行ユニットによって使用されるレジスタのアーキテクチャは、1つまたは複数のレジスタが単一のレジスタとしてまたは位置合わせされた1対のレジスタとしてアクセスされ得るようなものである。例えば、レジスタは、命令が32ビットの値または64ビットの値に関して動作し得るように、単一のレジスタとしてまたは位置合わせされた1対の64ビットのレジスタとしてアクセスされ得る複数の32ビットのレジスタを備えてよい。いくつかの実施形態では、ソースレジスタおよびデスティネーションレジスタ(Rss、Rtt、およびRdd)はそれぞれ位置合わせされた1対のレジスタを備え、対の第1のレジスタはソースレジスタまたはデスティネーションレジスタの第1の区分と呼ばれ、対の第2のレジスタはソースレジスタまたはデスティネーションレジスタの第2の区分と呼ばれる。いくつかの実施形態では、第1のSAD演算が(例えば、第1の区分内に記憶された値を取り出して処理するために、もしくは第1の区分に値をロードするために)ソースレジスタまたはデスティネーションレジスタの第1の区分にアクセスすることが可能であり、一方、第2の独立したSAD演算が(例えば、第1の区分内に記憶された値を取り出して処理するために、もしくは第2の区分に値をロードするために)ソースレジスタまたはデスティネーションレジスタの第2の区分に同時に(並列で)アクセスすることが可能であるように、位置合わせされた1対のレジスタの各区分(レジスタ)は独立してアクセス可能である。いくつかの実施形態では、第1のSAD演算は2個のソースレジスタおよび1個のデスティネーションレジスタの第1の区分にアクセスし/を使用し、第2のSAD演算はそれらの2個のソースレジスタおよびその1個のデスティネーションレジスタの第2の区分にアクセスし/を使用し、各レジスタの第1および第2の区分は独立してアクセス可能である。
例えば、第1および第2のソースRssおよびRttが64ビット(倍語)の位置合わせされた1対のレジスタであり、各加算成分420が32ビットの加算器であるように、第1および第2のソースレジスタRssおよびRtt内の各値(X0〜X7およびY0〜Y7)は1バイトを備えると仮定する。したがって、第1のSAD演算は、第1のソースレジスタRssの第1の32ビット(単語)の区分/レジスタ内に記憶された値X0〜X3にアクセスして、第2のソースレジスタRttの第1の32ビット(単語)の区分/レジスタ内に記憶された値Y0〜Y3にアクセスする。加えて、第2のSAD演算は、第1のソースレジスタRssの第2の32ビットの区分/レジスタ内に記憶された値X4〜X7に同時にアクセスして、第2のソースレジスタRttの第2の32ビットの区分/レジスタ内に記憶された値Y4〜Y7にアクセスする。デスティネーションレジスタRddは64ビット(倍語)の位置合わせされた1対のレジスタであることになる。第1のSAD演算の和の結果は、第1の32ビットの区分/レジスタ(語0に関する「W0」)に記憶され、第2のSAD演算の和の結果は、デスティネーションレジスタRddの第2の32ビットの区分/レジスタ(語1に関する「W1」)に記憶される。
いくつかの実施形態では、図4に例示される2つの独立したSAD演算は、単一のSAD命令によって指定される。図5は、図4に示されるコンピュータアーキテクチャ400内で2つの独立したSAD結果を生成する単一のSAD命令の命令構文505を示す。図5はまた、(例えば、プロセッサの実行ユニットによって)単一のSAD命令が受信および実行されるときに引き起こされる動作/結果として生じるステップ540も示す。
命令構文505は、SAD演算を指定する命令識別子510(例えば、「sad」)を含む。命令構文505は、2つの独立したSAD結果が記憶されるレジスタを識別する1つのデスティネーションレジスタ識別子515(例えば、Rdd)ならびに2つのSAD演算によって処理されることになるソース値が記憶される2個のレジスタを識別するする2つのソースレジスタ識別子520(例えば、RssおよびRtt)も含む。いくつかの実施形態では、命令構文505は、ソース値(インプット)またはSAD演算の生成された値(アウトプット)を特徴づける識別子をさらに含み得る。例えば、ソース値が2つのベクトルを備え、生成された結果がスカラ値であることを表示するために(「削減されたベクトル」に関する)「vr」が使用され得る。更なる例として、ソース値が符号無しのバイト値を備えることを表示するために(「符号無しのバイト」に関する)「ub」が使用され得る。
単一のSAD命令の実行によって引き起こされる処理は、図5の動作/結果として生じるステップ510で説明される。結果として生じるステップは、デスティネーションレジスタの初期化(Rdd=0)と、ソースレジスタの第1の区分内に記憶された値を処理するための第1のステップのセット545と、ソースレジスタの第2の区分内に記憶された値を処理するための第2のステップのセット550とを含む。第1および第2の処理ステップのセットはそれぞれ差分絶対値演算565と、デスティネーションレジスタへの差分絶対値の合計560と、(特定の数の反復のための)演算の繰返し555とを含む。いくつかの実施形態では、第1および第2の処理ステップのセットは並列で実行される。
例えば、第1の処理ステップのセット545は、ソースレジスタRssおよびRttの第1の区分内に(バイト0から3で)記憶された値の差分絶対値を決定すること(「ABS((Rss.ub[i]−Rtt.ub[i])」)と、デスティネーションレジスタの第1の区分(W0)内に差分絶対値を合計すること(「Rdd.w[0]=(Rdd.w[0]+ABS((Rss.ub[i]−Rtt.ub[i])))」)と、特定の数の反復に関して演算を繰り返すこと(「i=0の場合、i<4、i++」)とを含む。第2の処理ステップのセット550は、ソースレジスタRssおよびRttの第2の区分内に(バイト4から7で)記憶された値の差分絶対値を決定すること(「ABS((Rss.ub[i]−Rtt.ub[i])」)と、デスティネーションレジスタの第2の区分(W1)内で差分絶対値を合計すること(「Rdd.w[1]=(Rdd.w[1]+ABS((Rss.ub[i]−Rtt.ub[i])))」)と、特定の数の反復に関して演算を繰り返すこと(「i=4の場合、i<8、i++」)とを含む。
図6は、2個のソースレジスタRssおよびRttならびに1個のデスティネーションレジスタRddを使用して2つの独立したSAD演算が並列で実行される、代替のコンピュータアーキテクチャ600の概念図を示す。図6は、例示だけを目的としており、SAD演算の個別のステップを例示する点に留意されたい。他の実施形態では、SAD演算は(図6に示されるように)複数のステップを用いて実行されず、単一のステップで実行される。
代替のコンピュータアーキテクチャ600は各SAD演算のために累積ループ605を含む点を除き、代替のコンピュータアーキテクチャ600は図4のコンピュータアーキテクチャ400に類似する。累積ループ605は、2つ以上のSAD演算の和の結果をデスティネーションレジスタRddの特定の区分内に累積することを可能にする。例えば、第1のSAD演算は、デスティネーションレジスタの第1の区分に記憶された第1の和の結果を生成する2個のソースレジスタの第1の区分内でソース値に関して実行されると仮定する。その後、新しいソース値は2個のソースレジスタの第1の区分内にロードされ、第2のSAD演算が第2の和の結果を生成するために新しいソース値に関して実行される。累積ループ605は、第2の和の結果がデスティネーションレジスタの第1の区分内に記憶された第1の和の結果に対して累積/加算されることを可能にする。累積された和(第1の和+第2の和)は、次いで、デスティネーションレジスタの同じ第1の区分内に記憶し戻される。代替のコンピュータアーキテクチャ600内の加算成分420は、デスティネーションレジスタRddからのインプットも受信する点に留意されたい。
したがって、累積ループ605の使用により、現在のSAD演算の現在の和の結果は、1つまたは複数の先のSAD演算の(通常、非ゼロ値を備える)1つまたは複数の先の和の結果に対して加算/累積され得る。いくつかの実施形態では、現在のSAD演算の和の結果は、デスティネーションレジスタの特定の区分内で非ゼロ値に対して加算/累積され(非ゼロ値は、1つまたは複数の先のSAD演算の1つまたは複数の先の和の結果を備える)、累積された和(現在の和+1つまたは複数の先の和)は、次いで、デスティネーションレジスタの同じ区分に記憶し戻される。
図7は、図6に示される代替のコンピュータアーキテクチャ600内で2つの独立したSAD結果を生成する単一のSAD命令の命令構文705を示す。図7はまた、(例えば、プロセッサの実行ユニットによって)単一のSAD命令が受信および実行されるときに引き起こされる動作/結果として生じるステップ740も示す。図6の代替のコンピュータアーキテクチャ600に関する命令構文705では、レジスタRss、RttおよびRddの値から3つのインプットが要求される点に留意されたい。これは、(レジスタRssおよびRtt内の値から)2つのインプットだけを要求する、図4のコンピュータアーキテクチャ400に関する命令構文505と対照的である。また、命令構文505の結果として生じるステップ540は、現在のSAD演算および先のSAD演算の和を累積しないため、命令構文505の結果として生じるステップ540では、デスティネーションレジスタはゼロに初期化される(Rdd=0)点にも留意されたい。しかし、命令構文705の結果として生じるステップ740では、デスティネーションレジスタは1つまたは複数の先のSAD演算を保持することが可能であり、命令構文705の結果として生じるステップ740は現在のSAD演算および先のSAD演算の和を累積するため、デスティネーションレジスタはゼロに初期化されない。
和の累積は、現在のブロックおよび基準ブロックのすべての画素の差分絶対値の総計が必要とされるブロック比較において特に有利である。単一のSAD演算は、通常、現在のブロックおよび基準ブロックの一部だけを処理するため、複数のSAD演算が各ブロック比較に必要とされる。例えば、4行の画素を有する現在のブロックおよび基準ブロックの場合、現在のブロックと基準ブロックとを比較するために、通常、4つのSAD演算(各行に関して1つのSAD演算)が必要とされる。したがって、4つのSAD演算の結果の総計(すなわち、4つの和の結果の累積)が決定されなければならない。累積ループ605は、同じ現在のブロックおよび同じ基準ブロックに関して実行された個別のSAD演算の和の結果が各SAD演算の後で累積されることを可能にする。したがって、個別のSAD演算の和の結果は、後に個別の命令を通じて一緒に加算されなくてよい。
図8は、ハードウェア内でSAD命令を実施するために使用され得るコンパイライントリンシックおよび符号化を示す表である。コンパイライントリンシックは、(C言語などの)高級言語でコードを書き込むとき、プログラマにとって有用である。プログラマは、組み立て段階で(図8に示されるように)Rdd=vrsadub(Rss、Rtt)またはRxx+=vrsadub(Rss、Rtt)に対応する命令を使用するようコンパイラに命令するためにコンパイライントリンシックを使用することができる。符号化はプロセッサ(例えば、デジタル信号プロセッサ)の命令ユニットを設計するために使用され得る。他の実施形態では、ハードウェア内でSAD命令を実施するために異なるコンパイライントリンシックおよび符号化が使用される。
図9は、2個のソースレジスタと1個のデスティネーションレジスタとを使用して、2つの独立したSAD演算を並列で実行するための方法900の流れ図である。いくつかの実施形態では、方法900のいくつかのステップは、ソフトウェア内または(例えば、プロセッサの実行ユニットによって)ハードウェア内で実施される。方法900のステップは、例示だけを目的としており、ステップの順序または数は他の実施形態において異なってよく、または交換され得る。
方法900は、(905で)SAD演算を指定する単一のSAD命令が受信されるときに開始し、第1および第2のレジスタはソース値を記憶し、デスティネーションレジスタはSAD動作結果を記憶する(例えば、「Rdd=vrsadub(Rss、Rtt)」)。単一のSAD命令を受信することに応答して、方法900は、次いで、2つの独立したSAD演算を実行する。そうするために、方法は(907で)メモリから第1のソースレジスタの第1の区分に第1の値のセット(例えば、X0〜X3)をロードし、第2のソースレジスタの第1の区分に第2の値のセット(例えば、Y0〜Y3)をロードし、第1のソースレジスタの第2の区分に第3の値のセット(例えば、X4〜X7)をロードし、第2のソースレジスタの第2の区分に第4の値のセット(例えば、Y4〜Y7)をロードする。方法は、次いで、ソースレジスタの第1の区分内に記憶されたソース値に関して第1のSAD演算を実行するために第1のステップのセット(910〜920)を実行して、ソースレジスタの第2の区分内に記憶されたソース値に関して第2のSAD演算を実行するために第2のステップのセット(925〜935)を実行する。いくつかの実施形態では、第1および第2のステップのセット(すなわち、第1および第2のSAD演算)は並列で実行される。
ステップ910で、方法900は、第1および第2のソースレジスタの第1の区分内に記憶された第1および第2の値のセット内の対応する値の差分絶対値を備える第1の差分絶対値のセットを決定する。方法は、次いで、(915で)第1の差分絶対値のセットを合計する。オプションで、方法は、次いで、(917で)第1の差分絶対値のセットの和をデスティネーションレジスタの第1の区分内に記憶された、1つまたは複数の先のSAD演算の1つまたは複数の先の和(通常、非ゼロ値)に対して加算/累積する。方法は、次いで、(920で)和または累積の結果をデスティネーションレジスタの第1の区分にロードする。
ステップ925で、方法900は、第1および第2のソースレジスタの第2の区分内に記憶された第3および第4の値のセット内の対応する値の差分絶対値を備える第2の差分絶対値のセットを決定する。方法は、次いで、(930で)第2の差分絶対値のセットを合計する。オプションで、方法は、次いで、第2の差分絶対値のセットの和をデスティネーションレジスタの第2の区分内に記憶された1つまたは複数の先のSAD演算の1つまたは複数の和(通常、非ゼロ値)に対して加算/累積する。方法は、次いで、(935で)和または累積の結果をデスティネーションレジスタの第2の区分にロードする。方法は次いで終了する。
図10は、いくつかの実施形態で使用される汎用コンピュータアーキテクチャ1000の概念図を示す。アーキテクチャ1000は、メモリ1010と、処理ユニット1030と、メモリ1010を処理ユニット1030に結合する1つまたは複数のバス1020とを含む。
メモリ1010はデータ(例えば、ビデオフレームのブロックの画素値)と、少なくとも1つのSAD命令を含めて、命令とを記憶する。データおよび命令は、メモリ1010からデータまたは命令を取り出すために使用される特定のアドレスをメモリ1010内に有する。メモリに対するアドレス指定方式は当技術分野でよく知られており、ここでは詳細に議論されない。メモリ1010内のデータおよび/または命令は、バス1020を経由して処理ユニット1030にロードされる。
処理ユニット1030は、シーケンサ1035と、複数の実行ユニット1045のための複数のパイプライン1040と、(複数の汎用レジスタを備える)汎用レジスタファイル1050と、制御レジスタファイル1060とを備える。処理ユニット1030は、中央演算処理層、マイクロプロセッサ、デジタル信号プロセッサなどを備えてよい。いくつかの実施形態では、複数の実行ユニット1045は、SAD演算を実行するように構成された(SAD実行ユニットと呼ばれる)1つまたは複数の実行ユニットを含む。SAD実行ユニットは、(差分絶対値演算を実行するための複数のAD成分415および値を累積/合計するための複数の加算成分420など)SAD演算のために要求される処理ステップを実行するように構成された(演算論理ユニットなどの)成分を備える。他の実施形態では、SAD実行ユニットは演算論理ユニット内に含まれる。
通常、各命令は、命令を処理するために必要とされる実行ユニット1045のタイプに関する情報を含み、各実行ユニットは、通常、特定のタイプの命令だけを処理することが可能である。シーケンサ1035はメモリ1010から命令を受信して、命令を復号し、(命令内に含まれる情報を使用して)各命令に関して適切な実行ユニット1045を決定する。命令に関してこの決定を行った後に、シーケンサ1035は、適切な実行ユニット1045に制御信号を送信して、適切な実行ユニット1045による処理のために命令を適切なパイプライン1040内に入力する。
命令を受信する各実行ユニット1045は、汎用レジスタファイル1050を使用して命令を実行する。当技術分野でよく知られているように、汎用レジスタファイル1050はレジスタのアレイを備える。命令を実行するために必要とされる任意のデータ(例えば、画素値)は、メモリ1010から取り出されて、汎用レジスタファイル1050内のレジスタにロードされる。命令が実行ユニット1045によって実行された後で、結果として生じるデータ(例えば、SAD演算結果)は汎用レジスタファイル1050に記憶され、次いで、メモリ1010内にロードおよび記憶される。データはバス1020を経由してメモリ1010にロードされ、メモリ1010からロードされる。命令を実行するために、実行ユニット1045は、制御レジスタファイル1060を使用することも可能である。制御レジスタ1060は、通常、変更子レジスタ、状態レジスタ、および述語レジスタなど、特別なレジスタのセットを備える。制御レジスタ1060は、ループカウント(反復カウント)など、ソフトウェアループまたはハードウェアループに関する情報を記憶するために使用されることも可能である。
例えば、シーケンサ1035がSAD命令を受信する場合は、シーケンサ1035は、SAD実行ユニット1045による処理のために命令を適切なパイプライン1040に入力することになる。また、SAD命令を実行するために要求されるデータ(例えば、画素値)は、汎用レジスタファイル1050内の2個のソースレジスタにロードされる。したがって、SAD命令は(SAD実行ユニット1045を使用して)処理ユニット1030に2つの独立したSAD演算を実行させ、2つの和の結果を生成させる。2つの和の結果は汎用レジスタファイル1050内のデスティネーションレジスタに記憶され、次いで、バス1020を経由して、メモリ1010にロードおよび記憶される。いくつかの実施形態では、SAD実行ユニット1045によって使用されるソースレジスタおよびデスティネーションレジスタはそれぞれ独立してアクセス可能な位置合わせされた1対のレジスタを備える。
当業者は、情報および信号は様々な異なる技術および技法のうちのいずれかを使用して表現され得る点を理解されよう。例えば、上の説明を通じて参照され得るデータ、命令、コマンド、情報、信号、ビット、記号、およびチップは、電圧、電流、電磁波、磁場もしくは磁粉、光場もしくは光粒子、またはそれらの任意の組合せによって表現され得る。
当業者は、ここにおいて開示された実施形態に関して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはそれら両方の組合せとして実施され得る点をさらに理解されよう。ハードウェアおよびソフトウェアのこの交換可能性を分かりやすく例示するために、様々な例示的な成分、ブロック、モジュール、回路、およびステップが、一般に、それらの機能性の点から上で説明されている。そのような機能性がハードウェアとして実施されるかまたはソフトウェアとして実施されるかは、特定の適用業務およびシステム全体に課せられた設計制約に依存する。当業者は、説明された機能性を各特定の適用業務に関して様々な方法で実施することが可能であるが、そのようなインプリメンテーションの決定(implementation decision)は、本発明の範囲からの逸脱を引き起こすとして解釈されるべきではない。
ここで開示される実施形態に関して説明された様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラム可能なゲートアレイ(FPGA)もしくは他のプログラム可能な論理デバイス、離散的ゲートもしくはトランジスタ論理、離散的なハードウェア成分、またはここで説明された機能を実行するように設計されたそれらの任意の組合せを用いて実施または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、または代替では、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、もしくは状態機械であってよい。プロセッサはまた、コンピューティングデバイスの組合せ、例えば、DSPおよびマイクロプロセッサ、複数のマイクロプロセッサ、DSPコアと共に1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実施されることも可能である。
ここに開示された実施形態に関して説明された方法またはアルゴリズムのステップは、ハードウェアで直接的に、プロセッサによって実行されるソフトウェアモジュールで、またはそれら2つの組合せで実施され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、着脱可能ディスク、CD−ROM、または当技術分野で知られている記憶媒体の任意の他の形態の中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替では、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体は、ASIC内に常駐し得る。ASICはユーザ端末内に常駐し得る。代替では、プロセッサおよび記憶媒体は、ユーザ端末内の離散的成分として常駐し得る。
開示された実施形態のこれまでの説明は、当業者が本発明を作り、または使用することを可能にするために提供される。これらの実施形態への様々な変更は当業者に容易に理解されよう、またここにおいて定義される包括的な原理は、本発明の精神または範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本発明はここに示される実施形態に限定されるようには意図されておらず、ここに開示される原理および新規な特徴と整合する最も広い範囲が与えられるべきである。
動作推定方法の概念図。 現在のブロックおよび基準ブロックに関して実行されるSAD演算の概念図。 並列ブロック処理の概念図。 2つの独立したSAD演算が並列で実行されるコンピュータアーキテクチャの概念図。 図4に示されるコンピュータアーキテクチャ内で2つの独立したSAD結果を生成する単一のSAD命令の命令構文。 2つの独立したSAD演算が並列で実行される代替のコンピュータアーキテクチャの概念図。 図6に示される代替のコンピュータアーキテクチャ内で2つの独立したSAD結果を生成する単一のSAD命令の命令構文。 ハードウェア内でSAD命令を実施するために使用され得るコンパイライントリンシック(compiler intrinsics)および符号化を示す表。 2個のソースレジスタと1個のデスティネーションレジスタとを使用して、2つの独立したSAD演算を並列で実行するための方法の流れ図。 いくつかの実施形態で使用される汎用コンピュータアーキテクチャの概念図。

Claims (28)

  1. コンピュータ可読媒体であって、
    差分絶対値和(SAD)演算の結果を記憶するためのデスティネーションレジスタを指定する、前記媒体内に含まれるSAD命令、
    を備え、
    その命令は、SAD命令処理ユニットによって実行されるとき、前記処理ユニットに2つの独立したSAD演算を実行させ、
    前記の第1のSAD演算の結果は、前記デスティネーションレジスタ内の第1の区分内に記憶されており、前記の第2のSAD演算の結果は、前記デスティネーションレジスタ内の第2の区分内に記憶されている、
    コンピュータ可読媒体。
  2. 前記処理ユニットは、前記2つのSAD演算を並列で実行する、請求項1に記載のコンピュータ可読媒体。
  3. 前記SAD命令は、前記2つのSAD演算によって処理するためのソース値を記憶する2個のソースレジスタをさらに指定し、
    前記処理ユニットは、
    前記の第1のソースレジスタの第1の区分内および前記の第2のソースレジスタの第1の区分内に記憶されたソース値に関して前記の第1のSAD演算を実行することと、
    前記の第1のソースレジスタの第2の区分内および前記の第2のソースレジスタの第2の区分内に記憶されたソース値に関して前記の第2のSAD演算を実行することと、
    によって、前記2つの独立したSAD演算を実行し、
    前記デスティネーションレジスタおよび前記ソースレジスタはそれぞれ、位置合わせされた1対のレジスタを備え、前記対の前記第1のレジスタは、前記ソースレジスタまたは前記デスティネーションレジスタの前記第1の区分を備え、前記対の前記第2のレジスタは、前記ソースレジスタまたは前記デスティネーションレジスタの前記第2の区分を備える、
    請求項1に記載のコンピュータ可読媒体。
  4. 前記の第1のSAD演算が前記レジスタの第1の区分にアクセスすることができ、一方、前記の第2の独立したSAD演算が前記レジスタの第2の区分に同時にアクセスすることができるように、前記ソースレジスタおよび前記デスティネーションレジスタはそれぞれ、2つの、独立してアクセス可能な区分を備える、請求項3に記載のコンピュータ可読媒体。
  5. 前記処理ユニットは、前記の第1および第2のソースレジスタの前記第1の区分内に記憶された対応するソース値の差分絶対値を備える第1の差分絶対値のセットの和を決定することによって、前記の第1のSAD演算を実行し、
    前記処理ユニットは、前記の第1および第2のソースレジスタの前記第2の区分内に記憶された対応するソース値の前記差分絶対値を備える第2の差分絶対値のセットの和を決定することによって、前記の第2のSAD演算を実行する、
    請求項3に記載のコンピュータ可読媒体。
  6. 前記の第1および第2のソースレジスタ内に記憶された前記ソース値は、ビデオフレームの画素値を備え、
    前記の第1のソースレジスタは、現在のフレームの現在のブロックの画素値を記憶し、前記第2のソースレジスタは、基準フレームの2つの異なるブロックの画素値を記憶する、
    請求項3に記載のコンピュータ可読媒体。
  7. 前記処理ユニットは、
    前記デスティネーションレジスタの前記第1の区分内に記憶された別のSAD演算の結果を前記の第1のSAD演算の前記結果に対して加算することと、そして、前記加算した和を前記デスティネーションレジスタの前記第1の区分内に記憶することと、
    前記デスティネーションレジスタの前記第2の区分内に記憶された別のSAD演算の結果を前記の第2のSAD演算の前記結果に対して加算することと、そして、前記加算した和を前記デスティネーションレジスタの前記第2の区分内に記憶することと、
    によって、前記2つの独立したSAD演算を実行する、
    請求項1に記載のコンピュータ可読媒体。
  8. 差分絶対値和(SAD)演算を実行するための方法であって、
    SAD演算の結果を記憶するためのデスティネーションレジスタを指定する単一のSAD命令を受信することと、
    前記単一のSAD命令を受信することに応答して、2つの独立したSAD演算を実行することと、
    を備え、
    前記の第1のSAD演算の結果は、前記デスティネーションレジスタの第1の区分内に記憶されており、前記の第2のSAD演算の結果は、前記デスティネーションレジスタの第2の区分内に記憶されている、
    方法。
  9. 前記2つのSAD演算は、並列で実行される、請求項8に記載の方法。
  10. 前記単一のSAD命令は、前記2つのSAD演算による処理のためのソース値を記憶する2個のソースレジスタをさらに指定し、
    前記2つのSAD演算を実行することは、
    前記の第1のソースレジスタの第1の区分内および前記の第2のソースレジスタの第1の区分内に記憶されたソース値に関して前記の第1のSAD演算を実行することと、
    前記の第1のソースレジスタの第2の区分内および前記の第2のソースレジスタの第2の区分内に記憶されたソース値に関して前記の第2のSAD演算を実行することと、
    をさらに備え、
    前記デスティネーションレジスタおよび前記ソースレジスタはそれぞれ、位置合わせされた1対のレジスタを備え、前記対の前記第1のレジスタは、前記ソースレジスタまたは前記デスティネーションレジスタの前記第1の区分を備え、前記対の前記第2のレジスタは、前記ソースレジスタまたは前記デスティネーションレジスタの前記第2の区分を備える、
    請求項8に記載の方法。
  11. 前記の第1のSAD演算が前記レジスタの第1の区分にアクセスでき、一方、前記第2の独立したSAD演算が前記レジスタの第2の区分に同時にアクセスできるように、前記ソースレジスタおよび前記デスティネーションレジスタはそれぞれ、2つの、独立してアクセス可能な区分を備える、請求項10に記載の方法。
  12. 前記の第1のSAD演算を実行することは、前記の第1および第2のソースレジスタの前記第1の区分内に記憶された対応するソース値の差分絶対値を備える第1の差分絶対値のセットの和を決定すること、をさらに備え、
    前記の第2のSAD演算を実行することは、前記第1および第2のソースレジスタの前記第2の区分内に記憶された対応するソース値の前記差分絶対値を備える第2の差分絶対値のセットの和を決定すること、をさらに備える、
    請求項10に記載の方法。
  13. 前記の第1および第2のソースレジスタ内に記憶された前記ソース値は、ビデオフレームの画素値を備え、
    前記の第1のソースレジスタは、現在のフレームの現在のブロックの画素値を記憶し、前記の第2のソースレジスタは、基準フレームの2つの異なるブロックの画素値を記憶する、
    請求項10に記載の方法。
  14. 前記2つのSAD演算を実行することは、
    前記デスティネーションレジスタの前記第1の区分内に記憶された別のSAD演算の結果を前記の第1のSAD演算の前記結果に対して加算することと、そして、前記加算した和を前記デスティネーションレジスタの前記第1の区分内に記憶することと、
    前記デスティネーションレジスタの前記第2の区分内に記憶された別のSAD演算の結果を前記の第2のSAD演算の前記結果に対して加算することと、そして、前記加算した和を前記デスティネーションレジスタの前記第2の区分内に記憶することと、
    を備える、
    請求項8に記載の方法。
  15. 差分絶対値和(SAD)演算を実行するための装置であって、
    SAD演算結果を記憶するためのデスティネーションレジスタを指定する単一のSAD命令を受信するための手段と、
    前記単一のSAD命令を受信することに応答して、2つの独立したSAD演算を実行するための手段と、
    を備え、
    前記の第1のSAD演算の結果は、前記デスティネーションレジスタ内の第1の区分内に記憶されており、前記の第2のSAD演算の結果は、前記デスティネーションレジスタの第2の区分内に記憶されている、
    装置。
  16. 前記2つのSAD演算は、並列で実行される、請求項15に記載の装置。
  17. 前記単一のSAD命令は、前記2つのSAD演算による処理のためのソース値を記憶する2個のソースレジスタをさらに指定し、
    前記2つの独立したSAD演算を実行するための前記手段は、
    前記の第1のソースレジスタの第1の区分内および前記の第2のソースレジスタの第1の区分内に記憶されたソース値に関して前記の第1のSAD演算を実行するための手段と、
    前記の第1のソースレジスタの第2の区分内および前記の第2のソースレジスタの第2の区分内に記憶されたソース値に関して前記の第2のSAD演算を実行するための手段と、
    をさらに備え、
    前記デスティネーションレジスタおよび前記ソースレジスタはそれぞれ、位置合わせされた1対のレジスタを備え、前記対の前記第1のレジスタは、前記ソースレジスタまたは前記デスティネーションレジスタの前記第1の区分を備え、前記対の前記第2のレジスタは、前記ソースレジスタまたは前記デスティネーションレジスタの前記第2の区分を備える、
    請求項15に記載の装置。
  18. 前記の第1のSAD演算が前記レジスタの第1の区分にアクセスでき、一方、前記の第2の独立したSAD演算が前記レジスタの第2の区分に同時にアクセスできるように、前記ソースレジスタおよび前記デスティネーションレジスタはそれぞれ、2つの、独立してアクセス可能な区分を備える、請求項17に記載の装置。
  19. 前記の第1のSAD演算を実行するための前記手段は、前記の第1および第2のソースレジスタの前記第1の区分内に記憶された対応するソース値の差分絶対値を備える第1の差分絶対値のセットの和を決定するための手段、をさらに備え、
    前記の第2のSAD演算を実行するための前記手段は、前記の第1および第2のソースレジスタの前記第2の区分内に記憶された対応するソース値の前記差分絶対値を備える第2の差分絶対値のセットの和を決定するための手段、をさらに備える、
    請求項17に記載の装置。
  20. 前記の第1および第2のソースレジスタ内に記憶された前記ソース値は、ビデオフレームの画素値を備え、
    前記の第1のソースレジスタは、現在のフレームの現在のブロックの画素値を記憶し、前記の第2のソースレジスタは、基準フレームの2つの異なるブロックの画素値を記憶する
    請求項17に記載の装置。
  21. 前記2つのSAD演算を実行するための前記手段は、
    前記デスティネーションレジスタの前記第1の区分内に記憶された別のSAD演算の結果を前記の第1のSAD演算の前記結果に対して加算し、前記加算した和を前記デスティネーションレジスタの前記第1の区分内に記憶するための手段と、
    前記デスティネーションレジスタの前記第2の区分内に記憶された別のSAD演算の結果を前記の第2のSAD演算の前記結果に対して加算し、前記加算した和を前記デスティネーションレジスタの前記第2の区分内に記憶するための手段と、
    を備える、
    請求項15に記載の装置。
  22. 差分絶対値和(SAD)演算を実行するための装置であって、
    前記装置は、
    SAD演算の結果を記憶するためのデスティネーションレジスタを指定する少なくとも1つのSAD命令を記憶するためのメモリと、
    前記メモリに結合された処理ユニットと、
    を備え、
    前記処理ユニットは、単一のSAD命令を受信すると、2つの独立したSAD演算を実行するように構成されており、前記処理ユニットは、
    SAD演算を実行するように構成された1つまたは複数の実行ユニットと、
    デスティネーションレジスタを備えるレジスタのセットと、
    を備え、
    前記の第1のSAD演算の結果は、前記デスティネーションレジスタの第1の区分内に記憶され、前記の第2のSAD演算の結果は、前記デスティネーションレジスタの第2の区分内に記憶される、
    装置。
  23. 前記処理ユニットは、前記2つのSAD演算を並列で実行するように構成されている、請求項22に記載の装置。
  24. 前記SAD命令は、前記2つのSAD演算による処理のためのソース値を記憶する2個のソースレジスタをさらに指定し、
    前記レジスタのセットは、2個のソースレジスタをさらに備え、
    前記処理ユニットは、
    前記の第1のソースレジスタの第1の区分内および前記の第2のソースレジスタの第1の区分内に記憶されたソース値に関して前記の第1のSAD演算を実行することと、
    前記の第1のソースレジスタの第2の区分内および前記の第2のソースレジスタの第2の区分内に記憶されたソース値に関して前記の第2のSAD演算を実行することと、
    によって、前記2つの独立したSAD演算を実行するように構成されており、
    前記デスティネーションレジスタおよび前記ソースレジスタはそれぞれ、位置合わせされた1対のレジスタを備え、前記対の前記の第1のレジスタは、前記ソースレジスタまたは前記デスティネーションレジスタの前記第1の区分を備え、前記対の前記の第2のレジスタは、前記ソースレジスタまたは前記デスティネーションレジスタの前記第2の区分を備える、
    請求項22に記載の装置。
  25. 前記の第1のSAD演算は前記レジスタの第1の区分にアクセスすることは可能であり、一方、前記第2の独立したSAD演算は前記レジスタの第2の区分に独立してアクセスすることはできるように、前記ソースレジスタおよび前記デスティネーションレジスタはそれぞれ2つの独立してアクセス可能な区分を備える、請求項24に記載の装置。
  26. 前記処理ユニットは、前記第1および第2のソースレジスタの前記第1の区分内に記憶された対応するソース値の前記差分絶対値を備える第1の差分絶対値のセットの和を決定することによって、前記の第1のSAD演算を実行するように構成され、
    前記処理ユニットは、前記第1および前記第2のソースレジスタの前記第2の区分内に記憶された対応するソース値の前記差分絶対値を備える第2の差分絶対値のセットの和を決定することによって、前記の第2のSAD演算を実行するように構成されている、
    請求項24に記載の装置。
  27. 前記の第1および第2のソースレジスタ内に記憶された前記ソース値は、ビデオフレームの画素値を備え、
    前記の第1のソースレジスタは、現在のフレームの現在のブロックの画素値を記憶し、前記第2のソースレジスタは基準フレームの2つの異なるブロックの画素値を記憶する
    請求項24に記載の装置。
  28. 前記処理ユニットは、
    前記デスティネーションレジスタの前記第1の区分内に記憶された別のSAD演算の結果を前記の第1のSAD演算の前記結果に対して加算することと、そして、前記加算した和を前記デスティネーションレジスタの前記第1の区分内に記憶することと、
    前記デスティネーションレジスタの前記第2の区分内に記憶された別のSAD演算の結果を前記の第2のSAD演算の前記結果に対して加算することと、前記加算した和を前記デスティネーションレジスタの前記第2の区分内に記憶することと、
    によって、前記2つ独立したSAD演算を実行するように構成されている、
    請求項22に記載の装置。
JP2009510124A 2006-05-10 2007-05-07 2つの独立した差分絶対値和を生成するための命令 Active JP4995897B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/431,301 US8290044B2 (en) 2006-05-10 2006-05-10 Instruction for producing two independent sums of absolute differences
US11/431,301 2006-05-10
PCT/US2007/068389 WO2007134011A2 (en) 2006-05-10 2007-05-07 Instruction for producing two independent sums of absolute differences

Publications (2)

Publication Number Publication Date
JP2009536773A true JP2009536773A (ja) 2009-10-15
JP4995897B2 JP4995897B2 (ja) 2012-08-08

Family

ID=38658606

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009510124A Active JP4995897B2 (ja) 2006-05-10 2007-05-07 2つの独立した差分絶対値和を生成するための命令

Country Status (8)

Country Link
US (1) US8290044B2 (ja)
EP (1) EP2025175B1 (ja)
JP (1) JP4995897B2 (ja)
KR (1) KR100996337B1 (ja)
CN (1) CN101438598B (ja)
ES (1) ES2733022T3 (ja)
HU (1) HUE044078T2 (ja)
WO (1) WO2007134011A2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104025019B (zh) * 2011-12-23 2018-01-05 英特尔公司 用于执行双块绝对差求和的系统、装置和方法
US11294815B2 (en) * 2015-06-10 2022-04-05 Mobileye Vision Technologies Ltd. Multiple multithreaded processors with shared data cache
US11513796B2 (en) * 2017-02-23 2022-11-29 Arm Limited Multiply-accumulation in a data processing apparatus
US10481870B2 (en) 2017-05-12 2019-11-19 Google Llc Circuit to perform dual input value absolute value and sum operation
KR20200008539A (ko) 2019-12-27 2020-01-28 주식회사 성환산업 빗물의 재활용 방법 및 시스템
KR102267401B1 (ko) 2020-08-06 2021-06-18 주식회사 선샘산업 저장 용수의 수질 오염 방지 유닛 및 그 오염 방지 유닛을 이용한 저장 용수 수질 오염 방지 방법 및 방지 시스템
US20220308881A1 (en) * 2021-03-26 2022-09-29 Intel Corporation Instruction and logic for sum of absolute differences

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06225287A (ja) * 1993-01-25 1994-08-12 Sony Corp 演算回路
JP2000057111A (ja) * 1998-08-04 2000-02-25 Hitachi Ltd 並列処理プロセッサ、および、並列処理方法
JP2005072800A (ja) * 2003-08-21 2005-03-17 Renesas Technology Corp ブロックマッチング演算装置
JP2005070938A (ja) * 2003-08-21 2005-03-17 Matsushita Electric Ind Co Ltd 信号処理装置及びそれを用いた電子機器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0168136B1 (ko) * 1994-12-31 1999-03-20 김주용 움직임 추정 칩의 처리소자 장치
TW361051B (en) * 1997-01-09 1999-06-11 Matsushita Electric Ind Co Ltd Motion vector detection apparatus
GB2372848B (en) * 2001-02-20 2004-10-27 Advanced Risc Mach Ltd Data processing using a coprocessor
US7054895B2 (en) 2001-06-21 2006-05-30 Ligos Corporation System and method for parallel computing multiple packed-sum absolute differences (PSAD) in response to a single instruction
US20060002471A1 (en) * 2004-06-30 2006-01-05 Lippincott Louis A Motion estimation unit
US7555513B2 (en) * 2004-09-13 2009-06-30 Broadcom Corporation SIMD processor having enhanced operand storage interconnects

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06225287A (ja) * 1993-01-25 1994-08-12 Sony Corp 演算回路
JP2000057111A (ja) * 1998-08-04 2000-02-25 Hitachi Ltd 並列処理プロセッサ、および、並列処理方法
JP2005072800A (ja) * 2003-08-21 2005-03-17 Renesas Technology Corp ブロックマッチング演算装置
JP2005070938A (ja) * 2003-08-21 2005-03-17 Matsushita Electric Ind Co Ltd 信号処理装置及びそれを用いた電子機器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
宮崎 孝: "汎用プロセッサを用いたビデオコーデック", 電子情報通信学会論文誌, vol. 第J83-A巻 第12号, JPN6011001992, 25 December 2000 (2000-12-25), JP, pages 1339 - 1348, ISSN: 0001826466 *

Also Published As

Publication number Publication date
EP2025175A2 (en) 2009-02-18
US20070263730A1 (en) 2007-11-15
ES2733022T3 (es) 2019-11-27
HUE044078T2 (hu) 2019-09-30
KR20090012269A (ko) 2009-02-02
KR100996337B1 (ko) 2010-11-23
CN101438598B (zh) 2013-08-14
JP4995897B2 (ja) 2012-08-08
WO2007134011A3 (en) 2008-01-24
EP2025175B1 (en) 2019-04-03
CN101438598A (zh) 2009-05-20
WO2007134011A2 (en) 2007-11-22
US8290044B2 (en) 2012-10-16

Similar Documents

Publication Publication Date Title
JP4995897B2 (ja) 2つの独立した差分絶対値和を生成するための命令
US10891353B2 (en) Apparatus and methods for matrix addition and subtraction
JP7335231B2 (ja) Simd命令を用いた効率的な直接畳み込み
JP4380987B2 (ja) アレイ処理動作
US7778494B2 (en) FIR-based interpolation in advanced video codecs on VLIW processor
JP5748935B2 (ja) Simd命令をサポートするプログラマブルデータ処理回路
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
TWI470545B (zh) 用以執行範圍檢測之設備,處理器,系統,方法,指令,及邏輯
US10853069B2 (en) Apparatus and methods for comparing vectors
JP5559297B2 (ja) ハードウェアエンドループ情報の命令へのコード化
US9785434B2 (en) Fast minimum and maximum searching instruction
US7793084B1 (en) Efficient handling of vector high-level language conditional constructs in a SIMD processor
JP2013242892A (ja) マイクロプロセッサ内において複数のレジスタユニットからの対応する半語ユニットを結合するための方法及びシステム
US20030005267A1 (en) System and method for parallel computing multiple packed-sum absolute differences (PSAD) in response to a single instruction
JP2620511B2 (ja) データ・プロセッサ
CN111651202A (zh) 一种用于执行向量逻辑运算的装置
US20040003376A1 (en) Method of programming linear graphs for streaming vector computation
Lee et al. Multi-pass and frame parallel algorithms of motion estimation in H. 264/AVC for generic GPU
TW201633147A (zh) 經改良之單一指令多重資料(simd)的k最近鄰居法之實施技術
US9241142B2 (en) Descriptor-based stream processor for image processing and method associated therewith
JP2793342B2 (ja) 演算処理装置
CN113626079A (zh) 数据处理方法及装置以及相关产品
JP2004334297A (ja) 並列演算処理装置及び並列演算処理方法
JP4696540B2 (ja) コンピュータ、データ処理方法およびプログラム
WO2023072791A1 (en) Performing a floating-point multiply-add operation in a computer implemented environment

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111108

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120208

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120308

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120410

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120510

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4995897

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250