説明

アクセスキー生成装置および情報処理装置

【課題】周辺デバイスから使用可能なアドレスを制限することなく、デバイス識別子とアクセスキーとを対応させる。
【解決手段】バス番号テーブル121は、各エントリに保持されたバス番号の中から、入出力デバイス識別子710のバス番号711に一致するエントリを検索する機能を有する。一致するエントリが存在する場合(PCIデバイスの場合)には、その格納位置がバスインデックスとされ、デバイス番号712および機能番号713とともにアクセスインデックスとなる。一致するエントリが存在しない場合(PCIeデバイスの場合)には、バス番号711および機能番号713がアクセスインデックスとなる。アクセスキーメモリ123はアクセスインデックスにより索引され、アクセスキーを出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アクセスキー生成装置に関し、特に周辺デバイスからのメモリアクセスを制御するために必要なアクセスキーを生成するアクセスキー生成装置および情報処理装置に関する。
【背景技術】
【0002】
入出力アドレスがプロセッサの物理メモリにマッピングされるシステムにおいて、周辺デバイスからメモリへアクセスする際、何の制限も設けないとすると、悪意のあるユーザソフトウェアにより、不正なアドレス領域にアクセスされてしまうことが起こり得る。例えば、DMAC(ダイレクト・メモリ・アクセス・コントローラ)を無制限にユーザソフトウェアに開放した場合に、そのような問題が生じ得る。この問題に対して、例えばプロセッサCell(セル:Cell Broadband Engine)では、周辺デバイスが有する11ビットのアクセスキーとその周辺デバイスがアクセス可能なアドレス領域とをペアにしたアドレス変換テーブルが設けられている。このアドレス変換テーブルは特権ソフトウェアにより設定されるため、特権ソフトウェアによって許可されていないアドレス領域には周辺デバイスがアクセスできないように制御される。
【0003】
しかし、このような制御を一般的なバスシステムにおいて実現しようとすると以下のような問題が生じる。すなわち、例えば、PCI(Peripheral Component Interconnect)バスを用いたシステムで利用することを想定した場合、システム内のデバイスを個別に識別するデバイス識別子は16ビットであるため、11ビットのアクセスキーではビット長が不足してしまう。
【0004】
これに対して、周辺デバイスのデバイス識別子をアクセスキーおよびアドレスの一部として割り当てる技術が知られている。例えば、デバイス識別子の下位11ビットをアクセスキーとして利用し、上位5ビットをセグメント番号およびページ番号に対応付けることによりアクセスの許否を決定する情報処理装置が提案されている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】国際公開第2007/129482号パンフレット(第7乃至9頁)
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述の従来技術によれば、デバイス識別子とアクセスキーとの間のビット数の不一致を調整することが可能となる。しかしながら、この従来技術では、アクセスキーのビット長からはみ出したデバイス識別子をアドレスの一部に割り当てるため、周辺デバイスから使用可能なアドレスが制限されるという問題がある。また、ソフトウェアにより自由に設定することができないデバイス識別子の一部がアドレスとなるため、特権ソフトウェアによって設定されるアドレス変換テーブルが複雑になるおそれがある。さらに、デバイス識別子とアクセスキーとの間の関係が固定されてしまい、異なるデバイス識別子を有する複数の周辺デバイスに対して同じキーを与えることが困難になる。
【0007】
本発明はこのような状況に鑑みてなされたものであり、周辺デバイスから使用可能なアドレスを制限することなく、デバイス識別子とアクセスキーとを対応させることを目的とする。
【課題を解決するための手段】
【0008】
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、周辺デバイスのデバイス識別子を表すビットフィールドの一部である部分ビットフィールドを上記部分ビットフィールドよりもビット幅の短い短縮ビットフィールドに変換するビットフィールド変換部と、上記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを上記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、上記短縮ビットフィールドへの変換が成功した場合には上記短縮ビットフィールドを含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引し、上記短縮ビットフィールドへの変換が失敗した場合には上記部分ビットフィールドを含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引する索引部とを具備するアクセスキー生成装置である。これにより、周辺デバイスのデバイス識別子に基づいてアクセスキーを索引するという作用をもたらす。
【0009】
また、本発明の第2の側面は、周辺デバイスのデバイス識別子を表すビットフィールドの一部であるバス番号を上記バス番号よりもビット幅の短い短縮バス番号に変換するバス番号変換部と、上記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを上記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、上記短縮バス番号への変換が成功した場合には上記短縮バス番号を含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引し、上記短縮バス番号への変換が失敗した場合には上記バス番号を含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引する索引部とを具備するアクセスキー生成装置である。これにより、周辺デバイスのデバイス識別子に基づいてアクセスキーを索引するという作用をもたらす。
【0010】
また、この第2の側面において、上記デバイス識別子は、上記バス番号とデバイス番号とを含み、上記索引部は、上記短縮バス番号への変換が成功した場合には上記短縮バス番号と上記デバイス番号とを含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引し、上記短縮バス番号への変換が失敗した場合には上記バス番号を含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引するようにしてもよい。これにより、バスの種類に応じたインデックスアドレスによりアクセスキーを索引するという作用をもたらす。
【0011】
また、この第2の側面において、上記デバイス識別子は、上記バス番号とデバイス番号と機能番号とからなり、上記索引部は、上記短縮バス番号への変換が成功した場合には上記短縮バス番号と上記デバイス番号と上記機能番号とから特定される上記アクセスキー保持部の領域から上記アクセスキーを索引し、上記短縮バス番号への変換が失敗した場合には上記バス番号と上記機能番号とから特定される上記アクセスキー保持部の領域から上記アクセスキーを索引するようにしてもよい。これにより、機能番号を含むデバイス識別子に基づいてアクセスキーを索引するという作用をもたらす。
【0012】
また、この第2の側面において、上記バス番号変換部は、上記バス番号を保持するエントリを複数備え、上記エントリの何れかに変換対象となるバス番号が保持されている場合には上記短縮バス番号への変換が成功したものとして当該エントリに固有に付与された番号を上記短縮バス番号として出力し、上記エントリの何れにも変換対象となるバス番号が保持されていない場合には上記短縮バス番号への変換が失敗したものとするように構成してもよい。これにより、保持されたバス番号に応じて短縮バス番号への変換を試みるという作用をもたらす。
【0013】
また、本発明の第3の側面は、周辺デバイスのデバイス識別子を表すビットフィールドの一部である部分ビットフィールドを上記部分ビットフィールドよりもビット幅の短い短縮ビットフィールドに変換するビットフィールド変換部と、上記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを上記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、上記短縮ビットフィールドへの変換が成功した場合には上記短縮ビットフィールドを含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引し、上記短縮ビットフィールドへの変換が失敗した場合には上記部分ビットフィールドを含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引する索引部と、上記索引されたアクセスキーを用いて上記メモリへのアクセスを制御するメモリアクセス制御部とを具備する情報処理装置である。これにより、周辺デバイスのデバイス識別子に基づいてアクセスキーを索引するという作用をもたらす。
【0014】
また、本発明の第4の側面は、周辺デバイスのデバイス識別子を表すビットフィールドの一部であるバス番号を上記バス番号よりもビット幅の短い短縮バス番号に変換するバス番号変換部と、上記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを上記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、上記短縮バス番号への変換が成功した場合には上記短縮バス番号を含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引し、上記短縮バス番号への変換が失敗した場合には上記バス番号を含むインデックスアドレスを用いて上記アクセスキー保持部から上記アクセスキーを索引する索引部と、上記索引されたアクセスキーを用いて上記メモリへのアクセスを制御するメモリアクセス制御部とを具備する情報処理装置である。これにより、周辺デバイスのデバイス識別子に基づいてアクセスキーを索引するという作用をもたらす。
【発明の効果】
【0015】
本発明によれば、周辺デバイスから使用可能なアドレスを制限することなく、デバイス識別子とアクセスキーとを対応させることができるという優れた効果を奏し得る。
【図面の簡単な説明】
【0016】
【図1】本発明の第1の実施の形態における情報処理システムの全体構成例を示す図である。
【図2】本発明の第1の実施の形態におけるホストブリッジ装置100の一構成例を示す図である。
【図3】PCIデバイスおよびPCIeデバイスを識別するための入出力デバイス識別子710のフィールド構成を示す図である。
【図4】プロセッサCellにおける入出力アドレスの変換機構を示す図である。
【図5】IOPTエントリ610のフィールド構成を示す図である。
【図6】本発明の第1の実施の形態におけるアクセスキー生成部120の一構成例を示す図である。
【図7】本発明の第1の実施の形態におけるバス番号テーブル121の一構成例を示す図である。
【図8】本発明の第1の実施の形態におけるアクセスキーメモリ123の一構成例を示す図である。
【図9】本発明の第2の実施の形態におけるアクセスキー生成部520の一構成例を示す図である。
【発明を実施するための形態】
【0017】
以下、本発明を実施するための最良の形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(PCIデバイスおよびPCI−Expressデバイスが混在する情報処理システムにおける実現例)
2.第2の実施の形態(一般的な情報処理システムにおける実現例)
【0018】
<1.第1の実施の形態>
[情報処理システムの全体構成例]
図1は、本発明の第1の実施の形態における情報処理システムの全体構成例を示す図である。この情報処理システムでは、PCIデバイス321乃至328とPCI−Express(以下、PCIeと省略する。)デバイス311乃至316とが混在しており、ホストブリッジ装置100を介してプロセッサシステム200に接続している。プロセッサシステム200は、ホストプロセッサ210およびホストメモリ220などをプロセッサバス290により接続することにより構成される。ホストプロセッサ210は、この情報処理システムの全体を制御するプロセッサである。ホストメモリ220は、ホストプロセッサ210の動作に必要なプログラムや作業領域などを保持するメモリである。プロセッサバス290には、ホストブリッジ装置100が接続される。なお、ホストプロセッサ210は、特許請求の範囲に記載のメモリアクセス制御部の一例であり、ここではCellを想定している。
【0019】
ホストブリッジ装置100は、プロセッサシステム200とPCIeバスとの間の橋渡しを実現するブリッジである。このホストブリッジ装置100は、プロセッサバス290によりプロセッサシステム200に接続する。また、このホストブリッジ装置100は、以下に説明するようにスイッチや他のブリッジを介してPCIデバイス321乃至328およびPCIeデバイス311乃至316に接続する。
【0020】
この例では、ホストブリッジ装置100のデバイス側には、バス#1(401)および#10(410)を介してスイッチ421および423が接続されている。スイッチ421には、さらにバス#3(403)、#4(404)および#5(405)を介してPCIeデバイス311、312およびスイッチ422が接続されている。スイッチ421乃至423は、PCIeバスを分岐させるものである。スイッチ422には、さらにバス#7(407)、#8(408)および#9(409)を介してPCIeデバイス313乃至315が接続されている。スイッチ423には、さらにバス#12(412)、#13(413)および#15(415)を介してPCIeデバイス316、PCIブリッジ424および425が接続されている。PCIブリッジ424および425は、PCIeバスとPCIバスとの間の橋渡しを実現するブリッジである。PCIブリッジ424には、さらにバス#14(414)を介してPCIスロットが設けられており、PCIデバイス321乃至324が接続されている。PCIブリッジ425には、さらにバス#16(416)を介してPCIスロットが設けられており、PCIデバイス325乃至328が接続されている。
【0021】
PCIデバイスは、1つのPCIバス上に複数のPCIスロットを介して接続する形態が一般的である。一方、PCIeデバイスでは、ポイント・ツゥ・ポイント(Point-to-Point)接続方式が採用されており、1つのPCIeバスには1つのPCIeデバイスのみが接続される。
【0022】
[ホストブリッジ装置100の構成例]
図2は、本発明の第1の実施の形態におけるホストブリッジ装置100の一構成例を示す図である。このホストブリッジ装置100は入出力インターフェースコントローラ101と、スイッチ102と、PCIeコントローラ103乃至105と、内部ブリッジ106と、周辺バス190とを備えている。
【0023】
入出力インターフェースコントローラ101は、プロセッサシステム200のプロセッサバス290との間のインターフェースである。スイッチ102は、入出力インターフェースコントローラ101側の1つのポートを複数に分岐させるためのものである。ここでは、3つのPCIeコントローラ103乃至105と内部ブリッジ106の計4つのポートに分岐することを想定している。また、スイッチ102は、アクセスキー生成部120を有しており、PCIデバイスまたはPCIeデバイスからの入出力デバイス識別子に基づいてアクセスキーを生成して、入出力インターフェースコントローラ101に供給する。
【0024】
スイッチ102のポートに接続するPCIeコントローラ103乃至105は、PCIeバスを制御するものである。ここでは、PCIeコントローラ103にはバス#1が接続され、PCIeコントローラ104にはバス#10が接続され、PCIeコントローラ105には何も接続されていないことを想定している。
【0025】
スイッチ102のもう一つのポートには内部ブリッジ106が接続されている。この内部ブリッジ106は、PCIeバスとPCIバスとの間の橋渡しを実現するブリッジであり、PCIバスとして周辺バス190に接続する。この周辺バス190は、周辺デバイスに接続するためのバスであり、ここではタイマー191、シリアルインターフェースUART(Universal Asynchronous Receiver Transmitter)192およびPCIデバイス193などを接続できるようになっている。
【0026】
[入出力デバイス識別子710のフィールド構成]
図3は、PCIデバイスおよびPCIeデバイスを識別するための入出力デバイス識別子710のフィールド構成を示す図である。この入出力デバイス識別子710は、8ビットのバス番号711、5ビットのデバイス番号712、および、3ビットの機能番号713の各フィールドから構成される。この入出力デバイス識別子710は、システム構成に応じて決定される値であり、一般ユーザのソフトウェアによって自由に設定することはできないようになっている。
【0027】
バス番号711は、そのデバイスが直接的に接続されるPCIバスまたはPCIeバスの番号である。例えば、図1の例では、バス401には#1がバス番号として付与されている。
【0028】
デバイス番号712は、そのデバイスが直接的に接続されるPCIバスまたはPCIeバスにおけるデバイス番号である。上述のように、PCIバスでは、1つのバスに対して複数のPCIスロットを介して複数のPCIデバイスが接続できるようになっており、1つのバス番号毎に複数のデバイス番号が付与されるようになっている。一方、PCIeバスでは、1つのPCIeバスには1つのPCIeデバイスのみが接続されるため、1つのバス番号に対して1つのデバイス番号のみ付与される。
【0029】
機能番号713は、そのデバイスが備える各機能に対して付与される番号である。例えば、入出力コントローラハブ(I/O controller hub)は、複数のインターフェースを接続できるように設計される。すなわち、1つのPCIデバイスとして、例えば、LPC(Low Pin Count)コントローラ、IDE(Integrated Drive Electronics)コントローラおよびSATA(Serial Advanced Technology Attachment)コントローラの各機能を有する。この場合、この入出力コントローラハブは、3つの機能番号#0乃至#2を付与することによって、デバイス内の各機能を識別する。
【0030】
このように、PCIデバイスおよびPCIeデバイスを識別するための入出力デバイス識別子は16ビット構成となっている。一方、プロセッサCellのアクセスキーは11ビットを想定しているため、入出力デバイス識別子をそのままアクセスキーとして利用することができない。そこで、本発明の実施の形態では、入出力デバイス識別子のビット幅を短縮するように変換することにより、アクセスキーとして利用できるようにする。
【0031】
なお、入出力デバイス識別子710は、特許請求の範囲に記載のデバイス識別子の一例である。
【0032】
[入出力アドレスの変換機構]
図4は、プロセッサCellにおける入出力アドレスの変換機構を示す図である。ホストブリッジ装置100から供給された入出力アドレスは42ビット幅を有しており、上位14ビットがセグメント番号を示す。セグメント番号の下位にはページ番号が割り当てられ、そのさらに下位はオフセットとなる。ページサイズが4KBの場合、ページ番号は16ビット、オフセット番号は12ビットとなる。ページサイズが64KBの場合、ページ番号は12ビット、オフセットは16ビットとなる。ページサイズが1MBの場合、ページ番号は8ビット、オフセット番号は20ビットとなる。ページサイズが16MBの場合、ページ番号は4ビット、オフセットは24ビットとなる。
【0033】
各セグメントの属性を保持する入出力セグメントテーブル(IOST:I/O Segment Table)、および、各ページの属性を保持する入出力ページテーブル(IOPT:I/O Page Table)600は、ホストメモリ220の実アドレス空間に配置される。
【0034】
入出力セグメントテーブルのベースアドレスにセグメント番号を加算することにより、目的のIOSTエントリにアクセスすることができるようになっている。IOSTエントリには入出力ページテーブル600のベース番号が保持されており、ページ番号を加算することにより、目的のIOPTエントリ610にアクセスすることができるようになっている。
【0035】
図5は、IOPTエントリ610のフィールド構成を示す図である。このIOPTエントリ610において、第0および1ビット目の2ビットは、ページ保護611を示すフィールドである。このページ保護611は、「00」であれば対応するページへのアクセスはできないことを意味する。「01」であれば対応するページは読出しのみが許可されることを意味する。「10」であれば対応するページは書込みのみが許可されることを意味する。「11」であれば対応するページは読出しおよび書込みの両者が許可されることを意味する。
【0036】
第2ビット目は、メモリコヒーレンスが必要か否かを示すコヒーレンス612のフィールドである。第3および4ビット目の2ビットは、記憶順序(Storage Ordering)613を示すフィールドである。「00」であれば対応するページへの書込みの前に、先行する読出しおよび書込みの完了は不要であることを意味する。「10」であれば対応するページへの書込みの前に、先行する書込みの完了が必要であることを意味する。「11」であれば対応するページからの読出しまたは書込みの前に、先行する読出しおよび書込みの完了が必要であることを意味する。
【0037】
第5乃至51ビット目の47ビットは、対応するページの実ページ番号614を示すフィールドである。ただし、入出力アドレスとしては42ビット幅を有することを想定しており、ページサイズに応じて適宜LSB側にゼロ値が設定される。
【0038】
第52ビット目は、ヒント615を示すフィールドである。このヒント615はIOPTのキャッシュのエントリを維持するか否かのヒントとなる値が保持される。
【0039】
第53乃至63ビット目の11ビットは、対応するページのアクセスキー616を示すフィールドである。このアクセスキー616は、ホストブリッジ装置100から供給されたアクセスキーと比較され、一致する場合のみ当該ページに対するアクセスが許可されるようにホストプロセッサ210によって制御される。
【0040】
[アクセスキー生成部120の構成例]
図6は、本発明の第1の実施の形態におけるアクセスキー生成部120の一構成例を示す図である。このアクセスキー生成部120は、PCIデバイスまたはPCIeデバイスから入出力デバイス識別子710を受け取ると、上位8ビットのバス番号711をバス番号テーブル121から検索する。バス番号テーブル121は、後述するように各エントリに保持されたバス番号の中からバス番号711に一致するエントリを検索する機能を有する。選択器122は、信号線125の内容に従って、信号線126または127の何れか一方の出力を選択して、アクセスインデックスとして信号線128に出力するものである。アクセスキーメモリ123は、11ビット幅のアクセスキーを「2の12乗」個分記憶するメモリである。
【0041】
バス番号テーブル121においてバス番号711が一致するエントリが存在する場合には、その格納位置がバスインデックスとして信号線124を介して出力される。バス番号テーブル121における総エントリ数を8個と仮定すると、バスインデックスは3ビットあれば足りることになる。また、一致するエントリが存在するか否かは、ヒット/ミス信号として、信号線125を介して出力される。一致するエントリが存在する場合には信号線125にはヒット信号が出力され、一致するエントリが存在しない場合には信号線125にはミス信号が出力される。
【0042】
バス番号テーブル121においてバス番号711が一致するエントリが存在する場合には、値「1」を示すデータ739に続いて、3ビットのデータ731と、5ビットのデータ732と、3ビットのデータ733とがアクセスインデックスとなる。ここで、バス番号テーブル121からの3ビットがデータ731、デバイス番号712の5ビットがデータ732、機能番号713の3ビットがデータ733にそれぞれ設定されて、信号線127に出力される。すなわち、一致するエントリが存在する場合には、選択器122は信号線125の信号がヒット信号であるため、信号線127の出力を選択して、信号線128に出力する。
【0043】
バス番号テーブル121においてバス番号711が一致するエントリが存在しない場合には、値「0」を示すデータ729に続いて、8ビットのデータ721と、3ビットのデータ723とがアクセスインデックスとなる。ここで、バス番号711の8ビットがデータ721、機能番号713の3ビットがデータ723にそれぞれ設定されて、信号線126に出力される。すなわち、一致するエントリが存在しない場合には、選択器122は信号線125の信号がミス信号であるため、信号線126の出力を選択して、信号線128に出力する。
【0044】
アクセスキーメモリ123は、信号線128を介してアクセスインデックスが供給されると、そのアクセスインデックスにより記憶内容を索引して、アクセスキーを信号線129に出力する。これにより、16ビットの入出力デバイス識別子710から11ビットのアクセスキーが生成されたことになる。すなわち、PCIeデバイスの場合には1つのバスに対して1つのデバイスのみが対応するため、バス番号および機能番号をアクセスインデックスとしてアクセスキーを生成する。一方、PCIデバイスの場合には1つのバスに対して複数のデバイスが存在し得るためデバイス番号をアクセスインデックスに含ませるが、バス番号は高々8程度で足りると想定して、バス番号を短縮して扱う。そのため、バス番号テーブル121を用いて8ビットのバス番号を3ビットのバスインデックスに変換している。
【0045】
なお、バス番号テーブル121は、特許請求の範囲に記載のビットフィールド変換部またはバス番号変換部の一例である。また、アクセスキーメモリ123は、特許請求の範囲に記載のアクセスキー保持部の一例である。また、選択器122は、特許請求の範囲に記載の索引部の一例である。
【0046】
[バス番号テーブル121の構成例]
図7は、本発明の第1の実施の形態におけるバス番号テーブル121の一構成例を示す図である。このバス番号テーブル121は、8エントリのバス番号保持部1211と、8つの比較器1212と、エンコーダ1213と、論理和回路1214とを備えている。
【0047】
バス番号保持部1211は、バス番号を各エントリに保持するものである。このバス番号保持部1211の各エントリのバス番号は、システムの立上げ時等にオペレーティングシステムの特権ソフトウェア等によって予め設定されていることを想定する。比較器1212は、バス番号保持部1211の各エントリに保持されたバス番号と、入出力デバイス識別子710のバス番号711とを比較して、一致を検出する比較器である。エンコーダ1213は、比較器1212から出力された計8ビットの信号をエンコードして、3ビットのバスインデックスとして信号線124に出力するものである。論理和回路1214は、比較器1212から出力された計8ビットの信号の論理和を生成して、ヒット/ミス信号として信号線125に出力するものである。
【0048】
このような構成により、バス番号711と一致するエントリの番号がバスインデックスとして信号線124に出力され、バス番号711と一致するエントリの有無がヒット/ミス信号として信号線125に出力される。バス番号テーブル121は、このような機能を有するものであるが、他の構成例により実現してもよい。例えば、既存の連想メモリ(CAM:Content Addressable Memory)を用いて、バス番号を検索できるように構成しても構わない。
【0049】
[アクセスキーメモリ123の構成例]
図8は、本発明の第1の実施の形態におけるアクセスキーメモリ123の一構成例を示す図である。このアクセスキーメモリ123は、11ビット幅のアクセスキーを「2の12乗」個分記憶している。そのうち、前半の「2の11乗」個のアクセスキーはPCIeデバイス用のアクセスキーであり、後半の「2の11乗」個のアクセスキーはPCIデバイス用のアクセスキーである。
【0050】
すなわち、選択器122から出力されるアクセスインデックスが「000000000000」から「011111111111」の範囲であればPCIe用のアクセスキーが読み出される。一方、選択器122から出力されるアクセスインデックスが「100000000000」から「111111111111」の範囲であればPCI用のアクセスキーが読み出される。
【0051】
このアクセスキーメモリ123は、11ビット幅のアクセスキーを「2の12乗」個分記憶するため、11ビット×212語=44Kビットの容量となる。
【0052】
[第1の実施の形態による効果]
このように、本発明の第1の実施の形態によれば、16ビットの入出力デバイス識別子に基づいて11ビットのアクセスキーを生成することができる。この第1の実施の形態では、PCIバスおよびPCIeバスのそれぞれ特徴を利用することにより、周辺デバイスから使用可能なアドレスを不当に制限することなくアクセスキーを生成する。また、複数のデバイスを1つのグループとして、同じアクセスキーを割り当てることも可能となる。
【0053】
ここで、テーブル変換方式により16ビットから11ビットへの変換を行った場合のメモリ容量と比較する。16ビットの入出力デバイス識別子と11ビットのアクセスキーとの対応テーブルを設けた場合には、11ビット×216語=704Kビットの容量となる。これに対し、本発明の第1の実施の形態によれば、上述のように44Kビットの容量となり、テーブル変換方式の16分の1のメモリ容量によりアクセスキーを生成することができる。
【0054】
<2.第2の実施の形態>
上述の第1の実施の形態においては、PCIデバイスおよびPCI−Expressデバイスが混在する情報処理システムにおける実現例について示したが、本発明は一般的な情報処理システムにおいても適用可能である。ここでは、一般的な情報処理システムに適用した場合のアクセスキー生成部120の構成例について説明する。
【0055】
[アクセスキー生成部120の構成例]
図9は、本発明の第2の実施の形態におけるアクセスキー生成部520の一構成例を示す図である。このアクセスキー生成部520は、nビット(nは整数)の識別子810を入力とする。このnビットの識別子810は、上位naビット(naは整数)のデータa811と、続くnbビット(nbは整数)のデータb812と、下位ncビット(ncは整数)のデータc813とから構成される。nビットのデータが入力されると、データa811がテーブル521から検索される。テーブル521は、各エントリに保持されたデータの中からデータa811に一致するエントリを検索する機能を有する。選択器522は、信号線525の内容に従って、信号線526または527の何れか一方の出力を選択して、アクセスインデックスとして信号線528に出力するものである。アクセスキーメモリ523は、mビット幅(mは整数、m<n)のアクセスキーを「2の(na+nc+1)乗」個分記憶するメモリである。
【0056】
テーブル521においてデータa811が一致するエントリが存在する場合には、その格納位置がインデックスとして信号線524を介して出力される。テーブル521における総エントリ数を「2のp乗」個と仮定すると、バスインデックスはpビット(p=na−nb:整数)あれば足りることになる。また、一致するエントリが存在するか否かは、ヒット/ミス信号として、信号線525を介して出力される。一致するエントリが存在する場合には信号線525にはヒット信号が出力され、一致するエントリが存在しない場合には信号線525にはミス信号が出力される。
【0057】
テーブル521においてデータa811が一致するエントリが存在する場合には、値「1」を示すデータ839に続いて、pビットのデータ831と、nbビットのデータ832と、ncビットのデータ833とがアクセスインデックスとなる。ここで、テーブル521からのpビットがデータ831、データb812のnbビットがデータ832、データc813のncビットがデータ833にそれぞれ設定されて、信号線527に出力される。すなわち、一致するエントリが存在する場合には、選択器522は信号線525の信号がヒット信号であるため、信号線527の出力を選択して、信号線528に出力する。
【0058】
テーブル521においてデータa811が一致するエントリが存在しない場合には、値「0」を示すデータ829に続いて、naビットのデータ821と、ncビットのデータ823とがアクセスインデックスとなる。ここで、データa811のnaビットがデータ821、データc813のncビットがデータ823にそれぞれ設定されて、信号線526に出力される。すなわち、一致するエントリが存在しない場合には、選択器522は信号線525の信号がミス信号であるため、信号線526の出力を選択して、信号線528に出力する。
【0059】
アクセスキーメモリ523は、信号線528を介してアクセスインデックスが供給されると、そのアクセスインデックスにより記憶内容を索引して、アクセスキーを信号線529に出力する。これにより、nビットの識別子810からmビットのアクセスキーが生成されたことになる。
【0060】
このように、本発明の第2の実施の形態によれば、nビットの識別子に基づいてmビットのアクセスキー(n>m)を生成することができる。
【0061】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、上述のように特許請求の範囲における発明特定事項とそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
【符号の説明】
【0062】
100 ホストブリッジ装置
101 入出力インターフェースコントローラ
102 スイッチ
103〜105 PCIeコントローラ
106 内部ブリッジ
120 アクセスキー生成部
121 バス番号テーブル
122 選択器
123 アクセスキーメモリ
190 周辺バス
191 タイマー
192 UART
193 PCIデバイス
200 プロセッサシステム
210 ホストプロセッサ
220 ホストメモリ
290 プロセッサバス
311〜316 PCIeデバイス
321〜328 PCIデバイス
401〜416 バス
421〜423 スイッチ
424、425 PCIブリッジ
520 アクセスキー生成部
521 テーブル
522 選択器
523 アクセスキーメモリ
600 入出力ページテーブル(IOPT)
610 IOPTエントリ
710 入出力デバイス識別子
711 バス番号
712 デバイス番号
713 機能番号
810 識別子
1211 バス番号保持部
1212 比較器
1213 エンコーダ
1214 論理和回路

【特許請求の範囲】
【請求項1】
周辺デバイスのデバイス識別子を表すビットフィールドの一部である部分ビットフィールドを前記部分ビットフィールドよりもビット幅の短い短縮ビットフィールドに変換するビットフィールド変換部と、
前記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを前記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、
前記短縮ビットフィールドへの変換が成功した場合には前記短縮ビットフィールドを含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引し、前記短縮ビットフィールドへの変換が失敗した場合には前記部分ビットフィールドを含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引する索引部と
を具備するアクセスキー生成装置。
【請求項2】
周辺デバイスのデバイス識別子を表すビットフィールドの一部であるバス番号を前記バス番号よりもビット幅の短い短縮バス番号に変換するバス番号変換部と、
前記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを前記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、
前記短縮バス番号への変換が成功した場合には前記短縮バス番号を含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引し、前記短縮バス番号への変換が失敗した場合には前記バス番号を含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引する索引部と
を具備するアクセスキー生成装置。
【請求項3】
前記デバイス識別子は、前記バス番号とデバイス番号とを含み、
前記索引部は、前記短縮バス番号への変換が成功した場合には前記短縮バス番号と前記デバイス番号とを含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引し、前記短縮バス番号への変換が失敗した場合には前記バス番号を含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引する
請求項2記載のアクセスキー生成装置。
【請求項4】
前記デバイス識別子は、前記バス番号とデバイス番号と機能番号とからなり、
前記索引部は、前記短縮バス番号への変換が成功した場合には前記短縮バス番号と前記デバイス番号と前記機能番号とから特定される前記アクセスキー保持部の領域から前記アクセスキーを索引し、前記短縮バス番号への変換が失敗した場合には前記バス番号と前記機能番号とから特定される前記アクセスキー保持部の領域から前記アクセスキーを索引する
請求項2記載のアクセスキー生成装置。
【請求項5】
前記バス番号変換部は、前記バス番号を保持するエントリを複数備え、前記エントリの何れかに変換対象となるバス番号が保持されている場合には前記短縮バス番号への変換が成功したものとして当該エントリに固有に付与された番号を前記短縮バス番号として出力し、前記エントリの何れにも変換対象となるバス番号が保持されていない場合には前記短縮バス番号への変換が失敗したものとする
請求項2記載のアクセスキー生成装置。
【請求項6】
周辺デバイスのデバイス識別子を表すビットフィールドの一部である部分ビットフィールドを前記部分ビットフィールドよりもビット幅の短い短縮ビットフィールドに変換するビットフィールド変換部と、
前記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを前記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、
前記短縮ビットフィールドへの変換が成功した場合には前記短縮ビットフィールドを含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引し、前記短縮ビットフィールドへの変換が失敗した場合には前記部分ビットフィールドを含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引する索引部と、
前記索引されたアクセスキーを用いて前記メモリへのアクセスを制御するメモリアクセス制御部と
を具備する情報処理装置。
【請求項7】
周辺デバイスのデバイス識別子を表すビットフィールドの一部であるバス番号を前記バス番号よりもビット幅の短い短縮バス番号に変換するバス番号変換部と、
前記周辺デバイスからメモリへのアクセスを制御するためのアクセスキーを前記周辺デバイスの各々に対応して複数保持するアクセスキー保持部と、
前記短縮バス番号への変換が成功した場合には前記短縮バス番号を含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引し、前記短縮バス番号への変換が失敗した場合には前記バス番号を含むインデックスアドレスを用いて前記アクセスキー保持部から前記アクセスキーを索引する索引部と、
前記索引されたアクセスキーを用いて前記メモリへのアクセスを制御するメモリアクセス制御部と
を具備する情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2010−170237(P2010−170237A)
【公開日】平成22年8月5日(2010.8.5)
【国際特許分類】
【出願番号】特願2009−10488(P2009−10488)
【出願日】平成21年1月21日(2009.1.21)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】