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
Application number
JP6021329A
Other languages
English (en)
Inventor
Kumar Rajendra
ラジェンドラ・クマー
H Karp Alan
アラン・エイチ・カープ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH06290056A publication Critical patent/JPH06290056A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource 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

(57)【要約】 【目的】 異なるコンヒ゜ュータ上での移植可能ソフトウェアフ゜ロク゛ラム
の実行を動的に最適化する方法及び装置を提供すること 【構成】 ソフトウェア20,30,50が、ランタイムにおいてコンヒ゜ュータ2
6,36,56と通信を行うことを可能とする方法及び装置が
開示されている。その通信により、異なるコンヒ゜ュータ上でソ
フトウェアを最適速度で実行することが可能となる。詳細に
は、ソフトウェア20,30は、ランタイムにおいてコンヒ゜ュータ26,36に照会
を行って(10)、そのハート゛ウェア資源を決定する。ソフトウェア
は、利用可能なハート゛ウェア資源を知ると、それに従ってコート
゛性能を最適化する(12)。代替的には、本発明は、コンヒ゜ュ
ータ56により使用されるべきハート゛ウェア資源をソフトウェア50が指
定する(40)ことを可能にする。これにより、ソフトウェア開発
者は、ソフトウェア50により指定された資源を実際に有するか
のように動作するようにコンヒ゜ュータ56を構成する(44)こと
が可能となる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータ資源に従
ってソフトウェアプログラムの性能を最適化するための
技術に関し、特に、異なるコンピュータ上での移植可能
ソフトウェアプログラムの実行を動的に最適化するため
の方法および装置に関する。
【0002】
【従来の技術及び発明が解決しようとする課題】ハード
ウェア資源は、コンピュータによって異なるものであ
る。その結果として、異なるコンピュータ上で最適速度
でソフトウェアを実行させるためには、その異なるコン
ピュータ毎にソフトウェアをコンパイルしなければなら
ない。
【0003】現在のところ、ソフトウェアは、幾つかの
異なるコンピュータ間で移植可能性を有するように生成
されている。問題は、そのソフトウェアが、異なるコン
ピュータの各々において最適速度で走らないことにあ
る。特に、ソフトウェアは(移植可能性を有する場合で
あっても)、典型的には、特定のコンピュータの既知の
ハードウェア属性に従って、その特定のコンピュータ上
で走るようにコンパイルされる。代替的には、ソフトウ
ェアをコンパイルする際に、コンパイラは、そのソフト
ウェアが使用されると思われる或る種類のコンピュータ
のハードウェア特性の一般的な組を仮定することができ
る。前者の場合、ソフトウェアは、特定のコンピュータ
でのみ最適速度で走ることになる。また後者の場合に
は、ソフトウェアは、いずれのコンピュータにおいても
最適速度で走ることは決してない。
【0004】問題はまた、ソフトウェアの流通にまで拡
張する。即ち、ソフトウェアのベンダは、そのソフトウ
ェアが使用されると思われる多数の既知のコンピュータ
の各々について最適性能を与えるように特定のバージョ
ンのソフトウェアプログラムを作成することは所望しな
い。これに対し、ソフトウェアのベンダおよびプログラ
ムのユーザは、できるだけ少ないバージョンのプログラ
ムを所望している。ベンダがこれを望む理由は、そうす
ることにより在庫やサポートの要求が減少するからであ
る。ユーザは、現在所有し、また将来所有する可能性の
ある異なるコンピュータにソフトウェアを移植する能力
を正当に評価するものの、その結果として生じる劣化し
た性能には不満足感を覚えることとなる。
【0005】本発明は、この問題に対して解決策を提供
し、単一バージョンのソフトウェアプログラムが多数の
異なるコンピュータ上で最適速度で実行できるようにす
る。
【0006】
【課題を解決するための手段】広範には、本発明は、ソ
フトウェアがコンピュータと通信を行ってコンピュータ
装置のハードウェア属性の取得または設定を行うことを
可能にするものである。
【0007】本発明の第1実施例では、ソフトウェア
は、ランタイムにコンピュータに照会を行ってそのハー
ドウェア資源を決定する。ソフトウェアは、利用可能な
ハードウェア資源を知ると、それに従って、そのコード
性能を最適化させる。
【0008】この第1実施例の重要な利点は、ソフトウ
ェアが、異なるコンピュータ装置の間での移植可能性を
有するだけでなく、異なるコンピュータ上で最適速度で
実行されることにある。その結果として、本発明によれ
ば、単一のバージョンのソフトウェアが、異なるコンピ
ュータのいずれにおいてもその最適速度で実行可能とな
る。これに加え、本発明によりソフトウェアのライフサ
イクルが長くなる。これは、ハードウェアの変更やコン
ピュータ装置のアップグレードに亘りそのソフトウェア
が存続できるからである。更に、ソフトウェアを生成す
る企業は、市場全体にアピールする単一バージョンのソ
フトウェアプログラムのみをコンパイルすることによ
り、そのオーバヘッドを削減し、従って、その検査、サ
ポートおよび在庫要件を簡略化することができる。
【0009】本発明の第2実施例では、ハードウェア属
性が入力され、次いでコンピュータ装置の記憶領域に記
憶される。その後、そのコンピュータ装置は、前記記憶
領域に記憶されているハードウェア属性に従ってソフト
ウェアを実行する。この第2実施例の利点は、所望する
ハードウェア属性をコンピュータに知らせることではな
く、ハードウェア属性により識別される資源を実際に有
するかのように動作するようコンピュータをソフトウェ
アの開発者が構成することを可能にすることにある。
【0010】
【実施例】本発明の実施例を図1ないし図5を参照して
以下に説明する。しかし、それら図面に関してここで与
える詳細な説明は例示を目的とするものであり、本発明
はこれらの限定的な実施例を越えて拡張するものである
ということは、当業者には容易に理解されよう。
【0011】図1のフローチャートは、本発明の第1実
施例に従った方法を示すものである。最初に、ソフトウ
ェアは、そのランタイムにおいてハードウェア属性に関
してコンピュータに照会を行う(10)。ソフトウェアは、
コンピュータのハードウェア属性を知ると、そのソフト
ウェアのコードの少なくとも一部をコンピュータに対し
て最適化させる(12)。その最適化が行われると、そのコ
ードはコンピュータによって実行される(14)。
【0012】ハードウェア属性には、コンピュータ中で
利用可能なハードウェア資源に関する情報が含まれてい
る。例えば、ハードウェア属性は、キャッシュメモリの
サイズ、メインメモリのサイズ、プロセッサのサイクル
タイム、または、浮動小数点レジスタ数を示すことがで
きる。勿論、ハードウェア資源についての他の多数のハ
ードウェア属性を用いることも可能である。
【0013】ソフトウェアは、多くの異なる方法でその
ソフトウェアを実行させるコンピュータのハードウェア
属性に対し、その性能を最適化させる(12)ことができ
る。一般に、ハードウェア属性は、最適な実行のために
ソフトウェア中のコードを最適化させる(12)ために用い
られる。例えば、ソフトウェアは、ハードウェア属性を
用いてそのソフトウェアに含まれる幾つかのアルゴリズ
ムのうちの1つを決定することができ、また、そのソフ
トウェア内の汎用アルゴリズムに関して変数またはルー
プ限界を簡単に設定することができる。いずれにせよ、
最適化(12)による効果は、コンピュータによって提供さ
れるハードウェア資源に従って、最適実行のためにソフ
トウェアのコードが構成される、ということである。
【0014】一般に、従来のコンピュータは、そのハー
ドウェア資源をソフトウェアに知らせるための手段を全
く有さないものである。その例外の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版を参照されたい。
【0015】いずれにせよ、移植可能ソフトウェアは、
そのソフトウェアを走らせているコンピュータのハード
ウェア属性に関して情報を得ることができないものであ
る。より重要なことは、実際にソフトウェアを実行して
いるコンピュータに利用可能なハードウェア資源の知識
なくしては、異なるコンピュータ上での実行に関して移
植可能ソフトウェアを最適化させることができない、と
いうことである。
【0016】一般に、ソフトウェアは、異なる問題を解
決するために実行される多くのアルゴリズムを含んでい
る。利用可能なハードウェア資源についての知識をソフ
トウェアが有していない場合には、それらのアルゴリズ
ムは異なるコンピュータ上で最適速度で実行することが
できない。例えば、ブロック化マトリクス乗算アルゴリ
ズムは、マトリクスセット全体を保持するには不十分な
大きさのキャッシュサイズを有するコンピュータに高性
能を与えることができるものである、ということは周知
である。ブロック化マトリクス乗算アルゴリズムについ
ては、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)に詳述されている。な
お、上記引用をもってその開示内容を本明細書に包含さ
せたものとし、その詳細な説明は省略する。このような
場合、所与のコンピュータ装置のキャッシュに対する最
適なブロックサイズを知ることは極めて有用である。そ
のためには、そのコンピュータ装置のキャッシュの構成
上の詳細に関する詳細な知識が必要となる。このような
構成上の詳細は、従来はそのコンピュータ装置のユーザ
マニュアルで提供されるが、ソフトウェアに対しては未
知のものとなる。その結果として、従来の技術では、異
なるコンピュータ装置上でアルゴリズムを効率的に実行
させることは不可能であった。
【0017】コードの最適化は、従来の最適化アルゴリ
ズムを用いて実施することができる。例えば、マトリク
ス乗算の場合、ブロックサイズアルゴリズムは、キャッ
シュのハードウェア属性に関して最適化させることが可
能であり、これにより、そのマトリクス乗算の性能が改
善される。別の例として、Anderson 等による「LAPACK
User's Guide」(Society for Industrial and Applied
Mathematics 1992)があり、これには、高性能コンピュ
ータ用の移植可能ソフトウェアにおける線形代数演算を
最適化させるための様々なアルゴリズムが含まれてい
る。なお、上記引用をもってその開示内容を本明細書に
包含させたものとし、その詳細な説明は省略する。ソフ
トウェアにハードウェア属性を提供することにより、そ
のソフトウェア内の最適化アルゴリズムを用いて、異な
るコンピュータ上で最適速度で走る移植可能ソフトウェ
アを生成することが可能となる。
【0018】コードの最適化はまた、様々なタイプのプ
ログラムに実行することができる。そのようなプログラ
ムには、例えば、汎用アプリケーションプログラム、専
用アプリケーションプログラム、ユーティリティプログ
ラム、オペレーティングシステム、およびコンパイラが
含まれる。例えば、オペレーティングシステムプログラ
ムに関しては、ハードウェア属性に従ってコードを最適
化させて、走らせるタスクの最適数を決定することによ
り性能を改善することができる。オペレーティングシス
テムプログラムが備える内部データ構造は、パラメータ
が既知である場合に、コンピュータのメモリ階層の使用
を最適化することができるものである。別の例として、
最速レベルのメモリ階層における最近の使用データを維
持することにより性能を改善するデータベースプログラ
ム(例えば dBase)がある。更に別の例としては、ハード
ウェア属性を使用して、コンパイラにより生成されるプ
ログラムの性能に加えてその性能も改善するコンパイラ
プログラムがある。
【0019】図2は、上記の第1実施例に従ってハード
ウェア属性を得るための、コンピュータプログラムとコ
ンピュータ装置との間の対話の第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に要求する。
【0020】図3は、上記の第1実施例に従ってキャッ
シュのハードウェア属性を得るための、プログラムとコ
ンピュータ装置との間の対話の第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により提供されたハードウェ
ア資源に従って最適化することができる。
【0021】図4は、本発明の第2実施例を示すフロー
チャートである。この実施例の場合、ユーザは、コンピ
ュータ装置の所望のハードウェア属性を入力する(40)。
そのユーザにより入力された(40)ハードウェア属性は、
次いでコンピュータ装置の記憶領域に記憶される(42)。
次いで、そのコンピュータ装置は、あたかも所望のハー
ドウェア属性を有しているかのようにソフトウェアを実
行する(44)。
【0022】ソフトウェア開発者は、本発明の第2実施
例を使用して、様々なソフトウェアプログラムまたはア
ルゴリズムの実行速度においてハードウェア資源が果た
す効果についての研究を行う。勿論、コンピュータ装置
は、ユーザが入力した(40)ハードウェア資源だけを提供
するように、それ自体を構成しなければならない。その
ようにする場合、ユーザが、コンピュータ装置のハード
ウェア属性を越えてハードウェア属性を入力する(40)こ
とができないのは当然の制限である。好適には、第2実
施例による方法はまた、最適化されているコードを実行
するのに先立ち、第1実施例の場合のように、ソフトウ
ェアのコードの一部を最適化することもできる。
【0023】図5は、本発明の第2実施例に従ってハー
ドウェア属性をコンピュータ装置に記憶させるための、
プログラムとコンピュータ装置との間の対話の一例を示
すブロック図である。一例として、プログラム50は、ユ
ーザ指定フィールド53を含むStore Hardware Attribute
Instruction(ハードウェア属性記憶命令)52を備えて
いる。そのユーザ指定フィールド53は、ユーザにより入
力されるハードウェア属性を含み、またはそのハードウ
ェア属性を指すものである。Store HardwareAttribute
Instruction 52が実行されると、ユーザにより入力され
たハードウェア属性が、コンピュータ装置56中に含まれ
る属性記憶領域54に記憶される。その後、コンピュータ
装置56は、記憶領域54に記憶されている所望のハードウ
ェア属性に従って、そのハードウェア資源を構成する。
コンピュータ装置56はまた、物理属性記憶領域58に記憶
されているコンピュータ装置56の物理属性に対する所望
のハードウェア属性のチェックを行って、正当な値だけ
が記憶されるようにする。例えば、コンピュータ装置が
256kByteのキャッシュを備えており、また、100kByte
のキャッシュを要求するハードウェア属性をユーザが入
力した場合には、その要求されたキャッシュサイズはそ
のコンピュータ装置で利用可能なキャッシュサイズより
小さいが、そのハードウェア属性が2のべき乗でないこ
とより、その所望のハードウェア属性(例えば、100kBy
te)は不当なものとなる。
【0024】更に、コンピュータ装置のハードウェア属
性は、多くの異なる方法により、ソフトウェアに対して
アクセス可能なものとすることができる。第1の方法
は、ハードウェア属性を含むようにパワーオン時にセッ
トされるハードウェアセットレジスタを用いることであ
る。その属性は、コンピュータにより自己決定し、また
はキーボードを介してコンピュータにロードすることが
できる。第2の方法は、リードオンリメモリ(例えば、
ROMまたはEPROM)の一部中にコンピュータのハードウェ
ア属性を提供することである。第3の方法は、コンピュ
ータのオペレーティングシステムのブートアップ時に適
当なハードウェア属性を記憶するレジスタを設けること
である。第4の方法は、制御レジスタを属性専用に使用
することである。制御レジスタを用いる利点は、本発明
の第2実施例が用いられることになる場合に重要となる
使用すべきハードウェア属性をユーザが指定できること
にある。第5の方法は、ハードウェア属性を記憶させる
目的のためにメモリの一部を専用に使用することであ
る。第4の方法と同様に、この方法もまた、コンピュー
タ装置で用いられるべき特定のハードウェア属性をユー
ザが指定することを可能にする。
【0025】更に、最適化を実行するためにソフトウェ
アにより必要とされるハードウェア属性に依存して、ソ
フトウェアプログラムは、様々なハードウェア照会命令
を備える。一般に、これらの照会命令は、コンピュータ
装置のいかなる特定のハードウェア属性をもロードする
ことができる。その例として、以下に示すような質問命
令が、ソフトウェアのコード性能の最適化に有用であ
る。
【0026】 Load Cache Size for Level 1 Data Cache(レベル1の
データキャッシュに関するキャッシュサイズのロード) 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つの記憶命令が利用可能であ
る。
【0027】コンピュータ資源に従ってソフトウェアプ
ログラム内のコードまたは特定アルゴリズムを最適化す
るものとして本発明を一般的に説明してきたが、本発明
は、多くの用途を有するものである。その多くの用途の
うちの幾つかについては上記で説明されている。即ち、
マトリクス乗算、種々のライブラリ機能、コンパイラ、
データベースプログラム、およびオペレーティングシス
テムについてである。勿論、最適化されるソフトウェア
プログラムは、いかなるタイプ、構造また言語のものと
することもできる。
【0028】本発明の多数の特徴および利点は上記説明
より明らかであり、従って、特許請求の範囲は、本発明
のそのような特徴および利点の全てを包括するよう意図
したものである。更に、当業者であれば多数の修正例お
よび変更例を容易に考案することが可能であるので、本
発明を図示及び説明を行った構成に厳密に限定すること
を所望してはいない。このため、全ての適当な修正策及
びその等価物を本発明の範囲に含まれるものとして請求
する。
【0029】
【発明の効果】本発明は上述のように構成したので、異
なるコンピュータ上での移植可能ソフトウェアプログラ
ムの実行を動的に最適化することが可能となる。
【0030】以下に、本発明の実施態様を列挙する。
【0031】1.請求項1記載のコンピュータ装置であっ
て、前記コンピュータプログラムが、ランタイムにおい
て前記コンピュータ装置に対して前記コンピュータプロ
グラム自体を最適化させることを特徴とする、コンピュ
ータ装置。
【0032】2.請求項1または前項1記載のコンピュー
タ装置であって、前記コンピュータプログラムが、少な
くとも1つのハードウェア属性に基づいて、最適実行の
ために前記コンピュータプログラム中のアルゴリズムを
選択することにより、または、少なくとも1つのハード
ウェア属性に従って、最適実行のために前記コンピュー
タプログラム中のアルゴリズムを構成することにより、
前記コンピュータ装置に対して前記コンピュータプログ
ラム自体を最適化させることを更に特徴とする、コンピ
ュータ装置。
【0033】3.異なるコンピュータによる移植可能プロ
グラムの実行効率を改善する方法であって、異なるコン
ピュータのうちの1つにおける移植可能プログラムに関
するランタイムにおいて、前記の異なるコンピュータの
うちの1つから、その異なるコンピュータのうちの1つ
についての少なくとも1つのハードウェア属性を取得
し、その後、取得された前記の少なくとも1つのハード
ウェア属性に基づいて、前記の異なるコンピュータのう
ちの1つに関する移植可能プログラムの少なくとも一部
の性能を最適化する、というステップを備えることを特
徴とする、異なるコンピュータによる移植可能プログラ
ムの実行効率を改善する方法。
【0034】4.前記取得ステップが、前記移植可能プロ
グラム中のハードウェア属性のロード命令を実行して、
前記の異なるコンピュータのうちの1つから少なくとも
1つのハードウェア属性を取得することを更に特徴とす
る、前項3記載の方法。
【0035】5.所定のハードウェア資源を有するコンピ
ュータを備えたコンピュータ装置において、前記コンピ
ュータに所望されるハードウェア資源に対応する少なく
とも1つのハードウェア属性を記憶するプログラムアク
セス可能記憶領域と、そのプログラムアクセス可能記憶
領域に記憶されている前記の少なくとも1つのハードウ
ェア属性に従って前記コンピュータがあたかも所望のハ
ードウェア資源を有しているかのように前記コンピュー
タを使用する第1手段とを備えていることを特徴とす
る、コンピュータ装置。
【0036】6.前記第1手段が、前記プログラムアクセ
ス可能記憶領域に記憶されている前記の少なくとも1つ
のハードウェア属性を使用して、前記コンピュータの前
記所定のハードウェア資源の少なくとも一部の使用を制
限し、更に、前記コンピュータ装置が、前記の少なくと
も1つのハードウェア属性が前記コンピュータの前記ハ
ードウェア資源についての許容値であるか否かを決定す
る手段を備えていることを特徴とする、前項5記載のコ
ンピュータ装置。
【0037】7.前記コンピュータ装置が、前記コンピュ
ータにより実行するためのコンピュータプログラムであ
って、このコンピュータプログラムが、所望される前記
ハードウェア資源に対応する前記の少なくとも1つのハ
ードウェア属性を前記プログラムアクセス可能記憶領域
に記憶させる少なくとも1つのハードウェア属性記憶命
令を備えている、前記コンピュータプログラムと、前記
ハードウェア属性に従って、残りの前記コンピュータプ
ログラムの少なくとも一部の実行を最適化する最適化装
置とを更に備えていることを特徴とする、前項5または
前項6記載のコンピュータ装置。
【0038】8.コンピュータ装置に関するハードウェア
属性を構成する方法であって、前記コンピュータ装置に
関する所望のハードウェア属性を入力し、その所望のハ
ードウェア属性を前記コンピュータ装置の第1記憶領域
に記憶させ、前記の所望のハードウェア属性に従って構
成された前記コンピュータ装置中のソフトウェアプログ
ラムの少なくとも一部を実行する、というステップを備
えることを特徴とする、コンピュータ装置に関するハー
ドウェア属性を構成する方法。
【0039】9.前記記憶ステップが、前記ソフトウェア
プログラム中のハードウェア属性記憶命令を実行して、
前記の所望のハードウェア属性を前記第1記憶領域に記
憶させ、前記実行ステップが、前記所望のハードウェア
属性に基づいて、前記ソフトウェアプログラム中のコー
ドの少なくとも一部を最適化することを更に特徴とす
る、前項8記載の方法。
【図面の簡単な説明】
【図1】本発明の第1実施例を示すフローチャートであ
る。
【図2】第1実施例に従ってハードウェア属性を得るた
めのコンピュータプログラムとコンピュータ装置との間
の対話の第1例を示すブロック図である。
【図3】第1実施例に従ってキャッシュ属性を得るため
のコンピュータプログラムとコンピュータ装置との間の
対話の第2例を示すブロック図である。
【図4】本発明の第2実施例を示すフローチャートであ
る。
【図5】第2実施例に従ってコンピュータ装置にハード
ウェア属性を記憶させるためのコンピュータプログラム
とコンピュータ装置との間の対話の一例を示すブロック
図である。
【符号の説明】
20 プログラム 22 ハードウェア属性ロード命令 24 ハードウェア属性記憶領域 26 コンピュータ装置

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】移植可能コンピュータプログラムを実行す
    るコンピュータ装置において、前記コンピュータ装置の
    複数のハードウェア属性を記憶する、前記コンピュータ
    装置に関連付けされたハードウェア属性記憶領域を備
    え、このハードウェア属性記憶領域がコンピュータプロ
    グラムによりアクセス可能なものであり、これにより、
    前記コンピュータプログラムが、前記ハードウェア属性
    記憶領域に記憶されているハードウェア属性のうちの少
    なくとも一つに従い、前記コンピュータ装置に対して前
    記コンピュータプログラム自体を動的に最適化させるこ
    とを可能にすることを特徴とする、移植可能コンピュー
    タプログラムを実行するコンピュータ装置。
JP6021329A 1993-02-18 1994-02-18 異なるコンピュータ上でのソフトウェアの実行を最適化するための方法および装置 Pending JPH06290056A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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