JP4978025B2 - ポインタの圧縮・伸張方法、これを実行するプログラム、及び、これを用いた計算機システム - Google Patents
ポインタの圧縮・伸張方法、これを実行するプログラム、及び、これを用いた計算機システム Download PDFInfo
- Publication number
- JP4978025B2 JP4978025B2 JP2006047665A JP2006047665A JP4978025B2 JP 4978025 B2 JP4978025 B2 JP 4978025B2 JP 2006047665 A JP2006047665 A JP 2006047665A JP 2006047665 A JP2006047665 A JP 2006047665A JP 4978025 B2 JP4978025 B2 JP 4978025B2
- Authority
- JP
- Japan
- Prior art keywords
- pointer
- compression
- decompression
- pointers
- format
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Memory System (AREA)
Description
アドレス桁数を32bitから64bitへ拡張することにより、プログラムが参照可能なメモリ空間は、最大4GB(GigaByte=10の9乗バイト)から最大16EB(ExaByte=10の18乗バイト)へ増大する。しかし一般的な顧客の用途では、数GBにも満たないメモリ空間しか必要としないことが多く、現在の計算機システムでは未だ32bitのアドレス桁数で十分であることが多い。
また、Javaその他のオブジェクト指向プログラムでは、オブジェクトと呼ばれるデータ構造の中に、ポインタが頻繁に出現する。このためポインタ拡大の影響が特に大きく、メモリが有限であることから、ポインタを含むデータ構造の一部を格納しきれない事態が生じる。
一般的なマイクロプロセッサは、主記憶メモリを参照するために、数百サイクルに相当する長い時間を要する。これを避けるため、主記憶メモリとレジスタの間に、キャッシュと呼ばれる小容量かつ高速アクセスが可能なメモリを備えている。プロセッサは、アクセスしたデータのコピーをキャッシュ上に保持する機能を備えており、キャッシュ上に参照対象のデータが存在する場合には、そのデータ参照を高速に行なうことが可能となる。ただし、キャッシュ容量は有限であり、データ量が増加すると、キャッシュに格納可能なデータの個数は減少する。
なお、例えば、オブジェクトの配置アドレスが8の倍数である場合には、オフセット値を8倍するなどの工夫によって、より大きなヒープメモリ領域を対象とすることができる。このように、ポインタを64bitから32bitに圧縮することにより、ポインタを含むデータ構造のサイズを削減することができる。これは前述のようにキャッシュに格納可能なデータ構造の総量を増加させることとなり、キャッシュヒット率の向上に繋がる。
圧縮形式から非圧縮形式への変換は、圧縮形式のポインタ値にベースアドレスを加算して為される。また、非圧縮形式から圧縮形式への変換は、非圧縮形式のオブジェクトのアドレスからベースアドレスを減算して為される。ただし、Javaを始めとして殆どのプログラミング言語では、有効なデータを指定しないポインタ値として、nullと呼ばれる特殊な値を用意していることに留意する必要がある。図3に示すように、null306の値としては0を利用することが一般的である。オブジェクト303のアドレスを、ベースアドレス304からのオフセット305で表現する場合、そのままではnull値を表現することができない。よって、ポインタ値がnullの場合を特別に扱う必要がある。
501はポインタ圧縮の対象とするオブジェクト定義の例である。ここで、オブジェクト定義中left、right、name、valueは他のオブジェクトを指定するポインタであるものとする。オブジェクトの属性等を格納するヘッダが2ワードを占めるものと仮定すると、64bitプロセッサにおいて非圧縮形式のポインタ表現を利用した場合には、502に示すように対象オブジェクトは10ワードのメモリ領域を占める。一方、圧縮形式のポインタ表現を利用した場合には、503に示すように6ワードの占有となり、使用メモリ量が4ワード削減される。
本発明を適用した言語処理系は、外部記憶装置203に格納される。言語処理系の実行は、CPU201によって、外部記憶装置203から主記憶メモリ202へ言語処理系のプログラムが読み出され、CPU201によって実行されることにより為される。
CPU201は、主記憶メモリ202へのアクセスを高速化するために、小容量かつ高速なキャッシュメモリ206を備えている。CPU201が計算処理を行う場合は、データをレジスタ205へロードし、演算器204で演算を行う。レジスタ205へデータのロードを行う際には、まず、キャッシュメモリ206に当該データが存在するか否かを確認し、存在する場合はそれを利用する。存在しない場合は、主記憶メモリ202からデータを読み出してレジスタ205へロードすると共に、キャッシュ206へも格納しておく。
本発明を適用した言語処理系101は、ソースプログラム105を入力とし、変換済みプログラム107を出力する。言語処理系101は、ポインタ参照頻度解析部102、データ構造変換処理部103、コード生成処理部104から構成される。言語処理系101を構成する各部は、中間語106を参照する。また、実施形態によっては、ポインタ参照頻度解析部102は、ポインタ参照頻度に関するプロファイルデータ108を参照する。
プロファイルデータ108(図1)は、クラス名601、フィールド名602、参照頻度603の3つのフィールドからなるエントリより構成される。なお、ここでは、プログラム中の全てのフィールド参照回数に対する個々のフィールドの参照回数の割合を参照頻度と呼ぶものとする。図6の例では、フィールドright、および、leftの参照頻度が高く、value、nameの参照頻度が低いことが分る。よって、right、および、leftを非圧縮対象とし、value、nameを圧縮対象とすることで、ポインタ参照の際の圧縮・非圧縮変換のオーバヘッドを削減しながらメモリ使用量を削減できる。この結果を図7に示す。
図8は、ポインタ参照頻度解析部102の処理フローの実施例を示したものである。この処理では、プロファイルデータ108を参照してフィールド参照を圧縮対象とするか否かの分類を行う。処理801で処理を開始し、処理802においてプログラム中で定義されるデータ構造の集合を変数Sとする。次に、判定処理803に制御を移し、変数Sが空集合か否かを確認する。空集合である場合は処理すべきデータ構造の定義が存在しないため、処理809へ制御を移して処理を終了する。
続いて判定処理805によって変数Rが空集合か否かを確認する。変数Rが空集合である場合は、処理すべきフィールドが存在しないので、処理803へ制御を移して次のデータ構造を処理する。変数Rが空集合でない場合は、処理806へ制御を移し、参照頻度の情報の集合Rから要素を1つ取り出し変数rへ格納すると共に、参照頻度の情報を有する変数rの表すフィールド名に対応する参照頻度を変数fに格納する。
以上の処理により、参照頻度の低いポインタの値のみを圧縮対象として選別することができる。ここで、あるポインタが圧縮対象か否かの情報は、図1の中間語106又はこれに付随した情報として記憶しておく。
変数Sが空集合でない場合は、処理904に制御を移し、変数Sからデータ構造の定義を表す要素を1つ取り出して変数sに格納すると共に、データ構造の変数sの中で定義されるポインタフィールドの集合を変数Fとする。続いて、判定処理905へ制御を移し、変数Fが空集合か否かを確認する。Fが空集合である場合は処理すべきポインタフィールドが存在しないため、処理903へ制御を移して次のデータ構造の定義の処理を行う。Fが空集合でない場合は、処理906へ制御を移し、変数Fからポインタフィールドを1つ取り出して、変数fに格納する。ポインタ参照頻度解析部102において、フィールドfが圧縮対象と判定されたか否かを、判定処理907によって確認し、圧縮対象である場合は処理908によってフィールドfの領域長をPSとし、圧縮対象でない場合は、処理909によってフィールドfの領域長をPLとする。
その後、処理905へ制御を移し、次のフィールドの処理を継続する。以上の処理により、データ構造のメモリ割り当て時にポインタフィールドの占める領域が決定される。
コード生成処理部104は、処理1001によって処理を開始し、処理1002において出力対象命令列を変数Iとする。次に、判定処理1003において、変数Iが空か否かを確認する。空である場合は、処理すべき命令が存在しないため、処理1010に制御を移して処理を完了する。変数Iが空でない場合は、処理1004に制御を移し、変数Iから要素を1つ取り出して変数iに格納する。
次に、判定処理1005によって変数iがポインタフィールドを参照する命令か否かを確認する。ポインタフィールド参照命令でない場合は、処理1006によって従来の命令生成処理を変数iに適用し、処理1003に制御を移して次の命令の処理を行う。判定処理1005で、変数iがポインタフィールド参照命令であった場合、続いて判定処理1007によって、iの参照先が圧縮対象であるか否かを判定する。iの参照先が圧縮対象でない場合は処理1008で通常のポインタ参照コードを生成し、圧縮対象である場合は処理1009で圧縮・伸長処理を付加したポインタ参照コードを生成する。
続いて処理1003に制御を移して次の命令の処理を行う。以上の処理によって、ポインタを圧縮形式と非圧縮形式に分類し、参照頻度の高いフィールドについては非圧縮形式として扱うことにより、ポインタ参照オーバヘッドを削減すると共に、全体のデータ量を削減することが可能となる。
処理1101で処理を開始し、処理1102においてプログラム中のループ集合を変数Lとする。続いて判定処理1103によって変数Lが空集合か否かを判定する。変数Lが空集合であった場合、処理対象のループが存在しないので、処理1107に制御を移して処理を終了する。変数Lが空集合でなかった場合は、処理1104に制御を移して、ループ集合Lから要素を1つ取り出して変数lとする。また、変数lの予測ループ長を変数nとし、変数lの中のフィールド参照集合を変数Rとする。
変数Rが空集合でなく、かつ、nが閾値以上の場合は、処理1106に制御を移す。処理1106では、変数R(フィールド集合)から要素を取り出して変数rに格納し、フィールドrを圧縮対象とする。続いて処理1105に制御を移して次の変数R(フィールド参照集合)の判定処理を行う。
一方、インタープリタでは、1つのコードで複数のフィールドの参照を司る必要があるため、フィールドの形式を動的に判定する必要がある(後述)。
図12は、フィールド情報1203の表を用いて、ポインタの圧縮形式を判定する場合の、データ構造を表わした図である。フィールド情報1203は、クラスの定義とポインタ参照頻度解析部102(図1)の判定結果に基づき、求められる。オブジェクト1201は、プログラムのデータ構造を表しており、その所属するクラスに関する情報1202へのポインタ又は類似の情報を持っている。クラスに関する情報1202を経由して、フィールド情報1203を参照することが可能である。ここで、フィールド情報1203は、フィールド名称1204、フィールド位置1205、フィールドが圧縮されていることを意味するフラグ1206から構成される。図12のフィールド情報1203からオブジェクト1201の中の位置2に存在するフィールドは非圧縮形式、位置6に存在するフィールドは圧縮形式であることがわかる。
フィールド情報1203の作成処理は、処理1701で処理を開始し、処理1702においてフィールド情報の作成対象であるクラスの中で定義されるフィールドの集合を、変数Fとする。また、変数Tを空のフィールド情報に初期化する。続いて、判定処理1703によって、求めたフィールド集合Fが空集合か否かを判定する。空集合であれば、処理すべきフィールドが存在しないので、処理1705に制御を移して、変数Tのフィールド情報を対象クラスのフィールド情報とする。判定処理1703で集合Fが空集合でない場合は、処理1704に制御を移し、集合Fからフィールドを1つ取り出して変数fへ格納する。また、fの名称、位置、圧縮対象か否かを、それぞれ、変数n, p, cへ格納し、変数n, p, cの組をフィールド情報Tへ追加する。続いて、処理1703へ制御を移して次のフィールドの処理を行う。
図13に、メモリ上のデータ構造に含まれるポインタの圧縮表現を、データ表現形式別に例示する。複数バイトデータの内部バイトの配置によって (a)のbig-endian形式と、(b)のlittle-endian形式がある。big-endian形式では、データの最上位ビット(MSB: Most Significant Bit)が低位アドレス、最下位ビット(LSB: Least Significant Bit)が高位アドレスに保存される。逆に、little-endian形式では、データのMSBが高位アドレス、LSBが低位アドレスに保存される。圧縮形式(1301)と非圧縮形式(1302)のポインタは、どちらも低位アドレスを占めるので、低位アドレスに識別用の情報を持たせるようにする。
よって、little-endian形式のポインタ表現の場合では、圧縮形式のポインタのLSB値を1、非圧縮形式のポインタのLSBの値を0と決めておくと都合が良い。
よって、(i) ヒープメモリの割り当てアドレスのMSBが0の場合、0が非圧縮形式、1が圧縮形式のポインタを表すものとし、(ii) ヒープメモリの割り当てアドレスのMSBが1の場合、1が非圧縮形式、0が圧縮形式のポインタを表すものとすれば好都合である。(ii)の場合において、非圧縮形式のポインタと、ヒープメモリの先頭を指定するベースアドレスからのオフセットが一致しているため、アドレス計算のための余分なオーバヘッドは生じない。
詳述すれば、ヒープ先頭を示すbase 1404のアドレスが、16進表記で0x0000000080000000とする。また、オブジェクト1403のアドレスを0x0000000080102030とする。この時、ヒープ先頭からオブジェクト1403までのオフセットは、32bit表現で0x00102030と表され、圧縮表現であることを示すためにMSBを1とすると圧縮ポインタ表現は0x80102030=0x80000000+0x00102030となる。
また、上記virtual_base 1401の値は、base 1404から0x80000000だけ低位のアドレス、すなわち、0x0000000080000000-0x80000000=0x0000000000000000となる。よって、virtual_baseの値とMSBを1とした圧縮形式ポインタを加算することで、MSBを1とすることによる値の増加分(0x80000000)が補正され、オブジェクト1404のポインタ値0x0000000080102030を得ることができる。
なお図13の例では、圧縮表現のポインタが非圧縮表現のポインタの4バイト目以降に配置される場合がある。このときは、圧縮表現のMSBと非圧縮表現のMSBが重ならない(整列しない)ため、MSBによるポインタ形式の識別はできないこととなる。しかし通常のポインタは、そのデータサイズの倍数のアドレスに整列して配置されるため、ポインタのアドレスが、非圧縮表現で整列して配置されたアドレスと異なることをもって、圧縮表現であることを知ることができる。
圧縮形式識別処理は、処理1501で処理を開始し、続いて処理1502で判定対象のポインタのフィールドから、アドレスを変数pに、pの指定するアドレスのバイト値を変数bに、それぞれ格納する。次に判定処理1503で、対象となる計算機システムがbig-endian形式を使用しているか否かを判定する。
big-endian形式を使用している場合は、処理1504に制御を移し、変数bのMSB値を変数fとし、ヒープメモリ領域の割り当てられたアドレス空間のMSBの値を変数hとする。次に判定処理1505によって、fがhに等しいか否かを判定する。等しくない場合は圧縮形式のポインタであるので、処理1506に制御を移し、圧縮形式であると判定する。等しい場合は、処理1507に制御を移し、非圧縮形式であると判定する。その後、処理1510に制御を移して処理を完了する。
判定処理1503で対象となる計算機システムがbig-endian形式でなかった場合は、処理1508に制御を移して変数bのLSBを変数fとする。続いてfの値が0か否かを判定処理1509で判定する。fの値が0でなければ処理1506に制御を移してポインタを圧縮形式と判定し、fの値が0であれば処理1507に制御を移してポインタを非圧縮形式と判定する。その後、処理1510に制御を移して処理を終了する。
以上により、ポインタの指定先の形式を動的に判定することができる。
この変換処理は、処理1601で処理を開始し、処理1602で対象とする圧縮ポインタ値を変数cとする。続いて、判定処理1603で対象となる計算機システムがbig-endian形式が否かを判定し、big-endian形式の場合は、処理1604に制御を移して、変数cに仮想ベースの値を加えた値を、求めるデータ構造におけるポインタの実アドレスとして変数pとし、処理1606に制御を移して処理を完了する。前述のように、仮想ベース1401(図14)の値は、圧縮ポインタ1301(図13)のMSBを1に設定することによって増加する値(0x80000000)だけ、ヒープメモリ1402の先頭から下位アドレス方向へずらしたアドレスに設定されている。よって、仮想ベース1401と圧縮ポインタ1301の値を加算することにより、MSBによる増分が打ち消され、オブジェクト1403の実アドレスが求められる。また、対象となる計算機システムがbig-endian形式でない場合は、変数c(1301)のLSBをクリアした値に、ヒープメモリ1402のベースアドレス1404の値を加えた値を、求めるデータ構造におけるオブジェクトをポインタが示す実アドレスとして変数pとし、処理1606に制御を移して処理を完了する。
以上により、圧縮形式のポインタ値からデータ構造の実アドレスを求めることができる。
103…データ構造変換処理部 104…コード生成処理部
105…ソースプログラム 106…中間語
107…変換済プログラム 108…プロファイルデータ
Claims (13)
- ポインタによるデータ構造の参照機能を備えたプログラム又は計算機システムのポインタの圧縮・伸張方法において、
当該データ構造に含まれるポインタを、頻繁に参照されるポインタと、それ以外のポインタに分類し、
当該それ以外のポインタのみを圧縮し、参照の際に伸張する、ポインタの圧縮・伸張方法。 - 請求項1記載のポインタの圧縮・伸張方法において、前記分類は、予め作成されたプロファイルデータを用いて為される、ポインタの圧縮・伸張方法。
- 請求項1記載のポインタの圧縮・伸張方法において、前記伸張を行うか否かの制御は、前記ポインタ自体に格納された、ポインタ形式を判定するための情報を参照することによって為される、ポインタの圧縮・伸張方法。
- 請求項1記載のポインタの圧縮・伸張方法において、
前記頻繁に参照されるポインタ以外のポインタの値を、ベースアドレスからのオフセット値に指定する、ポインタの圧縮・伸張方法。 - 請求項1記載のポインタの圧縮・伸張方法において、前記分類は、前記計算機システムが、プログラムを解析することによって為され、
前記頻繁に参照されるポインタ以外のポインタが参照されるに際し、前記計算機システムが、当該ポインタの伸長を行うコードを生成する、ポインタの圧縮・伸張方法。 - 請求項3乃至5の何れか一項に記載のポインタの圧縮・伸張方法において、前記伸張を行うか否かの制御は、予め作成されたフィールド情報を用いて為される、ポインタの圧縮・伸張方法。
- 請求項3乃至5の何れか一項に記載のポインタの圧縮・伸張方法において、
前記プログラム又は計算機システムはbig-endian形式のデータ表現を使用するものであり、
前記ポインタのMSBにおいて、当該ポインタが圧縮形式である旨のビットが有れば、前記伸張が為される、ポインタの圧縮・伸張方法。 - 請求項3乃至5の何れか一項に記載のポインタの圧縮・伸張方法において、
前記プログラム又は計算機システムはlittle-endian形式のデータ表現を使用するものであり、
前記ポインタのLSBにおいて、当該ポインタが圧縮形式である旨のビットが有れば、前記伸張が為される、ポインタの圧縮・伸張方法。 - 請求項7記載のポインタの圧縮・伸張方法において、
前記伸張に際し、圧縮形式のポインタを非圧縮形式に変換するために用いるベースアドレスを、MSBの値だけシフトさせる、ポインタの圧縮・伸張方法。 - ポインタによるデータ構造の参照を実行する計算機に、
当該データ構造に含まれるポインタを、頻繁に参照されるポインタと、それ以外のポインタに分類させる手順と、
当該それ以外のポインタのみを圧縮させ、参照の際に伸張させる手順と、
を実行させるポインタの圧縮・伸張プログラム。 - 請求項10記載のポインタの圧縮・伸張プログラムにおいて、前記分類は、前記計算機に、プログラムを解析させることによって実行させ、
前記頻繁に参照されるポインタ以外のポインタを参照させるに際し、当該ポインタの伸長を行わせるコードを生成させることを実行させる、ポインタの圧縮・伸張プログラム。 - ポインタによるデータ構造の参照機能を備えた計算機システムであって、
当該データ構造に含まれるポインタを、頻繁に参照されるポインタと、それ以外のポインタに分類し、
当該それ以外のポインタのみを圧縮し、参照の際に伸張する機能を有する、ポインタの圧縮・伸張機能を備えた計算機システム。 - 請求項12記載のポインタの圧縮・伸張機能を備えた計算機システムにおいて、前記分類は、当該計算機システムが、プログラムを解析することによって為され、
前記頻繁に参照されるポインタ以外のポインタが参照されるに際し、前記計算機システムが、当該ポインタの伸長を行うコードを生成する機能を有する、ポインタの圧縮・伸張機能を備えた計算機システム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2006047665A JP4978025B2 (ja) | 2006-02-24 | 2006-02-24 | ポインタの圧縮・伸張方法、これを実行するプログラム、及び、これを用いた計算機システム |
| US11/709,297 US7539695B2 (en) | 2006-02-24 | 2007-02-22 | Pointer compression/expansion method, a program to execute the method and a computer system using the program |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2006047665A JP4978025B2 (ja) | 2006-02-24 | 2006-02-24 | ポインタの圧縮・伸張方法、これを実行するプログラム、及び、これを用いた計算機システム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2007226583A JP2007226583A (ja) | 2007-09-06 |
| JP4978025B2 true JP4978025B2 (ja) | 2012-07-18 |
Family
ID=38548341
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2006047665A Expired - Fee Related JP4978025B2 (ja) | 2006-02-24 | 2006-02-24 | ポインタの圧縮・伸張方法、これを実行するプログラム、及び、これを用いた計算機システム |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US7539695B2 (ja) |
| JP (1) | JP4978025B2 (ja) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8688654B2 (en) | 2009-10-06 | 2014-04-01 | International Business Machines Corporation | Data compression algorithm selection and tiering |
| US20130113809A1 (en) * | 2011-11-07 | 2013-05-09 | Nvidia Corporation | Technique for inter-procedural memory address space optimization in gpu computing compiler |
| US9323774B2 (en) * | 2013-05-03 | 2016-04-26 | Nvidia Corporation | Compressed pointers for cell structures |
| US10620955B2 (en) | 2017-09-19 | 2020-04-14 | International Business Machines Corporation | Predicting a table of contents pointer value responsive to branching to a subroutine |
| US10705973B2 (en) * | 2017-09-19 | 2020-07-07 | International Business Machines Corporation | Initializing a data structure for use in predicting table of contents pointer values |
| US11061575B2 (en) | 2017-09-19 | 2021-07-13 | International Business Machines Corporation | Read-only table of contents register |
| US10896030B2 (en) | 2017-09-19 | 2021-01-19 | International Business Machines Corporation | Code generation relating to providing table of contents pointer values |
| US10725918B2 (en) | 2017-09-19 | 2020-07-28 | International Business Machines Corporation | Table of contents cache entry having a pointer for a range of addresses |
| US10884929B2 (en) | 2017-09-19 | 2021-01-05 | International Business Machines Corporation | Set table of contents (TOC) register instruction |
| CN112988379B (zh) * | 2021-02-03 | 2025-08-19 | 北京星网锐捷网络技术有限公司 | 程序运行方法、装置及设备 |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6298442A (ja) * | 1985-10-25 | 1987-05-07 | Hitachi Ltd | 情報処理装置における記憶管理方式 |
| US5321701A (en) * | 1990-12-06 | 1994-06-14 | Teradyne, Inc. | Method and apparatus for a minimal memory in-circuit digital tester |
| US5379036A (en) * | 1992-04-01 | 1995-01-03 | Storer; James A. | Method and apparatus for data compression |
| US5406279A (en) * | 1992-09-02 | 1995-04-11 | Cirrus Logic, Inc. | General purpose, hash-based technique for single-pass lossless data compression |
| US6204796B1 (en) * | 1994-07-01 | 2001-03-20 | Gemstar Development Corporation | Apparatus and methods for generating codes for controlling appliances from a remote controller |
| US6374250B2 (en) * | 1997-02-03 | 2002-04-16 | International Business Machines Corporation | System and method for differential compression of data from a plurality of binary sources |
| JPH1198143A (ja) * | 1997-09-17 | 1999-04-09 | Toshiba Corp | Atm中継装置 |
| EP1354411A1 (en) * | 2001-01-11 | 2003-10-22 | Koninklijke Philips Electronics N.V. | Data compression method with identifier of regressive string reference |
| US20040117778A1 (en) * | 2002-12-16 | 2004-06-17 | Sehr David C. | Optimization of software code using N-bit pointer conversion |
| US7305383B1 (en) * | 2004-06-10 | 2007-12-04 | Cisco Technology, Inc. | Processing system using bitmap array to compress deterministic finite automation state table allowing direct indexing |
| US20060288024A1 (en) * | 2005-04-28 | 2006-12-21 | Freescale Semiconductor Incorporated | Compressed representations of tries |
-
2006
- 2006-02-24 JP JP2006047665A patent/JP4978025B2/ja not_active Expired - Fee Related
-
2007
- 2007-02-22 US US11/709,297 patent/US7539695B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| US7539695B2 (en) | 2009-05-26 |
| US20070276794A1 (en) | 2007-11-29 |
| JP2007226583A (ja) | 2007-09-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7539695B2 (en) | Pointer compression/expansion method, a program to execute the method and a computer system using the program | |
| CN101533342B (zh) | 压缩指令格式 | |
| US6332172B1 (en) | Method and system for virtual memory compression in an embedded system | |
| US10007605B2 (en) | Hardware-based array compression | |
| EP1557760A2 (en) | Method and system for improving performance of java virtual machine | |
| JP2011209904A (ja) | 命令フェッチ装置、および、プロセッサ | |
| JP2002529849A (ja) | データ処理リソースを供給された内蔵システムにおいて実行可能な中間オブジェクトコードプログラムのためのデータ圧縮方法、および、この方法に対応しかつマルチアプリケーションを備えた内蔵システム | |
| JP2007234048A (ja) | コード圧縮技術の高速プロトタイピングを可能にするプログラムのコード圧縮方法、プログラムのコード圧縮システム | |
| JP2006526202A (ja) | コンピューティング環境のストレージをダイジェスト化するための方法、システム、およびコンピュータ・プログラム(メッセージ・ダイジェスト化命令の処理) | |
| CN103748550A (zh) | 用于存储熵编码指令序列及将其翻译成可执行形式的方法和设备 | |
| JP2021051727A (ja) | グラフアプリケーション内の圧縮されたリストに効率的にアクセスするための間接参照のロード及びストアへのisaサポートのシステム及び方法 | |
| JP2011209905A (ja) | 命令フェッチ装置、プロセッサ、および、プログラムカウンタ加算制御方法 | |
| CN1335561A (zh) | 扩展指令字折叠设备 | |
| JP2013214832A (ja) | 圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラム | |
| JPH1049369A (ja) | データ処理装置 | |
| JP4601665B2 (ja) | 条件付で実行可能モジュールを縮小するシステムおよび方法 | |
| JP4921310B2 (ja) | 命令ビット長削減方法 | |
| US7624390B2 (en) | Optimizing compiling of object oriented source code | |
| JP2007535241A5 (ja) | ||
| CN101084484B (zh) | 用于快速存取堆栈存储器的方法和系统 | |
| WO2021120713A1 (zh) | 一种数据处理方法、解码电路及处理器 | |
| CN100456227C (zh) | 用于管理数据的系统和方法 | |
| US7676651B2 (en) | Micro controller for decompressing and compressing variable length codes via a compressed code dictionary | |
| CN119473394A (zh) | 一种基于循环依赖分析的avx指令模拟执行优化方法 | |
| CN1477520A (zh) | 具有扩展指令的中央处理器 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20081003 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120104 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120302 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120321 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120403 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150427 Year of fee payment: 3 |
|
| LAPS | Cancellation because of no payment of annual fees |