(57)【要約】ＣＰＵによってアクセス可能な内部メモリ（５）と外部メモリ（２５，２６）との間のデータ転送を高速化、高効率化するために、ＣＰＵによる特定の命令実行に応答してブロック転送制御部（１２）にブロック転送を起動可能にする。特定の命令はそのアドレス指定フィールドで指定されたアドレスが内部メモリにマッピングされたアドレスであるとき当該論理アドレスをデータブロック転送の転送元又は転送先の一方のアドレスとする命令である。内部メモリは仮想アドレス空間の一部に割り付けられ、他方のアドレスとされる外部メモリが割り付けられる物理アドレス空間との対応は、ＭＭＵオンの場合にはＴＬＢを用いて、ＭＭＵオフの場合には所定のレジスタにより行う。
2004031943.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、前記ＣＰＵによってアクセス可能な内部メモリと、前記ＣＰＵが発行する特定のアクセス要求に応答して前記内部メモリを一の転送対象とするブロック転送制御が可能な制御回路とを有し、
前記ＣＰＵの命令セットは前記特定のアクセス要求を発行させる特定の命令を含み、当該特定の命令はアドレス指定フィールドを有し、このアドレス指定フィールドに指定されたアドレスが前記内部メモリにマッピングされたアドレスであるとき当該アドレスを前記ブロック転送の転送元又は転送先の一方のアドレスとすることを特徴とするデータプロセッサ。
【請求項２】
前記ブロック転送の転送元又は転送先の他方のアドレスは、前記アドレス指定フィールドが保有する論理アドレスに対応する物理アドレスであることを特徴とする請求の範囲第１項記載のデータプロセッサ。
【請求項３】
前記ブロック転送の転送元又は転送先の他方のアドレスはレジスタが保有する物理アドレスであることを特徴とする請求の範囲第１項記載のデータプロセッサ。
【請求項４】
前記レジスタはＣＰＵのアドレス空間にマッピングされていることを特徴とする請求の範囲第３項記載のデータプロセッサ。
【請求項５】
前記制御回路に接続されたバスインタフェースコントローラを有し、前記バスインタフェースコントローラは前記ブロック転送の他の転送対象に対するインタフェース制御が可能であることを特徴とする請求の範囲第２項又は第３項記載のデータプロセッサ。
【請求項６】
キャッシュメモリを有し、前記キャッシュメモリは前記ＣＰＵ、内部メモリ、及び制御回路と第１バスを共有することを特徴とする請求の範囲第１項記載のデータプロセッサ。
【請求項７】
前記内部メモリは前記キャッシュメモリによるキャッシュ非対象のアドレスに配置されることを特徴とする請求の範囲第６項記載のデータプロセッサ。
【請求項８】
前記制御回路と前記内部メモリの接続に専用化された第２バスを有し、前記第２バスは前記特定のアクセス要求に応答するデータのブロック転送に利用可能にされることを特徴とする請求の範囲第７項記載のデータプロセッサ。
【請求項９】
前記制御回路は前記キャッシュメモリのキャッシュヒットとキャッシュミスに対するメモリ制御が可能であることを特徴とする請求の範囲第８項記載のデータプロセッサ。
【請求項１０】
ＣＰＵの命令セットは第１のキャッシュメモリ操作命令を有し、前記第１のキャッシュメモリ操作命令は、アドレス指定フィールドで指定されたキャッシュ対象アドレスのデータをキャッシュメモリに保持させる操作を行うことを特徴とする請求の範囲第７項記載のデータプロセッサ。
【請求項１１】
ＣＰＵの命令セットは第２のキャッシュメモリ操作命令を有し、前記第２のキャッシュメモリ操作命令は、アドレス指定フィールドで指定されたキャッシュ対象アドレスにおいてキャッシュヒットである場合に当該キャッシュヒットに係るキャッシュエントリがダーティである場合に、ライトバックさせる操作を行うことを特徴とする請求の範囲第７項記載のデータプロセッサ。
【請求項１２】
前記特定の命令は第１のキャッシュメモリ操作命令と同じオペレーションコードを有し、アドレス指定フィールドのキャッシュ非対象のアドレスをディスティネーションアドレスとすることを特徴とする請求の範囲第１０項記載のデータプロセッサ
【請求項１３】
前記特定の命令は第２のキャッシュメモリ操作命令と同じオペレーションコードを有し、アドレス指定フィールドのキャッシュ非対象のアドレスをソースアドレスとすることを特徴とする請求の範囲第１１項記載のデータプロセッサ。
【請求項１４】
前記バスインタフェースコントローラに接続されるデータ転送制御回路を有する請求の範囲第５項記載のデータプロセッサ。
【請求項１５】
前記バスインタフェースコントローラに接続される外部バス接続用の外部インタフェース回路を有する請求の範囲第１４項記載のデータプロセッサ。
【請求項１６】
第１バスに夫々接続された、ＣＰＵと、キャッシュメモリと、前記ＣＰＵによってアクセス可能であって前記キャッシュメモリによるキャッシュの非対象とされる内部メモリと、前記ＣＰＵが発行する特定のアクセス要求に応答して前記内部メモリを一の転送対象とするブロック転送制御が可能な制御回路とを有し、
前記ＣＰＵの命令セットは前記特定のアクセス要求を発行させる特定の命令を含み、当該特定の命令はアドレス指定フィールドを有し、このアドレス指定フィールドに指定されたアドレスが前記内部メモリにマッピングされたアドレスであるとき当該アドレスを前記ブロック転送の転送元又は転送先の一方のアドレスとすることを特徴とするデータプロセッサ。
【請求項１７】
前記制御回路と前記内部メモリの接続に専用化された第２バスを有し、前記第２バスは前記特定のアクセス要求に応答するデータのブロック転送に利用可能にされることを特徴とする請求の範囲第１６項記載のデータプロセッサ。
【請求項１８】
ＣＰＵの命令セットは第１のキャッシュメモリ操作命令と、第２のキャッシュメモリ操作命令を有し、
前記第１のキャッシュメモリ操作命令は、アドレス指定フィールドで指定されたキャッシュ対象アドレスのデータをキャッシュメモリに保持させる操作を指示し、
前記第２のキャッシュメモリ操作命令は、アドレス指定フィールドで指定されたキャッシュ対象アドレスにつきキャッシュヒットである場合に当該キャッシュヒットに係るキャッシュエントリがダーティである場合に、ライトバックさせる操作を指示することを特徴とする請求の範囲第１７項記載のデータプロセッサ。
【請求項１９】
前記特定の命令は、前記第１のキャッシュメモリ操作命令と同じオペレーションコードが割当てられ、アドレス指定フィールドのキャッシュ非対象のアドレスをディスティネーションアドレスとする第１のデータ転送命令と、
前記第２のキャッシュメモリ操作命令と同じオペレーションコードが割当てられ、アドレス指定フィールドのキャッシュ非対象のアドレスをソースアドレスとする第２のデータ転送命令とであることを特徴とする請求の範囲第１８項記載のデータプロセッサ。
【請求項２０】
ＣＰＵと、ＣＰＵが発行するアクセス要求を伝達可能なバスと、前記バスに接続され前記ＣＰＵが発行するアクセス要求に応答してメモリ動作可能な内部メモリと、前記バスに接続され前記ＣＰＵが発行する特定のアクセス要求に応答して前記内部メモリを一の転送対象とするブロック転送制御が可能な制御回路と、前記ブロック転送の他の転送対象に対するインタフェース制御が可能なバスインタフェースコントローラとを有し、
前記ＣＰＵの命令セットは前記特定のアクセス要求を発行する特定の命令を含み、当該特定の命令は前記ブロック転送の転送元又は転送先の一方のアドレスを指定するアドレス指定フィールドを有することを特徴とするデータプロセッサ。
【発明の詳細な説明】
【技術分野】  本発明は、ＣＰＵ（中央処理装置）によってアクセス可能な内部メモリを有するデータプロセッサ、特にその内部メモリに対するブロック転送制御に関し、例えば前記内部メモリをキャッシュ非対象とするキャッシュメモリを有するマイクロプロセッサに適用して有効な技術に関する。
【背景技術】  マイクロプロセッサにおいてはメモリアクセス性能を向上させる為、キャッシュメモリを内蔵することが一般的である。しかしキャッシュメモリは頻繁にアクセスされる命令やデータを扱うには適しているが、一旦使われた後にはすぐに不要となるようなデータに対してはあまり効果的ではない。画像処理や音声処理などの用途ではこのような一過性のデータを大量に扱うことが多いが、これらのデータをキャッシュメモリを使ってアクセスしようとすると、キャッシュメモリの容量は限られている為、本来キャッシングされているはずの、よりキャッシュメモリに適したデータを追い出してしまうことになり、全体として効率が低下してしまう。そのためこれらのデータを高速に扱うには、キャッシュメモリ以外に内部メモリを持つことが望ましい。
またキャッシュメモリを用いる場合、ＣＰＵ（中央処理装置）からのアクセス性能を平均的に向上させることができるが、キャッシュメモリはそれまでのアクセス履歴によりヒット／ミスが変わる為、実行時間の予測が困難となり、厳密なリアルタイム制御には向かない場合もある。リアルタイム制御のような用途では、キャッシュメモリではない固定的な内部メモリに記憶情報（命令又はデータ）を格納しておくことが望ましい。キャッシュメモリの代わりに若しくはキャッシュメモリの他の上記観点による内部メモリを持つ場合には、内部メモリと外部メモリ間のデータ転送の高速化、高効率化が重要である。
本発明者の検討によれば、ＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）による転送制御はブロック転送であり、転送中ＣＰＵは別の処理を行うことができるから、転送効率が良い。しかしながら、ＤＭＡＣの動作とＣＰＵの処理の同期化（データ転送の条件設定、起動、終了待ち）を必要とする為、転送量が小さい場合には特にこの同期化のオーバーヘッドが顕著になることが明らかにされた。また、ブロック転送命令を用いる場合にもその転送処理によってＣＰＵが占有される期間が長くなればＤＭＡＣを用いる場合と同様にオーバーヘッドが大きくなる。そのようなブロック転送命令を専用化すれば処理の最適化を図り易いが新たな命令コードの追加が不可能な場合、或いは新たな命令コードの追加による不都合を生ずる場合もある。
本発明の完成後に行った特許調査により以下の文献が見出された。特開２０００−２３１５５０号公報には、ロード／ストア命令を実行可能なロード／ストア命令実行部を有するマイクロコンピュータに、ロード／ストア命令実行部によるデータの読み書きが可能で、且つ外部メモリとの間でＤＭＡ（ダイレクト・メモリ・アクセス）転送可能なＲＡＭ（ランダム・アクセス・メモリ）を設けることが記載される。また、上記特許公報（第７６段落）には、キャッシュ以外の特殊な用途に使用されるＲＡＭをアクセスするのにロード／ストア命令に代えて専用のブロック転送命令等を用いてもよい、とある。このブロック転送命令のオペレーションについて何ら開示は無い。
本発明の目的はＣＰＵによってアクセス可能な内部メモリと外部メモリとの間のデータ転送を高速化、高効率化することができるデータプロセッサを提供することにある。
本発明の別の目的は、キャッシュメモリ以外にＣＰＵによってアクセス可能な内部メモリを持つ場合に、内部メモリと外部メモリ間のデータ転送の高速化と高効率化を実現できるデータプロセッサを提供することにある。
本発明の更に別の目的は、ＣＰＵによってアクセス可能な内部メモリと外部メモリ間のデータ転送に関し、ロード／ストア命令による場合には転送データをＣＰＵが取り込まなければならない点でその間にＣＰＵは別の処理を行うことができないということ、ＤＭＡＣによる場合には転送量が小さいと同期化のオーバーヘッドが大きくなること、の双方を解決することができるデータプロセッサを提供することにある。
本発明の上記並びにその他の目的と新規な特徴は本明細書の以下の記述と添付図面から明らかにされるであろう。
【発明の開示】
〔１〕先ずここで、本願において開示される発明のうち代表的なものについてその概要を説明する。
ＣＰＵによってアクセス可能な内部メモリと外部メモリとの間のデータ転送を高速化、高効率化するために、ＣＰＵの特定の命令によりブロック転送を起動可能にする。特定の命令とは、アドレス指定フィールドを有し、このアドレス指定フィールドに指定されたアドレスが前記内部メモリにマッピングされたアドレスであるとき当該アドレスをデータブロック転送の転送元又は転送先の一方のアドレスとする命令である。データブロック転送の他方のアドレスは例えば外部メモリのアドレスとなる。外部メモリのアドレスは直接命令で指定されず、後述の如くアドレス指定フィールドの記述に対するアドレス変換等で得る。前記内部メモリがキャッシュメモリと同じ階層に設けられている場合、前記特定の命令はキャッシュメモリのプリフェッチ、ライトバック用に用意されているプリフェッチ命令、ライトバック命令を流用する。キャッシュメモリのためのプリフェッチ命令、ライトバック命令はブロック転送のトリガであり、転送が開始された後でも、ＣＰＵは後続して命令の実行が可能である。キャッシュメモリにおけるプリフェッチ命令のアドレシングモードは例えばレジスタ間接であり、その命令で指定された汎用レジスタが保有するアドレスに対してキャッシュミスであれば当該アクセスアドレスのデータをキャッシュメモリにフィル（１エントリ分のデータを書き込む）する。ライトバック命令は例えばその命令で指定された汎用レジスタが保有するアドレスに対してキャッシュヒットで且つそのキャッシュエントリがダーティである場合にキャッシュヒットに係るキャッシュエントリデータをライトバック（書き戻し）させる。
プリフェッチ命令やライトバック命令を流用する特定の命令実行において内部メモリはキャッシュ非対象である。例えばこのとき、前記一方のアドレスとされる内部メモリは仮想アドレス（論理アドレス）空間の一部に割り付けておき、他方のアドレスとされる外部メモリが割り付けられている物理アドレス空間との対応は、ＭＭＵ（メモリ・マネージメント・ユニット）オンの場合には上記内部メモリのアドレスに対してＴＬＢ（アドレス変換バッファ）を用いたアドレス変換で行い、ＭＭＵオフの場合には所定のレジスタにより行う。プリフェッチ命令、ライトバック命令を流用する特定命令はプリフェッチ命令、ライトバック命令と同じオペレーションコードを有する。そのオペレーションコードがキャッシュメモリの操作として作用するか、内部メモリに対する操作として作用するかは命令実行時にＣＰＵの汎用レジスタにより与えられる仮想アドレスで決まる。要するに、アドレスフィールドがキャッシュ対象エリア（キャッシャブルエリア）を指定すれば前者であり、アドレスフィールドがキャッシュ非対象エリア（ノンキャッシャブルエリア）を指定すれば後者となる。ＣＰＵはその特定命令を解読するとその解読結果に応じて、内部メモリのブロック転送制御が可能な制御部にブロック転送制御のアクセスコマンドを発行する。プリフェッチ命令を流用する特定命令の場合、ディスティネーションアドレスは例えば命令で指定の仮想アドレス、ソースアドレスは命令で指定のアドレス値に対するＴＬＢ利用の物理アドレスとされる。ライトバック命令を流用する特定命令の場合、上記とは逆に、ソースアドレスは例えば命令で指定の仮想アドレス、ディスティネーションアドレスは命令で指定のアドレス値に対するＴＬＢ利用の物理アドレスとされる。ブロック転送制御において転送元及び転送先アドレスの先頭アドレス以外のアドレスは制御部内でインクリメント若しくはディクリメントされて生成される。
上記手段により、内部メモリと外部メモリとの間のデータ転送を高速化できる。ブロック転送サイズを３２バイトとすると、従来のＣＰＵ命令による転送だと、例えば３２バイトのデータを転送するのに、３２ビット転送命令を１６回（ロード８回、ストア８回）実行することが必要だったのに対し、１命令で転送可能となる。内部メモリと外部メモリとの間のデータ転送を必要とするプログラム記述も短くなる。更に、そのようなブロック転送にＤＭＡＣを必要としないから、転送量の多少に拘わらず同期化のオーバーヘッドは大きくならない。したがって、ＣＰＵによってアクセス可能な内部メモリと外部メモリとの間のデータ転送を高速化、高効率化することができる。
内部メモリを複数メモリマット（複数のページ）に分割しておき、あるページに対してブロック転送を実行中に、他のページに対するＣＰＵからのアクセスを受付可能にしてよい。これにより、あるページに対してブロック転送を実行中に、別のページに対してはＣＰＵが自由にアクセスできる為、ソフトウェアパイプライン処理などのプログラムの最適化の効果が高くなる。
更に、前記ブロック転送を起動する為の特定命令のオペレーションコードがキャッシュメモリのプリフェッチ（ライトバック）用の命令と同一であり、仮想アドレスと物理アドレスの対応付けには通常の外部メモリに対するのと同じようにＴＬＢを利用することにより、プログラム作成時に、キャッシュメモリを利用するか、内部メモリを利用するかの選択が容易になる。なぜならばその選択にはプログラムがアクセスする仮想アドレスをキャッシャブルエリア或いはノンキャッシャブルエリアの何れかに設定するたけでよいからである。よって、プログラムデバッグ或いはシステムデバッグの結果に従ってプログラムがアクセスする仮想アドレスをキャッシャブルエリアとノンキャッシャブルエリアとの間で変更することも簡単である。
上記データプロセッサによれば画像や音声などのストリーミングデータを扱うのに適した構成となり、例えば従来１００ＭＨｚで動かさなければ実現できなかった処理が、より低い周波数で実現可能となり、低消費電力化可能となる。面積削減の観点からは、従来搭載していたＤＭＡＣを省略することも可能になり、そうすることにより、より小さな面積でＣＰＵによってアクセス可能な内部メモリと外部メモリとの間のデータ転送を高速化、高効率化することができる。
〔２〕本発明を態様毎に更に詳述する。データプロセッサは、ＣＰＵと、前記ＣＰＵによってアクセス可能な内部メモリと、前記ＣＰＵが発行する特定のアクセス要求に応答して前記内部メモリを一の転送対象とするブロック転送制御が可能な制御回路とを有し、前記ＣＰＵの命令セットは前記特定のアクセス要求を発行させる特定の命令を含み、当該特定の命令はアドレス指定フィールドを有し、このアドレス指定フィールドに指定されたアドレスが前記内部メモリにマッピングされたアドレスであるとき当該アドレスを前記ブロック転送の転送元又は転送先の一方のアドレスとする。
前記ブロック転送の転送元又は転送先の他方のアドレスは、例えば前記アドレス指定フィールドが保有する論理アドレスに対応する物理アドレス、或はレジスタが保有する物理アドレスである。そのレジスタは例えばＣＰＵのアドレス空間にマッピングされ、ＣＰＵによって設定可能にされる。外部バスアクセスを考慮すると、前記制御回路に接続されたバスインタフェースコントローラを有し、前記バスインタフェースコントローラに前記ブロック転送の他の転送対象に対するインタフェース制御をさせればよい。
キャッシュメモリを有する場合には、当該キャッシュメモリは前記ＣＰＵ、内部メモリ、及び制御回路と第１バスを共有するのがよい。前記内部メモリは前記キャッシュメモリによるキャッシュ非対象のアドレスに配置されるのがデータ処理上望ましい。このとき、前記制御回路と前記内部メモリの接続に専用化された第２バスを有し、前記第２バスは前記特定のアクセス要求に応答するデータのブロック転送に利用可能にされるのがよい。制御回路が内部メモリに対するブロック転送を行っている最中にＣＰＵは第１バスを介してキャッシュメモリをアクセスすることができる。前記制御回路は前記キャッシュメモリのキャッシュヒットとキャッシュミスに対するメモリ制御も併せて行うのがよい。
前記特定の命令にキャッシュメモリの操作命令を流用することに着目する。例えば第１及び第２のキャッシュメモリ操作命令を流用する。前記第１のキャッシュメモリ操作命令は、アドレス指定フィールドで指定されたキャッシュ対象アドレスのデータについて、当該キャッシュミスに係るキャッシュエントリに対し、外部からデータを書き込む操作をさせる。前記第２のキャッシュメモリ操作命令は、アドレス指定フィールドで指定されたキャッシュ対象アドレスにつきキャッシュヒットである場合で当該キャッシュヒットに係るキャッシュエントリがダーティである場合に、ライトバックの操作をさせる。このとき、前記特定の命令は第１のキャッシュメモリ操作命令と同じオペレーションコードを有し、アドレス指定フィールドのキャッシュ非対象のアドレスをディスティネーションアドレスとする。また、前記特定の命令は第２のキャッシュメモリ操作命令と同じオペレーションコードを有し、アドレス指定フィールドのキャッシュ非対象のアドレスをソースアドレスとする。
前記バスインタフェースコントローラに接続されるＤＭＡＣを有してもよい。前記バスインタフェースコントローラに接続される外部バス接続用の外部インタフェース回路を有してよい。
【図面の簡単な説明】  第１図は本発明に係るデータプロセッサの一例であるマイクロプロセッサを示すブロック図である。
第２図は特定の命令の命令フォーマットを例示する説明図である。
第３図はマイクロプロセッサＭＰＵのアドレス空間を例示するアドレスマップである。
第４図は特定命令による処理で物理アドレスを指定するための物理アドレス生成手段を例示するブロック図である。
第５図はＰＲＥＦ命令による外部メモリから内部メモリへの転送動作タイミングを例示するタイミングチャートである。
第６図はＯＣＢＷＢ命令による内部メモリから外部メモリへの転送動作タイミングを例示するタイミングチャートである。
第７図は記憶領域を２ページに分けた内部メモリの構成を例示するブロック図である。
第８図は内部メモリの２個のページに対する並列動作タイミングを例示するタイミングチャートである。
第９図はキャッシュメモリを命令とオペランド混在のユニファイドキャッシュメモリで構成したマイクロプロセッサの要部を例示するブロック図である。
第１０図は更に別のマイクロプロセッサとしてキャッシュメモリ及びＴＬＢを搭載しない例を示すブロック図である。
【発明を実施するための最良の形態】  第１図には本発明に係るデータプロセッサの一例であるマイクロプロセッサが示される。同図に示されるマイクロプロセッサＭＰＵは、中央処理装置（ＣＰＵ）１を有し、ＣＰＵ１は命令フェッチユニット（ＩＦＵ）２を介して命令バス２１に接続され、ロードストアユニット（ＬＳＵ）３を介してオペランドバス２０に接続される。命令バス２１には命令キャッシュメモリ４及び命令用アドレス変換バッファ（ＩＴＬＢ）８が接続され、オペランドバス２０にはオペランドキャッシュメモリ７及びオペランド用アドレス変換バッファ（ＯＴＬＢ）９が接続される。前記ＩＴＬＢとＯＴＬＢ９の２次キャッシュとして位置付けられるユニファイドアドレス変換バッファ（ＵＴＬＢ）１０が設けられる。前記命令バス２１及びオペランドバス２０の双方には内部メモリ５と制御部としてのキャッシュ・内部メモリ制御部１１が接続される。
キャッシュ・内部メモリ制御部１１はバスインターフェースコントローラ（ＢＩＣ）６を介してシステムバス２２に接続される。システムバス２２にはダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）１３、周辺バスブリッジ回路（ＰＢＢ）１５、外部バスコントローラ１４が接続される。周辺バスブリッジ回路（ＰＢＢ）１５には周辺バス２３を介してシリアル・コミュニケーション・インタフェースコントローラ（ＳＣＩ）１６及びタイマユニット（ＴＭＵ）１７等が設けられる。外部バスコントローラ１４には外部バス２４を介してリード・オンリ・メモリ（ＲＯＭ）２５及びランダム・アクセス・メモリ（ＲＡＭ）２６が接続される。また図示はしないが外部バスを介してＡＳＩＣや、更にＰＣＩインタフェースを介してメモリ等が接続されても良い。
前記ＣＰＵ１には命令バス２１に対して命令フェッチを発行する命令フェッチュニット２とロード・ストア命令実行時にオペランドバス２０に対してアクセスを発行するロードストアユニット３を有する。ＣＰＵ１はその他に、それぞれ図示を省略するところの命令のデコード及び実行スケジュール等の処理を行う命令フローユニット、実行ユニット及び浮動小数点演算ユニットを有する。マイクロプロセッサＭＰＵはパイプライン方式で命令を実行し、例えば命令フェッチ、デコード、実行、及びメモリアクセス等のパイプラインステージを単位として処理を進める。そのパイプラインステージの実行スケジューリングは前記命令フローユニットが制御する。更にＣＰＵ１は、キャッシュ・内部メモリ制御部に対し、例外処理信号等の制御信号を出力可能とされる。
命令フェッチュニット２により発行された命令フェッチリクエストは、仮想アドレスによってアクセス先が異なり、それぞれ命令キャッシュメモリ４にアクセスする場合、内部メモリ５にアクセスする場合、バスインタフェースコントローラ６を経由してシステムバス２２に直接アクセスに行く場合がある。
ロードストアユニット３により発行されたオペランドアクセスリクエストは、命令フェッチの場合と同様に、仮想アドレスによってアクセス先が異なり、オペランドキャッシュメモリ７にアクセスする場合、内部メモリ５にアクセスする場合、バスインタフェースコントローラ６を経由してシステムバス２２に直接アクセスに行く場合がある。
命令バス２１、オペランドバス２０のアドレスは共に仮想アドレスであり、システムバス２２のアドレスは物理アドレスである。仮想アドレスから物理アドレスへの変換は、命令バス２１からの場合はＩＴＬＢ８で、オペランドバス２０からの場合はＯＴＬＢ９で行われる。ＩＴＬＢ８、ＯＴＬＢ９はともにＵＴＬＢ１０のうち、頻繁に参照される一部のエントリをキャッシングしているいわゆるマイクロＴＬＢである。
キャッシュ・内部メモリ制御部１１は命令バス２１、オペランドバス２０それぞれの動きに合わせてＩＴＬＢ８、命令キャッシュメモリ４、ＯＴＬＢ９、オペランドキャッシュメモリ７、ＵＴＬＢ１０、及び内部メモリ５の制御を行う。前記キャッシュメモリ４，７はダイレクトマップ或いはセットアソシアティブ形式の連想メモリ構造を有し、インデックスは論理アドレスによって行なわれ、タグの比較はＴＬＢによって変換された物理アドレスに対して行なわれる。要するに、キャッシュメモリ４，７が保有するタグ情報は物理アドレス情報とされる。
キャッシュ・内部メモリ制御部１１にはブロック転送制御部１２が設けられる。ブロック転送制御部１２はオペランドバス（第１バス）２０に内部メモリ５、命令キャッシュメモリ４、又はオペランドキャッシュ７に対するブロック転送コマンドが発行された場合、そのブロック転送を制御する。それらブロック転送制御の詳細は後述する。
内部メモリ５は命令バス２１からのアクセス、オペランドバス２０からのアクセス、ブロック転送制御部１２からのアクセス、ＢＩＣ６経由のシステムバス２２からのアクセスを処理可能である。内部メモリ５はキャッシュ・内部メモリ制御部１１と専用バス（第２バス）２８で接続される。専用バス２８はブロック転送制御部１２により内部メモリ５を転送元又は転送先とするブロック転送に専用化される。内部メモリ５は複数ページに分かれており、それぞれのページが独立に動作可能な構成になっている。詳細は後述する。
ＤＭＡＣ１３はＢＩＣ６経由で内部メモリ５をアクセス可能であり、外部バスコントローラ１４により制御される外部メモリ２５，２６と内部メモリ５との間の転送を制御することができる。ＤＭＡＣ１３を用いる内部メモリと外部メモリ間の転送制御にはＣＰＵ１が命令を実行してＤＭＡＣ１３内部のアドレスレジスタや転送カウントレジスタ、制御レジスタ等に転送条件を設定することが必要である。
これに対し、前記ブロック転送制御部１２による内部メモリ５と外部メモリ２５，２６間の転送制御はＣＰＵ１が特定の命令を実行してオペランドバス２０を介して前記ブロック転送制御部１２に特定のアクセスコマンドが発行されればよい。上記特定の命令によるブロック転送制御について以下に説明する。
特定の命令とは、第２図に例示されるようにオペレーションコード（ＯＰ）の指定フィールドＦＬＤ１とアドレス指定フィールドＦＬＤ２を有し、このアドレス指定フィールドＦＬＤ２に指定されたアドレスが前記内部メモリ５にマッピングされたアドレスであるとき当該アドレスをデータブロック転送の転送元又は転送先の一方のアドレスとする命令である。マイクロプロセッサＭＰＵにおいて内部メモリ５はキャッシュメモリ７と同じ階層に設けられているので、前記特定の命令にはキャッシュメモリのプリフェッチ、ライトバック用に用意されているプリフェッチ命令、ライトバック命令を流用する。
第３図にはマイクロプロセッサＭＰＵのアドレス空間が例示される。仮想アドレス空間３１はキャッシャブル領域（キャッシャブルエリア）３２と非キャッシャブル領域（ノンキャッシャブルエリア）３３に分かれており、内部メモリ５は非キャッシャブル領域３３の一部にマッピングされている。
キャッシュメモリのためのプリフェッチ命令、ライトバック命令はブロック転送のトリガであり、転送が開始した後でも、ＣＰＵ１は後続して命令の実行が可能である。例えばプリフェッチ命令のアドレシングモードは例えばレジスタ間接（＠Ｒｎ）であり、その命令で指定された汎用レジスタ（Ｒｎ）が保有するキャッシャブルエリアのアドレスに対してキャッシュミスであれば当該アクセスアドレスのデータをキャッシュメモリにフィルする。ライトバック命令は例えばその命令で指定された汎用レジスタが保有するキャッシャブルエリアのアドレスに対してキャッシュヒットで且つそのキャッシュエントリがダーティである場合にキャッシュヒットに係るキャッシュエントリデータをライトバックさせる。
前記プリフェッチ命令、ライトバック命令は、レジスタ間接で指定するアドレスがノンキャッシャブルエリアのアドレスであることを条件に、前記特定の命令とされる。特定命令もここではプリフェッチ命令（ＰＲＥＦ命令とも記す）、ライトバック命令（ＯＣＢＷＢ命令とも記す）と称する。内部メモリ５をアクセスするためのＰＲＥＦ命令の転送先アドレス、ＯＣＢＷＢ命令の転送元アドレスは命令のアドレス指定フィールドで指定される汎用レジスタＲｎにて与えられる仮想アドレスで指示される。
ＰＲＥＦ命令の転送元アドレス、ＯＣＢＷＢ命令の転送先アドレスは外部メモリを指し示す必要がある。即ち、第３図の物理アドレス空間３４の一部を指し示す必要がある。
第４図にはそのような物理アドレスを指定するための物理アドレス生成手段が示される。ＭＭＵ（メモリマネージメントユニット）イネーブルの場合、ＣＰＵ１からＰＲＥＦ命令またはＯＣＢＷＢ命令と共にオペランドバス２０に発行された仮想アドレスは、ＯＴＬＢ９によって物理アドレスに変換される。この物理アドレスがＰＲＥＦ命令の場合転送元アドレスに、ＯＣＢＷＢ命令の場合転送先アドレスになり、転送が行われる。
キャッシュ・内部メモリ制御部１１内のレジスタに初期設定されるＭＭＵ動作情報に基づき出力されるＭＭＵ信号がディスエーブルの場合、ＰＲＥＦ命令による転送の転送元の物理アドレスは転送元アドレスレジスタ３５の値が選択される。また、ＯＣＢＷＢ命令による転送の転送先の物理アドレスは転送先アドレスレジスタ３６の値が選択される。
セレクタ３７は特定命令を解読した結果、その命令がＰＲＥＦ命令に応答するアクセスコマンドである場合にはレジスタ３５の出力を選択し、ＯＣＢＷＢ命令に応答するアクセスコマンドである場合にはレジスタ３６の出力を選択するように、解読結果に基づくコマンド信号により制御される。セレクタ３８は前記ＭＭＵ信号がディスエーブルの場合にセレクタ３７の出力を選択し、イネーブルの場合にＯＴＬＢ９の出力を選択する。
このように、プリフェッチ命令、ライトバック命令を流用する特定命令はプリフェッチ命令、ライトバック命令と同じオペレーションコードを有する。そのオペレーションコードがキャッシュメモリの操作として作用するか、内部メモリに対する操作として作用するかは命令実行時にＣＰＵ１の汎用レジスタにより与えられる仮想アドレスで決まる。要するに、アドレスフィールドＦＬＤ２がキャッシュ対象エリア（キャッシャブルエリア）を指定すれば前者であり、アドレスフィールドＦＬＤ２がキャッシュ非対象エリア（ノンキャッシャブルエリア）を指定すれば後者となる。ＣＰＵはその特定命令を解読するとその解読結果に応じて、内部メモリ５のブロック転送制御が可能なブロック転送制御部１２にブロック転送制御のアクセスコマンドを発行する。
ブロック転送制御において転送元及び転送先アドレスの先頭アドレス以外のアドレスはブロック転送制御部１２の内部でインクリメント若しくはディクリメントされて生成される。
第５図にはＰＲＥＦ命令による外部メモリから内部メモリ５への転送動作のタイミンダチャートが示される。本実施例では、例えばデータ転送ブロックサイズを３２バイト、各バス幅を６４ビットとして説明する。
内部メモリ５を指し示す仮想アドレスを伴ったＰＲＥＦ命令がＣＰＵ１により実行されると、ＣＰＵ１はオペランドバス２０にＰＲＥＦコマンドを発行する。これを受けるブロック転送制御部１２はＢＩＣ６経由でシステムバス２２に３２バイトのブロックリードコマンドＬＤ３２を発行する。その後リードデータが返って来たところで内部メモリ５に書き込む。ここでＰＲＥＦ命令はブロック転送の起動をかけるだけであり、実際のデータ転送中、ＣＰＵ１は後続命令を実行可能である。
第６図にはＯＣＢＷＢ命令による内部メモリ５から外部メモリへの転送動作のタイミングチャートが例示される。
内部メモリ５を指し示す仮想アドレスを伴ったＯＣＢＷＢ命令がＣＰＵ１により実行されると、ＣＰＵ１はオペランドバス２０にＯＣＢＷＢコマンドを発行する。このコマンドを受けるブロック転送制御部１２は内部メモリ５から転送データの読み出しを行う。その後ＢＩＣ１０６経由でシステムバス２２に３２バイトのブロックライトコマンドＳＴ３２を発行する。ここでＯＣＢＷＢ命令はブロック転送の起動をかけるだけであり、実際のデータ転送中、ＣＰＵ１は後続命令を実行可能である。
このブロックデータ転送制御部１２による内部メモリ５と外部との間のブロックデータ転送制御機能により、内部メモリ５と外部メモリとの間のデータ転送を高速化できる。ブロック転送サイズを３２バイトとすると、従来のＣＰＵのロード／ストア命令による転送では、例えば３２バイトのデータを転送するのに、３２ビット転送命令を１６回（ロード８回、ストア８回）実行することが必要だったのに対し、ＰＲＥＦ命令又はＯＣＢＷＢ命令の１命令で転送可能となる。そのようなブロック転送にＤＭＡＣ１３を必要としないから、転送量の多少に拘わらず同期化のオーバーヘッドは大きくならない。したがって、ＣＰＵ１によってアクセス可能な内部メモリ５と外部メモリとの間のデータ転送を高速化、高効率化することができる。第１図の例では外部メモリはＲＡＭ２６又はＲＯＭ２５とされる。
また、前記ブロック転送を起動する為のＰＲＥＦ命令やＯＣＢＷＢ命令は、キャッシュメモリ４，７に対するオペレーションと、内部メモリ５と外部とのデータ転送に対するオペレーションとでオペレーションコードが同一であり、更に、仮想アドレスと物理アドレスの対応づけが通常の外部メモリに対するのと同じようにＴＬＢを利用するから、プログラム作成時に、オペランドキャッシュメモリ７を利用するか、内部メモリ５を利用するかの選択が容易である。その選択は、プログラムがアクセスする仮想アドレスをキャッシャブルエリア或いはノンキャッシャブルエリアの何れかに設定するだけで済むからである。プログラムデバッグ或いはシステムデバッグの結果に従ってプログラムがアクセスする仮想アドレスをキャッシャブルエリアとノンキャッシャブルエリアとの間で変更することも簡単である。
第７図には記憶領域を２ページに分けた内部メモリ１０５の構成が例示される。２ページに分けられるとは、並列アクセス可能な２個のメモリブロックに分けられるという意味である。第７図の例では、内部メモリ５はページ０を構成するメモリブロックＰＧ０、ページ１を構成するメモリブロックＰＧ１の二つに分かれ、独立にアクセス可能である。ＤＥＣ０，ＤＥＣ１はアドレスデコーダ、４０、４１は入力バスアドレスセレクタ、４２、４３は書き込みバスセレクタ、４４，４５は読み出しバスセレクタである。それぞれのメモリブロックＰＧ０，ＰＧ１に対しては、命令バスアドレス２１Ａ、オペランドバスアドレス２０Ａ、ブロック転送制御部１２からのアドレス１２Ａ、ＢＩＣ６からのアドレス６Ａによるアクセスが可能であり、書き込みデータはオペランドバス２０からのデータ２０ＷＤ、ブロック転送制御部１２からのデータ１２ＷＤ、ＢＩＣ６からのデータ６ＷＤが書き込み可能にされ、読み出しアクセスではリードデータは命令バス２１へのデータ２１ＲＡ、オペランドバス２０へのデータ２０ＲＤ、ブロック転送制御部１２へのデータ１２ＲＤ、ＢＩＣ６へのデータ６ＲＤとされる。あるサイクルにどこからのアクセスが実行されるかは、キャッシュ・内部メモリ制御部１１からの選択信号２８ＲＣ０，２８ＲＣ１、２８ＷＣ０，２８ＷＣ１により決定される。
このように内部メモリ５を複数のページに分けておくことにより、あるページに対してブロック転送実行中に、別のページに対してＣＰＵ１が自由にアクセスすることが可能になる。
第８図には内部メモリ５の２個のページに対する並列動作のタイミングチャートが例示される。この例ではページ１（ＰＧ１）に対してＯＣＢＷＢ命令によるブロック転送を起動した後、ＣＰＵ１がページ０（ＰＧ０）に対してアクセスを行っている。図に示されるように、ページ１（ＰＧ１）に対してブロック転送を実行中でもページ０（ＰＧ０）に対するＣＰＵ１からのアクセスは邪魔されることなく実行可能である。
第９図にはキャッシュメモリを命令とオペランド混在のユニファイドキャッシュメモリで構成したマイクロプロセッサの要部が例示される。この例では、前記命令キャッシュメモリ４とオペランドキャッシュメモリ７をそれぞれ独立に設けるのではなく、命令とオペランド共に保持するユニファイドキャッシュ５０を設ける。この場合、ＩＦＵ２、ＬＳＵ３はどちらもユニファイドバス５１経由でアクセスを行う。命令アクセスとオペランドアクセスが同時に起こることはなくなる為、ＴＬＢもＵＴＬＢ１０のみで構成されている。
この例では第１図の構成に比べ、ＣＰＵ１のアクセス帯域が狭くなるが、同じ容量のキャッシュメモリを用いた場合、第１図に示した分離型キャッシュメモリよりヒット率の向上が望めるほか、命令とオペランドが同一のキャッシュメモリに保持される為、命令を自己書き換えするようなプログラムの実行効率を高めることができる。その他の構成は第１図の構成と同じであり、その詳細な説明は省略する。尚、第９図では外部バスコントローラ１４、及び外部バス２４の図示を省略している。その他に図示を省略した回路モジュールについては必要に応じて備えればよい。
第１０図には更に別のマイクロプロセッサとして、キャッシュメモリ及びＴＬＢを搭載しない例が示される。同図に示されるマイクロプロセッサは、制御に特化したコントローラ用途など、キャッシュメモリの効果があまり期待できない場合を指向した例である。この例の場合、キャッシュメモリが存在しない為、キャッシュ・内部メモリ制御部１１の代わりに内部メモリ制御部５２を搭載している。この場合にもブロック転送制御部１２は前記プリフェッチ命令又はライトバック命令によるのと同じような特定命令によりブロック転送制御機能を実現する。
このようにキャッシュメモリを搭載しない構成でも、上記同様の効果により、内部メモリ５と外部メモリのデータ転送が高速化される為、高いメモリアクセス性能を得る事ができる。なおこの例ではＴＬＢも搭載していない為、本発明のブロック転送における一方の物理アドレスは常に転送元アドレスレジスタ、あるいは転送先アドレスレジスタの値となる。他方の物理アドレスは命令のアドレス指定フィールドに基づいて指定される。
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。
例えば、データプロセッサのオンチップ回路モジュールは上記説明に対して省略し、或は適宜追加してよい。例えばＤＭＡＣを省略すれば内部メモリに対するアクセス性能を劣化させることなくチップ面積を小さくすることができる。また、内部バスの構成等についても適宜変更可能である。また、キャッシュメモリはインデックスが仮想アドレスで行なわれ、タグ情報の比較が物理アドレスで行われる構成に限定されない。インデックスとタグの比較を共に仮想アドレスで行うようにしてもよい。また、仮想アドレスを用いない場合にはキャッシュメモリは物理アドレスキャッシュであってよい。また、特定命令を用いる内部メモリ５以外にシステムバス２２に接続され通常アクセスされる別の内部メモリがあっても良い。また、ＭＭＵのイネーブルとディスエーブルは選択可能でなくてもよい。また、ＴＬＢはＩＴＬＢ，ＯＴＬＢ，ＵＴＬＢとして別々に機能することに限定されることなく、一つのＴＬＢとして同様に機能を有していても良い。
【産業上の利用可能性】  本発明は、汎用のプロセッサや特定用途向けのプロセッサ（メディアプロセッサなど）に適用して有効であり、動画や音声などのストリーミングデータ処理を主な用途とするＤＳＰ機能を強化したプロセッサ等に好適である。本発明はその他に種々のマイクロコンピュータ等のデータプロセッサに広く適用することができる。
【図１】
2004031943.tif 000003
【図２】
2004031943.tif 000004
【図３】
2004031943.tif 000005
【図４】
2004031943.tif 000006
【図５】
2004031943.tif 000007
【図６】
2004031943.tif 000008
【図７】
2004031943.tif 000009
【図８】
2004031943.tif 000010
【図９】
2004031943.tif 000011
【図１０】
2004031943.tif 000012
【国際調査報告】
2004031943.tif 000013
2004031943.tif 000014
2004031943.tif 000015
2004031943.tif 000016