(57)【特許請求の範囲】
【請求項１】
命令レジスタにラッチした命令を命令デコーダで解読して命令実行ユニットがその命令を実行する命令実行制御系列を複数系列備えると共に、命令をフェッチする命令フェッチユニットを含み、複数の命令を前記複数の命令実行制御系列で並列実行可能なデータプロセッサにおいて、
プログラムの格納領域とその領域に格納された命令を順次読出すためのポインタとを夫々が備えた複数個のタスクバッファと、
前記夫々のタスクバッファ毎に専用化され、特定の前記命令実行ユニットに配置されたレジスタ手段と、
前記複数個のタスクバッファと命令フェッチユニットとの中から一つを選択して前記特定の命令実行ユニットに対応される命令レジスタに接続するセレクタと、
初期状態において前記セレクタに前記命令フェッチユニットを選択させると共に、内部又は外部で発生されるイベントに従って前記セレクタを選択制御する切換え制御手段と、を設け、
前記夫々の命令実行制御系列に含まれる命令レジスタ、命令デコーダ及び命令実行ユニットは、パイプラインステージ単位で処理を進めて命令をパイプライン処理するものであり、
前記夫々の命令実行制御系列に含まれる命令デコーダからの命令解読結果に基づいて、相互に異なる命令実行制御系列による命令の並列実行が可能か否かについてそれら命令相互間の依存関係を調べ、他の命令の実行結果に依存する命令の実行を遅らせる競合管理ユニットを更に有し、
前記切換え制御手段は、前記競合管理ユニットが特定の命令の実行を遅らせるとき、前記選択手段にタスクバッファを選択させるものであることを特徴とするデータプロセッサ。
【請求項２】
前記夫々の命令実行制御系列に含まれる命令実行ユニットは、前記命令レジスタに命令をラッチさせる指示信号を出力し、前記セレクタは、それに対応される命令実行ユニットから出力される前記指示信号を前記切換え制御手段が選択する命令フェッチユニット又はタスクバッファに供給し、命令フェッチユニットは命令レジスタに供給すべき命令をその指示信号に基づいて更新し、前記タスクバッファは前記ポインタをその指示信号に基づいて更新するものであることを特徴とする請求項１記載のデータプロセッサ。
【請求項３】
命令レジスタにラッチした命令を命令デコーダで解読して命令実行ユニットが命令を実行する命令実行制御系列を複数系列備えると共に、命令をフェッチする命令フェッチユニットを含み、複数の命令を前記複数の命令実行制御系列で並列実行可能なデータプロセッサにおいて、
プログラムの格納領域とその領域に格納された命令を順次読出すためのポインタとを夫々が備えた複数個のタスクバッファと、
前記複数個のタスクバッファに専用化された特定タスク用命令レジスタと、
前記特定タスク用命令レジスタにラッチされた命令を解読する特定タスク用命令デコーダと、
前記夫々のタスクバッファ毎に専用化され、特定の命令実行ユニットに配置されたレジスタ手段と、
前記複数個のタスクバッファと命令フェッチユニットとの中から一つを選択的して前記特定の命令実行ユニットに対応される命令レジスタに接続する第１のセレクタと、
前記複数個のタスクバッファの中から一つを選択して前記特定タスク用命令レジスタに接続する第２のセレクタと、
前記特定の命令実行ユニットに対応される命令デコーダの出力と前記特定タスク用命令デコーダの出力を選択的に前記特定の命令実行ユニットに接続する第３のセレクタと、
前記夫々の命令実行制御系列に含まれる命令デコーダからの命令解読結果に基づいて、相互に異なる命令実行制御系列による命令の並列実行が可能か否かについてそれら命令相互間の依存関係を調べ、他の命令の実行結果に依存する特定の命令の実行を遅らせ、当該特定の命令の実行を遅らせるとき前記第３のセレクタに前記特定タスク用命令デコーダを選択させる競合管理ユニットと、
初期状態において前記命令フェッチユニットを前記第１のセレクタに選択させると共に第２のセレクタを非選択状態に制御し、内部又は外部で発生されるイベントに従って前記第１のセレクタを選択制御し、また、前記第３のセレクタによる前記特定タスク用命令デコーダの選択に呼応して第２のセレクタに内部又は外部で発生されるイベントに応じたタスクバッファを選択させる切換え制御手段と、を設けて成るものであることを特徴とするデータプロセッサ。
【発明の詳細な説明】
技術分野
本発明は、データプロセッサ、更にはデータプロセッサにおけるマルチタスキング若しくはタスク切換え技術に関し、例えば複数のタスクをパイプライン的に処理するデータプロセッサ、そしてそのデータプロセッサを適用したデータ処理システムに適用して有効な技術に関するものである。
背景技術
データプロセッサによるデータ処理を高速化する技術としてパイプライン処理がある。パイプライン処理は、一つの大きな処理を複数の処理要素に分割し、各処理要素に必要な時間即ちパイプラインピッチで次々に新しい処理を実行することにより、データ処理のスループットを向上させるものである。例えば、一つの命令を実行するための制御処理を、命令フェッチ、命令デコード、演算、メモリアクセス及びレジスタストアの各処理に分けた場合、前記夫々の処理を一つのパイプラインステージとし、一つのパイプラインステージのピッチ（パイプラインピッチ）毎に命令フェッチを行って、見掛け上、一つの命令を１パイプラインピッチで実行していく。
このようなパイプライン処理の途上で、タスク切換えを行う場合には、後から、現在実行中のタスクに復帰できるように、プログラムカウンタ、ステータスレジスタ及びデータレジスタなどの値をスタック領域に退避する処理を行わなければならない。
しかしながら、そのような退避処理には少なからず時間を要するため、パイプラインに乱れを生ずることになる。特に、複雑な処理を行う場合には、プログラム実行状態を局所的に見てもタスク切換えが頻繁に生ずることになる。これにより、折角パイプライン処理を採用しても、思うようにデータ処理のスループットを向上させることができなくなる。
特開昭６２−２３７５３１号公報には、複数のプログラムを時分割で実行する場合に、割り込みでは処理が複雑になるから、プログラムＲＯＭとプログラムカウンタを２組み設け、各組におけるＲＯＭアクセスタイミングをずらし、セレクタで交互にＲＯＭの出力を選択して命令レジスタに命令を供給する様にし、これによって、複数のプログラムを簡単に時分割で実行できるようにする技術が示されている。
これは、クロック信号に基づいてプログラムを単に交互に切り替えてプログラムを完全時分割で実行させるための技術であり、複数のプログラムを見掛け上、単に並列的に実行する場合を想定しており、特定のイベントがデータプロセッサの内外で発生するのに応じてタスクを切り替えることについては考慮されていない。機器制御などに汎用的に利用されるデータプロセッサでは少なくともそれを考慮し、タスク切換えに際してパイプラインの乱れ等を小さくし、スループットを向上することが要求される。
また、スーパスカラアーキテクチャーのデータプロセッサは、複数の命令を複数のパイプラインによって同時に実行することができる。このようなデータプロセッサにおいて、ある命令が他の命令の実行結果を利用するようというようなデータコンフリクトの状態に代表される命令相互間の依存関係を管理しなければならない。並列実行されるべき命令にデータコンフリクトを生ずることが明らかになった場合、複数のパイプラインの一部は命令実行を停止して他方の命令実行の完了を待つことになる。このようにデータコンフリクトによって空いたパイプラインを別のタスクの実行に利用することを考慮すると、やはり、タスク切換えに伴う処理時間を短くしてパイプラインの乱れを最小限に抑えなければならないことが本発明者によって明らかにされた。
また、データプロセッサはオペランドアクセスを高速化するためにキャッシュメモリを搭載することができる。キャッシュメモリのキャッシュラインが書き換えられると、それに対応されるメモリの内容も書き換えられなければならない。例えばデータプロセッサのみが主メモリを占有しているなら、キャッシュラインのリプレースが行われるときだけ前記書き換えられた内容を主メモリに反映させればよい。このような動作をライトバックと称する。
しかしながら、データプロセッサの外部に接続されたＤＭＡ（Direct Memory Access）コントローラは、キャッシュメモリの書き換えが主メモリに反映されていない誤ったデータを主メモリから読出してデータ転送を行う虞がある。このような虞をキャッシュ・コヒーレンシの問題と称し、これを解消するために、メモリライト動作時にキャッシュヒットであっても、その都度メモリライト動作を行うライトスルー方式をキャッシュメモリに採用すると共に、ライトバッファを用いてキャッシュメモリをノンブロッキング構成にすることができる。ところが、キャッシュ・コヒーレンシのために、メモリライト動作が頻発すると、データプロセッサはＤＭＡコントローラと主メモリを接続するバスのデータ転送能力をキャッシュ・コヒーレンシのために使い切ってしまい、ＤＭＡコントローラによって高速のデータ転送を行うとき、そのデータ転送速度が制限されてしまうという問題を生ずる。
そこで、ライトスルーを採用せず、ライトバック方式でキャッシュ・コヒーレンシを保つために、キャッシュコヒーレンシを保たない動作を検出し、その時点でライトバックさせる技術を採用することができる。例えば、データプロセッサは、ＤＭＡコントローラがキャッシュメモリに蓄積されているデータをリードアクセスする動作（バス・スヌープ）を検出すると、そのデータをライトバックする動作を割り込ませ、その後で、ＤＭＡ転送を可能にする。しかしながら、データプロセッサは、キャッシュコヒーレンシを保たない動作を検出するための負担が増すことになる。
本発明の目的は、タスクの切換えに伴う処理を軽減でき、データ処理能力を向上させることができるデータプロセッサを提供することにある。
本発明の別の目的は、タスク切換えに際してパイプラインの乱れを最小限に抑えることができるデータプロセッサを提供することにある。
本発明の更に別の目的は、スーパスカラアーキテクチャーのデータプロセッサにおいて、データコンフリクトによって空いたパイプラインを別のタスクの実行に切り替えて有効利用できるようにすることにある。
本発明のその他の目的は、ライトバック方式のキャッシュメモリを内蔵するとき、ＤＭＡ転送に際してキャッシュ・コヒーレンシを保たせるための負担を最小限に抑えることができるデータプロセッサを提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は本明細書の以下の記述から明らかにされるであろう。
発明の開示
本発明において、第１図に例示されるように、命令フェッチユニット（１０）が命令をフェッチし、命令レジスタ（１１）にラッチされた命令を命令デコーダ（１２）が解読し、その解読結果に基づいて命令実行ユニット（１３）が命令を実行するデータプロセッサ（１）は、プログラムの格納領域（１６０，１７０）とその領域に格納され命令を順次読出すためのポインタ（１６１，１７１）とを夫々が備えた複数個のタスクバッファ（１６，１７）と、前記夫々のタスクバッファ毎に専用化され、前記命令実行ユニットに配置されたレジスタ手段（Ｓ１，Ｓ２）と、前記複数個のタスクバッファと命令フェッチユニットとの中から一つを選択的に前記命令レジスタに接続するセレクタ（１８）と、初期状態において前記セレクタに前記命令フェッチユニットを選択させると共に、内部又は外部で発生されるイベントに従って前記セレクタを選択制御する切換え制御手段（１９）と、前記命令実行ユニットの制御に基づいて前記複数個のタスクバッファの全部又は一部をデータ書き込み可能に外部とインタフェースするインタフェース手段（２１，ＢＵＳ）とを含む。
前記タスクバッファは夫々固有のポインタを有し、命令実行ユニットは夫々のタスクバッファに割り当てられた固有のレジスタ手段を有するから、実行すべきタスクが、命令フェッチユニットのプログラムに従った通常命令処理とタスクバッファのプログラムに従ったスワップタスク処理との間で切換えられるとき、中断される通常命令処理の実行状態（例えばプログラムカウンタや汎用レジスタの値）を退避したり復帰したりするために外部メモリのスタック領域をアクセスする処理を必要としない。これにより、タスク切換えの高速化と、タスク切換えに伴う処理の軽減とが達成され、データプロセッサのデータ処理能力向上に寄与する。
前記命令レジスタ、命令デコーダ及び命令実行ユニットが、パイプラインステージ単位で処理を進めて命令をパイプライン処理を行う場合、上記により、パイプラインの乱れを最小限に抑えることができる。
前記命令実行ユニットは、前記命令レジスタに命令をラッチさせる指示信号（ＬＩＲ）を出力し、前記セレクタは、その指示信号を前記切換え制御手段が選択する命令フェッチユニット又はタスクバッファに供給し、命令フェッチユニットは命令レジスタに供給すべき命令をその指示信号に基づいて更新し、前記タスクバッファは前記ポインタをその指示信号に基づいて更新することができる。この制御は、前記タスクバッファのポインタ制御を容易化する。
前記スワップタスク処理から通常命令処理への復帰の手法として、前記切換え制御手段が選択したタスクバッファから命令デコーダに供給された命令の解読結果に基づいて当該切換え制御手段が前記セレクタを前記命令フェッチユニットの選択状態に戻すようにできる。即ち、選ばれたスワップタスク処理の完了を以って、通常命令処理に復帰させる。
スワップタスク処理を最優先に完了させることを考慮した場合、第１図に例示されるように、前記切換え制御手段は、前記タスクバッファの選択に呼応して、命令実行ユニットに入力される割り込み信号を無効化する割り込み禁止信号（ＩＮＨ）を出力するとよい。これにより、スワップタスク処理中において割込み要求は受け付けられない。
割り込み受け付けを許容する場合、第１２図に例示されるデータプロセッサ（１Ａ）のように、前記切換え制御手段（１９）は、前記タスクバッファ（１６、１７）を選択しているとき、前記命令実行ユニット（１３）による割り込みの受け付けに対応される制御信号ＩＣＮＴにより前記セレクタ（１８）を命令フェッチユニットの選択状態に戻すと共に、その直前のタスクバッファの選択状態を退避させればよい。
データプロセッサ（１）は、前記命令実行ユニットと外部との間にデータキャッシュメモリ（１５）を備えることができる。このデータプロセッサは、第２０図に例示されるように、バス（４）を介してメモリ等の複数の周辺回路（２，５）に接続されてデータ処理システムを構成する。このとき、前記タスクバッファにＤＭＡ転送制御プログラム若しくはＤＭＡ転送及びデータ変換制御プログラムを設定した場合、キャッシュコヒーレンシの問題を解決するためのデータプロセッサの負担を軽減することができる。すなわち、データプロセッサの処理タスクがセレクタ等を介してＤＭＡ転送制御処理に切換えられた状態において、ＤＭＡコントローラとしての機能は実行ユニットが実現することになる。従って、データプロセッサの外部メモリ間、或いは外部メモリと外部の入出力回路間でＤＭＡデータ転送を制御する場合、ＤＭＡ転送制御のためのアドレス信号若しくはアクセス制御情報は必ずデータキャッシュメモリを通ることになる。換言すれば、キャッシュメモリがライトバック方式を採用する場合に、データキャッシュメモリの書き換えが外部メモリに反映されていない状態でＤＭＡ転送が開始されても、そのような外部メモリに反映されていないデータはデータキャッシュメモリから命令実行ユニットに読み込まれて、転送されることになる。これにより、データプロセッサは、キャッシュコヒーレンシを保たないＤＭＡ転送動作を検出するとともに検出したときには予じめライトバック動作を行なわせることを要せず、キャッシュコヒーレンシを保たないＤＭＡ転送動作を検出するというデータプロセッサの処理負担を軽減することができる。当然データプロセッサで実現するＤＭＡ転送制御機能において、転送データは一旦データプロセッサに読み込まれることになる。
上記タスク切換え手段は、第１４図及び第１６図に例示されるスーパスカラ形式のデータプロセッサ（１Ｂ，１Ｃ）にも応用できる。すなわち、命令レジスタ（１１Ａ，１１Ｂ）にラッチした命令を命令デコーダ（１２Ａ，１２Ｂ）で解読して命令実行ユニット（１３Ａ，１３Ｂ）がその命令を実行する命令実行制御系列を複数系列備えると共に、命令をフェッチする命令フェッチユニット（１０）を含み、複数の命令を前記複数の命令実行制御系列で並列実行可能なデータプロセッサ（１Ｂ、１Ｃ）は、プログラムの格納領域とその領域に格納され命令を順次読出すためのポインタとを夫々が備えた複数個のタスクバッファ（１６、１７）と、前記夫々のタスクバッファ毎に専用化され、特定の前記命令実行ユニットに配置されたレジスタ手段（Ｓ１，Ｓ２）と、前記複数個のタスクバッファと命令フェッチユニットとの中から一つを選択して前記特定の命令実行ユニットに対応される命令レジスタに接続するセレクタ（１８）と、初期状態において前記セレクタに前記命令フェッチユニットを選択させると共に、内部又は外部で発生されるイベントに従って前記セレクタを選択制御する切換え制御手段（１９）とを有する。このデータプロセッサにおいても、一方の命令実行制御系を利用して通常命令処理とスワップタスク処理を切換えられるので、上記同様、タスク切換えの高速化とタスク切換えに伴うデータプロセッサの負担軽減とを達成でき、また、パイプラインの乱れも最小限に抑えることができる。したがって、スーパスカラアーキテクチャが本来企図する高いデータ処理能力を保証することができる。
複数の命令を並列実行可能なスーパスカラデータプロセッサにおいて、データコンフリクトのような命令相互の依存関係をハードウェアによって調停する場合、前記夫々の命令実行制御系列に含まれる命令デコーダからの命令解読結果に基づいて、相互に異なる命令実行制御系列による命令の並列実行が可能か否かについてそれら命令相互間の依存関係を調べ、他の命令の実行結果に依存する命令の実行を遅らせる競合管理ユニット（２５）を備えることになる。
このとき、前記切換え制御手段は、第１６図に例示されるように、データコンフリクトなどによって前記競合管理ユニットが特定の命令の実行を遅らせるとき、それを通知する制御信号２５０に応答して前記セレクタ（１８）にタスクバッファを選択させることにより、処理が中断される一方の命令実行制御系若しくはパイプによる通常命令処理をスワップタスク処理に切換えることができ、命令実行制御系列を有効利用することができる。特にタスク切換え時には前述の通り、途中で中断される通常命令処理の実行状態の退避を要しないから、命令実行制御系列の空き時間が短い場合にも効率的にタスク切換えを行ってスワップタスク処理に移行することができる。
前記データコンフリクト等の競合状態は命令デコード結果に基づいて競合管理ユニット（２５）が判定し、そのとき、処理が遅延されるべき命令は既にデコードを終了している。その後で、スワップタスク処理に切換えられるが、処理が中断される通常命令処理と、それに代えて処理が開始されるスワップタスク処理とが相互に同じ命令レジスタ及び命令デコーダを用いる場合には、第１７図に例示されるように、パイプ１におけるパイプラインステージｍの命令フェッチ（Ｉｎ）と同じ命令をパイプ１のステージｍ＋２で再度フェッチし、パイプ１におけるパイプラインステージｍ＋１の命令デコード（Ｄｎ）と同じ命令をパイプ１のステージｍ＋３で再度デコードしなければならず、この意味においてパイプラインが乱れることになる。従って、スワップタスク処理の後に、処理が中断された通常命令処理に復帰するときは命令フェッチから再開しなければならない。
上述のデータコンフリクトによる通常命令処理からスワップタスク処理書への切換えにおいて、パイプラインに全く乱れを生じないようにするには、第１８図に例示されるように、データプロセッサ（１Ｄ）は、一方の命令実行制御系に、スワップタスク処理専用の命令レジスタ（１１Ｃ）と命令デコーダ（１２Ｃ）を追加すればよい。すなわち、命令レジスタ（１１Ａ，１１Ｂ）にラッチした命令を命令デコーダ（１２Ａ，１２Ｂ）で解読して命令実行ユニット（１３Ａ，１３Ｂ）が命令を実行する命令実行制御系列を複数系列備えると共に、命令をフェッチする命令フェッチユニット（１０）を含み、複数の命令を前記複数の命令実行制御系列で並列実行可能とされることを前提とする。そして、このデータプロセッサ（１Ｄ）は、プログラムの格納領域とその領域に格納され命令を順次読出すためのポインタとを夫々が備えた複数個のタスクバッファ（１６、１７）と、前記複数個のタスクバッファに専用化された特定タスク用命令レジスタ（１１Ｃ）と、前記特定タスク用命令レジスタにラッチされた命令を解読する特定タスク用命令デコーダ（１２Ｃ）と、前記夫々のタスクバッファ毎に専用化され、特定の命令実行ユニットに配置されたレジスタ手段（Ｓ１，Ｓ２）と、前記複数個のタスクバッファと命令フェッチユニットとの中から一つを選択的して前記特定の命令実行ユニットに対応される命令レジスタに接続する第１のセレクタ（１８）と、前記複数個のタスクバッファの中から一つを選択して前記特定タスク用命令レジスタに接続する第２のセレクタ（２６）と、前記特定の命令実行ユニットに対応される命令デコーダの出力と前記特定タスク用命令デコーダの出力を選択的に前記特定の命令実行ユニットに接続する第３のセレクタ（２７）と、前記夫々の命令実行制御系列に含まれる命令デコーダからの命令解読結果に基づいて、相互に異なる命令実行制御系列による命令の並列実行が可能か否かについてそれら命令相互間の依存関係を調べ、他の命令の実行結果に依存する特定の命令の実行を遅らせ、当該特定の命令の実行を遅らせるとき前記第３のセレクタに前記特定タスク用命令デコーダを選択させる競合管理ユニット（２５）と、初期状態において前記命令フェッチユニットを前記第１のセレクタに選択させると共に第２のセレクタを非選択状態に制御し、内部又は外部で発生されるイベントに従って前記第１のセレクタを選択制御し、また、前記第３のセレクタによる前記特定タスク用命令デコーダの選択に呼応して第２のセレクタに内部又は外部で発生されるイベントに応じたタスクバッファを選択させる切換え制御手段（１９）とを含む。
【図面の簡単な説明】
第１図は本発明の第１の実施例に係るデータプロセッサのブロック図、
第２図は命令フェッチユニットの一例ブロック図、
第３図はスワップタスクバッファの第１の例を示すブロック図、
第４図はスワップタスクバッファの第２の例を示すブロック図、
第５図はスワップタスクバッファの第３の例を示すブロック図、
第６図はスワップタスクバッファの第４の例を示すブロック図、
第７図は命令実行ユニットに含まれるレジスタセットの一例説明図、
第８図は第１の実施例に係るデータプロセッサにおけるタスク切換え動作の一例説明図、
第９図は通常命令処理と割り込み処理との切換え動作の一例説明図、
第１０図は第１の実施例に係るデータプロセッサにおけるタスク切換えとパイプラインとの関係を示す一例タイミングチャート、
第１１図はスワップタスク中に割り込みを受け付けない第１の実施例に係るデータプロセッサの一例動作タイミングチャート、
第１２図は本発明の第２の実施例に係るデータプロセッサのブロック図、
第１３図はスワップタスク中に割り込みを受け付ける第２の実施例に係るデータプロセッサの一例動作タイミングチャート、
第１４図は本発明の第３の実施例に係るデータプロセッサのブロック図、
第１５図は第３の実施例に係るデータプロセッサにおいてデータコンフリクトを生じた場合の制御とタスク切換え制御の内容を示す一例タイミングチャート、
第１６図は本発明の第４の実施例に係るデータプロセッサのブロック図、
第１７図は第４の実施例に係るデータプロセッサにデータコンフリクトを生じたときのタスク切換え制御の内容を示すタイミングチャート、
第１８図は本発明の第５の実施例に係るデータプロセッサのブロック図、
第１９図はデータコンフリクトを生じたとき第５の実施例に係るデータプロセッサで行われるタスク切換え制御を示すタイミングチャート、
第２０図は本発明のデータプロセッサを適用したデータ処理システムの一例ブロック図、
第２１図はＤＭＡ転送制御及びデータ変換制御プログラムによるタスクの一例を示す説明図、
第２２図はＤＭＡ転送制御及びデータ変換制御プログラムのプログラム記述の最小単位の一例を示す説明図、
第２３図はライトバック方式を採用するキャッシュメモリとデータプロセッサの外部に配置されたＤＭＡコントローラとを含むデータ処理システムの一例ブロック図である。
発明を実施するための最良の形態
第１図には本発明の第１の実施例に係るデータプロセッサのブロック図が示される。同図に示されるデータプロセッサ１は、特に制限されないが、公知の半導体集積回路製造技術によって単結晶シリコンのような１個の半導体基板に形成されている。
第１図において１０は命令フェッチユニット、１１は命令レジスタ、１２は命令デコーダ、１３は命令実行ユニット、１４は命令キャッシュメモリ、１５はデータキャッシュメモリ、１６，１７は代表的に示されたスワップタスクバッファ、１８はセレクタ、１９は切換え制御回路、２０は内蔵周辺モジュールを総称する回路ブロックである。
前記命令実行ユニット１３は、プログラムカウンタＰＣ、汎用レジスタＧＲ、夫々のスワップタスクバッファ１６，１７に個々に割り当てられたレジスタセットＳ１，Ｓ２、割り込み制御回路１３１、シーケンス制御回路１３２、演算回路等１３３などを含む。
本実施例のデータプロセッサ１において、命令レジスタ１１、命令デコーダ１２及び命令実行ユニット１３はパイプラインステージ単位で処理を進めて、命令をパイプライン処理する。命令レジスタ１１、命令デコーダ１２及び命令実行ユニット１３における動作サイクルは、データプロセッサ１の図示を省略する動作基準クロック信号に同期して、前記シーケンス制御回路１３２が制御する。
この命令実行ユニット１３は、特に制限されないが、内部バスＢＵＳに接続されたデータキャッシュメモリ１５を介して外部にインタフェースされる。データキャッシュメモリのキャッシュの対象は外部メモリ２等とされる。データキャッシュメモリ１５は図示を省略するキャッシュデータ部、キャッシュタグ部及びキャッシュコントローラを含む回路ブロックとして図示されている。キャッシュデータ部は外部メモリ２等が保有するデータの一部を保持する。キャッシュタグ部はキャッシュデータ部が保有するデータと対応させてそのアドレスの一部（アドレスタグ）をキャッシュタグとして保有する。キャッシュコントローラは外部アクセスにおいてキャッシュ・ヒットの場合には、ヒットに係るデータをキャッシュデータ部から内部バスＢＵＳに出力し、或いはヒットに係るデータを新たなエントリとしてキャッシュデータ部に書き込む。キャッシュ・ミスの場合には外部メモリ２等から読み込んだデータを内部バスＢＵＳに与え、或い外部メモリ２等を書き込みアクセスする。キャッシュミスにおいては、キャッシュラインのリプレースを行うことができる。特に制限されないが、このキャッシュコントローラは、キャッシュヒットによって書き換えられたキャッシュデータ部の内容を外部メモリ２等に書き戻すための処理は、キャッシュラインのリプレースが行われるときだけ行う、所謂ライトバックによって行う。
前記プログラムカウンタＰＣは次に実行すべき命令アドレスを保有する。命令フェッチユニット１０は、特に制限されないが、プログラムカウンタＰＣの値に基づいて、将来実行されると予想される命令（例えばプログラムカウンタＰＣによって指定される命令からその先の複数命令）をフェッチする。フェッチされるべき命令は、特に制限されないが、外部メモリ３に格納されている。この実施例において外部メモリ３と命令フェッチユニット１０との間には命令キャッシュメモリ１４が配置されている。
この命令キャッシュメモリ１４は、図示を省略するキャッシュデータ部、キャッシュタグ部及びキャッシュコントローラを含む回路ブロックとして図示されている。キャッシュデータ部は外部メモリ３等が保有する命令の一部を保持する。キャッシュタグ部はキャッシュデータ部が保有する命令と対応させてそのアドレスの一部（アドレスタグ）をキャッシュタグとして保有する。キャッシュコントローラは命令フェッチユニット１０によるメモリアクセスにおいてキャッシュ・ヒットの場合にはキャッシュデータ部が保有する命令を命令フェッチユニット１０に与え、キャッシュ・ミスの場合には外部メモリ３等から命令を読み込んで命令フェッチユニット１０に与える。
命令フェッチユニット１０は、特に制限されないが、先入れ・先出し（First-in・First-out）バッファの機能を有し、プログラムカウンタＰＣの値に対して複数ワード分の命令をプリフェッチすることができる。例えば第２図に示されるように４段のラッチ１００Ａ〜１００Ｄが直列配置され、セレクタ１０１Ａ〜１０１Ｃを介して前段のラッチを介することなく直接外部若しくは命令キャッシュメモリ１４からの命令を取り込むことができるようにされている。１０２は命令フェッチのための制御回路であり、プログラムカウンタＰＣの値に基づいてフェッチすべき命令のアドレスを出力するとともに、それによって入力される命令を先入れ・先出し形態で前記ラッチ１００Ａ〜１００Ｄに保持させ且つラッチ１００Ａ〜１００Ｄから出力させる。特に制限されないが、ラッチ１００Ａ〜１００Ｄは２ワード単位で命令をラッチし、命令デコーダ１２は１ワード単位で命令をデコードする。これに応じて、データラッチ１００Ｄの出力はセレクタ１０３で下位ワードと上位ワードに分けて出力される。
前記夫々のスワップタスクバッファ１６、１７は、プログラム格納領域１６０、１７０とその格納領域１６０、１７０に格納された命令を順次読み出すためのポインタ１６１、１７１とを有する。特に制限されないが、スワップタスクバッファ１６は内部バスＢＵＳを介して実行ユニット１３によりそのプログラム格納領域１６０に対する書込みが可能にされている。また、スワップタスクバッファ１７は、命令実行ユニット１３により制御されるシリアルインタフェース（その制御線は図示を省略してある）２１を介してそのプログラム格納領域１７０に対する書込みが可能にされている。
スワップタスクバッファ１６、１７の一例は第３図〜第６図に示されている。第３図の例はシフトレジスタとセレクタを格納領域１６０（１７０）とするものであり、複数個の並列入出力型のラッチＬＡＴが縦続されて成るシフトレジスタと、夫々のラッチＬＡＴの並列出力から１ビットづつ選択して並列出力するセレクタＳＥＬと、セレクタＳＥＬを介して、各位ラッチＬＡＴの出力を上位側或いは下位側から順番にセレクタＳＥＬに選択させるポインタ１６０（１７０）とによって構成することができる。例えば夫々ｍビットのラッチＬＡＴをｎ段備えるとすると、ｎビット単位で順次命令をｍ回出力することができる。シフトレジスタへのデータ書込みはシリアルインタフェース２１又は命令実行ユニット１３の制御で行われる。前記ラッチＬＡＴの段数は命令のビット数に応じて決定され、第４図には第３図とはラッチＬＡＴの段数が異なる構成が示されている。第５図の例はダイナミック型メモリセル又はスタティック方メモリセルをマトリクス配置したメモリセルアレイＭＣＡ１とアドレスデコーダＡＤＥＣ１から成るＲＡＭ（Random Access Memory）を格納領域１６０とするものであり、ポインタ１６１がＲＡＭに対するアクセスアドレスを生成する。ＲＡＭに対する書込みは命令実行ユニット１３が制御する。第６図の例は不揮発性記憶素子をマトリクス配置したメモリセルアレイＭＣＡ２とアドレスデコーダＡＤＥＣ２から成るＲＯＭ（Read Only Memory）を格納領域１６０とするものであり、ポインタ１６１がＲＯＭに対するアクセスアドレスを生成する。
スワップタスクバッファ１６，１７には、一つのまとまった処理を実現するための命令系列によって構成されるプログラムが格納される。特定の命令系列によって実現される一つのまとまった処理の単位をタスクと定義するならば、特定のタスクに係る処理プログラムが格納される。例えば、ＤＭＡ転送のための処理プログラム、データ圧縮・伸長のための処理プログラムなどが設定される。スワップタスクバッファ１６，１７への処理プログラムのロードは、特に制限されないが、パワーオンリセットなどによるシステムイニシャライズ時にシリアルインタフェース２１や命令実行ユニット１３を介して行うことができる。
前記セレクタ１８はスワップタスクバッファ１６、１７と命令フェッチユニット１０との中から一つを選択して命令レジスタ１１に接続する。その接続制御は切換え制御回路１９が行う。この切換え制御回路１９は、データプロセッサ１のイニシャライズリセット時に前記セレクタ１８に命令フェッチユニット１０を選択させ、その後、内外で発生される所定のイベント、例えば、内蔵周辺回路モジュール２０からの割り込み信号２２や外部における所定のイベント発生の通知信号２３に従ってセレクタ１８にスワップタスクバッファ１６又は１７の出力を選択させる。どのスワップタスクバッファを選択するかは、イベントの発生元とスワップタスクバッファとの対応テーブルを切換え制御回路１９が備えて判定したり、或いはイベント発生の通知信号毎に固有のスワップタスクバッファを割り当てて制御することができる。
特に制限されないが、前記命令実行ユニット１３は、前記命令レジスタ１１に命令をラッチさせる指示信号ＬＩＲを出力する。命令レジスタ１１はその指示信号ＬＩＲに同期して命令をラッチする。このとき、前記セレクタ１８は、前記切換え制御回路１９が選択する命令フェッチユニット１０又はスワップタスクバッファ１６，１７にその指示信号ＬＩＲを供給する。命令フェッチユニット１０はその指示信号ＬＩＲを受けると、命令レジスタ１１に供給すべき命令をその指示信号に基づいて更新する。また、前記タスクバッファ１６，１７はその指示信号ＬＩＲを受けると、前記ポインタ１６１，１７１をその指示信号ＬＩＲに基づいて更新する。これにより、セレクタ１８で選択されるスワップタスクバッファ１６又は１７のポインタ１６１又は１７１が順次更新され、そのポインタの値に応じた命令が格納領域１６０，１７０から命令レジスタ１１に供給されることになる。
スワップタスクバッファ１６，１７に格納されたプログラムの実行終了は、当該プログラムの最後に実行される命令が命令デコーダ１２でデコードされて出力される終了信号１２０によって切換え制御回路１９が認識する。切換え制御回路１９は、そのデコード結果（終了信号１２０）を受け取ると、前記セレクタ１８を命令フェッチユニット１０の選択状態に戻す。
第７図には命令実行ユニット１３のレジスタ構成例が示される。汎用レジスタＧＲは、レジスタＳＲ，Ｒ０〜Ｒ１５を含む。ＳＲはステータスレジスタに割り当てられ、Ｒ０〜Ｒ７はデータレジスタやアドレスレジスタに割り当てられ、Ｒ８〜Ｒ１５はデータレジスタ、アドレスレジスタ、スタックポインタ等に割り当てられる。前記レジスタセットＳ１はレジスタＳ１ＳＲ，Ｓ１Ｒ０〜Ｓ１Ｒ７を含み、前記レジスタセットＳ２はレジスタＳ２ＳＲ，Ｓ２Ｒ０〜Ｓ２Ｒ７を含み、それらレジスタセットＳ１，Ｓ２は、汎用レジスタＧＲのレジスタＳＲ，Ｒ０〜Ｒ７に代えて利用されるものであり、夫々固有のレジスタアドレスを有する。レジスタセットＳ１はスワップタスクバッファ１６に格納されたプログラムの実行に専用的に割り当てられ、レジスタセットＳ２はスワップタスクバッファ１７に格納されたプログラムの実行に専用的に割り当てられ、汎用レジスタＧＲのレジスタＳＲ，Ｒ０〜Ｒ７は命令フェッチユニット１０から出力された命令の実行に割り当てられる。
特に制限されないが、汎用レジスタＧＲのレジスタＳＲ，Ｒ０〜Ｒ７、レジスタセットＳ１又はレジスタセットＳ２のどのレジスタを利用するかは、レジスタ番号とタスクの種類によって決定され、例えばそれは、命令のオペランドフィールドで指定される。命令フェッチユニット１８から出力される命令が選択されるとき命令実行ユニット１３は命令実行に前記レジスタＳＲ，Ｒ０〜Ｒ１５を用い、スワップタスクバッファ１６から出力される命令が選択されるとき命令実行ユニット１３は命令実行に前記レジスタＳ１ＳＲ，Ｓ１Ｒ０〜Ｓ１Ｒ７を用い、スワップタスクバッファ１７から出力される命令が選択されるとき命令実行ユニット１３は命令実行に前記レジスタＳ２ＳＲ，Ｓ２Ｒ０〜Ｓ２Ｒ７を用いる。
上述のように、スワップタスクバッファ１６，１７は夫々固有のポインタ１６１，１７１を有し、夫々のスワップタスクバッファ１６，１７に割り当てられた固有のレジスタセットＳ１，Ｓ２を有するから、実行すべきタスクが命令フェッチユニット１０とスワップタスクバッファ１６，１７との間で切換えられたとき、プログラムカウンタＰＣやレジスタＧＲの値を退避したり復帰したりするために外部メモリ２等のスタック領域をアクセスする処理を必要としない。
第８図にはタスク切換えの動作例が示される。前記命令フェッチユニット１０からの命令を実行する（通常命令処理）状態の途上で、例えば信号２３によって、スワップタスクバッファ１６に格納されているプログラム（スワップタスク１）の実行が要求されると、切換え制御回路１９は、パイプラインステージの切換わりに同期して、セレクタ１８による選択状態をスワップタスクバッファ１６に切換える。これにより、スワップタスクバッファ１６は指示信号ＬＩＲに同期してスワップタスク１の先頭の命令をポインタ１６１で指示して出力し、命令レジスタ１１がこれをラッチする。また、命令実行ユニット１３は、スワップタスクを実行するときは、当該タスクの命令記述によって指定されるレジスタセットＳ１を利用する。これにより、プログラムカウンタＰＣの退避、レジスタＳＲ，Ｒ０〜Ｒ７の退避を要せずに、スワップタスク１の実行に移ることができる。切換えられたスワップタスク１の最後の命令が命令デコーダ１２で解読されると、切換え制御回路１９はセレクタ１８に命令フェッチユニット１０を選択させる。このとき、プログラムカウンタＰＣ、ステータスレジスタＳＲ，データ及びアドレスレジスタＲ０〜Ｒ７は、前記ワップタスク１への切換え直前の値をそのまま維持している。スワップタスクバッファ１６に格納されていた命令の実行においてレジスタＲ８〜Ｒ１５は利用されない。したがって、通常命令への切換えに際しても、復帰のためのメモリアクセスを必要としない。第９図に示される通常命令処理と割り込み処理との切換えの場合には、切換えの度に退避、復帰のためのメモリアクセスが必要になる。退避、復帰のためのメモリアクセスは、タスク切換え若しくはパイプライン切換えのオーバヘッドになる。
第１０図には通常命令処理とスワップタスク１との切換え時におけるパイプラインの状態の一例が示される。特に制限されないが、本実施例のデータプロセッサ１におけるパイプラインステージは５段とされ、通常命令処理におけるパイプラインステージは、命令フェッチ（Ｉｎ）、命令デコード（Ｄｎ）、演算（Ｅｎ）、メモリアクセス（Ａｎ）及びレジスタストア（Ｓｎ）の各ステージとされる。スワップタスクにおけるパイプラインステージは、命令転送（Ｃｓ）、命令デコード（Ｄｓ）、演算（Ｅｓ）、メモリアクセス（Ａｓ）及びレジスタストア（Ｓｓ）の各ステージとされる。
例えば、パイプラインステージｍにおいてスワップタスク１の実行が要求されると、切換え制御回路１９は、パイプラインステージｍ＋１においてセレクタ１８による選択状態をスワップタスクバッファ１６に切換え、当該パイプラインステージｍ＋１においてスワップタスク１の先頭の命令に対する命令が命令レジスタ１１に転送（Ｃｓ１）される。タスク切換え時には前述の通りプログラムカウンタＰＣやレジスタＳＲ，Ｒ０〜Ｒ７の退避を要せずに、スワップタスク１の実行に移ることができる。以下パイプラインステージ毎に処理が一つずつ進められる。命令実行ユニット１３は、通常命令処理の実行では汎用レジスタＧＲを利用するが、スワップタスク１の実行ではレジスタセットＳ１を利用する。どのレジスタを利用するかは夫々の命令記述によって決定される。切換えられたスワップタスク１の最後の命令がパイプラインステージｎにおいて命令デコーダ１２で解読（Ｄｓ１）されると、切換え制御回路１９に終了信号１２０が供給される。切換え制御回路１９はパイプラインステージｎ＋１でセレクタ１８に命令フェッチユニット１０を選択させ、これによってパイプラインステージｎ＋１以降では命令レジスタ１１には命令フェッチユニット１０から命令が供給される。通常命令処理への切換えに際しても、前述の通り、復帰のためのメモリアクセスを必要としない。以上のように、通常命令処理とスワップタスク１との間でのタスク切換えに際して、パイプラインは一切乱れを生じていない。
第１図において前記割り込み制御回路１３１には、代表的に示された割り込み要求信号ＩＲＱが供給される。割り込み制御回路１３１はそれに設定されている割り込み優先度に応じて割り込み要求を受け付ける。本実施例では、前記切換え制御回路１９は、スワップタスクバッファ１６又は１７をセレクタ１８に選択させている状態において、割り込み受け付け禁止信号ＩＮＨをイネーブルにして割り込み制御回路１３１に供給する。割り込み制御回路１３１は、割り込み禁止信号ＩＮＨがイネーブルにされているとき割り込み要求を一切受け付けない。したがって、データプロセッサ１は、スワップタスクバッファ１６又は１７のプログラムに従ったタスクを実行しているとき、そのタスクの実行完了まで、タスクの切換えは行われない。換言すれば、スワップタスクバッファ１６又は１７に格納されたプログラムによるタスクには最も高い実行優先度が与えられることになる。割り込み制御回路１３１は、割り込み要求を受け付けると、現在の命令実行を中断し、プログラムカウンタＰＣ、ステータスレジスタＳＲ、データ及びアドレスレジスタＲ０〜Ｒ１５の内容等を外部メモリ２等のスタック領域に退避し、その後、受け付けた割り込み要求処理プログラムに分岐される。
第１１図には上述のようにスワップタスク中に割り込みを受け付けない場合の動作例が示される。通常処理の途中で割り込み要求があると、戻り番地などを退避した後、割り込み処理に分岐され、割り込み処理が終了されると、復帰処理を行った後に、通常処理に戻される。通常処理においてスワップタスク１の実行要求があると、切換え制御回路１９はスワップタスクバッファ１６を選択させて、即座にスワップタスク１の実行に移される。スワップタスク１の実行中は前記割り込み禁止信号ＩＮＨがイネーブルにされるので、割込み要求があっても、その間は割り込み要求は受け付けられない。受け付け禁止されていた割り込み要求は、スワップタスク１の実行完了後に割り込み禁止信号ＩＮＨがディスエーブルにされた後受け付けられる。割り込み処理に分岐する際には先ず、中断されている通常命令処理の戻り番地やレジスタの値を退避させ、その後割り込み処理に分岐される。割り込み処理終了後は、退避された情報を復帰させた後、通常命令処理に戻される。
第１２図には本発明に係るデータプロセッサの第２の実施例が示される。同図に示されるデータプロセッサ１Ａは、スワップタスクバッファ１６又は１７に格納されたプログラムによるタスクの実行中にも割り込みを受付可能にした点が、第１図のデータプロセッサ１と相違される。その他の点については第１図と同じであり、それと同一機能の回路ブロックには同一符号を付してその詳細な説明を省略する。
データプロセッサ１Ａにおいて、割り込み制御回路１３１は割り込み要求を受け付けると、割り込み制御信号ＩＣＮＴをイネーブルにして前記切換え制御回路１９に供給する。切換え制御回路１９は、セレクタ１８がスワップタスクバッファ１６又は１７を選択しているとき、割り込み制御信号ＩＣＮＴがイネーブルにされると、セレクタ１８による選択状態を命令フェッチユニット１０に切換え制御する。更に、切換え直前に選択されていたスワップタスクバッファ１６，１７を特定するための情報（スワップタスク選択情報）を退避する。退避先は、切換え制御回路１９内部の図示を省略する退避用ラッチとすることが望ましい。外部メモリ２等のスタック領域に退避させてもよいが、その場合には、当該割り込み処理からスワップタスクに復帰する時にスワップタスク選択情報を復帰させるのに外部バスアクセスサイクルを起動しなければならず、スワップタスク処理への復帰が遅れるからである。
スワップタスクの実行中に割り込みを受け付ける場合、それ以前に通常命令処理からスワップタスクへの分岐が行われている。したがって、当該割り込み処理を完了した後、現在中断中の通常処理に復帰出来るようにしなければならない。このため、前記セレクタ１８の切換えとスワップタスク選択情報の退避の後、現在中断している通常命令処理の戻り番地とレジスタ情報が退避され、その後、割り込み処理プログラムに分岐される。
第１３図にはスワップタスク中に割り込みを受け付ける場合の動作例が示される。通常命令処理の途中で割り込み要求があると、戻り番地などを退避した後、割り込み処理に分岐され、割り込み処理が終了されると、復帰処理を行った後に、通常命令処理に戻される。通常命令処理においてスワップタスク１の実行要求があると、切換え制御回路１９はスワップタスクバッファ１６をセレクタ１８に選択させて、即座にスワップタスク１の実行に移される。割り込み制御回路１３１は、スワップタスク１の実行中でも割り込みを受け付けることができ、割り込みを受け付けると、割り込み制御信号ＩＣＮＴをイネーブルにして前記切換え制御回路１９に供給する。これによって切換え制御回路１９は、セレクタ１８による選択状態を命令フェッチユニット１０に切換え制御すると共に、そのとき選択されていたスワップタスクバッファを特定するためのスワップタスク選択情報を退避する。そして、割り込みを受け付けた命令実行ユニット１３は、それ以前に処理が中断されている通常命令処理の戻り番地とレジスタ情報をスタック領域に退避（Ｓ１）した後、割り込み処理プログラムに分岐する。この割り込み処理が終了（Ｔ１）されると、前記割り込み制御信号ＩＣＮＴがディスエーブルにされ、これによって切換え制御回路１９は、退避されているスワップタスク選択情報に従って、中断されていたスワップタスク１の実行を再開する。このスワップタスク１の最後の命令が命令デコーダ１２で解読されると、終了信号１２０が切換え制御回路１９に与えられ、これによって、切換え制御回路１９はセレクタ１８に命令フェッチ回路１０の出力を選択させる。そうすると、前記割り込み処理の後の復帰処理（Ｓ２）が開始され、退避されていた通常命令処理の戻り番地やレジスタ情報が復帰されて、通常命令処理が再開される。その復帰処理（Ｓ２）は、割り込み処理終了（Ｔ１）後に再開されるスワップタスク処理１の終了まで引き伸ばされているが、これは、割り込み処理が終了（Ｔ１）されたとき、切換え制御回路１９は、前記スワプタスク選択情報が退避されていることに基づいて、セレクタ１８を先ずスワップタスクバッファ１６に切換えるからである。
第１４図には本発明に係るデータプロセッサの第３の実施例が示される。同図に示されるデータプロセッサ１Ｂはスーパスカラアーキテクチャを有し、複数の命令を２本のパイプラインによって並列的に実行することができる。すなわち、命令レジスタ１１Ａにラッチした命令を命令デコーダ１２Ａで解読して命令実行ユニット１３Ａがその命令を実行する第１の命令実行制御系列と、命令レジスタ１１Ｂにラッチした命令を命令デコーダ１２Ｂで解読して命令実行ユニット１３Ｂがその命令を実行する第２の命令実行制御系列とを有する。第１の命令実行制御系列で行われるパイプライン処理をパイプ０と称し、第２の命令実行制御系列で行われるパイプライン処理をパイプ１と称する。ＬＩＲＡは命令レジスタ１１Ａに対する命令ラッチの指示信号、ＬＩＲＢは命令レジスタ１１Ｂに対する命令ラッチの指示信号であり、前記指示信号ＬＩＲに対応される。
前記命令実行ユニット１３Ａ、１３Ｂは夫々に専用化されたシーケンス制御回路１３２Ａ，１３２Ｂと演算回路１３３Ａ，１３３Ｂを有する。パイプ０とパイプ１との間で生ずるデータコンフリクトのような命令相互間の依存関係は競合管理ユニット２５が命令デコーダ１２Ａ，１２Ｂのデコード結果に基づいて検出する。すなわち、競合管理ユニット２５は、命令デコーダ１２Ａ，１２Ｂからの命令解読結果に基づいて、パイプ０とパイプ１による命令の並列実行が可能か否かについてそれら命令相互間の依存関係を調べ、他の命令の実行結果に依存することになる命令の実行を遅らせるように、制御信号ＡＲＢＡ，ＡＲＢＢによってシーケンス制御回路１３２Ａ，１３２Ｂを制御する。
割り込み制御回路１３１、プログラムカウンタＰＣ，汎用レジスタＧＲは双方の命令実行ユニット１３Ａ，１３Ｂに共有されている。レジスタセットＳ１，Ｓ２は命令実行ユニット１３Ｂに専用化されている。それらの詳細については第１図のデータプロセッサと同じである。
このスーパスカラアーキテクチャーのデータプロセッサ１Ｂにおいて、前記セレクタ１８、切換え制御回路１９及びスワップタスクバッファ１６，１７は命令レジスタ１１Ｂ側の命令実行制御系列に配置されている。そして、第１図のデータプロセッサと同様に、命令フェッチユニット１０、命令キャッシュメモリ１４、内蔵周辺モジュール２０、データキャッシュメモリ１５などが設けられている。第１４図において第１図と同一機能を有するものには同一符号を付してその詳細な説明を省略する。尚、第１４図の場合、双方のスワップタスクバッファ１６、１７は内部バスＢＵＳを介してプログラムの初期ロードが行われるようになっている。
第１５図にはデータプロセッサ１Ｂにおいてデータコンフリクトを生じた場合の制御とタスク切換え制御の内容が例示されている。
例えばパイプラインステージｍで夫々命令レジスタ１１Ａ，１１Ｂにラッチされた命令のデコードステージ（ｍ＋１）で競合管理ユニット２５がデータコンフリクトを検出すると、後から実行されるべき命令の実行は、先に実行されるべき命令の実行結果が得られるまでＮＯＰ（ノン・オペレーション）とされる。すなわち、パイプラインステージ（ｍ＋４）におけるパイプ０のレジスタストア（Ｓｎ）の結果を当該ステージ（ｍ＋４）におけるパイプ１の演算ステージ（Ｅｎ）で利用できるようになるまで、パイプ１のパイプラインステージがＮＯＰとされる。
また、パイプラインステージｍ＋３においてスワップタスク１の実行が要求されると、切換え制御回路１９は、パイプラインステージｍ＋４においてセレクタ１８による選択状態をスワップタスクバッファ１６に切換え、当該パイプラインステージｍ＋４においてパイプ１ではスワップタスク１の先頭の命令に対する命令が命令レジスタ１１Ｂに転送される（Ｃｓ１）。タスク切換え時には前述の通りプログラムカウンタＰＣやレジスタＳＲ，Ｒ０〜Ｒ７の退避を要せずに、スワップタスク１の実行に移ることができる。以下パイプ１のパイプラインステージ毎に処理が順次進められる。このとき、命令実行ユニット１３Ｂは、スワップタスク１の実行にはレジスタセットＳ１を利用する。どのレジスタを利用するかは前記の例と同様に夫々の命令記述によって決定される。切換えられたスワップタスク１の最後の命令がパイプ１におけるパイプラインステージｎ＋１で命令デコーダ１２Ｂにてデコードされると、切換え制御回路１９に終了信号１２０が供給される。切換え制御回路１９はパイプラインステージｎ＋１でセレクタ１８に命令フェッチユニット１０を選択させ、これによってパイプ１のパイプラインステージｎ＋１以降では命令レジスタ１１Ｂには命令フェッチユニット１０から命令が供給される。これによってパイプ１では通常命令処理が再開される。通常命令処理への切換えに際しても、前述の通り、復帰のためのメモリアクセスを必要としない。以上のように、通常命令処理とスワップタスク１との間でのタスク切換えに際して、パイプラインは一切乱れを生じていない。
第１６図には本発明に係るデータプロセッサの第４の実施例が示される。同図に示されるデータプロセッサ１Ｃは前記データプロセッサ１Ｂと同様にスーパスカラアーキテクチャを有し、複数の命令を２本のパイプラインによって並列的に実行することができる。データプロセッサ１Ｂと相違する点は、パイプ０及びパイプ１によって通常命令処理を行っているときのデータコンフリクトの発生をスワップタスクへの切換え要因の一つとして有することである。競合管理ユニット２５はデータコンフリクトの発生に同期する制御信号２５０を切換え制御回路１９に与える。これによって切換え制御回路１９は、データコンフリクトによる通常命令処理におけるパイプ１の空きを利用してスワップタスク１の処理を行なう。但し、パイプ１側の命令レジスタ１１Ｂ及び命令デコーダ１２Ｂは一組しかないので、データコンフリクトによって実行が中断された命令実行の再開に際しては、命令フェッチからやり直すことになる。その制御はシーケンス制御回路１３２Ｂが行なう。その他の構成は図１４のデータプロセッサ１Ｂと同じであるのでその構成の詳細な説明は省略する。
第１７図にはデータコンフリクトを生じたときのタスク切換え制御の内容が例示されている。例えばパイプラインステージｍで夫々命令レジスタ１１Ａ，１１Ｂにラッチされた命令のデコードステージ（ｍ＋１）で競合管理ユニット２５がデータコンフリクトを検出すると、後から実行されるべき命令の実行は、先に実行されるべき命令の実行結果を利用できるまでＮＯＰ（ノン・オペレーション）とされる。すなわち、パイプラインステージ（ｍ＋４）におけるパイプ０のレジスタストア（Ｓｎ）の結果を当該ステージ（ｍ＋４）におけるパイプ１の演算ステージ（Ｅｎ）で利用できるようになるまで、パイプ１のパイプラインステージにおける通常命令処理の実行が停止される。その指示は制御信号ＡＲＢＢによって命令実行ユニット１３Ｂに通知される。このとき、競合管理ユニット２５は制御信号２５０を活性化して切換え制御回路１９に与える。切換え制御回路１９は、それに応答してセレクタ１８にスワップタスクバッファ１６を選択させる。これにより、パイプラインステージm＋１〜ｍ＋５においてパイプ１は、スワップタスク１の処理を行うことができる。スワップタスク１の処理に許容される期間は、データコンフリクトによってパイプ１の通常命令処理が中断される期間であり、その期間は競合管理ユニット２５で制御され、制御信号２５０に反映され、当該制御信号２５０がインアクティブにされることによって、セレクタ１８の選択状態は元の通常命令処理の選択状態（命令フェッチユニット１０の選択状態）に戻される。タスク切換え時には前述の通りプログラムカウンタＰＣやレジスタＳＲ，Ｒ０〜Ｒ７の退避を要せずに、スワップタスク１の実行に移ることができる。このとき、命令実行ユニット１３Ｂは、スワップタスク１の実行にはレジスタセットＳ１を利用する。どのレジスタを利用するかは前記の例と同様に夫々の命令記述によって決定される。
図１７の例では、パイプラインステージｍ＋３で夫々命令レジスタ１１Ａ，１１Ｂにラッチされた命令のデコードステージ（ｍ＋４）においても競合管理ユニット２５がデータコンフリクトを検出して、上記同様に、パイプラインステージ（ｍ＋７）におけるパイプ０のレジスタストア（Ｓｎ）の結果を当該ステージ（ｍ＋７）におけるパイプ１の演算ステージ（Ｅｎ）で利用できるようになるまで、パイプ１のパイプラインステージにおける通常命令処理の実行が停止され、それに代えて、パイプ１は、スワップタスク１の処理を行なってる。この例では、スワップタスク１の処理は細切れであり、その処理タイミングもデータコンフリクト発生時に限定されているが、データコンフリクトに固有の処理や処理インターバルに制限のない処理に適用して有効である。また、制御信号２５０は、前記信号２２、２３で選択されたスワップタスクを実際に処理するタイミングを規定する制御信号として利用してもよい。
第１８図には本発明に係るデータプロセッサの第５の実施例が示される。同図に示されるデータプロセッサ１Ｄは前記データプロセッサ１Ｂと同様にスーパスカラアーキテクチャを有し、複数の命令を２本のパイプラインによって並列的に実行することができる。データプロセッサ１Ｄは、データプロセッサ１Ｃと同様に、パイプ０及びパイプ１によって通常命令処理を行っているときのデータコンフリクトの発生をスワップタスクへの切換え要因の一つとするが、そのとき実行されるスワップタスクに専用的に割り当てられる命令レジスタ１１Ｃと命令デコーダ１２Ｃを備える点が前記データプロセッサ１Ｃと相違される。命令レジスタ１１Ｃの入力の選択はセレクタ２６が行い、命令デコーダ１２Ｂ又は１２Ｃの出力はセレクタ２７によって選択される。
競合管理ユニット２５はデータコンフリクトの発生に同期してイネーブルにされる制御信号２５０を切換え制御回路１９と前記セレクタ２７に与える。これによってセレクタ２７は命令デコーダ１２Ｃの出力を選択すると共に、制御信号ＬＩＲＢも命令レジスタ１１Ｃ側に供給され、命令レジスタ１１Ｂは現在保持している命令をそのまま維持し、それに代えて命令レジスタ１１Ｃが制御信号ＬＩＲＢに従って新たな命令をラッチ可能にされる。また、切換え制御回路１９は、イネーブル状態の制御信号２５０によってセレクタ２６によってスワップタスクバッファ１６又は１７を命令レジスタ１１Ｃに接続する。どちらを接続するかは選択可能であっても固定的であってもよい。例えばデータプロセッサのイニシャライズリセット時に設定される動作モードに応じて何れを選択するかを決定するようにできる。
データコンフリクトによる通常命令処理のパイプ１の空きを利用して例えばスワップタスク１の処理を行なう場合、パイプ１側にはそれ専用の命令レジスタ１１Ｃ及び命令デコーダ１２Ｃを備えるから、データコンフリクトによって実行が中断された命令実行の再開に際しては、データプロセッサ１Ｃのように命令フェッチからやり直す必要はない。即ちパイプラインは一切乱れない。その他の構成はデータプロセッサ１Ｃと同じであるのでその構成の詳細な説明は省略する。
第１９図にはデータコンフリクトを生じたときデータプロセッサ１Ｄで行われるタスク切換え制御の内容が例示されている。例えばパイプラインステージｍで夫々命令レジスタ１１Ａ，１１Ｂにラッチされた命令のデコードステージ（ｍ＋１）で競合管理ユニット２５がデータコンフリクトを検出すると、後から実行されるべき命令実行は、先に実行されるべき命令の実行結果が得られるまでＮＯＰ（ノン・オペレーション）とされる。すなわち、パイプラインステージ（ｍ＋４）におけるパイプ０のレジスタストア（Ｓｎ）の結果を当該ステージ（ｍ＋４）におけるパイプ１の演算ステージ（Ｅｎ）で利用できるようになるまで、パイプ１のパイプラインステージにおける通常命令処理の実行が停止される。第１７図との相違点は、第１９図のステージｍ＋４のパイプ１における演算ステージ（Ｅｎ）のために改めて命令フェッチ及びデコードを繰り返すことを要しないということである。パイプ１のパイプラインステージにおける通常命令処理の実行停止の指示は、制御信号ＡＲＢＢによって命令実行ユニット１３Ｂに通知される。このとき、競合管理ユニット２５は制御信号２５０を活性化して切換え制御回路１９に与える。切換え制御回路１９は、それに応答してセレクタ１８にスワップタスクバッファ１６を選択させる。これにより、パイプラインステージm＋１〜ｍ＋５においてパイプ１は、スワップタスク１の処理を行うことができる。スワップタスク１の処理に許容される期間は、データコンフリクトによってパイプ１の通常命令処理が中断される期間であり、その期間は競合管理ユニット１５で制御され、制御信号２５０に反映され、当該信号２５０がインアクティブにされることによって、セレクタ１８の選択状態は元の通常命令処理の選択状態（命令フェッチユニット１０の選択状態）に戻される。タスク切換え時には前述の通りプログラムカウンタＰＣやレジスタＳＲ，Ｒ０〜Ｒ７の退避を要せずに、スワップタスク１の実行に移ることができる。このとき、命令実行ユニット１３Ｂは、スワップタスク１の実行にはレジスタセットＳ１を利用する。どのレジスタを利用するかは前記の例と同様に夫々の命令記述によって決定される。
図１９の例では、パイプラインステージｍ＋３で夫々命令レジスタ１１Ａ，１１Ｂにラッチされた命令のデコードステージ（ｍ＋４）においても競合管理ユニット２５がデータコンフリクトを検出して、上記同様に、パイプラインステージ（ｍ＋７）におけるパイプ０のレジスタストア（Ｓｎ）の結果を当該ステージ（ｍ＋７）におけるパイプ１の演算ステージ（Ｅｎ）で利用できるようになるまで、パイプ１のパイプラインステージにおける通常命令処理の実行が停止され、それに代えて、パイプ１は、スワップタスク１の処理を行なってる。
第２０図には前記データプロセッサ１を適用したデータ処理システムの一例が示される。スデータプロセッサ１の外部バス４には前記外部メモリ２及び入出力回路５が代表的に示されている。外部バス４はアドレスバスＡＢＵＳ，データバスＤＢＵＳ及びコントロールバスＣＢＵＳを含む。このシステムにおいて、データプロセッサ１のスワップタスクバッファ１６にはＤＭＡ転送制御及びデータ変換制御プログラムが格納されている。このＤＭＡ転送制御及びデータ変換制御プログラムの起動は前記制御信号２３の一つに割り当てられた割り込み信号２３０とされる。この割り込み信号２３０は、入出力回路５から供給される。
第２１図には前記ＤＭＡ転送制御及びデータ変換制御プログラムによるタスクの一例が示される。すなわち、入出力回路５から割込み信号２３０が切換え制御回路１９に与えられると、データプロセッサ１の処理プログラムは、スワップタスクバッファ１６に格納されているＤＭＡ転送制御及びデータ変換制御プログラムに切換えられる。このプログラムによって処理されるタスクは、入出力回路５からデータを読み込み、読み込んだデータを命令実行ユニット１３でデータ変換（例えば圧縮や座標変換）し、変換されたデータをメモリ２の所定領域に書込み制御する。読み出しアドレスと書込みアドレスは、データ転送及びデータ変換毎に、前記プログラムによって順次更新される。そのようなＤＭＡ転送制御及びデータ変換制御プログラムのプログラム記述の最小単位の例を第２２図に示す。スワップタスクバッファを用いたタスク切換えには前述の通り、通常の割り込み処理のような退避処理を必要とせずパイプラインの乱れもないから、発生したイベントに対して高速に応答することができる。
また、データプロセッサ１に代表される上記実施例において、スワップタスクバッファ１６、１７にＤＭＡ転送制御プログラムを設定した場合、第２３図に例示されるようなシステム構成に比べて、キャッシュコヒーレンシの問題を解決するいためのデータプロセッサ１の負担を軽減することができる。すなわち、第２３図のシステム構成では、キャッシュメモリ１５がライトバック方式を採用するとき、キャッシュメモリ１５の書き換えが外部メモリに反映されていない状態でＤＭＡコントローラ６がＤＭＡ転送を開始するとキャッシュコヒーレンシを保てなくなるので、データプロセッサ１Ｅはキャッシュコヒーレンシを保たないＤＭＡ転送動作の起動を常時監視し、それを検出したときは予じめライトバック動作を行なわせることが必要であり、データプロセッサ１Ｅは、キャッシュコヒーレンシを保たない動作を検出するための処理を負担しなければならない。これに対し、第１図のデータプロセッサ１を例にすると、データプロセッサ１の処理タスクがセレクタ１８等を介してＤＭＡ転送制御処理に切換えられた状態において、ＤＭＡコントローラとしての機能は実行ユニット１３が実現することになる。従って、データプロセッサ１の外部メモリ間、或いは外部メモリと外部の入出力回路間でＤＡＭデータ転送を制御する場合、ＤＭＡ転送制御のためのアドレス信号若しくはアクセス制御情報は必ずデータキャッシュメモリ１５を通すことになる。これにより、キャッシュメモリ１５がライトバック方式を採用する場合に、キャッシュメモリ１５の書き換えが外部メモリに反映されていない状態でＤＭＡ転送が開始されても、そのような外部メモリに反映されていないデータはキャッシュメモリ１５から命令実行ユニット１３に読み込まれて、転送されることになるから、データプロセッサ１は、キャッシュコヒーレンシを保たない動作を検出するための処理を負担する必要がない。尚、データプロセッサ１で実現するＤＭＡ転送制御機能において、転送データは一旦データプロセッサ１に読み込まれることになる。
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、スワップタスクバッファの数は上記実施例に限定されず適宜変更することができる。また、キャッシュメモリはデータキャッシュメモリと命令キャッシュメモリを分離した構成に限定されず、命令とデータに兼用されるユニファイド・キャッシュメモリであってもよい。また、パイプラインステージの段数は上記実施例の５段に限定されない。また、スーパスカラデータプロセッサにおける並列動作可能なパイプの数は２本に限定されず、それ以上であってもよい。更に、スワップタスクの内容は必要に応じてどのようなものでも適用でき、制限されない。
産業上の利用可能性
以上のように、本発明に係るデータプロセッサは、種々のデータ処理システム、特に頻繁にタスクの切換えが行われるシステム、データ処理能力の向上を必要とするシステムに広く適用することができ、例えば、ディジタルカメラにおける撮影データの転送とデータ圧縮とをスワップタスクとして備えた組み込み機器制御用のコンピュータシステムなどに適用することができる。
【図１】
0003778573.tif 000002
【図２】
0003778573.tif 000003
【図３】
0003778573.tif 000004
【図４】
0003778573.tif 000005
【図５】
0003778573.tif 000006
【図６】
0003778573.tif 000007
【図７】
0003778573.tif 000008
【図８】
0003778573.tif 000009
【図９】
0003778573.tif 000010
【図１０】
0003778573.tif 000011
【図１１】
0003778573.tif 000012
【図１３】
0003778573.tif 000013
【図１２】
0003778573.tif 000014
【図１４】
0003778573.tif 000015
【図１５】
0003778573.tif 000016
【図１６】
0003778573.tif 000017
【図１７】
0003778573.tif 000018
【図１８】
0003778573.tif 000019
【図１９】
0003778573.tif 000020
【図２０】
0003778573.tif 000021
【図２１】
0003778573.tif 000022
【図２２】
0003778573.tif 000023
【図２３】
0003778573.tif 000024