(57)【特許請求の範囲】
【請求項１】
複数のデータ項目を備えるデータストリームを受信し、圧縮されたデータストリームを出力するためのデータ圧縮器であって、
前記データストリームを受信するためのデータ入力部と、
圧縮されたデルタ値を生成するように構成されるデルタ値計算回路であって、前記データ入力部から前記複数のデータ項目を受信するように構成されるとともに、前記受信されたデータ項目のうちの少なくともいくつかに対して、データストアにアクセスし、前記受信されたデータ項目の関連データ項目が、前記データストアに記憶されているかどうかを判定するように構成され、
前記データストアに前記関連データ項目が記憶されている場合には、前記データストアから前記関連データ項目を読み出し、前記受信されたデータ項目および前記関連データ項目からデルタ値を計算し、前記デルタ値を出力するように構成され、
前記データストアに前記関連データ項目が記憶されていない場合には、前記受信されたデータ項目および所定の値からデルタ値を計算して、前記デルタ値を出力するように構成される、デルタ値計算回路と、
前記データ入力部において受信された前記複数のデータ項目を記憶するための前記データストアと、
前記データストアに前記複数のデータ項目を記憶するように構成されるデータストアコントローラ回路であって、前記データ入力部におけるデータ項目の受信に応じて、前記データストアにアクセスし、記憶場所が前記データ項目に割り当てられているかどうかを判定するように構成され、
記憶場所が前記データ項目に割り当てられている場合には、前記割り当てられた記憶場所に前記データ項目を記憶するように構成され、
記憶場所が前記データ項目に割り当てられていない場合には、前記データ項目に記憶場所を割り当て、前記割り当てられた記憶場所に記憶されたいかなるデータも排除および処分し、前記割り当てられた記憶場所に前記データ項目を記憶するように構成される、データストアコントローラ回路と、を備え、
前記データストリームの中の前記複数のデータ項目は、複数のデータオブジェクトのうちの１つに属するようにそれぞれ分類され、前記データオブジェクトのそれぞれは、複数のデータ項目を備え、前記データストア内の各記憶場所は、前記データオブジェクトのうちの１つに割り当てられ、前記データオブジェクトを識別する識別子を備え、
前記データストアコントローラ回路は、前記データストア内の前記記憶場所を前記データオブジェクトに割り当てるように構成され、前記データ項目および前記関連データ項目は、前記同一のデータオブジェクトに属し、前記関連データ項目が前記データストアに記憶されていると判定して前記デルタ値の計算のために前記関連データ項目を読み出す場合には、前記データストアコントローラ回路が、同一のデータオブジェクトに割り当てられている前記記憶場所に前記データ項目を記憶し、前記関連データ項目を排除および処分するよう構成されることを特徴とする、データ圧縮器。
【請求項２】
前記データオブジェクトのそれぞれは、複数のデータセクションを備え、前記複数のデータセクションのそれぞれは、前記データストリーム内の複数の隣接するデータ項目を備え、前記データストアコントローラ回路は、前記対応するデータオブジェクトに割り当てられている前記記憶場所のうちの１つに、データセクションを記憶するように構成されることを特徴とする、請求項１に記載のデータ圧縮器。
【請求項３】
前記データ項目のうちの少なくとも１つに対して、対応する関連データ項目は、同一のデータセクション内にデータ項目を備えることを特徴とする、請求項２に記載のデータ圧縮器。
【請求項４】
前記データ項目のうちの少なくとも１つに対して、対応する関連データ項目は、同一のデータオブジェクトに属する以前に受信したデータセクションの中の対応する位置にデータ項目を備える、請求項２に記載のデータ圧縮器。
【請求項５】
前記データストアコントローラ回路は、前記データセクションのうちの１つの第１のデータ項目の受信に応じて、前記記憶場所が、前記データオブジェクトに割り当てられるように、同一のデータオブジェクトからのデータセクションが、前記データストアの中の記憶場所に記憶されているかどうかを判定するように構成され、
同一のデータオブジェクトからのデータセクションが、前記データストアの中の記憶場所に記憶されている場合には、前記受信されたデータセクションの中の少なくとも１つのデータ項目、および前記記憶されたデータセクションの中の少なくとも１つの関連データ項目から、前記デルタ値計算回路で少なくとも１つのデルタ値を計算し、その後前記割り当てられた記憶場所から前記記憶されたデータセクションを排除し、前記割り当てられた記憶場所に前記受信されたデータセクションを記憶するように構成され、
同一のデータオブジェクトからのデータセクションが、前記データストアの中の記憶場所に記憶されていない場合には、前記記憶場所のうちの１つからデータを排除および処分し、前記記憶場所のうちの１つを前記データオブジェクトに割り当て、前記割り当てられた記憶場所のうちの１つに前記受信されたデータセクションを記憶するように構成されることを特徴とする、請求項４に記載のデータ圧縮器。
【請求項６】
同一のデータオブジェクトに属し、前記識別子によって識別される前記データ項目は、同一の記憶場所に記憶されることを特徴とする、請求項１に記載のデータ圧縮器。
【請求項７】
前記データストリームは、少なくとも１つの画像データのストリームを備え、前記データオブジェクトのそれぞれは、画像表示にタイルを描くための画像コマンドのリストを備え、前記データセクションのぞれぞれは、前記画像コマンドのうちの１つを備え、前記データ項目のぞれぞれは、前記画像コマンド内にフィールドを備えることを特徴とする、請求項２に記載のデータ圧縮器。
【請求項８】
前記データストアは、データキャッシュを備えることを特徴とする、請求項１に記載のデータ圧縮器。
【請求項９】
前記データストアはデータキャッシュを備え、前記データキャッシュの各ラインは、記憶するために前記ラインが割り当てられている前記データオブジェクトを識別するためのタグを記憶する記憶部を備えることを特徴とする、請求項１に記載のデータ圧縮器。
【請求項１０】
前記データオブジェクトのそれぞれは、複数のデータセクションを備え、前記複数のデータセクションのそれぞれは、前記データストリーム内の複数の隣接するデータ項目を備え、前記データストアコントローラ回路は、前記対応するデータオブジェクトに割り当てられている前記記憶場所のうちの１つに、データセクションを記憶するように構成され、
前記データ項目のうちの少なくとも１つに対して、前記関連データ項目は、同一のデータオブジェクトに属する以前に受信したデータセクションの中の、前記データ項目の位置に対応する位置に存在し、
前記データオブジェクトは、画像スクリーンにタイルの階層的な層を描くための画像コマンドのリストを備え、前記データストアコントローラ回路は、前記データセクションのうちの１つの第１のデータ項目の受信に応じて、同一のデータオブジェクトからのデータセクションが、前記データストアの中の記憶場所に記憶されているかどうかを判定し、同一のデータオブジェクトからのデータセクションが、前記データストアの中の記憶場所に記憶されていないと判定した場合には、同一のタイルだが異なる階層レベルからのデータセクションを識別し、前記受信されたデータセクションの中の少なくとも１つのデータ項目、および前記記憶されたデータセクションの中の少なくとも１つの関連データ項目から、前記デルタ値計算回路で少なくとも１つのデルタ値を計算し、前記デルタ値がどのデータ項目に関して計算されたかを示す指標とともに前記デルタ値を出力するように構成されることを特徴とする、請求項９に記載のデータ圧縮器。
【請求項１１】
データを圧縮する方法であって、
データ入力部で、複数のデータ項目を備えるデータのストリームを受信するステップと、
データストアにアクセスし、受信されたデータ項目に関連するデータ項目が、前記データストアに記憶されているかどうかを判定するステップであって、
前記データストアに前記関連データ項目が記憶されている場合には、前記データストアから前記関連データ項目を読み出し、前記受信されたデータ項目と前記関連データ項目との差を備えるデルタ値を計算して、前記デルタ値を出力し、
前記データストアに前記関連データ項目が記憶されていない場合には、前記受信されたデータ項目と所定の値との差を備えるデルタ値を計算して、前記デルタ値を出力する、ステップと、
記憶場所が、前記受信されたデータ項目に割り当てられているかどうかどうかを判定するために、前記データストアにアクセスするステップであって、
記憶場所が前記受信されたデータ項目に割り当てられている場合、前記割り当てられた記憶場所に前記データ項目を記憶し、
記憶場所が前記受信されたデータ項目に割り当てられていない場合、前記データストア内の記憶場所を、前記受信されたデータ項目に割り当て、前記記憶場所に記憶されているデータを排除および処分する、ステップと、
を含み、
前記データストリームの中の前記複数のデータ項目は、複数のデータオブジェクトのうちの１つに属するようにそれぞれ分類され、前記データオブジェクトのそれぞれは、複数のデータ項目を備え、前記データストア内の各記憶場所は、前記データオブジェクトのうちの１つに割り当てられ、前記データオブジェクトを識別する識別子を備え、前記データ項目および前記関連データ項目は、前記同一のデータオブジェクトに属し、前記関連データ項目が前記データストアに記憶されている場合には、前記受信されたデータ項目が、前記関連データ項目に割り当てられている前記記憶場所に記憶され、前記関連データ項目が排除および処分されることを特徴とする、方法。
【請求項１２】
データを圧縮する方法を実行するようにコンピュータを制御するコンピュータプログラムであって、
前記データを圧縮する方法は、
データ入力部で、複数のデータ項目を備えるデータのストリームを受信するステップと、
データストアにアクセスし、受信されたデータ項目に関連するデータ項目が、前記データストアに記憶されているかどうかを判定するステップであって、
前記データストアに前記関連データ項目が記憶されている場合には、前記データストアから前記関連データ項目を読み出し、前記受信されたデータ項目と前記関連データ項目との差を備えるデルタ値を計算して、前記デルタ値を出力し、
前記データストアに前記関連データ項目が記憶されていない場合には、前記受信されたデータ項目と所定の値との差を備えるデルタ値を計算して、前記デルタ値を出力する、ステップと、
記憶場所が、前記受信されたデータ項目に割り当てられているかどうかどうかを判定するために、前記データストアにアクセスするステップであって、
記憶場所が前記受信されたデータ項目に割り当てられている場合、前記割り当てられた記憶場所に前記データ項目を記憶し、
記憶場所が前記受信されたデータ項目に割り当てられていない場合、前記データストア内の記憶場所を、前記受信されたデータ項目に割り当て、前記記憶場所に記憶されているデータを排除および処分する、ステップと、
を含み、
前記データストリームの中の前記複数のデータ項目は、複数のデータオブジェクトのうちの１つに属するようにそれぞれ分類され、前記データオブジェクトのそれぞれは、複数のデータ項目を備え、前記データストア内の各記憶場所は、前記データオブジェクトのうちの１つに割り当てられ、前記データオブジェクトを識別する識別子を備え、前記データ項目および前記関連データ項目は、前記同一のデータオブジェクトに属し、前記関連データ項目が前記データストアに記憶されている場合には、前記受信されたデータ項目が、前記関連データ項目に割り当てられている前記記憶場所に記憶され、前記関連データ項目が排除および処分されることを特徴とする、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理におけるデータ圧縮および復元の分野に関する。
【背景技術】
【０００２】
現代のプロセッサの処理力の増加にともない、処理することができるデータの量もまた増加している。この増加するデータ量の異なるデバイス間の送信は独自の問題を呈し、これらの問題には、種々の異なる圧縮方法を使用して対処している。これらの圧縮方法によって、データを送信前により小型の形態に圧縮し、データが必要な場合には受信の時に復元することができる。
【０００３】
データを圧縮する１つの手段は、デルタ圧縮である。例えば、表示される画像を表すデータのストリームでは、概して、２つの隣接データ項目間の差は極めて小さいことがわかっており、従って、各データ項目を送信するよりはむしろ、単純に第１のデータ項目を送信し、その後、前の値との差を表す値を送信する方がより効率的である場合がある。値が類似している場合には、この手段で明らかに少ない値を送信することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、例えば、画像データがストリームとして送信されている場合に問題が発生し、画面の異なるタイルからのデータが任意の順序で発生する可能性がある。その性質上、デルタ圧縮は、それらを基にデルタが計算されるデータ項目が類似している場合にのみ効率的である。従って、画像データストリームでは、デルタは、例えば、データセットの中で隣接している、関連データ項目間で計算されるべきである。これらの値は、データストリームの中で、互いの近くに現れないことがあり、従って、デルタ値を計算するために、以前に受信したデータ項目を記憶するデータストアが必要とされる。任意の順序でアクセスすることができる、何千から何百万のデータセットがある場合、非常に大量の以前に受信したデータが記憶されているのでない限り、必要な関連値を記憶しなくてもよい。
【課題を解決するための手段】
【０００５】
第１の態様から見ると、本発明は、複数のデータ項目を備えるデータストリームを受信し、圧縮されたデータストリームを出力するためのデータ圧縮器を提供し、該データ圧縮器は、該データストリームを受信するためのデータ入力部と、圧縮されたデルタ値を生成するためのデルタ値計算機であって、該データ入力部から該複数のデータ項目を受信するように構成され、該受信されたデータ項目の関連データ項目が、データストアに記憶されているかどうかを判定するために、該受信されたデータ項目のうちの少なくともいくつかが、該データストアにアクセスするように構成され、記憶されている該関連データ項目に応じて、該データストアから該関連データ項目を検索し、該受信されたデータ項目および該関連データ項目からデルタ値を計算し、かつ該デルタ値を出力し、該データストアに記憶されていない該関連データ項目に応じて、該受信されたデータ項目および所定の値からデルタ値を計算し、該デルタ値を出力する、デルタ値計算機と、該データ入力部で受信された該複数のデータ項目を記憶するためのデータストアとを備え、該データ圧縮器は、該データストアで該複数のデータ項目の記憶部を制御するためのデータストアコントローラであって、該データ入力部でのデータ項目の受信に応じて、該データストアにアクセスし、記憶場所が該データ項目に割り当てられているかどうかを判定するように構成され、割り当てられている場合には、該割り当てられた記憶場所に該データ項目を記憶し、割り当てられていない場合には、該データ項目に記憶場所を割り当て、該割り当てられた記憶場所に記憶されたいかなるデータも排除および処分し、該割り当てられた記憶場所に該データ項目を記憶するように構成される、データストアコントローラをさらに備える。
【０００６】
本発明では、隣接する値がデータセットまたはオブジェクト内で互いに関連しないように、いくつかのデータストリームとともに、任意の順序で受信されたデータ項目がある場合があることを認識している。２つのデータ項目が互いに類似する場合、データ項目間のデルタ値の形成は、受信したデータストリームを圧縮するようにのみ機能し、これは概して、２つのデータ項目がおそらくデータセットの中で隣接し互いに関連する場合に発生する。しかしながら、データストリームが任意の順序で受信されたデータ項目を備える場合、データストリームの中の隣接するデータ項目は関連しない。データセットの中で互いに関連するデータ項目間のデルタ値を形成することを可能にするためには、新しい値が受信されると、関連する値をデータストアから読み出し、対応するデルタ値を計算することができるように、以前に受信した値を記憶するデータストアが必要とされる。しかしながら、データストリームが任意の順序で受信される多くのデータ項目を備える場合、データストアは記憶された関連する値があることを保証するために、非常に大きい必要があるであろう。
【０００７】
データストアが、キャッシュなどにアクセスするのが速いデータストアである場合、容量当たりでは高価であり、非常に大きなデータストアを有するのは有益ではない。より小さなデータストアが、より安価なメモリとともに使用される場合、システムの待ち時間は、関連するデータ項目をメモリから読み込む必要があるかどうかにより、これはシステムの待ち時間が一定ではなく、読み込まれる実際のデータ項目によることを意味し、従って、入力データのスループットは一定とはなり得ない。
【０００８】
本発明は、関連データ項目が記憶されていない場合、「デルタ値」を所定の値から計算することを可能にすることによって、この問題に対処する。従って、新しいデータ項目が受信されると、関連データ項目が記憶されているかどうかが判定され、記憶されている場合には、デルタ値がその関連する値から計算される。しかしながら、記憶されていなかった場合には、デルタ値は記憶された所定の値に関して単純に計算される。この値は、実際のデータ項目が出力される場合にはゼロであってもよく、またはデータ項目の計算された統計的平均であってもよい。これによって、記憶された関連する値があってもなくても、デルタ値を同一の待ち時間で計算することができる。従って、データの一定のスループットを得ることができ、いくつかの状況では、関連データ項目が記憶されていない場合、データは圧縮されないか、またはそれほどは圧縮されないだけである。
【０００９】
データストアは、忘れ易い（ｆｏｒｇｅｔｆｕｌ）記憶部であり、そのため新しいデータ項目が受信されると、記憶場所がそれに割り当てられているかどうかを判定する。割り当てられている場合には、値はその場所に記憶され、割り当てられていない場合には、別の記憶場所が排除され、データが処分され、新しい値がそこに記憶される。システムが記憶されていない関連データ項目に対処することができるため、これを行うことが可能であり、従って、記憶された値を上書きすることでエラーが発生することはなく、単にあまり効率的に実行されない将来の値を圧縮するという結果になる場合がある。
【００１０】
概して、デルタ値は受信したデータ項目とその関連する値または所定の値との差として計算されることに留意すべきである。この差は単純な減算であるかもしれず、または２つの値の間の相違を判定する別の方法である場合もある。
【００１１】
いくつかの実施形態では、該データストリームの中の該複数のデータ項目は、複数のデータオブジェクトのうちの１つに属するとしてそれぞれ分類され、該データオブジェクトは、複数のデータ項目をそれぞれ備え、該データストアに記憶される該データ項目は、該データオブジェクトを識別する、それらと関連付けられる識別子を備え、該データストアコントローラは、該データストア内の該記憶場所を該データオブジェクトに割り当てるように構成される。
【００１２】
本発明の実施形態は、いくつかのデータオブジェクトを有するデータストリームとの使用に特に適している。複数のデータオブジェクトがある場合に、同一のデータオブジェクト内のデータ項目が互いに関連する一方で、他のデータオブジェクトの中のデータ項目は、概して互いに関連しない。従って、データストリームの中の隣接するデータ項目が、異なるデータオブジェクトに由来する場合、データ項目間のデルタ値を形成しても、データは圧縮されない。そのため、データ項目がデータオブジェクトに属するとして識別することができ、データストアがデータオブジェクトに記憶場所を割り当てる場合には、便利である。従って、データストア内でこれらの識別子から関連する値を識別することができ、対応するデルタを計算することができる。データストリームがよく定義された書式を有する場合には、データストリームの中のデータ項目は、それぞれ識別子ビットを有する必要はないが、データストリームの中の位置、および、おそらくそのデータオブジェクトの単一の識別子ビットから、特定のデータオブジェクトに属するとして識別することができる。
【００１３】
いくつかの実施形態では、該関連データ項目は、該データストアに記憶されていると判定し、該デルタ値の計算のために、該関連データ項目を読み出すのに応じて、該データストアコントローラは、該同一のデータオブジェクトに割り当てられている該記憶場所に該データ項目を記憶し、該関連データ項目を排除および処分するよう構成されるように、該データ項目および該関連データ項目は、該同一のデータオブジェクトに属する。
【００１４】
いくつかの実施形態では、記憶場所がデータオブジェクトに割り当てられ、従って、データストアの中の記憶場所が、すでにそのデータオブジェクトに割り当てられている場合に、データ項目が受信されると、関連データ項目がデータストアに記憶され、デルタをその後計算することができ、これが終了すると、受信されたデータ項目をこの割り当てられた記憶場所内に記憶することが可能となり、記憶されていたデータ項目は排除し処分することができる。関連する値は、デルタを計算するために使用されると、もはや必要ではなくなり、従って、関連する値は、関連する、同一のデータオブジェクトから受信された次のデータ項目に関連する値で上書きされる。
【００１５】
いくつかの実施形態では、該データオブジェクトのそれぞれは、複数のデータセクションを備え、該データセクションのそれぞれは、該データストリーム内の複数の隣接するデータ項目を備え、該データストアコントローラは、該対応するデータオブジェクトに割り当てられている該記憶場所のうちの１つに、データセクションを記憶するように構成される。
【００１６】
いくつかの実施形態では、該データストアコントローラは、該データセクションのうちの１つの第１のデータ項目の受信に応じて、該記憶場所が、該データオブジェクトに割り当てられるように、同一のデータオブジェクトからのデータセクションが、該データストアの中の記憶場所に記憶されているかどうかを判定し、記憶されている場合には、該受信されたデータセクションの中の少なくとも１つのデータ項目、および該記憶されたデータセクションの中の少なくとも１つの関連データ項目から、該デルタ値計算機で少なくとも１つのデルタ値を計算し、それから該割り当てられた記憶場所から該記憶されたデータセクションを排除し、該割り当てられた記憶場所に該受信されたデータセクションを記憶し、記憶されない場合には、該記憶場所のうちの１つからデータを排除および処分し、該記憶場所を該データオブジェクトに割り当て、該割り当てられた記憶場所に該データセクションを記憶するように構成される。
【００１７】
新しいデータセクションが受信されると、データストアコントローラは、同一のデータオブジェクトからのデータセクションが、データストアに記憶されているかどうかを確認し、記憶されている場合には、受信したデータセクションの対応するデータ項目でデルタを形成するために、データセクションの中のデータ項目のうちの少なくとも１つが使用され、受信したデータセクションで以前に記憶したものを上書きする。
【００１８】
いくつかの実施形態では、データストリームは隣接するデータ項目を有するデータセクションを備え、データストアコントローラは特定のデータオブジェクトに割り当てられている各記憶場所に、データセクション全体を記憶する。
【００１９】
いくつかの実施形態では、該データ項目のうちの少なくとも１つに対して、該関連データ項目は、同一のデータセクション内にデータ項目を備える。
【００２０】
デルタは、異なるデータセクションだが、同一のデータオブジェクト内の関連データ項目から計算することができる。またデルタは、データセクション内のデータ項目が関連してもよいように、かつそれらの間のデルタ値がその圧縮版となるように、データセクション内で計算することができる。
【００２１】
いくつかの実施形態では、該データ項目のうちの少なくとも１つに対して、該関連データ項目は、同一のデータオブジェクトに属する、以前に受信したデータセクションの中の対応する位置からのデータ項目を備える。
【００２２】
関連データ項目はまた、同一のデータオブジェクトだが、異なるデータセクションからの対応するデータ項目とすることもできる。このように、データセクションは互いにリンクすることが可能で、データセクション内の異なるデータ項目もまた、これらのデルタ値によってリンクすることができる。その後、データは適切に圧縮され、また受信した値から復元することもできる。
【００２３】
いくつかの実施形態では、同一のデータオブジェクトに属し、該識別子によって識別される該データ項目は、同一の宛先に向かう。
【００２４】
データオブジェクトは、それらが何らかの形で互いに関連するデータを備える場合、いくつかの異なるデータセットであってもよいが、いくつかの実施形態では、特定の宛先に向かうのはデータセットである。
【００２５】
いくつかの実施形態では、該少なくとも１つのデータストリームは、少なくとも１つの画像データのストリームを備え、該データオブジェクトは、画像表示にタイルを描くための画像コマンドのリストを備え、該データセクションは、該画像コマンドのうちの１つを備え、該データ項目は、該画像コマンド内にフィールドを備える。
【００２６】
画像データのストリームは、本発明の実施形態による圧縮に特に適している。画像表示はタイルから形成され、各タイルは画像コマンドのリストを使用して描かれる。従って、タイルを描くための画像コマンドのリストは互いに関連し、デルタ値は同一のタイルのリストの間、およびコマンド内のフィールド間でも形成することができる。しかしながら、概して、異なるタイルのリストの間におけるデルタ値の形成では、データの圧縮は提供されない。従って、このような画像データストリームは互いに関連する多くのデータ項目を有し、そうではない多くおよびデータ項目は任意の順序で配設される。本発明の実施形態では、忘れ易いデータストアを使用し、絶対値を使用して圧縮することを可能にし、これにより、関連データ項目が記憶されていない場合でも、このような全く異なるデータの一定のスループットを可能にする。
【００２７】
データストアはいくつものものとする可能性があるが、いくつかの実施形態では、データストアはデータキャッシュを備える。キャッシュは迅速かつ容易にアクセスできる、データを記憶する便利な手段である。面積当たりでは高価であり、それゆえサイズが限定されるが、しかしながら、関連する値が記憶されていようといないと、忘れ易いキャッシュを使用してデータ項目を計算できるということは、適度なサイズのキャッシュおよび圧縮器を使用することが可能で、さらに正しく機能することを意味する。
【００２８】
キャッシュがデータストアである場合、データキャッシュの各ラインは、記憶するためにラインが割り当てられているデータオブジェクトを識別するための識別値を有する。
【００２９】
いくつかの実施形態では、該データオブジェクトは、画像スクリーンにタイルの階層的な層を描くための画像コマンドのリストを備え、該データストアコントローラは、該データセクションのうちの１つの第１のデータ項目の受信に応じて、同一のデータオブジェクトからのデータセクションが、該データストアの中の記憶場所に記憶されているかどうかを判定し、同一のデータオブジェクトが、該データストアの中の記憶場所に記憶されていないと判定するのに応じて、同一のタイルだが異なる階層レベルからのデータオブジェクトを識別し、該受信されたデータセクションの中の少なくとも１つのデータ項目、および該記憶されたデータセクションの中の少なくとも１つの関連データ項目から、該デルタ値計算機で少なくとも１つのデルタ値を計算し、該関連データ項目の源を識別する指標とともに該デルタ値を出力するように構成される。
【００３０】
データストリームが階層的な画像表示用のデータを備える場合、デルタを形成するための関連する値は、同一のタイルの異なる階層的な層に由来することができる。これによって圧縮がもたらされるが、デルタ値を受信する時に、先行する層はいつも復元器で受信されているため、復元も可能となる。
【００３１】
本発明の第２の態様は、データ圧縮器によって出力される値を受信するための入力部と、該出力値を固定サイズのデータパケットに圧縮するように構成される書式設定回路であって、該データパケットは、複数の書式のうちの１つを有し、該書式のそれぞれは、該データパケット内の識別子ビットによって識別されている、書式設定回路と、該データパケットを出力するための出力部とを備え、該複数の書式のうちの１つは、大きすぎて該データパケットに記憶できない出力値の一部分を記憶することによって、データパケットの記憶容量を拡張するための拡張書式を備え、該書式設定回路は、大きすぎて該データパケットに記憶できない該出力値の受信に応答して、該データパケットと、該拡張書式を有する少なくとも１つのさらなるパケットとの間で該出力値を分割し、該データパケットおよび該少なくとも１つの拡張データパケットを該出力部で出力するようにデータフォーマッタを提供する。
【００３２】
いくつかのデータ圧縮器、特に本発明の第１の態様のデータ圧縮器は、特に効果的にいくつかのデータ項目を圧縮することができるが、一方でほかのデータ項目は、それほどには良く圧縮されず、実際には時に全く圧縮されない。このデータを送信するためにさらに書式設定する時、これらのデータ項目を表すデータのサイズが大きく異なる場合があるため、これを効率的に行うのは困難である可能性がある。異なる長さのデータパケットを使用する場合には、各データパケットの開始および終了がどこであるかを示すために、符号化が必要である。代替として、一定の長さのデータパケットを使用することもできるが、これにより、送信される任意のデータの長さが異なるために、データの圧縮が非効率的になる可能性がある。効率的に圧縮されたデータを送信する時、圧縮されていないデータを収容するのに十分な大きさのパケットは、多くの空の空間を有する。本発明は、パケットの長さ、または開始および終了を示すために、ビットを使用する必要がないように、一定のデータパケットの長さを提供することによって、この問題に対処する。これらのデータパケットは、いくつかの書式のうちの１つを有し、書式は識別子ビットによって識別される。書式のうちの１つは、データパケットの記憶容量が小さすぎて出力値を記憶できない場合、この値の一部分を１つ以上の拡張書式パケットに置くことができるような、拡張書式である。このようにして、１つ以上の圧縮されたデータ項目を記憶するのに適切なサイズを有するデータパケットを使用することができ、効率的に圧縮されていない大きな値を送信する必要がある場合には、大きな値もこれらの拡張データパケットを使用して送信することができる。
【００３３】
いくつかの実施形態では、該受信された値は、デルタ値を形成するように、デルタ圧縮器によって圧縮された少なくとも一部のデータを備え、該複数の書式は、続くパケットが、所定の値に対するデルタ値、または以前に受信されたデータ項目に関係するデータを備えるデルタ値を備えるかどうかを示すための指標値と、該デルタ値のうちの少なくとも１つの少なくとも一部分とを備える、第１の書式と、該デルタ値のうちの少なくとも１つの少なくとも一部分を備える、第２の書式と、大きすぎて該第２の書式に記憶できない、該少なくとも１つのデルタ値の一部分を記憶するための、該拡張書式とを含む。
【００３４】
本発明の第２の態様の実施形態は、本発明の第１の態様の圧縮器からのデータを書式設定するのに特に適している。従って、データ書式パケットは、他のデータ項目に関連するデルタ値、および所定の値の減算によって形成されるデルタ値を処理することができる。このようにして、本発明の第１の態様の圧縮器によって出力される圧縮データは、一定の長さのデータパケットで記憶することができ、かつ別のデータ項目に関連するデルタ値、または所定の値に関連するデルタ値のいずれかとして識別することができ、このようにして、圧縮データは後に復元器によって認識し、再生成することができる。
【００３５】
いくつかの実施形態では、該第１の書式用の該指標値は、以前に受信したデータ項目のどれに関して前記デルタ値が計算されたのかという指標を提供する。
【００３６】
いくつかの実施形態では、該書式のそれぞれは、該指標値を記憶するための専用に設けられた指標ビットと、少なくとも１つのデータフィールドを記憶するための専用に設けられたビットとを備え、受信された該値は、該少なくとも１つのデータフィールドのうちの１つに対するデータをそれぞれ備える。
【００３７】
書式は、特定の書式およびそれから少なくとも１つのデータフィールドを示す、指標ビットを備える。デルタ値の少なくとも一部分を記憶するために使用される、各データフィールド。
【００３８】
いくつかの実施形態では、該データフォーマッタは、拡張される該データパケットの直前に、該拡張書式を有するデータパケットを出力するように構成される。
【００３９】
拡張書式パケットは、概して、拡張されるパケットより前に出力される。従って、いくつかの拡張パケットを出力することができ、別の書式パケットが受信されると、いかなる追加情報も必要とせずに、これらの拡張パケットはそのパケットに属することが理解される。従って、開始または終了の指標は必要ない。
【００４０】
本発明の第３の態様は、本発明の第２の態様に従うデータフォーマッタに連結された、本発明の第１の態様に従うデータ圧縮器を備えるシステムを備える。
【００４１】
本発明の第４の態様は、複数の値をそれぞれ記憶する固定サイズの複数のデータパケットを備える、圧縮されたデータのストリームを受信するための入力部であって、該データパケットは、複数の書式のうちの１つを有し、該複数の書式のそれぞれは、該データパケット内の識別子ビットによって識別され、該複数の書式のうちの１つは、大きすぎて関連データパケットに記憶できない少なくとも１つの出力値の一部分を記憶するための、拡張書式を備える、入力部と、該識別子ビットから該データパケットの該書式を識別し、該拡張パケットのうちの少なくとも１つに記憶されるデータを、該関連データパケットに記憶されるデータと組み合わせるための、データデフォーマッタと、該データを復元するためのデータ復元器とを備える、データ復元器を提供する。
【００４２】
本発明の第５の態様は、データ入力部で、複数のデータ項目を備えるデータのストリームを受信するステップと、データストアにアクセスし、受信されたデータ項目に関連するデータ項目が、該データストアに記憶されているかどうかを判定するステップと、記憶されている該関連データ項目に応じて、該データストアから該関連データ項目を読み出し、該受信されたデータ項目と該関連データ項目との差を備えるデルタ値を計算し、該デルタ値を出力するステップと、該データストアに記憶されていない該関連データ項目に応じて、該受信されたデータ項目と所定の値との差を備えるデルタ値を計算し、該デルタ値を出力するステップとを含み、記憶場所が該受信されたデータ項目に割り当てられているかどうかどうかを判定するために、該データストアにアクセスし、割り当てられていない場合、該データストア内の記憶場所を、該データ項目に割り当て、該記憶場所に記憶されているデータを排除および処分し、該割り当てられた記憶場所に該データ項目を記憶する、データを圧縮する方法を提供する。
【００４３】
本発明の第６の態様は、データ圧縮器によって出力される値を受信することと、該出力値を固定サイズのデータパケットにパックすることであって、該データパケットは、複数の書式のうちの１つを有し、該書式のそれぞれは、該データパケット内の識別子ビットによって識別され、かつ該データパケットを出力し、該複数の書式のうちの１つは、大きすぎて該データパケットに記憶できない、少なくとも１つの出力値の一部分を記憶することによって、データパケットの記憶容量を拡張するための拡張書式を備え、該書式設定回路は、大きすぎて該データパケットに記憶できない該少なくとも１つの出力値の受信に応答して、該データパケットと、該拡張書式を有する少なくとも１つのさらなるパケットとの間で該少なくとも１つの出力値を分割し、該データパケットおよび該少なくとも１つの拡張データパケットを該出力部で出力するように、圧縮されたデータを書式設定する方法を提供する。
【００４４】
本発明の第７の態様は、本発明の第６の態様に従う方法の前に、本発明の第５の態様に従う方法を含む、圧縮されたデータを圧縮し書式設定する方法を提供する。
【００４５】
本発明の第８の態様は、複数の値をそれぞれ記憶する固定サイズの複数のデータパケットを備える、圧縮されたデータのストリームを受信することであって、該データパケットは、複数の書式のうちの１つを有し、該複数の書式のそれぞれは、該データパケット内の識別子ビットによって識別され、該複数の書式のうちの１つは、大きすぎて関連データパケットに記憶できない少なくとも１つの出力値の一部分を記憶するための、拡張書式を備えることと、該識別子ビットから該データパケットの該書式を識別することと、該拡張パケットのうちの少なくとも１つに記憶されるデータを、該関連データパケットに記憶されるデータと組み合わせることと、該データを復元することとを含む、圧縮されたデータを復元する方法を提供する。
【００４６】
本発明の第９の態様は、本発明の第６、第７、または第８の態様に従う方法のステップを実行するよう、データプロセッサを制御するように、データプロセッサ上で動作される時に操作可能である、コンピュータプログラム製品を提供する。
【００４７】
本発明は、単に例としてのみ、添付の図面に図示するように、その実施形態を参照して、さらに説明されるであろう。
【図面の簡単な説明】
【００４８】
【図１】本発明の実施形態に従う、データ圧縮システムである。
【図２】本発明の実施形態に従う、データ復元システムである。
【図３】本発明の実施形態に従う、忘れ易いキャッシュである。
【図４】本発明の実施形態によって圧縮された画像コマンドである。
【図５】本発明の実施形態に従う、書式設定された圧縮データパケットの例である。
【図６】本発明の実施形態に従う、書式設定された圧縮データパケットの例である。
【図７】本発明の実施形態に従いデータを圧縮する方法を図示するフロー図である。
【図８】本発明の実施形態に従い、階層的なグラフィックの画像表示において画像データを圧縮する方法を図示するフロー図である。
【図９】本発明の実施形態に従い、データを書式設定する方法である。
【図１０】本発明の実施形態に従い、データを復元する方法である。
【発明を実施するための形態】
【００４９】
図１は、本発明の実施形態に従う、データ圧縮システム１０を示す。データ５のストリームはシステム１０への入力部で受信され、その後、キャッシュ２０内の記憶部を制御するキャッシュコントローラ２２を有する、忘れ易い２０に送信される。データ項目を受信すると、キャッシュコントローラ２２は、受信されたデータ項目に関連する値が、キャッシュ２０に記憶されているかどうかを確認し、記憶されている場合には、これをデルタ圧縮器３０に出力する。その後、キャッシュコントローラ２２は、キャッシュ２０内の記憶場所のいずれかが、この特定のデータ項目に割り当てられているかどうかを確認する。割り当てられている場合には、割り当てられた場所にデータ項目を記憶し、割り当てられていない場合には、データ項目に場所を割り当て、そこにデータ項目を記録し、場合によりそれを行う時に別のデータ項目に上書きする。ラウンドロビン方式などのいくつかの既知の手段で、上書きのためにデータ項目の選択を行うことができる。
【００５０】
データ項目は、並行してデルタ圧縮器３０およびキャッシュ２０に送信される。従って、デルタ圧縮器３０は、データ項目、および場合によって、キャッシュ２０に記憶されている場合には関連データ項目を受信する。デルタ圧縮器３０は、受信したデータ項目とその関連する値との差、または関連する値が記憶されていない場合には、受信したデータ項目とレジスタ３２に記憶されている所定の値との差を計算することによって、受信したデータ項目を圧縮する。レジスタ３２はいかなる値を記憶してもよい。レジスタは、この値に関して計算されたデルタ値が、実際には圧縮されていない受信データ項目である場合には、０を記憶してもよく、またはより一般的には、受信したデータ項目の統計的平均値を記憶する。従って、概して、受信したデータ項目から平均値を減算することによって、出力された値はより小さくなり、そのためより少ないビットを取る。その後、出力データはデータフォーマッタ４０に送信される。
【００５１】
データフォーマッタ４０は、受信した圧縮されたデータ項目を調べる、書式設定回路４２を有し、そのデータ項目を一定サイズのデータパケットにパックする。これらのデータパケットは、異なる書式を有する。いくつかの大きいがまれに変化するデータフィールドを符号化し、後続のデータ項目が絶対モードにあるかまたは相対モードにあるかを示すのに使用することができる、指標ビットを有する、汎用コマンドまたはパケットがある。この指標ビットは、次のパケットがレジスタ３２に記憶されている所定の値に関するデルタ値を含むこと、または次のパケットが関連データ項目に関するデルタ値を含むことを示すために使用される。デフォルト設定で、すべてのコマンドは先行したコマンドに関連しているが、汎用コマンドの指標ビットは、所定の一定の値に関連するよう、現在のコマンドの残りに再度バイアスをかけるように使用することができる。このようにして、フォーマッタは一定サイズのデータパケットで受信された、異なる形で圧縮されたデータ項目を出力することができる。これらの異なる形で圧縮された値の異なるサイズに対処することを可能にするために、データ項目のセット全体を符号化することが可能な基本パケット、および値が特にあまり良く圧縮されず、さらなるスペースを必要とする場合に、追加の値を記憶することが可能な、これらの基本パケットの拡張子も存在する。このようにして、データパケットのサイズは、最悪の圧縮されていないデータ項目を取るほど十分に大きい必要はないが、概して良く圧縮されたデータ項目を取るサイズとすることができ、拡張パケットを値の残りを送信するために使用することができる。これらの異なる書式については、図５でより詳細に説明する。
【００５２】
図２は、本発明の実施形態に従う復元システム５０を、図式形式で示す。一定サイズのデータパケット４５が圧縮システム１０から受信され、デフォーマッタ６０がパケット内の識別子から各パケットの書式を識別し、その後、拡張パケットをそれらが属するパケットと組み合わせ、圧縮されたデータ項目を再形成する。次いで、これらは元々圧縮システム１０に入っていたデータ５のストリームを生成するのに必要な計算を行う、復元器７０の中に置かれる。
【００５３】
上記の復元システムは、全種類のデータのストリームに使用できるが、特定のタイルを描くためのコマンドリストとして形成されるデータのタイルがある場合、画像データに対して特に有用である。従って、各タイルはその特定のタイルを描くためのコマンドのリストを有し、各コマンドは、複数のデータ項目が関連するタイルを識別する識別子とともに、複数の隣接するデータ項目として送信される。
【００５４】
図３は、このようなコマンドデータを記憶する、図１の忘れ易いキャッシュ２０をより詳細に示している。キャッシュの各ラインが、画像コマンドを記憶する。そのコマンドが関連するコマンドのタイルまたはリストを識別する、ストリームの中の各コマンドと関連付けられたデータオブジェクト／リストの識別子があり、これらはデータ項目と関連付けられたタグとして、キャッシュに記憶される。これらのリスト識別子は、以前のデータ項目が既にキャッシの中にあるかどうかを確認するために使用される。この例では、各リストまたはタイルは、タグの中の識別子によって識別される、割り当てられているラインを有する（図示せず）。従って、そのリストからの新しいコマンドが受信されると、適切なデルタ計算のために値が読み出され、その後、新しく受信された値が、その特定のリストに割り当てられているキャッシュのこのラインに記憶される。
【００５５】
これに関して、階層レベルはタグの一部として明確に記憶される可能性があるか、または、タイルの位置および階層レベルが、単一の識別子フィールドに数学的に組み合わされる可能性がある。階層レベルを分離したままにすることによって、同一のタイルだが異なる階層レベル用のリストの間でデルタを行うのがより容易になる。
【００５６】
図４は、このようなコマンドの性質をより詳細に示しており、従って、タイプフィールドがあってもよく、どのコマンドが最初に実行されるべきであるかについての情報を提供するタイムスタンプがあり、図にはインデックス１、インデックス２、およびインデックス３と印された異なるフィールドがあり、これらは異なる基本コマンドに関連し、基本コマンドは特定の基本要素を描くためのコマンドであってもよい。また、コマンドが関連するのはどれかを識別する識別子もある。図４はまた、デルタを形成するために、どのように異なるフィールドが組み合わせられているかも示している。この実施形態では、デルタは各コマンド内の２つのフィールドの間、および同一のタイルからのコマンドの対応するフィールドの間で形成される。コマンドの各リスト内では、対応するフィールドが類似の頂点インデックスを参照する可能性が高く、従ってコマンド内の対応するフィールドが類似するため、これはデータを圧縮する効率的な手段である。さらに、ともに描かれる基本要素は、類似のサイズで類似の画面座標となる可能性が高く、そのため、同一のリストに収まることが多い。また、基本データセットはしばしばソフトウェアツールによって最適化され、そのため、描画用にともに出された基本要素は、類似の頂点インデックス、および比較的まれに変化するグローバル状態を有する可能性が高い。
【００５７】
従って、示している例では、コマンド間圧縮およびコマンド内圧縮が使用されている。インデックス３用のデルタは、キャッシュ２０から検索された関連するコマンドのインデックス３から計算され、インデックス２用のデルタはインデックス３に対して計算され、インデックス１用のデルタはインデックス２から計算される。開始時、または記憶された関連する値がない場合には、インデックス３用のデルタは、図１のレジスタ３２に記憶されている所定の値に対して計算される。
【００５８】
図５は、データフォーマッタ３０によって出力される、データパケットのいくつかの書式の例を示している。データパケットは、それらがどの書式であるかを識別する識別子を有する。従って、この特定の例では、拡張識別子および基本識別子、ならびに汎用識別子があり、このパケットは、何らかのまれに変化するグローバル状態を設定し、続くパケットが所定の値に対するデルタ値である時を示すように使用される。
【００５９】
図６は、出力されている３つのデータ項目、フィールドＡ、フィールドＢ、およびフィールドＣとともに例示的な圧縮されたデータストリームを示している。フィールドＣは、あまり良く圧縮されていない一方、フィールドＡおよびフィールドＢは、それほど良くはないが適度に圧縮されている。３つすべての値が良く圧縮されていた場合には、単一の基本パケット８０に適合していたであろう。しかしながら、これはそうではなく、拡張パケット８２は、これらのフィールドの余分なビットを収容するために使用されている。これらの拡張パケットは、共通の拡張パケット書式を有し、従って、識別子ビットをほとんど必要としない。拡張パケットが最初に受信され、基本要素を受信すると、値が１つに組み合わされる。
【００６０】
従って、この可変長の符号化法では、同時に複数のデータフィールドの可変長データ項目を符号化するように、少数の固定長圧縮パケットを使用する。具体的には、本発明の実施形態では、各基本要素を１９８ビットにまで符号化するために、３２ビットパケットの４つのタイプを使用する。異なる書式は、何らかのまれに変化するグローバル状態を設定し、圧縮器の中のキャッシュの忘れ易さ度を操作するように、復元器のデルタ値を任意選択的にリセットすることを可能にする汎用書式を含み、すなわち、直後に続くパケットのデルタが、関連するデルタであるかどうか、または完全値に関するデルタであるかどうかを識別することができる。
【００６１】
また、ほとんど変化しない幅広のデータ項目の上位ビットを供給する、特殊用途書式（図示せず）もあり、圧縮された値が十分小さい場合には、単一のコマンドの中の基本要素全体を符号化することができる基本書式が存在する。
【００６２】
また、基本書式のデータフィールドすべての範囲を拡張するように使用される、基本拡張書式もある。
【００６３】
汎用書式および特殊用途書式は非常にまれに使用されるが、それらによって非常に幅広のデータ項目の効率的な設定が可能となり、また、デルタ圧縮を恣意的に流れの中ほどでリセットすることを可能にする。
【００６４】
基本要素および基本拡張書式は、データストリームの最も頻繁に変化する部分を、効率的に符号化する新規の手段を提供する。書式内の各フィールドに割り当てられたビット数は固定されているが、必ずしも利用可能なビットの均等な分割ではない。ビットの正確な配分は、いくつかのテストデータセットの統計的分析によって判定される。
【００６５】
圧縮中、デルタ値が計算され、すべてのフィールドを符号化するのに必要なビットの最小数が判定される。フィールドのいずれかが、単一の基本書式で表すことができない場合、各フィールドのできるだけ多くのビットが、その後出力される拡張書式の中に置かれる。デルタ値の残りのビットは、出力されたビットの数によって右へ移動し、その後、残りの値すべてが次いで出力される基本コマンド書式に適合するまで、プロセスが繰り返される。
【００６６】
この過程によって、デルタフィールドすべての可変長のデルタ値は、単一の基本書式に優先するこれらの拡張書式のどれにも細分化されないか、または１つ以上に細分化される。最上位ビットを最初に出力することによって、これらの拡張書式用のシーケンス終了フラグを符号化するか、または第４のコマンドを構成する拡張書式の数を特定するか、いずれかを行う必要性が取り除かれる。これによってメモリの帯域幅、すなわち電力を節約し、圧縮器および復元器の両方で非常に単純なハードウェアが許容される。
【００６７】
リスト識別子は圧縮されたコマンドでは出力されず、むしろフォーマッタがコマンドリストを異なるメモリアドレス領域に分け、それによってリスト識別子を圧縮する必要が避けられることには留意すべきである。
【００６８】
図７は、本発明の実施形態に従い、データを圧縮する方法を図示するフロー図を示す。データストリームはデータ圧縮器で受信され、いくつかのデータ項目を含む各データセクションが順番に考慮される。データセクション内の異なるデータ項目間のデルタ値が計算され、同一のデータオブジェクトからのデータセクションがデータストアに記憶されているかどうかが判定される。記憶されている場合、記憶されているデータ項目のうちの少なくとも１つと、受信したデータセクションの中の対応するデータ項目との間のデルタ値が計算される。その後、受信したデータセクションは、同一のデータオブジェクトに対するデータセクションが現在記憶されている場所の中のデータストアに記憶される。この記憶場所は既にそのデータオブジェクトに割り当てられており、従って、このデータセクションに対して正しく割り当てられている。さらに、このデータオブジェクト用のデータ項目が、同一のデータオブジェクトからデータセクション用のデルタ値を計算するために必要な場合、この新しく記憶されるセクションは必要なデータ項目を含む。
【００６９】
同一データオブジェクトからのデータセクションが、データストアに記憶されていなかった場合、デルタ値は、データセクションの中のデータ項目のうちの少なくとも１つと、記憶されている定数との間で計算される。このステップは、データストアが以前に受信したデータ項目のすべてを記憶しないようにすることができる。概して、記憶された定数でデルタ値を計算することによって、値の効率的な圧縮が提供されるが、すべての受信されたデータ項目を記憶することを必要とせずに、デルタ値をいつでも計算することができることを意味しない。その後、受信したデータセクションは、データストアの記憶場所に記憶される。その特定のデータオブジェクトに割り当てられている記憶場所がないため、データストアに既に記憶されているデータセクションのうちの１つを上書きし、その後、この記憶場所がこの新しいデータオブジェクトに割り当てられている。どのデータセクションを上書きすべきかを選択する時、キャッシュコントローラは、どれがデータストアに記憶された最も古いデータセクションかを判定するなどの、いくつかの既知のルーティンのうちの１つを使用する。
【００７０】
フロー図では、ステップがこの特定の順序で行われるように示しているが、データセクション内のデルタ値は、データセクション間のまたは定数に関するデルタ値の後に計算することができるため、ステップは異なる順序で行うことができることには留意するべきである。
【００７１】
図８は、階層的画像表示用のデータを圧縮する方法を図示する、フロー図を示す。タイルの一部分を描くための画像コマンドの形態であるデータセクションが、データストリームで受信される。受信したデータ項目のうちの少なくとも２つの間のデルタ値が計算され、同一のデータオブジェクトおよび同一のデータ階層からのデータセクションが、データストアに記憶されているかどうかが判定される。言い換えると、コマンドの同一リストおよび画像タイルの同一レベルからの別のコマンドがあるかどうかを判定する。別のコマンドがある場合、記憶されたデータ項目と、受信したデータセクションの中の対応するデータ項目との間で、デルタ値が計算される。記憶されている同一レベルおよびタイルからのデータセクションがない場合、同一タイルだが異なる階層レベルからのデータセクションがあるかどうかが判定される。データセクションがある場合、この記憶されたセクションからデルタ値が計算される。同一タイルだが異なる階層レベルからの対応するデータ項目間のデルタ値を計算することで、概して良い圧縮が提供され、デルタを形成することができる以前の値を発見する可能性が増加することが分かっている。しかしながら、何らかの指標は、別の階層レベルに関係することを示す圧縮された値で、出力される必要がある。そのタイルに対してデータストアに記憶されているコマンドが全くない場合、受信したデータ項目と記憶されている定数との間でデルタ値が計算され、受信したコマンドはある既知の方法で選択されるデータストアの中の記憶場所に記憶される。同一のデータ階層レベルのタイルからのコマンドが、データストアに存在した場合、このコマンドは新しく受信したコマンドによって上書きされる。異なるデータ階層レベルのタイルからのコマンドが、データストアに存在した場合、デルタが計算されると、スペースまたは最近には割り当てられていない多くのラインがあれば、１本のラインがこのコマンドに割り当てられている。
【００７２】
図７に関しては、方法のステップは、これが適切な場合、異なる順序で行うことができる。
【００７３】
図９は、本発明の実施形態に従い、圧縮されたデータをデータパケットに書式設定する方法を図示するフロー図を示している。圧縮された値が受信され、値が別のデータ項目に関するデルタ値であるかどうかが判定される。デルタ値でない場合、デルタ値が定数に対して形成されることをシステムに示し、受信した圧縮値を含むように、汎用パケットが使用され、この値および指標はこの汎用パケットにパックされ、汎用パケットの中に十分なスペースがない場合、汎用拡張パケットにもパックされる。その後、形状に関係する他のデルタ値が基本要素内にパックされ、必要な場合には拡張パケットが基本要素にパックされる。これらのデルタ値は、他のデータ値に関係するデルタ値であってもよく、またはそれらのいくつかは、定数に関係する絶対値であることができ、後者の場合、汎用パケットの指標がこれを示す。その後、パケットは汎用パケット、汎用パケットの拡張子（拡張が必要な場合）、基本パケットの拡張子（拡張が必要な場合）、およびその形状のためのコマンドバンドルの最後を示す基本パケットとして出力される。
【００７４】
値が別のデータ値に関して形成されたデルタ値である場合、これらの値が基本データパケットに適合するかどうかが判定される。適合する場合、値はこの基本データパケットにパックされ出力される。適合しない場合、値は、少なくとも１つの基本データパケットの拡張子および基本データパケット、ならびに拡張パケットにパックされ、その後基本データパケットが出力される。基本パケットの出力は、コマンドバンドル用のデータの最後を示す。さらに、その後、受信される値が考慮される。
【００７５】
従って、汎用パケットは、デルタ値が定数に関して形成されるという指標を提供し、このようなパケットの不在の時には、すべてのデルタ値は、別のデータ値に関するデルタ値であると推定される。
【００７６】
図１０は、本発明の実施形態に従い、データを復元する方法を図示するフロー図を示す。最初に、固定サイズの複数のデータパケットを備える、圧縮されたデータのストリームが受信される。各パケットが分析され、パケットの書式が、パケット内にあった書式の識別子から識別され、その後、何のデータ項目がデータパケットに記憶されているかが正確に判定される。データ項目の異なる部分が複数のパケットに記憶されてもよく、これらは圧縮されたデータ項目を形成するように組み合わされる。その後、他のデルタ値または絶対値のどちらが関連しているかが判定され、次いで、元のデータ項目を生成するように復元される。
【００７７】
本発明の種々のさらなる態様および機能は、付属の請求項に定義されている。前に記載した本明細書の中の実施形態に対して、本発明の範囲から逸脱することなく、種々の変形を行うことができる。
【００７８】
本発明の例示的実施形態が、添付の図面を参照して、本明細書に詳細に記載されているが、本発明は、それらの正確な実施形態に限定されず、添付の特許請求の範囲によって定義される本発明の精神および範囲から逸脱することなく、当業者によってそこで種々の変更および変形が達成される可能性があることが理解されるものとする。
【符号の説明】
【００７９】
５  データ
１０  データ圧縮システム
２０  キャッシュ
２２  キャッシュコントローラ
３０  デルタ圧縮器
３２  レジスタ
４０  データフォーマッタ
４２  書式設定回路
４５  データパケット
【図１】
0005781867.tif 000002
【図２】
0005781867.tif 000003
【図３】
0005781867.tif 000004
【図４】
0005781867.tif 000005
【図５】
0005781867.tif 000006
【図６】
0005781867.tif 000007
【図７】
0005781867.tif 000008
【図８】
0005781867.tif 000009
【図９】
0005781867.tif 000010
【図１０】
0005781867.tif 000011