(57)【要約】データ処理装置は、命令アドレスによってアドレス指定される命令ワードを出力するようになっている命令メモリシステムを有している。命令実行ユニットは、命令ワードからの複数の命令を並行して処理する。検出ユニットは、複数の範囲のうちのどの範囲に命令アドレスが存在するかを検出する。検出ユニットは、命令実行ユニットおよび／または命令メモリシステムに結合され、検出された範囲に応じて命令ワードからの複数の命令を命令実行ユニットが並行して処理する方法を制御する。一実施形態において、命令実行ユニットおよび／または命令メモリシステムは、検出された範囲に応じて、並行に処理される命令ワードからの命令の数を決定する命令ワードの幅を調整する。
2006502490.tif 000002
【特許請求の範囲】
【請求項１】
命令アドレスを出力するための命令アドレス生成回路と、
前記命令アドレスによってアドレス指定された命令ワードを出力する命令メモリシステムと、
前記命令ワードからの複数の命令を並行して処理する命令実行ユニットと、
複数の範囲のうちのどの範囲に前記命令アドレスが存在するかを検出する検出ユニットであって、前記命令実行ユニットおよび／または前記命令メモリシステムに結合され、検出された範囲に応じて前記命令ワードからの複数の命令を前記命令実行ユニットが並行して処理する方法を制御する検出ユニットと、
を備えた、データ処理装置。
【請求項２】
前記命令実行ユニットおよび／または前記命令メモリシステムは、前記検出された範囲に応じて、並行に処理される前記命令ワードからの命令の数を決定する命令ワードの幅を調整する、請求項１に記載のデータ処理装置。
【請求項３】
前記命令実行ユニットが複数の機能ユニットを備え、前記命令実行ユニットは、前記検出された範囲に応じて、前記命令を処理するために利用できる機能ユニットの一部を選択する、請求項１に記載のデータ処理装置。
【請求項４】
前記命令実行ユニットが複数の機能ユニットを備え、前記命令実行ユニットは、前記検出された範囲に応じて、複数の機能ユニットまたは機能ユニットのセットから成る複数の機能ユニット群がそれぞれ前記命令ワードからの対応する命令を受けたかどうか、或いは前記命令ワードからの共有の命令を受けたかどうかを選択する、請求項１に記載のデータ処理装置。
【請求項５】
前記命令メモリシステムは第１のメモリユニットおよび第２のメモリユニットを備え、これらのメモリユニットは、長さが異なる命令ワードのために第１および第２の幅単位のアドレス可能な記憶場所を有する記憶域に、第１および第２の範囲におけるアドレスをそれぞれ与え、前記第１および第２の幅単位が互いに異なっている、請求項２に記載のデータ処理装置。
【請求項６】
プログラムを実行するようにプログラミングされ、前記第１のメモリユニット内には前記プログラムの内側ループからの比較的長い命令ワードが記憶され、前記第２のメモリユニット内には前記内側ループの外側にある前記プログラムの大部分からの比較的短い命令ワードが記憶され、前記第１の幅単位が前記第２の幅単位よりも長い、請求項５に記載のデータ処理装置。
【請求項７】
前記検出された範囲に応じて前記命令アドレスを前記第１のメモリユニット上または前記第２のメモリユニット上にマッピングするメモリマッピングユニットを備えている、請求項５に記載のデータ処理装置。
【請求項８】
前記命令メモリシステムは、前記第２の範囲にあるアドレスが検出されると、前記第１のメモリユニットに対するクロック信号の供給を無効にする、請求項５に記載のデータ処理装置。
【請求項９】
前記命令メモリシステムは、アドレス範囲からアドレスが検出されるメモリユニットを除く全てのメモリユニットに対するクロック信号の供給を無効にする、請求項５に記載のデータ処理装置。
【請求項１０】
前記命令メモリシステムが複数のメモリユニットを備え、各メモリユニットは対応する範囲の命令アドレスに応答し、前記命令メモリシステムが各範囲の部分的な重なり合いを許容し、前記命令メモリシステムは、対応する範囲内に命令アドレスが存在するメモリユニットの命令ワードからの命令の組み合わせとして命令ワードを供給する、請求項２に記載のデータ処理装置。
【請求項１１】
前記命令メモリシステムは、前記命令アドレスが前記メモリユニットのうちの少なくとも１つの対応する範囲内にない場合には、当該少なくとも１つのメモリユニットへのクロック信号の供給を無効にする、請求項１０に記載のデータ処理装置。
【請求項１２】
前記命令実行ユニットが１または複数の機能ユニットから成る複数のグループを備え、各グループは、対応する所定のメモリユニットに結合されることにより、当該グループが結合される対応する所定のメモリユニットの対応する範囲内に命令アドレスがある時に前記命令ワードから命令を受ける、請求項１０に記載のデータ処理装置。
【請求項１３】
前記命令実行ユニットは、第１の長さを有する命令または第１の長さと異なる第２の長さを有する命令を選択的に処理することができ、前記第１および第２の命令は少なくとも部分的に命令ワードの同じ場所から得られ、前記第１または第２の命令の実行は、前記命令ワードがフェッチされる命令アドレスの検出された範囲に応じて選択される、請求項３に記載のデータ処理装置。
【請求項１４】
請求項１に記載のデータ処理装置をプログラミングする方法であって、
−  前記装置のための機械語命令から成るプログラムを形成し、
−  前記プログラムの内側ループを特定し、
−  前記命令メモリシステム内に前記プログラムをロードすることにより、前記内側ループからの命令を、前記装置が他のアドレス範囲よりも高い並行度を与えるアドレス範囲にある命令アドレスをもつ記憶場所にロードする、方法。
【請求項１５】
データ処理装置を用いてプログラムを実行する方法であって、
命令アドレスを使用して命令ワードをフェッチし、
フェッチされた命令ワードからの命令を実行し、
複数ある範囲のうちのどの範囲内に前記命令アドレスが存在しているかを検出し、
命令の実行が並行して成される方法を、検出された範囲に応じて制御する、方法。
【請求項１６】
前記フェッチされた命令ワードの幅を前記検出された範囲に応じて適合させることを含む、請求項１５に記載の方法。
【請求項１７】
前記命令を実行するために使用される装置の機能ユニットの選択を前記検出された範囲に応じて変更することを含む、請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令ワードからの複数の命令を並行して実行することができるＶＬＩＷ（超長命令語）プロセッサ等のデータ処理装置に関する。
【背景技術】
【０００２】
ＶＬＩＷプロセッサによれば、高い命令並行度をもってプログラムを実行することができる。従来、各命令サイクルにおいて、ＶＬＩＷプロセッサは、複数の所定の数の命令（多くの場合、操作（動作）と呼ばれる）を含む命令ワードをフェッチする。ＶＬＩＷプロセッサは、これらの操作を同じ命令サイクル（または複数のサイクル）内で並行して実行する。この目的のため、ＶＬＩＷプロセッサは複数の機能ユニットを有しており、各機能ユニットは命令ワードからの操作のうちの１つを同時に実行することができる。ＡＬＵ（演算論理回路）、乗算器、ブランチ制御ユニット、メモリアクセスユニット等の様々な種類の機能ユニットが一般的に設けられる。多くの場合、特定のアプリケーション用のプログラムの速度を上げるように形成された専用の機能ユニットも含まれる。したがって、例えばＭＰＥＧエンコーディングまたはデコーディングの一部を実行するための機能ユニットが加えられても良い。
【０００３】
しかしながら、プログラムの大部分においては、全ての命令サイクルで全ての機能ユニットに対して操作を供給することができない。これは、例えば全ての機能ユニット内で操作を開始するために不十分なデータしか利用できない場合に生じる。この場合、命令が利用できない機能ユニットのために命令ワード中に「ノーオペレーション」命令が含まれていなければならない。そのような命令ワードを命令メモリ内に維持しなければならない場合には、それによりメモリが過度に使用される。
【０００４】
このようなメモリの過度の使用を減らすために、幾つかの手段が提案されてきた。例えば、他の命令よりも効率的にノーオペレーション命令をエンコードすることにより命令が圧縮されても良い。しかしながら、これでは、依然として、メモリオーバーヘッドを伴い、プロセッサの速度が低下する可能性がある。他の開発においては、複数の機能ユニットから成るクラスタのために命令ワード中の領域を使用することにより、クラスタ中の任意の１つの機能ユニットが命令サイクル毎に上記領域から命令を取得できるようにすることが知られている。このようにすると、複数の機能ユニットのために命令ワードが１つの領域しか含まないため、命令ワードのサイズが減少するが、並行性の最大レベルも下がってしまう。
【０００５】
米国特許第５，７７４，７３７号は、１つのＶＩＬＷプロセッサが長さの異なる複数の命令を使用できることについて記載している。命令は、その長さを示すための長さコードを含んでいても良い。または、現在の長さを示す命令長レジスタが使用されても良い。機能ユニットは、命令長レジスタ内の長さの値によって表わされる数の命令を実行する。現在の長さを設定することにより、プログラムの様々な部分で許容される並行レベルに命令の長さを適合させることができる。しかしながら、現在の長さを設定することは、更なる命令の実行を伴う。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特に、本発明の目的は、命令ワードからの複数の命令を並行して実行することができるプロセッサの記憶効率を向上させることである。
【０００７】
特に、本発明の更なる目的は、メモリを過度に使用することなく専用の機能ユニットの使用を容易にすることである。
【課題を解決するための手段】
【０００８】
本発明に係る処理装置は請求項１に記載されている。本発明において、命令ワードがフェッチされるアドレス範囲の検出は、命令実行ユニットが命令ワードからの命令を並行して処理する方法を決定するために使用される。
【０００９】
一実施形態において、例えば、命令ワードの長さは、そのアドレスが属する範囲によって決まる。したがって、命令実行ユニットは、プログラムの内側ループからの命令を示すアドレス範囲から命令ワードがくる場合には、比較的多くの命令を含む比較的長い命令ワードとして命令メモリからの情報を処理することができ、また、命令ワードが他のアドレス範囲からくる場合には、比較的少ない命令を含む比較的短い命令ワードとして情報を処理することができる。そのため、内側ループにおいて高い並行性を実現することができるとともに、内側ループの外側で高い記憶効率を実現することができ、命令ワードが内側ループ内に送られ或いは内側ループから送出される際に命令ワード長を変更するための明示的な命令を必要としない。
【００１０】
更なる実施形態において、命令メモリシステムは、フェッチされた命令ワードの幅をアドレス範囲に応じて調整するようになっている。異なるタイプのメモリ、例えば速度が異なるメモリが、異なる範囲において使用されても良い。命令メモリの一部に対するクロック信号の供給は、命令アドレスが命令メモリの上記一部に対してマッピングする範囲内にない場合に無効にされることが好ましい。
【００１１】
他の実施形態において、命令実行ユニットは、命令ワードからの異なる命令を実行するための複数の機能ユニットを有している。この実施形態においては、命令ワードが読み取られるアドレス範囲に応じて、機能ユニットのうちの異なる幾つかが選択され、命令ワードからの命令が実行される。したがって、命令ワードからの命令は、一方のアドレス範囲の専用の機能ユニットのための命令として処理されても良く、また、他方のアドレス範囲の他の機能ユニットのための命令として処理されても良い。例えば、ＭＰＥＧデコーディングおよびエンコーディングは典型的にプログラムの特定の部分に制限されるため、そのようなデコーディングおよびエンコーディングの目的に専用の機能ユニットはプログラムのその特定の部分においてのみ必要とされる。アドレス範囲に基づいてこれらの機能ユニットを選択することにより、どの機能ユニットが命令を処理すべきかを選択するために命令ワードの幅を増大する必要がなくなる。
【００１２】
更なる実施形態において、機能ユニットは、幅が異なる命令を使用しても良い。したがって、ＡＬＵ機能ユニットのための命令は、操作指示、２つのオペランドレジスタの指示、結果レジスタの指示を含んでいても良い。これに対し、専用の機能ユニットのための命令は、４つのオペランドレジスタおよび２つの結果レジスタの指示を含んでいても良い。アドレス範囲に応じて命令ワード中の命令の幅が適合されても良い。
【発明を実施するための最良の形態】
【００１３】
以下、図面を使用しながら、本発明に係る装置および方法のこれらの目的および他の目的並びに有利な態様について更に詳細に説明する。
【００１４】
図１は、命令アドレスユニット１０と、命令メモリシステム１２と、命令実行ユニット１４と、アドレス範囲検出器１６とを有するデータ処理装置を示している。命令アドレスユニット１０は、命令メモリシステム１２に結合されたアドレス出力部を有している。命令メモリシステム１２は命令実行ユニット１４に結合された命令出力部を有している。命令実行ユニットは命令アドレスユニットに結合された出力部を有している。アドレス範囲検出器１６は、命令アドレスユニット１０のアドレス出力部に結合された入力部と、命令メモリシステム１２および命令実行ユニット１４の制御入力部１１に結合された出力部とを有している。
【００１５】
命令実行ユニット１４は、入力部１４０と、複数の機能ユニット１４２と、レジスタファイル１４４とを有している。入力部１４０は、命令メモリシステム１２と機能ユニット１４２との間に結合されている。アドレス範囲検出器１６は入力部１４０に結合されている。また、入力部１４０はレジスタファイル１４４に結合された選択出力部を有している。機能ユニット１４２は、レジスタファイル１４４に結合された入力部および出力部を有している。機能ユニットのうちの少なくとも１つは、命令アドレスユニット１０に結合された出力部を有するブランチ制御ユニットである。
【００１６】
動作時、装置は一連の命令サイクルで動作する。各命令サイクルにおいて、命令アドレスユニット１０は命令アドレスを命令メモリシステム１２に供給する。応答時、命令メモリシステム１２は、命令アドレスによってアドレス指定された命令ワードを検索するとともに、検索された命令ワードを命令実行ユニット１４に対して供給する。入力部１４０は、命令ワードからの演算選択コードを機能ユニット１４２に送るとともに、命令ワードからのレジスタ選択コードをレジスタファイル１４４の選択入力部に送る。レジスタファイル１４４は、レジスタ選択コードに応じて、レジスタファイル１４４内のレジスタからオペランドを検索するとともに、このデータを機能ユニット１４２に供給する。機能ユニット１４２は、演算選択コードに応じて、入力データとしてオペランドを使用することにより、選択された処理演算を行なうとともに、これらの演算結果をレジスタファイル１４４に供給する。レジスタファイル１４４は、これらの結果を、命令ワードからのレジスタ選択コードによって選択されたレジスタ内に記憶する。一般に、演算はパイプライン処理される。すなわち、命令アドレスに応じた様々な動作（命令の検索、オペランドの検索、処理、結果の記憶）が異なる命令サイクル中に実行され、この時、これらの動作のうちの他の動作が前の命令アドレスおよび／または後の命令アドレスのために行なわれる。
【００１７】
命令ワードの処理方法は、命令ワードの命令アドレスが存在するアドレス範囲によって決まる。１つの実施形態において、命令ワードの幅がアドレス範囲によって決まる。命令アドレスが第１の範囲にある場合、命令ワードからの第１の数の命令が機能ユニット１４２によって実行され、命令アドレスが第２の範囲にある場合、命令ワードからの第２の数の命令が機能ユニット１４２によって実行される。したがって、入力部１４０は、命令アドレスが存在する範囲を示す検出信号をアドレス範囲検出器１６から受け（必要に応じて、命令のアドレス指定と命令の供給との間でのパイプライン遅延に適するように多くの命令サイクルによって遅延される）、入力部１４０が取り出す範囲に応じて、命令ワードからの多数または少数の演算選択コードが信号と共に機能ユニットに対して供給され命令が実行される。
【００１８】
図２は、様々な長さの命令と共に使用するための命令メモリシステム１２の一実施形態を示している。命令メモリシステム１２は、複数のメモリユニット２０，２２と、マルチプレクサ２４と、クロックユニット２６と、クロックゲート回路２８ａ，２８ｂとを有している。命令メモリシステム１２のアドレス入力部２３は、メモリユニット２０，２２をアドレス指定するために少なくとも部分的に結合されている。第１のメモリユニット２０は、第２のメモリユニット２２のワードサイズよりも大きいワードサイズを有している（象徴的に、第１のメモリユニット２０は、その幅広い命令ワードサイズを表わすために第２のメモリユニット２２よりも幅広く示されており、一方、第２のメモリユニット２２は、それが多数の命令ワードのための記憶場所を有していることを表わすために第１のメモリユニット２０よりも高さが高くなるように示されている）。メモリユニット２０，２２の命令出力部はマルチプレクサ２４の入力部に結合されている。この場合、第２のメモリユニット２２の命令出力部は、デフォルト入力部２９（例えばノーオペレーション命令を供給する）と組み合わせてマルチプレクサ２４の入力部に結合されている。マルチプレクサ２４の出力部は命令実行ユニット１４（図示せず）に結合されている。クロックユニット２６は、対応するクロックゲート回路２８ａ，２８ｂをそれぞれ介して、メモリユニット２０，２２のクロック入力部に結合されている。アドレス範囲検出器１６の出力部は、マルチプレクサ２４の制御入力部とクロックゲート回路２８ａ，２８ｂの無効（ｄｉｓａｂｌｅ）入力部とに結合された命令メモリシステム１２の入力部１１に結合されている。
【００１９】
動作時、命令メモリシステム１２は、命令アドレスに応じて、命令ワードを命令実行ユニット１４に対して出力する。命令アドレスが第１の範囲にあることを検出器１６が示すと、マルチプレクサ２４は第１のメモリユニット２２から命令ワードを命令実行ユニット１４に対して出力する。命令アドレスが第２の範囲にあることを検出器１６が示すと、マルチプレクサ２４は第２のメモリユニット２２から命令ワードを命令実行ユニット１４に対して出力する。
【００２０】
典型的に、第１のメモリユニット２２は、プログラムの内側ループすなわち最も多い回数繰り返して実行されるプログラムの部分からの命令ワードを含んでいる。通常、そのような内側ループの命令ワードは、命令実行ユニット１４による並列実行を最も多く行なうことができるように最適化される。そのため、内側ループからの各命令ワードは、殆ど、比較的多くの数の機能ユニットのための命令を含んでいる。第２のメモリユニット２２は、あまり頻繁に実行されない内側ループの外側からの命令ワードを出力する。これらの命令ワードは、比較的少ない機能ユニットのための命令を含んでいる。したがって、第２のメモリユニット２２は、第１のメモリユニット２０よりも小さい命令ワードサイズを有しており、命令アドレスに応じて第１のメモリユニット２０よりも少ないビットを出力する。そのため、メモリ空間を非常に効率良く使用することができる。第１のメモリユニット２０は幅広い命令ワードを記憶し、これにより、内側ループ内での実行効率が高くなる。また、内側ループでの命令サイクルをより短くすることができるように、第１のメモリユニット２０が第２のメモリユニット２２よりも高速であっても良い。
【００２１】
基本的には、各メモリユニット２０，２２は、複数あるアドレス範囲のうちの対応する１つからのアドレスに対してだけ応答すれば済む。他のメモリユニットが応答する範囲のアドレスのためのメモリ空間が存在している必要はない。しかしながら、実際には、第２のメモリユニット２２も第１のメモリユニット２０の範囲のアドレスに対して応答しても良い。この範囲だけが内側ループを含んでいる場合には、これにより、メモリオーバーヘッドが殆ど生じず、第１のメモリユニット２０のアドレス範囲を第２のメモリユニット２２のメモリ空間の任意の場所に割り当てることができ、その結果、第２のメモリユニット２２は、このアドレス範囲の前後の両方にあるアドレスを簡単に与えることができるようになる。
【００２２】
命令アドレスがメモリユニット２０，２２の一方によってサポートされた範囲内にない場合、このメモリユニット２０，２２へのクロック供給が無効になることが好ましい。このようにすれば、電力消費量が減少する。一方で、内側ループからの命令ワードを実行している最中は、第２のメモリユニット２２に対してクロックを供給する必要はない。他方で、内側ループの外側からの命令を実行している最中は、第１のメモリユニット２０に対してクロックを供給する必要はない。対応するメモリユニット２０，２２が必要とされていない時にそのクロックを無効にするための回路をメモリユニット２０，２２の一方または両方に設けると、電力消費量を減少させることができる。
【００２３】
図２は２つのメモリを示しており、各メモリは命令アドレスによってアドレス指定される複数の記憶場所を有するとともに、これらの記憶場所はメモリに応じて異なる幅を有している。２つのメモリ２０，２２だけしか示されていないが、それ自体の幅およびそれ自体のアドレス範囲を有する更に多くの数のメモリを使用できることは言うまでもない。このようにすると、記憶場所の幅を、プログラムの様々な部分の要求に対して更に厳密に適合させることができる。
【００２４】
命令ワード中の命令の数を変えることこそが、アドレス範囲の検出を利用できる唯一の方法である。本発明の他の態様においては、入力部１４０が検出された範囲を使用していずれかの機能ユニット１４２を選択し、あるいは、一群の機能ユニットが命令ワードからの命令を実行する。最も基本的なＶＬＩＷプロセッサにおいて、命令ワードからの各命令は、機能ユニット１４２のうちの対応する１つへと送られる。これにより、高い並行性が得られるが、メモリ使用量が多くなってしまう。更に高性能なＶＬＩＷプロセッサにおいて、命令ワードからの各命令領域は、機能ユニット１４２の対応するグループのうちのプログラム可能な１つのための命令を含んでいても良い。この場合、命令ワード内のコードは、従来と同様に、グループの中のどの機能ユニットが命令を実行すべきかを決定する。この場合も、入力部１４０は、命令を実行しなければならない選択された機能ユニット１４２に対して信号を送る。他の更に高性能なＶＬＩＷプロセッサには、命令ワードの複数の領域からの情報を含む命令によってプログラムされる、いわゆる超機能ユニットが設けられる。この場合、これらの領域のそれぞれは、通常、別個の命令のために使用でき或いは使用されるようになっている。したがって、例えば異常に多くの数のオペランドを有する命令を伝えることができる。
【００２５】
図２Ａは、命令ワードメモリシステム２０４を有するデータプロセッサの一部を示している。命令ワードメモリシステム２０４は、アドレス入力部２０６と、機能ユニット２００（あるいは、更に一般的には、機能ユニットのグループ２００）と、アドレス範囲検出器２０８とを有している。命令メモリシステム２０４は、アドレス指定された命令ワードからの各命令のための複数の出力部を有している。これらの出力部は、機能ユニット（または、機能ユニットの各グループ）２００とレジスタファイル（図示せず）とに対して結合されている。アドレス範囲検出器２０８は、命令ワードアドレスを受けるとともに、命令アドレスが属していると検出された、アドレス指定された命令の範囲に応じて、多数ある機能ユニット（または、機能ユニットの各グループ）２００のうちのどれが命令ワードからの命令を実行するのかを選択する。機能ユニット（または、機能ユニットの各グループ）２００の選択は命令ワードのうちの１つに関して例示されているが、選択が命令ワードからの任意の数の命令に対して適用されても良いことは言うまでもない。したがって、第１の実施形態において、アドレス範囲検出器２０８は、命令アドレスが特定の範囲内にあることが検出される場合には、命令を実行するために他の機能ユニットではなく特定の機能ユニット（または、機能ユニットの各グループ）２００を選択し、他の機能ユニットは、命令アドレスがその特定の範囲内にない場合に選択される。そのため、更に少ない命令ワードで十分である。したがって、命令メモリシステム２０４が特定のメモリユニットを無効にしても良く、あるいは、連続する命令アドレス間のアドレスステップサイズが減少されても良い。いずれの場合も、命令ワードのために必要とされるメモリの量が減少する。
【００２６】
他の実施形態において、命令メモリシステム２０４は、命令アドレスが特定の範囲内にある場合、命令ワードから全ての機能ユニット（または、機能ユニットの各グループ）に対して命令を供給する。この実施形態において、アドレス範囲検出器２０８は、命令アドレスがその特定の範囲内にあったという検出に応じて、命令を実行するために全ての機能ユニットを選択する。命令アドレスがその特定の範囲から外れている場合、アドレス範囲検出器２０８は機能ユニットの一部だけを選択する。
【００２７】
図２Ｂは、アドレス範囲検出器２０８によって制御されるマルチプレクサ２０２を命令メモリシステム２０４と特定の機能ユニット（または、機能ユニットの各サブグループ）２００との間に更に有する実施形態を示している。各マルチプレクサ２０２の１つの入力部は、一群の機能ユニット２００によって共有される命令メモリシステム２０４の共通の命令出力部に結合されている。明確にするため、機能ユニット２００およびレジスタファイルへの接続を象徴するように命令メモリシステム２０４からの出力部が１つだけ示されている。各マルチプレクサ２０２は、命令メモリシステム２０４の対応する異なる命令出力部に結合された他の入力部を有している。
【００２８】
命令アドレスが特定の範囲内にあることをアドレス範囲検出器２０８が検出すると、アドレス範囲検出器２０８は、例えばグループを２つ以上のサブグループに分割することにより、命令ワードからの命令を実行するために、機能ユニットが選択される機能ユニット２００のグループの数を増大しても良い。命令アドレスが特定の範囲内にある場合、アドレス範囲検出器２０８は、命令ワードからの命令のうちの対応する異なる命令を異なる機能ユニット２００または機能ユニット２００の１つのグループのサブグループへ供給するためにマルチプレクサ２０２を選択する。命令アドレスがその特定の範囲から外れている場合、アドレス範囲検出器２０８は、命令ワードからの同じ命令をグループの中の全ての機能ユニットに対して供給する。この場合、更に小さい命令ワードが必要とされる。したがって、命令メモリシステム２０４が特定のメモリユニットを無効にしても良く、あるいは、連続する命令アドレス間のアドレスステップサイズが減少されても良い。いずれの場合も、命令ワードのために必要とされるメモリの量が減少する。
【００２９】
無論、更に複雑な形態の再グループ化が使用されても良い。すなわち、機能ユニット２００（のサブグループ）が１つの範囲で１つのグループの一部であり、他の範囲で他のグループの一部であり、および／または、更なる範囲においてそれ単独で１つのグループを形成する。また、図２Ａの実施形態が図２Ｂの実施形態と組み合わされても良く、それにより、命令アドレスの範囲に応じて命令ワードからの１つの命令を実行するために異なる機能ユニット２００が選択されても良い。この場合、各機能ユニット２００は、他の範囲で並行してそれ自体の命令ワ−ドを受ける。
【００３０】
無論、図２，２Ａ，２Ｂの実施形態が組み合わされても良い。この場合、メモリユニットは、これらのメモリユニットからの命令が必要とされるアドレス範囲においてのみ設けられる。
【００３１】
また、入力部は、範囲に応じてグループに機能ユニットを加え或いはグループから機能ユニットを除去しても良い。
【００３２】
図３はアドレス範囲検出器１６の一実施形態を示している。アドレス範囲検出器は、下限ソース３０と、上限ソース３２と、下限コンパレータ３４と、上限コンパレータ３６と、ＡＮＤゲート３８とを有している。下限ソース３０は下限コンパレータ３４の第１の入力部に結合されており、上限ソース３２は上限コンパレータ３６の第１の入力部に結合されている。命令アドレスのための入力部は、上限コンパレータ３６および下限コンパレータ３４の第２の入力部に結合されている。上限コンパレータ３６および下限コンパレータ３４の出力部はＡＮＤゲート３８の入力部に結合されており、ＡＮＤゲート３８の出力部がアドレス範囲検出器１６の出力部となっている。
【００３３】
動作時、コンパレータ３４，３６は、命令アドレスとソース３０，３２からの上限および下限とを比較する。命令アドレスがこれらの限界の間にある場合には、ＡＮＤゲード３８は一方の信号値を出力し、そうでない場合には、ＡＮＤゲード３８は他方の信号値を出力する。どのアドレス範囲内でプログラムが内側ループ内の命令を含んでいるかが分かっている場合には、ソース３０，３２がハードウェアに組み込まれていても良い。また、ソース３０，３２は、その内容が上限値および下限値を決定する（上限値および下限値の両方を設定することにより、あるいは、下限のみを設定し、上限が下限に対して所定のオフセットを有するようにすることにより）１または複数のレジスタを含んでいても良い。これらのレジスタには、プログラムがメモリユニット２０，２２内にロードされる際に、適当な値がロードされても良い。また、これらの値は、命令の実行の結果として設定されても良い。
【００３４】
第１のメモリユニット２０が比較的幅広い命令を記憶するアドレス範囲も調整できることが好ましい。これは、命令アドレスのほんの僅かな部分を使用して第１のメモリユニット２０をアドレス指定することにより実現されても良い。この場合、アドレス範囲検出は、第１のメモリユニット２０を作動させるために使用される。また、下限は、命令アドレスから差し引かれても良く、また、この場合は第１のメモリユニット２０のためのアドレスとして使用されても良い。限界を与えるために１または複数のレジスタが使用される場合には、これらのレジスタをロードすることにより、関連するアドレス範囲を設定することができる。したがって、関連するプログラムに応じて、幅広い命令を伴うアドレス範囲を設定できる。内側ループへ入ることおよび内側ループから出ることを含むプログラムの一部の実行に備えて、限界をロードすることができる。
【００３５】
無論、アドレス範囲検出器１６は、２つ以上の範囲同士を区別できるように、あるいは、互いに交わらない部分を有する範囲で命令アドレスを検出できるように、容易に拡張することができる。この場合、各範囲からの命令に対して異なる処理が行なわれても良く、また、各範囲毎にメモリユニット２０，２２が設けられても良い。
【００３６】
より一般的には、どの物理メモリがどの論理命令アドレスによってアドレス指定されるかをランタイム（実行）時に選択するために、メモリマッピングユニット（ＭＭＵ）が使用されても良い。この場合、本発明の一態様において、異なる物理メモリの幅は異なっている。プログラムがロードされると、内側ループからの命令ワードが幅広いメモリ内に記憶される。ＭＭＵは、これらの命令ワードの論理命令アドレスを幅広い物理命令メモリ内の物理アドレスに対してマッピングするように設定されている。したがって、実行中において、ＭＭＵは論理命令アドレスをマッピングし、メモリは、ＭＭＵによって物理的にアドレス指定された物理メモリによって決まる幅を有する命令ワードを戻す。
【００３７】
図４は、命令実行ユニット１４に対して供給されても良い機能的な命令ワード４０，４２の実施例を示している。第１のタイプの命令ワード４０は、命令アドレスが一方の範囲内にある時に使用され、また、第２のタイプの命令ワード４２は、命令アドレスが他方の範囲内にある時に使用される。第１のタイプの命令ワードは、第２のタイプの命令ワード４２よりも幅が広く、第２のタイプの命令ワード４２（命令４６ａ，４６ｂと、機能ユニット１４２のうちのどれが命令を実行するべきかを選択するためのコード４７とを有している）よりも多い命令４４ａ〜４４ｆを含んでいる。
【００３８】
受けられた命令ワードからの命令の機能ユニットへの経路指定がアドレス範囲によって決まる入力部の構成により、命令ワードの異なる処理が行なわれても良い。あるいは、圧縮された命令ワードの従来の処理を使用して、異なる処理が行なわれても良い。この場合、装置は、命令ワードの解凍を誘導するために与えられたコードを加え或いは変更する。この場合、コードは、命令のアドレス範囲に依存するように構成される。コードは命令実行ユニット１４内で供給され、これにより、命令実行ユニットは、加えられ或いは変更されたコードの結果としてアドレス範囲に応じて命令ワードを処理する。例えば、命令アドレスが第１の範囲内にある場合には、機能ユニットの全てのグループが命令を処理しなければならないことを示すコードが加えられても良く、一方、命令アドレスが第２の範囲内にある場合には、機能ユニットの一部の選択を示す命令メモリからのコードが供給されても良く、あるいは、命令アドレスが第２の範囲内にある時に同じ機能ユニットを常に使用しなければならない場合には、後者のコードが形成されても良い。
【００３９】
機能ユニットは、専用の機能ユニット、例えばＭＰＥＧデコーディングまたはエンコーディングの速度を上げる機能を果たすユニットを含んでいても良い。一般に、プログラムの特定の部分だけが、そのような特定の機能ユニットのための命令を伴う命令ワードを含んでいる。命令アドレスが特定の範囲内にある時にだけこれらの機能ユニットのための命令を受け入れることにより、その特定の範囲から外れるアドレスを有する命令のための命令空間をそのような機能ユニットに設けなくて済む。この場合、両方の範囲にある命令ワードは、同じ幅を有していても良い。命令アドレスが特定の範囲から外れている場合には、機能ユニットの一部のための命令が命令ワード中でエンコードされないため、その特定の範囲外で記憶された命令ワード中の他の機能ユニットのための命令をエンコードするために、より多くの空間を利用できる。
【００４０】
図５は、図１の処理装置をプログラミングするためのフローチャートを示している。フローチャートの第１のステップ５１においては、プログラムがコンパイルされ、プログラムを実行するために命令が形成される。第２のステップ５２においては、プログラム内での内側ループ（またはループ）の位置が決定される。これは、プロファイリング（すなわち、典型的な入力データに対する試験的な実行中に異なる命令が実行された回数を計数する）による自動コード検査によって行なわれても良い。第３のステップ５３においては、命令ワードが形成される。この場合、例えば（部分）ループ展開等の既知の技術を使用することにより、あるいは、特定目的の機能ユニットに命令を与えることにより、内側ループにおける命令ワードが最適化される。第４のステップ５４においては、命令ワードが命令メモリシステム１２内にロードされ、これにより、内側ループにおける命令ワードは、命令メモリシステムが幅広い命令ワードを記憶する範囲または命令実行ユニットが命令ワードからの多くの命令を並行に（同時に）実行するために選択する範囲における、命令アドレスをもつ記憶場所に記憶される。あるいは内側ループの命令ワードがロードされた記憶場所にしたがって、範囲の限界が設定される。
【００４１】
図６は、本発明の態様を実施するための更なる命令メモリシステム６０を示している。命令メモリシステム６０は、１つの命令アドレス入力部６４と、コントローラ６６と、複数のメモリユニット６２ａ〜６２ｄとを有している。命令アドレス入力部６４の少なくとも一部は各メモリユニット６２ａ〜６２ｄのアドレス入力部に結合されている。命令アドレス入力部の少なくとも一部はコントローラ６６に結合されている。コントローラ６６は、各メモリユニット６２ａ〜６２ｄをメモリに特有の各アドレス範囲の命令アドレスに応答させるために、各メモリユニット６２ａ〜６２ｄに個別に結合されている。この場合、異なるメモリユニット６２ａ〜６２ｄのアドレス範囲が重なり合っていても良く、また、これらが互いに異なる数の命令アドレスを含んでいても良い（これは、図中において、メモリユニット６２ａ〜６２ｄの垂直方向の高さ範囲が異なっているという事実により象徴される）。同様に、各メモリユニット６２ａ〜６２ｄがそれ自体の幅を有していても良い。すなわち、命令アドレスを用いてアドレス指定される命令データの幅がメモリ毎に異なっていても良い（これは、図中において、メモリユニット６２ａ〜６２ｄの水平方向の幅が異なっているという事実により象徴される）。
【００４２】
動作時、処理ユニット（図示せず）は、一連の命令アドレスを命令メモリシステム６０に対して供給する。コントローラ６６は、命令アドレスの値に応じて、１または複数のメモリユニット６２ａ〜６２ｄに信号を送って応答する。選択されたメモリユニット６２ａ〜６２ｄはそれぞれ、メモリユニット６２ａ〜６２ｄからの命令の一部（１つのメモリユニット６２ａ〜６２ｄだけが選択される場合には、全ての命令ワード）を検索する。異なるメモリユニット６２ａ〜６２ｄからの命令の一部は、処理ユニット（図示せず）への命令ワードとして組み合わせて供給される。１または複数の命令ユニット６２ａ〜６２ｄのクロック信号は、当該メモリユニットが選択されない場合には無効にされることが好ましい。
【００４３】
図７は、図６のメモリシステム６０を使用するプロセッサを示している。プロセッサは、複数の機能ユニット群７０ａ〜７０ｇと、レジスタファイル７２と、プログラムカウンタ７４とを有している。各機能ユニット群は１または複数の機能ユニット（図示せず）を有していても良い。メモリシステム６０のコントローラ６６の選択出力部は、機能ユニット群７０ａ〜７０ｇのクロックイネーブル入力部に結合されている。命令メモリシステム６０のメモリユニット（明確のため図示せず）の命令出力部は、機能ユニット群７０ａ〜７０ｇの命令選択入力部と、レジスタファイル７２のオペランドレジスタ選択入力部および結果レジスタ選択入力部とに対して結合されている。機能ユニット群７０ａ〜７０ｇは、レジスタファイル７２に結合された結果出力部とオペランド入力部とを有している（明確にするため、これらの接続部の全てが１つの線で示されているが、実際には、独立した接続部が使用される）。
【００４４】
動作時、命令メモリシステム６０の各メモリユニットは、１または複数のグループ（群）の機能ユニット７０ａ〜７０ｇに専用のものとなる。機能ユニット７０ａ〜７０ｇのグループの対応するメモリユニットが選択されていないことをコントローラ６６からの選択信号が示している場合には、１または複数のグループの機能ユニット７０ａ〜７０ｇのクロック信号が無効にされる。したがって、そのグループの機能ユニットはクロック信号を受けず、電力消費量が更に減少される。
【００４５】
しかしながら、図７の実施形態とは無関係に図６の命令メモリシステムを使用できることは言うまでもない。すなわち、機能ユニット群のクロック信号を無効にする必要はない。また、メモリユニットと機能ユニット群との間に所定の関係が存在する必要もない（しかしながら、そのような所定の関係により、処理が促進されるとともに、回路が簡略化される）。
【図面の簡単な説明】
【００４６】
【図１】データ処理装置を示している。
【図２】命令メモリシステムの一実施形態を示している。
【図２Ａ】データ処理装置の一部を示している。
【図２Ｂ】データ処理装置の一部を示している。
【図３】アドレス範囲検出器を示している。
【図４】処理装置のための命令ワードを示している。
【図５】データ処理装置をプログラミングするフローチャートを示している。
【図６】命令メモリシステムの一実施形態を示している。
【図７】データプロセッサ装置を示している。
【図１】
2006502490.tif 000003
【図２】
2006502490.tif 000004
2006502490.tif 000005
【図３】
2006502490.tif 000006
【図４】
2006502490.tif 000007
【図５】
2006502490.tif 000008
【図６】
2006502490.tif 000009
【図７】
2006502490.tif 000010
【国際調査報告】
2006502490.tif 000011
2006502490.tif 000012