説明

アドレス空間変換装置及びそのアドレス空間変換方法、並びにコンピュータ・プログラム

【課題】
処理bit数の少なさに起因するアクセス空間の制約を回避することによって、大規模な入出力データを処理するアドレス空間変換装置等を提供する。
【解決手段】
アドレス空間変換装置は、制御部と、その制御部によって制御されるアドレス空間変換部とを備える。このアドレス空間変換装置において、前記制御部は、前記アドレス空間変換部に接続された周辺デバイスに、前記アドレス空間変換部を制御することによってアクセスするのに先立って、所定の上位アドレスの範囲を、記憶領域単位を成すアドレス空間に論理的に区画し、そのアドレス空間の区画を、前記アドレス空間変換部に割り当てた後に、その割り当てたアドレス空間の範囲において前記周辺デバイスの下位アドレスを特定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、情報処理装置のアドレス空間を変換する技術分野に関する。
【背景技術】
【0002】
近年、企業などで、取り扱う業務データなどの情報量が急速に増大しており、これらのデータを処理する情報処理装置は、多くの記憶装置などの周辺機器や、他の情報処理装置との間を、高速で大容量の通信ネットワーク(以下、「NW」と略称する)機能で接続することにより、大量のデータを処理することが期待されている。
【0003】
最近のNW機能として、例えば、サーバ等の情報処理装置ではG(ギガ)bps級の物理速度を有する、Network Interface Card(以下、「NIC」と称する)や、Fiber Channel(以下、「FC」と略称する)カードなどが使われている(以下、NICやFCカードを総称して、「NWカード」と称する)。
【0004】
また、係るNWカードには、集積度を上げるために、1枚のカードに複数の通信ポートを搭載しているものがある。さらに、大規模な情報処理装置では、これらのNWカードを複数枚、搭載可能となっている。
【0005】
これらのNWカードを搭載する、サーバ等の情報処理装置では、Peripheral Component Interconnect − Special Interest Group(以下、「PCI−SIG」と称する)が、汎用バスインタフェースを規定している。
【0006】
それは、一般に普及している、Peripheral Component Interconnect(以下、「PCI」と称する)バス規格であり、この規格に対応した、拡張スロットを搭載することによって、上述のNWカードを複数枚、収容できるようにしている。
【0007】
しかしながら、これらのPCIバスに対応したNWカードは、情報処理装置のオペレーティングシステム(Operating System;以下、「OS」と称する)や、制御ソフトウェアであるドライバと共に動作するために必要な、NWカード内のPCIバス制御チップが有するレジスタや、データ転送用のバッファなどのために、情報処理装置が有するメモリ容量の一部を占有する。
【0008】
情報処理装置のCPU(Central Proccessing Unit;以下、「CPU」と称する)は、NWカードが有するレジスタや、バッファなどの動作に必要な情報を、メモリにマッピングすることにより、そのメモリに直接アクセスすることによって、NWカードからの入出力データを高速にやりとりすることができる。
【0009】
最近のNWなどの多くのカードは、動作速度が速くなってきていることと、レジスタや、バッファのサイズが大きくなってきていることから、CPUのメモリと連続的に同じ空間を用いるメモリマップドIO(Memory Mapped IO(Input Output);以下、「MMIO」と称する)と呼ばれるメモリのマッピング方法を採用しているカードが増えている。これとは別に、メモリ空間とは不連続なIO空間にマッピングするIOマップドIOがあるが、本アドレス空間変換装置ではMMIOを対象としている。
【0010】
係るNWカードは、伝送速度の高速化、通信ポートの集積化の他に、情報処理装置への搭載枚数の増加に伴って、情報処理装置のメモリを占有するMMIO空間が増大する。そのため、他にメモリを使用するOSやドライバの動作を圧迫する可能性がある。
【0011】
すなわち、限られたメモリ空間で、OSやドライバの動作を圧迫しないようにするためには、NWなどのカードの枚数を制限する必要がある。しかし、これにより大規模な入出力機能を必要とする大量のデータ処理は困難となっている。
【0012】
そこで、係るメモリ空間不足の対策の一つとして、最近のサーバなどの情報処理装置は、その装置に搭載する、OSや、CPUおよびチップセットを、64bit(いわゆる、x64アーキテクチャ)に対応している。
【0013】
また、NWなどのカードも、メモリにおける、MMIOM空間の不足を解消するために、64bitのMMIOに対応したPCIデバイスが出現してきている。
【0014】
しかしながら、情報処理装置は、32bit(いわゆるx86アーキテクチャ)対応から、上述した64bit対応への過渡期にあるため、一部の情報処理装置では、CPUやチップセット以外の、PCIバスを拡張するためのPCIブリッジや、PCIデバイスは、依然として、32bitの対応のままである場合がある。
【0015】
なお、PCIバス制御チップを有するNWなどのカードは、アーキテクチャを説明する場合は、PCIデバイスと称する。また、情報処理装置が有するPCIブリッジと、PCIデバイスを総称して便宜的に周辺デバイスと呼ぶ場合がある。
【0016】
さらに、情報処理装置および、PCIデバイスの外部に接続する機器を周辺機器と称する。
【0017】
つまり、情報処理装置の経路にある、PCIブリッジや、PCIデバイスが、64bitに対応していないことによって、それが制約となって、NWカードなどのPCIデバイスに割り当て可能な、メモリにおけるMMIO空間が、例えば、32bitの空間の上限である約4ギガバイト(Giga Byte;以下「GB」と称する)になってしまう。
【0018】
実際には、上述したOSや、ドライバとメモリを分け合うので、NWカードなどのPCIデバイスに割り当て可能なMMIO空間はさらに狭くなる。
【0019】
例えば、最近のサーバが搭載する10GbpsのLANを1ポート内蔵するNICは、そのMMIO空間として128MBを使用する。
【0020】
そのため、この様なNICを、例えば8枚搭載しただけで、上述の約4GBの空間のうちの約1GBを消費してしまう。このため、このようなNWカードを数十枚必要とする、大規模な入出力機能を有する情報処理装置の構築は困難である。
【0021】
ここで、特許文献1は、情報処理装置の動作プログラムのためのメモリ空間と、周辺機器の入出力動作に必要な情報をメモリ空間に効果的に配置するメモリ空間の割り当て方法を開示する。
【0022】
特許文献1で参照されている関連する技術は、例えば、32bitのCPUがアクセス可能なメモリ空間のサイズが、約4GBに制限される中で、入出力動作のためのPCIデバイスの制御プログラムのアドレス空間を制限すると、PCIデバイスが正常に動作しなくなる課題があるので、これを解決することを意図したものである。
【0023】
しかしながら、上記特許文献1に記載された、メモリアドレス空間の割り当て方法では、結局、約4GBの領域の中で、入出力動作に必要な情報のためのメモリ空間を確保しつつ、装置の動作プログラム空間の割り当てを最適にすることに留まるため、一定以上の規模のシステムは、依然として構築できないという課題が残る。
【0024】
また、特許文献2は、情報処理装置の入出力動作を制御するプログラムを実行する際に、CPUの実行アドレスを外部回路でモニタすることによって、その外部回路でデコードした情報を基に、所定のバンク単位で入出力動作を制御するプログラム領域を切替えることにより、CPUの物理アドレスの制約を受けずに、入出力領域を拡張する、入出力領域拡張用メモリ装置およびそのメモリ装置を用いた情報処理システムを開示する。
【0025】
特許文献2で参照されている関連する技術は、CPUがアクセス可能なメモリ空間を、プログラムの動作に必要な領域と、入出力の制御に必要な領域に効率よく分割するだけであって、結局、CPUやOSが扱う物理アドレスのbit数(処理bit数)で決まるアクセス可能なメモリエリアの上限を超えることができないという課題があるので、これを解決することを意図したものである。
【0026】
しかしながら、上記特許文献2に記載された、入出力領域拡張用メモリ装置では、CPUが、入出力動作を制御するプログラムの実行アドレスを外部のハードウェア(以下、「HW」と称する)回路を用いてモニタするとともに、そのモニタ結果を基にバンクを選択する必要がある。
【0027】
また、上述のプログラムは、入出力領域のバンクを切替るトリガにはなるが、切替えた先の当該領域を外部からアドレス指定するソフトウェア(以下、「SW」と称する)の介在が必要である。さらに、プログラムの実行を、外部HWにより、一旦デコードした後、バンクを選択してから、再び、上述のSWによる仮想的な入出力領域の制御を行うため、入出力応答性能が低下するという課題がある。
【先行技術文献】
【特許文献】
【0028】
【特許文献1】特開2007−233534号公報
【特許文献2】特開平 9−223100号公報
【発明の概要】
【発明が解決しようとする課題】
【0029】
上述した関連する技術では、情報処理装置の処理bit数が少ないことにより、入出力機能のために使用することができるメモリ空間は制限を受ける。その結果、入出力機能の拡張に制約が生じ、所望の大規模な情報処理装置を構築できない。あるいは、プログラムの実行をモニタする外部回路の追加や、SWの介在、およびこれらによる入出力応答性能の低下が発生するという課題がある。
【0030】
本発明の主たる目的は、上述した課題を解決するために、処理bit数の少なさに起因するアクセス空間の制約を回避することによって、大規模な入出力データを処理する情報処理装置を提供することにある。
【課題を解決するための手段】
【0031】
本発明は、上述した課題の解消を目的としてなされた。即ち、本発明に係るアドレス空間変換装置は、制御部と、前記制御部によって制御されるアドレス空間変換部とを備え、この制御部は、前記アドレス空間変換部に接続された周辺デバイスに、前記アドレス空間変換部を制御することによってアクセスするに先立って、所定の上位アドレスの範囲を、記憶領域単位を成すアドレス空間に論理的に区画し、そのアドレス空間の区画を、前記アドレス空間変換部に割り当てた後に、その割り当てたアドレス空間の範囲において前記周辺デバイスの下位アドレスを特定することを特徴とする。
【0032】
また、同目的を達成する本発明の他の見地として、本発明に係るアドレス空間変換の制御方法は、制御部と、その制御部によって制御されるアドレス空間変換部とを備えたアドレス空間変換装置において、前記アドレス空間変換部に接続された周辺デバイスにアクセスするに先立って、
所定の上位アドレスの範囲を、記憶領域単位を成すアドレス空間に論理的に区画し、
そのアドレス空間の区画を、前記アドレス空間変換部に割り当て、
その割り当てたアドレス空間の範囲において前記周辺デバイスの下位アドレスを特定することを特徴とする。
【0033】
そして、同目的を解決する本発明の更なる他の見地として、本発明に係るコンピュータ・プログラムは、制御機能と、その制御機能によって制御されるアドレス空間変換機能とを備えたアドレス空間変換装置を制御するコンピュータ・プログラムであって、そのコンピュータ・プログラムにより、
前記制御機能は、前記アドレス空間変換機能によってアクセス可能に接続された周辺デバイスにアクセスするのに先立って、所定の上位アドレスの範囲を、記憶領域単位を成すアドレス空間に論理的に区画し、
そのアドレス空間の区画を、前記アドレス空間変換機能に割り当て、
その割り当てたアドレス空間の範囲において前記周辺デバイスの下位アドレスを特定する制御を、
コンピュータに実現させることを特徴とする。
【発明の効果】
【0034】
本発明によれば、処理bit数の少なさに起因するアクセス空間の制約を回避することにより、大規模な入出力データを処理する情報処理装置を構築することができる。
【図面の簡単な説明】
【0035】
【図1】本発明の第1の実施形態に係るアドレス空間変換装置の概要を示すブロック図である。
【図2】本発明の第2の実施形態に係るアドレス空間変換装置の詳細を示すブロック図である。
【図3】本発明の第2の実施形態に係るアドレス空間変換を模式的に表す図である。
【図4】本発明の第2の実施形態に係るアドレス空間変換テーブルの内容を例示する図である。
【図5】本発明の第2の実施形態に係るアドレス空間変換装置のメモリマップの一例を示す図である。
【図6】本発明の第2の実施形態におけるアドレス空間変換装置の起動からの動作シーケンス例を示すフローチャートである。
【図7】本発明の第2の実施形態におけるアドレス空間変換装置のホットプラグからの動作シーケンス例を示すフローチャートである。
【図8】本発明の第3の実施形態に係るアドレス空間変換装置の概要を示すブロック図である。
【図9】本発明の第4の実施形態に係るアドレス空間を変換するコンピュータ・プログラムの概要を示すソフトウェアスタック図である。
【発明を実施するための形態】
【0036】
以下、本発明を実施する形態について図面を参照して詳細に説明する。
【0037】
<第1の実施形態>
まず、本発明の第1の実施形態について説明する。図1は、本発明の第1の実施形態に係るアドレス空間変換装置の概要を示すブロック図である。
【0038】
本アドレス空間変換装置は、本装置を制御する制御部1、アドレス空間変換部2、周辺デバイス3を有する。
【0039】
ここで、制御部1は、本アドレス空間変換装置の全体を制御する制御部である。
【0040】
アドレス空間変換部2は、制御部1と、周辺デバイス3の間にあって、周辺デバイス3のアドレス空間を拡大するようにアドレス空間を変換するアドレス空間変換部である。
【0041】
周辺デバイス3は、制御部1がアクセスする対象とする周辺デバイスである。
【0042】
また、制御部1は、アドレス空間変換部2を制御することにより、周辺デバイス3にアクセスする際に、アドレス空間変換部2の図示していない、Global−Localアドレス空間変換テーブルに基いてアドレス空間を変換する。
【0043】
ここで、図示していないGlobalアドレスは、制御部1から、アドレス空間変換部2に与える論理的にアドレス空間を拡大したアドレスと定義する。
【0044】
また、同じく図示していないLocalアドレスは、アドレス空間変換部2から、周辺デバイス3に与える物理アドレスと定義する。
【0045】
次に、本実施形態の動作について説明する。
【0046】
まず、制御部1は、所定の上位アドレスの範囲による論理的な区画であるセグメントを、アドレス空間変換部2に割り当てておく。
【0047】
次に、制御部1は、周辺デバイス3にアクセスするための、アドレス空間変換部2に出力するアドレスを、そのセグメントの範囲において、周辺デバイス3の下位アドレスを特定して成るGlobalアドレスを指定する。
【0048】
次に、前記アドレス空間変換部2は、上述の制御部1が指定したGlobalアドレスを基に、自身が備えるGlobal−Localアドレス変換テーブルを参照することにより、制御部1が指定する、Globalアドレスの上位アドレス空間であるセグメントを特定するとともに、そのセグメントの配下にある、アクセス目的とする周辺デバイス3の下位アドレスを特定する変換を行う。
【0049】
すなわち、本実施形態に係るアドレス空間変換装置によれば、前記アドレス空間変換部2において、周辺デバイス3の物理アドレス空間ごと、セグメント毎に区画した上位の論理アドレス空間に変換することによって、接続可能な周辺デバイスの数を増やすことができる。
【0050】
つまり、制御部1は、周辺デバイス3の物理アドレス空間を論理的に拡張することで、大規模な入出力機能を有するアドレス空間変換装置を構築することができるという効果を奏することができる。
【0051】
また、制御部1の処理bit数に比べて、周辺デバイス3の処理ビット数が小さい装置であっても、これに制限されることなく、制御部1からは、あたかも制御主体である制御部1と、制御対象である周辺デバイス3の処理bit数が同じに見えるように扱うことができる。
【0052】
さらに、アドレス空間変換部2に、Global−Localアドレス変換テーブルを追加するだけで、大規模な入出力機能を有するアドレス空間変換装置を容易に実現することができるという効果を奏することが出来る。
【0053】
<第2の実施形態>
次に、第1の実施形態を基本とする本発明の第2の実施形態について図を参照して、詳細に説明する。図2は、本実施形態に係るアドレス空間変換装置の詳細を示すブロック図である。
【0054】
まず、図2に示すブロック図を参照して、その構成について説明する。
【0055】
本アドレス空間変換装置10は、CPU11、メモリ12、チップセット13、PCIブリッジ17、PCIデバイス19から構成される。
【0056】
本アドレス空間変換装置10が有する、CPU11、メモリ12、チップセット13は、いわゆるx64アーキテクチャに代表される、64bitの処理bit数を有する機能ブロックである。
【0057】
一方で、技術進歩に伴うアーキテクチャの過渡期にあって、本アドレス空間変換装置10が有する周辺デバイスであるPCIブリッジ17および、PCIデバイス19は、32bitの処理bit数を有しており、メモリのMMIO空間を使用する。
【0058】
また、本装置に搭載しているチップセット13は、MMIOアクセスレジスタ14、MMIOアドレスレジスタ15、およびGlobal−Localアドレス変換テーブル16を有する。
【0059】
また、本装置に搭載しているPCIブリッジ17は、配下に接続する、PCIデバイス19のMMIO空間を割り当てる、MMIOアドレスレジスタ18を有する。
【0060】
また、本装置に搭載しているPCIデバイス19は、MMIOアドレスレジスタ20および、MMIO空間にマッピングするMMIOレジスタ21を有する。
【0061】
なお、PCIデバイス19は、例えば、NWカードであるNICや、FCカードなど通信カードの他、インタフェースが、例えば、Serial Attached SCSI(Small Computer System Interface);以下、「SAS」と称する)や、シリアルATA(Serial Advanced Technology Attachment;以下、「SATA」と称する)などの記憶装置を接続する規格に対応するPCIバスカード、もしくは周辺機器などである。
【0062】
ここで、図1に示す第1の実施形態のブロック図と対比すると、CPU11およびメモリ12は、第1の実施形態の制御部1に相当する。また、チップセット13は、第1の実施形態のアドレス空間変換部2に相当する。さらに、PCIブリッジ17およびPCIデバイス19は、第1の実施形態の周辺デバイス3に相当する。
【0063】
次に、図3について説明する。図3は、本実施形態に係るアドレス空間変換を模式的に表す図である。図3の左側は、Globl MMIOアドレス31、図3の右側は、Local MMIOアドレス32である。また、Global MMIOアドレス31は、チップセットセグメント33を有する。さらに、Local MMIOアドレス32は、ブリッジセグメント34、PCIデバイス35を有する。
【0064】
次に、図4について、説明する。図4は、本実施形態に係るアドレス空間変換テーブルの内容を例示する図である。図4は、図3のアドレス空間変換を模式的に表す図に対応した、Global−Localアドレス変換テーブルである。
【0065】
チップセット13は、本Global−Localアドレス変換テーブル16を有している。本アドレス変換テーブルのデータ構造は、Global MMIOアドレス41と、セグメント番号42からなり、両者を対応付ける構造となっている。
【0066】
なお、図4に示すGlobal−Localアドレス変換テーブル16は、本実施形態では、一例として、HWによる再構成可能(書き換え可能、もしくはリコンフィギュアラブル)なHWルックアップ(参照)テーブルとして説明しているが、SWによって変更することが可能な、SWテーブルで実現してもよい。
【0067】
次に図5について説明する。図5は、本実施形態に係るアドレス空間変換装置のメモリマップの一例を示す図である。これは、CPU11のメモリアドレス空間50であり、CPU11から見た、64bitメモリアドレス空間51は、Global MMIOアドレスを示す。
【0068】
そしてCPU11において動作するプログラムの用途毎に区分けされた動作空間に対応するメモリマップとなっている。
【0069】
続いて、第1の実施形態を基本とする本発明の第2の実施形態について図2乃至図5を参照して、その動作の概要について説明する。
【0070】
まず、図2に示す本アドレス空間変換装置のCPU11において動作するBIOS(Basic Input Output System)22は、本装置が起動する際、および、PCIデバイス19を、図示していない拡張スロットから抜去したり、拡張スロットに挿入したり、拡張スロットから抜去してから、挿入したりする際に、各デバイスの認識や。情報の更新を行う。
【0071】
つまり、BIOS22は本アドレス空間変換装置が搭載している、チップセット13、PCIブリッジ17を含む全てのPCIデバイス19を認識した後に、PCIデバイスに変更があれば、そのPCIデバイス19が有するレジスタから必要な情報を収集する。
【0072】
その後、BIOS22は、PCIバス規格に規定されている、チップセット13が有する特別なモードである、PCIコンフィグレーション動作を使用することにより、PCIデバイス19が動作に必要とするレジスタやバッファなどの情報をメモリ12に割り当てる。
【0073】
つまり、BIOS22は、PCIブリッジ17および、PCIデバイス19の各々のMMIOアドレスレジスタ18および、20から、動作に必要なメモリのサイズを読出す。
【0074】
そして、BIOS22は、それを基にして、必要なメモリのサイズのデータを、MMIOアドレスレジスタ18および、20に改めて、書込むことにより、図5に示す、メモリ空間の範囲の中で、例えば、セグメント1 MMIO53という4GB以上のメモリ領域に新たなMMIO空間を割り当てることができる。
【0075】
これにより、以降、CPU11および図示していない協働するOSは、PCIデバイス19にアクセスする際に、上述のメモリ12の新たなMMIO空間に対してCPUのリード/ライトサイクルを使用してMMIOアクセスすることができる。
【0076】
なお、図5に示す例では、新たなMMIO空間の開始アドレスを0000_2001_0000_0000(hex表示。以下、同様)としている。
【0077】
より具体的には、CPU11は、PCIデバイス19にデータを書込む際に、図示していないOSと協働して、目的のPCIデバイスを特定する64bitのGlobal MMIOアドレスをチップセット13のMMIOアクセスレジスタ14に設定する。
【0078】
その後、チップセット13は、図4に記載のGlobal−Localアドレス変換テーブル16を参照する。そして、チップセット13は、同テーブルに従い、Global MMIOアドレス41から、データを書込みたいPCIデバイス19が属するセグメント番号42と、図4に図示していない、そのPCIデバイス19のLocal MMIOアドレスに変換する。
【0079】
これによって、CPU11は、図示していないOSと協働して、目的とする、セグメント番号に属するPCIデバイス19のMMIOレジスタ21を使用して、MMIOアクセスによる書込みを行う。
【0080】
次に、CPU11は、PCIデバイス19からデータを読出す際に、書込みの際と同様に、図示していないOSと協働して、目的のPCIデバイスを特定する64bitのGlobal MMIOアドレスをチップセット13のMMIOアクセスレジスタ14に設定する。
【0081】
その後、チップセット13は、図4に記載したGlobal−Localアドレス変換テーブル16を参照する。
【0082】
そして、チップセット13は、同テーブルに従い、Global MMIOアドレス41から、データを読出したいPCIデバイス19が属するセグメント番号42と、図4に図示していない、そのPCIデバイス19のLocal MMIOアドレスに変換する。
【0083】
これによって、CPU11は、図示していないOSと協働して、目的とする、セグメント番号に属するPCIデバイス19のMMIOレジスタ21を使用して、MMIOアクセスによる読出しを行う。
【0084】
次に、図3に示す、本実施形態に係るMMIOのアドレス空間変換を模式的に表す図を用いて、さらに詳しく説明する。
【0085】
図3の左に記載したGlobal MMIOアドレス31は、CPU11が、指定する64bitで構成する論理アドレスである。
【0086】
一方で、図3の右に示すLocal MMIOアドレス32は、周辺デバイスであるPCIブリッジ17および、PCIデバイス19の32bitの物理的な下位アドレス範囲である。
【0087】
上述の64bitの論理的なGlobal MMIOアドレス31は、上述の下位の物理的なLocal MMIOアドレス32を含むように、上位に32bitの論理的な上位アドレス範囲を配しており、合わせて64bitの論理アドレスを成している。
【0088】
なお、32bitの上位アドレス範囲のうちの、所定のbitで表すアドレス範囲を区画とする論理的なセグメント番号を付与することによって、そのセグメント番号の単位で、物理的な下位アドレス範囲を増やすことができる。
【0089】
さらに、32bitの下位アドレス範囲とは、例えば、図3の左下側に示す、Global MMIOアドレスである、0000_2001_0000_0000の下位から8桁の部分である。一方で、32bitの上位アドレス範囲とは、例えば、上記の例では、上位から8桁の部分である。
【0090】
ここで、図3に記載しているGlobal MMIOアドレス31が表す64bitのアドレス空間と、Local MMIOアドレス32が表す32bitのアドレス空間のアドレス範囲と、両空間の関係について説明する。
【0091】
まず、下位アドレス範囲である0000_0000〜ffff_ffffは、32bitで表される約4GB毎のアドレス範囲であり、PCIブリッジ17および、PCIデバイス19が使えるLocal MMIOアドレス32である。
【0092】
次に、上位アドレス範囲である、0000_2001〜0000〜200fは、上述した、下位アドレス範囲の上位に位置する32bitで表されるアドレス範囲であり、論理的に区画(すなわち拡張)するためのアドレス範囲であるセグメントである。
【0093】
上述した、下位アドレス範囲の上位に上位アドレス範囲を位置したものが、Global MMIOアドレス31であり、64bitで表される。
【0094】
ここで、図3の左側に記載している、上位アドレス範囲である0000_2001〜0000_200fの下位から1桁目の1〜fは、セグメントの番号もしくは個数を表している。つまり、本実施形態の例では、最大15個のセグメント番号を付与した、PCIブリッジ17を配置することができる。
【0095】
また、同じく下から4桁目の2は、図5に示す、4GB以上での新たなMMIO空間である、例えば、セグメント1 MMIO(4GB以上での新MMIO空間)53以上の空間である。
【0096】
ここで、図5に示すように、関連する情報処理装置では、MMIO(4GB以下での旧MMIO空間)52の範囲しか使えなかったが、本アドレス空間変換装置では、セグメント1 MMIO(4GB以上での新MMIO空間)53のような、広大なアドレス範囲を、複数のセグメント毎に割り当てて使うことができる。
【0097】
なお、PCIブリッジ17は、多段(いわゆる、カスケード)接続にすることが可能であるので、一段目のPCIブリッジに、2段目のPCIブリッジを複数個、接続する構成にしてもよい。
【0098】
また、PCIデバイス19は、その各々のPCIブリッジ17の配下に、少なくとも1個以上、PCIブリッジ17のアドレス範囲を超えない範囲で、接続することができる。
【0099】
さらに、図3の右に接続している、PCIデバイス19であるPCI10〜PCI1nや、PCIf0〜PCIfn35は、各セグメントの範囲の中で、シーケンシャルにMMIOアドレスを割り当てるようにすればよい。
【0100】
以上の本実施形態の動作について、図6、図7のフローチャートを参照して、さらに詳細に説明する。
【0101】
図6は、本発明の第2の実施形態におけるアドレス空間変換装置の起動からの動作シーケンス例を示すフローチャートである。ここでは、一例として書込み動作も含めたフローチャートを説明する。
【0102】
まず、本メモリアドレス空間変換装置の操作者は、本装置の電源を投入する(ステップS61)。
【0103】
次に、BIOS22は、本装置に接続するチップセットを含む、PCIブリッジ17および、PCIデバイス19を検出するとともに、これらのレジスタから必要なデバイス情報を取得する(ステップS62)。
【0104】
ここで、デバイス情報とは、PCIバス規格で定められたPCIデバイスの属性情報および、PCIデバイス固有のデータの所在を示すMMIOレジスタ21などである。
【0105】
次に、BIOS22は、特別なPCIコンフィギュレーション動作を使うことによって、PCIブリッジ17、PCIデバイス19が動作するために必要なメモリのサイズを読出す(ステップS63)。
【0106】
次に、BIOS22は、取得したメモリ空間アクセス用のアドレスのサイズを基に、チップセット13に、Local MMIOアドレスレンジを割当てる(ステップS64)。
【0107】
次に、BIOS22は、チップセット13に、PCIブリッジおよび、PCIデバイスを区画するセグメント番号を割当てる。なお、チップセット13へのセグメント番号の割当ては初回、起動の際に決定済みである(ステップS65)。
【0108】
その結果、BIOS22は、Local MMIOアドレスレンジと、セグメント番号を基に、チップセットに有するGlobal−Localアドレス変換テーブルを作成する(ステップS66)。BIOS22は、本装置が起動する度に、以上の初期設定を行う。
【0109】
なお、ステップS66では、万が一、PCIデバイス19のうちのどれかが、故障することで、BIOS22に対してPCIデバイスから応答がない場合は、本装置が起動する際に、当該故障のPCIデバイスを除いて、Global−Localアドレス変換テーブルを作成する。
【0110】
BIOS22は、一連のBIOSの処理を行った後に、OSを起動する(不図示)。
【0111】
つづいて、OSは、接続するPCIデバイスを含むデバイスリストを作成する(ステップS67)。
【0112】
その後、OSは、PCIデバイスが格納している情報を取得する(ステップS68)。
【0113】
その後、OSは、PCIデバイスに合致するドライバを割当てる(ステップS69)。
【0114】
OSは、OSがブートする度に以上の初期設定を行う。
【0115】
なお、ステップS67では、万が一、PCIデバイス19のうちのどれかが、故障することで、OSに対してPCIデバイスから応答がない場合は、本装置が起動する際に、当該故障のPCIデバイスを除いて、デバイスリストを作成する。
【0116】
次に、OSは、PCIデバイスにデータを書込むために、Global MMIOアドレスを、MMIOアクセスレジスタ14に設定する(ステップS70)。
【0117】
その後、チップセット13は、Global MMIOアドレス41をキーにして、Global−Local MMIOアドレス変換テーブル16を参照して、対応するPCIブリッジ19配下のセグメントを特定する(ステップS71)。
【0118】
さらに、チップセット13は、Global MMIOアドレス41をキーにして、Global−Local MMIOアドレス変換テーブル16を参照して、対応するPCIデバイスのLocal MMIOアドレスを特定する(ステップS72)。
【0119】
なお、ステップS71と、ステップS72では、MMIOアクセスレジスタ14に、MMIOアドレスレジスタ15からのセグメント番号とLocal MMIOアドレスとを、一旦、保有している。
【0120】
そして、チップセット13は、Local MMIOアドレスに対応するPCIデバイスのMMIOレジスタ21にデータを書込む(ステップS73)。
【0121】
以上により、CPU11は、OSと協働して、PCIデバイス19に対して必要なデータを書込むことができる。
【0122】
次に、ホットプラグの場合の動作について、図7を用いて説明する。
【0123】
図7は、本発明の第2の実施形態におけるアドレス空間変換装置のホットプラグからの動作シーケンス例を示すフローチャートである。ここでは、一例として読出し動作も含めたフローチャートを説明する。
【0124】
ここで、ホットプラグとは、操作者が、情報処理装置の稼動中に、その拡張スロットに搭載するPCIデバイスを抜いたり、追加したり、もしくはPCIデバイスを拡張スロットから抜いたあと、拡張スロットに追加したりすることである。
【0125】
なお、図6の起動からの動作フローチャートと同じ箇所は、説明を省略する。
【0126】
まず、本アドレス空間変換装置の操作者は、本装置の稼動中に、本装置の拡張スロットから、PCIデバイスをホットプラグする操作を行うことを、本装置に予め通知するために、組込み釦を押下する(ステップS81)。
【0127】
また、BIOS22は、操作者により、本装置が、稼動中にホットプラグの操作を行うことによって、PCIデバイスの構成が変化するので、Global−Localアドレス変換テーブル16の内容を更新する(ステップS85)。
【0128】
BIOS22は、本装置の操作者が、ホットプラグの操作を行う度に、上述のステップS85を含む、それまでの初期設定を行う。
【0129】
なお、ステップS85では、万が一、PCIデバイス19のうちのどれかが、故障することで、BIOS22に対してPCIデバイスから応答がない場合で、組込み釦押下の際に、ステップS85において、当該故障のPCIデバイスを除いて、Global−Localアドレス変換テーブルを更新する。
【0130】
一連のBIOSの処理を行った後に、BIOS22は、OSを起動(不図示)したのち、OSに対して、PCIデバイスの組込みを要求する(ステップS86)。
【0131】
次に、データ読出しでは、OSは、PCIデバイス19からデータを読出すために、対象PCIデバイス19のGlobal MMIOアドレス41をチップセット13が有するMMIOアクセスレジスタ14に設定する(ステップS90)。
【0132】
次に、チップセット13は、Global MMIOアドレス41をキーにして、Global−Local MMIOアドレス16を参照して、対応するPCIブリッジ17配下のセグメント番号42を特定する(ステップS91)。
【0133】
その後、チップセット13は、Global MMIOアドレス41をキーにして、Global−Local MMIOアドレス16を参照して、対応するPCIデバイス19の図示していないLocal MMIOアドレスを特定する(ステップS92)。
【0134】
そして、チップセット13は、Local MMIOアドレスに対応する
PCIデバイス19のMMIOレジスタ21からデータを読出す(ステップS93)。
【0135】
以上により、CPU11は、OSと協働して、PCIデバイス19に対して必要なデータを読込むことができる。
【0136】
これにより、本実施形態に係るアドレス空間変換装置によれば、処理bit数の大きなチップセット13に設けたGlobal−Localアドレス変換テーブル16を用いることにより、チップセット13より処理bit数の小さい周辺デバイスである複数のPCIブリッジ17およびPCIデバイス19の物理アドレス空間を、PCIブリッジ17およびその配下のPCIデバイス19を単位とする、セグメント毎に区画した上位の論理アドレス空間に変換することによって、接続可能なPCIデバイス19の数を増やすことができる。
【0137】
また、CPU11と協働して動作するOSからは、あたかもCPU11や、チップセット13と、PCIブリッジ17や、PCIデバイス19の処理bit数が同じに見えるように扱うことができる。
【0138】
また、チップセット13に、アドレス空間変換を行う、Global−Localアドレス変換テーブル16を追加するだけで、OSを改変することなく、大規模な入出力機能を有するアドレス空間変換装置を容易に構築できるという効果を奏することが出来る。
【0139】
さらに、CPU、チップセットおよび、OS、アプリケーション(Application;以降、APと称する)SWなど情報処理装置が有する主要な構成要素は、64bit化されつつある過渡期にある中で、周辺デバイスであるPCIブリッジやPCIデバイスに、依然として32bitの部品が残留する装置でも、簡単なアドレス空間変換テーブルを埋め込んだチップセットに置き換えるだけで、上述した効果を奏することができる。
【0140】
即ち、本実施形態によれば、処理bit数の少なさに起因するアクセス空間の制約を、OSを改変することなく回避することによって、大規模な入出力データを処理する情報処理装置を構築できるという効果を奏することができる。
【0141】
以上、本実施形態について、一例として、構成および動作を説明したが、必ずしも係る構成や動作に限定されない。
【0142】
<第3の実施形態>
次に、第2の実施形態を基本とする第3の実施形態について説明する。図8は、第3の実施形態に係るアドレス空間変換装置の概要を示すブロック図である。
【0143】
本実施形態は、第2の実施形態で説明した、図2に示すアドレス空間変換装置を、系統Aと系統Bとによって二重化しており、CPU−A101と、CPU−B102の配下にそれぞれに接続する、チップセット−A103と、チップセット−B104は、それぞれが有するGlobal−Localアドレス変換テーブルによって、それぞれが拡張した、少なくとも1つ以上の、下位に接続するPCIデバイスを有する。
【0144】
また、CPU−A101と、CPU−B102は、チップセット−A103と、チップセット−B104が、高速ホストバス105によって直接接続されることにより、双方のチップセットに有する、Global−Localアドレス変換テーブルを相互に参照することができる点が異なる。
【0145】
このため、以下の説明においては、本実施形態に係る特徴的な部分を中心にさらに詳しく説明すると共に、上述した第2の実施形態と同様な構成についての重複する説明は省略する。
【0146】
本実施形態に示す、二重化アドレス空間変換装置100は、CPU−A101の配下に接続したチップセット−A103と、配下にPCIデバイスA、BならびにPCIデバイスC、Dをそれぞれ接続するPCIブリッジA、Bとを接続する系統Aを有する。
【0147】
また、同様に、本二重化アドレス空間変換装置100は、CPU−B102の配下に接続したチップセット−B104と、配下にPCIデバイスE、FならびにPCIデバイスG、Hをそれぞれ接続するPCIブリッジC、Dとを接続する系統Bを有する。
【0148】
ここで、CPU−A、CPU−Bがそれぞれ有するBIOSは、チップセット−A103とチップセット−B104とが高速ホストバス105によって接続されることにより、チップセット−A103とチップセット−B104それぞれが有する、それぞれ図示していないGlobal−Localアドレス変換テーブルを相互に参照したり、内容を書替えたりすることができる。
【0149】
また、チップセット−A103、チップセット−B104は、それぞれのGlobal−Localアドレス変換テーブルを相互に管理する、図8に図示していない故障代替管理テーブルをさらに、上位にそれぞれで有している。
【0150】
この故障代替管理テーブルは、高速ホストバス105によって、接続することにより、それぞれの系統の下位にあるPCIデバイスの故障状況の監視と、故障した場合に、相互に代替するPCIデバイスを提供することができる。
【0151】
ここで、例えば、系統A側のPCIデバイスD107が故障することにより、系統A側のBIOSからのアクセスに応答できなくなった際に、系統A側のBIOSは、自身の故障代替管理テーブルによって、PCIデバイスD107が故障したことを認識したのち、高速ホストバス105を使って、系統Bの故障代替管理テーブルおよび、Global−Localアドレス変換テーブルを参照する。
【0152】
そして、系統A側のBIOSは、使われていないか、もしくは使用頻度の低い系統B側の、例えばPCIデバイスH108に対して、系統B側のPCIブリッジD106のセグメント、チップセット−B104および、高速ホストバス105を通して、チップセット−A103に接続できるように、上述の双方の故障代替管理テーブルおよび、Global−Localアドレス変換テーブルの内容を書き換える。
【0153】
なお、BIOSは、PCIデバイスの故障の反映や、代替えにともなう、Global−Localアドレス変換テーブルの書き換えの他に、BIOSが作成するPCIデバイスが要求するメモリ領域を記載する、図8に図示していない、メモリマップを書き換える。
【0154】
また、図示していないOSは、OSが作成する、本装置に搭載しているPCIデバイスの一覧である、図8に図示していないPCIデバイスリストも書き換えることとする。
【0155】
また、操作者は、何れかのPCIデバイス19が故障して、BIOSに対して応答できない場合は、随時、起動の際、もしくはホットプラグのために、組込み釦を押下した際のいずれかの際に、上述したGlobal−Localアドレス変換テーブル、メモリマップ、PCIデバイスリストに、当該故障PCIデバイス19は、削除されることによって反映されなくなり、その結果、使用できないことを認識する。
【0156】
このために、操作者は、本アドレス空間変換装置が備える、上述のGlobal−Localアドレス変換テーブル、メモリマップ、PCIデバイスリストを表示するツールを使用する。
【0157】
ここで、代替する可能性のあるPCIデバイスとしては、例えば、電気的もしくは、物理的な回線障害が生じたNICや、あるいは、周辺機器としては、例えば、機械的な動作箇所である、モータや、磁気ヘッドを有するハードディスクドライブ(以下、HDDと称する)などである。
【0158】
以上、本実施形態では、二重化したアドレス空間変換装置が有するいずれかのPCIデバイスが故障した際に、その代替を行うことにより、信頼性が向上するという新たな効果を得る。
【0159】
なお、PCIデバイスが故障した場合だけでなく、系統Aおよび系統Bのいずれかに接続している、例えば、希少なPCIデバイスや、周辺機器に対して、他方の系統のアドレス変換テーブル、メモリマップ、PCIデバイスリストの内容を書き換えることにより、相手方に乗り入れて、共有するような使い方にも応用することができる。
【0160】
本実施形態に係る二重化アドレス空間変換装置によれば、処理bit数の大きなチップセットに設けたGlobal−Localアドレス変換テーブルを用いることにより、チップセットより処理bit数の小さい周辺デバイスであるPCIブリッジおよびPCIデバイスの物理アドレス空間を、PCIブリッジおよびその配下のPCIデバイスを単位とする、セグメント毎に区画した上位の論理アドレス空間に変換することによって、接続可能なPCIデバイスの数を増やすことができる。
【0161】
また、本実施形態に係る二重化アドレス空間変換装置によれば、双方のGlobal−Localアドレス変換テーブルに加えて、高速ホストバス105および、双方に、故障代替管理テーブルを追加するだけで、OSを改変することなく、大規模で、信頼性の高い、入出力機能を有するアドレス空間変換装置を容易に構築できるという効果を奏することができる。
【0162】
また、本実施形態に係る二重化アドレス空間変換装置によれば、このPCIデバイスの数を増やしたアドレス空間変換装置は、さらに多重化することにより、さらに大規模で、信頼性の高い情報処理装置を実現できるという顕著な効果がある。
【0163】
即ち、本実施形態によれば、処理bit数の少なさに起因するアクセス空間の制約を回避することによって、大規模な入出力データを処理する情報処理装置を構築できるという効果を奏することができる。
【0164】
さらに特有の効果として、アドレス空間変換装置間を多重化することにより、故障したPCIデバイスを制御対象から除外して、それを代替する正常なPCIデバイスを提供することにより、信頼性が向上するという効果もある。
【0165】
以上、本実施形態について、一例として、構成および動作を説明したが、必ずしも係る構成や動作に限定されない。
【0166】
<第4の実施形態>
次に、第2の実施形態を基にした、第4の実施形態を説明する。図2に示す第2の実施形態では、チップセット13内にHWのアドレス変換テーブルを用いたが、これをSWによるアドレス変換テーブルとし、かつ、図示していないOSとBIOSの連携を、Firm Wear(以下、「FW」と称する)でとることにより、CPUとOS、BIOS、が協働することで、HWであるチップセット13を変更することなく、アドレス空間変換装置を実現する点が異なる。
【0167】
本実施形態について図を用いて説明する。図9は第4の実施形態に係るアドレス空間を変換するコンピュータ・プログラムの概要を示すソフトウェア(SW、FW)スタック図である。
【0168】
このため、以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第2および第3の実施形態と同様な構成についての重複する説明は省略する。
【0169】
上述した第2や、第3の実施形態では、PCIデバイス19が動作のために必要とするレジスタやバッファなどの情報をメモリ12へ割り当てる際には、チップセット13が有する特別なPCIコンフィグレーション動作をBIOS22で制御することにより実現したが、本実施形態では、OS201と、FWである、System Abstruction Layer(以下、「SAL」と称する)というSWインタフェース、すなわち、FWによるアドレス空間変換部203を使用することによりメモリ12への割り当てを行う。
【0170】
これにより、SWのサポートのみで、本SWによるアドレス空間変換装置200を実現することが出来る。
【0171】
本SWによるアドレス空間変換装置200のBIOS22は、本装置が起動する際、および、PCIデバイス19を、拡張スロットから抜去したり、拡張スロットにPCIデバイス19を挿入したり、拡張スロットから抜去してから、PCIデバイス19を拡張スロットに挿入したりする際に、搭載している、チップセット13、PCIブリッジ17を含む全てのPCIデバイス19を認識する。
【0172】
その際に、PCIデバイス19に変更があれば、その動作に必要とするレジスタやバッファなどの情報をメモリ12に割り当てる更新を行う。
【0173】
また、その際に、FW層にある、FWによるアドレス空間変換部203を制御することによって、PCIバス規格に規定されている、チップセット13が有する特別なモードである、PCIコンフィグレーション動作を間接的に実行することにより、PCIデバイス19が動作に必要なメモリ空間をメモリ12に割り当てることができる。
【0174】
すなわち、SWの一種であるFWによるアドレス空間変換部203が、HWであるチップセット13の代わりを行う。
【0175】
ここで、上述の第2の実施形態で説明した、チップセット13を用いたHWによるアドレス空間変換部の構成要素と、本実施形態が有するFWによるアドレス空間変換部203の構成要素を対比すると、MMIOアクセスレジスタ14は、MMIOアクセスインタフェース204に、MMIOアドレスレジスタ15は、MMIOアドレスインタフェース205に、Global−Localアドレス変換テーブル16は、Global−LocalアドレスSW変換テーブル206にそれぞれ対応する。
【0176】
以降、OS201は、PCIデバイス19へのデータの読書きを行う際には、第2の実施形態で説明したように、CPU11、メモリ12、チップセット13を使ってアクセスする。また、この際に、ドライバ202を用いてPCIデバイス19を制御する。
【0177】
これにより、処理bit数の少なさに起因するアクセス空間の制約を、HWを改変することなく回避することによって、大規模な入出力データを処理する情報処理装置を構築できるという効果を奏することができる。
【0178】
さらに特有の効果として、HWの改変を伴わないで、SWの一部である、OSおよびFWに、対応するソフトウェアプログラムを読込むことによってアドレス変換を行うために、より安価に実現できるという顕著な効果も有する。
【0179】
なお、上述した各実施形態を例に説明した本発明は、第2の実施形態のアドレス変換装置のCPU11および協働する図示していないOS、ならびにチップセット13の動作説明において参照したフローチャート(図6および図7)の機能を実現可能なコンピュータ・プログラムとして供給した後、そのコンピュータ・プログラムをCPU11および協働する図示していないOSおよびFWに読出して実行することによって達成される。
【0180】
また、前記の場合において、当該装置内へのコンピュータ・プログラムの供給方法は、フロッピー(登録商標)ディスクやCD−ROM等の各種記録媒体を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。
【0181】
そして、このような場合において、本発明は、係るコンピュータ・プログラムを構成するコード、或いは係るコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
【0182】
なお、上述した実施形態及びその変形例の一部又は全部は、以下の付記のようにも記載されうる。しかしながら、上述した実施形態及びその変形例により例示的に説明した本発明は、以下には限らない。即ち、
(付記1)
制御部と、
前記制御部によって制御されるアドレス空間変換部とを備え、
前記制御部は、前記アドレス空間変換部に接続された周辺デバイスに、前記アドレス空間変換部を制御することによってアクセスするに先立って、所定の上位アドレスの範囲を、記憶領域単位を成すアドレス空間に論理的に区画し、そのアドレス空間の区画を、前記アドレス空間変換部に割り当てた後に、その割り当てたアドレス空間の範囲において前記周辺デバイスの下位アドレスを特定することを特徴とするアドレス空間変換装置。
(付記2)
前記制御部は、前記アドレス空間変換部を制御することによって、前記周辺デバイスにアクセスする際に、前記アドレス空間の区画である論理的な上位アドレスに、前記周辺デバイスの物理的なアドレスを下位に加えて成る、論理的なアドレスを元にテーブルを参照することにより、複数の前記周辺デバイスのうち、アクセス対象である周辺デバイスを特定することを特徴とする付記1に記載のアドレス空間変換装置。
(付記3)
前記テーブルは、前記論理的な上位アドレスに、前記周辺デバイスの前記物理的なアドレスを下位に加えて成る、論理的なアドレスと、前記周辺デバイスの前記物理的な下位アドレスとの間でアドレスを変換する、アドレス変換テーブルであることを特徴とする付記2に記載のアドレス空間変換装置。
(付記4)
前記制御部は、前記周辺デバイスにアクセスする際に、前記アドレス空間変換部に、前記アドレス空間の区画である論理的な上位アドレスの範囲を、セグメントとして割り当てることを特徴とする付記3に記載のアドレス空間変換装置。
(付記5)
前記制御部は、前記周辺デバイスにアクセスするために、前記アドレス空間変換部において特定するアドレスは、前記論理的な上位アドレスに、前記周辺デバイスの物理的なアドレスを下位に加えて成る、論理的なアドレスであることを特徴とする付記3もしくは4に記載のアドレス空間変換装置。
(付記6)
前記アドレス空間変換部が、前記周辺デバイスにアクセスするために特定するアドレスは、前記論理的なアドレスから変換した、前記周辺デバイスの物理的な下位アドレスであることを特徴とする付記3もしくは4に記載のアドレス空間変換装置。
(付記7)
前記アドレス空間変換テーブルは、前記セグメントに番号を付与したセグメント番号および、該セグメント番号に対応する前記論理的な上位アドレスに、前記周辺デバイスの前記物理的なアドレスを下位に加えて成る、論理的なアドレスとを紐付けるデータ構造を有することを特徴とする付記3もしくは4に記載のアドレス空間変換装置。
(付記8)
前記制御部は、前記アドレス空間変換部を制御して、前記制御部が備えるメモリのアドレス空間に、前記周辺デバイスが動作するために必要な領域をマッピングし、そのマッピングには、IOマップドIOおよびメモリマップドIOのうち、少なくともメモリマップドIOを用いることを特徴とする付記1乃至6のいずれか1項に記載のアドレス空間変換装置。
(付記9)
前記アドレス空間変換部が有する、アドレス空間変換テーブルは、書き換え可能なハードウェアもしくはソフトウェアにより構成されることを特徴とする付記2、3もしくは7のいずれか1項に記載のアドレス空間変換装置。
(付記10)
前記周辺デバイスは、PCIバスを拡張する32bitバス対応のPCIブリッジおよび、該PCIブリッジに接続する32bitバス対応のPCIバス制御チップを内蔵するPCIデバイスから成ることを特徴とする付記2に記載のアドレス空間変換装置。
(付記11)
前記制御部は、自装置が稼動中に、自装置の拡張スロットから、いずれかの前記PCIデバイスを抜去されるか、新たなPCIデバイスを挿入されるか、もしくはいずれかの前記PCIデバイスを抜去されてから新たなPCIデバイスを挿入されるのに応じて、前記アドレス空間変換部が有するアドレス空間変換テーブルの内容を更新することを特徴とする付記2、3、7、9のいずれか1項に記載のアドレス空間変換装置。
(付記12)
前記制御部と、前記アドレス空間変換部と、前記周辺デバイスとを、それぞれ多重化したアドレス空間変換装置の、前記アドレス空間変換部同士を相互に接続することで、前記アドレス空間変換テーブルおよび、故障代替管理テーブルを相互に参照することにより、故障したいずれかの系統のいずれかのPCIデバイスを、当該系統の前記アドレス空間変換テーブルから削除するとともに、当該系統の前記故障代替管理テーブルを用いて、他の系統から代替のPCIデバイスを提供させることを特徴とする付記2、3、7、9、10のいずれか1項に記載のアドレス空間変換装置。
(付記13)
制御部と、その制御部によって制御されるアドレス空間変換部とを備えたアドレス空間変換装置において、前記アドレス空間変換部に接続された周辺デバイスにアクセスするに先立って、
所定の上位アドレスの範囲を、記憶領域単位を成すアドレス空間に論理的に区画し、
そのアドレス空間の区画を、前記アドレス空間変換部に割り当て、
その割り当てたアドレス空間の範囲において前記周辺デバイスの下位アドレスを特定することを特徴とするアドレス空間変換の制御方法。
(付記14)
制御機能と、その制御機能によって制御されるアドレス空間変換機能とを備えたアドレス空間変換装置を制御するコンピュータ・プログラムであって、そのコンピュータ・プログラムにより、
前記制御機能は、前記アドレス空間変換機能によってアクセス可能に接続された周辺デバイスにアクセスするのに先立って、所定の上位アドレスの範囲を、記憶領域単位を成すアドレス空間に論理的に区画し、
そのアドレス空間の区画を、前記アドレス空間変換機能に割り当て、
その割り当てたアドレス空間の範囲において前記周辺デバイスの下位アドレスを特定する制御を実現させる
ことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【産業上の利用可能性】
【0183】
本発明は、上述した各実施形態には限定されず、例えばサーバの他、ワークステーション、パーソナルコンピュータ、ファクトリオートメーション等のPCIデバイスを搭載する各種の情報処理装置に適用可能である。
【符号の説明】
【0184】
1 制御部
2 アドレス空間変換部
3 周辺デバイス
10 アドレス空間変換装置
11 CPU
12 メモリ
13 チップセット
14 MMIOアクセスレジスタ
15 MMIOアドレスレジスタ
16 Global−Localアドレス変換テーブル
17 PCIブリッジ
18 MMIOアドレスレジスタ
19 PCIデバイス
20 MMIOアドレスレジスタ
21 MMIOレジスタ
31 Global MMIOアドレス
32 Local MMIOアドレス
33 チップセットセグメント
34 ブリッジセグメント
35 PCIデバイス
41 Global MMIOアドレス
42 セグメント番号
50 CPU11のメモリアドレス空間
51 CPU11から見た、64bitメモリアドレス空間
52 MMIO(4GB以下での旧MMIO空間)
53 セグメント1 MMIO(4GB以上での新MMIO空間)
100 二重化アドレス空間変換装置
101 CPU−A
102 CPU−B
103 チップセット−A
104 チップセット−B
105 高速ホストバス
106 PCIブリッジD
107 PCIデバイスD
108 PCIデバイスH
200 SWによるアドレス空間変換装置
201 OS
202 ドライバ
203 FWによるアドレス空間変換部
204 MMIOアクセスインタフェース
205 MMIOアドレスインタフェース
206 Global−LocalアドレスSW変換テーブル

【特許請求の範囲】
【請求項1】
制御部と、
前記制御部によって制御されるアドレス空間変換部とを備え、
前記制御部は、前記アドレス空間変換部に接続された周辺デバイスに、前記アドレス空間変換部を制御することによってアクセスするに先立って、所定の上位アドレスの範囲を、記憶領域単位を成すアドレス空間に論理的に区画し、そのアドレス空間の区画を、前記アドレス空間変換部に割り当てた後に、その割り当てたアドレス空間の範囲において前記周辺デバイスの下位アドレスを特定することを特徴とするアドレス空間変換装置。
【請求項2】
前記制御部は、前記アドレス空間変換部を制御することによって、前記周辺デバイスにアクセスする際に、前記アドレス空間の区画である論理的な上位アドレスに、前記周辺デバイスの物理的なアドレスを下位に加えて成る、論理的なアドレスを元にテーブルを参照することにより、複数の前記周辺デバイスのうち、アクセス対象である周辺デバイスを特定することを特徴とする請求項1に記載のアドレス空間変換装置。
【請求項3】
前記テーブルは、前記論理的な上位アドレスに、前記周辺デバイスの前記物理的なアドレスを下位に加えて成る、論理的なアドレスと、前記周辺デバイスの前記物理的な下位アドレスとの間でアドレスを変換する、アドレス変換テーブルであることを特徴とする請求項2に記載のアドレス空間変換装置。
【請求項4】
前記制御部は、前記周辺デバイスにアクセスする際に、前記アドレス空間変換部に、前記アドレス空間の区画である論理的な上位アドレスの範囲を、セグメントとして割り当てることを特徴とする請求項3に記載のアドレス空間変換装置。
【請求項5】
前記アドレス空間変換テーブルは、前記セグメントに番号を付与したセグメント番号および、該セグメント番号に対応する前記論理的な上位アドレスに、前記周辺デバイスの前記物理的なアドレスを下位に加えて成る、論理的なアドレスとを紐付けるデータ構造を有することを特徴とする請求項3もしくは4に記載のアドレス空間変換装置。
【請求項6】
前記アドレス空間変換部が有する、アドレス空間変換テーブルは、書き換え可能なハードウェアもしくはソフトウェアにより構成されることを特徴とする請求項2、3もしくは5のいずれか1項に記載のアドレス空間変換装置。
【請求項7】
前記制御部は、自装置が稼動中に、自装置の拡張スロットから、いずれかの前記PCIデバイスを抜去されるか、新たなPCIデバイスを挿入されるか、もしくはいずれかの前記PCIデバイスを抜去されてから新たなPCIデバイスを挿入されるのに応じて、前記アドレス空間変換部が有するアドレス空間変換テーブルの内容を更新することを特徴とする請求項2、3、5、6のいずれか1項に記載のアドレス空間変換装置。
【請求項8】
前記制御部と、前記アドレス空間変換部と、前記周辺デバイスとを、それぞれ多重化したアドレス空間変換装置の、前記アドレス空間変換部同士を相互に接続することで、前記アドレス空間変換テーブルおよび、故障代替管理テーブルを相互に参照することにより、故障したいずれかの系統のいずれかのPCIデバイスを、当該系統の前記アドレス空間変換テーブルから削除するとともに、当該系統の前記故障代替管理テーブルを用いて、他の系統から代替のPCIデバイスを提供させることを特徴とする請求項2、3、5、6のいずれか1項に記載のアドレス空間変換装置。
【請求項9】
制御部と、その制御部によって制御されるアドレス空間変換部とを備えたアドレス空間変換装置において、前記アドレス空間変換部に接続された周辺デバイスにアクセスするに先立って、
所定の上位アドレスの範囲を、記憶領域単位を成すアドレス空間に論理的に区画し、
そのアドレス空間の区画を、前記アドレス空間変換部に割り当て、
その割り当てたアドレス空間の範囲において前記周辺デバイスの下位アドレスを特定することを特徴とするアドレス空間変換の制御方法。
【請求項10】
制御機能と、その制御機能によって制御されるアドレス空間変換機能とを備えたアドレス空間変換装置を制御するコンピュータ・プログラムであって、そのコンピュータ・プログラムにより、
前記制御機能は、前記アドレス空間変換機能によってアクセス可能に接続された周辺デバイスにアクセスするのに先立って、所定の上位アドレスの範囲を、記憶領域単位を成すアドレス空間に論理的に区画し、
そのアドレス空間の区画を、前記アドレス空間変換機能に割り当て、
その割り当てたアドレス空間の範囲において前記周辺デバイスの下位アドレスを特定する制御を、
コンピュータに実現させることを特徴とするコンピュータ・プログラム。

【図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


【公開番号】特開2013−114650(P2013−114650A)
【公開日】平成25年6月10日(2013.6.10)
【国際特許分類】
【出願番号】特願2011−263394(P2011−263394)
【出願日】平成23年12月1日(2011.12.1)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】