(57)【要約】【課題】コンピュータシステムの回路規模及び消費電力を削減することができるワンチッププロセッサを提供することである。【解決手段】ワンチッププロセッサ１において、プログラムカウンタ４は、プログラム２０に記述された命令のうち、次に実行される命令のメモリ２上のアドレスをカウントする。命令レジスタ５は、カウントされたアドレスに格納された命令を保持する。汎用制御手段３１は、命令レジスタ５により保持されている命令を読み出し、演算器７を制御して命令レジスタから読み出された命令を実行する。専用処理手段３２は、所定の処理を実行する。全体制御手段３３は、カウントされたアドレスが所定のアドレスに一致する場合、専用処理手段３２を動作させ、カウントされたアドレスが所定のアドレスに一致しない場合、カウントされたアドレスに格納されている命令を汎用制御手段３１に実行させる。【選択図】図１
2014071502.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納されたプログラムを実行するワンチッププロセッサであって、
演算器と、
前記プログラムに記述された命令のうち、次に実行される命令の前記メモリ上のアドレスをカウントするプログラムカウンタと、
前記プログラムカウンタによりカウントされたアドレスに格納された命令を前記メモリから読み出すメモリアクセス手段と、
前記メモリアクセス手段により読み出された命令を保持する命令レジスタと、
前記命令レジスタにより保持されている命令を読み出し、前記演算器を制御して前記命令レジスタから読み出された命令を実行する汎用制御手段と、
所定の処理を実行する専用処理手段と、
前記プログラムカウンタによりカウントされたアドレスが所定のアドレスに一致する場合、前記専用処理手段を動作させ、前記プログラムカウンタによりカウントされたアドレスが前記所定のアドレスに一致しない場合、前記プログラムカウンタによりカウントされたアドレスに格納されている命令を前記汎用制御手段に実行させる全体制御手段とを備える、ワンチッププロセッサ。
【請求項２】
請求項１に記載のワンチッププロセッサであって、
前記専用処理手段は、前記演算器を制御して前記所定の処理を実行する、ワンチッププロセッサ。
【請求項３】
請求項１又は請求項２に記載のワンチッププロセッサであって、
前記所定の処理は、前記プログラムに記述された命令のうち、前記メモリ上の特定のアドレス空間に格納された命令により実現される処理である、ワンチッププロセッサ。
【請求項４】
請求項３に記載のワンチッププロセッサであって、
前記全体制御手段は、前記専用処理手段が動作しているときに、前記汎用制御手段が前記命令レジスタに格納されている命令を新たに実行しないように前記汎用制御手段を制御する、ワンチッププロセッサ。
【請求項５】
請求項４に記載のワンチッププロセッサであって、
前記全体制御手段は、前記専用処理手段が動作しているときに、前記プログラムカウンタによるアドレスのカウントを停止させる、ワンチッププロセッサ。
【請求項６】
請求項４又は請求項５に記載のワンチッププロセッサであって、
前記全体制御手段は、前記専用処理手段の動作が終了した場合、前記プログラムカウンタによりカウントされるアドレスを、前記所定の処理の後に実行される命令が格納されているアドレスに更新する、ワンチッププロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワンチッププロセッサに関し、さらに詳しくは、メモリに格納されたプログラムを実行するワンチッププロセッサに関する。
【背景技術】
【０００２】
組み込みシステムに搭載されるワンチッププロセッサ（以下、「組み込み用プロセッサ」と呼ぶ。）の性能は、ＰＣ（Personal Computer）に搭載されるＣＰＵ（Central Processing Unit）の性能に比べて低い。このため、組み込み用プロセッサは、通信処理、音声処理、画像処理などの計算量の多い処理の実行に時間を要する。
【０００３】
組み込みシステムにおいて、計算量の多い処理を高速に実行するために、コプロセッサを用いることが提案されている。コプロセッサは、たとえば、プログラムの一部の命令列により実現される処理を実行するために最適化されたハードウェア回路である。
【０００４】
特許文献１において、コプロセッサとして用いられる演算装置は、ＣＰＵに接続され、ＣＰＵの内部状態をモニタする。たとえば、コプロセッサは、ＣＰＵに含まれるプログラムカウンタをモニタする。コプロセッサは、プログラムカウンタの値が特定の値となった場合に、ＣＰＵからデータを取得し、取得したデータを用いて演算処理を実行する。
【０００５】
しかし、組み込みシステムなどのコンピュータシステムにおいて、プロセッサとは別にコプロセッサを用いる場合、組み込みシステムの回路規模、消費電力などが増大するという問題がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許３７１９２４１号公報
【非特許文献】
【０００７】
【非特許文献１】「ＣＰＵと密に結合したコプロセッサによるハードウェア／ソフトウェア協調設計」，戸田  勇希、石浦  菜岐佐、神原  博之、冨山宏之著，情報処理学会研究報告、２０１０年１月２９日
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、コンピュータシステムの回路規模及び消費電力を削減することができるワンチッププロセッサを提供することである。
【課題を解決するための手段及び効果】
【０００９】
本発明のワンチッププロセッサは、メモリに格納されたプログラムを実行する。本発明のワンチッププロセッサは、演算器と、プログラムカウンタと、メモリアクセス手段と、命令レジスタと、汎用制御手段と、専用処理手段と、全体制御手段とを備える。プログラムカウンタは、プログラムに記述された命令のうち、次に実行される命令のメモリ上のアドレスをカウントする。メモリアクセス手段は、プログラムカウンタによりカウントされたアドレスに格納された命令をメモリから読み出す。命令レジスタは、メモリアクセス手段により読み出された命令を保持する。汎用制御手段は、命令レジスタにより保持されている命令を読み出し、演算器を制御して命令レジスタから読み出された命令を実行する。専用処理手段は、所定の処理を実行する。全体制御手段は、プログラムカウンタによりカウントされたアドレスが所定のアドレスに一致する場合、専用処理手段を動作させ、プログラムカウンタによりカウントされたアドレスが所定のアドレスに一致しない場合、プログラムカウンタによりカウントされたアドレスに格納されている命令を汎用制御手段に実行させる。
【００１０】
本発明によれば、プログラムカウンタによりカウントされたアドレスが所定のアドレスに一致する場合、専用処理手段が動作する。これにより、ワンチッププロセッサは、コプロセッサを用いることなく、所定の処理を実行することができるため、回路規模及び消費電力を削減することができる。
【００１１】
好ましくは、専用処理手段は、演算器を制御して所定の処理を実行する。
【００１２】
本発明によれば、汎用制御手段及び専用処理手段が、演算器を共用するため、回路規模をさらに削減することができる。特に、汎用制御手段と専用処理手段がともに乗除算器のような大規模な回路を使用する場合にその効果が顕著である。
【００１３】
好ましくは、所定の処理は、プログラムに記述された命令のうち、メモリ上の特定のアドレス空間に格納された命令により実現される処理である。
【００１４】
本発明によれば、専用処理手段が特定のアドレス空間に格納された命令により実現される処理を実行することにより、本発明のワンチッププロセッサは、メモリに格納されたプログラムを効率良く実行できる。この際、プログラムを修正する必要がない。即ち、専用処理手段を起動するためにプログラムを修正する必要はなく、プログラムは元のままで、所定の処理を効率化することが可能となる。
【００１５】
好ましくは、全体制御手段は、専用処理手段が動作しているときに、汎用制御手段が命令レジスタに格納されている命令を新たに実行しないように汎用制御手段を制御する。
【００１６】
本発明によれば、専用処理手段が動作している間、汎用制御手段は、新たな命令を実行しない。これにより、専用処理手段による処理結果が、汎用制御手段による命令の実行結果と干渉することを防止できる。
【００１７】
好ましくは、全体制御手段は、専用処理手段が動作しているときに、プログラムカウンタによるアドレスのカウントを停止させる。
【００１８】
本発明によれば、プログラムカウンタは、専用処理手段が動作しているときに、アドレスのカウントを停止する。これにより、汎用制御手段は、専用処理手段が動作しているときに、新たな命令を実行しない。
【００１９】
好ましくは、全体制御手段は、専用処理手段の動作が終了した場合、プログラムカウンタによりカウントされるアドレスを、所定の処理の後に実行される命令が格納されているアドレスに更新する。
【００２０】
本発明によれば、汎用制御手段は、専用処理手段の動作が終了した後に、プログラムに記述された命令を速やかに実行できる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施の形態によるワンチッププロセッサの構成を示す機能ブロック図である。
【図２】図１に示すプログラムに記述された命令を示す図である。
【図３】図１に示すワンチッププロセッサの動作を示すフローチャートである。
【図４】図１に示すプログラムに記述された命令の変形例を示す図である。
【図５】図１に示すプログラムに記述された命令の変形例を示す図である。
【発明を実施するための形態】
【００２２】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【００２３】
｛ワンチッププロセッサの構成｝
図１は、本発明の実施の形態によるワンチッププロセッサ１の機能ブロック図である。以下、ワンチッププロセッサ１を単に「プロセッサ１」と呼ぶ。図１を参照して、プロセッサ１は、家電用機器、産業用機器、あるいは医療用機器などに組み込まれるコンピュータシステム（組み込みシステム）に用いられる。
【００２４】
プロセッサ１は、図示しないバスによってメモリ２と接続される。メモリ２は、たとえば、ＲＡＭ（Random Access Memory），ＲＯＭ（Read Only Memory）などである。プロセッサ１は、メモリ２に格納されたプログラム２０を実行する。
【００２５】
プロセッサ１は、制御回路３と、プログラムカウンタ４と、命令レジスタ５と、レジスタファイル６と、複数の演算器７と、メモリインタフェース８とを備える。
【００２６】
制御回路３は、プロセッサ１を制御する。たとえば、制御回路３は、メモリインタフェース８を制御して、データなどをメモリ２から読み出す。制御回路３は、プログラム２０に記述された命令を実行するために、複数の演算器７を制御する。制御回路３の構成は、後述する。
【００２７】
プログラムカウンタ４は、プログラム２０に記述された命令のうち、次に実行される命令のメモリ２上のアドレスをカウントする。
【００２８】
メモリインタフェース８は、プロセッサ１がメモリ２にアクセスするために用いられる。メモリインタフェース８は、制御回路３の指示に応じて、命令又はデータをメモリ２から読み出し、かつ、命令の実行結果などのデータをメモリ２に書き込む。
【００２９】
命令レジスタ５は、メモリインタフェース８により読み出された命令を格納する。本実施の形態では、命令レジスタ５が１つの命令を格納する例を説明するが、命令レジスタ５は、複数の命令を格納してもよい。
【００３０】
レジスタファイル６は、複数のレジスタにより構成され、命令の実行結果などを格納する。演算器７は、制御回路３の指示に応じて、四則演算、論理演算、ビットシフト、その他処理に必要な演算を実行する演算器である。
【００３１】
次に、制御回路３の構成について説明する。制御回路３は、汎用制御手段３１と、専用処理手段３２と、全体制御手段３３とを備える。
【００３２】
汎用制御手段３１は、命令レジスタ５により保持されている命令を読み出し、命令レジスタ５から読み出された命令を演算器７を制御して実行する。
【００３３】
専用処理手段３２は、所定の処理を、最適な数の演算器を用いて実行する。専用処理手段３２により使用される演算器の種類及び演算器の制御方式も、所定の処理を実行するために最適化されたものである。これにより、専用処理手段３２は、汎用制御手段３１が所定の処理を実行する場合よりも、所定の処理を高速に、かつ低消費電力で実行することが可能となる。本実施の形態では、専用処理手段３２は、プログラム２０に記述された命令のうち、メモリ２上の特定のアドレス空間に格納された命令により実現される処理を、演算器７を制御して実行する。ただし、専用処理手段３２は、汎用制御手段３１とは異なり、プログラム２０に記述された命令を読み出して実行することはしない。
【００３４】
全体制御手段３３は、プログラムカウンタ４によりカウントされたアドレスが参照アドレス９に一致するか否かを確認する。全体制御手段３３は、カウントされたアドレスが参照アドレス９に一致する場合、専用処理手段３２を動作させる。全体制御手段３３は、カウントされたアドレスが参照アドレスに一致しない場合、カウントされたアドレスに格納されている命令を汎用制御手段３１に実行させる。
【００３５】
制御回路３は、参照アドレス９を保持する。参照アドレス９は、専用処理手段３２を動作させるか否かを判定するために用いられる所定のアドレスである。制御回路３は、参照アドレス９を保持するために、書き込み不可能なメモリ（図示省略）などを備える。本実施の形態では、参照アドレス９が１つのアドレスである場合を例に説明するが、制御回路３は、複数の参照アドレス９を保持してもよい。制御回路３が複数の参照アドレス９を保持する場合については、後述する。
【００３６】
｛動作概要｝
次に、プロセッサ１の動作の概要を説明する。プロセッサ１は、メモリ２に格納されたプログラム２０を実行する。プログラムカウンタ４は、プログラム２０に記述された命令のうち、次に実行される命令が格納されているメモリ２のアドレスをカウントする。
【００３７】
全体制御手段３３は、プログラムカウンタ４によりカウントされたアドレスを監視する。カウントされたアドレスが参照アドレス９に一致しない場合、全体制御手段３３は、カウントされたアドレスに格納されている命令の実行を、汎用制御手段３１に指示する。汎用制御手段３１は、全体制御手段３３の指示に応じて、メモリ２から命令を読み出して実行する。
【００３８】
カウントされたアドレスが参照アドレス９に一致する場合、全体制御手段３３は、専用処理手段３２を動作させる。専用処理手段３２は、プログラム２０に記述された命令のうち、メモリ２の特定のアドレス空間に格納された命令により実現される処理（以下、「対象処理」と呼ぶ。）を実行する。対象処理は、専用処理手段３２が演算器７を制御することにより実行される。専用処理手段３２に制御される演算器７は、汎用処理手段３１により使用される演算器７を含んでいてもよい。
【００３９】
これにより、プロセッサ１を用いる組み込みシステムは、対象処理を実行するコプロセッサを用いる組み込みシステムに比べて、回路規模及び消費電力を削減できる。汎用制御手段３１及び専用処理手段３２は、演算器７を共用するため、プロセッサ１の回路規模を削減できる。また、汎用制御手段３１及び専用処理手段３２は、メモリインタフェース８を共有するため、プロセッサ１の回路規模をさらに削減できる。メモリインタフェース８の共有により、汎用制御手段３１と専用処理手段３２とは、特殊な回路を用いることなくメモリ２のデータを共有することができ、汎用制御手段３１と専用処理手段３２とがメモリ２にアクセスする際に、時間的なオーバヘッドも発生しない。
【００４０】
｛プロセッサ１の動作｝
次に、プロセッサ１がプログラム２０を実行するときの動作を詳しく説明する。図２は、プログラム２０に記述された命令を示す図である。図２を参照して、１つの命令が、プログラム２０の各行に記述される。アドレスは、メモリ２における各命令の格納位置を示す。たとえば、命令２１は、メモリ２のアドレス「４００」に格納される。専用処理手段３２は、プログラム２０に記述された命令のうち、アドレス「４０８」〜「４２８」の命令群２２により実現される処理を、対象処理として実行する。
【００４１】
通常であれば、汎用制御手段３１は、プログラム２０に記述された命令を順次実行する。しかし、専用処理手段３２が、プログラム２０に記述された命令のうち、特定の命令（命令群２２）により実現される処理を、対象処理として実行することにより、プログラム２０全体の処理時間を短縮することができる。特定の命令とは、たとえば、並列処理が可能な命令により実現される処理である。したがって、命令群２２は、汎用制御手段３１により実行されない。
【００４２】
図３は、プログラム２０を実行するプロセッサ１の動作を示すフローチャートである。プログラムカウンタ４が、メモリ２上のアドレスをカウントする（ステップＳ１）。なお、プロセッサ１は、プログラム２０の実行を開始したときには、プログラム２０の先頭の命令のアドレスをプログラムカウンタ４に設定する。
【００４３】
全体制御手段３３は、カウントされたアドレスが、参照アドレス９に一致するか否かを確認する（ステップＳ２）。参照アドレス９は、命令群２２の先頭の命令のアドレス（アドレス「４０８」）である。全体制御手段３３は、カウントされたアドレスが参照アドレス９に一致しない場合（ステップＳ２でＮｏ）、カウントされたアドレスに格納された命令の実行を汎用制御手段３１に指示する。汎用制御手段３１は、ステップＳ３〜Ｓ８を実行することにより、プログラム２０に記述された命令を実行する。
【００４４】
汎用制御手段３１は、メモリインタフェース８を介して、カウントされたアドレスに格納された命令をメモリ２から読み出し、読み出した命令を命令レジスタ５に格納する（ステップＳ３）。汎用制御手段３１は、命令レジスタ５に格納された命令をデコードする（ステップＳ４）。汎用制御手段３１は、デコードにより、命令レジスタ５に格納された命令の種類を特定し、命令の実行に必要なデータを格納するレジスタを特定する。
【００４５】
汎用制御手段３１は、演算器７を制御して演算を実行する（ステップＳ５）。たとえば、特定された命令の種類が加算命令である場合、汎用制御手段３１は、演算器７に加算の実行を指示し、加算に用いられるデータをレジスタファイル６から読み出す。演算器７は、レジスタファイル６から読み出されたデータを加算する。汎用制御手段３１は、命令の種類に応じて、複数の演算器７を制御してもよい。
【００４６】
汎用制御手段３１は、メモリ２にアクセスする必要があるか否かを確認する（ステップＳ６）。汎用制御手段３１は、メモリ２にアクセスする必要がある場合（ステップＳ６でＹｅｓ）、メモリ２に対するデータの読み出し又は書き込みを行う（ステップＳ７）。たとえば、演算結果の保存先がメモリ２に指定されている場合、命令がメモリ２へのデータの書き込みを指示している場合などが該当する。一方、汎用制御手段３１は、演算結果の保存先がレジスタファイル６に指定されていた場合（ステップＳ６でＮｏ）、演算器７による演算結果をレジスタファイル６に書き込む（ステップＳ８）。
【００４７】
その後、プロセッサ１は、次の命令を実行するために、ステップＳ１に戻る。
【００４８】
ステップＳ２の説明に戻る。全体制御手段３３は、カウントされたアドレスが参照アドレス９に一致する場合（ステップＳ２でＹｅｓ）、プログラムカウンタ４によるアドレスのカウントを停止させる（ステップＳ９）。これにより、汎用制御手段３１は、プログラム２０の実行を一時的に停止する。全体制御手段３３は、専用処理手段３２に対して動作開始を指示する。専用処理手段３２は、演算器７を制御して、対象処理（命令群２２により実現される処理）を実行する（ステップＳ１０）。専用処理手段３２は、対象処理を実行する際に、メモリ２及びレジスタファイル６にアクセスしてもよい。また、専用処理手段３２は、対象処理の内容に応じて、複数の演算器７を制御してもよい。
【００４９】
対象処理の実行が終了した場合、全体制御手段３３は、プログラムカウンタ４のアドレスを、命令群２２の直後のアドレス「４３２」に更新する（ステップＳ１１）。これにより、汎用制御手段３１は、プログラム２０の実行を、アドレス「４８０」に格納された命令から再開することができる。プロセッサ１は、プログラム２０の実行を継続するために、ステップＳ２に戻る。
【００５０】
以上説明したように、プロセッサ１は、命令群２２により実現される対象処理を実行する専用処理手段３２を備える。プロセッサ１を組み込みシステムに用いることにより、組込システムの回路規模及び消費電力を削減することができるとともに、プログラム２０を効率良く実行することができる。
【００５１】
｛変形例｝
上記実施の形態では、専用処理手段３２が、命令群２２により実現される処理を、対象処理として実行する例を説明したが、これに限られない。専用処理手段３２は、命令群２２により実現される処理と異なる処理を、対象処理として実行してもよい。たとえば、命令群２２にバグがある場合、専用処理手段３２は、バグが修正された命令群２２により実現される処理を、対象処理として実行してもよい。
【００５２】
あるいは、専用処理手段３２は、プログラム２０と関係のない処理を対象処理として実行してもよい。対象処理の内容は、特に限定されない。図４は、専用処理手段３２が、命令群２２と関係のない処理を対象処理として実行する場合における、プログラム２０の内容を示す図である。制御回路３は、アドレス「４１６」を参照アドレス９として保持する。図４を参照して、ＮＯＰ（No Operation）が、アドレス「４１６」に格納される。全体制御手段３３が、カウントされたアドレスが「４１６」に一致する場合、専用処理手段３２に動作を指示する。これにより、専用処理手段３２は、プログラム２０の実行中に、プログラム２０と関係のない所定の処理を開始することができる。
【００５３】
また、プロセッサ１は、キャッシュメモリを備えていてもよい。汎用制御手段３１のみならず、専用処理手段３２が、キャッシュメモリに対するデータの書き込みや読み出しを行ってもよい。これによって、専用処理手段３２は、汎用制御手段３１によるキャッシュメモリのフラッシュ（全内容のメモリ２への書き出し）、あるいはキャッシュメモリのデータを共有するための複雑な機構を使用することなく、汎用制御手段３１と同様に、キャッシュメモリに格納されたデータを読み書きできる。また、これにより、専用処理手段３２の処理対象（所定の処理）がメモリ２に対する読み書きを行う命令を含む場合であっても、この命令を高速に実行することができる。
【００５４】
また、専用処理手段３２は、汎用制御手段３１と演算器７を共用する例を説明したが、これに限られない。プロセッサ１は、汎用制御手段３１が使用する演算器７と、専用処理手段３２が使用する演算器７とを個別に備えていてもよい。すなわち、プロセッサ１は、汎用制御手段３１と専用処理手段３２とを備えていればよい。
【００５５】
また、制御回路３は、複数の専用処理手段３２を備えていてもよい。図５を参照して、１つの専用処理手段３２は、命令群２３により実現される処理を対象処理として実行する。もう１つの専用処理手段３２は、命令群２４により実現される処理を対象処理として実行する。この場合、制御回路３は、参照アドレス９として、アドレス「４０４」，「４３２」を保持する。全体制御手段３３は、カウントされたアドレスに一致する参照アドレス９に応じて、動作させる専用処理手段３２を決定すればよい。
【００５６】
また、上記実施の形態において、カウントされたアドレスが参照アドレス９に一致する場合（ステップＳ２においてＹｅｓ）、全体制御手段３３は、プログラムカウンタ４によるアドレスのカウントの停止により、汎用制御手段３１を停止させる例を説明したが、これに限られない。専用処理手段３２が動作しているときに、汎用制御手段３１を停止させることができれば、汎用制御手段３１を停止させる方法は、特に限定されない。
【００５７】
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
【符号の説明】
【００５８】
１  プロセッサ
２  メモリ
３  制御回路
４  プログラムカウンタ
５  命令レジスタ
６  レジスタファイル
７  演算器
８  メモリインタフェース
９  参照アドレス
２０  プログラム
３１  汎用制御手段
３２  専用処理手段
３３  全体制御手段
【図１】
2014071502.tif 000003
【図２】
2014071502.tif 000004
【図３】
2014071502.tif 000005
【図４】
2014071502.tif 000006
【図５】
2014071502.tif 000007