(57)【特許請求の範囲】
【請求項１】
構成可能アドレス・マッピングと保護アーキテクチャをオンチップ・システムに持たせるための方法であって、
サービス・モジュールに第１のアドレス位置を関連付ける構成パラメータをアドレス・セグメント・レジスタおよびアドレス領域レジスタに入力するステップと、
保護パラメータを保護キー・レジスタに入力するステップであって、前記保護パラメータは、前記オンチップ・システム内の各アドレス領域に対して存在する相異なる保護キーおよび前記オンチップ・システム内の各処理ユニットに対して存在する相異なる保護ＩＤから成るグループから選択される、ステップと、
前記入力された保護パラメータおよび前記サービス・モジュールの第１のアドレス位置に基づいて前記オンチップ・システム内の前記処理ユニットからの要求を前記サービス・モジュールに伝え、かつ実行するか否かを決定するためにセキュリティ・チェック・ロジックを使用するステップと
を含み、
前記オンチップ・システムのハードウェア内に実装される前記アドレス・セグメント・レジスタ、前記アドレス領域レジスタおよび前記保護キー・レジスタは設計時に設定される
方法。
【請求項２】
前記構成パラメータおよび前記保護パラメータが、アドレス幅、セグメント数、セグメント・サイズ、セグメント・ベース、領域数からなるグループから選択される請求項１に記載の方法。
【請求項３】
前記領域数の各領域について、領域アドレス・サイズ、領域ベース・アドレス、領域保護キー・レジスタ番号、領域使用可能、領域アドレス空間、前記領域に接続されたサービス・モジュールの幅、前記領域に接続されたサービス・モジュールの物理リンケージ情報からなるグループから選択されたフィールドをさらに含む請求項２に記載の方法。
【請求項４】
前記領域に接続されたサービス・モジュールの前記物理リンケージ情報が、経路指定情報と位置からなるグループから選択された情報をさらに含み、そして
前記経路指定情報が、前記サービス・モジュールに要求を送るために要求配信モジュールに渡されるハードウェア経路指定情報を含む
請求項３に記載の方法。
【請求項５】
前記位置が、ハードウェア信号ビット位置を含み、そして
要求配信モジュールが前記ハードウェア信号ビット位置で信号をアサートする場合、要求が前記サービス・モジュールに送られる
請求項４に記載の方法。
【請求項６】
回路を構成するためのデータベースを生成するステップを含み、
前記回路が、さらにレジスタを有し、
前記構成の結果として、アクセス不能レジスタ、読取り専用レジスタ、読取り書込みレジスタからなるグループから選択された動作モードが得られ、そして
前記レジスタの前記構成が、前記レジスタをエクスポート・コンスタントとして指定することをさらに含み、その結果前記データベースにおいて、前記レジスタのネットリスト部分がネットリストのトップ・レベルにエクスポートされる
請求項１に記載の方法。
【請求項７】
一組の要求を実行するときに請求項１に記載の方法を行うプロセッサを備えてなる演算処理システム。
【請求項８】
実行されるときに請求項１に記載の方法を行う命令を記憶している機械可読記憶媒体。
【請求項９】
最適化されたアドレス・マッピングと保護ハードウェアのための最適化されたハードウェア・ネットリストを生成するステップをさらに含んでなる請求項１に記載の方法。
【請求項１０】
構成可能アドレス・マッピングおよび保護アーキテクチャを有するオンチップ・システムにおいて、
少なくとも第１のアドレス位置をサービス・モジュールに関連付ける構成パラメータを入力するためのアドレス・セグメント・レジスタおよびアドレス領域レジスタと、
保護パラメータを入力するための保護キー・レジスタであって、前記保護パラメータが、前記オンチップ・システム内の各アドレス領域に対して存在する相異なる保護キーおよび前記オンチップ・システム内の各処理ユニットに対して存在する相異なる保護ＩＤから成るグループから選択される、保護キー・レジスタと、そして
前記入力された保護パラメータおよび前記サービス・モジュールの第１のアドレス位置に基づいて前記オンチップ・システム内の前記処理ユニットからの要求を前記サービス・モジュールに伝えるか否か、かつ実行するか否かを決定するためのセキュリティ・チェッキング・ロジックと
を備え、
一組の構成レジスタが、前記構成パラメータを設計時に受信して、前記オンチップ・システムのハードウェア内に実装される前記アドレス・セグメント・レジスタ、前記アドレス領域レジスタおよび前記保護キー・レジスタを設定する
オンチップ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はオンチップ・システムに関する。より詳細には、本発明は、オンチップ・システム用の構成可能アドレス・マッピングと保護アーキテクチャ及びハードウェアに関する方法及び装置に関する。
【背景技術】
【０００２】
ほとんどのコンピュータ及び／又はオンチップ・システムに関するオペレーショナル・モデルは、１つ又は複数の処理ユニットからシステム内の１つ又は複数のサービス・モジュールに要求を送る。処理ユニットから要求（すなわち命令）を受け取った際に、サービス・モジュールは要求されたタスクを完了する。次いで、サービスモジュールから処理ユニットに返すべき応答があるであろう。処理ユニットとサービス・モジュールのどちらとしても振る舞うシステム内の構成要素を有することもごく一般的である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
処理ユニットとサービス・モジュールとの間で要求や応答を送るのに、多くの異なる方式を使用することができる。要求を送るのに最も頻繁に用いられる方法の１つは、アドレス指定（及び記憶保護チェック）による方法である。例えば、要求に「宛先アドレス」と「ソース保護識別（ＩＤ）」をタグ付けする。宛先アドレスは、サービス・モジュールがどこに位置するか、及び／又は要求をどのようにしてサービス・モジュールに送るかを示す。ソース保護ＩＤによって処理ユニットを識別し、サービス・モジュールが要求を実行すべきかどうか、又は要求をサービス・モジュールに送ることができるかどうかを判定するのに使用され、したがってソース識別に応じて、選択的にサービス・モジュールへアクセスする。通常は、アドレス復号化及び保護ＩＤチェックに充てられる（例えば集積回路上の）ハードウェア・モジュールのトランジスタ（「ゲート」とも呼ばれる）の数と結果としてのゲート・サイズ（すなわち面積）が比較的大きい。オペレーション中にこの復号化ハードウェア及びチェック・ハードウェアを動的（すなわち構成可能）にするために、より多くの電力を消費する追加の回路も必要となる。ワイヤレス・デバイスでは、特にチップ・ダイ・サイズを小さくし、電力消費を低くする要求が高く、大型で電力を消費するアドレス復号化及び保護チェック・モジュールは受け入れられない。これにより問題が提起される。
【発明を実施するための最良の形態】
【０００４】
限定ではなく例示により、添付の図面の各図で本発明を説明する。各図では同様の参照番号は同様の要素を示す。
【０００５】
オンチップ・システム用の構成可能アドレス・マッピングと保護アーキテクチャ及びハードウェアに関する方法及び装置を説明する。
【０００６】
図１に、記載の技法を適用することができるネットワーク環境１００を示す。ネットワーク環境１００は、Ｓ個のサーバ１０４−１から１０４−ＳとＣ個のクライアント１０８−１から１０８−Ｃを接続するネットワーク１０２を有する。以下でより詳しい詳細を説明する。
【０００７】
図２に、図１に示すクライアント及び／又はサーバのいずれかを代表するコンピュータ・システム２００をブロック図形式で示す。以下でさらに詳細を説明する。
【０００８】
この文書で使用するＩＰという用語は知的財産を表す。機能を有する設計を表すのにＩＰという用語をそれ自体で使用することがあり、又はコアなどの他の用語と共に使用することがある。例えば、ＩＰコア又は略してＩＰは、回路、バス、通信リンク、マイクロプロセッサなどからなる。加えて、ＩＰを様々な方式で実装することができ、集積回路上などに製作することができる。着信パケットが複製され、ほとんどのチップ、システムなどにわたって、あらゆる経路に対して送出される通信を表すのに、フラッディング(flooding)という用語を使用する。
【０００９】
本開示では、オンチップ・システム用の構成可能アドレス・マッピングと保護アーキテクチャ及びハードウェアに関する方法及び装置を説明する。本発明の一実施形態では、必要なアドレス・マッピングと保護機能を提供する回路がハードウェアとして提供される。別の実施形態では、本発明により、製品設計者が設計時にアドレス・マッピングと保護モジュールを構成することが可能となり、それによって最小の指定のマッピングと保護だけがハードウェアで実装される。したがって、アドレス・マッピングと保護ハードウェア・モジュールの最終ゲート・サイズや電力消費が、製品の仕様によって決定される。さらに、各サービス・モジュールのアドレス幅やデータ・ワード幅も考慮に入れることができ、それを使用して、サービス・モジュールへの／からの信号ワイヤの数を最小限に抑えることができる。この結果、過剰設計されず、かつ製品のゲート・カウントや電力消費要件をより容易に満たすことができるハードウェアを得ることができる。
【００１０】
開示の発明である「オンチップ・システム用の構成可能アドレス・マッピングと保護アーキテクチャ及びハードウェア」は以下を提供することができる。
１．オンチップ・システム用の集中型構成可能アドレス・マッピングと保護アーキテクチャ。
２．最終アドレス・マッピングと保護ハードウェア・モジュールについて、全ゲート・サイズの削減、電力消費の削減、及び／又は不要な信号ワイヤの省略を行うことができる１組の構成パラメータ。
３．設計者が、仕様言語を使用して設計時にアドレス・マッピングと保護ハードウェア・モジュールを構成し、最小限に抑えたハードウェア実装を生成するという目標を達成できるようにする能力。
【００１１】
図４に、最適化されたアドレス・マッピングと保護ハードウェアを生成するのに使用することができる処理フローを示す。まず、製品設計者は構成可能アーキテクチャを理解しなければならない（４０３）。アーキテクチャ（４２３）は、アドレス・マッピング方式の定義、保護方式の定義、構成パラメータ・セットの定義、仕様言語の定義を含む。次いで設計者は、製品要件に基づいて、最小のハードウェアでアドレス・マッピングと保護モジュールを設計することができる（４０５）。製品要件とユーザ・モデルに基づいて、設計者は、例えばシステム内のサービス・モジュールの数、サービス・モジュールに関するアドレス領域の数、アドレス領域の情報をどのように使用するかを決定すべきである（４４３）。
【００１２】
次に、設計者は、与えられた仕様言語を使用してアドレス・マッピングと保護ハードウェア・モジュールを指定する必要がある（４０７及び４２５）。終りに（４０９）、設計仕様を入力とす後処理ツールを使用し、アドレス・マッピングと保護ハードウェアに関して、最適化されたハードウェア・ゲート・レベル・ネットリスト（４２７）を生成する。
【００１３】
図３に、頂部にＮ個の処理ユニット（３０２−０、３０２−１から３０２−Ｎ）を備え、底部にＭ個のサービス・モジュール（３１８−０、３１８−１から３１８−Ｍ）を備えるオンチップ・システムを有する本発明の一実施形態のブロック図を示す。システムの中央には、アドレス・マッピングと保護モジュール３０６があり、アドレス・マッピング３０８と保護キー・マップ３１０と、その後に続く要求配信モジュール３１４が示されている。図３は、システムの要求配信側だけを示していることに留意されたい（すなわち、要求側であり、戻り側は示されていない）。本発明の一実施形態では、システムの使用モデルは以下の通りである。
【００１４】
・要求が処理ユニット（３２０−Ｎなど）からアドレス・マッピングと保護モジュール（３０６）に送られる。
【００１５】
・アドレス・マッピングと保護モジュール３０６では、「宛先アドレス」と「ソース保護ＩＤ」が要求（３０４で示すものなど）から抽出される。アドレスが復号され、アドレス・マップ（３０８）と比較され、サービス・モジュールがどこにあるか、及びどのように要求をモジュールに送るかが判明する。与えられた保護ＩＤが保護キー・マップ（３１０）に対してチェックされ、要求をサービス・モジュールに送ることが保護により許可されるのでそれを送るべきかどうかが判定される。図３には図示していないが、要求内の他の可能なフィールドは、「要求タイプ・フィールド」、「データ・フィールド」、（例えば、それがバースト・データ・ストリームであることを示すための）「データ・タイプ・フィールド」、「ユーザ提供要求情報」（例えば、ユーザがこのフィールドを使用して所有権、サブ要求タイプを与えることができる）であることに留意されたい。
【００１６】
・次に、要求（３１２や３１６で示すものなど）が、要求配信モジュール（３１４）によってサービス・モジュール（３１８−２など）に送られる。
【００１７】
上述のオンチップ・システムに対するセグメント化とアドレス領域を使用する構成可能アドレス・マッピングと保護アーキテクチャを有する本発明の一実施形態をここで説明する。概念的には、オンチップ・システム全体のアドレス空間をＲ個のアドレス領域に分割する。システム内の各サービス・モジュールは複数のアドレス領域を有することができる。Ｒ個のアドレス領域の１つと突き合わせる複雑さを低減するために、複数のアドレス領域を１つのアドレス・セグメントとしてグループ化することができる。システム内に最大Ｓ個のセグメントが存在することができる。特定のサービス・モジュールに要求を送るために、処理ユニットは、モジュールのアドレス領域内のアドレスで要求をタグ付けする必要がある。アドレス領域についての情報は、アドレス・マップ・ハードウェアに格納される領域レジスタに保たれる。アドレス・セグメントについての情報は、やはりアドレス・マップ・ハードウェアに格納されるセグメント・レジスタに保たれる。
【００１８】
システム内に最大Ｋ個の異なる保護キーが存在することができる。各保護キーは、保護キー・マップ・ハードウェア内にある１つの保護キー・レジスタに保たれる。各アドレス領域は少なくとも１つの保護キーと関連付けられ、各処理ユニットには１つ又は複数の保護ＩＤが割り当てられる。要求が処理ユニットから送られるとき、その要求に処理ユニットの保護ＩＤ（図５に示す５１５など）をタグ付けする。要求の宛先アドレスが復号され、サービス・モジュールのアドレス領域が識別されると、保護ＩＤが、そのアドレス領域に関連する保護キーに対してチェックされ、要求をサービス・モジュールに転送することが安全かどうかが確認される。
【００１９】
図５に、上述のアドレス・マッピングと保護アーキテクチャのハードウェア実装を有する本発明の一実施形態を示す。図５では、要求が、その宛先アドレス・タグ及び保護ＩＤタグ（図３の３０４で示したものなど）と共に示されている。宛先アドレスは、セグメント（ベース）アドレス部分５０１ａ、領域（ベース）アドレス部分５０１ｂ、領域内のオフセット５０１ｃという３つの部分を含む。アドレス・マッピング・ハードウェアは、Ｓ個のセグメント・レジスタ（５０３）とＲ個の領域レジスタ（例えば５０５ａ、ｂ、ｃ。また図３に示すようにさらに多くの領域ページが存在することができる）を含む。各アドレス・セグメントは、複数のアドレス領域を含むことができる。このことを、領域レジスタの１ページを各セグメント・レジスタに関連付けることによって示す（ページ５０５ａ、５０５ｂ、５０５ｃが、例えばそれぞれセグメント・レジスタ０、セグメント・レジスタ１、セグメント・レジスタ２に関連付けられる）。図５はまた、アドレス・セグメント０が５つの領域レジスタを有することも示す（５０５ａ）。
【００２０】
さらに、要求のセグメント・アドレスが、セグメント・レジスタの１つと突き合わせるのに使用され（５０９）、領域アドレスが、アドレス・マップに保たれる領域レジスタの１つ又は複数と突き合わせるのに使用される。合致する２つの信号を組み合わせることにより、通常のケースでは１つの単一マッチが生じる（５１１）。望ましい場合は、重複するマッチや失敗したマッチをエラーとして検出することができることに留意されたい。
【００２１】
単一マッチが生じた場合、領域に関連する保護キー・レジスタ番号が返され（５１９）、目標とするサービス・モジュールに関する経路指定情報も返される（５１３）。保護キー・レジスタ番号（５１９）は、保護キー・マップ・モジュール（５１７）から生じる無関係のマッチをフィルタするのに使用される。正のセキュリティ・オーケー信号（５２１）は、要求をサービス・モジュールに送ることができることを示す。
【００２２】
表１に、通常のマッチング・ケース（すなわち、単一アドレス・マッチが識別され、セキュリティ・チェックもオーケーであるケース）及びエラー・ケースの組合せと結果のまとめを示す。単一マッチが識別されたとき、宛先サービス・モジュールについての（合致した領域レジスタに含まれる）情報が下流側モジュールに転送される。例えば、
・セキュリティ・チェックを完了するために、保護キーＩＤが「セキュリティ・チェック・オーケー」回路に転送される。
宛先サービス・モジュールのデータ・ワード幅と物理ターゲットＩＤ（物理ターゲットＩＤはサービス・モジュールの物理位置情報を含む）が、要求配信モジュールに転送される。
【００２３】
【表１】
0004768990.tif 000002
【００２４】
１組の構成パラメータ及びレジスタ（加えて、レジスタの各タイプ内のレジスタ・フィールド）も上述のアーキテクチャに対して識別され、設計者は、アドレス・マッピングと保護モジュールを最小ハードウェアで構築するためにそれらを調整することができる。最終目標は、ハードウェア・モジュールのゲート・サイズ、電力消費、信号ワイヤを低減することである。以下に、構成パラメータ、その定義、及びそれがどのようにハードウェアに影響を及ぼす可能性があるかを列挙する。
【００２５】
・ＤａｔａＷｉｄｔｈ：このパラメータは、要求のデータ・ワードのサイズを表す。異なる処理ユニットから来る要求に対して異なるデータ・ワード・サイズが可能である。しかし、ここでは単一のデータ幅パラメータだけを使用する。したがって、処理ユニットから来る要求は、同一のデータ・ワード・サイズを有する。このパラメータを必要なデータ・ワード・サイズだけに設定することにより、ハードウェア・モジュール内のゲートとワイヤを節約することができる。
【００２６】
・ＡｄｄｒＷｉｄｔｈ：このパラメータは、オンチップ・システムに関するアドレス・タグ幅、すなわちアドレス・マッピングと保護モジュールの寸法を表す。このパラメータを必要なアドレス幅だけに設定することにより、ハードウェア・モジュール内の多数のゲート及びワイヤを節約することができる。
【００２７】
・ＮｕｍＳｅｇｍｅｎｔｓ：このパラメータは、システム内にセグメント・レジスタがいくつ存在することができるかを示し、不要なセグメント・レジスタを除去するのに使用される。
【００２８】
・各セグメント・レジスタについて、
ＳｅｇｍｅｎｔＳｉｚｅレジスタ・フィールド：このフィールドはセグメントのサイズを示す。このフィールドを使用して、セグメント・レジスタに関するビット数を削減することができる。
ＳｅｇｍｅｎｔＢａｓｅレジスタ・フィールド：このフィールドは、アドレス・セグメントのセグメント・ベース・アドレスを示す。
【００２９】
・ＮｕｍＲｅｇｉｏｎｓ：このパラメータは、システム内に領域レジスタがいくつ存在することができるかを示し、不要な領域レジスタを除去するのに使用される。
【００３０】
・各領域レジスタについて、
ＲｅｇｉｏｎＳｉｚｅレジスタ・フィールド：このフィールドは、アドレス領域のサイズを示す。これを使用して、領域レジスタに関するビット数を削減することができる。
ＲｅｇｉｏｎＢａｓｅレジスタ・フィールド：このフィールドは、アドレス領域の領域ベース・アドレスを示す。
ＲｅｇｉｏｎＰｒｏｔｅｃｔｉｏｎＫｅｙＲｅｇｉｓｔｅｒＮｕｍ（ＲＰＫＲＮ）レジスタ・フィールド：このフィールドは、単一マッチがこのアドレス領域上で生じたときに、セキュリティ・チェック・ロジックでどの保護キー・レジスタを使用すべきかを示す。このタイプの複数のレジスタ・フィールドが存在することができるが、ここでは１つだけを使用する。
ＲｅｇｉｏｎＤａｔａＷｉｄｔｈレジスタ・フィールド：このフィールドは、アドレス領域をリンクするサービス・モジュールのデータ・ワード幅を示す。可能なら、これを使用して、サービス・モジュールに接続されるデータ・バス・ワイヤを削減することができる。データ・パッキング又はデータ・アンパッキングが必要であるかどうかを示すのにこれを使用することもできる。パッキング又はアンパッキングは、要求のソース処理ユニットのデータ・ワード・サイズが要求の宛先サービス・モジュールのデータ・ワード・サイズと異なるときに必要となる可能性がある。
ＲｅｇｉｏｎＰｈｙｓｉｃａｌＴａｒｇｅｔＩＤ（ＲＰＴＩＤ）レジスタ・フィールド：このフィールドは、アドレス領域とサービス・モジュールの間の物理リンケージを記述する。この物理リンケージは、例えば（１）要求をサービス・モジュールに送るために要求配信モジュールに渡すべきハードウェア経路指定情報、又は（２）ハードウェア信号ビット位置でよく、それによって、要求配信モジュールが信号をアサートするときに、要求がサービス・モジュールに送られる。
ＲｅｇｉｏｎＡｄｄｒｅｓｓＳｐａｃｅ（ＲＡＳ）レジスタ・フィールド：このフィールドは、サービス・モジュールのアドレス領域をさらに区分することを可能にする。
ＲｅｇｉｏｎＥｎａｂｌｅレジスタ・フィールド：このフィールドは、この領域レジスタが現設計に対して使用されるかどうかを示し、又は領域が現在利用可能かどうかを示す。
【００３１】
・ＮｕｍＰｒｏｔｅｃｔｉｏｎＫｅｙｓ：このパラメータは、システム内で保護キー・レジスタがいくつ存在することができるかを示し、不要な保護キー・レジスタを除去するのに使用される。加えて、保護キー番号が格納される場合、各領域レジスタ内のビットも保存することができる。
【００３２】
・各保護キー・レジスタについて、
ＰｒｏｔｅｃｔｉｏｎＫｅｙＢｉｔＶｅｃｔｏｒレジスタ・フィールド：このビット・ベクトルは、この保護キー・レジスタを指し示す領域レジスタによってリンクされるサービス・モジュールにどの保護ＩＤがアクセスすることを許可されるかを示す。位置Ｎ中のビット１は、保護ＩＤのＮでタグ付けされた要求が、要求の宛先サービス・モジュールにアクセスすることが許可されることを示す。
【００３３】
・ＮｕｍＰｒｏｔｅｃｔｉｏｎＩＤｓ：このパラメータは、システム内で異なる保護ＩＤがいくつ存在することができるかを示し、ＰｒｏｔｅｃｔｉｏｎＫｅｙＢｉｔＶｅｃｔｏｒレジスタ・フィールド内の不要な保護キー・ビットを除去するのに使用される。
【００３４】
・Ｅｎｄｉａｎｅｓｓ：このパラメータは、アーキテクチャでビッグ・エンディアンが適用されるか、それともリトル・エンディアンが適用されるかを示す。このパラメータは、データ・パッキング／アンパッキングから来るアドレス・バイト位置及びデータ・バイト・シーケンスを決定する。
【００３５】
さらに、各レジスタのレジスタ・フィールドが以下の３つの使用タイプの１つであると指定することもでき、その結果、最小の論理設計を適用してハードウェアを構築し、面積及び電力を節約することができる。
【００３６】
・アクセス不能（ＮＡ）レジスタ・フィールド：レジスタ・フィールドがパワーオン値に固定され、読み取ることも書き込むこともできない。
【００３７】
・読取り専用（ＲＯ）レジスタ・フィールド：レジスタ・フィールドがパワーオン値に固有であり、オペレーション中にソフトウェア可視（読取り専用）である必要がある。この場合、レジスタ・フィールドのソフトウェア読取りアクセスを可能にするために余分なゲートが必要である。
【００３８】
・読取り書込み（ＲＷ）レジスタ・フィールド：レジスタ・フィールドをソフトウェアで動的に読み取ることができ、書き込むことができる。このタイプのレジスタ・フィールドでは、ソフトウェア変更を可能にするために（例えばフリップ・フロップ及びゲートの形態の）余分な回路が必要である。
【００３９】
加えて、各レジスタ・フィールドを「エクスポーティング・コンスタント」（ＥＣ）レジスタ・フィールドとして使用することもでき、それによって、レジスタ・フィールドのネットリスト部分が最終ネットリストのトップ・レベルにエクスポートされる。これにより、全チップ生成プロセス中の終りに製品によって必要とされる、レジスタ・フィールドのパワーオン値の手動での修正がより容易となる。例えば、各保護キー・レジスタのＰｒｏｔｅｃｔｉｏｎＫｅｙＢｉｔＶｅｃｔｏｒレジスタ・フィールドを「エクスポーティング・コンスタント」フィールドとして宣言することができる。したがって、最終保護キー・マップを製品生成プロセスの終りにチップに入れることが可能となる。
【００４０】
図６及び図７に、２つのほぼ同一のアドレス・マッピングと保護構成を示す。図６のレジスタ・フィールドはＲＯ、ＲＷ、又はＮＡタイプである。しかし、図７では、すべてのレジスタ・フィールドがＮＡタイプであり、加えて未使用領域レジスタ１が除去される。１次推定から、図７で節約されるフリップ・フロップ（フロップとも呼ぶ）の数は８２である。すなわち、図３の中央に示すように、アドレス・マップ（３０８）と保護キー・マップ（３１０）ではフロップが使用されない。さらに、（１）ハードウェア・モジュールのアドレス幅が２０から１７に削減され、（２）保護ＩＤの数が８に減らされる場合、図６の場合と比べて、追加のバッファ・レジスタ・ビット及び信号ワイヤを節約できることに留意されたい。
【００４１】
前述のように、設計者が製品に対して最小の設計を容易に指定できるように仕様言語を提供する必要がある。以下に、本発明の一実施形態における、図６に示す例示的仕様を列挙する。
Address Mapping and Protection Module{
DataWidth:16
AddrWidth:20
Endianess:little
NumSegments:2
NumRegions:5
NumProtectionKeys:2
NumProtectionKeyIDs:16
SEGMENT(0){
SegmentSize:64KB{access RO}
SegmentBase:0x00000{access RW}
}
SEGMENT(1){
SegmentSize:64KB{access RO}
SegmentBase:0x10000{access RW}
}
REGION(0){
Inside SEGMENT(0)
RegionSize:256B{access RO}
RegionBase:0x00100{access RW}
RegionProtectionKeyRegisterNum:0{access RW}
RegionDataWidth:2B{access NA}
RegionPhysicalTargetID:link to ServiceModule 1 using "targetselect pin 1"{access NA}
RegionAddressSpace:0{access RO}
RegionEnable:Yes{access RW}
}
REGION(1){
Inside SEGMENT(O)
RegionSize:4KB{access RO}
RegioriBase:0x01000{access RW}
RegionProtectionKeyRegisterNum:1{access RW}
RegionDataWidth:2B{access NA}
RegionPhysicalTargetID:link to ServiceModule 1 using "targetselect pin 1"{access NA}
RegionAddressSpace:1{access RO}
RegionEnable:No{access RW}
}
REGION(2){
Inside SEGMENT(O)
RegionSize:16B{access RO}
RegionBase:0x00000{access RW}
RegionProtectionKeyRegisterNum:0{access RW}
RegionDataWidth:4B{access NA}
RegionPhysicalTargetID:link to ServiceModule 0 using "targetselect pin 0"{access NA}
RegionAddressSpace:0{access RO}
RegionEnable:Yes{access RW}
}
REGION(3){
Inside SEGMENT(1)
RegionSize:4KB{access RO}
RegionBase:0x10000{access RW}
RegionProtectionKeyRegisterNum:1{access RW}
RegionDataWidth:1B{access NA}
RegionPhysicalTargetID:link to ServiceModule 2 using "targetselect pin 2"{access NA}
RegionAddressSpace:0{access RO}
RegionEnable:Yes{access RW}
}
REGION(4){
Inside SEGMENT(1)
RegionSize:4KB{access RO}
RegionBase:0x11000{access RW}
RegionProtectionKeyRegisterNum:0{access RW}
RegionDataWidth:4B{access NA}
RegionPhysicalTargetID:link to ServiceModule 3 using "targetselect pin 3"{access NA}
RegionAddressSpace:0{access RO}
RegionEnable:Yes{access RW}
}
PROTECTIONKEY(0){
ProtectionKeyBitVector:Ox007B{access RW and EC}
}
PROTECTIONKEY(1){
ProtectionKeyBitVector:0x0085{access RW and EC}
}
【００４２】
上記の例（図６にも示す）では、２つのセグメントと５つのアドレス領域が存在する。アドレス領域１は初期化時に使用不能にされる（すなわち、領域レジスタのＲｅｇｉｏｎＥｎａｂｌｅフィールドが「Ｎｏ」にセットされる）が、このフィールドは読取り／書込み可能であるので、実行時に再構成することができる。２つの保護キー・レジスタが存在し、それぞれが１６ビットのビット・ベクトルを有する。この例はまた、パワーオン時に以下を指定する。
【００４３】
・要求アドレス幅が２０ビットであり、データ・ワード・サイズが１６ビットである。
【００４４】
・４つのサービス・モジュールＳｅｒｖｉｃｅＭｏｄｕｌｅ０、１、２、及び３が存在する。
【００４５】
・アドレス領域０、１、２がアドレス・セグメント０内に存在し、それぞれアドレス０ｘ００１００、０ｘ０１０００、０ｘ００００に基づき、サイズが２５６バイト、４Ｋバイト、１６バイトである。領域レジスタ１は現時点では使用可能にされないが、後の追加として使用することができる。
【００４６】
・アドレス領域３、４がアドレス・セグメント１内に存在し、それぞれアドレス０ｘ１００００、０ｘ１１０００に基づき、どちらもサイズが４Ｋバイトである。
【００４７】
・保護ＩＤ  ０、１、３、４、５、６（ＰｒｏｔｅｃｔｉｏｎＫｅｙＢｉｔＶｅｃｔｏｒ０ｘ００７Ｂ）を使用する処理ユニットから来る要求は、要求アドレスに応じてＳｅｒｖｉｃｅＭｏｄｕｌｅ  ０、１、３に行くことができる。保護ＩＤ  ０、２、７（ＰｒｏｔｅｃｔｉｏｎＫｅｙＢｉｔＶｅｃｔｏｒ０ｘ００８５）を使用する処理ユニットから来る要求は、要求アドレスがアドレス領域３に入る場合、ＳｅｒｖｉｃｅＭｏｄｕｌｅ  ２に行くことができる。
【００４８】
図７に示す設計では、その仕様は以下のようになる。
Address Mapping and Protection Module{
DataWidth:16
AddrWidth:20
Endianess:little
NumSegments:2
NumRegions:4
NumProtectionKeys:2
NumProtectionKeyIDs:16
SEGMENT(0){
SegmentSize:64KB{access NA}
SegmentBase:0x00000{access NA}
}
SEGMENT(1){
SegmentSize:64KB{access NA}
SegmentBase:0x10000{access NA}
}
REGION(0){
Inside SEGMENT(0)
RegionSize:256B{access NA}
RegionBase:0x00100{access NA}
RegionProtectionKeyRegisterNum:0{access NA}
RegionDataWidth:2B{access NA}
RegionPhysicalTargetID:link to ServiceModule 1 using "targetselect pin 1"{access NA}
RegionAddressSpace:0{access NA}
RegionEnable:Yes{access NA}
}
REGION(2){
Inside SEGMENT(O)
RegionSize:16B{access NA}
RegioriBase:0x00000{access NA}
RegionProtectionKeyRegisterNum:0{access NA}
RegionDataWidth:4B{access NA}
RegionPhysicalTargetID:link to ServiceModule 0 using "targetselect pin 0"{access NA}
RegionAddressSpace:0{access NA}
RegionEnable:Yes{access NA}
}
REGION(3){
Inside SEGMENT(1)
RegionSize:4KB{access NA}
RegionBase:0x10000{access NA}
RegionProtectionKeyRegisterNum:1{access NA}
RegionDataWidth:1B{access NA}
RegionPhysicalTargetID:link to ServiceModule 2 using "targetselect pin 2"{access NA}
RegionAddressSpace:0{access NA}
RegionEnable:Yes{access NA}
}
REGION(4){
Inside SEGMENT(1)
RegionSize:4KB{access NA}
RegionBase:0x11000{access NA}
RegionProtectionKeyRegisterNum:0{access NA}
RegionDataWidth:4B{access NA}
RegionPhysicalTargetID:link to ServiceModule 3 using "targetselect pin 3"{access NA}
RegionAddressSpace:0{access NA}
RegionEnable:Yes{access NA}
}
PROTECTIONKEY(0){
ProtectionKeyBitVector:0x007B{access NA and EC}
}
PROTECTIONKEY(1){
ProtectionKeyBitVector:0x0085{access NA and EC}
}
【００４９】
この説明で述べ、図４で示すように、最終ステージの１つでは、指定の設計（上記で示した仕様テキストなど）を入力とする後処理ツールが使用され、後処理ツールは、アドレス・マッピングと保護ハードウェアに関する最適化ハードウェア・ネットリストを生成する。
【００５０】
したがって、オンチップ・システム用の構成可能アドレス・マッピングと保護ハードウェアの方法と装置を開示した。
【００５１】
図１に戻ると、図１は、記載の技法を適用することができるネットワーク環境１００を示す。ネットワーク環境１００は、Ｓ個のサーバ１０４−１から１０４−Ｓと、Ｃ個のクライアント１０８−１から１０８−Ｃを接続するネットワーク１０２を有する。図示するように、Ｓ個のサーバ１０４−１から１０４−ＳとＣ個のクライアント１０８−１から１０８−Ｃの形態のいくつかのシステムが、ネットワーク１０２を介して互いに接続されている。ネットワーク１０２は例えばオンチップ通信ネットワークでよい。あるいは、ネットワーク１０２は、チップ間通信通信、光ネットワーク、インターネット、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、サテライト・リンク、ファイバ・ネットワーク、ケーブル・ネットワーク、あるいはこれら及び／又はその他の組合せでよく、又はその１つ又は複数を含むことができることに留意されたい。サーバは、例えばチップ上のマスタ・デバイス、メモリ、マイクロプロセッサ通信インターフェースなどの知的財産コア、ディスク記憶システム、及び／又はコンピューティング資源を表すことができる。同様に、クライアントは、コンピューティング機能、ストレージ機能、及び閲覧機能を有することができる。本明細書に記載の方法及び装置は、ＬＡＮ、ＷＡＮ、システム・バス、オンチップ・バスなど、ローカルであってもリモートであっても、本質的にどんなタイプの通信手段又はデバイスにも適用することができる。クライアント及びサーバという用語の使用は、誰が通信を開始し（クライアント）、誰が応答するか（サーバ）を指定する際の明確さのためであることをさらに理解されたい。明示的に述べるのでない限り、階層は示唆されない。両方の機能が単一通信デバイス内にある可能性があり、その場合、クライアント−サーバ及びサーバ−クライアント関係はピアツーピアと見ることができる。したがって、１０８−１と１０４−Ｓなどの２つのデバイスがどちらも通信を開始し、通信に応答することができる場合、その通信はピアツーピアと見ることができる。同様に、１０４−１と１０４−Ｓの間の通信や１０８−１と１０８−Ｃの間の通信は、そのような各通信デバイスが通信の開始と通信への応答ができる場合にピアツーピアと見ることができる。
【００５２】
図２に戻ると、図２は、図１に示すクライアント及び／又はサーバのいずれかを表すことのできるシステム２００をブロック図形式で示す。ブロック図は高レベルの概念的表現であり、様々な方式や様々なアーキテクチャで実装することができる。バス・システム２０２は中央演算処理ユニット（ＣＰＵ）２０４、読取り専用メモリ（ＲＯＭ）２０６、ランダム・アクセス・メモリ（ＲＡＭ）２０８、ストレージ２１０、ディスプレイ２２０、オーディオ２２２、キーボード２２４、ポインタ２２６、種々の入出力（Ｉ／Ｏ）デバイス２２８、通信２３０を相互接続する。バス・システム２０２は、例えば、オンチップ・バス、システム・バス、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、米国電気電子学会（ＩＥＥＥ）規格番号１３９４（ＦｉｒｅＷｉｒｅ）、ユニバーサル・シリアル・バス（ＵＳＢ）などのうちの１つ又は複数でよい。ＣＰＵ２０４は、単一のコンピューティング資源、複数のコンピューティング資源、さらには分散コンピューティング資源でよい。ストレージ２１０は、コンパクト・ディスク（ＣＤ）、デジタル・バーサタイル・ディスク（ＤＶＤ）、ハード・ディスク（ＨＤ）、光ディスク、テープ、フラッシュ、メモリ・スティック、ビデオ・レコーダなどでよい。ディスプレイ２２０は、例えば陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プロジェクション・システム、テレビジョン（ＴＶ）などでよい。システムの実際の実装に応じて、システムは、ブロック図の構成要素の一部、すべて、さらに多くの構成要素、又はブロック図の構成要素の再構成を含むことができることに留意されたい。例えば、集積回路上のオンチップ通信システムは、ディスプレイ２２０、キーボード２２４、ポインタ２２６がない可能性がある。別の例は、シン・クライアントが、例えば従来のキーボードのないワイヤレス・ハンドヘルド・デバイスであっても良い。すなわち、図２のシステムに対して多くの変形形態が可能である。
【００５３】
本発明を議論し、理解するために、技法及び手法を記述するのに当業者によって様々な用語が使用されることを理解されたい。さらにこの説明では、説明の都合上、本発明の完全な理解を与えるために多数の特定の詳細が説明される。しかし、こうした特定の詳細なしに本発明を実施できることは当業者には明らかであろう。ある場合には、本発明をあいまいにするのを避けるために、周知の構造やデバイスを詳細に示さずに、ブロック図の形式で示する。当業者が本発明を実施することが可能となるようにこうした実施形態を十分詳細に説明するが、本発明の範囲から逸脱することなく他の実施形態も使用できること、論理的、機械的、電気的、その他の変更を行えることを理解されたい。
【００５４】
アルゴリズムと、例えばコンピュータ・メモリ内のデータ・ビットに対するオペレーションの記号表現とによって説明の一部が提示されている。こうしたアルゴリズム的説明及び表現は、データ処理技術の技術者により、他の当業者に研究の内容を最も効率的に伝えるために使用される手段である。ここでは、また一般に、アルゴリズムは、所望の結果を得る首尾一貫した一続きの動作であると表現される。動作は、物理量の物理的操作を必要とするものである。通常は、必須ではないが、こうした量は、格納、転送、結合、比較、又は操作することのできる電気的、磁気、又は光学的信号の形を取る。原理的には公共的用途で、こうした信号をビット、値、要素、シンボル、文字、用語、数字などとして参照することが時には好都合であることが実証されている。
【００５５】
しかし、上記及び類似の用語のすべてを適切な物理量と関連付けるべきであり、それらは、単にこうした量に適用される好都合なラベルに過ぎないことに留意されたい。具体的に述べるのでない限り、議論から明らかなように、説明全体を通して、「処理」、「コンピューティング」、「計算」、「決定」、「通信」、「表示」などの用語を使用する議論は、電子デバイス又はコンピュータ・システムのレジスタ及びメモリ内の物理（電子）量として表されるデータを、電子デバイス及び／又はコンピュータ・システム・メモリ又はレジスタあるいはその他のそのような情報記憶、伝送、又は表示デバイス内の物理量として同様に表される他のデータに操作及び変換するコンピュータ・システム又は電子デバイスの動作及びプロセスを指すことがある。
【００５６】
本発明は、本明細書のオペレーションを実行する装置によって実装することができる。この装置は、必要とされる目的のために特別に構築することができ、又はコンピュータ内に格納されたコンピュータ・プログラムによって選択的に活動化又は再構成される汎用コンピュータを含むことができる。このようなコンピュータ・プログラムは、限定はしないが、フロッピィ・ディスク、ハード・ディスク、光ディスク、コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル・バーサタイル・ディスク（ＤＶＤ）、磁気光ディスク、読取り専用メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、電気プログラム可能読取り専用メモリ（ＥＰＲＯＭ）、電気消去可能プログム可能読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、磁気又は光学式カードなどを含む任意のタイプのディスク、コンピュータに対してローカル又はリモートの電子命令を格納するのに適した任意のタイプの媒体などのコンピュータ可読記憶媒体に格納することができる。
【００５７】
本明細書で提示したアルゴリズム及び表示は、何らかの特定のコンピュータ又はその他の装置に本質的に関係するわけではない。本明細書の教示に従って様々な汎用システムをプログラムと共に使用することができ、又はこの必要とされる方法を実施するのに、より特殊化された装置を構築することが好都合であることが判明することがある。例えば、本発明による方法のいずれかをハードワイヤード回路として実装することができ、汎用プロセッサをプログラミングすることによって実装することができ、又はハードウェアとソフトウェアの任意の組合せによって実装することができる。ハンドヘルド・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベース又はプログラム可能な消費者向け電子装置、デジタル信号処理（ＤＳＰ）デバイス、セット・トップ・ボックス、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータなどを含む、記載以外のコンピュータ・システム構成で本発明を実施できることを当業者は直ちに理解されよう。本発明はまた、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散コンピューティング環境でも実施することができる。この通信ネットワークは、サイズによって限定されず、例えばオンチップ通信から、インターネットなどのＷＡＮにまで及ぶことがある。
【００５８】
本発明の方法は、コンピュータ・ソフトウェアを使用して実現することができる。認識される規格に準拠するプログラミング言語で書かれる場合、方法を実施するように設計された命令のシーケンスを、様々なハードウェア・プラットフォーム上で実行し、様々なオペレーティング・システムとインターフェースするようにコンパイルすることができる。様々なプログラミング言語を使用して本明細書に記載の発明の教示を実現できることを理解されよう。さらに、ある形態又は別の形態（例えば、プログラム、プロシージャ、アプリケーション、ドライバ、．．．）のソフトウェアが動作し、又は結果を引き起こすと述べることは当技術分野で一般的である。このような表現は単に、コンピュータによるソフトウェアの実行が、コンピュータのプロセッサに動作を実行させ、又は結果を生成させると述べることを簡略化したものに過ぎない。
【００５９】
通信、プロトコル、アプリケーション、実装、機構などを記述するのに様々な用語及び技法が当業者によって使用されることを理解されたい。そのような一技法は、技法の実装をアルゴリズム又は数式によって記述することである。すなわち、例えば技法をコンピュータ上の実行コードとして実装することができるが、その技法の表現は、公式、アルゴリズム、又は数式としてより適切かつ簡明に伝達及び通信される。したがって、Ａ＋Ｂ＝Ｃを表すブロックが、そのハードウェア及び／又はソフトウェアとしての実装が２つの入力（Ａ及びＢ）を取って合計出力（Ｃ）を生成する加法関数であることを当業者は理解されよう。したがって、公式、アルゴリズム、又は数式を記述として使用することは、少なくともハードウェア及び／又はソフトウェア（本発明の技法を実施形態として実施ならびに実装できるコンピュータ・システムなど）としての物理的実施形態を有すると理解すべきである。
【００６０】
機械可読媒体は、マシン（例えばコンピュータ）によって読取り可能な形式の情報を格納及び伝送する任意の機構を含むと理解される。例えば、機械可読媒体は、読取り専用メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュ・メモリ・デバイス、電気的、光学的、音響的、又はその他の形態の伝播信号（例えば搬送波、赤外線信号、デジタル信号など）などを含む。
【００６１】
したがって、オンチップ・システム用の構成可能アドレス・マッピングと保護アーキテクチャ及びハードウェアのための方法及び装置を説明した。
【図面の簡単な説明】
【００６２】
【図１】本発明の方法及び装置を実施することができるネットワーク環境を示す図である。
【図２】コンピュータ・システムのブロック図である。
【図３】Ｎ個の処理ユニット、Ｍ個のサービス・モジュール、アドレス・マッピングと保護モジュール、及び要求配信モジュールを備えるオンチップ・システムをブロック図形式で示す本発明の一実施形態を示す図である。
【図４】最適化されたアドレス・マッピングと保護ハードウェアを生成する際のプロセスを流れ図形式で示す本発明の一実施形態を示す図である。
【図５】構成可能アドレス・マッピングと保護アーキテクチャのためのハードウェア実装をブロック図形式で示す本発明の一実施形態を示す図である。
【図６】いくつかの可能な読取り専用、読取り書込み、又はアクセス不能構成パラメータの定義を表形式で示す本発明の一実施形態を示す図である。
【図７】いくつかの可能なアクセス不能構成パラメータの定義を表形式で示す本発明の一実施形態を示す図である。
【図１】
0004768990.tif 000003
【図２】
0004768990.tif 000004
【図３】
0004768990.tif 000005
【図４】
0004768990.tif 000006
【図５】
0004768990.tif 000007
【図６】
0004768990.tif 000008
【図７】
0004768990.tif 000009