JP2006527868A - Simdデータ処理システムにおける結果区分化 - Google Patents

Simdデータ処理システムにおける結果区分化 Download PDF

Info

Publication number
JP2006527868A
JP2006527868A JP2005500871A JP2005500871A JP2006527868A JP 2006527868 A JP2006527868 A JP 2006527868A JP 2005500871 A JP2005500871 A JP 2005500871A JP 2005500871 A JP2005500871 A JP 2005500871A JP 2006527868 A JP2006527868 A JP 2006527868A
Authority
JP
Japan
Prior art keywords
result
data
storage device
values
value
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
JP2005500871A
Other languages
English (en)
Other versions
JP4402654B2 (ja
JP2006527868A5 (ja
Inventor
ダニエル・カーショー
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2006527868A publication Critical patent/JP2006527868A/ja
Publication of JP2006527868A5 publication Critical patent/JP2006527868A5/ja
Application granted granted Critical
Publication of JP4402654B2 publication Critical patent/JP4402654B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

単一命令複数データ(SIMD)を構築するプロセッサ(2)において、単一データ処理命令は、対応する入力値よりさらにデータ幅が大きい複数の独立した結果値を生成するために、複数の独立した入力値に対してSIMDタイプ処理を実行するような処理ロジック(4,6,8,10)を制御するように機能する。適切に制御された乗算器の形式において再区分器は、これらの結果データ値を、独立したレジスタ(38,40)に格納される上位ビット部分及び下位ビット部分に区分するように機能する。結果値を保持された必要とされるSIMD幅は、別の処理が必要とせずに、所望の上位結果レジスタ(38)又は下位結果レジスタ(40)から読み出される。さらに、全結果の保持は、そのような重複拡張累積演算など、正確な改良を促進する。

Description

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

Claims (32)

  1. データ処理命令に応答してデータ処理演算を実行するための装置であって、
    前記装置は、
    1つまたはそれ以上の入力記憶装置内に格納された複数の独立したデータ値からそれぞれ複数の結果データ値を生成するために、前記データ処理命令に応答する処理ロジックと、
    上位結果記憶装置内の各結果データ値の上位ビット部分と、下位結果記憶装置内の各結果データ値の下位ビット部分とを格納するために、前記処理命令に応答する結果区分器と
    を具備することを特徴とする装置。
  2. 前記処理ロジックは、各組の独立したデータ値、すなわち第1の入力記憶装置から取得される1組の第1の独立データ値及び第2の入力記憶装置から取得される1組の第2の独立データ値を互いに乗算するように機能することを特徴とする請求項1に記載の装置。
  3. 前記処理ロジックは、前記複数の結果データ値を生成するために、前記各組の独立データ値から生成された値を伴った、前記上位結果記憶装置及び前記下位結果記憶装置内にすでに格納された値を累積するように機能することを特徴とする請求項2に記載の装置。
  4. 各結果データ値の前記上位ビット部分及び前記下位ビット部分は、前記結果データ値の重なり合わない連続した部分であることを特徴とする請求項1から請求項3のうちいずれか1に記載の装置。
  5. 前記データ処理命令は、前記独立したデータ値が符号付き分数値であることを示し、前記処理ロジックは、第2の独立データ値と第1の独立データ値を乗算することにより得られた各値を2倍にするように機能することを特徴とする請求項2から請求項4のうちいずれか1に記載の装置。
  6. 各入力記憶装置は、M個の独立したNビットデータ値を格納することを特徴とする請求項1から請求項5のうちいずれか1に記載の装置。
  7. 前記データ処理命令は、前記独立したデータ値のデータ幅を指定することを特徴とする請求項6に記載の装置。
  8. 前記処理ロジックは、各組の前記独立したデータ値を互いに乗算するように機能する整数乗算器であることを特徴とする請求項2から請求項7のうちいずれか1に記載の装置。
  9. 前記処理ロジックは、前記独立したデータ値で飽和データ処理演算を実行するように機能することを特徴とする請求項1から請求項8のうちいずれか1に記載の装置。
  10. 前記結果区分器は、前記データ処理命令に応じて制御される複数の乗算器を含むことを特徴とする請求項1から請求項9のうちいずれか1に記載の装置。
  11. 前記装置は、プロセッサコアであることを特徴とする請求項1から請求項10のうちいずれか1に記載の装置。
  12. 1つまたはそれ以上の前記入力記憶装置は、
    レジスタバンクレジスタと、
    専用レジスタと、
    バッファメモリと、
    先入れ先出しバッファと、
    メモリと
    のうちの1つまたはそれ以上であることを特徴とする請求項1から請求項11のうちいずれか1に記載の装置。
  13. 前記上位結果記憶装置は、
    レジスタバンクレジスタと、
    専用レジスタと、
    バッファメモリと、
    先入れ先出しバッファと、
    メモリと
    のうちの1つであることを特徴とする請求項1から請求項12のうちいずれか1に記載の装置。
  14. 前記下位結果記憶装置は、
    レジスタバンクレジスタと、
    専用レジスタと、
    バッファメモリと、
    先入れ先出しバッファと、
    メモリと
    のうちの1つであることを特徴とする請求項1から請求項13のうちいずれか1に記載の装置。
  15. 前記処理ロジックは、各結果データ値に対して1つまたはそれ以上の上位ガードビットを生成するように機能し、かつ、前記結果区分器は、ガードビット記憶装置内の前記ガードビットを格納するように機能することを特徴とする請求項1から請求項14のうちいずれか1に記載の装置。
  16. 前記ガードビット記憶装置は、
    レジスタバンクレジスタと、
    専用レジスタと、
    バッファメモリと、
    先入れ先出しバッファと、
    メモリと
    のうちの1つであることを特徴とする請求項15に記載の装置。
  17. データ処理命令に応答してデータ処理演算を実行する方法であって、
    前記方法は、
    前記データ処理命令に応答して、1つまたはそれ以上の入力記憶装置内に格納された複数の独立したデータ値からそれぞれ複数の結果データ値を生成する段階と、
    前記データ処理命令に応答して、上位結果記憶装置内の各結果データ値の上位ビット部分と、下位結果記憶装置内の各結果データ値の下位ビット部分とを格納することによって、前記結果データ値を区分する段階と
    を具備することを特徴とする方法。
  18. 前記各組の独立したデータ値、すなわち、第1の入力記憶装置から取得される1組の第1の独立したデータ値及び第2の入力記憶装置から取得される1組の第2の独立したデータ値は、互いに乗算されることを特徴とする請求項17に記載の方法。
  19. 前記上位結果記憶装置及び前記下位結果記憶装置内にすでに格納された値は、前記複数の結果データ値を生成するために、前記各組の独立したデータ値から生成された値に累積されることを特徴とする請求項18に記載の方法。
  20. 各結果データ値の前記上位ビット部分及び前記下位ビット部分は、前記結果データ値の重なり合わない連続した部分であることを特徴とする請求項17から請求項19のうちいずれか1に記載の方法。
  21. 前記データ処理命令は、前記独立したデータ値が符号付き分数値であり、かつ、第1の独立したデータ値と第2の独立したデータ値とを乗算することにより得られた各値は2倍であることを示していることを特徴とする請求項18から請求項20のうちいずれか1に記載の方法。
  22. 各入力記憶装置は、M個の独立したNビットデータ値を格納することを特徴とする請求項17から請求項21のうちいずれか1に記載の方法。
  23. 前記データ処理命令は、前記独立したデータ値のデータ幅を指定することを特徴とする請求項22に記載の方法。
  24. 整数乗算器は、前記各組の独立したデータ値を互いに乗算するように機能することを特徴とする請求項18から請求項23のうちいずれか1に記載の方法。
  25. 飽和データ処理演算は、前記独立したデータ値で実行されることを特徴とする請求項17から請求項24のうちいずれか1に記載の方法。
  26. 区分する段階は、前記データ処理命令に応じて制御される複数の乗算器によって少なくとも部分的に実行されることを特徴とする請求項17から請求項25のうちいずれか1に記載の方法。
  27. 前記方法は、プロセッサコア内で実行されることを特徴とする請求項17から請求項26のうちいずれか1に記載の方法。
  28. 1つまたはそれ以上の前記入力記憶装置は、
    レジスタバンクレジスタと、
    専用レジスタと、
    バッファメモリと、
    先入れ先出しバッファと、
    メモリと
    のうちの1つまたはそれ以上であることを特徴とする請求項17から請求項27のうちいずれか1に記載の方法。
  29. 前記上位結果記憶装置は、
    レジスタバンクレジスタと、
    専用レジスタと、
    バッファメモリと、
    先入れ先出しバッファと、
    メモリと
    のうちの1つであることを特徴とする請求項17から請求項28のうちいずれか1に記載の方法。
  30. 前記下位結果記憶装置は、
    レジスタバンクレジスタと、
    専用レジスタと、
    バッファメモリと、
    先入れ先出しバッファと、
    メモリと
    のうちの1つであることを特徴とする請求項17から請求項29のうちいずれか1に記載の方法。
  31. 前記処理ロジックは、各結果データ値に対して1つまたはそれ以上の上位ガードビットを生成するように機能し、かつ、前記結果区分器は、ガードビット記憶装置内の前記ガードビットを格納するように機能することを特徴とする請求項17から請求項30のうちいずれか1に記載の方法。
  32. 前記ガードビット記憶装置は、
    レジスタバンクレジスタと、
    専用レジスタと、
    バッファメモリと、
    先入れ先出しバッファと、
    メモリと
    のうちの1つであることを特徴とする請求項31に記載の方法。
JP2005500871A 2003-06-16 2003-12-18 Simdデータ処理システムにおける結果区分化 Expired - Fee Related JP4402654B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/461,880 US7668897B2 (en) 2003-06-16 2003-06-16 Result partitioning within SIMD data processing systems
PCT/GB2003/005548 WO2004114127A1 (en) 2003-06-16 2003-12-18 Result partitioning within simd data processing systems

Publications (3)

Publication Number Publication Date
JP2006527868A true JP2006527868A (ja) 2006-12-07
JP2006527868A5 JP2006527868A5 (ja) 2007-02-08
JP4402654B2 JP4402654B2 (ja) 2010-01-20

Family

ID=33511357

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005500871A Expired - Fee Related JP4402654B2 (ja) 2003-06-16 2003-12-18 Simdデータ処理システムにおける結果区分化

Country Status (11)

Country Link
US (1) US7668897B2 (ja)
EP (1) EP1634163B1 (ja)
JP (1) JP4402654B2 (ja)
KR (1) KR101042647B1 (ja)
CN (1) CN100378651C (ja)
AU (1) AU2003290285A1 (ja)
IL (1) IL169374A (ja)
MY (1) MY135903A (ja)
RU (1) RU2005139390A (ja)
TW (1) TWI266204B (ja)
WO (1) WO2004114127A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3779540B2 (ja) * 2000-11-08 2006-05-31 株式会社ルネサステクノロジ 複数レジスタ指定が可能なsimd演算方式
US8719837B2 (en) 2004-05-19 2014-05-06 Synopsys, Inc. Microprocessor architecture having extendible logic
US20060277243A1 (en) * 2005-06-02 2006-12-07 International Business Machines Corporation Alternate representation of integers for efficient implementation of addition of a sequence of multiprecision integers
US8218635B2 (en) 2005-09-28 2012-07-10 Synopsys, Inc. Systolic-array based systems and methods for performing block matching in motion compensation
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
FR3021428B1 (fr) 2014-05-23 2017-10-13 Kalray Multiplication de matrices de bits utilisant des registres explicites
US9710228B2 (en) 2014-12-29 2017-07-18 Imagination Technologies Limited Unified multiply unit
US9875213B2 (en) * 2015-06-26 2018-01-23 Intel Corporation Methods, apparatus, instructions and logic to provide vector packed histogram functionality
US10489155B2 (en) 2015-07-21 2019-11-26 Qualcomm Incorporated Mixed-width SIMD operations using even/odd register pairs for wide data elements
US11188329B1 (en) * 2020-06-24 2021-11-30 Micron Technology, Inc. Dynamic precision bit string accumulation

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0654733B1 (en) 1993-11-23 2000-05-24 Hewlett-Packard Company Parallel data processing in a single processor
EP0661624A1 (en) 1994-01-04 1995-07-05 Sun Microsystems, Inc. Pseudo-superscalar technique for video processing
GB2291515B (en) 1994-07-14 1998-11-18 Advanced Risc Mach Ltd Data processing using multiply-accumulate instructions
EP0795155B1 (en) 1994-12-01 2003-03-19 Intel Corporation A microprocessor having a multiply operation
GB2317467B (en) 1996-09-23 2000-11-01 Advanced Risc Mach Ltd Input operand control in data processing systems
TW364976B (en) 1996-09-23 1999-07-21 Arm Corp Input operand control in data processing systems
KR19990061571A (ko) * 1997-12-31 1999-07-26 윤종용 디지털 신호 처리기의 연산장치
US6230257B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6253299B1 (en) * 1999-01-04 2001-06-26 International Business Machines Corporation Virtual cache registers with selectable width for accommodating different precision data formats
KR100325430B1 (ko) * 1999-10-11 2002-02-25 윤종용 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법
US7039906B1 (en) * 2000-09-29 2006-05-02 International Business Machines Corporation Compiler for enabling multiple signed independent data elements per register

Also Published As

Publication number Publication date
EP1634163A1 (en) 2006-03-15
WO2004114127A1 (en) 2004-12-29
EP1634163B1 (en) 2017-05-24
CN100378651C (zh) 2008-04-02
MY135903A (en) 2008-07-31
RU2005139390A (ru) 2006-05-27
CN1791857A (zh) 2006-06-21
JP4402654B2 (ja) 2010-01-20
AU2003290285A1 (en) 2005-01-04
IL169374A0 (en) 2007-07-04
TW200500879A (en) 2005-01-01
US20040255100A1 (en) 2004-12-16
IL169374A (en) 2011-01-31
TWI266204B (en) 2006-11-11
KR101042647B1 (ko) 2011-06-20
KR20060040597A (ko) 2006-05-10
US7668897B2 (en) 2010-02-23

Similar Documents

Publication Publication Date Title
KR102447636B1 (ko) 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법
US8074058B2 (en) Providing extended precision in SIMD vector arithmetic operations
US7797363B2 (en) Processor having parallel vector multiply and reduce operations with sequential semantics
US6256655B1 (en) Method and system for performing floating point operations in unnormalized format using a floating point accumulator
IL169374A (en) Result partitioning within simd data processing systems
US5457805A (en) Microcomputer enabling high speed execution of product-sum operation
US20030005261A1 (en) Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US7725522B2 (en) High-speed integer multiplier unit handling signed and unsigned operands and occupying a small area
JP2001027945A (ja) Simd演算を実行するために標準macユニットを利用する浮動小数点ユニット
US6026486A (en) General purpose processor having a variable bitwidth
US6889242B1 (en) Rounding operations in computer processor
US20240004663A1 (en) Processing device with vector transformation execution
US20020065860A1 (en) Data processing apparatus and method for saturating data values
CN110688153B (zh) 一种指令分支执行控制方法及相关设备、指令结构
US20040128335A1 (en) Fast fourier transform (FFT) butterfly calculations in two cycles
US6275925B1 (en) Program execution method and program execution device
US9213524B2 (en) Method and device for generating floating-point values
JP3693556B2 (ja) 浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置
US7308560B2 (en) Processing unit
US11704092B2 (en) High-precision anchored-implicit processing
JP3441847B2 (ja) データメモリを有するプロセッサ
EP1197874A1 (en) Signal processor and product-sum operating device for use therein with rounding function
JP2924281B2 (ja) アドレス・ポインタ
US20060064451A1 (en) Arithmetic circuit
US20060101105A1 (en) Double shift mechanism and methods thereof

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061012

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061019

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20061215

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070515

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070803

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070910

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090904

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: 20091029

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20121106

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121106

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131106

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees