WO2015162745A1 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
WO2015162745A1
WO2015162745A1 PCT/JP2014/061523 JP2014061523W WO2015162745A1 WO 2015162745 A1 WO2015162745 A1 WO 2015162745A1 JP 2014061523 W JP2014061523 W JP 2014061523W WO 2015162745 A1 WO2015162745 A1 WO 2015162745A1
Authority
WO
WIPO (PCT)
Prior art keywords
area
memory
data area
address
virtual address
Prior art date
Application number
PCT/JP2014/061523
Other languages
English (en)
French (fr)
Inventor
尚也 岡田
正法 高田
晋太郎 工藤
野中 裕介
理 竹内
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to JP2016514630A priority Critical patent/JP6190046B2/ja
Priority to PCT/JP2014/061523 priority patent/WO2015162745A1/ja
Priority to US15/125,313 priority patent/US20170075816A1/en
Publication of WO2015162745A1 publication Critical patent/WO2015162745A1/ja

Links

Images

Classifications

    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Abstract

 ストレージシステム内の共有メモリの容量が変化しても、ストレージシステム内の制御装置は共有メモリ内の特定の記憶領域に対し固定の仮想アドレスを指定してアクセスする。二つの制御サブシステムの中の自制御サブシステム内の複数のメモリ内の記憶領域を示す物理アドレスの空間と、他制御サブシステム内の複数のメモリ内の記憶領域を示す物理アドレスの空間とが、自制御サブシステム内のプロセッサ及び入出力デバイスの夫々により用いられる仮想アドレスの空間に関連付けられる。中継デバイスは、他制御サブシステムから自制御サブシステムへ転送されるデータを受信した場合、他制御サブシステムにより指定されデータの転送先を示す仮想アドレスを、予め設定されたオフセットに基づいて、自制御サブシステム内の仮想アドレスに変換し、変換された仮想アドレスへデータを転送する。

Description

ストレージシステム
 本発明は、ストレージシステムに関する。
 可用性の向上のために、二つのコントローラを有し、各コントローラが共有メモリを有するストレージシステムが知られている。各コントローラは、コントローラ間の接続を介して、他方のコントローラの共有メモリにアクセスすることができる。これにより、二つのコントローラの共有メモリに二重化してデータを格納することができる。
 これに関し、特許文献1には、複数のノードがNTB(Non-Transparent Bridge)を介してスイッチに接続され、スイッチがアドレス変換量を算出して送信し、NTBに設定することが開示されている。
 また、性能の向上のために、一つのコントローラが、互いに接続された二つのプロセッサを有し、各プロセッサに接続された共有メモリを有するストレージシステムが知られている。各プロセッサは、プロセッサ間の接続を介して、他方のプロセッサの共有メモリにアクセスすることができる。
 これに関し、複数のプロセッサによる処理が対称でないアーキテクチャであるAMP(Asymmetric Multiprocessing)が知られている。この場合、すべてのプロセッサが同一の仮想アドレスを用いてデータを扱うために、仮想アドレスを物理アドレスに変換し、共有メモリの物理アドレスにアクセスする。また、この場合、共有メモリの物理アドレス空間において、二つのプロセッサに夫々接続された二つの共有メモリの記憶領域は、均等にアクセスされるように配置されている。これにより、二つのプロセッサは二つの共有メモリの物理的位置を意識すること無くアクセスすることができる。しかし、プロセッサ間の通信が頻繁に発生することにより性能が低下する。
 また、複数のプロセッサによる共有メモリへのアクセス速度が均一でないアーキテクチャであるNUMA(Non-Uniform Memory Access)が知られている。
 これに関し、特許文献2には、NUMAシステム内の各ノードにノードの位置を識別する識別番号を割り当て、識別番号に基づいて効率的なアクセス方法を決定することが開示されている。
国際公開第2012/157103号 米国特許第7996433号明細書
 ホストコンピュータから転送したデータをキャッシュするデータ量を増大させることを目的として、高可用実現のために冗長化された二つのコントローラの一つを停止してそのコントローラ内の共有メモリを増設した場合など、共有メモリの容量が変化する場合がある。このとき、一つのコントローラ内の物理アドレス空間が変化すること、また、一つのコントローラがもう一つのコントローラの物理アドレス空間の情報を持たないため、一方のコントローラが他方のコントローラ内の共有メモリへアクセスすると、アクセスに失敗する場合や共有メモリ内のデータを破壊する場合がある。これを防ぐために、ストレージシステムの管理者は、共有メモリの容量の変化に応じて、コントローラ間のアドレス変換の情報を再設定することが必要になる。
 また、一つのコントローラが複数のプロセッサを有する場合、一つのプロセッサに接続された共有メモリの容量が変化する場合がある。このとき、或るプロセッサが同一コントローラ内の他のプロセッサに接続された共有メモリへアクセスすると、アクセスに失敗する場合や共有メモリ内のデータを破壊する場合がある。これを防ぐために、ストレージシステムの管理者は、共有メモリの容量の変化に応じて、コントローラ内のアドレス変換の情報を再設定することが必要になる。
 このような共有メモリの容量の変化をアドレス変換の情報に反映させる作業の工数及びコストは膨大になる。
 上記課題を解決するために、本発明の一態様であるストレージシステムは、記憶デバイスと、前記記憶デバイスに接続される制御システムと、を備える。前記制御システムは、互いに接続されている二つの制御サブシステムを含む。前記二つの制御サブシステムの夫々は、互いに接続される複数の制御装置と、前記複数の制御装置に夫々接続される複数のメモリと、を含む。前記複数の制御装置の夫々は、プロセッサと、前記プロセッサに接続される入出力デバイスと、を含む。前記入出力デバイスは、前記二つの制御サブシステムの中の他制御サブシステム内の制御装置に接続される中継デバイスを含む。前記二つの制御サブシステムの中の自制御サブシステム内の複数のメモリ内の記憶領域を示す物理アドレスの空間と、前記他制御サブシステム内の複数のメモリ内の記憶領域を示す物理アドレスの空間とが、前記自制御サブシステム内のプロセッサ及び入出力デバイスの夫々により用いられる仮想アドレスの空間に関連付けられる。前記中継デバイスは、前記他制御サブシステムから前記自制御サブシステムへ転送されるデータを受信した場合、前記他制御サブシステムにより指定され前記データの転送先を示す仮想アドレスを、予め設定されたオフセットに基づいて、前記自制御サブシステム内の仮想アドレスに変換し、前記変換された仮想アドレスへ前記データを転送する。
 本発明の一態様によれば、ストレージシステム内の共有メモリの容量が変化しても、ストレージシステム内の制御装置は共有メモリ内の特定の記憶領域に対し固定の仮想アドレスを指定してアクセスすることができる。
実施例の計算機システムの構成を示す。 物理アドレス空間の構成を示す。 物理アドレス空間とコア仮想アドレス空間とIO仮想アドレス空間との関係を示す。 コア変換テーブルを示す。 IO変換テーブルを示す。 クラスタ間のアドレス空間の関係を示す。 ハードウェア構成情報を示す。 物理アドレステーブルを示す。 クラスタ110の起動処理を示す。 コア変換テーブル作成処理を示す。 IO変換テーブル作成処理を示す。 ホストI/F転送コマンド内のパラメータを示す。 DMA転送コマンド内のパラメータを示す。 PCIeデータ転送パケット内のパラメータを示す。 ホストI/Fライト処理を示す。 DMAライト処理を示す。 実施例2におけるクラスタ間のアドレス空間の関係を示す。 実施例2のコア拡張変換テーブルを示す。 拡張仮想アドレステーブルを示す。 実施例2のコア変換テーブル作成処理を示す。 実施例3のIO変換テーブル作成処理を示す。
 以後の説明では「aaaテーブル」、「aaaリスト」、「aaaDB」、「aaaキュー」等の表現にて本発明の情報を説明するが、情報はテーブル、リスト、DB、キュー、等のデータ構造以外で表現されていてもよい。そのため、情報がデータ構造に依存しないことを示すために「aaaテーブル」、「aaaリスト」、「aaaDB」、「aaaキュー」等について「aaa情報」と呼ぶことがある。
 さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いるが、これらについてはお互いに置換が可能である。
 以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御デバイス)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理はストレージコントローラ等の計算機、情報処理装置が行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
 また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディア(computer-readable memory media)によって各計算機にインストールされてもよい。この場合、プログラム配布サーバはプロセッサ(例えばCPU:Central Processing Unit)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムを記憶している。そして、配布プログラムをCPUが実行することで、プログラム配布サーバのCPUは配布対象のプログラムを他の計算機に配布する。
 以下、本発明の実施例について図面を用いて説明する。
 以下、実施例の計算機システムの構成について説明する。
 図1は、実施例の計算機システムの構成を示す。
 この計算機システムは、一つのストレージコントローラ100と、二つのドライブボックス200と、四つのホスト計算機300とを含む。ドライブボックス200は、二つのドライブ210を含む。ドライブボックス200は、ストレージコントローラ100に接続されており、不揮発性半導体メモリやHDD(Hard Disk Drive)などである。ホスト計算機300は、ストレージコントローラ100に接続されており、ストレージコントローラ100を介してドライブ210内のデータにアクセスする。
 ストレージコントローラ100は、互いに同じ構成を有する二つのクラスタ(CL)110を含む。二つのクラスタ110を区別する場合、CL0及びCL1と呼ぶ。クラスタ110は、MP(Microprocessor Package)120と、メモリ(MM)140と、ドライブI/F(Interface)150と、ホストI/F160との組を、二組含む。一つのクラスタ110内の二つのMP120を区別する場合、夫々MP0及びMP1と呼ぶ。一つのクラスタ110内の二つのメモリ140を区別する場合、夫々MM0及びMM1と呼ぶ。MM0及びMM1はそれぞれ、MP0及びMP1に接続されている。メモリ140は、例えばDRAM(Dynamic Random Access Memory)である。メモリ140は、MP120により用いられるプログラム及びデータを格納する。
 本実施例において、CL0とCL1が同一の構成を有しているが、互いに異なる構成を有していても良い。また、CL0内のメモリ140の容量とCL1内のメモリ140の容量とが互いに異なっていても良い。
 MP120は、コア121と、IOMMU(Input/Output Memory Management Unit)122と、メモリI/F123と、MPI/F124と、DMA(DMAC:Direct Memory Access Controller)125と、NTB126と、PCIe(PCI Express:Peripheral Component Interconnect Express)I/F135、136、137、138とを含む。コア121と、IOMMU122と、メモリI/F123と、MPI/F124と、PCIeI/F135、136、137、138との間は、MP内部のIOバスで接続されている。一つのクラスタ110内のMP0及びMP1に夫々設けられている二つのNTB126を区別する場合、夫々NTB0及びNTB1と呼ぶ。また、PCIeバスに接続されているデバイスをIOデバイスと呼ぶことがある。IOデバイスは、DMA125、NTB126、ドライブI/F150、ホストI/F160などである。PCIeI/F135、136、137、138の夫々には、PCIeポートIDが与えられる。
 コア121は、メモリ140に格納されているプログラム及びデータに基づいてストレージコントローラ100の制御を行う。なお、このプログラムが、コンピュータにより読み取り可能な記憶媒体に格納され、コア121がこの記憶媒体からプログラムを読み出しても良い。なお、コア121は、CPUなどのマイクロプロセッサのコアであっても良いし、マイクロプロセッサ自体であっても良い。
 メモリI/F123は、自MPに対応するメモリ140に接続されている。
 MPI/F124は、自クラスタ内の他MP内のMPI/Fに接続されており、自MPと他MPの間の通信を制御する。
 DMA125は、PCIeバス及びPCIeI/F135を介してIOバスに接続されており、自MPのメモリ140と、IOデバイス又は他MPのメモリ140との間の通信を制御する。
 NTB126は、PCIeバス及びPCIeI/F136を介してIOバスに接続されており、他クラスタの対応するMP120のNTB126にPCIeバスを介して接続されており、自クラスタと他クラスタの間の通信を制御する。
 PCIeI/F137は、PCIeバスを介して、自MPに対応するドライブI/F150に接続されている。PCIeI/F138は、PCIeバスを介して、自MPに対応するホストI/F160に接続されている。
 IOデバイスがメモリ140へアクセスする際、当該IOデバイスに接続されているPCIeI/Fは、IOMMU122を用いて、当該IOデバイスにより用いられる仮想アドレスを物理アドレスに変換し、その物理アドレスにアクセスする。
 ドライブI/F150は、対応するドライブ210に接続されている。ホストI/F160は、対応するホスト計算機300に接続されている。
 本発明の表現のための用語について説明する。ストレージシステムは、ストレージコントローラ100及びドライブボックス200等に対応する。記憶デバイスは、ドライブ210等に対応する。制御システムは、ストレージコントローラ100等に対応する。制御サブシステムは、クラスタ110等に対応する。制御装置は、MP120等に対応する。メモリは、メモリ140等に対応する。プロセッサは、コア121等に対応する。入出力デバイスは、IOデバイス(DMA125、NTB126、ドライブI/F150、ホストI/F160)及びそれに接続されているPCIeI/F(135,136,137,138)等に対応する。中継デバイスは、NTB126及びそれに接続されているPCIeI/F136等に対応する。メモリ変換デバイスは、IOMMU122等に対応する。
 図2は、物理アドレス空間の構成を示す。
 メモリ140内の記憶領域の物理アドレスを示す物理アドレス空間には、先頭から順に、DRAM領域と、予約領域と、MMIO(Memory Mapped Input/Output)領域とが連続して配置される。
 DRAM領域には、自クラスタ内の二つのメモリ140内の記憶領域が連続して割り当てられている。DRAM領域には、NUMAに基づき、先頭から順に、MM0割当領域と、MM1割当領域とが連続して配置される。MM0割当領域には、自クラスタ内のMM0の記憶領域が割り当てられている。MM1割当領域には、自クラスタ内のMM1の記憶領域が割り当てられている。
 一つのMP120及び一つのメモリ140に対応する割当領域には、制御データ領域と、共有データ領域と、ユーザデータ領域とが連続して配置される。制御データ領域は、自MPのコア121がプログラムとして実行可能なプログラムコードを含む制御データを格納し、自MP内のコア121によるアクセスが許可されており、自MP以外のコア121及びIOデバイスによるアクセスが禁止されている。共有データ領域は、自MPの自分MP内の複数のコア121が読み書きできる情報となる共有データを格納し、ストレージコントローラ100内のすべてのコア121によるアクセスが許可されており、IOデバイスによるアクセスが禁止されている。ユーザデータ領域は、自MPにより管理されるホスト計算機300から転送されたユーザデータを格納し、ストレージコントローラ100内のすべてのコア121及びIOデバイスによるアクセスが許可されている。制御データ領域は、自クラスタの構成を示すハードウェア構成情報と、コア121による仮想アドレスの変換に用いられるコア変換テーブルと、IOMMU122による仮想アドレスの変換に用いられるIO変換テーブルとを格納する。制御データ領域は更に、物理アドレステーブルを格納していても良い。制御データ領域は、コア変換テーブル及びIO変換テーブルの基となるベーステーブルを予め格納していても良い。これらのデータについては後述する。また、これらのデータのポインタがコア121のレジスタに設定されることにより、コア121がこれらのデータを読み出しても良い。
 この図において、制御データ領域、共有データ領域、及びユーザデータ領域には、対応するMP120の識別子を付けて区別する。MM0割当領域には、先頭から順に、MP0制御データ領域と、MP0共有データ領域と、MP0ユーザデータ領域とが連続して配置される。MM1割当領域には、先頭から順に、MP1制御データ領域と、MP1共有データ領域と、MP1ユーザデータ領域とが連続して配置される。
 予約領域は、アクセス不可能な記憶領域である。
 MMIO領域は、MM1割当領域より後の、予め定められたMMIO先頭アドレスから配置される。MMIO先頭アドレスは、DRAM領域のサイズに比べて十分大きい。この例において、DRAM領域のサイズは、16GBであり、MMIO先頭アドレスは、先頭から256GBの位置である。MMIO領域は、NTB領域を含む。NTB領域には、他クラスタのDRAM領域がマッピングされている。ここでは、自クラスタのメモリ140の容量と他クラスタのメモリ140の容量とが等しいとする。このとき、NTB領域のサイズは、DRAM領域のサイズに等しい。他クラスタの物理アドレス空間におけるDRAM領域内の各領域の配置は、自クラスタの物理アドレス空間におけるDRAM領域内の各領域の配置と同一である。言い換えれば、NTB領域は、他クラスタの物理アドレス空間におけるDRAM領域に、MMIO先頭アドレスのオフセットを加えた配置を有する。
 この物理アドレス空間によれば、MM0割当領域が一つにまとめて配置され、MM1割当領域が一つにまとめて配置されることにより、二つのメモリへのアクセスを均等化する物理アドレス空間に比べて、MP間の通信を低減し、ストレージコントローラ100の性能を向上させることができる。また、物理アドレス空間において、一つのメモリ140の領域内に、制御データ領域、共有データ領域、及びユーザデータ領域を配置することにより、デバイス毎にアクセス権が異なる記憶領域を配置することができる。
 図3は、物理アドレス空間とコア仮想アドレス空間とIO仮想アドレス空間との関係を示す。
 コア121は、コア121のための仮想アドレスと物理アドレスの関連を示すコア変換テーブルを作成し、メモリ140に保存する。コア121に対するコマンドは、メモリ140内の対象の記憶領域を仮想アドレスで指定する。コマンドは、例えばプログラムとしてメモリ140等に格納される。コア121は、コア変換テーブルに基づいて、指定された仮想アドレスを物理アドレスに変換し、その物理アドレスにアクセスする。コア121で指定される仮想アドレスの空間をコア仮想アドレス空間と呼ぶ。
 コア121は、IOデバイスのための仮想アドレスと物理アドレスの関連を示すIO変換テーブルを作成し、メモリ140に保存する。IOデバイスに対するコマンドは、メモリ140内の対象の記憶領域を仮想アドレスで指定する。IOデバイスがメモリ140にアクセスする際、IOMMU122は、IO変換テーブルを用いて、指定された仮想アドレスを物理アドレスに変換する。IOデバイスで指定される仮想アドレスの空間をIO仮想アドレス空間と呼ぶ。
 コア仮想アドレス空間には、先頭から順に、MP0制御データ領域と、MP0共有データ領域と、MP0ユーザデータ領域と、MP間予約領域と、MP1制御データ領域と、MP1共有データ領域と、MP1ユーザデータ領域と、クラスタ間予約領域と、MMIO領域とが連続して配置される。このうち、MP0制御データ領域と、MP0共有データ領域と、MP0ユーザデータ領域と、MP1制御データ領域と、MP1共有データ領域と、MP1ユーザデータ領域と、MMIO領域とに格納されるデータは、物理アドレス空間と同一である。以後、各種の予約領域を、単に予約領域と呼ぶことがある。予約領域は、メモリ140の増設などメモリ140の容量の変化を契機に、DRAM領域として割り当てられても良い。又は、意図的にIOデバイスやコア121によるメモリアクセスを回避したい場合に、IOデバイスやコア121がアクセスできない記憶領域として用いられても良い。
 本実施例においては、仮想アドレス空間において、制御データ領域や共有データ領域のように容量が変わらないことが前提となるデータ領域に続けて、ユーザデータ領域のように容量が可変である容量可変データ領域が配置される。更に、仮想アドレス空間において、容量可変データ領域の終端アドレスの後に、物理アドレス空間へのマッピングを行わないことなどによりメモリアクセスが出来ないようにした記憶領域(予約領域やマージンと呼ぶ)が配置され、その後に次の種別のデータ領域が配置される。このような配置とすることで、容量が変化した場合に、容量が変化しないデータ領域についてのアドレス空間のマッピングを変化させる必要がなく、当該容量可変データ領域の終端アドレスに関するマッピングを変化させるだけでよい。
 尚、少なくとも容量可変データ領域の終端アドレスの後にマージンを設けて次の種別のデータ領域を配置するようにすれば、上記実施例と異なる順序で各データ領域が配置されてもマッピング変更の負荷を低減するという効果を得ることができる。
 MM0割当領域(MP0制御データ領域と、MP0共有データ領域と、MP0ユーザデータ領域)について、コア仮想アドレス空間におけるアドレス範囲は、物理アドレス空間におけるアドレス範囲と等しい。
 MM1割当領域(MP1制御データ領域と、MP1共有データ領域と、MP1ユーザデータ領域)について、コア仮想アドレス空間における先頭アドレスは、物理アドレス空間における先頭アドレスより大きく、予め定められたMP1先頭アドレスに設定される。MP0ユーザデータ領域の終端アドレスの最大値は、MP0に割り当てられるメモリ140の最大容量になる。MP120はMM0とMM1を認識する必要があるため、MP0に割り当てられるメモリ140の最大容量は、MP120が認識しうる最大のメモリ容量の半分に相当する。よって、MP1先頭アドレスは、MP0ユーザデータ領域の終端アドレスの最大値より大きくなる。この例において、MP0ユーザデータ領域の終端アドレスは、8GBであり、MP1先頭アドレスは、先頭から32GBの位置である。これにより、コア仮想アドレス空間におけるMM0割当領域とMM1割当領域の間には、アクセス不可能なMP間予約領域が配置される。
 コア仮想アドレス空間におけるMMIO領域の先頭アドレスは、MMIO先頭アドレスである。これにより、MMIO領域について、コア仮想アドレス空間におけるアドレス範囲は、物理アドレス空間におけるアドレス範囲に等しい。MMIO先頭アドレスは、コア仮想アドレス空間におけるMP1ユーザデータ領域の終端アドレスより大きい。この例において、MP1ユーザデータ領域の終端アドレスは、先頭から16GBの位置であり、MMIO先頭アドレスは、先頭から256GBの位置である。これにより、コア仮想アドレス空間におけるMP1ユーザデータ領域とMMIO領域の間には、アクセス不可能なクラスタ間予約領域が配置される。
 コア仮想アドレス空間において、自クラスタのMMIO領域は、他クラスタのDRAM領域に対応する。また、他クラスタのコア仮想アドレス空間におけるDRAM領域内の各領域の先頭アドレスは、自クラスタのコア仮想アドレス空間におけるDRAM領域内の各領域の先頭アドレスに等しい。これにより、自クラスタ内のコア121は、他クラスタのメモリ140の容量が変化しても、固定の仮想アドレスを用いて他クラスタ内のメモリ140内の特定の記憶領域にアクセスすることができる。
 以後、或るMP120の制御データ領域と共有データ領域を合わせた領域を、システムデータ領域と呼ぶことがある。システムデータ領域は、自クラスタ内のコアによるアクセスが許可され、IOデバイスによるアクセスが禁止されている。ここでは、MP0のシステムデータ領域を、MP0システムデータ領域と呼び、MP1のシステムデータ領域を、MP1システムデータ領域と呼ぶ。
 IO仮想アドレス空間には、先頭から順に、MP0保護領域と、MP0ユーザデータ領域と、MP間保護領域と、MP1保護領域と、MP1ユーザデータ領域と、クラスタ間保護領域と、MMIO領域とが連続して配置される。以後、各種の保護領域を、単に保護領域と呼ぶことがある。保護領域は、物理アドレス空間にマッピングされるが、メモリアクセス権の設定によりメモリアクセスに制約が生じている記憶領域を指す。保護領域を設け、クラスタ110間のデータ転送において、クラスタ110が他方のクラスタ110のアドレス空間を自己のアドレス空間にマッピングすることにより、クラスタ110側が他方のクラスタ110から転送されるデータの受領可否を制御することができる。よってクラスタ110が他方のクラスタ110のアドレス空間マッピングの情報を持たなくてもメモリアクセス保護機能を実現できる。
 IO仮想アドレス空間におけるMP0保護領域のアドレス範囲は、コア仮想アドレス空間におけるMP0システムデータ領域のアドレス範囲に等しい。MP0保護領域は、IOデバイスからアクセス不可能である。
 MP0ユーザデータ領域について、IO仮想アドレス空間におけるアドレス範囲は、コア仮想アドレス空間におけるアドレス範囲に等しい。
 IO仮想アドレス空間におけるMP間保護領域のアドレス範囲は、コア仮想アドレス空間におけるMP間予約領域のアドレス範囲に等しい。MP間保護領域は、IOデバイスからアクセス不可能である。
 IO仮想アドレス空間におけるMP1保護領域のアドレス範囲は、コア仮想アドレス空間におけるMP1システムデータ領域のアドレス範囲に等しい。MP1保護領域は、IOデバイスからアクセス不可能である。
 MP1ユーザデータ領域について、IO仮想アドレス空間におけるアドレス範囲は、コア仮想アドレス空間におけるアドレス範囲に等しい。
 IO仮想アドレス空間におけるMMIO領域の先頭アドレスは、MMIO先頭アドレスである。これにより、MMIO領域について、IO仮想アドレス空間におけるアドレス範囲は、コア仮想アドレス空間におけるアドレス範囲に等しい。これにより、IO仮想アドレス空間におけるクラスタ間保護領域のアドレス範囲は、コア仮想アドレス空間におけるクラスタ間予約領域のアドレス範囲に等しい。クラスタ間保護領域は、IOデバイスからアクセス不可能である。
 コア仮想アドレス空間と同様、IO仮想アドレス空間において、自クラスタのMMIO領域は、他クラスタのDRAM領域に対応する。また、他クラスタのIO仮想アドレス空間におけるDRAM領域内の各領域の先頭アドレスは、自クラスタのIO仮想アドレス空間におけるDRAM領域内の各領域の先頭アドレスに等しい。これにより、自クラスタ内のIOデバイスは、他クラスタのメモリ140の容量が変化しても、固定の仮想アドレスを用いて、他クラスタ内のメモリ140内の特定の記憶領域にアクセスすることができる。
 前述のようにMMIO先頭アドレスは、DRAM領域のサイズに比べて十分大きい。これにより、自クラスタは、自クラスタのメモリ140の容量の変化に依らず、固定の仮想アドレスを用いて、他クラスタのメモリ140内の特定の記憶領域へアクセスすることができる。また、MM0割当領域のサイズに比べて十分大きいMP1先頭アドレスからMM1割当領域を開始することにより、ストレージコントローラ100内のコア121又はIOデバイスは、メモリ140の容量の変化に依らず、固定の仮想アドレスを用いて、MM1内の特定の記憶領域へアクセスすることができる。また、IO仮想アドレス空間に保護領域を設けることにより、MP0システムデータ領域とMP1システムデータ領域に対するIOデバイスからのアクセスを防ぐことができる。
 なお、物理アドレス空間、コア仮想アドレス空間、及びIO仮想アドレス空間において、DRAM領域の先頭アドレスを予め設定された自制御サブシステムアドレスに設定し、MMIO領域の先頭アドレスを予め設定された他制御サブシステムアドレスに設定しても良い。本実施例において、自制御サブシステムアドレスは、アドレス空間の先頭であり、他制御サブシステムアドレスは、MMIO先頭アドレスである。
 また、コア仮想アドレス空間及びIO仮想アドレス空間において、MP0システムデータ領域の先頭アドレスを予め設定された第一システムデータアドレスに設定し、MP1システムデータ領域の先頭アドレスを予め設定された第二システムデータアドレスに設定しても良い。本実施例において、第二システムデータアドレスは、アドレス空間の先頭であり、第二システムデータアドレスは、MP1先頭アドレスである。
 図4は、コア変換テーブルを示す。
 ストレージコントローラ100は、メモリ140内の記憶領域を、複数のページに分割して管理する。コア変換テーブルは、ページテーブルであり、ページ毎のエントリを有する。
 一つのページのエントリは、ページ番号(#)と、領域種別と、物理アドレスと、ページサイズと、仮想アドレスと、アクセス権とのフィールドを有する。ページ番号は、当該ページの識別子を示す。領域種別は、当該ページが属する領域の種別を示す。領域種別は、例えば、制御データ領域(制御)、共有データ領域(共有)、ユーザデータ領域(ユーザ)の何れかを示す。物理アドレスは、物理アドレス空間における当該ページの先頭アドレスを示す。ページサイズは、当該ページのサイズを示す。仮想アドレスは、コア仮想アドレス空間における当該ページの先頭アドレスを示す。アクセス権は、自MPのコアによる当該ページへのアクセス権を示し、Readアクセス権と、Writeアクセス権と、Executeアクセス権とを有する。Readアクセス権は、当該ページへのReadアクセスの可否を示す。Writeアクセス権は、当該ページへのWriteアクセスの可否を示す。Executeアクセス権は、当該ページに格納されているデータについてコア121がプログラム実行可能なコードとして扱えるかどうかを示す。
 コア変換テーブルは、コア121により用いられる仮想アドレスを、物理アドレスに関連付けている。これにより、コア121は、メモリ140の容量の変化に依らず、固定の仮想アドレスを用いて特定の記憶領域へアクセスすることができる。また、メモリ140の容量の変化が発生しても、コア121へのコマンドを含むプログラムの修正を避けることができる。
 図5は、IO変換テーブルを示す。
 IO変換テーブルは、ページテーブルであり、ページ毎のエントリを有する。
 一つのページのエントリは、ページ番号(#)と、変換有効フラグと、対象デバイスと、物理アドレスと、ページサイズと、仮想アドレスと、アクセス権とのフィールドを有する。ページ番号は、当該ページの識別子を示す。変換有効フラグは、当該ページの仮想アドレスと物理アドレスの変換が行われるか否かを示す。対象デバイスは、当該ページへアクセスするIOデバイスの識別子を示す。物理アドレスは、物理アドレス空間における当該ページの先頭アドレスを示す。ページサイズは、当該ページのサイズを示す。仮想アドレスは、IO仮想アドレス空間における当該ページの先頭アドレスを示す。アクセス権は、Readアクセス権と、Writeアクセス権とを有する。Readアクセス権は、当該ページへのReadアクセスの可否を示す。Writeアクセス権は、当該ページへのWriteアクセスの可否を示す。
 IO変換テーブルは、一つの物理アドレスに複数のIOデバイスを関連付けていても良い。また、IO変換テーブルは、一つの仮想アドレスに複数のIOデバイスを関連付けていても良い。
 IO変換テーブルは、IOデバイスが用いる仮想デバイスに対し、物理アドレスを関連付けている。これにより、IOデバイスは、メモリ140の容量の変化に依らず、固定の仮想アドレスを用いて特定の記憶領域へアクセスすることができる。また、メモリ140の容量の変化が発生しても、IOデバイスへのコマンドを含むプログラムの修正を避けることができる。
 なお、コア変換テーブル及びIO変換テーブルにおいて、仮想アドレスは仮想ページ番号で表されても良く、物理アドレスは物理ページ番号で表されても良い。
 コア121が、自クラスタ内のメモリ140の容量に基づいて、コア変換テーブル及びIO変換テーブルを作成することにより、自クラスタ内のメモリ140の容量が変化しても、特定の記憶領域に固定の仮想アドレスを関連付けることができる。
 図6は、クラスタ間のアドレス空間の関係を示す。
 この図は、CL0内のコア121により用いられるCL0内のコア仮想アドレス空間であるCL0コア仮想アドレス空間と、CL0内の物理アドレス空間であるCL0物理アドレス空間と、CL0内のコア及びCL1内のIOデバイスにより用いられるCL1内のIO仮想アドレス空間であるCL1IO仮想アドレス空間と、CL1内の物理アドレス空間であるCL1物理アドレス空間とを示す。ここでのCL0内の二つのメモリ140の容量は、CL1内の二つのメモリ140の容量に等しいとする。夫々のシステムデータ領域、ユーザデータ領域には、対応するクラスタ110の識別子とMP120の識別子とを付けて区別する。
 CL0コア仮想アドレス空間には、先頭から順に、DRAM領域と、MMIO領域とが連続して配置される。
 CL0コア仮想アドレス空間のDRAM領域には、先頭から順に、CL0MP0システムデータ領域と、CL0MP0ユーザデータ領域と、CL0MP間予約領域と、CL0MP1システムデータ領域と、CL0MP1ユーザデータ領域と、クラスタ間予約領域とが連続して配置される。
 CL0内のコア121が、DRAM領域内の仮想アドレスを指定するコマンドを取得すると、当該コアは、指定された仮想アドレスを物理アドレスに変換し、変換された物理アドレスにアクセスする。
 CL0物理アドレス空間には、先頭から順に、CL0MP0システムデータ領域と、CL0MP0ユーザデータ領域と、CL0MP1システムデータ領域と、CL0MP1ユーザデータ領域とが連続して配置される。
 CL0コア仮想アドレス空間のMMIO領域には、先頭から順に、CL1MP0保護領域と、CL1MP0システムデータ領域と、CL1MP0ユーザデータ領域と、CL1MP間保護領域と、CL1MP1保護領域と、CL1MP1システムデータ領域と、CL1MP1ユーザデータ領域と、CL1クラスタ間保護領域とが連続して配置される。
 CL0内のコア121が、MMIO領域内の仮想アドレスを指定するコマンドを取得すると、当該コアは、NTB126を介してCL1へアクセスする。CL1内のNTB126は、CL0コア仮想アドレス空間のMMIO領域内の仮想アドレスを、CL1IO仮想アドレス空間のDRAM領域内の仮想アドレスに変換する。
 CL1IO仮想アドレス空間のDRAM領域には、CL0コア仮想アドレス空間のMMIO領域と同様、先頭から順に、CL1MP0保護領域と、CL1MP0システムデータ領域と、CL1MP0ユーザデータ領域と、CL1MP間保護領域と、CL1MP1保護領域と、CL1MP1システムデータ領域と、CL1MP1ユーザデータ領域と、CL1クラスタ間保護領域とが連続して配置される。即ち、CL1IO仮想アドレス空間のDRAM領域内のアドレスは、CL0コア仮想アドレス空間のMMIO領域内のアドレスからMMIO先頭アドレスのオフセットを減じたアドレスである。
 CL1内のNTB126がMMIO領域内の仮想アドレスをDRAM領域内の仮想アドレスに変換した後、当該NTBに接続されているPCIeI/F136は、IOMMU122を用いて、CL1IO仮想アドレス空間内の仮想アドレスを、CL1物理アドレス空間内の物理アドレスに変換し、変換された物理アドレスにアクセスする。
 CL1物理アドレス空間のDRAM領域には、先頭から順に、CL1MP0システムデータ領域と、CL1MP0ユーザデータ領域と、CL1MP1システムデータ領域と、CL1MP1ユーザデータ領域とが連続して配置される。CL1物理アドレス空間におけるCL1MP0システムデータ領域及びCL1MP1システムデータ領域のそれぞれは、CL1IO仮想アドレス空間における保護領域に対応する。これにより、CL0内のコア121及びIOデバイスは、CL1内のシステムデータ領域にアクセスできない。
 或るクラスタ110内のコア121に対するコマンドは、MMIO領域を用いることにより、他クラスタ内のメモリ140の容量の変化に依らず、固定の仮想アドレスを用いて、他クラスタ内のメモリ140内の特定の記憶領域を指定することができる。
 DRAM領域内の各領域の先頭の仮想アドレスは、メモリ140の容量に依らず、二つのクラスタ110において同一になる。これにより、他クラスタ内のメモリ140の容量が自クラスタ内のメモリ140の容量と異なる場合でも、自クラスタ内のコア121及びIOデバイスは、固定の仮想アドレスを指定して他クラスタ内のメモリ140へアクセスすることができる。
 図7は、ハードウェア構成情報を示す。
 ハードウェア構成情報は、自クラスタのハードウェア構成に関するデータ毎のエントリを有する。一つの情報は、データ番号(#)と、項目名と、内容とのフィールドを含む。データ番号は、当該データを示す識別子を示す。項目名は、当該データの名称を示す。項目名は、例えば、当該クラスタ内のMP120の数である搭載MP数、当該クラスタのMPの動作周波数であるMP周波数、当該クラスタ内のコア121の数であるコア数、当該クラスタ内のメモリ140の容量の合計であるメモリ容量、当該クラスタ内のPCIeポート1(PCIeI/F138)に接続されているIOデバイスの有無、そのポートに接続されているIOデバイス(接続IOデバイス)の種別、当該クラスタ内のPCIeポート2(PCIeI/F136)に接続されているIOデバイスの有無、そのポートに接続されているIOデバイスの種別、当該クラスタ内のPCIeポート3(PCIeI/F137)に接続されているIOデバイスの有無、そのポートに接続されているIOデバイスの種別などである。内容は、当該データの内容を示す。例えば、搭載MP数の内容は2であり、メモリ容量の内容は16GBである。
 このハードウェア構成情報がメモリ140等に格納されていることにより、コア121は、自クラスタの搭載MP数やメモリ容量など、コア変換テーブルやIO変換テーブルの作成に必要な情報を参照することができる。
 図8は、物理アドレステーブルを示す。
 物理アドレステーブルは、クラスタ内のメモリ容量と当該クラスタ内のMPの識別子に対応するエントリを有する。クラスタメモリ容量は、クラスタ内のメモリ容量の合計であり、クラスタに搭載可能なメモリ容量の値を示す。一つのクラスタメモリ容量と一つのMPに対応するエントリは、クラスタメモリ容量(メモリ/クラスタ)と、MP番号(MP)と、システムデータ領域範囲と、ユーザデータ領域範囲とのフィールドを含む。MP番号は、当該MPを示す識別子であり、MP0又はMP1を示す。システムデータ領域範囲は、物理アドレス空間における当該MPのシステムデータ領域の先頭アドレス及び終端アドレスを示す。ユーザデータ領域範囲は、物理アドレス空間における当該MPのユーザデータ領域の先頭アドレス及び終端アドレスを示す。
 例えば、コア121は、システムデータ領域の先頭アドレスを制御データ領域の先頭アドレスとして決定し、制御データ領域の先頭アドレスに予め設定された制御データ領域のサイズを加えたアドレスを、共有データ領域の先頭アドレスとして算出する。
 このようにクラスタ110内のメモリ140の容量の合計と、各領域の先頭の物理アドレスとの関係が予め設定されていることにより、コア121は、メモリ140の容量に応じて、各領域の先頭の物理アドレスを決定することができ、コア変換テーブルやIO変換テーブルを作成することができる。
 図9は、クラスタ110の起動処理を示す。
 クラスタ110の管理者が、当該クラスタ内のメモリ140の増設など、当該クラスタ内のメモリ140の容量を変化させた後、当該クラスタを起動させる。
 S110においてコア121は、後述するコア変換テーブル作成処理を行う。
 その後、S120においてコア121は、NTB126を除くIOデバイスを初期化する。
 その後、S130においてコア121は、後述するIO変換テーブル作成処理を行う。
 その後、S140においてコア121は、他クラスタのモデルと接続状態の情報を取得する。その後、S150においてコア121は、取得された情報に基づいて、自クラスタと同じモデルの他クラスタが自クラスタに接続されているか否かを判定する。
 S150において同じモデルのクラスタが自クラスタに接続されていないと判定された場合(N)、コア121は処理をS140に戻す。
 S150において同じモデルのクラスタが自クラスタに接続されていると判定された場合(Y)、S160においてコア121は、NTB0及びNTB1のリンクアップを試行する。その後、S170においてコア121は、NTB0及びNTB1がリンクアップ済であるか否かを判定する。
 S170においてNTB0及びNTB1がリンクアップ済でないと判定された場合(N)、コア121は処理をS160に戻す。
 S170においてNTB0及びNTB1がリンクアップ済であると判定された場合(Y)、S180においてコア121は、他クラスタに起動完了を通知する。その後、S190においてコア121は、両クラスタの起動処理完了を確認し、このフローを終了する。
 以上の起動処理によれば、メモリ140の容量の変化後に、コア変換テーブルとIO変換テーブルを作成することができる。
 図10は、コア変換テーブル作成処理を示す。
 S210においてコア121は、ハードウェア構成情報を参照し、メモリ140のメモリ容量とMP数の情報を取得する。その後、S220においてコア121は、物理アドレステーブルを参照する。その後、S230においてコア121は、コア変換テーブルのベーステーブルと、メモリ容量と、物理アドレステーブルに基づいて、コア変換テーブルを作成し、アクセス権以外を設定する。コア変換テーブルのベーステーブルにおいて、MP1の制御データ領域の先頭ページの仮想アドレスには、MP1先頭アドレスが設定されている。
 その後、S250においてコア121は、コア変換テーブルから未選択のページを選択し、当該ページがMP間予約領域の条件を満たすか否かを判定する。MP間予約領域の条件は、当該ページの仮想アドレスがMP0ユーザデータ領域の終端アドレスより大きく、且つMP1システムデータ領域の先頭アドレスより小さいことである。
 S250において当該ページがMP間予約領域の条件を満たすと判定された場合(Y)、S270においてコア121は、当該ページをアクセス不可に設定し、処理をS280へ移行させる。ここで、コア121は、当該ページのアクセス権において、Read禁止、Write禁止、Execute禁止に設定する。
 S250において当該ページがMP間予約領域の条件を満たさないと判定された場合(N)、S260においてコア121は、当該ページがクラスタ間予約領域の条件を満たすか否かを判定する。クラスタ間予約領域の条件は、当該ページの仮想アドレスがMP1ユーザデータ領域の終端アドレスより大きいことである。
 S260において当該ページがクラスタ間予約領域の条件を満たすと判定された場合(Y)、コア121は処理をS270へ移行させる。S260において当該ページがクラスタ間予約領域の条件を満たさないと判定された場合(N)、S280においてコア121は、コア変換テーブル内のすべてのページの処理を終了したか否かを判定する。
 S280においてすべてのページの処理を終了していないと判定された場合(N)、コア121は処理をS250へ戻す。
 S280においてすべてのページの処理を終了したと判定された場合(Y)、S290においてコア121は、コア変換テーブルへのポインタを、コア121のMSR(Model Specific Register)にセットすることにより、仮想アドレスの変換を有効化し、このフローを終了する。
 以上のコア変換テーブル作成処理によれば、コア121は、メモリ140の容量に応じたコア変換テーブルを作成することができる。また、コア121は、コア仮想アドレス領域において、先頭のMPのユーザデータ領域の終端アドレスと、MP1先頭アドレスの間に、MP間予約領域を設定することができる。
 図11は、IO変換テーブル作成処理を示す。
 S310においてコア121は、ハードウェア構成情報を参照し、メモリ容量、MP数、接続IOデバイスの情報を取得する。その後、S320においてコア121は、物理アドレステーブルを参照する。その後、S330においてコア121は、IO変換テーブルのベーステーブルと、メモリ容量と、物理アドレステーブルに基づいて、IO変換テーブルを作成し、変換有効フラグ以外を設定する。IO変換テーブルのベーステーブルにおいて、MP1の制御データ領域の先頭ページの仮想アドレスには、MP1先頭アドレスが設定されており、各ページの対象デバイスにはIOデバイスが設定されている。
 その後、S350においてコア121は、IO変換テーブルから未選択のページを選択し、当該ページの対象デバイスがPCIeポートに接続されているか否かを判定する。
 S350において対象デバイスがPCIeポートに接続されていると判定された場合(Y)、S360においてコア121は、IO変換テーブル内の当該ページの変換有効フラグの値を”Yes”に設定し、処理をS380へ移行させる。
 S350において対象デバイスがPCIeポートに接続されていないと判定された場合(N)、S370においてコア121は、IO変換テーブル内の当該ページの変換有効フラグの値を”No”に設定し、処理をS380へ移行させる。
 S380においてコア121は、IO変換テーブル内のすべてのページの処理を終了したか否かを判定する。
 S380においてすべてのページの処理を終了していないと判定された場合(N)、コア121は処理をS350へ戻す。
 S380においてすべてのページの処理を終了したと判定された場合(Y)、S390においてコア121は、自MP内のIOMMU122のレジスタにIO変換テーブルへのポインタをセットすることにより、IOMMU122による仮想アドレスの変換を有効化し、このフローを終了する。
 以上のIO変換テーブル作成処理によれば、コア121は、自クラスタ内のメモリ140の容量に応じたIO変換テーブルを作成することができる。また、コア121は、接続されているIOデバイスに対応するページのアドレス変換を有効にすることができる。
 以下、計算機システムにおけるフロントエンドライト処理について説明する。
 フロントエンドライト処理は、ホスト計算機300がストレージコントローラ100へライトコマンド及びユーザデータを送信し、そのユーザデータを二つのクラスタ110のメモリ140へ書き込む処理である。
 図12は、ホストI/F転送コマンド内のパラメータを示す。
 コア121は、ホストI/F転送コマンドを作成し、メモリ140内でホストI/F160に対応する記憶領域へ書き込むことにより、ホストI/F160に対してデータ転送の指示(命令)を行う。ホストI/F転送コマンドは、コマンド種別と、IO転送長と、タグ番号と、メモリアドレスとのフィールドを有する。コマンド種別は、当該コマンドの種別を示し、例えばリードやライトを示す。ここではコマンド種別がライトである場合を示す。この場合、ホストI/F転送コマンドはホストI/F160からメモリ140への転送を指示する。IO転送長は、ホストI/F160とメモリ140の間で転送されるデータの長さを示す。タグ番号は、転送されるデータに付与される識別子を示す。メモリアドレスは、メモリ140の記憶領域を示す仮想アドレスである。コマンド種別がライトである場合、メモリアドレスは転送先の記憶領域を示す。なお、コマンド種別がリードである場合、ホストI/F転送コマンドはメモリ140からホストI/F160への転送を指示し、メモリアドレスは転送元の記憶領域を示す。
 図13は、DMA転送コマンド内のパラメータを示す。
 コア121は、DMA転送コマンドを作成し、メモリ140内でDMA125に対応する記憶領域へ書き込むことにより、DMA125に対してデータ転送を命令する。DMA転送コマンドは、コマンド種別と、データ転送長と、転送元メモリアドレスと、転送先メモリアドレスと、制御内容とのフィールドを有する。コマンド種別は、当該コマンドの種別を示し、例えばデータコピーやパリティ生成を示す。ここでは、コマンド種別がデータコピーである場合を示す。データ転送長は、DMA125により転送されるデータの長さを示す。転送元メモリアドレスは、転送元のメモリ140の記憶領域を示す仮想アドレスである。転送先メモリアドレスは、転送先のメモリ140の記憶領域を示す仮想アドレスである。制御内容は、DMA125による制御の内容を示す。転送元メモリアドレス及び転送先メモリアドレスの夫々は、自クラスタ内のメモリ140を示すDRAM領域内の仮想アドレスであっても良いし、他クラスタ内のメモリ140を示すMMIO領域内の仮想アドレスであっても良い。
 図14は、PCIeデータ転送パケット内のパラメータを示す。
 PCIeデータ転送パケットは、PCIeバスを介するデータ転送のパケットである。PCIeデータ転送パケットは、パケット種別と、リクエスタIDと、転送先メモリアドレスと、データ長と、転送先データ内容[0]~[N-1]とのフィールドを有する。パケット種別は、当該パケットの種別を示し、例えばメモリリクエストやコンフィギュレーションやメッセージを示す。リクエスタIDは、当該パケットを発行したIOデバイスを識別する識別子である。転送先メモリアドレスは、当該パケットの転送先の記憶領域を示すアドレスであり、仮想アドレス又は物理アドレスで表される。データ長は、その後に続くデータの長さを示す。転送先データ内容[0]~[N-1]は、当該パケットのデータ内容を示す。
 NTB126は、他クラスタからのPCIeデータ転送パケット内のリクエスタIDを書き換えると共に、転送先メモリアドレスを示す仮想アドレスをMMIO領域からDRAM領域に書き換える。更に、NTB126に接続されているPCIe/IF136は、IOMMU122を用いて、転送先メモリアドレスを示す仮想アドレスを物理アドレスに書き換え、その物理アドレスへ転送する。
 図15は、ホストI/Fライト処理を示す。
 ホストI/F160は、起動処理が終了すると、受信準備完了を示す情報を、接続されているホスト計算機300へ送信する。その後、当該ホストI/Fは、当該ホスト計算機からライトコマンドを受信すると、自MPのコア121へライトコマンドを通知する。当該コアは、ホストI/F転送コマンドを作成し、ホストI/F転送コマンドを読み込むことを当該ホストI/Fに指示する。これにより、当該ホストI/Fは、ホストI/Fライト処理を開始する。
 S410において当該ホストI/Fは、当該ホスト計算機からユーザデータを受信する。その後、S420において当該ホストI/Fは、ユーザデータにCRCコードを付与し、ホストI/F転送コマンドにより指定された転送先メモリアドレスを持つPCIeデータ転送パケットを生成して転送する。このとき、当該ホストI/Fに接続されているPCIeI/F138は、IOMMU122を用いて、PCIeデータ転送パケットの転送先メモリアドレスを示す仮想アドレスを物理アドレスに書き換え、PCIeデータ転送パケットをその物理アドレスへ転送する。
 その後、S430において当該ホストI/Fは、自MPのコア121へデータ転送完了を通知し、このフローを終了する。
 以上のホストI/Fライト処理によれば、ホストI/F160は、ホスト計算機300から受信したユーザデータを、対応するメモリ140へ転送することができる。
 図16は、DMAライト処理を示す。
 本実施例においては、二つのクラスタ110がライトデータを二重化してメモリ140に格納するために、ライトデータを受信して格納した一方のクラスタは、他方のクラスタへライトデータを転送する。ここでは、ライトコマンドを受信したクラスタ110を転送元クラスタと呼び、ライトコマンドを受信したMP120を転送元MPと呼び、他方のクラスタを転送先クラスタと呼ぶ。
 S510において、ホストI/Fライト処理によりデータ転送完了の通知を受けた転送元クラスタのコア121は、転送元MPのDMA125に対するDMA転送コマンドを作成し、転送元MPに接続されているメモリ140へ書き込む。
 S520において、当該コアは、DMA転送コマンドを読み込むことを当該DMAに指示する。
 S530において、当該DMAは、DMA転送コマンドを読み込む。S540において、当該DMAは、転送元メモリアドレスのユーザデータを読み込み、DMA転送コマンドにより指定された転送先メモリアドレスへのPCIeデータ転送パケットを生成して転送する。このとき、当該DMAに接続されているPCIeI/F135は、IOMMU122を用いて、転送元メモリアドレスを、仮想アドレスから物理アドレスに変換する。当該DMA125は、その物理アドレス内のユーザデータを読み込み、読み込んだユーザデータを転送先メモリアドレスへ転送する。転送先メモリアドレスがMMIO領域内のNTB領域内であるため、PCIeI/F135は、ユーザデータを転送元MPのNTB126へ転送する。転送元MPのNTB126は、接続されている転送先クラスタのNTB126へ、ユーザデータを含むPCIeデータ転送パケットを転送する。このPCIeデータ転送パケットにおける転送先メモリアドレスは、他クラスタのメモリ140内のユーザデータ領域を示し、MMIO領域内の仮想アドレスである。
 S550において、転送先クラスタのNTB126は、転送元クラスタから転送されたPCIeデータ転送パケットを受信する。ここで、当該NTBは、PCIeデータ転送パケット内の転送先メモリアドレスからMMIO先頭アドレスを減ずることにより、転送先メモリアドレスをDRAM領域内のアドレスに書き換える。更に、当該NTBは、PCIeデータ転送パケット内のリクエスタIDを書き換える。
 その後、S610において当該NTBは、IO変換テーブルにおける、転送先メモリアドレスの仮想アドレスに対応する変換有効フラグに基づいて、仮想アドレスの変換が有効であるか否かを判定する。
 S610において仮想アドレスの変換が無効であると判定された場合(N)、当該NTBは、処理をS630へ移行させる。
 S610において仮想アドレスの変換が有効であると判定された場合(Y)、S620において当該NTBに接続されているPCIeI/F136は、自MPのIOMMU122を用いて、PCIeデータ転送パケット内の転送先メモリアドレスを仮想アドレスから物理アドレスに変換し、PCIeデータ転送パケットを書き換える。
 その後、S630において当該PCIeI/Fは、転送先メモリアドレスがMM1割当領域であるか否かを判定する。
 S630において転送先メモリアドレスがMM0割当領域であると判定された場合(N)、S640において当該PCIeI/Fは、PCIeデータ転送パケットをMM0へ転送し、処理をS660へ移行させる。
 S630において転送先メモリアドレスがMM1割当領域であると判定された場合(Y)、S650において当該PCIeI/Fは、PCIeデータ転送パケットをMM1へ転送し、処理をS660へ移行させる。
 その後、S660において転送先のメモリ140に接続されているMP120のコア121は、転送先のメモリ140に格納されているユーザデータを読み出してCRCチェックを行うことにより、ユーザデータにエラーが無いことを確認し、このフローを終了する。
 以上のDMAライト処理によれば、DMAは、自クラスタのメモリ140に格納されているユーザデータを他クラスタのメモリ140へ転送することができ、ユーザデータを二重化して格納することができる。また、NTB126が、転送先を示す他クラスタのMMIO領域内の仮想アドレスを、自クラスタのDRAM領域内の仮想アドレスに変換することにより、他クラスタから自クラスタへアクセスすることができる。更にNTB126に接続されているPCIeI/F136が、IOMMU122を用いて、転送先を示す自クラスタのDRAM領域内の仮想アドレスを物理アドレスに変換することにより、他クラスタから自クラスタ内のメモリ140へアクセスすることができる。
 フロントエンドライト処理の第一具体例について説明する。
 CL0MP0のホストI/F160がホスト計算機300からユーザデータを受信すると、自MPのコア121は当該ホストI/FへホストI/F転送コマンドを発行する。当該ホストI/Fは、ホストI/F転送コマンドに従って、ユーザデータにCRC(Cyclic Redundancy Check)コードを追加し、ユーザデータをCL0MM0へ転送する。
 ここでCL0MP0のコア121は、DMA125に対し、ユーザデータをCL1MM0へ転送することを示すDMA転送コマンドを発行する。当該DMAは、DMA転送コマンドに応じて、CL0MM0からCL1MM0へユーザデータを転送する。このとき、ユーザデータは、CL0MP0のNTB126からPCIeバスを介してCL1MP0のNTB126へ転送され、CL1MP0のNTB126からCL1MM0へ転送される。
 CL1MP0のコア121は、CL1MM0に格納されているユーザデータをリードし、CRCチェックを行う。
 以上の第一具体例において、CL0MP0に接続されているホスト計算機300からのユーザデータは、CL0MM0に格納された後、CL0MP0及びCL1MP0を介してCL1MM0へ転送される。これにより、ユーザデータは、CL0MM0及びCL1MM0に二重化されて格納される。
 フロントエンドライト処理の第二具体例について説明する。
 ユーザデータをCL0MM0へ転送するまでの動作は、第一具体例と同様である。その後、CL0MP0のコア121は、DMA125に対し、ユーザデータをCL1MM1へ転送することを示すDMA転送コマンドを発行する。当該DMAは、DMA転送コマンドに応じて、CL0MM0からCL1MM1へユーザデータを転送する。このとき、ユーザデータは、CL0MP0のNTB126からPCIeバスを介してCL1MP0のNTB126へ転送され、CL1MP0のNTB126からMPI/F124及びCL1MP1を介してCL1MM1へ転送される。
 CL1MP1のコア121は、CL1MM1に格納されているユーザデータをリードし、CRCチェックを行う。
 以上の第二具体例において、CL0MP0に接続されているホスト計算機300からのユーザデータは、CL0MM0に格納された後、CL0MP0、CL1MP0、及びCL1MP1を介してCL1MM0へ転送される。これにより、ユーザデータは、CL0MM0とCL1MM1に二重化されて格納される。
 以上のフロントエンドライト処理によれば、ストレージコントローラ100は、ホスト計算機300からのユーザデータを、二つのクラスタ110のメモリ140へ書き込み、ユーザデータを二重化して格納することにより、ユーザデータの信頼性を高めることができる。その後、ストレージコントローラ100は、メモリ140に格納されたデータをドライブ210へ書き込むことができる。
 実施例1の仮想アドレスと異なる拡張仮想アドレスを用いる場合について説明する。本実施例においては、主に実施例1との相違点について説明する。
 本実施例のコア121に対するコマンドは、メモリ140内の記憶領域を、拡張仮想アドレスにより指定する。コア121は、拡張仮想アドレスと仮想アドレスの関連を示すコア拡張変換テーブルを作成し、メモリ140に保存する。コア121は、メモリ140へのアクセス時に、コア拡張変換テーブルを用いて、指定された拡張仮想アドレスを仮想アドレスに変換し、実施例1と同様に、コア変換テーブルを用いて、仮想アドレスを物理アドレスに変換する。
 図17は、実施例2におけるクラスタ間のアドレス空間の関係を示す。
 この図は、CL0のMP0のコア121により用いられる拡張仮想アドレスの空間であるCL0MP0コア拡張仮想アドレス空間と、CL0コア仮想アドレス空間と、CL0物理アドレス空間と、CL1IO仮想アドレス空間と、CL1物理アドレス空間とを示す。このうち、CL0MP0コア拡張仮想アドレス空間以外は、実施例1と同様である。
 或るコア121により用いられる拡張仮想アドレスの空間であるコア拡張仮想アドレス空間のDRAM領域には、先頭から自MPシステムデータ領域が配置され、予め設定されたユーザデータ領域先頭アドレスから自MPユーザデータ領域が配置される。ユーザデータ領域先頭アドレスは、例えば、自クラスタ内のすべてのMPのシステムデータ領域の合計サイズと等しい。なお、ユーザデータ領域先頭アドレスは、自クラスタ内のすべてのMPのシステムデータ領域の合計サイズより大きくても良い。コア拡張仮想アドレス空間のMMIO領域は、コア仮想アドレス空間のMMIO領域と同一である。自MPのシステムデータ領域と自MPのユーザデータ領域との間には、システムデータ予約領域が配置され、自MPのユーザデータ領域とMMIO領域との間には、ユーザデータ予約領域が配置される。すなわち、コア拡張仮想アドレス空間のDRAM領域には、他MPのシステムデータ領域及びユーザデータ領域は配置されない。
 すなわち、CL0MP0コア拡張仮想アドレス空間のDRAM領域には、先頭からCL0MP0システムデータ領域が配置され、ユーザデータ領域先頭アドレスからCL0MP0ユーザデータ領域が配置される。
 CL0内のコア121が、DRAM領域内の拡張仮想アドレスを指定するコマンドを取得すると、当該コアは、コア拡張変換テーブルを用いて、拡張仮想アドレスを仮想アドレスに変換し、コア変換テーブルを用いて、変換された仮想アドレスを物理アドレスに変換し、変換された物理アドレスにアクセスする。
 CL0内のコア121が、MMIO領域内の拡張仮想アドレスを指定するコマンドを取得すると、当該コアは、CL1へアクセスする。MMIO領域内の拡張仮想アドレスは、MMIO領域内の仮想アドレスと同一である。したがって、以後の動作は、MMIO領域内の仮想アドレスを指定するコマンドと同様である。
 なお、コア拡張仮想アドレス空間において、MP0システムデータ領域の先頭アドレスを予め設定されたシステムデータアドレスに設定し、MP0ユーザデータ領域の先頭アドレスを予め設定されたユーザデータアドレスに設定しても良い。本実施例において、システムデータアドレスは、アドレス空間の先頭であり、ユーザデータアドレスは、ユーザデータ領域先頭アドレスである。
 また、CL0のMP0のIOデバイスにより用いられる拡張仮想アドレスの空間であるCL0MP0IO拡張仮想アドレス空間においては、CL0MP0コア拡張仮想アドレス空間のうち、CL0MP0システムデータ領域、システムデータ予約領域、ユーザデータ予約領域が、保護領域となり、IOデバイスによるアクセスが禁止される。CL0MP0IO拡張仮想アドレス空間におけるCL0MP0ユーザデータ領域は、CL0MP0コア拡張仮想アドレス空間と同様である。
 図18は、実施例2のコア拡張変換テーブルを示す。
 コア拡張変換テーブルは、ページテーブルであり、ページ毎のエントリを有する。
 一つのページのエントリは、ページ番号(#)と、領域種別と、拡張仮想アドレスと、ページサイズと、仮想アドレスと、アクセス権とのフィールドを有する。このうち、ページ番号と、領域種別と、ページサイズと、アクセス権との夫々は、コア変換テーブルにおいて対応するフィールドと同一である。拡張仮想アドレスは、コア拡張仮想アドレス空間における当該ページの先頭アドレスを示す。仮想アドレスは、コア仮想アドレス空間における当該ページの先頭アドレスを示す。
 コア121は、コア拡張変換テーブルを用いることにより、拡張仮想アドレスを仮想アドレスに変換することができる。これにより、コア121に対し、仮想アドレスとは異なる配置を有する拡張仮想アドレスを指定してメモリ140へアクセスさせることができる。
 図19は、拡張仮想アドレステーブルを示す。
 コア拡張変換テーブルは、ページ毎のエントリを有する。
 一つのページのエントリは、ページ番号(#)と、拡張仮想アドレスとのフィールドを有する。ページ番号は、当該ページの識別子を示す。拡張仮想アドレスは、当該ページに予め定められた拡張仮想アドレスを示す。
 コア121は、拡張仮想アドレステーブルを用いることにより、コア拡張変換テーブルを作成することができる。
 図20は、実施例2のコア変換テーブル作成処理を示す。
 本実施例のコア変換テーブル作成処理において、コア121は、コア変換テーブル及びコア拡張変換テーブルを作成する。
 S1210、S1220は夫々、コア変換テーブル作成処理のS210、S220と同様である。
 その後、S1230においてコア121は、コア変換テーブルのベーステーブルと、メモリ容量と、物理アドレステーブルとに基づいて、コア変換テーブルを作成し、アクセス権以外を設定する。更にコア121は、コア変換テーブルと、拡張仮想アドレステーブルとに基づいて、コア拡張変換テーブルを作成し、アクセス権以外を設定する。
 S1250、S1260、S1280は、コア変換テーブル作成処理のS250と同様である。
 S1250において当該ページがMP間予約領域の条件を満たすと判定された場合(Y)、S1270においてコア121は、コア変換テーブル及びコア拡張変換テーブルにおける当該ページをアクセス不可に設定し、処理をS1280へ移行させる。ここで、コア121は、当該ページのアクセス権において、Read禁止、Write禁止、Execute禁止に設定する。
 S1280においてすべてのページの処理を終了したと判定された場合(Y)、S1290においてコア121は、コア変換テーブル及びコア拡張変換テーブルへのポインタを、コア121のMSRにセットすることにより、拡張仮想アドレスの変換を有効化し、このフローを終了する。
 以上のコア変換テーブル作成処理によれば、メモリ140の容量に応じたコア変換テーブル及びコア拡張変換テーブルを作成することができる。
 本実施例のIO変換テーブル作成処理において、コア121は、コア変換テーブルに基づいてIO変換テーブルを作成する。
 図21は、実施例3のIO変換テーブル作成処理を示す。
 S1310においてコア121は、ハードウェア構成情報を参照し、メモリ容量、MP数、接続IOデバイスの情報を取得する。
 その後、S1320においてコア121は、IO変換テーブルにおいて、接続IOデバイスに対応するエントリを作成する。その後、S1330においてコア121は、コア変換テーブルを読み込む。
 S1340においてコア121は、コア変換テーブルから未選択のページを選択し、ページサイズが所定のシステムデータページサイズであるか否かを判定する。システムデータページサイズは、例えば4kBである。
 S1340においてページサイズがシステムデータページサイズであると判定された場合(Y)、S1360においてコア121は、コア変換テーブルにおける当該ページのExecuteアクセス権が許可(Yes)であるか否かを判定する。
 S1360において当該ページのExecuteアクセス権が許可であると判定された場合(Y)、S1370においてコア121は、IO変換テーブルにおける当該ページのアクセス権をすべて禁止(Access Denied)に設定し、処理をS1410へ移行させる。
 S1360において当該ページのExecuteアクセス権が禁止であると判定された場合(N)、S1380においてコア121は、IO変換テーブルにおける当該ページのアクセス権を、コア変換テーブルにおける当該ページのアクセス権と同一に設定し、処理をS1410へ移行させる。
 S1340においてページサイズがシステムデータページサイズでないと判定された場合(N)、S1350においてコア121は、コア変換テーブルにおける当該ページのReadアクセス権又はWriteアクセス権が禁止(No)であるか否かを判定する。
 S1350において当該ページのReadアクセス権又はWriteアクセス権が禁止であると判定された場合(Y)、コア121は処理を前述のS1380へ移行させる。
 S1350において当該ページのReadアクセス権及びWriteアクセス権が許可であると判定された場合(N)、S1390においてコア121は当該ページのアクセス権をRead許可及びWrite許可(R/W)に設定し、処理をS1410へ移行させる。
 その後、S1410においてコア121は、IO変換テーブル内のすべてのページの処理を終了したか否かを判定する。
 S1410においてすべてのページの処理を終了していないと判定された場合(N)、コア121は処理をS1340へ戻す。
 S1410においてすべてのページの処理を終了したと判定された場合(Y)、S1420においてコア121は、自MP内のIOMMU122のレジスタにIO変換テーブルへのポインタをセットすることにより、IOMMU122による仮想アドレスの変換を有効化し、このフローを終了する。
 以上のIO変換テーブル作成処理によれば、コア121は、コア変換テーブルに基づいてIO変換テーブルを作成することができる。ここでコア121は、コア変換テーブルに基づいて、IO変換テーブルに各ページのアクセス権を設定することができる。
 なお、ストレージコントローラ100が一つのクラスタ110であっても良い。この場合、ストレージコントローラ100からNTB126が省かれ、物理アドレス及び仮想アドレスの空間からMMIO領域が省かれる。
 以上の各実施例においては、仮想アドレス空間において、ユーザデータ領域のように容量が可変である領域の終端アドレスの後にマージンが配置され、その後に次の種別の領域が配置される。
 尚、少なくとも容量可変データの終端アドレスの後にマージンを設けて次の種別のデータを配置するようにすれば、上記実施例と異なる順序で各領域が配置されてもマッピング変更の負荷を低減するという効果を得ることができる。
 本発明は、以上の実施例に限定されるものでなく、その趣旨から逸脱しない範囲で、他の様々な形に変更することができる。
 本発明の表現のための用語について説明する。第一メモリは、MM0等に対応する。第二メモリは、MM1等に対応する。オフセットは、MMIO先頭アドレス等に対応する。第一関連情報は、コア変換テーブル等に対応する。第二関連情報は、IO変換テーブル等に対応する。第三関連情報は、コア拡張変換テーブル等に対応する。
 100…ストレージコントローラ 110…クラスタ 120…MP 121…コア 122…IOMMU 123…メモリI/F 124…MPI/F 125…DMA 126…NTB 135,136,137,138…PCIeI/F 150…ドライブI/F 160…ホストI/F 140…メモリ 200…ドライブボックス 210…ドライブ 300…ホスト計算機
 

Claims (14)

  1.  記憶デバイスと、
     前記記憶デバイスに接続される制御システムと、
    を備え、
     前記制御システムは、互いに接続されている二つの制御サブシステムを含み、
     前記二つの制御サブシステムの夫々は、
      互いに接続される複数の制御装置と、
      前記複数の制御装置に夫々接続される複数のメモリと、
    を含み、
     前記複数の制御装置の夫々は、
      プロセッサと、
      前記プロセッサに接続される入出力デバイスと、
    を含み、
     前記入出力デバイスは、前記二つの制御サブシステムの中の他制御サブシステム内の制御装置に接続される中継デバイスを含み、
     前記二つの制御サブシステムの中の自制御サブシステム内の複数のメモリ内の記憶領域を示す物理アドレスの空間と、前記他制御サブシステム内の複数のメモリ内の記憶領域を示す物理アドレスの空間とが、前記自制御サブシステム内のプロセッサ及び入出力デバイスの夫々により用いられる仮想アドレスの空間に関連付けられ、
     前記中継デバイスは、前記他制御サブシステムから前記自制御サブシステムへ転送されるデータを受信した場合、前記他制御サブシステムにより指定され前記データの転送先を示す仮想アドレスを、予め設定されたオフセットに基づいて、前記自制御サブシステム内の仮想アドレスに変換し、前記変換された仮想アドレスへ前記データを転送する、
    ストレージシステム。
  2.  前記複数のメモリの夫々は、前記入出力デバイスからのアクセスが禁止される記憶領域であるシステムデータ領域と、前記入出力デバイスからのアクセスが許可される記憶領域であるユーザデータ領域とを含み、
     前記自制御サブシステム内の物理アドレスの空間には、前記複数のメモリの中の第一メモリ内のシステムデータ領域と、前記第一メモリ内のユーザデータ領域と、前記複数のメモリの中の第二メモリ内のシステムデータ領域と、前記第二メモリ内のユーザデータ領域とが連続して配置される、
    請求項1に記載のストレージシステム。
  3.  前記自制御サブシステムにより指定される仮想アドレスの空間には、予め設定された自制御サブシステムアドレスから、前記自制御サブシステム内の複数のメモリの記憶領域が配置され、前記自制御サブシステム内の複数のメモリの記憶領域より後の、予め設定された他制御サブシステムアドレスから、前記他制御サブシステム内の複数のメモリの記憶領域が配置される、
    請求項2に記載のストレージシステム。
  4.  前記仮想アドレスの空間において、予め定められた第一システムデータアドレスから、前記第一メモリ内のシステムデータ領域及びユーザデータ領域が配置され、前記第一メモリ内のユーザデータ領域より後の、予め定められた第二システムデータアドレスから、前記第二メモリ内のシステムデータ領域及びユーザデータ領域が配置される、
    請求項3に記載のストレージシステム。
  5.  前記プロセッサは、前記自制御サブシステム内のシステムデータ領域及びユーザデータ領域の物理アドレスを、仮想アドレスに関連付ける第一関連情報を作成し、
     前記プロセッサは、前記自制御サブシステム内の記憶領域を示す第一仮想アドレスを指定する命令を受けた場合、前記第一関連情報に基づいて、前記第一仮想アドレスを第一物理アドレスに変換し、前記第一物理アドレスへアクセスする、
    請求項4に記載のストレージシステム。
  6.  前記複数の制御装置の夫々は、前記プロセッサ及び前記入出力デバイスに接続されるメモリ管理デバイスを含み、
     前記プロセッサは、前記自制御サブシステム内のユーザデータ領域の物理アドレスを、仮想アドレスに関連付ける第二関連情報を作成し、
     前記メモリ管理デバイスは、前記第二関連情報を参照し、
     前記入出力デバイスは、前記自制御サブシステム内のユーザデータ領域を示す第二仮想アドレスを指定する命令を受けた場合、前記メモリ管理デバイスを用いて、前記第二仮想アドレスを第二物理アドレスに変換し、前記第二物理アドレスへアクセスする、
    請求項5に記載のストレージシステム。
  7.  前記複数のメモリのそれぞれにおいて、前記システムデータ領域は、前記複数のメモリの中の他メモリに接続された制御装置内のプロセッサからのアクセスが禁止される記憶領域である制御データ領域と、前記自制御サブシステム内のプロセッサからのアクセスが許可される記憶領域である共有データ領域とを含み、
     前記物理アドレスの空間には、前記システムデータ領域内に前記制御データ領域及び前記共有データ領域が連続して配置される、
    請求項2に記載のストレージシステム。
  8.  前記自制御サブシステム内の複数のメモリの容量の合計は、前記他制御サブシステム内の複数のメモリの容量の合計と異なる、
    請求項1に記載のストレージシステム。
  9.  前記プロセッサは、前記自制御サブシステム内の複数のメモリの容量の合計と、前記自制御サブシステム内の複数のメモリ内の物理アドレスとの関係を示す物理アドレス情報を取得し、前記自制御サブシステム内の複数のメモリの容量の合計を示すメモリ容量情報を取得し、前記物理アドレス情報と前記メモリ容量情報に基づいて、前記関連情報を作成する、
    請求項1に記載のストレージシステム。
  10.  前記第一関連情報は、前記自制御サブシステム内の複数のメモリ内の記憶領域毎のアクセス権の情報を含み、
     前記プロセッサは、前記第一関連情報内の記憶領域毎のアクセス権の情報に基づいて、前記第二関連情報に、対応する記憶領域のアクセス権の情報を設定する、
    請求項6に記載のストレージシステム。
  11.  前記プロセッサは、仮想アドレスを別の仮想アドレスである拡張仮想アドレスに関連付ける第三関連情報を作成し、
     前記拡張仮想アドレスの空間において、予め定められたシステムデータアドレスから、前記複数のメモリの中の自メモリ内のシステムデータ領域が配置され、前記自メモリ内のシステムデータ領域より後の、予め定められたユーザデータアドレスから、前記自メモリ内のユーザデータ領域が配置され、
     前記プロセッサは、前記自制御サブシステム内の記憶領域を示す第一拡張仮想アドレスを指定する命令を受けた場合、前記第三関連情報に基づいて、前記第一拡張仮想アドレスを前記第一仮想アドレスに変換し、前記第一関連情報に基づいて、前記第一仮想アドレスを第一物理アドレスに変換し、前記第一物理アドレスへアクセスする、
    請求項5に記載のストレージシステム。
  12.  記憶デバイスと、
     前記記憶デバイスに接続されている制御システムと、
    を備え、
     前記制御システムは、
      複数の制御装置と、
      前記複数の制御装置に夫々接続されている複数のメモリと、
    を含み、
     前記複数の制御装置の夫々は、
      プロセッサと、
      前記プロセッサに接続される入出力デバイスと、
    を含み、
     前記複数のメモリの夫々は、前記入出力デバイスからのアクセスが禁止される記憶領域であるシステムデータ領域と、前記入出力デバイスからのアクセスが許可される記憶領域であるユーザデータ領域とを含み、
     前記複数のメモリ内の記憶領域を示す物理アドレスの空間には、前記複数のメモリの中の第一メモリ内のシステムデータ領域と、前記第一メモリ内のユーザデータ領域と、前記複数のメモリの中の第二メモリ内のシステムデータ領域と、前記第二メモリ内のユーザデータ領域とが連続して配置される、
    ストレージシステム。
  13.  前記複数のメモリ内の記憶領域を示す物理アドレスの空間が、前記プロセッサ及び前記入出力デバイスの夫々により用いられる仮想アドレスの空間に関連付けられ、
     前記仮想アドレスの空間において、予め定められた第一システムデータアドレスから、前記第一メモリ内のシステムデータ領域及びユーザデータ領域が配置され、前記第一メモリ内のユーザデータ領域より後の、予め定められた第二システムデータアドレスから、前記第二メモリ内のシステムデータ領域及びユーザデータ領域が配置される、
    請求項12に記載のストレージシステム。
  14.  前記プロセッサは、前記複数のメモリ内の記憶領域を示す物理アドレスを、仮想アドレスに関連付ける第一関連情報を作成し、
     前記プロセッサは、前記複数のメモリ内の記憶領域を示す第一仮想アドレスを指定する命令を受けた場合、前記第一関連情報に基づいて、前記第一仮想アドレスを第一物理アドレスに変換し、前記第一物理アドレスへアクセスする、
    請求項13に記載のストレージシステム。
     
PCT/JP2014/061523 2014-04-24 2014-04-24 ストレージシステム WO2015162745A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016514630A JP6190046B2 (ja) 2014-04-24 2014-04-24 ストレージシステム
PCT/JP2014/061523 WO2015162745A1 (ja) 2014-04-24 2014-04-24 ストレージシステム
US15/125,313 US20170075816A1 (en) 2014-04-24 2014-04-24 Storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/061523 WO2015162745A1 (ja) 2014-04-24 2014-04-24 ストレージシステム

Publications (1)

Publication Number Publication Date
WO2015162745A1 true WO2015162745A1 (ja) 2015-10-29

Family

ID=54331932

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/061523 WO2015162745A1 (ja) 2014-04-24 2014-04-24 ストレージシステム

Country Status (3)

Country Link
US (1) US20170075816A1 (ja)
JP (1) JP6190046B2 (ja)
WO (1) WO2015162745A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021026541A (ja) * 2019-08-06 2021-02-22 株式会社日立製作所 ドライブボックス、ストレージシステム及びデータ転送方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
CN106933751B (zh) * 2015-12-29 2019-12-24 澜起科技股份有限公司 用于保护动态随机访问存储器的方法和设备
US20170344283A1 (en) * 2016-05-27 2017-11-30 Intel Corporation Data access between computing nodes
US10402355B2 (en) * 2017-02-08 2019-09-03 Texas Instruments Incorporated Apparatus and mechanism to bypass PCIe address translation by using alternative routing
US11481612B1 (en) * 2018-04-20 2022-10-25 Perceive Corporation Storage of input values across multiple cores of neural network inference circuit
CN111143235A (zh) * 2018-11-06 2020-05-12 爱思开海力士有限公司 多内核存储器系统中的逻辑地址分配

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012022694A (ja) * 2006-12-27 2012-02-02 Intel Corp パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
JP2012531656A (ja) * 2009-11-10 2012-12-10 株式会社日立製作所 複数のコントローラを備えたストレージシステム
JP2013130976A (ja) * 2011-12-20 2013-07-04 Fujitsu Ltd 情報処理装置およびメモリアクセス方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US7363462B2 (en) * 2003-04-04 2008-04-22 Sun Microsystems, Inc. Performing virtual to global address translation in processing subsystem
US7904672B2 (en) * 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8180995B2 (en) * 2009-01-21 2012-05-15 Micron Technology, Inc. Logical address offset in response to detecting a memory formatting operation
US8051050B2 (en) * 2009-07-16 2011-11-01 Lsi Corporation Block-level data de-duplication using thinly provisioned data storage volumes
US8819452B2 (en) * 2009-11-25 2014-08-26 Cleversafe, Inc. Efficient storage of encrypted data in a dispersed storage network
US8364886B2 (en) * 2010-01-26 2013-01-29 Seagate Technology Llc Verifying whether metadata identifies a most current version of stored data in a memory space
US9563371B2 (en) * 2013-07-26 2017-02-07 Globalfoundreis Inc. Self-adjusting phase change memory storage module

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012022694A (ja) * 2006-12-27 2012-02-02 Intel Corp パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
JP2012531656A (ja) * 2009-11-10 2012-12-10 株式会社日立製作所 複数のコントローラを備えたストレージシステム
JP2013130976A (ja) * 2011-12-20 2013-07-04 Fujitsu Ltd 情報処理装置およびメモリアクセス方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021026541A (ja) * 2019-08-06 2021-02-22 株式会社日立製作所 ドライブボックス、ストレージシステム及びデータ転送方法

Also Published As

Publication number Publication date
JPWO2015162745A1 (ja) 2017-04-13
JP6190046B2 (ja) 2017-08-30
US20170075816A1 (en) 2017-03-16

Similar Documents

Publication Publication Date Title
JP6190046B2 (ja) ストレージシステム
CN103080918B (zh) 功率优化的中断传递
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
JP5658197B2 (ja) 計算機システム、仮想化機構、及び計算機システムの制御方法
JP6029550B2 (ja) 計算機の制御方法及び計算機
TWI614669B (zh) 遷移異構處理器之間不同大小的分頁
US9575914B2 (en) Information processing apparatus and bus control method
JPH04246745A (ja) 情報処理装置及びその方法
AU2015402888B2 (en) Computer device and method for reading/writing data by computer device
WO2019148841A1 (zh) 一种分布式存储系统、数据处理方法和存储节点
JP6232936B2 (ja) 情報処理装置、記憶装置制御回路及び記憶装置の制御方法
EP4002139A2 (en) Memory expander, host device using memory expander, and operation method of server system including memory expander
US10754802B2 (en) Dynamically remapping in-process data transfers
US11042495B2 (en) Providing interrupts from an input-output memory management unit to guest operating systems
KR20220017949A (ko) 입력-출력 메모리 관리 유닛에 의한 게스트 운영 체제 버퍼 및 로그 액세스
JP2023027970A (ja) メモリシステム
CN114546902A (zh) 基于多协议访问存储器的系统、设备和方法
JP6825263B2 (ja) ストレージ制御装置、およびストレージシステム
JP6625735B2 (ja) 計算機システム及び不揮発性メモリの冗長化方法
JP5469085B2 (ja) Mraスイッチを備えるサーバ装置
TW202416145A (zh) 用於控制池化記憶體裝置或記憶體擴展器的設備和方法
CN117059147A (zh) 以高速缓存行粒度跟踪存储器修改
JP2019159735A (ja) コントローラおよびデータ転送方法
TW201342061A (zh) 用於增加虛擬記憶體效能之電腦可讀儲存媒體、設備及電腦實施方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14890382

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15125313

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2016514630

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14890382

Country of ref document: EP

Kind code of ref document: A1