JP5388851B2 - 複数の命令モードを有するデータ処理回路、データ回路の処理方法、およびデータ回路のスケジューリング方法 - Google Patents

複数の命令モードを有するデータ処理回路、データ回路の処理方法、およびデータ回路のスケジューリング方法 Download PDF

Info

Publication number
JP5388851B2
JP5388851B2 JP2009527311A JP2009527311A JP5388851B2 JP 5388851 B2 JP5388851 B2 JP 5388851B2 JP 2009527311 A JP2009527311 A JP 2009527311A JP 2009527311 A JP2009527311 A JP 2009527311A JP 5388851 B2 JP5388851 B2 JP 5388851B2
Authority
JP
Japan
Prior art keywords
instruction
mode
register
circuit
instructions
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.)
Expired - Fee Related
Application number
JP2009527311A
Other languages
English (en)
Other versions
JP2010503107A (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 JP2010503107A publication Critical patent/JP2010503107A/ja
Application granted granted Critical
Publication of JP5388851B2 publication Critical patent/JP5388851B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/30181Instruction operation extension or modification
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Communication Control (AREA)
  • Advance Control (AREA)

Description

本発明は、データ処理回路およびデータ処理方法に関する。
米国特許出願2002042909号は、VLIWデータプロセッサの複数の機能ユニットに対する異なる命令セットの異なるプログラム部分を実行するリターゲッタブルコンパイラの使用を開示している。プログラムは、実行すべき処理を示す機械命令にコンパイルされる。実行すべき処理は、例えば処理用のオペランドがロードされるソースレジスタ、および処理結果が保存される宛先レジスタの加算、シフト等である。
機能ユニットに対して異なるレベルの制御を行う異なる命令セットが使用される。第1の命令セットは、複数の機能ユニットによって、独立した並列処理の制御を許可する。第2の命令セットは、各命令によって単一の機能ユニットのみを処理許可する。第1と第2の命令セットを比較すると、第1の命令セットには、通常、タスクが第1の命令モードによる命令にコード化されると、タスクの実行にかかる時間が短くなるという利点がある。一方、第2の命令セットには、通常、タスクを実行するためのプログラムを保存するのに必要なメモリの容量が小さいという利点がある。
コンパイラは、異なる命令セットに対応するプログラムとハードウェア命令を有している。コンパイラは、例えば、内側ループを第1の命令セットに、内側ループの外側のプログラム部分を第2の命令セットに利用して、異なるプログラム部分の命令セットを選択する。次に、コンパイラは、選択した命令セットからプログラム部分を機械命令のプログラムにコンパイルする。
プログラムを実行するのに使用されるデータ処理回路は、複数の機能ユニットに対する異なる命令セットにそれぞれ対応する、異なる命令モードの間でスイッチングが可能に構成されている。ある命令モードで作動するとき、データ処理回路は、データ処理回路に入力された命令を、現在の命令モードに対応する命令セットからの命令として解釈する。米国特許出願2002042909号は、命令モード間でのスイッチングがどのように行われるかを考慮していないが、US5,933,642には、この目的のための再構成命令を利用する点が開示されている。
このプログラム実行方法では、実行速度とプログラムサイズの組合せの最適な組み合わせが制限されてしまう。その上、再構成命令を特別に利用することで、命令セットが拡張されてしまう。
本発明の一態様における目的は、特別な命令を利用することなく、命令モードのスイッチングを行えるようにすることである。
別の態様における目的は、実行速度とプログラムサイズの最適な組合せを改良することである。
さらなる目的は、実行速度とプログラムサイズの最適な組合せを改良できるデータ処理回路を提供することである。
第1の態様によると、請求項1に記載のデータ処理回路が提供される。命令におけるジャンプコマンドは、ここでは、異なる命令モードの間の切換えを行うために利用され、命令は多数のあるいは少数の機能ユニットを制御する。したがって、このために専用のモード切換命令は必要ない。モードについての情報を、ジャンプターゲットアドレスに、例えばそのアドレスの最上位ビットの数としてセットしてもよい。ジャンプターゲットアドレスは、そのままジャンプ命令において特定してもよい。別の実施の形態では、ジャンプターゲットアドレスを、ジャンプコマンドのオペランドレジスタから提供してもよい。このオペランドレジスタからの最上位ビットの数は、後続する命令のモード選択のために利用される。
更なる実施の形態において、異なるモードの命令は、互いに異なる長さを有する。これは、命令アドレスの異なるサイズの部分は、異なる命令モードにおいて、命令アドレスの最小の命令インクリメントより低い分解能(resolution)を備えることを意味する。一実施の形態では、プログラムカウンタ値は、モード依存シフトティングによって、例えば4バイト命令モードでは2ビットごとに、2バイト命令モードでは1ビットごとに、命令メモリアドレスに変換される。したがって、モード非依存プログラムカウンタインクリメントを使用でき、余分なアドレス分解能から命令アドレスビットがなくなることがない。別の実施の形態では、命令モード依存インクリメントが使用される。更なる実施の形態では、短い命令の命令モードにおいて、各プログラムカウンタインクリメントの後に、メモリからの新たなフェッチが必要か、あるいは、新たにアドレッシングされた命令が先の命令とともにより大きなフェッチワードにフェッチされたかを判断するために、コンパレータを利用してもよい。
別の態様では、異なる命令モードを、処理選択および結果レジスタアドレス選択にタイムステーショナリデコーディングを利用するデータプロセッサに使用する。タイムステーショナリ命令エンコーディングとデコーディング自体は、知られている。これは、各命令が処理の選択とその処理についての結果レジスタアドレスの選択の両方を含む通常のデータステーショナリエンコーディング/デコーディングとは対照的である。これは、処理が結果を生成するまで、結果レジスタアドレスを、例えばパイプラインに保存しておく必要がある。これに対し、タイムステーショナリ命令エンコーディング/デコーディングは、処理の選択と、その処理についての結果のアドレッシングが、処理が開始されるとき、およびデータプロセッサがその処理の結果を生成したときにそれぞれ実行される異なる命令に含まれる。したがって、タイムステーショナリ命令エンコーディングでは、各命令は、処理選択と結果レジスタアドレッシング用の複数のフィールドを含むが、これらは別々の処理に関するものである。結果レジスタアドレッシング用のフィールドは、先に実行された命令によって選択された処理の結果として、命令の実行時に機能ユニットから利用可能な結果用に利用される。
タイムステーショナリ命令デコーディングを使用するデータプロセッサでは、異なる命令モードを利用すると、プログラムサイズを圧縮する他の方法に比べて効率的であるという利点がある。データステーショナリVLIWプロセッサに使用される従来の圧縮法は、例えば、コマンドが命令に含まれる機能ユニットについてのインディケーションを使用する。インディケーションの数はタイムステーショナリプロセッサでは著しく増加する。異なる命令モード間での切り換えを行うことで、各命令においてアドレッシング可能なレジスタの数を示す必要がないため、このオーバヘッドを低下することができる。したがって、例えば、第1の命令モードにおいて、複数の機能ユニットの結果用の結果レジスタアドレスを、各命令に含め、第2の命令モードでは、単一の結果レジスタアドレスを含めることができる。
一実施の形態では、例えば、ジャンプ命令がこのために利用される場合には、モード切換コマンドがレイテンシを持つようにしてもよい。この場合、モード切換コマンドの実行開始と実際のモード切換の間に遅れがある。この遅れを、モード切換コマンドの後ろで追加結果レジスタアドレスについての命令を追加するために利用してもよい。一実施の形態では、モード切換の直前に処理が選択され、モード切換の後にデータプロセッサがその結果を生成することを避けている。したがって、例えば、同数の処理と結果レジスタ選択を提供する命令を利用して、処理選択に用いたのと同じ命令モードにおける命令の制御の下で、1つ以上の結果の書き込みが行われる。これにより、プログラム配列が簡素化される。別の実施の形態では、処理が選択される第1の命令と、結果書き込みのためのレジスタをアドレッシングする第2の命令について、異なる命令モードを使用する。これにより、命令モード間で切換付近の処理スケジューリングについての制約が小さくなるので、データプロセッサをより効率的に利用することができる。例えば、命令モード間での切換のためにジャンプ命令を利用し、ジャンプによってのみジャンプターゲットに到達できるような場合に、適用してもよい。この場合、結果のソースにあいまい性がなくなる。しかし、より複雑な実施の形態では、ターゲットに対して異なるパスが存在し、それぞれのパスについて結果を提供するために処理が選択される場合に適用してもよい。別の実施の形態では、プログラムにおいて異なるポイントから呼出し可能なサブルーチン(一連の命令のサブプログラム)の結果を書き込むために使用してもよい。したがって、サブルーチンからのすべてのリターンについて、結果用に所定のレジスタをリザーブしておく必要はない。
別の態様では、このタイプのデータプロセッサ用の命令をスケジューリングするスケジューリング方法を提供する。シングルモードプロセッサとデータステーショナリプロセッサのスケジューリング自体は、知られている。通常、プログラムは最初に、高水準言語プログラムからプロセッサの機械処理にコンパイルされる。スケジューリング中、プロセッサ効率を最適化するために、複数の処理を(並列に)実行するためのシーケンスが選択される。そして、処理を実行するための命令は、スケジューリングの結果に従って、命令に配置される処理選択コードとともに、命令メモリにプログラミングされる(プログラミングは、例えば、所望の命令を生成するためにマスクセットを利用した製造、または不揮発性メモリや揮発性メモリへのプログラミングを含んでもよい)。また、複数の命令モードを有するタイムステーショナリプロセッサの場合、スケジューリングは、モード変更コマンドの命令への挿入、対応する処理の選択を含む命令に対してオフセットして結果レジスタアドレスを命令に配置することも含む。結果を生成する処理の選択と同じ命令モードにおいて結果レジスタアドレスを確実に伝達できるようにするために、種々の実施の形態においてスケジューリング制約条件を課してもよい。あるいは、結果レジスタアドレスと結果を生成する処理の選択を、異なるモードで実行される命令に含めるような処理を選択してもよい。後者の場合では、スケジューリングされる処理選択の数は、命令モード切換後に宛先レジスタを選択するためのキャパシティに合わせてもよい。すなわち、キャパシティが減少する場合は、切換付近では処理選択の数を少なくするようにスケジューリングし、キャパシティが増加する場合は、数を多くしてもよい。
これらの目的と他の目的、および有効な態様を、図面を参照した例として以下の実施の形態により説明する。
図1は、データ処理回路を示す。 図2、2aは、実行ユニットを示す。 図3は、命令デコーダを示す。 図4、4aは、シーケンサ、およびモード制御回路を示す。 図5は、プログラミングシステムを示す。 図6は、コンパイリング処理を示すフローチャートである。
図1は、データ処理回路を示す。回路は、シーケンサ10、モード制御回路12、命令メモリ14、命令レジスタ16、命令デコーダ17、実行ユニット18、および1つ以上のレジスタファイルからなるレジスタファイルセット19を備える。シーケンサ10の出力部は、命令メモリ14の入力部と接続され、プログラムカウンタアドレスを供給する。命令メモリ14の出力部は、命令レジスタ16と接続されている。命令レジスタ16の出力部は、命令デコーダ17と接続され、命令デコーダ17の出力部は、実行ユニット18およびレジスタファイルセット19と接続されている。実行ユニット18のオペランド入力部と結果出力部は、レジスタファイルセット19の読出ポートと書込ポートにそれぞれ接続され、ジャンプ制御出力部は、シーケンサ10に接続されている。モード制御回路12の出力部は、命令デコーダ17の制御入力部と接続されている。
作動中、シーケンサ10は、通常、連続する命令サイクルにおいてプログラムカウンタ値をインクリメントし、また、ジャンプ命令が実行ユニット18で実行されると、成功したジャンプ命令に応じてプログラムカウンタ値を変更しながら、プログラムカウンタ値を維持する。シーケンサ10は、命令モード選択を制御するためにモード制御回路12に信号を供給する。
プログラムカウンタ値の少なくとも一部は、命令メモリ14の命令をアドレス指定するために使用される。命令メモリ14は、アドレス指定された命令を読出して命令レジスタ16に供給する。命令は、実行制御のために命令レジスタに保存される。命令メモリ14を、単純なメモリから構成することも可能であるが、命令メモリ14を階層メモリ回路として、利用されると予測される命令を蓄えておくための複数レベルのキャッシュを有するように構成してもよい。
命令レジスタ16は、命令デコーダ17に命令を連続的に供給する。モード制御回路12は、モード制御信号を命令デコーダ17に供給する。命令デコーダ17は、実行ユニット18とレジスタファイルセット19のための実行制御信号を生成する。
図2は実行ユニット18の一実施の形態を示している。この実施の形態では、実行ユニット18は、それぞれ少なくとも1つの機能ユニットを備える複数の機能ユニットグループ群20と、1つ以上のレジスタファイル(不図示)の読出ポートに接続されたオペランド入力部22と、入力部が機能ユニットグループ20に接続された結果レジスタ24と、1つ以上のレジスタファイル(不図示)の書込ポートに接続された出力部26とを備える回路である。機能ユニットグループ20はそれぞれ、命令デコーダ(不図示)に接続された制御入力部28を有する。更なる実施の形態では、機能ユニットグループに、実行回路に接続された内部レジスタ(不図示)を設け、ある機能ユニットの結果を、命令コードの制御の下で、オペランドとして内部的に別の機能ユニットに送るように構成してもよい。
図2aは、実行ユニット18の一実施の形態を示す。実行ユニット18には、レジスタファイル(不図示)の読出ポートからのオペランドと、実行ユニット18の(任意で選択可能な)内部結果レジスタ24のオペランドとの間で選択するマルチプレクサ29を備えている。マルチプレクサ29は、命令デコーダによって制御される。これによって、中間結果をレジスタファイルに保存することなく、連続処理を可能とすることができる。
また、一実施の形態では、機能ユニットグループ20の入力部にオペランドレジスタを設け、レジスタファイルおよび/または結果レジスタからのオペランドを一時的に蓄えておくこともできる。これにより、異なる命令サイクルにおけるオペランドのロードや、これらのオペランドを用いた処理の実行が可能となる。
一実施の形態では、命令レジスタ16からの命令は、それぞれ1つ以上のビット位置を有する複数のフィールドを備えている。フィールドの一部の内容は、実行ユニット18によって実行される処理を示すものであり、フィールドの別の部分の内容は、レジスタファイルセット19において、オペランドデータを読出ポートへ供給するレジスタアドレス、または書込ポートからの結果を保存するレジスタアドレスを示すものである。この実施の形態では、モード制御信号は、命令のどの部分が処理を示すフィールドとして機能するか、また、命令のどの部分がレジスタアドレスおよび/またはこれらの部分のサイズを示すかを判断するために用いられる。
図3は、命令デコーダ17の一実施の形態を示している。この実施の形態では、命令デコーダ17は、命令レジスタ16と接続されたマルチビット入力部を有する命令選択回路31と、命令選択回路31の出力部の異なる部分にそれぞれ接続される入力部を有する複数のマルチプレクサ30とを備える。さらに、マルチプレクサ30の選択された入力部に、デフォルト信号供給コンダクタを接続してもよい。第1のマルチプレクサ30は、機能ユニットグループ(不図示)の制御入力部に接続される第1の出力部32を備えている。第2のマルチプレクサ30は、レジスタファイルセット(不図示)の読出ポートの読出しアドレス入力部に接続される第2の出力部34を備えている。第3のマルチプレクサ30は、レジスタファイルセット(不図示)の書込ポートの書込アドレス入力部に接続される第3の出力部36を備えている。
命令選択回路31は、シーケンサ10とモード制御回路12に接続される制御入力部を備える。モード制御回路12によって選択された命令モードが、命令が命令レジスタの全範囲を満たさないことを示す場合、命令選択回路31は、命令を供給するための命令レジスタの位置を選択するために、シーケンサから送られるプログラムカウンタ値の複数ビットを使用する。例えば、命令モードが、ハーフサイズの命令を使用することを示す場合、プログラムカウンタ値のビットは、命令レジスタのコンテンツの前半部分が供給されるのか、後半部分が供給されるのかをコントロールする。別の形態として、命令モードが、4分の1サイズの命令を使用することを示す場合、プログラムカウンタ値のビットは、命令レジスタのコンテンツの4分の1番目、4分の2番目、4分の3番目、または4分の4番目のいずれが供給されるのかをコントロールする。
マルチプレクサ30は、モード制御回路12と接続される制御入力部を備える。モード制御回路12によって選択された命令モードに応じて、マルチプレクサ30は、命令における異なる位置からのビット、および/またはデフォルトビットを、第1、第2、および第3の出力部に供給する。
一実施の形態では、モード制御信号によってモード制御回路12から選択された命令モードに応じて、命令デコーダ17は、命令の複数のフィールドの複数のビットを実行ユニット18およびレジスタファイルセット19に送る。なお、レジスタアドレスを示す複数のフィールドは、結果を生成する処理を示す複数のフィールドとは別に送られる。したがって、現在の命令における結果を書き込む書き込みアドレスを示す一つのフィールドは、前回の命令によって示された処理の実行結果を書き込むためのレジスタをアドレス指定するために利用される。現在の命令が実行されているとき、すなわち現在の命令によって選択された1つ以上の処理が実行されているときに、前回の命令で得られた結果を取得することができる。
したがって、処理選択コードおよびこれらの処理の結果を書き込むレジスタアドレスは、異なる命令サイクルにおいて異なる命令から供給される。一実施の形態では、現在の命令で指示される複数の処理は、現在の命令のフィールドの制御の下でアドレス指定されたレジスタからフェッチされたオペランドに適用される。しかし、代わりに、処理を、前回の命令におけるフィールドの制御の下でアドレス指定されたレジスタからフェッチされたオペランドに適用してもよい。また、この場合、処理選択コードおよびこれらの処理のためにオペランドをフェッチするためのレジスタアドレスは、異なる命令サイクルの異なる命令から供給される。
実行ユニットが機能ユニットから結果を受け取る内部レジスタを含む実施の形態では、処理コードは、機能ユニットによって内部レジスタのコンテンツに適用される処理を指示するようにしてもよい。したがって、複合処理の連続するステージを実行する処理選択コードを、異なる命令サイクルの異なる命令から供給するようにしてもよい。
命令デコーダ17は、第1の命令モードをサポートするようにしてもよい。第1の命令モードは、例えば、命令の複数のフィールドが、実行ユニット18の複数の異なる機能ユニット(不図示)によって並列に実行される複数の処理を示すものである。第1の命令モードにおいても、命令の別の複数のフィールドが、命令用のオペランドを供給するためのレジスタアドレスを示すようにしてもよい。命令のさらなる複数のフィールドは、以前の単一または複数の命令による処理の結果を書き込むためのレジスタアドレスを示すようにしてもよい。第1の命令モードに加えて、命令デコーダ17は、第2の命令モードをサポートするようにしてもよい。第2の命令モードは、1つの処理(または複数の処理の所定の1つの組み合わせ)を選択するために1つのフィールドを定義し、オペランドをフェッチするためのレジスタアドレスを示すために2つのフィールドを定義し、結果を書き込むためのアドレスを示すために1つのフィールドを定義するものである。さらに、または、その代わりに、別の命令モードを備えるようにしてもよい。すなわち、複数のフィールドが、2つ以上の処理であって、第1のモードよりも少ない数の処理を指示し、オペランドをフェッチするための3つ以上のレジスタアドレスを指示し、結果を書き込むための2つ以上のレジスタアドレスを指示するモードを備えるようにしてもよい。
また、異なる命令モードでは、命令の異なるフィールドにおけるビット数が異なるようにしてもよい。例えば、ある命令モードでは、レジスタアドレスを選択するためのフィールドのビット数が、別の命令モードにおいてレジスタアドレスを選択するためのフィールドのビット数よりも大きくなるようにしてもよい。したがって、前者のモードでは、後者の命令モードよりも、数多くのレジスタをアドレス指定することができる。例えば、前者のモードではアドレス指定できるものでも、後者のモードでは、サブセットのみにアドレス指定できる。別の実施例では、前者のモードおよび後者のモードにおいて、別々の異なるレジスタセット、または部分的にオーバーラップしたセットに、アドレス指定できるようにしてもよい。
同様に、ある命令モードにおいて処理を選択するためのフィールドのビット数を、別の命令モードで処理を選択するためのフィールドのビット数よりも大きくなるようにしてもよい。したがって、前者のモードでは、後者のモードよりも多数の処理を選択することができる。例えば、前者のモードでは選択できる処理でも、後者のモードではサブセットのみを選択することができる。別の実施例では、前者のモードおよび後者のモードにおいて、別々の異なる処理セット、または部分的にオーバーラップしたセットを、選択可能としてもよい。
なお、命令レジスタ16の全てのビットを、処理、オペランドレジスタアドレス、および結果レジスタアドレスを指示するために使用する必要はない。命令レジスタ16のビットの一部を、少なくとも一部の命令モードでは使用しないようにしておくこともできる。したがって、これらの命令モードでは、より短い命令を使用できる。
図4はシーケンサ10とモード制御回路12の一実施の形態を示している。この実施の形態では、シーケンサ10は、プログラムカウンタレジスタ40、インクリメンタ42、マルチプレクサ44、およびコンパレータ46を備えている。プログラムカウンタレジスタ40は、プログラムメモリ(不図示)のアドレス入力部と、インクリメンタ42とに接続される出力部を有する。インクリメンタ42は、モード制御回路12に接続される制御入力部を有する。マルチプレクサ44は、インクリメンタ42の出力部と、実行ユニット(不図示)のジャンプアドレス出力部と、スタートアドレスソース(不図示)とに接続される入力部を有する。さらに、あるいは代わりに、マルチプレクサ44は、サブルーチンからリターンするためのリターンアドレスソース(不図示)と接続される入力部を有してもよい。マルチプレクサ44は、実行ユニット(不図示)に接続される制御入力部を有する。マルチプレクサ44は、プログラムカウンタレジスタ40の入力部と接続される出力部を有する。コンパレータ46は、マルチプレクサ44とプログラムカウンタレジスタ40の出力部に接続される入力部、および、命令メモリ(不図示)のイネーブル入力部に接続される出力部を有する。
モード制御回路12は、モードレジスタ48とモードマルチプレクサ49を有する。モードマルチプレクサ49は、出力モードレジスタ48、実行ユニット(不図示)のジャンプアドレス出力部に付属するモード部分出力部、およびスタートモードソース(不図示)に接続する入力部を有する。モードマルチプレクサ49は、実行ユニット(不図示)に接続される制御入力部を有する。モードマルチプレクサ44は、モードレジスタ48の入力部と接続する出力部を有する。
作動中、プログラムカウンタレジスタ40は、マルチプレクサ44から各実行サイクルにおいてアドレスをロードする。実行ユニットはアドレスソースを制御する。最初に、スタートアドレスがロードされる。次に、通常は、前のプログラムカウンタ値をインクリメントした結果がロードされる。しかし、実行ユニットが、分岐命令が成功したことを示すと、実行ユニットから分岐ターゲットアドレスをロードする。この実施の形態では、プログラムカウンタの選択されたモードに応じてインクリメントされる。例えば、フルサイズ、ハーフサイズ、および4分の1サイズの命令モードが使用される場合、フルサイズ、ハーフサイズ、または4分の1サイズの命令モードが指示されると、プログラムカウンタ値はそれぞれ4、2、または1つインクリメントされる。命令メモリはフルサイズの命令をロードできることが望ましい。この場合、プフルサイズ未満の命令を区別するプログラムカウンタ値の最下位ビットは、命令メモリにアドレス指定するために必要ではない。コンパレータ46はオプションであるが、命令メモリにアドレス指定するのに必要な現在および将来のプログラムカウンタ値の部分を比較し、両者が異なる場合にはリードイネーブル信号を出力する。
図4aは、命令モードに依存しない固定インクリメント(例えば1のインクリメント)を使用する別の実施の形態に示している。この実施の形態には、シフト回路400が設けられており、プログラムカウンタ値を、命令メモリに適用する前にモード依存量だけシフトする。これに応じて、コンパレータ46は、現在のモードにおける命令メモリをアドレス指定するために用いられるアドレス部分のみを比較するように構成されている。なお、この実施の形態では、あるモードでは最下位ビットも所定の値を有するので、これらの最下位ビットは不要ではなく、プログラムカウンタビットをより効率的に利用することができる。
モード制御回路12の処理は、シーケンサ10のものと同様である。モード値は各命令サイクルにおいてモードレジスタ48にロードされる。実行ユニットはアドレスソースを制御する。
最初に、スタートモードがロードされる。次に、通常、モード値は変化しない(例えば、モードレジスタ48からロードされる)が、実行ユニットが分岐命令の成功を示すと、実行ユニットから供給されたジャンプターゲットアドレスを伴うモード値がロードされる。好ましくは、ジャンプターゲットモード値は、ジャンプ命令において、ジャンプターゲットアドレスと組み合わせて(絶対アドレスか相対アドレスの形で)、例えば、命令の一部を形成するリテラルデータとして特定される。
そのため、一実施の形態では、所定数のジャンプターゲットアドレスの最上位ビットの位置を利用し、ジャンプターゲットアドレスの最上位ビットをモードビットとしてもよい。絶対アドレスによるジャンプ命令では、これらの最上位ビットは、ジャンプ命令の実行の際にモードレジスタ48にコピーされる。回路が相対アドレス(すなわち、プログラムカウンタアドレスに対するオフセット)によってジャンプ命令(分岐命令とも呼ばれる)をサポートする一実施の形態では、成功したジャンプ命令の相対アドレスの下位ビットが、新しいプログラムカウンタアドレスを取得するために、プログラムカウンタアドレスに加算される。また、最上位ビットは、モードレジスタ48にロードするように独立して取り扱ってもよい。下位ビットからモードビットへのオーバーフローは、無効とされる。
一実施の形態では、シーケンサ10は、「サブルーチンへのジャンプ」命令と「サブルーチンからのリターン」命令の実行、および/またはレジスタベースのジャンプターゲットのアドレッシングをする。サブルーチンへのジャンプの際、ジャンプが実行されると、現在のインクリメントされたプログラムカウンタ値はセーブされる。その後、「サブルーチンからのリターン」命令が実行されるとき、このプログラムカウンタ値はプログラムカウンタレジスタにロードされる。この実施の形態では、モード制御値は、サブルーチンへのジャンプ命令に応じて保存され、サブルーチンからのリターン命令に応じてリストアされる。同様に、レジスタからジャンプターゲットアドレスが提供された場合、レジスタからモードビットもロードするようにしてもよい。
なお、この方法により選択可能な種々のモードの数は、このために用いるモードビット数に依存する。異なるモードは、異なる長さの命令を提供するようにしてもよい。しかし、一実施の形態では、複数の異なるモードで同じ長さの命令を提供し、ジャンプターゲットアドレスの最上位ビットを用いてこれらのモードを選択するようにしてもよい。
なお、異なる命令モード間で切り換えを行うためのジャンプ命令の利用を、処理選択コード、結果レジスタアドレス、および処理のオペランドレジスタアドレスがそれぞれ同じ命令に含まれるようなプロセッサに適用してもよい(すなわち、異なる命令サイクルにおいて命令のこれらの部分を利用できるようにパイプライン方式が必要となる)。このようなプロセッサでは、通常、各命令において、どの機能ユニットグループに命令情報が含まれているか、という指示を含め、他の機能ユニットのグループについて自動的にNOPs(ノーオペレーション命令)を生成することで、命令サイズをより効果的に減少させることができる。しかし、そのような指示の利用は、オペレーション選択コード、結果レジスタアドレス、および処理用オペランドレジスタアドレスの少なくとも2つがそれぞれ異なる命令に含まれるようなプロセッサには、ほとんど効果がない。
なお、モード選択に別のメカニズムを利用してもよい。例えば、モード選択ビットを、各命令の一部、または、例えば次の1つの命令または複数の命令の命令モードを示す命令の一部としてもよい。この場合、これらのビットは、モード制御回路に供給される。これは、モードに対して詳細な制御を行えるという利点があるが、命令サイズが大きくなり、メモリ利用の効率を下げてしまうという難点がある。別の実施の形態では、フルサイズ命令語用のスペースの最後の命令のみが、常に、モード選択ビットを含むようにする(例えば、2つのハーフサイズ命令のうちの第2の命令のみ)。これは、よりメモリ効率がよい。モード選択のためにジャンプ命令を利用することによって、コードサイズが減少するという利点がある。
別の実施例として、特別なモード変更命令を使用してもよい。すなわち、実行ユニットが、これらのモード変更命令からの情報の制御の下で、モード制御回路にモード値をロードさせるように制御する。モード変更命令は、例えば、新たなモードを示すデータを含んでもよい。または、命令モードの所定のシーケンスを定義して、モード変更命令が、所定のシーケンスにおける現在の命令に続く命令モードへのステップを指示するようにしてもよい。モード変更命令の使用は、大きなジャンプ命令に比べてコードサイズを小さくできるかもしれないが、モード変更が頻繁にジャンプを伴う場合は、結果として、ジャンプ命令の方がコードサイズを小さくすることができる。
なお、上述したデータ処理回路は、1つの命令において、異なる処理の処理ステージを指定できる命令を利用することが分かる。したがって、例えば、第1の処理の処理選択コードは、同じ命令内において、処理選択コードが前回の命令において供給された第2の処理のライトバックステージの書込レジスタアドレスを伴うようにしてもよい。また、異なる機能ユニットの複数の処理選択コードを、同じ命令、および/または、以前の1つまたは複数の命令において処理選択コードが供給された異なる処理の複数の書込みレジスタアドレスに、供給してもよい。さらに、オペランドレジスタアドレスを、ある命令および/または以前の複数の命令において選択された1つの処理または複数の処理の命令に供給してもよい。また、命令において選択された1つあるいは複数の処理の命令に、リテラルデータを供給するようにしてもよい。
一実施の形態では、1つの命令において特定される処理の数および/またはレジスタアドレスの数は、選択された命令モードに依存する。一実施の形態では、ある命令に供給されるレジスタアドレスの数は処理の数に比例している。したがって、例えば、書込みレジスタアドレスの数は処理選択コードの数と等しい、および/または、オペランドレジスタアドレスの数は(命令モードに依存して)処理選択コードの数の2倍と等しくなるようにしてもよい。
あるいはまた、このような比例関係のない命令モードを定義してもよい。例えば、1つ以上の命令モードでは、書込みレジスタアドレスの数を、処理選択コードの数より大きくしてもよい。例えば、レイテンシが異なる種々の処理を行う場合に、処理結果を吐き出す命令サイクルにおいて書き込みアドレスを指定する能力の不足に起因して、それらの処理をスケジューリングできなくなることがある。上述した、書込みレジスタアドレスの数を、処理選択コードの数より大きく設定することは、このような事態を避けるために利用してもよい。さらに、広い命令モードにおいて開始された処理の結果を取り扱うために、回路が広い命令モードと狭い命令モードとの間で切り換え可能な移行モードを定義するために用いてもよい。
別の実施例として、書込みレジスタアドレスの数は、1つ以上の命令モードによる処理選択コードの数より少なくしてもよい。これは、例えば、異なる処理が異なるレイテンシを持つ場合に、異なる命令サイクルにおいて結果がライトバックされる複数の処理を並列に開始できるようにするために、使用してもよい。別の実施例として、さらに、異なる複数の処理が、中間結果をレジスタファイルのレジスタに書き込むことなく連結されるプログラム部分に使用してもよい。この場合、中間結果を生成する処理に対して、書き込みアドレスを設定する必要がない。したがって、このような実行をサポートする命令モードにおいて、書き込みアドレスの数の少ない命令を利用することができる。さらなる実施例として、広い命令モードにおいて結果を書き込む多くの処理を開始できるようにするために、回路が狭い命令モードと広い命令モードの間で切り換え可能な移行モードにおいて、少ない数の書込みアドレスを利用してもよい。
異なる数の書込みレジスタアドレスおよび/またはオペランドレジスタアドレスの指定を可能とするほかに、異なる命令モードが異なるサイズのレジスタアドレスを指定するようにしてもよい。したがって、例えば、第1の命令モードでは、命令において、それぞれが16レジスタのうちの1つを指定する4ビットレジスタアドレスを用い、第2の命令モードでは、それぞれが64レジスタのうちの1つを指定する6ビットレジスタアドレスを用いるようにしてもよい。一実施の形態では、第1の命令モードは、第2の命令モードでアドレッシングができるレジスタのサブセットのアドレッシングのみを許容する。
一実施の形態では、回路用のプログラムが、あるモードにおいて作動しているときに何らかの処理を開始させること、および別のモードにおいて作動しているときに処理結果を書き込むことを回避する。すなわち、プログラムのコンパイルの間、分岐が起こるポイントよりも後で結果が生成されるような処理のスケジューリングを避ける(分岐は、プログラムカウンタアドレスが変化するときに行われるといえる。通常は、分岐命令が実行ユニットに適用される命令サイクルよりも1つ以上後のサイクルで起こる)。このタイプの実施の形態では、同様に、別のモードでオペランドを読み出すようにアドレッシングされたレジスタからのオペランドを利用して、あるモードで作動しているときに、回路用のプログラムが何らかの処理を開始することを回避する。
しかし、別の実施の形態では、そのような制限を設けなくてもよい。例えば、ある処理の結果レジスタアドレスの範囲を、その処理を選択する命令において可能な範囲よりも広くするように、モード移行を利用してもよい。この場合、プログラムは、処理のための処理選択コードを含む第1の命令と、処理の結果レジスタアドレスを含む第2の命令と、命令モードを変更する命令とを有し、第1の命令を第1の命令モードで実行し、第2の命令を第2の命令モードで実行するようにする。第2の命令モードは、第1の命令モードではアドレッシングできないレジスタのアドレッシングを許容する。
別の実施の形態では、異なるモードでは異なる特別処理セットから選択ができるようにするが、異なる命令モードにおいて処理選択および/またはレジスタ選択の数を必ずしも異ならせる必要はない。一実施の形態では、例えば、画像圧縮、画像解凍、オーディオ圧縮、オーディオ解凍、およびコンピュータグラフィック処理の1つ以上のための異なる命令モードを設けてもよい。一般に、専用のハードウェアでサポートされる特別処理は、これらのモードのそれぞれについて定義される。例えば、画像圧縮のブロックマッチング処理、画像の圧縮および伸張のDCT変換命令、コンピュータグラフィック処理のためのテクスチャマッピングまたはビットブリッティング(bit blitting)処理、可変長圧縮/伸張処理等である。異なる命令モードでは、これらの処理のそれぞれについての異なるサブセットからの処理の選択が行われる。 図5はプログラム開発システムを示している。システムは、コンパイラプログラムを実行するようプログラムされたプロセッサ50、ソースコードストレージデバイス52、およびコンパイル済みコードを命令メモリにプログラミングするプログラミングシステム54を備える。プログラム可能な不揮発性メモリ(例えばフラッシュメモリ)が命令メモリもしくはその一部に使用されている場合、プログラミングシステム54は不揮発性メモリプログラミング回路を利用してもよい。そのような回路は、複数の命令メモリをプログラミングするためにオフラインで使用してもよい。しかし、例えば集積回路のマスクプログラミングなど、別のプログラミング方式を利用してもよい。
図6は、コンパイラの処理を説明する図である。第1ステップ61では、コンパイラは、例えばCまたはC++といった高水準言語、あるいは、中水準言語のソースコードを受け取る。第2ステップ62では、コンパイラはプログラムの各部分のための命令モードを選択する。これは、例えば、明確にプログラムされたモード選択に基づいて、または、暫定的にコンパイルされたプログラムを実行することによって得られたプロファイルデータに基づいて、行ってもよい。頻繁に実行されるプログラムの部分は、広い命令の命令モードが割り当てられ、、それほど頻繁には実行されないプログラムの部分は、狭い命令の命令モードが割り当てられる。別の実施の形態では、異なる命令モードが異なるタイプのタスク(例えば、画像圧縮、画像回答、コンピュータグラフィック、オーディオ圧縮、オーディオ解凍等)をサポートする。この場合、ある部分で実行されるタスクに応じて、プログラム部分ごとに異なる命令モードを割り当ててもよい。
次に、コンパイラは、ソースコードのプログラム部分をコンパイルする。基本的に、各部分は、プログラム部分に割り当てられた命令モードによって定義される種々の概念プロセッサ(notional processor)をターゲットとしてコンパイルされる。第3ステップ63では、コンパイラは、プログラム部分に割り当てられた命令モードにおいて利用可能な命令から、プログラム部分においてソースコードを実行するための処理を選択する。第4ステップ64では、処理およびレジスタの処理用の読出しと書き込み動作のスケジューリングを行う。すなわち、命令サイクルを、処理の実行、およびレジスタの処理用の読出しと書き込み動作に割り当てる。スケジューリング方法自体は知られている。一実施の形態では、後続する命令にステップし、各命令において、データ依存の観点からその命令にスケジューリングできる処理をサーチし、後から他の処理においてオペランドとして利用するために結果を保存するレジスタを割り当てることによって、スケジューリングを行う。結果を書き込む命令における時間の可用性の制約、およびレジスタの可用性の制約が満たせない場合は、バックトラックを利用してもよい。実行時間を最小にするスケジューリングを選択してもよい。
第5ステップ65でコンパイラは、命令における処理を選択するための命令コードをセットする。第6ステップ66でコンパイラは、命令において結果をレジスタに書き込むためのレジスタのアドレッシング用コードをセットする。通常、レジスタアドレッシング用のコードがセットされる命令は、処理コードが実行される命令に依存して、その命令を実行するために必要な遅れを加算することによって、選択される。第7ステップ67でコンパイラは、命令においてレジスタからオペランドを読み出すためのレジスタのアドレッシング用コードをセットする。一実施の形態では、これらのコードは処理選択コードがセットされるのと同じ命令にセットされる。オペランドデータのバッファリングをサポートしたり、または、処理コードの発行前にオペランドのアドレス指定が必要な別の実施の形態においては、これらのオペランド選択コードおよび処理選択コードを、互いに異なる命令にセットしてもよい。任意で、レジスタアドレッシングコードをセットするための命令を、命令における時間の可用性に応じて選択する。
第8ステップ68でコンパイラは、命令モード変更命令(例えばジャンプ命令)を、異なる命令セットで実行される複数のプログラム部分の間のトランジションで、あるプログラム部分から別のプログラム部分へのジャンプ命令に挿入する。第9ステップ69でコンパイラは、すべてのプログラム部分がコンパイルされたかをテストし、全てがコンパイルされていない場合は、別のプログラム部分のために第3ステップ63まで戻る。
一実施の形態では、コンパイラは、ジャンプ(分岐)命令に対して、スケジューリング処理に制約条件を課す。具体的には、処理結果がジャンプ(分岐)後に得られる場合には、ジャンプ(分岐)前にはいずれの処理もスケジューリングできないような制約条件とする。同様に、処理用のオペランドアドレッシングとその処理のための処理コード選択が、異なる命令に含まれる場合には、ジャンプ(分岐)のすぐ後にはいずれの処理もスケジューリングできないようにし、処理のオペランドはジャンプ(分岐)前にアドレス指定されるようにする。これにより、処理がいったん処理選択のモードにアサインされると、従来のシングルモードスケジューリングを利用することができる。オペランドのロードと、処理結果の書き込みは、全て選択されたモードで実行される。
表Iは、このように取得されたプログラムの一部の例示である。
表I
Figure 0005388851
各横列は、異なる命令を示し、異なる縦列は命令における異なるフィールドを示している。
連続した横列の命令は、連続的に実行される。OP1、OP2、OP3、OP4、およびJMPはオペレーションレジスタ選択コードである。A11、A12、A13、A14、A23、A24、A31、A41はオペランド選択コードである。R11、R12、R22、およびR32は結果レジスタ選択コードである。この例では、選択された処理は一周期レイテンシを有すると仮定する。R21はOP1によって選択された処理のための結果レジスタを選択し、R22はOP2によって選択された処理のための結果レジスタを選択し、R32はOP3によって選択された処理のための結果レジスタを選択する。R11とR12は以前に選択された処理(不図示)のための結果レジスタを選択する。
第2の命令におけるジャンプ処理選択JMPは、命令モード切換を制御するものであり、1命令レイテンシで実行、すなわち第4の命令から開始するように制御する。モード切換前の第1の命令モードは、8フィールド命令を有し、モード切換後の第2の命令モードは、4フィールド命令を有する(見やすくするためにフィールドは縦列に示しているが、実際には、第1および第2のモードのフィールドは、互いに異なるサイズとしてもよい)。なお、ジャンプ命令は、ジャンプアドレス用のフィールドとして、レジスタを特定するためのフィールドサイズの複数分のサイズのフィールドを利用する。これらのフィールドは、ジャンプを処理するためにシーケンサに送られる。
この例では、選択された処理は一周期レイテンシを有すると仮定している。したがって、モード変更が行われる前の最後の命令において、ノーオペレーション選択(NOPs)がスケジューリングされる。この命令は、ジャンプコマンドの後ろに処理OP3のための結果レジスタ選択のみをを含む。したがって、結果書き込み用のフィールドを設けるためにジャンプディレイが利用される。
処理レジスタ選択コードA11、A12、A13、A14、A23、A24、A31、A41は、これらの選択コードが含まれているのと同じ命令で選択された処理のために機能すると仮定する。しかし、別の実施の形態においては、それらの選択コードをより早い段階の命令にセットするようにしてもよい。長いレイテンシ処理がある実施の形態では、後の段階の命令に含めてもよい。各処理が一周期レイテンシを有する実施例について説明したが、実際には、異なるレイテンシを利用したり、異なる処理が互いに異なるレイテンシを持つようにしてもよい。この場合、結果レジスタ選択コードは、対応するオフセット命令にセットされる。場合によっては、書き込みをディレイするために機能ユニットのバッファリングを利用して、結果レジスタ選択コードを、結果が最初に生成される命令よりも後にセットしてもよい。
別の実施の形態において、コンパイラは少なくとも処理の一部においては、「シングルモード」の制約条件を課すことはない。したがって、例えば、処理を選択するコードを、あるモードで実行される命令に含め、その処理の結果を書き込むためのレジスタのアドレッシングをするコードを、別のモードで実行される命令に含め、および/または、その処理のオペランドを読み出すためのレジスタのアドレッシングをするコードを、別のモードで実行される命令に含めるようにしてもよい。表IIは、このようにして生成されるプログラムの一部を例示している。
表II
Figure 0005388851
ここで、第1から第2の命令モードへの命令モード変更(JMP命令によって発生)は、第4の命令(第4横列)で実行され、第4横列の命令は、第2の命令モードで実行されるものと仮定する。第3の命令は、第1の命令モードがまだ適用されているときに実行されるが、処理選択OP4を含む。OP4は、第4の命令が実行されているときに書き込み可能な結果を生成するようにした処理を示す。この第4の命令は、したがって、OP4によって選択された処理の結果のための宛先レジスタを選択する選択コードR41のフィールドを含む。
これは例えば、モード間の切り換えを制御するジャンプ命令が、モード切換のためだけに含まれている場合(すなわち、プログラムがジャンプターゲットに到達する一方向のみしか提供しない場合)に行われる。この場合、どの処理がジャンプ命令の前に開始されたかが一意的にわかり、ジャンプターゲットの後の命令において、これらの処理のための結果レジスタアドレスを含むスケジューリングをすることに問題はない。この場合、コンパイラをそのような制約条件なしで作動するように構成してもよい。これによって、実行速度やコードサイズを低下させる制約条件が取り除かれる。さらに、この場合、モード切換を、ジャンプ発生前に適用されていたモードでは利用できなかった結果レジスタへの書き込みを実現するために利用してもよい。ジャンプ命令の後ろで選択された処理コードについての処理のオペランドレジスタアドレスを含むスケジューリングについても同様である。
一実施の形態では、コンパイラは、プログラム部分の処理を実行する命令の後に、まだ結果が書き込みされていないものについて、処理結果のリストを生成する。これらの結果が利用可能になる命令サイクルのしるしを、このリストに追加してもよい。このリストは第3ステップ63に送られ、コンパイラが、異なる命令モード用にコンパイルされた次のプログラム部分のための命令に、これらの結果の宛先アドレスを含めることができようにする。スケジューリングステップ(第4ステップ64)を実行する際に、コンパイラはリスト上の結果のための命令を選択する。
一実施の形態では、命令モード変更が起こるプログラムの移行ポイントの直前および直後の命令について特に注目する。この実施の形態における第3ステップ63では、コンパイラは、第1の命令モードにおいて命令への配置用の処理コードのサーチを、移行ポイントの前の所定の距離内に制限する。移行ポイントの後に適用される第2の命令モードのための、命令における利用可能スペースまたはアドレッシング可能な「フリー」レジスタの利用可能性によって、選択が制限される。したがって、例えば、第2の命令モードが、より多くの結果レジスタアドレスもしくはより多数のアドレッシング可能なレジスタを有する場合は、コンパイラは移行ポイント前の所定の距離内において命令に対する上記制限を緩める。別の例では、第2の命令モードが、より少ない結果レジスタアドレスもしくはより少数のアドレッシング可能なレジスタを有する場合は、コンパイラは移行ポイント前の所定の距離内において命令に対する上記制限を厳しくする。
別の例では、ジャンプ命令の前に処理を開始する標準的な手法を利用することで、シングルモードの制約条件を緩めることができる。サブルーチンからのリターンの場合は、例えば、標準的な手法として、サブルーチン結果につながる処理を、サブルーチンからのリターンに対応するブランチに対して所定のオフセットを設けて開始させてもよい。この場合、制御がリターンする呼出コードは、サブルーチン結果のための結果レジスタのアドレスの選択を含んでもよい。これにより、標準サブルーチン結果レジスタを確保しておく必要がないので、レジスタの利用効率が向上する。より一般的に、プログラムの別々の部分からジャンプターゲットに到達できる場合、これらの全ての部分が、分岐が起こる命令サイクルに対して同じ命令サイクルにおいて結果を生成する処理を開始するという手法を利用してもよい。この場合、プログラムのターゲット部分は、結果レジスタアドレスを選択する命令を含んでもよい。従って、スケジューリングに対する制約をより小さくするようにコンパイラを構成することができる。さらに、これにより、異なるモードにおける結果レジスタのアドレッシングと処理コード選択が許容される。サブルーチンへのジャンプ発生後に処理コードが選択された処理についてのオペランドレジスタアドレスを含むスケジューリングについても同様である。これにより、引数レジスタをリザーブすることなく、サブルーチン引数を渡すことができる。
一実施の形態では、コンパイラは、関連サブルーチン命令からのリターンに対して第1の所定位置で、サブルーチン結果を生成する処理の選択をスケジュールし、当該サブルーチン命令へのジャンプに対して第2の所定位置で、結果レジスタアドレスのアドレッシングをスケジュールするように構成される。第1および第2の位置は、処理結果が、アドレス指定された結果レジスタで利用可能となるように選択される。コンパイラは、異なるサブルーチンにおいて上記所定位置セットが異なるように構成してもよい。同様の所定位置セットを、サブルーチン命令へのジャンプ発生前にオペランドレジスタのアドレッシングをするために、また、サブルーチンにおける処理の選択のために利用してもよい。
別の実施の形態では、コンパイラは、中間結果をレジスタファイルに書き込んだり読み出したりする必要なく、結果を一方から他方へ渡す連結処理をスケジューリングするように構成される。この場合、コンパイラは、連結命令の間に別の命令がスケジューリングされて連結を妨げてしまわないように、追加の制約を課す。この場合、レジスタアドレッシングのスケジューリングが少なくてすみ、不要な結果の書き込みが必要なくなる。

Claims (7)

  1. 複数の機能ユニット(20)を有する実行回路(18)と、
    前記実行回路(18)に接続され、連続して実行される命令に応じて前記実行回路(18)を制御する命令デコーダ(17)と、
    前記命令デコーダ(17)に接続されるモード制御回路(12)とを備え、
    前記命令デコーダ(17)は、少なくとも第1および第2の命令モードで動作可能で、前記第1の命令モードで実行される命令は、各フィールドで前記機能ユニット(20)のそれぞれを制御する命令を含み、前記第2の命令モードで実行される命令は、それぞれ、前記複数の機能ユニット(20)のサブセットを制御する1つ以上のフィールドのみを含み、
    前記モード制御回路(12)は、ジャンプコマンドの実行によって得られた命令モード選択情報に応じた命令モードを選択する選択制御であって、前記ジャンプコマンドに続いて実行される複数の命令のための命令モードの選択制御を行うように構成され、
    前記機能ユニット(20)に接続されるレジスタセット(19)をさらに備え、
    前記命令デコーダ(17)は、処理を選択するためのフィールドおよび処理結果の書き込み用の宛先レジスタを選択するためのフィールドについて、タイムステーショナリデコーディングを利用するよう構成されており、
    前記第1および第2の命令モードにおける命令は、宛先レジスタを選択するためのそれぞれ異なる数のフィールドを有することを特徴とするデータ処理回路。
  2. 請求項1に記載のデータ処理回路において、
    前記第1および第2の命令モードで実行される前記命令は、互いに異なる長さを有することを特徴とするデータ処理回路。
  3. 請求項2に記載のデータ処理回路において、
    プログラムカウンタレジスタ(40)と、前記プログラムカウンタレジスタ(40)とメモリアドレスポートとの間に接続された命令モード依存シフト回路(400)とを有するシーケンサ(10)をさらに備え、
    前記命令モード依存シフト回路(400)は、前記モード制御回路(12)に接続されるシフト制御入力部を有することを特徴とするデータ処理回路。
  4. 請求項2に記載のデータ処理回路において、
    プログラムカウンタレジスタ(40)と、命令モード依存プログラムカウンタインクリメント回路(42)とを有するシーケンサ(10)をさらに備え、
    前記命令モード依存プログラムカウンタインクリメント回路(42)は、前記モード制御回路(12)に接続されるインクリメントサイズ制御入力部を有することを特徴とするデータ処理回路。
  5. 請求項2に記載のデータ処理回路において、
    前記命令デコーダ(17)は、少なくとも第3の命令モードで動作可能であり、
    前記第3の命令モードで実行される命令は、前記第2の命令モードで実行される命令の長さと同じであり、
    前記命令デコーダ(17)は、前記第2および第3の命令モードによる命令によってそれぞれ、前記機能ユニット(20)の互いに異なる部分を制御し、および/またはレジスタセット(19)の互いに異なる範囲を選択するよう構成されていることを特徴とするデータ処理回路。
  6. 複数の処理を並列に実行可能な複数の機能ユニット(20)を備えた実行回路(18)と、前記複数の機能ユニットに接続されるレジスタセット(19)と、命令デコーダ(17)と、第1および第2の命令モードにおける命令とを用いたデータ処理方法であって、
    前記命令デコーダ(17)は、前記実行回路(18)を制御するために、前記実行回路(18)に接続され、
    前記命令デコーダは、処理を選択するためのフィールドおよび前記処理の結果を書き込むための宛先レジスタを選択するためのフィールドのタイムステーショナリデコーディングを利用し、前記第1および第2の命令モードにおける命令は、それぞれ異なる数の、宛先レジスタを選択するためのフィールドを有し、
    前記データ処理方法は、
    複数の命令の1つからジャンプコマンドを実行し、
    前記ジャンプコマンドの実行によって得られた情報による制御の下、前記命令デコーダにより前記第1または第2の命令モードを選択し、
    前記ジャンプコマンドの実行に続く命令に、前記選択された命令モードを適用し、
    第1の命令モードが適用されるときは、前記複数の機能ユニット(20)の各ユニットが、実行される1つの命令のそれぞれのフィールドを利用するように制御され、
    前記第2の命令モードが適用されるときは、実行される命令に対応する前記複数の機能ユニットのサブセットのみを制御することを特徴とするデータ処理方法。
  7. プログラマブルなデータプロセッサの処理スケジューリング方法であって、
    前記データプロセッサは、複数の異なる命令モードにおいて動作可能であり、複数の処理を並列に実行可能な複数の機能ユニット(20)を有する実行回路(18)と、前記複数の機能ユニットに接続されるレジスタセット(19)と、前記実行回路(18)を制御するために、前記実行回路(18)に接続される命令デコーダ(17)とを備え
    前記命令デコーダは、処理を選択するためのフィールドおよび前記処理の結果を書き込むための宛先レジスタを選択するためのフィールドのタイムステーショナリデコーディングを利用し、第1および第2の命令モードにおける命令は、それぞれ異なる数の、宛先レジスタを選択するためのフィールドを有し、
    前記処理スケジューリング方法は、
    処理を定義する入力プログラムを受け取り、前記入力プログラムの各部分に命令モードを割り当て、各々の命令が前記入力プログラムに定義された複数の処理のうちの1つ以上の処理を含む複数の命令を生成し、
    前記第1の命令モードが割り当てられた前記入力プログラムの部分に定義された処理の少なくとも一部の処理のために生成された命令に含まれる処理の数を、前記命令モードのうちの第2の命令モードが割り当てられた前記入力プログラムの部分に定義された処理の少なくとも一部の処理のために生成された命令に含まれる処理の数よりも多くし、
    命令モードの変更が前記各部分の間の境界で実行されるように、ジャンプコマンドをターゲットプログラムの命令の中に挿入し、
    前記ジャンプが実行されるときに前記第1の命令モードと前記第2の命令モードの選択を制御するように、割り当てられた命令モードに依存する情報をジャンプコマンドを含む命令に含めることを特徴とする処理スケジューリング方法。
JP2009527311A 2006-09-06 2007-09-06 複数の命令モードを有するデータ処理回路、データ回路の処理方法、およびデータ回路のスケジューリング方法 Expired - Fee Related JP5388851B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06120236 2006-09-06
EP06120236.2 2006-09-06
PCT/NL2007/050434 WO2008030093A2 (en) 2006-09-06 2007-09-06 Data processing circuit with a plurality of instruction modes

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2013104864A Division JP5638108B2 (ja) 2006-09-06 2013-05-17 処理スケジューリング方法、コンピュータおよびコンピュータプログラム
JP2013104863A Division JP5638107B2 (ja) 2006-09-06 2013-05-17 データ処理回路

Publications (2)

Publication Number Publication Date
JP2010503107A JP2010503107A (ja) 2010-01-28
JP5388851B2 true JP5388851B2 (ja) 2014-01-15

Family

ID=38535383

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2009527311A Expired - Fee Related JP5388851B2 (ja) 2006-09-06 2007-09-06 複数の命令モードを有するデータ処理回路、データ回路の処理方法、およびデータ回路のスケジューリング方法
JP2013104864A Expired - Fee Related JP5638108B2 (ja) 2006-09-06 2013-05-17 処理スケジューリング方法、コンピュータおよびコンピュータプログラム
JP2013104863A Expired - Fee Related JP5638107B2 (ja) 2006-09-06 2013-05-17 データ処理回路

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2013104864A Expired - Fee Related JP5638108B2 (ja) 2006-09-06 2013-05-17 処理スケジューリング方法、コンピュータおよびコンピュータプログラム
JP2013104863A Expired - Fee Related JP5638107B2 (ja) 2006-09-06 2013-05-17 データ処理回路

Country Status (7)

Country Link
US (2) US8145888B2 (ja)
EP (1) EP2069912B1 (ja)
JP (3) JP5388851B2 (ja)
KR (4) KR101419668B1 (ja)
AT (1) ATE466331T1 (ja)
DE (1) DE602007006215D1 (ja)
WO (1) WO2008030093A2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010096119A1 (en) * 2008-10-29 2010-08-26 Adapteva Incorporated Variable instruction width digital signal processor
US8832475B1 (en) * 2009-05-10 2014-09-09 Cypress Semiconductor Corporation Programmable power mode sequencer
GB2474666B (en) * 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
KR101647818B1 (ko) * 2010-04-13 2016-08-12 삼성전자주식회사 멀티 코어 사이의 데이터 전송 장치 및 방법
US20130061213A1 (en) * 2011-08-26 2013-03-07 Cognitive Electronics, Inc. Methods and systems for optimizing execution of a program in a parallel processing environment
US10055227B2 (en) 2012-02-07 2018-08-21 Qualcomm Incorporated Using the least significant bits of a called function's address to switch processor modes
US9477834B2 (en) 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US9116711B2 (en) 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US9213828B2 (en) 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US10210349B2 (en) 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain
GB2501343A (en) * 2012-02-08 2013-10-23 Advanced Risc Mach Ltd Data processing apparatus and method using secure domain and less secure domain
KR102179385B1 (ko) * 2013-11-29 2020-11-16 삼성전자주식회사 명령어를 실행하는 방법 및 프로세서, 명령어를 부호화하는 방법 및 장치 및 기록매체
US20170185400A1 (en) 2015-12-23 2017-06-29 Intel Corporation Mode-specific endbranch for control flow termination
US9785800B2 (en) 2015-12-23 2017-10-10 Intel Corporation Non-tracked control transfers within control transfer enforcement
US10534610B2 (en) 2016-07-20 2020-01-14 International Business Machines Corporation PC-relative addressing and transmission
GB2553010B (en) * 2017-01-16 2019-03-06 Imagination Tech Ltd Efficient data selection for a processor
CN111209231B (zh) * 2018-11-21 2021-05-11 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
CN111079908B (zh) * 2018-10-18 2024-02-13 上海寒武纪信息科技有限公司 片上网络数据处理方法、存储介质、计算机设备和装置
CN111210012B (zh) * 2018-11-21 2022-12-09 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
EP4009183A1 (en) 2018-10-18 2022-06-08 Shanghai Cambricon Information Technology Co., Ltd Network-on-chip data processing method and device
CN114020330B (zh) * 2021-11-04 2023-11-03 苏州睿芯集成电路科技有限公司 Risc-v处理器验证中模式切换的方法、电子设备以及存储介质
WO2024028565A1 (en) * 2022-08-05 2024-02-08 Arm Limited No-operation-compatible instruction
CN117714711B (zh) * 2024-02-05 2024-04-30 北京象帝先计算技术有限公司 解码方法、解码系统、电子设备及可读存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US6189090B1 (en) * 1997-09-17 2001-02-13 Sony Corporation Digital signal processor with variable width instructions
US6401196B1 (en) * 1998-06-19 2002-06-04 Motorola, Inc. Data processor system having branch control and method thereof
JP3616556B2 (ja) * 1999-06-29 2005-02-02 株式会社東芝 拡張命令を処理する並列プロセッサ
TW525091B (en) * 2000-10-05 2003-03-21 Koninkl Philips Electronics Nv Retargetable compiling system and method
EP1340142A2 (en) * 2000-11-27 2003-09-03 Koninklijke Philips Electronics N.V. Data processing apparatus with many-operand instruction
US7225446B2 (en) * 2001-02-20 2007-05-29 Pts Corporation Context preservation
JP2002280415A (ja) 2001-03-16 2002-09-27 Matsushita Electric Ind Co Ltd 半導体装置
KR100991700B1 (ko) 2002-08-16 2010-11-04 코닌클리케 필립스 일렉트로닉스 엔.브이. 처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체
EP1627299A2 (en) 2003-04-16 2006-02-22 Koninklijke Philips Electronics N.V. Support for conditional operations in time-stationary processors

Also Published As

Publication number Publication date
WO2008030093A2 (en) 2008-03-13
JP5638108B2 (ja) 2014-12-10
US20100185835A1 (en) 2010-07-22
KR20130109251A (ko) 2013-10-07
KR101419668B1 (ko) 2014-07-15
JP2013218710A (ja) 2013-10-24
JP2013218711A (ja) 2013-10-24
KR101306354B1 (ko) 2013-09-09
WO2008030093A3 (en) 2008-05-02
KR20130087569A (ko) 2013-08-06
EP2069912B1 (en) 2010-04-28
US8145888B2 (en) 2012-03-27
KR101398770B1 (ko) 2014-05-27
US20120179894A1 (en) 2012-07-12
KR20130087568A (ko) 2013-08-06
US8838945B2 (en) 2014-09-16
KR20090092753A (ko) 2009-09-01
JP2010503107A (ja) 2010-01-28
ATE466331T1 (de) 2010-05-15
DE602007006215D1 (de) 2010-06-10
EP2069912A2 (en) 2009-06-17
JP5638107B2 (ja) 2014-12-10
KR101326414B1 (ko) 2013-11-11

Similar Documents

Publication Publication Date Title
JP5388851B2 (ja) 複数の命令モードを有するデータ処理回路、データ回路の処理方法、およびデータ回路のスケジューリング方法
US8161266B2 (en) Replicating opcode to other lanes and modifying argument register to others in vector portion for parallel operation
US5958048A (en) Architectural support for software pipelining of nested loops
JP3976082B2 (ja) 異なった幅のvliwプロセッサコマンド
US6615333B1 (en) Data processing device, method of executing a program and method of compiling
US6453407B1 (en) Configurable long instruction word architecture and instruction set
US8935515B2 (en) Method and apparatus for vector execution on a scalar machine
US5649135A (en) Parallel processing system and method using surrogate instructions
US7509483B2 (en) Methods and apparatus for meta-architecture defined programmable instruction fetch functions supporting assembled variable length instruction processors
US20060174089A1 (en) Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
US20140075157A1 (en) Methods and Apparatus for Adapting Pipeline Stage Latency Based on Instruction Type
KR101579589B1 (ko) 파이프라인 프로세서를 위한 정적 분기 예측 방법과 이를 위한 컴파일 방법
US6292845B1 (en) Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
US20060095746A1 (en) Branch predictor, processor and branch prediction method
KR20030007480A (ko) 컴퓨터 시스템 및 컴퓨터 프로그램
JP2002024008A (ja) データ処理装置およびプログラム変換装置
JP5105359B2 (ja) 中央処理装置、選択回路および選択方法
US20230015163A1 (en) Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof
WO1998006040A1 (en) Architectural support for software pipelining of nested loops

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100831

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20120831

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121120

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130219

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130226

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130315

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130325

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130418

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130903

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131008

R150 Certificate of patent or registration of utility model

Ref document number: 5388851

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

LAPS Cancellation because of no payment of annual fees