IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三星ディスプレイ株式會社の特許一覧

特開2024-10666メモリ装置、シンボルストリーム圧縮方法およびシンボルストリーム生成方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024010666
(43)【公開日】2024-01-24
(54)【発明の名称】メモリ装置、シンボルストリーム圧縮方法およびシンボルストリーム生成方法
(51)【国際特許分類】
   H03M 7/42 20060101AFI20240117BHJP
   G06F 12/04 20060101ALI20240117BHJP
【FI】
H03M7/42
G06F12/04 530
【審査請求】未請求
【請求項の数】24
【出願形態】OL
(21)【出願番号】P 2023112856
(22)【出願日】2023-07-10
(31)【優先権主張番号】63/388,352
(32)【優先日】2022-07-12
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/939,643
(32)【優先日】2022-09-07
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FIREWIRE
(71)【出願人】
【識別番号】512187343
【氏名又は名称】三星ディスプレイ株式會社
【氏名又は名称原語表記】Samsung Display Co.,Ltd.
【住所又は居所原語表記】1, Samsung-ro, Giheung-gu, Yongin-si, Gyeonggi-do, Republic of Korea
(74)【代理人】
【識別番号】110002619
【氏名又は名称】弁理士法人PORT
(72)【発明者】
【氏名】グレゴリー ウィリアム クック
【テーマコード(参考)】
5B160
5J064
【Fターム(参考)】
5B160DA08
5J064BA09
5J064BA11
5J064BC01
5J064BC23
5J064BC28
(57)【要約】
【課題】低いメモリ空間要件、低い複雑度、高い収率、近最適圧縮などを充足するメモリ装置記憶のための圧縮および圧縮解除方法を提供する。
【解決手段】メモリ装置は、メモリ、そして少なくとも一つのプロセッサーを含み、少なくとも一つのプロセッサーは、複数のシンボルを含むシンボルストリームを獲得し、シンボルストリームに対応するハフマン木を決定し、ハフマン木に基づいてプレフィックス長表を生成し、プレフィックス長表に基づいてログ度数分布表を生成し、各シンボルに対応する累積度数を示す累積度数分布表を生成し、ログ度数分布表および累積度数分布表に基づいて複数のシンボルに符号化関数を繰り返し適用して圧縮ビットストリームを生成し、メモリに圧縮ビットストリームを記憶し、ハフマン木に基づいて複数のシンボルそれぞれに複数のプレフィックスコードのうちの対応プレフィックスコードを割り当てる。
【選択図】図6
【特許請求の範囲】
【請求項1】
メモリ、そして
少なくとも一つのプロセッサー
を含み、
前記少なくとも一つのプロセッサーは、
複数のシンボルを含むシンボルストリームを獲得し、
前記シンボルストリームに対応するハフマン木を決定し、
前記ハフマン木に基づいてプレフィックス長表を生成し、
前記プレフィックス長表に基づいてログ度数分布表を生成し、
前記各シンボルに対応する累積度数を示す累積度数分布表を生成し、
前記ログ度数分布表および前記累積度数分布表に基づいて前記複数のシンボルに符号化関数を繰り返し適用して圧縮ビットストリームを生成し、
前記メモリに前記圧縮ビットストリームを記憶し、
前記ハフマン木に基づいて前記複数のシンボルそれぞれに複数のプレフィックスコードのうちの対応プレフィックスコードを割り当て、
前記プレフィックス長表は前記各シンボルに対する前記対応プレフィックスコードの長さを示し、
前記ログ度数分布表は前記各シンボルに対する度数のロガリズムを示す、
メモリ装置。
【請求項2】
前記ログ度数分布表を生成するために、前記少なくとも一つのプロセッサーは、前記複数のプレフィックスコードの最大長さから前記各シンボルに対する前記対応プレフィックスコードの長さを引く、請求項1に記載のメモリ装置。
【請求項3】
前記累積度数分布表を生成するために、前記少なくとも一つのプロセッサーは、
前記各シンボルに対する度数のロガリズムに基づいて整数値1を左シフトさせることによって前記各シンボルの度数を求め、
前記各シンボルの度数を前記複数のシンボルのうちの以前シンボルの度数合計に足すことによって前記各シンボルに対する累積度数を求める、
請求項1に記載のメモリ装置。
【請求項4】
前記符号化関数を前記各シンボルに適用するために、前記少なくとも一つのプロセッサーは、
現在状態値を求め、
前記各シンボルに対する度数のロガリズムに基づいて前記現在状態値を右シフトさせることによってシフト(shifted)状態値を求め、
前記複数のプレフィックスコードの最大長さに基づいて前記シフト状態値を左シフトさせることによって第1値を求め、
前記度数のロガリズムに基づいて整数値1を左シフトさせることによって前記各シンボルに対する度数を求め、
前記現在状態値と前記各シンボルに対する度数引く1にビット単位AND演算を行うことによって第2値を求め、
前記第1値、前記第2値、および前記各シンボルに対応する前記累積度数を足すことによって更新状態値を求める、
請求項3に記載のメモリ装置。
【請求項5】
前記符号化関数を前記各シンボルに適用するために、前記少なくとも一つのプロセッサーは、
前記シンボルストリームに対応する初期状態値の最上位設定ビット(most significant set bit)と前記各シンボルに対応する前記度数のロガリズムの差が前記シンボルストリームに対応するコードワードの最小ビット長さ以上であるかを判断し、
前記差が前記コードワードの前記最小ビット長さ以上であるという判断に基づいて、
前記最上位設定ビットから前記各シンボルに対する度数のロガリズムを引くことによって第3値を決定し、
前記コードワードの前記最小ビット長さのロガリズムに基づいて前記第3値を右シフトさせることによってシフト第3値を求め、
前記コードワードの前記最小ビット長さのロガリズムに基づいて前記シフト第3値を左シフトさせることによって前記初期状態値から移動するビット数を決定し、
前記決定されたビット数を前記圧縮ビットストリームに出力し、
前記決定されたビット数に基づいて前記初期状態値を右シフトさせることによって前記現在状態値を求める、
請求項4に記載のメモリ装置。
【請求項6】
前記少なくとも一つのプロセッサーは前記複数のシンボルに対して並列に前記符号化関数を実行する複数のプロセッサーを含み、
前記符号化関数を実行するために、前記複数のプロセッサーそれぞれに対応初期状態値を割り当て、
前記各プロセッサーが前記対応初期状態値から移動する前記ビット数を決定した後に、前記各プロセッサーに前記決定されたビット数を出力する対応メモリ位置を割り当て、
前記決定されたビット数を前記圧縮ビットストリームに出力した後、前記各プロセッサーは対応現在状態値を決定する、
請求項5に記載のメモリ装置。
【請求項7】
メモリ、そして
少なくとも一つのプロセッサー
を含み、
前記少なくとも一つのプロセッサーは、
前記メモリから複数のシンボルを含むシンボルストリームに対応する圧縮ビットストリームを獲得し、
前記圧縮ビットストリームから、前記複数のシンボルそれぞれに対するログ度数を示すログ度数分布表を求め、
前記ログ度数分布表に基づいて前記各シンボルに対応する累積度数を示す累積度数分布表を生成し、
前記ログ度数分布表および前記累積度数分布表に基づいて逆シンボル表を生成し、
前記累積度数分布表および前記逆シンボル表に基づいて前記複数のシンボルに復号化関数を繰り返し適用して前記シンボルストリームを生成する、
メモリ装置。
【請求項8】
前記累積度数分布表を生成するために、前記少なくとも一つのプロセッサーは、
前記各シンボルに対するログ度数に基づいて整数値1を左シフトさせることによって前記各シンボルの度数を求め、
前記各シンボルの度数を前記複数のシンボルのうちの以前シンボルの度数合計に足すことによって前記各シンボルに対する累積度数を求める、
請求項7に記載のメモリ装置。
【請求項9】
前記逆シンボル表を生成するために、前記少なくとも一つのプロセッサーは現在状態値と前記圧縮ビットストリームに対応する複数のプレフィックスコードの最大長さ引く1にビット単位AND演算を行うことによって前記各シンボルに対して逆シンボル値を決定し、
前記逆シンボル値は前記各シンボルの前記累積度数以上であり、
前記逆シンボル値は次のシンボルの累積度数より小さい、
請求項7に記載のメモリ装置。
【請求項10】
前記復号化関数を前記各シンボルに適用するために、前記少なくとも一つのプロセッサーは、
前記各シンボルに対応する前記逆シンボル値に基づいて前記逆シンボル表から各シンボルを求め、
前記複数のプレフィックスコードの最大長さに基づいて前記現在状態値を右シフトさせることによってシフト状態値を求め、
前記各シンボルに対するログ度数に基づいて前記シフト状態値を左シフトさせることによって第1値を求め、
前記複数のプレフィックスコードの最大長さに基づいて整数値1を左シフトさせることによって総度数を求め、
前記現在状態値と前記複数のプレフィックスコードの最大長さ引く1にビット単位AND演算を行うことによって第2値を求め、
前記第2値と前記逆シンボル値の合計から前記各シンボルに対応する前記累積度数を引くことによって更新状態値を求める、
請求項9に記載のメモリ装置。
【請求項11】
前記復号化関数を前記各シンボルに適用するために、前記少なくとも一つのプロセッサーは、
前記複数のプレフィックスコードの最大長さと前記圧縮ビットストリームに対応する初期状態値の最上位設定ビットの差が0より大きいかを判断し、
前記差が0よりは大きいという判断に基づいて、
前記シンボルストリームに対応するコードワードの最小ビット長さのロガリズムに基づいて整数値1を左シフトさせることによって第3値を求め、
前記差を前記第3値引く1に足すことによって第4値を求め、
前記コードワードの前記最小ビット長さのロガリズムに基づいて前記第4値を右シフトさせることによってシフト第4値を求め、
前記コードワードの前記最小ビット長さのロガリズムに基づいて前記シフト第4値を左シフトさせることによって前記初期状態値に移動するビット数を決定し、
前記決定されたビット数に基づいて前記圧縮ビットストリームから追加ビットを求め、
前記決定されたビット数に基づいて前記初期状態値を左シフトさせることによってシフト状態値を求め、
前記シフト状態値と前記追加ビットを足すことによって前記現在状態値を求める、
請求項10に記載のメモリ装置。
【請求項12】
前記少なくとも一つのプロセッサーは前記複数のシンボルに対して並列に前記復号化関数を実行する複数のプロセッサーを含み、
前記復号化関数を実行するために、前記複数のプロセッサーそれぞれに対応初期状態値を割り当て、
前記各プロセッサーが前記対応初期状態値に移動する前記ビット数を決定した後に、前記各プロセッサーに前記追加ビットを求める対応メモリ位置を割り当て、
前記圧縮ビットストリームから前記追加ビットを求めた後、前記各プロセッサーは対応現在状態値を決定する、
請求項11に記載のメモリ装置。
【請求項13】
少なくとも一つのプロセッサーによって行われるメモリ装置記憶用シンボルストリーム圧縮方法であって、
複数のシンボルを含むシンボルストリームを獲得する段階、
前記シンボルストリームに対応するハフマン木を決定する段階、
前記ハフマン木に基づいてプレフィックス長表を生成する段階、
前記プレフィックス長表に基づいてログ度数分布表を生成する段階、
前記各シンボルに対応する累積度数を示す累積度数分布表を生成する段階、
前記ログ度数分布表および前記累積度数分布表に基づいて前記複数のシンボルに符号化関数を繰り返し適用して圧縮ビットストリームを生成する段階、そして
前記メモリ装置に前記圧縮ビットストリームを記憶する段階
を含み、
前記ハフマン木に基づいて前記複数のシンボルそれぞれに複数のプレフィックスコードのうちの対応プレフィックスコードを割り当て、
前記プレフィックス長表は前記各シンボルに対する前記対応プレフィックスコードの長さを示し、
前記ログ度数分布表は前記各シンボルに対する度数のロガリズムを示す、
シンボルストリーム圧縮方法。
【請求項14】
前記ログ度数分布表を生成する段階は、前記複数のプレフィックスコードの最大長さから前記各シンボルに対する前記対応プレフィックスコードの長さを引く段階を含む、請求項13に記載のシンボルストリーム圧縮方法。
【請求項15】
前記累積度数分布表を生成する段階は、
前記各シンボルに対する度数のロガリズムに基づいて整数値1を左シフトさせることによって前記各シンボルの度数を求める段階、そして
前記各シンボルの度数を前記複数のシンボルのうちの以前シンボルの度数合計に足すことによって前記各シンボルに対する累積度数を求める段階
を含む、請求項13に記載のシンボルストリーム圧縮方法。
【請求項16】
前記符号化関数を前記各シンボルに適用する段階は、
現在状態値を求める段階、
前記各シンボルに対する度数のロガリズムに基づいて前記現在状態値を右シフトさせることによってシフト(shifted)状態値を求める段階、
前記複数のプレフィックスコードの最大長さに基づいて前記シフト状態値を左シフトさせることによって第1値を求める段階、
前記度数のロガリズムに基づいて整数値1を左シフトさせることによって前記各シンボルに対する度数を求める段階、
前記現在状態値と前記各シンボルに対する度数引く1にビット単位AND演算を行うことによって第2値を求める段階、そして
前記第1値、前記第2値、および前記各シンボルに対応する前記累積度数を足すことによって更新状態値を求める段階
を含む、請求項15に記載のシンボルストリーム圧縮方法。
【請求項17】
前記符号化関数を前記各シンボルに適用する段階は、
前記シンボルストリームに対応する初期状態値の最上位設定ビット(most significant set bit)と前記各シンボルに対応する前記度数のロガリズムの差が前記シンボルストリームに対応するコードワードの最小ビット長さ以上であるかを判断する段階、
前記差が前記コードワードの前記最小ビット長さ以上であるという判断に基づいて、
前記最上位設定ビットから前記各シンボルに対する度数のロガリズムを引くことによって第3値を決定する段階、
前記コードワードの前記最小ビット長さのロガリズムに基づいて前記第3値を右シフトさせることによってシフト第3値を求める段階、
前記コードワードの前記最小ビット長さのロガリズムに基づいて前記シフト第3値を左シフトさせることによって前記初期状態値から移動するビット数を決定する段階、
前記決定されたビット数を前記圧縮ビットストリームに出力する段階、そして
前記決定されたビット数に基づいて前記初期状態値を右シフトさせることによって前記現在状態値を求める段階
を含む、請求項16に記載のシンボルストリーム圧縮方法。
【請求項18】
前記少なくとも一つのプロセッサーは複数のプロセッサーを含み、
前記複数のプロセッサーは前記複数のシンボルに対して並列に前記符号化関数を実行し、
前記符号化関数を実行するために、前記複数のプロセッサーそれぞれに対応初期状態値を割り当て、
前記各プロセッサーが前記対応初期状態値から移動する前記ビット数を決定した後に、前記各プロセッサーに前記決定されたビット数を出力する対応メモリ位置を割り当て、
前記決定されたビット数を前記圧縮ビットストリームに出力した後、前記各プロセッサーに対して対応現在状態値を決定する段階をさらに含む、
請求項17に記載のシンボルストリーム圧縮方法。
【請求項19】
少なくとも一つのプロセッサーによって行われる、圧縮ビットストリームに基づいてシンボルストリームを生成する方法であって、
メモリから前記シンボルストリームに含まれている複数のシンボルに対応する前記圧縮ビットストリームを得る段階、
前記圧縮ビットストリームから、前記複数のシンボルそれぞれに対するログ度数を示すログ度数分布表を求める段階、
前記ログ度数分布表に基づいて前記各シンボルに対応する累積度数を示す累積度数分布表を生成する段階、
前記ログ度数分布表および前記累積度数分布表に基づいて逆シンボル表を生成する段階、そして
前記累積度数分布表および前記逆シンボル表に基づいて前記複数のシンボルに復号化関数を繰り返し適用して前記シンボルストリームを生成する段階
を含む、方法。
【請求項20】
前記累積度数分布表を生成する段階は、
前記各シンボルに対するログ度数に基づいて整数値1を左シフトさせることによって前記各シンボルの度数を求める段階、そして
前記各シンボルの度数を前記複数のシンボルのうちの以前シンボルの度数合計に足すことによって前記各シンボルに対する累積度数を求める段階
を含む、請求項19に記載の方法。
【請求項21】
前記逆シンボル表を生成する段階は、現在状態値と前記圧縮ビットストリームに対応する複数のプレフィックスコードの最大長さ引く1にビット単位AND演算を行うことによって前記各シンボルに対して逆シンボル値を決定する段階を含み、
前記逆シンボル値は前記各シンボルの前記累積度数以上であり、
前記逆シンボル値は次のシンボルの累積度数より小さい、
請求項19に記載の方法。
【請求項22】
前記復号化関数を前記各シンボルに適用する段階は、
前記各シンボルに対応する前記逆シンボル値に基づいて前記逆シンボル表から各シンボルを求める段階、
前記複数のプレフィックスコードの最大長さに基づいて前記現在状態値を右シフトさせることによってシフト状態値を求める段階、
前記各シンボルに対するログ度数に基づいて前記シフト状態値を左シフトさせることによって第1値を求める段階、
前記複数のプレフィックスコードの最大長さに基づいて整数値1を左シフトさせることによって総度数を求める段階、
前記現在状態値と前記複数のプレフィックスコードの最大長さ引く1にビット単位AND演算を行うことによって第2値を求める段階、そして
前記第2値と前記逆シンボル値の合計から前記各シンボルに対応する前記累積度数を引くことによって更新状態値を求める段階
を含む、請求項21に記載の方法。
【請求項23】
前記復号化関数を前記各シンボルに適用する段階は、
前記複数のプレフィックスコードの最大長さと前記圧縮ビットストリームに対応する初期状態値の最上位設定ビットの差が0より大きいかを判断する段階、
前記差が0よりは大きいという判断に基づいて、
前記シンボルストリームに対応するコードワードの最小ビット長さのロガリズムに基づいて整数値1を左シフトさせることによって第3値を求める段階、
前記差を前記第3値引く1に足すことによって第4値を求める段階、
前記コードワードの前記最小ビット長さのロガリズムに基づいて前記第4値を右シフトさせることによってシフト第4値を求める段階、
前記コードワードの前記最小ビット長さのロガリズムに基づいて前記シフト第4値を左シフトさせることによって前記初期状態値に移動するビット数を決定する段階、
前記決定されたビット数に基づいて前記圧縮ビットストリームから追加ビットを求める段階、
前記決定されたビット数に基づいて前記初期状態値を左シフトさせることによってシフト状態値を求める段階、そして
前記シフト状態値と前記追加ビットを足すことによって前記現在状態値を求める段階
を含む、請求項22に記載の方法。
【請求項24】
前記少なくとも一つのプロセッサーは複数のプロセッサーを含み、
前記複数のプロセッサーは前記複数のシンボルに対して並列に前記復号化関数を実行し、
前記復号化関数を実行するために、前記複数のプロセッサーそれぞれに対応初期状態値を割り当て、
前記各プロセッサーが前記対応初期状態値に移動する前記ビット数を決定した後に、前記各プロセッサーに前記追加ビットを求める対応メモリ位置を割り当て、
前記圧縮ビットストリームから前記追加ビットを求めた後、前記方法は前記各プロセッサーに対して対応現在状態値を決定する段階をさらに含む、
請求項23に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ圧縮および圧縮解除方法に関するものであって、より詳しくは、メモリ装置記憶のための圧縮および圧縮解除方法に関するものである。
【0002】
本出願は2022年7月12日に米国特許庁に出願した米国特許出願番号第63/388,352号を優先権主張し、ここに引用することによってこの出願の全体内容を本願に含む。
【背景技術】
【0003】
メモリ装置、例えば、内蔵型メモリ装置はエントロピー暗号化などの暗号化法を使用することができる。エントロピー暗号化は、デジタルデータを圧縮することに使用される無損失型暗号化を示すことができる。エントロピー暗号化では、頻繁に現れるパターンはさらに少ないビットで暗号化し、まれに現れるパターンは多くのビットで暗号化する。無損失圧縮の限界はシャノン限界(Shannon limit)と知られている。
【0004】
不必要な情報を除去することによって、エントロピー暗号化は一般に、特に復号器の場合には、並列に動作しにくい。例えば、再同期マーカ(resynchronous marker)、サブストリームマルチプレキシング(substream multiplexing)、および並列再同期化(parallel resynchronization)など一部一般的な並列化法が存在するが、この技術は一般に実行するのに複雑である。
【0005】
したがって、低いメモリ空間要件、低い複雑度、(例えば、並列化可能性による)高い収率、近最適圧縮(near optimum compression)を保有した内蔵型メモリ符号化/復号化または圧縮/圧縮解除アルゴリズムが必要である。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、低いメモリ空間要件、低い複雑度、高い収率、近最適圧縮などを充足するデータ圧縮法を提示することである。
【課題を解決するための手段】
【0007】
本発明の一実施形態によるメモリ装置は、メモリ、そして少なくとも一つのプロセッサーを含み、前記少なくとも一つのプロセッサーは、前記複数のシンボルを含むシンボルストリームを獲得し、前記シンボルストリームに対応するハフマン木を決定し、前記ハフマン木に基づいてプレフィックス長表を生成し、前記プレフィックス長表に基づいてログ度数分布表を生成し、前記各シンボルに対応する累積度数を示す累積度数分布表を生成し、前記ログ度数分布表および前記累積度数分布表に基づいて前記複数のシンボルに符号化関数を繰り返し適用して圧縮ビットストリームを生成し、前記メモリに前記圧縮ビットストリームを記憶し、前記ハフマン木に基づいて前記複数のシンボルそれぞれに複数のプレフィックスコードのうちの対応プレフィックスコードを割り当て、前記プレフィックス長表は前記各シンボルに対する前記対応プレフィックスコードの長さを示し、前記ログ度数分布表は前記各シンボルに対する度数のロガリズムを示す。
【0008】
前記ログ度数分布表を生成するために、前記少なくとも一つのプロセッサーは、前記複数のプレフィックスコードの最大長さから前記各シンボルに対する前記対応プレフィックスコードの長さを引くことができる。
【0009】
前記累積度数分布表を生成するために、前記少なくとも一つのプロセッサーは、前記各シンボルに対する度数のロガリズムに基づいて整数値1を左シフトさせることによって前記各シンボルの度数を求め、前記各シンボルの度数を前記複数のシンボルのうちの以前シンボルの度数合計に足すことによって前記各シンボルに対する累積度数を求めることができる。
【0010】
前記符号化関数を前記各シンボルに適用するために、前記少なくとも一つのプロセッサーは、現在状態値を求め、前記各シンボルに対する度数のロガリズムに基づいて前記現在状態値を右シフトさせることによってシフト(shifted)状態値を求め、前記複数のプレフィックスコードの最大長さに基づいて前記シフト状態値を左シフトさせることによって第1値を求め、前記度数のロガリズムに基づいて整数値1を左シフトさせることによって前記各シンボルに対する度数を求め、前記現在状態値と前記各シンボルに対する度数引く1にビット単位AND演算を行うことによって第2値を求め、前記第1値、前記第2値、および前記各シンボルに対応する前記累積度数を足すことによって更新状態値を求めることができる。
【0011】
前記符号化関数を前記各シンボルに適用するために、前記少なくとも一つのプロセッサーは、前記シンボルストリームに対応する初期状態値の最上位設定ビット(most significant set bit)と前記各シンボルに対応する前記度数のロガリズムの差が前記シンボルストリームに対応するコードワードの最小ビット長さ以上であるかを判断し、前記差が前記コードワードの前記最小ビット長さ以上であるという判断に基づいて、前記最上位設定ビットから前記各シンボルに対する度数のロガリズムを引くことによって第3値を決定し、前記コードワードの前記最小ビット長さのロガリズムに基づいて前記第3値を右シフトさせることによってシフト第3値を求め、前記コードワードの前記最小ビット長さのロガリズムに基づいて前記シフト第3値を左シフトさせることによって前記初期状態値から移動するビット数を決定し、前記決定されたビット数を前記圧縮ビットストリームに出力し、前記決定されたビット数に基づいて前記初期状態値を右シフトさせることによって前記現在状態値を求めることができる。
【0012】
前記少なくとも一つのプロセッサーは前記複数のシンボルに対して並列に前記符号化関数を実行する複数のプロセッサーを含み、前記符号化関数を実行するために、前記複数のプロセッサーそれぞれに対応初期状態値を割り当て、前記各プロセッサーが前記対応初期状態値から移動する前記ビット数を決定した後に、前記各プロセッサーに前記決定されたビット数を出力する対応メモリ位置を割り当て、前記決定されたビット数を前記圧縮ビットストリームに出力した後、前記各プロセッサーは対応現在状態値を決定することができる。
【0013】
本発明の一実施形態によるメモリ装置は、メモリ、そして少なくとも一つのプロセッサーを含み、前記少なくとも一つのプロセッサーは、前記メモリから複数のシンボルを含むシンボルストリームに対応する圧縮ビットストリームを獲得し、前記圧縮ビットストリームから、前記複数のシンボルそれぞれに対するログ度数を示すログ度数分布表を求め、前記ログ度数分布表に基づいて前記各シンボルに対応する累積度数を示す累積度数分布表を生成し、前記ログ度数分布表および前記累積度数分布表に基づいて逆シンボル表を生成し、前記累積度数分布表および前記逆シンボル表に基づいて前記複数のシンボルに復号化関数を繰り返し適用して前記シンボルストリームを生成する。
【0014】
前記累積度数分布表を生成するために、前記少なくとも一つのプロセッサーは、前記各シンボルに対するログ度数に基づいて整数値1を左シフトさせることによって前記各シンボルの度数を求め、前記各シンボルの度数を前記複数のシンボルのうちの以前シンボルの度数合計に足すことによって前記各シンボルに対する累積度数を求めることができる。
【0015】
前記逆シンボル表を生成するために、前記少なくとも一つのプロセッサーは現在状態値と前記圧縮ビットストリームに対応する複数のプレフィックスコードの最大長さ引く1にビット単位AND演算を行うことによって前記各シンボルに対して逆シンボル値を決定し、前記逆シンボル値は前記各シンボルの前記累積度数以上であり、前記逆シンボル値は次のシンボルの累積度数より小さくてもよい。
【0016】
前記復号化関数を前記各シンボルに適用するために、前記少なくとも一つのプロセッサーは、前記各シンボルに対応する前記逆シンボル値に基づいて前記逆シンボル表から各シンボルを求め、前記複数のプレフィックスコードの最大長さに基づいて前記現在状態値を右シフトさせることによってシフト状態値を求め、前記各シンボルに対するログ度数に基づいて前記シフト状態値を左シフトさせることによって第1値を求め、前記複数のプレフィックスコードの最大長さに基づいて整数値1を左シフトさせることによって総度数を求め、前記現在状態値と前記複数のプレフィックスコードの最大長さ引く1にビット単位AND演算を行うことによって第2値を求め、前記第2値と前記逆シンボル値の合計から前記各シンボルに対応する前記累積度数を引くことによって更新状態値を求めることができる。
【0017】
前記復号化関数を前記各シンボルに適用するために、前記少なくとも一つのプロセッサーは、前記複数のプレフィックスコードの最大長さと前記圧縮ビットストリームに対応する初期状態値の最上位設定ビットの差が0より大きいかを判断し、前記差が0よりは大きいという判断に基づいて、前記シンボルストリームに対応するコードワードの最小ビット長さのロガリズムに基づいて整数値1を左シフトさせることによって第3値を求め、前記差を前記第3値引く1に足すことによって第4値を求め、前記コードワードの前記最小ビット長さのロガリズムに基づいて前記第4値を右シフトさせることによってシフト第4値を求め、前記コードワードの前記最小ビット長さのロガリズムに基づいて前記シフト第4値を左シフトさせることによって前記初期状態値に移動するビット数を決定し、前記決定されたビット数に基づいて前記圧縮ビットストリームから追加ビットを求め、前記決定されたビット数に基づいて前記初期状態値を左シフトさせることによってシフト状態値を求め、前記シフト状態値と前記追加ビットを足すことによって前記現在状態値を求めることができる。
【0018】
前記少なくとも一つのプロセッサーは前記複数のシンボルに対して並列に前記復号化関数を実行する複数のプロセッサーを含み、前記復号化関数を実行するために、前記複数のプロセッサーそれぞれに対応初期状態値を割り当て、前記各プロセッサーが前記対応初期状態値に移動する前記ビット数を決定した後に、前記各プロセッサーに前記追加ビットを求める対応メモリ位置を割り当て、前記圧縮ビットストリームから前記追加ビットを求めた後、前記各プロセッサーは対応現在状態値を決定することができる。
【0019】
本発明の一実施形態による方法は、少なくとも一つのプロセッサーによって行われるメモリ装置記憶用シンボルストリーム圧縮方法であって、前記複数のシンボルを含むシンボルストリームを獲得する段階、前記シンボルストリームに対応するハフマン木を決定する段階、前記ハフマン木に基づいてプレフィックス長表を生成する段階、前記プレフィックス長表に基づいてログ度数分布表を生成する段階、前記各シンボルに対応する累積度数を示す累積度数分布表を生成する段階、前記ログ度数分布表および前記累積度数分布表に基づいて前記複数のシンボルに符号化関数を繰り返し適用して圧縮ビットストリームを生成する段階、そして前記メモリ装置に前記圧縮ビットストリームを記憶する段階を含み、前記ハフマン木に基づいて前記複数のシンボルそれぞれに複数のプレフィックスコードのうちの対応プレフィックスコードを割り当て、前記プレフィックス長表は前記各シンボルに対する前記対応プレフィックスコードの長さを示し、前記ログ度数分布表は前記各シンボルに対する度数のロガリズムを示す。
【0020】
前記ログ度数分布表生成段階は、前記複数のプレフィックスコードの最大長さから前記各シンボルに対する前記対応プレフィックスコードの長さを引く段階を含むことができる。
【0021】
前記累積度数分布表生成段階は、前記各シンボルに対する度数のロガリズムに基づいて整数値1を左シフトさせることによって前記各シンボルの度数を求める段階、そして前記各シンボルの度数を前記複数のシンボルのうちの以前シンボルの度数合計に足すことによって前記各シンボルに対する累積度数を求める段階を含むことができる。
【0022】
前記符号化関数を前記各シンボルに適用する段階は、現在状態値を求める段階、前記各シンボルに対する度数のロガリズムに基づいて前記現在状態値を右シフトさせることによってシフト(shifted)状態値を求める段階、前記複数のプレフィックスコードの最大長さに基づいて前記シフト状態値を左シフトさせることによって第1値を求める段階、前記度数のロガリズムに基づいて整数値1を左シフトさせることによって前記各シンボルに対する度数を求める段階、前記現在状態値と前記各シンボルに対する度数引く1にビット単位AND演算を行うことによって第2値を求める段階、そして前記第1値、前記第2値、および前記各シンボルに対応する前記累積度数を足すことによって更新状態値を求める段階を含むことができる。
【0023】
前記符号化関数を前記各シンボルに適用する段階は、前記シンボルストリームに対応する初期状態値の最上位設定ビット(most significant set bit)と前記各シンボルに対応する前記度数のロガリズムの差が前記シンボルストリームに対応するコードワードの最小ビット長さ以上であるかを判断する段階、前記差が前記コードワードの前記最小ビット長さ以上であるという判断に基づいて、前記最上位設定ビットから前記各シンボルに対する度数のロガリズムを引くことによって第3値を決定する段階、前記コードワードの前記最小ビット長さのロガリズムに基づいて前記第3値を右シフトさせることによってシフト第3値を求める段階、前記コードワードの前記最小ビット長さのロガリズムに基づいて前記シフト第3値を左シフトさせることによって前記初期状態値から移動するビット数を決定する段階、前記決定されたビット数を前記圧縮ビットストリームに出力する段階、そして前記決定されたビット数に基づいて前記初期状態値を右シフトさせることによって前記現在状態値を求める段階を含むことができる。
【0024】
前記少なくとも一つのプロセッサーは複数のプロセッサーを含み、前記複数のプロセッサーは前記複数のシンボルに対して並列に前記符号化関数を実行し、前記符号化関数を実行するために、前記複数のプロセッサーそれぞれに対応初期状態値を割り当て、前記各プロセッサーが前記対応初期状態値から移動する前記ビット数を決定した後に、前記各プロセッサーに前記決定されたビット数を出力する対応メモリ位置を割り当て、前記決定されたビット数を前記圧縮ビットストリームに出力した後、前記方法は前記各プロセッサーに対して対応現在状態値を決定する段階をさらに含むことができる。
【0025】
本発明の一実施形態による方法は、少なくとも一つのプロセッサーによって行われる、圧縮ビットストリームに基づいてシンボルストリームを生成する方法であって、メモリから前記シンボルストリームに含まれている複数のシンボルに対応する前記圧縮ビットストリームを得る段階、前記圧縮ビットストリームから、前記複数のシンボルそれぞれに対するログ度数を示すログ度数分布表を求める段階、前記ログ度数分布表に基づいて前記各シンボルに対応する累積度数を示す累積度数分布表を生成する段階、前記ログ度数分布表および前記累積度数分布表に基づいて逆シンボル表を生成する段階、そして前記累積度数分布表および前記逆シンボル表に基づいて前記複数のシンボルに復号化関数を繰り返し適用して前記シンボルストリームを生成する段階を含む。
【0026】
前記累積度数分布表生成段階は、前記各シンボルに対するログ度数に基づいて整数値1を左シフトさせることによって前記各シンボルの度数を求める段階、そして前記各シンボルの度数を前記複数のシンボルのうちの以前シンボルの度数合計に足すことによって前記各シンボルに対する累積度数を求める段階を含むことができる。
【0027】
前記逆シンボル表生成段階は、現在状態値と前記圧縮ビットストリームに対応する複数のプレフィックスコードの最大長さ引く1にビット単位AND演算を行うことによって前記各シンボルに対して逆シンボル値を決定する段階を含み、前記逆シンボル値は前記各シンボルの前記累積度数以上であり、前記逆シンボル値は次のシンボルの累積度数より小さくてもよい。
【0028】
前記復号化関数を前記各シンボルに適用する段階は、前記各シンボルに対応する前記逆シンボル値に基づいて前記逆シンボル表から各シンボルを求める段階、前記複数のプレフィックスコードの最大長さに基づいて前記現在状態値を右シフトさせることによってシフト状態値を求める段階、前記各シンボルに対するログ度数に基づいて前記シフト状態値を左シフトさせることによって第1値を求める段階、前記複数のプレフィックスコードの最大長さに基づいて整数値1を左シフトさせることによって総度数を求める段階、前記現在状態値と前記複数のプレフィックスコードの最大長さ引く1にビット単位AND演算を行うことによって第2値を求める段階、そして前記第2値と前記逆シンボル値の合計から前記各シンボルに対応する前記累積度数を引くことによって更新状態値を求める段階を含むことができる。
【0029】
前記復号化関数を前記各シンボルに適用する段階は、前記複数のプレフィックスコードの最大長さと前記圧縮ビットストリームに対応する初期状態値の最上位設定ビットの差が0より大きいかを判断する段階、前記差が0よりは大きいという判断に基づいて、前記シンボルストリームに対応するコードワードの最小ビット長さのロガリズムに基づいて整数値1を左シフトさせることによって第3値を求める段階、前記差を前記第3値引く1に足すことによって第4値を求める段階、前記コードワードの前記最小ビット長さのロガリズムに基づいて前記第4値を右シフトさせることによってシフト第4値を求める段階、前記コードワードの前記最小ビット長さのロガリズムに基づいて前記シフト第4値を左シフトさせることによって前記初期状態値に移動するビット数を決定する段階、前記決定されたビット数に基づいて前記圧縮ビットストリームから追加ビットを求める段階、前記決定されたビット数に基づいて前記初期状態値を左シフトさせることによってシフト状態値を求める段階、そして前記シフト状態値と前記追加ビットを足すことによって前記現在状態値を求める段階を含むことができる。
【0030】
前記少なくとも一つのプロセッサーは複数のプロセッサーを含み、前記複数のプロセッサーは前記複数のシンボルに対して並列に前記復号化関数を実行し、前記復号化関数を実行するために、前記複数のプロセッサーそれぞれに対応初期状態値を割り当て、前記各プロセッサーが前記対応初期状態値に移動する前記ビット数を決定した後に、前記各プロセッサーに前記追加ビットを求める対応メモリ位置を割り当て、前記圧縮ビットストリームから前記追加ビットを求めた後、前記方法は前記各プロセッサーに対して対応現在状態値を決定する段階をさらに含むことができる。
【発明の効果】
【0031】
このようにすることによって、低いメモリ空間要件、低い複雑度、高い収率、近最適圧縮などを充足するデータ圧縮法を提供することができる。
【図面の簡単な説明】
【0032】
図1】本発明の一実施形態によるメモリシステムの例を概略的に示したブロック図である。
図2a】本発明の一実施形態による制御器を概略的に示したブロック図である。
図2b】本発明の一実施形態による符号器/復号器の例を概略的に示したブロック図である。
図3】本発明の一実施形態による通信システムの一例を概略的に示したブロック図である。
図4a】本発明の一実施形態による度数分布表の一例を示した図である。
図4b】本発明の一実施形態による単一木の森(forest of single trees)の一例を示した図である。
図4c】本発明の一実施形態によるハフマン木の一例を示した図である。
図4d】本発明の一実施形態によるハフマン木に関する情報を含む表の例を示した図である。
図5】本発明の一実施形態による最上位設定ビット決定アルゴリズムの例を示した図である。
図6a】本発明の一実施形態による符号器の例を概略的に示したブロック図である。
図6b】本発明の一実施形態によってシンボルストリームを符号化して圧縮ビットストリームを生成する過程のフローチャートである。
図7a】本発明の一実施形態による復号器の例を概略的に示したブロック図である。
図7b】本発明の一実施形態によって圧縮ビットストリームを複号化してシンボルストリームを生成する過程のフローチャートである。
図8a】本発明の一実施形態によるストリーミング符号器の例を概略的に示したブロック図である。
図8b】本発明の一実施形態によってシンボルストリームを符号化して圧縮ビットストリームを生成する過程のフローチャートである。
図8c】本発明の一実施形態によって、状態値から移動するビット数を決定するアルゴリズムの一例を示した図である。
図9a】本発明の一実施形態によるストリーミング復号器の例を概略的に示したブロック図である。
図9b】本発明の一実施形態によって圧縮ビットストリームを複号化してシンボルストリームを生成する過程のフローチャートである。
図9c】本発明の一実施形態によって状態値に移動するビット数を決定するアルゴリズムの一例を示した図である。
図10】本発明の一実施形態による並列符号器の一例を概略的に示したブロック図である。
図11】本発明の一実施形態による並列復号器の一例を概略的に示したブロック図である。
図12a】本発明の一実施形態によってシンボルストリームを符号化して圧縮ビットストリームを生成する過程のフローチャートである。
図12b】本発明の一実施形態によってシンボルストリームを符号化して圧縮ビットストリームを生成する過程のフローチャートである。
図12c】本発明の一実施形態によってシンボルストリームを符号化して圧縮ビットストリームを生成する過程のフローチャートである。
図13a】本発明の一実施形態によって圧縮ビットストリームを複号化してシンボルストリームを生成する過程のフローチャートである。
図13b】本発明の一実施形態によって圧縮ビットストリームを複号化してシンボルストリームを生成する過程のフローチャートである。
図13c】本発明の一実施形態によって圧縮ビットストリームを複号化してシンボルストリームを生成する過程のフローチャートである。
【発明を実施するための形態】
【0033】
以下、添付した図面を参照して本発明の実施形態について詳細に説明する。添付した図面で同一図面符号は同一構成要素を示す。本発明はここで説明する実施形態に限定されず、一実施形態の特性および部品は他の実施形態で含むこともでき省略することもできる。便宜上同一または類似の構成要素に関する重複説明は省略することができる。
【0034】
また、項目の目録の前の“少なくとも一つ”などの表現は項目の目録全体を修飾するが、目録の個別項目を修飾しない。例えば、“[A]、[B]および[C]のうちの少なくとも一つ”または“[A]、[B]または[C]のうちの少なくとも一つ”という表現は、A単独、B単独、C単独、AおよびB、BおよびC、AおよびC、またはA、BおよびCを意味する。
【0035】
“第1”、“第2”などの用語を多様な項目を修飾するのに使用することができるが、この項目はこの用語によって限定されない(例えば、相対的な順序または重要度を示すと解釈されてはならない)という点を理解しなければならない。このような用語はある項目を他の項目と区分するために使用するものに過ぎない。
【0036】
また、単数または複数と明示しない限り、そして周辺の文脈上単数または複数に解釈しなければならない場合でなければ単数と複数を全て意図したと見なければならない。
【0037】
以下の説明は、当業者が本発明を製作して使用し、これを特定のところに適用して結合することができるように与えられたものである。以下は特定の例を狙っているが、本発明の範囲を逸脱せずに他の例、進歩した例を考案することができるはずである。
【0038】
多様な変形は互いに異なる分野に対する多様な使用と共に当業者に自明であり、ここで定義する一般原理が広範囲な例に適用できる。従って、本発明は与えられた実施形態に限定されるのではなく、ここで説明する原理および新たな特徴と符合する最大の範囲になるはずである。
【0039】
与えられた説明で、本発明のさらに完全な理解のために様々の具体的な内容を提示する。しかし、このような具体的な例に限定せず本発明を実行することができるということは当業者に自明である。他の場合に、本発明が曖昧になることを避けるために、周知の構造および装置を詳細に示すよりはブロック図の形態に示す。
【0040】
(請求範囲、要約書および図面を含んで)本明細書に記載した全ての特徴は明示しない限り同一、均等または類似の目的を有する代替物に変えられてもよい。したがって、明示しない限り、説明した特徴それぞれは均等または類似の特徴の包括的な集合の一例に過ぎない。
【0041】
図面を参照して多様な特徴について説明する。図面はこの特徴に関する説明を容易にするためのものに過ぎないという点を理解しなければならない。図面は、請求した発明の完全な説明または請求した発明の限界を意図したものではない。また、図示した例が全ての側面または利点を示すのではない。特定の例と関連した一つの側面または利点がその例に限定される必要がなく他の例にも適用でき、これは示されていないか明示しなくても同様である。
【0042】
また、特定機能を果たす“ための手段(means for)”または特定機能を果たす“ための段階”と明示していない、請求項の構成要素は米国特許法112条6項で定義した“手段(means)”または“段階(step)”に解釈しない。特に、請求範囲で“する段階(step of)”または“する動作(act of)”の使用は米国特許法112条6項または米国特許法112(f)規定の適用を受けるためのことではない。
【0043】
左、右、前、後、上、下、順方向、逆方向、時計回り方向、半時計回り方向などの表現は説明の便宜のために使用したものに過ぎず、ある特定の固定方向を意味するのではない。この表現はある対象の様々の部分の間の相対的位置および/または方向を示すのに使用する。
【0044】
また、“システム”、“部品(component)”、“モジュール(module)”、“インターフェース(interface)”、“モデル(model)”などの用語は、一般にコンピュータ関連個体(entity)、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェアまたは実行中のソフトウェアのうちの一つを示す。例えば、部品はプロセッサー上に実行されるプロセス、プロセッサー、客体(object)、実行可能物(executable)、スレッド(thread of execution)、プログラムおよび/またはコンピュータであり得るが、これに限定されない。コントローラー上に実行されるアプリケーションとコントローラーが全て部品であり得る。一つ以上の部品はプロセスおよび/またはスレッド内に含まれてもよく、一つの部品が一つのコンピュータに入っているか二つ以上のコンピュータに分けられていてもよい。
【0045】
明示しない限り、それぞれの数値および範囲はその数値または範囲の前に“約”または“大略”がある近似値に解釈することができる。信号とそれに対応するノードまたは端子(port)は同じ名称を使用することができ、必要によって互いに取り替えて呼ぶこともある。
【0046】
本発明の実施形態について回路機能を参照して説明するが、これに限定されるのではない。本発明の実施形態は、単一集積回路(single integrated circuit)、多重チップモジュール(multi-chip module)、単一カード(single card)、システムオンチップ(system-on-a-chip)または多重カード回路パック(multi-card circuit pack)などに多様に実現できる。大きなシステムの一部として本発明の実施形態が実現できるという点は当業者に自明である。このような実施形態は例えば、デジタル信号処理機(DSP:digital signal processor)、マイクロコントローラー(microcontroller)、FPGA(field-programmable gate array)、ASIC(application-specific integrated circuit)または汎用コンピュータと共に適用できる。
【0047】
当業者に自明であろうが、回路成分の多様な機能はソフトウェアプログラムで処理ブロックとして実現できる。このようなソフトウェアは例えば、デジタル信号処理機、マイクロコントローラーまたは汎用コンピュータで使用できる。このようなソフトウェアは類型の媒体、例えば磁気記録媒体、光学記録媒体、固体メモリ、フロッピーディスケット、CD-ROM、ハードドライブまたはある非瞬間機械読取り可能保存媒体などに保存されたプログラムコードの形態に実現でき、プログラムコードがコンピュータなどの機械にロードされて実行されれば、その機械は本発明を実行する装置となる。汎用コンピュータ上に実現されたプログラムコード断片はプロセッサーと結合して特定論理回路と類似的に動作する固有の装置を提供する。詳細な実施形態はまた、ここで説明した方法および/または装置を使用して生成された、磁気記録媒体などに保存された磁場変化、媒体を通じて電気的または光学的に伝送されるビットストリームまたは他の信号値シーケンスの形態に示され得る。
【0048】
この分野で慣用的なものについて本実施形態では機能ブロック、単位および/またはモジュールという用語で説明し図面に示す。当業者であれば、このようなブロック、単位および/またはモジュールが、半導体基盤製造技術または他の製造技術で形成できる論理回路、別個部品、マイクロプロセッサ、ハードウェア内蔵回路、メモリ成分、配線接続(wiring connection)などの電気的(または光学的)回路として物理的に実現できるということが分かる。マイクロプロセッサや類似のもので実現されたブロック、単位および/またはモジュールの場合、ソフトウェア(例:マイクロコード)を使用してプログラムされてここで説明する多様な機能を果たすことができ、選択的にファームウエアおよび/またはソフトウェアによって駆動できる。これとは異なり、各ブロック、単位および/またはモジュールは専用ハードウェアによって実現されるか一部機能を果たす専用ハードウェアと他の機能を果たすプロセッサーの組み合わせ(例:一つ以上のプログラムされたマイクロプロセッサと関連回路)で実現できる。また、実施形態の各ブロック、単位および/またはモジュールは、本発明の範囲を逸脱せず、相互作用する二つ以上の個別ブロック、単位および/またはモジュールに物理的に分割できる。また、実施形態の複数ブロック、単位および/またはモジュールは、本発明の範囲を逸脱せず、物理的に結合されてさらに複合的なブロック、単位および/またはモジュールを成し得る。
【0049】
図1は、本発明の一実施形態によるメモリシステム1000を概略的に示したブロック図である。図1を参照すれば、メモリシステム1000は、メモリ(memory)100および制御器(controller)200を含むことができる。
【0050】
メモリ100は、制御器200の制御によって書込み、読取りおよび削除動作を行うことができる。本発明の一実施形態によれば、メモリ100は例えば、非揮発性(nonvolatile)メモリであるか揮発性(volatile)メモリであってもよい。
【0051】
制御器200は、ホスト(host)(図示せず)およびメモリ100と連結される。制御器200は、ホストの要求に応答してメモリ100に接近(access)し得る。例えば、制御器200は、メモリ100の書込み、読取りおよび削除動作を制御することができる。制御器200は、メモリ100とホストの間のインターフェースを提供することができる。制御器200は、メモリ100制御のためのファームウエアを駆動することができる。
【0052】
制御器200は、ホストから入力データを受信することができる。制御器200は、入力データ、例えば図1に示したDATAを符号化して符号化データ(coded data)DATA_Cを生成することができる。制御器200は、メモリ100に制御信号CTRLおよびアドレスADDRを提供することができる。制御器200は、メモリ100と符号化データDATA_Cを交換することができる。制御器200は、メモリ100から符号化データDATA_Cを受信し符号化データDATA_Cを復号化することができる。制御器200は、復号化データ(decoded data)、例えば図1に示したDATAをホストに伝送することができる。
【0053】
本発明の一実施形態によれば、メモリシステム1000は、セキュアデジタル(Secure Digital)およびその変形などを含むメモリカードフォームファクター(form factor)、標準ハードディスクドライブ(HDD:hard disk drive)フォームファクター、mSATA(mini-Serial AT Attachment)、PCI Express Mini Card、M.2などを含む標準カードフォームファクター、PATA(Parallel ATA)またはSATAなどのインターフェースを有するディスク-オン-モジュール(disk-on-a-module)フォームファクター、ラックマウントシステム(rack-mount system)などに適用されるボックス(box)フォームファクター、PCIe(PCI Express)、ミニ(mini)PCIe、ミニDIMM(dual in-line memory module)、MO-297などを含むベアボード(bare-board)フォームファクター、ボールグリッドアレイ(ball grid array)フォームファクターのようなフォームファクターを含むソリッドステートドライブ(SSD:solid state drive)を含むかこれで実施できる。
【0054】
メモリ100は、フラッシュメモリ(flash memory)装置、NANDフラッシュメモリ装置、PRAM(phase change RAM)、FRAM(ferroelectric RAM)(登録商標)、MRAM(magnetic RAM)などを含むことができるが、これに限定されない。メモリ100は、平面構造を有するか、積層メモリセルからなる3次元(3D)メモリセル構造を有することができる。メモリセルそれぞれは、データの各ビットを記憶するためのレベル(level)を含むことができる。メモリ100は例えば、メモリチップ(例:NANDチップ)で実現できる。便宜上、図1には一つのメモリ100のみを示したが、メモリシステム1000は多様な方式で配置され多様なチャンネルを通じて制御器200と連結された複数のメモリ装置(例:メモリチップ)を含むことができる。
【0055】
図2aは、本発明の一実施形態による制御器を概略的に示したブロック図である。図2aを参照すれば、制御器200は、システムバス(system bus)210、プロセッサー(processor)220、RAM230、ホストインターフェース(host interface)240、メモリインターフェース(memory interface)250、および符号器/復号器(encoder/decoder)260を含むことができる。図2aに示した制御器は図1に示した制御器200であるかこれに対応するものであってもよい。
【0056】
システムバス210は、制御器200の部品220~260の間のチャンネルを提供することができる。プロセッサー220は、制御器200の全体動作を制御する。RAM230は、作業メモリ(working memory)、キャッシュメモリ(cache memory)およびバッファーメモリ(buffer memory)のうちの少なくとも一つとして使用できる。ホストインターフェース240は、USB(Universal Serial Bus)、MMC(multimedia card)、PCI(peripheral component interconnection)、PCI-E(PCI-express)、ATA(Advanced Technology Attachment)、Serial-ATA、Parallel-ATA、SCSI(small computer small interface)、ESDI(enhanced small disk interface)、IDE(Integrated Drive Electronics)およびFirewireなど多様な通信標準のうちの少なくとも一つを通じて外部装置(例:ホスト)と通信できる。
【0057】
メモリインターフェース250はメモリ装置、例えば図1に示したメモリ100と接続する。メモリインターフェース250は、NAND回路インターフェースまたはNOR回路インターフェースを含むことができる。
【0058】
符号器/復号器260は外部ホストから受信したデータに符号化動作を行い、メモリ100から受信したデータに復号化動作を行うことができる。例えば、符号器/復号器260は受信した入力データ、例えば、図1に示したDATAを符号化して符号化データDATA_Cを生成することができる。また、符号器/復号器260は符号化データDATA_Cを受信し、符号化データDATA_Cを複号化してデータを再建(reconstruct)または復旧(recover)し、再建または復旧したデータを図1に示したDATAとして出力することができる。
【0059】
図2bは、本発明の一実施形態による符号器/復号器260の例を概略的に示したブロック図である。図2aおよび図2bを参照すれば、符号器/復号器260は、符号器202および復号器204のうちの一つまたは二つともを含むことができる。
【0060】
符号器202は、複数の情報ワードビットを受信することができる。本発明の一実施形態によれば、情報ワードビットは、複数のシンボルを含むシンボルストリームに含まれてもよい。シンボルストリームおよび/または情報ワードビットは、例えば、ホストから受信することができる。符号器202は、シンボルストリームおよび/または情報ワードビットに符号化を行って符号化(された)値(coded value)を生成することができる。本発明の一実施形態によれば、符号化値は、例えば、複数のプレフィックスコード(prefix code)を含む符号化(された)または圧縮(された)ビットストリームであってもよい。符号化値は、メモリ100でプログラミングできる。メモリ100でプログラミングされたデータは、符号化値として読み取ることができる。復号器204は読み取った符号化値に復号化を行って情報ワードビットおよび/またはシンボルストリームを生成、例えば、ホストから受信した情報ワードビットおよび/またはシンボルストリームを再建または復旧することができる。
【0061】
本発明の一実施形態によれば、符号器202を圧縮器とも言え、復号器204は圧縮解除器とも言え、符号器/復号器260は圧縮器/圧縮解除器とも言える。例えば、符号器202はシンボルストリームを圧縮ビットストリームに圧縮することができ、復号器204は圧縮ストリームを圧縮解除してシンボルストリームを再建、またはそうでなければ生成することができる。
【0062】
本発明の一実施形態によれば、符号器202および復号器204のうちの一つ以上はメモリシステム1000以外のシステムまたは装置に含まれてもよい。例えば、図3は、本発明の一実施形態による通信システム3000の一例を概略的に示したブロック図である。図3から分かるように、通信システム3000は、例えば、有無線通信チャンネルを通じて互いに交信できる送信機302と受信機304を含むことができる。本発明の一実施形態によれば、送信機302は図2bに示した符号器202を含み、符号器202を使用してシンボルストリームに基づいた圧縮ビットストリームを生成することができる。送信機302は、有無線通信チャンネルを使用して、符号器202が生成した圧縮ビットストリームを受信機304に伝送することができる。本発明の一実施形態によれば、受信機304は図2bに示した復号器204を含むことができ、復号器204は圧縮ビットストリームを圧縮解除してシンボルストリームを再建することができる。
【0063】
本発明の一実施形態によれば、符号器202および復号器204のうちの一つ以上はエントロピー暗号化法を使用することができる。例えば、本発明の一実施形態によれば、符号器202および復号器204は、算術暗号化法(arithmetic coding technique)および範囲暗号化法(range coding technique)のうちの一つ以上を使用することができる。この技術はシャノン限界(Shannon limit)に近い圧縮を許容することができる。しかし、この技術は通常複雑で符号器202の様々の掛算動作および復号器204の様々の割算動作を使用することができる。
【0064】
他の例として、本発明の一実施形態によれば、符号器202および復号器204は、範囲非対称記数法(rANS:range asymmetric numeral systems)暗号化法を使用することができる。範囲非対称記数法暗号化法もシャノン限界に近い圧縮を許容することができる。しかし、この技術も多少複雑で符号器202の一つの割算動作および復号器204の一つの掛算動作を使用することができる。範囲非対称記数法暗号化法は積層型符号化/復号化(stack encoding/decoding)を含むことができ、これは後入先出(LIFO:last-in-first out)動作を示すことができる。また、範囲非対称記数法暗号化法は、基本並列符号化および復号化(native parallel encoding and decoding)を許容することができる。
【0065】
他の例として、本発明の一実施形態によれば、符号器202および復号器204は表非対称記数法(tANS:table asymmetric numeral systems)暗号化法を使用することができる。表非対称記数法暗号化法もシャノン限界に近い圧縮を許容することができる。また、表非対称記数法暗号化法は前述の技術よりあまり複雑でなく、符号器202および復号器204のシフト(shift)、足す(add)および表検索(table lookup)動作を使用することができる。しかし、表非対称記数法暗号化法は相対的に大きいメモリ空間(memory footprint)を使用し、表を生成するための付加段階を使用することができる。表非対称記数法暗号化法は積層型符号化/復号化を含むことができ、基本並列符号化および復号化を許容することができる。
【0066】
また他の例として、本発明の一実施形態によれば、符号器202および復号器204は、ハフマン暗号化法(Huffman coding techniques)を使用することができる。ハフマン暗号化法は、シンボル当り1ビット内でシャノン限界に最適であり得る。また、ハフマン暗号化法は前述の一部技術よりあまり複雑でなく、符号器202および復号器204のシフト(shift)および表検索(table lookup)動作を使用することができる。しかし、ハフマン暗号化法は、特に復号器204の場合、並列化が難しい。
【0067】
前述の様々の技術のさらに具体的な例を以下に提示する。本発明の一実施形態によれば、前述の様々の技術、例えば、算術暗号化法、範囲暗号化法、表非対称記数法暗号化法、ハフマン暗号化法などは固定度数分布表(static frequency table)を使用することができる。度数分布表は、符号化されるシンボルストリームを走査(scanning)することによって生成することができる。その後、度数分布表は一般に符号器202によって圧縮されビットストリームのプレフィックスメッセージ(prefix message)として送付できる。その次に、復号器204は、ビットストリームを複号化する前に度数分布表を圧縮解除および再現することができる。
【0068】
図4aは、本発明の一実施形態による“THIS IS HIS MESSAGE”という例メッセージに対する度数分布表の例を示した図である。図4aから分かるように、例メッセージに含まれている各シンボルを例メッセージ中のシンボル出現回収に関する情報と共に度数分布表に列挙した。例えば、図4aに示したように、度数分布表はシンボル“S”が例メッセージに五度現れるのを示すことができ、シンボル“I”が例メッセージに三度現れるのを示すことができ、その他などである。
【0069】
例のハフマン暗号化法による符号化を行うためには、度数分布表を生成した後に、例メッセージに対応するハフマン木(Huffman tree)を得ることができる。ハフマン木組織過程はシンボルを単一ノード木(single node trees)の整列森(sorted forest)に入れることによって始まる。
【0070】
図4bは、本発明の一実施形態による例メッセージ“THIS IS HIS MESSAGE”に対する単一ノード木の森の例を示した図である。図4bから分かるように、それぞれの単一ノード木はシンボルと当該度数を含む。
【0071】
その次に、根(root)から最低度数を有する二つの木を選択し、選択した木から一つの新たな二進木(binary tree)を子(child)として生産し、これらの度数合計を根に記憶する繰り返し動作を行うことができる。
【0072】
一つの木のみ残ると、繰り返しを終えることができる。この最後の木をハフマン木、ハフマン暗号化木(Huffman coding tree)または適正ハフマン木(optimal Huffman tree)と言える。図4cは、本発明の一実施形態による例メッセージ“THIS IS HIS MESSAGE”に対するハフマン木の例を示した図である。
【0073】
ハフマン木の重要な側面は、シンボルを示すのに使用できるプレフィックスコード(prefix code)の長さ、例えば、ビット長さから派生した最終ログ度数分布表(log frequency table)と関係がある。ここで、“s”はシンボルを示すことができ、“S”は0~S-1範囲にあるシンボルの数を示すことができる。“l”は各シンボルに対するハフマン木の長さを示すことができ、これはまた、各シンボルを示すのに使用されるプレフィックスコードの長さに対応できる。“n”は、シンボルSのハフマン木長さlの最大値を示すことができる。“p(s)”は各シンボルの確率を示すことができ、“F”は各シンボルの度数(frequency count)を示すことができ、“N”は度数の合計を示すことができ、“z”は各シンボルの度数のロガリズム(logarithm)を示すことができる。本発明の一実施形態によれば、度数のロガリズムはログ度数と言い、例えば、logと同一であり得る。ここで、別に明示しない限り、ロガリズムは二進ロガリズムまたは底(base)が2であるロガリズムを示すことができる。
【0074】
ハフマン木の各決定(decision)は二進(binary)であるので、下記[数式1]が成立する。
【数1】
【0075】
また、[数式2]が成立するということが知られている。

【数2】
したがって、[数式3]~[数式5]も成立する。
【数3】
【数4】
【数5】

【数6】
【数7】
【0076】
したがって、[数式8]が成立する。
【数8】
【0077】
したがって、各シンボルに対して各シンボルの度数ロガリズムは、ハフマン木の最大長さから各シンボルに対するハフマン木の長さを引いたものと同一である。言い換えれば、各シンボルに対するログ度数はプレフィックスコードの最大長さと各シンボルに対応するプレフィックスコードの長さの差と同一であり得る。
【0078】
図4dは、本発明の一実施形態による例メッセージ“THIS IS HIS MESSAGE”に対応するハフマン木に関する情報を含む表の例を示した図である。図4dの表は、各シンボルに対応するハフマン木の長さ、各シンボルを示すのに使用したビットストリーム(またはプレフィックスコード)、各シンボルの度数、各シンボルのログ度数と共に各シンボルを列挙している。
【0079】
例のrANS暗号化法によって符号化を行うために、例のrANS暗号化法による符号化関数は下記[数式9]のように表現することができる。
【数9】
【0080】
上記[数式9]で、Cは符号化関数を示し、xは符号器202または復号器204の状態を示す正の整数であり、Bはシンボルsに対応する累積度数を示し、Nは総度数を示す。本発明の一実施形態によれば、要素xは状態値と言える。要素Bは下記[数式10]~[数式12]を充足することができる。
【数10】
【数11】
【数12】
【0081】
例のrANS暗号化法によって復号化を行うために、下記[数式13]を充足するシンボルsを求める。
【数13】
【0082】
その次に、下記[数式14]によって現在状態値xに復号化関数
を適用することができる。
【数14】
【0083】
例のストリーミング(streaming)rANS符号化法によってストリーミングビットストリームσに符号化を行うために、大きさBの出力ブロックを定義し、Bが
と同じようにbを定義することができる。その次に、状態値xが
以上である間に下記[数式15]および[数式16]を適用して更新ビットストリーム
および更新状態値
を求めることができる。

【数15】
【数16】
【0084】
その次に、[数式9]の符号化関数を更新状態値x’に適用することができる。
例のストリーミングrANS暗号化法によって復号化を行うために、下記[数式17]を充足するシンボルsを求める。
【数17】
【0085】

その次に、[数式14]の復号化関数D(x)を更新状態値x’に適用することができ、状態値xがNより小さい間に下記[数式18]および[数式19]を適用することができる。

【数18】
【数19】
【0086】
例のストリーミングrANS暗号化法は、例えば、前述の範囲暗号化法と異なり、符号器と復号器の状態が正確に同期化されるという特性を有する。また、復号化時にシンボルがすぐに分かる。結局、例のストリーミングrANS暗号化法は読み取るべきビット数を自動的に設定することができる。これはハフマン暗号化とは反対であり、ハフマン暗号化ではシンボルおよび次のビットシーケンスの開始点を見つけるために現在ビットシーケンスを読み取らなければならない。これは、メタデータなく複号化する時さえrANSのストリームが交互に配置される(interleaved)ということを意味する。
【0087】
他の例の暗号化法は、並列rANS暗号化法である。例の並列rANS暗号化法では、個別符号器と復号器が0(log p)の遮断調整段階(blocking coordination step)で並列に動作できる。各プロセッサー、例えば、個別符号器または復号器それぞれはブロック大きさを交換することができ、これによりデータを並列に書き込むか読み取ることができる。
【0088】
前述の暗号化法それぞれは、若干の利点と若干の短所を有することができる。例えば、前述の暗号化法のうち、低いメモリ空間要件、低い複雑度、(例えば、並列化の容易さによる)高い収率、ほとんど最適の圧縮など全ての属性の組み合わせを示すものはない。
【0089】
したがって、前述の様々の暗号化法の利点を取り同一な短所は示さないように本発明の実施形態による暗号化法を組織する。例えば、本発明の実施形態による暗号化法は近最適(near optimum)低複雑度(low complexity)ハフマン暗号化法のある構成要素をrANS暗号化法の基本並列実施(native parallel implementation)と結合することができる。本発明の一実施形態によれば、この暗号化法をハフマン非対称記数法(hANS:Huffman asymmetric numeral systems)暗号化法と言える。
【0090】
本発明の一実施形態によれば、hANS暗号化法はハフマン暗号化木を使用して度数分布表を生成することができ、これは近最適エントロピー(near optimal entropy)符号化および復号化を達成することができる。また、hANS暗号化法は、例えば、rANS暗号化法を使用して伝送される固定度数分布表より伝送値が低い表を伝送することと関連がある。また、hANS暗号化法はtANS暗号化法と類似した複雑度を有することができる。また、rANS暗号化法と同様に、hANS暗号化法はtANS暗号化法の場合のような予め計算された表が必要でないことがある。また、hANS暗号化法は出力ビットストリームにシンボル長さを埋め込むことと関連があり、これはhANS暗号化法が容易に並列化されるようにする。
【0091】
したがって、例えば、以下に説明する図5図13cによるhANS暗号化法と関連する実施形態は、低いメモリ空間要件、低い複雑度、(例えば、並列化の容易さによる)高い収率、近最適圧縮を有することができる。
【0092】
図5図13cは、hANS暗号化法による符号化および復号化過程の例およびこの過程を行う装置の例に関するものである。例えば、図6aおよび図6bは基本(basic)hANS符号器に関するものであり、図7aおよび図7bは基本hANS復号器に関するものである。これと同様に、図8a~図8cはストリーミング(streaming)hANS符号器に関するものであり、図9a~図9cはストリーミングhANS復号器に関するものである。また、図10は並列(parallel)hANS符号器に関するものであり、図11は並列hANS復号器に関するものである。図12a~図12cおよび図13a~図13cはhANS暗号化法を使用してデータを符号化および復号化する過程の例に関するものである。少なくとも一部実施形態で、図5図13cに示した要素が例えば前述のメモリシステム1000または通信システム3000内に含まれてもよい。
【0093】
【0094】
で表現することができる。図5は、本発明の一実施形態による最上位設定ビット決定アルゴリズムの例を示した図である。図5から分かるように、整数vの最上位設定ビットはmssbで表記することができ、ビット単位シフト演算(bitwise shift operation)とビット単位OR演算のみを使用して計算することができる。
【0095】
本発明の一実施形態によれば、hANS暗号化法はビットストリームにビットを書き込む関数と関連あり、これをwritebits関数という。本発明の一実施形態によれば、writebits関数は次の通り定義することができる。
void writebits(unsigned int*ptr、unsigned int src、unsigned int bits);
【0096】
本発明の一実施形態によれば、writebitsは次のように作用するビット指向関数(bit oriented function)であってもよい。(*ptrの整数値が示す)ビットストリームの特定地点で、srcの最下位ビット(LSB:least significant bit)bitsを足し、*ptr +=bitsを増分する[At a given point in the bitstream(indicated by the integer value of the *ptr)、add the least significant bit(LSB) bits of src, and increment the *ptr +=bits]。例えば、*ptr=17、src=0101、bits=4である場合、ビットストリームの尾(tail)に0101が足され、ptrは21に増分される。
【0097】
本発明の一実施形態によれば、hANS暗号化法はビットストリームからビットを読み取る関数と関連あり、これをreadbits関数という。本発明の一実施形態によれば、readbits関数は次の通り定義することができる。
unsigned int readbits(unsigned int*ptr、unsigned int bits);
【0098】
本発明の一実施形態によれば、readbitsは次のように動作するビット指向関数であってもよい。(*ptrの整数値が示す)ビットストリームの特定地点で、ビットストリームのLSB bitsを除去し、その値を返還し、*ptr-=bitsを減分する[At agiven point in the bitstream(indicated by the integer value of the *ptr) remove the LSB bits of the bitstream, return that value, and decrement the *ptr -=bits]。*ptr=21、bits=4である前述の例で、0101を戻し*ptr=17。
【0099】
説明の便宜のために、本発明の実施形態によるhANS暗号化法の例を基本(basic)hANS暗号化法、ストリーミング(streaming)hANS暗号化法、並列(parallel)hANS暗号化法の順に以下に提示する。このような技術それぞれは前の技術の上の建物として理解することができる。
【0100】
前述の通り、図6aは、本発明の一実施形態による、基本hANS符号器という符号器612の例を概略的に示したブロック図である。図6aから分かるように、符号器612はシンボルsおよび現在状態値xを受信し、更新状態値x’を出力するために符号化関数614を適用することができる。hANS暗号化に使用される符号化関数614の例を以下に提示する。
【0101】
図6bは、本発明の一実施形態によってシンボルストリームを符号化して圧縮ビットストリームを生成する過程600のフローチャートである。一部実施形態では、前述の要素のうちの一つ以上、例えば、符号器612およびその内部要素のうちの一つ以上が図6bの過程ブロックのうちの一つ以上を行うことができる。
【0102】
図6bに示したように、過程600は、シンボルストリーム用度数分布表を求める段階(動作601)を含むことができる。例えば、S個のアルファベットシンボルを有するシンボルストリームが与えられ、シンボルストリームの長さがMであれば、度数分布表は特定シンボルsがシンボルストリーム内に現れる回数を示すことができる。
【0103】
図6bに示したように、過程600は、適正ハフマン木を求める段階(動作602)を含むことができる。本発明の一実施形態によれば、度数分布表に基づいて適正ハフマン木を求めることができる。本発明の一実施形態によれば、メモリシステム1000や通信システム3000のようなシステム、例えば、符号器612や符号器612を含む記憶システムがシンボル当り1ビット内でシャノン限界を達成するように、シンボルストリームの各シンボルsにプレフィックスコード(prefix code)を割り当てることができる。本発明の一実施形態によれば、動作602は、ハフマン符号化法の一段階に対応できる。しかし、本発明の実施形態によれば、過程600は度数分布表やプレフィックスコード木などのような表を復号器に伝送する段階を含まなくてもよい。その代わりに、本発明の実施形態によれば、各シンボルsに対するプレフィックスコードの長さのみを示す表を過程600内に送ることができる。本発明の一実施形態によれば、各シンボルの度数のロガリズムを示すログ度数分布表を過程600内に送ることができる。
【0104】
図6bに示したように、過程600は、各シンボルsに対するプレフィックスコードの長さ(l[s]と示すことができる)をnと共に基づいて表を生成する段階(動作603)を含むことができる。本発明の一実施形態によれば、この表をプレフィックス長表(prefix length table)と言える。本発明の一実施形態によれば、シンボルsのログ度数を示す要素z[s]はn-l[s]と同一であり得る。本発明の一実施形態によれば、1<<z[s]はシンボルsに対応する度数であってもよく、シンボルストリームに対する度数の合計は1<<nと同一であり得る。
【0105】
図6bに示したように、過程600は、累積度数分布表を生成する段階(動作604)を含むことができる。本発明の一実施形態によれば、動作602および動作603で生成した表のうちの一つ以上に基づいて累積度数分布表を生成することができる。本発明の一実施形態によれば、シンボルsに対応する累積度数はB[s]と示すことができる。本発明の一実施形態によれば、累積度数分布表に対して下記[数式20]~[数式22]が成立できる。
[数式20]
B[0]=0
[数式21]
B[s]=B[s-1]+(1<<z[s-1])
[数式22]
B[S]=1<<n
【0106】
図6bに示したように、過程600はM個のシンボルに対して符号化関数614を繰り返す段階(動作605)を含むことができる。本発明の一実施形態によれば、符号化関数614は下記[数式23]で表現することができる。
[数式23]
C(s,x)=((x>>z[s])<<n)+(x&((1<<z[s])-1))+B[s]
【0107】
本発明の一実施形態によれば、シンボルsと現在状態値xに符号化関数614を適用した結果は、更新状態値x’であり得る。本発明の一実施形態によれば、更新状態値x’は次のシンボルに対する現在状態値として使用できる。本発明の一実施形態によれば、M個のシンボル全てに対して動作605を繰り返すと、最終更新状態値x’は入力シンボルストリームに対応する圧縮ビットストリームになり得る。本発明の一実施形態によれば、動作605はrANS符号化法の一段階の低複雑度バージョンに対応できる。
【0108】
前述から分かるように、過程600によれば、符号器612は、表検索動作、ビット単位シフト動作、ビット単位AND動作および足し算動作のみを使用して入力シンボルストリームに基づいた圧縮ビットストリームを生成することができる。
【0109】
前述のように、図7aは、本発明の一実施形態による、基本hANS復号器という復号器712の例を概略的に示したブロック図である。図7aから分かるように、復号器712は現在状態値xを受信することができ、現在状態値xに基づいて表検索関数(table lookup function)714を使用して逆シンボル表(inverse symbol table)から対応シンボルsを求めることができ、更新状態値x’を出力するために復号化関数716を適用することができる。hANS暗号化に使用される復号化関数716の例を以下に提示する。
【0110】
図7bは、本発明の一実施形態によって圧縮ビットストリームを複号化してシンボルストリームを生成する過程700のフローチャートである。一部実施形態では、前述の要素のうちの一つ以上、例えば、復号器712およびその内部要素のうちの一つ以上が図7bの一つ以上の過程ブロックを行うことができる。
【0111】
図7bに示したように、過程700はログ度数分布表を復号化する段階(動作701)を含むことができる。本発明の一実施形態によれば、復号器712は圧縮ビットストリームおよびシンボル当りプレフィックスコード長さを示す表、例えば動作603のプレフィックス長表を受信することができ、圧縮ビットストリームおよびプレフィックスコード長さに基づいてログ度数分布表を復号化することができる。
【0112】
図7bに示したように、過程700は、累積度数分布表を生成する段階(動作702)を含むことができる。本発明の一実施形態によれば、累積度数分布表は1<<z[s]を合計することによって生成することができる。
【0113】
図7bに示したように、過程700は、逆シンボル表を生成する段階(動作703)を含むことができる。本発明の一実施形態によれば、逆シンボル表は、表探索関数714に使用される逆シンボル表に対応できる。本発明の一実施形態によれば、逆シンボル表は下記[数式24]が成立するS[x&((1<<n)-1)]を求めることによって生成できる。
[数式24]
B[s]<=x&((1<<n)-1)<B[s+1]
【0114】
本発明の一実施形態によれば、動作703は、算術暗号化法、範囲暗号化法、rANS暗号化法、およびtANS暗号化法のうちの一つ以上からの段階に対応できる。
【0115】
図7bに示したように、過程700は、M個のシンボルに対して復号化動作を繰り返す段階(動作704)を含むことができる。本発明の一実施形態によれば、動作704は、表探索関数714を行うことによってシンボルsを決定し、復号化関数716を適用することによって更新状態値x’を決定することを含むことができる。
【0116】
本発明の一実施形態によれば、表探索関数714は逆シンボル表からシンボルsを回収(retrieving)することと関連があり、下記[数式25]によって行うことができる。
[数式25]
s=S[x&((1<<n)-1)]
【0117】
本発明の一実施形態によれば、復号化関数716は、下記[数式26]によって表現することができる。
[数式26]
D(x)=((x>>n)<<z[s])+(x&((1<<n)-1))-B[s]
【0118】
本発明の一実施形態によれば、シンボルsと現在状態値xに復号化関数716を適用した結果は更新状態値x’であり得る。本発明の一実施形態によれば、更新状態値x’は次のシンボルに対する現在状態値として使用できる。本発明の一実施形態によれば、M個のシンボル全てに対して動作704を繰り返すと、最終更新状態値x’は符号器の開始状態であり得る。
【0119】
前述から分かるように、過程700によれば、復号器712は表検索動作、ビット単位シフト動作、ビット単位AND動作および足し算動作のみを使用して圧縮ビットストリームに基づいたシンボルストリームを生成することができる。
【0120】
前述のように、図8a~図8cおよび図9a~図9cは、ストリーミングhANS暗号化法に関するものである。特に、図8a~図8cは本発明の一実施形態によるストリーミングhANS符号化法に関するものである。本発明の一実施形態によれば、ストリーミングhANS符号化法は、圧縮ビットストリームに出力される現在状態値xのビット数を示す値dを決定する段階を含むことができる。本発明の一実施形態によれば、値dは前述のストリーミングrANS暗号化法で使用される“while loop”を示す分岐(branching)を避けることに使用できる。本発明の一実施形態によれば、分岐を避ければ、暗号化過程の速度が速くなり得る。
【0121】
本発明の一実施形態によれば、nが整数でありxが実数(real value)であれば、値nと特定シンボルsに対応する現在状態値xの間の関係を下記[数式27]によって表現することができる。
【数20】
【0122】
n+1限定をなくせば、[数式27]を下記[数式28]および[数式29]で表現することができる。

【数21】
【数22】
【0123】
これに基づいて、下記[数式30]~[数式36]を使用してdb-ビットブロックが除去される最小値dを求めることができる。
【数23】
【数24】
【数25】
【数26】
【0124】
前記[数式27]を呼び出せば、下記[数式34]~[数式36]が成立することが分かる。
【数27】
【数28】
【数29】
【0125】
図8aは、本発明の一実施形態によるストリーミングhANS符号器という符号器812の例を概略的に示したすブロック図である。図8aから分かるように、符号器812は符号化関数614を含むことができ、ストリーミング関数814およびwritebits関数816も含むことができる。本発明の一実施形態によれば、符号器812は現在状態値xおよびシンボルsを受信し、ストリーミング関数814を適用して値d、出力状態値xおよび中間状態値x*を生成することができる。符号器812は圧縮ビットストリームに出力ビットを書き込むためにwritebits関数816を値dbおよび出力状態値xに適用することができる。その次に、符号器812は符号化関数614をシンボルsおよび中間状態値x*に適用して更新状態値x’を生成することができる。
【0126】
図8bは、本発明の一実施形態によってシンボルストリームを符号化して圧縮ビットストリームを生成する過程800のフローチャートである。本発明の一実施形態によれば、過程800は、前述の図6bで説明した過程600の動作605に含まれるかその代わりに行うことができる。一部実施形態では、前述の要素のうちの一つ以上、例えば符号器812およびその内部要素のうちの一つ以上が図8bの過程ブロックのうちの一つ以上を行うことができる。
【0127】
図8bに示したように、過程800は値bを1<<aと同一に設定する段階(動作801)を含むことができる。本発明の一実施形態によれば、値bは符号器812のコードワード(codeword)の最小ビット長さを示すことができ、コードワードの最小ビット長さのロガリズムをaと示すことができる。
【0128】
図8bに示したように、過程800は、現在状態値の最上位設定ビットを決定する段階(動作802)を含むことができる。本発明の一実施形態によれば、最上位設定ビットは図5に示したアルゴリズムによって決定できる。
【0129】
図8bに示したように、過程800は、最上位設定ビットとシンボルsのログ度数値z[s]の差が値b以上であるかを判断する段階(動作803)を含むことができる。
【0130】
図8bに示したように、その差が値bより小さいという判断(動作803において、いいえ)に基づいて、過程800は符号化関数614を現在状態値xおよびシンボルsに適用して更新状態値x’を求める段階を含む動作807に進むことになる。本発明の一実施形態によれば、更新状態値x’は次のシンボルに対応する現在状態値として使用できる。
【0131】
図8bに示したように、その差が値b以上であるという判断(動作803において、はい)に基づいて、過程800は動作804に進むことになる。
【0132】
図8bに示したように、過程800は、状態値xから移動して圧縮ビットストリームに出力されるbビットブロックの数を示すことができる値dを決定する段階(動作804)を含むことができる。
【0133】
図8bに示したように、過程800は、dbビット(または例えばd<<aビット)を圧縮ビットストリームに出力する段階(動作805)を含むことができる。本発明の一実施形態によれば、符号器812は値dおよび出力状態値xに基づいてwritebits関数816を使用して動作806を行うことができる。
【0134】
図8bに示したように、過程800は、中間状態値x*を決定する段階(動作806)を含むことができる。動作806を行った後、過程800は符号化関数614を中間状態値x*およびシンボルsに適用して更新状態値x’を求める段階を含む動作807に進むことになる。本発明の一実施形態によれば、更新状態値x’は次のシンボルに対応する現在状態値として使用できる。
【0135】
図8cは、本発明の一実施形態によって、中間状態値x*と共に、現在状態値xから移動するビット数dbを決定するアルゴリズムの一例を示した図である。図8cから分かるように、ビットdの数と中間状態値x*はビット単位シフト演算、ビット単位引き算演算、ビット単位AND演算、およびビット単位OR演算のみを使用して求めることができる。したがって、掛算演算とストリーミングrANS暗号化法のwhile loopを避けることができる。
【0136】
図9a~図9cは、本発明の一実施形態によるストリーミングhANS復号化法に関するものである。本発明の一実施形態によれば、ストリーミングhANS復号化法は前述の値dと異なり、圧縮ビットストリームから現在状態値xに移動するビット数を示す値dを決定する段階を含むことができる。本発明の一実施形態によれば、値dは分岐、例えば前述のストリーミングrANS暗号化法で使用される“while loop”を避けることに使用できる。本発明の一実施形態によれば、分岐を避ければ、暗号化過程の速度が速くなり得る。
【0137】
本発明の一実施形態によれば、nが整数でありxが実数であれば、値nと特定シンボルsに対応する現在状態値xの間の関係を下記[数式37]~[数式39]によって表現することができる。
【数30】
【数31】
【数32】
【0138】
前記[数式27]を呼び出せば、ストリーミングhANS復号化法によって下記[数式40]~[数式43]が成立する値dを求めることができる。
【数33】
【数34】
【数35】
【数36】
【0139】
したがって、値dは下記[数式44]および[数式45]によって求めることができる。
【数37】
【数38】
【0140】
図9aは、本発明の一実施形態によるストリーミングhANS復号器という復号器912の例を概略的に示したブロック図である。図9aから分かるように、復号器912は復号化関数716および表検索関数714を含むことができ、再規格化(renormalization)関数916およびreadbits関数918も含むことができる。本発明の一実施形態によれば、復号器912は現在状態値xを受信し、表探索関数714を適用してシンボルsを求め、現在状態値xおよびシンボルsに復号化関数716を適用して中間状態値x*を得ることができる。本発明の一実施形態によれば、復号器912はストリーミング関数914を適用して中間状態値x*に移動するビット数を示す値dを求め、readbits関数918を適用して値dによる読取りビット(read bit)を求めることができる。例えば、本発明の一実施形態によれば、移動するビット数はdbビットであってもよい。本発明の一実施形態によれば、復号器912は再規格化関数916を中間状態値x*に適用して再規格化状態値を求め、再規格化状態値を読取りビットに足して更新状態値x’を生成することができる。
【0141】
図9bは、本発明の一実施形態によって圧縮ビットストリームを複号化してシンボルストリームを生成する過程900のフローチャートである。本発明の一実施形態によれば、過程900は前述の図7bで説明した過程700の動作704に含まれるかその代わりに行うことができる。一部実施形態では、前述の要素のうちの一つ以上、例えば、復号器912およびその内部要素のうちの一つ以上が図9bの過程ブロックのうちの一つ以上を行うことができる。
【0142】
図9bに示したように、過程900は、値bを1<<aと同一に設定する段階(動作901)を含むことができる。本発明の一実施形態によれば、値bは復号器912のコードワード(codeword)の最小ビット長さを示すことができ、コードワードの最小ビット長さのロガリズムをaと示すことができる。
【0143】
図9bに示したように、過程900は、シンボルsを決定する段階(動作902)を含むことができる。本発明の一実施形態によれば、復号器912は、表探索関数714を現在状態値xに適用することによってシンボルsを決定することができる。
【0144】
図9bに示したように、過程900は、復号化関数716を現在状態値xに適用して中間状態値x*を求める段階(動作903)を含むことができる。本発明の一実施形態によれば、更新状態値x’は次のシンボルに対応する現在状態値として使用できる。
【0145】
図9bに示したように、過程900は、値nと現在状態値の最上位設定ビットの差が0より大きいかを判断する段階(動作904)を含むことができる。
【0146】
図9bに示したように、その差が0以下であるという判断(動作904において、いいえ)に基づいて、過程900は終了し、中間状態値x*を更新状態値x’として使用することができる。
【0147】
図9bに示したように、その差が0より大きいという判断(動作904において、はい)に基づいて、過程900は中間状態値x*に移動するビット数を示す値dを決定する段階(動作905)を含むことができる。例えば、本発明の一実施形態によれば、移動するビット数はdbビットであってもよい。
【0148】
図9bに示したように、過程900は、圧縮ビットストリームからdb読取りビット(または例えば、d<<a読取りビット)を求める段階(動作906)を含むことができる。本発明の一実施形態によれば、復号器912は、値dに基づいてreadbits関数918を使用して読取りビットを求めることができる。
【0149】
図9bに示したように、過程900は、中間状態値x*を再規格化する段階(動作907)を含むことができる。本発明の一実施形態によれば、復号器912は再規格化関数916を適用して再規格化された中間状態値を求めることができる。
【0150】
図9bに示したように、過程900は、読取りビットを再規格化された中間状態値に適用して更新状態値x’を求める段階(動作908)を含むことができる。本発明の一実施形態によれば、更新状態値x’は次のシンボルに対応する現在状態値として使用できる。
【0151】
図9cは、本発明の一実施形態によって、readbits関数を適用して更新状態値x’を決定することと共に、中間状態値x*に移動するビット数dbを示す値dを決定するアルゴリズムの一例を示した図である。図9cから分かるように、値d、読取りビットおよび更新状態値x’はビット単位シフト演算、ビット単位引き算演算およびビット単位AND演算のみを使用して求めることができる。したがって、割算演算とストリーミングrANS暗号化法のwhile loopを使用しなくてもよい。
【0152】
前述の通り、図10および図11は並列hANS暗号化法に関するものである。本発明の一実施形態によれば、この並列hANS暗号化法は同時にビットを書込み/読み取りのためのメモリ位置を求める並列合計の並列方法に対応できる。本発明の一実施形態によれば、並列バージョンは、前述のストリーミング技術が符号器と復号器を同一な同期化状態で維持するという事実を用いるものである。図10および図11で、O(log p)並列アルゴリズムを使用して値dに基づいてメモリオフセットパラメータを求めることができる。o-1は、以前メモリオフセットを示すことができる。
【0153】
図10は、本発明の一実施形態による、並列hANS符号器という符号器1012の一例を概略的に示したブロック図である。図10から分かるように、符号器1012は、第1段1014、第2段1016、および第3段1018を含むことができる。本発明の一実施形態によれば、第1段1014は複数の並列ストリーミング関数814a~814pを含むことができ、第3段1018は複数の並列符号化関数614a~614p、および複数の並列writebits関数816a~816pを含むことができる。本発明の一実施形態によれば、一つの並列ストリーミング関数814i、一つの並列符号化関数614i、および一つの並列writebits関数816iの組み合わせを並列符号化プロセッサーと言える。
【0154】
本発明の一実施形態によれば、第1段1014で、並列符号化プロセッサーそれぞれに独立シンボル(例えば、シンボルs~sp-1)および独立状態(例えば、状態x~xp-1)を割り当てることができる。その次に、第2段1016で、並列符号化プロセッサーそれぞれに独立メモリオフセット(例えば、o~op-1)を割り当てることができる。その次に、第3段1018で、並列符号化プロセッサーそれぞれが並列に圧縮コードワードにビットを書き込み、更新状態値(例えば、更新状態値x’~x’p-1)を生成することができる。
【0155】
図11は、本発明の一実施形態による並列hANS復号器という復号器1112の一例を概略的に示したブロック図である。図11に示したように、復号器1112は、第1段1114、第2段1116、および第3段1118を含むことができる。本発明の一実施形態によれば、第1段1114は複数の並列表検索関数714a~714p、複数の並列復号化関数716a~716p、および複数の並列ストリーミング関数914a~914pを含むことができ、第3段1118は複数の並列再規格化関数916a~916pおよび複数の並列readbits関数918a~918pを含むことができる。本発明の一実施形態によれば、一つの並列表検索関数714i、一つの並列復号化関数716i、一つの並列ストリーミング関数914i、一つの並列再規格化関数916iおよび一つの並列readbits関数918iの組み合わせを並列復号化プロセッサーと言える。
【0156】
本発明の一実施形態によれば、第1段1114で、並列復号化プロセッサーそれぞれに独立シンボル(例えば、シンボルs~sp-1)および独立状態(例えば、状態x~xp-1)を割り当てることができる。その次に、第2段1116で、並列復号化プロセッサーそれぞれに独立メモリオフセット(例えば、o~op-1)を割り当てることができる。その次に、第3段1118で、並列復号化プロセッサーそれぞれが並列に圧縮コードワードからビットを読み取り、更新状態値(例えば、更新状態値x’~x’p-1)を生成することができる。
【0157】
本発明の一実施形態によれば、符号器および復号器がメモリシステム1000、通信システム3000、またはデジタルデータなどデータの圧縮および圧縮解除または符号化および復号化に関するその他のシステムまたは装置のうちの一つ以上に含まれてもよい。例えば、本発明の一実施形態によれば、符号器612、符号器812、および符号器1012のうちの一つ以上は前述の符号器202に対応できる。これと同様に、本発明の一実施形態によれば、復号器712、復号器912、および復号器1112のうちの一つ以上は前述の復号器204に対応できる。
【0158】
図12a~図12cは、本発明の一実施形態によってメモリ装置に記憶させる目的でシンボルストリームを圧縮する過程のフローチャートである。一部実施形態では、前述の要素のうちの一つ以上、例えば、符号器202、符号器612、符号器812、および符号器1012のうちの一つ以上、およびその内部要素が図12a~図12cの過程ブロックのうちの一つ以上を行うことができる。
【0159】
図12aは、本発明の一実施形態によってメモリ装置に記憶させる目的でシンボルストリームを圧縮する過程1200Aのフローチャートである。
【0160】
図12aに示したように、過程1200Aは、シンボルストリームを獲得する段階(動作1211)を含むことができる。本発明の一実施形態によれば、シンボルストリームは複数のシンボルを含むことができる。
【0161】
図12aに示したように、過程1200Aは、シンボルストリームに対応するハフマン木を決定する段階(動作1212)を含むことができる。本発明の一実施形態によれば、ハフマン木に基づいて複数のシンボルそれぞれに複数のプレフィックスコードのうちの対応プレフィックスコードを割り当てることができる。本発明の一実施形態によれば、ハフマン木は前述の最終ハフマン木または最適ハフマン木に対応できる。本発明の一実施形態によれば、各シンボルは前述のシンボルsに対応できる。
【0162】
図12aに示したように、過程1200Aは、ハフマン木に基づいてプレフィックス長表を生成する段階(動作1213)を含むことができる。本発明の一実施形態によれば、プレフィックス長表は各シンボルに対する対応プレフィックスコードの長さを示すことができる。
【0163】
図12aに示したように、過程1200Aは、プレフィックス長表に基づいてログ度数分布表を生成する段階(動作1214)を含むことができる。本発明の一実施形態によれば、ログ度数分布表は各シンボルに対する度数のロガリズムを示すことができる。
【0164】
図12aに示したように、過程1200Aは、累積度数分布表を生成する段階(動作1215)を含むことができる。本発明の一実施形態によれば、累積度数分布表は各シンボルに対応する累積度数を示すことができる。本発明の一実施形態によれば、累積度数は前述の累積度数B[s]に対応できる。
【0165】
図12aに示したように、過程1200Aは、ログ度数分布表および累積度数分布表に基づいて複数のシンボルに符号化関数を繰り返し適用することによって圧縮ビットストリームを生成する段階(動作1216)を含むことができる。
【0166】
図12aに示したように、過程1200Aは、メモリ装置に圧縮ビットストリームを記憶する段階(動作1217)を含むことができる。本発明の一実施形態によれば、メモリ装置は、前述のメモリシステム1000およびメモリ100のうちの一つ以上に対応できる。
【0167】
本発明の一実施形態によれば、ログ度数分布表の生成は複数のプレフィックスコードの最大長さから各シンボルに対する対応プレフィックスコードの長さを引く段階を含むことができる。本発明の一実施形態によれば、複数のプレフィックスコードの最大長さは前述の値nに対応できる。
【0168】
本発明の一実施形態によれば、累積度数分布表の生成は各シンボルの度数のロガリズムに基づいて整数値1を左シフトすることによって各シンボルの度数を求める段階、そして各シンボルの度数を複数のシンボルのうちの以前のシンボルの度数合計に足すことによって各シンボルの累積度数を求める段階を含むことができる。本発明の一実施形態によれば、度数のロガリズムは前述の度数のロガリズムf[s]に対応できる。
【0169】
図12bは、本発明の一実施形態によってメモリ装置に記憶させる目的でシンボルストリームを圧縮する過程1200Bのフローチャートである。一実施形態では、過程1200Bの動作のうちの一つ以上を過程1200Aの動作のうちの一つ以上と結合するか、過程1200Aの動作のうちの一つ以上に含ませるか、過程1200Aの動作のうちの一つ以上の代わりに行うことができる。例えば、過程1200Bの動作のうちの一つ以上を過程1200Aの動作1217に含ませることができる。
【0170】
図12bに示したように、過程1200Bは、初期状態値の最上位設定ビットを決定する段階(動作1221)を含むことができる。
【0171】
図12bに示したように、過程1200Bはシンボルストリームに対応する初期状態値の最上位設定ビットと各シンボルに対応する度数のロガリズムの間の差がシンボルストリームに対応するコードワードの最小ビット長さ以上であるかを判断する段階(動作1222)を含むことができる。本発明の一実施形態によれば、コードワードの最小ビット長さは前述の値bに対応できる。
【0172】
図12bに示したように、差がコードワードの最小ビット長さ以上でないという判断(動作1222において、いいえ)に基づいて、過程1200Bを終了することができる。本発明の一実施形態によれば、過程1200B終了の結果として、前述の現在状態値xに対応できる現在状態値が初期状態値であると判断することができる。
【0173】
図12bに示したように、差がコードワードの最小ビット長さ以上であるという判断(動作1222において、はい)に基づいて、過程1200Bは最上位設定ビットから各シンボルに対する度数のロガリズムを引くことによって第3値を決定する段階(動作1223)を含むことができる。
【0174】
図12bに示したように、過程1200Bはコードワードの最小ビット長さのロガリズムに基づいて第3値を右シフトさせることによってシフト(した)第3値(shifted third value)を求める段階(動作1224)を含むことができる。本発明の一実施形態によれば、コードワードの最小ビット長さのロガリズムは前述の値aに対応できる。
【0175】
図12bに示したように、過程1200Bはコードワードの最小ビット長さのロガリズムに基づいてシフト第3値を左シフトさせることによって初期状態値から移動するビット数を決定する段階(動作1225)を含むことができる。本発明の一実施形態によれば、決定されたビット数は図8bを参照して前述した値d<<aに対応できる。
【0176】
図12bに示したように、過程1200Bは、決定されたビット数を圧縮ビットストリームに出力する段階(動作1226)を含むことができる。
【0177】
図12bに示したように、過程1200Bは決定されたビット数に基づいて初期状態値を右シフトさせることによって現在状態値を求める段階(動作1227)を含むことができる。本発明の一実施形態によれば、現在状態値は前述の現在状態値xに対応できる。
【0178】
本発明の一実施形態によれば、複数のプロセッサーが複数のシンボルに対して符号化関数を並列に適用し、符号化関数を実行するために、複数のプロセッサーそれぞれに対応初期状態値を割り当て、各プロセッサーが対応初期状態値から移動するビット数を決定した後に、各プロセッサーに決定されたビット数を出力する対応メモリ位置を割り当て、決定されたビット数を圧縮ビットストリームに出力した後、過程1200Bは各プロセッサーに対して対応現在状態値を決定する段階を含むことができる。
【0179】
図12cは、本発明の一実施形態によってメモリ装置に記憶させる目的でシンボルストリームを圧縮する過程1200Cのフローチャートである。一実施形態では、過程1200Cの動作のうちの一つ以上を過程1200Aの動作のうちの一つ以上と結合するか、過程1200Aの動作のうちの一つ以上に含ませるか、過程1200Aの動作のうちの一つ以上の代わりに行うことができる。例えば、過程1200Cの動作のうちの一つ以上を過程1200Aの動作1217に含ませることができる。
【0180】
図12cに示したように、過程1200Cは、現在状態値を求める段階(動作1231)を含むことができる。本発明の一実施形態によれば、現在状態値は前述の現在状態値xに対応できる。
【0181】
図12cに示したように、過程1200Cは、各シンボルに対する度数のロガリズムに基づいて現在状態値を右シフトさせることによってシフト(した)状態値を求める段階(動作1232)を含むことができる。
【0182】
図12cに示したように、過程1200Cは、複数のプレフィックスコードの最大長さに基づいてシフト状態値を左シフトさせることによって第1値を求める段階(動作1233)を含むことができる。
【0183】
図12cに示したように、過程1200Cは、度数のロガリズムに基づいて整数値1を左シフトすることによって各シンボルの度数を求める段階(動作1234)を含むことができる。
【0184】
図12cに示したように、過程1200Cは、現在状態値と各シンボルに対する度数引く1にビット単位のAND演算を行うことによって第2値を求める段階(動作1235)を含むことができる。
【0185】
図12cに示したように、過程1200Cは、第1値、第2値、および各シンボルに対応する累積度数を足すことによって更新状態値を求める段階(動作1236)を含むことができる。本発明の一実施形態によれば、更新状態値は前述の更新状態値x’に対応できる。
【0186】
図13a~図13cは、本発明の一実施形態によって圧縮ビットストリームに基づいてシンボルストリームを生成する過程のフローチャートである。一部実施形態では、前述の要素のうちの一つ以上、例えば、復号器204、復号器712、復号器912、および復号器1112のうちの一つ以上およびその内部要素が図13a~図13cの過程ブロックのうちの一つ以上を行うことができる。
【0187】
図13aは、本発明の一実施形態によって圧縮ビットストリームに基づいてシンボルストリームを生成する過程1300Aのフローチャートである。
【0188】
図13aに示したように、過程1300Aは、メモリから圧縮ビットストリームを獲得する段階(動作1311)を含むことができる。本発明の一実施形態によれば、圧縮ビットストリームは、シンボルストリームに含まれている複数のシンボルに対応できる。本発明の一実施形態によれば、各シンボルは前述のシンボルsに対応できる。
【0189】
図13aに示したように、過程1300Aは、圧縮ビットストリームからログ度数分布表を求める段階(動作1312)を含むことができる。本発明の一実施形態によれば、ログ度数分布表は、複数のシンボルそれぞれに対する度数のロガリズムを示すことができる。本発明の一実施形態によれば、度数のロガリズムは、前述の度数のロガリズムf[s]に対応できる。
【0190】
図13aに示したように、過程1300Aは、ログ度数分布表に基づいて累積度数分布表を生成する段階(動作1313)を含むことができる。本発明の一実施形態によれば、累積度数分布表は、各シンボルに対応する累積度数を示すことができる。本発明の一実施形態によれば、累積度数は、前述の累積度数B[s]に対応できる。
【0191】
図13aに示したように、過程1300Aは、ログ度数分布表および累積度数分布表に基づいて逆シンボル表を生成する段階(動作1314)を含むことができる。
【0192】
図13aに示したように、過程1300Aは、累積度数分布表および逆シンボル表に基づいて復号化関数を複数のシンボルに繰り返し適用することによってシンボルストリームを生成する段階(動作1315)を含むことができる。
【0193】
本発明の一実施形態によれば、累積度数分布表の生成は各シンボルの度数のロガリズムに基づいて整数値1を左シフトすることによって各シンボルの度数を求める段階、そして各シンボルの度数を複数のシンボルのうちの以前シンボルの度数合計に足すことによって各シンボルの累積度数を求める段階を含むことができる。本発明の一実施形態によれば、複数のプレフィックスコードの最大長さは前述の値nに対応できる。
【0194】
本発明の一実施形態によれば、逆シンボル表の生成は現在状態値と圧縮ビットストリームに対応する複数のプレフィックスコードの最大長さ引く1にビット単位のAND演算を行うことによって、各シンボルに対して、逆シンボル値を決定する段階を含むことができ、逆シンボル値は各シンボルの累積度数以上であってもよく、逆シンボル値は次のシンボルの累積度数より小さくてもよい。本発明の一実施形態によれば、現在状態値は前述の現在状態値xに対応できる。
【0195】
図13bは、本発明の一実施形態によって圧縮ビットストリームに基づいてシンボルストリームを生成する過程1300Bのフローチャートである。一実施形態では、過程1300Bの動作のうちの一つ以上を過程1300Aの動作のうちの一つ以上と結合するか、過程1300Aの動作のうちの一つ以上に含ませるか、過程1300Aの動作のうちの一つ以上の代わりに行うことができる。例えば、過程1300Bの動作のうちの一つ以上を過程1300Aの動作1315に含ませることができる。
【0196】
図13bに示したように、過程1300Bは、逆シンボル表から各シンボルに対応する逆シンボル値に基づいて各シンボルを求める段階(動作1321)を含むことができる。
【0197】
図13bに示したように、過程1300Bは、複数のプレフィックスコードの最大長さに基づいて現在状態値を右シフトさせることによってシフト状態値を求める段階(動作1322)を含むことができる。
【0198】
図13bに示したように、過程1300Bは、各シンボルに対する度数のロガリズムに基づいてシフト状態値を左シフトさせることによって第1値を求める段階(動作1323)を含むことができる。
【0199】
図13bに示したように、過程1300Bは、複数のプレフィックスコードの最大長さに基づいて整数値1を左シフトすることによって総度数を求める段階(動作1324)を含むことができる。
【0200】
図13bに示したように、過程1300Bは、現在状態値と複数のプレフィックスコードの最大長さ引く1にビット単位AND演算を行うことによって第2値を求める段階(動作1325)を含むことができる。
【0201】
図13bに示したように、過程1300Bは、第2値と逆シンボル値の合計から各シンボルに対応する累積度数を引くことによって更新状態値を求める段階(動作1326)を含むことができる。本発明の一実施形態によれば、更新状態値は前述の更新状態値x’に対応できる。
【0202】
図13cは、本発明の一実施形態によって圧縮ビットストリームに基づいてシンボルストリームを生成する過程1300Cのフローチャートである。一実施形態では、過程1300Cの動作のうちの一つ以上を過程1300Aの動作のうちの一つ以上と結合するか、過程1300Aの動作のうちの一つ以上に含ませるか、過程1300Aの動作のうちの一つ以上の代わりに行うことができる。例えば、過程1300Cの動作のうちの一つ以上を過程1300Aの動作1315に含ませることができる。
【0203】
図13cに示したように、過程1300Cは、複数のプレフィックスコードの最大長さと圧縮ビットストリームに対応する初期状態値の最上位設定ビットの間の差を決定する段階(動作1331)を含むことができる。
【0204】
図13cに示したように、過程1300Cは、差が0より大きいかを判断する段階(動作1332)を含むことができる。
【0205】
図13cに示したように、差が0より大きくないという判断(動作1332において、いいえ)に基づいて、過程1300Cを終了することができる。本発明の一実施形態によれば、過程1300C終了の結果として、前述の現在状態値xに対応できる現在状態値が初期状態値であると判断することができる。
【0206】
図13cに示したように、差が0より大きいという判断(動作1332において、はい)に基づいて、過程1300Cはシンボルストリームに対応するコードワードの最小ビット長さのロガリズムに基づいて整数値1を左シフトさせることによって第3値を求める段階(動作1333)を含むことができる。本発明の一実施形態によれば、コードワードの最小ビット長さのロガリズムは前述の値aに対応できる。
【0207】
図13cに示したように、過程1300Cは、差を第3値引く1に足すことによって第4値を求める段階(動作1334)を含むことができる。
【0208】
図13cに示したように、過程1300Cは、コードワードの最小ビット長さのロガリズムに基づいて第4値を右シフトさせることによってシフト第4値を求める段階(動作1335)を含むことができる。
【0209】
図13cに示したように、過程1300Cは、コードワードの最小ビット長さのロガリズムに基づいてシフト第4値を左シフトさせることによって初期状態値に移動するビット数を決定する段階(動作1336)を含むことができる。本発明の一実施形態によれば、決定されたビット数は図9bを参照して前述の値d<<aに対応できる。
【0210】
図13cに示したように、過程1300Cは、決定されたビット数に基づいて圧縮ビットストリームから追加ビットを求める段階(動作1337)を含むことができる。
【0211】
図13cに示したように、過程1300Cは決定されたビット数に基づいて初期状態値を左シフトさせることによってシフト状態値を求める段階(動作1338)を含むことができる。
【0212】
図13cに示したように、過程1300Cは、シフト状態値と追加ビットを足すことによって現在状態値を求める段階(動作1339)を含むことができる。本発明の一実施形態によれば、現在状態値は前述の現在状態値xに対応できる。
【0213】
図6b、図7b、図8b、図9b、図12a~図12cおよび図13a~図13cは多様な過程の例ブロックを示すが、一部実施形態によれば、この過程のうちの一つ以上が図6b、図7b、図8b、図9b、図12a~図12cおよび図13a~図13cに示したものに比べて追加ブロック、さらに少ないブロック、他のブロックまたは異なって配列されたブロックを含むことができる。追加的に、または代替して、図示した過程のブロックのうちの二つ以上を並列に、または任意の順序で結合して行うことができる。
【0214】
本発明の一実施形態によれば、複数のプロセッサーが複数のシンボルに対して復号化関数を並列に適用し、復号化関数を実行するために、複数のプロセッサーそれぞれに対応初期状態値を割り当て、各プロセッサーが対応初期状態値に移動するビット数を決定した後に、各プロセッサーに追加ビットを求める対応メモリ位置を割り当て、圧縮ビットストリームから追加ビットを求めた後、過程1300Cは各プロセッサーに対して対応現在状態値を決定する段階を含むことができる。
【0215】
したがって、前述の実施形態は他の暗号化法より利得が多いhANS暗号化法を提供することができる。一部実施形態によれば、hANS暗号化法は低いメモリ空間要件を有することができる。例えば、hANS暗号化法は、tANS暗号化法で使用する圧縮結果の中間表を使用しなくてもよい。本発明の一実施形態によれば、hANS暗号化法は累積度数分布表と逆シンボル表のみを使用することができる。
【0216】
本発明の一部実施形態によれば、hANS暗号化法は複雑度が低いのであり得る。例えば、hANS暗号化法は、rANS暗号化法または範囲暗号化法で使用する掛算演算または割算演算を使用しなくてもよい。本発明の一実施形態によれば、hANS暗号化法はビット幅(bitwidth)が大きいこともあるためtANS暗号化法より若干さらに複雑なことがある。
【0217】
本発明の一部実施形態によれば、hANS暗号化法は、rANS暗号化法およびtANS暗号化法と同様に、並列化が容易であり、ハフマン暗号化法と同様に、近最適圧縮(near optimum compression)を達成することができる。
【0218】
本発明の一部実施形態によれば、hANS暗号化法の近最適圧縮はシンボル当り1ビット以内であってもよく、これにより、平均圧縮または偏向分布(skewed distribution)に対してより最悪の圧縮に対してさらに役に立つ。本発明の一実施形態によれば、hANS暗号化法は積層型符号化/復号化、例えば後入先出符号化/復号化を含むことができ、したがって、復号器でのバッファリングを避けるためにシンボルストリームとビットストリームを逆転させる特別な方法を使用することができる。本発明の一実施形態によれば、hANS暗号化法は内蔵型メモリ圧縮(embedded memory compression)などメモリ圧縮に理想的であり得る。
【0219】
本明細書は説明と図面を提示しているが、これは完全なものでもなく実施形態を限定するものでもない。本明細書に基づいて改良または変形が可能であり、本発明を実行しながら改良または変形を得ることもできる。
【0220】
ここで“部品”という用語は、ハードウェア、ソフトウェア、ファームウエアまたはこれらの組み合わせを意味するものに広く解釈しなければならない。
【0221】
ここで説明したシステムおよび/または方法は、互いに異なる形態のハードウェア、ソフトウェア、ファームウエアまたはこれらの組み合わせで実現できる。このようなシステムおよび/または方法を実現するのに使用される特化された実際制御ハードウェアまたはソフトウェアコードは本発明の実施形態を限定しない。したがって、ここでシステムおよび/または方法の動作および行動を特定のソフトウェアコードを使用せずに説明し、これはこのような説明に基づいてこのシステムおよび/または方法を実行するソフトウェアおよびハードウェアを設計することができるのを理解しなければならない。
【0222】
特許請求の範囲と明細書で特定した特徴の組み合わせを羅列または説明したが、このような組み合わせが本発明の可能な実施形態を限定するのではない。実際に、特許請求の範囲で特別に羅列するか詳細な説明で説明していない方式でこのような特徴多数を組み合わせることができる。以下に羅列した従属請求項それぞれは一つの請求項のみを直接引用するが、本発明は特許請求の範囲にある全ての従属請求項を他の請求項と結合したものを含む。
【0223】
ここで使用する構成要素(element)、動作(act)または命令(instruction)は、明示しない限り、重要であるか(critical)必須的な(essential)ものと解釈してはならない。また、ここでは明示しない限り単数と複数を全て含むと解釈しなければならない。また、ここで“集合(set)”という用語は一つ以上の項目(例:関連ある項目、関連ない項目、関連ある項目と関連ない項目の組み合わせなど)を含むことができ、“一つ以上”という表現と代替することができる。一つの項目のみを表現しようとすれば、“一つのみ”、“ただ一つ”またはこれと類似の表現を使用することができる。また、ここで“有する”という用語はオープンエンドの用語である。また、“Aに基づく”という表現は明示しない限り“少なくとも部分的にAに基づく”ということを意味する。
【0224】
以上、図面を参照して一つ以上の実施形態について説明したが、当業者であれば次の特許請求の範囲で少なくとも部分的に定義した概念と範囲を逸脱せず類型と細部事項を変更できるのが分かる。
【符号の説明】
【0225】
100:メモリ
200:制御器
202、612、812、1012:符号器
204、712、912、1112:復号器
210:システムバス
220:プロセッサー
230:RAM
240:ホストインターフェース
250:メモリインターフェース
260:符号器/復号器
302:送信機
304:受信機
614:符号化関数
714:表検索関数
716:復号化関数
814、914:ストリーミング関数
816:writebits関数
916:再規格化関数
918:readbits関数
1000:メモリシステム
3000:通信システム
図1
図2a
図2b
図3
図4a
図4b
図4c
図4d
図5
図6a
図6b
図7a
図7b
図8a
図8b
図8c
図9a
図9b
図9c
図10
図11
図12a
図12b
図12c
図13a
図13b
図13c