JP7358279B2 - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP7358279B2
JP7358279B2 JP2020047456A JP2020047456A JP7358279B2 JP 7358279 B2 JP7358279 B2 JP 7358279B2 JP 2020047456 A JP2020047456 A JP 2020047456A JP 2020047456 A JP2020047456 A JP 2020047456A JP 7358279 B2 JP7358279 B2 JP 7358279B2
Authority
JP
Japan
Prior art keywords
data string
decompression
buffer
data
shaped
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.)
Active
Application number
JP2020047456A
Other languages
English (en)
Other versions
JP2021149389A (ja
Inventor
正人 住吉
圭里 中西
貴 三浦
恒平 及川
大亮 八島
翔 小玉
洋平 深澤
哲也 王
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2020047456A priority Critical patent/JP7358279B2/ja
Priority to US16/942,112 priority patent/US11397546B2/en
Publication of JP2021149389A publication Critical patent/JP2021149389A/ja
Application granted granted Critical
Publication of JP7358279B2 publication Critical patent/JP7358279B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0673Single storage device
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

Description

本開示の一実施形態は不揮発性メモリを備えるメモリシステムに関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
上記のメモリシステムにおいてデータを圧縮する場合に、圧縮対象の入力データ列を、過去に入力された入力済みデータ列に対する参照情報で置き換える辞書式圧縮が用いられている。このような辞書式圧縮が用いられるメモリシステムでは、圧縮されたデータ列を伸長する際にも過去に伸長した伸長済みデータ列に対する参照情報を用いて伸長する伸長技術が用いられている。
米国特許第9792044号明細書
本開示の実施形態に係るメモリシステムによって、圧縮・伸長回路における伸長性能を向上させる。
一実施形態に係るメモリシステムは、記憶装置及び前記記憶装置を制御し、圧縮されたデータを伸長するメモリコントローラを備える。前記メモリコントローラは、伸長済みデータ列を格納するヒストリーバッファと、前記ヒストリーバッファに対して読み出し要求をするヒストリーバッファ読み出し制御部と、前記ヒストリーバッファから読み出された前記伸長済みデータ列に基づいて第1整形データ列を生成し、前記読み出し要求に対して前記第1整形データ列を前記ヒストリーバッファに書き戻す前に、前記第1整形データ列を参照して第2整形データ列を生成し、前記第1整形データ列及び前記第2整形データ列を用いて伸長結果を生成する伸長実行部と、を有する。
一実施形態に係るメモリシステムの構成を説明するためのブロック図である。 一実施形態に係る伸長回路の構成を説明するためのブロック図である。 一実施形態に係る伸長回路のブロック内参照部の構成を説明するためのブロック図である。 一実施形態に係る伸長回路の伸長動作を説明するための概念図である。 一実施形態に係る伸長回路のブロック内参照部の構成を説明するためのブロック図である。 一実施形態に係る伸長回路の伸長動作を説明するための概念図である。 一実施形態に係る伸長回路のブロック内参照部の構成を説明するためのブロック図である。 一実施形態に係る伸長回路の伸長動作を説明するための概念図である。 一実施形態に係る伸長回路の構成を説明するためのブロック図である。 一実施形態に係る伸長回路の伸長動作を説明するための概念図である。 一実施形態に係る伸長回路の構成を説明するためのブロック図である。 一実施形態に係る伸長回路の伸長実行部の構成を説明するためのブロック図である。 一実施形態に係る伸長回路の伸長動作を説明するための概念図である。
以下、実施形態にかかるメモリシステムについて、図面を参照して具体的に説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、構成要素の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想には、特許請求の範囲に記載されたものに対して、種々の変更を加えたものが含まれる。
以下の説明において、1バイト(Byte)の情報を「データ」といい、当該データが入力された順に並べられたものを「データ列」という。ただし、「データ」は1バイトの情報に限定されない。また、「圧縮する」とは、対象のデータ列の情報量(例えばビット数)を小さくすることを意味し、「符号化する」又は「エンコードする」ということもできる。「伸長する」とは、圧縮されたデータ列の情報量を圧縮前の状態に復元することを意味し、「復号化する」又は「デコードする」ということもできる。
また、データ列を圧縮する際に、圧縮対象のデータ列を、過去に同じパターンのデータ列が出現した位置を示す情報と、圧縮対象のデータ列と過去に出現したパターンとが一致するデータ列の長さに係る情報と、に置き換えたものをシンボルと呼ぶ。例えば、シンボルは、過去に伸長されたデータ列が格納されているヒストリーバッファにおけるアドレスを示す「位置情報」と、当該アドレスに格納されたデータ列の先頭からのデータ数を示す「長さ情報」と、を含む。
また、「伸長済みデータ列」は、伸長実行部300の出力バッファ340から出力され、伸長回路40の出力端子42に出力されるデータ列、及びヒストリーバッファ100に書き込まれる又はヒストリーバッファ100から読み出されるデータ列を指す(図2参照)。また、「整形データ列」は、整形部によって整形された後であって、出力バッファに入力する前のデータ列を指す。なお、伸長済みデータ列のうち、ブロック内参照部330による処理が完了したデータ列、及び出力バッファ340から出力されたデータ列を伸長結果という場合がある。
また、伸長実行部300が、ヒストリーバッファ100から読み出されたデータ列を伸長して出力する期間を「1サイクル」という。ヒストリーバッファ読み出し制御部200がヒストリーバッファ100に読み出し要求を実行する処理、ヒストリーバッファ読み出し制御部200からの読み出し要求に応じて、ヒストリーバッファ100から読み出されたデータ列が伸長実行部300に入力される処理、及び伸長実行部300から出力された伸長結果をヒストリーバッファ100に書き戻す処理の各々の処理は、上記の1サイクルの期間で行われる。第1サイクル及び第2サイクルという場合、第2サイクルは第1サイクルの直後のサイクルであることを意味する。
<第1実施形態>
第1実施形態に係るメモリシステムについて説明する。第1実施形態に係るメモリシステムは、例えば、半導体記憶装置としてのNAND型フラッシュメモリと、当該NAND型フラッシュメモリを制御するメモリコントローラと、を含む。本実施形態において、メモリコントローラは、圧縮されたデータを伸長する機能を有する。
[メモリシステム1の全体構成]
図1は、一実施形態に係るメモリシステムの構成を説明するためのブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と、不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能である。図1では、メモリシステム1とホスト30とが接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の半導体記憶装置を用いることができる。不揮発性メモリ20が半導体記憶装置であることは必須ではなく、半導体記憶装置以外の種々の記憶媒体に対して本実施形態を適用することができる。
メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等であってもよく、SSD(Solid State Drive)等であってもよい。
メモリコントローラ10は、例えばSoC(System-On-a-Chip)として構成される半導体集積回路である。以下で説明するメモリコントローラ10の各構成要素の動作の一部又は全部はハードウエアで実現されるが、CPU(Central Processing Unit)がファームウエアを実行することによって実現されてもよい。
メモリコントローラ10は、ホスト30からの書き込み要求に従って不揮発性メモリ20への書き込みを制御し、ホスト30からの読み出し要求に従って不揮発性メモリ20からの読み出しを制御する。メモリコントローラ10は、プロセッサ11、RAM(Random Access Memory)12、ROM(Read Only Memory)13、ランダマイザ14、ECC回路15、圧縮・伸長回路(Compression/Decompression Circuit)16、ホストI/F(ホストインタフェース)17、及びメモリI/F(メモリインタフェース)18を備える。これらの機能ブロックは内部バス19で相互に接続されている。
圧縮・伸長回路16は、不揮発性メモリ20へ書き込むデータを圧縮する符号化器として動作する。また、圧縮・伸長回路16は、不揮発性メモリ20から読み出されたデータを伸長する復号器としても動作する。なお、圧縮・伸長回路16のより詳細な構成及び動作は後述する。
ホストI/F17は、ホスト30との間のインタフェース規格に従った処理を実行し、ホスト30から受信した要求、書き込み対象のデータなどを内部バス19に出力する。また、ホストI/F17は、不揮発性メモリ20から読み出され、圧縮・伸長回路16によって伸長されたデータ及びプロセッサ11からの応答などをホスト30へ送信する。
メモリI/F18は、プロセッサ11の指示に基づいて、不揮発性メモリ20への書き込み処理を行う。また、メモリI/F18は、プロセッサ11の指示に基づいて、不揮発性メモリ20からの読み出し処理を行う。
プロセッサ11は、メモリシステム1の各機能ブロックを統括的に制御する制御部である。プロセッサ11は、ホスト30からの要求をホストI/F17経由で受け付けた場合に、その要求に応じた制御を行う。例えば、プロセッサ11は、ホスト30からの書き込み要求に応じて、不揮発性メモリ20へのデータの書き込みをメモリI/F18へ指示する。また、プロセッサ11は、ホスト30からの読み出し要求に応じて、不揮発性メモリ20からのデータの読み出しをメモリI/F18へ指示する。
プロセッサ11は、ホスト30から書き込み要求を受信した場合、RAM12に保持されるデータに対して、不揮発性メモリ20上の格納領域(メモリ領域)を決定する。すなわち、プロセッサ11は、データの書き込み先を管理する。ホスト30から受信したデータの論理アドレスと当該データが格納された不揮発性メモリ20上の格納領域を示す物理アドレスとの対応はアドレス変換テーブルとして格納される。
プロセッサ11は、ホスト30から読み出し要求を受信した場合、読み出し要求により指定された論理アドレスを、上述のアドレス変換テーブルを用いて物理アドレスに変換し、当該物理アドレスからの読み出しをメモリI/F18へ指示する。
NANDメモリでは、一般に、ページと呼ばれるデータ単位で書き込み及び読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。同一のワード線に接続される複数のメモリセルをメモリセルグループという。メモリセルがSLC(Single Level Cell)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがMLCやTLCやQLCなどの多ビットセルである場合は、1つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続されるとともにビット線にも接続される。したがって、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
RAM12は、例えばデータバッファとして使用され、メモリコントローラ10がホスト30から受信したデータを不揮発性メモリ20へ記憶するまでに一時的に保持する。また、RAM12は、不揮発性メモリ20から読み出したデータをホスト30へ送信するまでに一時的に保持する。RAM12には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
RAM12は、アドレス変換テーブルや、起動時等に不揮発性メモリ20の特定の領域から読み出されて展開されるマスタテーブル(スナップショット)などの各種管理テーブルや、各種管理テーブルの変更差分であるログ情報などを記憶するワーキングメモリとして使用されてもよい。
ROM13は、メモリコントローラ10を動作させるための種々のプログラムやパラメータ等を記憶する。ROM13に格納されているプログラムやパラメータ等は、必要に応じてプロセッサ11に読み出されて実行される。
ランダマイザ14は、例えば線形帰還シフトレジスタ等を含んで構成され、入力されたシード値に対して一義的に求まる擬似乱数を生成する。ランダマイザ14で生成された擬似乱数は、例えばプロセッサ11において書き込みデータとの排他的論理和が取られる。これにより、不揮発性メモリ20に書き込まれる書き込みデータがランダマイズされる。
ホスト30から送信されるデータは、内部バス19に転送されてRAM12に一時的に保持された後、圧縮・伸長回路16によって圧縮され、さらに、ECC回路15により誤り訂正符号化され、その後、メモリI/F18を介して不揮発性メモリ20に書き込まれる。一方、不揮発性メモリ20から読み出されたデータは、ECC回路15により誤り訂正復号され、その後、圧縮・伸長回路16により伸長されることで、オリジナルのデータに復元される。復元されたデータは、例えばRAM12に一時的に保持された後、ホストI/F17を介してホスト30へ転送される。なお、圧縮・伸長回路16及び/又はECC回路15により符号化されるデータには、上記のデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
以上のような構成を備えるメモリシステム1における書き込み処理では、プロセッサ11は、不揮発性メモリ20への書き込み時に、圧縮・伸長回路16に対してデータの圧縮を指示する。その際、プロセッサ11は、不揮発性メモリ20における書き込みデータの格納場所(格納アドレス)を決定し、決定した格納場所をメモリI/F18へ指示する。圧縮・伸長回路16は、プロセッサ11からの指示に基づいて、RAM12上のデータを圧縮する。そして、ECC回路15は、プロセッサ11からの指示に基づいて、RAM12上の圧縮されたデータをさらにECC符号化する。これにより生成された書き込みデータは、メモリI/F18を介して不揮発性メモリ20の指定された格納場所に書き込まれる。なお、ECC回路15の符号化方式としては、例えば、LDPC(Low-Density Parity-Check)符号やBCH(Bose-Chaudhuri-Hocquenghem)符号やRS(Reed-Solomon)符号を用いた符号化方式を採用することができる。
一方、読み出し処理では、プロセッサ11は、不揮発性メモリ20からの読み出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F18へ読み出しを指示する。プロセッサ11は、ECC回路15へECC復号の開始を指示するとともに、圧縮・伸長回路16へ伸長の開始を指示する。メモリI/F18は、プロセッサ11の指示に従って、不揮発性メモリ20の指定されたアドレスに対する読み出しを実行し、この読み出しにより得られた読み出しデータをECC回路15に入力する。ECC回路15は入力された読み出しデータをECC復号化し、圧縮・伸長回路16はECC復号化されたデータを伸長する。この伸長に成功した場合、伸長されたオリジナルのデータをRAM12に格納する。一方、ECC復号化及び伸長に失敗した場合、プロセッサ11は、例えば、ホスト30へリードエラーを通知する。
[伸長回路40の構成]
圧縮・伸長回路16では、例えばLZ77圧縮など、データ列の類似性を利用した辞書式圧縮を用いた圧縮技術が用いられる。圧縮・伸長回路16に備えられた圧縮機能によって、圧縮対象のデータ列は、過去に入力された入力済みデータ列を参照する情報であるシンボルに圧縮される。そして、圧縮・伸長回路16に備えられた伸長機能によって、圧縮されたデータ列は、過去に伸長された伸長済みデータ列及び上記シンボルに基づいて伸長される。なお、上記のように、シンボルはヒストリーバッファ100におけるアドレスを示す「位置情報」と、当該アドレスに格納されたデータ列の先頭からのデータ数を示す「長さ情報」と、を含む。以下の説明では、圧縮・伸長回路16のうち伸長機能を有する伸長回路40について説明する。なお、圧縮・伸長回路16の圧縮機能を備える圧縮回路としては一般的な回路を用いることができるため、ここでは説明を省略する。
図2は、一実施形態に係る伸長回路の構成を説明するためのブロック図である。図2に示すように、伸長回路40は、ヒストリーバッファ100、ヒストリーバッファ読み出し制御部200、及び伸長実行部300を備える。伸長回路40は、入力端子41及び出力端子42を備える。伸長実行部300は、入力バッファ310、整形部320、ブロック内参照部330、及び出力バッファ340を備える。
ヒストリーバッファ100は、過去に伸長されたデータが書き込まれた(書き戻された)順に並べられた伸長済みデータ列を格納する。つまり、ヒストリーバッファ100には、伸長対象のデータ列が処理されるサイクルよりも前のサイクルで伸長された伸長済みデータ列が格納されている。ヒストリーバッファ100には、例えば数キロバイトから数十キロバイトの伸長済みデータが格納される。ヒストリーバッファ100はリングバッファポリシーに基づくフリップフロップ構成のバッファである。ヒストリーバッファ100は、バイト単位でアドレスを指定可能な構成を有し、複数の読み出し要求及び書き込み要求に対する処理を行うことができる。なお、ヒストリーバッファ100はSRAMを含んでもよい。
ヒストリーバッファ読み出し制御部200は、入力端子が伸長回路40の入力端子41に接続され、出力端子がヒストリーバッファ100の入力端子に接続された構成を有している。ヒストリーバッファ100は、入力端子がヒストリーバッファ読み出し制御部200の出力端子に加えて出力バッファ340の出力端子に接続され、出力端子が入力バッファ310の入力端子に接続された構成を有する。入力バッファ310は、出力端子が整形部320の入力端子に接続された構成を有する。整形部320は、入力端子が入力バッファ310の出力端子に加えて入力端子41に接続され、出力端子がブロック内参照部330の入力端子に接続された構成を有する。ブロック内参照部330は、入力端子が整形部320の出力端子に加えて入力端子41に接続され、出力端子が出力バッファ340の入力端子に接続された構成を有する。出力バッファ340は、出力端子がヒストリーバッファ100の入力端子に加えて出力端子42に接続された構成を有する。
ヒストリーバッファ読み出し制御部200には、入力端子41を介してシンボル(Symbol)が入力される。上記のように、シンボルは、既に伸長された伸長済みデータ列が格納されているヒストリーバッファ100におけるアドレスを示す位置情報(ref. dist.)及び当該アドレスに格納された伸長済みデータ列の先頭からのデータ数を示す長さ情報(length)を含む。入力端子41に入力されたシンボルは、ヒストリーバッファ読み出し制御部200、整形部320、及びブロック内参照部330に送信される。本実施形態では、ヒストリーバッファ読み出し制御部200には少なくとも位置情報が送信され、整形部320には少なくとも長さ情報が送信され、ブロック内参照部330には位置情報及び長さ情報の両方が送信される。ただし、上記の構成に限定されず、ヒストリーバッファ読み出し制御部200、整形部320、及びブロック内参照部330の各々に送信される情報は適宜調整することができる。
ヒストリーバッファ読み出し制御部200は、入力端子41からシンボルを受信すると、ヒストリーバッファ100に対して読み出し要求信号(Read Request)を送信する。当該読み出し要求信号は、シンボルに基づいて生成される信号であり、位置情報を含む信号である。つまり、ヒストリーバッファ読み出し制御部200は、ヒストリーバッファ100から、シンボルに含まれる位置情報に対応するヒストリーバッファ100のアドレスに格納された伸長済みデータ列を読み出す。
ヒストリーバッファ100は、ヒストリーバッファ読み出し制御部200からの要求によって読み出されたデータ(Read Data)を入力バッファ310に出力する。入力バッファ310は、ヒストリーバッファ100から読み出され、伸長実行部300に入力された伸長済みデータ列を一時的に格納する。本実施形態では、読み出しデータが、ヒストリーバッファ100から入力バッファ310に直接送信される構成を例示したが、この構成に限定されない。例えば、読み出しデータはヒストリーバッファ読み出し制御部200を介して入力バッファ310に送信されてもよい。なお、読み出しデータはヒストリーバッファ100に格納されていたデータなので、読み出しデータによって構成されたデータ列は伸長済みデータ列ということができる。入力バッファ310は、例えばフリップフロップ構成のバッファである。なお、入力バッファ310はSRAMを含んでもよい。
整形部320は、シンボルに含まれる長さ情報に基づいて、入力バッファ310に格納された伸長済みデータ列の一部を切り出してブロック内参照部330に転送する。上記のように、入力バッファ310に格納されたデータ列は、位置情報に対応するアドレスのデータ列なので、入力バッファ310に格納されたデータ列は、シンボルによって指定されるデータ列と少なくとも先頭から数データが一致している。上記長さ情報は、この一致するデータの長さを示す情報である。整形部320によって切り出して転送されたデータ列を整形データ列ということができる。また、整形部320が入力バッファ310に格納された伸長済みデータ列を切り出して、他の回路又は機能部に転送することを、データ列を整形するということができる。上記の構成を換言すると、整形部320は、ヒストリーバッファ100から読み出された伸長済みデータ列に基づいて整形データ列を生成する。
ブロック内参照部330は、上記の整形データ列がヒストリーバッファ100に書き戻される前に、当該整形データ列(第1整形データ列)を参照して当該第1整形データ列よりも後の第2整形データ列を生成する。換言すると、ブロック内参照部330は、整形部320によって生成された第1整形データ列に基づく伸長済みデータ列が出力バッファ340から出力される前に、第1整形データ列を参照して第2整形データ列を生成する。そして、ブロック内参照部330は、第1整形データ列及び前記第2整形データ列を含む伸長結果を生成し、出力バッファ340に送信する。出力バッファ340は、伸長結果を一時的に格納する。なお、ブロック内参照部330は、受信したシンボルに含まれる位置情報及び長さ情報に基づいて、先に生成された第1整形データ列を参照すべきデータ列の有無を判断する。出力バッファ340は、例えばフリップフロップ構成のバッファである。なお、出力バッファ340はSRAMを含んでもよい。
ブロック内参照部330は、既に整形された第1整形データ列を参照して生成すべきデータ列がある(つまり、第1整形データ列と同一のデータ列が存在する)と判断した場合に、ヒストリーバッファ100からデータを読み出すのではなく、上記のように第1整形データ列を参照して第2整形データ列を生成する。ブロック内参照部330によって生成されたデータ列は出力バッファ340に送信される。なお、ブロック内参照部330は、第1整形データ列を参照すべきデータ列がないと判断した場合、整形部320によって生成された整形データ列をそのまま出力バッファ340に送信する。
そして、出力バッファ340に格納された第1整形データ列及び第2整形データ列は、伸長結果として出力端子42に出力(Decode Output)され、当該伸長結果(又は、伸長済みデータ列)はヒストリーバッファ100に書き込まれる。つまり、出力バッファ340は、ヒストリーバッファ100に書き込みデータ(Write Data)を送信する。上記の構成を換言すると、伸長実行部300は、第1整形データ列及び第2整形データ列を用いて伸長結果を生成し、当該伸長結果をヒストリーバッファ100に書き戻す。なお、書き戻すとは、伸長回路40の入力端子41に入力されたシンボルに基づいて出力された伸長結果をヒストリーバッファ100に書き込むことを意味する。
上記のように、伸長実行部300は、1サイクル内において、ヒストリーバッファ100から読み出されて整形された第1整形データ列を参照して、第1整形データ列と同一のデータ列である第2整形データ列を生成する。換言すると、伸長実行部300は、1サイクル内において、上記第1整形データ列を複製して第2整形データ列を生成する。
[ブロック内参照部330の構成]
図3は、一実施形態に係る伸長回路のブロック内参照部の構成を説明するためのブロック図である。図3に示すように、ブロック内参照部330は、ブロック内参照実行部331及びブロック内参照位置算出部332を有する。
ブロック内参照実行部331は、入力ポート333、出力ポート334、及びマルチプレクサ335を有する。入力ポート333には整形部320から出力された整形データ列が入力される。出力ポート334には、ブロック内参照部330によって生成され、出力バッファ340に送信されるデータ列が出力される。本実施形態では、入力ポート333の数は出力ポート334の数と同じだが、入力ポート333の数が出力ポート334の数より少なくてもよく、多くてもよい。また、本実施形態では、入力ポート333及び出力ポート334の各々の数は出力バッファ340のデータ数と同じ場合について説明するが、入力ポート333及び出力ポート334の各々の数が出力バッファ340のデータ数より少なくてもよく、多くてもよい。
以下の説明において、入力ポート333の1列目、2列目、・・・、n列目を入力ポート333-1、333-2、・・・、333-nという。ただし、入力ポート333の各々を特に区別する必要がない場合、単に入力ポート333という。出力ポート334の1列目、2列目、・・・、n列目を出力ポート334-1、334-2、・・・、334-nという。ただし、出力ポート334の各々を特に区別する必要がない場合、単に出力ポート334という。マルチプレクサ335の2列目、3列目、・・・、n列目をマルチプレクサ335-2、335-3、・・・、335-nという。ただし、マルチプレクサ335の各々を特に区別する必要がない場合、単にマルチプレクサ335という。
マルチプレクサ335は入力ポート333と出力ポート334との間に設けられている。マルチプレクサ335は、1列目の入力ポート333-1と1列目の出力ポート334-1とを結ぶライン上を除く、n列目の入力ポート333-nとn列目の出力ポート334-nとを結ぶライン上に設けられている。また、各マルチプレクサ335は、マルチプレクサ335が設けられた列よりも前の列のマルチプレクサ335の出力ラインに接続されている。例えば、4列目のマルチプレクサ335-4の入力端子には、1列目の入力ポート333-1、4列目の入力ポート333-4、及び2列目~3列目のマルチプレクサ335-2~335-3の出力ラインが接続されている。換言すると、n列目のマルチプレクサ335-nの入力端子には、1列目の入力ポート333-1、n列目の入力ポート333-n、及び2列目~(n-1)列目のマルチプレクサ335-2~335-(n-1)が接続されている。つまり、出力ポート334において先行して出力されたデータを出力ポート334の後続の出力データとして用いることができる。
ブロック内参照位置算出部332は、マルチプレクサ335-2~335-nに接続されており、これらのマルチプレクサを制御する。この制御によって、n列目の出力ポート334-nに、1列目~(n-1)列目の入力ポート333のデータを複製することができる。例えば、3列目のマルチプレクサ335-3の入力端子は1列目の入力ポート333-1及び3列目の入力ポート333-3、並びに2列目のマルチプレクサ335-2の出力ラインに接続されている。よって、3列目の出力ポート334-3には1列目の入力ポート333-1、3列目の入力ポート333-3、又は2列目の出力ポート334-2において先行して出力されたデータが出力される。
上記のように、ブロック内参照実行部331は、先行して整形された第1整形データ列を参照して第2整形データ列を生成する。ブロック内参照位置算出部332は、参照される第1整形データ列の位置及び長さを決定する。換言すると、ブロック内参照位置算出部332によって、複製される第1整形データ列が指定される。
[ブロック内参照部330の伸長動作]
図4は、一実施形態に係る伸長回路の伸長動作を説明するための概念図である。図4の伸長動作は、図3のブロック内参照部330を用いて行われる。図4では、整形データ列「abcd」を示すシンボルA~Cを含む伸長結果(Decode Data)を出力するケースが例示されている。データ列「abcd」は、ヒストリーバッファ100に格納された入力済みデータ列及び整形データ列の両方に含まれている。図4に示すように、シンボルA~Cに基づいて整形された3つの整形データ列は1サイクルで整形される。つまり、同一サイクルに、同一の整形データ列「abcd」が複数存在している。
シンボルAの(位置情報,長さ情報)は(Da,La)である。位置情報Daは、シンボルAの位置を基準として、ヒストリーバッファに格納されているデータ列「abcd」の先頭のデータ「a」までの距離を示す情報である。長さ情報Laは、データ「a」からデータ「d」までのデータ数を示す情報である。シンボルBの(位置情報,長さ情報)は(Db,Lb)である。位置情報Dbは、シンボルBの位置を基準として、シンボルAに基づいて生成されたデータ列「abcd」の先頭のデータ「a」までの距離を示す情報である。長さ情報Lbは、シンボルAに基づいて生成されたデータ列「abcd」のデータ「a」からデータ「d」までのデータ数を示す情報である。シンボルCの(位置情報,長さ情報)は(Dc,Lc)である。位置情報Dcは、シンボルCの位置を基準として、シンボルBに基づいて生成されたデータ列「abcd」の先頭のデータ「a」までの距離を示す情報である。長さ情報Lcは、シンボルBに基づいて生成されたデータ列「abcd」のデータ「a」からデータ「d」までのデータ数を示す情報である。
ヒストリーバッファに格納されているデータ列「abcd」を用いてシンボルAを伸長する方法は従来の方法と同じなので、説明を省略する。シンボルAに基づいて生成されたデータ列「abcd」を用いたシンボルBの伸長は、図3に示すブロック内参照部330によって行われる。具体的には、図3のマルチプレクサ335のうち、シンボルBのデータ位置に対応するj列目の出力ポート334-jに対して設けられたj列目のマルチプレクサ335-jを制御することで、位置情報Db及び長さ情報Lbに対応するk列目の出力ポート334-kに出力されるデータが複製されて、j列目の出力ポート334-jに出力される。なお、j及びkは1以上n以下の整数である。また、シンボルBに基づいて生成されたデータ列「abcd」を用いたシンボルCの伸長も上記と同様の方法で行われる。上記の方法によって、シンボルA~Cの各々に基づいて生成されたデータ列を含む伸長結果が生成される。
シンボルAに基づいて整形されたデータ列を第1整形データ列、シンボルBに基づいて整形されたデータ列を第2整形データ列、シンボルCに基づいて整形されたデータ列を第3整形データ列として、上記の構成を以下のように換言することができる。ブロック内参照部330は、第1整形データ列をヒストリーバッファ100に書き戻す前に、第1整形データ列を参照して第2整形データ列を生成する。さらに、ブロック内参照部330は、ヒストリーバッファ100に第1整形データ列及び第2整形データ列を書き戻す前に、第2整形データ列を参照して第3整形データ列を生成する。上記のようにして、ブロック内参照部330は、第1整形データ列、第2整形データ列、及び第3整形データ列を用いて伸長結果を生成する。
従来の伸長方法では、シンボルに基づく整形データ列の整形(又はシンボルに基づく伸長)を行うためには、過去に伸長された伸長済みデータ列がヒストリーバッファに書き込まれている必要があった。つまり、伸長処理に利用することができる伸長済みデータ列は、伸長処理を行うサイクルよりも前のサイクルで伸長されている必要があった。したがって、同一サイクルの中に参照したいデータ列があるような場合であっても、同一サイクルの中のデータ列を参照して伸長を行うことはできなかった。また、同一サイクルの中に同一のデータ列が存在している場合であっても、そのデータ列を整形する度にヒストリーバッファからデータ列を読み出す必要があった。
一方、第1実施形態に係るメモリシステム1によると、同一サイクルにおいて、先行して整形されたデータ列を参照して後続のシンボルを整形することができる。したがって、同一サイクルの中に同一のデータ列が存在する場合、ヒストリーバッファ100からデータ列を読み出すことなく、先行して整形されたデータ列を複製することで後続のシンボルを整形することができる。その結果、圧縮・伸長回路16における伸長回路40の伸長性能を向上させることができる。
<第2実施形態>
第2実施形態では、第1実施形態におけるブロック内参照部330と類似した構成のブロック内参照部330Aについて説明する。図5は、一実施形態に係る伸長回路のブロック内参照部の構成を説明するためのブロック図である。図5に示すブロック内参照部330Aは、図3に示すブロック内参照部330に類似しているが、ブロック内参照実行部331Aの構成が図3のブロック内参照実行部331と相違する。以下の説明において、図3の構成と同様の構成については説明を省略し、主に図3の構成と相違する点について説明する。
[ブロック内参照部330Aの構成]
図5に示すように、各マルチプレクサ335Aは、マルチプレクサ335Aが設けられた列の入力ポート333A、及びそれよりも前の列の入力ポート333Aに接続されている。図3に示すマルチプレクサ(例えば、マルチプレクサ335-4)の入力端子が、他のマルチプレクサ(例えば、マルチプレクサ335-2及び335-3)の出力端子に接続されているのに対して、図5に示すマルチプレクサ(例えば、マルチプレクサ335A-3)の入力端子は全て入力ポート(例えば、入力ポート333A-1~3)に接続されている。例えば、3列目のマルチプレクサ335A-3の入力端子には、1列目~3列目の入力ポート333A-1~333A-3が接続されている。換言すると、n列目のマルチプレクサ335A-nの入力端子には、1列目~n列目の入力ポート333A-1~333A-nが接続されている。つまり、入力ポート333Aに入力されるある列のデータを出力ポート334Aに出力される複数の出力データとして用いることができる。
[ブロック内参照部330Aの伸長動作]
図6は、一実施形態に係る伸長回路の伸長動作を説明するための概念図である。図6の伸長動作は、図5のブロック内参照部330Aを用いて行われる。図6に示す構成は図4に示す構成に類似しているため、以下の説明において、図4の構成と同様の構成については説明を省略し、主に図4の構成と相違する点について説明する。
図6に示すように、シンボルAに基づいて生成されたデータ列「abcd」を用いたシンボルBの伸長は、図5に示すブロック内参照部330Aによって行われる。具体的には、図5のマルチプレクサ335Aのうち、シンボルBのデータ位置に対応するj列目の出力ポート334A-jに対して設けられたj列目のマルチプレクサ335A-j、及びシンボルCのデータ位置に対応するk列目の出力ポート334A-kの列に対して設けられたk列目のマルチプレクサ335A-kを制御することで、位置情報Db及び長さ情報Lbに対応する入力ポート333A、及び位置情報Dc及び長さ情報Lcに対応する入力ポート333Aのデータが複製されて、それぞれの出力ポート334Aに出力される。なお、j及びkは1以上n以下の整数である。上記の方法によって、シンボルA~Cの各々に基づいて生成されたデータ列を含む伸長結果が生成される。
シンボルAに基づいて整形されたデータ列を第1整形データ列、シンボルBに基づいて整形されたデータ列を第2整形データ列、シンボルCに基づいて整形されたデータ列を第3整形データ列として、上記の構成を以下のように換言することができる。ブロック内参照部330Aは、第1整形データ列をヒストリーバッファ100に書き戻す前に、第1整形データ列を参照して第2整形データ列及び第3整形データ列を生成する。上記のようにして、ブロック内参照部330Aは、第1整形データ列、第2整形データ列、及び第3整形データ列を用いて伸長結果を生成する。
以上のように、第2実施形態に係るメモリシステム1Aによると、第1実施形態に係るメモリシステム1と同様の効果を得ることができる。
<第3実施形態>
第3実施形態では、第1実施形態におけるブロック内参照部330と類似した構成のブロック内参照部330Bについて説明する。図7は、一実施形態に係る伸長回路のブロック内参照部の構成を説明するためのブロック図である。図7に示すブロック内参照部330Bは、図3に示すブロック内参照部330に類似しているが、ブロック内参照実行部331Bの構成が図3のブロック内参照実行部331と相違する。以下の説明において、図3の構成と同様の構成については説明を省略し、主に図3の構成と相違する点について説明する。
[ブロック内参照部330Bの構成]
図7に示すように、ブロック内参照実行部331Bは、入力ポート333B及び出力ポート334Bに加えて余剰入力ポート336B及び余剰出力ポート337Bを有する。余剰入力ポート336Bは入力ポート333Bに隣接して設けられている。換言すると、余剰入力ポート336Bは、入力ポート333Bの延長部分である。つまり、入力ポート333B及び余剰入力ポート336Bは連続した一連の入力ポートを構成する。余剰出力ポート337Bは出力ポート334Bに隣接して設けられている。換言すると、余剰出力ポート337Bは、出力ポート334Bの延長部分である。つまり、出力ポート334B及び余剰出力ポート337Bは連続した一連の出力ポートを構成する。余剰入力ポート336Bと余剰出力ポート337Bとの間にもマルチプレクサ338B-pが設けられている。なお、pはnよりも大きい整数である。マルチプレクサ338B-pは、入力ポート333Bと出力ポート334Bとの間のマルチプレクサ335Bと同様の構成を有する。つまり、p列目のマルチプレクサ338B-pの入力端子には、1列目の入力ポート333B-1、2列目~n列目のマルチプレクサ335B-2~335B-n、及び(n+1)列目~(p-1)列目のマルチプレクサ338B-(n+1)~338B-(p-1)が接続されている。入力ポート333B及び出力ポート334Bの数は、出力バッファ340Bのデータ数と同じである。
[ブロック内参照部330Bの伸長動作]
伸長結果のデータ数が出力バッファ340Bのデータ数と同じ又は出力バッファ340Bのデータ数より少ない場合、入力ポート333Bと出力ポート334Bとの間だけでデータの送受信が行われる。一方、伸長結果のデータ数が出力バッファ340Bのデータ数より多い場合に、入力ポート333B及び余剰入力ポート336Bと出力ポート334B及び余剰出力ポート337Bとの間のデータの送受信が行われる。
例えば、1サイクルで伸長処理されるバイト数が10バイトである場合、出力バッファ340Bは10バイト(データ数が10)で構成される。この構成の場合、入力ポート333B及び出力ポート334Bの各々のデータ数も10である。上記の場合において、1サイクルの後半又は最後のデータに伸長が必要なデータが存在すると、伸長結果は10バイトを超える場合がある。このような場合、入力ポート333B及び出力ポート334Bの各々の数が伸長結果のデータ数に対して不足するため、入力ポート333Bと出力ポート334Bとの間のデータの送受信だけでは全ての伸長結果を出力バッファ340Bに出力することができない。この不足分を補うために、余剰入力ポート336Bと余剰出力ポート337Bとの間のデータの送受信が行われる。
図8は、一実施形態に係る伸長回路の伸長動作を説明するための概念図である。図8の伸長動作は、図7のブロック内参照部330Bによって実現される。図8では、整形データ列「hij・・・abcdefghij」を示すシンボルDを含む伸長結果を出力するケースが例示されている。ヒストリーバッファ100の最後尾にデータ列「abcdefg」が格納されている。上記整形データ列のうち、データ列「hij・・・ab」は出力ポート334Bに格納され、データ列「cdefghij」は余剰出力ポート337Bに格納される。つまり、シンボルDが出力ポート334Bの後半に存在しているため、整形データ列のデータ数が出力ポート334Bのデータ数を超え、超えた部分が余剰出力ポート337Bに格納される。ここで、出力バッファ340Bのデータ数を超えない分のデータ列であり、出力ポート334Bに格納されるデータ列を「第1伸長データ」といい、出力バッファ340Bのデータ数を超えた分のデータ列を「第2伸長データ」という。本実施形態では、第1伸長データが入力バッファ310Bから出力バッファ340Bに送信された後に、1サイクル以上後に第2伸長データが入力バッファ310Bから出力バッファ340Bに送信される。そして、第1伸長データ及び第2伸長データが結合されることで、伸長結果が生成される。
整形データ列のうちデータ列「abcdefg」は、ヒストリーバッファに格納されているデータ列「abcdefg」を用いて整形される。整形データ列のうちデータ列「hij」は、図7に示すブロック内参照部330Bによって整形される。具体的には、図7のマルチプレクサ335Bのうち、データ列「hij」の位置に対応するr列目の余剰出力ポート337Bの列に対して設けられたr列目のマルチプレクサ335B-rを制御することで、位置情報Dd及び長さ情報Ldに対応するr列目の出力ポート334B-rのデータが複製されて、s列目の余剰出力ポート337B-sに出力される。なお、rは1以上n以下の整数である。sは(n+1)以上p以下の整数である。
以上のように、第3実施形態に係るメモリシステム1Bによると、伸長結果のデータ数が出力バッファ340Bのデータ数を超える場合であっても、ヒストリーバッファ100Bに書き戻される前の整形データ列を参照して整形を行うことができる。その結果、圧縮・伸長回路16Bにおける伸長回路40Bの伸長性能を向上させることができる。
<第4実施形態>
第4実施形態では、第1実施形態における伸長実行部300と類似した構成の伸長実行部300Cについて説明する。図9は、一実施形態に係る伸長回路の構成を説明するためのブロック図である。図9に示す伸長実行部300Cは、図2に示す伸長実行部300に類似しているが、図2のブロック内参照部330の代わりに、整形データ列のバイパスラインが設けられている点において、伸長実行部300と相違する。以下の説明において、図2の構成と同様の構成については説明を省略し、主に図2の構成と相違する点について説明する。
図9に示すように、伸長回路40Cの伸長実行部300Cは、入力バッファ310C、整形部320C、出力バッファ340C、マルチプレクサ350C、第1バイパスライン360C、及び第2バイパスライン370Cを備える。マルチプレクサ350C、第1バイパスライン360C、及び第2バイパスライン370Cを併せて「バイパス実行部」という場合がある。マルチプレクサ350Cの入力端子には、ヒストリーバッファ100Cの出力端子、第1バイパスライン360C、及び第2バイパスライン370Cが接続されている。マルチプレクサ350Cの出力端子は入力バッファ310Cの入力端子に接続されている。第1バイパスライン360Cは整形部320Cと出力バッファ340Cとの間のライン(又は、出力バッファ340Cの入力端子)に接続されている。第2バイパスライン370Cは出力バッファ340Cと出力端子42Cとの間のライン(又は、出力バッファ340Cの出力端子)、及びヒストリーバッファ100Cの入力端子に接続されている。
マルチプレクサ350Cは、入力端子41Cに入力されたシンボルに含まれる位置情報及び長さ情報に基づいて制御される。つまり、マルチプレクサ350Cは、当該位置情報及び長さ情報に基づいて、
(1)ヒストリーバッファ100Cから読み出された伸長済みデータ列
(2)整形部320Cによって整形された直後の(出力バッファ340Cに入力される)整形データ列
(3)ヒストリーバッファ100Cに書き込まれる(出力バッファ340Cから出力される)伸長済みデータ列
のいずれかのデータ列を選択して、入力バッファ310Cに送信する。
[伸長実行部300Cの伸長動作]
図10は、一実施形態に係る伸長回路の伸長動作を説明するための概念図である。図10の(A)は第4実施形態に係る伸長実行部300Cの伸長動作を説明する図であり、図10の(B)は比較例に係る伸長回路の伸長動作を説明する図である。図10の(A)及び(B)において、縦に並んだ数値は伸長対象(Decode Target)を特定する番号であり、横に並んだ数値はサイクルの順番を意味する。図10の(A)及び(B)では、3番目の伸長対象のシンボルが1番目の伸長対象において出力される伸長済みデータ列を参照し、4番目の伸長対象のシンボルが3番目の伸長対象において出力される伸長済みデータ列を参照するケースを示す。
図10において、「REQ」、「RD」、「EX」、又は「WB」と記載された枠(ステージ)は、各サイクル(Cycle)における処理内容を示す。つまり、各ステージの処理は1つのサイクルで実行され、横方向に隣接するステージの処理は異なるサイクルで実行される。図10の(A)及び(B)ともに1番目~4番目の4つの伸長対象の動作が示されている。図10の(A)では、第1サイクル~第7サイクルの7のサイクルの動作が示されている。図10の(B)では、第1サイクル~第10サイクルの10のサイクルの動作が示されている。異なる伸長対象であっても同一のサイクルに属する処理内容は同じタイミングで実行される。例えば、1番目の伸長対象の「RD」及び2番目の伸長対象の「REQ」は同じサイクル(ここでは第2サイクル)で実行される。
「REQ」では、ヒストリーバッファへの読み出し要求をする処理が実行される。「RD」では、ヒストリーバッファから読み出したデータ列を入力バッファに格納する処理が実行される。「EX」では、入力バッファに格納されたデータ列の一部を切り出して整形データ列を生成する処理が実行される。「WB」では、伸長結果として生成された伸長済みデータ列をヒストリーバッファに書き戻す処理が実行される。
図10の(B)に示すように、比較例に係る伸長回路では、整形データ列を生成する際に、参照する対象のデータ列がヒストリーバッファに書き込まれている必要がある。したがって、3番目の伸長対象の「REQ」(第3サイクル)に応じて「RD」(第5サイクル)を実行する際に、読み出し対象である1番目の伸長対象の「WB」(第4サイクル)が完了するまで待機(Stall)(第4サイクル)する必要がある。また、4番目の伸長対象の「REQ」(第5サイクル)に応じて「RD」(第8サイクル)を実行する際に、読み出し対象である3番目の伸長対象の「WB」(第7サイクル)が完了するまで待機(Stall)(第6~7サイクル)する必要がある。このStallの影響によって、1番目~4番目の伸長対象に対する伸長処理が完了するまでに10サイクルが必要である。
一方、図9に示すように、本実施形態に係る伸長実行部300Cでは、第2バイパスライン370C及びマルチプレクサ350Cを介して「WB」のステージで生成された伸長済みデータ列を入力バッファ310Cに格納することができる。したがって、図10(A)に示すように、3番目の伸長対象の「RD」を1番目の伸長対象の「WB」と同じ第4サイクルで実行することができる。また、図9に示すように、第1バイパスライン360C及びマルチプレクサ350Cを介して「EX」のステージで生成された整形データ列を入力バッファ310Cに格納することができる。したがって、図10(A)に示すように、4番目の伸長対象の「RD」を3番目の伸長対象の「EX」と同じ第5サイクルで実行することができる。その結果、図10(B)のようにStallを発生させることなく処理を実行することができるため、7サイクルで1番目~4番目の伸長対象に対する伸長処理を完了することができる。
図10(A)において、3番目の伸長対象の「EX」のサイクルで生成される整形データ列を第1整形データ列、4番目の伸長対象の「EX」のサイクルで生成される整形データ列を第2整形データ列として、上記の構成を以下のように換言することができる。バイパス実行部(マルチプレクサ350C及び第1バイパスライン360C)は、3番目の伸長対象の「EX」のサイクルにおいて第1整形データ列が生成された後に、4番目の伸長対象の「EX」のサイクルにおいて第2整形データ列が生成される場合において、第2整形データ列のデータが第1整形データ列のデータと同一の場合、整形部320Cによって生成された後であって出力バッファ340Cによって出力される前の第1整形データ列を、整形部320Cとヒストリーバッファ100Cとの間のマルチプレクサ350Cに送信する。なお、本実施形態では、第1バイパスライン360C及び第2バイパスライン370Cがマルチプレクサ350Cに接続された構成を例示したが、これらのバイパスラインは入力バッファ310Cに接続されてもよく、整形部320Cとヒストリーバッファ100Cとの間に設けられた上記以外の回路に接続されてもよい。
また、バイパス実行部(マルチプレクサ350C及び第2バイパスライン370C)は、1番目の伸長対象の「WB」のサイクルにおいて伸長済みデータ列が生成された後に、3番目の伸長対象の「EX」のサイクルにおいて整形データ列が生成される場合において、当該整形データ列のデータが上記伸長済みデータ列のデータと同一の場合、出力バッファ340Cから出力され、ヒストリーバッファに書き込まれる前の伸長済みデータ列を整形部320Cの前のマルチプレクサ350Cに送信する。
以上のように、第4実施形態に係るメモリシステム1Cによると、整形部320Cによって生成された直後の整形データ列及び出力バッファ340Cによって出力され、ヒストリーバッファに書き戻される前の伸長済みデータ列を選択的に利用して、整形データ列を生成することができる。その結果、圧縮・伸長回路16Cにおける伸長回路40Cの伸長性能を向上させることができる。
<第5実施形態>
第5実施形態では、第4実施形態における伸長実行部300Cと類似した構成の伸長実行部300Dについて説明する。図11は、一実施形態に係る伸長回路の構成を説明するためのブロック図である。図11に示す伸長実行部300Dは、図9に示す伸長実行部300Cに類似しているが、図9の伸長実行部300Cに対して図2のブロック内参照部330に相当する構成が追加されている点、及び出力バッファ340Dに余剰出力バッファ345Dが追加されている点において、伸長実行部300Cと相違する。以下の説明において、図2及び図9の構成と同様の構成については説明を省略し、主に図2及び図9の構成と相違する点について説明する。
[伸長実行部300Dの構成]
図11に示すように、整形部320Dと第1バイパスライン360Dとの間にブロック内参照部330Dが設けられている。第1バイパスライン360Dはブロック内参照部330Dと出力バッファ340Dとの間のラインに接続されている。ブロック内参照部330Dの構成は、図2のブロック内参照部330の構成と同じである。また、出力バッファ340Dに隣接して余剰出力バッファ345Dが設けられている。余剰出力バッファ345Dは出力バッファ340Dの延長部分である。つまり、出力バッファ340D及び余剰出力バッファ345Dは連続した一連のバッファを構成する。余剰出力バッファ345Dの入力端子には整形部320Dの出力端子が接続されている。余剰出力バッファ345Dの出力端子は整形部320Dの入力端子に接続されている。つまり、整形部320Dで整形された一部の整形データ列は、余剰出力バッファ345Dを介して整形部320Dに戻される。具体的には、整形部320Dで整形された整形データ列(又は伸長結果)が出力バッファ340Dのデータ数を超える場合、出力バッファ340Dのデータ数を超えない分のデータ列(第1伸長データ)は出力バッファ340Dに格納され、出力バッファ340Dのデータ数を超えた分のデータ列(第2伸長データ)は余剰出力バッファ345Dを介して整形部320Dに戻される。以下、第2伸長データ列を余剰データ列という場合がある。なお、上記の第1整形データ列(参照されるデータ列)は第1伸長データに含まれる。また、上記の第2整形データ列(第1整形データ列を参照するデータ列)は第2伸長データに含まれる。
図12は、一実施形態に係る伸長回路の伸長実行部の構成を説明するためのブロック図である。図12に示すように、マルチプレクサ350Dから出力されたデータ列は入力バッファ310Dを介して整形部320Dに入力される。ここで、整形部320Dから出力されるデータ数が出力バッファ340Dのデータ数と同じ又は出力バッファ340Dのデータ数よりも少ない場合、整形部320Dから出力される整形データ列は全てブロック内参照部330Dに入力され、当該整形データ列に基づいて伸長結果が生成される。
一方、整形部320Dから出力されるデータ数が出力バッファ340Dのデータ数よりも多い場合、整形データ列のうちの後半のデータ列であって、出力バッファ340Dのデータ数を超える部分の余剰データ列は、余剰出力バッファ345Dに送信される。そして、余剰出力バッファ345Dに送信された余剰データ列は、上記の余剰データ列が余剰出力バッファ345Dに入力されたサイクルの次のサイクルで整形部320Dに戻される。整形部320Dに戻された余剰データ列は、ブロック内参照部330Dに入力され、当該余剰データ列に基づいて伸長結果が生成される。
[伸長実行部300Dの伸長動作]
図13は、一実施形態に係る伸長回路の伸長動作を説明するための概念図である。図13の伸長動作は、図11及び図12の伸長実行部300Dによって実現される。図13の伸長動作は、図8の伸長動作と類似しているが、図8では、整形データ列「abcdefghij」が1つのシンボルDとして表現されていたのに対して、図13では、整形データ列「abcdefghij」がシンボルE及びシンボルFの2つのシンボルによって表現されている点において、両者は相違する。具体的には、本実施形態では整形データ列「abcdefghij」をヒストリーバッファ100Dから読み出す処理が2回に分割して行われる。
図13のデータ列「hij・・・abcdefg」は、第1サイクルで整形部320Dに入力される。上記データ列のうちシンボルEに基づくデータ列「abcdefg」はヒストリーバッファ100Dから読み出される。整形部320Dに入力されたデータ列「hij・・・abcdefg」のうち、出力バッファ340Dのデータ数と同じデータ数のデータ列「hij・・・ab」がブロック内参照部330Dを介して出力バッファ340Dに送信される。一方、整形部320Dに入力されたデータ列「hij・・・abcdefg」のうち、後続のデータ列「cdefg」は、整形部320Dから余剰出力バッファ345Dに送信される。
余剰出力バッファ345Dに格納されたデータ列「cdefg」は、第1サイクルの次の第2サイクルで整形部320Dに戻される。当該第2サイクルでは、図13のシンボルFに基づくデータ列「hij」が整形部320Dに入力される。当該データ列「hij」は、第1サイクルでブロック内参照部330D又は出力バッファ340Dから出力されたデータ列「hij」が第1バイパスライン360D又は第2バイパスライン370Dを介してマルチプレクサ350Dに送信されたものである。上記のように、余剰出力バッファ345Dから戻されたデータ列「cdefg」及びマルチプレクサ350Dから入力バッファ310Dを介して整形部320Dに入力されたデータ列「hij」は、第2サイクルでブロック内参照部330Dを介して出力バッファ340Dに送信される。
上記の構成を換言すると、整形データ列のうちシンボルEに対応するデータ列「abcdefg」は、ヒストリーバッファに格納されているデータ列「abcdefg」を用いて伸長される。整形データ列のうちシンボルFに対応するデータ列「hij」の伸長は、データ列「abcdefg」の伸長の後に行われる。具体的には、データ列「hij」の伸長は、データ列「abcdefg」の伸長の少なくとも1サイクル後のサイクルで行われる。つまり、データ列「cdefghij」(余剰データ列又は第2伸長データ列)のうちデータ列「hij」(第2整形データ列)に対する読み出し要求を、データ列「cdefghij」のうちデータ列「hij」以外のデータ(データ列「cdefg」)に対する読み出し要求の終了後に行う。
例えば図11に示すような回路では、入力バッファ310Dから出力されたデータが整形部320D、ブロック内参照部330D、第1バイパスライン360D、及びマルチプレクサ350Dを介して入力バッファ310Dに入力されるパスが各サイクルにおいて最も時間を要するパスである。このパスのデータの移動が完了しないと次のサイクルに進むことができないため、このようなパスの処理が完了する時間が処理時間の律速になる。このようなパスをクリティカルパスという。
図11に示すような回路において、例えば図8に示すような処理を行おうとすると、最後のデータ列「hij」を生成するためには上記のクリティカルパスが発生してしまう。一方、図13に示すような処理を行うと、上記のクリティカルパスが発生することを抑制することができる。その結果、圧縮・伸長回路16Dにおける伸長回路40Dの伸長性能を向上させることができる。
以上、本発明について図面を参照しながら説明したが、本発明は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本実施形態の圧縮・伸長回路を基にして、当業者が適宜構成要素の追加、削除もしくは設計変更を行ったものも、本発明の要旨を備えている限り、本発明の範囲に含まれる。さらに、上述した各実施形態は、相互に矛盾がない限り適宜組み合わせが可能であり、各実施形態に共通する技術事項については、明示の記載がなくても各実施形態に含まれる。
上述した各実施形態の態様によりもたらされる作用効果とは異なる他の作用効果であっても、本明細書の記載から明らかなもの、又は、当業者において容易に予測し得るものについては、当然に本発明によりもたらされるものと解される。
1:メモリシステム、 10:メモリコントローラ、 11:プロセッサ、 12:RAM、 13:ROM、 14:ランダマイザ、 15:ECC回路、 16:圧縮・伸長回路、 17:ホストI/F、 18:メモリI/F、 19:内部バス、 20:不揮発性メモリ、 30:ホスト、 40:伸長回路、 41:入力端子、 42:出力端子、 100:ヒストリーバッファ、 200:制御部、 300:伸長実行部、 310:入力バッファ、 320:整形部、 330:ブロック内参照部、 331:ブロック内参照実行部、 332:ブロック内参照位置算出部、 333:入力ポート、 334:出力ポート、 335:マルチプレクサ、 336B:余剰入力ポート、 337B:余剰出力ポート、 338B:マルチプレクサ、 340:出力バッファ、 345D:余剰出力バッファ、 350C:マルチプレクサ、 360C:第1バイパスライン、 370C:第2バイパスライン

Claims (5)

  1. 記憶装置と、前記記憶装置を制御し且つ圧縮されたデータを伸長するメモリコントローラと、を備えるメモリシステムであって、
    前記メモリコントローラは、
    伸長済みデータ列を格納するヒストリーバッファと、
    前記ヒストリーバッファに対して読み出し要求をするヒストリーバッファ読み出し制御部と、
    前記ヒストリーバッファから読み出された前記伸長済みデータ列に基づいて第1整形データ列を生成し、前記読み出し要求に対して前記第1整形データ列を前記ヒストリーバッファに書き戻す前に、前記第1整形データ列を参照して第2整形データ列を生成し、前記第1整形データ列及び前記第2整形データ列を用いて伸長結果を生成する伸長実行部と、
    を有し、
    前記読み出し要求は、前記ヒストリーバッファにおけるアドレスを示す位置情報を有し、
    前記伸長実行部は、整形部及びバイパス実行部を有し、
    前記整形部は、前記アドレスに格納された前記伸長済みデータ列の先頭からのデータ数を示す長さ情報に基づいて前記第1整形データ列を生成し、
    前記バイパス実行部は、前記第1整形データ列が生成された後に第2整形データ列が生成される場合において、前記整形部によって生成された後の前記第1整形データ列を前記整形部と前記ヒストリーバッファとの間の回路に送信するメモリシステム。
  2. 記伸長実行部は、ブロック内参照部を有し、
    記ブロック内参照部は、前記第1整形データ列が前記ヒストリーバッファに書き戻される前に、前記第1整形データ列を参照して前記第2整形データ列を生成する、請求項1に記載のメモリシステム。
  3. 前記ブロック内参照部は、前記第1整形データ列及び前記第2整形データ列を前記ヒストリーバッファに書き戻す前に、前記第2整形データ列を参照して第3整形データ列を生成し、前記第1整形データ列、前記第2整形データ列、及び前記第3整形データ列を用いて伸長結果を生成する請求項2に記載のメモリシステム。
  4. 前記ブロック内参照部は、前記第1整形データ列及び前記第2整形データ列を前記ヒストリーバッファに書き戻す前に、前記第1整形データ列を参照して第3整形データ列を生成し、前記第1整形データ列、前記第2整形データ列、及び前記第3整形データ列を用いて伸長結果を生成する請求項2に記載のメモリシステム。
  5. 前記メモリコントローラは、前記ヒストリーバッファから読み出され、前記伸長実行部に入力される前記伸長済みデータ列を一時的に格納する入力バッファと、
    前記伸長結果を一時的に格納する出力バッファ及び余剰出力バッファと、
    をさらに有し、
    前記伸長実行部は、
    生成される前記伸長結果のデータ数が前記出力バッファのデータ数を超える場合、
    第1サイクルにおいて、前記出力バッファのデータ数を超えない分の第1伸長データを前記入力バッファから前記出力バッファに送信し、前記出力バッファのデータ数を超えた分の第2伸長データを前記入力バッファから前記余剰出力バッファに送信し、
    前記第1サイクルの後の第2サイクルにおいて、前記第2伸長データを前記整形部に戻す、請求項1乃至のいずれか一に記載のメモリシステム。
JP2020047456A 2020-03-18 2020-03-18 メモリシステム Active JP7358279B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020047456A JP7358279B2 (ja) 2020-03-18 2020-03-18 メモリシステム
US16/942,112 US11397546B2 (en) 2020-03-18 2020-07-29 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020047456A JP7358279B2 (ja) 2020-03-18 2020-03-18 メモリシステム

Publications (2)

Publication Number Publication Date
JP2021149389A JP2021149389A (ja) 2021-09-27
JP7358279B2 true JP7358279B2 (ja) 2023-10-10

Family

ID=77746937

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020047456A Active JP7358279B2 (ja) 2020-03-18 2020-03-18 メモリシステム

Country Status (2)

Country Link
US (1) US11397546B2 (ja)
JP (1) JP7358279B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021129143A (ja) * 2020-02-10 2021-09-02 キオクシア株式会社 デコード装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040036633A1 (en) 2002-08-22 2004-02-26 International Business Machines Corporation System and methods for embedding additional data in compressed data streams
JP2009211494A (ja) 2008-03-05 2009-09-17 Nec Corp 情報処理装置及び方法
US20170235497A1 (en) 2016-02-12 2017-08-17 Oracle International Corporation Decompression history buffer read/write pipelines

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9485687B2 (en) * 2013-02-15 2016-11-01 Exalt Wireless, Inc. Selective compression in a wireless communication system
US20170024278A1 (en) * 2015-07-24 2017-01-26 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding data in memory system
US10177782B2 (en) 2015-12-26 2019-01-08 Intel Corporation Hardware apparatuses and methods for data decompression
JP6523195B2 (ja) 2016-03-17 2019-05-29 株式会社東芝 データ圧縮システム及び方法
JP6674361B2 (ja) * 2016-09-29 2020-04-01 キオクシア株式会社 メモリシステム
JP2019036810A (ja) 2017-08-14 2019-03-07 富士通株式会社 データ圧縮装置、データ復元装置、データ圧縮プログラム、データ復元プログラム、データ圧縮方法、およびデータ復元方法
KR20190074886A (ko) * 2017-12-20 2019-06-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10884858B2 (en) * 2018-03-16 2021-01-05 SK Hynix Inc. LDPC decoding device, memory system including the same and method thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040036633A1 (en) 2002-08-22 2004-02-26 International Business Machines Corporation System and methods for embedding additional data in compressed data streams
JP2009211494A (ja) 2008-03-05 2009-09-17 Nec Corp 情報処理装置及び方法
US20170235497A1 (en) 2016-02-12 2017-08-17 Oracle International Corporation Decompression history buffer read/write pipelines

Also Published As

Publication number Publication date
JP2021149389A (ja) 2021-09-27
US20210294525A1 (en) 2021-09-23
US11397546B2 (en) 2022-07-26

Similar Documents

Publication Publication Date Title
US20190196907A1 (en) Compression techniques for distributed data
JP3225638B2 (ja) データを圧縮するための装置及び方法並びにデータ処理システム
US5150430A (en) Lossless data compression circuit and method
US5627995A (en) Data compression and decompression using memory spaces of more than one size
US20040111427A1 (en) System and method for data compression and decompression
JP3083708B2 (ja) Lz1アルゴリズムを実行する装置
CN102122959B (zh) 提高计算机主存可靠性的数据压缩装置及其方法
KR20130029080A (ko) 소거 없는 플래시 메모리의 다중 프로그래밍
CN110858128A (zh) 数据存储装置及其共享控制器中存储器的方法
JP2009529172A (ja) エクストラデータを含むページを記憶するメモリーマトリックスを有する電子回路
CN102129873B (zh) 提高计算机末级高速缓存可靠性的数据压缩装置及其方法
JP7358279B2 (ja) メモリシステム
JPS61139846A (ja) 誤り訂正・検出方式
US20190140665A1 (en) Polar code decoding apparatus and method
CN112134573B (zh) 用于将数据存储在存储器装置内的方法和检索数据的方法
CN110113058B (zh) 编译码方法、装置、设备及计算机可读存储介质
CN110209598B (zh) 一种高速缓冲存储器、一种数据读写控制方法及系统
CN116302670A (zh) 编解码方法、编解码器、芯片、硬盘、通讯系统
CN111900999B (zh) 一种面向卫星非连续通信的高性能极化编码方法及编码器
TW201839775A (zh) 用來於記憶裝置中進行資料管理之方法以及記憶裝置及其控制器
JP3242795B2 (ja) データ処理装置及びデータ処理方法
US11461008B2 (en) Memory system for improving compression performance of a dictionary coder circuit
US11588498B2 (en) Character string search device and memory system
US20220083282A1 (en) Memory system
JP7305609B2 (ja) 受信したデータを処理する装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220909

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230620

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230817

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230927

R151 Written notification of patent or utility model registration

Ref document number: 7358279

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151