TOP > 国内特許検索 > ワンチッププロセッサ > 明細書

明細書 :ワンチッププロセッサ

発行国 日本国特許庁(JP)
公報種別 特許公報(B2)
特許番号 特許第5993687号 (P5993687)
公開番号 特開2014-071502 (P2014-071502A)
登録日 平成28年8月26日(2016.8.26)
発行日 平成28年9月14日(2016.9.14)
公開日 平成26年4月21日(2014.4.21)
発明の名称または考案の名称 ワンチッププロセッサ
国際特許分類 G06F   9/38        (2006.01)
G06F   9/32        (2006.01)
FI G06F 9/38 370C
G06F 9/32 310A
請求項の数または発明の数 2
全頁数 11
出願番号 特願2012-214997 (P2012-214997)
出願日 平成24年9月27日(2012.9.27)
審査請求日 平成27年6月9日(2015.6.9)
特許権者または実用新案権者 【識別番号】503092180
【氏名又は名称】学校法人関西学院
発明者または考案者 【氏名】石浦 菜岐佐
個別代理人の代理人 【識別番号】100104444、【弁理士】、【氏名又は名称】上羽 秀敏
【識別番号】100112715、【弁理士】、【氏名又は名称】松山 隆夫
【識別番号】100125704、【弁理士】、【氏名又は名称】坂根 剛
【識別番号】100120662、【弁理士】、【氏名又は名称】川上 桂子
審査官 【審査官】清木 泰
参考文献・文献 特開2001-043084(JP,A)
特開2004-102595(JP,A)
特開2008-299475(JP,A)
戸田勇希,石浦菜岐佐,神原弘之,冨山宏之,CPUと密に結合したコプロセッサによるハードウェア/ソフトウエア協調設計,情報処理学会研究報告 平成21年度5,日本,社団法人情報処理学会,2010年 2月15日,all 6 pages(No.16)
調査した分野 G06F 9/30- 9/42
G06F15/78
G06T 1/00- 1/40
G06T 3/00- 5/50
G06T 9/00- 9/40
G06F 5/01
G06F 7/00
G06F 7/57- 7/575
G06F 7/74- 7/78
G06F 9/22- 9/28
特許請求の範囲 【請求項1】
メモリに格納されたプログラムを実行するワンチッププロセッサであって、
複数の演算器と、
前記プログラムに記述された命令のうち、次に実行される命令の前記メモリ上のアドレスをカウントするプログラムカウンタと、
前記プログラムカウンタによりカウントされたアドレスに格納された命令を前記メモリから読み出すメモリインタフェースと、
前記メモリインタフェースにより読み出された命令を保持する命令レジスタと、
制御回路とを備え、
前記制御回路は、
命令の種類に応じて前記演算器を制御して前記プログラムを実行する汎用制御手段と、
前記プログラムに記述された命令のうち前記メモリ上の特定のアドレス空間に格納された命令を読み出すことなく、前記特定のアドレス空間に格納された命令により実現される所定の処理を、当該所定の処理の内容に応じて前記演算器を制御して実行する専用処理手段と、
前記プログラムカウンタによりカウントされたアドレスが前記特定のアドレス空間の先頭アドレスに一致する場合、前記専用処理手段を動作させるとともに前記汎用制御手段が前記命令レジスタに格納されている命令を新たに実行しないように前記汎用制御手段を制御し、前記プログラムカウンタによりカウントされたアドレスが前記先頭アドレスに一致しない場合、前記プログラムカウンタによりカウントされたアドレスに格納されている命令を前記汎用制御手段に実行させ、前記専用処理手段の動作が終了した場合、前記プログラムカウンタによりカウントされるアドレスを、前記所定の処理の後に実行される命令が格納されているアドレスに更新する全体制御手段とを備え、
前記複数の演算器と、前記プログラムカウンタと、前記メモリインタフェースと、前記命令レジスタと、前記制御回路とが、ワンチップ上に実装されたワンチッププロセッサ。
【請求項2】
請求項1に記載のワンチッププロセッサであって、
前記全体制御手段は、前記専用処理手段が動作しているときに、前記プログラムカウンタによるアドレスのカウントを停止させる、ワンチッププロセッサ。

発明の詳細な説明 【技術分野】
【0001】
本発明は、ワンチッププロセッサに関し、さらに詳しくは、メモリに格納されたプログラムを実行するワンチッププロセッサに関する。
【背景技術】
【0002】
組み込みシステムに搭載されるワンチッププロセッサ(以下、「組み込み用プロセッサ」と呼ぶ。)の性能は、PC(Personal Computer)に搭載されるCPU(Central Processing Unit)の性能に比べて低い。このため、組み込み用プロセッサは、通信処理、音声処理、画像処理などの計算量の多い処理の実行に時間を要する。
【0003】
組み込みシステムにおいて、計算量の多い処理を高速に実行するために、コプロセッサを用いることが提案されている。コプロセッサは、たとえば、プログラムの一部の命令列により実現される処理を実行するために最適化されたハードウェア回路である。
【0004】
特許文献1において、コプロセッサとして用いられる演算装置は、CPUに接続され、CPUの内部状態をモニタする。たとえば、コプロセッサは、CPUに含まれるプログラムカウンタをモニタする。コプロセッサは、プログラムカウンタの値が特定の値となった場合に、CPUからデータを取得し、取得したデータを用いて演算処理を実行する。
【0005】
しかし、組み込みシステムなどのコンピュータシステムにおいて、プロセッサとは別にコプロセッサを用いる場合、組み込みシステムの回路規模、消費電力などが増大するという問題がある。
【先行技術文献】
【0006】

【特許文献1】特許3719241号公報
【0007】

【非特許文献1】「CPUと密に結合したコプロセッサによるハードウェア/ソフトウェア協調設計」,戸田 勇希、石浦 菜岐佐、神原 博之、冨山宏之著,情報処理学会研究報告、2010年1月29日
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明の目的は、コンピュータシステムの回路規模及び消費電力を削減することができるワンチッププロセッサを提供することである。
【課題を解決するための手段及び効果】
【0009】
本発明のワンチッププロセッサは、メモリに格納されたプログラムを実行する。本発明のワンチッププロセッサは、演算器と、プログラムカウンタと、メモリアクセス手段と、命令レジスタと、汎用制御手段と、専用処理手段と、全体制御手段とを備える。プログラムカウンタは、プログラムに記述された命令のうち、次に実行される命令のメモリ上のアドレスをカウントする。メモリアクセス手段は、プログラムカウンタによりカウントされたアドレスに格納された命令をメモリから読み出す。命令レジスタは、メモリアクセス手段により読み出された命令を保持する。汎用制御手段は、命令レジスタにより保持されている命令を読み出し、演算器を制御して命令レジスタから読み出された命令を実行する。専用処理手段は、所定の処理を実行する。全体制御手段は、プログラムカウンタによりカウントされたアドレスが所定のアドレスに一致する場合、専用処理手段を動作させ、プログラムカウンタによりカウントされたアドレスが所定のアドレスに一致しない場合、プログラムカウンタによりカウントされたアドレスに格納されている命令を汎用制御手段に実行させる。
【課題を解決するための手段及び効果】
【0010】
本発明によれば、プログラムカウンタによりカウントされたアドレスが所定のアドレスに一致する場合、専用処理手段が動作する。これにより、ワンチッププロセッサは、コプロセッサを用いることなく、所定の処理を実行することができるため、回路規模及び消費電力を削減することができる。
【課題を解決するための手段及び効果】
【0011】
好ましくは、専用処理手段は、演算器を制御して所定の処理を実行する。
【課題を解決するための手段及び効果】
【0012】
本発明によれば、汎用制御手段及び専用処理手段が、演算器を共用するため、回路規模をさらに削減することができる。特に、汎用制御手段と専用処理手段がともに乗除算器のような大規模な回路を使用する場合にその効果が顕著である。
【課題を解決するための手段及び効果】
【0013】
好ましくは、所定の処理は、プログラムに記述された命令のうち、メモリ上の特定のアドレス空間に格納された命令により実現される処理である。
【課題を解決するための手段及び効果】
【0014】
本発明によれば、専用処理手段が特定のアドレス空間に格納された命令により実現される処理を実行することにより、本発明のワンチッププロセッサは、メモリに格納されたプログラムを効率良く実行できる。この際、プログラムを修正する必要がない。即ち、専用処理手段を起動するためにプログラムを修正する必要はなく、プログラムは元のままで、所定の処理を効率化することが可能となる。
【課題を解決するための手段及び効果】
【0015】
好ましくは、全体制御手段は、専用処理手段が動作しているときに、汎用制御手段が命令レジスタに格納されている命令を新たに実行しないように汎用制御手段を制御する。
【課題を解決するための手段及び効果】
【0016】
本発明によれば、専用処理手段が動作している間、汎用制御手段は、新たな命令を実行しない。これにより、専用処理手段による処理結果が、汎用制御手段による命令の実行結果と干渉することを防止できる。
【課題を解決するための手段及び効果】
【0017】
好ましくは、全体制御手段は、専用処理手段が動作しているときに、プログラムカウンタによるアドレスのカウントを停止させる。
【課題を解決するための手段及び効果】
【0018】
本発明によれば、プログラムカウンタは、専用処理手段が動作しているときに、アドレスのカウントを停止する。これにより、汎用制御手段は、専用処理手段が動作しているときに、新たな命令を実行しない。
【課題を解決するための手段及び効果】
【0019】
好ましくは、全体制御手段は、専用処理手段の動作が終了した場合、プログラムカウンタによりカウントされるアドレスを、所定の処理の後に実行される命令が格納されているアドレスに更新する。
【課題を解決するための手段及び効果】
【0020】
本発明によれば、汎用制御手段は、専用処理手段の動作が終了した後に、プログラムに記述された命令を速やかに実行できる。
【図面の簡単な説明】
【0021】
【図1】本発明の実施の形態によるワンチッププロセッサの構成を示す機能ブロック図である。
【図2】図1に示すプログラムに記述された命令を示す図である。
【図3】図1に示すワンチッププロセッサの動作を示すフローチャートである。
【図4】図1に示すプログラムに記述された命令の変形例を示す図である。
【図5】図1に示すプログラムに記述された命令の変形例を示す図である。
【発明を実施するための形態】
【0022】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。

【0023】
{ワンチッププロセッサの構成}
図1は、本発明の実施の形態によるワンチッププロセッサ1の機能ブロック図である。以下、ワンチッププロセッサ1を単に「プロセッサ1」と呼ぶ。図1を参照して、プロセッサ1は、家電用機器、産業用機器、あるいは医療用機器などに組み込まれるコンピュータシステム(組み込みシステム)に用いられる。

【0024】
プロセッサ1は、図示しないバスによってメモリ2と接続される。メモリ2は、たとえば、RAM(Random Access Memory),ROM(Read Only Memory)などである。プロセッサ1は、メモリ2に格納されたプログラム20を実行する。

【0025】
プロセッサ1は、制御回路3と、プログラムカウンタ4と、命令レジスタ5と、レジスタファイル6と、複数の演算器7と、メモリインタフェース8とを備える。

【0026】
制御回路3は、プロセッサ1を制御する。たとえば、制御回路3は、メモリインタフェース8を制御して、データなどをメモリ2から読み出す。制御回路3は、プログラム20に記述された命令を実行するために、複数の演算器7を制御する。制御回路3の構成は、後述する。

【0027】
プログラムカウンタ4は、プログラム20に記述された命令のうち、次に実行される命令のメモリ2上のアドレスをカウントする。

【0028】
メモリインタフェース8は、プロセッサ1がメモリ2にアクセスするために用いられる。メモリインタフェース8は、制御回路3の指示に応じて、命令又はデータをメモリ2から読み出し、かつ、命令の実行結果などのデータをメモリ2に書き込む。

【0029】
命令レジスタ5は、メモリインタフェース8により読み出された命令を格納する。本実施の形態では、命令レジスタ5が1つの命令を格納する例を説明するが、命令レジスタ5は、複数の命令を格納してもよい。

【0030】
レジスタファイル6は、複数のレジスタにより構成され、命令の実行結果などを格納する。演算器7は、制御回路3の指示に応じて、四則演算、論理演算、ビットシフト、その他処理に必要な演算を実行する演算器である。

【0031】
次に、制御回路3の構成について説明する。制御回路3は、汎用制御手段31と、専用処理手段32と、全体制御手段33とを備える。

【0032】
汎用制御手段31は、命令レジスタ5により保持されている命令を読み出し、命令レジスタ5から読み出された命令を演算器7を制御して実行する。

【0033】
専用処理手段32は、所定の処理を、最適な数の演算器を用いて実行する。専用処理手段32により使用される演算器の種類及び演算器の制御方式も、所定の処理を実行するために最適化されたものである。これにより、専用処理手段32は、汎用制御手段31が所定の処理を実行する場合よりも、所定の処理を高速に、かつ低消費電力で実行することが可能となる。本実施の形態では、専用処理手段32は、プログラム20に記述された命令のうち、メモリ2上の特定のアドレス空間に格納された命令により実現される処理を、演算器7を制御して実行する。ただし、専用処理手段32は、汎用制御手段31とは異なり、プログラム20に記述された命令を読み出して実行することはしない。

【0034】
全体制御手段33は、プログラムカウンタ4によりカウントされたアドレスが参照アドレス9に一致するか否かを確認する。全体制御手段33は、カウントされたアドレスが参照アドレス9に一致する場合、専用処理手段32を動作させる。全体制御手段33は、カウントされたアドレスが参照アドレスに一致しない場合、カウントされたアドレスに格納されている命令を汎用制御手段31に実行させる。

【0035】
制御回路3は、参照アドレス9を保持する。参照アドレス9は、専用処理手段32を動作させるか否かを判定するために用いられる所定のアドレスである。制御回路3は、参照アドレス9を保持するために、書き込み不可能なメモリ(図示省略)などを備える。本実施の形態では、参照アドレス9が1つのアドレスである場合を例に説明するが、制御回路3は、複数の参照アドレス9を保持してもよい。制御回路3が複数の参照アドレス9を保持する場合については、後述する。

【0036】
{動作概要}
次に、プロセッサ1の動作の概要を説明する。プロセッサ1は、メモリ2に格納されたプログラム20を実行する。プログラムカウンタ4は、プログラム20に記述された命令のうち、次に実行される命令が格納されているメモリ2のアドレスをカウントする。

【0037】
全体制御手段33は、プログラムカウンタ4によりカウントされたアドレスを監視する。カウントされたアドレスが参照アドレス9に一致しない場合、全体制御手段33は、カウントされたアドレスに格納されている命令の実行を、汎用制御手段31に指示する。汎用制御手段31は、全体制御手段33の指示に応じて、メモリ2から命令を読み出して実行する。

【0038】
カウントされたアドレスが参照アドレス9に一致する場合、全体制御手段33は、専用処理手段32を動作させる。専用処理手段32は、プログラム20に記述された命令のうち、メモリ2の特定のアドレス空間に格納された命令により実現される処理(以下、「対象処理」と呼ぶ。)を実行する。対象処理は、専用処理手段32が演算器7を制御することにより実行される。専用処理手段32に制御される演算器7は、汎用処理手段31により使用される演算器7を含んでいてもよい。

【0039】
これにより、プロセッサ1を用いる組み込みシステムは、対象処理を実行するコプロセッサを用いる組み込みシステムに比べて、回路規模及び消費電力を削減できる。汎用制御手段31及び専用処理手段32は、演算器7を共用するため、プロセッサ1の回路規模を削減できる。また、汎用制御手段31及び専用処理手段32は、メモリインタフェース8を共有するため、プロセッサ1の回路規模をさらに削減できる。メモリインタフェース8の共有により、汎用制御手段31と専用処理手段32とは、特殊な回路を用いることなくメモリ2のデータを共有することができ、汎用制御手段31と専用処理手段32とがメモリ2にアクセスする際に、時間的なオーバヘッドも発生しない。

【0040】
{プロセッサ1の動作}
次に、プロセッサ1がプログラム20を実行するときの動作を詳しく説明する。図2は、プログラム20に記述された命令を示す図である。図2を参照して、1つの命令が、プログラム20の各行に記述される。アドレスは、メモリ2における各命令の格納位置を示す。たとえば、命令21は、メモリ2のアドレス「400」に格納される。専用処理手段32は、プログラム20に記述された命令のうち、アドレス「408」~「428」の命令群22により実現される処理を、対象処理として実行する。

【0041】
通常であれば、汎用制御手段31は、プログラム20に記述された命令を順次実行する。しかし、専用処理手段32が、プログラム20に記述された命令のうち、特定の命令(命令群22)により実現される処理を、対象処理として実行することにより、プログラム20全体の処理時間を短縮することができる。特定の命令とは、たとえば、並列処理が可能な命令により実現される処理である。したがって、命令群22は、汎用制御手段31により実行されない。

【0042】
図3は、プログラム20を実行するプロセッサ1の動作を示すフローチャートである。プログラムカウンタ4が、メモリ2上のアドレスをカウントする(ステップS1)。なお、プロセッサ1は、プログラム20の実行を開始したときには、プログラム20の先頭の命令のアドレスをプログラムカウンタ4に設定する。

【0043】
全体制御手段33は、カウントされたアドレスが、参照アドレス9に一致するか否かを確認する(ステップS2)。参照アドレス9は、命令群22の先頭の命令のアドレス(アドレス「408」)である。全体制御手段33は、カウントされたアドレスが参照アドレス9に一致しない場合(ステップS2でNo)、カウントされたアドレスに格納された命令の実行を汎用制御手段31に指示する。汎用制御手段31は、ステップS3~S8を実行することにより、プログラム20に記述された命令を実行する。

【0044】
汎用制御手段31は、メモリインタフェース8を介して、カウントされたアドレスに格納された命令をメモリ2から読み出し、読み出した命令を命令レジスタ5に格納する(ステップS3)。汎用制御手段31は、命令レジスタ5に格納された命令をデコードする(ステップS4)。汎用制御手段31は、デコードにより、命令レジスタ5に格納された命令の種類を特定し、命令の実行に必要なデータを格納するレジスタを特定する。

【0045】
汎用制御手段31は、演算器7を制御して演算を実行する(ステップS5)。たとえば、特定された命令の種類が加算命令である場合、汎用制御手段31は、演算器7に加算の実行を指示し、加算に用いられるデータをレジスタファイル6から読み出す。演算器7は、レジスタファイル6から読み出されたデータを加算する。汎用制御手段31は、命令の種類に応じて、複数の演算器7を制御してもよい。

【0046】
汎用制御手段31は、メモリ2にアクセスする必要があるか否かを確認する(ステップS6)。汎用制御手段31は、メモリ2にアクセスする必要がある場合(ステップS6でYes)、メモリ2に対するデータの読み出し又は書き込みを行う(ステップS7)。たとえば、演算結果の保存先がメモリ2に指定されている場合、命令がメモリ2へのデータの書き込みを指示している場合などが該当する。一方、汎用制御手段31は、演算結果の保存先がレジスタファイル6に指定されていた場合(ステップS6でNo)、演算器7による演算結果をレジスタファイル6に書き込む(ステップS8)。

【0047】
その後、プロセッサ1は、次の命令を実行するために、ステップS1に戻る。

【0048】
ステップS2の説明に戻る。全体制御手段33は、カウントされたアドレスが参照アドレス9に一致する場合(ステップS2でYes)、プログラムカウンタ4によるアドレスのカウントを停止させる(ステップS9)。これにより、汎用制御手段31は、プログラム20の実行を一時的に停止する。全体制御手段33は、専用処理手段32に対して動作開始を指示する。専用処理手段32は、演算器7を制御して、対象処理(命令群22により実現される処理)を実行する(ステップS10)。専用処理手段32は、対象処理を実行する際に、メモリ2及びレジスタファイル6にアクセスしてもよい。また、専用処理手段32は、対象処理の内容に応じて、複数の演算器7を制御してもよい。

【0049】
対象処理の実行が終了した場合、全体制御手段33は、プログラムカウンタ4のアドレスを、命令群22の直後のアドレス「432」に更新する(ステップS11)。これにより、汎用制御手段31は、プログラム20の実行を、アドレス「480」に格納された命令から再開することができる。プロセッサ1は、プログラム20の実行を継続するために、ステップS2に戻る。

【0050】
以上説明したように、プロセッサ1は、命令群22により実現される対象処理を実行する専用処理手段32を備える。プロセッサ1を組み込みシステムに用いることにより、組込システムの回路規模及び消費電力を削減することができるとともに、プログラム20を効率良く実行することができる。

【0051】
{変形例}
上記実施の形態では、専用処理手段32が、命令群22により実現される処理を、対象処理として実行する例を説明したが、これに限られない。専用処理手段32は、命令群22により実現される処理と異なる処理を、対象処理として実行してもよい。たとえば、命令群22にバグがある場合、専用処理手段32は、バグが修正された命令群22により実現される処理を、対象処理として実行してもよい。

【0052】
あるいは、専用処理手段32は、プログラム20と関係のない処理を対象処理として実行してもよい。対象処理の内容は、特に限定されない。図4は、専用処理手段32が、命令群22と関係のない処理を対象処理として実行する場合における、プログラム20の内容を示す図である。制御回路3は、アドレス「416」を参照アドレス9として保持する。図4を参照して、NOP(No Operation)が、アドレス「416」に格納される。全体制御手段33が、カウントされたアドレスが「416」に一致する場合、専用処理手段32に動作を指示する。これにより、専用処理手段32は、プログラム20の実行中に、プログラム20と関係のない所定の処理を開始することができる。

【0053】
また、プロセッサ1は、キャッシュメモリを備えていてもよい。汎用制御手段31のみならず、専用処理手段32が、キャッシュメモリに対するデータの書き込みや読み出しを行ってもよい。これによって、専用処理手段32は、汎用制御手段31によるキャッシュメモリのフラッシュ(全内容のメモリ2への書き出し)、あるいはキャッシュメモリのデータを共有するための複雑な機構を使用することなく、汎用制御手段31と同様に、キャッシュメモリに格納されたデータを読み書きできる。また、これにより、専用処理手段32の処理対象(所定の処理)がメモリ2に対する読み書きを行う命令を含む場合であっても、この命令を高速に実行することができる。

【0054】
また、専用処理手段32は、汎用制御手段31と演算器7を共用する例を説明したが、これに限られない。プロセッサ1は、汎用制御手段31が使用する演算器7と、専用処理手段32が使用する演算器7とを個別に備えていてもよい。すなわち、プロセッサ1は、汎用制御手段31と専用処理手段32とを備えていればよい。

【0055】
また、制御回路3は、複数の専用処理手段32を備えていてもよい。図5を参照して、1つの専用処理手段32は、命令群23により実現される処理を対象処理として実行する。もう1つの専用処理手段32は、命令群24により実現される処理を対象処理として実行する。この場合、制御回路3は、参照アドレス9として、アドレス「404」,「432」を保持する。全体制御手段33は、カウントされたアドレスに一致する参照アドレス9に応じて、動作させる専用処理手段32を決定すればよい。

【0056】
また、上記実施の形態において、カウントされたアドレスが参照アドレス9に一致する場合(ステップS2においてYes)、全体制御手段33は、プログラムカウンタ4によるアドレスのカウントの停止により、汎用制御手段31を停止させる例を説明したが、これに限られない。専用処理手段32が動作しているときに、汎用制御手段31を停止させることができれば、汎用制御手段31を停止させる方法は、特に限定されない。

【0057】
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
【符号の説明】
【0058】
1 プロセッサ
2 メモリ
3 制御回路
4 プログラムカウンタ
5 命令レジスタ
6 レジスタファイル
7 演算器
8 メモリインタフェース
9 参照アドレス
20 プログラム
31 汎用制御手段
32 専用処理手段
33 全体制御手段

図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3
【図5】
4