(57)【要約】【課題】組み込みシステムにおいて不完全なＲＯＭの使用についてのシステムを提供する。【解決手段】システムの起動時にアクセス可能なＲＯＭ又は他のメモリに、そのＲＯＭにおける任意の情報について置換すべきか否かの判断をするストアード・プログラムを備える。前記ストアード・プログラムによりＲＯＭに格納されている情報について置換すべきであると判断したときは、外部ソースから良情報を取り出してキャッシュ・メモリに格納すると共に、ＲＯＭに格納した置換情報の書き換えを禁止するためのロック・ビットをセットする。【選択図】図１
2005063438.tif 000002
【特許請求の範囲】
【請求項１】
情報を格納するための位置を有する不揮発性メモリと、
前記不揮発性メモリに格納された情報の置換として使用するように改訂情報を格納するための位置を有する外部メモリと、
情報を格納することができるアドレス指定可能な格納位置を有し、少なくとも１つの前記格納位置に格納された情報の置換を排除する識別子を有するキャッシュ・メモリと、
格納された前記情報が改訂情報により置換されるべきである前記不揮発性メモリにおける任意の位置が存在するか否かを判断するために一連の命令を実行するプロセッサにより実行可能な起動プログラムであって、前記プログラムがこのような位置が存在すると判断した場合に、前記キャッシュ・メモリへそのような改訂情報を取り出しおよびその格納を行い、前記不揮発性メモリを変更することなく、前記不揮発性メモリに格納された当該情報に対する改訂情報がシステムに利用可能にされる前記起動プログラムと、
を備えたシステム。
【請求項２】
前記起動プログラムは、前記不揮発性メモリに格納されている請求項１記載のシステム。
【請求項３】
前記不揮発性メモリ及び前記キャッシュ・メモリは、同一の集積回路上に形成されている請求項２記載のシステム。
【請求項４】
前記キャッシュ・メモリは、セット・アソシエイティブ・キャッシュ・メモリを備えている請求項１記載のシステム。
【請求項５】
前記キャッシュ・メモリは、システムのユーザが前記置換情報を置換するのを排除するロック・ビットを含む請求項４記載のシステム。
【請求項６】
前記起動プログラムは、別のメモリに格納されている請求項１記載のシステム。
【請求項７】
前記システムはプロセッサを含み、かつ前記改訂情報は前記プロセッサの処理用の複数命令を備えている請求項１記載のシステム。
【請求項８】
前記改訂情報はデータを備えている請求項１記載のシステム。
【請求項９】
前記キャッシュ・メモリはセット・アソシエイティブ・キャッシュ・メモリを備えている請求項１記載のメモリ。
【請求項１０】
格納された情報を有する不揮発性メモリを含むコンピュータ・システムにおいて、前記不揮発性メモリにおける格納された情報のうちの少なくともいくつかを置換するシステムであって、
前記情報は置換を必要とするか否かを判断し、必要である場合に、改訂情報を取り出す起動プログラムと、
前記改訂情報を格納するキャッシュ・メモリであって、更に、前記改訂情報の変更を妨げるように設定できる少なくとも１つのインジケータを含み、前記コンピュータ・システムが前記不揮発性メモリからの前記情報における前記キャッシュ・メモリからの置換情報を使用する、前記キャッシュ・メモリと、
を備えたシステム。
【請求項１１】
前記不揮発性メモリは、読み出し専用メモリを備えている請求項１０記載のシステム。
【請求項１２】
前記コンピュータ・システムは、集積回路上のプロセッサを含む組み込みシステムを備え、かつ前記不揮発性メモリは、前記集積回路上にある請求項１０記載のシステム。
【請求項１３】
前記置換情報は、前記コンピュータ・システムを前記改訂情報により照合されたソースから命令を取り出すようにさせる分岐命令を備えている請求項１０記載のシステム。
【請求項１４】
前記キャッシュ・メモリは、セット・アソシエイティブ・キャッシュ・メモリを備えている請求項１０記載のシステム。
【請求項１５】
キャッシュ・メモリを有するシステムにおいて、不揮発性メモリに格納された情報を取り出す方法であって、
ソースにより前記システムの一部をチェックして前記不揮発性メモリに格納された前記情報は改訂を必要とするか否かを判断させるストアード・プログラムを備え、
前記情報が改訂を必要とするか否かを判断するために前記外部ソースによりチェックし、
前記情報が改訂を必要とすることを前記ソースが表示する場合に、このような改訂情報を入手し、
前記キャッシュ・メモリに前記改訂情報を格納し、及び
前記改訂情報が置換されないように前記キャッシュ・メモリを設定すること
を備えた方法。
【請求項１６】
格納プログラムを設ける前記ステップは、前記不揮発性メモリに前記プログラムを格納することを備えている請求項１５記載の方法。
【請求項１７】
前記チェックするステップは、システムが最初に活性化されるときに、実行される請求項１６記載の方法。
【請求項１８】
前記キャッシュ・メモリを設定するステップは、キャッシュ・メモリから改訂情報を置換することを許容するためにキャッシュ・メモリをリセットすることから、システムユーザーを排除するために実行される請求項１５記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子システムに関し、特に部分的に欠陥のある不揮発メモリが誤った結果を発生することなく、依然として満足に利用可能とされるシステムに関する。更に、本発明は、通常、プログラミングの誤りを有する不揮発メモリ、又は装置を動作不能又は望まないものにするプログラミングのアップグレードを欠く不揮発メモリの使用に関する。
【背景技術】
【０００２】
組み込みシステムにおいて、ワン・チップ読み出し専用メモリは、プログラム命令及びデータを格納する高密度技術が得られるので、重要である。例えば、ある組み込みシステムでは、システム全体がプロセッサ及びその他のコンポーネントと同一チップ上のＲＯＭに格納されたプログラム命令の制御により動作することになる。これらのＲＯＭは、チップ全体の製造時点で、その製造プロセス中に使用したマスクのうちの一つがＲＯＭにおける各ビットの状態を確定することになるので、典型的に、マスク・プログラマブルである。ＲＯＭは、複数カラムに配列された別層の複数ワイヤから、絶縁物質層によって分離されている複数ロウに配列された複数ワイヤの層を有すると考えてもよい。例えば、マスクを使用した絶縁層に開口を設けることにより、カラムとロウとの間に短絡回路が形成されたときは、そのアドレスはデータ・ビットを表しているとみなされる恐れがある。このようにして、カラムとロウとの間の短絡回路は「１」とみなされ、かつカラムとロウとの間の開放接続は「０」とみなされる恐れがある。実際において、ワード・ライン又はビット・ラインを選択するためにトランジスタが使用される。このトランジスタは、通常の集積回路製造技術による金属層又は拡散層にプログラム可能とされる。
【０００３】
しかしながら、このような組み込みシステム又はチップ上のシステムにおいてＲＯＭを使用することによる大きな欠点は、ストアード・プログラムを変更することが困難なことである。システムが開発された後、ストアード・プログラムにエラーが含まれている、欠陥がある、又は改訂が必要であると判断されることがある。代わって、ストアード・プログラムには満足できるが、しかしなんらかの方法でストアード・プログラムを改訂したい、又は別の製品における組み込みシステムを使用するためにプログラムを更新したいことがある。一般的に、このようなフレキシビリティは可能にされておらず、このような問題に対する通常の解決方法は、ＲＯＭ用のマスクを変更して、デバイスを再製造にすることであった。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＲＯＭがマスク・プログラマブルであるときは、ストアード・プログラムにおけるどのような変更も、新しいマスクの開発及び新しい集積回路の製造を必要とするので、チップの製造後にＲＯＭに変更を行うことは困難、かつ高価である。新しいマスク・セットの開発は、典型的には、数十万ドルのコストとなり、完成までに数週間又は数ヶ月かかる。従って、ＲＯＭが誤った命令又は誤ったデータを含むものであっても、必要とされることは、システムが正しく動作することを保証する方法である。
【課題を解決するための手段】
【０００５】
組み込みシステムにおいて不完全なＲＯＭの使用を可能にするシステムを提供する。典型的には、組み込みＲＯＭに小さなプログラムを付加し、チップに情報の外部ソース、例えば外部メモリ、インターネット又は他の何らかのソースを調べさせてＲＯＭにおける情報は置換されるべきか否かを判断する。ＲＯＭにおける全ての情報は正しいとプログラムが判断したときは、システムは通常に動作をする。他方、外部ソースがＲＯＭにおけるいくつかの情報が誤っている、又は置換若しくは改訂を要することを示しているときは、置換情報を取り出す。次に、これをキャッシュ・メモリに格納し、かつ欠陥のある情報又は置換されるべき情報のアドレスに一致したアドレスを与える。これを実行したならば、新たに取り出した訂正情報が後にＲＯＭからの欠陥又は不正情報によって置換されないように、キャッシュ・メモリ上のロック・ビットをセットする。大きなブロックの命令を置換する又は付加することが必要となったときは、新しい又は付加された命令を含む外部メモリへ制御を渡すようにさせる分岐命令をキャッシュ・メモリに格納する。このような連続する命令の実行の終了時に、ＲＯＭにおける適当なコードへ分岐命令が発行される。大きなブロックのデータを置換する必要がある場合には、ロード命令のインダイレクションを発生させる複数の命令をキャッシュに挿入することが可能である。
【実施例】
【０００６】
一実施例において、前記システムは、情報を格納するための位置を有する不揮発性メモリと、前記不揮発性メモリに格納された情報の置換として使用するように改訂情報を格納するための位置を有する外部メモリとを含む。更に、アドレス指定可能な格納位置を有するキャッシュ・メモリも設けられ、そのうちの少なくともいくつかは消去から保護可能される。前記システムの動作に応答して前記不揮発性メモリに格納された起動プログラムを実行し、格納されていた情報を改訂情報によって置換すべき位置が不揮発性メモリに存在するか否かを判断する。
【０００７】
図１は、組み込みシステムを得るために使用される単一の集積回路チップ上に見られる典型的ないくつかのコンポーネントのブロック図である。説明するシステムは、ＲＯＭ１０、命令キャッシュ２０及びプロセッサ３０を含む。更に、メイン・メモリ４０も設けられており、典型的には、チップ・コンポーネントから分離している。いくつかの実施ではフラッシュ・メモリのような不揮発性メモリが使用されるが、一般的に、メイン・メモリ即ち外部メモリは揮発性メモリ、例えばダイナミック・ランダム・アクセス・メモリである。小さなシステムでは、メイン・メモリをチップから分離して設ける必要はないと思われるが、その代わり所望数のＤＲＡＭメモリ・セルの配列を集積回路そのものに組み込むこととなる。
【０００８】
図１に示す命令キャッシュ２０は、ＣＰＵとメイン・メモリとの間におけるメモリ階層のレベルを表す。キャッシュ２０は、好ましくは、マルチウェイ・セット・アソシエイティブ・キャッシュ（ｍｕｌｔｉ−ｗａｙ  ｓｅｔ  ａｓｓｏｃｉａｔｉｖｅ  ｃａｃｈｅ）である。換言すれば、ＲＯＭ又はメイン・メモリからの情報ブロックは、キャッシュにおける多数の位置に配置可能とされる。例えば、好ましい実施例では、８ウェイ・セット・アソシエイティブ・キャッシュを使用する。８マルチウェイ・セット・アソシエイティブ・キャッシュには、与えられたメモリ位置に関する情報を格納可能な８位置、又は８メモリ・ブロックが存在する。図に示すように、アドレス・タグは、データ又は複数命令の完全なアドレスを表し、各ブロックに関するデータと共に格納され、これによって特定アドレス用のキャッシュから正しい情報を取り出せるようにする。
【０００９】
キャッシュを使用するときは、所望の情報を含む可能性のある、あらゆるキャッシュ・ブロック用のタグをチェックして、これがＣＰＵからのアドレスと一致するか否かを調べる。典型的には、特定のアドレスで全てのブロック・タグを並行にサーチする。あるタグがＣＰＵからのアドレスと一致するときは、「ヒット」が存在し、そのキャッシュの内容が処理に使用される。セット・アソシエイティブ・キャッシュからの所望部分の情報を取り出すために、ＣＰＵは、典型的には、２フィールドに分割されたアドレスを提供する。これら２フィールドはキャッシュにおける命令及びデータの正しいアドレスを見出すために使用される。下位ビットは、典型的には、キャッシュ・ブロックへのエントリを表示し、またタグに格納されている上位ビットは、完全なアドレスを形成する。例えば、１６ｋｂ  ８ウェイ・セット・アソシエイティブ・キャッシュは、それぞれ２ｋｂのメモリによる８バンクを有する。キャッシュにおける各ラインは１６バイトであり、アドレス・ビット（ａ３：ａ０）の最下位４ビットにより表示される。７ビット（ａ１２：ａ４）はブロックのそれぞれをアドレス指定するために使用される。アドレス空間が３２ビットであれば、タグに２５ビット（ａ３１：ａ１３）が格納される。組み込みシステムにおいては、しばしば統合的なアドレス空間が２４ビットであり、従って格納される実際のタグ・ビットは、１７ビット（ａ２３：ａ１３）のみである。更に、図１に示すキャッシュ２０もタグに、キャッシュにおけるそのラインが置換可能か否かを制御するロック・ビット”Ｌ”を含む。ロック・ビットをセットすると、キャッシュ・ラインがキャッシュにより置換（削除）されるのを防止する。ロック・ビットをリセットすると、例えば最近使用されたアルゴリズムを使用して、キャッシュのラインを置換可能にする。好ましい実施例において、キャッシュ２０は、少なくとも１６Ｋバイト、１６バイトのライン・サイズ及び８ウェイ・セット・アソシエイティブ・キャッシュを有する命令キャッシュである。
【００１０】
本発明は、概要的に、ＲＯＭ１０に格納されている不良命令又はデータに関する置換情報をキャッシュ２０に格納することにより動作する。キャッシュに置換情報を格納し、かつロック・ビット及びライン有効ビットをリセットすることにより、キャッシュは、その後キャッシュに現在格納されている良情報をＲＯＭからの元の不良情報によって置換されることはない。更に詳細な説明を続ける。好ましい実施例では、本発明を実行するために命令キャッシュが使用されているが、キャッシュ・メモリは、命令及びデータを共に同一のキャッシュ・メモリに格納される統合タイプであってもよい。そうであれば、他の全ての特徴は同一となり、動作も同一となる。
【００１１】
ＲＯＭ１０は命令及びデータを格納することができ、以下で説明するように、小さな特殊プログラム部１２を含む。好ましい実施例において、この小さな特殊プログラム部分はＲＯＭ１０に配置されるが、更に組み込みシステム内又は外の別のＲＯＭに配置されても、若しくは外部ソースからダウンロードされても、又は他の型式のメモリに格納されてもよい。本発明を説明する一例として、ＲＯＭ１０は更に２ワード（ｉ＋２）によりオフセットされた位置１４に不良の命令ワードも含むものと仮定する。
【００１２】
システムが初期化された時点で、プロセッサ３０は特殊プログラム１２を実行してＲＯＭにおけるいずれかのデータを置換する必要があるか否かを判断する。これは、インターネット、付属のフラッシュ・メモリなどのように外部情報ソース５０を求めることによって判断する。このソースは、データを置換すべきエラー又は他の理由が存在するか否かを表しており、そうであれば、プロセッサに良データ及び／又は指令を供給する。置換を必要とするワードがＲＯＭに存在しないとプログラムが判断したときは、特殊プログラムは活動を停止し、システムは通常の組み込みシステム又はチップ上のシステムのように通常の方法により動作する。
【００１３】
他方、プログラム１２が動作し、ＲＯＭにおけるワードのうちのいくつかが変更又は置換されるべきであると判断されたときは、これらのワードは外部情報ソース５０から取り出されて、メイン・メモリ４０に格納され、そしてキャッシュ２０にロードされる。この例において、外部情報ソースは、位置ｉ＋２のワードを置換する必要があることを表すと共に、その置換情報を提供する。（勿論、置換情報は、置換情報の存在を表示しているソースと異なるソースから提供されてもよい。）
【００１４】
オペレーティング・システム、又はスーパバイザ即ち制御プログラムは、しかるべき位置におけるキャッシュ・メモリへ新しい命令ｉ＋２（又はデータ）をロードし、かつこのようなワードに関するロック・ビット及び有効ビットをセットして後に不正情報により置換されるのを防止する。典型的には、スーパバイザのみがキャッシュ・メモリにおける位置をアンロックすることができる。（しかしながら、初めての使用又はある回数の使用後に、位置が置換可能にされる特殊な使用があり得る。このような実施は特殊なセキュリティ目的を達成することができる。例えば、セキュリティ・システムにおいて、実際には不良コードをＲＯＭへプログラムすることがあり、特殊なワン・タイム・コードを得た後に、新しいコードがキャッシュにロックされる。時間のようないくつかの特殊な状況後に、コード位置がアンロックされ、無効にされる、又はそれ以上アクセスを許さない不良コードとにより置換される。）
【００１５】
正しい命令及びデータがキャッシュにロードされると、システムは主として通常の方法により動作する。通常の動作において、プロセッサはまずＲＯＭ１０からキャッシュ２０にプロセッサにより実行可能とされる複数命令をロードする。ロック・ビットは、そのタグ位置で命令がＲＯＭからのデータによって置換されるのを防止することになる。これは、プロセッサがそのタグ・アドレスをアクセスしたときに、訂正された（又は改訂された）命令を取り出すこと、及びプロセッサがＲＯＭから元の不良データを取り出さないことを保証するものである。
【００１６】
その結果、プロセッサがＲＯＭから既知の不良情報をフェッチしようとしたときに、Ｉｃａｃｈｅにヒットが存在するため、Ｉｃａｃｈｅは不良命令をフェッチすることがない。従って、Ｉｃａｃｈｅは予め格納した訂正命令を提供する。続いて、この予め格納した訂正命令は、単なる一命令に過ぎないことがあり得る、又は新しいコードのブロックに制御を引き渡すために、又はフラッシュ・メモリ若しくはメイン・メモリに格納されていたコードを修復するために、システムのいずれかへ分岐することを含むことがあり得る。これは、これらをキャッシュに全て格納しなくとも、ＲＯＭから多数ラインの置換を可能にする。そのコード（単なる１ワードであってもよい）の終端で、システムはＲＯＭの良部分へ分岐して戻る。
【００１７】
好ましい実施例において、ＲＯＭ１０におけるプログラム１２は、最初に起動したときに、メイン・メモリをチェックし、かつメイン・メモリはワードｉ＋２が不良であるという情報を提供した。この情報は、システムの起動時にメイン・メモリにロードされていた。コンピュータ即ち中央処理装置又はコントローラがＲＯＭにおける位置ｉ＋２に位置するワードに代わって、使用しようとする任意の新しいワードによりキャッシュ・メモリをロードさせるために使用する複数命令を、ＲＯＭ又は外部メモリに格納されているプログラム１２に含ませることは可能である。他の実施例において、外部コントローラ即ち特殊エンジンはキャッシュ・メモリの特殊チェック及び更新の全てを実行することが可能である。これは、ＤＳＰ  ＲＯＭを有するシステムにとって特に適しているが、しかし基本的には、システム・リソースをアクセスする又は制御する能力を有していない、又はほとんど有していないコプロセッサである。この場合に、主たる制御機構即ちプロセッサは、ＲＯＭにおける不良命令又はデータについてチェックを実行して、キャッシュにデータ又は命令を格納することが可能である。
【００１８】
ここで説明した場合では、単なる１不良命令が存在した。しかしながら、上で説明したように、ＲＯＭのセクション全体が置換を必要とするときは、全置換ルーチンを命令キャッシュにロードすることが可能であり、又は単なる１分岐命令を複数命令を含む別のメモリ内のどこか他の位置に命令の流れを継続させるキャッシュに格納することである。新しい命令の完了時に、ＲＯＭ内の良コードへ返すためにリターン分岐が用いられる。更に、前記議論は、全て不良命令に関連していたが、同一の技術は、ＲＯＭに格納された不良データをデータ又は統合キャッシュにより置換することによって訂正するために使用されてもよいことを理解すべきである。
【００１９】
ＲＯＭ内で大きなブロックのデータを置換する必要があるという好ましくない場合において、先に説明した技術によっては全位置を置換することが困難なことがある。そのような場合の解決方法の変更を以下に示す。使用されるプログラミング技術では、ＲＯＭに格納されたインデックス・ポインタによりデータ領域にインデックスを使用するべきである。インデックス・ポインタにより指示されたＲＯＭ内のデータを置換する必要がある場合、全ブロックに対して１つのデータ参照、インデックスのみを置換する必要がある。この置換は前述のように実行されることができる。
【００２０】
図２は図１に示した格納されたプログラム１２の処理を示すフロー・チャートである。前述のように、プログラム１２をＲＯＭ内に組み込む代わりに、更に、分離されたＲＯＭ又は格納されたプログラム用の他のソースが設けられてもよい。プログラムが処理を開始した後、外部ソース６１に接続する。前述したように、外部ソースは、好ましくは、プログラムを格納するチップ外のソースである。外部ソースは、ＲＯＭ１０の内容が正しいか又は改訂を必要とするかの内容を表示するための情報を含むように事前に備えられていた。
【００２１】
ステップ６２において、ＲＯＭが改訂を必要とするか否かについての情報を、外部ソースは、格納プログラムに提供する。ＲＯＭが改訂を必要としない場合は、ステップ６６でプログラムが終了する。他方、ＲＯＭが改訂を必要とする場合は、ステップ６３においてシステムが新しい情報を取り出す。ステップ６４において、新しい情報がキャッシュ２０に格納される。この処理は、新しい情報をキャッシュ２０に転送する前に、これをメイン・メモリ４０のような中間位置に格納することを含むものでもよい。最後に、ステップ６５に示すように、ロック・ビット及び有効ビットをセットして、処理を終了する。
【００２２】
以上は本発明の好ましい実施例の説明であった。多くの詳細は本発明の特定的な処理に関連して提供されたが、本発明の範囲は添付する特許請求の範囲により定義されることを理解すべきである。
【図面の簡単な説明】
【００２３】
【図１】本発明の好ましい実施例を示すダイアグラム。
【図２】本発明を実行する際に使用されるソフトウェアのフローチャート。
【符号の説明】
【００２４】
１０  ＲＯＭ
２０  キャッシュ
３０  プロセッサ
４０  メイン・メモリ
５０  外部情報
【図１】
2005063438.tif 000003
【図２】
2005063438.tif 000004
【外国語明細書】
2005063438000001.pdf