(57)【要約】【課題】  複数のＣＰＵを搭載したデータ処理システムにおいて、簡易な構成で、複数のＣＰＵの能力を活かしながら、メインメモリが共通する処理と、メインメモリが共通しない処理とをフレキシブルに実行することができるシステムを提供する。【解決手段】  内蔵メモリ１を、内蔵メモリ１を示すアドレスデータに基づきアクセスすることを可能とする領域デコーダ２１と、内蔵メモリ１を、外部メモリ２のアドレスデータに基づきキャッシュメモリとしてアクセスすることを可能とするキャッシュ制御機能２２とを備えたＭＭＵ２０を搭載したＰＵ１１を提供する。ＰＵ１１のプロセッサコア５は、アドレスデータにより、内蔵メモリ１を主メモリとしても、キャッシュメモリとしても利用することができる。【選択図】        図１
2005259051.tif 000002
【特許請求の範囲】
【請求項１】
第２のメモリに対するキャッシュメモリとして動作する第１のメモリの制御方法であって、
前記第２のメモリを示す第２のアドレスデータにより前記第１のメモリをキャッシュメモリとして使用する第２のモードと、
前記第１のメモリを示す第１のアドレスデータにより前記第１のメモリにアクセスする第１のモードとを有する制御方法。
【請求項２】
第２のメモリに対するキャッシュメモリとして動作する第１のメモリを有するプロセッシングユニットの制御方法であって、
このプロセッシングユニットのアドレスマップは、前記第１のメモリを示す第１のアドレスデータの領域と、前記第２のメモリを示す第２のアドレスデータの領域とを含んでおり、
前記第２のアドレスデータを出力して前記第１のメモリをキャッシュメモリとして使用する第２のモードと、
前記第１のアドレスデータを出力して前記第１のメモリを主メモリとして使用する第１のモードとを有する制御方法。
【請求項３】
請求項２において、前記第１のアドレスデータを出力して前記第１のメモリをテストするテストモードを有する制御方法。
【請求項４】
第２のメモリに対するキャッシュメモリとして動作する第１のメモリを備えた複数のプロセッシングユニットを有するデータ処理装置の制御方法であって、
それぞれのプロセッシングユニットのアドレスマップは、前記第１のメモリを示す第１のアドレスデータの領域と、前記第２のメモリを示す第２のアドレスデータの領域とを含んでおり、
前記複数のプロセッシングユニットの少なくとも１つは、前記第２のアドレスデータを出力して前記第１のメモリをキャッシュメモリとして使用する第２のモードで動作し、他は、前記第１のアドレスデータを出力して前記第１のメモリを主メモリとして使用する第１のモードで動作する工程を有する制御方法。
【請求項５】
第１のメモリを、当該第１のメモリを示す第１のアドレスデータに基づきアクセスする第１の手段と、
前記第１のメモリを、第２のメモリを示す第２のアドレスデータに基づき前記第２のメモリのキャッシュメモリとしてアクセスする第２の手段とを有するメモリ管理ユニット。
【請求項６】
請求項５において、前記第１のアドレスデータおよび第２のアドレスデータは、プロセッサコアのアドレスマップの異なる領域を示す、メモリ管理ユニット。
【請求項７】
請求項５に記載のメモリ管理ユニットと、
前記第１のメモリと、プロセッサコアとを有するプロセッシングユニット。
【請求項８】
請求項７において、前記第１のアドレスデータおよび第２のアドレスデータは、プロセッサコアのアドレスマップの異なる領域を示しており、
前記第１のアドレスデータの領域で動作する第１のモードと、
前記第２のアドレスデータの領域で動作する第２のモードとを備えているプロセッシングユニット。
【請求項９】
請求項７に記載のプロセッシングユニットを複数有するデータ処理装置。
【請求項１０】
請求項８に記載のプロセッシングユニットを複数有するデータ処理装置であって、
前記複数のプロセッシングユニットの少なくとも１つが前記第２のモードで動作し、他は前記第１のモードで動作する、データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリおよびそれを有するプロセッシングユニット、およびそれらの制御方法に関するものである。
【背景技術】
【０００２】
コンピュータシステムにおいては、処理速度を高速化するためにキャッシュメモリを用いている。キャッシュメモリを用いたシステムは、メインメモリとして利用される大容量だが低速のメモリに対して、ＣＰＵとメインメモリの間に小容量だが高速な記憶装置をキャッシュメモリとして置き、メインメモリの一部のデータを格納および保持することによってＣＰＵからメインメモリへのアクセス頻度を下げることにより処理速度を向上する。このキャッシュメモリが有効なのは、ＣＰＵで実行するプログラムが局所性を示すからであり、同じ命令を何度も繰り返したり、データを同じ領域に対して何度も入出力する傾向があるからである。
【特許文献１】特開２０００−３４８０００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
複数のＣＰＵを有するデータ処理システムおいては、キャッシュメモリの管理は複雑になる。データ処理システムがメインメモリとしてアクセスする対象となるメモリが１つであれば、データの同一性を担保するためにはキャッシュメモリは１つであることが望ましい。しかしながら、キャッシュメモリにアクセスできるＣＰＵが１つになると、マルチＣＰＵでありながらＣＰＵの処理能力は大幅に低下する。特開２０００−３４８０００号公報においては、複数のＣＰＵに対して１つのキャッシュメモリを備えたノードを複数用意し、ノード間のアクセスは、通信制御モジュールを介した通信と、メモリアクセス要求の処理順序を決定するキャッシュコヒーレンス制御を行うクロスバススイッチモジュールにより解決しようとしている。
【０００４】
クロスバススイッチモジュールは、リクエスト制御回路、トランザクションレジスタ、調停回路、選択回路などを含んだ非常に複雑なシステムであり、複数のＣＰＵを備えたデータ処理システムにおけるメインメモリへのアクセス制御は、もっと簡易な構成で行えることが望ましい。さらに、複数のＣＰＵの能力を十分に利用できることが重要である。また、複数のＣＰＵを搭載したデータ処理システムが複数のメインメモリに対してアクセスするようなシステム構成もありうることであり、そのような要求にも柔軟に対応できるデータ処理システムであることが望ましい。
【０００５】
そこで、本発明においては、複数のＣＰＵを搭載したデータ処理システムにおいて、簡易な構成で、複数のＣＰＵの能力を活かしながら、メインメモリが共通する処理と、メインメモリが共通しない処理とをフレキシブルに実行することができるメモリ管理ユニット、ＣＰＵおよびデータ処理装置、さらには、それらの制御方法を提供することを目的としている。
【課題を解決するための手段】
【０００６】
本発明においては、第２のメモリに対するキャッシュメモリとして動作する第１のメモリの制御方法であって、第２のメモリを示す第２のアドレスデータにより第１のメモリをキャッシュメモリとして使用する第２のモードと、第１のメモリを示す第１のアドレスデータにより第１のメモリにアクセスする第１のモードとを有する制御方法を提供する。このようなメモリ制御は、第１のメモリを、第２のメモリを示す第２のアドレスデータに基づき第２のメモリのキャッシュメモリとしてアクセスする第２の手段と、第１のメモリを、当該第１のメモリを示す第１のアドレスデータに基づきアクセスする第１の手段とを有するメモリ管理ユニットを提供することにより実現できる。このメモリ管理ユニットをプロセッサコアおよび第１のメモリと共に搭載したプロセッシングユニットでは、第２のモードにおいて、第２の手段により第１のメモリをキャッシュメモリとして利用できる。一方、第１のモードにおいては、第１の手段により第１のメモリをメインメモリとして利用できる。
【０００７】
本発明のメモリ管理ユニットを備えた複数のプロセッシングユニットを有するデータ処理装置においては、外部のメインメモリを第２のメモリとしてアクセスするプロセッシングユニットは第２のモードで動作し、外部のメインメモリにアクセスする必要のないプロセッシングユニットは第１のモードで動作するように設定することが可能となる。例えば、第２のモードで動作するプロセッシングユニットが、他のプロセッシングユニットの第１のメモリにプログラムを書き込み、他のプロセッシングユニットを第１のメモリをメインメモリとして、コプロセッサあるいはスレーブのように動作させることができる。
【０００８】
このデータ処理装置に搭載される本発明に係るプロセッシングユニットは、メモリ管理ユニットとしては同一の機能を備えている。したがって、複数のプロセッシングユニットのいずれかをメインメモリにアクセスするプロセッシングユニットにするかは自由であり、アプリケーションの実行中に変更することも可能である。また、複数のプロセッシングユニットが独立したメインメモリにそれぞれアクセスするような構成にすることも簡単である。このように、本発明により、複数のプロセッシングユニットの能力を活かしながら、メインメモリが共通する処理と、メインメモリが共通しない処理とをフレキシブルに実行できるデータ処理装置を提供できる。
【０００９】
メモリ管理ユニットの第１の手段と第２の手段との切り替え、すなわち、メモリ制御における第１のモードと第２のモードとの切り替えは、ポートのオンオフ、フラグレジスタの設定データの更新などの適当な方法により行うことができる。プロセッサコアの物理アドレス空間の異なる領域に、第１のメモリを示す第１のアドレスデータと、第２のメモリを示す第２のアドレスデータとを割り当てることにより、プロセッサコア上で動作するアプリケーションプログラムは、アドレスデータを選択することにより第１のモードと第２のモードとを選択することができる。メモリ管理ユニットに対して、第１のアドレスデータを出力することにより、第１のモードで第１のメモリにアクセスすることができ、第１のメモリを主メモリとして使用できる。また、メモリ管理ユニットに対して第２のアドレスデータを出力することにより、第２のモードで第１のメモリにアクセスすることができ、第１のメモリを第２のメモリのキャッシュメモリとして使用できる。
【００１０】
同一のアドレス空間（アドレスマップ）に割り付けられた第１および第２のアドレスデータにより、第１のモードと第２のモードとを切り替える機能を備えたメモリ管理ユニットにおいて、第１の手段は、プロセッサコアから出力されるアドレスデータが第１のアドレスデータの領域に含まれるか否かを判断する領域デコーダであり、第２の手段は、プロセッサコアから出力されるアドレスデータがキャッシュメモリとして機能する第１のメモリに格納済みのデータか否かを判断するタグメモリなどを備えたキャッシュ制御手段である。アドレスマップ上の第１のアドレスデータの領域がディフォルトで設定されていれば、プログラマーは、アプリケーションのスタートアドレスを変えるだけで、全てのプロセッシングユニットにおいて、第１のモードと第２のモードとを使い分けることができる。領域デコーダの設定を外部から制御することにより、第１のアドレスデータの領域を任意に変更することも可能であり、複数のプロセッシングユニット毎に、第１のアドレスデータの領域の設定を変えたりすることも可能である。
【００１１】
本発明のメモリの制御方法は、キャッシュメモリとして動作する第１のメモリに対して、第１のメモリのアドレスを指定してアクセスすることを可能とする。したがって、デバッグプログラムにより、第１のメモリの全てのアドレスを出力して、第１のメモリのメモリテストを行うことが可能となる。従来のキャッシュメモリは、キャッシュメモリのアドレスを指定して入出力することができないので、独立したメモリテストユニットを設け、キャッシュメモリをプロセッサコアとは分離してテストする方法が採用されている。これに対し、本願の発明によれば、プロセッサコアで動作するデバッグプログラムによりキャッシュメモリを試験することが可能となる。
【発明の効果】
【００１２】
本発明のプロセッシングユニットは、内蔵したキャッシュ用の第１のメモリをキャッシュとしても、主メモリとしても利用することができる。ＬＳＩ、ＡＳＩＣなどのデータ処理装置においては、搭載されている様々な機能の専用回路の制御を行ったり、専用回路では対処することが難しい汎用処理を実行するために汎用的な機能を備えたプロセッサが搭載されている。専用回路の回路規模が不足する場合、分散処理することが望ましい場合など、複数のＬＳＩを１つのデータ処理システムとして基板に搭載したり、同一のパッケージングに収納することが可能である。本発明においては、そのようなデータ処理システムにおいて、複数のＬＳＩに搭載されているプロセッサの１つをメインメモリとのアクセスに割り付け、他のＬＳＩに搭載されているプロセッサはキャッシュメモリをメインメモリとして稼動させ、コプロセッサのように使用したり、スレーブとしてメインのプロセッサを補助する機能を割り当てたり、様々な目的で使用することが可能となる。
【００１３】
また、本発明は、命令キャッシュとデータキャッシュがセパレートされたハーバードアーキテクチャにおいても、命令とデータの両方のために単一のキャッシュメモリが用意された統合キャッシュにおいて適用することができる。
【発明を実施するための最良の形態】
【００１４】
図１に、本発明のメモリ管理ユニットを備えたプロセッシングユニット（ＰＵ）１１の概略構成を示してある。図２に、ＰＵ１１の物理アドレスのアドレスマップの典型的な例を示してある。また、図３に、図１に示したＰＵ１１と比較するための従来型のプロセッシングユニット（ＰＵ）９１の概略構成を示し、図４にＰＵ９１の物理アドレスのアドレスマップの典型的な例を示してある。図３に示した、従来型のプロセッシングユニットＰＵ９１は、論理演算などを行うハードウェアリソースを備えたプロセッサコア５と、キャッシュメモリ１と、プロセッシングユニット９１の外部メモリであるメインメモリ２とキャッシュメモリ１とを接続するメモリインターフェイス６と、キャッシュメモリ１の管理を行うメモリ管理ユニット（ＭＭＵ）９５を備えている。
【００１５】
この従来型のＰＵ９１においては、プロセッサコア５からは主メモリ２のアドレスデータが出力され、ＭＭＵ９５は、プロセッサコア５からアドレスバス３に出力されたアドレスデータによりアクセスされるメモリ項目（本例では命令セットまたはデータ）がキャッシュメモリ１にあればそれをデータバス４に出力する。一方、プロセッサコア５から出力されたアドレスデータに対応するメモリ項目が見つからないと、ＭＭＵ９５は、アドレスデータに基づき、主メモリ２から、要求されたメモリ項目を含むデータブロックを取得してデータバス４を介してプロセッサコア５に供給すると共にキャッシュメモリ１にそのデータブロックを格納する。ＭＭＵ９５の典型的な構成は、キャッシュメモリ１に格納されているメモリ項目のアドレスデータを格納したタグメモリ７と、タグメモリ７に格納されたアドレスとアドレスバス３に出力されたアドレスの一致不一致を判定するヒット判定回路８と、データバス４をキャッシュメモリ１とメモリインターフェイス６を介して主メモリ２とに切り替えて接続するセレクタ９とを備えたものである。
【００１６】
この従来型のＰＵ９１においては、メインメモリ２だけをアクセスの対象とするのであれば、図４に示すように、プロセッサコア５の「００００００００」から「ＦＦＦＦＦＦＦＦ」までの４ＧＢの物理アドレス空間５０のすべての領域を全てメインメモリ２に割り当てることができる。実際には、４ＧＢのアドレス空間の全てを必要とするような膨大な容量のメインメモリを使用することはほぼありえない。
【００１７】
本発明を説明するために図１に示したＰＵ１１は、ＭＭＵの構成を除いて、上述した従来型のＰＵ９１と同じ構成にしてある。ＰＵ１１においては、プロセッサコア５は、主メモリとして使用される外部メモリ２を示すアドレスデータと、キャッシュメモリとして使用される内蔵メモリ１を示すアドレスデータを出力する。ＰＵ１１のＭＭＵ２０は、プロセッサコア５からアドレスバス３に出力されたアドレスが内蔵メモリ１に割り当てられた領域に含まれるものであるか否かを判断する領域デコーダ２１を備えており、内蔵メモリ１に割り当てられた領域に含まれるアドレスデータであれば、セレクタ９で内蔵メモリ１を選択してデータバス４と接続し、内蔵メモリ１とプロセッサコア５との間で入出力が行えるようにする。
【００１８】
ＭＭＵ２０は、さらに、タグメモリ７とヒット判定回路８とを備えており、内蔵メモリ１を外部メモリ２のキャッシュメモリとして使用するキャッシュ制御機能２２を備えている。したがって、プロセッサコア５からアドレスバス３に出力されたアドレスが、内蔵メモリ１に割り当てられたアドレスであれば、領域デコーダ２１の選択により、プロセッサコア５は内蔵メモリ１にアクセスすることが可能となる（第１のモード）。一方、プロセッサコア５からアドレスバス３に出力されたアドレスが、内蔵メモリ１に割り当てられたアドレスでなければ、従来型のＰＵ９１と同様に、内蔵メモリ１をキャッシュメモリとして用いて、プロセッサコア５は外部メモリ２にアクセスすることが可能となる（第２のモード）。ＭＭＵ２０は、領域デコーダ２１にヒットした信号と、タグメモリ７にヒットした信号をＯＲゲート２３で論理演算してセレクタ９を制御し、内蔵メモリ１と、メインメモリ２とを切り替えてデータバス４に接続している。
【００１９】
図２に、ＰＵ１１のプロセッサコア５の物理アドレス空間５０の構成を示してある。プロセッサコア５の「００００００００」から「ＦＦＦＦＦＦＦＦ」までの４ＧＢのアドレス空間の内、「ＦＦＦＦ００００」から「ＦＦＦＦＦＦＦＦ」までの６４ＫＢが内蔵メモリ１のアドレス領域５１となり、残りが外部メモリ２のアドレス領域５２となっている。したがって、ＭＭＵ２０は、プロセッサコア５からアドレスバス３に「ＦＦＦＦ００００」から「ＦＦＦＦＦＦＦＦ」の範囲のアドレスデータが出力されると、そのアドレスに格納された内蔵メモリ１のデータにプロセッサコア５はアクセスすることができる。
【００２０】
図５に、本例のＰＵ１１において、スタートアドレスの設定を変えることにより、内蔵メモリ１または外部メモリ２のいずれか一方をコードメモリとしてプログラムを実行する制御の一例を示してある。ステップ３１において、ＰＵ１１がメインメモリである外部メモリ２に格納されたアプリケーションをロードして実行する場合は、ステップ３２において、スタートアドレスをアドレスマップ５０の外部メモリ２に割り当てられたアドレス領域５２のロードアドレス（例えば「００００００００」）に設定する。そして、ステップ３４でプログラムをスタートする。プロセッサコア５は、外部メモリ２のアプリケーションプログラムの命令コードを、内蔵メモリ１をキャッシュメモリとして使用してロードし、プログラムを実行する（第２のモード）。
【００２１】
一方、内蔵メモリ１にプログラムコードが格納されている場合は、ステップ３３において、スタートアドレスをアドレスマップ５０の内蔵メモリ１に割り当てられたアドレス領域５１のロードアドレス（例えば「ＦＦＦＦ００００」）に設定する。そして、ステップ３４でプログラムをスタートする。プロセッサコア５は、内蔵メモリ１のアプリケーションプログラムの命令コードを、内蔵メモリ１からロードし、プログラムを実行する（第１のモード）。このように、本例のＰＵ１１においては、スタートコードの設定を変えるだけで、内蔵メモリ１をキャッシュメモリとしても、メインメモリとしても利用することができる。
【００２２】
また、ＰＵ１１において、アドレスマップ５０の全てのアドレスにアクセスすることにより、外部メモリ２に加え、内蔵メモリ１にもアクセスすることができるので、外部メモリ２と同様にキャッシュとして機能する内蔵メモリ１のメモリチェックを行うことができる。従来型のＰＵ９１においては、アドレスマップ５０の全てのアドレスにアクセスしても、メインメモリ２が見えているだけであり、内蔵メモリ１がキャッシュメモリとしてアクセスの媒介をしているとしても、キャッシュメモリとなる内蔵メモリ１の全ての領域を意図的にチェックすることは不可能である。
【００２３】
図６に、複数のＰＵ１１を搭載したデータ処理装置の一例を示してある。このデータ処理装置６１は、複数のＬＳＩ６０ａ〜６０ｃを搭載しており、各々のＬＳＩ６０ａ〜６０ｃは、画像処理やネットワーク処理などに適した専用回路６５と、汎用的な処理を行うＰＵ１１とを搭載している。これらのＬＳＩ６０ａ〜６０ｃは、入力されたビットストリーム６９に対して専用回路６５によりなんらかの処理を次々と行った後に出力する。このデータ処理装置６１を制御するプログラムは外部メモリ２に格納されており、ＬＳＩ６０ａのＰＵ１１が外部メモリ２にアクセスしてデータ処理装置６１の全体的な制御を行う。他のＬＳＩ６０ｂおよび６０ｃは、内蔵メモリ１に格納されたプログラムに従って、各々のＬＳＩ６０ｂおよび６０ｃの専用回路６５の制御と、その他の汎用的な、あるいは専用的な処理を行う。
【００２４】
他のＬＳＩ６０ｂおよび６０ｃの内蔵メモリ１には、マスタのＬＳＩ６０ａにより、外部メモリ２から予めプログラムをダウンロードしておくことが可能である。その後、ＬＳＩ６０ｂおよび６０ｃのスタートアドレスを内蔵メモリ１に割り当てられた領域５１にセットしてプログラムを実行することにより、ＬＳＩ６０ｂおよび６０ｃはスレーブとして処理を開始する。一方、メインのＬＳＩ６０ａは、内蔵メモリ１をキャッシュメモリとして外部メモリ２にアクセスし、外部メモリ２に格納されたアプリケーションプログラムにしたがって処理を進める。また、ビットストリーム６９を処理する過程において、得られた情報を外部メモリ２にフィードバックしたり、エラー情報をフィードバックしたりすることができる。
【００２５】
このデータ処理装置６１は、各々のＬＳＩ６０ａ〜６０ｃに対応して３つの外部メモリ２が用意されていれば、各々のＬＳＩ６０ａ〜６０ｃを夫々の対応する外部メモリに格納されたプログラムにより制御することも可能である。その場合には、各々のＬＳＩ６０ａ〜６０ｃの基本的な構成は変えずに、ＬＳＩ６０ａ〜６０ｃを接続するバス構成を若干変更するだけで良く、それぞれのＬＳＩ６０ａ〜６０ｃの内蔵メモリ１をキャッシュメモリとして使用することができる。２つのＬＳＩ６０ａおよび６０ｃを外部メモリ２のプログラムで制御し、残りのＬＳＩ６０ｂを内蔵メモリ１に格納したプログラムにより制御するといった構成も可能であり、この場合も、ＬＳＩ６０ａ〜６０ｃの構成は変える必要はない。
【００２６】
このように、本例のＰＵ１１を搭載したＬＳＩにおいては、従来、キャッシュメモリとしてのみ用いられていた内蔵メモリ１を、キャッシュメモリとしても、主メモリとしても用いることが可能であり、その切り替えは、プロセッサコア５から出力するアドレスデータにより簡単に行うことができる。
【００２７】
なお、アドレス空間５０の内、内蔵メモリ１に割り当てられる領域５１の範囲は、領域デコーダ２１の設定を変えることにより、変更することも可能である。また、複数のＰＵ１１を搭載するときに、それぞれのＰＵ１１の領域デコーダ２１の設定を変えることにより、ＰＵ１１の内蔵データ１のそれぞれにユニークなアドレス領域を設定することも可能である。ＰＵ１１と共にＬＳＩ６０を構成する専用回路としては様々なものを採用することができ、回路構成がフィックスしたものであっても、動的に回路構成を変えることができる再構成可能なものであっても良い。
【図面の簡単な説明】
【００２８】
【図１】本発明のメモリ管理ユニットを搭載したプロセッシングユニット（ＰＵ）の概略構成を示す図である。
【図２】図１に示すＰＵのプロセッサコアのアドレスマップを示す図である。
【図３】図１と対比して示す従来型のプロセッシングユニットの概略構成を示す図である。
【図４】図３に示すＰＵのプロセッサコアのアドレスマップを示す図である。
【図５】図１に示すＰＵにおいて、メインメモリのプログラムにより動作するモードと、内蔵メモリのプログラムにより動作するモードとを示す図である。
【図６】図１に示すＰＵを搭載した複数のＬＳＩを含むデータ処理装置の概要を示す図である。
【符号の説明】
【００２９】
１    内蔵メモリ（キャッシュメモリ）
２    外部メモリ（メインメモリ）
５    プロセッサコア
１１    プロセッシングユニット（ＰＵ）
２０    メモリ管理ユニット（ＭＭＵ）
【図１】
2005259051.tif 000003
【図２】
2005259051.tif 000004
【図３】
2005259051.tif 000005
【図４】
2005259051.tif 000006
【図５】
2005259051.tif 000007
【図６】
2005259051.tif 000008