(57)【要約】【課題】ソフトウェアの実行コードの変更なしに、ソフトウェア処理をハードウェア処理に置換する。【解決手段】中央処理装置と、中央処理装置がアクセスするアドレス空間内の所定のアドレス範囲が割り当てられている記憶領域に第１の命令群及び第２の命令群を記憶する記憶装置と、アドレス空間内で割り当てられているアドレスに従って所定の演算処理を実行する回路と、を備える情報処理装置である。中央処理装置は、アドレスを指定するプログラムカウンタと、第１の命令群が実行された結果として得られるアドレスをプログラムカウンタに出力する制御部と、第１のアドレスとしての第２の命令群の実行に用いられるアドレスに対応付けて第２のアドレスとして回路に割り当てられているアドレスを記憶する記憶部を備え、制御部から出力されたアドレスが第１のアドレスに合致する場合に、第２のアドレスをプログラムカウンタに出力する変換部と、を備える。【選択図】図１
2018081559.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置と、
前記中央処理装置がアクセスするアドレス空間内の所定のアドレス範囲が割り当てられている記憶領域に第１の命令群及び第２の命令群を記憶する記憶装置と、
前記アドレス空間内で割り当てられているアドレスに従って所定の演算処理を実行する回路と、
を備え、
前記中央処理装置は、
前記アドレス空間内のアドレスを指定するプログラムカウンタと、
前記第１の命令群が実行された結果として得られるアドレスを前記プログラムカウンタに出力する制御部と、
第１のアドレスとしての前記第２の命令群の実行に用いられるアドレスに対応付けて第２のアドレスとして前記回路に割り当てられているアドレスを記憶する記憶部を備え、前記制御部から出力されたアドレスが前記第１のアドレスに合致する場合に、前記第２のアドレスを前記プログラムカウンタに出力する変換部と、
を備える、
情報処理装置。
【請求項２】
前記回路は、
前記所定の演算処理を行う演算回路と、
所定の条件が満たされている場合に、前記中央処理装置の前記記憶部に前記回路に割り当てられているアドレスを前記第２のアドレスとして書き込む制御回路を備える、
請求項１に記載の情報処理装置。
【請求項３】
前記制御回路は、前記所定の条件が満たされていない場合に、前記中央処理装置の前記記憶部に前記第２のアドレスとして前記第２の命令群の実行に用いられるアドレスを書き込む、
請求項２に記載の情報処理装置。
【請求項４】
前記中央処理装置は、
前記制御部から前記第２の命令群の実行に用いられるアドレスが出力される直前の前記プログラムカウンタに保持されるアドレスを保持するアドレス保持部と、
前記第２の命令群の実行結果を格納するレジスタと、
をさらに備え、
前記回路の前記制御回路は、前記回路に割り当てられているアドレスが前記中央処理装置から呼び出された場合に、前記アドレス保持部が保持するアドレスに該当する格納領域からデータを取得し、前記取得したデータを前記演算回路に出力し、前記演算回路の演算結果を前記レジスタに書き込む、
請求項２または３に記載の情報処理装置。
【請求項５】
前記回路の前記制御回路は、前記回路に割り当てられているアドレスが前記中央処理装置から呼び出されたことにより前記演算回路において前記所定の演算処理が実行されている間、前記中央処理装置からの前記回路に割り当てられているアドレスの呼び出しに対して、前記記憶装置に割り当てられている前記所定のアドレス範囲内のアドレスが前記中央処理装置によって呼び出されないようなダミーの命令を返す、
請求項１から４のいずれか一項に記載の情報処理装置。
【請求項６】
前記回路の前記制御回路は、前記所定の条件が満たされる場合として、前記演算回路の追加を検出した場合に、前記中央処理装置の前記記憶部に前記回路に割り当てられている
アドレスを前記第２のアドレスとして書き込む、
請求項２から５のいずれか一項に記載の情報処理装置。
【請求項７】
前記記憶装置は、前記情報処理装置に対して着脱可能なインタフェースの複数の種類のそれぞれについて、前記インタフェース部に関する処理を行う第２の命令群を記憶し、
前記回路は、前記第２の命令群に対応する前記インタフェース部の種類のそれぞれについて、前記インタフェース部に関する処理を行う演算回路を備え、
前記制御回路は、前記中央処理装置の前記記憶部に前記第２のアドレスとして、前記所定の条件が満たされている場合には、装着されているインタフェース部の種類に応じた演算回路が実行される前記回路に割り当てられているアドレスを書き込み、前記所定の条件が満たされていない場合には、前記装着されているインタフェース部の種類に応じた第２の命令群の実行に用いられるアドレスを書き込む、
請求項２から５のいずれか一項に記載の情報処理装置。
【請求項８】
前記制御回路は、前記装着されているインタフェース部の種類に応じた演算回路を備えておらず、且つ、前記装着されているインタフェース部に関する処理を行う第２の演算回路が前記装着されているインタフェース部に備えられている場合に、前記中央処理装置の前記記憶部に前記第２のアドレスとして、前記装着されているインタフェース部に備えられている第２の演算回路に割り当てられているアドレスを書き込む、
請求項７に記載の情報処理装置。
【請求項９】
第１の命令群及び第２の命令群が記憶される記憶装置の記憶領域に割り当てられた所定のアドレス範囲と、割り当てられているアドレスに従って所定の演算処理を実行する回路に割り当てられている前記アドレスと、を含む中央処理装置がアクセスするアドレス空間内のアドレスを指定するプログラムカウンタと、
前記第１の命令群が実行された結果として得られるアドレスを前記プログラムカウンタに出力する制御部と、
第１のアドレスとしての前記第２の命令群の実行に用いられるアドレスに対応付けて第２のアドレスとして前記回路に割り当てられているアドレスを記憶し、前記制御部から出力されたアドレスが前記第１のアドレスに合致する場合に、前記第２のアドレスを前記プログラムカウンタに出力する変換部と、
を備える中央処理装置。
【請求項１０】
第１の命令群を記憶する記憶装置の記憶領域に割り当てられた所定のアドレス範囲と、割り当てられているアドレスに従って所定の演算処理を行う回路に割り当てられている前記アドレスと、を含む中央処理装置がアクセスするアドレス空間内のアドレスを指定するプログラムカウンタと、
前記第１の命令群が実行された結果として得られるアドレスを前記プログラムカウンタに出力する制御部と、
第１のアドレスに対応付けて第２のアドレスを記憶し、前記制御部から出力されたアドレスが前記第１のアドレスに合致する場合に、前記第２のアドレスを前記プログラムカウンタに出力する変換部と、
を備える中央処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアを実行する情報処理装置及び中央処理装置に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）は、高性能化のため、動作周波数の増加とともに
、消費電力も増加している。消費電力低減及び性能向上のため、ＣＰＵが実行するソフトウェア処理の一部をＦＰＧＡ（Field Programmable Gate Array）等によるハードウェア
処理に代替することが行われている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３６２４４６号公報
【特許文献２】特開２０１３−５０９５３号公報
【特許文献３】特開２００８−１３９９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ソフトウェア処理をハードウェア処理に置き換える場合には、以下のような問題がある。ソフトウェア処理をハードウェア処理に置き換える場合には、ＣＰＵとハードウェアとの間の入出力（Ｉ／Ｏ）の一例として、メモリマップドＩ／Ｏ方式が採用される。メモリマップドＩ／Ｏ方式は、ＣＰＵから参照できるアドレス空間上にメモリとＦＰＧＡ等のハードウェアのインタフェースとを共存させ、ＣＰＵがメモリへのアクセスと同じようにハードウェアのインタフェースにリード及びライトアクセスを行う方式である。
【０００５】
例えば、メインルーチンに含まれる関数（サブルーチン）処理をハードウェアに置き換える場合には、当該関数がメインルーチンから呼び出される際のアドレスのハードウェアアドレスへの変更、当該関数の引数の受け渡し方法の変更等が発生する。そのため、ソフトウェア処理のハードウェア処理への置き換えには、ソフトウェアの実行コードの変更が伴う。
【０００６】
例えば、ソフトウェアの実行コードの変更には、ソフトウェアの更新のために、ソフトウェアの停止、装置の再起動等が伴うことがある。このため、フレキシブルにソフトウェア処理をハードウェア処理に置き換えることは難しい。
【０００７】
本発明は、ソフトウェアの実行コードの変更なしに、ソフトウェア処理をハードウェア処理に置換可能な情報処理装置及び中央処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の態様の一つは、中央処理装置と、中央処理装置がアクセスするアドレス空間内の所定のアドレス範囲が割り当てられている記憶領域に第１の命令群及び第２の命令群を記憶する記憶装置と、アドレス空間内で割り当てられているアドレスに従って所定の演算処理を実行する回路と、を備える情報処理装置である。中央処理装置は、プログラムカウンタと、制御部と、変換部とを備える。プログラムカウンタは、アドレス空間内のアドレスを指定する。制御部は、第１の命令群が実行された結果として得られるアドレスをプログラムカウンタに出力する。変換部は、第１のアドレスとしての第２の命令群の実行に用いられるアドレスに対応付けて第２のアドレスとして回路に割り当てられているアドレス
を記憶する記憶部を備える。また、変換部は、制御部から出力されたアドレスが第１のアドレスに合致する場合に、第２のアドレスをプログラムカウンタに出力する。
【発明の効果】
【０００９】
開示の情報処理装置及び中央処理装置によれば、ソフトウェアの実行コードの変更なしに、ソフトウェア処理をハードウェア処理に置換することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１実施形態に係る情報処理装置のハードウェア構成の一例を示す図である。
【図２】図２は、アドレス変換部のハードウェア構成の一例を示す図である。
【図３】図３は、アドレス変換テーブルの書換処理のフローチャートの一例を示す図である。
【図４】図４は、演算処理ハードウェアの制御部の、演算処理部の演算処理が呼び出された場合の処理のフローチャートの一例である。
【図５】図５は、具体例におけるプログラムＡのメインルーチンのフローチャートの一例である。
【図６】図６は、具体例１におけるアドレス変換テーブルの一例を示す図である。
【図７】図７は、具体例１に係るプログラムＡの実行イメージの一例を示す図である。
【図８】図８は、具体例２におけるアドレス変換テーブルの一例を示す図である。
【図９】図９は、具体例２に係るプログラムＡの実行イメージの一例を示す図である。
【図１０】図１０は、情報処理装置のハードウェア構成の一例を示す図である。
【図１１】図１１は、比較例に係るプログラムＡのメインルーチンのフローチャートの一例である。
【図１２】図１２は、比較例に係るプログラムＡの実行イメージの一例を示す図である。
【図１３】図１３は、光ネットワークシステムのシステム構成の一例を示す図である。
【図１４】図１４は、第１実施形態に係る情報処理装置の適用例の一つである伝送装置のブロック図の一例である。
【図１５】図１５は、第１実施形態に係る情報処理装置の適用例の他の一つである伝送装置のブロック図の一例である。
【図１６】図１６は、第１実施形態に係る情報処理装置の適用例の他の一つである伝送装置のブロック図の一例である。
【図１７】図１７は、伝送装置の演算処理ハードウェアに備えられる制御部のブロック図の一例である。
【図１８】図１８は、演算処理ハードウェアの制御部のアドレステーブル書換処理のフローチャートの一例である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１２】
＜第１実施形態＞
第１実施形態では、ＣＰＵは、第１のアドレスを第２のアドレスに変換する変換部を備え、変換部から出力された第２のアドレスは、次に呼び出されるアドレスとしてプログラムカウンタに格納される。第１のアドレスは、例えば、ソフトウェア処理の呼び出しに用いられるアドレスである。第２のアドレスは、当該ソフトウェア処理と同じ内容の処理を
実行する演算処理ハードウェアに割り当てられているアドレスである。ＣＰＵが変換部を備えることによって、ソフトウェアの実行コードを変更することなく、ソフトウェア処理をハードウェア処理に置換することができる。
【００１３】
図１は、第１実施形態に係る情報処理装置のハードウェア構成の一例を示す図である。情報処理装置１００は、例えば、ＣＰＵ  １、入出力装置２、ＲＯＭ（Read Only Memory）３、主記憶メモリ４、演算処理ハードウェア５を備え、これらは、バス６で電気的に接続されている。バス６には、アドレスバスとデータバスとが存在するが、図１では特に区別することなく、１本の線として表示されている。また、情報処理装置１００では、メモリマップドＩ／Ｏ方式が採用されており、バス６上の、ＣＰＵ  １、入出力装置２、ＲＯＭ  ３の記憶領域、主記憶メモリ４の記憶領域、演算処理ハードウェア５のそれぞれに、共通のアドレス空間内のアドレスが割り当てられている。
【００１４】
入出力装置２は、例えば、キーボードやマウス等の入力装置、ディスプレイ等の出力装置である。
【００１５】
ＲＯＭ  ３は、書換不可能な不揮発性のメモリである。ＲＯＭ  ３には、書換不可の所定のプログラム、データ等が格納されている。
【００１６】
主記憶メモリ４は、ＲＡＭ（Random Access Memory）である。主記憶メモリ４には、ＲＯＭ  ３や図示されていない補助記憶装置から読み出されたプログラムが展開されている。すなわち、主記憶メモリ４にはプログラムに含まれるコード、データ等が格納されている。コードは、命令ともいう。コードは、「命令」の一例である。主記憶メモリ４上に展開されたソフトウェアのうちのメインルーチン及び他のサブルーチンを呼び出すサブルーチンに相当するコード群は、例えば、「第１の命令群」の一例である。主記憶メモリ４上に展開されたソフトウェアのうちメインルーチン又は他のサブルーチンに呼び出されるサブルーチンに相当するコード群は、例えば、「第２の命令群」の一例である。
【００１７】
演算処理ハードウェア５は、例えば、ＦＰＧＡである。演算処理ハードウェア５は、バスインタフェース（ＩＦ）部５１、メモリ５２、演算処理部５３、制御部５４を含む。バスＩＦ部５１、メモリ５２、演算処理部５３、制御部５４は、それぞれ、ＦＰＧＡに搭載される素子によって構築される回路である。ＦＰＧＡには、例えば、ＲＡＭ、ルックアップテーブル、フリップフロップ、ＡＮＤ及びＸＯＲ等の論理演算回路等が搭載されている。
【００１８】
バスＩＦ部５１は、バス６とのインタフェースである。バス６上のアドレス空間のアドレスは、バスＩＦ部５１に割り当てられている。バスＩＦ部５１に割り当てられているアドレスは、１つに限定されず、所定のアドレス範囲が割り当てられていてもよい。
【００１９】
メモリ５２は、例えば、ＲＡＭである。メモリ５２には、関数アドレス情報が格納されている。関数アドレス情報は、演算処理ハードウェア５に備えられている演算処理部５３に対応する関数等のサブルーチンが格納されている主記憶メモリ４の記憶領域のアドレスを含む。
【００２０】
演算処理部５３は、所定の演算処理を実行する演算回路である。演算処理部５３は、バスＩＦ部５１に割り当てられているアドレスが呼び出された場合に、所定の演算処理を実行する。演算処理部５３が実行する演算処理は、第１実施形態では、主記憶メモリ４に格納されているサブルーチンと同じ演算処理である。
【００２１】
制御部５４は、後述のＣＰＵ  １のアドレス変換部１８のアドレス変換テーブルの書換
処理、演算処理部５３の演算処理が呼び出された場合の演算処理部５３の演算に用いられるデータの取得、演算結果の出力等を行う。アドレス変換テーブルの書換処理は、例えば、所定の実行条件が満たされた場合に実行される。アドレス変換テーブルの書換処理の実行条件は、例えば、情報処理装置１００のハードウェア構成の変更、温度、ＣＰＵ  １の負荷状況、処理するデータの種類等によって定義される。制御部５４の処理の詳細は、後述される。
【００２２】
ＣＰＵ  １は、バスＩＦ部１１、スタックポインタ１２、プログラムカウンタ１３、命令レジスタ１４、制御部１５、レジスタ部１６、ＡＬＵ（Arithmetic and Logic Unit：
算出論理演算処理部）１７、アドレス変換部１８を備える。これらは、いずれもＣＰＵ  １に搭載される素子によって構築された回路である。
【００２３】
バスＩＦ部１１は、バス６とのインタフェースである。バスＩＦ部１１には、バス６上のアドレス空間内のアドレスが割り当てられている。バスＩＦ部１１には、例えば、スタックポインタ１２、プログラムカウンタ１３、レジスタ部１６から、アドレス又は／及びデータが入力される。バスＩＦ部１１からバス６には、例えば、スタックポインタ１２、プログラムカウンタ１３、レジスタ部１６から入力されたアドレス又は／及びデータが出力される。
【００２４】
バスＩＦ部１１にはバス６から、バス６に出力されたアドレスに対応するコード、データが入力される。例えば、バスＩＦ部１１には、プログラムカウンタ１３からアドレスが入力される。プログラムカウンタ１３から入力されたアドレスは、バスＩＦ部１１からバス６に出力される。バス６に出力されたアドレスが割り当てられているハードウェアから、当該アドレスに対応するコードがバス６を通じてバスＩＦ部１１に入力される。バス６からバスＩＦ部１１に入力されたコードは、バスＩＦ部１１から命令レジスタ１４に出力（フェッチ）される。
【００２５】
命令レジスタ１４は、例えば、主記憶メモリ４から読み出されたコードを一時格納する記憶回路である。命令レジスタ１４は、保持しているコードを制御部１５に出力する。
【００２６】
制御部１５は、命令レジスタ１４から入力されたコードが示す処理内容に従って処理を行う回路である。制御部１５は、命令デコーダ１５Ｄを含む。命令デコーダ１５Ｄは、命令レジスタ１４から入力されたコードを解読し、当該コードに含まれる制御情報を取得する。制御部１５は、命令デコーダ１５Ｄが取得した制御情報にしたがって処理を行う。
【００２７】
例えば、命令デコーダ１５Ｄが取得した制御情報の処理内容に四則演算等の演算が含まれている場合には、制御部１５からＡＬＵ  １７に制御情報が出力され、ＡＬＵ  １７において演算処理が行われる。ＡＬＵ  １７の演算結果は、レジスタ部１６に書き込まれる。
【００２８】
例えば、命令デコーダ１５Ｄが取得した制御情報の処理内容がＣＰＵ  １内部でのデータのやり取り、ＣＰＵ  １とＣＰＵ  １外のハードウェアとの間でのデータのやり取り、及び、データを扱わない処理である場合には、指定された処理を制御部１５が実行する。処理の実行結果としてデータが取得される場合には、制御部１５によって、レジスタ部１６に実行結果のデータが書き込まれる。ただし、ＡＬＵ  １７による演算処理が発生する場合には、ＡＬＵ  １７から演算結果のデータがレジスタ部１６に書き込まれる。
【００２９】
処理の実行結果としてアドレスが取得される場合には、制御部１５からアドレス変換部１８に接続されるアドレス信号線ＡＤ１に、取得されたアドレスが出力される。実行結果としてアドレスが取得されるのは、例えば、命令レジスタ１４から入力されたコードが、
サブルーチンを呼び出すＣＡＬＬ命令、指定のアドレスに移動するＪＵＭＰ命令、呼出元のアドレスに戻すＲＥＴＵＲＮ命令等である場合である。
【００３０】
例えば、命令レジスタ１４から入力されたコードがＣＡＬＬ命令等の分岐命令である場合には、制御部１５からスタックポインタ１２に制御信号が出力される。スタックポインタ１２は、スタック領域のアドレスを保持するレジスタである。制御部１５は、スタックポインタ１２が示すアドレスのスタック領域に、戻りアドレスと、レジスタ部１６に保持されているデータとを書き込む。スタック領域に書き込まれる戻りアドレスは、例えば、分岐命令によってサブルーチンに分岐する直前のプログラムカウンタ１３に保持されているアドレスに、分岐命令のワード数（例えば、１）を加算したアドレスである。スタック領域に書き込まれるレジスタ部１６に保持されているデータは、例えば、分岐命令によってサブルーチンが実行される直前の、メインルーチン又はサブルーチンのデータである。第１実施形態では、ＪＵＭＰ命令を分岐命令に含めてもよい。
【００３１】
処理が完了すると、制御部１５からプログラムカウンタ１３に接続される制御信号線Ｃ１に、処理完了を示す制御信号が出力される。
【００３２】
アドレス変換部１８は、制御部１５から入力された第１のアドレスを第２のアドレスに変換する。第１のアドレスは、以降、変換前アドレス、とも称される。第２のアドレスは、以降、変換後アドレス、とも称される。
【００３３】
アドレス変換部１８は、第１のアドレスに対応付けられる第２のアドレスを記憶するＲＡＭを備えている。アドレス変換部１８は、制御部１５及びプログラムカウンタ１３に、それぞれ、アドレス信号線ＡＤ１及びＡＤ２によって接続している。制御部１５からアドレス信号線ＡＤ１を通じてアドレス変換部１８にアドレスが入力される。制御部１５から入力されたアドレスが第１のアドレスに合致する場合には、アドレス変換部１８からアドレス信号線ＡＤ２を通じてプログラムカウンタ１３に第２のアドレスが出力される。制御部１５から入力されたアドレスが第１のアドレスに合致しない場合には、アドレス変換部１８からアドレス信号線ＡＤ２を通じてプログラムカウンタ１３に、制御部１５から入力されたアドレスがそのまま出力される。アドレス変換部１８の詳細については、後述される。
【００３４】
プログラムカウンタ１３は、呼び出されるコードのアドレスを保持している記憶回路である。プログラムカウンタ１３は、例えば、レジスタである。プログラムカウンタ１３に制御部１５から制御信号線Ｃ１を通じて実行完了の制御信号が入力されると、プログラムカウンタ１３は保持するアドレスの値を実行完了されたコードに含まれるワード数分カウントアップする。プログラムカウンタ１３にアドレス信号線ＡＤ２を通じてアドレスが入力されると、プログラムカウンタ１３は保持するアドレスの値を入力されたアドレスに書き換える。プログラムカウンタ１３は、次のクロックで、保持されているアドレスをバスＩＦ部１１に出力する。
【００３５】
スタックポインタ１２は、主記憶メモリ４のスタック領域のうちの最後に参照されたアドレスを保持するポインタである。スタック領域は、主記憶メモリ４内に確保された記憶領域である。スタック領域には、新たにサブルーチンが呼び出された場合に、新たなサブルーチンが呼び出される直前まで実行していたメインルーチン又はサブルーチンのデータ、プログラムカウンタ１３の値等が一時的に退避される。スタック領域は、最後に格納されたデータを最初に取り出すことができる領域である（First In Last Out）。
【００３６】
ＡＬＵ  １７は、四則演算、積和演算等の論理演算回路である。レジスタ部１６は、コードの実行結果を格納する記憶回路である。レジスタ部１６は、複数の汎用レジスタを備
える。レジスタ部１６には、制御部１５又はＡＬＵ  １７から処理結果として得られたデータが入力されたり、ＷＲＩＴＥ命令又はＲＥＡＤ命令によってやり取りされるデータが格納されたりする。レジスタ部１６に複数備えられる汎用レジスタのうちの一つ又は複数のレジスタは、関数戻り値レジスタ１６Ｒとして用いられる。関数戻り値レジスタ１６Ｒには、サブルーチンの処理結果が書き込まれる。関数戻り値レジスタ１６Ｒに書き込まれる処理結果には、例えば、演算結果の値、処理の成功又は失敗、等がある。
【００３７】
第１実施形態では、演算処理ハードウェア５の制御部５４は、バスＩＦ部５１を介して、主記憶メモリ４に対して読み出し／書き換え可能とする。したがって、第１実施形態では、主記憶メモリ４は、バス６へのポートと演算処理ハードウェア５と接続するバスへのポートとの２つのポートを備える（Ｄｕａｌ−ｐｏｒｔ  メモリ化）。または、例えば、ＣＰＵ  １と演算処理ハードウェア５とに、バス６を経由する主記憶メモリ４へのアクセスの単位時間中の割り当てを決め、ＣＰＵ  １と演算処理ハードウェア５とからの主記憶メモリ４へのアクセスが競合しないようにしてもよい。
【００３８】
また、第１実施形態では、スタックポインタ１２と演算処理ハードウェア５の制御部５４とは、信号線１９Ｃで接続されている。演算処理ハードウェア５の制御部５４は、スタックポインタ１２から出力されるアドレス（スタックポインタ１２のアドレス）を信号線１９Ｃを通じて取得し、取得する度に制御部５４内に上書き保存する。演算処理ハードウェア５のアドレス（演算処理部５３の演算処理）が呼び出された場合に、制御部５４は、制御部５４内に保持されるスタックポインタ１２のアドレスに該当するスタック領域内の記憶領域から、ＣＰＵ  １に呼び出された演算処理に用いるデータを読み出す。
【００３９】
また、第１実施形態では、演算処理ハードウェア５の制御部５４とＣＰＵ  １の関数戻り値レジスタ１６Ｒとが信号線１９Ｂで接続されている。信号線１９Ｂを通じて、演算処理ハードウェア５の制御部５４は、呼び出された関数の処理結果を直接ＣＰＵ  １の関数戻り値レジスタ１６Ｒに書き込む。また、関数の処理結果として成功／失敗が関数戻り値レジスタ１６Ｒに書き込まれ、関数の演算結果の値が引数として用いられる場合には、演算処理ハードウェアの５の制御部５４は、主記憶メモリ４の関数の引数を格納する格納領域に、関数の演算結果の値を書き込んでもよい。  
【００４０】
また、第１実施形態では、演算処理ハードウェア５の制御部５４とＣＰＵ  １のアドレス変換部１８の第２のアドレス（変換後アドレス）を保持するＲＡＭ（後述のアドレスメモリ１８Ｍ）とが信号線１９Ａで接続されている。信号線１９Ａを通じて、演算処理ハードウェア５の制御部５４は、所定の条件が満たされた場合に、アドレス変換部１８内のＲＡＭに保持される第２のアドレス（変換後アドレス）を書き換える。
【００４１】
情報処理装置１００は、「情報処理装置」の一例である。ＣＰＵ  １は、「中央処理装置」の一例である。主記憶メモリ４は、「記憶装置」の一例である。演算処理ハードウェア５は、「回路」の一例である。バス６上のアドレス空間は、「中央処理装置がアクセスするアドレス空間」の一例である。
【００４２】
ＣＰＵ  １のプログラムカウンタ１３は、「プログラムカウンタ」の一例である。ＣＰＵ  １の制御部１５は、「制御部」の一例である。ＣＰＵ  １のアドレス変換部１８は、「変換部」の一例である。ＣＰＵ  １のスタックポインタ１２は、「アドレス保持部」の一例である。関数戻りレジスタ１６Ｒは、「レジスタ」の一例である。
【００４３】
演算処理ハードウェア５の演算処理部５３は、「演算処理回路」の一例である。演算処理ハードウェア５の制御部５４は、「制御回路」の一例である。
【００４４】
図２は、アドレス変換部１８のハードウェア構成の一例を示す図である。アドレス変換部１８は、デコーダ１８Ｄと、アドレスメモリ１８Ｍとを備える。
【００４５】
アドレスメモリ１８Ｍは、アドレス変換部１８内のＲＡＭである。アドレスメモリ１８Ｍは、例えば、バス６上のアドレス空間とは異なるアドレス空間を有する。バス６上のアドレス空間内のアドレスは、所定のアルゴリズムに従って、アドレスメモリ１８Ｍのアドレス空間内のアドレスと対応付けることができる。以降、バス６上のアドレス空間内のアドレスは、単に、バス６上のアドレス、と称される。アドレスメモリ１８Ｍ上のアドレス空間内のアドレスは、単に、アドレスメモリ１８Ｍ上のアドレス、と称される。
【００４６】
アドレスメモリ１８Ｍには、バス６上の第１のアドレス（変換前アドレス）に対応付けられるアドレスメモリ１８Ｍ上のアドレスの記憶領域に、データとして、バス６上の第２のアドレス（変換後アドレス）が格納されている。
【００４７】
デコーダ１８Ｄは、バス６上のアドレスを、アドレスメモリ１８Ｍ上のアドレスに変換する回路である。デコーダ１８Ｄには、制御部１５からアドレス信号線ＡＤ１を通じて、バス６上のアドレスが入力される。デコーダ１８Ｄからアドレスメモリ１８Ｍには、入力されたバス６上のアドレスのデコーダ１８Ｄによる変換によって得られる、入力されたバス６上のアドレスに対応付けられるアドレスメモリ１８Ｍ上のアドレスが出力される。
【００４８】
アドレスメモリ１８Ｍには、デコーダ１８Ｄから、デコーダ１８Ｄによる変換で得られたアドレスメモリ１８Ｍ上のアドレスが入力される。アドレスメモリ１８Ｍからは、デコーダ１８Ｄから入力されたアドレスメモリ１８Ｍ上のアドレスの記憶領域に格納されているデータであるバス６上のアドレスが出力される。アドレスメモリ１８Ｍはアドレス信号線ＡＤ２によってプログラムカウンタ１３に接続されているので、アドレスメモリ１８Ｍから出力されるバス６上のアドレスは、プログラムカウンタ１３に出力される。
【００４９】
したがって、アドレスメモリ１８Ｍ上の記憶領域に、アドレスメモリ１８Ｍ上のアドレスに対応するバス６上のアドレスと異なるバス６上のアドレスを格納することで、変換前アドレスと変換後アドレスとが異なる値となり、アドレス変換部１８によってアドレス変換される。アドレスメモリ１８Ｍ上の記憶領域に、アドレスメモリ１８Ｍ上のアドレスに対応するバス６上のアドレスが格納されている場合には、変換前アドレスと変換後アドレスとが同じ値となり、アドレスが変換されない。
【００５０】
したがって、アドレス変換部１８は、変換前アドレスと変換後アドレスとの対応付けを記憶し、変換前アドレスに該当するアドレスが入力されると対応する変換後アドレスを出力するアドレス変換テーブルとして機能する。以降、アドレス変換部１８を、アドレス変換テーブル、と称することがある。また、アドレスメモリ１８Ｍを書き換えることを、アドレス変換テーブルを書き換える、と称することがある。
【００５１】
第１実施形態では、初期状態では、アドレスメモリ１８Ｍの各記憶領域には、該当するアドレスメモリ１８Ｍ上のアドレスに対応付けられるバス６上のアドレスが格納されている。すなわち、初期状態では、アドレス変換部１８に入力されたいかなるアドレスも変換されずに出力される。
【００５２】
なお、実際には、バス６上の全てのアドレスを格納するようにアドレスメモリ１８Ｍの記憶領域を確保することは困難である。そのため、第１実施形態では、アドレス変換の可能性のあるバス６上のアドレスが予め抽出されており、アドレスメモリ１８Ｍには、アドレス変換の可能性のあるバス６上のアドレスについて、記憶領域が準備される。デコーダ１８Ｄは、プログラムカウンタ１３と図示されていない信号線で接続される。デコーダ１
８Ｄは、制御部１５から入力されたアドレスが、アドレス変換の可能性のあるアドレスであるか否かを判定し、アドレス変換の可能性のあるアドレスでない場合には、入力されたアドレスをそのままプログラムカウンタ１３に接続される信号線に出力する。したがって、予め抽出されたアドレス変換の可能性のあるアドレス以外のアドレスは、アドレス変換部１８によって変換されないこととなる。なお、アドレス変換の可能性のあるアドレスであっても、アドレスメモリ１８Ｍに、アドレス変換後のアドレスとして、変換前のアドレスと同じアドレスが格納されている場合には（例えば初期状態など）、アドレスは変換されない。
【００５３】
アドレスメモリ１８Ｍは、「変換部」に備えられる「記憶部」の一例である。アドレス変換テーブルの変換前アドレスは、「第１のアドレス」の一例である。アドレス変換テーブルの変換後アドレス及びアドレスメモリ１８Ｍに格納されるアドレスは、「第２のアドレス」の一例である。
【００５４】
＜処理の流れ＞
第１実施形態において、演算処理ハードウェア５の制御部５４が実行する処理には、例えば、アドレス変換テーブルの書換処理と、演算処理部５３の演算処理が呼び出された場合の処理と、がある。
【００５５】
アドレス変換テーブルの変換後アドレスを、演算処理ハードウェア５のアドレスと主記憶メモリ４のサブルーチンの本体の格納領域のアドレスとの間で書き換えることで、動的に、サブルーチンの処理をソフトウェア処理とハードウェア処理との間で切り替えることができる。アドレス変換テーブルは機能的な概念であり、実際には、アドレス変換部１８に相当する。アドレス変換テーブルの書き換えは、アドレスメモリ１８Ｍに格納されるアドレスの書き換えに相当する。
【００５６】
図３は、アドレス変換テーブルの書換処理のフローチャートの一例を示す図である。図３に示されるフローチャートは、対象となるサブルーチンの処理をソフトウェア処理とハードウェア処理との間で動的に切り替える場合のフローチャートである。図３に示される処理は、第１実施形態では、演算処理ハードウェア５の制御部５４によって実行される。図３の処理は、情報処理装置１００が稼働している間繰り返し実行される。
【００５７】
ＯＰ１では、制御部５４は、所定の条件が満たされたか否かを判定する。所定の条件は、例えば、温度、ＣＰＵ  １の処理負荷等の環境条件によって予め定義されている。所定の条件が満たされる場合には（ＯＰ１：ＹＥＳ）、処理がＯＰ２に進む。所定の条件が満たされていない場合には（ＯＰ１：ＮＯ）、処理がＯＰ４に進む。
【００５８】
ＯＰ２では、制御部５４は、対象のサブルーチンの処理がハードウェア処理中であるか否かを判定する。対象のサブルーチンの処理がハードウェア処理中かソフトウェア処理中かは、例えば、制御部５４内にフラグによって保持される。対象のサブルーチンの処理がハードウェア処理中である場合には（ＯＰ２：ＹＥＳ）、図３に示される処理が終了する。対象のサブルーチンの処理がソフトウェア処理中である場合には（ＯＰ２：ＮＯ）、処理がＯＰ３に進む。
【００５９】
ＯＰ３では、制御部５４は、アドレス変換テーブルの、変換前アドレスが主記憶メモリ４の対象のサブルーチンの本体の格納領域のアドレスであるエントリの変換後アドレスに、演算処理ハードウェア５のアドレスを書き込む。実際には、アドレス変換部１８のアドレスメモリ１８Ｍの、対象のサブルーチンの本体の主記憶メモリ４の格納領域のアドレス（バス６上）に対応するアドレスメモリ１８Ｍ上のアドレスの領域に、演算処理ハードウェア５のアドレスが書き込まれる。対象のサブルーチンの本体の主記憶メモリ４における
格納領域のアドレスは、演算処理ハードウェア５のメモリ５２に格納されている関数アドレス情報に含まれている。また、制御部５４は、フラグを、ハードウェア処理中であることを示す値に変更する。その後、図３に示される処理が終了する。
【００６０】
ＯＰ４では、制御部５４は、対象のサブルーチンの処理がソフトウェア処理中であるか否かを判定する。対象のサブルーチンの処理がソフトウェア処理中である場合には（ＯＰ４：ＹＥＳ）、図３に示される処理が終了する。対象のサブルーチンの処理がハードウェア処理中である場合には（ＯＰ４：ＮＯ）、処理がＯＰ５に進む。
【００６１】
ＯＰ５では、制御部５４は、アドレス変換テーブルの、変換前アドレスが主記憶メモリ４の対象のサブルーチンの本体の格納領域のアドレスであるエントリの変換後アドレスに、対象のサブルーチンの本体の主記憶メモリ４の格納領域のアドレスを書き込む。実際には、アドレス変換部１８のアドレスメモリ１８Ｍの、対象のサブルーチンの本体の主記憶メモリ４の格納領域のアドレス（バス６上）に対応するアドレスメモリ１８Ｍ上のアドレスの領域に、対象のサブルーチンの本体の主記憶メモリ４の格納領域のアドレスが書き込まれる。また、制御部５４は、フラグを、ソフトウェア処理中であることを示す値に変更する。その後、図３に示される処理が終了する。
【００６２】
なお、ＯＰ１における所定の条件は、管理者からのハードウェア処理又はソフトウェア処理への切り替えの指示の入力、情報処理装置１００への接続の検知等であってもよい。
【００６３】
図４は、演算処理ハードウェア５の制御部５４の、演算処理部５３の演算処理が呼び出された場合の処理のフローチャートの一例である。図４に示される処理は、演算処理ハードウェア５に割り当てられているアドレスがＣＰＵ  １によって呼び出された場合に開始される。
【００６４】
ＯＰ１１では、制御部５４は、制御部５４内に保持されているスタックポインタ１２のアドレスが示すスタック領域内の領域からスタックフレームを読み出す。
【００６５】
ＯＰ１２では、制御部５４は、スタックフレームに格納されているデータ格納領域のアドレスを参照して、主記憶メモリ４の該当する領域から、演算処理部５３の演算処理に用いられる引数の値等を読み出す。ＯＰ１３では、制御部５４は、読み出した引数の値を演算処理部５３に入力する。
【００６６】
ＯＰ１４では、制御部５４は、演算処理部５３による演算処理の終了を判定する。演算処理部５３から演算結果が出力された場合に、演算処理の終了が判定される。演算処理部５３による演算処理が終了していない場合には（ＯＰ１４：ＮＯ）、処理がＯＰ１５に進む。演算処理部５３による演算処理が終了した場合には（ＯＰ１４：ＹＥＳ）、処理がＯＰ１７に進む。
【００６７】
ＯＰ１５では、制御部５４が、演算処理ハードウェア５に割り当てられているアドレスが呼び出されたことを検出した場合には（ＯＰ１５：ＹＥＳ）、処理がＯＰ１６に進む。演算処理ハードウェア５に割り当てられているアドレスが呼び出されていない場合には（ＯＰ１５：ＮＯ）、処理がＯＰ１４に進む。
【００６８】
ＯＰ１６では、制御部５４は、演算処理部５３による演算処理の実行中に演算処理ハードウェア５に割り当てられているアドレスが呼び出されたので、メインルーチンに処理を戻さないために、ダミーの命令をＣＰＵ  １に返す。ダミーの命令は、例えば、演算処理部５３に割り当てられているアドレスを指定するＪＵＭＰ命令等である。
【００６９】
ダミーの命令が返されると、処理がＯＰ１４に進む。演算処理部５３による演算処理が終了するまでの間、ＯＰ１４からＯＰ１６の処理が繰り返される。
【００７０】
なお、ダミーの命令に、ＮＯＰ命令、演算処理部５３に割り当てられているアドレスを指定するＬＯＯＰ命令、が用いられてもよい。ＮＯＰ命令は、何もしないという命令である。例えば、演算処理ハードウェア５には所定のアドレス範囲が割り当てられることもある。例えば、ダミーの命令としてＮＯＰ命令が用いられる場合には、ＮＯＰ命令によって、ＣＰＵ  １のプログラムカウンタ１３が保持するアドレスが増え、ＣＰＵ  １がコードを読み出すアドレスが変わる。この場合でも、ＣＰＵ  １が呼び出すアドレスが演算処理ハードウェア５に割り当てられたアドレス範囲内であれば、制御部５４はＣＰＵ  １に対してダミーの命令を返し続けることができる。
【００７１】
ダミー命令としてＮＯＰ命令が用いられ、プログラムカウンタ１３が保持するアドレスが演算処理ハードウェア５に割り当てられたアドレス範囲内の末尾に近い所定のアドレスに到達した場合には、制御部５４は、例えば、アドレス範囲内の先頭に近いアドレスを指定するＪＵＭＰ命令を返す。これによって、例えば、演算処理部５３の演算処理に時間がかかり、プログラムカウンタ１３が保持するアドレスが演算処理ハードウェア５に割り当てられたアドレス範囲を超えそうな場合でも、メインルーチンに処理を戻さないようにすることができる。
【００７２】
ＯＰ１７では、演算処理部５３による演算処理が終了したので、制御部５４は、演算結果を信号線１９Ｂを介してＣＰＵ  １の関数戻り値レジスタ１６Ｒに書き込む。演算処理結果として、引数を受け渡す場合には、制御部５４は、主記憶メモリ４の引数ｘ、ｙ、ｚの値の格納領域を更新する。ＯＰ１８では、制御部５４は、ＲＥＴＵＲＮ命令をＣＰＵ  １に返す。その後、図４に示される処理が終了する。
【００７３】
＜具体例＞
図５は、具体例におけるプログラムＡのメインルーチンのフローチャートの一例である。プログラムＡは、主記憶メモリ４に展開されている。プログラムＡのメインルーチンのコードは、主記憶メモリ４内の連続する記憶領域に格納されている。
【００７４】
プログラムＡでは、処理１、関数func-1の演算処理、処理２、関数func-2の演算処理、処理３の順で処理が行われる。図５に示されるプログラムＡのメインルーチンのフローチャートは、関数func-1の演算処理、関数func-2の演算処理はソフトウェア処理で実行されることを想定したものである。
【００７５】
関数func-1は、ｘ、ｙ、ｚを引数とする（図中、func-1(x,y,z)）。関数func-2は、ｘ
、ｙ、ｚと、関数func-2の演算結果ｂを引数とする（図中、func-2(&b,x,y,z)）。
【００７６】
具体例１では、関数func-1がソフトウェア処理からハードウェア処理に置き換えられることが想定される。具体例２では、関数func-1と関数func-2とがソフトウェア処理からハードウェア処理に置き換えられることが想定される。
【００７７】
図６は、具体例１におけるアドレス変換テーブルの一例を示す図である。具体例１では、関数func-1がソフトウェア処理からハードウェア処理に置き換えられるので、変換前アドレスとして関数func-1が格納されている主記憶メモリ４のアドレス（７）と、変換後のアドレスとして演算処理ハードウェア５に割り当てられているアドレス（１１）とが対応付けられている。関数func-2はソフトウェア処理であるので、変換前及び変換後アドレスともに、関数func-2が格納されている主記憶メモリ４のアドレス（９）が格納されている。
【００７８】
なお、実際には、アドレス変換部１８内のアドレスメモリ１８Ｍの、バス６上のアドレス（７）に対応付けられるアドレスメモリ１８Ｍ上のアドレスに該当する記憶領域に、バス６上のアドレス（１１）が格納されている。アドレス変換部１８内のアドレスメモリ１８Ｍの、バス６上のアドレス（９）に対応付けられるアドレスメモリ１８Ｍ上のアドレスに該当する記憶領域に、バス６上のアドレス（９）が格納されている。
【００７９】
具体例１において、プログラムＡは、「第１の命令群」である。具体例１において、主記憶メモリ４内の関数func-1の本体（コード群）は、「第２の命令群」の一例である。具体例１において、関数func-1の本体の主記憶メモリ４内の格納領域のアドレスは、「第２の命令群の実行に用いられるアドレス」の一例である。具体例１において、演算処理ハードウェア５のアドレスは、「回路に割り当てられているアドレス」の一例である。
【００８０】
図７は、具体例１に係るプログラムＡの実行イメージＴ１の一例を示す図である。また、図７には、主記憶メモリ４内のプログラムの格納イメージＭ１と、演算処理ハードウェア５−１とが示されている。図７に示される演算処理ハードウェア５−１は、機能的に表示されたものである。
【００８１】
図７に示される主記憶メモリ４のプログラムの格納イメージＭ１は、簡略化のため、処理１等の１つのコード群に対して１つのアドレスが付与されている。ただし、実際には、１つのコード群は１つのアドレスに該当する記憶領域に収まりきらないことがあるので、１つのコード群に対して所定のアドレス範囲が割り当てられることもある。
【００８２】
図７では、アドレス（１）からアドレス（５）までのアドレス範囲に、プログラムＡのメインルーチンのコードが格納されている。アドレス（７）に、関数func-1の本体（コード群）が格納されている。アドレス（９）に関数func-2の本体（コード群）が格納されている。演算処理ハードウェア５には、アドレス（１１）が割り当てられている。
【００８３】
演算処理ハードウェア５−１には、演算処理部５３−１として、関数func-1の演算回路が備えられている。
【００８４】
Ａ１では、ＣＰＵ  １は、プログラムＡの実行を開始する。ＣＰＵ  １がプログラムＡを実行する場合には、プログラムＡのコード群が格納されているアドレス範囲（１）〜（５）のうち先頭のアドレス（１）がプログラムカウンタ１３に設定される。プログラムカウンタ１３が指定するアドレス（１）に格納されるコードが主記憶メモリ４から読み出され、命令レジスタ１４に格納される（フェッチ）。アドレス（１）から読み出されたコードは、命令デコーダ１５Ｄによって解読され、処理１の処理内容を含む制御情報に従って、制御部１５が処理を実行する。
【００８５】
処理１が終了すると、制御部１５は、プログラムカウンタ１３に処理完了の信号を制御信号線Ｃ１を通じて出力する。プログラムカウンタ１３は、制御信号線Ｃ１を通じて制御部１５から処理完了の信号の入力を受けると、保持するアドレス（１）をカウントアップしてアドレス（２）に設定する。以降、同様にして、プログラムカウンタ１３に指定されるアドレスからコードが読み出されてプログラムＡの処理が実行される。
【００８６】
Ａ２では、アドレス（２）に格納される関数func-1のＣＡＬＬ命令が実行される。関数func-1のＣＡＬＬ命令には、関数func-1の本体が格納されている主記憶メモリ４の記憶領域のアドレス（７）が指定されている。
【００８７】
関数func-1のＣＡＬＬ命令がＣＰＵ  １の制御部１５によって実行されると、制御部１
５からスタックポインタ１２に制御信号が出力される。スタックポインタ１２には、初期値として、例えば、スタック領域として割り当てられている主記憶メモリ４内のアドレス範囲のうち最大のアドレスが保持されている。制御部１５から入力される制御信号によって、スタックポインタ１２に保持されるスタック領域のアドレスは、保持しているスタック領域のアドレスからスタック領域に格納されるデータ量に相当する値が差し引かれた値に更新される。更新後のスタックポインタ１２が示すアドレスが、スタック領域内のメインルーチンのデータが格納されている領域の先頭のアドレスとなる。
【００８８】
また、関数func-1のＣＡＬＬ命令がＣＰＵ  １の制御部１５によって実行されると、制御部１５によって、スタックポインタ１２の更新後のアドレスが示すスタック領域内の領域に、戻りアドレスと、メインルーチンのデータとが格納される。戻りアドレスと、処理が分岐する直前のメインルーチン又はサブルーチンのデータと、のセットは、スタックフレームと称される。戻りアドレスは、関数func-1のＣＡＬＬ命令がＣＰＵ  １の制御部１５によって実行された時点でカウンタメモリ１３に保持されているアドレスに１が加算された値となる。処理が分岐する直前のメインルーチン又はサブルーチンのデータは、例えば、主記憶メモリ４内の関数の引数が格納されている記憶領域のアドレスである。
【００８９】
図７に示される例において、関数func-1のＣＡＬＬ命令実行の際にスタック領域に格納されるスタックフレームには、戻りアドレスとしてアドレス（３）と、関数func-1の引数ｘ、ｙ、ｚの値のそれぞれが格納されている主記憶メモリ４内の記憶領域（データ格納領域）のアドレスとが含まれる。
【００９０】
スタックポインタ１２の更新後のアドレスが示すスタック領域内の記憶領域に、スタックフレームが書き込まれる際には、スタックポインタ１２からスタックフレームの格納領域を指定するアドレスがバスＩＦ部１１に出力される。このとき、スタックポインタ１２から出力されたアドレス（スタックポインタ１２のアドレス）は、信号線１９Ｃを通じて演算処理ハードウェア５−１の制御部５４−１に入力される。演算処理ハードウェア５−１の制御部５４−１は、入力されたスタックポインタのアドレスを制御部５４−１内に保持する。
【００９１】
関数func-1のＣＡＬＬ命令がＣＰＵ  １の制御部１５によって実行されると、上述のような、サブルーチンへの分岐前のデータの保存とともに、制御部１５からアドレス変換部１８に、ＣＡＬＬ命令で指定されているアドレス（７）が出力される。アドレス変換部１８にアドレス（７）が入力されると、図６のアドレス変換テーブルに示されるように、アドレス変換部１８からはアドレス（１１）が出力される。したがって、プログラムカウンタ１３には、アドレス（１１）が設定される。
【００９２】
プログラムカウンタ１３にアドレス（１１）が設定されるので、アドレス（２）の次にアドレス（１１）が、すなわち、演算処理ハードウェア５−１が呼び出される。
【００９３】
Ａ３では、演算処理ハードウェア５−１の制御部５４−１は、関数func-1が呼び出されたので、以下の通りに処理を行う。
【００９４】
制御部５４−１は、スタックポインタ１２のアドレスが示す主記憶メモリ４の記憶領域からスタックフレームを読み出す（図４、ＯＰ１１）。スタックフレームには、引数ｘ、ｙ、ｚの値のデータ格納領域のアドレス、ＲＥＴＵＲＮ時の戻りアドレスが含まれている。ＲＥＴＵＲＮ時の戻りアドレスは、アドレス（３）である。
【００９５】
制御部５４−１は、スタックフレームに含まれるデータ格納領域のアドレスから、関数func-1の引数ｘ、ｙ、ｚの値を読み出し（図４、ＯＰ１２）、演算処理部５３−１に出力
し、演算処理部５３−１に関数func-1の演算処理を実行させる（図４、ＯＰ１３）。関数func-1の演算処理が完了するまで、制御部５４−１は、メインルーチンに処理が戻らないようにするために、ＣＰＵ  １からの読み出しに対してダミーのＪＵＭＰ命令を返す（図４、ＯＰ１４〜ＯＰ１６）。
【００９６】
演算処理部５３−１の演算処理が終了すると（図４、ＯＰ１４：ＹＥＳ）、制御部５４−１は、関数func-1の演算結果ａをＣＰＵ  １の関数戻り値レジスタ１６Ｒに書き込む（図４、ＯＰ１７）。また、演算処理結果として、引数を受け渡す場合には、制御部５４−１は、主記憶メモリ４の引数ｘ、ｙ、ｚの値の格納領域を更新する。
【００９７】
Ａ４では、制御部５４−１は、ＣＰＵ  １からの読み出しに対してＲＥＴＵＲＮ命令を返して、処理をメインルーチンに戻す（図４、ＯＰ１８）。
【００９８】
ＲＥＴＵＲＮ命令が読み出されると、ＣＰＵ  １では以下の処理が実行される。ＣＰＵ
１の制御部１５は、スタックポインタ１２が示すアドレスからスタックフレームを読み出す。スタックフレームから取得される戻り先アドレス（３）は、制御部１５から出力され、変換部１６を経由して、プログラムカウンタ１３に入力される。これによって、次はアドレス（３）からコードが読み出されることになり、処理がメインルーチンに戻る。また、ＣＰＵ  １の制御部１５は、スタックフレームから取得される戻り先アドレス以外のデータを元に戻す。
【００９９】
Ａ５では、処理２が実行される。Ａ６では、関数func-2を呼び出すＣＡＬＬ命令が実行される。関数func-2の演算処理はソフトウェア処理であるので、ＣＰＵ  １から関数func-2が呼び出されるアドレスは、主記憶メモリ４の関数func-2の格納領域のアドレス（９）のままであり、変換されない（図６参照）。
【０１００】
図８は、具体例２におけるアドレス変換テーブルの一例を示す図である。具体例２では、関数func-1と関数func-2との演算処理がソフトウェア処理からハードウェア処理に置き換えられる。したがって、図８に示されるアドレス変換テーブルでは、変換前アドレスとして関数func-1が格納されている主記憶メモリ４のアドレス（７）と、変換後のアドレスとして演算処理ハードウェア５に割り当てられているアドレス（１１）とが対応付けられている。また、図８に示されるアドレス変換テーブルでは、変換前アドレスとして関数func-2が格納されている主記憶メモリ４のアドレス（９）と、変換後のアドレスとして演算処理ハードウェア５に割り当てられているアドレス（１１）とが対応付けられている。
【０１０１】
なお、実際には、アドレス変換部１８内のアドレスメモリ１８Ｍの、バス６上のアドレス（７）に対応するアドレスメモリ１８Ｍ上のアドレスに該当する記憶領域に、バス６上のアドレス（１１）が格納されている。アドレス変換部１８内のアドレスメモリ１８Ｍの、バス６上のアドレス（９）に対応するアドレスメモリ１８Ｍ上のアドレスに該当する記憶領域に、バス６上のアドレス（１１）が格納されている。
【０１０２】
具体例２において、プログラムＡは、「第１の命令群」である。具体例２において、主記憶メモリ４内の関数func-1、関数func-2の本体（コード群）は、それぞれ、「第２の命令群」の一例である。具体例２において、関数func-1、関数func-2の本体の主記憶メモリ４内の格納領域のアドレスは、それぞれ、「第２の命令群の実行に用いられるアドレス」の一例である。具体例２において、演算処理ハードウェア５のアドレスは、「回路に割り当てられているアドレス」の一例である。
【０１０３】
図９は、具体例２に係るプログラムＡの実行イメージＴ２の一例を示す図である。また、図９には、主記憶メモリ４内のプログラムの格納イメージＭ２と、演算処理ハードウェ
ア５−２のブロック図とが示されている。図９に示される演算処理ハードウェアは、機能的に表示されたものである。具体例２においても、プログラムＡのメインルーチンに変更はないので、図９に示される主記憶メモリ４内のプログラムの格納イメージＭ２は、図７に示される主記憶メモリ４内のプログラムの格納イメージＭ１と同じである。
【０１０４】
具体例２に係る演算処理ハードウェア５−２は、関数func-1の演算処理回路である演算処理部５３−２Ａと、関数func-2の演算処理回路である演算処理部５３−２Ｂとを備える。
【０１０５】
具体例２では、関数func-1及び関数func-2の演算処理はハードウェア処理である。したがって、Ａ１１〜Ａ１５の処理は、図７のＡ１〜Ａ５の処理と同様である。また、Ａ１６〜Ａ１８の処理は、関数func-2の演算処理に対して、図７のＡ２〜Ａ４と同様の処理が行われる。
【０１０６】
すなわち、関数func-2がＣＡＬＬ命令で呼び出されると、ＣＡＬＬ命令が指定するアドレス（９）がＣＰＵ  １のアドレス変換部１８によって演算処理ハードウェア５−２に割り当てられているアドレス（１１）に変換される。これによって、関数func-2がＣＡＬＬ命令で呼び出されると、演算処理ハードウェア５−２が呼び出される（Ａ１６）。
【０１０７】
演算処理ハードウェア５−２の制御部５４−２は、スタックポインタ１２からスタックフレームの格納領域のアドレスを取得し、スタックフレームから、戻り先アドレス（５）、引数ｘ、ｙ、ｚ、ｂの値の格納領域のアドレスを取得する。制御部５４−２は、主記憶メモリ４から、引数ｘ、ｙ、ｚ、ｂの値を取得し、演算処理部５３−２Ｂに出力して、関数func-2の演算処理を実行させる。演算処理が完了するまで、制御部５４−２は、ＣＰＵ
１からの読み出しに対して、演算処理部５３−２Ｂに割り当てられているアドレスを指定するＪＵＭＰ命令等を返す（Ａ１７）。
【０１０８】
演算処理が完了すると、制御部５４−２は、関数func-2の処理結果として“成功”を関数戻り値レジスタ１６Ｒに書き込む。また、関数func-2は、演算結果を引数ｂとして用いるため、制御部５４−２は、主記憶メモリ４の引数ｂの値の格納領域に演算結果を書き込む。その後、制御部５４−２はＲＥＴＵＲＮ命令をＣＰＵ  １に返すと、処理がメインルーチンに戻る（Ａ１８）。ＲＥＴＵＲＮ命令の戻り先アドレスは、アドレス（５）となる。
【０１０９】
具体例１及び具体例２のいずれにおいても、関数func-1、関数func-2を呼び出すアドレスは、アドレス変換部１８（アドレス変換テーブル）によって、演算処理ハードウェア５のアドレスに変換されている。また、具体例１及び具体例２のいずれにおいても、プログラムＡのメインルーチンは同じである、すなわち、プログラムＡのメインルーチンは変更されていない。
【０１１０】
＜第１実施形態の作用効果＞
第１実施形態では、ＣＰＵ  １にアドレス変換部１８が備えられる。アドレス変換部１８は、変換前アドレスに対応付けられた変換後アドレスを保持するアドレスメモリ１８Ｍを備える。第１実施形態では、変換前アドレスとして、サブルーチンの呼び出しに用いられる主記憶メモリ４内のサブルーチンの本体の格納領域のアドレスが用いられる。変換後アドレスとして、サブルーチンの演算処理を行う演算処理ハードウェア５のアドレスが用いられる。ＣＡＬＬ命令やＪＵＭＰ命令などの分岐命令の実行結果として制御部１５からアドレス変換部１８にサブルーチン本体の主記憶メモリ４内の格納領域のアドレスが入力された場合、アドレス変換部１８からプログラムカウンタ１３に演算処理ハードウェア５のアドレスが出力される。これによって、ソフトウェアの実行コードを変更することなく
、ソフトウェア処理をハードウェア処理に置き換えることができる。
【０１１１】
第１実施形態によれば、メインルーチンの実行コードを変更することなくソフトウェア処理をハードウェア処理に置き換えることができるため、メインルーチンの変更に伴うメインルーチンの停止、情報処理装置１００の再起動等を行わなくてよい。また、ハードウェア処理の方がソフトウェア処理よりも消費電力が少なく済むような演算処理では、ソフトウェア処理をハードウェア処理に置き換えることで消費電力を削減することができる。
【０１１２】
また、第１実施形態では、演算処理ハードウェア５はスタックポインタ１２と信号線で接続されている。また、演算処理ハードウェア５は、主記憶メモリ４にリード／ライトアクセス可能なように、主記憶メモリ４のＤｕａｌ−Ｐｏｒｔ  メモリ化又はバス６の時分割アクセスが設定される。これらによって、演算処理ハードウェア５は、スタックポインタ１２から主記憶メモリ４内のスタックフレームの格納領域のアドレスを取得でき、メインルーチンを介することなく、サブルーチンの演算処理に用いるデータ等を取得することができる。これによっても、メインルーチンの変更なく、ソフトウェア処理をハードウェア処理に置き換えることができる。
【０１１３】
また、第１実施形態では、演算処理ハードウェア５は、ＣＰＵ  １内の関数戻り値レジスタ１６Ｒと信号線で接続されている。これによって、演算処理ハードウェア５が演算結果を直接関数戻り値レジスタ１６Ｒに書き込むことができる。関数戻り値レジスタ１６Ｒには、サブルーチンがソフトウェア処理である場合にも、サブルーチンの戻り値が書き込まれる。したがって、演算処理ハードウェア５が演算結果を直接関数戻り値レジスタ１６Ｒに書き込むことによって、関数戻り値レジスタを、ソフトウェア処理のサブルーチンからメインルーチンへの復帰の状態と同じ状態にすることができる。これによって、メインルーチンに対して、サブルーチンが演算処理ハードウェア５の処理に置き換えられている場合でも、ソフトウェア処理であるかのように見せかけることができる。
【０１１４】
また、第１実施形態では、演算処理ハードウェア５の制御部５４は、所定の条件が満たされた場合に、アドレス変換部１８のアドレスメモリ１８Ｍに格納される変換後のアドレスを、演算処理ハードウェア５のアドレス又は主記憶メモリ４の格納領域のアドレスに書き換える。アドレス変換部１８は、アドレス変換テーブルに相当する。所定の条件は、温度、ＣＰＵ  １の負荷状況等の環境条件によって定められる。したがって、第１実施形態によれば、環境状況に応じて、サブルーチンの処理をハードウェア処理またはソフトウェア処理に切り替えることができる。さらに、第１実施形態では、サブルーチンの処理のハードウェア処理とソフトウェア処理との間での切替を、メインルーチンを書き換えることなく、すなわち、メインルーチンの処理の停止、情報処理装置１００の再起動なしで行うことができる。
【０１１５】
なお、アドレス変換テーブルの書換処理（図３）は、演算処理ハードウェア５の制御部５４によって行われることに限定されない。例えば、図３に示される処理内容を含むプログラムを用意したり、アドレス変換テーブルを書き換えるコードをプログラムに含めたりして、ＣＰＵ  １に実行させることで、ＣＰＵ  １自身にアドレス変換処理を行わせてもよい。
【０１１６】
また、演算処理ハードウェア５に所定のアドレス範囲が割り当てられる場合には、演算処理回路それぞれにアドレスを対応させてもよい。例えば、具体例２において、第１実施形態では、関数func-1、関数func-2が呼び出される場合には、演算処理ハードウェア５−２に割り当てられている同じアドレスが用いられている。これに代えて、例えば、関数func-1と関数func-2とで、呼び出されるアドレスを、演算処理ハードウェア５−２に割り当てられているアドレス範囲内で異ならせてもよい。
【０１１７】
＜比較例＞
比較例として、アドレス変換部１８を備えていない情報処理装置における、ソフトウェア処理のハードウェア処理への置き換えについて説明する。
【０１１８】
図１０は、情報処理装置のハードウェア構成の一例を示す図である。比較例に係る情報処理装置Ｐ１００は、ＣＰＵ  Ｐ１、入出力装置Ｐ２、ＲＯＭ  Ｐ３、主記憶メモリＰ４、演算処理ハードウェアＰ５を備える。
【０１１９】
情報処理装置Ｐ１００は、ＣＰＵ  Ｐ１にアドレス変換部、演算処理ハードウェアＰ５に制御部を備えていない点で、第１実施形態に係る情報処理装置１００と異なる。また、スタックポインタＰ１２、関数戻り値レジスタＰ１６Ｒは、それぞれ、演算処理ハードウェアＰ５とは接続されていない。
【０１２０】
図１１は、比較例に係るプログラムＡのメインルーチンのフローチャートの一例である。図１１に示されるフローチャートは、第１実施形態に係るプログラムＡと同じプログラムのフローチャートである。比較例では、関数func-1、関数func-2の演算処理を演算処理ハードウェアＰ５に実行させる。そのため、図１１に示されるプログラムＡのメインルーチンのフローチャートも、関数func-1、関数func-2の演算処理を演算処理ハードウェアＰ５に実行させることが想定されたものである。
【０１２１】
演算処理ハードウェアＰ５に、関数func-1、関数func-2の演算処理に用いられる引数を渡すために、図１１に示されるフローチャートのＯＰ２２、ＯＰ２４では、演算処理ハードウェアＰ５のレジスタに引数を書き込む処理が追加されている。演算処理ハードウェアＰ５のレジスタに引数を書き込む処理は、図１１中、“func-1x←x”、“func-1ｙ←y”
、“func-1z←z”、“func-2x←x”、“func-2y←y”、“func-2z←z”で示されている。図１１中の“func-1x”、“func-1ｙ”、“func-1z”、“func-2x”、“func-2y”、“func-2z”の記載は、関数func-1、関数func-2のそれぞれの引数ｘ、ｙ、ｚの値を格納する
、演算処理ハードウェアＰ５のレジスタを示す。
【０１２２】
ＯＰ２２の“a←func-1a”、ＯＰ２４の“ｂ←func-2b”は、それぞれ、変数ａ、ｂに
関数func-1、func-2の演算結果を代入することを示す。“func-1a”、“func-2b”は、それぞれ、関数func-1、func-2の演算結果の値の格納場所を示す。関数func-1、func-2の演算結果の値の格納場所は、演算処理ハードウェアＰ５のレジスタである。したがって、ＯＰ２２、ＯＰ２４では、それぞれ、演算処理ハードウェアＰ５のレジスタから関数func-1、func-2の演算結果を読み出す処理が追加されている。
【０１２３】
図１２は、比較例に係るプログラムＡの実行イメージＴ３の一例を示す図である。また、図１２には、主記憶メモリＰ４内のプログラムの格納イメージＭ３と、演算処理ハードウェアＰ５のブロック図とが示されている。
【０１２４】
図１２では、アドレス（１）からアドレス（８）までのアドレス範囲に、プログラムＡのメインルーチンのコードが格納されている。また、図１２では、アドレス（２）からアドレス（４）に、図１１に示されるフローチャートのＯＰ２２の関数func-1の演算処理に対応する実行コードが格納されている。図１２では、アドレス（６）に、図１１に示されるフローチャートのＯＰ２４の関数func-2の演算処理に対応する実行コードが格納されている。
【０１２５】
演算処理ハードウェアＰ５には、レジスタと、関数func-1、関数func-2それぞれの演算回路とが備えられている。
【０１２６】
比較例では、主記憶メモリＰ４のアドレス（１）から順にコードが読み出され実行される（プログラム実行イメージＴ３参照）。関数func-1、関数func-2の演算処理についても、メインルーチンが格納されるアドレス範囲外のアドレスからコードを読み出すことはない。
【０１２７】
比較例では、ＣＰＵ  Ｐ１はアドレス変換部１８を備えていないため、ソフトウェア処理をハードウェア処理に置き換える場合には、図１１で示される例のように、メインルーチンが変更される。そのため、環境条件に応じてフレキシブルに処理をソフトウェア処理とハードウェア処理との間で切り替えることはできない。
【０１２８】
＜第１実施形態に係る情報処理装置の適用例＞
第１実施形態に係る情報処理装置１００の適用例の一つとして、光ネットワークにおける伝送装置が挙げられる。
【０１２９】
図１３は、光ネットワークシステムのシステム構成の一例を示す図である。光ネットワークシステム１０００は、第１実施形態に係る情報処理装置１００が適用された伝送装置５００を複数含む。伝送装置５００間は、光ファイバを媒体として光信号が伝送される。伝送装置５００は、他の伝送装置５００又はユーザネットワークと接続されている。
【０１３０】
例えば、ユーザネットワークを接続する伝送装置５００は、ユーザ端末へのインタフェースと、他の伝送装置５００へのインタフェースを備える。他の伝送装置５００へのインタフェースは、ユーザ端末へのインタフェースよりも、速度の速い規格に対応している。
【０１３１】
図１４は、第１実施形態に係る情報処理装置の適用例の一つである伝送装置のブロック図の一例である。伝送装置５００は、第１実施形態に係る情報処理装置１００の構成と、その他に、クライアントインタフェース部、スイッチ部、ディジタル信号処理部５１０、光インタフェース部を備える。
【０１３２】
ディジタル信号処理部５１０は、暗号化部５１１と誤り訂正部５１２とを備える。暗号化の演算処理と誤り訂正の演算処理の演算結果をＣＰＵ  １がディジタル信号処理部５１０に書き込むことによって、暗号化部５１１と誤り訂正部５１２との機能が達成されている。
【０１３３】
演算処理ハードウェア５−３は、暗号化の演算処理回路５３−３Ａを備えており、暗号化の演算処理は演算処理ハードウェア５−３によって行われている。誤り訂正の演算処理はＣＰＵ  １によって行われている（ソフトウェア処理）。
【０１３４】
例えば、伝送装置５００において、誤り訂正の処理がハードウェア処理に置き換えられる場合を想定する。この場合、演算処理ハードウェア５−３に、誤り訂正の演算回路５３−３Ｂが追加される。これを契機として、演算処理ハードウェア５−３の制御部５４−３は、アドレス変換テーブルの書換処理を実行する。
【０１３５】
より具体的には、例えば、演算処理ハードウェア５−３の制御部５４−３は、図３の処理を実行することでアドレス変換テーブルを書き換える。この場合、図３のＯＰ１の所定の条件は、例えば、新たな演算回路の追加の検出である。また、誤り訂正の演算回路５３−３Ｂの追加に伴い、メモリ５２−３に格納されている関数アドレス情報が、誤り訂正の処理のサブルーチンのコード群の主記憶メモリ４内の格納領域のアドレスが追加されて更新される。制御部５４−３は、更新された関数アドレス情報に基づいて、アドレスメモリ１８Ｍの、誤り訂正の処理のサブルーチンのコード群の主記憶メモリ４内の格納領域のア
ドレスに対応付けられるアドレスメモリ１８Ｍ上のアドレスに該当する領域に、演算処理ハードウェア５−３のアドレスを書き込む。
【０１３６】
アドレス変換テーブルにおいて誤り訂正の演算処理の変換後のアドレスの演算処理ハードウェア５−３のアドレスへの書き換え完了以降は、誤り訂正の演算処理が呼び出されると、誤り訂正の演算処理は、誤り訂正の演算回路５３−３Ｂによって実行される。ＣＰＵ
１が実行中のメインルーチンを変更、停止、再起動させることなく、誤り訂正の演算処理をソフトウェア処理からハードウェア処理に置き換えることができる。伝送装置５００は通信のデータを取り扱っているので、ソフトウェア処理からハードウェア処理への置き換えによる通信の瞬断も抑制できる。誤り訂正の演算処理を、消費電力がより少ない演算処理ハードウェア５−３を採用し、演算処理ハードウェア５−３による処理に置き換えることで、消費電力を削減することができる。
【０１３７】
図１５は、第１実施形態に係る情報処理装置の適用例の他の一つである伝送装置のブロック図の一例である。図１５の伝送装置６００では、光インタフェース部６１０が着脱可能であり、光インタフェース部６１０は交換可能である。光インタフェース部６１０には、光モジュール部６１１、光アンプ（ＡＭＰ）部６１２のモジュールが備えられている。
【０１３８】
光モジュール部６１１、光ＡＭＰ部６１２は、温度、ＣＰＵ  １の負荷状況、データの種類、データの流量等の環境条件に応じて、特性が調整される。演算処理ハードウェア５−４には、光モジュール部６１１、光ＡＭＰ部６１２の特性の調整を行うための制御回路が備えられている。
【０１３９】
伝送装置６００では、温度、ＣＰＵ  １の負荷状況、データの種類、データの流量等の環境条件に応じて、光モジュール部６１１、光ＡＭＰ部６１２の制御に係る演算処理が、ソフトウェア処理とハードウェア処理とで切り替えられる。
【０１４０】
例えば、演算処理ハードウェア５−４には、光インタフェース部Ａ〜Ｃにそれぞれ備えられている光モジュールＡ〜Ｃ、光ＡＭＰ  Ａ〜Ｃのそれぞれ異なる光デバイス用の制御関数の演算処理回路が備えられている。また、主記憶メモリ４にも、光インタフェース部Ａ〜Ｃにそれぞれ備えられている光モジュールＡ〜Ｃ、光ＡＭＰ  Ａ〜Ｃのそれぞれ異なる光デバイス用の制御関数のコード群が格納されている。
【０１４１】
ＣＰＵ  １及び制御部５４−４は、それぞれ、光インタフェース部６１０の装着を検知し、光インタフェース部６１０の識別情報から制御関数を使い分ける。例えば、メインルーチンでは、光モジュール部Ａ〜Ｃそれぞれの制御関数を区別しておらず、光モジュール部Ａ〜Ｃの制御関数を読み出す場合には、光モジュール部の制御関数を示す代表アドレスを用いる。同様に、光ＡＭＰ部Ａ〜Ｃについても、メインルーチンでは制御関数は区別されておらず、光ＡＭＰ部の制御関数を読み出す場合には、光ＡＭＰ部の制御関数を示す代表アドレスを用いる。光モジュールＡ〜Ｃ、光ＡＭＰ  Ａ〜Ｃのいずれの制御関数を用いるかは、装着されている光インタフェース部の識別情報に基づいて、制御部５４−４が選択する。アドレス変換テーブルの変換前アドレスには、光モジュール部及び光ＡＭＰ部の制御関数の代表アドレスが用いられ、変換後アドレスには制御部５４−４が選択した制御関数の主記憶メモリ４内の格納領域のアドレス又は演算処理ハードウェア５−４のアドレスが書き込まれる。詳細は後述される。または、例えば、メインルーチン内に光インタフェース部６１０の識別情報を判別する処理を含め、識別情報に応じて光モジュール部Ａ〜Ｃ及び光ＡＭＰ部Ａ〜Ｃのそれぞれの処理に分岐するようにして、制御関数を使い分けてもよい。
【０１４２】
図１６は、第１実施形態に係る情報処理装置の適用例の他の一つである伝送装置のブロ
ック図の一例である。図１６では、図１５に示される伝送装置６００に、伝送装置６００に制御関数がソフトウェアでもハードウェアでも準備されていない光インタフェース部Ｘが装着された場合が示されている。この場合には、伝送装置６００にとって未知である光インタフェース部Ｘには、光インタフェース部Ｘに搭載されている光モジュールＸ、光ＡＭＰ  Ｘの制御関数の演算処理を行う演算処理ハードウェアＸが備えられている。
【０１４３】
演算処理ハードウェアＸは、例えば、ＦＰＧＡである。演算処理ハードウェアＸは、バスＩＦ部２１、メモリ２２、演算処理部２３、制御部２４が備えられている。演算処理部２３には、光モジュールＸ、光ＡＭＰ  Ｘの制御関数の演算処理を行う演算回路がそれぞれ備えられている。メモリ２２には、関数アドレス情報が格納されている。メモリ２２内の関数アドレス情報には、例えば、メインルーチンによって、光モジュール部、光ＡＭＰ部それぞれの制御関数の呼び出しに用いられる代表アドレスが、変換前のアドレスとして格納されている。
【０１４４】
演算処理ハードウェアＸの制御部２４は、例えば、バスＩＦ部２１を通じて演算処理ハードウェア５−４にアクセスする。演算処理ハードウェアＸの制御部２４は、例えば、制御部５４−４が保持する最新のスタックポインタ１２の値を読み出すことで、スタックポインタ１２の値を取得する。また、演算処理ハードウェアＸの制御部２４は、例えば、制御部５４−４に関数戻り値レジスタ１６Ｒに書き込む値を渡すことで、制御部２４の代わりに関数戻り値レジスタ１６Ｒに演算処理の結果を書き込ませる。ただし、これに限られず、演算処理ハードウェアＸは、スタックポインタ１２及び関数戻り値レジスタ１６Ｒそれぞれと信号線で接続され、当該信号線を通じて、スタックポインタ１２の値を取得したり、演算結果を関数戻り値レジスタ１６Ｒに書き込んだりしてもよい。
【０１４５】
伝送装置６００に光インタフェース部Ｘが装着された場合には、ＣＰＵ  １によって光モジュール部、光ＡＭＰ部の制御関数が呼び出される際のアドレスが演算処理ハードウェアＸになるように、演算処理ハードウェア５−４がＣＰＵ  １内のアドレス変換テーブルを書き換える。
【０１４６】
図１７は、伝送装置の演算処理ハードウェアに備えられる制御部のブロック図の一例である。制御部５４−４は、シーケンサ５１１、演算パラメータ管理部５１２、処理切替判定部５１３、光インタフェース検出部５１４、演算結果選択部５１５、バスアクセス制御部５１６、アドレス変換テーブル管理部５１７を備える。これらは、いずれも所定の処理を実行するようにプログラミングされた回路である。
【０１４７】
演算パラメータ管理部５１２は、演算処理部５３−４において行われる演算に用いられる引数をシーケンサ５１１から受け取り、該当する演算回路に出力する。
【０１４８】
処理切替部５１３は、演算処理のソフトウェア処理とハードウェア処理との間の切替を判定する。処理切替部５１３には、例えば、伝送装置６００に備えられている他のハードウェア構成要素から、温度情報、ＣＰＵ負荷情報、データ種別、データ流量、等の情報が入力される。処理切替部５１３は、入力された情報を元に、ハードウェア切替条件が満たされたか否かを判定する。ハードウェア切替条件が満たされる場合には、処理をソフトウェア処理からハードウェア処理に切り替えることが判定される。ハードウェア切替条件は、光モジュールＡ〜Ｃ、光ＡＭＰ  Ａ〜Ｃのそれぞれについて異なる条件が予め設定されていてもよいし、共通の条件が設定されていてもよい。ハードウェア切替条件の判定結果は、シーケンサ５１１に出力される。
【０１４９】
光インタフェース検出部５１４は、光インタフェース部６１０の装着又は取り外しを検出する。光インタフェース検出部５１４には、光インタフェース部６１０が装着されると
、装着された光インタフェース部６１０から装着信号と、識別情報と、光インタフェース部６１０に演算処理ハードウェアが搭載されている場合には当該演算処理ハードウェアのアドレスとが入力される。光インタフェース検出部５１４は、装着信号の入力によって光インタフェース部６１０の装着を検出し、装着された光インタフェース部６１０から入力された識別情報、演算処理ハードウェアのアドレスをシーケンサ５１１に出力する。
【０１５０】
光インタフェース部６１０からの装着信号は、所定の周期で光インタフェース部５１４に入力される。光インタフェース検出部５１４は、光インタフェース部６１０からの装着信号が所定時間入力されないことを検出した場合に、光インタフェース部６１０が取り外されたことを検出し、シーケンサ５１１に通知する。
【０１５１】
演算結果選択部５１５は、演算処理部５３−４に備えられている光モジュールＡ〜Ｃ及び光ＡＭＰ  Ａ〜Ｃのそれぞれの制御関数の演算回路と、シーケンサ５１１との間で経路切替を行うセレクタである。演算結果選択部５１５には、シーケンサ５１１から装着されている光インタフェースの識別情報が入力される。演算結果選択部５１５は、入力された識別情報の光モジュール及び光ＡＭＰの制御関数の演算回路それぞれとシーケンサ５１１とが接続されるように経路を設定する。演算結果選択部５１５に光モジュール又は光ＡＭＰの制御関数の演算回路から演算結果が入力されると、当該演算結果はシーケンサ５１１に出力される。
【０１５２】
バスアクセス制御部５１６は、バスＩＦ部５１−４と制御部５４−４とのインタフェースである。バスアクセス制御部５１６を通じて、例えば、光モジュール及び光ＡＭＰの制御関数の呼び出し、引数の読み出し等が行われる。
【０１５３】
アドレス変換テーブル管理部５１７は、アドレス変換テーブルを書き換える。実際には、アドレス変換テーブル管理部５１７は、ＣＰＵ  １内のアドレス変換部１８のアドレスメモリ１８Ｍに接続しており、アドレスメモリ１８Ｍを書き換える。
【０１５４】
伝送装置６００に既知の光インタフェース部Ａ〜Ｃのいずれかが装着されている場合には、テーブル管理部５１７には、シーケンサ５１１からテーブル書き換えの指示信号が入力される。テーブル管理部５１７は、シーケンサ５１１から指示信号が入力されると、メモリ５２−４に格納されている関数アドレス情報から、制御関数の呼び出しに用いられている変換前のアドレスを取得する。テーブル管理部５１７は、アドレス変換テーブルの取得した変換前のアドレスに対応する変換後のアドレスを演算処理ハードウェア５−４のアドレスに書き換える。
【０１５５】
伝送装置６００に未知の光インタフェース部Ｘが装着されたことが検出された場合には、テーブル管理部５１７には、シーケンサ５１１からテーブル書き換えの指示信号と光インタフェース部Ｘに備えられる演算処理ハードウェアＸのアドレスとが入力される。テーブル管理部５１７は、シーケンサ５１１から指示信号が入力されると、メモリ５２−４に格納されている関数アドレス情報から、制御関数の呼び出しに用いられている変換前のアドレスを取得する。テーブル管理部５１７は、アドレス変換テーブルの取得した変換前のアドレスに対応する変換後のアドレスを演算処理ハードウェアＸのアドレスに書き換える。
【０１５６】
シーケンサ５１１は、予めプログラミングされた通りに、各回路との間の入出力を制御する。例えば、演算処理部５３−４に備えられる演算回路の制御関数が呼び出された場合のシーケンサ５１１の処理は以下の通りである。
【０１５７】
シーケンサ５１１は、スタックポインタ１２から出力されるスタックフレームのアドレ
スを信号線を通じて取得する。シーケンサ５１１は、スタックポインタ１２から出力されたアドレスからスタックフレームを読み出し、制御関数の引数の値を取得する。取得された制御関数の引数の値は、シーケンサ５１１から演算パラメータ管理部５１２に出力される。演算結果選択部５１５から演算結果がシーケンサ５１１に入力されるまで、シーケンサ５１１は、例えば、演算処理部５３−４に割り当てられているアドレスを指定するＪＵＭＰ命令等のダミー命令をバスアクセス制御部５１６を通じてＣＰＵ  １に返す。演算結果選択部５１５から演算結果がシーケンサ５１１に入力された場合には、シーケンサ５１１からＣＰＵ  １の関数戻り値レジスタ１６Ｒに演算結果が書き込まれる。例えば、演算結果が関数の引数となる場合には、シーケンサ５１１は、バスアクセス制御部５１６を通じて、主記憶メモリ４のデータ格納領域に演算結果を書き込む。シーケンサ５１１のアドレステーブル書換処理に係る処理の詳細は、図１７において後述される。
【０１５８】
図１８は、演算処理ハードウェア５−４の制御部５４−４のアドレステーブル書換処理のフローチャートの一例である。図１８に示される処理は、伝送装置６００の稼働中繰り返し実行される。
【０１５９】
ＯＰ３１では、制御部５４−４は、光インタフェース部６１０の装着が検出されたか否かを判定する。光インタフェース部６１０の装着が検出された場合には（ＯＰ３１：ＹＥＳ）、処理がＯＰ３２に進む。光インタフェース部６１０の装着が検出されない場合には（ＯＰ３１：ＮＯ）、光インタフェース部６１０の装着が検出されるまで、待機状態となる。ＯＰ３１の処理では、光インタフェース検出部５１４に装着信号が入力され、光インタフェース検出部５１４からシーケンサ５１１に装着された光インタフェース部６１０の識別情報が入力される。
【０１６０】
ＯＰ３２では、制御部５４−４は、アドレス変換テーブルにおいて、全ての関数についてメインルーチンで呼び出されるアドレスが変換されないように、アドレス変換テーブルを初期化する。例えば、アドレスメモリ１８Ｍに格納される変換後のアドレスを、それぞれが格納されるアドレスメモリ１８Ｍ上のアドレスに対応する変換前のアドレスに書き換えることで、アドレス変換テーブルが初期化される。ＯＰ３２の処理では、光インタフェース部６１０の装着の検出の通知を受けたシーケンサ５１１がテーブル管理部５１７にアドレス変換テーブルの初期化を指示し、テーブル管理部５１７がアドレスメモリ１８Ｍを更新する。
【０１６１】
ＯＰ３３では、制御部５４−４は、光インタフェース部６１０の識別情報が光インタフェース部Ａ〜Ｃであるか否かを判定する。光インタフェース部６１０が光インタフェース部Ａ〜Ｃのいずれかである場合には（ＯＰ３３：ＹＥＳ）、処理がＯＰ３４に進む。光インタフェース部６１０が光インタフェース部Ａ〜Ｃのいずれでもない場合には（ＯＰ３３：ＮＯ）、処理がＯＰ３７に進む。ＯＰ３３の処理では、シーケンサ５１１が、入力された識別情報に基づいて判定を行う。
【０１６２】
ＯＰ３４では、光モジュール部Ａ／Ｂ／Ｃのうち、装着されている光インタフェース部６１０の識別情報に該当する光モジュール部の制御関数の演算処理について、図３に示される処理が実行される。ＯＰ３５では、光ＡＭＰ部Ａ／Ｂ／Ｃのうち、装着されている光インタフェース部６１０の識別情報に該当する光ＡＭＰ部の制御関数の演算処理について、図３に示される処理が実行される。具体的には、ハードウェア切替条件が満たされている場合には、アドレス変換テーブルにおいて、光モジュール部又は光ＡＭＰ部の制御関数の代表アドレスに対応する変換後のアドレスが演算処理ハードウェア５−４のアドレスに書き換えられる。ハードウェア切替条件が満たされていない場合には、アドレス変換テーブルにおいて該当の光モジュール部又は光ＡＭＰ部の制御関数の変換後のアドレスが、演算処理ハードウェア５−４のアドレスに書き換えられる。
【０１６３】
ＯＰ３４及びＯＰ３５の処理では、処理切替判定部１５３から該当する光モジュール部又は光ＡＭＰ部の制御関数に関するハードウェア切替条件の判定結果がシーケンサ５１１に入力される。ハードウェア切替条件の判定結果に変化のある場合に、シーケンサ５１１からテーブル管理部５１７にアドレス変換テーブルの書換の指示信号が出力される（図３、ＯＰ２：ＮＯ、ＯＰ４：ＮＯ）。テーブル管理部５１７は、アドレス変換テーブルの光モジュール部又は光ＡＭＰ部の制御関数について、変換後のアドレスを演算処理ハードウェア５−４のアドレス又はメインルーチンが用いる代表アドレスに書き換える（図３、ＯＰ３、ＯＰ５）。いずれのアドレスに書き換えるかは、例えば、現在ハードウェア処理中であるかソフトウェア処理中であるかを示すフラグに基づいて判定される。ＯＰ３５の処理後、処理はＯＰ３６に進む。
【０１６４】
ＯＰ３６では、制御部５４−４は、終了条件が満たされたか否かを判定する。終了条件は、例えば、光インタフェース部Ａ／Ｂ／Ｃが取り外されたことが検出されることである。終了条件が満たされた場合（ＯＰ３６：ＹＥＳ）、図１８に示される処理が終了する。終了条件が満たさない場合（ＯＰ３６：ＮＯ）、処理がＯＰ３４に進む。
【０１６５】
ＯＰ３７では、制御部５４−４は、光インタフェース部Ｘから関数アドレス情報Ｘをメモリ５２−４にダウンロードする。ＯＰ３７の処理では、シーケンサ５１１がバスアクセス制御部５１６を介して光インタフェース部Ｘから関数アドレス情報Ｘを読み出し、メモリ５２−４に書き込む。光インタフェース部Ｘからの関数アドレス情報Ｘには、光インタフェース部Ｘに備えられている演算回路の関数関数の代表アドレス（メインルーティンで当該関数を呼び出す際に用いられているアドレス）が格納されている。例えば、関数アドレス情報Ｘは、光インタフェース部Ｘの識別情報とともにメモリ５２−４に格納される。
【０１６６】
ＯＰ３８及びＯＰ３９では、制御部５４−４は、光モジュール部Ｘ又は光ＡＭＰ部Ｘの制御関数の代表アドレスに該当するアドレス変換テーブルの変換後のアドレスを演算処理ハードウェアＸのアドレスに書き換える。ＯＰ３７の処理では、シーケンサ５１１からテーブル管理部５１７にアドレス変換テーブルの書換の指示信号と演算処理ハードウェアＸの識別情報及びアドレスとが出力される。テーブル管理部５１は、メモリ５２−４の関数アドレス情報Ｘに含まれる光モジュール部Ｘ又は光ＡＭＰ部Ｘの制御関数の代表アドレスアドレスに対応するアドレスメモリ１８Ｍのアドレスに格納される変換後アドレスを演算処理ハードウェアＸのアドレスに書き換える。ＯＰ３９の処理後、処理がＯＰ４０に進む。
【０１６７】
ＯＰ４０では、制御部５４−４は、終了条件が満たされたか否かを判定する。終了条件は、例えば、光インタフェース部Ｘが取り外されたことが検出されることである。終了条件が満たされると（ＯＰ４０：ＹＥＳ）、図１８に示される処理が終了する。
【０１６８】
図１５〜図１８の適用例の場合、光インタフェース部Ａ〜Ｃについては、光モジュール部及び光ＡＭＰ部の制御関数の演算処理が、伝送装置６００側のソフトウェア実行コードを書き換えることなく、ソフトウェア処理とハードウェア処理とで切り替えることができる。また、伝送装置６００は、開発時点で製品化されている光インタフェース部Ａ〜Ｃそれぞれについて、制御関数の演算処理を行うソフトウェアと演算回路とを備えているので、光インタフェース部Ａ〜Ｃのいずれが装着されたとしても対応することができる。例えば、光インタフェース部Ａが取り外されて光インタフェース部Ｂが装着された場合でも、ソフトウェア実行コードを書き換えたり、ソフトウェアを停止又は再実行したりすることなく、光インタフェース部Ｂを使用可能である。したがって、伝送装置６００は、伝送装置６００本体のアップグレードのコストを抑えることができ、例えば、光インタフェース部Ｂ、Ｃ等の追加ハードウェアのサポートが可能である。
【０１６９】
また、伝送装置６００の開発時点で、製品化されていない光インタフェース部Ｘについても、伝送装置６００側のソフトウェア実行コード及び演算処理ハードウェア５を変更することなく、使用することができ、追加ハードウェアのサポートが可能である。ただし、光インタフェース部Ｘについては、光モジュール部及び光ＡＭＰ部の制御関数の演算処理はハードウェア処理に固定される。したがって、ハードウェア構成が変更になった場合でも、ソフトウェア実行コードを再開発しなくてもよく、ソフトウェアの開発コストの削減が図れる。
【０１７０】
＜その他＞
第１実施形態では、アドレス変換テーブルにおいて、変換前アドレスとして、主記憶メモリ４のサブルーチンのコード群の格納領域のアドレスが設定され、変換後アドレスとして、演算処理ハードウェア５のアドレスが設定されることが想定されている。ただし、これに限定されず、アドレス変換テーブルの変更前アドレス及び変換後アドレスには、主記憶メモリ４のサブルーチンのコード群の格納領域のアドレス及び演算処理ハードウェア５のアドレスのいずれが設定されてもよい。
【０１７１】
例えば、変換前アドレスを主記憶メモリ４内のサブルーチンＡのコード群の格納領域のアドレス、変換後アドレスを主記憶メモリ４内のサブルーチンＢのコード群の格納領域のアドレスと設定してもよい。例えば、サブルーチンＡはＣＰＵ負荷が低い場合に用いられ、サブルーチンＢはＣＰＵ負荷が高い場合に用いられる場合に、ＣＰＵ負荷に応じて、サブルーチンＡ、Ｂ間でメインルーチンの変更なく処理の切替を行うことができる。また、例えば、メインルーチンで用いられているサブルーチンＡをサブルーチンＢにアップグレードする場合に、メインルーチンの変更、情報処理装置１００の再起動等なく、アップグレードすることができる。
【０１７２】
例えば、変換前アドレスを演算処理ハードウェアＡのアドレス、変換後アドレスを演算処理ハードウェアＢのアドレスと設定してもよい。この場合には、メインルーチンがもともと演算処理ハードウェアＡを呼び出していても、演算処理ハードウェアＡの代わりに演算処理ハードウェアＢが呼び出されるようにすることができる。例えば、演算処理ハードウェアＡは、データ種別関係なく全てのデータ種別に対する所定の処理の演算回路を備えているとする。演算処理ハードウェアＢが音声データに適した所定の処理の演算回路を備えているとする。アドレス変換テーブルの変換後アドレスが演算処理ハードウェアＢのアドレスに書き換えられる条件を、音声データの検出とする。この場合、伝送装置６００に音声データが流れると、アドレス変換テーブルの変換後アドレスが演算処理ハードウェアＢのアドレスに書き換えられ、所定の処理を、音声データにより適した処理に切り替えることができる。
【０１７３】
また、アドレス変換テーブルには、変換前アドレスに演算処理ハードウェア５のアドレス、変換後アドレスに主記憶メモリ４内のサブルーチンのコードの格納領域のアドレスが設定されてもよい。
【符号の説明】
【０１７４】
１      ＣＰＵ
２      入出力装置
３      ＲＯＭ
４      主記憶メモリ
５      演算処理ハードウェア
１１    バスインタフェース部
１２    スタックポインタ
１３    プログラムカウンタ
１４    命令レジスタ
１５    制御部
１５Ｄ    命令デコーダ
１６    レジスタ部
１６Ｒ    関数戻り値レジスタ
１７    算術論理演算処理部
５１    バスインタフェース部
５２    メモリ
５３    演算処理部
５４    制御部
【図１】
2018081559.tif 000003
【図２】
2018081559.tif 000004
【図３】
2018081559.tif 000005
【図４】
2018081559.tif 000006
【図５】
2018081559.tif 000007
【図６】
2018081559.tif 000008
【図７】
2018081559.tif 000009
【図８】
2018081559.tif 000010
【図９】
2018081559.tif 000011
【図１０】
2018081559.tif 000012
【図１１】
2018081559.tif 000013
【図１２】
2018081559.tif 000014
【図１３】
2018081559.tif 000015
【図１４】
2018081559.tif 000016
【図１５】
2018081559.tif 000017
【図１６】
2018081559.tif 000018
【図１７】
2018081559.tif 000019
【図１８】
2018081559.tif 000020