(57)【要約】【課題】高速ＤＲＡＭを用いたＣＰＵシステムにおいて、分岐命令の処理時におけるＣＰＵのウエイト時間を短縮する。【解決手段】ＣＰＵシステム１は、ＣＰＵ２の動作速度がＳＤＲＡＭ３のバーストリード時の動作速度以下という条件で動作する。コンパレータ７は、ＣＰＵ２が分岐命令を処理するときに、命令キャッシュメモリ５に分岐先の命令が格納されているか否かを判定する。命令キャッシュメモリ５に分岐先の命令が格納されている場合、当該命令を命令キャッシュメモリ５から読み出す。これにより、ＣＰＵ２が分岐命令を処理するときに、ＳＤＲＡＭ３において不連続なアドレスをアクセスして命令を読み出す動作が不要となる。また、上記のように命令キャッシュメモリ５がヒットしているとき、ＳＤＲＡＭ３に対してランダムアクセスの処理を行う必要がなく、ＣＰＵ２の動作にウエイトが生じない。【選択図】図１
2008052518.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを格納し、バーストリード動作の可能な高速ＤＲＡＭと、
前記プログラムにおける分岐命令が指定する分岐先の分岐先命令を少なくとも格納するとともに、当該命令を前記高速ＤＲＡＭにおいて指定するアドレスを格納する命令キャッシュメモリと、
当該命令キャッシュメモリから読み出された前記プログラムの命令を処理し、バーストリード動作時の前記高速ＤＲＡＭの動作速度以下の動作速度で動作するＣＰＵと、
当該ＣＰＵが前記高速ＤＲＡＭから読み出された前記分岐命令を処理したときに、当該分岐命令が指定する前記分岐先命令が前記命令キャッシュメモリに格納されているか否かを判定する判定手段と、
前記分岐先命令が前記命令キャッシュメモリに格納されていると判定されると、前記命令キャッシュメモリから読み出された分岐先命令を前記ＣＰＵに出力する命令出力手段とを備えていることを特徴とするＣＰＵシステム。
【請求項２】
前記ＣＰＵは前記分岐命令を指定するアドレスを出力し、
ＣＰＵシステムは、前記分岐先命令が前記命令キャッシュメモリに格納されていないと判定されると、前記高速ＤＲＡＭから前記アドレスに基づいて前記分岐先命令を読み出す読出制御手段を備え、
前記命令キャッシュメモリは、前記高速ＤＲＡＭから読み出された前記分岐先命令を格納することを特徴とする請求項１に記載のＣＰＵシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＲＡＭに格納されたプログラムの命令を一旦キャッシュに読み込んでＣＰＵに供給するＣＰＵシステムに関するものである。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）を中心として構成されるマイクロコンピュータなどのＣＰＵシステムにおいては、メモリから読み出したプログラムを順次実行していく。近年、このようなＣＰＵシステムの動作速度を向上させるため、ＣＰＵの動作周波数が年々高められている。
【０００３】
また、低コスト化を図るため、メモリとして比較的低速なＤＲＡＭ（Dynamic Random Access Memory）を用いた場合、ＣＰＵの動作に対してＤＲＡＭのアクセスが遅いため、ＣＰＵシステムの高速動作を実現できない。このため、従来、ＣＰＵと低速な外部メモリとの間にキャッシュ（Cashe）を設けることにより、ＣＰＵシステムの高速化を達成している（例えば特許文献１参照）。キャッシュは容量の少ない高速なメモリであるため、ＣＰＵが必要とするプログラムやデータをキャッシュに一旦読み込んでおき、ＣＰＵがキャッシュから必要な部分を読み出す。特に、プログラムの命令を保存するキャッシュは命令キャッシュ（I-Cashe）と呼ばれる。
【０００４】
必要な命令が命令キャッシュになければ（ヒットしなければ）、当該命令がＤＲＡＭより命令キャッシュに読み込まれるまでＣＰＵが待機（ウエイト）状態となって高速動作性が損なわれる。このため、命令の連続性や反復性などを利用して頻繁に必要とされる命令を予めＤＲＡＭから読み出して命令キャッシュに読み込んでおくプリフェッチ（Pre-fetch）という手法が用いられている。これにより、ＣＰＵが命令キャッシュに必要な命令を読み出すときにミスヒットすれば、必要な命令がＤＲＡＭからプリフェッチバッファに読み込まれるとともに、当該命令がプリフェッチバッファから命令キャッシュおよびＣＰＵへ読み込まれる。したがって、このような動作によって、ＣＰＵのウエイトを短くすることができる。
【０００５】
従来の命令キャッシュに対するアクセス方法では、上記のような動作が、命令が分岐（jump,branch,call,return）命令であるか否かに関わらず、ＣＰＵがアクセスする毎に行われる。
【特許文献１】特開２００３−１６２４４６号公報（２００３年６月６日公開）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、近年、ＤＲＡＭの高速化が進んでおり、ＳＤＲＡＭ（Synchronous DRAM）、ＤＤＲ−ＳＤＲＡＭ（Double Data Rate DRAM）、ＲＤＲＡＭ（Rumbus DRAM）、ＸＤＲＤＲＡＭ（eXtreme Data Rate DRAM ）などの高速ＤＲＡＭが普及してきている。したがって、このような高速ＤＲＡＭのＣＰＵシステムへの利用も進められている。
【０００７】
また、上記のＣＰＵシステムをＡＳＩＣ（Application Specific Integrated Circuit）で作製する場合、フルカスタムＡＳＩＣまたはセミカスタムＡＳＩＣのいずれかを選択することになる。フルカスタムＡＳＩＣで作製する場合は、高集積化が可能であるので、ＣＰＵの動作周波数を１ＧＨｚのように高くすることができる反面、設計コストが嵩む。一方、ゲートアレイやセルベースといったセミカスタムＡＳＩＣで作製する場合は、予め用意されている標準ゲートや機能ブロックを用いることにより、設計コストを抑えることができる反面、集積度がフルカスタムＡＳＩＣより劣るため、ＣＰＵの動作周波数が１００ＭＨｚのように低い。
【０００８】
このようなセミカスタムＡＳＩＣで作製されたＣＰＵシステムにおいて高速ＤＲＡＭが組み込まれる場合、高速ＤＲＡＭをバーストリード動作させることによってＣＰＵの動作速度がバーストリード動作の速度以下となることがある。この条件下では、プログラムの命令がＤＲＡＭから連続的に順次読み出されるときには、ＤＲＡＭのバーストリード動作によって命令が読み出されて、プリフェッチバッファを介してＣＰＵに読み込まれるので、ウエイトなしでＣＰＵが命令を読み込むことができる。したがって、この場合は、命令キャッシュを必要としない。これに対し、命令が分岐命令である場合、ＤＲＡＭにおいては、不連続なアドレスがアクセスされて命令が読み出されるため、ＣＰＵ内の処理（パイプライン処理）も含めた処理の連続性が崩れる。このとき、ＤＲＡＭに対しては、ＲＡＳ（Row Address Strobe）やＣＡＳ（Column Address Strobe）の処理を行う必要があるので、この間はＣＰＵ動作にウエイトが生じる。
【０００９】
本発明は、上記の問題点に鑑みてなされたものであり、高速ＤＲＡＭを用いたＣＰＵシステムにおいて、分岐命令の処理時におけるＣＰＵのウエイト時間を短縮することを目的としている。
【課題を解決するための手段】
【００１０】
本発明に係るＣＰＵシステムは、プログラムを格納し、バーストリード動作の可能な高速ＤＲＡＭと、前記プログラムにおける分岐命令が指定する分岐先の分岐先命令を少なくとも格納するとともに、当該命令を前記高速ＤＲＡＭにおいて指定するアドレスを格納する命令キャッシュメモリと、当該命令キャッシュメモリから読み出された前記プログラムの命令を処理し、バーストリード動作時の前記高速ＤＲＡＭの動作速度以下の動作速度で動作するＣＰＵと、当該ＣＰＵが前記高速ＤＲＡＭから読み出された前記分岐命令を処理したときに、当該分岐命令が指定する前記分岐先命令が前記命令キャッシュメモリに格納されているか否かを判定する判定手段と、前記分岐先命令が前記命令キャッシュメモリに格納されていると判定されると、前記命令キャッシュメモリから読み出された分岐先命令を前記ＣＰＵに出力する命令出力手段とを備えていることを特徴としている。
【００１１】
上記の構成では、ＣＰＵがバーストリード動作時の前記高速ＤＲＡＭの動作速度以下の動作速度で動作する。この動作条件において、高速ＤＲＡＭから読み出された命令（非分岐命令）がＣＰＵにおいて連続的に順次処理されるときには、当該命令がＤＲＡＭのバーストリード動作によって連続的に読み出されてＣＰＵ２に読み込まれる。これにより、ウエイトなしでＣＰＵが命令を読み込むことができる。したがって、この場合は、命令キャッシュメモリから命令を読み出す必要がない。
【００１２】
一方、ＣＰＵが分岐命令を処理したとき、判定手段によって、当該分岐命令が指定する前記分岐先命令が前記命令キャッシュメモリに格納されているか否かが判定される。そして、分岐先命令が命令キャッシュメモリに格納されていると判定された場合、命令出力手段によって、命令キャッシュメモリから読み出された分岐先命令がＣＰＵに出力される。これにより、分岐先命令が命令キャッシュメモリに格納されていれば、その分岐先命令をＣＰＵに読み込むことにより、分岐命令を処理するときでも、ＣＰＵの動作にウエイトが生じることはない。
【００１３】
前記ＣＰＵシステムにおいて、前記ＣＰＵは前記分岐命令を指定するアドレスを出力し、ＣＰＵシステムは、前記分岐先命令が前記命令キャッシュメモリに格納されていないと判定されると、前記高速ＤＲＡＭから前記アドレスに基づいて前記分岐先命令を読み出す読出制御手段を備え、前記命令キャッシュメモリは、前記高速ＤＲＡＭから読み出された前記分岐先命令を格納することが好ましい。
【００１４】
上記の構成においては、判定手段による判定結果が否である場合、読出制御手段によって、ＣＰＵから出力されるアドレスに基づいて、高速ＤＲＡＭから分岐先命令が読み出され、この分岐先命令が命令キャッシュメモリに格納される。この場合は、ＣＰＵが分岐命令を処理したときに、命令キャッシュメモリから分岐先命令を読み出すことができないので、分岐先命令が高速ＤＲＡＭから命令キャッシュメモリに格納されるまでＣＰＵの動作にウエイトが生じてしまう。しかしながら、比較的繰り返して読み込まれることの多い分岐先命令を一旦命令キャッシュメモリに格納しておけば、以降の分岐命令が当該分岐先命令を指定する場合に、当該分岐先命令を命令キャッシュメモリから直ちに読み出すことができる。
【発明の効果】
【００１５】
本発明に係るＣＰＵシステムは、以上のように、前述の高速ＤＲＡＭと、命令キャッシュメモリと、ＣＰＵと、判定手段と、命令出力手段とを備えているので、ＣＰＵが分岐命令を処理するときに、高速ＤＲＡＭにおいて、不連続なアドレスをアクセスして命令を読み出す動作が不要となる。したがって、ＣＰＵ内の処理も含めたＣＰＵシステム全体の処理の連続性を維持することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
本発明の実施形態について図１ないし図３に基づいて説明すると、以下の通りである。
【００１７】
図１に示すように、ＣＰＵシステム１は、ＣＰＵ２と、ＳＤＲＡＭ３と、命令キャッシュメモリ５と、プリフェッチバッファ６と、コンパレータ７と、セレクタ８と、８進カウンタ９と、ＲＳフリップフロップ１０と、ＡＮＤゲート１１，１２と、加算器１３とを備えている。このＣＰＵシステム１は、例えばセミカスタムＡＳＩＣによって作製されている。
【００１８】
なお、図１において各回路間の接続線は、太い実線が複数ビットの信号線を表し、細い実線が１ビットの信号線を表している。
【００１９】
ＣＰＵ２は、入力されるプログラムの命令（プログラムコード）をパイプライン処理によって並列的に処理していくＣＰＵコア２ａを有している。このＣＰＵ２の動作速度（動作周波数）は、後述するＳＤＲＡＭ３のバーストリード動作時の動作速度（動作周波数）以下である。ＣＰＵコア２ａは、飛び先アドレスJumpAddおよび分岐命令識別信号BranchSigを出力する。飛び先アドレスJumpAddは、分岐命令によって指定された分岐先の命令であり、当該命令がＳＤＲＡＭ３に格納されている領域のアドレスである。また、分岐命令識別信号BranchSigは、ＣＰＵコア２によって処理される命令が分岐命令であるか否かを識別するための信号である。ＣＰＵコア２ａは、その分岐命令を実行したときに飛び先アドレスJumpAddおよび分岐命令識別信号BranchSigを出力する。つまり、この分岐命令識別信号BranchSigは、命令が分岐命令であるときに“１”であり、命令が分岐命令でないときに“０”である。
【００２０】
ＳＤＲＡＭ３は、プログラムおよびデータを格納しており、ＤＲＡＭコントローラ４の制御によって、プログラムおよびデータの読み書きが制御される。ＳＤＲＡＭ３は、高速ＤＲＡＭとしてＣＰＵシステム１に設けられているが、高速ＤＲＡＭとしては、ＳＤＲＡＭ３の代わりに、前述のＤＤＲ−ＳＤＲＡＭ、ＲＤＲＡＭ、ＸＤＲＤＲＡＭなどが設けられていてもよい。
【００２１】
ＤＲＡＭコントローラ４は、ＳＤＲＡＭ３によるプログラムおよびデータの読み書きを制御する制御回路である。ここでは、ＤＲＡＭコントローラ４のプログラムの読み書きについて説明する。
【００２２】
ＤＲＡＭコントローラ４は、飛び先アドレスJumpAddおよび分岐命令識別信号BranchSigが制御信号として入力される。ＤＲＡＭコントローラ４は、分岐命令識別信号BranchSigが“１”であるときに加算器１３からの飛び先アドレスJumpAddが入力されると、ＳＤＲＡＭ３に対してプログラム（プログラムコード）の読み出しの準備動作を行い、当該飛び先アドレスJumpAddの命令を読み出す。上記の準備動作は、具体的には、アクセス先のメモリセルの行アドレスを指定するためのＲＡＳ信号の出力や、当該メモリセルの列アドレスを指定するためのＣＡＳ信号の出力などである。
【００２３】
命令キャッシュメモリ５は、ＳＤＲＡＭ３よりも高速動作が可能な小容量のキャッシュメモリである。この命令キャッシュメモリ５は、ＳＤＲＡＭ３から読み出された８ステップ分の命令（プログラムコード）と、当該命令のＳＤＲＡＭ３における格納領域のアドレスと、valid/writeビットとを格納する領域をそれぞれ有している。valid/writeビットは、命令キャッシュメモリ５に有効な命令が格納されているときに“１”となり、命令キャッシュメモリ５に有効な命令が格納されていないとき（命令の書き込み可能な状態であるとき）に“０”となる。また、命令キャッシュメモリ５は、分岐命令識別信号BranchSigが“１”であり、かつヒットしなかったときに、ＳＤＲＡＭ３から読み出されてプリフェッチバッファ６に書き込まれた命令と同じ命令が書き込まれる。
【００２４】
プリフェッチバッファ６は、命令キャッシュメモリ５にプリフェッチするためのバッファメモリであり、例えばＦＩＦＯ（First In First Out）メモリによって構成されている。このプリフェッチバッファ６は、分岐命令識別信号BranchSigが“１”であり、かつ命令キャッシュメモリ５がヒットしたときに、ＳＤＲＡＭ３から読み出された命令が書き込まれる。
【００２５】
セレクタ８は、ヒット判別信号Ｈｉｔが“０”であるときに、入力端子Ａから入力されるプリフェッチバッファ６から読み出された命令を出力端子ＹからＣＰＵ２へ出力する。また、セレクタ８は、ヒット判別信号Ｈｉｔが“１”であるときに、入力端子Ｂから入力される命令キャッシュメモリ５から読み出された命令を出力端子ＹからＣＰＵ２へ出力する。ヒット判別信号Ｈｉｔは、命令キャッシュメモリ５がヒットしたか否かを示す信号であり、ヒットしたときに“１”となり、ヒットしなかったときに“０”となる。
【００２６】
コンパレータ７は、ＣＰＵコア２ａから出力される前述の飛び先アドレスJumpAddを命令キャッシュメモリ５に格納されている全てのアドレスと比較するとともに、ＣＰＵコア２ａから出力される前述の分岐命令識別信号BranchSigを命令キャッシュメモリ５に格納されているvalid/writeビットと比較する。コンパレータ７は、その比較の結果として、両アドレスが一致し、かつ分岐命令識別信号BranchSigとvalid/writeビットとがともに“１”であるときに、“１”のヒット判別信号Ｈｉｔを出力し、それ以外の場合は“０”のヒット判別信号Ｈｉｔを出力する。
【００２７】
８進カウンタ９は、命令キャッシュメモリ５に命令が８ステップ分書き込まれたことを検知するために設けられている。この８進カウンタ９は、命令キャッシュメモリ５から命令が１ステップ書き込まれる毎に出力されるパルスをカウントし、パルスを８個カウントすると、カウントアップ信号（“１”）を出力するとともに自身をリセットする。
【００２８】
ＲＳフリップフロップ１０は、ＣＰＵコア２ａから出力される分岐命令識別信号BranchSigが“０”から“１”に変化するときにセットして、出力端子Ｑの値を“０”から“１”に変化させる。また、ＲＳフリップフロップ１０は、８進カウンタ９から出力されるカウントアップ信号が“０”から“１”に変化するときにリセットして、出力端子Ｑの値を“１”から“０”に変化させる。これにより、命令キャッシュメモリ５がヒットしたときに、命令が読み出されて命令キャッシュメモリ５における８ステップ分の命令が全て書き替えられるまでに分岐命令識別信号BranchSigの値を保持するとともに、命令の書き替えが終わると、次の新たな分岐命令識別信号BranchSigが出力されるまで、コンパレータ７への入力を“０”にする。
【００２９】
ＡＮＤゲート１１は、ヒット判別信号Ｈｉｔの反転信号と、ＲＳフリップフロップ１０からの出力との論理積を出力する。この論理積は、ＣＰＵコア２ａにウエイト信号waitとして入力される。ＣＰＵコア２ａは、“１”のウエイト信号waitが入力されると、待機（ウエイト）状態となり、パイプライン処理を停止する一方、“０”のウエイト信号waitが入力されると、動作してパイプライン処理を行う。
【００３０】
ＡＮＤゲート１２は、コンパレータ７からのヒット判別信号Ｈｉｔと「８」を示すデータとの論理積を出力する。これにより、ヒット判別信号Ｈｉｔが“１”であるとき（ヒットしたとき）、入力データがそのまま出力される一方、ヒット判別信号Ｈｉｔが“０”であるとき（ヒットしなかったとき）、入力データが出力されない。
【００３１】
加算器１３は、飛び先アドレスJumpAddとＡＮＤゲート１２からの出力データとを加算してＤＲＡＭコントローラ４に出力する。
【００３２】
続いて、上記のように構成されるＣＰＵシステム１の動作について説明する。
【００３３】
まず、ＣＰＵコア２ａが分岐命令以外の演算命令を処理するとき、バーストリード動作によってＳＤＲＡＭ３より読み出された命令は、一旦、プリフェッチバッファ６に蓄えられてから、セレクタ８を介してＣＰＵ２に与えられる。
【００３４】
ＳＤＲＡＭ３から読み出された命令（非分岐命令）がＣＰＵ２において連続的に順次処理されるときには、当該命令がＳＤＲＡＭ３のバーストリード動作によって連続的に読み出されて、プリフェッチバッファ６を介してＣＰＵ２に読み込まれる。これにより、ウエイトなしでＣＰＵ２が命令を読み込むことができる。したがって、この場合は、命令キャッシュメモリ５から命令を読み出す必要がない。
【００３５】
このとき、ＲＳフリップフロップ１０がリセットされている状態であるので、コンパレータ７においては、ＲＳフリップフロップ１０の出力“０”とのvalid/writeビット（“１”）とが一致しないと判断され、また、ＣＰＵコア２ａから飛び先アドレスJumpAddも出力されないことから、コンパレータ７から出力されるヒット判別信号Ｈｉｔは“０”となる。
【００３６】
これにより、セレクタ８は、プリフェッチバッファ６とＣＰＵ２とを接続する。また、Ｓフリップフロップ１０の出力が“０”であるので、ウエイト信号waitも“０”となる。また、このとき、ＣＰＵコア２ａから出力される分岐命令識別信号BranchSigは“０”である。
【００３７】
図２に示すように、ＣＰＵコア２ａが、プリフェッチバッファ６から得た分岐命令ＢＲ５０を処理するとき、分岐命令識別信号BranchSigが“１”となるので、ＲＳフリップフロップ１０がセットされることにより“１”を出力する。また、飛び先アドレスJumpAddがＣＰＵコア２ａから出力される。また、このとき、ＣＰＵコア２ａは、分岐命令ＢＲ５０に続く命令の処理を中断して、パイプライン処理を停止する。
【００３８】
パイプライン停止までに至る動作は、具体的には図３に示すように進行する。まず、ステージ１において時間Ｔ１で分岐命令ＢＲ５０が読み込まれ（フェッチされ）、続くステージ２では、時間Ｔ１でアドレス計算命令Ａｄｄが読み込まれ、時間Ｔ２で分岐命令ＢＲ５０がデコードされる。さらに、ステージ３では、時間Ｔ１でロード命令ＬＤが読み込まれ、時間Ｔ２でアドレス計算命令Ａｄｄがデコードされ、時間Ｔ３で分岐命令ＢＲ５０が実行される。これにより、ＣＰＵコア２ａは、パイプライン処理を停止するとともに、分岐命令識別信号BranchSigを“０”から“１”に変化させる。
【００３９】
このように、パイプライン処理により、分岐命令ＢＲ５０がＣＰＵコア２ａに読み込まれてから、分岐命令識別信号BranchSigの値が上記のように変わるまで時間のずれが生じる。また、条件付きの分岐命令もあり、このような分岐命令では条件によってはジャンプしない場合もある。
【００４０】
一方、コンパレータ７は、飛び先アドレスJumpAddと命令キャッシュメモリ５に登録されているアドレスとを比較するとともに、ＲＳフリップフロップ１０の出力とvalid/writeビットとを比較する。ＲＳフリップフロップ１０の出力とvalid/writeビットとがともに“１”であるとき、飛び先アドレスJumpAddと同じアドレスが命令キャッシュメモリ５に登録されていれば、図２に示すように、コンパレータ７から出力されるヒット判別信号Ｈｉｔは“１”となり、ヒットする。
【００４１】
これにより、セレクタ８が命令キャッシュメモリ５とＣＰＵ２とを接続する。したがって、命令キャッシュメモリ５から読み出された飛び先アドレスJumpAddにより指定される分岐先の命令ＳＵＢとそれに続く７ステップ分の命令が順次読み出され、ＣＰＵ２に与えられる。
【００４２】
命令キャッシュメモリ５から８ステップ分の命令が読み出されると、それに続く新たな命令が必要となる。このため、上記のように命令が命令キャッシュメモリ５から読み出されているときに、加算器１３によって、飛び先アドレスJumpAddと、ＡＮＤゲート１２を介して出力された「８」のデータとが加算され、その結果のアドレス（飛び先アドレスJumpAddから８個後のアドレス）がＤＲＡＭコントローラ４に与えられる。ＤＲＡＭコントローラ４は、そのアドレスに基づいて、ＳＤＲＡＭ３から命令を順次読み出していく。読み出された命令は、プリフェッチバッファ６に一旦蓄えられて、ＣＰＵ２への読み出しのために待機する。
【００４３】
このとき、すなわちヒット判別信号Ｈｉｔが“１”であるとき（ヒットしたとき）は、後述するヒットしなかったときのようにヒットさせるための分岐先の命令を命令キャッシュメモリ５に読み込む必要がない。したがって、命令キャッシュメモリ５には、ＳＤＲＡＭ３から読み出された命令が書き込まれない。
【００４４】
前述のコンパレータ７の比較において、飛び先アドレスJumpAddと同じアドレスが命令キャッシュメモリ５に登録されていなければ、コンパレータ７から出力されるヒット判別信号Ｈｉｔは“０”となり、ヒットしない。このとき、ＡＮＤゲート１１から出力されるウエイト信号waitが“１”となるので、ＣＰＵ２がウエイト状態となる。また、飛び先アドレスJumpAddは、命令キャッシュメモリ５に格納されて登録されるとともに、そのまま加算器１３を介してＤＲＡＭコントローラ４に出力される。
【００４５】
ＤＲＡＭコントローラ４は、その飛び先アドレスJumpAddに基づいて、ＳＤＲＡＭ３から分岐先の命令とそれに続く命令とを順次読み出していく。読み出された命令は、プリフェッチバッファ６に一旦蓄えられて、ＣＰＵ２への読み出しのために待機する。また、このとき、ヒット判別信号Ｈｉｔが“０”であるので、ヒットさせるための分岐先の命令を命令キャッシュメモリ５に読み込む必要がある。したがって、命令キャッシュメモリ５にも、ＳＤＲＡＭ３から読み出された命令が書き込まれる。
【００４６】
この結果、コンパレータ７による比較で、飛び先アドレスJumpAddと命令キャッシュメモリ５に登録されているアドレスとが一致するので、ヒット判別信号Ｈｉｔが“１”となる。したがって、この場合は、命令キャッシュメモリ５から、新たに書き込まれた分岐先の命令とそれに続く命令が読み出され、セレクタ８を介してＣＰＵ２に与えられる。このとき、ウエイト信号waitが“１”となっていることから、ＣＰＵ２は、入力された命令を処理していく。
【００４７】
このように、本実施の形態のＣＰＵシステム１は、ＣＰＵ２の動作速度がＳＤＲＡＭ３のバーストリード時の動作速度以下という条件で動作し、ＣＰＵ２が分岐命令を処理するときに、命令キャッシュメモリ５に分岐先の命令が格納されていれば、当該命令を命令キャッシュメモリ５から読み出す。これにより、ＣＰＵ２が分岐命令を処理するときに、ＳＤＲＡＭ３において、不連続なアドレスをアクセスして命令を読み出す動作が不要となるので、ＣＰＵ２内の処理（パイプライン処理）も含めた処理の連続性を維持することができる。また、上記のように命令キャッシュメモリ５がヒットしているとき、ＳＤＲＡＭ３に対しては、ＲＡＳやＣＡＳの処理を行う必要がなく、ＣＰＵ２の動作にウエイトが生じない。
【００４８】
また、ＣＰＵシステム１においては、命令キャッシュメモリ５が分岐先の命令とそれに続く命令の８ステップ分の命令を格納するので、程度まとまったメモリブロック（１２８バイト単位）を格納する一般の命令キャッシュメモリのように大きい容量を必要としない。
【００４９】
本発明は、上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【００５０】
本発明のＣＰＵシステムは、ＣＰＵが分岐命令を処理するときに、命令キャッシュメモリに分岐先の命令が格納されていれば、当該命令を命令キャッシュメモリから読み出すことにより、処理の連続性をより高めることができるので、セミカスタムＡＳＩＣによって作製されるマイクロコンピュータなどのシステムに好適に利用できる。
【図面の簡単な説明】
【００５１】
【図１】本発明の実施形態に係るＣＰＵシステムの構成を示すブロック図である。
【図２】上記ＣＰＵシステムの動作を示すタイミングチャートである。
【図３】上記ＣＰＵシステムにおける分岐命令を処理するときのＣＰＵのパイプライン動作を示す図である。
【符号の説明】
【００５２】
１        ＣＰＵシステム
２        ＣＰＵ
２ａ      ＣＰＵコア
３        ＳＤＲＡＭ（高速ＤＲＡＭ）
４        ＤＲＡＭコントローラ
５        命令キャッシュメモリ
６        プリフェッチバッファ
７        コンパレータ
８        セレクタ
９        ８進カウンタ
１０        ＲＳフリップフロップ
１１，１２  ＡＮＤゲート
１３        加算器
【図１】
2008052518.tif 000003
【図２】
2008052518.tif 000004
【図３】
2008052518.tif 000005