(57)【要約】【課題】条件データに基づいて浮動小数点型データの符号を高速に変換する。【解決手段】信号線１４９には、符号が付加される対象である浮動小数点型の対象データが供給される。信号線１４８には、その対象データに符号を付加する条件を含む条件データが供給される。符号データ生成部２００は、信号線１４８からの条件データに含まれている条件を抽出して、この抽出された条件に基づいて、信号線１４９からの対象データに符号を付加するための符号データを生成する。符号付加部３００は、信号線１４９を介して供給される対象データを整数型のデータとして整数演算することによって、符号データ生成部２００からの符号データと信号線１４９からの対象データとに基づいて対象データに符号を付加する。【選択図】図２
2010160708.tif 000002
【特許請求の範囲】
【請求項１】
符号が付加される対象である浮動小数点型の対象データと当該対象データに前記符号を付加する条件を含む条件データとを供給するデータ供給部と、
前記条件データに含まれている前記条件を抽出して前記抽出された条件に基づいて前記対象データに前記符号を付加するための符号データを生成する符号データ生成部と、
前記対象データを整数型のデータとして整数演算することによって前記符号データと前記対象データとに基づいて当該対象データに前記符号を付加する整数演算部と
を具備する演算器。
【請求項２】
前記符号データ生成部は、前記条件データが浮動小数点型のデータである場合には前記条件データを整数型のデータとして整数演算する請求項１記載の演算器。
【請求項３】
前記符号データ生成部は、前記条件を抽出するためのビット列を保持するビット列保持部を備え、前記ビット列を用いて前記条件データから前記条件を抽出する請求項１記載の演算器。
【請求項４】
前記符号データ生成部は、前記データ供給部から供給された複数の前記条件データに基づいて新たな条件データを生成して、前記新たな条件データに含まれている前記条件を抽出して前記抽出された条件に基づいて前記符号データを生成する請求項１記載の演算器。
【請求項５】
前記符号データ生成部は、前記データ供給部から供給された複数の前記条件データに基づいて前記複数の条件データに含まれている複数の前記条件を抽出して、前記抽出された複数の条件に基づいて前記符号データを生成する請求項１記載の演算器。
【請求項６】
前記符号データ生成部は、前記条件データの値にかかわらず前記ビット列保持部から供給されるビット列を前記符号データとして前記符号算出部に供給し、
前記整数演算部は、当該符号データに基づいて前記対象データの符号を反転させる
請求項１記載の演算器。
【請求項７】
前記符号データ生成部は、前記条件データにおける符号を示すビットである符号ビットを前記条件として抽出して前記抽出された符号ビットに基づいて前記符号データを生成する請求項１記載の演算器。
【請求項８】
前記符号データ生成部は、前記条件データにおける符号を示すビットである符号ビットを前記条件として抽出して前記抽出された符号ビットの符号を反転させて新たな符号ビットを生成して前記新たな符号ビットに基づいて前記符号データを生成する請求項１記載の演算器。
【請求項９】
前記符号データ生成部は、整数演算部における符号位置が整合するように前記条件データにおける符号を示すビットである符号ビットをシフトする請求項１記載の演算器。
【請求項１０】
符号が付加される対象である浮動小数点型の対象データと当該対象データに前記符号を付加する条件を含む条件データとを供給するレジスタと、
前記条件データに含まれている前記条件を抽出して前記抽出された条件に基づいて前記対象データに前記符号を付加するための符号データを生成する符号データ生成部と、
前記対象データを整数型のデータとして整数演算することによって前記符号データと前記対象データとに基づいて当該対象データに前記符号を付加する整数演算部と
を具備するプロセッサ。
【請求項１１】
符号が付加される対象である浮動小数点型の対象データと前記符号を付加する条件を含む条件データとに基づいて前記対象データに前記符号を付加するコードが含まれるソースプログラムを記憶するソースプログラム記憶部と、
前記ソースプログラム記憶部から前記ソースプログラムを読み出して前記読み出されたソースプログラムから前記コードを抽出する符号付加コード抽出部と、
前記条件データに含まれている前記条件を抽出して前記抽出された条件に基づいて前記対象データに前記符号を付加するための符号データを生成するコードと前記対象データを整数型のデータとして整数演算することによって前記符号データおよび前記対象データに基づいて前記対象データに前記符号を付加するコードとを生成する符号付加コード生成部と、
前記抽出されたコードを前記生成されたコードに変換する符号付加コード変換部と、
前記変換されたコードを含む前記ソースプログラムに基づいて機械語プログラムのコードを生成するコード生成部と
を具備するコンパイル処理装置。
【請求項１２】
符号が付加される対象である浮動小数点型の対象データと前記符号を付加する条件を含む条件データとに基づいて前記対象データに前記符号を付加するコードが含まれるソースプログラムを記憶するソースプログラム記憶部を備えるコンピュータにおけるコンパイル方法であって、
前記ソースプログラム記憶部から前記ソースプログラムを読み出して前記読み出されたソースプログラムから前記コードを抽出する符号付加コード抽出手順と、
前記条件データに含まれている前記条件を抽出して前記抽出された条件に基づいて前記対象データに前記符号を付加するための符号データを生成するコードと前記対象データを整数型のデータとして整数演算することによって前記符号データおよび前記対象データに基づいて前記対象データに前記符号を付加するコードとを生成する符号付加コード生成手順と、
前記抽出されたコードを前記生成されたコードに変換する符号付加コード変換手順と、
前記変換されたコードを含む前記ソースプログラムに基づいて機械語プログラムのコードを生成するコード生成手順と
を具備するコンパイル処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算器に関し、特に浮動小数点演算および整数演算を行う演算器、プロセッサ、コンパイル処理装置およびコンパイル処理方法に関する。
【背景技術】
【０００２】
コンピュータなどの情報処理装置にて実数を表現する手法として、整数型（固定小数点型）や浮動小数点型などの表現手法がある。従来、浮動小数点型のデータの符号を変更する装置には、浮動小数点型のデータを演算することに特化した浮動小数点演算器を用いて符号を変換する装置がある。近年、この浮動小数点型のデータの符号の変換をより高速に処理する装置が求められている。この浮動小数点型のデータの符号の変換を高速に処理する装置として、浮動小数点型のデータを符号なし整数型のデータとして整数演算をする演算装置が提案されている（例えば、特許文献１参照。）。この演算装置は、浮動小数点型のデータを符号なし整数型のデータとして整数演算処理することによって、浮動小数点型のデータの符号を示す符号ビットのみを、正の数を示すビット値に変更する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３１８４７号公報（図１）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の従来技術では、浮動小数点型のデータを符号なし整数型のデータとして整数演算をすることにより、浮動小数点型のデータの符号ビットを、正の値を示す符号ビットに高速に変換することができる。しかしながら、このような演算装置においては、全ての浮動小数点型のデータの符号ビットを正の値を示す符号ビットに変換するため、他の条件に基づいて浮動小数点型のデータにおける符号ビットの変換を行うことができない。
【０００５】
そこで、本発明はこのような状況に鑑みてなされたものであり、条件データに基づいて浮動小数点型のデータの符号を高速に変換することを目的としている。
【課題を解決するための手段】
【０００６】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、符号が付加される対象である浮動小数点型の対象データと当該対象データに上記符号を付加する条件を含む条件データとを供給するデータ供給部と、上記条件データに含まれている上記条件を抽出して上記抽出された条件に基づいて上記対象データに上記符号を付加するための符号データを生成する符号データ生成部と、上記対象データを整数型のデータとして整数演算することによって上記符号データと上記対象データとに基づいて当該対象データに上記符号を付加する整数演算部とを具備する演算器である。これにより、符号が付加される対象である浮動小数点型の対象データと、当該対象データに上記符号を付加する条件を含む条件データとに基づいて整数演算することによって対象データに符号を付加させるという作用をもたらす。
【０００７】
また、この第１の側面において、上記符号データ生成部は、上記条件データが浮動小数点型のデータである場合には上記条件データを整数型のデータとして整数演算するようにしてもよい。これにより、浮動小数点型のデータに基づいて整数演算器により符号データを生成させるという作用をもたらす。
【０００８】
また、この第１の側面において、上記符号データ生成部は、上記条件を抽出するためのビット列を保持するビット列保持部を備え、前記ビット列を用いて前記条件データから前記条件を抽出するようにしてもよい。これにより、条件を抽出するためのビット列に基づいて条件を抽出させるという作用をもたらす。
【０００９】
また、この第１の側面において、上記符号データ生成部は、上記データ供給部から供給された複数の上記条件データに基づいて新たな条件データを生成して、上記新たな条件データに含まれている上記条件を抽出して上記抽出された条件に基づいて上記符号データを生成するようにしてもよい。これにより、複数の条件データに基づいて新たな条件データを生成し、符号データを生成させるという作用をもたらす。
【００１０】
また、この第１の側面において、上記符号データ生成部は、上記データ供給部から供給された複数の上記条件データに基づいて上記複数の条件データに含まれている複数の上記条件を抽出して、上記抽出された複数の条件に基づいて上記符号データを生成するようにしてもよい。これにより、複数の条件データから生成された複数の条件に基づいて符号データを生成させるという作用をもたらす。
【００１１】
また、この第１の側面において、上記符号データ生成部は、上記条件データの値にかかわらず上記ビット列保持部から供給されるビット列を上記符号データとして上記符号算出部に供給し、上記整数演算部は、当該符号データに基づいて上記対象データの符号を反転させるようにしてもよい。これにより、条件データの値にかかわらず、対象データの符号を反転させるという作用をもたらす。
【００１２】
また、この第１の側面において、上記符号データ生成部は、上記条件データにおける符号を示すビットである符号ビットを上記条件として抽出して上記抽出された符号ビットに基づいて上記符号データを生成するようにしてもよい。これにより、条件データにおける符号ビットに基づいて符号データを生成させるという作用をもたらす。
【００１３】
また、この第１の側面において、上記符号データ生成部は、上記条件データにおける符号を示すビットである符号ビットを上記条件として抽出して上記抽出された符号ビットの符号を反転させて新たな符号ビットを生成して上記新たな符号ビットに基づいて上記符号データを生成するようにしてもよい。これにより、条件データにおける符号ビットを反転させた符号ビットに基づいて符号データを生成させるという作用をもたらす。
【００１４】
また、この第１の側面において、上記符号データ生成部は、整数演算部における符号位置が整合するように上記条件データにおける符号を示すビットである符号ビットをシフトさせるようにしてもよい。これにより、符号データの符号ビットの位置と、対象データの符号ビットの位置とを整合させるという作用をもたらす。
【００１５】
また、本発明の第２の側面は、符号が付加される対象である浮動小数点型の対象データと当該対象データに上記符号を付加する条件を含む条件データとを供給するレジスタと、上記条件データに含まれている上記条件を抽出して上記抽出された条件に基づいて上記対象データに上記符号を付加するための符号データを生成する符号データ生成部と、上記対象データを整数型のデータとして整数演算することによって上記符号データと上記対象データとに基づいて当該対象データに上記符号を付加する整数演算部とを具備するプロセッサである。これにより、符号が付加される対象である浮動小数点型の対象データと、当該対象データに上記符号を付加する条件を含む条件データとに基づいてプロセッサを用いて整数演算することによって、対象データに符号を付加させるという作用をもたらす。
【００１６】
また、本発明の第３の側面は、符号が付加される対象である浮動小数点型の対象データと上記符号を付加する条件を含む条件データとに基づいて上記対象データに上記符号を付加するコードが含まれるソースプログラムを記憶するソースプログラム記憶部と、上記ソースプログラム記憶部から上記ソースプログラムを読み出して上記読み出されたソースプログラムから上記コードを抽出する符号付加コード抽出部と、上記条件データに含まれている上記条件を抽出して上記抽出された条件に基づいて上記対象データに上記符号を付加するための符号データを生成するコードと上記対象データを整数型のデータとして整数演算することによって上記符号データおよび上記対象データに基づいて上記対象データに上記符号を付加するコードとを生成する符号付加コード生成部と、上記抽出されたコードを上記生成されたコードに変換する符号付加コード変換部と、上記変換されたコードを含む上記ソースプログラムに基づいて機械語プログラムのコードを生成するコード生成部とを具備するコンパイル処理装置およびその処理方法である。これにより、対象データおよび条件データに基づいて対象データに符号を付加するコードを、符号データを生成するコードと対象データに符号を付加するコードとに変換させるという作用をもたらす。
【発明の効果】
【００１７】
本発明によれば、条件データに基づいて浮動小数点型のデータの符号を高速に変換することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態において取り扱う浮動小数点数および整数のフォーマットの一例を示す概念図である。
【図２】本発明の第１の実施の形態におけるプロセッサ１００の第１の構成例を示すブロック図である。
【図３】本発明の第１の実施の形態におけるプロセッサ１００の第１の構成例における符号付加処理の処理手順例を示すフローチャートである。
【図４】本発明の第１の実施の形態におけるプロセッサ１００の第２の構成例を示すブロック図である
【図５】本発明の第１の実施の形態におけるプロセッサ１００の第２の構成例における符号付加処理の処理手順例を示すフローチャートである。
【図６】本発明の第１の実施の形態におけるプロセッサ１００の第３の構成例を示すブロック図である。
【図７】本発明の第１の実施の形態におけるプロセッサ１００の第３の構成例における符号付加処理の処理手順例を示すフローチャートである。
【図８】本発明の第１の実施の形態におけるプロセッサ１００の第４の構成例を示すブロック図である。
【図９】本発明の第１の実施の形態におけるプロセッサ１００の第４の構成例における符号付加処理の処理手順例を示すフローチャートである。
【図１０】本発明の第１の実施の形態におけるプロセッサ１００の第５の構成例を示すブロック図である
【図１１】本発明の第１の実施の形態におけるプロセッサ１００の第５の構成例における符号付加処理の処理手順例を示すフローチャートである
【図１２】本発明の第１の実施の形態におけるプロセッサ１００の第６の構成例を示すブロック図である。
【図１３】本発明の第１の実施の形態におけるプロセッサ１００の第６の構成例における符号付加処理の処理手順例を示すフローチャートである。
【図１４】本発明の第１の実施の形態におけるプロセッサ１００の第７の構成例を示すブロック図である。
【図１５】本発明の第１の実施の形態におけるプロセッサ１００の第７の構成例における符号付加処理の処理手順例を示すフローチャートである。
【図１６】本発明の第１の実施の形態におけるプロセッサ１００の第８の構成例を示すブロック図である。
【図１７】本発明の第１の実施の形態におけるプロセッサ１００の第８の構成例における符号付加処理の処理手順例を示すフローチャートである。
【図１８】本発明の第１の実施の形態におけるプロセッサ１００の第９の構成例を示すブロック図である。
【図１９】本発明の第１の実施の形態におけるプロセッサ１００の第９の構成例における符号付加処理の処理手順例を示すフローチャートである。
【図２０】本発明の第１の実施の形態におけるプロセッサ１００の第１０の構成例を示すブロック図である。
【図２１】本発明の第１の実施の形態におけるプロセッサ１００の第１０の構成例における符号付加処理の処理手順例を示すフローチャートである。
【図２２】ＭＰ３（ＭＰＥＧ（Moving Picture Experts Group）１オーディオレイヤ３）規格に基づいて圧縮されたオーディオデータであるＭＰ３データにおけるフレームのデータ構造を示す概念図である。
【図２３】ＭＰ３データを復号する復号装置９００の一構成例を示すブロック図である。
【図２４】ＭＰ３データを復号する復号装置９００の処理手順例を示すフローチャートである。
【図２５】本発明の第２の実施の形態における逆量子化部９４０による逆量子化処理（ステップＳ９５０）の処理手順例を示すフローチャートである。
【図２６】本発明の第３の実施の形態におけるプロセッサ１００の一構成例を示すブロック図である。
【図２７】本発明の第３の実施の形態におけるプロセッサ１００の符号付加処理の処理手順例を示すフローチャートである。
【図２８】本発明の第４の実施の形態におけるコンパイル処理システム５００の一構成例を示すブロック図である。
【図２９】本発明の第４の実施の形態におけるコンパイル処理装置６００によるコンパイル処理の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明を実施するための最良の形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（符号付加処理制御：プロセッサの例）
２．第２の実施の形態（ＭＰ３データ復号制御：復号装置の例）
３．第３の実施の形態（符号付加処理制御：整数レジスタと浮動小数点レジスタを備えるプロセッサの例）
４．第４の実施の形態（コンパイル処理制御：コンパイル処理システムの例）
【００２０】
＜１．第１の実施の形態＞
［符号小数点数のフォーマット例］
図１は、本発明の実施の形態において取り扱う浮動小数点型データおよび整数型データのフォーマットの一例を示す概念図である。図１（ａ）には、単精度浮動小数点数型データのフォーマットが示されている。図１（ｂ）には、整数型データのフォーマットが示されている。ここでは、左端は最上位ビット（ＭＳＢ）を示し、右端は最下位ビット（ＬＳＢ）を示している。
【００２１】
図１（ａ）は、ＩＥＥＥ（Institute for Electrical and Electronics Engineering）７５４規格による単精度浮動小数点数型データを示すフォーマットである。この単精度浮動小数点数は、３２個のビット（０乃至３１番）のビット列により表現されるものである。この浮動小数点型データは、符号を示す符号ビット８１１と、指数を示す指数部８１２と、仮数を示す仮数部８１３とから構成される。
【００２２】
符号ビット８１１は、浮動小数点数の符号を示すビットである。この符号ビット８１１は、最上位である第３１番目のビットである。この符号ビット８１１は、第３１番目のビットが「０」の場合には正（プラス）を、「１」の場合には負（マイナス）を示す。
【００２３】
指数部８１２は、２を基数としてべき乗する指数にバイアス成分である「１２７」を足した値を表現するビット列である。この指数部８１２は、第２３乃至３０番目のビット列である。
【００２４】
仮数部８１３は、仮数から「１」を減じた１以下の値を２進小数により表現するビット列である。この仮数部８１３は、第０乃至２２番目のビット列である。
【００２５】
このように構成される浮動小数点数の表現は、次式により表すことができる。なお、Ｓは符号ビット８１１が示す値、Ｅは指数部８１２が示す値、Ｂはバイアス成分、Ｆは仮数部８１３が示す値である。
【数１】
2010160708.tif 000003
【００２６】
図１（ｂ）は、整数型データのフォーマットである。ここでは、一例として、３２個のビット（第０乃至３１番目）のビット列により表現される整数型データを示している。この整数型データは、符号ビット（Ｓ）８２１および整数部８２２から構成される。
【００２７】
符号ビット８２１は、整数型データの符号を示すビットである。符号ビット８２１は、最上位である第３１番目のビットである。符号ビット８２１は、第３１番目のビットが、「０」の場合には正を、「１」の場合には負を示す。
【００２８】
整数部８２２は、整数型データのうち符号ビット８２１以外のビット列である。この整数部８２２は、符号ビット８２１が正である場合には、二進記数法により表現される。また、符号ビット８２１が負である場合には、整数部８２２は、２の補数により表現される。ここにいう２の補数とは、絶対値を２進数により表わしたビット列を反転させて、その反転させたビット列の最下位ビットに「１」を足したビット列である。この整数部８２２は、第０乃至３０番目のビットである。
【００２９】
このように構成される浮動小数点型データおよび整数型データを取り扱うプロセッサ１００について、以下に図面を参照して詳細に説明する。
【００３０】
［プロセッサ１００の第１の構成例］
図２は、本発明の第１の実施の形態におけるプロセッサ１００の第１の構成例を示すブロック図である。ここでは、プロセッサ１００およびメモリ１２０が示されている。このプロセッサ１００は、符号が付加される対象である浮動小数点型の対象データと、対象データに符号を付加する条件を含む３２ビットの整数型の条件データとを取り扱うものである。このプロセッサ１００は、制御部１１０と、バス１３０と、レジスタ１４０と、整数演算部１５０と、符号判断部１６０と、浮動小数点演算部１７０とを備える。
【００３１】
制御部１１０は、プロセッサ１００における各部を制御するものである。この制御部１１０は、例えば、ＣＰＵ（Central Processing Unit）により実現される。この制御部１１０は、例えば、レジスタ１４０から符号判断部１６０へのデータの転送や符号判断部１６０からレジスタ１４０へのデータの転送などを指示する。
【００３２】
バス１３０は、プロセッサ１００内の各部の相互間においてデータのやりとりを行うためのバスである。
【００３３】
レジスタ１４０は、整数演算部１５０、符号判断部１６０および浮動小数点演算部１７０が演算処理を行うために必要なデータを一時的に保持するものである。このレジスタ１４０は、整数演算部１５０と、符号判断部１６０と、浮動小数点演算部１７０とにおける演算処理の演算結果を一時的に保持する。このレジスタ１４０は、例えば、フリップフロップにより構成される。このレジスタ１４０は、バス１３０を介してメモリ１２０から供給される対象データおよび条件データを一時的に保持する。また、このレジスタ１４０は、符号判断部１６０で処理された結果を一時的に保持する。このレジスタ１４０は、一時的に保持している対象データを、信号線１４９を介して符号判断部１６０に供給する。また、このレジスタ１４０は、一時的に保持している条件データを、信号線１４８を介して符号判断部１６０に供給する。なお、レジスタ１４０は、特許請求の範囲に記載のデータ供給部およびレジスタの一例である。
【００３４】
整数演算部１５０は、レジスタ１４０から供給される整数型のデータに基づいて、整数演算を行うものである。この整数演算部１５０は、例えば、一般的なコンピュータにおけるＣＰＵのＡＬＵ（Arithmetic Logic Unit）により実現される。この整数演算部１５０は、その整数演算の結果を、バス１３０を介してレジスタ１４０に供給する。
【００３５】
符号判断部１６０は、レジスタ１４０から供給される対象データおよび条件データに基づいて対象データに符号を付加するものである。この符号判断部１６０は、符号データ生成部２００および符号付加部３００を備える。
【００３６】
符号データ生成部２００は、浮動小数点型のデータに符号を付加するための符号データを、条件データに含まれている条件に基づいて生成するものである。この符号データ生成部２００は、その生成した符号データを符号付加部３００に供給する。この符号データ生成部２００は、ビット列保持部２１０および符号ビット抽出部２２０を備える。なお、符号データ生成部２００は、特許請求の範囲に記載の符号データ生成部の一例である。
【００３７】
ビット列保持部２１０は、条件データから符号ビットを抽出するためのビット列を保持するものである。このビット列保持部２１０は、例えば、条件データが３２ビットである場合には、１６進数の「０ｘ８０００００００」のビット列を保持する。このビット列保持部２１０は、その保持しているビット列を符号ビット抽出部２２０に供給する。なお、ビット列保持部２１０は、特許請求の範囲に記載のビット列保持部の一例である。
【００３８】
符号ビット抽出部２２０は、レジスタ１４０から供給される条件データと、ビット列保持部２１０から供給されるビット列とに基づいて、条件データにおける符号を示すビットである符号ビットを条件として抽出するものである。この符号ビット抽出部２２０は、例えば、論理積（ＡＮＤ）を行う論理積演算回路により実現される。この符号ビット抽出部２２０は、抽出した符号ビットを符号データとして符号付加部３００に供給する。
【００３９】
符号付加部３００は、レジスタ１４０から供給される対象データと、符号判断部１６０から供給される符号データとに基づいて、対象データに符号を付加するものである。この符号付加部３００は、対象データを整数型のデータとして取り扱い、その対象データと整数型のデータである符号データとを整数演算することによって、その対象データに符号を付加する。この符号付加部３００は、例えば、算術加算（ＡＤＤ）を行う整数演算回路により実現される。この符号付加部３００は、符号を付加した対象データをレジスタ１４０に供給する。なお、ここでは、符号付加部３００として、算術加算（ＡＤＤ）を行う整数演算回路を例にして説明したが、符号付加部３００は、符号データに基づいて符号ビットのみを変換するものであれば何でもよく、例えば、排他的論理和（ＸＯＲ）を行う回路でもよい。なお、符号付加部３００は、特許請求の範囲に記載の整数演算部の一例である。
【００４０】
浮動小数点演算部１７０は、レジスタ１４０から供給される浮動小数点型のデータに基づいて浮動小数点演算を行うものである。この浮動小数点演算部１７０は、例えば、一般的なコンピュータにおけるＣＰＵのＦＰＵ（Floating Point number processing Unit）により実現される。この浮動小数点演算部１７０は、例えば、レジスタ１４０から供給される３２ビットの浮動小数点型のデータに基づいて浮動小数点演算を行う。また、この浮動小数点演算部１７０は、例えば、その浮動小数点演算の結果を、バス１３０を介してレジスタ１４０に供給する。なお、ここでは一例として、レジスタ１４０を備えるプロセッサ１００を説明したが、符号判断部１６０は単独の演算部であるとしてもよい。なお、ここでは一例として、整数型データが条件データであるが、浮動小数点型のデータを条件データとして、このデータを整数型のデータとして取り扱って符号コードを生成してもよい。
【００４１】
メモリ１２０は、プロセッサ１００が動作するために必要なデータを保持するものである。このメモリ１２０は、例えば、符号判断部１６０において符号が付加される対象である浮動小数点型の対象データと、この対象データに符号を付加する条件を含む条件データとを保持する。このメモリ１２０は、プロセッサ１００が動作するために必要なデータをバス１３０を介してプロセッサ１００に供給する。
【００４２】
この構成において、例えば、整数型のデータの符号ビットが「１」を示す条件データと、浮動小数点型のデータの符号ビットが「１」を示す対象データとに基づいて、対象データに符号を付加する場合を想定する。
【００４３】
この場合において、符号ビット抽出部２２０は、信号線１４８を介して供給される条件データと、ビット列保持部２１０から供給されたビット列とに基づいて論理積（ＡＮＤ）演算を行うことによって、条件データから符号ビット８２１を抽出する。これにより、符号ビット８２１が「１」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、符号ビット抽出部２２０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「１」が加算されることによって、符号ビット８１１が「０」に変換された対象データが生成される。このとき、指数部８１２および仮数部８１３は変換されない。また、この場合において、条件データの符号ビットが「１」であり、対象データの符号ビット８１１が「０」である場合には、符号ビット８１１が「０」から「１」に変換され、それ以外の指数部８１２および仮数部８１３は変換されない。
【００４４】
また、この構成において、例えば、整数型のデータの符号ビットが「０」を示す条件データと、単精度の浮動小数点型のデータの符号ビットが「１」を示す対象データとに基づいて、対象データに符号を付加する場合を想定する。
【００４５】
この場合において、符号ビット抽出部２２０は、信号線１４８を介して供給される条件データと、ビット列保持部２１０から供給されたビット列とに基づいて論理積（ＡＮＤ）演算を行うことによって、条件データから符号ビット８２１を抽出する。これにより、符号ビット８２１が「０」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、符号ビット抽出部２２０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、対象データに符号を付加する。これにより、符号ビット８１１の「１」に「０」が加算されることによって、符号ビット８１１が変換されない対象データが生成される。また、この場合において、条件データの符号ビットが「０」であり、対象データの符号ビットが「０」である場合には、その符号ビット８１１の「０」に符号ビット８２１の「０」が加算されるため、符号ビット８１１が変換されない対象データが生成される。
【００４６】
次に、本発明の第１の実施の形態におけるプロセッサ１００の第１の構成例におけるプロセッサ１００の動作について図面を参照して説明する。
【００４７】
図３は、本発明の第１の実施の形態におけるプロセッサ１００の第１の構成例における符号付加処理の処理手順例を示すフローチャートである。
【００４８】
まず、条件データと対象データとがメモリ１２０からレジスタ１４０にロードされる（ステップＳ９１１）。次に、符号ビット抽出部２２０により、条件データの符号ビットが抽出される（ステップＳ９１５）。次に、符号付加部３００により、対象データに符号が付加される（ステップＳ９１９）。
【００４９】
このように、プロセッサ１００は、符号判断部１６０を設けることによって、条件データと対象データとに基づいて対象データに符号を付加することができる。すなわち、プロセッサ１００は、ビット列保持部２１０および符号ビット抽出部２２０を符号判断部１６０に設けることによって、条件データの符号ビットが「１」である場合には、対象データの符号を変換することができる。
【００５０】
[プロセッサの第２の構成例]
図４は、本発明の第１の実施の形態におけるプロセッサ１００の第２の構成例を示すブロック図である。プロセッサ１００は、図２に示したプロセッサ１００に加えて反転部２３０を備えている。ここでは、反転部２３０以外の構成は、図２と同様のものであるため、図２と同符号を付してここでの説明を省略する。なお、図４に示す符合データ生成部２００は、特許請求の範囲に記載の符号データ生成部の一例である。
【００５１】
反転部２３０は、ビット列保持部２１０から供給されるビット列に基づいて、符号ビット抽出部２２０から供給される符号ビットを反転させるものである。この反転部２３０は、例えば、算術加算（ＡＤＤ）を行う整数演算回路により実現される。この反転部２３０は、符号を反転させた符号ビットを符号データとして符号付加部３００に供給する。なお、ここでは、反転部２３０として、算術加算（ＡＤＤ）を行う整数演算回路を例にして説明したが、反転部２３０は、符号データに基づいて符号ビットのみを変換するものであれば何でもよく、例えば、排他的論理和（ＸＯＲ）を行う回路としてもよい。
【００５２】
この構成において、例えば、整数型のデータの符号ビットが「０」を示す条件データと、浮動小数点型のデータの符号ビットが「１」を示す対象データとに基づいて、対象データに符号を付加する場合を想定する。
【００５３】
この場合において、符号ビット抽出部２２０は、信号線１４８を介して供給される条件データと、ビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）演算を行うことによって、条件データから符号ビット８２１を抽出する。これにより、符号ビットを示すビットが「０」であって、その他のビットが全て「０」であるデータが生成される。そして、反転部２３０は、符号ビット抽出部２２０から供給されるデータと、ビット列保持部２１０から供給されるビット列とに基づいて算術加算（ＡＤＤ）を行う。これによって、反転部２３０は、符号ビット抽出部２２０から供給されたデータの条件データの符号ビットを示すビットを反転させる。これにより、符号ビット８２１が「１」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、反転部２３０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「１」が加算されることによって、符号ビット８１１が「０」に変換された対象データが生成される。このとき、指数部８１２および仮数部８１３は変換されない。また、この場合において、条件データの符号ビットが「０」であり、対象データの符号ビット８１１が「０」である場合には、符号ビット８１１が「０」から「１」に変換され、それ以外の指数部８１２および仮数部８１３は変換されない。
【００５４】
また、この構成において、例えば、整数型のデータの符号ビットが「１」を示す条件データと、単精度の浮動小数点型のデータの符号ビットが「１」を示す対象データとに基づいて、対象データに符号を付加する場合を想定する。
【００５５】
この場合において、符号ビット抽出部２２０は、信号線１４８を介して供給される条件データと、ビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）演算を行うことによって、条件データから符号ビット８２１を抽出する。これにより、符号ビットを示すビットが「１」であって、その他のビットが全て「０」であるデータが生成される。そして、反転部２３０は、符号ビット抽出部２２０から供給されるデータと、ビット列保持部２１０から供給されるビット列とに基づいて算術加算（ＡＤＤ）を行う。これによって、反転部２３０は、符号ビット抽出部２２０から供給されたデータの条件データの符号ビットを示すビットを反転させる。これにより、符号ビット８２１が「０」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、反転部２３０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、対象データに符号を付加する。これにより、符号ビット８１１の「１」に「０」が加算されることによって、符号ビット８１１が変換されない対象データが生成される。また、この場合において、条件データの符号ビットが「１」であり、対象データの符号ビットが「０」である場合には、その符号ビット８１１の「０」に「０」に符号ビット８２１の「０」が加算されるため、符号ビット８１１が変換されない対象データが生成される。
【００５６】
次に、本発明の第１の実施の形態におけるプロセッサ１００の第２の構成例におけるプロセッサ１００の動作について図面を参照して説明する。
【００５７】
図５は、本発明の第１の実施の形態におけるプロセッサ１００の第２の構成例における符号付加処理の処理手順例を示すフローチャートである。
【００５８】
まず、条件データおよび対象データがメモリ１２０からレジスタ１４０にロードされる（ステップＳ９１１）。次に、符号ビット抽出部２２０により、条件データの符号ビットが抽出される（ステップＳ９１５）。次に、反転部２３０により、抽出された符号ビットが反転される（ステップＳ９２７）。次に、符号付加部３００により、対象データに符号が付加される（ステップＳ９１９）。
【００５９】
このように、プロセッサ１００は、反転部２３０を設けることによって、条件データの符号ビットが「０」である場合には、対象データの符号を変換させることができる。
【００６０】
[プロセッサの第３の構成例]
図６は、本発明の第１の実施の形態におけるプロセッサ１００の第３の構成例を示すブロック図である。このプロセッサ１００は、図２に示したプロセッサ１００に加えて符号データ生成部２００が備えられている。ここでは、符号データ生成部２００以外の構成は、図２と同様のものであるため、図２と同符号を付してここでの説明を省略する。なお、図６に示す符合データ生成部２００は、特許請求の範囲に記載の符号データ生成部の一例である。
【００６１】
符号データ生成部２００は、図２に示したビット列保持部２１０を備える。ビット列保持部２１０は、条件データの値にかかわらず、保持しているビット列を符号付加部３００に供給するものである。
【００６２】
この構成において、例えば、整数型のデータの符号ビットが「０」あるいは「１」を示す条件データと、浮動小数点型のデータの符号ビットが「１」を示す対象データとに基づいて、対象データに符号を付加する場合を想定する。
【００６３】
この場合において、ビット列保持部２１０は、条件データの値にかかわらず保持するビット列を符号付加部３００に供給する。これにより、符号ビット８２１が「１」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、ビット列保持部２１０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「１」が加算されることによって、符号ビット８１１が「０」に変換された対象データが生成される。このとき、指数部８１２および仮数部８１３は変換されない。また、この場合において、対象データの符号ビット８１１が「０」である場合には、符号ビット８１１が「０」から「１」に変換され、それ以外の指数部８１２および仮数部８１３は変換されない。
【００６４】
次に、本発明の第１の実施の形態におけるプロセッサ１００の第３の構成例におけるプロセッサ１００の動作について図面を参照して説明する。
【００６５】
図７は、本発明の第１の実施の形態におけるプロセッサ１００の第３の構成例における符号付加処理の処理手順例を示すフローチャートである。
【００６６】
まず、条件データおよび対象データがメモリ１２０からレジスタ１４０にロードされる（ステップＳ９１１）。次に、符号付加部３００により、対象データの符号ビットが反転される（ステップＳ９２８）。
【００６７】
このように、プロセッサ１００は、符号判断部１６０にビット列保持部２１０および符号付加部３００を設けることによって、条件データの値にかかわらず対象データの符号を変換させることができる。
【００６８】
[プロセッサ１００の第４の構成例]
図８は、本発明の第１の実施の形態におけるプロセッサ１００の第４の構成例を示すブロック図である。このプロセッサ１００は、図２に示したプロセッサ１００におけるビット列保持部２１０に代えて、ビット列保持部２１２およびシフト部２４０を備えている。ここでは、このビット列保持部２１２およびシフト部２４０以外の構成は、図２と同様のものであるため、図２と同符号を付してここでの説明を省略する。なお、図８に示す符合データ生成部２００は、特許請求の範囲に記載の符号データ生成部の一例である。
【００６９】
ビット列保持部２１２は、８ビットの長さの条件データから符号ビットを抽出するための１６進数の「０ｘ００００００８０」のビット列を保持する。なお、ビット列保持部２１２は、特許請求の範囲に記載のビット列保持部の一例である。
【００７０】
シフト部２４０は、条件データおよび対象データのビット長が異なる場合には、符号付加部３００において符号ビットの位置を条件データの符号ビットの位置に合わせるために、条件データから抽出された符号ビットをシフトさせるものである。このシフト部２４０は、例えば、信号線１４８を介して８ビットの条件データが供給されるとともに、符号ビット抽出部２２０において符号ビットが抽出された場合には、この抽出された符号ビットを２４ビット左にシフトさせる。このシフト部２４０は、符号ビット抽出部２２０から供給された符号ビットをシフトさせて、このシフトさせた符号ビットを符号データとして符号付加部３００に供給する。
【００７１】
この構成において、例えば、整数型のデータの符号ビットが「１」を示す８ビットの条件データと、浮動小数点型のデータの符号ビットが「１」を示す３２ビットの対象データとに基づいて、対象データに符号を付加する場合を想定する。
【００７２】
この場合において、符号ビット抽出部２２０は、信号線１４８を介して供給される条件データと、ビット列保持部２１２から供給されるビット列とに基づいて論理積（ＡＮＤ）演算を行うことによって、条件データから符号ビット８２１を抽出する。これにより、条件データの符号ビットを示す７番目のビットが「１」であり、その他のビットが全て「０」であるデータが生成される。そして、シフト部２４０は、符号ビット抽出部２２０から供給されるデータを２４ビット左にシフトさせる。これにより、符号ビット８２１が「１」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、シフト部２４０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「１」が加算されることによって、符号ビット８１１が「０」に変換された対象データが生成される。このとき、指数部８１２および仮数部８１３は変換されない。また、この場合において、条件データの符号ビットが「１」であり、対象データの符号ビット８１１が「０」である場合には、符号ビット８１１が「０」から「１」に変換され、それ以外の指数部８１２および仮数部８１３は変換されない。
【００７３】
また、この構成において、例えば、整数型のデータの符号ビットが「０」を示す８ビットの条件データと、浮動小数点型のデータの符号ビットが「１」を示す３２ビットの対象データとに基づいて、対象データに符号を付加する場合を想定する。
【００７４】
この場合において、符号ビット抽出部２２０は、信号線１４８を介して供給される条件データと、ビット列保持部２１２から供給されるビット列とに基づいて論理積（ＡＮＤ）を行うことによって、条件データから符号ビット８２１を抽出する。これにより、条件データの符号ビットを示す７番目のビットが「０」であり、その他のビットが全て「０」であるデータが生成される。そして、シフト部２４０は、符号ビット抽出部２２０から供給されるデータを２４ビット左にシフトさせる。これにより、符号ビット８２１が「０」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、シフト部２４０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「０」が加算されることによって、符号ビット８１１が変換されない対象データが生成される。また、この場合において、条件データの符号ビットが「０」であり、対象データの符号ビットが「０」である場合には、その符号ビット８１１の「０」に符号ビット８２１の「０」が加算されるため、符号ビット８１１が変換されない対象データが生成される。
【００７５】
次に、本発明の第１の実施の形態におけるプロセッサ１００の第４の構成例におけるプロセッサ１００の動作について図面を参照して説明する。
【００７６】
図９は、本発明の第１の実施の形態におけるプロセッサ１００の第４の構成例における符号付加処理の処理手順例を示すフローチャートである。
【００７７】
まず、８ビットのビット長の条件データと３２ビットのビット長の対象データとがメモリ１２０からレジスタ１４０にロードされる（ステップＳ９１１）。次に、符号ビット抽出部２２０により、条件データの符号ビットが抽出される（ステップＳ９１５）。次に、シフト部２４０により、符号ビット抽出部２２０から供給されたデータが２４ビット左にシフトされる（ステップＳ９２６）。次に、符号付加部３００により、対象データに符号が付加される（ステップＳ９１９）。
【００７８】
このように、プロセッサ１００は、ビット列保持部２１２およびシフト部２４０を設けることによって、条件データと対象データとのビット長が異なる場合においても、条件データおよび対象データに基づいて対象データに符号を付加することができる。すなわち、プロセッサ１００は、条件データと対象データとのビット長が異なる場合においても、図２に示したプロセッサ１００と同様に、条件データの符号ビットが「１」である場合には、対象データに符号を付加することができる。
【００７９】
[プロセッサの第５の構成例]
図１０は、本発明の第１の実施の形態におけるプロセッサ１００の第５の構成例を示すブロック図である。このプロセッサ１００は、図２に示したプロセッサ１００に加えて符号データ生成部２００に図８に示したシフト部２４０を備えている。ここでは、シフト部２４０以外の構成は、図２と同様のものであるため、図２と同符号を付してここでの各部の構成の説明を省略する。なお、図１０に示す符合データ生成部２００は、特許請求の範囲に記載の符号データ生成部の一例である。
【００８０】
プロセッサ１００は、シフト部２４０に信号線１４８を介して条件データを供給する。
【００８１】
シフト部２４０は、シフトさせた結果のデータを新たな条件データとして符号ビット抽出部２２０に供給する。このシフト部２４０は、例えば、信号線１４８を介して８ビットの条件データが供給された場合には、符号ビットを２４ビット左にシフトさせた新たな条件データを生成する。また、このシフト部２４０は、この生成した新たな条件データを符号ビット抽出部２２０に供給する。
【００８２】
この構成において、例えば、整数型のデータの符号ビットが「１」を示す８ビットの条件データと、浮動小数点型のデータの符号ビットが「１」を示す３２ビットの対象データとに基づいて、対象データに符号を付加する場合を想定する。
【００８３】
この場合において、シフト部２４０は、信号線１４８を介して供給される条件データを２４ビット左にシフトさせる。これにより、符号ビット８２１である３１番目のビットが「１」であり、その他のビットが全て「０」である新たな条件データが生成されて、その生成された条件データが符号ビット抽出部２２０に供給される。そして、符号ビット抽出部２２０は、シフト部２４０から供給される新たな条件データと、ビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）を行うことによって、条件データから符号ビット８２１を抽出する。これにより、符号ビット８２１が「１」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、符号ビット抽出部２２０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「１」が加算されることによって、符号ビット８１１が「０」に変換された対象データが生成される。このとき、指数部８１２および仮数部８１３は変換されない。また、この場合において、条件データの符号ビットが「１」であり、対象データの符号ビット８１１が「０」である場合には、符号ビット８１１が「０」から「１」に変換され、それ以外の指数部８１２および仮数部８１３は変換されない。
【００８４】
また、この構成において、例えば、整数型のデータの符号ビットが「０」を示す８ビットの条件データと、浮動小数点型のデータの符号ビットが「１」を示す３２ビットの対象データとに基づいて、対象データに符号を付加する場合を想定する。
【００８５】
この場合において、シフト部２４０は、信号線１４８を介して供給される条件データを２４ビット左にシフトさせる。これにより、符号ビット８２１である３１番目のビットが「０」であり、その他のビットが全て「０」である新たな条件データが生成されて、その生成された条件データが符号ビット抽出部２２０に供給される。そして、符号ビット抽出部２２０は、シフト部２４０から供給される新たな条件データと、ビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）を行うことによって、条件データから符号ビット８２１を抽出する。これにより、符号ビット８２１が「０」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、符号ビット抽出部２６０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「０」が加算されることによって、符号ビット８１１が変換されない対象データが生成される。また、この場合において、条件データの符号ビットが「０」であり、対象データの符号ビットが「０」である場合には、その符号ビット８１１の「０」に符号ビット８２１の「０」が加算されるため、符号ビット８１１が変換されない対象データが生成される。
【００８６】
次に、本発明の第１の実施の形態におけるプロセッサ１００の第５の構成例におけるプロセッサ１００の動作について図面を参照して説明する。
【００８７】
図１１は、本発明の第１の実施の形態におけるプロセッサ１００の第５の構成例における符号付加処理の処理手順例を示すフローチャートである。
【００８８】
まず、８ビットのビット長の条件データと３２ビットのビット長の対象データとがメモリ１２０からレジスタ１４０にロードされる（ステップＳ９１１）。次に、シフト部２４０により、条件データの符号ビットを２４ビット左にシフトして条件データが生成される（ステップＳ９２２）。次に、符号ビット抽出部２２０により、シフト部２４０から供給された条件データの符号ビットが抽出される（ステップＳ９１５）。次に、符号付加部３００により、対象データに符号が付加される（ステップＳ９１９）。
【００８９】
このように、プロセッサ１００は、シフト部２４０を設けることによって、条件データおよび対象データのビット長が異なる場合においても、条件データおよび対象データに基づいて対象データに符号を付加することができる。すなわち、プロセッサ１００は、条件データと対象データとのビット長が異なる場合においても、図２に示したプロセッサ１００と同様に、条件データの符号ビットが「１」である場合には、対象データに符号を付加することができる。
【００９０】
[プロセッサの第６の構成例]
図１２は、本発明の第１の実施の形態におけるプロセッサ１００の第６の構成例を示すブロック図である。このプロセッサ１００は、図８に示したプロセッサ１００に加えて、ビット列保持部２１３と、図４で示した反転部２３０とを備えている。ここでは、ビット列保持部２１３および反転部２３０以外の構成は、図８と同様のものであるため、図８と同符号を付してここでの説明を省略する。なお、図１２に示す符合データ生成部２００は、特許請求の範囲に記載の符号データ生成部の一例である。
【００９１】
ビット列保持部２１３は、反転部２３０において、シフト部２４０から供給される符号ビットを反転させるためのビット列を保持するものである。このビット列保持部２１３は、例えば、シフト部２４０から供給される符号ビットが３２ビットである場合には、１６進数の「０ｘ８０００００００」のビット列を保持する。このビット列保持部２１３は、保持しているビット列を反転部２３０に供給する。
【００９２】
反転部２３０は、シフト部２４０から供給される符号ビットを、ビット列保持部２１３から供給されるビット列に基づいて反転させるものである。この反転部２３０は、符号を反転させた符号ビットを符号データとして符号付加部３００に供給する。
【００９３】
この構成において、例えば、整数型のデータの符号ビットが「０」を示す８ビットの条件データと、浮動小数点型のデータの符号ビットが「１」を示す３２ビットの対象データとに基づいて、対象データに符号を付加する場合を想定する。
【００９４】
この場合において、符号ビット抽出部２２０は、信号線１４８を介して供給される条件データと、ビット列保持部２１２から供給されるビット列とに基づいて論理積（ＡＮＤ）演算を行うことによって、条件データから符号ビット８２１を抽出する。これにより、条件データの符号ビットを示す７番目のビットが「０」であり、その他のビットが全て「０」であるデータが生成される。そして、シフト部２４０は、符号ビット抽出部２２０から供給されるデータを２４ビット左にシフトさせる。これにより、符号ビット８２１である３１番目のビットが「０」であり、その他のビットが全て「０」であるデータが生成されて、その生成されたデータが反転部２３０に供給される。
【００９５】
そして、反転部２３０は、シフト部２４０から供給されるデータと、ビット列保持部２１３から供給されるビット列とに基づいて算術加算（ＡＤＤ）を行う。これによって、反転部２３０は、シフト部２４０から供給されたデータの符号ビットを示すビットを反転させる。これにより、符号ビット８２１が「１」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、反転部２３０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「１」が加算されることによって、符号ビット８１１が「０」に変換された対象データが生成される。このとき、指数部８１２および仮数部８１３は変換されない。また、この場合において、条件データの符号ビットが「１」であり、対象データの符号ビット８１１が「０」である場合には、符号ビット８１１が「０」から「１」に変換され、それ以外の指数部８１２および仮数部８１３は変換されない。
【００９６】
また、この構成において、例えば、整数型のデータの符号ビットが「１」を示す８ビットの条件データと、浮動小数点型のデータの符号ビットが「１」を示す３２ビットの対象データとに基づいて、対象データに符号を付加する場合を想定する。
【００９７】
この場合において、符号ビット抽出部２２０は、信号線１４８を介して供給される条件データと、ビット列保持部２１２から供給されるビット列とに基づいて論理積（ＡＮＤ）を行うことによって、条件データから符号ビット８２１を抽出する。これにより、条件データの符号ビットを示す７番目のビットが「１」であり、その他のビットが全て「０」であるデータが生成される。そして、シフト部２４０は、符号ビット抽出部２２０から供給されるデータを２４ビット左にシフトさせる。これにより、符号ビット８２１である３１番目のビットが「１」であり、その他のビットが全て「０」であるデータが生成されて、その生成されたデータが反転部２３０に供給される。
【００９８】
そして、反転部２３０は、シフト部２４０から供給されるデータと、ビット列保持部２１３から供給されるビット列とに基づいて算術加算（ＡＤＤ）を行う。これによって、反転部２３０は、シフト部２４０から供給されたデータの符号ビットを示すビットを反転させる。これにより、符号ビット８２１が「０」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、反転部２３０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「０」が加算されることによって、符号ビット８１１が変換されない対象データが生成される。また、この場合において、条件データの符号ビットが「０」であり、対象データの符号ビットが「０」である場合には、その符号ビット８１１の「０」に符号ビット８２１の「０」が加算されるため、符号ビット８１１が変換されない対象データが生成される。
【００９９】
次に、本発明の第１の実施の形態におけるプロセッサ１００の第６の構成例におけるプロセッサ１００の動作について図面を参照して説明する。
【０１００】
図１３は、本発明の第１の実施の形態におけるプロセッサ１００の第６の構成例における符号付加処理の処理手順例を示すフローチャートである。
【０１０１】
まず、８ビットのビット長の条件データと３２ビットのビット長の対象データとがメモリ１２０からレジスタ１４０にロードされる（ステップＳ９１１）。次に、符号ビット抽出部２２０により、条件データの符号ビットが抽出される（ステップＳ９１５）。次に、シフト部２４０により、符号ビット抽出部２２０から供給されたデータが２４ビット左にシフトされる（ステップＳ９２６）。次に、反転部２３０により、抽出された符号ビットが反転される（ステップＳ９２７）。次に、符号付加部３００により、対象データに符号が付加される（ステップＳ９１９）。
【０１０２】
このように、プロセッサ１００は、シフト部２４０と、ビット列保持部２１３と、反転部２３０とを設けることによって、条件データおよび対象データのビット長が異なる場合にも条件データおよび対象データに基づいて対象データに符号を付加することができる。すなわち、プロセッサ１００は、条件データと対象データとのビット長が異なる場合においても、図４に示したプロセッサ１００と同様に、条件データの符号ビットが「０」である場合には、対象データに符号を付加することができる。
【０１０３】
[プロセッサの第７の構成例]
図１４は、本発明の第１の実施の形態におけるプロセッサ１００の第７の構成例を示すブロック図である。このプロセッサ１００は、図１０に示したプロセッサ１００に加えて符号データ生成部２００に図２に示した反転部２３０を備えている。ここでは、反転部２３０以外の構成は、図１０と同様のものであるため、図１０と同符号を付してここでの説明を省略する。なお、図１４に示す符合データ生成部２００は、特許請求の範囲に記載の符号データ生成部の一例である。
【０１０４】
反転部２３０は、符号ビット抽出部２２０から供給される符号ビットをビット列保持部２１０から供給されるビット列に基づいて反転させるものである。
【０１０５】
この構成において、例えば、整数型のデータの符号ビットが「０」を示す８ビットの条件データと、浮動小数点型のデータの符号ビットが「１」を示す３２ビットの対象データとに基づいて、対象データに符号を付加する場合を想定する。
【０１０６】
この場合において、シフト部２４０は、信号線１４８を介して供給される条件データを２４ビット左にシフトさせる。これにより、符号ビット８２１である３１番目のビットが「０」であり、その他のビットが全て「０」である新たな条件データが生成されて、その生成された条件データが符号ビット抽出部２２０に供給される。そして、符号ビット抽出部２２０は、シフト部２４０から供給される新たな条件データと、ビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）を行うことによって、条件データから符号ビット８２１を抽出する。これにより、符号ビット８２１が「０」であり、整数部８２２が全て「０」であるデータが生成されて、その生成されたデータが反転部２３０に供給される。
【０１０７】
そして、反転部２３０は、符号ビット抽出部２２０から供給されるデータと、ビット列保持部２１０から供給されるビット列とに基づいて算術加算（ＡＤＤ）を行う。これによって、反転部２３０は、符号ビット抽出部２２０から供給されたデータの符号ビットを示すビットを反転させる。これにより、符号ビット８２１が「１」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、反転部２３０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「１」が加算されることによって、符号ビット８１１が「０」に変換された対象データが生成される。このとき、指数部８１２および仮数部８１３は変換されない。また、この例において、条件データの符号ビットが「１」であり、対象データの符号ビット８１１が「０」である場合には、符号ビット８１１が「０」から「１」に変換され、それ以外の指数部８１２および仮数部８１３は変換されない。
【０１０８】
また、この構成において、例えば、整数型のデータの符号ビットが「１」を示す８ビットの条件データと、浮動小数点型のデータの符号ビットが「１」を示す３２ビットの対象データとに基づいて、対象データに符号を付加する場合を想定する。
【０１０９】
この場合において、シフト部２４０は、信号線１４８を介して供給される条件データを２４ビット左にシフトさせる。これにより、符号ビット８２１である３１番目のビットが「１」であり、その他のビットが全て「０」である新たな条件データが生成されて、その生成された条件データが符号ビット抽出部２２０に供給される。そして、符号ビット抽出部２２０は、シフト部２４０から供給される新たな条件データと、ビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）を行うことによって、条件データから符号ビット８２１を抽出する。これにより、符号ビット８２１が「１」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが反転部２３０に供給される。
【０１１０】
そして、反転部２３０は、符号ビット抽出部２２０から供給されるデータと、ビット列保持部２１０から供給されるビット列とに基づいて算術加算（ＡＤＤ）を行う。これによって、反転部２３０は、符号ビット抽出部２２０から供給されたデータの条件データの符号ビットを示すビットを反転させる。これにより、符号ビット８２１が「０」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、反転部２３０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、対象データに符号を付加する。これにより、符号ビット８１１の「１」に「０」が加算されることによって、符号ビット８１１が変換されない対象データが生成される。また、この例において、条件データの符号ビットが「１」であり、対象データの符号ビットが「０」である場合には、その符号ビット８１１の「０」に符号ビット８２１の「０」が加算されるため、符号ビット８１１が変換されない対象データが生成される。
【０１１１】
次に、本発明の第１の実施の形態におけるプロセッサ１００の第７の構成例におけるプロセッサ１００の動作について図面を参照して説明する。
【０１１２】
図１５は、本発明の第１の実施の形態におけるプロセッサ１００の第７の構成例における符号付加処理の処理手順例を示すフローチャートである。
【０１１３】
まず、８ビットのビット長の条件データと３２ビットのビット長の対象データとがメモリ１２０からレジスタ１４０にロードされる（ステップＳ９１１）。次に、シフト部２４０により、条件データの符号ビットを２４ビット左にシフトして新たな条件データが生成される（ステップＳ９２２）。次に、符号ビット抽出部２２０により、シフト部２４０から供給された条件データの符号ビットが抽出される（ステップＳ９１５）。次に、反転部２３０により、抽出された符号ビットが反転される（ステップＳ９２７）。次に、符号付加部３００により、対象データに符号が付加される（ステップＳ９１９）。
【０１１４】
このように、プロセッサ１００は、シフト部２４０および反転部２３０を設けることによって、条件データおよび対象データのビット長が異なる場合においても、条件データおよび対象データに基づいて対象データに符号を付加することができる。すなわち、プロセッサ１００は、条件データと対象データとのビット長が異なる場合においても、図４に示したプロセッサ１００と同様に、条件データの符号ビットが「０」である場合には、対象データに符号を付加することができる。
【０１１５】
[プロセッサの第８の構成例]
図１６は、本発明の第１の実施の形態におけるプロセッサ１００の第８の構成例を示すブロック図である。このプロセッサ１００は、図２に示したプロセッサ１００に加えて条件データ生成部２５０を備えている。ここでは、条件データ生成部２５０以外の構成は、図２と同様のものであるため、図２と同符号を付してここでの各部の構成の説明を省略する。なお、図１６に示す符合データ生成部２００は、特許請求の範囲に記載の符号データ生成部の一例である。
【０１１６】
プロセッサ１００は、条件データ生成部２５０に、信号線１４７を介して第１の条件データと、信号線１４８を介して第２の条件データとを供給する。
【０１１７】
条件データ生成部２５０は、信号線１４７および信号線１４８を介して供給される条件データに基づいて、新たな条件データを生成するものである。条件データ生成部２５０は、例えば、第１の条件データから第２の条件データを算術減算（ＳＵＢ）する算術減算回路により実現される。また、条件データ生成部２５０は、例えば、第１の条件データと第２の条件データとの論理積（ＡＮＤ）演算を行う論理積演算回路により実現される。また、条件データ生成部２５０は、例えば、第１の条件データと第２の条件データとの論理和（ＯＲ）演算を行う論理和演算回路により実現される。この条件データ生成部２５０は、生成した新たな条件データを符号ビット抽出部２２０に供給する。なお、ここでは、条件データ生成部２５０は、１つの演算回路によって２つの条件データに基づいて新たな条件データを生成する例を説明したが、演算回路を複数組み合わせることによって２以上の条件データに基づいて新たな条件データを生成するようにしてもよい。また、対象データを条件データとして条件データ生成部２５０に供給するようにしてもよい。
【０１１８】
この構成において、例えば、条件データ生成部２５０が算術減算回路により実現される場合を想定する。このとき、第１の条件データの符号ビットが「１」で整数部が表現する値は「５」、第２の条件データの符号ビットが「１」で整数部が表現する値は「３」、単精度の浮動小数点型のデータの符号ビットが「１」とする。
【０１１９】
この場合において、条件データ生成部２５０は、第１の条件データの値から第２の条件データの値を減算する。これにより、「−５」から「−３」が減算されて「−２」となり、符号ビットが「１」である新たな条件データが生成されて、符号ビット抽出部２２０に供給される。そして、符号ビット抽出部２２０は、条件データ生成部２５０から供給される新たな条件データと、ビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）演算を行うことによって、新たな条件データから符号ビット８２１を抽出する。これにより、符号ビット８２１は「１」であって、整数部８２２は全て「０」である符号データが生成されて、符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、符号ビット抽出部２２０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、対象データに符号を付加する。これにより、符号ビット８１１は「１」に「１」が付加されて「０」に変換され、指数部８１２および仮数部８１３は変換されない、対象データが生成される。
【０１２０】
この構成において、例えば、条件データ生成部２５０が算術減算回路により実現される場合を想定する。このとき、第１の条件データの符号ビットが「０」で整数部が表現する値は「５」、第２の条件データの符号ビットが「１」で整数部が表現する値は「３」、単精度の浮動小数点型のデータの符号ビットが「１」とする。
【０１２１】
この場合において、条件データ生成部２５０は、第１の条件データの値から第２の条件データの値を減算する。これにより、「５」から「−３」が減算されて「８」となり、符号ビットが「０」である新たな条件データが生成されて、符号ビット抽出部２２０に供給される。そして、符号ビット抽出部２２０は、条件データ生成部２５０から供給される新たな条件データとビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）を行い、新たな条件データから符号ビット８２１を抽出する。これにより、符号ビット８２１は「０」であって、整数部８２２も全て「０」である符号データが生成されて、符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、符号ビット抽出部２２０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行い、対象データに符号を付加する。これにより、符号ビット８１１は「１」に「０」が付加されて変換されなく、指数部８１２および仮数部８１３も変換されない、対象データが生成される。
【０１２２】
このように、プロセッサ１００は、算術減算回路を条件データ生成部２５０として設けることによって、第１の条件データが第２の条件データより小さい場合には、対象データの符号を変換することができる。
【０１２３】
また、プロセッサ１００は、算術減算回路に代えて論理積演算回路を条件データ生成部２５０として設けることによって、第１の条件データが負でありかつ第２の条件データも負である場合には、対象データの符号を変換することができる。さらに、プロセッサ１００は、論理和演算回路を条件データ生成部２５０として設けることによって、第１の条件データが負である、または第２の条件データが負である場合には、対象データの符号を変換することができる。
【０１２４】
次に、本発明の第１の実施の形態におけるプロセッサ１００の第８の構成例におけるプロセッサ１００の動作について図面を参照して説明する。
【０１２５】
図１７は、本発明の第１の実施の形態におけるプロセッサ１００の第８の構成例における符号付加処理の処理手順例を示すフローチャートである。
【０１２６】
まず、第１の条件データと、第２の条件データと、対象データとがメモリ１２０からレジスタ１４０にロードされる（ステップＳ９１１）。次に、条件データ生成部２５０により、第１の条件データと第２の条件データとに基づいて新たな条件データが生成される（ステップＳ９２３）。次に、符号ビット抽出部２２０により、新たな条件データの符号ビットが抽出される（ステップＳ９２４）。次に、符号付加部３００により、対象データに符号が付加される（ステップＳ９１９）。
【０１２７】
このように、プロセッサ１００は、条件データ生成部２５０を設けることによって、複数の条件データに基づいて、対象データに符号を付加することができる。
【０１２８】
[プロセッサの第９の構成例]
図１８は、本発明の第１の実施の形態におけるプロセッサ１００の第９の構成例を示すブロック図である。このプロセッサ１００は、図１６に示したプロセッサ１００に加えて符号データ生成部２００に図２に示した反転部２３０を備えている。ここでは、反転部２３０以外の構成は、図１６と同様のものであるため、図１６と同符号を付してここでの各部の構成の説明を省略する。なお、図１８に示す符合データ生成部２００は、特許請求の範囲に記載の符号データ生成部の一例である。
【０１２９】
反転部２３０は、符号ビット抽出部２２０から供給される符号ビットを、ビット列保持部２１０から供給されるビット列に基づいて反転させるものである。この反転部２３０は、符号を反転させた符号ビットを符号データとして符号付加部３００に供給する。
【０１３０】
この構成において、例えば、条件データ生成部２５０が算術減算回路により実現される場合を想定する。このとき、第１の条件データの符号ビットが「１」で整数部が表現する値は「３」、第２の条件データの符号ビットが「１」で整数部が表現する値は「５」、単精度の浮動小数点型のデータの符号ビットが「１」とする。
【０１３１】
この場合において、条件データ生成部２５０は、第１の条件データの値から第２の条件データの値を減算する。これにより、「−３」から「−５」が減算されて「２」となり、符号ビットが「０」である新たな条件データが生成されて、符号ビット抽出部２２０に供給される。そして、符号ビット抽出部２２０は、条件データ生成部２５０から供給される新たな条件データとビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）を行い、新たな条件データから符号ビット８２１を抽出する。これにより、符号ビット８２１は「０」であって、整数部８２２は全て「０」である符号データが生成されて、反転部２３０に供給される。
【０１３２】
そして、反転部２３０は、符号ビット抽出部２２０から供給されるデータと、ビット列保持部２１０から供給されるビット列とに基づいて算術加算（ＡＤＤ）を行う。これによって、反転部２３０は、符号ビット抽出部２２０から供給されたデータの条件データの符号ビットを示すビットを反転させる。これにより、符号ビット８２１が「１」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、反転部２３０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行い、対象データに符号を付加する。これにより、符号ビット８１１は「１」に「１」が付加されて「０」に変換され、指数部８１２および仮数部８１３は変換されない、対象データが生成される。
【０１３３】
また、この構成において、例えば、条件データ生成部２５０が算術減算回路により実現される場合を想定する。このとき、第１の条件データの符号ビットが「０」で整数部が表現する値は「３」、第２の条件データの符号ビットが「０」で整数部が表現する値は「５」、単精度の浮動小数点型のデータの符号ビットが「１」とする。
【０１３４】
この場合において、条件データ生成部２５０は、第１の条件データの値から第２の条件データの値を減算する。これにより、「３」から「５」が減算されて「−２」となり、符号ビットが「１」である新たな条件データが生成されて、符号ビット抽出部２２０に供給される。そして、符号ビット抽出部２２０は、条件データ生成部２５０から供給される新たな条件データとビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）を行い、新たな条件データから符号ビット８２１を抽出する。これにより、符号ビット８２１は「１」であって、整数部８２２も全て「０」である符号データが生成されて、反転部２３０に供給される。
【０１３５】
そして、反転部２３０は、符号ビット抽出部２２０から供給されるデータと、ビット列保持部２１０から供給されるビット列とに基づいて算術加算（ＡＤＤ）を行う。これによって、反転部２３０は、符号ビット抽出部２２０から供給されたデータの条件データの符号ビットを示すビットを反転させる。これにより、符号ビット８２１が「０」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。そして、符号付加部３００は、信号線１４９を介して供給される対象データと、反転部２３０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行い、対象データに符号を付加する。これにより、符号ビット８１１は「１」に「０」が付加されて変換されなく、指数部８１２および仮数部８１３も変換されない、対象データが生成される。
【０１３６】
このように、プロセッサ１００は、算術減算回路を条件データ生成部２５０として設けることによって、第１の条件データが第２の条件データより大きい場合には、対象データの符号を変換することができる。
【０１３７】
また、プロセッサ１００は、算術減算回路に代えて論理積演算回路を条件データ生成部２５０として設けることによって、第１の条件データが「０」以上であり、かつ、第２の条件データも「０」以上である場合には、対象データの符号を変換することができる。さらに、プロセッサ１００は、論理和演算回路を条件データ生成部２５０として設けることによって、第１の条件データが「０」以上である、または第２の条件データが「０」以上である場合には、対象データの符号を変換することができる。
【０１３８】
次に、本発明の第１の実施の形態におけるプロセッサ１００の第９の構成例におけるプロセッサ１００の動作について図面を参照して説明する。
【０１３９】
図１９は、本発明の第１の実施の形態におけるプロセッサ１００の第９の構成例における符号付加処理の処理手順例を示すフローチャートである。
【０１４０】
まず、第１の条件データと、第２の条件データと、対象データとがメモリ１２０からレジスタ１４０にロードされる（ステップＳ９１１）。次に、条件データ生成部２５０により、第１の条件データと第２の条件データとに基づいて新たな条件データが生成される（ステップＳ９２３）。次に、符号ビット抽出部２２０により、新たな条件データの符号ビットが抽出される（ステップＳ９２４）。次に、反転部２３０により、抽出された符号ビットが反転される（ステップＳ９２７）。次に、符号付加部３００により、対象データに符号が付加される（ステップＳ９１９）。
【０１４１】
このように、プロセッサ１００は、条件データ生成部２５０を設けることによって、複数の条件データの対象データに基づいて、符号を付加することができる。
【０１４２】
[プロセッサ１００の第１０の構成例]
図２０は、本発明の第１の実施の形態におけるプロセッサ１００の第１０の構成例を示すブロック図である。ここでは、符号データ生成部２００以外の構成は、図２と同様のものであるため、図２と同符号を付してここでの各部の構成の説明を省略する。なお、図２０に示す符合データ生成部２００は、特許請求の範囲に記載の符号データ生成部の一例である。
【０１４３】
符号データ生成部２００は、ビット列保持部２１０と、反転部２３０と、符号ビット抽出部２６０および２７０と、比較部２８０を備えている。なお、信号線１４７から供給されるデータは第１の条件データ、信号線１４８から供給されるデータは第２の条件データとする。
【０１４４】
符号ビット抽出部２６０は、信号線１４７から供給される第１の条件データと、ビット列保持部２１０から供給されるビット列とに基づいて、第１の条件データにおける符号を示すビットである符号ビットを条件として抽出するものである。この符号ビット抽出部２６０は、例えば、論理積（ＡＮＤ）演算を行う論理積演算回路により実現される。この符号ビット抽出部２２０は、抽出した符号ビットを反転部２３０に供給する。
【０１４５】
符号ビット抽出部２７０は、信号線１４８から供給される第２の条件データと、ビット列保持部２１０から供給されるビット列とに基づいて、第２の条件データにおける符号を示すビットである符号ビットを条件として抽出するものである。この符号ビット抽出部２７０は、例えば、論理積（ＡＮＤ）演算を行う論理積演算回路により実現される。この符号ビット抽出部２２０は、抽出した符号ビットを比較部２８０に供給する。
【０１４６】
反転部２３０は、符号ビット抽出部２６０から供給される第１の条件データから抽出した符号ビットと、ビット列保持部２１０から供給されるビット列に基づいて、第１の条件データから抽出した符号ビットを反転させるものである。この反転部２３０は、その反転させた符号ビットを比較部２８０に供給する。
【０１４７】
比較部２８０は、抽出された符号ビット同士を比較して新たな符号ビットを生成するものである。比較部２８０は、例えば、論理積（ＡＮＤ）演算を行う論理積演算回路により実現される。また、比較部２８０は、例えば、論理和（ＯＲ）演算を行う論理和演算回路により実現される。この比較部２８０は、生成した新たな符号ビットを符号データとして符号付加部３００に供給する。
【０１４８】
この構成において、例えば、比較部２８０が論理積演算回路により実現される場合を想定する。このとき、第１の条件データの符号ビットは「０」、第２の条件データの符号ビットは「１」、単精度の浮動小数点型のデータの符号ビットは「１」とする。
【０１４９】
この場合において、符号ビット抽出部２６０は、信号線１４７を介して供給される第1の条件データと、ビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）演算を行うことによって、第１の条件データから符号ビット８２１を抽出する。これにより、符号ビットを示すビットが「０」であって、その他のビットが全て「０」である第１のデータが生成される。符号ビット抽出部２７０は、信号線１４８を介して供給される第２の条件データと、ビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）演算を行うことによって、第２の条件データから符号ビット８２１を抽出する。これにより、符号ビットを示すビットが「１」であって、その他のビットが全て「０」である第２のデータが生成される。
【０１５０】
そして、反転部２３０は、符号ビット抽出部２６０から供給される第１のデータと、ビット列保持部２１０から供給されるビット列とに基づいて算術加算（ＡＤＤ）を行う。これによって、反転部２３０は、符号ビット抽出部２６０から供給された第１のデータの条件データの符号ビットを示すビットを反転させる。これにより、符号ビットを示すビットが「１」であって、その他のビットが全て「０」である第１のデータが生成される。そして、比較部２８０は、反転部２３０から供給される第１のデータと、符号ビット抽出部２７０から供給される第２のデータとに基づいて論理積（ＡＮＤ）を行うことによって、第１のデータと第２のデータとを比較する。これにより、符号ビット８２１が「１」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。
【０１５１】
そして、符号付加部３００は、信号線１４９を介して供給される対象データと、比較部２８０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「１」が加算されることによって、符号ビット８１１が「０」に変換された対象データが生成される。このとき、指数部８１２および仮数部８１３は変換されない。また、この場合において、第１の条件データの符号ビットが「０」、第２の条件データの符号ビットは「１」、対象データの符号ビット８１１が「０」である場合には、符号ビット８１１が「０」から「１」に変換され、それ以外は変換されない。
【０１５２】
また、この構成において、例えば、比較部２８０が論理積演算回路により実現される場合を想定する。このとき、第１の条件データの符号ビットは「１」、第２の条件データの符号ビットは「１」、単精度の浮動小数点型のデータの符号ビットは「１」とする。
【０１５３】
この場合において、符号ビット抽出部２６０は、信号線１４７を介して供給される第1の条件データと、ビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）演算を行うことによって、第１の条件データから符号ビット８２１を抽出する。これにより、符号ビットを示すビットが「１」であって、その他のビットが全て「０」である第１のデータが生成される。符号ビット抽出部２７０は、信号線１４８を介して供給される第２の条件データと、ビット列保持部２１０から供給されるビット列とに基づいて論理積（ＡＮＤ）演算を行うことによって、第２の条件データから符号ビット８２１を抽出する。これにより、符号ビットを示すビットが「１」であって、その他のビットが全て「０」である第２のデータが生成される。
【０１５４】
そして、反転部２３０は、符号ビット抽出部２６０から供給される第１のデータと、ビット列保持部２１０から供給されるビット列とに基づいて算術加算（ＡＤＤ）を行う。これによって、反転部２３０は、符号ビット抽出部２６０から供給された第１のデータの条件データの符号ビットを示すビットを反転させる。これにより、符号ビットを示すビットが「０」であって、その他のビットが全て「０」である第１のデータが生成される。そして、比較部２８０は、反転部２３０から供給される第１のデータと、符号ビット抽出部２７０から供給される第２のデータとに基づいて論理積（ＡＮＤ）を行うことによって、第１のデータと第２のデータとを比較する。これにより、符号ビット８２１が「０」であり、整数部８２２が全て「０」である符号データが生成されて、その生成された符号データが符号付加部３００に供給される。
【０１５５】
そして、符号付加部３００は、信号線１４９を介して供給される対象データと、比較部２８０から供給される符号データとに基づいて算術加算（ＡＤＤ）を行うことによって、その対象データに符号を付加する。これにより、符号ビット８１１の「１」に符号ビット８２１の「０」が加算されることによって、符号ビット８１１が変換されない対象データが生成される。
【０１５６】
また、この場合において、第１の条件データの符号ビットが「１」、第２の条件データの符号ビットが「１」、対象データの符号ビットが「０」である場合には、その符号ビット８１１の「０」に符号ビット８２１の「０」が加算される。これにより、符号ビット８１１が変換されない対象データが生成される。
【０１５７】
また、この場合において、第１の条件データの符号ビットが「１」、第２の条件データの符号ビットが「０」、対象データの符号ビットが「１」である場合には、その符号ビット８１１の「１」に符号ビット８２１の「０」が加算される。これにより、符号ビット８１１が変換されない対象データが生成される。
【０１５８】
また、この場合において、第１の条件データの符号ビットが「１」、第２の条件データの符号ビットが「０」、対象データの符号ビットが「０」である場合には、その符号ビット８１１の「０」に符号ビット８２１の「０」が加算される。これにより、符号ビット８１１が変換されない対象データが生成される。
【０１５９】
また、この場合において、第１の条件データの符号ビットが「０」、第２の条件データの符号ビットが「０」、対象データの符号ビットが「１」である場合には、その符号ビット８１１の「１」に符号ビット８２１の「０」が加算される。これにより、符号ビット８１１が変換されない対象データが生成される。
【０１６０】
また、この場合において、第１の条件データの符号ビットが「０」、第２の条件データの符号ビットが「０」、対象データの符号ビットが「０」である場合には、その符号ビット８１１の「０」に符号ビット８２１の「０」が加算される。これにより、符号ビット８１１が変換されない対象データが生成される。
【０１６１】
次に、本発明の第１の実施の形態におけるプロセッサ１００の第１０の構成例におけるプロセッサ１００の動作について図面を参照して説明する。
【０１６２】
図２１は、本発明の実施の形態におけるプロセッサ１００の第１０の構成例における符号付加処理の処理手順例を示すフローチャートである。
【０１６３】
まず、第１の条件データと、第２の条件データと、対象データとがメモリ１２０からレジスタ１４０にロードされる（ステップＳ９１１）。次に、符号ビット抽出部２６０により、第１の条件データから符号ビットが抽出され、符号ビット抽出部２７０により、第２の条件データから符号ビットが抽出される。（ステップＳ９３２）。次に、反転部２３０により、符号ビット抽出部２６０により抽出された符号ビットが反転される（ステップＳ９３３）。次に比較部２８０により、反転部２３０により反転された符号ビットと、符号ビット抽出部２７０により抽出された符号ビットとに基づいて符号データが生成される（ステップＳ９３４）。次に、符号付加部３００により、対象データに符号が付加される（ステップＳ９１９）。
【０１６４】
このように、プロセッサ１００は、符号データ生成部２００における比較部２８０として論理積演算回路を用いることによって、第１の条件データが「０」以上、かつ、第２の条件データが「０」より小さい場合には、対象データに符号を付加することができる。
【０１６５】
また、プロセッサ１００は、論理積演算回路に代えて論理和演算回路を比較部２８０として用いることによって、第１の条件データが「０」以上、または、２の条件データが「０」より小さい場合には、対象データに符号を付加することができる。
【０１６６】
このように、本発明の第１の実施の形態によれば、整数演算を行うことによって浮動小数点型のデータに符号を付加することによって、条件が付された浮動小数点型のデータの符号を高速に変換することができる。
【０１６７】
なお、本発明の第１の実施の形態では、符号データ生成部２００における変形例についていくつか説明したが、説明した変形例以外の演算回路の組み合わせを実施することにより、種々の変形例を施すことができる。
【０１６８】
＜２．第２の実施の形態＞
［ＭＰ３オーディオデータにおけるフレームの一構成例］
この第２の実施の形態では、特定のアプリケーションに適用した場合の例について説明する。
【０１６９】
図２２は、ＭＰ３（ＭＰＥＧ（Moving Picture Experts Group）１オーディオレイヤ３
）規格に基づいて圧縮されたオーディオデータであるＭＰ３データにおけるフレームのデータ構造を示す概念図である。このフレーム８６０は、ＭＰ３データを復号するための最小単位である。このフレーム８６０は、ヘッダ８６１と、エラーチェック８６２と、オーディオデータ８６３と、アンシラリデータ８６４とにより構成される。
【０１７０】
ヘッダ８６１は、フレームの内容を示すデータである。このヘッダ８６１は、３２個のビットにより構成される。エラーチェック８６２は、巡回冗長検査によってフレームにおけるデータの誤りを検出するためのデータである。このエラーチェック８６２は、１６個のビットで構成される。なお、このエラーチェック８６２は、誤りを検出するためのデータであるため必須ではない。オーディオデータ８６３は、オーディオ情報を含むデータである。このオーディオデータ８６３は、ビット割当情報、ハフマンテーブル情報を含むサイド情報、スケールファクタ情報、ハフマンコードデータ情報などを含んでいる。アンシラリデータ８６４は、オーディオデータ８６３がフレームの終わりまで達しない場合に挿入されるデータである。
【０１７１】
次に、このＭＰ３データを復号する復号装置９００の一構成例について図面を参照して説明する。
【０１７２】
［復号装置の一構成例］
図２３は、ＭＰ３データを復号する復号装置９００の一構成例を示すブロック図である。復号装置９００は、信号線９０１を介して供給されたＭＰ３データから、一定のステップ幅に量子化されたオーディオ信号であるＰＣＭ（Pulse Code Modulation）データを復元して、信号線９０９を介して出力するものである。復号装置９００は、ビットストリーム分解部９１０と、スケールファクタ復号部９２０と、ハフマン復号部９３０と、逆量子化部９４０と、ＨＦＢ（Hybrid Filter Bank）部９５０とを備える。
【０１７３】
ビットストリーム分解部９１０は、信号線９０１を介して供給されたＭＰ３データから、ビット割当情報、ハフマンテーブル情報を含むサイド情報、スケールファクタ情報およびハフマンコードデータ情報を抽出するものである。このビットストリーム分解部９１０は、その抽出したビット割当情報をスケールファクタ復号部９２０と、ハフマン復号部９３０と、逆量子化部９４０とに供給する。また、このビットストリーム分解部９１０は、抽出したハフマンテーブル情報を含むサイド情報およびビット割当情報をスケールファクタ復号部９２０と、ハフマン復号部９３０と、逆量子化部９４０とに供給する。また、このビットストリーム分解部９１０は、抽出したスケールファクタ情報をスケールファクタ復号部９２０に供給する。また、このビットストリーム分解部９１０は、抽出したハフマンコードデータ情報をハフマン復号部９３０に供給する。
【０１７４】
スケールファクタ復号部９２０は、ビットストリーム分解部９１０から供給されたビット割当情報と、スケールファクタ情報と、ハフマンテーブル情報を含むサイド情報とに基づいてスケールファクタを復号するものである。このスケールファクタ復号部９２０は、復号したスケールファクタを逆量子化部９４０に供給する。
【０１７５】
ハフマン復号部９３０は、ビットストリーム分解部９１０から供給されたビット割当情報と、ハフマンコードデータ情報と、ハフマンテーブル情報を含むサイド情報とに基づいてハフマンコードデータを復号するものである。このハフマン復号部９３０は、その復号したハフマンコードデータを逆量子化部９４０に供給する。
【０１７６】
逆量子化部９４０は、ビット割当情報と、ハフマンテーブル情報を含むサイド情報と、スケールファクタと、ハフマンコードデータとに基づいてハフマンコードデータを逆量子化して逆量子化データを生成するものである。この逆量子化部９４０は、その生成した逆量子化データをＨＦＢ部９５０に供給する。
【０１７７】
ＨＦＢ部９５０は、逆量子化部９４０から供給された逆量子化データに基づいて、オーディオ信号をＰＣＭデータに復元するものである。このＨＦＢ部９５０は、バタフライ演算部９５１と、ＩＭＤＣＴ（Inverse Modified Discrete Cosine Transform）演算部９５２と、サブバンド合成処理部９５３とを備える。
【０１７８】
バタフライ演算部９５１は、逆量子化部９４０から供給された逆量子化データに基づいてバタフライ演算を行うことによって、折り返し歪みを除去するものである。このバタフライ演算部９５１は、折り返し歪みを除去したデータをＩＭＤＣＴ演算部９５２に供給する。
【０１７９】
ＩＭＤＣＴ演算部９５２は、バタフライ演算部９５１から供給された折り返し歪みを除去したデータに基づいて逆変形離散コサイン変換（ＩＭＤＣＴ）を行うことによって、音声信号の周波数領域におけるデータを時間領域におけるデータに変換するものである。このＩＭＤＣＴ演算部９５２は、その変換したデータをサブバンド合成処理部９５３に供給する。
【０１８０】
サブバンド合成処理部９５３は、ＩＭＤＣＴ演算部９５２から供給された時間領域におけるデータに基づいてサブバンド合成処理を行うことによって、ＰＣＭデータを生成するものである。このサブバンド合成処理部９５３は、その生成したＰＣＭデータを信号線９０９に出力する。
【０１８１】
次に、ＭＰ３データを復号する復号装置９００の動作について図面を参照して説明する。
【０１８２】
［復号装置９００の動作例］
図２４は、ＭＰ３データを復号する復号装置９００の処理手順例を示すフローチャートである。
【０１８３】
まず、ビットストリーム分解部９１０により、信号線９０１を介して供給されたＭＰ３データのフレームからヘッダが抽出されて、その抽出されたヘッダが解析される（ステップＳ９４１）。次に、ビットストリーム分解部９１０により、その解析されたヘッダに基づいて、ＭＰ３データのフレームからサイド情報が復号されるとともに、ＭＰ３データのフレームからハフマンコードデータ情報およびスケールファクタ情報が抽出される（ステップＳ９４２）。次に、スケールファクタ復号部９２０により、ビットストリーム分解部９１０からのスケールファクタ情報に基づいてスケールファクタが復号される（ステップＳ９４３）。次に、ハフマン復号部９３０により、ビットストリーム分解部９１０からのハフマンコードデータ情報に基づいて、ハフマンコードデータが復号される（ステップＳ９４４）。次に、逆量子化部９４０により、サイド情報と、スケールファクタと、ハフマンコードデータとに基づいて、ハフマンコードデータの逆量子化処理が行なわれることによって、逆量子化データが生成される（ステップＳ９５０）。この逆量子化データは、以下の式に基づいて生成される。
【数２】
2010160708.tif 000004
【０１８４】
なお、ｘｒ（ｉ，ｊ）は、逆量子化処理の算出結果である。ｉｓ（ｉ，ｊ）は、ハフマンコードデータである。Ｐは、サイド情報とスケールファクタとから算出される定数である。ｓｉｇｎ（ｉｓ（ｉ，ｊ））は、ハフマンコードデータの符号である。ｉは、サブバンド帯域番号である。ｊは、各サブバンド出力のサンプル番号である。
【０１８５】
次に、バタフライ演算部９５１により、逆量子化部９４０からの逆量子化データに基づいて、バタフライ演算処理が行われることによって、折り返し歪みが除去されたデータが生成される（ステップＳ９４６）。次に、ＩＭＤＣＴ演算部９５２により、バタフライ演算部９５１からの周波数領域におけるデータが時間領域におけるデータに変換される（ステップＳ９４７）。次に、サブバンド合成処理部９５３により、ＩＭＤＣＴ演算部９５２からの時間領域におけるデータがＰＣＭデータに変換される（ステップＳ９４８）。次に、その生成されたＰＣＭデータは信号線９０９を介して供給される（ステップＳ９４９）。
【０１８６】
次に、本発明の実施の形態によるステップＳ９５０の処理について図面を参照して説明する。
【０１８７】
図２５は、本発明の第２の実施の形態における逆量子化部９４０による逆量子化処理（ステップＳ９５０）の処理手順例を示すフローチャートである。ここでは、図２で示したプロセッサ１００によって逆量子化処理が行われることを想定する。
【０１８８】
まず、ＭＰ３データのフレームが、メモリ１２０からレジスタ１４０にロードされる（ステップＳ９５１）。次に、逆量子化処理のループ制御変数ｉが「０」に初期化される（ステップＳ９５２）。次に、逆量子化処理のループ制御変数ｊが「０」に初期化される（ステップＳ９５３）。次に、ＭＰ３データのフレームに対する逆量子化処理のうち、符号処理以外の処理が浮動小数点演算により行われる（ステップＳ９５４）。このステップＳ９５４は、逆量子化処理における符号処理以外の処理として、以下の式に基づいて浮動小数点演算が行われる。
【数３】
2010160708.tif 000005
【０１８９】
なお、ｘｒ＿ａｂｓは、逆量子化処理の符号以外の部分の算出結果である。
【０１９０】
次に、符号データ生成部２００により、浮動小数点数の符号ビットが抽出される（ステップＳ９５５）。次に、符号付加部３００により、その浮動小数演算により算出された浮動小数点数に符号が付加される（ステップＳ９５６）。
【０１９１】
次に、ループ制御変数ｊが予め定められた閾値ｊか否かが判断される（ステップＳ９５７）。そして、ループ制御変数ｊが閾値ｊ未満である場合には、ループ制御変数ｊに「１」が加算され（ステップＳ９５９）、ステップＳ９５４に戻り、処理が繰り返される。一方、ループ制御変数ｊが閾値ｊとなった場合には、ループ制御変数ｉが予め定められた閾値ｊか否かが判断される（ステップＳ９５８）。そして、ループ制御変数ｉが閾値ｊ未満である場合には、ループ制御変数ｉに「１」が加算され（ステップＳ９６０）、ステップＳ９５３に戻り、ステップＳ９５４に戻り、処理が繰り返される。
【０１９２】
このように、本発明の第２の実施の形態によれば、逆量子化部９４０における逆量子化演算処理においてプロセッサ１００を適用することができる。
【０１９３】
＜３．第３の実施の形態＞
［整数レジスタと浮動小数点レジスタを備えるプロセッサの一構成例］
図２６は、本発明の第３の実施の形態におけるプロセッサ１００の一構成例を示すブロック図である。ここでは、整数レジスタ１８０および浮動小数点レジスタ１９０以外の構成は、図２と同様のものであるのため、図２と同符号を付してここでの説明を省略する。
【０１９４】
図２６におけるプロセッサ１００は、図２で示したプロセッサ１００のレジスタ１４０に代えて、整数レジスタ１８０および浮動小数点レジスタ１９０を備えている。
【０１９５】
整数レジスタ１８０は、整数演算部１５０および符号判断部１６０における処理に必要なデータを一時的に保持するものである。この整数レジスタ１８０は、例えば、符号判断部１６０において処理される対象データおよび条件データを一時的に保持する。この整数レジスタ１８０は、バス１３０を介して、符号判断部１６０において処理された対象データを一時的に保持する。
【０１９６】
また、この整数レジスタ１８０は、符号判断部１６０において処理された対象データを浮動小数点レジスタ１９０に供給する。この整数レジスタ１８０は、一時的に保持している対象データを、信号線１４９を介して符号判断部１６０に供給する。また、この整数レジスタ１８０は、一時的に保持している条件データを、信号線１４８を介して符号判断部１６０に供給する。
【０１９７】
浮動小数点レジスタ１９０は、浮動小数点演算部１７０における処理に必要なデータおよび対象データを一時的に保持するものである。この浮動小数点レジスタ１９０は、例えば、バス１３０を介して供給されるメモリ１２０からの浮動小数点演算部１７０における処理に必要なデータを一時的に保持する。この浮動小数点レジスタ１９０は、浮動小数点演算部１７０において処理された結果のデータを一時的に保持する。この浮動小数点レジスタ１９０は、一時的に保持している対象データを整数レジスタ１８０に供給する。
【０１９８】
このように、整数レジスタ１８０および浮動小数点レジスタ１９０を独立して設けたプロセッサ１００であっても、図２と同様に、整数型データである条件データと浮動小数点型データである対象データとに基づいて対象データに符号を付加することができる。
【０１９９】
次に、本発明の第３の実施の形態におけるプロセッサ１００の動作について図面を参照して説明する。
【０２００】
［プロセッサ１００の動作例］
図２７は、本発明の第３の実施の形態におけるプロセッサ１００の符号付加処理の処理手順例を示すフローチャートである。
【０２０１】
まず、条件データは整数レジスタ１８０に、対象データは浮動小数点レジスタ１９０にメモリ１２０からロードされる（ステップＳ９７１）。次に、対象データは浮動小数点レジスタ１９０から整数レジスタ１８０に転送される（ステップＳ９７２）。次に、ビット列保持部２１０および符号ビット抽出部２２０により、条件データの符号ビットが抽出される（ステップＳ９７３）。次に、符号付加部３００により、対象データに符号が付加される（ステップＳ９７４）。次に、符号が付加された対象データが整数レジスタ１８０から浮動小数点レジスタ１９０に転送される（ステップＳ９７５）。
【０２０２】
このように、本発明の第３の実施の形態によれば、整数レジスタと浮動小数点レジスタとを個別に備えている場合においても整数演算により浮動小数点型のデータである対象データに符号を付加することができる。
【０２０３】
＜３．第４の実施の形態＞
［コンパイル処理システムの一構成例］
図２８は、本発明の第４の実施の形態におけるコンパイル処理システム５００の一構成例を示すブロック図である。コンパイル処理システム５００は、入力プログラムをコンパイルするためのシステムであり、ソースプログラム記憶部５１０と、コンパイル処理装置６００と、オブジェクトプログラム記憶部５３０とを備える。
【０２０４】
ソースプログラム記憶部５１０は、コンパイルを行うソースプログラムを記憶するものである。このソースプログラムは、例えば、対象データに符号を付加するコードが含まれるソースプログラムである。このソースプログラム記憶部５１０は、記憶したソースプログラムをコンパイル処理装置６００に供給する。なお、ソースプログラム記憶部５１０は、特許請求の範囲に記載のソースプログラム記憶部の一例である。
【０２０５】
コンパイル処理装置６００は、ソースプログラム記憶部５１０から読み出したソースプログラムをコンパイルすることによって、機械語プログラムであるオブジェクトプログラムを生成するものである。このコンパイル処理装置６００は、その生成したオブジェクトプログラムをオブジェクトプログラム記憶部５３０に供給する。このコンパイル処理装置６００は、ソースプログラム解析部６１０と、最適化部６２０と、コード生成部６３０とを備える。
【０２０６】
ソースプログラム解析部６１０は、ソースプログラム記憶部５１０から読み出したソースプログラムに基づいて形態素解析や構文解析などを行うことによって、最適化部６２０の処理に必要な中間表現と呼ばれる形式のコードである中間コードを生成するものである。このソースプログラム解析部６１０は、その生成した中間コードを最適化部６２０に供給する。このソースプログラム解析部６１０は、プログラム解析部６１１および符号付加コード抽出部６１２を備える。
【０２０７】
プログラム解析部６１１は、ソースプログラム記憶部５１０から供給されたソースプログラムに基づいて形態素解析や構文解析などを行うことによって、中間コードを生成するためのものである。このプログラム解析部６１１は、その中間コードを生成するためのコードを符号付加コード抽出部６１２に供給する。
【０２０８】
符号付加コード抽出部６１２は、プログラム解析部６１１から供給されたコードのうち、対象データに符号を付加するコードを抽出し、中間コードを生成するものである。この符号付加コード抽出部６１２は、その生成した中間コードを最適化部６２０に供給する。なお、符号付加コード抽出部６１２は、特許請求の範囲に記載の符号付加コード抽出部の一例である。
【０２０９】
最適化部６２０は、符号付加コード抽出部６１２から供給された中間コードに基づいて、実行速度の向上のための最適化およびコードサイズの削減のための最適化などのプログラム最適化処理を行うものである。この最適化部６２０は、その最適化を行ったプログラムをコード生成部６３０に供給する。この最適化部６２０は、プログラム最適化部６２１と、符号付加コード生成部６２２と、符号付加コード変換部６２３とを備える。
【０２１０】
プログラム最適化部６２１は、符号付加コード抽出部６１２から供給された中間コードに基づいて、プログラムの最適化処理を行うものである。プログラム最適化部６２１は、最適化したプログラムを符号付加コード生成部６２２に供給する。
【０２１１】
符号付加コード生成部６２２は、符号付加コード抽出部６１２により抽出されたコードに基づいて、符号付加コード変換部６２３において抽出されたコードに変換するコードを生成するものである。この変換するコードは、例えば、図２で示した符号データ生成部２００の演算をアセンブリ言語で実現するコードおよび図２で示した符号付加部３００の演算をアセンブリ言語で実現するコードである。すなわち、図２で示した符号データ生成部２００の演算をアセンブリ言語で実現するコードとは、条件データに含まれている条件を抽出して抽出された条件に基づいて対象データに符号を付加するための符号データを生成するコードである。また、図２で示した符号付加部３００の演算をアセンブリ言語で実現するコードとは、対象データを整数型のデータとして整数演算することによって符号データおよび対象データに基づいて対象データに符号を付加するコードである。符号付加コード生成部６２２は、生成したコードを、最適化を開始したプログラムと共に符号付加コード変換部６２３に供給する。なお、符号付加コード生成部６２２は、特許請求の範囲に記載の符号付加コード生成部の一例である。
【０２１２】
符号付加コード変換部６２３は、符号付加コード抽出部６１２により抽出されたコードを、符号付加コード生成部６２２により生成されたコードに変換するものである。この符号付加コード変換部６２３は、その変換したコードを含む最適化されたプログラムをコード生成部６３０に供給する。なお、符号付加コード変換部６２３は、特許請求の範囲に記載の符号付加コード変換部の一例である。
【０２１３】
コード生成部６３０は、符号付加コード変換部６２３から供給された最適化されたプログラムに基づいて、機械語プログラムのコードであるオブジェクトプログラムを生成するものである。このコード生成部６３０は、その生成したオブジェクトプログラムをオブジェクトプログラム記憶部５３０に供給する。なお、コード生成部６３０は、特許請求の範囲に記載のコード生成部の一例である。
【０２１４】
オブジェクトプログラム記憶部５３０は、コード生成部６３０から供給されたオブジェクトプログラムを記憶するものである。
【０２１５】
ここで、コンパイル処理装置６００により変換されるＣ言語のコードの一例を以下に示す。
【数４】
2010160708.tif 000006
【０２１６】
上式のコードは、例えば、コンパイル処理装置６００により下式のＣ言語のコードに変換される。
【数５】
2010160708.tif 000007
【０２１７】
例えば、「ＭＩＰＳ  Ｒ４０００」系を用いて演算速度を計測すると、上式のコードを下式のコードに変換することによって、サイクル数が「７」から「３」となり、５７％の改善となる。
【０２１８】
このように、コンパイル処理装置６００によれば、ソースプログラムをコンパイルすることによって、条件分岐および浮動小数点演算により対象データに符号を付加するコードを、整数演算により符号を付加するコードに変換することができる。
【０２１９】
なお、ここでは一例として、コンパイル処理装置６００は自動的に符号付加コードを変化する例を説明したが、符号付加コード抽出部６１２と、符号付加コード生成部６２２と、符号付加コード変換部６２３とに外部から制御するための指示受付部を備えてもよい。
【０２２０】
次に、本発明の実施の形態によるコンパイル処理装置６００の処理について図面を参照して説明する。
【０２２１】
図２９は、本発明の第４の実施の形態におけるコンパイル処理装置６００によるコンパイル処理の処理手順を示すフローチャートである。
【０２２２】
まず、コンパイル処理装置６００により、ソースプログラム記憶部５１０からソースプログラムが読み出される（ステップＳ９８１）。次に、プログラム解析部６１１により、プログラムの解析が開始される（ステップＳ９８２）。次に、符号付加コード抽出部６１２により、対象データおよび条件データに基づいて、符号を付加するコードが抽出される（ステップＳ９８３）。なお、ステップＳ９８３は、特許請求の範囲に記載の符号付加コード抽出手順の一例である。次に、プログラム最適化部６２１により、プログラムの最適化が開始される。（ステップＳ９８４）。次に、符号付加コード生成部６２２により、図２で示した符号データ生成部２００の演算をアセンブリ言語で実現するコードと、図２で示した符号付加部３００の演算をアセンブリ言語で実現するコードとが生成される（ステップＳ９８５）。なお、ステップＳ９８５は、特許請求の範囲に記載の符号付加コード生成手順の一例である。次に、符号付加コード変換部により、符号付加コード抽出部６１２により抽出されたコードが符号付加コード生成部６２２により生成されたコードに変換される（ステップＳ９８６）。なお、ステップＳ９８６は、特許請求の範囲に記載の符号付加コード変換手順の一例である。次に、コード生成部６３０により、変換されたコードを含むプログラムに基づいて機械語プログラムのコードであるオブジェクトプログラムが生成される（ステップＳ９８７）。なお、ステップＳ９８７は、特許請求の範囲に記載のコード生成手順の一例である。
【０２２３】
このように、本発明の第４の実施の形態によれば、条件分岐と浮動小数点演算とにより対象データに符号を付加するコードを整数演算により符号を付加するコードに自動的に変換することができる。
【０２２４】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、上述のように特許請求の範囲における発明特定事項とそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
【０２２５】
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【符号の説明】
【０２２６】
１００  プロセッサ
１１０  制御部
１２０  メモリ
１３０  バス
１４０  レジスタ
１４７、１４８、１４９、９０１、９０９  信号線
１５０  整数演算部
１６０  符号判断部
１７０  浮動小数点演算部
１８０  整数レジスタ
１９０  浮動小数点レジスタ
２００  符号データ生成部
２１０、２１２、２１３  ビット列保持部
２２０、２６０、２７０  符号ビット抽出部
２３０  反転部
２４０  シフト部
２５０  条件データ生成部
２８０  比較部
３００  符号付加部
５００  コンパイル処理システム
５１０  ソースプログラム記憶部
５３０  オブジェクトプログラム記憶部
６００  コンパイル処理装置
６１０  ソースプログラム解析部
６１１  プログラム解析部
６１２  符号付加コード抽出部
６２０  最適化部
６２１  プログラム最適化部
６２２  符号付加コード生成部
６２３  符号付加コード変換部
６３０  コード生成部
８１１  符号ビット
８１２  指数部
８１３  仮数部
８２１  符号ビット
８２２  整数部
８６０  フレーム
８６１  ヘッダ
８６２  エラーチェック
８６３  オーディオデータ
８６４  アンシラリデータ
９００  復号装置
９１０  ビットストリーム分解部
９２０  スケールファクタ復号部
９３０  ハフマン復号部
９４０  逆量子化部
９５０  ＨＦＢ部
９５１  バタフライ演算部
９５２  ＩＭＤＣＴ演算部
９５３  サブバンド合成処理部
【図１】
2010160708.tif 000008
【図２】
2010160708.tif 000009
【図３】
2010160708.tif 000010
【図４】
2010160708.tif 000011
【図５】
2010160708.tif 000012
【図６】
2010160708.tif 000013
【図７】
2010160708.tif 000014
【図８】
2010160708.tif 000015
【図９】
2010160708.tif 000016
【図１０】
2010160708.tif 000017
【図１１】
2010160708.tif 000018
【図１２】
2010160708.tif 000019
【図１３】
2010160708.tif 000020
【図１４】
2010160708.tif 000021
【図１５】
2010160708.tif 000022
【図１６】
2010160708.tif 000023
【図１７】
2010160708.tif 000024
【図１８】
2010160708.tif 000025
【図１９】
2010160708.tif 000026
【図２０】
2010160708.tif 000027
【図２１】
2010160708.tif 000028
【図２２】
2010160708.tif 000029
【図２３】
2010160708.tif 000030
【図２４】
2010160708.tif 000031
【図２５】
2010160708.tif 000032
【図２６】
2010160708.tif 000033
【図２７】
2010160708.tif 000034
【図２８】
2010160708.tif 000035
【図２９】
2010160708.tif 000036