(57)【要約】【課題】メモリのデータへのアクセスをより高速にする。【解決手段】メモリ部と変換部とメモリアクセス部とを備え、変換部は、読み出し対象データのメモリ部におけるアドレス及び読み出し対象データの大きさを含む読み出し信号を受信し、メモリ部におけるアドレスを上位ビットのアドレスと下位ビットのアドレスとに分離し、上位ビットのアドレスを含む第１信号と、下位ビットのアドレス及び読み出し対象データの大きさを含む第２信号とを生成し、メモリアクセス部は、第１信号から上位ビットのアドレスを抽出し、上位ビットのアドレスで示される領域のデータをメモリ部から読み出し、第２信号から下位ビットのアドレス及び読み出し対象データの大きさを抽出し、メモリ部から読み出された上位ビットのアドレスで示される領域のデータから下位ビットのアドレス及び読み出し対象データの大きさで特定されるデータを抽出する共有メモリ装置とする。【選択図】図２
2014238778.tif 000002
【特許請求の範囲】
【請求項１】
データが格納されるメモリ部と、変換部と、メモリアクセス部とを備え、
前記変換部は、読み出し対象データの前記メモリ部におけるアドレス及び前記読み出し対象データの大きさを含む読み出し信号を受信し、前記メモリ部における前記アドレスを所定の第１ビット数の上位ビットのアドレスと所定の第２ビット数の下位ビットのアドレスとに分離し、前記上位ビットのアドレスを含む第１信号と、前記下位ビットのアドレス及び前記読み出し対象データの大きさを含む第２信号とを生成し、前記第１信号及び前記第２信号をメモリアクセス部に送信し、
前記メモリアクセス部は、前記第１信号を前記変換部から受信し、前記第１信号から前記上位ビットのアドレスを抽出し、前記上位ビットのアドレスで示される領域のデータを前記メモリ部から読み出し、前記第２信号を前記変換部から受信し、前記第２信号から前記下位ビットのアドレス及び前記読み出し対象データの大きさを抽出し、前記メモリ部から読み出された前記上位ビットのアドレスで示される領域のデータから前記下位ビットのアドレス及び前記読み出し対象データの大きさで特定されるデータを抽出し、抽出されたデータを含む第３信号を生成し、前記第３信号を前記変換部に送信する、
共有メモリ装置。
【請求項２】
前記変換部は、書き込み対象データの前記メモリ部におけるアドレス及び前記書き込み対象データを含む書き込み信号を受信し、前記メモリ部における前記アドレスを前記第１ビット数の前記上位ビットのアドレスと前記第２ビット数の前記下位ビットのアドレスとに分離し、前記上位ビットのアドレスを含む第４信号と、前記下位ビットのアドレス及び前記書き込み対象データを含む第５信号とを生成し、前記第４信号及び前記第５信号をメモリアクセス部に送信し、
前記メモリアクセス部は、前記第４信号を前記変換部から受信し、前記第４信号から前記上位ビットのアドレスを抽出し、前記上位ビットのアドレスで示される領域のデータを前記メモリ部から読み出し、前記第５信号を前記変換部から受信し、前記第５信号から前記下位ビットのアドレス及び前記書き込み対象データを抽出し、前記メモリ部から読み出された前記上位ビットのアドレスで示される領域のデータのうち前記下位ビットのアドレスで特定される位置を前記書き込み対象データで書き換えた書換データを生成し、生成された書換データを前記メモリ部の前記上位ビットのアドレスで示される領域に書き込む、請求項１に記載の共有メモリ装置。
【請求項３】
データが格納されるメモリ部と、変換部と、メモリアクセス部とを備える共有メモリ装置において、
前記変換部が、読み出し対象データの前記メモリ部におけるアドレス及び前記読み出し対象データの大きさを含む読み出し信号を受信し、前記メモリ部における前記アドレスを所定の第１ビット数の上位ビットのアドレスと所定の第２ビット数の下位ビットのアドレスとに分離し、前記上位ビットのアドレスを含む第１信号と、前記下位ビットのアドレス及び前記読み出し対象データの大きさを含む第２信号とを生成し、前記第１信号及び前記第２信号をメモリアクセス部に送信し、
前記メモリアクセス部が、前記第１信号を前記変換部から受信し、前記第１信号から前記上位ビットのアドレスを抽出し、前記上位ビットのアドレスで示される領域のデータを前記メモリ部から読み出し、前記第２信号を前記変換部から受信し、前記第２信号から前記下位ビットのアドレス及び前記読み出し対象データの大きさを抽出し、前記メモリ部から読み出された前記上位ビットのアドレスで示される領域のデータから前記下位ビットのアドレス及び前記読み出し対象データの大きさで特定されるデータを抽出し、抽出されたデータを含む第３信号を生成し、前記第３信号を前記変換部に送信する、
メモリアクセス方法。
【請求項４】
前記変換部が、書き込み対象データの前記メモリ部におけるアドレス及び前記書き込み対象データを含む書き込み信号を受信し、前記メモリ部における前記アドレスを前記第１ビット数の前記上位ビットのアドレスと前記第２ビット数の前記下位ビットのアドレスとに分離し、前記上位ビットのアドレスを含む第４信号と、前記下位ビットのアドレス及び前記書き込み対象データを含む第５信号とを生成し、前記第４信号及び前記第５信号をメモリアクセス部に送信し、
前記メモリアクセス部が、前記第４信号を前記変換部から受信し、前記第４信号から前記上位ビットのアドレスを抽出し、前記上位ビットのアドレスで示される領域のデータを前記メモリ部から読み出し、前記第５信号を前記変換部から受信し、前記第５信号から前記下位ビットのアドレス及び前記書き込み対象データを抽出し、前記メモリ部から読み出された前記上位ビットのアドレスで示される領域のデータのうち前記下位ビットのアドレスで特定される位置を前記書き込み対象データで書き換えた書換データを生成し、生成された書換データを前記メモリ部の前記上位ビットのアドレスで示される領域に書き込む、請求項３に記載のメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有メモリ装置、メモリアクセス方法に関する。
【背景技術】
【０００２】
無線基地局（ＢＢＵ：Base Band Unit）では、例えば、複数の制御処理を行う制御カード（ＭＰＵ（Micro-Processing Unit）カード）と共有メモリ（メモリカード、アクティ
ブＧＭ（Global Memory）カード等）カードとがネットワーク経由で接続されている。そ
のインタフェースプロトコルとして、例えばＰＣＩ  Ｅｘｐｒｅｓｓが使用されている。
【０００３】
ベースバンド信号処理部を１か所に集中して配置したＣ−ＢＢＵ（Centralized-BBU）
装置は、複数（例えば、６枚）のＭＰＵカードを有する。各ＭＰＵカードは、無線基地局データ等のユーザデータを共有のメモリカードに保存している。ＭＰＵカードの異常等によりＭＰＵカードが交換されたとしても、交換されたＭＰＵカードが使用するユーザデータは共有のメモリカードに存在しているので、交換後の復旧が容易になる。また、この共有のメモリカードは冗長構成により、現用のメモリカード自体が故障した際に、ユーザデータを維持することを可能にしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１６６０２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
Ｃ−ＢＢＵ装置では、ユーザデータの増加にともなって共有のメモリカードの容量も増大している。共有のメモリカードに実装するメモリは、例えば、９６ＧＢにもなる。メモリカードの容量の増大により、メモリカードにアクセスするためのアドレスのビット数も増加する。例えば、９６ＧＢのアドレッシングには、３７ビットのアドレスビットが使用される。即ち、９６ＧＢのメモリ内の特定の領域を１バイト単位で指定するのに、３７ビットのアドレスビットが使用される。
【０００６】
また、ＭＰＵカードから共有のメモリカードに対するアクセスを高速にすることが求められる。そこで、Ｃ−ＢＢＵ装置では、ＰＣＩ  Ｅｘｐｒｅｓｓ等の汎用の高速シリアルの規格（インタフェースプロトコル）を使用することが考えられる。ＰＣＩ  Ｅｘｐｒｅｓｓは、アドレス空間として６４ビットアドレスオフセットで、最大１ＴＢのアクセス窓を利用できる。よって、ＰＣＩ  Ｅｘｐｒｅｓｓでは、９６ＧＢのメモリに１バイト単位でアクセス可能となる。
【０００７】
図１は、従来のＣ−ＢＢＵ装置における、制御カードと共有メモリカードとの構成例を示す図である。図１の例では、６つの制御カード（制御カード＃１乃至制御カード＃６）が、ＰＣＩｅ  ＳＷ（Switch）を介して、アクティブの共有メモリカード及びスタンバイの共有メモリカードに接続される。各制御カードは、ＰＣＩ  Ｅｘｐｒｅｓｓインタフェースによって、各共有メモリカードにデータを書き込み、また、各共有メモリカードからデータを読み出す。
【０００８】
しかし、ＰＣＩ  Ｅｘｐｒｅｓｓによるパケットのオーバーヘッドは大きいため、小さなパケット（データ）の送受信では、ＰＣＩ  Ｅｘｐｒｅｓｓを使用することは、送受信の遅延の要因になりうる。
【０００９】
ＳＲＩＯ（Serial Rapid Input/Output）によるパケットでは、ＰＣＩ  Ｅｘｐｒｅｓ
ｓによるパケットに比べて、オーバーヘッドが小さい。ＳＲＩＯでは、３４ビット、５０ビット、６６ビットの３種類のアドレスオフセットが用意されている。しかし、５０ビット、６６ビットのアドレスオフセットは、オプションであり、既存のデバイスでは、ほとんどサポートされていない。従って、ＳＲＩＯでは、３４ビットのアドレスオフセットが実質的なサポート範囲である。３４ビットのアドレスオフセットを使用するＳＲＩＯでは、３７ビットのアドレスビットで特定される９６ＧＢのメモリにアクセスすることは難しい。以後、ＳＲＩＯは、３４ビットのアドレスオフセットを使用するものとする。
【００１０】
１つの側面では、本発明は、メモリのデータへのアクセスをより高速にする共有メモリ装置を提供することを課題とする。
【課題を解決するための手段】
【００１１】
第１の態様は、
データが格納されるメモリ部と、変換部と、メモリアクセス部とを備え、
前記変換部は、読み出し対象データの前記メモリ部におけるアドレス及び前記読み出し対象データの大きさを含む読み出し信号を受信し、前記メモリ部における前記アドレスを所定の第１ビット数の上位ビットのアドレスと所定の第２ビット数の下位ビットのアドレスとに分離し、前記上位ビットのアドレスを含む第１信号と、前記下位ビットのアドレス及び前記読み出し対象データの大きさを含む第２信号とを生成し、前記第１信号及び前記第２信号をメモリアクセス部に送信し、
前記メモリアクセス部は、前記第１信号を前記変換部から受信し、前記第１信号から前記上位ビットのアドレスを抽出し、前記上位ビットのアドレスで示される領域のデータを前記メモリ部から読み出し、前記第２信号を前記変換部から受信し、前記第２信号から前記下位ビットのアドレス及び前記読み出し対象データの大きさを抽出し、前記メモリ部から読み出された前記上位ビットのアドレスで示される領域のデータから前記下位ビットのアドレス及び前記読み出し対象データの大きさで特定されるデータを抽出し、抽出されたデータを含む第３信号を生成し、前記第３信号を前記変換部に送信する、
共有メモリ装置とする。
【発明の効果】
【００１２】
メモリのデータへのアクセスをより高速にする共有メモリ装置を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、従来のＣ−ＢＢＵ装置における、制御カードと共有メモリカードとの構成例を示す図である。
【図２】図２は、共有メモリ装置の構成例を示す図である。
【図３】図３は、アドレスとデータの例を示す図である。
【図４】図４は、ＳＲＩＯ終端部の構成例を示す図である。
【図５】図５は、制御カードの構成例を示す図である。
【図６】図６は、書き込みにおける情報の流れを示すシーケンスの例を示す図である。
【図７】図７は、読み出しにおける情報の流れを示すシーケンスの例を示す図である。
【図８】図８は、書き込みのパケットの構成例を示す図である。
【図９】図９は、読み出しのパケットの構成例を示す図である。
【図１０】図１０は、応答のパケットの構成例を示す図である。
【図１１】図１１は、ＳＲＩＯ  ＭＳＧパケットの構成例を示す図である。
【図１２】図１２は、４バイトのデータの書き込みの際に、ＰＣＩｅパケットでＤＤＲメモリに直接アクセスした場合と、本実施形態の構成でメモリにアクセスした場合の比較例を示す図である。
【図１３】図１３は、４バイトのデータの読み出しの際に、ＰＣＩｅパケットでＤＤＲメモリに直接アクセスした場合と、本実施形態の構成でメモリにアクセスした場合の比較例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して実施形態について説明する。実施形態の構成は例示であり、開示の構成は、開示の実施形態の具体的構成に限定されない。開示の構成の実施にあたって、実施形態に応じた具体的構成が適宜採用されてもよい。例えば、ここでは、１つのメモリカードに対して、複数の制御カードが接続される構成が記載されているが、開示の行使絵の実施にあたって、１つのメモリカードに対して１つの制御カードが接続される構成が採用されてもよい。
【００１５】
〔実施形態〕
（構成例）
図２は、共有メモリ装置の構成例を示す図である。図２の共有メモリ装置１０は、メモリカード１００、複数の制御カード２００を含む。複数の制御カード２００をそれぞれ区別する場合には、制御カード２００−１、制御カード２００−２、制御カード２００−３、制御カード２００−４、制御カード２００−５、制御カード２００−６とする。各制御カード２００は、それぞれ、同様の構成を有する。メモリカード１００は、ＧＭ＿ＦＰＧＡ１０２、複数のＤＤＲメモリ１８０を含む。ＧＭ＿ＦＰＧＡ１０２は、複数のＳＲＩＯ終端部１１０、要求多重スイッチ１５０、複数の要求ＰＨＹ変換部１６０、複数のＤＤＲ
ＰＨＹ１７０を含む。複数のＳＲＩＯ終端部１１０をそれぞれ区別する場合には、ＳＲＩＯ終端部１１０−１、ＳＲＩＯ終端部１１０−２、ＳＲＩＯ終端部１１０−３、ＳＲＩＯ終端部１１０−４、ＳＲＩＯ終端部１１０−５、ＳＲＩＯ終端部１１０−６とする。制御カード２００及びＳＲＩＯ終端部１１０の数は、６個に限定されるものではない。各ＳＲＩＯ終端部１１０は、それぞれ、同様の構成を有する。メモリカード１００は、要求ＰＨＹ変換部１６０、ＤＤＲ  ＰＨＹ１７０、ＤＤＲメモリ１８０をｎ個ずつ含む。ｎは整数である。各要求ＰＨＹ変換部１６０、各ＤＤＲ＿ＰＨＹ１７０、各ＤＤＲメモリ１８０をそれぞれ区別する場合は、要求ＰＨＹ変換部１６０−ｉ、ＤＤＲ  ＰＨＹ１７０−ｉ、ＤＤＲメモリ１８０−ｉ（ｉは１以上ｎ以下の整数）とする。ここでは、ＤＤＲメモリ１８０−１乃至ＤＤＲメモリ１８０−ｎが、合わせて９６ＧＢのメモリ領域を有しているとする。例えば、ＤＤＲメモリ１８０−ｉの容量が８ＧＢであるとき、ｎは１２となる。当該９６ＧＢのメモリ領域は、３７ビットのアドレスによって、１バイト単位で特定される。また、当該９６ＧＢのメモリ領域は、３７ビットのアドレスの上位３１ビットによって、６４バイト単位で特定される。
【００１６】
９６ＧＢのメモリが６４バイト単位の領域で区切られるとき、各領域は３１ビットのアドレスで特定され得る。６４バイトの領域は、６ビットのアドレスにより、１バイト単位で指定される。
【００１７】
図３は、アドレスとデータの例を示す図である。図３の例では、上位３１ビットが共通で下位６ビットが異なるアドレスの例を示す。下位６ビットでは、アドレス「００００００」からアドレス「１１１１１１」までの６４バイトのデータが指定される。図３のように、上位３１ビットが共通で下位６ビットが異なるアドレスでは、６４バイトのデータが特定される。即ち、メモリのアドレスの上位３１ビットで、所定の大きさの領域（ここでは、６４バイト）のデータが特定される。
【００１８】
ここでは、９６ＧＢのメモリ、６４バイト単位での読み出し及び書き込みを例として挙げているが、メモリのサイズは９６ＧＢに限定されるものではなく、読み出し及び書き込みは６４バイト単位に限定されるものではない。また、ここでは、３７ビットのアドレスが上位３１ビット及び下位６ビットに分けられる例が挙げられているが、アドレスのビット数、上位のビット数、下位のビット数は、メモリの大きさ、読み出し及び書き込みの単位に依存する。例えば、１２８バイト単位で読み出し及び書き込みがされる場合、下位のビット数は７ビットとなる。また、例えば、１９２ＧＢのメモリが使用される場合、アドレスのビット数は、３８ビットとなる。一般的に記載すると、２ｎ−１バイトより大きく２ｎバイト以下のメモリで、２ｍバイト単位で読み出し及び書き込みがされる場合、ｎビットのアドレスが使用され、上位（ｎ−ｍ）ビット、下位ｍビットに分けられる。ここでは、２３７−１Ｂ＜９６ＧＢ＜２３７Ｂであり、２６（＝６４）バイト単位で読み出し等が行われるので、ｎ＝３７、ｍ＝６としている。
【００１９】
メモリカード１００は、各制御カード２００から共通にアクセスするメモリを有するカードである。メモリカード１００には、複数の制御カード２００が接続される。
【００２０】
ＳＲＩＯ終端部１１０は、制御カード２００に対する終端機能部である。ＳＲＩＯ終端部１１０は、制御カード２００からのパケット（ＳＲＩＯパケット）を終端する。ＳＲＩＯ終端部１１０については、後に詳述する。
【００２１】
要求多重スイッチ１５０は、複数の書込要求及び複数の読出要求をスイッチする機能部である。
【００２２】
要求ＰＨＹ変換部１６０は、要求多重スイッチ１５０からの任意のＤＤＲ向けへの書込要求と読出要求をＰＨＹアクセスに変換する。
【００２３】
ＤＤＲ  ＰＨＹ１７０は、ＤＤＲメモリ１８０へのＰＨＹ機能部である。
ＤＤＲメモリ１８０は、メモリデバイスである。ＤＤＲメモリ１８０には、データが格納される。ＤＤＲメモリ１８０の１バイト単位の各領域は、３７ビットのアドレスで特定される。ＤＤＲメモリ１８０では、３７ビットのアドレスの上位３１ビットで、６４バイト単位の領域が一意に特定される。ＤＤＲメモリ１８０は、メモリ部の一例である。
【００２４】
図４は、ＳＲＩＯ終端部の構成例を示す図である。ＳＲＩＯ終端部１１０は、ＳＲＩＯ
ＰＨＹ１１２、ＳＲＩＯパケット判定部１１４、ＭＳＧ受信部１１６、ＮＷｒｉｔｅ受信部１１８、ＮＲｅａｄ受信部１２０、変更書込制御部１２２、書込要求部１２４を含む。また、ＳＲＩＯ終端部１１０は、読出要求部１２６、バッファ１２８、アドレス多重部１３０、ＭＳＧ応答部１３２、ＮＲｅａｄ応答部１３４、パケット多重部１３６を含む。
【００２５】
ＳＲＩＯ  ＰＨＹ１１２は、ＳＲＩＯのインタフェース用のＰＨＹ機能部である。
ＳＲＩＯパケット判定部１１４は、ＳＲＩＯの受信パケットから、ＭＳＧパケット、ＮＷｒｉｔｅパケット、ＮＲｅａｄパケットを判定する。
【００２６】
ＭＳＧ受信部１１６は、ＳＲＩＯ  ＭＳＧパケットから、上位アドレスを抽出する。
ＮＷｒｉｔｅ受信部１１８は、ＳＲＩＯ  ＮＷｒｉｔｅ受信パケットから、書込データ及び下位アドレスを抽出する。
【００２７】
ＮＲｅａｄ受信部１２０は、ＳＲＩＯ  ＮＲｅａｄ受信パケットから、下位アドレスを抽出する。
【００２８】
変更書込制御部１２２は、予めＤＤＲメモリ１８０から読み出されて格納されていたバ
ッファ１２８からのデータを読み出し、変更部分の書き換えを実施し、ＤＤＲメモリ１８０に書込要求を与える。
【００２９】
書込要求部１２４は、上位アドレス（３７ビットのアドレスの上位３１ビット）と変更書込制御部１２２からの書込データとを多重してＤＤＲメモリ１８０用の６４バイト書込要求を生成する。
【００３０】
読出要求部１２６は、上位アドレスから、ＤＤＲメモリ１８０に対する６４バイト読出要求を生成する。
【００３１】
バッファ１２８は、上位アドレスに基づいてＤＤＲメモリ１８０から読み出された６４バイトのデータを格納する。
【００３２】
アドレス多重部１３０は、バッファ１２８に対し、バッファ１２８に格納されているデータのうちバッファ１２８から読み出すデータを指定する。
【００３３】
ＭＳＧ応答部１３２は、ＳＲＩＯ  ＭＳＧパケットの応答パケットを生成する。
ＮＲｅａｄ応答部１３４は、ＳＲＩＯ  ＮＲｅａｄに対する応答パケットを生成する。応答パケットには、読み出されたデータが含まれる。
【００３４】
ＧＭ（Global Memory）＿ＦＰＧＡ１０２は、ＦＰＧＡ（Field Programmable Gate Array）によって実現され得る。ＧＭ＿ＦＰＧＡ１０２は、メモリアクセス部の一例である。
【００３５】
図５は、制御カードの構成例を示す図である。制御カード２００は、ＭＰＵ２１０、ＭＰＵ＿ＦＰＧＡ２２０を含む。ＭＰＵ＿ＦＰＧＡ２２０は、ＰＣＩｅ  ＰＨＹ２２２、ＰＣＩｅ受信部２２４、アドレス抜出部２２６、ＰＣＩｅパケット判定部２２８、ＳＲＩＯ
ＭＳＧ２３０、ＳＲＩＯ  ＮＷｒｉｔｅ２３２、ＳＲＩＯ  ＮＲｅａｄ２３４を含む。また、ＭＰＵ＿ＦＰＧＡ２２０は、多重部２３６、ＳＲＩＯ  ＰＨＹ２３８、ＳＲＩＯ  Ｒｅｓｐ２４０、ＰＣＩｅ送信部２４２を含む。
【００３６】
制御カード２００は、メモリカード１００にアクセスする側のカードである。制御カード２００は、メモリカード１００に対して、データの書き込みや、データの読み出しを指示する。制御カード２００−１は、メモリカード１００のＳＲＩＯ終端部１１０−１に接続される。他の制御カード２００についても同様である。即ち、各制御カード２００は、それぞれ、対応するＳＲＩＯ終端部１１０に接続される。
【００３７】
ＭＰＵ２１０は、制御カード２００を制御する。ＭＰＵ２１０は、メモリカード１００からのデータの読み出し、メモリカード１００へのデータの書き込みを指示する。ＭＰＵ２１０は、例えば、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）で実現されてもよい。
【００３８】
ＭＰＵ＿ＦＰＧＡ２２０は、ＭＰＵ２１０からの指示に基づいて、メモリカード２２０との間でパケット（ＳＲＩＯパケット）を交換する。ＭＰＵ＿ＦＰＧＡ２２０は、例えば、ＦＰＧＡ（Field Programmable Gate Array）によって実現される。ＭＰＵ＿ＦＰＧＡ
２２０は、変換部の一例である。
【００３９】
ＰＣＩｅ  ＰＨＹ２２２は、ＭＰＵ２１０との間のＰＣＩ  ＥｘｐｒｅｓｓパケットのインタフェースＰＨＹ機能部である。ＰＣＩｅ  ＰＨＹ２２２は、ＭＰＵ２１０との間で、ＰＣＩ  Ｅｘｐｒｅｓｓパケットを送受信する。
【００４０】
ＰＣＩｅ受信部２２４は、ＰＣＩ  Ｅｘｐｒｅｓｓパケットの受信制御を行う。
アドレス抜出部２２６は、受信したＰＣＩ  Ｅｘｐｒｅｓｓパケットから、アクセスするメモリ領域を指定するアドレスのうち上位アドレスを抜き出す。
【００４１】
ＰＣＩｅパケット判定部２２８は、ＰＣＩ  Ｅｘｐｒｅｓｓ受信パケットから、ＷｒｉｔｅアクセスまたはＲｅａｄアクセスを判定する。ＰＣＩｅパケット判定部２２８は、受信したＰＣＩ  Ｅｘｐｒｅｓｓパケットから、アクセスするメモリ領域を指定するアドレスのうち下位アドレスを抜き出す。
【００４２】
ＳＲＩＯ  ＭＳＧ２３０は、アドレス抜出部が抜き出した上位アドレスをＳＲＩＯのＭＳＧパケットとして送信する。
【００４３】
ＳＲＩＯ  ＮＷｒｉｔｅ２３２は、ＰＣＩ  ＥｘｐｒｅｓｓのＷｒｉｔｅメッセージに含まれる、送信データ及び下位アドレスを、ＳＲＩＯ  ＮＷｒｉｔｅパケットとして送信する。
【００４４】
ＳＲＩＯ  ＮＲｅａｄ２３４は、ＰＣＩ  ＥｘｐｒｅｓｓのＲｅａｄメッセージに含まれる下位アドレスを、ＳＲＩＯ  Ｒｅａｄパケットとして送信する。
【００４５】
多重部２３６は、ＳＲＩＯメッセージ（ＳＲＩＯパケット）を多重する。
ＳＲＩＯ  ＰＨＹ２３８は、ＳＲＩＯのインタフェース用のＰＨＹ機能部である。
【００４６】
ＳＲＩＯ  Ｒｅｓｐ２４０は、メモリカード１００からのＳＲＩＯ  ＲｅｓｐｏｎｓｅパケットをＰＣＩ  ＥｘｐｒｅｓｓのＣｏｍｐｌｅｔｉｏｎに変換する。
【００４７】
ＰＣＩｅ送信部２４２は、ＰＣＩ  Ｅｘｐｒｅｓｓパケットの送信制御を行う。
共有メモリ装置１０の各ユニットは、ハードウェアの構成要素、ソフトウェアの構成要素、又は、これらの組み合わせとして、それぞれ実現され得る。
【００４８】
ハードウェアの構成要素は、ハードウェア回路であり、例えば、ＦＰＧＡ（Field Programmable Gate Array）、特定用途向け集積回路（ＡＳＩＣ）、ゲートアレイ、論理ゲー
トの組み合わせ、アナログ回路等がある。
【００４９】
ソフトウェアの構成要素は、ソフトウェアとして所定の処理を実現する部品である。ソフトウェアの構成要素は、ソフトウェアを実現する言語、開発環境等を限定する概念ではない。
【００５０】
（動作例）
〈書き込み〉
ここでは、ＭＰＵ２１０からＤＤＲメモリ１８０の所望の位置に所望のデータを書き込む動作について説明する。
【００５１】
制御カード２００のＭＰＵ２１０は、ＭＰＵ＿ＦＰＧＡ２２０に、ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｗｒｉｔｅパケット（ＰＣＩｅＷｒｉｔｅパケット）を送信する。ＰＣＩｅＷｒｉｔｅパケットは、ＤＤＲメモリ１８０に、所定のデータを書き込むことを指示するパケットである。ＰＣＩｅＷｒｉｔｅパケットは、書き込み対象のデータが格納される位置を示すアドレス、書き込み対象のデータ、書き込みを指示するパケットであることを示す情報を含む。ここでは、当該アドレスは、書き込み対象のデータのＤＤＲメモリ１８０における先頭位置を示すとする。ここでは、当該アドレスは、３７ビットで表現される。３７ビットのアドレスは、９６ＧＢの空間を１バイト単位で特定できる。
【００５２】
ＭＰＵ＿ＦＰＧＡ２２０のＰＣＩｅＰＨＹ２２２は、ＭＰＵ２１０からＰＣＩｅＷｒｉｔｅパケットを受信すると、ＰＣＩｅ受信部２２４に送信する。ＰＣＩｅ受信部２２４は、ＰＣＩｅＰＨＹ２２２からＰＣＩｅＷｒｉｔｅパケットを受信する。ＰＣＩｅ受信部２２４は、受信したＰＣＩｅＷｒｉｔｅパケットを、アドレス抜出部２２６及びＰＣＩｅパケット判定部２２８に送信する。ＰＣＩｅＷｒｉｔｅパケットは、書き込み信号の一例である。
【００５３】
アドレス抜出部２２６は、受信したＰＣＩｅＷｒｉｔｅパケットから、書き込み対象のデータのアドレスを抜き出す。アドレス抜出部２２６は、抜き出した３７ビットのアドレスから、上位３１ビットを抽出する。アドレス抜出部２２６は、抽出したアドレスの上位３１ビットを、ＳＲＩＯ  ＭＳＧ２３０に送信する。ＳＲＩＯ  ＭＳＧ２３０は、アドレスの上位３１ビットを受信する。ＳＲＩＯ  ＭＳＧ２３０は、ＵＳＥＲＤＡＴＡにアドレスの上位３１ビットを含むＳＲＩＯ  ＭＳＧパケットを生成する。ＳＲＩＯ  ＭＳＧ２３０は、生成したＳＲＩＯ  ＭＳＧパケットを多重部２３６に送信する。ＳＲＩＯ  ＭＳＧパケットは、第４信号の一例である。
【００５４】
ＰＣＩｅパケット判定部２２８は、ＰＣＩｅ受信部２２４からＰＣＩｅＷｒｉｔｅパケットを受信する。ＰＣＩｅパケット判定部２２８は、ＰＣＩｅＷｒｉｔｅパケットのパケットの種類を判定する。ＰＣＩｅパケット判定部２２８は、ＰＣＩｅＷｒｉｔｅパケットに書き込みを指示するパケットであることを示す情報が含まれていることを確認することで、ＰＣＩｅＷｒｉｔｅパケットが書き込みを指示するパケットであることを認識する。ＰＣＩｅパケット判定部２２８は、ＰＣＩｅＷｒｉｔｅパケットから、書き込み対象のデータのアドレス（書き込み先のアドレス）を抜き出す。ＰＣＩｅパケット判定部２２８は、抜き出した３７ビットのアドレスから、下位６ビットを抽出する。ＰＣＩｅパケット判定部２２８は、ＰＣＩｅＷｒｉｔｅパケットから、書き込み対象のデータを抽出する。ＰＣＩｅパケット判定部２２８は、抽出したアドレスの下位６ビット、抽出した書き込み対象のデータを、ＳＲＩＯ  ＮＷｒｉｔｅ２３２に送信する。ＳＲＩＯ  ＮＷｒｉｔｅ２３２は、アドレスの下位６ビット及び書き込み対象のデータを含むＳＲＩＯ  ＮＷｒｉｔｅパケットを生成する。ＳＲＩＯ  ＮＷｒｉｔｅパケットのアドレスに、アドレスの下位６ビットが含まれ、ＳＲＩＯ  ＮＷｒｉｔｅパケットのＵＳＥＲＤＡＴＡに書き込み対象のデータが含まれる。ＳＲＩＯ  ＮＷｒｉｔｅ２３２は、生成したＳＲＩＯ  ＮＷｒｉｔｅパケットを多重部２３６に送信する。ＳＲＩＯ  ＮＷｒｉｔｅパケットは、第５信号の一例である。
【００５５】
多重部２３６は、ＳＲＩＯ  ＭＳＧ２３０が生成したＳＲＩＯ  ＭＳＧパケットをＳＲＩＯ  ＰＨＹ２３８に送信する。また、多重部２３６は、ＳＲＩＯ  ＮＷｒｉｔｅ２３２が生成したＳＲＩＯ  ＮＷｒｉｔｅパケットをＳＲＩＯ  ＰＨＹ２３８に送信する。ＳＲＩＯ  ＰＨＹ２３８は、多重部２３６から送信されたパケットをメモリカード１００に送信する。ＳＲＩＯ  ＭＳＧパケットが、ＳＲＩＯ  ＮＷｒｉｔｅパケットよりも先に送信される。
【００５６】
メモリカード１００のＳＲＩＯ終端部１１０のＳＲＩＯ  ＰＨＹ１１２は、制御カード２００のＭＰＵ＿ＦＰＧＡ２２０のＳＲＩＯ  ＰＨＹ２３８から送信されたパケットを受信する。ＳＲＩＯ  ＰＨＹ１１２は、受信したパケットをＳＲＩＯパケット判定部１１４に送信する。
【００５７】
ＳＲＩＯパケット判定部１１４は、ＳＲＩＯ  ＰＨＹ１１２からのパケットを、ＳＲＩＯ  ＭＳＧパケットであるか、ＳＲＩＯ  ＮＷｒｉｔｅパケットであるかを判定する。ＳＲＩＯパケット判定部１１４は、ＳＲＩＯ  ＭＳＧパケットを、ＭＳＧ受信部１１６に送
信する。ＳＲＩＯパケット判定部１１４は、ＳＲＩＯ  ＮＷｒｉｔｅパケットを、ＮＷｒｉｔｅ受信部１１８に送信する。
【００５８】
ＭＳＧ受信部１１６は、ＳＲＩＯ  ＭＳＧパケットを受信する。ＭＳＧ受信部１１６は、ＳＲＩＯ  ＭＳＧパケットのＵＳＥＲＤＡＴＡからアドレスの上位３１ビットを抽出する。ＭＳＧ受信部１１６は、抽出した上位３１ビットを、書込要求部１２４及び読出要求部１２６に送信する。
【００５９】
ＮＷｒｉｔｅ受信部１１８は、ＳＲＩＯ  ＮＷｒｉｔｅパケットを受信する。ＮＷｒｉｔｅ受信部１１８は、ＳＲＩＯ  ＮＷｒｉｔｅパケットから、アドレスの下位６ビットと、書き込み対象のデータとを抽出する。ＮＷｒｉｔｅ受信部１１８は、抽出した下位６ビットと、データとを変更書込制御部１２２に送信する。
【００６０】
読出要求部１２６は、ＭＳＧ受信部１１６から書き込み対象のデータのアドレスの上位３１ビットを受信する。読出要求部１２６は、要求多重スイッチ１５０に、読み出し要求として、アドレスの上位３１ビットを送信する。
【００６１】
要求多重スイッチ１５０は、読出要求部１２６からアドレスの上位３１ビットを受信する。アドレスの上位３１ビットは、ＤＤＲメモリ１８０の特定の６４バイトの領域を示す。要求多重スイッチ１５０は、アドレスで指定される領域がどのＤＤＲメモリ１８０に存在するかを判断する。ここでは、受信した上位３１ビットで示される領域が、ＤＤＲメモリ１８０−ｉに存在するとする。要求多重スイッチ１５０は、要求ＰＨＹ変換部１６０−ｉに、当該領域（上位３１ビットで示される領域）のデータを読み出すことを要求する。
【００６２】
要求ＰＨＹ変換部１６０−ｉは、要求多重スイッチ１５０からの要求を、ＰＨＹアクセスに変換する。ＤＤＲ  ＰＨＹ１７０−ｉは、要求に含まれる上位３１ビットで示される領域（６４バイト）のデータをＤＤＲメモリ１８０−ｉから読み出す。ＤＤＲ  ＰＨＹ１７０−ｉは、読み出したデータを要求ＰＨＹ変換部１６０−ｉに送信する。要求ＰＨＹ変換部１６０−ｉは、ＤＤＲメモリ１８０−ｉから読み出されたデータ（６４バイトのデータ）を要求多重スイッチ１５０に送信する。
【００６３】
要求多重スイッチ１５０は、ＤＤＲメモリ１８０−ｉから読み出されたデータを、読み出し要求を行ったＳＲＩＯ終端部１１０の読出要求部１２６に送信する。
【００６４】
読み出し要求を行ったＳＲＩＯ終端部１１０の読出要求部１２６は、ＤＤＲメモリ１８０−ｉから読み出された６４バイトのデータを受信する。読出要求部１２６は、受信した６４バイトのデータをバッファ１２８に格納する。６４バイトのデータは、６ビットのアドレスによって、１ビット単位で特定される。
【００６５】
変更書込制御部１２２は、ＮＷｒｉｔｅ受信部１１８から、抽出した下位６ビット及び書き込み対象のデータを受信する。変更書込制御部１２２は、アドレス多重部１３０に対し、バッファ１２８から、バッファに格納される６４バイトのデータを抽出することを指示する。
【００６６】
アドレス多重部１３０は、変更書込制御部１２２の指示に従って、バッファ１２８に格納される６４バイトのデータを取り出す。取り出されたデータは、バッファ１２８から変更書込制御部１２２に、送信される。
【００６７】
変更書込制御部１２２は、バッファ１２８から送信されたデータ内で、下位６ビットで示されるアドレスを先頭として、書き込み対象のデータを書き込む。即ち、バッファ１２
８から送信された６４ビットのデータ内で、下位６ビットで示されるアドレスを先頭に、書き込み対象のデータのサイズのデータが、書き込み対象のデータによって、書き換えられる。変更書込制御部１２２は、書き込み対象のデータによって書き換えられた６４バイトのデータ（書き込みデータ）を、書込要求部１２４に送信する。
【００６８】
書込要求部１２４は、ＭＳＧ受信部１１６から書き込み対象のデータのアドレスの上位３１ビットを受信する。書込要求部１２４は、変更書込制御部１２２から書き込みデータを受信する。書込要求部１２４は、要求多重スイッチ１５０に、書き込み要求として、アドレスの上位３１ビット及び書き込みデータを送信する。
【００６９】
要求多重スイッチ１５０は、書込要求部１２４からアドレスの上位３１ビット及び書き込みデータを受信する。アドレスの上位３１ビットは、ＤＤＲメモリ１８０の特定の６４バイトの領域を示す。要求多重スイッチ１５０は、アドレスで指定される領域がどのＤＤＲメモリ１８０に存在するかを判断する。ここでは、受信した上位３１ビットで示される領域が、ＤＤＲメモリ１８０−ｉに存在するとする。要求多重スイッチ１５０は、要求ＰＨＹ変換部１６０−ｉに、当該領域（上位３１ビットで示される領域）に書き込みデータを書き込むことを要求する。
【００７０】
要求ＰＨＹ変換部１６０−ｉは、要求多重スイッチ１５０からの要求を、ＰＨＹアクセスに変換する。ＤＤＲ  ＰＨＹ１７０−ｉは、要求に含まれる上位３１ビットで示される領域（６４バイト）に、書き込みデータをＤＤＲメモリ１８０−ｉに書き込む。
【００７１】
このようにして、ＭＰＵ２１０から、ＤＤＲメモリ１８０の所望の位置に、所望のデータが書き込まれる。
【００７２】
図６は、書き込みにおける情報の流れを示すシーケンスの例を示す図である。図６の例では、ＭＰＵ２１０、ＭＰＵ＿ＦＰＧＡ２２０、ＧＭ＿ＦＰＧＡ１０２、ＤＤＲメモリ１８０における情報の流れが示される。
【００７３】
ＭＰＵ２１０は、ＤＤＲメモリ１８０に書き込むデータと、ＤＤＲメモリ１８０における書き込み先のアドレス（書き込み先の先頭アドレス（３７ビット））を含むＰＣＩｅＷｒｉｔｅパケットを生成し、ＭＰＵ＿ＦＰＧＡ２２０に送信する（ＳＱ１００１）。
【００７４】
ＭＰＵ＿ＦＰＧＡ２２０は、ＰＣＩｅＷｒｉｔｅパケットから、書き込み用データと、書き込み先のアドレスを抽出する。ＭＰＵ＿ＦＰＧＡ２２０は、書き込み先アドレスの上位３１ビットを含むＳＲＩＯ  ＭＳＧパケットを生成し、ＧＭ＿ＦＰＧＡ１０２に送信する（ＳＱ１００２）。
【００７５】
ＧＭ＿ＦＰＧＡ１０２は、ＳＲＩＯ  ＭＳＧパケットから、書き込み先アドレスの上位３１ビットを抽出する。ＧＭ＿ＦＰＧＡ１０２は、抽出した上位３１ビットのアドレスで示されるＤＤＲメモリ１８０の領域（６４バイト）のデータを読み出すことをＤＤＲメモリ１８０に要求する（ＳＱ１００３）。
【００７６】
ＤＤＲメモリ１８０は、ＧＭ＿ＦＰＧＡ１０２に要求された上位３１ビットのアドレスで示される６４バイトのデータを、ＧＭ＿ＦＰＧＡ１０２に送信する（ＳＱ１００４）。
【００７７】
ＭＰＵ＿ＦＰＧＡ２２０は、書き込み先アドレスの下位６ビット及び書き込み用データを含むＳＲＩＯ  ＮＷｒｉｔｅパケットを生成し、ＧＭ＿ＦＰＧＡ１０２に送信する（ＳＱ１００５）。
【００７８】
ＧＭ＿ＦＰＧＡ１０２は、ＳＲＩＯ  ＮＷｒｉｔｅパケットから、書き込み先アドレスの下位６ビット及び書き込み用データを抽出する。ＧＭ＿ＦＰＧＡ１０２は、ＤＤＲメモリ１８０から読み出されたデータのうち、書き込み先アドレスの下位６ビットを先頭に、書き込み用データのサイズのデータを、書き込み用データで書き換える（ＳＱ１００６）。読み出された６４ビットのデータの一部が書き換えられた６４ビットのデータが生成される。
【００７９】
ＧＭ＿ＦＰＧＡ１０２は、書き換えられた６４ビットのデータを、ＤＤＲメモリ１８０の読み出した領域に書き込みことを、ＤＤＲメモリ１８０に要求する。ＤＤＲメモリは、要求に従って、データを書き換える。
【００８０】
シーケンスＳＱ１００３及びシーケンスＳＱ１００４と、シーケンスＳＱ１００５とは、時間的に重複してもよい。
【００８１】
このようにして、ＭＰＵ２１０が指示した書き込み用データが、ＤＤＲメモリ１８０の所定の位置に書き込まれる。
【００８２】
〈読み出し〉
ここでは、ＭＰＵ２１０からＤＤＲメモリ１８０の所望のデータを読み出す動作について説明する。
【００８３】
制御カード２００のＭＰＵ２１０は、ＭＰＵ＿ＦＰＧＡ２２０に、ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｒｅａｄパケット（ＰＣＩｅＲｅａｄパケット）を送信する。ＰＣＩｅＲｅａｄパケットは、ＤＤＲメモリ１８０から、所定のデータを読み出すことを指示するパケットである。ＰＣＩｅＲｅａｄパケットは、読み出し対象のデータが格納される位置を示すアドレス、読み出し対象のデータのサイズ、読み出しを指示するパケットであることを示す情報を含む。ここでは、当該アドレスは、読み出し対象のデータのＤＤＲメモリ１８０における先頭位置を示すとする。ここでは、当該アドレスは、３７ビットで表現される。３７ビットのアドレスは、９６ＧＢの空間を１バイト単位で特定できる。
【００８４】
ＭＰＵ＿ＦＰＧＡ２２０のＰＣＩｅＰＨＹ２２２は、ＭＰＵ２１０からＰＣＩｅＲｅａｄパケットを受信すると、ＰＣＩｅ受信部２２４に送信する。ＰＣＩｅ受信部２２４は、ＰＣＩｅＰＨＹ２２２からＰＣＩｅＲｅａｄパケットを受信する。ＰＣＩｅ受信部２２４は、受信したＰＣＩｅＲｅａｄパケットを、アドレス抜出部２２６及びＰＣＩｅパケット判定部２２８に送信する。ＰＣＩｅＲｅａｄパケットは、読み出し信号の一例である。
【００８５】
アドレス抜出部２２６は、受信したＰＣＩｅＲｅａｄパケットから、読み出し対象のデータのアドレスを抜き出す。アドレス抜出部２２６は、抜き出した３７ビットのアドレスから、上位３１ビットを抽出する。アドレス抜出部２２６は、抽出したアドレスの上位３１ビットを、ＳＲＩＯ  ＭＳＧ２３０に送信する。ＳＲＩＯ  ＭＳＧ２３０は、アドレスの上位３１ビットを受信する。ＳＲＩＯ  ＭＳＧ２３０は、ＵＳＥＲＤＡＴＡにアドレスの上位３１ビットを含むＳＲＩＯ  ＭＳＧパケットを生成する。ＳＲＩＯ  ＭＳＧ２３０は、生成したＳＲＩＯ  ＭＳＧパケットを多重部２３６に送信する。ＳＲＩＯ  ＭＳＧパケットは、第１信号の一例である。
【００８６】
ＰＣＩｅパケット判定部２２８は、ＰＣＩｅ受信部２２４からＰＣＩｅＲｅａｄパケットを受信する。ＰＣＩｅパケット判定部２２８は、ＰＣＩｅＲｅａｄパケットのパケットの種類を判定する。ＰＣＩｅパケット判定部２２８は、ＰＣＩｅＲｅａｄパケットに読み出しを指示するパケットであることを示す情報が含まれていることを確認することで、ＰＣＩｅＲｅａｄパケットが読み出しを指示するパケットであることを認識する。ＰＣＩｅ
パケット判定部２２８は、ＰＣＩｅＲｅａｄパケットから、読み出し対象のデータのアドレス（読み出し先のアドレス）を抜き出す。ＰＣＩｅパケット判定部２２８は、抜き出した３７ビットのアドレスから、下位６ビットを抽出する。ＰＣＩｅパケット判定部２２８は、ＰＣＩｅＲｅａｄパケットから、読み出し対象のデータのサイズを抽出する。ＰＣＩｅパケット判定部２２８は、抽出したアドレスの下位６ビット、抽出した読み出し対象のデータのサイズを、ＳＲＩＯ  ＮＲｅａｄ２３４に送信する。ＳＲＩＯ  ＮＲｅａｄ２３４は、アドレスの下位６ビット及びデータのサイズを含むＳＲＩＯ  ＮＲｅａｄパケットを生成する。ＳＲＩＯ  ＮＲｅａｄパケットのアドレスにアドレスの下位６ビットが含まれ、ＳＲＩＯ  ＮＲｅａｄパケットのヘッダにデータのサイズが含まれる。ＳＲＩＯ  ＮＲｅａｄ２３４は、生成したＳＲＩＯ  ＮＲｅａｄパケットを多重部２３６に送信する。
【００８７】
多重部２３６は、ＳＲＩＯ  ＭＳＧ２３０が生成したＳＲＩＯ  ＭＳＧパケットを、ＳＲＩＯ  ＰＨＹ２３８に送信する。多重部２３６は、ＳＲＩＯ  ＮＲｅａｄ２３４が生成したＳＲＩＯ  ＮＲｅａｄパケットを、ＳＲＩＯ  ＰＨＹ２３８に送信する。ＳＲＩＯ  ＰＨＹ２３８は、多重部２３６から送信されたパケットをメモリカード１００に送信する。ＳＲＩＯ  ＭＳＧパケットが、ＳＲＩＯ  ＮＲｅａｄパケットよりも先に送信される。ＳＲＩＯ  ＮＲｅａｄパケットは、第２信号の一例である。
【００８８】
メモリカード１００のＳＲＩＯ終端部１１０のＳＲＩＯ  ＰＨＹ１１２は、制御カード２００のＭＰＵ＿ＦＰＧＡ２２０のＳＲＩＯ  ＰＨＹ２３８から送信されたパケットを受信する。ＳＲＩＯ  ＰＨＹ１１２は、受信したパケットをＳＲＩＯパケット判定部１１４に送信する。
【００８９】
ＳＲＩＯパケット判定部１１４は、ＳＲＩＯ  ＰＨＹ１１２から送信されたパケットが、ＳＲＩＯ  ＭＳＧパケットであるか、ＳＲＩＯ  ＮＲｅａｄパケットであるかを判定する。ＳＲＩＯパケット判定部１１４は、ＳＲＩＯ  ＭＳＧパケットを、ＭＳＧ受信部１１６に送信する。ＳＲＩＯパケット判定部１１４は、ＳＲＩＯ  ＮＲｅａｄパケット、ＮＲｅａｄ受信部１２０に送信する。
【００９０】
ＭＳＧ受信部１１６は、ＳＲＩＯ  ＭＳＧパケットを受信する。ＭＳＧ受信部１１６は、ＳＲＩＯ  ＭＳＧパケットのＵＳＥＲＤＡＴＡからアドレスの上位３１ビットを抽出する。ＭＳＧ受信部１１６は、抽出した上位３１ビットを、書込要求部１２４及び読出要求部１２６に送信する。
【００９１】
ＮＲｅａｄ受信部１２０は、ＳＲＩＯ  ＮＲｅａｄパケットを受信する。ＮＲｅａｄ受信部１２０は、ＳＲＩＯ  ＮＲｅａｄパケットから、アドレスの下位６ビットと、読み出し対象のデータのサイズとを抽出する。ＮＲｅａｄ受信部１２０は、抽出した下位６ビットと、データのサイズとをＮＲｅａｄ応答部１３４に送信する。
【００９２】
読出要求部１２６は、ＭＳＧ受信部１１６から読み出し対象のデータのアドレスの上位３１ビットを受信する。読出要求部１２６は、要求多重スイッチ１５０に、読み出し要求として、アドレスの上位３１ビットを送信する。
【００９３】
要求多重スイッチ１５０は、読出要求部１２６からアドレスの上位３１ビットを受信する。アドレスの上位３１ビットは、ＤＤＲメモリ１８０の特定の６４バイトの領域を示す。要求多重スイッチ１５０は、アドレスで指定される領域がどのＤＤＲメモリ１８０に存在するかを判断する。ここでは、受信した上位３１ビットで示される領域が、ＤＤＲメモリ１８０−ｉに存在するとする。要求多重スイッチ１５０は、要求ＰＨＹ変換部１６０−ｉに、当該領域（上位３１ビットで示される領域）のデータを読み出すことを要求する。
【００９４】
要求ＰＨＹ変換部１６０−ｉは、要求多重スイッチ１５０からの要求を、ＰＨＹアクセスに変換する。ＤＤＲ  ＰＨＹ１７０−ｉは、要求に含まれる上位３１ビットで示される領域（６４バイト）のデータをＤＤＲメモリ１８０−ｉから読み出す。ＤＤＲ  ＰＨＹ１７０−ｉは、読み出したデータを要求ＰＨＹ変換部１６０−ｉに送信する。要求ＰＨＹ変換部１６０−ｉは、ＤＤＲメモリ１８０−ｉから読み出されたデータを要求多重スイッチ１５０に送信する。
【００９５】
要求多重スイッチ１５０は、ＤＤＲメモリ１８０−ｉから読み出されたデータを、読み出し要求を行ったＳＲＩＯ終端部１１０の読出要求部１２６に送信する。
【００９６】
読み出し要求を行ったＳＲＩＯ終端部１１０の読出要求部１２６は、ＤＤＲメモリ１８０−ｉから読み出された６４バイトのデータを受信する。読出要求部１２６は、受信した６４バイトのデータをバッファ１２８に格納する。
【００９７】
ＮＲｅａｄ応答部１３４は、ＮＲｅａｄ受信部１２０から、抽出した下位６ビット及びデータのサイズを受信する。ＮＲｅａｄ応答部１３４は、アドレス多重部１３０に対し、バッファ１２８から、受信した下位６ビットで示されるアドレスから、受信したデータのサイズのデータを抽出することを指示する。
【００９８】
アドレス多重部１３０は、ＮＲｅａｄ応答部１３４の指示に従って、バッファ１２８に格納される（６４バイトの）データから、指示された下位６ビットで示されるアドレスから、指示されたデータのサイズのデータを取り出す。取り出されたデータは、バッファ１２８からＮＲｅａｄ応答部１３４に、送信される。
【００９９】
ＮＲｅａｄ応答部１３４は、バッファ１２８から送信されたデータをＵＳＥＲＤＡＴＡに含むＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットを生成する。ＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットは、ＳＲＩＯ  ＮＲｅａｄパケットに対する応答パケットである。ＮＲｅａｄ応答部１３４は、生成したＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットをパケット多重部１３６に送信する。ＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットは、第３信号の一例である。
【０１００】
パケット多重部１３６は、ＮＲｅａｄ応答部１３４からＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットを受信する。パケット多重部１３６は、ＳＲＩＯ  ＲｅｓｐｏｎｓｅパケットをＳＲＩＯ  ＰＨＹ１１２に送信する。
【０１０１】
ＳＲＩＯ  ＰＨＹ１１２は、パケット多重部１３６から、ＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットを受信する。ＳＲＩＯ  ＰＨＹ１１２は、制御カード２００にＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットを送信する。
【０１０２】
制御カード２００のＭＰＵ＿ＦＰＧＡ２２０のＳＲＩＯ  ＰＨＹ２３８は、メモリカード１００からＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットを受信する。ＳＲＩＯ  ＰＨＹ２３８は、ＳＲＩＯ  ＲｅｓｐｏｎｓｅパケットをＳＲＩＯ  Ｒｅｓｐ２４０に送信する。
【０１０３】
ＳＲＩＯ  Ｒｅｓｐ２４０は、ＳＲＩＯ  ＰＨＹ２３８からＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットを受信する。ＳＲＩＯ  Ｒｅｓｐ２４０は、ＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットから、ＵＳＥＲＤＡＴＡ内のデータを抽出する。ＳＲＩＯ  Ｒｅｓｐ２４０は、当該データをＵＳＥＲＤＡＴＡに含むＰＣＩ  Ｅｘｐｒｅｓｓ  Ｃｏｍｐｌｅｔｉｏｎパケット（ＰＣＩｅ  Ｃｏｍｐｌｅｔｉｏｎパケット）を生成する。ＳＲＩＯ  Ｒｅｓｐ２４０は、生成したＰＣＩｅ  ＣｏｍｐｌｅｔｉｏｎパケットをＰＣＩｅ送信部２４２に送信する。
【０１０４】
ＰＣＩｅ送信部２４２は、ＳＲＩＯ  Ｒｅｓｐ２４０から、ＰＣＩｅ  Ｃｏｍｐｌｅｔｉｏｎパケットを受信する。ＰＣＩｅ送信部２４２は、受信したＰＣＩｅ  ＣｏｍｐｌｅｔｉｏｎパケットをＰＣＩｅ  ＰＨＹ２２２に送信する。
【０１０５】
ＰＣＩｅ  ＰＨＹ２２２は、ＰＣＩｅ送信部２４２からＰＣＩｅ  Ｃｏｍｐｌｅｔｉｏｎパケットを受信する。ＰＣＩｅ  ＰＨＹ２２２は、ＰＣＩｅ  ＣｏｍｐｌｅｔｉｏｎパケットをＭＰＵ２１０に送信する。
【０１０６】
ＭＰＵ２１０は、ＰＣＩｅ  ＣｏｍｐｌｅｔｉｏｎパケットのＵＳＥＲＤＡＴＡを抽出する。ＰＣＩｅ  ＣｏｍｐｌｅｔｉｏｎパケットのＵＳＥＲＤＡＴＡに含まれるデータは、ＭＰＵ２１０がＰＣＩｅＲｅａｄパケットで、ＤＤＲメモリ１８０から読み出すことを要求したデータである。
【０１０７】
このようにして、ＭＰＵ２１０からＤＤＲメモリ１８０の所望のデータが読み出される。
【０１０８】
図７は、読み出しにおける情報の流れを示すシーケンスの例を示す図である。図７の例では、ＭＰＵ２１０、ＭＰＵ＿ＦＰＧＡ２２０、ＧＭ＿ＦＰＧＡ１０２、ＤＤＲメモリ１８０における情報の流れが示される。
【０１０９】
ＭＰＵ２１０は、ＤＤＲメモリ１８０における読み出し先のアドレス（読み出し先の先頭アドレス（３７ビット））及び読み出すデータの大きさを含むＰＣＩｅＲｅａｄパケットを生成し、ＭＰＵ＿ＦＰＧＡ２２０に送信する（ＳＱ２００１）。
【０１１０】
ＭＰＵ＿ＦＰＧＡ２２０は、ＰＣＩｅＲｅａｄパケットから、読み出し先のアドレス及び読み出すデータの大きさを抽出する。ＭＰＵ＿ＦＰＧＡ２２０は、読み出し先アドレスの上位３１ビットを含むＳＲＩＯ  ＭＳＧパケットを生成し、ＧＭ＿ＦＰＧＡ１０２に送信する（ＳＱ２００２）。
【０１１１】
ＧＭ＿ＦＰＧＡ１０２は、ＳＲＩＯ  ＭＳＧパケットから、読み出し先アドレスの上位３１ビットを抽出する。ＧＭ＿ＦＰＧＡ１０２は、抽出した上位３１ビットのアドレスで示されるＤＤＲメモリ１８０の領域（６４バイト）のデータを読み出すことをＤＤＲメモリ１８０に要求する（ＳＱ２００３）。
【０１１２】
ＤＤＲメモリ１８０は、ＧＭ＿ＦＰＧＡ１０２に要求された上位３１ビットのアドレスで示される６４バイトのデータを、ＧＭ＿ＦＰＧＡ１０２に送信する（ＳＱ２００４）。
【０１１３】
ＭＰＵ＿ＦＰＧＡ２２０は、読み出し先アドレスの下位６ビット及び読み出し用データの大きさを含むＳＲＩＯ  ＮＲｅａｄパケットを生成し、ＧＭ＿ＦＰＧＡ１０２に送信する（ＳＱ２００５）。
【０１１４】
ＧＭ＿ＦＰＧＡ１０２は、ＳＲＩＯ  ＮＲｅａｄパケットから、書き込み先アドレスの下位６ビット及び書き込み用データを抽出する。ＧＭ＿ＦＰＧＡ１０２は、ＤＤＲメモリ１８０から読み出されたデータのから、読み出し先アドレスの下位６ビットを先頭に、読み出し用データの大きさ（サイズ）のデータを、抽出する（ＳＱ２００６）。
【０１１５】
ＧＭ＿ＦＰＧＡ１０２は、抽出されたデータをＵＳＥＲＤＡＴＡに含むＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットを生成し、ＭＰＵ＿ＦＰＧＡ２２０に送信する（ＳＱ２００７）。
【０１１６】
ＭＰＵ＿ＦＰＧＡ２２０は、ＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットから、ＵＳＥＲＤＡ
ＴＡに含まれるデータを抽出する。ＭＰＵ＿ＦＰＧＡ２２０は、抽出データをＵＳＥＲＤＡＴＡに含むＰＣＩｅＣｏｍｐパケットを生成し、ＭＰＵ２１０に送信する。
【０１１７】
シーケンスＳＱ２００３及びシーケンスＳＱ２００４と、シーケンスＳＱ２００５とは、時間的に重複してもよい。
【０１１８】
このようにして、ＭＰＵ２１０からＤＤＲメモリ１８０の所望のデータが読み出される。
【０１１９】
（パケットの構成例）
図８は、書き込みのパケットの構成例を示す図である。図８では、ＰＣＩｅ  Ｗｒｉｔｅパケットと、ＳＲＩＯ  ＮＷｒｉｔｅパケットの例を示す。ＰＣＩｅ  Ｗｒｉｔｅパケットは、Ｈｅａｄｅｒで８８ビット、Ａｄｄｒｅｓｓで６４ビット、Ｆｏｏｔｅｒで４０ビットを使用する。ＰＣＩｅ  Ｗｒｉｔｅパケットには、ＵＳＥＲＤＡＴＡが含まれる。ＵＳＥＲＤＡＴＡの大きさは、パケットによって異なる。ＳＲＩＯ  ＮＷｒｉｔｅパケットは、Ｈｅａｄｅｒで４８ビット、Ａｄｄｒｅｓｓで３２ビット、Ｆｏｏｔｅｒで１６ビットを使用する。ＳＲＩＯ  ＮＷｒｉｔｅパケットには、ＵＳＥＲＤＡＴＡが含まれる。ＵＳＥＲＤＡＴＡの大きさは、パケットによって異なる。ＵＳＥＲＤＡＴＡのサイズが同じである場合、ＳＲＩＯ  ＮＷｒｉｔｅパケットは、ＰＣＩｅ  Ｗｒｉｔｅパケットより小さい。ＳＲＩＯ  ＮＷｒｉｔｅパケットのＵＳＥＲＤＡＴＡに書き込み対象のデータが含まれる。ＳＲＩＯ  ＮＷｒｉｔｅパケットのＡｄｄｒｅｓｓに書き込み対象のデータのアドレスの上位３１ビットが含まれる。
【０１２０】
図９は、読み出しのパケットの構成例を示す図である。図９では、ＰＣＩｅ  Ｒｅａｄパケットと、ＳＲＩＯ  ＮＲｅａｄパケットの例を示す。ＰＣＩｅ  Ｒｅａｄパケットは、Ｈｅａｄｅｒで８８ビット、Ａｄｄｒｅｓｓで６４ビット、Ｆｏｏｔｅｒで４０ビットを使用する。ＳＲＩＯ  ＮＲｅａｄパケットは、Ｈｅａｄｅｒで４８ビット、Ａｄｄｒｅｓｓで３２ビット、Ｆｏｏｔｅｒで１６ビットを使用する。ＳＲＩＯ  ＮＲｅａｄパケットは、ＰＣＩｅ  Ｒｅａｄパケットより小さい。ＳＲＩＯ  ＮＲｅａｄパケットのＨｅａｄｅｒに読み出し対象のデータの大きさが含まれる。ＳＲＩＯ  ＮＲｅａｄパケットのＡｄｄｒｅｓｓに読み出し対象のデータのアドレスの下位６ビットが含まれる。
【０１２１】
図１０は、応答のパケットの構成例を示す図である。図１０では、ＰＣＩｅ  Ｃｏｍｐｌｅｔｉｏｎパケットと、ＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットの例を示す。ＰＣＩｅ  Ｃｏｍｐｌｅｔｉｏｎパケットは、Ｈｅａｄｅｒで８８ビット、Ｆｏｏｔｅｒで４０ビットを使用する。ＰＣＩｅＣｏｍｐｌｅｔｉｏｎパケットには、ＵＳＥＲＤＡＴＡが含まれる。ＵＳＥＲＤＡＴＡの大きさは、パケットによって異なる。ＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットは、Ｈｅａｄｅｒで４８ビット、Ｆｏｏｔｅｒで１６ビットを使用する。ＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットには、ＵＳＥＲＤＡＴＡが含まれる。ＵＳＥＲＤＡＴＡの大きさは、パケットによって異なる。ＵＳＥＲＤＡＴＡのサイズが同じである場合、ＳＲＩＯ  ＮＲｅｓｐｏｎｓｅパケットは、ＰＣＩｅ  Ｃｏｍｐｌｅｔｉｏｎパケットより小さい。
【０１２２】
図１１は、ＳＲＩＯ  ＭＳＧパケットの構成例を示す図である。ＳＲＩＯ  ＭＳＧパケットは、Ｈｅａｄｅｒで４８ビット、Ｆｏｏｔｅｒで１６ビットを使用する。ＳＲＩＯ  ＭＳＧパケットには、ＵＳＥＲＤＡＴＡが含まれる。ＵＳＥＲＤＡＴＡの大きさは、パケットによって異なる。本実施形態では、ＵＳＥＲＤＡＴＡにメモリのアドレスの上位３１ビットが含まれる。
【０１２３】
（実施形態の作用、効果）
共有メモリ装置１０の制御カードは、３７ビットで示される９６ＧＢのメモリのアドレスを、上位３１ビットと下位６ビットとに分離する。共有メモリ装置１０は、上位３１ビットで指定される領域のデータ（６４バイトのデータ）をＤＤＲメモリ１８０から読み出す。共有メモリ装置１０は、読み出された６４バイトのデータから、下位６ビットのアドレスで示される位置のデータを読み出す。また、共有メモリ装置１０は、読み出された６４バイトのデータの下位６ビットのアドレスで示される位置にデータを書き込む。共有メモリ装置１０は、書き込んだデータで、ＤＤＲメモリ１８０の上位３１ビットで指定される領域のデータを書き換える。
【０１２４】
共有メモリ装置１０は、ＳＲＩＯを使用して、３７ビットで示される９６ＧＢのメモリに対し、書き込み、読み出しを行うことができる。通常のＤＤＲメモリの読み出し、書き込みの単位は、６４バイトである。ＤＤＲメモリにおける６４バイトの領域は、３７ビットのアドレスのうち上位３１ビットで表される。よって、共有メモリ装置１０は、３７ビットのアドレスのうち上位３１ビットがあれば、６４バイト単位の読み出しを行うことができる。共有メモリ装置１０は、上位３１ビットのアドレスを先にメモリカードに送信することで、下位６ビットのアドレスの情報を得ることなく、３７ビットのアドレスで示されるデータを含む領域のデータを読み出せる。共有メモリ装置１０は、３７ビットのアドレスを、上位３１ビットのアドレスと下位６ビットのアドレスに分離することで、ＳＲＩＯのパケットを使用してＤＤＲメモリのデータを読み書きできる。
【０１２５】
図１２は、４バイトのデータの書き込みの際に、ＰＣＩｅパケットでＤＤＲメモリに直接アクセスした場合と、本実施形態の構成でＤＤＲメモリにアクセスした場合の比較例を示す図である。ここでは、６６６ＭＨｚで、ＤＤＲメモリにアクセスする。
【０１２６】
ＰＣＩｅパケットでは、ＰＣＩｅＷｒｉｔｅパケットの送信で５６ｎｓかかる。また、メモリアクセスに読み出しで３６ｎｓ、書き込みで３６ｎｓかかる。従って、ＰＣＩeパ
ケットでＤＤＲメモリに直接アクセスした場合、書き込みに１２８ｎｓかかる。
【０１２７】
一方、本実施形態の方法では、アドレスの上位３１ビットを含むＳＲＩＯ  ＭＳＧパケットの送信で２４ｎｓかかる。また、メモリアクセスに読み出しで３６ｎｓ、書き込みで３６ｎｓかかる。本実施形態では、ＳＲＩＯ  ＭＳＧパケットに含まれるアドレスの上位３１ビットの情報で、ＤＤＲメモリから６４バイトのデータが取り出される。したがって、アドレスの下位６ビットの受信を待つことなく、ＤＤＲメモリからデータを取り出すことができる。ＤＤＲメモリから取り出されたデータは、バッファに格納される。本実施形態の方法では、共有メモリ装置１０は、ＤＤＲメモリからデータを読み出している間に、アドレスの下位６ビット及び書き込み対象のデータを含むＳＲＩＯ  ＮＷｒｉｔｅパケットを処理できる。共有メモリ装置１０は、アドレスの下位６ビットと書き込み対象のデータとに基づいて、バッファに格納されるＤＤＲメモリから読み出したデータを書き換える。さらに、共有メモリ装置１０は、書き換えたデータをＤＤＲメモリに書き込む。本実施形態では、書き込みに９６ｎｓかかる。これは、ＰＣＩeパケットでＤＤＲメモリに直接
アクセスした場合と比較して、短い。本実施形態では、ＰＣＩeパケットでＤＤＲメモリ
に直接アクセスした場合に対して、７５％の時間で書き込みができる。
【０１２８】
図１３は、４バイトのデータの読み出しの際に、ＰＣＩｅパケットでＤＤＲメモリに直接アクセスした場合と、本実施形態の構成でメモリにアクセスした場合の比較例を示す図である。ここでは、６６６ＭＨｚで、メモリにアクセスする。
【０１２９】
ＰＣＩｅパケットでは、ＰＣＩｅＲｅａｄパケットの送信で４８ｎｓかかる。また、メモリアクセスに読み出しで３６ｎｓ、読み出したデータを含むＰＣＩｅＣｏｍｐｌｅｔｉｏｎパケットの送信で４０ｎｓかかる。従って、ＰＣＩeパケットでＤＤＲメモリに直接
アクセスした場合、書き込みに１２４ｎｓかかる。
【０１３０】
一方、本実施形態の方法では、アドレスの上位３１ビットを含むＳＲＩＯ  ＭＳＧパケットの送信で２４ｎｓかかる。また、メモリアクセスに読み出しで３６ｎｓ、読み出したデータを含むＳＲＩＯ  Ｒｅｓｐｏｎｓｅパケットの送信で３６ｎｓかかる。本実施形態では、ＳＲＩＯ  ＭＳＧパケットに含まれるアドレスの上位３１ビットの情報で、ＤＤＲメモリから６４バイトのデータが取り出される。したがって、アドレスの下位６ビットの受信を待つことなく、ＤＤＲメモリからデータを取り出すことができる。ＤＤＲメモリから取り出されたデータは、バッファに格納される。本実施形態の方法では、共有メモリ装置１０は、ＤＤＲメモリからデータを読み出している間に、アドレスの下位６ビット及び読み出し対象のデータのサイズを含むＳＲＩＯ  ＮＲｅａｄパケットを処理できる。アドレスの下位６ビットとデータのサイズとに基づいて、バッファに格納されるＤＤＲメモリから読みだしたデータ（６４バイトのデータ）から所望のデータが得られる。本実施形態では、読み出しに８４ｎｓかかる。これは、ＰＣＩeパケットでＤＤＲメモリに直接アク
セスした場合と比較して、短い。本実施形態では、ＰＣＩeパケットでＤＤＲメモリに直
接アクセスした場合に対して、６８％の時間で読み出しができる。
【０１３１】
本実施形態で、メモリに対して書き込むデータの大きさ、メモリから読み出すデータの大きさは、４バイトに限定されるものではない。メモリに対して書き込むデータの大きさ、メモリから読み出すデータの大きさは、任意に選択することができる。
【０１３２】
ＳＲＩＯパケットのヘッダ部分はＰＣＩｅパケットのヘッダ部分に比べて小さいので、ＳＲＩＯパケットが使用されることで、より高速に、メモリからのデータの読み出し、書き込みができる。
【符号の説明】
【０１３３】
１０          共有メモリ装置
１００          メモリカード
１０２            ＧＭ＿ＦＰＧＡ
１１０            ＳＲＩＯ終端部
１１２              ＳＲＩＯ  ＰＨＹ
１１４              ＳＲＩＯパケット判定部
１１６              ＭＳＧ受信部
１１８              ＮＷｒｉｔｅ受信部
１２０              ＮＲｅａｄ受信部
１２２              変更書込制御部
１２４              書込要求部
１２６              読出要求部
１２８              バッファ
１３０              アドレス多重部
１３２              ＭＳＧ応答部
１３４              ＮＲｅａｄ応答部
１３６              パケット多重部
１５０            要求多重スイッチ
１６０            要求ＰＨＹ変換部
１７０            ＤＤＲ  ＰＨＹ
１８０            ＤＤＲメモリ
２００          制御カード
２１０            ＭＰＵ
２２０            ＭＰＵ＿ＦＰＧＡ
２２２              ＰＣＩｅ  ＰＨＹ
２２４              ＰＣＩｅ受信部
２２６              アドレス抜出部
２２８              ＰＣＩｅパケット判定部
２３０              ＳＲＩＯ  ＭＳＧ
２３２              ＳＲＩＯ  ＮＷｒｉｔｅ
２３４              ＳＲＩＯ  ＮＲｅａｄ
２３６              多重部
２３８              ＳＲＩＯ  ＰＨＹ
２４０              ＳＲＩＯ  Ｒｅｓｐ
２４２              ＰＣＩｅ送信部
【図１】
2014238778.tif 000003
【図２】
2014238778.tif 000004
【図３】
2014238778.tif 000005
【図４】
2014238778.tif 000006
【図５】
2014238778.tif 000007
【図６】
2014238778.tif 000008
【図７】
2014238778.tif 000009
【図８】
2014238778.tif 000010
【図９】
2014238778.tif 000011
【図１０】
2014238778.tif 000012
【図１１】
2014238778.tif 000013
【図１２】
2014238778.tif 000014
【図１３】
2014238778.tif 000015