(57)【要約】【課題】ＣＰＵ電源のオン／オフが頻繁に行われる場合に於いても、データの退避と復帰とに要するサイクルを少なし、動作時の処理能力の低下を少なくする。【解決手段】スタックポインタＳＰで指定されるアドレスとそれに連続したアドレスに格納されたデータがＭＲＡＭより成るＲＡＭ２から読み出されて、プログラムカウンタＰＣで指定されたアドレスに格納された命令コードがＲＯＭ３より読み出されてデコード化される。命令コードに制御されたＡＬＵ−Ｍは、ＲＡＭ２から読み出されたデータの演算を行い、その演算結果ＷＤを、ＲＡＭ２に於けるスタックポインタＳＰで指定される同一のアドレスに格納する。ＣＰＵ電源オフ時には、先立って、ＣＰＵ１は、スタックポインタＳＰ及びプログラムカウンタＰＣの値を、ＲＡＭ２に於ける予め定められたアドレスに格納して退避する。ＣＰＵ電源オン時にはＣＰＵ１は退避した値をＲＡＭ２から読み出す。【選択図】図１
2010026674.tif 000002
【特許請求の範囲】
【請求項１】
演算データ格納領域として、書き換え回数制限の無い不揮発性メモリを用いた半導体集積回路であって、
スタックポインタにより指定されるアドレスと当該アドレスに連続した所定数のアドレスに格納された前記不揮発性メモリ内の複数のデータに対して所定の演算を行うＣＰＵを備え、
前記ＣＰＵは、前記所定の演算の演算結果を前記スタックポインタにより指定される前記アドレスに格納し、前記ＣＰＵの電源をオフする際には、先ず、オフする際のサイクルに於ける前記スタックポインタの値を前記不揮発性メモリ内の予め定められたアドレスに退避した上で、前記ＣＰＵの電源をオフすることを特徴とする、
半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き換え回数制限のない不揮発メモリを備えた半導体集積回路に関する。
【背景技術】
【０００２】
従来のマイクロコンピュータは、簡単に図示すると、図４に示す様な構成を有しており、ＣＰＵは複数の汎用レジスタＲ０〜Ｒ６を備えている。ＲＯＭは命令コードＣｏｄｅを記憶しており、命令コードＣｏｄｅは、プログラムカウンタＰＣによって指定されたアドレスより読み出される。命令デコーダＣｏｄｅ  ｄｅｃ．は、ＲＯＭより読み出された命令コードＣｏｄｅをデコード化し、デコードされた信号Ｃ０[ｘ]を出力する。ＡＬＵ（算術演算装置）等の回路は、デコードされた上記信号Ｃ０[ｘ]によって制御され、汎用レジスタＲ０〜Ｒ６は、ＡＬＵ等の回路により実行された演算結果を一時的に保存している。
【０００３】
又、従来のマイクロコンピュータの中には、ＲＡＭ及びＲＯＭとして、ＭＲＡＭ（例えば非特許文献１を参照。）の様な、書き換え回数制限の無い不揮発性メモリを用い、マイクロコンピュータの電力消費を抑えるために、動作が不要なときには、ＣＰＵ電源をオフ出来る様にしているものがある。
【０００４】
【非特許文献１】2004 Symposium on VLSI Circuits Digest of Technical Papers p.450-453, A 1.2V 1Mbit Embedded MRAM Core with Folded Bit-Line Array Architecture
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来例の様な、複数の汎用レジスタを備えたＣＰＵと、ＭＲＡＭの様な書き換え回数制限の無い不揮発性メモリとを用いて、動作が不要な際にＣＰＵ電源をオフして電力消費を抑えようとするときには、汎用レジスタに一時的に保存されているデータを不揮発性メモリ部に退避する必要がある。そのため、ＣＰＵ電源のオン／オフが頻繁に行われる場合には、データの退避と復帰とに要するサイクルのために、本来行いたい動作の処理能力が低下するという問題点が発生する。
【０００６】
本発明は、この様な問題認識を踏まえて成されたものであり、その目的は、ＣＰＵ電源のオン／オフが頻繁に行われる場合に於いても、データの退避と復帰とに要するサイクルが少なく、動作時の処理能力の低下が少ない半導体集積回路を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の主題は、データ格納領域をＭＲＡＭの様な書き換え回数制限の無い不揮発性メモリを用いたマイクロコンピュータに適用される。マイクロコンピュータのＣＰＵ内のＡＬＵ−Ｍは、スタックポインタで指定されるアドレスとそれに連続したアドレスに格納された不揮発性メモリ内のデータに対して演算処理を行い、その演算結果を、スタックポインタで指定される同じアドレスに格納する。そして、ＣＰＵは、ＣＰＵ電源をオフする際には、スタックポインタ及びプログラムカウンタの各値を予め定められた不揮発性メモリのアドレスに退避した上で、ＣＰＵ電源をオフ状態にする。ＣＰＵ電源をオンして処理を再開するときには、ＣＰＵは、不揮発性メモリの所定のアドレスに退避していたスタックポインタ及びプログラムカウンタの各値を不揮発性メモリより読み出して、各値をスタックポインタ及びプログラムカウンタにロードする。その結果、スタックポインタは、ＣＰＵ電源をオフにする際のサイクル時のスタックポインタで指定されるアドレスに格納されているデータのアドレスを指定することとなり、ＣＰＵは、当該アドレスに格納されているＣＰＵ電源オフ時のデータを不揮発性メモリより読み出して演算処理を続行することとなる。
【発明の効果】
【０００８】
本発明の主題によれば、ＣＰＵ電源のオン／オフの際に不揮発性のメモリに退避するデータが少なく、ＣＰＵ電源のオン／オフが頻繁に行われる場合に於いても、データの退避と復帰とに要するサイクルを少なくすることが出来、従って、動作時の処理能力の低下を少なくすることが出来る。
【０００９】
以下、この発明の主題の様々な具体化を、添付図面を基に、その効果・利点と共に、詳述する。
【発明を実施するための最良の形態】
【００１０】
（実施の形態１）
図１は、本実施の形態に係る半導体集積回路を搭載したマイクロコンピュータの回路構成を示すブロック図である。本実施の形態では、ＲＡＭ２はＭＲＡＭ（Ｄａｔａ）より成り、ＲＯＭ３もＭＲＡＭ（Ｃｏｄｅ）より成る。
【００１１】
従来例と同様に、プログラムカウンタＰＣで指定されたアドレスＡに格納された命令コードＱ（Ａ＋０）が、ＲＯＭ３から読み出される。又、従来例と同様に、必要に応じて、アドレスＡと連続した所定数のアドレスに格納された各命令コードＱ（Ａ＋ｘ）も同時に、ＲＯＭ３から読み出される。本実施の形態では、一例として、プログラムカウンタＰＣによるアドレスＡの指定に応じて、最大で４個の命令Ｑ（Ａ＋０）〜Ｑ（Ａ＋３）が、ＲＯＭ３から、同時に読み出されることを、想定している。又、従来例と同様に、読み出された命令コードＱ（Ａ＋ｘ）（ｘ：０〜３）は命令デコーダＣｏｄｅ  ｄｅｃ．でデコードされる。そして、デコード化された信号Ｃ０［ｘ］〜Ｃ３［ｘ］によって、ＡＬＵ等の回路が制御されて、命令コードＱ（Ａ＋ｘ）が実行される。
【００１２】
又、スタックポインタＳＰが出力する信号の値により指定されるアドレスＡとアドレスＡに連続した所定数のアドレス（ここでは３個の連続したアドレス）に格納されたデータが、ＲＡＭ２のデータ出力端子Ｑ（Ａ＋０）〜Ｑ（Ａ＋３）より読み出される。他方で、算術演算装置ＡＬＵ−Ｍにより演算された結果を示すデータＷＤが、図１に示すスイッチを介して、ＲＡＭ２の書き込み端子Ｄ（Ａ＋０）より、ＲＡＭ２内に書き込まれる。
【００１３】
命令コードに従って制御された算術演算装置ＡＬＵ−Ｍは、ＲＡＭ２より読み出されたデータに対して所定の演算を実行する。その演算結果ＷＤは、ＲＡＭ２の書き込み端子Ｄ（Ａ＋０）に入力され、データとして、スタックポインタＳＰにより指定されるＲＡＭ２のアドレスＡに書き込まれる。
【００１４】
図２に示す様に、ここでは、算術演算装置ＡＬＵ−Ｍは、３個の算術演算回路ＡＬＵ（●、黒四角形、▲で示されている。）より構成されており、最大で３つの演算を１サイクル中に実行することが出来る。尚、簡単化のため、ここでは、算術演算回路ＡＬＵが実行出来る演算を、二項演算の四則演算（加算＋、減算−、積算×、除算÷）とする。表１の例に示されている通り、
【００１５】
【表１】
2010026674.tif 000003
【００１６】
ＲＡＭ２のデータ出力端子Ｑ（Ａ＋０）〜Ｑ（Ａ＋３）より出力されて算術演算装置ＡＬＵ−Ｍに入力されるデータＡ、Ｂ、Ｃ、Ｄの４つまでの値に対する演算式は、逆ポーランド記法の形式により、８つの場合に分類される。この８つの場合に応じて、図２のスイッチＳＷ１〜ＳＷ５と算術演算回路ＡＬＵ（●、黒四角形、▲）とは、表１に示す様に制御される。
【００１７】
以下に、図３のタイミングチャートを用いて、実行サイクルの動作について順次に記載する。
【００１８】
図３の時刻ｔ１に於いて、プログラムカウンタＰＣ及びスタックポインタＳＰのサイクルｎでの値が確定したものとして、それぞれの値がＲＯＭ３及びＲＡＭ２に入力される。
【００１９】
図３の時刻ｔ２では、ＣＰＵ１は、ＲＯＭ３及びＲＡＭ２の読み出しイネーブル信号ＯＥをイネーブルに設定して、プログラムカウンタＰＣ及びスタックポインタＳＰで指定されるＲＯＭ３及びＲＡＭ２のそれぞれのアドレスに格納された命令コード及びデータを読み出す。
【００２０】
読み出しアクセス時間の経過後の時刻ｔ３に於いて、ＲＯＭ３及びＲＡＭ２のそれぞれの端子Ｑ（Ａ＋０）〜Ｑ（Ａ＋３）より、命令コード及びデータが読み出される。そして、読み出された命令コードに応じて、算術演算装置ＡＬＵ−Ｍは、読み出されたデータに対して所定の演算を実行し、算術演算装置ＡＬＵ−Ｍに於ける演算遅延時間経過後の時刻ｔ４に於いて、演算結果を出力端子ＷＤより出力する。尚、既述の通り、この演算結果をＷＤとも称す。
【００２１】
図３の時刻ｔ５に於いて、ＣＰＵ１は、ＲＡＭ２の書き込みイネーブル信号ＷＥをイネーブルに設定し、演算結果ＷＤをＲＡＭ２に書き込む。その際の書き込まれるべきＲＡＭ２のアドレスは、既述した通り、スタックポインタＳＰで指定されるアドレスＡである。
【００２２】
最後に、時刻ｔ６に於いて、ＣＰＵ１は、プログラムカウンタＰＣ及びスタックポインタＳＰの値を、次サイクル（ｎ＋１）の値に更新する。その場合、スタックポインタＳＰの値は、一般に演算対象のデータを“スタックに積む”ときにはデクリメントされ、演算実行後には、（演算対象となったデータの数−１）だけインクリメントされる。
【００２３】
ＣＰＵ電源（図示せず。）のオン／オフの指令の外部回路（図示せず。）での検出によって、ＣＰＵ１の動作が必要でないときには、ＣＰＵ１は、斯かる検出結果を受けて、消費電力を削減するために、ＣＰＵ電源をオフする。その際に、プログラムを再開するために、ＣＰＵ１は、プログラムカウンタＰＣの値を予め定められたＲＡＭ２のアドレスに格納しておくと共に、スタックポインタＳＰの値をも予め決められたＲＡＭ２のアドレスに格納しておいてから、ＣＰＵ１の電源をオフする。
【００２４】
ＣＰＵ電源のオン指令を上記外部回路が検出して、斯かる検出結果を受けてＣＰＵ１がその電源をオンして処理を再開するときには、ＣＰＵ１は、前述の予め決められたＲＡＭ２のアドレスに格納されているスタックポインタＳＰの値を読み出してスタックポインタＳＰにロードする。と共に、ＣＰＵ１は、同じく予め決められたＲＡＭ２のアドレスに格納されているプログラムカウンタＰＣの値を読み出してプログラムカウンタＰＣにロードする。
【００２５】
上記の様に、データ格納領域に書き換え回数制限の無い不揮発性メモリを用い、スタックポインタＳＰで指定されるＲＡＭのアドレスＡとそれに連続した所定数のアドレスに格納されたデータに対して所定の演算を行い、演算結果をスタックポインタＳＰで指定される同じアドレスＡに格納している。このため、ＣＰＵ電源のオン／オフの際には、スタックポインタＳＰ及びプログラムカウンタＰＣの各値を不揮発性メモリに退避するだけで良く、ＣＰＵ電源のオン／オフが頻繁に行われる場合に於いても、データの退避と復帰とに要するサイクルが少なく、動作時の処理能力の低下が少ない。
【００２６】
しかも、データを格納するメモリは、主にスタックポインタＳＰのみで制御（アドレッシング）されるので、メモリの配置を分散させる必要性が無く、書き換え回数制限の無い不揮発性メモリとして、書き込みのための磁場発生用の電流線及び特別な読み出し回路が必要なＭＲＡＭを用いることが出来る。
【００２７】
（付記）
以上、本発明の実施の形態を詳細に開示し記述したが、以上の記述は本発明の適用可能な局面を例示したものであって、本発明はこれに限定されるものではない。即ち、記述した局面に対する様々な修正や変形例を、この発明の範囲から逸脱することの無い範囲内で考えることが可能である。
【産業上の利用可能性】
【００２８】
本発明は、例えば、書き換え回数制限のない不揮発メモリを備えたマイクロコンピュータに適用して好適である。
【図面の簡単な説明】
【００２９】
【図１】実施の形態１の一例であるマイクロコンピュータの回路構成を示すブロック図である。
【図２】図１のＣＰＵ中の算術演算装置の構成を示すブロック図である。
【図３】図１のマイクロコンピュータの実行サイクルの動作を示すタイミングチャートである。
【図４】従来技術に係るマイクロコンピュータの回路構成を示すブロック図である。
【符号の説明】
【００３０】
ＳＰ  スタックポインタ、ＰＣ  プログラムカウンタ、ＡＬＵ−Ｍ  算術演算装置、１  ＣＰＵ、２  ＲＡＭ、３  ＲＯＭ。
【図１】
2010026674.tif 000004
【図２】
2010026674.tif 000005
【図３】
2010026674.tif 000006
【図４】
2010026674.tif 000007