(57)【要約】【課題】周辺デバイスから使用可能なアドレスを制限することなく、デバイス識別子とアクセスキーとを対応させる。【解決手段】バス番号テーブル１２１は、各エントリに保持されたバス番号の中から、入出力デバイス識別子７１０のバス番号７１１に一致するエントリを検索する機能を有する。一致するエントリが存在する場合（ＰＣＩデバイスの場合）には、その格納位置がバスインデックスとされ、デバイス番号７１２および機能番号７１３とともにアクセスインデックスとなる。一致するエントリが存在しない場合（ＰＣＩｅデバイスの場合）には、バス番号７１１および機能番号７１３がアクセスインデックスとなる。アクセスキーメモリ１２３はアクセスインデックスにより索引され、アクセスキーを出力する。【選択図】図６
2010170237.tif 000002
【特許請求の範囲】
【請求項１】
周辺デバイスのデバイス識別子を表すビットフィールドの一部である部分ビットフィールドを前記部分ビットフィールドよりもビット幅の短い短縮ビットフィールドに変換するビットフィールド変換部と、
前記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを前記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、
前記短縮ビットフィールドへの変換が成功した場合には前記短縮ビットフィールドを含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引し、前記短縮ビットフィールドへの変換が失敗した場合には前記部分ビットフィールドを含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引する索引部と
を具備するアクセスキー生成装置。
【請求項２】
周辺デバイスのデバイス識別子を表すビットフィールドの一部であるバス番号を前記バス番号よりもビット幅の短い短縮バス番号に変換するバス番号変換部と、
前記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを前記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、
前記短縮バス番号への変換が成功した場合には前記短縮バス番号を含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引し、前記短縮バス番号への変換が失敗した場合には前記バス番号を含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引する索引部と
を具備するアクセスキー生成装置。
【請求項３】
前記デバイス識別子は、前記バス番号とデバイス番号とを含み、
前記索引部は、前記短縮バス番号への変換が成功した場合には前記短縮バス番号と前記デバイス番号とを含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引し、前記短縮バス番号への変換が失敗した場合には前記バス番号を含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引する
請求項２記載のアクセスキー生成装置。
【請求項４】
前記デバイス識別子は、前記バス番号とデバイス番号と機能番号とからなり、
前記索引部は、前記短縮バス番号への変換が成功した場合には前記短縮バス番号と前記デバイス番号と前記機能番号とから特定される前記アクセスキー保持部の領域から前記アクセスキーを索引し、前記短縮バス番号への変換が失敗した場合には前記バス番号と前記機能番号とから特定される前記アクセスキー保持部の領域から前記アクセスキーを索引する
請求項２記載のアクセスキー生成装置。
【請求項５】
前記バス番号変換部は、前記バス番号を保持するエントリを複数備え、前記エントリの何れかに変換対象となるバス番号が保持されている場合には前記短縮バス番号への変換が成功したものとして当該エントリに固有に付与された番号を前記短縮バス番号として出力し、前記エントリの何れにも変換対象となるバス番号が保持されていない場合には前記短縮バス番号への変換が失敗したものとする
請求項２記載のアクセスキー生成装置。
【請求項６】
周辺デバイスのデバイス識別子を表すビットフィールドの一部である部分ビットフィールドを前記部分ビットフィールドよりもビット幅の短い短縮ビットフィールドに変換するビットフィールド変換部と、
前記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを前記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、
前記短縮ビットフィールドへの変換が成功した場合には前記短縮ビットフィールドを含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引し、前記短縮ビットフィールドへの変換が失敗した場合には前記部分ビットフィールドを含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引する索引部と、
前記索引されたアクセスキーを用いて前記メモリへのアクセスを制御するメモリアクセス制御部と
を具備する情報処理装置。
【請求項７】
周辺デバイスのデバイス識別子を表すビットフィールドの一部であるバス番号を前記バス番号よりもビット幅の短い短縮バス番号に変換するバス番号変換部と、
前記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを前記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、
前記短縮バス番号への変換が成功した場合には前記短縮バス番号を含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引し、前記短縮バス番号への変換が失敗した場合には前記バス番号を含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引する索引部と、
前記索引されたアクセスキーを用いて前記メモリへのアクセスを制御するメモリアクセス制御部と
を具備する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセスキー生成装置に関し、特に周辺デバイスからのメモリアクセスを制御するために必要なアクセスキーを生成するアクセスキー生成装置および情報処理装置に関する。
【背景技術】
【０００２】
入出力アドレスがプロセッサの物理メモリにマッピングされるシステムにおいて、周辺デバイスからメモリへアクセスする際、何の制限も設けないとすると、悪意のあるユーザソフトウェアにより、不正なアドレス領域にアクセスされてしまうことが起こり得る。例えば、ＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）を無制限にユーザソフトウェアに開放した場合に、そのような問題が生じ得る。この問題に対して、例えばプロセッサＣｅｌｌ（セル：Cell Broadband Engine）では、周辺デバイスが有する１１ビットのアクセスキーとその周辺デバイスがアクセス可能なアドレス領域とをペアにしたアドレス変換テーブルが設けられている。このアドレス変換テーブルは特権ソフトウェアにより設定されるため、特権ソフトウェアによって許可されていないアドレス領域には周辺デバイスがアクセスできないように制御される。
【０００３】
しかし、このような制御を一般的なバスシステムにおいて実現しようとすると以下のような問題が生じる。すなわち、例えば、ＰＣＩ（Peripheral Component Interconnect）バスを用いたシステムで利用することを想定した場合、システム内のデバイスを個別に識別するデバイス識別子は１６ビットであるため、１１ビットのアクセスキーではビット長が不足してしまう。
【０００４】
これに対して、周辺デバイスのデバイス識別子をアクセスキーおよびアドレスの一部として割り当てる技術が知られている。例えば、デバイス識別子の下位１１ビットをアクセスキーとして利用し、上位５ビットをセグメント番号およびページ番号に対応付けることによりアクセスの許否を決定する情報処理装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２００７／１２９４８２号パンフレット（第７乃至９頁）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の従来技術によれば、デバイス識別子とアクセスキーとの間のビット数の不一致を調整することが可能となる。しかしながら、この従来技術では、アクセスキーのビット長からはみ出したデバイス識別子をアドレスの一部に割り当てるため、周辺デバイスから使用可能なアドレスが制限されるという問題がある。また、ソフトウェアにより自由に設定することができないデバイス識別子の一部がアドレスとなるため、特権ソフトウェアによって設定されるアドレス変換テーブルが複雑になるおそれがある。さらに、デバイス識別子とアクセスキーとの間の関係が固定されてしまい、異なるデバイス識別子を有する複数の周辺デバイスに対して同じキーを与えることが困難になる。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、周辺デバイスから使用可能なアドレスを制限することなく、デバイス識別子とアクセスキーとを対応させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、周辺デバイスのデバイス識別子を表すビットフィールドの一部である部分ビットフィールドを上記部分ビットフィールドよりもビット幅の短い短縮ビットフィールドに変換するビットフィールド変換部と、上記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを上記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、上記短縮ビットフィールドへの変換が成功した場合には上記短縮ビットフィールドを含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引し、上記短縮ビットフィールドへの変換が失敗した場合には上記部分ビットフィールドを含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引する索引部とを具備するアクセスキー生成装置である。これにより、周辺デバイスのデバイス識別子に基づいてアクセスキーを索引するという作用をもたらす。
【０００９】
また、本発明の第２の側面は、周辺デバイスのデバイス識別子を表すビットフィールドの一部であるバス番号を上記バス番号よりもビット幅の短い短縮バス番号に変換するバス番号変換部と、上記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを上記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、上記短縮バス番号への変換が成功した場合には上記短縮バス番号を含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引し、上記短縮バス番号への変換が失敗した場合には上記バス番号を含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引する索引部とを具備するアクセスキー生成装置である。これにより、周辺デバイスのデバイス識別子に基づいてアクセスキーを索引するという作用をもたらす。
【００１０】
また、この第２の側面において、上記デバイス識別子は、上記バス番号とデバイス番号とを含み、上記索引部は、上記短縮バス番号への変換が成功した場合には上記短縮バス番号と上記デバイス番号とを含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引し、上記短縮バス番号への変換が失敗した場合には上記バス番号を含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引するようにしてもよい。これにより、バスの種類に応じたインデックスアドレスによりアクセスキーを索引するという作用をもたらす。
【００１１】
また、この第２の側面において、上記デバイス識別子は、上記バス番号とデバイス番号と機能番号とからなり、上記索引部は、上記短縮バス番号への変換が成功した場合には上記短縮バス番号と上記デバイス番号と上記機能番号とから特定される上記アクセスキー保持部の領域から上記アクセスキーを索引し、上記短縮バス番号への変換が失敗した場合には上記バス番号と上記機能番号とから特定される上記アクセスキー保持部の領域から上記アクセスキーを索引するようにしてもよい。これにより、機能番号を含むデバイス識別子に基づいてアクセスキーを索引するという作用をもたらす。
【００１２】
また、この第２の側面において、上記バス番号変換部は、上記バス番号を保持するエントリを複数備え、上記エントリの何れかに変換対象となるバス番号が保持されている場合には上記短縮バス番号への変換が成功したものとして当該エントリに固有に付与された番号を上記短縮バス番号として出力し、上記エントリの何れにも変換対象となるバス番号が保持されていない場合には上記短縮バス番号への変換が失敗したものとするように構成してもよい。これにより、保持されたバス番号に応じて短縮バス番号への変換を試みるという作用をもたらす。
【００１３】
また、本発明の第３の側面は、周辺デバイスのデバイス識別子を表すビットフィールドの一部である部分ビットフィールドを上記部分ビットフィールドよりもビット幅の短い短縮ビットフィールドに変換するビットフィールド変換部と、上記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを上記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、上記短縮ビットフィールドへの変換が成功した場合には上記短縮ビットフィールドを含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引し、上記短縮ビットフィールドへの変換が失敗した場合には上記部分ビットフィールドを含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引する索引部と、上記索引されたアクセスキーを用いて上記メモリへのアクセスを制御するメモリアクセス制御部とを具備する情報処理装置である。これにより、周辺デバイスのデバイス識別子に基づいてアクセスキーを索引するという作用をもたらす。
【００１４】
また、本発明の第４の側面は、周辺デバイスのデバイス識別子を表すビットフィールドの一部であるバス番号を上記バス番号よりもビット幅の短い短縮バス番号に変換するバス番号変換部と、上記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを上記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、上記短縮バス番号への変換が成功した場合には上記短縮バス番号を含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引し、上記短縮バス番号への変換が失敗した場合には上記バス番号を含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引する索引部と、上記索引されたアクセスキーを用いて上記メモリへのアクセスを制御するメモリアクセス制御部とを具備する情報処理装置である。これにより、周辺デバイスのデバイス識別子に基づいてアクセスキーを索引するという作用をもたらす。
【発明の効果】
【００１５】
本発明によれば、周辺デバイスから使用可能なアドレスを制限することなく、デバイス識別子とアクセスキーとを対応させることができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施の形態における情報処理システムの全体構成例を示す図である。
【図２】本発明の第１の実施の形態におけるホストブリッジ装置１００の一構成例を示す図である。
【図３】ＰＣＩデバイスおよびＰＣＩｅデバイスを識別するための入出力デバイス識別子７１０のフィールド構成を示す図である。
【図４】プロセッサＣｅｌｌにおける入出力アドレスの変換機構を示す図である。
【図５】ＩＯＰＴエントリ６１０のフィールド構成を示す図である。
【図６】本発明の第１の実施の形態におけるアクセスキー生成部１２０の一構成例を示す図である。
【図７】本発明の第１の実施の形態におけるバス番号テーブル１２１の一構成例を示す図である。
【図８】本発明の第１の実施の形態におけるアクセスキーメモリ１２３の一構成例を示す図である。
【図９】本発明の第２の実施の形態におけるアクセスキー生成部５２０の一構成例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明を実施するための最良の形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（ＰＣＩデバイスおよびＰＣＩ−Ｅｘｐｒｅｓｓデバイスが混在する情報処理システムにおける実現例）
２．第２の実施の形態（一般的な情報処理システムにおける実現例）
【００１８】
＜１．第１の実施の形態＞
［情報処理システムの全体構成例］
図１は、本発明の第１の実施の形態における情報処理システムの全体構成例を示す図である。この情報処理システムでは、ＰＣＩデバイス３２１乃至３２８とＰＣＩ−Ｅｘｐｒｅｓｓ（以下、ＰＣＩｅと省略する。）デバイス３１１乃至３１６とが混在しており、ホストブリッジ装置１００を介してプロセッサシステム２００に接続している。プロセッサシステム２００は、ホストプロセッサ２１０およびホストメモリ２２０などをプロセッサバス２９０により接続することにより構成される。ホストプロセッサ２１０は、この情報処理システムの全体を制御するプロセッサである。ホストメモリ２２０は、ホストプロセッサ２１０の動作に必要なプログラムや作業領域などを保持するメモリである。プロセッサバス２９０には、ホストブリッジ装置１００が接続される。なお、ホストプロセッサ２１０は、特許請求の範囲に記載のメモリアクセス制御部の一例であり、ここではＣｅｌｌを想定している。
【００１９】
ホストブリッジ装置１００は、プロセッサシステム２００とＰＣＩｅバスとの間の橋渡しを実現するブリッジである。このホストブリッジ装置１００は、プロセッサバス２９０によりプロセッサシステム２００に接続する。また、このホストブリッジ装置１００は、以下に説明するようにスイッチや他のブリッジを介してＰＣＩデバイス３２１乃至３２８およびＰＣＩｅデバイス３１１乃至３１６に接続する。
【００２０】
この例では、ホストブリッジ装置１００のデバイス側には、バス＃１（４０１）および＃１０（４１０）を介してスイッチ４２１および４２３が接続されている。スイッチ４２１には、さらにバス＃３（４０３）、＃４（４０４）および＃５（４０５）を介してＰＣＩｅデバイス３１１、３１２およびスイッチ４２２が接続されている。スイッチ４２１乃至４２３は、ＰＣＩｅバスを分岐させるものである。スイッチ４２２には、さらにバス＃７（４０７）、＃８（４０８）および＃９（４０９）を介してＰＣＩｅデバイス３１３乃至３１５が接続されている。スイッチ４２３には、さらにバス＃１２（４１２）、＃１３（４１３）および＃１５（４１５）を介してＰＣＩｅデバイス３１６、ＰＣＩブリッジ４２４および４２５が接続されている。ＰＣＩブリッジ４２４および４２５は、ＰＣＩｅバスとＰＣＩバスとの間の橋渡しを実現するブリッジである。ＰＣＩブリッジ４２４には、さらにバス＃１４（４１４）を介してＰＣＩスロットが設けられており、ＰＣＩデバイス３２１乃至３２４が接続されている。ＰＣＩブリッジ４２５には、さらにバス＃１６（４１６）を介してＰＣＩスロットが設けられており、ＰＣＩデバイス３２５乃至３２８が接続されている。
【００２１】
ＰＣＩデバイスは、１つのＰＣＩバス上に複数のＰＣＩスロットを介して接続する形態が一般的である。一方、ＰＣＩｅデバイスでは、ポイント・ツゥ・ポイント（Point-to-Point）接続方式が採用されており、１つのＰＣＩｅバスには１つのＰＣＩｅデバイスのみが接続される。
【００２２】
［ホストブリッジ装置１００の構成例］
図２は、本発明の第１の実施の形態におけるホストブリッジ装置１００の一構成例を示す図である。このホストブリッジ装置１００は入出力インターフェースコントローラ１０１と、スイッチ１０２と、ＰＣＩｅコントローラ１０３乃至１０５と、内部ブリッジ１０６と、周辺バス１９０とを備えている。
【００２３】
入出力インターフェースコントローラ１０１は、プロセッサシステム２００のプロセッサバス２９０との間のインターフェースである。スイッチ１０２は、入出力インターフェースコントローラ１０１側の１つのポートを複数に分岐させるためのものである。ここでは、３つのＰＣＩｅコントローラ１０３乃至１０５と内部ブリッジ１０６の計４つのポートに分岐することを想定している。また、スイッチ１０２は、アクセスキー生成部１２０を有しており、ＰＣＩデバイスまたはＰＣＩｅデバイスからの入出力デバイス識別子に基づいてアクセスキーを生成して、入出力インターフェースコントローラ１０１に供給する。
【００２４】
スイッチ１０２のポートに接続するＰＣＩｅコントローラ１０３乃至１０５は、ＰＣＩｅバスを制御するものである。ここでは、ＰＣＩｅコントローラ１０３にはバス＃１が接続され、ＰＣＩｅコントローラ１０４にはバス＃１０が接続され、ＰＣＩｅコントローラ１０５には何も接続されていないことを想定している。
【００２５】
スイッチ１０２のもう一つのポートには内部ブリッジ１０６が接続されている。この内部ブリッジ１０６は、ＰＣＩｅバスとＰＣＩバスとの間の橋渡しを実現するブリッジであり、ＰＣＩバスとして周辺バス１９０に接続する。この周辺バス１９０は、周辺デバイスに接続するためのバスであり、ここではタイマー１９１、シリアルインターフェースＵＡＲＴ（Universal Asynchronous Receiver Transmitter）１９２およびＰＣＩデバイス１９３などを接続できるようになっている。
【００２６】
［入出力デバイス識別子７１０のフィールド構成］
図３は、ＰＣＩデバイスおよびＰＣＩｅデバイスを識別するための入出力デバイス識別子７１０のフィールド構成を示す図である。この入出力デバイス識別子７１０は、８ビットのバス番号７１１、５ビットのデバイス番号７１２、および、３ビットの機能番号７１３の各フィールドから構成される。この入出力デバイス識別子７１０は、システム構成に応じて決定される値であり、一般ユーザのソフトウェアによって自由に設定することはできないようになっている。
【００２７】
バス番号７１１は、そのデバイスが直接的に接続されるＰＣＩバスまたはＰＣＩｅバスの番号である。例えば、図１の例では、バス４０１には＃１がバス番号として付与されている。
【００２８】
デバイス番号７１２は、そのデバイスが直接的に接続されるＰＣＩバスまたはＰＣＩｅバスにおけるデバイス番号である。上述のように、ＰＣＩバスでは、１つのバスに対して複数のＰＣＩスロットを介して複数のＰＣＩデバイスが接続できるようになっており、１つのバス番号毎に複数のデバイス番号が付与されるようになっている。一方、ＰＣＩｅバスでは、１つのＰＣＩｅバスには１つのＰＣＩｅデバイスのみが接続されるため、１つのバス番号に対して１つのデバイス番号のみ付与される。
【００２９】
機能番号７１３は、そのデバイスが備える各機能に対して付与される番号である。例えば、入出力コントローラハブ（I/O controller hub）は、複数のインターフェースを接続できるように設計される。すなわち、１つのＰＣＩデバイスとして、例えば、ＬＰＣ（Low Pin Count）コントローラ、ＩＤＥ（Integrated Drive Electronics）コントローラおよびＳＡＴＡ（Serial Advanced Technology Attachment）コントローラの各機能を有する。この場合、この入出力コントローラハブは、３つの機能番号＃０乃至＃２を付与することによって、デバイス内の各機能を識別する。
【００３０】
このように、ＰＣＩデバイスおよびＰＣＩｅデバイスを識別するための入出力デバイス識別子は１６ビット構成となっている。一方、プロセッサＣｅｌｌのアクセスキーは１１ビットを想定しているため、入出力デバイス識別子をそのままアクセスキーとして利用することができない。そこで、本発明の実施の形態では、入出力デバイス識別子のビット幅を短縮するように変換することにより、アクセスキーとして利用できるようにする。
【００３１】
なお、入出力デバイス識別子７１０は、特許請求の範囲に記載のデバイス識別子の一例である。
【００３２】
［入出力アドレスの変換機構］
図４は、プロセッサＣｅｌｌにおける入出力アドレスの変換機構を示す図である。ホストブリッジ装置１００から供給された入出力アドレスは４２ビット幅を有しており、上位１４ビットがセグメント番号を示す。セグメント番号の下位にはページ番号が割り当てられ、そのさらに下位はオフセットとなる。ページサイズが４ＫＢの場合、ページ番号は１６ビット、オフセット番号は１２ビットとなる。ページサイズが６４ＫＢの場合、ページ番号は１２ビット、オフセットは１６ビットとなる。ページサイズが１ＭＢの場合、ページ番号は８ビット、オフセット番号は２０ビットとなる。ページサイズが１６ＭＢの場合、ページ番号は４ビット、オフセットは２４ビットとなる。
【００３３】
各セグメントの属性を保持する入出力セグメントテーブル（ＩＯＳＴ：I/O Segment Table）、および、各ページの属性を保持する入出力ページテーブル（ＩＯＰＴ：I/O Page Table）６００は、ホストメモリ２２０の実アドレス空間に配置される。
【００３４】
入出力セグメントテーブルのベースアドレスにセグメント番号を加算することにより、目的のＩＯＳＴエントリにアクセスすることができるようになっている。ＩＯＳＴエントリには入出力ページテーブル６００のベース番号が保持されており、ページ番号を加算することにより、目的のＩＯＰＴエントリ６１０にアクセスすることができるようになっている。
【００３５】
図５は、ＩＯＰＴエントリ６１０のフィールド構成を示す図である。このＩＯＰＴエントリ６１０において、第０および１ビット目の２ビットは、ページ保護６１１を示すフィールドである。このページ保護６１１は、「００」であれば対応するページへのアクセスはできないことを意味する。「０１」であれば対応するページは読出しのみが許可されることを意味する。「１０」であれば対応するページは書込みのみが許可されることを意味する。「１１」であれば対応するページは読出しおよび書込みの両者が許可されることを意味する。
【００３６】
第２ビット目は、メモリコヒーレンスが必要か否かを示すコヒーレンス６１２のフィールドである。第３および４ビット目の２ビットは、記憶順序（Storage Ordering）６１３を示すフィールドである。「００」であれば対応するページへの書込みの前に、先行する読出しおよび書込みの完了は不要であることを意味する。「１０」であれば対応するページへの書込みの前に、先行する書込みの完了が必要であることを意味する。「１１」であれば対応するページからの読出しまたは書込みの前に、先行する読出しおよび書込みの完了が必要であることを意味する。
【００３７】
第５乃至５１ビット目の４７ビットは、対応するページの実ページ番号６１４を示すフィールドである。ただし、入出力アドレスとしては４２ビット幅を有することを想定しており、ページサイズに応じて適宜ＬＳＢ側にゼロ値が設定される。
【００３８】
第５２ビット目は、ヒント６１５を示すフィールドである。このヒント６１５はＩＯＰＴのキャッシュのエントリを維持するか否かのヒントとなる値が保持される。
【００３９】
第５３乃至６３ビット目の１１ビットは、対応するページのアクセスキー６１６を示すフィールドである。このアクセスキー６１６は、ホストブリッジ装置１００から供給されたアクセスキーと比較され、一致する場合のみ当該ページに対するアクセスが許可されるようにホストプロセッサ２１０によって制御される。
【００４０】
［アクセスキー生成部１２０の構成例］
図６は、本発明の第１の実施の形態におけるアクセスキー生成部１２０の一構成例を示す図である。このアクセスキー生成部１２０は、ＰＣＩデバイスまたはＰＣＩｅデバイスから入出力デバイス識別子７１０を受け取ると、上位８ビットのバス番号７１１をバス番号テーブル１２１から検索する。バス番号テーブル１２１は、後述するように各エントリに保持されたバス番号の中からバス番号７１１に一致するエントリを検索する機能を有する。選択器１２２は、信号線１２５の内容に従って、信号線１２６または１２７の何れか一方の出力を選択して、アクセスインデックスとして信号線１２８に出力するものである。アクセスキーメモリ１２３は、１１ビット幅のアクセスキーを「２の１２乗」個分記憶するメモリである。
【００４１】
バス番号テーブル１２１においてバス番号７１１が一致するエントリが存在する場合には、その格納位置がバスインデックスとして信号線１２４を介して出力される。バス番号テーブル１２１における総エントリ数を８個と仮定すると、バスインデックスは３ビットあれば足りることになる。また、一致するエントリが存在するか否かは、ヒット／ミス信号として、信号線１２５を介して出力される。一致するエントリが存在する場合には信号線１２５にはヒット信号が出力され、一致するエントリが存在しない場合には信号線１２５にはミス信号が出力される。
【００４２】
バス番号テーブル１２１においてバス番号７１１が一致するエントリが存在する場合には、値「１」を示すデータ７３９に続いて、３ビットのデータ７３１と、５ビットのデータ７３２と、３ビットのデータ７３３とがアクセスインデックスとなる。ここで、バス番号テーブル１２１からの３ビットがデータ７３１、デバイス番号７１２の５ビットがデータ７３２、機能番号７１３の３ビットがデータ７３３にそれぞれ設定されて、信号線１２７に出力される。すなわち、一致するエントリが存在する場合には、選択器１２２は信号線１２５の信号がヒット信号であるため、信号線１２７の出力を選択して、信号線１２８に出力する。
【００４３】
バス番号テーブル１２１においてバス番号７１１が一致するエントリが存在しない場合には、値「０」を示すデータ７２９に続いて、８ビットのデータ７２１と、３ビットのデータ７２３とがアクセスインデックスとなる。ここで、バス番号７１１の８ビットがデータ７２１、機能番号７１３の３ビットがデータ７２３にそれぞれ設定されて、信号線１２６に出力される。すなわち、一致するエントリが存在しない場合には、選択器１２２は信号線１２５の信号がミス信号であるため、信号線１２６の出力を選択して、信号線１２８に出力する。
【００４４】
アクセスキーメモリ１２３は、信号線１２８を介してアクセスインデックスが供給されると、そのアクセスインデックスにより記憶内容を索引して、アクセスキーを信号線１２９に出力する。これにより、１６ビットの入出力デバイス識別子７１０から１１ビットのアクセスキーが生成されたことになる。すなわち、ＰＣＩｅデバイスの場合には１つのバスに対して１つのデバイスのみが対応するため、バス番号および機能番号をアクセスインデックスとしてアクセスキーを生成する。一方、ＰＣＩデバイスの場合には１つのバスに対して複数のデバイスが存在し得るためデバイス番号をアクセスインデックスに含ませるが、バス番号は高々８程度で足りると想定して、バス番号を短縮して扱う。そのため、バス番号テーブル１２１を用いて８ビットのバス番号を３ビットのバスインデックスに変換している。
【００４５】
なお、バス番号テーブル１２１は、特許請求の範囲に記載のビットフィールド変換部またはバス番号変換部の一例である。また、アクセスキーメモリ１２３は、特許請求の範囲に記載のアクセスキー保持部の一例である。また、選択器１２２は、特許請求の範囲に記載の索引部の一例である。
【００４６】
［バス番号テーブル１２１の構成例］
図７は、本発明の第１の実施の形態におけるバス番号テーブル１２１の一構成例を示す図である。このバス番号テーブル１２１は、８エントリのバス番号保持部１２１１と、８つの比較器１２１２と、エンコーダ１２１３と、論理和回路１２１４とを備えている。
【００４７】
バス番号保持部１２１１は、バス番号を各エントリに保持するものである。このバス番号保持部１２１１の各エントリのバス番号は、システムの立上げ時等にオペレーティングシステムの特権ソフトウェア等によって予め設定されていることを想定する。比較器１２１２は、バス番号保持部１２１１の各エントリに保持されたバス番号と、入出力デバイス識別子７１０のバス番号７１１とを比較して、一致を検出する比較器である。エンコーダ１２１３は、比較器１２１２から出力された計８ビットの信号をエンコードして、３ビットのバスインデックスとして信号線１２４に出力するものである。論理和回路１２１４は、比較器１２１２から出力された計８ビットの信号の論理和を生成して、ヒット／ミス信号として信号線１２５に出力するものである。
【００４８】
このような構成により、バス番号７１１と一致するエントリの番号がバスインデックスとして信号線１２４に出力され、バス番号７１１と一致するエントリの有無がヒット／ミス信号として信号線１２５に出力される。バス番号テーブル１２１は、このような機能を有するものであるが、他の構成例により実現してもよい。例えば、既存の連想メモリ（ＣＡＭ：Content Addressable Memory）を用いて、バス番号を検索できるように構成しても構わない。
【００４９】
［アクセスキーメモリ１２３の構成例］
図８は、本発明の第１の実施の形態におけるアクセスキーメモリ１２３の一構成例を示す図である。このアクセスキーメモリ１２３は、１１ビット幅のアクセスキーを「２の１２乗」個分記憶している。そのうち、前半の「２の１１乗」個のアクセスキーはＰＣＩｅデバイス用のアクセスキーであり、後半の「２の１１乗」個のアクセスキーはＰＣＩデバイス用のアクセスキーである。
【００５０】
すなわち、選択器１２２から出力されるアクセスインデックスが「００００００００００００」から「０１１１１１１１１１１１」の範囲であればＰＣＩｅ用のアクセスキーが読み出される。一方、選択器１２２から出力されるアクセスインデックスが「１０００００００００００」から「１１１１１１１１１１１１」の範囲であればＰＣＩ用のアクセスキーが読み出される。
【００５１】
このアクセスキーメモリ１２３は、１１ビット幅のアクセスキーを「２の１２乗」個分記憶するため、１１ビット×２12語＝４４Ｋビットの容量となる。
【００５２】
［第１の実施の形態による効果］
このように、本発明の第１の実施の形態によれば、１６ビットの入出力デバイス識別子に基づいて１１ビットのアクセスキーを生成することができる。この第１の実施の形態では、ＰＣＩバスおよびＰＣＩｅバスのそれぞれ特徴を利用することにより、周辺デバイスから使用可能なアドレスを不当に制限することなくアクセスキーを生成する。また、複数のデバイスを１つのグループとして、同じアクセスキーを割り当てることも可能となる。
【００５３】
ここで、テーブル変換方式により１６ビットから１１ビットへの変換を行った場合のメモリ容量と比較する。１６ビットの入出力デバイス識別子と１１ビットのアクセスキーとの対応テーブルを設けた場合には、１１ビット×２16語＝７０４Ｋビットの容量となる。これに対し、本発明の第１の実施の形態によれば、上述のように４４Ｋビットの容量となり、テーブル変換方式の１６分の１のメモリ容量によりアクセスキーを生成することができる。
【００５４】
＜２．第２の実施の形態＞
上述の第１の実施の形態においては、ＰＣＩデバイスおよびＰＣＩ−Ｅｘｐｒｅｓｓデバイスが混在する情報処理システムにおける実現例について示したが、本発明は一般的な情報処理システムにおいても適用可能である。ここでは、一般的な情報処理システムに適用した場合のアクセスキー生成部１２０の構成例について説明する。
【００５５】
［アクセスキー生成部１２０の構成例］
図９は、本発明の第２の実施の形態におけるアクセスキー生成部５２０の一構成例を示す図である。このアクセスキー生成部５２０は、ｎビット（ｎは整数）の識別子８１０を入力とする。このｎビットの識別子８１０は、上位ｎａビット（ｎａは整数）のデータａ８１１と、続くｎｂビット（ｎｂは整数）のデータｂ８１２と、下位ｎｃビット（ｎｃは整数）のデータｃ８１３とから構成される。ｎビットのデータが入力されると、データａ８１１がテーブル５２１から検索される。テーブル５２１は、各エントリに保持されたデータの中からデータａ８１１に一致するエントリを検索する機能を有する。選択器５２２は、信号線５２５の内容に従って、信号線５２６または５２７の何れか一方の出力を選択して、アクセスインデックスとして信号線５２８に出力するものである。アクセスキーメモリ５２３は、ｍビット幅（ｍは整数、ｍ＜ｎ）のアクセスキーを「２の（ｎａ＋ｎｃ＋１）乗」個分記憶するメモリである。
【００５６】
テーブル５２１においてデータａ８１１が一致するエントリが存在する場合には、その格納位置がインデックスとして信号線５２４を介して出力される。テーブル５２１における総エントリ数を「２のｐ乗」個と仮定すると、バスインデックスはｐビット（ｐ＝ｎａ−ｎｂ：整数）あれば足りることになる。また、一致するエントリが存在するか否かは、ヒット／ミス信号として、信号線５２５を介して出力される。一致するエントリが存在する場合には信号線５２５にはヒット信号が出力され、一致するエントリが存在しない場合には信号線５２５にはミス信号が出力される。
【００５７】
テーブル５２１においてデータａ８１１が一致するエントリが存在する場合には、値「１」を示すデータ８３９に続いて、ｐビットのデータ８３１と、ｎｂビットのデータ８３２と、ｎｃビットのデータ８３３とがアクセスインデックスとなる。ここで、テーブル５２１からのｐビットがデータ８３１、データｂ８１２のｎｂビットがデータ８３２、データｃ８１３のｎｃビットがデータ８３３にそれぞれ設定されて、信号線５２７に出力される。すなわち、一致するエントリが存在する場合には、選択器５２２は信号線５２５の信号がヒット信号であるため、信号線５２７の出力を選択して、信号線５２８に出力する。
【００５８】
テーブル５２１においてデータａ８１１が一致するエントリが存在しない場合には、値「０」を示すデータ８２９に続いて、ｎａビットのデータ８２１と、ｎｃビットのデータ８２３とがアクセスインデックスとなる。ここで、データａ８１１のｎａビットがデータ８２１、データｃ８１３のｎｃビットがデータ８２３にそれぞれ設定されて、信号線５２６に出力される。すなわち、一致するエントリが存在しない場合には、選択器５２２は信号線５２５の信号がミス信号であるため、信号線５２６の出力を選択して、信号線５２８に出力する。
【００５９】
アクセスキーメモリ５２３は、信号線５２８を介してアクセスインデックスが供給されると、そのアクセスインデックスにより記憶内容を索引して、アクセスキーを信号線５２９に出力する。これにより、ｎビットの識別子８１０からｍビットのアクセスキーが生成されたことになる。
【００６０】
このように、本発明の第２の実施の形態によれば、ｎビットの識別子に基づいてｍビットのアクセスキー（ｎ＞ｍ）を生成することができる。
【００６１】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、上述のように特許請求の範囲における発明特定事項とそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
【符号の説明】
【００６２】
１００  ホストブリッジ装置
１０１  入出力インターフェースコントローラ
１０２  スイッチ
１０３〜１０５  ＰＣＩｅコントローラ
１０６  内部ブリッジ
１２０  アクセスキー生成部
１２１  バス番号テーブル
１２２  選択器
１２３  アクセスキーメモリ
１９０  周辺バス
１９１  タイマー
１９２  ＵＡＲＴ
１９３  ＰＣＩデバイス
２００  プロセッサシステム
２１０  ホストプロセッサ
２２０  ホストメモリ
２９０  プロセッサバス
３１１〜３１６  ＰＣＩｅデバイス
３２１〜３２８  ＰＣＩデバイス
４０１〜４１６  バス
４２１〜４２３  スイッチ
４２４、４２５  ＰＣＩブリッジ
５２０  アクセスキー生成部
５２１  テーブル
５２２  選択器
５２３  アクセスキーメモリ
６００  入出力ページテーブル（ＩＯＰＴ）
６１０  ＩＯＰＴエントリ
７１０  入出力デバイス識別子
７１１  バス番号
７１２  デバイス番号
７１３  機能番号
８１０  識別子
１２１１  バス番号保持部
１２１２  比較器
１２１３  エンコーダ
１２１４  論理和回路
【図１】
2010170237.tif 000003
【図２】
2010170237.tif 000004
【図３】
2010170237.tif 000005
【図４】
2010170237.tif 000006
【図５】
2010170237.tif 000007
【図６】
2010170237.tif 000008
【図７】
2010170237.tif 000009
【図８】
2010170237.tif 000010
【図９】
2010170237.tif 000011