(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-16
(45)【発行日】2024-01-24
(54)【発明の名称】ロスレスデータ圧縮
(51)【国際特許分類】
H04N 19/105 20140101AFI20240117BHJP
H04N 19/14 20140101ALI20240117BHJP
H04N 19/176 20140101ALI20240117BHJP
H04N 19/46 20140101ALI20240117BHJP
H04N 19/593 20140101ALI20240117BHJP
【FI】
H04N19/105
H04N19/14
H04N19/176
H04N19/46
H04N19/593
(21)【出願番号】P 2019551920
(86)(22)【出願日】2017-12-12
(86)【国際出願番号】 US2017065915
(87)【国際公開番号】W WO2018111942
(87)【国際公開日】2018-06-21
【審査請求日】2020-12-08
(32)【優先日】2016-12-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【代理人】
【識別番号】230129078
【氏名又は名称】佐藤 仁
(72)【発明者】
【氏名】アイシュワルヤ デュベイ
(72)【発明者】
【氏名】ヘトゥル サンヴィ
【審査官】坂東 大五郎
(56)【参考文献】
【文献】特開平11-032328(JP,A)
【文献】特開平06-319047(JP,A)
【文献】特開平04-252569(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
H04N 1/41-1/419
(57)【特許請求の範囲】
【請求項1】
ロスレスデータ圧縮の方法であって、
複数のローを含むバイナリセンサデータを得ることであって、前記ローの各々が複数のマルチビットデータサンプルを含む、前記バイナリセンサデータを得ることと、
各前記ローを複数のデータグループに分割することであって、前記複数のデータグループが、各々が前記マルチビットデータサンプルの2つ又はそれ以上を含む、前記複数のデータグループに分割することと、
各前記ローに対する先行値又は前記複数のデータグループの各々に対する先行値のそれぞれを選択することであって、各前記ロー又は各前記データグループにおけるデータサンプルの統計的
分散に基づいて前記先行値が複数の異なる先行値から選択される、前記選択することと、
前記データグループのその関連するデータグループに対して各前記データサンプルと前記先行値との間の差を計算することにより、各前記ローから圧縮されたセンサデータの圧縮されたローを生成することと、
前記データグループの各々がストアされ圧縮されているか否かを示すデータ構造を含む圧縮された述部と、ロー圧縮のために用いられるグループサイズをストアするマルチビット値であるデータグループサイズと、前記ロー圧縮のダイナミックレンジをストアするマルチビット値である圧縮されたワードサイズとを含む、前記バイナリセンサデータを損失なく戻すための情報を有する各前記ローに対して圧縮情報パケット(CIP)を生成することと、
前記CIPと共にストアされ圧縮されたデータとして前記圧縮されたローをストアすることと、
を含む、方法。
【請求項2】
請求項1に記載の方法であって、
並列に前記ローのデータ
グループに対する単一クロックサイクル圧縮処理を実行することを更に含む、方法。
【請求項3】
請求項1に記載の方法であって、
前記圧縮されたワードサイズを動的に選択するボーティング回路を用いることを更に含む、方法。
【請求項4】
請求項1に記載の方法であって、
構成によって制御される圧縮パラメータを動的に選択することであって、前記圧縮パラメータが、前記データグループ内の現在のデータ値と前記先行値との間の差であるドリフトと前記圧縮されたワードサイズと前記先行値と前記データグループサイズとを含む、前記圧縮パラメータを動的に選択することを更に含む、方法。
【請求項5】
請求項1に記載の方法であって、
固定時間にメモリのランダム位置にアクセスすることを含む、前記バイナリセンサデータを回復するために前記ストアされ圧縮されたデータを伸張することを更に含む、方法。
【請求項6】
請求項5に記載の方法であって、
前記伸張することが、単一サイクル内で前記バイナリセンサデータを回復することを含む、方法。
【請求項7】
請求項5に記載の方法であって、
前記伸張することが、
前記圧縮された述部から変換された述部を生成することであって、前記変換された述部が圧縮されたデータグループの
数についての情報と圧縮されていないデータグループの
数についての情報とを含む、前記変換された述部を生成することと、
前記変換された述部を用いて前記圧縮された
先行値の位置ポインタを生成することと、
を含む、方法。
【請求項8】
請求項1に記載の方法であって、
前記CIPが、少なくとも1つの誤り補正符号(ECC)又は巡回冗長検査(CRC)フィールドを含む、方法。
【請求項9】
ロスレスデータ圧縮を提供するためのシステムであって、
複数のローを含むバイナリセンサデータを受信するためのセンサインタフェースであって、前記ローの各々が複数のマルチビットデータサンプルを含む、前記センサインタフェースと、
前記センサインタフェースの出力に結合される入力を有するエンコーダを含むデータ処理サブシステムであって、前記データ処理サブシステムが、
各前記ローを、各々が前記マルチビットデータサンプルの2つ又はそれ以上を含む複数のデータグループに分割し、
各前記ローに対する先行値又は前記複数のデータグループの各々に対する先行値のそれぞれを各前記ロー又は各前記データグループにおけるデータサンプルの統計的
分散に基づいて複数の異なる先行値から選択し、
各前記データサンプルとその関連する前記データグループに対する前記先行値との間の差を計算することによって各前記ローから圧縮されたセンサデータの圧縮されたローを生成し、
前記データグループの各々がストアされ圧縮されているか否かを示すデータ構造を含む圧縮された述部と、ロー圧縮のために用いられるグループサイズをストアするマルチビット値であるデータグループサイズと、前記ロー圧縮のダイナミックレンジをストアするマルチビット値である圧縮されたワードサイズとを含む、前記バイナリセンサデータを損失なく戻すための情報を有する各前記ローに対して圧縮情報パケット(CIP)を生成する、
ためのハードウェアとソフトウェアとを含む、前記データ処理サブシステムと、
を含む、システム。
【請求項10】
請求項9に記載のシステムであって、
前記データ処理サブシステムが、前記CIPsと共にストアされ圧縮されたデータとして前記圧縮されたローをストアすることを更に提供する、システム。
【請求項11】
請求項9に記載のシステムであって、
前記データ処理サブシステムが、前記複数のデータグループの並列処理のための回路要素を含む、システム。
【請求項12】
請求項9に記載のシステムであって、
前記エンコーダが半導体表面を有する基板を含む、システム。
【請求項13】
請求項9に記載のシステムであって、
前記ロスレスデータ圧縮を実装するための単一クロックサイクル圧縮回路を更に含む、システム。
【請求項14】
請求項10に記載のシステムであって、
前記圧縮されたワードサイズを動的に選択するためのボーティング回路を更に含む、システム。
【請求項15】
請求項10に記載のシステムであって、
前記データグループ内の現在のデータ値と前記先行値との間の差の値であるドリフトと前記圧縮されたワードサイズと前記先行値と前記データグループサイズとを含む圧縮パラメータブロックを動的に選択するための動的選択圧縮パラメータブロックを更に含む、システム。
【請求項16】
請求項10に記載のシステムであって、
前記バイナリセンサデータを回復するために、前記ストアされ圧縮されたデータを伸張するためのデコーダを更に含む、システム。
【請求項17】
請求項16に記載のシステムであって、
前記デコーダが、前記バイナリセンサデータの前記回復のために単一サイクルにおいて動作する伸張回路を含む、システム。
【請求項18】
請求項16に記載のシステムであって、
前記伸張することが、
前記圧縮された述部から変換された述部を生成することであって、前記変換された述部が圧縮されたデータグループの
数についての情報と圧縮されていないデータグループの
数についての情報とを含む、前記変換された述部を生成することと、
前記変換された述部を用いて前記圧縮された
先行値の位置ポインタを生成することと、
を含む、システム。
【請求項19】
請求項10に記載のシステムであって、
前記CIPが、少なくとも1つの誤り補正符号(ECC)又は巡回冗長検査(CRC)フィールドを含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は概して、メモリ内の画素情報の組織化を含む、デジタルデータを損失なく圧縮及びストアするための方法に関連する。
【背景技術】
【0002】
データを圧縮するための手法は、通信及びコンピュータの分野において一般的である。通信において、受信の際に、それらのオリジナル形態に再構築され得るデータの圧縮されたストリングを送信することが望ましいことがしばしばある。圧縮されたデータを送信すると、同じデータを圧縮されていないフォーマットで送信するよりもかかる時間が短い。コンピュータの場合、圧縮されたデータは、圧縮されていないデータに対して、ストレージの利点を提供する。そのため、固定ストレージ容量を有するストレージデバイスでは、圧縮される場合、より多くのファイルがそこにストアされ得る。
【0003】
データ圧縮手法は、損失ありとロスレスとの2つの主要なカテゴリーに分けられ得る。ロスレスデータ圧縮手法は、圧縮/伸張プロセスにおいて情報が失われないことが要求されるときに用いられる。損失ありデータ手法は、ロスレス手法より正確性が低く、概してずっと速い。当然、ロスレス圧縮手法は、データが圧縮/伸張サイクルを介して渡された後のデータの正確な複製を補償する方法を用いる。ロスレス圧縮は、最も一般的には、コンピュータを使って用いられるデジタルデータのストレージに関連する。このような応用例は、データベース記録、スプレッドシート情報、及びワード処理ファイルのストレージを含む。その欠落が、データ内に符号化された情報を如何なる方式でも低減しないように、データメッセージにおける情報が冗長である場合、メッセージは、その中に符号化された情報のいかなるものも失うことなく短縮され得る。そのため、ロスレスデータ圧縮は、メッセージにより搬送される情報の完全性を脅かすことなくメッセージのサイズを低減する。
【0004】
先進運転支援システム(ADAS)アルゴリズム及びゲーム、仮想現実、機械学習アルゴリズムはすべて、ダブルデータレート(DDR)メモリ性能及び帯域幅により制限されてきている。データストリーム(レーダーデータ、画像データなど)は典型的に強い局地性を示すが、ビットは「ほぼ等しい」だけである。より一層効率的にDDRメモリを用いるために、ラスターデータのためのオンラインデータ圧縮が必要とされる。
【0005】
データの圧縮は、概して、解決しやすい課題である。解決がより困難な課題は、圧縮されたデータストリームのデータのサイズが、ランダムデータサンプルに対しても制限されることを確実にすることである。別の問題は、速いデータ読み出しの間に、伸張方式を提供することである。他の問題は、異なるデータタイプ、及びこのような異なったデータタイプのためのメモリアクセス方式を扱うことが可能であるという要件を含む。例えば、キャッシュライン充填とダイレクトメモリアクセス(DMA)制御画像データアクセスとは、異なるアクセス方式を必要とし得る。最終的に、別の問題は、決定論的及び固定時間インタバル内で圧縮されたデータに対するランダムアクセスを提供することである。
【発明の概要】
【0006】
記載される例は、決定論的及び固定時間内にランダムデータアクセスを提供する画像センサ又はレーダーセンサからのデータなど、ラスター化されたセンサデータの動的に構成可能なオンラインロスレス圧縮及び伸張ための方法及びシステムを提供する。記載される例は、単一クロックサイクル伸張を備えるロスレスデータ圧縮のための方法及びシステムを含む。
【0007】
この方法は、複数のローを含むバイナリセンサデータを得ることを含み、各ローは、複数のマルチビットデータサンプルを含む。各ローは、各々が二つ又はそれ以上のサンプルを含む複数のデータグループに分割される。先行値(precedent value)が各ローに対して選択され、又はそれぞれの先行値がデータグループ(DGs)の各々に対して選択される。圧縮されるセンサデータの圧縮されたローは、各データサンプルとその関連するDGに対する先行値との間の差を計算することにより各ローから生成される。センサデータを損失なく戻す(即ち、伸張する)ため、情報を含む各ローに対して圧縮情報パケット(CIP(Compression Information Packet))が生成される。
【0008】
CIP情報は、DGsの各々がストアされ圧縮されるか否かを示すデータ構造、ロー圧縮のために用いられるグループサイズをストアするマルチビット値であるフレキシブルなDGサイズ、及びロー圧縮のダイナミックレンジをストアするマルチビット値である圧縮されるワードサイズを含む、圧縮された述部を含む。例えば、DGサイズは、16、32、又は64ビットであり得る。また、CIP情報は、128ビットまでのマルチビット値である累積データサイズを含み得、これは、ストアされているフレームにおけるそのローまでのラスターデータの累積データサイズと、そのローに対するCIPの誤り補正符号(ECC)及び/又は巡回冗長検査(CRC)符号化表現を捕捉するシグネチャとを示す。
【0009】
圧縮されたローは、CIPと共に、ストアされ圧縮されたデータとしてストアされる。また、この方法は、任意のランダムメモリ位置からセンサデータを損失なく回復させるため、ストアされ圧縮されたデータを伸張すること、及び、単一クロックサイクルにおいてセンサデータの全てを回復することを含み得る。
【図面の簡単な説明】
【0010】
【
図1】例示の一実施例に従った、ロスレスデータ圧縮の例示の方法のための工程のフローチャートである。
【0011】
【
図2】256ビットのオリジナルデータを含むローが、157ビットの圧縮されたデータに変換される、記載される圧縮手法の一例を示す。ローにおける各DGに対する先行値(precedents)が、例えば、DGにおける第1のデータサンプル値として示されている。
【0012】
【
図3A】最小圧縮比及び圧縮されたデータサイズを得るための圧縮パラメータを得るための単一クロックサイクル並列圧縮ブロック及びボーティング回路を有する例示のロスレスデータ圧縮を示す。
【0013】
【
図3B】先行選択回路及びサンプル処理回路のための例示の構成要素を示す。
【0014】
【
図4】各ローに対する圧縮されたデータを備えるCIPの例示の形成を示す。
【0015】
【
図5A】記載される圧縮されたデータを圧縮されていないオリジナルデータ出力に変換することによる伸張のための2/2アドレス計算変換エンジンμ-アーキテクチャを用いる例示の伸張方式を示す。
【0016】
【
図5B】
図5Aに示すアドレスポインタ計算機のための例示の回路実装を示す。
【0017】
【
図5C】付加又は複写のままの回路オペレーションの一例を示す。
【0018】
【
図6A】インラインオプションを含むDDRメモリにおけるデータストレージのための第1の例示のオプションを示す。
【0019】
【
図6B】デンス(dense)ストレージオプションを含むDDRメモリにおけるデータストレージのための第2の例示のオプションを示す。
【0020】
【
図7A】例示の一実施例に従った、感知されたデータストリーム(レーダーデータ又は画像データ)のロスレスデータ圧縮のための例示のシステムのブロック図である。
【0021】
【
図7B】データ信号のロスレスデータ圧縮及び伸張のための例示のシステムのブロック図である。
【0022】
【
図7C】例示のシステムにおいて記載される圧縮及び伸張を実装するために用いることができる4タイプの圧縮及び伸張ブロックを示す。
【0023】
【
図8A】例示のイメージング応用例のための4のDGサイズについての実験的に決定された圧縮比対圧縮ワードサイズデータを示す。
【0024】
【
図8B】例示のイメージング応用例のための6のDGサイズについての実験的に決定された圧縮比対圧縮ワードサイズデータを示す。
【発明を実施するための形態】
【0025】
図面は必ずしも一定の縮尺で描いてはいない。図面において、同様の参照数字は同様の又は等価の要素を示す。幾つかの図示した行為は、異なる順序で及び/又は他の行為/事象と同時に成されてもよい。また、幾つかの例示の行為又は事象は任意選択である。
【0026】
「に結合する」又は「と結合する」という用語は、更なる限定なしに用いられる場合、間接的又は直接的電気接続を説明する。そのため、第1のデバイスが第2のデバイスに「結合する」場合、この接続は、その経路に寄生成分のみ存在する直接的電気的接続を介し得、又は他のデバイス又は接続を含む介在要素を介する間接的電気的接続を介し得る。間接的結合では、介在要素は、概して、信号の情報を変更しないが、その電流レベル、電圧レベル、及び/又はパワーレベルを調整し得る。
【0027】
図1は、例示の一実施例に従って、感知されたデータストリームのロスレスデータ圧縮の例示の方法100のための工程のフローチャートである。感知されたデータストリームは、周波数変調連続波(FMCW)レーダーなどのレーダー応用例のためのレーダーデータ、又は先進運転支援システム(ADAS)応用例のためのなど、イメージングのための画素データを含み得る。
【0028】
工程101は、各ローが複数のマルチビット(例えば、16)データサンプルを含む、複数のローを含む感知されたデータ源から生じるバイナリセンサデータを取得することを含む。各ローはフレームに対応するか、又はチャネルとして対応し、フレームは、イメージング用途の場合の同じ又は異なる露光時間(例えば、3)において捕捉された各画像に対応する2D平面データレーダー、又はレーダードウェル毎のセンサチャープ反射に対応する2D平面データを含み得る。感知されたデータ源は、データストリームとしてリアルタイムデータを提供するセンサであってもよく、又は、データ源は、センサから得られたセンサデータをストアするメモリであってもよい。
【0029】
工程102は、各ローを、それぞれが二つ又はそれ以上のデータサンプルを含む複数のDGに分割することを含む。本明細書において用いられるように「データグループ」(DG)は、データ局所性を示し、そのため比較的容易に圧縮される、ラスターデータ値(例えば、サンプル又は画素)の連続するグループである。ラスター化されたデータの各ローは、2つ又はそれ以上のDGを有し得る。後述する
図2の例示的な圧縮において示されるように、4つのDGsの各々は、各ローに対して4つのサンプルを有する。
【0030】
工程103は、各ローに対して先行値を選択すること、又はローにおけるDGsの各々に対するそれぞれの先行値を選択することを含む。本明細書において用いられるように「先行値(precedent value)」は、「ドリフト」として本願において称されるものを最小化するように選択される値である。ドリフトは、現データ値と、圧縮されているDG内の先行値との間の符号付き差分として定義される。一実施例において、
図2に示すように、先行値は、DGにおける第1のデータサンプル値である。
【0031】
先行値を動的に選択するための種々の方法が存在する。1つの方法は、最小の圧縮データ(最高の圧縮比)をもたらす。また、先行値は、DGにおけるすべてのサンプル(例えば画素)の予測される値に基づいて選択され得、その場合、予測される値の生成は、圧縮されているサンプルのより良好なに合致をもたらす、線形的、二次的、平均、中央値、又は任意の他の方法によって成され得る。先行値選択は、一般に専用ハードウェアで実施されるインテリジェントな方法である。先行値は、ローにおける任意のデータ値、すべてのデータ値の平均、データ値の中央値、又はユーザーにより構成される値とし得る。また、先行選択のための回路は、圧縮されているデータのための統計的ヒストグラム演算を含み得(後述する
図3Bに示される統計的ヒストグラム演算ブロック(HIST)311を参照)、先行値は、このブロックの出力、及びオフラインで事前演算された発見的規則に基づいて選択され得る。
【0032】
工程104は、各データサンプルとその関連するDGに対する先行値との間の差を計算することによって、各ローから圧縮センサデータの圧縮されたローを生成することを含む。工程105は、センサデータをロスレスで返すための情報を有する各ローに対しCIPを生成することを含む。上述したように、CIPは、各DGが圧縮されてストアされているか否かを示すデータ構造を含む圧縮述部と、ロー圧縮に用いられるフレキシブルなデータグループサイズをストアするマルチビット値であるグループサイズと、ロー圧縮のダイナミックレンジをストアするマルチビット値である圧縮ワードサイズとを含む。(後述する
図4に示される例示的なCIPsを参照のこと。)工程106は、圧縮されたローを、圧縮データとしてCIPsと共にストアされたストアすることを含む。例えば、
図6A及び
図6Bに関連してこれ以降に記載されるストレージオプションを参照のこと。
【0033】
方法100は、ストアされた圧縮データを伸張することを更に含み得る。
図1に示される工程107は、ストアされた圧縮データをメモリ(例えば、DDR又はオンチップRAM)からリトリーブすることと、単一サイクル内でCIPsを用いてオリジナルの非圧縮データを回復するために伸張することとを含む。例えば、伸張については、
図5A、
図5B、及び
図5Cに記載されている伸張回路オプションを参照されたい。
【0034】
また、この方法は、全ての複数のDGsの並列単一クロックサイクル処理を含み得る。圧縮に必要とされる時間がDGグループ構成及び先行値選択等とは無関係であるように、後述する
図3Aなどに示されているように、ローにおける全てのDGsに対して(線形にではなく)同時に圧縮された出力を計算するためのハードウェアが設けられている。また、この方法は、低圧縮比に反映される最良の圧縮出力を得るために、圧縮されたワードサイズを動的に選択することを含み得る。
【0035】
圧縮パラメータは、ドリフト、圧縮ワードサイズ、先行値、及びDGサイズを含む構成による制御によって動的に選択され得る。この方法は、固定時間内にランダム位置にアクセスすることを含みオリジナルセンサデータをロスレスに回復するために、ストアされた圧縮データを伸張することを更に含み得る。固定時間内にランダム位置にアクセスすることは、一定時間内に任意のデータ値(例えば、画素値)にアクセスすることを意味する。これは、そのデータ値の前に来るすべてのDGが任意のサイズ上に圧縮され得るので、自明(non-trivial)ではない。すべての前のDGsのサイズを順次加算しなければならない代わりに、CIPが定義される。累積データサイズ、述部、圧縮ワードサイズ、及びDGサイズを用いて、データ値がメモリ内のどこにあるかを判定することができる。伸張は、センサデータを回復するための単一サイクルを含み得る。本方法は、伸張のため、並列マップ縮小(map-reduce)関数及び単一サイクルアドレスポインタ計算を用いることを更に含み得る。
【0036】
図2は、説明される圧縮オペレーションの一例を示し、この例では、圧縮されていないオリジナルデータ210の256ビットを含むローが、41ビットの圧縮述部を含んで示される圧縮述部225と共に157ビットを含むローを含む圧縮データ220に変換される。図示の圧縮された述部は、圧縮データ220内のDGが圧縮されているか否かを示す1ビットデータ構造である。
【0037】
この例示のロー圧縮は、161/256=59%の圧縮比を提供する。4つのデータグループの各々に対する先行値が、DG内の第1のデータサンプル値として示されており、各サンプルは16ビットを有し、従って、DGsは各々64ビットを有する。第1のローでは、DGsがG1、G2、G3、及びG4として示されている。図示の圧縮方式では、各DGは4サンプルを有し、各データサンプルはオリジナルデータ210内の16ビットであり、用いられた圧縮ワードサイズは5ビットであった。本明細書において用いられる圧縮ワードサイズは、動的に選択可能な圧縮パラメータ(通常、16ビットデータに対して4~10)であり、DG内で圧縮され得るデータのドリフトのダイナミックレンジを定義する。
【0038】
この例ではG1、G2、及びG4は圧縮されるが、G3のデータのドリフトの範囲が50(それぞれ、DGにおける最小及び最大データ値である100と150の間の差)であり、これは用いられる圧縮ワードサイズによって設定された5ビットで符号化され得る数より大きいので、G3は圧縮を有さない。G1では、2の先行値を用いて、先行値ではないオリジナルサンプルが、オリジナルデータサンプル値から2を減算することによって処理されて、圧縮データ値が提供される。第2のデータグループの第2のサンプルでは、この計算は10-2=8である。図示された圧縮データ述部は、圧縮を受けたG1、G2、及びG4のケースでは1が与えられ、圧縮を受けなかったG3については0が与えられる。記載される方法は、DGに対してデータ圧縮が実装されないとき、DGの処理の伸張を回避するために、0(又は1)の圧縮述部値を用いることによって、利点を達成する。
【0039】
説明される圧縮の基本的な原理は、圧縮されたローのサイズに、オリジナルデータサイズにW/Nビットを加えたものによって決定される所定のサイズを超えてCIPのサイズを加えたものとして定義される如何なるローにおいても、圧縮されたデータサイズを決して増大させないことであり、ここで、Wはオリジナルデータ長(ビット単位)であり、NはDGのサイズ(ビット単位)である。例えば、オリジナルデータ長(ロー)は
図2では256ビットであり、最終データ長は157ビットである。
【0040】
図3Aは、入力データ305として示されているように受信されて示されるオリジナルの入力バイナリセンサデータの各ローに対して最小圧縮比を提供する、ラスターデータ幅にわたって分散された各DGのための、単一クロックサイクル並列接続圧縮回路310
1、310
2、~310
n(集合的に圧縮回路310)を用いる例示的のロスレスデータ圧縮を示す。圧縮回路310
1、310
2、~310
nは、それぞれ、
図3Aに示す先行選択信号を提供するための先行選択回路310aとして、
図3Bでこれ以降に説明する2つの構成要素と、先行選択回路310aから受信したそれぞれの先行値を用いて圧縮データを生成するサンプル処理回路310bによって実装される差分によるサンプル処理とを含む。
【0041】
圧縮回路3101、3102、~310nからの圧縮データ出力は、ボーティング回路320に結合され、その後、DDRメモリ330に結合されて示されている。付加的な圧縮回路が、DGサイズ及びドリフトの異なる構成値を用いてローを圧縮するために用いられ得る。これに、図示のボーティング回路320が続き得、これは、これら全ての演算から得られた圧縮比を比較し、最良の圧縮比に対応する圧縮データをDDR330に転送する。
【0042】
図3Bは、先行選択回路310a及びサンプル処理回路310bのための例示的な構成要素を示す。
図3Bに示される先行選択回路310aは、例として、HISTブロック311によって計算された入力データの統計的分散に応じて、第1の画素312a、平均値(means)312bとして示される平均、及び中央値312cによって示される、複数の異なる先行選択オプションから選択し得る。HISTブロック311はMUX選択信号316をMUX317に出力し、MUX317は、これに応答して先行値を出力する。
【0043】
電気的に並列であるこれらの圧縮回路3101、3102、~310nは、入力データ305を介して、DGのサイズ、ドリフトのダイナミックレンジ、及び、提供されるリアルタイム計算に基づいて選択されるデータ先行値に対する種々の構成を用いて、単一クロックサイクルロスレス圧縮を実施する。これらの圧縮回路3101、3102、~310nからの出力は、各々により達成される異なる構成及び圧縮比に対して生成される圧縮出力データである。圧縮回路3101、3102、~310nの出力は、ボーティング回路320の入力に結合され、ボーティング回路320は、最良事例圧縮を実現した先行値、DGサイズ、及びドリフトを選択するためのボーティングを実装し、その選択肢に対応する圧縮データ及びCIPを、DDRメモリ330又はストレージのための別の内部メモリに転送する。
【0044】
図4は、Row1~Row4として示される4つのローの各々に対するCIPの例示的な形成を示す。CIPsは、圧縮されたデータと共にメモリにストアされる(後述する
図6A及び6Bを参照)。上述したように、CIPは、生成され、各ローと共にストアされるデータのパケットである。CIPのサイズは、概して、通常のローサイズのものより著しく小さいので、圧縮比を計算するときにはCIPは一般に考慮されない。例えば、2M画素のカメラでは、圧縮されないローサイズは6kバイトであり、一方、CIPのサイズは100バイト未満となり得る。CIP情報は、データを圧縮する一方で圧縮回路によってつくられ、オリジナルデータパケットを抽出(伸張)するために伸張回路によって用いられる。
図4に示される例示のCIPのフィールドは、すべてのDGが圧縮されるか否かを示すように、1ビットである圧縮述部を含み(W/Nビットとして示されるが、回路は圧縮述部を固定ビットフィールド(例えば、512ビット)とし得、それにより、DGsの最大数に制限を設けることができ)、ここで、Wはラスターローサイズであり、Nがデータグループサイズである。
【0045】
圧縮されたデータサイズは32ビットとして示されており、ここで、トータルの圧縮されたデータサイズは、
図2の例では157ビットであるラスターデータの1つのローに対するものであり、64ビットとして示される累積データサイズは、そのローまでフレームのトータルの圧縮されたデータサイズである。また、CIPは、ローシグネチャのための圧縮方式のダイナミックレンジをストアする4ビット値である圧縮ワード(CW)サイズ、一つの特定のローを圧縮するために用いられるフレキシブルなDGサイズをストアする8ビット値であるDGサイズ、及び、圧縮の機能的安全及び正確さを保証するためにデータのローに順次対応するCIP毎に計算されたECC及び/又はCRCシグネチャを含む。また、シグネチャは、宇宙アルファ粒子、電磁干渉(EMI)、クロック又は電力欠陥などによりCIPが破損した場合でも、それがオンザフライで補正され得、したがって、全フレームのための伸張プロセスが正しく成されることを確実にする。
【0046】
図5Aは、圧縮データを圧縮されていないデータ出力(オリジナルデータ210)に変換するためにアドレス計算変換エンジンμ-アーキテクチャを用いる例示の伸張方式を示す。この例で示されている圧縮データは、それぞれのDGsの圧縮述部と共に
図2の圧縮データ220が、受信された圧縮述部225から、示されている変換述部520を生成する並列マップ及び縮小ブロック510によって処理される。
【0047】
一般に、1つの変換された述部がDG毎に計算される。シストリック(systolic)加算器に基づく並列マップ及び低減ブロック510の回路アーキテクチャの使用は、変換された述部値がデュアルデータ構造を表すことを確実にする。データ構造の第1の部分は、成功裏に圧縮されたDGの数についての情報を有し、これは、高速演算を確実にするためにlog2n複雑度を有する圧縮述部225入力から計算することができる。変換された述部520の第2の部分は、どのくらい多くのDGがローにおけるその点まで圧縮されずにストアされたかの累積情報を含み得る。この変換された述部520の後に、アドレスポインタ計算器525が続く。このアドレスポインタ計算器525は、DGに対する変換述部520の第1の部分を圧縮ワードサイズ(この例では31)で乗算し、変換述部520の第2の部分を圧縮ワードサイズ(この例では64)で乗算する。その後、これらの2つの値を加算して、リトリーブされた圧縮データ内の圧縮された先行値の位置ポインタを計算する。
【0048】
アドレスポインタ計算器525の出力は、先行値の位置をデコードするため、及び正しい非圧縮データ値を計算するためにデコーダ530に結合される。デコーダ530は、アドレスポインタ計算器525に基づいて、各データグループに対する圧縮されたローデータから先行値をフェッチする。また、デコーダ530は、圧縮されていないローに対する圧縮述部を別の入力として受け取る。デコーダ530の出力は、判定ブロック535にあるように、追加又は複写に結合される。DGが、圧縮された述部によって示されるように圧縮されてストアされた場合、そのDGの先行値は、圧縮されていないデータ値を計算するために、圧縮されたデータにおける受信された他の値と加算される。そうでない場合、圧縮データ内の値は、これらを先行値と共に追加することなく、判定ブロック535にあるようにオリジナルデータとしてそのまま(変更なしに)追加又はコピーによってメモリにコピーされる。判定ブロック535にあるような追加又は複写によるこの処理の結果、
図2に示すオリジナルデータ210のローの256ビットが返される。
【0049】
図5Bは、ここでは並列マップ及び縮小log
2n層510’として示される並列マップ及び縮小回路510と共に525’として示されている
図5Aに示されるアドレスポインタ計算器のための例示の回路実装を示す。アドレスポインタ計算器525’は、先行する2つの乗算器525b及び525cの出力を加算する加算器525aを含む。525bは、圧縮されたDGのサイズに等しい固定値を有する対応するDGに対する変換された述部520の第1の半分520aを乗算する。525cは、圧縮されていないDGのサイズに等しい固定値を有する対応するDGの第2の半分520bを乗算する。
【0050】
アドレスポインタ計算器525’の出力はデコーダ530に結合される。変換された述部520のデータ構造は、マップ縮小回路5101及び5102の組み合わせによって計算される。これらの回路の両方に対する入力は、圧縮されていないデータローのための圧縮された述部225である。5101は、圧縮されていないデータローに対するDGの前の成功裏の圧縮後にストアされたデータグループの数をカウントする。5102は、圧縮されていないデータローに対するDGの前に圧縮できなかったDGの数をカウントする。
【0051】
図5Cは、ブロック535にあるような例示の付加又は複製のオペレーションの一例を示す。この回路への入力は、圧縮述部225、圧縮データ、及び、デコーダ530によってデコードされたアドレス位置からフェッチされた先行値である。圧縮された述部が、DGが圧縮後にストアされたことを示す場合、受信された値は、加算器538a、b、及びcによって先行値に加算され、そうでない場合、これらの値は補償されていないデータ出力210aとして示されるように、そのままコピーされる(変化なし)。
【0052】
図6Aは、DDRメモリにおける圧縮データのデータストレージのための第1の例示的なオプションを示す。これは、概して、DDRメモリ密度を最適化しない、シンプルなインラインオプションである。この方法は、圧縮データをメモリに書き込むためのDDR帯域幅を改善する。CIPは、実際の圧縮データパケットの先頭に付加される(ヘッダーとして添付される)。圧縮されたデータは、すべてのラスター化されたローのCIPの第1のバイトが、それが圧縮されていなかった場合に実際のデータがあったであろう位置にあるように、メモリにストアされる。このデータストレージフォーマットにより、フレーム内のすべてのローからデータにアクセスするための一連のコマンドを発行し得るDMAエンジンを構成することが一層容易になる。DMA/ストリーミングエンジンは、CIPをプルインし、パケットを処理し、次いで、パケットを並列マップ及び縮小ブロック510、変換述部520、及びアドレスポインタ計算ブロック525に転送することができる。
【0053】
図6Bは、DDRメモリにおけるデータストレージのための第2の例示のオプションを示す。これは、DDRメモリストレージ密度を改善するデンスストレージオプションであり、すなわち、
図6Aに示された第1の例示オプションと比較して、より多くのデータを同じDDRメモリサイズにストアすることができる。この場合、CIP構造は、次のCIPのアドレスも含む。あるいは、CIP構造の累積データサイズフィールドを用いて、データの次のローの開始アドレスを決定し得る。圧縮データフレームにアクセスするタスクを課されたDMAエンジンが、データフレーム内の第1のCIPを読み取り、それに続いて、圧縮されたローデータ及び次のローのCIPをストアするために、CIPによって示されるような厳密なバイトをフェッチし、その後、データを伸張回路に転送する。このプロセスを通して、DMAエンジンのメモリアクセスロジックは、次のアクセスのアドレスを計算し続ける。
【0054】
このように実施されるアドレス計算は、2つの固有のプロセスを介して、まず、次のCIPのアドレスをストアする任意選択のCIPフィールドを用いて、次に、圧縮されたデータサイズフィールドを用いてそれを現在のアドレスに付加することによって、行われる。このプロセスは、機能的に安全で信頼性の高いデータアクセスを確実にし、宇宙アルファ粒子、電磁波、クロック、又はランダム電圧ノイズによって引き起こされる故障から回路を守る。
【0055】
また、説明される実施例は、適応性がありスケーラブルな圧縮方式アルゴリズムを含む。各データセットは異なる挙動を示し、最良の圧縮結果を保証するための圧縮パラメータの理想的なセットは存在しない。DGサイズ及び圧縮ワードサイズの、それらがいずれも柔軟なパラメータであるような範囲のための「有効パラメータ」の制約された範囲を定義することができる。例えば、DGサイズの有効値は、4、8、12、及び16であり得る。同様に、圧縮ワードサイズの有効値は、6~12とし得る。データのすべてのローについて、下記工程が実施され得る。
(a)並列に、N個のパラメータセット(N=DGサイズ値及び圧縮ワードサイズ値のすべての組み合わせ)を用いて全ローに対して圧縮を実行し、N個のCIPを生成する。
(b)関連するCIPフィールド(総圧縮サイズ)を比較することによって(a)における実行の各々からの圧縮データ(圧縮データサイズ)のサイズを比較する。
(c)全ての実施された構成オプションに対して達成された圧縮比のボーティング回路320比較に基づいて、最良の圧縮ワードサイズ及びDGチョイスを選択する。
【0056】
この適応性がありスケーラブルな圧縮アルゴリズム及びロジックは、完全にスケーラブルであり、最適な圧縮データセットがデータの各ローに対してつくられることを保証する。圧縮方式の4倍の半導体(例えば、シリコン)エリアは、性能の4倍の改善を確実にする。いくらかのレイテンシーを犠牲にして、時間多重化方式で同じ回路要素を用いることによって、半導体エリアを制約することができる。
【0057】
図7Aを参照すると、データ信号を圧縮するためのシステム700が、処理ユニット705を含んで示されている。処理ユニット705は、圧縮及び伸張回路の分散インスタンス化を備えるシステムオンチップ(SOC)アーキテクチャとして実装され得る半導体表面(例えば、シリコン基板)を有する基板702上に形成されて示される。処理ユニット705は、マイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、又はマイクロコントローラユニットを含み得る。処理ユニット705は、感知されたデータ源710と電子的に通信している。データ源の例は、デジタルカメラ、カムコーダー、モバイルデバイス、又は、物理的な場面を示すビデオ信号を捕捉及び提供するデバイス、又はレーダーの場合、アナログフロントエンドと共にアンテナを含み得る。処理ユニット705は、外部メモリ715と電子的に通信する。外部メモリ715の一例には、DDRメモリがある。
【0058】
処理ユニット705は、感知されたデータ信号を処理するための処理サブシステム720を含む。データ処理サブシステム720は、フロントエンド725と、バッファ780によって共に結合されるバックエンド730とを含む。フロントエンド725は、データ源710から、感知されたデータ信号を受信するセンサインタフェース735を含む。バックエンド730は、記載される圧縮方式に従ってデータ信号におけるフレームの圧縮バージョンを生成するためエンコーダ740を含む。幾つかの実施例において、エンコーダ740は、データ信号のフレームの圧縮バージョンを生成するための個別のユニットを含み得る。処理ユニット705は、ダイレクトメモリアクセス(DMA)データ及び構成バス745を含む。DMAデータ及び構成バス745は、処理ユニット705における構成要素間でデータ及び制御信号を伝達する。
【0059】
処理ユニット705は、中央処理装置として機能する縮小命令セット演算(RISC)プロセッサ750を含む。RISCプロセッサ750は、入力又は出力機能、及びシステム制御機能を実施するように動作し得る。処理ユニット705は、デジタルシグナルプロセッサ(DSP)755を含む。DSP755は、リアルタイム信号処理ソフトウェアアルゴリズムを処理するように動作し得る。一実施例において、DSP755は、コーデックを処理するように動作し得る。コーデックは、符号化又は復号ソフトウェアとして定義され得る。
【0060】
処理ユニット705は、ダイレクトメモリアクセスのためのDMAコントローラ760を含む。処理ユニット705は、データ信号のフレームをストアするオンチップメモリ765を含む。オンチップメモリ765の一例は、スタティックランダムアクセスメモリ(SRAM)である。処理ユニット705は、コーデックをストアするための他のメモリを含み得る。また、処理ユニット705は、外部メモリ715を制御するための外部メモリコントローラ770を含む。処理ユニット705は、データ信号の一つ又は複数のフレームを送信するための通信周辺機器など、一つ又は複数の周辺機器775を含む。通信周辺機器の例には、ポート及びソケットが含まれる。また、周辺機器775は、タイマーなどの周辺機器、及びRAMなどの一時的ストレージをシステムを含み得る。
【0061】
図7Bは、データ信号を圧縮及び伸張するための例示のシステム700’を示す。システム700’は、バッファ780とセンサインタフェース735を含むフロントエンドとの間、及びバッファ780とバックエンド730との間に、説明される圧縮回路791及び伸張回路792を含む。システム700’の例示的なアーキテクチャは、種々のデータ処理の入力及び出力、及びシステムのデータ入力ブロックにおいて必要とされインスタンス化される、分散された圧縮及び伸張ブロックを保証する。
【0062】
図7Cは、説明される圧縮及び伸張を実装するために用いられ得る圧縮及び伸張ブロックの例示の4タイプを示す。示されたモジュールは、モジュール794、795、796、及び797として示されるモジュール1~4を含む。図示される各丸で囲まれた数字は、圧縮及び伸張のタイプに対応する。図示されたモジュール794によって処理され得る丸で囲まれた1は、ラスター線形(1D)データY平面画像又は線形レーダーデータに対応し、モジュール795によって処理され得る丸で囲まれた2は、ラスター線形データU、Vインターリーブされた平面画像データに対応して示され、モジュール796によって処理され得る丸で囲まれた3は、センサデータのためのブロック毎(2D)ランダムアクセスに対応して示され、モジュール797によって処理され得る丸で囲まれた4は、センサデータのためのブロック毎(2D)通常アクセスに対応して示される。また、示されたこの例は、線形レーダーデータを処理するための圧縮及び伸張ブロックをインスタンス化し得る。圧縮及び伸張のためのメカニズム、回路、及びのための方法は、固定及び決定論的時間での異なるデータトポロジー(1D、2D)及びアクセスパターン(規則的又はランダム)のためのデータ処理を可能にする。
【0063】
説明される実施例の利点には、シンプルなロスレスの及びダイナミックな適応性データ圧縮方式が含まれる。説明される圧縮は、ランダムデータアクセスを可能にする。説明される実施例は、説明されるCIP構造を備える、安全性が重要な応用例に特に適している。機能的安全性は、部品表(BOM:bill of materials)コストを潜在的に削減する。説明される実施例は、線形とブロック毎との両方で、種々の外部メモリストレージ方式を可能にする。また、説明される実施例は、固定密度、分離された制御及びデータパケット、ならびにレイテンシーを最小にするDGの並列処理を可能にする。
【0064】
図8A及び
図8Bは、説明された圧縮及び伸張を用いる例示のイメージング用途に対し、それぞれ、4及び6のDGサイズのための、圧縮比対圧縮ワードサイズデータを示す。この例では、データは、
図8AのDGサイズ4及び
図8BのDGサイズ6を変化させることによって生成された。
図8A及び
図8BのX軸は、圧縮のために用いられるCWサイズを記す。この特定の例において、最良の圧縮比は、ほぼ0.6に等しい、8のCWサイズ及び6のDGサイズに対して達成される。オリジナルデータサンプルは、16ビット画像データ(画素)であった。各フレームは、約300,000画素を含んでいた。ポスト圧縮帯域幅は、圧縮されないデータの60%まで低減されている。12ビット画像データ(図示せず)では、達成可能な圧縮比は約70%であることが分かった。
【0065】
本発明の特許請求の範囲内で、説明した例示の実施例に改変が成され得、他の実施例が可能である。