(57)【特許請求の範囲】
【請求項１】
単一のデータ処理命令に応答して単一命令複数データ（ＳＩＭＤ）データ処理演算を実行するための装置であって、
前記装置は、
乗算命令に応答して、１つまたはそれ以上の入力記憶装置内に格納された複数の独立したデータ値を入力し、それぞれの複数の結果データ値を出力する処理ロジックと、
前記それぞれの複数の結果データ値に応答して、前記それぞれの複数の結果データ値の各結果データ値の上位ビット部分を上位結果記憶装置内に一緒に格納し、かつ、前記それぞれの複数の結果データ値の各結果データ値の下位ビット部分を下位結果記憶装置内に一緒に格納する結果区分器と
を具備し、
前記出力のデータ幅は前記入力のデータ幅の２倍であり、
前記結果区分器は、前記出力から前記複数の独立したデータ値の各々のデータ幅の単位で互い違いに選択して前記上位結果記憶装置および前記下位結果記憶装置に格納することを特徴とする装置。
【請求項２】
前記処理ロジックは、各組の独立したデータ値、すなわち第１の入力記憶装置から取得される１組の第１の独立データ値及び第２の入力記憶装置から取得される１組の第２の独立データ値を互いに乗算するように機能することを特徴とする請求項１に記載の装置。
【請求項３】
前記処理ロジックは、前記複数の結果データ値を生成するために、前記各組の独立データ値から生成された値を伴った、前記上位結果記憶装置及び前記下位結果記憶装置内にすでに格納された値を累積するように機能することを特徴とする請求項２に記載の装置。
【請求項４】
各結果データ値の前記上位ビット部分及び前記下位ビット部分は、前記結果データ値の重なり合わない連続した部分であることを特徴とする請求項１から請求項３のうちいずれか１に記載の装置。
【請求項５】
前記データ処理命令が、前記独立したデータ値が符号付きの値であることを示すとき、前記処理ロジックは、第２の独立データ値と第１の独立データ値を乗算することにより得られた各値を２倍にするように機能することを特徴とする請求項２から請求項４のうちいずれか１に記載の装置。
【請求項６】
各入力記憶装置は、M個（Mは整数）の独立したNビットデータ値（Nは整数）を格納することを特徴とする請求項１から請求項５のうちいずれか１に記載の装置。
【請求項７】
前記データ処理命令は、前記独立したデータ値のデータ幅を指定することを特徴とする請求項６に記載の装置。
【請求項８】
前記処理ロジックは、各組の前記独立したデータ値を互いに乗算するように機能する整数乗算器であることを特徴とする請求項２から請求項７のうちいずれか１に記載の装置。
【請求項９】
前記処理ロジックは、前記独立したデータ値で飽和データ処理演算を実行するように機能することを特徴とする請求項１から請求項８のうちいずれか１に記載の装置。
【請求項１０】
前記結果区分器は、前記データ処理命令に応じて制御される複数のマルチプレクサを含むことを特徴とする請求項１から請求項９のうちいずれか１に記載の装置。
【請求項１１】
前記装置は、プロセッサコアであることを特徴とする請求項１から請求項１０のうちいずれか１に記載の装置。
【請求項１２】
１つまたはそれ以上の前記入力記憶装置は、
レジスタバンクレジスタと、
専用レジスタと、
バッファメモリと、
先入れ先出しバッファと、
メモリと
のうちの１つまたはそれ以上であることを特徴とする請求項１から請求項１１のうちいずれか１に記載の装置。
【請求項１３】
前記上位結果記憶装置は、
レジスタバンクレジスタと、
専用レジスタと、
バッファメモリと、
先入れ先出しバッファと、
メモリと
のうちの１つであることを特徴とする請求項１から請求項１２のうちいずれか１に記載の装置。
【請求項１４】
前記下位結果記憶装置は、
レジスタバンクレジスタと、
専用レジスタと、
バッファメモリと、
先入れ先出しバッファと、
メモリと
のうちの１つであることを特徴とする請求項１から請求項１３のうちいずれか１に記載の装置。
【請求項１５】
前記処理ロジックは、各結果データ値に対して１つまたはそれ以上の上位ガードビットを生成するように機能し、かつ、前記結果区分器は、ガードビット記憶装置内に前記ガードビットを格納するように機能することを特徴とする請求項１から請求項１４のうちいずれか１に記載の装置。
【請求項１６】
前記ガードビット記憶装置は、
レジスタバンクレジスタと、
専用レジスタと、
バッファメモリと、
先入れ先出しバッファと、
メモリと
のうちの１つであることを特徴とする請求項１５に記載の装置。
【請求項１７】
単一のデータ処理命令に応答して単一命令複数データ（ＳＩＭＤ）データ処理演算を実行する方法であって、
前記方法は、
乗算命令に応答して、１つまたはそれ以上の入力記憶装置内に格納された複数の独立したデータ値を入力し、それぞれの複数の結果データ値を出力する段階と、
前記それぞれの複数の結果データ値に応答して、前記それぞれの複数の結果データ値の各結果データ値の上位ビット部分を上位結果記憶装置内に一緒に格納し、かつ、前記それぞれの複数の結果データ値の各結果データ値の下位ビット部分を下位結果記憶装置内に一緒に格納することによって、前記結果データ値を区分する段階と
を具備し、
前記出力のデータ幅は前記入力のデータ幅の２倍であり、
前記区分する段階は、前記出力から前記複数の独立したデータ値の各々のデータ幅の単位で互い違いに選択して前記上位結果記憶装置および前記下位結果記憶装置に格納することを特徴とする方法。
【請求項１８】
前記各組の独立したデータ値、すなわち、第１の入力記憶装置から取得される１組の第１の独立したデータ値及び第２の入力記憶装置から取得される１組の第２の独立したデータ値は、互いに乗算されることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記上位結果記憶装置及び前記下位結果記憶装置内にすでに格納された値は、前記複数の結果データ値を生成するために、前記各組の独立したデータ値から生成された値に累積されることを特徴とする請求項１８に記載の方法。
【請求項２０】
各結果データ値の前記上位ビット部分及び前記下位ビット部分は、前記結果データ値の重なり合わない連続した部分であることを特徴とする請求項１７から請求項１９のうちいずれか１に記載の方法。
【請求項２１】
前記データ処理命令が、前記独立したデータ値が符号付きの値であることを示すとき、第１の独立したデータ値と第２の独立したデータ値とを乗算することにより得られた各値は２倍にされることを特徴とする請求項１８から請求項２０のうちいずれか１に記載の方法。
【請求項２２】
各入力記憶装置は、M個（Mは整数）の独立したNビットデータ値（Nは整数）を格納することを特徴とする請求項１７から請求項２１のうちいずれか１に記載の方法。
【請求項２３】
前記データ処理命令は、前記独立したデータ値のデータ幅を指定することを特徴とする請求項２２に記載の方法。
【請求項２４】
整数乗算器は、前記各組の独立したデータ値を互いに乗算するように機能することを特徴とする請求項１８から請求項２３のうちいずれか１に記載の方法。
【請求項２５】
飽和データ処理演算は、前記独立したデータ値で実行されることを特徴とする請求項１７から請求項２４のうちいずれか１に記載の方法。
【請求項２６】
区分する段階は、前記データ処理命令に応じて制御される複数のマルチプレクサによって少なくとも部分的に実行されることを特徴とする請求項１７から請求項２５のうちいずれか１に記載の方法。
【請求項２７】
前記方法は、プロセッサコア内で実行されることを特徴とする請求項１７から請求項２６のうちいずれか１に記載の方法。
【請求項２８】
１つまたはそれ以上の前記入力記憶装置は、
レジスタバンクレジスタと、
専用レジスタと、
バッファメモリと、
先入れ先出しバッファと、
メモリと
のうちの１つまたはそれ以上であることを特徴とする請求項１７から請求項２７のうちいずれか１に記載の方法。
【請求項２９】
前記上位結果記憶装置は、
レジスタバンクレジスタと、
専用レジスタと、
バッファメモリと、
先入れ先出しバッファと、
メモリと
のうちの１つであることを特徴とする請求項１７から請求項２８のうちいずれか１に記載の方法。
【請求項３０】
前記下位結果記憶装置は、
レジスタバンクレジスタと、
専用レジスタと、
バッファメモリと、
先入れ先出しバッファと、
メモリと
のうちの１つであることを特徴とする請求項１７から請求項２９のうちいずれか１に記載の方法。
【請求項３１】
処理ロジックは、各結果データ値に対して１つまたはそれ以上の上位ガードビットを生成するように機能し、かつ、結果区分器は、ガードビット記憶装置内に前記ガードビットを格納するように機能することを特徴とする請求項１７から請求項３０のうちいずれか１に記載の方法。
【請求項３２】
前記ガードビット記憶装置は、
レジスタバンクレジスタと、
専用レジスタと、
バッファメモリと、
先入れ先出しバッファと、
メモリと
のうちの１つであることを特徴とする請求項３１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。さらに詳細には、本発明は、単一命令複数データ(SIMD)データ処理システムにおける複数の結果(result)データ値を有する結果の区分化(partitioning)に関する。
【背景技術】
【０００２】
SIMD機能(capability)をデータ処理システムに構築することが知られている。そのようなシステムにおいて、一般的に、レジスタは処理されるべき複数の独立したデータ値を含んでいる。一例として、32ビットレジスタは、例えば、他の32ビットレジスタ内に格納された２つの他の16ビットデータ値と別々に加算されるか、乗算されるか、またはそれとは別に組み合わされる２つの独立した16ビットデータ値を含む。そのようなSIMD演算はデジタル信号処理の分野では一般的なことであるとともに、処理速度の向上やコード密度の低減を始めとする利点を有する。
【０００３】
公知のSIMD技術の一例は、インテル(登録商標)コーポレーションによって製造されたインテル(登録商標)プロセッサのMMX命令である。４つの16ビットデータ値をそれぞれ有する２つのレジスタを互いに乗算させる命令が前記MMX命令に含まれている。16ビットデータ値が別の16ビットデータ値と乗算される場合、そのときの結果は32ビットデータ値となる。従って、前記MMX SIMD命令で指定した４組の16ビットデータ値が互いに乗算される場合、その結果は、４つの32ビット結果データ値となる。多くの状況において、そのような演算が実行される場合、前記SIMDフォーマット及びデータサイズは維持されることが望ましい。このために、前記MMX命令は、あるタイプの命令を有する。上記状況において、前記命令では、生成された前記結果が、各32ビット結果の最上位16ビットである４つの16ビット結果データ値の形式であるとともに、これら16ビット値は単一64ビットレジスタ内で組み合わされる。すなわち、前記MMX命令は、SIMDタイプ結果を生成する命令も含んでいる。別の方法では、64ビットレジスタ内で組み合わされた出力として、乗算結果の４つの最下位16ビットを生成する別々の命令を有することも可能である。
【発明の開示】
【課題を解決するための手段】
【０００４】
一形態から見て、本発明は、データ処理命令に応じてデータ処理演算を実行するための装置を提供する。前記装置は、１つまたはそれ以上の入力記憶装置(input stores)内に格納された複数の独立したデータ値からそれぞれ複数の結果データ値を生成するために、前記データ処理命令に応答する処理ロジックと、上位結果記憶装置内の各結果データ値の上位ビット部分及び下位結果記憶装置内の各結果データ値の下位ビット部分を格納するために、前記データ処理命令に応答する結果区分器(partitioner)とを備える。
【０００５】
SIMDタイプ結果を生成することが多くの場合において望まれるかもしれないが、いくつかの状況においては、例えば不適切な丸め誤差などの不都合な結果を避けるために、前記結果の十分な精度を維持することが重要であることを本発明は認識する。従って、本技術は、単一データ処理命令に応答するシステムを提供し、その結果、コード密度が高くなるとき、SIMDタイプ演算が複数の独立したデータ値に対して実行され、その際に複数の結果データ値はある記憶装置内に上位部分と、別の記憶装置内に下位部分とを伴うSIMD形式内に格納される。従って、必要な場合には、前記SIMDタイプ結果はさらなる処理なしですぐに使用可能であり、前記結果の全ての精度が２つの前記記憶装置の組合せ内で維持された後も十分な精度は維持されるとともに、その状態で進行し、そこで処理される。
【０００６】
前記複数の独立した入力データ値から前記結果データ値を生成するために、前記処理ロジックによって実行されるデータ処理演算のタイプは、多種多様の様々な形式があることは明らかである。前記処理ロジックに対する入力は、そこに格納された前記独立したデータ値の二乗であるか、または、ある計算技術に従った一定精度のためのそれら値の平方根などである結果を有する１つの記憶装置のコンテンツであることも可能である。しかしながら、本発明の好適な実施形態では、前記処理ロジックは、第１の入力記憶装置から取得された１組の第１の独立したデータ値及び第２の入力記憶装置から取得された１組の第２の独立したデータ値を有する各１組の独立データ値をそれぞれ互いに乗算させるように機能する。
【０００７】
十分な精度が維持されているが、SIMDタイプ結果が直接に生成される場合、そのようなSIMDタイプ乗算演算は、一般的であるとともに、本技術を利用して得られる前記結果のデータ幅を増加する。
【０００８】
本技術は、前記本技術により維持される付加的な前記精度が累積タイプ演算で別に発生する複数の丸め誤差の累積効果を避けるのに役立つので、累積演算が前記乗算と関連づけられる状況に特に適している。
【０００９】
前記上位ビット部分及び前記低位ビット部分が様々な異なる関係を有することは明らかであるが、それらが当該結果データ値の重なり合わない連続した(non-overlapping contiguous)部分である場合、それは最も効果的であるとともに、好ましいものとなる。
【００１０】
前記データ処理命令は、整数乗算または符号付き分数値乗算のような乗算演算の様々な異なる形式を指定できる。しかしながら、本発明は、指定された前記乗算が符号付き分数乗算であるような状況に特に適しており、その状況において前記処理ロジックは、各入力データ値における符号付きビットの存在を確かめるために、各結果データ値を２倍にする処理を行う。２倍にすること(doubling)は、付加的な付帯部分(overhead)がほとんどなく、他の演算に効果的に含まれる。
【００１１】
前記独立したSIMDデータ値のデータ幅は、可変であり、かつ、好適な実施形態では、前記データ処理命令は当該データ幅を指定する。
【００１２】
乗算器は、必要とされる特別な状況に応じていくつかの形式を取ることができるが、特に好適な形は整数乗算器である。この整数乗算器は相対的に簡潔かつ高速なものであるが、適切な形態を伴った演算の多種多様な異なるタイプを生成することもできる。
【００１３】
前記データ処理命令によって指定される処理演算のタイプの一例としては、例えば、前記処理が飽和演算(saturated arithmetic)を実行するなど任意に選択できてもよい。
【００１４】
前記結果区分器は、異なる記憶装置間で前記結果データ値を分割するように機能するとともに、好適な実施形態では、複数のマルチプレクサがこれを実行するために用いられる。本技術は、DSPのような多くの異なるタイプのデータ処理システムに適用され得るが、特に、プロセッサコアで用いられるのに適している。
【００１５】
入力記憶装置と、上位結果記憶装置と、下位結果記憶装置と、前記システム内の記憶装置とは、多種多様の異なる形式を有していることは明らかであるが、好適な実施形態では、レジスタバンクレジスタ、専用レジスタ、バッファメモリ、先入れ先出しバッファまたはメモリの一部(例えば、キャッシュ、メイン、大容量など)のうちの１つまたはそれ以上であってもよい。これらの異なるタイプの記憶装置は、異なる記憶装置が異なる形式を有するような混合した状況で用いられる。前記記憶装置としてレジスタというよりはむしろメモリまたはバッファを用いる場合、処理されるべきデータ値のシーケンスのストリーミングは、都合良く提供される。
【００１６】
本技術に容易に適合した方法で計算される一連の結果が増加する方法に従って、好適な実施形態はまた、飽和演算のコンテキスト内で用いられるような１つまたはそれ以上の上位ガードビットを生成する。これらのガードビットは、それら自体の記憶装置に提供され、そして前記結果区分化記憶装置は前記ガードビットをそれら自体の記憶装置に格納する。
【００１７】
別の形態から見ると、本発明は、データ処理命令に応答してデータ処理演算を実行する方法を提供する。前記方法は、前記データ処理命令に応答して、１つまたはそれ以上の入力記憶装置内に格納された複数の独立したデータ値からそれぞれ複数の結果データ値を生成する段階と、前記データ処理命令に応答して、上位結果記憶装置内の各結果データ値の上位ビット部分及び下位結果記憶装置内の各結果データ値の下位ビット部分を格納することによって、前記結果データ値を区分する段階とを備える。
【発明を実施するための最良の形態】
【００１８】
図１は、英国のケンブリッジのARM社によって製造されているプロセッサコア2を図示している。前記プロセッサコア2は、前記データ処理データ経路の一部を形成する、レジスタバンク4と、乗算器6と、シフター8と、加算器10とを備える。データ処理命令は、命令パイプライン12で受信され、前記プロセッサ2内の他の回路素子の動作を制御する制御信号を生成するために、それらは命令復号器14によって命令パイプライン12から復号される。一般的に前記プロセッサ2には、多くの別の回路素子が含まれていることは明らかであるが、簡素化のために、これらは図示しないことにする。図１の例では、入力データ値は前記レジスタバンク4内のレジスタから読み出されるとともに、レジスタバンク4のレジスタ内に書き戻されるデータ値となる。他の実施形態では、前記入力値及び前記結果値は、専用レジスタ、バッファメモリ、先入り先出しバッファ及び一般的な汎用メモリのような異なるタイプの記憶装置から読み出されるとともに、それら記憶装置に書き込まれる。これらは、代替案として用いられてもよいし、様々な混合した組合せで用いられてもよい。これらの異なる代替案は、図１には図示しないものとする。
【００１９】
図２は、様々な異なるSIMDデータフォーマットを図示している。図１に示された前記データ経路のデータ幅は、そのようなデータ幅をサポートするために改良されたARMプロセッサのバージョンでは64ビットとなっている。このデータ経路は、非SIMDモードにおいて全長64ビットワード16を処理することができる。この例では、様々なSIMDモードは、２つの32ビットデータ値、４つの16ビットデータ値または8つの8ビットデータ値のいずれかを処理する。前記SIMDモードにおいて、前記データ値は、互いに独立しており、かつ、図１の前記プロセッサ2内の前記データ経路は、前記SIMDデータ値のサイズに従って、例えば、適切なポイントでキャリーチェーン(carry chain)を中断(break)するなど、これらのデータ値を別々に処理するように構成される。SIMDタイプ演算を実行するためのデータ経路の適合は、それ自体は公知であり、ここではさらに詳細な説明はしないものとする。
【００２０】
図３は、本技術による異なるSIMDデータ幅モードにおける入力データ値と結果データ値との間の関係を示している。例(i)では、前記入力データ値は、第１の64ビットレジスタに格納された２つの32ビット入力値A0,A1と、第２のレジスタに格納された２つの32ビット入力値B0,B1とを具備する。この例では、前記処理命令によって指定された前記データ処理演算は、SIMD乗算であり、従って、前記32ビット値A0は前記32ビット値B0によって乗算され、かつ、前記32ビット値A1は前記3
2ビット値B1によって乗算される。これらの両乗算は、それぞれA0B0及びA1B1である64ビット結果を生成する。これら２つの結果の最上位32ビットは、上位結果レジスタ17に書き込まれる。これら２つの結果の最下位32ビットは、下位結果レジスタ18に書き込まれる。異なる前記レジスタ17,18に書き込まれる２つの前記部分は、重なり合わずに連続している。
【００２１】
例(ii)及び(iii)は類似しており、SIMD乗算命令によって乗算されることを条件とし、かつ、全結果の上位半分または全結果の下位半分のいずれかの異なるレジスタ内に各結果データ値を生成する、16ビット入力値及び8ビット入力値にそれぞれ関する。
【００２２】
同一データ幅の別のSIMDタイプ演算における乗算によって生成された結果を用いて別の処理を継続することが望まれる場合、そのとき前記上位結果レジスタ17は、直接読み出され、かつ、そのような別の演算に対する入力として用いられる。非シフトまたは再配列は、コード密度、速度、消費電力などの改良が必要とされる。特に好適な状況は、前記上位結果レジスタ17及び前記下位結果レジスタ18が、累積演算先として用いられることにより、継続的な乗算の結果がこれらレジスタに累積され、かつ、さらなる正確な結果を生成するとともに、丸め誤差を避けるために、前記下位結果レジスタ18内に保存された前記下位結果値が継続的に更新されることである。従って、本技術は、単一命令を用いることで正確なデータ幅値に直接アクセスできるようにするが、前記結果の全データ幅の維持のための精度を保持することができる。
【００２３】
図４は、図１のデータ経路の一部をさらに詳細に概略的に図示している。SIMD整数乗算器20には、前記レジスタバンク4の各レジスタから取得された２つの64ビット入力値が提供される。これらの入力値は、単一64ビット×64ビット非SIMD命令またはすでに論じた３つのSIMDタイプ演算のうちの１つを表している。前記SIMD乗算器20は、独立した入力値及び結果として生じる出力値を正確に分けるために、キャリーチェーン内での適切な中断(break)などを有する。前記SIMD乗算器20からの出力は、キャリーセーブ(carry-save)フォーマット内にある。前記システムが符号付き分数モードにおいて動作する場合、マルチプレクサ22,24に供給された信号を示す分数モードは、最上位位置での外部正負符号ビットを埋め合わせる方法で前記値を２倍にするのに等しい１ビット位置だけ前記キャリーセーブ出力をシフトするように機能する。加算器26は、前記セーブ及びキャリーレジスタ28,30から再循環され部分的に累積された値か、または前記マルチプレクサ32,34によって選択されたときの前記レジスタバンク4のレジスタD,Cから128ビット値のいずれかを使って前記SIMD乗算器20からの前記キャリーセーブ出力を加算するように機能する。前記マルチプレクサ32,34は、累積制御信号によって制御され、その様々な値は図４の下側にある表に示される。前記システムは、例えばベクトルタイプ演算の間、前記累積値に対するソースとして前記レジスタバンクをバイパスすることにより、ソースレジスタファイルから累積するために、または累積なしで乗算するために、または前もって部分的に計算された結果を累積するために設けられる。
【００２４】
所定の処理演算に対する乗算及び加算演算が完了した場合、そのとき、前記レジスタ28,30からの最終の128ビットセーブ及びキャリー値は、加算器36に渡される。前記結果を表す通常の128ビットを形成するために、それらは互いに加算器36で加算される。前記乗算及び加算はパイプラインされた演算であってもよい。前記加算器36の出力がレジスタA,Bからの前記64ビット入力値と比較して前記ビット幅の２倍を有することは明らかである。従って、前記SIMD結果値は、独立したSIMD入力値の幅の２倍を有する。前記加算器36の出力は、本実施形態の例では、図５に示された様々なマルチプレクサの形式を有する結果区分器に供給される。
【００２５】
図５では、前記上位結果レジスタ38は、それらの上位部分である各結果値の選択された部分を受信する。前記下位結果レジスタ40は、前記結果値の対応する下位部分を受信する。制御信号B,H,W及びLは、使用中の前記SIMDデータ幅(バイト、ハーフワード、ワードまたはロング(long))を表している。これらの値の１つは、常にどの時点においても”1”がアサートされ、それとともに他が”0”となる。当該マルチプレクサの様々な入力間から選択するために、これらの幅を指定する信号は、隣接した各マルチプレクサに与えられる論理式に従って図５に示されるようなマルチプレクサを制御する。それらの制御信号によって制御される図５の前記マルチプレクサの全動作は、図３の異なる例で示されたように、前記上位結果レジスタ38及び前記下位結果レジスタ40のコンテンツを形成するために、前記加算器36によって前記128ビット出力の中から選択/再区分をすることである。図５によれば、例えば、上位結果レジスタ38について、Wが1のとき、CRS[127:120], CRS[119:112], CRS[111:104], CRS[103:96], CRS[63:56], CRS[55:48], CRS[47:40], CRS[39:32]が選択され、すなわち、CRS[127:96], CRS[63:32]が選択される。下位結果レジスタ40について、Wが1のとき、CRS[95:88], CRS[87:80], CRS[79:72], CRS[71:64], CRS[31:24], CRS[23:16], CRS[15:8], CRS[7:0]が選択され、すなわち、CRS[95:64], CRS[31:0]が選択される。
【００２６】
示されてきた方法で図４及び図５の回路を制御するために、図１の前記復号器14に供給される前記プログラム命令は、非SIMD全データ幅または様々なSIMDデータ幅のうちの１つのどちらか、使用されている前記データ幅を指定するパラメータを含む構文を有する。前記プログラム命令はまた、累積が実行されているかどうか、かつ、外部レジスタ値または“内部”部分結果が用いられているかどうかを指定する。
【００２７】
図５の２つの結果レジスタ38,40に加えて、ガードレジスタがまた提供されてもよい。このガードレジスタ内には、累積された結果の拡張バージョンから計算されたガードビットが供給される。一例として、16ビットSIMDデータ値が乗算累積演算で用いられるものであった場合、前記累積器は32ビットよりも大きく、例えば、２つまたは４つのガードビットが供給されるかどうかによって決まる、34または36ビットよりも大きく、それによって前記累積値からのオーバーフローは、前記ガードビット内で調節される。そのような実施形態では、前記ガードビットは、別々のガードビットレジスタに区分して入出力され、この形式で前記ガードビットレジスタは、前記結果の最上位端でのガードビットに、前記結果値の最下位端でのガードビットを供給する前記下位結果レジスタと、通常、必要とされるデータ値を保存した前記SIMD幅を供給する前記上位結果レジスタとを提供することが考えられる。
【００２８】
図６は、スタックレジスタ結果を提供する、複数のデータフォーマットを伴う複数の累積演算を概略的に示したものである。
【００２９】
４つの16ビット量(A0-A3及びB0-B3)を保持する場合には、レジスタA及びBは64ビットSIMDレジスタとなる。これらのレジスタを互いに乗算した結果は４つの結果のベクトルであり、それぞれが32ビット幅までとなる。
【００３０】
それぞれが２つの32ビット量を保持する別の２つのレジスタ(c及びD)に保持された４つの32ビット値を持った４つの32ビット乗算結果を累積することが可能である。
【００３１】
前記加算の結果は、そのとき、スタックフォーマット内のレジスタRL及びRHに格納される。
【図面の簡単な説明】
【００３２】
【図１】本技術で用いられるプロセッサコアのタイプを概略的に示した図である。
【図２】様々なSIMDデータフォーマットを概略的に示した図である。
【図３】様々なデータ幅に対する本技術による入力データ値と出力データ値との間の関係を概略的に示した図である。
【図４】図１のプロセッサ内のデータ処理経路の一部を概略的に示した図である。
【図５Ａ】本技術による結果データ値を区分するための多重化処理を示した図である。
【図５Ｂ】本技術による結果データ値を区分するための多重化処理を示した図である。
【図６】本技術による乗算累積演算の他の形式を概略的に示した図である。
【符号の説明】
【００３３】
２      プロセッサコア
４      レジスタバンク
６      乗算器
８      シフター
１０、３６    加算器
１２    命令パイプライン
１４    命令復号器
１７、３８    上位結果レジスタ
１８、４０    下位結果レジスタ
２０    SIMD乗算器
２２、２４、３２、３４      マルチプレクサ
【図１】
0004402654.tif 000002
【図２】
0004402654.tif 000003
【図３】
0004402654.tif 000004
【図４】
0004402654.tif 000005
【図５Ａ】
0004402654.tif 000006
【図５Ｂ】
0004402654.tif 000007
【図６】
0004402654.tif 000008