(57)【要約】【課題】スループットを向上させる。【解決手段】マルチプロセッサシステムは、演算系の処理を行うプロセッサ１０と、制御系の処理を行うプロセッサ２０とを有している。プロセッサ１０には、このプロセッサ１０によりアクセス制御されるデータ格納用のキャッシュ・システム３０が接続されている。プロセッサ２０には、このプロセッサ２０によりアクセス制御されて先読みをしたデータを保持するバッファ・システム４０が接続されている。キャッシュ・システム３０及びバッファ・システム４０には、プロセッサ１０，２０からのアクセスを調停するアービタ回路５０が接続され、このアービタ回路５０に、プログラムとデータを格納するFlashメモリ６０が接続されている。メモリ６０は、アービタ回路５０によって調停されたアクセスにより制御される。【選択図】図１
2007115174.tif 000002
【特許請求の範囲】
【請求項１】
プログラム制御により演算系の処理を行う第１のプロセッサと、
プログラム制御により制御系の処理を行う第２のプロセッサと、
前記第１のプロセッサに接続され、前記第１のプロセッサによりアクセス制御されるデータ格納用のキャッシュ・システムと、
前記第２のプロセッサに接続され、前記第２のプロセッサによりアクセス制御されて先読みをしたデータを保持するバッファを複数有するバッファ・システムと、
前記キャッシュ・システム及び前記バッファ・システムに接続され、前記第１及び第２のプロセッサからのアクセスを調停するアービタ回路と、
前記アービタ回路に接続され、前記アービタ回路によって調停された前記アクセスにより制御され、プログラムとデータを格納するメモリと、
を備えたことを特徴とするマルチプロセッサシステム。
【請求項２】
前記バッファ・システムは、
前記第２のプロセッサのアクセスを先読みして連続する先読みアドレスを生成する先読みアドレス生成回路と、
前記先読みアドレス生成回路の出力に基づき、前記第２のプロセッサの要求前に、予め前記先読みアドレスに対応する前記メモリからの先読みデータを複数保持しておく先読みバッファと、
前記先読みアドレス生成回路の出力に基づき、前記先読みバッファに保持されたデータと前記メモリから読み込んだデータのいずれか一方を選択して前記第２のプロセッサに出力するデータ選択回路と、
を有することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
前記先読みアドレス生成回路は、
前記第２のプロセッサからアクセスのあったアドレスを保持する保持回路と、
前記第２のプロセッサから先読みした先読みアドレスを保持する先読みアドレス保持用バッファと、
前記先読みアドレス保持用バッファに保持された先読みアドレスと、前記保持回路に保持されたアドレスとを比較するコンペア回路と、
前記保持回路に保持されたアドレスから連続するアドレスを生成するカウントアップ回路と、
前記コンペア回路の出力に基づき、前記保持回路に保持されたアドレスと前記カウントアップ回路で生成された連続するアドレスとのいずれか一方を選択する選択回路と、
前記選択回路で選択されたアドレスを入力し、前記先読みアドレス保持用バッファに空きがあった場合に複数ビット幅データ用のアドレスを出力するアクセス制御回路と、
を有することを特徴とする請求項２記載のマルチプロセッサシステム。
【請求項４】
前記バッファ・システムは、
前記第２のプロセッサのアクセスを先読みして連続する先読みアドレスか又は予測アドレスを生成する先読みアドレス生成回路と、
前記先読みアドレス生成回路の出力に基づき、前記第２のプロセッサの要求前に、予め前記先読みアドレス又は前記予測アドレスに対応する前記メモリからの先読みデータを複数保持しておく先読みバッファと、
前記先読みアドレス生成回路の出力に基づき、前記先読みバッファに保持された先読みデータと前記メモリから読み込んだデータとのいずれか一方を選択して前記第２のプロセッサに出力するデータ選択回路と、
を有することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項５】
前記先読みアドレス生成回路は、
前記第２のプロセッサからアクセスのあったアドレスを保持する保持回路と、
前記第２のプロセッサから先読みした先読みアドレスを保持する先読みアドレス保持用バッファと、
前記先読みアドレス保持用バッファに保持された先読みアドレスと、前記保持回路に保持されたアドレスとを比較するコンペア回路と、
前記保持回路に保持されたアドレスから連続するアドレスを生成するカウントアップ回路と、
前記第２のプロセッサからアクセスのあった前のアドレスと次のアドレスが連続しているか否かを判定する順次アクセス判定回路と、
前記順次アクセス判定回路の出力に基づき、分岐前のアドレスを保持するタグメモリと、
前記順次アクセス判定回路の出力に基づき、分岐先の予測アドレスを保持するデータメモリと、
前記タグメモリの出力から前記データメモリのデータが有効か否かを判定する先読み判定回路と、
前記先読み判定回路の出力に基づき、前記カウントアップ回路から出力される連続するアドレスと前記データメモリから出力される予測アドレスとのいずれか一方を選択する第１の選択回路と、
前記コンペア回路の出力に基づき、前記第１の選択回路から出力されるアドレスと前記保持回路に保持されたアドレスとのいずれか一方を選択する第２に選択回路と、
前記第２の選択回路で選択されたアドレスを入力し、前記先読みアドレス保持用バッファに空きがあった場合に前記第２のプロセッサの要求のデータ幅のアドレスを要求アクセス幅以上のデータ幅のアドレスに変換して出力するアクセス制御回路と、
を有することを特徴とする請求項４記載のマルチプロセッサシステム。
【請求項６】
前記キャッシュ・システムは、
前記第１のプロセッサからのアドレスのライン毎のデータを保持するデータメモリと、
前記第１のプロセッサからのライン毎のアドレスと要求アクセス幅以上の各データの有効／無効を判定して判定結果を保持するタグメモリと、
前記タグメモリの出力に基づき、前記第１のプロセッサからのライン毎のアドレスの先読みミスを発生してキャッシュ・ミス・アドレスを生成する キャッシュ・ミス・アドレス生成回路と、
前記メモリからのデータを前記データメモリに書き込み、保持しておくバイパス・保持回路と、
前記タグメモリの出力に基づき、前記バイパス・保持回路により保持されたデータと前記データメモリに保持されたデータとのいずれか一方を選択して前記第１のプロセッサに出力するデータ選択回路とを有し、
メモリ位置に関する関数の開始・終了アドレスの場合はキャッシュの１ラインを全てフェッチしないで途中で止めることを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項７】
前記キャッシュ・ミス・アドレス生成回路は、
前記第１のプロセッサのアドレスがキャッシュ・ミスしている時にキャッシュ・ミス・アドレスを生成するように判定して通知するアドレス生成判定回路と、
前記アドレス生成判定回路の出力から、前記キャッシュ・ミス・アドレスがキャッシュ・ラインの先頭かどうかを判定する判定回路と、
前記アドレス生成判定回路の出力と前記判定回路の出力から、関数の開始アドレスを求めて前記開始アドレスを保持する関数開始アドレス保持バッファと、
選択結果から、前記関数の終了アドレスを求めて前記終了アドレスを保持する関数終了アドレス保持バッファと、
前記関数開始アドレス保持バッファの出力と前記関数終了アドレス保持バッファの出力から、前記キャッシュ・ラインのアドレスを生成し、前記関数の開始、終了アドレスの場合はアドレス生成を止めるカウントアップ回路と、
前記アドレス生成判定回路の出力と前記カウントアップ回路の出力とのいずれか一方を選択して前記選択結果を出力する選択回路と、
前記選択回路の出力から、要求アクセス幅以上のデータのアドレスを生成して、ライン・フェッチのアクセスを発生させるアクセス制御回路と、
を備えたことを特徴とする請求項６記載のマルチプロセッサシステム。
【請求項８】
前記キャッシュ・システムは、
前記第１のプロセッサからのアドレスのライン毎のデータを保持するデータメモリと、
前記第１のプロセッサからのライン毎のアドレスと要求アクセス幅以上の各データの有効／無効を判定して判定結果を保持するタグメモリと、
前記タグメモリの出力に基づき、前記第１のプロセッサからのライン毎のアドレスの先読みミスを発生してキャッシュ・ミス・アドレスを生成する キャッシュ・ミス・アドレス生成回路と、
前記メモリからのデータを前記データメモリに書き込み、保持しておくバイパス・保持回路と、
前記タグメモリの出力に基づき、前記バイパス・保持回路により保持されたデータと前記データメモリに保持されたデータとのいずれか一方を選択して前記第１のプロセッサに出力するデータ選択回路とを有し、
キャッシュのラインの途中から発生するライン・フェッチは前記キャッシュの１ラインを全てフェッチしないで途中で止めることを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項９】
前記キャッシュ・ミス・アドレス生成回路は、  
前記第１のプロセッサのアドレスがキャッシュ・ミスしている時にキャッシュ・ミス・アドレスを生成するように判定して通知するアドレス生成判定回路と、
前記アドレス生成判定回路の出力から、前記キャッシュ・ミス・アドレスがキャッシュ・ラインの先頭かどうかを判定する判定回路と、
前記アドレス生成判定回路の出力と前記判定回路の出力から、前記キャッシュ・ラインのアドレスを生成し、前記ラインの途中から開始されたライン・フェッチはラインの終了アドレスで止めるカウントアップ回路、
前記アドレス生成判定回路の出力と前記カウントアップ回路の出力とのいずれか一方を選択する選択回路と、
前記選択回路の出力から、プロセッサ要求のデータ幅のアドレスを要求アクセス幅以上のデータ幅のアドレスに変換して出力するアクセス制御回路と、
を備えたことを特徴とする請求項８記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体集積回路において複数のプロセッサを搭載したマルチプロセッサシステムに関するものである。
【背景技術】
【０００２】
一般に、シングル（単一）プロセッサでシステムの要求される性能を満たすことが出来ない場合、例えば、下記の文献に記載されているように、マルチプロセッサの構成をとることがある。
【０００３】
【特許文献１】特許第３１４４７９４号公報
【特許文献２】特開２００３−３００４９号公報
【０００４】
マルチプロセッサとは、複数のプロセッサを搭載し、処理を分担して行うシステムである。各々のプロセッサは独立に動作し、データやプログラムは共通で使うことが一般的に行われている。
【０００５】
マルチプロセッサシステムでは、例えば、各々のプロセッサには演算系（共通の関数等を使って、同じ演算を繰り返すような処理）、制御系（割り込み等によって発生し、データや内部の状態によって、入／出力（以下、「Ｉ／Ｏ」という。）装置を制御する処理）等の処理に分けられる。
【０００６】
図１０は、従来のマルチプロセッサシステムを示す概略の構成図である。
このマルチプロセッサシステムは、デュアル（二重）プロセッサ１，２を有し、各々のプロセッサ１，２に、キャッシュ・メモリを有するキャッシュ・システム３，４が搭載されている。データやプログラムは共通で使うため、各々のプロセッサ１，２側からデータ格納用メモリのアクセス（キャッシュからのアクセス（読み書き））を調停するアービタ回路５が設けられている。但し、ここでは排他制御やキャッシュ・システムのコヒーレンシ（可干渉性）制御の必要なライト（書き込み）アクセスのあるデータではなく、リード（読み出し）のみのデータ、プログラムコードを対象にしている。
【０００７】
キャッシュ・システム３，４からのアクセスは、プロセッサ１，２から要求されたデータが該キャッシュ・システム３，４内のキャッシュ・メモリに存在しない場合、メモリ６に対して、１ライン分（一般に使われるのは３２バイト（byte））のデータを要求し、キャッシュ・メモリに入れる。メモリ６のデータバス幅が３２bit（ビット、これは４byteに相当）であれば、８回の転送が行われる。片方のキャッシュ・システム（例えば、３）が８回の転送をしている時にもう一方のキャッシュ・システム（例えば、４）からも転送の要求がきた場合、優先順位の高いアクセスが優先される、又は、先に行われている８回の転送が完了するまで、もう一方は待たされるというように、両方のキャッシュ・システム３，４からメモリ６ヘのアクセスがあった場合は、必ず片方が待たされることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来のマルチプロセッサシステムでは、次の（ａ）〜（ｄ）のような問題があった。
【０００９】
（ａ）  従来の図１０のマルチプロセッサシステムのように、各々のプロセッサ１，２にキャッシュ・システム３，４を搭載したデュアルプロセッサの構成とすると、キャッシュ・ミスした時には、キャッシュ・システム３，４からメモリ６ヘ３２byte分のアクセスが発生し、各々のプロセッサ１，２が同時にキャッシュ・ミス、又は１つのプロセッサ（例えば、３）側がキャッシュ・ミスによって、メモリ６にアクセスしている途中に、もう片方のプロセッサ（例えば、４）側がキャッシュ・ミスすると、メモリ６ヘのアクセスが競合して、どちらかのメモリアクセスが待たされ、待たされている間はメモリ６のデータを必要とするプロセッサ３又は４の処理が停まることになる。１ラインが３２byteの時、メモリ６のバス幅３２bitでは、同時にキャッシュ・ミスによるアクセスが発生した場合、最短でも８サイクル待つことになり、デュアルプロセッサにした場合に期待されるシングルプロセッサの２倍というスループットを達成することが出来ないという問題があった。
【００１０】
（ｂ）  前記（ａ）の方法では、片方のプロセッサ３又は４の待ち時間が長くなり、レイテンシ（latency、待ち）が大きくなってしまうため、アービタ回路５を、アクセスが競合した時はプロセッサ１側とプロセッサ２側に順番にメモリアクセスさせるとした場合では、各々のプロセッサ１，２のレイテンシは小さくなるが、各々のプロセッサ１，２での待ち時間は発生してしまうため、同じようにシングルプロセッサの２倍のスループットを得ることが出来ないという問題があった。
【００１１】
（ｃ）  キャッシュ・システム３，４のアクセスは必ず３２byte分行われるのも、性能低下の原因となっている。１ライン分をキャッシュ・メモリに転送するが、実際には使用しない部分もあり、その分のアクセスは無駄となり、メモリアクセスの競合時に無駄なアクセスで待たされることもあった。又、制御系の処理では、繰り返されるループや共通で同じ関数を呼び出すこと等が少なく、１度実行してから、次に実行するまでにキャッシュ・メモリの内容が書き換わってしまうため、再度、キャッシュ・メモリに転送し直さなければならなくなるということがある。そのため、キャッシュ・メモリにデータを転送して、再利用するメリットが生かされず、何度もキャッシュ・メモリに転送し直すことによるオーバヘッド（装置全体の動作時間）が大きくなってしまうという問題があった。
【００１２】
（ｄ）  前記（ｃ）において、メモリ６にはアドレスが入力されてから、２サイクル経過後にデータを返すリード専用のフラッシュメモリ（以下「Flashメモリ」という。）が使われることがある。この場合、必要となるデータのアドレスを早くFlashメモリに送る必要があり、キャッシュ・システム３，４では、１ライン分のアクセスを連続して生成するため、有効であるが、キャッシュ・システム３，４を使用しない場合では、プロセッサ１，２から、アクセスが発生してから、毎回２サイクル待たなければならなくなるため、レイテンシが大きくなってしまうという問題があった。
【００１３】
このような（ａ）〜（ｄ）の問題を、例えば、前記の特許文献１、２の技術を用いて解決出来るか否かについて検討してみる。特許文献１の技術は、複数バンクを持つ共有メモリに対して、各バンクにファーストイン・ファーストアウト・メモリ（以下「FIFO」という。）を設け、各バンクに対するアクセスを複数の中央処理装置（以下「CPU」という。）から行う時に、FIFOに入れて、共有メモリにアクセスするものである。又、特許文献２の技術は、マルチプロセッサのデータ整合性を維持するためのものである。これらの特許文献１、２の技術は、いずれも前記の（ａ）〜（ｄ）の問題とは無関係な技術であるため、このような特許文献１、２の技術を用いて前記の（ａ）〜（ｄ）の問題を解決することが困難であった。
【課題を解決するための手段】
【００１４】
本発明のマルチプロセッサシステムでは、プログラム制御により演算系の処理を行う第１のプロセッサと、プログラム制御により制御系の処理を行う第２のプロセッサと、前記第１のプロセッサに接続され、前記第１のプロセッサによりアクセス制御されるデータ格納用のキャッシュ・システムと、前記第２のプロセッサに接続され、前記第２のプロセッサによりアクセス制御されて先読みをしたデータを保持するバッファを複数有するバッファ・システムと、前記キャッシュ・システム及び前記バッファ・システムに接続され、前記第１及び第２のプロセッサからのアクセスを調停するアービタ回路と、前記アービタ回路に接続され、前記アービタ回路によって調停された前記アクセスにより制御され、プログラムとデータを格納するメモリとを備えている。
【発明の効果】
【００１５】
請求項１〜３に係る発明によれば、次の（１）〜（５）のような効果がある。
（１）  例えば、メモリのデータバス幅を多数bitにすれば、第１のプロセッサと第２のプロセッサは、片方のプロセッサからのアクセスの終了を待たずに並列に動作出来るため、全体的なスループットが向上する。更に、第１のプロセッサはキャッシュ・システムを搭載し、第２のプロセッサではバッファ・システムを搭載することで、以下のそれぞれの特徴を生かして、スループットを向上することが出来る。
【００１６】
（２）  第１のプロセッサでは、共通関数や繰り返し処理の多い演算系の処理を行うため、同じプログラムを実行する可能性が高く、キャッシュ・システムにプログラムを入れることで、メモリヘのアクセスを減らし、スループットを向上することが出来る。
【００１７】
（３）  第２のプロセッサでは、逐次処理の多い制御系の処理を行うため、先読みを行うことで、分岐後のアクセス時にウェイトが発生するが、以降は分岐しない間、ウェイトなしでデータを受け取ることが出来るため、スループットが向上する。
【００１８】
（４）  バッファ・システムにおいて、例えば、メモリ・アクセスがデータ幅多数bitで数ウェイトにした場合、先読みバッファを複数段とすることで、先読みが出来ない状態からの復帰でも、レイテンシが発生することなく、第２のプロセッサから先読みバッファヘのアクセスを行うことが出来る。
【００１９】
（５）  キャッシュ・システムでは、使用しない命令もラインにあれば、全てキャッシュ・システム内に入れるため、バッファ・システムの方がメモリヘのアクセスが減少し、消費電力の削減にも効果があり、例えば、キャッシュ・メモリのような大きなメモリを必要としないため、面積削減にも効果がある。
【００２０】
請求項４、５に係る発明によれば、タグメモリとデータメモリによる先読みアドレスの予測をする機能を設けたので、先読みミスを減らすことが出来る。このため、先読みミスによって発生するウェイトが減り、第１、第２のプロセッサの停止時間が短くなるので、スループットが向上する。その上、請求項３に係る発明よりもメモリヘのアクセスが減るため、このメモリで消費される電力を抑えることも出来る。
【００２１】
請求項６、７に係る発明によれば、フェツチしても使用しない可能性の高い関数の前後の命令をフェッチしないようにすることで、不要な部分のライン・フェッチを待って、バッファ・システムの先読みが待たされることなく、アクセス出来るようになるため、バッファ・システム側のレイテンシが小さくなり、システム全体のスループットが向上する。
【００２２】
請求項８、９に係る発明によれば、関数だけでなく、分岐によって、使用しない可能性の高い命令のフェッチを行わないため、ラインの途中から始まる分のスループットが向上する。更に、構成を簡素化しているので面積を削減でき、しかも、システム全体のスループットも向上出来る。
【発明を実施するための最良の形態】
【００２３】
マルチプロセッサシステムは、プログラム制御により演算系の処理を行う第１のプロセッサと、プログラム制御により制御系の処理を行う第２のプロセッサとを有している。第１のプロセッサには、この第１のプロセッサによりアクセス制御されるデータ格納用のキャッシュ・システムが接続されている。第２のプロセッサには、この第２のプロセッサによりアクセス制御されて先読みをしたデータを保持するバッファ・システムが接続されている。キャッシュ・システム及びバッファ・システムには、第１及び第２のプロセッサからのアクセスを調停するアービタ回路が接続され、このアービタ回路に、プログラムとデータを格納するメモリが接続されている。メモリは、アービタ回路によって調停されたアクセスにより制御される。
【実施例１】
【００２４】
（実施例１の構成）
図１は、本発明の実施例１を示すマルチプロセッサシステムの構成図である。
このマルチプロセッサシステムでは、デュアルプロセッサの２つのプロセッサとして、ディジタル・シグナル・プロセッサ（以下「DSP」という。）等で構成された演算用の第１のプロセッサ１０と、CPU等で構成された制御用の第２のプロセッサ２０とを備えている。第１のプロセッサ１０にキャッシュ・システム３０が接続され、第２のプロセッサ２０にバッファ・システム４０が接続され、これらのキャッシュ・システム３０及びバッファ・システム４０に、アービタ回路５０を介してFlashメモリ６０が接続されている。
【００２５】
ここで、プロセッサ１０からキャッシュ・システム３０へ、アドレスP1ADDRとアクセス開始信号P1CSが入力され、キャッシュ・システム３０からプロセッサ１０ヘ、例えばバス幅３２bitのデータP1DATAとアクセス終了信号P1READYが入力される。同様に、プロセッサ２０とバッファ・システム４０が、それぞれアドレスP2ADDR、アクセス開始信号P2CSの信号線と例えばバス幅３２bitのデータP2DATA、アクセス終了信号P2READYの信号線で接続されている。
【００２６】
キャッシュ・システム３０から出力されるアドレスCADDR、アクセス開始信号CCSの信号線と、バッファ・システム４０から出力されるアドレスBADDR、アクセス開始信号BCSの信号線とは、アービタ回路５０に接続され、このアービタ回路５０からキャッシュ・システム３０には、例えばバス幅６４bitのデータCDATA、アクセス終了信号CREADY、バッファ・システム４０にはデータBDATA、アクセス終了信号BREADYが入力される。アービタ回路５０からFlashメモリ６０ヘ、アドレスFADDRが入力され、例えばバス幅６４bitのデータFDATAが、Flashメモリ６０からアービタ回路５０に入力される。
【００２７】
キャッシュ・システム３０は、キャッシュ・メモリを有する一般的なキャッシュの内部構成とし、例えば、１ライン３２byteで、キャッシュ・ミス時はFlashメモリ６０に対して、１ライン分のリ−ド・アクセス（６４bitアクセスを４回）を行い、Flashメモリ６０からリ−ドした時点で、プロセッサ１０から要求のあったデータは内部のキャッシュ・メモリで受け取ると同時にプロセッサ１０が受け取ることが出来る。キャッシュ・ヒット時には、Flashメモリ６０にアクセスは行わず、アクセスのあったアドレスのデータをキャッシュ・メモリからプロセッサ１０に返す構成になっている。
【００２８】
図２は、図１中のバッファ・システム４０の一例を示す構成図である。
このバッファ・システム４０は、FIFO等で構成される先読みバッファ４１と、先読みアドレス生成回路４２と、データ選択回路４３とにより構成されている。
【００２９】
ここで、プロセッサ２０からの入力アドレスP2ADDRとアクセス開始信号P2CSは、先読みアドレス生成回路４２に入力される。先読みアドレス生成回路４２からは、アドレスBADDRとアクセス開始信号BCSを出力し、データ選択回路４３と先読みバッファ４１にミス・ヒット判定信号MHを出力する。先読みバッファ４１は、例えば、３２bitデータを保持するバッファが４段搭載された構成であり、Flashメモリ６０からの６４bit幅のデータFDATAが、アービタ回路５０を通って６４bitのデータBDATAの形で入力される。この６４bitのデータBDATAの内の３２bit幅のデ一タは、バイパス経路４４からデータ選択回路４３に入力される。アービタ回路５０から与えられたアクセス終了信号BREADYは、先読みバッファ４１、先読みアドレス生成回路４２、及びデータ選択回路４３に入力される。データ選択回路４３は、３２bit幅のデータP2DATAと、プロセッサ２０からのアクセスの終了を示すアクセス終了信号P2READYとを、プロセッサ２０に出力する。
【００３０】
図３は、図２中の先読みアドレス生成回路４２の一例を示す構成図である。
この先読みアドレス生成回路４２は、保持回路であるフリップ・フロップ回路（以下「Ｆ／Ｆ」という。）４２ａ、先読みアドレス保持用バッファ４２ｂ、比較回路であるコンペア回路４２ｃ、カウントアップ回路４２ｄ、選択回路であるマルチプレクサ回路（以下「Mux回路」という。）４２ｅ、及びアクセス制御回路４２ｆにより構成されている。
【００３１】
ここで、プロセッサ２０から与えられるアドレスP2ADDRは、Ｆ／Ｆ４２ａに入力され、このＦ／Ｆ４２ａの出力信号がコンペア回路４２cに入力される。プロセッサ２０から与えられるアクセス開始信号P2CSは、先読みアドレス保持用バッファ４２bに入力され、このバッファ４２bの出力信号がコンペア回路４２cに入力される。先読みアドレス保持用バッファ４２bは、アクセスがあるとこのバッファ内の古いデー夕から出力し、このバッファ内のデータの有効／無効を示す信号を出力する機能を有している。コンペア回路４２cから出力されるミス・ヒット判定信号MHは、外部に出力されると共に、セレクト信号としてMux回路４２ｅに入力される。又、ミス・ヒット判定信号MHは、先読みアドレス保持用バッファ４２bにも入力される。
【００３２】
Ｆ／Ｆ４２ａの出力信号は、Mux回路４２eとカウントアップ回路４２dにも入力され、このカウントアップ回路４２dの出力信号がMux回路４２eに入力される。Mux回路４２eの出力信号は、アクセス制御回路４２ｆに入力される。先読みアドレス保持用バッファ４２bから出力される先読み制御信号HRと、アービタ回路５０から与えられるアクセス終了信号BREADYとは、アクセス制御回路４２ｆに入力される。アクセス制御回路４２ｆからは、６４bitデータ用アドレスBADDR、及びアクセス開始信号BCSが出力され、更に、３２bitデータ用アドレスADが先読みアドレス保持用バッファ４２bに出力されると共に、次のカウントアップを開始するカウントアップ開始信号CUSがカウントアップ回路４２dに出力される。
【００３３】
アクセス開始信号P1CS,CCS,P2CS,BCSは、アクティブ（活性状態）を論理“Ｌ”、アクセス終了信号P1READY,CREADY,P2READY,BREADYは、アクティブを論理“Ｈ”とする。
【００３４】
（実施例１の動作）
図４は、本発明の実施例１（図１〜図３）におけるキャッシュ・ミス、先読みミス時の動作を示す波形図である。
【００３５】
クロックCLKに同期して、プロセッサ１０からアドレスP1ADDR（A10）が出力されると共に、プロセッサ２０からアドレスP2ADDR（A20）が出力された時の動作は、次のようになる。
【００３６】
アドレスA10はキャッシュ・システム３０に送られ、このキャッシュ・システム３０内のキャッシュ・メモリを検索し、データがないので、ライン・フェッチ（取り出し）を行うため、アービタ回路５０に対して、ライン・フェッチをするためのアドレスCADDR（A10，A11）とアクセス開始信号CCSの“Ｌ”を出力する。ここで、アドレスCADDRは６４bit幅のデータのためのアドレスとなるため、２つのアドレスA10，A11を出力する。
【００３７】
同様に、アドレスA20はバッファ・システム４０に送られ、このバッファ・システム４０内の先読みアドレス生成回路４２に入力される。アドレスA20はアクセス開始信号P2CSによって、先読みアドレス保持用バッファ４２bから出力されるアドレスと、コンペア回路４２cで比較され、図４では先読みミスとして、ミス・ヒット判定信号MHが出力される。先読みミスと判定された場合は、アドレスP2ADDRを保持したＦ／Ｆ４２ａからのアドレスが、Mux回路４２eで選択され、アクセス制御回路４２ｆに入力される。又、先読みミスのため、ミス・ヒット判定信号MHによって、先読みアドレス保持用バッファ４２bのデータは全て無効となる。
【００３８】
アクセス制御回路４２ｆは、受け取ったアドレスA20から、アドレスA20，A21を出力する準備をする。この時、先読みアドレス保持用バッファ４２bは、２つ以上の空き（無効データ）があるため、アドレスBADDR（A20，A21）とアクセス開始信号BCSの“Ｌ”を出力する。アドレスA21は、プロセッサ２０から要求されていないアドレスのため、先読みアドレス保持用バッファ４２bに保持される。又、アービタ回路５０にアクセスを行ったため、次の先読みのため、カウントアップ回路４２dにカウントアップ開始信号CUSを送り、カウントアップした値を保持しておく。先読みアドレス生成回路４２から出力されたミス・ヒット判定信号MHは、先読みバッファ４１とデータ選択回路４３に入力され、先読みバッファ４１内にあるデータは全て無効となる。
【００３９】
この時、アービタ回路５０は、キャッシュ・システム３０からのアクセスを優先し、アドレスA10，A11を同じクロックCLK内でアドレスFADDRとして、Flashメモリ６０に出力し、アドレスA20，A21は待たされる。次のクロックCLKでは、Flashメモリ６０にアクセスを出力したキャッシュ・システム３０は、ライン・フェッチの次のアドレスA12，A13をアービタ回路５０に対して出力するが、このアービタ回路５０は、バッファ・システム４０からのアドレスA20，A21をアドレスFADDRとして出力し、アドレスA12，A13を待たせる。
【００４０】
その次のクロックCLKでは、バッファ・システム４０はアドレスA20，A21を出力できたため、カウントアップ回路４２dで保持していたカウントアップ値（アドレスA22）をMux回路４２eで選択し、アクセス制御回路４２ｆで先読みアドレス保持用バッファ４２bに２つ以上の空きがあるため、アドレスBADDR（A22，A23）を出力し、アービタ回路５０に入力する。同時に、アドレスA22，A23は、先読みアドレス保持用バッファ４２bにも保持される。アービタ回路５０は、キャッシュ・システム３０からのアドレスFADDR（A12，A13）を出力し、アドレスA22，A23を待たせる。
【００４１】
その次のクロックCLKでは、Flashメモリ６０から６４bit幅のデータFDATA（D10，D11）がアドレスA10，A11のデータとして出力される。データD10，D11は、アービタ回路５０を通ってキャッシュ・システム３０に送られ、このキャッシュ・システム３０内のキャッシュ・メモリに格納され、同時に、プロセッサ１０からアクセスのあったアドレスA10の３２bit幅のデータP1DATA（D10）を出力し、プロセッサ１０で受け取る。プロセッサ１０はデータD10を受け取ると、出力していたアドレスP1ADDR（A11）を有効にする。この時、アドレスA11のデータはキャッシュ・システム３０内にあるため、次のクロックCLKでプロセッサ１０にデータD11を返すことが出来る。
【００４２】
データD11を返したクロックCLKでは、Flashメモリ６０から、６４bit幅のデータFDATA（D20，D21）がアドレスA20，A21のデータとして出力される。データD20，D21は、アービタ回路５０を通ってデータBDATAの形でバッファ・システム４０に入力される。プロセッサ２０からアクセスのあったアドレスA20の３２bit幅のデータD20は、データ選択回路４３を通ってデータP2DATAの形でに出力される。残りの３２bit幅のデータD21は、先読みバッファ４１に格納される。出力されたデータP2DATA（D20）は、プロセッサ２０が受け取り、次のアドレスP2ADDR（A21）として出力される。
【００４３】
アドレスA21は、先読みアドレス生成回路４２内のＦ／Ｆ４２ａで保持され、先読みアドレス保持用バッファ４２bに格納されている最も古いアドレスと、コンペア回路４２cで比較される。この時、先読みアドレスはA21となっているため、ミス・ヒット判定信号MHは先読みヒットとなり、データ選択回路４３に入力される。この際、先読みバッファ４１に格納されている３２bit幅のデータD21は、データ選択回路４３に入力され、先読みヒットのため、データP2DATAとしてに出力される。バッファ・システム４０から出力されたデータD21は、プロセッサ２０が受け取る。
【００４４】
以降、キャッシュ・システム３０からのアクセスは、ライン・フェッチが終わるまで続き、ライン・フェッチが始まると同じ動作を行う。キャッシュ・ヒットした場合には、Flashメモリ６０に対してアクセスが発生しない。バッファ・システム４０は、プロセッサ２０からの連続しないアドレスP2ADDRが出力されるまで、同様にFlashメモリ６０にアクセスを行い、先読みミスをした場合、同様な動作を行い、最初のアクセスにはウェイト（wait、待ち状態）が発生する。アービタ回路５０は、キャッシュ・システム３０とバッファ・システム４０のアクセスの競合がない場合でも、Flashメモリ６０に対して、２サイクルに１回のアクセスを出す。
【００４５】
以上のように、図４の動作の特徴は、キャッシュ・システム３０からアドレスCADDR（A10，A11)が出力され、これがアービタ回路５０を通ってアドレスFADDR（A10，A11)がFlashメモリ６０へ入力され、次に、バッファ・システム４０からアドレスBADDR(A20，A21)が出力され、これがアービタ回路５０を通ってアドレスFADDR(A20，A21)がFlashメモリ６０へ入力され、キャッシュ・システム３０からアドレスCADDR（A12，A13)が出力され、これがアービタ回路５０を通ってアドレスFADDR（A12，A13)がFlashメモリ６０へ入力され、次に、バッファ・システム４０からアドレスBADDR(A22，A23)が出力され、これがアービタ回路５０を通ってアドレスFADDR(A22，A23)がFlashメモリ６０へ入力されると共に、Flashメモリ６０から２ウェイト遅れて６４bitのデータFDATA(D10，D11)が読み出され、以降同様の動作が繰り返される。
【００４６】
つまり、キャッシュ・システム３０とバッファ・システム４０から交互にアドレスCADDR,BADDRが出力され、アービタ回路５０を通って、そのアドレスCADDR,BADDRに対応するアドレスFADDRがFlashメモリ６０に入力され、２ウェイト遅れてFlashメモリ６０から６４bitのデータFDATAが読み出され、以降同様の動作が繰り返される。
【００４７】
（実施例１の効果）
本実施例１によれば、次の（１）〜（５）のような効果がある。
【００４８】
（１）  本実施例１によれば、Flashメモリ６０のデータバス幅を６４bitにしたことで、プロセッサ１０とプロセッサ２０は、片方のプロセッサからのアクセスの終了を待たずに並列に動作出来るため、全体的なスループットが向上する。更に、プロセッサ１０はキャッシュ・システム３０を搭載し、プロセッサ２０ではバッファ・システム４０を搭載することで、以下のそれぞれの特徴を生かして、スループットを向上することが出来る。
【００４９】
（２）  プロセッサ１０では、共通関数や繰り返し処理の多い演算系の処理を行うため、同じプログラムを実行する可能性が高く、キャッシュ・システム３０にプログラムを入れることで、Flashメモリ６０ヘのアクセスを減らし、スループットを向上することが出来る。
【００５０】
（３）  プロセッサ２０では、逐次処理の多い制御系の処理を行うため、先読みを行うことで、分岐後のアクセス時にウェイトが発生するが、以降は分岐しない間、ウェイトなしでデータを受け取ることが出来るため、スループットが向上する。仮に、従来のようにキャッシュ・システム３０を搭載した場合は、キャッシュ・ミスすると、ラインが変わる毎にウェイトが発生するため、キャッシュ・ミスする可能性が高い制御系の処理では、本実施例１のように先読みを行うバッファ・システム４０を搭載することで、ウェイトが発生する割合が少なくなる分、スループットが向上する。
【００５１】
（４）  バッファ・システム４０において、例えば、Flashメモリ・アクセスがデータ幅６４bitで２ウェイトのため、先読みバッファ４１を４段とすることで、先読みが出来ない状態からの復帰でも、レイテンシが発生することなく、プロセッサ２０から先読みバッファ４１ヘのアクセスを行うことが出来る。
【００５２】
（５）  キャッシュ・システム３０では、使用しない命令もラインにあれば、全て内部のキャッシュ・メモリに入れるため、バッファ・システム４０の方がFlashメモリ６０ヘのアクセスが減少し、消費電力の削減にも効果があり、キャッシュ・メモリのような大きなメモリを必要としないため、面積削減にも効果がある。
【実施例２】
【００５３】
（実施例２の構成）
図５は、本発明の実施例２における先読みアドレス生成回路の他の例を示す構成図であり、実施例１の図３の先読みアドレス生成回路に対応している。なお、図５において、図３中の要素と共通の要素には共通の符号が付されている。
【００５４】
本実施例２の先読みアドレス生成回路は、図２中の先読みアドレス生成回路４２に相当する回路であり、図３の先読みアドレス生成回路に、新たに、順次アクセス判定回路４２ｇ、タグメモリである随時読み書き可能なメモリ（以下「RAM」という。）からなるタグRAM４２ｈ、データメモリであるRAMからなるデータRAM４２ｉ、先読み判定回路４２ｊ、及び第１の選択回路であるMux回路４２ｋを追加した構成になっている。
【００５５】
即ち、図１のプロセッサ２０からのアドレスP2ADDRがＦ／Ｆ４２ａに入力され、このＦ／Ｆ４２ａの出力信号がコンペア回路４２cに入力される。アクセス開始信号P2CSは、先読みアドレス保持用バッファ４２bに入力され、このバッファ４２bの出力信号がコンペア回路４２cに入力される。コンペア回路４２cは、ミス・ヒット判定信号MHを出力し、これを先読みアドレス保持用バッファ４２bに与えると共に、セレクト信号として第２の選択回路であるMux回路４２eに与える。Ｆ／Ｆ４２ａの出力信号は、カウントアップ回路４２d、及びMux回路４２eにも入力される。
【００５６】
カウントアップ回路４２dの出力信号は、Mux回路４２kに入力される。アドレスP2ADDR、及びアクセス開始信号P2CSは、順次アクセス判定回路４２ｇにも入力される。順次アクセス判定回路４２ｇの出力信号は、アドレス、チップイネーブル信号、ライトイネーブル信号、アドレスの上位ビットをデータとしてタグRAM４２ｈに入力される。データRAM４２ｉには、同じアドレス、チップイネーブル信号、ライトイネーブル信号と後から来たアドレスが入力される。タグRAM４２ｈの出力データは、先読み判定回路４２ｊに入力され、この先読み判定回路４２ｊから出力される先読み可否判定信号HROが、セレクト信号としてMux回路４２kに入力される。
【００５７】
データRAM４２ｉの出力データは、Mux回路４２ｋに入力される。Mux回路４２kの出力信号は、Mux回路４２eに入力される。Mux回路４２eの出力信号、先読みアドレス保持用バッファ４２bの出力信号、及びアービタ回路５０からのアクセス終了信号BREADYは、アクセス制御回路４２ｆに入力される。アクセス制御回路４２ｆは、データを先読みアドレス保持用バッファ４２bに出力し、制御信号をカウントアップ回路４２ｄに出力し、更に、アドレスBADDR及びアクセス開始信号BCSを出力する回路である。
【００５８】
（実施例２の動作）
本実施例２の先読みアドレス生成回路では、実施例１の図４の動作波形と同様に、次のように動作する。
【００５９】
アドレスP2ADDRが送られてくると、これがＦ／Ｆ４２ａに保持される。アクセス開始信号P2CSにより、先読みアドレス保持用バッファ４２bに保持された最も古いアドレスが出力され、このアドレスがＦ／Ｆ４２aに保持されたアドレスP2ADDRとコンペア回路４２cで比較される。比較結果が同じでなかった場合、コンペア回路４２cから出力されるミス・ヒット判定信号MHは先読みミスとなり、先読みアドレス保持用バッファ４２bの内容が全て無効となる。又、ミス・ヒット判定信号MHにより、Mux回路４２eでＦ／Ｆ４２ａからの入力が選択され、このMux回路４２eの出力信号がアクセス制御回路４２ｆに入力される。アクセス制御回路４２ｆは、実施例１と同様の動作を行う。
【００６０】
アドレスP2ADDRは、順次アクセス判定回路４２ｇにも入力される。順次アクセス判定回路４２gでは、前のアドレスと比較して、連続したアドレスでなかったら、前のアドレスがタグRAM４２ｈとデータRAM４２ｉの位置を示し、タグRAM４２ｈには前のアドレスの上位ビットを書き込み、デー夕RAM４２iには順次アクセスでなかったアドレスを書き込む。順次アクセス判定回路４２ｇは、アクセスのあったアドレスでタグRAM４２ｈとデータRAM４２ｉに読み出しアクセスを行う。
【００６１】
タグRAM４２ｈの出力信号が、先読み判定回路４２ｊで有効か否かが判定され、この判定結果である先読み可否判定信号HROがMux回路４２kに出力される。先読み可否判定信号HROの内容が「有効でない」、即ち先読みを行わない場合は、Mux回路４２kでカウントアップ回路４２dからのアドレスが選択される。先読み可否判定信号HROの内容が「有効である」、即ち先読みを行う場合は、データRAM４２ｉ内のアドレスが予測アドレスとして出力され、Mux回路４２kで選択される。先読みミスしていない間は、Mux回路４２kから出力されたアドレスが、Mux回路４２eで選択され、アクセス制御回路４２ｆに入力される。
【００６２】
これにより、連続しないアドレスをプロセッサ２０が出力すると、タグRAM４２ｈとデータRAM４２ｉに格納され、次からは連続しないアドレスとして、データRAM４２ｉに保持されたアドレスが先読みアドレスとして出力される。
【００６３】
（実施例２の効果）
本実施例２によれば、実施例１の先読みアドレス生成回路４２に対して、タグRAM４２ｈとデータRAM４２ｉによる先読みアドレスの予測をする機能を追加したことにより、先読みミスを減らすことが出来る。このため、先読みミスによって発生するウェイトが減り、プロセッサ１０，２０の停止時間が短くなるので、スループットが向上する。その上、実施例１よりもFlashメモリ６０ヘのアクセスが減るため、このFlashメモリ６０で消費される電力を抑えることも出来る。
【実施例３】
【００６４】
（実施例３の構成）
図６は、本発明の実施例３を示す図１中のキャッシュ・システム３０の一例の構成図である。
【００６５】
このキャッシュ・システム３０は、タグRAM３１、データRAM３２、キャッシュ・ミス・アドレス生成回路３３、バイパス・保持回路３４、及びデータ選択回路３６により構成されている。
【００６６】
ここで、アドレスP1ADDRとアクセス開始信号P1CSは、タグRAM３１、データRAM３２、及びキャッシュ・ミス・アドレス生成回路３３に入力される。タグRAM３１の判定結果は、ミス・ヒット判定信号MHCとして出力され、データ選択回路３６とキャッシュ・ミス・アドレス生成回路３３に与えられる。キャッシュ・ミス・アドレス生成回路３３は、アドレスCADDRとアクセス開始信号CCSを出力し、更に、データRAM３２に格納されている例えば各６４bitデータの有効／無効を示す信号をダダRAM３１に出力する。例えば６４bit幅のデータCDATAは、バイパス・保持回路３４に入力される。
【００６７】
バイパス・保持回路３４は、例えば、３２bit幅のデータをデータRAM３２に出力すると共に、３２bit幅のデータをバイパス経路３５を通ってデータ選択回路３６にも出力する。データRAM３２から出力される例えば３２bit幅のデータも、データ選択回路３６に与えられる。アービタ回路５０から与えられるアクセス終了信号CREADYは、キャッシュ・ミス・アドレス生成回路３３、バイパス・保持回路３４、及びデータ選択回路３６に入力される。データ選択回路３６からは、例えば３２bitのデータP1DATA、及びアクセス終了信号P1READYが出力され、プロセッサ１０に入力される。
【００６８】
図７は、図６中のキャッシュ・ミス・アドレス生成回路３３の一例を示す構成図である。
【００６９】
このキャッシュ・ミス・アドレス生成回路３３は、アドレス生成判定回路３３ａ、判定回路であるオア回路（以下「OR回路」という。）３３ｂ、カウントアップ回路３３ｃ、選択回路であるMux回路３３d、アクセス制御回路３３e、関数開始アドレス保持バッファ３３f、及び関数終了アドレス保持バッファ３３gより構成されている。
【００７０】
そして、入力されるアドレスP1ADDRとアクセス開始信号P1CSは、アドレス生成判定回路３３aに入力される。タグRAM３１からの入力信号であるミス・ヒット判定信号MHCも、アドレス生成判定回路３３aに入力される。アドレス生成判定回路３３aから出力されるアドレスの下位４，５bit目は、ライン位置信号LPとしてOR回路３３bに入力され、このOR回路３３bから出力される制御信号が関数開始アドレス保持バッファ３３fに入力される。アドレス生成判定回路３３aから出力されるアドレスは、関数開始アドレス保持バッファ３３f、カウントアップ回路３３c、及びMux回路３３dに入力される。
【００７１】
関数開始アドレス保持バッファ３３fと関数終了アドレス保持バッファ３３gの出力信号は、カウントアップ回路３３cに入力される。カウントアップ回路３３cの出力信号は、Mux回路３３dに入力され、このMux回路３３dの出力信号が、関数終了アドレス保持バッファ３３gとアクセス制御回路３３eに入力される。アクセス制御回路３３eの出力信号は、カウントアップ回路３３cに入力される。又、アクセス制御回路３３ｅは、アドレスCADDR、及びアクセス開始信号CCSを出力し、アクセス終了信号CREADYを入力する。
【００７２】
ここで、関数開始アドレス保持バッファ３３fと関数終了アドレス保持バッファ３３gには、関数のメモリ位置を予めセットする必要がある。キャッシュ・システム３０のタグRAM３１には、通常のキャッシュ・ラインの有効／無効ではなく、例えばそれぞれの６４bitデータに対する有効／無効が必要となる。本実施例３で使用するアービタ回路５０は、キャッシュ・システム３０からのライン・フェッチ、バッファ・システム４０からの先読みをFlashメモリ６０へのアクセス要求が途切れるまで連続して行う構成になっている。
【００７３】
（実施例３の動作）
図８は、本発明の実施例３（図６、図７）におけるマルチプロセッサシステムのキャッシュ・ミス、先読みミス時の動作を示す波形図である。この波形図では、プロセッサ１０とプロセッサ２０から同時にアクセスがあった場合の動作波形が示されている。
【００７４】
本実施例３のバッファ・システム４０は、実施例１、２と同様のものである。アービタ回路５０は、バッファ・システム４０を優先し、空いている時にキャッシュ・システム３０からのライン・フェッチを行う構成になっている。ライン・フェッチは、連続してまとめて行われる。
【００７５】
先ず、プロセッサ２０から出力されたアドレスA20は、バッファ・システム４０に送られ、ここで先読みミスが発生すると、アドレスBADDR（A20，A21）がアービタ回路５０に出力される。プロセッサ１０からも同時に、キャッシュ・システム３０を介してアドレスA10，A11がアービタ回路５０に出力されるが、このアービタ回路５０によって、アドレスA20，A21が優先し、Flashメモリ６０にアクセスされる。次のクロックCLKでは、バッファ・システム４０からアドレスA22，A23が出力されるため、Flashメモリ６０にはアドレスA22，A23のアクセスを行う。
【００７６】
次のクロックでは、バッファ・システム４０の先読みが一杯になるため、アドレスBADDRが出力されない。ここで、キャッシュ・システム３０からのアドレスA10，A11のアクセスを、Flashメモリ６０に対して行い、アドレスA10の１ライン分のアクセスが終わるまで、キャッシュ・システム３０がアクセス権を取り続ける。途中で、バッファ・システム４０からアドレスA24，A25のアクセスが来るが、ライン・フェッチが終了するまで待ってから再開する。この時、キャッシュ・システム３０は、以下のように動作する。
【００７７】
プロセッサ１０から出力されたキャッシュ・システム３０のアドレスP1ADDRで、タグRAM３１が検索され、データが有効であれば、ミス・ヒット判定信号MHCがキャッシュ・ヒットとしてデータ選択回路３６に送られ、データRAM３２から出力される３２bit幅のデータが、データ選択回路３６からデータP1DATAの形で出力される。ミス・ヒット判定信号MHCがキャッシュ・ヒットを示すため、キャッシュ・ミス・アドレス生成回路３３内のアドレス生成判定回路３３aで、アドレスを生成しないと判定され、以降のアドレス生成の動作が行われない。
【００７８】
プロセッサ１０から出力されたキャッシュ・システム３０のアドレスP1ADDRでタグRAM３１が検索され、データが無効であれば、ミス・ヒット判定信号MHCがキャッシュ・ミスとしてデータ選択回路３６とキャッシュ・ミス・アドレス生成回路３３に送られる。キャッシュ・ミス・アドレス生成回路３３では、アドレス生成判定回路３３aに入力されたミス・ヒット判定信号MHCがキャッシュ・ミスを示すため、以降のアドレス生成の動作を行う。アドレス生成判定回路３３aから出力されたアドレスは、ライン（３２byte）の先頭（最初の６４bit分）かどうかを判定するため、アドレスの下位４，５ビット目がOR回路３３bに入力される。
【００７９】
ラインの先頭の場合、OR回路３３bの出力信号は論理“０”となり、ライン・フェッチは、ラインの先頭から最後まで４回のアクセスが行われる。ラインの先頭でない場合、OR回路３３bの出力信号は論理“１”となり、ライン・フェッチは、プロセッサ１０から要求されたアドレスから、アドレスが生成されていき、ラインの最後の６４bitにアクセスした後、次にラインの先頭に戻るようにカウントアップ回路３３cでアドレスが生成されていく。
【００８０】
Mux回路３３dにより、初めにアドレス生成判定回路３３aの出力が選択され、以降はライン・フェッチが終わるまで、カウントアップ回路３３cの出力信号が選択される。又、OR回路３３bからの制御信号とアドレス生成回路３３aのアドレスで、関数開始アドレス保持バッファ３３fにアクセスされて検索される。
【００８１】
ここでヒットしていた場合、関数に分岐しているため、カウントアップ回路３３cにライン・フェッチを全て行わないという信号が送られる。この時、ラインの先頭でないアドレスから、ラインの最後のアドレスまでがフェッチされ、ラインの先頭に戻らず、ライン・フェッチが終了する。Mux回路３３dから出力されるアドレスに対して、全て関数終了アドレス保持バッファ３３gにアクセスが行われ、このバッファ３３ｇ内が検索される。ヒットしていた場合は、関数からリターンしているため、カウントアップ回路３３cにカウントアップの終了信号が送られ、以降のアドレス生成が行われない。アクセス制御回路３３eからは、６４bit幅のデータ用アドレスCADDRが出力される。
【００８２】
キャッシュ・ミス・アドレス生成回路３３から出力されたアドレスCADDRは、アービタ回路５０を通り、Flashメモリ６０にアクセスされる。Flashメモリ６０から読み出されたデータCDATAは、バイパス・保持回路３４に入力され、３２bitデータ毎にデ一タRAM３２に書き込まれていく。毎クロック６４bitデータがFlashメモリ６０から来るため、これがバイパス・保持回路３４に保持され、順番にデータRAM３２に書き込まれていく。バイパス・保持回路３４では１ライン分、書き込んでいる間は保持し、データRAM３２に書き込んでいる間にプロセッサ１０から要求のあったデータは、該バイパス・保持回路３４で保持しているデータを、バイパス経路３５からデータ選択回路３６に送り、このデータ選択回路３６からデータP1DATAが出力される。
【００８３】
以上のように、図８の動作の特徴は、バッファ・システム４０から一連のアドレスBADDR(A20，A21,A22,A23)が出力され、これがアービタ回路５０を通って一連のアドレスFADDR(A20，A21,A22,A23)がFlashメモリ６０へ入力され、次に、キャッシュ・システム３０から一連のアドレスCADDR（A10，A11,A12,A13,A14,A15,A16,A17)が出力され、これがアービタ回路５０を通って一連のアドレスFADDR（A10，A11,A12,A13,A14,A15,A16,A17)がFlashメモリ６０へ入力されると共に、Flashメモリ６０から２ウェイト遅れて６４bitのデータFDATA(D20,D21,D22,D23)が読み出され、以降同様の動作が繰り返される。
【００８４】
つまり、キャッシュ・システム３０とバッファ・システム４０から、まとまった一連のアドレスCADDR,BADDRが交互に出力され、アービタ回路５０を通って、そのアドレスCADDR,BADDRに対応するアドレスFADDRがFlashメモリ６０に入力され、２ウェイト遅れてFlashメモリ６０から６４bitのデータFDATAが読み出され、以降同様の動作が繰り返される。
【００８５】
（実施例３の効果）
アービタ回路５０がどちらか一方を連続して、アクセスするように調停する場合、実施例１、２の調停を行うより、キャッシュ・システム３０のライン・フェッチを早く終わらせて、次のフェッチ要求を行えるが、図８の動作波形のようにバッファ・システム４０のアドレスA24，A25を出力出来るようになっているにも関わらず、３クロックCLKのウェイトが発生してしまい、バッファ・システム４０側のレイテンシが大きくなっていた。
【００８６】
これを解消するために、本実施例３によれば、フェツチしても使用しない可能性の高い関数の前後の命令をフェッチしないようにすることで、不要な部分のライン・フェッチを待って、バッファ・システム４０の先読みが待たされることなく、アクセス出来るようになるため、バッファ・システム４０側のレイテンシが小さくなり、システム全体のスループットが向上する。
【実施例４】
【００８７】
（実施例４の構成）
図９は、本発明の実施例４におけるキャッシュ・ミス・アドレス生成回路の他の例を示す構成図であり、実施例３１の図７のキャッシュ・ミス・アドレス生成回路に対応している。なお、図９において、図７中の要素と共通の要素には共通の符号が付されている。
【００８８】
本実施例４のキャッシュ・ミス・アドレス生成回路は、図６中のキャッシュ・ミス・アドレス生成回路３３に相当する回路であり、図７のキャッシュ・ミス・アドレス生成回路から、関数開始アドレス保持バッファ３３f、及び関数終了アドレス保持バッファ３３gを削除した構成になっている。
【００８９】
ここで、入力されたアドレスP1ADDRとアクセス開始信号P1CSは、アドレス生成判定回路３３aに与えられる。アドレス生成判定回路３３aには、ミス・ヒット判定信号MHCも入力される。アドレス生成判定回路３３aの出力アドレスの下位４，５ビット目のライン位置信号LPは、OR回路３３bに入力され、この出力信号がカウントアップ回路３３cに入力される。アドレス生成判定回路３３aから出力されるアドレスは、カウントアップ回路３３cとMux回路３３dに与えられる。
【００９０】
カウントアップ回路３３cの出力信号も、Mux回路３３dに入力される。Mux回路３３dの出力信号は、アクセス制御回路３３eに入力される。アクセス制御回路３３eは、アドレスCADDR、及びアクセス開始信号CCSを出力し、アクセス終了信号CREADYを入力する回路である。又、アクセス制御回路３３eからは、次のカウントアップを行うための信号もカウントアップ回路３３cに出力される。
【００９１】
（実施例４の動作）
本実施例４のアービタ回路５０は、実施例３と同様の動作を行う。
アドレスP1ADDRがアドレス生成判定回路３３aに入力され、ミス・ヒット判定信号MHCにより、キャッシュ・ヒットであった場合、アドレス生成が行われない。キャッシュ・ミスであった場合、以降のアドレス生成の動作が行われる。
【００９２】
アドレス生成判定回路３３aにおいて、アドレス生成を行うと判定されると、ライン位置信号LPがOR回路３３bに送られる。OR回路３３bの出力信号が“０”の場合、キャッシュ・ラインの先頭であるため、ライン・フェッチはラインの先頭から、最後まで４回のアクセスが行われる。OR回路３３bの出力信号が“１”の場合、ラインの先頭でない（関数の開始や分岐後等）ため、カウントアップ回路３３cでラインの途中から、ラインの最後のアドレスまでがフェッチされ、ラインの先頭アドレスに戻ってフェッチが行われない。Mux回路３３dでは、アドレス生成回路３３aからのキャッシュ・ミスを起こしたアドレスを最初に選択し、以降のライン・フェッチをカウントアップ回路３３cからのアドレスを選択する。Mux回路３３dの出力信号は、アクセス制御回路３３eに入力され、３２bit幅データのアドレスから、６４bit幅データのアドレスCADDRに変換されて出力される。
【００９３】
（実施例４の効果）
本実施例４によれば、実施例３のように関数だけでなく、分岐によって、使用しない可能性の高い命令のフェッチを行わないため、ラインの途中から始まる分のスループットが向上するが、関数の終わりは認識できなくなる分は低下する。しかし、実施例３では、プログラムによって、予め関数の開始と終了アドレスをセットするという準備が必要であり、効率的ではなく、バッファを搭載しなくてはならないため、面積が大きくなってしまうという欠点がある。しかし、本実施例４では、バッファを搭載しないため、面積が削減でき、プログラムによって事前に準備する必要もなくなるが、同程度のスループットが得られる。
【００９４】
なお、本発明は、上記実施例１〜４に限定されず、種々の変形や利用形態が可能である。例えば、実施例１〜４では、Flashメモリ６０のデータ幅を６４bitとしたが、３２bit等の他のビット幅でも同様の効果が得られる。又、図１のマルチプロセッサシステムを構成する各回路ブロックは、図示以外の回路で構成しても良い。
【図面の簡単な説明】
【００９５】
【図１】本発明の実施例１を示すマルチプロセッサシステムの構成図である。
【図２】図１中のバッファ・システムの構成図である。
【図３】図２中の先読みアドレス生成回路の構成図である。
【図４】本発明の実施例１（図１〜図３）の動作波形図である。
【図５】本発明の実施例２を示す先読みアドレス生成回路の構成図である。
【図６】本発明の実施例３を示すキャッシュ・システムの構成図である。
【図７】図６中のキャッシュ・ミス・アドレス生成回路の構成図である。
【図８】本発明の実施例３（図６、図７）の動作波形図である。
【図９】本発明の実施例４を示すキャッシュ・ミス・アドレス生成回路の構成図である。
【図１０】従来のマルチプロセッサシステムの構成図である。
【符号の説明】
【００９６】
１０，２０      プロセッサ
３０      キャッシュ・システム
３１      タグRAM
３２      データRAM
３３      キャッシュ・ミス・アドレス生成回路
３４      バイパス・保持回路
３６，４３      データ選択回路
４０      バッファ・システム
４１      先読みバッファ
４２      先読みアドレス生成回路
５０      アービタ回路
６０      Flashメモリ
【図１】
2007115174.tif 000003
【図２】
2007115174.tif 000004
【図３】
2007115174.tif 000005
【図４】
2007115174.tif 000006
【図５】
2007115174.tif 000007
【図６】
2007115174.tif 000008
【図７】
2007115174.tif 000009
【図８】
2007115174.tif 000010
【図９】
2007115174.tif 000011
【図１０】
2007115174.tif 000012