JP6394062B2 - 情報処理装置およびバス制御方法 - Google Patents

情報処理装置およびバス制御方法 Download PDF

Info

Publication number
JP6394062B2
JP6394062B2 JP2014104264A JP2014104264A JP6394062B2 JP 6394062 B2 JP6394062 B2 JP 6394062B2 JP 2014104264 A JP2014104264 A JP 2014104264A JP 2014104264 A JP2014104264 A JP 2014104264A JP 6394062 B2 JP6394062 B2 JP 6394062B2
Authority
JP
Japan
Prior art keywords
access
memory
memories
input
pcie
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014104264A
Other languages
English (en)
Other versions
JP2015219810A (ja
Inventor
博 櫻井
博 櫻井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014104264A priority Critical patent/JP6394062B2/ja
Priority to US14/656,804 priority patent/US9575914B2/en
Publication of JP2015219810A publication Critical patent/JP2015219810A/ja
Application granted granted Critical
Publication of JP6394062B2 publication Critical patent/JP6394062B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、情報処理装置およびバス制御方法に関する。
システムパフォーマンスの最適化は、実際のシステムの運用前に実際のシステムの運用状態に近い状態でアプリケーションを動作させ、パフォーマンスモニターや、ベンチマークソフトにより、バッファ領域や、特定トランザクションのアプリケーション側の抑制等によりパラメータを個々に変更する事で、システムパフォーマンスや、リアルタイム性能のチューニングを実施していた。
特開2000−207348号公報 特開平9−73430号公報
実際のシステムでは、ハード構成(メモリや、CPU種別、搭載I/O等の構成等)や搭載アプリケーションや、運用形態(設置環境、稼働時間の集中化、リアルタイム性要求等)の変更により、各種バス/インタフェースのトランザクション、送受信比率の違いが発生し、バス占有率が変わる。
特にメモリバスにおいては、CPU及び搭載I/O装置が全てメモリ空間を使用するため、バスの使用競合が多く発生した場合、全体のパフォーマンスが低下するという問題がある。
このため、システムパフォーマンスを常に最適化するためには、変更の度に、実際のシステム運用形態を考慮した実機確認によるパフォーマンスモニターや、ベンチマークソフトによるシステムパフォーマンスの計測による、メモリキャッシュサイズやCPU処理速度に余裕のあるCPUへの変更や、搭載I/Oの処理能力に余裕のあるI/Oへの変更、メモリ上に配置したバッファ領域の変更や、メモリバス使用効率を目的とした特定トランザクションの抑制等によるチューニングを実施する必要がある。
個々のチューニング設定値や最適のハード構成を決定するのに非常に多くの工数を使用している。更に、その都度実機運用状況により、各ハードウェアの変更や、バッファ領域や、特定トランザクションの抑制等の設定値を変更する事が容易でないため、一度設定した情報を使い続け、徐々に想定環境からかけ離れ、パフォーマンスが劣化していくという問題も発生している。また、実際のシステムで性能測定に使用するパフォーマンスモニターや、ベンチマークソフト自身のアプリケーション動作による性能影響が発生し、真のパフォーマンスの測定が困難な状況となっている。
本発明の課題は、バス競合によるパフォーマンスの低下を抑止することである。
実施の形態の情報処理装置は、複数のメモリと、複数のバスと、入出力装置と、処理部と、スイッチと、を備える。
前記複数のバスは、前記複数のメモリとそれぞれ接続する。
前記入出力装置は、前記複数のメモリにアクセスする。
前記処理部は、前記入出力装置が使用するメモリ領域の論理アドレスと物理アドレスのマッピングを変更する。
前記スイッチは、前記入出力装置からのアクセスを前記マッピングに基づいて前記複数のバスのいずれかに転送する。
実施の形態の情報処理装置によれば、バス競合によるパフォーマンスの低下を抑止することができる。
実施の形態に係る情報処理装置の構成図である。 メモリ最適化時のメモリ空間テーブルの第1の例である。 メモリ最適化時のメモリ空間の第1の例である。 メモリ最適化時のメモリ空間テーブルの第2の例である。 メモリ最適化時のメモリ空間の第2の例である。 メモリ最適化時のメモリ空間テーブルの第3の例である。 メモリ最適化時のメモリ空間の第3の例である。 ルートテーブルの例である。 実施の形態に係るアドレス変換部、MPX部、およびPCIeコントローラ郡の詳細な構成図である。 アドレス変換部のAND回路の真理値表である。 アドレス変換部のデコーダの真理値表である。 MPX部の真理値表である。 実施の形態に係るMACの詳細な構成図である。 セレクタの真理値表である。 実施の形態に係るアクセス監視部の構成図である。 設定情報の例である。 設定情報の例である。 PCIe−BUSアクセストレース部の処理を示す図である。 HOST−BUSアクセストレース/DMA制御部の処理を示す図である。 アドレス変換制御部の構成を示す図である。 比較器の真理値表である。 エンコーダの真理値表である。 バスアービトレーション制御を示す図である。 実施の形態に係るバス制御方法のフローチャートである。 実施の形態に係るバス制御方法のフローチャートである。 実施の形態に係るバス制御方法のフローチャートである。 実施の形態に係るバス制御方法のフローチャートである。 実施の形態に係るバス制御方法のフローチャートである。 実施の形態に係るバス制御方法のフローチャートである。 従来のメモリバスの使用状況および実施の形態の最適後のメモリバスの使用状況を示す図である。
実施の形態の情報処理装置は、実際のシステムのハード構成(メモリや、CPU種別、搭載I/O装置等の構成等)や、搭載アプリケーション、運用形態(設置環境、稼働時間の集中化、リアルタイム性要求等)による各インタフェースのトランザクション、バス占有率を実機検証無しで把握し、バッファ領域変更、特定トランザクションの抑制等の設定値の変更なしにI/O装置が占有するメモリバスの効率化を自動的に実施してシステムパフォーマンスを向上する。また、実施の形態の情報処理装置は、ハード構成のみでなく、I/O装置を使用するアプリケーションの追加や変更、オンラインデータベース等のユーザ数の増減によるトランザクション変動、使用環境が異なった場合等にも、パフォーマンスが最適となる様にソフトウェアから影響しない様に物理的なメモリのマッピングを再構築し、最適なバスルートを自動で確保する。
以下、図面を参照しながら実施の形態について説明する。
図1は、実施の形態に係る情報処理装置の構成図である。
情報処理装置101は、Central Processing Unit(CPU)111、メモリ(MEM)121−N(N=1〜4)、Memory Access Controller(MAC)131、アドレス変換部141、マルチプレクサ(MPX)部151、アクセス監視部161、Peripheral Component Interconnect Express(PCIe)コントローラ171、PCIeコントローラ群181、PCIeバススイッチ191、Redundant Arrays of Inexpensive Disks(RAID)カード211、Local Area Network(LAN)カード221、Universal Serial Bus(USB)カード231、グラフィック(表示)カード241、Motherboard(M/B) Input/Output(I/O)制御部251、Hard Disk Drive(HDD)212−1,212−2、テープ装置232、ディスプレイ装置242、入力装置252、タイマ253、ROM254、およびNon-Volatile Memory(NVM)255を備える。
CPU111、MAC131、アドレス変換部141、MPX部151、およびPCIe)コントローラ171は、ホストバスを介して接続している。
情報処理装置101は、例えば、サーバやパーソナルコンピュータ(PC)等である。
CPU111は、各種処理行い、メモリ121にアクセスする。CPU111は、電源投入時、又はリセット時にPCIeバスに接続されている全てのPCIeデバイスと、アクセス空間をシステムBIOSの実行によりコンフィグレーションレジスタをスキャンし、必要な空間を認識し、アドレス領域を割り当てる。この時、PCIeバススイッチ191配下のPCIeデバイスへのアクセスには、複数のアクセスパスが存在するため、アクセスするルートパスをPCIeバススイッチ191の内部にルートテーブルを登録する。CPU111は、メモリ121−Nへアクセスする場合、アクセス先の(論理)アドレスを示すホストバスアドレスA00-A33をMAC131およびアドレス変換部141にホストバスを介して出力する。また、CPU111は、書き込みデータであるホストバスデータD00-D63をホストバスを介してMPX部151に出力する。
メモリ121−Nは、データを格納する記憶装置である。メモリ121−Nは、例えば、Random Access Memory(RAM)である。尚、以下の説明または図面において、メモリ121−Nはメモリ#Nと表記する場合がある。実施の形態において、メモリ121−Nの容量はそれぞれ4GBとする。各メモリ121−N内のアドレスは32ビットのデータA31-A00で表すことができ、A31-A00とメモリ121−Nを識別する2ビットのデータA33,A32と組み合わせることで、メモリ121−Nのアドレスを一意に表すことができる。
MAC131は、メモリ121−Nに対するアクセスを制御する。MACの詳細については後述する。
アドレス変換部141は、制御信号A33_ctl_AM、A32_ctl_AM、メモリミラー信号Mirror_AM、およびホストバスアドレスに基づいて、選択信号(Sel#N)を出力する。
MPX部151は、ホストバスからのアクセスとPCIeコントローラ群181からのアクセスのいずれかを選択して、メモリ121−Nに出力する。
アクセス監視部161は、CPU111とメモリ121−N間、およびPCIeデバイス(PCIeコントローラ171、RAIDカード211、LANカード221、USBカード231、およびグラフィックカード241、およびM/B I/O制御部251、PCIeコントローラ群181内のPCIeコントローラ)とメモリ121−N間のアクセスを監視し、アクセスに関する情報を収集する。アクセス監視部161は、収集した情報から統計情報を算出する。アクセス監視部161は、メモリのマッピングの変更し、マッピングの変更に基づいて、アドレス変換部141、MPX部151、およびMAC131の制御を行う。アクセス監視部161は、PCIeバススイッチ191内のルートテーブルの設定を行う。
アクセス監視部161は、占有要求信号H_DREQ、停止信号H_HALTをCPU111に送信する。アクセス監視部161は、アドレス変換部141に、制御信号A33_ctl_AM、A32_ctl_AM、メモリミラー信号Mirror_AMを送信する。
アクセス監視部161は、CPU111から、読み出しまたは書き込みを行うメモリアドレスAddress、メモリ121−Nを制御するコマンドCMD、占有許可信号H_DACKを受信する。尚、アクセス監視部161の詳細については、後述する。尚、以下の説明または図面において、アクセス監視部161は、PCIe#6と表記する場合がある。
PCIeコントローラ171は、PCIeデバイスとメモリ121−N間のデータ転送の制御を行う。PCIeコントローラ171は、Root Complexである。尚、以下の説明または図面において、PCIeコントローラ171は、PCIe#0と表記する場合がある。
PCIeコントローラ群181は、4つのPCIeコントローラを含む。4つのPCIeコントローラは、それぞれ独立したメモリバスを介してメモリ121−Nと接続し、接続したメモリ121−Nに対するアクセスを行う。PCIeコントローラは、アクセス監視部161にメモリアクセス要求REQ#Mを送信し、アクセス監視部161からアクセス許可信号ACK#Mを受信する。尚、PCIeコントローラ群181の詳細については後述する。
PCIeバススイッチ191は、複数のPCIeデバイスと接続するスイッチである。PCIeバススイッチ191は、例えば、回路により実現される。PCIeバススイッチ191は、RAIDカード211、LANカード221、USBカード231、グラフィックカード241、およびM/B I/O制御部251と接続する。RAIDカード211、LANカード221、USBカード231、グラフィックカード241、およびM/B I/O制御部251は、入出力(I/O)装置の一例である。RAIDカード211、LANカード221、USBカード231、およびグラフィックカード241は、PCIeデバイスである。また、PCIeバススイッチ191は、アクセス監視部161、PCIeコントローラ171と接続する。また、PCIeバススイッチ191は、PCIeコントローラ群181の4つのPCIeコントローラとそれぞれ独立した4本のバスで接続する。
PCIeバススイッチ191は、ルートテーブルを格納し、ルートテーブルに基づいて、PCIeデバイスからメモリ121−Nへアクセスのルーティングを行う。
RAIDカード211は、複数の記憶装置を用いて、ストライピングやミラーリング等のRAID処理を行う。RAIDカード211は、HDD212−1、212−2と接続する。RAIDカード211は、HDD212−1、212−2を用いて、ストライピングやミラーリング等のRAID処理を行う。尚、以下の説明または図面において、RAIDカード211は、PCIe#1と表記する場合がある。
HDD212は、データを格納する記憶装置である。
LANカード221は、ネットワークと接続して通信を行うインターフェースカードである。LANカード221は、LAN等のネットワークと接続する。尚、以下の説明または図面において、LANカード221は、PCIe#2と表記する場合がある。
USBカード231は、USBを用いて周辺機器と接続するインターフェースカードである。USBカード231は、テープ装置232と接続する。尚、以下の説明または図面において、USBカード231は、PCIe#3と表記する場合がある。
テープ装置232は、データを格納する記憶装置である。
グラフィックカード241は、ディスプレイ装置242と接続し、ディスプレイ装置242に映像信号を出力する。尚、以下の説明または図面において、グラフィックカード241は、PCIe#4と表記する場合がある。
ディスプレイ装置242は、グラフィックカード241から入力される映像信号を表示する装置である。
M/B I/O制御部251は、M/B I/O制御部251と接続する装置の制御を行う。尚、以下の説明または図面において、M/B I/O制御部251は、PCIe#5と表記する場合がある。
M/B I/O制御部251は、入力装置252、タイマ253、ROM254、およびNVM255と接続する。
入力装置252は、情報処理装置101への入力を行う装置である。入力装置252は、例えば、マウスやキーボード等である。
タイマ253は、時間をカウントする。
ROM254は、データを格納する記憶装置である。尚、以下の説明または図面において、ROM254はROM#1と表記する場合がある。
NVM255は、データを格納する不揮発性の記憶装置である。尚、以下の説明または図面において、NVM255はNVM#1と表記する場合がある。
情報処理装置101において、パフォーマンスの最適化は、CPUとメモリ間のアクセス、各I/Oデバイスからのメモリへのデータ転送の競合を少なくすることが重要になる。このため、実施の形態の情報処理装置101は、データ転送時にバスアクセス競合が発生する各I/Oデバイスからのメモリ領域への独立バスによるダイレクトアクセスパスを用意し、実際にCPUが使用するメモリアドレス領域から、CPU/メモリ間、各I/Oデバイス/メモリ間の同時アクセスが可能な領域となる様に、アクセス監視部161が、MPX部151を通してCPU111のメモリアクセス空間から物理アドレスメモリ空間へのマッピングを変更し、独立したI/Oデバイス/メモリ間のアクセスルートを使用し、CPU、I/Oデバイスがホストバスを占有中でも、各I/Oデバイスがメモリへのアクセスを同時に可能としてバスのアクセス競合によるパファーマンスの低下を抑止する。
次に各I/O装置のメモリ空間の割り当ての最適化を行ったときにメモリ空間の配置について複数の例を述べる。
図2Aは、メモリ最適化時のメモリ空間テーブルの第1の例である。
CPUが使用するメモリ空間をメモリ空間A、表示カードが使用するメモリ空間をメモリ空間A、RAIDカードが使用するメモリ空間をメモリ空間C、LANカードが使用するメモリ空間をメモリ空間Dとする。
図2Aのメモリ空間テーブルには、使用用途、論理空間、および物理空間が対応付けられて記載されている。
使用用途は、メモリ空間の使用用途が記載される。すなわち、どの装置が使用するメモリ空間であるかを示す。
論理空間は、メモリ空間の論理アドレスの範囲を示す。
物理空間は、メモリ空間の物理アドレスの範囲を示す。
初期状態においては、論理アドレスに対して同一の値の物理アドレスが割り当てられているとする。すなわち、初期状態においては、メモリ空間AおよびBは、メモリ#1の空間に割り当てられ、メモリ空間CおよびDは、メモリ#2の空間に割り当てられている。
図2A、Bにおいては、同一のメモリ121−Nの空間に複数のメモリ空間が割り当てられないように、メモリ空間の割り当てを変更する。変更したメモリ空間の割り当てを表すと、図2Aに示されるような、メモリ空間テーブルとなる。
メモリ空間Aの論理アドレスは、0-0ExxxFFFFFである。
メモリ空間Aの物理アドレスは、0-0ExxxFFFFFである。
メモリ空間Bの論理アドレスは、0Fxxx00000-0FxxxFFFFFである。
メモリ空間Bの物理アドレスは、2Fxxx00000-2FxxxFFFFFである。
メモリ空間Cの論理アドレスは、10xxx00000-10xxx3FFFFである。
メモリ空間Cの物理アドレスは、10xxx00000-10xxx3FFFFである。
メモリ空間Dの論理アドレスは、10xxx40000-10xxx7FFFFである。
メモリ空間Dの物理アドレスは、30xxx40000-30xxx7FFFFである。
図2Bは、メモリ最適化時のメモリ空間の第1の例である。
図2Aのメモリ空間テーブルに基づいてメモリ空間を表すと図2Bのようになる。
図2Bに示すように、メモリ空間Bは、メモリ#3にマッピングされ、メモリ空間Dは、メモリ#4にマッピングされている。すなわち、メモリ空間Bの物理アドレスは、0Fxxx00000-0FxxxFFFFFから2Fxxx00000-2FxxxFFFFFに変更される。
これにより、メモリ空間A、B、C、Dは、それぞれ異なるメモリ121−Nに配置される。また、アサインされた(割り当てが変更された)領域は、アサイン元とアサイン先のそれぞれが互い違い(テレコ)領域となる。
次にメモリミラーを用いた状態からメモリミラーを停止してメモリ最適化を行った場合のメモリマッピングを示す。
情報処理装置101は、メモリミラーの機能を有する。メモリミラーは、複数のメモリに同一の論理アドレスを割り当て、複数のメモリに同一のデータを書き込む機能である。
実施の形態の情報処理装置において、メモリミラー時には、メモリ#1と#3、メモリ#2と#4は、同一のアドレスマッピングとなり、メモリ#1と#3、メモリ#2と#4には同一のデータが書き込まれる。メモリミラー時には、メモリ#3の空間の論理アドレスの範囲は、メモリ#1と同じ0〜0XXFFFFFであり、メモリ#4の空間の論理アドレスの範囲は、メモリ#2と同じ1XX00000〜1XXFFFFFである。メモリミラー無効時には、メモリ#3の空間の論理アドレスの範囲は、2XX00000〜2XXFFFFFであり、メモリ#4の空間の論理アドレスの範囲は、3XX00000〜3XXFFFFFである。
図3Aは、メモリ最適化時のメモリ空間テーブルの第2の例である。
図3Aのメモリ最適化時のメモリ空間テーブルは、図2Aのメモリ空間テーブルと同じため、説明は省略する。
図3Bは、メモリ最適化時のメモリ空間の第2の例である。
ここでは、メモリミラーを用いた状態からメモリミラーを停止してマッピングの変更を行う。
図3A、Bにおいては、同一のメモリ121−Nの空間に複数のメモリ空間が割り当てられないように、メモリ空間の割り当てを変更する。また、割り当てを変更するメモリ空間に対して、メモリミラー時に同一のデータを書き込んでいた2つの領域の一方を割り当てるようにする。変更したメモリの割り当てを表すと、図3Bに示されるような、メモリ空間テーブルとなる。
図3Aのメモリ空間テーブルに基づいてメモリ空間を表すと図3Bのようになる。
メモリ空間Bは、メモリミラー時には、メモリ#1と#3に同一のデータを書き込んでいた。メモリ空間Bの割り当ての変更において、メモリミラー時にメモリ空間Bのデータを書き込んでいたメモリ#3の領域を、メモリ空間Bに割り当てる。同様に、メモリ空間Dは、メモリ#4にマッピングされている。
これにより、メモリ空間A、B、C、Dは、それぞれ異なるメモリに配置される。
次に、統計情報に基づいたメモリ最適化を行った場合のメモリマッピングを示す。
図4Aは、メモリ最適化時のメモリ空間テーブルの第3の例である。
CPUが使用するメモリ空間をメモリ空間A、表示カードが使用するメモリ空間をメモリ空間A、RAIDカードが使用するメモリ空間をメモリ空間C、LANカードが使用するメモリ空間をメモリ空間D、USBカードが使用するメモリ空間をEとする。
図4Aのメモリ空間テーブルには、使用用途、論理空間、物理空間、および統計情報が対応付けられて記載されている。
使用用途は、メモリ空間の使用用途が記載される。すなわち、どの装置が使用するメモリ空間であるかを示す。
論理空間は、メモリ空間の論理アドレスの範囲を示す。
物理空間は、メモリ空間の物理アドレスの範囲を示す。
統計情報は、メモリ空間を使用する装置のメモリへのアクセスに関する統計情報である。
初期状態においては、論理アドレスに対して同一の値の物理アドレスが割り当てられているとする。すなわち、初期状態においては、メモリ空間AおよびBは、メモリ#1の空間に割り当てられ、メモリ空間C、D、およびEは、メモリ#2の空間に割り当てられている。
図4A、Bにおいては、統計情報に用いて、メモリ空間の割り当てを変更する。すると、変更したメモリ空間の割り当てを表すと、図4Aに示されるような、メモリ空間テーブルとなる。
メモリ空間Aの論理アドレスは、0-0ExxxFFFFFである。
メモリ空間Aの物理アドレスは、0-0ExxxFFFFFである。
メモリ空間Bの論理アドレスは、0Fxxx00000-0FxxxFFFFFである。
メモリ空間Bの物理アドレスは、2Fxxx00000-2FxxxFFFFFである。
メモリ空間Cの論理アドレスは、10xxx00000-10xxx3FFFFである。
メモリ空間Cの物理アドレスは、10xxx00000-10xxx3FFFFである。
メモリ空間Dの論理アドレスは、10xxx40000-10xxx7FFFFである。
メモリ空間Dの物理アドレスは、30xxx40000-30xxx7FFFFである。
メモリ空間Eの論理アドレスは、10xxx80000-10xxxDFFFFである。
メモリ空間Eの物理アドレスは、10xxx80000-10xxxDFFFFである。
ここで、統計情報の基づいた論理空間と物理空間のマッピング(メモリの割り当て)の算出方法について説明する。
ここでは、図4Aに示す統計情報に基づいてマッピングを算出する。
CPU111はアクセス頻度=40、平均占有率=20%、平均転送速度=3Gである。グラフィック(表示)カード241は、アクセス頻度=30、平均占有率=20%、平均転送速度=1Gである。RAIDカード211は、アクセス頻度=30、平均占有率=20%、平均転送速度=0.5Gである。LANカード221は、アクセス頻度=30、平均占有率=30%、平均転送速度=2Gである。USBカード231は、アクセス頻度=10、平均占有率=10%、平均転送速度=0.3Gである。
平均占有率は、メモリ空間を使用する装置がバスを使用している時間の割合である。
アクセス頻度は、アクセスのバラツキの指標として、単位時間当たりの占有率の変動を表す。アクセス頻度=一秒当たりの占有率の変動率(100*(最大占有率-最低占有率))/最大占有率の時間当たりの平均とする。
平均転送速度は、メモリ空間を使用する装置のデータの転送速度の平均である。
マッピングの算出の手順は以下の通りである。
1)平均バス占有率の高い順にPCIeカード(表示カード、RAIDカード、LANカード、USBカード)を並べる。尚、CPUについては、以下の処理で常に最後に置く。
図4Aに示す統計情報の場合、平均バス占有率の高い順に並べると、LANカード(30%),RAIDカード(20%),表示カード (20%),USBカード (10%),CPU(20%)となる。
2) 平均バス占有率にアクセス頻度を乗算し、算出された値の高い順にPCIeカードを並べかえる。
平均バス占有率にアクセス頻度を乗算して高い順にPCIeカードを並べかえると、LANカード=9 (=30%*30), RAIDカード=6(=20%*30), 表示カード=6(=20%*30), USBカード=1(=10%*10)、 CPU=8(=20%*40)となる。
3)更に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)となる。
4)上記結果により、同じメモリ121−Nにマッピングが必要な場合、CPUを除く同じメモリ121−Nの空間に配置する各カードの上記3)で算出された値の合計が一番少なくなる組合わせとなるように、CPUアクセス論理空間と物理空間のマッピングを算出する。また、同じメモリ121−Nには、CPU111のメモリ空間とPCIeカードのメモリ空間がマッピングされないようにする。
それにより、RAIDカードのメモリ空間CとUSBカードのメモリ空間Eが組み合わせられる。CPUと同じメモリ空間に割り当てられていたメモリ空間Bは、メモリ#3にマッピングされる。
図4Bは、メモリ最適化時のメモリ空間の第3の例である。
図4Aのメモリ空間テーブルに基づいてメモリ空間を表すと図4Bのようになる。
図4Bに示すように、メモリ空間Bは、メモリ#3にマッピングされ、メモリ空間Dは、メモリ#4にマッピングされている。メモリ空間A、C、Eのマッピングは変更されずにそれぞれメモリ#1,#2,#3にマッピングされている。
図5は、ルートテーブルの例である。
ルートテーブル192は、PCIeバススイッチ191に格納される。ルートテーブル192は、メモリの割り当て(マッピング)の情報とアクセス経路の情報が記載される。
ルートテーブル192は、項目として、Destination、Source、Device path、Turn list、およびConditionを有し、これらが対応付けられて記載されている。
Destinationは、アクセス先(送信先)の装置を示す。
Sourceは、アクセス元(送信元)の装置を示す。
Device pathは、経由するデバイスを示す。
Turn listは、PCIeバススイッチのポート毎への重みづけを示す。Device path間のTurn listの値が小さいほどルートの優先順位は高くなる。
Conditionは、経路の適用条件を示す。Conditionとして、例えば、メモリ最適化により割り当てられたCPUアクセス論理メモリ空間の領域の開始アドレスと終了アドレスが記載される。
図5のルートテーブル192は、SourceとしてPCIe#L(L=1〜5)としたときのルートテーブルである。
例えば、図2A、Bに示すようなマッピングが設定されている場合、ルートテーブル192において、Destination がメモリ#3、SourceがPCIe#4(表示カード241)のレコードのConditionには、メモリ#3に割り当てられたメモリ空間BのCPUアクセス論理メモリ空間の開始アドレス(0Fxxx00000)と終了アドレス(0FxxxFFFFF)が記載される。
PCIeバススイッチ191は、ルートテーブル192とEndpointから送られてくるパケットのヘッダー部分の宛先(アドレス)に基づいて、PCIeコントローラ171(Root Complex)の指示を受けることなくパケットの転送先を決定してパケットを転送する。
例えば、PCIeバススイッチ191は、PCIe#4(表示カード241)から受信したパケットのヘッダー部分に記載の宛先がConditionに記載された開始アドレス(0Fxxx00000)と終了アドレス(0FxxxFFFFF)の範囲に含まれていれば、Destination がメモリ#3であるので、メモリ#3に対するPCIeコントローラ#Cにパケットを転送する。
図6は、実施の形態に係るアドレス変換部、MPX部、およびPCIeコントローラ郡の詳細な構成図である。
アドレス変換部141は、NOT回路(インバータ)142、排他的論理輪(EX-OR)回路143−1、143−2、AND回路144、およびデコーダ145を有する。
NOT回路142には、メモリミラーが有効か否かを示すメモリミラー有効信号Mirror_AMが入力され、メモリミラー有効信号を反転させた信号をAND回路144に出力する。
EX-OR回路143−1には、A33_ctl_AMとA33が入力される。A33は、ホストバスアドレスの最上位のビットである。
EX-OR回路143−2には、A32_ctl_AMとA32が入力される。A32は、ホストバスアドレスの上位から2桁目のビットである。
AND回路144は、NOT回路142の出力とEX-OR回路143−1の出力の論理積を演算して、演算結果をデコーダ145に出力する。ここで、AND回路144の出力信号をA33Xと表記する。
アドレス変換部の入力とAND回路144の出力の関係は、図7に示す真理値表の通りである。
デコーダ145には、AND回路144の出力A33XとEX-OR回路143−2の出力A32Xが入力される。
デコーダ145の入出力関係は、図8に示す真理値表の通りである。
デコーダ145は、選択信号Sel#1をAND回路146−1およびOR回路147−1、選択信号Sel#2をAND回路146−2およびOR回路147−2、選択信号Sel#1をOR回路147−3、選択信号Sel#4をOR回路147−4に出力する。
AND回路146−1には、選択信号Sel#1とメモリミラー有効信号Mirror_AMが入力され、選択信号Sel#1とメモリミラー有効信号Mirror_AMの論理和が出力される。
AND回路146−2には、選択信号Sel#2とメモリミラー有効信号Mirror_AMが入力され、選択信号Sel#2とメモリミラー有効信号Mirror_AMの論理和が出力される。
OR回路147−1には、選択信号Sel#1と直接アクセス選択信号(MPX制御信号)MG#1_AMが入力され、選択信号Sel#1と直接アクセス選択信号MG#1_AMの論理和がチップイネーブル(CE)としてメモリ121−1に出力される。
OR回路147−2には、選択信号Sel#2と直接アクセス選択信号MG#2_AMが入力され、選択信号Sel#2と直接アクセス選択信号MG#2_AMの論理和がチップイネーブル(CE)としてメモリ121−2に出力される。
OR回路147−3には、選択信号Sel#3、直接アクセス選択信号MG#3_AM、およびAND回路146−1の出力が入力され、選択信号Sel#3、直接アクセス選択信号MG#3_AM、およびAND回路146−1の出力の論理和がチップイネーブル(CE)としてメモリ121−3に出力される。
OR回路147−4には、選択信号Sel#4、直接アクセス選択信号MG#4_AM、およびAND回路146−2の出力が入力され、選択信号Sel#4、直接アクセス選択信号MG#4_AM、およびAND回路146−2の出力の論理和がチップイネーブル(CE)としてメモリ121−4に出力される。
メモリ121−Nは、それぞれ入力されるチップイネーブルがオンの場合、データの読み出しまたは書き込みを行う。
MPX部151は、スイッチ152−N(N=1〜4)を有する。
スイッチ152−Nは、メモリ121−Nと接続するメモリバスとホストバスの間に配置されている。
スイッチ152−Nは、直接アクセス選択信号MG#N_AMに応じて、ホストバスとメモリ121−N間のデータの導通を制御する。
スイッチ152−Nがオンの場合、スイッチ152−Nは、ホストバスデータD00-D63をメモリ121−Nに転送し、またメモリ121−NからのメモリデータMD00-63#Nをホストバスに転送する。
MPX部151には、CPU111からホストバスリードライト信号R/XWが入力される。
MPX部151の入出力関係は、図9に示す真理値表の通りである。図9において、Xはdon’t care、Zはハイインピーダンスを示す。
PCIeコントローラ郡181は、PCIeコントローラ182−M(M=A〜D)を有する。尚、以下の図面または説明において、PCIeコントローラ182−MはPCI#Mと表記する場合がある。
PCIeコントローラ182−A〜182−Dは、それぞれ独立したメモリバスでメモリ121−1〜121−4と接続する。
PCIeコントローラ182−Mは、メモリ121−Nへのアクセスを行う場合、アクセス監視部161にメモリアクセス要求REQ#Mを送信する。PCIeコントローラ182−Mは、アクセス許可信号ACK#Mを受信したらメモリ121−Nへのアクセスを行う。
PCIeコントローラ182−A〜182−Dは、メモリ121−1〜121−4にそれぞれ書き込みデータPCIe HOST data#1〜#4を出力する。PCIeコントローラ182−A〜182−Dは、それぞれMAC131に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は、読み出しまたは書き込みを行うメモリ121−Nのアドレスである。PCIeメモリアクセス信号PCIe Host XMEMA#1〜#4は、PCIeコントローラ182−A〜182−Dからメモリ121−Nへのメモリアクセスを示す。PCIeリードライト信号PCIe Host R/XW#1〜#4からPCIeコントローラ182−A〜182−Dからメモリ121−Nへの読み出しまたは書き込みを示す。
MAC131には、ホストバスアドレスA00-A33、ホストバスメモリアクセス信号XMEMA、ホストバスリードライト信号R/XWがCPU111から入力される。MAC131には、PCIeコントローラ182−A〜182−DからPCIeメモリアドレスPCIe Host Address#1〜#4、PCIeメモリアクセス信号PCIe Host XMEMA#1〜#4、PCIeリードライト信号PCIe Host R/XW#1〜#4が入力される。MAC131には、アクセス監視部161から直接アクセス選択信号MG#N_AMが入力される。MAC131は、これら入力された信号に基づいて、メモリアドレスMA00-31#Nおよびメモリ制御信号MACRWO:1#Nをメモリ121−Nに出力する。尚、MAC131の構成の詳細については後述する。
従来の情報処理装置では、PCIe#1からメモリ121−Nへのアクセスでは、PCIe#1(RAIDカード)-PCIe#5(PCIe バススイッチ)-PCIe#0(Root Complex)経由でのメモリ121−Nへのアクセスとなる。
実施の形態の情報処理装置では、各PCIeコントローラ182−MのPCIコンフィグレーションレジスタにPCIe#AとしてMem#1のアクセス空間、PCIe#BをMem#2のアクセス空間、PCIe#CをMem#3のアクセス空間、PCIe#DをMem#4のアクセス空間として、各コントローラのコンフィグレーションレジスタにこの空間を設定する。
I/O装置からのダイレクトアクセスを行う場合、PCIeバススイッチ191は、 Endpointから送られてくるパケットのヘッダ部分のあて先を参照し、ルートテーブルに基づいて、PCIeコントローラ171(Root Complex)の指示を受けることなく、I/O装置の割り当てられたメモリ領域を含むメモリ121−Mに対するPCIeコントローラ#Mにパケットを転送する。本実施の形態では、4つのEndpoint to Endpointアクセスパスをもっているため、最大で4メモリに同時アクセスが可能となる。尚、アクセスパスを追加する事で容易に同時アクセスパスを確保可能である。
図10は、実施の形態に係るMACの詳細な構成図である。
MAC131は、OR回路132、133、134−N、135−N、およびセレクタ136−Nを備える。
OR回路132には、ホストバスリードライト信号R/XWとホストバスメモリアクセス信号XMEMAが入力される。
OR回路133には、ホストバスリードライト信号R/XWの反転値とホストバスメモリアクセス信号XMEMAが入力される。
OR回路134−Nには、PCIeリードライト信号PCIe HOST R/XW#NとPCIeメモリアクセス信号PCIe HOST XMEMA#Nが入力される。
OR回路135−Nには、PCIeリードライト信号PCIe HOST R/XW#N反転値とPCIeメモリアクセス信号PCIe HOST XMEMA#Nが入力される。
セレクタ136−Nには、OR回路133、133の出力、ホストバスアドレスA00-A33が入力される。OR回路133、133の出力、ホストバスアドレスA00-A33を入力A=(A1,A2,A3)とする。
セレクタ136−Nには、OR回路134−N、135−Nの出力、らPCIeメモリアドレスPCIe HOST A00-A31#Nが入力される。OR回路134−N、135−Nの出力、PCIeメモリアドレスPCIe HOST A00-A31#Nを入力B=(B1,B2,B3)とする。
セレクタ136−Nには、直接アクセス選択信号MG#N_AMが入力される。直接アクセス選択信号MG#N_AMを入力A/Bとする。
セレクタ136−Nは、直接アクセス選択信号MG#N_AMに応じて、入力AまたはBのいずれかを選択し、出力X=(X1、X2、X3)として出力する。
図11は、セレクタの真理値表である。
図11の真理値表に示すように、入力A/B(直接アクセス選択信号MG#i_AM)が0の場合、セレクタ136−Nは、入力Bを選択および出力し、入力A/B(直接アクセス選択信号MG#N_AM)が1の場合、入力Aを選択および出力する。
図12は、実施の形態に係るアクセス監視部の構成図である。
アクセス監視部161は、CPU162、PCIe−BUSアクセストレース部163、アドレス変換制御部164、HOST−BUSアクセストレース/DMA(Direct Memory Access)制御部165、NVM166、ROM167、メモリ168、PCIe制御部169、およびタイマ170を備える。
CPU162は、各種処理を行う処理装置である。CPU162は、ROM167に格納されている各種プログラムを読み出して実行する。
PCIe−BUSアクセストレース部163は、PCIeコントローラのアクセスをトレースして記録する。
アドレス変換制御部164は、アドレスの変換を行う。
HOST−BUSアクセストレース/DMA制御部165は、PCU111とメモリ間のアクセスのトレースを行う。
NVM166は、データを格納する不揮発性の記憶装置である。尚、以下の説明または図面において、NVM166はNVM#Aと表記する場合がある。NVM166は、設定情報テーブルを格納する。
ROM167は、データを格納する記憶装置である。尚、以下の説明または図面において、ROM167はROM#Aと表記する場合がある。ROM167は、拡張ROM-BIOSプログラム、初期化処理プログラム、およびメインプログラムを格納する。
拡張ROM-BIOSプログラムは、システムBIOSからの拡張ROMSCA時の応答、NVM166の設定、および処理内容の認識等の処理を行うプログラムである。
初期化処理プログラムは、CPU162の割り込みベクタ設定と周辺部I/O(タイマー、レジスタ)の初期化処理を行うプログラムである。
メインプログラムは、下記の処理を行うプログラムである。
・CPU111が設定した全てのPCIe空間のI/Oアドレスマッピングとメモリアドレスマッピングをアクセス監視部161のCPU162から全Config空間にアクセスして、PCIeカード構成情報等をNVM166内に格納されている設定情報に反映する。
・HOST-BUSアクセストレース/DMA制御部165、PCIe-BUSアクセストレース部163の開始制御。
・トレースデータの解析、統計計算、および統計情報のNVM166への格納。
・論理アドレスと物理アドレスのマッピングを示すメモリ空間テーブルの作成。
・アドレス変換制御部のレジスタへの書き込み。
・PCIeバススイッチのルーティングテーブルの設定。
・CPU111へのリブート要求。
メモリ168は、データを格納する記憶装置である。メモリ168は、例えば、RAMである。尚、以下の説明または図面において、メモリ168はメモリ#Aと表記する場合がある。
PCIe制御部169は、PCIeバススイッチ191と接続し、PCIeバススイッチ191とのデータの送受信を行う。
タイマ170は、時間をカウントする。
図13A、13Bは、設定情報テーブルの例である。
設定情報テーブルには、下記の示すような項目と情報が記載される。
メモリの搭載情報:情報処理装置101に搭載される各メモリの物理アドレスと容量が記載される。
PCIeの搭載情報:情報処理装置101に搭載されるPCIeデバイスが記載される。
メモリミラーモード:メモリミラーを行うか否かを示す。「有効」はメモリミラーを実施し、「無効」はメモリミラーを実施しない。
メモリ領域最適化:メモリ領域の最適化(マッピングの変更)を行うか否かを示す。「有効」は最適化を実施し、「無効」は最適化を実施しない。
最適化タイミング:最適化を行うタイミングを示す。
最適化計測開始時間:計測を開始する時間を示す。
計測時間:計測の期間を示す。
リブート時の最適化:リブート時に最適化を行うか否かを示す。「有効」はリブート時に最適化を実施し、「無効」はリブート時に最適化を実施しない。
定期的最適化:定期的に最適化を行うか否かを示す。「有効」は定期的に最適化を実施し、「無効」は定期的に最適化を実施しない。
マッピング情報:各メモリに対してマッピングの変更により割り当てられたメモリ空間の開始アドレスと終了アドレスが記載される。例えば、図2A、Bに示されたマッピングを行った場合、メモリ#3用変換の開始アドレス情報にはメモリ空間Bの先頭番地の論理アドレス(0Fxxx00000)が記載され、終了アドレス情報には、メモリ空間Bの終了番地の論理アドレス(0FxxxFFFFF)記載される。また、メモリ#4用変換の開始アドレス情報にはメモリ空間Dの先頭番地の論理アドレス(10xxx40000)が記載され、終了アドレス情報には、メモリ空間Dの終了番地の論理アドレス(10xxx07FFFF)記載される。
PCIeバススイッチルーティング情報:メモリ121−NとPCIeデバイス間の経路とメモリに対してマッピングの変更により割り当てられたメモリ空間の開始アドレスと終了アドレスが記載される。
統計情報:ホストバスの物理CPUアドレス、トータル転送容量、平均バス占有率、アクセス頻度が記載される。またPCIe#0〜Dのそれぞれの物理DMAアドレス、トータル転送容量、平均バス占有率、アクセス頻度が記載される。
ログ:アクセス時間、バスのオーナ(BUSオーナ)、アクセスの種類(i/o/Memory)、アクセスの種類(Read/Write)、アクセスの経路(PCIe-root/RC(Root Complex)-root)、転送したデータサイズ(転送BYTE)、およびバスの占有時間(占有時間)が記載される。
図14は、PCIe−BUSアクセストレース部の処理を示す図である。
PCIe−BUSアクセストレース部163は、アクセス監視部161内のD−FF(Delay Flip-Flop)(不図示)でPCIeコントローラ182−N、PCIe#0のバストレース対象信号をシリアルパラレル変換後にラッチする(ステップS601)。
バストレース対象信号は下記の通りである。
・イベント発生時間
・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:アクセス許可信号
PCIe−BUSアクセストレース部163は、ラッチしたデータをFIFO経由でメモリ168に書き込む(ステップS602)。
CPU162は、メモリ168に格納したデータをソートし統計情報を算出する(ステップS603)。
CPU162は、メモリ168から保存データをNVM166に記録する(ステップS604)。
図15は、HOST−BUSアクセストレース/DMA制御部の処理を示す図である。
HOST−BUSアクセストレース/DMA制御部165は、アクセス監視部161内のD−FF(不図示)バストレース対象信号をラッチする(ステップS601)。
バストレース対象信号は下記の通りである。
・イベント発生時間
・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バス占有開始信号
HOST−BUSアクセストレース/DMA制御部165は、ラッチしたデータをFIFO経由でメモリ168に書き込む(ステップS612)。
CPU162は、メモリ168に格納したデータをソートし統計情報を算出する(ステップS613)。
CPU162は、メモリ168から保存データをNVM166に記録する(ステップS614)。
図16は、アドレス変換制御部の構成を示す図である。
アドレス変換制御部164は、ミラーレジスタ301、ベースアドレスレジスタ302−N、 ベースアドレスレジスタ303−N、メモリ最適化有効レジスタ305、比較器311−N、AND回路312−1、312−2、314−N、OR回路313−1、313−2、315−N、およびデコーダ321を有する。
ミラーレジスタ301、ベースアドレスレジスタ302−N、ベースアドレスレジスタ303−N、およびメモリ最適化有効レジスタ305には、内部バスデータD00-31が入力される。
ミラーレジスタ301には、メモリミラーを行うか否かを示す情報を格納する。メモリミラーを行う場合、ミラーレジスタ301が格納する値は1である。ミラーレジスタ301に、書き込み制御信号Mirror Reg WRが入力される。ミラーレジスタ301は、書き込み制御信号Mirror Reg WRに応じて、内部バスデータD00-31をミラーレジスタ301に書き込む。
ベースアドレスレジスタ302−Nは、メモリスワップを行う領域の先頭番地のA33〜A2を格納する。尚、A33〜A2は、A33〜A0で示される34ビットのメモリアドレスのうちの最上位から32ビットまでのアドレスデータである。ベースアドレスレジスタ302−Nには、書き込み制御信号Base Add#Na Reg WRが入力される。ベースアドレスレジスタ302−Nは、書き込み制御信号Base Add#Na Reg WRに応じて、内部バスデータD00-31をベースアドレスレジスタ302−Nに書き込む。
ベースアドレスレジスタ303−Nは、メモリスワップを行う領域の最終番地のA33〜A2を格納する。ベースアドレスレジスタ303−Nには、書き込み制御信号Base Add#Nb Reg WRが入力される。ベースアドレスレジスタ303−Nは、書き込み制御信号Base Add#Nb Reg WRに応じて、内部バスデータD00-31をベースアドレスレジスタ303−Nに書き込む。
尚、以下の説明および図面において、ベースアドレスレジスタ302−Nは、ベースアドレスレジスタ#Na、ベースアドレスレジスタ303−Nは、ベースアドレスレジスタ#Nbと表示する場合がある。
メモリ最適化有効レジスタ305には、メモリの最適化を行うか否かを示す情報を格納する。メモリの最適化を行う場合、メモリ最適化有効レジスタ305が格納する値は1である。メモリ最適化有効レジスタ305には、書き込み制御信号Optimized Mem Reg WRが入力される。メモリ最適化有効レジスタ305は、書き込み制御信号Optimized Mem Reg WRに応じて、内部バスデータD00-31をメモリ最適化有効レジスタ305に書き込む。
比較器311−Nには、ベースアドレスレジスタ302−N、ベースアドレスレジスタ303−N、およびHOST BUS_A33_02が入力され、ベースアドレスレジスタ302−N、ベースアドレスレジスタ303−N、およびHOST BUS_A33_02に基づく比較結果を出力する。ベースアドレスレジスタ302−Nからの入力をCH1、ベースアドレスレジスタ303−Nからの入力をCL1、HOST BUS_A33_02をSl1とする。また、比較器311−Nの出力をCoとする。
比較器311−Nの入出力関係は、図17に示す真理値表の通りである。
SL1<CH1のとき、出力Co=0となる。
SL1>CL1のとき、出力Co=0となる。
CH1≦SL1≦CL1のとき、出力Co=1となる。
AND回路312−1には、比較器311−1の出力とベースアドレスレジスタ302−1の出力が入力され、比較器311−1の出力とベースアドレスレジスタ302−1の出力の論理積が出力される。
AND回路312−2には、比較器311−2の出力とベースアドレスレジスタ302−1の出力が入力され、比較器311−2の出力とベースアドレスレジスタ302−1の出力の論理積が出力される。
OR回路313−1には、AND回路312−1の出力と比較器311−3の出力が入力され、AND回路312−1の出力と比較器311−3の出力の論理和が出力される。
OR回路313−2には、AND回路312−2の出力と比較器311−4の出力が入力され、AND回路312−2の出力と比較器311−4の出力の論理和が出力される。
AND回路314−Nには、XMEMAおよび比較器311−Nの出力が入力され、XMEMAと比較器311−Nの出力の論理積が出力される。
OR回路315−Nには、AND回路314−Nの出力とメモリ最適化有効レジスタ305の反転値が入力され、AND回路314−Nの出力とメモリ最適化有効レジスタ305の反転値の論理和が出力される。OR回路315−Nの出力は、MG#N_AMと表記する。
エンコーダ321には、OR回路315−Nの出力MG#N_AMが入力される。エンコーダ321は、入力MG#N_AMに基づいて、出力信号としてA33_ctl_AM、A32_ctl_AMを出力する。
エンコーダ321の入出力関係は、図18に示す真理値表の通りである。
(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)となる。
ここで、図2A、2Bに示す第1の例のメモリマッピングを実施する場合のアドレス変換制御部の設定について述べる。
グラフィックカード241のメモリ空間Bは、メモリ#1からメモリ#3へのアクセスエリアのスワップを行う。
グラフィックカード241の論理アドレスメモリ空間のメモリエリアの先頭番地のA33〜A2をベースアドレスレジスタ302−3、最終番地のA33〜A2をベースアドレスレジスタ303−3にセットする。
そして、グラフィックカード241のスワップ先メモリエリアの先頭番地のA33〜A2をベースアドレスレジスタ302−1,最終番地のA33〜A2をベースアドレスレジスタ303−1にセットする。
RAIDカード211のメモリ空間Cはメモリ#2のまま変更なしである。
LANカード221のメモリ空間Dは、メモリ#2からメモリ#4へのアクセスエリアのスワップを行う。
LANカード221のメモリ空間Dの論理アドレスメモリ空間の先頭番地のA33〜A2をベースアドレスレジスタ302−4、最終番地のA33〜A2をベースアドレスレジスタ303−4にセットする。
LANカード221のスワップ先メモリエリアの先頭番地のA33〜A2をベースアドレスレジスタ302−2、最終番地のA33〜A2をベースアドレスレジスタ303−2にセットする。
これにより、CPU#1が認識するメモリマッピングは、図2A、2Bに示す CPUアクセス論理メモリ空間として認識。メモリ空間へ物理的なメモリアクセスは、物理メモリ上のメモリ空間となる様にMPX部151を設定でき、競合アクセスがなくなり最適化が可能となる。
図19は、バスアービトレーション制御を示す図である。
CPU#1がPCIeコントローラ182−Mにアサインされたメモリにアクセスする場合、アクセス競合が発生する。
このため、アクセスの優先制御が必要となる。CPU#1がMem#1〜4をアクセスしている場合、PCIeコントローラ182−Mからのメモリ#1〜4まで中で同じメモリ番号をアクセスした場合、アクセス監視部161のHOST−BUSアクセストレース/DMA制御部165により同時アクセスを抑制する。
同様にPCIeコントローラ182−Mがメモリ#1〜4をアクセスしている場合、CPU#1がメモリ#1〜4まで中で同じメモリ番号をアクセスした場合、アクセス監視部によりアクセスを抑制する。
このため、HOST−BUSアクセストレース/DMA制御部165は、CPU#1からのアクセスを監視し、CPU#1がアクセスしている場合は、Host-busの状態を監視し、PCIeコントローラ182−Mから同じメモリ番号にアクセスが発生した場合は、CPU#1のアクセスが完了する迄アクセスを延伸し、同時にHost-bus占有要求信号H DREQをCPU#1に出力し、CPU#1は、バスを解放できる状態になった場合、占有許可信号H DACKを出力し、PCIeコントローラ182−Mが、対象のメモリ空間にアクセスする。アクセスが完了した時点でH DREQの出力を停止する。
また、PCIeコントローラ182−Mがメモリ#1〜4をアクセスしている場合、CPU#1がメモリ#1〜4まで中で同じメモリ番号をアクセスした場合は、アクセスを監視部がCPU#1に対しH HALT信号により、CPU#1のアクセスを一時ホールド状態にして、PCIeコントローラ182−Mのアクセスが完了した時点で停止信号H_HALTを解除して、CPU#1のアクセスを再開する。
図19の下部は、バスアービトレーション制御の真理値表を示す。
同一のメモリに対して、CPU#1のアクセス無し、PCIeコントローラのアクセス無しのとき、H_DREQは無効(=0)、H_DACKは無効(=0),H_HALTは無効(=0)となる。
同一のメモリに対して、CPU#1のアクセス有り、PCIeコントローラのアクセス無しのとき、H_DREQは無効(=0)、H_DACKは無効(=0),H_HALTは無効(=0)となる。
同一のメモリに対して、CPU#1のアクセス無し、PCIeコントローラのアクセス有りのとき、H_DREQは無効(=0)、H_DACKは無効(=0),H_HALTは無効(=0)となる。
同一のメモリに対して、CPU#1はアクセス中、PCIeコントローラのアクセス要求有りのとき、H_DREQはアサート(=1)され、CPU#1のアクセス終了後にH_DACKはアサート(=1)される。なお、H_HALTは無効(=0)である。
同一のメモリに対して、PCIeコントローラはアクセス中、CPU#1のアクセス要求有りのときH_DREQは無効(=0)、H_DACKは無効(=0),H_HALTはアサート(=1)となる。
図20A〜Fは、実施の形態に係るバス制御方法のフローチャートである。
ステップS501において、CPU111とCPU162に電源投入リセット又は再起動がかかり、電源投入時又は再起動時にメインCPU111とアクセス監視部内のCPU162が起動し、CPU111はROM#1、CPU162はROM#Aのそれぞれ格納されているプログラムを読み出して実行する(CPU111/CPU162初期化処理)。
以下、ステップS502〜S514とステップS521〜S538が並列に実行される。
ステップS502において、CPU111は、ROM#1からシステムBIOSを読み出して実行する。これにより、CPU111は、自己診断を行い、ハードウェア構成認識する。CPU111は、PCIeのConfiguration初期化処理(I/Oアドレスマッピングとメモリアドレスマッピングを実施)を実施する。
CPU111は、PCIe上に搭載された各カードの拡張ROMBIOSを実行する。アクセス監視部161のROM167に格納された拡張ROMBIOSにより、NVM166内に格納されている設定情報を確認し、データが設定されていない場合、設定情報のデータ設定未設定情報を画面上に表示後、特定のキー入力待ちとする。
CPU111は、メモリミラーモードの有効/無効、メモリ領域最適化の有効/無効 最適化タイミング:最適化をシステムに反映にする時間、最適化計測開始時間:最適化の計測を開始する時間、Reboot時の度に最適化反映の有効無効、定期的な時間による最適化の有効/無効をNVM166に反映し、拡張ROMBIOSが終了したことをCPU162に通知する。
ステップS503において、CPU111は、ブートデバイスからOSのブートプログラムを起動する。
ステップS504において、CPU111は、OSによるメモリ、I/O資源の獲得を行う。
ステップS505において、CPU111は、各I/Oドライバ、サービスを起動する。
ステップS506において、CPU111は、情報処理装置101にインストールされている各アプリケーションを起動する。
ステップS507において、システム動作による各I/OによるDMAが開始する。
ステップS508において、CPU111は、定期的にアクセス監視部161内のNVM166から各PCIe#0〜DのDMA使用アドレス、total転送容量、平均転送レート、平均BUS占有率を読み出し、システムイベントログに記憶する。
ステップS509において、CPU111は、メモリ再配置が発生した場合、システムイベントログに記憶する。
ステップS510において、CPU111は、CPU162から、システム再起動要求があるか判定する。システム再起動要求がある場合、制御はS511に進み、システム再起動要求がない場合、制御はステップS513に進む。
ステップS511において、CPU111は、システムリブート開始をCPU162に通知する。
ステップS512において、CPU111は、システム再起動を実施する。
ステップS513において、CPU111は、システム運用停止まで継続運用する。
ステップS514において、CPU111は、業務終了時、シャットダウン指示をする。
ステップS521において、CPU162は、ROM167に格納されているプログラムを読み出して実行し、アクセス監視部の自己診断、ハードウェア構成認識、及び、起動前にNVM#A内に格納されている設定情報テーブルの内容を確認する。
ステップS522において、CPU162は、設定情報(図13A、B)が設定済みか否か判定する。設定情報が設定済みの場合、制御はステップS523に進み、設定済みでない場合、制御はステップS527に進む。
ステップS523において、CPU162は、設定情報を参照し、リブート時の最適化が有効であるか否か判定する。
ステップS524において、CPU162は、リブート時の最適化が有効の場合、アドレス変換制御部164の各レジスタとPCIeバススイッチ191のルートテーブルを最適値に変更する。
ステップS525において、CPU162は、設定情報を参照し、メモリミラーモードが有効か否か判定する。メモリミラーモードが有効の場合、制御はステップS526に進み、メモリミラーモードが無効の場合、制御はステップS527に進む。
ステップS526において、CPU162は、アドレス変換制御部164のMirrorレジスタ301によりメモリミラー信号Mirror_AMを有効とし、情報処理装置101をメモリmirror状態とする。これにより、メモリ#1と#3、メモリ#2と#4をミラーリングとしてMAC131及びアドレス変換部141を設定し、メモリ#1+#2のメモリ空間とメモリ#3+#4のメモリ空間を同じ空間に配置し、メモリ#1の書込みがメモリ#3、メモリ#2の書込みがメモリ#4のそれぞれ同一空間となる。
ステップS527において、CPU162は、拡張ROMBIOSの処理が終了したか否か判定する。拡張ROMBIOSの処理が終了した場合、制御はステップS528に進む。拡張ROMBIOSの処理が終了したか否かは、例えば、CPU111からの通知により判定する。
ステップS528において、拡張ROMBIOS動作完了後、CPU162は、メインプログラムよりCPU111が設定した全てのPCIe空間のI/Oアドレスマッピングとメモリアドレスマッピングをアクセス監視部161のCPU162から全Config空間にアクセスし、PCIeカード構成情報等をNVM166に格納されている設定情報に反映する。
ステップS529において、CPU162は、設定情報を参照し、現時刻が最適化計測開始時間であるかチェックし、現時刻が最適化計測開始時間の場合、制御はステップS530に進む。
ステップS530において、CPU162は、最適化計測開始時間からHOST−BUSアクセストレース/DMA制御部165およびPCIe-BUSアクセストレース部163のトレースを開始させ、同時に統計情報の計算を開始する。
ステップS531において、CPU162は、設定情報を参照し、メモリ領域最適化、最適化タイミング、および計測時間が設定値に一致するか否か判定する。一致する場合、制御はステップS531に進み、一致しない場合、一致するまで待機する。
ステップS532において、統計情報によりメモリ最適化を行う場合、CPU162は、統計情報を元に各I/O装置のCPUアクセス論理空間と物理空間とのマッピングを算出する。CPUアクセス論理空間と物理空間とのマッピングの算出方法は、図4A、Bで説明した通りである。尚、統計情報によりメモリ最適化を行わない場合、ステップS532は、省略してよい。
ステップS533において、CPU162は、CPUアクセス論理メモリ空間から、物理空間にマップした時に同じメモリ121−Nに対して、アクセス競合しない様に、物理メモリ上にマップしたメモリマップを作成する。作成されたメモリマップを示すと、例えば、図2A,2Bのようになる。CPU162は、メモリミラーで動作時は図3A、3B、統計情報使用時は、図4A、4Bで示されるようなメモリマップを作成する。また、v作成したメモリマップを示すメモリ空間テーブルを作成し、NVM166に格納する。
ステップS534において、CPU162は、作成したメモリマップを元に、ベースアドレスレジスタ302−1〜302−4(各I/Oの変更されたメモリ領域の開始アドレス)とベースアドレスレジスタ303−1〜303−4(各I/Oの変更されたメモリ領域の終了アドレス)を設定する。
ステップS535において、CPU162は、設定情報を参照し、リブート時の最適化が有効か否か判定する。有効の場合、制御はステップS537に進み、有効でない場合、制御はステップS536に進む。
ステップS536において、CPU162は、NVM166の設定でメモリミラーで動作している場合は、データの整合性確保のため、メモリ#1と#3、メモリ#2と#4の空間の中での空間再割り付けを行い、PCIe バススイッチ191内のルートテーブルを変更する。
ステップS537において、CPU162は、メモリ最適化有効レジスタ305を有効にして、メモリ再配置最適化を実行後、CPU111に最適化を実行したことを通知し、運用を継続する。
ステップS538において、CPU162は、システム再起動をCPU111に指示する。
ステップS539において、CPU162は、システム運用停止までトレース/統計情報の算出を継続する。
図21は、従来のメモリバスの使用状況および実施の形態の最適後のメモリバスの使用状況を示す図である。
図21の上部は、従来のメモリバスの使用状況を示し、下部は、実施の形態の最適後のメモリバスの使用状況を示す。
従来の情報処理装置において、CPUおよびPCIeデバイスPCIe#1〜PCIe#4は、メモリアクセス時にホストバスを介して、各メモリバスから各メモリにアクセスする。そのため、バス競合により、各サイクルにおいて、ホストバスを使用できるのは、1つの装置だけである。図21の上部に示すように、サイクル#1においては、CPUがホストバスを介してメモリバス#1を使用し、サイクル#2においては、PCIeデバイスPCIe#1がホストバスを介してメモリバス#2を使用している。同様に、サイクル#3〜#6において、1台の装置だけがメモリバスを使用している。
一方、実施の形態の情報処理装置は、PCIeデバイスPCIe#1〜PCIe#4は、ホストバスを介さずに、それぞれ独立したバスを介して、各メモリバスと接続して各メモリにアクセスすることができる。図21の下部に示すように、サイクル#1において、CPUがメモリバス#1、PCIe#2がメモリバス#2、PCIe#4がメモリバス#4をそれぞれ使用している。同様に、サイクル#2〜#6において、複数の装置がそれぞれ異なるメモリバスを使用している。このように、実施の形態の情報処理装置は、同一のサイクルで異なる装置が異なるメモリバスを使用する(異なるメモリにアクセスする)ことができる。
このように、実施の形態の情報処理装置によれば、バス競合によるパフォーマンスの低下を抑止できる。
本願の概要は以下の通りである。
パフォーマンスの最適化は、CPUとメモリ間のアクセス、各I/Oデバイスからのメモリへのデータ転送の競合を少なくすることが重要になる。このため、実施の形態の情報処理装置101は、データ転送時にバスアクセス競合が発生する各I/Oデバイスからのメモリ領域への独立バスによるダイレクトアクセスパスを備え、実際にCPUが使用するメモリアドレス領域から、CPU/メモリ間、各I/Oデバイス/メモリ間の同時アクセスが可能な領域となる様に、アクセス監視部161が、MPX部151を通してCPU111のメモリアクセス空間から物理アドレスメモリ空間へのマッピングを変更し、独立したI/Oデバイス/メモリ間のアクセスルートを使用し、CPU、I/Oデバイスがホストバスを占有中でも、各I/Oデバイスがメモリへのアクセスを同時に可能としてバスのアクセス競合によるパファーマンスの低下を抑止する。
具体的には、BIOSが各デバイスに割り当てるI/O空間、メモリ空間、OSがI/Oデバイスに割り当てるI/O,メモリ領域をアクセス監視部161内のNVM162にてメモリ空間テーブルとして記憶し、各I/Oデバイス毎のアクセスの統計情報を格納する。そして、アクセス競合が高いデバイス同士が同じメモリバスにアクセスしない様にメモリのバス分離可能なアクセス範囲のメモリマッピングテーブルを作成し、OS起動後に各メモリモジュールに対して競合の少ないメモリアドレスの割り付けを行う。
アクセス監視部161は、ホストバスの監視を行い、アドレス変換制御により、実際に使用されるCPU111のメモリアクセス空間,各PCIeに配置されるI/Oが使用するDMAメモリ空間を各メモリモジュールに配置するアドレス変換制御を行う。
最適化する前の初期状態において、アクセス監視部からメモリミラー機能を有効とした場合、メモリへのアクセスは、メモリ#1とメモリ#3、メモリ#2とメモリ#4がそれぞれメモリミラー構成となり、メモリ#1の書込みはメモリ#3の同一空間、メモリ#2の書込みはメモリ#4の同一空間に書き込まれる。
アクセス監視部161は、CPU111からのホストバス経由のメモリアクセス、I/Oアクセス、I/OからのDMA、I/Oデバイスの種類、I/OからのDMA要求の頻度、BUS競合の割合、占有時間、リアルタイム性能を監視する。
監視した情報は、統計情報としてNVM166にデータを蓄積する。監視時間、またはトータルトランザクション量の閾値を設定情報に設定しておき、閾値を超えた場合、統計情報を元に図4Aのメモリ空間テーブルを作成し、競合の多い各I/Oがアクセスするメモリ空間の先頭アドレスを図16のベースアドレスレジスタ#Na、終了アドレスをベースアドレスレジスタ#Nbに設定し、NVM166上に設定情報を登録する。
また、マッピングしたアドレス空間へのダイレクトアクセスを有効にするため、PCIe バススイッチ191に対して、該当のI/OがDMA空間へのアクセスをEndpoint to Endpointアクセスとなる様にアクセス監視部161がPCIe バススイッチ内をPCIe経由で設定し、 Endpointから送られてくるパケットのヘッダー部分のあて先から、PCIeコントローラ171(Root Complex)の指示を受けることなく各メモリ121−Nに対する各PCIeコントローラ182−Nにパケットを送信する。本実施の形態では、 4つのEndpoint to Endpointアクセスパスがあるため、最大で4メモリに同時アクセスが可能となる。尚、アクセスパスを追加する事で容易に同時アクセスパスを確保可能である。
また、ホストバス経由のCPU111からのメモリアクセスと同じメモリ121−Nへのアクセス競合が発生した場合は、図19のバスアービトレーション制御により、競合判定を行い、アクセスを実行する。
実施の形態の情報処理装置によれば、実機確認によるパフォーマンスモニターや、ベンチマークソフトによるアプリケーションのバス占有率の考慮のためのアクセス抑制等の設定値変更なしで、ハード構成(メモリや、CPU種別、搭載I/O等の構成等)やアプリケーションの追加や変更、ユーザ数の増減によるトランザクション数の変動や、使用環境が異なった場合等にも、搭載アプリケーションや、運用形態(設置環境、稼働時間の集中化、リアルタイム性要求等)に基づいて、アクセス監視部によりシステム運用中のメモリバスとI/Oバスを監視し、ボトルネックとなるメモリアクセスが最適化となる様にメモリのマッピングを行い、自動的にシステムパフォーマンスの最適化できる。また、冗長配置したメモリチップと専用のバス制御機構により、動作中にダイナミックにメモリアクセスルートのマッピングが可能となる。
実施の形態の情報処理装置によれば、実機検証なしで、実運用のパフォーマンスボトルネックを検出し、運用後の再起動または、電源再投入のみで常に運用状況に合わせた最適なパフォーマンスのシステム構築が可能となる。
以上の実施の形態に関し、さらに以下の付記を開示する。
(付記1)
複数のメモリと、
前記複数のメモリとそれぞれ接続する複数のバスと、
前記複数のメモリにアクセスする入出力装置と、
前記入出力装置が使用するメモリ領域の論理アドレスと物理アドレスのマッピングを変更する処理部と、
前記入出力装置からのアクセスを前記マッピングに基づいて前記複数のバスのいずれかに転送するスイッチと、
を備える情報処理装置。
(付記2)
前記処理部は、
前記入出力装置のアクセスに関する情報を収集し、
前記収集した情報に基づいて前記マッピングを変更する
ことを特徴とする付記1記載の情報処理装置。
(付記3)
前記処理部は、前記入出力装置の前記複数のバスの占有率、前記占有率の変動、および前記入出力装置の平均転送速度に基づき、前記マッピングを変更することを特徴とする付記2記載の情報処理装置。
(付記4)
前記処理部は、前記入出力装置が使用するメモリ領域と他の入出力装置が使用する他のメモリ領域とをそれぞれ前記複数のメモリのうちの異なるメモリに割り当てるように前記マッピングを変更することを特徴とする付記1記載の情報処理装置。
(付記5)
複数のメモリと、前記複数のメモリとそれぞれ接続する複数のバスと、前記複数のメモリにアクセスする入出力装置と、を備える情報処理装置が実行するバス制御方法であって、
前記入出力装置が使用するメモリ領域の論理アドレスと物理アドレスのマッピングを変更し、
前記入出力装置からのアクセスを前記マッピングに基づいて前記複数のバスのいずれかに転送する、
処理を備えるバス制御方法。
(付記6)
前記入出力装置のアクセスに関する情報をさらに収集し、
前記変更する処理は、前記収集した情報に基づいて前記マッピングを変更する
ことを特徴とする付記5記載のバス制御方法。
(付記7)
前記変更する処理は、前記入出力装置の前記複数のバスの占有率、前記占有率の変動、および前記入出力装置の平均転送速度に基づき、前記マッピングを変更することを特徴とする付記6記載のバス制御方法。
(付記8)
前記変更する処理は、前記入出力装置が使用するメモリ領域と他の入出力装置が使用する他のメモリ領域とをそれぞれ前記複数のメモリのうちの異なるメモリに割り当てるように前記マッピングを変更することを特徴とする付記5記載のバス制御方法。
101 情報処理装置
111 CPU
121 メモリ
131 MAC
141 アドレス変換部
151 MPX部
161 アクセス監視部
162 CPU
163 PCIe−BUSアクセストレース部
164 アドレス変換制御部
165 HOST−BUSアクセストレース/DMA制御部
166 NVM
167 ROM
168 メモリ
169 PCIe制御部
170 タイマ
171 PCIeコントローラ
181 PCIeコントローラ群
191 PCIeバススイッチ
211 RAIDカード
212 HDD
221 LANカード
231 USBカード
232 テープ装置
241 グラフィックカード
242 ディスプレイ装置
251 M/B I/O制御部
252 入力装置
253 タイマ
254 ROM
255 NVM

Claims (7)

  1. 複数のメモリと、
    ホストバスを介して前記複数のメモリにアクセスする第1の処理部と、
    前記複数のメモリとそれぞれ接続する複数のアクセスバスと、
    前記複数のアクセスバスそれぞれに接続された複数のコントローラと、
    前記複数のメモリにアクセスする入出力装置と、
    前記入出力装置が使用するメモリ領域の論理アドレスと物理アドレスのマッピングを変更し、前記複数のメモリへのアクセスを監視し、前記複数のメモリへのアクセスを調停し、前記複数のメモリへのアクセスを制御する制御信号を出力する第2の処理部と、
    前記マッピングを示すマッピング情報を格納し、前記入出力装置からのアクセスを前記マッピング情報に基づいて前記複数のアクセスバスのいずれかに転送するスイッチと、
    を備え、
    前記第1の処理部は、前記制御信号に基づいて、前記ホストバスを介して前記複数のメモリのいずれかにアクセスし、
    前記複数のコントローラのそれぞれは、前記制御信号に基づいて、前記スイッチから転送された前記入出力装置からのアクセスを前記複数のメモリのうちの対応するメモリに転送することを特徴とする情報処理装置。
  2. 前記第2の処理部は、
    前記入出力装置のアクセスに関する情報を収集し、
    前記収集した情報に基づいて前記マッピングを変更する
    ことを特徴とする請求項1記載の情報処理装置。
  3. 前記第2の処理部は、前記入出力装置の前記複数のバスの占有率、前記占有率の変動、および前記入出力装置の平均転送速度に基づき、前記マッピングを変更することを特徴とする請求項2記載の情報処理装置。
  4. 前記第2の処理部は、前記入出力装置が使用するメモリ領域と他の入出力装置が使用する他のメモリ領域とをそれぞれ前記複数のメモリのうちの異なるメモリに割り当てるように前記マッピングを変更することを特徴とする請求項1記載の情報処理装置。
  5. 前記第1の処理部のアクセスの第1のアクセス先と、前記入出力装置のアクセスの第2のアクセス先が同じメモリである場合に、前記制御信号に基づいて、前記第1の処理部および前記入出力装置のいずれか一方のアクセス完了後に他方のアクセスが行われ、
    前記第1のアクセス先と前記第2のアクセス先が異なるメモリである場合に、前記制御信号に基づいて、同一のサイクルで前記第1の処理部と前記入出力装置は前記第1のアクセス先と前記第2のアクセス先にそれぞれアクセスすることを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 複数のメモリと、ホストバスを介して前記複数のメモリにアクセスする第1の処理部と、前記複数のメモリとそれぞれ接続する複数のアクセスバスと、前記複数のアクセスバスそれぞれに接続された複数のコントローラと、前記複数のメモリにアクセスする入出力装置と、第2の処理部と、スイッチと、を備える情報処理装置が実行するバス制御方法であって、
    前記第2の処理部が、前記入出力装置が使用するメモリ領域の論理アドレスと物理アドレスのマッピングを変更し、前記複数のメモリへのアクセスを監視し、前記複数のメモリへのアクセスを調停し、前記複数のメモリへのアクセスを制御する制御信号を出力し、
    前記マッピングを示すマッピング情報を格納する前記スイッチが、前記入出力装置からのアクセスを前記マッピング情報に基づいて前記複数のアクセスバスのいずれかに転送し、
    前記第1の処理部が、前記制御信号に基づいて、前記ホストバスを介して前記複数のメモリのいずれかにアクセスし、
    前記複数のコントローラのそれぞれが、前記制御信号に基づいて、前記スイッチから転送された前記入出力装置からのアクセスを前記複数のメモリのうちの対応するメモリに転送する、
    処理を備えるバス制御方法。
  7. 前記第1の処理部のアクセスの第1のアクセス先と、前記入出力装置のアクセスの第2のアクセス先が同じメモリである場合に、前記制御信号に基づいて、前記第1の処理部および前記入出力装置のいずれか一方のアクセス完了後に他方のアクセスが行われ、
    前記第1のアクセス先と前記第2のアクセス先が異なるメモリである場合に、前記制御信号に基づいて、同一のサイクルで前記第1の処理部と前記入出力装置は前記第1のアクセス先と前記第2のアクセス先にそれぞれアクセスすることを特徴とする請求項6記載のバス制御方法。
JP2014104264A 2014-05-20 2014-05-20 情報処理装置およびバス制御方法 Active JP6394062B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014104264A JP6394062B2 (ja) 2014-05-20 2014-05-20 情報処理装置およびバス制御方法
US14/656,804 US9575914B2 (en) 2014-05-20 2015-03-13 Information processing apparatus and bus control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014104264A JP6394062B2 (ja) 2014-05-20 2014-05-20 情報処理装置およびバス制御方法

Publications (2)

Publication Number Publication Date
JP2015219810A JP2015219810A (ja) 2015-12-07
JP6394062B2 true JP6394062B2 (ja) 2018-09-26

Family

ID=54556172

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014104264A Active JP6394062B2 (ja) 2014-05-20 2014-05-20 情報処理装置およびバス制御方法

Country Status (2)

Country Link
US (1) US9575914B2 (ja)
JP (1) JP6394062B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10572426B2 (en) * 2015-06-02 2020-02-25 Nxp Usa, Inc. System-level redundancy in PCI express equipment
US9804988B1 (en) * 2015-10-30 2017-10-31 Amazon Technologies, Inc. Device full memory access through standard PCI express bus
US10713203B2 (en) * 2017-02-28 2020-07-14 Cisco Technology, Inc. Dynamic partition of PCIe disk arrays based on software configuration / policy distribution
US10599600B2 (en) * 2017-06-16 2020-03-24 Western Digital Technologies, Inc. Peripheral Component Interconnect Express (PCIe) switching for multi-host computing system deployments
TWI662417B (zh) * 2018-05-31 2019-06-11 緯創資通股份有限公司 切換卡以及伺服器
EP4160422A4 (en) * 2020-07-02 2023-12-06 Huawei Technologies Co., Ltd. METHOD FOR USING AN INTERMEDIATE DEVICE FOR PROCESSING DATA, COMPUTER SYSTEM AND INTERMEDIATE DEVICE
JP2022185463A (ja) * 2021-06-02 2022-12-14 ルネサスエレクトロニクス株式会社 半導体装置
WO2022261200A1 (en) * 2021-06-09 2022-12-15 Enfabrica Corporation Multi-plane, multi-protocol memory switch fabric with configurable transport
CN115037568B (zh) * 2022-05-16 2024-05-07 中国人民解放军海军工程大学 基于io映射的工业总线传输方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3519182B2 (ja) 1995-09-05 2004-04-12 株式会社日立製作所 情報処理システムおよびバスアービタならびにバス制御方法
JP3419334B2 (ja) 1999-01-14 2003-06-23 日本電気株式会社 データ処理装置および方法
JP4983160B2 (ja) * 2006-09-04 2012-07-25 富士通株式会社 動画像処理装置
JP2011107858A (ja) * 2009-11-16 2011-06-02 Hitachi Ltd 通信インタフェースの種類が異なる複数の入出力装置に複数の計算機が通信可能に接続される計算機システム
KR20130023985A (ko) * 2011-08-30 2013-03-08 삼성전자주식회사 개선된 랜덤 라이트 성능을 가지는 메타 데이터 그룹 구성 방법 및 그에 따른 반도체 저장 장치
JP5928087B2 (ja) * 2012-03-29 2016-06-01 富士通株式会社 スイッチ、情報処理装置および通信制御方法
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system

Also Published As

Publication number Publication date
JP2015219810A (ja) 2015-12-07
US20150339246A1 (en) 2015-11-26
US9575914B2 (en) 2017-02-21

Similar Documents

Publication Publication Date Title
JP6394062B2 (ja) 情報処理装置およびバス制御方法
CN109564556B (zh) 具有条纹和读取/写入事务管理的存储器控制器仲裁器
US7930470B2 (en) System to enable a memory hub device to manage thermal conditions at a memory device level transparent to a memory controller
CN100592271C (zh) 使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法
KR102350538B1 (ko) Ddr 메모리 에러 복구
US7707437B2 (en) Method, system, and apparatus for a plurality of slave devices determining whether to adjust their power state based on broadcasted power state data
JP6329318B2 (ja) 情報処理装置
US7743191B1 (en) On-chip shared memory based device architecture
TWI399650B (zh) 於每一週期中藉由較高頻率仲裁器之複數匯流排仲裁之系統及在一以一匯流排頻率操作之匯流排中仲裁多個匯流排處理請求的方法
US20070294443A1 (en) Address assignment through device ID broadcast
US7818485B2 (en) IO processor
US20150134880A1 (en) Apparatus and method for routing information in a non-volatile memory-based storage device
US9003091B2 (en) Flow control for a Serial Peripheral Interface bus
US20130054867A1 (en) Communication apparatus and id setting method
KR20130107070A (ko) Ssd 콘트롤러 및 그의 제어 방법
CN114902187A (zh) 非易失性存储器模块的错误恢复
US8972645B2 (en) Request sent to storage device based on moving average
CN115495389A (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
CN114902197A (zh) 非易失性双列直插式存储器模块的命令重放
JP6232936B2 (ja) 情報処理装置、記憶装置制御回路及び記憶装置の制御方法
US9047264B2 (en) Low pin count controller
US6804736B2 (en) Bus access arbitration based on workload
JP2023508117A (ja) 不揮発性メモリモジュールのエラー報告
JP2015191604A (ja) 制御装置、制御プログラム、および制御方法
KR101824671B1 (ko) 비휘발성 메모리 기반 저장 디바이스에서 정보를 라우팅하는 장치 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180426

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180731

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180813

R150 Certificate of patent or registration of utility model

Ref document number: 6394062

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150