(57)【特許請求の範囲】
【請求項１】
外部に第１バスと第２バスが別々に接続可能であって、前記第１バスに接続する外部バスマスタに前記第２バスに接続する外部メモリのアクセスを許容するバス権を与えることが可能なデータ処理装置であって、前記外部メモリをキャッシュ対象とすることが可能なキャッシュメモリを含み、
前記外部バスマスタからのアクセス要求の条件が特定の条件を満たすとき、前記キャッシュメモリの状態をチェックし、メモリアクセスアドレスに対して前記キャッシュメモリにヒットするブロックがあれば前記メモリアクセスアドレスのデータとの間のキャッシュコヒーレンシを維持する処理を行なった後に、前記外部バスマスタからのアクセス要求に応答する外部メモリアクセスを開始可能にするものであり、
前記キャッシュコヒーレンシを維持する処理は、
前記ヒットしたブロックがダーティであるかを判定する第１処理と、
前記外部バスマスタからのアクセスがライトアクセスであるか、リードアクセスであるかを判別する第２処理と、
前記ヒットしたブロックがダーティで且つ、前記ライトアクセスであるときに、上記ヒットしたブロックに含まれるデータを前記外部メモリにライトバックし、且つ、前記キャッシュメモリのブロックを無効化する第３処理と、を含むことを特徴とするデータ処理装置。
【請求項２】
前記キャッシュコヒーレンシを維持する処理は、更に、前記キャッシュメモリのヒットするブロックがダーティであってリードアクセスに応答するときは当該ブロックをライトバックし且つクリーン化し、前記キャッシュメモリのヒットするブロックがクリーンであってライトアクセスに応答するときは当該ブロックを無効化する第４処理を含むことを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記キャッシュコヒーレンシを維持する処理は、更に、前記キャッシュメモリのヒットするブロックがクリーンであってリードアクセスに応答するとき及びヒットするブロックが存在しない時は、何もしないことを特徴とする請求項１または２記載のデータ処理装置。
【請求項４】
前記特定の条件をプログラマブルに指定するための制御レジスタを有することを特徴とする請求項１または２記載のデータ処理装置。
【請求項５】
前記制御レジスタは、アクセスアドレスとの比較に用いられる特定のアドレスを指定するための第１記憶領域を有することを特徴とする請求項４記載のデータ処理装置。
【請求項６】
前記制御レジスタは、アドレス比較のアドレスレンジを指定する第２記憶領域を有することを特徴とする請求項５記載のデータ処理装置。
【請求項７】
前記制御レジスタは、アドレス比較結果の一致又は不一致の何れを特定の条件成立とするかを指定するための第３記憶領域を有することを特徴とする請求項５記載のデータ処理装置。
【請求項８】
前記制御レジスタは、前記特定の条件が不成立であることを選択的に指定するための第４記憶領域を有することを特徴とする請求項５記載のデータ処理装置。
【請求項９】
キャッシュメモリを内蔵するＣＰＵ、外部バスマスタを接続可能な外部インタフェース回路、外部メモリを接続可能なメモリインタフェース回路、及びそれらが共通接続される内部バスを有するデータ処理装置であって、
前記外部インタフェース回路は、外部バスマスタからの要求に応答してバス権を委譲することが可能であり、バス権を委譲したとき、外部バスマスタからの要求に応じて、前記内部バスから前記メモリインタフェース回路を介して外部メモリをアクセス可能とし、
前記メモリインタフェース回路を介して外部メモリをアクセスするときのアクセス条件が特定の条件を満たすとき、前記ＣＰＵに所定のキャッシュ制御コマンドを発行し、それに対する所定の応答を待って前記メモリインタフェース回路を介する外部メモリアクセスを開始可能とし、
前記ＣＰＵは、前記キャッシュ制御コマンドを受理したとき、キャッシュメモリの状態をチェックし、メモリアクセスアドレスに対してキャッシュヒットブロックがあれば前記メモリアクセスアドレスのデータとの間のキャッシュコヒーレンシを維持する処理を行なって、前記所定の応答を前記外部インタフェース回路に返すことが可能であり、
前記キャッシュコヒーレンシを維持する処理は、
前記ヒットしたブロックがダーティであるかを判定する第１処理と、
前記外部バスマスタからのアクセスがライトアクセスであるか、リードアクセスであるかを判別する第２処理と、
前記ヒットしたブロックがダーティで且つ、前記ライトアクセスであるときに、上記ヒットしたブロックに含まれるデータを前記外部メモリにライトバックし、且つ、前記キャッシュメモリのブロックを無効化する第３処理と、を含むことを特徴とするデータ処理装置。
【請求項１０】
前記キャッシュコヒーレンシを維持する処理は、更に、ヒットブロックがダーティであってリードアクセスに応答するときはヒットブロックをライトバックし且つ当該ブロックをクリーン化し、ヒットブロックがクリーンであってライトアクセスに応答するときはヒットブロックを無効化する第４処理を含むことを特徴とする請求項９記載のデータ処理装置。
【請求項１１】
前記外部インタフェース回路は、前記特定の条件を指定するための制御レジスタを有し、前記制御レジスタは前記ＣＰＵによってアクセス可能なことを特徴とする請求項１０記載のデータ処理装置。
【請求項１２】
前記制御レジスタは、前記外部バスマスタからのアクセスアドレスとの比較に用いられる特定のアドレスを指定するための第１記憶領域を有することを特徴とする請求項１１記載のデータ処理装置。
【請求項１３】
前記制御レジスタは、アドレス比較を行うアドレス長を指定する第２記憶領域を有することを特徴とする請求項１２記載のデータ処理装置。
【請求項１４】
前記制御レジスタは、アドレス比較結果の一致又は不一致の何れを特定の条件成立とするかを指定するための第３記憶領域を有することを特徴とする請求項１２記載のデータ処理装置。
【請求項１５】
前記制御レジスタは、前記特定の条件が不成立であることを選択的に指定するための第４記憶領域を有することを特徴とする請求項１２記載のデータ処理装置。
【請求項１６】
前記外部インタフェース回路は、前記外部バスマスタにバス権を与えた状態で前記所定の応答を待っているとき、前記外部インタフェース回路の状態が所定の状態であることを条件に、前記外部バスマスタに対してバス権の解放とリトライを要求することを特徴とする請求項１０記載のデータ処理装置。
【請求項１７】
前記所定の状態は、前記外部インタフェース回路が新たなアクセス要求を受付け不可能な状態であることを特徴とする請求項１６記載のデータ処理装置。
【請求項１８】
データプロセッサと、前記データプロセッサに接続されたローカルバスと、前記ローカルバスに接続された外部メモリと、前記データプロセッサに接続されたシステムバスと、前記システムバスに接続された外部バスマスタと、前記システムバスに接続されたその他の回路と、を有するデータ処理システムであって、
前記データプロセッサは、前記外部バスマスタに前記外部メモリのアクセスを許容するバス権を与えることが可能であって、前記外部メモリをキャッシュ対象とすることが可能なキャッシュメモリを含み、外部バスマスタからのアクセス要求の条件が特定の条件を満たすとき、前記キャッシュメモリの状態をチェックし、メモリアクセスアドレスに対してキャッシュにヒットするブロックがあれば前記メモリアクセスアドレスのデータとの間のキャッシュコヒーレンシを維持する処理を行なって、前記外部バスマスタからのアクセス要求に応答する外部メモリアクセスを開始可能にするものであり、
前記キャッシュコヒーレンシを維持する処理は、
前記ヒットするブロックがダーティであるかを判定する第１処理と、
前記外部バスマスタからのアクセスがライトアクセスであるか、リードアクセスであるかを判別する第２処理と、
前記ヒットするブロックがダーティで且つ、前記ライトアクセスであるときに、上記ヒットするブロックに含まれるデータを前記外部メモリにライトバックし、且つ、前記キャッシュメモリのブロックを無効化する第３処理と、を含むことを特徴とするデータ処理システム。
【請求項１９】
前記外部バスマスタからの前記アクセス要求は、外部バスマスタが接続されているアドレス空間情報を含むことを特徴とする請求項１８記載のデータ処理システム。
【請求項２０】
前記データプロセッサは、前記特定の条件をプログラマブルに指定するための制御レジスタを有し、前記制御レジスタは、アクセスアドレスとの比較に用いられる特定のアドレスを指定するための第１記憶領域と、アドレス比較のアドレスレンジを指定する第２記憶領域と、アドレス比較結果の一致又は不一致の何れを特定の条件とするかを指定するための第３記憶領域と、を有することを特徴とする請求項１８記載のデータ処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュメモリを有するデータ処理装置におけるキャッシュコヒーレンシに関し、例えば外部バスマスタがデータプロセッサのローカルメモリをアクセス可能なとき、外部バスマスタによるローカルメモリアクセス時のキャッシュコヒーレンシの維持に適用して有効な技術に関する。
【０００２】
【従来の技術】
データプロセッサのローカルバスに接続されたローカルメモリをローカルバスとは別のバスに接続された外部バスマスタにアクセス可能にする技術について記載された文献として、特開２０００−２８２７０４、特開２００１−３０６４８６の公報がある。前者には、ＣＰＵの外部バスとして汎用バスとＳＤＲＡＭバスとがあり、その汎用バスに接続されるバスマスタがＣＰＵ内に設けられている透過制御部を介してＳＤＲＡＭをアクセスできるデータ処理システムについて記載される。後者には、ＣＰＵチップに外部システムバスを介してバスマスタが、また、専用インタフェースを介してＲＤＲＡＭ（ＳＤＲＡＭ）が接続されるシステムにおいて、バスマスタがＣＰＵチップ内を介してＲＤＲＡＭ（ＳＤＲＡＭ）をアクセスできるようにした制御方式が記載される。
【０００３】
【発明が解決しようとする課題】
データプロセッサがキャッシュメモリを内蔵するとき、外部バスマスタとデータプロセッサがキャッシュ対象領域（キャッシャブルエリア）を共有するとき、前記ローカルメモリとキャッシュメモリのコヒーレンシを取る必要がある。このコヒーレンシ維持のためには、例えば、外部バスマスタが上記キャッシャブルエリアをアクセスするとき、アクセス前にデータプロセッサに割り込みを入れ、その割込みハンドラでデータプロセッサのキャッシュメモリをパージし、パージ完了後、該エリアをアクセスする。しかしながら、外部バスマスタがデータプロセッサに割り込みを入れ、そのハンドラでキャッシュメモリをパージする操作を介在させると、性能低下を招く虞がある。特に、外部バスマスタによるデータ転送量が小さい場合、実際の転送より、上記割込みハンドラによるコヒーレンシ実現用の前処理が長い時間を要することになり、オーバヘッドとして無視できない。
【０００４】
また、キャッシュメモリそれ自体が能動的にバスアクセス状態を監視し、キャッシュコヒーレンシを維持するように能動的に動作するスヌープ方式のキャッシュ制御を採用することも可能であるが、この制御方式は、キャッシュメモリによる能動的な制御故に回路の物理的及び論理的な規模が増大し、コストの増大を招いてしまう。
【０００５】
本発明の目的は、外部バスマスタとキャッシャブルエリアを共有可能なときにキャッシュコヒーレンシを維持する処理に移行するための前処理によるオーバーヘッドを低減することができるデータ処理装置、更にはデータ処理システムを提供することにある。
【０００６】
本発明の別の目的は、外部バスマスタとキャッシャブルエリアを共有可能なときにキャッシュコヒーレンシの維持を行なうための物理的及び論理的な規模を小さくすることができるデータ処理装置、更にはデータ処理システムを提供することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【０００８】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
〔１〕本発明に係るデータ処理装置は、外部に第１バスと第２バスが別々に接続可能であって、前記第１バスに接続する外部バスマスタに前記第２バスに接続する外部メモリのアクセスを許容するバス権を与えることが可能なデータプロセッサであって、前記外部メモリをキャッシュ対象とすることが可能なキャッシュメモリを含む。このデータプロセッサは、外部バスマスタからのアクセス要求の条件が特定の条件を満たすとき、キャッシュメモリの状態をチェックし、外部バスマスタからのメモリアクセスアドレスに対してキャッシュメモリにヒットするブロックがあれば前記メモリアクセスアドレスのデータとの間のキャッシュコヒーレンシを保つ操作を行なって、前記外部バスマスタからのアクセス要求に応答する外部メモリアクセスを開始可能にする。
【００１０】
上記した手段によれば、データ処理装置が外部バスマスタとキャッシャブルエリアを共有可能なときにキャッシュコヒーレンシを維持する処理に移行するための前処理では、外部バスマスタからのアクセス要求の条件が特定の条件を満たすか否かを判定すればよく、ＣＰＵへの割り込み処理に必要な状態保存などの前処理を要しない。外部バスマスタにデータプロセッサ内のバス権を与えることによってＣＰＵ動作との間の関係は整合する。また、キャッシュコヒーレンシを保つ操作はキャッシュメモリがバス状態を監視して能動的に行なうものではないから、従来のバススヌープ方式のキャッシュ制御を採用する場合に比べて、キャッシュコヒーレンシの維持を行なうための物理的及び論理的な規模を小さくすることが可能である。
【００１１】
本発明の一つの具体的な態様として、データ処理装置は、前記特定の条件をプログラマブルに指定するための制御レジスタを有する。前記制御レジスタは、アクセスアドレスとの比較に用いられる特定のアドレスを指定するための第１記憶領域を有する。アクセスアドレスがキャッシャブルエリアであるか否かの判定に用いられる。
【００１２】
前記制御レジスタは、アドレス比較のアドレスレンジを指定する第２記憶領域を有する。キャッシャブルエリアのサイズを任意に指定可能になる。
【００１３】
前記制御レジスタは、アドレス比較結果の一致又は不一致の何れを特定の条件成立とするかを指定するための第３記憶領域を有する。第１記憶領域及び第２記憶領域を用いてキャッシャブルエリアを直接指定するときは、アドレス比較結果の一致を特定の条件成立とすればよい。第１記憶領域及び第２記憶領域を用いてノンキャッシャブルエリアを指定するときは、アドレス比較結果の不一致を特定の条件成立とすればよい。キャッシャブルエリアがノンキャッシャブルエリアに分断されている状態を指定するのに便利である。
【００１４】
前記制御レジスタは、前記特定の条件が不成立であることを選択的に指定するための第４記憶領域を有してよい。要するに、キャッシュコヒーレンシを保つための一連の処理について選択／非選択が可能になる。
【００１５】
前記キャッシュコヒーレンシを保つ操作は、例えば、外部バスマスタによるメモリアクセスアドレスに基づいたキャッシュのヒットしたブロックがダーティであってライトアクセスに応答するときは当該ブロックをライトバックし且つ無効化し、キャッシュのヒットするブロックがダーティであってリードアクセスに応答するときは当該ブロックをライトバックし且つクリーン化し、キャッシュのヒットするブロックがクリーンであってライトアクセスに応答するときはヒットブロックを無効化し、キャッシュにヒットするブロックがクリーンであってリードアクセスに応答するとき及びヒットするブロックが存在しない時は、何もしない操作である。
【００１６】
〔２〕更に具体的な観点による本発明に係るデータ処理装置は、キャッシュメモリを内蔵するＣＰＵ、外部バスマスタを接続可能な外部インタフェース回路、外部メモリを接続可能なメモリインタフェース回路、及びそれらが共通接続される内部バスを有する。前記外部インタフェース回路は、外部バスマスタからの要求に応答してバス権を委譲することが可能であり、バス権を委譲したとき、外部バスマスタからの要求に応じて、前記内部バスから前記メモリインタフェース回路を介して外部メモリをアクセス可能とする。更に前記外部インタフェース回路は、前記メモリインタフェース回路を介して外部メモリをアクセスするときのアクセス条件が特定の条件を満たすとき、前記ＣＰＵに所定のキャッシュ制御コマンドを発行し、それに対する所定の応答を待って前記メモリインタフェース回路を介する外部メモリアクセスを開始可能する。前記ＣＰＵは、前記キャッシュ制御コマンドを受理したとき、キャッシュメモリの状態をチェックし、メモリアクセスアドレスに対してキャッシュメモリにヒットするブロックがあれば前記メモリアクセスアドレスのデータとの間のキャッシュコヒーレンシを保つ操作を行なって、前記所定の応答を前記外部インタフェース回路に返すことが可能である。
【００１７】
この発明においても上記同様に、データ処理装置が外部バスマスタとキャッシャブルエリアを共有可能なときにキャッシュコヒーレンシを維持する処理に移行するには、ＣＰＵへの割り込み処理に必要な状態保存などの前処理を要せず、また、従来のバススヌープ方式のキャッシュ制御を採用する場合に比べて、キャッシュコヒーレンシの維持を行なうための物理的及び論理的な規模を小さくすることが可能である。
【００１８】
前記外部インタフェース回路には、上記同様に、第１乃至第４記憶領域が割当てられた制御レジスタを設け、前記特定の条件をプログラマブルに指定可能にするのが望ましい。
【００１９】
前記外部インタフェース回路は、外部にバス権を与えた状態で前記所定の応答を待っているとき、前記外部インタフェース回路の状態が所定の状態であることを条件に、前記外部に対してバス権の解放とリトライを要求する機能を有することが望ましい。前記所定の状態は、前記外部インタフェース回路が新たなアクセス要求を受付け不可能な状態である。例えば、ＣＰＵが外部インタフェース回路に外部リードアクセスを指示して、ＣＰＵがデータリードを待っているとき、外部バスマスタが外部インタフェース回路からバス権を獲得して外部メモリアクセス可能にされることがある。このとき、キャッシュコヒーレント維持のためにＣＰＵがキャッシュメモリのライトバックを行なおうとしても、ＣＰＵは先に発行したリードアクセスに対するリードデータを待っているためにライトバックのための外部メモリアクセスを行なうことができずにデッドロックになってしまう可能性がある。前記外部インタフェース回路が新たなアクセス要求を受付け不可能な状態にあるとき、そのようなデッドロックを生ずる可能性があるので、前記バス権の解放とリトライの要求機能により、外部バスマスタにバス権を放棄させれば、先のリードアクセスが処理されてＣＰＵは新たなアクセス要求を発行可能になる。この状態で外部バスマスタは、バス権放棄により中断若しくは中止した外部メモリアクセスをリトライすればよい。これにより、デッドロックの虞を未然に防止することができる。
【００２０】
〔３〕本発明に係るデータ処理システムは、データプロセッサと、前記データプロセッサに接続されたローカルバスと、前記ローカルバスに接続された外部メモリと、前記データプロセッサに接続されたシステムバスと、前記システムバスに接続された外部バスマスタと、前記システムバスに接続されたその他の回路と、を有する。前記データプロセッサは、前記外部バスマスタに前記外部メモリのアクセスを許容するバス権を与えることが可能であって、前記外部メモリをキャッシュ対象とすることが可能なキャッシュメモリを含み、外部バスマスタからのアクセス要求の条件が特定の条件を満たすとき、前記キャッシュメモリの状態をチェックし、メモリアクセスアドレスに対してキャッシュメモリにヒットするブロックがあれば前記メモリアクセスアドレスのデータとの間のキャッシュコヒーレンシを保つ操作を行なって、前記外部バスマスタからのアクセス要求に応答する外部メモリアクセスを開始可能にする。
【００２１】
前記外部バスマスタによる前記アクセス要求には、外部バスマスタが接続されるアドレス空間情報を含むとよい。これにより、データプロセッサは、バス幅やウェイトサイクル数等の外部バスマスタのアクセス能力に合わせて外部バスマスタとインタフェースを行なうことができる。
【００２２】
前記データプロセッサには、上記同様に、第１乃至第４記憶領域が割当てられた制御レジスタを設け、前記特定の条件をプログラマブルに指定可能にするのが望ましい。更に、複数の外部バスマスタがシステムバスに接続される場合には、夫々の外部バスマスタに応じて前記制御レジスタを夫々有し、前記特定の条件をプログラマブルに指定可能にしても良い。
【００２３】
【発明の実施の形態】
図１には本発明に係るデータ処理システムが例示される。同図に示されるデータ処理システムは、データプロセッサ１、前記データプロセッサ１に接続されたローカルバス２、前記ローカルバス２に接続された外部メモリ例えばダブルデータレートの大容量のＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）３、前記データプロセッサ１に接続されたシステムバス４、前記システムバス４に接続された外部バスマスタ５、前記システムバス４に接続されたその他の回路例えばフラッシュメモリ（ＦＬＡＳＨ）６及びＳＲＡＭ（Static Random Access Memory）７、そしてデータプロセッサ１に接続されたＰＣＩ（Peripheral Component Interconnect）バス８を備えて成る。前記ローカルバス２はＳＤＲＡＭ３に専用化され、例えばメモリモジュール向け小振幅高速インタフェースであるＳＳＴＬ（Stub Series Terminated Transceiver Logic）２のバス仕様に準拠する。システムバス４はＬＶＴＴＬ（Low Voltage TTL）に準拠するバスであり、共有バスとして利用される。前記外部バスマスタ５はグラフィックコントローラ又はハードディスクコントローラなどのバスマスタモジュールを意味する。図示は省略するが、システムバス４には複数の外部バスマスタ及び複数のＡＳＩＣを接続することも可能である。
【００２４】
前記データプロセッサ１は、キャッシュメモリ１０を内蔵したＣＰＵ１１、ＤＭＡＣ１２（Direct Memory Access Controller）、ＰＣＩインタフェース回路１３、ＳＤＲＡＭインタフェース回路１４、外部バスインタフェース回路１５、周辺ブリッジインタフェース回路１６、デバッグインタフェース回路１７、それらの回路ジュールを接続する内部バス（オンチップバス）１８から成る。周辺ブリッジインタフェース回路１６は、オンチップバス１８と周辺バス２０との間のブリッジを構成する。周辺バス２０には適宜の内部周辺回路（ＩＰ）２１が接続される。ＳＤＲＡＭインタフェース回路１４はデータプロセッサ１のローカルメモリである前記ＳＤＲＡＭ３がローカルバス２経由で接続される。外部バスインタフェース回路１５は、前記システムバス４とオンチップバス１８に接続される。
【００２５】
前記ＳＤＲＡＭ３はキャッシュメモリ１０によるキャッシャブル領域を含む。外部バスインタフェース回路１５は、オンチップバス１８側のバスマスタモジュールであるＣＰＵ１１からのバス権要求、ＤＭＡＣ１２からのバス権要求、そしてシステムバス４側のバスマスタモジュールである外部バスマスタ５からのバス権要求を調停する。図１においてＢＲＥＱは外部バスマスタ５から外部バスインタフェース回路１５へのバス権要求信号、ＢＡＣＫは外部バスインタフェース回路１５から外部バスマスタ５へのバス権承認信号である。
【００２６】
ＣＰＵ１１又はＤＭＡＣ１２がバス権を獲得すれば、そのバス権を獲得したバスマスタモジュールが外部バスインタフェース回路１５を介してシステムバス４の回路モジュールをアクセスすることができる。
【００２７】
一方、システムバス４側の外部バスマスタ５がバス権を獲得したときは、外部バスマスタ５はシステムバス４の回路モジュールをアクセスすることができ、更に、外部バスインタフェース回路１５を介してＳＤＲＡＭ３のアクセスが可能にされる。これは、図１のシステムではＳＳＴＬ２の高速バス仕様を用いて高速大容量メモリであるＳＤＲＡＭ３をシステムバス４から切り離したローカルメモリとし、このＳＤＲＡＭ３をＣＰＵ１１のワークメモリとして、更には外部バスバスマスタのテンポラリメモリ或はフレームバッファメモリとしても利用可能にするためである。外部バスマスタ５がＳＤＲＡＭ３をアクセスする場合の経路は、外部バスマスタ５、外部バスインタフェース回路１５、オンチップバス１８、ＳＤＲＡＭインタフェース回路１４及びＳＤＲＡＭ３に通ずる経路となる。尚、システムバス側の外部バスマスタ５がバス権を獲得したときは、外部バスマスタ５はオンチップバス１８上のその他の回路モジュールをアクセスすることも可能である。要するに外部バスマスタ５はローカルメモリ（ＳＤＲＡＭ３）も含めてデータプロセッサ１をアクセスすることができる。
【００２８】
図２にはデータプロセッサのオンチップバス１８に接続された回路モジュールに割当てられる物理アドレスマップが例示される。４ギガバイト（ＧＢ）のアドレス空間に、夫々の回路モジュールがマッピングされる。例えば図中、ＦＥＭＩ＿ｄｂは前記外部バスインタフェース回路１５をメモリマップドＩ／Ｏとみなしたとき当該回路１５に割当てられるアドレス空間、ＥＭＩ＿ＤＲＡＭはＳＤＲＡＭ３のアドレス空間である。
【００２９】
図３には外部バスインタフェース回路１５に割当てられるアドレスマップが例示される。ここでは１２８メガバイト（ＭＢ）のアドレス空間がエリア０〜エリア４までの５個のエリアに分割される。図の例からも明らかなように、外部バスインタフェース回路１５には外部バスマスタ５が複数個接続される場合もある。図示は省略するが、更にＡＳＩＣも複数接続することが可能である。
【００３０】
外部バスマスタ５がシステムバス４上の回路モジュールをアクセスするときは、どの回路モジュールをアクセスするかを示すために対応する回路モジュールのモジュール選択信号（チップ選択信号）をアサートする。外部バスマスタ５がデータプロセッサ１をアクセスするときは、全てのモジュール選択信号をネゲートする。このとき外部バスマスタ５は、自分自身が図３のどのエリアに接続されているかを通知するためにアドレス空間情報２６（図１参照）を外部バスインタフェース回路１５に出力する。外部バスインタフェース回路１５は、制御レジスタ２７として、図３のエリア０〜４毎に図４のメモリ制御レジスタＡｎＭＣＲ（ｎ＝０〜４）を有し、外部バスマスタ５が通知するアドレス空間情報により制御レジスタＡｎＭＣＲ（ｎ＝０〜４）の中から一つを選択し、それによって外部バスインタフェース回路１５は外部バスマスタ５との通信に必要なウェイトサイクル数などの制御情報を認識する。
【００３１】
図４のメモリ制御レジスタＡｎＭＣＲ（ｎ＝０〜４）は、前述のようにエリア０〜エリア４の夫々に対応して存在し、各エリアに接続されるデバイスと外部インタフェース回路１５との間のアクセスを規定するパラメータを指定する。外部バスマスタ５が外部インタフェース回路１５をアクセスするとき、それがどのアドレスエリアに接続されているかは、前記アドレス空間情報２６により通知される。 外部インタフェース回路１５は通知されたエリアのメモリ制御レジスタＡｎＭＣＲ（ｎ＝０〜４）の内容に従って、外部バスマスタ５とハンドシェイクで情報のインタフェース制御を行なう。
【００３２】
図５に外部バスマスタ５と外部インタフェース回路１５との間のバスアービトレーションシーケンスが例示される。期間Ｔ１ではオンチップバス１８側のＣＰＵ１１などにより外部インタフェース回路１５を介してシステムバス４がアクセスされている状態を示す。期間Ｔ２では外部バスマスタ５がバス権を取ってデータプロセッサ１をアクセスするときのシステムバス４の状態を示している。外部バスインタフェース回路１５はバス権を取っていないためハイインピーダンス状態となり、システムバス４上ではバス権を取っている外部バスマスタ５よりアドレス等の情報が出力されている。期間Ｔ３はその後、再度オンチップバス１８側のＣＰＵ１１などにより外部インタフェース回路１５を介してシステムバス４がアクセスされている状態を示す。尚、図５では前記信号ＢＲＥＱ，ＢＡＣＫを負論理信号として図示している。
【００３３】
図６には外部バスマスタ５がローカルメモリをアクセスするときの処理フローが例示される。先ず、外部バスマスタ５が外部インタフェース回路１５にバス権要求信号ＢＲＥＱをアサートしてオンチップバス１８のバス権を要求する（ＳＴ１）。オンチップバス１８側との競合が無ければバス権承認信号ＢＡＣＫがアサートされて外部バスマスタ５にバス権が与えられる（ＳＴ２）。これにより、外部バスマスタ５はデータプロセッサ１をアクセスする。続いて外部バスマスタ５が外部インタフェース回路１５にアドレス、データ（ライト時）、コマンドを送る（ＳＴ３）。外部インタフェース回路１５は、そのメモリアクセスアドレスがキャッシュコヒーレンシ（単にコヒーレンシとも称する）対象アドレスか否かを判定し（ＳＴ４）、コヒーレンシ対象アドレスであるという特定の条件を満たすとき、ＣＰＵ１１にコヒーレンシコマンドを送る。コヒーレンシコマンドを受取ったときＣＰＵ１１の動作については詳細を後述するが、概略的には、前記キャッシュメモリ１０の状態をチェックし、メモリアクセスアドレスに対してキャッシュにヒットするブロックがあれば前記メモリアクセスアドレスのデータとの間のキャッシュコヒーレンシを保つ操作を行なって、コヒーレンシコマンドに対する応答を外部インタフェース回路１５に返す。外部インタフェース回路１５はコヒーレンシコマンドに対する応答の受領を確認すると（ＳＴ６）、今度はＳＤＲＡＭインタフェース回路１４にアクセスコマンドを供給して、ＳＤＲＡＭ３のアクセス動作を開始させる（ＳＴ７）。
【００３４】
図７にはコヒーレンシコマンド受理後のＣＰＵ１１によるコヒーレンシ処理フローが例示される。コヒーレンシコマンドを受理し（ＳＴ１０）、キャッシュメモリ１０をチェックし（ＳＴ１１）、キャッシュヒットか否かを判定し（ＳＴ１２）、キャッシュミスであれば当該コヒーレンシコマンドに対する応答を外部インタフェース回路１５に返す（ＳＴ１９）。キャッシュヒットであればダーティーブロックにヒットしたか否かを判定し（ＳＴ１３）、次にライトアクセスに応答するアクセスであったか、換言すればライトアクセス時のコヒーレンシ維持かリードアクセス時のコヒーレンシ維持かを判別する（ＳＴ１４，ＳＴ１５）。ステップＳＴ１２〜ＳＴ１５の判定により、キャッシュのヒットするブロックがダーティであってライトアクセスに応答するアクセスのときはヒットするブロックをライトバックし且つ当該ブロックを無効化し（ＳＴ１６）、キャッシュのヒットするブロックがダーティであってリードアクセスに応答するときはヒットするブロックをライトバックし且つ当該ブロックをクリーン化し（ＳＴ１７）、キャッシュのヒットするブロックがクリーンであってライトアクセスに応答するときはヒットするブロックを無効化する操作を行なって（ＳＴ１８）、当該コヒーレンシコマンドに対する応答を外部インタフェース回路１５に返す（ＳＴ１９）。
【００３５】
コヒーレンシ対象アドレスという特定の条件をプログラマブルに指定する為の制御レジスタ２８について説明する。外部インタフェース回路１５は、その制御レジスタ２８として、例えば図８に例示されるスヌープアドレスレジスタＳＮＰＡＲｎ（ｎ＝０，１）と、図９に例示されるスヌープ制御レジスタＳＮＰＣＲｎ（ｎ＝０，１）を有する。
【００３６】
図８にはスヌープアドレスレジスタＳＮＰＡＲｎ（ｎ＝０，１）の一例が示される。スヌープアドレスレジスタＳＮＰＡＲｎのビット３１〜０（ＣＡＤＲ：第１記憶領域）には、ＣＰＵ１１により３２ビットの物理アドレス（アクセスアドレスとの比較に用いられるアドレス情報）が任意に指定可能にされる。
【００３７】
図９にはスヌープ制御レジスタＳＮＰＣＲｎ（ｎ＝０，１）の一例が示される。ビット１〜０（ＳＮＰＭＤ：第３記憶領域及び第４記憶領域）は、外部インタフェース回路１５がコヒーレンシコマンドを発行する機能をイネーブルにするか否か、またコヒーレンシコマンドを発行する場合には、スヌープアドレスレジスタＳＮＰＡＲｎのアドレスと、外部バスマスタ５のアクセスアドレスの比較結果が一致したとき発行するのか、不一致のとき発行するのかを指定する。ビット４〜２（ＲＡＮＧＥ：第２記憶領域）は、アドレス比較を行なうアドレス長を指定する。ビット７〜４は、スヌープアドレスレジスタＳＮＰＡＲｎ及びスヌープ制御レジスタＳＮＰＣＲｎをどのエリアに接続された外部バスマスタからのアクセスに用いるかを指定する。この例では、スヌープアドレスレジスタＳＮＰＡＲｎ及びスヌープ制御レジスタＳＮＰＣＲｎがともに２本実装されており、外部バスマスタ５が最大２つのエリアに接続された場合までをサポートすることができる。また複数の外部バスマスタが接続される場合には夫々に対応した前記スヌープアドレスレジスタＳＮＰＡＲｎ及びスヌープ制御レジスタＳＮＰＣＲｎを外部バスインタフェース１５内に持たせることにより任意に制御することが可能となる。
【００３８】
前記スヌープアドレスレジスタＳＮＰＡＲｎの第１記憶領域と前記スヌープ制御レジスタＳＮＰＣＲｎの第２記憶領域を用いて図１０のキャッシャブルエリアＣＥ１を直接指定するときは、アドレス比較結果の一致をコヒーレンシコマンド発行の条件成立とすればよい。前記スヌープアドレスレジスタＳＮＰＡＲｎの第１記憶領域と前記スヌープ制御レジスタＳＮＰＣＲｎの第２記憶領域を用いて図１０のノンキャッシャブルエリアＮＣＥ２を指定するときは、アドレス比較結果の不一致をコヒーレンシコマンド発行の条件成立とすればよい。この設定はキャッシャブルエリアＣＥ２がノンキャッシャブルエリアＮＣＥ２に分断されている状態を指定するのに便利である。
【００３９】
次に、外部インタフェース回路１５の内蔵バッファのフル状態によるデッドロック条件とその解消方法について図６を参照しながら説明する。
【００４０】
前記外部インタフェース回路１５は、外部バスマスタ５にバス権を与えた状態で前記キャッシュコヒーレンシコマンドに対するＣＰＵ１１からの応答を待っているとき（図６のＳＴ６）、前記外部インタフェース回路１５の状態が所定の状態、例えば前記外部インタフェース回路１５のリクエスト受付バッファ（図１の３０）がフル状態で新たなアクセス要求を受付け不可能な状態、であることを条件に（図６のＳＴ８）、前記外部インタフェース回路１５は前記外部バスマスタに対してバス権の解放とリトライを要求する機能を有する（図６のＳＴ９）。例えば、ＣＰＵ１１が外部インタフェース回路１５に外部接続されたＳＲＡＭ７などに対する外部リードアクセスを指示して、ＣＰＵ１１がデータリードを待っているとき、外部バスマスタ５が外部インタフェース回路１５からバス権を獲得してＳＤＲＡＭ３をアクセス可能にされることがある。このとき、キャッシュコヒーレントコマンドが発行されて例えばＣＰＵ１１がキャッシュメモリ１０のライトバックを行なおうとしても、ＣＰＵ１５は先に発行したリードアクセスに対するリードデータを待っているためにライトバックのための外部メモリアクセスを行なうことができずにデッドロックになってしまう可能性がある。そこで前記外部インタフェース回路１５が新たなアクセス要求を受付け不可能な状態にあるとき、そのようなデッドロックを生ずる可能性があるので、前記バス権の解放とリトライを要求機能により外部バスマスタ５にバス権を放棄させれば、先のリードアクセスが処理されてＣＰＵ１１は新たなアクセス要求を発行可能になる。この状態で外部バスマスタ５は、バス権放棄により中断若しくは中止したＳＤＲＡＭ３のアクセスをリトライすればよい。これにより、デッドロックの虞を未然に防止することができる。
【００４１】
以上説明したデータプロセッサ１及びこれを適用したデータ処理システムによれば以下の作用効果を得る。
【００４２】
外部バスマスタ５がデータプロセッサ１のキャッシャブルローカルメモリとしてのＳＤＲＡＭ３をアクセスするとき、キャッシュメモリ１０のキャッシュコヒーレンシを維持させる処理を行うのにデータプロセッサ１への割り込み処理が不要になり、その処理のオーバーヘッドを低減でき、そのメモリアクセスを高速化することができる。外部バスマスタ５のデータ転送処理とデータプロセッサ１の演算処理を並列に実行できるようになり、データ処理性能も向上させることが可能になる。これに対し、そのようなキャッシュコヒーレンシを維持させるのにデータプロセッサへの割り込み処理を介在させる場合には、その割り込みハンドラ実行中に、データプロセッサは他の処理を実行できず、また割り込み処理のオーバーヘッド（割り込み開始、レジスタ待避、回復など）にプロセッサマシンサイクルで５０〜１００サイクル程度必要になる。本発明の場合にはオーバーヘッドはプロセッササイクルで１０サイクル程度であり、データ転送とプロセッサ処理の並列実行も可能である。
【００４３】
更に、外部バスマスタ５のドライバソフトを簡略化でき、その開発工数も低減可能になる。外部バスマスタ５のドライバから、コヒーレンシ用の割り込みハンドラを除くことができるからである。
【００４４】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００４５】
例えば、外部バスマスタがリードアクセスする時のコヒーレンシチェックに伴うキャッシュ操作を下記のようにすることも可能である。即ち、キャッシュメモリのリードヒットするブロックがダーティであるとき、ヒットするブロックをライトバックすると共にクリーン化し、更にそのデータを外部インタフェース回路１５に直接供給する。キャッシュメモリのリードヒットするブロックがクリーンなとき、ヒットするブロックのデータを外部インタフェース回路１５に供給する。このように、キャッシュメモリのリードヒット時には、外部バスマスタ５が所望とするデータはＣＰＵ１１のキャッシュメモリ１０内に存在しているから、そのデータをＣＰＵ１１から直接外部インタフェース回路１５に転送することにより、前述したところの外部インタフェース回路１５がコヒーレンシコマンドの完了通知を受理した後にＳＤＲＡＭインタフェース回路１４を改めてアクセスする場合に比べて、高速アクセスが可能になる。
【００４６】
また、データプロセッサのオンチップ回路モジュールは前記説明に限定されず適宜変更可能である。ローカルメモリとしての外部メモリはダブルデータレートのＳＤＲＡＭに限定されず、シングルデータレート、或はその他記憶形式のメモリであってもよい。また、システムバスとローカルバスの仕様はＬＶＴＴＬとＳＳＴＬ２に限定されず適宜変更可能である。また、本発明は複数のキャッシュ内蔵のプロセッサで構成される、マルチプロセッサシステムにも適用可能である。
【００４７】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００４８】
外部バスマスタがデータ処理装置のキャッシャブルメモリをアクセスするとき、キャッシュメモリのキャッシュコヒーレンシを維持させるのにデータ処理装置への割り込み処理が不要になり、キャッシュコヒーレンシを維持させる処理のオーバーヘッドが小さくなり、そのアクセスを高速化することができる。外部バスマスタのデータ転送処理とデータ処理装置の演算処理を並列に実行できるようになり、データ処理性能も向上させることが可能になる。更に、外部バスマスタのドライバソフトを簡略化でき、その開発工数も低減可能になる。
【図面の簡単な説明】
【図１】本発明に係るデータ処理システムを例示するブロック図である。
【図２】データプロセッサのオンチップバスに接続された回路モジュールに割当てられるも物理アドレスマップを例示する説明図である。
【図３】外部バスインタフェース回路に割当てられるアドレスマップを例示する説明図である。
【図４】メモリ制御レジスタＡｎＭＣＲの説明図である。
【図５】外部バスマスタと外部インタフェース回路との間のバスアービトレーションシーケンスを例示するタイミングチャートである。
【図６】外部バスマスタがローカルメモリをアクセスするときの処理を例示するフローチャートである。
【図７】コヒーレンシコマンド受理後のＣＰＵによるコヒーレンシ処理を例示するフローチャートである。
【図８】スヌープアドレスレジスタＳＮＰＡＲｎの一例が示す説明図である。
【図９】スヌープ制御レジスタＳＮＰＣＲｎの一例が示す説明図である。
【図１０】スヌープアドレスレジスタの第１記憶領域と前記スヌープ制御レジスタの第２記憶領域を用いてキャッシャブルエリアを直接指定した状態とノンキャッシャブルエリアを指定した状態とを対比した説明図である。
【符号の説明】
１  データプロセッサ
２  ローカルバス
３  ＳＤＲＡＭ
４  システムバス
５  外部バスマスタ
１０  キャッシュメモリ
１１  ＣＰＵ
１５  外部インタフェース回路
２７，２８  制御レジスタ
ＡｎＭＣＲ  メモリ制御レジスタ
ＳＮＰＡＲｎ  スヌープアドレスレジスタ
ＳＮＰＣＲｎ  スヌープコントロールレジスタ
ＣＡＤＲ  第１領域
ＳＮＰＭＤ  第３記憶領域及び第４記憶領域
ＲＡＮＧＥ  第２領域
【図１】
0004114915.tif 000002
【図２】
0004114915.tif 000003
【図３】
0004114915.tif 000004
【図４】
0004114915.tif 000005
【図５】
0004114915.tif 000006
【図６】
0004114915.tif 000007
【図７】
0004114915.tif 000008
【図８】
0004114915.tif 000009
【図９】
0004114915.tif 000010
【図１０】
0004114915.tif 000011