(57)【要約】【課題】外部メモリを使用せずにＣＰＵ内部で処理を行うことで、迅速な処理が可能になるとともに、外部メモリに対する電力供給を停止し、消費電力を低減することができるＣＰＵおよびこれを備えた情報処理装置、ＣＰＵの制御方法を提供する。【解決手段】ＣＰＵ１０は、バスインターフェース１１、制御ユニット１２、命令キャッシュ１３ａ、データキャッシュ１３ｂ、２次キャッシュ１３ｃ、命令デコーダ１４、演算ユニット１５およびレジスタ群１６を備えている。ＣＰＵ１０は、キャッシュ１３ａ〜１３ｃのみで処理が可能である場合には、外部メモリに対するアクセスを禁止し、外部メモリへの電力供給を停止する。【選択図】  図１
2004178016.tif 000002
【特許請求の範囲】
【請求項１】
内部にキャッシュを備えており、上記キャッシュに対してデータの書き換えを行うとともに、この書き換えたデータを所望のタイミングで外部メモリに反映させるライトバック制御を行うＣＰＵにおいて、
処理するタスクの必要メモリ量に応じて、上記キャッシュだけにアクセスしてタスクの処理が可能であるか否かを判定し、該処理が可能である場合には、上記外部メモリに対するアクセスを禁止する制御手段を備えていることを特徴とするＣＰＵ。
【請求項２】
上記制御手段は、上記キャッシュの残り容量および／または処理するタスクの必要メモリ量を検出することを特徴とする請求項２に記載のＣＰＵ。
【請求項３】
上記外部メモリに対するアクセスが禁止されている状態において、上記制御手段が、上記キャッシュだけでは処理が不可能と判断した場合、あるいはキャッシュミスが発生した場合には、上記外部メモリに対するアクセス禁止を解除することを特徴とする請求項２に記載のＣＰＵ。
【請求項４】
内部クロックのクロック周波数を制御するクロック制御手段を備えており、
該クロック制御手段は、上記外部メモリに対するアクセスが禁止された場合には、上記クロック周波数を変化させることを特徴とする請求項１〜３の何れか１項に記載のＣＰＵ。
【請求項５】
上記制御手段は、上記キャッシュ内における不要なデータを格納しているアドレスを検出し、該検出されたアドレスに対応するキャッシュ領域を解放することを特徴とする請求項１〜４の何れか１項に記載のＣＰＵ。
【請求項６】
電源投入後の初期動作時においては、所望のプログラムおよびデータを上記外部メモリから上記キャッシュに読み込んだ上で、上記外部メモリへのアクセスを禁止することを特徴とする請求項１〜５の何れか１項に記載のＣＰＵ。
【請求項７】
上記制御手段は、タスクの状況が変化する際に、上記外部メモリに対するアクセスが必要か否かについての判断を行うことを特徴とする請求項１〜６の何れか１項に記載のＣＰＵ。
【請求項８】
上記制御手段は、上記キャッシュ内のプログラムおよびデータについて、パージされたか否かについて判定し、パージされていない場合には、上記プログラムおよびデータを上記外部メモリから読み込む処理を行わないことを特徴とする請求項１〜７の何れか１項に記載のＣＰＵ。
【請求項９】
請求項１〜８に記載のＣＰＵと、外部メモリと、該外部メモリへ電力を供給する電源供給手段とを備えた情報処理装置において、
上記電源供給手段は、上記外部メモリへのアクセスが禁止されている場合には、該外部メモリへの電力供給を停止することを特徴とする情報処理装置。
【請求項１０】
上記外部メモリは、複数のモジュールを含んでおり、
上記制御手段は、上記モジュールごとに電力供給の制御を行うことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
内部に備えたキャッシュに対してデータの書き換えを行うとともに、この書き換えたデータを所望のタイミングで外部メモリに反映させるライトバック制御を行うＣＰＵの制御方法において、
処理するタスクの必要メモリ量に応じて、上記キャッシュだけにアクセスしてタスクの処理が可能であるか否かを判定し、該処理が可能であると判定した場合には、上記外部メモリに対するアクセスを禁止することを特徴とするＣＰＵの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に対する電力供給を停止することなく、外部メモリに対する供給電力を削減して、ＣＰＵ全体の消費電力を低減することが可能なＣＰＵおよびこれを備えた情報処理装置、ＣＰＵの制御方法に関するものである。
【０００２】
【従来の技術】
従来、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）のような情報処理装置において、ＣＰＵの外部に備えられる外部メモリなどを停止して省電力化を図ることが提案されている。
【０００３】
ここで、ＰＣが備えているＣＰＵの内部には、キャッシュと呼ばれる高速小容量のメモリが備えられている。一方、ＣＰＵの外部には、ＤＲＡＭのような低速大容量の外部メモリが設けられている。
【０００４】
そして、ＣＰＵは、キャッシュと外部メモリとを適宜使い分けて各処理を行っており、例えば、通常はキャッシュだけを書き換え、必要に応じてキャッシュの書き換えられた内容を外部メモリに反映させる、いわゆるライトバック制御を行う。
【０００５】
このようなライトバック制御を行うＣＰＵを備えた情報処理装置の一例としては、レジューム時に必要なプログラムを予めＣＰＵのキャッシュにロードしておき、復帰時に外部メモリが使用可能になったことのチェックを、外部のハードウェアではなくキャッシュに書き込まれたプログラムを用いて処理を行うことで、消費電力を抑えることが可能な情報処理装置が提案されている（特許文献１参照）。
【０００６】
同様に、ダイナミック素子の内部状態をスタティック素子に退避して電源を切断し、次の電源投入時に退避した内部状態を復元してレジューム機能を実現する情報処理装置が提案されている（特許文献２参照）。
【０００７】
【特許文献１】
特開平１１−２７２３４７号公報（公開日：１９９９年１０月８日）
【０００８】
【特許文献２】
特開平６−２３０８４５号公報（公開日：１９９４年８月１９日）
【０００９】
【発明が解決しようとする課題】
しかしながら、上記従来の情報処理装置は、消費電力を削減するためのレジューム時に外部メモリ等に対する電力供給を停止しているものの、ＣＰＵが処理を行う場合には、外部メモリへのアクセスが必要となる。このため、レジューム時から通常の処理動作時に移行する際には、再度外部メモリを立ち上げる必要があるため、迅速な処理ができないとともに、レジューム時にのみ外部メモリへの電力供給を停止するため、十分に消費電力の低減を図ることができないという問題がある。
【００１０】
すなわち、上記従来の情報処理装置では、レジュームモードへの移行の際に、復帰用のデータの退避や、復帰時の外部メモリが使用可能であるか否かのチェックを目的としてキャッシュを使用している。よって、何れの情報処理装置においても、タスクの処理等の動作は、ダイナミック素子や外部メモリの復帰後に開始される。したがって、レジューム時以外には常に外部メモリが起動していることになるため、十分に消費電力の低減を図ることができない。
【００１１】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、外部メモリを使用せずにＣＰＵ内部で処理を行うことで、迅速な処理が可能になるとともに、外部メモリに対する電力供給を停止し、消費電力を低減することができるＣＰＵおよびこれを備えた情報処理装置、ＣＰＵの制御方法を提供することにある。
【００１２】
【課題を解決するための手段】
本発明のＣＰＵは、上記の課題を解決するために、内部にキャッシュを備えており、上記キャッシュに対してデータの書き換えを行うとともに、この書き換えたデータを所望のタイミングで外部メモリに反映させるライトバック制御を行うＣＰＵにおいて、処理するタスクの必要メモリ量に応じて、上記キャッシュだけにアクセスしてタスクの処理が可能であるか否かを判定し、該処理が可能である場合には、上記外部メモリに対するアクセスを禁止する制御手段を備えていることを特徴としている。
【００１３】
上記の構成によれば、ＣＰＵ内に備えられているキャッシュだけを用いてタスクの処理を行うことができる状態においては、外部メモリへのアクセスを禁止しているため、外部メモリに対する電力供給を停止させて消費電力を削減できる。
【００１４】
すなわち、通常、ライトバック制御を行うＣＰＵでは、所定のタイミングで、データ等が書き込まれたキャッシュから外部メモリに対して該データ等の書き込みを行うが、本発明のＣＰＵでは、一定条件下において、キャッシュへのアクセスが可能な状態のまま、外部メモリへのアクセスを禁止している。
【００１５】
例えば、処理するタスクの必要メモリ量が比較的小さく、キャッシュの残り容量だけでタスクの処理を継続させることが可能である場合には、外部メモリに対するアクセスを禁止するとともに、キャッシュだけにアクセスしてタスクの処理を行う。
【００１６】
このように、キャッシュだけにアクセスしてタスクの処理が可能な状態においては、外部メモリへのアクセスを禁止しているため、アクセス禁止期間中には、外部メモリに対する電力供給を停止する、あるいは低消費電力モードに切り替える等の措置を取ることができ、結果として、本発明のＣＰＵを備えた情報処理装置の消費電力を削減することができる。
【００１７】
また、本発明のＣＰＵでは、以上のように、キャッシュのみで行える処理は外部メモリを使用せずに処理を行い、できる限り外部メモリを使用しないようにすることで、外部メモリに供給する電力消費量を削減している。これにより、レジューム時にのみ外部メモリに対する電力供給を停止させる従来の情報処理装置と比較して、外部メモリに対する電力供給停止期間を長くでき、より効果的に消費電力を削減できる。
【００１８】
さらに、キャッシュよりも低速な外部メモリに対するアクセス回数を従来よりも減らし、高速アクセスが可能なキャッシュを用いて処理を行うため、迅速な処理が可能になる。
【００１９】
なお、上記キャッシュは、プログラムコード等を記憶している命令キャッシュ、データ等を記憶しているデータキャッシュおよびこれらを補完するために設けられている２次キャッシュ等を含んでいる。
【００２０】
上記制御手段は、上記キャッシュの残り容量および／または処理するタスクの必要メモリ量を検出することがより好ましい。
【００２１】
これにより、例えば、キャッシュの残り容量とタスクの必要メモリ量とを検出して両者を比較することで、キャッシュのみを用いて該タスクの処理を行うことが可能であるか否かを判定できる。
【００２２】
このとき、判定の結果が「可能」であった場合には、外部メモリに対するアクセスを禁止するとともに電力供給を停止する。一方、判定の結果が「不可能」であった場合には、そのまま外部メモリにアクセスしてライトバック制御を行い、キャッシュの残り容量を増やすことができる。
【００２３】
また、キャッシュの残り容量が殆どないことが検出された場合には、タスクの必要メモリ量を検出することなく、外部メモリにアクセスしてライトバック制御を行い、キャッシュの残り容量を増やすことができる。
【００２４】
上記外部メモリに対するアクセスが禁止されている状態において、上記制御手段が、上記キャッシュだけでは処理が不可能と判断した場合、あるいはキャッシュミスが発生した場合には、上記外部メモリに対するアクセス禁止を解除することがより好ましい。
【００２５】
これにより、外部メモリに対するアクセス禁止状態において、アクセス禁止を解除することで、ライトバック制御を行って、キャッシュ内のデータ等を外部メモリに書き込むことができるため、外部メモリに書き込まれたデータ等をキャッシュから消去して、キャッシュの残り容量を増加させることができる。
【００２６】
そして、キャッシュの残り容量がタスクの処理に充分な容量まで増加した場合、あるいは外部メモリからキャッシュに必要なデータ等が書き込まれた後には、再度、キャッシュだけでタスクの処理を行うとともに、外部メモリに対するアクセスを禁止して消費電力を削減することが可能になる。
【００２７】
また、このようなキャッシュだけにアクセスして処理を行うモードから、キャッシュに加えて外部メモリに対してもアクセスして処理を行うモードへの移行を、処理を停止させることなく、処理を継続したまま行うことができため、迅速な処理が可能になる。
【００２８】
なお、上記キャッシュミスとは、読みに行ったデータがキャッシュ内に存在しなかった場合をいう。
【００２９】
内部クロックのクロック周波数を制御するクロック制御手段を備えており、該クロック制御手段は、上記外部メモリに対するアクセスが禁止された場合には、上記クロック周波数を変化させることがより好ましい。
【００３０】
これにより、例えば、外部メモリへのアクセスが禁止されている場合、すなわち、高速アクセスが可能なキャッシュのみにアクセスして処理を行っている場合には、クロック周波数を低くすることにより、ＣＰＵの消費電力を削減することができる。
【００３１】
なお、このようにクロック周波数を低くした場合には処理速度が低下することが考えられるが、キャッシュは高速アクセスが可能であるため、処理速度をそれほど落とさずに処理を行うことが可能である。
【００３２】
また、キャッシュのみで処理を行う場合において、高速アクセスが可能なキャッシュを用いているため、クロック周波数を高めることで、さらに高速処理が可能になる。
【００３３】
上記制御手段は、上記キャッシュ内における不要なデータを格納しているアドレスを検出し、該検出されたアドレスに対応するキャッシュ領域を解放することがより好ましい。
【００３４】
これにより、例えば、処理の終了したタスク専用のプログラム、データの領域、スタックの不要なデータ等を格納しているアドレスを検出し、このデータ等に対応するキャッシュ領域を、データが書き込まれていない領域とみなして解放することにより、実質的にキャッシュの空き容量を増やすことができるため、キャッシュを有効に利用できる。
【００３５】
さらに、キャッシュ内の不要になったデータ等については、外部メモリへのライトバックを行う必要はないため、上記のように該データ等のメモリ領域を開放することで、無駄なライトバックが行われることを防止できる。
【００３６】
電源投入後の初期動作時においては、所望のプログラムおよびデータを上記外部メモリから上記キャッシュに読み込んだ上で、上記外部メモリへのアクセスを禁止することがより好ましい。
【００３７】
これにより、初期動作時に、外部メモリから所望のプログラムおよびデータを読み込んでいるため、キャッシュには動作に必要な情報が読み込まれているととともに、残り容量が比較的多い状態となっている。
【００３８】
よって、ＣＰＵが備えているキャッシュのみにアクセスして処理を行うことができるとともに、外部メモリへのアクセスを禁止して外部メモリに対する電力供給を停止することで、初期動作時から消費電力を削減した状態にできる。
【００３９】
上記制御手段は、タスクの状況が変化する際に、上記外部メモリに対するアクセスが必要か否かについての判断を行うことがより好ましい。
【００４０】
これにより、ＯＳ等によって管理されているタスクの状況が変化した場合には、外部メモリへのアクセスが必要になる可能性が生じるため、その時点で外部メモリを使用する必要があるか否かについて判断し、外部メモリが必要な場合には、実際にアクセスが発生する前に外部メモリを起動することができるため、外部メモリの起動待ち時間を短縮して、処理を迅速に行うことができる。
【００４１】
また、タスクの状況の変化に応じて判断するため、オーバヘッドを大きくしなくても、外部メモリへのアクセスが必要であるか否かの判断が可能になる。
【００４２】
さらに、例えば、一定期間ごとに外部メモリが必要か否かのチェックを行う場合と比較して、外部メモリへのアクセスが可能であるか否かのチェックの回数を少なくすることができる。
【００４３】
上記制御手段は、上記キャッシュ内のプログラムおよびデータについて、パージされたか否かについて判定し、パージされていない場合には、上記プログラムおよびデータを上記外部メモリから読み込む処理を行わないことがより好ましい。
【００４４】
これにより、キャッシュ内に書き込まれたプログラムやデータについて、これらがパージされていない場合には、該プログラム等はキャッシュ内に残っているため、キャッシュのみで処理を行うモードに移行する場合に必要なプログラム等を、新たに外部メモリから読み込む処理を省略して、無駄な処理を減らすことができる。
【００４５】
すなわち、外部メモリへのアクセスを禁止してキャッシュだけで動作するモードへ移行する際には、外部メモリからキャッシュに対して、キャッシュだけで動作するために必要なプログラム等をキャッシュへ書き込む必要がある。しかし、当該プログラム等がパージされていない場合には、既にキャッシュ内に存在しているため、再度外部メモリから同じプログラム等を読み出す必要はない。
【００４６】
そこで、本発明のＣＰＵは、キャッシュ内のプログラム等がパージされたか否かを判定し、必要なプログラム等だけを外部メモリから読み出すことで、外部メモリに対する不要なアクセスを省くことができる。
【００４７】
本発明の情報処理装置は、上記の課題を解決するために、上記ＣＰＵと、外部メモリと、該外部メモリへ電力を供給する電源供給手段とを備えた情報処理装置において、上記電源供給手段は、上記外部メモリへのアクセスが禁止されている場合には、該外部メモリへの電力供給を停止することを特徴としている。
【００４８】
上記の構成によれば、外部メモリへのアクセスが禁止されている場合、すなわちＣＰＵが内部に備えているキャッシュに対してアクセスするだけで処理を継続できる場合には、外部メモリへの電力供給を停止することで、情報処理装置の消費電力を削減できる。
【００４９】
上記外部メモリは、複数のモジュールを含んでおり、上記制御手段は、上記モジュールごとに電力供給の制御を行うことがより好ましい。
【００５０】
これにより、外部メモリが、例えば、ＲＡＭ、ＲＯＭ等の複数のモジュールからなる場合には、このモジュールの性質に応じて電力供給を制御することで、さらに効率的に情報処理装置の消費電力を低減できる。
【００５１】
例えば、キャッシュのみにアクセスして処理を行うモードに移行する際の、プログラムやデータをキャッシュに読み込む場合には、ＲＯＭだけを起動して電力供給を行う。一方、処理中にデータが満杯になった場合には、ＲＡＭだけを起動して電力供給を行う。
【００５２】
このように、各モジュールの性質および状況に応じて、外部メモリに対する電力供給を細かく制御することで、より効果的に情報処理装置の消費電力を削減することができる。
【００５３】
本発明のＣＰＵの制御方法は、上記の課題を解決するために、内部に備えたキャッシュに対してデータの書き換えを行うとともに、この書き換えたデータを所望のタイミングで外部メモリに反映させるライトバック制御を行うＣＰＵの制御方法において、処理するタスクの必要メモリ量に応じて、上記キャッシュだけにアクセスしてタスクの処理が可能であるか否かを判定し、該処理が可能であると判定した場合には、上記外部メモリに対するアクセスを禁止することを特徴としている。
【００５４】
上記の制御方法によれば、ＣＰＵ内に備えられているキャッシュだけを用いてタスクの処理を行うことができる状態においては、外部メモリへのアクセスを禁止しているため、外部メモリに対する電力供給を停止させて消費電力を削減できる。
【００５５】
すなわち、通常、ライトバック制御を行うＣＰＵでは、所定のタイミングで、データ等が書き込まれたキャッシュから外部メモリに対して該データ等の書き込みを行うが、本発明のＣＰＵの制御方法では、一定条件下において、キャッシュへのアクセスが可能な状態のまま、外部メモリへのアクセスを禁止している。
【００５６】
例えば、処理するタスクの必要メモリ量が比較的小さく、キャッシュの残り容量だけでタスクの処理を継続させることが可能である場合には、外部メモリに対するアクセスを禁止するとともに、キャッシュだけにアクセスしてタスクの処理を行う。
【００５７】
このように、キャッシュへのアクセスだけでタスクの処理が可能な状態においては、外部メモリへのアクセスを禁止しているため、アクセス禁止期間中には、外部メモリに対する電力供給を停止する、あるいは低消費電力モードに切り替える等の措置を取ることができる。よって、結果として、本発明のＣＰＵの制御方法を採用した情報処理装置の消費電力を削減することができる。
【００５８】
また、本発明のＣＰＵの制御方法では、以上のように、キャッシュのみで行える処理は外部メモリを使用せずに処理を行い、できる限り外部メモリを使用しないようにすることで、外部メモリに供給する電力消費量を削減している。これにより、レジューム時にのみ外部メモリに対する電力供給を停止させる従来の情報処理装置と比較して、外部メモリに対する電力供給停止期間を長くでき、より効果的に消費電力を削減できる。
【００５９】
さらに、キャッシュよりも低速な外部メモリに対するアクセス回数を従来よりも減らし、高速アクセスが可能なキャッシュを用いて処理を行うため、迅速な処理が可能になる。
【００６０】
【発明の実施の形態】
本発明のＣＰＵおよびこれを備えた情報処理装置、ＣＰＵの制御方法の一実施形態について、図１〜図７に基づいて説明すれば以下の通りである。
【００６１】
ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ、情報処理装置）１は、図２に示すように、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、電源２０、外部ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）（外部メモリ、モジュール）３０、および外部ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）（外部メモリ、モジュール）４０を備えている。
【００６２】
これらの各部材は、システムバス（Ｓｙｓｔｅｍ−ｂｕｓ）５０を介して接続されている。また、ＰＣ１は、さらに図示しない入力部としてのキーボード、および表示部としてのディスプレイを備えている。
【００６３】
ＣＰＵ１０は、ＰＣ１の動作制御を行う。なお、ＣＰＵ１０の詳細な構成については、図１を用いて後段にて詳述する。
【００６４】
電源（電源供給手段）２０は、ＰＣ１の本体およびＰＣ１が備えている各部材への電力供給を行うものであり、電源管理部２１を備えている。
【００６５】
電源管理部２１は、電力供給線２２を介して各部材に対して電力を供給しており、ＣＰＵ１０からの制御信号に応じて、外部ＲＯＭ３０および外部ＲＡＭ４０に対する電力供給を停止したり、再開したりする。
【００６６】
外部ＲＯＭ３０および外部ＲＡＭ４０は、ＣＰＵ１０の外部に備えられた、ＣＰＵ１０の動作に必要な情報等を格納するための記憶装置である。
【００６７】
外部ＲＯＭ３０は、固定的にデータを保持できる一方、ＣＰＵ１０からの新たな書き込みはできない記憶装置である。
【００６８】
外部ＲＡＭは４０、ＣＰＵ１０からの書き込みは可能であるが、固定的にデータを保持することはできない記憶装置である。
【００６９】
ＣＰＵ１０は、このような両記憶装置の性質の違いによって、適宜、外部ＲＯＭ３０と外部ＲＡＭ４０とを使い分けて使用している。
【００７０】
例えば、外部ＲＯＭ３０には、図２に示すように、プログラムのデータとパラメータ（固定データ）とが記録されている。また、外部ＲＡＭ４０には、ＣＰＵ１０における処理中に、グローバル変数、ローカル変数、スタックデータなどが記録される。
【００７１】
ここで、ＣＰＵ１０の詳細な構成について、図１を用いて以下で説明する。
【００７２】
ＣＰＵ１０は、図１に示すように、バスインターフェース１１、制御ユニット１２、命令キャッシュ（キャッシュ）１３ａ、データキャッシュ（キャッシュ）１３ｂ、２次キャッシュ（キャッシュ）１３ｃ、命令デコーダ１４、演算ユニット１５およびレジスタ群１６を備えている。
【００７３】
このＣＰＵ１０は、図２に示す外部メモリとしての外部ＲＯＭ３０または外部ＲＡＭ４０からバスインターフェース１１を介してデータを取得し、プログラムの命令を解読して、演算またはデータ転送などの命令を実行する。
【００７４】
バスインターフェース１１は、データバス１１ａ、アドレスバス１１ｂ、制御信号（線）１１ｃからなる、図２に示すシステムバス５０によって、データのやりとりを行う。
【００７５】
制御ユニット１２は、ＣＰＵ１０が備えている各部材の動作制御を行っており、ＣＰＵ１０において処理するタスクの必要メモリ量を見積もることができる。また、制御ユニット１２は、内部クロック制御部（クロック制御手段）１７、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ：メモリ管理装置）１８、Ｍフラグ１９ａ、Ｐフラグ１９ｂを備えている。
【００７６】
内部クロック制御部１７は、クロックを生成し、ＣＰＵ１０の全体の処理をこのクロックに従って行わせており、生成するクロック周波数を変化させることができる。
【００７７】
ＭＭＵ１８は、命令に応じてメモリのアドレスを生成、供給するものである。
【００７８】
Ｍフラグ１９ａ、Ｐフラグ１９ｂについては、後段にて詳述する。
【００７９】
命令デコーダ１４は、ＣＰＵ１０内で発生した命令（コード）を解読するためのものであり、解読後、制御ユニット１２、演算ユニット１５等によって、データのやり取りや演算が行われる。なお、ここでのデータのやり取りについては、必要なデータが外部メモリ（外部ＲＯＭ３０、外部ＲＡＭ４０）に記録されている場合もある。
【００８０】
命令キャッシュ１３ａおよびデータキャッシュ１３ｂは、ＣＰＵ１０の内部に備えられている高速アクセスが可能な記憶装置である。
【００８１】
命令キャッシュ１３ａは、プログラムのコードを格納するためのキャッシュである。ＣＰＵ１０において実行される命令は、命令キャッシュ１３ａに格納された外部メモリに格納されたプログラムが、命令キャッシュ１３ａから読み出し、解読されて実行される。
【００８２】
データキャッシュ１３ｂは、ＣＰＵ１０が命令を実行する際に処理の対象となる変数が格納されるキャッシュである。
【００８３】
この命令キャッシュ１３ａおよびデータキャッシュ１３ｂは、一般的に、１次キャッシュと呼ばれ、例えば、１６Ｋバイト程度の格納領域を有している。命令キャッシュ１３ａおよびデータキャッシュ１３ｂには、キャッシュ毎に、キャッシュ上における変数の格納場所と外部メモリのアドレスを対応づける図示しないＴＡＧや、タスク（プロセス）ごとの論理アドレスと物理アドレスとを対応づけるための、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）が備えられている。
【００８４】
２次キャッシュ１３ｃは、１次キャッシュ（命令キャッシュ１３ａ、データキャッシュ１３ｂ）を補完するために備えられており、１次キャッシュの容量が満杯の場合に１次キャッシュに入りきらないデータ等を格納する、１次キャッシュよりも低速であるが、外部メモリよりも高速アクセスが可能な記憶装置である。
【００８５】
このように、命令キャッシュ１３ａおよびデータキャッシュ１３ｂを補完する２次キャッシュ１３ｃを備えていることで、キャッシュ１３ａ〜１３ｃの記憶容量を増大させ、より外部メモリを使用する回数を減らすことができる。
【００８６】
レジスタ群１６は、命令を実行する際にデータが格納される記憶装置であって、プログラムによって操作参照可能なものと、演算ユニット１５が処理中のデータを格納する場合のように直接操作できないものとがある。
【００８７】
プログラムによって操作参照可能なレジスタには、処理の対象となる変数やアドレスなどを格納する汎用レジスタと、スタックポインタ（以下、ＳＰと示す）のような用途が特定されたレジスタとがある。
【００８８】
ＳＰは、主として、サブルーチンコール（関数呼び出し）の際の引数や戻り番地などを格納するために利用されるスタック領域の使用済み領域と未使用領域の境界のアドレスを保持している。
【００８９】
次に、以上のような構成のＣＰＵ１０による処理について、図３（ａ）および図３（ｂ）を用いて説明する。
【００９０】
なお、図３（ａ）には、これらキャッシュの使用状況の時間変化に応じたＭフラグ、Ｐフラグの状況についても示している。
【００９１】
まず、Ｍフラグ、Ｐフラグについて説明する。
【００９２】
Ｍフラグは、外部メモリへのアクセスが許可されているか、禁止されているかを示すフラグであって、本実施形態においては、Ｍフラグの値が「１」の場合には、外部メモリにアクセスして情報を反映させることが可能であることを指し、一方、Ｍフラグの値が「０」の場合には、外部メモリへのアクセスが禁止されたことを指す。
【００９３】
このように、制御ユニットは、Ｍフラグを用いて、外部メモリ（外部ＲＯＭ３０、外部ＲＡＭ４０）へのアクセス禁止、解除を行う。
【００９４】
例えば、キャッシュ１３ａ〜１３ｃが一杯でデータを書き込む余裕がない場合や、キャッシュ１３ａ〜１３ｃに参照すべきデータが無い場合には、Ｍフラグ「１」を入力して外部メモリへのアクセスを行う。また、処理によってはメモリが大量に必要となるため、始めから外部メモリを立ち上げておけばよい。なお、Ｍフラグの値の設定処理については後段にて説明する。
【００９５】
本実施形態においては、例えば、簡単な処理のみを行う場合には、初めに必要な情報をキャッシュ１３ａ〜１３ｃに読み込むことによって、外部メモリを不要にし、外部メモリへのアクセスを禁止できる。なお、これらのキャッシュのデータは、最終的には必要に応じて外部メモリへと書き出される。
【００９６】
Ｐフラグは、キャッシュ１３ａ〜１３ｃに備えられているデータが破壊されているか否かを判定するためのフラグである。具体的には、Ｐフラグが「０」の場合にはキャッシュ１３ａ〜１３ｃ内のデータが破壊されていないことを示し、「１」の場合にはデータが破壊されていることを示す。
【００９７】
例えば、キャッシュ１３ａ〜１３ｃの容量が満杯となり、キャッシュ１３ａ〜１３ｃに記録されている情報を外部ＲＡＭ４０に退避させて他のデータ等を上書きする場合には、所定の時点でこの退避させた情報をキャッシュ１３ａ〜１３ｃに記録しなおす必要がある。また、外部ＲＡＭ４０に退避させなくとも、例えば、外部ＲＯＭ３０に記録されているデータの場合には、単にキャッシュ１３ａ〜１３ｃの中のデータをパージしてもよい。このような場合には、データ等が破壊されているため、外部ＲＯＭ３０あるいは外部ＲＡＭ４０からのデータ等の再読み込みが必要となる。
このように、データ等の破壊、パージの有無および再読み込みの要否について、Ｐフラグによって判定できる。すなわち、データの破壊がなされた場合には、Ｐフラグの値を「１」とし、これに応じて再読み込みを行う。一方、データの破壊がなされていない場合には、Ｐフラグの値を「０」とし、そのまま処理を行う。
【００９８】
ここで、命令キャッシュ１３ａとデータキャッシュ１３ｂとＭフラグ、Ｐフラグとを用いた実際のＣＰＵ１０の動作について、図３（ａ）、図３（ｂ）を用いて説明する。
【００９９】
命令キャッシュ１３ａは、図３（ａ）に示すように、命令キャッシュ１３ａ中で使用されている領域における占有面積に応じて幅を変えてタスクごとに示している。
【０１００】
また、データキャッシュ１３ｂについては、データキャッシュ１３ｂ中で使用されている領域における占有面積に応じて幅を変えて変数ごとに示している。
【０１０１】
ここで、図３（ａ）に示すグローバル変数とは、いろいろなタスクにおいて共通して用いられる変数を意味する。ここでは、ＴＬＢ等のシステムが利用する領域も確保されているものとする。一方、ローカル変数とは、一つのタスク毎に用いられる変数を意味する。これらの変数は、それぞれのキャッシュのメモリ領域中において固定的に割り当てられる。
【０１０２】
また、図３（ａ）に示すスタックとは、関数などの実行中に、処理に応じてテンポラリに、すなわち動的に、メモリ領域が割り当てられる領域に相当する。なお、このスタックの領域は、タスクごとに割り当てられるメモリ領域について、模式的に全タスク分に相当する領域を示したものである。
【０１０３】
また、図３（ｂ）は、図３（ａ）に続く状態の一例を示したものである。
【０１０４】
図３（ａ）、図３（ｂ）に示すように、一つのプログラム（タスク）を実行する場合に、どの部分が命令キャッシュ１３ａに読み込まれるかということは、予め決められている。また、プログラム中のどの変数がデータキャッシュ１３ｂに読み込まれるかということも、予め決められている。
【０１０５】
本実施形態のＣＰＵ１０は、図３（ａ）に示すように、起動の直後には、タスク０〜２が命令キャッシュに読み込まれる。また、これらのタスクに対応する変数が、データキャッシュに読み込まれる。なお、上記タスク０〜２は、例えば、画面の制御、通信の制御といったＣＰＵ１０の基本的な処理を行うものである。
【０１０６】
一方、その後に起動されるタスク３・４は、基本的な処理以外の、何らかの付加的な処理を行うものである。
【０１０７】
タスク３の起動要求に応じて、Ｍフラグが「１」となる。これは、タスク３の処理を行うために必要なコード、データ等を外部メモリから読み込むためである。読み込みによって、命令キャッシュ１３ａとデータキャッシュ１３ｂとにそれぞれメモリ領域が確保される。そして、読み込み完了後には、Ｍフラグが「０」となる。タスク３が終了すると、命令キャッシュ１３ａとデータキャッシュ１３ｂとに確保されていたメモリ領域が解放される。
【０１０８】
また、タスク４の起動要求の際にも、同様にＭフラグが「１」となってデータ等の読み込みが行われ、その後、Ｍフラグが「０」となる。
【０１０９】
ここで、図３（ａ）において斜線で示したように、タイミングＴ１において、各タスクによるスタック使用量が、データキャッシュ１３ｂの記憶容量を越えてしまい、容量不足となる場合がある。この場合には、Ｍフラグを「１」とし、スタックに記憶されていた情報を外部メモリなどに退避させる。すなわち、例えば、外部ＲＡＭ４０を用いて、各キャッシュ１３ａ〜１３ｃと外部メモリとを一体のメモリとして用いるようにする。なお、この場合には、Ｐフラグを「１」として、このような退避が行われたことを判定可能とする。
【０１１０】
この後、タスク４の処理が終了すると、図３（ｂ）に示すように、命令キャッシュ１３ａとデータキャッシュ１３ｂとに確保されていた、タスク４に対応する領域、変数領域およびスタック領域は解放される。これによって、退避されていた情報の再読み込みがなされて、起動後と同様に、ＭフラグとＰフラグとがともに「０」となる。
【０１１１】
また、起動後から実行されているタスク０〜２において、あるタイミングにおいてタスク２の実行が本格化すると、図３（ｂ）の斜線部として示すように、タイミングＴ２において、タスク２によるプログラムおよびデータの使用の増加が見込まれる。この場合には、Ｍフラグを「１」として、スタックに記憶されていた情報を外部メモリなどに退避させ、キャッシュ１３ａ〜１３ｃと外部メモリとを一体のメモリとして用いるようにする。また、Ｐフラグを「１」として、このようなキャッシュ１３ａ〜１３ｃのコード、データ等が破壊されたことを認識可能とする。
【０１１２】
そして、タイミングＴ３にてタスク２の実行が通常に戻ると、命令キャッシュとデータキャッシュとに確保されていた、タスク２のプログラム領域、変数領域およびスタック領域は解放される。
【０１１３】
これにより、外部メモリからキャッシュ１３ａ〜１３ｃへ、退避させた情報の再読み込みを行い、その後、起動直後と同様に、ＭフラグとＰフラグとがともに「０」となる。
【０１１４】
以上のように、本実施形態のＣＰＵ１０は、外部メモリへのアクセスが必要な場合には、Ｍフラグを「１」として外部メモリへのアクセスを行うことで、処理を継続したまま外部メモリへのアクセスを可能とし、キャッシュ１３ａ〜１３ｃと外部メモリとを一体のメモリとして用いることができる。
【０１１５】
さらに、このような外部メモリへのアクセスにより、キャッシュ１３ａ〜１３ｃからデータ等が退避された場合には、Ｐフラグを「１」とすることで、キャッシュ１３ａ〜１３ｃ内のデータ等が破壊されていることを認識できる。これにより、タスクが終了してキャッシュ１３ａ〜１３ｃ内に空き容量ができた場合には、そのＰフラグに対応するデータ等について再読み込みを行うことで、再度キャッシュ１３ａ〜１３ｃのみを用いた処理が可能になる。
【０１１６】
次に、データキャッシュ１３ｂ内におけるスタック領域の使用状況について、図４（ａ）〜図４（ｅ）を用いて説明する。
【０１１７】
なお、スタック領域は、タスクごとに、図４（ａ）〜図４（ｅ）に示すような使用状態となっており、ボトムからＳＰ（Ｓｔａｃｋ  Ｐｏｉｎｔｅｒ：スタックポインタ）までが各タスクに対応する使用領域に相当する。
【０１１８】
タスク開始前またはタスク終了後においては、図４（ａ）に示すように、使用領域は少ないため、ＳＰが低い位置にある。そして、タスクの処理の進行に従って、順次スタック領域が使用されてＳＰの位置が上昇し、図４（ｂ）〜図４（ｅ）に示すような状態となる。
【０１１９】
タスクが終了した場合には、図４（ｆ）に示すプログラムに従って、図４（ｅ）の状態から順次スタック領域が解放され、図４（ａ）の状態に戻るようになっているが、これについては後段にて詳述する。
【０１２０】
ここでさらに、本実施形態のＣＰＵ１０による処理について、図５（ａ）〜図７（ｂ）に示すフローチャートに基づいて説明すれば、以下の通りである。
【０１２１】
先ず、ＣＰＵ１０による、外部メモリに対するアクセスを禁止する処理について説明する。
【０１２２】
なお、以下に示す処理は、ＣＰＵ１０の起動時、タスクの処理が終了した後、または必要なデータを外部メモリから読み出した後、例えば、図３に示すタスク３の起動要求によって読み込んだ後、などに行われる。
【０１２３】
ステップ（以下、Ｓと示す）１においては、動作をリセットするか否かを判定する。例えば、ＣＰＵ１０の起動時には動作をリセットしてＳ３に進む。リセットしない場合にはＳ２に進む。
【０１２４】
Ｓ２においては、Ｐフラグが「０」であるか（オフであるか）否かが判定され、例えば、図３に示すタスク３の起動要求時には、Ｐフラグは「０」であるためＳ７に進む。また、例えば、図３に示すタイミングＴ３のような、斜線状態の終了後には、Ｐフラグは「１」であるためＳ３に進む。
【０１２５】
Ｓ３においては、Ｓ２においてＰフラグが「１」と判定されているので、例えば、キャッシュ１３ａ〜１３ｃから退避させたプログラム、あるいは単にキャッシュ１３ａ〜１３ｃから消去した所定のプログラムについて、外部ＲＯＭ３０から命令キャッシュに取り込む。
【０１２６】
Ｓ４においては、読み込んだプログラムに対応するデータをデータキャッシュ１３ｂへ取り込む。
【０１２７】
Ｓ５においては、データキャッシュ１３ｂに変数領域の割り当てを行う。
【０１２８】
なお、Ｓ３〜Ｓ５において、必要なデータ等を再読み込みした場合には、Ｓ６においてＰフラグを「０」に戻す。
【０１２９】
Ｓ７においては、Ｓ１〜Ｓ６までの処理により、必要なデータがキャッシュ１３ａ〜１３ｃの内部にある、または外部メモリからキャッシュ１３ａ〜１３ｃに再読み込みが行われた状態であるため、Ｍフラグを「０」に戻し、Ｓ８において外部メモリに対するアクセスを禁止し、処理を終了する。
【０１３０】
このように、外部メモリに対するアクセスを禁止し、その後の処理をキャッシュ１３ａ〜１３ｃのみを用いて行うことで、外部メモリへの電力供給を停止することができるため、ＰＣ１の消費電力を削減できる。なお、外部ＲＡＭ４０については、データを保持したまま低消費電力モードへ移行することで、ＰＣ１の消費電力を削減するようにしてもよい。
【０１３１】
なお、キャッシュ１３ａ〜１３ｃのみを用いて処理を行う場合には、高速処理が可能であるため、上記内部クロック制御部１７のクロック周波数を低下させた場合でもある程度の処理速度が得られる。このため、クロック周波数を低下することで、ＣＰＵ１０の消費電力を低減できる。逆に、キャッシュ１３ａ〜１３ｃのみを用いて処理を行う場合において、クロック周波数を高くすることにより、より高速処理が可能になる。
【０１３２】
また、このようなＣＰＵ１０の起動時（初期動作時）においては、所望のプログラムおよびデータを外部メモリからキャッシュ１３ａ〜１３ｃに読み込んだ上で、外部メモリへのアクセスを禁止することが好ましい。
【０１３３】
これにより、初期動作時においては、キャッシュ１３ａ〜１３ｃのみを用いた処理が可能になり、立ち上げ時から消費電力を削減できる。
【０１３４】
次に、図５（ｂ）を用いて、本実施形態のＣＰＵ１０によるタスク開始時の処理について説明する。
【０１３５】
Ｓ９においては、今から処理を開始するタスクの処理に、外部メモリが必要であるか否かについて判定する。このような、外部メモリの要否については、それぞれのタスクごとに個別に判断される。
【０１３６】
例えば、図３（ａ）に示すタスク０〜２においては、キャッシュ１３ａ〜１３ｃのみで処理が可能であり、外部メモリは不要であるので、Ｓ１１へ進む。
【０１３７】
一方、図３（ａ）に示すタスク４や、図３（ｂ）に示すタスク２では、処理が本格化してキャッシュ１３ａ〜１３ｃの残り容量が少なくなり、外部メモリが必要となっているため、Ｓ１０へ進み、Ｓ１０において外部メモリが起動される。
【０１３８】
Ｓ１１においては、タスクの処理が開始される。
【０１３９】
Ｓ１２においては、その時点におけるキャッシュ１３ａ〜１３ｃの使用状態によって、キャッシュ１３ａ〜１３ｃの残りの領域のみで十分か、または外部メモリが必要であるか否かについて判定される。
【０１４０】
例えば、図３（ａ）に示すタスク３については、外部メモリが不要であるため、Ｓ１３に進み、図５（ａ）に示す外部メモリアクセス禁止モードに移行した後、処理を終了する。一方、例えば、図３（ａ）に示すタスク４のように、処理途中においてキャッシュ１３ａ〜１３ｃの残り容量が少なくなり、外部メモリが必要となった場合には、図５（ａ）に示す外部メモリアクセス禁止モードへ移行することなく、そのまま処理を終了する。
【０１４１】
次に、図５（ｃ）を用いて、外部メモリを初期化する処理について説明する。
【０１４２】
なお、図５（ｂ）のＳ１０における外部メモリ起動の動作は、外部メモリへ起動指示を行い、図５（ｃ）に示す外部メモリ初期化完了の割り込みを受けることを含んでいるものとする。
【０１４３】
本実施形態のＣＰＵ１０は、図５（ｃ）に示すように、この割り込みを受けた後に、Ｓ１４においてＭフラグを「１」にしてから、図５（ｂ）のＳ１１においてタスク処理を開始する。これは、Ｓ１０において外部メモリへの起動指示を行った場合でも、外部メモリが直ぐに初期化されて使用可能となる訳ではなく、例えば、リフレッシュ処理のような初期化処理が必要となるからである。したがって、ＣＰＵ１０は、初期化完了の割り込みを受けた後、Ｍフラグを「１」としている。
【０１４４】
なお、ＣＰＵ１０は、自分のプログラムを実行するのみではなく、外部からの処理要求（刺激）（割り込み）に応じて処理をするような仕組みを持っている。例えば、キーボードへの入力が、ＣＰＵ１０への割り込み指示として実現されている場合には、ＣＰＵ１０によるキーボードの監視が不要となり、処理が容易になる。
【０１４５】
ここで、キャッシュ１３ａ〜１３ｃ内にヒープ領域を確保した場合の処理について、図５（ｄ）を用いて説明する。
【０１４６】
まず、キャッシュ１３ａ〜１３ｃにヒープ領域を確保する場合には、Ｓ１５において、キャッシュ１３ａ〜１３ｃの容量が超過しているか否かについて判定する。ここで、超過していない場合にはＳ１７へ進み、超過している場合には、Ｓ１６において外部メモリを起動する。そして、Ｓ１７においては、メモリアロケートを行い、ヒープ領域を確保した後、処理を終了する。
【０１４７】
このように、タスクの処理中において、キャッシュ１３ａ〜１３ｃ内にヒープ領域を確保する場合には、キャッシュ１３ａ〜１３ｃの容量が超過状態となっているか否かについて判定する。ここで、超過状態である場合には、外部メモリへのアクセスが発生する前に外部メモリを起動することで、外部メモリの立ち上がり待ち時間を短縮できる。
【０１４８】
さらに、あるタスクの処理中に別のタスクの処理が開始された場合の処理について、図５（ｅ）を用いて説明する。
【０１４９】
図５（ｅ）に示すように、別タスクの処理が開始されると、Ｓ１８において子タスクが生成され、Ｓ１９において別タスクの処理が本格化したか否かについて判定する。
【０１５０】
ここで、処理が本格化していない場合には、図５（ｂ）に示す単独のタスクを処理する工程へ進む。一方、Ｓ１９において別タスクの処理が本格化した場合には、この時点において外部メモリを起動する。そして、Ｓ２０において外部メモリを起動した後、Ｓ２１においてタスクの処理を開始する。
【０１５１】
これにより、外部メモリが必要となってから外部メモリを立ち上げる場合と比較して、事前に外部メモリを立ち上げることができるため、立ち上がりまでの待ち時間を短縮して迅速な処理が可能になる。
【０１５２】
また、図５（ｄ）、図５（ｅ）に示すように、タスクの状況が変化する際に、外部メモリへのアクセスが必要か否かの判断を行うことで、外部メモリへのアクセスが必要になってから起動する場合と比較して、事前に外部メモリを起動することができるため、外部メモリへのアクセスを迅速に行うことができる。
【０１５３】
次に、図４（ｅ）に示すように、空き容量が少なくなったデータキャッシュ１３ｂを解放する際の処理について、図６（ａ）を用いて説明する。
【０１５４】
なお、この処理は、上述した図４（ｅ）〜図４（ａ）に示した、データキャッシュ１３ｂ内におけるスタック領域に関する関数呼び出しからの戻り動作に相当する。
【０１５５】
また、以下では、説明の便宜上、図１に示した２次キャシュ１３ｃがないものとして説明する。実際の処理においては、データキャッシュ１３ｂの空き容量が少なくなった場合には、２次キャッシュ１３ｃに必要なデータ等を格納して処理を行うため、データキャッシュ１３ｂのみが容量超過したからといって、外部メモリへのアクセス禁止を解除するものではない。
【０１５６】
ここで、データキャッシュ１３ｂは、図４（ｅ）に示すように、ほとんど空き容量がない状態となっているものとする。
【０１５７】
Ｓ３０においては、次の命令が、ＢＰ（Ｂａｓｅ  Ｐｏｉｎｔｅｒ）をＳＰとするという内容であるか否かについて判定し、データキャッシュ１３ｂ内を解放する方向に処理が進んでいることを確認する。
【０１５８】
ここで、「Ｎｏ」である場合には再びＳ３０へ戻り、「Ｙｅｓ」の場合にはデータキャッシュ１３ｂ内を解放する方向に処理が進んでいるものと認識し、ＢＰをＳＰとする処理を行って、図４（ｄ）に示すような状態となる。
【０１５９】
Ｓ３１においては、ＳＰの値（ｘ）を所定のレジスタに退避させ、Ｓ３２において、次の命令が「ＲＥＴＵＲＮ」であるか否かを判定することで、データキャッシュ１３ｂ内を解放する方向に処理が進んでいるか否かを判定する。
【０１６０】
ここで、次の命令が「ＲＥＴＵＲＮ」である場合には、図４（ｃ）に示す「戻り番地」を除去した状態となる。一方、次の命令が「ＲＥＴＵＲＮ」でない場合には、戻り動作ではないと判断してＳ３２に戻る。
【０１６１】
Ｓ３３においては、次の命令がＳＰに関係するものであるか否かについて判定し、関係する場合にはＳ３３を繰り返す。一方、ＳＰに関係しない場合には、Ｓ３４に進んで、ＳＰの値が先ほど退避した（Ｘ）の値よりも大きいか否かについて判定する。
【０１６２】
ここで、ＳＰの値が（ｘ）よりも小さい場合、例えば、戻った後すぐに別の関数を呼び出した場合等、においては、Ｓ３０に戻る。一方、ＳＰの値が（ｘ）よりも大きい場合には、データキャッシュ１３ｂ内に充分な空き容量が形成されたことが認識できるため、Ｓ３５へ進む。
【０１６３】
Ｓ３５においては、データキャッシュ１３ｂのスタック領域のＳＰ未満のアドレスを、未書き込み状態に変更する。
【０１６４】
これにより、データキャッシュ１３ｂ内の領域を、図４（ｃ）に示す状態から、図４（ｂ）に示す状態を経て、図４（ａ）に示すような解放された状態にすることができる。
【０１６５】
続いて、Ｓ３６において、全て未書き込み状態となったデータキャッシュ１３ｂのブロックを解放した後、Ｓ３０に戻る。
【０１６６】
以上のように、図６（ａ）に示すフローチャートに従って処理を行うことにより、データキャッシュ１３ｂ内の領域を、図４（ｅ）に示す状態から図４（ａ）に示す状態へと戻すことができ、一括して未使用になったデータキャッシュ１３ｂ中の領域を解放できる。
【０１６７】
ここで、本実施形態のＣＰＵ１０は、ライトバック制御を行っているため、キャッシュ１３ａ〜１３ｃ中に記録された情報は、適宜外部メモリへと反映される。このため、キャッシュ１３ａ〜１３ｃ中に記録された情報は、反映される前に消去されることがないように、一旦記録されるとメモリ領域を使用したままとなる。なお、スタック領域に記録されたデータ等については、外部メモリへ反映させる必要はないことから、キャッシュ１３ａ〜１３ｃ内の不要なデータ等が格納されたアドレスを検出して、対応するキャッシュ領域を解放することで、外部メモリに対する無駄なライトバックが行われることを防止できる。
【０１６８】
つぎに、タスクが終了した時のＣＰＵ１０の処理について、図６（ｂ）を用いて説明する。
【０１６９】
Ｓ３７においては、タスク終了処理を行うと、処理が終了したタスクの不要なデータ等を格納したアドレスを検出し、対応するキャッシュ１３ａ〜１３ｃ内の領域を解放するために、以下のような処理が進められる。
【０１７０】
すなわち、先ず、Ｓ３８において、データキャッシュ１３ｂのスタック領域の全アドレスを、未書き込み状態に変更する。
【０１７１】
続いて、Ｓ３９において、命令キャッシュ１３ａの使用領域の全ブロックを解放し、Ｓ４０において、データキャッシュ１３ｂのローカル変数の全アドレスを未書き込み状態に変更する。
【０１７２】
Ｓ４１においては、データキャッシュ１３ｂのローカル変数の全ブロックを解放する。
【０１７３】
以上の処理の後に、Ｓ４２において、Ｍフラグが「０」であるか否かが判定され、ここで、Ｍフラグが「０」である場合には処理を終了する。一方、Ｍフラグが「０」でない場合には、Ｓ４３に進む。
【０１７４】
Ｓ４３においては、残りのタスクで外部メモリが必要であるか否かが判定される。ここで、外部メモリが必要である場合には処理を終了し、外部メモリが必要でない場合にはＳ４４に進み、再度、図５（ａ）に示した外部メモリ停止モードへ移行する。
【０１７５】
以上のように、本実施形態のＣＰＵ１０は、外部メモリへのアクセス禁止モードへ移行することで、外部メモリに対する電力供給を停止したり、低消費電力モードに移行したりする等して、ＰＣ１の消費電力を削減することができる。また、処理を継続したまま、外部メモリアクセス禁止モード、外部メモリアクセス許可モードの切り替えを行うことができる。さらに、外部メモリへのアクセスが必要な場合には、Ｍフラグを「１」として、外部メモリへのアクセス禁止を解除してライトバック制御を行い、キャッシュ１３ａ〜１３ｃ内のデータ等を外部メモリに書き込むことができるため、外部メモリに書き込まれたデータ等をキャッシュ１３ａ〜１３ｃから消去して、キャッシュ１３ａ〜１３ｃの残り容量を増加させ、キャッシュ１３ａ〜１３ｃを効率よく利用できる。
【０１７６】
次に、データキャッシュ１３ｂに記憶されたデータ等を、外部メモリに対してライトバックする動作について、図７（ａ）を用いて説明する。
【０１７７】
なお、ライトバックとは、キャッシュ１３ａ〜１３ｃに蓄積された情報を所定のタイミングで外部メモリへと反映させる処理をいう。
【０１７８】
ＣＰＵ１０の処理速度は、外部メモリへの書き込み速度よりも速いため、ＣＰＵ１０が処理を行うたびに、外部メモリに反映させるべき情報が蓄積されていく。そこで、本実施形態のＣＰＵ１０においては、適宜タイミングを図って、以下に説明する処理を行うことにより、データキャッシュ１３ｂの情報を外部メモリへと反映させている。
【０１７９】
Ｓ５０においては、Ｍフラグが「０」であるか否かが判定される。Ｍフラグが「０」でない場合には、外部メモリへのアクセス禁止が解除された状態であるため、Ｓ５６に進む。一方、Ｍフラグが「０」である場合には、Ｓ５１に進み、キャッシュ１３ａ〜１３ｃの空き容量が少ない状態であるか否かについて判定を行う。
【０１８０】
Ｓ５１においてキャッシュ１３ａ〜１３ｃの空き容量が少なくない場合には、ＣＰＵ１０は処理を終了する。一方、キャッシュ１３ａ〜１３ｃの空き容量が少ない場合には、Ｓ５２に進み、外部メモリが起動中であるか否かを判定する。
【０１８１】
ここで、外部メモリが起動中である場合にはＳ５４に進み、外部メモリが起動中でない場合にはＳ５３に進み、外部メモリを起動した後、Ｓ５４に進む。
【０１８２】
Ｓ５４においては、外部メモリの起動が完了したか否かに関する外部メモリ初期化完了の割り込みが入るまで待機する。ここで、割り込みが入った場合には、図５（ｃ）を用いて説明したように、Ｍフラグが「１」となる。そこで、Ｓ５５においては、外部メモリの起動が完了したことを確認するために、Ｍフラグが「０」であるか否かを判定して、Ｍフラグが「０」でない場合にのみＳ５６に進み、Ｍフラグが「０」の場合にはＳ５５を繰り返すようにしている。
【０１８３】
そして、外部メモリの起動完了を確認した後、Ｓ５６において、データキャッシュ１３ｂの内容を外部メモリに反映させる。
【０１８４】
Ｓ５７においては、データキャッシュ１３ｂにおいて、外部メモリに反映させたデータ等が格納された領域のブロックを解放する。
【０１８５】
このようにデータキャッシュ１３ｂから外部メモリへライトバックが行われ、データキャッシュ１３ｂ内における対応する領域を他のデータのために利用すべくメモリ領域のブロックを解放することができる。
【０１８６】
そして、それまでデータキャッシュ１３ｂ内で保持していたデータ等がパージされているため、外部メモリからデータキャッシュ１３ｂ内に書き戻すことができるように、Ｓ５８において、Ｐフラグを「１」としてパージされたことを認識できるようにした後、処理を終了する。
【０１８７】
以上の動作によって、データキャッシュ１３ｂの内容を外部メモリに反映させる、いわゆるライトバック制御を行うとともに、Ｐフラグを「１」とすることで、データキャッシュ１３ｂ内のデータ等がパージされたことを認識でき、必要な場合には、外部メモリへライトバックしたデータ等を書き戻すことができる。
【０１８８】
一方、Ｐフラグが「０」である場合には、キャッシュ１３ａ〜１３ｃ内のデータ等はパージされていないデータ等が検出されたことを意味する。よって、Ｐフラグが「０」である場合には、キャッシュ１３ａ〜１３ｃ内に存在する同じデータ等の外部メモリからの書き戻しを防止して、無駄な処理が行われることを防止できる。
【０１８９】
次に、キャッシュミスの場合の動作について、図７（ｂ）を用いて説明する。
【０１９０】
なお、キャッシュミスとは、初めからキャッシュ１３ａ〜１３ｂに格納されていないと分かっていて外部メモリにデータを読みに行く図５（ｂ）のＳ１０のようなステップとは異なり、必要なデータをキャッシュ１３ａ〜１３ｂに読みにいったが、キャッシュ１３ａ〜１３ｃ内に存在しなかった場合をいう。
【０１９１】
先ず、Ｓ５９において、Ｍフラグが「０」であるか否かを判定する。
【０１９２】
ここで、Ｍフラグが「０」でない場合には、外部メモリがアクセス可能な状態であるため、Ｓ６４に進む。
【０１９３】
一方、Ｍフラグが「０」である場合には、Ｓ６０において、外部メモリが起動中であるか否かについて判定する。外部メモリが起動中の場合には、Ｓ６２に進む。ここで、外部メモリが起動中でない場合には、Ｓ６１において外部メモリを起動する。
【０１９４】
Ｓ６２においては、外部メモリを起動した後、外部メモリ初期化完了の割り込みが入るまで待機する。ここで、割り込みが入った場合には、外部メモリへのアクセス禁止が解除され、Ｍフラグが「１」となる。そこで、Ｓ６３においては、Ｍフラグが「０」であるか否かを判定して、Ｍフラグが「０」でない場合にのみＳ６４に進み、Ｍフラグが「０」の場合にはＳ６３を繰り返すようにしている。これにより、外部メモリの起動が完了するまで待機することができる。
【０１９５】
Ｓ６４では、データキャッシュ１３ｂの残り容量が少ない状態であるか否かについて判定を行う。キャッシュ１３ｂの残り容量が充分ある場合にはＳ６９に進む。
【０１９６】
一方、データキャッシュ１３ｂの残り容量が少ない場合には、Ｓ６５に進み、ライトバックが必要であるか否かについて判定を行う。
【０１９７】
ここで、ライトバックが不要である場合にはＳ６７に進み、一方、ライトバックを行ってデータキャッシュ１３ｂの空き容量を確保する必要がある場合には、Ｓ６６において、データキャッシュ１３ｂから外部メモリへのライトバックを行う。
【０１９８】
Ｓ６７においては、例えば、ライトバックやその他の処理によって、不要となったデータ等に対応するデータキャッシュ１３ｂ内のブロックを解放する。
【０１９９】
Ｓ６８においては、Ｐフラグを「１」とし、データキャッシュ１３ｂ内のデータ等がパージされたことを認識できるようにする。
【０２００】
Ｓ６９においては、外部メモリから所望のデータ等をデータキャッシュ１３ｂへ取り込んだ後、処理を終了する。
【０２０１】
以上のように、本実施形態のＣＰＵ１０は、予めキャッシュにロードしたプログラムと、キャッシュで利用可能なアドレス空間に割り付けた変数とを用いて、できる限り外部メモリにアクセスすることなく、内部のキャッシュ１３ａ〜１３ｃだけを用いて処理を進める。そして、キャッシュ１３ａ〜１３ｃだけでは処理しきれずに、外部メモリが必要になった時点で、それまでの処理を継続しつつ、外部メモリを起動している。
【０２０２】
これにより、外部メモリに対するアクセス禁止期間をできる限り長くして、省電力化を図るとともに、外部メモリを用いずにキャッシュ１３ａ〜１３ｃだけで処理を進めることで、高速処理を実現したＣＰＵ１０およびそれを備えたＰＣ１を提供できる。
【０２０３】
本発明のＣＰＵの制御方法は、以上のように、図５（ａ）〜図７（ｂ）に示すフローチャートに従ってＣＰＵ１０を制御することにより、できる限りキャッシュ１３ａ〜１３ｃのみを用いて処理を行うとともに、外部メモリへのアクセスを禁止することで、外部メモリへの電力供給を停止する、あるいは低消費電力モードへ移行する等して、ＰＣ１の電力消費量を削減できる。
【０２０４】
なお、本実施形態のＣＰＵ１０では、キャッシュ１３ａ〜１３ｃの記憶容量が満杯であるか否かについて判定し、外部メモリへのアクセス禁止モードへ移行するか否かを決定する例を挙げて説明したが、本発明はこれに限定されるものではない。例えば、キャッシュ１３ａ〜１３ｃにおける空き容量を検出し、これと処理を行うタスクの必要メモリ量とを比較して、外部メモリへのアクセスが必要であるか否かを決定してもよい。
【０２０５】
ただし、本実施形態のようにキャッシュ１３ａ〜１３ｃの空き容量だけを検出して判断することで、空き容量が満杯である場合にはタスクの必要メモリ量とは無関係に外部メモリへのアクセスが必要となるため、外部メモリへのアクセスの必要性の有無を認識できる。
【０２０６】
また、本実施形態のＣＰＵ１０では、外部メモリへのアクセス禁止状態を「Ｍフラグ」を用いて設定し、キャッシュ１３ａ〜１３ｃ内のデータ等がパージされたか否かを「Ｐフラグ」を用いて認識していたが、このようなフラグの使用は本発明を実施するための一つの手段として例示したものであり、本発明はこれに限定されるものではない。
【０２０７】
また、本実施形態の        ＰＣ１は、上述したように、外部ＲＯＭ３０、外部ＲＡＭ４０とともに、電源２０を備えている。これにより、キャッシュ１３ａ〜１３ｃだけを用いてタスクの処理が可能な場合、すなわち、外部メモリへのアクセスが禁止されている場合には、電源２０から外部ＲＯＭ３０および外部ＲＡＭ４０に対する電源供給を停止して、ＰＣ１の消費電力を削減できる。
【０２０８】
また、本実施形態のＰＣ１は、上述したように、外部メモリとして、外部ＲＯｍ３０と外部ＲＡＭ４０とを備えており、両方の記憶装置の特性に応じて両者を使い分けている。これにより、本実施形態のＣＰＵ１０によって処理を行うことにより、より効果的にＰＣ１の消費電力を低減することができる。
【０２０９】
なお、本発明のＣＰＵは、２次キャッシュ、３次キャッシュ等の設置により将来的にキャッシュの容量が増大してきた場合には、低消費電力化、高速処理を実現するＣＰＵとして特に有効である。
【０２１０】
【発明の効果】
本発明のＣＰＵは、以上のように、処理するタスクの必要メモリ量に応じて、上記キャッシュだけにアクセスしてタスクの処理が可能であるか否かを判定し、該処理が可能である場合には、上記外部メモリに対するアクセスを禁止する制御手段を備えている構成である。
【０２１１】
それゆえ、ＣＰＵ内に備えられているキャッシュだけを用いてタスクの処理を行うことができる状態においては、外部メモリへのアクセスを禁止しているため、外部メモリに対する電力供給を停止する、あるいは低消費電力モードに切り替える等の措置を取ることができ、結果として、本発明のＣＰＵを備えた情報処理装置の消費電力を削減することができるという効果を奏する。
【０２１２】
さらに、キャッシュよりも低速な外部メモリに対するアクセス回数を従来よりも減らし、高速アクセスが可能なキャッシュを用いて処理を行うため、迅速な処理が可能になる。
【０２１３】
上記制御手段は、上記キャッシュの残り容量および／または処理するタスクの必要メモリ量を検出することがより好ましい。
【０２１４】
それゆえ、例えば、キャッシュの残り容量とタスクの必要メモリ量とを検出して両者を比較することで、キャッシュのみを用いて該タスクの処理を行うことが可能であるか否かを判定できるという効果を奏する。
【０２１５】
上記外部メモリに対するアクセスが禁止されている状態において、上記制御手段が、上記キャッシュだけでは処理が不可能と判断した場合、あるいはキャッシュミスが発生した場合には、上記外部メモリに対するアクセス禁止を解除することがより好ましい。
【０２１６】
それゆえ、外部メモリに対するアクセス禁止状態において、アクセス禁止を解除することで、ライトバック制御を行って、キャッシュ内のデータ等を外部メモリに書き込むことができるため、外部メモリに書き込まれたデータ等をキャッシュから消去して、キャッシュの残り容量を増加させることができるという効果を奏する。
【０２１７】
内部クロックのクロック周波数を制御するクロック制御手段を備えており、該クロック制御手段は、上記外部メモリに対するアクセスが禁止された場合には、上記クロック周波数を変化させることがより好ましい。
【０２１８】
それゆえ、例えば、外部メモリへのアクセスが禁止されている場合、すなわち、高速アクセスが可能なキャッシュのみにアクセスして処理を行っている場合には、クロック周波数を低くすることにより、ＣＰＵの消費電力を削減することができるという効果を奏する。
【０２１９】
上記制御手段は、上記キャッシュ内における不要なデータを格納しているアドレスを検出し、該検出されたアドレスに対応するキャッシュ領域を解放することがより好ましい。
【０２２０】
それゆえ、例えば、処理の終了したタスク専用のプログラム、データの領域、スタックの不要なデータ等を格納したアドレスを検出し、このデータ等に対応するキャッシュ領域を、データが書き込まれていない領域とみなして解放することにより、実質的にキャッシュの空き容量を増やすことができるため、キャッシュを有効に利用できるという効果を奏する。
【０２２１】
電源投入後の初期動作時においては、所望のプログラムおよびデータを上記外部メモリから上記キャッシュに読み込んだ上で、上記外部メモリへのアクセスを禁止することがより好ましい。
【０２２２】
それゆえ、ＣＰＵが備えているキャッシュのみにアクセスして処理を行うことができるとともに、外部メモリへのアクセスを禁止して外部メモリに対する電力供給を停止することで、初期動作時から消費電力を削減した状態にできるという効果を奏する。
【０２２３】
上記制御手段は、タスクの状況が変化する際に、上記外部メモリに対するアクセスが必要か否かについての判断を行うことがより好ましい。
【０２２４】
それゆえ、ＯＳ等によって管理されているタスクの状況が変化した場合には、外部メモリへのアクセスが必要になる可能性が生じるため、その時点で外部メモリを使用する必要があるか否かについて判断し、外部メモリが必要な場合には、実際にアクセスが発生する前に外部メモリを起動することができるため、外部メモリの起動待ち時間を短縮して、処理を迅速に行うことができるという効果を奏する。
【０２２５】
上記制御手段は、上記キャッシュ内のプログラムおよびデータについて、パージされたか否かについて判定し、パージされていない場合には、上記プログラムおよびデータを上記外部メモリから読み込む処理を行わないことがより好ましい。
【０２２６】
それゆえ、キャッシュ内に書き込まれたプログラムやデータについて、これらがパージされていない場合には、該プログラム等はキャッシュ内に残っているため、キャッシュのみで処理を行うモードに移行する場合に必要なプログラム等を、新たに外部メモリから読み込む処理を省略して、無駄な処理を減らすことができるという効果を奏する。
【０２２７】
本発明の情報処理装置は、以上のように、上記電源供給手段は、上記外部メモリへのアクセスが禁止されている場合には、該外部メモリへの電力供給を停止する構成である。
【０２２８】
それゆえ、外部メモリへのアクセスが禁止されている場合、すなわちＣＰＵが内部に備えているキャッシュに対してアクセスするだけで処理を継続できる場合には、外部メモリへの電力供給を停止することで、情報処理装置の消費電力を削減できるという効果を奏する。
【０２２９】
上記外部メモリは、複数のモジュールを含んでおり、上記制御手段は、上記モジュールごとに電力供給の制御を行うことがより好ましい。
【０２３０】
それゆえ、外部メモリが、例えば、ＲＡＭ、ＲＯＭ等の複数のモジュールからなる場合には、このモジュールの性質に応じて電力供給を制御することで、さらに効率的に情報処理装置の消費電力を低減できるという効果を奏する。
【０２３１】
本発明のＣＰＵの制御方法は、以上のように、処理するタスクの必要メモリ量に応じて、上記キャッシュだけにアクセスしてタスクの処理が可能であるか否かを判定し、該処理が可能であると判定した場合には、上記外部メモリに対するアクセスを禁止する制御方法である。
【０２３２】
それゆえ、ＣＰＵ内に備えられているキャッシュだけを用いてタスクの処理を行うことができる状態においては、外部メモリへのアクセスを禁止しているため、外部メモリに対する電力供給を停止させて消費電力を削減できるという効果を奏する。
【０２３３】
さらに、キャッシュよりも低速な外部メモリに対するアクセス回数を従来よりも減らし、高速アクセスが可能なキャッシュを用いて処理を行うため、迅速な処理が可能になる。
【図面の簡単な説明】
【図１】本発明の一実施形態にかかるＣＰＵの内部構造を示すブロック図である。
【図２】図１のＣＰＵと外部メモリとを備えたＰＣの構成を示すブロック図である。
【図３】（ａ）は、命令キャッシュ、データキャッシュにおける使用状況（既使用容量）の時間変化を模式的に示すタイミングチャートであり、（ｂ）は、（ａ）に示すタイミングチャートに続く状態の一例を示すタイミングチャートである。
【図４】（ａ）〜（ｅ）は、タスク開始前またはタスク終了後におけるスタックの使用状態を示す図であり、（ｆ）は、この場合の実際のプログラムを示す図である。
【図５】（ａ）〜（ｅ）は、図１のＣＰＵによる処理を示すフローチャートである。
【図６】（ａ）・（ｂ）は、データキャッシュ解放、タスク終了時のＣＰＵの処理を示すフローチャートである。
【図７】（ａ）・（ｂ）は、データキャッシュライトバック、キャッシュミス発生時のＣＰＵの処理を示すフローチャートである。
【符号の説明】
１      ＰＣ（情報処理装置）
１０      ＣＰＵ
１１      バスインターフェース
１２      制御ユニット（制御手段）
１３ａ    命令キャッシュ（キャッシュ）
１３ｂ    データキャッシュ（キャッシュ）
１３ｃ    ２次キャッシュ（キャッシュ）
１４      命令デコーダ
１５      演算ユニット
１６      レジスタ群
１７      内部クロック制御部（内部クロック制御手段）
１８      ＭＭＵ
１９ａ    Ｍフラグ
１９ｂ    Ｐフラグ
２０      電源（電源供給手段）
２１      電源管理部
２２      電力供給線
３０      外部ＲＯＭ（外部メモリ）
４０      外部ＲＡＭ（外部メモリ）
５０      システムバス
【図１】
2004178016.tif 000003
【図２】
2004178016.tif 000004
【図３】
2004178016.tif 000005
【図４】
2004178016.tif 000006
【図５】
2004178016.tif 000007
【図６】
2004178016.tif 000008
【図７】
2004178016.tif 000009