(57)【要約】【課題】  ハードウェア規模の増大を最小限にしながら、高速な演算処理を行う集積回路装置を提供すること。【解決手段】  集積回路装置１０００は、命令コード２２に基づいて所与の処理を実行するＣＰＵ１０と、前記ＣＰＵ１０から供給されたデータに基づいて所与の演算処理を行い、その結果を前記ＣＰＵ１０に出力するコプロセッサ３０と、を含み、前記ＣＰＵ１０は、前記命令コード２２に基づいて直値データｉｍｍを生成して出力する直値生成部２００と、前記直値生成部２００から出力される前記直値データｉｍｍを前記コプロセッサ３０に供給するための直値データ供給線ＩＭＣと、を含む。【選択図】      図１
2006268152.tif 000002
【特許請求の範囲】
【請求項１】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
前記ＣＰＵは、
前記命令コードをフェッチするフェッチ部と、
複数のレジスタと、前記複数のレジスタから任意の一つ以上のレジスタを選択して、その値を出力する第１〜第ｎ（ｎは２以上の整数）のレジスタ選択回路と、を含むレジスタファイルと、
前記命令コードに基づいての直値データを生成して出力する直値生成部と、
前記フェッチ部にフェッチされている命令コードをコプロセッサに供給するための命令コード供給線と、
前記レジスタファイルの前記第１〜第ｎのレジスタ選択回路の一つ以上の出力を前記コプロセッサに供給するための第１〜第ｎのレジスタファイル供給線と、
前記直値生成部の出力を前記コプロセッサに供給するための直値データ供給線と、
を含み、
前記複数のレジスタは、所与の処理に用いられるアドレス又はデータを格納し、
前記フェッチ部は、フェッチした命令コードを命令コード供給線に出力し、
前記レジスタファイルの前記第１〜第ｎのレジスタ選択回路の出力は前記第１〜第ｎのレジスタファイル供給線に出力され、
前記直値生成部は、前記直値データを前記直値データ供給線に出力することを特徴とする集積回路装置。
【請求項２】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
前記ＣＰＵは、
前記命令コードに基づく演算処理を行うＡＬＵと、
前記ＡＬＵの演算処理結果を前記コプロセッサに供給するためのＡＬＵ出力供給線と、
前記ＡＬＵの演算処理結果に基づくフラグデータを格納するフラグレジスタの出力を前記コプロセッサに供給するためのフラグデータ供給線と、
を含み、
前記ＡＬＵの演算処理結果は前記ＡＬＵ出力供給線に出力され、
前記フラグレジスタに格納されている前記フラグデータは前記フラグデータ供給線に出力されることを特徴とする集積回路装置。
【請求項３】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
前記ＣＰＵは、
前記命令コードに基づいて直値データを生成して出力する直値生成部と、
メモリからのデータの読み出し又はメモリへのデータの書き込みを行うロードストア部と、
前記直値生成部の出力を前記コプロセッサに供給するための直値データ供給線と、
前記ロードストア部によって前記メモリから読み出されたデータを前記コプロセッサに供給するためのロードデータ供給線と、
を含み、
前記直値生成部は、前記直値データを前記直値データ供給線に出力し、
前記ロードストア部は、前記メモリから読み出したデータを前記ロードデータ供給線に出力することを特徴とする集積回路装置。
【請求項４】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
前記ＣＰＵは、
前記命令コードをフェッチするフェッチ部と、
複数のレジスタと、前記複数のレジスタから任意の一つ以上のレジスタを選択して、その値を出力する第１〜第ｎ（ｎは２以上の整数）のレジスタ選択回路と、を含むレジスタファイルと、
前記フェッチ部にフェッチされている命令コードをコプロセッサに供給するための命令コード供給線と、
前記レジスタファイルの前記第１〜第ｎのレジスタ選択回路の一つ以上の出力を前記コプロセッサに供給するための第１〜第ｎのレジスタファイル供給線と、
を含み、
前記複数のレジスタは、所与の処理に用いられるアドレス又はデータを格納し、
前記フェッチ部は、フェッチした命令コードを命令コード供給線に出力し、
前記レジスタファイルの前記第１〜第ｎのレジスタ選択回路の出力は前記第１〜第ｎのレジスタファイル供給線に出力されることを特徴とする集積回路装置。
【請求項５】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
前記ＣＰＵは、
複数のレジスタを含むレジスタファイルと、
前記複数のレジスタのうち、固定レジスタとして設定されたレジスタの出力を、前記コプロセッサに供給するための固定レジスタデータ供給線と、
を含み、
前記固定のレジスタは、所与の処理に用いられるアドレス又はデータを格納し、
前記固定レジスタに格納されている値が前記固定レジスタデータ供給線に出力されることを特徴とする集積回路装置。
【請求項６】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
前記ＣＰＵは、
前記命令コードに基づいて直値データを生成して出力する直値生成部と、
前記直値生成部の出力を前記コプロセッサに供給するための直値データ供給線と、
を含み、
前記直値生成部は、前記直値データを前記直値データ供給線に出力することを特徴とする集積回路装置。
【請求項７】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
前記ＣＰＵは、
前記命令コードに基づく演算処理を行い、その演算処理結果を出力するＡＬＵと、
前記ＡＬＵの演算処理結果を前記コプロセッサに供給するためのＡＬＵ出力供給線を含み、
前記ＡＬＵの演算処理結果が前記ＡＬＵ出力供給線に出力されることを特徴とする集積回路装置。
【請求項８】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
前記ＣＰＵは、
前記命令コードに基づく演算処理を行うＡＬＵと、
を含み、
前記ＡＬＵは、演算処理結果に基づくフラグデータを格納するフラグレジスタを含み、
前記ＣＰＵは、前記ＡＬＵの前記フラグレジスタの出力を前記コプロセッサに供給するためのフラグデータ供給線を含み、
前記フラグレジスタに格納されている前記フラグデータが前記フラグデータ供給線に出力されることを特徴とする集積回路装置。
【請求項９】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
前記ＣＰＵは、
メモリからのデータの読み出し又はメモリへのデータの書き込みを行うロードストア部と、
前記ロードストア部によって前記メモリから読み出されたデータを前記コプロセッサに供給するためのロードデータ供給線と、
を含み、
前記ロードストア部によって前記メモリから読み出されたデータが前記ロードデータ供給線に出力されることを特徴とする集積回路装置。
【請求項１０】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
前記ＣＰＵは、
前記命令コードをフェッチするフェッチ部と、
前記フェッチ部がフェッチした前記命令コードをデコードして制御信号を出力するデコード制御部と、
前記デコード制御部から出力される制御信号を前記コプロセッサに供給するための制御信号供給線と、
を含み、
前記デコード制御部から出力される制御信号は、前記制御信号供給線に出力されることを特徴とする集積回路装置。
【請求項１１】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
前記ＣＰＵは、
プログラムカウンタを含むフェッチ部と、
前記プログラムカウンタから出力されるカウント値を前記コプロセッサに供給するためのカウント値供給線と、
を含み、
前記フェッチ部は、前記プログラムカウンタから出力されるカウント値に基づいて前記命令コードのフェッチを行い、
前記プログラムカウンタの前記カウント値は前記カウント値供給線に出力されることを特徴とする集積回路装置。
【請求項１２】
命令コードに基づいて所与の処理を実行するＣＰＵと、前記ＣＰＵから供給されたデータに基づいて所与の演算処理を行い、その結果を前記ＣＰＵに出力するコプロセッサと、を含む集積回路装置であって、
前記ＣＰＵは、
その各々が、所与の処理に用いられるアドレス又はデータを保持する複数のレジスタと、前記複数のレジスタから任意の一つ以上のレジスタを選択して、その値を出力する第１〜第ｎ（ｎは２以上の整数）のレジスタ選択回路と、を含むレジスタファイルと、
前記レジスタファイルの前記第１〜第ｎのレジスタ選択回路の一つ以上の出力を前記コプロセッサに供給するための第１〜第ｎのレジスタファイル供給線と、
を含むことを特徴とする集積回路装置。
【請求項１３】
命令コードに基づいて所与の処理を実行するＣＰＵと、前記ＣＰＵから供給されたデータに基づいて所与の演算処理を行い、その結果を前記ＣＰＵに出力するコプロセッサと、を含む集積回路装置であって、
前記ＣＰＵは、
前記命令コードに基づいて直値データを生成して出力する直値生成部と、
前記直値生成部から出力される前記直値データを前記コプロセッサに供給するための直値データ供給線と、
を含むことを特徴とする集積回路装置。
【請求項１４】
命令コードに基づいて所与の処理を実行するＣＰＵと、前記ＣＰＵから供給されたデータに基づいて所与の演算処理を行い、その結果を前記ＣＰＵに出力するコプロセッサと、を含む集積回路装置であって、
前記ＣＰＵは、
前記命令コードに基づく演算処理を行うＡＬＵ（Arithmetic-and-Logic-Unit）と、
前記ＡＬＵの演算処理結果を前記コプロセッサに供給するためのＡＬＵ出力供給線と、
を含むことを特徴とする集積回路装置。
【請求項１５】
命令コードに基づいて所与の処理を実行するＣＰＵと、前記ＣＰＵから供給されたデータに基づいて所与の演算処理を行い、その結果を前記ＣＰＵに出力するコプロセッサと、を含む集積回路装置であって、
前記ＣＰＵは、
メモリからのデータの読み出し又はメモリへのデータの書き込みを行うロードストア部と、
前記ロードストア部によって前記メモリから読み出されたデータを前記コプロセッサに供給するためのロードデータ供給線と、
を含むことを特徴とする集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路装置に関する。
【背景技術】
【０００２】
近年の半導体技術の向上に伴って、様々な電子機器の需要が拡大されてきている。そのような電子機器には、様々な制御を処理するためのＣＰＵ（Central-Processing-Unit）が内蔵される場合が多々ある。このようなプロセッサが内蔵された電子機器に対して、より高度な処理能力を持たせる場合、ＣＰＵとは別に、特定の処理に特化されたコプロセッサ（Coprocessor）を設ける方法が知られている。この場合、ＣＰＵが苦手とする処理をコプロセッサに処理させることで、全体の処理を高速に行うことができる。
【０００３】
ところが、ＣＰＵとコプロセッサとを接続するバスの制限により、ＣＰＵはコプロセッサの処理に必要な情報を一度に供給することができなかった。このため、ＣＰＵは、コプロセッサに必要な情報を複数回に分けて供給する必要があり、処理能力の向上の妨げとなっていた。また、処理能力をさらに向上させるためには、動作クロックを引き上げるか、ハードウェア規模を拡大して処理能力を上げる必要があったが、これらの方法は低消費電力化やコスト削減に対する妨げとなっていた。
【特許文献１】特開２０００−２８４９６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ハードウェア規模の増大を最小限にしながら、高速な演算処理を行う集積回路装置を提供することにある。
【課題を解決するための手段】
【０００５】
本発明は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記ＣＰＵは、前記命令コードをフェッチするフェッチ部と、複数のレジスタと、前記複数のレジスタから任意の一つ以上のレジスタを選択して、その値を出力する第１〜第ｎ（ｎは２以上の整数）のレジスタ選択回路と、を含むレジスタファイルと、前記命令コードに基づいての直値データを生成して出力する直値生成部と、前記フェッチ部にフェッチされている命令コードをコプロセッサに供給するための命令コード供給線と、前記レジスタファイルの前記第１〜第ｎのレジスタ選択回路の一つ以上の出力を前記コプロセッサに供給するための第１〜第ｎのレジスタファイル供給線と、前記直値生成部の出力を前記コプロセッサに供給するための直値データ供給線と、を含み、前記複数のレジスタは、所与の処理に用いられるアドレス又はデータを格納し、前記フェッチ部は、フェッチした命令コードを命令コード供給線に出力し、前記レジスタファイルの前記第１〜第ｎのレジスタ選択回路の出力は前記第１〜第ｎのレジスタファイル供給線に出力され、前記直値生成部は、前記直値データを前記直値データ供給線に出力する集積回路装置に関する。
【０００６】
本発明によれば、ＣＰＵ（Central-Processing-Unit）は、命令コードと、直値データと、レジスタファイルの出力をＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。例えば、コプロセッサが直値データとレジスタファイルの出力を用いた特殊な積和演算処理を行う場合、ＣＰＵは、コプロセッサが必要とするこれらの情報を例えば１クロックで供給することができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、命令コード、直値データ及びレジスタファイルの出力を取得することができる。
【０００７】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記ＣＰＵは、前記命令コードに基づく演算処理を行うＡＬＵと、前記ＡＬＵの演算処理結果を前記コプロセッサに供給するためのＡＬＵ出力供給線と、前記ＡＬＵの演算処理結果に基づくフラグデータを格納するフラグレジスタの出力を前記コプロセッサに供給するためのフラグデータ供給線と、を含み、前記ＡＬＵの演算処理結果は前記ＡＬＵ出力供給線に出力され、前記フラグレジスタに格納されている前記フラグデータは前記フラグデータ供給線に出力される集積回路装置に関する。
【０００８】
本発明によれば、ＣＰＵは、ＡＬＵ（Arithmetic-and-Logic-Unit）の演算処理結果と、ＡＬＵの演算処理結果に基づくフラグデータをＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。例えば、コプロセッサがＡＬＵの演算処理結果とＡＬＵのフラグデータを用いた演算処理を行う場合、ＣＰＵは、コプロセッサが必要とするこれらの情報を例えば１クロックで供給することができる。例えば、飽和処理を高速に行うことができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、ＡＬＵの演算処理結果、フラグデータを取得することができる。
【０００９】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記ＣＰＵは、前記命令コードに基づいて直値データを生成して出力する直値生成部と、メモリからのデータの読み出し又はメモリへのデータの書き込みを行うロードストア部と、前記直値生成部の出力を前記コプロセッサに供給するための直値データ供給線と、前記ロードストア部によって前記メモリから読み出されたデータを前記コプロセッサに供給するためのロードデータ供給線と、を含み、前記直値生成部は、前記直値データを前記直値データ供給線に出力し、前記ロードストア部は、前記メモリから読み出したデータを前記ロードデータ供給線に出力する集積回路装置に関する。
【００１０】
本発明によれば、ＣＰＵは、直値生成部の直値データと、ロードストア部によって例えばメモリから読み出されたロードデータをＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。例えば、コプロセッサが直値データとロードデータを用いた演算処理を行う場合、ＣＰＵは、コプロセッサが必要とするこれらの情報を例えば１クロックで供給することができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、直値データ、ロードデータを取得することができる。
【００１１】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記ＣＰＵは、前記命令コードをフェッチするフェッチ部と、複数のレジスタと、前記複数のレジスタから任意の一つ以上のレジスタを選択して、その値を出力する第１〜第ｎ（ｎは２以上の整数）のレジスタ選択回路と、を含むレジスタファイルと、前記フェッチ部にフェッチされている命令コードをコプロセッサに供給するための命令コード供給線と、前記レジスタファイルの前記第１〜第ｎのレジスタ選択回路の一つ以上の出力を前記コプロセッサに供給するための第１〜第ｎのレジスタファイル供給線と、を含み、前記複数のレジスタは、所与の処理に用いられるアドレス又はデータを格納し、前記フェッチ部は、フェッチした命令コードを命令コード供給線に出力し、前記レジスタファイルの前記第１〜第ｎのレジスタ選択回路の出力は前記第１〜第ｎのレジスタファイル供給線に出力される集積回路装置に関する。
【００１２】
本発明によれば、ＣＰＵは、命令コードと、レジスタファイルの出力をＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。ＣＰＵは、コプロセッサが必要とするこれらの情報を例えば１クロックで供給することができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、命令コード及びレジスタファイルの出力を取得することができる。
【００１３】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記ＣＰＵは、複数のレジスタを含むレジスタファイルと、前記複数のレジスタのうち、固定レジスタとして設定されたレジスタの出力を、前記コプロセッサに供給するための固定レジスタデータ供給線と、を含み、前記固定のレジスタは、所与の処理に用いられるアドレス又はデータを格納し、前記固定レジスタに格納されている値が前記固定レジスタデータ供給線に出力される集積回路装置に関する。
【００１４】
本発明によれば、ＣＰＵは、固定レジスタの出力をＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。ＣＰＵは、コプロセッサが必要とするこれらの情報を例えば１クロックで供給することができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、固定レジスタの出力を取得することができる。
【００１５】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記ＣＰＵは、前記命令コードに基づいて直値データを生成して出力する直値生成部と、前記直値生成部の出力を前記コプロセッサに供給するための直値データ供給線と、を含み、前記直値生成部は、前記直値データを前記直値データ供給線に出力する集積回路装置に関する。
【００１６】
本発明によれば、ＣＰＵは、直値生成部から出力される直値データをＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。ＣＰＵは、コプロセッサが必要とするこれらの情報を例えば１クロックで供給することができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、直値生成部から出力される直値データを取得することができる。
【００１７】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記ＣＰＵは、前記命令コードに基づく演算処理を行い、その演算処理結果を出力するＡＬＵと、前記ＡＬＵの演算処理結果を前記コプロセッサに供給するためのＡＬＵ出力供給線を含み、前記ＡＬＵの演算処理結果が前記ＡＬＵ出力供給線に出力される集積回路装置に関する。
【００１８】
本発明によれば、ＣＰＵは、ＡＬＵの演算処理結果をＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。例えば、コプロセッサがＡＬＵの演算処理結果を用いた演算処理を行う場合、ＣＰＵは、コプロセッサが必要とするこれらの情報を例えば１クロックで供給することができる。例えば、飽和処理を高速に行うことができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、ＡＬＵの演算処理結果を取得することができる。
【００１９】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記ＣＰＵは、前記命令コードに基づく演算処理を行うＡＬＵと、を含み、前記ＡＬＵは、演算処理結果に基づくフラグデータを格納するフラグレジスタを含み、前記ＣＰＵは、前記ＡＬＵの前記フラグレジスタの出力を前記コプロセッサに供給するためのフラグデータ供給線を含み、前記フラグレジスタに格納されている前記フラグデータが前記フラグデータ供給線に出力される集積回路装置に関する。
【００２０】
本発明によれば、ＣＰＵは、ＡＬＵの演算処理結果に基づくフラグデータをＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。例えば、コプロセッサがＡＬＵのフラグデータを用いた演算処理を行う場合、ＣＰＵは、コプロセッサが必要とする情報を例えば１クロックで供給することができる。例えば、飽和処理を高速に行うことができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、フラグデータを取得することができる。
【００２１】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記ＣＰＵは、メモリからのデータの読み出し又はメモリへのデータの書き込みを行うロードストア部と、前記ロードストア部によって前記メモリから読み出されたデータを前記コプロセッサに供給するためのロードデータ供給線と、を含み、前記ロードストア部によって前記メモリから読み出されたデータが前記ロードデータ供給線に出力される集積回路装置に関する。
【００２２】
本発明によれば、ＣＰＵは、ロードストア部によって例えばメモリから読み出されたロードデータをＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。例えば、コプロセッサがロードデータを用いた演算処理を行う場合、ＣＰＵは、コプロセッサが必要とするこの情報を例えば１クロックで供給することができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、ロードデータを取得することができる。
【００２３】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記ＣＰＵは、前記命令コードをフェッチするフェッチ部と、前記フェッチ部がフェッチした前記命令コードをデコードして制御信号を出力するデコード制御部と、前記デコード制御部から出力される制御信号を前記コプロセッサに供給するための制御信号供給線と、を含み、前記デコード制御部から出力される制御信号は、前記制御信号供給線に出力される集積回路装置に関する。
【００２４】
本発明によれば、ＣＰＵは、デコード制御部から出力される制御信号をＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。
【００２５】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記ＣＰＵは、プログラムカウンタを含むフェッチ部と、前記プログラムカウンタから出力されるカウント値を前記コプロセッサに供給するためのカウント値供給線と、を含み、前記フェッチ部は、前記プログラムカウンタから出力されるカウント値に基づいて前記命令コードのフェッチを行い、前記プログラムカウンタの前記カウント値は前記カウント値供給線に出力される集積回路装置に関する。
【００２６】
本発明によれば、ＣＰＵは、プログラムカウンタから出力されるカウント値をＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。これにより、コプロセッサを用いた処理を高速に行うことができる。
【００２７】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵと、前記ＣＰＵから供給されたデータに基づいて所与の演算処理を行い、その結果を前記ＣＰＵに出力するコプロセッサと、を含む集積回路装置であって、前記ＣＰＵは、その各々が、所与の処理に用いられるアドレス又はデータを保持する複数のレジスタと、前記複数のレジスタから任意の一つ以上のレジスタを選択して、その値を出力する第１〜第ｎ（ｎは２以上の整数）のレジスタ選択回路と、を含むレジスタファイルと、前記レジスタファイルの前記第１〜第ｎのレジスタ選択回路の一つ以上の出力を前記コプロセッサに供給するための第１〜第ｎのレジスタファイル供給線と、を含む集積回路装置に関する。
【００２８】
本発明によれば、ＣＰＵは、レジスタファイルの出力をＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。ＣＰＵは、コプロセッサが必要とする情報を例えば１クロックで供給することができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、レジスタファイルの出力を取得することができる。
【００２９】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵと、前記ＣＰＵから供給されたデータに基づいて所与の演算処理を行い、その結果を前記ＣＰＵに出力するコプロセッサと、を含む集積回路装置であって、前記ＣＰＵは、前記命令コードに基づいて直値データを生成して出力する直値生成部と、前記直値生成部から出力される前記直値データを前記コプロセッサに供給するための直値データ供給線と、を含む集積回路装置に関する。
【００３０】
本発明によれば、ＣＰＵは、直値生成部の直値データをＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。例えば、コプロセッサが直値データを用いた演算処理を行う場合、ＣＰＵは、コプロセッサが必要とする情報を例えば１クロックで供給することができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、直値データを取得することができる。
【００３１】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵと、前記ＣＰＵから供給されたデータに基づいて所与の演算処理を行い、その結果を前記ＣＰＵに出力するコプロセッサと、を含む集積回路装置であって、前記ＣＰＵは、前記命令コードに基づく演算処理を行うＡＬＵ（Arithmetic-and-Logic-Unit）と、前記ＡＬＵの演算処理結果を前記コプロセッサに供給するためのＡＬＵ出力供給線と、を含む集積回路装置に関する。
【００３２】
本発明によれば、ＣＰＵは、ＡＬＵの演算処理結果をＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。例えば、コプロセッサがＡＬＵの演算処理結果を用いた演算処理を行う場合、ＣＰＵは、コプロセッサが必要とする情報を例えば１クロックで供給することができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、ＡＬＵの演算処理結果を取得することができる。
【００３３】
また、本発明は、命令コードに基づいて所与の処理を実行するＣＰＵと、前記ＣＰＵから供給されたデータに基づいて所与の演算処理を行い、その結果を前記ＣＰＵに出力するコプロセッサと、を含む集積回路装置であって、前記ＣＰＵは、メモリからのデータの読み出し又はメモリへのデータの書き込みを行うロードストア部と、前記ロードストア部によって前記メモリから読み出されたデータを前記コプロセッサに供給するためのロードデータ供給線と、を含む集積回路装置に関する。
【００３４】
本発明によれば、ＣＰＵは、ロードストア部によって例えばメモリから読み出されたロードデータをＣＰＵの動作クロックの例えば１クロックでコプロセッサに供給することができる。即ち、コプロセッサを用いた処理を高速に行うことができる。例えば、コプロセッサがロードデータを用いた演算処理を行う場合、ＣＰＵは、コプロセッサが必要とするこの情報を例えば１クロックで供給することができる。また、ＣＰＵが他の処理をしている間に、コプロセッサは、ロードデータを取得することができる。
【発明を実施するための最良の形態】
【００３５】
以下、本発明の一実施形態について、図面を参照して説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。なお、以下の図において同符号のものは同様の意味を表す。
【００３６】
１．集積回路装置
図１は、本実施形態に係る集積回路装置１０００の構成例である。集積回路装置１０００はＣＰＵ（Central-Processing-Unit）１０と、メモリ２０と、コプロセッサ３０を含むが、これに限定されない。例えば、集積回路装置１０００はメモリ２０やコプロセッサ３０を省略する構成でもよい。ＣＰＵ１０は、コプロセッサ３０と種々の情報をやりとりする。メモリ２０には例えば、ＣＰＵ１０が処理する命令コード２２やデータ２４が格納されている。
【００３７】
メモリ２０は、例えば命令アドレスバス５０を介してＣＰＵ１０側から命令アドレスを受け、その命令アドレスに従って、メモリ２０に格納されている命令コードを例えば命令データバス６０を介してＣＰＵ１０に出力する。また、メモリ２０は、例えばデータアドレスバス７０を介してＣＰＵ１０側からデータアドレスを受け、そのデータアドレスに従って、メモリ２０に格納されているデータ２４を例えばデータバス８０を介してＣＰＵ１０に出力する。ＣＰＵ１０は、上記のようにメモリ２０から取得した情報に基づいて様々な処理を行うことができる。また、メモリ２０は、ＣＰＵ１０側から例えばデータバス８０を介して出力されるデータを格納することも可能である。
【００３８】
一方、コプロセッサ３０は、ＣＰＵ１０の苦手な演算などを高速に処理できる演算処理部３２を含む。即ち、ＣＰＵ１０は、処理内容に応じてコプロセッサ３０を用いることにより、効率的な処理を行うことができる。
【００３９】
図２は、本実施形態に係る集積回路装置１０００とＣＰＵ１０の構成例である。ＣＰＵ１０は、命令フェッチを行うフェッチ部１００と、直値（即値ともいう）を生成する直値生成部２００と、複数のレジスタを含むレジスタファイル３００とを含む。さらに、ＣＰＵ１０は、演算処理を行うＡＬＵ（Arithmetic-and-Logic-Unit）４００と、データのリード又はライトを行うロードストア部５００と、フェッチ部１００がフェッチした命令をデコード制御するデコード制御部６００とを含む。
【００４０】
集積回路装置１０００は、フェッチ部１００にフェッチされている命令コードをコプロセッサ３０に供給するための命令コード供給線ＩＲＣと、直値生成部２００から出力される直値データをコプロセッサ３０に供給するための直値データ供給線ＩＭＣを含む。また、集積回路装置１０００は、レジスタファイル３００の第１、第２のレジスタ選択回路３１０、３２０（広義には第１〜第ｎのレジスタ選択回路）の出力をコプロセッサ３０に供給するための第１、第２のレジスタファイル供給線ＲＦＣ１、ＲＦＣ２（広義には、第１〜第ｎのレジスタファイル供給線）と、固定レジスタとして設定されたレジスタの出力をコプロセッサ３０に供給するための固定レジスタデータ供給線ＲＦＣ３（例えば図３参照）を含む。また、集積回路装置１０００は、ＡＬＵ４００の演算処理結果をコプロセッサ３０に供給するためのＡＬＵ出力供給線ＡＬＣ（例えば図３参照）と、ＡＬＵ４００のフラグレジスタ４１０に格納されているフラグデータをコプロセッサ３０に供給するためのフラグデータ供給線ＦＬＣ（例えば図３参照）を含む。また、集積回路装置１０００は、ロードストア部５００によって例えばメモリ２０から読み出されたデータをコプロセッサ３０に供給するためのロードデータ供給線ＬＤＣ（例えば図３参照）と、デコード制御部６００の制御信号をコプロセッサ３０に供給するための制御信号供給線ＣＳＣを含む。
【００４１】
なお、集積回路装置１０００は、上記の構成に限定されない。例えば、ＣＰＵ１０は、直値データ供給線ＩＭＣ、第１、第２のレジスタファイル供給線ＲＦＣ１、ＲＦＣ２、固定レジスタデータ供給線ＲＦＣ３等を省略する構成でもよい。また、コプロセッサ３０は、コプロセッサ用データ入力線ＣＰＩＮを介してコプロセッサの演算処理結果をＣＰＵ１０に出力するが、これに限定されない。
【００４２】
フェッチ部１００は、例えばメモリ２０に格納されている命令コード２２をフェッチするが、これに限定されない。また、フェッチ部１００はカウント値を出力するプログラムカウンタ（ＰＣ）１１０を含み、命令フェッチを行う場合、プログラムカウンタ１１０から出力されるカウント値に基づく命令アドレスを例えばメモリ２０に出力する。フェッチ部１００は、命令フェッチを行う場合、例えばプログラムカウンタ１１０から出力される値を命令アドレスとして命令アドレスバス５０を介してメモリ２０に出力するが、これに限定されない。フェッチ部１００は、命令フェッチを行う際に、例えばカウント値を命令アドレスとして出力した後にプログラムカウンタ１１０のカウント値をインクリメントするようにしてもよいし、プログラムカウンタ１１０のカウント値がインクリメントされた値を命令アドレスとして出力するようにしてもよい。
【００４３】
また、フェッチ部１００は、フェッチした命令コード２２をデコード制御部６００に出力する。フェッチ部１００には、例えば命令コード供給線ＩＲＣの一端が接続されている。フェッチ部１００は、この命令コード供給線ＩＲＣを介してコプロセッサ３０と接続することができる。この場合、フェッチ部１００は、フェッチした命令コード２２を命令コード供給線ＩＲＣを介してコプロセッサ３０に供給することができる。
【００４４】
また図２には省略されているが、フェッチ部１００のプログラムカウンタ１１０にはカウント値供給線ＰＣＣ（例えば図３参照）の一端が接続されている。プログラムカウンタ１１０は、このカウント値供給線ＰＣＣを介してコプロセッサ３０と接続することができる。この場合、フェッチ部１００のプログラムカウンタ１１０は、カウント値供給線ＰＣＣを介して、カウント値をコプロセッサ３０に供給することができる。なお、フェッチ部１００は、例えばデコード制御部６００からの制御信号ＣＳ１に基づいて次の命令フェッチを行う。
【００４５】
直値生成部２００は、命令コード２２に直値が含まれている場合、デコード制御部６００から出力される制御信号ＣＳ２に基づいて例えば３２ビットの直値データを生成する。直値生成部２００によって生成された直値データは、マルチプレクサ（ＭＵＸ）Ｍ１を介してＡＬＵ４００及びロードストア部５００に供給される。また、直値生成部２００には、例えば直値データ供給線ＩＭＣの一端が接続されている。直値生成部２００は、この直値データ供給線ＩＭＣを介してコプロセッサ３０と接続することができる。この場合、直値生成部２００は、生成した直値データ（例えば３２ビットの直値データ）を直値データ供給線ＩＭＣを介してコプロセッサ３０に供給することができる。
【００４６】
レジスタファイル３００は、複数のレジスタを含み、例えば１６個のレジスタＲ０〜Ｒ１５を含む。各レジスタＲ０〜Ｒ１５は例えば３２ビットのレジスタであるが、これに限定されない。レジスタファイル３００は、例えばデコード制御部６００から出力される制御信号ＣＳ３に基づいて、各レジスタＲ０〜Ｒ１５から任意のレジスタを選択し、そのレジスタに格納されている値を出力することができる。
【００４７】
具体的には、レジスタファイル３００は、各レジスタＲ０〜Ｒ１５の出力が接続された複数のレジスタ選択回路を含む。各レジスタ選択回路が各レジスタＲ０〜Ｒ１５から任意のレジスタを選択し、そのレジスタに格納されている値を出力する。複数のレジスタ選択回路のうちの第１のレジスタ選択回路３１０（図４参照）の出力ＲＱ１は例えばマルチプレクサＭ１に接続され、第１のレジスタ選択回路３１０の出力ＲＱ１から出力される値はマルチプレクサＭ１を介してＡＬＵ４００及びロードストア部５００に供給される。また、第１のレジスタ選択回路３１０の出力ＲＱ１には、例えばレジスタファイル供給線ＲＦＣ１の一端が接続されている。レジスタファイル３００の第１のレジスタ選択回路３１０の出力ＲＱ１は第１のレジスタファイル供給線ＲＦＣ１を介してコプロセッサ３０と接続することができる。この場合、レジスタファイル３００は、第１のレジスタ選択回路３１０の出力ＲＱ１から出力される値をコプロセッサ３０に供給することができる。
【００４８】
複数のレジスタ選択回路のうちの第２のレジスタ選択回路（広義には第ｎのレジスタ選択回路）３２０（図４参照）の出力ＲＱ２は、例えばＡＬＵ４００及びロードストア部５００に接続される。また、第２のレジスタ選択回路３２０は、例えば制御信号ＣＳ３に基づいて選択されたレジスタに格納されている値を出力ＲＱ２から出力する。第２のレジスタ選択回路３２０の出力ＲＱ２は、第２のレジスタファイル供給線ＲＦＣ２を介してコプロセッサ３０と接続することができる。この場合、レジスタファイル３００は、第２のレジスタ選択回路３２０の出力ＲＱ２から出力される値をコプロセッサ３０に供給することができる。
【００４９】
また、レジスタファイル３００の各レジスタＲ０〜Ｒ１５のうち、少なくとも一つを固定レジスタに設定することができる。その場合、図２には図示されていないが、固定レジスタには、例えば固定レジスタデータ供給線ＲＦＣ３の一端が接続される。この場合、レジスタファイル３００の各レジスタＲ０〜Ｒ１５のうち、固定レジスタに設定されたレジスタから出力される値をコプロセッサ３０に供給することができる。
【００５０】
なお、複数のレジスタ選択回路の各々は、上記の構成に限定されない。例えば、各レジスタ選択回路は、複数のレジスタから任意のレジスタを複数選択し、選択された複数のレジスタの各々に格納されているデータを出力することができる。
【００５１】
ＡＬＵ４００は、例えば第１のＡＬＵ入力ＡＩＮ１及び第２のＡＬＵ入力ＡＩＮ２を含み、第１のＡＬＵ入力ＡＩＮ１には例えば第２のレジスタ選択回路３２０の出力ＲＱ２から出力される値が入力され、第２のＡＬＵ入力ＡＩＮ２には例えばマルチプレクサＭ１の出力が入力される。ＡＬＵ４００は、各入力ＡＩＮ１、ＡＩＮ２に入力された値に対して、例えばデコード制御部６００から出力される制御信号ＣＳ４に基づく演算処理を行い、その結果をＡＬＵ出力ＡＱから出力する。ＡＬＵ出力ＡＱは例えばマルチプレクサＭ２に接続される。
【００５２】
また図２には省略されているが、ＡＬＵ出力ＡＱには、例えばＡＬＵ出力供給線ＡＬＣ（例えば図３参照）の一端が接続されている。ＡＬＵ４００は、このＡＬＵ出力供給線ＡＬＣを介してコプロセッサ３０と接続することができる。この場合、ＡＬＵ４００の出力（例えば演算処理結果）をコプロセッサ３０に供給することができる。
【００５３】
また、ＡＬＵ４００はフラグレジスタ４１０を含み、フラグレジスタ４１０には例えばキャリーフラグＣ、オーバーフローフラグＶ、ゼロフラグＺ及びネガティブフラグＮのフラグデータが格納される。また図２には省略されているが、フラグレジスタ４１０の出力には、例えばフラグレジスタ供給線ＦＬＣ（例えば図３参照）の一端が接続されている。ＡＬＵ４００のフラグレジスタ４１０は、このフラグデータ供給線ＦＬＣを介してコプロセッサ３０と接続することができる。この場合、フラグレジスタ４１０に格納されている各フラグデータＣ、Ｖ、Ｚ、Ｎをコプロセッサ３０に供給することができる。
【００５４】
ロードストア部５００は、マルチプレクサＭ１から出力された値や第２のレジスタ選択回路３２０の出力ＲＱ２から出力された値を受け、デコード制御部６００から出力される制御信号ＣＳ５に基づいてメモリ２０に格納（ライト）する。また、ロードストア部５００は、制御信号ＣＳ５に基づいてメモリ２０からデータの読み出し（リード）を行い、読み出したデータをロードデータ出力ＬＤＤから例えばマルチプレクサＭ２に出力する。
【００５５】
また、図２には省略されているが、ロードストア部５００のロードデータ出力ＬＤＤには例えばロードデータ供給線ＬＤＣ（例えば図３参照）の一端が接続されている。ロードストア部５００は、このロードデータ供給線ＬＤＣを介してコプロセッサ３０と接続することができる。この場合、ロードストア部５００の出力（例えばメモリから読み出したデータ）をコプロセッサ３０に供給することができる。
【００５６】
デコード制御部６００は、フェッチ部１００から例えば命令コード２２を受け、命令コード２２をデコードし、その結果に基づく制御信号を生成して各制御信号ＣＳ１〜ＣＳ５を出力する。また、デコード制御部６００は、各マルチプレクサＭ１、Ｍ２を制御する信号（図示せず）を生成することもできる。また、デコード制御部６００には、例えば制御信号供給線ＣＳＣの一端が接続されている。デコード制御部６００は、この制御信号供給線ＣＳＣを介してコプロセッサ３０と接続することができる。デコード制御部６００は、制御信号線ＣＳＣを介して、例えば各制御信号ＣＳ１〜ＣＳ５や各マルチプレクサＭ１、Ｍ２を制御する信号などをコプロセッサ３０に供給することができる。
【００５７】
なお、上記の構成はＣＰＵ１０の構成の一例であり、ＣＰＵ１０は上記の構成に限定されることはない。
【００５８】
２．各部との接続関係
図３は、ＣＰＵ１０とコプロセッサ３０の接続関係を説明する図である。
【００５９】
例えば命令コード供給線ＩＲＣの他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、フェッチ部１００から出力される命令コード２２（ｃｏｄｅ）を受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０はフェッチ部１００から出力される命令コード２２を取得することができる。なお、命令コード２２は３２ビットで構成されるがこれに限定されない。
【００６０】
例えばカウント値供給線ＰＣＣの他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、プログラムカウンタ１１０から出力されるカウント値を受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０はプログラムカウンタ１１０から出力されるカウント値を取得することができる。
【００６１】
例えば、直値データ供給線ＩＭＣの他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、直値生成部２００から出力される直値データ（ｉｍｍ）を受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０は直値生成部２００から出力される直値データを取得することができる。なお、直値生成部２００は例えば３２ビットの直値データを生成するがこれに限定されない。
【００６２】
例えば、第１のレジスタファイル供給線ＲＦＣ１の他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、第１のレジスタ選択回路３１０の出力ＲＱ１から出力されるレジスタデータｓｒｃ１を受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０はレジスタファイル３００から出力されるレジスタデータｓｒｃ１を取得することができる。
【００６３】
例えば、第２のレジスタファイル供給線ＲＦＣ２の他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、第２のレジスタ選択回路３２０の出力ＲＱ２から出力されるレジスタデータｓｒｃ２を受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０は、レジスタファイル３００から出力されるレジスタデータｓｒｃ２を取得することができる。
【００６４】
さらに、レジスタファイル３００の複数のレジスタＲ０〜Ｒ１５のうち、例えばレジスタＲ１５が固定レジスタに設定された場合、レジスタＲ１５の出力は、例えば固定レジスタデータ供給線ＲＦＣ３の一端に接続される。例えば、固定レジスタデータ供給線ＲＦＣ３の他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、レジスタＲ１５の出力から出力される固定レジスタデータｆｉｘ＿ｓｒｃを受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０はレジスタファイル３００から出力される固定レジスタデータｆｉｘ＿ｓｒｃを取得することができる。
【００６５】
例えば、ＡＬＵ出力供給線ＡＬＣの他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、ＡＬＵ出力ＡＱから出力されるＡＬＵ４００の演算処理結果を受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０はＡＬＵ４００の演算処理結果を取得することができる。
【００６６】
また、例えば、フラグデータ供給線ＦＬＣの他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、フラグレジスタ４１０から出力される各フラグデータＣ、Ｖ、Ｚ、Ｎを受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０はＡＬＵ４００の演算処理結果に基づく各フラグデータＣ、Ｖ、Ｚ、Ｎを取得することができる。なお、フラグレジスタ４１０には、各フラグデータＣ、Ｖ、Ｚ、Ｎが格納されるが、これに限定されない。他のフラグデータが格納されてもよい。その場合も、フラグレジスタ４１０はフラグデータ供給線ＦＬＣを介してコプロセッサ３０に他のフラグデータを供給することができる。また、フラグレジスタ４１０は、各フラグデータＣ、Ｖ、Ｚ、Ｎをまとめてフラグデータｆｌａｇとしてコプロセッサ３０に供給するようにしてもよい。
【００６７】
例えば、ロードデータ供給線ＬＤＣの他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、ロードデータ出力ＬＤＤから出力されるロードデータ（ｌｏａｄ）を受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０はロードストア部５００がメモリ２０から読み出したロードデータを取得することができる。
【００６８】
例えば、制御信号線ＣＳＣの他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、デコード制御部６００から出力される制御信号を受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０はデコード制御部６００で生成された制御信号を取得することができる。
【００６９】
図４は、レジスタファイル３００の構成例を示す図である。レジスタファイル３００は、１６個のレジスタＲ０〜Ｒ１５を含むが、これに限定されない。レジスタファイル３００に設けられるレジスタの数は必要に応じて適宜変更して設計してもよい。また、レジスタファイル３００は第１、第２のレジスタ選択回路３１０、３２０を含むが、これに限定されない。レジスタファイル３００に設けられるレジスタ選択回路の数は必要に応じて適宜変更して設計してもよい。その場合、レジスタ選択回路の数と同じ数だけ、レジスタファイル供給線をＣＰＵ１０に設けるようにしてもよい。
【００７０】
各レジスタＲ０〜Ｒ１５の出力は第１、第２のレジスタ選択回路３１０に接続される。第１のレジスタ選択回路３１０は、制御信号ＣＳ３１に基づいて各レジスタＲ０〜Ｒ１５を例えば択一的に選択し、選択されたレジスタに格納されている値を出力ＲＱ１から出力する。同様に、第２のレジスタ選択回路３２０は、制御信号ＣＳ３２に基づいて各レジスタＲ０〜Ｒ１５を選択し、選択されたレジスタに格納されている値を出力ＲＱ２から出力する。
【００７１】
また、各レジスタＲ０〜Ｒ１５のうち、例えばレジスタＲ１５が固定レジスタに設定されている場合、レジスタＲ１５の出力は、第１、第２のレジスタ選択回路３１０、３２０を介さずに、例えば固定レジスタ供給線ＲＦＣ３に接続される。
【００７２】
なお、各制御信号ＣＳ３１、ＣＳ３２は、例えばデコード制御回路６００によって生成され、図２の制御信号ＣＳ３に含むようにしてもよい。デコード制御回路６００は、例えばフェッチ部１００からの命令コード２２にしたがって、制御信号ＣＳ３１、ＣＳ３２を生成する。レジスタファイル３００は、各制御信号ＣＳ３１、ＣＳ３２に基づいてレジスタを選択し、選択されたレジスタに格納されている値を出力する。
【００７３】
３．命令定義と命令例
３．１．命令定義
図５（Ａ）は、命令コード２２の定義の一例を示す図である。命令コード２２は、例えば、コプロセッサイネーブルビットＣＥＮ、コプロセッサコードＣＣＤ、ＣＰＵオペコードＯＰＣＤを含む。コプロセッサイネーブルビットＣＥＮはコプロセッサ３０のイネーブル又はディセーブルを示し、コプロセッサコードＣＣＤはコプロセッサ３０に対する命令を示し、ＣＰＵオペコードＯＰＣＤはＣＰＵ１０のオペコードを示す。
【００７４】
命令コード２２は、例えば３２ビット長で構成され、例えばＭＳＢ（例えば第３１ビット）に１ビットのコプロセッサイネーブルビットＣＥＮが設定され、例えば第３０ビット〜第２７ビットに４ビットのコプロセッサコードＣＣＤが設定され、例えば第２６ビット〜第２０ビットに７ビットのＣＰＵオペコードＯＰＣＤが設定される。コプロセッサイネーブルビットＣＥＮが１であればコプロセッサ３０の動作を例えばイネーブルに設定し、反対にコプロセッサイネーブルビットＣＥＮが０であればコプロセッサ３０の動作を例えばディセーブルに設定する。命令コード２２において、残りの第１９ビット〜ＬＳＢ（第０ビット）の２０ビットは、ＣＰＵオペコードＯＰＣＤによって適宜使用される。
【００７５】
例えば、図５（Ｂ）に示すように、ＣＰＵオペコードＯＰＣＤに加算命令ａｄｄを設定した場合、第１９ビット〜第１６ビットの４ビット及び、第１５ビット〜第１２ビットの４ビットは例えばレジスタアドレスに用いられ、第１１ビット〜第０ビットの１２ビットが直値データｉｍｍ１２に用いられる。
【００７６】
図５（Ｂ）では、例えば、コプロセッサイネーブルビットＣＥＮが１であり、ＣＰＵオペコードＯＰＣＤが加算命令ａｄｄである場合の命令コード２２が一例として示されている。この例では、命令コード２２の第１９ビット〜第１６ビットの４ビットがレジスタＲ０のアドレスに設定され、第１５ビット〜第１２ビットの４ビットがレジスタＲ４のアドレスに設定されている。また、命令コード２２の第１１ビット〜第０ビットの直値データｉｍｍ１２が“０ｘｆｆｅ”（１０進数で−２）に設定されている。
【００７７】
この場合、コプロセッサイネーブルビットＣＥＮに基づいてコプロセッサ３０の動作がイネーブルに設定され、コプロセッサ３０は、コプロセッサコードＣＣＤに基づいた処理を行う。この時、ＣＰＵ１０側では、直値生成部２００によって、１２ビットの直値データｉｍｍ１２の“０ｘｆｆｅ”が例えば“０ｘｆｆｆｆｆｆｆｅ”の３２ビットの直値データｉｍｍにｓｉｇｎ拡張される。また、ＡＬＵ４００によって、レジスタＲ４に格納されている値と直値生成部２００から出力される３２ビットの直値データｉｍｍとの加算演算（％Ｒ４＋０ｘｆｆｆｆｆｆｆｅ）が行われる。
【００７８】
一方、コプロセッサ３０側では、コプロセッサコードＣＣＤに基づいた処理が行われる。このとき、コプロセッサ３０は、各供給線ＩＭＣ、ＲＦＣ１〜ＲＦＣ３、ＡＬＣ、ＦＬＣ、ＬＤＣ、ＣＳＣ等を介してＣＰＵ１０と接続されている。このため、直値生成部２００によって出力される拡張された３２ビットの直値データｉｍｍの“０ｘｆｆｆｆｆｆｆｅ”をＣＰＵ１０の動作クロックの１クロックで取得することができる。また、レジスタＲ０及びＲ４に格納されている値をＣＰＵ１０の動作クロックの１クロックで取得することができる。また、固定レジスタに設定されているレジスタＲ１５に格納されている値をＣＰＵ１０の動作クロックの１クロックで取得することができる。さらに、ＡＬＵ４００の演算処理結果（％Ｒ４＋０ｘｆｆｆｆｆｆｆｅ）をＣＰＵ１０の動作クロックの１クロックで取得することができ、その際のフラグデータＣ、Ｖ、Ｚ、Ｎも同様に取得することができる。
【００７９】
コプロセッサ３０は、上記のようにＣＰＵ１０内の各データをＣＰＵ１０の動作クロックの１クロックで取得することができるので、取得したデータを利用した複雑な演算が高速に行える。
【００８０】
なお、上記の命令コード２２の構成例は、一例であり他の命令定義も可能である。
【００８１】
３．２．特殊な積和演算処理
次にコプロセッサ３０が特殊な積和演算処理を行う場合の一例を説明する。
【００８２】
図６（Ａ）は特殊な積和演算処理を示すプログラムの一例である。このプログラムは、ＣＰＵ１０から取得したレジスタデータｓｒｃ１とレジスタデータｓｒｃ２との積にＣＰＵ１０から取得した直値データｉｍｍと図６（Ｂ）のアキュームレジスタ３４−２に格納されている値ａｃｃを加算し、その結果をアキュームレジスタ３４−２に格納する処理を示す。
【００８３】
図６（Ｂ）は、図６（Ａ）の処理を行う演算処理部３４の構成例である。演算処理部３４は、アキュームレジスタ３４−２、加算器３４−４、３４−６及び乗算器３４−８を含むが、これに限定されない。乗算器３４−８にはレジスタデータｓｒｃ１、ｓｒｃ２が入力され、その積算結果が加算器３４−６の一方の入力に入力される。また、加算器３４−６の他方の入力には直値データｉｍｍが入力され、加算器３４−６はその加算結果を加算器３４−４の一方の入力に出力する。また、加算器３４−４の他方の入力にはアキュームレジスタ３４−２に格納されている値ａｃｃが入力され、加算器３４−６はその加算結果をアキュームレジスタ３４−２に格納する。
【００８４】
図６（Ａ）に示すステップの処理を行う場合、本実施形態では、図６（Ｂ）に示す演算処理部３４をコプロセッサ３０に設ければよい。本実施形態では直値データｉｍｍ、レジスタデータｓｒｃ１、ｓｒｃ２をＣＰＵ１０からＣＰＵ１０の動作クロックの１クロックで取得することができるので、演算処理部３４を１クロックで処理できるように回路を設計すれば、図６（Ａ）に示すような特殊な積和演算処理を高速に実行することができる集積回路装置１０００を設計することができる。
【００８５】
３．３．飽和処理
次にコプロセッサ３０が飽和処理を行う場合の一例を説明する。
【００８６】
図７（Ａ）は飽和処理を示すプログラムの一例である。このプログラムは、ＣＰＵ１０側のＡＬＵ４００のフラグレジスタ４１０から取得したフラグデータＣが０である場合には、図７（Ｂ）のアキュームレジスタ３６−２にＡＬＵ４００の演算処理結果（ａｌｕ）を格納し、フラグデータＣが１である場合には、アキュームレジスタ３６−２に値（０ｘｆｆｆｆｆｆｆｆ）を格納する処理を示す。
【００８７】
図７（Ｂ）は、図７（Ａ）の処理を行う演算処理部３６の構成例である。演算処理部３６は、アキュームレジスタ３６−２、セレクタ３４−４を含むが、これに限定されない。セレクタ３６−４の入力の一方には値（０ｘｆｆｆｆｆｆｆｆ）が入力され、その他方にはＣＰＵ１０から取得した演算処理結果（ａｌｕ）が入力される。また、セレクタ３６−４には、ＣＰＵ１０から取得したフラグデータＣが入力され、セレクタ３６−４はそのフラグデータＣに基づいて値（０ｘｆｆｆｆｆｆｆｆ）及び演算処理結果（ａｌｕ）のどちらかをアキュームレジスタ３６−２に格納する。具体的には、フラグデータＣが０の場合には演算処理結果（ａｌｕ）をアキュームレジスタ３６−２に格納し、フラグデータＣが１の場合には値（０ｘｆｆｆｆｆｆｆｆ）をアキュームレジスタ３６−２に格納する。
【００８８】
ここで、フラグデータＣは、ＡＬＵ４００の演算処理で例えば桁の繰り上がりが生じた場合に１になる。即ち、桁の繰り上がりが生じた場合には、演算処理結果（ａｌｕ）を値（０ｘｆｆｆｆｆｆｆｆ）に丸めることができる。このような飽和処理（丸め処理）を演算処理部３６は行うことができる。
【００８９】
図７（Ａ）に示すプログラムの処理を行う場合、本実施形態では、図７（Ｂ）に示す演算処理部３６をコプロセッサ３０に設ければよい。この場合、本実施形態では演算処理結果（ａｌｕ）、フラグデータＣをＣＰＵ１０からＣＰＵ１０の動作クロックの１クロックで取得することができるので、演算処理部３６を１クロックで処理できるように回路を設計すれば、図７（Ａ）に示すような飽和処理を高速に実行することができる集積回路装置１０００を設計することができる。
【００９０】
３．４．ロード命令
次にロード命令ｌｄを説明する。図８（Ａ）は、命令コード２２にロード命令ｌｄが含まれている場合の一例が示されている。
【００９１】
例えば、ＣＰＵオペコードＯＰＣＤにロード命令ｌｄを設定した場合、第１９ビット〜第１６ビットの４ビット及び、第１５ビット〜第１２ビットの４ビットは例えばレジスタアドレスに用いられる。なお、第１１ビット〜第０ビットの１２ビットは、ロード命令ｌｄではＣＰＵ１０は未使用である。
【００９２】
図８（Ａ）では、例えば、コプロセッサイネーブルビットＣＥＮが１であり、命令コード２２の第１９ビット〜第１６ビットの４ビットがレジスタＲ５のアドレスに設定され、第１５ビット〜第１２ビットの４ビットがレジスタＲ１０のアドレスに設定されている。また、命令コード２２の第１１ビット〜第０ビットには、１２ビットの直値データｉｍｍ１２が設定されている。
【００９３】
図８（Ｂ）は、ロード命令ｌｄで読み出された値を利用した演算処理を行う演算処理部３８の構成例を示す図である。演算処理部３８は例えばコプロセッサ３０に設けられ、アキュームレジスタ３８−２と、加算器３８−４と、乗算器３８−６とを含むが、これに限定されない。演算処理部３８は命令コード２２に含まれる１２ビットの直値データｉｍｍ１２とロード命令ｌｄで読み出された値に基づいて演算処理を行う。具体的には、乗算器３８−６は１２ビットの直値データｉｍｍ１２とロード命令ｌｄで読み出された値（ｌｏａｄ）との積算結果を加算器３８−４の入力の一方に出力する。そして、加算器３８−４はアキュームレジスタ３８−２に格納されている値ａｃｃと乗算器３８−６の積算結果とを加算し、その加算結果をアキュームレジスタ３８−２に格納する。なお、演算処理部３８は、ＣＰＵ１０の動作クロックの１クロックで上記の演算処理を行うことができる。
【００９４】
例えば、図８（Ａ）に示す命令コード２２がＣＰＵ１０のフェッチ部１００にフェッチされた場合、ＣＰＵ１０側では、ロード命令ｌｄに従ってレジスタＲ１０から読み出された値がレジスタＲ５に格納され、レジスタＲ１０に格納されている値がインクリメントされる。具体的には、レジスタＲ１０の値が例えばロードストア部５００に出力され、レジスタＲ５には、ロードストア部５００のロードデータ出力ＬＤＤから出力される値（ｌｏａｄ）が格納される。なお、ロード命令ｌｄでは直値データｉｍｍ１２はＣＰＵ内では直接は使用されない。
【００９５】
一方、コプロセッサ３０側では、コプロセッサイネーブルビットＣＥＮに基づいてコプロセッサ３０の動作がイネーブルに設定され、コプロセッサコードＣＣＤに基づいた処理が行われる。この時、例えば、図８（Ａ）の命令コード２２のコプロセッサコードＣＣＤが図８（Ｂ）に示す演算処理部３８による演算処理を示す場合、演算処理部３８が演算処理を行う。具体的には、レジスタＲ１０に格納されていた値が図３のロードデータ供給線ＬＤＣを介して演算処理部３８の乗算器３８−６に入力される。また、コプロセッサ３０は命令コード供給線ＩＲＣを介して命令コード２２を取得する。これにより、命令コード２２に含まれる１２ビットの直値データｉｍｍ１２が演算処理部３８の乗算器３８−６に入力される。演算処理部３８はこれらの入力された値に対して上記のような演算を行い、その結果をアキュームレジスタ３８−２に格納する。
【００９６】
このような処理は、例えばメモリから読み出したデータをインクリメントしながら、その読み出したデータを固定データと積算してその結果を次々と加算していく処理に用いることができる。このような処理はマルチメディア系の演算処理に多用される。例えば、上述したように命令コード２２の下位１２ビットは、ロード命令ｌｄでは未使用である。この領域を利用して直値データｉｍｍ１２を命令コード２２に設定することで、１回の命令コード２２によって、コプロセッサ３００の演算処理部３８に必要なデータをコプロセッサ３０に供給できる。特に、本実施形態では、コプロセッサ３０は、直値データ供給線ＩＭＣ及びロードデータ供給線ＬＤＣを介してＣＰＵ１０と接続されているため、ロード命令ｌｄで読み出される値（ｌｏａｄ）と，命令コード出力２２に設定された直値データｉｍｍ１２をＣＰＵ１０の動作クロックの１クロックで取得することができる。このため、本実施形態では、上記のような複雑な演算が高速に行える。
【００９７】
３．５．エクステンション命令
図９（Ａ）は命令コード２２のＣＰＵオペコードＯＰＣＤがエクステンション命令ｅｘｔに設定された場合の命令コード２２の一例を示す。エクステンション命令ｅｘｔは、例えば２０ビットの拡張用直値データｅｘｔ＿ｉｍｍを含む。直値生成部２００は、エクステンション命令ｅｘｔに基づいて、例えばエクステンション命令ｅｘｔの次の命令コード２２に含まれる１２ビットの直値データｉｍｍ１２と拡張用直値データｅｘｔ＿ｉｍｍとを結合することで、例えば３２ビットの直値データｉｍｍを生成することができる。即ち、任意の３２ビットの直値データｉｍｍが必要な場合は、命令コード２２に対してエクステンション命令ｅｘｔと、拡張用直値データｅｘｔ＿ｉｍｍを設定すればよい。
【００９８】
図９（Ｂ）は、直値生成部２００が３２ビットの直値データｉｍｍを生成する際の動作を示すブロック図である。直値生成部２００は、拡張用レジスタ２１０とマルチプレクサＭ２１を含むが、これに限定されない。拡張用レジスタ２１０は例えば２０ビットの拡張用直値データｅｘｔ＿ｉｍｍを格納することができる。
【００９９】
例えば命令コード２２の下位２０ビットが拡張用レジスタ２１０に供給される。この時、命令コード２２にエクステンション命令ｅｘｔが設定されている場合には、例えばデコード制御部６００からの制御信号に基づいて拡張用レジスタ２１０は命令コード２２の下位２０ビットを格納する。即ち、拡張用レジスタ２１０は拡張用直値データｅｘｔ＿ｉｍｍを格納する。
【０１００】
そして、次の命令コード２２に含まれる１２ビットの直値データｉｍｍ１２が直値生成部２００に供給され、マルチプレクサＭ２１は前回の命令コード２２にエクステンション命令ｅｘｔが設定されていた場合には拡張用レジスタ２１０の出力を選択する。そして、マルチプレクサＭ２１から選択出力された２０ビットの拡張用直値データｅｘｔ＿ｉｍｍは、１２ビットの直値データｉｍｍ１２と結合され、３２ビットの直値データｉｍｍとして出力される。
【０１０１】
また、前回の命令コード２２にエクステンション命令ｅｘｔが設定されていない場合には、命令コード２２に基づいて生成されるデコード制御部６００の制御信号に従って、ゼロ拡張またはｓｉｇｎ拡張を選択する。具体的には、例えばゼロ拡張が選択された場合には、３２ビットの直値データｉｍｍの例えば上位２０ビットの各ビットが０に設定され、例えばｓｉｇｎ拡張が選択された場合には、直値データｉｍｍの上位２０ビットの各ビットが、１２ビットの直値データｉｍｍ１２の最上位ビットに基づいた値に設定される。ｓｉｇｎ拡張では、例えば１２ビットの直値データｉｍｍ１２の最上位ビットの値が１の場合には、３２ビットの直値データｉｍｍの上位２０ビットの各ビットが１に設定され、反対に１２ビットの直値データｉｍｍ１２の最上位ビットが０の場合には直値データｉｍｍの上位２０ビットの各ビットが０に設定される。
【０１０２】
本実施形態では、コプロセッサ３０は、直値データ供給線ＩＭＣを介してＣＰＵ１０と接続されているため、このように複雑に生成された３２ビットの直値データｉｍｍをＣＰＵ１０の動作クロックの１クロックで取得することができる。これにより、本実施形態では３２ビットの直値データｉｍｍを利用した演算が高速に行える。
【０１０３】
４．比較例との対比
図１０は、本実施形態に係る比較例のＣＰＵ１１とコプロセッサ３１との接続関係を示す図である。比較例では、フェッチ部１００から出力される例えば３２ビットの命令コード２２（ｃｏｄｅ）が命令コード供給ＩＲＣを介してコプロセッサ３１に供給される。また、レジスタファイル３００の出力ＲＱ２から出力されるレジスタデータｓｒｃ２は、第２のレジスタファイル供給線ＲＦＣ２を介してコプロセッサ３１に供給される。例えば、レジスタファイル３００の複数のレジスタＲ０〜Ｒ１５のうち、いずれか一つのレジスタに格納されている値をコプロセッサ３１に供給することができる。
【０１０４】
比較例では、例えばコプロセッサ３１に３２ビットの直値データｉｍｍを供給したい場合、例えばレジスタファイル３００を経由する必要がある。この場合、ＣＰＵ１１内では、少なくとも直値データｉｍｍをレジスタファイル３００に格納する処理が必要となり、その分処理速度のロスを生じる。また、レジスタファイル３００に格納されているデータのうち、２種類のデータをコプロセッサ３１に供給したい場合、例えば２回に分けてコプロセッサ３１に２種類のデータを供給する。この場合も、処理速度のロスを生じる。
【０１０５】
また、ＡＬＵ４００の演算処理結果やフラグデータをコプロセッサ３１に供給したい場合にも、例えばレジスタファイル３００を経由する必要があり、その分、処理速度のロスを生じる。同様にロードストア部５００から出力されるデータをコプロセッサ３１に供給したい場合にも、レジスタファイル３００を経由する必要があり、処理速度のロスを生じる。また、比較例ではデコード制御部６００の制御信号をコプロセッサ３１に直接供給することができない。
【０１０６】
これらに対して、本実施形態では、上述のようにＣＰＵ１０から種々のデータ等が各供給線ＩＭＣ、ＲＦＣ１〜ＲＦＣ３、ＡＬＣ、ＦＬＣ、ＬＤＣ、ＣＳＣ等を介してコプロセッサ３０に供給されている。これにより、本実施形態では、コプロセッサ３０に供給したいデータ等を、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０に供給することができる。即ち、比較例の課題である処理速度のロスを、本実施形態では比較例に比べて緩和できる。さらに、本実施形態では、比較例に対してハードウェア構成的にも複雑な論理回路ブロックの追加を必要としないため、比較例に比べて高速な処理を小さな回路規模で実現することができる。
【０１０７】
また、例えば図６（Ａ）、（Ｂ）で示す複雑な積和演算処理を比較例で行う場合、直値データｉｍｍ、レジスタデータｓｒｃ１、ｓｒｃ２を１クロックでコプロセッサ３１に供給することができないため、図６（Ｂ）で示す演算処理部３４のような簡単な構成では図６（Ａ）の処理を実現することができない。さらに、この場合、ＣＰＵ１１側では、直値データｉｍｍを供給する処理と、レジスタデータｓｒｃ１を供給する処理と、レジスタデータｓｒｃ２を供給する処理が必要となる。このため、各データｉｍｍ、ｓｒｃ１、ｓｒｃ２をコプロセッサ３１に供給する際に、比較例ではＣＰＵ１１の動作クロックの数クロックの時間を要し、少なくとも１クロックでこれらの行うことはできない。また、必要なデータが１度にコプロセッサ３１に供給されないため、比較例では供給されるデータを受け取る回路が複雑になる。
【０１０８】
これに対して、本実施形態では、コプロセッサ３０に直値データ供給線ＩＭＣ、第１、第２のレジスタファイル供給線ＲＦＣ１、ＲＦＣ２が接続されている。このため、ＣＰＵ１０は、図６（Ａ）の処理に関して、ＣＰＵ１０の動作クロックの１クロックで、各データｉｍｍ、ｓｒｃ１、ｓｒｃ２をコプロセッサ３０に供給することができる。即ち、図６（Ａ）、（Ｂ）に示すような複雑な積和演算処理を比較例に比べて高速に行うことができる。さらに、コプロセッサ３０側の演算処理部３４の回路規模を比較例に比べて小さくすることができる。
【０１０９】
また、例えば図７（Ａ）、（Ｂ）で示す飽和処理を比較例で行う場合、ＡＬＵ４００の演算処理結果ａｌｕ及びＡＬＵ４００のフラグレジスタ４１０に格納されているフラグデータＣを１クロックでコプロセッサ３１に供給することができない。このため、図７（Ｂ）で示す演算処理部３６のような簡単な構成では図７（Ａ）の処理を実現することができない。さらに、この場合、ＣＰＵ１１側では、演算処理結果ａｌｕを供給する処理と、フラグデータＣを供給する処理が必要となる。このため、各データａｌｕ、Ｃをコプロセッサ３１に供給する際に、比較例ではＣＰＵ１１の動作クロックの数クロックの時間を要し、少なくとも１クロックでこれらの処理を行うことはできない。また、必要なデータが１度にコプロセッサ３１に供給されないため、比較例では供給されるデータを受け取る回路が複雑になる。
【０１１０】
これに対して、本実施形態では、コプロセッサ３０にＡＬＵ出力供給線ＡＬＣ、フラグデータ供給線ＦＬＣが接続されている。このため、ＣＰＵ１０は、図７（Ａ）の処理に関して、ＣＰＵ１０の動作クロックの１クロックで、各データａｌｕ、Ｃをコプロセッサ３０に供給することができる。さらに、ＡＬＵ４００の演算処理結果ａｌｕの値が決定されたら、即座にコプロセッサ３０に演算処理結果ａｌｕを供給することができる。即ち、図７（Ａ）、（Ｂ）に示すような飽和処理を比較例に比べて高速に行うことができる。さらに、コプロセッサ３０側の演算処理部３６の回路規模を比較例に比べて小さくすることができる。
【０１１１】
また、例えば図８（Ａ）、（Ｂ）で示すロード命令による処理を比較例で行う場合、ロードデータｌｏａｄを１クロックでコプロセッサ３１に供給することができないため、図８（Ｂ）で示す演算処理部３８のような簡単な構成では図８（Ａ）の処理を実現することができない。さらに、この場合、ＣＰＵ１１側では、１２ビットの直値データｉｍｍ１２を供給する処理と、ロードデータｌｏａｄを供給する処理が必要となる。このため、各データｌｏａｄ、ｉｍｍ１２を供給する際に、比較例ではＣＰＵ１１の動作クロックの数クロックの時間を要し、少なくとも１クロックでこれらの処理を行うことはできない。また、必要なデータが１度にコプロセッサ３１に供給されないため、比較例では供給されるデータを受け取る回路が複雑になる。
【０１１２】
これに対して、本実施形態では、コプロセッサ３０に命令コード供給線ＩＲＣ、ロードデータ供給線ＬＤＣが接続されている。このため、ＣＰＵ１０は、図８（Ａ）の処理に関して、ＣＰＵ１０の動作クロックの１クロックで、各データｌｏａｄ、ｉｍｍ１２をコプロセッサ３０に供給することができる。即ち、図８（Ａ）、（Ｂ）に示すような複雑な積和処理を比較例に比べて高速に行うことができる。さらに、コプロセッサ３０側の演算処理部３８の回路規模を比較例に比べて小さくすることができる。
【０１１３】
上記のように、本実施形態の集積回路装置１０００は、比較例に比べて複雑な論理回路ブロックを追加せずに、コプロセッサ３０に必要なデータを１クロックで供給できるため、複雑な処理を比較例に比べて高速に処理を行うことができる。
【０１１４】
なお、コプロセッサ３０は、ＣＰＵ１０と同じクロック周波数で動作するが、これに限定されない。
【０１１５】
５．変形例
図１１は本実施形態に係る集積回路装置の変形例を示す図であり、図１１の集積回路装置は、ループ処理を高速に行うことができる。コプロセッサ３０は、演算処理部３９を含むこともできる。演算処理部３９はカウント値エンド３９−１、比較器３９−２、制御部３９−３、回数カウンタ３９−４、減算器３９−５及びカウント値スタート３９−６を含むが、これに限定されない。例えば減算器３９−５は、加算器でもよい。また、ＣＰＵ１０は、マルチプレクサＭ３１を含むこともできる。
【０１１６】
演算処理部３９は、ＣＰＵ１０側からカウント値を受け、比較器３９−２にてカウント値エンド３９−１とカウント値とを比較する。なお、カウント値エンド３９−１は、１回のループ処理が終了する時のカウント値を示す。比較器３９−２にてカウント値エンド３９−１とカウント値が一致したと判定されると、制御部３９−３が回数カウンタ３９−４の出力値に基づいてループ処理信号ｌｏｏｐをＣＰＵ１０側に出力する。具体的には、制御部３９−３は、回数カウンタ３９−４の出力値が０でない場合には、ループ処理信号ｌｏｏｐを、コプロセッサ３０から出力される命令アドレスをＣＰＵ１０側のマルチプレクサＭ３１に選択出力させる信号に設定する。また、減算器３９−５に回数カウンタ３９−４に格納されている値の減算処理を行わせる。
【０１１７】
反対に、制御部３９−３は、回数カウンタ３９−４の出力値が０の場合には、減算器３９−５の減算処理を停止させ、ループ処理信号ｌｏｏｐを、ＣＰＵ１０側のプログラムカウンタ１１０から出力される命令アドレスをマルチプレクサＭ３１に選択出力させる信号に設定する。なお、カウント値スタート３９−６には、ループ処理を開始するカウント値を示す。
【０１１８】
マルチプレクサＭ３１は、コプロセッサ３０からのループ処理信号ｌｏｏｐに基づいて、プログラムカウンタ１１０から出力される命令アドレスとコプロセッサ３０から出力される命令アドレスとを切り替えて、命令アドレスとして出力する。この時、マルチプレクサＭ３１にはプログラムカウンタ１１０に格納されている値が所定の値だけインクリメントされた値が入力される。マルチプレクサＭ３１から出力される命令アドレスは、例えばメモリ２０及びプログラムカウンタ１１０に出力され、プログラムカウンタ１１０はマルチプレクサＭ３１から出力された値をカウント値として格納する。
【０１１９】
ＣＰＵ１０側は、カウント値スタートで示されるカウント値がインクリメントされながら、それに対応する命令コード２２を順次に処理していく。そして、コプロセッサ３０側からのループ処理信号ｌｏｏｐに基づいて、マルチプレクサＭ３１は、出力する命令アドレスを切り替える。即ち、コプロセッサ３０側で１回のループ処理が終了したと判断した場合、マルチプレクサＭ３１にカウント値スタート３９−６の出力を選択させる信号にループ処理信号ｌｏｏｐが設定される。これにより、マルチプレクサＭ３１からカウント値スタート３９−６の値が出力され、プログラムカウンタ１１０にもカウント値スタート３９−６の値が格納される。このようにして、また、ループ処理が開始される。なお、ループ処理の回数は、回数カウンタ３９−４に設定されている値に基づいて行うことができる。
【０１２０】
図１０に示す比較例では、ループ処理を行う場合、例えば、処理を行い、ｎ回ループを行うためのカウンタをデクリメントし、そのカウンタの値を判断し、その結果に基づく分岐命令を行う。即ち、少なくとも、比較例の場合、ループ処理を行うために３〜４命令程度余分に必要である。
【０１２１】
これに対して、図１１の集積回路装置は、高速なループ処理を行うことができる。ＣＰＵ１０側は、ループ処理の中身の処理を行うだけで、ループ処理を行うための処理（例えばループ処理の終了の判断処理等）を特に必要としない。図１１の集積回路装置では、コプロセッサ３０にプログラムカウンタ１１０のカウント値が供給される。即ち、プログラムカウンタ１１０から出力されるカウント値に基づいて、コプロセッサ３０側でプログラムカウンタ１１０のカウント値を制御することができる。このため、ＣＰＵ１０側は、比較例で必要だった処理を省略することができる。
【０１２２】
上記のように、本発明の実施例について詳細に説明したが、本発明の新規事項及び効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。したがって、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書または図面において、少なくとも一度、より広義又は同義な異なる用語と共に記載された用語は、明細書または図面のいかなる箇所においても、その異なる用語に置き換えることができる。
【図面の簡単な説明】
【０１２３】
【図１】本実施形態に係る集積回路装置を示すブロック図。
【図２】本実施形態に係る集積回路装置とＣＰＵを示すブロック図。
【図３】本実施形態に係るＣＰＵとコプロセッサとの接続を示す図。
【図４】本実施形態に係るレジスタファイルを示すブロック図。
【図５】図５（Ａ）、図５（Ｂ）は、本実施形態に係る命令コードを示す図。
【図６】図６（Ａ）、図６（Ｂ）は、本実施形態に係る積和演算処理を示す図。
【図７】図７（Ａ）、図７（Ｂ）は、本実施形態に係る飽和処理を示す図。
【図８】図８（Ａ）、図８（Ｂ）は、本実施形態に係る演算処理を示す図。
【図９】図９（Ａ）、図９（Ｂ）は、本実施形態に係る直値の生成を示す図。
【図１０】本実施形態に係る比較例を示す図。
【図１１】本実施形態に係る変形例を示す図。
【符号の説明】
【０１２４】
１０  ＣＰＵ、２０  メモリ、２２  命令コード、２４  データ、３０  コプロセッサ、
１００  フェッチ部、１１０  プログラムカウンタ、２００  直値生成部、
３００  レジスタファイル、３１０  第１のレジスタ選択回路、
３２０  第２のレジスタ選択回路、４００  ＡＬＵ、４１０  フラグレジスタ、
５００  ロードストア部、６００  デコード制御部、ＡＬＣ  ＡＬＵ出力供給線、
ＣＳＣ制御信号供給線、ＣＳ１〜ＣＳ５  制御信号、ＦＬＣ  フラグデータ供給線、
ＩＭＣ  直値データ供給線、ｉｍｍ  直値データ、ＩＲＣ  命令コード供給線、
ＬＤＣ  ロードデータ供給線、ＰＣＣ  カウント値供給線、
ＲＦＣ１〜ＲＦＣ２  レジスタファイル供給線、
ＲＦＣ３  固定レジスタデータ供給線、Ｒ０〜Ｒ１５  複数のレジスタ
【図１】
2006268152.tif 000003
【図２】
2006268152.tif 000004
【図３】
2006268152.tif 000005
【図４】
2006268152.tif 000006
【図５】
2006268152.tif 000007
【図６】
2006268152.tif 000008
【図７】
2006268152.tif 000009
【図８】
2006268152.tif 000010
【図９】
2006268152.tif 000011
【図１０】
2006268152.tif 000012
【図１１】
2006268152.tif 000013