(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025079967
(43)【公開日】2025-05-23
(54)【発明の名称】メモリ駆動装置、光伝送システム、及びメモリ駆動方法
(51)【国際特許分類】
G06F 13/36 20060101AFI20250516BHJP
G06F 13/42 20060101ALI20250516BHJP
G06F 13/12 20060101ALI20250516BHJP
【FI】
G06F13/36 310E
G06F13/42 310
G06F13/36 320A
G06F13/36 510
G06F13/12 340G
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023192880
(22)【出願日】2023-11-13
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100087480
【弁理士】
【氏名又は名称】片山 修平
(72)【発明者】
【氏名】横倉 伊智郎
(72)【発明者】
【氏名】杉山 純一
(72)【発明者】
【氏名】田辺 裕亮
(57)【要約】
【課題】CXL(Compute eXpress Link)を利用したメモリアクセスの通信速度を向上するメモリ駆動装置、光伝送システム、及びメモリ駆動方法を提供することを目的とする。
【解決手段】メモリ駆動装置は、CXLで規定された接続規格に応じた特定パケットを受信した場合、前記特定パケットの一部として含まれるデータをバッファに格納するとともに、前記特定パケットの前記一部として前記データと共に含まれるアドレスが連続するか否かを判定し、前記アドレスが連続する場合、連続する前記アドレスの情報と、連続する前記アドレスに関連付けられた前記データの情報とを集約した第1情報を生成する生成部と、前記バッファに格納された前記データを前記CXLに対応不能な通信規格で規定されたメモリ装置に書き込む際に、前記第1情報と前記通信規格とに基づいて、前記メモリ装置に対し、前記データの前記メモリ装置への書込要求を通知する通知部と、を有する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
CXL(Compute eXpress Link)で規定された接続規格に応じた特定パケットを受信した場合、前記特定パケットの一部として含まれるデータをバッファに格納するとともに、前記特定パケットの前記一部として前記データと共に含まれるアドレスが連続するか否かを判定し、前記アドレスが連続する場合、連続する前記アドレスの情報と、連続する前記アドレスに関連付けられた前記データの情報とを集約した第1情報を生成する生成部と、
前記バッファに格納された前記データを前記CXLに対応不能な通信規格で規定されたメモリ装置に書き込む際に、前記第1情報と前記通信規格とに基づいて、前記メモリ装置に対し、前記データの前記メモリ装置への書込要求を通知する通知部と、
を有するメモリ駆動装置。
【請求項2】
前記生成部は、前記アドレスが連続しない場合、連続しない単独の前記アドレスの情報と、連続しない単独の前記アドレスに関連付けられた前記データの情報とを集約した第2情報を生成し、
前記通知部は、前記第2情報と前記通信規格とに基づいて、前記メモリ装置に対し、前記データの前記メモリ装置への前記書込要求を通知する、
ことを特徴とする請求項1に記載のメモリ駆動装置。
【請求項3】
前記特定パケットが含むフラグ情報に基づいて、前記特定パケットを光伝送用の伝送フレームに収容するか否かを判定する判定部を含み、
前記生成部は、前記判定部が前記特定パケットを前記伝送フレームに収容しないと判定した場合に、前記第1情報を生成する、
ことを特徴とする請求項1又は2に記載のメモリ駆動装置。
【請求項4】
前記特定パケットが含むフラグ情報に基づいて、前記特定パケットを光伝送用の伝送フレームに収容するか否かを判定する判定部を含み、
前記生成部は、前記判定部が前記特定パケットを前記伝送フレームに収容すると判定した場合に、前記第1情報の生成を回避する、
ことを特徴とする請求項1又は2に記載のメモリ駆動装置。
【請求項5】
前記特定パケットを収容した光伝送用の伝送フレームを光伝送路に送信する第1光伝送装置と、請求項1又は2に記載のメモリ駆動装置を含み、前記光伝送路から前記伝送フレームを受信する第2光伝送装置と、を備える光伝送システムであって、
前記生成部は、前記第2光伝送装置が前記伝送フレームから前記特定パケットを抽出することにより、前記特定パケットを受信する、
ことを特徴とする光伝送システム。
【請求項6】
CXL(Compute eXpress Link)で規定された接続規格に応じた特定パケットを受信した場合、前記特定パケットの一部として含まれるデータをバッファに格納するとともに、前記特定パケットの前記一部として前記データと共に含まれるアドレスが連続するか否かを判定し、
前記アドレスが連続する場合、連続する前記アドレスの情報と、連続する前記アドレスに関連付けられた前記データの情報とを集約した第1情報を生成し、
前記バッファに格納された前記データを前記CXLに対応不能な通信規格で規定されたメモリ装置に書き込む際に、前記第1情報と前記通信規格とに基づいて、前記メモリ装置に対し、前記データの前記メモリ装置への書込要求を通知する、
メモリ駆動方法。
【発明の詳細な説明】
【技術分野】
【0001】
本件はメモリ駆動装置、光伝送システム、及びメモリ駆動方法に関する。
【背景技術】
【0002】
CXL(Compute eXpress Link)と呼ばれるインターコネクト規格が知られている(例えば特許文献1乃至4参照)。CXLはインターコネクト規格の主流であるPCIe(Peripheral Component Interconnect express)の仕様を流用し、演算リソースの最適化を図っている。なお、インターコネクト規格は相互接続プロトコルと呼ばれることもある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2021-087216号公報
【特許文献2】米国特許出願公開第2020/0379930号明細書
【特許文献3】米国特許第11375050号明細書
【特許文献4】米国特許第11601377号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、1つのデータセンターに複数のサーバが設置されてサーバ間でデータ通信が行われることがある。また、異なるデータセンターのそれぞれに設置されたサーバ間でもデータ通信が行われることがある。サーバ間でデータ通信が行われる際、サーバのプロセッサがデータ通信のために使用される。プロセッサがデータ通信のために使用された状態で、例えばサーバのアプリケーションソフトウェアが実行されると、プロセッサの負荷が増大する。
【0005】
このようなプロセッサの負荷の増大を低減することを目的として、スマートNIC(Network Interface Card)が注目されている。スマートNICはプロセッサを備えており、例えばサーバのPCIeスロットに取り付けられて使用される。スマートNICはサーバからクライアント信号として受け取ったPCIeフレーム(又はPCIe物理パケット)からPCIeTLP(PCIe Transaction Layer Packet)と呼ばれるトランザクションレイヤ(層)のパケットを抽出する。パケットを抽出すると、スマートNICはこのパケットをイーサネット(登録商標)フレームに収容して送信する。スマートNICはサーバとは別にデータ通信に係る処理を分担するため、サーバのプロセッサの負荷の増大が低減される。
【0006】
さらに、データ通信の低遅延化と低消費電力化を実現する場合には、スマートNICに光伝送機能を搭載することが想定される。この場合、光伝送機能を搭載するスマートNIC(以下、光伝送装置という)はイーサネット(登録商標)フレームをOTN(Optical Transport Network)フレームに収容して光伝送ネットワークに送信する。光伝送ネットワークは、例えば数十キロメートルから数百キロメートルなど、距離が遠く離れた異なる2つの局舎の間に設けられることが多い。光伝送装置は、OTNフレームといった光伝送用の伝送フレームを利用して、このような遠距離(又は長距離)の光伝送を行うことができる。
【0007】
ところが、上述したCXLの出現により、光伝送装置にはCXLパケットが格納されたクライアント信号が入力されてくる場合がある。CXLパケットは、例えばM2S RwD(Master to Subordinate Request with Data)のMemWrに相当する。CXLパケットはCXL.memと呼ばれるプロトコルに応じたトランザクションレイヤのパケットをCXL情報として含んでいる。
【0008】
クライアント信号がCXLパケットを含む場合、光伝送装置はクライアント信号からCXLパケットを抽出し、CXLパケットを伝送フレームに収容して送信元の局舎から送信先の局舎に送信する。しかしながら、送信先の局舎にCXLに対応可能な通信規格のメモリ装置が配置されていなければ、光伝送装置はこのメモリ装置にアクセスすることができず、CXLパケットに含まれるCXL情報をメモリ装置に書き込むことができない。また、このメモリ装置が送信元の局舎に配置されていても、光伝送装置は同様にこのメモリ装置にアクセスすることができない。
【0009】
例えば、CXLがメモリ装置の通信規格に対応していれば、光伝送装置はメモリ装置にアクセスして、CXL情報をメモリ装置に書き込むことができる。しかしながら、この場合、光伝送装置とメモリ装置との通信速度がメモリ装置の通信規格に応じた通信速度に制限され、高速なメモリアクセスを実現できないおそれがある。
【0010】
そこで、1つの側面では、CXLを利用したメモリアクセスの通信速度を向上するメモリ駆動装置、光伝送システム、及びメモリ駆動方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
1つの実施態様では、メモリ駆動装置は、CXLで規定された接続規格に応じた特定パケットを受信した場合、前記特定パケットの一部として含まれるデータをバッファに格納するとともに、前記特定パケットの前記一部として前記データと共に含まれるアドレスが連続するか否かを判定し、前記アドレスが連続する場合、連続する前記アドレスの情報と、連続する前記アドレスに関連付けられた前記データの情報とを集約した第1情報を生成する生成部と、前記バッファに格納された前記データを前記CXLに対応不能な通信規格で規定されたメモリ装置に書き込む際に、前記第1情報と前記通信規格とに基づいて、前記メモリ装置に対し、前記データの前記メモリ装置への書込要求を通知する通知部と、を有する。
【発明の効果】
【0012】
CXLを利用したメモリアクセスの通信速度を向上することができる。
【図面の簡単な説明】
【0013】
【
図3】(a)は光伝送装置のハードウェア構成の一例を示すブロック図である。(b)は光伝送装置の機能構成の一例を示すブロック図である。
【
図4A】信号処理部の機能構成の一例を示すブロック図である。
【
図4B】信号処理部の機能構成の他の一例を示すブロック図である。
【
図5】CXLパケットにおけるメッセージ領域のフォーマットの一例である。
【
図6】フレーマ部が実行する処理の一例を説明する図である。
【
図7】メッセージ情報の生成例と第1キューへのエントリ例を説明する図である。
【
図8】メッセージ情報の転送例と完了通知情報の第2キューへのエントリ例を説明する図である。
【
図9】光伝送装置の送信時の動作の一例を示すフローチャートである。
【
図10】光伝送装置の受信時の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、本件を実施するための形態について図面を参照して説明する。
【0015】
図1に示すように、光伝送システムSTは、光伝送装置100,200を有する。光伝送装置100,200は光伝送ネットワークNWによって互いに接続されている。光伝送ネットワークNWは光伝送路300を含んでいる。光伝送路300は例えば光ファイバや光アンプなどを含んでいる。
【0016】
光伝送装置100はPCIe接続部15を介してサーバ10と接続されている。PCIe接続部15はサーバ10のPCIeスロットと光伝送装置100のコネクタとを含んでいる。PCIeスロットにコネクタが装着されることで、光伝送装置100はサーバ10に接続される。また、光伝送装置100はメモリ装置16と電気的に接続されている。メモリ装置16は、NVMe(Non-Volatile Memory express)と呼ばれる通信規格に対応する外付けのストレージ装置(すなわち拡張ストレージ装置)である。このストレージ装置は、SSD(Solid State Drive)や不揮発性メモリなどを含んでいる。
【0017】
光伝送装置200はCXLデバイス20と電気的に接続されている。CXLデバイス20はCXLと呼ばれる接続規格に対応する外付けのストレージ装置(すなわち拡張ストレージ装置)である。このストレージ装置は、SSDや不揮発性メモリなどを含んでいる。光伝送装置200はメモリ装置26と電気的に接続されている。メモリ装置26は基本的にメモリ装置16と同様であるため、詳細な説明を省略する。
【0018】
光伝送装置100は電気的なデジタル信号であるクライアント信号をサーバ10から受信する。光伝送装置100は受信したクライアント信号を光伝送用の伝送フレームに変換する。
【0019】
例えば、
図2に示すように、光伝送装置100にはCXLパケットが格納された電気的なクライアント信号が入力されくる場合がある。CXLパケットは、特定パケットの一例であって、M2S RwDのMemWrに相当する。なお、詳細は後述するが、CXLパケットはCXL.memと呼ばれるプロトコルに応じたトランザクションレイヤのパケットをCXL情報として含んでいる。トランザクションレイヤは物理レイヤと相違する。
【0020】
光伝送装置100は入力されたクライアント信号からCXLパケットを抽出する。ここで、接続規格としてのCXLは、規格の適合性により、通信規格としてのNVMeに対応することができない。通信規格としてのNVMeは、規格の適合性により、接続規格としてのPCIeに対応することができる。すなわち、NVMeはPCIe上で通信を行うことできても、CXL上で通信を行うことができない。
【0021】
光伝送装置100は、CXLパケットを抽出すると、CXLパケットを圧縮し、圧縮した新たなCXLパケットをローカルパケットとして電気的なデジタル信号であるOTNフレームに直接的に収容する。このような直接的な収容はダイレクトマッピングと呼ばれることがある。OTNフレームに余裕がある場合には、光伝送装置100は後続のローカルパケットの一部又は全部を順にOTNフレームに収容する。これにより、OTNフレームには圧縮した複数のCXLパケットがローカルパケットとして収容される。
【0022】
図1に戻り、光伝送装置100は圧縮した複数のCXLパケットである複数のローカルパケットをOTNフレームに収容すると、エラー訂正符号であるFEC(前方誤り訂正)を生成し、FECをOTNフレームに付加する。光伝送装置100は、FECをOTNフレームに付加すると、OTNフレームを光信号に変換し、光信号を光伝送路300に送信する。このように、光伝送装置100は光信号を光伝送装置200に向けて送信する。
【0023】
光伝送装置200は光伝送路300から光信号を受信する。すなわち、光伝送装置200は光伝送装置100から送信され、光伝送路300を経由した光信号を受信する。光伝送装置200は、光信号を受信すると、光信号をOTNフレームに変換し、OTNフレームからFECを取り出してエラー訂正を行う。光伝送装置200は、エラー訂正を行うと、OTNフレームからローカルパケットを抽出(デマッピング)し、ローカルパケットからCXLパケットを復元してCXLデバイス20に転送する。
【0024】
図3を参照して、光伝送装置100の構成の詳細について説明する。なお、光伝送装置200については基本的に光伝送装置100と同様の構成であるため、詳細な説明は省略する。
【0025】
まず、
図3(a)に示すように、光伝送装置100は、FPGA(Field Programmable Gate Array)100Aと、CPU(Central Processing Unit)100Bと、GPGPU(General Purpose computing with Graphic Processing Unit)100Cとを含んでいる。FPGA100A、CPU100B、GPGPU100Cはいずれもプロセッサを含むハードウェア回路である。また、光伝送装置100は、ハードウェア回路としてのRAM(Random Access Memory)100Dと、光トランシーバとしてのQSFP(Quad Small Form factor Pluggable)100Gとを含んでいる。RAMには例えばDDR SDRAM(Double-Data-Rate Synchronous Dynamic Random Access Memory)が採用される。
【0026】
FPGA100Aは光伝送レイヤの処理を実行し、GPGPU100CはIP(Internet Protocol)レイヤの処理を実行する。CPU100Bはデジタル信号処理を含む光伝送装置100全体の処理を制御する。FPGA100Aに代えて、DSP(Digital Signal Processor)やASIC(Application Specific Integrated Circuit)、LSI(Large-Scale Integration)といったハードウェア回路を採用してもよい。
【0027】
FPGA100Aは内部バス100EによってCPU100B及びGPGPU100Cと接続されている。CPU100B及びGPGPU100Cは内部バス100FによってRAM100Dに接続されている。FPGA100Aは内部バス100HによってQSFP100Gと接続されている。QSFP100GはFPGA100Aの後段に配置されている。FPGA100Aは後述する機能を実現し、また、後述するフローチャートに応じた各種の処理を実行する。例えば、FPGA100Aは自身に格納されたプログラムによって各種の機能を実現し、また、各種の処理を実行する。なお、メモリ装置16はFPGA100Aに接続される。
【0028】
図3(b)に示すように、光伝送装置100は、信号処理部110と、伝送制御部120と、主記憶部130と、送受信部140とを含んでいる。信号処理部110は上述したFPGA100Aによって実現することができる。伝送制御部120は上述したCPU100B及びGPGPU100Cによって実現することができる。主記憶部130は上述したRAM100Dによって実現することができる。送受信部140は上述したQSFP100Gによって実現することができる。したがって、信号処理部110は伝送制御部120と送受信部140とに接続され、伝送制御部120は主記憶部130に接続される。なお、メモリ装置16は信号処理部110に接続される。
【0029】
図4A乃至
図8を参照して、メモリ装置16,26と信号処理部110と光伝送装置200が備える信号処理部210の詳細について説明する。
【0030】
まず、
図4Aに示すように、メモリ装置16はメモリ制御部16Aとデータ記憶部16Bとを備えている。信号処理部110は第1入出力部111と変換判定部112とフレーム処理部113と第2入出力部114とを備えている。また、信号処理部110は生成部115とデータバッファ116とコマンド管理部117とを備えている。データバッファ116は生成部115に関連付けられている。
【0031】
ここで、変換判定部112は圧縮部150と第1判定部151とを含んでいる。フレーム処理部113はフレーマ部160を含んでいる。コマンド管理部117は駆動部190を含んでいる。駆動部190は通知部の一例である。また、詳細は後述するが、コマンド管理部117は情報を格納する2種類のキューも含んでいる。少なくとも生成部115と駆動部190とによってメモリ駆動装置MDを実現することができる。メモリ駆動装置MDにデータバッファ116や上述したキューを含めてもよい。
【0032】
第1入出力部111にはサーバ10から出力されたクライアント信号が順に連続して入力される。第1入出力部111にクライアント信号が入力されると、第1入出力部111はクライアント信号に収容されたCXLパケットを抽出し(併せて
図2参照)、圧縮部150に順に出力する。
【0033】
圧縮部150はCXLパケットを圧縮する。圧縮部150は、CXLパケットを圧縮することにより、CXLパケットを圧縮した新たなローカルパケットを生成する。より詳しく説明すると、
図5に示すように、圧縮部150は、まず、CXLパケットのメッセージ領域80に格納されたメッセージデータの一部を抽出する。例えば、圧縮部150は、メッセージ領域80の中のタグ領域81に格納された16ビットのフラグデータを抽出する。フラグデータはフラグ情報の一例である。また、圧縮部150は、メッセージ領域80の中のアドレス領域82に格納された46ビットのアドレスデータを抽出する。
【0034】
圧縮部150は、フラグデータとアドレスデータを抽出すると、抽出したフラグデータとアドレスデータと2ビットで表現された所定のデリミタとを新たなメッセージデータとする新たなローカルパケットを生成する。新たなメッセージデータは64ビット(8バイト)である。所定のデリミタはIDLE pattern識別用データである。ローカルパケットは、新たなメッセージデータと共に、元のCXLパケットのデータ領域(又はペイロード領域)にデータ本体として格納された書込対象データをそのままの状態で含んでいる。
【0035】
このように、圧縮部150は、フラグデータとアドレスデータと所定のデリミタと書込対象データとに限定することにより、元のCXLパケットを圧縮し、ローカルパケットを生成する。元のCXLパケットがローカルパケットに圧縮されることにより、1つのOTNフレームにより多くの書込対象データを収容することができる。
【0036】
第1判定部151は、圧縮部150から出力されたローカルパケットに基づいて、ローカルパケットの処理形式をNVMeに対応しない第1処理形式からNVMeに対応する第2処理形式に変換するか否かを判定する。
【0037】
例えば、ローカルパケットの書込対象データがメモリ装置16のデータ記憶部16Bに書き込まれる際に、処理形式が変換されなければ、この書込対象データはデータ記憶部16Bに書き込まれない。上述したように、メモリ装置16は通信規格としてのNVMeに対応しているため、接続規格としてのCXLで規定されたCXLパケットが圧縮されたローカルパケットに対応することができない。
【0038】
一方で、ローカルパケットの書込対象データがメモリ装置26のデータ記憶部26B(
図4B参照)に書き込まれる際には、処理形式が変換されなくても、ローカルパケットはOTNフレームに収容されて光信号として光伝送路300を伝搬する。なお、この場合、光伝送装置200と接続されたメモリ装置26は通信規格としてのNVMeに対応しているため、接続規格としてのCXLで規定されたCXLパケットが圧縮されたローカルパケットに対応することができない。
【0039】
このため、第1判定部151はローカルパケットに格納されたフラグデータに基づいて、ローカルパケットの処理形式をNVMeに対応しない第1処理形式からNVMeに対応する第2処理形式に変換するか否かを判定する。フラグデータはサーバ10が具備するCPUとの間で事前に定義することができ、サーバ10のCPUがCXLパケットにフラグデータを格納するか否かを決定すればよい。
【0040】
詳細は後述するが、フラグデータには第1フラグデータと第2フラグデータの2種類がある。第1フラグデータは光伝送装置100でローカルパケットの処理形式を第1処理形式から第2処理形式に変換するか否かを判定するために使用される。第1フラグデータはローカルパケットをOTNフレームに収容するか否かを判定するために使用されると言い換えてもよい。第2フラグデータは光伝送装置200でローカルパケットの処理形式を第1処理形式から第2処理形式に変換するか否かを判定するために使用される。第2フラグデータはローカルパケットを元の圧縮前のCXLパケットに復元するか否かを判定するために使用されると言い換えてもよい。
【0041】
第1判定部151は、ローカルパケットの処理形式を第1処理形式から第2処理形式に変換しない場合、ローカルパケットをフレーマ部160に出力する。第1判定部151は、ローカルパケットの処理形式を第1処理形式から第2処理形式に変換する場合、ローカルパケットを生成部115に出力する。
【0042】
フレーマ部160はローカルパケットがデータ塊として保持する1収容周期分のメッセージデータと書込対象データを取得し、CXL情報としてOTNフレームに収容する。例えば、
図6に示すように、フレーマ部160はOTNフレームのオーバーヘッド(
図6においてOHと表記)の後ろに位置するペイロード部に1収容周期分のデータ塊を収容する。すなわち、フレーマ部160はペイロード部にメッセージデータと書込対象データ(
図6においてDTと表記)をCXL情報として収容する。
【0043】
フレーマ部160はデータ塊をOTNフレームに収容すると、OTNフレームを第2入出力部114に出力する。第2入出力部114はフレーマ部160から出力されたOTNフレームを送受信部140(
図3(b)参照)に転送する。送受信部140はOTNフレームを光信号に変換し、光信号を光伝送装置200に向けて送信する。
【0044】
なお、図示しないが、送受信部140はOTNフレームにFECを付加するFECエンコーダやOTNフレームをデジタル形式からアナログ形式に変換するDAC(Digital Analogue Converter)などを含んでいる。また、送受信部140は局発光によりアナログ形式のOTNフレームを光信号に変換して送信する光変調器や、光伝送路310から受信した光信号を局発光によりアナログ形式のOTNフレームに変換するコヒーレントレシーバを含んでいる。そのほか、送受信部140はアナログ形式のOTNフレームをデジタル形式のOTNフレームに変換するADC(Analogue Digital Converter)やOTNフレームに付加されたFECに基づいてOTNフレームのエラー訂正を行い、OTNフレームを第2入出力部114に出力するFECデコーダなどを含んでいる。
【0045】
次に、
図4Bに示すように、メモリ装置26はメモリ制御部26Aとデータ記憶部26Bとを備えている。信号処理部210は変換判定部212とフレーム処理部213と第2入出力部214とを備えている。また、信号処理部210は生成部215とデータバッファ216とコマンド管理部217とを備えている。データバッファ216は生成部215に関連付けられている。
【0046】
ここで、変換判定部212は第2判定部280と復元部281とを含んでいる。フレーム処理部213はデフレーマ部270を含んでいる。コマンド管理部217は駆動部290を含んでいる。駆動部290は通知部の一例である。また、コマンド管理部217はコマンド管理部117と同様に2種類のキューも含んでいる。少なくとも生成部215と駆動部290とによってメモリ駆動装置MDを実現することができる。メモリ駆動装置MDにデータバッファ216や上述したキューを含めてもよい。
【0047】
第2入出力部214に光伝送装置200の送受信部(不図示)から出力されたOTNフレームが入力された場合、第2入出力部214はOTNフレームをデフレーマ部270に転送する。デフレーマ部270は第2入出力部214から転送されたOTNフレームからローカルパケットを抽出して、第2判定部280に出力する。なお、デフレーマ部270がOTNフレームから抽出するローカルパケットには、圧縮部150が圧縮する際に除外した一部のメッセージデータが含まれていない。これは、デフレーマ部270がOTNフレームからCXLパケットを抽出するわけではないためである。デフレーマ部270はローカルパケットを抽出すると、ローカルパケットを第2判定部280に出力する。
【0048】
第2判定部280は、デフレーマ部270から出力されたローカルパケットに基づいて、ローカルパケットの処理形式をNVMeに対応しない第1処理形式からNVMeに対応する第2処理形式に変換するか否かを判定する。より詳しくは、第2判定部280はローカルパケットに格納された第2フラグデータに基づいて、ローカルパケットの処理形式を第1処理形式から第2処理形式に変換するか否かを判定する。第2判定部280は、ローカルパケットの処理形式を第1処理形式から第2処理形式に変換しない場合、ローカルパケットを復元部281に出力する。第2判定部280は、ローカルパケットの処理形式を第1処理形式から第2処理形式に変換する場合、ローカルパケットを生成部215に出力する。なお、第2判定部280は、基本的に第1判定部151と同様の処理を実行するため、詳細な説明を省略する。
【0049】
復元部281はローカルパケットからCXLパケットを復元する。例えば、復元部281は圧縮部150が抽出対象から除外したメッセージデータのビット数に相当する固定値(すなわち64ビット)の復元用データを、ローカルパケットに付与することにより、元のCXLパケットを復元する。復元部281は元のCXLパケットを復元すると、このCXLパケットをCXLデバイス20に出力する。これにより、CXLデバイス20には復元部281から出力されたCXLパケットが入力される。
【0050】
図4Aに示すように、生成部115は第1判定部151から出力されたローカルパケットを受信する。また、
図4Bに示すように、生成部215は第2判定部280から出力されたローカルパケットを受信する。生成部115,215が受信するローカルパケットはメッセージデータと書込対象データとを含んでいる。このメッセージデータはフラグデータとアドレスデータと所定のデリミタとを含んでいる。生成部115は、ローカルパケットを受信すると、フラグデータとデリミタを排除し、アドレスデータと書込対象データとを関連付けたエントリ情報をデータバッファ116に格納する。これは、駆動部190がメモリ装置16へアクセスする際、後述するキューを効率よく使用するためである。同様に、生成部215は、ローカルパケットを受信すると、フラグデータとデリミタを排除し、アドレスデータと書込対象データとを関連付けたエントリ情報をデータバッファ216に格納する。これは、駆動部290がメモリ装置26へアクセスする際、後述するキューを効率よく使用するためである。
【0051】
例えば生成部115がエントリ情報をデータバッファ116に格納すれば、
図7に示すように、データバッファ116はアドレスデータと書込対象データ(
図7においてDTと表記)とを関連付けたエントリ情報E1,E2,E3を記憶する。なお、アドレスデータ「A」に関連付けられた4つ書込対象データ#1,#2,#3,#4はそれぞれ16バイトの大きさを有する。アドレスデータ「B」とアドレスデータ「C」のそれぞれに関連付けられた4つ書込対象データもアドレスデータ「A」の場合と同様であるため、詳細な説明は省略する。
【0052】
生成部115は、エントリ情報E1,E2,E3を格納すると、エントリ情報E1,E2,E3に含まれるアドレスデータの連続性を確認する。例えば、生成部115はアドレスデータ「A」とアドレスデータ「B」が連続するか否か、アドレスデータ「B」とアドレスデータ「C」が連続するか否かなどを確認する。
【0053】
アドレスデータ「A」とアドレスデータ「B」が連続する場合、生成部115はアドレスデータ「A」と、このアドレスデータ「A」に関連付けられた4つ書込対象データ#1,#2,#3,#4と、アドレスデータ「B」に関連付けられた4つ書込対象データ#5,#6,#7,#8と、を集約した第1メッセージ情報(
図7において第1MSG情報と表記)M1を生成する。第1メッセージ情報は第1情報の一例である。第1メッセージ情報M1のサイズは少なくとも128バイトより大きく、ローカルパケットが単体で有する64バイトの書込対象データ(16バイト×4つの書込対象データ)のサイズより大きい。
【0054】
一方、アドレスデータ「B」とアドレスデータ「C」が連続しない場合、生成部115は単独のアドレスデータ「C」に関連付けられた4つ書込対象データ#9,#10,#11,#12を集約した第2メッセージ情報(
図7において第2MSG情報と表記)M2を生成する。第2メッセージ情報は第2情報の一例である。なお、アドレスデータ「B」とアドレスデータ「C」が連続する場合には、生成部115は、4つ書込対象データ#9,#10,#11,#12を第1メッセージ情報M1に集約してもよい。
【0055】
このように、生成部115はアドレスデータに連続性がある場合、ローカルパケットが単体で有する書込対象データのサイズより大きなサイズのメッセージ情報を生成することができる。すなわち、アドレスデータに連続性がある場合、生成部115は少なくとも16バイト×4×エントリ情報の個数分のサイズを有するメッセージ情報を生成することができる。
【0056】
生成部115は、第1メッセージ情報M1や第2メッセージ情報M2などを生成すると、第1メッセージ情報M1や第2メッセージ情報M2などをコマンド管理部117の駆動部190に出力する。これにより、第1メッセージ情報M1や第2メッセージ情報M2などが駆動部190に入力される。例えば、第1メッセージ情報M1が駆動部190に入力されると、駆動部190はコマンド管理部117が有する第1キュー91と第2キュー92のうち第1キュー91に第1メッセージ情報M1をエントリ(登録)する。
【0057】
第1キュー91は駆動部190がメモリ制御部16Aに書込指令(書込コマンド)を発行するために使用する循環式バッファである。書込指令は書込要求の一例である。第1キュー91はSQ(Submission Queue)と呼ばれることがある。駆動部190は、第1キュー91にエントリされた第1メッセージ情報M1に基づいて、第1メッセージ情報M1が備える書込対象データの書込指令を発行する。
【0058】
第1キュー91に第1メッセージ情報M1がエントリされると、
図8に示すように、駆動部190は第1メッセージ情報M1の第1キュー91へのエントリ完了と書込指令とをメモリ制御部16Aのドアベルレジスタ16Cに通知する。これにより、メモリ制御部16Aは第1キュー91にアクセスして、第1キュー91から第1メッセージ情報M1を読み取る。そして、メモリ制御部16Aは第1メッセージ情報M1が有する書込対象データをデータ記憶部16Bに書き込む。
【0059】
データ記憶部16Bへの書込対象データの書き込みが完了すると、データ記憶部16Bは完了通知をメモリ制御部16Aに出力する。完了通知により、メモリ制御部16Aは第1メッセージ情報M1に対する処理が完了したことを示す完了通知情報C1を生成し、完了通知情報C1を第2キュー92にエントリする。第2キュー92は完了通知情報C1などを格納する循環式のバッファである。第2キュー92はCQ(Completion Queue)と呼ばれることがある。
【0060】
駆動部190は第2キュー92を監視し、第2キュー92に完了通知情報C1がエントリされると、完了通知情報C1を取得する。図示しないが、駆動部190は、完了通知情報C1を取得すると、完了通知情報C1をサーバ10のCPUに向けて送信する。これにより、サーバ10からCXLパケットを含むクライアント信号が出力されていれば、サーバ10から出力されたクライアント信号のCXLパケットが有する書込対象データの書き込みが完了したことをサーバ10のCPUは確認することができる。
【0061】
このように、ローカルパケットが備える一部のデータがNVMeに対応可能な第1メッセージ情報M1などに集約される。これにより、接続規格としてのCXLに制限されず、信号処理部110は接続規格としてのPCIeと通信規格としてのNVMeを利用してメモリ装置16に書込対象データを書き込むことができる。なお、信号処理部110は書込対象データを単独で書き込んでもよいし、書込対象データをアドレスデータと共に書き込んでもよい。
【0062】
そして、アドレスデータに連続性がある場合には、連続するアドレスデータのそれぞれと関連付けられた複数の書込対象データが第1メッセージ情報M1などに集約される。すなわち、1回の出力でメモリ装置16に転送できる書込対象データの量が増大する。これにより、信号処理部110のメモリ装置16に対するメモリアクセスの通信速度を向上することができる。
【0063】
例えば、第1キュー91へのエントリ周期がメモリ制御部16Aの処理時間より短い場合、第1キュー91が輻輳したりオーバーフローしたりしてエントリが受け付けられない可能性がある。この場合、エントリ情報のサイズが64バイトであれば、エントリが受け付けられなくなった後の通信速度がメモリ制御部16Aの処理時間×64バイトに制限される。しかしながら、本実施形態であれば、64バイトより大きなサイズの書込対象データをメモリ制御部16Aが処理する。このため、メモリ制御部16Aに処理の余裕が発生し、信号処理部110はメモリ装置16に対するメモリアクセスの通信速度を向上することができる。以上、
図7及び
図8を参照して、信号処理部110を一例として説明したが、信号処理部210についても基本的に信号処理部110と同様であるため、信号処理部210の詳細な説明は省略する。
【0064】
次に、
図9を参照して、光伝送装置100の送信時の動作について説明する。
【0065】
まず、第1入出力部111はクライアント信号からCXLパケットを抽出する(ステップS1)。第1入出力部111がCXLパケットを抽出すると、圧縮部150はCXLパケットを圧縮する(ステップS2)。上述したように、圧縮部150はメッセージ領域80の中のタグ領域81に格納されたフラグデータとアドレスデータを抽出し、抽出したフラグデータとアドレスデータなどとを新たなメッセージデータとする新たなローカルパケットを生成する。
【0066】
圧縮部150がCXLパケットを圧縮してローカルパケットを生成すると、第1判定部151はフラグデータが第1フラグデータであるか否かを判定する(ステップS3)。すなわち、第1判定部151はローカルパケットのメッセージデータを確認し、メッセージデータに第1フラグデータが含まれているか否かを判定する。例えば、フラグデータが第2フラグデータであるなど、フラグデータが第1フラグデータでない場合(ステップS3:NO)、フレーマ部160はローカルパケットを収容する(ステップS4)。すなわち、フレーマ部160はローカルパケットがデータ塊として保持する1収容周期分のメッセージデータと書込対象データを取得してOTNフレームに収容する。この場合、生成部115はメッセージ情報の生成を回避する。
【0067】
フレーマ部160がローカルパケットを収容すると、送受信部140は第2入出力部114を経由したOTNフレームを光信号に変換し(ステップS5)、光信号を送信する(ステップS6)。光信号を送信すると、光伝送装置100は送信時の処理を終了する。これにより、光伝送装置100から光信号が送信され、光伝送装置200がこの光信号を受信する。
【0068】
一方、ステップS3の処理において、フラグデータが第1フラグデータである場合(ステップS3:YES)、生成部115はメッセージ情報を生成する(ステップS7)。すなわち、生成部115は上述した第1メッセージ情報M1や第2メッセージ情報M2などを生成する。メッセージ情報を生成すると、駆動部190は書込対象データの書込指令を通知し(ステップS8)、処理を終了する。より詳しくは、駆動部190は書込指令をメモリ装置16のメモリ制御部16Aに通知し、処理を終了する。これにより、光伝送装置100は、CXLパケットが入力されても、NVMeに対応するメモリ装置16に書込対象データを高速に書き込むことができる。
【0069】
次に、
図10を参照して、光伝送装置200の受信時の動作について説明する。
【0070】
まず、光伝送装置200の送受信部(不図示)は光伝送装置100から送信された光信号を受信する(ステップS11)。光伝送装置200の送受信部は、光信号を受信すると、光信号をOTNフレームに変換する(ステップS12)。光伝送装置200の送受信部が光信号をOTNフレームに変換すると、デフレーマ部270は第2入出力部214を経由したOTNフレームからローカルパケットを抽出する(ステップS13)。なお、デフレーマ部270が抽出するローカルパケットはメッセージデータの一部が抽出対象から除外されている。このため、後続の処理において、デフレーマ部270が抽出するローカルパケットを元のCXLパケットに復元する処理が要求される。
【0071】
デフレーマ部270がローカルパケットを抽出すると、第2判定部280はフラグデータが第2フラグデータであるか否かを判定する(ステップS14)。すなわち、第2判定部280はローカルパケットのメッセージデータを確認し、メッセージデータに第2フラグデータが含まれているか否かを判定する。フラグデータが第2フラグデータでない場合(ステップS14:NO)、復元部281はCXLパケットを復元する(ステップS15)。例えば、フラグデータが第1フラグデータ及び第2フラグデータのいずれとも異なる第3フラグデータである場合、復元部281はローカルパケットから元のCXLパケットを復元する。
【0072】
復元部281がCXLパケットを復元すると、復元部281はCXLパケットを転送し(ステップS16)、処理を終了する。より詳しくは、復元部281はCXLパケットをCXLデバイス20に転送する。このように、サーバ10から送信されたクライアント信号のCXLパケットをCXLデバイス20が受信する。
【0073】
一方、ステップS14の処理において、フラグデータが第2フラグデータである場合(ステップS14:YES)、生成部215はメッセージ情報を生成する(ステップS17)。メッセージ情報を生成すると、駆動部290は書込対象データの書込指令を通知し(ステップS18)、処理を終了する。これにより、光伝送装置200は、サーバ10から送信されたクライアント信号のCXLパケットであっても、NVMeに対応するメモリ装置26に書込対象データを高速に書き込むことができる。
【0074】
以上、本発明の好ましい実施形態について詳述したが、本発明に係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【0075】
なお、以上の説明に関して更に以下の付記を開示する。
(付記1)CXLで規定された接続規格に応じた特定パケットを受信した場合、前記特定パケットの一部として含まれるデータをバッファに格納するとともに、前記特定パケットの前記一部として前記データと共に含まれるアドレスが連続するか否かを判定し、前記アドレスが連続する場合、連続する前記アドレスの情報と、連続する前記アドレスに関連付けられた前記データの情報とを集約した第1情報を生成する生成部と、前記バッファに格納された前記データを前記CXLに対応不能な通信規格で規定されたメモリ装置に書き込む際に、前記第1情報と前記通信規格とに基づいて、前記メモリ装置に対し、前記データの前記メモリ装置への書込要求を通知する通知部と、を有するメモリ駆動装置。
(付記2)前記生成部は、前記アドレスが連続しない場合、連続しない単独の前記アドレスの情報と、連続しない単独の前記アドレスに関連付けられた前記データの情報とを集約した第2情報を生成し、前記通知部は、前記第2情報と前記通信規格とに基づいて、前記メモリ装置に対し、前記データの前記メモリ装置への前記書込要求を通知する、ことを特徴とする付記1に記載のメモリ駆動装置。
(付記3)前記特定パケットが含むフラグ情報に基づいて、前記特定パケットを光伝送用の伝送フレームに収容するか否かを判定する判定部を含み、前記生成部は、前記判定部が前記特定パケットを前記伝送フレームに収容しないと判定した場合に、前記第1情報を生成する、ことを特徴とする付記1又は2に記載のメモリ駆動装置。
(付記4)前記特定パケットが含むフラグ情報に基づいて、前記特定パケットを光伝送用の伝送フレームに収容するか否かを判定する判定部を含み、前記生成部は、前記判定部が前記特定パケットを前記伝送フレームに収容すると判定した場合に、前記第1情報の生成を回避する、ことを特徴とする付記1又は2に記載のメモリ駆動装置。
(付記5)前記通信規格は、NVMeである、ことを特徴とする付記1又は2に記載のメモリ駆動装置。
(付記6)前記メモリ装置は、SSDを含む、前記NVMeに対応する外付けストレージ装置である、ことを特徴とする付記5に記載のメモリ駆動装置。
(付記7)前記特定パケットを収容した光伝送用の伝送フレームを光伝送路に送信する第1光伝送装置と、付記1又は2に記載のメモリ駆動装置を含み、前記光伝送路から前記伝送フレームを受信する第2光伝送装置と、を備える光伝送システムであって、前記生成部は、前記第2光伝送装置が前記伝送フレームから前記特定パケットを抽出することにより、前記特定パケットを受信する、
ことを特徴とする光伝送システム。
(付記8)CXLで規定された接続規格に応じた特定パケットを受信した場合、前記特定パケットの一部として含まれるデータをバッファに格納するとともに、前記特定パケットの前記一部として前記データと共に含まれるアドレスが連続するか否かを判定し、前記アドレスが連続する場合、連続する前記アドレスの情報と、連続する前記アドレスに関連付けられた前記データの情報とを集約した第1情報を生成し、前記バッファに格納された前記データを前記CXLに対応不能な通信規格で規定されたメモリ装置に書き込む際に、前記第1情報と前記通信規格とに基づいて、前記メモリ装置に対し、前記データの前記メモリ装置への書込要求を通知する、メモリ駆動方法。
(付記9)前記アドレスが連続しない場合、連続しない単独の前記アドレスの情報と、連続しない単独の前記アドレスに関連付けられた前記データの情報とを集約した第2情報を生成し、前記第2情報と前記通信規格とに基づいて、前記メモリ装置に対し、前記データの前記メモリ装置への前記書込要求を通知する、ことを特徴とする付記8に記載のメモリ駆動方法。
(付記10)前記特定パケットが含むフラグ情報に基づいて、前記特定パケットを光伝送用の伝送フレームに収容するか否かを判定し、前記特定パケットを前記伝送フレームに収容しないと判定した場合に、前記第1情報を生成する、ことを特徴とする付記8又は9に記載のメモリ駆動方法。
(付記11)前記特定パケットが含むフラグ情報に基づいて、前記特定パケットを光伝送用の伝送フレームに収容するか否かを判定し、前記特定パケットを前記伝送フレームに収容すると判定した場合に、前記第1情報の生成を回避する、ことを特徴とする付記8又は9に記載のメモリ駆動方法。
【符号の説明】
【0076】
10 サーバ
20 CXLデバイス
16,26 メモリ装置
100,200 光伝送装置
110,210 信号処理部
111 第1入出力部
112,212 変換判定部
113,213 フレーム処理部
114,214 第2入出力部
115,215 生成部
116,216 データバッファ
117,217 コマンド管理部
190,290 駆動部