(57)【要約】【課題】命令セットのコード効率を向上させる情報処理装置、演算処理方法及び電子機器等を提供する。【解決手段】情報処理装置が、設定データの読み出し及び書き込み可能に構成される第１及び第２の入力レジスターを有する複数の入力レジスターと、設定データの読み出し及び書き込み可能に構成される被加算値レジスターと、前記第１及び第２の入力レジスターの設定データの加算処理を行う第１の加算ユニットと、前記第１の加算ユニットと並列動作可能に構成され、前記第１及び前記第２の入力レジスターの設定データを連結した連結データと、前記被加算値レジスターの設定データとの加算処理を行う第２の加算ユニットと、前記第１及び第２の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含む。【選択図】図７
2010231321.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター及び第２の入力レジスターを有する複数の入力レジスターと、
設定データの読み出し及び書き込み可能に構成される被加算値レジスターと、
前記第１の入力レジスターの設定データと前記第２の入力レジスターの設定データの加算処理を行う第１の加算ユニットと、
前記第１の加算ユニットと並列動作可能に構成され、前記第１の入力レジスターの設定データ及び前記第２の入力レジスターの設定データを連結した連結データと、前記被加算値レジスターの設定データとの加算処理を行う第２の加算ユニットと、
前記第１の加算ユニット及び前記第２の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含み、
所与の実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納すると共に、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納することを特徴とする情報処理装置。
【請求項２】
請求項１において、
前記第１の加算ユニット及び前記第２の加算ユニットと並列動作可能に構成され、前記被加算値レジスターの設定データを用いた加算処理を行う第３の加算ユニットを含み、
前記被加算値レジスターが、
それぞれが設定データの読み出し及び書き込み可能に構成される第３の入力レジスター及び第４の入力レジスターを有し、
前記実行サイクル毎に、前記第３の加算ユニットが、前記第３の入力レジスターの設定データと前記第４の入力レジスターとの加算処理結果を前記複数の出力レジスターのいずれかに格納することを特徴とする情報処理装置。
【請求項３】
それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター、第２の入力レジスター、第３の入力レジスター及び第４の入力レジスターを有する複数の入力レジスターと、
前記第１の入力レジスターの設定データと前記第３の入力レジスターの設定データの加算処理を行う第１の加算ユニットと、
前記第１の加算ユニットと並列動作可能に構成され、下位データとしての前記第１の入力レジスターの設定データ及び上位データとしての前記第２の入力レジスターの設定データを連結した第１の連結データと、下位データとしての前記第３の入力レジスターの設定データ及び上位データとしての前記第４の入力レジスターの設定データを連結した第２の連結データとの加算処理を行う第２の加算ユニットと、
前記第１の加算ユニット及び前記第２の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含み、
所与の実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納すると共に、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納することを特徴とする情報処理装置。
【請求項４】
請求項３において、
前記第１の加算ユニット及び前記第２の加算ユニットと並列動作可能に構成され、前記第２の入力レジスターの設定データと前記第４の入力レジスターの設定データとの加算処理を行う第３の加算ユニットを含み、
前記複数の出力レジスターが、
前記第３の加算ユニットの処理結果が格納されるレジスターを有し、
前記実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納し、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納し、前記第３の加算ユニットが、前記複数の出力レジスターのいずれかに前記第３の加算ユニットによる処理結果を格納することを特徴とする情報処理装置。
【請求項５】
それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター、第２の入力レジスター、第３の入力レジスター及び第４の入力レジスターを有する複数の入力レジスターと、
下位データとしての前記第１の入力レジスターの設定データ及び上位データとしての前記第２の入力レジスターの設定データを連結した第１の連結データと、下位データとしての前記第３の入力レジスターの設定データ及び上位データとしての前記第４の入力レジスターの設定データを連結した第２の連結データとの加算処理を行う第２の加算ユニットと、
前記第２の加算ユニットと並列動作可能に構成され、前記第２の入力レジスターの設定データと前記第４の入力レジスターの設定データの加算処理を行う第３の加算ユニットと、
前記第２の加算ユニット及び前記第３の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含み、
所与の実行サイクル毎に、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納すると共に、前記第３の加算ユニットが、前記複数の出力レジスターのいずれかに前記第３の加算ユニットによる処理結果を格納することを特徴とする情報処理装置。
【請求項６】
それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター、第２の入力レジスター、第３の入力レジスター及び第４の入力レジスターを有する複数の入力レジスターと、
前記第１の入力レジスターの設定データと前記第３の入力レジスターの設定データの加算処理を行う第１の加算ユニットと、
前記第１の加算ユニットと並列動作可能に構成される第２の加算ユニットと、
前記第１の加算ユニット及び前記第２の加算ユニットと並列動作可能に構成される第３の加算ユニットと、
前記第１の加算ユニット、前記第２の加算ユニット及び前記第３の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含み、
前記第３の加算ユニットが、前記第２の入力レジスターの設定データと前記第４の入力レジスターの設定データの加算処理を行い、
前記第２の加算ユニットが、前記第１の加算ユニットの処理結果と前記第３の加算ユニットの処理結果との加算処理を行い、
所与の実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納し、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納し、前記第３の加算ユニットが、前記複数の出力レジスターのいずれかに前記第３の加算ユニットによる処理結果を格納することを特徴とする情報処理装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
フェッチされた命令データをデコードする命令デコード部を含み、
前記命令デコード部のデコード結果にかかわらず、各加算ユニットによる処理結果を、前記複数の出力レジスターのいずれかに格納することを特徴とする情報処理装置。
【請求項８】
請求項７において、
前記命令デコード部が、
算術演算命令、論理演算命令及びシフト演算命令を除く、データ転送命令及び分岐命令をデコードすることを特徴とする情報処理装置。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記複数の出力レジスターに格納された各加算ユニットによる処理結果が、前記複数の入力レジスターのいずれかに転送可能に構成されることを特徴とする情報処理装置。
【請求項１０】
それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター及び第２の入力レジスターを有する複数の入力レジスターと、
前記複数の入力レジスターのいずれかの設定データを用いて加算処理を行う第１の加算ユニットと、
前記第１の加算ユニットと並列動作可能に構成され、前記複数の入力レジスターのいずれかの設定データを用いて加算処理を行う第２の加算ユニットと、
前記第１の加算ユニット及び前記第２の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含む情報処理装置の演算処理方法であって、
前記複数の入力レジスターの中から前記第１の入力レジスター及び前記第２の入力レジスターを前記第１の加算ユニットに割り当て、
前記第１の加算ユニットが、前記第１の入力レジスターの設定データと前記第２の入力レジスターの設定データとの加算処理を行うと共に、前記第２の加算ユニットが、前記第１の入力レジスターの設定データ及び前記第２の入力レジスターの設定データを連結した連結データと、被加算値レジスターの設定データとの加算処理を行い、
所与の実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納すると共に、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納することを特徴とする演算処理方法。
【請求項１１】
請求項１０において、
前記情報処理装置が、前記第１の加算ユニット及び前記第２の加算ユニットと並列動作可能に構成される第３の加算ユニットを含み、
前記被加算値レジスターが、
それぞれが設定データの読み出し及び書き込み可能に構成される第３の入力レジスター及び第４の入力レジスターを有し、
前記複数の入力レジスターの中から前記第３の入力レジスター及び前記第４の入力レジスターを前記第３の加算ユニットに割り当て、
前記第３の加算ユニットが、前記第３の入力レジスターの設定データと前記第４の入力レジスターの設定データとの加算処理を行い、
前記実行サイクル毎に、前記第３の加算ユニットが、前記複数の出力レジスターのいずれかに前記第３の加算ユニットによる処理結果を格納することを特徴とする演算処理方法。
【請求項１２】
それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター、第２の入力レジスター、第３の入力レジスター及び第４の入力レジスターを有する複数の入力レジスターと、
前記複数の入力レジスターのいずれかの設定データを用いて加算処理を行う第１の加算ユニットと、
前記第１の加算ユニットと並列動作可能に構成され、前記複数の入力レジスターのいずれかの設定データを用いて加算処理を行う第２の加算ユニットと、
前記第１の加算ユニット及び前記第２の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含む情報処理装置の演算処理方法であって、
前記複数の入力レジスターの中から前記第１の入力レジスター及び前記第３の入力レジスターを前記第１の加算ユニットに割り当てると共に、前記第２の入力レジスター及び前記第４の入力レジスターを前記第２の加算ユニットに割り当て、
前記第１の加算ユニットが、前記第１の入力レジスターの設定データと前記第３の入力レジスターの設定データの加算処理を行うと共に、前記第２の加算ユニットが、下位データとしての前記第１の入力レジスターの設定データ及び上位データとしての前記第２の入力レジスターの設定データを連結した第１の連結データと、下位データとしての前記第３の入力レジスターの設定データ及び上位データとしての前記第４の入力レジスターの設定データを連結した第２の連結データとの加算処理を行い、
所与の実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納すると共に、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納することを特徴とする演算処理方法。
【請求項１３】
請求項１２において、
前記情報処理装置が、
前記第１の加算ユニット及び前記第２の加算ユニットと並列動作可能に構成される第３の加算ユニットを含み、
前記第３の加算ユニットが、前記第２の入力レジスターの設定データと前記第４の入力レジスターの設定データとの加算処理を行い、
前記実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納し、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納し、前記第３の加算ユニットが、前記複数の出力レジスターのいずれかに前記第３の加算ユニットによる処理結果を格納することを特徴とする演算処理方法。
【請求項１４】
請求項１０乃至１３のいずれかにおいて、
前記情報処理装置が、
フェッチされた命令データの命令デコード部を含み、
前記命令デコード部のデコード結果にかかわらず、各加算ユニットの処理結果を、前記複数の出力レジスターのいずれかに格納することを特徴とする演算処理方法。
【請求項１５】
プログラム及びデータを記憶するメモリーと、
前記プログラム及び前記データに対応した演算処理を行う請求項１乃至９のいずれか記載の情報処理装置とを含むことを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、演算処理方法及び電子機器等に関する。
【背景技術】
【０００２】
近年、プロセッサ（広義には情報処理装置）が身の回りのあらゆる機器に組み込まれており、このプロセッサには、小型化、低コスト化、低消費電力化、高機能化、高性能化が求められている。プロセッサの高機能化や高性能化を図る技術については様々なものが考えられており、その１つとしてプロセッサの命令セットを縮小することがある。
【０００３】
命令セットを縮小することは、ＣＩＳＣ（Complex Instruction Set Computer）アーキテクチャーのプロセッサに対するＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャーの技術思想に相当する。即ち、命令セットを縮小することで、デコードする命令をシンプルなものに限定して単純化することで高速化を図るものである。
【０００４】
命令セットを縮小すると、命令を表すオペコードのビット数を減らすことができる。そうすると、例えばオペランドと呼ばれる、レジスターを指定するためのビット数を増やしてレジスター数を増加させたり、即値として命令に埋め込める最大値が大きくなって演算処理や分岐処理が高速化できたりするメリットがある。
【０００５】
その一方、プロセッサが扱う数値には様々なサイズがあり、広く使われているＣ言語の例では、８ビット（例えばChar型）、１６ビット（例えばShort型）、３２ビット（例えばint型、long型）、６４ビット（例えばlong型）等のサイズのデータを扱う。ビット数が増えると、表現可能なデータ範囲が広くなり、演算結果のオーバーフローが発生しにくくなる一方で、データを保持するメモリーの容量が増えたり、演算器の回路規模の増大や消費電力の増大を招いたりする。そのため、プロセッサとして、種々のサイズのデータに対して演算処理が可能であると共に、演算処理に最適なビット数のデータサイズで処理することが望ましい。
【０００６】
一般的に、プロセッサでは、演算器のビット幅が固定されるが、複数のビット幅を有するデータに対する演算処理を効率的に行うための種々の発明が提案されている。例えば特許文献１には、算術論理演算回路を２つに分割し、ハーフワード長の２つの演算処理を同時に実行できるようにした技術が開示されている。また、例えば特許文献２には、所定ビット長のレジスターを分割して並列に動作することを可能にするプロセッサが開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平８−２９２８７６号公報
【特許文献２】特開平１０−９１４３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に開示された技術では、プログラム等で明示的に「１ワード」の処理か、「ハーフワード」の処理かを指定してどちらか一方のみの実行を指示する必要がある。同様に、特許文献２に開示された技術では、所定ビット長のデータを「１ワード」として処理するか、２つの「ハーフワード」として処理するかを排他的に動作させる必要がある。そのため、特許文献１及び特許文献２に開示された技術では、プロセッサが搭載される機器の低消費電力化や低コスト化に有効とされるプログラムのコード効率を向上させることはできないという問題がある。
【０００９】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的の１つは、命令セットのコード効率を向上させる情報処理装置、演算処理方法及び電子機器等を提供することにある。
【課題を解決するための手段】
【００１０】
（１）本発明の一態様は、情報処理装置が、それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター及び第２の入力レジスターを有する複数の入力レジスターと、設定データの読み出し及び書き込み可能に構成される被加算値レジスターと、前記第１の入力レジスターの設定データと前記第２の入力レジスターの設定データの加算処理を行う第１の加算ユニットと、前記第１の加算ユニットと並列動作可能に構成され、前記第１の入力レジスターの設定データ及び前記第２の入力レジスターの設定データを連結した連結データと、前記被加算値レジスターの設定データとの加算処理を行う第２の加算ユニットと、前記第１の加算ユニット及び前記第２の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含み、所与の実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納すると共に、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納する。
【００１１】
本態様によれば、共通の入力レジスターの設定データに対して、互いに異なる加算処理を同時に行うことができ、同じ入力レジスターの設定データに対する複数種類の加算処理結果を同時に得られることができるようになる。その結果、明示的に処理対象のデータサイズを指定する必要もないので、コード効率を向上させることができ、上記の加算処理を指定する命令を不要にできる。これは、コードの難読性を高めて、逆アセンブルを困難にして安全性の高いコードを生成することができ、リバースエンジニアリング防止やセキュリティーの向上に寄与できる効果が得られることを意味する。
【００１２】
（２）本発明の他の態様では、前記第１の加算ユニット及び前記第２の加算ユニットと並列動作可能に構成され、前記被加算値レジスターの設定データを用いた加算処理を行う第３の加算ユニットを含み、前記被加算値レジスターが、それぞれが設定データの読み出し及び書き込み可能に構成される第３の入力レジスター及び第４の入力レジスターを有し、前記実行サイクル毎に、前記第３の加算ユニットが、前記第３の入力レジスターの設定データと前記第４の入力レジスターとの加算処理結果を前記複数の出力レジスターのいずれかに格納する。
【００１３】
本態様によれば、被加算値レジスターを第３の入力レジスター及び第４の入力レジスターにより構成し、第３の加算ユニットで加算するようにしたので、更に多くの種類の互いに異なる加算処理を同時に行うことができるようになる。
【００１４】
（３）本発明の他の態様は、情報処理装置が、それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター、第２の入力レジスター、第３の入力レジスター及び第４の入力レジスターを有する複数の入力レジスターと、前記第１の入力レジスターの設定データと前記第３の入力レジスターの設定データの加算処理を行う第１の加算ユニットと、前記第１の加算ユニットと並列動作可能に構成され、下位データとしての前記第１の入力レジスターの設定データ及び上位データとしての前記第２の入力レジスターの設定データを連結した第１の連結データと、下位データとしての前記第３の入力レジスターの設定データ及び上位データとしての前記第４の入力レジスターの設定データを連結した第２の連結データとの加算処理を行う第２の加算ユニットと、前記第１の加算ユニット及び前記第２の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含み、所与の実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納すると共に、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納する。
【００１５】
本態様によれば、共通の入力レジスターの設定データに対して、互いに異なる加算処理を同時に行うことができ、同じ入力レジスターの設定データに対する複数種類の加算処理結果を同時に得られることができるようになる。その結果、明示的に処理対象のデータサイズを指定する必要もないので、コード効率を向上させることができ、上記の加算処理を指定する命令を不要にできる。しかも、明示的な加算処理を指定することなく、上位データ同士の加算処理と下位データ同士の加算処理とを同時に行うことができるようになる。
【００１６】
（４）本発明の他の態様では、前記第１の加算ユニット及び前記第２の加算ユニットと並列動作可能に構成され、前記第２の入力レジスターの設定データと前記第４の入力レジスターの設定データとの加算処理を行う第３の加算ユニットを含み、前記複数の出力レジスターが、前記第３の加算ユニットの処理結果が格納されるレジスターを有し、前記実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納し、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納し、前記第３の加算ユニットが、前記複数の出力レジスターのいずれかに前記第３の加算ユニットによる処理結果を格納する。
【００１７】
本態様によれば、更に多くの種類の互いに異なる加算処理を同時に行うことができるようになる。
【００１８】
（５）本発明の他の態様は、それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター、第２の入力レジスター、第３の入力レジスター及び第４の入力レジスターを有する複数の入力レジスターと、下位データとしての前記第１の入力レジスターの設定データ及び上位データとしての前記第２の入力レジスターの設定データを連結した第１の連結データと、下位データとしての前記第３の入力レジスターの設定データ及び上位データとしての前記第４の入力レジスターの設定データを連結した第２の連結データとの加算処理を行う第２の加算ユニットと、前記第２の加算ユニットと並列動作可能に構成され、前記第２の入力レジスターの設定データと前記第４の入力レジスターの設定データの加算処理を行う第３の加算ユニットと、前記第２の加算ユニット及び前記第３の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含み、所与の実行サイクル毎に、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納すると共に、前記第３の加算ユニットが、前記複数の出力レジスターのいずれかに前記第３の加算ユニットによる処理結果を格納する。
【００１９】
本態様によれば、共通の入力レジスターの設定データに対して、互いに異なる加算処理を同時に行うことができ、同じ入力レジスターの設定データに対する複数種類の加算処理結果を同時に得られることができるようになる。その結果、明示的に処理対象のデータサイズを指定する必要もないので、コード効率を向上させることができ、上記の加算処理を指定する命令を不要にできる。これは、コードの難読性を高めて、逆アセンブルを困難にして安全性の高いコードを生成することができ、リバースエンジニアリング防止やセキュリティーの向上に寄与できる効果が得られることを意味する。
【００２０】
（６）本発明の他の態様は、それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター、第２の入力レジスター、第３の入力レジスター及び第４の入力レジスターを有する複数の入力レジスターと、前記第１の入力レジスターの設定データと前記第３の入力レジスターの設定データの加算処理を行う第１の加算ユニットと、前記第１の加算ユニットと並列動作可能に構成される第２の加算ユニットと、前記第１の加算ユニット及び前記第２の加算ユニットと並列動作可能に構成される第３の加算ユニットと、前記第１の加算ユニット、前記第２の加算ユニット及び前記第３の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含み、前記第３の加算ユニットが、前記第２の入力レジスターの設定データと前記第４の入力レジスターの設定データの加算処理を行い、前記第２の加算ユニットが、前記第１の加算ユニットの処理結果と前記第３の加算ユニットの処理結果との加算処理を行い、所与の実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納し、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納し、前記第３の加算ユニットが、前記複数の出力レジスターのいずれかに前記第３の加算ユニットによる処理結果を格納する。
【００２１】
本態様によれば、共通の入力レジスターの設定データに対して、互いに異なる加算処理を同時に行うことができ、同じ入力レジスターの設定データに対する複数種類の加算処理結果を同時に得られることができるようになる。その結果、明示的に処理対象のデータサイズを指定する必要もないので、コード効率を向上させることができ、上記の加算処理を指定する命令を不要にできる。これは、コードの難読性を高めて、逆アセンブルを困難にして安全性の高いコードを生成することができ、リバースエンジニアリング防止やセキュリティーの向上に寄与できる効果が得られることを意味する。
【００２２】
（７）本発明の他の態様では、フェッチされた命令データをデコードする命令デコード部を含み、前記命令デコード部のデコード結果にかかわらず、各加算ユニットによる処理結果を、前記複数の出力レジスターのいずれかに格納する。
【００２３】
本態様によれば、命令デコード部のデコード結果にかかわらず、実行サイクル毎に、各加算ユニットの処理結果を、対応する出力レジスターに格納するようにしたので、複数の加算処理の結果を一度に取得でき、演算処理の高速化を図ることができるようになる。
【００２４】
（８）本発明の他の態様では、前記命令デコード部が、算術演算命令、論理演算命令及びシフト演算命令を除く、データ転送命令及び分岐命令をデコードする。
【００２５】
本態様によれば、命令セットで規定されるビットフィールドに余裕を持たせ、極めてコード効率が高い情報処理装置を提供できるようになる。その結果、コードの難読性を高めて、逆アセンブルを困難にして安全性の高いコードを生成することができ、リバースエンジニアリング防止やセキュリティーの向上に寄与できるようになる。
【００２６】
（９）本発明の他の態様では、前記複数の出力レジスターに格納された各加算ユニットによる処理結果が、前記複数の入力レジスターのいずれかに転送可能に構成される。
【００２７】
本態様によれば、各加算ユニットによって行われる演算処理結果を用いて、再び演算処理に供することができ、演算処理を指定する命令がなくても、演算処理結果を用いた分岐処理等の処理が可能となる。
【００２８】
（１０）本発明の他の態様は、それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター及び第２の入力レジスターを有する複数の入力レジスターと、前記複数の入力レジスターのいずれかの設定データを用いて加算処理を行う第１の加算ユニットと、前記第１の加算ユニットと並列動作可能に構成され、前記複数の入力レジスターのいずれかの設定データを用いて加算処理を行う第２の加算ユニットと、前記第１の加算ユニット及び前記第２の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含む情報処理装置の演算処理方法が、前記複数の入力レジスターの中から前記第１の入力レジスター及び前記第２の入力レジスターを前記第１の加算ユニットに割り当て、前記第１の加算ユニットが、前記第１の入力レジスターの設定データと前記第２の入力レジスターの設定データとの加算処理を行うと共に、前記第２の加算ユニットが、前記第１の入力レジスターの設定データ及び前記第２の入力レジスターの設定データを連結した連結データと、被加算値レジスターの設定データとの加算処理を行い、所与の実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納すると共に、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納する。
【００２９】
（１１）本発明の他の態様では、前記情報処理装置が、前記第１の加算ユニット及び前記第２の加算ユニットと並列動作可能に構成される第３の加算ユニットを含み、前記被加算値レジスターが、それぞれが設定データの読み出し及び書き込み可能に構成される第３の入力レジスター及び第４の入力レジスターを有し、前記複数の入力レジスターの中から前記第３の入力レジスター及び前記第４の入力レジスターを前記第３の加算ユニットに割り当て、前記第３の加算ユニットが、前記第３の入力レジスターの設定データと前記第４の入力レジスターの設定データとの加算処理を行い、前記実行サイクル毎に、前記第３の加算ユニットが、前記複数の出力レジスターのいずれかに前記第３の加算ユニットによる処理結果を格納する。
【００３０】
（１２）本発明の他の態様は、それぞれが設定データの読み出し及び書き込み可能に構成される第１の入力レジスター、第２の入力レジスター、第３の入力レジスター及び第４の入力レジスターを有する複数の入力レジスターと、前記複数の入力レジスターのいずれかの設定データを用いて加算処理を行う第１の加算ユニットと、前記第１の加算ユニットと並列動作可能に構成され、前記複数の入力レジスターのいずれかの設定データを用いて加算処理を行う第２の加算ユニットと、前記第１の加算ユニット及び前記第２の加算ユニットのいずれかの処理結果が格納される複数の出力レジスターとを含む情報処理装置の演算処理方法が、前記複数の入力レジスターの中から前記第１の入力レジスター及び前記第３の入力レジスターを前記第１の加算ユニットに割り当てると共に、前記第２の入力レジスター及び前記第４の入力レジスターを前記第２の加算ユニットに割り当て、前記第１の加算ユニットが、前記第１の入力レジスターの設定データと前記第３の入力レジスターの設定データの加算処理を行うと共に、前記第２の加算ユニットが、下位データとしての前記第１の入力レジスターの設定データ及び上位データとしての前記第２の入力レジスターの設定データを連結した第１の連結データと、下位データとしての前記第３の入力レジスターの設定データ及び上位データとしての前記第４の入力レジスターの設定データを連結した第２の連結データとの加算処理を行い、所与の実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納すると共に、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納する。
【００３１】
上記のいずれかの態様によれば、共通の入力レジスターの設定データに対して、互いに異なる加算処理を同時に行うことができ、同じ入力レジスターの設定データに対する複数種類の加算処理結果を同時に得られることができるようになる。その結果、明示的に処理対象のデータサイズを指定する必要もないので、コード効率を向上させることができ、上記の加算処理を指定する命令を不要にできる。この結果、コードの難読性を高めて、逆アセンブルを困難にして安全性の高いコードを生成することができ、リバースエンジニアリング防止やセキュリティーの向上に寄与できる効果が得られる。
【００３２】
（１３）本発明の他の態様では、前記情報処理装置が、前記第１の加算ユニット及び前記第２の加算ユニットと並列動作可能に構成される第３の加算ユニットを含み、前記第３の加算ユニットが、前記第２の入力レジスターの設定データと前記第４の入力レジスターの設定データとの加算処理を行い、前記実行サイクル毎に、前記第１の加算ユニットが、前記複数の出力レジスターのいずれかに前記第１の加算ユニットによる処理結果を格納し、前記第２の加算ユニットが、前記複数の出力レジスターのいずれかに前記第２の加算ユニットによる処理結果を格納し、前記第３の加算ユニットが、前記複数の出力レジスターのいずれかに前記第３の加算ユニットによる処理結果を格納する。
【００３３】
本態様によれば、更に多くの種類の互いに異なる加算処理を同時に行うことができるようになる。
【００３４】
（１４）本発明の他の態様では、前記情報処理装置が、フェッチされた命令データの命令デコード部を含み、前記命令デコード部のデコード結果にかかわらず、各加算ユニットの処理結果を、前記複数の出力レジスターのいずれかに格納する。
【００３５】
本態様によれば、命令デコード部のデコード結果にかかわらず、実行サイクル毎に、各加算ユニットの処理結果を、対応する出力レジスターに格納するようにしたので、複数の加算処理の結果を一度に取得でき、演算処理の高速化を図ることができるようになる。
【００３６】
（１５）本発明の他の態様は、電子機器が、プログラム及びデータを記憶するメモリーと、前記プログラム及び前記データに対応した演算処理を行う上記のいずれか記載の情報処理装置とを含む。
【００３７】
本態様によれば、命令セットのコード効率を向上させる情報処理装置が適用された電子機器を提供できるようになる。その結果、電子機器の低コスト化に寄与できるようになる。
【図面の簡単な説明】
【００３８】
【図１】実施形態１における情報処理装置の原理的な構成例を示す図。
【図２】図１の情報処理装置としてのＣＰＵの構成例のブロック図。
【図３】図２のＣＰＵが読み込むプログラムの命令データの説明図。
【図４】図２の汎用レジスター部の構成例を示す図。
【図５】図２のアキュムレーター部の構成例を示す図。
【図６】実施形態１における汎用レジスター部、演算処理部及びアキュムレーター部の一構成例のブロック図。
【図７】実施形態１における汎用レジスター部、演算処理部及びアキュムレーター部の他の構成例のブロック図。
【図８】図６又は図７の演算処理部の処理例の説明図。
【図９】図９（Ａ）、図９（Ｂ）は図２のＣＰＵの動作例の説明図。
【図１０】実施形態１におけるＣＰＵの命令セットの一例の説明図。
【図１１】実施形態２における汎用レジスター部、演算処理部及びアキュムレーター部の構成例のブロック図。
【図１２】実施形態２におけるＣＰＵの構成による効果の説明図。
【図１３】図１２の線形補間処理で参照されるテーブルの説明図。
【図１４】図１２の処理を実現する実施形態２におけるＣＰＵのプログラムの一例を示図。
【図１５】図１２の処理を実現する一般的なＣＰＵのプログラムの一例を示す図。
【図１６】実施形態３における汎用レジスター部、演算処理部及びアキュムレーター部の構成例のブロック図。
【図１７】本発明に係る電子機器としてのプロジェクターを含む画像表示システムの構成例のブロック図。
【図１８】図１７の画像処理装置のハードウェア構成例のブロック図。
【図１９】図１７の投射装置の構成例の図。
【発明を実施するための形態】
【００３９】
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の課題を解決するために必須の構成要件であるとは限らない。
【００４０】
１．  情報処理装置
〔実施形態１〕
図１に、本発明に係る実施形態１における情報処理装置の原理的な構成例を示す。
【００４１】
実施形態１における情報処理装置１０は、汎用レジスター部２０と、アキュムレーター部３０と、演算処理部４０とを含む。
【００４２】
汎用レジスター部（入力レジスター部）２０は、外部から設定データの読み出しと設定データの書き込みとが可能な複数の汎用レジスターＲＧ０、・・・、ＲＧｊ、・・・、ＲＧｋ、・・・、ＲＧｍ、・・・、ＲＧｎ、・・・を有し、演算処理部４０において行われる演算処理に供される入力データが設定される。汎用レジスター部２０が有する複数の汎用レジスターは、演算処理部４０の入力データが設定される入力レジスターの機能を有する。
【００４３】
アキュムレーター部（出力レジスター部）３０は、演算処理部４０において行われる演算処理の処理結果が格納される複数のアキュムレーターＲＧ１０、・・・、ＲＧ１ｘ、・・・、ＲＧ２ｙ、・・・、ＲＧ３ｚ、・・・を含む。アキュムレーター部３０が有する複数のアキュムレーターは、演算処理部４０の処理結果が格納される出力レジスターの機能を有する。
【００４４】
演算処理部４０は、並列動作可能に構成された複数の演算処理ユニットを有する。複数の演算処理ユニットは、互いに異なる演算処理を行ってもよいし、１つの演算処理ユニットの処理内容が別の演算処理ユニットの演算処理と同じ種類の演算処理を行ってもよい。演算処理部４０が有する複数の演算処理ユニットを構成する各演算処理ユニットは、いわゆる算術演算、論理演算又はシフト演算を行うことが望ましい。算術演算は、加算演算、乗算演算、減算演算、除算演算、インクリメント演算、デクリメント演算のいずれかであることが望ましい。論理演算は、論理和演算、論理積演算、論理否定演算、排他的論理和演算、排他的論理和否定演算のいずれかであることが望ましい。シフト演算は、論理シフト演算、算術シフト演算、回転演算、スワップ演算のいずれかであることが望ましい。
【００４５】
演算処理部４０が有する複数の演算処理ユニットを構成する各演算処理ユニットには、汎用レジスター部２０が有する複数の汎用レジスターのうち１又は複数の汎用レジスターが割り当てられると共に、アキュムレーター部３０が有する複数のアキュムレーターのうち１又は複数のアキュムレーターが割り当てられる。そして、複数の演算処理ユニットは、所与の実行サイクル毎に、演算処理ユニット毎に割り当てられた汎用レジスターに設定された入力データを用いて同時に演算処理を行い、演算処理ユニット毎に割り当てられたアキュムレーターに演算処理の処理結果を格納する。
【００４６】
即ち、演算処理部４０は、第１の演算処理を行う第１の演算処理ユニットＥＸＵ１と、第２の演算処理を行う第２の演算処理ユニットＥＸＵ２とを少なくとも含む。第１の演算処理の処理内容は、第２の演算処理の処理内容と同じであってもよいし、異なっていてもよい。複数の汎用レジスター（入力レジスター）は、第１の演算処理ユニットＥＸＵ１に割り当てられる第１の汎用レジスター（入力レジスター）ＲＧｊ、ＲＧｎと、第２の演算処理ユニットＥＸＵ２に割り当てられる第２の汎用レジスター（入力レジスター）ＲＧｋとを有する。また、複数のアキュムレーター（出力レジスター）は、第１の演算処理ユニットＥＸＵ１に割り当てられる第１のアキュムレーター（出力レジスター）ＲＧ１ｘと、第２の演算処理ユニットＥＸＵ２に割り当てられる第２のアキュムレーター（出力レジスター）ＲＧ２ｙとを有する。そして、情報処理装置１０は、実行サイクル毎に、第１の演算処理ユニットＥＸＵ１が、第１の汎用レジスターＲＧｊ、ＲＧｎの設定データを用いて第１の演算処理を行い、該第１の演算処理の処理結果を第１のアキュムレーターＲＧ１ｘに格納すると共に、第２の演算処理ユニットＥＸＵ２が、第２の汎用レジスターＲＧｋの設定データを用いて第２の演算処理を行い、該第２の演算処理の処理結果を第２のアキュムレーターＲＧ２ｙに格納する。
【００４７】
ここで、第１の演算処理ユニットＥＸＵ１には、第１のアキュムレーターＲＧ１ｘを含む複数のアキュムレーターが割り当てられてもよい。同様に、第２の演算処理ユニットＥＸＵ２には、第２のアキュムレーターＲＧ２ｙを含む複数のアキュムレーターが割り当てられてもよい。
【００４８】
即ち、情報処理装置１０の演算処理方法として、複数の入力レジスターのうち第１の入力レジスターを第１の演算処理ユニットＥＸＵ１に割り当て、該複数の入力レジスターのうち第２の入力レジスターを第２の演算処理ユニットＥＸＵ２に割り当てると共に、複数の出力レジスターのうち第１の出力レジスターを第１の演算処理ユニットＥＸＵ１に割り当て、該複数の出力レジスターのうち第２の出力レジスターを第２の演算処理ユニットＥＸＵ２に割り当てる。そして、所与の実行サイクル毎に、第１の演算処理ユニットＥＸＵ２が、第１の入力レジスターの設定データを用いて第１の演算処理を行い、該第１の演算処理の処理結果を第１の出力レジスターに格納すると共に、第２の演算処理ユニットが、第２の入力レジスターの設定データを用いて第２の演算処理を行い、該第２の演算処理の処理結果を第２の出力レジスターに格納する。
【００４９】
このような情報処理装置１０は、実行サイクル毎に、汎用レジスターの設定データを用いて演算処理を行った結果をアキュムレーターに格納することを繰り返すことで、演算処理を指定する命令を不要にして命令セットで規定されるビットフィールドに余裕を持たせ、極めてコード効率の高い情報処理装置を実現することが可能となる。
【００５０】
また、第１のアキュムレーターの格納データ又は第２のアキュムレーターの格納データは、複数の汎用レジスターのいずれかに転送可能に構成される。こうすることで、演算処理部４０によって行われる演算処理結果を用いて、再び演算処理に供することができる。そのため、演算処理を指定する命令がなくても、演算処理結果を用いた分岐処理等の処理が可能となる。
【００５１】
また、第１の汎用レジスターが、第２の演算処理ユニットＥＸＵ２に割り当てられ、第２の演算処理ユニットＥＸＵ２が、実行サイクル毎に、第１の汎用レジスターの設定データを用いて第２の演算処理を行い、該第２の演算処理の処理結果を第２のアキュムレーターに格納するようにしてもよい。こうすることで、１つの汎用レジスターに設定されたデータを用いて複数種類の演算処理を行う場合に、一度に行うことができ、処理の高速化を図ることができる。
【００５２】
なお、図１では、演算処理部４０が、第１の演算処理ユニットＥＸＵ１及び第２の演算処理ユニットＥＸＵ２と並列動作可能に構成され第３の演算処理を行う第３の演算処理ユニットＥＸＵ３を有し、第３の演算処理ユニットＥＸＵ３に、第１の演算処理ユニットＥＸＵ１及び第２の演算処理ユニットＥＸＵ２の少なくとも一方と共通の汎用レジスターが割り当てられ、第３の演算処理ユニットＥＸＵ３に割り当てられたアキュムレーターに第３の演算処理の結果を格納するようになっている。
【００５３】
図２に、図１の情報処理装置１０としての中央演算処理装置（Central Processing Unit：ＣＰＵ）の構成例のブロック図を示す。図２において、図１と同一部分には同一符号を付し、適宜説明を省略する。
図３に、図２のＣＰＵ１００が読み込むプログラムの命令データの説明図を示す。
【００５４】
ＣＰＵ１００は、汎用レジスター部２０及びアキュムレーター部３０を含むレジスター部５０と、命令デコード部６０と、バス制御部７０と、プログラムカウンター（Program Counter：ＰＣ）８０と、スタックポインター（Stack Pointer：ＳＰ)８２と、オペコードレジスター８４と、オペランドレジスター８６と、制御部９０とを含む。
【００５５】
ＣＰＵ１００は、外部又は内部の図示しないメモリーに格納されたプログラムを読み込み、該プログラムにより指定された処理を実行する。このプログラムは、それぞれがＣＰＵ１００の処理内容を指定する、図３に示すような命令データの列である。命令データは、オペコード部とオペランド部とを有し、オペコード部が処理内容を指定する部分であり、オペランド部が、オペコード部で指定された処理の対象を指定する部分である。
【００５６】
プログラムカウンター８０は、ＣＰＵ１００が現在実行するプログラムのアドレスを保持する制御レジスターであり、ＣＰＵ１００が処理の実行を終了する度にその内容が更新される。スタックポインター８２は、スタック領域と呼ばれるデータの待避領域に最後に待避したアドレスを保持する制御レジスターであり、例えばサブルーチン処理に移行する際に現在の処理を中断し、サブルーチン処理の終了後に中断した処理を再開させるために用いられる。オペコードレジスター８４は、ＣＰＵ１００によりフェッチされた命令データのオペコード部を保持する制御レジスターである。オペランドレジスター８６は、ＣＰＵ１００によりフェッチされた命令データのオペランド部を保持する制御レジスターである。
【００５７】
命令デコード部６０は、プログラムカウンター８０により指定されるアドレスに記憶されるプログラムの命令データがＣＰＵ１００によりフェッチされたとき、該命令データをデコードし、デコード結果を制御部９０に出力する。
【００５８】
バス制御部７０は、制御部９０からの指示により、ＣＰＵ１００の外部又は内部に設けられたバスの調停制御を行って、アクセス制御を行う。
【００５９】
制御部９０は、命令デコード部６０からのデコード結果に基づいて、プログラムカウンター８０、スタックポインター８２、オペコードレジスター８４、オペランドレジスター８６、バス制御部７０、演算処理部４０及びレジスター部５０を制御して、ＣＰＵ１００の制御を司る。
【００６０】
図４に、図２の汎用レジスター部２０の構成例を示す。
【００６１】
実施形態１では、汎用レジスター部２０が、１６種類の汎用レジスターＲＧ０〜ＲＧｆを有する。なお、実施形態１では、ＣＰＵ１００が、１６種類の汎用レジスターを有するものとして説明するが、本発明は汎用レジスター数に限定されるものではなく、複数の汎用レジスターを有していればよい。また、実施形態１では、汎用レジスターのビット数が「１６」であるものとして説明するが、本発明はこれに限定されるものではなく、汎用レジスターのビット数に限定されるものではない。
【００６２】
図４に示す各汎用レジスターは、制御部９０からアクセス可能に構成されており、制御部９０は、各汎用レジスターにデータを書き込んだり、各汎用レジスターからデータを読み出したりすることができるようになっている。そして、図４の汎用レジスターＲＧ０〜ＲＧｆのいずれかは、演算処理部４０が有する複数の演算処理ユニットのいずれかに予め割り当てられている。汎用レジスターＲＧ０〜ＲＧｆのうち、演算処理部４０が有する複数の演算処理ユニットのいずれにも割り当てられない汎用レジスターがあってもよいし、１つの汎用レジスターが、演算処理部４０が有する複数の演算処理ユニットに割り当てられていてもよい。
【００６３】
図５に、図２のアキュムレーター部３０の構成例を示す。
【００６４】
実施形態１では、アキュムレーター部３０が、例えば３２種類以上のアキュムレーターＲＧ１０、・・・、ＲＧ２ｆ、・・・を有する。なお、実施形態１では、アキュムレーター数に限定されるものではなく、複数のアキュムレーターを有していればよい。また、実施形態１では、アキュムレーターのビット数が「１６」であるものとして説明するが、本発明はこれに限定されるものではなく、アキュムレーターのビット数に限定されるものではない。
【００６５】
図５に示す各アキュムレーターは、演算処理部４０が有する演算処理ユニットから書き込み可能に構成されており、制御部９０は、各アキュムレーターに書き込まれたデータを読み出したり、該データを汎用レジスター部２０のいずれかの汎用レジスターに転送したりできるようになっている。そして、図５のアキュムレーターのいずれかは、演算処理部４０が有する複数の演算処理ユニットのいずれかに予め割り当てられている。アキュムレーターのうち、演算処理部４０が有する複数の演算処理ユニットのいずれにも割り当てられないアキュムレーターがあってもよい。
【００６６】
演算処理部４０が有する複数の演算処理ユニットを構成する各演算処理ユニットは、実行サイクル毎に、入力レジスターとして割り当てられた汎用レジスターのデータを用いて演算処理を行い、その演算処理結果を、出力レジスターとして割り当てられたアキュムレーターに格納する。
【００６７】
図６に、実施形態１における汎用レジスター部２０、演算処理部４０及びアキュムレーター部３０の一構成例のブロック図を示す。図６において、図４又は図５と同一部分には同一符号を付し、適宜説明を省略する。
図７に、実施形態１における汎用レジスター部２０、演算処理部４０及びアキュムレーター部３０の他の構成例のブロック図を示す。図７において、図６と同一部分には同一符号を付し、適宜説明を省略する。
図８に、図６又は図７の演算処理部４０の処理例の説明図を示す。
【００６８】
演算処理部４０は、複数の演算処理ユニットを有し、図６では演算処理ユニット４０１〜４０１１のみを図示している。なお、図６では、演算処理部４０が、１１個の演算処理ユニットを含む例を説明するが、本発明が、演算処理ユニット数に限定されるものではなく、演算処理部４０が複数の演算処理ユニットを有していればよい。
【００６９】
演算処理ユニット４０１は、加算演算処理を行う。演算処理ユニット４０１には、汎用レジスターＲＧ０、ＲＧ１と、アキュムレーターＲＧ１０、ＲＧ２０とが割り当てられる。そして、実行サイクル毎に、演算処理ユニット４０２〜４０１１と並列に、演算処理ユニット４０１は、汎用レジスターＲＧ０の入力データと汎用レジスターＲＧ１の入力データとの加算演算を行い、加算演算結果を、アキュムレーターＲＧ１０、ＲＧ２０に格納する。ここで、アキュムレーターＲＧ１０には、加算演算結果の下位ビット側が格納され、アキュムレーターＲＧ２０には、キャリービットが格納される。
【００７０】
演算処理ユニット４０２もまた、加算演算処理を行う。ただ、演算処理ユニット４０２は、演算処理ユニット４０１とは別の汎用レジスターが入力レジスターとして割り当てられている。即ち、演算処理ユニット４０２には、汎用レジスターＲＧ２、ＲＧ３と、アキュムレーターＲＧ１２、ＲＧ２２とが割り当てられる。そして、実行サイクル毎に、演算処理ユニット４０１、４０３〜４０１１と並列に、演算処理ユニット４０２は、汎用レジスターＲＧ２の入力データと汎用レジスターＲＧ３の入力データとの加算演算を行い、加算演算結果を、アキュムレーターＲＧ１２、ＲＧ２２に格納する。ここで、アキュムレーターＲＧ１２には、加算演算結果の下位ビット側が格納され、アキュムレーターＲＧ２２には、キャリービットが格納される。
【００７１】
演算処理ユニット４０３は、乗算演算処理を行う。演算処理ユニット４０３には、汎用レジスターＲＧ４、ＲＧ５と、アキュムレーターＲＧ１４、ＲＧ２４とが割り当てられる。そして、実行サイクル毎に、演算処理ユニット４０１〜４０２、４０４〜４０１１と並列に、演算処理ユニット４０３は、汎用レジスターＲＧ４の入力データと汎用レジスターＲＧ５の入力データとの乗算演算を行い、乗算演算結果を、アキュムレーターＲＧ１４、ＲＧ２４に格納する。ここで、アキュムレーターＲＧ１４には、乗算演算結果の下位ビット側が格納され、アキュムレーターＲＧ２４には、乗算演算結果の上位ビット側が格納される。
【００７２】
演算処理ユニット４０４もまた、乗算演算処理を行う。演算処理ユニット４０４には、汎用レジスターＲＧ６、ＲＧ７と、アキュムレーターＲＧ１６、ＲＧ２６とが割り当てられる。そして、実行サイクル毎に、演算処理ユニット４０１〜４０３、４０５〜４０１１と並列に、演算処理ユニット４０４は、汎用レジスターＲＧ６の入力データと汎用レジスターＲＧ７の入力データとの乗算演算を行い、乗算演算結果を、アキュムレーターＲＧ１６、ＲＧ２６に格納する。ここで、アキュムレーターＲＧ１６には、乗算演算結果の下位ビット側が格納され、アキュムレーターＲＧ２６には、乗算演算結果の上位ビット側が格納される。
【００７３】
演算処理ユニット４０５は、減算演算処理を行う。演算処理ユニット４０５には、汎用レジスターＲＧ８、ＲＧ９と、アキュムレーターＲＧ１８とが割り当てられる。そして、実行サイクル毎に、演算処理ユニット４０１〜４０４、４０６〜４０１１と並列に、演算処理ユニット４０５は、汎用レジスターＲＧ９の入力データから汎用レジスターＲＧ８の入力データを減算する減算演算を行い、減算演算結果を、アキュムレーターＲＧ１８に格納する。
【００７４】
演算処理ユニット４０６は、デクリメント演算処理を行う。演算処理ユニット４０６には、汎用レジスターＲＧａと、アキュムレーターＲＧ１ａとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット４０１〜４０５、４０７〜４０１１と並列に、演算処理ユニット４０６は、汎用レジスターＲＧａの入力データから１を減算したデクリメント演算を行い、デクリメント演算結果をアキュムレーターＲＧ１ａに格納する。
【００７５】
演算処理ユニット４０７は、インクリメント演算処理を行う。演算処理ユニット４０７には、汎用レジスターＲＧｂと、アキュムレーターＲＧ１ｂとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット４０１〜４０６、４０８〜４０１１と並列に、演算処理ユニット４０７は、汎用レジスターＲＧｂの入力データに１を加算したインクリメント演算を行い、インクリメント演算結果をアキュムレーターＲＧ１ｂに格納する。
【００７６】
演算処理ユニット４０８は、論理積演算処理を行う。演算処理ユニット４０８には、汎用レジスターＲＧｃ、ＲＧｄと、アキュムレーターＲＧ１ｃとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット４０１〜４０７、４０９〜４０１１と並列に、演算処理ユニット４０８は、汎用レジスターＲＧｃの入力データと汎用レジスターＲＧｄの入力データとの論理積演算を行い、論理積演算結果をアキュムレーターＲＧ１ｃに格納する。
【００７７】
演算処理ユニット４０９は、左方向の論理シフト演算処理を行う。演算処理ユニット４０９には、汎用レジスターＲＧｃと、アキュムレーターＲＧ２ｃとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット４０１〜４０８、４０１０〜４０１１と並列に、演算処理ユニット４０９は、汎用レジスターＲＧｃの入力データを左方向にシフトしたシフト演算を行い、シフト演算結果をアキュムレーターＲＧ２ｃに格納する。
【００７８】
演算処理ユニット４０１０は、論理和演算処理を行う。演算処理ユニット４０１０には、汎用レジスターＲＧｅ、ＲＧｆと、アキュムレーターＲＧ１ｅとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット４０１〜４０９、４０１１と並列に、演算処理ユニット４０１０は、汎用レジスターＲＧｅの入力データと汎用レジスターＲＧｆの入力データとの論理積演算を行い、論理積演算結果をアキュムレーターＲＧ１ｅに格納する。
【００７９】
演算処理ユニット４０１１は、右方向の論理シフト演算処理を行う。演算処理ユニット４０１１には、汎用レジスターＲＧｅと、アキュムレーターＲＧ２ｅとが割り当てられる。そして、実行サイクル毎に、演算処理ユニット４０１〜４０１０と並列に、演算処理ユニット４０１１は、汎用レジスターＲＧｅの入力データを右方向にシフトしたシフト演算を行い、シフト演算結果をアキュムレーターＲＧ２ｅに格納する。
【００８０】
図６に示す演算処理部４０の演算処理ユニット４０１〜４０１１は、それぞれ実行サイクル毎に、対応するアキュムレーターの値を更新する。即ち、命令デコード部６０のデコード結果にかかわらず、演算処理ユニット４０１〜４０１１は、それぞれ実行サイクル毎に、各演算処理を行う。従って、実行サイクル前に、割り当てられた汎用レジスターの入力データが書き換えられたとき、実行サイクル後に、対応するアキュムレーターに格納されるデータが変化することになる。
【００８１】
一方、図７に示す演算処理部４０は、図６の演算処理ユニット４０１〜４０１１の他に、演算処理ユニット４２１〜４２３を含むことができる。ここで、演算処理ユニット４２１、４２２は、図６の演算処理ユニット４０１、４０２であってもよい。演算処理ユニット４２１、４２２は、汎用レジスターのビット長である１６ビット長のデータ同士の加算処理を行う。演算処理ユニット４２３は、汎用レジスターのビット長の２倍のビット長である３２ビット長のデータ同士の加算処理を行う。
【００８２】
演算処理ユニット４２１（第１の加算ユニット）には、汎用レジスターＲＧ０、ＲＧ１（第１の入力レジスター、第２の入力レジスター）と、アキュムレーターＲＧ１０、ＲＧ２０とが割り当てられ、実行サイクル毎に、演算処理ユニット４２２、４２３と並列に、汎用レジスターＲＧ０、ＲＧ１の入力データ同士の１６ビット加算処理を行い、加算処理結果をアキュムレーターＲＧ１０、ＲＧ２０に格納する。ここで、アキュムレーターＲＧ１０に、加算処理結果の下位ビット側が格納される。
【００８３】
また、演算処理ユニット４２２（第３の加算ユニット）には、汎用レジスターＲＧ２、ＲＧ３（第３の入力レジスター、第４の入力レジスター）と、アキュムレーターＲＧ１２、ＲＧ２２とが割り当てられ、実行サイクル毎に、演算処理ユニット４２１、４２３と並列に、汎用レジスターＲＧ２、ＲＧ３の入力データ同士の１６ビット加算処理を行い、加算処理結果をアキュムレーターＲＧ１２、ＲＧ２２に格納する。ここで、アキュムレーターＲＧ１２に、加算処理結果の下位ビット側が格納される。
【００８４】
そして、演算処理ユニット４２３（第２の加算ユニット）には、汎用レジスターＲＧ０、ＲＧ１と、アキュムレーターＲＧ３０、ＲＧ４０、ＲＧ５０とが割り当てられ、実行サイクル毎に、演算処理ユニット４２１、４２２と並列に、汎用レジスターＲＧ０、ＲＧ１の入力データを連結したデータと所与の被加算値レジスターのデータ同士の３２ビット加算処理を行い、加算処理結果をアキュムレーターＲＧ３０、ＲＧ４０、ＲＧ５０に格納する。なお、図７では、被加算値レジスターとして、汎用レジスター部２０の汎用レジスターＲＧ２、ＲＧ３が演算処理ユニット４２３に割り当てられている。ここで、演算処理ユニット４２３は、汎用レジスターＲＧ０の入力データを下位ビット、汎用レジスターＲＧ１の入力データを上位ビットとして連結された３２ビットデータ（連結データ）と、汎用レジスターＲＧ２の入力データを下位ビット、汎用レジスターＲＧ３の入力データを上位ビットとして連結された３２ビットデータ（連結データ）との加算を行う。また、アキュムレーターＲＧ３０に加算処理結果の下位ビット、アキュムレーターＲＧ４０に加算処理結果の中位ビット、アキュムレーターＲＧ５０に加算処理結果の上位ビットが格納される。
【００８５】
そして、実行サイクル毎に、演算処理ユニット４２１が、汎用レジスターＲＧ１０、ＲＧ２０に１６ビット加算処理結果を格納すると共に、演算処理ユニット４２２が、汎用レジスターＲＧ３０、ＲＧ４０、ＲＧ５０に３２ビット加算処理結果を格納する。また、この実行サイクル毎に、演算処理ユニット４２２もまた、汎用レジスターＲＧ１２、ＲＧ２２に１６ビット加算処理結果を格納する。
【００８６】
このような構成により、共通の汎用レジスターの設定データに対して、互いに異なる演算処理を同時に行うことができ、同じ汎用レジスターの設定データに対する複数種類の演算処理結果を同時に得られることができるようになる。その結果、明示的に処理対象のデータサイズを指定する必要もないので、コード効率を向上させることができ、上記の加算処理を指定する命令を不要にできる。これは、コードの難読性を高めて、逆アセンブルを困難にして安全性の高いコードを生成することができ、リバースエンジニアリング防止やセキュリティーの向上に寄与できる効果が得られることを意味する。
【００８７】
図９（Ａ）、図９（Ｂ）に、図２のＣＰＵ１００の動作例の説明図を示す。図９（Ａ）は、ＣＰＵ１００のプログラムの一例を表す。ここで、ＣＰＵ１００は、図７に示す構成を有しているものとする。図９（Ａ）において、命令ＬＤＩは、指定された即値を汎用レジスターに転送する転送命令である。図９（Ｂ）は、ＣＰＵ１００の動作例のタイミング図を表す。なお、図９（Ｂ）は、演算による遅延を無視し、各汎用レジスターと各アキュムレーターの状態を模式的に表す。
【００８８】
例えば図９（Ａ）に示すように、汎用レジスターＲＧ０、ＲＧ１、ＲＧ２、ＲＧ３に、それぞれ即値「１０００ｈ」（ここで、「ｈ」は１６進数を意味する）、「ｆ０００ｈ」、「４０００ｈ」、「ｅ０００ｈ」を転送し、演算処理ユニット４２１、４２２の処理例を考える。このデータ転送命令列の直前において、汎用レジスターＲＧ０、ＲＧ１、ＲＧ２、ＲＧ３、アキュムレーターＲＧ１０、ＲＧ２０、ＲＧ１２、ＲＧ２２、ＲＧ３０、ＲＧ４０、ＲＧ５０が初期化され、各汎用レジスター及び各アキュムレーターのデータが「０」であるものとする。
【００８９】
まず、実行サイクルＴ１において、汎用レジスターＲＧ０に即値「１０００ｈ」が設定される。これにより、実行サイクルＴ１では、演算処理ユニット４２１は、汎用レジスターＲＧ０に設定された「１０００ｈ」と汎用レジスターＲＧ１に設定された「０」とを加算した加算演算結果「１０００ｈ」を、アキュムレーターＲＧ１０に設定する。このとき、アキュムレーターＲＧ２０のデータはそのままである。同様に、演算処理ユニット４２２は、汎用レジスターＲＧ２に設定された「０」と汎用レジスターＲＧ３に設定された「０」とを加算した加算演算結果「０」を、アキュムレーターＲＧ１２に設定するが、アキュムレーターＲＧ１２のデータはそのままである。このとき、アキュムレーターＲＧ２２のデータはそのままである。また、演算処理ユニット４２３は、汎用レジスターＲＧ０、ＲＧ１の設定データを連結して、汎用レジスターＲＧ２、ＲＧ３の設定データの連結データとの加算処理を行うため、アキュムレーターＲＧ３０には「１０００ｈ」が設定され、アキュムレーターＲＧ４０、ＲＧ５０は「０」のままである。
【００９０】
次に、実行サイクルＴ２において、汎用レジスターＲＧ１に即値「ｆ０００ｈ」が設定される。これにより、実行サイクルＴ２では、演算処理ユニット４２１は、汎用レジスターＲＧ０に設定された「１０００ｈ」と汎用レジスターＲＧ１に設定された「ｆ０００ｈ」とを加算した加算演算結果「１００００ｈ」を、アキュムレーターＲＧ１０、ＲＧ２０に設定する。より具体的には、アキュムレーターＲＧ１０に「０ｈ」、アキュムレーターＲＧ２０に「１ｈ」が設定される。一方、演算処理ユニット４２２は、汎用レジスターＲＧ２、ＲＧ３のデータがそのままであるため、加算演算結果をアキュムレーターＲＧ１２に設定するが、アキュムレーターＲＧ１２のデータはそのままである。このとき、アキュムレーターＲＧ２２のデータはそのままである。また、演算処理ユニット４２３は、汎用レジスターＲＧ０、ＲＧ１の設定データを連結して、汎用レジスターＲＧ２、ＲＧ３の設定データの連結データとの加算処理を行うため、アキュムレーターＲＧ３０、ＲＧ４０には「ｆ０００１０００ｈ」が設定され、アキュムレーターＲＧ３０には「１０００ｈ」、アキュムレーターＲＧ４０には「ｆ０００ｈ」が設定される。
【００９１】
次に、実行サイクルＴ３において、汎用レジスターＲＧ２に即値「４０００ｈ」が設定される。これにより、実行サイクルＴ３では、汎用レジスターＲＧ０、ＲＧ１のデータがそのままであるため、アキュムレーターＲＧ１０、ＲＧ２０のデータもそのままである。一方、演算処理ユニット４２２は、汎用レジスターＲＧ２に設定された「４０００ｈ」と汎用レジスターＲＧ３に設定された「０」とを加算した加算演算結果「４０００ｈ」を、アキュムレーターＲＧ１２に設定する。このとき、アキュムレーターＲＧ２２のデータはそのままである。また、演算処理ユニット４２３は、汎用レジスターＲＧ０、ＲＧ１の設定データを連結して、汎用レジスターＲＧ２、ＲＧ３の設定データの連結データとの加算処理を行うため、アキュムレーターＲＧ３０、ＲＧ４０には「ｆ０００５０００ｈ」が設定され、アキュムレーターＲＧ３０には「５０００ｈ」、アキュムレーターＲＧ４０には「ｆ０００ｈ」が設定される。
【００９２】
そして、実行サイクルＴ４において、汎用レジスターＲＧ３に即値「ｅ０００ｈ」が設定される。これにより、実行サイクルＴ４では、汎用レジスターＲＧ０、ＲＧ１のデータがそのままであるため、アキュムレーターＲＧ１０、ＲＧ２０のデータもそのままである。一方、演算処理ユニット４２２は、汎用レジスターＲＧ２に設定された「４０００ｈ」と汎用レジスターＲＧ３に設定された「ｅ０００ｈ」とを加算した加算演算結果「１２０００ｈ」を、アキュムレーターＲＧ１２、ＲＧ２２に設定する。より具体的には、アキュムレーターＲＧ１２には「２０００ｈ」が設定され、アキュムレーターＲＧ２２ｈには「１ｈ」が設定される。また、演算処理ユニット４２３は、汎用レジスターＲＧ０、ＲＧ１の設定データを連結して、汎用レジスターＲＧ２、ＲＧ３の設定データの連結データとの加算処理を行うため、アキュムレーターＲＧ３０、ＲＧ４０、ＲＧ５０には「１ｄ０００５０００ｈ」が設定され、アキュムレーターＲＧ３０には「５０００ｈ」、アキュムレーターＲＧ４０には「ｄ０００ｈ」、アキュムレーターＲＧ５０には「１ｈ」が設定される。
【００９３】
このように、プログラムの命令列に加算命令を含まなくても、入力レジスターとして割り当てられた汎用レジスターにデータを設定するだけで、実行サイクル毎に、異なるビット長の加算結果を得ることができるようになる。即ち、ＣＰＵ１００は、演算処理部４０が有する演算処理ユニット４２１〜４２３が行う演算処理に対応する算術演算命令、論理演算命令及びシフト演算命令をオペコードに持つ必要がなくなり、少ないビットフィールドを他の命令に割り当てることができ、極めてコード効率を高くすることができるようになる。
【００９４】
図１０に、実施形態１におけるＣＰＵ１００の命令セットの一例の説明図を示す。図１０は、ニーモニック毎に、１６ビットのオペコードと、処理内容の説明を表す。
【００９５】
図１０は、ＣＰＵ１００の命令セットを表しており、ＣＰＵ１００が実行可能な全命令を列挙したものである。即ち、ＣＰＵ１００の命令セットは、データ転送命令群１５０と、条件分岐命令群（より具体的には、無条件分岐命令群１６０と条件分岐命令群１７０）からなり、演算処理部４０において行われる算術演算命令、論理演算命令及びシフト演算命令が省略されている。
【００９６】
ここで、データ転送命令群１５０は、レジスター間転送命令と、レジスター・メモリー間転送命令とを有する。
【００９７】
レジスター間転送命令は、ＬＤＲ命令からなる。ＬＤＲ命令は、オペコード部で転送元として指定された転送元レジスターから、該オペコード部で転送先として指定された転送先レジスターへの転送を指示する命令である。レジスター・メモリー間転送命令は、ＬＤＩ命令、ＬＤＭ命令、ＳＴＭ命令、ＬＤＵ命令、ＳＴＵ命令からなる。ＬＤＩ命令は、オペコード部で指定された即値を、該オペコード部で指定された転送先レジスターへの転送を指示する命令である。ＬＤＭ命令は、オペコード部で指定された転送元のメモリー上のアドレスに格納されたデータを、該オペコード部で指定された転送先レジスターへの転送を指示する命令である。ＳＴＭ命令は、オペコード部で指定された転送元レジスターに設定されたデータを、該オペコード部で指定された転送先のメモリー上のアドレスへの転送を指示する命令である。ＬＤＵ命令は、オペコード部で指定された転送元レジスターの値をアドレスとしてメモリーから読み出し、該オペコード部で指定された転送先レジスターへの転送を指示する命令である。ＳＴＵ命令は、オペコード部で指定された転送元レジスターに設定されたデータを、転送先レジスターの値をアドレスとしたメモリーの記憶領域への転送を指示する命令である。
【００９８】
無条件分岐命令群１６０は、ＪＰ命令、ＪＳ命令、ＪＰＯ命令、ＪＳＯ命令、ＪＰＲ命令、ＪＳＲ命令、ＲＴＳ命令、及びＮＯＰ命令からなる。ＪＰ命令は、オペコード部で指定された分岐先絶対アドレスに分岐を指示する命令である。ＪＳ命令は、サブルーチン分岐命令であり、オペコード部で指定されたサブルーチン分岐先絶対アドレスにサブルーチン分岐する命令である。ＪＰＯ命令は、例えば現在の実行アドレスを基準に、オペコード部で指定される相対ジャンプ先アドレスだけ進んだ分岐先アドレス又は相対ジャンプ先アドレスだけ戻った分岐先アドレスへの分岐を指示する命令である。ＪＰＲ命令は、オペコード部で指定されるレジスターに格納される値を分岐先アドレスとして分岐を指示する命令である。ＪＳＲ命令は、オペコード部で指定されるレジスターに格納される値を相対値として、例えば現在の実行アドレスを基準に、該相対値だけ進んだ分岐先アドレス又は該相対値だけ戻った分岐先アドレスへの分岐を指示する命令である。ＲＴＳ命令は、サブルーチン復帰命令である。ＮＯＰ命令は、何も命令を実行しないことを指示する命令である。
【００９９】
条件分岐命令群１７０は、ＥＱＲ命令、ＥＱＩ命令、ＮＥＲ命令、ＮＥＩ命令、ＧＴＲ命令、ＧＴＩ命令、ＬＴＲ命令、及びＬＴＩ命令からなる。
【０１００】
ＥＱＲ命令は、オペコード部で指定された基準レジスターに格納された値と該オペコード部で指定された比較レジスターに格納された値とが一致したときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。ＥＱＩ命令は、オペコード部で指定された基準レジスターに格納された値と該オペコード部で指定された即値とが一致したときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。
【０１０１】
ＮＥＲ命令は、オペコード部で指定された基準レジスターに格納された値と該オペコード部で指定された比較レジスターに格納された値とが不一致のときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。ＮＥＩ命令は、オペコード部で指定された基準レジスターに格納された値と該オペコード部で指定された即値とが不一致のときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。
【０１０２】
ＧＴＲ命令は、オペコード部で指定された基準レジスターに格納された値が該オペコード部で指定された比較レジスターに格納された値より大きいときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。ＧＴＩ命令は、オペコード部で指定された基準レジスターに格納された値が該オペコード部で指定された即値より大きいときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。
【０１０３】
ＬＴＲ命令は、オペコード部で指定された基準レジスターに格納された値が該オペコード部で指定された比較レジスターに格納された値より小さいときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。ＬＴＩ命令は、オペコード部で指定された基準レジスターに格納された値が該オペコード部で指定された即値より小さいときに、例えばオペランド部で指定された分岐先アドレスへの分岐を指示する命令である。
【０１０４】
このように実施形態１では、ＣＰＵ１００の命令セットにおいて、データ転送命令群１５０と、無条件分岐命令群１６０と、条件分岐命令群１７０のみが規定されている。しかしながら、上記のような演算処理部４０を備えることにより、所与の実行サイクル毎に、算術演算結果、論理演算結果及びシフト演算結果を得ることができる。即ち、ＣＰＵ１００の命令デコード部６０は、算術演算命令、論理演算命令及びシフト演算命令を除く、データ転送命令、及び分岐命令（無条件分岐命令、条件分岐命令）をデコードする。しかも、命令デコード部６０のデコード結果にかかわらず、演算処理部４０が有する複数の演算処理ユニットは、実行サイクル毎に、各演算処理ユニットの処理結果を、対応するアキュムレーターに格納する。これにより、命令デコード部６０が簡素化されると共に、算術演算命令、論理演算命令及びシフト演算命令をオペコードに持つ必要がなくなり、少ないビットフィールドを他の命令に割り当てることができ、極めてコード効率を高くすることができるようになる。
【０１０５】
また、算術演算命令、論理演算命令及びシフト演算命令をオペコードに持つ必要がなくなるため、ＣＰＵ１００を実行するプログラムのコードは、従来のコードと比較して、コードの難読性を高めて、逆アセンブルを困難にして安全性の高いコードを生成することができる。この結果、リバースエンジニアリング防止やセキュリティーの向上に寄与できるようになる。
【０１０６】
〔実施形態２〕
なお、本発明に係るＣＰＵは、図７に示す構成に限定されるものではなく、演算処理ユニットに割り当てる汎用レジスターを異ならせることで、コード効率を高めながら種々の演算処理結果を同時に得られるようになる。
【０１０７】
図１１に、本発明に係る実施形態２における汎用レジスター部２０、演算処理部４０及びアキュムレーター部３０の構成例のブロック図を示す。図１１において、図７と同一部分には同一符号を付し、適宜説明を省略する。
【０１０８】
図１１に示す構成が図７に示す構成と異なる点は、汎用レジスターＲＧ０、ＲＧ１に３２ビットの設定データを設定し、汎用レジスターＲＧ２、ＲＧ３に３２ビットの設定データを設定したとき、演算処理ユニット４２１が下位１６ビット同士の加算処理を行い、演算処理ユニット４２２が上位１６ビット同士の加算処理を行うようにした点である。
【０１０９】
即ち、演算処理ユニット４２１（第１の加算ユニット）が、汎用レジスターＲＧ０（第１の入力レジスター）の設定データと汎用レジスターＲＧ２（第３の入力レジスター）の設定データの加算処理を行う。また、演算処理ユニット４２２（第３の加算ユニット）が、汎用レジスターＲＧ１（第２の入力レジスター）の設定データと汎用レジスターＲＧ３（第４の入力レジスター）の設定データの加算処理を行う。更に、演算処理ユニット４２３（第２の加算ユニット）は、下位データとしての汎用レジスターＲＧ０の設定データ及び上位データとしての汎用レジスターＲＧ１の設定データを連結した第１の連結データと、下位データとしての汎用レジスターＲＧ２の設定データ及び上位データとしての汎用レジスターＲＧ３の設定データを連結した第２の連結データとの加算処理を行う。そして、実行サイクル毎に、演算処理ユニット４２１が、アキュムレーターＲＧ１０、ＲＧ２０に処理結果を格納し、演算処理ユニット４２２が、アキュムレーターＲＧ１２、ＲＧ２２に処理結果を格納し、演算処理ユニット４２３が、アキュムレーターＲＧ３０、ＲＧ４０、ＲＧ５０に処理結果を格納する。より具体的には、複数の汎用レジスターの中から汎用レジスターＲＧ０、ＲＧ２を演算処理ユニット４２１に割り当てると共に、汎用レジスターＲＧ１、ＲＧ３を演算処理ユニット４２２に割り当て、演算処理ユニット４２３には、汎用レジスターＲＧ０、ＲＧ１により連結されたデータと、汎用レジスターＲＧ２、ＲＧ３により連結されたデータとの加算処理を行わせる。
【０１１０】
このように、並列動作可能な演算処理ユニット４２１〜４２３のそれぞれに割り当てる汎用レジスターを変更することで、例えば次のような処理において、コードの効率化とリバースエンジニアリング防止等の観点で好適なＣＰＵを提供できるようになる。
【０１１１】
図１２に、実施形態２におけるＣＰＵの構成による効果の説明図を示す。図１２は、実施形態２におけるＣＰＵに好適なテーブルを参照した線形補間処理の説明図を表す。
図１３に、図１２の線形補間処理で参照されるテーブルの説明図を示す。
図１４に、図１２の処理を実現する実施形態２におけるＣＰＵのプログラムの一例を示す。なお、図１４では、実施形態２におけるＣＰＵが、図６及び図７に示すように、演算処理ユニット４２１〜４２３と並列動作可能な演算処理ユニット４０４を有するものとする。
図１５に、図１２の処理を実現する一般的なＣＰＵのプログラムの一例を示す。
【０１１２】
図１２は、図１３に示すテーブルを参照しながら所与の関数ｆ（ｘ）の線形補間処理の様子を表している。図１３のテーブルＡには、ベースアドレス「１０００ｈ」からｆ（ｘ）の離散値が格納されている。また、図１３のテーブルＢには、ベースアドレス「２０００ｈ」からｆ´（ｘ）（ｘにおける傾き）の値が格納されている。従って、ベースアドレスを基準とした所与のオフセット分だけ進んだ記憶領域には、テーブルＡにはｆ（ｘ０）の値、テーブルＢにはｆ´（ｘ０）が格納されている。
【０１１３】
このとき、テーブルＡに格納されるｆ（ｘ１）を基準に、ｆ（ｘ２）を線形補間処理で求める際に、図１４に示すプログラムでは、テーブルＡからｆ（ｘ１）を汎用レジスターＲＧ４に代入し、テーブルＢからｆ´（ｘ１）を汎用レジスターＲＧ６に代入し、（ｘ２−ｘ１）に対応する値を汎用レジスターＲＧ７に代入して、（ｆ（ｘ２）−ｆ（ｘ１））に対応する値をアキュムレーターＲＧ２６に代入している。そして、汎用レジスターＲＧ１０、ＲＧ２０に、ｆ（ｘ２）を代入している。
【０１１４】
これに対して、一般的なプログラムでは、図１５に示すように、ＡＤＤ命令やＭＵＬ命令を使って、ｆ（ｘ２）を求めていくことになる。そのため、一般的なプログラムでコーディングを行う場合、命令セットが複雑になり、コードの効率化ができない。
【０１１５】
このように、実施形態２によれば、線形補間処理においてテーブルを参照しながら異なるビット長の加算処理等を行うことができる。そのため、明示的に演算処理を指定する必要がなくなり、コードの効率化とリバースエンジニアリング防止やセキュリティーの向上に寄与できるようになる。
【０１１６】
〔実施形態３〕
実施形態１又は実施形態２では、演算処理ユニット４２３が、演算処理ユニット４２１、４２２の処理結果にかかわらず並列動作可能に構成されていたが、本発明はこれに限定されるものではない。
【０１１７】
図１６に、本発明に係る実施形態３における汎用レジスター部２０、演算処理部４０及びアキュムレーター部３０の構成例のブロック図を示す。図１６において、図１１と同一部分には同一符号を付し、適宜説明を省略する。
【０１１８】
図１６に示す構成が図１１に示す構成と異なる点は、演算処理ユニット４２３が演算処理ユニット４２１、４２２の処理結果の加算処理を行うようにした点である。
【０１１９】
即ち、演算処理ユニット４２１（第１の加算ユニット）が、汎用レジスターＲＧ０（第１の入力レジスター）の設定データと汎用レジスターＲＧ２（第３の入力レジスター）の設定データの加算処理を行う。また、演算処理ユニット４２２（第３の加算ユニット）が、汎用レジスターＲＧ１（第２の入力レジスター）の設定データと汎用レジスターＲＧ３（第４の入力レジスター）の設定データの加算処理を行う。更に、演算処理ユニット４２３（第２の加算ユニット）は、演算処理ユニット４２１の処理結果と演算処理ユニット４２２の処理結果との加算処理を行う。そして、実行サイクル毎に、演算処理ユニット４２１が、アキュムレーターＲＧ１０、ＲＧ２０に処理結果を格納し、演算処理ユニット４２２が、アキュムレーターＲＧ１２、ＲＧ２２に処理結果を格納し、演算処理ユニット４２３が、アキュムレーターＲＧ３０、ＲＧ４０、ＲＧ５０に処理結果を格納する。より具体的には、複数の汎用レジスターの中から汎用レジスターＲＧ０、ＲＧ２を演算処理ユニット４２１に割り当てると共に、汎用レジスターＲＧ１、ＲＧ３を演算処理ユニット４２２に割り当て、演算処理ユニット４２３には、演算処理ユニット４２１の処理結果と演算処理ユニット４２２の処理結果との加算処理を行わせる。
【０１２０】
このように、並列動作可能な演算処理ユニット４２１〜４２３のそれぞれに割り当てる汎用レジスターを変更することでも、実施形態１又は実施形態２と同様に、コードの効率化とリバースエンジニアリング防止等の観点で好適なＣＰＵを提供できるようになる。
【０１２１】
２．  電子機器
上記のいずれかの実施形態におけるＣＰＵは、プロジェクター等の電子機器に搭載することができる。なお、以下では上記のいずれかの実施形態における電子機器がプロジェクターである例について説明するが、上記のいずれかの実施形態におけるＣＰＵが適用される電子機器がプロジェクターに限定されるものではなく、種々の電子機器に適用できることは言うまでもない。
【０１２２】
図１７に、本発明に係る電子機器としてのプロジェクターを含む画像表示システムの構成例のブロック図を示す。
【０１２３】
画像表示システム３００は、プロジェクター（広義には画像表示装置）３１０と、スクリーンＳＣＲとを含む。プロジェクター３１０は、入力画像信号に基づいて図示しない光源からの光を変調し、変調後の光をスクリーンＳＣＲに投射することで画像を表示する。
【０１２４】
このプロジェクター３１０は、画像処理装置３２０（広義には画像処理部）と、投射装置４００（広義には投射部、画像表示部）とを含む。画像処理装置３２０は、入力画像信号を補正し、補正後の画像信号を投射装置４００に出力する。このような画像処理装置３２０が行う補正処理としては、例えばエッジ強調処理、ディテール強調処理や階調補正処理等がある。投射装置４００は、画像処理装置３２０からの画像信号に基づいて変調した光をスクリーンＳＣＲに投射する。
【０１２５】
図１８に、図１７の画像処理装置３２０のハードウェア構成例のブロック図を示す。
【０１２６】
画像処理装置３２０は、ＣＰＵ３２２、読み出し専用メモリー（Read Only Memory：ＲＯＭ）３２４、ランダムアクセスメモリー（Random Access Memory：ＲＡＭ）３２６、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）回路３２８、バス３２９を有し、バス３２９を介して、ＣＰＵ３２２、ＲＯＭ３２４、ＲＡＭ３２６、及びＩ／Ｏ回路３２８が電気的に相互に接続されている。
【０１２７】
例えばＲＯＭ３２４又はＲＡＭ３２６には、画像処理装置３２０の機能を実現するプログラムやデータが記憶される。このプログラムは、図１０に示す命令セットで規定されたオペコード部と該オペコードに対応したオペランド部とを有する命令データ列である。ＲＯＭ３２４又はＲＡＭ３２６に格納されるデータは、この命令データ列を構成する命令データにより参照される。
【０１２８】
ＣＰＵ３２２は、上記のいずれかの実施形態における情報処理装置１０としての図２のＣＰＵ１００の構成及び機能を有する。ＣＰＵ３２２は、ＲＯＭ３２４又はＲＡＭ３２６に記憶されたプログラムを読み出し、該プログラムに対応した処理を実行することで、画像処理装置３２０の機能をソフトウェア処理で実現できる。なお、ＲＡＭ３２６は、ＣＰＵ３２２による処理の作業エリアとして用いられたり、Ｉ／Ｏ回路３２８やＲＯＭ３２４のバッファエリアとして用いられたりする。
【０１２９】
Ｉ／Ｏ回路３２８は、図示しない画像信号生成装置からの画像信号の入力インターフェイス処理や、画像処理装置３２０から投射装置４００への画像信号の出力インターフェイス処理等を行う。
【０１３０】
画像処理装置３２０は、図１８に示す構成により、ＲＯＭ３２４又はＲＡＭ３２６に格納されたプログラムを読み出し、該プログラムに対応した処理を実行することで、入力画像信号に対して例えばエッジ強調処理、ディテール強調処理や階調補正処理等を行った画像信号をソフトウェア処理で生成する。ここでは、算術演算命令、論理演算命令及びシフト演算命令がない命令データ列で算術演算処理等を実現できるため、極めて高いコード効率で、コードの難読性を高めて、安全性の高いコードで、例えばエッジ強調処理、ディテール強調処理や階調補正処理等の画像処理を行うことができるようになる。このような画像処理装置３２０によって処理された画像信号は、投射装置４００に送られる。
【０１３１】
図１９に、図１７の投射装置４００の構成例の図を示す。図１９では、投射装置４００が、いわゆる３板式の液晶プロジェクターにより構成されるものとして説明するが、本発明に係る投射装置がいわゆる３板式の液晶プロジェクターにより構成されるものに限定されるものではない。即ち、以下では、１画素がＲ成分のサブ画素、Ｇ成分のサブ画素、及びＢ成分のサブ画素により構成されるものとして説明するが、１画素を構成するサブ画素数（色成分数）に限定されるものではない。
【０１３２】
また、図１９では、画像処理装置３２０から入力される輝度信号Ｙ、色差信号Ｕ、Ｖが、ＲＧＢの各色成分の画像信号に変換された後、色成分毎に光源からの光を変調するものとする。この場合、ＲＧＢ信号への変換回路は、画像処理装置３２０が備えていてもよいし、投射装置４００が備えていてもよい。
【０１３３】
投射装置４００は、光源４１０、インテグレーターレンズ４１２、４１４、偏光変換素子４１６、重畳レンズ４１８、Ｒ用ダイクロイックミラー４２０Ｒ、Ｇ用ダイクロイックミラー４２０Ｇ、反射ミラー４２２、Ｒ用フィールドレンズ４２４Ｒ、Ｇ用フィールドレンズ４２４Ｇ、Ｒ用液晶パネル４３０Ｒ（第１の光変調素子）、Ｇ用液晶パネル４３０Ｇ（第２の光変調素子）、Ｂ用液晶パネル４３０Ｂ（第３の光変調素子）、リレー光学系４４０、クロスダイクロイックプリズム４６０、投射レンズ４７０を含む。Ｒ用液晶パネル４３０Ｒ、Ｇ用液晶パネル４３０Ｇ及びＢ用液晶パネル４３０Ｂとして用いられる液晶パネルは、透過型の液晶表示装置である。リレー光学系４４０は、リレーレンズ４４２、４４４、４４６、反射ミラー４４８、４５０を含む。
【０１３４】
光源４１０は、例えば超高圧水銀ランプにより構成され、少なくともＲ成分の光、Ｇ成分の光、Ｂ成分の光を含む光を射出する。インテグレーターレンズ４１２は、光源４１０からの光を複数の部分光に分割するための複数の小レンズを有する。インテグレーターレンズ４１４は、インテグレーターレンズ４１２の複数の小レンズに対応する複数の小レンズを有する。重畳レンズ４１８は、インテグレーターレンズ４１２の複数の小レンズから射出される部分光を液晶パネル上で重畳する。
【０１３５】
また偏光変換素子４１６は、偏光ビームスプリッターアレイとλ／２板とを有し、光源４１０からの光を略一種類の偏光光に変換する。偏光ビームスプリッターアレイは、インテグレーターレンズ４１２により分割された部分光をｐ偏光とｓ偏光に分離する偏光分離膜と、偏光分離膜からの光の向きを変える反射膜とを、交互に配列した構造を有する。偏光分離膜で分離された２種類の偏光光は、λ／２板によって偏光方向が揃えられる。この偏光変換素子４１６によって略一種類の偏光光に変換された光が、重畳レンズ４１８に照射される。
【０１３６】
重畳レンズ４１８からの光は、Ｒ用ダイクロイックミラー４２０Ｒに入射される。Ｒ用ダイクロイックミラー４２０Ｒは、Ｒ成分の光を反射して、Ｇ成分及びＢ成分の光を透過させる機能を有する。Ｒ用ダイクロイックミラー４２０Ｒを透過した光は、Ｇ用ダイクロイックミラー４２０Ｇに照射され、Ｒ用ダイクロイックミラー４２０Ｒにより反射した光は反射ミラー４２２により反射されてＲ用フィールドレンズ４２４Ｒに導かれる。
【０１３７】
Ｇ用ダイクロイックミラー４２０Ｇは、Ｇ成分の光を反射して、Ｂ成分の光を透過させる機能を有する。Ｇ用ダイクロイックミラー４２０Ｇを透過した光は、リレー光学系４４０に入射され、Ｇ用ダイクロイックミラー４２０Ｇにより反射した光はＧ用フィールドレンズ４２４Ｇに導かれる。
【０１３８】
リレー光学系４４０では、Ｇ用ダイクロイックミラー４２０Ｇを透過したＢ成分の光の光路長と他のＲ成分及びＧ成分の光の光路長との違いをできるだけ小さくするために、リレーレンズ４４２、４４４、４４６を用いて光路長の違いを補正する。リレーレンズ４４２を透過した光は、反射ミラー４４８によりリレーレンズ４４４に導かれる。リレーレンズ４４４を透過した光は、反射ミラー４５０によりリレーレンズ４４６に導かれる。リレーレンズ４４６を透過した光は、Ｂ用液晶パネル４３０Ｂに照射される。
【０１３９】
Ｒ用フィールドレンズ４２４Ｒに照射された光は、平行光に変換されてＲ用液晶パネル４３０Ｒに入射される。Ｒ用液晶パネル４３０Ｒは、光変調素子（光変調部）として機能し、Ｒ用画像信号に基づいて透過率（通過率、変調率）が変化するようになっている。従って、Ｒ用液晶パネル４３０Ｒに入射された光（第１の色成分の光）は、Ｒ用画像信号に基づいて変調され、変調後の光がクロスダイクロイックプリズム４６０に入射される。
【０１４０】
Ｇ用フィールドレンズ４２４Ｇに照射された光は、平行光に変換されてＧ用液晶パネル４３０Ｇに入射される。Ｇ用液晶パネル４３０Ｇは、光変調素子（光変調部）として機能し、Ｇ用画像信号に基づいて透過率（通過率、変調率）が変化するようになっている。従って、Ｇ用液晶パネル４３０Ｇに入射された光（第２の色成分の光）は、Ｇ用画像信号に基づいて変調され、変調後の光がクロスダイクロイックプリズム４６０に入射される。
【０１４１】
リレーレンズ４４２、４４４、４４６で平行光に変換された光が照射されるＢ用液晶パネル４３０Ｂは、光変調素子（光変調部）として機能し、Ｂ用画像信号に基づいて透過率（通過率、変調率）が変化するようになっている。従って、Ｂ用液晶パネル４３０Ｂに入射された光（第３の色成分の光）は、Ｂ用画像信号に基づいて変調され、変調後の光がクロスダイクロイックプリズム４６０に入射される。
【０１４２】
Ｒ用液晶パネル４３０Ｒ、Ｇ用液晶パネル４３０Ｇ、Ｂ用液晶パネル４３０Ｂは、それぞれ同様の構成を有している。各液晶パネルは、電気光学物質である液晶を一対の透明なガラス基板に密閉封入したものであり、例えばポリシリコン薄膜トランジスタをスイッチング素子として、各サブ画素の画像信号に対応して各色光の通過率を変調する。
【０１４３】
ここでは、画像処理装置３２０が、１画素を構成する色成分毎に、入力画像信号に対して上記の例えばエッジ強調処理、ディテール強調処理や階調補正処理等を行った画像信号を生成する。そして、投射装置４００では、１画素を構成する色成分毎に光変調素子としての液晶パネルが設けられ、各液晶パネルの透過率がサブ画素に対応した画像信号により制御される。即ち、Ｒ成分のサブ画素用の画像信号が、Ｒ用液晶パネル４３０Ｒの透過率（通過率、変調率）の制御に用いられ、Ｇ成分のサブ画素用の画像信号が、Ｇ用液晶パネル４３０Ｇの透過率の制御に用いられ、Ｂ成分のサブ画素用の画像信号が、Ｂ用液晶パネル４３０Ｂの透過率の制御に用いられる。
【０１４４】
クロスダイクロイックプリズム４６０は、Ｒ用液晶パネル４３０Ｒ、Ｇ用液晶パネル４３０Ｇ及びＢ用液晶パネル４３０Ｂからの入射光を合成した合成光を出射光として出力する機能を有する。投射レンズ４７０は、出力画像をスクリーンＳＣＲ上に拡大して結像させるレンズである。
【０１４５】
この画像表示システム３００では、このような構成を有する投射装置４００を制御して、上記の階調補正処理等において補正された画像信号に基づいてスクリーンＳＣＲに画像を表示することができる。
【０１４６】
以上のように、プロジェクター３１０は、プログラム及びデータを記憶するメモリーと、このプログラム及びデータに対応した演算処理を行うＣＰＵ３２２（又はＣＰＵ３２２を有する画像処理装置３２０）とを含む。これにより、極めて高いコード効率で、複雑な演算処理を実現する一方で、リバースエンジニアリング防止やセキュリティー防止が可能なプロジェクター３１０又は該プロジェクター３１０を含む画像表示システム３００を提供できるようになる。
【０１４７】
以上、本発明に係る情報処理装置、演算処理方法及び電子機器等を上記の実施形態に基づいて説明したが、本発明は上記の実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【０１４８】
（１）上記の各実施形態では、汎用レジスターが、演算処理部を構成する演算処理ユニットのいずれかに予め割り当てられているものとして説明したが、各汎用レジスターが、演算処理部が有する複数の演算処理ユニットのいずれかに動的に割り当てられるようにしてもよい。
【０１４９】
（２）上記の各実施形態では、アキュムレーターが、演算処理部を構成する演算処理ユニットのいずれかに予め割り当てられているものとして説明したが、各アキュムレーターが、演算処理部が有する複数の演算処理ユニットのいずれかに動的に割り当てられるようにしてもよい。
【０１５０】
（３）上記の各実施形態で説明した汎用レジスターの数やアキュムレーターの数に、本発明が限定されるものではない。
【０１５１】
（４）上記の各実施形態では、演算処理ユニットが行う演算として図８に示す算術演算、論理演算及びシフト演算を例に説明したが、本発明は、図８に示す算術演算、論理演算及びシフト演算に限定されるものではない。例えば、演算処理ユニットが除算演算を行うようにしてもよい。
【０１５２】
（５）上記の各実施形態では、図１０に示す命令セットを例に説明したが、本発明は、図１０に示す命令セットに限定されるものではない。
【０１５３】
（６）上記の各実施形態では、本発明に係る情報処理装置が適用される電子機器としてプロジェクターを例に説明したが、本発明はこれに限定されるものではない。また、このプロジェクターにおいて、１画素を３つの色成分のサブ画素で構成されるものとして説明したが、本発明はこれに限定されるものではない。１画素を構成する色成分数が２、又は４以上であってもよい。更に、プロジェクターの光変調素子として透過型の液晶パネルを用いるものとして説明したが、本発明はこれに限定されるものではない。光変調部として、例えばＤＬＰ（Digital Light Processing)（登録商標）、ＬＣＯＳ（Liquid Crystal On Silicon）等を採用してもよい。更に、プロジェクターの光変調素子として、いわゆる３板式の透過型の液晶パネルを例に説明したが、単板式の液晶パネルや４板式以上の透過型の液晶パネルを採用してもよい。
【０１５４】
（７）上記において、本発明を、情報処理装置、演算処理方法及び電子機器として説明したが、本発明はこれに限定されるものではない。
【符号の説明】
【０１５５】
１０…情報処理装置、  ２０…汎用レジスター部、  ３０…アキュムレーター部、
４０…演算処理部、  ４０１〜４０１１，４２１〜４２３…演算処理ユニット、
５０…レジスター部、  ６０…命令デコード部、  ７０…バス制御部、
８０…プログラムカウンター、  ８２…スタックポインター、
８４…オペコードレジスター、  ８６…オペランドレジスター、  ９０…制御部、
１００，３２２…ＣＰＵ、  ３００…画像表示システム、  ３１０…プロジェクター、
３２０…画像処理装置、  ３２４…ＲＯＭ、  ３２６…ＲＡＭ、  ３２８…Ｉ／Ｏ回路、
３２９…バス、  ４００…投射装置、  ４１０…光源、
４１２，４１４…インテグレーターレンズ、  ４１６…偏光変換素子、
４１８…重畳レンズ、  ４２０Ｒ…Ｒ用ダイクロイックミラー、
４２０Ｇ…Ｇ用ダイクロイックミラー、  ４２２，４４８，４５０…反射ミラー、
４２４Ｒ…Ｒ用フィールドレンズ、  ４２４Ｇ…Ｇ用フィールドレンズ、
４３０Ｒ…Ｒ用液晶パネル、  ４３０Ｇ…Ｇ用液晶パネル、
４３０Ｂ…Ｂ用液晶パネル、  ４４０…リレー光学系、
４４２，４４４，４４６…リレーレンズ、  ４６０…クロスダイクロイックプリズム、
４７０…投射レンズ、  ＥＸＵ１…第１の演算処理ユニット、
ＥＸＵ２…第２の演算処理ユニット、  ＥＸＵ３…第３の演算処理ユニット
【図１】
2010231321.tif 000003
【図２】
2010231321.tif 000004
【図３】
2010231321.tif 000005
【図４】
2010231321.tif 000006
【図５】
2010231321.tif 000007
【図６】
2010231321.tif 000008
【図７】
2010231321.tif 000009
【図８】
2010231321.tif 000010
【図９】
2010231321.tif 000011
【図１０】
2010231321.tif 000012
【図１１】
2010231321.tif 000013
【図１２】
2010231321.tif 000014
【図１３】
2010231321.tif 000015
【図１４】
2010231321.tif 000016
【図１５】
2010231321.tif 000017
【図１６】
2010231321.tif 000018
【図１７】
2010231321.tif 000019
【図１８】
2010231321.tif 000020
【図１９】
2010231321.tif 000021