(57)【特許請求の範囲】
【請求項１】
命令をデコードするデコード手段と、内部バスと、転送データ保持手段と、バス制御手段とを含んで、半導体チップ上に集積されたデータ処理装置であって、上記内部バスと上記転送データ保持手段とは、上記内部バスから上記転送データ保持手段への片方向のデータ転送を行うように結合されてなり、
上記転送データ保持手段と上記バス制御手段とは、上記転送データ保持手段から上記バス制御手段への片方向のデータ転送を行うように結合されてなり、
上記転送データ保持手段へのデータの書き込みは、上記デコード手段における第１の命令のデコード結果に応答して上記内部バスを介して行われ、
上記転送データ保持手段からのデータの読み出しは、上記デコード手段における第２の命令のデコード結果に応答して上記バス制御手段を介して行われ、上記読み出されたデータは上記データ処理装置外部に転送されることを特徴とするデータ処理装置。
【請求項２】
上記転送データ保持手段は複数のデータ保持領域を含んでなり、
上記第２の命令のデコード結果に応答して、上記転送データ保持手段からの読み出しを行う範囲を上記データ保持領域単位で指定することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
上記データ保持領域の各々は有効ビットを有し、上記有効ビットの情報に基づいて、当該データ保持領域からのデータの読み出しを行うか否かの制御を行うことを特徴とする請求項２記載のデータ処理装置。
【請求項４】
上記転送データ保持手段は、上記転送データ保持手段への書き込み及び上記転送データ保持手段からの読み出し動作を抑止する抑止手段を含んでなることを特徴とする請求項１ないし３のいずれかに記載のデータ処理装置。
【請求項５】
上記抑止手段は、上記転送データ保持手段外部からの信号に応答して上記転送データ保持手段への書き込み及び上記転送データ保持手段からの読み出し動作を抑止することを特徴とする請求項４記載のデータ処理装置。
【請求項６】
上記データ処理装置は、論理アドレスを物理アドレスに変換するアドレス変換バッファを更に有し、上記外部からの信号は、上記アドレス変換バッファから供給されることを特徴とする請求項５記載のデータ処理装置。
【請求項７】
上記抑止手段は、上記デコード手段における第３の命令のデコード結果に応答して上記内部バスを介して書き込まれる情報に応答して上記転送データ保持手段への書き込み及び上記転送データ保持手段からの読み出し動作を抑止することを特徴とする請求項４記載のデータ処理装置。
【請求項８】
内部バスと、上記内部バスを介して書き込まれたデータを保持する転送データ保持手段と、上記転送データ保持手段に保持されたデータのチップ外部への転送を制御するバス制御手段とを含んでワンチップ上に構成されたデータ処理装置であって、
上記転送データ保持手段へのデータの書き込みは、第１の命令に応答して上記内部バスを介してのみ行われ、
上記転送データ保持手段からのデータの読み出しは、第２の命令に応答して上記バス制御手段を介してのみ行われることを特徴とするデータ処理装置。
【請求項９】
データ処理装置と、上記データ処理装置に外部バスを介して接続された外部装置とを含んでなるデータ処理システムであって、
上記データ処理装置は、命令をデコードするデコード手段と、内部バスと、転送データ保持手段と、外部バス制御手段とを含んで、半導体チップ上に集積されてなり、
上記内部バスと上記転送データ保持手段とは、上記内部バスから上記転送データ保持手段への片方向のデータ転送を行うように結合されてなり、
上記転送データ保持手段と上記外部バス制御手段とは、上記転送データ保持手段から上記バス制御手段への片方向のデータ転送を行うように結合されてなり、
上記転送データ保持手段へのデータの書き込みは、上記デコード手段における第１の命令のデコード結果に応答して上記内部バスを介して行われ、
上記転送データ保持手段からのデータの読み出しは、上記デコード手段における第２の命令のデコード結果に応答して上記外部バス制御手段を介して行われ、上記読み出されたデータは上記外部バスを介して上記外部装置に転送されることを特徴とするデータ処理システム。
【請求項１０】
上記読み出されたデータは、上記外部装置の動作を制御するコマンド信号であることを特徴とする請求項９記載のデータ処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はマイクロプロセッサやマイクロコンピュータ等のデータ処理装置、さらにはこのデータ処理装置を適用したデータ処理システムに関し、データ転送の高速化に適用して有効な技術に関する。
【０００２】
【従来の技術】
従来、マイクロプロセッサ等のデータ処理装置において、マイクロプロセッサチップ外部に接続される外部デバイスとの間でデータ転送を行う場合、ＲＡＭやキャッシュメモリを利用する方法が採られていた。
【０００３】
ここでＲＡＭは、命令やデータを蓄えるためのバッファとして汎用的に用いられるものであり、読み出しや書き込みを行うことが可能である。基本的にＲＡＭへのデータ設定はデータ転送命令を用いてソフトウェアにより行われる。このＲＡＭを用いて外部デバイスとの間でデータ転送を行う場合、すなわち、外部デバイスからＲＡＭへの外データの読み込みや、ＲＡＭから外部デバイスへのデータの書き込みについても、命令を用いたソフトウェアにより行われる。従ってマイクロプロセッサが自動的に、すなわち、ハードウェアにより行うことはない。この場合外部デバイスからＲＡＭへのデータ転送は、毎回必要なデータ（例えば８バイト、４バイト、２バイト、１バイト）だけを転送するシングル転送が一般に使われる。
【０００４】
一方、キャッシュメモリもまた命令やデータのバッファとして使用される点ではＲＡＭと共通する。しかしながらキャッシュメモリの場合は、外部デバイスからのデータの読み込みや書き込みは、命令によるソフトウェアによってではなく、マイクロプロセッサそのものが自動的に、すなわち、ハードウェアにより行う。このデータの取り込みはキャッシュ１ライン分（例えば１６バイト、３２バイト、６４バイト）を１回の転送要求で転送するバースト転送が一般に用いられる。最近ではキャッシュメモリへのデータの転送をソフトウェアで制御するためのプリフェッチ命令やライトバック命令などを備えるマイクロプロセッサが増えてきているが、マイクロプロセッサのハードウェアそのものによるデータの入れ替えが最優先される。
【０００５】
【発明が解決しようとする課題】
キャッシュメモリを用いた場合、キャッシュメモリへのデータの転送をマイクロプロセッサが行うため、必要なデータをキャッシュメモリから追い出している可能性がある。このためその度に外部デバイスへのバースト転送が必要になり、プログラムによっては無駄な転送サイクルが発生する可能性がある。
【０００６】
バースト転送はキャッシュメモリのようにある一定量のデータを転送する場合に効果を発揮するため、通常の単発のロード／ストアには向いていない。またキャッシュメモリはプログラムに関係なく外部デバイスへのバースト転送を発生するため、これをソフトウェアで完全に制御するのは難しい。例えば一定量のデータを特定の領域に確実に１度だけ転送するようにしたいような場合、キャッシュメモリを使用すると、完全にデータ（キャッシュ１ライン分）が揃う前に外部デバイスへ追い出される可能性があるため、現実のデータ転送において利用する上で問題がある。
【０００７】
この問題点を回避するため、現実には、上述のごとく、ＲＡＭを用いて、８、４、２、１バイトなどの小さなデータ単位での転送命令によるシングル転送を繰り返すことにより、確実に外部デバイスへ書き込むことになるが、バースト転送に比べ転送効率の点で性能は低下せざるを得ない。
【０００８】
本発明の目的は、マイクロプロセッサ等のデータ処理装置における外部デバイスとの高速なデータ転送を実現することにある。
【０００９】
【課題を解決するための手段】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば下記のとおりである。
【００１０】
すなわち、本発明のデータ処理装置は、転送データ保持手段（ストアバッファ）を有し、転送データ保持手段へのデータの書き込みは内部バスを介して、転送データ保持手段からのデータの読み出しはバス制御手段を介して、各々命令によるソフトウェア制御により行うものである。
【００１１】
より具体的には、本発明のデータ処理装置は、命令をデコードするデコード手段と、内部バスと、転送データ保持手段（ストアバッファ）と、バス制御手段とを含んで半導体チップ上に集積され、上記内部バスと上記転送データ保持手段とは上記内部バスから上記転送データ保持手段への片方向のデータ転送を行うように結合されてなり、上記転送データ保持手段と上記バス制御手段とは上記転送データ保持手段から上記バス制御手段への片方向のデータ転送を行うように結合されてなり、上記転送データ保持手段へのデータの書き込みは、上記デコード手段における第１の命令のデコード結果に応答して上記内部バスを介して行われ、上記転送データ保持手段からのデータの読み出しは、上記デコード手段における第２の命令のデコード結果に応答して上記バス制御手段を介して行われ、上記読み出されたデータは上記データ処理装置外部に転送されることを特徴とする。
【００１２】
別観点のより具体的手段としての本発明のデータ処理装置は、内部バスと、上記内部バスを介して書き込まれたデータを保持する転送データ保持手段と、上記転送データ保持手段に保持されたデータのチップ外部への転送を制御するバス制御手段とを含んでワンチップ上に構成され、上記転送データ保持手段へのデータの書き込みは第１の命令に応答して上記内部バスを介してのみ行われ、上記転送データ保持手段からのデータの読み出しは、第２の命令に応答して上記バス制御手段を介してのみ行われることを特徴とする。
【００１３】
上記手段によれば、データ処理装置外部へのデータ転送、例えばデータ処理装置外部に接続された外部デバイスへのコマンド等の転送に際し、転送すべきデータの格納用として、従来技術におけるＲＡＭやキャッシュメモリに代えて、転送データ保持手段を用いる。この転送データ保持手段へのデータの書き込みを、通常のＲＡＭへのデータ書き込みと同様にデータ転送命令等の命令を用いてソフトウェアにより行うことにより、キャッシュメモリを用いた場合におけるキャッシュメモリ内データの追い出しの問題を解決することができる。また、所定の命令に応答して転送データ保持手段中のデータ全体を、あるいは所定単位毎にバス制御手段を介してチップ外部へ連続転送することにより、ＲＡＭを用いた場合に比べ効率の良い転送が可能となる。
【００１４】
上記構成において、転送データ保持手段を複数のデータ保持領域から構成し、第２の命令のデコード結果に応答して転送データ保持手段からの読み出しを行う範囲をデータ保持領域単位で指定することもできる。また、データ保持領域の各々に有効ビットを設け、有効ビットの情報に基づいて、当該データ保持領域からのデータの読み出しを行うか否かの制御を行うこともできる。これにより、転送すべきデータサイズを可変にすることが可能となる。
【００１５】
更に、転送データ保持手段を、転送データ保持手段への書き込み及び転送データ保持手段からの読み出し動作を抑止する抑止手段を含んで構成することもできる。これにより、転送データ保持手段中のデータを外部に転送させないためのセキュリティ機能を持たせることができる。
【００１６】
上記抑止手段の一例は、転送データ保持手段外部からの信号に応答して書き込み及び読み出し動作を抑止するものであり、より具体的には、ＴＬＢ、すなわち、論理アドレスを物理アドレスに変換するアドレス変換バッファから供給される信号に応答して抑止する。上記抑止手段の他の例は、第３の命令に応答して内部バスを介して書き込まれる情報に応答して書き込み及び読み出し動作を抑止するものである。
【００１７】
一方、本願において開示されるデータ処理システムは、データ処理装置と、上記データ処理装置に外部バスを介して接続された外部装置（外部デバイス）とを含んでなり、上記データ処理装置は、命令をデコードするデコード手段と、内部バスと、転送データ保持手段（ストアバッファ）と、外部バス制御手段とを含んで半導体チップ上に集積されてなり、上記内部バスと上記転送データ保持手段とは上記内部バスから上記転送データ保持手段への片方向のデータ転送を行うように結合されてなり、上記転送データ保持手段と上記外部バス制御手段とは上記転送データ保持手段から上記バス制御手段への片方向のデータ転送を行うように結合されてなり、上記転送データ保持手段へのデータの書き込みは、上記デコード手段における第１の命令のデコード結果に応答して上記内部バスを介して行われ、上記転送データ保持手段からのデータの読み出しは、上記デコード手段における第２の命令のデコード結果に応答して上記外部バス制御手段を介して行われ、上記読み出されたデータは上記外部装置に転送されることを特徴とする。
【００１８】
上記データ処理システムにおいて、転送データ保持手段から読み出されたデータは、例えば、外部装置（外部デバイス）の動作を制御するコマンド信号である。
【００１９】
【発明の実施の形態】
図１は、本発明の実施例に係るデータ処理装置（１００）及びこのデータ処理装置の外部に接続される外部デバイスを含むデータ処理システムの全体構成を示す図である。
【００２０】
まずデータ処理装置（１００）の構成を説明する。データ処理装置（１００）は、特に制限されないが、３２ビットのパイプラインＲＩＳＣ(Reduced Instruction Set Computer)アーキテクチャを有し、データプロセッサの命令セットは１６ビット長とされる。またデータ処理装置（１００）は、特に制限されないが、ＣＭＯＳプロセス技術により、単結晶シリコンのような１個の半導体基板（チップ）上に集積して形成されている。
【００２１】
命令フェッチユニット（１０１）によりフェッチされた命令は、デコードユニット（１０２）によってデコードされる。命令ＴＬＢ（１０３）は、論理アドレスを物理アドレスに変換するアドレス変換バッファ（ＴＬＢ）であって、命令フェッチに関するアドレス変換に係るものである。命令キャッシュ（１０４）は、命令ＴＬＢ（１０３）からの物理アドレスによってアクセスされる。データＴＬＢ（１１２）は、論理アドレスを物理アドレスに変換するアドレス変換バッファ（ＴＬＢ）であって、データに関するアドレス変換に係るものである。データキャッシュ（１１３）は、データＴＬＢ（１１２）からの物理アドレスによってアクセスされる。バス制御ユニット（１１１）は、データ処理装置（１００）外部のバス（アドレスバス及びデータバス）の制御を行う。
【００２２】
整数演算ユニット（１０５）、浮動小数点演算ユニット（１０６）、ユニット１（１０７）、ユニット２（１０８）、ロード／ストアユニット（１０９）、ストアバッファ（１１０）、及びデータキャッシュ（１１３）は、内部バス（１３３）を介して相互に接続される。ここでユニット１（１０７）及びユニット２（１０８）は、特に制限されないが、整数演算ユニット（１０５）等と内部バス（１３３）を介して接続されるべき機能ブロックであって、例えばＤＭＡＣ(Direct Memory Access Controller)やＤＣＴ(Direct Cosine Transform unit)などがある。
【００２３】
命令フェッチユニット（１０１）は、信号線（１２０）を介して命令ＴＬＢ（１０３）と命令キャッシュ（１０４）に命令フェッチを要求する。信号線（１２０）は、より具体的には、命令フェッチのアドレスや要求信号、分岐要求などである。命令ＴＬＢ（１０３）は信号線（１２０）を受けアドレス変換を行う。アドレス変換に失敗したときは例外信号（１２１）を使って命令フェッチユニット（１０１）へ知らせる。命令キャッシュ（１０４）は命令ＴＬＢ（１０３）が変換したアドレスを用いてキャッシュから命令コード（１２３）をデコードユニット（１０２）へ返す。命令がキャッシュに存在しない場合や、外部デバイスから命令を読み出す必要がある場合は信号線（１２５）を用いてバス制御ユニット（１１１）に対してデータ転送要求を発行する。バス制御ユニットは（１１１）は信号線（１２６）を使って命令コードを命令キャッシュ（１０４）に返す。
【００２４】
命令コード（１２３）を受けたデコードユニット（１０２）は、命令コードのデコードを行い、起動する実行ユニットに対して制御信号（１３１）を出力する。実行ユニットとしては、整数演算ユニット（１０５）、浮動小数点ユニット（１０６）、ユニット１（１０７）、ユニット２（１０８）、ロード／ストアユニット（１０９）などがある。これらの実行ユニットは内部バス（１３３）を介して接続されており、各実行ユニット間及びデータキャッシュ（１１３）との間で高速なデータ転送を行う。ストアバッファ（１１０）へのデータ転送もこの内部バス（１３３）を介して行う。
【００２５】
ロード／ストアユニット（１０９）は、信号線（１３２）を使って、ストアバッファ（１１０）、データＴＬＢ（１１２）、データキャッシュ（１１３）にアクセスを行う。信号線（１３２）は、より具体的には、アドレスや読み出し／書き込み要求などである。
【００２６】
次に、転送データ保持手段であるストアバッファ（１１０）に関連する動作を説明する。ストアバッファ（１１０）への要求の種類としては、ストアバッファへの書き込み動作、及びストアバッファから外部デバイスへの連続転送の動作がある。ストアバッファ（１１０）への書き込みは内部バス（１３３）を介して行う。ストアバッファへ書き込まれるデータとしては、例えば整数演算ユニット（１０５）や浮動小数点ユニット（１０６）内のレジスタからの転送データがある。ストアバッファ（１１０）から外部デバイスへの転送動作に関しては、ストアバッファからバス制御ユニット（１１１）に対して、信号線（１２７）を介して転送要求が、また、信号線（１２８）を介して転送先アドレスが発行する。転送先アドレスは、ロード／ストアユニット（１０９）からの信号線（１３２）によって直接与えたり、あるいは、データＴＬＢ（１１２）から信号線（１３５）を使って与えることも可能である。ストアバッファの構成については図２以降で詳しく説明する。
【００２７】
外部デバイスへのロード／ストアは、信号線（１３２）を通してデータＴＬＢ（１１２）やデータキャッシュ（１１３）に対して行う。データＴＬＢ（１１２）ではアクセスのあったアドレスを必要に応じて変換し、データキャッシュ（１１３）へ伝える。この変換後のアドレスなどの情報は信号線（１３５）を介してストアバッファへも出力される。データキャッシュ（１１３）は必要なデータがキャッシュ上に存在すれば内部バス（１３３）との間でデータの転送を行う。キャッシュ上にデータが存在していない場合、データキャッシュ（１１３）はバス制御ユニット（１１１）に対して外部デバイスとのデータ転送要求（１２９）を出す。このデータ転送はデータ線（１３０）を介して行われる。
【００２８】
バス制御ユニット（１１１）は、命令キャッシュ（１０４）やストアバッファ（１１０）やデータキャッシュ（１１３）からのデータ転送要求を調停し、アドレス線（１３６）とデータ線（１３７）を用いて外部デバイスとの間でデータ転送を行なう。
【００２９】
アドレス線（１３６）、データ線（１３７）は、それぞれデータ処理装置チップ外のアドレスバス、データバスに接続される。このアドレスバス、データバスには、外部デバイスとして、ＲＯＭ（１１４）、ＳＲＡＭ（１１５）、ＤＲＡＭ（１１６）、ＰＣＭＣＩＡ（１１７）、周辺チップ（１１８）、グラフィックチップ（１１９）等がつながる。周辺チップとしてはＦＰＧＡ(Field Programmable Gate Array)、ＡＳＩＣ、ＬＣＤコントローラ等がある。
【００３０】
ストアバッファから上記の外部デバイスへ転送されるデータの一例としては、グラフィックチップ（１１９）へ供給される座標変換コマンド信号、ＬＣＤコントローラへ供給される描画コマンド等がある。
【００３１】
図２に、転送データ保持手段であるストアバッファ（１１０）の内部構成を示す。ストアバッファ（１１０）はバッファ（２０５）を含んでなり、バッファ（２０５）は複数のデータ単位（データ保持領域）から構成され、これら複数のデータ単位は、図示のごとくマトリクス状に形成される。
【００３２】
ストアバッファ（１１０）へは信号線（１３２）を通じて書き込み／外部デバイスへの転送などの要求が来る。この要求をストアバッファアクセス判定回路（２０１）が受け、有効な要求であるかどうかを判定する。要求が有効である場合、要求をデコードした信号が、ストアバッファアクセス判定回路（２０１）から読み出し／書き込み制御回路（２０２）へ出力される。
【００３３】
読み出し／書き込み制御回路（２０２）は、ストアバッファアクセス判定回路（２０１）からの信号を受け、バッファ（２０５）へのアドレスの指定と読み出し／書き込み信号およびセレクタの制御を信号線（２０７）を使って行なう。バッファ（２０５）の構成は、データ単位（データ保持領域）毎へのデータの読み出し／書き込みができる構成であれば特に限定されないが、ＲＡＭセルやフリップフロップなどで構成することができる。各データ単位のサイズは、８ビット、１６ビット、３２ビット、６４ビットなどの単位とする。
【００３４】
バッファ（２０５）への内部データバス（１３３）からの書き込みは、内部バス上のセレクタ（２０４）により所定のデータ単位が選択され、この選択されたデータ単位へデータが書き込まれる。この書き込み動作は、ストア命令のデコード結果によりロード／ストアユニット（１０９）から信号線（１３２）を通してストアバッファ（１１０）へ指定される。
【００３５】
バッファ（２０５）からの読み出しは、セレクタ（２０６）により所定のデータ単位が選択され、この選択されたデータ単位からのデータがデータ線（１２８）に出力される。この読み出し動作は、外部メモリへの転送命令のデコード結果によりロード／ストアユニット（１０９）から信号線（１３２）を通してストアバッファ（１１０）へ指定される。
【００３６】
この読み出し動作においては、バッファ（２０５）内のデータ全てを順次読み出す動作の他、命令の指定により、バッファ（２０５）内の特定データ単位（データ保持領域）毎に指定して順次読み出すこともできる。この読み出し動作は、外部メモリへの転送命令のデコード結果によりロード／ストアユニット（１０９）から信号線（１３２）を通してストアバッファ（１１０）へ指定される。特定データ単位は命令のイミディエイトや、レジスタなどにより指定する。
【００３７】
バッファ（２０５）内の特定データ単位（データ保持領域）毎に指定して順次読み出すことにより、外部デバイスが受け付けるコマンド長に対応したデータを転送することが可能になり、データ転送の効率化をはかることが可能となる。
【００３８】
この読み出し値はストアバッファ（１１０）への要求が外部デバイスへの転送であった場合に用いられ、読み出し／書き込み制御回路（２０２）はバッファ（２０５）に対して、読み出し指定範囲分の読み出しを指示する。同時に外部バスアクセス制御回路（２０３）に対して、外部デバイスへの転送バスサイクルの起動を要求する。外部バスアクセス制御回路（２０３）は外部デバイスへの転送バスサイクルの要求を受けて、信号線（１２７）を介して、転送の要求を発行する。この際、外部デバイスのアドレスとしてデータＴＬＢからの情報（１３５）を用いることもある。転送の範囲は一定であることもあれば、信号線（１３２）により指定することも可能である。データＴＬＢからの情報としては、物理アドレスやページサイズの情報などがある。
【００３９】
図３に、ストアバッファの別の形態を示す。基本的には図２のストアバッファと同じであるが、ストアバッファからの読み出し範囲の指定方法が異なる。
【００４０】
すなわちバッファ（３０１）は、データだけでなく、各データ単位ごとに有効ビット（Ｖビット）を有している。読み出し／書き込み制御回路（３０４）は、バッファ（３０１）へ書き込みがあるたびに書き込むデータに対応するＶビットを信号線（３０２）を使って有効の状態にする。信号線（１３２）により外部デバイスへの転送要求が発行されると、外部バスアクセス制御回路（３０５）はバッファ（３０１）から読み出されたＶビット（３０３）を見て、有効なデータだけを転送する。
【００４１】
各データ単位ごとに有効ビット（Ｖビット）を設けることによりデータ転送範囲を図２で示したように命令コードやレジスタで指定する必要がなくなり、データ転送範囲の指定が容易に行える。
【００４２】
図４に、ストアバッファの更に別の形態を示す。基本構造は図２のストアバッファと同じであるが、ストアバッファ（１１０）への書き込み及びストアバッファ（１１０）からの読み出しを抑止する手段を内蔵する。この抑止を行うための要因は、特に限定しないが、ストアバッファの外部から与えられる。図４に示した形態では、データＴＬＢ（１１２）からの信号線（１２２）により例外信号などを受けることにより抑止動作を行う。また、ストアバッファ（１１０）内に内蔵したモードレジスタ（４０８）によっても抑止動作を行うことができる。
【００４３】
ストアバッファ（１１０）への書き込み要求が発生すると、読み出し／書き込み制御回路（４０５）は内部データバス（１３３）のデータをセレクタ（４０１）を通してバッファ（３０１）へ書き込む制御を行なう。この時セレクタ（４０１）の制御は制御信号（４０７）を用いて行なう。Ｖビットの書き込みは図３と同じく信号線（３０２）を用いて行なう。
【００４４】
バッファ（３０１）への書き込みと並行して、データバッファ（４０４）とＶビットバッファ（４０３）には１度の書き込みによって書き変わる前のバッファ（３０１）の一部をコピーする。読み出し／書き込み制御回路（４０５）は信号線（１２２）を介してデータＴＬＢ（１１２）から例外信号などを受けとる。これによりストアバッファ（１１０）への書き込みを抑止しなくてはいけない場合、データバッファ（４０４）とＶビットバッファ（４０３）に保持した内容をバッファ（３０１）へ書き戻す。データバッファ（４０４）の内容は信号線（４０２）を経由してセレクタ（４０１）で選択されてバッファ（３０１）へ書き戻される。Ｖビットバッファ（４０３）の内容は一度、読み出し／書き込み制御回路に信号線（４０６）を経由して戻り、信号線（３０２）を通して書き戻される。
【００４５】
書き込みの抑止はモードレジスタ（４０８）によっても可能である。モードレジスタ（４０８）はストアバッファ（１１０）へのアクセスが可能なモードを格納している。モードレジスタ（４０８）の設定は内部データバス（１３３）から行う。ストアバッファ（１１０）への書き込みがこのモードに違反している場合、ストアバッファ（１１０）への書き込みは抑止される。この抑止による動作は信号線（１２２）による抑止による動作と同じである。
【００４６】
信号線（１２２）やモードレジスタ（４０８）により外部デバイスへの転送に対しても抑止を行うことが可能である。ただし外部デバイスへの転送動作では、バッファ（３０１）に対する書き込み動作がないため、抑止を行う必要があるのは、外部バスアクセス制御回路（３０５）における外部バスアクセスの起動の抑止だけである。この抑止を信号線（１２２）やモードレジスタ（４０８）の値を受けた読み出し／書き込み制御回路（４０５）からの指示で行う。
【００４７】
図５は、本発明の図１及び図４の実施例におけるストアバッファへの書き込みフローを示すものである。ストアバッファへの書き込み命令が信号線（１２３）を介してフェッチされる（５０１）と、デコードユニット（１０２）においてデコード（５０２）が行なわれる。デコード後、整数演算ユニット（１０５）などが保有するレジスタなどを用いてストアバッファのアドレスが生成され（５０３）、ロード／ストアユニット（１０９）を介してストアバッファ（１１０）へのデータ及びＶビットの書き込み（５０４）が行なわれる。ロード／ストアユニット（１０９）からストバッファ（１１０）への書き込み要求は信号線（１３２）を通して行われる。その書き込みと同時にデータＴＬＢ（１１２）においてアクセス権のチェック（５０５）が実行される。ＴＬＢを用いない場合はモードレジスタ（４０８）によりこのアクセス権のチェックを行う。ただしバッファ（３０１）へは内部バス（１３３）を通して書き込みは既に（５０４）で行われている。アクセス権の判定の結果（５０６）アクセス権がある場合、ストアバッファへのデータ及びＶビットの書き込み（５０４）は正常に完了したものとして終了する。アクセス権がない場合、データバッファ（４０４）とＶビットバッファ（４０３）に保持した書き込み前のデータ及びＶビットをバッファ（３０１）に書き戻す（５０７）。この書き戻しにより、ストアバッファへの書き込みを抑止する。その後、例外を発生させ（５０８）、ストアバッファへの書き込みが正常に終了しなかったことを知らせる。
【００４８】
図６は、本発明の図１及び図４の実施例におけるストアバッファから外部デバイスへの転送フローを示すものである。ストアバッファの転送命令が信号線（１２３）を介してフェッチされる（６０１）と、デコードユニット（１０２）においてデコード（６０２）が行われる。デコード後、整数演算ユニット（１０５）などが保有するレジスタなどを用いてストアバッファのアドレス及び転送範囲が指定される（６０３）。ストアバッファの転送動作指示はロード／ストアユニット（１０９）から信号線（１３２）を通してストアバッファアクセス判定回路（２０１）へ伝えられ、ストアバッファアクセス判定回路（２０１）から読み出し／書き込み制御回路（４０５）にバッファ（３０１）読み出し要求を出す。さらに外部バスアクセス制御回路（３０５）においてストアバッファ転送動作の起動を始める。この動作と平行して、ストアバッファのアドレスはデータＴＬＢ（１１２）などでアドレス変換する際にアクセス権のチェック（６０４）を行う。アクセス権の判定（６０５）の結果、アクセス権がなければ例外を発生し（６０６）、読み出し／書き込み制御回路（４０５）へ信号線（１２２）を介して伝える。ＴＬＢを用いない場合、このアクセス権のチェックはモードレジスタ（４０８）を用いて行い、信号線（４０９）を介して読み出し／書き込み制御回路（４０５）へ伝える。読み出し／書き込み制御回路（４０５）は信号線（１２２）や信号線（４０９）からの情報を得て、アクセス権がなければ、外部バスアクセス制御回路（３０５）へストアバッファ転送動作の抑止を指示する。アクセス権がある場合、ストアバッファの読み出し（６０７）を行い、Ｖビットを判定し（６０８）、有効データなら外部デバイスへの転送（６１０）を行う。無効なデータなら外部デバイスへの転送（６１０）は行わない。その後、６０３で指定した転送指定範囲内かの判定（６１１）を行い、転送指定範囲内なら、ストアバッファのアドレスを加算し（６０９）、ストアバッファの読み出し（６０７）に戻る。転送指定範囲を超えた段階で処理は終了する。
【００４９】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００５０】
例えば、上記実施形態では、命令ＴＬＢとデータＴＬＢとを別々に有する構成を例に説明したが、命令データ共用のＴＬＢを有する構成であっても良い。
【００５１】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば次のとおりである。
【００５２】
すなわち、転送すべきデータの格納用として、従来技術におけるＲＡＭやキャッシュメモリに代えて、転送データ保持手段を用いる。この転送データ保持手段へのデータの書き込みを、通常のＲＡＭへのデータ書き込みと同様にデータ転送命令等の命令を用いてソフトウェアにより行うことにより、キャッシュメモリを用いた場合におけるキャッシュメモリ内データの追い出しの問題を解決することができる。また、所定の命令に応答して転送データ保持手段中のデータ全体を、あるいは所定単位毎にバス制御手段を介してチップ外部へ連続転送することにより、ＲＡＭを用いた場合に比べ効率の良い転送が可能となる。
【図面の簡単な説明】
【図１】本発明の実施例のデータ処理装置及び外部デバイスの全体構成を示す図である。
【図２】本発明の実施例のストアバッファの構成を示す図である。
【図３】本発明の実施例のストアバッファの他の構成を示す図である。
【図４】本発明の実施例のストアバッファの更に他の構成を示す図である。
【図５】本発明の実施例のストアバッファへのへの書き込みフローを示す図である。
【図６】本発明の実施例のストアバッファからの転送フローを示す図である。
【符号の説明】
１００  データ処理装置
１０１  命令フェッチユニット
１０２  デコードユニット
１０３  命令ＴＬＢ
１０４  命令キャッシュ
１０５  整数演算ユニット
１０６  浮動小数点演算ユニット
１０９  ロード／ストアユニット
１１０  ストアバッファ
１１１  バス制御ユニット
１１２  データＴＬＢ
１１３  データキャッシュ
１１４  ＲＯＭ
１１５  ＳＲＡＭ
１１６  ＤＲＡＭ
１１７  ＰＣＭＣＩＡ
１１８  周辺チップ
１１９  グラフィックチップ
２０１  ストアバッファアクセス判定回路
２０２  読み出し／書き込み制御回路
２０３  外部バスアクセス制御回路
２０５  バッファ
３０１  バッファ
３０４  読み出し／書き込み制御回路
３０５  外部バスアクセス制御回路
４０３  Ｖビットバッファ
４０４  データバッファ
４０５  読み出し／書き込み制御回路
４０８  モードレジスタ。
【図１】
0003727452.tif 000002
【図２】
0003727452.tif 000003
【図３】
0003727452.tif 000004
【図４】
0003727452.tif 000005
【図５】
0003727452.tif 000006
【図６】
0003727452.tif 000007