JP2021149416A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2021149416A JP2021149416A JP2020047738A JP2020047738A JP2021149416A JP 2021149416 A JP2021149416 A JP 2021149416A JP 2020047738 A JP2020047738 A JP 2020047738A JP 2020047738 A JP2020047738 A JP 2020047738A JP 2021149416 A JP2021149416 A JP 2021149416A
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- read
- read pointer
- data string
- input data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 123
- 238000000034 method Methods 0.000 claims description 16
- 238000007906 compression Methods 0.000 abstract description 94
- 230000006835 compression Effects 0.000 abstract description 91
- 230000006837 decompression Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 15
- 230000000052 comparative effect Effects 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 230000001934 delay Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
第1実施形態に係るメモリシステムについて説明する。第1実施形態に係るメモリシステムは、例えば、半導体記憶装置としてのNAND型フラッシュメモリと、当該NAND型フラッシュメモリを制御するメモリコントローラと、を含む。
図1は、一実施形態に係るメモリシステムの構成を説明するためのブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と、不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能である。図1では、メモリシステム1とホスト30とが接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
圧縮・伸長回路16では、例えばLZ77圧縮など、データ列の類似性を利用した辞書式圧縮を用いた圧縮技術が用いられる。詳細は以下に示すが、圧縮・伸長回路16に備えられた圧縮機能は、圧縮対象のデータ列を、過去に入力されたデータ列を参照(マッチ)する情報に置き換えることで、当該圧縮対象のデータ列を圧縮する。そして、圧縮・伸長回路16に備えられた伸長機能によって、圧縮されたデータ列は、過去に伸長された伸長済みデータ列及びシンボルに基づいて伸長される。なお、シンボルとは、過去に伸長されたデータ列が格納されているヒストリーバッファにおけるアドレスを示す「位置情報」と、当該アドレスに格納されたデータ列の先頭からのデータ数を示す「長さ情報」と、を含む情報である。以下の説明では、圧縮・伸長回路16のうち圧縮機能を備える圧縮回路50について説明する。なお、圧縮・伸長回路16の伸長機能を備える伸長回路としては一般的な回路を用いることができるため、ここでは説明を省略する。
図4は、一実施形態に係る圧縮回路の圧縮動作を説明するためのフローチャートである。図2を参照しながら、図4の動作フローを説明する。図4に示すように、圧縮回路50の動作が開始すると、圧縮対象列として入力データ列が第1入力端子50−1に入力される(ステップS201)。入力データ列は、ヒストリーバッファ書き込み回路130によって、ヒストリーバッファ100においてライトポインタによって指定されたアドレスに書き込まれる(ステップS202)。ヒストリーバッファ100への入力データ列の書き込まれると、ライトポインタ管理回路188によってライトポインタが更新される(ステップS203)。
図5を用いて、圧縮回路50の圧縮動作を具体的なデータ列を用いて説明する。図5は、一実施形態に係る圧縮回路の圧縮動作を説明するための概念図である。図5の例では、ヒストリーバッファ100に入力済みデータ列「・・・ab」というデータ列が格納されており、そこに入力データ列として「ababab」が入力された場合が示されている。
第2実施形態では、第1実施形態における圧縮回路50と類似した構成の圧縮回路50Aについて説明する。図7は、一実施形態に係る圧縮回路の構成を説明するためのブロック図である。図7に示す圧縮回路50Aは、図2に示す圧縮回路50に類似しているが、リードポインタテーブル120Aの構成がリードポインタテーブル120と相違する。以下の説明において、図2の構成と同様の特徴については説明を省略し、主に図2の構成と相違する点について説明する。
第3実施形態では、第2実施形態における圧縮回路50Aと類似した構成の圧縮回路50Bについて説明する。図9は、一実施形態に係るポインタテーブルの構成を説明するためのブロック図である。図9においては、圧縮回路50Bの一部の構成を図示している。図9に示す圧縮回路50Bは、図7に示す圧縮回路50Aに類似しているが、リードポインタテーブル120Bの構成がリードポインタテーブル120Aと相違する。また、圧縮回路50Bには、LRU選択回路450BおよびLRU選択回路450Bが設けられている。以下の説明において、図7の構成と同様の特徴については説明を省略し、主に図7の構成と相違する点について説明する。
Claims (9)
- 記憶装置と、前記記憶装置を制御し且つ入力データ列を圧縮するメモリコントローラと、を備えるメモリシステムであって、
前記メモリコントローラは、
入力済みデータ列を格納するヒストリーバッファと、
前記入力データ列からハッシュ値を計算するハッシュ計算回路と、
前記ハッシュ値によって指定されたアドレスに、前記ヒストリーバッファにおけるアドレスを示すリードポインタを格納するリードポインタテーブルと、
前記入力データ列を前記ヒストリーバッファへ書き込むヒストリーバッファ書き込み回路と、
前記ハッシュ値によって指定された前記リードポインタテーブルにおけるアドレスに対して、前記入力データ列の前記リードポインタを書き込むリードポインタ書き込み回路と、
前記ハッシュ値を使用して前記リードポインタテーブルからの前記リードポインタの読み出しを実行するリードポインタ読み出し回路と、
前記リードポインタ読み出し回路によって読み出された前記リードポインタを使用して、前記ヒストリーバッファから前記入力済みデータ列を一致候補データ列として読み出すヒストリーバッファ読み出し回路と、
前記入力データ列と前記一致候補データ列とを比較して、少なくとも一部が一致している場合に、前記入力データ列を、前記一致候補データ列を参照する参照情報に置き換えるマッチ回路と、
を有し、
前記リードポインタ読み出し回路による前記リードポインタの読み出し及び前記ヒストリーバッファ読み出し回路による前記入力済みデータ列の読み出しを、前記リードポインタ書き込み回路による前記リードポインタの書き込み及び前記ヒストリーバッファ書き込み回路による前記入力データ列の書き込みの完了後に実行するメモリシステム。 - 前記ヒストリーバッファはフリップフロップ回路を含む、請求項1に記載のメモリシステム。
- 前記リードポインタテーブルはフリップフロップ回路を含む、請求項1に記載のメモリシステム。
- 前記ヒストリーバッファはSRAMを含む、請求項1に記載のメモリシステム。
- 前記リードポインタテーブルはSRAMを含む、請求項1に記載のメモリシステム。
- 前記リードポインタテーブルは、アドレス毎に複数の前記リードポインタを有し、
前記リードポインタ読み出し回路は、前記複数の前記リードポインタの読み出しを実行し、
前記ヒストリーバッファ読み出し回路は、前記複数の前記リードポインタに基づいて、複数の前記一致候補データ列を読み出し、
前記マッチ回路は、前記複数の前記一致候補データ列を処理する、請求項1に記載のメモリシステム。 - 前記リードポインタ書き込み回路は、前記複数の前記リードポインタを前記リードポインタテーブルの指定アドレスに書き込む場合であって、既に書き込まれた前記リードポインタが前記指定アドレスに存在し、既に書き込まれた前記リードポインタの少なくとも一部を上書きしなければいけない場合、既に書き込まれた前記リードポインタのうち、書き込まれたタイミングが古い前記リードポインタから順に上書きする、請求項6に記載のメモリシステム。
- 前記リードポインタ書き込み回路は、前記複数の前記リードポインタを前記リードポインタテーブルの指定アドレスに書き込む場合であって、既に書き込まれた前記リードポインタが前記指定アドレスに存在し、既に書き込まれた前記リードポインタの少なくとも一部を上書きしなければいけない場合、前記マッチ回路によって参照された履歴に基づいて、既に書き込まれた前記リードポインタのうち上書きする前記リードポインタを決定する、請求項6に記載のメモリシステム。
- 前記ハッシュ値は、前記入力データ列の先頭からNバイトのデータを用いて計算され、
前記マッチ回路は、前記入力データ列と前記一致候補データ列とがNバイト以上一致する場合に、前記入力データ列を前記参照情報に置き換える、請求項1乃至8のいずれか一に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020047738A JP2021149416A (ja) | 2020-03-18 | 2020-03-18 | メモリシステム |
US16/998,031 US11461008B2 (en) | 2020-03-18 | 2020-08-20 | Memory system for improving compression performance of a dictionary coder circuit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020047738A JP2021149416A (ja) | 2020-03-18 | 2020-03-18 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021149416A true JP2021149416A (ja) | 2021-09-27 |
Family
ID=77746667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020047738A Pending JP2021149416A (ja) | 2020-03-18 | 2020-03-18 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11461008B2 (ja) |
JP (1) | JP2021149416A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12001339B2 (en) | 2022-03-09 | 2024-06-04 | Kioxia Corporation | Dictionary compression device and memory system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140266816A1 (en) * | 2013-03-15 | 2014-09-18 | Dialogic Networks (Israel) Ltd. | Method and apparatus for compressing data-carrying signals |
JP2016052046A (ja) * | 2014-09-01 | 2016-04-11 | 株式会社東芝 | 圧縮装置、伸長装置およびストレージ装置 |
US20170192709A1 (en) * | 2015-12-31 | 2017-07-06 | International Business Machines Corporation | Hybrid compression for large history compressors |
JP2019029023A (ja) * | 2017-07-28 | 2019-02-21 | アップル インコーポレイテッドApple Inc. | メモリ圧縮を実行するシステム及び方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5473326A (en) | 1990-12-14 | 1995-12-05 | Ceram Incorporated | High speed lossless data compression method and apparatus using side-by-side sliding window dictionary and byte-matching adaptive dictionary |
US5406278A (en) | 1992-02-28 | 1995-04-11 | Intersecting Concepts, Inc. | Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique |
JP3889762B2 (ja) | 2002-12-26 | 2007-03-07 | 富士通株式会社 | データ圧縮方法、プログラム及び装置 |
JP5251799B2 (ja) | 2009-09-15 | 2013-07-31 | 株式会社リコー | データ処理装置およびデータ処理方法 |
US10509580B2 (en) * | 2016-04-01 | 2019-12-17 | Intel Corporation | Memory controller and methods for memory compression utilizing a hardware compression engine and a dictionary to indicate a zero value, full match, partial match, or no match |
US10241938B1 (en) * | 2017-12-20 | 2019-03-26 | Sandisk Technologies Llc | Output data path for non-volatile memory |
-
2020
- 2020-03-18 JP JP2020047738A patent/JP2021149416A/ja active Pending
- 2020-08-20 US US16/998,031 patent/US11461008B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140266816A1 (en) * | 2013-03-15 | 2014-09-18 | Dialogic Networks (Israel) Ltd. | Method and apparatus for compressing data-carrying signals |
JP2016052046A (ja) * | 2014-09-01 | 2016-04-11 | 株式会社東芝 | 圧縮装置、伸長装置およびストレージ装置 |
US20170192709A1 (en) * | 2015-12-31 | 2017-07-06 | International Business Machines Corporation | Hybrid compression for large history compressors |
JP2019029023A (ja) * | 2017-07-28 | 2019-02-21 | アップル インコーポレイテッドApple Inc. | メモリ圧縮を実行するシステム及び方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12001339B2 (en) | 2022-03-09 | 2024-06-04 | Kioxia Corporation | Dictionary compression device and memory system |
Also Published As
Publication number | Publication date |
---|---|
US11461008B2 (en) | 2022-10-04 |
US20210294500A1 (en) | 2021-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5373290A (en) | Apparatus and method for managing multiple dictionaries in content addressable memory based data compression | |
US5485526A (en) | Memory circuit for lossless data compression/decompression dictionary storage | |
JPWO2015128955A1 (ja) | 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 | |
JP2022094108A (ja) | 圧縮装置および制御方法 | |
JP2021149416A (ja) | メモリシステム | |
JP2022188911A (ja) | 圧縮装置、圧縮伸張装置及びメモリシステム | |
US11588498B2 (en) | Character string search device and memory system | |
US11397546B2 (en) | Memory system | |
JP2023131392A (ja) | 辞書式圧縮装置及びメモリシステム | |
CN112053735B (zh) | 固态存储装置的重复数据处理方法 | |
JP2022070104A (ja) | データ圧縮装置及びデータ圧縮方法 | |
WO2021046054A1 (en) | Command processor with multiple string copy engines for a decompression system | |
US20230291418A1 (en) | Data decompression device, memory system, and data decompression method | |
Safieh et al. | Address space partitioning for the parallel dictionary LZW data compression algorithm | |
US20230403027A1 (en) | Dictionary compressor, data compression device, and memory system | |
US12108064B2 (en) | Memory system | |
US20240204796A1 (en) | Code table generation device, memory system, and code table generation method | |
US20240106459A1 (en) | Compression device and compression method | |
US11561738B2 (en) | Memory system | |
Vasanthi et al. | Implementation of Robust Compression Technique Using LZ77 Algorithm on Tensilica's Xtensa Processor | |
US20240311003A1 (en) | Memory system and method | |
US20240004549A1 (en) | Memory system | |
Safieh | The Parallel Dictionary LZW Algorithm for Flash Memory Controllers | |
JP2023039698A (ja) | データ圧縮装置およびメモリシステム | |
JPH07104969A (ja) | データ圧縮方法および装置並びにデータ復元方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220909 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230614 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230620 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230817 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20230905 |