JP2018081559A - 情報処理装置及び中央処理装置 - Google Patents
情報処理装置及び中央処理装置 Download PDFInfo
- Publication number
- JP2018081559A JP2018081559A JP2016224202A JP2016224202A JP2018081559A JP 2018081559 A JP2018081559 A JP 2018081559A JP 2016224202 A JP2016224202 A JP 2016224202A JP 2016224202 A JP2016224202 A JP 2016224202A JP 2018081559 A JP2018081559 A JP 2018081559A
- Authority
- JP
- Japan
- Prior art keywords
- address
- unit
- circuit
- processing
- arithmetic processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
Abstract
【課題】ソフトウェアの実行コードの変更なしに、ソフトウェア処理をハードウェア処理に置換する。
【解決手段】中央処理装置と、中央処理装置がアクセスするアドレス空間内の所定のアドレス範囲が割り当てられている記憶領域に第1の命令群及び第2の命令群を記憶する記憶装置と、アドレス空間内で割り当てられているアドレスに従って所定の演算処理を実行する回路と、を備える情報処理装置である。中央処理装置は、アドレスを指定するプログラムカウンタと、第1の命令群が実行された結果として得られるアドレスをプログラムカウンタに出力する制御部と、第1のアドレスとしての第2の命令群の実行に用いられるアドレスに対応付けて第2のアドレスとして回路に割り当てられているアドレスを記憶する記憶部を備え、制御部から出力されたアドレスが第1のアドレスに合致する場合に、第2のアドレスをプログラムカウンタに出力する変換部と、を備える。
【選択図】図1
【解決手段】中央処理装置と、中央処理装置がアクセスするアドレス空間内の所定のアドレス範囲が割り当てられている記憶領域に第1の命令群及び第2の命令群を記憶する記憶装置と、アドレス空間内で割り当てられているアドレスに従って所定の演算処理を実行する回路と、を備える情報処理装置である。中央処理装置は、アドレスを指定するプログラムカウンタと、第1の命令群が実行された結果として得られるアドレスをプログラムカウンタに出力する制御部と、第1のアドレスとしての第2の命令群の実行に用いられるアドレスに対応付けて第2のアドレスとして回路に割り当てられているアドレスを記憶する記憶部を備え、制御部から出力されたアドレスが第1のアドレスに合致する場合に、第2のアドレスをプログラムカウンタに出力する変換部と、を備える。
【選択図】図1
Description
本発明は、ソフトウェアを実行する情報処理装置及び中央処理装置に関する。
CPU(Central Processing Unit)は、高性能化のため、動作周波数の増加とともに
、消費電力も増加している。消費電力低減及び性能向上のため、CPUが実行するソフトウェア処理の一部をFPGA(Field Programmable Gate Array)等によるハードウェア
処理に代替することが行われている。
、消費電力も増加している。消費電力低減及び性能向上のため、CPUが実行するソフトウェア処理の一部をFPGA(Field Programmable Gate Array)等によるハードウェア
処理に代替することが行われている。
しかしながら、ソフトウェア処理をハードウェア処理に置き換える場合には、以下のような問題がある。ソフトウェア処理をハードウェア処理に置き換える場合には、CPUとハードウェアとの間の入出力(I/O)の一例として、メモリマップドI/O方式が採用される。メモリマップドI/O方式は、CPUから参照できるアドレス空間上にメモリとFPGA等のハードウェアのインタフェースとを共存させ、CPUがメモリへのアクセスと同じようにハードウェアのインタフェースにリード及びライトアクセスを行う方式である。
例えば、メインルーチンに含まれる関数(サブルーチン)処理をハードウェアに置き換える場合には、当該関数がメインルーチンから呼び出される際のアドレスのハードウェアアドレスへの変更、当該関数の引数の受け渡し方法の変更等が発生する。そのため、ソフトウェア処理のハードウェア処理への置き換えには、ソフトウェアの実行コードの変更が伴う。
例えば、ソフトウェアの実行コードの変更には、ソフトウェアの更新のために、ソフトウェアの停止、装置の再起動等が伴うことがある。このため、フレキシブルにソフトウェア処理をハードウェア処理に置き換えることは難しい。
本発明は、ソフトウェアの実行コードの変更なしに、ソフトウェア処理をハードウェア処理に置換可能な情報処理装置及び中央処理装置を提供することを目的とする。
本発明の態様の一つは、中央処理装置と、中央処理装置がアクセスするアドレス空間内の所定のアドレス範囲が割り当てられている記憶領域に第1の命令群及び第2の命令群を記憶する記憶装置と、アドレス空間内で割り当てられているアドレスに従って所定の演算処理を実行する回路と、を備える情報処理装置である。中央処理装置は、プログラムカウンタと、制御部と、変換部とを備える。プログラムカウンタは、アドレス空間内のアドレスを指定する。制御部は、第1の命令群が実行された結果として得られるアドレスをプログラムカウンタに出力する。変換部は、第1のアドレスとしての第2の命令群の実行に用いられるアドレスに対応付けて第2のアドレスとして回路に割り当てられているアドレス
を記憶する記憶部を備える。また、変換部は、制御部から出力されたアドレスが第1のアドレスに合致する場合に、第2のアドレスをプログラムカウンタに出力する。
を記憶する記憶部を備える。また、変換部は、制御部から出力されたアドレスが第1のアドレスに合致する場合に、第2のアドレスをプログラムカウンタに出力する。
開示の情報処理装置及び中央処理装置によれば、ソフトウェアの実行コードの変更なしに、ソフトウェア処理をハードウェア処理に置換することができる。
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
<第1実施形態>
第1実施形態では、CPUは、第1のアドレスを第2のアドレスに変換する変換部を備え、変換部から出力された第2のアドレスは、次に呼び出されるアドレスとしてプログラムカウンタに格納される。第1のアドレスは、例えば、ソフトウェア処理の呼び出しに用いられるアドレスである。第2のアドレスは、当該ソフトウェア処理と同じ内容の処理を
実行する演算処理ハードウェアに割り当てられているアドレスである。CPUが変換部を備えることによって、ソフトウェアの実行コードを変更することなく、ソフトウェア処理をハードウェア処理に置換することができる。
第1実施形態では、CPUは、第1のアドレスを第2のアドレスに変換する変換部を備え、変換部から出力された第2のアドレスは、次に呼び出されるアドレスとしてプログラムカウンタに格納される。第1のアドレスは、例えば、ソフトウェア処理の呼び出しに用いられるアドレスである。第2のアドレスは、当該ソフトウェア処理と同じ内容の処理を
実行する演算処理ハードウェアに割り当てられているアドレスである。CPUが変換部を備えることによって、ソフトウェアの実行コードを変更することなく、ソフトウェア処理をハードウェア処理に置換することができる。
図1は、第1実施形態に係る情報処理装置のハードウェア構成の一例を示す図である。情報処理装置100は、例えば、CPU 1、入出力装置2、ROM(Read Only Memory)3、主記憶メモリ4、演算処理ハードウェア5を備え、これらは、バス6で電気的に接続されている。バス6には、アドレスバスとデータバスとが存在するが、図1では特に区別することなく、1本の線として表示されている。また、情報処理装置100では、メモリマップドI/O方式が採用されており、バス6上の、CPU 1、入出力装置2、ROM 3の記憶領域、主記憶メモリ4の記憶領域、演算処理ハードウェア5のそれぞれに、共通のアドレス空間内のアドレスが割り当てられている。
入出力装置2は、例えば、キーボードやマウス等の入力装置、ディスプレイ等の出力装置である。
ROM 3は、書換不可能な不揮発性のメモリである。ROM 3には、書換不可の所定のプログラム、データ等が格納されている。
主記憶メモリ4は、RAM(Random Access Memory)である。主記憶メモリ4には、ROM 3や図示されていない補助記憶装置から読み出されたプログラムが展開されている。すなわち、主記憶メモリ4にはプログラムに含まれるコード、データ等が格納されている。コードは、命令ともいう。コードは、「命令」の一例である。主記憶メモリ4上に展開されたソフトウェアのうちのメインルーチン及び他のサブルーチンを呼び出すサブルーチンに相当するコード群は、例えば、「第1の命令群」の一例である。主記憶メモリ4上に展開されたソフトウェアのうちメインルーチン又は他のサブルーチンに呼び出されるサブルーチンに相当するコード群は、例えば、「第2の命令群」の一例である。
演算処理ハードウェア5は、例えば、FPGAである。演算処理ハードウェア5は、バスインタフェース(IF)部51、メモリ52、演算処理部53、制御部54を含む。バスIF部51、メモリ52、演算処理部53、制御部54は、それぞれ、FPGAに搭載される素子によって構築される回路である。FPGAには、例えば、RAM、ルックアップテーブル、フリップフロップ、AND及びXOR等の論理演算回路等が搭載されている。
バスIF部51は、バス6とのインタフェースである。バス6上のアドレス空間のアドレスは、バスIF部51に割り当てられている。バスIF部51に割り当てられているアドレスは、1つに限定されず、所定のアドレス範囲が割り当てられていてもよい。
メモリ52は、例えば、RAMである。メモリ52には、関数アドレス情報が格納されている。関数アドレス情報は、演算処理ハードウェア5に備えられている演算処理部53に対応する関数等のサブルーチンが格納されている主記憶メモリ4の記憶領域のアドレスを含む。
演算処理部53は、所定の演算処理を実行する演算回路である。演算処理部53は、バスIF部51に割り当てられているアドレスが呼び出された場合に、所定の演算処理を実行する。演算処理部53が実行する演算処理は、第1実施形態では、主記憶メモリ4に格納されているサブルーチンと同じ演算処理である。
制御部54は、後述のCPU 1のアドレス変換部18のアドレス変換テーブルの書換
処理、演算処理部53の演算処理が呼び出された場合の演算処理部53の演算に用いられるデータの取得、演算結果の出力等を行う。アドレス変換テーブルの書換処理は、例えば、所定の実行条件が満たされた場合に実行される。アドレス変換テーブルの書換処理の実行条件は、例えば、情報処理装置100のハードウェア構成の変更、温度、CPU 1の負荷状況、処理するデータの種類等によって定義される。制御部54の処理の詳細は、後述される。
処理、演算処理部53の演算処理が呼び出された場合の演算処理部53の演算に用いられるデータの取得、演算結果の出力等を行う。アドレス変換テーブルの書換処理は、例えば、所定の実行条件が満たされた場合に実行される。アドレス変換テーブルの書換処理の実行条件は、例えば、情報処理装置100のハードウェア構成の変更、温度、CPU 1の負荷状況、処理するデータの種類等によって定義される。制御部54の処理の詳細は、後述される。
CPU 1は、バスIF部11、スタックポインタ12、プログラムカウンタ13、命令レジスタ14、制御部15、レジスタ部16、ALU(Arithmetic and Logic Unit:
算出論理演算処理部)17、アドレス変換部18を備える。これらは、いずれもCPU 1に搭載される素子によって構築された回路である。
算出論理演算処理部)17、アドレス変換部18を備える。これらは、いずれもCPU 1に搭載される素子によって構築された回路である。
バスIF部11は、バス6とのインタフェースである。バスIF部11には、バス6上のアドレス空間内のアドレスが割り当てられている。バスIF部11には、例えば、スタックポインタ12、プログラムカウンタ13、レジスタ部16から、アドレス又は/及びデータが入力される。バスIF部11からバス6には、例えば、スタックポインタ12、プログラムカウンタ13、レジスタ部16から入力されたアドレス又は/及びデータが出力される。
バスIF部11にはバス6から、バス6に出力されたアドレスに対応するコード、データが入力される。例えば、バスIF部11には、プログラムカウンタ13からアドレスが入力される。プログラムカウンタ13から入力されたアドレスは、バスIF部11からバス6に出力される。バス6に出力されたアドレスが割り当てられているハードウェアから、当該アドレスに対応するコードがバス6を通じてバスIF部11に入力される。バス6からバスIF部11に入力されたコードは、バスIF部11から命令レジスタ14に出力(フェッチ)される。
命令レジスタ14は、例えば、主記憶メモリ4から読み出されたコードを一時格納する記憶回路である。命令レジスタ14は、保持しているコードを制御部15に出力する。
制御部15は、命令レジスタ14から入力されたコードが示す処理内容に従って処理を行う回路である。制御部15は、命令デコーダ15Dを含む。命令デコーダ15Dは、命令レジスタ14から入力されたコードを解読し、当該コードに含まれる制御情報を取得する。制御部15は、命令デコーダ15Dが取得した制御情報にしたがって処理を行う。
例えば、命令デコーダ15Dが取得した制御情報の処理内容に四則演算等の演算が含まれている場合には、制御部15からALU 17に制御情報が出力され、ALU 17において演算処理が行われる。ALU 17の演算結果は、レジスタ部16に書き込まれる。
例えば、命令デコーダ15Dが取得した制御情報の処理内容がCPU 1内部でのデータのやり取り、CPU 1とCPU 1外のハードウェアとの間でのデータのやり取り、及び、データを扱わない処理である場合には、指定された処理を制御部15が実行する。処理の実行結果としてデータが取得される場合には、制御部15によって、レジスタ部16に実行結果のデータが書き込まれる。ただし、ALU 17による演算処理が発生する場合には、ALU 17から演算結果のデータがレジスタ部16に書き込まれる。
処理の実行結果としてアドレスが取得される場合には、制御部15からアドレス変換部18に接続されるアドレス信号線AD1に、取得されたアドレスが出力される。実行結果としてアドレスが取得されるのは、例えば、命令レジスタ14から入力されたコードが、
サブルーチンを呼び出すCALL命令、指定のアドレスに移動するJUMP命令、呼出元のアドレスに戻すRETURN命令等である場合である。
サブルーチンを呼び出すCALL命令、指定のアドレスに移動するJUMP命令、呼出元のアドレスに戻すRETURN命令等である場合である。
例えば、命令レジスタ14から入力されたコードがCALL命令等の分岐命令である場合には、制御部15からスタックポインタ12に制御信号が出力される。スタックポインタ12は、スタック領域のアドレスを保持するレジスタである。制御部15は、スタックポインタ12が示すアドレスのスタック領域に、戻りアドレスと、レジスタ部16に保持されているデータとを書き込む。スタック領域に書き込まれる戻りアドレスは、例えば、分岐命令によってサブルーチンに分岐する直前のプログラムカウンタ13に保持されているアドレスに、分岐命令のワード数(例えば、1)を加算したアドレスである。スタック領域に書き込まれるレジスタ部16に保持されているデータは、例えば、分岐命令によってサブルーチンが実行される直前の、メインルーチン又はサブルーチンのデータである。第1実施形態では、JUMP命令を分岐命令に含めてもよい。
処理が完了すると、制御部15からプログラムカウンタ13に接続される制御信号線C1に、処理完了を示す制御信号が出力される。
アドレス変換部18は、制御部15から入力された第1のアドレスを第2のアドレスに変換する。第1のアドレスは、以降、変換前アドレス、とも称される。第2のアドレスは、以降、変換後アドレス、とも称される。
アドレス変換部18は、第1のアドレスに対応付けられる第2のアドレスを記憶するRAMを備えている。アドレス変換部18は、制御部15及びプログラムカウンタ13に、それぞれ、アドレス信号線AD1及びAD2によって接続している。制御部15からアドレス信号線AD1を通じてアドレス変換部18にアドレスが入力される。制御部15から入力されたアドレスが第1のアドレスに合致する場合には、アドレス変換部18からアドレス信号線AD2を通じてプログラムカウンタ13に第2のアドレスが出力される。制御部15から入力されたアドレスが第1のアドレスに合致しない場合には、アドレス変換部18からアドレス信号線AD2を通じてプログラムカウンタ13に、制御部15から入力されたアドレスがそのまま出力される。アドレス変換部18の詳細については、後述される。
プログラムカウンタ13は、呼び出されるコードのアドレスを保持している記憶回路である。プログラムカウンタ13は、例えば、レジスタである。プログラムカウンタ13に制御部15から制御信号線C1を通じて実行完了の制御信号が入力されると、プログラムカウンタ13は保持するアドレスの値を実行完了されたコードに含まれるワード数分カウントアップする。プログラムカウンタ13にアドレス信号線AD2を通じてアドレスが入力されると、プログラムカウンタ13は保持するアドレスの値を入力されたアドレスに書き換える。プログラムカウンタ13は、次のクロックで、保持されているアドレスをバスIF部11に出力する。
スタックポインタ12は、主記憶メモリ4のスタック領域のうちの最後に参照されたアドレスを保持するポインタである。スタック領域は、主記憶メモリ4内に確保された記憶領域である。スタック領域には、新たにサブルーチンが呼び出された場合に、新たなサブルーチンが呼び出される直前まで実行していたメインルーチン又はサブルーチンのデータ、プログラムカウンタ13の値等が一時的に退避される。スタック領域は、最後に格納されたデータを最初に取り出すことができる領域である(First In Last Out)。
ALU 17は、四則演算、積和演算等の論理演算回路である。レジスタ部16は、コードの実行結果を格納する記憶回路である。レジスタ部16は、複数の汎用レジスタを備
える。レジスタ部16には、制御部15又はALU 17から処理結果として得られたデータが入力されたり、WRITE命令又はREAD命令によってやり取りされるデータが格納されたりする。レジスタ部16に複数備えられる汎用レジスタのうちの一つ又は複数のレジスタは、関数戻り値レジスタ16Rとして用いられる。関数戻り値レジスタ16Rには、サブルーチンの処理結果が書き込まれる。関数戻り値レジスタ16Rに書き込まれる処理結果には、例えば、演算結果の値、処理の成功又は失敗、等がある。
える。レジスタ部16には、制御部15又はALU 17から処理結果として得られたデータが入力されたり、WRITE命令又はREAD命令によってやり取りされるデータが格納されたりする。レジスタ部16に複数備えられる汎用レジスタのうちの一つ又は複数のレジスタは、関数戻り値レジスタ16Rとして用いられる。関数戻り値レジスタ16Rには、サブルーチンの処理結果が書き込まれる。関数戻り値レジスタ16Rに書き込まれる処理結果には、例えば、演算結果の値、処理の成功又は失敗、等がある。
第1実施形態では、演算処理ハードウェア5の制御部54は、バスIF部51を介して、主記憶メモリ4に対して読み出し/書き換え可能とする。したがって、第1実施形態では、主記憶メモリ4は、バス6へのポートと演算処理ハードウェア5と接続するバスへのポートとの2つのポートを備える(Dual−port メモリ化)。または、例えば、CPU 1と演算処理ハードウェア5とに、バス6を経由する主記憶メモリ4へのアクセスの単位時間中の割り当てを決め、CPU 1と演算処理ハードウェア5とからの主記憶メモリ4へのアクセスが競合しないようにしてもよい。
また、第1実施形態では、スタックポインタ12と演算処理ハードウェア5の制御部54とは、信号線19Cで接続されている。演算処理ハードウェア5の制御部54は、スタックポインタ12から出力されるアドレス(スタックポインタ12のアドレス)を信号線19Cを通じて取得し、取得する度に制御部54内に上書き保存する。演算処理ハードウェア5のアドレス(演算処理部53の演算処理)が呼び出された場合に、制御部54は、制御部54内に保持されるスタックポインタ12のアドレスに該当するスタック領域内の記憶領域から、CPU 1に呼び出された演算処理に用いるデータを読み出す。
また、第1実施形態では、演算処理ハードウェア5の制御部54とCPU 1の関数戻り値レジスタ16Rとが信号線19Bで接続されている。信号線19Bを通じて、演算処理ハードウェア5の制御部54は、呼び出された関数の処理結果を直接CPU 1の関数戻り値レジスタ16Rに書き込む。また、関数の処理結果として成功/失敗が関数戻り値レジスタ16Rに書き込まれ、関数の演算結果の値が引数として用いられる場合には、演算処理ハードウェアの5の制御部54は、主記憶メモリ4の関数の引数を格納する格納領域に、関数の演算結果の値を書き込んでもよい。
また、第1実施形態では、演算処理ハードウェア5の制御部54とCPU 1のアドレス変換部18の第2のアドレス(変換後アドレス)を保持するRAM(後述のアドレスメモリ18M)とが信号線19Aで接続されている。信号線19Aを通じて、演算処理ハードウェア5の制御部54は、所定の条件が満たされた場合に、アドレス変換部18内のRAMに保持される第2のアドレス(変換後アドレス)を書き換える。
情報処理装置100は、「情報処理装置」の一例である。CPU 1は、「中央処理装置」の一例である。主記憶メモリ4は、「記憶装置」の一例である。演算処理ハードウェア5は、「回路」の一例である。バス6上のアドレス空間は、「中央処理装置がアクセスするアドレス空間」の一例である。
CPU 1のプログラムカウンタ13は、「プログラムカウンタ」の一例である。CPU 1の制御部15は、「制御部」の一例である。CPU 1のアドレス変換部18は、「変換部」の一例である。CPU 1のスタックポインタ12は、「アドレス保持部」の一例である。関数戻りレジスタ16Rは、「レジスタ」の一例である。
演算処理ハードウェア5の演算処理部53は、「演算処理回路」の一例である。演算処理ハードウェア5の制御部54は、「制御回路」の一例である。
図2は、アドレス変換部18のハードウェア構成の一例を示す図である。アドレス変換部18は、デコーダ18Dと、アドレスメモリ18Mとを備える。
アドレスメモリ18Mは、アドレス変換部18内のRAMである。アドレスメモリ18Mは、例えば、バス6上のアドレス空間とは異なるアドレス空間を有する。バス6上のアドレス空間内のアドレスは、所定のアルゴリズムに従って、アドレスメモリ18Mのアドレス空間内のアドレスと対応付けることができる。以降、バス6上のアドレス空間内のアドレスは、単に、バス6上のアドレス、と称される。アドレスメモリ18M上のアドレス空間内のアドレスは、単に、アドレスメモリ18M上のアドレス、と称される。
アドレスメモリ18Mには、バス6上の第1のアドレス(変換前アドレス)に対応付けられるアドレスメモリ18M上のアドレスの記憶領域に、データとして、バス6上の第2のアドレス(変換後アドレス)が格納されている。
デコーダ18Dは、バス6上のアドレスを、アドレスメモリ18M上のアドレスに変換する回路である。デコーダ18Dには、制御部15からアドレス信号線AD1を通じて、バス6上のアドレスが入力される。デコーダ18Dからアドレスメモリ18Mには、入力されたバス6上のアドレスのデコーダ18Dによる変換によって得られる、入力されたバス6上のアドレスに対応付けられるアドレスメモリ18M上のアドレスが出力される。
アドレスメモリ18Mには、デコーダ18Dから、デコーダ18Dによる変換で得られたアドレスメモリ18M上のアドレスが入力される。アドレスメモリ18Mからは、デコーダ18Dから入力されたアドレスメモリ18M上のアドレスの記憶領域に格納されているデータであるバス6上のアドレスが出力される。アドレスメモリ18Mはアドレス信号線AD2によってプログラムカウンタ13に接続されているので、アドレスメモリ18Mから出力されるバス6上のアドレスは、プログラムカウンタ13に出力される。
したがって、アドレスメモリ18M上の記憶領域に、アドレスメモリ18M上のアドレスに対応するバス6上のアドレスと異なるバス6上のアドレスを格納することで、変換前アドレスと変換後アドレスとが異なる値となり、アドレス変換部18によってアドレス変換される。アドレスメモリ18M上の記憶領域に、アドレスメモリ18M上のアドレスに対応するバス6上のアドレスが格納されている場合には、変換前アドレスと変換後アドレスとが同じ値となり、アドレスが変換されない。
したがって、アドレス変換部18は、変換前アドレスと変換後アドレスとの対応付けを記憶し、変換前アドレスに該当するアドレスが入力されると対応する変換後アドレスを出力するアドレス変換テーブルとして機能する。以降、アドレス変換部18を、アドレス変換テーブル、と称することがある。また、アドレスメモリ18Mを書き換えることを、アドレス変換テーブルを書き換える、と称することがある。
第1実施形態では、初期状態では、アドレスメモリ18Mの各記憶領域には、該当するアドレスメモリ18M上のアドレスに対応付けられるバス6上のアドレスが格納されている。すなわち、初期状態では、アドレス変換部18に入力されたいかなるアドレスも変換されずに出力される。
なお、実際には、バス6上の全てのアドレスを格納するようにアドレスメモリ18Mの記憶領域を確保することは困難である。そのため、第1実施形態では、アドレス変換の可能性のあるバス6上のアドレスが予め抽出されており、アドレスメモリ18Mには、アドレス変換の可能性のあるバス6上のアドレスについて、記憶領域が準備される。デコーダ18Dは、プログラムカウンタ13と図示されていない信号線で接続される。デコーダ1
8Dは、制御部15から入力されたアドレスが、アドレス変換の可能性のあるアドレスであるか否かを判定し、アドレス変換の可能性のあるアドレスでない場合には、入力されたアドレスをそのままプログラムカウンタ13に接続される信号線に出力する。したがって、予め抽出されたアドレス変換の可能性のあるアドレス以外のアドレスは、アドレス変換部18によって変換されないこととなる。なお、アドレス変換の可能性のあるアドレスであっても、アドレスメモリ18Mに、アドレス変換後のアドレスとして、変換前のアドレスと同じアドレスが格納されている場合には(例えば初期状態など)、アドレスは変換されない。
8Dは、制御部15から入力されたアドレスが、アドレス変換の可能性のあるアドレスであるか否かを判定し、アドレス変換の可能性のあるアドレスでない場合には、入力されたアドレスをそのままプログラムカウンタ13に接続される信号線に出力する。したがって、予め抽出されたアドレス変換の可能性のあるアドレス以外のアドレスは、アドレス変換部18によって変換されないこととなる。なお、アドレス変換の可能性のあるアドレスであっても、アドレスメモリ18Mに、アドレス変換後のアドレスとして、変換前のアドレスと同じアドレスが格納されている場合には(例えば初期状態など)、アドレスは変換されない。
アドレスメモリ18Mは、「変換部」に備えられる「記憶部」の一例である。アドレス変換テーブルの変換前アドレスは、「第1のアドレス」の一例である。アドレス変換テーブルの変換後アドレス及びアドレスメモリ18Mに格納されるアドレスは、「第2のアドレス」の一例である。
<処理の流れ>
第1実施形態において、演算処理ハードウェア5の制御部54が実行する処理には、例えば、アドレス変換テーブルの書換処理と、演算処理部53の演算処理が呼び出された場合の処理と、がある。
第1実施形態において、演算処理ハードウェア5の制御部54が実行する処理には、例えば、アドレス変換テーブルの書換処理と、演算処理部53の演算処理が呼び出された場合の処理と、がある。
アドレス変換テーブルの変換後アドレスを、演算処理ハードウェア5のアドレスと主記憶メモリ4のサブルーチンの本体の格納領域のアドレスとの間で書き換えることで、動的に、サブルーチンの処理をソフトウェア処理とハードウェア処理との間で切り替えることができる。アドレス変換テーブルは機能的な概念であり、実際には、アドレス変換部18に相当する。アドレス変換テーブルの書き換えは、アドレスメモリ18Mに格納されるアドレスの書き換えに相当する。
図3は、アドレス変換テーブルの書換処理のフローチャートの一例を示す図である。図3に示されるフローチャートは、対象となるサブルーチンの処理をソフトウェア処理とハードウェア処理との間で動的に切り替える場合のフローチャートである。図3に示される処理は、第1実施形態では、演算処理ハードウェア5の制御部54によって実行される。図3の処理は、情報処理装置100が稼働している間繰り返し実行される。
OP1では、制御部54は、所定の条件が満たされたか否かを判定する。所定の条件は、例えば、温度、CPU 1の処理負荷等の環境条件によって予め定義されている。所定の条件が満たされる場合には(OP1:YES)、処理がOP2に進む。所定の条件が満たされていない場合には(OP1:NO)、処理がOP4に進む。
OP2では、制御部54は、対象のサブルーチンの処理がハードウェア処理中であるか否かを判定する。対象のサブルーチンの処理がハードウェア処理中かソフトウェア処理中かは、例えば、制御部54内にフラグによって保持される。対象のサブルーチンの処理がハードウェア処理中である場合には(OP2:YES)、図3に示される処理が終了する。対象のサブルーチンの処理がソフトウェア処理中である場合には(OP2:NO)、処理がOP3に進む。
OP3では、制御部54は、アドレス変換テーブルの、変換前アドレスが主記憶メモリ4の対象のサブルーチンの本体の格納領域のアドレスであるエントリの変換後アドレスに、演算処理ハードウェア5のアドレスを書き込む。実際には、アドレス変換部18のアドレスメモリ18Mの、対象のサブルーチンの本体の主記憶メモリ4の格納領域のアドレス(バス6上)に対応するアドレスメモリ18M上のアドレスの領域に、演算処理ハードウェア5のアドレスが書き込まれる。対象のサブルーチンの本体の主記憶メモリ4における
格納領域のアドレスは、演算処理ハードウェア5のメモリ52に格納されている関数アドレス情報に含まれている。また、制御部54は、フラグを、ハードウェア処理中であることを示す値に変更する。その後、図3に示される処理が終了する。
格納領域のアドレスは、演算処理ハードウェア5のメモリ52に格納されている関数アドレス情報に含まれている。また、制御部54は、フラグを、ハードウェア処理中であることを示す値に変更する。その後、図3に示される処理が終了する。
OP4では、制御部54は、対象のサブルーチンの処理がソフトウェア処理中であるか否かを判定する。対象のサブルーチンの処理がソフトウェア処理中である場合には(OP4:YES)、図3に示される処理が終了する。対象のサブルーチンの処理がハードウェア処理中である場合には(OP4:NO)、処理がOP5に進む。
OP5では、制御部54は、アドレス変換テーブルの、変換前アドレスが主記憶メモリ4の対象のサブルーチンの本体の格納領域のアドレスであるエントリの変換後アドレスに、対象のサブルーチンの本体の主記憶メモリ4の格納領域のアドレスを書き込む。実際には、アドレス変換部18のアドレスメモリ18Mの、対象のサブルーチンの本体の主記憶メモリ4の格納領域のアドレス(バス6上)に対応するアドレスメモリ18M上のアドレスの領域に、対象のサブルーチンの本体の主記憶メモリ4の格納領域のアドレスが書き込まれる。また、制御部54は、フラグを、ソフトウェア処理中であることを示す値に変更する。その後、図3に示される処理が終了する。
なお、OP1における所定の条件は、管理者からのハードウェア処理又はソフトウェア処理への切り替えの指示の入力、情報処理装置100への接続の検知等であってもよい。
図4は、演算処理ハードウェア5の制御部54の、演算処理部53の演算処理が呼び出された場合の処理のフローチャートの一例である。図4に示される処理は、演算処理ハードウェア5に割り当てられているアドレスがCPU 1によって呼び出された場合に開始される。
OP11では、制御部54は、制御部54内に保持されているスタックポインタ12のアドレスが示すスタック領域内の領域からスタックフレームを読み出す。
OP12では、制御部54は、スタックフレームに格納されているデータ格納領域のアドレスを参照して、主記憶メモリ4の該当する領域から、演算処理部53の演算処理に用いられる引数の値等を読み出す。OP13では、制御部54は、読み出した引数の値を演算処理部53に入力する。
OP14では、制御部54は、演算処理部53による演算処理の終了を判定する。演算処理部53から演算結果が出力された場合に、演算処理の終了が判定される。演算処理部53による演算処理が終了していない場合には(OP14:NO)、処理がOP15に進む。演算処理部53による演算処理が終了した場合には(OP14:YES)、処理がOP17に進む。
OP15では、制御部54が、演算処理ハードウェア5に割り当てられているアドレスが呼び出されたことを検出した場合には(OP15:YES)、処理がOP16に進む。演算処理ハードウェア5に割り当てられているアドレスが呼び出されていない場合には(OP15:NO)、処理がOP14に進む。
OP16では、制御部54は、演算処理部53による演算処理の実行中に演算処理ハードウェア5に割り当てられているアドレスが呼び出されたので、メインルーチンに処理を戻さないために、ダミーの命令をCPU 1に返す。ダミーの命令は、例えば、演算処理部53に割り当てられているアドレスを指定するJUMP命令等である。
ダミーの命令が返されると、処理がOP14に進む。演算処理部53による演算処理が終了するまでの間、OP14からOP16の処理が繰り返される。
なお、ダミーの命令に、NOP命令、演算処理部53に割り当てられているアドレスを指定するLOOP命令、が用いられてもよい。NOP命令は、何もしないという命令である。例えば、演算処理ハードウェア5には所定のアドレス範囲が割り当てられることもある。例えば、ダミーの命令としてNOP命令が用いられる場合には、NOP命令によって、CPU 1のプログラムカウンタ13が保持するアドレスが増え、CPU 1がコードを読み出すアドレスが変わる。この場合でも、CPU 1が呼び出すアドレスが演算処理ハードウェア5に割り当てられたアドレス範囲内であれば、制御部54はCPU 1に対してダミーの命令を返し続けることができる。
ダミー命令としてNOP命令が用いられ、プログラムカウンタ13が保持するアドレスが演算処理ハードウェア5に割り当てられたアドレス範囲内の末尾に近い所定のアドレスに到達した場合には、制御部54は、例えば、アドレス範囲内の先頭に近いアドレスを指定するJUMP命令を返す。これによって、例えば、演算処理部53の演算処理に時間がかかり、プログラムカウンタ13が保持するアドレスが演算処理ハードウェア5に割り当てられたアドレス範囲を超えそうな場合でも、メインルーチンに処理を戻さないようにすることができる。
OP17では、演算処理部53による演算処理が終了したので、制御部54は、演算結果を信号線19Bを介してCPU 1の関数戻り値レジスタ16Rに書き込む。演算処理結果として、引数を受け渡す場合には、制御部54は、主記憶メモリ4の引数x、y、zの値の格納領域を更新する。OP18では、制御部54は、RETURN命令をCPU 1に返す。その後、図4に示される処理が終了する。
<具体例>
図5は、具体例におけるプログラムAのメインルーチンのフローチャートの一例である。プログラムAは、主記憶メモリ4に展開されている。プログラムAのメインルーチンのコードは、主記憶メモリ4内の連続する記憶領域に格納されている。
図5は、具体例におけるプログラムAのメインルーチンのフローチャートの一例である。プログラムAは、主記憶メモリ4に展開されている。プログラムAのメインルーチンのコードは、主記憶メモリ4内の連続する記憶領域に格納されている。
プログラムAでは、処理1、関数func-1の演算処理、処理2、関数func-2の演算処理、処理3の順で処理が行われる。図5に示されるプログラムAのメインルーチンのフローチャートは、関数func-1の演算処理、関数func-2の演算処理はソフトウェア処理で実行されることを想定したものである。
関数func-1は、x、y、zを引数とする(図中、func-1(x,y,z))。関数func-2は、x
、y、zと、関数func-2の演算結果bを引数とする(図中、func-2(&b,x,y,z))。
、y、zと、関数func-2の演算結果bを引数とする(図中、func-2(&b,x,y,z))。
具体例1では、関数func-1がソフトウェア処理からハードウェア処理に置き換えられることが想定される。具体例2では、関数func-1と関数func-2とがソフトウェア処理からハードウェア処理に置き換えられることが想定される。
図6は、具体例1におけるアドレス変換テーブルの一例を示す図である。具体例1では、関数func-1がソフトウェア処理からハードウェア処理に置き換えられるので、変換前アドレスとして関数func-1が格納されている主記憶メモリ4のアドレス(7)と、変換後のアドレスとして演算処理ハードウェア5に割り当てられているアドレス(11)とが対応付けられている。関数func-2はソフトウェア処理であるので、変換前及び変換後アドレスともに、関数func-2が格納されている主記憶メモリ4のアドレス(9)が格納されている。
なお、実際には、アドレス変換部18内のアドレスメモリ18Mの、バス6上のアドレス(7)に対応付けられるアドレスメモリ18M上のアドレスに該当する記憶領域に、バス6上のアドレス(11)が格納されている。アドレス変換部18内のアドレスメモリ18Mの、バス6上のアドレス(9)に対応付けられるアドレスメモリ18M上のアドレスに該当する記憶領域に、バス6上のアドレス(9)が格納されている。
具体例1において、プログラムAは、「第1の命令群」である。具体例1において、主記憶メモリ4内の関数func-1の本体(コード群)は、「第2の命令群」の一例である。具体例1において、関数func-1の本体の主記憶メモリ4内の格納領域のアドレスは、「第2の命令群の実行に用いられるアドレス」の一例である。具体例1において、演算処理ハードウェア5のアドレスは、「回路に割り当てられているアドレス」の一例である。
図7は、具体例1に係るプログラムAの実行イメージT1の一例を示す図である。また、図7には、主記憶メモリ4内のプログラムの格納イメージM1と、演算処理ハードウェア5−1とが示されている。図7に示される演算処理ハードウェア5−1は、機能的に表示されたものである。
図7に示される主記憶メモリ4のプログラムの格納イメージM1は、簡略化のため、処理1等の1つのコード群に対して1つのアドレスが付与されている。ただし、実際には、1つのコード群は1つのアドレスに該当する記憶領域に収まりきらないことがあるので、1つのコード群に対して所定のアドレス範囲が割り当てられることもある。
図7では、アドレス(1)からアドレス(5)までのアドレス範囲に、プログラムAのメインルーチンのコードが格納されている。アドレス(7)に、関数func-1の本体(コード群)が格納されている。アドレス(9)に関数func-2の本体(コード群)が格納されている。演算処理ハードウェア5には、アドレス(11)が割り当てられている。
演算処理ハードウェア5−1には、演算処理部53−1として、関数func-1の演算回路が備えられている。
A1では、CPU 1は、プログラムAの実行を開始する。CPU 1がプログラムAを実行する場合には、プログラムAのコード群が格納されているアドレス範囲(1)〜(5)のうち先頭のアドレス(1)がプログラムカウンタ13に設定される。プログラムカウンタ13が指定するアドレス(1)に格納されるコードが主記憶メモリ4から読み出され、命令レジスタ14に格納される(フェッチ)。アドレス(1)から読み出されたコードは、命令デコーダ15Dによって解読され、処理1の処理内容を含む制御情報に従って、制御部15が処理を実行する。
処理1が終了すると、制御部15は、プログラムカウンタ13に処理完了の信号を制御信号線C1を通じて出力する。プログラムカウンタ13は、制御信号線C1を通じて制御部15から処理完了の信号の入力を受けると、保持するアドレス(1)をカウントアップしてアドレス(2)に設定する。以降、同様にして、プログラムカウンタ13に指定されるアドレスからコードが読み出されてプログラムAの処理が実行される。
A2では、アドレス(2)に格納される関数func-1のCALL命令が実行される。関数func-1のCALL命令には、関数func-1の本体が格納されている主記憶メモリ4の記憶領域のアドレス(7)が指定されている。
関数func-1のCALL命令がCPU 1の制御部15によって実行されると、制御部1
5からスタックポインタ12に制御信号が出力される。スタックポインタ12には、初期値として、例えば、スタック領域として割り当てられている主記憶メモリ4内のアドレス範囲のうち最大のアドレスが保持されている。制御部15から入力される制御信号によって、スタックポインタ12に保持されるスタック領域のアドレスは、保持しているスタック領域のアドレスからスタック領域に格納されるデータ量に相当する値が差し引かれた値に更新される。更新後のスタックポインタ12が示すアドレスが、スタック領域内のメインルーチンのデータが格納されている領域の先頭のアドレスとなる。
5からスタックポインタ12に制御信号が出力される。スタックポインタ12には、初期値として、例えば、スタック領域として割り当てられている主記憶メモリ4内のアドレス範囲のうち最大のアドレスが保持されている。制御部15から入力される制御信号によって、スタックポインタ12に保持されるスタック領域のアドレスは、保持しているスタック領域のアドレスからスタック領域に格納されるデータ量に相当する値が差し引かれた値に更新される。更新後のスタックポインタ12が示すアドレスが、スタック領域内のメインルーチンのデータが格納されている領域の先頭のアドレスとなる。
また、関数func-1のCALL命令がCPU 1の制御部15によって実行されると、制御部15によって、スタックポインタ12の更新後のアドレスが示すスタック領域内の領域に、戻りアドレスと、メインルーチンのデータとが格納される。戻りアドレスと、処理が分岐する直前のメインルーチン又はサブルーチンのデータと、のセットは、スタックフレームと称される。戻りアドレスは、関数func-1のCALL命令がCPU 1の制御部15によって実行された時点でカウンタメモリ13に保持されているアドレスに1が加算された値となる。処理が分岐する直前のメインルーチン又はサブルーチンのデータは、例えば、主記憶メモリ4内の関数の引数が格納されている記憶領域のアドレスである。
図7に示される例において、関数func-1のCALL命令実行の際にスタック領域に格納されるスタックフレームには、戻りアドレスとしてアドレス(3)と、関数func-1の引数x、y、zの値のそれぞれが格納されている主記憶メモリ4内の記憶領域(データ格納領域)のアドレスとが含まれる。
スタックポインタ12の更新後のアドレスが示すスタック領域内の記憶領域に、スタックフレームが書き込まれる際には、スタックポインタ12からスタックフレームの格納領域を指定するアドレスがバスIF部11に出力される。このとき、スタックポインタ12から出力されたアドレス(スタックポインタ12のアドレス)は、信号線19Cを通じて演算処理ハードウェア5−1の制御部54−1に入力される。演算処理ハードウェア5−1の制御部54−1は、入力されたスタックポインタのアドレスを制御部54−1内に保持する。
関数func-1のCALL命令がCPU 1の制御部15によって実行されると、上述のような、サブルーチンへの分岐前のデータの保存とともに、制御部15からアドレス変換部18に、CALL命令で指定されているアドレス(7)が出力される。アドレス変換部18にアドレス(7)が入力されると、図6のアドレス変換テーブルに示されるように、アドレス変換部18からはアドレス(11)が出力される。したがって、プログラムカウンタ13には、アドレス(11)が設定される。
プログラムカウンタ13にアドレス(11)が設定されるので、アドレス(2)の次にアドレス(11)が、すなわち、演算処理ハードウェア5−1が呼び出される。
A3では、演算処理ハードウェア5−1の制御部54−1は、関数func-1が呼び出されたので、以下の通りに処理を行う。
制御部54−1は、スタックポインタ12のアドレスが示す主記憶メモリ4の記憶領域からスタックフレームを読み出す(図4、OP11)。スタックフレームには、引数x、y、zの値のデータ格納領域のアドレス、RETURN時の戻りアドレスが含まれている。RETURN時の戻りアドレスは、アドレス(3)である。
制御部54−1は、スタックフレームに含まれるデータ格納領域のアドレスから、関数func-1の引数x、y、zの値を読み出し(図4、OP12)、演算処理部53−1に出力
し、演算処理部53−1に関数func-1の演算処理を実行させる(図4、OP13)。関数func-1の演算処理が完了するまで、制御部54−1は、メインルーチンに処理が戻らないようにするために、CPU 1からの読み出しに対してダミーのJUMP命令を返す(図4、OP14〜OP16)。
し、演算処理部53−1に関数func-1の演算処理を実行させる(図4、OP13)。関数func-1の演算処理が完了するまで、制御部54−1は、メインルーチンに処理が戻らないようにするために、CPU 1からの読み出しに対してダミーのJUMP命令を返す(図4、OP14〜OP16)。
演算処理部53−1の演算処理が終了すると(図4、OP14:YES)、制御部54−1は、関数func-1の演算結果aをCPU 1の関数戻り値レジスタ16Rに書き込む(図4、OP17)。また、演算処理結果として、引数を受け渡す場合には、制御部54−1は、主記憶メモリ4の引数x、y、zの値の格納領域を更新する。
A4では、制御部54−1は、CPU 1からの読み出しに対してRETURN命令を返して、処理をメインルーチンに戻す(図4、OP18)。
RETURN命令が読み出されると、CPU 1では以下の処理が実行される。CPU
1の制御部15は、スタックポインタ12が示すアドレスからスタックフレームを読み出す。スタックフレームから取得される戻り先アドレス(3)は、制御部15から出力され、変換部16を経由して、プログラムカウンタ13に入力される。これによって、次はアドレス(3)からコードが読み出されることになり、処理がメインルーチンに戻る。また、CPU 1の制御部15は、スタックフレームから取得される戻り先アドレス以外のデータを元に戻す。
1の制御部15は、スタックポインタ12が示すアドレスからスタックフレームを読み出す。スタックフレームから取得される戻り先アドレス(3)は、制御部15から出力され、変換部16を経由して、プログラムカウンタ13に入力される。これによって、次はアドレス(3)からコードが読み出されることになり、処理がメインルーチンに戻る。また、CPU 1の制御部15は、スタックフレームから取得される戻り先アドレス以外のデータを元に戻す。
A5では、処理2が実行される。A6では、関数func-2を呼び出すCALL命令が実行される。関数func-2の演算処理はソフトウェア処理であるので、CPU 1から関数func-2が呼び出されるアドレスは、主記憶メモリ4の関数func-2の格納領域のアドレス(9)のままであり、変換されない(図6参照)。
図8は、具体例2におけるアドレス変換テーブルの一例を示す図である。具体例2では、関数func-1と関数func-2との演算処理がソフトウェア処理からハードウェア処理に置き換えられる。したがって、図8に示されるアドレス変換テーブルでは、変換前アドレスとして関数func-1が格納されている主記憶メモリ4のアドレス(7)と、変換後のアドレスとして演算処理ハードウェア5に割り当てられているアドレス(11)とが対応付けられている。また、図8に示されるアドレス変換テーブルでは、変換前アドレスとして関数func-2が格納されている主記憶メモリ4のアドレス(9)と、変換後のアドレスとして演算処理ハードウェア5に割り当てられているアドレス(11)とが対応付けられている。
なお、実際には、アドレス変換部18内のアドレスメモリ18Mの、バス6上のアドレス(7)に対応するアドレスメモリ18M上のアドレスに該当する記憶領域に、バス6上のアドレス(11)が格納されている。アドレス変換部18内のアドレスメモリ18Mの、バス6上のアドレス(9)に対応するアドレスメモリ18M上のアドレスに該当する記憶領域に、バス6上のアドレス(11)が格納されている。
具体例2において、プログラムAは、「第1の命令群」である。具体例2において、主記憶メモリ4内の関数func-1、関数func-2の本体(コード群)は、それぞれ、「第2の命令群」の一例である。具体例2において、関数func-1、関数func-2の本体の主記憶メモリ4内の格納領域のアドレスは、それぞれ、「第2の命令群の実行に用いられるアドレス」の一例である。具体例2において、演算処理ハードウェア5のアドレスは、「回路に割り当てられているアドレス」の一例である。
図9は、具体例2に係るプログラムAの実行イメージT2の一例を示す図である。また、図9には、主記憶メモリ4内のプログラムの格納イメージM2と、演算処理ハードウェ
ア5−2のブロック図とが示されている。図9に示される演算処理ハードウェアは、機能的に表示されたものである。具体例2においても、プログラムAのメインルーチンに変更はないので、図9に示される主記憶メモリ4内のプログラムの格納イメージM2は、図7に示される主記憶メモリ4内のプログラムの格納イメージM1と同じである。
ア5−2のブロック図とが示されている。図9に示される演算処理ハードウェアは、機能的に表示されたものである。具体例2においても、プログラムAのメインルーチンに変更はないので、図9に示される主記憶メモリ4内のプログラムの格納イメージM2は、図7に示される主記憶メモリ4内のプログラムの格納イメージM1と同じである。
具体例2に係る演算処理ハードウェア5−2は、関数func-1の演算処理回路である演算処理部53−2Aと、関数func-2の演算処理回路である演算処理部53−2Bとを備える。
具体例2では、関数func-1及び関数func-2の演算処理はハードウェア処理である。したがって、A11〜A15の処理は、図7のA1〜A5の処理と同様である。また、A16〜A18の処理は、関数func-2の演算処理に対して、図7のA2〜A4と同様の処理が行われる。
すなわち、関数func-2がCALL命令で呼び出されると、CALL命令が指定するアドレス(9)がCPU 1のアドレス変換部18によって演算処理ハードウェア5−2に割り当てられているアドレス(11)に変換される。これによって、関数func-2がCALL命令で呼び出されると、演算処理ハードウェア5−2が呼び出される(A16)。
演算処理ハードウェア5−2の制御部54−2は、スタックポインタ12からスタックフレームの格納領域のアドレスを取得し、スタックフレームから、戻り先アドレス(5)、引数x、y、z、bの値の格納領域のアドレスを取得する。制御部54−2は、主記憶メモリ4から、引数x、y、z、bの値を取得し、演算処理部53−2Bに出力して、関数func-2の演算処理を実行させる。演算処理が完了するまで、制御部54−2は、CPU
1からの読み出しに対して、演算処理部53−2Bに割り当てられているアドレスを指定するJUMP命令等を返す(A17)。
1からの読み出しに対して、演算処理部53−2Bに割り当てられているアドレスを指定するJUMP命令等を返す(A17)。
演算処理が完了すると、制御部54−2は、関数func-2の処理結果として“成功”を関数戻り値レジスタ16Rに書き込む。また、関数func-2は、演算結果を引数bとして用いるため、制御部54−2は、主記憶メモリ4の引数bの値の格納領域に演算結果を書き込む。その後、制御部54−2はRETURN命令をCPU 1に返すと、処理がメインルーチンに戻る(A18)。RETURN命令の戻り先アドレスは、アドレス(5)となる。
具体例1及び具体例2のいずれにおいても、関数func-1、関数func-2を呼び出すアドレスは、アドレス変換部18(アドレス変換テーブル)によって、演算処理ハードウェア5のアドレスに変換されている。また、具体例1及び具体例2のいずれにおいても、プログラムAのメインルーチンは同じである、すなわち、プログラムAのメインルーチンは変更されていない。
<第1実施形態の作用効果>
第1実施形態では、CPU 1にアドレス変換部18が備えられる。アドレス変換部18は、変換前アドレスに対応付けられた変換後アドレスを保持するアドレスメモリ18Mを備える。第1実施形態では、変換前アドレスとして、サブルーチンの呼び出しに用いられる主記憶メモリ4内のサブルーチンの本体の格納領域のアドレスが用いられる。変換後アドレスとして、サブルーチンの演算処理を行う演算処理ハードウェア5のアドレスが用いられる。CALL命令やJUMP命令などの分岐命令の実行結果として制御部15からアドレス変換部18にサブルーチン本体の主記憶メモリ4内の格納領域のアドレスが入力された場合、アドレス変換部18からプログラムカウンタ13に演算処理ハードウェア5のアドレスが出力される。これによって、ソフトウェアの実行コードを変更することなく
、ソフトウェア処理をハードウェア処理に置き換えることができる。
第1実施形態では、CPU 1にアドレス変換部18が備えられる。アドレス変換部18は、変換前アドレスに対応付けられた変換後アドレスを保持するアドレスメモリ18Mを備える。第1実施形態では、変換前アドレスとして、サブルーチンの呼び出しに用いられる主記憶メモリ4内のサブルーチンの本体の格納領域のアドレスが用いられる。変換後アドレスとして、サブルーチンの演算処理を行う演算処理ハードウェア5のアドレスが用いられる。CALL命令やJUMP命令などの分岐命令の実行結果として制御部15からアドレス変換部18にサブルーチン本体の主記憶メモリ4内の格納領域のアドレスが入力された場合、アドレス変換部18からプログラムカウンタ13に演算処理ハードウェア5のアドレスが出力される。これによって、ソフトウェアの実行コードを変更することなく
、ソフトウェア処理をハードウェア処理に置き換えることができる。
第1実施形態によれば、メインルーチンの実行コードを変更することなくソフトウェア処理をハードウェア処理に置き換えることができるため、メインルーチンの変更に伴うメインルーチンの停止、情報処理装置100の再起動等を行わなくてよい。また、ハードウェア処理の方がソフトウェア処理よりも消費電力が少なく済むような演算処理では、ソフトウェア処理をハードウェア処理に置き換えることで消費電力を削減することができる。
また、第1実施形態では、演算処理ハードウェア5はスタックポインタ12と信号線で接続されている。また、演算処理ハードウェア5は、主記憶メモリ4にリード/ライトアクセス可能なように、主記憶メモリ4のDual−Port メモリ化又はバス6の時分割アクセスが設定される。これらによって、演算処理ハードウェア5は、スタックポインタ12から主記憶メモリ4内のスタックフレームの格納領域のアドレスを取得でき、メインルーチンを介することなく、サブルーチンの演算処理に用いるデータ等を取得することができる。これによっても、メインルーチンの変更なく、ソフトウェア処理をハードウェア処理に置き換えることができる。
また、第1実施形態では、演算処理ハードウェア5は、CPU 1内の関数戻り値レジスタ16Rと信号線で接続されている。これによって、演算処理ハードウェア5が演算結果を直接関数戻り値レジスタ16Rに書き込むことができる。関数戻り値レジスタ16Rには、サブルーチンがソフトウェア処理である場合にも、サブルーチンの戻り値が書き込まれる。したがって、演算処理ハードウェア5が演算結果を直接関数戻り値レジスタ16Rに書き込むことによって、関数戻り値レジスタを、ソフトウェア処理のサブルーチンからメインルーチンへの復帰の状態と同じ状態にすることができる。これによって、メインルーチンに対して、サブルーチンが演算処理ハードウェア5の処理に置き換えられている場合でも、ソフトウェア処理であるかのように見せかけることができる。
また、第1実施形態では、演算処理ハードウェア5の制御部54は、所定の条件が満たされた場合に、アドレス変換部18のアドレスメモリ18Mに格納される変換後のアドレスを、演算処理ハードウェア5のアドレス又は主記憶メモリ4の格納領域のアドレスに書き換える。アドレス変換部18は、アドレス変換テーブルに相当する。所定の条件は、温度、CPU 1の負荷状況等の環境条件によって定められる。したがって、第1実施形態によれば、環境状況に応じて、サブルーチンの処理をハードウェア処理またはソフトウェア処理に切り替えることができる。さらに、第1実施形態では、サブルーチンの処理のハードウェア処理とソフトウェア処理との間での切替を、メインルーチンを書き換えることなく、すなわち、メインルーチンの処理の停止、情報処理装置100の再起動なしで行うことができる。
なお、アドレス変換テーブルの書換処理(図3)は、演算処理ハードウェア5の制御部54によって行われることに限定されない。例えば、図3に示される処理内容を含むプログラムを用意したり、アドレス変換テーブルを書き換えるコードをプログラムに含めたりして、CPU 1に実行させることで、CPU 1自身にアドレス変換処理を行わせてもよい。
また、演算処理ハードウェア5に所定のアドレス範囲が割り当てられる場合には、演算処理回路それぞれにアドレスを対応させてもよい。例えば、具体例2において、第1実施形態では、関数func-1、関数func-2が呼び出される場合には、演算処理ハードウェア5−2に割り当てられている同じアドレスが用いられている。これに代えて、例えば、関数func-1と関数func-2とで、呼び出されるアドレスを、演算処理ハードウェア5−2に割り当てられているアドレス範囲内で異ならせてもよい。
<比較例>
比較例として、アドレス変換部18を備えていない情報処理装置における、ソフトウェア処理のハードウェア処理への置き換えについて説明する。
比較例として、アドレス変換部18を備えていない情報処理装置における、ソフトウェア処理のハードウェア処理への置き換えについて説明する。
図10は、情報処理装置のハードウェア構成の一例を示す図である。比較例に係る情報処理装置P100は、CPU P1、入出力装置P2、ROM P3、主記憶メモリP4、演算処理ハードウェアP5を備える。
情報処理装置P100は、CPU P1にアドレス変換部、演算処理ハードウェアP5に制御部を備えていない点で、第1実施形態に係る情報処理装置100と異なる。また、スタックポインタP12、関数戻り値レジスタP16Rは、それぞれ、演算処理ハードウェアP5とは接続されていない。
図11は、比較例に係るプログラムAのメインルーチンのフローチャートの一例である。図11に示されるフローチャートは、第1実施形態に係るプログラムAと同じプログラムのフローチャートである。比較例では、関数func-1、関数func-2の演算処理を演算処理ハードウェアP5に実行させる。そのため、図11に示されるプログラムAのメインルーチンのフローチャートも、関数func-1、関数func-2の演算処理を演算処理ハードウェアP5に実行させることが想定されたものである。
演算処理ハードウェアP5に、関数func-1、関数func-2の演算処理に用いられる引数を渡すために、図11に示されるフローチャートのOP22、OP24では、演算処理ハードウェアP5のレジスタに引数を書き込む処理が追加されている。演算処理ハードウェアP5のレジスタに引数を書き込む処理は、図11中、“func-1x←x”、“func-1y←y”
、“func-1z←z”、“func-2x←x”、“func-2y←y”、“func-2z←z”で示されている。図11中の“func-1x”、“func-1y”、“func-1z”、“func-2x”、“func-2y”、“func-2z”の記載は、関数func-1、関数func-2のそれぞれの引数x、y、zの値を格納する
、演算処理ハードウェアP5のレジスタを示す。
、“func-1z←z”、“func-2x←x”、“func-2y←y”、“func-2z←z”で示されている。図11中の“func-1x”、“func-1y”、“func-1z”、“func-2x”、“func-2y”、“func-2z”の記載は、関数func-1、関数func-2のそれぞれの引数x、y、zの値を格納する
、演算処理ハードウェアP5のレジスタを示す。
OP22の“a←func-1a”、OP24の“b←func-2b”は、それぞれ、変数a、bに
関数func-1、func-2の演算結果を代入することを示す。“func-1a”、“func-2b”は、それぞれ、関数func-1、func-2の演算結果の値の格納場所を示す。関数func-1、func-2の演算結果の値の格納場所は、演算処理ハードウェアP5のレジスタである。したがって、OP22、OP24では、それぞれ、演算処理ハードウェアP5のレジスタから関数func-1、func-2の演算結果を読み出す処理が追加されている。
関数func-1、func-2の演算結果を代入することを示す。“func-1a”、“func-2b”は、それぞれ、関数func-1、func-2の演算結果の値の格納場所を示す。関数func-1、func-2の演算結果の値の格納場所は、演算処理ハードウェアP5のレジスタである。したがって、OP22、OP24では、それぞれ、演算処理ハードウェアP5のレジスタから関数func-1、func-2の演算結果を読み出す処理が追加されている。
図12は、比較例に係るプログラムAの実行イメージT3の一例を示す図である。また、図12には、主記憶メモリP4内のプログラムの格納イメージM3と、演算処理ハードウェアP5のブロック図とが示されている。
図12では、アドレス(1)からアドレス(8)までのアドレス範囲に、プログラムAのメインルーチンのコードが格納されている。また、図12では、アドレス(2)からアドレス(4)に、図11に示されるフローチャートのOP22の関数func-1の演算処理に対応する実行コードが格納されている。図12では、アドレス(6)に、図11に示されるフローチャートのOP24の関数func-2の演算処理に対応する実行コードが格納されている。
演算処理ハードウェアP5には、レジスタと、関数func-1、関数func-2それぞれの演算回路とが備えられている。
比較例では、主記憶メモリP4のアドレス(1)から順にコードが読み出され実行される(プログラム実行イメージT3参照)。関数func-1、関数func-2の演算処理についても、メインルーチンが格納されるアドレス範囲外のアドレスからコードを読み出すことはない。
比較例では、CPU P1はアドレス変換部18を備えていないため、ソフトウェア処理をハードウェア処理に置き換える場合には、図11で示される例のように、メインルーチンが変更される。そのため、環境条件に応じてフレキシブルに処理をソフトウェア処理とハードウェア処理との間で切り替えることはできない。
<第1実施形態に係る情報処理装置の適用例>
第1実施形態に係る情報処理装置100の適用例の一つとして、光ネットワークにおける伝送装置が挙げられる。
第1実施形態に係る情報処理装置100の適用例の一つとして、光ネットワークにおける伝送装置が挙げられる。
図13は、光ネットワークシステムのシステム構成の一例を示す図である。光ネットワークシステム1000は、第1実施形態に係る情報処理装置100が適用された伝送装置500を複数含む。伝送装置500間は、光ファイバを媒体として光信号が伝送される。伝送装置500は、他の伝送装置500又はユーザネットワークと接続されている。
例えば、ユーザネットワークを接続する伝送装置500は、ユーザ端末へのインタフェースと、他の伝送装置500へのインタフェースを備える。他の伝送装置500へのインタフェースは、ユーザ端末へのインタフェースよりも、速度の速い規格に対応している。
図14は、第1実施形態に係る情報処理装置の適用例の一つである伝送装置のブロック図の一例である。伝送装置500は、第1実施形態に係る情報処理装置100の構成と、その他に、クライアントインタフェース部、スイッチ部、ディジタル信号処理部510、光インタフェース部を備える。
ディジタル信号処理部510は、暗号化部511と誤り訂正部512とを備える。暗号化の演算処理と誤り訂正の演算処理の演算結果をCPU 1がディジタル信号処理部510に書き込むことによって、暗号化部511と誤り訂正部512との機能が達成されている。
演算処理ハードウェア5−3は、暗号化の演算処理回路53−3Aを備えており、暗号化の演算処理は演算処理ハードウェア5−3によって行われている。誤り訂正の演算処理はCPU 1によって行われている(ソフトウェア処理)。
例えば、伝送装置500において、誤り訂正の処理がハードウェア処理に置き換えられる場合を想定する。この場合、演算処理ハードウェア5−3に、誤り訂正の演算回路53−3Bが追加される。これを契機として、演算処理ハードウェア5−3の制御部54−3は、アドレス変換テーブルの書換処理を実行する。
より具体的には、例えば、演算処理ハードウェア5−3の制御部54−3は、図3の処理を実行することでアドレス変換テーブルを書き換える。この場合、図3のOP1の所定の条件は、例えば、新たな演算回路の追加の検出である。また、誤り訂正の演算回路53−3Bの追加に伴い、メモリ52−3に格納されている関数アドレス情報が、誤り訂正の処理のサブルーチンのコード群の主記憶メモリ4内の格納領域のアドレスが追加されて更新される。制御部54−3は、更新された関数アドレス情報に基づいて、アドレスメモリ18Mの、誤り訂正の処理のサブルーチンのコード群の主記憶メモリ4内の格納領域のア
ドレスに対応付けられるアドレスメモリ18M上のアドレスに該当する領域に、演算処理ハードウェア5−3のアドレスを書き込む。
ドレスに対応付けられるアドレスメモリ18M上のアドレスに該当する領域に、演算処理ハードウェア5−3のアドレスを書き込む。
アドレス変換テーブルにおいて誤り訂正の演算処理の変換後のアドレスの演算処理ハードウェア5−3のアドレスへの書き換え完了以降は、誤り訂正の演算処理が呼び出されると、誤り訂正の演算処理は、誤り訂正の演算回路53−3Bによって実行される。CPU
1が実行中のメインルーチンを変更、停止、再起動させることなく、誤り訂正の演算処理をソフトウェア処理からハードウェア処理に置き換えることができる。伝送装置500は通信のデータを取り扱っているので、ソフトウェア処理からハードウェア処理への置き換えによる通信の瞬断も抑制できる。誤り訂正の演算処理を、消費電力がより少ない演算処理ハードウェア5−3を採用し、演算処理ハードウェア5−3による処理に置き換えることで、消費電力を削減することができる。
1が実行中のメインルーチンを変更、停止、再起動させることなく、誤り訂正の演算処理をソフトウェア処理からハードウェア処理に置き換えることができる。伝送装置500は通信のデータを取り扱っているので、ソフトウェア処理からハードウェア処理への置き換えによる通信の瞬断も抑制できる。誤り訂正の演算処理を、消費電力がより少ない演算処理ハードウェア5−3を採用し、演算処理ハードウェア5−3による処理に置き換えることで、消費電力を削減することができる。
図15は、第1実施形態に係る情報処理装置の適用例の他の一つである伝送装置のブロック図の一例である。図15の伝送装置600では、光インタフェース部610が着脱可能であり、光インタフェース部610は交換可能である。光インタフェース部610には、光モジュール部611、光アンプ(AMP)部612のモジュールが備えられている。
光モジュール部611、光AMP部612は、温度、CPU 1の負荷状況、データの種類、データの流量等の環境条件に応じて、特性が調整される。演算処理ハードウェア5−4には、光モジュール部611、光AMP部612の特性の調整を行うための制御回路が備えられている。
伝送装置600では、温度、CPU 1の負荷状況、データの種類、データの流量等の環境条件に応じて、光モジュール部611、光AMP部612の制御に係る演算処理が、ソフトウェア処理とハードウェア処理とで切り替えられる。
例えば、演算処理ハードウェア5−4には、光インタフェース部A〜Cにそれぞれ備えられている光モジュールA〜C、光AMP A〜Cのそれぞれ異なる光デバイス用の制御関数の演算処理回路が備えられている。また、主記憶メモリ4にも、光インタフェース部A〜Cにそれぞれ備えられている光モジュールA〜C、光AMP A〜Cのそれぞれ異なる光デバイス用の制御関数のコード群が格納されている。
CPU 1及び制御部54−4は、それぞれ、光インタフェース部610の装着を検知し、光インタフェース部610の識別情報から制御関数を使い分ける。例えば、メインルーチンでは、光モジュール部A〜Cそれぞれの制御関数を区別しておらず、光モジュール部A〜Cの制御関数を読み出す場合には、光モジュール部の制御関数を示す代表アドレスを用いる。同様に、光AMP部A〜Cについても、メインルーチンでは制御関数は区別されておらず、光AMP部の制御関数を読み出す場合には、光AMP部の制御関数を示す代表アドレスを用いる。光モジュールA〜C、光AMP A〜Cのいずれの制御関数を用いるかは、装着されている光インタフェース部の識別情報に基づいて、制御部54−4が選択する。アドレス変換テーブルの変換前アドレスには、光モジュール部及び光AMP部の制御関数の代表アドレスが用いられ、変換後アドレスには制御部54−4が選択した制御関数の主記憶メモリ4内の格納領域のアドレス又は演算処理ハードウェア5−4のアドレスが書き込まれる。詳細は後述される。または、例えば、メインルーチン内に光インタフェース部610の識別情報を判別する処理を含め、識別情報に応じて光モジュール部A〜C及び光AMP部A〜Cのそれぞれの処理に分岐するようにして、制御関数を使い分けてもよい。
図16は、第1実施形態に係る情報処理装置の適用例の他の一つである伝送装置のブロ
ック図の一例である。図16では、図15に示される伝送装置600に、伝送装置600に制御関数がソフトウェアでもハードウェアでも準備されていない光インタフェース部Xが装着された場合が示されている。この場合には、伝送装置600にとって未知である光インタフェース部Xには、光インタフェース部Xに搭載されている光モジュールX、光AMP Xの制御関数の演算処理を行う演算処理ハードウェアXが備えられている。
ック図の一例である。図16では、図15に示される伝送装置600に、伝送装置600に制御関数がソフトウェアでもハードウェアでも準備されていない光インタフェース部Xが装着された場合が示されている。この場合には、伝送装置600にとって未知である光インタフェース部Xには、光インタフェース部Xに搭載されている光モジュールX、光AMP Xの制御関数の演算処理を行う演算処理ハードウェアXが備えられている。
演算処理ハードウェアXは、例えば、FPGAである。演算処理ハードウェアXは、バスIF部21、メモリ22、演算処理部23、制御部24が備えられている。演算処理部23には、光モジュールX、光AMP Xの制御関数の演算処理を行う演算回路がそれぞれ備えられている。メモリ22には、関数アドレス情報が格納されている。メモリ22内の関数アドレス情報には、例えば、メインルーチンによって、光モジュール部、光AMP部それぞれの制御関数の呼び出しに用いられる代表アドレスが、変換前のアドレスとして格納されている。
演算処理ハードウェアXの制御部24は、例えば、バスIF部21を通じて演算処理ハードウェア5−4にアクセスする。演算処理ハードウェアXの制御部24は、例えば、制御部54−4が保持する最新のスタックポインタ12の値を読み出すことで、スタックポインタ12の値を取得する。また、演算処理ハードウェアXの制御部24は、例えば、制御部54−4に関数戻り値レジスタ16Rに書き込む値を渡すことで、制御部24の代わりに関数戻り値レジスタ16Rに演算処理の結果を書き込ませる。ただし、これに限られず、演算処理ハードウェアXは、スタックポインタ12及び関数戻り値レジスタ16Rそれぞれと信号線で接続され、当該信号線を通じて、スタックポインタ12の値を取得したり、演算結果を関数戻り値レジスタ16Rに書き込んだりしてもよい。
伝送装置600に光インタフェース部Xが装着された場合には、CPU 1によって光モジュール部、光AMP部の制御関数が呼び出される際のアドレスが演算処理ハードウェアXになるように、演算処理ハードウェア5−4がCPU 1内のアドレス変換テーブルを書き換える。
図17は、伝送装置の演算処理ハードウェアに備えられる制御部のブロック図の一例である。制御部54−4は、シーケンサ511、演算パラメータ管理部512、処理切替判定部513、光インタフェース検出部514、演算結果選択部515、バスアクセス制御部516、アドレス変換テーブル管理部517を備える。これらは、いずれも所定の処理を実行するようにプログラミングされた回路である。
演算パラメータ管理部512は、演算処理部53−4において行われる演算に用いられる引数をシーケンサ511から受け取り、該当する演算回路に出力する。
処理切替部513は、演算処理のソフトウェア処理とハードウェア処理との間の切替を判定する。処理切替部513には、例えば、伝送装置600に備えられている他のハードウェア構成要素から、温度情報、CPU負荷情報、データ種別、データ流量、等の情報が入力される。処理切替部513は、入力された情報を元に、ハードウェア切替条件が満たされたか否かを判定する。ハードウェア切替条件が満たされる場合には、処理をソフトウェア処理からハードウェア処理に切り替えることが判定される。ハードウェア切替条件は、光モジュールA〜C、光AMP A〜Cのそれぞれについて異なる条件が予め設定されていてもよいし、共通の条件が設定されていてもよい。ハードウェア切替条件の判定結果は、シーケンサ511に出力される。
光インタフェース検出部514は、光インタフェース部610の装着又は取り外しを検出する。光インタフェース検出部514には、光インタフェース部610が装着されると
、装着された光インタフェース部610から装着信号と、識別情報と、光インタフェース部610に演算処理ハードウェアが搭載されている場合には当該演算処理ハードウェアのアドレスとが入力される。光インタフェース検出部514は、装着信号の入力によって光インタフェース部610の装着を検出し、装着された光インタフェース部610から入力された識別情報、演算処理ハードウェアのアドレスをシーケンサ511に出力する。
、装着された光インタフェース部610から装着信号と、識別情報と、光インタフェース部610に演算処理ハードウェアが搭載されている場合には当該演算処理ハードウェアのアドレスとが入力される。光インタフェース検出部514は、装着信号の入力によって光インタフェース部610の装着を検出し、装着された光インタフェース部610から入力された識別情報、演算処理ハードウェアのアドレスをシーケンサ511に出力する。
光インタフェース部610からの装着信号は、所定の周期で光インタフェース部514に入力される。光インタフェース検出部514は、光インタフェース部610からの装着信号が所定時間入力されないことを検出した場合に、光インタフェース部610が取り外されたことを検出し、シーケンサ511に通知する。
演算結果選択部515は、演算処理部53−4に備えられている光モジュールA〜C及び光AMP A〜Cのそれぞれの制御関数の演算回路と、シーケンサ511との間で経路切替を行うセレクタである。演算結果選択部515には、シーケンサ511から装着されている光インタフェースの識別情報が入力される。演算結果選択部515は、入力された識別情報の光モジュール及び光AMPの制御関数の演算回路それぞれとシーケンサ511とが接続されるように経路を設定する。演算結果選択部515に光モジュール又は光AMPの制御関数の演算回路から演算結果が入力されると、当該演算結果はシーケンサ511に出力される。
バスアクセス制御部516は、バスIF部51−4と制御部54−4とのインタフェースである。バスアクセス制御部516を通じて、例えば、光モジュール及び光AMPの制御関数の呼び出し、引数の読み出し等が行われる。
アドレス変換テーブル管理部517は、アドレス変換テーブルを書き換える。実際には、アドレス変換テーブル管理部517は、CPU 1内のアドレス変換部18のアドレスメモリ18Mに接続しており、アドレスメモリ18Mを書き換える。
伝送装置600に既知の光インタフェース部A〜Cのいずれかが装着されている場合には、テーブル管理部517には、シーケンサ511からテーブル書き換えの指示信号が入力される。テーブル管理部517は、シーケンサ511から指示信号が入力されると、メモリ52−4に格納されている関数アドレス情報から、制御関数の呼び出しに用いられている変換前のアドレスを取得する。テーブル管理部517は、アドレス変換テーブルの取得した変換前のアドレスに対応する変換後のアドレスを演算処理ハードウェア5−4のアドレスに書き換える。
伝送装置600に未知の光インタフェース部Xが装着されたことが検出された場合には、テーブル管理部517には、シーケンサ511からテーブル書き換えの指示信号と光インタフェース部Xに備えられる演算処理ハードウェアXのアドレスとが入力される。テーブル管理部517は、シーケンサ511から指示信号が入力されると、メモリ52−4に格納されている関数アドレス情報から、制御関数の呼び出しに用いられている変換前のアドレスを取得する。テーブル管理部517は、アドレス変換テーブルの取得した変換前のアドレスに対応する変換後のアドレスを演算処理ハードウェアXのアドレスに書き換える。
シーケンサ511は、予めプログラミングされた通りに、各回路との間の入出力を制御する。例えば、演算処理部53−4に備えられる演算回路の制御関数が呼び出された場合のシーケンサ511の処理は以下の通りである。
シーケンサ511は、スタックポインタ12から出力されるスタックフレームのアドレ
スを信号線を通じて取得する。シーケンサ511は、スタックポインタ12から出力されたアドレスからスタックフレームを読み出し、制御関数の引数の値を取得する。取得された制御関数の引数の値は、シーケンサ511から演算パラメータ管理部512に出力される。演算結果選択部515から演算結果がシーケンサ511に入力されるまで、シーケンサ511は、例えば、演算処理部53−4に割り当てられているアドレスを指定するJUMP命令等のダミー命令をバスアクセス制御部516を通じてCPU 1に返す。演算結果選択部515から演算結果がシーケンサ511に入力された場合には、シーケンサ511からCPU 1の関数戻り値レジスタ16Rに演算結果が書き込まれる。例えば、演算結果が関数の引数となる場合には、シーケンサ511は、バスアクセス制御部516を通じて、主記憶メモリ4のデータ格納領域に演算結果を書き込む。シーケンサ511のアドレステーブル書換処理に係る処理の詳細は、図17において後述される。
スを信号線を通じて取得する。シーケンサ511は、スタックポインタ12から出力されたアドレスからスタックフレームを読み出し、制御関数の引数の値を取得する。取得された制御関数の引数の値は、シーケンサ511から演算パラメータ管理部512に出力される。演算結果選択部515から演算結果がシーケンサ511に入力されるまで、シーケンサ511は、例えば、演算処理部53−4に割り当てられているアドレスを指定するJUMP命令等のダミー命令をバスアクセス制御部516を通じてCPU 1に返す。演算結果選択部515から演算結果がシーケンサ511に入力された場合には、シーケンサ511からCPU 1の関数戻り値レジスタ16Rに演算結果が書き込まれる。例えば、演算結果が関数の引数となる場合には、シーケンサ511は、バスアクセス制御部516を通じて、主記憶メモリ4のデータ格納領域に演算結果を書き込む。シーケンサ511のアドレステーブル書換処理に係る処理の詳細は、図17において後述される。
図18は、演算処理ハードウェア5−4の制御部54−4のアドレステーブル書換処理のフローチャートの一例である。図18に示される処理は、伝送装置600の稼働中繰り返し実行される。
OP31では、制御部54−4は、光インタフェース部610の装着が検出されたか否かを判定する。光インタフェース部610の装着が検出された場合には(OP31:YES)、処理がOP32に進む。光インタフェース部610の装着が検出されない場合には(OP31:NO)、光インタフェース部610の装着が検出されるまで、待機状態となる。OP31の処理では、光インタフェース検出部514に装着信号が入力され、光インタフェース検出部514からシーケンサ511に装着された光インタフェース部610の識別情報が入力される。
OP32では、制御部54−4は、アドレス変換テーブルにおいて、全ての関数についてメインルーチンで呼び出されるアドレスが変換されないように、アドレス変換テーブルを初期化する。例えば、アドレスメモリ18Mに格納される変換後のアドレスを、それぞれが格納されるアドレスメモリ18M上のアドレスに対応する変換前のアドレスに書き換えることで、アドレス変換テーブルが初期化される。OP32の処理では、光インタフェース部610の装着の検出の通知を受けたシーケンサ511がテーブル管理部517にアドレス変換テーブルの初期化を指示し、テーブル管理部517がアドレスメモリ18Mを更新する。
OP33では、制御部54−4は、光インタフェース部610の識別情報が光インタフェース部A〜Cであるか否かを判定する。光インタフェース部610が光インタフェース部A〜Cのいずれかである場合には(OP33:YES)、処理がOP34に進む。光インタフェース部610が光インタフェース部A〜Cのいずれでもない場合には(OP33:NO)、処理がOP37に進む。OP33の処理では、シーケンサ511が、入力された識別情報に基づいて判定を行う。
OP34では、光モジュール部A/B/Cのうち、装着されている光インタフェース部610の識別情報に該当する光モジュール部の制御関数の演算処理について、図3に示される処理が実行される。OP35では、光AMP部A/B/Cのうち、装着されている光インタフェース部610の識別情報に該当する光AMP部の制御関数の演算処理について、図3に示される処理が実行される。具体的には、ハードウェア切替条件が満たされている場合には、アドレス変換テーブルにおいて、光モジュール部又は光AMP部の制御関数の代表アドレスに対応する変換後のアドレスが演算処理ハードウェア5−4のアドレスに書き換えられる。ハードウェア切替条件が満たされていない場合には、アドレス変換テーブルにおいて該当の光モジュール部又は光AMP部の制御関数の変換後のアドレスが、演算処理ハードウェア5−4のアドレスに書き換えられる。
OP34及びOP35の処理では、処理切替判定部153から該当する光モジュール部又は光AMP部の制御関数に関するハードウェア切替条件の判定結果がシーケンサ511に入力される。ハードウェア切替条件の判定結果に変化のある場合に、シーケンサ511からテーブル管理部517にアドレス変換テーブルの書換の指示信号が出力される(図3、OP2:NO、OP4:NO)。テーブル管理部517は、アドレス変換テーブルの光モジュール部又は光AMP部の制御関数について、変換後のアドレスを演算処理ハードウェア5−4のアドレス又はメインルーチンが用いる代表アドレスに書き換える(図3、OP3、OP5)。いずれのアドレスに書き換えるかは、例えば、現在ハードウェア処理中であるかソフトウェア処理中であるかを示すフラグに基づいて判定される。OP35の処理後、処理はOP36に進む。
OP36では、制御部54−4は、終了条件が満たされたか否かを判定する。終了条件は、例えば、光インタフェース部A/B/Cが取り外されたことが検出されることである。終了条件が満たされた場合(OP36:YES)、図18に示される処理が終了する。終了条件が満たさない場合(OP36:NO)、処理がOP34に進む。
OP37では、制御部54−4は、光インタフェース部Xから関数アドレス情報Xをメモリ52−4にダウンロードする。OP37の処理では、シーケンサ511がバスアクセス制御部516を介して光インタフェース部Xから関数アドレス情報Xを読み出し、メモリ52−4に書き込む。光インタフェース部Xからの関数アドレス情報Xには、光インタフェース部Xに備えられている演算回路の関数関数の代表アドレス(メインルーティンで当該関数を呼び出す際に用いられているアドレス)が格納されている。例えば、関数アドレス情報Xは、光インタフェース部Xの識別情報とともにメモリ52−4に格納される。
OP38及びOP39では、制御部54−4は、光モジュール部X又は光AMP部Xの制御関数の代表アドレスに該当するアドレス変換テーブルの変換後のアドレスを演算処理ハードウェアXのアドレスに書き換える。OP37の処理では、シーケンサ511からテーブル管理部517にアドレス変換テーブルの書換の指示信号と演算処理ハードウェアXの識別情報及びアドレスとが出力される。テーブル管理部51は、メモリ52−4の関数アドレス情報Xに含まれる光モジュール部X又は光AMP部Xの制御関数の代表アドレスアドレスに対応するアドレスメモリ18Mのアドレスに格納される変換後アドレスを演算処理ハードウェアXのアドレスに書き換える。OP39の処理後、処理がOP40に進む。
OP40では、制御部54−4は、終了条件が満たされたか否かを判定する。終了条件は、例えば、光インタフェース部Xが取り外されたことが検出されることである。終了条件が満たされると(OP40:YES)、図18に示される処理が終了する。
図15〜図18の適用例の場合、光インタフェース部A〜Cについては、光モジュール部及び光AMP部の制御関数の演算処理が、伝送装置600側のソフトウェア実行コードを書き換えることなく、ソフトウェア処理とハードウェア処理とで切り替えることができる。また、伝送装置600は、開発時点で製品化されている光インタフェース部A〜Cそれぞれについて、制御関数の演算処理を行うソフトウェアと演算回路とを備えているので、光インタフェース部A〜Cのいずれが装着されたとしても対応することができる。例えば、光インタフェース部Aが取り外されて光インタフェース部Bが装着された場合でも、ソフトウェア実行コードを書き換えたり、ソフトウェアを停止又は再実行したりすることなく、光インタフェース部Bを使用可能である。したがって、伝送装置600は、伝送装置600本体のアップグレードのコストを抑えることができ、例えば、光インタフェース部B、C等の追加ハードウェアのサポートが可能である。
また、伝送装置600の開発時点で、製品化されていない光インタフェース部Xについても、伝送装置600側のソフトウェア実行コード及び演算処理ハードウェア5を変更することなく、使用することができ、追加ハードウェアのサポートが可能である。ただし、光インタフェース部Xについては、光モジュール部及び光AMP部の制御関数の演算処理はハードウェア処理に固定される。したがって、ハードウェア構成が変更になった場合でも、ソフトウェア実行コードを再開発しなくてもよく、ソフトウェアの開発コストの削減が図れる。
<その他>
第1実施形態では、アドレス変換テーブルにおいて、変換前アドレスとして、主記憶メモリ4のサブルーチンのコード群の格納領域のアドレスが設定され、変換後アドレスとして、演算処理ハードウェア5のアドレスが設定されることが想定されている。ただし、これに限定されず、アドレス変換テーブルの変更前アドレス及び変換後アドレスには、主記憶メモリ4のサブルーチンのコード群の格納領域のアドレス及び演算処理ハードウェア5のアドレスのいずれが設定されてもよい。
第1実施形態では、アドレス変換テーブルにおいて、変換前アドレスとして、主記憶メモリ4のサブルーチンのコード群の格納領域のアドレスが設定され、変換後アドレスとして、演算処理ハードウェア5のアドレスが設定されることが想定されている。ただし、これに限定されず、アドレス変換テーブルの変更前アドレス及び変換後アドレスには、主記憶メモリ4のサブルーチンのコード群の格納領域のアドレス及び演算処理ハードウェア5のアドレスのいずれが設定されてもよい。
例えば、変換前アドレスを主記憶メモリ4内のサブルーチンAのコード群の格納領域のアドレス、変換後アドレスを主記憶メモリ4内のサブルーチンBのコード群の格納領域のアドレスと設定してもよい。例えば、サブルーチンAはCPU負荷が低い場合に用いられ、サブルーチンBはCPU負荷が高い場合に用いられる場合に、CPU負荷に応じて、サブルーチンA、B間でメインルーチンの変更なく処理の切替を行うことができる。また、例えば、メインルーチンで用いられているサブルーチンAをサブルーチンBにアップグレードする場合に、メインルーチンの変更、情報処理装置100の再起動等なく、アップグレードすることができる。
例えば、変換前アドレスを演算処理ハードウェアAのアドレス、変換後アドレスを演算処理ハードウェアBのアドレスと設定してもよい。この場合には、メインルーチンがもともと演算処理ハードウェアAを呼び出していても、演算処理ハードウェアAの代わりに演算処理ハードウェアBが呼び出されるようにすることができる。例えば、演算処理ハードウェアAは、データ種別関係なく全てのデータ種別に対する所定の処理の演算回路を備えているとする。演算処理ハードウェアBが音声データに適した所定の処理の演算回路を備えているとする。アドレス変換テーブルの変換後アドレスが演算処理ハードウェアBのアドレスに書き換えられる条件を、音声データの検出とする。この場合、伝送装置600に音声データが流れると、アドレス変換テーブルの変換後アドレスが演算処理ハードウェアBのアドレスに書き換えられ、所定の処理を、音声データにより適した処理に切り替えることができる。
また、アドレス変換テーブルには、変換前アドレスに演算処理ハードウェア5のアドレス、変換後アドレスに主記憶メモリ4内のサブルーチンのコードの格納領域のアドレスが設定されてもよい。
1 CPU
2 入出力装置
3 ROM
4 主記憶メモリ
5 演算処理ハードウェア
11 バスインタフェース部
12 スタックポインタ
13 プログラムカウンタ
14 命令レジスタ
15 制御部
15D 命令デコーダ
16 レジスタ部
16R 関数戻り値レジスタ
17 算術論理演算処理部
51 バスインタフェース部
52 メモリ
53 演算処理部
54 制御部
2 入出力装置
3 ROM
4 主記憶メモリ
5 演算処理ハードウェア
11 バスインタフェース部
12 スタックポインタ
13 プログラムカウンタ
14 命令レジスタ
15 制御部
15D 命令デコーダ
16 レジスタ部
16R 関数戻り値レジスタ
17 算術論理演算処理部
51 バスインタフェース部
52 メモリ
53 演算処理部
54 制御部
Claims (10)
- 中央処理装置と、
前記中央処理装置がアクセスするアドレス空間内の所定のアドレス範囲が割り当てられている記憶領域に第1の命令群及び第2の命令群を記憶する記憶装置と、
前記アドレス空間内で割り当てられているアドレスに従って所定の演算処理を実行する回路と、
を備え、
前記中央処理装置は、
前記アドレス空間内のアドレスを指定するプログラムカウンタと、
前記第1の命令群が実行された結果として得られるアドレスを前記プログラムカウンタに出力する制御部と、
第1のアドレスとしての前記第2の命令群の実行に用いられるアドレスに対応付けて第2のアドレスとして前記回路に割り当てられているアドレスを記憶する記憶部を備え、前記制御部から出力されたアドレスが前記第1のアドレスに合致する場合に、前記第2のアドレスを前記プログラムカウンタに出力する変換部と、
を備える、
情報処理装置。 - 前記回路は、
前記所定の演算処理を行う演算回路と、
所定の条件が満たされている場合に、前記中央処理装置の前記記憶部に前記回路に割り当てられているアドレスを前記第2のアドレスとして書き込む制御回路を備える、
請求項1に記載の情報処理装置。 - 前記制御回路は、前記所定の条件が満たされていない場合に、前記中央処理装置の前記記憶部に前記第2のアドレスとして前記第2の命令群の実行に用いられるアドレスを書き込む、
請求項2に記載の情報処理装置。 - 前記中央処理装置は、
前記制御部から前記第2の命令群の実行に用いられるアドレスが出力される直前の前記プログラムカウンタに保持されるアドレスを保持するアドレス保持部と、
前記第2の命令群の実行結果を格納するレジスタと、
をさらに備え、
前記回路の前記制御回路は、前記回路に割り当てられているアドレスが前記中央処理装置から呼び出された場合に、前記アドレス保持部が保持するアドレスに該当する格納領域からデータを取得し、前記取得したデータを前記演算回路に出力し、前記演算回路の演算結果を前記レジスタに書き込む、
請求項2または3に記載の情報処理装置。 - 前記回路の前記制御回路は、前記回路に割り当てられているアドレスが前記中央処理装置から呼び出されたことにより前記演算回路において前記所定の演算処理が実行されている間、前記中央処理装置からの前記回路に割り当てられているアドレスの呼び出しに対して、前記記憶装置に割り当てられている前記所定のアドレス範囲内のアドレスが前記中央処理装置によって呼び出されないようなダミーの命令を返す、
請求項1から4のいずれか一項に記載の情報処理装置。 - 前記回路の前記制御回路は、前記所定の条件が満たされる場合として、前記演算回路の追加を検出した場合に、前記中央処理装置の前記記憶部に前記回路に割り当てられている
アドレスを前記第2のアドレスとして書き込む、
請求項2から5のいずれか一項に記載の情報処理装置。 - 前記記憶装置は、前記情報処理装置に対して着脱可能なインタフェースの複数の種類のそれぞれについて、前記インタフェース部に関する処理を行う第2の命令群を記憶し、
前記回路は、前記第2の命令群に対応する前記インタフェース部の種類のそれぞれについて、前記インタフェース部に関する処理を行う演算回路を備え、
前記制御回路は、前記中央処理装置の前記記憶部に前記第2のアドレスとして、前記所定の条件が満たされている場合には、装着されているインタフェース部の種類に応じた演算回路が実行される前記回路に割り当てられているアドレスを書き込み、前記所定の条件が満たされていない場合には、前記装着されているインタフェース部の種類に応じた第2の命令群の実行に用いられるアドレスを書き込む、
請求項2から5のいずれか一項に記載の情報処理装置。 - 前記制御回路は、前記装着されているインタフェース部の種類に応じた演算回路を備えておらず、且つ、前記装着されているインタフェース部に関する処理を行う第2の演算回路が前記装着されているインタフェース部に備えられている場合に、前記中央処理装置の前記記憶部に前記第2のアドレスとして、前記装着されているインタフェース部に備えられている第2の演算回路に割り当てられているアドレスを書き込む、
請求項7に記載の情報処理装置。 - 第1の命令群及び第2の命令群が記憶される記憶装置の記憶領域に割り当てられた所定のアドレス範囲と、割り当てられているアドレスに従って所定の演算処理を実行する回路に割り当てられている前記アドレスと、を含む中央処理装置がアクセスするアドレス空間内のアドレスを指定するプログラムカウンタと、
前記第1の命令群が実行された結果として得られるアドレスを前記プログラムカウンタに出力する制御部と、
第1のアドレスとしての前記第2の命令群の実行に用いられるアドレスに対応付けて第2のアドレスとして前記回路に割り当てられているアドレスを記憶し、前記制御部から出力されたアドレスが前記第1のアドレスに合致する場合に、前記第2のアドレスを前記プログラムカウンタに出力する変換部と、
を備える中央処理装置。 - 第1の命令群を記憶する記憶装置の記憶領域に割り当てられた所定のアドレス範囲と、割り当てられているアドレスに従って所定の演算処理を行う回路に割り当てられている前記アドレスと、を含む中央処理装置がアクセスするアドレス空間内のアドレスを指定するプログラムカウンタと、
前記第1の命令群が実行された結果として得られるアドレスを前記プログラムカウンタに出力する制御部と、
第1のアドレスに対応付けて第2のアドレスを記憶し、前記制御部から出力されたアドレスが前記第1のアドレスに合致する場合に、前記第2のアドレスを前記プログラムカウンタに出力する変換部と、
を備える中央処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016224202A JP2018081559A (ja) | 2016-11-17 | 2016-11-17 | 情報処理装置及び中央処理装置 |
US15/695,803 US20180137051A1 (en) | 2016-11-17 | 2017-09-05 | Information processing apparatus and central processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016224202A JP2018081559A (ja) | 2016-11-17 | 2016-11-17 | 情報処理装置及び中央処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018081559A true JP2018081559A (ja) | 2018-05-24 |
Family
ID=62106600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016224202A Pending JP2018081559A (ja) | 2016-11-17 | 2016-11-17 | 情報処理装置及び中央処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180137051A1 (ja) |
JP (1) | JP2018081559A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11126783B2 (en) | 2019-09-20 | 2021-09-21 | Fujifilm Business Innovation Corp. | Output apparatus and non-transitory computer readable medium |
-
2016
- 2016-11-17 JP JP2016224202A patent/JP2018081559A/ja active Pending
-
2017
- 2017-09-05 US US15/695,803 patent/US20180137051A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11126783B2 (en) | 2019-09-20 | 2021-09-21 | Fujifilm Business Innovation Corp. | Output apparatus and non-transitory computer readable medium |
Also Published As
Publication number | Publication date |
---|---|
US20180137051A1 (en) | 2018-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2014505916A (ja) | Simdレジスタファイルから汎用レジスタファイルへデータを移動させるための方法及び装置 | |
KR100272937B1 (ko) | 마이크로프로세서및멀티프로세서시스템 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
US20230084523A1 (en) | Data Processing Method and Device, and Storage Medium | |
JPH03158928A (ja) | データ処理装置 | |
KR100765567B1 (ko) | 산술 논리 유닛 및 스택을 가지는 데이터 프로세서, 멀티미디어 장치 및 컴퓨터 판독가능 기록 매체 | |
JP3616402B2 (ja) | 拡張可能なレジスタを提供するデータ処理システムおよびその方法 | |
JP2018081559A (ja) | 情報処理装置及び中央処理装置 | |
US20030023836A1 (en) | Shadow register array control instructions | |
US11314514B2 (en) | Vector length querying instruction | |
JPH10161871A (ja) | プロセッサ | |
JP2000353092A (ja) | 情報処理装置及びそのレジスタファイル切替方法 | |
US8583897B2 (en) | Register file with circuitry for setting register entries to a predetermined value | |
EP1088266B1 (en) | Parallel data processing | |
US5812845A (en) | Method for generating an object code for a pipeline computer process to reduce swapping instruction set | |
KR20010072490A (ko) | 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치 | |
US6820193B1 (en) | Branch instructions with decoupled condition and address | |
JPH1091434A (ja) | クイック・デコード命令を用いるための方法およびデータ処理システム | |
GB2225881A (en) | Co-processor intrude mechanism | |
JP6127883B2 (ja) | 半導体装置および半導体装置の動作制御方法 | |
JP2696578B2 (ja) | データ処理装置 | |
JPH07191955A (ja) | データ駆動型情報処理装置 | |
JP2007122547A (ja) | プログラム実行方法および共有メモリ型マルチコアプロセッサ | |
JPH04107630A (ja) | 中央処理装置 | |
JPS58195255A (ja) | デ−タ処理装置 |