(57)【要約】      （修正有）【課題】不揮発性メモリにおけるライトデータの書き込みを効率化できるメモリシステムおよび情報処理システムを提供する。【解決手段】情報処理システム１は、ホスト２とメモリシステム１００を有する。メモリシステムは、不揮発性メモリ１３０とインタフェースとコントローラとを有する。インタフェースは、複数のライトコマンドを取得する。複数のライトコマンドは、それぞれが、不揮発性メモリに対するライトデータの書き込みを指示する。コントローラは、ライトコマンドに紐づけられた圧縮率推定情報を用いてライトデータの圧縮率を推定する。コントローラは、推定された圧縮率に応じて、不揮発性メモリに対する複数のライトコマンドの実行順を決定する。【選択図】図１
2020154525.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
それぞれが前記不揮発性メモリに対するライトデータの書き込みを指示する複数のライトコマンドを取得するインタフェースと、
前記ライトコマンドに紐づけられた圧縮率推定情報を用いて前記ライトデータの圧縮率を推定し、推定された圧縮率に応じて、前記不揮発性メモリに対する前記複数のライトコマンドの実行順を決定するコントローラと、
を備えたメモリシステム。
【請求項２】
前記コントローラは、圧縮率推定情報と圧縮率とが複数の異なる圧縮率推定情報について対応付けられた圧縮率変換情報と前記圧縮率推定情報とを用いて前記ライトデータの圧縮率を推定する
請求項１に記載のメモリシステム。
【請求項３】
前記インタフェースは、前記複数のライトコマンドをホストから中継装置を経由して取得し、前記圧縮率推定情報を前記中継装置から取得し、
前記コントローラは、前記中継装置から取得された圧縮率推定情報を用いて前記ライトデータの圧縮率を推定する
請求項１に記載のメモリシステム。
【請求項４】
前記コントローラは、推定された圧縮率に応じて、前記複数のライトコマンドの発行順に前記ライトデータを書き込み単位に相当する記憶領域に配置した場合に前記ライトデータが前記記憶領域内に収まるか否か判断し、前記記憶領域内に収まらないことに応じて、前記複数のライトコマンドの実行順を前記発行順と異なる順番に決定する
請求項１から３のいずれか１項に記載のメモリシステム。
【請求項５】
前記コントローラは、バッファメモリを有し、
前記記憶領域は、前記バッファメモリ内に確保された記憶領域である
請求項４に記載のメモリシステム。
【請求項６】
前記圧縮率推定情報は、前記ライトデータのエントロピーである
請求項１から５のいずれか１項に記載のメモリシステム。
【請求項７】
不揮発性メモリと、
それぞれが前記不揮発性メモリに対するライトデータの書き込みを指示する複数のライトコマンドを取得するインタフェースと、
前記ライトデータを圧縮して圧縮率を求め、求められた圧縮率に応じて、前記不揮発性メモリに対する前記複数のライトコマンドの実行順を決定するコントローラと、
を備えたメモリシステム。
【請求項８】
ホストと、
前記ホストと接続可能である請求項１から７のいずれか１項に記載のメモリシステムと、
を備えた情報処理システム。
【請求項９】
前記ホストと前記メモリシステムとの接続を中継する中継装置をさらに備えた
請求項８に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムおよび情報処理システムに関する。
【背景技術】
【０００２】
不揮発性メモリを有するメモリシステムでは、ライトデータの書き込みを指示するライトコマンドをホスト等から取得すると、不揮発性メモリに対してライトコマンドを実行する。これにより、不揮発性メモリにおいて、ライトデータの書き込みが行われる。このとき、不揮発性メモリにおけるライトデータの書き込みが効率的に行われることが望まれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９６９６９１０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、不揮発性メモリにおけるライトデータの書き込みを効率化できるメモリシステムおよび情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、不揮発性メモリとインタフェースとコントローラとを有するメモリシステムが提供される。インタフェースは、複数のライトコマンドを取得する。複数のライトコマンドは、それぞれが、不揮発性メモリに対するライトデータの書き込みを指示する。コントローラは、ライトコマンドに紐づけられた圧縮率推定情報を用いてライトデータの圧縮率を推定する。コントローラは、推定された圧縮率に応じて、不揮発性メモリに対する複数のライトコマンドの実行順を決定する。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態にかかるメモリシステムを含む情報処理システムの構成を示す図である。
【図２】図２は、第１の実施形態にかかるメモリシステムを含む情報処理システムの動作を示すシーケンス図である。
【図３】図３は、第１の実施形態における圧縮率推定情報（エントロピー情報）を求める処理を示す図である。
【図４】図４は、第１の実施形態におけるコマンド実行順決定処理を示すフローチャートである。
【図５】図５は、第１の実施形態におけるコマンド実行順決定処理を示す図である。
【図６】図６は、第１の実施形態における圧縮率変換情報のデータ構造を示す図である。
【図７】図７は、第２の実施形態にかかるメモリシステムを含む情報処理システムの構成及び動作を示す図である。
【図８】図８は、第３の実施形態にかかるメモリシステムを含む情報処理システムの構成及び動作を示す図である。
【図９】図９は、第３の実施形態におけるコマンド実行順決定処理を示すフローチャートである。
【図１０】図１０は、第４の実施形態におけるコマンド実行順決定処理を示すフローチャートである。
【図１１】図１１は、第５の実施形態におけるコマンド実行処理を示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
第１の実施形態にかかるメモリシステムは、不揮発性メモリを有するストレージシステムである。メモリシステムは、ライトデータの書き込みを指示するライトコマンドをホスト等から取得すると、不揮発性メモリに対してライトコマンドを実行する。これにより、不揮発性メモリにおいて、ライトデータの書き込みが行われる。
【０００９】
メモリシステムにおけるストレージ容量を稼ぐために、ライトデータ（ユーザデータ）を圧縮して不揮発性メモリに書き込むことが考えられる。このため、メモリシステムは、データ圧縮機能を有し、ライトデータを圧縮し、圧縮後のライトデータについて不揮発性メモリに対してライトコマンドを実行する。ユーザデータは、可逆型の圧縮方式で圧縮されるため、圧縮後のサイズにバラツキが生じやすい。
【００１０】
一方、不揮発性メモリでは、所定の書き込み単位でメモリセルアレイへのデータの書き込みが行われる。不揮発性メモリでは、各ライトデータがコマンドの実行順に所定の書き込み単位に収められ、収まりきらないデータが次の書き込み単位に収められる場合、未書き込み領域（無駄領域）を含む書き込み単位のデータがメモリセルアレイに書き込まれることがある。圧縮後のライトデータの書き込みでは、圧縮後のサイズにバラツキが生じやすいため、この傾向が顕著になり、書き込み単位に含まれる未書き込み領域の容量が増大しやすい。これにより、不揮発性メモリにおけるライトデータの書き込みの効率が低下し、メモリシステムにおけるストレージ容量の効率的な利用が困難になる可能性がある。
【００１１】
それに対して、圧縮率を複数のレベルに区分し、複数の圧縮率のレベルに対応した複数のバッファ領域を含むバッファメモリを設け、ライトデータを圧縮して圧縮率を測定し、各ライトデータを圧縮率のレベルに対応したバッファ領域に格納しておくことが考えられる。この場合、ライトデータの圧縮率のレベルに応じて圧縮後のライトデータを書き込み単位に効率的に収めて未書き込み領域（無駄領域）の容量が低減するように、ライトコマンド実行順を変えることが可能である。
【００１２】
しかし、複数の圧縮率のレベルに対応した複数のバッファ領域を含むバッファメモリを設ける場合、大容量のバッファメモリを設けることになり、メモリシステムのコストが増大する可能性がある。
【００１３】
そこで、本実施形態のメモリシステムでは、ライトコマンドに紐づけられた圧縮率推定情報（圧縮率のヒント）を用いてライトデータの圧縮率を推定し、推定された圧縮率に応じてライトコマンドの実行順を決定することで、バッファメモリの容量増加の抑制とライトデータの書き込み効率向上との両立化を目指す。圧縮率推定情報は、ライトコマンドに含まれてもよい。
【００１４】
具体的には、本実施形態のホストとメモリシステムは、次の（１）（２）の特徴を持つ。
【００１５】
（１）ライトデータのエントロピー情報をライトコマンドの送信前にホストで計算し、ライトデータの圧縮後のサイズを予測するためのヒントとして、ライトコマンドにエントロピー情報を紐づける。エントロピー情報は、例えば、どの程度圧縮可能かを示す情報である。
【００１６】
（２）メモリシステムは、ライトコマンドで紐づけられたエントロピー情報を参照して、所定の書き込み単位における書き込み可能な残りデータ量に応じてライトコマンドの実行順を決める。エントロピー情報に基づいて圧縮後のデータの並び替えを実行できるため、所定の書き込み単位程度にバッファ領域を小さくすることが可能になる。ちなみに、ＮＶＭｅ規格に準拠したライトコマンドは、アウトオブオーダー（ｏｕｔ  ｏｆ  ｏｒｄｅｒ）での実行が可能である。
【００１７】
より具体的には、メモリシステム１００を含む情報処理システム１は、図１に示すように構成され得る。図１は、メモリシステム１００を含む情報処理システム１の構成を示す図である。
【００１８】
メモリシステム１００は、ホスト２に通信可能に接続され、ホスト２に対する外部記憶装置として機能する。メモリシステム１００は、ＵＦＳ（Ｕｎｉｖｅｒｓａｌ  Ｆｌａｓｈ  Ｓｔｏｒａｇｅ）規格やｅＭＭＣ（ｅｍｂｅｄｄｅｄ  Ｍｕｌｔｉ  Ｍｅｄｉａ  Ｃａｒｄ）規格などに準拠した組み込み用途のフラッシュメモリや、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などである。ホスト２は、例えば、マイクロプロセッサ、撮像装置などである。以下では、ホスト２とメモリシステム１００とが通信路を介してＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）規格に準拠したパケットを送受信できる場合について例示する。
【００１９】
なお、ホスト２とメモリシステム１００とは、ＮＶＭｅ規格に代えて、ＵＦＳ（Ｕｎｉｖｅｒｓａｌ  Ｆｌａｓｈ  Ｓｔｏｒａｇｅ）規格、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）規格、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）規格、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）規格に準拠したパケットを送受信可能であってもよい。
【００２０】
ホスト２は、ホストコントローラ３及びホストメモリ４を有する。ホストコントローラ３は、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）５を有する。ＤＭＡＣ５は、エントロピー算出部５ａを有する。エントロピー算出部５ａは、ＤＭＡＣ５がライトコマンドを発行する際に、ライトデータ中のシンボル出現頻度を調べることなどにより、そのライトコマンドに対応したライトデータの圧縮率のヒントとなる圧縮率推定情報（例えば、エントロピー情報）を求める。ＤＭＡＣ５は、エントロピー算出部５ａで求められた圧縮率推定情報（例えば、エントロピー情報）を含めてライトコマンドを発行する。
【００２１】
ホストメモリ４は、コマンド発行キュー４ａ、コマンド完了キュー４ｂ、及びバッファ領域４ｃを含む。コマンド発行キュー４ａは、ＤＭＡＣ５で発行されたライトコマンドがエンキューされる。コマンド発行キュー４ａは、基本的にＦＩＦＯ構造であるが、アウトオブオーダー（ｏｕｔ  ｏｆ  ｏｒｄｅｒ）での実行が可能である。コマンド完了キュー４ｂは、メモリシステム１００で実行が完了されたライトコマンドの完了情報がエンキューされる。バッファ領域４ｃには、コマンド発行キュー４ａにエンキューされたライトコマンドに対応したライトデータが格納される。
【００２２】
例えば、エンキューされた順番をｉ（ｉ＝１〜ｎ，ｎは任意の２以上の整数）で表すと、ライトコマンドＷＣｉは、識別情報ＩＤｉ、コマンド種別Ｗｒ、開始アドレスＬＢＡｉ、ポインタＰＲＴｉ、データサイズ情報ＳＩＺＥｉ、エントロピー情報Ｅｎｔｒｏｐｙｉを含む。識別情報ＩＤｉは、ライトコマンドＷＣｉを他のライトコマンドＷＣｉから識別するための情報である。コマンド種別Ｗｒは、コマンドの種類（この場合は、ライトコマンドであること）を示す情報である。開始アドレスＬＢＡｉは、ライトデータの先頭の論理アドレスを示す情報である。ポインタＰＲＴｉは、バッファ領域４ｃにおけるライトデータの格納場所（バッファ領域４ｃ内のアドレス）を示す情報である。データサイズ情報ＳＩＺＥｉは、ライトデータのサイズ（非圧縮である場合のサイズ）を示す情報である。エントロピー情報Ｅｎｔｒｏｐｙｉは、エントロピー算出部５ａで求められたライトデータのエントロピー情報である。
【００２３】
メモリシステム１００は、コントローラ１１０、バッファメモリ１２０、及び不揮発性メモリ１３０を有する。コントローラ１１０は、ＮＶＭｅインタフェース１１１、バッファインタフェース１１２、ＣＰＵ１１３、圧縮部１１４、伸張部１１５、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｉｒｃｕｉｔ）１１６、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１７、及びメモリインタフェース１１８を有する。
【００２４】
不揮発性メモリ１３０は、複数のメモリチップで構成され得る。各メモリチップはメモリセルアレイを有する。各メモリチップのメモリセルアレイでは、一括してデータの書き込みおよび読み出しのアクセスが可能な単位が物理ページである。複数の物理ページから構成され、独立してデータの消去が可能な最小のアクセス単位が物理ブロックである。１物理ページよりも小さい単位のデータ管理単位であるクラスタで、ＣＰＵ１１３により、不揮発性メモリ１３０内でのデータが管理されるものとする。クラスタサイズは、ホスト２からの最小アクセス単位であるセクタのサイズ以上であり、クラスタサイズの自然数倍が物理ページサイズとなるように定められる。１物理ページは４クラスタで構成され、１論理ページは６４クラスタで構成され得る。
【００２５】
例えば、上述の書き込み単位のサイズは、クラスタサイズであってもよいし、ページサイズであってもよいし、ブロックサイズであってもよいし、それらと異なるサイズであってもよい。クラスタサイズは、４ＫＢであってもよく、ページサイズは、１６ＫＢであってもよい。
【００２６】
ＮＶＭｅインタフェース１１１は、ＮＶＭｅ規格に準拠したインタフェースであり、ドアベルレジスタ１１１ａ及びドアベルレジスタ１１１ｂを有する。ドアベルレジスタ１１１ａは、ホストメモリ４におけるコマンド発行キュー４ａに対応したレジスタであり、例えば発行されたライトコマンドを通知するためにホスト２により有効ビットが格納され得る。ＮＶＭｅインタフェース１１１は、ドアベルレジスタ１１１ａに有効ビットが格納されると、ホストメモリ４におけるコマンド発行キュー４ａにアクセスし、ライトコマンドを例えば発行順（エンキューされた順）に取得する。
【００２７】
ドアベルレジスタ１１１ｂは、ホストメモリ４におけるコマンド完了キュー４ｂに対応したレジスタであり、例えば完了情報を確認したことを通知するためにホスト２により有効ビットが格納され得る。
【００２８】
ＣＰＵ１１３は、コントローラ１１０の各部を統括的に制御する。ＣＰＵ１１３は、ＮＶＭｅインタフェース１１１を介してライトコマンドが取得されると、ライトデータの不揮発性メモリ１３０への格納領域（書き込み先）を決定し、ライトコマンドに含まれた論理アドレスと格納領域である物理アドレスとを対応付ける。論理アドレスと物理アドレスとの対応は、ＬＵＴ（アドレス変換情報）１２１として管理される。ＬＵＴ１２１は、バッファメモリ１２０に格納されており、ＣＰＵ１１３は必要に応じて読み出してＲＡＭ１１７等にキャッシュする。ＣＰＵ１１３は、論理アドレスと物理アドレスとの対応が変更される度にＬＵＴ１２１を更新し得る。
【００２９】
ＲＡＭ１１７は、ＣＰＵ１１３による作業領域として機能する。ＲＡＭ１１７は、ＬＵＴ１２１を一時的に格納する。また、ＲＡＭ１１７は、圧縮率変換情報１１７ａを格納する。圧縮率変換情報１１７ａは、エントロピーと圧縮率とが複数の異なるエントロピーについて対応付けられた情報である。
【００３０】
バッファメモリ１２０は、情報を一時的に保持するメモリ領域として機能する。バッファメモリ１２０は、例えば、ＳＲＡＭ（Static  Random  Access  Memory）やＤＲＡＭ（Dynamic  Random  Access  Memory）などの汎用メモリで構成される。また、バッファメモリ１２０は、コントローラ１１０内部に搭載されてもよいし、コントローラ１１０の外にコントローラ１１０とは独立して搭載されてもよい。バッファメモリ１２０には、ＬＵＴ１２１が格納される。また、バッファメモリ１２０には、ライトデータを格納するための領域として、ライトバッファ（ＷｒＢｕｆ）１２２が確保されている。バッファメモリ１２０には、ライトデータを圧縮した際のデータサイズを管理するための情報を格納する領域として、圧縮データ量管理領域１２３が確保される。
【００３１】
また、ＣＰＵ１１３は、コマンド実行順決定部１１３ａを有する。コマンド実行順決定部１１３ａは、ＣＰＵ１１３内の論理回路であっても良いし、ＣＰＵ１１３で実行できるプログラムであっても良い。コマンド実行順決定部１１３ａは、ライトコマンドに紐づけられた圧縮率推定情報を用いてライトデータの圧縮率を推定する。
【００３２】
コマンド実行順決定部１１３ａは、ＮＶＭｅインタフェース１１１で取得されたライトコマンドに含まれたエントロピー情報を圧縮率推定情報として特定してもよい。また、コマンド実行順決定部１１３ａは、エントロピー情報が特定されたことに応じて、ＲＡＭ１１７から圧縮率変換情報１１７ａを読み出し、圧縮率変換情報１１７ａにおけるエントロピー情報に対応する圧縮率を特定することで、ライトデータの圧縮率を推定してもよい。コマンド実行順決定部１１３ａは、推定された圧縮率に応じて、不揮発性メモリ１３０に対する複数のライトコマンドの実行順を決定する。
【００３３】
例えば、コマンド実行順決定部１１３ａは、ライトバッファ１２２上に、書き込み単位に相当するサイズ（例えば、ページサイズ、クラスタサイズ、又はブロックサイズなど）で記憶領域１２２ａを確保する。コマンド実行順決定部１１３ａは、推定された圧縮率に応じて、複数のライトコマンドの発行順にライトデータを記憶領域１２２ａに配置した場合の圧縮データサイズの合計を圧縮データ量管理領域１２３に書いておく。コマンド実行順決定部１１３ａは、圧縮データ量管理領域１２３に書かれた圧縮データサイズの合計に基づき、ライトデータが記憶領域１２２ａ内に収まるか否か判断する。コマンド実行順決定部１１３ａは、記憶領域１２２ａ内に収まらないことに応じて、複数のライトコマンドの実行順をその発行順と異なる順番に決定する。
【００３４】
ＣＰＵ１１３は、コマンド実行順決定部１１３ａで決定された実行順に、ライトコマンドの実行を指示する。
【００３５】
メモリインタフェース１１８は、バスを介して不揮発性メモリ１３０と接続され、不揮発性メモリ１３０との通信を制御する。例えば、メモリインタフェース１１８は、ＣＰＵ１１３からライトコマンドの実行が指示された際に、ＣＰＵ１１３から指示されたライトコマンド及びライトデータを不揮発性メモリ１３０へ転送する。また、不揮発性メモリ１３０はメモリインタフェース１１８経由で受信したＣＰＵ１１３から指示されたライトコマンドの実行が完了した際、完了通知をメモリインタフェース１１８へ送信し、メモリインタフェース１１８は完了通知を不揮発性メモリ１３０から受ける。
【００３６】
ＣＰＵ１１３は、メモリインタフェース１１８を介してＣＰＵ１１３が指示したライトコマンドに対する完了通知を受けると、ライトコマンドの実行完了を示す完了情報をＮＶＭｅインタフェース１１１経由でホストメモリ４におけるコマンド完了キュー４ｂに登録する。
【００３７】
バッファインタフェース１１２は、コントローラ１１０からバッファメモリ１２０へのアクセスを制御するコントローラであり、例えばＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）でのバッファメモリ１２０へのアクセスを可能とするコントローラである。
【００３８】
ＥＣＣ１１６は、ＣＰＵ１１３による制御のもと、ライトデータを誤り訂正符号化する。ＥＣＣ１１６は、ライトデータに基づいてパリティを生成し、パリティを含めたライトデータを生成する。
【００３９】
圧縮部１１４は、ＣＰＵ１１３による制御のもと、不揮発性メモリ１３０へ書き込まれる前の（パリティを含む）ライトデータを圧縮する。圧縮部１１４は、可逆的な圧縮方式に従い、ライトデータを圧縮する。圧縮部１１４は、ハードウェアエンジン又はＩＰコア（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ  Ｃｏｒｅ）として構成されてもよい。
【００４０】
伸張部１１５は、ＣＰＵ１１３による制御のもと、不揮発性メモリ１３０から読み出された圧縮状態のリードデータを伸張する。伸張部１１５は、可逆的な圧縮方式に従い、圧縮状態のリードデータを伸張する。伸張部１１５は、ハードウェアエンジン又はＩＰコア（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ  Ｃｏｒｅ）として構成されてもよい。
【００４１】
ＥＣＣ１１６は、ＣＰＵ１１３による制御のもと、伸張後のリードデータを誤り訂正復号する。ＥＣＣ１１６は、リードデータからパリティを抽出し、パリティに基づきエラービットを訂正する。
【００４２】
次に、メモリシステム１００を含む情報処理システム１の動作について図２を用いて説明する。図２は、メモリシステム１００を含む情報処理システム１の動作を示すシーケンス図である。
【００４３】
ホスト２は、ライトデータをホストメモリ４上の特定のアドレスに転送する（ＳＱ１）。このとき、ホスト２は、ライトデータの圧縮率推定情報（エントロピー情報）を求める（ＳＱ２）。ホスト２は、例えば、ライトデータにおけるビット値の冗長度に基づいてエントロピー情報を求める。
【００４４】
例えば、図３に示すように、ホスト２は、ライトデータにおけるビット値“１”の出現確率を確認し、その確認結果に応じて複数段階（図３の場合、８段階）にランク付けして、エントロピー情報を求めてもよい。図３は、圧縮率推定情報（エントロピー情報）を求める処理を示す図である。なお、図３に示されるように、ビット値“１”の出現確率が１／２である場合は、圧縮不可であることを示すエントロピーの極大値ＥＴｉｎｃｏｍｐが求められ得る。
【００４５】
図２に戻って、ホスト２は、ＳＱ２で求めた圧縮率推定情報（エントロピー情報）を含めてライトコマンドを発行し（ＳＱ３）、そのライトコマンドをホストメモリ４上のコマンド発行キュー４ａにエンキューさせる。
【００４６】
その後、ホスト２は、メモリシステム１００にアクセスし、ＮＶＭｅインタフェース１１１のドアベルレジスタ１１１ａに有効ビットを格納する。これにより、ホスト２は、メモリシステム１００に対して、ライトコマンド実行の呼び出しを行う。
【００４７】
メモリシステム１００は、ドアベルレジスタ１１１ａに有効ビットが格納されるまで（ＳＱ６で「Ｎｏ」）待機し、ドアベルレジスタ１１１ａに有効ビットが格納されると（ＳＱ６で「Ｙｅｓ」）、メモリシステム１００がマスタとなって、ホストメモリ４のコマンド発行キュー４ａ・バッファ領域４ｃにアクセスし、ライトコマンド・ライトデータをそれぞれ取得する。メモリシステム１００は、ライトコマンドに紐づけられた圧縮率推定情報（例えば、ライトコマンドに含まれたエントロピー情報）を用いてライトデータの圧縮率を推定する。メモリシステム１００は、推定された圧縮率に応じて、不揮発性メモリ１３０に対する複数のライトコマンドの実行順を決定する（ＳＱ７）。メモリシステム１００は、決定された実行順に従って、ライトバッファ１２２からＥＣＣ１１６を通してライトデータを不揮発性メモリ１３０に書き込む。メモリシステム１００は、書き込みが完了したら、メモリシステム１００がマスタとなって、ホストメモリ４のコマンド完了キュー４ｂにアクセスし、完了情報をコマンド完了キュー４ｂに登録する（ＳＱ８）。ホスト２は、コマンド完了キュー４ｂに完了情報が登録されたことを確認すると、メモリシステム１００にアクセスし、ＮＶＭｅインタフェース１１１のドアベルレジスタ１１１ｂに有効ビットを格納する。これにより、ホスト２は、メモリシステム１００に対して、完了情報の確認を通知する。また、ホスト２は、完了情報に対応するライトコマンドをコマンド発行キュー４ａからデキューさせて破棄し、完了情報に対応するライトデータをバッファ領域４ｃから削除してもよい。
【００４８】
なお、ＳＱ２の処理は、ホスト２のＤＭＡＣ５がバッファ領域４ｃに格納された複数のライトデータを確認する際に、複数のライトデータについて一括して行われてもよい。
【００４９】
また、ＮＶＭｅ規格に準拠したライトコマンドでは、ライトデータが圧縮不可能かどうか（例えば、エントロピーが図３に示す極大値ＥＴｉｎｃｏｍｐであるかどうか）を示すフィールドが１ビットしかない。このため、ＳＱ３でライトコマンドにおける圧縮率推定情報を含めるフィールドは、ＮＶＭｅ規格に準拠したライトコマンドにおける未使用のフィールド（Ｒｅｓｅｒｖｅｄのフィールド）を利用してもよい。
【００５０】
次に、ＳＱ７のコマンド実行順決定処理の詳細について図４及び図５を用いて説明する。図４は、コマンド実行順決定処理を示すフローチャートである。図５は、コマンド実行順決定処理を示す図である。図４に示すコマンド実行順決定処理は、例えば、コントローラ１１０のＮＶＭｅインタフェース１１１、コマンド実行順決定部１１３ａ、圧縮部１１４、バッファインタフェース１１２により実行される。
【００５１】
メモリシステム１００は、バッファメモリ１２０のライトバッファ１２２上に、所定の書き込み単位に相当するサイズ（例えば、ページサイズ、クラスタサイズ、又はブロックサイズ）を有する記憶領域１２２ａを確保する（Ｓ１）。メモリシステム１００は、記憶領域１２２ａに圧縮後のライトデータの書き込みを行う（Ｓ２）。メモリシステム１００は、Ｓ１でライトバッファ１２２上に確保された記憶領域１２２ａのうち、ライトデータが書き込まれた領域を除いた領域つまり不揮発性メモリ１３０へ書き込むためのデータが保存された領域を除いた領域である残り領域１２２ａ１のデータ量（残り領域１２２ａ１のサイズ）が所定量以下になるまで（Ｓ３で「Ｎｏ」）、Ｓ２をライトコマンドの発行順に行う。
【００５２】
例えば、図５の例では、ｋを任意の２以上の整数として、ライトデータＷｒＤａｔａｋ、ライトデータＷｒＤａｔａ（ｋ＋１）、ライトデータＷｒＤａｔａ（ｋ＋２）がライトコマンドの発行順に圧縮データ量管理領域１２３に書き込まれた状態を示している。
【００５３】
メモリシステム１００は、Ｓ１でライトバッファ１２２上に確保された記憶領域１２２ａにおける残り領域１２２ａ１のデータ量が所定量以下になると（Ｓ３で「Ｙｅｓ」）、ホストメモリ４上でライトコマンドに紐づけられた圧縮率推定情報を取得する（Ｓ４）。例えば、メモリシステム１００は、ライトコマンドに含まれたエントロピー情報を圧縮率推定情報として取得してもよい。
【００５４】
メモリシステム１００は、ライトコマンドの圧縮率を推定し、圧縮後のデータ量を算出する（Ｓ５）。メモリシステム１００は、ＲＡＭ１１７から圧縮率変換情報１１７ａを読み出し、圧縮率変換情報１１７ａを参照して圧縮率を推定してもよい。
【００５５】
例えば、圧縮率変換情報１１７ａは、図６に示すようなデータ構造を有している。図６は、圧縮率変換情報１１７ａのデータ構造を示す図である。圧縮率変換情報１１７ａは、エントロピーと圧縮率とが複数の異なるエントロピーについて対応付けられた情報である。圧縮率変換情報１１７ａは、エントロピー情報欄１１７ａ１及び圧縮率欄１１７ａ２を有する。圧縮率変換情報１１７ａを参照することで、エントロピー情報に対応する圧縮率を特定することができる。エントロピー情報が「ＬＶ０」であれば、圧縮率が概ね「１／１００」であると特定でき、エントロピー情報が「ＬＶ１」であれば、圧縮率が概ね「１／１０」であると特定でき、・・・、エントロピー情報が「ＬＶ７」であれば、圧縮率が概ね「０」であると特定できる。
【００５６】
メモリシステム１００は、圧縮率変換情報１１７ａにおけるエントロピー情報に対応する圧縮率を特定することで、ライトデータの圧縮率を推定してもよい。メモリシステム１００は、ライトデータの非圧縮状態のサイズに圧縮率を乗算することなどにより、圧縮後のライトデータのデータ量を算出してもよい。
【００５７】
メモリシステム１００は、Ｓ５で算出されたライトデータのデータ量に応じて、圧縮後のライトデータが、ライトバッファ１２２上に確保された記憶領域１２２ａにおける残り領域１２２ａ１に収まると予想できるか否かを判断する（Ｓ６）。
【００５８】
メモリシステム１００は、ライトデータがライトバッファ１２２上に確保された記憶領域１２２ａにおける残り領域１２２ａ１に収まらないと予想される場合（Ｓ６で「Ｎｏ」）、ライトバッファ１２２上に確保された記憶領域１２２ａにおける残り領域１２２ａ１にはライトデータを格納せず、次のライトコマンドがあるか判断する（Ｓ１０）。メモリシステム１００は、次のライトコマンドがあれば（Ｓ１０で「Ｙｅｓ」）、次のライトコマンドについてＳ４以降を行い、次のライトコマンドがなければ（Ｓ１０で「Ｎｏ」）、処理を終了する。
【００５９】
例えば、図５の例では、ライトデータＷｒＤａｔａ（ｋ＋３）がライトバッファ１２２上に確保された記憶領域１２２ａにおける残り領域１２２ａ１に収まらないと予想される場合を例示している。
【００６０】
メモリシステム１００は、ライトデータがライトバッファ１２２上に確保された記憶領域１２２ａにおける残り領域１２２ａ１に収まると予想できる場合（Ｓ６で「Ｙｅｓ」）、ライトデータを圧縮し、圧縮後のライトデータのデータ量を求める（Ｓ７）。メモリシステム１００は、Ｓ７で求めたデータ量に応じて、圧縮後のライトデータが実際に、ライトバッファ１２２上に確保された記憶領域１２２ａにおける残り領域１２２ａ１に収まるか否かを判断する（Ｓ８）。
【００６１】
例えば、図５の例では、ライトデータＷｒＤａｔａ（ｋ＋３）の次のライトデータＷｒＤａｔａ（ｋ＋４）が残り領域１２２ａ１に収まると判断される場合を例示している。
【００６２】
メモリシステム１００は、圧縮後のライドデータが実際に、ライトバッファ１２２上に確保された記憶領域１２２ａにおける残り領域１２２ａ１に収まる場合（Ｓ８で「Ｙｅｓ」）、ライトデータを記憶領域１２２ａ（すなわち、残り領域１２２ａ１）に格納する（Ｓ９）。
【００６３】
メモリシステム１００は、圧縮後のライドデータが実際に、ライトバッファ１２２上に確保された記憶領域１２２ａにおける残り領域１２２ａ１に収まらない場合（Ｓ８で「Ｎｏ」）、残り領域１２２ａ１には何も書かずに、次のライトコマンドがあるか判断する（Ｓ１０）。メモリシステム１００は、次のライトコマンドがあれば（Ｓ１０で「Ｙｅｓ」）、次のライトコマンドについてＳ４以降を行い、次のライトコマンドがなければ（Ｓ１０で「Ｎｏ」）、処理を終了する。
【００６４】
このように、エントロピー情報を参照することで、ライトデータを実際に圧縮して収まらない確率は、比較的低くなる。更に、メモリシステム１００の圧縮部１１４がエントロピー情報の算出で用いた圧縮方式と同じ圧縮方式を採用していれば、ライトデータを実際に圧縮して収まらない確率はより低くなる。その結果、複数のレベルに対応した複数のバッファ領域を含むバッファメモリを設けることなく、不揮発性メモリ１３０におけるライトデータの書き込みを効率化できる。
【００６５】
なお、エントロピー情報で示される通りの圧縮率で圧縮できない場合も考えられるが、圧縮率推定情報（エントロピー情報）と予測される圧縮率とが対応づけられた圧縮率変換情報１１７ａ（図６参照）を用いて圧縮率を予測することにより、ライトデータを実際に圧縮して収まらない確率を低減することができる。
【００６６】
以上のように、第１の実施形態では、メモリシステム１００において、ライトコマンドに紐づけられた圧縮率推定情報（圧縮率のヒント）を用いてライトデータの圧縮率を推定し、推定された圧縮率に応じてライトコマンドの実行順を決定する。これにより、バッファメモリの容量増加を抑制しながら、不揮発性メモリ１３０におけるライトデータの書き込みを効率化できる。
【００６７】
なお、図４に示した方法以外でも、ライトコマンド群のエントロピー情報から期待される圧縮率ごとにライトコマンド群をクラスタリングし、クラスタごとに圧縮して書き込み単位に対応した記憶領域１２２ａへ書き込んでゆく方法などもありうる。例えば、クラスタリングは、エントロピー情報から期待される圧縮率のレベルに応じてライトコマンド群を複数のサブグループに分類することで行うことが考えられる。ライトコマンド群を２つのサブグループに分類する場合、ＬＶ０〜ＬＶ３のエントロピー情報（図３参照）に紐づけられたライトコマンドを第１のサブグループに分類し、ＬＶ４〜ＬＶ７のエントロピー情報に紐づけられたライトコマンドを第２のサブグループに分類する。そして、まず、第１のサブグループに属するライトコマンドを記憶領域１２２ａへライトコマンドの発行順に書き込んでいき、次に、第２のサブグループに属するライトコマンドを記憶領域１２２ａへライトコマンドの発行順に書き込んでいく。これにより、ライトデータの圧縮率が近いライトコマンドをまとめて記憶領域１２２ａへ書き込めるため、圧縮率のバラツキによる影響を低減しながらライトコマンドの実行順を決定できる。
【００６８】
（第２の実施形態）
次に、第２の実施形態にかかるメモリシステムについて説明する。以下では、第１の実施形態と異なる部分を中心に説明する。
【００６９】
第２の実施形態では、情報処理システム１ｉの構成が、図７に示すように、第１の実施形態と異なる。図７は、第２の実施形態にかかるメモリシステム１００を含む情報処理システム１ｉの構成及び動作を示す図である。
【００７０】
情報処理システム１ｉは、中継装置２００ｉをさらに有する。中継装置２００ｉは、ホスト２ｉとメモリシステム１００との間で両者と通信可能に接続され、ホスト２ｉとメモリシステム１００との通信を中継する。中継装置２００ｉは、接続網２１０ｉ及び中継メモリ２２０ｉを有する。接続網２１０ｉは、エントロピー算出部２１１ｉを有する。すなわち、エントロピー情報は、ホスト２ｉで算出せずに、接続網２１０ｉで算出する。これに応じて、ホストコントローラ３ｉのＤＭＡＣ５ｉは、エントロピー算出部５ａ（図１参照）を有しない。また、エントロピー情報を接続網２１０ｉのバッファとして機能する中継メモリ２２０ｉ中でライトデータに紐付ける。このエントロピー情報を参照して、どの順番に圧縮して書きこんでゆけば良いかを決定する。
【００７１】
具体的には、メモリシステム１００を含む情報処理システム１ｉは、次のように動作する。
【００７２】
ホスト２ｉからメモリシステム１００のドアベルレジスタ１１１ａに有効ビットを格納し、メモリシステム１００にライトコマンドの取得を促す（ＳＱ１１）。メモリシステム１００は、ホストメモリ４のコマンド発行キュー４ａに接続網２１０ｉ経由でアクセスし、ライトコマンドを取得する（ＳＱ１２）。接続網２１０ｉは、ホストメモリ４のバッファ領域４ｃにアクセスしてライトコマンドに対応したライトデータを取得して中継メモリ２２０ｉに格納するとともに、エントロピー算出部２１１ｉがライトデータに応じてエントロピーを算出し、算出結果をエントロピー情報として中継メモリ２２０ｉに格納する（ＳＱ１３）。このとき、接続網２１０ｉは、エントロピー情報をライトデータと紐付けて中継メモリ２２０ｉに格納する。
【００７３】
メモリシステム１００は、ライトコマンドを取得したことに応じて、中継メモリ２２０ｉにアクセスし、ライトデータに紐づけられたエントロピー情報を取得する（ＳＱ１４）。メモリシステム１００は、エントロピー情報に応じて、図４に示す方法と同様にコマンド実行順決定処理を行い、ライトコマンドの実行順を決定する（ＳＱ１５）。メモリシステム１００は、ＳＱ１５で決定した順番で中継メモリ２２０ｉ上のライトデータをロードし、圧縮して不揮発性メモリ１３０へ書き込む（ＳＱ１６）。
【００７４】
以上のように、第２の実施形態では、メモリシステム１００において、ライトデータを介してライトコマンドに紐づけられた圧縮率推定情報（圧縮率のヒント）を用いてライトデータの圧縮率を推定し、推定された圧縮率に応じてライトコマンドの実行順を決定する。これによっても、バッファメモリの容量増加を抑制しながら、不揮発性メモリ１３０におけるライトデータの書き込みを効率化できる。
【００７５】
（第３の実施形態）
次に、第３の実施形態にかかるメモリシステムについて説明する。以下では、第１の実施形態及び第２の実施形態と異なる部分を中心に説明する。
【００７６】
第１の実施形態及び第２の実施形態では、ライトデータの圧縮率を推定してライトコマンドの実行順を決定する場合について例示しているが、第３の実施形態では、図８に示すように、ライトデータを一度圧縮して実際の圧縮データサイズを求めてライトコマンドの実行順を決定する場合について例示する。図８は、第３の実施形態にかかるメモリシステム１００ｊを含む情報処理システム１ｊの構成及び動作を示す図である。
【００７７】
情報処理システム１ｊでは、メモリシステム１００ｊが、ライトデータを一度圧縮して実際の圧縮データサイズを求め、この圧縮データサイズを参照して、どの順番に圧縮して書きこんでゆけば良いかを決定する。例えば、メモリシステム１００ｊは、ホスト２ｊから取得したライトデータをバッファメモリ１２０ｊに書き込む際に仮圧縮する。メモリシステム１００ｊは、仮圧縮後のライトデータをバッファメモリ１２０ｊにおけるライトバッファ１２２０に格納するとともに、仮圧縮後のライトデータに応じて圧縮率を求めてバッファメモリ１２０ｊにおける圧縮率保存領域１３４へ格納する。
【００７８】
すなわち、メモリシステム１００ｊにおけるバッファメモリ１２０ｊは、不揮発性メモリ１３０へ書き込むためのライトデータを一時的に保持するライトバッファ１２２１に加えて、仮圧縮されたライトデータを一時的に保持するためのライトバッファ１２２０を有する。また、バッファメモリ１２０ｊは、圧縮率を保存するための圧縮率保存領域１２４を有する。バッファメモリ１２０ｊでは、第１の実施形態に比べると、ライトバッファ１２２０及び圧縮率保存領域１２４に相当するバッファ容量の増加量があるが、複数のレベルに対応した複数のバッファ領域を含むバッファメモリを設ける場合に比べると大幅に少ない増加量で済む。
【００７９】
なお、圧縮率の推定を行わないため、ホストコントローラ３ｊのＤＭＡＣ５ｊは、エントロピー算出部５ａ（図１参照）を有しない。
【００８０】
具体的には、メモリシステム１００ｊを含む情報処理システム１ｊは、次のように動作する。
【００８１】
ホスト２ｊからメモリシステム１００ｊのドアベルレジスタ１１１ａに有効ビットを格納し、メモリシステム１００ｊにライトコマンドの取得を促す（ＳＱ２１）。メモリシステム１００ｊは、ホストメモリ４のコマンド発行キュー４ａにアクセスし、ライトコマンドを取得する（ＳＱ２２）。メモリシステム１００ｊは、ホストメモリ４のバッファ領域４ｃからライトデータを取得し、圧縮部１１４でライトデータを仮圧縮し、仮圧縮後のライトデータをバッファメモリ１２０ｊにおけるライトバッファ（ＷｒＢｕｆ０）１２２０上に確保された記憶領域１２２ａに格納する。それとともに、メモリシステム１００ｊは、仮圧縮後のライトデータに応じて圧縮率を求めてバッファメモリ１２０ｊにおける圧縮率保存領域１２４に格納する。コントローラ１１０（コマンド実行順決定部１１３ａ）は、圧縮データ管理領域１２３に格納された情報（書き込み単位内に詰め込んだ圧縮データ量の総和の情報）と圧縮率保存領域１２４に格納された圧縮率とを読み出し、ライトコマンドの実行順を決定する（ＳＱ１５）。具体的には、図９に示すように、コントローラ１１０は、図４におけるＳ４〜Ｓ６が省略された処理を行い、ライトコマンドの実行順を決定する。
【００８２】
メモリシステム１００ｊは、ＳＱ２５で決定した順番でライトコマンドに対応するライトデータをライトバッファ（ＷｒＢｕｆ０）１２２０からライトバッファ（ＷｒＢｕｆ１）１２２１にコピーする。メモリシステム１００ｊは、ライトバッファ１２２１からＥＣＣ１１６を通して不揮発性メモリ１３０へライトデータを書き込む。
【００８３】
以上のように、第３の実施形態では、実際に圧縮しているため、ライトデータを確実に書き込み単位に収めることができ、不揮発性メモリ１３０におけるライトデータの書き込みを確実に効率化できる。
【００８４】
（第４の実施形態）
次に、第４の実施形態にかかるメモリシステムについて説明する。以下では、第１の実施形態〜第３の実施形態と異なる部分を中心に説明する。
【００８５】
第３の実施形態では、圧縮可能かどうかにかかわらずにライトデータを一度圧縮してライトコマンドの実行順を決定する場合について例示しているが、第４の実施形態では、圧縮可能なときに限定してライトデータを圧縮してライトコマンドの実行順を決定する場合について例示する。なお、第４の実施形態におけるメモリシステム１００を含む情報処理システム１の構成は、第１の実施形態と同様であってもよい。
【００８６】
具体的には、図２に示すＳＱ７のコマンド実行順決定処理の詳細は、図１０に示すように、次の点で第１の実施形態と異なる。
【００８７】
メモリシステム１００は、Ｓ１の後に、ライトコマンドのライトデータが圧縮不可能かどうかを示すフィールド（フィールド「０７」）の値が０であるか否かを確認する（Ｓ１１）。メモリシステム１００は、フィールド「０７」の値が０でない、すなわち１であれば（Ｓ１１で「Ｎｏ」）、圧縮が不可能であるとして処理をＳ１０へ進める。メモリシステム１００は、フィールド「０７」の値が０であれば（Ｓ１１で「Ｙｅｓ」）、圧縮が可能であるとして、ライトデータを圧縮し、圧縮後のライトデータのデータ量を求め（Ｓ１２）、Ｓ８以降の処理を行う。
【００８８】
以上のように、第４の実施形態にかかるメモリシステム１００では、圧縮可能なときにライトデータを圧縮して不揮発性メモリ１３０に書き込む。これにより、不揮発性メモリ１３０に対するライトデータの書き込みを効率化できる。
【００８９】
（第５の実施形態）
次に、第５の実施形態にかかるメモリシステムについて説明する。以下では、第１の実施形態〜第４の実施形態と異なる部分を中心に説明する。
【００９０】
第４の実施形態では、書き込み単位に相当する記憶領域に収まるかどうか判断する対象が圧縮可能なライトデータである場合について例示しているが、第５の実施形態では、書き込み単位に相当する記憶領域に収まるかどうか判断する対象が圧縮可能なライトデータの他に圧縮不可能なライトデータも含まれる場合について例示する。
【００９１】
具体的には、図２に示すＳＱ７のコマンド実行順決定処理の詳細は、図１１に示すように、次の点で第１の実施形態と異なる。
【００９２】
メモリシステム１００は、Ｓ１の後に、ライトコマンドのライトデータが圧縮不可能かどうかを示すフィールド（フィールド「０７」）の値が０であるか否かを確認する（Ｓ２１）。メモリシステム１００は、フィールド「０７」の値が０でない、すなわち１であれば（Ｓ２１で「Ｎｏ」）、圧縮が不可能であるとして、非圧縮のライトデータが記憶領域１２２ａにおける残り領域１２２ａ１に収まるか否かを判断する（Ｓ２２）。メモリシステム１００は、非圧縮のライトデータが残り領域１２２ａ１に収まる場合（Ｓ２２で「Ｙｅｓ」）、非圧縮のライトデータを記憶領域１２２ａ（すなわち、残り領域１２２ａ１）に格納する（Ｓ２３）。メモリシステム１００は、フィールド「０７」の値が０であれば（Ｓ２１で「Ｙｅｓ」）、圧縮が可能であるとして、ライトデータを圧縮し（Ｓ１２）、圧縮後のライトデータが記憶領域１２２ａにおける残り領域１２２ａ１に収まるか否かを判断する（Ｓ２２）。メモリシステム１００は、圧縮後のライトデータが残り領域１２２ａ１に収まる場合（Ｓ２２で「Ｙｅｓ」）、圧縮後のライトデータを記憶領域１２２ａ（すなわち、残り領域１２２ａ１）に格納する（Ｓ２３）。その後、Ｓ１０の処理が行われる。
【００９３】
以上のように、第５の実施形態にかかるメモリシステム１００では、第４の実施形態と同様に、圧縮可能なときにライトデータを圧縮して不揮発性メモリ１３０に書き込む。これにより、不揮発性メモリ１３０に対するライトデータの書き込みを効率化できる。
【００９４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９５】
１，１ｉ，１ｊ  情報処理システム、１００，１００ｊ  メモリシステム、１１０  コントローラ、１１１  ＮＶＭｅインタフェース、１３０  不揮発性メモリ１３００ｉ  中継装置。
【図１】
2020154525.tif 000003
【図２】
2020154525.tif 000004
【図３】
2020154525.tif 000005
【図４】
2020154525.tif 000006
【図５】
2020154525.tif 000007
【図６】
2020154525.tif 000008
【図７】
2020154525.tif 000009
【図８】
2020154525.tif 000010
【図９】
2020154525.tif 000011
【図１０】
2020154525.tif 000012
【図１１】
2020154525.tif 000013