(57)【要約】実行可能なプログラムコードの再ロードを可能にする、携帯型データ記憶媒体（１０）のスタックの仮想拡張のための方法が提案される。物理的に存在するスタックより大きなスタックを必要とするプログラムの実行を可能にするため、スタック（２６）は少なくとも２つのスタックセグメント（３０）にセグメント化され、セグメント（３０）の占有状態が監視される。セグメント（３０）の完全な占有が認められると、最も古いスタックセグメント（３０）が別の記憶媒体（１８）にスワップ書出しされる。別の記憶媒体（１８）は、スタック（２６）に比較して低速のメモリとすることができる。スタック（２６）で再び十分なメモリ空間が利用可能になると、スワップ書出しされたセグメント（３０）が戻される。【特許請求の範囲】
【請求項１】
スタック（２６）として構成された携帯型データ記憶媒体上の揮発性読出−書込メモリ（１６）のデータ構造の仮想拡張のための：
ｂ）前記スタック（２６）の占有状態を表す占有パラメータが検出されるステップ；及び
ｃ）前記ステップｂ）で検出された前記占有パラメータをあらかじめ定められた極限値（ＧＷ）と比較することにより前記占有パラメータが監視されるステップ；
ｄ）極限値（ＧＷ）と前記占有パラメータとの間のあらかじめ定められた関係が達成されると直ちに、前記データ構造の一部が別の記憶媒体（１８，２０）にスワップ書出しされるステップ；
を含む方法において：
ａ）前記スタック（２６）が少なくとも２つのスタックセグメント（３０）にセグメント化されるステップを含み；
前記別の記憶媒体（１８，２０）へのスワップがセグメント毎に実施されることを特徴とする方法。
【請求項２】
前記別の記憶媒体が読出−書込メモリ、特に不揮発性読出−書込メモリ（１８）であることを特徴とする請求項１に記載の方法。
【請求項３】
前記方法が：
ｅ）前記占有パラメータと第２の極限値との間のあらかじめ定められた関係が達成されると直ちに、特に前記占有パラメータが前記第２の極限値より小さくなると直ちに、前記ステップｄ）においてスワップ書出しされた前記スタックセグメント（３０）を前記スタック（２６）にスワップするステップ；
をさらに含むことを特徴とする請求項１または２に記載の方法。
【請求項４】
前記方法が：
ｆ）前記不揮発性読出−書込メモリ（１８）にスワップ書出しされた前記スタックセグメント（３０）の宛先アドレスを、好ましくは前記揮発性読出−書込メモリ（１６）のレジスタにおいて、管理するステップ；前記宛先アドレスは、スタックセグメント（３０）が新しくスワップ書出しされる毎にセグメントサイズの整数倍だけインクリメントされ、スタックセグメント（３０）が前記スタック（２６）にスワップ書戻しされる毎にセグメントサイズの整数倍だけデクリメントされる；
をさらに含むことを特徴とする請求項１から３のいずれかに記載の方法。
【請求項５】
サイズが２ｎ−ｍのセグメントへの前記セグメント化が実施され、ここでｍ＝１，２，３，．．．、２ｍ＝セグメント化数、及び２ｎ＝前記スタック（２６）のサイズであり、前記データ記憶媒体のシステムの最適均衡化が得られるようにｍが選ばれることを特徴とする請求項１から４のいずれかに記載の方法。
【請求項６】
前記極限値（ＧＷ）及び／または前記第２の極限値が、前記セグメントサイズ、すなわち２ｎ−ｍに、あるいは前記セグメントサイズの整数倍に一致することを特徴とする請求項５に記載の方法。
【請求項７】
前記ステップｄ）における前記極限値（ＧＷ）と前記占有パラメータとの間の前記関係が、関係式“占有パラメータ≦極限値”で表されることを特徴とする請求項１から６のいずれかに記載の方法。
【請求項８】
前記スマートカード（１０）が実行可能なプログラムコードの再ロードを可能にするオペレーティングシステムを有することを特徴とする請求項１から７のいずれかに記載の方法。
【請求項９】
スタックセグメント（３０）のスワップ書出し及び／またはスワップ書込みが既知のブロック毎転送命令を用いて実施されることを特徴とする請求項１から８のいずれかに記載の方法。
【請求項１０】
前記占有パラメータがスタックポインタ（２８）として形成されることを特徴とする請求項１から９のいずれかに記載の方法。
【請求項１１】
前記ステップｄ）において、最も古くから占有されているスタックセグメント（３０）がスワップ書出しされることを特徴とする請求項１から１０に記載の方法。
【請求項１２】
前記スワップ書出しされたスタックセグメント（３０）が、サブプログラムの帰還アドレス、ローカル変数、中間結果及び／またはコールパラメータを含むことを特徴とする請求項１から１１のいずれかに記載の方法。
【請求項１３】
特に前記ステップａ），ｂ），ｃ）及びｄ）、並びに、必要に応じて前記ステップｅ）及びｆ）、における、前記スタック（２６）の管理手段がハードウエアに実装されることを特徴とする請求項１から１２のいずれかに記載の方法。
【請求項１４】
少なくとも、プロセッサ（１２）、Ｉ／Ｏユニット（１４）、スタック（２６）をもつ少なくとも１つの揮発性読出−書込メモリ（１６）、少なくとも１つの不揮発性メモリ（１８，２０）、オペレーティングシステム（２２）並びに、データ、制御及びアドレスバス（２４）からなるマイクロコントローラ（３２）を有する携帯型データ記憶媒体（１０）において、前記オペレーティングシステム（２２）が、前記スタック（２６）をセグメント化するための手段及び、占有状態が定められた状態をこえると、前記揮発性読出−書込メモリ（１６）の少なくとも１つのセグメント（３０）を前記不揮発性メモリ（１８，２０）にスワップ書出しするための手段を有することを特徴とする携帯型データ記憶媒体。
【請求項１５】
前記不揮発性メモリが不揮発性読出−書込メモリ（１８）であることを特徴とする請求項１４に記載の携帯型データ記憶媒体。
【請求項１６】
前記マイクロコントローラ（３２）が、セグメント（３０）を前記不揮発性メモリ（１８，２０）にスワップ書出しするために請求項１から１０のいずれかに記載の方法を実行するために設計されたページコントローラ（３４）をさらに有することを特徴とする請求項１４に記載の携帯型データ記憶媒体。
【発明の詳細な説明】
【０００１】
発明の技術分野
本発明は携帯型データ記憶媒体上の高速読出−書込メモリのデータ構造の仮想拡張のための方法に関し、さらに、少なくとも、プロセッサ、Ｉ／Ｏユニット、スタックを有する高速読出−書込メモリ、低速読出−書込メモリ、オペレーティングシステム並びに少なくとも１つのデータ、制御及びアドレスバスからなる、マイクロコントローラを備える携帯型データ記憶媒体に関する。
【０００２】
発明の背景
携帯型データ記憶媒体は、例えばスマートカードの形態で知られている。スマートカードの特徴は、カード本体に組み込まれ、データ転送及び格納のための手段を装備し、これらのデータを処理するためのユニットを備える集積回路を有することである。集積回路チップを破損または捻れによる損傷から保護するため、及びセキュリティ上の理由から、集積回路チップは小面積に抑えられる。可能であれば、正方形で２５ｍｍ２の面積を選ぶことが実際上有利であることがわかっている。したがって、モジュールの全て、特にメモリモジュールを備えるスマートカード上に配置される集積回路チップは、面積が強く制限される。
【０００３】
そのように制限される面積により、及び、様々なメモリチップに必要な、タイプに依存する様々な大きさの面積−ＲＡＭの１ビットメモリセルにはＥＥＰＲＯＭの１ビットメモリセルの約４倍もの面積が必要であり、さらにＥＥＰＲＯＭの１ビットメモリセルにはＲＯＭの１ビットメモリセルの４倍もの面積が必要である−を考慮すれば、面積の大きなメモリチップ、特にＲＡＭチップの使用を避けて、代わりにＥＥＰＲＯＭまたはＲＯＭのような面積のより小さなチップを選択するようにしなければならない。しかし、面積の大きなチップの面積のより小さい別のチップによる望ましい置換えによるいかなる機能の喪失も絶対に避けるためには、元来用いられていたチップの機能が維持されなければならない。
【０００４】
スマートカードには極めて多様な分野の用途及び目的がある。すなわち、いわゆるメモリーカードは主にテレフォンカードまたは健康保険カードとして用いられる。これらの機能は特定の用途に限られる。しかし、マイクロプロセッサカードは、ＣＰＵを収める付加ブロックモジュールがあることを特徴とする。これらのカードは通常、ＣＰＵとともに、Ｉ／Ｏユニット、データ、制御及びアドレスバス、揮発性読出−書込メモリ（ＲＡＭ）、不揮発性読出−書込メモリ（ＥＥＰＲＯＭ）及び不揮発性読出専用メモリ（ＲＯＭ）も有する。オペレーティングシステムが主としてＲＯＭに格納される。
【０００５】
マイクロプロセッサカードが、オペレーティングシステムに加えて、別のプログラムにアクセスするか否かに依存して、これらのカードは、ＲＯＭに格納された１つの特定のアプリケーションだけのために設計されるか、または別のユーザプログラムに指定される別の作業を行うことができる。このことにより、カードの機能性が著しく高められる。しかし、このような機能性の向上により、必要なメモリ面積も大きくなる。例えば、処理されるべきデータのためのより多くのレジスタ及び非常に多くのサブプログラムのためのより多くの帰還アドレスがＲＡＭに備えられなければならない。しかし、現在普及しているカードにおいては、ＲＡＭの該当面積、すなわちスタックとして構成されている面積は、より複雑なアプリケーションには不十分である。上述したように、面積の大きなＲＡＭチップのメモリ面積を任意に拡張することはできないから、ＲＡＭがスマートカードの機能性の可能な範囲を制限している。
【０００６】
最近のスマートカードは実行可能なプログラムコードの再ロードを可能にするオペレーティングシステムを有している。このタイプのカードでは、アプリケーション提供者自身が、オペレーティングシステム製造業者の知らないプログラムコードをスマートカードで実行できる。例えば、いわゆるＪａｖａ（登録商標）（ジャバ）カードは、ＪＡＶＡ言語でのプログラミング及び、いかなる十分に強力なプロセッサ上にも実装できる「Ｊａｖａ」プロセッサの模擬マシンである、いわゆる“「Ｊａｖａ」仮想マシン”に基づく。したがって、「Ｊａｖａ」カードはプラットフォームにほとんど依存しない。しかし「Ｊａｖａ」には、必須の仮想マシンによる、強いスタック要件がある。したがって、ＲＡＭの限られた物理的な大きさが「Ｊａｖａ」カードの可能性を制限する。
【０００７】
独国特許発明第１９６２６３３７Ａ１号明細書は、スマートカード上で処理されるべき外界からのメッセージの読込み及び処理のための方法及び装置を開示している。Ｉ／Ｏユニットを介して受け取られる、処理されるべきメッセージは、メモリ空間の制限のためＲＡＭに完全には書き込むことができないサイズを有し得る。セキュリティ上の理由から、外界からのメッセージは、処理が可能となる前にＣＰＵによるアクセス認可管理をさらに受けなければならない。メッセージをより小さなサイズのブロックに単純に分割すれば、認証が不必要に手の込んだ作業になり、認証に手間取ることになろう。ＲＡＭが非常に小さいにもかかわらず、スマートカードとの交信がメッセージのデータサイズにはほとんど依存しないように、外界からのメッセージはＥＥＰＲＯＭに直接に、またはＲＡＭへの中間格納に続いてＥＥＰＲＯＭに間接に格納される。提案された解決策は、そのサイズのためＲＡＭに完全には格納できないメッセージすなわちデータのための中間格納を可能にするという手法に基づく。仮想メモリ拡張はＲＡＭのＩ／Ｏバッファを介して、すなわち必要に応じて書込みができるＲＡＭ領域を介して実施される。上記明細書には、スタックとして構成される、上記のＲＡＭ領域の拡張についての示唆は含まれていない。
【０００８】
欧州特許第７２００８７号明細書は、拡張メモリを設定することによるハードウエアスタックの仮想拡張の提案を開示している。拡張メモリはＲＡＭの定められた領域に設定されなければならない。ハードウエアスタックの占有状態がハードウエアスタックの最大容量より僅かに少ない極限値をこえると、最も古いスタックエントリーが拡張メモリに移される。極限値に到達すると、最も古いスタックエントリーが拡張メモリに移される。極限値にまだ到達していなければ、次に古いスタックエントリーも外部に移される。この既知の方法により、有効なメモリ利用を可能にするためにハードウエアスタックが常時少なくともほとんど完全に利用可能であることが保証される。このことは、ハードウエアスタックがセクタに分割され、サブルーチンコール毎にセクタローテーションにより新しいセクタが用いられ、全てのセクタが占有されるとセクタがメモリに移されることで、上記の方法を他の既知の概念から区別する。
【０００９】
しかし、欧州特許第７２００８７号明細書に開示される方法は、個々のスタックエントリーの要求時スワップには高速メモリが必要であり、したがって必然的にＲＡＭに実装されなければならないため、携帯型データ記憶媒体に移植することができない。携帯型データ記憶媒体上の、特にスマートカード上のＲＡＭにはこのための十分な容量がない。
【００１０】
スタックは、ＲＡＭの他の領域とは異なる特殊な構成を有する。スタックは、ＬＩＦＯ（後入れ先出し）データ構造として実装され、ランダムにアクセスされるＲＡＭの他のメモリ領域より単純な管理及びアクセスアルゴリズムを基本的に可能にする、データ構造を構成する。したがって、スタックのスワップ領域は、ＲＡＭの他の領域に対して適用可能な規準とは異なる規準に合せることができる。
【００１１】
高水準言語で自由にプログラムすることができるスマートカードのＲＡＭは、現在−未だに−慣習的な８ビットコントローラに規制され、一般に２５６バイトの内部ＲＡＭ（ＩＲＡＭ）及び、アドレス計算によりアドレスが可能であり、したがって若干低速の、１６００バイトの拡張ＲＡＭ（ＸＲＡＭ）を含む。ＩＲＡＭは完全にスタックとして通常用いられ、ＸＲＡＭは作業メモリ及びＩ／Ｏバッファを収める。
【００１２】
発明の概要
したがって、本発明の課題は、特にスマートカードの形態の、携帯型データ記憶媒体に対してスタックとして構成されたＲＡＭの領域の仮想拡張を可能にし、よってデータ記憶媒体上に物理的に設けられたスタックより物理的に大きなスタックを必要とするであろうアプリケーションの実行も、本来のコンピュータ能力を可能な限り完全に保持し−アプリケーションソフトウエアのような−現時点での特定のシステム要件並びに−ＲＡＭ及びＥＥＰＲＯＭへのアクセス時間、ＥＥＰＲＯＭの寿命等のような−システム均衡化特性を適応的に考慮しながら、可能にする方法を提供することにある。
【００１３】
別の課題は、拡張スタックを必要とする複雑なアプリケーションの実行、特に「Ｊａｖａ」アプレットの実行を可能にする携帯型データ記憶媒体を提供することにある。
【００１４】
上記の課題は以下の：
ａ） スタックを少なくとも２つのセグメントにセグメント化するステップ；
ｂ） スタックの占有状態を表す占有パラメータを検出するステップ；
ｃ） ステップｂ）で検出された占有パラメータをあらかじめ定められた極限値と比較することにより占有パラメータを監視するステップ；
ｄ） 極限値と占有パラメータとの間のあらかじめ定められた関係が達成されると直ちに、少なくとも１つのスタックセグメントを別の記憶媒体にスワップするステップ；
を有する、特許請求項１の属概念部分にしたがう方法により解決される。
【００１５】
さらに、上記課題は、オペレーティングシステムがスタックをセグメント化する手段及びＲＡＭの少なくとも１つのセグメントを別のメモリ、特にＥＥＰＲＯＭのような不揮発性読出−書込メモリにスワップする手段を有する、スマートカードにより解決される。
【００１６】
スタックは通常、最後のエントリーが最初に処理されるように、ＬＩＦＯデータ構造として実施される。サブプログラムの帰還アドレスに加えて、スタックはローカル変数を収める。プログラムスタックは、サブプログラムの特定の帰還アドレスがサブプログラムのコール時に格納されるスタックである。プログラムの実行に際して、サブプログラムの特定の帰還アドレス及びローカル変数が順次に格納される。次いで、特定のサブプログラムがマスタープログラムに帰還するときに、特定の帰還アドレス及びローカル変数が逆順で要求される。非常に古いスタック内容または帰還アドレスがスタックメモリ空間を占有するが、その時点では特定のサブプログラムの実行に必要とされない。したがって、スタックセルブロックまたはセグメントは、別の、より低速のメモリ、例えばＥＥＰＲＯＭにスワップさせることができる。特定のスタックメモリ内容は、その時点のプログラムが上位プログラムに帰還しなければならない時の直前にのみ、再び利用可能でなければならず、必要に応じて、前記別の記憶媒体から再びスワップされる。この間、上記のスタックセルのメモリ空間は、別のレコード、例えば別の帰還アドレス及びローカル変数を格納するために、本発明にしたがって用いることができる。この方法により、スタックを仮想拡張させることが可能になる。
【００１７】
本発明は、ＲＡＭの全体として最も有効な負荷軽減を可能にするためには、特にスタックを、便宜的に仮想拡張させなければならないという事実を利用する。スタックの独特の構成により、本発明のスワップ機構は、別の構成の、あるいは何らかの構成を全くもたないＲＡＭのメモリ領域に適用する場合に比較して、より有効に適用できる。例えば、バッファ領域がスワップされるとすれば、ＲＡＭがランダムにアクセスされるている場合には、スワップされたバッファッモリ内容のどれがいつＲＡＭで再び利用可能でなければならないかは予知不能であるから、より低速なメモリにあるスワップされた内容へのアクセス時間は長くなると考えなければならないであろう。スワップされたセル内容がスワップのすぐ後のプログラム実行のために正確にＲＡＭで再び利用可能でなければならなくなるという事態を排除することはできない。そのような事態では、時間がかかるＥＥＰＲＯＭへのアクセスの回数が多くなる。スタック内容がスワップされるときに、“ＲＡＭで利用可能になっている”ための時点があらかじめ計算されるという方式を便宜よく提供することができる。これは、ＬＩＦＯデータ構造としてのスタック構成により可能である。
【００１８】
本発明の有利な実施形態は２のべき乗２ｎ−ｍでなされるセグメント化にある。ここでｍ＝１，２，３，．．．であり、２ｍはセグメント化数、２ｎはメモリセルまたはバイトにしたがうスタックサイズである。分割のための次元数ｍは、スマートカードシステムの最適な均衡が得られるように、すなわち、スマートカードのその時点でのアプリケーションに対する、スタックサイズ、セグメントのスワップ書出し及び書込みにかかる時間、セグメント転送にかかる加算オーバーヘッド、スタックメモリ空間に対する要求等のようなパラメータを考慮して、選ばれることが有利である。すなわち、セグメント化はスマートカードシステムのパラメータに依存し、アプリケーションソフトウエア、例えばサイズ、サブプログラム数等に依存して、選ばれることが有利である。好ましいセグメント化においては、セグメントサイズがＥＥＰＲＯＭのブロックサイズに正確に一致する。
【００１９】
したがって、例えば、スマートカードシステムが全体として最適化された実行を保証できるように、スマートカードの第１のある用途に対しては、２つの区画へのスタックの分割すなわちセグメント化が最も便宜がよい。スマートカードの別のある用途に対しては、いくつかの、より小さいセグメントへのセグメント化が、例えば最適なシステム均衡化をより容易に得られるであろうから、より賢明であり得る。
【００２０】
本発明の方法は、特に大きなスタック領域を必要とするスマートカードアプリケーション、例えば複雑な暗号アルゴリズムを含むプログラムあるいは「Ｊａｖａ」アプレットを含むカードプログラムの実行も可能にする点で有利である。本発明の方法では、ユーザによるユーザ固有のプログラムのカード上へのロードが可能である。このことは、例えば更新プログラムをカードにロードできるから、カードの機能性を高め、寿命を延ばす点で有利である。
【００２１】
本発明の別の実施形態において、最下層のスタックセグメントはＥＥＰＲＯＭにスワップされず、フラッシュＥＥＰＲＯＭまたはＦＲＡＭ（強誘電体ランダムアクセスメモリ）のような別の不揮発性読出−書込メモリに、あるいは追加の揮発性読出−書込メモリ、例えば面積は最適化されているがこのためアクセス時間が長くなっているＲＡＭにスワップされる。
【００２２】
一実施形態においては、特に、スタックセグメントをアクセス時間が非常に短いＲＡＭからアクセス時間がかなり長いＥＥＰＲＯＭメモリにスワップする時間に関する難点が、前もってスタックバランスを用意しておくことによって回避される。すなわち、セグメントは、フリーになるスタック領域に関してより長いアクセス時間を考慮し、正の最終バランスが得られる場合にのみスワップされる。スタックバランスを用意するため、アプリケーションソフトウエアをシミュレータ上で試験することができ、あるいはデータフロー解析を行うことができる。
【００２３】
２のべき乗２ｎ−ｍでのスタックのセグメント化の選択により、占有パラメータを最小のアドレスビット数、すなわちｍでコード化することができる。このことは、２つの区画への分割、すなわちｍ＝１の場合に、１つのスタックセグメントから次のスタックセグメントへの変更の標識付け及び認識のためには、アドレスビットは１つで十分であることを意味する。４つの区画へのスタックの分割、すなわちｍ＝２では、必要なアドレスビットは２つだけである。
【００２４】
本発明のさらなる利点及び特徴は、以下の、図面の詳細な説明から得られるであろう。
【００２５】
発明の詳細な説明
図１は、以降スマートカードの形態にあるされる、携帯型データ記憶媒体１０を簡略に示す。スマートカード１０は、プロセッサ１２，Ｉ／Ｏユニット１４，特にＲＡＭ（ランダムアクセスメモリ）１６の形態にある揮発性読出−書込メモリ１６，特にＥＥＰＲＯＭ（電気的消去可能なプログラマブル読出専用メモリ）１８の形態にある不揮発性読出−書込メモリ１８，特にＲＯＭ（読出専用メモリ）２０の形態にある不揮発性読出専用メモリ２０，メモリ１８及び２０に格納されたオペレーティングシステム２２、並びに、データ、制御及びアドレスバス２４からなるマイクロコントローラ３２を搭載する。メモリ１６，１８，２０のそれぞれは、物理的なサイズがメモリのタイプに依存する、多数の１ビットメモリセルを備える。
【００２６】
ＲＡＭ１６はシステムの作業メモリである。ＲＡＭ１６の特徴は、アクセス時間が短いが、メモリセルサイズに関して面積をとり、供給電圧が短時間であっても絶たれるとすぐにその内容が失われることである。高水準言語での自由なプログラミングが可能な８ビットコントローラを備える普通のスマートカードにおいて、ＲＡＭは、例えば、一般に１６００バイトの、アドレス計算によるアドレスが可能な拡張ＲＡＭ（ＸＲＡＭ）に補助される、２５６バイトの内部ＲＡＭ（ＩＲＡＭ）からなる。ＲＡＭ１６は通常、暗号アルゴリズムのような複雑なアルゴリズムのための作業領域に加えて、様々な領域：レジスタ領域、スタック２６、変数領域及びＩ／Ｏバッファ領域にも分割される。
【００２７】
ＲＡＭ１６の一部としての−スタック２６は、ＬＩＦＯデータ構造として実装される。さらに、スタック２６はそれぞれがある数のセルを含むセグメント３０に分割される。スタック２６の占有状態についてのステートメントを得るため、スタック２６の最終格納エントリー、特に最下層エントリーを指すスタックポインタ２８が備えられる。
【００２８】
ＲＯＭ２０は供給電圧が絶たれているときでもデータを保持する。このメモリチップへの書込アクセスは不可能である。ここには、主としてオペレ−ティングシステムが格納される。
【００２９】
ＥＥＰＲＯＭ１８は最も精巧なメモリチップである。ＥＥＰＲＯＭ１８はそれぞれがある数のセルを含むブロックに分割される。書込走査毎にブロックに書込みがなされる。データは電力供給が絶たれていてもＥＥＰＲＯＭに保持される。しかし、ＥＥＰＲＯＭは、ＥＥＰＲＯＭブロックに対する書込時間が実際の書込バイト数にはほとんど依存しないから、アクセス時間が非常に長い。書込時間は普通、ブロック当たり３ミリ秒程度である。
【００３０】
本発明の好ましい実施形態において、スワップされたスタックセグメント３０のアドレス指定は、同様にＲＡＭ１６に格納されることが好ましい宛先アドレスレジスタにより解かれる。セグメント３０がスタック２６からＥＥＰＲＯＭ１８にスワップされると、ＥＥＰＲＯＭ１８の初期アドレスで初期化された宛先アドレスレジスタがインクリメントされる。ここで想定されている事例においては、アドレス値が例えばセグメントサイズだけ、すなわち２ｎ−ｍだけインクリメントされる。別のセグメント３０がスワップ書込みされたときには、この宛先アドレスレジスタが再び２ｎ−ｍだけインクリメントされ、よって宛先アドレスレジスタは常に最も新しいセグメントを指す。スタック２６で再び利用可能となるために、スワップ書込みされたセグメント３０がＥＥＰＲＯＭからスワップ書出しされると、宛先アドレスレジスタは、例えばここで想定されている場合には２ｎ−ｍだけ、デクリメントされる。
【００３１】
本発明の別の実施形態において、スマートカードは、上述したコンポーネントだけでなく、さらに、ハードウエア補助メモリ管理、特に公開キーアルゴリズムの計算のための数値演算コプロセッサ、ＥＥＰＲＯＭの誤り検出及び補正ユニット、乱数発生器等のようなコンポーネントも有する。
【００３２】
本発明の特に有効な実施形態において、本発明の方法はハードウエアに実装され、したがってソフトウエア実装より実行が相当に高速である。この目的のため、マイクロコントローラ３２はページコントローラをさらに有する。ページコントローラは、スタックセグメント３０をスワップ書出しするための手段及び、必要に応じて、本発明の方法にしたがう手段を有する、専用のいわゆるメモリ管理ユニット（ＭＭＵ）として形成される。
【００３３】
本発明の方法がソフトウエアに実装されれば、プロセッサ１２がオペレーティングシステム１２とともに、スタックセグメント３０の転送を担当する。
【００３４】
以下に、本発明の方法が機能するモードを図２を参照して説明する。
【００３５】
プログラム実行中の、サブプログラムの、階層的に上位のサブプログラムまたはマスタープログラムへの帰還のための特定のアドレスは、その時点でのローカル変数、計算結果及びコールパラメータとともにスタック２６に格納される。プログラムの実行が進むほど、スタック２６内の占有領域は大きくなる。それにもかかわらず、実際に、物理的に存在するはずの利用可能領域より大きな利用可能領域をスタック２６に必要とするプログラムの実行が可能となるように、スタック２６の、既に書込みがなされている、すなわち占有されている個々のセグメント３０が、より大きいがより低速なメモリ、好ましくはＥＥＰＲＯＭ１８にスワップされる。可能な限り後にならないとプログラム実行に再び必要とされない、最も古くに書込みがなされたセグメント３０が選択されることが有利である。
【００３６】
プログラム実行がかなり進行すると、セグメント３０のいくつかはＥＥＰＲＯＭ１８に置かれている。ここで再びスタック２６上のフリーなメモリ空間として十分な容量があり、スワップされたセグメントがアクセスされなければならないときには、スワップされたセグメント３０が次々に、個々にまたはまとめてスタック２６にスワップ書戻しされる。このスワップ書戻しは、スワップ書込み及び書出しの所要時間、特定のスタック要素へのアクセス頻度等のような−システムパラメータが最適に考慮されるように実行されることが有利である。
【００３７】
スワップされるべきセグメントのスワップ書出し及びスワップ書戻しは、それぞれの場合に、１回の、相関転送操作で、セグメント毎に実施される。スワップ書出し及びスワップ書戻しは、既知のブロック毎転送命令を用いて便宜よくなされる。
【００３８】
極限値ＧＷ及びセグメント化サイズの適切な決定により、マイクロコントローラが付加ＭＭＵを含めて構成されていれば、ＣＰＵの、例えば“立ち往生”を予防する、すなわち、その時点で必要なスタック要素がＥＥＰＲＯＭからスタック２６に戻しロードされるまでまず待たなければならない事態にプロセッサが陥ることを予防することができる。
【００３９】
自身のエネルギー源の欠如によるスマートカードのシステム特性のため、処理の進行中に、例えばデータがＥＥＰＲＯＭに書き込まれている間に、カードの電力供給が、例えば読取器からの取出しにより、中断されることが可能となる。したがって、時々刻々処理されるデータの状態は不定であり得る。詳しくは、データが失われるか、またはメモリに部分的にしか転送されないでいることがあり得る。特に、ＲＡＭに置かれたスタック２６，スタックポインタ２８及び宛先アドレスレジスタが失われ得る。これは、とりわけ、新しいレコードを一部に収め、同時に古いレコードを一部に収めているファイルにおこり得る。この不整合は、アプリケーションに問題を生じさせるであろう。そのような不整合を確実に回避するためには、ある特に適切な方策が、スマートカード上で、いわゆる原子的シーケンス、すなわち二値原理にしたがって完全に実行できるかまたは全く実行できないかのいずれかでしかないシーケンスとして、構築される。スマートカードのハードウエアは原子的シーケンスをサポートしないから、この原理はソフトウエアに実装されなければならない。例えば特定のレコードを分割せずに全体として処理できるように、本発明に事実上したがって、ＲＡＭ，特にスタックに一定の領域を確保することがおそらく必要であろう。
【００４０】
スマートカードシステム、特にマイクロコントローラ３２のソフトウエアは、原子的オペレーション、例えば「Ｊａｖａ」アプレットの特有のバイトコードを実行するように設計され、したがって、本発明の有利な別の実施形態においては、スタック要件を前もって決定し、例えば専用に備えられたテーブルに格納することができる。次いで、スワップ書出し及び書込みのための特定のセグメントの管理が上記テーブルを参照して実行される。
【００４１】
物理的限界の下で利用可能なＣＰＵスタックに対し、本発明の方法は理論的にサイズが無制限のスタック２６を提供する点で有利である。
【００４２】
スマートカードシステムがプログラムの実行中のスワップ書出し及び書込みを制御できるように、ＲＡＭ１６のスタック２６の占有状態を表す情報が与えられる。これは、好ましくは、最新のエントリーが実施されたスタック２６のメモリセルを常に指すスタックポインタ２８の形態にある、占有パラメータにより実現される。スタック２６に新しいエントリーがある毎に、スタックポインタ２８がインクリメントされる。
【００４３】
必要に応じて、どのスタック２６の占有状態でスタックセグメント３０がスワップ書出しされるべきかを決定することができる。特定のアプリケーションに依存して、例えば２つの区画へのセグメント化の場合には、比較的大きなセグメント３０は極めて稀にしかスワップ書出しされないと便宜がよいことがあり得る。他方で、例えばセグメント化がより細かい場合には、より細かな分割によって、より小さいセグメントがより頻繁にスワップ書出しされると便宜が一層よいことがおこり得る。
【００４４】
本発明の方法の上記の拡張された設計性は、極限値ＧＷの定義により可能になる。極限値ＧＷは、スマートカードシステムの総体の最適均衡化が保証されるように、すなわちＲＡＭへのアクセス時間とＥＥＰＲＯＭ１８へのアクセス時間が互いに調和され、ＣＰＵ計算時間及び管理、特にスワップされたセグメント３０のアドレス指定のための付加メモリ要件が考慮に入れられるように、選ばれることが好ましい。極限値ＧＷは、特定のセグメント限界をこえたときに最も古いセグメント３０がスワップ書出しされるように、第１の便宜のよい設定におけるセグメントサイズに基づく。セグメント３０のサイズがＥＥＰＲＯＭ１８のブロックサイズと正確に一致すると非常に便宜がよい。そうすれば、ＲＡＭ１６とＥＥＰＲＯＭ１８との間のスタックセグメントの転送を、１つのブロック毎転送命令を用い、時間的に最適化された態様で実施できる。別の便宜のよい設定においては、極限値ＧＷがセグメントサイズの倍数に一致するように設定され、よって複数のセグメント３０が必ずブロック毎に同時にスワップ書出しされる。次いで、セグメント３０は、同じ方式で、セグメント３０のブロックとしてスタック２６にスワップ書戻しすることができる。スワップ書戻しは同様に１セグメント毎に実施することができる。一般に、あるステップでスワップ書出しされるセグメントの数は、あるステップでスタック２６に戻し転送されるセグメントの数に一致する必要はない。全転送セグメントの合計だけを均衡させなければならない。
【００４５】
極限値ＧＷを定めることにより、ＥＥＰＲＯＭ１８のメモリチップの寿命を考慮に入れることも可能になる。ＥＥＰＲＯＭは技術上限られた数の書込−消去サイクルしか行えず、書込−消去される頻度が高いほど記憶保持時間が短くなる。したがって、システム性能がＥＥＰＲＯＭの寿命と最適に調和するように、極限値ＧＷが選ばれることが好ましい。
【００４６】
好ましい実施形態において、極限値ＧＷとスタックポインタ２８との間の関係は、関係式“スタックポインタ２８≦極限値ＧＷ”で表すことができるように、選ばれる。すなわち、スタック２６の占有状態があらかじめ定められたセグメントサイズをこえると直ちに、最も古いスタックセグメント３０がスワップ書出しされる。スワップ書出しと同様に、ＲＡＭ１６へのセグメントのスワップ書戻しもある極限値により決定されることと便宜がよい。上記の極限値はＧＷと同じとすることができる。セグメント３０のスワップ書戻しのための極限値は、本発明の方法の可変性を高めるために、極限値ＧＷと異なる値とすることもできる。さらに、本方法を改変すると便宜がよいこともある。例えば短いプログラムの場合には、スワップ書出しがプログラムの開始時にすぐには行われず、スタック２６がほとんど完全に占有されていることをスタックポインタ２８が指示したときにのみ行われることが、有利であり得る。
【００４７】
本発明の主要な実施形態においては通常、マイクロコントローラ３２はメモリチップ、すなわちＲＡＭ１６，ＲＯＭ２０及びＥＥＰＲＯＭ１８を備える。ＲＡＭ１６内のスタック２６の個々のブロックが、本発明にしたがってＥＥＰＲＯＭ１８にスワップ書出しされる。あるいは、マイクロプロセッサ３２は２つのＲＡＭチップ、すなわちＲＡＭ１６及び付加ＲＡＭチップ、並びにＲＯＭ２０を備える。付加ＲＡＭチップは面積が最適化されているが、ＲＡＭ１６よりアクセス時間が長い。本発明にしたがえば、ＲＡＭ１６に存在するスタック２６のセグメント３０が、付加ＲＡＭチップのメモリ領域にスワップされる。
【図面の簡単な説明】
【図１】
部分的に示されるスマートカード上の、本発明のマイクロコントローラの基本モジュールの略図を示す
【図２】
本発明にしたがうスタックセグメントの略図を示す
【符号の説明】
１０　　携帯型データ記憶媒体
１２　　プロセッサ
１４　　Ｉ／Ｏユニット
１６　　揮発性読出−書込メモリ
１８　　不揮発性読出−書込メモリ
２０　　不揮発性読出専用メモリ
２２　　オペレーティングシステム
２４　　データ、制御及びアドレスバス
２６　　スタック
２８　　スタックポインタ
３０　　スタックセグメント
３２　　マイクロコントローラ
３４　　ページコントローラ
ＧＷ　　極限値
【国際公開パンフレット】
2004508620.tif 000002
2004508620.tif 000003
2004508620.tif 000004
2004508620.tif 000005
2004508620.tif 000006
2004508620.tif 000007
2004508620.tif 000008
2004508620.tif 000009
2004508620.tif 000010
2004508620.tif 000011
2004508620.tif 000012
2004508620.tif 000013
2004508620.tif 000014
2004508620.tif 000015
2004508620.tif 000016
2004508620.tif 000017
2004508620.tif 000018
2004508620.tif 000019
2004508620.tif 000020
2004508620.tif 000021
2004508620.tif 000022
2004508620.tif 000023
2004508620.tif 000024
2004508620.tif 000025
2004508620.tif 000026
【国際調査報告】
2004508620.tif 000027
2004508620.tif 000028
2004508620.tif 000029
2004508620.tif 000030
2004508620.tif 000031
2004508620.tif 000032
2004508620.tif 000033
2004508620.tif 000034