(57)【要約】      （修正有）【課題】処理速度の高速化を図った中央演算処理装置を提供する。【解決手段】ＲＩＳＣアーキテクチャで構成されているＣＰＵ１において、命令メモリ３Ａのアドレスを指示するプログラムカウンタ（ＰＣ）２Ａ及び、命令デコーダ５でデコードされる命令においてオペランドとして指定される汎用レジスタ６Ａを非同期式のメモリで構成している。【選択図】図１
2020140290.tif 000002
【特許請求の範囲】
【請求項１】
縮小命令セットコンピュータアーキテクチャで構成されている中央演算処理装置において、
複数の命令からなるプログラムデータが格納される命令メモリと、
前記命令メモリのアドレスを指示するプログラムカウンタと、
前記命令メモリから読み出された命令を解読する命令デコーダと、
前記命令デコーダで解読される命令においてオペランドとして指定可能な汎用レジスタと、を備え、
前記プログラムカウンタ及び前記汎用レジスタが非同期式記憶素子で構成されていることを特徴とする中央演算処理装置。
【請求項２】
前記命令メモリから読み出された命令は前記命令デコーダに直接入力されることを特徴とする請求項１に記載の中央演算処理装置。
【請求項３】
前記命令メモリは、同期式記憶素子で構成されていることを特徴とする請求項１または２に記載の中央演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中央演算処理装置に関する。
【背景技術】
【０００２】
従来、中央演算処理装置（マイクロコンピュータやマイクロプロセッサともいう）においては、命令実行の高速化のため１つの命令の実行に際して複数のステージに分割して行われることが多い。
【０００３】
例えば、特許文献１では、メモリから命令を読み込む命令フェッチ（ＩＦ）ステージ、ＩＦステージで読み込んだ命令を解読するデコード（ＤＥＣ）ステージ、ＤＥＣステージで解読された命令の内容に応じて算術・論理演算やＩＦステージで読み込むべき命令のアドレスやメモリへアクセスする際のアドレス等を演算する実行（ＥＸＥ）ステージ、ＤＥＣステージで解読された命令の内容に応じてＥＸＥステージでの演算結果をアドレスとしてメモリへのアクセスを行うメモリアクセス（ＭＡ）ステージ、ＤＥＣステージで解読された命令の内容に応じて演算データもしくはメモリから取り込んだデータを内部レジスタに書き込むライトバック（ＷＢ）ステージといった５つのステージに分けて命令が実行される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３０９４５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
命令実行を複数のステージに分割し、パイプライン処理とすることで、複数命令からなる処理全体の時間の短縮化が図れ、結果として命令実行を高速化できる。しかしながら、分岐命令等により発生するパイプラインハザードへの対策が必要となり、回路が複雑化し、回路規模が増大してしまう。
【０００６】
本発明は、以上の背景に鑑みてなされたものであり、処理速度の高速化を図った中央演算処理装置を提供することを目的としている。
【課題を解決するための手段】
【０００７】
上述した課題を解決するためになされた請求項１に記載された発明は、縮小命令セットコンピュータアーキテクチャで構成されている中央演算処理装置において、複数の命令からなるプログラムデータが格納される命令メモリと、前記命令メモリのアドレスを指示するプログラムカウンタと、前記命令メモリから読み出された命令を解読する命令デコーダと、前記命令デコーダで解読される命令においてオペランドとして指定可能な汎用レジスタと、を備え、前記プログラムカウンタ及び前記汎用レジスタが非同期式記憶素子で構成されていることを特徴とする中央演算処理装置である。
【０００８】
請求項２に記載された発明は、請求項１に記載された発明において、前記命令メモリから読み出された命令は前記命令デコーダに直接入力されることを特徴とする。
【０００９】
請求項３に記載された発明は、請求項１または２に記載された発明において、前記命令メモリは、同期式記憶素子で構成されていることを特徴とする。
【発明の効果】
【００１０】
以上説明したように本発明によれば、プログラムカウンタ及び汎用レジスタが非同期式記憶素子で構成されているので、これらにデータを格納する際にクロック信号を必要とせず、少なくともライトバックステージを削減することができる。したがって、ＣＰＵ１における命令実行サイクル数の削減に資することができ、処理速度の高速化を図ることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態にかかるＣＰＵを示すブロック図である。
【図２】図１に示されたＣＰＵの命令実行時におけるステージ動作を示すタイミングチャートである。
【図３】本発明の他の実施形態にかかるＣＰＵを示すブロック図である。
【図４】従来のＣＰＵを示すブロック図である。
【図５】図４に示されたＣＰＵの命令実行時におけるステージ動作を示すタイミングチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施形態における本発明の中央演算処理装置（マイクロコンピュータ又はマイクロプロセッサともいう）を図面を参照して説明する。まず、図４を参照して、従来の中央演算処理装置（以下、ＣＰＵ）１００の構成を説明する。ＣＰＵ１００は、縮小命令セットコンピュータアーキテクチャ（ＲＩＳＣアーキテクチャ）で構成されており、具体的なハードウェアとしては、例えばＦＰＧＡ（Field Programmable Gate Array）で構成されているものとする。
【００１３】
ＣＰＵ１００は、プログラムカウンタ（ＰＣ）２と、プログラムメモリ３と、命令レジスタ（ＩＲ）４と、命令デコーダ５と、汎用レジスタ６と、データラッチ７と、演算部８と、アドレス計算部９と、データメモリ１０と、システムデータバス１１と、ＣＳＲレジスタ１２と、割り込み制御部１３と、タイマ１４と、を備えている。
【００１４】
ＰＣ２は、プログラムメモリ３から読み出す命令のアドレスを示す（指示する）レジスタである。ＰＣ２は、アドレス計算部９の結果に基づいてインクリメント値又は所定のアドレス値が格納される。なお、本実施形態では、ＰＣ２は１６ビットで構成されている。
【００１５】
プログラムメモリ（命令メモリ）３は、本実施形態では、００００Ｈ（１６進数）番地〜７ＦＦＦＨ番地までのアドレス空間を有する１６ビットデータのメモリである。プログラムメモリ３には、ＣＰＵ１００で実行される複数の命令からなるプログラムデータが格納されている。また、格納される命令形式は、ＲＩＳＣ型のＣＰＵで多くみられる固定長命令形式であってもよいし、可変長命令形式のプログラムデータをプログラムメモリ３の格納形式に合致させて固定長命令形式に変換して格納するようにしてもよい。
【００１６】
ＩＲ４は、ＰＣ２で示されたアドレスに格納されている命令が格納されるレジスタである。ＩＲ４に格納された命令は命令デコーダ５に出力される。命令デコーダ５は、ＩＲ４から出力された命令を解読（デコード）し、汎用レジスタ６、演算部８、アドレス計算部９に対して解読結果としての制御信号等を出力する。
【００１７】
汎用レジスタ６は、演算部８やアドレス計算部９で演算するデータや演算結果が格納される３２ビット幅のレジスタであり、本実施形態では、Ｘ０〜Ｘ３１までの３２本を有している。汎用レジスタ６に含まれるＸ０〜Ｘ３１のレジスタは命令においてソースオペランド又はディスティネーションオペランドに指定することができるレジスタである。データラッチ７は、汎用レジスタ６から読み出されたデータをラッチするレジスタである。
【００１８】
演算部８は、算術論理演算器（ＡＬＵ）や演算結果をフェッチするラッチ等を備え、命令デコーダ５から出力される制御信号に基づいて各種算術演算や論理演算等を行う。また、演算部８は、ＡＬＵに加えて乗算器や除算器等を備えてもよい。アドレス計算部９は、命令デコーダ５から出力される制御信号等に基づいてデータメモリへアクセスするアドレスの計算を行う。即ち、演算部８及びアドレス計算部９は、命令デコーダ５で解読された結果に応じて当該命令を実行する命令実行部として機能する。
【００１９】
データメモリ１０は、本実施形態では、００００Ｈ番地〜０１ＦＦＨ番地までのアドレス空間を有する３２ビットデータのメモリである。データメモリ１０は、アドレス計算部７で算出されたアドレスに基づいて、演算部８で演算された結果が書き込まれる。また、アドレス計算部９で算出されたアドレスに基づいて、格納されているデータが読み出される。読み出されたデータはシステムデータバス１１を介して汎用レジスタ６へ出力される。即ち、データメモリ１０は、命令実行部の実行結果の書き込み又は命令実行のためデータが読み出される。
【００２０】
システムデータバス１１は、演算部６、汎用レジスタ８、データラッチ９、データメモリ１０等を互いに接続するデータバスである。ＣＳＲレジスタ１２は、ＣＰＵ１００内のステータスを読み込んだり、設定を変更することができるレジスタである。割り込み制御部１３は、割り込み要求信号（外部割り込み）が入力される。割り込み制御部１３は、入力された割り込み要求信号に基づいて、割り込み信号をシステムデータバス１１へ出力する。タイマ１４は、設定された時間周期毎に割り込み信号をシステムデータバス１１へ出力する。
【００２１】
上述した構成では、プログラムメモリ３、汎用レジスタ６、データメモリ１０は、ＦＰＧＡのデバイス内に設けられている同期式の記憶素子、例えばシンクロナスＳＲＡＭ（Static Random Access Memory）で構成されている。
【００２２】
ＣＰＵ１００は、ＰＣ２で示されたプログラムメモリ３のアドレスから読み出された命令がＩＲ４に格納されるまでがＩＦ（命令フェッチ）ステージ、ＩＦ４に格納されている命令を命令デコーダ５でデコードした結果に基づいて汎用レジスタ６から読み出してデータラッチ９にデータを格納するまでがＤＥ（デコード）ステージ、命令デコーダ５でデコードした結果に基づいて演算部８やアドレス計算部９で演算や計算等を行うまでがＥＸ（実行）ステージとなる。
【００２３】
次に、アドレス計算部９で計算されたアドレスに基づいてデータメモリ１０からデータを読出す、又はデータを書き込むまでがメモリアクセス（ＭＡ）ステージ、演算部８の演算結果の汎用レジスタ６への書き込み、及びＰＣ２の更新までがライトバック（ＷＢ）ステージとなる。
【００２４】
図５に上記した各ステージとクロック信号との関係を示す。図５に示したように、ＣＰＵ１００は各ステージを１サイクルで実行するため、１命令を実行するために５サイクルが必要となる。
【００２５】
図１に本発明の一実施形態にかかるＣＰＵ１を示す。図４と同一部分には、同一符号を付して説明を省略する。
【００２６】
図１は、図４に対して、まず、ＤＥステージ〜ＭＡステージまでを１サイクルで動作するように不要なレジスタ（データラッチ９等）を削除している。次に、ＩＦステージ〜ＤＥステージを１サイクルで動作するようにＩＲ４を削除している。つまり、プログラムメモリ３から読み出された命令は命令デコーダ５に直接入力される。即ち、命令デコーダ５が直接命プログラムメモリ３Ａから命令（プログラムデータ）を読み取っている。本発明において「直接」とは、図１のように、ＩＲ４等のクロック信号に同期する回路を介さずに命令デコーダ５に入力されることを意味する。
【００２７】
ＩＲ４を削除することで、ＩＲ４でＩＦステージが分割されないのでＩＦステージ〜ＭＡステージまでが１サイクルで動作することとなる。
【００２８】
また、図１のプログラムメモリ３Ａは、プログラムデータがＣＰＵ１の起動前から予め格納済みとなっている。即ち、ＣＰＵ１の電源がオンして起動してから外部のメモリ等にアクセスすることなく直ぐにプログラムメモリ３Ａに格納された命令データを読み出すことが可能な状態となっている。
【００２９】
そして、ＰＣ２Ａ及び汎用レジスタ６Ａを非同期式の記憶素子で構成する。本実施形態では、例えばＲＳフリップフロップで構成しているが、非同期式のＳＲＡＭであってもよい。これで、ＰＣ２Ａ及び汎用レジスタ６Ａがクロック信号に同期して動作する必要が無くなるので、ＷＢステージを分割する必要が無く、ＩＦステージからＷＢステージまでが１サイクルで動作することとなる。
【００３０】
したがって、図１のように構成することで、図２に示したように、ＣＰＵ１は１命令を１サイクルで実行することができる。
【００３１】
本実施形態によれば、ＲＩＳＣアーキテクチャで構成されているＣＰＵ１は、命令メモリ３のアドレスを指示するＰＣ２Ａ及び命令デコーダ５でデコードされる命令においてオペランドとして指定される汎用レジスタ６Ａを非同期式のメモリで構成している。このようにすることにより、これらステージの切れ目となるＰＣ２Ａや汎用レジスタ６Ａにデータを格納する際にクロック信号を必要とせず、ＷＢステージを削減することができる。したがって、ＣＰＵ１における命令実行サイクル数の削減に資することができ、命令実行の高速化を図ることができる。特に図１に示したように、１命令を１サイクルで実行するように構成する際に有用であり、１命令を１サイクルで実行すれば、パイプライン処理を用いる必要が無く、パイプラインハザード等の対策を講じる必要が無くなる。
【００３２】
また、ＣＰＵ１は、プログラムメモリ３から読み出された命令は命令デコーダ５に直接入力されているので、ＩＲ４が不要となり、ＩＦステージとＤＥステージとが分割されず、ＣＰＵ１における命令実行サイクル数の削減に資することができる。
【００３３】
また、命令メモリ及びデータメモリは、同期式記憶素子で構成されているので、ＦＰＧＡが予め有するメモリでこれらのメモリを構成することが可能となる。また、これらのメモリが同期式記憶素子で構成されているので、ＣＰＵ１全体をクロック信号に同期させることができる。
【００３４】
さらには、本実施形態では、乗算も１クロックで演算することができるため、時間を要することが問題であった除算に、逆数による乗算演算を有効に利用することができる。
【００３５】
なお、図１に示したＣＰＵ１は、１命令の実行を１サイクルで行っていたが、例えば、図３に示したようにＩＲ４をプログラムメモリ３と命令デコーダ５の間に配置してもよい。この場合は、１命令を２サイクルで実行することになるが、従来の図４の状態よりも１命令の実行に要するサイクル数を削減することができる。
【００３６】
また、上述した実施形態はＦＰＧＡで構成することを前提に説明したが、ＡＳＩＣ（Application Specific Integrated Circuit）として構成してもよい。
【００３７】
なお、本発明は上記実施形態に限定されるものではない。即ち、当業者は、従来公知の知見に従い、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。かかる変形によってもなお本発明の中央演算処理装置の構成を具備する限り、勿論、本発明の範疇に含まれるものである。
【符号の説明】
【００３８】
１   ＣＰＵ（中央演算処理装置）
２Ａ プログラムカウンタ
３   プログラムメモリ（命令メモリ）
５   命令デコーダ
６Ａ 汎用レジスタ
８   演算部（命令実行部）
９   アドレス計算部（命令実行部）
１０ データメモリ
【図１】
2020140290.tif 000003
【図２】
2020140290.tif 000004
【図３】
2020140290.tif 000005
【図４】
2020140290.tif 000006
【図５】
2020140290.tif 000007