(57)【要約】  【課題】整数と浮動小数点数が混在して実行される制御演算を実行する場合、フォーマット変換が必要であり、このために演算性能が低下するという課題があった。  【解決手段】命令にオペランドで指示される入力および出力データに対してフォーマット変換を指示する変換フラグを備え、パイプラインのデコード段に、変換フラグを参照し入力データに対してフォーマット変換を行い、実行段の入力データを作成するフォーマット変換部を備え、パイプラインのライトバック段に、変換フラグを参照し実行段の演算器の演算結果に対してフォーマット変換を行い、ライトバック段のデータおよびフォワーディングのため実行段に与える入力データを作成するフォーマット変換部を備えた。【選択図】図１
2010146521.tif 000002
【特許請求の範囲】
【請求項１】
整数演算に加え、ＩＥＥＥ７５４に準拠する浮動少数点数演算を行うサーボモータ制御用の演算処理装置であって、オペランドで指示される入力および出力データに対して整数から浮動少数点数、あるいは浮動少数点数から整数へのフォーマット変換を指示する変換フラグを命令中に備え、パイプラインのデコード段に、前記変換フラグを参照して入力データを、整数から浮動少数点数、あるいは浮動少数点数から整数へフォーマット変換し、実行段の入力を作成する第1のフォーマット変換部を１つあるいは複数備え、パイプランのライトバック段に、前記変換フラグを参照して実行段の演算器の演算結果を、整数から浮動少数点数、あるいは浮動少数点数から整数へフォーマット変換し、ライトバック段の出力データおよびフォワーディングのための実行段の入力データを作成する第２のフォーマット変換部を備えることを特徴とするサーボモータ制御用浮動少数点数演算機能付き演算処理装置。
【請求項２】
整数演算に加え、ＩＥＥＥ７５４に準拠する浮動少数点数演算を行うサーボモータ制御用の演算処理装置であって、整数から浮動少数点数、あるいは浮動少数点数から整数へのフォーマット変換の条件がエンコードされたオペランドを命令を備え、パイプラインのデコード段でオペコードをデコードすることで整数から浮動少数点数、あるいは浮動少数点数から整数へのフォーマット変換を指示する前記変換フラグを生成することを特徴とする請求項１記載のサーボモータ制御用浮動少数点数演算機能付き演算処理装置。
【請求項３】
前記サーボモータ制御用浮動少数点数演算機能付き演算処理装置を使ったサーボモータ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、整数と浮動少数点数とを混在させてサーボモータ制御用の演算処理を行なう演算処理装置およびそのような演算処理装置を使用したサーボモータ制御装置に関する。
【背景技術】
【０００２】
サーボモータの制御に特有の演算を高速に効率よく行うために、プログラム演算機能を搭載した専用のASICが使われるようになってきている。サーボモータの制御に必要な変数は、整数値を持つレジスタで管理されてきた。これは、位置決め等を行う場合の目標位置の指令値を、整数値として扱うパルスの数で表現しているからである。また、ゲイン等のサーボ制御を行うパラメータも整数値で管理する。しかし、制御用のフィルタ処理等では、変数同士の乗算等の演算が多く、整数の演算では、桁のオーバーフロー等の問題があり、そのチェックに時間を要するため、高速化を阻害する要因となっていた。サーボモータの制御においても、変数は整数で管理しながら、途中の演算、特に乗算等は浮動小数点数で行いたいという要求が出てきた。そうすれば、桁オーバフローの心配も無く、高速化が実現できる。しかし、そのためには、整数と浮動小数点数とが混在した演算を行う必要がある。従来の演算機能では、浮動小数点演算を行う前に、変換命令を用いて整数を浮動小数点数に変換しておき、演算結果を再び整数に変換命令によって変換するという手法がとられていた。この場合は、当然ながら変換命令の実行に必要な時間だけ、全体の処理が余計に掛かってしまう。
図８は、整数をフォーマット変換し、浮動小数点数で加算し、再び整数にフォーマット変換する場合の例であり、実際に演算を実行するステップ（FADD）以外はすべてフォーマット変換に必要なステップであり、これらのステップの実行時間分だけ余分な時間が発生する。
また、演算処理装置内にフォーマット変換部を持つことにより、フォーマット変換命令によってフォーマット変換を行なう必要がないようにしたもの（例えば特許文献１）がある。図６はそのような従来技術の例である。
図６では、数値演算プロセッサ100は内部データバス110に接続された変換部102およびリミット部106を備え、入力がローカルデータバス111であると共に出力がリミット部となる逆変換部103を備え、制御レジスタ部101に、変換部と逆変換部の動作を制御する変換制御ビット104と、逆変換部の状態出力を保持する変換状態ビット105と、リミット部の動作を制御するリミット部制御ビット107と、リミット部に与える境界値であるリミットデータ108を備えており、そして変換制御ビットとリミット部制御ビットの論理積をとるAND 109を備える。浮動小数点数フォーマット以外の数値フォーマットでインターフェースでき、浮動小数点数で演算部を動作させ、正しい演算結果を得ることを目的とする。（例えば、特許文献1参照）。
しかし、例えば、整数をフォーマット変換し、浮動少数点で加算し、再び整数にフォーマット変換する場合は図９のような記述となり、フォーマット変換の命令は不要だが、制御レジスタ部の変換制御ビットのセットとリセットを行う命令が追加され、この命令に必要な実行時間分の余分な時間が発生する。
【特許文献１】特開2004-110665（11頁、図1）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
サーボモータの制御を行うために、整数と浮動少数点が混在したような演算を行なう場合、あるいは演算だけは浮動少数点で実行するが、データとしては整数で保持するような場合、従来は事前にフォーマット変換命令を実行して演算のためのフォーマットを統一し、結果をまたフォーマット変換するといった方法がとられていた。
また、演算処理装置の中にフォーマット変換部を持つことによってフォーマット変換命令を不要にしたものもあるが、いずれも演算に必要なステップ以外の余分なステップが必要であり、その余分なステップを実行する時間分だけ全体の処理が遅くなるという問題があった。
本発明はこのような問題点に鑑みてなされたものであり、整数から浮動少数点数、あるいは浮動少数点数から整数へのフォーマット変換をパイプライン処理の中で並行して実行させることにより、フォーマット変換のための特別なステップを不要とし、演算に必要な時間のみで実行させることにより、サーボモータの制御を高速に行うことにある。
【０００４】
上記問題を解決するため、本発明は次のように構成したのである。
請求項1に記載の発明は、整数演算に加え、ＩＥＥＥ７５４に準拠する浮動少数点数演算を行うサーボモータ制御用の演算処理装置であって、オペランドで指示される入力および出力データに対して整数から浮動少数点数、あるいは浮動少数点数から整数へのフォーマット変換を指示する変換フラグを命令中に備え、パイプラインのデコード段に、前記変換フラグを参照して入力データを、整数から浮動少数点数、あるいは浮動少数点数から整数へフォーマット変換し、実行段の入力を作成する第1のフォーマット変換部を１つあるいは複数備え、パイプランのライトバック段に、前記変換フラグを参照して実行段の演算器の演算結果を、整数から浮動少数点数、あるいは浮動少数点数から整数へフォーマット変換し、ライトバック段の出力データおよびフォワーディングのための実行段の入力データを作成する第２のフォーマット変換部を備えるものである。
また、請求項2に記載の発明は、整数演算に加え、ＩＥＥＥ７５４に準拠する浮動少数点数演算を行うサーボモータ制御用の演算処理装置であって、整数から浮動少数点数、あるいは浮動少数点数から整数へのフォーマット変換の条件がエンコードされたオペランドを命令に備え、パイプラインのデコード段でオペコードをデコードすることで整数から浮動少数点数、あるいは浮動少数点数から整数へのフォーマット変換を指示する前記変換フラグを生成することを特徴とするものである。
また、請求項3に記載の発明は、前記浮動小数点数演算機能付き演算処理装置を、サーボモータ制御装置の演算処理装置として利用するものである。
【発明の効果】
【０００５】
請求項１に記載の発明によると、入力データおよび演算結果における全ての組合せについてフォーマット変換を実現できる。そのため、整数と浮動小数点数が混在して実行される制御演算を、演算性能を落とさず実行可能となる。さらに、変数をチェックすることで変換フラグを作成することが出来るため、例えばC言語のような高級言語での対応が容易という効果も合わせて備える。
また、請求項２に記載の発明によると、入力データおよび演算結果における全ての組合せについてフォーマット変換を実現できる。そのため、整数と浮動小数点数が混在して実行される制御演算を、演算性能を落とさず実行可能となる。さらに、変数をチェックすることで変換フラグを作成することが出来るため、例えばC言語のような高級言語での対応が容易という効果も合わせて備える。
また、請求項３に記載の発明によると、フォーマット変換に無駄な時間を発生させないため、サーボ装置の制御性能を向上することができるようになる。
【０００６】
以下、本発明の実施の形態について図を参照して説明する。
【実施例１】
【０００７】
図１は、本発明の浮動小数点数演算を実行する演算処理装置のブロック図である。図1において、演算処理装置2の演算器16は2入力1出力の演算を行う。そのため、本実施例では、変換フラグ11が入力用にそれぞれ1ビットづつと出力用に1ビットの合計3ビットを備えている。フェッチ段6は命令メモリ3に記憶されている命令5をフェッチする。命令はオペコード10、変換フラグとオペランド12がエンコードされている。パイプライン処理を行うため、このフェッチした命令はFFでラッチされて、デコード段7に出力される。デコード段では入力用の変換フラグがフォーマット変換部13 14に入力される。フォーマット変換部は変換フラグが有効な場合はフォーマット変換を行うが、無効な場合はフォーマット変換を行わない。レジスタ4が、フェッチ段に備えられたフォーマット変換部への入力となる。フェッチ段のデータはFFでラッチされ実行段8に出力される。実行段では2つの入力データを用いて演算を行い、演算結果を生成する。実行段のデータはFFでラッチされライトバック段9に出力される。ライトバック段では出力用の変換フラグと、演算結果がフォーマット変換部17に入力される。変換フラグが有効な場合はフォーマット変換を行うが、無効な場合はフォーマット変換を行わない。ライトバック段のフォーマット変換部の出力は最終的にレジスタに書込まれる。また、ライトバック段のフォーマット変換部の出力がフォワーディングのために利用される。フォワーディングとはライトバックされるデータを次の命令がすぐに利用できるように設けられたバイパス回路のことである。
図７は、フォーマット変換部の詳細ブロック図である。フォーマット変換部１３、１４、１７は、基本的に同一の構成を持つのでフォーマット変換部１３で説明する。フォーマット変換部１３は、入力のセレクタ３０と、浮動少数点数生成部３１、整数生成部３７、出力のセレクタ４２から構成される。入力のセレクタ３０はFFでラッチされたオペランド１２とレジスタ５の出力をFFでラッチされたオペコード１０で選択する。オペコードは即値命令の場合、オペランドを、それ以外の命令の場合はレジスタを選択する。
整数を浮動少数点に変換する浮動小数点数生成部は、整数調整部３２と、符号生成部３３、指数生成部３４、仮数生成部３５、浮動少数点数符号化部３６から構成される。整数調整部は、浮動少数点の場所を確定するための最上位の１の位置を算出する（図２のS1）。符号生成部は、セレクタ出力の最上位ビットを符号として利用する（図２のS2）。指数生成部は、符号を除く最上位の１の位置から指数を決定する（図２のS3）。これは、オフセット１２７に最上位の１の位置を加算することで得ることができる。仮数生成部は、符号を除く最上位の１の位置より右側を利用して仮数を決定する。（図２のS4）。浮動少数点符号化部は、最上位に符号生成部の出力を、その下位に指数生成部の出力を、さらにその下位に仮数生成部の出力を並べて符号化する（図２のS5）ことで、浮動少数点数を生成する。
浮動少数点数を整数に変換する整数変換部は、符号生成部３８と、指数検査部３９、仮数調整部４０、整数符号化部４１から構成される。指数検査部は、指数が整数で表される範囲内か（図３のS7）を検査する。仮数調整部は、仮数の最上位に１を付加する（図３のS6）。１を付加した仮数に対して、指数が整数で表される範囲内の場合、仮数を指数だけシフトして符号無し整数とする（図３のS8）。この時指数からオフセットの１２７を引いておく。符号生成部は、セレクタ出力の最上位ビットを利用して、最上位に符号ビットを付加する（図３のS9）。整数符号化部は、指数が整数で表される範囲内の場合は、最上位を符号生成部の出力に、その下位に仮数調整部の出力を符号化して整数として出力する。また、指数が整数で表される範囲外の場合は、エラー用符号なし整数を生成し（図３のS10）、これを出力する。
出力のセレクタ４２は、浮動少数点数生成部の出力と、整数生成部の出力、セレクタ３０の出力を入力として、FFでラッチだれた変換フラグ１１により、出力を選択する。変換フラグが整数を浮動少数点数に変換する場合は、浮動少数点数生成部の出力を選択し、また、変換フラグが浮動少数点数を整数に変換する場合は、整数生成部の出力を選択し、変換フラグが無変換の場合はセレクタ３０の出力を選択し、セレクタ４２の出力とする。
フォーマット変換部は、シフタやセレクタで構成できるので、論理の段数を実行段の演算に要する段数に比べて少なくすることができる。そのため、デコード段やライトバック段にフォーマット変換の回路を実装しても、パイプラインのクロックの動作周波数を落とさないですむのである。
パイプライン処理においては、実行段は複雑な処理を行なうため、他の段に比べて組合せ回路の段数が深くなり、処理に必要な時間が長くなり、パイプラインを動作させるクロックは実行段の実行時間で決定される。よってデコード段やライトバック段では実行時間は余裕があり、フォーマット変換を本来のデコードやライトバックと並行して実行することは可能である。
図１０は、整数をフォーマット変換し、浮動小数点数で加算し、再び整数にフォーマット変換する場合の例である。
この記述では、LD命令の後、ピリオドに続いて書かれた“f”が、整数を浮動少数点数に変換することを示す変換フラグである。また、ST命令の後、ピリオドに続いて書かれた“d”も、浮動小数点数を整数に変換することを示す変換フラグである。
さらに、FADD命令がオペランドにメモリを使用できる場合には、図１１のように演算命令のみとなる。
この記述では、FADD命令の後、ピリオドに続いて書かれた“f1”、 “f2”、 “d3”が変換フラグである。“f1”はオペランド1（INT_D1）に対して整数を浮動少数点数に変換することを示し、“f2”はオペランド2（INT_D2）に対して整数を浮動少数点数に変換することを示し、“d3”はオペランド3（INT_D3）に対して浮動少数点数を整数に変換することを示す。
【０００８】
図2は、本発明の浮動小数点数演算を実行する演算処理装置のフローチャートであり、フォーマット変換部で実行する整数から浮動小数点数への変換を説明する。整数から浮動小数点数へ変換を行うには、以下の5つのステップを実行する。
ステップ1：浮動小数点の場所を確定するため最上位の1の位置を算出する  S1
ステップ2：符号付整数の場合には最上位の1ビットを符号とする  S2
ステップ3：符合を除いた最上位の1の位置から指数を決定する  S3
ステップ4：符合を除いた最上位の1の位置より右側を利用して仮数を決定する  S4
ステップ5：符号、指数と仮数を利用して浮動小数点数を作成する  S5
【０００９】
図3は、本発明の浮動小数点数演算を実行する演算処理装置のフローチャートであり、フォーマット変換部で実行する浮動小数点数から整数への変換を説明する。浮動小数点数から整数へ変換を行うには、以下の3つのステップを実行する。
ステップ1：仮数の先頭に1を付加する  S6
ステップ2：指数が整数で表される範囲内かチェックする  S7
ステップ2.1：範囲内の場合には仮数を指数だけシフトして符号無し整数を作成するS8
ステップ2.2：範囲外はエラーのためエラー用の符号なし整数を作成する  S10
ステップ3：先頭に符号ビットを付加して符号付整数とする  S9
浮動小数点数は整数より大きな数を扱えるので、整数の範囲外の場合はオーバフローであり、エラーとする必要がある。このときエラー用の符号なし整数には、例えば32ビット整数だと符合を除いた31ビット全てが1の0x80000000を利用するとよい。
【実施例２】
【００１０】
図４は、本発明の浮動小数点数演算を実行する演算処理装置のブロック図である。実施例1と異なるのは、フォーマット変換がエンコードされたオペコード10を命令5が備えている点と、フェッチ段6においてオペコード10をデコードするデコーダ18を備え、デコーダ出力で変換フラグ11とオペコード19を生成する点である。入力データが2個、出力データが1個の場合の演算では、演算の種類は1つであるが、フォーマット変換の組合せが8通りであるので、命令は8個になる。デコーダはこの命令をデコードし、オペコード19と変換フラグ11を生成する。
図１２は、整数をフォーマット変換し、浮動小数点数で加算し、再び整数にフォーマット変換する場合の例である。
この記述では、LDF命令がロード時に整数を浮動少数点数に変換することを示す命令である。また、STD命令もストア時に浮動小数点数を整数に変換することを示す命令である。
さらに、FADD命令がオペランドにメモリを使用できる場合には、図１３のように演算命令のみとなる。
この記述では、FADDf1f2d3命令が変換命令である。はオペランド1（INT_D1）とオペランド2（INT_D2）に対して整数を浮動少数点数に、オペランド3（INT_D3）に対して浮動少数点数を整数に変換することを示す。
【実施例３】
【００１１】
図５は、浮動小数点数演算を実行する演算処理装置とそれを利用したサーボ装置のブロック図である。サーボ装置1は制御演算を実行する演算処理装置 2と、サーボモータ24へのモータ電流を生成するパワー部と、パワー部の出力をAD変換し演算処理装置とインターフェースするADC 21と、エンコーダ24とインターフェースするエンコーダIF 22から構成される。ADCやエンコーダIFから入力されるフィードバック値は整数であるため、演算処理装置では浮動小数点数と整数が混在して制御演算が実行される。そのため、浮動小数点数と整数間のフォーマット変換が不可欠であり、フォーマット変換に無駄な時間を発生させないため、サーボ装置の制御性能を向上することができるようになる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第1実施例を示す浮動小数点数演算を実行する演算処理装置のブロック図
【図２】本発明の第1実施例を示す浮動小数点数演算を実行する演算処理装置のフローチャート図
【図３】本発明の第1実施例を示す浮動小数点数演算を実行する演算処理装置のフローチャート図
【図４】第2実施例を示す浮動小数点数演算を実行する演算処理装置のブロック図
【図５】第3実施例を示す浮動小数点数演算を実行する演算処理装置とそれを搭載したサーボ装置のブロック図
【図６】従来の浮動小数点数演算を実行する演算処理装置のブロック図
【図７】第１実施例のフォーマット変換部の詳細ブロック図
【図８】フォーマット変換命令によってフォーマット変換を行なう命令の記述例  （従来技術）
【図９】フォーマット変換機能を持った演算処理装置用の命令記述例  （従来技術）
【図１０】第１実施例の場合の演算命令の記述例１
【図１１】第１実施例の場合の演算命令の記述例２
【図１２】第２実施例の場合の演算命令の記述例１
【図１３】第２実施例の場合の演算命令の記述例２
【符号の説明】
【００１３】
1    サーボ装置
2    演算処理装置
3    命令メモリ
4    命令
5    レジスタ
6    フェッチ段
7    デコード段
・  実行段
・  ライトバック段
・  オペコード
・  変換フラグ
・  オペランド
・  フォーマット変換部
14   フォーマット変換部
15   セレクタ
16   演算器
17   フォーマット変換部
18   デコーダ
19   オペコード
20   パワー部
21   ADC
22   エンコーダIF
23   サーボモータ
・  エンコーダ
・  セレクタ
・  浮動小数点数生成部
・  整数調整部
・  符号生成部
・  指数生成部
・  仮数生成部
・  浮動小数点数符号化部
・  整数生成部
・  符号生成部
・  指数検査部
・  仮数調整部
・  整数符号化部
・  セレクタ
100  数値演算プロセッサ
101  制御レジスタ部
102  変換部
103  逆変換部
104  変換制御ビット
105  変換状態ビット
106  リミット部
107  リミット部制御ビット
108  リミットデータ
109  AND1
110  内部データバス
111  ローカルデータバス
【図１】
2010146521.tif 000003
【図２】
2010146521.tif 000004
【図３】
2010146521.tif 000005
【図４】
2010146521.tif 000006
【図５】
2010146521.tif 000007
【図６】
2010146521.tif 000008
【図７】
2010146521.tif 000009
【図８】
2010146521.tif 000010
【図９】
2010146521.tif 000011
【図１０】
2010146521.tif 000012
【図１１】
2010146521.tif 000013
【図１２】
2010146521.tif 000014
【図１３】
2010146521.tif 000015