(57)【要約】【課題】フュージョンメモリ装置及び方法を提供する。【解決手段】フュージョンメモリ装置は、  圧縮されたデータを格納する主メモリと、  前記主メモリにリード及びライトされるデータをバッファリングする補助メモリと、  圧縮器及び圧縮解除器を備え、ライトモード時には、ダウンロードされるデータを前記補助メモリにバッファリングし、前記バッファリングされたデータを前記圧縮器で圧縮して前記主メモリにライトし、リードモード時には、前記主メモリに格納されたデータをリードして前記補助メモリにバッファリングし、前記バッファリングされた圧縮データを前記圧縮解除器で復元するメモリ制御部とから構成される。【選択図】図１
2008065834.tif 000002
【特許請求の範囲】
【請求項１】
フュージョンメモリ装置において、
圧縮されたデータを格納する主メモリと、
前記主メモリにリード及びライトされるデータをバッファリングする補助メモリと、
圧縮器及び圧縮解除器を備え、ライトモード時には、ダウンロードされるデータを前記補助メモリにバッファリングし、前記バッファリングされたデータを前記圧縮器で圧縮して前記主メモリにライトし、リードモード時には、前記主メモリに格納されたデータをリードして前記補助メモリにバッファリングし、前記バッファリングされた圧縮データを前記圧縮解除器で復元するメモリ制御部とから構成されたことを特徴とするフュージョンメモリ装置。
【請求項２】
前記圧縮器は、
前記バッファリングされたデータの探索範囲内の多数のドメインブロックを探索して選択する探索器と、
圧縮するレンジブロックと前記選択されたドメインブロックのデータを比較して差異値を生成し、保管中の最小差異値と前記生成した差異値とを比較して、より小さい差異値であると、前記最小値を更新して保管する比較器と、
前記比較器の出力において、２つのブロックが最も小さい値を持つドメインブロックとの距離及び差異情報を前記レンジブロックの圧縮データとしてコーディングするコーダとから構成され、
前記レンジブロックは、圧縮対象データのブロックであり、ドメインブロックは、前記レンジブロックと比較対象データのブロックであることを特徴とする請求項１に記載のフュージョンメモリ装置。
【請求項３】
前記距離情報は、前記レンジブロックとドメインブロックとの間のブロック数である距離値及び距離フラグを含み、前記差異情報は、選択されたドメインブロックと同一であるか否かを示す差異フラグ、及び相違する場合に、２つのブロック間の差異値を含むことを特徴とする請求項２に記載のフュージョンメモリ装置。
【請求項４】
前記レンジブロック及びドメインブロックは、各々２つ以上のショートブロックから構成され、前記コーダは、前記レンジブロックとドメインブロックのショートブロックが同一であると、前記差異フラグを０にリセットし、相違すると、前記差異フラグを１にセットし、２つのブロック間の差異値をエントロピー符号化することを特徴とする請求項３に記載のフュージョンメモリ装置。
【請求項５】
前記コーダは、前記レンジブロックのショートブロックが探索範囲内の全てのドメインブロックのショートブロックと同一でないと、前記レンジブロックを例外ブロック処理し、例外処理フラグと共に当該レンジブロックのデータを圧縮データとして生成する例外ブロック処理部をさらに備えることを特徴とする請求項２に記載のフュージョンメモリ装置。
【請求項６】
前記圧縮解除器は、
前記バッファリングされた圧縮データから距離及び差異フラグを検出するフラグ検出器と、
前記検出された距離フラグによる距離値を確認してドメインブロックを選択し、前記選択されたドメインブロックと差異フラグを確認し、同一であると、ドメインブロックのデータをレンジブロックのデータに復元し、同一でないと、前記ドメインブロックに前記差異値を排他的論理和演算して、レンジブロックのデータを復元するデコーダとから構成されたことを特徴とする請求項３に記載のフュージョンメモリ装置。
【請求項７】
前記圧縮解除器は、
前記バッファリングされた圧縮データから距離及び差異フラグを検出するフラグ検出器と、
前記距離フラグ及び距離値を確認してドメインブロックを選択し、差異フラグを確認して差異フラグが０であると、前記レンジブロックのショートブロックを対応するドメインブロックのショートブロックデータに復元し、０でないと、対応するドメインブロックのショートブロックデータに前記差異値を排他的論理和演算して、レンジブロックのショートブロックデータに復元するデコーダとから構成されたことを特徴とする請求項４に記載のフュージョンメモリ装置。
【請求項８】
前記圧縮解除器は、
前記バッファリングされた圧縮データから例外処理フラグ、距離及び差異フラグを検出するフラグ検出器と、
例外ブロック処理部をさらに備え、前記例外処理フラグの検出時に、対応するレンジブロックのデータに復元し、例外処理ブロックでないと、前記距離フラグ及び距離値を確認してドメインブロックを選択し、差異フラグを確認して差異フラグが０であると、前記レンジブロックのショートブロックを対応するドメインブロックのショートブロックデータに復元し、０でないと、対応するドメインブロックのショートブロックデータに前記差異値を排他的論理和演算してレンジブロックのショートブロックデータに復元するデコーダとから構成されたことを特徴とする請求項５に記載のフュージョンメモリ装置。
【請求項９】
前記圧縮器は、
ブロックの差異に対応するコストを格納するコストテーブル及び前記コストに対応するブロックの差異値を格納するグローバルテーブルと、
前記バッファリングされたデータの探索範囲内のドメインブロックを探索し、前記探索されたドメインブロックとレンジブロックのデータを比較して差異値を生成し、前記コストテーブルで前記差異値によるコストを生成する探索器と、
前記探索器から選択されたコストのドメインブロックとの距離及び差異情報を圧縮データとしてコーディングするコーダとから構成され、
前記レンジブロックは、圧縮対象データのブロックであり、ドメインブロックは、前記レンジブロックと比較対象データのブロックであることを特徴とする請求項２に記載のフュージョンメモリ装置。
【請求項１０】
前記探索器は、前記レンジブロックとドメインブロックとの間のブロック数である距離値及び距離フラグを含む距離情報及び前記レンジブロックとドメインブロックとの差異値によるコストを生成することを特徴とする請求項９に記載のフュージョンメモリ装置。
【請求項１１】
前記レンジブロック及びドメインブロックは、各々２つ以上のショートブロックから構成され、
前記探索器は、前記探索範囲内のドメインブロックを探索し、前記正方向探索時には、レンジブロックとドメインブロックとをショートブロック単位で比較して差異値を生成し、前記コストテーブルで前記差異値によるコストを生成し、前記生成されたコストが保管中のコストより低いと、ドメイン情報の距離情報及びコストを更新して、最小コストを持つドメインブロックとの距離情報及びコストを生成することを特徴とする請求項１０に記載のフュージョンメモリ装置。
【請求項１２】
前記レンジブロック及びドメインブロックは、２つ以上のショートブロックから構成され、
前記探索器は、
探索領域を設定する探索領域設定器と、
レンジブロックを選択するレンジブロック選択器と、
前記探索領域内に比較対象のドメインブロックを選択するドメインブロック選択器と、
前記選択されたドメインブロックを前記レンジブロックと排他的論理和演算して差異値を生成する比較器と、
前記選択されたドメインブロックと前記レンジブロックとの距離を計算して距離フラグ及び距離値からなる距離情報を生成する距離計算器と、
前記比較器で生成される差異値を前記コストテーブルから探索してコストを生成するコスト計算器と、
前記コスト及び距離情報を前記コーダに伝送する出力部とから構成されることを特徴とする請求項１０に記載のフュージョンメモリ装置。
【請求項１３】
前記コーダは、前記コストが０であると、前記探索器で生成される距離情報及びリセットされた差異フラグを圧縮データとして生成し、前記コストが０でないと、前記コストをグローバルテーブルから探索して前記距離情報及びグローバルテーブルのインデックスを圧縮データとして生成することを特徴とする請求項１２に記載のフュージョンメモリ装置。
【請求項１４】
前記コーダは、前記テーブルに一致するコストがないと、前記レンジブロックを例外ブロック処理し、例外処理フラグと共に当該レンジブロックのデータを圧縮データとして生成する例外ブロック処理部をさらに備えることを特徴とする請求項１３に記載のフュージョンメモリ装置。
【請求項１５】
前記圧縮機は、ローカルテーブルをさらに備え、
前記コーダが、グローバルテーブルに一致するコストがないと、前記コストをローカルテーブルから探索し、一致するコストがあると、前記距離情報及びローカルテーブルのインデックスを圧縮データとして生成し、前記ローカルテーブルは、前記グローバルテーブルに含まれておらず、圧縮中に頻繁に発生する差異値のコストを計算して生成されるテーブルであることを特徴とする請求項９に記載のフュージョンメモリ装置。
【請求項１６】
前記圧縮解除器は、
前記バッファリングされた圧縮データから距離及び差異フラグを検出するフラグ検出器と、
前記検出された距離フラグによる距離値を確認してドメインブロックを選択し、前記グローバルテーブルから前記コストに対応する差異値を選択した後、前記差異値を前記選択されたドメインブロックのデータと演算して前記レンジブロックを復元するデコーダとから構成されたことを特徴とする請求項９に記載のフュージョンメモリ装置。
【請求項１７】
前記圧縮解除器は、
前記バッファリングされた圧縮データから距離及び差異フラグを検出するフラグ検出器と、
前記検出された距離フラグによる距離値を確認してドメインブロックを選択し、前記コストが０であるショートブロックは、前記選択されたドメインブロックのショートブロックデータに復元し、０でないと、前記コストに対応する差異値を前記グローバルテーブルから選択した後、前記選択された差異値をドメインブロックの該当するショートブロックに排他的論理和演算して復元するデコーダとから構成されたことを特徴とする請求項１３に記載のフュージョンメモリ装置。
【請求項１８】
前記圧縮解除器は、
前記バッファリングされた圧縮データから例外処理フラグ、距離及び差異フラグを検出するフラグ検出器と、
例外ブロック処理部をさらに備え、前記例外処理フラグの検出時には、対応するレンジブロックのデータをそのまま復元し、例外処理ブロックでないと、前記コストが０であるショートブロックは、前記選択されたドメインブロックのショートブロックデータに復元し、０でないと、前記コストによる差異値を前記グローバルテーブルから選択した後、前記選択された差異値をドメインブロックの該当するショートブロックに排他的論理和演算して復元するデコーダとから構成されたことを特徴とする請求項１４に記載のフュージョンメモリ装置。
【請求項１９】
フュージョンメモリ装置において、
疑似ＮＯＲマッピング領域及びホストメモリマッピング領域から構成される主メモリと、
前記主メモリにリード及びライトされるデータをバッファリングする補助メモリと、
ライトモード時には、ダウンロードされるデータを前記補助メモリにバッファリングし、前記バッファリングされたデータをＮＡＮＤインターフェース方法で前記主メモリにライトし、リードモード時には、ホストメモリ領域であると、主メモリに格納されたデータをＮＡＮＤインターフェース方法でリードして出力し、疑似ＮＯＲマッピング領域であると、前記主メモリに格納されたデータをＮＡＮＤインターフェース方法でリードし、前記リードされるデータのアドレスを前記ＮＯＲインターフェース方法でアクセスできるように変換して前記補助メモリにバッファリングし、ＮＯＲインターフェース方法でリードできるように制御するメモリ制御部とから構成されたことを特徴とするフュージョンメモリ装置。
【請求項２０】
前記メモリ制御部は、
ホスト装置からダウンロードされる情報を分析して制御命令及びアドレス情報を検出する情報検出部と、
前記情報検出部からライト命令を検出したときには、ホスト装置からダウンロードされるデータを前記アドレス情報によって前記主メモリの対応する領域にＮＡＮＤインターフェース方法でライトし、前記リード命令を検出したときには、前記アドレス情報から前記主メモリのマッピング領域を確認し、疑似ＮＯＲマッピング領域である場合は、前記補助メモリにバッファリングが完了したときに、前記ホスト装置にこれを通知し、ホストメモリマッピング領域である場合は、前記主メモリの当該領域に格納されたデータをＮＡＮＤインターフェース方法でリードして、ＮＡＮＤインターフェース方法で前記ホスト装置に出力するコア制御部と、
前記コア制御部の制御下に前記疑似ＮＯＲマッピング領域からリードされるデータをホスト装置でＮＯＲインターフェース方法でアクセスできるようにアドレスを変換する前記補助メモリにバッファリングするＮＯＲインターフェース部とから構成されたことを特徴とする請求項１９に記載のフュージョンメモリ装置。
【請求項２１】
フュージョンメモリ装置において、
疑似ＮＯＲマッピング領域及びホストメモリマッピング領域から構成され、圧縮されたデータを対応するマッピング領域に格納する主メモリと、
前記主メモリにリード及びライトされるデータをバッファリングする補助メモリと、
圧縮器及び圧縮解除器を備え、ライトモード時には、ダウンロードされるデータを前記補助メモリにバッファリングし、前記バッファリングされたデータを前記圧縮器で圧縮して前記主メモリの対応するマッピング領域にＮＡＮＤインターフェース方法でライトし、リードモード時には、前記主メモリに格納されたデータをＮＡＮＤインターフェース方法でリードして前記補助メモリにバッファリングし、前記バッファリングされた圧縮データを前記圧縮解除器で復元した後、前記ホストメモリマッピング領域のデータであると、ＮＡＮＤインターフェース方法で出力し、前記疑似ＮＯＲマッピング領域のデータであると、前記復元されたデータをＮＯＲインターフェース方法でリードできるようにアドレスを変換して前記補助メモリにバッファリングし、ＮＯＲインターフェース方法でリードするように制御するメモリ制御部とから構成されたことを特徴とするフュージョンメモリ装置。
【請求項２２】
前記圧縮器は、
ブロックの差異に対応するコストを格納するコストテーブル及び前記コストによるブロックの差異値を格納するグローバルテーブルと、
前記バッファリングされたデータの探索範囲内のドメインブロックを探索し、前記探索されたドメインブロックとレンジブロックのデータを比較して差異値を生成し、前記コストテーブルで前記差異値によるコストを生成する探索器と、
前記探索器から選択されたコストのドメインブロックとの距離及び差異情報を圧縮データとしてコーディングするコーダとから構成され、
前記レンジブロックは、圧縮対象データのブロックであり、ドメインブロックは、前記レンジブロックと比較対象データのブロックであることを特徴とする請求項２１に記載のフュージョンメモリ装置。
【請求項２３】
前記レンジブロック及びドメインブロックは、各々２つ以上のショートブロックから構成され、
前記探索器は、前記探索範囲内のドメインブロックを探索し、前記正方向探索時には、レンジブロックとドメインブロックとをショートブロック単位で比較して差異値を生成し、前記コストテーブルで前記差異値によるコストを生成し、前記生成されたコストが保管中のコストより低いと、ドメイン情報の距離情報及びコストを更新して、最小コストを持つドメインブロックとの距離情報及びコストを生成することを特徴とする請求項２２に記載のフュージョンメモリ装置。
【請求項２４】
前記コーダは、前記コストが０であると、前記探索器で生成される距離情報及びリセットされた差異フラグを圧縮データとして生成し、前記コストが０でないと、前記コストをグローバルテーブルから探索して前記距離情報及びグローバルテーブルのインデックスを圧縮データとして生成することを特徴とする請求項２３に記載のフュージョンメモリ装置。
【請求項２５】
前記補助メモリが第１及び第２補助メモリから構成され、前記メモリ制御部が情報検出部及びコア制御部をさらに備え、
ライトモード時には、情報検出部が、ホスト装置からダウンロードされるアドレス情報を検出し、コア制御部が、ホスト装置からダウンロードされるデータを前記第２補助メモリにバッファリングし、前記圧縮器で圧縮されたデータを第１補助メモリにバッファリングし、前記第１補助メモリにバッファリングされた圧縮データを前記アドレスに該当する主メモリのマッピング領域にＮＡＮＤインターフェース方法でライトすることを特徴とする請求項２２に記載のフュージョンメモリ装置。
【請求項２６】
主メモリと、前記主メモリにリード及びライトされるデータをバッファリングする補助メモリとを備えるフュージョンメモリ装置のデータアクセス方法において、
ライトモード時に、ホスト装置からダウンロードされるデータを前記補助メモリにバッファリングし、前記バッファリングされたデータを圧縮して前記主メモリにライトする過程と、
リードモード時に、前記主メモリに格納されたデータをリードして前記補助メモリにバッファリングし、前記バッファリングされた圧縮データを復元した後、出力する過程からなることを特徴とするフュージョンメモリ装置のデータアクセス方法。
【請求項２７】
前記データを圧縮する過程は、
前記補助メモリにバッファリングされたデータの探索範囲内のドメインブロックを探索して選択する過程と、
圧縮するレンジブロックと前記選択されたドメインブロックのデータを比較する過程と、
前記比較の結果、２つのブロックが最も小さい差異値を持つドメインブロックとの距離及び差異情報を決定し、前記ドメインブロックとの距離情報及び前記差異情報を前記レンジブロックの圧縮データとしてコーディングする過程とからなり、
前記レンジブロックは、圧縮対象データのブロックであり、ドメインブロックは、前記レンジブロックと比較対象データのブロックであることを特徴とする請求項２６に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項２８】
前記距離情報は、前記レンジブロックとドメインブロックとの間のブロック数である距離値及び距離フラグを含み、前記差異情報は、選択されたドメインブロックと同一であるか否かを示す差異フラグ、及び相違する場合に、２つのブロック間の差異値を含むことを特徴とする 請求項２７に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項２９】
前記レンジブロック及びドメインブロックは、各々２つ以上のショートブロックから構成され、前記コーディング過程は、前記レンジブロックとドメインブロックのショートブロックが同一であると、前記差異フラグを０にリセットし、相違すると、前記差異フラグを１にセットし、２つのブロック間の差異値をエントロピー符号化することを特徴とする請求項２８に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項３０】
前記コーディング過程は、前記レンジブロックのショートブロックが探索範囲内の全てのドメインブロックのショートブロックと同一でないと、前記レンジブロックを例外ブロック処理し、例外処理フラグと共に当該レンジブロックのデータを圧縮データとして生成する例外ブロック処理過程をさらに備えることを特徴とする請求項２８に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項３１】
前記圧縮データを復元する過程は、
前記バッファリングされた圧縮データから距離及び差異フラグを検出する過程と、
前記検出された距離フラグによる距離値を確認してドメインブロックを選択し、前記選択されたドメインブロックと差異フラグを確認し、同一であると、ドメインブロックのデータをレンジブロックのデータに復元し、同一でないと、前記ドメインブロックに前記差異値を排他的論理和演算して、レンジブロックのデータを復元する過程とから構成されたことを特徴とする請求項２８に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項３２】
前記圧縮データを復元する過程は、
前記バッファリングされた圧縮データから距離及び差異フラグを検出する過程と、
前記距離フラグ及び距離値を確認してドメインブロックを選択し、差異フラグを確認して差異フラグが０であると、前記レンジブロックのショートブロックを対応するドメインブロックのショートブロックデータに復元し、０でないと、対応するドメインブロックのショートブロックデータに前記差異値を排他的論理和演算して、レンジブロックのショートブロックデータに復元する過程とから構成されたことを特徴とする請求項２９に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項３３】
前記圧縮データを復元する過程は、
前記バッファリングされた圧縮データから例外処理フラグ、距離及び差異フラグを検出する過程と、
前記例外処理フラグの検出時に、対応するレンジブロックのデータに復元する過程と、
前記例外処理ブロックでないと、前記距離フラグ及び距離値を確認してドメインブロックを選択し、差異フラグを確認して差異フラグが０であると、前記レンジブロックのショートブロックを対応するドメインブロックのショートブロックデータに復元し、０でないと、対応するドメインブロックのショートブロックデータに前記差異値を排他的論理和演算してレンジブロックのショートブロックデータに復元する過程とから構成されたことを特徴とする請求項３０に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項３４】
前記データを圧縮する過程は、
前記補助メモリにバッファリングされたデータの探索範囲内でドメインブロックを探索し、探索されたドメインブロックとレンジブロックのデータを比較して差異値を生成し、コストテーブルで前記差異値によるコストを生成する過程と、
前記選択されたコストのドメインブロックとの距離及び差異情報を圧縮データとしてコーディングする過程とからなり、
前記レンジブロックは、圧縮対象データのブロックであり、ドメインブロックは、前記レンジブロックと比較対象データのブロックであり、前記コストテーブルは、ブロックの差異によって設定されるコストを格納するテーブルであることを特徴とする請求項２８に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項３５】
前記探索過程は、前記レンジブロックと選択されたドメインブロックとの間のブロック数である距離値及び距離フラグを含む距離情報を計算する過程と、
前記レンジブロックと選択されたドメインブロックとの差異値を計算した後、前記コストテーブルで前記差異値によるコストを生成する過程とからなることを特徴とする請求項３４に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項３６】
前記探索過程は、前記距離情報計算過程及びコスト生成過程を繰り返して行いながら、最も低いコストを持つドメインブロックを探索する過程をさらに備えることを特徴とする請求項３５に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項３７】
前記コーディング過程は、
前記コストが０であると、前記探索器で生成される距離情報及びリセットされた差異フラグを圧縮データとして生成し、前記コストが０でないと、前記コストをグローバルテーブルから探索して前記距離情報及びグローバルテーブルのインデックスを圧縮データとして生成することを特徴とする請求項３６に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項３８】
前記コーディング過程は、
前記レンジブロック及びドメインブロックが各々２つ以上のショートブロックから構成され、
前記レンジブロックのショートブロックのコストが０であると、前記探索器で生成される距離情報及びリセットされた差異フラグを圧縮データとして生成し、前記コストが０でないと、前記コストをグローバルテーブルから探索して前記距離情報及びグローバルテーブルのインデックスを圧縮データとして生成することを特徴とする請求項３６に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項３９】
前記コーディング過程は、グローバルテーブルに一致するコストがないと、前記コストをローカルテーブルから探索して前記距離情報及びコストを圧縮データとして生成する過程をさらに備え、
前記ローカルテーブルは、前記グローバルテーブルに含まれておらず、圧縮中に頻繁に発生する差異値のコストを計算して生成されるテーブルであることを特徴とする請求項３８に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項４０】
前記コーディング過程は、前記テーブルに一致するコストがないと、前記レンジブロックを例外ブロック処理して例外処理フラグと共に当該レンジブロックのデータを圧縮データとして生成する過程をさらに備えることを特徴とする請求項３８又は３９に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項４１】
前記探索過程は、
探索領域を設定する過程と、
レンジブロックを選択する過程と、
前記探索領域内に比較対象のドメインブロックを選択する過程と、
前記選択されたドメインブロックを前記レンジブロックと排他的論理和演算する過程と、
前記選択されたドメインブロックと前記レンジブロックとの距離を計算する過程と、
前記比較器で発生する差異を前記コストテーブルから探索してコストを生成する過程と、
前記過程を繰り返しながら、最も低いコストを持つドメインブロックを選択し、前記選択されたドメインブロックのコスト及び距離情報を出力する過程とから構成されることを特徴とする請求項３３に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項４２】
前記圧縮データを復元する過程は、
前記バッファリングされた圧縮データから距離及び差異フラグを検出する過程と、
前記検出された距離フラグによる距離値を確認してドメインブロックを選択する過程と、
前記グローバルテーブルから前記コストに対応する差異値を選択した後、前記差異値を前記選択されたドメインブロックのデータと演算して前記レンジブロックを復元する過程とから構成されたことを特徴とする請求項３７に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項４３】
前記圧縮データを復元する過程は、
前記バッファリングされた圧縮データから距離及び差異フラグを検出する過程と、
前記検出された距離フラグによる距離値を確認してドメインブロックを選択する過程と、
前記コストを確認して、前記コストが０であるショートブロックは、前記選択されたドメインブロックのショートブロックデータに復元し、０でないと、前記コストによる差異値を前記グローバルテーブルから選択した後、前記選択された差異値をドメインブロックの該当するショートブロックに排他的論理和演算して復元する過程とから構成されたことを特徴とする請求項３８に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項４４】
前記圧縮データを復元する過程は、
前記バッファリングされた圧縮データから例外処理、距離及び差異フラグを検出する過程と、
前記例外処理フラグの検出時に、対応するレンジブロックのデータを復元する過程と、
前記例外処理フラグでないと、前記検出された距離フラグによる距離値を確認してドメインブロックを選択する過程と、
前記コストを確認して、前記コストが０であるショートブロックは、ドメインブロックのショートブロックデータに復元し、０でないと、前記コストによる差異値を前記グローバルテーブルから選択した後、前記選択された差異値をドメインブロックの該当するショートブロックに排他的論理和演算して復元する過程とから構成されたことを特徴とする請求項４０に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項４５】
疑似ＮＯＲマッピング領域及びホストメモリマッピング領域から構成される主メモリと、前記主メモリにリード及びライトされるデータをバッファリングする補助メモリとを備えるフュージョンメモリ装置のデータアクセス方法において、
ライトモード時に、ホスト装置からダウンロードされるデータを前記補助メモリにバッファリングし、前記バッファリングされたデータをＮＡＮＤインターフェース方法で前記主メモリにライトする過程と、
リードモード時に、前記ホストメモリ領域であると、主メモリに格納されたデータをＮＡＮＤインターフェース方法でリードしてＮＡＮＤインターフェース方法で出力し、疑似ＮＯＲマッピング領域であると、前記主メモリに格納されたデータをＮＡＮＤインターフェース方法でリードし、前記リードされるデータのアドレスを前記ＮＯＲインターフェース方法でアクセスできるように変換して前記補助メモリにバッファリングし、ＮＯＲインターフェース方法でリードできるように制御する過程とから構成されたことを特徴とするフュージョンメモリ装置のデータアクセス方法。
【請求項４６】
前記主メモリにデータをライトする過程は、
ホスト装置からダウンロードされる制御情報を分析してアドレス情報を検出する過程と、
ホスト装置からダウンロードされるデータを前記補助メモリにバッファリングする過程と、
前記補助メモリにバッファリングされたデータを前記アドレス情報により指定される前記主メモリの対応するマッピング領域にＮＡＮＤインターフェース方法でライトする過程とからなることを特徴とする請求項４５に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項４７】
前記主メモリにデータをリードする過程は、
ホスト装置からダウンロードされる制御情報を分析してアドレス情報を検出する過程と、
前記アドレス情報により指定される前記主メモリのマッピング領域を確認する過程と、
前記指定された領域が前記主メモリの疑似ＮＯＲマッピング領域であると、前記指定された疑似ＮＯＲマッピング領域のデータをＮＡＮＤインターフェース方法でリードし、前記リードされたデータを前記ホスト装置でＮＯＲインターフェース方法でアクセスできるようにアドレスを変換する前記補助メモリにバッファリングし、これを前記ホスト装置に通知する過程と、
前記指定された領域が前記主メモリのホストメモリマッピング領域であると、前記主メモリの当該領域に格納されたデータをＮＡＮＤインターフェース方法でリードして、ＮＡＮＤインターフェース方法で前記ホスト装置に出力する過程とから構成されたことを特徴とする請求項４６に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項４８】
前記主メモリは、疑似ＮＯＲマッピング領域及びホストメモリマッピング領域から構成される主メモリと、前記主メモリにリード及びライトされるデータをバッファリングする補助メモリとを備えるフュージョンメモリ装置のデータアクセス方法において、
ライトモード時に、ホスト装置からダウンロードされるデータを前記補助メモリにバッファリングし、前記バッファリングされたデータを圧縮して前記主メモリの対応するマッピング領域にＮＡＮＤインターフェース方法でライトする過程と、
リードモード時に、前記主メモリに格納されたデータをリードして前記補助メモリにバッファリングし、前記バッファリングされた圧縮データを復元した後、前記ホストメモリマッピング領域のデータであると、ＮＡＮＤインターフェース方法で出力し、前記疑似ＮＯＲマッピング領域のデータであると、ＮＯＲインターフェース方法でリードできるようにアドレスを変換して前記補助メモリにバッファリングし、これを出力する過程とから構成されたことを特徴とするフュージョンメモリ装置のデータアクセス方法。
【請求項４９】
前記データを圧縮する過程は、
前記補助メモリにバッファリングされたデータの探索範囲内のドメインブロックを探索し、前記探索されたドメインブロックとレンジブロックのデータを比較して差異値を生成し、コストテーブルで差異値によるコストを生成する過程と、
前記選択されたコストのドメインブロックとの距離及び差異情報を前記レンジブロックの圧縮データとしてコーディングする過程とからなり、
前記レンジブロックは、圧縮対象データのブロックであり、ドメインブロックは、前記レンジブロックと比較対象データのブロックであり、前記コストテーブルは、ブロックの差異により設定されるコストを格納するテーブルであることを特徴とする請求項４８に記載のフュージョンメモリ装置のデータアクセス方法。
【請求項５０】
前記補助メモリが第１及び第２補助メモリから構成され、
前記ライトモード時に、ホスト装置からダウンロードされるアドレス情報を検出する過程と、
ホスト装置からダウンロードされるデータを前記第２補助メモリにバッファリングする過程と、
前記バッファリングされたデータを圧縮する過程と、
前記圧縮されたデータを第１補助メモリにバッファリングし、前記第１補助メモリにバッファリングされた圧縮データを前記アドレスに該当する主メモリのマッピング領域にＮＡＮＤインターフェース方法でライトする過程とから構成されたことを特徴とする請求項４８に記載のフュージョンメモリ装置のデータアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フュージョンメモリ装置及び方法に関し、特に、バイナリデータを圧縮して格納し、格納された圧縮されたバイナリデータを圧縮解除して出力できるフュージョンメモリ装置及び方法に関する。
【背景技術】
【０００２】
フュージョンメモリは、基本メモリ機能に、他の特性のメモリ及び／又はロジックを一緒に集積して複合化したメモリを意味する。前記フュージョンメモリは、システム仕様に適したソフトウェアも同時に提供できるメモリ(システムメモリ)として使用することができる。前記のようなフュージョンメモリは、メモリとロジックとを融合することにより、一般メモリ機能の限界を克服し、モバイル等のような機器の市場創出に大きく寄与するものと予想される。
【０００３】
前記モバイル機器（例えば、携帯端末機等）は、通信機能以外にデジタル放送、カメラ、ＭＰ３、ブルートゥース等のような複合機能が搭載されている。そのため、前記モバイル機器のメモリに搭載されるシステムソフトウェア(system software)、ファームウェア(firmware)、及びユーザデータ(user data)の容量が大きくなり、メモリの容量も大きくならなければならない。従って、前記モバイル機器にフュージョンメモリを使用する場合、前記フュージョンメモリに大容量のバイナリデータを格納できるようにすることが好ましい。
【０００４】
従来のメモリにバイナリデータを格納する場合、システムは、前記システムソフトウェア、ファームウェア、及びユーザデータ等のようなバイナリデータを前記メモリにそのまま格納している。この場合、前記システムが、フュージョンメモリを備え、前記フュージョンメモリのロジックの構成時に、アクセスされるバイナリデータを圧縮及び圧縮解除するロジックを構成すると、前記メモリの効率を向上させることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
そこで、本発明は、格納されるバイナリデータを圧縮して格納することができるフュージョンメモリ装置及び方法を提供することを目的とする。
【０００６】
また、本発明は、格納された圧縮バイナリデータを復元して出力することができるフュージョンメモリ装置及び方法を提供することを目的とする。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の好ましい実施例について添付図面を参照しながら説明する。なお、図において、同一構成については同一符号を付している。
【０００８】
下記の説明において、メモリの種類、メモリの処理単位、圧縮及び圧縮解除の処理単位の具体例等のような特定の詳細が、本発明をより理解し易くするために記載されている。しかし、このような特定の詳細がなくても、これらの変形によって、本発明を容易に実施できるということは、本技術分野における通常の知識を有する者に自明なことである。
【０００９】
本発明の実施例において、「フュージョンメモリ」とは、主メモリ以外に、他の種類のメモリ、非メモリ及び／又は特定ロジックを一つのチップに集積したメモリを意味する。「コード」とは、フュージョンメモリ装置の主メモリに格納されるシステムソフトウェア及びファームウェア等のようなバイナリデータを意味する。「ユーザデータ」とは、前記フュージョンメモリ装置の主メモリに格納される前記「コード」を除く全てのデータを意味する。「バイナリデータ」とは、フュージョンメモリ装置の主メモリに格納されるデータであって、前記コード及びユーザデータを含み、メモリに格納される全てのデータを意味する。「メモリ制御部」は、本発明の実施例により前記バイナリデータを圧縮及び圧縮解除する機能を含み、前記フュージョンメモリ装置において、主メモリに前記バイナリデータをＮＡＮＤ又はＮＯＲインターフェース方法でアクセスする動作を制御する機能を行う。
【００１０】
前記フュージョンメモリ装置の主メモリの機能は、特定の実行及び格納空間を提供し、前記提供される空間には、システムの動作を制御するためのコード（ソフトウェア及びファームウェア）を格納することができ、また、ユーザデータ（前記コードを除く全てのデータ）を格納することができる。本発明の実施例は、フュージョンメモリ装置に関し、前記フュージョンメモリ装置に、バイナリデータを圧縮して前記主メモリに格納し、前記主メモリに圧縮格納されたバイナリデータを圧縮解除して出力するロジックを追加する。前記のようなロジックを備えるフュージョンメモリ装置は、提供された特定のメモリ空間よりも大量のコード及びユーザデータを格納及びロードすることができる。
【００１１】
そのため、本発明の実施例に係るフュージョンメモリ装置は、圧縮／解除器(binary data(code and data) compressor／decompressor)をメモリ制御部に搭載(built-in)し、前記主メモリにバイナリデータを圧縮して格納し、実行時に、前記主メモリに圧縮格納されたバイナリデータを圧縮解除してメモリの空間を効率的に使用する。このような場合、前記フュージョンメモリ装置の圧縮／解除器をロジックとして設計すると、前記バイナリデータの圧縮／解除を迅速に具現することができる。
【００１２】
また、本発明の実施例に係るフュージョンメモリ装置は、メモリをＮＯＲインターフェース方法でアクセスする領域とＮＡＮＤインターフェース方法でアクセスする領域とに区分し、外部装置の制御下に、前記フュージョンメモリ装置が、前記メモリに格納されたバイナリデータをＮＡＮＤインターフェース又はＮＯＲインターフェース方法でアクセスできるように動作する。
【００１３】
図１は、前記フュージョンメモリ装置の構成例を示す図面である。前記フュージョンメモリ装置は、前記のように、バイナリデータを格納する主メモリ、補助メモリ、非メモリ及び／又はロジック等を一つのチップに集積したメモリを意味する。ここで、前記ロジックは、一般のロジック、ＣＰＵ、ＭＰＵ、又はこれらの結合形態で構成される。本発明の実施例では、前記メモリ制御部がバイナリデータを圧縮及び圧縮解除する圧縮／解除器を備え、これをロジックとして具現した場合を仮定して説明する。
【００１４】
前記フュージョンメモリ装置は、多様な形態が存在し、そのうちの一つが三星電子(株)が製造販売するｏｎｅＮＡＮＤメモリ(oneNAND memory)である。前記ｏｎｅＮＡＮＤメモリは、大容量メモリのＮＡＮＤフラッシュセルと、バッファ機能のＳ・ＲＡＭ及びロジック回路を一つのチップに具現したメモリである。前記ｏｎｅＮＡＮＤメモリの特性は、大容量メモリであり、高速書き込み及び高速読み出しのＮＡＮＤフラッシュの長所とバイトアクセスが可能なＮＯＲフラッシュの長所とを持っている。即ち、大容量の前記ｏｎｅＮＡＮＤメモリの読み出し及び書き込みの速度は、一般のＮＡＮＤフラッシュ及びＮＯＲフラッシュに比べて大幅に向上した。また、前記のようなｏｎｅＮＡＮＤメモリは、携帯端末機、コンピュータ、デジタルカメラ、デジタル放送受信機等のような多様な製品に広く使われると予想される。
【００１５】
本発明の実施例において、前記フュージョンメモリ装置が、前記ｏｎｅＮＡＮＤメモリである場合を仮定して説明する。即ち、本発明の実施例では、前記フュージョンメモリのメモリ制御部がバイナリデータを圧縮及び圧縮解除する圧縮／解除器を備え、前記主メモリを効率的に管理する装置及び方法を提案する。そして、前記のように、フュージョンメモリのメモリ制御部が圧縮／解除器を備える本発明の実施例は、全てのフュージョンメモリに適用することができる。また、本発明の実施例において、前記フュージョンメモリ装置を使用するホスト装置は、携帯端末機と仮定して説明する。ここで、前記携帯端末機は、通信機能、マルチメディア機能等を行える装置である。
【００１６】
前記図１を参照すると、フュージョンメモリ１００は、主メモリ１３０、補助メモリ１２０、及びメモリ制御部１１０から構成される。ここで、前記フュージョンメモリ１００がｏｎｅＮＡＮＤメモリであると、前記主メモリ１３０はＮＡＮＤフラッシュセル(NAND flash cell)であり、補助メモリ１２０はＳＲＡＭであり、メモリ制御部１１０は圧縮／解除器等を備えるロジックである。この場合、前記メモリ制御部１１０の機能は、前記フュージョンメモリ１００を備える装置の制御部（例えば、システム制御部）のソフトウェアで行うことができる。参照番号２１０は、システム制御部のソフトウェアの一部であって、フュージョンメモリ１００の動作を制御するためのソフトウェアである。即ち、前記メモリ制御部１１０の機能は、前記メモリ制御ソフトウェア２１０で行うこともできる。
【００１７】
前記主メモリ１３０は、ＮＡＮＤフラッシュセルで構成され、バイナリデータを格納する領域として、システム領域(system space)とユーザ領域(user space)とに区分することができる。また、前記システム領域は、疑似ＮＯＲマッピング領域(pseudo NOR mapping area)とＲＡＭマッピング領域(RAM mapping area)とに区分することができる。ここで、前記システム領域は、前記システムソフトウェア及びファームウェア等のコードを格納する領域であり、前記ユーザ領域は、ユーザデータを格納する領域である。補助メモリ１２０は、前記主メモリ１３０の疑似ＮＯＲマッピング領域のバイナリデータを変換するための機能及び前記主メモリ１３０のバッファ機能を行う。メモリ制御部１１０は、入力されるバイナリデータを圧縮して前記主メモリ１３０に格納し、また、前記主メモリ１３０に圧縮格納されたバイナリデータを圧縮解除して出力する。即ち、メモリ制御部１１０は、前記格納時に、前記バイナリデータを圧縮して格納し、出力時に、前記圧縮格納されたバイナリデータを解除する機能を行う圧縮／解除器を備える。
【００１８】
前記のように、前記メモリ制御部１１０が圧縮及び圧縮解除するバイナリデータは、前記のように、コード及びユーザデータである。ここで、前記フュージョンメモリ１００を携帯端末機に使用する場合、前記メモリ制御部１１０が圧縮／解除器で圧縮／解除する対象は以下のように設定することができる。
【００１９】
まず、前記コードは、テキストコード、ＲＯデータ(read only data)、ＲＷデータ(read and writable data)、及び資源(resource)等である。前記テキストコードは、一般のプログラムコードであり、ＲＯデータは、一定の形態で構成され、実行中に値の変更ができないデータであり、ＲＷデータは、実行中に値の変更ができるデータであり、資源は、フォント(font)／内部ディスプレーのためのイメージ／ベルサウンド／ストリング(string)等である。ここで、前記テキストコードは、プログラムインストラクション(program instruction)であり、ＲＯ、ＲＷ、及び資源は、プログラムデータである。なお、前記区分されたプログラムインストラクション及びプログラムデータは、特性を把握して圧縮範囲を設定した後、当該データのテーブルを構成して圧縮及び解除機能を行うことができる。
【００２０】
次に、前記携帯端末機のユーザデータは、システム機能の遂行中に発生するデータであり、前記ユーザデータの圧縮対象は、フォンブック(phone book)、メッセージ(SMS(short message service)), MMS(multimedia message service), EMS(e-mail massage service)等)、PIM(personal information management、個人情報管理)データ、コールログ(call log)、マルチメディアデータ(image, moving picture, audio等)等である。前記ユーザデータは、多数のデータで構成されるため、前記ユーザデータを圧縮して格納する場合、前記主メモリ１３０の効率を大きく高めることができる。前記ユーザデータの圧縮方法は、各アイテム別に圧縮効率の高い圧縮方法を使用することができる。
【００２１】
前記のように、メモリ制御部１１０に圧縮／解除器を含めて前記フュージョンメモリ１００を具現すると、前記主メモリ１３０の格納領域を効率的に使用することができる。即ち、前記主メモリ１３０は、前記メモリ制御部１１０によって圧縮されたバイナリデータを格納し、これにより、前記主メモリ１３０のシステム領域及びユーザ領域の使用空間は、圧縮していないバイナリデータを格納するときより、さらに効率的に使用することができる。従って、前記主メモリ１３０のシステム領域により多くのコードを格納したり、又は前記システム領域の使用量を減らしてその空間をユーザ領域として使用することができる。
【００２２】
図２は、前記図１と同一の構成を持つ本発明の実施例に係るフュージョンメモリ１００とホスト装置との構成を示す図面である。
【００２３】
前記図２を参照すると、ホスト装置３００は、ホストＣＰＵ３１０とホストメモリ３２０とを備える。ここで、前記ホスト装置３００は、前記のように、携帯端末機である。このような場合、前記ホストＣＰＵ３１０は、端末機制御部であり、携帯端末機の全般的な動作を制御する。また、前記ホストメモリ３２０は、ホスト装置３００のバイナリデータを格納する。また、前記ホストメモリ３２０は、ホスト装置３００のワーキングメモリ(working memory)として動作する。また、ホストソフトウェアモジュール２００は、ホスト装置３００のソフトウェアとして、ホスト装置３００のアプリケーションを処理するアプリケーション２３０、前記フュージョンメモリ１００の動作を制御するメモリ制御ソフトウェア２１０及びフュージョンメモリ１００に格納されるバイナリデータの圧縮及び圧縮解除の機能を制御する圧縮／解除制御ソフトウェア２２０等からなる。
【００２４】
図２のような構造において、フュージョンメモリ１００のメモリ制御部１１０は、内部に、主メモリ１３０にバイナリデータを圧縮して格納し、前記圧縮格納されたバイナリデータを解除する圧縮／解除部１１５を備える。また、前記ホスト制御部３１０は、フュージョンメモリ１００のメモリ制御部１１０とアドレスライン、データライン及びコマンドラインで連結され、メモリ制御ソフトウェア２１０は、各々の制御ソフトウェア、即ち、圧縮／解除制御ソフトウェア２２０と連動されて前記フュージョンメモリ１００の当該アプリケーションの動作を制御する。このとき、特定の内容が変更される場合、前記アプリケーション２３０は、前記特定作業を全部行わず、メモリ制御部１１０及びメモリ制御ソフトウェア２１０が先に前記特定作業を行い、その後、該当するアプリケーションに結果をリターンする。即ち、前記主メモリ１３０に格納するバイナリデータは、単純に格納される形態ではなく、特定の形態に変化して格納される。ここで、前記特定の形態はファイルシステム(embedded file system)であり、本発明の実施例では、ユーザデータを前記ファイルシステムとして格納することができる。また、前記主メモリ１３０に格納されるバイナリデータは圧縮されたデータである。
【００２５】
前記フュージョンメモリ１００の主メモリ１３０は、ＮＡＮＤフラッシュメモリである。前記ＮＡＮＤフラッシュメモリにおいて、ページは、バイナリデータをアクセス(read及びwrite)する単位を表し、ブロックは、バイナリデータを消す単位を表す。この場合、前記ＮＡＮＤフラッシュメモリにおいて、ページは、一定の大きさ（例えば、５１２バイト）以上に構成することができ、前記ブロックは、一定のページ（例えば、３２ページ）以上の大きさで構成することができる。前記ＮＡＮＤフラッシュメモリは、バイナリデータを格納する前に、まずデータを消さなければならない。従って、バイナリデータの格納時に、前記メモリ制御部１１０は、前記主メモリ１３０の該当するアドレス領域をブロック単位で消し(erase)、その後、ページ単位でバイナリデータを格納(write)する。
【００２６】
また、前記フュージョンメモリ１００の主メモリ１３０は、前記のように、システム領域及びユーザ領域に区分され、前記システム領域は、疑似ＮＯＲマッピング領域及びＲＡＭマッピング領域に区分することができる。この場合、前記ホスト制御部３１０は、前記主メモリ１３０のシステム領域のバイナリデータをＮＯＲインターフェース方法及びＮＡＮＤインターフェース方法でアクセスすることができる。この場合、前記メモリ制御部１１０は、前記主メモリ１３０のシステム領域にバイナリデータを格納するとき、ＮＡＮＤインターフェース方法で格納する。また、メモリ制御部１１０は、前記主メモリ１３０のシステム領域に格納されたバイナリデータをリードするとき、前記疑似ＮＯＲマッピング領域のバイナリデータは、ＮＯＲインターフェース方法でリードすることができ、前記ＲＡＭマッピング領域のバイナリデータは、ＮＡＮＤインターフェース方法でリードすることができる。前記ＮＯＲインターフェース方法は、バイト単位でバイナリデータをアクセスし、ＮＡＮＤインターフェース方法は、前記のように、ページ単位でバイナリデータをアクセスする。また、前記フュージョンメモリ１００は、バイナリデータをアクセスするときは、前記主メモリ１３０に格納されるバイナリデータを圧縮し、前記圧縮されたバイナリデータを出力するときは、これを元のバイナリデータに圧縮解除する。
【００２７】
図３は、本発明の実施例に係るフュージョンメモリ１００が、コードを圧縮して主メモリ１３０に格納し、前記圧縮されたコードをリードして圧縮解除した後、出力する動作を説明するための図面である。前記フュージョンメモリ１００は、内部にロジックで構成された圧縮器４６０及び圧縮解除器４７０を備える。図３では、コードを２：１に圧縮する例を示している。
【００２８】
前記図３を参照すると、前記フュージョンメモリ１００にコードを格納するとき、前記メモリ制御部１１０は、ダウンロードされるバイナリデータを圧縮して前記主メモリ１３０のシステム領域に格納し、前記格納されたコードをリードするとき、前記メモリ制御部１１０は、前記主メモリ１３０に格納された圧縮コードを解除して出力する。即ち、コードを格納するとき、前記フュージョンメモリ１００は、受信されたコードを直ちに主メモリ１３０のシステム領域に格納するのではなく、メモリ制御部１１０の内部に位置する圧縮器４６０でコードを圧縮した後に格納する。また、前記コードを実行するとき、前記主メモリ１３０からリードされるコードの圧縮を解除し、元のコードに復元した後に出力して実行する。
【００２９】
まず、ホストメモリ３２０に格納されたコード（ここでは、ファームウェア又はシステムソフトウェアである。）を前記主メモリ１３０に格納する場合、前記メモリ制御部１１０は、前記ホストメモリ３２０に格納されたコードをアクセスした後、圧縮器（compressor)４６０で圧縮し、前記圧縮されたコードを前記主メモリ１３０のシステム領域に格納する。ここでは、前記圧縮器４６０が、２０Ｍｂｙｔｅｓのコードを１０Ｍｂｙｔｅｓに圧縮する例を示している。次に、前記主メモリ１３０のシステム領域に格納されたコードを出力する場合、前記メモリ制御部１１０は、前記主メモリ１３０のシステム領域に格納されている圧縮されたコードをアクセスし、圧縮解除器(decompressor)４７０で圧縮を解除して元のコードに復元した後、前記ホストメモリ３２０に出力する。ここでは、前記圧縮解除器４７０が、１０Ｍｂｙｔｅｓのコードを２０Ｍｂｙｔｅｓに復元する例を示している。
【００３０】
図４は、本発明の実施例に係るフュージョンメモリ１００が、ユーザデータを圧縮して前記主メモリ１３０に格納し、前記圧縮されたユーザデータをリードして圧縮解除した後、出力する動作を説明するための図面である。前記フュージョンメモリ１００は、内部にロジックで構成された圧縮器４６０及び圧縮解除器４７０を備える。図４では、前記圧縮器４６０が、バイナリデータを２：１に圧縮する例を示している。
【００３１】
前記図４を参照すると、まず、ホストメモリ３２０に格納されたユーザデータを前記主メモリ１３０に格納する場合、前記メモリ制御部１１０は、前記ホストメモリ３２０に格納されたバイナリデータをアクセスした後、圧縮器４６０で圧縮し、前記主メモリ１３０のユーザデータ領域に格納する。次に、前記主メモリ１３０のユーザデータ領域に格納されたユーザデータを出力する場合、前記メモリ制御部１１０は、前記主メモリ１３０のユーザデータ領域に格納されている圧縮されたユーザデータをアクセスし、圧縮解除器４７０で圧縮を解除して元のユーザデータに復元してバッファリングし、前記バッファリングされたユーザデータは、ホストメモリ３２０に格納される。
【００３２】
前記のように、フュージョンメモリ１００は、ユーザデータを格納するとき、前記ユーザデータを主メモリ１３０のユーザ領域に直ちに格納せず、メモリ制御部１１０の内部に備えられた圧縮器４６０で圧縮し、前記圧縮されたユーザデータを前記主メモリ１３０のユーザ領域に格納する。また、前記ユーザデータをロードする場合、前記フュージョンメモリ１００は、前記主メモリ１３０のユーザ領域に格納されている圧縮されたユーザデータをアクセスし、圧縮を解除して復元し、前記復元されたユーザデータをホストメモリ３２０にロードする。
【００３３】
前記図３及び図４に示すように、フュージョンメモリ１００にバイナリデータ（コード及び／又はユーザデータ）を格納する場合、前記メモリ制御部１１０は、前記格納するバイナリデータを圧縮して前記主メモリ１３０のシステム領域又はユーザデータ領域に格納し、必要に応じて、前記圧縮格納されたバイナリデータを圧縮解除して出力する。従って、前記フュージョンメモリ１００は、バイナリデータを圧縮格納することにより、主メモリ１３０の格納空間を効率的に使用することができる。この場合、前記コード及びユーザデータは、バイナリデータの特性によって異なる圧縮器４６０及び圧縮解除器４７０を使用することができる。即ち、コードを圧縮及び圧縮解除する性能が優れているコード圧縮器及びコード圧縮解除器と、ユーザデータを圧縮及び圧縮解除する性能が優れているデータ圧縮器及びデータ圧縮解除器を各々備えることができる。このような場合、前記圧縮器４６０は、コード圧縮器及びデータ圧縮器として構成され、前記圧縮解除器４７０は、コード圧縮解除器及びデータ圧縮解除器として構成される。従って、前記圧縮器４６０及び圧縮解除器４７０は、各々コード及びデータ圧縮器と、コード及びデータ圧縮解除器を各々構成することができ、また、これらのうちの一つの圧縮器及び圧縮解除器として構成することができる。また、前記コード(及び／又はデータ)圧縮器及び圧縮解除器は、コード（及び／又はデータ）の特性によって複数の圧縮器及び圧縮解除器で構成することもできる。
【００３４】
また、前記ホスト制御部３１０は、フュージョンメモリ１００に格納されたバイナリデータをＮＯＲ及びＮＡＮＤインターフェース方法でアクセスすることができる。これにより、前記ホスト制御部３１０は、前記フュージョンメモリ１００を、大容量のデータを格納するデータメモリ機能以外に、ホスト装置３００のプログラムメモリとして使用することができる。即ち、前記メモリ制御部１１０は、前記ホスト制御部３１０の制御下に、前記システム領域に格納されるコードをＮＡＮＤ及びＮＯＲインターフェース方法でアクセスすることができる。このとき、前記システム領域の疑似ＮＯＲマッピング領域にコードを格納する場合、前記メモリ制御部１１０は、前記ホスト制御部３１０からダウンロードされるコードをＮＡＮＤインターフェース方法で前記主メモリ１３０のシステム領域の疑似ＮＯＲマッピング領域に格納する。また、前記疑似ＮＯＲマッピング領域からコードをリードする場合、前記メモリ制御部１１０は、前記主メモリ１３０の疑似ＮＯＲマッピング領域に格納されたコードをＮＡＮＤインターフェース方法でリードし、前記リードされたコードのアドレスをＮＯＲインターフェース方法でアクセスできるように変換して補助メモリ１２０にバッファリングし、これを前記ホスト制御部３１０に通知する。すると、前記ホスト制御部３１０は、前記補助メモリ１２０にバッファリングされたコードをＮＯＲインターフェース方法でアクセスして処理する。
【００３５】
また、前記システム領域のＲＡＭマッピング領域にコードを格納する場合、前記メモリ制御部１１０は、前記ホスト制御部３１０からダウンロードされるコードをＮＡＮＤインターフェース方法で前記主メモリ１３０のシステム領域のＲＡＭマッピング領域に格納する。また、前記ＲＡＭマッピング領域からコードをリードする場合、前記メモリ制御部１１０は、前記主メモリ１３０のＲＡＭマッピング領域に格納されたコードをＮＡＮＤインターフェース方法でリードし、ホスト制御部３１０は、リードされるコードをＮＡＮＤインターフェース方法でホストメモリ３２０に格納する。
【００３６】
図５は、本発明の実施例に係るホスト装置３００とフュージョンメモリ１００との構成を説明するための図面である。
【００３７】
前記図５を参照すると、ホスト制御部３１０は、ホスト装置３００の全般的な動作を制御し、また、ホストソフトウェアモジュールを備えて前記フュージョンメモリ１００のライト及びリードアクセス動作を制御する。ホストメモリ３２０は、前記ホスト制御部３１０のワーキングメモリとしての機能を行う。前記ホストメモリ３２０は、ＲＡＭを使用することができる。また、前記ホスト制御部３１０は、前記フュージョンメモリ１００をアクセスするためにホストメモリマップ３３０を利用する。前記ホストメモリマップ３３０は、前記システム領域及びユーザ領域のＲＡＭ領域３３５、３３７と、システム領域の疑似ＮＯＲマッピング領域の疑似ＮＯＲ領域３３３とを備える。ここで、前記ＲＡＭ領域３３５、３３７は、実領域(real space)であって、前記ホスト制御部３１０がフュージョンメモリ１００の主メモリ１３０のＲＡＭマッピング領域１３５及びユーザ領域１３７をアクセスするときに使用する領域であり、ホストメモリマップ３３０の疑似ＮＯＲ領域３３３は、仮想領域(virtual space)であって、前記ホスト制御部３１０が前記フュージョンメモリ１００の主メモリ１３０の疑似ＮＯＲマッピング領域１３３をアクセスするときに使用する領域である。従って、前記のように、ホスト制御部３１０のメモリマップは、フュージョンメモリ１００の疑似ＮＯＲマッピング領域１３３をアクセスするための疑似ＮＯＲ領域３３３と、実際の物理的なホストメモリ３２０のＲＡＭ領域３３５，３３７とに分類することができる。
【００３８】
前記フュージョンメモリ１００は、前記のように、メモリ制御部１１０と、補助メモリ１２０と、主メモリ１３０とを備える。ここで、前記メモリ制御部１１０は、前記ホスト制御部３１０の制御下に、前記主メモリ１３０のバイナリデータをＮＯＲ及びＮＡＮＤインターフェース方法でアクセスする機能及びアクセスされるバイナリデータの圧縮及び圧縮解除機能を行う。前記メモリ制御部１１０は、圧縮器４６０及び圧縮解除器４７０を備え、前記主メモリ１３０に格納されるバイナリデータを圧縮し、前記主メモリ１３０からリードされる圧縮バイナリデータの圧縮を解除する。また、前記メモリ制御部１１０は、内部にバッファを備えることができ、ライト時に、前記圧縮されたデータをページの大きさでバッファリングして前記主メモリ１３０の該当するマッピング領域にＮＡＮＤインターフェース方法でライトし、リード時に、前記主メモリ１３０のマッピング領域の特性によって、当該領域の圧縮データをＮＡＮＤインターフェース及びＮＯＲインターフェース方法でリードできるように制御する。
【００３９】
前記補助メモリ１２０は、第１補助メモリ１２３及び第２補助メモリ１２５から構成され、前記２つの補助メモリ１２３及び１２５は、各々独立に構成することができ、また、一つのメモリとして構成し、その領域を分離して使用することができる。本発明の実施例では、前記第１及び第２補助メモリ１２３及び１２５は、前記フュージョンメモリ１００のパッケージの内部に一つのメモリとして構成され、その領域を分けて前記第１及び第２補助メモリ１２３及び１２５として使用すると仮定する。ここで、前記第２補助メモリ１２５は、ライトモード時には、ダウンロードされるバイナリデータを圧縮するためにバッファリングし、リードモード時には、主メモリ１３０からリードされる圧縮データを復元するためにバッファリングする機能を行うことができる。また、前記第１補助メモリ１２３は、ライトモード時には、前記圧縮されたデータを前記主メモリ１３０にＮＡＮＤインターフェース方法でライトするためにバッファリングし、リードモード時には、復元された疑似ＮＯＲマッピング領域のコードがＮＯＲインターフェース方法でリードされるようにバッファリングする機能を行うことができる。前記補助メモリ１２０は、ＲＡＭを使用することができる。前記主メモリ１３０は、コードを格納するシステム領域及びユーザデータを格納するユーザ領域１３７に分けられ、前記システム領域は、ＮＯＲインターフェース方法でコードがアクセスされる疑似ＮＯＲマッピング領域１３３及びＮＡＮＤインターフェース方法でコードがアクセスされるＲＡＭマッピング領域１３５に分けられる。ここで、前記バイナリデータを前記主メモリ１３０にライトする場合、前記メモリ制御部１１０は、前記ページ単位のデータで前記主メモリ１３０にライトするようになる。そのために、前記メモリ制御部１１０は、ページ単位のバッファを備えることができ、また、前記補助メモリ１２０を利用することもできる。本発明の実施例では、前記ライトモード時に前記ページ単位のバイナリデータをバッファリングするバッファは、前記補助メモリ１２０を使用すると仮定する。このとき、ライトされるバイナリデータのバッファは、補助メモリ１２０の第１補助メモリ１２３を使用することができる。
【００４０】
本発明の実施例では、前記圧縮器４６０及び圧縮解除器４７０を備えるフュージョンメモリ１００について説明している。しかし、前記フュージョンメモリ１００は、圧縮器４６０及び圧縮解除器４７０を備えず、前記主メモリ１３０の領域を、前記のように、システム領域及びユーザ領域に分け、前記システム領域をＮＯＲインターフェース領域及びＮＡＮＤインターフェース領域に分けて具現することもできる。また、前記フュージョンメモリ１００は、圧縮器４６０及び圧縮解除器４７０を備え、前記主メモリ１３０を一つのインターフェース方法（ＮＡＮＤインターフェース方法又はＮＯＲインターフェース方法）だけでアクセスすることもできる。ここで、バイナリデータのコードを中心に、本発明の実施例に係る前記３つの構成のフュージョンメモリ１００の動作について説明する。
【００４１】
まず、前記第１の構造を持つフュージョンメモリ(圧縮器及び圧縮解除器を備え、メモリをＮＡＮＤインターフェース及びＮＯＲインターフェースアクセス領域に区分する方法)の動作について説明する。
【００４２】
前記主メモリ１３０の疑似ＮＯＲマッピング領域又はＲＡＭマッピング領域にコードをライトする場合、前記ホスト制御部３１０は、格納するコードをダウンロードし、メモリ制御部１１０は、前記ダウンロードされるコードを第２補助メモリ１２５にバッファリングする。また、圧縮器４６０は、前記第２補助メモリ１２５にバッファリングされたコードを設定された方法で圧縮し、前記メモリ制御部１１０は、前記圧縮されたコードを第１補助メモリ１２３（又は、メモリ制御部の内部バッファ）にバッファリングする。また、前記メモリ制御部１１０は、前記第１補助メモリ１２３にバッファリングされた圧縮コードをページ単位でアクセスし、主メモリ１３０の対応する領域（疑似ＮＯＲマッピング領域又はＲＡＭマッピング領域）にＮＡＮＤインターフェース方法でライトする。また、前記主メモリ１３０の疑似ＮＯＲマッピング領域に格納されたコードをリードする場合、前記メモリ制御部１１０は、主メモリ１３０の疑似ＮＯＲマッピング領域のコードをＮＡＮＤインターフェース方法でリードして第２補助メモリ１２５にバッファリングし、圧縮解除器４７０は、前記バッファリングされた圧縮コードを復元し、前記メモリ制御部１１０は、前記復元されたコードをＮＯＲインターフェース方法でアクセスできるように、アドレスを整列して第１補助メモリ１２３に格納する。また、ホスト制御部３１０は、前記第１補助メモリ１２０に格納されたコードをＮＯＲインターフェース方法でリードして処理する。このとき、前記ＮＯＲインターフェース方法でアクセスされるコードは、ホスト制御部３１０により直接処理される。また、前記主メモリ１３０のＲＡＭマッピング領域に格納されたコードをリードする場合、前記メモリ制御部１１０は、主メモリ１３０のＲＡＭマッピング領域のコードをＮＡＮＤインターフェース方法でリードして第２補助メモリ１２５にバッファリングし、圧縮解除器４７０は、前記バッファリングされた圧縮コードを復元し、ホスト制御部３１０は、復元されたコードをＮＡＮＤインターフェース方法でアクセスして、ホストメモリマップのＲＡＭ領域３５５のリアル領域であるホストメモリ３２０に格納する。その後、前記ホスト制御部３１０は、前記ホストメモリ３２０に格納されたコードをリードして処理する。
【００４３】
次に、前記第２の構造を持つフュージョンメモリ（圧縮器及び圧縮解除器を備えず、主メモリをＮＡＮＤインターフェース及びＮＯＲインターフェースアクセス領域に区分する方法）の動作について説明する。
【００４４】
前記フュージョンメモリ１００が圧縮器及び圧縮解除器を備えていない場合、前記フュージョンメモリ１００は、ダウンロードされるバイナリデータを主メモリ１３０の対応する領域にＮＡＮＤインターフェース方法で格納し、リード時には、マッピング領域のインターフェース方法によってバイナリデータをリードする。コードのライト及びリードの動作について説明すると、前記主メモリ１３０の疑似ＮＯＲマッピング領域又はＲＡＭマッピング領域にコードをライトする場合、前記ホスト制御部３１０は、格納するコードをダウンロードし、メモリ制御部１１０は、前記ダウンロードされるコードを主メモリ１３０の対応する領域（疑似ＮＯＲマッピング領域又はＲＡＭマッピング領域）にＮＡＮＤインターフェース方法でライトする。また、前記主メモリ１３０の疑似ＮＯＲマッピング領域に格納されたコードをリードする場合、前記メモリ制御部１１０は、主メモリ１３０の疑似ＮＯＲマッピング領域のコードをＮＡＮＤインターフェース方法でリードし、前記リードされたコードをＮＯＲインターフェース方法でアクセスできるように、アドレスを整列して補助メモリ１２０に格納する。また、ホスト制御部３１０は、前記補助メモリ１２０に格納されたコードをＮＯＲインターフェース方法でリードして処理する。このとき、前記ＮＯＲインターフェース方法でアクセスされるコードは、ホスト制御部３１０により直接処理される。また、前記主メモリ１３０のＲＡＭマッピング領域に格納されたコードをリードする場合、前記メモリ制御部１１０は、主メモリ１３０のＲＡＭマッピング領域のコードをＮＡＮＤインターフェース方法でリードし、ホスト制御部３１０は、リードされるコードをＮＡＮＤインターフェース方法でアクセスしてホストメモリ３２０に格納する。その後、前記ホスト制御部３１０は、前記ホストメモリ３２０に格納されたコードをリードして処理する。
【００４５】
次に、前記第３の構造を持つフュージョンメモリ(圧縮器及び圧縮解除器を備え、メモリをＮＡＮＤインターフェース及びＮＯＲインターフェースアクセス領域に区分しない方法)の動作について説明する。
【００４６】
前記主メモリ１３０のコードをライトする場合、前記ホスト制御部３１０は、格納するコードをダウンロードし、メモリ制御部１１０は、前記ダウンロードされるコードを第２補助メモリ１２５にバッファリングする。また、圧縮器４６０は、前記第２補助メモリ１２５にバッファリングされたコードを設定された方法で圧縮し、前記メモリ制御部１１０は、前記圧縮されたコードを第１補助メモリ１２３（又は、メモリ制御部の内部バッファ）にバッファリングする。また、前記メモリ制御部１１０は、前記第１補助メモリ１２３にバッファリングされた圧縮コードをページ単位でアクセスして主メモリ１３０にＮＡＮＤインターフェース方法でライトする。また、前記主メモリ１３０に格納されたコードをリードする場合、前記メモリ制御部１１０は、主メモリ１３０に格納されたコードをリードして第２補助メモリ１２５にバッファリングし、圧縮解除器４７０は、前記バッファリングされた圧縮コードを復元する。また、ホスト制御部３１０は、フュージョンメモリ１００から復元されたコードをリードして処理する。
【００４７】
以下の説明では、前記フュージョンメモリ１００が圧縮器４６０及び圧縮解除器４７０を備え、主メモリ１３０は、システム領域及びユーザ領域を備え、前記システム領域は、疑似ＮＯＲマッピング領域及びＲＡＭマッピング領域から構成された例を中心に説明する。
【００４８】
図６〜図９は、本発明の実施例に係るフュージョンメモリ１００のバイナリデータをアクセスする過程を説明するための図面である。図６は、ホスト装置３００において、前記フュージョンメモリ１００にコードを格納する過程を説明するための図面であり、図７は、フュージョンメモリ１００の疑似ＮＯＲマッピング領域１３３に格納されたコードをリードする過程を説明するための図面であり、図８は、フュージョンメモリ１００のＲＡＭマッピング領域１３５に格納されたコードをリードする過程を説明するための図面であり、図９は、フュージョンメモリ１００のユーザ領域にユーザデータを格納し、格納されたユーザデータをリードする過程を説明するための図面である。
【００４９】
前記図６を参照して、前記ホスト制御部３１０の制御下に、前記フュージョンメモリ１００にダウンロードされるバイナリデータを格納する過程について説明する。ここで、前記バイナリデータは、コードであり、前記コードは、ファームウェア及びソフトウェア等のプログラムである。
【００５０】
まず、初期にコードを前記フュージョンメモリ１００にダウンロードする場合、メモリ制御ソフトウェア２１０は、伝達されるコードのサイズ及びアドレスを判断して前記主メモリ１３０のどの位置にダウンロードするかを決定し、圧縮／解除制御ソフトウェア２２０は、圧縮方法に関するフラグを内部的に設定する。その後、ホスト制御部３１０は、バスを介して前記格納するコードをホストメモリ３２０に一旦格納する。このとき、前記コードは、前記主メモリ１３０の疑似ＮＯＲマッピング領域１３３又は／及びＲＡＭマッピング領域１３５に格納することができる。即ち、前記格納しようとするコードは、前記主メモリ１３０の疑似ＮＯＲマッピング領域１３３に格納することができ、また、ＲＡＭマッピング領域１３５に格納することができ、また、前記疑似ＮＯＲマッピング領域１３３に一部のコードを格納し、前記ＲＡＭマッピング領域１３５に残りのコードを格納することができる。従って、前記図６に示すように、前記ホストメモリマップ３３０は、仮想領域である疑似ＮＯＲ領域３３３とホストメモリ３２０のＲＡＭ領域にマッピングすることができる。前記ホスト制御部３１０は、前記メモリ制御ソフトウェア２１０により、前記ホストメモリ３２０に格納されたコードをバスを介してフュージョンメモリ１００に伝達する。このとき、前記メモリ制御ソフトウェア２１０は、前記フュージョンメモリ１００のメモリ制御部１１０に前記コードの圧縮方法及び前記圧縮されたコードを疑似ＮＯＲマッピング領域１３３又は／及びＲＡＭマッピング領域１３５に格納するように指示する制御情報を伝送することができる。
【００５１】
すると、前記フュージョンメモリ１００のメモリ制御部１１０は、前記ダウンロードされるコードを前記第２補助メモリ１２５にバッファリングし、圧縮器４６０は、前記第２補助メモリ１２５にバッファリングされたコードを設定された圧縮方法で圧縮した後、前記第１補助メモリ１２３（又は、メモリ制御部１１０の内部バッファ）にバッファリングする。また、前記メモリ制御部１１０は、前記第１補助メモリ１２３にバッファリングされた圧縮されたコードを前記主メモリ１３０の設定された位置にＮＡＮＤインターフェース方法で格納(write)する。又は、前記バッファリング過程を経ず主メモリ１３０に格納することもできる。このとき、前記主メモリ１３０の格納位置は、前記のように、疑似ＮＯＲマッピング領域１３３又はＲＡＭマッピング領域１３５である。その後、前記主メモリ１３０のシステム領域に圧縮コードが正常に格納されると、前記メモリ制御部１１０は、前記ホスト制御部３１０に処理完了をリターンさせてホスト制御部３１０が次の動作を行えるようにする。
【００５２】
前記のような方法で、前記ホスト制御部３１０は、前記ホストメモリ３２０に格納されたコードを前記フュージョンメモリ１００にダウンロードし、前記メモリ制御部１１０は、前記ダウンロードされるバイナリデータを設定された圧縮方法で圧縮した後、設定された主メモリ１３０の設定されたマッピング領域に格納し、これを前記ホスト制御部３１０にリターンする動作を繰り返して行う。このとき、前記主メモリ１３０のシステム領域に格納されるコードは、圧縮器４６０で圧縮された後に格納され、これにより、前記フュージョンメモリ１００の格納効率を向上させることができる。
【００５３】
前記のように、フュージョンメモリ１００は、コードを前記主メモリ１３０に格納する場合、前記ホスト制御部３１０の制御下に、コードの圧縮方法及びコードの格納位置が決定される。また、前記ホスト制御部３１０からダウンロードされるコードをバッファリングした後、前記設定された圧縮方法でコードを圧縮し、前記圧縮されたコードをＮＡＮＤインターフェース方法で前記主メモリ１３０の設定されたマッピング領域に格納する。ここで、前記マッピング領域は、疑似ＮＯＲマッピング領域１３３又はＲＡＭマッピング領域１３５である。本発明の実施例では、前記コード圧縮は、同一の圧縮方法を使用すると仮定し、前記疑似ＮＯＲマッピング領域１３３及びＲＡＭマッピング領域１３５へのコードの格納方法は、ＮＡＮＤインターフェース方法を使用すると仮定する。
【００５４】
本発明の実施例では、前記主メモリ１３０の疑似ＮＯＲマッピング領域１３３に格納されたコードは、ＮＯＲインターフェース方法でアクセスされて処理され、前記ＲＡＭマッピング領域１３５に格納されたコードは、ＮＡＮＤインターフェース方法でアクセスされて処理される。まず、前記疑似ＮＯＲマッピング領域１３３に格納されたコードのアクセス過程について説明し、次に、前記ＲＡＭマッピング領域１３５に格納されたコードのアクセス過程について説明する。
【００５５】
前記図７を参照して、前記フュージョンメモリ１００の疑似ＮＯＲマッピング領域１３３に格納されたコードをリードする過程について説明する。
【００５６】
前記主メモリ１３０のシステムに格納されたコードのリードアクセス、即ち、コード遂行によるメモリ接近が発生した場合、前記ホスト制御部３１０は、前記コードのアクセス領域が疑似ＮＯＲマッピング領域１３３の領域であるか、それとも、ＲＡＭマッピング領域１３５の領域であるかを把握している。このとき、前記疑似ＮＯＲマッピング領域１３３のコードリードアクセスが発生した場合、前記ホスト制御部３１０は、該当するコードのリード動作を制御するためのメモリ制御ソフトウェア２１０が動作するように制御する。すると、前記メモリ制御ソフトウェア２１０は、圧縮／解除制御ソフトウェア２２０から当該アドレスに格納されたコードの圧縮方法フラグを伝達された後、前記アドレス、コマンド及び圧縮方法等に関する制御情報を前記フュージョンメモリ１００のメモリ制御部１１０に伝達する。また、前記メモリ制御部１１０は、前記制御情報を分析し、コードリードアクセス方法及び内部の圧縮解除器４７０に圧縮解除フラグによる圧縮解除方法を設定する。また、前記メモリ制御部１１０は、前記主メモリ１３０の疑似ＮＯＲマッピング領域１３３の当該位置に格納されたコードをＮＡＮＤインターフェース方法でリードした後、これを第２補助メモリ１２５にバッファリングする。また、前記圧縮解除器４７０は、前記第２補助メモリ１２５にバッファリングされた圧縮コードを復元する。その後、前記メモリ制御部１１０は、前記圧縮解除されたコードを内部のＮＯＲインターフェース制御部を介して、アドレスを前記ホスト制御部３１０がＮＯＲインターフェース方法でリードできるように変換し、前記第１補助メモリ１２３にバッファリングする。すると、前記ホスト制御部３１０は、前記第１補助メモリ１２３のコードをバイト単位でアクセスして処理する。
【００５７】
前記のように、前記メモリ制御部１１０は、前記ホスト制御部３１０のリード命令に応じて対応するアドレス位置のコードをＮＡＮＤインターフェース方法でリードして第２補助メモリ１２５にバッファリングし、前記バッファリングされた圧縮コードを復元した後、前記ホスト制御部３１０がＮＯＲインターフェース方法でアクセスできるようにバイト単位で整列し、前記第１補助メモリ１２３にバッファリングする。すると、前記ホスト制御部３１０は、ＮＯＲインターフェース方法で前記第１補助メモリ１２３にバッファリングされたコードをリードして処理する。このとき、前記ホスト制御部３１０は、前記第１補助メモリ１２３に格納されたコードを前記第１補助メモリ１２３からリードして処理する。
【００５８】
前記主メモリ１３０の疑似ＮＯＲマッピング領域のコードをリードする動作について説明すると、前記フュージョンメモリ１００のメモリ制御部１１０は、前記疑似ＮＯＲ領域に格納されたコードをＮＡＮＤインターフェース方法でリードして第２補助メモリにバッファリングし、圧縮器４６０を制御して前記圧縮されたコードを復元した後、前記第２補助メモリにバッファリングする。その後、前記メモリ制御部１１０は、前記ホスト制御部３１０からＮＯＲインターフェース方法でリードできるように、前記第２補助メモリにバッファリングされたコードのアドレスを変換し、前記第１補助メモリにバッファリングした後、これを前記ホスト制御部３１０に通知する。すると、前記ホスト制御部３１０は、前記第１補助メモリ１２３にバッファリングされたコードをＮＯＲインターフェース方法でリードして処理する。このとき、前記疑似ＮＯＲマッピング領域に格納されるコードはプログラムであってもよく、このような場合、前記ホスト制御部３１０は、リードされるコードをホストメモリ３２０にバッファリングせず、前記フュージョンメモリ１００の補助メモリ１２０から直接リードして処理する。これにより、前記フュージョンメモリ１００は、内部の主メモリ１３０をＮＡＮＤインターフェース方法でアクセスしながら、ホスト装置とはＮＯＲインターフェース方法でコードをアクセスできる効果を持つ。従って、フュージョンメモリ１００は、ＮＡＮＤフラッシュの特性である大容量メモリ機能を持つと共に、ＮＯＲフラッシュの特性を具現できる効果を持つ。
【００５９】
前記図８を参照して、前記フュージョンメモリ１００のＲＡＭマッピング領域１３５に格納されたコードをリードする過程について説明する。
【００６０】
前記のように、主メモリ１３０のシステムに格納されたコードのリードアクセスが発生した場合、前記ホスト制御部３１０は、各々の疑似ＮＯＲマッピング領域１３３の領域とＲＡＭマッピング領域１３５の領域を把握している。そのため、前記ＲＡＭマッピング領域１３５のコードリードの要求が発生した場合、前記ホスト制御部３１０は、該当するコードのリード動作を制御するためのメモリ制御ソフトウェア２１０が動作するように制御する。すると、前記メモリ制御ソフトウェア２１０は、圧縮／解除制御ソフトウェア２２０から当該アドレスに格納されたコードの圧縮方法フラグを伝達された後、前記アドレス、コマンド及び圧縮方法等に関する制御情報を前記フュージョンメモリ１００のメモリ制御部１１０に伝達する。すると、前記メモリ制御部１１０は、前記制御情報を分析し、前記主メモリ１３０のアクセスインターフェース方法及び圧縮解除フラグによる圧縮解除器４７０でデータが圧縮されたデータであるか否を判断し、圧縮されたデータである場合には解除する。また、前記メモリ制御部１１０は、前記主メモリ１３０のＲＡＭマッピング領域１３５の当該位置に格納されたコードをＮＡＮＤインターフェース方法でリードした後、これを第２補助メモリ１２５にバッファリングする。また、前記圧縮解除器４７０は、前記第２補助メモリ１２５にバッファリングされた圧縮コードの圧縮を解除する。その後、前記メモリ制御部１１０は、これを前記ホスト制御部３１０に通知し、前記ホスト制御部３１０は、前記バッファリングされたコードをＮＡＮＤインターフェース方法でリードしてホストメモリ３２０に格納する。
【００６１】
前記のような動作を繰り返して、ホスト制御部３００は、前記フュージョンメモリ１００の主メモリ１３０のＲＡＭマッピング領域１３５に格納されたコードをＮＡＮＤインターフェース方法でリードし、ホストメモリ３２０に格納する。このとき、前記フュージョンメモリ１００は、前記ＲＡＭマッピング領域１３５に格納されたコードをリードして前記第２補助メモリ１２５にバッファリングし、前記バッファリングされたコードの圧縮を解除した後、前記ホストメモリマップ３３０のＲＡＭ領域３３５のアドレスに変換する。また、前記変換されたアドレスにより、前記ホスト制御部３１０が前記出力されるコードをＮＡＮＤインターフェース方法で読み出してホストメモリ３２０に格納する。
【００６２】
前記のように、フュージョンメモリ１００の前記メモリ制御部１１０は、前記ＲＡＭマッピング領域１３５に格納されたコードをリードする場合、まず、前記ＲＡＭマッピング領域１３５に格納されたコードをＮＡＮＤインターフェース方法でリードして前記第２補助メモリ１２５にバッファリングし、圧縮解除器４７０を制御して前記バッファリングされたコードの圧縮を解除する。その後、前記メモリ制御部１１０は、これを前記ホスト制御部３１０に通知し、前記ホスト制御部３１０は、前記フュージョンメモリ１００のコードをＮＡＮＤインターフェース方法でリードしてホストメモリ３２０に格納する。従って、前記フュージョンメモリ１００は、内部の主メモリ１３０をＮＡＮＤインターフェース方法でアクセスしながら、ホスト装置ともＮＡＮＤインターフェース方法でコードをアクセスすることができる。
【００６３】
前記図９を参照して、前記フュージョンメモリ１００のユーザ領域１３７にユーザデータをライトし、前記ライトされたユーザデータをリードする過程について説明する。
【００６４】
まず、前記主メモリ１３０のユーザ領域１３７にユーザデータをライトする場合の動作について説明する。ここで、前記ユーザデータは特定の形態で格納することができる。本発明の実施例において、前記ユーザデータがファイルシステム構造である場合を仮定して説明する。ファイルシステムアプリケーション２３０がユーザから特定のユーザデータのライト要求を受信すると、前記ファイルシステムアプリケーション２３０は、当該ユーザデータをホストメモリ３２０に格納する。また、前記ファイルシステムアプリケーション２３０は、メモリ制御ソフトウェア２１０に前記ユーザデータの格納が完了したことを通知し、前記ユーザデータを前記フュージョンメモリ１００にライトする旨の命令語を伝達する。すると、前記メモリ制御ソフトウェア２１０は、圧縮／解除制御ソフトウェア２２０からユーザデータの圧縮可否を伝達されて圧縮フラグを設定した後、これと共にユーザデータ及びファイル名を前記フュージョンメモリ１００のメモリ制御部１１０に伝達する。
【００６５】
すると、前記フュージョンメモリ１００のメモリ制御部１１０は、前記設定された圧縮フラグにより内部の圧縮器４６０の圧縮方法を設定し、前記受信されるユーザデータを第２補助メモリ１２５にバッファリングする。また、前記第２補助メモリ１２５にバッファリングされるユーザデータは、前記圧縮器４６０により設定された方法で圧縮され、前記圧縮されたユーザデータは、第１補助メモリ１２３にバッファリングされる。すると、前記メモリ制御部１００は、前記バッファリングされた圧縮されたユーザデータを前記主メモリ１３０のユーザ領域１３７の指定された位置に、前記メモリ制御ソフトウェア２１０から伝達されたファイル名でＮＡＮＤインターフェース方法でライトする。このような場合、ファイルの最初の部分には、識別子として使用するための圧縮されたフラグをライトする。また、前記当該ファイルを前記主メモリ１３０のユーザ領域１３７に圧縮してライトした後、前記メモリ制御部１１０は、これを前記メモリ制御ソフトウェア２１０にリターンする。
【００６６】
前記のような過程を繰り返して、前記ホスト装置３００のユーザデータを前記フュージョンメモリ１００の主メモリ１３０のユーザ領域１３７にＮＡＮＤインターフェース方法でライトする。
【００６７】
次に、前記フュージョンメモリ１００の主メモリ１３０のユーザ領域１３７にライトされたユーザデータをリードする過程について説明する。
【００６８】
ユーザから特定のデータのリード要求が発生すると、前記ファイルシステムアプリケーション２３０は、該当するユーザデータを格納するバッファ領域を前記ホストメモリ３２０に割り当て、前記メモリ制御ソフトウェア２１０は、前記ユーザデータのリードコマンドを伝達する。また、圧縮／解除制御ソフトウェア２２０は、リードされるユーザデータの圧縮を解除するための圧縮フラグを決定し、前記メモリ制御ソフトウェア２１０に伝達する。すると、前記メモリ制御ソフトウェア２１０は、ユーザデータをリードするためのコマンドをフュージョンメモリ１００のメモリ制御部１１０に伝達する。すると、前記メモリ制御部１１０は、前記圧縮解除器４７０に圧縮フラグを伝達し、前記圧縮されたユーザデータを前記主メモリ１３０のユーザ領域１３７からＮＡＮＤインターフェース方法でリードして第２補助メモリ１２５にバッファリングする。また、前記圧縮解除器４７０は、前記第２補助メモリ１２５にバッファリングされた圧縮されたユーザデータの圧縮を復元し、ホスト制御部３１０は、前記復元されたユーザデータをリードしてホストメモリ３２０に格納する。
【００６９】
このとき、前記ユーザデータを圧縮する方法は、前記コードを圧縮する方法と異なることもあり、その場合、前記圧縮器４６０及び圧縮解除器４７０は、前記のように、独立に構成することができる。即ち、前記圧縮器４６０は、コード圧縮器及びデータ圧縮器を各々別途に構成することができる。
【００７０】
図１０は、本発明の実施例に係るフュージョンメモリ装置の内部構成を示す図面である。
【００７１】
前記図１０を参照すると、フュージョンメモリ１００は、前記のように、メモリ制御部１１０、補助メモリ１２０、及び主メモリ１３０から構成される。ここで、前記主メモリ１３０は、コードを格納するシステム領域と、ユーザデータを格納するユーザ領域とから構成され、前記システム領域は、ＮＯＲインターフェース方法でアクセスされる疑似ＮＯＲマッピング領域と、ＮＡＮＤインターフェース方法でアクセスされるＲＡＭマッピング領域とから構成される。
【００７２】
また、前記メモリ制御部１１０は、前記メモリ制御部１１０の全般的な動作を制御するコア制御部４１０と、前記主メモリ１３０のユーザ領域のユーザデータを特定の形態でアクセスするためのファイルシステム制御部(embedded file system controller)４２０と、前記主メモリ１３０の疑似ＮＯＲマッピング領域をＮＯＲインターフェース方法でアクセスするＮＯＲインターフェース制御部(NOR interface controller)４３０と、エラー訂正コード(error correction code: ECC)を生成するエラー訂正制御部(ECC controller)４４０と、前記バイナリデータをアクセスするための圧縮フラグ及びアドレス情報を検出する情報検出器(info detecter)４５０と、前記主メモリ１３０に格納されるバイナリデータを圧縮する圧縮器４６０と、前記主メモリ１３０からリードされる圧縮データを復元する圧縮解除器４７０とから構成される。
【００７３】
図１１は、前記図１０のような構成を持つフュージョンメモリ１００とホスト装置との関係を説明するための図面である。
【００７４】
前記ホスト装置は、ホスト制御部３１０とホストメモリ３２０とを備える。前記ホストメモリ３２０は、ホスト装置のバイナリデータ(コード、ユーザデータ)を格納するメモリであって、前記ホスト装置のワーキングメモリとして動作することができる。また、メモリソフトウェアモジュールは、ホスト装置のアプリケーションを処理するアプリケーション、前記フュージョンメモリ１００の動作を制御するメモリ制御ソフトウェア２１０、及びバイナリデータの圧縮及び圧縮解除機能を行う圧縮／解除制御ソフトウェア２２０等からなる。前記ホストソフトウェアモジュールは、前記ホスト制御部３１０のソフトウェアモジュールであって、前記ホスト制御部３１０が前記フュージョンメモリ１００をアクセスするためのソフトウェアモジュールの構造を有する。
【００７５】
図１７は、前記図１０及び図１１の情報検出器４５０の動作を説明するための図面である。
【００７６】
前記図１７を参照すると、前記情報検出器４５０は、前記ホスト制御部３１０のメモリ制御ソフトウェア２１０から伝達されるアクセス制御情報から前記主メモリ１３０のバイナリデータをアクセスするためのアドレス変換及び圧縮種類を決定する機能を行う。前記のような機能を行う情報検出器４５０は、圧縮分析器４５３及びアドレス変換器４５５を備える。前記圧縮分析器４５３は、ダウンロードされるバイナリデータの制御情報から圧縮フラグを分析し、各リクエストに合う圧縮フラグを前記コア制御部４１０に伝達する。このとき、前記圧縮フラグは、前記主メモリ１３０の疑似ＮＯＲマッピング領域１３３に格納されるバイナリデータの圧縮を決定するフラグ(code1.comp)、ＲＡＭマッピング領域１３５に格納されるバイナリデータの圧縮を決定するフラグ(code2.comp)、及びユーザ領域に格納されるバイナリデータの圧縮を決定するフラグ(data.comp)等である。また、アドレス変換器４５５は、前記ホスト制御部３１０から伝達されるアドレスを前記主メモリ１３０の当該領域のアドレスに変換する。このとき、コードアクセスであると、前記アドレス変換器４５５は、変換されたコードアドレス_idに対する信号に変換し、前記コア制御部４１０に伝達する。ここで、前記コードアドレス_idは、前記主メモリ１３０の疑似ＮＯＲマッピング領域又はＲＡＭマッピング領域のアクセスを示す識別子である。また、ユーザデータアクセスであると、前記アドレス変換器４５５は、変換されたデータＣＭＤに対する信号に変換し、前記ファイルシステム制御部４２０に伝達する。ここで、前記ＣＭＤは、リード／ライトに対するコマンドを意味する。前記データＣＭＤに対する信号を入力するファイルシステム制御部４２０は、前記コア制御部４１０にファイルシステムのファイルが位置している実際の位置情報を伝達する。
【００７７】
すると、前記コア制御部４１０は、情報検出器４５０の出力によりアクセスされるバイナリデータの圧縮／解除方法を決定し、また、前記情報検出器４５０及びファイルシステム制御部４２０の出力により前記主メモリ１３０にバイナリデータをアクセスする位置を決定する。その後、前記コア制御部４１０は、バイナリデータのライト時に、前記決定された圧縮方法により前記圧縮器４６０を制御してダウンロードされるバイナリデータを圧縮し、前記変換されたアドレス情報に該当する主メモリ１３０の位置（疑似ＮＯＲマッピング領域、ＲＡＭマッピング領域、ユーザ領域）にバイナリデータをライトするように制御する。前記コア制御部４１０は、前記主メモリ１３０に圧縮されたデータをＮＡＮＤインターフェース方法でライトするためのページバッファを備えることができる。このような場合、前記コア制御部４１０は、第２補助メモリ１２５にバッファリングされた後、前記圧縮器４７０によって圧縮されたデータを内部のページバッファにバッファリングし、前記ページ単位でバッファリングされると、前記圧縮データを前記主メモリ１３０の該当する領域にＮＡＮＤインターフェース方法でライトするようになる。本発明の実施例では、前記コア制御部４１０のページバッファ機能を第１補助メモリ１２３を介して行うと仮定して説明する。また、前記コア制御部４１０は、バイナリデータのリード時に、前記変換されたアドレス情報に該当する主メモリ１３０の該当する位置（疑似ＮＯＲマッピング領域、ＲＡＭマッピング領域、ユーザ領域）に格納された圧縮バイナリデータをアクセスした後、前記決定された圧縮方法により、前記圧縮解除器４７０を制御し、圧縮されたバイナリデータの圧縮を解除した後に出力する。
【００７８】
ここで、前記バイナリデータがコードである場合のコードのライト及びリードの過程について説明する。
【００７９】
前記コア制御部４１０は、情報検出器４５０の出力を分析してバイナリデータのライト又はリードを確認する。このとき、バイナリデータのライトであると、前記コア制御部４１０は、前記情報検出器４５０から検出されたフラグ及び変換されるアドレスにより、前記ホスト装置からダウンロードされるバイナリデータを格納するための前記主メモリ１３０の領域（疑似ＮＯＲマッピング領域、ＲＡＭマッピング領域、ユーザ領域）、及びバイナリデータの圧縮方法を把握することができる。すると、前記コア制御部４１０は、前記ダウンロードされるバイナリデータを補助メモリ１２０にバッファリングし、前記バッファリングされるバイナリデータを対応する圧縮器４６０で圧縮した後に、前記変換アドレスに対応する領域（疑似ＮＯＲマッピング領域、ＲＡＭマッピング領域、ユーザ領域）の対応する位置に格納する。このとき、前記主メモリ１３０の対応する領域に格納されるバイナリデータ（コード又はユーザデータ）は、ＮＡＮＤインターフェース方法で格納される。従って、前記主メモリ１３０の疑似ＮＯＲマッピング領域及びＲＡＭマッピング領域に格納されるコードは、全てＮＡＮＤインターフェース方法で格納されることが分かる。
【００８０】
また、前記バイナリデータのリードであると、前記コア制御部４１０は、前記情報検出器４５０から検出されたフラグ及びアドレスを分析し、バイナリデータをリードするための前記主メモリ１３０の領域及び圧縮解除方法を確認する。このとき、前記バイナリデータの格納された領域が疑似ＮＯＲマッピング領域であると、前記コア制御部４１０は、前記主メモリ１３０の疑似ＮＯＲマッピング領域に格納されたバイナリデータをＮＡＮＤインターフェース方法でリードし、補助メモリ１２０にバッファリングし、圧縮解除器４７０は、前記バイナリデータの圧縮を復元する。その後、前記コア制御部４１０は、前記ＮＯＲインターフェース制御部４３０の動作を制御し、前記ＮＯＲインターフェース制御部４３０は、前記ホスト制御部３１０が前記バッファリングされたバイナリデータをＮＯＲインターフェース方法でリードできるように、前記補助メモリ１２０に前記復元されたバイナリデータをバッファリングする。即ち、前記ＮＯＲインターフェース制御部４３０は、前記ホスト制御部３１０がバイトアクセスできるように、前記復元バイナリデータのアドレスを変換して前記補助メモリ１２０にバッファリングし、これにより、前記ホスト制御部３１０は、前記補助メモリ１２０にバッファリングされた復元されたバイナリデータをＮＯＲインターフェース方法でリードして処理する。また、前記バイナリデータが格納された領域がＲＡＭマッピング領域であると、前記コア制御部４１０は、前記ＲＡＭマッピング領域に格納されたバイナリデータをＮＡＮＤインターフェース方法でリードして補助メモリ１２０にバッファリングし、圧縮解除器４７０が前記バッファリングされたバイナリデータの圧縮を復元する。また、ホスト制御部３１０は、前記復元されたバイナリデータをＮＡＮＤインターフェース方法でリードしてホストメモリ３２０に格納する。
【００８１】
次に、前記バイナリデータがユーザデータである場合の前記ユーザデータのライト及びリードの過程について説明する。
【００８２】
前記ホスト装置にユーザデータのライト情報がダウンロードされると、情報検出器４５０は、前記ユーザデータを格納するための主メモリ１３０の位置及びユーザデータの圧縮情報を検出してファイルシステム制御部４２０に伝達する。すると、前記ダウンロードされるユーザデータの形態（ファイルシステムの形態）を確認し、前記検出された圧縮情報及び格納位置情報を前記コア制御部４１０に伝達する。すると、前記コア制御部４１０は、前記圧縮情報により圧縮器４６０を制御して圧縮方法を決定し、ホスト装置にダウンロードされるユーザデータを補助メモリ１２０にバッファリングする。また、圧縮器４６０は、設定された圧縮方法により前記バッファリングされたユーザデータを圧縮し、前記コア制御部４１０は、前記圧縮されたユーザデータを前記主メモリ１３０のユーザ領域の設定された位置にＮＡＮＤインターフェース方法でライトする。
【００８３】
また、前記ホスト装置にユーザデータのリード情報がダウンロードされると、情報検出器４５０は、前記ダウンロードされる制御情報からユーザデータをリードするための主メモリ１３０の位置及びユーザデータの圧縮解除情報を検出してファイルシステム制御部４２０に伝達する。また、ファイルシステム制御部４２０は、これをコア制御部４１０に伝達する。すると、前記コア制御部４１０は、前記圧縮解除情報により圧縮解除方法を決定し、前記主メモリ１３０のユーザ領域の当該位置に格納されたユーザデータをＮＡＮＤインターフェース方法でリードして補助メモリ１２０にバッファリングする。すると、圧縮解除器４７０は、前記バッファリングされたユーザデータの圧縮を復元し、圧縮復元が完了した場合、前記コア制御部４１０は、これを前記ホスト装置に通知する。すると、前記ホスト装置は、前記バッファリングされたユーザデータをリードしてホストメモリ３２０に格納する。
【００８４】
以上の説明では、多様な形態の圧縮器及び圧縮解除器を備える実施例を説明したが、データの種類に応じて、一つの圧縮器及び圧縮解除器で構成され特化されたメモリで構成することもできる。
【００８５】
以下の説明では、圧縮器４６０及び圧縮解除器４７０の構成について説明し、前記圧縮器４６０及び圧縮解除器４７０を利用して前記フュージョンメモリ１００が主メモリ１３０にバイナリデータをライトし、格納されたバイナリデータをリードする具体的な動作について説明する。
【００８６】
前記圧縮器４６０及び圧縮解除器４７０は、一般的な圧縮及び圧縮解除方法を使用することができ、本発明の実施例では、図１８〜図２３のような構成及び動作過程を備える圧縮器４６０及び圧縮解除器を使用すると仮定する。
【００８７】
図１８は、本発明の実施例に係る圧縮方法を説明するための図面である。
【００８８】
図１８において、「マクロブロック(macro block)」とは、データを圧縮する単位を意味する。「ショートブロック(short block)」とは、マクロブロックを構成する単位であって、２つ以上に構成されることができる。ここで、前記マクロブロックは、前記ショートブロックを使用してもよく、使用しなくてもよい。本発明の実施例において、前記マクロブロックは、２つのショートブロックから構成されていると仮定する。「レンジブロック(range block)」とは、圧縮しようとするマクロブロックを意味する。「ドメインブロック(domain block)」とは、レンジブロックを圧縮するために参照されるマクロブロックを意味し、前記ドメインブロックは、探索範囲内に存在するマクロブロックである。「距離(distance)」とは、レンジブロックとドメインブロックとの距離を意味する。「差異(difference)」とは、レンジブロックとドメインブロックとの差異を意味し、ここで、差異は、レンジブロック及びドメインブロックのデータを排他的論理和(exclusive OR, XOR)した値を意味する。
【００８９】
また、以下の圧縮器４６０及び圧縮解除器４７０の説明において、「例外処理(exception handling)」とは、レンジブロックのデータと一致するドメインブロックがない場合、データ圧縮をしない(raw dataをそのまま使用)ことを意味する。「グローバルテーブル(global table)」とは、固定テーブル(fixed entry table)であって、前記差異値(difference value)をインデックスとする。「ローカルテーブル(local table)」とは、可変テーブル(floating entry table)であって、圧縮中に発生頻度数の高いレンジブロックとドメインブロックとの差異値をインデックスとする。前記「探索範囲(searching range)」とは、レンジブロックの位置でドメインブロックを探索するための範囲を意味する。「正方向検索(forward search)」とは、探索範囲において、前記レンジブロックの前に位置するマクロブロックを検索することを意味し、「逆方向検索(backward search)」とは、探索範囲において、レンジブロック方向に検索することを意味する。「バイナリデータ」とは、プログラム及びユーザデータを含む用語であって、バイナリデータを総称する意味で使用される。
【００９０】
一般に、バイナリデータを圧縮する圧縮器４６０及び圧縮解除器４７０は、高圧縮率及び高速の復元機能を持つことが好ましい。このとき、圧縮器の圧縮率を高めると、圧縮器４６０の圧縮速度又は圧縮解除器４７０の復元速度が低下する。本発明は、前記探索範囲内でドメインブロックを探索するとき、次のような方法で圧縮率及び復元速度を向上させる。
【００９１】
本発明の実施例に係る圧縮器４６０は、レンジブロックとドメインブロックとを比較して差異値をエントロピー符号化(entropy coding)する方法と、前記差異値のコストを計算した後、前記コストによるテーブルを利用してコーディングする方法を提案する。
【００９２】
前記前者の圧縮方法は、探索範囲内のドメインブロックを正方向及び逆方向探索し、同一又は最も類似したドメインブロックとの差異をエントロピー符号化して圧縮する。このとき、前記レンジブロックと探索範囲内の全てのドメインブロックが全く異なるマクロブロックである場合、圧縮せずに例外処理する方法を使用することもできる。
【００９３】
また、前記後者の圧縮方法は、次のような特徴を持つ。
【００９４】
第１に、圧縮器は、レンジブロックを探索範囲内のドメインブロック（即ち、レンジブロックの前に位置する探索範囲内のマクロブロック）と比較するとき、正方向及び逆方向に検索して最も低いコストのドメインブロックを選択する。
【００９５】
第２に、ドメインブロックと類似したレンジブロックを圧縮する場合、テーブルを利用して圧縮率及び圧縮速度を向上させることができる。このために、レンジブロックを構成するバイナリデータと探索範囲内のドメインデータとを比較演算しながらコストを計算する。ここで、固定テーブル(global table)及び圧縮中に生成される可変テーブル(local table)を備えることができる。コストテーブルは、前記コスト値によって固定テーブルや、可変テーブルのインデックスがマッチングしている。固定テーブルは、よく使用されるデータを予め格納しておいたもので、データが変わらない。可変テーブルは、圧縮を進行するときに多く使用されるデータを可変的に形成するテーブルで構成し、圧縮完了後、可変テーブルは、バイナリデータの後に格納される。
【００９６】
第３に、圧縮器は、マクロブロック単位のバイナリデータを圧縮し、探索範囲内でレンジブロックと同一又は類似したドメインブロックがないと（即ち、ショートブロックを使用する場合には、前記レンジブロックのショートブロックと前記ドメインブロックのショートブロックのうち一致するショートブロックがない場合）、前記レンジブロックのバイナリデータを例外処理する。ここで、前記例外処理とは、該当するレンジブロックのバイナリデータを圧縮しないことを意味し、これは、圧縮率と復元速度の調整のためである。
【００９７】
即ち、本発明の実施例に係るバイナリデータの圧縮方法は、マクロブロックのバイナリデータを正方向及び逆方向に検索しながら、圧縮速度を大きく低下させることなく、圧縮率を向上させる方法を提案する。また、テーブル(グローバルテーブル、ローカルテーブル等)に圧縮データを効率的に格納し、圧縮率を向上させる方法を提案する。また、圧縮率のよくないマクロブロックは、例外処理して圧縮率と復元速度の調整ができるようにする方法を提案する。
【００９８】
まず、前記エントロピー圧縮方法について説明し、次に、前記テーブルを利用して圧縮する方法について説明する。
【００９９】
図１９は、本発明の実施例により、バイナリデータをエントロピー符号化する圧縮器４６０の構成を示す図面である。
【０１００】
前記図１９を参照すると、ローダ(loader)５１０は、前記補助メモリ１２０にバッファリングされたバイナリデータから圧縮する大きさのバイナリデータをロードする。ここで、前記補助メモリ１２０にバッファリングされたバイナリデータは、ホスト装置からダウンロードされるバイナリデータ(raw binary data)であり、前記圧縮する大きさは、前記圧縮器４６０で一度に圧縮するバイナリデータの大きさ（即ち、圧縮フレームの大きさ）を意味する。すると、探索器(searcher)５２０は、探索範囲、レンジブロックをロードし、前記探索範囲内で前記レンジブロックのバイナリデータと同一又は類似したドメインブロックの位置を探索する。このとき、前記探索器５２０の探索方法は、正方向探索及び逆方向探索方法を使用する。比較器５３０は、前記探索器５２０で探索されるレンジブロックとドメインブロックのバイナリデータを比較し、その差異値を出力する。ここで、前記比較器５３０は、排他的論理和演算器 (exclusive OR operator)である。
【０１０１】
コーダ５４０は、前記比較器５３０の出力を分析してレンジブロックと各ドメインブロックとの距離及び差異値を分析し、分析結果、最小値を持つ距離及び差異情報を圧縮データとして決定する。ここで、前記レンジブロックは、前記のように、２つ以上のショートブロックで構成される。このような場合、前記コーダ５４０は、レンジブロックと探索範囲内のドメインブロックとを探索して比較する過程において、前記レンジブロックのショートブロックバイナリデータが、ドメインブロックのショートブロックバイナリデータと同一であるか、又は少なくとも一つのショートブロックバイナリデータが同一であるドメインブロックを選択する。その後、前記コーダ５４０は、前記レンジブロックと前記選択されたドメインブロックとの距離及び差異値を当該レンジブロックの圧縮データとして格納する。
【０１０２】
しかし、前記コーダ５４０において、圧縮されていないレンジブロックデータが存在することもある。例えば、前記レンジブロックを構成するショートブロックデータが探索範囲内に存在するドメインブロックのショートブロックバイナリデータと同一でない場合、前記レンジブロックを例外処理ブロックとして処理する。即ち、レンジブロックの圧縮コストが設定された臨界値より大きいと、当該レンジブロックのバイナリデータを圧縮せずにそのまま格納する。このような場合、前記コーダ５４０は、当該レンジブロックのバイナリデータを補助メモリ１２０にそのまま格納する。
【０１０３】
図２０は、前記図１９と同一の構成を持つ圧縮器４６０が、レンジブロックと探索範囲内のドメインブロックとの距離及び差異値を計算し、レンジブロックのバイナリデータを圧縮する例を説明するための図面である。前記図２０においては、レンジブロックが［１６:１７］、［１８:１９］、［２０:２１］、［２２:２３］である場合を示す。
【０１０４】
前記距離及び差異値を計算するとき、前記コーダ５４０は、距離及び差異値の変化可否により、各々距離フラグ及び差異フラグを使用することができる。このとき、現在のレンジブロックが以前のレンジブロックと同一の距離を持つ場合、距離の変化がないことを示す距離フラグのみを使用し、以前のレンジブロックと同一の距離を持たない場合には、距離の変化があることを示す距離フラグ及び距離値を使用する。また、現在のレンジブロックと同一であるドメインブロックがある場合、差異のないことを示す差異フラグのみを使用し、ドメインブロックと同一でない場合には、差異の変化があることを示す差異フラグ及び差異値を使用する。本発明の実施例では、距離及び差異がないと、当該距離及び差異フラグは「０」を使用し、距離及び差異があると、距離及び差異フラグは「１」を使用すると仮定する。ここで、距離フラグ及び距離値は距離情報と称し、差異フラグ及び差異値は差異情報と称する。
【０１０５】
前記図２０を参照すると、レンジブロックＡ、Ｃ［１６:１７］と探索範囲内において最も類似するドメインブロックは、Ａ，Ｂ［１４:１５］である。このような場合、距離は「１，２」であり、差異は「０、１、Ｃ ＸＯＲ Ｂ」である。前記距離において、「１」は、以前のレンジブロックと異なる距離値を持つことを示す距離フラグであり、「２」は、ドメインブロックが、レンジブロックから２ブロック前にあることを示す。また、差異において、「０」は、レンジブロック及びドメインブロックの１番目のショートブロックのバイナリデータが同一であることを示す差異フラグであり、「１」は、２番目のショートブロックのバイナリデータが異なることを示す差異フラグであり、「Ｃ ＸＯＲ Ｂ」は、差異値を示す。
【０１０６】
次に、レンジブロックＤ，Ｆ［１８：１９］と探索範囲内において最も類似するドメインブロックは、Ｄ，Ｆ［７：８］である。このような場合、距離は「１，１１」であり、差異は「０，０」である。また、レンジブロックＡ，Ｈ［２０：２１］と探索範囲内において類似しており、距離情報の少ないドメインブロックは、Ａ，Ｂ［９：１０］である。このような場合、距離は、以前のレンジブロックＤ，Ｆ［１８：１９］と同一であるため「０」であり、差異は、「０、１、Ｈ ＸＯＲ Ｂ」である。また、レンジブロックＡ，Ｂ［２２:２３］と探索範囲において最も類似するドメインブロックは、Ａ，Ｂ［１１，１２］である。このような場合、距離は「０」であり、差異は「０，０」である。従って、前記図７のマクロブロック［１６−２３］の圧縮は、下記表１のように実行することができる。下記表１の圧縮データは、テーブルを使用しない圧縮器４６０を使用する例を示している。前記圧縮器４６０がテーブルを使用して圧縮データを生成する場合、前記圧縮器４６０は、下記表１において、Ｃ ＸＯＲ Ｂ及びＨ ＸＯＲ Ｂの差異値をグローバルテーブルのインデックスとしてグローバルテーブルに格納されたデータを圧縮データとして使用することができる。また、前記グローバルテーブルに前記Ｃ ＸＯＲ Ｂ及びＨ ＸＯＲ Ｂの差異値のインデックスがない場合には、ローカルテーブルのインデックスとして使用してローカルテーブルのデータを圧縮データとして使用することができる。
【０１０７】
【表１】
2008065834.tif 000003
【０１０８】
前記のように、圧縮されたデータは補助メモリ１２０にバッファリングされ、前記バッファリングされた圧縮データは、コア制御部４１０の制御下に、主メモリ１３０の対応する領域（疑似ＮＯＲマッピング領域、ＲＡＭマッピング領域、ユーザマッピング領域）に格納される。また、前記のように、圧縮格納された圧縮データは、コア制御部４１０の制御下に、リードされて補助メモリ１２０にバッファリングされ、圧縮解除器４７０は、前記補助メモリ１２０に格納された圧縮データの圧縮を解除する。
【０１０９】
図２１は、前記１９のような構成を持つ圧縮器４６０で圧縮されたバイナリデータを復元する前記圧縮解除器４７０の構成を示す図面である。
【０１１０】
前記図２１を参照すると、ローダ５６０は、前記補助メモリ１２０に圧縮データ(compressed data)をロードする。また、前記圧縮データは、前記のように、ドメインブロックとの距離及び差異情報で構成される。このとき、前記距離は、前記のように、距離フラグ及び距離値で構成され、差異も、差異フラグ及び差異値で構成される。フラグ検出器５７０は、前記距離及び差異情報から各フラグを検出し、デコーダ５８０に距離及び差異値と共に伝達する。すると、前記デコーダ５８０は、前記距離フラグ及び距離値を分析してレンジブロックに対応するドメインブロックの位置を決定し、前記差異フラグ及び差異値を、前記決定されたドメインブロックと比較してレンジブロックの圧縮を解除する。また、前記フラグ検出器５７０から例外フラグを検出した場合、前記デコーダ５８０は、例外処理されたレンジブロックのデータを処理する。このような場合、前記圧縮解除器４７０は、該当するレンジブロックをそのまま出力する。前記のように、圧縮解除されたデータは、補助メモリ１２０にバッファリングされ、外部装置であるホスト制御部３１０によりリードされて外部メモリ３２０に格納されるか、又は疑似ＮＯＲマッピング領域のコードである場合には、ホスト制御部３１０で直接処理する。
【０１１１】
図２２は、圧縮データが前記表１のようなの場合、前記圧縮解除器４７０が圧縮データを解除する方法を説明するための図面である。前記表１は、レンジブロック［１６，１７］、［１８，１９］、［２０，２１］、［２２，２３］の圧縮データであり、前記圧縮解除器４７０は、前記表１のような圧縮データを利用して前記図２１のようなバイナリデータを生成するようになる。
【０１１２】
前記図２２を参照すると、前記レンジブロック［１６，１７］の圧縮データは、ドメインブロックとの距離が２であり(distance flag: 1, distance: 2)、差異は、１番目のショートブロックは、ドメインブロックの１番目のショートブロックと同一であり(difference flag: 0)、２番目のショートブロックは、ドメインブロックの２番目のショートブロックと異なり、差異値はＣ ＸＯＲ Ｂであることを意味する。従って、前記圧縮解除器４７０は、１６番目のショートブロックは、１４番目のショートブロックのＡに復元し、１７番目のショートブロックは、１５番目のショートブロックのＢ ＸＯＲ（Ｃ ＸＯＲ Ｂ）演算してＣを復元する｛ｄｉｓｔａｎｃｅ：２，ｒｅｆ １６−２＝１４，ｄｉｆｆ＝０，ｉｎｓｔ（１６）＝ｉｎｓｔ（１４）＝Ａ，ｉｎｓｔ（１７）＝Ｂ ＸＯＲ（Ｃ ＸＯＲ Ｂ）＝Ｃ｝。また、レンジブロック［１８，１９］の圧縮データは、ドメインブロックとの距離が１１であり(distance flag: 1, distance: 11)、差異は、１番目のショートブロック及び２番目のショートブロックが、ドメインブロックの１番目及び２番目のブロックと同一であることを意味する。従って、前記圧縮解除器４７０は、１８番目のショートブロックは、７番目のショートブロックのＤに復元し、１９番目のショートブロックは、８番目のショートブロックのＦに復元する｛ｄｉｓｔａｎｃｅ：１１，ｒｅｆ １８−１１＝７，ｄｉｆｆ＝０，ｉｎｓｔ（１８）＝ｉｎｓｔ（７）＝Ｄ，ｒｅｆ １９−１１＝８，ｄｉｆｆ＝０，ｉｎｓｔ（１９）＝ｉｎｓｔ（８）＝Ｆ｝。前記のような方法で前記表１のような圧縮データを復元すると、前記図２１のような圧縮前のデータに復元される。
【０１１３】
前記図１９〜図２２のようなバイナリデータの圧縮及び解除方法は、エントロピー符号化技法を利用してバイナリデータを圧縮及び解除する方法を開示している。しかし、前記エントロピー符号化技法を使用せずにテーブルを利用して圧縮することができる。以下の説明では、前記フュージョンメモリ１００の圧縮器４６０がテーブルを使用して圧縮する方法について説明する。
【０１１４】
図２３は、本発明の実施例に係る前記圧縮器４６０の他の構成を示す図面である。
【０１１５】
前記図２３を参照すると、ローダ６１０は、外部装置からダウンロードされるバイナリデータ(raw binary data)をロードして格納する。ここで、前記ローダ６１０は、前記コーダ６４０で圧縮するデータの大きさ（圧縮フレームの大きさ）のバイナリデータをロードする。即ち、前記コーダ６４０は、設定された大きさのバイナリデータを単位として圧縮機能を行い、これを圧縮フレームと称することにする。従って、前記ローダ６１０がロードするバイナリデータの大きさは、前記補助メモリ１２０の大きさを超えず、前記補助メモリ１２０にロードされるバイナリデータの一部又は全部が圧縮フレームになることができる。
【０１１６】
探索器６２０は、前記ロードされた圧縮フレームのバイナリデータで探索範囲を決定し、レンジブロックを確認した後、前記探索範囲内に位置するドメインブロックと前記レンジブロックとを比較してコストを計算し、最もコストの低いドメインブロックの距離情報及びコスト値を決定する。前記探索器６２０は、前記レンジブロックと探索範囲内のドメインブロックとを比較するとき、正方向探索及び逆方向探索を行う。また、前記探索過程において、前記レンジブロックとドメインブロックの差異値を計算した後、同一であると、ドメインブロックとの距離情報及び同一であることを示す差異情報を生成し、相違すると、前記ドメインブロックの距離情報及び差異によるコストを計算する。前記探索器６２０は、コストテーブルを備えることができる。ここで、前記コストテーブルは、レンジブロックとドメインブロックの差異値に対するコスト値とそれに該当する固定テーブルや、可変テーブルのインデックスがマッチングするようにする。また、前記探索器６２０は、前記探索範囲内で正方向探索を行いながら、レンジブロックのデータと選択されるドメインブロックのデータとを比較して差異値を生成する。そして、逆方向探索を行い、前記生成されたコストを保管しているコストと比較して、現在生成されたコストの方が低いと前記コストを更新し、そうでないと以前のコストを維持する。前記のような動作を繰り返して、前記レンジブロックと探索範囲内のドメインブロックとを比較しながらコストを生成すると、最も低いコストを持つドメインブロックとの距離情報及びコストを探索し、探索終了時、最小のコストを持つドメインブロックとの距離情報及びコストをコーダ６４０に出力し、次のレンジブロックを選択して前記のような動作を繰り返して行なう。
【０１１７】
前記コーダ６４０は、グローバルテーブル（固定テーブル）及び／又はローカルテーブル（可変テーブル）を備えることができる。また、前記グローバルテーブル及びローカルテーブルは、補助メモリ１２０にバッファリングすることができる。前記補助メモリ１２０にバッファリングする方法は、圧縮するバイナリデータのダウンロード時に、グローバルテーブルを前記補助メモリ１２０の特定領域にバッファリングすることができる。また、バイナリデータの圧縮中に生成されるローカルテーブルも、前記補助メモリ１２０の特定領域にバッファリングすることができる。ここで、前記グローバルテーブルは、バイナリデータを圧縮するときに頻繁に発生する差異に基づいてコストを計算し、前記コストによるテーブルを作成した後、バイナリデータの圧縮時にコストを計算し、これを圧縮データとして使用する。前記グローバルテーブルは、固定テーブルであって、実験的に測定し、これをテーブル化する。前記ローカルテーブルは、バイナリデータの圧縮中に頻繁に発生する差異に基づいてコストを計算し、前記コストに基づいてテーブルを作成した後、バイナリデータの圧縮時にコストを計算し、これを圧縮データとして使用する。前記ローカルテーブルは、可変テーブル(variable table)であって、対応するバイナリデータの圧縮及び解除にのみ使用される。ここで、前記グローバルテーブル及びローカルテーブルは、前記コストテーブルと類似した構造を持つことができる。即ち、前記コストテーブルは、ブロック間の差異値をインデックスとし、前記インデックス位置にコスト値を格納することができ、前記コスト値を前記グローバル及びローカルテーブルのインデックスとし、インデックス位置にブロック間の差異値を格納することができる。以下で説明する本発明の実施例では、グローバルテーブル及びローカルテーブルの両方を使用する場合を仮定して説明する。しかし、前記グローバルテーブル又はローカルテーブルのうちの一方のみを使用してバイナリデータを圧縮することもできる。
【０１１８】
前記コーダ６４０は、前記コスト値に対応するインデックス位置に格納されたデータ（レンジブロックとドメインブロックとの比較データ）を確認した後、当該データのインデックスをレンジブロックのコーディングデータとして処理する。ここで、前記コストは、前記探索器６４０で計算することができ、前記探索器６２０がレンジブロックとドメインブロックの差異情報に基づいて計算することができる。本発明の実施例において、前記コストは、探索器６２０がコストテーブルを利用して生成すると仮定して説明する。また、前記探索器６２０は、前記レンジブロックとドメインブロックとの距離情報（距離フラグ及び距離値）及び前記コスト値を前記コーダ６４０に伝達する。すると、前記コーダ６４０は、前記コスト値によるデータを確認した後、前記距離情報及びコストによるデータを当該レンジブロックのバイナリデータに圧縮する。
【０１１９】
前記探索器６２０及びコーダ６４０の動作について説明する。本発明の実施例では、前記レンジブロックは、２つ以上のショートブロックで構成される場合を仮定している。前記探索器６２０は、前記レンジブロックとドメインブロックとの差異を計算し、コストを計算する。このとき、レンジブロックとドメインブロックとの差異値が０であると、即ち、同一であると、コスト値は０（又は非常に小さいコスト値）と計算する。また、レンジブロックとドメインブロックを構成するショートブロックが少なくとも一つ以上同一であると、コスト値は、その他のショートブロック間の差異値によって生成される。すると、コーダ６４０は、前記コスト値をコーディング臨界値と比較して、前記レンジブロックとドメインブロックとのコスト値が前記コーディング臨界値より小さいと、グローバルテーブル及び／又はローカルテーブルを参照する。このとき、前記コスト値は、グローバルテーブル及びローカルテーブルのインデックスになり、前記レンジブロックで差異が発生した当該ショートブロックのコーディング値は、前記計算されたコスト値になる。また、前記レンジブロックとドメインブロックのショートブロックの差異値が全て存在すると、即ち、ショートブロックが全て相違すると、前記探索器６２０で計算されるコスト値は、前記コーディング臨界値を超えるようになる。このような場合、前記コーダ６２０は、該当するレンジブロックを例外処理ブロックとして処理する。
【０１２０】
図２４は、前記探索器６２０の動作を説明するための図面である。前記図２４において、レンジブロックは、６９１のように８番及び９番のショートブロックである場合を仮定している。このような場合、ドメインブロックも、２つのショートブロックを対象とし、図２４の場合、ドメインブロックは、６番及び７番のショートブロック、５番及び６番のショートブロック、４番及び５番のショートブロック、３番及び４番のショートブロック、２番及び３番のショートブロック、１番及び２番のショートブロック、そして、０番及び１番のショートブロック等である。また、前記図２４の６９３のような圧縮対象のデータがホスト制御部３１０からダウンロードされ補助メモリ１２０（ここでは、第２補助メモリ１２５）にバッファリングされた状態である。
【０１２１】
前記図２４を参照すると、第６７１段階で、探索器６２０は探索範囲をロードし、ここで、探索範囲は２，４，８，１６、．．．６５５３６マクロブロックになる。探索範囲を決定した後、探索器６２０は、第６７３段階で圧縮する対象であるレンジブロックをロードし、ここで、前記レンジブロックは、８番及び９番のショートブロックと仮定する。その後、前記探索器６２０は、第６７５段階で前記レンジブロックを探索範囲内の各ドメインブロックと比較できるようにドメインブロックを選択する。ここで、前記ドメインブロックの選択は、レンジブロックの位置で正方向探索しながらドメインブロックを選択し、このとき、前記ドメインブロックは、ショートブロック単位で移動しながら選択される。前記ドメインブロックを選択した後、探索器６２０は、第６７７段階で前記選択されたドメインブロックのバイナリデータを前記レンジブロックのバイナリデータと比較する。このとき、前記比較演算は排他的論理和演算になる。その後、前記探索器６２０は、第６７９段階で前記ドメインブロックとの距離情報を算出し、第６８１段階で前記２つのブロック間の差異値によるコストを計算する。ここで、前記距離情報は、距離フラグ及び距離値で構成される。また、前記コスト値は、２つのブロックの比較結果値の差異値に基づいて計算する。即ち、前記探索器６２０は、コストテーブルから前記２つのブロックの差異値によるコストを選択する。このとき、前記ブロックの差異値によるコストは、実験的に設定することができ、前記コストは、最も頻繁に発生するブロックの差異値が低いコストを持つように設定することが好ましい。
【０１２２】
前記のような過程を行い、前記探索器６２０は、前記レンジブロックと探索範囲内のドメインブロックの距離情報及びコストを計算し、低いコストのドメインブロックとの距離情報及びコスト値を格納する。即ち、正方向探索を行いながらドメインブロックとの距離情報及びコストを計算し（即ち、レンジブロックを選択した後、順次にドメインブロックを選択しながら距離情報及びコストを計算し）、前記コストの計算時に逆方向探索を行って、現在計算されたコストと今まで探索して保管している最も低いコストに更新する。このとき、現在計算されたコストが以前のコストより低いと、前記探索器６２０は、現在探索されたドメインブロックの距離情報及びコストを保管し、そうでないと、以前に探索して保管していたドメインブロックの距離情報及びコストを維持する。前記のような動作を繰り返して行うと、前記探索器６２０は、前記レンジブロックと探索範囲内において最も低いコストを持つドメインブロックとの距離情報及びコストを格納するようになる。
【０１２３】
また、前記探索器６２０は、ローカルテーブルを生成することができる。即ち、前記探索器６２０は、グローバルテーブルに登録されてはいないが、同一の差異値（レンジブロックとドメインブロックとの差異値）が設定された回数（ここでは、３回）以上発生すると、これをローカルテーブルに登録する。このとき、前記ローカルテーブルのコストは、前記グローバルテーブルのコストよりは大きい値を持つように設定する。また、前記コストテーブルにもこれを登録することができる。このような場合、前記グローバルテーブルに登録されていないが、よく発生する差異値をテーブルに登録し、圧縮を効率的に行えるようになる。
【０１２４】
前記のような探索過程が終了すると、前記探索器６２０は、第６８３段階で前記格納している距離情報及びコストをコーダ６４０に伝達する。
【０１２５】
前記図２４の場合、前記探索器６２０は、図２４の６９３のように、バッファリングされたバイナリデータをマクロブロック単位で設定し、現在のレンジブロックである８番及び９番ブロックの前に位置するドメインブロックを６番及び７番、５番及び６番、４番及び５番、．．．０番及び１番ブロックの順にインデキシングして探索する。また、前記探索器６２０は、前記レンジブロックのバイナリデータを、選択されるドメインブロックのバイナリデータと比較してその結果値を出力する。このような場合、前記探索器６２０は、レンジブロックとドメインブロックとを比較して差異値を生成するが、６番及び７番のショートブロックがドメインブロックとして選択される時点で、Ｅ ＸＯＲ Ｂ，Ｃ ＸＯＲ Ｂを生成し、５番及び６番のショートブロックがドメインブロックとして選択される時点で、Ｂ ＸＯＲ Ｂ，Ｅ ＸＯＲ Ｂを生成し、４番及び５番ブロックがドメインブロックとして選択される時点で、Ｂ ＸＯＲ Ｂ，Ｂ ＸＯＲ Ｂを生成し、３番及び４番のショートブロックがドメインブロックとして選択される時点で、Ｆ ＸＯＲ Ｂ，Ｂ ＸＯＲ Ｂを生成し、２番及び３番のショートブロックがドメインブロックとして選択される時点で、Ｄ ＸＯＲ Ｂ，Ｆ ＸＯＲ Ｂを生成し、１番及び２番のショートブロックがドメインブロックとして選択される時点で、Ｂ ＸＯＲ Ｂ，Ｄ ＸＯＲ Ｂを生成し、０番及び１番のショートブロックがドメインブロックとして選択される時点で、Ａ ＸＯＲ Ｂ，Ｂ ＸＯＲ Ｂを生成する。また、前記ドメインブロックとレンジブロックとの距離情報も生成する。
【０１２６】
その後、前記探索器６２０は、生成された差異値に基づいてコストを計算するが、レンジブロックがドメインブロックと同一である場合（図２４の４番及び５番のショートブロック）、コストは０になり、２つのショートブロックのうち一つのショートブロックが同一である場合（５番及び６番のショートブロック、３番及び４番のショートブロック、１番及び２番のショートブロック、０番及び１番のショートブロック）、コストは、コーディング臨界値より低いコストになり、２つのショートブロックが全て相違する場合、コストは、コーディング臨界値より高いコストになる。図２４のような場合、前記探索器６２０は、第６８３段階で前記４番及び５番のショートブロックの距離情報（距離フラグ１、距離値４）とコスト（コスト＝０）を前記コーダ６４０に伝達する。しかし、前記４番及び５番のショートブロックのような、コストが０（又は、０に近い値）であるドメインブロックがない場合、前記探索器６２０は、コストが最も低いドメインブロックの距離情報及びコストをコーダ６４０に伝達する（例えば、０番及び１番のショートブロックである場合、距離情報（距離フラグ１、距離値８）及び計算されたコスト（コスト≠０））。
【０１２７】
すると、コーダ６４０は、前記距離情報及びコストを利用してレンジブロックのバイナリデータを圧縮する。図２５は、前記コーダ６４０でレンジブロックのバイナリデータを圧縮する過程を示すフロー図である。
【０１２８】
前記図２５を参照すると、ホスト制御部から圧縮するバイナリデータがダウンロードされると、コア制御部４１０は、第２補助メモリ１２５にダウンロードされるバイナリデータをバッファリングする。すると、ローダ６１０は、第７１１段階でダウンロードされたバイナリデータをロードするが、このとき、前記ロードされるデータは、マクロブロック単位に分割(partition)される。このとき、前記ロードされるバイナリデータの前段に位置するマクロブロックは、比較する対象、即ち、ドメインブロックがないか又は少数のドメインブロックと比較してコーディングされなければならない。従って、圧縮時に、圧縮フレームの前に位置する設定された数のマクロブロックは、圧縮過程を行わずに例外処理ブロックとして処理する。前記図２５において、初期の例外処理ブロックは、１６個のマクロブロックＭＢ０−ＭＢ１５と仮定する。従って、圧縮開始時、前記コーダ６４０は、第７３５段階で前記マクロブロックＭＢ０−ＭＢ１５を例外処理ブロックとして処理した後、第７３３段階で前記補助メモリ１２５に例外処理ブロックとして格納する。このとき、前記例外処理ブロックは、例外処理フラグを含み、例外処理ブロックの位置及び例外処理ブロックのバイナリデータが前記第２補助メモリ１２５に格納される。
【０１２９】
前記例外処理ブロックの処理後、探索器７１３は、前記図２４に示すように、探索範囲を設定した後、レンジブロックと探索範囲内のドメインブロックをロードした後、これらのブロックを比較し、前記レンジブロックに関する距離情報及び差異値によるコストを計算して、最も低いコスト値及びこれに該当するドメインブロックとの距離情報をコーダ６４０に伝達する。
【０１３０】
すると、前記コーダ６４０は、第７１５段階でレンジブロックとドメインブロックのバイナリデータが同一であるか（コスト＝０）を検査し、同一であると、第７１７段階で探索器６２０で前記レンジブロックのバイナリデータを、生成した距離情報及び差異フラグでコーディングして圧縮データを生成した後、第７１９段階で前記第２補助メモリ１２５にバッファリングする。即ち、前記レンジブロック及び探索されたドメインブロックのバイナリデータが同一であると、前記コーダ６４０は、レンジブロックとドメインブロックとの距離情報を前記レンジブロックの圧縮データとして生成する。
【０１３１】
しかし、前記第７１５段階で、レンジブロックと同一のドメインブロックがない場合(cost≠０)、前記コーダ６４０は、第７２１段階で前記コストを確認し、第７２３段階で前記コストを利用してグローバルテーブルから探す。ここで、前記コストを確認する理由は、前記探索器６２０で探索されたコストがグローバルテーブル及び／又はローカルテーブルに存在するかを確認するためである。その後、前記コーダ６４０は、第７２５段階で前記コスト値がグローバルテーブルに存在するかを検査し、前記グローバルテーブルに存在すすると、第７１９段階で距離情報及び差異情報を第２補助メモリ１２５に格納する。このとき、距離情報は、前記レンジブロックと距離フラグ及び該当するドメインブロックとの距離値になり、差異情報は、コスト値、即ち、グローバルテーブルに格納されている値になる。しかし、前記第７２５段階でグローバルテーブルにマッピングされるコスト値がないと、前記コーダ６４０は、第７２０段階でローカルテーブルを探索する。このとき、前記ローカルテーブルに前記コストに該当する値が存在すると、前記コーダ６４０は、第７２９段階でこれを感知し、第１９段階で距離情報及び差異情報を第２補助メモリ１２５に格納する。前記のように、前記コスト値が０ではなく、前記グローバルテーブル又はローカルテーブルに存在すると、前記コーダ６４０は、レンジブロックのバイナリデータを当該ドメインブロックの距離情報及び差異情報に圧縮した後、前記第２補助メモリ１２５に格納する。
【０１３２】
しかし、前記第７２９段階で、当該コスト値が前記ローカルメモリに存在しないと、前記コーダ６４０は、第７２９段階でこれを感知し、第７３１段階で例外ブロック処理部(exception handler)６５０を駆動する。すると、例外ブロック処理部６５０は、第７３１段階で例外処理フラグを生成した後、第７３３段階で前記例外処理フラグと共にレンジブロックのバイナリデータをそのまま格納する。即ち、前記レンジブロックが探索範囲内のドメインブロックと同一でなく、また、コスト値が前記グローバルテーブル及びローカルテーブルに存在しないと、コーダ６４０は、例外ブロック処理部６５０を介して例外処理フラグと共に圧縮されていないバイナリデータをそのまま格納する。
【０１３３】
前記のように、前記コーダ６４０は、レンジブロックのバイナリデータを圧縮せずに第２補助メモリ１２５に格納することができる。例えば、前記レンジブロックを構成するショートブロックデータが、探索範囲内に存在するドメインブロックのショートブロックバイナリデータと同一でないか、又は同一のショートブロックが存在しても、コストが高い場合、前記レンジブロックを例外処理ブロックとして処理する。即ち、レンジブロックの圧縮コストが、設定された臨界値より大きいと（即ち、グローバルテーブル及びローカルテーブルに存在しないと）、当該レンジブロックのバイナリデータを圧縮せずにそのまま格納する。このような場合、前記コーダ６４０は、これを例外ブロック処理部６５０に通知し、前記例外ブロック処理部６５０は、当該レンジブロックのバイナリデータを補助メモリ１２０にそのまま格納する。ここで、前記例外ブロック処理部６５０は、コーダ６４０の内部に構成することもできる。
【０１３４】
前記圧縮器４６０は、前記のような動作を繰り返しながらロードされるレンジブロックのバイナリデータを圧縮した後、前記第２補助メモリ１２５に格納する。このとき、前記第２補助メモリに格納される圧縮データは、距離情報、差異情報及び例外処理ブロック等から構成される。従って、前記第２補助メモリ１２５は、下記表２のように、距離情報、差異情報及び例外処理ブロックが格納される。
【０１３５】
【表２】
2008065834.tif 000004
【０１３６】
前記のように、前記探索器６２０及びコーダ６４０は、レンジブロックの前に位置する探索範囲内に存在する１番目のドメインブロックからコストの和が最も低いドメインブロックまで順にインデキシングし、インデキシングされたドメインブロックのバイナリデータと前記レンジブロックデータとを比較した後、前記比較結果を分析してレンジブロックの圧縮を実行する。前記図２４において、レンジブロックと探索範囲内の３番目のドメインブロックとの差異がゼロであるため、前記コーダ６４０は、前記３番目のドメインブロック［４，５］までの距離及び差異値を圧縮データとして生成する。
【０１３７】
しかし、前記図２４において、１番目［６，７］及び５番目［２，３］のドメインブロックのように、探索範囲内に、ドメインブロックが、前記レンジブロックのようなショートブロックがない場合、前記コストの和は、設定されたコーディング臨界値を超えるようになる。前記のように、探索範囲内に存在する全てのドメインブロックのショートブロックが、前記レンジブロックのショートブロックと同一でない場合、即ち、コストの和が設定された臨界値を超える場合には、前記コーダ６４０は、前記レンジブロックを例外処理ブロックとして処理する。
【０１３８】
また、２番目［５，６］、４番目［３，４］、６番目［１，２］及び７番目［０，１］のドメインブロックのように、前記レンジブロックのショートブロックのうちの一つのショートブロックと探索範囲内のドメインブロックの一つのショートブロックとが同一である場合、前記コストの和は、設定されたコーディング臨界値を超えなくなる。このような場合、前記コーダ６４０は、前記探索範囲内のドメインブロックとレンジブロックのコストの和を計算し、最も低いコストの和を持つドメインブロックと前記レンジブロックとの距離及び差異値を圧縮データとして決定する。このとき、前記コーダ６４０が、グローバルテーブル及び／又はローカルテーブルを備える場合、前記コーダ６４０は、前記差異値を前記テーブルのインデックスとして適用し、テーブルの当該インデックス位置に存在する情報をデータとして決定し、インデックスを格納する。このような場合、前記レンジブロックの圧縮データは、ドメインブロックとの距離及び前記テーブルの情報になる。
【０１３９】
前記説明において、コストの臨界値は多様に設定できるが、一実施例として、ブロックが１６ｂｉｔである場合、コストが６５５３６以上であると例外処理し、その以下であると圧縮プロセスを進行する。
【０１４０】
図２６は、前記圧縮解除器４７０の構成を示す図面である。
【０１４１】
前記図２６を参照すると、ローダ６６０は、前記補助メモリ１２０に圧縮データをロードし、また、圧縮解除に必要なグローバルテーブル及びローカルテーブルも前記補助メモリ１２０の特定領域にロードする。また、前記ロードされる圧縮データは、前記表２に示されるように、距離情報、差異情報及び例外処理ブロック等からなる。このとき、前記距離情報は、距離フラグ及び距離値で構成され、差異も、差異フラグ及びコスト値で構成される。フラグ検出器６７０は、前記距離及び差異情報の各フラグを検出し、デコーダ６８０に伝達する。すると、前記デコーダ６８０は、前記距離フラグ及び距離値を分析してレンジブロックに対応するドメインブロックの位置を決定し、前記差異フラグ及びコスト値から前記レンジブロックとドメインブロックの差異値を決定し、これを前記ドメインブロックに排他的論理和演算してレンジブロックの圧縮を復元する。また、前記フラグ検出器６７０から例外フラグを検出した場合、前記デコーダ６８０は、前記例外処理ブロック処理部６９０を駆動し、例外処理されたレンジブロックのデータを処理する。このような場合、前記例外処理ブロック処理部６９０は、該当するレンジブロックをそのまま出力する。前記図２６では、前記例外処理ブロック処理部６９０を独立的に構成した例を示しているが、前記例外処理ブロック処理部６９０は、前記デコーダ６８０に構成することもできる。前記のように、圧縮解除されたデータは、補助メモリ１２０にバッファリングされ、外部装置であるホスト制御部３１０によりリードされて外部メモリ３２０にライトされる。
【０１４２】
図２７は、前記圧縮解除器４７０において、圧縮データを復元する過程を示すフロー図である。
【０１４３】
前記図２７を参照すると、前記主メモリ１３０からロードされて補助メモリ１２０に格納される圧縮データは、７５１のように、圧縮フレームの開始する設定された数のマクロブロックは例外処理されたブロックである。従って、前記デコーダ６８０は、第７９１段階で前記例外ブロック処理部６９０を駆動させて例外処理されたブロックを復元し、第７７３段階でこれを前記第２補助メモリ１２５に格納する。その後、前記デコーダ６８０は、前記７５１のような圧縮データを復元してバイナリデータを生成する。このとき、前記圧縮データを復元する方法は、まず、距離情報を分析してドメインブロックの位置を確認し、テーブルインデックスを利用して前記テーブルから探し、レンジブロックのバイナリデータを復元する。また、例外処理されたブロックのデータは、例外処理ブロックの位置を確認した後、当該マクロブロックの位置に前記例外処理されたブロックデータを挿入して復元する。
【０１４４】
本発明の実施例では、前記例外処理されたブロックのデータを先に復元し、その後、圧縮されたデータの距離情報及び差異情報を確認して、各レンジブロックの圧縮データを復元すると仮定して説明する。しかし、前記圧縮されたレンジブロックの距離情報及び差異情報を確認して復元し、その後、例外処理されたレンジブロックのデータを復元する方法も同じ結果を得ることができる。
【０１４５】
まず、前記デコーダ６８０は、第７５３段階で前記圧縮時に使用したグローバルテーブル及びローカルテーブルをロードし、前記ロードされた圧縮フレームの開始位置をロードする。その後、前記デコーダ６８０は、例外処理ブロックフラグがセットされた状態であると、第７５５段階でこれを感知し、第７９１段階で例外処理されたレンジブロックの位置を確認した後、例外処理されたブロックのバイナリデータを復元し、第７７３段階で第２補助メモリ１２５の該当するレンジブロックの位置に格納する。前記のような過程を繰り返しながら、例外処理されたレンジブロックのバイナリデータを復元し、前記第２補助メモリ１２５にバッファリングする。
【０１４６】
前記例外処理されたブロックのバイナリデータを復元した後、前記デコーダ６８０は、第７５７段階で距離情報をアクセスし、前記アクセスされた距離情報の距離フラグがセットされた状態であるか否かを検査する。このとき、前記距離フラグがセットされている場合、連続する距離値だけ移動してドメインブロックを探索し、距離フラグがリセットされた状態であると、以前の状態で処理されたドメインブロックとの距離値と同一の状態であるため、距離移動はしないようになる。このとき、前記距離フラグがセットされた状態であると、前記デコーダ６８０は、第７５７段階でこれを感知し、第７５９段階で現在のレンジブロックの位置を確認し、第７６１段階で前記距離情報の距離値を確認した後、第７６３段階で現在のレンジブロックの位置から前記距離値だけ移動して比較対象のドメインブロックを選択する。また、前記距離フラグがリセットされた状態であると、前記デコーダ６８０は、第７５７段階でこれを感知し、第７６７段階で以前の状態から復元されたレンジブロックとドメインブロックとの距離値を持つドメインブロックを選択する。即ち、前記デコーダ６８０は、距離情報を検索して距離フラグがセットされた状態であると、現在のレンジブロックの位置から距離情報に含まれている距離値だけ移動して比較対象のドメインブロック(reference domain block)を選択し、距離フラグがリセットされた状態であると、以前の状態の距離値を維持しながら、比較対象のドメインブロックを選択する。
【０１４７】
前記のように、距離情報を利用して比較対象のドメインブロックを選択した後、前記デコーダ６８０は、第７６５段階で差異情報を格納する領域から差異フラグをリードした後、第７６９段階で差異フラグの状態を検査する。このとき、前記差異フラグがリセットされた状態であると、前記デコーダ６８０は、第７６９段階でこれを感知し、第７７１段階へ進み、前記選択されたドメインブロックのバイナリデータをレンジブロックのバイナリデータにコピーした後、第７７３段階で第２補助メモリ１２５に格納する。前記差異フラグがリセットされた状態とは、レンジブロックと選択されたドメインブロックのバイナリデータが同一であることを意味するので、前記デコーダ６８０は、前記選択されたドメインブロックのバイナリデータを前記レンジブロックのバイナリデータにコピーして復元する。
【０１４８】
しかし、前記第７６９段階で差異フラグがセットされた状態であることを感知すると、前記デコーダ６８０は、第７８１段階で差異情報に含まれた差異値をリードする。このとき、前記差異値は、圧縮時に生成したコスト値であり、前記コスト値は、グローバルテーブル又はローカルテーブルのテーブルインデックスとなる。従って、前記デコーダ６８０は、第７８１段階で前記差異値をテーブルのインデックスとしてロードし、第７８３段階で前記コスト値(cost value；テーブルのインデックスにマッチングして使用する)を利用してテーブルを探索(look up)する。このとき、前記テーブルの探索は、まず、前記グローバルテーブルを探索し、前記グローバルテーブルに前記コスト値に該当する内容がないと、ローカルテーブルを探索する。このとき、前記コスト値が前記テーブルにマッチングすると、前記デコーダ６８０は、第７８５段階でこれを感知し、第７８７段階で前記コスト値のインデックスに対応するデータをリードしてレンジブロックを復元した後、第７７３段階で前記補助メモリに格納する。しかし、前記コスト値が前記テーブルにマッチングしないと、前記デコーダ６８０は、第７８５段階でこれを感知し、第７８９段階でエラー処理する。前記のように、差異フラグがセットされた状態であると、前記デコーダ６８０は、差異情報に含まれたコスト値をテーブルのインデックスとして使用し、前記インデックスにマッチングするテーブルのデータをリードしてドメインブロックと比較し、レンジブロックのバイナリデータを復元する。
【０１４９】
前記のような過程を繰り返しながら距離情報及び差異情報に圧縮されたレンジブロックのバイナリデータを復元する。なお、各レンジブロックのバイナリデータを復元する方法は、まず、距離情報を確認して現在の位置のレンジブロックに参照対象であるドメインブロックを選択し、差異情報によって前記選択されたドメインブロックのバイナリデータを処理し、レンジブロックのバイナリデータを復元する。
【０１５０】
本発明の実施例によりフュージョンメモリ１００でバイナリデータ（コード及びユーザデータ）をライト及びリードする動作を詳細に説明する。以下の説明では、前記圧縮器４６０及び圧縮解除器４７０は、前記図１８及び図２７のような構成を持つと仮定する。また、前記補助メモリ１２０は、第１及び第２補助メモリで構成され、このとき、前記第２補助メモリ１２５は、前記圧縮器４６０及び圧縮解除器４７０のバッファとして使用することができる。
【０１５１】
前記バイナリデータのライト時に、ホスト制御部３１０によりダウンロードされるバイナリデータをコア制御部４１０の制御下に圧縮フレームの大きさで第２補助メモリ１２５にバッファリングし、圧縮器４６０は、前記コア制御部４１０の制御下に前記バッファリングされたデータからレンジブロックのバイナリデータをロードしてバッファリングされたバイナリデータを探索し、探索されるドメインブロックの距離及び差異情報を計算して最もコストの低いドメインブロックとの距離及び差異を圧縮データとして生成した後、前記第１補助メモリ１２３（又は、コア制御部４１０の内部バッファ）にバッファリングする。すると、前記コア制御部４１０は、これを主メモリ１３０の該当する領域にＮＡＮＤインターフェース方法でライトする。以下の説明では、前記圧縮されたデータは、前記第１補助メモリ１２３にバッファリングすると仮定して説明する。
【０１５２】
また、圧縮解除時に、前記コア制御部４１０は、前記主メモリ１３０の当該領域から圧縮データをリードした後、前記第２補助メモリ１２５にバッファリングし、圧縮解除器４７０は、前記バッファリングされた圧縮データの距離及び差異情報を分析した後、対応するドメインブロックを選択し、前記選択されたドメインブロックとの差異値を計算して元のバイナリデータに復元する。このとき、前記圧縮データが前記主メモリ１３０の疑似ＮＯＲマッピング領域にライトされたコードであると、前記圧縮解除器４６０で圧縮解除されたコードを前記第１補助メモリ１２３にバッファリングしてホスト制御部３１０がＮＯＲインターフェース方法でリードできるようにし、ＲＡＭマッピング領域又はユーザマッピング領域にライトされたコード又はユーザデータであると、前記コア制御部４１０は、これをホスト制御部３１０に通知し、前記ホスト制御部３１０は、前記圧縮解除されたコード又はデータをＮＡＮＤインターフェース方法でリードしてホストメモリ３２０に格納する。
【０１５３】
図１２は、前記フュージョンメモリ１００のメモリ制御部１１０が前記主メモリ１３０のシステム領域にダウンロードされるコードを格納する過程を説明するための図面であり、図１３は、前記フュージョンメモリ１００のメモリ制御部１１０が、前記主メモリ１３０の疑似ＮＯＲマッピング領域１３３に格納されたコードをＮＡＮＤインターフェース方法でリードし、ホスト制御部でＮＯＲインターフェース方法でリードする過程を説明するための図面であり、図１４は、前記フュージョンメモリ１００のメモリ制御部１１０が、前記主メモリ１３０のＲＡＭマッピング領域１３５に格納されたコードをＮＡＮＤインターフェース方法でリードする過程を説明するための図面であり、図１５は、前記フュージョンメモリ１００のメモリ制御部１１０が、前記主メモリ１３０のユーザデータをライトする過程を説明するための図面であり、図１６は、前記フュージョンメモリ１００のメモリ制御部１１０が、前記主メモリ１３０にユーザデータをリードする過程を説明するための図面である。
【０１５４】
前記図１２を参照して、前記主メモリ１３０のシステム領域にダウンロードされるコードをライトする過程について説明する。前記主メモリ１３０のシステム領域にダウンロードされるコードを格納するホスト装置３００とフュージョンメモリ１００との構成は前記図６に示されている。
【０１５５】
前記図６のような過程により、ホスト制御部３１０のメモリ制御ソフトウェア２１０から前記コードをライトするための制御情報を前記情報検出器４５０に伝達すると、前記情報検出器４５０は、ダウンロードされるコードを格納するための前記主メモリ１３０の位置及びコードの圧縮フラグを検出してコア制御部４１０に伝達する。すると、前記コア制御部４１０は、圧縮器４６０を制御して前記ダウンロードされるコードの圧縮方法を設定する。ここで、前記圧縮器４６０は、前記図２１又は図２３のような構成を持つ圧縮器である。その後、前記ホスト制御部３１０の制御下に前記ホストメモリ３２０に格納されたコードをダウンロードし、前記第２補助メモリ１２５にバッファリングする。
【０１５６】
このとき、前記第２補助メモリ１２５にダウンロードされるコードは、ホスト装置３００のプログラム(ファームウェア、ソフトウェア)等であり、前記疑似ＮＯＲマッピング領域１３３及び／又は前記ＲＡＭマッピング領域１３５に格納される。即ち、前記図６に示すように、コードを前記フュージョンメモリ１００にライトするとき、前記ホスト制御部３１０は、前記コードを格納する前記フュージョンメモリ１００の疑似ＮＯＲマッピング領域１３３及び／又はＲＡＭマッピング領域１３５の位置を予め決定する。また、前記ホスト制御部３１０は、前記コードをダウンロードするとき、前記フュージョンメモリ１００の主メモリ１３０の各領域に格納できるようにアドレスを伝達する。
【０１５７】
前記コア制御部４１０は、前記ホスト制御部３１０からダウンロードされるコードを前記第２補助メモリ１２５にバッファリングし、このとき、バッファリングされるコードは、前記圧縮器４６０から圧縮フレーム単位でダウンロードされる。すると、前記図１９又は図２３のような構成を持つ圧縮器４６０は、前記バッファリングされたコードをロードして圧縮する。即ち、前記圧縮器４６０は、圧縮するレンジブロックのコードをロードし、探索領域を設定した後、探索領域内のドメインブロックを正方向及び逆方向探索する。また、前記圧縮器４６０は、前記レンジブロックと探索されたドメインブロックとを比較して距離及び差異を計算し、前記計算された距離及び差異からコストの低いドメインブロックとの距離及び差異を圧縮データとして生成し、前記第１補助メモリ１２３にバッファリングする。圧縮器４６０は、前記のような動作を繰り返しながらバッファリングされたコードからレンジブロックコードをロードし、探索領域内のドメインブロックと前記レンジブロックのコードを比較してコストの低いドメインブロックとの距離及び差異を圧縮データとして生成し、前記生成される圧縮されたデータは、前記第１補助メモリ１２３に格納される。このとき、前記圧縮器４６０がグローバルテーブル及び／又はローカルテーブルを備えた場合、前記のように、圧縮器４６０は、前記差異をコスト値として計算し、前記コスト値を差異値として格納する。ここで、前記コスト値は、前記テーブルのインデックスになる。
【０１５８】
また、前記第１補助メモリ１２３に格納された圧縮データは、前記コア制御部４１０により主メモリ１３０の当該領域に格納される。即ち、前記コア制御部４１０は、前記主メモリ１３０の疑似ＮＯＲマッピング領域１３３又はＲＡＭマッピング領域１３５に格納位置を指定し、前記第１補助メモリ１２３にバッファリングされた圧縮されたコードを前記指定された領域にＮＡＮＤインターフェース方法でライトする。前記圧縮されたコードを前記主メモリ１３０にライトすると、前記ＥＣＣ制御部４４０は、前記主メモリ１３０からＥＣＣ情報をアクセスして比較した後、正常に格納が行われた場合には、前記コア制御部４１０にこれを通知する。すると、前記コア制御部４１０は、前記コードの格納が正常に行われたことを前記ホスト制御部３１０に通知する。
【０１５９】
前記ホスト制御部３１０は、次に圧縮するコードをダウンロードし、コア制御部４１０は、前記ダウンロードされるコードを第２補助メモリ１２５にバッファリングした後、前記圧縮器４６０を制御してバッファリングされたコードの圧縮を行なう。すると、前記圧縮器４６０は、前記のような方法でバッファリングされたコードを圧縮して前記第２補助メモリ１２５にバッファリングし、コア制御部４１０は、前記圧縮されたコードを前記主メモリ１３０の設定された領域にライトする。前記のような動作を繰り返して行い、前記フュージョンメモリ１００のメモリ制御部１１０は、前記ホスト装置３００からダウンロードされるコードを圧縮して前記主メモリ１３０のシステム領域にＮＡＮＤインターフェース方法でライトする。
【０１６０】
前記図１３を参照して、前記主メモリ１３０の疑似ＮＯＲマッピング領域１３３に格納されたコードをリードする過程について説明する。前記主メモリ１３０の疑似ＮＯＲマッピング領域１３３に格納されたコードをリードするホスト装置３００とフュージョンメモリ１００との構成は前記図７に示されている。
【０１６１】
前記図７のような過程により、ホスト制御部３１０から前記主メモリ１３０の疑似ＮＯＲマッピング領域１３３に格納されたコードをリードするための制御情報を前記情報検出器４５０に伝達すると、前記情報検出器４５０は、前記コードをリードするための前記主メモリ１３０の位置及びコードの圧縮フラグを検出してコア制御部４１０に伝達する。また、前記コア制御部４１０は、ＮＯＲインターフェース制御部４３０に前記疑似ＮＯＲマッピング領域１３３のコードをリードするためのアドレスを伝達する。すると、前記ＮＯＲインターフェース制御部４３０は、前記伝達されるアドレスを、前記疑似ＮＯＲマッピング領域１３３にコードが格納された位置にマッピングして前記主メモリ１３０の位置を決定し、コードをリードするためのコマンドを生成する。ＥＣＣ制御部４４０は、前記主メモリ１３０からＥＣＣを読み出してＥＣＣ情報を生成し、正常である場合には、前記コア制御部４１０にこれを通知する。すると、前記コア制御部４１０は、前記圧縮解除器４７０に圧縮されたコードを解除するための圧縮解除方法を設定し、前記主メモリ１３０の疑似ＮＯＲマッピング領域１３３から圧縮されたコードをリードして第２補助メモリ１２５にバッファリングする。すると、前記図２１又は図２６のような構成を持つ圧縮解除器４７０は、圧縮されたレンジブロックの距離及び差異情報を分析して圧縮コードを復元する。このとき、前記レンジブロックの圧縮コードは、対象となるドメインブロックとの距離及び差異になる。従って、前記圧縮解除器４７０は、まず、距離フラグ及び距離値を分析して圧縮を解除するレンジブロックに対応するドメインブロックを選択し、差異フラグ及び差異値を分析して前記ドメインブロック及び差異値によるレンジブロックのコード圧縮を解除して前記第１補助メモリ１２３にバッファリングする。このとき、前記第１補助メモリ１２３に格納される復元されたコードは、前記ＮＯＲインターフェース制御部４３０により前記ホスト制御部３１０がＮＯＲインターフェース方法でリードできるようにバイト整列される。前記のような方法でバッファリングされた各レンジブロックコードの圧縮を解除する。また、前記バッファリングされた圧縮コードの圧縮を全て復元すると（即ち、バッファリングされた圧縮フレームの大きさを持つ圧縮コードを全て復元すると）、前記圧縮解除器４７０は、これを前記コア制御部４１０に通知する。すると、前記コード制御部４１０は、これを前記ホスト制御部３１０に通知し、ホスト制御部３１０は、前記第１補助メモリ１２３にバッファリングされた圧縮解除されたコードをＮＯＲインターフェース方法でリードして処理する。
【０１６２】
また、前記コア制御部４１０が前記圧縮解除器４７０から復元完了を通知されると、前記コア制御部４１０は、前記ＮＯＲインターフェース制御部４３０にこれを通知し、前記ＮＯＲインターフェース制御部４３０は、前記主メモリ１３０の疑似ＮＯＲマッピング領域に格納された圧縮されたコードをリードして前記第２補助メモリ１２５にバッファリングし、前記圧縮解除器４６０は、前記第２補助メモリ１２５にバッファリングされた圧縮コードを復元する。すると、前記コア制御部４１０は、前記第２補助メモリ１２５にバッファリングされた復元されたコードを前記第１補助メモリ１２３にバッファリングし、ＮＯＲインターフェース制御部４３０は、前記第１補助メモリ１２３に格納された復元されたコードのアドレスを、前記ホスト制御部３１０がＮＯＲインターフェース方法でリードできるようにアドレスを変換する。また、前記ホスト制御部３１０は、前記第１補助メモリ１２３にバッファリングされたコードをＮＯＲインターフェース方法でリードして処理する。
【０１６３】
前記のような過程を繰り返しながら、フュージョンメモリ１００は、主メモリ１３０の疑似ＮＯＲマッピング領域にライトされた圧縮コードを復元し、前記復元された圧縮コードを、ＮＯＲインターフェース方法でリードできるようにアドレスを変換し、ホスト装置３００は、前記フュージョンメモリ１００のコードをＮＯＲインターフェース方法でリードして処理できるようになる。
【０１６４】
前記図１４を参照して、前記主メモリ１３０のＲＡＭマッピング領域１３５に格納されたコードをリードする過程について説明する。前記主メモリ１３０のＲＡＭマッピング領域１３５に格納されたコードをリードするホスト装置３００とフュージョンメモリ１００との構成は前記図８に示されている。
【０１６５】
前記図８のような過程により、ホスト制御部３１０から前記主メモリ１３０のＲＡＭマッピング領域１３５に格納されたコードをリードするための制御情報を前記情報検出器４５０に伝達すると、前記情報検出器４５０は、前記コードをリードするための前記主メモリ１３０の位置及びコードの圧縮フラグを検出してコア制御部４１０に伝達する。すると、前記コア制御部４１０は、前記伝達されるアドレスを、前記ＲＡＭマッピング領域１３５にコードが格納された位置にマッピングして前記主メモリ１３０の位置を決定し、コードをリードするためのコマンドを生成する。このとき、ＥＣＣ制御部４４０は、前記主メモリ１３０からＥＣＣを読み出してＥＣＣ情報を生成した後、正常である場合には、前記コア制御部４１０にこれを通知する。
【０１６６】
すると、前記コア制御部４１０は、前記圧縮解除器４７０に圧縮されたコードを解除するための圧縮解除方法を設定し、前記第２補助メモリ１２５は、前記コード制御部４１０の制御下に、前記主メモリ１３０のＲＡＭマッピング領域１３５から圧縮されたコードをリードして第２補助メモリ１２５にバッファリングする。すると、前記図２１又は図２６のような構成を持つ圧縮解除器４７０は、圧縮されたレンジブロックの距離及び差異情報を分析して圧縮コードを解除して復元する。このとき、前記主メモリ１３０のＲＡＭマッピング領域の圧縮コードを解除する方法は、前記図１３における圧縮コード解除方法と同じ方法で行うことができる。前記圧縮されたコードを復元すると、前記圧縮解除器４７０は、これを前記コア制御部４１０に通知し、前記コード制御部４１０は、これを前記ホスト制御部３１０に通知する。すると、前記ホスト制御部３１０は、前記復元されたコードをＮＡＮＤインターフェース方法でリードしてホストメモリ３２０に格納する。
【０１６７】
前記のような過程を繰り返しながら、フュージョンメモリ１００は、主メモリ１３０のＲＡＭマッピング領域にライトされた圧縮コードを復元し、ホスト装置３００は、前記フュージョンメモリ１００のコードをＮＡＮＤインターフェース方法でリードして処理できるようになる。
【０１６８】
前記図１５を参照して、前記主メモリ１３０のユーザ領域１３７にユーザデータをライトする過程について説明する。前記主メモリ１３０のユーザ領域１３７にユーザデータをライトするホスト装置３００とフュージョンメモリ１００との構成は前記図９に示されている。
【０１６９】
前記ユーザ領域１３７にユーザデータをライトする場合、前記図９のような過程により、ホスト制御部３１０のメモリ制御ソフトウェア２１０から前記ユーザデータをライトするための制御情報を前記情報検出器４５０に伝達すると、前記情報検出器４５０は、ダウンロードされるユーザデータを格納するための前記主メモリ１３０の位置及びコードの圧縮フラグを検出してファイルシステム制御部４２０に伝達する。すると、前記ファイルシステム制御部４２０は、前記コア制御部４１０にこれを伝達し、前記コア制御部４１０は、前記圧縮器４６０に圧縮フラグを伝達して圧縮方法を設定する。また、前記ファイルシステム制御部４２０は、前記ホストメモリ３２０に格納されたユーザデータを第２補助メモリ１２５にバッファリングする。このとき、前記第２補助メモリ１２５にバッファリングされるユーザデータは、ホスト制御部３１０のアプリケーション２３０により特定の形態のファイルシステム（例えば、FAT: file allocation table）で加工されたデータである。
【０１７０】
その後、前記圧縮器４６０は、前記第２補助メモリ１２５にバッファリングされたユーザデータを圧縮し、前記圧縮されたユーザデータを第１補助メモリ１２３にバッファリングし、前記コア制御部４１０に圧縮が行われたことを通知する。このとき、前記ユーザデータの圧縮方法は、前記図１２で説明したコードの圧縮方法と同じ方法で行うことができる。すると、前記コア制御部４１０は、前記主メモリ１３０のユーザ領域１３７に格納位置を指定し、前記第１補助メモリ１２３にバッファリングされた圧縮されたユーザデータをＮＡＮＤインターフェース方法で格納する。前記圧縮されたユーザデータを前記主メモリ１３０に格納した後、前記ＥＣＣ制御部４４０は、前記主メモリ１３０からＥＣＣ情報をアクセスして比較した後、正常に格納が行われた場合には、前記コア制御部４１０にこれを通知する。すると、前記コア制御部４１０は、前記ユーザデータの格納が正常に行われたことを前記ホスト制御部３１０に通知する。
【０１７１】
前記のような動作を繰り返して行い、前記フュージョンメモリ１００のメモリ制御部１１０は、前記ホスト装置３００からダウンロードされるユーザデータを圧縮して前記主メモリ１３０のユーザ領域にライトする。
【０１７２】
前記図１６を参照して、前記主メモリ１３０のユーザ領域１３７に格納されたユーザデータをリードする過程について説明する。前記主メモリ１３０のユーザ領域１３７に格納されたユーザデータをリードするホスト装置３００及びフュージョンメモリ１００との構成は前記図９に示されている。
【０１７３】
前記図９のような過程により、ホスト制御部３１０から前記主メモリ１３０のユーザ領域１３７に格納されたユーザデータをリードするための制御情報を前記情報検出器４５０に伝達すると、前記情報検出器４５０は、前記ユーザデータをリードするための前記主メモリ１３０の位置及びユーザデータの圧縮フラグを検出して前記ファイルシステム４２０に伝達する。すると、前記ファイルシステム４２０は、これを前記コア制御部４１０に伝達し、前記コア制御部４１０は、前記伝達されるアドレスを、前記ユーザ領域１３７にユーザデータが格納された位置にマッピングして前記主メモリ１３０の位置を決定し、ユーザデータをリードするためのコマンドを生成する。このとき、ＥＣＣ制御部４４０は、前記主メモリ１３０からＥＣＣを読み出してＥＣＣ情報を生成した後、正常である場合には、前記コア制御部４１０にこれを通知する。すると、前記コア制御部４１０は、前記圧縮解除器４７０に圧縮されたコードを解除するための圧縮解除方法を設定し、前記主メモリ１３０のユーザ領域１３７から圧縮されたユーザデータをリードして第２補助メモリ１２５にバッファリングする。その後、前記圧縮解除器４７０は、前記第２補助メモリ１２５にバッファリングされたユーザデータの圧縮を復元し、復元結果を前記コード制御部４１０に通知する。このとき、前記圧縮解除器４７０でユーザデータの圧縮を復元する方法は、前記図１４における圧縮コードを復元する方法と同じ方法で行うことができる。すると、前記コード制御部４１０の制御下に、前記ファイルシステム制御部４２０は、前記ユーザデータをホストメモリ３２０に格納するように制御する。
［発明の効果］
前記説明において、圧縮機と圧縮解除器とは、ハードウェアロジックから構成され、前記フュージョンメモリ１００は、一つのメモリチップから構成される。
【０１７４】
前述のように、メモリに格納されたバイナリデータを圧縮して格納することによって、メモリ格納効率を向上できるという利点がある。また、前記メモリの空間をシステム領域及びユーザ領域に区分し、前記システム領域のインターフェース方式をＮＯＲ及びＮＡＮＤインターフェース方式でアクセスすることができ、メモリに多様な種類のバイナリデータを格納できるという利点がある。
【図面の簡単な説明】
【０１７５】
【図１】本発明の実施例に係るフュージョンメモリ装置の構成を示す図面。
【図２】図１のようなフュージョンメモリ装置とホスト装置との関係を説明するための図面。
【図３】図１におけるコードを圧縮及び圧縮解除するメモリ制御部の動作を説明するための図面。
【図４】図１におけるデータを圧縮及び圧縮解除するメモリ制御部の動作を説明するための図面。
【図５】本発明の実施例に係るフュージョンメモリ装置とホスト装置とのメモリマップの構成を説明するための図面。
【図６】図５のような構成において、ホスト装置とフュージョンメモリ装置との間にコードをインターフェーシング(interfacing)する過程を示す図面。
【図７】図５のような構成において、フュージョンメモリ装置のＮＯＲマッピング領域に格納されたコードをアクセスする過程を説明するための図面。
【図８】図５のような構成において、フュージョンメモリ装置のＲＡＭマッピング領域に格納されたコードをアクセスする過程を説明するための図面。
【図９】図５のような構成において、フュージョンメモリ装置のユーザ領域にユーザデータを格納し、格納されたユーザデータをアクセスする過程を説明するための図面。
【図１０】図１のような構成を持つフュージョンメモリ装置のメモリ制御部の構成を示す図面。
【図１１】図１のような構成を持つフュージョンメモリ装置とホスト装置との構成を示す図面。
【図１２】フュージョンメモリのメモリ制御部が主メモリのシステム領域にダウンロードされるコードを格納する過程を説明するための図面。
【図１３】フュージョンメモリのメモリ制御部が前記主メモリ１３０の疑似ＮＯＲマッピング領域に格納されたコードをＮＯＲインターフェース方法でリードする過程を説明するための図面。
【図１４】フュージョンメモリのメモリ制御部が前記主メモリのＲＡＭマッピング領域に格納されたコードをＮＡＮＤインターフェース方法でリードする過程を説明するための図面。
【図１５】前記フュージョンメモリのメモリ制御部が前記主メモリのユーザ領域にユーザデータをライトする過程を説明するための図面。
【図１６】前記フュージョンメモリのメモリ制御部が前記主メモリのユーザ領域に格納されたユーザデータをリードする過程を説明するための図面。
【図１７】本発明の実施例に係るフュージョンメモリ装置からバイナリデータの種類及び圧縮状態に関する情報を検出して処理する過程を説明するための図面。
【図１８】本発明の実施例によりバイナリデータを圧縮する方法を説明するための図面。
【図１９】本発明の実施例に係る圧縮器の一例を示す図面。
【図２０】図１９のような圧縮器を介してバイナリデータを圧縮する例を説明するための図面。
【図２１】本発明の実施例に係る圧縮解除器の一例を示す図面。
【図２２】図２１のような圧縮解除器を介して圧縮されたバイナリデータを復元する例を説明するための図面。
【図２３】本発明の実施例に係る圧縮器の他の構成例を示す図面。
【図２４】図２３における探索器の動作過程を説明するための図面。
【図２５】図２３におけるコーダの動作過程を説明するための図面。
【図２６】本発明の実施例に係る圧縮解除器の他の構成例を示す図面。
【図２７】図２６におけるデコーダの動作過程を説明するための図面。
【符号の説明】
【０１７６】
１００  フュージョンメモリ
１１０  メモリ制御部
１３０  主メモリ
１３５  ＲＡＭマッピング領域
１３７  ユーザ領域
２１０  メモリ制御ソフトウェア
２２０  圧縮／解除制御ソフトウェア
３００  ホスト装置
３１０  ホスト制御部
３２０  ホストメモリ
４６０  圧縮器
４７０  圧縮解除器
【図１】
2008065834.tif 000005
【図２】
2008065834.tif 000006
【図３】
2008065834.tif 000007
【図４】
2008065834.tif 000008
【図５】
2008065834.tif 000009
【図６】
2008065834.tif 000010
【図７】
2008065834.tif 000011
【図８】
2008065834.tif 000012
【図９】
2008065834.tif 000013
【図１０】
2008065834.tif 000014
【図１１】
2008065834.tif 000015
【図１２】
2008065834.tif 000016
【図１３】
2008065834.tif 000017
【図１４】
2008065834.tif 000018
【図１５】
2008065834.tif 000019
【図１６】
2008065834.tif 000020
【図１７】
2008065834.tif 000021
【図１８】
2008065834.tif 000022
【図１９】
2008065834.tif 000023
【図２０】
2008065834.tif 000024
【図２１】
2008065834.tif 000025
【図２２】
2008065834.tif 000026
【図２３】
2008065834.tif 000027
【図２４】
2008065834.tif 000028
【図２５】
2008065834.tif 000029
【図２６】
2008065834.tif 000030
【図２７】
2008065834.tif 000031