(57)【要約】【課題】バス競合によるパフォーマンスの低下を抑止する。【解決手段】情報処理装置は、複数のメモリと、前記複数のメモリとそれぞれ接続する複数のバスと、を備え、入出力装置が使用するメモリ領域の論理アドレスと物理アドレスのマッピングを変更し、前記入出力装置からのアクセスを前記マッピングに基づいて前記複数のバスのいずれかに転送する。【選択図】図１
2015219810.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリと、
前記複数のメモリとそれぞれ接続する複数のバスと、
前記複数のメモリにアクセスする入出力装置と、
前記入出力装置が使用するメモリ領域の論理アドレスと物理アドレスのマッピングを変更する処理部と、
前記入出力装置からのアクセスを前記マッピングに基づいて前記複数のバスのいずれかに転送するスイッチと、
を備える情報処理装置。
【請求項２】
前記処理部は、
前記入出力装置のアクセスに関する情報を収集し、
前記収集した情報に基づいて前記マッピングを変更する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記処理部は、前記入出力装置の前記複数のバスの占有率、前記占有率の変動、および前記入出力装置の平均転送速度に基づき、前記マッピングを変更することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記処理部は、前記入出力装置が使用するメモリ領域と他の入出力装置が使用する他のメモリ領域とをそれぞれ前記複数のメモリのうちの異なるメモリに割り当てるように前記マッピングを変更することを特徴とする請求項１記載の情報処理装置。
【請求項５】
複数のメモリと、前記複数のメモリとそれぞれ接続する複数のバスと、前記複数のメモリにアクセスする入出力装置と、を備える情報処理装置が実行するバス制御方法であって、
前記入出力装置が使用するメモリ領域の論理アドレスと物理アドレスのマッピングを変更し、
前記入出力装置からのアクセスを前記マッピングに基づいて前記複数のバスのいずれかに転送する、
処理を備えるバス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびバス制御方法に関する。
【背景技術】
【０００２】
システムパフォーマンスの最適化は、実際のシステムの運用前に実際のシステムの運用状態に近い状態でアプリケーションを動作させ、パフォーマンスモニターや、ベンチマークソフトにより、バッファ領域や、特定トランザクションのアプリケーション側の抑制等によりパラメータを個々に変更する事で、システムパフォーマンスや、リアルタイム性能のチューニングを実施していた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２０７３４８号公報
【特許文献２】特開平９−７３４３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
実際のシステムでは、ハード構成（メモリや、CPU種別、搭載I/O等の構成等）や搭載アプリケーションや、運用形態（設置環境、稼働時間の集中化、リアルタイム性要求等）の変更により、各種バス/インタフェースのトランザクション、送受信比率の違いが発生し、バス占有率が変わる。
【０００５】
特にメモリバスにおいては、CPU及び搭載I/O装置が全てメモリ空間を使用するため、バスの使用競合が多く発生した場合、全体のパフォーマンスが低下するという問題がある。
【０００６】
このため、システムパフォーマンスを常に最適化するためには、変更の度に、実際のシステム運用形態を考慮した実機確認によるパフォーマンスモニターや、ベンチマークソフトによるシステムパフォーマンスの計測による、メモリキャッシュサイズやCPU処理速度に余裕のあるCPUへの変更や、搭載I/Oの処理能力に余裕のあるI/Oへの変更、メモリ上に配置したバッファ領域の変更や、メモリバス使用効率を目的とした特定トランザクションの抑制等によるチューニングを実施する必要がある。
【０００７】
個々のチューニング設定値や最適のハード構成を決定するのに非常に多くの工数を使用している。更に、その都度実機運用状況により、各ハードウェアの変更や、バッファ領域や、特定トランザクションの抑制等の設定値を変更する事が容易でないため、一度設定した情報を使い続け、徐々に想定環境からかけ離れ、パフォーマンスが劣化していくという問題も発生している。また、実際のシステムで性能測定に使用するパフォーマンスモニターや、ベンチマークソフト自身のアプリケーション動作による性能影響が発生し、真のパフォーマンスの測定が困難な状況となっている。
【０００８】
本発明の課題は、バス競合によるパフォーマンスの低下を抑止することである。
【課題を解決するための手段】
【０００９】
実施の形態の情報処理装置は、複数のメモリと、複数のバスと、入出力装置と、処理部と、スイッチと、を備える。
【００１０】
前記複数のバスは、前記複数のメモリとそれぞれ接続する。
前記入出力装置は、前記複数のメモリにアクセスする。
【００１１】
前記処理部は、前記入出力装置が使用するメモリ領域の論理アドレスと物理アドレスのマッピングを変更する。
【００１２】
前記スイッチは、前記入出力装置からのアクセスを前記マッピングに基づいて前記複数のバスのいずれかに転送する。
【発明の効果】
【００１３】
実施の形態の情報処理装置によれば、バス競合によるパフォーマンスの低下を抑止することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態に係る情報処理装置の構成図である。
【図２Ａ】メモリ最適化時のメモリ空間テーブルの第１の例である。
【図２Ｂ】メモリ最適化時のメモリ空間の第１の例である。
【図３Ａ】メモリ最適化時のメモリ空間テーブルの第２の例である。
【図３Ｂ】メモリ最適化時のメモリ空間の第２の例である。
【図４Ａ】メモリ最適化時のメモリ空間テーブルの第３の例である。
【図４Ｂ】メモリ最適化時のメモリ空間の第３の例である。
【図５】ルートテーブルの例である。
【図６】実施の形態に係るアドレス変換部、ＭＰＸ部、およびＰＣＩｅコントローラ郡の詳細な構成図である。
【図７】アドレス変換部のＡＮＤ回路の真理値表である。
【図８】アドレス変換部のデコーダの真理値表である。
【図９】ＭＰＸ部の真理値表である。
【図１０】実施の形態に係るＭＡＣの詳細な構成図である。
【図１１】セレクタの真理値表である。
【図１２】実施の形態に係るアクセス監視部の構成図である。
【図１３Ａ】設定情報の例である。
【図１３Ｂ】設定情報の例である。
【図１４】ＰＣＩｅ−ＢＵＳアクセストレース部の処理を示す図である。
【図１５】ＨＯＳＴ−ＢＵＳアクセストレース／ＤＭＡ制御部の処理を示す図である。
【図１６】アドレス変換制御部の構成を示す図である。
【図１７】比較器の真理値表である。
【図１８】エンコーダの真理値表である。
【図１９】バスアービトレーション制御を示す図である。
【図２０Ａ】実施の形態に係るバス制御方法のフローチャートである。
【図２０Ｂ】実施の形態に係るバス制御方法のフローチャートである。
【図２０Ｃ】実施の形態に係るバス制御方法のフローチャートである。
【図２０Ｄ】実施の形態に係るバス制御方法のフローチャートである。
【図２０Ｅ】実施の形態に係るバス制御方法のフローチャートである。
【図２０Ｆ】実施の形態に係るバス制御方法のフローチャートである。
【図２１】従来のメモリバスの使用状況および実施の形態の最適後のメモリバスの使用状況を示す図である。
【発明を実施するための形態】
【００１５】
実施の形態の情報処理装置は、実際のシステムのハード構成（メモリや、CPU種別、搭載I/O装置等の構成等）や、搭載アプリケーション、運用形態（設置環境、稼働時間の集中化、リアルタイム性要求等）による各インタフェースのトランザクション、バス占有率を実機検証無しで把握し、バッファ領域変更、特定トランザクションの抑制等の設定値の変更なしにI/O装置が占有するメモリバスの効率化を自動的に実施してシステムパフォーマンスを向上する。また、実施の形態の情報処理装置は、ハード構成のみでなく、I/O装置を使用するアプリケーションの追加や変更、オンラインデータベース等のユーザ数の増減によるトランザクション変動、使用環境が異なった場合等にも、パフォーマンスが最適となる様にソフトウェアから影響しない様に物理的なメモリのマッピングを再構築し、最適なバスルートを自動で確保する。
【００１６】
以下、図面を参照しながら実施の形態について説明する。
図１は、実施の形態に係る情報処理装置の構成図である。
【００１７】
情報処理装置１０１は、Central Processing Unit（ＣＰＵ）１１１、メモリ（ＭＥＭ）１２１−Ｎ（Ｎ＝１〜４）、Memory Access Controller（ＭＡＣ）１３１、アドレス変換部１４１、マルチプレクサ（ＭＰＸ）部１５１、アクセス監視部１６１、Peripheral Component Interconnect Express（ＰＣＩｅ）コントローラ１７１、ＰＣＩｅコントローラ群１８１、ＰＣＩｅバススイッチ１９１、Redundant Arrays of Inexpensive Disks（ＲＡＩＤ）カード２１１、Local Area Network（ＬＡＮ）カード２２１、Universal Serial Bus（ＵＳＢ）カード２３１、グラフィック（表示）カード２４１、Motherboard（Ｍ／Ｂ）  Input/Output（Ｉ／Ｏ）制御部２５１、Hard Disk Drive（ＨＤＤ）２１２−１，２１２−２、テープ装置２３２、ディスプレイ装置２４２、入力装置２５２、タイマ２５３、ＲＯＭ２５４、およびNon-Volatile Memory（ＮＶＭ）２５５を備える。
【００１８】
ＣＰＵ１１１、ＭＡＣ１３１、アドレス変換部１４１、ＭＰＸ部１５１、およびＰＣＩｅ）コントローラ１７１は、ホストバスを介して接続している。
情報処理装置１０１は、例えば、サーバやパーソナルコンピュータ（ＰＣ）等である。
【００１９】
ＣＰＵ１１１は、各種処理行い、メモリ１２１にアクセスする。ＣＰＵ１１１は、電源投入時、又はリセット時にPCIeバスに接続されている全てのPCIeデバイスと、アクセス空間をシステムBIOSの実行によりコンフィグレーションレジスタをスキャンし、必要な空間を認識し、アドレス領域を割り当てる。この時、ＰＣＩｅバススイッチ１９１配下のPCIeデバイスへのアクセスには、複数のアクセスパスが存在するため、アクセスするルートパスをＰＣＩｅバススイッチ１９１の内部にルートテーブルを登録する。ＣＰＵ１１１は、メモリ１２１−Ｎへアクセスする場合、アクセス先の（論理）アドレスを示すホストバスアドレスA00-A33をＭＡＣ１３１およびアドレス変換部１４１にホストバスを介して出力する。また、ＣＰＵ１１１は、書き込みデータであるホストバスデータD00-D63をホストバスを介してＭＰＸ部１５１に出力する。
【００２０】
メモリ１２１−Ｎは、データを格納する記憶装置である。メモリ１２１−Ｎは、例えば、Random Access Memory（ＲＡＭ）である。尚、以下の説明または図面において、メモリ１２１−Ｎはメモリ＃Ｎと表記する場合がある。実施の形態において、メモリ１２１−Ｎの容量はそれぞれ４ＧＢとする。各メモリ１２１−Ｎ内のアドレスは３２ビットのデータA31-A00で表すことができ、A31-A00とメモリ１２１−Ｎを識別する２ビットのデータA33,A32と組み合わせることで、メモリ１２１−Ｎのアドレスを一意に表すことができる。
【００２１】
ＭＡＣ１３１は、メモリ１２１−Ｎに対するアクセスを制御する。ＭＡＣの詳細については後述する。
【００２２】
アドレス変換部１４１は、制御信号A33_ctl_AM、A32_ctl_AM、メモリミラー信号Mirror_AM、およびホストバスアドレスに基づいて、選択信号（Sel#N）を出力する。
【００２３】
ＭＰＸ部１５１は、ホストバスからのアクセスとＰＣＩｅコントローラ群１８１からのアクセスのいずれかを選択して、メモリ１２１−Ｎに出力する。
【００２４】
アクセス監視部１６１は、CPU１１１とメモリ１２１−Ｎ間、およびPCIeデバイス（ＰＣＩｅコントローラ１７１、ＲＡＩＤカード２１１、ＬＡＮカード２２１、ＵＳＢカード２３１、およびグラフィックカード２４１、およびM/B I/O制御部２５１、ＰＣＩｅコントローラ群１８１内のＰＣＩｅコントローラ）とメモリ１２１−Ｎ間のアクセスを監視し、アクセスに関する情報を収集する。アクセス監視部１６１は、収集した情報から統計情報を算出する。アクセス監視部１６１は、メモリのマッピングの変更し、マッピングの変更に基づいて、アドレス変換部１４１、ＭＰＸ部１５１、およびＭＡＣ１３１の制御を行う。アクセス監視部１６１は、ＰＣＩｅバススイッチ１９１内のルートテーブルの設定を行う。
【００２５】
アクセス監視部１６１は、占有要求信号H_DREQ、停止信号H_HALTをＣＰＵ１１１に送信する。アクセス監視部１６１は、アドレス変換部１４１に、制御信号A33_ctl_AM、A32_ctl_AM、メモリミラー信号Mirror_AMを送信する。
【００２６】
アクセス監視部１６１は、ＣＰＵ１１１から、読み出しまたは書き込みを行うメモリアドレスAddress、メモリ１２１−Ｎを制御するコマンドCMD、占有許可信号H_DACKを受信する。尚、アクセス監視部１６１の詳細については、後述する。尚、以下の説明または図面において、アクセス監視部１６１は、ＰＣＩｅ＃６と表記する場合がある。
【００２７】
ＰＣＩｅコントローラ１７１は、PCIeデバイスとメモリ１２１−Ｎ間のデータ転送の制御を行う。ＰＣＩｅコントローラ１７１は、Root Complexである。尚、以下の説明または図面において、ＰＣＩｅコントローラ１７１は、ＰＣＩｅ＃０と表記する場合がある。
【００２８】
ＰＣＩｅコントローラ群１８１は、４つのＰＣＩｅコントローラを含む。４つのＰＣＩｅコントローラは、それぞれ独立したメモリバスを介してメモリ１２１−Ｎと接続し、接続したメモリ１２１−Ｎに対するアクセスを行う。ＰＣＩｅコントローラは、アクセス監視部１６１にメモリアクセス要求REQ#Mを送信し、アクセス監視部１６１からアクセス許可信号ACK#Mを受信する。尚、ＰＣＩｅコントローラ群１８１の詳細については後述する。
【００２９】
ＰＣＩｅバススイッチ１９１は、複数のＰＣＩｅデバイスと接続するスイッチである。ＰＣＩｅバススイッチ１９１は、例えば、回路により実現される。ＰＣＩｅバススイッチ１９１は、ＲＡＩＤカード２１１、ＬＡＮカード２２１、ＵＳＢカード２３１、グラフィックカード２４１、およびＭ／Ｂ  Ｉ／Ｏ制御部２５１と接続する。ＲＡＩＤカード２１１、ＬＡＮカード２２１、ＵＳＢカード２３１、グラフィックカード２４１、およびＭ／Ｂ  Ｉ／Ｏ制御部２５１は、入出力（I/O）装置の一例である。ＲＡＩＤカード２１１、ＬＡＮカード２２１、ＵＳＢカード２３１、およびグラフィックカード２４１は、PCIeデバイスである。また、ＰＣＩｅバススイッチ１９１は、アクセス監視部１６１、ＰＣＩｅコントローラ１７１と接続する。また、ＰＣＩｅバススイッチ１９１は、ＰＣＩｅコントローラ群１８１の４つのＰＣＩｅコントローラとそれぞれ独立した４本のバスで接続する。
【００３０】
ＰＣＩｅバススイッチ１９１は、ルートテーブルを格納し、ルートテーブルに基づいて、ＰＣＩｅデバイスからメモリ１２１−Ｎへアクセスのルーティングを行う。
【００３１】
ＲＡＩＤカード２１１は、複数の記憶装置を用いて、ストライピングやミラーリング等のＲＡＩＤ処理を行う。ＲＡＩＤカード２１１は、ＨＤＤ２１２−１、２１２−２と接続する。ＲＡＩＤカード２１１は、ＨＤＤ２１２−１、２１２−２を用いて、ストライピングやミラーリング等のＲＡＩＤ処理を行う。尚、以下の説明または図面において、ＲＡＩＤカード２１１は、ＰＣＩｅ＃１と表記する場合がある。
【００３２】
ＨＤＤ２１２は、データを格納する記憶装置である。
ＬＡＮカード２２１は、ネットワークと接続して通信を行うインターフェースカードである。ＬＡＮカード２２１は、ＬＡＮ等のネットワークと接続する。尚、以下の説明または図面において、ＬＡＮカード２２１は、ＰＣＩｅ＃２と表記する場合がある。
【００３３】
ＵＳＢカード２３１は、ＵＳＢを用いて周辺機器と接続するインターフェースカードである。ＵＳＢカード２３１は、テープ装置２３２と接続する。尚、以下の説明または図面において、ＵＳＢカード２３１は、ＰＣＩｅ＃３と表記する場合がある。
【００３４】
テープ装置２３２は、データを格納する記憶装置である。
グラフィックカード２４１は、ディスプレイ装置２４２と接続し、ディスプレイ装置２４２に映像信号を出力する。尚、以下の説明または図面において、グラフィックカード２４１は、ＰＣＩｅ＃４と表記する場合がある。
【００３５】
ディスプレイ装置２４２は、グラフィックカード２４１から入力される映像信号を表示する装置である。
【００３６】
Ｍ／Ｂ  Ｉ／Ｏ制御部２５１は、Ｍ／Ｂ  Ｉ／Ｏ制御部２５１と接続する装置の制御を行う。尚、以下の説明または図面において、Ｍ／Ｂ  Ｉ／Ｏ制御部２５１は、ＰＣＩｅ＃５と表記する場合がある。
【００３７】
Ｍ／Ｂ  Ｉ／Ｏ制御部２５１は、入力装置２５２、タイマ２５３、ＲＯＭ２５４、およびＮＶＭ２５５と接続する。
【００３８】
入力装置２５２は、情報処理装置１０１への入力を行う装置である。入力装置２５２は、例えば、マウスやキーボード等である。
【００３９】
タイマ２５３は、時間をカウントする。
ＲＯＭ２５４は、データを格納する記憶装置である。尚、以下の説明または図面において、ＲＯＭ２５４はＲＯＭ＃１と表記する場合がある。
【００４０】
ＮＶＭ２５５は、データを格納する不揮発性の記憶装置である。尚、以下の説明または図面において、ＮＶＭ２５５はＮＶＭ＃１と表記する場合がある。
【００４１】
情報処理装置１０１において、パフォーマンスの最適化は、CPUとメモリ間のアクセス、各I/Oデバイスからのメモリへのデータ転送の競合を少なくすることが重要になる。このため、実施の形態の情報処理装置１０１は、データ転送時にバスアクセス競合が発生する各I/Oデバイスからのメモリ領域への独立バスによるダイレクトアクセスパスを用意し、実際にCPUが使用するメモリアドレス領域から、CPU/メモリ間、各I/Oデバイス/メモリ間の同時アクセスが可能な領域となる様に、アクセス監視部１６１が、MPX部１５１を通してCPU１１１のメモリアクセス空間から物理アドレスメモリ空間へのマッピングを変更し、独立したI/Oデバイス/メモリ間のアクセスルートを使用し、CPU、I/Oデバイスがホストバスを占有中でも、各I/Oデバイスがメモリへのアクセスを同時に可能としてバスのアクセス競合によるパファーマンスの低下を抑止する。
【００４２】
次に各I/O装置のメモリ空間の割り当ての最適化を行ったときにメモリ空間の配置について複数の例を述べる。
【００４３】
図２Ａは、メモリ最適化時のメモリ空間テーブルの第１の例である。
ＣＰＵが使用するメモリ空間をメモリ空間Ａ、表示カードが使用するメモリ空間をメモリ空間Ａ、ＲＡＩＤカードが使用するメモリ空間をメモリ空間Ｃ、ＬＡＮカードが使用するメモリ空間をメモリ空間Ｄとする。
【００４４】
図２Ａのメモリ空間テーブルには、使用用途、論理空間、および物理空間が対応付けられて記載されている。
【００４５】
使用用途は、メモリ空間の使用用途が記載される。すなわち、どの装置が使用するメモリ空間であるかを示す。
【００４６】
論理空間は、メモリ空間の論理アドレスの範囲を示す。
物理空間は、メモリ空間の物理アドレスの範囲を示す。
【００４７】
初期状態においては、論理アドレスに対して同一の値の物理アドレスが割り当てられているとする。すなわち、初期状態においては、メモリ空間ＡおよびＢは、メモリ#1の空間に割り当てられ、メモリ空間ＣおよびＤは、メモリ#2の空間に割り当てられている。
【００４８】
図２Ａ、Ｂにおいては、同一のメモリ１２１−Ｎの空間に複数のメモリ空間が割り当てられないように、メモリ空間の割り当てを変更する。変更したメモリ空間の割り当てを表すと、図２Ａに示されるような、メモリ空間テーブルとなる。
【００４９】
メモリ空間Ａの論理アドレスは、0-0ExxxFFFFFである。
メモリ空間Ａの物理アドレスは、0-0ExxxFFFFFである。
【００５０】
メモリ空間Ｂの論理アドレスは、0Fxxx00000-0FxxxFFFFFである。
メモリ空間Ｂの物理アドレスは、2Fxxx00000-2FxxxFFFFFである。
【００５１】
メモリ空間Ｃの論理アドレスは、10xxx00000-10xxx3FFFFである。
メモリ空間Ｃの物理アドレスは、10xxx00000-10xxx3FFFFである。
【００５２】
メモリ空間Ｄの論理アドレスは、10xxx40000-10xxx7FFFFである。
メモリ空間Ｄの物理アドレスは、30xxx40000-30xxx7FFFFである。
【００５３】
図２Ｂは、メモリ最適化時のメモリ空間の第１の例である。
図２Ａのメモリ空間テーブルに基づいてメモリ空間を表すと図２Ｂのようになる。
【００５４】
図２Ｂに示すように、メモリ空間Ｂは、メモリ#3にマッピングされ、メモリ空間Ｄは、メモリ#4にマッピングされている。すなわち、メモリ空間Ｂの物理アドレスは、0Fxxx00000-0FxxxFFFFFから2Fxxx00000-2FxxxFFFFFに変更される。
【００５５】
これにより、メモリ空間Ａ、Ｂ、Ｃ、Ｄは、それぞれ異なるメモリ１２１−Ｎに配置される。また、アサインされた（割り当てが変更された）領域は、アサイン元とアサイン先のそれぞれが互い違い（テレコ）領域となる。
【００５６】
次にメモリミラーを用いた状態からメモリミラーを停止してメモリ最適化を行った場合のメモリマッピングを示す。
【００５７】
情報処理装置１０１は、メモリミラーの機能を有する。メモリミラーは、複数のメモリに同一の論理アドレスを割り当て、複数のメモリに同一のデータを書き込む機能である。
【００５８】
実施の形態の情報処理装置において、メモリミラー時には、メモリ#1と#3、メモリ#2と＃4は、同一のアドレスマッピングとなり、メモリ#1と#3、メモリ#2と＃4には同一のデータが書き込まれる。メモリミラー時には、メモリ#3の空間の論理アドレスの範囲は、メモリ#1と同じ0〜0XXFFFFFであり、メモリ#4の空間の論理アドレスの範囲は、メモリ#2と同じ1XX00000〜1XXFFFFFである。メモリミラー無効時には、メモリ#3の空間の論理アドレスの範囲は、2XX00000〜2XXFFFFFであり、メモリ#4の空間の論理アドレスの範囲は、3XX00000〜3XXFFFFFである。
【００５９】
図３Ａは、メモリ最適化時のメモリ空間テーブルの第２の例である。
図３Ａのメモリ最適化時のメモリ空間テーブルは、図２Ａのメモリ空間テーブルと同じため、説明は省略する。
【００６０】
図３Ｂは、メモリ最適化時のメモリ空間の第２の例である。
ここでは、メモリミラーを用いた状態からメモリミラーを停止してマッピングの変更を行う。
【００６１】
図３Ａ、Ｂにおいては、同一のメモリ１２１−Ｎの空間に複数のメモリ空間が割り当てられないように、メモリ空間の割り当てを変更する。また、割り当てを変更するメモリ空間に対して、メモリミラー時に同一のデータを書き込んでいた２つの領域の一方を割り当てるようにする。変更したメモリの割り当てを表すと、図３Ｂに示されるような、メモリ空間テーブルとなる。
【００６２】
図３Ａのメモリ空間テーブルに基づいてメモリ空間を表すと図３Ｂのようになる。
メモリ空間Ｂは、メモリミラー時には、メモリ#1と#3に同一のデータを書き込んでいた。メモリ空間Ｂの割り当ての変更において、メモリミラー時にメモリ空間Ｂのデータを書き込んでいたメモリ#3の領域を、メモリ空間Ｂに割り当てる。同様に、メモリ空間Ｄは、メモリ#4にマッピングされている。
これにより、メモリ空間Ａ、Ｂ、Ｃ、Ｄは、それぞれ異なるメモリに配置される。
【００６３】
次に、統計情報に基づいたメモリ最適化を行った場合のメモリマッピングを示す。
図４Ａは、メモリ最適化時のメモリ空間テーブルの第３の例である。
ＣＰＵが使用するメモリ空間をメモリ空間Ａ、表示カードが使用するメモリ空間をメモリ空間Ａ、ＲＡＩＤカードが使用するメモリ空間をメモリ空間Ｃ、ＬＡＮカードが使用するメモリ空間をメモリ空間Ｄ、ＵＳＢカードが使用するメモリ空間をＥとする。
【００６４】
図４Ａのメモリ空間テーブルには、使用用途、論理空間、物理空間、および統計情報が対応付けられて記載されている。
【００６５】
使用用途は、メモリ空間の使用用途が記載される。すなわち、どの装置が使用するメモリ空間であるかを示す。
【００６６】
論理空間は、メモリ空間の論理アドレスの範囲を示す。
物理空間は、メモリ空間の物理アドレスの範囲を示す。
統計情報は、メモリ空間を使用する装置のメモリへのアクセスに関する統計情報である。
【００６７】
初期状態においては、論理アドレスに対して同一の値の物理アドレスが割り当てられているとする。すなわち、初期状態においては、メモリ空間ＡおよびＢは、メモリ#1の空間に割り当てられ、メモリ空間Ｃ、Ｄ、およびＥは、メモリ#2の空間に割り当てられている。
【００６８】
図４Ａ、Ｂにおいては、統計情報に用いて、メモリ空間の割り当てを変更する。すると、変更したメモリ空間の割り当てを表すと、図４Ａに示されるような、メモリ空間テーブルとなる。
【００６９】
メモリ空間Ａの論理アドレスは、0-0ExxxFFFFFである。
メモリ空間Ａの物理アドレスは、0-0ExxxFFFFFである。
【００７０】
メモリ空間Ｂの論理アドレスは、0Fxxx00000-0FxxxFFFFFである。
メモリ空間Ｂの物理アドレスは、2Fxxx00000-2FxxxFFFFFである。
【００７１】
メモリ空間Ｃの論理アドレスは、10xxx00000-10xxx3FFFFである。
メモリ空間Ｃの物理アドレスは、10xxx00000-10xxx3FFFFである。
【００７２】
メモリ空間Ｄの論理アドレスは、10xxx40000-10xxx7FFFFである。
メモリ空間Ｄの物理アドレスは、30xxx40000-30xxx7FFFFである。
【００７３】
メモリ空間Ｅの論理アドレスは、10xxx80000-10xxxDFFFFである。
メモリ空間Ｅの物理アドレスは、10xxx80000-10xxxDFFFFである。
【００７４】
ここで、統計情報の基づいた論理空間と物理空間のマッピング（メモリの割り当て）の算出方法について説明する。
【００７５】
ここでは、図４Ａに示す統計情報に基づいてマッピングを算出する。
ＣＰＵ１１１はアクセス頻度＝４０、平均占有率＝２０％、平均転送速度＝３Ｇである。グラフィック（表示）カード２４１は、アクセス頻度＝３０、平均占有率＝２０％、平均転送速度＝１Ｇである。ＲＡＩＤカード２１１は、アクセス頻度＝３０、平均占有率＝２０％、平均転送速度＝０．５Ｇである。ＬＡＮカード２２１は、アクセス頻度＝３０、平均占有率＝３０％、平均転送速度＝２Ｇである。ＵＳＢカード２３１は、アクセス頻度＝１０、平均占有率＝１０％、平均転送速度＝０．３Ｇである。
【００７６】
平均占有率は、メモリ空間を使用する装置がバスを使用している時間の割合である。
アクセス頻度は、アクセスのバラツキの指標として、単位時間当たりの占有率の変動を表す。アクセス頻度＝一秒当たりの占有率の変動率（100*(最大占有率-最低占有率)）/最大占有率の時間当たりの平均とする。
【００７７】
平均転送速度は、メモリ空間を使用する装置のデータの転送速度の平均である。
マッピングの算出の手順は以下の通りである。
【００７８】
１）平均バス占有率の高い順にPCIeカード（表示カード、ＲＡＩＤカード、ＬＡＮカード、ＵＳＢカード）を並べる。尚、CPUについては、以下の処理で常に最後に置く。
図４Ａに示す統計情報の場合、平均バス占有率の高い順に並べると、LANカード(30%),RAIDカード(20%),表示カード (20%),USBカード (10%),CPU(20%)となる。
【００７９】
２） 平均バス占有率にアクセス頻度を乗算し、算出された値の高い順にPCIeカードを並べかえる。
平均バス占有率にアクセス頻度を乗算して高い順にPCIeカードを並べかえると、LANカード=9 (=30%*30), RAIDカード=6(=20%*30), 表示カード=6(=20%*30), USBカード=1(=10%*10)、 CPU=8(=20%*40)となる。
【００８０】
３）更に2)で算出した値に平均転送速度を掛け、算出された値の高い順に並べかえる。
2)で算出した値に平均転送速度を掛け、算出された値の高い順にPCIeカードを並べかえると、LANカード=18(=9*2), 表示カード=6(=6*1), RAIDカード=3(=6*0.5), USBカード=0.3(=1*0.3), CPU=24(=8*3)となる。
【００８１】
４）上記結果により、同じメモリ１２１−Ｎにマッピングが必要な場合、CPUを除く同じメモリ１２１−Ｎの空間に配置する各カードの上記3）で算出された値の合計が一番少なくなる組合わせとなるように、CPUアクセス論理空間と物理空間のマッピングを算出する。また、同じメモリ１２１−Ｎには、ＣＰＵ１１１のメモリ空間とPCIeカードのメモリ空間がマッピングされないようにする。
【００８２】
それにより、RAIDカードのメモリ空間ＣとUSBカードのメモリ空間Ｅが組み合わせられる。ＣＰＵと同じメモリ空間に割り当てられていたメモリ空間Ｂは、メモリ#3にマッピングされる。
【００８３】
図４Ｂは、メモリ最適化時のメモリ空間の第３の例である。
図４Ａのメモリ空間テーブルに基づいてメモリ空間を表すと図４Ｂのようになる。
【００８４】
図４Ｂに示すように、メモリ空間Ｂは、メモリ#3にマッピングされ、メモリ空間Ｄは、メモリ#4にマッピングされている。メモリ空間Ａ、Ｃ、Ｅのマッピングは変更されずにそれぞれメモリ#1,#2,#3にマッピングされている。
【００８５】
図５は、ルートテーブルの例である。
ルートテーブル１９２は、ＰＣＩｅバススイッチ１９１に格納される。ルートテーブル１９２は、メモリの割り当て（マッピング）の情報とアクセス経路の情報が記載される。
【００８６】
ルートテーブル１９２は、項目として、Destination、Source、Device path、Turn list、およびConditionを有し、これらが対応付けられて記載されている。
【００８７】
Destinationは、アクセス先（送信先）の装置を示す。
Sourceは、アクセス元（送信元）の装置を示す。
Device pathは、経由するデバイスを示す。
【００８８】
Turn listは、PCIeバススイッチのポート毎への重みづけを示す。Device path間のTurn listの値が小さいほどルートの優先順位は高くなる。
【００８９】
Conditionは、経路の適用条件を示す。Conditionとして、例えば、メモリ最適化により割り当てられたＣＰＵアクセス論理メモリ空間の領域の開始アドレスと終了アドレスが記載される。
【００９０】
図５のルートテーブル１９２は、SourceとしてPCIe#Ｌ(Ｌ=１〜５)としたときのルートテーブルである。
【００９１】
例えば、図２Ａ、Ｂに示すようなマッピングが設定されている場合、ルートテーブル１９２において、Destination がメモリ#3、SourceがPCIe#4（表示カード２４１)のレコードのConditionには、メモリ#3に割り当てられたメモリ空間ＢのＣＰＵアクセス論理メモリ空間の開始アドレス（0Fxxx00000）と終了アドレス（0FxxxFFFFF）が記載される。
【００９２】
ＰＣＩｅバススイッチ１９１は、ルートテーブル１９２とEndpointから送られてくるパケットのヘッダー部分の宛先（アドレス）に基づいて、PCIeコントローラ１７１（Root Complex）の指示を受けることなくパケットの転送先を決定してパケットを転送する。
【００９３】
例えば、ＰＣＩｅバススイッチ１９１は、PCIe#4（表示カード２４１)から受信したパケットのヘッダー部分に記載の宛先がConditionに記載された開始アドレス（0Fxxx00000）と終了アドレス（0FxxxFFFFF）の範囲に含まれていれば、Destination がメモリ#3であるので、メモリ#3に対するPCIeコントローラ#Cにパケットを転送する。
【００９４】
図６は、実施の形態に係るアドレス変換部、ＭＰＸ部、およびＰＣＩｅコントローラ郡の詳細な構成図である。
【００９５】
アドレス変換部１４１は、ＮＯＴ回路（インバータ）１４２、排他的論理輪（EX-OR）回路１４３−１、１４３−２、ＡＮＤ回路１４４、およびデコーダ１４５を有する。
【００９６】
ＮＯＴ回路１４２には、メモリミラーが有効か否かを示すメモリミラー有効信号Mirror_AMが入力され、メモリミラー有効信号を反転させた信号をＡＮＤ回路１４４に出力する。
【００９７】
EX-OR回路１４３−１には、A33_ctl_AMとA33が入力される。A33は、ホストバスアドレスの最上位のビットである。
【００９８】
EX-OR回路１４３−２には、A32_ctl_AMとA32が入力される。A32は、ホストバスアドレスの上位から２桁目のビットである。
【００９９】
ＡＮＤ回路１４４は、ＮＯＴ回路１４２の出力とEX-OR回路１４３−１の出力の論理積を演算して、演算結果をデコーダ１４５に出力する。ここで、ＡＮＤ回路１４４の出力信号をA33Xと表記する。
【０１００】
アドレス変換部の入力とＡＮＤ回路１４４の出力の関係は、図７に示す真理値表の通りである。
【０１０１】
デコーダ１４５には、ＡＮＤ回路１４４の出力A33XとEX-OR回路１４３−２の出力A32Xが入力される。
【０１０２】
デコーダ１４５の入出力関係は、図８に示す真理値表の通りである。
デコーダ１４５は、選択信号Sel#1をＡＮＤ回路１４６−１およびＯＲ回路１４７−１、選択信号Sel#2をＡＮＤ回路１４６−２およびＯＲ回路１４７−２、選択信号Sel#1をＯＲ回路１４７−３、選択信号Sel#4をＯＲ回路１４７−４に出力する。
【０１０３】
ＡＮＤ回路１４６−１には、選択信号Sel#1とメモリミラー有効信号Mirror_AMが入力され、選択信号Sel#1とメモリミラー有効信号Mirror_AMの論理和が出力される。
【０１０４】
ＡＮＤ回路１４６−２には、選択信号Sel#2とメモリミラー有効信号Mirror_AMが入力され、選択信号Sel#2とメモリミラー有効信号Mirror_AMの論理和が出力される。
【０１０５】
ＯＲ回路１４７−１には、選択信号Sel#1と直接アクセス選択信号（ＭＰＸ制御信号）MG#1_AMが入力され、選択信号Sel#1と直接アクセス選択信号MG#1_AMの論理和がチップイネーブル（ＣＥ）としてメモリ１２１−１に出力される。
【０１０６】
ＯＲ回路１４７−２には、選択信号Sel#2と直接アクセス選択信号MG#2_AMが入力され、選択信号Sel#2と直接アクセス選択信号MG#2_AMの論理和がチップイネーブル（ＣＥ）としてメモリ１２１−２に出力される。
【０１０７】
ＯＲ回路１４７−３には、選択信号Sel#3、直接アクセス選択信号MG#3_AM、およびＡＮＤ回路１４６−１の出力が入力され、選択信号Sel#3、直接アクセス選択信号MG#3_AM、およびＡＮＤ回路１４６−１の出力の論理和がチップイネーブル（ＣＥ）としてメモリ１２１−３に出力される。
【０１０８】
ＯＲ回路１４７−４には、選択信号Sel#4、直接アクセス選択信号MG#4_AM、およびＡＮＤ回路１４６−２の出力が入力され、選択信号Sel#4、直接アクセス選択信号MG#4_AM、およびＡＮＤ回路１４６−２の出力の論理和がチップイネーブル（ＣＥ）としてメモリ１２１−４に出力される。
【０１０９】
メモリ１２１−Ｎは、それぞれ入力されるチップイネーブルがオンの場合、データの読み出しまたは書き込みを行う。
【０１１０】
ＭＰＸ部１５１は、スイッチ１５２−Ｎ（Ｎ＝１〜４）を有する。
スイッチ１５２−Ｎは、メモリ１２１−Ｎと接続するメモリバスとホストバスの間に配置されている。
【０１１１】
スイッチ１５２−Ｎは、直接アクセス選択信号MG#N_AMに応じて、ホストバスとメモリ１２１−Ｎ間のデータの導通を制御する。
【０１１２】
スイッチ１５２−Ｎがオンの場合、スイッチ１５２−Ｎは、ホストバスデータD00-D63をメモリ１２１−Ｎに転送し、またメモリ１２１−ＮからのメモリデータMD00-63#Nをホストバスに転送する。
【０１１３】
ＭＰＸ部１５１には、ＣＰＵ１１１からホストバスリードライト信号R/XWが入力される。
【０１１４】
ＭＰＸ部１５１の入出力関係は、図９に示す真理値表の通りである。図９において、Ｘはdon’t care、Zはハイインピーダンスを示す。
【０１１５】
ＰＣＩｅコントローラ郡１８１は、ＰＣＩｅコントローラ１８２−Ｍ（Ｍ＝Ａ〜Ｄ）を有する。尚、以下の図面または説明において、ＰＣＩｅコントローラ１８２−ＭはPCI#Mと表記する場合がある。
【０１１６】
ＰＣＩｅコントローラ１８２−Ａ〜１８２−Ｄは、それぞれ独立したメモリバスでメモリ１２１−１〜１２１−４と接続する。
【０１１７】
ＰＣＩｅコントローラ１８２−Ｍは、メモリ１２１−Ｎへのアクセスを行う場合、アクセス監視部１６１にメモリアクセス要求REQ#Mを送信する。ＰＣＩｅコントローラ１８２−Ｍは、アクセス許可信号ACK#Mを受信したらメモリ１２１−Ｎへのアクセスを行う。
【０１１８】
ＰＣＩｅコントローラ１８２−Ａ〜１８２−Ｄは、メモリ１２１−１〜１２１−４にそれぞれ書き込みデータPCIe HOST data#1〜#4を出力する。ＰＣＩｅコントローラ１８２−Ａ〜１８２−Ｄは、それぞれＭＡＣ１３１にPCIeメモリアドレスPCI Host Address#1〜#4、PCIeメモリアクセス信号PCIe Host XMEMA#1〜#4、PCIeリードライト信号PCIe Host R/XW#1〜#4を出力する。PCIeメモリアドレスPCI Host Address#1〜#4は、読み出しまたは書き込みを行うメモリ１２１−Ｎのアドレスである。PCIeメモリアクセス信号PCIe Host XMEMA#1〜#4は、ＰＣＩｅコントローラ１８２−Ａ〜１８２−Ｄからメモリ１２１−Ｎへのメモリアクセスを示す。PCIeリードライト信号PCIe Host R/XW#1〜#4からＰＣＩｅコントローラ１８２−Ａ〜１８２−Ｄからメモリ１２１−Ｎへの読み出しまたは書き込みを示す。
【０１１９】
ＭＡＣ１３１には、ホストバスアドレスA00-A33、ホストバスメモリアクセス信号XMEMA、ホストバスリードライト信号R/XWがＣＰＵ１１１から入力される。ＭＡＣ１３１には、ＰＣＩｅコントローラ１８２−Ａ〜１８２−ＤからPCIeメモリアドレスPCIe Host Address#1〜#4、PCIeメモリアクセス信号PCIe Host XMEMA#1〜#4、PCIeリードライト信号PCIe Host R/XW#1〜#4が入力される。ＭＡＣ１３１には、アクセス監視部１６１から直接アクセス選択信号MG#N_AMが入力される。ＭＡＣ１３１は、これら入力された信号に基づいて、メモリアドレスMA00-31#Nおよびメモリ制御信号MACRWO:1#Nをメモリ１２１−Ｎに出力する。尚、ＭＡＣ１３１の構成の詳細については後述する。
【０１２０】
従来の情報処理装置では、PCIe#1からメモリ１２１−Ｎへのアクセスでは、PCIe#1(RAIDカード）-PCIe#5(PCIe バススイッチ)-PCIe＃0(Root Complex)経由でのメモリ１２１−Ｎへのアクセスとなる。
【０１２１】
実施の形態の情報処理装置では、各PCIeコントローラ１８２−ＭのPCIコンフィグレーションレジスタにPCIe#AとしてMem#1のアクセス空間、PCIe＃BをMem#2のアクセス空間、PCIe＃CをMem#3のアクセス空間、PCIe＃DをMem#4のアクセス空間として、各コントローラのコンフィグレーションレジスタにこの空間を設定する。
【０１２２】
I/O装置からのダイレクトアクセスを行う場合、ＰＣＩｅバススイッチ１９１は、 Endpointから送られてくるパケットのヘッダ部分のあて先を参照し、ルートテーブルに基づいて、PCIeコントローラ１７１（Root Complex）の指示を受けることなく、I/O装置の割り当てられたメモリ領域を含むメモリ１２１−Ｍに対するPCIeコントローラ#Mにパケットを転送する。本実施の形態では、４つのEndpoint to Endpointアクセスパスをもっているため、最大で４メモリに同時アクセスが可能となる。尚、アクセスパスを追加する事で容易に同時アクセスパスを確保可能である。
【０１２３】
図１０は、実施の形態に係るＭＡＣの詳細な構成図である。
ＭＡＣ１３１は、ＯＲ回路１３２、１３３、１３４−Ｎ、１３５−Ｎ、およびセレクタ１３６−Ｎを備える。
【０１２４】
ＯＲ回路１３２には、ホストバスリードライト信号R/XWとホストバスメモリアクセス信号XMEMAが入力される。
【０１２５】
ＯＲ回路１３３には、ホストバスリードライト信号R/XWの反転値とホストバスメモリアクセス信号XMEMAが入力される。
【０１２６】
ＯＲ回路１３４−Ｎには、PCIeリードライト信号PCIe HOST R/XW#NとPCIeメモリアクセス信号PCIe HOST XMEMA#Nが入力される。
【０１２７】
ＯＲ回路１３５−Ｎには、PCIeリードライト信号PCIe HOST R/XW#N反転値とPCIeメモリアクセス信号PCIe HOST XMEMA#Nが入力される。
【０１２８】
セレクタ１３６−Ｎには、ＯＲ回路１３３、１３３の出力、ホストバスアドレスA00-A33が入力される。ＯＲ回路１３３、１３３の出力、ホストバスアドレスA00-A33を入力Ａ＝（Ａ１，Ａ２，Ａ３）とする。
【０１２９】
セレクタ１３６−Ｎには、ＯＲ回路１３４−Ｎ、１３５−Ｎの出力、らPCIeメモリアドレスPCIe HOST A00-A31#Nが入力される。ＯＲ回路１３４−Ｎ、１３５−Ｎの出力、PCIeメモリアドレスPCIe HOST A00-A31#Nを入力Ｂ＝（Ｂ１，Ｂ２，Ｂ３）とする。
【０１３０】
セレクタ１３６−Ｎには、直接アクセス選択信号MG#N_AMが入力される。直接アクセス選択信号MG#N_AMを入力Ａ／Ｂとする。
【０１３１】
セレクタ１３６−Ｎは、直接アクセス選択信号MG#N_AMに応じて、入力ＡまたはＢのいずれかを選択し、出力Ｘ＝（Ｘ１、Ｘ２、Ｘ３）として出力する。
【０１３２】
図１１は、セレクタの真理値表である。
図１１の真理値表に示すように、入力Ａ／Ｂ（直接アクセス選択信号MG#i_AM）が０の場合、セレクタ１３６−Ｎは、入力Ｂを選択および出力し、入力Ａ／Ｂ（直接アクセス選択信号MG#N_AM）が１の場合、入力Ａを選択および出力する。
【０１３３】
図１２は、実施の形態に係るアクセス監視部の構成図である。
アクセス監視部１６１は、ＣＰＵ１６２、ＰＣＩｅ−ＢＵＳアクセストレース部１６３、アドレス変換制御部１６４、ＨＯＳＴ−ＢＵＳアクセストレース／ＤＭＡ（Direct Memory Access）制御部１６５、ＮＶＭ１６６、ＲＯＭ１６７、メモリ１６８、ＰＣＩｅ制御部１６９、およびタイマ１７０を備える。
【０１３４】
ＣＰＵ１６２は、各種処理を行う処理装置である。ＣＰＵ１６２は、ＲＯＭ１６７に格納されている各種プログラムを読み出して実行する。
【０１３５】
ＰＣＩｅ−ＢＵＳアクセストレース部１６３は、ＰＣＩｅコントローラのアクセスをトレースして記録する。
【０１３６】
アドレス変換制御部１６４は、アドレスの変換を行う。
ＨＯＳＴ−ＢＵＳアクセストレース／ＤＭＡ制御部１６５は、ＰＣＵ１１１とメモリ間のアクセスのトレースを行う。
【０１３７】
ＮＶＭ１６６は、データを格納する不揮発性の記憶装置である。尚、以下の説明または図面において、ＮＶＭ１６６はＮＶＭ＃Ａと表記する場合がある。ＮＶＭ１６６は、設定情報テーブルを格納する。
【０１３８】
ＲＯＭ１６７は、データを格納する記憶装置である。尚、以下の説明または図面において、ＲＯＭ１６７はＲＯＭ＃Ａと表記する場合がある。ＲＯＭ１６７は、拡張ROM-BIOSプログラム、初期化処理プログラム、およびメインプログラムを格納する。
【０１３９】
拡張ROM-BIOSプログラムは、システムBIOSからの拡張ROMSCA時の応答、ＮＶＭ１６６の設定、および処理内容の認識等の処理を行うプログラムである。
【０１４０】
初期化処理プログラムは、ＣＰＵ１６２の割り込みベクタ設定と周辺部Ｉ／Ｏ（タイマー、レジスタ）の初期化処理を行うプログラムである。
【０１４１】
メインプログラムは、下記の処理を行うプログラムである。
・ＣＰＵ１１１が設定した全てのPCIe空間のI/Oアドレスマッピングとメモリアドレスマッピングをアクセス監視部１６１のＣＰＵ１６２から全Config空間にアクセスして、PCIeカード構成情報等をＮＶＭ１６６内に格納されている設定情報に反映する。
・HOST-BUSアクセストレース/DMA制御部１６５、PCIe-BUSアクセストレース部１６３の開始制御。
・トレースデータの解析、統計計算、および統計情報のＮＶＭ１６６への格納。
・論理アドレスと物理アドレスのマッピングを示すメモリ空間テーブルの作成。
・アドレス変換制御部のレジスタへの書き込み。
・ＰＣＩｅバススイッチのルーティングテーブルの設定。
・ＣＰＵ１１１へのリブート要求。
【０１４２】
メモリ１６８は、データを格納する記憶装置である。メモリ１６８は、例えば、ＲＡＭである。尚、以下の説明または図面において、メモリ１６８はメモリ＃Ａと表記する場合がある。
【０１４３】
ＰＣＩｅ制御部１６９は、ＰＣＩｅバススイッチ１９１と接続し、ＰＣＩｅバススイッチ１９１とのデータの送受信を行う。
【０１４４】
タイマ１７０は、時間をカウントする。
図１３Ａ、１３Ｂは、設定情報テーブルの例である。
【０１４５】
設定情報テーブルには、下記の示すような項目と情報が記載される。
メモリの搭載情報：情報処理装置１０１に搭載される各メモリの物理アドレスと容量が記載される。
【０１４６】
ＰＣＩｅの搭載情報：情報処理装置１０１に搭載されるＰＣＩｅデバイスが記載される。
【０１４７】
メモリミラーモード：メモリミラーを行うか否かを示す。「有効」はメモリミラーを実施し、「無効」はメモリミラーを実施しない。
【０１４８】
メモリ領域最適化：メモリ領域の最適化（マッピングの変更）を行うか否かを示す。「有効」は最適化を実施し、「無効」は最適化を実施しない。
【０１４９】
最適化タイミング：最適化を行うタイミングを示す。
最適化計測開始時間：計測を開始する時間を示す。
【０１５０】
計測時間：計測の期間を示す。
リブート時の最適化：リブート時に最適化を行うか否かを示す。「有効」はリブート時に最適化を実施し、「無効」はリブート時に最適化を実施しない。
【０１５１】
定期的最適化：定期的に最適化を行うか否かを示す。「有効」は定期的に最適化を実施し、「無効」は定期的に最適化を実施しない。
【０１５２】
マッピング情報：各メモリに対してマッピングの変更により割り当てられたメモリ空間の開始アドレスと終了アドレスが記載される。例えば、図２Ａ、Ｂに示されたマッピングを行った場合、メモリ#3用変換の開始アドレス情報にはメモリ空間Ｂの先頭番地の論理アドレス（0Fxxx00000）が記載され、終了アドレス情報には、メモリ空間Ｂの終了番地の論理アドレス（0FxxxFFFFF）記載される。また、メモリ#4用変換の開始アドレス情報にはメモリ空間Ｄの先頭番地の論理アドレス（10xxx40000）が記載され、終了アドレス情報には、メモリ空間Ｄの終了番地の論理アドレス（10xxx07FFFF）記載される。
【０１５３】
ＰＣＩｅバススイッチルーティング情報：メモリ１２１−ＮとPCIeデバイス間の経路とメモリに対してマッピングの変更により割り当てられたメモリ空間の開始アドレスと終了アドレスが記載される。
【０１５４】
統計情報：ホストバスの物理ＣＰＵアドレス、トータル転送容量、平均バス占有率、アクセス頻度が記載される。またPCIe#0〜Dのそれぞれの物理ＤＭＡアドレス、トータル転送容量、平均バス占有率、アクセス頻度が記載される。
【０１５５】
ログ：アクセス時間、バスのオーナ（BUSオーナ）、アクセスの種類（i/o/Memory）、アクセスの種類（Read/Write）、アクセスの経路（PCIe-root/RC(Root Complex)-root）、転送したデータサイズ（転送BYTE）、およびバスの占有時間（占有時間）が記載される。
【０１５６】
図１４は、ＰＣＩｅ−ＢＵＳアクセストレース部の処理を示す図である。
ＰＣＩｅ−ＢＵＳアクセストレース部１６３は、アクセス監視部１６１内のＤ−ＦＦ（Delay Flip-Flop）（不図示）でＰＣＩｅコントローラ１８２−Ｎ、ＰＣＩｅ＃０のバストレース対象信号をシリアルパラレル変換後にラッチする（ステップＳ６０１）。
【０１５７】
バストレース対象信号は下記の通りである。
・イベント発生時間
・P_I/O_read :PCIe I/Oアクセスリード
・P_I/O_Write：PCIe I/Oアクセスライト
・P_INT :PCIe 割り込みシーケンス
・P_MEM_Read :PCIeメモリリード
・P_MEM_Write:PCIeメモリライト
・P_Cnf_Read :PCIeコンフィグ空間リード
・P_Cnf_Write:PCIeコンフィグ空間ライト
・P_Address33_00:送受信アドレス33〜00bit
・P_Data63_00:送受信データ63〜00bit
・P_Req_ACK:PCIeバス要求/占有許可
・REQ#M:PCIe#M経由のメモリアクセス要求
・ACK＃M:アクセス許可信号
【０１５８】
ＰＣＩｅ−ＢＵＳアクセストレース部１６３は、ラッチしたデータをＦＩＦＯ経由でメモリ１６８に書き込む（ステップＳ６０２）。
【０１５９】
ＣＰＵ１６２は、メモリ１６８に格納したデータをソートし統計情報を算出する（ステップＳ６０３）。
【０１６０】
ＣＰＵ１６２は、メモリ１６８から保存データをＮＶＭ１６６に記録する（ステップＳ６０４）。
【０１６１】
図１５は、ＨＯＳＴ−ＢＵＳアクセストレース／ＤＭＡ制御部の処理を示す図である。
ＨＯＳＴ−ＢＵＳアクセストレース／ＤＭＡ制御部１６５は、アクセス監視部１６１内のＤ−ＦＦ（不図示）バストレース対象信号をラッチする（ステップＳ６０１）。
【０１６２】
バストレース対象信号は下記の通りである。
・イベント発生時間
・H_I/O_read :Hostバス I/Oアクセスリード
・H_I/O_Write：Hostバス I/Oアクセスライト
・H_INT :Hostバス 割り込みシーケンス
・H_MEM_Read :Hostバス メモリリード
・H_MEM_Write:Hostバス メモリライト
・H_Cnf_Read :Hostバス コンフィグ空間リード
・H_Cnf_Write:Hostバス コンフィグ空間ライト
・H_Address33_00: Hostバスアドレス33〜00bit
・H_Data63_00: Hostバスアデータ63〜00bit
・H_Req_ACK:Hostバス要求/占有許可
・REQ#N:PCIe#N経由のメモリアクセス要求
・ACK＃N:PCIe#NのHostバス占有開始信号
【０１６３】
ＨＯＳＴ−ＢＵＳアクセストレース／ＤＭＡ制御部１６５は、ラッチしたデータをＦＩＦＯ経由でメモリ１６８に書き込む（ステップＳ６1２）。
【０１６４】
ＣＰＵ１６２は、メモリ１６８に格納したデータをソートし統計情報を算出する（ステップＳ６1３）。
【０１６５】
ＣＰＵ１６２は、メモリ１６８から保存データをＮＶＭ１６６に記録する（ステップＳ６1４）。
【０１６６】
図１６は、アドレス変換制御部の構成を示す図である。
アドレス変換制御部１６４は、ミラーレジスタ３０１、ベースアドレスレジスタ３０２−Ｎ、 ベースアドレスレジスタ３０３−Ｎ、メモリ最適化有効レジスタ３０５、比較器３１１−Ｎ、ＡＮＤ回路３１２−１、３１２−２、３１４−Ｎ、ＯＲ回路３１３−１、３１３−２、３１５−Ｎ、およびデコーダ３２１を有する。
【０１６７】
ミラーレジスタ３０１、ベースアドレスレジスタ３０２−Ｎ、ベースアドレスレジスタ３０３−Ｎ、およびメモリ最適化有効レジスタ３０５には、内部バスデータD00-31が入力される。
【０１６８】
ミラーレジスタ３０１には、メモリミラーを行うか否かを示す情報を格納する。メモリミラーを行う場合、ミラーレジスタ３０１が格納する値は１である。ミラーレジスタ３０１に、書き込み制御信号Mirror Reg WRが入力される。ミラーレジスタ３０１は、書き込み制御信号Mirror Reg WRに応じて、内部バスデータD00-31をミラーレジスタ３０１に書き込む。
【０１６９】
ベースアドレスレジスタ３０２−Ｎは、メモリスワップを行う領域の先頭番地のA33〜A2を格納する。尚、A33〜A2は、A33〜A0で示される３４ビットのメモリアドレスのうちの最上位から３２ビットまでのアドレスデータである。ベースアドレスレジスタ３０２−Ｎには、書き込み制御信号Base Add#Na Reg WRが入力される。ベースアドレスレジスタ３０２−Ｎは、書き込み制御信号Base Add#Na Reg WRに応じて、内部バスデータD00-31をベースアドレスレジスタ３０２−Ｎに書き込む。
【０１７０】
ベースアドレスレジスタ３０３−Ｎは、メモリスワップを行う領域の最終番地のA33〜A2を格納する。ベースアドレスレジスタ３０３−Ｎには、書き込み制御信号Base Add#Nb Reg WRが入力される。ベースアドレスレジスタ３０３−Ｎは、書き込み制御信号Base Add#Nb Reg WRに応じて、内部バスデータD00-31をベースアドレスレジスタ３０３−Ｎに書き込む。
【０１７１】
尚、以下の説明および図面において、ベースアドレスレジスタ３０２−Ｎは、ベースアドレスレジスタ＃Ｎａ、ベースアドレスレジスタ３０３−Ｎは、ベースアドレスレジスタ＃Ｎｂと表示する場合がある。
【０１７２】
メモリ最適化有効レジスタ３０５には、メモリの最適化を行うか否かを示す情報を格納する。メモリの最適化を行う場合、メモリ最適化有効レジスタ３０５が格納する値は１である。メモリ最適化有効レジスタ３０５には、書き込み制御信号Optimized Mem Reg WRが入力される。メモリ最適化有効レジスタ３０５は、書き込み制御信号Optimized Mem Reg WRに応じて、内部バスデータD00-31をメモリ最適化有効レジスタ３０５に書き込む。
【０１７３】
比較器３１１−Ｎには、ベースアドレスレジスタ３０２−Ｎ、ベースアドレスレジスタ３０３−Ｎ、およびHOST BUS_A33_02が入力され、ベースアドレスレジスタ３０２−Ｎ、ベースアドレスレジスタ３０３−Ｎ、およびHOST BUS_A33_02に基づく比較結果を出力する。ベースアドレスレジスタ３０２−Ｎからの入力をCH1、ベースアドレスレジスタ３０３−Ｎからの入力をCL1、HOST BUS_A33_02をSl1とする。また、比較器３１１−Ｎの出力をCoとする。
【０１７４】
比較器３１１−Ｎの入出力関係は、図１７に示す真理値表の通りである。
SL1<CH1のとき、出力Co=0となる。
SL1>CL1のとき、出力Co=0となる。
CH1≦SL1≦CL1のとき、出力Co=1となる。
【０１７５】
ＡＮＤ回路３１２−１には、比較器３１１−１の出力とベースアドレスレジスタ３０２−１の出力が入力され、比較器３１１−１の出力とベースアドレスレジスタ３０２−１の出力の論理積が出力される。
【０１７６】
ＡＮＤ回路３１２−２には、比較器３１１−２の出力とベースアドレスレジスタ３０２−１の出力が入力され、比較器３１１−２の出力とベースアドレスレジスタ３０２−１の出力の論理積が出力される。
【０１７７】
ＯＲ回路３１３−１には、ＡＮＤ回路３１２−１の出力と比較器３１１−３の出力が入力され、ＡＮＤ回路３１２−１の出力と比較器３１１−３の出力の論理和が出力される。
【０１７８】
ＯＲ回路３１３−２には、ＡＮＤ回路３１２−２の出力と比較器３１１−４の出力が入力され、ＡＮＤ回路３１２−２の出力と比較器３１１−４の出力の論理和が出力される。
【０１７９】
ＡＮＤ回路３１４−Ｎには、XMEMAおよび比較器３１１−Ｎの出力が入力され、XMEMAと比較器３１１−Ｎの出力の論理積が出力される。
【０１８０】
ＯＲ回路３１５−Ｎには、ＡＮＤ回路３１４−Ｎの出力とメモリ最適化有効レジスタ３０５の反転値が入力され、ＡＮＤ回路３１４−Ｎの出力とメモリ最適化有効レジスタ３０５の反転値の論理和が出力される。ＯＲ回路３１５−Ｎの出力は、MG#N_AMと表記する。
【０１８１】
エンコーダ３２１には、ＯＲ回路３１５−Ｎの出力MG#N_AMが入力される。エンコーダ３２１は、入力MG#N_AMに基づいて、出力信号としてA33_ctl_AM、A32_ctl_AMを出力する。
【０１８２】
エンコーダ３２１の入出力関係は、図１８に示す真理値表の通りである。
(MG#1_AM,MG#2_AM,MG#3_AM,MG#4_AM)=(0,1,1,1)のとき、(A33_ctl_AM,A32_ctl_AM)=(0,0)となる。
(MG#1_AM,MG#2_AM,MG#3_AM,MG#4_AM)=(1,0,1,1)のとき、(A33_ctl_AM,A32_ctl_AM)=(0,1)となる。
(MG#1_AM,MG#2_AM,MG#3_AM,MG#4_AM)=(1,1,0,1)のとき、(A33_ctl_AM,A32_ctl_AM)=(1,0)となる。
(MG#1_AM,MG#2_AM,MG#3_AM,MG#4_AM)=(1,1,1,0)のとき、(A33_ctl_AM,A32_ctl_AM)=(1,1)となる。
(MG#1_AM,MG#2_AM,MG#3_AM,MG#4_AM)=(1,1,1,1)のとき、(A33_ctl_AM,A32_ctl_AM)=(1,1)となる。
【０１８３】
ここで、図２Ａ、２Ｂに示す第１の例のメモリマッピングを実施する場合のアドレス変換制御部の設定について述べる。
【０１８４】
グラフィックカード２４１のメモリ空間Ｂは、メモリ#1からメモリ#3へのアクセスエリアのスワップを行う。
【０１８５】
グラフィックカード２４１の論理アドレスメモリ空間のメモリエリアの先頭番地のA33〜A2をベースアドレスレジスタ３０２−３、最終番地のA33〜A2をベースアドレスレジスタ３０３−３にセットする。
【０１８６】
そして、グラフィックカード２４１のスワップ先メモリエリアの先頭番地のA33〜A2をベースアドレスレジスタ３０２−１,最終番地のA33〜A2をベースアドレスレジスタ３０３−１にセットする。
【０１８７】
ＲＡＩＤカード２１１のメモリ空間Ｃはメモリ#2のまま変更なしである。
ＬＡＮカード２２１のメモリ空間Ｄは、メモリ#2からメモリ#4へのアクセスエリアのスワップを行う。
【０１８８】
ＬＡＮカード２２１のメモリ空間Ｄの論理アドレスメモリ空間の先頭番地のA33〜A2をベースアドレスレジスタ３０２−４、最終番地のA33〜A2をベースアドレスレジスタ３０３−４にセットする。
【０１８９】
ＬＡＮカード２２１のスワップ先メモリエリアの先頭番地のA33〜A2をベースアドレスレジスタ３０２−２、最終番地のA33〜A2をベースアドレスレジスタ３０３−２にセットする。
【０１９０】
これにより、CPU#1が認識するメモリマッピングは、図２Ａ、２Ｂに示す CPUアクセス論理メモリ空間として認識。メモリ空間へ物理的なメモリアクセスは、物理メモリ上のメモリ空間となる様にMPX部１５１を設定でき、競合アクセスがなくなり最適化が可能となる。
【０１９１】
図１９は、バスアービトレーション制御を示す図である。
CPU#1がPCIeコントローラ１８２−Ｍにアサインされたメモリにアクセスする場合、アクセス競合が発生する。
【０１９２】
このため、アクセスの優先制御が必要となる。CPU#1がMem#1〜4をアクセスしている場合、PCIeコントローラ１８２−Ｍからのメモリ#1〜4まで中で同じメモリ番号をアクセスした場合、アクセス監視部１６１のＨＯＳＴ−ＢＵＳアクセストレース／ＤＭＡ制御部１６５により同時アクセスを抑制する。
【０１９３】
同様にPCIeコントローラ１８２−Ｍがメモリ#1〜4をアクセスしている場合、CPU#1がメモリ#1〜4まで中で同じメモリ番号をアクセスした場合、アクセス監視部によりアクセスを抑制する。
【０１９４】
このため、ＨＯＳＴ−ＢＵＳアクセストレース／ＤＭＡ制御部１６５は、CPU#1からのアクセスを監視し、CPU#1がアクセスしている場合は、Host-busの状態を監視し、PCIeコントローラ１８２−Ｍから同じメモリ番号にアクセスが発生した場合は、CPU#1のアクセスが完了する迄アクセスを延伸し、同時にHost-bus占有要求信号H DREQをCPU#1に出力し、CPU#1は、バスを解放できる状態になった場合、占有許可信号H DACKを出力し、PCIeコントローラ１８２−Ｍが、対象のメモリ空間にアクセスする。アクセスが完了した時点でH DREQの出力を停止する。
【０１９５】
また、PCIeコントローラ１８２−Ｍがメモリ#1〜4をアクセスしている場合、CPU#1がメモリ#1〜4まで中で同じメモリ番号をアクセスした場合は、アクセスを監視部がCPU#1に対しH HALT信号により、CPU#1のアクセスを一時ホールド状態にして、PCIeコントローラ１８２−Ｍのアクセスが完了した時点で停止信号H_HALTを解除して、CPU#1のアクセスを再開する。
【０１９６】
図１９の下部は、バスアービトレーション制御の真理値表を示す。
同一のメモリに対して、CPU#1のアクセス無し、PCIeコントローラのアクセス無しのとき、H_DREQは無効（＝０）、H_DACKは無効（＝０），H_HALTは無効（＝０）となる。
【０１９７】
同一のメモリに対して、CPU#1のアクセス有り、PCIeコントローラのアクセス無しのとき、H_DREQは無効（＝０）、H_DACKは無効（＝０），H_HALTは無効（＝０）となる。
【０１９８】
同一のメモリに対して、CPU#1のアクセス無し、PCIeコントローラのアクセス有りのとき、H_DREQは無効（＝０）、H_DACKは無効（＝０），H_HALTは無効（＝０）となる。
【０１９９】
同一のメモリに対して、CPU#1はアクセス中、PCIeコントローラのアクセス要求有りのとき、H_DREQはアサート（＝１）され、CPU#1のアクセス終了後にH_DACKはアサート（＝１）される。なお、H_HALTは無効（＝０）である。
【０２００】
同一のメモリに対して、PCIeコントローラはアクセス中、CPU#1のアクセス要求有りのときH_DREQは無効（＝０）、H_DACKは無効（＝０），H_HALTはアサート（＝１）となる。
【０２０１】
図２０Ａ〜Ｆは、実施の形態に係るバス制御方法のフローチャートである。
ステップＳ５０１において、CPU１１１とCPU１６２に電源投入リセット又は再起動がかかり、電源投入時又は再起動時にメインCPU１１１とアクセス監視部内のCPU１６２が起動し、CPU１１１はROM#1、CPU１６２はROM#Aのそれぞれ格納されているプログラムを読み出して実行する（ＣＰＵ１１１／ＣＰＵ１６２初期化処理）。
【０２０２】
以下、ステップＳ５０２〜Ｓ５１４とステップＳ５２１〜Ｓ５３８が並列に実行される。
【０２０３】
ステップＳ５０２において、CPU１１１は、ROM#1からシステムBIOSを読み出して実行する。これにより、ＣＰＵ１１１は、自己診断を行い、ハードウェア構成認識する。ＣＰＵ１１１は、PCIeのConfiguration初期化処理（I/Oアドレスマッピングとメモリアドレスマッピングを実施）を実施する。
【０２０４】
ＣＰＵ１１１は、PCIe上に搭載された各カードの拡張ROMBIOSを実行する。アクセス監視部１６１のROM１６７に格納された拡張ROMBIOSにより、NVM１６６内に格納されている設定情報を確認し、データが設定されていない場合、設定情報のデータ設定未設定情報を画面上に表示後、特定のキー入力待ちとする。
【０２０５】
ＣＰＵ１１１は、メモリミラーモードの有効/無効、メモリ領域最適化の有効/無効 最適化タイミング：最適化をシステムに反映にする時間、最適化計測開始時間:最適化の計測を開始する時間、Reboot時の度に最適化反映の有効無効、定期的な時間による最適化の有効/無効をNVM１６６に反映し、拡張ROMBIOSが終了したことをCPU１６２に通知する。
【０２０６】
ステップＳ５０３において、CPU１１１は、ブートデバイスからＯＳのブートプログラムを起動する。
【０２０７】
ステップＳ５０４において、CPU１１１は、OSによるメモリ、I/O資源の獲得を行う。
ステップＳ５０５において、CPU１１１は、各I/Oドライバ、サービスを起動する。
【０２０８】
ステップＳ５０６において、CPU１１１は、情報処理装置１０１にインストールされている各アプリケーションを起動する。
【０２０９】
ステップＳ５０７において、システム動作による各I/OによるDMAが開始する。
ステップＳ５０８において、CPU１１１は、定期的にアクセス監視部１６１内のNVM１６６から各PCIe#0〜DのDMA使用アドレス、total転送容量、平均転送レート、平均BUS占有率を読み出し、システムイベントログに記憶する。
【０２１０】
ステップＳ５０９において、CPU１１１は、メモリ再配置が発生した場合、システムイベントログに記憶する。
【０２１１】
ステップＳ５１０において、CPU１１１は、CPU１６２から、システム再起動要求があるか判定する。システム再起動要求がある場合、制御はＳ５１１に進み、システム再起動要求がない場合、制御はステップＳ５１３に進む。
【０２１２】
ステップＳ５１１において、CPU１１１は、システムリブート開始をCPU１６２に通知する。
【０２１３】
ステップＳ５１２において、CPU１１１は、システム再起動を実施する。
ステップＳ５１３において、CPU１１１は、システム運用停止まで継続運用する。
【０２１４】
ステップＳ５１４において、CPU１１１は、業務終了時、シャットダウン指示をする。
ステップＳ５２１において、ＣＰＵ１６２は、ROM１６７に格納されているプログラムを読み出して実行し、アクセス監視部の自己診断、ハードウェア構成認識、及び、起動前にNVM#A内に格納されている設定情報テーブルの内容を確認する。
【０２１５】
ステップＳ５２２において、ＣＰＵ１６２は、設定情報（図１３Ａ、Ｂ）が設定済みか否か判定する。設定情報が設定済みの場合、制御はステップＳ５２３に進み、設定済みでない場合、制御はステップＳ５２７に進む。
【０２１６】
ステップＳ５２３において、ＣＰＵ１６２は、設定情報を参照し、リブート時の最適化が有効であるか否か判定する。
【０２１７】
ステップＳ５２４において、ＣＰＵ１６２は、リブート時の最適化が有効の場合、アドレス変換制御部１６４の各レジスタとPCIeバススイッチ１９１のルートテーブルを最適値に変更する。
【０２１８】
ステップＳ５２５において、ＣＰＵ１６２は、設定情報を参照し、メモリミラーモードが有効か否か判定する。メモリミラーモードが有効の場合、制御はステップＳ５２６に進み、メモリミラーモードが無効の場合、制御はステップＳ５２７に進む。
【０２１９】
ステップＳ５２６において、ＣＰＵ１６２は、アドレス変換制御部１６４のMirrorレジスタ３０１によりメモリミラー信号Mirror_AMを有効とし、情報処理装置１０１をメモリmirror状態とする。これにより、メモリ#1と#3、メモリ#2と#4をミラーリングとしてMAC１３１及びアドレス変換部１４１を設定し、メモリ#1+#2のメモリ空間とメモリ#3+#4のメモリ空間を同じ空間に配置し、メモリ#1の書込みがメモリ#3、メモリ#2の書込みがメモリ#4のそれぞれ同一空間となる。
【０２２０】
ステップＳ５２７において、ＣＰＵ１６２は、拡張ＲＯＭＢＩＯＳの処理が終了したか否か判定する。拡張ＲＯＭＢＩＯＳの処理が終了した場合、制御はステップＳ５２８に進む。拡張ＲＯＭＢＩＯＳの処理が終了したか否かは、例えば、ＣＰＵ１１１からの通知により判定する。
【０２２１】
ステップＳ５２８において、拡張ROMBIOS動作完了後、ＣＰＵ１６２は、メインプログラムよりCPU１１１が設定した全てのPCIe空間のI/Oアドレスマッピングとメモリアドレスマッピングをアクセス監視部１６１のCPU１６２から全Config空間にアクセスし、PCIeカード構成情報等をNVM１６６に格納されている設定情報に反映する。
【０２２２】
ステップＳ５２９において、ＣＰＵ１６２は、設定情報を参照し、現時刻が最適化計測開始時間であるかチェックし、現時刻が最適化計測開始時間の場合、制御はステップＳ５３０に進む。
【０２２３】
ステップＳ５３０において、ＣＰＵ１６２は、最適化計測開始時間からHOST−BUSアクセストレース/DMA制御部１６５およびPCIe-BUSアクセストレース部１６３のトレースを開始させ、同時に統計情報の計算を開始する。
【０２２４】
ステップＳ５３１において、ＣＰＵ１６２は、設定情報を参照し、メモリ領域最適化、最適化タイミング、および計測時間が設定値に一致するか否か判定する。一致する場合、制御はステップＳ５３１に進み、一致しない場合、一致するまで待機する。
【０２２５】
ステップＳ５３２において、統計情報によりメモリ最適化を行う場合、ＣＰＵ１６２は、統計情報を元に各I/O装置のCPUアクセス論理空間と物理空間とのマッピングを算出する。CPUアクセス論理空間と物理空間とのマッピングの算出方法は、図４Ａ、Ｂで説明した通りである。尚、統計情報によりメモリ最適化を行わない場合、ステップＳ５３２は、省略してよい。
【０２２６】
ステップＳ５３３において、ＣＰＵ１６２は、CPUアクセス論理メモリ空間から、物理空間にマップした時に同じメモリ１２１−Ｎに対して、アクセス競合しない様に、物理メモリ上にマップしたメモリマップを作成する。作成されたメモリマップを示すと、例えば、図２Ａ，２Ｂのようになる。ＣＰＵ１６２は、メモリミラーで動作時は図３Ａ、３Ｂ、統計情報使用時は、図４Ａ、４Ｂで示されるようなメモリマップを作成する。また、ｖ作成したメモリマップを示すメモリ空間テーブルを作成し、ＮＶＭ１６６に格納する。
【０２２７】
ステップＳ５３４において、ＣＰＵ１６２は、作成したメモリマップを元に、ベースアドレスレジスタ３０２−１〜３０２−４（各I/Oの変更されたメモリ領域の開始アドレス）とベースアドレスレジスタ３０３−１〜３０３−４(各I/Oの変更されたメモリ領域の終了アドレス)を設定する。
【０２２８】
ステップＳ５３５において、ＣＰＵ１６２は、設定情報を参照し、リブート時の最適化が有効か否か判定する。有効の場合、制御はステップＳ５３７に進み、有効でない場合、制御はステップＳ５３６に進む。
【０２２９】
ステップＳ５３６において、ＣＰＵ１６２は、NVM１６６の設定でメモリミラーで動作している場合は、データの整合性確保のため、メモリ#1と#3、メモリ#2と#4の空間の中での空間再割り付けを行い、PCIe バススイッチ１９１内のルートテーブルを変更する。
【０２３０】
ステップＳ５３７において、ＣＰＵ１６２は、メモリ最適化有効レジスタ３０５を有効にして、メモリ再配置最適化を実行後、CPU１１１に最適化を実行したことを通知し、運用を継続する。
【０２３１】
ステップＳ５３８において、ＣＰＵ１６２は、システム再起動をCPU１１１に指示する。
【０２３２】
ステップＳ５３９において、ＣＰＵ１６２は、システム運用停止までトレース/統計情報の算出を継続する。
【０２３３】
図２１は、従来のメモリバスの使用状況および実施の形態の最適後のメモリバスの使用状況を示す図である。
【０２３４】
図２１の上部は、従来のメモリバスの使用状況を示し、下部は、実施の形態の最適後のメモリバスの使用状況を示す。
【０２３５】
従来の情報処理装置において、ＣＰＵおよびPCIeデバイスPCIe#1〜PCIe#4は、メモリアクセス時にホストバスを介して、各メモリバスから各メモリにアクセスする。そのため、バス競合により、各サイクルにおいて、ホストバスを使用できるのは、１つの装置だけである。図２１の上部に示すように、サイクル＃１においては、ＣＰＵがホストバスを介してメモリバス＃１を使用し、サイクル＃２においては、PCIeデバイスPCIe#1がホストバスを介してメモリバス＃２を使用している。同様に、サイクル＃３〜＃６において、１台の装置だけがメモリバスを使用している。
【０２３６】
一方、実施の形態の情報処理装置は、PCIeデバイスPCIe#1〜PCIe#4は、ホストバスを介さずに、それぞれ独立したバスを介して、各メモリバスと接続して各メモリにアクセスすることができる。図２１の下部に示すように、サイクル＃１において、ＣＰＵがメモリバス＃１、PCIe#2がメモリバス＃２、PCIe#4がメモリバス＃４をそれぞれ使用している。同様に、サイクル＃２〜＃６において、複数の装置がそれぞれ異なるメモリバスを使用している。このように、実施の形態の情報処理装置は、同一のサイクルで異なる装置が異なるメモリバスを使用する（異なるメモリにアクセスする）ことができる。
【０２３７】
このように、実施の形態の情報処理装置によれば、バス競合によるパフォーマンスの低下を抑止できる。
【０２３８】
本願の概要は以下の通りである。
パフォーマンスの最適化は、CPUとメモリ間のアクセス、各I/Oデバイスからのメモリへのデータ転送の競合を少なくすることが重要になる。このため、実施の形態の情報処理装置１０１は、データ転送時にバスアクセス競合が発生する各I/Oデバイスからのメモリ領域への独立バスによるダイレクトアクセスパスを備え、実際にCPUが使用するメモリアドレス領域から、CPU/メモリ間、各I/Oデバイス/メモリ間の同時アクセスが可能な領域となる様に、アクセス監視部１６１が、MPX部１５１を通してCPU１１１のメモリアクセス空間から物理アドレスメモリ空間へのマッピングを変更し、独立したI/Oデバイス/メモリ間のアクセスルートを使用し、CPU、I/Oデバイスがホストバスを占有中でも、各I/Oデバイスがメモリへのアクセスを同時に可能としてバスのアクセス競合によるパファーマンスの低下を抑止する。
【０２３９】
具体的には、BIOSが各デバイスに割り当てるI/O空間、メモリ空間、OSがI/Oデバイスに割り当てるI/O,メモリ領域をアクセス監視部１６１内のNVM１６２にてメモリ空間テーブルとして記憶し、各I/Oデバイス毎のアクセスの統計情報を格納する。そして、アクセス競合が高いデバイス同士が同じメモリバスにアクセスしない様にメモリのバス分離可能なアクセス範囲のメモリマッピングテーブルを作成し、OS起動後に各メモリモジュールに対して競合の少ないメモリアドレスの割り付けを行う。
【０２４０】
アクセス監視部１６１は、ホストバスの監視を行い、アドレス変換制御により、実際に使用されるCPU１１１のメモリアクセス空間,各PCIeに配置されるI/Oが使用するDMAメモリ空間を各メモリモジュールに配置するアドレス変換制御を行う。
【０２４１】
最適化する前の初期状態において、アクセス監視部からメモリミラー機能を有効とした場合、メモリへのアクセスは、メモリ#1とメモリ#3、メモリ#2とメモリ#4がそれぞれメモリミラー構成となり、メモリ#1の書込みはメモリ#3の同一空間、メモリ#2の書込みはメモリ#4の同一空間に書き込まれる。
【０２４２】
アクセス監視部１６１は、CPU１１１からのホストバス経由のメモリアクセス、I/Oアクセス、I/OからのDMA、I/Oデバイスの種類、I/OからのDMA要求の頻度、BUS競合の割合、占有時間、リアルタイム性能を監視する。
【０２４３】
監視した情報は、統計情報としてNVM１６６にデータを蓄積する。監視時間、またはトータルトランザクション量の閾値を設定情報に設定しておき、閾値を超えた場合、統計情報を元に図４Ａのメモリ空間テーブルを作成し、競合の多い各I/Oがアクセスするメモリ空間の先頭アドレスを図１６のベースアドレスレジスタ＃Na、終了アドレスをベースアドレスレジスタ＃Nbに設定し、NVM１６６上に設定情報を登録する。
【０２４４】
また、マッピングしたアドレス空間へのダイレクトアクセスを有効にするため、PCIe バススイッチ１９１に対して、該当のI/OがDMA空間へのアクセスをEndpoint to Endpointアクセスとなる様にアクセス監視部１６１がPCIe バススイッチ内をPCIe経由で設定し、 Endpointから送られてくるパケットのヘッダー部分のあて先から、PCIeコントローラ１７１（Root Complex）の指示を受けることなく各メモリ１２１−Ｎに対する各PCIeコントローラ１８２−Ｎにパケットを送信する。本実施の形態では、 ４つのEndpoint to Endpointアクセスパスがあるため、最大で4メモリに同時アクセスが可能となる。尚、アクセスパスを追加する事で容易に同時アクセスパスを確保可能である。
【０２４５】
また、ホストバス経由のCPU１１１からのメモリアクセスと同じメモリ１２１−Ｎへのアクセス競合が発生した場合は、図１９のバスアービトレーション制御により、競合判定を行い、アクセスを実行する。
【０２４６】
実施の形態の情報処理装置によれば、実機確認によるパフォーマンスモニターや、ベンチマークソフトによるアプリケーションのバス占有率の考慮のためのアクセス抑制等の設定値変更なしで、ハード構成（メモリや、CPU種別、搭載I/O等の構成等）やアプリケーションの追加や変更、ユーザ数の増減によるトランザクション数の変動や、使用環境が異なった場合等にも、搭載アプリケーションや、運用形態（設置環境、稼働時間の集中化、リアルタイム性要求等）に基づいて、アクセス監視部によりシステム運用中のメモリバスとI/Oバスを監視し、ボトルネックとなるメモリアクセスが最適化となる様にメモリのマッピングを行い、自動的にシステムパフォーマンスの最適化できる。また、冗長配置したメモリチップと専用のバス制御機構により、動作中にダイナミックにメモリアクセスルートのマッピングが可能となる。
【０２４７】
実施の形態の情報処理装置によれば、実機検証なしで、実運用のパフォーマンスボトルネックを検出し、運用後の再起動または、電源再投入のみで常に運用状況に合わせた最適なパフォーマンスのシステム構築が可能となる。
【０２４８】
以上の実施の形態に関し、さらに以下の付記を開示する。
（付記１）
複数のメモリと、
前記複数のメモリとそれぞれ接続する複数のバスと、
前記複数のメモリにアクセスする入出力装置と、
前記入出力装置が使用するメモリ領域の論理アドレスと物理アドレスのマッピングを変更する処理部と、
前記入出力装置からのアクセスを前記マッピングに基づいて前記複数のバスのいずれかに転送するスイッチと、
を備える情報処理装置。
（付記２）
前記処理部は、
前記入出力装置のアクセスに関する情報を収集し、
前記収集した情報に基づいて前記マッピングを変更する
ことを特徴とする付記１記載の情報処理装置。
（付記３）
前記処理部は、前記入出力装置の前記複数のバスの占有率、前記占有率の変動、および前記入出力装置の平均転送速度に基づき、前記マッピングを変更することを特徴とする付記２記載の情報処理装置。
（付記４）
前記処理部は、前記入出力装置が使用するメモリ領域と他の入出力装置が使用する他のメモリ領域とをそれぞれ前記複数のメモリのうちの異なるメモリに割り当てるように前記マッピングを変更することを特徴とする付記１記載の情報処理装置。
（付記５）
複数のメモリと、前記複数のメモリとそれぞれ接続する複数のバスと、前記複数のメモリにアクセスする入出力装置と、を備える情報処理装置が実行するバス制御方法であって、
前記入出力装置が使用するメモリ領域の論理アドレスと物理アドレスのマッピングを変更し、
前記入出力装置からのアクセスを前記マッピングに基づいて前記複数のバスのいずれかに転送する、
処理を備えるバス制御方法。
（付記６）
前記入出力装置のアクセスに関する情報をさらに収集し、
前記変更する処理は、前記収集した情報に基づいて前記マッピングを変更する
ことを特徴とする付記５記載のバス制御方法。
（付記７）
前記変更する処理は、前記入出力装置の前記複数のバスの占有率、前記占有率の変動、および前記入出力装置の平均転送速度に基づき、前記マッピングを変更することを特徴とする付記６記載のバス制御方法。
（付記８）
前記変更する処理は、前記入出力装置が使用するメモリ領域と他の入出力装置が使用する他のメモリ領域とをそれぞれ前記複数のメモリのうちの異なるメモリに割り当てるように前記マッピングを変更することを特徴とする付記５記載のバス制御方法。
【符号の説明】
【０２４９】
１０１    情報処理装置
１１１    ＣＰＵ
１２１    メモリ
１３１    ＭＡＣ
１４１    アドレス変換部
１５１    ＭＰＸ部
１６１    アクセス監視部
１６２    ＣＰＵ
１６３    ＰＣＩｅ−ＢＵＳアクセストレース部
１６４    アドレス変換制御部
１６５    ＨＯＳＴ−ＢＵＳアクセストレース／ＤＭＡ制御部
１６６    ＮＶＭ
１６７    ＲＯＭ
１６８    メモリ
１６９    ＰＣＩｅ制御部
１７０    タイマ
１７１    ＰＣＩｅコントローラ
１８１    ＰＣＩｅコントローラ群
１９１    ＰＣＩｅバススイッチ
２１１    ＲＡＩＤカード
２１２    ＨＤＤ
２２１    ＬＡＮカード
２３１    ＵＳＢカード
２３２    テープ装置
２４１    グラフィックカード
２４２    ディスプレイ装置
２５１    Ｍ／Ｂ  Ｉ／Ｏ制御部
２５２    入力装置
２５３    タイマ
２５４    ＲＯＭ
２５５    ＮＶＭ
【図１】
2015219810.tif 000003
【図２Ａ】
2015219810.tif 000004
【図２Ｂ】
2015219810.tif 000005
【図３Ａ】
2015219810.tif 000006
【図３Ｂ】
2015219810.tif 000007
【図４Ａ】
2015219810.tif 000008
【図４Ｂ】
2015219810.tif 000009
【図５】
2015219810.tif 000010
【図６】
2015219810.tif 000011
【図７】
2015219810.tif 000012
【図８】
2015219810.tif 000013
【図９】
2015219810.tif 000014
【図１０】
2015219810.tif 000015
【図１１】
2015219810.tif 000016
【図１２】
2015219810.tif 000017
【図１３Ａ】
2015219810.tif 000018
【図１３Ｂ】
2015219810.tif 000019
【図１４】
2015219810.tif 000020
【図１５】
2015219810.tif 000021
【図１６】
2015219810.tif 000022
【図１７】
2015219810.tif 000023
【図１８】
2015219810.tif 000024
【図１９】
2015219810.tif 000025
【図２０Ａ】
2015219810.tif 000026
【図２０Ｂ】
2015219810.tif 000027
【図２０Ｃ】
2015219810.tif 000028
【図２０Ｄ】
2015219810.tif 000029
【図２０Ｅ】
2015219810.tif 000030
【図２０Ｆ】
2015219810.tif 000031
【図２１】
2015219810.tif 000032