(57)【要約】【課題】コンピュータシステムにおいて、プロセッサが動作モードを切り替える際に、必要なデータをスムーズに入手できるようにする技術を提供することを目的とする。【解決手段】本発明の１つの側面によれば、本発明は、特権レベルが異なる動作モードを複数備えたプロセッサと、前記複数の動作モードのうちの特定の動作モードに関連付けられた専用記憶領域と、前記動作モードに応じて前記プロセッサと前記専用記憶領域とを接続する接続部と、を備えることを特徴とするコンピュータシステムを提供することができる。【選択図】図１
2006209527.tif 000002
【特許請求の範囲】
【請求項１】
特権レベルが異なる動作モードを複数備えたプロセッサと、
前記複数の動作モードのうちの特定の動作モードに関連付けられた専用記憶領域と、
前記動作モードに応じて前記プロセッサと前記専用記憶領域とを接続する接続部と、
を備えることを特徴とするコンピュータシステム。
【請求項２】
前記専用記憶領域は、物理的に専用の記憶媒体を用いて構成されることを特徴とする、請求項１のコンピュータシステム。
【請求項３】
前記専用記憶領域は、記憶媒体内の記憶領域を論理的に区分して構成されることを特徴とする、請求項１のコンピュータシステム。
【請求項４】
前記接続部は、前記プロセッサがアクセスを要求するデータのアドレスと、前記専用記憶領域におけるデータの格納場所とを対応付けることを特徴とする、請求項３に記載のコンピュータシステム。
【請求項５】
前記専用記憶領域はセットアソシアティブ方式のキャッシュであることを特徴とする、請求項１から４のいずれかに記載のコンピュータシステム。
【請求項６】
前記専用記憶領域の数を変更する手段を有する請求項３又は４に記載のコンピュータシステム。
【請求項７】
前記専用記憶領域の数を自律的に変更する手段を有する請求項６に記載のコンピュータシステム。
【請求項８】
前記コンピュータシステムと協働して動作するプログラムを備え、前記プログラムの指示により前記専用記憶領域の数を変更する、請求項６又は７に記載のコンピュータシステム。
【請求項９】
前記専用記憶領域の大きさを変更する手段を有する請求項１に記載のコンピュータシステム。
【請求項１０】
前記専用記憶領域の大きさを自律的に変更する手段を有する請求項９に記載のコンピュータシステム。
【請求項１１】
前記コンピュータシステムと協働して動作するプログラムを備え、前記プログラムの指示により前記専用記憶領域の大きさを変更する、請求項９又は１０に記載のコンピュータシステム。
【請求項１２】
前記専用記憶領域はＳＲＡＭを用いて構成される、請求項１から１１のいずれかに記載のコンピュータシステム。
【請求項１３】
第１の記憶媒体と、前記第１の記憶媒体より高速の第２の記憶媒体とを備え、前記専用記憶領域は前記第２の記憶媒体内に実装されることを特徴とする、請求項１から１２のいずれかに記載のコンピュータシステム。
【請求項１４】
第１の動作モードと前記第１の動作モードと特権レベルの異なる第２の動作モードとを有するプロセッサと、前記プロセッサが前記第１の動作モードにおいてアクセスする第１の記憶領域と、前記プロセッサが前記第２の動作モードにおいてアクセスする第２の記憶領域と、を備えることを特徴とするコンピュータシステム。
【請求項１５】
前記プロセッサが前記第１の動作モードであるときは、外部から取り込むデータを前記第１の記憶領域に格納し、前記プロセッサが前記第２の動作モードであるときは、外部から取り込むデータを前記第２の記憶領域に格納することを特徴とする、請求項１４に記載のコンピュータシステム。
【請求項１６】
前記第１の記憶領域と前記第２の記憶領域は、それぞれ物理的に異なる記憶媒体上に存在することを特徴とする、請求項１４又は１５に記載のコンピュータシステム。
【請求項１７】
前記第１の記憶領域と前記第２の記憶領域は、同一の記憶媒体上の異なる論理区画に存在することを特徴とする、請求項１４又は１５に記載のコンピュータシステム。
【請求項１８】
１チップのＬＳＩとして集積されていることを特徴とする、請求項１から１７のいずれかに記載のコンピュータシステム。
【請求項１９】
携帯電子機器であることを特徴とする、請求項１から１７のいずれかに記載のコンピュータシステム。
【請求項２０】
請求項１から１３のいずれかに記載のコンピュータシステムと協働して動作し、前記専用記憶領域の数や大きさの変更を前記プロセッサに指示する命令を備えることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムに関し、より詳細にはプロセッサと記憶装置とのアーキテクチャに関する。
【背景技術】
【０００２】
コンピュータシステムにおいては、プロセッサの高速化に伴い、高速なプロセッサと低速なメインメモリとの処理速度の差が、システム全体の処理速度を向上させる上で深刻な問題となっている。そこでこの問題を解決するために、キャッシュ又はキャッシングと呼ばれる手法が用いられている。
【０００３】
キャッシュとは、高速なプロセッサと遅いメインメモリとの間に高速のキャッシュメモリを設け、両者の速度差を緩衝する方法である。単にキャッシュと言う場合はキャッシュメモリのことを言う場合も多い。プロセッサがデータにアクセスする場合は、最初にキャッシュメモリを調べて、もしその中にアクセスしたいデータがない場合にはじめてメインメモリにアクセスする。キャッシュメモリは非常に高速なＳＲＡＭを用いて構成されることが多く、プロセッサと同期して動作できるほど高速であるが、高価であるため大容量のキャッシュメモリを装備することは困難である。最近では、プロセッサのさらなる高速化に対応してキャッシュを多段構造とする例も多い。最近のＣＰＵでは、プロセッサに最も近い一次キャッシュには、非常に高速だが高価なメモリを数１０ＫＢ用い、一次キャッシュとメインメモリの間の二次キャッシュには、一次キャッシュ用メモリよりは低速だが安価なメモリを数１００ＫＢ用いることが多い。二次キャッシュとメインメモリとの間に、三次キャッシュを用いるコンピュータシステムも存在する。
【０００４】
最近のプロセッサの一次キャッシュは、命令キャッシュとデータキャッシュの２つが搭載されている場合が多い。その名の通り、命令キャッシュは命令に関するデータを扱い、データキャッシュはその他のデータを扱う。例えば”１＋３”という計算を実行する場合、命令キャッシュは加算演算コマンドである”＋”を扱い、データキャッシュには１や３を扱う。さらに、キャッシュのヒット率を向上させるため、キャッシュメモリを複数のブロックに分割して同一のインデックスを持つデータを複数個格納できるようにした、セットアソシアティブと呼ばれる方法が用いられている。セットアソシアティブについては特開平０５−２２５０５３号公報に詳しい記載がある。
【０００５】
次に、最近のコンピュータシステムに用いられるオペレーティングシステム（ＯＳ）は、カーネルモードとユーザーモードとを有する。これらはプロセッサの異なる動作モードに対応する。ＯＳは、カーネルモードのプログラムを実行するにはプロセッサの特権モードを使用し、ユーザーモードのプログラムを実行するにはＣＰＵやキャッシュの非特権モードを使用する。
【０００６】
特権モードと非特権モードでは、ハードウエア資源へのアクセス権が異なっている。特権モードで動作するプログラムに対し、プロセッサは、メインメモリやハードディスク・ネットワーク・プリンタなど、あらゆるハードウエア資源にアクセスを許可する。これに対して非特権モードで動作するプログラムに対し、プロセッサはハードウエア資源へのアクセスを制限する。ＯＳは、プログラムをカーネルモードで動作させるかユーザーモードで動作させるかを上手く選択することで、ＯＳをクラッシュや不正なプログラムから守ることができる。
【０００７】
最近のプロセッサは、特権レベルが異なる動作モードを複数備えていることが多い。特権レベルが異なるとアクセスできるメモリ領域が異なり、利用可能な命令やハードウエア資源へのアクセス権に違いがでる。多くのＯＳはそのうち２つをカーネルモード用とユーザーモード用にそれぞれ用いている。プロセッサの動作モードはＯＳの指示によって切り替えられる。
【０００８】
ところで、ある動作モードで使用される頻度の高いデータ群は、特権レベルが異なる別の動作モードで使用される頻度の高いデータ群とは異なっている。このため、プロセッサが動作モードを変更した直後では、キャッシュにその動作モードで使用するデータが格納されていないことが多く、プロセッサはメインメモリにアクセスしなければ必要なデータを取得できない場合が多い。プロセッサが動作の遅いメインメモリにアクセスしなければならないとなると、プロセッサの待機時間が増えて処理速度が遅くなる。のみならず、プロセッサがメインメモリにアクセスするために必要な電力は、キャッシュにアクセスするために必要な電力よりも大きいため、電力を余計に消費してしまう。また、プロセッサがメインメモリからのデータを待つ間にも、プロセッサで電力が消費されるので、これも無駄である。さらに、パイプラインを備えるプロセッサにおいては、データが送られてこないと、パイプライン処理が滞るパイプラインハザードが起こり、さらに消費電力の無駄が生じることになる。このような消費電力の無駄は、バッテリーで駆動する電子機器の動作可能時間を短くすることに繋がり、特にバッテリー駆動で使用する機会の多いノートパソコンや携帯電話などの携帯電子機器にとっては望ましいものではない。
【０００９】
図３を用いて既存技術を説明する。図３は、既存のコンピュータシステムを説明するためのブロック図である。コンピュータシステム１００８は、ＣＰＵ１０８とメインメモリ２７を有する。ＣＰＵ１０８は、基板２５の上に演算や制御のコアとなる部分やキャッシュ、及び外部とのインターフェースなどが１個のＬＳＩチップとして集積されたもので、中央演算処理装置（ＣＰＵ）と呼ばれる。また、ＤＳＰの一部もＣＰＵ１０８と同じように演算コアやキャッシュ・外部インターフェースが１個のＬＳＩチップとして集積された構造を有する。図３において演算や制御のコアとなる部分はプロセッサ１１で示されており、プロセッサ１１は内部にデータデコーダ，データ制御ユニット，スケジューラ，算術・論理演算ユニット，浮動小数点演算ユニットなどを含む。プロセッサ１１のみをＣＰＵと呼ぶ場合もある。ＣＰＵ１０８は２段階のキャッシュを備え、さらに一次キャッシュは命令キャッシュとデータキャッシュに分かれる。図３において一次命令キャッシュのコントローラは１３で表わされ、一次命令キャッシュ用メモリは１５で表わされる。一次データキャッシュのコントローラは１７、一次データキャッシュ用メモリは１９でそれぞれ表わされる。一次データキャッシュコントローラ１７と一次データキャッシュコントローラ１９は、二次キャッシュ２１に接続される。ＣＰＵ１０８は外部機器との接続のためにバスインターフェース２３を有しており、これを通じてコンピュータシステム１００８のメインメモリであるメインメモリ２７とも接続される。キャッシュメモリ１５，１９，２１には高速だが高価なＳＲＡＭが使われるが、メインメモリはＳＲＡＭに比べれば低速だが安価なＤＲＡＭが使われることが多い。ＣＰＵ１０８はリードフレームに載せられると共にモールド樹脂などで封入され、製品として販売される。コンピュータシステム１００８の電源が投入されると、メインメモリ２７にＣＰＵ１０８を情報処理装置として動作させるためのＯＳ２９がロードされる。
【００１０】
例として、プロセッサ１１は特権レベルの異なる動作モードを４つ有することとし、それぞれ動作モード０〜３と呼ぶ。動作モード０は最も特権レベルが高く、ハードウエアへのアクセスを制限なく行なうことができる。動作モード３は最も特権レベルが低く、ハードウエアへのアクセスは大きく制限される。ＯＳ２９は、カーネルモードのプログラムを実行するときは、プロセッサ１１の動作モードを０に変更し、ユーザーモードのプログラムを実行するときは、プロセッサ１１の動作モードを３に変更する。プロセッサ１１には動作モードを切り替えるためのＣＰＵ命令が備えられおり、ＯＳ２９はこれらのＣＰＵ命令を用いてプロセッサ１１の動作モードを切り替えることができる。
【００１１】
ＯＳ２９がカーネルモードのプログラムを実行しているとき、キャッシュメモリ１５には動作モード０で頻繁に用いられるデータが格納されている。ここでＯＳ２９がユーザーモードに切り替えるため、プロセッサ１１の動作モードを３に切り替えるとする。ところが、動作モード３で頻繁に用いるメモリ領域は、動作モード０で頻繁に用いるメモリ領域とは全く異なることが多い。このため、動作モードが３に切り替わった直後は、キャッシュメモリ１５には動作モード３で必要なデータが格納されていない可能性が非常に高い。そこでプロセッサ１１は、動作モードを３に切り替えた直後は、必要なデータをメインメモリ２７まで取りに行く必要がある。一旦取ってきたデータキャッシュメモリ１５に格納され、次に同じデータを必要とするときにはキャッシュメモリ１５から手に入れることができる。
【００１２】
しかし、この過程でキャッシュメモリ１５からは動作モード０で格納されていたデータが動作モード３で使用されるデータで上書きされて消えてしまう。このため、再びユーザーモードからカーネルモードへの切り替えが生じ、プロセッサ１１が動作モードを０に変更すると、キャッシュメモリ１５にはプロセッサ１１が必要とするデータが格納されておらず、プロセッサ１１はメインメモリ２７まで必要なデータを取りに行かねばならない。このため従来のコンピュータシステム１００８では、カーネルモードとユーザーモードとの切り替えが行なわれるために、プロセッサ１１によるメインメモリ２７へのアクセスが発生する。上記のように、メインメモリ２７へのアクセスにはキャッシュメモリ１５へのアクセスよりも長い時間がかかると共に、電力も余計に必要とする。アプリケーションによってはカーネルモードとユーザーモードとの切り替えが、１秒間に数百回〜数千回という頻度で行なうものもあり、処理の滞りや消費電力への影響は少なくない。
【特許文献１】特開平０５−２２５０５３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明は、コンピュータシステムにおいて、プロセッサが動作モードを切り替える際に、必要なデータをスムーズに入手できるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の１つの側面によれば、本発明は、特権レベルが異なる動作モードを複数備えたプロセッサと、前記複数の動作モードのうちの特定の動作モードに関連付けられた専用記憶領域と、前記動作モードに応じて前記プロセッサと前記専用記憶領域とを接続する接続部と、を備えることを特徴とするコンピュータシステムを提供することができる。
【００１５】
このような構成によれば、プロセッサの動作モードが切り替わったとき、プロセッサは切替後のモードにおける専用の記憶領域を使用できるため、必要なデータへのアクセスがスムーズになる。プロセッサと専用記憶領域との接続は、物理的なスイッチによることもできるし、論理的なスイッチによることもできる。論理的なスイッチは、例えばプロセッサがアクセスを要求するデータのアドレスと、専用記憶領域におけるデータの格納場所とを対応付ける論理回路を用いることで実現できる。専用記憶領域はできるだけ高速な記憶媒体を用いて実現することが好ましく、例えばＳＲＡＭを用いることが好ましい。
【００１６】
上記の特徴を備えたコンピュータシステムは、プロセッサが有する複数の動作モードの各々について、その動作モードでのみプロセッサがデータを読みに行く専用記憶領域を設けてもよい。また、複数の動作モードのうち特定のモードのみに専用記憶領域を設けてもよい。例えば、プロセッサが４つの動作モードを有する場合、４つの動作モードそれぞれに専用記憶領域を設ける構成でもよいし、１番目の動作モードにのみ専用記憶領域を設け、他の動作モードでは共通の記憶領域を設けるような構成でもよい。使用頻度の高い動作モードにのみ専用記憶領域を設けることで、製造コストの上昇を抑えることができる。専用記憶領域は、物理的に専用の記憶媒体を用いて実現してもよいし、ある記憶媒体の特定の領域を論理的に区切って実現してもよい。後者の場合は上記接続部が論理的なスイッチであることができる。
【００１７】
さらに上記の特徴を備えたコンピュータシステムにおいて、複数の専用記憶領域を設ける場合は、それぞれの専用記憶領域について物理的に異なる記憶媒体を用いて実現してもよいし、同一の記憶媒体内の異なる領域を用いることで実現してもよい。前者の構成を採用した場合は、後者に比べて構造を簡単にすることができ、後者の構成を採用した場合は、前者よりも柔軟な構造を実現することができる。
【００１８】
後者のアプローチ、すなわち同一の記憶媒体を論理的に区切ることで複数の専用記憶領域を設ける実施態様は、例えば上記接続部が、プロセッサの要求するデータのアドレスと、論理的な専用記憶領域のデータ格納場所とを対応づけるような論理回路を持つことで実現できる。また、区切りの数や区切られた区画の大きさ（容量）を変更できるように構成することが好ましい。つまり、専用記憶領域の数や容量を可変とするように構成することが好ましい。このような構成では、プロセッサの各動作モードの使用頻度などを監視することで、メモリアクセスの効率が良い専用記憶領域の実施形態を柔軟に判断・実現できる。例えば、記憶媒体の容量が６４ＫＢであり、プロセッサが４種類の動作モードを有するとしたとき、ある場合は４つの動作モード全てに１６ＫＢずつの専用記憶領域を割り当て、別の場合は１番目の動作モードに３２ＫＢを割り当てると共に残りの３２ＫＢはその他の全ての動作モードでプロセッサがデータを読みに行く共通記憶領域ということが可能となる。
【００１９】
専用記憶領域に用いる記憶媒体の区切りの数や区画の大きさの変更は、直接的にはプロセッサの制御によって行なわれる。プロセッサは、各動作モードの使用状況を監視して、最も効率の良い専用記憶領域の数や大きさを自律的に調節することが好ましい。また、専用記憶領域の数や大きさの変更は、アプリケーションの実行中にも動的に行なうように構成することが好ましい。または、本発明による上記の特徴を備えたコンピュータシステムと協働して動作するコンピュータ・プログラムがある場合は、当該プログラムの指示によって専用記憶領域の数や大きさを変更できるように構成することも可能である。このような機能を持たせることが好ましいプログラムとして、オペレーティングシステムがある。
【００２０】
本発明による上記の特徴を備えたコンピュータシステムは、１つの実施態様において、第１の記憶媒体と第１の記憶媒体より高速の第２の記憶媒体とを備え、上記専用記憶領域を第２の記憶媒体内に実装する構成とすることができる。
【００２１】
このような実施態様の特徴を備えたコンピュータシステムにおいて、例えば第１のメモリをメインメモリとし、第２のメモリをキャッシュメモリとすることができる。すると、キャッシュメモリはプロセッサの特定のモードで専用的に使われる専用記憶領域を備えるように構成することができ、その専用領域に対応するプロセッサ動作モードにおいて使用頻度の高いデータを格納しておくことができる。上記の実施態様において、専用記憶領域にセットアソシアティブ方式のキャッシュを用いてもよい。
【００２２】
上記の実施態様の特徴を備えたコンピュータシステムは、かかる特徴を備えていないものに比べ、プロセッサが動作モードを変更した直後からアクセス速度の高いキャッシュメモリから必要なデータをすぐに入手できる可能性が高く、アクセス速度の遅いメインメモリにアクセスする回数が少なくてすむ。この結果、スムーズなキャッシュアクセスを実現すると共に、プロセッサがメインメモリからのデータ待ち時間に消費する電力や、プロセッサがメインメモリにアクセスするために消費する電力を、従来技術に比べて節約することができる。さらに、パイプラインを有するプロセッサを備えたコンピュータシステムに上記の実施態様を応用すれば、データ転送遅延に起因するパイプラインハザードの発生を減少させることができ、パイプラインハザード中に費やされる消費電力も節約することができる。
【００２３】
本発明の別の側面によって、本発明は、第１の動作モード及び第１の動作モードと特権レベルの異なる第２の動作モードとを有するプロセッサと、該プロセッサが第１の動作モードにおいてアクセスする第１の記憶領域と、該プロセッサが第２の動作モードにおいてアクセスする第２の記憶領域とを備えることを特徴とする、コンピュータシステムを提供することができる。このような特徴を備えるコンピュータシステムは、前記プロセッサが第１の動作モードであるときは、外部から取り込むデータを第１の記憶領域に格納し、該プロセッサが第２の動作モードであるときは、外部から取り込むデータを第２の記憶領域に格納するという特徴を備える実施態様を取ることができる。ここで第１の記憶領域と第２の記憶領域は、それぞれ物理的に異なる記憶媒体を用いて構成してもよいし、同一の記憶媒体上の異なる論理区画を用いて構成してもよい。
【００２４】
上記の特徴を備えたコンピュータシステムも、キャッシュを備えるコンピュータシステムに適用することができ、上記第１の記憶領域や第２の記憶領域をキャッシュに適用することができる。これらの記憶領域が特定の動作モードでアクセスされるため、スムーズなキャッシュアクセスを実現し、キャッシュアクセスに係る消費電力の節約効果も期待できる。
【００２５】
以上の説明を考慮すると、本発明は、以上に説明した特徴を備えるコンピュータシステムと協働して動作し、前記専用記憶領域の数や大きさの変更を前記プロセッサに指示する命令を備えることを特徴とするコンピュータ・プログラムを提供することができる。このようなプログラムは、例えばオペレーティングシステムに適用されることが好ましい。
【００２６】
本発明によって提供されるコンピュータシステムは、１チップのＬＳＩとして集積された実施態様を含むことができる。このようなＬＳＩは、パッケージに封入されて、製品として販売されることができる。また本発明によって提供されるコンピュータシステムは、携帯電子機器である実施態様を含むことができる。携帯電子機器とは、例えば携帯電話、ＰＤＡ、ノートパソコン、携帯テレビ受像器、携帯型音楽／映像再生機、デジタルカメラ、ビデオレコーダーなど、携帯して用いることのできる電子機器である。本発明によるコンピュータシステムは、スムーズなキャッシュアクセスを実現するため、キャッシュアクセスにかかる消費電力の削減効果を期待できる。このためバッテリーで駆動する機会の多い携帯電子機器は、本発明の有用な適用分野である。
【発明の効果】
【００２７】
本発明によれば、コンピュータシステムにおいて、プロセッサが動作モードを切り替える際に、プロセッサが必要なデータをスムーズに入手することが可能となる。
【発明を実施するための最良の形態】
【００２８】
以下、添付図面を参照して本発明の好適な実施例を説明する。図１は、本発明を適用したコンピュータシステムの一例を説明するためのブロック図である。
【００２９】
本発明の実施例であるコンピュータシステム１００１は、図３で説明したコンピュータシステム１００８と同様に、ＣＰＵ１０１とメインメモリ２７を有している。本実施例におけるＣＰＵ１０１は、図３で説明したＣＰＵ１０８と同様に、基板２５の上に演算や制御のコアとなる部分やキャッシュ、及び外部とのインターフェースなどが集積された１個のＬＳＩチップであり、リードフレームに載せられると共にモールド樹脂などで封入されて、製品として販売されることができる。ＣＰＵ１０１は、プロセッサ３１，一次命令キャッシュコントローラ３３，キャッシュセレクタ３７，１番目の一次命令キャッシュメモリ３９，２番目の一次命令キャッシュメモリ４１，一次データキャッシュコントローラ１７，一次データキャッシュメモリ１９，二次キャッシュ２１，バスインターフェース２３を有している。またＣＰＵ１０１は、バスインターフェース２３を通じてコンピュータシステム１００１のメインメモリであるメインメモリ２７に接続される。コンピュータシステム１００１の電源が投入されると、メインメモリ２７にＣＰＵ１０１を情報処理装置として動作させるためのＯＳ２９がロードされる。上記に挙げたコンピュータシステム１００１構成要素の中で、従来技術として説明したコンピュータシステム１００８と同じ構成要素には同じ符号を付し、これ以上の説明を省略する。
【００３０】
ＣＰＵ１０１のプロセッサ３１は、図３のプロセッサ１１と同様に、動作モード０〜３と呼ばれる特権レベルの異なる動作モードを４つ有しており、プロセッサ１１が有する機能を全て備えることができる。しかしプロセッサ３１は、動作モードを変更すると、その動作モードを外部に知らせることができるところがプロセッサ１１と異なる。一次命令キャッシュコントローラ３３は図３の一次命令キャッシュコントローラ１３の機能を全て備えることができるが、プロセッサ３１の動作モードを保持するレジスタ３５を有するところが異なる。プロセッサ３１は、その動作モードを変更すると、レジスタ３５の状態を変更するように構成され、その他は従来技術のプロセッサと全く同じように作ることができる。
【００３１】
本実施例におけるＣＰＵ１０１は、キャッシュセレクタ３７と２つの一次命令キャッシュメモリ３９及び４１を有する。キャッシュセレクタ３７は、レジスタ３５の状態をチェックし、レジスタ３５の状態がＣＰＵの動作モード０を示していれば、一次命令キャッシュコントローラ３３と１番目の一次命令キャッシュメモリ３９を接続する。また、レジスタ３５の状態がＣＰＵの動作モード１から３のいずれかを示していれば、一次命令キャッシュコントローラ３３と２番目の一次命令キャッシュメモリ４１を接続する。従って、１番目の一次命令キャッシュメモリ３９は、プロセッサ３１の動作モード０において専用的に用いられる専用キャッシュメモリとなる。２番目の一次命令キャッシュメモリ４１は、プロセッサ３１の動作モード１から３の全てで用いられる共用キャッシュメモリとなるが、ＣＰＵ１０１を情報処理装置として動作させるＯＳ２９は、プロセッサ３１の動作モードをモード０とモード３の２つしか用いないため、２番目の一次命令キャッシュメモリ４１も事実上モード３の専用キャッシュメモリとなる。ＯＳがもっと多くの動作モードを用いる場合は、３番目，４番目のキャッシュメモリを設け、それぞれキャッシュセレクタ３７に接続することもできる。本実施例のように、複数のキャッシュメモリをそれぞれ物理的に独立したメモリを用いて実現する場合は、キャッシュセレクタ３７はマルチプレクサを用いて比較的容易に作ることができる。図１でキャッシュメモリ３９と４１を異なる大きさで描いたように、キャッシュセレクタ３７に接続する複数のキャッシュメモリの容量は、全て同じでもよいし、互いに異なっていても良い。また、キャッシュセレクタ３７に接続する複数のキャッシュメモリの一部又は全部にセットアソシアティブ方式のキャッシュを用いる構成を採ることもできる。
【００３２】
次にコンピュータシステム１００１の動作を説明する。
【００３３】
図３で説明したコンピュータシステム１００８と同じように、ＯＳ２９は、カーネルモードのプログラムを実行するときは、プロセッサ３１の動作モードを最も特権レベルの高い０に変更し、ユーザーモードのプログラムを実行するときは、プロセッサ３１の動作モードを最も特権レベルの低い３に変更する。
【００３４】
ＯＳ２９がカーネルモードのプログラムを実行しているとき、プロセッサ３１は動作モード０で動作している。レジスタ３５の状態は、プロセッサ３１が動作モード０で動作していることを示しており、キャッシュセレクタ３７は１番目の一次命令キャッシュメモ３９を一次命令キャッシュコントローラ３３に接続する。従ってプロセッサ３１は、キャッシュメモリ３９にアクセスすることができるようになる。
【００３５】
動作モード０において、一次命令キャッシュメモリ３９には、プロセッサ３１が動作モード０で頻繁に用いるデータが格納されていく。必要なデータがキャッシュメモリ３９に格納されていない場合は、そのデータをメインメモリ２７から取ってこなければならない。が、一旦取ってきたデータはキャッシュメモリ３９に格納され、次にプロセッサ３１がそのデータを必要とするときは、キャッシュメモリ３９からそのデータを手に入れることができる。
【００３６】
次に、ＯＳ２９がユーザーモードのプログラムを実行するため、プロセッサ３１に動作モードを３に切り替えるための命令を出す。モード切替命令を受け取ったプロセッサ３１は、自身の動作モードを３に切り替えると共に、レジスタ３５の状態をプロセッサ３１がモード３で動作していることを示すように変更する。これを受けてキャッシュセレクタ３７は、２番目の一次命令キャッシュメモリ４１を一次命令キャッシュコントローラ３３に接続する。従ってプロセッサ３１は、キャッシュメモリ３９から切り離されると共に、キャッシュメモリ４１にアクセスすることができるようになる。そこで一次命令キャッシュメモリ４１には、プロセッサ３１が動作モード３で頻繁に用いるデータが格納されていく。
【００３７】
ここでＯＳ２９が、再びカーネルモードのプログラムを実行するため、プロセッサ３１に動作モードを０に切り替えるためのデータを出すとする。するとキャッシュセレクタ３７によって、プロセッサ３１はキャッシュメモリ４１から切り離され、キャッシュメモリ３９に接続される。このときキャッシュメモリ３９には、プロセッサ３１が動作モード０で頻繁に用いるデータが格納されたままである。このためプロセッサ３１は、動作モードが再び０に切り替わった直後から、動作モード０で必要となるデータをキャッシュメモリ３９から手に入れることができる。従って、プロセッサ３１が動作モードの切り替え後にメインメモリ２７にアクセスする必要性は従来技術に比べて減少し、プロセッサ３１は必要なデータを短時間で手に入れることができる。
【００３８】
同様に、ＯＳ２９が、再びユーザーモードのプログラムを実行するため、プロセッサ３１に動作モードを３に切り替えるための命令を出すときのことを考える。プロセッサ３１の動作モードが３に切り替わると、上記のキャッシュセレクタ３７によって、プロセッサ３１はキャッシュメモリ４１に接続される。このときキャッシュメモリ４１にはプロセッサ３１が動作モード３で頻繁に用いるデータが格納されたままであるので、プロセッサ３１は、動作モードが３に切り替わった直後から、動作モード３で必要となるデータをキャッシュメモリ４１から手に入れることができる可能性が増す。
【００３９】
このように、本発明の実施例であるコンピュータシステム１００１は、プロセッサの動作モードの切り替え後にプロセッサがメインメモリにアクセスする必要性を、従来技術に比べて減少させることができる。このため、本発明の実施例であるコンピュータシステム１００１は、プロセッサがメインメモリからのデータを待つ時間の間に消費する電力や、プロセッサがメインメモリにアクセスするために必要な電力を節約することができる。さらに、プロセッサ３１がパイプラインを備えるプロセッサである場合、データ転送遅延に起因するパイプラインハザードの発生を減少させることができ、パイプラインハザード中に費やされる消費電力も節約することができる。カーネルモードとユーザーモードとの切り替えは、アプリケーションによっては１秒間に数百回〜数千回という頻度で行なわれるので、ここで説明した本実施例の節電効果は極めて高いと言える。
【００４０】
本実施例においては、プロセッサ３１は動作モードが切り替わったことをレジスタ３５に反映させるように構成することの他は、従来のプロセッサと同じように作ることができ、複数の一次命令キャッシュがあることを特に意識して作る必要はない。また、ＯＳも同様であり、複数の一次命令キャッシュがあることを特に意識する必要はない。従って、本発明の実施態様であるＣＰＵ１０１は、製造が困難ではなく、従来のコンピュータシステムとの互換性も高い。
【００４１】
なお、上記の実施例では一次命令キャッシュにのみ、プロセッサの動作モードに対応した専用キャッシュを設けたが、一次データキャッシュ１７，１９や、二次キャッシュ１７にも同様の構成でプロセッサの動作モードに対応した専用キャッシュを設けることも可能である。また、ＣＰＵ１０１とメインメモリ２７の間に三次キャッシュを設けるコンピュータシステムも存在するが、その場合に三次キャッシュにも上記と同様にプロセッサの動作モードに対応した専用キャッシュを設けることが可能である。
【００４２】
次に、図２を参照して本発明の第２の実施例を説明する。図２は、本発明の第２の実施例に係るコンピュータシステムを説明するためのブロック図である。
【００４３】
本発明の実施例であるコンピュータシステム１００２は、第１実施例で説明したコンピュータシステム１００１と同様に、ＣＰＵ１０２とメインメモリ２７を有している。ＣＰＵ１０２は、第１実施例のＣＰＵ１０１と同様に、基板２５の上に演算や制御のコアとなる部分やキャッシュ、及び外部とのインターフェースなどが集積された１個のＬＳＩチップである。ＣＰＵ１０２は、プロセッサ５１，一次命令キャッシュコントローラ３３，アドレス変換部５３，一次命令キャッシュメモリ５５，一次データキャッシュコントローラ１７，一次データキャッシュメモリ１９，二次キャッシュ２１，バスインターフェース２３を有している。またＣＰＵ１０２は、バスインターフェース２３を通じてコンピュータシステム１００２のメインメモリであるメインメモリ２７に接続される。コンピュータシステム１００２の電源が投入されると、メインメモリ２７にＣＰＵ１０２を情報処理装置として動作させるためのＯＳ６１がロードされる。上記に挙げたコンピュータシステム１００２構成要素の中で、従来技術として説明したコンピュータシステム１００８や本発明の実施例１として説明したコンピュータシステム１００１と同じ構成要素には同じ符号を付し、これ以上の説明を省略する。
【００４４】
ＣＰＵ１０２のプロセッサ５１は、実施例１に係るプロセッサ３１と同様に、動作モード０〜３と呼ばれる特権レベルの異なる動作モードを４つ有しており、プロセッサ３１が有する機能を全て備えることができる。即ちプロセッサ５１は、その動作モードを変更するとき、レジスタ３５にデータを書き込み、レジスタ３５の状態がプロセッサ５１の動作モードを示すように変更する機能を有する。プロセッサ３１と同様に、プロセッサ５１における特権レベルの最も高い動作モードは０であり、最も低い動作モードは３であるとする。
【００４５】
本実施例における一次命令キャッシュメモリ５５は、単一のＳＲＡＭから構成されるが、内部を第１領域５７と第２領域５９に論理的に分割して用いることができる。そして、第１領域５７はプロセッサ５１の動作モード０において専用的に用いられる専用キャッシュ領域として用いられ、第２領域５９はプロセッサ５１の動作モード１から３の全てで用いられる共用キャッシュ領域として用いられる。プロセッサ５１が要求するデータのアドレス空間と一次命令キャッシュメモリ５５の各領域におけるデータ格納場所との対応関係は、アドレス変換部５３によって整合性が取られる。アドレス変換部５３は、レジスタ３５の状態をチェックし、レジスタ３５の状態がＣＰＵの動作モード０を示していれば、プロセッサ５１が要求するデータのアドレス空間が、第１領域５７のデータ格納構造にマッピングされるように、プロセッサ５１から要求するデータのアドレスを変換する。これによって、第１領域５７を、プロセッサ５１の動作モード０で専用的に用いられる専用キャッシュ領域とすることができる。
【００４６】
またアドレス変換部５３は、レジスタ３５の状態がＣＰＵの動作モード１から３のいずれかを示していれば、プロセッサ５１が要求するデータのアドレス空間が、第２領域５９のデータ格納構造にマッピングされるように、プロセッサ５１から要求するデータのアドレスを変換する。これによって、第２領域５９を、プロセッサ５１の動作モード１から３の全てにおいて用いられる共用キャッシュ領域とすることができる。しかし、ＯＳ６１が第１実施例におけるＯＳ２９と同様に、プロセッサ５１の動作モードを０と３の２つしか用いないならば、第２領域５９は事実上動作モード３の専用キャッシュ領域となるであろう。
【００４７】
図３に示した一次命令キャッシュメモリ５５は２つの領域に論理的に区切られているが、もちろんプロセッサ５１の動作モード全てに専用キャッシュ領域が割り当てられるように、論理的に４つに区切る実施態様も可能である。その場合アドレス変換部５３は、それぞれの専用キャッシュ領域のデータ格納構造と、プロセッサ５１が要求するデータのアドレス空間とが正しく対応できるようなアドレス変換処理を行なうように構成されねばならない。
【００４８】
なお、第１領域５７や第２領域５９のデータ格納構造は、従来のキャッシュメモリにおけるデータ格納構造と同様に、プロセッサ５１が要求するデータのアドレスの下位ビット（エントリアドレス）に対応してデータを格納するような構造にすることが好ましい。
【００４９】
一次命令キャッシュメモリ５５内の論理的区切りの数や区切られた領域の大きさ（容量）は固定でも良いが、可変であることが望ましい。キャッシュメモリ５５の論理的区切りは実質的にアドレス変換部５３によるアドレス変換に依存するので、このアドレス変換機能が論理的区切りの数や大きさに対して可変でなくてはならない。連続的に可変とするとアドレス変換部５３の論理回路が複雑になるので、特定の区切りの数や大きさだけを実現するように構成してもよい。このようなアドレス変換部５３の一例として、論理的区切りの数が２つとするアドレス変換モードと４つになるアドレス変換モードを備える構成が考えられる。また、キャッシュメモリ５５の大きさが６４ＫＢをとして、論理的区切りの数が２つの場合は各領域に３２ＫＢずつ割り当てるアドレス変換モードと、一方の領域に１６ＫＢ，もう一方の領域に４８ＫＢを割り当てるアドレス変換モードを備える構成が考えられる。
【００５０】
アドレス変換部５３のアドレス変換モードの切り替えは、直接的にはプロセッサ５１の指示によって行なう。プロセッサ５１の指示は、プロセッサ５１がアドレス変換部５３に直接行なう構成としても良いし、レジスタ３５がプロセッサ５１の指示するアドレス変換モードを示すように拡張し、プロセッサ５１がレジスタ３５を通じて指示を行なう構成としてもよい。
【００５１】
上記説明したアドレス変換部５３のアドレス変換モードの切り替えのタイミングは、プロセッサ５１が自律的に判断できることが好ましい。この機能は、プロセッサ５１に組み込まれたソフトウエア（ファームウエア）あるいは動的再構成が可能な回路によって実装される。ファームウエアはＯＳやアプリケーションが使用する動作モードの数や、各動作モードで使用される頻度の高いデータのデータサイズを監視し、プロセッサ５１がメインメモリにアクセスする頻度ができるだけ小さくなるようなキャッシュメモリ５５の論理的区切りの数や大きさ判断する。即ち、アドレス変換部５３の最適なアドレス変換モードを選択する。このような構成とすることで、ＣＰＵ１０２は、様々なＯＳに対応して、動作モード切替時のメインメモリへのアクセス回数を抑制することが可能となる。
【００５２】
キャッシュメモリ５５内の論理的区切りの数や区切られた領域の大きさを変更する命令を、ＯＳ６１に実装することもできる。これは、アドレス変換部５３のアドレス変換モードを切り替える命令としても実装することができる。この場合はプロセッサ５１が、かかる命令を解釈してアドレス変換部５３のアドレス変換モードを制御する機能を備える必要がある。
【００５３】
次にコンピュータシステム１００２の動作を説明する。
【００５４】
実施例１に係るコンピュータシステム１００１のＯＳ２９と同じように、ＯＳ６１は、カーネルモードのプログラムを実行するときは、プロセッサ５１の動作モードを最も特権レベルの高い０に変更し、ユーザーモードのプログラムを実行するときは、プロセッサ５１の動作モードを最も特権レベルの低い３に変更する。
【００５５】
ＯＳ６１がカーネルモードのプログラムを実行しているとき、プロセッサ５１は動作モード０で動作しており、レジスタ３５の状態はプロセッサ５１が動作モード０で動作していることを示している。そこでアドレス変換部５３は、プロセッサ５１が要求するデータのアドレスを、一次命令キャッシュメモリ５５の第１領域５７の対応するデータ格納位置に関連付ける。従ってプロセッサ５１は、専らキャッシュメモリ５５内の第１領域５７のみにアクセスしていることとなる。このため動作モード０において、第１領域５７にはプロセッサ５１が動作モード０で頻繁に用いるデータが格納されていく。必要なデータが第１領域５７に格納されていない場合は、プロセッサ５１そのデータをメインメモリ２７から取ってこなければならない。が、一旦取ってきたデータは第１領域５７に格納され、次にプロセッサ５１がそのデータを必要とするときは、第１領域５７からそのデータを手に入れることができる。
【００５６】
次に、ＯＳ６１がユーザーモードのプログラムを実行するため、プロセッサ５１に動作モードを３に切り替えるための命令を出す。モード切替命令を受け取ったプロセッサ５１は、自身の動作モードを３に切り替えると共に、レジスタ３５の状態をプロセッサ５１がモード３で動作していることを示すように変更する。これを受けてアドレス変換部５３は、プロセッサ５１が要求するデータのアドレスを、一次命令キャッシュメモリ５５の第２領域５９の対応するデータ格納位置に関連付ける。従ってプロセッサ５１は、専らキャッシュメモリ５５内の第２領域５９のみにアクセスすることとなり、第１領域５７にはアクセスできなくなる。そこで第２領域５９には、プロセッサ５１が動作モード３で頻繁に用いるデータが格納されていく。
【００５７】
ここで、ＯＳ６１が、再びカーネルモードのプログラムを実行するため、プロセッサ５１の動作モードを０に切り替える。するとアドレス変換部５３によって、プロセッサ５１は第２領域５９から切り離され、第１領域５７に接続される。このとき第１領域５７にはプロセッサ５１が動作モード０で頻繁に用いるデータが格納されたままであるため、プロセッサ５１は直ちに動作モード０で頻繁に用いるデータを第１領域５７から手に入れることができる。従って、プロセッサ５１が動作モードの切り替え後にメインメモリ２７にアクセスする必要性は従来技術に比べて減少し、プロセッサ５１は必要なデータを短時間で手に入れることができる。
【００５８】
同様に、ＯＳ６１が、再びユーザーモードのプログラムを実行するため、プロセッサ５１に動作モードを３に切り替えるときのことを考える。するとアドレス変換部５３によって、プロセッサ５１は第２領域５９に接続される。このとき第２領域５９にはプロセッサ５１が動作モード３で頻繁に用いるデータが格納されたままであるため、プロセッサ５１は直ちに動作モード３で頻繁に用いるデータを第２領域５９から手に入れることができる。
【００５９】
なお、上記の実施例では一次命令キャッシュ５５のみ、論理的に分割してプロセッサの動作モードに対応した専用キャッシュ領域を設けたが、一次データキャッシュ１７，１９や、二次キャッシュ１７にも同様な手段で専用キャッシュ領域を設けることが可能である。また、一次キャッシュが命令キャッシュとデータキャッシュに分かれていないアーキテクチャのキャッシュにも上記のような専用キャッシュ領域を設けることも、もちろん可能である。さらに、ＣＰＵ１０２とメインメモリ２７の間に三次キャッシュを設けるコンピュータシステムも存在するが、その場合に三次キャッシュにも上記と同様の手段によりプロセッサの動作モードに対応した専用キャッシュ領域を設けることが可能である。
【００６０】
以上のように、本発明の第２実施例であるコンピュータシステム１００２は、本発明の第１実施例であるコンピュータシステム１００１と同様に、プロセッサの動作モードの切り替え後にプロセッサがメインメモリにアクセスする回数が、従来技術に比べて少なくてすむ。このため、本発明の第２実施例であるコンピュータシステム１００２も、プロセッサがメインメモリからのデータを待つ時間の間に消費する電力や、プロセッサがメインメモリにアクセスするために必要な電力を節約することができる。さらに、プロセッサ５１がパイプラインを備えるプロセッサである場合、データ転送遅延に起因するパイプラインハザードの発生を減少させることができ、パイプラインハザード中に費やされる消費電力も節約することができる。カーネルモードとユーザーモードとの切り替えは、アプリケーションによっては１秒間に数百回〜数千回という頻度で行なわれるので、ここで説明した本実施例の節電効果は極めて高いと言える。
【００６１】
第２実施例に係るコンピュータシステム１００２は、第１実施例に係るコンピュータシステム１００１よりも、プロセッサのキャッシュアクセスをＯＳやアプリケーションに合わせて柔軟に最適化することができるという利点を有する。一方、第１実施例に係るコンピュータシステム１００１は、第２実施例に係るコンピュータシステム１００２よりも、製造が容易だという利点がある。
【００６２】
第１実施例や第２に実施例で用いられたキャッシュメモリ１９，２１，３９，４１，５５には、高速なＳＲＡＭを用いることが好ましい。メインメモリ２７は、低速だが安価なＤＲＡＭでもよい。第１実施例に係るＣＰＵ１０１や第２実施例に係るＣＰＵ１０２はリードフレームに載せられると共にモールド樹脂などで封入され、製品として販売されることができる。また、本発明の第１実施例に係るコンピュータシステム１００１や第２実施例に係るコンピュータシステム１００２は、その節電効果のため、携帯電話やＰＤＡ、ノートパソコン、携帯テレビ受像器、携帯型音楽／映像再生機、デジタルカメラ、ビデオレコーダーなど、携帯して用いることのできる電子機器用のＣＰＵやＤＳＰに好適に適用されうる。さらに、プロセッサの動作モードが頻繁に切り替わる、ルーターなどのネットワーク機器も好適な適用対象と言える。
【００６３】
以上、本発明の好適な実施例の説明を終えるが、本発明の範囲は上記に説明した構成に限定されるものではなく、本発明の思想を超えない範囲で様々な実施態様を取りうることは言うまでもない。例えば、第２実施例では１つの記憶媒体の一部を論理的に区分して専用記憶領域を設ける実施態様の例を説明したが、このような実施例のみならず、複数の記憶媒体を論理的に１つのボリュームとみなして、その論理ボリュームの一部を区分して専用記憶領域を設ける構成も可能である。
【図面の簡単な説明】
【００６４】
【図１】本発明を適用したコンピュータシステムの一例を説明するためのブロック図である。
【図２】本発明を適用したコンピュータシステムの別の例を説明するためのブロック図である。
【図３】従来技術を説明するための図である。
【符号の説明】
【００６５】
１７  一次データキャッシュコントローラ
１９  一次データキャッシュメモリ
２１  二次キャッシュ
２３  バスインターフェース
２５  基板
２７  メインメモリ
２９  ＯＳ
３１  プロセッサ
３３  一次命令キャッシュコントローラ
３７  キャッシュセレクタ
３９  １番目の一次命令キャッシュメモリ
４１  ２番目の一次命令キャッシュメモリ
１０１  ＣＰＵ
１００１  コンピュータシステム
【図１】
2006209527.tif 000003
【図２】
2006209527.tif 000004
【図３】
2006209527.tif 000005