以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の課題を解決するのに必須の構成要件であるとは限らない。
1. 情報処理装置
〔実施形態1〕
図1に、本発明に係る実施形態1における情報処理装置の原理的な構成例を示す。
実施形態1における情報処理装置10は、汎用レジスター部20と、アキュムレーター部30と、演算処理部40とを含む。
汎用レジスター部(入力レジスター部)20は、外部から設定データの読み出しと設定データの書き込みとが可能な複数の汎用レジスターRG0、・・・、RGj、・・・、RGk、・・・、RGn、・・・を有し、演算処理部40において行われる演算処理に供される入力データが設定される。汎用レジスター部20が有する複数の汎用レジスターは、演算処理部40の入力データが設定される入力レジスターの機能を有する。
アキュムレーター部(出力レジスター部)30は、演算処理部40において行われる演算処理の処理結果が格納される複数のアキュムレーターRG10、・・・、RG1x、・・・、RG2y、・・・を含む。アキュムレーター部30が有する複数のアキュムレーターは、演算処理部40の処理結果が格納される出力レジスターの機能を有する。
演算処理部40は、複数の演算処理ユニットを有する。複数の演算処理ユニットは、互いに異なる演算処理を行ってもよいし、1つの演算処理ユニットの処理内容が別の演算処理ユニットの演算処理と同じ種類の演算処理を行ってもよく、演算処理の種類によっては、互いに並列動作可能に構成されることが望ましい。演算処理部40が有する複数の演算処理ユニットを構成する各演算処理ユニットは、いわゆる算術演算、論理演算又はシフト演算を行うことが望ましい。算術演算は、加算演算、乗算演算、減算演算、除算演算、インクリメント演算、デクリメント演算のいずれかであることが望ましい。乗算演算は、固定小数点乗算演算及び浮動小数点乗算演算を含むことが望ましい。論理演算は、論理和演算、論理積演算、論理否定演算、排他的論理和演算、排他的論理和否定演算のいずれかであることが望ましい。シフト演算は、論理シフト演算、算術シフト演算、回転演算、スワップ演算のいずれかであることが望ましい。
各演算処理ユニットには、汎用レジスター部20が有する複数の汎用レジスターのうち1又は複数の汎用レジスターが割り当てられると共に、アキュムレーター部30が有する複数のアキュムレーターのうち1又は複数のアキュムレーターが割り当てられる。そして、複数の演算処理ユニットは、所与の実行サイクル毎に、演算処理ユニット毎に割り当てられた汎用レジスターに設定された入力データを用いて同時に演算処理を行い、演算処理ユニット毎に割り当てられたアキュムレーターに演算処理の処理結果を格納する。
即ち、演算処理部40は、第1の演算処理を行う第1の演算処理ユニットEXU1と、第2の演算処理を行う第2の演算処理ユニットEXU2とを少なくとも含む。第1の演算処理の処理内容は、第2の演算処理の処理内容と同じであってもよいし、異なっていてもよい。複数の汎用レジスター(入力レジスター)は、第1の演算処理ユニットEXU1に割り当てられる第1の汎用レジスター(入力レジスター)RGj、RGnと、第2の演算処理ユニットEXU2に割り当てられる第2の汎用レジスター(入力レジスター)RGkとを有する。また、複数のアキュムレーター(出力レジスター)は、第1の演算処理ユニットEXU1に割り当てられる第1のアキュムレーター(出力レジスター)RG1xと、第2の演算処理ユニットEXU2に割り当てられる第2のアキュムレーター(出力レジスター)RG2yとを有する。そして、情報処理装置10の実行サイクル毎に、第1の演算処理ユニットEXU1が、第1の汎用レジスターRGj、RGnの設定データを用いて第1の演算処理を行い、該第1の演算処理の処理結果を第1のアキュムレーターRG1xに格納すると共に、第2の演算処理ユニットEXU2が、第2の汎用レジスターRGkの設定データを用いて第2の演算処理を行い、該第2の演算処理の処理結果を第2のアキュムレーターRG2yに格納する。
ここで、第1の演算処理ユニットEXU1には、第1のアキュムレーターRG1xを含む複数のアキュムレーターが割り当てられてもよい。同様に、第2の演算処理ユニットEXU2には、第2のアキュムレーターRG2yを含む複数のアキュムレーターが割り当てられてもよい。
また、第1の演算処理ユニットEXU1及び第2の演算処理ユニットEXU2の一方には、汎用レジスター部20の汎用レジスターが割り当てられなくてもよい。この場合、第1の演算処理ユニットEXU1及び第2の演算処理ユニットEXU2の他方は、一方の演算処理の結果を用いて第2の演算処理を行うことができる。
即ち、情報処理装置10の演算処理方法として、複数の入力レジスターのうち第1の入力レジスターを第1の演算処理ユニットEXU1に割り当て、該複数の入力レジスターのうち第2の入力レジスターを第2の演算処理ユニットEXU2に割り当てると共に、複数の出力レジスターのうち第1の出力レジスターを第1の演算処理ユニットEXU1に割り当て、該複数の出力レジスターのうち第2の出力レジスターを第2の演算処理ユニットEXU2に割り当てる。そして、所与の実行サイクル毎に、第1の演算処理ユニットEXU1が、第1の入力レジスターの設定データを用いて第1の演算処理を行い、該第1の演算処理の処理結果を第1の出力レジスターに格納すると共に、第2の演算処理ユニットが、第2の入力レジスターの設定データを用いて第2の演算処理を行い、該第2の演算処理の処理結果を第2の出力レジスターに格納する。
このような情報処理装置10は、実行サイクル毎に、汎用レジスターの設定データを用いて演算処理を行った結果をアキュムレーターに格納することを繰り返すことで、演算処理を指定する命令を不要にして命令セットで規定されるビットフィールドに余裕を持たせ、極めてコード効率の高い情報処理装置を実現することが可能となる。
また、第1のアキュムレーターの格納データ又は第2のアキュムレーターの格納データは、複数の汎用レジスターのいずれかに転送可能に構成される。こうすることで、演算処理部40によって行われる演算処理結果を用いて、再び演算処理に供することができる。そのため、演算処理を指定する命令がなくても、演算処理結果を用いた分岐処理等の処理が可能となる。
また、第1の汎用レジスターが、第2の演算処理ユニットEXU2に割り当てられ、第2の演算処理ユニットEXU2が、実行サイクル毎に、第1の汎用レジスターの設定データを用いて第2の演算処理を行い、該第2の演算処理の処理結果を第2のアキュムレーターに格納するようにしてもよい。こうすることで、1つの汎用レジスターに設定されたデータを用いて複数種類の演算処理を行う場合に、一度に行うことができ、処理の高速化を図ることができる。
図2に、図1の情報処理装置10としての中央演算処理装置(Central Processing Unit:CPU)の構成例のブロック図を示す。図2において、図1と同一部分には同一符号を付し、適宜説明を省略する。
図3に、図2のCPU100が読み込むプログラムの命令データの説明図を示す。
CPU100は、汎用レジスター部20及びアキュムレーター部30を含むレジスター部50と、命令デコード部60と、バス制御部70と、プログラムカウンター(Program Counter:PC)80と、スタックポインター(Stack Pointer:SP)82と、オペコードレジスター84と、オペランドレジスター86と、制御部90とを含む。
CPU100は、外部又は内部の図示しないメモリーに格納されたプログラムを読み込み、該プログラムにより指定された処理を実行する。このプログラムは、それぞれがCPU100の処理内容を指定する、図3に示すような命令データの列である。命令データは、オペコード部とオペランド部とを有し、オペコード部が処理内容を指定する部分であり、オペランド部が、オペコード部で指定された処理の対象を指定する部分である。
プログラムカウンター80は、CPU100が現在実行するプログラムのアドレスを保持する制御レジスターであり、CPU100が処理の実行を終了する度にその内容が更新される。スタックポインター82は、スタック領域と呼ばれるデータの待避領域に最後に待避したアドレスを保持する制御レジスターであり、例えばサブルーチン処理に移行する際に現在の処理を中断し、サブルーチン処理の終了後に中断した処理を再開させるために用いられる。オペコードレジスター84は、CPU100によりフェッチされた命令データのオペコード部を保持する制御レジスターである。オペランドレジスター86は、CPU100によりフェッチされた命令データのオペランド部を保持する制御レジスターである。
命令デコード部60は、プログラムカウンター80により指定されるアドレスに記憶されるプログラムの命令データがCPU100によりフェッチされたとき、該命令データをデコードし、デコード結果を制御部90に出力する。
バス制御部70は、制御部90からの指示により、CPU100の外部又は内部に設けられたバスの調停制御を行って、アクセス制御を行う。
制御部90は、命令デコード部60からのデコード結果に基づいて、プログラムカウンター80、スタックポインター82、オペコードレジスター84、オペランドレジスター86、バス制御部70、演算処理部40及びレジスター部50を制御して、CPU100の制御を司る。
図4に、図2の汎用レジスター部20の構成例を示す。
実施形態1では、汎用レジスター部20が、16種類の汎用レジスターRG0〜RGfを有する。なお、実施形態1では、CPU100が、16種類の汎用レジスターを有するものとして説明するが、本発明は汎用レジスター数に限定されるものではなく、複数の汎用レジスターを有していればよい。また、実施形態1では、汎用レジスターのビット数が「16」であるものとして説明するが、本発明はこれに限定されるものではなく、汎用レジスターのビット数に限定されるものではない。
図4に示す各汎用レジスターは、制御部90からアクセス可能に構成されており、制御部90は、各汎用レジスターにデータを書き込んだり、各汎用レジスターからデータを読み出したりすることができるようになっている。そして、図4の汎用レジスターRG0〜RGfのいずれかは、演算処理部40が有する複数の演算処理ユニットのいずれかに予め割り当てられている。汎用レジスターRG0〜RGfのうち、演算処理部40が有する複数の演算処理ユニットのいずれにも割り当てられない汎用レジスターがあってもよいし、1つの汎用レジスターが、演算処理部40が有する複数の演算処理ユニットに割り当てられていてもよい。
図5に、図2のアキュムレーター部30の構成例を示す。
実施形態1では、アキュムレーター部30が、例えば32種類以上のアキュムレーターRG10、・・・、RG2f、・・・を有する。なお、実施形態1では、アキュムレーター数に限定されるものではなく、複数のアキュムレーターを有していればよい。また、実施形態1では、アキュムレーターのビット数が「16」であるものとして説明するが、本発明はこれに限定されるものではなく、アキュムレーターのビット数に限定されるものではない。
図5に示す各アキュムレーターは、演算処理部40が有する演算処理ユニットから書き込み可能に構成されており、制御部90は、各アキュムレーターに書き込まれたデータを読み出したり、該データを汎用レジスター部20のいずれかの汎用レジスターに転送したりできるようになっている。そして、図5のアキュムレーターのいずれかは、演算処理部40が有する複数の演算処理ユニットのいずれかに予め割り当てられている。アキュムレーターのうち、演算処理部40が有する複数の演算処理ユニットのいずれにも割り当てられないアキュムレーターがあってもよい。
演算処理部40が有する複数の演算処理ユニットを構成する各演算処理ユニットは、実行サイクル毎に、入力レジスターとして割り当てられた汎用レジスターのデータを用いて演算処理を行い、その演算処理結果を、出力レジスターとして割り当てられたアキュムレーターに格納する。
図6に、実施形態1における汎用レジスター部20、演算処理部40及びアキュムレーター部30の一構成例のブロック図を示す。図6において、図4又は図5と同一部分には同一符号を付し、適宜説明を省略する。
演算処理部40は、複数の演算処理ユニットを有し、図6では演算処理ユニット401〜4011のみを図示している。なお、図6では、演算処理部40が、11個の演算処理ユニットを含む例を説明するが、本発明が、演算処理ユニット数に限定されるものではなく、演算処理部40が複数の演算処理ユニットを有していればよい。
演算処理ユニット401は、加算演算処理を行う。演算処理ユニット401には、汎用レジスターRG0、RG1と、アキュムレーターRG10、RG20とが割り当てられる。そして、実行サイクル毎に、演算処理ユニット402〜4011と並列に、演算処理ユニット401は、汎用レジスターRG0の入力データと汎用レジスターRG1の入力データとの加算演算を行い、加算演算結果を、アキュムレーターRG10、RG20に格納する。ここで、アキュムレーターRG10には、加算演算結果の下位ビット側が格納され、アキュムレーターRG20には、キャリービットが格納される。
演算処理ユニット402もまた、加算演算処理を行う。ただ、演算処理ユニット402は、演算処理ユニット401とは別の汎用レジスターが入力レジスターとして割り当てられている。即ち、演算処理ユニット402には、汎用レジスターRG2、RG3と、アキュムレーターRG12、RG22とが割り当てられる。そして、実行サイクル毎に、演算処理ユニット401、403〜4011と並列に、演算処理ユニット402は、汎用レジスターRG2の入力データと汎用レジスターRG3の入力データとの加算演算を行い、加算演算結果を、アキュムレーターRG12、RG22に格納する。ここで、アキュムレーターRG12には、加算演算結果の下位ビット側が格納され、アキュムレーターRG22には、キャリービットが格納される。
演算処理ユニット403は、乗算演算処理を行う。演算処理ユニット403には、汎用レジスターRG4、RG5と、アキュムレーターRG14、RG24とが割り当てられる。そして、実行サイクル毎に、演算処理ユニット401〜402、404〜4011と並列に、演算処理ユニット403は、汎用レジスターRG4の入力データと汎用レジスターRG5の入力データとの乗算演算を行い、乗算演算結果を、アキュムレーターRG14、RG24に格納する。
演算処理ユニット404もまた、乗算演算処理を行う。演算処理ユニット404には、汎用レジスターRG6、RG7と、アキュムレーターRG16、RG26とが割り当てられる。そして、実行サイクル毎に、演算処理ユニット401〜403、405〜4011と並列に、演算処理ユニット404は、汎用レジスターRG6の入力データと汎用レジスターRG7の入力データとの乗算演算を行い、乗算演算結果を、アキュムレーターRG16、RG26に格納する。
演算処理ユニット405は、減算演算処理を行う。演算処理ユニット405には、汎用レジスターRG8、RG9と、アキュムレーターRG18とが割り当てられる。そして、実行サイクル毎に、演算処理ユニット401〜404、406〜4011と並列に、演算処理ユニット405は、汎用レジスターRG9の入力データから汎用レジスターRG8の入力データを減算する減算演算を行い、減算演算結果を、アキュムレーターRG18に格納する。
演算処理ユニット406は、デクリメント演算処理を行う。演算処理ユニット406には、汎用レジスターRGaと、アキュムレーターRG1aとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット401〜405、407〜4011と並列に、演算処理ユニット406は、汎用レジスターRGaの入力データから1を減算したデクリメント演算を行い、デクリメント演算結果をアキュムレーターRG1aに格納する。
演算処理ユニット407は、インクリメント演算処理を行う。演算処理ユニット407には、汎用レジスターRGbと、アキュムレーターRG1bとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット401〜406、408〜4011と並列に、演算処理ユニット407は、汎用レジスターRGbの入力データに1を加算したインクリメント演算を行い、インクリメント演算結果をアキュムレーターRG1bに格納する。
演算処理ユニット408は、論理積演算処理を行う。演算処理ユニット408には、汎用レジスターRGc、RGdと、アキュムレーターRG1cとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット401〜407、409〜4011と並列に、演算処理ユニット408は、汎用レジスターRGcの入力データと汎用レジスターRGdの入力データとの論理積演算を行い、論理積演算結果をアキュムレーターRG1cに格納する。
演算処理ユニット409は、左方向の論理シフト演算処理を行う。演算処理ユニット409には、汎用レジスターRGcと、アキュムレーターRG2cとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット401〜408、4010〜4011と並列に、演算処理ユニット409は、汎用レジスターRGcの入力データを左方向にシフトしたシフト演算を行い、シフト演算結果をアキュムレーターRG2cに格納する。
演算処理ユニット4010は、論理和演算処理を行う。演算処理ユニット4010には、汎用レジスターRGe、RGfと、アキュムレーターRG1eとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット401〜409、4011と並列に、演算処理ユニット4010は、汎用レジスターRGeの入力データと汎用レジスターRGfの入力データとの論理積演算を行い、論理積演算結果をアキュムレーターRG1eに格納する。
演算処理ユニット4011は、右方向の論理シフト演算処理を行う。演算処理ユニット4011には、汎用レジスターRGeと、アキュムレーターRG2eとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット401〜4010と並列に、演算処理ユニット4011は、汎用レジスターRGeの入力データを右方向にシフトしたシフト演算を行い、シフト演算結果をアキュムレーターRG2eに格納する。
図6に示す演算処理部40の演算処理ユニット401〜4011のそれぞれは、実行サイクル毎に、対応するアキュムレーターの値を更新する。即ち、命令デコード部60のデコード結果にかかわらず、演算処理ユニット401〜4011は、それぞれ実行サイクル毎に、各演算処理を行う。従って、実行サイクル前に、割り当てられた汎用レジスターの入力データが書き換えられたとき、実行サイクル後に、対応するアキュムレーターに格納されるデータが変化することになる。
また、実施形態1では、演算処理部40において、演算処理ユニット403、404の少なくとも一方に対応して、処理ユニットを設けて、同一の汎用レジスターの設定データに対する乗算演算処理の結果を、互いに異なる複数のフォーマットのデータとして、対応するアキュムレーターに格納することができるようになっている。
以下では、固定小数点フォーマットのデータと浮動小数点フォーマットのデータとを、対応するアキュムレーターに格納する例について説明するが、本発明はこれに限定されるものではない。なお、以下では、固定小数点フォーマットのデータとは、数値の整数部と小数部を符号ビットと共に固定長で表現するものをいうものとする。また、浮動小数点フォーマットのデータとは、数値を符号ビットと共に指数部と仮数部とにより表現するものをいうものとする。
図7に、図6の構成要部の構成例のブロック図を示す。図7において、図6と同一部分には同一符号を付し、適宜説明を省略する。
この場合、演算処理ユニット403は、固定小数点乗算演算を行う固定小数点乗算ユニットであり、演算処理ユニット403に対応して、浮動小数点出力フォーマット変換部421が設けられている。また、演算処理ユニット404は、浮動小数点乗算演算を行う浮動小数点乗算ユニットであり、演算処理ユニット404に対応して、固定小数点出力フォーマット変換部422が設けられている。
即ち、演算処理部40は、第1の処理ユニット2001と、第2の処理ユニット2002とを含む。更に、演算処理部40は、第3の処理ユニット2003と、第4の処理ユニット2004とを含むことができる。
第1の処理ユニット2001には、汎用レジスターRG4、RG5(第1の入力レジスター、第2の入力レジスター)と、アキュムレーターRG14、RG24(第1の出力レジスター)とが割り当てられる。実施形態1では、汎用レジスターRG4、RG5のビット数は同じである。アキュムレーターRG14、RG24のそれぞれは、汎用レジスターRG4、RG5のビット数と同じであり、2つのアキュムレーターにより第1の出力レジスターを構成する。第1の処理ユニット2001は、固定小数点乗算ユニット(第1の固定小数点乗算ユニット)である演算処理ユニット403を含み、汎用レジスターRG4に設定された第1の設定データと汎用レジスターRG5に設定された第2の設定データとを用いた乗算処理の結果を、固定小数点フォーマットの第1の乗算データとして出力する。
第2の処理ユニット2002には、汎用レジスターRG4、RG5と、アキュムレーターRG34、RG44(第2の出力レジスター)とが割り当てられる。実施形態1では、アキュムレーターRG34、RG44のそれぞれは、汎用レジスターRG4、RG5のビット数と同じであり、2つのアキュムレーターにより第2の出力レジスターを構成する。第2の処理ユニット2002は、汎用レジスターRG4に設定された第1の設定データと汎用レジスターRG5に設定された第2の設定データとを用いた乗算処理の結果を、浮動小数点フォーマットの第2の乗算データとして出力する。そのため、第2の処理ユニット2002は、浮動小数点出力フォーマット変換部421を含み、演算処理ユニット403からの第1の乗算データを、浮動小数点フォーマットの第2の乗算データに変換する。
図8に、図7の浮動小数点出力フォーマット変換部421の構成例のブロック図を示す。なお、浮動小数点出力フォーマット変換部421の構成は、図8に示すものに限定されるものではない。
浮動小数点出力フォーマット変換部421は、絶対値化回路210と、ビットサーチ回路212と、シフト回路214と、丸め回路216とを含むことができる。絶対値化回路210には、固定小数点フォーマットの入力データfaが入力され、入力データfaを絶対値化して、符号を確定させる。ビットサーチ回路212は、例えば絶対値化されたデータのビット列の最上位ビット側から「1」のビットをサーチする。シフト回路214は、ビットサーチ回路212によりサーチされた「1」のビットがMSB(Most Significant Bit)となるように、絶対値化回路210により絶対値化されたデータをシフトして正規化する。丸め回路216は、桁の丸め等を行って、浮動小数点フォーマットの指数部に対応する指数部データeaと仮数部に対応する仮数部データmaとからなる第2の乗算データを出力する。
そして、演算処理部40では、所与の実行サイクル毎に、第1の処理ユニット2001が、第1の乗算データをアキュムレーターRG14、RG24に格納すると共に、第2の処理ユニット2002が、第2の乗算データをアキュムレーターRG34、RG44に格納する。
図9に、第1の処理ユニット2001の動作説明図を示す。
図10に、第2の処理ユニット2002の動作説明図を示す。
実施形態1において、固定小数点フォーマットは、例えば符号ビットSとデータ部Dとからなり、第1の処理ユニット2001は、この固定小数点フォーマットの第1の乗算データを出力する。そして、図9に示すように、第1の処理ユニット2001は、固定小数点フォーマットの第1の乗算データを、例えば、符号ビットSを含む上位側と下位側とに分割して、第1の出力レジスターとして構成されるアキュムレーターRG14、RG24に格納する。
同様に、実施形態1において、浮動小数点フォーマットは、例えば符号ビットSと指数部Eと仮数部Mとからなり、第2の処理ユニット2002は、この浮動小数点フォーマットの第2の乗算データを出力する。そして、図10に示すように、第2の処理ユニット2002は、浮動小数点フォーマットの第2の乗算データを、例えば、符号ビットS、指数部E及び仮数部Mの一部を含む部分とその残りの部分とに分割し、第2の出力レジスターとして構成されるアキュムレーターRG34、RG44に、第1の処理ユニット2001による格納タイミングに同期して格納する。
これにより、汎用レジスターRG4、RG5に、固定小数点フォーマットの設定データを設定することで、汎用レジスターRG4、RG5の設定データに対する乗算処理結果を、2種類の固定小数点フォーマットの出力データと浮動小数点フォーマットの出力データとして同時にアキュムレーターに格納することができるようになる。従って、アルゴリズムが複雑で、演算処理の結果に基づく分岐が複雑である場合や、固定小数点フォーマットのデータと浮動小数点フォーマットのデータの両方が必要な場合に、シーケンシャルに処理する必要がなくなり、スループットを向上させ、且つ、命令セットの効率を高めることができるようになる。
更に、例えば、汎用レジスターRG4、RG5の一方に、数値「1」を固定小数点フォーマットで表現した即値を設定し、汎用レジスターRG4、RG5の他方に、固定小数点フォーマットの即値VALを設定することで、次の実行サイクル後には、アキュムレーターRG34、RG44には、即値VALを浮動小数点フォーマットで表現したデータが格納される。これにより、浮動小数点フォーマットの変換処理を実現できる。
また、第3の処理ユニット2003には、汎用レジスターRG6、RG7(第3の入力レジスター、第4の入力レジスター)と、アキュムレーターRG16、RG26(第3の出力レジスター)とが割り当てられる。実施形態1では、汎用レジスターRG6、RG7のビット数は同じであり、アキュムレーターRG16、RG26のそれぞれは、汎用レジスターRG6、RG7のビット数と同じであり、2つのアキュムレーターにより第3の出力レジスターを構成する。第3の処理ユニット2003は、汎用レジスターRG6に設定された第4の設定データと汎用レジスターRG7に設定された第4の設定データとを用いた乗算処理の結果を、固定小数点フォーマットの第3の乗算データとして出力する。
第4の処理ユニット2004は、第1の処理ユニット2001と並列動作可能に設けられる。この第4の処理ユニット2004には、汎用レジスターRG6、RG7と、アキュムレーターRG36、RG46(第4の出力レジスター)とが割り当てられる。実施形態1では、アキュムレーターRG36、RG46のそれぞれは、汎用レジスターRG6、RG7のビット数と同じであり、2つのアキュムレーターにより第4の出力レジスターを構成する。第4の処理ユニット2004は、浮動小数点乗算ユニット(第1の浮動小数点乗算ユニット)である演算処理ユニット404を含み、汎用レジスターRG6に設定された第3の設定データと汎用レジスターRG7に設定された第4の設定データとを用いた乗算処理の結果を、浮動小数点フォーマットの第4の乗算データとして出力する。
ここで、第3の処理ユニット2003は、固定小数点出力フォーマット変換部422を含み、演算処理ユニット404からの第4の乗算データを、固定小数点フォーマットの第3の乗算データに変換する。
図11に、図7の固定小数点出力フォーマット変換部422の構成例のブロック図を示す。なお、固定小数点出力フォーマット変換部422の構成は、図11に示すものに限定されるものではない。
固定小数点出力フォーマット変換部422は、シフト回路220と、符号生成回路222と、丸め回路224とを含むことができる。シフト回路220には、浮動小数点フォーマットの入力データの指数部データea1と仮数部データma1とが入力され、指数部データea1に対応したシフト量だけ、指数部データea1により特定される符号に対応したシフト方向に仮数部データma1をシフトする。丸め回路224は、このシフト回路220によってシフトされたデータに対して丸めを行って、第3の乗算データとして出力する。
そして、演算処理部40では、所与の実行サイクル毎に、第1の処理ユニット2001及び第2の処理ユニット2002の格納タイミングに同期して、第3の処理ユニット2003が、第3の乗算データをアキュムレーターRG16、RG26に格納すると共に、第4の処理ユニット2004が、第4の乗算データをアキュムレーターRG36、RG46に格納する。このとき、第3の処理ユニット2003は、固定小数点フォーマットの第3の乗算データを、例えば、符号ビットを含む上位側と下位側とに分割して、第3の出力レジスターとして構成されるアキュムレーターRG16、RG26に格納する。また、第4の処理ユニット2004は、浮動小数点フォーマットの第4の乗算データを、例えば、符号ビット、指数部及び仮数部の一部を含む部分とその残りの部分とに分割して、第4の出力レジスターとして構成されるアキュムレーターRG36、RG46に、第1の処理ユニット2001による格納タイミングに同期して格納する。
これにより、汎用レジスターRG6、RG7に、浮動小数点フォーマットの設定データを設定することで、汎用レジスターRG6、RG7の設定データに対する乗算処理結果を、2種類の固定小数点フォーマットの出力データと浮動小数点フォーマットの出力データとして同時にアキュムレーターに格納することができるようになる。また、固定小数点フォーマットの設定データに対して乗算処理を行う第1の処理ユニット2001及び第2の処理ユニット2002と並列に、浮動小数点フォーマットの設定データにして乗算処理を行って、同時に複数種類のフォーマットの乗算結果が得られるようになる。これにより、複雑な乗算処理においても、シーケンシャルにフォーマット変換を行うことなく、高速な乗算処理が可能となる。
更に、例えば、汎用レジスターRG6、RG7の一方に、数値「1」を浮動小数点フォーマットで表現した即値を設定し、汎用レジスターRG6、RG7の他方に、浮動小数点フォーマットの即値VALを設定することで、次の実行サイクル後には、アキュムレーターRG16、RG26には、即値VALを固定小数点フォーマットで表現したデータが格納される。これにより、固定小数点フォーマットの変換処理を実現できる。
図12に、図7の演算処理部40の動作例のフロー図を示す。
演算処理部40において、処理ステップとして、第1の処理ユニット2001が、汎用レジスターRG4に設定された第1の設定データ(固定小数点フォーマット)と汎用レジスターRG5に設定された第2の設定データ(固定小数点フォーマット)とを用いた乗算処理の結果を、固定小数点フォーマットの第1の乗算データとして出力すると共に、第2の処理ユニット2002が、汎用レジスターRG4に設定された第1の設定データと汎用レジスターRG5に設定された第2の設定データとを用いた乗算処理の結果を、浮動小数点フォーマットの第2の乗算データとして出力する(ステップS10)。
なお、この処理ステップでは、更に、第3の処理ユニット2003が、汎用レジスターRG6に設定された第3の設定データ(浮動小数点フォーマット)と汎用レジスターRG7に設定された第4の設定データ(浮動小数点フォーマット)とを用いた乗算処理の結果を、固定小数点フォーマットの第3の乗算データとして出力すると共に、第4の処理ユニット2004が、汎用レジスターRG6に設定された第3の設定データと汎用レジスターRG7に設定された第4の設定データとを用いた乗算処理の結果を、浮動小数点フォーマットの第4の乗算データとして出力する(ステップS10)。
そして、演算処理部40において、格納ステップとして、第1の処理ユニット2001が第1の乗算データをアキュムレーターRG14、RG24(第1の出力レジスター)に格納すると共に、第2の処理ユニット2002が第2の乗算データをアキュムレーターRG34、RG44(第2の出力レジスター)に格納する(ステップS12)。
なお、この格納ステップでは、更に、第3の処理ユニット2003が第3の乗算データをアキュムレーターRG16、RG26(第3の出力レジスター)に格納すると共に、第4の処理ユニット2004が第4の乗算データをアキュムレーターRG36、RG46(第4の出力レジスター)に格納し(ステップS12)、一連の処理を終了する(エンド)。
図13(A)、図13(B)に、図2のCPU100の動作例の説明図を示す。図13(A)は、CPU100のプログラムの一例を表す。ここで、CPU100は、図7に示す構成を有しているものとする。図13(A)において、命令LDIは、指定された即値を汎用レジスターに転送する転送命令である。図13(B)は、CPU100の動作例のタイミング図を表す。なお、図13(B)は、演算による遅延を無視し、各汎用レジスターと各アキュムレーターの状態を模式的に表す。
例えば図13(A)に示すように、固定小数点フォーマットの設定データを分割して即値(VAL1、VAL2)として汎用レジスターRG4、RG5に転送し、浮動小数点フォーマットの設定データを分割して即値(VAL3、VAL4)として汎用レジスターRG6、RG7に転送したときの第1〜第4の処理ユニット2001〜2004による処理例を考える。このデータ転送命令列の直前において、汎用レジスターRG4、RG5、RG6、RG7、アキュムレーターRG14、RG24、RG34、RG44、RG16、RG26、RG36、RG46が初期化され、各汎用レジスター及び各アキュムレーターのデータが「0」であるものとする。
まず、実行サイクルT1において、汎用レジスターRG4に即値VAL1が設定される。これにより、実行サイクルT1では、第1の処理ユニット2001は、汎用レジスターRG4に設定されたVAL1と汎用レジスターRG5に設定された「0」とを乗算した乗算演算結果「0」を、固定小数点フォーマットのデータとしてアキュムレーターRG14、RG24に設定する。同様に、第2の処理ユニット2002は、汎用レジスターRG4に設定されたVAL1と汎用レジスターRG5に設定された「0」とを乗算した乗算演算結果「0」を、浮動小数点フォーマットのデータとしてアキュムレーターRG34、RG44に設定する。一方、第3の処理ユニット2003及び第4の処理ユニット2004の処理対象となる汎用レジスターRG6、RG7の設定データは更新されないため、アキュムレーターRG16、RG26、RG36、RG46のデータは、そのままである。
次に、実行サイクルT2において、汎用レジスターRG5に即値VAL2が設定される。これにより、実行サイクルT2では、第1の処理ユニット2001は、汎用レジスターRG4に設定されたVAL1と汎用レジスターRG5に設定されたVAL2とを乗算した乗算演算結果を、固定小数点フォーマットのデータとして分割して、アキュムレーターRG14にRES1int、アキュムレーターRG24にRES2intを設定する。同様に、第2の処理ユニット2002は、汎用レジスターRG4に設定されたVAL1と汎用レジスターRG5に設定されたVAL2とを乗算した乗算演算結果を、浮動小数点フォーマットのデータとして分割して、アキュムレーターRG34にRES3float、アキュムレーターRG44にRES4floatを設定する。一方、第3の処理ユニット2003及び第4の処理ユニット2004の処理対象となる汎用レジスターRG6、RG7の設定データは更新されないため、アキュムレーターRG16、RG26、RG36、RG46のデータは、そのままである。
続いて、実行サイクルT3において、汎用レジスターRG6に即値VAL3が設定される。これにより、実行サイクルT3では、第3の処理ユニット2003は、汎用レジスターRG6に設定されたVAL3と汎用レジスターRG7に設定された「0」とを乗算した乗算演算結果「0」を、固定小数点フォーマットのデータとしてアキュムレーターRG16、RG26に設定する。同様に、第4の処理ユニット2004は、汎用レジスターRG6に設定されたVAL3と汎用レジスターRG7に設定された「0」とを乗算した乗算演算結果「0」を、浮動小数点フォーマットのデータとしてアキュムレーターRG36、RG46に設定する。一方、第1の処理ユニット2001及び第2の処理ユニット2002の処理対象となる汎用レジスターRG4、RG5の設定データは更新されないため、アキュムレーターRG14、RG24、RG34、RG44のデータは、そのままである。
次に、実行サイクルT4において、汎用レジスターRG7に即値VAL4が設定される。これにより、実行サイクルT4では、第3の処理ユニット2003は、汎用レジスターRG6に設定されたVAL3と汎用レジスターRG7に設定されたVAL4とを乗算した乗算演算結果を、固定小数点フォーマットのデータとして分割して、アキュムレーターRG16にRES5int、アキュムレーターRG26にRES6intを設定する。同様に、第4の処理ユニット2004は、汎用レジスターRG6に設定されたVAL3と汎用レジスターRG7に設定されたVAL4とを乗算した乗算演算結果を、浮動小数点フォーマットのデータとして分割して、アキュムレーターRG36にRES7float、アキュムレーターRG46にRES8floatを設定する。一方、第1の処理ユニット2001及び第2の処理ユニット2002の処理対象となる汎用レジスターRG4、RG5の設定データは更新されないため、アキュムレーターRG14、RG24、RG34、RG44のデータは、そのままである。
このように、実施形態1においては、汎用レジスターにデータを設定することで、次々にアキュムレーターに格納されるデータが更新される。
図14に、図6及び図7の演算処理部40の動作説明図を示す。
図14に示すように、共通の汎用レジスターの設定データに対して、互いに異なる演算処理を同時に行うことができ、同じ汎用レジスターの設定データに対する複数種類の演算処理結果を同時に得られることができるようになる。従って、所望の演算処理ユニットに割り当てられた汎用レジスターにデータを設定して、当該演算処理ユニットに割り当てられたアキュムレーターから演算処理結果を読み出すことで、演算命令を指定する必要がなくなり、コード効率を向上させることができる。しかも、実施形態1では、同じ汎用レジスターの設定データに対して、固定小数点フォーマットの乗算結果と浮動小数点フォーマットの乗算結果とを同時に得ることができるので、煩雑なフォーマット変換を指定する命令を不要にできる。
従って、実施形態1によれば、コードの難読性を高めて、逆アセンブルを困難にして安全性の高いコードを生成することができ、リバースエンジニアリング防止やセキュリティーの向上に寄与できる効果が得られることを意味する。
このように、実施形態1によれば、プログラムの命令列に乗算命令を含まなくても、入力レジスターとして割り当てられた汎用レジスターにデータを設定するだけで、実行サイクル毎に、異なるフォーマットの乗算結果を得ることができるようになる。即ち、CPU100は、演算処理部40が有する演算処理ユニットが行う演算処理に対応する算術演算命令、論理演算命令及びシフト演算命令をオペコードに持つ必要がなくなり、少ないビットフィールドを他の命令に割り当てることができ、極めてコード効率を高くすることができるようになる。
図15に、実施形態1におけるCPU100の命令セットの一例の説明図を示す。図15は、ニーモニック毎に、16ビットのオペコードと、処理内容の説明を表す。
図15は、CPU100の命令セットを表しており、CPU100が実行可能な全命令を列挙したものである。即ち、CPU100の命令セットは、データ転送命令群150と、条件分岐命令群(より具体的には、無条件分岐命令群160と条件分岐命令群170)からなり、演算処理部40において行われる算術演算命令、論理演算命令及びシフト演算命令が省略されている。
ここで、データ転送命令群150は、レジスター間転送命令と、レジスター・メモリー間転送命令とを有する。
レジスター間転送命令は、LDR命令からなる。LDR命令は、オペコード部で転送元として指定された転送元レジスターから、該オペコード部で転送先として指定された転送先レジスターへの転送を指示する命令である。レジスター・メモリー間転送命令は、LDI命令、LDM命令、STM命令、LDU命令、STU命令からなる。LDI命令は、オペコード部で指定された即値を、該オペコード部で指定された転送先レジスターへの転送を指示する命令である。LDM命令は、オペコード部で指定された転送元のメモリー上のアドレスに格納されたデータを、該オペコード部で指定された転送先レジスターへの転送を指示する命令である。STM命令は、オペコード部で指定された転送元レジスターに設定されたデータを、該オペコード部で指定された転送先のメモリー上のアドレスへの転送を指示する命令である。LDU命令は、オペコード部で指定された転送元レジスターの値をアドレスとしてメモリーから読み出し、該オペコード部で指定された転送先レジスターへの転送を指示する命令である。STU命令は、オペコード部で指定された転送元レジスターに設定されたデータを、転送先レジスターの値をアドレスとしたメモリーの記憶領域への転送を指示する命令である。
無条件分岐命令群160は、JP命令、JS命令、JPO命令、JSO命令、JPR命令、JSR命令、RTS命令、及びNOP命令からなる。JP命令は、オペコード部で指定された分岐先絶対アドレスに分岐を指示する命令である。JS命令は、サブルーチン分岐命令であり、オペコード部で指定されたサブルーチン分岐先絶対アドレスにサブルーチン分岐する命令である。JPO命令は、例えば現在の実行アドレスを基準に、オペコード部で指定される相対ジャンプ先アドレスだけ進んだ分岐先アドレス又は相対ジャンプ先アドレスだけ戻った分岐先アドレスへの分岐を指示する命令である。JPR命令は、オペコード部で指定されるレジスターに格納される値を分岐先アドレスとして分岐を指示する命令である。JSR命令は、オペコード部で指定されるレジスターに格納される値を相対値として、例えば現在の実行アドレスを基準に、該相対値だけ進んだ分岐先アドレス又は該相対値だけ戻った分岐先アドレスへの分岐を指示する命令である。RTS命令は、サブルーチン復帰命令である。NOP命令は、何も命令を実行しないことを指示する命令である。
条件分岐命令群170は、EQR命令、EQI命令、NER命令、NEI命令、GTR命令、GTI命令、LTR命令、及びLTI命令からなる。
EQR命令は、オペコード部で指定された基準レジスターに格納された値と該オペコード部で指定された比較レジスターに格納された値とが一致したときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。EQI命令は、オペコード部で指定された基準レジスターに格納された値と該オペコード部で指定された即値とが一致したときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。
NER命令は、オペコード部で指定された基準レジスターに格納された値と該オペコード部で指定された比較レジスターに格納された値とが不一致のときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。NEI命令は、オペコード部で指定された基準レジスターに格納された値と該オペコード部で指定された即値とが不一致のときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。
GTR命令は、オペコード部で指定された基準レジスターに格納された値が該オペコード部で指定された比較レジスターに格納された値より大きいときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。GTI命令は、オペコード部で指定された基準レジスターに格納された値が該オペコード部で指定された即値より大きいときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。
LTR命令は、オペコード部で指定された基準レジスターに格納された値が該オペコード部で指定された比較レジスターに格納された値より小さいときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。LTI命令は、オペコード部で指定された基準レジスターに格納された値が該オペコード部で指定された即値より小さいときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。
このように実施形態1では、CPU100の命令セットにおいて、データ転送命令群150と、無条件分岐命令群160と、条件分岐命令群170のみが規定されている。しかしながら、上記のような演算処理部40を備えることにより、所与の実行サイクル毎に、算術演算結果、論理演算結果及びシフト演算結果を得ることができる。即ち、CPU100の命令デコード部60は、算術演算命令、論理演算命令及びシフト演算命令を除く、データ転送命令、及び分岐命令(無条件分岐命令、条件分岐命令)をデコードする。しかも、命令デコード部60のデコード結果にかかわらず、演算処理部40が有する複数の演算処理ユニットは、実行サイクル毎に、各演算処理ユニットの処理結果を、対応するアキュムレーターに格納する。これにより、命令デコード部60が簡素化されると共に、算術演算命令、論理演算命令及びシフト演算命令をオペコードに持つ必要がなくなり、少ないビットフィールドを他の命令に割り当てることができ、極めてコード効率を高くすることができるようになる。
また、算術演算命令、論理演算命令及びシフト演算命令をオペコードに持つ必要がなくなるため、CPU100を実行するプログラムのコードは、従来のコードと比較して、コードの難読性を高めて、逆アセンブルを困難にして安全性の高いコードを生成することができる。この結果、リバースエンジニアリング防止やセキュリティーの向上に寄与できるようになる。
〔実施形態2〕
なお、本発明に係るCPUは、図7に示す構成に限定されるものではなく、第2の処理ユニット2002及び第3の処理ユニット2003の少なくとも一方が、乗算ユニットを含む構成であってもよい。以下では、第2の処理ユニット2002が、浮動小数点乗算ユニットを含み、第3の処理ユニット2003が、固定小数点乗算ユニットを含む例について説明する。
図16に、本発明に係る実施形態2における汎用レジスター部20、演算処理部40及びアキュムレーター部30の構成例のブロック図を示す。図16において、図7と同一部分には同一符号を付し、適宜説明を省略する。
図16に示す構成が図7に示す構成と異なる点は、第2の処理ユニット2002が、浮動小数点出力フォーマット変換部421に代えて浮動小数点乗算演算を行う浮動小数点乗算ユニット250(第2の浮動小数点乗算ユニット)を含み、第3の処理ユニット2003が、固定小数点出力フォーマット変換部422に代えて固定小数点乗算演算を行う固定小数点乗算ユニット260(第3の固定小数点乗算ユニット)を含む点である。実施形態2における情報処理装置におけるその他の構成については、実施形態1と共通であるため、図示及び説明を省略する。
浮動小数点乗算ユニット250は、演算処理ユニット403と並列動作可能に設けられ、汎用レジスターRG4に設定された第1の設定データと汎用レジスターRG5に設定された第2の設定データとを用いた浮動小数点乗算処理を行い、第2の乗算データとして出力する。固定小数点乗算ユニット260は、演算処理ユニット404と並列動作可能に設けられ、汎用レジスターRG6に設定された第3の設定データと汎用レジスターRG7に設定された第4の設定データとを用いた固定小数点乗算処理を行い、第4の乗算データとして出力する。
図17に、図16の第2の処理ユニットの構成例のブロック図を示す。図17において、図16と同一部分には同一符号を付し、適宜説明を省略する。
実施形態2における第2の処理ユニット2002は、第1の浮動小数点入力フォーマット変換部252と、第2の浮動小数点入力フォーマット変換部254と、浮動小数点乗算ユニット250とを含む。第1の浮動小数点入力フォーマット変換部252は、汎用レジスターRG4に設定された固定小数点フォーマットの第1の設定データを、浮動小数点フォーマットの第1の入力データに変換する。第2の浮動小数点入力フォーマット変換部254は、汎用レジスターRG5に設定された固定小数点フォーマットの第2の設定データを、浮動小数点フォーマットの第2の入力データに変換する。浮動小数点乗算ユニット250は、第1の入力データと第2の入力データとを用いた浮動小数点乗算処理を行い、浮動小数点フォーマットの第2の乗算データを出力し、アキュムレーターRG34、RG44に格納する。
図18に、図16の第3の処理ユニットの構成例のブロック図を示す。図18において、図16と同一部分には同一符号を付し、適宜説明を省略する。
実施形態2における第3の処理ユニット2003は、第1の固定小数点入力フォーマット変換部262と、第2の固定小数点入力フォーマット変換部264と、固定小数点乗算ユニット260とを含む。第1の固定小数点入力フォーマット変換部262は、汎用レジスターRG6に設定された浮動小数点フォーマットの第3の設定データを、固定小数点フォーマットの第3の入力データに変換する。第2の固定小数点入力フォーマット変換部264は、汎用レジスターRG7に設定された浮動小数点フォーマットの第4の設定データを、固定小数点フォーマットの第4の入力データに変換する。固定小数点乗算ユニット260は、第3の入力データと第4の入力データとを用いた固定小数点乗算処理を行い、固定小数点フォーマットの第3の乗算データを出力し、アキュムレーターRG16、RG26に格納する。
以上説明したように、実施形態2においても、共通の汎用レジスターの設定データに対して、互いに異なる演算処理を同時に行うことができ、同じ汎用レジスターの設定データに対する複数種類の演算処理結果を同時に得られることができるようになる。しかも、同じ汎用レジスターの設定データに対して、固定小数点フォーマットの乗算結果と浮動小数点フォーマットの乗算結果とを同時に得ることができるので、コード効率を向上させることができ、上記の乗算処理を指定する命令を不要にできる。
更に、実施形態2においても、実施形態1と同様に、プログラムの命令列に乗算命令を含まなくても、入力レジスターとして割り当てられた汎用レジスターにデータを設定するだけで、実行サイクル毎に、異なるフォーマットの乗算結果を得ることができるようになる。即ち、CPU100は、演算処理部40が有する演算処理ユニットが行う演算処理に対応する算術演算命令、論理演算命令及びシフト演算命令をオペコードに持つ必要がなくなり、少ないビットフィールドを他の命令に割り当てることができ、極めてコード効率を高くすることができるようになる。
〔応用例〕
上記の実施形態1又は実施形態2におけるCPUは、同一の設定データに対して互いに異なる2種類のフォーマットの乗算結果を同時に出力できるため、次のような応用例に適用した場合に、極めて高いコード効率で、高いスループットを実現できる。
図19に、実施形態1又は実施形態2におけるCPUが適用される第1の応用例の説明図を示す。
第1の応用例では、画面内の「白とび」や「黒つぶれ」を防ぐために、輝度信号が上限に近い領域(白付近)、下限に近い領域(黒領域)の画像信号に対して画像処理を行うものとする。図19は、縦軸にフィルター処理等の乗算演算結果、横軸に画面のx座標を表す。
この場合、閾値L1以上の輝度を有する画像信号、又は閾値L2以下の輝度を有する画像信号に対して、所与の画像処理を施す。このとき、この画像処理の結果、同じ設定データにして固定小数点フォーマットの乗算結果と、浮動小数点フォーマットの乗算結果とが得られる。
ここで、固定小数点フォーマットの乗算結果を画像処理の正確な数値として扱い、この数値のおおよその大きさを浮動小数点フォーマットの乗算結果の指数部より判断する。そして、この指数部をテーブルのキーとして参照し、テーブルから参照された値を用いて「白とび」又は「黒つぶれ」を防ぐ画像処理を施すことができる。
この第1の応用例では、同じ設定データに対して、固定小数点フォーマットの乗算結果と浮動小数点フォーマットの乗算結果とを同時に得られるので、固定小数点フォーマットの乗算結果を正確な演算結果として扱い、浮動小数点フォーマットの乗算結果を正確な演算結果のレンジの判別として扱う。こうすることで、不要なフォーマット変換を行うことなく、上記の画像処理のスループットを向上させることが可能となる。
図20に、実施形態1又は実施形態2におけるCPUが適用される第2の応用例の説明図を示す。
第2の応用例では、確率過程(マルコフモデル)の計算等、乗算演算を繰り返すモデルの計算を行うものとする。図20は、横軸に時間軸をとり、状態遷移の様子を表し、例えば時刻t=0における状態「1」から時刻t=1における状態「1」への状態遷移は、確率P0であり、時刻t=0における状態「1」から時刻t=1における状態「2」への状態遷移は、確率(1−P0)であることを示す。従って、時刻t=0における状態「1」から時刻t=2における状態「3」への遷移確率は、(1−P0)×(1−P1)である。このように、各時刻における状態への遷移確率は、乗算演算を繰り返すことになる。
従って、このような確率過程の計算で対数をとって加算する処理を行う場合に比べて、実施形態1又は実施形態2では、浮動小数点乗算演算を繰り返し、最後に固定小数点フォーマットの乗算結果を取り出すようにすればよい。
この第2の応用例では、同じ設定データに対して、固定小数点フォーマットの乗算結果と浮動小数点フォーマットの乗算結果とを同時に得られるので、乗算演算を繰り返す場合では、オーバーフローを発生しない浮動小数点フォーマットの乗算結果を繰り返し、最終的な数値を固定小数点フォーマットの乗算結果から取り出す。こうすることで、不要なフォーマット変換を行うことなく、乗算演算を繰り返す処理のスループットを向上させることが可能となる。
2. 電子機器
上記のいずれかの実施形態におけるCPUは、プロジェクター等の電子機器に搭載することができる。なお、以下では上記のいずれかの実施形態における電子機器がプロジェクターである例について説明するが、上記のいずれかの実施形態におけるCPUが適用される電子機器がプロジェクターに限定されるものではなく、種々の電子機器に適用できることは言うまでもない。
図21に、本発明に係る電子機器としてのプロジェクターを含む画像表示システムの構成例のブロック図を示す。
画像表示システム300は、プロジェクター(広義には画像表示装置)310と、スクリーンSCRとを含む。プロジェクター310は、入力画像信号に基づいて図示しない光源からの光を変調し、変調後の光をスクリーンSCRに投射することで画像を表示する。
このプロジェクター310は、画像処理装置320(広義には画像処理部)と、投射装置400(広義には投射部、画像表示部)とを含む。画像処理装置320は、入力画像信号を補正し、補正後の画像信号を投射装置400に出力する。このような画像処理装置320が行う補正処理としては、例えばエッジ強調処理、ディテール強調処理や階調補正処理等がある。投射装置400は、画像処理装置320からの画像信号に基づいて変調した光をスクリーンSCRに投射する。
図22に、図21の画像処理装置320のハードウェア構成例のブロック図を示す。
画像処理装置320は、CPU322、読み出し専用メモリー(Read Only Memory:ROM)324、ランダムアクセスメモリー(Random Access Memory:RAM)326、I/O(Input/Output)回路328、バス329を有し、バス329を介して、CPU322、ROM324、RAM326、及びI/O回路328が電気的に相互に接続されている。
例えばROM324又はRAM326には、画像処理装置320の機能を実現するプログラムやデータが記憶される。このプログラムは、図15に示す命令セットで規定されたオペコード部と該オペコードに対応したオペランド部とを有する命令データ列である。ROM324又はRAM326に格納されるデータは、この命令データ列を構成する命令データにより参照される。
CPU322は、上記のいずれかの実施形態における情報処理装置としてのCPU100の構成及び機能を有する。CPU322は、ROM324又はRAM326に記憶されたプログラムを読み出し、該プログラムに対応した処理を実行することで、画像処理装置320の機能をソフトウェア処理で実現できる。なお、RAM326は、CPU322による処理の作業エリアとして用いられたり、I/O回路328やROM324のバッファエリアとして用いられたりする。
I/O回路328は、図示しない画像信号生成装置からの画像信号の入力インターフェイス処理や、画像処理装置320から投射装置400への画像信号の出力インターフェイス処理等を行う。
画像処理装置320は、図22に示す構成により、ROM324又はRAM326に格納されたプログラムを読み出し、該プログラムに対応した処理を実行することで、入力画像信号に対して例えばエッジ強調処理、ディテール強調処理や階調補正処理等を行った画像信号をソフトウェア処理で生成する。ここでは、算術演算命令、論理演算命令及びシフト演算命令がない命令データ列で算術演算処理等を実現できるため、極めて高いコード効率で、コードの難読性を高めて、安全性の高いコードで、例えばエッジ強調処理、ディテール強調処理や階調補正処理等の画像処理を行うことができるようになる。このような画像処理装置320によって処理された画像信号は、投射装置400に送られる。
図23に、図21の投射装置400の構成例の図を示す。図23では、投射装置400が、いわゆる3板式の液晶プロジェクターにより構成されるものとして説明するが、本発明に係る投射装置がいわゆる3板式の液晶プロジェクターにより構成されるものに限定されるものではない。即ち、以下では、1画素がR成分のサブ画素、G成分のサブ画素、及びB成分のサブ画素により構成されるものとして説明するが、1画素を構成するサブ画素数(色成分数)に限定されるものではない。
また、図23では、画像処理装置320から入力される輝度信号Y、色差信号U、Vが、RGBの各色成分の画像信号に変換された後、色成分毎に光源からの光を変調するものとする。この場合、RGB信号への変換回路は、画像処理装置320が備えていてもよいし、投射装置400が備えていてもよい。
投射装置400は、光源410、インテグレーターレンズ412、414、偏光変換素子416、重畳レンズ418、R用ダイクロイックミラー420R、G用ダイクロイックミラー420G、反射ミラー422、R用フィールドレンズ424R、G用フィールドレンズ424G、R用液晶パネル430R(第1の光変調素子)、G用液晶パネル430G(第2の光変調素子)、B用液晶パネル430B(第3の光変調素子)、リレー光学系440、クロスダイクロイックプリズム460、投射レンズ470を含む。R用液晶パネル430R、G用液晶パネル430G及びB用液晶パネル430Bとして用いられる液晶パネルは、透過型の液晶表示装置である。リレー光学系440は、リレーレンズ442、444、446、反射ミラー448、450を含む。
光源410は、例えば超高圧水銀ランプにより構成され、少なくともR成分の光、G成分の光、B成分の光を含む光を射出する。インテグレーターレンズ412は、光源410からの光を複数の部分光に分割するための複数の小レンズを有する。インテグレーターレンズ414は、インテグレーターレンズ412の複数の小レンズに対応する複数の小レンズを有する。重畳レンズ418は、インテグレーターレンズ412の複数の小レンズから射出される部分光を液晶パネル上で重畳する。
また偏光変換素子416は、偏光ビームスプリッターアレイとλ/2板とを有し、光源410からの光を略一種類の偏光光に変換する。偏光ビームスプリッターアレイは、インテグレーターレンズ412により分割された部分光をp偏光とs偏光に分離する偏光分離膜と、偏光分離膜からの光の向きを変える反射膜とを、交互に配列した構造を有する。偏光分離膜で分離された2種類の偏光光は、λ/2板によって偏光方向が揃えられる。この偏光変換素子416によって略一種類の偏光光に変換された光が、重畳レンズ418に照射される。
重畳レンズ418からの光は、R用ダイクロイックミラー420Rに入射される。R用ダイクロイックミラー420Rは、R成分の光を反射して、G成分及びB成分の光を透過させる機能を有する。R用ダイクロイックミラー420Rを透過した光は、G用ダイクロイックミラー420Gに照射され、R用ダイクロイックミラー420Rにより反射した光は反射ミラー422により反射されてR用フィールドレンズ424Rに導かれる。
G用ダイクロイックミラー420Gは、G成分の光を反射して、B成分の光を透過させる機能を有する。G用ダイクロイックミラー420Gを透過した光は、リレー光学系440に入射され、G用ダイクロイックミラー420Gにより反射した光はG用フィールドレンズ424Gに導かれる。
リレー光学系440では、G用ダイクロイックミラー420Gを透過したB成分の光の光路長と他のR成分及びG成分の光の光路長との違いをできるだけ小さくするために、リレーレンズ442、444、446を用いて光路長の違いを補正する。リレーレンズ442を透過した光は、反射ミラー448によりリレーレンズ444に導かれる。リレーレンズ444を透過した光は、反射ミラー450によりリレーレンズ446に導かれる。リレーレンズ446を透過した光は、B用液晶パネル430Bに照射される。
R用フィールドレンズ424Rに照射された光は、平行光に変換されてR用液晶パネル430Rに入射される。R用液晶パネル430Rは、光変調素子(光変調部)として機能し、R用画像信号に基づいて透過率(通過率、変調率)が変化するようになっている。従って、R用液晶パネル430Rに入射された光(第1の色成分の光)は、R用画像信号に基づいて変調され、変調後の光がクロスダイクロイックプリズム460に入射される。
G用フィールドレンズ424Gに照射された光は、平行光に変換されてG用液晶パネル430Gに入射される。G用液晶パネル430Gは、光変調素子(光変調部)として機能し、G用画像信号に基づいて透過率(通過率、変調率)が変化するようになっている。従って、G用液晶パネル430Gに入射された光(第2の色成分の光)は、G用画像信号に基づいて変調され、変調後の光がクロスダイクロイックプリズム460に入射される。
リレーレンズ442、444、446で平行光に変換された光が照射されるB用液晶パネル430Bは、光変調素子(光変調部)として機能し、B用画像信号に基づいて透過率(通過率、変調率)が変化するようになっている。従って、B用液晶パネル430Bに入射された光(第3の色成分の光)は、B用画像信号に基づいて変調され、変調後の光がクロスダイクロイックプリズム460に入射される。
R用液晶パネル430R、G用液晶パネル430G、B用液晶パネル430Bは、それぞれ同様の構成を有している。各液晶パネルは、電気光学物質である液晶を一対の透明なガラス基板に密閉封入したものであり、例えばポリシリコン薄膜トランジスタをスイッチング素子として、各サブ画素の画像信号に対応して各色光の通過率を変調する。
ここでは、画像処理装置320が、1画素を構成する色成分毎に、入力画像信号に対して上記の例えばエッジ強調処理、ディテール強調処理や階調補正処理等を行った画像信号を生成する。そして、投射装置400では、1画素を構成する色成分毎に光変調素子としての液晶パネルが設けられ、各液晶パネルの透過率がサブ画素に対応した画像信号により制御される。即ち、R成分のサブ画素用の画像信号が、R用液晶パネル430Rの透過率(通過率、変調率)の制御に用いられ、G成分のサブ画素用の画像信号が、G用液晶パネル430Gの透過率の制御に用いられ、B成分のサブ画素用の画像信号が、B用液晶パネル430Bの透過率の制御に用いられる。
クロスダイクロイックプリズム460は、R用液晶パネル430R、G用液晶パネル430G及びB用液晶パネル430Bからの入射光を合成した合成光を出射光として出力する機能を有する。投射レンズ470は、出力画像をスクリーンSCR上に拡大して結像させるレンズである。
この画像表示システム300では、このような構成を有する投射装置400を制御して、上記の階調補正処理等において補正された画像信号に基づいてスクリーンSCRに画像を表示することができる。
以上のように、プロジェクター310は、プログラム及びデータを記憶するメモリーと、このプログラム及びデータに対応した演算処理を行うCPU322(又はCPU322を有する画像処理装置320)とを含む。これにより、極めて高いコード効率で、複雑な演算処理を実現する一方で、リバースエンジニアリング防止やセキュリティー防止が可能なプロジェクター310又は該プロジェクター310を含む画像表示システム300を提供できるようになる。
以上、本発明に係る情報処理装置、演算処理方法及び電子機器等を上記の実施形態に基づいて説明したが、本発明は上記の実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
(1)上記の各実施形態では、浮動小数点フォーマットとしてIEEE(Institute of Electrical and Electronics Engineers)754規格の単精度又は倍精度のフォーマットを採用することができるが、本発明はこれに限定されるものではなく、固定小数点フォーマットとは異なる数値表現が可能なフォーマットであればよい。
(2)上記の各実施形態では、汎用レジスターが、演算処理部を構成する演算処理ユニットのいずれかに予め割り当てられているものとして説明したが、各汎用レジスターが、演算処理部が有する複数の演算処理ユニットのいずれかに動的に割り当てられるようにしてもよい。
(3)上記の各実施形態では、アキュムレーターが、演算処理部を構成する演算処理ユニットのいずれかに予め割り当てられているものとして説明したが、各アキュムレーターが、演算処理部が有する複数の演算処理ユニットのいずれかに動的に割り当てられるようにしてもよい。
(4)上記の各実施形態で説明した汎用レジスターの数やアキュムレーターの数に、本発明が限定されるものではない。
(5)上記の各実施形態では、演算処理ユニットが行う演算として図14に示す算術演算、論理演算及びシフト演算を例に説明したが、本発明は、図14に示す算術演算、論理演算及びシフト演算に限定されるものではない。例えば、演算処理ユニットが除算演算を行うようにしてもよい。
(6)上記の各実施形態では、図15に示す命令セットを例に説明したが、本発明は、図15に示す命令セットに限定されるものではない。
(7)上記の各実施形態では、本発明に係る情報処理装置が適用される電子機器としてプロジェクターを例に説明したが、本発明はこれに限定されるものではない。また、このプロジェクターにおいて、1画素を3つの色成分のサブ画素で構成されるものとして説明したが、本発明はこれに限定されるものではない。1画素を構成する色成分数が2、又は4以上であってもよい。更に、プロジェクターの光変調素子として透過型の液晶パネルを用いるものとして説明したが、本発明はこれに限定されるものではない。光変調部として、例えばDLP(Digital Light Processing)(登録商標)、LCOS(Liquid Crystal On Silicon)等を採用してもよい。更に、プロジェクターの光変調素子として、いわゆる3板式の透過型の液晶パネルを例に説明したが、単板式の液晶パネルや4板式以上の透過型の液晶パネルを採用してもよい。
(8)上記の各実施形態において、本発明を、情報処理装置、演算処理方法及び電子機器として説明したが、本発明はこれに限定されるものではない。