JPH06290056A - 異なるコンピュータ上でのソフトウェアの実行を最適化するための方法および装置 - Google Patents
異なるコンピュータ上でのソフトウェアの実行を最適化するための方法および装置Info
- Publication number
- JPH06290056A JPH06290056A JP6021329A JP2132994A JPH06290056A JP H06290056 A JPH06290056 A JP H06290056A JP 6021329 A JP6021329 A JP 6021329A JP 2132994 A JP2132994 A JP 2132994A JP H06290056 A JPH06290056 A JP H06290056A
- Authority
- JP
- Japan
- Prior art keywords
- software
- computer
- hardware
- program
- load
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/503—Resource availability
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
の実行を動的に最適化する方法及び装置を提供すること 【構成】 ソフトウェア20,30,50が、ランタイムにおいてコンヒ゜ュータ2
6,36,56と通信を行うことを可能とする方法及び装置が
開示されている。その通信により、異なるコンヒ゜ュータ上でソ
フトウェアを最適速度で実行することが可能となる。詳細に
は、ソフトウェア20,30は、ランタイムにおいてコンヒ゜ュータ26,36に照会
を行って(10)、そのハート゛ウェア資源を決定する。ソフトウェア
は、利用可能なハート゛ウェア資源を知ると、それに従ってコート
゛性能を最適化する(12)。代替的には、本発明は、コンヒ゜ュ
ータ56により使用されるべきハート゛ウェア資源をソフトウェア50が指
定する(40)ことを可能にする。これにより、ソフトウェア開発
者は、ソフトウェア50により指定された資源を実際に有するか
のように動作するようにコンヒ゜ュータ56を構成する(44)こと
が可能となる。
Description
ってソフトウェアプログラムの性能を最適化するための
技術に関し、特に、異なるコンピュータ上での移植可能
ソフトウェアプログラムの実行を動的に最適化するため
の方法および装置に関する。
ウェア資源は、コンピュータによって異なるものであ
る。その結果として、異なるコンピュータ上で最適速度
でソフトウェアを実行させるためには、その異なるコン
ピュータ毎にソフトウェアをコンパイルしなければなら
ない。
異なるコンピュータ間で移植可能性を有するように生成
されている。問題は、そのソフトウェアが、異なるコン
ピュータの各々において最適速度で走らないことにあ
る。特に、ソフトウェアは(移植可能性を有する場合で
あっても)、典型的には、特定のコンピュータの既知の
ハードウェア属性に従って、その特定のコンピュータ上
で走るようにコンパイルされる。代替的には、ソフトウ
ェアをコンパイルする際に、コンパイラは、そのソフト
ウェアが使用されると思われる或る種類のコンピュータ
のハードウェア特性の一般的な組を仮定することができ
る。前者の場合、ソフトウェアは、特定のコンピュータ
でのみ最適速度で走ることになる。また後者の場合に
は、ソフトウェアは、いずれのコンピュータにおいても
最適速度で走ることは決してない。
張する。即ち、ソフトウェアのベンダは、そのソフトウ
ェアが使用されると思われる多数の既知のコンピュータ
の各々について最適性能を与えるように特定のバージョ
ンのソフトウェアプログラムを作成することは所望しな
い。これに対し、ソフトウェアのベンダおよびプログラ
ムのユーザは、できるだけ少ないバージョンのプログラ
ムを所望している。ベンダがこれを望む理由は、そうす
ることにより在庫やサポートの要求が減少するからであ
る。ユーザは、現在所有し、また将来所有する可能性の
ある異なるコンピュータにソフトウェアを移植する能力
を正当に評価するものの、その結果として生じる劣化し
た性能には不満足感を覚えることとなる。
し、単一バージョンのソフトウェアプログラムが多数の
異なるコンピュータ上で最適速度で実行できるようにす
る。
フトウェアがコンピュータと通信を行ってコンピュータ
装置のハードウェア属性の取得または設定を行うことを
可能にするものである。
は、ランタイムにコンピュータに照会を行ってそのハー
ドウェア資源を決定する。ソフトウェアは、利用可能な
ハードウェア資源を知ると、それに従って、そのコード
性能を最適化させる。
ェアが、異なるコンピュータ装置の間での移植可能性を
有するだけでなく、異なるコンピュータ上で最適速度で
実行されることにある。その結果として、本発明によれ
ば、単一のバージョンのソフトウェアが、異なるコンピ
ュータのいずれにおいてもその最適速度で実行可能とな
る。これに加え、本発明によりソフトウェアのライフサ
イクルが長くなる。これは、ハードウェアの変更やコン
ピュータ装置のアップグレードに亘りそのソフトウェア
が存続できるからである。更に、ソフトウェアを生成す
る企業は、市場全体にアピールする単一バージョンのソ
フトウェアプログラムのみをコンパイルすることによ
り、そのオーバヘッドを削減し、従って、その検査、サ
ポートおよび在庫要件を簡略化することができる。
性が入力され、次いでコンピュータ装置の記憶領域に記
憶される。その後、そのコンピュータ装置は、前記記憶
領域に記憶されているハードウェア属性に従ってソフト
ウェアを実行する。この第2実施例の利点は、所望する
ハードウェア属性をコンピュータに知らせることではな
く、ハードウェア属性により識別される資源を実際に有
するかのように動作するようコンピュータをソフトウェ
アの開発者が構成することを可能にすることにある。
以下に説明する。しかし、それら図面に関してここで与
える詳細な説明は例示を目的とするものであり、本発明
はこれらの限定的な実施例を越えて拡張するものである
ということは、当業者には容易に理解されよう。
施例に従った方法を示すものである。最初に、ソフトウ
ェアは、そのランタイムにおいてハードウェア属性に関
してコンピュータに照会を行う(10)。ソフトウェアは、
コンピュータのハードウェア属性を知ると、そのソフト
ウェアのコードの少なくとも一部をコンピュータに対し
て最適化させる(12)。その最適化が行われると、そのコ
ードはコンピュータによって実行される(14)。
利用可能なハードウェア資源に関する情報が含まれてい
る。例えば、ハードウェア属性は、キャッシュメモリの
サイズ、メインメモリのサイズ、プロセッサのサイクル
タイム、または、浮動小数点レジスタ数を示すことがで
きる。勿論、ハードウェア資源についての他の多数のハ
ードウェア属性を用いることも可能である。
ソフトウェアを実行させるコンピュータのハードウェア
属性に対し、その性能を最適化させる(12)ことができ
る。一般に、ハードウェア属性は、最適な実行のために
ソフトウェア中のコードを最適化させる(12)ために用い
られる。例えば、ソフトウェアは、ハードウェア属性を
用いてそのソフトウェアに含まれる幾つかのアルゴリズ
ムのうちの1つを決定することができ、また、そのソフ
トウェア内の汎用アルゴリズムに関して変数またはルー
プ限界を簡単に設定することができる。いずれにせよ、
最適化(12)による効果は、コンピュータによって提供さ
れるハードウェア資源に従って、最適実行のためにソフ
トウェアのコードが構成される、ということである。
ドウェア資源をソフトウェアに知らせるための手段を全
く有さないものである。その例外の1つとして、IBM Sy
stem/370 マシンのベクトル演算がある。詳細には、こ
のIBM System/370は、ベクトル演算用の或るセクション
サイズのベクトルレジスタを含むレジスタを備えてい
る。このIBM System/370 のファミリーは、異なるセク
ションサイズ(ベクトルレジスタ中の要素数)を備えた
多数のモデルを有している。コンパイルタイムにおい
て、コンパイラは(ベクトル演算が実行される場合に
は)、そのプログラムを実行することになるモデルのセ
クションサイズを指定しなければならない。そのコンパ
イラは3つのオプションを有している。第1オプション
は、明示的なセクションサイズを特定することである。
第2オプションは、そのプログラムをコンパイルするコ
ンピュータのセクションサイズを用いてプログラムをコ
ンパイルすることである。この場合、コンパイル処理を
行っているコンピュータのモデルのセクションサイズ
は、命令 Store Vector Parameters (ベクトルパラメ
ータを記憶)を実行することにより(コンパイラによ
り)得ることができる。しかし、第1または第2オプシ
ョンのいずれにおいても、指定されたセクションサイズ
が、実行中のコンピュータの実際のセクションサイズと
異なる場合には、互換性のないセクションサイズでコン
パイルされたルーチンの第1処理時にプログラムが終了
する。第3オプションは、非効率的な態様ではあるが、
System/370 のいずれのモデル上でも実行されるように
プログラムをコンパイルすることである。この第3オプ
ションだけが、ソフトウェアのあらゆる移植可能性(即
ち、他の IBM System/370 コンピュータのみに対する移
植可能性)を提供するものであり、その場合であって
も、実行は、全てのモデル上で非効率的なものとなる。
IBM System/370 マシンにおけるベクトル演算について
の更なる情報については、1986年のInternational Busi
ness Machines Corporation による「IBM System/370 -
Vector Operations」(公開番号 SA22-7125-1)、及
び、1990年のInternational Business Machines Corpor
ation による「VS Fortran Version 2 Release 5 -Prog
ramming Guide for CMS and MVS」(公開番号 SC26-4222
-5)、第6版を参照されたい。
そのソフトウェアを走らせているコンピュータのハード
ウェア属性に関して情報を得ることができないものであ
る。より重要なことは、実際にソフトウェアを実行して
いるコンピュータに利用可能なハードウェア資源の知識
なくしては、異なるコンピュータ上での実行に関して移
植可能ソフトウェアを最適化させることができない、と
いうことである。
決するために実行される多くのアルゴリズムを含んでい
る。利用可能なハードウェア資源についての知識をソフ
トウェアが有していない場合には、それらのアルゴリズ
ムは異なるコンピュータ上で最適速度で実行することが
できない。例えば、ブロック化マトリクス乗算アルゴリ
ズムは、マトリクスセット全体を保持するには不十分な
大きさのキャッシュサイズを有するコンピュータに高性
能を与えることができるものである、ということは周知
である。ブロック化マトリクス乗算アルゴリズムについ
ては、Lam 等による「The Cache Performance and Opti
mizations of Blocked Algorithms」(Proceedings of t
he Fourth International Conference on Architectual
Supportfor Programming Languages and Operating Sy
stems, pp.63-74, April 1991)に詳述されている。な
お、上記引用をもってその開示内容を本明細書に包含さ
せたものとし、その詳細な説明は省略する。このような
場合、所与のコンピュータ装置のキャッシュに対する最
適なブロックサイズを知ることは極めて有用である。そ
のためには、そのコンピュータ装置のキャッシュの構成
上の詳細に関する詳細な知識が必要となる。このような
構成上の詳細は、従来はそのコンピュータ装置のユーザ
マニュアルで提供されるが、ソフトウェアに対しては未
知のものとなる。その結果として、従来の技術では、異
なるコンピュータ装置上でアルゴリズムを効率的に実行
させることは不可能であった。
ズムを用いて実施することができる。例えば、マトリク
ス乗算の場合、ブロックサイズアルゴリズムは、キャッ
シュのハードウェア属性に関して最適化させることが可
能であり、これにより、そのマトリクス乗算の性能が改
善される。別の例として、Anderson 等による「LAPACK
User's Guide」(Society for Industrial and Applied
Mathematics 1992)があり、これには、高性能コンピュ
ータ用の移植可能ソフトウェアにおける線形代数演算を
最適化させるための様々なアルゴリズムが含まれてい
る。なお、上記引用をもってその開示内容を本明細書に
包含させたものとし、その詳細な説明は省略する。ソフ
トウェアにハードウェア属性を提供することにより、そ
のソフトウェア内の最適化アルゴリズムを用いて、異な
るコンピュータ上で最適速度で走る移植可能ソフトウェ
アを生成することが可能となる。
ログラムに実行することができる。そのようなプログラ
ムには、例えば、汎用アプリケーションプログラム、専
用アプリケーションプログラム、ユーティリティプログ
ラム、オペレーティングシステム、およびコンパイラが
含まれる。例えば、オペレーティングシステムプログラ
ムに関しては、ハードウェア属性に従ってコードを最適
化させて、走らせるタスクの最適数を決定することによ
り性能を改善することができる。オペレーティングシス
テムプログラムが備える内部データ構造は、パラメータ
が既知である場合に、コンピュータのメモリ階層の使用
を最適化することができるものである。別の例として、
最速レベルのメモリ階層における最近の使用データを維
持することにより性能を改善するデータベースプログラ
ム(例えば dBase)がある。更に別の例としては、ハード
ウェア属性を使用して、コンパイラにより生成されるプ
ログラムの性能に加えてその性能も改善するコンパイラ
プログラムがある。
ウェア属性を得るための、コンピュータプログラムとコ
ンピュータ装置との間の対話の第1例を示すブロック図
である。詳細には、ハードウェアはプログラム20により
照会される。特に、プログラム20中のLoad Hardware At
tribute Instruction(ハードウェア属性のロード命
令)22は、その実行時に、コンピュータ装置26中のハー
ドウェア属性記憶領域24からの少なくとも1つのハード
ウェア属性を要求する。その Load Hardware Attribute
Instruction 22は、プログラム20のヘッダまたは本体
部のいずれかに含ませることができる。しかし、通常
は、Load Hardware Attribute Instruction22は、所与
の1プログラムにつき1回しか実行する必要のないもの
である。要するに、コンピュータ装置26がプログラム20
を実行する際には、そのプログラム20中の命令22は、或
る種のハードウェア属性(これは、ハードウェア属性記
憶領域24を介してソフトウェアにアクセス可能なもので
ある)をコンピュータ装置26に要求する。
シュのハードウェア属性を得るための、プログラムとコ
ンピュータ装置との間の対話の第2例を示すブロック図
である。同図に例示のプログラムヘッダ30は、ハードウ
ェア資源の照会を行う幾つかの命令を含んでいる。その
命令には、Load Cache Size Instruction(キャッシュ
サイズのロード命令)31、Load Cache Line Size Instr
uction(キャッシュラインサイズのロード命令)32、お
よび、Load Cache Associativity Instruction(キャッ
シュ連想性(associativity)のロード命令)33が含まれ
ている。これらの命令31,32,33が実行されると、それら
に対応するキャッシュのハードウェア属性が、コンピュ
ータ装置36内のキャッシュ属性記憶領域34を介してソフ
トウェアに提供される。キャッシュ属性は、ソフトウェ
アに対してキャッシュメモリ38のハードウェア資源を記
述するものである。その後、ソフトウェアは、そのコー
ドを、キャッシュメモリ38により提供されたハードウェ
ア資源に従って最適化することができる。
チャートである。この実施例の場合、ユーザは、コンピ
ュータ装置の所望のハードウェア属性を入力する(40)。
そのユーザにより入力された(40)ハードウェア属性は、
次いでコンピュータ装置の記憶領域に記憶される(42)。
次いで、そのコンピュータ装置は、あたかも所望のハー
ドウェア属性を有しているかのようにソフトウェアを実
行する(44)。
例を使用して、様々なソフトウェアプログラムまたはア
ルゴリズムの実行速度においてハードウェア資源が果た
す効果についての研究を行う。勿論、コンピュータ装置
は、ユーザが入力した(40)ハードウェア資源だけを提供
するように、それ自体を構成しなければならない。その
ようにする場合、ユーザが、コンピュータ装置のハード
ウェア属性を越えてハードウェア属性を入力する(40)こ
とができないのは当然の制限である。好適には、第2実
施例による方法はまた、最適化されているコードを実行
するのに先立ち、第1実施例の場合のように、ソフトウ
ェアのコードの一部を最適化することもできる。
ドウェア属性をコンピュータ装置に記憶させるための、
プログラムとコンピュータ装置との間の対話の一例を示
すブロック図である。一例として、プログラム50は、ユ
ーザ指定フィールド53を含むStore Hardware Attribute
Instruction(ハードウェア属性記憶命令)52を備えて
いる。そのユーザ指定フィールド53は、ユーザにより入
力されるハードウェア属性を含み、またはそのハードウ
ェア属性を指すものである。Store HardwareAttribute
Instruction 52が実行されると、ユーザにより入力され
たハードウェア属性が、コンピュータ装置56中に含まれ
る属性記憶領域54に記憶される。その後、コンピュータ
装置56は、記憶領域54に記憶されている所望のハードウ
ェア属性に従って、そのハードウェア資源を構成する。
コンピュータ装置56はまた、物理属性記憶領域58に記憶
されているコンピュータ装置56の物理属性に対する所望
のハードウェア属性のチェックを行って、正当な値だけ
が記憶されるようにする。例えば、コンピュータ装置が
256kByteのキャッシュを備えており、また、100kByte
のキャッシュを要求するハードウェア属性をユーザが入
力した場合には、その要求されたキャッシュサイズはそ
のコンピュータ装置で利用可能なキャッシュサイズより
小さいが、そのハードウェア属性が2のべき乗でないこ
とより、その所望のハードウェア属性(例えば、100kBy
te)は不当なものとなる。
性は、多くの異なる方法により、ソフトウェアに対して
アクセス可能なものとすることができる。第1の方法
は、ハードウェア属性を含むようにパワーオン時にセッ
トされるハードウェアセットレジスタを用いることであ
る。その属性は、コンピュータにより自己決定し、また
はキーボードを介してコンピュータにロードすることが
できる。第2の方法は、リードオンリメモリ(例えば、
ROMまたはEPROM)の一部中にコンピュータのハードウェ
ア属性を提供することである。第3の方法は、コンピュ
ータのオペレーティングシステムのブートアップ時に適
当なハードウェア属性を記憶するレジスタを設けること
である。第4の方法は、制御レジスタを属性専用に使用
することである。制御レジスタを用いる利点は、本発明
の第2実施例が用いられることになる場合に重要となる
使用すべきハードウェア属性をユーザが指定できること
にある。第5の方法は、ハードウェア属性を記憶させる
目的のためにメモリの一部を専用に使用することであ
る。第4の方法と同様に、この方法もまた、コンピュー
タ装置で用いられるべき特定のハードウェア属性をユー
ザが指定することを可能にする。
アにより必要とされるハードウェア属性に依存して、ソ
フトウェアプログラムは、様々なハードウェア照会命令
を備える。一般に、これらの照会命令は、コンピュータ
装置のいかなる特定のハードウェア属性をもロードする
ことができる。その例として、以下に示すような質問命
令が、ソフトウェアのコード性能の最適化に有用であ
る。
データキャッシュに関するキャッシュサイズのロード) Load Cache Line Size for Level 1 Data Cache(レベル
1のデータキャッシュに関するキャッシュラインサイズ
のロード) Load Cache Associativity for Level 1 Data Cache(レ
ベル1のデータキャッシュに関するキャッシュ連想性の
ロード) Load Replacement Algorithm for Level 1 Data Cache
(レベル1のデータキャッシュに関する置換アルゴリズ
ムのロード) Load Write Through vs Write Back for Level 1 Data
Cache(レベル1のデータキャッシュに関する「ライトス
ルー対ライトバック(write through vs write back)」
のロード) Load Cache Size for Level 2 Data Cache(レベル2の
データキャッシュに関するキャッシュサイズのロード) Load Cache Line Size for Level 2 Data Cache(レベル
2のデータキャッシュに関するキャッシュラインサイズ
のロード) Load Cache Associativity for Level 2 Data Cache(レ
ベル2のデータキャッシュに関するキャッシュ連想性の
ロード) Load Replacement Algorithm for Level 2 Data Cache
(レベル2のデータキャッシュに関する置換アルゴリズ
ムのロード) Load Write Through vs Write Back for Level 2 Data
Cache(レベル2のデータキャッシュに関する「ライトス
ルー対ライトバック」のロード) Load Mechanism for cache consistency (for multipro
cessors)(キャッシュの一貫性のためのメカニズムのロ
ード(マルチプロセッサ用)) Load Number of Data Translation Look-aside Buffer
(DTLB) Entries(データ変換ルックアサイドバッファ(DT
LB)項目の数のロード) Load DTLB Associativity(DTLB 連想性のロード) Load DTLB Page Size of page containing specified a
ddress(指定アドレスを含むページのDTLBページサイズ
のロード) Load Main Memory Interleave Factor(メインメモリの
インタリーブファクタのロード) Load Main Memory Size(メインメモリサイズのロード) Load Main Memory Bank Busy Time(メインメモリのバン
クのビジータイムのロード) Load Number of Integer Registers(整数レジスタの数
のロード) Load Number of Floating Point Registers(浮動小数点
レジスタの数のロード) Load Number of General Purpose Registers(汎用レジ
スタの数のロード) Load Number of Vector Integer Registers(ベクトル整
数レジスタの数のロード) Load Number of Vector Floating Point Registers(ベ
クトル浮動小数点レジスタの数のロード) Load Number of Vector General Purpose Registers(ベ
クトル汎用レジスタの数のロード) Load Processor Cycle Time(プロセッサのサイクルタイ
ムのロード) Load Number of Functional Units(機能ユニットの数の
ロード) Load Floating Point Availability(浮動小数点の可用
性のロード) 同様に、本発明の第2実施例では、ソフトウェアプログ
ラムは、制御されるべきハードウェア属性に応じて様々
な記憶命令を含んでいる。一般に、これらの記憶命令
は、コンピュータ装置のあらゆる特定のハードウェア属
性をロードすることができる。例えば、上記列挙の各照
会命令毎に、対応する1つの記憶命令が利用可能であ
る。
ログラム内のコードまたは特定アルゴリズムを最適化す
るものとして本発明を一般的に説明してきたが、本発明
は、多くの用途を有するものである。その多くの用途の
うちの幾つかについては上記で説明されている。即ち、
マトリクス乗算、種々のライブラリ機能、コンパイラ、
データベースプログラム、およびオペレーティングシス
テムについてである。勿論、最適化されるソフトウェア
プログラムは、いかなるタイプ、構造また言語のものと
することもできる。
より明らかであり、従って、特許請求の範囲は、本発明
のそのような特徴および利点の全てを包括するよう意図
したものである。更に、当業者であれば多数の修正例お
よび変更例を容易に考案することが可能であるので、本
発明を図示及び説明を行った構成に厳密に限定すること
を所望してはいない。このため、全ての適当な修正策及
びその等価物を本発明の範囲に含まれるものとして請求
する。
なるコンピュータ上での移植可能ソフトウェアプログラ
ムの実行を動的に最適化することが可能となる。
て、前記コンピュータプログラムが、ランタイムにおい
て前記コンピュータ装置に対して前記コンピュータプロ
グラム自体を最適化させることを特徴とする、コンピュ
ータ装置。
タ装置であって、前記コンピュータプログラムが、少な
くとも1つのハードウェア属性に基づいて、最適実行の
ために前記コンピュータプログラム中のアルゴリズムを
選択することにより、または、少なくとも1つのハード
ウェア属性に従って、最適実行のために前記コンピュー
タプログラム中のアルゴリズムを構成することにより、
前記コンピュータ装置に対して前記コンピュータプログ
ラム自体を最適化させることを更に特徴とする、コンピ
ュータ装置。
グラムの実行効率を改善する方法であって、異なるコン
ピュータのうちの1つにおける移植可能プログラムに関
するランタイムにおいて、前記の異なるコンピュータの
うちの1つから、その異なるコンピュータのうちの1つ
についての少なくとも1つのハードウェア属性を取得
し、その後、取得された前記の少なくとも1つのハード
ウェア属性に基づいて、前記の異なるコンピュータのう
ちの1つに関する移植可能プログラムの少なくとも一部
の性能を最適化する、というステップを備えることを特
徴とする、異なるコンピュータによる移植可能プログラ
ムの実行効率を改善する方法。
グラム中のハードウェア属性のロード命令を実行して、
前記の異なるコンピュータのうちの1つから少なくとも
1つのハードウェア属性を取得することを更に特徴とす
る、前項3記載の方法。
ュータを備えたコンピュータ装置において、前記コンピ
ュータに所望されるハードウェア資源に対応する少なく
とも1つのハードウェア属性を記憶するプログラムアク
セス可能記憶領域と、そのプログラムアクセス可能記憶
領域に記憶されている前記の少なくとも1つのハードウ
ェア属性に従って前記コンピュータがあたかも所望のハ
ードウェア資源を有しているかのように前記コンピュー
タを使用する第1手段とを備えていることを特徴とす
る、コンピュータ装置。
ス可能記憶領域に記憶されている前記の少なくとも1つ
のハードウェア属性を使用して、前記コンピュータの前
記所定のハードウェア資源の少なくとも一部の使用を制
限し、更に、前記コンピュータ装置が、前記の少なくと
も1つのハードウェア属性が前記コンピュータの前記ハ
ードウェア資源についての許容値であるか否かを決定す
る手段を備えていることを特徴とする、前項5記載のコ
ンピュータ装置。
ータにより実行するためのコンピュータプログラムであ
って、このコンピュータプログラムが、所望される前記
ハードウェア資源に対応する前記の少なくとも1つのハ
ードウェア属性を前記プログラムアクセス可能記憶領域
に記憶させる少なくとも1つのハードウェア属性記憶命
令を備えている、前記コンピュータプログラムと、前記
ハードウェア属性に従って、残りの前記コンピュータプ
ログラムの少なくとも一部の実行を最適化する最適化装
置とを更に備えていることを特徴とする、前項5または
前項6記載のコンピュータ装置。
属性を構成する方法であって、前記コンピュータ装置に
関する所望のハードウェア属性を入力し、その所望のハ
ードウェア属性を前記コンピュータ装置の第1記憶領域
に記憶させ、前記の所望のハードウェア属性に従って構
成された前記コンピュータ装置中のソフトウェアプログ
ラムの少なくとも一部を実行する、というステップを備
えることを特徴とする、コンピュータ装置に関するハー
ドウェア属性を構成する方法。
プログラム中のハードウェア属性記憶命令を実行して、
前記の所望のハードウェア属性を前記第1記憶領域に記
憶させ、前記実行ステップが、前記所望のハードウェア
属性に基づいて、前記ソフトウェアプログラム中のコー
ドの少なくとも一部を最適化することを更に特徴とす
る、前項8記載の方法。
る。
めのコンピュータプログラムとコンピュータ装置との間
の対話の第1例を示すブロック図である。
のコンピュータプログラムとコンピュータ装置との間の
対話の第2例を示すブロック図である。
る。
ウェア属性を記憶させるためのコンピュータプログラム
とコンピュータ装置との間の対話の一例を示すブロック
図である。
Claims (1)
- 【請求項1】移植可能コンピュータプログラムを実行す
るコンピュータ装置において、前記コンピュータ装置の
複数のハードウェア属性を記憶する、前記コンピュータ
装置に関連付けされたハードウェア属性記憶領域を備
え、このハードウェア属性記憶領域がコンピュータプロ
グラムによりアクセス可能なものであり、これにより、
前記コンピュータプログラムが、前記ハードウェア属性
記憶領域に記憶されているハードウェア属性のうちの少
なくとも一つに従い、前記コンピュータ装置に対して前
記コンピュータプログラム自体を動的に最適化させるこ
とを可能にすることを特徴とする、移植可能コンピュー
タプログラムを実行するコンピュータ装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US018972 | 1993-02-18 | ||
US08/018,972 US5944819A (en) | 1993-02-18 | 1993-02-18 | Method and system to optimize software execution by a computer using hardware attributes of the computer |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06290056A true JPH06290056A (ja) | 1994-10-18 |
Family
ID=21790708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6021329A Pending JPH06290056A (ja) | 1993-02-18 | 1994-02-18 | 異なるコンピュータ上でのソフトウェアの実行を最適化するための方法および装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5944819A (ja) |
JP (1) | JPH06290056A (ja) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6059842A (en) * | 1998-04-14 | 2000-05-09 | International Business Machines Corp. | System and method for optimizing computer software and hardware |
US6580431B1 (en) * | 1999-03-04 | 2003-06-17 | Nexmem | System, method, and computer program product for intelligent memory to accelerate processes |
US20020135611A1 (en) * | 1999-03-04 | 2002-09-26 | Trevor Deosaran | Remote performance management to accelerate distributed processes |
US6671802B1 (en) * | 2000-04-13 | 2003-12-30 | Hewlett-Packard Development Company, L.P. | Performance optimization of computer system by dynamically and immediately updating a configuration setting based on detected change in preferred use |
EP1486867A1 (en) * | 2003-06-12 | 2004-12-15 | Sap Ag | Adapting software service to environment of computer |
US7266677B1 (en) | 2003-09-25 | 2007-09-04 | Rockwell Automation Technologies, Inc. | Application modifier based on operating environment parameters |
US7487195B2 (en) | 2003-09-29 | 2009-02-03 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using composite blocking based on L1 cache size |
US7571435B2 (en) * | 2003-09-29 | 2009-08-04 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using preloading of floating point registers |
US7469266B2 (en) | 2003-09-29 | 2008-12-23 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using register block data format routines |
US20050071405A1 (en) * | 2003-09-29 | 2005-03-31 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using level 3 prefetching for kernel routines |
US7386582B2 (en) * | 2003-09-29 | 2008-06-10 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using a hybrid full-packed storage format |
US7490120B2 (en) * | 2003-09-29 | 2009-02-10 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using a selectable one of six possible level 3 L1 kernel routines |
US7475101B2 (en) | 2003-09-29 | 2009-01-06 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using streaming |
US7610407B2 (en) * | 2003-12-11 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | Method for exchanging information between at least two participants via at least one intermediary to limit disclosure between the participants |
US20060179240A1 (en) * | 2005-02-09 | 2006-08-10 | International Business Machines Corporation | System and method for algorithmic cache-bypass |
US20060195411A1 (en) * | 2005-02-28 | 2006-08-31 | Microsoft Corporation | End user data activation |
WO2006100011A1 (en) * | 2005-03-23 | 2006-09-28 | Siemens Aktiengesellschaft | A configuration of programs |
US7543282B2 (en) * | 2006-03-24 | 2009-06-02 | Sun Microsystems, Inc. | Method and apparatus for selectively executing different executable code versions which are optimized in different ways |
US8044555B2 (en) * | 2007-07-17 | 2011-10-25 | Fujinon Corporation | Driving apparatus |
US10877812B2 (en) | 2018-09-06 | 2020-12-29 | International Business Machines Corporation | Hardware environment and method of performing matrix multiplication in artificial intelligence applications |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6226535A (ja) * | 1985-07-22 | 1987-02-04 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | プログラム内の変換テ−ブルの修正方法 |
EP0443876A3 (en) * | 1990-02-23 | 1992-01-02 | Kabushiki Kaisha Toshiba | Computer system capable of connecting expansion unit |
US5142469A (en) * | 1990-03-29 | 1992-08-25 | Ge Fanuc Automation North America, Inc. | Method for converting a programmable logic controller hardware configuration and corresponding control program for use on a first programmable logic controller to use on a second programmable logic controller |
US5237689A (en) * | 1990-05-31 | 1993-08-17 | Hewlett-Packard Company | Configuration of mass storage devices |
US5212794A (en) * | 1990-06-01 | 1993-05-18 | Hewlett-Packard Company | Method for optimizing computer code to provide more efficient execution on computers having cache memories |
US5193174A (en) * | 1990-07-23 | 1993-03-09 | International Business Machines Corporation | System for automatically redirecting information to alternate system console in response to the comparison of present and default system configuration in personal computer system |
US5051745A (en) * | 1990-08-21 | 1991-09-24 | Pkware, Inc. | String searcher, and compressor using same |
US5257379A (en) * | 1991-09-04 | 1993-10-26 | International Business Machines Corporation | Establishing synchronization of hardware and software I/O configuration definitions |
-
1993
- 1993-02-18 US US08/018,972 patent/US5944819A/en not_active Expired - Lifetime
-
1994
- 1994-02-18 JP JP6021329A patent/JPH06290056A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US5944819A (en) | 1999-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH06290056A (ja) | 異なるコンピュータ上でのソフトウェアの実行を最適化するための方法および装置 | |
US8180964B1 (en) | Optimization of cache configuration for application design | |
US7926046B2 (en) | Compiler method for extracting and accelerator template program | |
US5889996A (en) | Accelerator for interpretive environments | |
US5548761A (en) | Compiler for target machine independent optimization of data movement, ownership transfer and device control | |
Ramachandran et al. | Performance evaluation of NAS parallel benchmarks on Intel Xeon Phi | |
US8949532B1 (en) | Automatic generation of cache-optimized code | |
KR100478025B1 (ko) | 보안해석기에서전용변수함수호출의실행시간을최적화하기위한시스템및그방법 | |
US8745631B2 (en) | Intelligent memory device with ASCII registers | |
KR20100115578A (ko) | 재구성 가능한 프로세서 및 그 재구성 방법 | |
US7788275B2 (en) | Customization of relationship traversal | |
Moritz et al. | Flexcache: A framework for flexible compiler generated data caching | |
Jones et al. | High-performance parallel graph reduction | |
Psaropoulos et al. | Interleaving with coroutines: a systematic and practical approach to hide memory latency in index joins | |
Beri et al. | The unicorn runtime: efficient distributed shared memory programming for hybrid cpu-gpu clusters | |
Brahmakshatriya et al. | Compiling graph applications for GPU s with GraphIt | |
US6260191B1 (en) | User controlled relaxation of optimization constraints related to volatile memory references | |
US7251594B2 (en) | Execution time modification of instruction emulation parameters | |
US7594232B2 (en) | Intelligent memory device for processing tasks stored in memory or for storing data in said memory | |
Müller et al. | He.. ro db: A concept for parallel data processing on heterogeneous hardware | |
Ferat et al. | Enhancing MPI+ OpenMP task based applications for heterogeneous architectures with GPU Support | |
Arandi et al. | Data-driven thread execution on heterogeneous processors | |
KR100727627B1 (ko) | 동적링킹 라이브러리를 사용하는 어플리케이션을 지원하는방법 및 이를 이용한 시스템 | |
Dastgeer et al. | A Framework for Performance-aware Composition of Applications for GPU-based Systems | |
Hurson et al. | Cache memories for dataflow systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040427 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040726 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040729 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041021 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20041130 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050330 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20050519 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20050610 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070926 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20071002 |