(57)【要約】【課題】  ＭＰＵに内蔵されたフラッシュメモリのエミュレーションにおける書き換え回数を低減させる。【解決手段】  内蔵フラッシュメモリを搭載したＭＰＵを用いたユーザシステムの製品開発を行なう開発支援システムにおいて、前記ユーザシステムと接続するエミュレータのエミュレーションモジュールには、前記内蔵フラッシュメモリのメモリ空間と対応したキャッシュメモリを接続し、このキャッシュメモリが内蔵フラッシュメモリの機能を代行して、エミュレーションを行なう。【選択図】        図３
2007072941.tif 000002
【特許請求の範囲】
【請求項１】
内蔵フラッシュメモリを搭載したＭＰＵを用いたユーザシステムと接続するエミュレータにおいて、
前記エミュレータのエミュレーションモジュールには、前記内蔵フラッシュメモリのメモリ空間と対応したキャッシュメモリを接続し、このキャッシュメモリが内蔵フラッシュメモリの機能を代行して、エミュレーションを行なうことを特徴とするエミュレータ。
【請求項２】
内蔵フラッシュメモリを搭載したＭＰＵを用いたユーザシステムの製品開発を行なう開発支援システムにおいて、
前記ユーザシステムと接続するエミュレータのエミュレーションモジュールには、前記内蔵フラッシュメモリのメモリ空間と対応したキャッシュメモリを接続し、このキャッシュメモリが内蔵フラッシュメモリの機能を代行して、エミュレーションを行なうことを特徴とするエミュレータを用いた開発支援システム。
【請求項３】
前記フラッシュメモリのブロックごとにキャッシュメモリの有効、無効の状態を判別するテーブルを有することを特徴とする請求項２に記載の開発支援システム。
【請求項４】
前記キャッシュメモリに記録されたデータと内蔵フラッシュメモリに記録されたデータとを比較して一致か不一致かを判定するモジュールを有することを特徴とする請求項２又は請求項３に記載の開発支援システム。
【請求項５】
内蔵フラッシュメモリの書き込み回数を記録するカウンタを有することを特徴とする請求項２乃至請求項４の何れか一項に記載の開発支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレータ及びそれを用いた開発支援システムに関し、特に、フラッシュメモリを内蔵したＭＰＵのエミュレーションに適用して有効な技術に関するものである。
【背景技術】
【０００２】
半導体製造技術の進歩、特に微細化の進展により、半導体装置に搭載される回路は規模が拡大し、論理演算を行なう半導体装置では、演算処理を実行するＣＰＵ(Central Processing Unit)に加えて、入出力等の周辺回路、キャッシュメモリ、プログラムコードが書き込まれたＲＯＭ等を単一のチップに集積したＭＰＵ(Micro Processing Unit)が多くの用途に用いられている。
【０００３】
このようなＭＰＵを搭載したユーザシステムを開発するために、ソフトウェア、ハードウェアの両面からサポートし、ＭＰＵの動作を確認するための開発支援システムが構築されている。
【０００４】
こうした開発支援システムでは、デバッグに必要な回路が組み込まれたＩＣＥ(In-Circuit Emulator；以下、エミュレータと云う)を用いて、エミュレータをインタフェースケーブルによってユーザシステムに接続し、このエミュレータをパーソナルコンピュータなどのホストコンピュータに接続して、実際の製品形態に近い状態でユーザシステムのデバッグを行なっている。
【０００５】
従来の開発支援システムでは、エミュレータを製品に搭載されるＭＰＵとは一部の機能が異なる評価用のチップ（Evaluation chip；以下、エバチップと云う）を搭載したＭＰＵに接続して、外部から信号を入力し、それに対する応答をディスプレイなどを通じてモニタすることにより、ＭＰＵの動作状態をモニタ或いはトレースしていた。
【０００６】
しかし近年ではユーザの多様な要望に応えるために、同一のＣＰＵコアを用いて動作周波数、メモリ容量、周辺回路の構成等を変更した複数の製品を製造するファミリー化が進められている。こうした多品種少量生産では、このエバチップの開発に要する工数及び費用を削減する必要があり、このため、製品となるユーザシステムに搭載されＭＰＵと同一の物を使ってエミュレーションを行なう開発支援システムが考えられた。
【０００７】
この開発支援システムでは、エミュレータのエミュレーションモジュールを、複数種のＭＰＵをサポート可能とすることによって、実際の製品に用いられるＭＰＵのみを開発すればよくなるので、開発効率を向上させ、開発費用を低減させることができる。
【０００８】
また、近年、多品種少量展開に対応するのに有利であることから、フラッシュメモリ等の電源電圧を遮断しても情報を保持する不揮発性メモリをＲＯＭとして用いる場合が増加している。フラッシュメモリ等を用いることで、ＲＯＭの製造に要する開発期間を短縮し開発費用を削減することが可能になり、加えて、仕様の変更等が生じて一度書き込んだプログラムの変更等が必要になる場合にも、容易に対応することができるといった利点がある。
【０００９】
例えば、下記特許文献１，２には、フラッシュメモリを内蔵したＭＰＵを使用するシステムの開発に用いられるエミュレータについて記載されており、下記特許文献３には、ＭＰＵに供給するクロック周波数を容易に変更することができるエミュレータについて記載されている。
【００１０】
【特許文献１】特開２００２−４９５０４号公報
【特許文献２】特開２００４−３４１８０２号公報
【特許文献３】特開２００４−１３９２５０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
フラッシュメモリ等に用いられている不揮発性メモリセルでは、メモリセルのフローティングゲートへ電子を注入・放出することによって情報の書き込み或いは消去が行われており、情報の書き換えのたびに電子の通過によってゲート絶縁膜が影響を受けるため、経時的に情報の書き換えを繰り返すことによってゲート絶縁膜が次第に劣化し、メモリセルの動作が不安定になる、或いは動作が不能になることがある。
【００１２】
このため、経時的なメモリセルの動作不良によるトラブルを回避するために、ブロックごとにデータの書き換え回数が制限されており、ＭＰＵに内蔵させたフラッシュメモリは、プログラム等の格納を想定し、データの頻繁な書き換えは想定していないため、書き換え回数が１０００回程度になっている。
【００１３】
しかし、フラッシュメモリは、不揮発性で書き換えが可能なことから、プログラムコード等の書き換えの頻度が低いデータの記録以外にも、データコードの記録にも使用する場合が増加している。
【００１４】
開発の段階ではプログラムコード或いはデータコードをフラッシュメモリに書き込んでの動作検証を頻繁に行なうが、書き換えの頻度が高くなると、保証された一定の書き換え回数を越えたブロックについては使用を停止しなければならず、場合によってはＭＰＵの交換が必要になってしまう。
【００１５】
このため特許文献１に記載された技術では、エミュレータ接続時にはＬＳＩ内部の各構成部を接続するバスとの接続を、内蔵フラッシュメモリに接続する内部バスから外部バスに切り替えて外部のＳＲＡＭに接続し、内蔵フラッシュメモリの書き換えは行なわずに、ＳＲＡＭに対して書き換えを行なう技術が提案されている。
【００１６】
代替メモリを使用する場合には、図１に示すように、エミュレータ１に搭載されているエミュレーション専用のＭＰＵ２が、専用外部バス３によって代替メモリ４に接続され、ＭＰＵ２は、ケーブル５によって開発対象となるユーザシステム６と接続されており、ＭＰＵ２をユーザシステム６に搭載された状態と同様に機能させている。
【００１７】
このＭＰＵ２は、例えば、ＪＴＡＧ(Joint Test Action Group)規格等のシリアル通信によってエミュレータ１のエミュレーションモジュール７と接続されており、エミュレーションモジュール７には、端末インタフェース８が接続されており、この端末インタフェースに外部からユーザがエミュレータに対して操作を行なうユーザ操作端末９が接続されている。
【００１８】
エミュレーションモジュール７は、エミュレーション全般を処理するために、プログラムのデバッグに必要な回路が組み込まれている。エミュレーションでは、このエミュレーションモジュール７からＭＰＵ２にエミュレーションのための各種制御信号を送り、ＭＰＵ２の内部状態に応じた情報等を受け取って、そのＭＰＵ２の動作状態をエミュレーションモジュール７によってモニタ或いはトレースし、ユーザシステム６に用いられるプログラム等のソフトウェアをデバッグすることができる。
【００１９】
しかし、この技術では専用外部バス３に切り替える構成を予めＭＰＵ２に組み込んでおく必要があり、エミュレーション専用のＭＰＵ２が必要になってしまう。
【００２０】
ＭＰＵの高機能化に伴い格納するプログラムの規模も増大しているため、内蔵するフラッシュメモリも大容量化のためにメモリセルの微細化が進んでおり、こうした微細化の進展によってフラッシュメモリでは、書き換え可能な回数は減少する傾向にあり、将来的により重要な問題となることが考えられる。
【００２１】
本発明の課題は、これらの問題点を解決し、ＭＰＵに内蔵されたフラッシュメモリ等の不揮発性メモリについて、エミュレーションにおける書き換え回数を低減させることが可能な技術を提供することにある。本発明の前記ならびにその他の課題と新規な特徴は、本明細書の記述及び添付図面によって明らかになるであろう。
【課題を解決するための手段】
【００２２】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
内蔵フラッシュメモリを搭載したＭＰＵを用いたユーザシステムと接続するエミュレータにおいて、前記エミュレータのエミュレーションモジュールには、前記内蔵フラッシュメモリのメモリ空間と対応したキャッシュメモリを接続し、このキャッシュメモリが内蔵フラッシュメモリの機能を代行して、エミュレーションを行なう。
【００２３】
また、内蔵フラッシュメモリを搭載したＭＰＵを用いたユーザシステムの製品開発を行なう開発支援システムにおいて、前記ユーザシステムと接続するエミュレータのエミュレーションモジュールには、前記内蔵フラッシュメモリのメモリ空間と対応したキャッシュメモリを接続し、このキャッシュメモリが内蔵フラッシュメモリの機能を代行して、エミュレーションを行なう。
【発明の効果】
【００２４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば、下記のとおりである。
（１）本発明によれば、キャッシュメモリによって内蔵フラッシュメモリの機能を代行することができるという効果がある。
（２）本発明によれば、上記効果（１）により、内蔵フラッシュメモリの書き換え回数を低減させることができるという効果がある。
（３）本発明によれば、上記効果（１）により、データの読み出し・書き込みを高速化することができるという効果がある。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施の形態を説明する。なお、実施の形態を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。
【００２６】
図２は、本発明の一実施の形態であるエミュレータを用いて開発を行なうユーザシステムの一例を示すブロック図である。
【００２７】
このユーザシステム６には、フラッシュメモリを内蔵したＭＰＵ１０が搭載されており、内蔵されたフラッシュメモリ１１に書き込まれたプログラムに従って、このＭＰＵ１０がユーザシステムの各種制御等を行なっている。
【００２８】
図３は、本発明の一実施の形態であるエミュレータを用いて構築した開発支援システムの一例を示すブロック図である。本実施の形態のエミュレータ１に搭載されているＭＰＵ１０は、実際に製品としてユーザシステム６に用いられるものであり、製品と同様のフラッシュメモリ１１が内蔵されている。ＭＰＵ１０は、ケーブル５によって開発対象となるユーザシステムと接続されており、ユーザシステムに搭載された状態と同様に機能する。
【００２９】
このＭＰＵ１０は、例えば、ＪＴＡＧ(Joint Test Action Group)規格等のシリアル通信によってエミュレーションモジュール７と接続されており、エミュレーションモジュール７は、エミュレーション全般を処理するために、プログラムのデバッグに必要な回路が組み込まれている。
【００３０】
エミュレーションでは、このエミュレーションモジュール７からＭＰＵ１０にエミュレーションのための各種制御信号を送り、ＭＰＵ１０の内部状態に応じた情報等を受け取って、そのＭＰＵ１０の動作状態をエミュレーションモジュール７によってモニタ或いはトレースし、ユーザシステム６に用いられるプログラム等のソフトウェアをデバッグすることができる。
【００３１】
また、エミュレーションモジュール７には、キャッシュメモリ１２、Ｖａｌｉｄテーブル１３、書き換え回数カウンタ１４、コンペアモジュール１５、端末インタフェース８が接続されており、この端末インタフェース８に外部からユーザがエミュレータに対して操作を行なうユーザ操作端末９が接続されている。
【００３２】
図４に、内蔵フラッシュメモリ１１、キャッシュメモリ１２、Ｖａｌｉｄテーブル１３、書き換え回数カウンタ１４の関係を示す。内蔵フラッシュメモリ１１は、用途に応じて異なるが、例えば４ＫＢ，１６ＫＢ，２５６ＫＢ等の容量となっている複数のブロックに分割されており、合計した容量は例えば３２ＭＢであり、夫々のブロックはアドレスによって識別されている。
【００３３】
キャッシュメモリ１２は、エミュレーションを行なう一連のユーザ操作の間、内蔵フラッシュメモリ１１の機能を代行するため、内蔵フラッシュメモリ１１と同一のブロック数と同一容量分の記憶容量を確保する。しかし、機能を代行するために、内蔵フラッシュメモリ１１のメモリ空間と対応するメモリ空間をキャッシュメモリ１２に構築できれば良いので、夫々のブロックの容量やブロックの数或いは合計した容量が必ずしも同一である必要はない。
【００３４】
また、キャッシュメモリ１２には、特性上の制約はなく、内蔵フラッシュメモリ１１と同様にフラッシュメモリを用いても良いが、他の種類のメモリ例えばＤＲＡＭ(Dynamic Random Access Memory)或いはＳＲＡＭ(Static Random Access Memory)等を用いることも可能であり、エミュレータシステムの空きメモリを利用することで、エミュレータの価格を削減することも可能である。キャッシュメモリ１２として、ＤＲＡＭ或いはＳＲＡＭを用いた場合には、読み込み或いは書き込みの際に高速の応答が可能になる。
【００３５】
通常の内蔵フラッシュメモリ１１では、データの頻繁な書き換えは想定していないので、書き換え回数が１０００回程度となっており、キャッシュメモリ１２にフラッシュメモリを用いる場合には、データ格納等に用いられるため書き換え回数が１０万回程度と強化されている汎用のフラッシュメモリが望ましい。
【００３６】
内蔵フラッシュメモリ１１のブロックごとに対応するＶａｌｉｄテーブル１３には、キャッシュメモリ１２のデータの有効性を記録しており、アドレスごとに「１」か「０」の値が記録されており、本実施の形態では、Ｖａｌｉｄテーブル１３の値が「１」の場合には、該当するアドレスのキャッシュメモリ１２のデータが有効であり、「０」の場合には、該当するアドレスのキャッシュメモリ１２のデータが有効ではないことを示している。
【００３７】
書き換え回数カウンタ１４には、ブロックごとに内蔵フラッシュメモリ１１の書き換え回数０〜Ｎ（Ｎは自然数）を記録している。書き換え回数カウンタ１４は、電源をオフとした状態でもデータを保持する必要があり、不揮発性のメモリを用いることが、保守・修理の面から望ましい。例えば、内蔵フラッシュメモリ１１の各ブロックの一部がエミュレータ１に開放されている場合には、その部分を書き換え回数カウンタ１４として使用することも可能である。
【００３８】
図５に示すのは、コンペアモジュール１５の動作であり、指定されたアドレス範囲における内蔵フラッシュメモリ１１から読み出したデータとキャッシュメモリ１２から読み出したデータとを比較して、それらのデータの一致・不一致をエミュレーションモジュール７に知らせる機能をもっている。
【００３９】
図６に、このエミュレータ１の動作をフロー図で示す。先ずエミュレータ１を起動させると、初期動作として、キャッシュメモリ１２を初期化し、続いてＶａｌｉｄテーブル１３の値を全て「０」にして、ユーザ操作端末９からのコマンドを受け付ける状態となる。キャッシュメモリ１２の初期化とは、全消去時の内蔵フラッシュメモリ１１が示す値であり、通常はその値が「１」である。
【００４０】
ここで、ユーザ操作端末９から「アドレスＡのデータを読み込む」コマンドがきた場合には、先ずアドレスＡに対応するＶａｌｉｄテーブル１３の値を確認し、値が「１」である場合には、キャッシュメモリ１２がヒットしているので、アドレスＡに対応するキャッシュメモリ１２の内容を読み込んで、ユーザ操作端末９に応答を返す。Ｖａｌｉｄテーブル１３の値が「０」である場合には、キャッシュメモリ１２がミスヒットしているので、アドレスＡに対応する内蔵フラッシュメモリ１１の内容を読み込んで、ユーザ操作端末９に応答を返す。
【００４１】
また、ユーザ操作端末９から「アドレスＡにデータを書き込む」コマンドがきた場合には、先ずアドレスＡに対応するＶａｌｉｄテーブル１３の値を「１」にして、アドレスＡに対応するキャッシュメモリ１２にデータを書き込んで、ユーザ操作端末９に応答を返す。
【００４２】
また、ユーザ操作端末９から「プログラム実行」のコマンドがきた場合には、先ずアドレスＡに対応するＶａｌｉｄテーブル１３の値を確認し、値が「１」となっているブロックを検索し、Ｖａｌｉｄテーブル１３が「１」のブロックのアドレスに対応するキャッシュメモリ１２のデータと内蔵フラッシュメモリ１１のデータとをコンペアモジュール１５によって比較する。
【００４３】
続いて、コンペアモジュール１５が不一致と判定したブロックのキャッシュメモリ１２のデータを対応する内蔵フラッシュメモリ１１に書き込んで、書き込みを実行したブロックの書き換え回数カウンタ１４の値を「１」加算して、Ｖａｌｉｄテーブル１３の値を全て「０」に戻した後に、プログラムを実行して、ユーザ操作端末９に応答を返す。
【００４４】
また、ユーザ操作端末９からメモリ操作を含まない「その他処理」のコマンドがきた場合には、従来と変わらずその処理を行ない、ユーザ操作端末９に応答を返す。
【００４５】
本実施の形態の開発支援システムでは、キャッシュメモリ１２は、エミュレーションを行なう一連のユーザ操作の間、内蔵フラッシュメモリ１１の機能を代行し、内蔵フラッシュメモリ１１への書き込みはプログラム実行の直前にのみ発生するので、内蔵フラッシュメモリ１１の書き換えの回数を低減させることができる。
【００４６】
これまでは、内蔵フラッシュメモリ１１からの読み出し・書き込みの動作が遅いために、速度的なボトルネックとなっていたが、内蔵フラッシュメモリ１１のブロックごとに対応するＶａｌｉｄテーブル１３に、キャッシュメモリ１２のデータの有効性を記録されているので、キャッシュメモリ１２からの読み出しが多くなり、高速な応答が可能になる。
【００４７】
また、コンペアモジュール１５によって、内蔵フラッシュメモリ１１から読み出したデータとキャッシュメモリ１２から読み出したデータとの一致・不一致を知ることができる。このため、キャッシュメモリ１２上でデータの書き換えがあった場合でも、キャッシュメモリ１２から保存するデータが内蔵フラッシュメモリ１１上のデータと同一値である場合には、書き換えを省略することで、不必要な書き換えをなくすことができる。これは、プログラムの局所性の点から、実使用上有効である。
【００４８】
書き換え回数カウンタ１４には、ブロックごとに内蔵フラッシュメモリ１１の書き換え回数を記録しているので、ブロックごとに正確な書き換え回数を知ることができる。このため、保証された書き換え回数の限界まで、内蔵フラッシュメモリ１１を活用することができる。
【００４９】
図７に示すのは、本実施の形態の変形例を示すブロック図であり、この例では、ＭＰＵ１０は、実際に製品として用いられるものがユーザシステム６に搭載された、オンチップエミュレータとなっている。
【００５０】
ＭＰＵ１０は、例えば、ＪＴＡＧ(Joint Test Action Group)規格等のシリアル通信によってエミュレータ１のエミュレーションモジュール７と接続されており、エミュレーションモジュール７は、エミュレーション全般を処理するために、プログラムのデバッグに必要な回路が組み込まれている。
【００５１】
エミュレーションでは、このエミュレーションモジュール７からＭＰＵ１０にエミュレーションのための各種制御信号を送り、ＭＰＵ１０の内部状態に応じた情報等を受け取って、そのＭＰＵ１０の動作状態をエミュレーションモジュール７によってモニタ或いはトレースし、ユーザシステム６に用いられるプログラム等のソフトウェアをデバッグすることができる。
【００５２】
それ以外の構成は前述の例と同様であり、エミュレーションモジュール７には、キャッシュメモリ１２、Ｖａｌｉｄテーブル１３、書き換え回数カウンタ１４、コンペアモジュール１５、端末インタフェース８が接続されており、この端末インタフェース８に外部からユーザがエミュレータ１に対して操作を行なうユーザ操作端末９が接続されている。
本例の構成としても、前述した例と同様の効果をあげることが可能である。
【００５３】
以上、本発明を、前記実施の形態に基づき具体的に説明したが、本発明は、前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
例えば、前述の説明ではエミュレーションを例にして本発明を説明したが、システムのセルフチェック機能等のように、内蔵フラッシュメモリを頻繁に書き換える可能性のある場合に、本発明を適用することも可能である。
【図面の簡単な説明】
【００５４】
【図１】従来のエミュレータを用いた開発支援システムを示すブロック図である。
【図２】開発を行なうユーザシステムを示すブロック図である。
【図３】本発明の一実施の形態であるエミュレータを用いた開発支援システムを示すブロック図である。
【図４】内蔵フラッシュメモリ、キャッシュメモリ、Ｖａｌｉｄテーブル、書き換え回数カウンタの関係を示す図である。
【図５】コンペアモジュールの動作を示す図である。
【図６】本発明の一実施の形態である開発システムの動作を示すフロー図である。
【図７】本発明の一実施の形態であるエミュレータを用いた開発支援システムの変形例を示すブロック図である。
【符号の説明】
【００５５】
１…エミュレータ、２…エミュレーション専用ＭＰＵ、３…専用外部バス、４…代替メモリ、５…ケーブル、６…ユーザシステム、７…エミュレーションモジュール、８…端末インタフェース、９…ユーザ操作端末、１０…ＭＰＵ、１１…内蔵フラッシュメモリ、１２…キャッシュメモリ、１３…Ｖａｌｉｄテーブル、１４…書き換え回数カウンタ、１５…コンペアモジュール。
【図１】
2007072941.tif 000003
【図２】
2007072941.tif 000004
【図３】
2007072941.tif 000005
【図４】
2007072941.tif 000006
【図５】
2007072941.tif 000007
【図６】
2007072941.tif 000008
【図７】
2007072941.tif 000009