(57)【特許請求の範囲】
【請求項１】
メモリ、キャッシュ、変換索引バッファ、および制御回路を含むシステムにおける、キャッシュされた情報へのアクセスおよび観察を防止する方法であって、
前記制御回路によりキャッシュするプライベート情報を生成するステップと、
前記制御回路によりプライベート情報を前記メモリに記憶するステップと、
前記制御回路によりプライベート情報を含む前記メモリ中の位置についての記述子を用いて変換索引バッファを更新するステップと、
前記制御回路によりプライベート情報の選択された部分をロードすべき前記キャッシュ内の選択された位置に強制的にキャッシュ・ミスを起こすステップと、
前記制御回路により変換索引バッファの対応する記述子を使用して、前記メモリからプライベート情報の選択した部分を取り出すステップと、
前記制御回路によりプライベート情報の取り出した部分を、キャッシュ内の選択された位置にロードするステップと、
前記制御回路によりキャッシュ内の選択された位置にあるプライベート情報の選択された部分をロックするステップと、
前記変換索引バッファ内のプライベート情報の選択された部分に対応する記述子をロックするステップと、
を備えた方法。
【請求項２】
前記キャッシュ内の選択された位置が置換カウンタ・ベース値からカウントした置換カウンタと関連付けられ、前記ロックを行うステップが、置換カウンタ・ベース値を、前記キャッシュ内の選択された位置と関連付けられた置換カウンタ・ベース値よりも高い値にリセットするサブステップを含む請求項１に記載の方法。
【請求項３】
前記変換索引バッファを更新するステップが、
プライベート情報を記憶する前記メモリ位置に対する記述子を生成するためのエントリを含む変換テーブルをセットアップするサブステップと、
満たすべき現在の変換索引バッファ・エントリをポイントするように置換カウンタに保存されているポインタを更新するサブステップと、
現在の変換索引バッファ・エントリに強制的にミスを起こすステップと、
前記制御回路により変換テーブルのテーブル・ウォークを実行して、前記メモリ中のプライベート情報と関連付けられた記述子を生成するサブステップと、
テーブル・ウォークで得られた記述子を現在の変換索引バッファ・エントリにロードするサブステップと、
を含む請求項１に記載の方法。
【請求項４】
前記復号された情報の選択部分をキャッシュにロードするステップが、命令キャッシュのキャッシュ・ラインにロードするステップを含む請求項１に記載の方法。
【請求項５】
前記プライベート情報の選択された部分をキャッシュにロードするステップが、データ・キャッシュのキャッシュ・ラインにロードするステップを含む請求項１に記載の方法。
【請求項６】
前記変換テーブルをセットアップするステップが、エミュレートされた変換テーブルをセットアップするステップを含む請求項１に記載の方法。
【請求項７】
安全にすべきプライベート情報を記憶するメモリと、
前記プライベート情報をキャッシュするためのターゲット位置を有するキャッシュ・メモリと、
前記メモリから前記プライベート情報にアクセスするための記述子を記憶する位置を有する変換索引バッファと、
制御回路を有し、
該制御回路は、
前記キャッシュ内のターゲット位置に強制的にミスを起こし、
前記変換索引バッファ中の前記記述子を使用して、前記メモリからプライベート情報を検索し、
検索したプライベート情報を前記キャッシュ内のターゲット位置にロードし、
前記キャッシュ内のターゲット位置中の検索した前記プライベート情報をロックし、
前記変換索引バッファ内の前記記述子をロックする
ように動作可能であり、
前記キャッシュ内のターゲット位置中の前記ライベート情報のロッキングと前記変換索引バッファ内の前記記述子のロッキングは前記プライベート情報を観察から隠す
処理システム。
【請求項８】
前記制御回路が、ターゲット位置をポイントするカウンタを含み、かつ、前記カウンタにロードされたベース値をリセットすることにより、前記キャッシュ内のターゲット位置中に前記プライベート情報をロックするように動作可能である請求項７に記載の処理システム。
【請求項９】
前記制御回路および前記変換索引バッファがマイクロプロセッサの一部を含む請求項７に記載の処理システム。
【請求項１０】
前記キャッシュがマイクロプロセッサの一部を含む請求項９に記載の処理システム。
【請求項１１】
前記マイクロプロセッサがシステムオンチップの一部を含む請求項１０に記載の処理システム。
【請求項１２】
前記キャッシュが命令キャッシュを含む請求項７に記載の処理システム。
【請求項１３】
前記キャッシュがデータ・キャッシュを含む請求項７に記載の処理システム。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、一般には電子機器に関し、より詳細には個人電子機器における情報のプライベート化のための回路、システム、および方法に関する。
【０００２】
（関連技術の説明）
新技術により高度な機能を備えた手ごろな価格のデバイスの製造が可能になったのに伴い、ハンドヘルド型の個人電子機器が一般に普及しつつある。このようなデバイスの１つは携帯型のデジタル・オーディオ・プレーヤであるが、これはデジタルのオーディオ・データをダウンロードし、そのデータを読み出し／書き込み可能なメモリに記憶し、ユーザの要求に応じてそのデータをオーディオに変換する。デジタル・データは、ＭＰＥＧ  Ｌａｙｅｒ３、ＡＣＣ、およびＭＳオーディオ・プロトコルを含むいくつかの形態のいずれかでネットワークからダウンロードされ、またはコンパクト・ディスクなどの固定媒体から取り出される。適切なファームウェアによってサポートされたオーディオ・デコーダは、メモリから符号化データを取り出し、対応する復号化アルゴリズムを適用し、符号化データをアナログ形態に変換してヘッドセットやその他の携帯型スピーカー・システムを駆動する。
【０００３】
音楽など著作権で保護されている材料が無許可でダウンロードされるのを防ぐために、個人機器の操作を制御する何らかの手段が望まれる。これは、例えば、関連情報のダウンロードを許可するパスワードやソフトウェア・カーネルの発行を通じて実装することが可能である。パスワードやソフトウェアは、エンド・ユーザによるコピー、配布、および改ざんを防止するために保護しなければならない。さらに、オーディオ・デコーダは独自のファームウェアから操作することも可能なので、そのようなファームウェアもコピーや改ざんから保護しなければならない。
【０００４】
要するに、必要とされるのは、個人デジタル機器中の情報を保護するための方法、回路、およびシステムである。この目的のためには、そうした情報を保護する能力は、主要な処理チップの内部のメモリであろうと外部のメモリであろうと情報が機器のどこに記憶されるかに依存するべきではない。さらに、セキュリティを実装することにより、使用可能なメモリ空間など、より直接的に処理動作に使用することのできる資源が浪費されないことが好ましい。また、セキュリティの方法およびハードウェアは、幅広い各種のシステム構成に適用できることが好ましい。
【０００５】
（発明の概要）
本発明の原理によると、情報を処理するための命令セットに応答して動作する中央演算処理装置を含むシステムが開示される。インタフェースが含まれ、これはシステムの一部を形成する選択された回路への外部装置からのアクセスを提供する。不揮発性のプログラマブルなセキュリティ要素のセットがインタフェースの動作を選択的に使用可能および使用不能にすることにより、情報を処理するためのプライベートな環境を提供する。本発明の原理は、特に、個人デジタル機器中の情報をプライベート化する能力を提供する。この原理は、利用可能なメモリ空間など、より直接的に処理動作に使用することのできる処理資源を浪費しないような方式で実装することができる。さらに、この原理は幅広い各種のシステム構成に適用することができ、主要な処理チップの内部にあるメモリ内であっても、外部のメモリ内であっても、機器中のどこにプライベートな情報が記憶されるかに依存しない。
【０００６】
本発明、およびその利点をより完全に理解できるように、添付の図面と併せて以下の説明を参照する。
【０００７】
（好ましい実施形態の説明）
本発明の原理およびその利点は、図１〜１７に示す実施形態を参照することにより最もよく理解することができるが、これらの図面中同じ番号は同じ部分を表す。
【０００８】
図１Ａは、本発明の原理を実施する集積回路１００のハイ・レベル機能ブロック図である。集積回路１００は、例えばＣｉｒｒｕｓ  Ｌｏｇｉｃ  ＥＰｘｘ集積回路などである。集積回路１００は、特に携帯情報端末、電子手帳、双方向ページャを含む複数の消費者向けおよび産業用のハンドヘルド情報機器に利用することができ好都合である。具体的には、集積回路１００は、電池式のインターネット・オーディオ・デコーダでオーディオ処理を実行するように構成することができる。
【０００９】
本発明の原理を有利に適用することのできるこの他２つの例示的システムを図１Ｂおよび１Ｃに示し、下記でさらに説明する。
【００１０】
図２はあるシステム構成による集積回路を示し、この図は集積回路１００の各種の機能ブロックの入出力信号（ポート）を説明する際に参照する。
【００１１】
集積回路１００は、英国ケンブリッジのＡＲＭ社から入手可能なＡＲＭ７２０Ｔデータ・シートに記載されるＡＲＭ７２０Ｔプロセッサ１０１を中心として構築される。一般に、プロセッサ１０１は、中央演算処理装置（ＣＰＵ）コア１０２、８キロバイト・キャッシュ１０３、メモリ管理ユニット（ＭＭＵ）１０４、および書き込みバッファ１０５を含み、それぞれについては下記でさらに詳しく説明する。代替実施形態では、ＡＲＭ９２０プロセッサを使用してもよいことに留意されたい。
【００１２】
ＣＰＵ１０２は、縮小命令セット・コンピュータ（ＲＩＳＣ）アーキテクチャに基づく３２ビット・マイクロプロセッサである。関連する８キロバイト・キャッシュ１０３は、混合型の命令／データ・キャッシュ（ＩＤＣ）であり、１６バイト（４ワード）のライン５１２個からなる４ウェイ・セットアソシエイティブ・キャッシュとして編成される。
【００１３】
ＭＭＵ１０４は、変換索引バッファ（ＴＬＢ）、アクセス制御ロジック、および変換テーブルウォーキング・ロジックを含む。ＭＭＵ１０４の主要機能は、仮想アドレスの物理アドレスへの変換と、メモリ・アクセスの制御である。ＭＭＵ１０４は、従来の２レベルのページ・テーブル構造もサポートする。一般に、ＴＬＢは６４個の変換済みのエントリをキャッシュし、関連付けられたアクセス制御ロジックへの変換を提供する。仮想アドレスによりＴＬＢ中の変換済みエントリにヒットがあった場合は、アクセス制御ロジックが、そのアクセスを許可するかどうかを決定する。アクセスが許可された場合は、ＭＭＵ１０４はそれに対応する物理アドレスをＴＬＢキャッシュから出力する。反対にアクセスが許可されない場合、ＭＭＵ１０４はＣＰＵ１０２に中止を実行するように通知する。仮想アドレスの結果ＴＬＢキャッシュにヒットがない（ミス）場合は、変換テーブル・ウォーキング回路が、物理メモリ中の変換テーブルから必要な変換情報を取り出す。この変換情報は、ＴＬＢキャッシュの置換用のポイントまたはエントリに書き込まれる。これによりアクセス制御ロジックはアクセスを許可するか否かを決定することができる。
【００１４】
書き込みバッファ１０５は、最高で８ワードのデータと４つの独立アドレスをバッファリングするのに使用される。これが使用可能になっている際、ＣＰＵ１０２は、外部クロックを使用してデータまたは命令を書き込みバッファ１０５に書き込み、命令の実行に戻る。書き込みバッファ１０５は、これと並行して内部データ・バス１０６にデータを書き込み、内部アドレス・バス１０７にアドレスを書き込むことができる。
【００１５】
３．６８６４ＭＨｚの水晶１０９によって駆動されるオンチップの位相同期ループ（ＰＬＬ）１０８は、クロックをプロセッサ１０１に提供するためにあるモードで使用される。ＡＲＭ７２０Ｔを使用する実施形態では、主要な（ＣＰＵ）クロックは、１８．４３２ＭＨｚ、３６．８６４ＭＨｚ、４９．１５２ＭＨｚ、または７３．７２８ＭＨｚのいずれかにプログラムすることができる。（ＰＬＬ１０８は、可能な最高のＣＰＵクロック周波数の２倍、すなわち１４７．４５６ＭＨｚで動作することが好ましい。）ＣＰＵのクロック周波数を３６．８６４ＭＨＺに選択した場合、内部データ・バス１０６および内部アドレス・バス１０７もおよそ３６ＭＨｚのクロックで動作する。３６ＭＨｚを超えるＣＰＵクロック周波数の場合は、プロセッサ１０１のみがその周波数以上のクロック速度で動作し、内部データ・バス１０６および内部アドレス・バス１０７は３６ＭＨｚの速度でクロック制御される。ＣＰＵのクロック周波数は、システム制御レジスタＳＹＳＣＯＮ３に２ビットのレジスタ・フィールドをプログラムすることによって選択する。（集積回路１００の内部レジスタのリストを表１として提供する。これらレジスタの完全な説明は「Ｃｉｒｒｕｓ  Ｌｏｇｉｃ  ＥＰ７２１１  Ｐｒｅｌｉｍｉｎａｒｙ  Ｄａｔａ  Ｓｈｅｅｔ」から得られる。この文献は参照により本明細書に組み込む。
【００１６】
集積回路１００は外部クロック入力も含み、これにより実質的にすべてのオンチップ回路を第２のクロック・モードで駆動させるために１３ＭＨｚの外部クロックを入力することが可能になることに留意されたい。図４Ａおよび４Ｂに示すように、ピンＣＬＫＥＮでクロック・イネーブル信号がアサートされると、外部クロックはピンＥＸＰＣＬＫを駆動させる。図４Ａは集積回路１００が待機状態に入る場合を示し、図４Ｂは待機状態を終了する場合を示す。（待機状態については下記でさらに説明する。）
【００１７】
発振器１１０は、３２ビットの実時間クロック・ジェネレータ（ＲＴＣ）１１２を駆動するのに使用される１ヘルツ・クロックを生成するのに使用される。ＲＴＣ１１２は、３２ビットの出力マッチ・レジスタに書き込まれ、ここから読み出され、またこれを含むことができる。出力マッチ・レジスタは、ＲＴＣの時間が事前に決められた特定の時間と一致したときに割込みを発行することを可能にする。ＲＴＣ１１２は、プログラマブルなＬＥＤフラッシャ（図示せず）の駆動にも使用される。
【００１８】
さらに、集積回路１００は、１対のオンチップのタイマ・カウンタ１１３を含む。各タイマ・カウンタは独立しており、１６ビットの読み出し／書き込み可能なデータ・レジスタを含む。所与のカウンタは所望の値にロードされ、事前に選択されたクロックに応答して減分される。タイマ・カウンタが下位桁あふれを起こす（すなわちゼロに達する）と、適切な割込みが生成される。タイマ・カウンタ・レジスタはいつでも読み出すことができる。これらタイマのクロック周波数は、システム制御レジスタＳＹＳＣＯＮ中の対応するビットに書き込むことによって選択することができる。例えば、ＰＬＬ１０８が内部クロックをソースとする場合、タイマ・カウンタ１１３は５１２ｋＨｚおよび２ｋＨｚの速度を使用することができる。外部ソースからの１３ＭＨｚクロックを使用する場合は、５４１ｋＨｚおよび２．１１５ｋＨｚのクロックを利用することができる。さらに、システム制御レジスタＳＹＳＣＯＮ２中のビットを設定することによって可能になる、２６で除算を行う回路を使用することにより、１３ＭＨｚのソースから５００ｋＨｚクロックを生成することも可能である。
【００１９】
各タイマ・カウンタ１１３は、システム制御レジスタＳＹＳＣＯＮ１中のビットを設定またはクリアすることにより、フリー・ランニング・モードまたはプレスケール（ｐｒｅｓｃａｌｅ）・モードで動作することができる。フリー・ランニング・モードでは、所与のカウンタは下位桁あふれを起こす（すなわちゼロに達する）と０ｘＦＦＦＦに折り返し、カウント・ダウンを続ける。プレスケール・モードでは、カウンタが下位桁あふれを起こすと所与のタイマ・カウンタに書き込まれた値が自動的に再ロードされる。プレスケール・モードは、プログラマブルな周波数を作る、ブザーを駆動させる、あるいは周期的な割込みを生成するために使用することができる。
【００２０】
状態制御回路１１４は、集積回路１００を作動状態、アイドル状態、あるいは待機状態にセットすることを可能にする。状態制御回路１１４の動作を表す状態図を図５に示す。作動状態は、通常のプログラム実行状態であり、すべてのクロックおよび周辺ロジックが使用可能になっている。アイドル状態は作動状態に似るが、割込みや、回路を作動状態に戻すためのウェークアップの間ＣＰＵクロックを停止する点が異なる。待機状態では、ＰＬＬ１０８はシャット・ダウンされるが、水晶１１１と発振器１１０、およびＲＴＣ回路１１２は稼動状態に保たれる。待機状態中には、パワー・ダウンした周辺機器が電流を消費するのを防ぐために、外部のアドレス・バスおよびデータ・バスも動作を低下させる。集積回路１００は、最初に電源を投入した際、あるいはコールド・リセット中には強制的に待機状態に置かれ、この状態は外部からのウェークアップ指示によってのみ終了することができることに留意されたい。
【００２１】
電源管理は、状態制御回路１１４以外にも電源管理制御ブロック１１５を通じても行われる。各状態における集積回路１００の各種機能ブロックの状態を表１２に示す。電源管理回路１１５は、外部の電力供給ユニット２０１からアクティブ・ローの電源異常信号ＰＷＲＦＬを受け取ると、集積回路１００を待機モードに置く。集積回路１００を外部のＤＣ電源２０２によって駆動させる場合、外部電源感知入力信号ＥＸＴＰＷＲをアクティブ・ローにする。電池２０３を使用する場合は、ＢＡＴＯＫピンがアクティブ・ハイであるとメイン・バッテリが正常であることを示す。この信号の立ち下がりによりＦＩＱ（高速割込み要求）が生成され、待機状態でこのピンの信号がロー・レベルになるとシステムの起動が禁止される。新規電池感知信号ＢＡＴＣＨＧは、新しい電池が必要であることを示す。電池の電圧が「電池なし」の閾値を下回ると、この入力がアクティブ・ローになる。集積回路１００に電力を供給する電池は、例えば小売り消費者に広く流通する１つまたは複数の標準的な単３電池でよい。
【００２２】
プログラムの実行中に予期しないイベント（すなわち割込みやメモリ障害）が起こった際は、通例、例外が生成される。複数の例外が生じると、固定された優先順位システムに作用する割込みコントローラ１１６が例外にサービスする順序を決定する。
【００２３】
集積回路１００は２つの割込みタイプ、すなわち割込み要求（ＩＲＱ）と高速割込み要求（ＦＩＱ）に対応する。ＦＩＱは、ＩＲＱよりも高い優先度を有する。同じタイプの割込みが２つ以上同時に発生したときには、ソフトウェア内で競合を解決する。表２Ａ〜２Ｃは好ましい割込みの割り当てを示す。表中のＩＮＴＭＲ１とＩＮＴＳＲ１はそれぞれ高速割込みマスク・レジスタと高速割込み状態レジスタであり、ＩＮＴＭＲ２とＩＮＴＳＲ２はそれぞれ第２割込みマスク・レジスタと第２割込み状態レジスタであり、ＩＮＴＭＲ３とＩＮＴＳＲ３は第３割込みマスク・レジスタと第３割込み状態レジスタである。同じグループ（ＩＲＱまたはＦＩＱ）から２つの割込みを受け取った場合、それらにサービスする順序はソフトウェア中で解決することが好ましいことに留意されたい。
【００２４】
一般に、割込みコントローラ１１６は以下の要領で動作する。外部または内部の割込みを行うデバイスが適切な割込みをアサートする。対応する割込みマスク・レジスタで適切なビットがセットされると、割込みコントローラ１１６によってＦＩＱまたはＩＲＱがアサートされる。割込みが許可される場合、プロセッサ１０１は該当するアドレスにジャンプする。すると割込みディスパッチ・ソフトウェアが、対応する割込み状態レジスタを読み出して割込み要因を確定し、該当する割込みサービス・ルーチン・ソフトウェアを呼び出し、そのソフトウェア・ルーチンが、割込みを行うデバイスに固有の何らかのアクションによって割込み要因をクリアする。割込みサービス・ルーチンは、次いで割込みを再び許可し、他に保留中の割込みがあればそれを同様にサービスすることができる。他のすべての外部割込み要因は、対応するサービス・ルーチンが実行を開始するまでアクティブな状態に保持される。
【００２５】
表３に、外部割込みの待ち時間を示す。作動状態で、プロセッサ１０１は、各命令を実行した後にそのＦＩＱ入力およびＩＲＱ入力がロー・レベルであるかを調べる。したがって、割込み条件を最初に検出してから現在の命令を完了するまでにかかる時間量に直接関連する割込み待ち時間があることになる。待機状態では、待ち時間は、システム・クロックがシャット・ダウンされているかどうか、およびシステム制御レジスタ中の制御ビットＦＡＳＴＷＡＫＥがセットされているかどうかによって決まる。上記で指摘したように、ＰＬＬ１０８は待機状態では常にシャット・ダウンされる。ＦＡＳＴＷＡＫＥビットをクリアした場合、待ち時間は０．１２５秒から０．２５秒の間である。ただし、このビットをセットした場合は、待ち時間は２５０マイクロ秒から５００マイクロ秒の間になる。外部クロックを使用し待機中にそれに使用不可にした場合も、待ち時間は０．１２５秒から０．２５秒の間になり、発振器の安定化を図る。外部クロックを使用不可にしない場合は、待ち時間は数マイクロ秒まで短縮することができる。割込みにより、集積回路１００がアイドル状態を終了することも可能である。この場合は、ＣＰＵクロックを再び開始させなければならず、さらに、上記のように割込みに対するサービスは命令の実行のために遅らせることができる。
【００２６】
図の実施形態では、集積回路１００を初期化するための命令セットを保持するオンチップ・ブートＲＯＭ１１７が提供される。オンチップ・ブートＲＯＭは、オンチップＳＲＡＭ１１８にダウンロードされる、受信した２０４８バイトのシリアル・データに、下記でさらに説明するＵＡＲＴ１も設定する。データがＳＲＡＭ１１８にダウンロードされると、プロセッサはＳＲＡＭの開始部にジャンプすることにより命令の実行を続けることができる。好都合なのは、この構成により、集積回路１００を使用するデバイスの製造中にコードをダウンロードしてシステム・フラッシュ・メモリをプログラムすることができる点である。ユーザは、オンチップＲＯＭ１１７からのブートか、またはポートＣＳ［０］に接続された外部メモリからのブートを選択できることに留意されたい。具体的には、ピンＭＥＤＣＨＧにおける信号がローである場合、ブートはオンチップＲＯＭ１１７から行われ、このピンにハイの信号が印加されると外部メモリからブートを行うことが必要となる。オンチップ・ブートＲＯＭからのブートの作用は、内部ですべてのチップ・セレクト信号を復号した場合の逆になることに留意されたい。この機能を表５Ａに示し、通常の反転していないチップ・セレクト復号を表５Ｂに示す。さらに、ブートは、表４に従って幅を選択することのできるブート・デバイスの幅を用いて、外部メモリから行うことができる。
【００２７】
ＡＲＭ７２０Ｔプロセッサは、４ギガバイトのアドレス空間を有する。図の実施形態では、集積回路１００は、このアドレス空間の下位の２ギガバイトをＲＯＭ／ＲＡＭ／フラッシュおよび拡張空間のために使用する。さらに０．５ギガバイトをＤＲＡＭに使用し、残りの１．５ギガバイト、内部レジスタについては８Ｋ未満は未使用である。
【００２８】
メモリおよびＩ／Ｏ拡張インタフェースは、外部の拡張メモリ２０４に対する６個の個別の線形のメモリまたは拡張セグメントをサポートする。他の２つのセグメントを、オンチップＳＲＡＭおよびＲＯＭ専用とする。各セグメントのサイズは２５６メガバイトである。６セグメントのいずれも、従来のＳＲＡＭインタフェースをサポートするのに使用することができる。さらに、各セグメントは個々に８ビット、１６ビット、または３２ビット幅にプログラムすることができ、これにより、ページ・モード・アクセスをサポートし、非連続アドレスの場合は１から８の待ち状態から実行し、バースト・モード・アクセスの場合は０から３の待ち状態から実行することができる。ゼロ待ち状態の逐次的機能により、集積回路１００がバースト・モードＲＯＭとのインタフェースをとることが可能になる。オンチップＲＯＭの空間が完全に復号されるのに対し、完全なＳＲＡＭアドレス空間が完全に復号されるのは、外部のＬＣＤを駆動させるのに使用されるビデオ・フレーム・バッファの最大サイズ（最高で１２８キロバイト）までであることに留意されたい。
【００２９】
チップ・セレクト信号ＮＣＳ４およびＮＣＳ５を使用して、２つのＰＣ  Ｃａｒｄカード２０５とのインタフェースを確立するために、拡張セグメントのうち２つを確保することができる。外部のＰＣカードとのインタフェースは、Ｃｉｒｒｕｓ  Ｌｏｇｉｃ  ＣＬ−ＰＳ６７００ＰＣカード・スロット・ドライバ２０６を通じて行うことが好ましい。メモリをセグメント化することにより、異なるタイプのアクセスを行うことが可能になる（すなわち属性、入出力、および共通のメモリ空間。）
【００３０】
拡張制御ブロック１１９へのＥＸＰＣＬＫポートは、１３ＭＨｚモードおよび１８ＭＨｚモードにおけるＣＰＵクロックと等しい拡張クロックを出力し、これは、集積回路１００が３６ＭＨｚ、４９ＭＨｚ、または７０ＭＨｚモードで動作する場合には、３６．８６４ＭＨｚの速度を有する。（ＥＸＰＣＬＫポートは、上記の１３ＭＨｚモードではクロック入力として使用される。）ＥＸＰＲＤＹピン（Ｅｘｐａｎｓｉｏｎ  Ｐｏｒｔ  Ｒｅａｄｙ）は、バス・サイクルを延長し、待ち状態を挿入するために外部の拡張デバイスによってローに置かれる。チップ・セレクト信号ＣＳ［０：３］はＳＲＡＭの拡張に使用され、一方チップ・セレクト信号ＣＳ［４：５］はメモリ拡張またはＰＣカード選択の両方に使用することができる。書き込みストローブＷＲＩＴＥは、拡張デバイスからの読み出し中はローになり、拡張デバイスへの書き込み中はハイになる。ワード／ハーフワード・ビット（２）は、集積回路１００からの書き込み中に、アクセス・サイズがワードか、ハーフワードか、またはバイト単位かを外部デバイスに示す。ＤＲＡＭコントローラ１２０は、最高でＤＲＡＭの２バンク２０７へのプログラマブルな１６ビットまたは３２ビット幅のインタフェースを提供し、各バンクは２５６メガバイトまでの記憶容量を有する。ＤＲＡＭバンクは、市場に流通する複数種のＤＲＡＭのいずれでもよく、これには従来型のＤＲＡＭ、同期ＤＲＡＭ（ＳＤＲＡＭ）、ＥＤＯＤＲＡＭ（Ｅｘｔｅｎｄｅｄ  Ｄａｔａ  Ｏｕｔ  ＤＲＡＭ）、ファースト・ページ・モードＤＲＡＭ、およびＤＤＲＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ＤＲＡＭ）が含まれる。さらに、これらのＤＲＡＭは、集積回路１００が上記の待機状態に入ると低電力状態に置かれるセルフリフレッシュ・タイプでもよい。２バンクをサポートするために、４つの列アドレス・ストローブＣＡＳ［０：３］とともに２つの行アドレス・ストローブＲＡＳ［０：１］を生成することができる。出力イネーブル信号ＭＯＥは、ＤＲＡＭ、ＲＯＭ／ＳＲＡＭ／フラッシュ、または拡張出力のイネーブルのために使用される。書き込みイネーブル信号ＮＷＥは、同じ外部デバイス・セットに使用される。また、ＤＲＡＭコントローラはプログラマブルなリフレッシュ・カウンタを含み、そのリフレッシュ周期はリフレッシュ周期レジスタ（ＤＲＦＰＲ）を使用して制御される。
【００３１】
好ましい物理ＤＲＡＭのアドレス指定を表６に示す。表７および８は、３２ビットＤＲＡＭおよび１６ビットＤＲＡＭのメモリ・システムについてのＤＲＡＭのアドレス・マッピングを表す。この３２ビットは、３２ビットＤＲＡＭの動作を選択して、各ＲＡＳラインに接続された２つのｘ１６デバイスに基づくものと想定する。このマッピングは、各バンクの２５６メガバイトごとに繰り返される。これらのテーブルのプレースホルダ「ｎ」は、０ｘＣ＋バンク番号に等しい。１６／３２ビットのＤＲＡＭ選択は、システム制御レジスタＳＹＳＣＯＮ２のビットをセットすることによってプログラムする。
【００３２】
フラッシュ・インタフェース１２１は、集積回路１００が、上記のチップ・セレクト信号ＣＳ［０：１］を使用してフラッシュ・メモリとのインタフェースをとることを可能にする。
【００３３】
ＬＣＤコントローラ１２２は、集積回路１００がシングル・パネルの多重型ＬＣＤモジュール２０９と直接インタフェースをとることを可能にするのに必要とされる制御信号をすべて提供する。合計フレーム・バッファ・サイズは、オンチップ・メモリとオフチップ・メモリの両方を使用して、最高１２８キロバイトまでにプログラムすることが可能である。上記のように、オンチップＳＲＡＭ１１８をＬＣＤビデオ・フレーム・バッファとして使用することにより、外部ＤＲＡＭを使用せずにシステムを構築することができる。画面は、ビデオ・フレーム・バッファにマッピングすることが好ましい。
【００３４】
ＬＣＤダイレクト・メモリ・アクセス（ＤＭＡ）エンジン１２３は、フレーム・バッファ・メモリからＬＣＤコントローラ１２２用の表示データをフェッチするために提供される。画素ビット・レート、したがってＬＣＤのリフレッシュ・レートは、１８．４３２〜７３．７２８ＭＨｚモードで動作する場合は１８・４３２ＭＨｚ〜５７６ｋＨＺにプログラムすることができ、１３ＭＨｚクロックにより動作する際は１３ＭＨｚ〜２０３ｋＨＺにプログラムすることができる。
【００３５】
集積回路１００は、１対の汎用非同期送受信（ＵＡＲＴ）インタフェース１２４および１２５を含む。これらの非同期ポートは、例えば１対のＲＳ−２３２トランシーバ２１０との通信に使用することができる。各ＵＡＲＴ１２４／１２５は、集積回路１００がＰＬＬ１０８で生成されるクロックによって動作する場合は、最高で毎秒１１５．２キロビットのデータ転送速度をサポートすることができる。集積回路１００が１３ＭＨｚの外部クロック・ソースによって駆動される場合、生成することが可能なＵＡＲＴのビット・レートには、９．６Ｋｂｐｓ、１９．２Ｋｂｐｓ、３８Ｋｂｐｓ、５８Ｋｂｐｓ、および１１５．２Ｋｂｐｓが含まれる。
【００３６】
ＵＡＲＴ１２４／１２５はどちらも、対応する送信（ＴＸ）ピンを駆動させる１６バイトの送信ＦＩＦＯと、専用の受信（ＲＸ）ピンからデータを受信するための１６バイトの受信ＦＩＦＯを含む。ＲＸ割込みは、所与のＲＸ  ＦＩＦＯが半分満たされるか、またはそのＦＩＦＯがそれ以上の文字を受け取らず、３文字長タイムよりも長く非空である場合にアサートされる。ＴＸ割込みは、所与のＴＸ  ＦＩＦＯバッファが半分空の状態に達すると必ずアサートされる。
【００３７】
ＵＡＲＴ１２４（ＵＡＲＴ１）は、ＲＸポートとＴＸポートに加えて、３つのモデム制御信号ＣＴＳ、ＤＳＲ、およびＤＣＤも受信することができる。この他のモデム制御ＲＩ入力および出力モデム制御信号ＲＴＳおよびＤＴＲは、下記でさらに説明するＧＰＩＯポート１２９を使用して実装することができる。ＵＡＲＴ１に対するモデム状態割込みは、これらのモデム制御ビットのいずれかが変化すると生成される。
【００３８】
ＵＡＲＴの動作とライン速度は、ＵＡＲＴビット・レートと、ライン制御レジスタ（ＵＢＬＣ１およびＵＢＬＣ２）を通じてプログラムすることができる。また、ＦＩＦＯの４つは１バイトの深さになるようにプログラムすることもできる。各バイトを受け取る際に検出されるフレーミング・エラー・ビットとパリティ・エラー・ビットは、１１ビット幅レジスタから読み出すこともできる。
【００３９】
集積回路１００は、ＵＡＲＴ１２４の出力時にＩｒＤＡ（赤外線データ協会）ＳＩＲプロトコルによる後処理段階１２６も含む。集積回路１００は、赤外線発光ダイオード（ＬＥＤ）と光ダイオード（図２のブロック２１１としてまとめて示す）への接続の入力部を駆動させるピンを含む。ＳＲＩエンコーダ１２６は、ＵＡＲＴ１のＴＸポートおよびＲＸポート中へと切り替えられ、上記の信号が赤外線インタフェースを直接駆動することができる。
【００４０】
集積回路１００はさらに、ＳＰＩ／Ｍｉｃｒｏｗｉｒｅマスタ・モード１２８ＫｂｐｓＡＤＣインタフェース１２７、およびシリアル・インタフェース１２８を含み、後者は図６にさらに詳細に示す。デジタル・オーディオ・ポートの好ましいシリアル・ピン割り当てを表１０に示す。ＳＰＩインタフェース１（ＡＤＣインタフェース）は、外部のアナログ／デジタル変換器２１２およびデジタイザ２１３との通信に使用することができる。シリアル・インタフェース・ブロック１２８は、マスタ／スレーブ・モードのＳＢＩ／Ｍｉｃｒｏｗｉｒｅ（ＳＳＩ２）インタフェース６０３、デジタル・オーディオ・インタフェース（ＤＡＩ）６０１、およびコーデック・インタフェース６０４を含み、これらはすべてマルチプレクサ６０２によって１セットの外部インタフェース・ピン上に多重化される。選択されたインタフェースは、図２のブロック２１４中の対応する回路を駆動させる。多重化は、システム制御レジスタ中の対応するフィールドをプログラムすることによって制御される。利用可能なシリアル・インタフェースのオプションの一覧を表１１に提供する。
【００４１】
ＡＤＣインタフェース１２７は、デフォルト・モードでは、ＭＡＸＩＭ、ＭＡＸ１４８／９周辺装置などのＳＳＩまたはＭｉｃｒｏｗｉｒｅ互換デバイスと互換性がある。ＡＤＣインタフェース１２７は、共通のＲＦＳ／ＴＦＳ線としてＮＡＤＣＣＳを使用して、アナログ・デバイスＡＤ７１８８／１２チップなどのデバイスともインタフェースをとることができる。集積回路１００がＭＡＸ１４８／９およびＡＤ７８１１／２を駆動する際の例示的なタイミング図を、それぞれ図７Ａおよび７Ｂとして提供する。例示的なＩ2Ｓインタフェースを図８に示す。
【００４２】
ＡＤＣインタフェース１２７のクロック出力周波数も、システム制御レジスタを使用して設定することができる。１８．４３２〜７３．７２８ＭＨｚの動作モードの場合、ＡＤＣクロック（ＡＤＣＣＬＫ）は、４ＭＨｚ、１６ＭＨｚ、６４ＭＨｚ、または１２８ＭＨｚに設定することができる。集積回路１００が外部で生成される１３．０ＭＨｚのクロックに応答して動作する場合、ＡＤＣクロックは４．２ｋＨｚ、１６．９ｋＨｚ、６７．７ｋＨｚ、または１３５．４ｋＨｚに設定することができる。サンプル・クロックＳＭＰＣＬＫは、常にシフト・クロック（ＡＤＣＣＬＫ）周波数の２倍の速度で動作する。利用可能なＡＤＣ周波数のオプションを表１２に示す。
【００４３】
ＡＤＣのシリアル出力ＡＤＣＯＵＴは、ＳＹＮＣＩＯレジスタにセットされたビットに応じて、８ビットまたは１６ビットのシフト・レジスタによって供給される。ＡＤＣのシリアル入力チャネルＡＤＣＩＮは、１６ビットのシフト・レジスタに取り込まれる。ＡＣＤクロックの同期パルスは、出力シフト・レジスタへの書き込みによってアクティブ化される。転送中に、システム状態フラグ・レジスタ中のＳＳＩＢＵＳＹ（同期シリアル・インタフェース）ビジー・ビットがセット    。転送が完了し、１６ビットの読み出しシフト・レジスタ中に有効なデータがあると、ＳＳＥＯＴＩ割込みがアサートされ、ＳＳＩＢＵＳＹビットがクリアされる。サンプル・クロックＳＭＰＣＬＫは単独でイネーブルされる。
【００４４】
デジタル・オーディオ・インタフェース５０１は、図９に示すようなＣＤ品質のＡ／ＤおよびＤ／Ａ変換器へのインタフェースを提供する。（ＤＡＩはＩ2Ｓのサブセットである。）１６ビットのステレオ・デジタル・オーディオの１２８ビット・フレーム、オーディオ・サンプリング周波数で、個別の送信線および受信線により。各フレームは、右チャンネルの１６ビットと、左チャンネルのオーディオ・データの１６ビットのみを含むことに留意されたい。残りのビットはゼロにセットされる。
【００４５】
図１０は、ＤＡＩ６０１の動作を表す例示的なタイミング図である。左右クロック（ＬＲＣＫ）は、フレーム同期信号を提供する。シリアル・クロック（ＳＣＬＫ）はビット転送クロックであり、オーディオ・サンプル周波数の１２８倍に固定された速度を有することが好ましい。ＳＤＯＵＴ（ＳＤＡＴＡＯ）およびＳＤＩＮ（ＳＤＡＴＡＩ）はそれぞれ、再生データを外部のＤ／Ａ変換器に送信し、記録データを外部のＡ／Ｄ変換器から受信するために使用される。集積回路１００、外部のＤ／Ａ変換器および／または外部のＡ／Ｄ変換器間のタイミングは、オーバーサンプリングしたクロックＭＣＬＫに基づく。ＭＣＬＫは、サンプリング周波数の２５６倍に固定された速度を有することが好ましい。
【００４６】
非同期シリアル・インタフェース２（ＳＳＩ２）５０３は、フル・マスタ／スレーブ・モードで動作することのできるＳＰＩ／Ｍｉｃｒｏｗｉｒｅインタフェースである。図１０は、マスター／スレーブ方式で動作するように構成された１対の集積回路１００デバイスを表す。好ましい維持データ転送速度は８５．３Ｋｂｐｓであり、この速度は割込み間の周期が十分な長さになることを保証する。割込みは、受信ＦＩＦＯが半分満たされ、送信ＦＩＦＯが半分空になると生成される。スレーブ・モードでは、シリアル・クロック（ＳＳＩＣＬＫ）およびシリアル受信ポート（ＳＳＩＲＸＤＡ）、受信された同期制御ピン（ＳＳＩＲＸＦＲ）および送信同期ピン（ＳＳＩＴＸＦＲ）が入力になり、送信ピンＳＳＩＴＸＤＡが出力になる。マスタ・モードでは、ピンＳＳＩＣＬＫ、ＳＳＩＴＸＤＡ、ＳＳＩＴＸＦＲ、およびＳＳＩＲＸＦＲが出力になり、ピンＳＳＩＲＸＤＡが入力になる。モード選択は、システム制御レジスタのビットをプログラムすることによって行う。
【００４７】
非対称（非平衡）トラフィックおよび連続トラフィックはいずれも、個別の送信制御ラインおよびフレーム同期制御ラインＳＳＴＸＦＲおよびＳＳＩＲＸＦＲを使用してサポートされる。この構成では、受信ノードは、受信したフレーム同期制御信号をアサートした後に８クロックで１バイトのデータを受信し、送信ノードは、独立した送信フレーム同期制御パルスをアサートした後に８クロックで１バイトのデータを送信する。これら２つのインタフェースの動作を表す例示的なタイミング図を、参照として図７Ａおよび７Ｂに提供する。
【００４８】
コーデック・インタフェース６０４は、テレフォニー・コーデックへの直接の接続をサポートする。クロックおよびクロック信号の生成と合わせて、コーデック・インタフェース６０４はパラレルからシリアル、シリアルからパラレルへの変換も実行する。このインタフェースは全二重であり、それに対応する６４Ｋｂｐｓで動作する送信および受信ＦＩＦＯを用いる。許可されている場合は、８バイトが転送されるごとに（すなわちＦＩＦＯが半分満たされる／空になると）、換言すると１ミリ秒の待ち時間で１ミリ秒ごとに、コーデック割込みＣＳＩＮＴが生成される。このタイミングを図８に示すが、図中ＣＤＥＮＲＸとＣＤＥＮＴＸは、それぞれシステム制御レジスタＳＹＳＣＯＮ１中の受信制御ビットと送信制御ビットである。
【００４９】
ＤＡＩ６０１は、図９に示すインタフェース９００などのＩ2Ｓインタフェースをサポートする。この場合は、外部のＡＤＣ９０１および外部のＤＡＣ９０２の両方。クロック・ソース９０３は時間基準を提供する。例示的なタイミング図を図１０に提供する。図９および図１０で、ＭＣＬＫはオーバーサンプリングしたクロックであり、これは通例オーディオ・サンプリング周波数の２５６倍に固定する。ＳＣＬＫはビット・クロックであり、これは通例オーディオ・サンプリング周波数の１２８倍に固定する。ＬＣＬＫはフレーム同期信号であり、通例はオーディオ・サンプリング周波数に固定する。ＳＤＯＵＴは、再生デジタル・オーディオをＤＡＣ９０２に送信するオーディオ・データ出力である。ＳＤＩＮは、ＡＤＣ９０１から記録データを受け取る。
【００５０】
ＳＳＩ１インタフェース６０３は、図１１に示すようなマスター／スレーブ動作をサポートする。このインタフェースは、２つのノード間で全二重のシリアル転送を実行する手段を提供する。データは、クロックおよびフレーム同期信号に応答してバイト単位で転送される。
【００５１】
集積回路１００には、汎用入出力（ＧＰＩＯ）ポート１２９のセットも提供される。図の実施形態では、３つの８ビット・ポートと１つの３ビット・ポートがある。ＧＰＩＯポートは、キーボード・ドライバ２１５とのインタフェースを確立するなどの目的に使用することができる。
【００５２】
ＰＷＭ（Ｐｕｌｓｅｄ  ｗｉｔｈ  ｍｏｄｕｌａｔｏｒ）回路１３０は、外部の電源供給ユニット（ＰＳＵ）サブシステム２０１と協働して動作するＤＣ／ＤＣ２１６コンバータを駆動させるための２つの出力を含む。通例、外部のＤＣ／ＤＣコンバータ出力を監視するコンパレータからの出力に接続される外部の入力ピンは、これらのクロックをイネーブルにするために使用される。集積回路１００が内部のＰＬＬ１０８によって動作する場合、ＰＷＭクロックは９６ｋＨｚの周波数を有する。これらの信号の負荷サイクル比は、１：１６から１５：１６までにプログラムすることができる。ＰＷＭ駆動信号のアクティブ・サイクルの感知は、パワー・オン・リセット中に駆動信号の状態をラッチすることによりハイまたはローに設定することができる（すなわち駆動信号をプルアップすると駆動の出力がアクティブ・ローになり、その逆も同様）。この結果、外部のＤＣ／ＤＣコンバータにより、正電圧または負電圧を生成することができる。これらの出力も同様に、制御レジスタ中のビットをクリアすることにより使用不可にすることができる。
【００５３】
集積回路１００のブロック間の通信は、アドバンスト・ペリフェラル・バス１３２およびアドバンスト・ペリフェラル・バス・ブリッジ１３１を通じて確立される。内部データ・バス１０６は３２ビット幅であり、多重化回路１３２を通じて外部デバイスに接続することができる。内部アドレス・バス１０７は２８ビット幅であり、多重化回路１３３を通じて外部デバイスと通信することができる。ＩＥＥＥ１１４９．１準拠であるＩＣＥ−ＪＴＡＧ回路１３４は、試験および開発段階におけるバウンダリ・スキャンのために含まれる。また、埋め込みＩＣＥはＡＲＭプロセッサ・コアのデバッグをサポートする。
【００５４】
好ましい実施形態では、集積回路１００の内部レジスタはリトル・エンディアン構成である。ただし、集積回路１００はビッグ・エンディアンの外部メモリ・システムとのインタフェースをとることができる点が有利である。具体的には、ビッグ・エンド・ビットとＣＰＵ１０１のレジスタ・セットによって、外部メモリ中のワードがビッグ・エンディアン形式で記憶されるか、またはリトル・エンディアン形式で記憶されるかが決まる。具体的には、メモリは、ゼロから上へと番号をつけたバイトの線形集合と見なされる。バイト０〜３が最初の記憶ワードを保持し、バイト４〜７が２番目の記憶ワードを保持し、以下同様に続く。リトル・エンディアン方式の場合は、ワード中の最も番号の低いバイトをそのワードの最下位バイトと見なし、最も番号の高いバイトが最上位ワードになる。したがって、リトル・エンディアン・システムにおけるバイト・ゼロは、データ・ライン７〜０に接続される。ビッグ・エンディアン方式では、ワードの最上位バイトが最も番号の低いバイトに記憶され、最下位バイトが最も番号の高いバイトに記憶される。したがって、ビッグ・エンディアン・システムにおけるバイト・ゼロは、データ・ライン３１〜２４に接続される。図の実施形態では、ロード命令および記憶命令のみをエンディアン方式で行う。表１３および１４は、読み出し（表１３）および書き込み（表１４）両方についての集積回路１００の動作を表す。ＤＲＡＭバンクへの列アドレス・ストローブ・ラインＮＣＡＳ［３：０］は、エンディアン方式に関係なく常に同じバイト・レーンに接続されることに留意されたい。例えば、列アドレス・ストローブ・ラインＮＣＡＳ［０］はデータ・ラインＤ［７：０］と関連付けられ、ＮＣＡＳ［３］はデータ・ラインＤ［３１：２４］に関連付けられる。この結果、リトル・エンディアン・システムでは、ラインＮＣＡＳ［０］は、ＤＲＡＭのバイト０との読み出し／書き込みのためにアサートされ、ビッグ・エンディアン・システムでは、ラインＮＣＡＳ［３］はＤＲＡＭのバイト０にアクセスするためにアサートされる。
【００５５】
集積回路１００は、１セットのプログラマブルなヒューズを含み、これにより各チップに１つまたは複数の一意のＩＤ番号とパスワードを割り当てることができる。プログラマブルなヒューズとそれに関連するレジスタは、セキュリティ・レジスタと、ＡＰＢ１３２から動作するハードウェア・ブロック１３３（図１）内とに配置される。図１Ｄの実施形態に限定すると、ブートＲＯＭ自体はＡＲＭローカル・バス１０７上にあり、アクセス・チェッキングは分割されて、ＡＲＭローカルバス上とＡＲＭローカル／グローバルＡＨＢラッパ内の両方にロジックを有することになる。
【００５６】
好ましい実施形態では、これは２５６個のプログラマブルなヒューズであり、パブリックなヒューズとプライベートなヒューズのセットを含む。プライベート・ヒューズのアドレスおよび値は隠され、それらのヒューズに対応するプライベートなファームウェアだけにアクセスが許可される。非プライベートの環境では、これらのアドレスと値はすべてゼロに戻る。パブリック・ヒューズを表１５に示し、プライベート・ヒューズを表１６に示す。
【００５７】
集積回路１００は、ヒューズされたハミング・コードと、選択されたＩＤに一致するハミング・コードを照合するための埋め込みハードウェアもブロック１３３中に含む。妥当性検査アドレスが読み出されると、ＩＤの値をそのハミング値と突きあわせて確認する。この結果得られる５ビットのコードは、ハミング・コードが一致しない場合はデバッグ情報を提供する（すべてのヒューズが飛んだ場合、またはすべてのヒューズが飛ばない場合）。表１７は、妥当性検査読み出しビットの復号を示す。これにより、ヒューズが飛んだ際に発生しているエラーを検出し、同時にヒューズの値とアドレスへのアクセスが不可能な状態を保持することが可能になるので好都合である。
【００５８】
表１８は、パブリックのＩＤ−ＣＨＫペアの妥当性検査コードを戻すアドレスを提供する。
【００５９】
表１９は、プライベートのＩＤ−ＣＨＫペアの妥当性検査コードを戻すアドレスを提供する。これらのアドレスには、集積回路１００がプライベート・モードで動作している際はファームウェアからしかアクセスすることができず、それ以外の場合は０が読み出される。
【００６０】
ハミング・コード・ジェネレータを十分にテストできるように、ＩＤ−ＣＨＫペアとして選択し妥当性を検査することのできる２つのテスト・レジスタがある。これらレジスタの定義と位置を表２０に提供する。
【００６１】
図１Ｂは、本発明の原理を実施するのに適したチップ１４０における第２のシステムのハイ・レベル機能ブロック図である。この実施形態では、ＭＭＵの他に命令キャッシュとデータ・キャッシュの両方を有するＡＲＭ９２０Ｔプロセッサ１４１を使用する。システム１４１は、集積回路１００とは異なり汎用ＳＲＡＭは含まない。
【００６２】
図１３は、特にＡＲＭ９２０Ｔコアに基づく実施形態の、プロセッサ１４１のより詳細な機能ブロック図である。この実施形態では、利用可能なキャッシュは、命令キャッシュ１３０１とデータ・キャッシュ１３０２の両方を含む。同様に、個別の命令用ＭＭＵ１３０３とデータ用ＭＭＵ１３０４を使用する。命令修正仮想アドレス（ＩＭＶＡ）バス、命令物理アドレス（ＩＰＡ）バス、および命令データ（ＩＤ）バスはそれぞれ３２ビット幅である。同様に、データ修正仮想アドレス（ＤＶＭＡ）バス、データ物理アドレス（ＤＰＡ）バス、およびデータ・データ（ＤＤ）バスも３２ビット幅である。物理アドレスとデータは、ＡＭＢＡバス・インタフェース１３０５を通じてＡＨＢバス１４２と交換される。書き込みバッファ１３０６は、プロセッサ・コアの動作中にインタフェース１３０５を通じてデータをパラレルに交換することを可能にする。キャッシュ１３０２のデータは、ライトバック物理アドレス（ＰＴＡＧ）ＲＡＭ１３０７を通じて出力することができる。
【００６３】
プロセッサコアに不可欠なのはコプロセッサであるが、これはＣＰＵによって発行された仮想アドレスを、図１Ｂに示すＩＭＶＡおよびＤＭＶＡで伝送される、修正された命令およびデータの仮想アドレス（ＭＶＡ）に変換するためのレジスタを含む。具体的には、０〜３２メガバイトのメモリ領域のアドレスの場合、仮想アドレスＶＡは、７ビットのプロセス識別子によって修正されてＶＭＡ＝ＶＡ＋（ＰｒｏｃＩＤｘ３２メガバイト）となり、このプロセス識別子ＰｒｏｃＩＤは読み出しまたは書き込みプロセスの識別子である。
【００６４】
システム１４１は、内部ＡＨＢ（アドバンスト・マイクロコントローラ・バス・アーキテクチャ・ハイスピード・バス）１４２、ならびに内部ＡＰＢ（アドバンスト・ペリフェラル・バス）１４３に基づく。ＡＨＢ／ＡＰＢブリッジ１４４は、ＡＨＢ１４２およびＡＰＢ１４３とのインタフェースをとる。第２ブリッジ１４５は、プロセッサ１４１とＡＨＢ１４２のインタフェースをとる。
【００６５】
ＡＨＢ１４２から動作するデバイスには、グラフィックス・エンジン１４６とラスタ・エンジン１４７がある。一般に、グラフィックス・エンジンは、システムのグラフィック性能を向上するために、プロセッサ１４１からブロック転送や描線などの機能をオフロードする。グラフィックス・エンジン１４６は、Ｗｉｎｄｏｗｓ（登録商標）ＣＥをサポートするために標準的なデバイス非依存ビットマップ（ＤＩＰ）フォーマットを使用することが好ましい。ラスタ・エンジン１４７は、外部のＬＣＤ表示装置、ＣＲＴ表示装置、またはＴＶ表示装置を駆動するために、同期ＤＲＡＭインタフェース１４８を通じて外部のディスプレイ・バッファからのデータをラスタ化するために提供される。
【００６６】
内部ＡＨＢに通じる他のオンチップ・インタフェースには、システム１４１を外部のシステム・バスに結合するインタフェース１４９、外部のＰＣカードとインタフェースをとるためのＰＣＭＩＡ、およびＤＭＡコントローラやラスタ・システムなどのオンチップ回路ブロックをテストするテスト・インタフェース・コントローラ（ＴＩＣ）インタフェース１５１が含まれる。メモリ・インタフェース１５２は、上記の方式と同様の方式で、外部ＳＲＡＭ、フラッシュ、またはＲＯＭと制御信号およびデータを交換することを可能にする。そして、下記でさらに説明するシステムのブートは、少なくとも部分的にブートＲＯＭ５３を使用して行われる。この例では、ブートＲＯＭ１５３はＡＨＢ１４２から動作するが、代替実施形態では複数のグローバル・バスおよびローカル・バスのいずれからも動作することができる。
【００６７】
システム１４０は８チャンネルのＤＭＡエンジン１５４を含み、これはＵＡＲＴなどのオンチップ・リソースによる外部メモリへのアクセスの要求に優先順位をつけ、サービスする。ジョイント・テスト・アクション・グループ（ＪＴＡＧ）ポート１５５は、オンチップ・プロセッサと関連する回路のデバッグをサポートする。また、ユニバーサル・シリアル・バス（ＵＳＢ）コントローラ１５６およびイーサネット（登録商標）・ポート１５７は、直接ＡＨＢから動作する。
【００６８】
複数の周辺デバイスがオンチップに提供され、ＡＰＢ１４３から動作する。システム１４０は中でも特に、ＵＡＲＴ１５８、１５９、および１６０を含む。また、図の実施形態には、１対のＳＰ１インタフェース１６１と１６２、およびＡＣ９７インタフェース１６３が含まれる。実時間クロック（ＲＴＣ）１６５、一般的なタイマー・セット１６６、およびウォッチドッグ・タイマ１６７もこの実施形態に提供される。追加のメモリ・インタフェース、ＥＥＰＲＯＭインタフェース１６８もＡＰＢに結合する。
【００６９】
データの手動入力は、キー・マトリックス・インタフェース１６９に結合された外部のキー・マトリクスか、またはタッチ・スクリーンＡＤＣ１７１およびタッチ・スクリーン・インタフェース１７０とインタフェースをとるタッチ・スクリーンを通じて行うことができる。ＬＥＤ出力１７２も、システム１４０のユーザ・インタフェースに含まれる。
【００７０】
集積回路１００と同様に、システム１４０は、汎用入出力（ＧＰＩＯ）ポートのセット１７３と、割込みコントローラ１７４と、システム制御回路１７６を駆動させるオンチップＰＬＬ１７５とを含む。制御回路は、メモリのリマップおよびシステム一時停止制御回路１７７を含む。フラッシュＶＰＰ制御ブロック１７８は、外部フラッシュの書き込みおよび消去を行うのに必要な電圧を生成する。
【００７１】
図１Ｃは、本発明の原理を適切に適用することのできる別の例示的なシステムオンチップ１８０のハイ・レベル機能ブロック図である。この例では、例えばＡＲＭ７ＴＤＭＩコントローラなどのＣＰＵコア１８１は、ＭＭＵやオンチップ・キャッシュを利用しない。ＣＰＵ１８１は、ローカルＡＨＢバスとローカル／メインＡＨＢインタフェース１８２を介して、ＡＨＢバス１４２と協働して動作する。ＣＰＵ１８１は、メモリ１８３、セキュリティ・ゲート１８４、およびセキュリティ／リセット回路１８５によってサポートされる。セキュリティについては下記でさらに詳細に説明する。
【００７２】
この実施形態では、システム１８０はさらに、グローバル・メモリ１８９、データ・メモリ１９０、およびプログラム・メモリ１９１によってサポートされるデジタル信号プロセッサ（ＤＳＰ）１８６を含む。インタープロセッサ通信レジスタ１９２と、Ｉ2Ｓオーディオ入出力ポート１９３と、アナログＤＡＣサポート回路を使用せずに外部スピーカをＣＤ品質のレベルで駆動させることのできるＰＷＭ回路１９４と、ＤＳＰタイマ／ＳＴＣ１９５は、ＤＳＰペリフェラル・バス１９６を介してＤＳＰ１８６と通信する。これらのデバイスは、ＡＰＢからも動作する。ＡＰＢから動作する周辺デバイスには、ＵＳＢスレーブ・ポート１９７、シリアル・メディア入力用のＳＰＩ１９８、およびＩ2Ｓホスト・ポート１９９が含まれる。
【００７３】
モーション・ピクチャ・エキスパート・グループ（ＭＰＥＧ）オーディオ圧縮規格は、デジタル化されたオーディオ・データの符号化ストリームを復号するプロセスと併せて、ストリームの構文を定義している。オーディオ・アリーナでは、３つのレイヤ、すなわちレイヤＩ〜ＩＩＩがそれぞれ定義される。この説明のために、最も高品質のオーディオ再生を提供するレイヤＩＩＩを考察する。
【００７４】
符号化のプロセスは、１つまたは複数のオーディオ・チャンネルを、３２ｋＨｚ、４４．１ｋＨｚ、あるいは４６ｋＨｚなどの所与のサンプリング・レートでサンプリングすることから開始する。この結果得られるデジタル化ストリームを多相フィルタ・バンクに通し、これにより受信した時間領域のストリームを３２個の周波数サブバンドに分割する。通例、フィルタ・バンクは５０％の重複により一度に６４個の入力サンプルに作用し、３２個の入力時間領域サンプルに対して３２個の周波数領域のサンプルが生成される。
【００７５】
音響心理学モデルを使用して、聴覚マスキングのために人間の耳には聞こえないオーディオ信号部分を除去する。聴覚マスキングは人間の聴覚システムの特徴であり、強いオーディオ信号によって時間的または空間的に近くにある弱いオーディオ信号が知覚できなくなるというものである。さらに、人間の耳が音を区別する能力は周波数に依存する。特定のクリティカルな帯域では、人間の耳は、入ってくる様々なオーディオ成分を精密に区別（ｄｅｌｉｎｅａｔｅ  ｂｅｔｗｅｅｎ）しない。こうしたクリティカルな聴覚帯域を近似させる処理用のサブバンドは、そのサブバンド内の量子化ノイズの可聴度に応じて量子化される。
【００７６】
音響心理学モデルに基づくエンジンは、多相フィルタと並行して動作し、所与の周波数成分と所与の音量に対して利用可能なノイズ・マスキングを決定する。この情報に基づき、多相フィルタからのデータ・ストリーム出力を量子化し、符号化する。レイヤＩＩＩでは、多相フィルタからの３２個のサブバンド出力のそれぞれをウィンドウに通し、これにより、ウィンドウの長さがそれぞれ３６サンプル幅と１２サンプル幅になるように５０％の重複により、ストリームを１８サンプルからなるロング・ブロックか、または６サンプルからなるショート・ブロックに構文解析する。ロング・ブロックは、比較的一定したオーディオ信号成分に対してより優れた周波数分解能を達成するために使用し、ショート・ブロックは過渡部分の分解能を向上させるために使用する。次いで、各サブバンドのブロックを変形離散コサイン変換（ＭＤＣＴ）で処理する。サブバンドの周波数をさらに分割することによりスペクトル分解能を向上して、多相フィルタによって生じたエイリアシングの一部を相殺することができるようにする。
【００７７】
ＭＰＥＧｘのレイヤＩＩＩでは、量子化を非均一にすることにより、量子化の値の範囲にわたる信号対ノイズ比をより一定にする。また、レイヤＩＩＩでは、クリティカルな帯域の幅を近似するスケール因数帯域を利用し、いくつかのＭＤＣＴ係数をカバーする。スケール因数はノイズ割り当ての際に使用され、周波数に依存するマスキング閾値を変え、また基本的に各サブバンドの利得を設定する。さらに、データ圧縮を高めるために量子化したＭＤＣＴ係数にハフマン符号化を行う。最後にビット・リザーバ（ｒｅｓｅｒｖｏｉｒ）」を使用するが、あるフレームを符号化するのに必要なビット数が平均よりも少ない際はこれにビットを提供することができ、あるフレームを符号化するのに必要なビット数が平均よりも多い際にはここからビットを借りることができる。
【００７８】
フレームはヘッダ、ＣＲＣ値、サイド情報、およびメイン・データから形成されるが、フレームのこれら構成要素の相対的位置は必ずしも常に同じ順序ではなく、またストリーム中で隣接するとも限らない。ヘッダには、フレーム同期ビットのセット、ＭＰＥＧのバージョンおよびレイヤ識別子、ＣＲＣ保護ビット、そのフレームが作成された際のビット・レートを示すビット・レート・インデックス、およびオーディオ・データをサンプリングした際の周波数を示すサンプリング・レート周波数インデックスが含まれ、また移送されるデータに関する他の情報が含まれる。
【００７９】
その後、ＭＰＥＧ１のレイヤＩＩＩのビット・ストリームは一般に以下の要領で復号することができる。データは、毎秒所定のフレーム数でデコーダに入力される。各フレームのヘッダ部分中のフレーム同期ビットを検出する。次いで、スケール因数を抽出し、復号する。これに続いて、周波数エネルギを表すハフマン符号化されたメイン・データを復号する。スケール因数を適用し、データを再量子化する。この時ステレオ・データを処理する場合はステレオ・チャンネルを回復し、エイリアシングの低減を行う。逆ＭＤＣＴの操作を行い、それに続き重複逆離散コサイン変換（ＤＣＴ）を行ってデータを時間領域に戻す。ロー・パス・フィルタをかけてＰＣＭサンプルを回復するが、各サンプルは基本的に互いに隣り合う５１２個の時間領域サンプルの加重平均になる。
【００８０】
集積回路１００をＭＥＰＧｘのレイヤＩＩＩデコーダとして構成する場合は、Ｃｉｒｒｕｓ  Ｌｏｇｉｃ  ＣＳ４３Ｌｘｘ  Ｓｔｅｒｅｏ  Ａｕｄｉｏ  ＤＡＣなどのステレオＤＡＣを、ヘッドフォン・セットの駆動のためにデジタル・オーディオ・ポート１２８に結合する。マイクロフォンからデータを入力するために、Ｃｉｒｒｕｓ  Ｌｏｇｉｃ  ＣＳ５３Ｌ３２オーディオＡ／Ｄ変換器などのアナログ／デジタル変換器もこのポートに結合することができる。図１Ｄのこの実施形態は、外部のステレオ・オーディオＤＡＣを用いずにＣＤ品質レベルでヘッドフォンを駆動することが可能なオンチップのＰＷＭ回路を含む。
【００８１】
しばしば、電子製品にバンドルされるソフトウェアやファームウェアの改ざん、複製、またはロジック・アナライザによる調査を防止することが必要とされる。この結果、一定レベルのセキュリティを提供しなければならない。これは例えば暗号化されたパスワードを使用して行われ、製造者に許可を受けたエンド・ユーザが、ソフトウェアやファームウェアのダウンロード、デバッグ、およびアップグレードの目的でシステム・メモリ中の資産にアクセスすることは許可するが、許可されていないエンド・ユーザに対しては同じレベルのアクセスを拒否する。デジタル・オーディオ・プレーヤの文脈では、オンラインの音楽配信業者がこれにより、無許可のダウンロードは少なくともある程度阻止されるという認識に基づき、使用料を支払い、歌曲をダウンロードするのに必要なパスワードを受け取ったエンド・ユーザを許可する信頼感を得ることができる。
【００８２】
一般には、セキュリティ方式が満たさなければならないいくつかの基準がある。第１に、システムは、パワーオン・リセットを行った結果無許可のアクセスを許してはならない。第２に、暗号化されたパスワード、セキュリティ・コード、およびセキュリティ情報が存在するメモリ中の位置に関する情報などのセキュアな情報に、システムの外側から容易にアクセスすることができてはならない。ただし、このセキュアな情報は製造試験段階で確認を行って、通常の製造欠陥に関してはエンド・ユーザ・システムの品質が許容できるものになることを保証しなければならない。最後に、セキュリティ措置が提供されないか、または起動されない場合に、システムの通常動作が期待される方式で進行しなればならない。
【００８３】
本発明の原理は、集積回路１００が上記基準のそれぞれを満たすことを可能にするセキュリティ技術を提供し、好都合である。この技術の１つによると、特定のデフォルト条件または特定命令の動的なアサートに応じて上記のチップ・セレクト信号の復号を逆転させるプロセッサ１０１の能力を使用する。パワーオン・リセット時にチップ・セレクトの復号を逆にすることにより、通常はアクセスが不可能なメモリ空間からセキュリティ・コードを実行することができる。さらに、プロセッサ１０１のこの機能は、プロセッサ１０１が命令を実行しない特定の時間にしか起動することができず、これによりあらゆるセキュリティ侵害の試みを難しくする。
【００８４】
図１２は、本発明の概念に従って集積回路１００をブートする好ましい手順１２００を説明するフロー・チャートである。プロセッサ１０１はＡＲＭ７２０ＴプロセッサまたはＡＲＭ９２０Ｔプロセッサであると想定し、また信号名は信号および／またはそれらの命令に基づくものとする。この手順は、ステップ１２０１でパワーオン・リセット（ＮＰＯＲ）信号をアサートすることにより、集積回路１００をパワーオン・リセットすることから開始する。システム中の回路は直ちにすべてのハードウェアとデバッグ機能を使用不可にし、すべてのセキュリティ要素（例えばファームウェア、レジスタ、パスワード）を外部からの調査から隠す（ステップ１２０２）。このステップにより、少なくともステップ１２０３でセキュリティ・ファームウェア・ルーチンが適所にあり使用可能になっているかどうかを確認するまでは、システムがセキュアであることが保証される。好ましい実施形態では、これはプログラマブルなヒューズ・レジスタを読み出すことによって行われる。
【００８５】
説明のために、セキュリティが提供されない、または不能になっている場合を最初に説明する。ステップ１２０４で、内部ＲＯＭからブートを続けるか、または外部メモリを使用するかを決定する。ＡＲＭプロセッサによる実施形態の場合は、ＮＭＥＤＣＨＧビットを使用して、内部ブート・メモリと外部ブート・メモリのオプションから選択する。ステップ１２０４で、ピンＮＭＥＤＣＨＧの信号がクリアである（すなわちアクティブ・ロー状態である）場合は、集積回路１００のブートは内部ＲＯＭから行われる。この場合は、ステップ１２０５で、デフォルトで内部のブートＲＯＭへのアドレス・マッピングが逆転される。アドレス・マッピングを逆転すると、実行は現在のブートＲＯＭ位置０から行われることになる（ステップ１２０７）。図のこの実施形態では、パワーリセット信号ＮＰＯＲをアサートして、アドレス・マッピングを通常の状態に戻さなければならない。
【００８６】
あるいは、ＮＭＥＤＣＨＧビットがセットされている（すなわちアクティブ・ハイ状態にある）場合は、ブートは外部メモリ（ＲＯＭ／ＥＰＲＯＭ／フラッシュ）から行われる。この場合、チップ・セレクト・マッピングは表５Ａに示すようにセットされ、外部のＣｈｉｐ  Ｓｅｌｅｃｔ０がブート・メモリとして選択される。
【００８７】
次いで、プログラマブルなヒューズ・レジスタの読み出しが、セキュリティ・ルーチンが適所にあり使用可能になっていることを示す場合を考えてみたい。ブートはステップ１２０８で分岐して、セキュリティ手順の実行に進む。
【００８８】
集積回路１００は、ブートおよび／またはセキュリティ・コードの異なるセットに対応するように構成することができる。これは、各ベンダのセキュア情報にはそのベンダ自身のブート／セキュリティ手順によってしかアクセスできない場合でも、集積回路１００が複数のベンダによるブート／セキュリティ用のファームウェアを使用して動作することを可能にするため好都合である。最初に、複数のブート・コードのセットまたはオプションを用いてブート・メモリをプログラムする。これは、内部のブートＲＯＭか、または１つまたは複数の外部メモリ・チップ（ＲＯＭ／ＲＡＭ／フラッシュ）を使用して行うことができる。複数のブート・オプションにより、エンド・ユーザは様々なベンダから入手可能なセキュリティ・ファームウェアの中から選択することができる。
【００８９】
この結果、ステップ１２０９でブート・メモリ内のブート・オプションのうち最初のオプションが識別され、ステップ１２１０でリセット・ベクトルにエイリアスされるが、通例これは第１のオプションについては位置０ｘ００である。所与の実装に必要とされるすべての必要なセキュリティ要素（レジスタ、ファームウェア、Ｉ／Ｏデバイス）は、現在のブート・オプションによって使用可能になり、一方その他のセキュリティ・オプション（実装）はすべて隠された状態に保たれる（ステップ１２１１）。次いで、ステップ１２１２で、選択されたブート・コードをプロセッサで実行して、選択されたセキュリティ・ファームウェア／ソフトウェアの初期化を試みる。
【００９０】
ステップ１２１３でそのブート・コードで呼び出される該当セキュリティ・ファームウェア／ソフトウェアがメモリ中にあった場合、集積回路１００はブートを完了し、ステップ１２１４でそのセキュリティ・ファームウェア／ソフトウェアの監視制御下で、選択されたセキュアな環境で動作する。一方、必要とされるセキュリティ・ファームウェア／ソフトウェアが見つからない場合は、別のブート・オプションを試さなければならない。
【００９１】
ステップ１２１５で最後のセキュリティ・オプションに達さなかった場合は、ブート・コード中の次のセキュリティ・オプションを選択する（ステップ１２１６）。プロセッサに新しいリセット・ベクトルを動的に強制する命令が発行される。この例では、リセット・ベクトルはジャンプしてブート・コード中の２番目のセキュリティ・オプションをポイントする。ステップ１２１８で、処理はステップ１２１１に戻り、ブート・プロセスを再度試みる。図の実施形態では、命令パイプラインは３段であることに留意されたい。この結果、チップ・セレクトを変更する命令の実行前に、プログラム・カウンタを０にリセットする命令がすでに内部ブートＲＯＭからロードされていることになる。ＭＯＶｐｃ，＃０の命令により、プロセッサ・パイプラインをフラッシュし、それによりチップ・セレクトを行う前に数サイクルを行わせる。このプロセス中には、そのチップ・セレクト信号がリマップ・コマンドの実行中に変化するメモリ・リソースに対して他のアクセスは一切許可されない。
【００９２】
このプロセスは、ステップ１２１４で集積回路１００をセキュア動作に入らせるセキュリティ・オプションが見つかるか、またはステップ１２１５で最後のセキュリティ・オプションに達するまで反復する。図の実施形態では、最後のオプションまたはデフォルトのオプションは、ステップ１２１９でブート手順を通常の（セキュアでない）ブートに戻す。ここで、すべてのデバッグ機能が可能になり、ステップ１２２０でセキュリティ機能が隠される。ステップ１２２１で、デフォルトのブートＲＯＭを選択し、ステップ１２２２でプロセッサにリセット・ベクトルを動的に強制する。それでも、代替実施形態では、主要なオプションがすべて使用不可能であった場合でも集積回路１００がなおセキュアな環境で動作できるように、デフォルトのセキュリティ・コードを提供することが可能である。
【００９３】
ＡＲＭ９２０Ｔに基づく集積回路１００による実施形態では、命令およびデータを対応する命令キャッシュおよびデータ・キャッシュ内にロックすることができ、これらはキャッシュ・ミスの際に置換アルゴリズムによる置換の犠牲として選択されない。データ／命令をロックすることにより、対応する情報が直接キャッシュからフェッチされるキャッシュ・ヒットと、好適なキャッシュ・アクセス待ち時間が保証される。さらに、ロックされたキャッシュ内の情報には、キャッシュまたはＴＬＢメモリへの可視性を可能にするＪＴＡＧポートや他のテスト・デバッグ・モードを通じて以外は、集積回路１００の外側からアクセスすることはできない。主に製品の開発と試験の際に使用されるＪＴＡＧポートは、集積回路１００が製造場所を離れると使用不可にすることができる。
【００９４】
キャッシュ・エントリをロックする前に、対応する記述子（物理アドレスと許可）を関連付けられた変換索引バッファ（ＴＬＢ）中にロックして、予測可能なパフォーマンス結果を得なければならない。この例で使用するＡＲＭ９２０Ｔなどの多くのデバイスは、キャッシュに加えて、データと命令両方の変換索引バッファ（ＴＬＢ）を含む。所与の命令またはデータ・フィールドに対して、ＣＰＵは仮想アドレスを生成する。次いで修正された仮想アドレスを対応するＴＬＢに提示し、修正された仮想アドレスのフィールドとＴＬＢ中の比較（タグ）レジスタとを比較する。一致があり、アクセスを許可することができる（これはＴＬＢエントリ中の許可フィールドによって決定される）場合、修正された仮想アドレスのインデックス・ビットと併せて、対応するＴＬＢエントリから戻される物理アドレス・ビットを使用して物理アドレスを生成し、必要に応じてキャッシュまたは外部メモリにアクセスする。一致がない場合は、下記のプロセスを起動してハードウェア内で仮想アドレスを物理アドレスに変換する。
【００９５】
キャッシュ・ラインがロックされると、データ用ＴＬＢおよび命令用ＴＬＢ中の対応するエントリもロックされ、ＴＬＢ更新中の置換の対象から除外される。ＡＲＭ９２０Ｔプロセッサの場合、ＴＬＢのエントリは、ロックされるデータおよび命令のＴＬＢ中の特定のエントリについての識別子を、システム制御プロセッサ・レジスタＣ１５のＴＬＢロック・ダウン・フィールドに書き込むことによってロックする。
【００９６】
図１３のＴＬＢロックダウン手順１３００は、命令用ＴＬＢまたはデータ用ＴＬＢのエントリをロックする１手法である。ステップ１３０１で、保護するデータまたは命令に対応する物理アドレス・ビットおよび許可を含むページ・テーブルをセットアップする。次いで、対象とするＴＬＢ中の少なくとも一部のエントリをフラッシュまたはクリーンして、ロックするコードがすでにＴＬＢレジスタ中に入っていないことを確実にする（ステップ１３０２）。
【００９７】
ＡＲＭ９２０Ｔプロセッサを用いる実施形態では、データ用ＴＬＢと命令用ＴＬＢの両方を６４ラインの単一セグメント中に編成する。置換（犠牲）カウンタは、置換するエントリをポイントする。したがって、ステップ１３０３で、置換カウンタを更新して、ロックされた情報を書き込む次のエントリをポイントさせる。好ましい実施形態では、このプロセスはエントリ０から開始する。
【００９８】
命令用ＴＬＢにはプリフェッチ命令を使用して、修正された仮想アドレスを生成し、ＴＬＢのミスを強制的に起こす（ステップ１３０４）。データ用ＴＬＢの場合は、ロード命令を使用してミスを起こすことができる。ミスが起こった後でページ・テーブル・ウォークを行って記述子（例えば物理アドレスおよび許可）を生成し、ＴＬＢ中にロードしなければならない（ステップ１３０５）。ステップ１３０６で、アクセスされたページ・テーブル・エントリの物理アドレス・ビットと修正された仮想アドレスからのインデックス・ビットを使用して、ページ・テーブル・ウォークで生成された記述子を、所与のＴＬＢの現在の置換カウンタ内容がポイントするエントリにロードする。
【００９９】
ＡＲＭＴ９２０による実施形態では、対応するＴＬＢのロックダウン・レジスタのビットを設定することにより、ロードされたＴＬＢエントリをステップ１３０７でロックする。ステップ１３０８で最後のエントリに達した場合は手順が終了し、それ以外の場合はステップ１３０９で手順がステップ１３０３にループバックし、次のエントリのロードに備えて置換カウンタが更新される。
【０１００】
ＴＬＢのエントリをロックすると、キャッシュ内で対応するデータまたはコードをロックすることができる。説明のために、ＡＲＭ９２０Ｔの命令キャッシュ内に命令をロックする場合を考えてみたい。データ・キャッシュの場合も同様である。本発明の概念は、ＡＲＭプロセッサを用いるシステムに限定されず、ロック可能な命令および／またはデータ・キャッシュを含む任意のシステムまたはデバイスに適用できることにも留意されたい。
【０１０１】
図１４は、セキュアなコードをキャッシュにロックするためのキャッシュ・ロックダウン手順１４００を示す。下記でさらに説明するように、図の実施形態では、ロック操作を行うにはキャッシュ・ミスを強制的に起こさなければならない。キャッシュ・ミスを強制的に起こす好ましい方法は、下記で図１５との関連で説明する。
【０１０２】
ステップ１４０１で、実際のページ・テーブルまたはエミュレートしたページ・テーブルを、キャッシュ内にロックすべきデータまたは命令が存在するメモリ位置の物理アドレスを用いてセットアップする。本発明の概念を用いるエミュレートし合成したページ・テーブルについても下記でさらに説明する。このテーブルは、好ましくは手順１３００を使用して対応するＴＬＢを更新するのに使用される。
【０１０３】
ステップ１４０２で、所与のキャッシュの少なくとも一部のキャッシュ・ラインをフラッシュまたはクリーンして、ロックするコードがすでにキャッシュに入っていないことを確実にする。ステップ１４０３で、キャッシュと関連付けられた置換（犠牲）カウンタに、強制的に最初のキャッシュ・ライン（キャッシュ・ライン０）をポイントさせる。好ましい実施形態では、データ・キャッシュおよび命令キャッシュはそれぞれ８個の６４ライン・セグメントに区分され、各セグメントには修正された仮想アドレス中のインデックス・フィールドで索引をつける。手順１４００でキャッシュ・ラインを逐次満たす。例えば、すべてのセグメントのキャッシュ・ライン０はすべて最初に順次満たし、続いてすべてのキャッシュ・ライン１を逐次満たし、以下同様に続く。
【０１０４】
ステップ１４０４で、キャッシュに入れるデータまたは命令を生成するが、この際には解読プロセス（暗号化解除）が必要となる可能性がある。そしてそのデータまたは命令を、内部ＳＲＡＭや外部ＳＲＡＭ／ＤＲＡＭ／フラッシュなど代替メモリ中の対応する位置に格納する。次いでステップ１３０５で、命令をキャッシュに入れるためのプリフェッチ・キャッシュ・ライン操作を行って、ポイントされたキャッシュ・エントリでルックアップを起動する。（データ・キャッシュにはＬＯＡＤ命令を使用することができる。）これによりキャッシュ・ミスが起こり、プロセッサが必要なデータまたは命令を含んだ代替メモリにアクセスすることが必要となる。ＴＬＢが最新のものであり正確である場合、プロセッサは物理アドレスに必要なビットを求めてＴＬＢを参照することによってこのアクセスを行うことができ、またはステップ１４０１でセットアップされたページ・テーブルを直接ウォークスルーすることによって行うことができる。物理アドレス自体は、ＴＬＢ中のアクセスされたエントリの基底アドレス・ビットと、仮想アドレスのインデックス・ビットから生成される。
【０１０５】
ステップ１４０５で、生成したコードまたはデータをキャッシュ・ミスを処理すべき箇所に置き、ステップ１４０６でキャッシュ・ラインの現在の置換ポインタ・エントリにライン・フィルを行う。ここでも、仮想アドレスのキャッシュ・セグメント・インデックス・ビットでキャッシュ・セグメントに索引をつけてキャッシュ・ミスを起こす。
【０１０６】
ステップ１４０７で所与のキャッシュの最後のセグメントに達さずさらにキャッシュ操作が必要な場合は、プロセッサはステップ１４０８でキャッシュ・セグメント・インデックス・ビットを増分して、現在の置換カウンタ値で次のキャッシュ・セグメントへの次のキャッシュ・アクセスを強制的に行う。手順はステップ１０４０に戻り、そこから継続する。
【０１０７】
ただし、終えたばかりの動作が最後のキャッシュ・セグメントに対するものであり、さらにキャッシュ動作が続く場合（すなわち、ステップ１４０９で満たすべき最後のキャッシュ・ラインに到達していない場合）は、ステップ１４１０で、手順はジャンプしてステップ１４０３に戻り、置換カウンタの値を更新し、手順はその時点から継続する。
【０１０８】
ロックするすべてのコードのロードが完了すると、置換カウンタのベースを、ロックされたキャッシュ・ラインのベースの値よりも１大きい値にセットする（ステップ１４１１）。これにより、プライベートなデータ（この時点では解読されている）が、キャッシュ・ミス時に上書きされず、あるいは無許可の者からアクセスできないことが保証される。そしてステップ１４１２でコードをキャッシュから実行することができる。
【０１０９】
ロックする領域全体についてのメモリ位置を使用せずにロックおよびキャッシュされたデータを作成する手段の１つは、レジスタのキャッシュ・ラインの長さを使用してその領域をエミュレートするものである。また、キャッシュ・ミスのエミュレーションを使用して、キャッシュ・ロック処理の細分性に対するハードウェア制限を改善することもできる。例えば、ＡＲＭ９２０Ｔによる実施形態では、キャッシュは６４ワード・ブロック（２５６バイト）単位でロックすることができる。ただし、各キャッシュ・ラインはわずか８ワード（３２バイト）の長さであり、したがってアドレス・ビットに応じて６４ワード・ブロック内の異なる位置にマッピングすることができる。
【０１１０】
本発明の概念によると、ロック可能な位置それぞれについて、メモリ内の代替位置に８個のプログラマブルな３２ビットのエミュレーテッド・キャッシュ・ライン（ＥＣＬＩＮＥ）レジスタが、８個の連続した３２ビット位置としてセットアップされる。さらに、比較（オフセット）レジスタ（ＥＣＯＦＦＳＥＴ）がセットアップされ、これは、エミュレートされたキャッシュ・ミスの後でキャッシュ・メモリ空間のどこにＥＣＬＩＮＥレジスタの内容が存在するかを識別する物理アドレスを用いてプログラムされる。この結果、サイズが１キャッシュ・ラインである位置を使用して、６４ワードのロック可能な位置全体を表すことができる。
【０１１１】
エミュレートしたキャッシュ・ミスの手順１５００を図１５のフロー・チャートに示す。ステップ１５０１で、（命令キャッシュまたはデータ・キャッシュに）キャッシュする内容をＥＣＬＩＮＥレジスタに書き込む。次いで、データを書き込むロック可能なキャッシュ空間に対するオフセットを、ＥＣＯＦＦＳＥＴ比較レジスタ中にプログラムする（ステップ１５０２）。
【０１１２】
ステップ１５０３で、キャッシュ・ミスを起こすための操作を行う。命令キャッシュの場合、これは命令キャッシュに対するプリフェッチ命令を通じて行うことができ、データ・キャッシュの場合にはロード命令を通じて行うことができる。この位置に対して生成された仮想アドレスにより所与のキャッシュでミスが起こり、次いで仮想アドレスのインデックス・ビットと、適切なＴＬＢから取り出したベース・ビットを使用するか、あるいはページ・テーブル・ウォークを行って対応する物理アドレスを生成する。ステップ１５０５で、対応するＥＣＬＩＮＥレジスタ中の情報を取り出し、ステップ１５０６でそれをキャッシュ内のアドレス指定されたエントリにロードする。このエントリは手順１４００を使用してロックに備えられている。この手順により、キャッシュのロックされた部分に内部ＳＲＡＭまたは外部ＳＲＡＭに頼らずにロードすることが可能になっており好都合である。
【０１１３】
すでに指摘したように、データまたは命令が取り出される物理メモリのアドレスを生成するために、キャッシュおよびＴＬＢのロック操作中にページ・テーブル・ウォークが必要となる。本発明の概念は、ページ・テーブル・サポートのために確保しなければならないメモリ量を節減する、合理化されたページ・テーブルの作成を可能にする。さらに、ＴＬＢのミスを考慮にいれても、本発明の概念は、セクション／ページ・テーブル・ウォークによるアドレス変換中に、改ざん、コピー、またはＭＭＵ１０４のセキュアな動作を通じた電子的な分析からデータおよび命令コードを保護する。説明のために再度ＡＲＭ９２０Ｔプロセッサ・コアを考察するが、本発明の原理はこの他のプロセッサおよびメモリ管理ユニットのメモリ管理方式にも適用することができる。
【０１１４】
この実施形態の場合、従来のページ・テーブル・ウォークは一般に以下のように進行する。レベル１のフェッチ中に、セクション記述子（レベル１）、コース・ページ・テーブルの基底アドレス、またはファイン・ページ・テーブルの基底アドレスを４０９６エントリの変換ベース・テーブル（ＴＢＴ）から取り出す。ＴＢＴには、変換ベース・レジスタ内のＴＢＴ基底アドレスと、修正された仮想アドレスのテーブル・インデックス・フィールドを使用してアクセスする。
【０１１５】
ＴＢＴからの出力がセクション記述子である場合、その記述子にはセクション基底アドレスとアクセス許可が含まれている。次いで、レベル１記述子からのセクション基底アドレス・ビットと修正された仮想アドレスのセクション・インデックス・ビットを使用して、メモリの１メガバイト・セクションの物理アドレスを生成する。（レベル１のセクション記述子に含まれる許可は望ましいものであると想定する。）
【０１１６】
ＴＢＴから取り出したコース・ページ・テーブル基底アドレスは、修正された仮想アドレスのレベル２のテーブル・インデックスと併せて、コース・ページ・テーブル中の２５６エントリの１つにアクセスし、それにより１メガバイトのブロックを４キロバイトのブロックに分割する。コース・ページ・テーブルは、アクセス許可とともに、ラージ基底アドレスまたはスモール基底アドレスを戻す。その許可の状態に応じて、ラージ・ページまたはスモール・ページの基底アドレス・ビットを修正された仮想アドレスのページ・インデックス・ビットと組み合わせて、メモリの６４キロバイトのラージ・ページまたは４キロバイトのスモール・ページの物理アドレスを生成する。
【０１１７】
ＴＢＴから取り出したファイン・ページの基底アドレスは、修正された仮想メモリ・アドレスからのレベル２のテーブル・インデックス・ビットとともに、１０２４エントリのファイン・ページ・テーブルをポイントする。このテーブルからの出力はレベル２の記述子であり、これはアクセス許可とともにラージ、スモール、またはタイニー（ｔｉｎｙ）の基底アドレスを含んでいる。ラージ・ページは６４キロバイトであり、スモール・ページは４キロバイトであり、タイニー・ページは１キロバイトである。許可がアクセスの許可を示すとすると、ページ基底アドレスを、修正された仮想アドレスのページ・インデックス・ビットと連結して、すでに述べたメモリ中のラージ・ページまたはスモール・ページ、あるいはメモリ中の１キロバイトのタイニー・ページの物理アドレスを生成する。
【０１１８】
ページ・テーブル・ウォークの結果アクセスされるメモリは、キャッシュ、内部メモリ、または外部メモリのいずれかである。物理アドレスと許可を使用してＴＬＢを更新する。セキュアな情報があればそれを上記のようにＴＬＢ中にロックする。
【０１１９】
この２レベルからなるテーブル・ウォーク手順の欠点は、各種のテーブルに相当量のオンチップ・メモリが必要となることが原因である。先に述べたように、セキュアな情報は、無許可のユーザからアクセスすることが不可能なシステムの内側のメモリ・エリア中になければならない。したがって、物理アドレスの変換方式など扱いに注意を要する情報を利用可能な内部メモリに効率的に記憶するための何らかの措置を行わなければならない。
【０１２０】
集積回路１００の好ましい実施形態では、テーブル・ウォークのプロセスを大幅に簡略化し、変換テーブルに必要なメモリ量を著しく減らすことができる。これは動作効率の向上の点から見て重要なだけではなく、これによりセキュアでない外部メモリを使用せずに済むことも保証される。
【０１２１】
ここでは、メモリ空間を２５６メガバイトの領域に分割し、各領域を共通のアクセス特性（例えばアクセス許可、キャッシュの可能性、バファリングの可能性）のセットと関連付ける。この領域のうち１つのみのわずか１メガバイトだけに第２レベルのページ・テーブルが必要となる。したがって、多くのメモリ領域が共通のアクセス特性を有するので、利用可能なＳＲＡＭ空間内にはるかに小さな変換テーブルを作成することができる。
【０１２２】
アクセス許可は、対応するメモリ・ブロックから所与の情報にアクセスできるかどうかを示す。キャッシュ可能性とバッファリング可能性の属性ビットは、アクセスされる情報をキャッシュに記憶することができるか、または書き込みバッファを通じて転送することができるかを判定するのに使用される。例えば、ＵＡＲＴおよびその他の周辺装置、およびＩ／Ｏデバイスを制御するリアル・ハードウェア・レジスタの内容は、一般にはＣＰＵのサブシステムによってキャッシュまたはバッファリングすることはできない。これにより、アクセスが実際に行われるタイミングが原因でこれらの周辺装置の動作が不正確になる可能性がある。
【０１２３】
さらに、セキュア・システムの場合は、ページ／セクション・テーブルの情報をプライベート・エリアの境界内に保持して、その情報がメモリから、ロジック・アナライザで検査することが可能なデバイス・ピンへと移動できないようにしなければならない。
【０１２４】
メモリを１６個の２５６メガバイト・ブロックに分割する図の実施形態では、レベル１のＡＰビットを記憶するために３２ビット・レジスタを作成し、各２ビットのペアが２５６メガバイトのメモリ領域に対応する。例えば、ビット［１：０］は領域１に対応し、ビット［３：２］は領域２に対応し、以下同様である。レベル１の各領域のキャッシュ可能性を示すビット・セットを保持するための１６ビット・レジスタをセットアップする。各領域のキャッシュ可能性を示すビット・セットのどちらかを保持するために別の１６ビット・レジスタをセットアップする。これらのレジスタは、ＭＭＵ中の変換ベース・レジスタの内容によってポイントされる。
【０１２５】
図１６Ａに、固有の特性と定数を有するメモリ領域を扱うのと同時に、これらのレジスタを更新する手順１６００を示す。
【０１２６】
所与の２５６メガバイト領域に対して、ステップ１６０１で、それが共通のアクセス特性のセットを有するかどうかを判定する。判定の結果が肯定である場合、ステップ１６０２で、グローバルなレベル１のＡＰレジスタ中の対応するエントリに該当するＡＰビットをロードする。ステップ１６０２および１６０３で、グローバルなレベル１のバッファリング可能性とキャッシュ可能性を示すレジスタ中の対応するエントリも同様に更新する。
【０１２７】
ステップ１６０５で、手順は戻り、更新を必要とする次のメモリ領域（ブロック）のレジスタ・エントリを更新する。グローバルなアクセス制御レジスタの初期化／更新はループで行うことが好ましい。一般に値は変化しないが、必要であればシステムの処理中に更新することができる。合成しないエントリのフル・レジスタ値は、システムの動作中に適宜更新される。更新が必要となるのは、例えばあるメモリ・ページをディスクや同様の大容量記憶装置に「スワップ」アウトするときに別のページに置き換える場合などである。
【０１２８】
ステップ１６０１で、アクセス許可、バッファリング可能性とキャッシュ可能性のビット、および物理アドレス・ビットを含む固有のアクセス特性セットを有するメモリ・ブロックまたはレジスタについては、ステップ１６０６および１６０７でフルの３２ビット・レジスタに完全なレベル１の記述子をロードする。手順は再度ステップ１６０８にループ・バックする。この記述子は、コースまたはファインのページ（レベル２）テーブルのアドレスを含むことができる。
【０１２９】
そうでない場合は、ステップ１６０８で、ハードワイヤード・ゲートで定数がポイントされる。記憶された定数は、固定値でもレベル２テーブルの基底アドレスでもよい。ステップ１６０９でレベル２へのウォークが必要でない場合は、手順はステップ１６１０にループバックする。そうでない場合は、ステップ１６１１でレベル２の合成されたテーブル中の対応するレジスタをセットアップする。
【０１３０】
これと同様のプロセスを、レベル２の合成に使用する。具体的には、レベル２の各ページについて、共通の特性を有するページおよびサブブロックに対して、レベル１レジスタ内のレベル２基底アドレス・ビットによってポイントされるレジスタと、グローバルなレベル２のＡＰレジスタを、レベル２のバッファリング可能性およびキャッシュ可能性のレジスタとともに上記のようにセットアップする。
【０１３１】
ステップ１６１２で、所与のページまたはページのセットについて、それが共通のアクセス特性のセットを有するかどうかを判定する。判定の結果が肯定である場合は、ステップ１６１３でグローバルなレベル２のＡＰレジスタ中の対応するエントリに適切なＡＰビットをロードする。ステップ１６１４および１６１５で、グローバルなレベル２のバッファリング可能性およびキャッシュ可能性を示すレジスタ中の対応エントリも同様に更新する。
【０１３２】
ステップ１６１６で、手順はステップ１６０１に戻り、更新を必要とする次のメモリ領域（ブロック）のレジスタ・エントリを更新する。
【０１３３】
それらレベル２のページに対して、ステップ１６１２でアクセス許可と、バッファリング可能性およびキャッシュ可能性のビットと、物理アドレス・ビットとを含む固有のレベル２のアクセス特性のセットを有するページ、ブロック、またはレジスタのセットに対して、ステップ１６１８でフルの３２ビット・レジスタに完全なレベル２記述子をロードする。そうでない場合は、ステップ１６１８でハードワイヤード・ゲート内で定数がポイントされる。記憶された定数は、固定値、基底アドレスなどでよい。手順はステップ１６１９で再度ステップ１６０１にループバックする。
【０１３４】
例示的な合成されたページ・テーブルのウォークを図１２Ｂに示す。ステップ１６２０で、テーブル・ウォークを要求する。この要求は、ＴＬＢおよび／またはキャッシュのミスに応答したものでよい。この例では、ステップ１６２１でテーブル・ウォークの第２レベルが必要とされない第１の場合を考えてみたい。ステップ１６２２で、上記のレベル１のレジスタが、ＭＭＵ中の変換ベース・レジスタによってポイントされる。仮想アドレスのテーブル・インデックス・ビットを使用して、レベル１のレジスタ・エントリを索引づけする（ステップ１６２３）。
【０１３５】
ステップ１６２４および１６２５で、レベル１レジスタの索引付けされたエントリからの戻りが完全な記述子であるか、または定数であるかを判定する。戻りが定数または完全な記述子のいずれでもない場合を最初に考察する。
【０１３６】
ステップ１６２６で、第１レベルのグローバル・アクセス・レジスタ中のアクセス制御ビット（すなわちＡＰ、キャッシュ可能性、およびバッファリング可能性のビット）を取り出す。次いでステップ１６２７で、仮想アドレスに相対的なビット位置を移動することにより、仮想アドレスのテーブル・インデックスを物理アドレスに変換する。
【０１３７】
好ましい実施形態では、セクション・エントリの変換された仮想アドレスは、テーブル・インデックス・ビットになり（４０９６エントリのレベル１ページ・テーブル中へのルックアップ・ワード・インデックスのビット１３：２がそのエントリ（１メガバイトのメモリ領域）についての結果のビット（３１：２０）になる）。セクションの領域は、メモリ位置のビット（１３：１０）によって定義される。ＡＲＭ９２０またはＡＲＭ７２０のＭＭＵを使用する実施形態では、ページ・テーブル・エントリ中の数ビットが常に定数０または１になる。
【０１３８】
ステップ１６２８で、変換されたアドレス・ビットと取り出したアクセス制御ビットを組み合わせることにより、レベル１の記述子を形成する。ステップ１６２９で、ＴＬＢおよび／またはキャッシュの更新のために合成した記述子を戻す。
【０１３９】
ステップ１６２４および１６２５に戻ると、レベル１のエントリも完全な記述子か（ステップ１６３０）、または定数（ステップ１６３１）である。ステップ１６３２で、その記述子または定数を直ちに使用することができる。
【０１４０】
次にステップ１６２１でレベル２のテーブル参照を要求すると想定する。
【０１４１】
レベル２の変換は、レベル１の参照だけを必要とする際に行われる変換と同様である。ステップ１６３３で、上記のようにセットアップされたレベル２のレジスタが、ＭＭＵ中の基底アドレスによってポイントされる。ステップ１６３４で、仮想アドレスのテーブル・インデックス・ビットを使用して、特定のレジスタまたはエントリを索引付ける。ステップ１６３５および１６３６で、索引付けされたレジスタ（エントリ）が完全な記述子または定数を含むかどうかを判定する。記述子が見つかった場合はステップ１６３７でその記述子を取り出し、定数が見つかった場合はステップ１６３８でその定数を取り出す。この記述子または定数は、ステップ１６３９で直ちに使用することができる。
【０１４２】
ステップ１６３５および１６３６で、定数または記述子のいずれも見つからない場合は、ステップ１６４０で第２レベルのアクセス制御レジスタにアクセスし、ステップ１６４１で仮想アドレスのページ・インデックス・ビットを使用して対応するアクセス制御ビットを取り出す。ステップ１６４２で、ビット位置をシフトすることにより、仮想アドレスのページ・インデックス・ビットを物理アドレスに変換する。ステップ１６４３で、この物理アドレスのビットを、取り出したアクセス制御ビットと組み合わせて合成記述子を形成する。ステップ１６４４で、ＴＬＢの更新、キャッシュ・ミス時のメモリの実行、あるいは同様の動作のためにこの合成記述子を戻す。
【０１４３】
説明を簡潔にするために、合成したテーブルのウォークについてはレベル１とレベル２の記述子生成に関してのみ説明したことに留意されたい。ただし、本発明の原理を反復して適用することにより、第２レベル以下の他レベルのウォーク・スルーを実装できることに留意されたい。
【０１４４】
要約すると、本発明の概念によると、第１レベルのテーブルとして必要なのは、３２ビットのＡＰレジスタと、バッファリング可能性およびキャッシュ可能性のための１対の１６ビット・レジスタのみである。アドレス指定しなければならない第２レベルの各ページに必要とされるのは、スモール・ページのＡＰレジスタと、１ビットのキャッシュ可能性およびバッファリング可能性のレジスタからなる第２レベルのテーブルだけである。
【０１４５】
本発明の概念はまた、キャッシュ・ミス時に、キャッシュ・ミスのエミュレーションに類似するメモリのレジスタ・エミュレーションによりアドレスの変換とＴＬＢの更新を可能にする点が好都合である。その後、上記のようにセキュリティのためにキャッシュおよび／またはＴＬＢのエントリをロックすることができる。好ましいエミュレーション・プロセスでは代替のエミュレートしたメモリを使用し、集積回路１００の内部メモリを他のタスクのために割くことができるようにする。ページ・テーブルのメモリ・アドレスは、集積回路の内部にマッピングすることが好ましい。こうした概念を用いる好ましい手順は、図１７に示すエミュレーテッド・テーブル・ウォーク／ＴＬＢ更新手順１７００である。
【０１４６】
初めに、レベル１の記述子かまたはレベル２の基底アドレスを含むエミュレートされたレベル１の変換レジスタ（テーブル）（ＥＬ１ＴＲ）を作成する（ステップ１７０１）。さらに、ＥＬ１ＴＲ中のエントリへのインデックスを保持する、エミュレートしたレベル１のインデックス・レジスタ（ＥＬ１ＩＲ）を代替のメモリ空間にセットアップする（ステップ１７０２）。ＭＭＵ中の変換ベース・テーブル（ＴＴＢ）は、エミュレートされたレベル１のテーブルをポイントするようにプログラムする。この領域に対する要求は、テーブル・マッチＥＬ１ＩＲへのインデックスを含んだＥＬ１ＴＲの内容を受け取る。インデックスが一致しない場合は、戻された値が例外を発生させるエントリになる。
【０１４７】
第２レベルを過ぎて継続するアドレス変換については、レベル２の記述子を含むエミュレートしたレベル２の変換レジスタ（ＥＬ２ＴＲ）を代替メモリ中に作成し（ステップ１７０４）、エミュレートしたレベル２のインデックス・レジスタが、対応するインデックスを保持する（ステップ１７０５）。
【０１４８】
ステップ１７０６で、ＣＰＵ１０１に指示を出すか、または外部アドレス・ジェネレータを使用して仮想アドレスを生成する。キャッシュおよびＴＬＢがフラッシュまたはクリーンされている場合はキャッシュ／ＴＬＢのミスが起こり、従ってステップ１７０７で、ＭＭＵによってポイントされるエミュレートされたレベル１のテーブルを使用してテーブル・ウォーク手順を起動する。仮想アドレス中のレベル１のテーブル・インデックス・ビットを、ＥＬ１ＩＲ中のテーブル・インデックス・ビットとＥＬ１ＴＲから戻された対応するレベル１の情報と比較する（ステップ１７０８）。
【０１４９】
ステップ１７０８で情報が記述子である場合（すなわちレベル２の変換が不要な場合）は、レベル１のアクセスを実行し（ステップ１７０９）、ここで記述子中の許可を調べる（ステップ１７１０）。許可を与えない場合、動作はステップ１７１１で中止する。それ以外の場合は、ステップ１７１２で、レベル１の記述子中のセクション・アドレス・ビットと、仮想アドレス中のセクション・インデックスから物理アドレスを生成する。ステップ１７１３でこの物理アドレスをＴＬＢにロードして、ロック操作と、対応するデータまたは命令が適切なキャッシュにロードされるのを待機する。ステップ１７１４で、ＴＬＢ中の現在のエントリがロードする最後のエントリでないと判定された場合は、ステップ１７１５で、手順はステップ１７０６にループバックして次のテーブル・ウォークを開始する。それ以外の場合は、ステップ１７１６でＴＬＢのロック手順を実行する。
【０１５０】
ステップ１７０８でＥＬ１ＴＲの情報がレベル２への基底アドレスであると分かった場合は、ステップ１７１７でレベル２のページ・ウォークを起動する。ＥＬ２ＴＲレジスタには、ＥＬ１ＴＲの基底アドレスを使用してアクセスする（ステップ１７１８）。仮想アドレスのインデックス・ビットに照らして比較することにより対応するＥＬ２ＩＲレジスタの内容を使用して特定のレジスタを索引付けする（ステップ１７１９）。ステップ１７２０で、戻されたレベル２の記述子中の許可を調べる。アクセスを許可しない場合はステップ１７２１でアクセスを中止し、それ以外の場合は、ステップ１７２３でレベル２の記述子中の物理アドレス・ビットと仮想アドレスのインデックス・ビットを使用して物理アドレスを生成する。ステップ１７２３で物理アドレスをＴＬＢにロードしてロック操作を待つ。
【０１５１】
ステップ１７２４で現在のＴＬＢエントリがロードする最後のエントリである場合、ステップ１７２５でＴＬＢロック手順を起動することができ、それ以外の場合はステップ１７２６で、手順がジャンプしてステップ１７０６に戻り、次のＴＬＢエントリのテーブル・ウォークを開始する。
【０１５２】
集積回路１００の実施形態によっては、メモリ管理ユニット（ＭＭＵ）またはハードウェア・キャッシュを含まないベア（ｂａｒｅ）ＣＰＵを用いることが可能である。例えば、ＣＰＵコア１０１は、キャッシュ１０３やＭＭＵ１０４を用いずにＡＲＭ７ｔｄｍｉプロセッサ１０２だけを基盤とすることが可能である。このオプションを選択する場合は、すべてのソフトウェアをメモリ中のフラットなメモリ空間に格納しなければならない。ただし、これには外部メモリ（例えばＮＯＲフラッシュ、ＳＲＡＭ、ＤＲＡＭ）の使用が必要となる場合がある。上記のように、外部メモリ内のデータには、無許可のエンド・ユーザがアクセスまたは分析する可能性があるという大きな欠点がある。
【０１５３】
ハードウェア・キャッシュもＭＭＵも用いない集積回路１００の実施形態では、セキュリティ・コードを監視プログラム・モードで実行する。監視プログラム・モードでは、メモリの特定領域および特定レジスタへのアクセスは、監視者の特権に照らしてチェックを受ける。セキュリティ・ファームウェアは、ＳＲＡＭなどの内部メモリから実行することが好ましい。監視モードでは、すべての他のソフトウェア／ファームウェアはユーザ・モードで実行されているものと解釈され、したがってセキュリティ保護されたソフトウェアによる監視者特権によるチェックを受ける。
【０１５４】
本発明について特定の実施形態を参照して説明したが、これらの説明は限定的な意味に解釈すべきではない。当業者には本発明の説明を参照すれば、開示した実施形態の各種の変形形態、ならびに本発明の代替実施形態が明らかになろう。当業者には、開示した概念および特定の実施形態は、本発明の同じ目的を実行するための他の構造の修正または設計の基礎として容易に利用できることが理解されよう。当業者にはまた、そのような同等の構成が、頭記の特許請求の範囲に述べる本発明の精神および範囲から逸脱しないことも認識されよう。
【０１５５】
したがって、特許請求の範囲は、本発明の真の範囲内に該当する変形形態または実施形態を包含するものとする。
【０１５６】
0004603753.tif 000002
【０１５７】
0004603753.tif 000003
【０１５８】
0004603753.tif 000004
【０１５９】
0004603753.tif 000005
【０１６０】
0004603753.tif 000006
【０１６１】
0004603753.tif 000007
【０１６２】
0004603753.tif 000008
【０１６３】
0004603753.tif 000009
【０１６４】
0004603753.tif 000010
【０１６５】
0004603753.tif 000011
【０１６６】
0004603753.tif 000012
【０１６７】
0004603753.tif 000013
【０１６８】
0004603753.tif 000014
【０１６９】
0004603753.tif 000015
【０１７０】
0004603753.tif 000016
【０１７１】
0004603753.tif 000017
【０１７２】
0004603753.tif 000018
【０１７３】
0004603753.tif 000019
【０１７４】
0004603753.tif 000020
【０１７５】
0004603753.tif 000021
【０１７６】
0004603753.tif 000022
【０１７７】
0004603753.tif 000023
【０１７８】
0004603753.tif 000024
【０１７９】
0004603753.tif 000025
【０１８０】
0004603753.tif 000026
【０１８１】
0004603753.tif 000027
【０１８２】
0004603753.tif 000028
【０１８３】
0004603753.tif 000029
【図面の簡単な説明】
【図１Ａ】  本発明の原理を実施する集積回路のハイ・レベル機能ブロック図である。
【図１Ｂ】  本発明の概念を実施する第２のシステムのハイ・レベル図である。
【図１Ｃ】  本発明の原理を有利な形で適用することのできる第３の例示的システムの図である。
【図１Ｄ】  さらに２つの形態を示す図である。
【図２】  最大の利用が可能な構成における集積回路１００の図である。
【図３】  図１Ｂのプロセッサのハイ・レベル機能ブロック図である。
【図４Ａ】  システムが「待機状態」に入りピンＣＬＫＥＮのクロック・イネーブル信号がアサートされたときにピンＥＸＰＣＬＫを駆動させる外部クロックを表す図である。
【図４Ｂ】  ピンＣＬＫＥＮのクロック・イネーブル信号がアサートされ、システムが「待機状態」を終了するときにピンＥＸＰＣＬＫを駆動させる外部クロックを表す図である。
【図５】  図１Ａの状態制御回路の動作を表す状態図である。
【図６】  図１Ａのシリアル・インタフェース・ブロックを含む３つのシリアル・インタフェースのブロック図である。
【図７Ａおよび７Ｂ】  選択された外部デバイスとの関連でＳＳＩ（ＡＤＣ）の動作を表すタイミング図である。
【図８】  図６のコーデック・インタフェースの動作を表すタイミング図である。
【図９】  図６のシリアル・インタフェース・ブロックのＩ2Ｓポート間のインタフェースを示す機能ブロック図である。
【図１０】  図９のＩ2Ｓのインタフェースの動作を表すタイミング図である。
【図１１】  マスタ／スレーブ構成における図６のＳＳＩ２ポートの使用を説明する機能ブロック図である。
【図１２】  パワーオン・リセット時のシステム初期化を説明するフロー・チャートである。
【図１３】  ＴＬＢ中のプライベート・データをロックする手順を説明するフロー・チャートである。
【図１４】  セキュアなコードをキャッシュ内にロックするキャッシュ・ロックダウン手順を説明する図である。
【図１５】  エミュレートされたキャッシュ・ミスの手順を示すフロー・チャートである。
【図１６Ａ】  合成された変換テーブルをセットアップする好ましい方法の図である。
【図１６Ｂ】  図１６Ａの合成テーブルを通じたテーブル・ウォークを説明するフロー・チャートである。
【図１７Ａ〜１７Ｅ】  エミュレートされたテーブル・ウォークを実行する好ましい手順を説明する図である。
【図１Ａ】
0004603753.tif 000030
【図１Ｂ】
0004603753.tif 000031
【図１Ｃ】
0004603753.tif 000032
【図２】
0004603753.tif 000033
【図３】
0004603753.tif 000034
【図４Ａ】
0004603753.tif 000035
【図４Ｂ】
0004603753.tif 000036
【図５】
0004603753.tif 000037
【図６】
0004603753.tif 000038
【図７Ａ】
0004603753.tif 000039
【図７Ｂ】
0004603753.tif 000040
【図８】
0004603753.tif 000041
【図９】
0004603753.tif 000042
【図１０】
0004603753.tif 000043
【図１１】
0004603753.tif 000044
【図１２Ａ】
0004603753.tif 000045
【図１２Ｂ】
0004603753.tif 000046
【図１２Ｃ】
0004603753.tif 000047
【図１２Ｄ】
0004603753.tif 000048
【図１２Ｅ】
0004603753.tif 000049
【図１３Ａ】
0004603753.tif 000050
【図１３Ｂ】
0004603753.tif 000051
【図１３Ｃ】
0004603753.tif 000052
【図１４Ａ】
0004603753.tif 000053
【図１４Ｂ】
0004603753.tif 000054
【図１４Ｃ】
0004603753.tif 000055
【図１５Ａ】
0004603753.tif 000056
【図１５Ｂ】
0004603753.tif 000057
【図１６Ａ−Ａ】
0004603753.tif 000058
【図１６Ａ−Ｂ】
0004603753.tif 000059
【図１６Ｂ−Ａ】
0004603753.tif 000060
【図１６Ｂ−Ｂ】
0004603753.tif 000061
【図１６Ｂ−Ｃ】
0004603753.tif 000062
【図１６Ｂ−Ｄ】
0004603753.tif 000063
【図１７Ａ】
0004603753.tif 000064
【図１７Ｂ】
0004603753.tif 000065
【図１７Ｃ】
0004603753.tif 000066
【図１７Ｄ】
0004603753.tif 000067
【図１７Ｅ】
0004603753.tif 000068