JP2010287114A - データ格納方法及びデータ格納装置 - Google Patents
データ格納方法及びデータ格納装置 Download PDFInfo
- Publication number
- JP2010287114A JP2010287114A JP2009141408A JP2009141408A JP2010287114A JP 2010287114 A JP2010287114 A JP 2010287114A JP 2009141408 A JP2009141408 A JP 2009141408A JP 2009141408 A JP2009141408 A JP 2009141408A JP 2010287114 A JP2010287114 A JP 2010287114A
- Authority
- JP
- Japan
- Prior art keywords
- compressed block
- data
- compressed
- block size
- expected
- 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
Images
Landscapes
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】圧縮データのブロック単位でのランダムアクセスを可能にし、圧縮率を低く抑えながら、エラーを小さくすることができるデータ格納方法を提供する。
【解決手段】データ格納方法は、ブロックデータを圧縮した圧縮ブロックデータを取得し、圧縮ブロックデータの圧縮ブロックサイズが期待圧縮ブロックサイズを超えているか否かを判定する。判定の結果、期待圧縮ブロックサイズを超えていないと判定された場合、期待圧縮ブロックサイズを超えていないことを示すフラグ情報と、圧縮ブロックデータとを圧縮ブロックに格納し、期待圧縮ブロックサイズを超えていると判定された場合、期待圧縮ブロックサイズを超えていることを示すフラグ情報と、期待圧縮ブロックサイズを超えた圧縮ブロックデータを格納するための圧縮ブロックの場所を指定するポインタ情報と、圧縮ブロックデータとを圧縮ブロックに格納する。
【選択図】図4
【解決手段】データ格納方法は、ブロックデータを圧縮した圧縮ブロックデータを取得し、圧縮ブロックデータの圧縮ブロックサイズが期待圧縮ブロックサイズを超えているか否かを判定する。判定の結果、期待圧縮ブロックサイズを超えていないと判定された場合、期待圧縮ブロックサイズを超えていないことを示すフラグ情報と、圧縮ブロックデータとを圧縮ブロックに格納し、期待圧縮ブロックサイズを超えていると判定された場合、期待圧縮ブロックサイズを超えていることを示すフラグ情報と、期待圧縮ブロックサイズを超えた圧縮ブロックデータを格納するための圧縮ブロックの場所を指定するポインタ情報と、圧縮ブロックデータとを圧縮ブロックに格納する。
【選択図】図4
Description
本発明は、データ格納方法及びデータ格納装置に関し、特に、ブロックデータの圧縮及び伸長を行うデータ格納方法及びデータ格納装置に関する。
近年、データ処理装置が扱うデータ量の増大に伴い、メインメモリあるいはデータストレージの容量が増大している。この容量及び転送バンド幅を削減するために、圧縮によりデータ量を削減することが望ましい。データ圧縮には、伸長操作により圧縮データが完全に元のデータに復元できる可逆圧縮と、圧縮データが完全に元のデータに復元できない非可逆圧縮とがある。非可逆圧縮方式では、データと圧縮率との双方に依存して、データを復元した際の元データとの差が変化する。ここでは、データを復元した際の元データとの差をエラーと呼ぶ。データが画像データである場合は、このエラーが画質の低下になる。どの程度のエラー、即ち、画質の低下が許容できるかは、設計仕様により決まる。以下では画像データを例に説明するが、特に、画像データに限定するものではなく、他のデータ、例えば、音声データ等であってもよい。
ブロック圧縮は、非圧縮データを固定サイズのブロックに分け、各ブロックを独立に即ち、他のブロックの影響を受けずに圧縮する方式である。このブロック圧縮では、圧縮したブロックの圧縮ブロックサイズが圧縮率で決まる一定量以下になるようにしておけば、メモリ中にはブロック毎にその一定量の領域を確保しておくことで、ブロック単位のランダムアクセスが可能なる。
例えば、ブロック単位でのランダムアクセスを可能にするデータ処理装置が提案されている(例えば、特許文献1参照)。この提案のデータ処理装置は、ブロックを圧縮した圧縮ブロックサイズが圧縮ブロックのサイズを超えてしまう場合、圧縮率を高くして圧縮した圧縮ブロックサイズを小さくし、圧縮ブロックに収まるようにしている。
一般に圧縮率を高くするとエラーは増加する。エラーは元データにも依存し、ほとんどの場合はエラーが小さいあるいは0であるような圧縮率であっても、あるブロック、例えば、圧縮率を高くしたブロックでは、大きなエラーが出るということがある。
そのため、上述した提案のデータ処理装置は、ブロック単位の非可逆圧縮では、圧縮率を高くすると、大部分のデータに対してはエラーが十分に小さいにも関わらず、データによっては、大きなエラーを発生するという問題があった。また、大きなエラーの発生を避けようとすると、圧縮率を高くできないという問題があった。
本発明は、圧縮データのブロック単位でのランダムアクセスを可能にし、圧縮率を低く抑えながら、エラーを小さくすることができるデータ格納方法及びデータ格納装置を提供することを目的とする。
本発明の一態様によれば、ブロックデータを圧縮した圧縮ブロックデータを取得し、前記圧縮ブロックデータの圧縮ブロックサイズが期待圧縮ブロックサイズを超えているか否かを判定し、判定の結果、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていないと判定された場合、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていないことを示す第1の情報と、前記圧縮ブロックデータとを圧縮ブロックに格納し、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていると判定された場合、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていることを示す第2の情報と、前記期待圧縮ブロックサイズを超えた前記圧縮ブロックデータを格納するための圧縮ブロックの場所を指定するポインタ情報と、前記圧縮ブロックデータとを前記圧縮ブロックに格納することを特徴とするデータ格納方法を提供することができる。
本発明のデータ格納方法及びデータ格納装置によれば、圧縮データのブロック単位でのランダムアクセスを可能にし、圧縮率を低く抑えながら、エラーを小さくすることができる。
以下、図面を参照して本発明の実施の形態について詳細に説明する。
(第1の実施の形態)
まず、図1に基づき、本発明の第1の実施の形態に係る情報処理システムの構成について説明する。図1は、本発明の第1の実施の形態に係る情報処理システムの構成を説明するための説明図である。
(第1の実施の形態)
まず、図1に基づき、本発明の第1の実施の形態に係る情報処理システムの構成について説明する。図1は、本発明の第1の実施の形態に係る情報処理システムの構成を説明するための説明図である。
図1に示すように、情報処理システム100は、中央処理装置(以下、CPUという)101aを有する本体装置101と、メモリとしての記憶装置102と、表示装置103と、キーボード104と、マウス105とを有して構成されている。記憶装置102には、データ格納プログラム106が記憶されている。データ格納プログラム106は、CPU101a上で実行されるソフトウエアである。
情報処理システム100は、本実施の形態のデータ格納方法を実現するための構成であり、ユーザが、キーボード104またはマウス105を操作し、データ格納プログラム106をCPU101aにおいて実行することで、本実施の形態のデータ格納方法が実現される。
図2は、圧縮前の非圧縮データ及び記憶装置102の構成の例を説明するための説明図である。
図2に示すように、圧縮前の非圧縮データは、ブロックサイズAのブロックの集合であり、各ブロックはブロック番号により識別される。なお、非圧縮データは画像データを例に説明するが、特に、画像データに限定するものではなく、他のデータ、例えば、音声データ等であってもよい。また、データの圧縮は、完全に元のデータに復元できない非可逆圧縮方式であるが、圧縮データが完全に元のデータに復元できる可逆圧縮方式であってもよい。
記憶装置102は、ブロックサイズA×圧縮率から算出される圧縮ブロックサイズBの圧縮ブロック領域である圧縮ブロックの集合であり、各圧縮ブロックは、圧縮ブロック番号により識別される。ここで圧縮率は、ブロックサイズAを圧縮した結果、大部分の圧縮データが圧縮ブロックサイズBに収まり、圧縮ブロックサイズBを超える圧縮データの割合が十分小さくなるように決められている。この圧縮率は、予め決められている。
記憶装置102は、所定の記憶領域を有する第1の記憶領域と、第1の記憶領域より小さい記憶領域を有する第2の記憶領域とにより構成される。第1の記憶領域は、非圧縮のブロックサイズA×圧縮率のサイズを有し、圧縮したデータを格納する。第2の記憶領域は、圧縮したデータが溢れた場合に、その溢れたデータを格納する。
ブロック番号nのブロックサイズAである非圧縮ブロックのデータが圧縮手段によって圧縮されて、圧縮ブロックサイズCになったものとする。以下では、非圧縮ブロックのデータをブロックデータともいう。即ち、ブロックデータは、非圧縮データを固定サイズのブロックに分けて得られたデータである。圧縮ブロックサイズCのデータが(圧縮ブロックサイズB−1ビット)以下の場合、第1の記憶領域の圧縮ブロック番号nの圧縮ブロックに、後述する図3(a)に示すデータ形式により格納される。以下では、所定の圧縮ブロック、ここでは(圧縮ブロックサイズB−1ビット)を期待圧縮ブロックサイズともいう。
一方、圧縮ブロックサイズCが期待圧縮ブロックサイズよりも大きい場合、第1の記憶領域の圧縮ブロック番号nの圧縮ブロックには、後述する図3(b)に示すデータ形式により格納される。第2の記憶領域から空いている圧縮ブロックが取得され、残りのデータを第2の記憶領域の圧縮ブロック番号mの場所に格納する。
図3は、圧縮ブロックのデータ形式の例を説明するための説明図である。
図3(a)は、圧縮ブロックデータが期待圧縮ブロックサイズ以下である場合のデータ形式を示している。図3(a)に示すように、各圧縮ブロックには、1ビットのフラグ情報と、(圧縮ブロックサイズB−1ビット)のサイズの圧縮データとが格納される。
このフラグ情報は、ブロックデータを圧縮した圧縮ブロックデータが期待圧縮ブロックサイズ以下であるか否かを示す情報である。図3(a)では、フラグ情報として0が格納されている。フラグ情報として0が格納されている場合、圧縮ブロックデータが期待圧縮ブロックサイズ以下であることを示す。
図3(b)は、圧縮ブロックデータが期待圧縮ブロックサイズより大きい場合のデータ形式を示している。図3(b)に示すように、各圧縮ブロックには、1ビットのポインタ情報と、ポインタ情報と、(圧縮ブロックサイズB−1ビット−ポインタ情報サイズ)のサイズの圧縮データとが格納される。
図3(b)では、フラグ情報格納部にフラグ情報として1が格納されている。フラグ情報格納部にフラグ情報として1が格納されている場合、圧縮ブロックデータが期待圧縮ブロックサイズより大きいことを示す。上述したように、圧縮ブロックデータが期待圧縮ブロックサイズより大きい場合、第2の記憶領域から空いている圧縮ブロックが取得され、取得された圧縮ブロックに残りのデータを格納する。ポインタ情報は、第2の記憶領域内において取得された圧縮ブロックの場所を指し示す情報が格納される。
ここで、残りのデータが期待圧縮ブロックサイズ以下の場合、ポインタ情報により指し示された圧縮ブロックには、図3(a)に示すデータが格納される。
一方、残りの圧縮データが期待圧縮ブロックサイズより大きい場合、ポインタ情報により指し示された圧縮ブロックには、図3(b)に示すデータが格納される。即ち、再度、第2の記憶領域から空いている圧縮ブロックを取得し、その圧縮ブロックを指し示すポインタを得る。
このように、データが記憶装置102に書き込まれる場合、圧縮データが、そのデータ量に応じて、1あるいは複数の圧縮ブロックに格納される。
なお、フラグ情報及びポインタ情報は、圧縮ブロックに格納するものとして説明したが、例えば、テーブルを用意して、そのテーブルにフラグ情報及びポインタ情報を格納するようにしてもよい。
データを記憶装置102から読み出す場合、ブロック番号に対応する圧縮ブロックを読み出す。そして、読み出された圧縮ブロックに格納されているフラグ情報が0の場合、読み出した圧縮ブロックに格納されている圧縮データを、圧縮手段に対応する伸長手段によって伸長する。一方、読み出された圧縮ブロックに格納されているフラグ情報が1の場合、ポインタ情報を辿ることによって、残りの圧縮データを全て取得した後、取得した全ての圧縮データを、伸長手段によって伸長する。
ここで、データを書き込む場合の処理について説明する。図4は、データ格納方法におけるデータ書き込み処理の流れの例を説明するためのフローチャートである。
圧縮前のブロックデータが圧縮され(ステップS1)、圧縮ブロックデータの圧縮ブロックサイズが得られる(ステップS2)。圧縮ブロックサイズが期待圧縮ブロックサイズ(B−1ビット)以下か否かが判定される(ステップS3)。即ち、ステップS3では、圧縮ブロックサイズCが(圧縮ブロックサイズB−1ビット)以下か否かが判定される。期待圧縮ブロックサイズ以下でない場合、NOとなり、第2の記憶領域から空いている圧縮ブロックが取得され、取得された圧縮ブロックの場所を指し示すポインタが得られる(ステップS4)。圧縮ブロックにフラグ情報、ここでは1と、ポインタ情報と、圧縮ブロックサイズB−1ビット−ポインタサイズの圧縮データとが書き込まれる(ステップS5)。残りの圧縮ブロックサイズが取得され(ステップS6)、ステップS3に戻り、残りの圧縮ブロックサイズが期待圧縮ブロックサイズ以下か否かが判定される。一方、期待圧縮ブロックサイズ以下の場合、圧縮ブロックにフラグ情報、ここでは0と、期待圧縮ブロックサイズ以下の圧縮データとが書き込まれ(ステップS7)、処理を終了する。
なお、ステップS4において、第2の記憶領域から空きブロックを取得できない場合は、圧縮率を再設定し、上述した処理を再度実行するようにしてもよい。
次に、データを読み出す場合の処理について説明する。図5は、データ格納方法におけるデータ読み出し処理の流れの例を説明するためのフローチャートである。
まず、読み出し要求のあった圧縮ブロックが読み出される(ステップS11)。読み出された圧縮ブロックの最初のビットが0か否かが判定される(ステップS12)。即ち、ステップS12では、フラグ情報格納部に格納されているフラグ情報が0か否かが判定される。最上位ビットが0でない場合、読み出された圧縮ブロック内の圧縮データが取得され、バッファに格納される(ステップS13)。ポインタ情報が指し示す場所の圧縮ブロックが読み出される(ステップS14)。そして、ステップS12に戻り、読み出された圧縮ブロックの最上位ビットが0か否かが判定される。一方、ステップS12において、読み出された圧縮ブロックの最上位ビットが0の場合、読み出された圧縮ブロック内の圧縮データが取得され、バッファに格納される(ステップS15)。最後に、バッファに格納された圧縮データが伸長され(ステップS16)、処理を終了する。
以上のように、データ格納方法は、圧縮データが圧縮ブロックより大きい場合、圧縮ブロックにフラグ情報とポインタ情報を付加してデータを格納し、超えてしまったデータを第2の記憶領域に格納するようにした。この結果、圧縮データが圧縮ブロックより大きい場合、従来では、圧縮率を高くしデータを圧縮していたため、エラーが大きくなっていたが、本実施の形態では、圧縮データのブロック単位でのランダムアクセスできるとともに、圧縮率を高くする必要がなくなり、エラーを小さくすることが可能となる。
よって、本実施の形態のデータ格納方法によれば、圧縮データのブロック単位でのランダムアクセスを可能にし、圧縮率を低く抑えながら、エラーを小さくすることができる。
(変形例1)
第1の実施の形態の変形例1のデータ格納装置は、画像データまたは音声データ等により最適な圧縮アルゴリズムが違うため、ブロックデータを圧縮する際に、データの特質に応じた圧縮アルゴリズムを選ぶようにしている。このため、圧縮ブロックには、圧縮アルゴリズムを表すビットフィールドを有している。
第1の実施の形態の変形例1のデータ格納装置は、画像データまたは音声データ等により最適な圧縮アルゴリズムが違うため、ブロックデータを圧縮する際に、データの特質に応じた圧縮アルゴリズムを選ぶようにしている。このため、圧縮ブロックには、圧縮アルゴリズムを表すビットフィールドを有している。
図6は、圧縮ブロックのデータ形式の例を説明するための説明図である。
図6(a)及び(b)に示すように、データを書き込む場合、圧縮ブロックには、データの特質に応じて選ばれた圧縮アルゴリズム情報が格納される。
図6(a)及び(b)に示すように、データを書き込む場合、圧縮ブロックには、データの特質に応じて選ばれた圧縮アルゴリズム情報が格納される。
データを読み出す場合、圧縮ブロックに格納された圧縮アルゴリズム情報に基づいて、対応した伸長アルゴリズムにより圧縮データの伸長が行われる。即ち、伸長時には、圧縮時に用いた圧縮アルゴリズムに対応した伸長アルゴリズムでデータが伸長される。
以上のように、第1の実施の形態の変形例1のデータ格納装置は、圧縮アリゴリズム情報を圧縮ブロックに格納することにより、データの特性に応じた圧縮及び伸長が可能となる。
(変形例2)
第1の実施の形態の変形例2のデータ格納装置は、圧縮したブロックの圧縮ブロックサイズが、期待圧縮ブロックサイズを超える場合、圧縮アルゴリズムを階層的に構成する。
第1の実施の形態の変形例2のデータ格納装置は、圧縮したブロックの圧縮ブロックサイズが、期待圧縮ブロックサイズを超える場合、圧縮アルゴリズムを階層的に構成する。
例えば、圧縮したブロックの圧縮ブロックサイズが、期待圧縮ブロックサイズを超える場合、圧縮データの前半部分を第1の記憶領域の圧縮ブロックに格納し、圧縮データの後半部分を第2の記憶領域に格納する。この場合、第1の記憶領域の圧縮ブロックに格納された圧縮データのみから、全体の画像データの伸長を行うことができない。
そのため、データ格納装置は、最初の圧縮ブロック、言い換えると、第1の記憶領域の圧縮ブロックに格納された圧縮データのみを用いて伸長しても、ある程度エラーが大きくなるが、全体の画像データの伸長できるようにする。さらに、データ格納装置は、2つ目以降、言い換えると、第2の記憶領域の圧縮ブロックに格納された圧縮データも用いて伸長すると、よりエラーの少ない伸長結果が得られるような圧縮アルゴリズムを選択する。
以上のように、第1の実施の形態の変形例2のデータ格納装置は、圧縮アルゴリズムを階層的に構成することで、圧縮ブロックの最初のブロックのみから、データの復元が可能になる。
(第2の実施の形態)
次に、第2の実施の形態について説明する。図7は、本発明の第2の実施の形態に係る情報処理システムの構成を説明するための説明図である。なお、図7において、図1と同様の構成については同一の符号を付して説明を省略する。本実施の形態のデータ格納装置は、第1の実施の形態のデータ格納方法をハードウエアで実現した例である。
次に、第2の実施の形態について説明する。図7は、本発明の第2の実施の形態に係る情報処理システムの構成を説明するための説明図である。なお、図7において、図1と同様の構成については同一の符号を付して説明を省略する。本実施の形態のデータ格納装置は、第1の実施の形態のデータ格納方法をハードウエアで実現した例である。
図7に示すように、情報処理システム100aは、1チップの半導体装置であるデータ格納装置1と、記憶装置102とを有して構成されている。データ格納装置1は、CPU101aと、ハードウエアモジュール111と、メモリコントローラ112と、バス113とを有して構成されている。CPU101a、ハードウエアモジュール111及びメモリコントローラ112は、互いに、バス113を介して接続されている。
メモリコントローラ112は、バスインターフェイス(以下、バスI/Fという)10と、圧縮部11と、伸長部12と、バッファ13、14及び15と、フォーマッタ16と、制御部17と、記憶領域管理部18と、メモリインターフェイス(以下、メモリI/Fという)19とを有して構成されている。
第2の実施の形態では、メモリコントローラ112がデータを圧縮及び伸長する機能を有している。そのため、バス113上を通るデータは、圧縮されていない非圧縮データであり、記憶装置102に書き込まれるデータまたは記憶装置102から読み出されるデータは、圧縮された圧縮データである。メモリコントローラ112は、通常のアドレス変換機能を有している。
バスマスタであるCPU101aまたはハードウエアモジュール111は、このメモリコントローラ112対して、圧縮前のブロックサイズでブロック転送要求、即ち、アクセス要求を出力する。メモリコントローラ112は、バスマスタからのアクセス要求に従って、記憶装置102へのブロックデータの書き込みまたは記憶装置102からのブロックデータの読み出しの制御を行う。
まず、データを書き込む場合について説明する。
圧縮前のブロックデータがバスI/F21を介して、圧縮部11に供給される。圧縮部11は、このブロックデータを圧縮する。圧縮部11は、圧縮ブロックデータをバッファ13及び制御部17に出力する。
圧縮前のブロックデータがバスI/F21を介して、圧縮部11に供給される。圧縮部11は、このブロックデータを圧縮する。圧縮部11は、圧縮ブロックデータをバッファ13及び制御部17に出力する。
制御部17は、メモリコントローラ112全体の動作を制御しており、メモリコントローラ112全体のデータ転送を管理する。また、制御部17は、圧縮部11から供給される圧縮ブロックデータが期待圧縮ブロックデータ以下か否かを判定する。このように、制御部17は、圧縮ブロックデータが期待圧縮ブロックデータ以下か否かを判定する判定部を構成する。制御部17は、期待圧縮ブロックデータ以下であると判定した場合、フォーマッタ16に図3(a)のデータ形式とするように指示を出力する。
フォーマッタ16は、この指示に基づいて、圧縮ブロックデータを図3(a)のデータ形式に変換し、バッファ15に出力する。
一方、制御部17は、圧縮ブロックデータが期待圧縮ブロックデータ以下でないと判定した場合、記憶領域管理部18に空きブロックを取得するための指示を出力する。
記憶領域管理部18は、この指示に基づいて、記憶装置102の第2の記憶領域から空いている圧縮ブロックの番号を取得し、その空いている圧縮ブロックの番号を制御部17に出力する。制御部17は、その空いている圧縮ブロックの番号を出力するとともに、フォーマッタ16に図3(b)のデータ形式となるように指示を出力する。
フォーマッタ16は、この指示に基づいて、圧縮ブロックデータを図3(b)のデータ形式に変換し、バッファ15に出力する。また、フォーマッタ16は、残りの圧縮データを制御部17に出力する。制御部17は、この残りの圧縮データが期待圧縮ブロックサイズ以下か否かを判定する。制御部17は、期待圧縮ブロックデータ以下であると判定した場合、フォーマッタ16に図3(a)のデータ形式とするように指示を出力する。
フォーマッタ16は、この指示に基づいて、圧縮ブロックデータを図3(a)のデータ形式に変換し、バッファ15に出力する。このように、フォーマッタ16は、圧縮ブロックにフラグ情報と、圧縮データと、必要に応じてポインタ情報を格納するデータ格納部を構成する。
なお、制御部17は、データの書き込みを行う場合は、圧縮部11による圧縮結果のデータ量から、圧縮ブロックが何個必要かを決定し、記憶領域管理部18から必要な圧縮ブロックの個数分の空き圧縮ブロック番号を得て、フォーマッタ16に指示を出力するようにしてもよい。
また、フラグ情報及びポインタ情報は、圧縮ブロックデータに格納するものとして説明したが、例えば、メモリコントローラ112にテーブル20を用意して、そのテーブル20にフラグ情報及びポインタ情報を格納するようにしてもよい。
次に、データを読み出す場合について説明する。
まず、読み出し要求のあった圧縮ブロックデータが第1の記憶領域から読み出され、読み出しデータがメモリI/F22を介してバッファ15に格納される。バッファ15は、このデータをフォーマッタ16に出力する。
まず、読み出し要求のあった圧縮ブロックデータが第1の記憶領域から読み出され、読み出しデータがメモリI/F22を介してバッファ15に格納される。バッファ15は、このデータをフォーマッタ16に出力する。
フォーマッタ16は、圧縮ブロックにフラグ情報及びポインタ情報が格納されている場合、そのフラグ情報及びポインタ情報を抽出し、抽出したフラグ情報及びポインタ情報を制御部17に出力する。また、フォーマッタ16は、圧縮ブロックに格納されている圧縮データをバッファ14に出力する。制御部17は、ポインタ情報に基づいて、第2の記憶領域から圧縮ブロックを読み出す。
伸長部12には、バッファ14に格納されたデータが供給される。伸長部12は、このデータを伸長し、伸長したデータをバスI/F21を介してバス113に出力する。バス113に出力された伸長したデータは、読み出し要求のあったCPU101aまたはハードウエアモジュール111に供給される。
なお、第1の実施の形態の変形例1及び変形例2のそれぞれを本実施の形態のデータ格納装置に適用してもよい。
また、メモリコントローラ112がデータを圧縮及び伸長する機能を有しているとして説明したが、ハードウエアモジュール111がデータを圧縮及び伸長する機能を有していてもよい。
以上のように、データ格納装置1は、圧縮データが圧縮ブロックより大きい場合、圧縮ブロックにフラグ情報とポインタ情報を付加してデータを格納し、超えてしまったデータを第2の記憶領域に格納するようにした。この結果、圧縮データが圧縮ブロックより大きい場合、従来では、圧縮率を高くしデータを圧縮していたため、エラーが大きくなっていたが、本実施の形態では、圧縮データのブロック単位でのランダムアクセスできるとともに、圧縮率を高くする必要がなくなり、エラーを小さくすることが可能となる。
よって、本実施の形態のデータ格納装置によれば、圧縮データのブロック単位でのランダムアクセスを可能にし、圧縮率を低く抑えながら、エラーを小さくすることができる。
(第3の実施の形態)
次に、第3の実施の形態について説明する。図8は、本発明の第3の実施の形態に係る情報処理システムの構成を説明するための説明図である。なお、図8において、図7と同様の構成については同一の符号を付して説明を省略する。
次に、第3の実施の形態について説明する。図8は、本発明の第3の実施の形態に係る情報処理システムの構成を説明するための説明図である。なお、図8において、図7と同様の構成については同一の符号を付して説明を省略する。
図8に示すように、CPU101aは、キャッシュコントローラ31と、キャッシュメモリ32と、CPUコア33と、ローカルバス34とを有して構成されている。キャッシュメモリ32及びCPUコア33は、互いに、ローカルバス34を介して接続されている。
キャッシュコントローラ31は、記憶装置102からキャッシュメモリ32へのブロックデータの読み込みまたはキャッシュメモリ32から記憶装置102へのブロックデータの書き込みの制御を行う。
このキャッシュコントローラ31は、図7のメモリコントローラ112からメモリI/F19を省いた構成となっている。このように、第3の実施の形態では、キャッシュコントローラ31がデータを圧縮及び伸長する機能を有している。なお、CPU101aがキャッシュコントローラ31を有している場合について説明するが、例えば、ハードウエアモジュール111内の図示しないキャッシュメモリに対して、キャッシュコントローラ31を適用してもよい。
CPUコア33あるいは他のハードウエアモジュール111と接続されるローカルバス34からは、このキャッシュコントローラ31に対して、圧縮前のデータのアクセス要求が出力される。データの圧縮は、CPUコア33あるいは他のハードウエアモジュール111には、透過的で、圧縮を行わない場合と同様にアクセスが可能である。ただし、データに応じて、圧縮の有無、圧縮のアルゴリズムを変えたい場合は、それを通知する手段が必要である。この手段として、一番簡単なのは、アドレスの上位ビットを用いることであるが、本発明はこれに限定するものではない。
圧縮を行わない場合のローカルアドレスと、外部メモリのアクセスがある場合にバス113に出力されるアドレスとは一致するが、圧縮がある場合は、ローカルアドレスとバス113に出力されるアドレスとは一致しない。キャッシュメモリ32のブロックサイズ=圧縮ブロックサイズとする。キャッシュメモリ32にはデータは非圧縮で格納し、圧縮前のブロックのサイズで転送要求が発生する。
記憶装置102から圧縮データを読み出す際に、データ格納装置1aにより第2の実施の形態と同様の伸長動作により、圧縮データの伸長を行い、伸長したデータをキャッシュメモリ32へ読み出す。
キャッシュミスによりリフィルを行う場合、キャッシュメモリ32内の不要なデータを記憶装置102に書き戻す。このとき、データ格納装置1aは、このデータを第2の実施の形態と同様の圧縮動作により、データの圧縮を行い、圧縮データをバスI/F21を介してバス113に出力する。この圧縮データはデータ量に応じて、1つあるいは複数の圧縮ブロックに格納される。
なお、第1の実施の形態の変形例1及び変形例2のそれぞれを本実施の形態のデータ格納装置に適用してもよい。
以上のように、データ格納装置1aは、圧縮データが圧縮ブロックより大きい場合、圧縮ブロックにフラグ情報とポインタ情報を付加してデータを格納し、超えてしまったデータを第2の記憶領域に格納するようにした。この結果、圧縮データが圧縮ブロックより大きい場合、従来では、圧縮率を高くしデータを圧縮していたため、エラーが大きくなっていたが、本実施の形態では、圧縮データのブロック単位でのランダムアクセスできるとともに、圧縮率を高くする必要がなくなり、エラーを小さくすることが可能となる。
よって、本実施の形態のデータ格納装置によれば、圧縮データのブロック単位でのランダムアクセスを可能にし、圧縮率を低く抑えながら、エラーを小さくすることができる。
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウエアやソフトウエア・ルーチンに1対1には対応しない。従って、本明細書では、以上、実施の形態の各機能を有する仮想的回路ブロック(部)を想定して実施の形態を説明した。また、本明細書におけるフローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
なお、以上説明した動作を実行するプログラムは、コンピュータプログラム製品として、フレキシブルディスク、CD−ROM等の可搬媒体や、ハードディスク等の記憶媒体に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムコードがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明のデータ格納装置を実現することができる。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
1…データ格納装置、10…バスI/F、11…圧縮部、12…伸長部、13〜15…バッファ、16…フォーマッタ、17…制御部、18…記憶領域管理部、19…メモリI/F、31…キャッシュコントローラ、32、キャッシュメモリ、33…CPUコア、34…ローカルバス、100…情報処理システム、101…本体装置、101a…CPU、102…記憶装置、103…表示装置、104…キーボード、105…マウス、106…データ格納プログラム、111…ハードウエアモジュール、112…メモリコントローラ、113…バス。
Claims (5)
- ブロックデータを圧縮した圧縮ブロックデータを取得し、
前記圧縮ブロックデータの圧縮ブロックサイズが期待圧縮ブロックサイズを超えているか否かを判定し、
判定の結果、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていないと判定された場合、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていないことを示す第1の情報と、前記圧縮ブロックデータとを圧縮ブロックに格納し、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていると判定された場合、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていることを示す第2の情報と、前記期待圧縮ブロックサイズを超えた前記圧縮ブロックデータを格納するための圧縮ブロックの場所を指定するポインタ情報と、前記圧縮ブロックデータとを前記圧縮ブロックに格納することを特徴とするデータ格納方法。 - ブロックデータを圧縮した圧縮ブロックデータを取得する圧縮部と、
前記圧縮ブロックデータの圧縮ブロックサイズが期待圧縮ブロックサイズを超えているか否かを判定する判定部と、
前記判定部による判定の結果、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていないと判定された場合、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていないことを示す第1の情報と、前記圧縮ブロックデータとを圧縮ブロックに格納し、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていると判定された場合、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていることを示す第2の情報と、前記期待圧縮ブロックサイズを超えた前記圧縮ブロックデータを格納するための圧縮ブロックの場所を指定するポインタ情報と、前記圧縮ブロックデータとを前記圧縮ブロックに格納するデータ格納部と、
を有することを特徴とするデータ格納装置。 - バスマスタからのアクセス要求に従って、記憶装置へのブロックデータの書き込みまたは前記記憶装置からの前記ブロックデータの読み出しの制御を行うメモリコントローラに、
前記書き込みにかかる前記ブロックデータを圧縮した圧縮ブロックデータを取得する圧縮部と、
前記圧縮ブロックデータの圧縮ブロックサイズが期待圧縮ブロックサイズを超えているか否かを判定する判定部と、
前記判定部による判定の結果、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていないと判定された場合、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていないことを示す第1の情報と、前記圧縮ブロックデータとを前記記憶装置の圧縮ブロックに格納し、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていると判定された場合、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていることを示す第2の情報と、前記期待圧縮ブロックサイズを超えた前記圧縮ブロックデータを格納するための圧縮ブロックの場所を指定するポインタ情報と、前記圧縮ブロックデータとを前記記憶装置の前記圧縮ブロックに格納するデータ格納部と、
を有することを特徴とするデータ格納装置。 - 記憶装置からキャッシュメモリへのブロックデータの読み込みまたは前記キャッシュメモリから前記記憶装置への前記ブロックデータの書き込みの制御を行うキャッシュコントローラに、
前記キャッシュメモリからの前記ブロックデータを圧縮した圧縮ブロックデータを取得する圧縮部と、
前記圧縮ブロックデータの圧縮ブロックサイズが期待圧縮ブロックサイズを超えているか否かを判定する判定部と、
前記判定部による判定の結果、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていないと判定された場合、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていないことを示す第1の情報と、前記圧縮ブロックデータとを前記記憶装置の圧縮ブロックに格納し、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていると判定された場合、前記圧縮ブロックサイズが前記期待圧縮ブロックサイズを超えていることを示す第2の情報と、前記期待圧縮ブロックサイズを超えた前記圧縮ブロックデータを格納するための圧縮ブロックの場所を指定するポインタ情報と、前記圧縮ブロックデータとを前記記憶装置の前記圧縮ブロックに格納するデータ格納部と、
を有することを特徴とするデータ格納装置。 - 前記判定部により前記ブロックサイズが前記期待圧縮ブロックサイズを超えていると判定され、前記圧縮ブロックデータが複数の圧縮ブロックに格納された場合、前記複数の圧縮ブロックにうち1番目に読み出される前記圧縮ブロックに格納された前記圧縮ブロックデータのみを伸長し、前記ブロックデータに復元する伸長部を有することを特徴とする請求項2から4のいずれか1項に記載のデータ格納装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009141408A JP2010287114A (ja) | 2009-06-12 | 2009-06-12 | データ格納方法及びデータ格納装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009141408A JP2010287114A (ja) | 2009-06-12 | 2009-06-12 | データ格納方法及びデータ格納装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010287114A true JP2010287114A (ja) | 2010-12-24 |
Family
ID=43542755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009141408A Pending JP2010287114A (ja) | 2009-06-12 | 2009-06-12 | データ格納方法及びデータ格納装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010287114A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2012169124A1 (ja) * | 2011-06-10 | 2015-02-23 | パナソニック株式会社 | 配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法 |
JP2021111320A (ja) * | 2019-12-31 | 2021-08-02 | 北京百度網訊科技有限公司 | データ出力方法、データ取得方法、装置および電子機器 |
-
2009
- 2009-06-12 JP JP2009141408A patent/JP2010287114A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2012169124A1 (ja) * | 2011-06-10 | 2015-02-23 | パナソニック株式会社 | 配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法 |
JP2021111320A (ja) * | 2019-12-31 | 2021-08-02 | 北京百度網訊科技有限公司 | データ出力方法、データ取得方法、装置および電子機器 |
JP7083004B2 (ja) | 2019-12-31 | 2022-06-09 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | データ出力方法、データ取得方法、装置および電子機器 |
US11562241B2 (en) | 2019-12-31 | 2023-01-24 | Beijing Baidu Netcom Science and Technology Co., Ltd | Data output method, data acquisition method, device, and electronic apparatus |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3108371B1 (en) | Modified memory compression | |
KR102069940B1 (ko) | 페이지 기반 압축 저장 관리 | |
JP2020509490A (ja) | 分散型ストレージ・ネットワーク内のゾーンにおけるデータの順次記憶 | |
US10044370B1 (en) | Lossless binary compression in a memory constrained environment | |
WO2014188528A1 (ja) | メモリ装置、計算機システム及びメモリ装置の制御方法 | |
US20130179413A1 (en) | Compressed Distributed Storage Systems And Methods For Providing Same | |
US20140086309A1 (en) | Method and device for encoding and decoding an image | |
CN101206618A (zh) | 融合式存储器设备及方法 | |
JP2010055184A (ja) | 情報処理装置およびメモリ管理方法 | |
KR101801075B1 (ko) | 데이터를 판독하고 기록하기 위한 방법, 장치 및 시스템 | |
US8495464B2 (en) | Reliability support in memory systems without error correcting code support | |
CN105187845A (zh) | 视频数据解码装置及解码方法 | |
US8595448B2 (en) | Asymmetric double buffering of bitstream data in a multi-core processor | |
US11424761B2 (en) | Multiple symbol decoder | |
US10103747B1 (en) | Lossless binary compression in a memory constrained environment | |
US8928660B2 (en) | Progressive mesh decoding apparatus and method | |
JP2010287114A (ja) | データ格納方法及びデータ格納装置 | |
JP5978259B2 (ja) | 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ | |
CN109727183B (zh) | 一种图形渲染缓冲区压缩表的调度方法及装置 | |
JP5459388B2 (ja) | ストレージ装置 | |
US8762602B2 (en) | Variable-length code (VLC) bitstream parsing in a multi-core processor with buffer overlap regions | |
CN113377391B (zh) | 镜像文件的制作和烧录的方法、装置、设备和介质 | |
CN114003573A (zh) | 文件系统的压缩方法、装置、设备、存储介质、程序产品 | |
CN101261605A (zh) | 融合存储器设备及方法 | |
JP6891603B2 (ja) | バックアップシステム、ストレージ装置、データ転送方法及びプログラム |