JP5638107B2 - データ処理回路 - Google Patents

データ処理回路 Download PDF

Info

Publication number
JP5638107B2
JP5638107B2 JP2013104863A JP2013104863A JP5638107B2 JP 5638107 B2 JP5638107 B2 JP 5638107B2 JP 2013104863 A JP2013104863 A JP 2013104863A JP 2013104863 A JP2013104863 A JP 2013104863A JP 5638107 B2 JP5638107 B2 JP 5638107B2
Authority
JP
Japan
Prior art keywords
instruction
mode
register
program
result
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
JP2013104863A
Other languages
English (en)
Other versions
JP2013218710A (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 JP2013218710A publication Critical patent/JP2013218710A/ja
Application granted granted Critical
Publication of JP5638107B2 publication Critical patent/JP5638107B2/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に接続されている。モード制御回路1
2の出力部は、命令デコーダ17の制御入力部と接続されている。
作動中、シーケンサ10は、通常、連続する命令サイクルにおいてプログラムカウンタ
値をインクリメントし、また、ジャンプ命令が実行ユニット18で実行されると、成功し
たジャンプ命令に応じてプログラムカウンタ値を変更しながら、プログラムカウンタ値を
維持する。シーケンサ10は、命令モード選択を制御するためにモード制御回路12に信
号を供給する。
プログラムカウンタ値の少なくとも一部は、命令メモリ14の命令をアドレス指定する
ために使用される。命令メモリ14は、アドレス指定された命令を読出して命令レジスタ
16に供給する。命令は、実行制御のために命令レジスタに保存される。命令メモリ14
を、単純なメモリから構成することも可能であるが、命令メモリ14を階層メモリ回路と
して、利用されると予測される命令を蓄えておくための複数レベルのキャッシュを有する
ように構成してもよい。
命令レジスタ16は、命令デコーダ17に命令を連続的に供給する。モード制御回路1
2は、モード制御信号を命令デコーダ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とプログラムカウンタレジスタ4
0の出力部に接続される入力部、および、命令メモリ(不図示)のイネーブル入力部に接
続される出力部を有する。
モード制御回路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 0005638107
各横列は、異なる命令を示し、異なる縦列は命令における異なるフィールドを示してい
る。
連続した横列の命令は、連続的に実行される。OP1、OP2、OP3、OP4、および
JMPはオペレーションレジスタ選択コードである。A11、A12、A13、A14、
A23、A24、A31、A41はオペランド選択コードである。R11、R12、R2
2、および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 0005638107
ここで、第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. レジスタセット(19)と、
    前記レジスタセットと接続される実行回路(18)と、
    前記実行回路(18)に接続され、前記実行回路(18)によって実行される処理を選択することと、以前に実行された命令によって選択された処理が前記実行回路(18)によって実行されて結果が生成された時に、処理結果を書き込むための宛先レジスタを前記レジスタセット(19)から選択することとについて、タイムステーショナリデコーディングを利用するよう構成された命令デコーダ(17)と、
    前記命令デコーダ(17)に接続されるモード制御回路(12)とを備え、
    前記命令デコーダ(17)は、少なくとも第1および第2の命令モードで動作可能であり、前記第1および第2の命令モードにおいて実行される命令は、互いに異なる数のアドレッシング可能な宛先レジスタを指定し、
    前記モード制御回路(12)は、プログラム実行中に、命令に応答して前記命令モード間での切換えを制御するよう構成されていることを特徴とするデータ処理回路。
  2. 請求項1に記載のデータ処理回路において、
    前記第1および第2の命令モード間での切換を行うための切換命令を含むプログラムがプログラミングされた命令メモリ(14)を備え、
    各切換命令は、前記切換命令が実行される前および後にそれぞれ実行されるプログラムの第1および第2の部分の間で、境界を定義し、
    前記プログラムの第1の部分には、対応する前記プログラムの第2の部分からの命令によって選択される宛先レジスタに結果が書き込まれる処理を選択する命令は含まれないことを特徴とするデータ処理回路。
  3. 請求項1に記載のデータ処理回路において、
    前記第1の命令モードにおいて実行され、処理の選択のための第1のフィールドを含む第1の命令と、前記第2の命令モードにおいて実行され、前記第1の命令によって選択された前記処理の結果を、その結果の生成の際に書き込むための宛先レジスタを選択するための第2のフィールドを含む第2の命令とを有するプログラムがプログラミングされた命令メモリ(14)を備えることを特徴とするデータ処理回路。
  4. 請求項3に記載のデータ処理回路において、
    前記モード制御回路は、前記プログラムのうちジャンプコマンドに続く命令について、前記ジャンプコマンドの実行によって得られた命令モード選択情報に応じて、前記第1または第2の命令モードの選択を制御するよう構成され、
    前記第1および第2の命令は、それぞれ、前記プログラムにおいて前記ジャンプコマンドが実行されるポイントの前および後に、配置されることを特徴とするデータ処理回路。
  5. 請求項4に記載のデータ処理回路において、
    前記プログラムにおいて前記ジャンプコマンドのターゲットは、前記プログラムに含まれる前記ジャンプコマンドを介してのみ到達できることを特徴とするデータ処理回路。
  6. 請求項1に記載のデータ処理回路において、
    前記実行回路は、複数の機能ユニット(20)を備え、
    前記命令デコーダ(17)は、前記第1の命令モードで実行される各命令から、各機能ユニットからの結果を前記結果の生成の際に書き込むための宛先レジスタアドレスを選択するための第1のフィールドを抽出するように構成され、
    前記命令デコーダ(17)は、前記第2の命令モードで実行される各命令から、前記各機能ユニットのサブセットのみからの結果を前記結果の生成の際に書き込むための宛先レジスタアドレスを選択するための1つ以上の第3のフィールドを抽出するように構成されることを特徴とするデータ処理回路。
  7. 請求項1に記載のデータ処理回路において、
    前記命令デコーダ(17)は、前記第1および第2の命令モードの命令から、それぞれ宛先レジスタアドレスを選択するための第1および第2のフィールドを抽出するように構成され、
    前記第1および第2のフィールドは、それぞれアドレッシング可能レジスタの第1および第2の範囲にあるレジスタを指定するために用いることが可能であり、
    前記第2の範囲は、前記第1の範囲に含まれないレジスタを含むことを特徴とするデータ処理回路。
JP2013104863A 2006-09-06 2013-05-17 データ処理回路 Expired - Fee Related JP5638107B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP06120236 2006-09-06
EP06120236.2 2006-09-06

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009527311A Division JP5388851B2 (ja) 2006-09-06 2007-09-06 複数の命令モードを有するデータ処理回路、データ回路の処理方法、およびデータ回路のスケジューリング方法

Publications (2)

Publication Number Publication Date
JP2013218710A JP2013218710A (ja) 2013-10-24
JP5638107B2 true JP5638107B2 (ja) 2014-12-10

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 Before (2)

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 処理スケジューリング方法、コンピュータおよびコンピュータプログラム

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
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
US10210349B2 (en) 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain
GB2499287A (en) * 2012-02-08 2013-08-14 Advanced Risc Mach Ltd Exception handling in data processing with different security domains
US9477834B2 (en) 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
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
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
CN111079908B (zh) * 2018-10-18 2024-02-13 上海寒武纪信息科技有限公司 片上网络数据处理方法、存储介质、计算机设备和装置
EP4009186A1 (en) 2018-10-18 2022-06-08 Shanghai Cambricon Information Technology Co., Ltd Network-on-chip data processing method and device
CN111210012B (zh) * 2018-11-21 2022-12-09 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
CN111209231B (zh) * 2018-11-21 2021-05-11 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
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 코닌클리케 필립스 일렉트로닉스 엔.브이. 처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체
JP4828409B2 (ja) 2003-04-16 2011-11-30 シリコン ハイブ ビー・ヴィー タイムステーショナリプロセッサにおける条件動作のためのサポート

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5638107B2 (ja) データ処理回路
US5958048A (en) Architectural support for software pipelining of nested loops
US8161266B2 (en) Replicating opcode to other lanes and modifying argument register to others in vector portion for parallel operation
US6615333B1 (en) Data processing device, method of executing a program and method of compiling
KR0149658B1 (ko) 데이터 처리장치 및 데이터 처리방법
JP3976082B2 (ja) 異なった幅のvliwプロセッサコマンド
US6453407B1 (en) Configurable long instruction word architecture and instruction set
US9672033B2 (en) Methods and apparatus for transforming, loading, and executing super-set instructions
US8266410B2 (en) Meta-architecture defined programmable instruction fetch functions supporting assembled variable length instruction processors
EP1019794A2 (en) Data processing device for processing virtual machine instructions
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
JP2002024008A (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
JP5105359B2 (ja) 中央処理装置、選択回路および選択方法
JP2006502490A (ja) アドレス範囲に依存した命令並行処理を行うデータ処理装置
WO1998006040A1 (en) Architectural support for software pipelining of nested loops

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140909

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141021

R150 Certificate of patent or registration of utility model

Ref document number: 5638107

Country of ref document: JP

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

LAPS Cancellation because of no payment of annual fees