JP2011150727A - Nベースタイプの演算式の最適化 - Google Patents
Nベースタイプの演算式の最適化 Download PDFInfo
- Publication number
- JP2011150727A JP2011150727A JP2011092259A JP2011092259A JP2011150727A JP 2011150727 A JP2011150727 A JP 2011150727A JP 2011092259 A JP2011092259 A JP 2011092259A JP 2011092259 A JP2011092259 A JP 2011092259A JP 2011150727 A JP2011150727 A JP 2011150727A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- base
- processor
- overflow
- operand
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】演算式最適化の方法は、第1のベースを有する第1のプロセッサのために形成された、演算子と少なくとも1つのオペランドとを含む第1の命令(80)を受け取る段階、全てのオペランドが潜在的な桁あふれ(82)を伴っていないか、又は、演算子が桁あふれに対して敏感でない場合、第1のベースよりも小さい第2のベースを有する第2のプロセッサのために最適化された第2の命令(88)に第1の命令(80)を変換する段階、及び、少なくとも1つのオペランドが桁あふれの可能性になっており、かつ、演算子が桁あふれに対して敏感な場合、桁あふれの源である第3の命令(86)をより広いベースに変換する段階を含む。
【選択図】図9
Description
本出願は、以下の特許に関連する:
スッサー及びシュウェーブによる「リソース限定型装置のためのオブジェクト志向命令セット」という名称の1999年2月2日出願の米国特許出願、及び
レビ及びシュウェーブによる「確実に配分されたバイトコード照合を有する仮想計算機」という名称の1997年4月15日出願の米国特許出願。
本発明は、コンピュータシステムに関する。より具体的には、本発明は、nベースタイプの演算式の最適化に関する。
int a、b;
a+b;
short a、b;
a+b;
byte a、b;
a+b;
iload a
iload b
iadd
Java(登録商標)と違って、いくつかの高級言語は、整数タイプ間の関係のみを規定し、各タイプのサイズは規定しない。例えば、「C」コンパイラの販売業者の1つは、byte、short、及び、intのタイプのビットサイズを、各々、8、16、及び、32ビットであると規定してもよい。しかし、別の「C」コンパイラの販売業者は、同じタイプのサイズを、各々、16、32、及び、64ビットであると規定するであろう。更に別のコンパイラは、そのビットサイズを、各々、16、32、及び、32ビットであると規定してもよい。全ての場合において、各タイプのサイズ間の関係は維持されるが(タイプbyteで表される値の数<タイプshortで表される値の数、タイプshortで表される値の数<タイプintで表される値の数)、各タイプを表すのに使用される実際のビット数は異なってもよい。しかし、Java(登録商標)のように、「C」は、特定の各コンパイラによって規定されるintタイプのサイズで算術演算を実行する。これには、より小さいベースタイプを有する値をタイプintまで広げることが必要である。
リソース限定型装置は、一般的なデスクトップコンピュータなどと比べた場合、一般的に、メモリ、及び/又は、計算能力又は速度が比較的制限されているものであると考えられている。一例として、他のリソース限定型装置には、セルラー電話機、境界用走査装置、野外用プログラム可能装置、携帯情報端末(PDA)、及び、ポケットベルや他の小型又は小さな衛星電波使用装置が含まれる。
従って、意味論的に同等な数学的表現をより少ない計算スタック空間を使用して実行することができるように、プログラム表現を変える必要性が存在する。更に、実行速度が増加するようにそのような変形を行う必要性が従来技術において存在する。
本発明は、コンピュータシステムに関する。より具体的には、本発明は、nベースタイプの演算式の最適化に関する。本発明は、更に、(1)本発明のレイアウトパラメータ、及び/又は、(2)コンピュータ上で演算を実行する際に本発明を使用するためのプログラム命令、を記憶した機械読取可能媒体に関する。そのような媒体には、例として挙げると、磁気テープ、磁気ディスク、CD・ROMのような光学的読取可能媒体、及び、PCMCIAカードのような半導体メモリが含まれる。この媒体はまた、小さなディスク、ディスケット、又は、カセットのような携帯用品目の形態を取ってもよい。この媒体はまた、ハードディスクドライブやコンピュータRAMのようなより大きな又は固定式品目の形態を取ってもよい。
本発明を開示する目的上、「プロセッサ」という用語は、物理的なコンピュータ又は仮想計算機を意味するように用いられる場合がある。
本発明の別の実施形態によると、算術命令の意味を保存するためにより大きなタイプ命令64が必要であり、かつ、より大きなタイプ命令が目標とするプロセッサによってサポートされていない場合、その演算式は、サポートされていないとして拒絶される。
図5A〜図8Bはまた、符号を有する値を使用する。当業者はまた、値の符号の有無に関わらず桁あふれが起こり得ることを認めるであろう。
ここで図7Bを参照すると、リソース限定型コンピュータ上に潜在的に桁あふれを伴う演算によって引き起こされたオペランドの桁あふれに影響されない演算を実行する段階を説明するコード見本が示されている。この例の全ての値は16ビットのshortタイプであるから、全ての中間的な加算に対してshortタイプの加算が用いられる。表1に示す通り、加算演算子は、潜在的に桁あふれを引き起こすが、桁あふれに影響されない。すなわち、「a」と「b」を加えることは、潜在的に桁あふれを伴う値を作り出す。この値が「c」に加えられ、潜在的に桁あふれを伴う別の値を作り出す。第2のadd演算は、潜在的に桁あふれ(a+bの結果)を伴う1つのオペランドを含むが、add演算は、桁あふれを伴うオペランドに影響されない。最終結果は、タイプshortに型入れされ、加算演算から潜在的な桁あふれを取り除く。すなわち、デスクトップコンピュータ及びリソース限定型コンピュータの両方に対する結果の値は同じである。
ここで図8Bを参照すると、リソース限定型コンピュータ上で潜在的に桁あふれを伴う演算によって引き起こされたオペランドの桁あふれに影響される演算を実行する段階を説明するコード見本が示されている。実行はリソース限定型コンピュータ上で行われているので、shortタイプの演算が用いられる。「a」及び「b」の値は、shortタイプのaddを用いて互いに加えられる。この加算は、16ビット範囲から桁あふれする中間的な値を作り出す。この中間的な値は、「c」で割り算される。図7Bで用いられた加算演算子と異なり、割り算演算子は、表2に示す通り桁あふれに影響される。高いビットに値が入っているので、この16ビット値は、負であると見なされる。すなわち、デスクトップコンピュータ及びリソース限定型コンピュータの例は、図6A〜図7Bにおけるようなプログラムで表されたタイプ変換で訂正されていない、異なる結果をもたらす。
参照番号128で、更なる命令が残っているか否かに関する判断が為される。更なる命令が残っている場合、次の命令が参照番号130で取得され、参照番号112で実行が継続される。変換処理は、最後の命令が変換されると終了する。
参照番号244で、結果がより最適化された命令を用いることで生じた桁あふれを潜在的に伴うか否かに関する判断が為される。結果が潜在的桁あふれを伴わない場合、参照番号246で、オペランドのいずれかが桁あふれを伝達するか否かに関する判断が為される。少なくとも1つのオペランドが桁あふれを伝達するか、又は、結果が潜在的に桁あふれを伴う場合、その結果のロールバックポイントが参照番号248で記録され、結果が潜在的桁あふれを有するという指示が参照番号250で作られる。
参照番号292で、後続命令が変換処理において以前に訪問されたか否かに関する判断が為される。後続命令が以前に訪問されていない場合、後続命令に関する変換情報は、参照番号294で現在の命令に関する変換情報と等しいように設定され、参照番号296で後続命令を変換すべきであるという指示が作られる。変換情報は、現在の変換点におけるランタイム状態を含んでもよい。例えば、まだ消費されていない現在又は以前の命令によって、それらの値が作り出される。これらの値は、制御経路の後続命令に対してオペランドとして使用されることになる。各値に対して、タイプ、ソース命令、及び、ロールバックポイントが記録される。後続命令が以前に訪問されていた場合、後続命令において以前に記録された変換情報は、参照番号298で現在の変換情報と結合される。参照番号300で、結合された情報の中の値が変更されたか否かに関する判断が為される。値が変更されていた場合、後続命令を変換すべきであるという指示が参照番号296で作られる。この処理は、各後続命令に対して繰り返される。
short c=(short)((short)(a+b)/c)
この式のJava(登録商標)バイトコードシーケンスは、参照番号316で示されている。
本発明の理解を更に助けるために、上記で検討した例は、図10から図21に関連して以下で更に詳細に説明される。
次に、iload-c命令が処理される。値a及びbのように、cはタイプshortであり、iload-c命令は、sload-c命令に変換される。次に、idiv命令が処理される。表2に明記した通り、idivは、桁あふれに影響されてもよい命令である。「a+b」オペランドは、shortへの明確なソースレベルの型入れのために潜在的桁あふれを伴わず、従って、最適化された割り算命令タイプは、参照番号232でタイプshortであると判断され、結果タイプは、参照番号240でタイプshortに設定される。
最後に、istore-c命令が処理される。目標とするタイプがタイプshortであり、オペランドが桁あふれを伴わないから、istore-c命令は、参照番号167で、sstore-c命令に最適化される。変換されたバイトコードは、参照番号318で示されている。
short c=(short)((a+b)/c)
この式に対するJava(登録商標)バイトコードシーケンスは、参照番号320で示されている。
本発明の理解を更に助けるために、上記で検討した図22Bの例は、図10から図21を参照して以下で更に詳細に説明される。
参照番号124で、結果のタイプと目標とするタイプとが照合される。結果のタイプがshortで、目標とするタイプがintであるから、そのタイプは一致しない。すなわち、shortをintに上げるために、S2I命令が作り出される。
次に、idiv命令が処理される。参照番号238において、両方のオペランドがタイプintであるから、最適化された命令タイプはintに設定される。参照番号222で、intの気味のある命令(idiv)が選択される。最後の命令シーケンスは、図22の参照番号344で表されている。
本発明は、ソフトウエア又はハードウエアにおいて実施されるであろう。本発明は、他のプロセッサにおいて実施されてもよく、同様に、プログラム可能ゲートアレー装置、「特定用途向け集積回路(ASIC)」、及び、他のハードウエアにおいて実施されてもよい。
Claims (35)
- 第1のベースを有する第1のプロセッサのために形成され、演算子と少なくとも1つのオペランドとを含む第1の命令を受け取る段階と、
前記少なくとも1つのオペランドが前記第1のベースよりも小さい第2のベースを超える潜在的桁あふれを伴わない時、又は、前記演算子が桁あふれに敏感でない時、前記第1の命令を、前記第2のベースを有する第2のプロセッサに対して最適化された第2の命令に変換する段階と、
前記少なくとも1つのオペランドが前記第2のベースを超える桁あふれの可能性を伴う時、及び、前記演算子が桁あふれに敏感である時、前記少なくとも1つのオペランドに付随する潜在的桁あふれの源であり、以前に最適化されている第3の命令を、前記第2のベースよりも大きく前記第1のベースよりも小さいか又は等しいより広いベースに変換する段階と、
を含むことを特徴とする、演算式最適化の方法。 - より広いベースへの前記変換段階は、前記第3の命令の以前の変換結果を、より広いベースへの前記変換段階の前に廃棄する段階を更に含むことを特徴とする請求項1に記載の方法。
- 前記第2のプロセッサ上でより小さなベースに最適化することができない表現を拒否する段階を更に含むことを特徴とする請求項1に記載の方法。
- より広いベースへの前記変換段階は、より広い前記ベースが前記第2のプロセッサによってサポートされない時は前記第1の命令を拒否する段階を更に含むことを特徴とする請求項1に記載の方法。
- 前記第1の命令は、算術であることを特徴とする請求項1に記載の方法。
- 前記第1の命令は、タイプに敏感な非算術命令を含むことを特徴とする請求項1に記載の方法。
- 前記第1の命令の前記変換段階の後で、前記第1のプロセッサのために形成された全ての命令が変換されるまで、前記第1の命令を受け取る段階に戻る段階を更に含むことを特徴とする請求項5に記載の方法。
- 全ての制御経路において、各命令を後続命令にリンクする段階を更に含むことを特徴とする請求項7に記載の方法。
- 前記第1の命令の前記変換段階は、
命令の結果の各々を、前記結果を消費する全ての命令にリンクする段階と、
前記変換段階が値を作り出す段階を含む場合、前記値を生み出した命令に前記値をリンクする段階と、
前記値が桁あふれの可能性を伴う場合、前記桁あふれを最初に引き起こした命令に前記値をリンクする段階と、
を更に含む、ことを特徴とする請求項8に記載の方法。 - 前記第1のプロセッサは、「Java(登録商標)仮想計算機」を含み、
前記第2のプロセッサは、「Java Card(登録商標)仮想計算機」を含む、
ことを特徴とする請求項1に記載の方法。 - 前記第1のベースは、前記第1のベースのサイズよりも小さいサイズを有する少なくとも1つのデータタイプ上で算術演算を実行するために、前記第1のプロセッサによって使用され、
前記少なくとも1つのデータタイプのサイズに等しいサイズを有する前記第2のベースは、前記少なくとも1つのデータタイプ上で算術演算を実行するために、前記第2のプロセッサによって使用される、
ことを特徴とする請求項1に記載の方法。 - 前記第1のプロセッサは、32ビットのプロセッサを含み、
前記第2のプロセッサは、リソース限定型16ビットのプロセッサを含む、
ことを特徴とする請求項1に記載の方法。 - 前記第1のベースは、前記第1のベースのサイズよりも小さいサイズを有する少なくとも1つのデータタイプ上で算術演算を実行するために、前記第1のプロセッサによって使用され、
前記少なくとも1つのデータタイプのサイズよりも大きいサイズを有する前記第2のベースは、前記少なくとも1つのデータタイプ上で算術演算を実行するために、前記第2のプロセッサによって使用される、
ことを特徴とする請求項9に記載の方法。 - 前記第1のプロセッサは、32ビットのプロセッサを含み、
前記第2のプロセッサは、リソース限定型16ビットのプロセッサを含む、
ことを特徴とする請求項13に記載の方法。 - 第1のベースを有する第1のプロセッサのために形成され、演算子と少なくとも1つのオペランドとを含む第1の命令を受け取る段階と、 前記少なくとも1つのオペランドが前記第1のベースよりも小さい第2のベースを超える潜在的桁あふれを伴わない時、又は、前記演算子が桁あふれに敏感でない時、前記第1の命令を、前記第2のベースを有する第2のプロセッサに対して最適化された第2の命令に変換する段階と、
前記少なくとも1つのオペランドが前記第2のベースを超える桁あふれの可能性を伴う時、及び、前記演算子が桁あふれに敏感である時、前記少なくとも1つのオペランドに付随する潜在的桁あふれの源であり、以前に最適化されている第3の命令を、前記第2のベースよりも大きく前記第1のベースよりも小さいか又は等しいより広いベースに変換する段階と、
を含む演算式最適化を実行する、計算機が実行可能な命令プログラムを包含することを特徴とする、計算機が読取可能なプログラム記憶装置。 - より広いベースへの前記変換段階は、前記第3の命令の以前の変換結果を、より広いベースへの前記変換段階の前に破棄する段階を更に含むことを特徴とする請求項15に記載のプログラム記憶装置。
- 前記第2のプロセッサ上でより小さなベースに最適化することができない表現を拒否する段階を更に含むことを特徴とする請求項15に記載のプログラム記憶装置。
- より広いベースへの前記変換段階は、より広い前記ベースが前記第2のプロセッサによってサポートされない時は前記第1の命令を拒否する段階を更に含むことを特徴とする請求項15に記載のプログラム記憶装置。
- 前記第1の命令は、算術であることを特徴とする請求項15に記載のプログラム記憶装置。
- 前記第1の命令は、タイプに敏感な非算術命令を含むことを特徴とする請求項15に記載のプログラム記憶装置。
- 前記第1の命令の前記変換段階の後で、前記第1のプロセッサのために形成された全ての命令が変換されるまで、前記第1の命令を受け取る段階に戻る段階を更に含むことを特徴とする請求項19に記載のプログラム記憶装置。
- 全ての制御経路において、各命令を後続命令にリンクする段階を更に含むことを特徴とする請求項21に記載のプログラム記憶装置。
- 前記第1の命令の前記変換段階は、
命令の結果の各々を、前記結果を消費する全ての命令にリンクする段階と、
前記変換段階が値を作り出す段階を含む場合、前記値を生み出した命令に前記値をリンクする段階と、
前記値が桁あふれの可能性を伴う場合、前記桁あふれを最初に引き起こした命令に前記値をリンクする段階と、
を更に含む、ことを特徴とする請求項22に記載のプログラム記憶装置。 - 前記第1のプロセッサは、「Java(登録商標)仮想計算機」を含み、
前記第2のプロセッサは、「Java Card(登録商標)仮想計算機」を含む、
ことを特徴とする請求項15に記載のプログラム記憶装置。 - 前記第1のベースは、前記第1のベースのサイズよりも小さいサイズを有する少なくとも1つのデータタイプ上で算術演算を実行するために、前記第1のプロセッサによって使用され、
前記少なくとも1つのデータタイプのサイズに等しいサイズを有する前記第2のベースは、前記少なくとも1つのデータタイプ上で算術演算を実行するために、前記第2のプロセッサによって使用される、
ことを特徴とする請求項15に記載のプログラム記憶装置。 - 前記第1のプロセッサは、32ビットのプロセッサを含み、
前記第2のプロセッサは、リソース限定型16ビットのプロセッサを含む、
ことを特徴とする請求項15に記載のプログラム記憶装置。 - 前記第1のベースは、前記第1のベースのサイズよりも小さいサイズを有する少なくとも1つのデータタイプ上で算術演算を実行するために、前記第1のプロセッサによって使用され、
前記少なくとも1つのデータタイプのサイズよりも大きいサイズを有する前記第2のベースは、前記少なくとも1つのデータタイプ上で算術演算を実行するために、前記第2のプロセッサによって使用される、
ことを特徴とする請求項23に記載のプログラム記憶装置。 - プログラム命令を有する少なくとも1つのメモリと、
第1のベースを有する第1のプロセッサのために形成され、演算子と少なくとも1つのオペランドとを含む第1の命令を受け取り、
前記少なくとも1つのオペランドが前記第1のベースよりも小さい第2のベースを超える潜在的桁あふれを伴わない時、又は、前記演算子が桁あふれに敏感でない時、前記第1の命令を、前記第2のベースを有する第2のプロセッサに対して最適化された第2の命令に変換し、
前記少なくとも1つのオペランドが前記第2のベースを超える桁あふれの可能性を伴う時、及び、前記演算子が桁あふれに敏感である時、前記少なくとも1つのオペランドに付随する潜在的桁あふれの源であり、以前に最適化されている第3の命令を、前記第2のベースよりも大きく前記第1のベースよりも小さいか又は等しいより広いベースに変換する、
ために前記プログラム命令を使用するように形成された少なくとも1つのプロセッサと、
を含むことを特徴とする、演算式最適化のための装置。 - 前記少なくとも1つのプロセッサは、より広いベースに変換する段階の前に、前記プログラム命令を使用して前記第3の命令の以前の変換結果を破棄するように更に形成されることを特徴とする請求項28に記載の装置。
- 第1のベースを有する第1のプロセッサのために形成され、演算子と少なくとも1つのオペランドとを含む第1の命令を受け取る手段と、 前記少なくとも1つのオペランドが前記第1のベースよりも小さい第2のベースを超える潜在的桁あふれを伴わない時、又は、前記演算子が桁あふれに敏感でない時、前記第1の命令を、前記第2のベースを有する第2のプロセッサに対して最適化された第2の命令に変換する手段と、
前記少なくとも1つのオペランドが前記第2のベースを超える桁あふれの可能性を伴う時、及び、前記演算子が桁あふれに敏感である時、前記少なくとも1つのオペランドに付随する潜在的桁あふれの源であり、以前に最適化されている第3の命令を、前記第2のベースよりも大きく前記第1のベースよりも小さいか又は等しいより広いベースに変換する手段と、
を含むことを特徴とする、演算式最適化のための装置。 - より広いベースに変換する前記手段は、より広いベースに変換する前記段階の前に、前記第3の命令の以前の変換結果を破棄する手段を更に含むことを特徴とする請求項30に記載の装置。
- 全ての制御経路において、各命令を後続命令にリンクする手段を更に含むことを特徴とする請求項30に記載の装置。
- 第1のベースを有するプロセッサを目標とする少なくとも1つの命令の演算式最適化を含むアプリケーションソフトウエアプログラムを使用する方法であって、
ソフトウエアプログラムをプロセッサ上に受け取る段階と、
命令のシーケンスを前記プロセッサ上で実行する段階と、
を含むことを特徴とする方法。 - 前記少なくとも1つの命令をリソース限定型装置上に記憶する段階を更に含むことを特徴とする請求項33に記載の方法。
- マイクロ制御装置によって実行される仮想計算機、
を含み、
前記仮想計算機は、複数の予め最適化された命令から成るソフトウエアアプリケーションを実行し、
前記仮想計算機は、リソース限定型装置上で実行するために予め最適化されている最適化された命令を受け取る手段と前記命令を実行する手段とを含む、
ことを特徴とする、マイクロ制御装置が組み込まれたスマートカード。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/439,113 | 1999-11-12 | ||
US09/439,113 US6363523B1 (en) | 1999-11-12 | 1999-11-12 | Optimization of N-base typed arithmetic expressions |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001536669A Division JP4786101B2 (ja) | 1999-11-12 | 2000-11-10 | Nベースタイプの演算式の最適化 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011150727A true JP2011150727A (ja) | 2011-08-04 |
JP5325925B2 JP5325925B2 (ja) | 2013-10-23 |
Family
ID=23743348
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001536669A Expired - Lifetime JP4786101B2 (ja) | 1999-11-12 | 2000-11-10 | Nベースタイプの演算式の最適化 |
JP2011092259A Expired - Lifetime JP5325925B2 (ja) | 1999-11-12 | 2011-04-18 | Nベースタイプの演算式の最適化 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001536669A Expired - Lifetime JP4786101B2 (ja) | 1999-11-12 | 2000-11-10 | Nベースタイプの演算式の最適化 |
Country Status (8)
Country | Link |
---|---|
US (3) | US6363523B1 (ja) |
EP (1) | EP1232430B1 (ja) |
JP (2) | JP4786101B2 (ja) |
KR (1) | KR20020087384A (ja) |
CN (1) | CN1287257C (ja) |
AU (1) | AU1484901A (ja) |
DE (1) | DE1232430T1 (ja) |
WO (1) | WO2001035201A1 (ja) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8631066B2 (en) * | 1998-09-10 | 2014-01-14 | Vmware, Inc. | Mechanism for providing virtual machines for use by multiple users |
US7200842B1 (en) | 1999-02-02 | 2007-04-03 | Sun Microsystems, Inc. | Object-oriented instruction set for resource-constrained devices |
JP2001005675A (ja) * | 1999-06-21 | 2001-01-12 | Matsushita Electric Ind Co Ltd | プログラム変換装置及びプロセッサ |
US8453133B2 (en) * | 1999-11-12 | 2013-05-28 | Oracle America, Inc. | Optimization of N-base typed arithmetic instructions via rework |
US6363523B1 (en) * | 1999-11-12 | 2002-03-26 | Sun Microsystems, Inc. | Optimization of N-base typed arithmetic expressions |
US7107581B2 (en) * | 1999-11-12 | 2006-09-12 | Sun Microsystems, Inc. | Overflow predictive arithmetic instruction optimization using chaining |
US7010786B2 (en) * | 1999-11-12 | 2006-03-07 | Sun Microsystems, Inc. | Predictive arithmetic overflow detection |
US7207037B2 (en) * | 1999-11-12 | 2007-04-17 | Sun Microsystems, Inc. | Overflow sensitive arithmetic instruction optimization using chaining |
US20010007146A1 (en) * | 1999-12-23 | 2001-07-05 | Uwe Hansmann | Method for providing a set of software components |
US20100174717A1 (en) * | 2002-02-28 | 2010-07-08 | Olivier Fambon | Interative serialisation procedure for structured software objects |
US7171438B2 (en) * | 2002-11-12 | 2007-01-30 | Sandbridge Technologies, Inc. | Method for recognition of full-word saturating addition and subtraction |
US7661096B2 (en) * | 2004-02-13 | 2010-02-09 | Microsoft Corporation | Interaction with nested and non-nested streams |
CN101278262A (zh) * | 2004-08-12 | 2008-10-01 | 桑德布里奇技术公司 | 非循环的指令模式的识别方法 |
JP2006227939A (ja) * | 2005-02-17 | 2006-08-31 | Matsushita Electric Ind Co Ltd | 演算装置 |
CN100410873C (zh) * | 2005-04-12 | 2008-08-13 | 威盛电子股份有限公司 | 分离饱和加减功能以改善处理器管线的关键执行阶段时程 |
US7607042B2 (en) * | 2005-08-29 | 2009-10-20 | Searete, Llc | Adjusting a processor operating parameter based on a performance criterion |
US7739524B2 (en) * | 2005-08-29 | 2010-06-15 | The Invention Science Fund I, Inc | Power consumption management |
US8181004B2 (en) * | 2005-08-29 | 2012-05-15 | The Invention Science Fund I, Llc | Selecting a resource management policy for a resource available to a processor |
US7512842B2 (en) | 2005-08-29 | 2009-03-31 | Searete Llc | Multi-voltage synchronous systems |
US7627739B2 (en) * | 2005-08-29 | 2009-12-01 | Searete, Llc | Optimization of a hardware resource shared by a multiprocessor |
US7779213B2 (en) * | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
US8255745B2 (en) * | 2005-08-29 | 2012-08-28 | The Invention Science Fund I, Llc | Hardware-error tolerant computing |
US8214191B2 (en) * | 2005-08-29 | 2012-07-03 | The Invention Science Fund I, Llc | Cross-architecture execution optimization |
US8209524B2 (en) | 2005-08-29 | 2012-06-26 | The Invention Science Fund I, Llc | Cross-architecture optimization |
US20070050604A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Fetch rerouting in response to an execution-based optimization profile |
US7877584B2 (en) * | 2005-08-29 | 2011-01-25 | The Invention Science Fund I, Llc | Predictive processor resource management |
US7725693B2 (en) | 2005-08-29 | 2010-05-25 | Searete, Llc | Execution optimization using a processor resource management policy saved in an association with an instruction group |
US8516300B2 (en) * | 2005-08-29 | 2013-08-20 | The Invention Science Fund I, Llc | Multi-votage synchronous systems |
US7647487B2 (en) | 2005-08-29 | 2010-01-12 | Searete, Llc | Instruction-associated processor resource optimization |
US20070050605A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Freeze-dried ghost pages |
US8423824B2 (en) | 2005-08-29 | 2013-04-16 | The Invention Science Fund I, Llc | Power sparing synchronous apparatus |
US7539852B2 (en) * | 2005-08-29 | 2009-05-26 | Searete, Llc | Processor resource management |
US8689194B1 (en) | 2007-08-20 | 2014-04-01 | The Mathworks, Inc. | Optimization identification |
CN101814009B (zh) * | 2009-02-25 | 2011-12-21 | 慧国(上海)软件科技有限公司 | 闪存装置、资料储存系统、以及传送特殊命令至闪存装置的方法 |
US9003377B2 (en) * | 2010-01-07 | 2015-04-07 | Microsoft Technology Licensing, Llc | Efficient resumption of co-routines on a linear stack |
US8572594B2 (en) | 2010-12-22 | 2013-10-29 | Microsoft Corporation | Invasion analysis to identify open types |
US9652358B1 (en) | 2016-04-14 | 2017-05-16 | Semmle Limited | Type widening for source code analysis |
JP7163697B2 (ja) * | 2018-09-28 | 2022-11-01 | 富士通株式会社 | 生成プログラム,情報処理装置及び生成方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06505692A (ja) * | 1991-02-28 | 1994-06-30 | リクィッド・カーボニック・コーポレーション | 高純度一酸化炭素の製造方法 |
JPH06337792A (ja) * | 1993-05-27 | 1994-12-06 | Matsushita Electric Ind Co Ltd | プログラム変換装置およびプロセッサ |
JP4786101B2 (ja) * | 1999-11-12 | 2011-10-05 | オラクル・アメリカ・インコーポレイテッド | Nベースタイプの演算式の最適化 |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US574041A (en) * | 1896-12-29 | Mcolure | ||
US3805045A (en) | 1972-10-30 | 1974-04-16 | Amdahl Corp | Binary carry lookahead adder using redundancy terms |
US3993891A (en) | 1975-07-03 | 1976-11-23 | Burroughs Corporation | High speed parallel digital adder employing conditional and look-ahead approaches |
JPS55112651A (en) * | 1979-02-21 | 1980-08-30 | Fujitsu Ltd | Virtual computer system |
US4429370A (en) * | 1981-04-23 | 1984-01-31 | Data General Corporation | Arithmetic unit for use in a data processing system for computing exponent results and detecting overflow and underflow conditions thereof |
US4504924A (en) | 1982-06-28 | 1985-03-12 | International Business Machines Corporation | Carry lookahead logical mechanism using affirmatively referenced transfer gates |
US4941119A (en) * | 1988-11-30 | 1990-07-10 | Control Data Corporation | Method and apparatus for predicting an overflow in an integer multiply |
US5617574A (en) * | 1989-05-04 | 1997-04-01 | Texas Instruments Incorporated | Devices, systems and methods for conditional instructions |
JPH03100827A (ja) | 1989-09-14 | 1991-04-25 | Mitsubishi Electric Corp | オーバフロー検出回路 |
US5107451A (en) * | 1990-01-30 | 1992-04-21 | The Boeing Company | Method and apparatus for pipelined detection of overflow in residue arithmetic multiplication |
US5058048A (en) * | 1990-04-02 | 1991-10-15 | Advanced Micro Devices, Inc. | Normalizing pipelined floating point processing unit |
US5301341A (en) * | 1990-11-28 | 1994-04-05 | International Business Machines Corporation | Overflow determination for three-operand alus in a scalable compound instruction set machine which compounds two arithmetic instructions |
IL100987A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Method and device for encoding |
IL100986A (en) * | 1991-02-27 | 1997-01-10 | Digital Equipment Corp | Method for compiling code |
US5432795A (en) * | 1991-03-07 | 1995-07-11 | Digital Equipment Corporation | System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program |
US5305456A (en) * | 1991-10-11 | 1994-04-19 | Security Integration, Inc. | Apparatus and method for computer system integrated security |
US5606677A (en) | 1992-11-30 | 1997-02-25 | Texas Instruments Incorporated | Packed word pair multiply operation forming output including most significant bits of product and other bits of one input |
US5418959A (en) * | 1992-11-30 | 1995-05-23 | Intel Corporation | Instruction operation size optimization |
US5408670A (en) | 1992-12-18 | 1995-04-18 | Xerox Corporation | Performing arithmetic in parallel on composite operands with packed multi-bit components |
EP1416374A3 (en) * | 1993-05-27 | 2004-09-01 | Matsushita Electric Industrial Co., Ltd. | Program converting unit and processor improved in address management |
US5446901A (en) * | 1993-06-30 | 1995-08-29 | Digital Equipment Corporation | Fault tolerant distributed garbage collection system and method for collecting network objects |
US5825407A (en) * | 1993-09-13 | 1998-10-20 | Albrit Technologies Ltd. | Cable television audio messaging systems |
US5748964A (en) * | 1994-12-20 | 1998-05-05 | Sun Microsystems, Inc. | Bytecode program interpreter apparatus and method with pre-verification of data type restrictions |
US5668999A (en) | 1994-12-20 | 1997-09-16 | Sun Microsystems, Inc. | System and method for pre-verification of stack usage in bytecode program loops |
US5630066A (en) | 1994-12-20 | 1997-05-13 | Sun Microsystems, Inc. | System and method for locating object view and platform independent object |
US5659754A (en) | 1995-03-31 | 1997-08-19 | Sun Microsystems, Inc. | Method and apparatus for an improved optimizing compiler |
CA2173695A1 (en) * | 1995-04-14 | 1996-10-15 | Panagiotis Kougiouris | Method and system for providing interoperability among processes written to execute on different operating systems |
US5724279A (en) | 1995-08-25 | 1998-03-03 | Microsoft Corporation | Computer-implemented method and computer for performing modular reduction |
US5878266A (en) * | 1995-09-26 | 1999-03-02 | Advanced Micro Devices, Inc. | Reservation station for a floating point processing unit |
US5732263A (en) * | 1995-10-03 | 1998-03-24 | International Business Machines Corporation | Systems, methods and computer program products for generating and validating user defined object classes in an object oriented programming environment after build time |
US6151618A (en) * | 1995-12-04 | 2000-11-21 | Microsoft Corporation | Safe general purpose virtual machine computing system |
US6067575A (en) | 1995-12-08 | 2000-05-23 | Sun Microsystems, Inc. | System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs |
US5790859A (en) | 1995-12-21 | 1998-08-04 | International Business Machines Corporation | Method of, system for, and computer program product for efficient identification of private variables in program loops by an optimizing compiler |
US5784553A (en) * | 1996-01-16 | 1998-07-21 | Parasoft Corporation | Method and system for generating a computer program test suite using dynamic symbolic execution of JAVA programs |
DE69713400T2 (de) * | 1996-01-24 | 2002-10-31 | Sun Microsystems Inc | Prozessor mit Bereichsüberprüfung bei Matrixzugriffen |
US6091897A (en) * | 1996-01-29 | 2000-07-18 | Digital Equipment Corporation | Fast translation and execution of a computer program on a non-native architecture by use of background translator |
US5802373A (en) * | 1996-01-29 | 1998-09-01 | Digital Equipment Corporation | Method for providing a pipeline interpreter for a variable length instruction set |
US6075863A (en) * | 1996-02-28 | 2000-06-13 | Encanto Networks | Intelligent communication device |
US5794049A (en) * | 1996-06-05 | 1998-08-11 | Sun Microsystems, Inc. | Computer system and method for executing architecture specific code with reduced run-time memory space requirements |
US5844218A (en) * | 1996-07-16 | 1998-12-01 | Transaction Technology, Inc. | Method and system for using an application programmable smart card for financial transactions in multiple countries |
CN1183449C (zh) * | 1996-10-25 | 2005-01-05 | 施卢默格系统公司 | 用微控制器使用高级程序设计语言 |
US5884316A (en) * | 1996-11-19 | 1999-03-16 | Microsoft Corporation | Implicit session context system with object state cache |
US5920720A (en) * | 1997-02-25 | 1999-07-06 | Microsoft Corporation | Efficient computer based virtual machine object structure |
ATE281680T1 (de) * | 1997-03-24 | 2004-11-15 | Visa Int Service Ass | System und verfahren für eine mehrzweckchipkarte die eine nachträgliche speicherung einer anwendung auf dieser karte ermöglicht |
US6003038A (en) * | 1997-03-31 | 1999-12-14 | Sun Microsystems, Inc. | Object-oriented processor architecture and operating method |
US6092147A (en) * | 1997-04-15 | 2000-07-18 | Sun Microsystems, Inc. | Virtual machine with securely distributed bytecode verification |
US6202143B1 (en) * | 1997-08-21 | 2001-03-13 | Samsung Electronics Co., Ltd. | System for fetching unit instructions and multi instructions from memories of different bit widths and converting unit instructions to multi instructions by adding NOP instructions |
US6026237A (en) * | 1997-11-03 | 2000-02-15 | International Business Machines Corporation | System and method for dynamic modification of class files |
US5978825A (en) * | 1997-11-14 | 1999-11-02 | Crystal Semiconductor Corp. | Zero detection circuitry and methods |
US6247174B1 (en) * | 1998-01-02 | 2001-06-12 | Hewlett-Packard Company | Optimization of source code with embedded machine instructions |
US6247116B1 (en) * | 1998-04-30 | 2001-06-12 | Intel Corporation | Conversion from packed floating point data to packed 16-bit integer data in different architectural registers |
US6292935B1 (en) * | 1998-05-29 | 2001-09-18 | Intel Corporation | Method for fast translation of java byte codes into efficient native processor code |
US6093216A (en) * | 1998-05-29 | 2000-07-25 | Intel Corporation | Method of run-time tracking of object references in Java programs |
US6212633B1 (en) * | 1998-06-26 | 2001-04-03 | Vlsi Technology, Inc. | Secure data communication over a memory-mapped serial communications interface utilizing a distributed firewall |
FR2797963B1 (fr) | 1999-08-23 | 2002-11-29 | Trusted Logic | Protocole de gestion, procede de verification et de transformation d'un fragment de programme telecharge et systemes correspondants |
GB2365610A (en) * | 2000-08-02 | 2002-02-20 | Ncr Int Inc | Self-service terminal |
US6988119B2 (en) * | 2001-06-29 | 2006-01-17 | Intel Corporation | Fast single precision floating point accumulator using base 32 system |
-
1999
- 1999-11-12 US US09/439,113 patent/US6363523B1/en not_active Expired - Lifetime
-
2000
- 2000-11-10 DE DE1232430T patent/DE1232430T1/de active Pending
- 2000-11-10 CN CNB008181950A patent/CN1287257C/zh not_active Expired - Lifetime
- 2000-11-10 KR KR1020027006138A patent/KR20020087384A/ko active IP Right Grant
- 2000-11-10 EP EP00977174.2A patent/EP1232430B1/en not_active Expired - Lifetime
- 2000-11-10 WO PCT/US2000/031029 patent/WO2001035201A1/en active Application Filing
- 2000-11-10 JP JP2001536669A patent/JP4786101B2/ja not_active Expired - Lifetime
- 2000-11-10 AU AU14849/01A patent/AU1484901A/en not_active Abandoned
-
2001
- 2001-11-01 US US10/002,437 patent/US6687898B2/en not_active Expired - Lifetime
-
2003
- 2003-10-14 US US10/686,513 patent/US7316007B2/en not_active Expired - Lifetime
-
2011
- 2011-04-18 JP JP2011092259A patent/JP5325925B2/ja not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06505692A (ja) * | 1991-02-28 | 1994-06-30 | リクィッド・カーボニック・コーポレーション | 高純度一酸化炭素の製造方法 |
JPH06337792A (ja) * | 1993-05-27 | 1994-12-06 | Matsushita Electric Ind Co Ltd | プログラム変換装置およびプロセッサ |
JP4786101B2 (ja) * | 1999-11-12 | 2011-10-05 | オラクル・アメリカ・インコーポレイテッド | Nベースタイプの演算式の最適化 |
Also Published As
Publication number | Publication date |
---|---|
JP2003515203A (ja) | 2003-04-22 |
US7316007B2 (en) | 2008-01-01 |
JP4786101B2 (ja) | 2011-10-05 |
AU1484901A (en) | 2001-06-06 |
EP1232430A1 (en) | 2002-08-21 |
EP1232430B1 (en) | 2020-05-20 |
US20040073894A1 (en) | 2004-04-15 |
US6363523B1 (en) | 2002-03-26 |
CN1287257C (zh) | 2006-11-29 |
US6687898B2 (en) | 2004-02-03 |
DE1232430T1 (de) | 2003-02-06 |
JP5325925B2 (ja) | 2013-10-23 |
US20020129344A1 (en) | 2002-09-12 |
EP1232430A4 (en) | 2007-01-10 |
CN1421001A (zh) | 2003-05-28 |
KR20020087384A (ko) | 2002-11-22 |
WO2001035201A1 (en) | 2001-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5325925B2 (ja) | Nベースタイプの演算式の最適化 | |
US6324686B1 (en) | Just in time compiler technique | |
EP0997816B1 (en) | Method and apparatus for selecting ways to compile at runtime | |
KR101642556B1 (ko) | 이진 번역을 수행하기 위한 방법 및 시스템 | |
US8732678B2 (en) | Methods and apparatus for dynamic best fit compilation of mixed mode instructions | |
Yellin et al. | The java virtual machine specification | |
US20030192035A1 (en) | Systems and methods for implementing efficient execution transfers between successive translations of stack-based program code in a virtual machine environment | |
US6434743B1 (en) | Method and apparatus for allocating stack slots | |
US8341613B2 (en) | Reducing stack space consumption via head-call optimization | |
EP1194839A2 (en) | Supporting multi-dimensional space-time computing through object versioning | |
JP2005501334A (ja) | Javaコンピューティング環境におけるJavaマクロインストラクションの生成のためのフレームワーク | |
US7036120B2 (en) | Two tier clusters for representation of objects in Java programming environments | |
JP3049814B2 (ja) | マイクロコンピュータの言語処理装置 | |
US6978448B1 (en) | Method and apparatus for rewriting bytecodes to minimize runtime checks | |
Lim et al. | CalmRISC™: a low power microcontroller with efficient coprocessor interface | |
US7774766B2 (en) | Method and system for performing reassociation in software loops | |
US7010786B2 (en) | Predictive arithmetic overflow detection | |
US7107581B2 (en) | Overflow predictive arithmetic instruction optimization using chaining | |
US8453133B2 (en) | Optimization of N-base typed arithmetic instructions via rework | |
US7207037B2 (en) | Overflow sensitive arithmetic instruction optimization using chaining | |
EP1700208B1 (en) | Apparatus and method to avoid floating point control instructions in floating point to integer conversion | |
CN114428603A (zh) | 一种基于编译器生成short和int类型指令的方法和系统 | |
Glossner et al. | Towards a very high bandwidth wireless handheld device | |
Glossner et al. | Towards a very high bandwidth wireless battery powered device | |
JP2003131887A (ja) | 変数ロードおよび処理の一括化コンパイル方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110518 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110518 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20111007 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20111011 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130319 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130531 |
|
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: 20130625 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130722 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5325925 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |