(57)【要約】【課題】  分岐命令などを従来よりも高速に実行することができるプロセッサ及び命令指定アドレス生成方法を提供する。【解決手段】  複数種類の命令の格納アドレスを入力可能であって該入力の中から所定種類の命令の格納アドレスを選択して出力する選択回路であるマルチプレクサ５１と、マルチプレクサ５１の出力を保持するレジスタ５２と、レジスタ５２の出力に１を加えてマルチプレクサ５１の入力の一つとする加算器５３と、マルチプレクサ５１の出力における所定種類の命令の格納アドレスを、実行すべき命令の格納アドレスとするアドレス指定手段とを有することを特徴とする。【選択図】      図４
2005182690.tif 000002
【特許請求の範囲】
【請求項１】
複数種類の命令の格納アドレスを入力可能であって該入力の中から所定種類の命令の格納アドレスを選択して出力する選択回路と、
前記選択回路の出力を保持するレジスタと、
前記レジスタの出力に１を加えて前記選択回路の入力の一つとする加算手段と、
前記選択回路の出力における所定種類の命令の格納アドレスを、実行すべき命令の格納アドレスとするアドレス指定手段とを有することを特徴とするプロセッサ。
【請求項２】
前記所定種類の命令の格納アドレスは、分岐命令の格納アドレスであることを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記所定種類の命令の格納アドレスは、分岐先アドレス、戻り先アドレス、割り込みベクタおよびループ開始アドレスのうちの１つであることを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記レジスタは、プログラムカウンタとして機能し、
前記アドレス指定手段は、前記選択回路が前記所定種類の命令を出力したときは該選択回路の出力を実行すべき命令の格納アドレスとして指定し、前記選択回路が前記所定種類以外の命令を出力したときは前記レジスタの出力を実行すべき命令の格納アドレスとして指定することを特徴とする請求項１乃至３のいずれか一項に記載のプロセッサ。
【請求項５】
複数種類の命令の格納アドレスから所定種類の命令の格納アドレスを選択し、
該選択された命令の格納アドレスがプログラムカウンタに入力されるサイクルの１つ前のサイクルで、該選択された命令の格納アドレスを実行すべき命令の格納アドレスとして使用することを特徴とする命令指定アドレス生成方法。
【請求項６】
前記所定種類の命令の格納アドレスは、分岐命令の格納アドレスであることを特徴とする請求項５に記載の命令指定アドレス生成方法。
【請求項７】
前記所定種類の命令の格納アドレスは、分岐先アドレス、戻り先アドレス、割り込みベクタおよびループ開始アドレスのうちの１つであることを特徴とする請求項５に記載の命令指定アドレス生成方法。
【請求項８】
前記所定種類の命令以外の命令の格納アドレスは、プログラム・カウンタに入力した後に、実行すべき命令の格納アドレスとして使用することを特徴とする請求項５乃至７のいずれか一項に記載の命令指定アドレス生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ及び命令指定アドレス生成方法に関する。
【背景技術】
【０００２】
従来におけるプロセッサの基本動作は、命令読み出し（命令フェッチ）と、その読み出した命令の実行との繰り返しである。この命令読み出しの際、命令を何番地から読み出すかを指定するのがプログラム・カウンタ（ＰＣ）である。命令読み出し作業では、プロセッサはプログラム・カウンタの内容（値）をそのまま用いて命令メモリアドレス（命令の格納アドレス）を指定し、その命令メモリアドレスに記憶されている内容（命令）を読み出す。
【０００３】
この読み出された命令はプロセッサによって実行される。その後、プロセッサは次の命令を実行するために、プログラム・カウンタの内容を「１」増加させる。そして、上記命令読み出し作業と命令の実行とが繰り返される。このようにプロセッサの基本動作は、命令メモリアドレスの順番に命令を読み出して実行する。
ところで、読み出された命令が分岐命令である場合は、上記のプロセッサの基本動作とは異なり、分岐命令で指定される値にプログラム・カウンタの内容が書き換えられる。これにより、分岐命令で指定されている命令メモリアドレスの内容が読み出されて実行される。
【０００４】
また、従来においては、プロセッサの処理能力を向上させるために、命令読み出し、解釈、実行などを独立に実行させ流れ作業のように処理するパイプライン技術や、複数の命令を並列的に実行するスーパースカラ技術などが開発されている。分岐命令に関しては、分岐するか否かを予測し、分岐しそうな場合は分岐先の命令を取り出す分岐予測技術も開発されている。また、従来においては、命令キュッシュを備えたプロセッサが考えだされている。この従来のプロセッサは、プログラムカウンタの出力値を保持する記憶手段として命令キュッシュを備え、その命令キャッシュの出力値によってプロセッサが実行する命令が規定される構成となっている（例えば、特許文献１の図１参照）。
【特許文献１】特開２００１−２１６１５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のプロセッサでは、分岐命令を実行しようとすると、その分岐命令直後の複数の命令が分岐命令の実行にともなって実行されてしまう。すなわち、分岐命令を実行する毎に、不必要な処理が複数クロックサイクルにわたって実行されてしまい、その不必要な処理を実行しなければ分岐命令が完了しない構成となっていた。また、従来の分岐予測技術および上記特許文献１に記載されているプロセッサでは、いずれも複雑な構成になってしまうという問題点がある。
【０００６】
本発明は、上記問題を解決するためになされたものであり、分岐命令などを従来よりも高速に実行することができるプロセッサ及び命令指定アドレス生成方法を提供するものである。
また、本発明は、簡素な構成としながら、分岐命令などを高速に実行することができるプロセッサ及び命令指定アドレス生成方法を提供するものである。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、この発明は以下の構成を有する。
即ち、請求項１に記載された発明に係るプロセッサは、複数種類の命令の格納アドレスを入力可能であって該入力の中から所定種類の命令の格納アドレスを選択して出力する選択回路（マルチプレクサ）と、前記選択回路の出力を保持するレジスタと、前記レジスタの出力に１を加えて前記選択回路の入力の一つとする加算手段と、前記選択回路の出力における所定種類の命令の格納アドレスを、実行すべき命令の格納アドレスとするアドレス指定手段とを有することを特徴とする。
【０００８】
また、請求項２に記載された発明は、請求項１に記載されたプロセッサにおいて、前記所定種類の命令の格納アドレスが分岐命令の格納アドレスであることを特徴とする。
【０００９】
また、請求項３に記載された発明は、請求項１に記載されたプロセッサにおいて、前記所定種類の命令の格納アドレスが、ジャンプ命令又はサブルーチンコール命令の分岐先アドレス、リターン命令の戻り先アドレス、割り込み発生時の割り込みベクタおよびループ開始アドレスのうちの１つであることを特徴とする。
【００１０】
また、請求項４に記載された発明は、請求項１乃至３のいずれか一項に記載されたプロセッサにおいて、前記レジスタがプログラムカウンタとして機能し、前記アドレス指定手段は、前記選択回路が前記所定種類の命令を出力したときは該選択回路の出力を実行すべき命令の格納アドレスとして指定し、前記選択回路が前記所定種類以外の命令を出力したときは前記レジスタの出力を実行すべき命令の格納アドレスとして指定することを特徴とする。
【００１１】
また、請求項５に記載された発明に係る命令指定アドレス生成方法は、複数種類の命令の格納アドレスから所定種類の命令の格納アドレスを選択し、該選択された命令の格納アドレスがプログラムカウンタに入力されるサイクルの１つ前のサイクルで、該選択された命令の格納アドレスを実行すべき命令の格納アドレスとして使用することを特徴とする。
【００１２】
また、請求項６に記載された発明は、請求項５に記載された命令指定アドレス生成方法において、前記所定種類の命令の格納アドレスが分岐命令の格納アドレスであることを特徴とする。
【００１３】
また、請求項７に記載された発明は、請求項５に記載された命令指定アドレス生成方法において、前記所定種類の命令の格納アドレスが、ジャンプ命令又はサブルーチンコール命令の分岐先アドレス、リターン命令の戻り先アドレス、割り込み発生時の割り込みベクタおよびループ開始アドレスのうちの１つであることを特徴とする。
【００１４】
また、請求項８に記載された発明は、請求項５乃至７のいずれか一項に記載された命令指定アドレス生成方法において、前記所定種類の命令の格納アドレスが、分岐命令の格納アドレス、ジャンプ命令の格納アドレス、プログラムスタックの格納アドレスおよび割り込みベクタの格納アドレスのうちの１つであることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、分岐命令などについてのアドレス発行を早めることができ、分岐命令などを従来よりも高速に実行することができる。
また、本発明によれば、分岐命令などを高速に実行することができながら、簡素な構成のプロセッサ及び命令指定アドレス生成方法を提供することができる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照し、本発明の実施形態について説明する。本実施形態では、本発明に係るプロセッサをデジタル・シグナル・プロセッサ（ＤＳＰ）に適用した例について説明する。図１は、本発明の実施形態に係るＤＳＰを構成要素とする情報処理システムの構成の一例を示すブロック図である。本情報処理システムは、ホスト１１と、命令メモリ１２と、データメモリＸ１３と、データメモリＹ１４と、本発明が適用されているプロセッサであるＤＳＰ１５と、コプロセッサ１７とを構成要素としている。ＤＳＰ１５はレジスタ１６を備えている。
【００１７】
ＤＳＰ１５は、例えば音声又は画像などの処理に特化したマイクロプロセッサである。そして、ＤＳＰ１５は、命令メモリ１２、データメモリＸ１３及びデータメモリＹ１４を介して、あるいはレジスタ１６を介して命令及びデータをホストとやり取りする。これにより、ＤＳＰ１５は、ホスト１１から依頼された処理を高速に実行することができる。また、ＤＳＰ１５は、ホスト１１から依頼された処理の一部をコプロセッサ１７に肩代わりさせることもできる。
【００１８】
次に、ＤＳＰ１５の構成例について図２を参照して説明する。図２は、ＤＳＰ１５の構成の一例を示すブロック図である。ＤＳＰ１５は、プログラム制御ユニット２１、データメモリ制御ユニット２２、バス制御ユニット２３及び演算ユニット２４を備えている。プログラム制御ユニット２１は、命令メモリ１２から命令を取り出し、その命令をデコードなどするものである。
【００１９】
データメモリ制御ユニット２２は、データメモリＸ１３及びデータメモリＹ１４からデータを取り出すものである。バス制御ユニット２３は、プログラム制御ユニット２１及びデータメモリＸ１３などと演算ユニット２４及びコプロセッサ１７との間で、データをやり取りするものである。演算ユニット２４は、プログラム制御ユニット２１から出力される命令にしたがってデータメモリ制御ユニット２２から出力されるデータについて演算を行うものである。この演算結果は、データメモリＸ１３又はデータメモリＹ１４などに出力される。このような構成のＤＳＰ１５において、プログラム制御ユニット２１は本発明に係る命令指定アドレス生成方法が適用されるユニットである。
【００２０】
次に、プログラム制御ユニット２１の構成例について図３を参照して説明する。図３はプログラム制御ユニット２１の構成の一例を示すブロック図である。プログラム制御ユニット２１は、命令デコーダ３１、命令フェッチレジスタ３２、分岐・割り込み制御回路３３、ループ制御回路３４、プログラム・スタック・ポインタ（ＰＳＰ）３５、プログラム・スタック（ＰＳ）３６、割り込みベクタ（ＩＶ）３７、ループ・スタック・ポインタ（ＬＳＰ）３８、ループスタート（ＬＳ）３９、ループエンド（ＬＥ）４０、ループカウンタ（ＬＣ）４１、プログラム・カウンタ４２、システム制御回路４３を備えている。
【００２１】
命令デコーダ３１は、命令フェッチレジスタ３２から出力された命令を解読するデコーダである。命令フェッチレジスタ３２は、命令メモリ１２から命令を読み出して一時記憶するレジスタである。分岐・割り込み制御回路３３は、命令デコーダ３１から出力されたジャンプ先番地（ＪＶ）及び割り込みベクタなどを受けて分岐処理及び割込処理をおこなう回路である。ループ制御回路３４は、命令デコーダ３１の指示を受けてループ処理を行う回路である。
【００２２】
プログラム・スタック・ポインタ（ＰＳＰ）３５及びプログラム・スタック（ＰＳ）３６は、分岐・割り込み制御回路３３で行われる分岐処理で使用されるレジスタである。リターン命令実行時には戻り先アドレスがプログラムスタック（ＰＳ）３６に格納されている。割り込みベクタ（ＩＶ）３７は分岐・割り込み制御回路３３で行われる割込処理で使用されるレジスタであり、このレジスタの値は割り込み時のアドレスとして使用される。ループ・スタック・ポインタ（ＬＳＰ）３８、ループスタート（ＬＳ）３９、ループエンド（ＬＥ）４０及びループカウンタ（ＬＣ）４１は、ループ制御回路３４におけるループ処理で使用されるレジスタである。プログラム・カウンタ４２は、次に実行すべき命令が格納されているアドレス（命令メモリ１２のアドレス）を指定するものである。システム制御回路４３は、プログラム・カウンタ４２などの動作を制御する回路である。このような構成のプログラム制御ユニット２１において、プログラム・カウンタ４２は、本発明に係る命令指定アドレス生成方法を実行するための主要手段である。
【００２３】
次に、プログラム・カウンタ４２の構成例について図４を参照して説明する。図４は、プログラム・カウンタ４２の構成の一例を示すブロック図である。プログラム・カウンタ４２は、マルチプレクサ５１と、レジスタ５２と、加算器５３とを有して構成される。マルチプレクサ５１は、分岐・割り込み制御回路３３から出力されるジャンプ先番地（ＪＶ）、プログラム・スタック（ＰＳ）および割り込みベクタ（ＩＶ）の番地と、ループ制御回路３４から出力されるループスタート（ＬＳ）の番地と、加算器５３の出力とを入力する。
【００２４】
そして、マルチプレクサ５１は、システム制御回路４３の出力信号に基づいて、ジャンプ先番地（ＪＶ）、プログラム・スタック（ＰＳ）、割り込みベクタ（ＩＶ）、ループスタート（ＬＳ）及び加算機５３の出力のうちから１つのデータ（アドレス）を選択して出力する。換言すれば、選択回路であるマルチプレクサ５１は、複数種類の命令の格納アドレスから所定種類の命令の格納アドレスを選択して出力するものである。
【００２５】
マルチプレクサ５１の出力は、そのまま命令メモリアドレスＩＭ−Ａの指定データとなって命令メモリ１２へ出力される。これにより命令メモリ１２に格納されている命令が命令フェッチレジスタ３２へ出力され、命令デコーダ３１などで実行される。また、マルチプレクサ５１の出力は、レジスタ５２に取り込まれ保持される。
【００２６】
命令メモリ１２に格納された複数の命令をその格納順序通りに逐次実行する場合、すなわち「通常」の場合は、マルチプレクサ５１では加算器５３の出力が選択され、これが命令メモリアドレスＩＭ−Ａとなって命令メモリ１２のアドレスを指定し、命令メモリ１２のその指定されたアドレスに格納されている命令をフェッチして実行する。そして、次の命令を実行する場合は、レジスタ５２の出力値（アドレス）に加算器５３で「１」加算し、その加算結果をマルチプレクサ５１が選択して取り込み出力する。その出力をレジスタ５２が取り込んでプログラム・カウンタ（ＰＣ）として出力する。また、マルチプレクサ５１の出力すなわち命令メモリアドレスＩＭ−Ａによって命令メモリ１２のアドレスが指定され、次のアドレス（直前に実行された命令のアドレスに対する次のアドレス）で指定される命令がフェッチされ実行される。
【００２７】
一方、分岐命令又は割り込みなどを実行する場合は、上記「通常」の場合とは異なり、マルチプレクサ５１ではかかる分岐命令などでそれぞれ指定されるアドレスが選択され、そのマルチプレクサ５１の出力である命令メモリアドレスＩＭ−Ａを使用して命令メモリ１２に格納されている命令のフェッチを行う。例えば、ジャンプ命令やサブルーチン命令実行時にはマルチプレクサ５１ではジャンプ先番地（ＪＶ）が選択され、マルチプレクサ５１はジャンプ先番地（ＪＶ）を出力する。そして、この出力が命令メモリアドレスＩＭ−Ａとして命令メモリ１２へ出力され、命令メモリ１２のジャンプ先番地（ＪＶ）に格納されている命令が実行される。
【００２８】
また、マルチプレクサ５１は、プログラム・スタック（ＰＳ）又は割り込みベクタ（ＩＶ）を入力した場合も、上記ジャンプ先番地（ＪＶ）を入力した場合と同様に、その入力したプログラム・スタック（ＰＳ）又は割り込みベクタ（ＩＶ）を選択して、命令メモリアドレスＩＭ−Ａとして命令メモリ１２へ出力する。これにより、命令メモリ１２のプログラム・スタック（ＰＳ）又は割り込みベクタ（ＩＶ）の番地に格納されている命令が実行される。
このようにプログラム・カウンタ４２は、実行すべき命令のアドレス値を出力するアドレス指定手段となる。
【００２９】
従来のプログラムカウンタは、図５に示すように、レジスタ（図４のレジスタ５２に対応）の出力が、プログラム・カウンタ（ＰＣ）の値になるとともに、
命令メモリアドレスＩＭ−Ａとなっている。
【００３０】
これらにより、本実施形態のプロセッサによれば、分岐命令、割り込み又はプログラム・スタックを用いるコール命令などについて、マルチプレクサ５１の出力を用いて命令メモリ１２のアドレスを指定する。そこで、本実施形態のプロセッサによれば、分岐命令、割り込み又はプログラム・スタックを用いるコール命令などについても、プログラム・カウンタ（ＰＣ）として機能するレジスタ５２が命令などを出力するサイクルよりも１サイクル前のタイミングで、フェッチ動作をすることができる。したがって、本実施形態のプロセッサによれば、分岐命令、割り込み又はプログラム・スタックを用いるコール命令などについても、従来よりも高速に実行することができる。
【００３１】
次に、本実施形態に係るプロセッサの動作例について、図６及び図７を参照して説明する。図６は、本実施形態に係るプロセッサにおけるプログラム・カウンタ４２などの動作例を示すタイミングチャートである。図７は、従来のプロセッサの動作例を示すタイミングチャートである。ここで、クロックＣＫに同期して、プログラム・カウンタ（ＰＣ）の出力、命令メモリアドレスＩＭ−Ａの指定、命令メモリ１２の出力ＩＭ−Ｏ、および命令フェッチレジスタ（ＩＦＲ）３２での命令取り込みが行われるものとする。なお、クロックＣＫとは非同期に、プログラム・カウンタ（ＰＣ）の出力、命令メモリアドレスＩＭ−Ａの指定、命令メモリ１２の出力ＩＭ−Ｏ、および命令フェッチレジスタ（ＩＦＲ）３２での命令取り込みが行われるものとしてもよい。
【００３２】
図６において、例えば、「ｎ」番地にジャンプ命令が格納されているものとする。すると、本実施形態のプロセッサによれば、命令メモリアドレスＩＭ−Ａとして「ｎ」番地を指定してから「ｎ＋１」番地を指定し、その後に「Ｊ」番地のジャンプ先の命令を指定する。すなわち、本実施形態のプロセッサによれば、ジャンプ命令を指定してから２サイクル後にジャンプ先の命令を指定することができる。
【００３３】
一方、図７に示す従来のプロセッサでは、プログラム・カウンタ（ＰＣ）の出力が命令メモリアドレスＩＭ−Ａとなるので、命令メモリアドレスＩＭ−Ａとして「ｎ」番地を指定してから「ｎ＋１」番地を指定し、その後に「ｎ＋２」番地を指定し、その後に「Ｊ」番地のジャンプ先の命令を指定する。すなわち、従来のプロセッサによれば、ジャンプ命令を指定してから３サイクル後にジャンプ先の命令を指定することができる。
【００３４】
このように、本実施形態のプロセッサによれば、ジャンプ命令など分岐命令及び割り込みなどを実行する場合、従来のプロセッサよりも１サイクル速く実行することができる。これは、本実施形態のプロセッサによれば、図４に示すようなプログラム・カウンタ４２の構成により、命令メモリアドレスＩＭ−Ａがプログラム・カウンタ（ＰＣ）の出力よりも１サイクル速く状態を推移することができるからである。これらにより、本実施形態のプロセッサは、分岐命令又は割り込みなどを含むプログラムを従来よりも高速に実行することができる。
【００３５】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【産業上の利用可能性】
【００３６】
以上の説明では、本発明に係るプロセッサをＤＳＰに適用した例について説明したが、本発明はこれに限定されるものではなく、ＤＳＰ以外の各種プロセッサに本発明を適用することができる。
【図面の簡単な説明】
【００３７】
【図１】本発明の実施形態に係るＤＳＰを構成要素とする情報処理システムの構成の一例を示すブロック図である。
【図２】本発明の実施形態に係るＤＳＰの構成の一例を示すブロック図である。
【図３】本発明の実施形態に係るＤＳＰの構成要素であるプログラム制御ユニットの構成の一例を示すブロック図である。
【図４】同上のプログラム制御ユニットの構成要素であるプログラム・カウンタの構成の一例を示すブロック図である。
【図５】従来のプログラムカウンタを示すブロック図である。
【図６】本発明の実施形態に係るＤＳＰの動作を示すタイミングチャートである。
【図７】従来のプロセッサの動作を示すタイミングチャートである。
【符号の説明】
【００３８】
１１…ホスト、１２…命令メモリ、１３…データメモリＸ、１４…データメモリＹ、１５…ＤＳＰ、１６…レジスタ、１７…コプロセッサ、２１…プログラム制御ユニット、２２…データメモリ制御ユニット、２３…バス制御ユニット、２４…演算ユニット、３１…命令デコーダ、３２…命令フェッチレジスタ、３３…分岐・割り込み制御回路、３４…ループ制御回路、３５…プログラム・スタック・ポインタ（ＰＳＰ）、３６…プログラム・スタック（ＰＳ）、３７…割り込みベクタ（ＩＶ）、３８…ループ・スタック・ポインタ（ＬＳＰ）、３９…ループスタート（ＬＳ）、４０…ループエンド（ＬＥ）、４１…ループカウンタ（ＬＣ）、４２…プログラム・カウンタ、４３…システム制御回路、５１…マルチプレクサ、５２…レジスタ、５３…加算器、ＩＭ−Ａ…命令メモリアドレス
【図１】
2005182690.tif 000003
【図２】
2005182690.tif 000004
【図３】
2005182690.tif 000005
【図４】
2005182690.tif 000006
【図５】
2005182690.tif 000007
【図６】
2005182690.tif 000008
【図７】
2005182690.tif 000009