JP4755371B2 - 計算機システム - Google Patents

計算機システム Download PDF

Info

Publication number
JP4755371B2
JP4755371B2 JP2001290986A JP2001290986A JP4755371B2 JP 4755371 B2 JP4755371 B2 JP 4755371B2 JP 2001290986 A JP2001290986 A JP 2001290986A JP 2001290986 A JP2001290986 A JP 2001290986A JP 4755371 B2 JP4755371 B2 JP 4755371B2
Authority
JP
Japan
Prior art keywords
program
execution environment
execution
common
error code
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
Application number
JP2001290986A
Other languages
English (en)
Other versions
JP2003099254A5 (ja
JP2003099254A (ja
Inventor
智 三坂
一夫 相坂
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2001290986A priority Critical patent/JP4755371B2/ja
Priority to US10/075,381 priority patent/US6934892B2/en
Publication of JP2003099254A publication Critical patent/JP2003099254A/ja
Publication of JP2003099254A5 publication Critical patent/JP2003099254A5/ja
Application granted granted Critical
Publication of JP4755371B2 publication Critical patent/JP4755371B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、異種実行環境における計算機システム構成方法に係り、アプリケーション・プログラムに、異なった実行環境の共通のエラーコードを返すようにするときに、実行プログラムのメモリ効率がよく、実行速度を低下させることなく、計算機システムを実装できるような計算機システム構成方法に関する。
【0002】
【従来の技術】
従来、異なった環境でコンピュータシステムを実行させるために、開発や移植を容易におこなうための技術が提案されている。
【0003】
このような技術の例として、特開平8―63363号公報の「仮想実行環境システム」がある。
【0004】
以下では、図1を用いてこの仮想実行環境システムについて説明する。
図1は、特開平8―63363号公報の「仮想実行環境システム」のシステム概要図である。
【0005】
ユーザ(プログラマ)が作成するアプリケーション・ソフトウェアのソースコードとしては、プログラム本体11と置換情報記述部12がある。
【0006】
プログラム本体は、アプリケーション・ソフトウェアの目的ごとに異なるソースコードであり、置換情報記述部12は、プログラム本体11中に記述された情報を、仮想実行環境が実現される既存オペレーティング・システム60の機種毎に対応して適切な情報に置換える部分である。
【0007】
オペレーティング・システム60で実行するためには、これらのプログラム本体11と置換情報記述部12に記述された置換情報を、既存オペレーティング・システム用コンパイラを利用して、実行可能プログラム30にし、それを実行部22が実行する。翻訳部21は、そのための仮想実行環境上で実行可能な実行可能プログラムに翻訳する部分である。
【0008】
その際に、ソースプログラムをC言語で記述するときには、置換情報記述部12は、コンパイラのプリプロセッサとして処理されるマクロ定義を利用することができる。
【0009】
このようにして、アプリケーションソフトウェア10のプログラム本体11を変更する事無く、様々な環境用に作成された実行可能プログラム30を既存オペレーティング・システム60上で動作させることが可能となる。
【0010】
次に、図2を用いて、より詳細に異種実行環境において従来技術の計算機システムを構成し、実行する場合について説明する。
図2は、異種実行環境においてソフトウェア開発をおこなうときの概念図である。
【0011】
ここでは、C言語により、アプリケーションを開発する場合を想定する。図1の置換情報記述部12にあたる部分に、C言語の共通関数102が提供される。
【0012】
システムとして、図2の様に計算機システム−A105a、計算機システム−B105bがあり、そこでプログラムを実行する環境を実行環境−A104a、実行環境−B104bと言うことにする。実行環境−A104aは、具体的には、ハードウェア−A106aと、ハードウェアを制御しアプリケーションプログラムとハードウェアの仲立ちをするOS−A107aである。
【0013】
アプリケーション本体100は、ユーザが個々のアプリケーションを記述するソースコードであり、システムから機能の提供を受けるときには、共通化関数102を呼出す。ここで、注意することは、アプリケーション本体100を記述するユーザは、共通化関数インタフェース101を意識すればよく、個々の環境によってコーディングを変えなくても良いことである。したがって、アプリケーション本体100は、ソースレベルでの互換性が保たれることになる。
【0014】
共通化関数102、開発用ライブラリ関数として提供され、ユーザには、共通化関数インタフェースが公開されることになる。共通化関数は、この様に環境に依らない統一したインタフェースをユーザに提供するためのものである。
【0015】
そして、ユーザが記述したソースをコンパイル・リンク作業をおこなって、実行形式を作成することになるが、実行環境−A104aで実行させるときには、図2に示される様に、コンパイラ−A108aでコンパイルし、実行環境−B104bで実行させるときには、コンパイラ−B108bでコンパイルする。
【0016】
また、同様に実行環境−A用のリンカA109aにより、実行環境プログラム−A103aをリンクする。実行環境プログラム−A103aは、実行環境−A104aで実行させるためのプログラムであり、このなかで、OS−A107aのシステムコールがコールされることになる。実行環境−B104bについても同様である。
【0017】
ユーザのソースコードであるアプリケーション本体100に対して、コンパイル、リンクがおこなわれ、この例では、実行環境−A104aと実行環境−B104b用に、それぞれ実行プログラム−A110aと、実行プログラム−B110bが生成される。
【0018】
そして、共通化関数102をコンパイルしたモジュールと、実行環境プログラム−A103a、実行環境プログラム−B103bは、コンパイル・リンクの作業を経て、それぞれの固有の実行環境で実行可能な実行環境差異吸収プログラム−A111aと実行環境差異吸収プログラム−B111bになる。
【0019】
次に、このようにして作成した実行プログラムを、計算機システムの実行環境のもとで動作させる場合について概説する。
【0020】
例えば、実行プログラム−A110aを、実行環境−Aのもとで実行するときには以下のようになる。すなわち、実行プログラム−A110aでは、共通化インターフェース102により、実行環境差異吸収プログラム−A111aを呼出す。この実行環境差異吸収プログラム−A111aは、アプリケーションから見たOSの差異を吸収し、インターフェースを共通化されるために設けられるモジュールである。呼び出された実行環境差異吸収プログラム−A111aは、OS−A107aの機能を実現するためのシステムコールを呼出して、所望のOSの機能をハードウェア−A106aにより実現する。ハードウェア−A106aの動作が終了すると、OS−A107aは、実行環境差異吸収プログラム−A111aに制御を戻す。最後に、実行環境差異吸収プログラム−A111aは、制御を実行プログラム−A110aに戻す。
【0021】
実行プログラム−B110bを、実行環境−B104bのもとで実行させるときも、同様の動作をするが、実行環境−B104bは、計算機システム−Bでさせるときの環境であるので、前提となるOSやハードウェアが異なっている。例えば、ハードウェア−A106aとハードウェア−B106bでは、機械語命令体系が異なり、実行環境プログラム−A103aと実行環境プログラム−B103bでは、OSの機能を呼出すためのシステムコールが異なっている。
【0022】
共通化インタフェース102は、プログラム本体11に変更を加える事無く、異なるOS上に実装してもプログラム本体11から、ほぼ同一のOS機能を呼び出して、異なるOS107に依存しない共通化エラーコードをプログラム本体11に伝えることを可能にするものである。なお、ここで、共通化エラーコードと言っているのは、OSに依存するエラーコードを、実行環境差異吸収プログラムで、そのまま、あるいは、書き換えて、アプリケーションから見たときには、環境によらない共通化されたエラーコードにするためである。
【0023】
共通化インタフェース102の仕様を定義することでOS機能の呼び出し方やプログラミング記述が統一され、プログラム本体11を別のアプリケーションソフトウェアに再利用させることが容易になる。
【0024】
【発明が解決しようとする課題】
上記従来技術は、異なった計算機システムの環境に、アプリケーションソフトウェアを開発して実行するシステムに関するものであった。
【0025】
ここで、図3ないし図7を用いて上記従来技術の動作において、エラーコードの取扱いに関し問題点が生ずることを説明する。
図3は、計算機システム−A105aで取扱われるデータ、プログラムコードと、レジスタ、メモリなどの関連をあらわす図である。
【0026】
計算機システム−A105aは、ハードウェア−A106aと、OS−A107aと、実行環境差異吸収プログラム−A111aと、実行プログラム−A110aで構成されることは前述した。
【0027】
ハードウェア−A106aには、図3に示されるように命令を実行するCPU−A121aと、プログラムやデータを格納するROM−A122aとRAM−A123aが搭載されている。そして、CPU−A121aは、複数の汎用レジスタを有している。
【0028】
すなわち、各用途により、ユーザの記述した引数を渡すための引数格納用途レジスタ124、一時変数を格納する一時変数格納用途レジスタ125、C関数の戻り値を返すための戻り値格納用途レジスタ126、ユーザに提供されるユーザ使用汎用レジスタ127などがある。
【0029】
また、CPU−A121aは、RAM−A123a上に実装されているスタック領域130内の番地を指すスタックポインタレジスタ128、ROM−A122aまたはRAM−A123a上に実装されたプログラムの現在実行中の命令の次のアドレスを指すプログラムカウンタレジスタ129を有している。
【0030】
一般に、C言語などのコンパイラが、CPUの汎用レジスタをデータや引数に割り付けるときには、大別してユーザに対してある関数を呼出した前後の値の存在を保証して、ユーザが使用しても良いとする(すなわち、アセンブラでレジスタの値を直接操作をしても良い)レジスタと、システム上で利用する汎用レジスタがある。この汎用レジスタは、ユーザに対しては、ある関数を呼出した前後の値の存在は保証していない。
【0031】
ここでは、任意のC関数が呼ばれた時点の前後で値の一貫性を保証しないレジスタとして、引数格納用途レジスタ124、一時変数格納用途レジスタ125、戻り値格納用途レジスタ126がある。また、一方、値の一貫性を保証するレジスタは、ユーザ使用汎用レジスタ127、スタックポインタレジスタ128、プログラムカウンタレジスタ129がある。
【0032】
引数格納用途レジスタ124、一時変数格納用途レジスタ125、戻り値格納用途レジスタ126、ユーザ使用汎用レジスタ127、スタックポインタレジスタ128は、通常は、それぞれ、同じ大きさの値を扱える分のレジスタ長になっている。
【0033】
ここで、ROM−A122a上に、実行プログラム−A110aのプログラムコードである実行プログラムコード−A131aと、実行環境差異吸収プログラム−A111aのプログラムコードである実行環境差異吸収プログラムコード−A132aと、OS−A107aのプログラムコードであるOSプログラムコード−A133aが格納されるものとする。これは、図2に示した様に、コンパイラA108aにより、実行環境−A用にコンパイルされたものである。そして、実行プログラム−A110aを実行させるためには、実行プログラムコード−A131aの命令語が解釈・実行される。また、同様に、実行環境差異吸収プログラム−A111aを実行させるためには、実行環境差異吸収プログラムコード−A132a命令語が、 OS−A107aのプログラムを実行するためには、OSプログラムコード−A133aが、それぞれ解釈・実行される。
【0034】
また、ROM−A122a上は、定数格納領域−A134aが実装されており、OS−A107aの機能に依存したOS依存エラーコード135aと、実行環境差異吸収プログラムで共通化されて提供される共通化エラーコード136が格納されている。
【0035】
さらに、RAM−A123a上には、既述のようにスタック領域130が実装されている。
【0036】
実行プログラムコード−A131aを実行するときには、CPU−A121aにより、実行プログラム開始番地137から始まり、実行プログラム終了番地138までにある命令語が解釈・実行される。その際、プログラムカウンタレジスタ129は、現在動作させている機械語命令の次に動作させる機械語命令の格納番地を指しており、スタックポインタレジスタ128は、現在使用しているスタック領域130内の任意のメモリ番地を指している。
【0037】
プログラムカウンタレジスタ129は、実行プログラムコード−A131a内にプログラムされた共通化インターフェース102部の入口部に到達すると、ジャンプ命令139によって、その共通化インターフェース102に対応する実行環境差異吸収プログラムコード−A132aの先頭番地を指してCPU−A121aを実行する。
【0038】
同じく、プログラムカウンタレジスタ129は、実行環境差異吸収プログラムコード−A132a内にプログラムされたOS−A107aのシステムコールの入口部に到達すると、ソフトウェア割り込み命令またはジャンプ命令140により、そのシステムコールに対応するOSプログラムコード−A133aの先頭番地を指して、CPU−A121aを実行する。
【0039】
OSプログラムコード−A133aが所定の機能を実行し終えると、実行環境差異吸収プログラム−A111aに伝えるため、OS−A107a依存エラーコード135aを、戻り値格納用途レジスタ126に戻り値を格納する。OS−A107a依存エラーコード135aは、OS107aのプログラムが正常終了したのか、 OS107aのプログラムや計算機システム−A105a内部でどのような異常が発生したかを示すための情報である。
【0040】
OS−Aプログラムコード−A133aによる戻り値の格納作業を終えると、プログラムカウンタレジスタ129は、実行環境差異吸収プログラムコード−A132aへの戻り先番地142を指して、リターン命令141を実行することにより、実行環境差異吸収プログラムコード−A132aに制御を移す。
【0041】
実行環境差異吸収プログラムコード−A132aに制御が戻ると、戻り値格納用途レジスタ126には、OS−A107a依存エラーコード135aが戻り値として入っている。一方、ROM−A122a内の或るOS−A107a依存エラーコード135aを一時変数格納用途レジスタ125にロードして、そして比較命令144で戻り値格納用途レジスタ126と一時変数格納用途レジスタ125に格納されている値を比較する。そして、全く等価なエラーコードが見つかったときには、実行環境差異吸収プログラムコード−A132aから、実行プログラムコード−A131aに制御が戻るときに、その全く等価なエラーコードに対応する共通化エラーコード136を、戻り値格納用途レジスタ126に格納して、実行プログラム−A110aに渡すことにする。見つからなかったときには、次の或るOS−A107a依存エラーコード135aを一時変数格納用途レジスタ125にロードして、比較命令144を繰りかえす。ここで、言う等価なエラーコードを見つけるとは、例えば、OS−A107a依存エラーコード135aが、「メモリエラー」を意味するときには、同じ「メモリエラー」を意味する共通化エラーコードを見つけると言うことである。
【0042】
ここで、ポイントになるのは、実行環境−A104aと実行環境−B104bとは、エラーコードは、共通化されており、実行プログラム−A110aと実行プログラム−B110bには、同じエラーコードが渡されると言うことである。そのため、アプリケーションを記述する者にとっては、環境の差異により返されるエラーコードが変わると言うことがなくなり、環境の差異によるコーディングの変更を気にしなくても良いと言うメリットが生ずる。
【0043】
なお、実行開発環境104によっては、OS依存エラーコード135と共通化エラーコード136は、それぞれ、定数格納領域134内ではなく、実行プログラムコード131、実行環境差異吸収プログラムコード132の途中等に実装されることもある。
【0044】
上記従来技術では、実行環境の差異を吸収するレイヤを設けたため、OSに依存しない共通化エラーコードを定義して、ユーザにアプリケーションの移植・記述の容易性を提供することができた。しかしながら、エラーコードのインプリメントに関しては、考慮されていない。
【0045】
というのも、共通化エラーコード136は、ROM−A122aの定数格納領域134、そして、実行プログラムコード131、および、実行環境差異吸収プログラムコード132の内部に格納されるために、ROM効率が悪くなるためである。この問題点は、共通化エラーコード136を大きな格納領域を要する値で定義した場合には、より大きくなるためである。
【0046】
このために、共通化エラーコード136の値を小さくすることが有効であるが、そのようにすると、CPUの命令セットの仕様から新たな問題点を生じる。以下、それについて、図4ないし図7を用いて説明する。
図4は、汎用レジスタでゼロ拡張する際の説明図である。
図5は、ゼロ拡張された汎用レジスタの値を負にする際の説明図である。
図6は、汎用レジスタで符号拡張する際の説明図である。
図7は、符号拡張された汎用レジスタの値をもとに戻す際の説明図である。
【0047】
CPUの命令セットの仕様としては、汎用レジスタに格納可能な範囲より比較的小さな値を格納する際に先ずゼロ拡張するもの、同じく先ず符号拡張するものが現存する。
【0048】
図4のように、命令セットの仕様として、小さな値を汎用レジスタにロードするときには、ゼロ拡張されるものがある。このときには、上の例では、CPU121αは、小さな正の値である定数データを、戻り値格納用途レジスタ126または一時変数格納用途レジスタ125の下位部161に格納し、上位部162をゼロ拡張する作業を1命令でおこなうことになる。
【0049】
また、図5に示されように、ゼロ拡張された汎用レジスタの値を負にするためには、上位部に0を2の補数変換処理命令163を施すなどの処理が必要になる。
【0050】
したがって、共通化エラーコード136の値を小さくしても、共通化エラーコード136の値を負のコードで定義して、しかも、レジスタにロードするときの命令セットの仕様が、上記のようにゼロ拡張するものであるときには、2の補数変換処理命令163等が追加することが必要になり、その分だけ、実行プログラムコード−A131aや実行環境差異吸収プログラムコード−A132aの命令数が増え、ROM効率が悪くなると言う問題点が生ずる。
【0051】
一方、図6のように、命令セットの仕様として、小さな値を汎用レジスタにロードするときには、符号拡張されるものがある。このときには、上の例では、CPU121βは、小さな正の値である定数データを、戻り値格納用途レジスタ126または一時変数格納用途レジスタ125の下位部161に格納する。そして、小さな値の符号ビットが0(正)のときには、レジスタの上位部を0にし、1(負)のときには、レジスタの上位部を1にする。この一連の動作は、一命令でおこなわれることになる。
【0052】
図7は、負に符号拡張された汎用レジスタの値を、もとに戻す処理を示している。もし、小さな値の定数データのMSB(Most Significant Bit)が1であるとする。このときに、この定数データを符号無しデータとみなすか、符号付きデータでみなすかで表している数値の意味が異なってくる。
【0053】
そして、小さな値の定数データが、MSBが1の符号無しデータであり、かつ、図6に示したように符号拡張されたときには、上位部の1を再び0にする必要が生じる。
【0054】
このように、共通化エラーコード136の値を小さくして、共通化エラーコード136の値を符号無しのコードで定義しても、レジスタにロードするときの命令セットの仕様が、上記のように符号拡張するものであるときには、上位部に0をパックする命令165等が追加することが必要になり、その分だけ、実行プログラムコード−A131aや実行環境差異吸収プログラムコード−A132aの命令数が増え、ROM効率が悪くなると言う問題点が生ずる。
【0055】
本発明は、上記問題点を解決するためになされたもので、その目的は、計算機システムの異なった実行環境で実行させるときのアプリケーション・プログラムにエラーコードを返す際に、既存の命令セットの体系を活かしながら、その共通化コードのインプリメントのためのROM効率を良くし、むだな命令を挿入することのない計算機システム構成方法を提供することにある。
【0056】
【課題を解決するための手段】
本発明では、実行環境の差異を吸収するために定義されている共通化エラーコード136を、定数格納領域134に格納しなくても良いようにするため、実行環境差異吸収プログラムコード132からの戻り値と共通化エラーコード136の値を同じ値にし、CPU121の実行できるImmediateロード命令181に埋め込める範囲内とするという手段を採る。
【0057】
また、命令セットの仕様として、小さな値を汎用レジスタにロードするときには、ゼロ拡張されるようになっているとき、2の補数変換処理命令163等を追加しなくても良いようにするために、共通化エラーコード136を符号無しの正のデータとして定義する。
【0058】
このように共通化エラーコード136を符号無しの正のデータと定義することで、2の補数変換処理命令163を追加しなくても良くなる。
【0059】
したがって、実行プログラムコード131や実行環境差異吸収プログラムコード132において、そのような命令を追加しなくても良くなり、ROM効率を良くすることができ、そのような命令を実行しなくて良いため、性能の低下も防止できる。
【0060】
また、命令セットの仕様として、小さな値を汎用レジスタにロードするときには、符号拡張されるようになっているとき、ゼロ埋め込み命令165を追加しなくても良いようにするため、共通化エラーコード136の値を、Immediate設定部182のMSBをゼロとして表せる数値範囲内にする。
【0061】
このように共通化エラーコード136の値を、Immediate設定部182のMSBをゼロとして表せる数値範囲内にすることで、ゼロ埋め込み命令165を追加しなくても良くなる。
【0062】
したがって、共通化エラーコード136を、Immediate設定部182のMSBをゼロとして表せる範囲の値に定義することで、ゼロ埋め込み命令165の追加は考慮せずに済むことが可能となる。
【0063】
したがって、実行プログラムコード131や実行環境差異吸収プログラムコード132において、そのような命令を追加しなくても良くなり、ROM効率を良くすることができ、そのような命令を実行しなくて良いため、性能の低下も防止できる。
【0064】
上記のように共通化エラーコード136を設定することで、命令セットとして、 Immediateロード命令を備えるCPU121に対し、実行プログラムコード131や実行環境差異吸収プログラムコード132に、機械語命令を追加したり、定数格納領域134の容量を増加させることなく、ROM効率を向上させることが可能になる。
【0065】
【発明の実施の形態】
以下、本発明に係る一実施形態を、図8ないし図16を用いて説明する。
〔開発環境とハードウェア〕
先ず、図8および図9を用いて本発明に係る異種実行環境における計算機システム構成方法のソフトウェア開発環境と、それを動作させるためのハードウェアについて説明する。なお、本実施形態では、ソースプログラムの記述を、C言語でおこなった場合を想定するものとする。
図8は、本発明に係る異種実行環境における計算機システム構成方法のソフトウェア開発環境の処理の流れを説明するための図である。
図9は、本発明に係る異種実行環境における計算機システム構成方法を実行するためのハードウェア構成図である。
【0066】
本発明は、複数の異なったOSでの開発環境210を前提としている。
【0067】
ソフトウェアの開発者は、アプリケーションのプログラムが記述したアプリケーション本体100と、共通化関数102のソースコードを入力して、通常の開発手順の通り、プリプロセッサ211、Cコンパイラ212、アセンブラ213、リンカ214と言うソフトウェアツールにより、実行プログラムを作成する。
【0068】
プリプロセッサ211は、条件によって加工したり、読み飛ばしたり、他プログラムを組み込んだりマクロ定義処理などをおこなうCコンパイラに入る前の前処理のためのツールである。Cコンパイラ212は、記述されたテキストコードに対して、構文解析・意味解析などをおこない、適当なアセンブラコードを生成するものである。アセンブラ213は、アセンブラコードをCPU121で実行させる機械語に変換するツールである。
【0069】
リンカ214は、ライブラリ190から適当なプログラムコードを選び、数種のプログラムコードファイルを結合して最終的にハードウェア上で実行させる実行プログラムを作成する。本実施形態の例では、アプリケーション本体100をコンパイルした実行プログラムコード131、実行環境差異吸収プログラムコード132、および、OSのコードといった必要なモジュールと、定数格納領域134、スタック領域130などのデータ部分とを結合させて、実際にCPU121に実行させる実行形式のモジュールを作成する。このライブラリ190には、実効環境に依存する実行環境プログラムコードが含まれていて、機能に応じてリンカ214により適当なプログラムが取りこまれて結合される。
【0070】
OSコンフィグレータ191は、アプリケーションソフトウェア開発者に、ターゲットとするOS107の諸機能を選択および設定させカスタマイズ化されたOS107のプログラムコードを作成するソフトウェアツールである。
【0071】
ハードウェア106は、CPU121、Device201、ワーキングメモリ202から構成されている。
【0072】
最終的にCPU121上で実行する実行プログラムとOS107は、ワーキングメモリ202に配置される。
【0073】
ワーキングメモリ202は、ROMとRAMであり、実行形式のモジュールとして、ユーザの実行プログラムと実行環境差異吸収プログラム、OSのモジュールが格納される。また、データとしては、定数格納領域134、スタック領域130が格納される。
【0074】
本実施形態のソフトウェア開発環境は、メインフレーム、パーソナルコンピュータやワークステーション等の汎用計算機上に実装することが可能である。
【0075】
最終的に実行プログラムを動作させることのできるハードウェア106を作成する手順を示すと以下の様になる。
【0076】
すなわち、アプリケーションソフトウェア開発者は、汎用計算機上に定義されているターゲットのOS107に対応するOS別プログラム開発環境210を選択する。そして、選択されたOS別プログラム開発環境210に付随しているOSコンフィグレータ191を用いてカスタマイズしたOS107のプログラムコードを作成する。
【0077】
次に、そのOS107のOSプログラムコード133と実行プログラムコード131と実行環境差異吸収プログラムコード132をリンクしてできあがったプログラムコード全体をワーキングメモリ202に組み込む。また、予めOS107のOSプログラムコード133が搭載されたワーキングメモリ202に、後から実行プログラムコード131と実行環境差異プログラムコード132をリンクしてできあがったプログラムコードを組み込み、動的にリンクしながら実行させるようにしても良い。
【0078】
ここで、ハードウェア106は、実行プログラムを実行できるような機構を備えていれば良いが、本実施形態では、主にプログラムをワーキングメモリに組み込んだシステムLSIなどを想定している。
【0079】
以下、図9を用いてこのハードウェア106の構成の例について詳細に説明する。
【0080】
CPU121は、命令を実行し、計算をおこなうハードウェア106のメインのコンポーネントであり、図3で説明したような汎用レジスタ群222を備えている。汎用レジスタ群222に含まれるのは、引数格納用途レジスタ124、一時変数格納用途レジスタ125と、戻り値格納用途レジスタ126、ユーザ使用汎用レジスタ127、スタックポインタレジスタ128、プログラムカウンタレジスタ129などである。
【0081】
RAM123は、いつでも書き込みが可能なメモリエリアである。このRAM123に、スタック領域205が実装されている。ROM122は、通常は書きこむことができず、読みだし専用のメモリエリアである。例えば、LSIの製造時にのみ情報を書きこみ、通常の実行時には、このメモリエリアからは、情報を読むだけである。ROM122には、定数格納領域134が実装される。そして、ROM203bまたはRAM123の一部には、実行プログラム110と実行環境差異プログラム111とOSのプログラムコードが組み込まれ、CPU121に読み出されて実行される。
【0082】
デバイス201は、各種機能を持つハードウェア106のコンポーネントであり、ハードウェア106がシステムLSIの場合には、LSI上に構成される特殊機能の処理回路である。具体的には、I/O(Input/Output),ASIC(Application Specific Integrated Circuits),FPGA(Field Programmable Gate Arrays),DSP(Digital Signal Processor)などが考えられる。
【0083】
I/Oは、例えば、A/D変換器、D/A変換器、RS232−C処理回路、SCSI処理回路である。ASICは、例えば、MPEG Video符号器、MP3復号器等の専用処理回路である。FPGAは、ハードウェア構成を可変にできるICを言う。DSPは、ディジタル信号処理専用のICである。
【0084】
これらのコンポーネントは、信号の共通の通り道であるバス203により、情報のやり取りをする。
〔Immediateロード命令〕
本発明は、実行環境の差異を吸収するレイヤにおいて、共通エラーコードを返すときに、Immediateロード命令を用いることに特徴がある。そのため、次に、図10ないし図12を用いてImmediateロード命令の形式と機能について説明する。
図10は、Immediateロード命令の形式を示した図である。
図11は、Immediateロード命令の他の形式を示した図である。
図12は、本発明に係る計算機システム構成方法において、共通化エラーコードとImmediateロード命令の関係を示す図である。
【0085】
Immediateロード命令181iは、Immediate値(即値、定数データ)を、指定されたレジスタに持ってくる命令である。その命令語としての形式は、例えば、図10に示されるようにImmediate設定部182と汎用レジスタ選択部183とオペコード部184で構成される。オペコード部184は、命令の種類および機能を表すコードが入る部分である。汎用レジスタ選択部183は、ロードするレジスタの番号を指定する。Immediate設定部182は、Immediate値を保持する部分である。
【0086】
CPU121は、オペコード部184から、命令の種類および機能がImmediateロード命令181であることを判別し、Immediate設定部182に指定されたImmediate値を、汎用レジスタ選択部183で指定された汎用レジスタに格納する。
【0087】
したがって、コンパイルする以前に共通化エラーコード136の値と実行環境差異吸収プログラムコード132の戻り値をImmediate設定部182の扱える範囲の数値と定義しておくと、例えば、Cコンパイラ108は、定数格納領域データロード命令143の代わりに、実行環境の差異を吸収するための共通化エラーコード136を、ユーザが記述したアプリケーションに返すために、戻り値格納レジスタに設定する命令などについて、その共通化エラーコード136をImmediate設定部182に保持するImmediateロード命令181を作成してくれる。
【0088】
本発明では、図12に示したように、Immediateロード命令181のImmediate設定部182に共通化エラーコード136を定義しておき、そのImmediate設定部182のMSBを0として表せる正の値の範囲に設定する。
【0089】
また、CPUの命令セットとして、図10に示した形式のImmediateロード命令181iの他に、図11に示した形式を持ち、ロードする汎用レジスタを複数設定できるImmediateロード命令181jを有することもあるが、このImmediateロード命令181jを、共通化エラーコード136の設定のために、Immediateロード命令181iと全く同様に使用することができる。
〔共通化エラーコードの具体例〕
次に、図13を用いて本発明で設定する共通化エラーコードの具体例について説明する。
図13は、本発明の計算機システム構成方法に係る共通化エラーコードの具体例を示す図である。
【0090】
図13に示した共通化エラーコードは、Immediateロード命令181のImmediate選択部182として、例えば、1バイト長、2バイト長の場合が想定できる。
〔プログラムコードとImmediateロード命令の関係〕
次に、図14を用いてプログラムコードとImmediateロード命令の関係を説明する。
図14は、プログラムコードにImmediateロード命令が埋め込まれているときの計算機システム−A105aで取扱われるデータ、プログラムコードと、レジスタ、メモリなどの関連をあらわす図である。
【0091】
実行プログラムコード131は、アプリケーション本体をコンパイルして作られる実行形式のモジュールであり、実行環境差異吸収プログラムコード132は、共通関数をコンパイルしてり、必要なモジュールをリンクして得られる実行形式のモジュールである。これらの実行形式のモジュールは、ハードウェア106のROM122またはRAM123上に実装される。
【0092】
図14に示された実行プログラムコード131および実行環境差異吸収プログラムコード132には、図4により説明した定数格納領域データロード命令143の代わりに、Immediateロード命令181が利用される。そのImmediateロード命令181内部のImmediate選択部182は、MSB164が0になっている。そして、MSB164以外のImmediate部281には、共通化インターフェース102により定められている共通化エラーコード136が埋め込まれている。
【0093】
したがって、この場合に、共通化エラーコードを定数格納領域に保持する必要がなくなる。
〔Cソースプログラムの例〕
次に、図15および図16を用いて本発明の計算機システム構成方法の開発環境で準備されるCソースプログラムの例について説明する。
図15は、本発明の開発環境の共通化関数のCソースプログラムの例を示した図である。
図16は、本発明の開発環境のアプリケーションソフトウェアのCソースプログラムの例を示した図である。
【0094】
共通化関数101は、ユーザにシステムの機能を提供する関数であり、ユーザに対する関数インタフェースとしては、共通化インターフェース102を公開する。共通化インターフェース102は、実質上、C言語仕様でいう関数定義のことであり、インターフェース機能名称242、引数のデータ型243、戻り値のデータ型244を定義している。この図15に示す例では、インターフェース機能名称242は、「WPR_Wait_Mail」であり、引数は二つであり、引数のデータ型243として、共に「int」型、戻り値のデータ型244は、「unsigned int」型である。
【0095】
共通化関数のCソースプログラム241には、実行環境の差異を吸収するためのコーディングがなされる。例えば、計算機システム−A105aの実行開発環境−A104a上で動作させる場合には、そのOS−A107aのシステムコール245aをコールするコーディングがなされる。また、計算機システム−B105bの実行開発環境−B104b上で動作させる場合には、そのOS−B107bのシステムコール245aをコールするコーディングがなされる。
【0096】
このように共通化関数101を用いることにより、ユーザに対して実行環境の差異を隠蔽することが可能であり、ユーザのアプリケーションからすると共通化インタフェース102とその関数の機能のみを意識すれば良い。
【0097】
実行開発環境−A104a上で動作させる共通化関数101の内部の処理としては、図15に示されるように、例えばシステムコール245aを介して所望の処理をおこない、その結果、OS−A107aから戻されるシステムコールのOS−A107a依存エラーコード135u,135vを判別して、共通化インターフェース102定義の共通化エラーコード136u,136v,136wを共通化関数101から戻り値として返すことにする。これまで述べてきたように、共通化エラーコード136の数値は、実行開発環境104および計算機システム105に全く依存しないように、共通化した定義を用いる。
【0098】
そして、共通化エラーコード136の値を、Immediateロード命令181におけるImmediate設定部182のMSBを0として表せる数値範囲であり、かつ、符号無しと定義するので、戻り値のデータ型244と共に少なくともC言語仕様でデータ型として用いられるunsigned型で宣言する。図15の共通化関数101では、汎用レジスタ群222と同じbit長とし、unsigned int型で記述しているが、共通化エラーコード136をunsigned short型、 unsigned char型といった汎用レジスタ群222のbit長よりも短く定義しても構わない。
【0099】
次に、この共通化関数101を呼出すアプリケーションソフトウェアのCソースプログラムを示すと、図16のようになる。この例では、アプリケーションプログラム関数261「ApplicationTask」が、共通化関数101「WPR_Wait_Mail」を呼出している。
【0100】
このアプリケーションプログラム関数261は、内部で共通化関数101を呼出すだけであり、実行環境に依存するコーディング入れないため、アプリケーションレベルの開発においては、全く実行環境、OS、実行される計算機を意識する必要はない。
【0101】
図16に示した例では、アプリケーションプログラム関数261「ApplicationTask」が、共通化関数101「WPR_Wait_Mail」を呼出し、戻り値をerror_stateという変数263に入れて、その後、それが共通化エラーコード136u,136vのどれにあたるを判定し、その処理を分岐させている。戻り値をerror_stateと言う変数の型は、当然、共通化関数101「WPR_Wait_Mail」の戻り値の型と同じであり、共通化エラーコード136の定義した型であるunsigned int型である。また、共通化エラーコード136の型が、他のunsigned short型、unsigned char型等のときには、その宣言した変数263に格納する。変数263は、アプリケーションプログラム関数261でC言語仕様のローカル変数宣言またはグローバル変数宣言されているかどうかに従い、OS別プログラム開発環境201によりそれぞれ、局所変数及び一時変数としてスタック領域130またはグローバル変数としてスタック領域130以外のRAM領域に実装される。
【0102】
【発明の効果】
本発明によれば、計算機システムの異なった実行環境で実行させるときのアプリケーション・プログラムにエラーコードを返す際に、既存の命令セットの体系を活かしながら、その共通化コードのインプリメントのためのROM効率を良くし、むだな命令を挿入することのない計算機システム構成方法を提供することができる。
【図面の簡単な説明】
【図1】特開平8―63363号公報の「仮想実行環境システム」のシステム概要図である。
【図2】異種実行環境においてソフトウェア開発をおこなうときの概念図である。
【図3】計算機システム−A105aで取扱われるデータ、プログラムコードと、レジスタ、メモリなどの関連をあらわす図である。
【図4】汎用レジスタでゼロ拡張する際の説明図である。
【図5】ゼロ拡張された汎用レジスタの値を負にする際の説明図である。
【図6】汎用レジスタで符号拡張する際の説明図である。
【図7】符号拡張された汎用レジスタの値をもとに戻す際の説明図である。
【図8】本発明に係る異種実行環境における計算機システム構成方法のソフトウェア開発環境の処理の流れを説明するための図である。
【図9】本発明に係る異種実行環境における計算機システム構成方法を実行するためのハードウェア構成図である。
【図10】Immediateロード命令の形式を示した図である。
【図11】Immediateロード命令の他の形式を示した図である。
【図12】本発明に係る計算機システム構成方法において、共通化エラーコードとImmediateロード命令の関係を示す図である。
【図13】本発明の計算機システム構成方法に係る共通化エラーコードの具体例を示す図である。
【図14】プログラムコードにImmediateロード命令が埋め込まれているときの計算機システム−A105aで取扱われるデータ、プログラムコードと、レジスタ、メモリなどの関連をあらわす図である。
【図15】本発明の開発環境の共通化関数のCソースプログラムの例を示した図である。
【図16】本発明の開発環境のアプリケーションソフトウェアのCソースプログラムの例を示した図である。
【符号の説明】
10…アプリケーションソフトウェア
11…プログラム本体
12…置換情報記述部
20…仮想実行環境実現システム
21…翻訳部(既存OS用コンパイラ)
22…実行部(仮想実行環境実現部)
30…実行可能プログラム
60…既存オペレーティング・システム
100…アプリケーション本体
101…共通化インターフェース
102…共通化関数
103…実行環境プログラム
104…実行環境
105…計算機システム
106…ハードウェア
107…OS
108…Cコンパイラ
109…リンカ
110…実行プログラム
111…実行環境差異吸収プログラム
121…CPU
122…ROM
123…RAM
124…引数格納用途レジスタ
125…一時変数格納用途レジスタ
126…戻り値格納用途レジスタ
127…ユーザ使用汎用レジスタ
128…スタックポインタレジスタ
129…プログラムカウンタレジスタ
130…スタック領域
131…実行プログラムコード
132…実行環境差異吸収プログラムコード
133…OSプログラムコード
134…定数格納領域
135…OS依存エラーコード
136…共通化エラーコード
137…実行プログラム開始番地
138…実行プログラム終了番地
139…ジャンプ命令
140…ソフトウェア割り込み命令またはジャンプ命令
141…リターン命令
142…実行環境差異吸収プログラムコードへの戻り先番地
143…定数格納領域データロード命令
144…比較命令
145…実行プログラムへの戻り先番地
161…下位部
162…上位部
163…2の補数変換処理命令
164…MSB
165…ゼロ埋め込み命令
181…Immediateロード命令
182…Immediate設定部
183…汎用レジスタ選択部
184…オペコード部
190…ライブラリ
191…OSコンフィグレータ
201…デバイス
202…ワーキングメモリ
203…バス
210…OS別プログラム開発環境
211…プリプロセッサ
212…Cコンパイラ
213…アセンブラ
214…リンカ
222…汎用レジスタ群
241…共通化関数のCソースプログラム
242…インターフェース機能名称
243…引数のデータ型
244…戻り値のデータ型
245…システムコール
261…アプリケーションプログラム関数
262…引数
263…変数
281…MSB以外のImmediate部

Claims (2)

  1. ハードウェアとして第1汎用レジスタを有し、第1オペレーティングシステムを実行する第1CPUを有する第1計算機システムにおいて、
    前記第1CPUの命令セットとしては、前記第1汎用レジスタに即値を格納する即値ロード命令を含み、
    前記第1CPUは、アプリケーション・プログラムのソースコードをコンパイル・リンクして得られる実行プログラムと、前記第1計算機システムとハードウェアとして第2汎用レジスタを有し第2オペレーティングシステムを実行する第2CPUを有する第2計算機システムとの間で共通化された、実行環境に依存しない統一されたインタフェースをユーザに提供する共通化関数と、前記共通化関数から実行環境の機能が呼び出される実行環境プログラムとをコンパイル・リンクして得られる実行環境差異吸収プログラムとを実行し、
    前記第1CPUは、前記実行環境差異吸収プログラムにより、第1オペレーティングシステムから前記実行環境差異吸収プログラムに対する戻り値であり前記第1オペレーティングシステムに依存する戻り値である第1の戻り値が返された場合に、前記共通化関数を呼び出した実行プログラムに対して、第2の戻り値として、前記第1の戻り値に対応するエラーコードと等価なエラーコードであり前記第1計算機システムと前記第2計算機システムとの間で共通化されたエラーコードである共通化エラーコードを返し、
    前記共通化エラーコードは、前記実行環境差異吸収プログラムにおける前記即値ロード命令で設定可能な数値範囲内の値であり、前記実行環境差異吸収プログラムにおける前記即値ロード命令の命令コード内に保持され、前記第1CPUは、前記実行環境差異吸収プログラムにより、前記共通化関数を呼び出した実行プログラムに対して、戻り値として共通化エラーコードを返す際に、前記実行環境差異吸収プログラムにおける前記即値ロード命令の前記即値を返すことを特徴とする計算機システム。
  2. 前記共通化エラーコードは、前記即値のMSBをゼロとした数値範囲内で定められることを特徴とする請求項1記載の計算機システム。
JP2001290986A 2001-09-25 2001-09-25 計算機システム Expired - Fee Related JP4755371B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001290986A JP4755371B2 (ja) 2001-09-25 2001-09-25 計算機システム
US10/075,381 US6934892B2 (en) 2001-09-25 2002-02-15 Computing system construction method under execution environment to be dependent on OS

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001290986A JP4755371B2 (ja) 2001-09-25 2001-09-25 計算機システム

Publications (3)

Publication Number Publication Date
JP2003099254A JP2003099254A (ja) 2003-04-04
JP2003099254A5 JP2003099254A5 (ja) 2006-03-16
JP4755371B2 true JP4755371B2 (ja) 2011-08-24

Family

ID=19113205

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001290986A Expired - Fee Related JP4755371B2 (ja) 2001-09-25 2001-09-25 計算機システム

Country Status (2)

Country Link
US (1) US6934892B2 (ja)
JP (1) JP4755371B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006024233B4 (de) * 2006-05-23 2016-11-10 Fujitsu Technology Solutions Intellectual Property Gmbh Verfahren und Vorrichtung für ein Fehlertoleranzmanagement einer Softwarekomponente
JP5716469B2 (ja) * 2011-03-17 2015-05-13 富士通セミコンダクター株式会社 ラッパープログラム及び集積回路装置
US10289467B2 (en) * 2013-03-28 2019-05-14 Hewlett Packard Enterprise Development Lp Error coordination message for a blade device having a logical processor in another system firmware domain
CN110096339B (zh) * 2019-05-10 2020-08-04 重庆八戒电子商务有限公司 一种基于系统负载实现的扩缩容配置推荐系统及方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0863363A (ja) 1994-08-25 1996-03-08 Fujitsu Ltd 仮想実行環境実現システム
JP2001101033A (ja) * 1999-09-27 2001-04-13 Hitachi Ltd オペレーティングシステム及びアプリケーションプログラムの障害監視方法
US6523137B1 (en) * 1999-10-12 2003-02-18 Cisco Technology, Inc. Method and system for remote testing of application program interfaces
US6769115B1 (en) * 2000-05-01 2004-07-27 Emc Corporation Adaptive interface for a software development environment
US7496896B2 (en) * 2003-07-17 2009-02-24 Computer Associates Think, Inc. Accessing return values and exceptions

Also Published As

Publication number Publication date
US6934892B2 (en) 2005-08-23
JP2003099254A (ja) 2003-04-04
US20030061543A1 (en) 2003-03-27

Similar Documents

Publication Publication Date Title
US7080359B2 (en) Stack unique signatures for program procedures and methods
EP2523108B1 (en) Processing method
Andrews et al. Achieving programming model abstractions for reconfigurable computing
EP1114366B1 (en) Accurate method for inlining virtual calls
JP2008536240A (ja) レジスタファイルとしてのオペランドスタックへの、ネイティブな命令を用いた、マイクロプロセッサのアクセス
JPH10320214A (ja) コンパイルシステム及びコンピュータプログラム製品
EP1145111A2 (en) Method for directly inlining virtual calls without on-stack replacement
Procter et al. Semantics driven hardware design, implementation, and verification with ReWire
JP4755371B2 (ja) 計算機システム
JP2005129001A (ja) プログラム実行装置、マイクロプロセッサ及びプログラム実行方法
US8549466B2 (en) Tiered register allocation
US20020073133A1 (en) Register allocation method and software development method for various execution environments and LSI for executing developed software
US7653527B2 (en) Runtime selection of code variants in a multiprogram computer hardware emulation system
Engel et al. Using a low-level virtual machine to improve dynamic aspect support in operating system kernels
Sabeghi et al. Interfacing operating systems and polymorphic computing platforms based on the molen programming paradigm
Nadeem et al. GALS-CMP: chip-multiprocessor for GALS embedded systems
von Ronne et al. Interpreting programs in static single assignment form
Duncan Objective-C Pocket Reference
Krause et al. C for a tiny system
Benson et al. The OpenVMS mixed pointer size environment
Flynn Towards better instruction sets
von Ronne et al. A virtual machine for interpreting programs in static single assignment form
Huber Porting Zephyr RTOS to the LEON/GRLIB SoC SPARC v8 architecture
Standard User's Guide
Dreisbach et al. Requirements for real-time languages

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060130

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060130

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090409

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090810

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090825

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20090911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110414

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: 20110527

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140603

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees