[go: up one dir, main page]

JP6899852B2 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
JP6899852B2
JP6899852B2 JP2019004734A JP2019004734A JP6899852B2 JP 6899852 B2 JP6899852 B2 JP 6899852B2 JP 2019004734 A JP2019004734 A JP 2019004734A JP 2019004734 A JP2019004734 A JP 2019004734A JP 6899852 B2 JP6899852 B2 JP 6899852B2
Authority
JP
Japan
Prior art keywords
switch
link
control data
pcie
processor
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
JP2019004734A
Other languages
English (en)
Other versions
JP2020113137A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019004734A priority Critical patent/JP6899852B2/ja
Priority to US16/561,154 priority patent/US10970237B2/en
Publication of JP2020113137A publication Critical patent/JP2020113137A/ja
Application granted granted Critical
Publication of JP6899852B2 publication Critical patent/JP6899852B2/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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • 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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/304In main memory subsystem
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)

Description

本発明は、複数のストレージコントローラを有するストレージ装置に関する。
ストレージ装置は、ストレージコントローラと、ランダムアクセス可能な不揮発性記録媒体とを有する。この記録媒体は、例えば、ハードディスクドライブ(HDD)や不揮発性半導体メモリドライブ(SSD)を多数有するディスクアレイである。
ストレージコントローラは、上位装置(ホストシステム等)を接続するためのフロントエンドインターフェースと、ディスクアレイを接続するためのバックエンドインターフェースと、上位装置がディスクアレイに対して読み書きするユーザデータを一時的に保存するキャッシュメモリ(CMと略す)を有する。更に、ストレージコントローラは、上位装置とキャッシュメモリとの間、及びディスクアレイとキャッシュメモリとの間におけるデータ転送を制御するためのプロセッサを有する。
また、ストレージコントローラと不揮発性半導体メモリドライブ(SSD)の間の通信規格として、近年、「NVM Express(NVMeと略す)」も新しく用いられるようになってきた。記録媒体としてNVMeドライブのみを有するストレージ装置では、スイッチを介してプロセッサとドライブを直接接続できるため、バックエンドインターフェースが不要である。
複数のプロセッサを搭載するストレージ装置では、ストレージコントローラ内に複数のプロセッサからアクセス可能な、ストレージ装置の制御データを格納する共有メモリ(SMと略す)を有する。ストレージ装置の制御データとは、例えば、上位装置から参照されるデータ格納先のアドレス情報とストレージ装置内部で使用するディスクアレイ上のデータ格納先アドレス情報を変換するアドレス変換テーブル等がある。
高信頼性が要求されるストレージ装置では、ユーザデータおよび制御データを冗長化して保持するため、キャッシュメモリや共有メモリを含むストレージコントローラ内のコンポーネントが二重化される。
汎用技術を適用したストレージコントローラにおいて、キャッシュメモリ及び共有メモリはプロセッサに接続された主記憶内に構成される。また、プロセッサとフロントエンドインターフェースやバックエンドインターフェース、NVMeドライブ等とを接続するための通信ネットワークの標準規格として、「PCI Express(PCIeと略す)」が知られている。
ストレージコントローラ間は、PCIeスイッチや非透過性ブリッジ(NTB:Non Transparent Bridge)によるコントローラ間リンクで相互接続される。複数のストレージコントローラに搭載されたプロセッサは、コントローラ間リンクを使用して、ユーザデータと制御データを相互に転送する。
例えば、特許文献1には、2個のストレージコントローラ間をPCIeスイッチやNTBで相互に接続し、コントローラ間でデータ転送を行う技術が開示されている。
米国特許出願公開2013/0254487号明細書
同じコントローラ間リンク上に、転送長が長い(ペイロードサイズも大)ユーザデータと、転送長の短い(ペイロードサイズも小)制御データが競合(混合)して転送されると、制御データのスループットが低下し、データ転送時間も増大してしまう。なお、制御データの転送性能の低下は、ストレージ装置の応答性能の低下を招いてしまう。
PCIeでは、通信品質(QoS)を保証するため、仮想チャネル(VC:Virtual Channel)とトラフィッククラス(TC:Traffic Class)の仕組みが用意されている。仮想チャネルはPCIeリンク上で独立したフロー制御を行う単位であり、トラフィッククラスはPCIeのパケット転送の優先度である。
ストレージコントローラは上記仕組みにより、異なる仮想チャネルでユーザデータと制御データを転送することにより、ユーザデータとの競合時に制御データの転送性能の低下が避けられるはずである。しかし、汎用プロセッサには、1本の仮想チャネルしか持たないものがある。したがって、ストレージコントローラに汎用プロセッサを採用した場合には、複数の仮想チャネルを利用できない、という問題があった。
また、ユーザデータと制御データを物理的に別のパスで転送すれば競合の問題は発生しないが、ケーブルやPCIeのレーン数等の配線物量が倍増するので、コストが増大するという問題があった。
本発明の目的は、1本の仮想チャネルしか持たない汎用プロセッサを搭載したストレージコントローラのコントローラ間リンクにおいても、ユーザデータとの競合時に制御データの転送性能が低下するのを防止することである。
本発明は、第1のストレージコントローラと第2のストレージコントローラを有するストレージ装置であって、前記第1のストレージコントローラは、第1のプロセッサと、前記第1のプロセッサに接続された第1のメモリと、前記第1のプロセッサに接続されて、第1のポートを有する第1のスイッチと、前記第1のメモリに設定されてユーザデータを格納するキャッシュ領域と、前記第1のメモリに設定されて制御データを格納する共有領域と、前記第1のプロセッサ内蔵のDMAコントローラと、前記第1のスイッチ内蔵のDMAコントローラと、を含み、前記第2のストレージコントローラは、第2のプロセッサと、前記第2のプロセッサに接続された第2のメモリと、前記第2のプロセッサに接続されて、第2のポートを有する第2のスイッチと、前記第2のメモリに設定されてユーザデータを格納するキャッシュ領域と、前記第2のメモリに設定されて制御データを格納する共有領域と、前記第2のプロセッサ内蔵のDMAコントローラと、前記第2のスイッチ内蔵のDMAコントローラと、を含み、前記ストレージ装置は、前記第1のポートと前記第2のポートを第1のリンクで接続し、前記第1のプロセッサと前記第1のスイッチを、前記ユーザデータを転送するための第2のリンクと、前記制御データを転送するための第3のリンク、で接続し、前記第2のプロセッサと前記第2のスイッチを、前記ユーザデータを転送するための第4のリンクと、前記制御データを転送するための第5のリンク、で接続し、前記第1のポートと前記第2のポートは、前記制御データを、前記ユーザデータより優先して前記第1のリンクで転送し、前記第1のストレージコントローラと前記第2のストレージコントローラ間において、前記第1のプロセッサ内蔵のDMAコントローラまたは前記第2のプロセッサ内蔵のDMAコントローラが前記ユーザデータを転送し、前記第1のスイッチ内蔵のDMAコントローラまたは前記第2のスイッチ内蔵のDMAコントローラが制御データを転送し、前記第1のストレージコントローラまたは前記第2のストレージコントローラは、転送する制御データのサイズが所定値以上の場合は、前記第1のスイッチ内蔵のDMAコントローラまたは前記第2のスイッチ内蔵のDMAコントローラに制御データを転送させ、転送する制御データのサイズが所定値未満の場合は、前記第1のプロセッサまたは前記第2のプロセッサが、メモリライト命令を実行することにより制御データを転送する。
したがって、本発明は、本発明の一態様によれば、1本の仮想チャネルしか持たない汎用のプロセッサを搭載したストレージコントローラのコントローラ間リンクでも、ユーザデータ転送との競合による制御データの転送性能の低下を防ぐことができ、ストレージ装置の応答性能を改善することができる。これにより、制御データの転送時間を低減して、ストレージ装置の性能向上を図ることができる。
本明細書において開示される主題の、少なくとも一つの実施の詳細は、添付されている図面と以下の記述の中で述べられる。開示される主題のその他の特徴、態様、効果は、以下の開示、図面、請求項により明らかにされる。
本発明の実施例1を示し、ストレージ装置の構成例を示すブロック図である。 本発明の実施例1を示し、PCIeスイッチ内部の構成例を示すブロック図である。 本発明の実施例1を示し、ストレージコントローラ間におけるデータ転送経路の例を示す図である。 本発明の実施例1を示し、NTBにおけるアドレス変換処理の例を示す図である。 本発明の実施例1を示し、PCIeスイッチポートにおけるアービトレーションテーブルの設定例を示す図である。 本発明の実施例1を示し、ストレージコントローラ間における制御データの転送の一例を示すシーケンス図である。 本発明の実施例1を示し、制御データ転送の手順を示すフローチャートである。 本発明の実施例1を示し、ストレージコントローラ間で転送する制御データサイズと制御データ転送時間の関係の例を示すグラフである。 本発明の実施例2を示し、ストレージコントローラ間におけるデータ転送経路の別の例を示す図である。 本発明の実施例2を示し、データの種別と、トラフィッククラス及び仮想チャネルの関係の一例を示す図である。 本発明の実施例2を示し、PCIeスイッチのポートにおける仮想チャネルアービトレーションの設定例を示す図である。 本発明の実施例3を示し、データの種別と、トラフィッククラス及び仮想チャネルの関係の別の例を示す図である。 本発明の実施例4を示し、NTBにおけるトラフィッククラス変換処理の手順を示すフローチャートである。 本発明の実施例4を示し、データの種別と、トラフィッククラス及び仮想チャネルの関係の別の例を示す図である。 本発明の実施例5を示し、ストレージ装置の別の構成例を示すブロック図である。 本発明の実施例5を示し、PCIeスイッチ内部の別の構成例を示すブロック図である。 本発明の実施例5を示し、ストレージコントローラ間におけるデータ転送経路の別の例を示す図である。 本発明の実施例6を示し、ストレージ装置の別の構成例を示すブロック図である。 本発明の実施例7を示し、ストレージノードの構成例を示すブロック図である。 本発明の実施例7を示し、複数のストレージノード間の接続例を示すブロック図である。
以下、図面を参照しながら、本発明の幾つかの実施例を説明する。
図1〜図8を用いて、本発明の実施例1のストレージ装置とその処理について説明する。
図1は、本発明の実施例1のストレージ装置の構成例を示すブロック図である。ストレージ装置100は、ストレージコントローラ110、150と複数の不揮発性半導体メモリドライブ(SSD:Solid State Drive)102で構成されている。
ストレージコントローラ110、150は、外部の上位装置190と上位装置191が接続される。上位装置190、191は、例えば、ストレージ装置100に対してデータを読み書きするホストコンピュータである。また、不揮発性半導体メモリドライブ(SSD)102はNVMe(Non−Volatile Memory Express)ドライブである。
ストレージコントローラ110は、プロセッサ(図中MP0)111と、メインメモリ(図中Mem0)112と、フロントエンドインターフェース140と、PCIeスイッチ120、130で構成されている。
メインメモリ112は、プロセッサ111と接続され、共有メモリ(図中SM0)113とキャッシュメモリ(図中CM0)114とを含む。またメインメモリ112は、プロセッサ111により実行されるプログラムや、参照される管理テーブルが格納される。
プロセッサ111は、フロントエンドインターフェース140とキャッシュメモリ114の間、及びPCIeスイッチ130を介したキャッシュメモリ114と不揮発性半導体メモリドライブ102との間、のデータ転送を制御する。
PCIeスイッチ120は、プロセッサ111と2本のPCIeリンク121、122で接続されている。また、PCIeスイッチ120は、他のストレージコントローラと接続するために、PCIeリンクであるコントローラ間リンク101と接続されている。
同様に、ストレージコントローラ150は、プロセッサ(図中MP1)151と、メインメモリ(図中Mem1)152と、フロントエンドインターフェース180と、PCIeスイッチ160、170で構成されている。
メインメモリ152は、プロセッサ151と接続され、共有メモリ(図中SM1)153とキャッシュ(図中CM1)メモリ154とを含む。またメインメモリ152は、プロセッサ151により実行されるプログラムや、参照される管理テーブルが格納される。
プロセッサ151は、フロントエンドインターフェース180とキャッシュメモリ154の間、及びPCIeスイッチ170を介したキャッシュメモリ154と不揮発性半導体メモリドライブ102との間、のデータ転送を制御する。
PCIeスイッチ160は、プロセッサ151と2本のPCIeリンク161、162で接続されている。また、PCIeスイッチ160は、他のストレージコントローラと接続するために、PCIeリンクであるコントローラ間リンク101と接続されている。
プロセッサ111とプロセッサ151は、コントローラ間リンク101を介して相互に通信し、上位装置(図中Host0、1)190、191から受信したユーザデータをキャッシュメモリ114、154内に二重化して一時的に格納する。
また、プロセッサ111とプロセッサ151は、コントローラ間リンク101を介して相互に通信し、ストレージ装置100内の制御データを共有メモリ113、153内に二重化して格納する。
図2は、PCIeスイッチ120の内部構成例を示すブロック図である。PCIeスイッチ120は、PCIeリンク122に接続するアップストリームポート200と、NTB(Non Transparent Bridge)210と、NTB220と、PCIeスイッチに内蔵されたDMA(Direct Memory Access)コントローラ230と、プロセッサ250と、メモリ240を含んで構成される。
アップストリームポート(図中UP00)200はPCI−to−PCI(P2P)ブリッジ(図中P2P)202と接続され、NTB210(図中NT00)内のエンドポイント211はP2Pブリッジ203と接続され、NTB220(図中NT01)内のエンドポイント(図中EP)221はP2Pブリッジ204と接続され、PCIeスイッチ内蔵のDMAコントローラ230はP2Pブリッジ205と接続される。P2Pブリッジ202、203、204、205は、内部バス201に接続されている。
NTB210は、エンドポイント211とエンドポイント212とを含む。エンドポイント212は、PCIeリンク121を介して、プロセッサ111からアクセス可能に設定される。
エンドポイント211はPCIeリンク122を介して、プロセッサ111からアクセス可能に設定される。エンドポイント211と212は、送信先が所定のアドレス範囲内であるPCIeパケットが双方向で通過できるように設定及び接続されている。
NTB220は、エンドポイント221とエンドポイント222とを含む。エンドポイント221は、PCIeリンク122を介して、プロセッサ111からアクセス可能に設定される。
エンドポイント222はコントローラ間リンクに接続される。エンドポイント221と222は、送信先が所定のアドレス範囲内であるPCIeパケットが双方向で通過できるように設定及び接続されている。
メモリ240には、制御プログラムやテーブルなどが格納される。本実施例1では、プロセッサ250が利用するテーブルとしてアービトレーションテーブル500(後述)が格納される例を示す。プロセッサ250は、メモリ240の制御プログラムを実行して、PCIeスイッチ120内の各部を制御する。
なお、図1に示した、ストレージコントローラ150のPCIeスイッチ160の内部構成は、図2に示したPCIeスイッチ120の内部構成と同様であるので、説明を省略する。
図3は、ストレージコントローラ110からストレージコントローラ150への制御データ及びユーザデータの転送経路を示す図である。
プロセッサ111は、プロセッサコア342とプロセッサ内蔵のDMAコントローラ343を有する。また、プロセッサ111は、PCIeスイッチ120のNTB210(図中NT00)とPCIeリンク121を介して接続するルートポート340(図中RP00)と、アップストリームポート200(図中UP00)とPCIeリンク122を介して接続するルートポート341(図中RP01)を有する。
プロセッサ151は、プロセッサコア352とプロセッサ内蔵のDMAコントローラ353を有する。また、プロセッサ151は、PCIeスイッチ160のNTB310(図中NT10)とPCIeリンク161を介して接続するルートポート350(図中RP10)と、アップストリームポート300(図中UP10)とPCIeリンク162を介して接続するルートポート351(図中RP11)を有する。
先ず、ユーザデータの転送経路を説明する。ユーザデータは、プロセッサ111がプロセッサ内蔵のDMAコントローラ343を制御することにより、キャッシュメモリ114からストレージコントローラ150のキャッシュメモリ154へ転送する。
プロセッサ111は、プロセッサ内蔵のDMAコントローラ343を制御するためのデータ転送リストを生成する。プロセッサ内蔵のDMAコントローラ343は、データ転送リストに基づき、転送元であるキャッシュメモリ114からユーザデータを読出し(360)、ルートポート340(RP00)へユーザデータを書き出す(361)。
ユーザデータは、ルートポート340から、PCIeリンク121、NTB210、NTB220、コントローラ間リンク101、NTB320、NTB310、PCIeリンク161、ルートポート350を介して、キャッシュメモリ154へ転送される。
次に、制御データの転送経路を説明する。制御データには2通りの転送方法がある。一つはプロセッサコア342がPCIe空間(アドレス空間)に対する書込み命令を実行する方法であり、以後この方法をコアライトと呼ぶことにする。もう一つは、PCIeスイッチ内蔵のDMAコントローラ230、330を使用する方法である。
コアライトによる制御データの転送の場合、先ず、プロセッサコア342が転送元である共有メモリ113から制御データを読出し(364)、ルートポート341へ制御データを書き出す(365)。制御データは、ルートポート341から、PCIeリンク122、アップストリームポート200、NTB220、コントローラ間リンク101、NTB320、アップストリームポート300、PCIeリンク162、ルートポート351を介して、共有メモリ153へ転送される。
PCIeスイッチ内蔵のDMAコントローラ230による制御データの転送の場合、プロセッサ111が、PCIeスイッチ内蔵のDMAコントローラ230を制御するためのデータ転送リストを生成する。PCIeスイッチ内蔵のDMAコントローラ230は、データ転送リストに基づき、転送元である共有メモリ113から、ルートポート341、PCIeリンク122、アップストリームポート200を介して制御データを読出し(362)、NTB220へ制御データを書き出す(363)。
制御データは、NTB220から、コントローラ間リンク101、NTB320、アップストリームポート300、PCIeリンク162、ルートポート351を介して、ストレージコントローラ150の共有メモリ153へ転送される。
ストレージコントローラ150からストレージコントローラ110へ制御データを転送する場合の経路も同様である。
ストレージコントローラ150のユーザデータは、プロセッサ151がプロセッサ内蔵のDMAコントローラ353(MP DMA1)を制御することにより、キャッシュメモリ154からストレージコントローラ110のキャッシュメモリ114へ転送する。
プロセッサ151は、プロセッサ内蔵のDMAコントローラ353(MP DMA1)を制御するためのデータ転送リストを生成する。プロセッサ内蔵のDMAコントローラ353は、データ転送リストに基づき、転送元であるキャッシュメモリ154からユーザデータを読出し、ルートポート350へユーザデータを書き出す。
ユーザデータは、ルートポート350から、PCIeリンク161、NTB310、NTB320、コントローラ間リンク101、NTB220、NTB210、PCIeリンク121、ルートポート340を介して、ストレージコントローラ110のキャッシュメモリ114へ転送される。
コアライトによる制御データ転送の場合、先ず、プロセッサコア352が転送元である共有メモリ153から制御データを読出し、ルートポート351へ制御データを書き出す。
制御データは、ルートポート351から、PCIeリンク162、アップストリームポート300、NTB320、コントローラ間リンク101、NTB220、アップストリームポート200、PCIeリンク122、ルートポート341を介して、ストレージコントローラ110の共有メモリ113へ転送される。
PCIeスイッチ内蔵のDMAコントローラ330による制御データ転送の場合、プロセッサ151が、PCIeスイッチ内蔵のDMAコントローラ330を制御するためのデータ転送リストを生成する。PCIeスイッチ内蔵のDMAコントローラ330は、データ転送リストに基づき、転送元である共有メモリ153から、ルートポート351、PCIeリンク162、アップストリームポート300を介して制御データを読出し、NTB320へ制御データを書き出す。
制御データは、NTB320から、コントローラ間リンク101、NTB220、アップストリームポート200、PCIeリンク122、ルートポート341を介して、ストレージコントローラ110の共有メモリ113へ転送される。
図4を用いて、PCIeスイッチ120、160におけるアドレス変換処理を説明する。図4において、プロセッサ111のアドレス空間400は、プロセッサ111のメインメモリ空間405と、アップストリームポート200にアクセスするためのウインドウ403(図中Window03)と、NTB210にアクセスするためのウインドウ404(図中Window04)を含む。
プロセッサ151のアドレス空間410は、プロセッサ151のメインメモリ空間415と、アップストリームポート300にアクセスするためのウインドウ413(図中Window13)と、NTB310にアクセスするためのウインドウ414(図中Window14)を含む。
メインメモリ空間405は、共有メモリ113にアクセスするためのウインドウ401(図中Window01)と、キャッシュメモリ114にアクセスするためのウインドウ402(図中Window02)を含む。ストレージコントローラ150のメインメモリ空間415は、共有メモリ153にアクセスするためのウインドウ411(図中Window11)と、キャッシュメモリ154にアクセスするためのウインドウ412(図中Window12)を含む。
アドレス空間420は、コントローラ間リンク101上をPCIeパケットが転送される際に使用されるアドレス空間であり、制御データ転送用のウインドウ421(図中Window21)と、ユーザデータ転送用のウインドウ422(図中Window22)を含む。
なお、以下の説明では、上記アドレス空間400、410、420のうち、PCIeで利用するアドレス空間をPCI空間とする場合がある。
先ず、PCIeスイッチ120におけるPCIeパケット送信先アドレスの変換処理について説明する。NTB210、220は、それぞれアドレス変換機能部であると共に、これらの組み合わせもアドレス変換機能部である。
PCIeスイッチ120は、アップストリームポート200が受信したウインドウ403内のPCIeパケットの送信先アドレスを、ウインドウ421内のアドレスに変換し、NTB220から送信する。また、PCIeスイッチ120は、NTB210が受信したウインドウ404内のPCIeパケットの送信先アドレスを、ウインドウ422内のアドレスに変換し、NTB220から送信する。
また、PCIeスイッチ120は、NTB220が受信したウインドウ421内のPCIeパケットの送信先アドレスを、ウインドウ401内のアドレスに変換し、アップストリームポート200から送信する。
また、PCIeスイッチ120は、NTB220が受信したウインドウ422内のPCIeパケットの送信先アドレスを、ウインドウ402内のアドレスに変換し、NTB210から送信する。
次に、PCIeスイッチ160におけるPCIeパケット送信先アドレスの変換処理について説明する。NTB310、320は、それぞれアドレス変換機能部であると共に、これらの組み合わせもアドレス変換機能部である。
PCIeスイッチ160は、アップストリームポート300が受信したウインドウ413内のPCIeパケットの送信先アドレスを、ウインドウ421内のアドレスに変換し、NTB320から送信する。
また、PCIeスイッチ160は、NTB310が受信したウインドウ414内のPCIeパケットの送信先アドレスを、ウインドウ422内のアドレスに変換し、NTB320から送信する。
また、PCIeスイッチ160は、NTB320が受信したウインドウ421内のPCIeパケットの送信先アドレスを、ウインドウ411内のアドレスに変換し、アップストリームポート300から送信する。
また、PCIeスイッチ160は、NTB320が受信したウインドウ422内のPCIeパケットの送信先アドレスを、ウインドウ412内のアドレスに変換し、NTB310から送信する。
図5は、NTB220を制御するアービトレーションテーブル500の一例を示す図である。プロセッサ250は、アービトレーションテーブル500に設定された内容をNTB220へ指令する。
NTB220は、PCIeスイッチ120のアップストリームポートとしても機能する。そして、NTB220は、NTB210およびアップストリームポート200で制御データとユーザデータを受信し、NTB220から送信されるPCIeパケットに対して、WRR(Weighted Round Robin)アービトレーションを設定することができる。
ここでは一例として、NTB220は、32フェーズのアービトレーションテーブル500の設定にする。図5に示すように、32フェーズのうち、ユーザデータが入力されるNTB210(NT00)を6フェーズに割り当て、制御データが入力されるアップストリームポート200(UP00)を残りの26フェーズに割り当てる。
この設定により、制御データはユーザデータより優先してNTB220からコントローラ間リンク101へ送信される。
さらに、制御データが受信されるアップストリームポート200(UP00)を割り当てるフェーズが、少なくとも連続した4フェーズに対して設定されている。これは、転送される制御データのサイズが数十バイトから高々1000バイト程度であり、また、PCIeスイッチ内蔵のDMAコントローラ230が転送するPCIeパケットのペイロードサイズは最大256バイトであることによる。
連続した4フェーズに制御データが受信されるアップストリームポート200(UP00)を設定することにより、制御データはユーザデータのPCIeパケットの通過(転送完了)を待つこと無く、連続的に設定されたフェーズで送信することができる。また、連続した4フェーズに制御データを割り当てることで、制御データのPCIeパケットが連続してNTB220から送信される割合を高めることができる。
NTB320についても、図5と同様にアービトレーションテーブル500が設定される。
なお、本実施例1のアービトレーションテーブル500では、アービトレーションテーブルのフェーズ数を32とし、連続する4フェーズに制御データを割り当て、5フェーズおきにユーザデータを割り当てた例を示したがこれに限定されるものではない。
図6は、制御データ転送シーケンスを説明する図である。例として、プロセッサ111(図中MP0)が、ストレージコントローラ110の共有メモリ113(図中SM0)から、ストレージコントローラ150の共有メモリ153(図中SM1)へ制御データを転送する場合を示す。
先ず、プロセッサ111が共有メモリ113(SM0)から制御データを読出し、PCIe空間に対する書込み命令を実行することにより、つまりコアライトにより、メインメモリ152(Mem1)の共有メモリ153(SM1)へ制御データを転送する(601)。
一回のコアライトで転送できるデータサイズは、例えば8バイトなので、プロセッサ111は、制御データを転送するのに必要な回数だけコアライトを繰り返して実行する。
制御データの転送に続けて、プロセッサ111(MP0)は、プロセッサ151(MP1)へ割込み信号であるMSI(Message Signaled Interrupt)を送信する(602)。MSIの実態は、プロセッサ151(MP1)の割込みコントローラ(図示省略)へ送信するPCIe Writeパケットである(603)。
MSIを受信したプロセッサ151(MP1)は、割込み内容に応じた割込みハンドラを実行する(604)。割込みハンドラの実行により、プロセッサ151(MP1)は、制御データが共有メモリ153(SM1)に確実に書き込まれたことを検出し、書込み完了を通知するACK(Acknoledge)をプロセッサ111(MP0)へ送信する。ACKの実態は、共有メモリ内の所定アドレスに対するPCIe Writeパケットである(605)。
MSIの送信後、プロセッサ111(MP0)は、共有メモリ113(SM0)の所定アドレスをポーリングして、ACKがプロセッサ151(MP1)から返信されるのを待つ(606)。
プロセッサ111(MP0)が、プロセッサ151(MP1)からのACKの受信を検出することにより、制御データ転送が完了する(607)。
プロセッサ111(MP0)が制御データの転送を開始(601)してから、プロセッサ151(MP1)からのACKの受信を検出するまで(607)が、制御データの転送時間である(608)。
コアライトの替わりにPCIeスイッチ内蔵のDMAコントローラ230、330を使用する場合は、上記ステップ601がDMAコントローラ230による制御データの転送に、上記ステップ602がPCIeスイッチ120に内蔵されたDMAコントローラ230によるMSIの送信に、それぞれ置き換わる。
プロセッサ151(MP1)が、ストレージコントローラ150の共有メモリ153(SM1)から、ストレージコントローラ110の共有メモリ113(SM0)へ制御データを転送する場合も同様である。
図7は、制御データの転送の手順を示すフローチャートである。本実施例1のストレージ装置100において、制御データは、プロセッサ111、151によるPCIe空間に対する書込み命令(コアライト)、または、PCIeスイッチ内蔵のDMAコントローラ230、330のいずれかの構成要素を使用して、ストレージコントローラ110、150間で転送される。図7のフローチャートは、プロセッサ111または151が、これら2つの構成要素を選択し、転送を実行する手順を示す。
先ず、プロセッサ111または151は、転送する制御データのサイズを計算する(701)。
次に、プロセッサ111または151は、計算された転送する制御データのサイズが所定値以上か、否かを判定する(702)。PCIeスイッチ内蔵のDMAコントローラ230、330がデータを転送する場合、データ転送リストの生成や送信のオーバーヘッドを考慮する必要がある。
つまり、制御データのサイズが所定値(または閾値)より小さい場合、PCIeスイッチ内蔵のDMAコントローラ230、330による転送よりも、コアライトによる転送の方が、制御データの転送時間を短縮できる場合がある。
制御データの転送サイズが所定値より小さい場合、プロセッサ111または151は、コアライトにより制御データ転送を実行する(703)。それに続けて、プロセッサ111または151は、図6の説明で述べたように、MSIを他方のプロセッサへ送信する。
制御データの転送サイズが所定値以上の場合、プロセッサ111または151は、PCIeスイッチ内蔵のDMAコントローラ230、330が制御データ転送を実行するための、データ転送リストを生成する(704)。データ転送リストには、図6の説明で述べたMSI送信も含まれる。
次に、プロセッサ111または151は、生成したデータ転送リストをPCIeスイッチ内蔵のDMAコントローラ230、330へ送信する。データ転送リストを受信したDMAコントローラ230、330は、制御データ転送を実行する(705)。
最後に、プロセッサ111または151が、他方のプロセッサが送信したACK(図6参照)の受信を検出することにより、制御データ転送が完了する(706)。
図8は、制御データのサイズと図6で説明した制御データの転送時間(608)の関係を示すグラフである(800)。
図中実線801と破線802は、従来技術においてコアライトにより制御データを転送した場合の、制御データのサイズと制御データの転送時間の関係を示す。実線801は同じコントローラ間リンク101上でユーザデータの転送と制御データの転送が競合した場合を示し、破線802は、両者が競合しない場合の制御データの転送時間とサイズの関係を示す。
図中実線803は本実施例1のストレージ装置100における制御データのサイズと制御データの転送時間の関係を示す。制御データのサイズが所定値(805)より小さい領域(804)において、本実施例1のストレージ装置100は、コアライトによる制御データ転送を実行する。
この場合の制御データ転送時間は、従来技術において競合がない場合の制御データ転送時間(802)と同等である。これは、図5で説明したポートアービトレーションの設定により、制御データをユーザデータより優先的に転送した結果である。
制御データのサイズが所定値(805)以上の領域(806)において、本実施例1のストレージ装置100は、PCIeスイッチ内蔵のDMAコントローラ230、330によって制御データの転送を行うので、その結果、従来技術より制御データの転送時間を短縮できる。
従来技術では、たとえ制御データの転送にDMAコントローラを使う場合でも、制御データがユーザデータに対して優先的に転送されないので、両者の競合がある場合に制御データの転送時間を短縮することができない。
これに対して、本実施例1のストレージ装置100は、別のデータ転送経路上にあるプロセッサ内蔵のDMAコントローラ343、353と、PCIeスイッチ内蔵のDMAコントローラ230、330を使用して、ユーザデータと制御データをそれぞれ転送する。そして、両者が合流するPCIeスイッチ120、160のポート(NTB220、320)において、ユーザデータよりも制御データを優先して転送することにより、制御データの転送時間を短縮できる。
図9〜図11を用いて、本発明の実施例2のストレージ装置とその処理について説明する。実施例2のストレージ装置の構成は、図1のストレージ装置100と一部を除いて同様な構成であるので図による説明を省略する。
実施例2のストレージ装置は、PCIeスイッチ120、160に替えて、複数の仮想チャネル(VC:Virtual Channel)を使用可能なPCIeスイッチ920、960(図参照9)を有する。
そして、コントローラ間リンク101は、VC0とVC1の2本の仮想チャネルが使用可能である点が、前記実施例1のストレージ装置100とは異なる。また、PCIeスイッチ920、960にそれぞれ内蔵されるPCIeスイッチ内蔵のDMAコントローラ230、330は、トラフィッククラス(TC:Traffic Class)をTC1に設定したPCIeパケットでデータ転送を行うことができる。なお、前記従来例でも述べたように、仮想チャネルはPCIeリンク上で独立したフロー制御を行う単位であり、トラフィッククラスはPCIeのパケット転送の優先度である。
図9は、ストレージコントローラ110からストレージコントローラ150への制御データ及びユーザデータの転送経路を示す図である。図9のデータ転送経路は、PCIeスイッチ120がPCIeスイッチ920に、PCIeスイッチ160がPCIeスイッチ960に、それぞれ置き換えられている点を除いて、前記実施例1に示した図3のデータ転送経路と同様である。
PCIeリンク121、122、161、162上では、トラフィッククラスTC0、TC1に設定されたPCIeパケットが、仮想チャネルVC0を使って転送されるように設定されている。
コントローラ間リンク101上では、トラフィッククラスTC0に設定されたPCIeパケットが仮想チャネルVC0を、トラフィッククラスTC1に設定されたPCIeパケットが仮想チャネルVC1を使って転送されるように設定されている。
図10は、実施例2のストレージ装置における、トラフィッククラスと仮想チャネルの使用方法を示す図である。
プロセッサとPCIeスイッチ間のPCIeリンクにおいて(1001)、ユーザデータ(1003)は、トラフィッククラスTC0に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。ここでプロセッサとPCIeスイッチ間のPCIeリンク(1001)は、図9における、PCIeリンク121、161である。
コントローラ間リンク101において(1002)、ユーザデータ(1003)は、トラフィッククラスTC0に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。
コアライト(MP Core)による制御データ転送の場合、プロセッサとPCIeスイッチ間のPCIeリンクにおいて(1001)、制御データ(1004)は、トラフィッククラスTC0に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。ここでプロセッサとPCIeスイッチ間のPCIeリンク(1001)は、図9における、PCIeリンク122、162である。
コントローラ間リンク101において(1002)、コアライトによる制御データ(1004)は、トラフィッククラスTC0に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。
PCIeスイッチ内蔵のDMAコントローラ230、330(SW DMA)による制御データ転送の場合、プロセッサとPCIeスイッチ間のPCIeリンク(1001)において制御データ(1005)は、トラフィッククラスTC1に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。
コントローラ間リンク101において(1002)、PCIeスイッチ内蔵のDMAコントローラ230、330による制御データ(1005)の転送は、トラフィッククラスTC1に設定されたPCIeパケットにより、仮想チャネルVC1上でデータ転送が行われる。
図11は、NTB220およびNTB320における、仮想チャネルアービトレーションの設定例を示す。仮想チャネルVC0(1101)の転送優先度(1103)を「Low」に設定し、仮想チャネルVC1(1102)の転送優先度(1103)を「High」に設定する。
この設定により、コントローラ間リンク101上では、PCIeスイッチ内蔵のDMAコントローラ230、330によりトラフィッククラスTC1に設定され仮想チャネルVC1を使う制御データの転送が、プロセッサ内蔵のDMAコントローラ343、353によりTC0に設定されて仮想チャネルVC0を使うユーザデータの転送より優先される。
コアライトによる制御データは、コントローラ間リンク101上でユーザデータと同じ仮想チャネルVC0を使って転送される。実施例2のストレージ装置においても、実施例1における図5のアービトレーションテーブル500と同様の設定により、コアライトによる制御データをユーザデータより優先して転送することができる。
以上説明した通り、実施例2のストレージ装置100は、コントローラ間リンク101を接続するNTB220、320におけるポートアービトレーション、及び仮想チャネルアービトレーションの設定の組合せにより、制御データをユーザデータにより優先して転送することができる。
図12を用いて、本発明の実施例3のストレージ装置とその処理について説明する。実施例3のストレージ装置の構成は、前記実施例2のストレージ装置100と一部を除いて同様な構成であるので図による説明を省略する。
実施例3のストレージ装置は、前記実施例2と同様に図1のストレージ装置100におけるPCIeスイッチ120、160に替えて、複数の仮想チャネルを使用可能なPCIeスイッチ920、960を有する。
そして、コントローラ間リンク101は、仮想チャネルVC0とVC1の2本の仮想チャネルが使用可能である点が、実施例1のストレージ装置100とは異なる。また、PCIeスイッチ920、960にそれぞれ内蔵されるPCIeスイッチ内蔵のDMAコントローラ230、330は、トラフィッククラスをTC1に設定したPCIeパケットでデータ転送を行うことができる。さらにプロセッサ111および151は、トラフィッククラスTC1に設定したPCIeパケットを送信できるとする。
図12は、実施例3のストレージ装置における、トラフィッククラスと仮想チャネルの使用方法を示す図である。
プロセッサとPCIeスイッチ間のPCIeリンクにおいて(1201)、ユーザデータ(1203)は、トラフィッククラスTC0に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。
コントローラ間リンク101において(1202)、ユーザデータ(1203)は、トラフィッククラスTC0に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。
コアライト(MP Core)による制御データ転送の場合、プロセッサとPCIeスイッチ間のPCIeリンクにおいて(1201)、制御データ(1204)は、トラフィッククラスTC1に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。
コントローラ間リンク101において(1202)、コアライトによる制御データ(1204)は、トラフィッククラスTC1に設定されたPCIeパケットにより、仮想チャネルVC1上でデータ転送が行われる。
PCIeスイッチ内蔵のDMAコントローラ230、330(SW DMA)による制御データ転送の場合、プロセッサとPCIeスイッチ間のPCIeリンクにおいて(1201)、制御データ(1205)は、トラフィッククラスTC1に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。
コントローラ間リンク101において(1202)、PCIeスイッチ内蔵のDMAコントローラ230、330による制御データ(1205)は、トラフィッククラスTC1に設定されたPCIeパケットにより、仮想チャネルVC1上でデータ転送が行われる。
実施例3のストレージ装置100は、実施例2のストレージ装置と同様に、コントローラ間リンク101を接続するPCIeスイッチポートにおいて、図11に示した仮想チャネルアービトレーションが設定されている。
この設定により、コントローラ間リンク101上では、コアライトおよびPCIeスイッチ内蔵のDMAコントローラ230、330によるトラフィッククラスTC1に設定された制御データ転送が、プロセッサ内蔵のDMAコントローラによるTC0に設定された仮想チャネルVC0を使うユーザデータ転送より優先される。
以上説明した通り、実施例3のストレージ装置は、コントローラ間リンク101を接続するNTB220、320における仮想チャネルアービトレーションの設定により、制御データをユーザデータにより優先して転送することができる。
図13〜図14を用いて、本発明の実施例4のストレージ装置とその処理について説明する。実施例4のストレージ装置の構成は、実施例2のストレージ装置と一部を除いて同様な構成であるので図による説明を省略する。実施例4のストレージ装置は、前記実施例2と同様に、図1のストレージ装置100におけるPCIeスイッチ120、160に替えて、複数の仮想チャネルを使用可能なPCIeスイッチ920、960を有する。
そして、コントローラ間リンク101は、VC0とVC1の2本の仮想チャネルが使用可能である点が、実施例1のストレージ装置100とは異なる。また、PCIeスイッチ920、960にそれぞれ内蔵されるPCIeスイッチ内蔵のDMAコントローラ230、330は、トラフィッククラスをTC0またはTC1に設定したPCIeパケットでデータ転送を行うことができる。
さらにコントローラ間リンク101を接続するNTB220およびNTB320は、コントローラ間リンク101へ送信するPCIeパケットのトラフィッククラスを、TC0からTC1に変更できる機能を有するとする。
図13は、NTB220およびNTB320における、トラフィッククラスの変換処理のフローチャートである。
NTB220またはNTB320は、コントローラ間リンク101へ送信されるPCIeパケットが、制御データかユーザデータのどちらを転送するものかを判定する(1301)。これはPCIeパケットの送信先アドレスを調べることで、容易に判定できる。制御データを転送するPCIeパケットである場合はステップ1302に進み、ユーザデータを転送するPCIeパケットである場合はステップ1303に進む。
ステップ1302において、NTB220またはNTB320は、コントローラ間リンク101から送信するPCIeパケットのトラフィッククラスを、TC1に設定する。
ステップ1303において、NTB220またはNTB320は、コントローラ間リンク101から送信するPCIeパケットのトラフィッククラスを、TC0に設定する。
次に、ステップ1304において、NTB220またはNTB320は、図4で説明したアドレス変換処理および送信元ID変換処理を行う。送信元ID変換処理は、NTBを跨いでPCIeパケットを送信する際に必要な処理の一つである。
図14は、実施例4のストレージ装置における、トラフィッククラスと仮想チャネルの使用方法を示す図である。
プロセッサとPCIeスイッチ間のPCIeリンクにおいて(1401)、ユーザデータ(1403)は、トラフィッククラスTC0に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。
コントローラ間リンク101において(1402)、ユーザデータ(1403)は、トラフィッククラスTC0に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。
コアライト(MP Core)による制御データ転送の場合、プロセッサとPCIeスイッチ間のPCIeリンクにおいて(1401)、制御データ(1404)は、トラフィッククラスTC0に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。
コントローラ間リンク101において(1402)、コアライトによる制御データ(1404)は、トラフィッククラスTC1に設定されたPCIeパケットにより、仮想チャネルVC1上でデータ転送が行われる。
PCIeスイッチ内蔵のDMAコントローラ230、330(SW DMA)による制御データ転送の場合、プロセッサとPCIeスイッチ間のPCIeリンクにおいて(1401)、制御データ(1405)は、トラフィッククラスTC0またはTC1に設定されたPCIeパケットにより、仮想チャネルVC0上でデータ転送が行われる。
コントローラ間リンク101において(1402)、PCIeスイッチ内蔵のDMAコントローラ230、330による制御データ(1405)は、トラフィッククラスTC1に設定されたPCIeパケットにより、仮想チャネルVC1上でデータ転送が行われる。
実施例4のストレージ装置は、実施例2のストレージ装置と同様に、コントローラ間リンク101を接続するPCIeスイッチポートにおいて、図11に示す仮想チャネルアービトレーションが設定されている。
この設定により、コントローラ間リンク101上では、コアライトおよびPCIeスイッチ内蔵のDMAコントローラ230、330による制御データの転送が、NTB220、320によりトラフィッククラスTC1のPCIeパケットによるものに変更され、仮想チャネルVC1を使って転送される。この結果、制御データは、プロセッサ内蔵のDMAコントローラ343、353によるTC0に設定された仮想チャネルVC0を使うユーザデータ転送より優先される。
以上説明した通り、実施例4のストレージ装置は、コントローラ間リンク101を接続するNTB220、320におけるトラフィッククラスの変換機能と仮想チャネルのアービトレーションの設定により、制御データをユーザデータにより優先して転送することができる。
図15〜図17を用いて、本発明の実施例5のストレージ装置とその処理について説明する。図15は、本発明の実施例5のストレージ装置の構成例を示すブロック図である。
ストレージ装置1500は、ストレージコントローラ1510、1550と複数の不揮発性半導体メモリドライブ(SSD)102、で構成されている。ストレージ装置1500は、実施例1のストレージ装置100から、コントローラ間リンク101を接続するPCIeスイッチ120、160を取り除いている。
そして、前記実施例1のPCIeスイッチ130、170の替わりに、プロセッサ111、151と不揮発性半導体メモリドライブ102を接続するPCIeスイッチ1520、1560を有する。さらにPCIeスイッチ1520、1560間をコントローラ間リンク1501で接続する。
プロセッサ111とPCIeスイッチ1520間は、PCIeリンク1521、1522で接続する。プロセッサ151とPCIeスイッチ1560間は、PCIeリンク1561、1562で接続する。PCIeスイッチ1520と不揮発性半導体メモリドライブ(SSD)102との間は、PCIeリンク1530〜1537で接続している。
図16は、PCIeスイッチ1520の内部構成を示す。PCIeスイッチ1520は仮想スイッチ1600(VS20)と1601(VS21)を有する。
仮想スイッチ1600は、PCIeリンク1521に接続するアップストリームポート1602と、PCIeリンク1530〜1537に接続するダウンストリームポート1620〜1627と、NTB1640(NT22)内のエンドポイント1641を含んで構成される。
アップストリームポート1602(UP20)はP2Pブリッジ1603と、エンドポイント1641はP2Pブリッジ1605と、ダウンストリームポート1620〜1627はP2Pブリッジ1610〜1617と、それぞれ接続される。P2Pブリッジ1603、1605及び1610〜1617は、内部バス1604に接続されている。
仮想スイッチ1601は、PCIeリンク1522に接続するアップストリームポート1606(UP21)と、NTB1640内のエンドポイント1642、NTB1650(NT21)、PCIeスイッチ内蔵のDMAコントローラ1630(SW DMA)を含んで構成される。
アップストリームポート1606はP2Pブリッジ1607と接続され、エンドポイント1642はP2Pブリッジ1609と、エンドポイント1651はP2Pブリッジ1618と、PCIeスイッチ内蔵のDMAコントローラ1630はP2Pブリッジ1631と、それぞれ接続される。P2Pブリッジ1607、1609、1618、1631は、内部バス1608に接続されている。
NTB1640は、エンドポイント1641とエンドポイント1642とを含む。エンドポイント1641は、PCIeリンク1521を介して、プロセッサ111からアクセス可能に設定される。
エンドポイント1642はPCIeリンク1522を介して、プロセッサ111からアクセス可能に設定される。エンドポイント1641と1642は、送信先が所定のアドレス範囲内であるPCIeパケットが双方向に通過できるように設定、接続されている。
NTB1650は、エンドポイント1651とエンドポイント1652とを含む。エンドポイント1651は、PCIeリンク1522を介して、プロセッサ111からアクセス可能に設定される。エンドポイント1652はコントローラ間リンク1501に接続される。エンドポイント1651と1652は、送信先が所定のアドレス範囲内であるPCIeパケットが双方向に通過できるように設定、接続されている。
PCIeスイッチ1560の内部構成は、PCIeスイッチ1520と同様であるので、説明を省略する。
図17は、ストレージコントローラ1510からストレージコントローラ1550への制御データ及びユーザデータの転送経路を示す図である。PCIeスイッチ1520は仮想スイッチ1600(VS20)と1601(VS21)を有する。また、PCIeスイッチ1560は仮想スイッチ1700(VS30)と1701(VS31)を有する。
先ず、ユーザデータの転送経路を説明する。ユーザデータは、プロセッサ111(MP0)がプロセッサ内蔵のDMAコントローラ343(MP DMA0)を制御することにより、キャッシュメモリ114(CM0)からキャッシュメモリ154(CM1)へユーザデータを転送する。
プロセッサ111は、プロセッサ内蔵のDMAコントローラ343を制御するためにデータ転送リストを生成する。プロセッサ内蔵のDMAコントローラ343は、データ転送リストに基づき、転送元であるキャッシュメモリ114からユーザデータを読出して(1760)、ルートポート340へユーザデータを書き出す(1761)。
ユーザデータは、ルートポート340から、PCIeリンク1521、アップストリームポート1602、NTB1640、NTB1650、コントローラ間リンク1501、NTB1750、NTB1740、アップストリームポート1702、PCIeリンク1561、ルートポート350を介して、キャッシュメモリ154へ転送される。
次に、制御データの転送経路を説明する。コアライトによる制御データの転送の場合、先ず、プロセッサコア342が転送元である共有メモリ113(SM0)から制御データを読出し(1764)、ルートポート341へ制御データを書き出す(1765)。制御データは、ルートポート341から、PCIeリンク1522、アップストリームポート1606、NTB1650、コントローラ間リンク1501、NTB1750、アップストリームポート1706、PCIeリンク1562、ルートポート351を介して、共有メモリ153(SM1)へ転送される。
PCIeスイッチ内蔵のDMAコントローラ1630による制御データ転送の場合、プロセッサ111が、PCIeスイッチ内蔵のDMAコントローラ1630を制御するためのデータ転送リストを生成する。PCIeスイッチ内蔵のDMAコントローラ1630は、データ転送リストに基づき、転送元である共有メモリ113から、ルートポート341、PCIeリンク1522、アップストリームポート1606を介して制御データを読出し(1762)、NTB1650へ制御データを書き出す(1763)。
制御データは、NTB1650から、コントローラ間リンク1501、NTB1750、アップストリームポート1706、PCIeリンク1562、ルートポート351を介して、共有メモリ153(SM1)へ転送される。
ストレージコントローラ150からストレージコントローラ110へ制御データを転送する場合の経路も同様である。
ユーザデータは、プロセッサ151がプロセッサ内蔵のDMAコントローラ353を制御することにより、キャッシュメモリ154(CM1)からキャッシュメモリ114(CM0)へ転送される。
プロセッサ151は、プロセッサ内蔵のDMAコントローラ353を制御するためのデータ転送リストを生成する。プロセッサ内蔵のDMAコントローラ353は、データ転送リストに基づき、転送元であるキャッシュメモリ154からユーザデータを読出し、ルートポート350へユーザデータを書き出す。
ユーザデータは、ルートポート350から、PCIeリンク1561、アップストリームポート1702、NTB1740、NTB1750、コントローラ間リンク1501、NTB1650、NTB1640、アップストリームポート1602、PCIeリンク1521、ルートポート340を介して、キャッシュメモリ114へ転送される。
コアライトによる制御データ転送の場合、先ず、プロセッサコア352が転送元である共有メモリ153から制御データを読出し、ルートポート351へ制御データを書き出す。制御データは、ルートポート351から、PCIeリンク1562、アップストリームポート1706、NTB1750、コントローラ間リンク1501、NTB1650、アップストリームポート1606、PCIeリンク1522、ルートポート341を介して、共有メモリ113へ転送される。
PCIeスイッチ内蔵のDMAコントローラ1730による制御データ転送の場合、プロセッサ151が、PCIeスイッチ内蔵のDMAコントローラ1730を制御するためのデータ転送リストを生成する。PCIeスイッチのDMAコントローラ1730は、データ転送リストに基づき、転送元である共有メモリ153から、ルートポート351、PCIeリンク1562、アップストリームポート1706を介して制御データを読出し、NTB1750へ制御データを書き出す。
制御データは、NTB1750から、コントローラ間リンク1501、NTB1650、アップストリームポート1606、PCIeリンク1522、ルートポート341を介して、共有メモリ113へ転送される。
PCIeリンク1521、1522、1561、1562上では、トラフィッククラスTC0、TC1に設定されたPCIeパケットが、仮想チャネルVC0を使って転送されるように設定されている。
コントローラ間リンク1501上では、トラフィッククラスTC0に設定されたPCIeパケットが仮想チャネルVC0を、トラフィッククラスTC1に設定されたPCIeパケットが仮想チャネルVC1を使って転送されるように設定されている。
ユーザデータは、プロセッサ内蔵のDMAコントローラ343、353により、トラフィッククラスTC0に設定されたPCIeパケットで転送される。制御データは、PCIeスイッチ内の蔵DMAコントローラ1630、1730により、トラフィッククラスTC1に設定されたPCIeパケットで転送される。
コアライトによりプロセッサコア342、352から送信された制御データを含むPCIeパケットは、NTB1650または1750からコントローラ間リンク1501へ送信される際に、トラフィッククラスTC1のPCIeパケットに変換される。
さらに、実施例2のストレージ装置と同様に、コントローラ間リンク1501を接続するPCIeスイッチポートであるNTB1650、1750において、図11に示す仮想チャネルアービトレーションが設定されている。以上により、コントローラ間リンク1501上では、制御データがユーザデータよりも優先して転送される。
PCIeスイッチ1520、1560は、NTBを通過するPCIeパケットに対して、図4の説明で示したような、実施例1のストレージ装置100におけるPCIeスイッチ120、160と同様のアドレス変換処理を行う。
ストレージ装置1500では、PCIeスイッチ1520、1560上で、制御データとユーザデータの他に、不揮発性半導体メモリドライブ(SSD)102に対する読み書きデータに関する転送も競合することになる。
しかし、図16で示したように、ユーザデータとドライブ読み書きデータが転送される仮想スイッチ1600、1700と、制御データとユーザデータが転送される仮想スイッチ1601、1701が論理的に分割されている。さらに制御データはユーザデータより転送優先度の高いトラフィッククラスに設定されたPCIeパケットで転送される。その結果、制御データは、ユーザデータとドライブ読み書きデータの転送の影響を受けずに、ストレージコントローラ1510と1550間を転送することができる。
図18を用いて、本発明の実施例6のストレージ装置1800とその処理について説明する。図18は、本発明の実施例6のストレージ装置の構成の一例を示すブロック図である。
ストレージ装置1800は、ストレージコントローラ1810、1850と複数の不揮発性半導体メモリドライブ(SSD)102、で構成されている。ストレージ装置1800は、実施例1のストレージ装置100から、コントローラ間リンク101を接続するPCIeスイッチ120、160を取り除いている。
そしてPCIeスイッチ130、170の替わりに、プロセッサ111、151と複数のフロントエンドインターフェース1840、1880を接続するPCIeスイッチ1811、1851を有する。さらにPCIeスイッチ1811、1851間をコントローラ間リンク1801で接続する。
プロセッサ111とPCIeスイッチ1811間は、PCIeリンク1821、1822で接続する。プロセッサ151とPCIeスイッチ1851間は、PCIeリンク1861、1862で接続する。実施例6のストレージ装置1800は、多数の上位装置を接続するために多数のフロントエンドインターフェース1840、1880が必要な場合に適している。
PCIeスイッチ1811、1851の内部構成は、前記実施例5に示した図16のPCIeスイッチ1520と同様であるので、説明を省略する。
また、ストレージコントローラ間における制御データ及びユーザデータの転送の詳細は、前記実施例5のストレージ装置1500と同様であるので、説明を省略する。
本実施例6によれば、プロセッサ111、151と複数のフロントエンドインターフェース1840、1880を接続するPCIeスイッチ1811、1851間をコントローラ間リンク1801で接続する場合でも、制御データをユーザデータより優先して転送するストレージ装置を実現できる。
図19〜図20を用いて、本発明の実施例7のストレージ装置とその処理について説明する。実施例7のストレージ装置は、複数のストレージノードをPCIeスイッチで相互接続する点が特徴である。
図19は、本発明の実施例7のストレージ装置におけるストレージノードの構成例を示す。ストレージノード1900は、ストレージコントローラ1910、1950と複数の不揮発性半導体メモリドライブ(SSD)102、で構成されている。
ストレージノード1900は、実施例1のストレージ装置100から、コントローラ間リンク101を接続するPCIeスイッチ120、160の替わりに、PCIeスイッチ1920、1960を有する。PCIeスイッチ1920、1960間は直接接続せず、他のストレージノードへ接続するための外部接続ポート1901、1902にそれぞれ接続する。
プロセッサ111とPCIeスイッチ1920間は、PCIeリンク1921、1922で接続する。プロセッサ151とPCIeスイッチ1960間は、PCIeリンク1961、1962で接続する。
PCIeスイッチ1920、1960は、実施例2から実施例4のPCIeスイッチ920、960と同様の構成とする。その結果、外部接続ポート1901、1902からは、制御データがトラフィッククラスTC1に設定されたPCIeパケットで、ユーザデータがトラフィッククラスTC0に設定されたPCIeパケットで、それぞれ送信される。
図20は、4個のストレージノード1900、2110、2120、2130をPCIeスイッチ2001、2002で相互接続した、本発明の実施例7のストレージ装置を示す。
ストレージノード1900の外部接続ポート1901(図19参照)は、PCIeスイッチ2001と接続する。ストレージノード1900の外部接続ポート1902は、PCIeスイッチ2002と接続する。ストレージノード2110の外部接続ポート2111は、PCIeスイッチ2001と接続する。ストレージノード2110の外部接続ポート2112は、PCIeスイッチ2002と接続する。
ストレージノード2120の外部接続ポート2121は、PCIeスイッチ2001と接続する。ストレージノード2120の外部接続ポート2122は、PCIeスイッチ2002と接続する。ストレージノード2130の外部接続ポート2131は、PCIeスイッチ2001と接続する。ストレージノード2130の外部接続ポート2132は、PCIeスイッチ2002と接続する。
PCIeスイッチ2001、2002は2本の仮想チャネルVC0、VC1を有する。各ストレージノードとPCIeスイッチ2001、2002間は、仮想チャネルVC0とVC1を含む複数の仮想チャネルが使用可能なPCIeリンクで接続する。
そして、PCIeスイッチ2001、2002の各ストレージノードと接続するPCIeポートにおいて、トラフィッククラスTC0が仮想チャネルVC0に、トラフィッククラスTC1が仮想チャネルVC1に、マッピングされている。
この結果、各ストレージノードからトラフィッククラスTC1に設定されたPCIeパケットで送信される制御データが、トラフィッククラスTC0に設定されたPCIeパケットで送信されるユーザデータよりも、優先して転送される。
本実施例7によれば、複数のストレージノードを相互接続するストレージ装置において、制御データをユーザデータより優先して転送するストレージ装置を実現できる。また、制御データとユーザデータを別のケーブル等の配線で転送する場合よりも、複数のストレージノード間を接続する配線物量を削減できる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
<まとめ>
以上のように、上記実施例1〜7のストレージ装置は、以下のような構成とすることができる。
(1.)第1のストレージコントローラ(110)と第2のストレージコントローラ(150)を有するストレージ装置(100)であって、前記第1のストレージコントローラ(110)は、第1のプロセッサ(111)と、前記第1のプロセッサ(111)に接続された第1のメモリ(112)と、前記第1のプロセッサ(111)に接続されて、第1のポート(NTB220)を有する第1のスイッチ(PCIeスイッチ120)と、前記第1のメモリ(112)に設定されてユーザデータを格納するキャッシュ領域(114)と、前記第1のメモリ(112)に設定されて制御データを格納する共有領域(113)と、を含み、前記第2のストレージコントローラ(150)は、第2のプロセッサ(151)と、前記第2のプロセッサ(151)に接続された第2のメモリ(152)と、前記第2のプロセッサ(151)に接続されて、第2のポート(NTB320)を有する第2のスイッチ(PCIeスイッチ160)と、前記第2のメモリ(152)に設定されてユーザデータを格納するキャッシュ領域(154)と、前記第2のメモリ(152)に設定されて制御データを格納する共有領域(153)と、を含み、前記ストレージ装置(100)は、前記第1のポート(220)と前記第2のポート(320)を第1のリンク(コントローラ間リンク101)で接続し、前記第1のプロセッサ(111)と前記第1のスイッチ(120)を、前記ユーザデータを転送するための第2のリンク(PCIeリンク121)と、前記制御データを転送するための第3のリンク(PCIeリンク122)、で接続し、前記第2のプロセッサ(151)と前記第2のスイッチ(160)を、前記ユーザデータを転送するための第4のリンク(PCIeリンク161)と、前記制御データを転送するための第5のリンク(PCIeリンク162)、で接続し、前記第1のポート(220)と前記第2のポート(320)は、前記制御データを、前記ユーザデータより優先して前記第1のリンク(101)で転送する。
上記構成により、実施例1のストレージ装置100は、1本の仮想チャネルしか持たない汎用のプロセッサを搭載したストレージコントローラのコントローラ間リンク(101)でも、ユーザデータ転送との競合による制御データの転送性能の低下を防ぐことができ、ストレージ装置100の応答性能を改善することができる。これにより、制御データの転送時間を低減して、ストレージ装置100の性能向上を図ることができる。
(2.)上記(1.)に記載のストレージ装置(100)であって、前記第1のプロセッサ(111)及び前記第2のプロセッサ(151)は、それぞれ第1のプロセッサ(111)内蔵のDMAコントローラ(343)及び第2のプロセッサ(151)内蔵のDMAコントローラ(353)を有し、前記第1のスイッチ(120)及び前記第2のスイッチ(160)は、それぞれ第1のスイッチ(120)内蔵のDMAコントローラ(230)及び第2のスイッチ(160)内蔵のDMAコントローラ(330)を有し、前記第1のストレージコントローラ(110)と前記第2のストレージコントローラ(150)間において、前記第1のプロセッサ(111)内蔵のDMAコントローラ(343)または前記第2のプロセッサ(151)内蔵のDMAコントローラ(353)が前記ユーザデータを転送し、前記第1のスイッチ(120)内蔵のDMAコントローラ(230)または前記第2のスイッチ(160)内蔵のDMAコントローラ(330)が制御データを転送する。
上記構成により、ストレージ装置100は、異なるデータ転送経路上にあるプロセッサ内蔵のDMAコントローラ343、353と、PCIeスイッチ内蔵のDMAコントローラ230、330を使用して、ユーザデータと制御データをそれぞれ転送する。そして、両者が合流するPCIeスイッチ120、160のポート(NTB220、320)において、制御データを優先して転送することにより、制御データの転送時間を短縮できる。
(3.)上記(2.)に記載のストレージ装置(100)であって、前記第1のストレージコントローラ(110)または前記第2のストレージコントローラ(150)は、転送する制御データのサイズが所定値以上の場合は、前記第1のスイッチ(120)内蔵のDMAコントローラ(230)または前記第2のスイッチ(160)内蔵のDMAコントローラ(330)に制御データを転送させ、転送する制御データのサイズが所定値未満の場合は、前記第1のプロセッサ(111)または前記第2のプロセッサ(151)が、メモリライト命令を実行することにより制御データを転送する。
上記構成により、制御データのサイズが所定値(または閾値)より小さい場合、PCIeスイッチ内蔵のDMAコントローラ230、330による転送よりも、コアライトによる転送の方が、制御データの転送時間を短縮できる。
(4.)上記(1.)に記載のストレージ装置(100)であって、前記第1のリンク(101)、前記第2のリンク(121)、及び前記第4のリンク(161)は、前記第1のスイッチ(120)または前記第2のスイッチ(160)が有する非透過性ブリッジ(NTB220、320)と接続し、前記第3のリンク(122)及び前記第5のリンク(162)は、前記第1のスイッチ(120)または前記第2のスイッチ(160)のアップストリームポート(200、300)と接続する。
上記構成により、非透過性ブリッジ(NTB220、320)では、第2のリンク(121)または第4のリンク(161)からのユーザデータと、第3のリンク(122)または第5のリンク(162)からの制御データを集合させて、第1のリンク(コントローラ間リンク101)へ送信することができる。
(5.)上記(1.)に記載のストレージ装置(100)であって、前記第1のリンク(101)は複数の仮想チャネル(VC0、VC1)を有し、前記第1のリンク(101)上では、前記ユーザデータと前記制御データを異なる前記仮想チャネルで転送し(VC0、VC1)、前記第1のポート(220)と前記第2のポート(320)は、前記仮想チャネルで転送する制御データを、前記ユーザデータより優先して転送する。
上記構成により、コントローラ間リンク101の異なる仮想チャネルでユーザデータと制御データを転送することで、トラフィッククラスなどの優先度制御を実施して制御データを優先的に転送することができる。
(6.)上記(5.)に記載のストレージ装置(100)であって、前記第1のスイッチ(120)内蔵のDMAコントローラ(230)または前記第2のスイッチ(160)内蔵のDMAコントローラ(330)が、前記ユーザデータを転送するパケットよりも高い転送優先度に設定したパケットにより、前記第1のリンク(101)上で制御データを転送する。
スイッチ内蔵のDMAコントローラ230または330が、ユーザデータを転送するパケットよりも、制御データを転送するパケットの転送優先度を高く設定することで、コントローラ間リンク101の仮想チャネルで優先的に制御データを転送することが可能となる。
(7.)上記(5.)に記載のストレージ装置(100)であって、前記第1のスイッチ(120)または前記第2のスイッチ(160)が、前記制御データを転送するパケットの転送優先度を、前記ユーザデータを転送するパケットよりも高い転送優先度に変換して前記第1のリンク(101)へ送信する。
PCIeスイッチ920、960が、ユーザデータを転送するパケットよりも、制御データを転送するパケットの転送優先度を高く設定することで、コントローラ間リンク101の仮想チャネルで優先的に制御データを転送することが可能となる。
(8.)上記(5.)に記載のストレージ装置(100)であって、前記第1のスイッチ(120)は第1の仮想スイッチ(1600)と第2の仮想スイッチ(1601)を有し、さらに前記第1の仮想スイッチ(1600)と前記第2の仮想スイッチ(1601)は第1の非透過性ブリッジ(NTB1640)で接続され、前記第2のスイッチ(160)は第3の仮想スイッチ(1700)と第4の仮想スイッチ(1701)を有し、さらに前記第3の仮想スイッチ(1700)と前記第4の仮想スイッチ(1701)は第2の非透過性ブリッジ(NTB1740)で接続され、前記第2のリンク(1521)は前記第1の仮想スイッチ(1600)のアップストリームポート(1602)と接続し、前記第3のリンク(1522)は前記第2の仮想スイッチ(1601)のアップストリームポート(1606)と接続し、前記第4のリンク(1561)は前記第3の仮想スイッチ(1700)のアップストリームポート(1702)と接続し、前記第5のリンク(1562)は前記第4の仮想スイッチ(1701)のアップストリームポート(1706)と接続し、前記第2の仮想スイッチ(1601)は前記第1のポート(1650)を含み、前記第4の仮想スイッチ(1701)は前記第2のポート(1750)を含む。
上記構成により、ユーザデータとドライブ読み書きデータが転送される仮想スイッチ1600、1700と、制御データとユーザデータが転送される仮想スイッチ1601、1701が論理的に分割される。そして、制御データはユーザデータより転送優先度の高いトラフィッククラスに設定されたPCIeパケットで転送される。これにより、仮想スイッチ1600、1700は、ユーザデータとドライブ読み書きデータの転送の影響を受けずに、ストレージコントローラ1510と1550間で制御データを優先的に転送することが可能となる。
(9.)上記(8.)に記載のストレージ装置(100)であって、前記第1の仮想スイッチ(1600)または前記第3の仮想スイッチ(1700)は、フロントエンドインターフェース(140)または半導体メモリドライブ(102)を接続する。
上記構成により、仮想スイッチ1601、1701は、フロントエンドインターフェース(140)と半導体メモリドライブ(102)との間で、ユーザデータとドライブ読み書きデータの転送の影響を受けずに、ストレージコントローラ1510と1550間で制御データを優先的に転送することが可能となる。
(10.)第1のストレージコントローラ(1910)と第2のストレージコントローラ(1950)を有するストレージ装置(1900)であって、前記第1のストレージコントローラ(1910)は、第1のプロセッサ(111)と、前記第1のプロセッサ(111)に接続された第1のメモリ(112)と、前記第1のプロセッサ(111)に接続されて、第1の外部接続ポート(1901)を有する第1のスイッチ(1920)と、前記第1のメモリ(112)に設定されてユーザデータを格納するキャッシュ領域と、前記第1のメモリ(112)に設定されて制御データを格納する共有領域と、を含み、前記第2のストレージコントローラ(1950)は、第2のプロセッサ(151)と、前記第2のプロセッサ(151)に接続された第2のメモリ(152)と、前記第2のプロセッサ(151)に接続されて、第2の外部接続ポート(1902)を有する第2のスイッチ(1960)と、前記第2のメモリ(152)に設定されてユーザデータを格納するキャッシュ領域と、前記第2のメモリ(152)に設定されて制御データを格納する共有領域と、を含み、前記ストレージ装置(1900)は、前記第1のプロセッサ(111)と前記第1のスイッチ(1920)を、前記ユーザデータを転送するための第2のリンク(1921)と、前記制御データを転送するための第3のリンク(1922)、で接続し、前記第2のプロセッサ(151)と前記第2のスイッチ(160)を、前記ユーザデータを転送するための第4のリンク(1961)と、前記制御データを転送するための第5のリンク(1962)、で接続し、前記第1の外部接続ポート(1901)と前記第2の外部接続ポート(1902)は、複数の仮想チャネルを有し、前記第1の外部接続ポート(1901)と前記第2の外部接続ポート(1902)を、複数の仮想チャネルを有する外部スイッチに接続し、前記第1の外部接続ポート(1901)と前記第2の外部接続ポート(1902)は、前記ユーザデータと前記制御データを異なる前記仮想チャネルで転送する。
上記構成により、複数のストレージノードを相互接続するストレージ装置において、制御データをユーザデータより優先して転送するストレージ装置を実現できる。また、制御データとユーザデータを別のケーブル等の配線で転送する場合よりも、複数のストレージノード間を接続する配線物量を削減できる。
100 ストレージ装置
101 コントローラ間リンク
102 不揮発性半導体メモリドライブ
110、150 ストレージコントローラ
111 プロセッサ
112 メインメモリ
113 共有メモリ
114 キャッシュメモリ
140、180 フロントエンドインターフェース
120、130 PCIeスイッチ
121、122、161、162 PCIeリンク
200、300 アップストリームポート
210、220、310、320 NTBと、NTB
230、330 DMAコントローラ
240 メモリ
250 プロセッサ
340、341、350、351 ルートポート
500 アービトレーションテーブル

Claims (7)

  1. 第1のストレージコントローラと第2のストレージコントローラを有するストレージ装置であって、
    前記第1のストレージコントローラは、
    第1のプロセッサと、
    前記第1のプロセッサに接続された第1のメモリと、
    前記第1のプロセッサに接続されて、第1のポートを有する第1のスイッチと、
    前記第1のメモリに設定されてユーザデータを格納するキャッシュ領域と、
    前記第1のメモリに設定されて制御データを格納する共有領域と、
    前記第1のプロセッサ内蔵のDMAコントローラと、
    前記第1のスイッチ内蔵のDMAコントローラと、
    を含み、
    前記第2のストレージコントローラは、
    第2のプロセッサと、
    前記第2のプロセッサに接続された第2のメモリと、
    前記第2のプロセッサに接続されて、第2のポートを有する第2のスイッチと、
    前記第2のメモリに設定されてユーザデータを格納するキャッシュ領域と、
    前記第2のメモリに設定されて制御データを格納する共有領域と、
    前記第2のプロセッサ内蔵のDMAコントローラと、
    前記第2のスイッチ内蔵のDMAコントローラと、
    を含み、
    前記ストレージ装置は、
    前記第1のポートと前記第2のポートを第1のリンクで接続し、
    前記第1のプロセッサと前記第1のスイッチを、前記ユーザデータを転送するための第2のリンクと、前記制御データを転送するための第3のリンク、で接続し、
    前記第2のプロセッサと前記第2のスイッチを、前記ユーザデータを転送するための第4のリンクと、前記制御データを転送するための第5のリンク、で接続し、
    前記第1のポートと前記第2のポートは、
    前記制御データを、前記ユーザデータより優先して前記第1のリンクで転送し、
    前記第1のストレージコントローラと前記第2のストレージコントローラ間において、前記第1のプロセッサ内蔵のDMAコントローラまたは前記第2のプロセッサ内蔵のDMAコントローラが前記ユーザデータを転送し、前記第1のスイッチ内蔵のDMAコントローラまたは前記第2のスイッチ内蔵のDMAコントローラが制御データを転送し、
    前記第1のストレージコントローラまたは前記第2のストレージコントローラは、
    転送する制御データのサイズが所定値以上の場合は、前記第1のスイッチ内蔵のDMAコントローラまたは前記第2のスイッチ内蔵のDMAコントローラに制御データを転送させ、
    転送する制御データのサイズが所定値未満の場合は、前記第1のプロセッサまたは前記第2のプロセッサが、メモリライト命令を実行することにより制御データを転送することを特徴とするストレージ装置。
  2. 請求項1に記載のストレージ装置であって、
    前記第1のリンク、前記第2のリンク、及び前記第4のリンクは、前記第1のスイッチ
    または前記第2のスイッチが有する非透過性ブリッジと接続し、
    前記第3のリンク及び前記第5のリンクは、前記第1のスイッチまたは前記第2のスイッチのアップストリームポートと接続することを特徴とするストレージ装置。
  3. 請求項1に記載のストレージ装置であって、
    前記第1のリンクは複数の仮想チャネルを有し、
    前記第1のリンク上では、前記ユーザデータと前記制御データを異なる前記仮想チャネルで転送し、
    前記第1のポートと前記第2のポートは、
    前記仮想チャネルで転送する制御データを、前記ユーザデータより優先して転送することを特徴とするストレージ装置。
  4. 請求項3に記載のストレージ装置であって、
    前記第1のスイッチ内蔵のDMAコントローラまたは前記第2のスイッチ内蔵のDMAコントローラが、前記ユーザデータを転送するパケットよりも高い転送優先度に設定したパケットにより、前記第1のリンク上で制御データを転送することを特徴とするストレージ装置。
  5. 請求項3に記載のストレージ装置であって、
    前記第1のスイッチまたは前記第2のスイッチが、前記制御データを転送するパケットの転送優先度を、前記ユーザデータを転送するパケットよりも高い転送優先度に変換して前記第1のリンクへ送信することを特徴とするストレージ装置。
  6. 請求項3に記載のストレージ装置であって、
    前記第1のスイッチは第1の仮想スイッチと第2の仮想スイッチを有し、さらに前記第1の仮想スイッチと前記第2の仮想スイッチは第1の非透過性ブリッジで接続され、
    前記第2のスイッチは第3の仮想スイッチと第4の仮想スイッチを有し、さらに前記第3の仮想スイッチと前記第4の仮想スイッチは第2の非透過性ブリッジで接続され、
    前記第2のリンクは前記第1の仮想スイッチのアップストリームポートと接続し、
    前記第3のリンクは前記第2の仮想スイッチのアップストリームポートと接続し、
    前記第4のリンクは前記第3の仮想スイッチのアップストリームポートと接続し、
    前記第5のリンクは前記第4の仮想スイッチのアップストリームポートと接続し、
    前記第2の仮想スイッチは前記第1のポートを含み、
    前記第4の仮想スイッチは前記第2のポートを含む、ことを特徴とするストレージ装置。
  7. 請求項6に記載のストレージ装置であって、
    前記第1の仮想スイッチまたは前記第3の仮想スイッチは、フロントエンドインターフェースまたは半導体メモリドライブを接続することを特徴とするストレージ装置。
JP2019004734A 2019-01-15 2019-01-15 ストレージ装置 Active JP6899852B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019004734A JP6899852B2 (ja) 2019-01-15 2019-01-15 ストレージ装置
US16/561,154 US10970237B2 (en) 2019-01-15 2019-09-05 Storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019004734A JP6899852B2 (ja) 2019-01-15 2019-01-15 ストレージ装置

Publications (2)

Publication Number Publication Date
JP2020113137A JP2020113137A (ja) 2020-07-27
JP6899852B2 true JP6899852B2 (ja) 2021-07-07

Family

ID=71517576

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019004734A Active JP6899852B2 (ja) 2019-01-15 2019-01-15 ストレージ装置

Country Status (2)

Country Link
US (1) US10970237B2 (ja)
JP (1) JP6899852B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020116694A1 (ko) * 2018-12-07 2020-06-11 엘지전자 주식회사 차량용 장치 및 제어 방법
KR20210046348A (ko) * 2019-10-18 2021-04-28 삼성전자주식회사 복수의 프로세서들에 유연하게 메모리를 할당하기 위한 메모리 시스템 및 그것의 동작 방법
US11159445B1 (en) * 2019-11-26 2021-10-26 Xilinx, Inc. Systems and methods for extending internal endpoints of a network device
US11388060B1 (en) * 2019-11-26 2022-07-12 Xilinx, Inc. Systems and methods for discovery and configuration of a network device
US11106607B1 (en) * 2020-03-31 2021-08-31 Dell Products L.P. NUMA-aware storage system
US11334261B2 (en) * 2020-04-03 2022-05-17 Dell Products L.P. Scalable raid storage controller device system
CN112131154B (zh) * 2020-09-29 2024-06-18 北京计算机技术及应用研究所 一种通道与业务动态匹配的dma传输控制方法
US11550722B2 (en) * 2021-03-02 2023-01-10 Ati Technologies Ulc Method, system, and apparatus for supporting multiple address spaces to facilitate data movement
JP7514584B2 (ja) 2022-03-28 2024-07-11 パナソニックオートモーティブシステムズ株式会社 データ保存システム
US12147686B2 (en) * 2022-03-28 2024-11-19 Panasonic Automotive Systems Co., Ltd. Data storage system
US12079154B2 (en) * 2023-01-10 2024-09-03 Dell Products, L.P. Non-transparent bridge selection
US20240241823A1 (en) * 2023-01-17 2024-07-18 Micron Technology, Inc. Shared function for multi-port memory device

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006092286A (ja) * 2004-09-24 2006-04-06 Ricoh Co Ltd データ転送装置及び画像形成システム
JP4878185B2 (ja) * 2006-03-17 2012-02-15 株式会社リコー データ通信回路および調停方法
JP4958641B2 (ja) * 2007-05-29 2012-06-20 株式会社日立製作所 記憶制御装置及びその制御方法
JP5127491B2 (ja) * 2008-02-08 2013-01-23 株式会社日立製作所 ストレージサブシステム及びこれの制御方法
KR101033928B1 (ko) * 2008-07-01 2011-05-11 삼성전자주식회사 하이브리드 디엠에이를 이용한 고속의 데이터 처리 장치 및방법
US20110153875A1 (en) * 2009-12-18 2011-06-23 Plx Technology, Inc. Opportunistic dma header insertion
WO2012172691A1 (ja) * 2011-06-17 2012-12-20 株式会社日立製作所 スイッチ及びそれを用いた計算機システム及びパケット転送制御方法
JP5833756B2 (ja) * 2012-03-23 2015-12-16 株式会社日立製作所 二重化共有メモリアクセス方法と二重化共有メモリアクセス方法を用いたストレージ装置
US9363315B2 (en) * 2012-08-28 2016-06-07 Skyera, Llc Integrated storage and switching for memory systems
US9336173B1 (en) * 2013-12-20 2016-05-10 Microsemi Storage Solutions (U.S.), Inc. Method and switch for transferring transactions between switch domains
US9542320B2 (en) * 2015-01-12 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Multi-node cache coherency with input output virtualization
US10402361B2 (en) * 2017-04-28 2019-09-03 Hitachi, Ltd. Storage system
WO2018198325A1 (ja) * 2017-04-28 2018-11-01 株式会社日立製作所 ストレージシステム
JP2019016063A (ja) * 2017-07-04 2019-01-31 株式会社リコー データ転送装置及びデータ転送方法

Also Published As

Publication number Publication date
US10970237B2 (en) 2021-04-06
JP2020113137A (ja) 2020-07-27
US20200226078A1 (en) 2020-07-16

Similar Documents

Publication Publication Date Title
JP6899852B2 (ja) ストレージ装置
US6877059B2 (en) Communications architecture for a high throughput storage processor
JP4445998B2 (ja) 調停パケットプロトコルを有するメモリ調停システムおよび方法
US8156270B2 (en) Dual port serial advanced technology attachment (SATA) disk drive
JP4392877B2 (ja) ディスクアレイ制御装置
US8266353B2 (en) Serial advanced technology attachment (SATA ) switch
US6792506B2 (en) Memory architecture for a high throughput storage processor
US6581130B1 (en) Dynamic remapping of address registers for address translation between multiple busses
US8200870B2 (en) Switching serial advanced technology attachment (SATA) to a parallel interface
US6675253B1 (en) Dynamic routing of data across multiple data paths from a source controller to a destination controller
US7426604B1 (en) Virtual output buffer architecture
US6813689B2 (en) Communications architecture for a high throughput storage processor employing extensive I/O parallelization
KR20110113351A (ko) 네트워크 효율성을 고려한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치
US20180253391A1 (en) Multiple channel memory controller using virtual channel
US7209979B2 (en) Storage processor architecture for high throughput applications providing efficient user data channel loading
US6865643B2 (en) Communications architecture for a high throughput storage processor providing user data priority on shared channels
JP4526509B2 (ja) ディスクアレイ制御装置
JP2023027970A (ja) メモリシステム
JP2009093225A (ja) ストレージ制御装置、方法及びプログラム並びにストレージ装置
KR20220132333A (ko) PCIe 인터페이스 장치 및 그 동작 방법
JP6951016B2 (ja) 切り替え回路、管理システム、情報処理装置及びアクセス頻度の切り替え方法
JP4662565B2 (ja) ディスクアレイ制御装置及びディスクアレイシステム
JP4571963B2 (ja) ディスクアレイ制御装置
JP4452697B2 (ja) ディスクアレイ制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210421

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: 20210601

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210615

R150 Certificate of patent or registration of utility model

Ref document number: 6899852

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350