JP2004303203A - レジスタから並列テーブルルックアップを行う可変再配列(mux)命令 - Google Patents

レジスタから並列テーブルルックアップを行う可変再配列(mux)命令 Download PDF

Info

Publication number
JP2004303203A
JP2004303203A JP2004043849A JP2004043849A JP2004303203A JP 2004303203 A JP2004303203 A JP 2004303203A JP 2004043849 A JP2004043849 A JP 2004043849A JP 2004043849 A JP2004043849 A JP 2004043849A JP 2004303203 A JP2004303203 A JP 2004303203A
Authority
JP
Japan
Prior art keywords
register
instruction
registers
variable
mux
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
JP2004043849A
Other languages
English (en)
Other versions
JP3735105B2 (ja
Inventor
Ruby B Lee
ルビー・ビー・リー
Dale Morris
デール・モリス
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2004303203A publication Critical patent/JP2004303203A/ja
Application granted granted Critical
Publication of JP3735105B2 publication Critical patent/JP3735105B2/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
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)

Abstract

【課題】 テーブルルックアップが繰り返し必要とされる時の性能をさらに改善する。
【解決手段】 本発明は、コンピュータプログラムおよびデータプロセッサ命令セットに可変再配列Mux命令を提供する。具体的には、本発明は、一組の1つまたは複数のテーブルレジスタの内容を、一組の1つまたは複数のインデックスレジスタの内容の関数として再配列することを提供する。その結果として再配列されたデータは、一組の1つまたは複数の結果レジスタに置くことができる。このMux命令によるインデックスレジスタの指定が明示的に行われるときには、インデックスレジスタの識別情報が引数として指定され、暗黙的に行われるときには、例えば、専用インデックスレジスタの識別情報が命令内に本来的に備えられる。同様に、結果レジスタおよびテーブルレジスタも、Mux命令によって暗黙的または明示的に指定されうる。
【選択図】図1

Description

本発明は、コンピュータに関し、詳細には、コンピュータの命令セットに関する。
本発明の主目的は、多数のテーブルルックアップの実行時のコンピュータ性能を改善することである。
デジタルビデオ、暗号化、および符号変換は、y=f(x)の形式の関数が、多数の入力値に繰り返し適用される3つの用途である。
一般に、適用される関数は、数式として表すことができる。
しかし、関数によっては、アドレスに対応する独立変数(例えばx)およびそのアドレスの内容に対応する従属変数(例えばy)を有するルックアップテーブルの形式で実施するほうが便利なことが多いものもある。
ルックアップテーブルは、従来、メインメモリに保持される。
テーブルは、通常、メモリでは、複数の要素からなるアレイとして編成される。
アレイでは、各要素は、1つのテーブルエントリの値を保持する。
したがって、命令は、単に、所望のメモリ位置を指定するだけで、そのメモリ位置の内容が読み出されて、所望の関数の結果が提供される。
このようなルックアップ(lookups:参照)は、非常に高速で実施できるが、それでもなお、例えばビデオ処理、暗号化、および符号変換といった、このようなルックアップが非常に多く必要とされる用途では、性能を制限することがある。
テーブルルックアップが繰り返し必要とされる時の性能をさらに改善する方法が必要とされている。
本発明は、コンピュータプログラムおよびデータプロセッサ命令セットに可変再配列「Mux」命令を提供する。
具体的には、本発明は、一組の1つまたは複数の「テーブル」レジスタの内容を、一組の1つまたは複数の「インデックス」レジスタの内容の関数として再配列することを提供する。
その結果として再配列されたデータは、一組の1つまたは複数の「結果」レジスタに置くことができる。
本明細書で、「テーブル」、「インデックス」、および「結果」の資格を有するレジスタは、すべて汎用レジスタであり、そのラベルは、Mux命令によって提供される状況(context)に依存することに留意されたい。
この新規なMux命令は、所望の順序を表すデータを一組のインデックスレジスタに置くことによって再配列を任意に指定できる点で、「可変」である。
したがって、可変Mux命令は、一組のインデックスレジスタを指定する。
この指定は、「明示的に」行うことができ、この場合、インデックスレジスタの識別情報(identity)が、命令の引数として指定される。
すなわち、この識別情報は、命令フィールドに入力されるデータで記述される。
あるいは、インデックスレジスタの指定は、「暗黙的に」行うことができる。
例えば、専用インデックスレジスタの識別情報を命令内に本来的に備えておくことができる。
同様に、結果レジスタおよびテーブルレジスタも、可変Mux命令によって暗黙的または明示的に指定することができる。
可変Mux命令が、一組のテーブルレジスタを(暗黙的または明示的に)指定する場合、その可変Mux命令は、「直接」とみなされる。
「間接」可変Mux命令では、テーブルレジスタは、直接識別されず、Mux命令によって直接指定される1つまたは複数のインデックスレジスタによって間接的に識別される。
例えば、間接可変Mux命令は、テーブル選択インデックスレジスタおよびサブワード選択インデックスレジスタの2つのインデックスレジスタを指定することができる。
テーブル選択インデックスレジスタは、要求された各エントリのテーブルレジスタを選択し、サブワード選択インデックスレジスタは、要求された各エントリの、選択されたテーブルレジスタ内のサブワード位置を選択する。
あるいは、単一のインデックスレジスタを使用して、インデックスレジスタのサブワードの上位が、テーブルレジスタを選択することができる一方、そのサブワードの下位ビットが、選択されたテーブルレジスタの所望のサブワードを選択する。
テーブル全体を単一のテーブルレジスタで表すことができる場合、各テーブルエントリの位置は、そのレジスタ内のサブワードアドレスとして識別することができる。
「直接」可変Mux命令は、単一のテーブルレジスタに加えて、単一の結果レジスタおよびインデックスレジスタを指定することができる。
Mux命令が実行されると、テーブルレジスタの内容は、インデックスレジスタによって指定されたサブワードの順序で、結果レジスタに選択的に書き込まれる。
ルックアップテーブルがあまりにも大きく、単一のレジスタで表せない場合、そのルックアップテーブルは、2つ以上のテーブルレジスタ間で分割され得る。
この分割は、垂直方向に行うこともできるし、水平方向に行うこともでき、あるいは、その両方向に行うこともできる。
分割が垂直方向のみで行われている場合、エントリは、原型を保っており、エントリのいくつかは、あるレジスタで表される一方、他のエントリは、1つまたは複数の他のレジスタで表される。
分割が、水平方向のみで行われている場合、各エントリは、(通常、上位下位などの位置によって)2つ以上のレジスタ間で分割される。
それらレジスタのそれぞれは、すべてのエントリの一部を表す。
垂直方向の分割および水平方向の分割がともに使用される場合、どのレジスタも、すべてのエントリを表さず、どの1つのエントリ全体も表さない。
例えば、テーブルは、4つのレジスタ間で分割することができ、4つのレジスタのそれぞれは、テーブルエントリを二分し、さらに二分したそれぞれを二分したものを表す。
垂直方向のみでの分割の場合、各テーブルレジスタは、一部のテーブルエントリを保持するが、すべてのテーブルエントリを保持するとは限らない。
例えば、8つのテーブルエントリが2つのテーブルレジスタ間で分割された場合、一方のテーブルレジスタは、4つの最下位アドレスのエントリを保持できる一方、他方のテーブルレジスタは、4つの最上位アドレスのエントリを保持できる。
次に、各テーブルエントリは、特定のレジスタにより特定のサブワード位置に保持される。
垂直方向に分割されたテーブルのエントリの再配列において十分な柔軟性を可能にするために、本発明は、垂直方向に分割されたテーブルと共に間接可変mux命令を使用することを提供する。
水平方向のみで分割されたテーブルの場合、各テーブルエントリは、2つ以上のテーブルレジスタ間で分割されるが、すべてのエントリが、各テーブルレジスタで表される。
このような場合、同じインデックスレジスタを使用して、直接可変Mux命令を各テーブルレジスタに適用することができ、それによって、共通の再配列が、各エントリの各セグメントに適用されることになる。
通常、各テーブルレジスタに対して個々の結果レジスタが存在する。
各結果レジスタは、所望の各エントリのセグメントを保持する。
例えば「UnPack(展開)」命令といった命令が追加され、この命令を使用して、エントリのセグメントを連結することができ、その結果、各エントリは、レジスタ内で完全な形となる。
水平方向および垂直方向の双方で分割されたテーブルは、各セルがテーブルアドレスのサブセットのエントリのセグメントを表す2次元アレイを形成するものと概念化することができる。
このような場合、本発明は、列単位で間接可変Mux命令を適用することを提供し、それにより、それぞれのエントリのセグメントに対して、所望の再配列が行われる。
オプションとして、Unpack命令または他の連結命令を使用して、レジスタ内で完全なエントリを組み立てることができる。
「Mux」命令は、データの並べ替え(permutation)を可能にするので、時に、「permute(並べ替え)」命令と呼ばれることがある。
しかしながら、Mux命令は、普通は並べ替えとみなされない他の形の再配列も可能である。
例えば、テーブルレジスタのすべてのサブワードが結果レジスタに表される必要があるとは限らず、テーブルレジスタの1つまたは複数のサブワードを、結果レジスタに2回以上表すことができる。
本発明は、より幅の広いより多くの並列性を有するデータプロセッサに向かっているコンピュータアーキテクチャの流行(trend:傾向)を活用する。
この流行と調和させた場合、メモリユニットを追加するよりも付加的な計算機能ユニットを追加することが容易(より単純で、かつ、より経済的)である。
テーブルをメモリに置くと、スループットは、メモリポートの個数によって制限される。
ルックアップテーブルをレジスタに置くと、スループットは、並列計算ユニットの個数によって制限される。
計算ユニットの個数が、メモリポートの個数を上回るにつれて、レジスタに保持されたテーブルに可変Mux命令を使用するというこの新規なアプローチは、従来技術をますます上回って有利になる。
本明細書で説明する可変Mux命令は、従来技術で使用される固定Mux命令を可変に変形したものである。
固定Mux命令は、結果レジスタに表すサブワードの順序を、計算した値によって指定できないので、そのテーブルルックアップの有用性において、はるかに多くの制限を受ける。
本発明の可変Mux命令は、サブワードの任意の順序を可能にし、したがって、単一のMux命令を(大きなテーブルに必要とされる、結果の付加的な組み立てと共に)使用して、複数のテーブルエントリに並列にアクセスすることが可能である。
一方、固定Mux命令を使用するコンピュータアーキテクチャには、可変Mux命令が使用できるデータパスがすでに配備されている。
したがって、新規な命令を追加することに伴い、先行モデル(precursor)がない場合にある命令を***するハードウェアの変更はより少なくなる。
本発明は、1つの命令につき複数のテーブルルックアップが実行可能であるので、従来技術に対して劇的な性能向上を提供する。
本発明の他の特徴および利点は、図面を参照した以下の詳細な説明から明らかである。
図1に示すプログラム100の1命令セグメントは、64ビットの「インデックス」レジスタR11に共に保持されるxの16個の値に対して、関数y=f(x)の値を求める。
関数y=f(x)の値は、ルックアップテーブルIにアクセスすることにより求められる。
ルックアップテーブルIは、16個のそれぞれの4ビットアドレス(x)に16個の4ビットのエントリ(y)を有する。
テーブルIのエントリは、64ビットの「テーブル」レジスタR10にリトルエンディアンの順序で配列される。
すなわち、最下位のアドレスのエントリは、レジスタR10の最下位ニブル(4ビット)に配置される。
この関数の値は、可変多重化命令MuxV 4,R10,R11,R12を使用して求められる。
インデックスレジスタR11からテーブルレジスタR10への矢印で示すように、インデックスレジスタR11の各ニブル位置(4ビットのサブワード位置)は、テーブルのアドレスを保持し、したがって、そのアドレスのエントリを保持するテーブルレジスタR10のニブル位置を指し示す。
インデックスレジスタR11から64ビットの結果レジスタR12への矢印で示すように、レジスタR11の各ニブル位置は、結果レジスタR12の各ニブル位置に対応する。
したがって、命令MuxV 4,R10,R11,R12を次のように構文解析することができる。
すなわち、インデックスレジスタR11に保持される各「インデックス」ニブルについて、各インデックスニブルにより示されたテーブルエントリ(レジスタR10内)を結果レジスタR12の対応するニブル位置に書き込む、というように構文解析することができる。
図1では、テーブル全体を単一のレジスタで表すことができるので、1命令で並列テーブルルックアップを行うことができる。
テーブルが、単一のレジスタに収まらない場合に、本発明は、2つ以上のレジスタ間でテーブルを分割することを提供する。
図2では、テーブルIIが、水平方向に分割されて、並列ルックアップが提供される。
テーブルIIは、16個の8ビットエントリを含み、合計128ビットを含む。
2つの64ビットレジスタR20およびR21が、テーブルIIの内容を保持するのに必要とされる。
各エントリは、最上位ニブル(例えば、テーブルアドレス0[16進]のエントリとしてE[16進])および最下位ニブル(例えば、テーブルアドレス0のエントリとしてF)を含む。
テーブルIIエントリのすべての最下位ニブルは、テーブルレジスタR20に書き込まれる一方、テーブルIIエントリのすべての最上位ニブルは、テーブルレジスタR21に書き込まれる。
この分割は、テーブルIIの破線で示すように、テーブルの列が4ビット幅の2つの列グループに分割される点で水平方向である。
関数y=f(x)の値を求める場合のxの値は、インデックスレジスタR22に表される(その内容は、図1のインデックスレジスタR11と同一である)。
インデックスレジスタR22の各ニブルは、図2のテーブルレジスタR20およびR21への概ね上向きの矢印で示すように、テーブルレジスタR20の対応するニブルを指し示すことに加えて、テーブルレジスタR21の対応するニブルも指し示す。
インデックスレジスタR20の各ニブル位置は、図2のレジスタR23およびR24への垂直下向きの矢印で示すように、結果レジスタR23の対応するニブル位置を有し、また、結果レジスタR24の対応するニブル位置も有する。
図2に表すプログラム100のセグメントは、2つの可変Mux命令を使用する。
MuxV 4,R20,R22,R23は、インデックスレジスタR22の内容によって指示されるように、テーブルレジスタR20のエントリを結果レジスタR23に書き込む。
同様に、MuxV 4,R22,R22,R24は、インデックスレジスタR22の内容によって指示されるように、テーブルレジスタR21のエントリを結果レジスタR24に書き込む。
2つの命令は、異なるテーブルおよび異なる結果レジスタを参照する一方で、同じインデックスレジスタR22を共有することに留意されたい。
その結果、結果レジスタR23の最下位エントリニブルの順序は、結果レジスタR24の最上位エントリニブルの順序に対応する。
次に、UnPack命令は、エントリを「リアセンブル」するのに使用することができる。
UnPack L,4 R23,R24,R25は、レジスタR23の最下位ニブルを、レジスタR25の最下位ニブル位置に書き込み、レジスタR24の最下位ニブルをレジスタR25の第2の最下位ニブル位置に書き込む。
その結果、インデックスレジスタR22の最下位ニブルによって要求されたエントリの全8ビットが、レジスタR25の最下位バイト(8ビット)に書き込まれる。
同様に、次の7つの最下位のテーブルルックアップは、レジスタR25の他の7つのバイト位置に表される。
同様に、UnPack H,4 R23,R24,R26は、レジスタR23およびR24のそれぞれの4つの最上位ニブルをバイトに連結し、それらをレジスタR26にバイトのように置く。
レジスタR25およびR26は、集合的に、インデックスレジスタR22によって指定された順序のテーブルエントリのバイトからなる単一の128ビット値V27を表すものとみなすことができる。
図2の所望の結果を得るには、4つの命令が必要とされる。
特定用途向けの実施の形態では、単一の可変Mux命令MuxVh 4,8 R20,R21,R22,R25,R26を使用して、所望の結果を直接達成することができる。
しかしながら、このアプローチは、ハードウェアの複雑さが追加され、3回のレジスタ読み出しおよび2回のレジスタ書き込みを伴う。
また、インデックスの長さ(4ビット)は、エントリの長さ(8ビット)と異なるので、2つのビット長パラメータが必要とされることに留意されたい。
もちろん、エントリが分割されていない場合には、エントリはリアセンブルされる必要はなく、UnPack命令は必要とされない。
図3のテーブルIII(図2のテーブルIIと同じデータを表す)は、水平方向に分割される代わりに垂直方向に分割される。
したがって、一方のテーブルレジスタR30は、テーブルIIIの8つの最下位アドレスの8ビットのエントリを保持する一方、他方のレジスタR31は、テーブルIIIの8つの最上位アドレスのエントリを保持する。
関数f(x)を求める場合のxの値は、インデックスレジスタR32に表される。
xの各値は、インデックスレジスタR32の2つの「9」の一方に示すように、4ビットである。
インデックスの最上位ビット(この場合、「1」)は、所望のエントリがどちらのテーブルレジスタ(この場合、テーブルレジスタR31)に存在するかを決定する一方、インデックスの3つの最下位ビット(この場合、「001」)は、選択されたレジスタ内のサブワード位置(この場合、2番目の下位サブワード位置)を示すことに留意されたい。
図3に表すプログラム100のセグメントは、可変Mux命令MuxVv 8,4,R30,R31,R32,R33,R34を使用して、結果レジスタR33およびR34に所望の順序でエントリを書き込む。
この命令は、3つの読み出しポートおよび2つの書き込みポートを必要とし、したがって、特定用途向けの状況に最もよく適することに留意されたい。
各テーブルレジスタに個別にmux(多重化)演算を実行することが可能であり、その後、その結果のデータを再び結合することが可能であることに留意されたい。
しかしながら、プログラムシーケンスは、水平方向に分割されたテーブルのアプローチの場合よりも複雑になる。
一般に、インデックスのレジスタ選択ビットおよびインデックスのサブワード選択ビットは、異なる機能を実行するものであるので、個別のレジスタにそれらのビットを書き込みことが有用な場合がある。
ほとんどのプロセッサ設計では、命令が、ある汎用レジスタを、別の汎用レジスタの内容の関数として選択することは許可されていないので、特に、レジスタ選択ビットを特殊用途のレジスタに書き込むことが好都合な場合がある。
図4は、連続した64ビットテーブルレジスタRT0、RT1、RT2、およびRT3に表された64×4ビットエントリテーブルに含まれるレジスタを示している。
レジスタ選択レジスタRRSおよびサブワード選択レジスタRSSの2つのインデックスレジスタが存在する。
これらのレジスタは、集合的に、関数y=f(x)の値を求める場合のxの水平方向に分割された値を保持する。
その結果は、連続した結果レジスタRR0、RR1、RR2、およびRR3に書き込まれる。
間接的な可変Mux命令MuxVI 4,6 RT0,RSS,RR0が、所望の並列テーブルルックアップを実行する。
Mux命令MuxVI 4,6 RT0,RSS,RR0は、図4に示す7つのレジスタを指定するが、これらのレジスタのうち、第1のテーブルレジスタRT0、サブワード選択レジスタRSS、および結果レジスタの3つのみが、明示的に指定される。
この命令は、連続した4つのレジスタを必要とし、その第1のもの(RT0)を明示的に識別することにより、残りの3つの特定を行う。
したがって、残りの3つは、暗黙的に指定される。
この命令は、レジスタ選択データを特殊目的のレジスタRRSに記憶することを必要とする。
したがって、このレジスタは、暗黙的に指定される。
この命令が4ビットサブワードの16回の並列ルックアップを要求すると、すべての結果は、明示的に指定された結果レジスタRR0に記憶することができる。
MuxVI命令は、1つのテーブルレジスタ(RT0)を明示的に指定し、他のレジスタ(RT1、RT2、RT3)を暗黙的に指定する一方、結果レジスタのどのサブワードにどのテーブルレジスタを使用するかを指定しない。
その代わり、テーブルレジスタの結果レジスタのサブワードへのマッピングは、レジスタ選択レジスタRRSの内容によって間接的に指定される。
テーブルレジスタの結果レジスタのサブワードへのマッピングが、命令の内容によって直接決定されるのではなく、レジスタによって間接的に決定される点で、MuxVIは間接的である。
レジスタ選択レジスタRRSは、その内容が他のレジスタの選択を制御できるように設計された特殊目的のレジスタである。
レジスタ選択レジスタRRSは、y=f(x)の値を求める際に使用される各xにつき、4ビットを保持する。
4つのテーブルレジスタの中からテーブルレジスタの選択を行うのに、2ビットのみが必要とされ、他の2ビットは、デフォルト値0を保持する。
テーブルデータは、レジスタ0〜3、レジスタ32〜35、レジスタ64〜67、およびレジスタ96〜99の4つの可能なものの1つに強制的にされる(is forced)。
間接的な可変Mux命令は、1つの命令で所望の再配列を提供する。
また、レジスタ選択ビットおよびサブワード選択ビットは、異なるレジスタに書き込まれるので、レジスタには、より多くのインデックスおよびそれによるさらに多くの並列性を得るための余裕もある。
他方で、より一般的な2つのオペランドレジスタの代わりに6つのオペランドレジスタが存在する。
4つのレジスタ内に収まることができる範囲を越えてテーブルを拡張することは、かなりのハードウェアの複雑さを伴う可能性がある。
本発明のいくつかの実施の形態は、レジスタの一部またはすべてが2048ビット以上であるマイクロプロセッサを使用し、それによって、256×8ビットのテーブルを単一の命令でルックアップすることを可能にする。
このようなテーブルは、各ピクセルに8ビットのデータを含むことが多いビデオ、暗号化(例えば、DESのS−boxのルックアップ)、および符号変換(例えば、ASCIIの別のテキストフォーマットへの変換)に役立つ。
他の実施の形態では、複数のレジスタが集合的に2048ビットレジスタとして機能するように、複数のレジスタを一組に構成する設備が作成される。
それ以外のものとして、上記に開示した水平方向のテーブル分割技法および垂直方向のテーブル分割技法を活用して、このような大きなテーブルを処理するものがある。
コンピュータの2値特性を考慮すると、多数のビットで表現された2の累乗のデータを取り扱うことが便利であることが多い。
この制約を満たすように、適合しないデータには、先頭部分にゼロを追加することができる。
例えば、7ビットのエントリに対して、それらのエントリがレジスタのバイト境界と整合するように、先頭にゼロを追加することができる。
同様に、6ビットのインデックスには、それらのインデックスがレジスタのバイト境界に適合するように、先頭に2つのゼロを追加することができる。
あるいは、適合しないデータ同士を「詰め込んで」、レジスタに収めることができるデータ量を最大にすることができる。
例えば、3ビットのインデックスによる21回のルックアップは、64ビットレジスタによって処理できる一方、ちょうど16個の4ビットインデックスも、64ビットレジスタによって処理できる。
データを連続的に詰め込んで、2の累乗に最も近くなるまで書き入れる代わりに、未使用のレジスタのビットをインデックス間で均等に分配することができる。
プログラム100は、図5に示す例えばシステムAP1といったコンピュータシステム上で実施される。
コンピュータシステムAP1は、マイクロプロセッサ110およびメモリ112を含む。
メモリ112の内容には、プログラムデータ114、およびプログラムを構成するプログラム命令100が含まれる。
マイクロプロセッサ110は、実行ユニットEXU、命令デコーダDEC、レジスタRGS、アドレスジェネレータADG、およびルータRTEを含む。
レジスタバンクRGSには、本明細書で参照かつ例示されたすべてのレジスタが含まれる。
一般に、実行ユニットEXUは、プログラム100に従ってデータ114に演算を実行する。
このため、実行ユニットEXUは、(内部データバスDTBに付属する制御信号線を使用して)アドレスジェネレータADGに、必要な次の命令またはデータのアドレスをアドレスバスADRに沿って生成するように命令することができる。
メモリ112は、要求されたアドレスに保持される内容を、データ/命令バスDIBに沿って供給することにより応答する。
ルータRTEは、内部データバスDTBに付属する指示子信号線に沿って実行ユニットEXUから受信した指示子により決定されるように、命令を命令デコーダDECに命令バスINBを介して送り、内部データバスDTBに沿ってデータを送る。
復号された命令は、制御信号線CCDを介して実行ユニットEXUに供給される。
データは、通常、命令に従ってレジスタRGSの内外に転送される。
マイクロプロセッサ110には、命令デコーダDECが復号でき、かつ、実行ユニットEXUが実行できる複数の命令からなる命令セットINSが付随する。
プログラム100は、命令セットINSから選択された複数の命令からなる順序付けられた組である。
説明の目的のため、マイクロプロセッサ110、その命令セットINS、およびプログラム100が、本明細書で説明されたすべての命令の例を提供する。
本発明は、2の累乗でないサイズを含むあらゆるサイズのレジスタを提供する。
テーブルは、任意の個数のエントリを有することができ、それらのエントリは、任意の長さのビット数を有することができる。
上述したように、並列インデックスが、1つの並列インデックスレジスタ(または複数の並列インデックスレジスタ)を満たさない場合、未使用ビットは、さまざまな方法で分配することができ、おそらく、さまざまな用途に使用することができる。
本発明は、間接的な並列ルックアップの多くの実施を提供する。
添付の特許請求の範囲によって記載される本発明は、本発明のこれらの変形および変更ならびに本発明の他の変形および変更を提供する。
単一の可変mux命令を使用して並列テーブルルックアップを実行する本発明によるプログラムのセグメントの概略図である。 複数の可変Mux命令に加えて、結果レジスタ間で結果を連結するUnPack命令を使用して、水平方向に分割されたテーブルに並列テーブルルックアップを実行する図1のプログラムのセグメントの概略図である。 可変Mux命令を使用して、垂直方向に分割されたテーブルに並列テーブルルックアップを実行する図1のプログラムのセグメントの概略図である。 間接的な可変Mux命令を使用して、垂直方向に分割されたテーブルに並列テーブルルックアップを実行する図1のプログラムのセグメントの概略図である。 図1のプログラムを実行する本発明のマイクロプロセッサシステムの概略図である。
符号の説明
100・・・プログラム、
110・・・マイクロプロセッサ、
112・・・メモリ、
114・・・プログラムデータ、

Claims (9)

  1. データプロセッサ(110)であって、
    第1のレジスタ(R11)、第2のレジスタ(R10)、および第3のレジスタ(R12)と、
    前記第1のレジスタを引数として指定する第1の可変mux命令を実行する実行ユニット(EXU)であって、前記第1のレジスタの内容の関数である順序で、前記第2のレジスタの内容の少なくとも一部を前記第3のレジスタに書き込む、実行ユニット(EXU)と
    を備えるデータプロセッサ。
  2. 前記第1の可変mux命令は、前記第2のレジスタを引数として直接指定する
    請求項1に記載のデータプロセッサ。
  3. 前記第2のレジスタを指定し、前記第1の可変mux命令によって引数として指定される第4のレジスタ(RRS)をさらに備える
    請求項1に記載のデータプロセッサ。
  4. 第5のレジスタ(RSS)
    をさらに備え、
    前記第4のレジスタは、該第5のレジスタを指定し、それによって、前記実行ユニットが、前記第1の可変mux命令の実行中に、前記第1のレジスタおよび前記第4のレジスタの内容の関数である順序で、前記第2のレジスタおよび前記第5のレジスタの内容の少なくとも一部を前記第3のレジスタに書き込む
    請求項3に記載のデータプロセッサ。
  5. 第4のレジスタ、第5のレジスタ、および第6のレジスタ
    をさらに備え、
    前記実行ユニットは、前記第4のレジスタを引数として指定する第2の可変mux命令をさらに実行し、前記実行ユニットは、前記第2の可変mux命令の実行中に、前記第1のレジスタの内容の関数である順序で、前記第5のレジスタの内容の少なくとも一部を前記第6のレジスタに書き込み、前記実行は、少なくとも1つの他の命令に応じてサブワード単位で、前記第3のレジスタの内容および前記第6のレジスタの内容を連結する
    請求項1に記載のデータプロセッサ。
  6. 第1の組のレジスタ(R10)にテーブルエントリを書き込むことと、
    可変mux命令を使用することであって、それによって、該可変mux命令によって引数として指定される第3の組のレジスタ(R11)が指定する順序で、前記第1の組のレジスタの内容を第2の組のレジスタ(R12)に書き込む、可変mux命令を使用することと
    を含む並列テーブルルックアップ方法。
  7. 前記第2の組のレジスタに保持されるデータをサブワード単位で連結すること
    をさらに含む請求項6に記載の並列テーブルルックアップ方法。
  8. 前記可変mux命令は、前記第1の組のレジスタを指定する
    請求項6に記載の並列テーブルルックアップ方法。
  9. 前記可変mux命令は、前記第1の組のレジスタを指定する第4の組の1つまたは複数のレジスタ(RRS)を指定する
    請求項6に記載の並列テーブルルックアップ方法。
JP2004043849A 2003-03-31 2004-02-20 レジスタから並列テーブルルックアップを行う可変再配列(mux)命令 Expired - Fee Related JP3735105B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/403,785 US7424597B2 (en) 2003-03-31 2003-03-31 Variable reordering (Mux) instructions for parallel table lookups from registers

Publications (2)

Publication Number Publication Date
JP2004303203A true JP2004303203A (ja) 2004-10-28
JP3735105B2 JP3735105B2 (ja) 2006-01-18

Family

ID=32990033

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004043849A Expired - Fee Related JP3735105B2 (ja) 2003-03-31 2004-02-20 レジスタから並列テーブルルックアップを行う可変再配列(mux)命令

Country Status (2)

Country Link
US (1) US7424597B2 (ja)
JP (1) JP3735105B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009514096A (ja) * 2005-10-26 2009-04-02 アナログ デバイシーズ インク 参照テーブルアドレス指定システム及び方法
WO2013057872A1 (ja) * 2011-10-18 2013-04-25 パナソニック株式会社 シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8024551B2 (en) * 2005-10-26 2011-09-20 Analog Devices, Inc. Pipelined digital signal processor
US7728744B2 (en) * 2005-10-26 2010-06-01 Analog Devices, Inc. Variable length decoder system and method
US8565519B2 (en) * 2007-02-09 2013-10-22 Qualcomm Incorporated Programmable pattern-based unpacking and packing of data channel information
US7673120B2 (en) * 2007-06-27 2010-03-02 Texas Instruments Incorporated Inter-cluster communication network and heirarchical register files for clustered VLIW processors
US8301990B2 (en) * 2007-09-27 2012-10-30 Analog Devices, Inc. Programmable compute unit with internal register and bit FIFO for executing Viterbi code
US10162634B2 (en) * 2016-05-20 2018-12-25 International Business Machines Corporation Extendable conditional permute SIMD instructions

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4713748A (en) * 1985-02-12 1987-12-15 Texas Instruments Incorporated Microprocessor with block move instruction
EP0871108B1 (en) * 1991-03-11 2000-09-13 MIPS Technologies, Inc. Backward-compatible computer architecture with extended word size and address space
US5524256A (en) * 1993-05-07 1996-06-04 Apple Computer, Inc. Method and system for reordering bytes in a data stream
US5819117A (en) * 1995-10-10 1998-10-06 Microunity Systems Engineering, Inc. Method and system for facilitating byte ordering interfacing of a computer system
US6320964B1 (en) * 1998-08-26 2001-11-20 Intel Corporation Cryptographic accelerator
US6546480B1 (en) * 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data
WO2001089098A2 (en) * 2000-05-05 2001-11-22 Lee Ruby B A method and system for performing permutations with bit permutation instructions
US6952478B2 (en) * 2000-05-05 2005-10-04 Teleputers, Llc Method and system for performing permutations using permutation instructions based on modified omega and flip stages
US6922472B2 (en) * 2000-05-05 2005-07-26 Teleputers, Llc Method and system for performing permutations using permutation instructions based on butterfly networks

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009514096A (ja) * 2005-10-26 2009-04-02 アナログ デバイシーズ インク 参照テーブルアドレス指定システム及び方法
WO2013057872A1 (ja) * 2011-10-18 2013-04-25 パナソニック株式会社 シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令
JPWO2013057872A1 (ja) * 2011-10-18 2015-04-02 パナソニックIpマネジメント株式会社 シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令
US9292286B2 (en) 2011-10-18 2016-03-22 Panasonic Intellectual Property Management Co., Ltd. Shuffle pattern generating circuit, processor, shuffle pattern generating method, and instruction sequence

Also Published As

Publication number Publication date
US7424597B2 (en) 2008-09-09
US20040193850A1 (en) 2004-09-30
JP3735105B2 (ja) 2006-01-18

Similar Documents

Publication Publication Date Title
US20230297383A1 (en) Method for performing random read access to a block of data using parallel lut read instruction in vector processors
EP2695054B1 (en) Vector friendly instruction format and execution thereof
KR101599604B1 (ko) 제한 범위 벡터 메모리 액세스 인스트럭션들, 프로세서들, 방법들 및 시스템들
JP2008542910A (ja) バイトアドレシング可能メモリの抽出されたインデックスアドレシング
JP2017528810A (ja) データ要素を選択・統合するプロセッサ、方法、システム、および命令
US20200394038A1 (en) Look up table with data element promotion
US20230359462A1 (en) Look-up table initialize
JP3735105B2 (ja) レジスタから並列テーブルルックアップを行う可変再配列(mux)命令
JP2012119009A5 (ja) 選択演算を実行するプロセッサ
US11681532B2 (en) Method for forming constant extensions in the same execute packet in a VLIW processor
US7302525B2 (en) Method and apparatus for efficiently accessing both aligned and unaligned data from a memory
CA2284772A1 (en) Computer processor and method for data streaming
KR100972160B1 (ko) 데이터 액세스 프로그램 명령 인코딩
US20210026629A1 (en) Vector interleaving in a data processing apparatus
US20040054873A1 (en) Indirect indexing instructions
JP5327432B2 (ja) 信号処理プロセッサ及び半導体装置
JPS623332A (ja) 情報処理装置
US20190102187A1 (en) Processors, Methods, Systems, and Instructions to Generate Sequences of Integers in which Integers in Consecutive Positions Differ by a Constant Integer Stride and Where a Smallest Integer is Offset from Zero by an Integer Offset
JP2003196156A (ja) 情報処理装置および情報処理方法
JPS6230653B2 (ja)

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050502

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050729

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050915

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051020

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091028

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101028

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees