(57)【要約】【課題】  比較的高速に動作する場合にあっても適正なタイミングで命令列を読み出すことによって高い処理能力が得られるプロセッサを提供する。【解決手段】  メモリ１０１から命令をフェッチするフェッチ部１０７ａ〜１０７ｄの各々が、転送された命令を蓄積するフェッチ・バッファ１０９ａ〜１０９ｄの1つ、フェッチ・バッファ１０９ａ〜１０９ｄのうち対応するものの命令データの蓄積状態に基づいて命令データ転送の緊急度を設定すると共に、命令データ転送を要求する命令データ転送要求信号と緊急度を示す信号を出力して命令データ転送を要求するプログラム制御部１０５ａ〜１０５ｄの１つを備える。また、緊急度に基づいて命令データ転送の優先順位を設定し、設定された優先順位にしたがってフェッチ部１０７ａ〜１０７ｄのフェッチ要求にかかる命令を前記メモリから読み出すメモリ制御部１０３によってプロセッサを構成する。【選択図】  図１
2006195705.tif 000002
【特許請求の範囲】
【請求項１】
命令が保存されているメモリから命令をフェッチするプロセッサであって、
命令をフェッチするフェッチ手段と、当該フェッチ手段によって要求された命令を、命令を要求したフェッチ手段に転送するメモリ制御手段とを含み、
前記フェッチ手段が、
転送された命令を蓄積する命令蓄積手段と、
前記命令蓄積手段に蓄積された命令のうち実際に実行される命令である実命令の状態に基づいて、該フェッチ手段における命令取得の緊急性の度合いを示す緊急度設定手段と、
前記緊急度設定手段によって設定された緊急度を前記メモリ制御手段に出力し、命令の転送を要求するフェッチ要求手段と、を備え、
前記メモリ制御手段は、
前記フェッチ要求手段によって出力された緊急度に基づいて命令転送の優先順位を決定するフェッチ優先順位設定手段と、
前記フェッチ優先順位設定手段によって設定された優先順位にしたがってフェッチ要求にかかる命令を前記メモリから読み出すメモリアクセス制御手段と、
を備えることを特徴とするプロセッサ。
【請求項２】
複数の命令を並列実行するプロセッサであって、
命令をフェッチする複数のフェッチ手段と、当該フェッチ手段によって要求された命令を、命令を要求したフェッチ手段に転送するメモリ制御手段とを含み、
前記フェッチ手段が、
転送された命令を蓄積する命令蓄積手段と、
前記命令蓄積手段に蓄積された命令のうちの実際に実行される命令である実命令の状態に基づいて、該フェッチ手段における命令取得の緊急性の度合いを示す緊急度設定手段と、
前記緊急度設定手段によって設定された緊急度を前記メモリ制御手段に出力し、命令の転送を要求するフェッチ要求手段と、を備え、
前記メモリ制御手段は、
前記フェッチ要求手段によって出力された緊急度に基づいて命令転送の優先順位を決定するフェッチ優先順位設定手段と、
前記フェッチ優先順位設定手段によって設定された優先順位にしたがってフェッチ要求にかかる命令を前記メモリから読み出すメモリアクセス制御手段と、
を備えることを特徴とするプロセッサ。
【請求項３】
前記緊急度設定手段は、命令蓄積手段に蓄積された命令の蓄積数に応じて前記緊急度を設定することを特徴とする請求項１または２に記載のプロセッサ。
【請求項４】
前記命令蓄積手段がデータ長の異なる複数の命令を蓄積する場合、前記緊急度設定手段は、命令のデータ長に基づいて命令の蓄積数を判定することを特徴とする請求項３に記載のプロセッサ。
【請求項５】
前記フェッチ手段によって分岐命令が実行されたことを検出する分岐命令検出手段をさらに備え、前記緊急度設定手段は、分岐命令検出手段の状態に対応する緊急度を設定することを特徴とする請求項１から４のいずれか１項に記載のプロセッサ。
【請求項６】
複数の前記フェッチ手段のうち第１フェッチ手段が第１命令を要求した後であって、かつ第１命令の転送が完了する以前に第２フェッチ手段が第２命令を要求し、第２命令の転送が第１命令の転送よりも先に完了した場合、前記優先順位設定手段は、前記第１命令の命令転送の優先順位の設定をより高位の順位に更新することを特徴とする請求項２から５のいずれか１項に記載のプロセッサ。
【請求項７】
前記メモリ制御手段は、前記メモリとシングルポート接続し、前記フェッチ手段のいずれかに命令を１つずつ転送することを特徴とする請求項１から６のいずれか１項に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサにかかり、特に複数のタスクまたはスレッドを並列に実行可能なプロセッサに関する。
【背景技術】
【０００２】
一般的に、プロセッサは、パイプライン処理を実行するため、各処理に専用のハードウェア構成を備えている。このようなプロセッサを複数設け、プロセッサのすべてを統括的に制御する構成は、マルチスレッドプロセッサ等と呼ばれている。マルチスレッドプロセッサの多くは、複数のプロセッサ間で互いにハードウェア構成の一部を共用することにより、ハードウェアリソースを効率的に使用し、回路の大規模化を抑止している。
【０００３】
マルチスレッドプロセッサによれば、複数の命令を並列に実行することができ、プロセッサの処理速度をシングルスレッドのプロセッサに比べて格段に高めることができる。
マルチスレッドプロセッサに関する従来技術としては、例えば、特許文献１ないし３に記載された発明が掲げられる。特許文献１の発明のマイクロコンピュータは、複数のＣＰＵ（Central Processing Unit）でなるマイクロコンピュータが、メモリから命令を読み出すよう構成されている。
【０００４】
特許文献１に記載された発明は、メモリのメモリ空間をＣＰＵごとのプログラム領域に分割し、分割されたプログラム領域のオフセットアドレスをレジスタに格納する。そして、ＣＰＵがメモリにアクセスした場合、ＣＰＵに対応したオフセットアドレスと命令フェッチアドレスとを加算してアクセスすべきプログラム領域を選択する。このような特許文献１によれば、プログラマがメモリのバンクを意識することなくソフトウェアを開発することができ、メモリ空間が有効に活用できるという効果を得ることができる。
【０００５】
また、特許文献２に記載された発明では、ＣＰＵと、ＣＰＵによって命令が読み出される命令メモリと、データが読み出されるデータメモリと、命令メモリ、データメモリでマッピング可能な共用メモリバンクを設けている。特許文献２によれば、ソフトウェアの開発時、命令メモリやデータメモリに必要なメモリ量を正確に見積もることができない場合にも対応可能な集積回路が提供できる。
【０００６】
さらに、特許文献３に記載された発明は、複数のプロセッサと、複数のプロセッサによってアクセスされる共有メモリを設ける。そして、各プロセッサに共有メモリとの間で連続したアドレスを持つローカルメモリを設け、このローカルメモリに共有メモリ内のサブページを記憶させている。このような特許文献３の発明によれば、プロセッサ間のスヌープ処理にかかる負荷を軽減することができる。
【特許文献１】特開平９−３２５９１０号公報
【特許文献２】特開２００４−１７１２３２号公報
【特許文献３】特開平１１−１２００７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、マルチスレッドプロセッサでは、複数のプロセッサの各々によってメモリから命令が読み出される。このため、マルチスレッドプロセッサにあっては、シングルスレッドのプロセッサに比べて命令列を高速に読み出し、適正なタイミングで処理することが必要になる。そして、プロセッサが命令を適正なタイミングで読み出すことができない場合、マルチスレッドプロセッサの全てのプロセッサで実行されているプログラムが、メモリからの命令の読み出し待ちにより停止する可能性がある。なお、このような要因でプログラムが停止することを、一般的にメモリ・ストールという。
【０００８】
しかしながら、上記した特許文献１ないし３は、いずれもマルチスレッドプロセッサに命令を適正なタイミングで供給することを目的にしてなされたものではない。こため、特許文献１ないし３の構成では、例えば２００ＭＨｚ程度の高速でプロセッサを動作させることを考えた場合、動作に充分な読み出し速度を実現することが難しい。このため、従来技術を適用したプロセッサでは、高速で動作する場合のメモリ・ストールの発生を抑えることはできず、動作速度の制限によってプロセッサの処理能力が制限される。
【０００９】
さらに、特許文献１ないし特許文献３は、いずれもメモリをバンク分けし、並列に命令列を読み出すことによって命令の読み出しを高速化し、メモリ・ストールを防いでいる。
メモリをバンク分けする構成は、マルチスレッドプロセッサの動作速度を高めることに有利である。ただし、バンク分けされたメモリは、一般的に各バンクに異なる種類のデータを保存する。このため、複数種類のデータのいずれにも適正なメモリ空間をバンクに設定しない限り、複数のプロセッサからの要求が1つのバンクに集中し処理性能を低下させる要因になる。さらに、複数のバンクのうちデータが保存されない空き領域が生じるものが発生し、メモリの使用効率が低下する可能性がある。
【００１０】
また、従来技術によれば、マルチポートを採用して命令の読み出しを高速化するものがある。しかし、マルチポートの構成は比較的コストがかかるため、より低コストのシングルポートを採用することが望ましい。バンク分けされたメモリとマルチポート接続するプロセッサの構成を図１１に例示する。
本発明は、上記した点に鑑みてなされたものであり、比較的高速に動作する場合にあっても適正なタイミングで命令列を読み出すことができ、高い処理能力が得られるプロセッサを提供することを目的とする。また、本発明は、適正なタイミングで命令列を読み出すことが可能であるためにメモリのバンク分けを避けてメモリの利用効率を高め、しかもシングルポートを採用して回路規模を抑えると共に低コスト化を実現できるプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１１】
以上の課題を解決するため、本発明のプロセッサは、命令が保存されているメモリから命令をフェッチするプロセッサであって、命令をフェッチするフェッチ手段と、当該フェッチ手段によって要求された命令を、命令を要求したフェッチ手段に転送するメモリ制御手段とを含み、前記フェッチ手段が、転送された命令を蓄積する命令蓄積手段と、前記命令蓄積手段に蓄積された命令のうち実際に実行される命令である実命令の状態に基づいて、該フェッチ手段における命令取得の緊急性の度合いを示す緊急度設定手段と、前記緊急度設定手段によって設定された緊急度を前記メモリ制御手段に出力し、命令の転送を要求するフェッチ要求手段と、を備え、前記メモリ制御手段は、前記フェッチ要求手段によって入力された緊急度に基づいて命令転送の優先順位を決定するフェッチ優先順位設定手段と、前記フェッチ優先順位設定手段によって設定された優先順位にしたがってフェッチ要求にかかる命令を前記メモリから読み出すメモリアクセス制御手段とを備えることを特徴とする。
【００１２】
このような発明によれば、フェッチ手段に転送された命令を蓄積し、蓄積された命令のうち実際に実行される命令である実命令の状態に基づいてフェッチ手段における命令取得の緊急性の度合いを設定することができる。そして、設定された緊急度をメモリ制御手段に出力して命令の転送を要求する。さらに、メモリ制御手段が、出力された緊急度に基づいて命令転送の優先順位を決定し、設定された優先順位にしたがってフェッチ要求にかかる命令をメモリから読み出すことができる。
【００１３】
このため、本発明は、比較的高速に動作する場合にあってもメモリに対するアクセス速度を高めることなく適正なタイミングで命令列を読み出すことができ、メモリ・ストールを防ぐことが可能なプロセッサを提供することができる。
また、本発明は、命令のフェッチを並行して行わずに適正なタイミングで命令列を読み出すことができ、メモリ・ストールを防ぐことが可能である。このため、命令をバンク分けすることを避けることによってメモリの利用効率を高め、しかもシングルポートを採用して回路規模を抑えると共に低コスト化を実現できるプロセッサを提供することができる。
【００１４】
また、本発明のプロセッサは、複数の命令を並列実行するプロセッサであって、命令をフェッチする複数のフェッチ手段と、当該フェッチ手段によって要求された命令を、命令を要求したフェッチ手段に転送するメモリ制御手段とを含み、前記フェッチ手段が、転送された命令を蓄積する命令蓄積手段と、前記命令蓄積手段に蓄積された命令のうちの実際に実行される命令である実命令の状態に基づいて、該フェッチ手段における命令取得の緊急性の度合いを示す緊急度設定手段と、前記緊急度設定手段によって設定された緊急度を前記メモリ制御手段に出力し、命令の転送を要求するフェッチ要求手段と、を備え、前記メモリ制御手段は、前記フェッチ要求手段によって出力された緊急度に基づいて命令転送の優先順位を決定するフェッチ優先順位設定手段と、前記フェッチ優先順位設定手段によって設定された優先順位にしたがってフェッチ要求にかかる命令を前記メモリから読み出すメモリアクセス制御手段と、を備えることを特徴とする。
【００１５】
このような発明によれば、複数のフェッチ手段の各々が転送された命令を蓄積し、蓄積された命令のうち実際に実行される命令である実命令の状態に基づいてフェッチ手段における命令取得の緊急性の度合いを設定することができる。そして、設定された緊急度をメモリ制御手段に出力して命令の転送を要求する。さらに、メモリ制御手段が、出力された緊急度に基づいて命令転送の優先順位を決定し、設定された優先順位にしたがってフェッチ要求にかかる命令をメモリから読み出すことができる。
【００１６】
このため、本発明は、比較的高速に動作する場合にあってもメモリに対するアクセス速度を高めることなく適正なタイミングで命令列を読み出すことができ、メモリ・ストールを防ぐことが可能なプロセッサを提供することができる。
また、本発明は、命令のフェッチを並行して行う場合にあっても適正なタイミングで命令列を読み出すことができ、メモリ・ストールを防ぐことが可能である。このため、命令を並列に実行するいわゆるマルチスレッドプロセッサ等にあっても命令をバンク分けすることを避けあてメモリの利用効率を高め、しかもシングルポートを採用して回路規模を抑えると共に低コスト化を実現できるプロセッサを提供することができる。
【００１７】
また、本発明は、前記緊急度設定手段が、実際に実行される命令の蓄積数に応じて前記緊急度を設定することを特徴とする。
このような発明によれば、処理すべき命令が不足してメモリ・ストールが発生する可能性が高いフェッチ手段のフェッチを優先的に実行することができる。このため、メモリ・ストールを効果的に防ぐことができる。
【００１８】
また、本発明のプロセッサは、前記フェッチ蓄積手段がデータ長の異なる複数の実行予定命令を蓄積する場合、前記緊急度設定手段は、実行予定命令のデータ長に基づいて命令の蓄積数を判定することを特徴とする。
このような発明によれば、データ長が可変長の命令を扱う場合にも、フェッチ蓄積手段に蓄積されている命令の蓄積数を正確に判別することができる。このため、より適正なタイミングで命令列を読み出すことができる。
【００１９】
また、本発明のプロセッサは、前記フェッチ手段によって分岐命令がフェッチされたことを検出する分岐命令検出手段をさらに備え、前記緊急度設定手段は、前記分岐命令検出手段が、該緊急度設定手段に対応するフェッチ手段による分岐命令のフェッチを検出したことによって緊急度を設定することを特徴とする。
このような発明によれば、分岐命令を実行したことによってフェッチ蓄積手段に蓄積されている命令がクリアされるフェッチ手段のフェッチを優先して実行することができる。このため、メモリ・ストールを効果的に防ぐことができる。
【００２０】
また、本発明のプロセッサは、複数の前記フェッチ手段のうち第１フェッチ手段が第１命令を要求した後であって、かつ第１命令の転送が完了する以前に第２フェッチ手段が第２命令を要求し、第２命令の転送が第１命令の転送よりも先に完了した場合、前記優先順位設定手段は、前記第１命令の命令転送の優先順位の設定をより高位の順位に更新することを特徴とする。
【００２１】
このような発明によれば、フェッチの追越しが発生した場合、先に要求された緊急度の低いフェッチが長時間待機させられて実質的に実行できなくなることを防ぐことができる。
また、本発明のプロセッサは、前記メモリ制御手段と前記メモリとをシングルポート接続し、前記フェッチ手段のいずれかに命令を１つずつフェッチさせることを特徴とする。
【００２２】
このような発明によれば、シングルポートを採用して回路規模を抑えると共に低コスト化を実現できるプロセッサを提供することができる。
【発明を実施するための最良の形態】
【００２３】
以下、図を参照して本発明に係るプロセッサの実施形態１、実施形態２を説明する。
（実施形態１）
図１は、本発明の実施形態１、実施形態２に共通のプロセッサを説明するための図である。実施形態１のプロセッサは、複数のプロセッサＡ、Ｂ、Ｃ、Ｄを含み、各プロセッサでハードウェアリソースを一部共有して構成されるプロセッサである。このような実施形態１のプロセッサは、プロセッサＡ〜Ｄが並行して命令を実行することができる。
【００２４】
実施形態１のプロセッサは、命令が保存されているメモリ１０１を備え、メモリ１０１から命令を読み出す（フェッチする）ものである。このため、プロセッサは、命令をフェッチする複数のフェッチ部１０７ａ、１０７ｂ、１０７ｃ、１０７ｄを備えるプロセッサ本体１と、フェッチ部１０７ａ〜１０７ｄによって要求された命令を命令を要求したフェッチ部に転送するメモリ制御部１０３とを含んでいる。
【００２５】
実施形態１のメモリ１０１は、命令が記憶される記憶領域がバンクされていない非バンク構成を有する。このようなメモリ１０１は、多くの命令を記憶領域にリニアに保存することができ、記憶領域を効率よく使用することが可能である。
また、実施形態１では、メモリ制御部１０３が、メモリ１０１とシングルポート接続してメモリから命令データを１つずつ読み出している。このような実施形態１は、メモリ１０１との接続にかかる回路の大規模化及びコストを抑えることができる。
【００２６】
プロセッサ本体１に含まれるプロセッサＡ〜Ｄは、いずれもフェッチ部と、フェッチ部でフェッチされた命令を解釈するデコード部と、デコードされた命令にかかる演算を実行するＡＬＵ（Arithmetic and Logical Unit）とを備えている。実施形態１では、各プロセッサＡ〜Ｄは、フェッチ部１０７ａ〜１０７ｄのいずれかを有し、デコード部１１３とＡＬＵ１１５とを共有している。
【００２７】
また、フェッチ部１０７ａ〜１０７ｄの各々は、メモリ１０１からプログラム等にしたがって実行が予定される命令をフェッチする。そして、フェッチされた命令を蓄積するフェッチ・バッファと、フェッチ・バッファにおける命令の蓄積状態を管理するフェッチ・バッファ管理部と、を備えている。なお、フェッチされた命令のうち、いったんフェッチ・バッファに蓄積されても分岐等の発生によってクリアされ、実際には実行がなされない場合もある。実行がなされる命令を、本明細書では実命令と記して実行されない命令と区別する場合もある。
【００２８】
さらに、プロセッサＡ〜Ｄでは、フェッチ部１０７ａ〜１０７ｄの各々に対応したプログラム制御部１０５ａ、１０５ｂ、１０５ｃ、１０５ｄを備えている。プログラム制御部１０５ａ〜１０５ｄは、プログラムカウンタ２０９を備え、プログラムのアドレス演算を行う。さらに、分岐判定部２１０を備え、分岐命令をデコードし、分岐条件のステータスが整った時点で分岐の判定が行われ、プログラムカウンタに分岐アドレスを渡し、分岐先のアドレスを命令アドレスとして出力する。フェッチ・バッファ管理部によって管理されているフェッチ・バッファにおける実命令の蓄積状態に基づいて、対応するフェッチ部の命令データ転送の緊急性の度合い（緊急度）を設定する。
【００２９】
実施形態１では、プログラム制御部１０５ａ〜１０５ｄが、設定された緊急度を示す信号（緊急度信号）を生成し、この信号を、命令データ転送を要求するための信号と共にメモリ制御部１０３に出力する。緊急度信号、命令データ転送を要求するための信号を出力したことによって命令データ転送の要求がなされるため、プログラム制御部１０５ａ〜１０５ｄは、実施形態１のフェッチ要求手段として機能する。
【００３０】
以上の構成において、プログラム制御部、フェッチ・バッファ、フェッチ・バッファ管理部は、いずれもプロセッサＡ〜Ｄの各々に１つずつ設けられている。本明細書では、以降、プログラム制御部をプログラム制御部１０５ａ、１０５ｂ、１０５ｃ、１０５ｄと記し、プロセッサＡ〜Ｄとの対応関係を符号中のａ、ｂ、ｃ、ｄの文字にて示す。また、フェッチ・バッファをフェッチ・バッファ１０９ａ、１０９ｂ、１０９ｃ、１０９ｄと記し、プロセッサＡ〜Ｄとの対応関係を同様にして示す。さらに、フェッチ・バッファ管理部を、フェッチ・バッファ管理部１１１ａ、１１１ｂ、１１１ｃ、１１１ｄと記し、プロセッサＡ〜Ｄとの対応関係を同様にして示す。
【００３１】
一方、メモリ制御部１０３は、緊急度信号が示す緊急度に基づいて命令データ転送の優先順位を設定し、設定された優先順位にしたがってメモリ１０１から命令を読み出すことによって要求されたフェッチを実行する。
さらに、図示した実施形態１のプロセッサは、ＡＬＵ１１５の演算の結果を保存するレジスタ部１１７ａ〜１１７ｄを備えている。レジスタ部１１７ａ〜１１７ｄは、いずれもプロセッサＡ〜Ｄの各々に対応して設けられ、対応するプロセッサの演算結果等を保存している。
【００３２】
次に、以上述べたプロセッサ本体１、メモリ制御部１０３についてより詳細に構成及び動作を説明する。
（１）プロセッサ本体
図２は、プロセッサ本体１の構成をより詳細に示した図であって、特にプロセッサＡのフェッチ部１０７ａ及びプログラム制御部１０５ａと、他のプロセッサと共有のデコード部１１３及びＡＬＵ１１５とを示している。なお、プロセッサ本体１に含まれる複数のプロセッサＡ〜Ｄは、いずれもプログラム制御部とフェッチ部とを１つずつ有し、デコード部１１３とＡＬＵ１１５とを共有するという同様の構成を有している。このため、本明細書では、説明の簡単のため、以降、プロセッサＡの構成及び動作を説明し、他のプロセッサの説明を同様のものとして一部略すものとする。
【００３３】
以下、フェッチ部１０７ａ及びプログラム制御部１０５ａ、他のプロセッサと共有のデコード部１１３及びＡＬＵ１１５の各構成について説明し、さらに各構成の動作について図２を用いて説明する。
Ｉ  フェッチ部１０７ａ
フェッチ部１０７ａにフェッチされた実行が予定されている命令のデータ（命令データ）は、フェッチ・バッファ１０９ａに蓄積される。フェッチ・バッファ１０９ａは、３つのバッファ２００、２０１、２０２を有し、同時に複数の命令データを蓄積することができる。フェッチ・バッファ管理部１１１ａは、３つのバッファ２００、２０１、２０２における実行予定の命令データの蓄積状態を判別し、フェッチ・バッファ１０９ａに蓄積されている命令データの個数等を含む情報を検出することができる。
【００３４】
フェッチ・バッファ管理部１１１ａは、フェッチ・バッファ１０９ａにおける命令データの蓄積状態を検出して緊急度信号を生成し、プログラム制御部１０５ａに出力する。実施形態１では、フェッチ・バッファ管理部１１１ａがフェッチ・バッファ１０９ａの状態を常に監視し、状態信号として、信号E（Empty）及び信号ＥL（Empty_Level）をプログラム制御部１０５ａに出力している。信号Ｅは、フェッチ・バッファ１０９に蓄積されている命令データがなくなったことを示す信号である。また、信号ＥLは、フェッチ・バッファ１０９ａに現在蓄積されている命令データの数を示す信号である。信号Ｅ及び信号ＥLの具体的な例については後述する。
【００３５】
なお、フェッチ部１０７ａにフェッチされた命令データは、先ず、フェッチ・バッファ１０９ａのバッファ２０２に蓄積される。フェッチ・バッファ管理部１１１ａは、バッファ２０２に蓄積された命令データを順次バッファ２００に向けて送ると共に、後にフェッチされた命令データを空きが生じたバッファに蓄積する。そして、バッファ２００に蓄積されている命令データは、次の動作時にデコード部１１３に出力され、ＡＬＵ１１５における演算の実行に使用される。
【００３６】
IＩ  デコード部１１３及びＡＬＵ１１５
デコード部１１３は、バッファ２００に蓄積されていた命令データをデコードする。そして、命令データを解釈し、解釈の結果と共にＡＬＵ１１５に送る。ＡＬＵ１１５は、デコード部１１３から受け取った命令データの演算を実行し、この結果をレジスタ部１１７ａに保存する。
【００３７】
レジスタ部１１７ａは、レジスタファイル２０６と、分岐条件ステータスレジスタ２０５とを備えている。レジスタファイル２０６は、演算結果や演算のためにロードされたデータ等が保存されるレジスタファイルである。また、分岐条件ステータスレジスタ２０５は、ＡＬＵ１１５で実行された演算の演算結果の状態を保存するためのレジスタである。大小比較、一致比較、加減算結果の符号等がステータスレジスタに保存される。
【００３８】
また、レジスタ部１１７ａは、分岐命令がデコードされた場合、プログラム制御部１０５ａに分岐アドレスＩ及び分岐アドレスＪを出力する。さらに、分岐条件ステータスレジスタ２０５から分岐条件のステータスを示す分岐条件ステータス信号をプログラム制御部１０５ａに出力する。
IＩI  プログラム制御部１０５ａ
プログラム制御部１０５ａは、命令データ読み出し制御部２０７と、プログラムカウンタ２０９と、分岐判定部２１０とを備えている。命令データ読み出し制御部２０７は、プロセッサＡにおけるフェッチを全般的に制御する。また、プログラムカウンタ２０９は、プロセッサＡで実行されているプログラムの進行状態を示すカウンタであって、フェッチ部１０７ａと共にフェッチ手段として機能する。分岐判定部２１０は、レジスタ部１１７ａから分岐アドレスＩ及びＡＬＵ１１５から分岐アドレスＪ、分岐条件ステータス信号を入力し、対応するデコード部１１３によって分岐命令がデコードされたことを検出する構成である。
【００３９】
命令データ読み出し制御部２０７は、メモリ制御部１０３に命令データ転送要求信号である信号Ｓreq（RD_REQ）を出力する。信号Ｓreqを入力したメモリ制御部１０３は、命令データ転送の要求によってメモリ１０１から命令データを読み出し、フェッチを実行する。命令の読出しに成功した場合、メモリ制御部１０３は、信号Ｓreqに対して信号Ｓready（RD_READY）を返す。プログラムカウンタ２０９は、信号Ｓreqによって要求された命令データのメモリ１０１のアドレスを示す命令アドレス信号を出力する。
【００４０】
また、実施形態１の命令データ読み出し制御部２０７は、緊急度決定テーブル２０８を備えている。命令データ読み出し制御部２０７は、分岐判定部から分岐制御信号を用いて分岐を実行することが決定した場合、緊急度を最も高め命令データを取得する。一方、分岐が成立しない場合、信号Ｅ及び信号ＥLを緊急度決定テーブル２０８に対照し、フェッチ部１０７ａの命令データ転送の緊急度を決定する。そして、決定した緊急度を示す信号Ｐ（PRIORITY）を生成する。そして、信号Ｐを、信号Ｓreq、命令アドレス信号と共にメモリ制御部１０３に出力する。
【００４１】
図３は、緊急度決定テーブル２０８の一例を示した図である。図３の緊急度決定テーブル２０８は、バッファ２００〜２０２が、いずれも３２ｂｉｔの容量を持ち、命令データが１命令１６ｂｉｔの固定長データであるとした場合の例を示している。このような例では、バッファ２００〜２０２の各々が２命令を蓄積することが可能であって、フェッチ・バッファ１０９ａは、最大６個の命令データを蓄積することができる。
【００４２】
図３に示した緊急度決定テーブル２０８は、フェッチ・バッファ１０９ａの状態と、各状態に応じた命令データの緊急度とを示している。フェッチ・バッファ１０９ａの状態としては、フェッチ部１０７ａが分岐命令による分岐が成立したことと、フェッチ・バッファ１０９ａに蓄積されている命令データの数（残り命令数）とが設定されている。
実施形態１では、緊急度決定テーブル２０８に示すように、フェッチ部１０７ａに蓄積されている実行予定の命令データの蓄積数に応じて緊急度が示す緊急性の度合いを設定している。なお、実施形態１では、フェッチ・バッファ１０９ａに蓄積されている命令データの蓄積数がより少ない場合により高い緊急度を設定するものとした。
【００４３】
また、実施形態１では、分岐命令をデコードしたことをデコード部１１３が検出したことに基づいても緊急度を設定するものとした。なお、実施形態１では、分岐命令にあっても割り込みによる分岐と分岐命令による分岐とを区別し、割込みによる分岐命令がデコードされたとき、より高い緊急度の緊急度信号を生成する。
以上述べたプロセッサＡは、以下のように動作する。すなわち、フェッチ・バッファ管理部１１１ａは、フェッチ・バッファ１０９ａに蓄積されている実行予定の命令データの数を示す信号ＥLを生成し、常時プログラム制御部１０５ａに出力している。また、フェッチ・バッファ１０９ａに蓄積されている命令データがなくなった場合、信号Ｅを出力し、フェッチ・バッファ１０９ａにおける命令データの蓄積状態を命令データ読み出し制御部２０７に通知する。
【００４４】
一方、デコード部１１３は、命令データを解釈し、この結果から分岐命令がデコードされたことを検出することができる。この場合、デコード部１１３は、分岐デコード信号を出力し、分岐命令がデコードされたことを分岐判定部２１０に通知する。さらに、レジスタ部１１７ａおよびＡＬＵ１１５は、分岐アドレスＩ、分岐アドレスＪ、分岐条件ステータス信号を分岐判定部２１０に出力する。
【００４５】
分岐判定部２１０は、分岐デコード信号、分岐アドレスＩ及び分岐アドレスＪ、分岐条件ステータス信号を入力する。そして、分岐アドレスＩ及び分岐アドレスＪから分岐先のアドレスである分岐アドレスを算出する。さらに、分岐判定部２１０は、分岐条件ステータス信号に基づいて分岐制御信号を生成する。分岐制御信号は、プログラムカウンタ２０９に入力されると共に、命令データ読み出し制御部２０７に入力される。
【００４６】
命令データ読み出し制御部２０７は、信号E、信号ＥLを入力し、緊急度決定テーブル２０８に対照する。信号Ｅが入力された場合、命令データ読み出し制御部２０７は、フェッチ・バッファ１０９ａに蓄積されている命令データがないと判定し、緊急度２を示す信号Ｐを生成する。また、命令データ読み出し制御部２０７は、信号ＥLが入力された場合、信号ＥLが示すフェッチ・バッファ１０９ａに蓄積されている命令データの数に応じて緊急度３から８のいずれかを示す信号Ｐを生成する。
【００４７】
また、命令データ読み出し制御部２０７は、分岐判定部２１０から分岐制御信号を入力し、緊急度決定テーブル２０８に照合する。そして、分岐判定部２１０によって自装置に対応するフェッチ部１０７ａが分岐命令をデコードしたことが検出された場合、フェッチ・バッファ１０９ａの残り命令数が１以上である場合よりも緊急度が高い緊急度信号を生成している。
【００４８】
分岐命令が実行した場合に残り命令数が１以上である場合よりも緊急度が高い緊急度信号を生成する理由は、処理の分岐が生じたとき、フェッチ・バッファ１０９ａに蓄積されている命令データが全てクリアされるためである。つまり、分岐命令がデコードされ、この命令が実行された場合、フェッチ・バッファ１０９ａは空になる。このため、本実施形態では、命令データがフェッチされない場合には直ちにメモリ・ストールが発生する可能性が生じるため比較的高い緊急度の信号Ｐを生成するものとした。
【００４９】
さらに、本実施形態では、命令データ読み出し制御部２０７が、分岐制御信号が示す分岐命令の割込みによる分岐、命令による分岐の別を判断し、判断の結果に基づいて緊急度０または緊急度１の信号Ｐを生成する。生成された信号Ｐは、信号Ｓreq及び命令アドレス信号と共にメモリ制御部１０３に出力される。
以上、実施形態１では、命令データが固定長データであるものとして実施形態１のプロセッサの動作を述べた。しかし、実施形態１は、固定長の命令データを取り扱う構成に限定されるものでなく、可変長の命令データを扱うことも可能である。可変長の命令データを取り扱う場合、プログラム制御部１０５ａは、例えばアドレス信号の出力時、あるいは信号Ｓreadyの入力時に命令データのデータ長を検出する。
【００５０】
そして、命令データ読み出し制御部２０７が、検出されたデータ長と信号ＥLに含まれる命令データのフェッチ・バッファ１０９ａにおける蓄積量とを対照し、フェッチ・バッファ１０９ａに現実に蓄積されている可変長の命令データ数を得る。
（２）メモリ制御部
図４は、メモリ制御部１０３の構成をより詳細に示した図であって、メモリ制御部１０３とメモリ１０１とを示している。プロセッサ本体１のプロセッサＡ〜Ｄとの間でデータを授受するプロセッサインターフェイス部４０１を備えている。プロセッサインターフェイス部４０１には、プロセッサ本体１のプロセッサＡ〜Ｄが備えるプログラム制御部１０５ａ〜１０５ｄの各々から信号Ｓreq、信号Ｐが入力される。また、プロセッサインターフェイス部４０１には、プログラム制御部１０５ａ〜１０５ｄの各々から信号Ｓreqが要求する命令データのアドレスがアドレス信号として入力される。
【００５１】
メモリ制御部１０３は、プロセッサインターフェイス部４０１を介して信号Ｓreq、信号Ｐ、命令アドレスにより、プロセッサＡ〜Ｄごとに、フェッチ時にアクセスすべきメモリ１０１のアドレス、命令データ転送の緊急度の信号を受け取る。そして、要求されたデータ転送が実行されたことを示す信号Ｓreadyと共に命令データをプロセッサＡ〜Ｄの各々に送出する。
【００５２】
メモリ制御部１０３は、プログラム制御部１０５ａによって入力された信号Ｐが示す緊急度に基づいて、要求されたデータ転送の優先順位を設定する優先順位設定手段として機能する要求リストテーブル４０４及びアドレスデコード部４０２を備えている。また、設定された優先順位にしたがってメモリ１０１から命令を読み出すメモリアクセス制御部４０５を備えている。
【００５３】
図５は、要求リストテーブル４０４の一例を示す図である。図示した要求リストテーブル４０４は、緊急度に応じて優先度が設定されたメモリ１０１に対するアクセス要求の一覧を示している。図中に示したプロセッサＩＤとは、プロセッサＡ〜Ｄの各々を識別するためのＩＤであり、図５中にはＡ、Ｂ、Ｃ、Ｄとして示す。緊急度とは、信号Ｐによって表されるプロセッサへのデータ転送の緊急性である。現在の優先度とは、各プロセッサの緊急度に応じて設定された競合するフェッチ間の優先度である。要求リストテーブル４０４において、命令データ転送要求は、優先度が高いものから順に配列されて小さいアクセスリスト番号が割り当てられている。なお、アクセスリスト番号は、リストのポインタである。
【００５４】
以上述べた構成は、以下のように動作する。すなわち、信号Ｓreqは、要求リストテーブル４０４、優先順位制御部４０３、アドレスデコード部４０２の各々に出力される。信号Ｓreqは出力されたプロセッサを特定するためのプロセッサＩＤを含んでいて、プロセッサＩＤは、要求リストテーブル４０４に設定される。要求リストテーブル４０４では、信号Ｓreqが入力されたことによって命令データ転送要求がなされたことを検出すると共に、命令データ転送を要求したプロセッサが特定される。
【００５５】
また、信号Ｓreqを出力したプロセッサは、同時に信号Ｐ及び命令アドレスを出力する。信号Ｐは、優先順位制御部４０３に入力される。優先順位制御部４０３は、信号Ｐに基づいて信号Ｓreqのデータ転送の緊急度を判定する。判定された緊急度は、要求リストテーブル４０４に出力され、命令データ転送の要求に対応して設定される。一方、命令アドレスは、アドレスデコード部４０２に入力される。アドレスデコード部４０２は、入力された命令アドレスを要求リストテーブル４０４に出力し、要求リストテーブル４０４は命令アドレスを命令データ転送要求に対応させて設定する。
【００５６】
命令データ転送要求は、緊急度が高いものからアクセスリスト番号が付されて要求リストテーブル４０４に設定される。また、プロセッサＩＤは、要求に対応して要求リストテーブル４０４に設定される。
以上述べた動作により、命令データ転送を要求したプロセッサを特定するＩＤ及び命令データ転送の緊急度が、緊急度にしたがう順番で要求リストテーブル４０４に設定される。優先順位制御部４０３は、要求リストテーブル４０４に設定された命令データ転送の要求に対し、緊急度にしたがって優先順位を付す。
【００５７】
また、フェッチ部１０７ａ〜１０７ｄは、要求リストテーブル４０４の設定がいったんなされた後も順次命令データ転送を要求する。後になされた命令データ転送要求の緊急度が先に優先順位が設定された命令データ転送要求よりも高い緊急度を持つ場合、優先順位制御部４０３は、要求リストテーブル４０４に優先度更新情報を出力し、いったん設定された優先順位を更新する。このため、要求リストテーブル４０４に設定された優先順位は、以降になされた命令データ転送要求の緊急度に応じて変動することになる。
【００５８】
すなわち、優先順位制御部４０３は、要求された命令データ転送の緊急度を要求リストテーブルに設定する。そして、先に緊急度が設定された命令データ転送要求による命令データ転送が実行される以前であって、かつ、より高い緊急度を示す信号Ｐが後に入力された場合、この情報を優先度更新情報として要求リストテーブル４０４に出力する。要求リストテーブル４０４では、優先度更新情報に基づいて、緊急度がより高い命令データ転送要求に対し、先に要求された緊急度がより低い命令データ転送要求よりも高い優先順位を設定する。
【００５９】
一方、緊急度がより低い命令データ転送要求の優先順位は、後になされた緊急度がより高い命令データ転送要求によって低下する。このような場合、優先順位制御部４０３は、要求リストテーブル４０４を更新し、未実行の命令データ転送要求の要求リストテーブル４０４における優先順位を新たに設定する。新たに設定された優先順位の情報は、要求リストテーブル４０４から現在優先度として優先順位制御部４０３に通知される。現在優先度は、以降の優先順位制御部４０３における優先順位の制御に使用される。
【００６０】
図６は、メモリ制御部１０３による優先順位の設定を変更する処理を説明するためのフローチャートである。優先順位制御部４０３は、優先順位設定の処理を開始するにあたり、先ず、要求リストテーブル４０４を初期化する（Ｓ６０１）。そして、メモリ制御部１０３は、信号Ｓreqによって命令データ転送要求があるか否か判断する（Ｓ６０２）。命令データ転送要求がある場合（Ｓ６０２：Ｙｅｓ）、さらにアクセスすべきアドレス等の情報を入力する（Ｓ６０３）。また、ステップＳ６０２において命令データ転送要求がないと判断された場合（Ｓ６０２：Ｎｏ）、命令データ転送の要求が起こるまで待機する。
【００６１】
次に、メモリ制御部１０３は、要求リストテーブル４０４のアクセスリスト番号ｋをＮ−１と定義する（Ｓ６０４）。なお、Ｎは、図５に示した要求リストテーブル４０４に設定されている命令データ転送要求の総数である。図５に示したアクセスリスト番号は、０から始まっている。このため、アクセスリスト番号ｋの最大値は、Ｎ−１によって得られる。
【００６２】
次に、メモリ制御部１０３は、ステップＳ６０２で要求された命令データ転送の緊急度が、アクセスリスト番号ｋの緊急度よりも高いか否か判断する（Ｓ６０５）。比較の結果、今回要求された命令データ転送の緊急度がアクセスリスト番号ｋの緊急度よりも高くない場合（Ｓ６０５：Ｎｏ）、今回要求された命令データ転送の優先順位を、要求リストテーブル４０４のアクセスリスト番号ｋに設定されていた優先順位の直後の順位に設定する（Ｓ６０９）。
【００６３】
ステップＳ６０５、６０９の処理によれば、要求された命令データ転送の緊急度が、アクセスリスト番号ｋの緊急度と等しい場合、等しい緊急度を持つ命令データ転送要求のうち、後に要求された命令データ転送を先に要求された命令データ転送の直後に設定することができる。
また、メモリ制御部１０３は、ステップＳ６０５において、今回要求された命令データ転送の緊急度がアクセスリスト番号ｋの緊急度よりも高いと判断した場合（Ｓ６０５：Ｙｅｓ）、アクセスリスト番号ｋの優先度を下げるよう要求リストテーブル４０４を更新する（Ｓ６０６）。そして、アクセスリスト番号ｋから１を減じてｋとし（Ｓ６０７）、アクセスリスト番号ｋから１を減じ結果、ｋが０になったか否か判断する（Ｓ６０８）。
【００６４】
ステップＳ６０８の判断の結果、メモリ制御部１０３は、アクセスリスト番号ｋが０でない場合に要求された命令データ転送の緊急度がアクセスリスト番号ｋの緊急度よりも高いか否か再び判断する（Ｓ６０８：Ｎｏ）。また、アクセスリスト番号ｋが０になった場合（Ｓ６０８：Ｙｅｓ）、次の命令データ転送要求があるか否かを判断する。
次に、以上述べたようにして設定された優先度に基づいて行われる実施形態１のプロセッサの動作を説明する。
【００６５】
図７、図８は、プロセッサ動作を説明するためのタイミングチャートである。図７は、命令データ転送要求の優先順位を緊急度に応じて設定した場合の動作を示すタイミングチャートである。図８は、実施形態１との比較のため掲げた従来のマルチスレッドプロセッサの動作を示すタイミングチャートである。
図７、図８のいずれにおいても、プロセッサＡ〜Ｄの各々について信号Ｓreq、信号Ｐ、信号Ｓreadyのタイミング及び命令データ読み出しのタイミングを示し、最上段にプロセッサのクロックサイクル（ＣＬＫ）を示している。図８〜図１０において、各信号を発生するプロセッサをＡ、Ｂ、Ｃ、Ｄで示す。
【００６６】
プロセッサＡ_ＲＥＱはプロセッサＡが発生する信号Ｓreqである。また、プロセッサＡ_ＰＲＩＯＲＩＴＹはプロセッサＡが発生する信号Ｐを示し、プロセッサＡ_ＲＥＡＤＹはプロセッサＡが発生する信号Ｓreadyである。さらに、プロセッサＡ_ＤＡＴＡは、命令データ転送要求によって命令データが読み出されるタイミングを指す。なお、以上の表記は、プロセッサＡの部分をプロセッサＢ、プロセッサＣ、プロセッサＤに置き換えることにより、プロセッサＡ以外のプロセッサによって発生される信号を表すものとする。
【００６７】
図７によれば、先ず、１サイクル目でプロセッサＡがメモリ制御部１０３に対して緊急度１の命令データ転送要求をし、次サイクルの２サイクル目で要求に応じた命令データの読み出しが開始される。そして、命令データ読み出し完了のタイミングで信号Ｓreadyが発生し、プロセッサ本体１の側に命令データ転送が実行されたことを通知することが分かる。
【００６８】
また、図７に示すように、実施形態１では、プロセッサＣが３サイクル目で緊急度２の命令データ転送要求をし、プロセッサＣの命令データ転送要求によってなされる命令データの読出しが完了する以前にプロセッサＡが緊急度０の命令データ転送要求をしている。このとき、メモリ制御部１０３は、プロセッサＣの命令データ転送要求に応じる命令データの読出しよりもプロセッサＡの命令データ転送要求に応じる命令データの読出しを先に実行する。
【００６９】
一方、図８に示した従来のフェッチ動作では、プロセッサＡ〜Ｄによってなされた命令データ転送要求を順に実行している。このような従来の動作に比べ、図７に示した実施形態１のプロセッサの動作では、フェッチ・バッファに命令データが残り少ないプロセッサの命令データ転送を優先的に実行することができる。このため、従来のプロセッサとメモリに対するアクセス速度が同じであってもプロセッサ全体を円滑に動作させ、メモリ・ストール等の不具合を防ぐことができる。
【００７０】
さらに、円滑に動作できる実施形態１のプロセッサは、メモリ１０１を非バンク構成としても適切なタイミングでフェッチ部１０７ａ〜１０７ｄが命令を命令データ転送することができる。このため、メモリにデータをリニアに割り当て、バンク分けするよりもメモリ１０１の使用効率を高めることができる。また、実施形態１のプロセッサは、円滑に動作できるため、メモリ１０１との間をシングルポートで接続しても充分メモリ・ストール等の不具合が発生することを抑えることができる。このため、メモリとプロセッサとの間の接続にかかる回路規模をより小型化し、コストをも低廉化することに有利である。
【００７１】
なお、以上述べた実施形態１では、本発明のプロセッサを命令が並列に実行できるマルチスレッドプロセッサ等の構成としている。しかし、実施形態１のプロセッサは命令を並列に実行できる構成に限定されるものではなく、シングルプロセッサとして構成することも可能である。
【００７２】
（実施形態２）
ところで、実施形態１では、比較的緊急度が低い命令データ転送要求が、後により緊急度の高い命令データ転送要求が次々となされた場合に長時間実行されない可能性が生じる。つまり、実施形態１のように、命令データ転送要求の優先順位を緊急度にのみ応じて設定した場合、図７に示したように、３サイクル目で要求された緊急度２のプロセッサＣの命令データ転送は、後になされたプロセッサＡ及びプロセッサＢによる命令データ転送要求によって１０サイクル目まで実行されることがない。このような動作によれば、比較的緊急度の低い命令データ転送要求が長時間待機させられて実質的に実行できなくなる可能性がある。
【００７３】
実施形態２は、メモリ・ストール防止の効果を維持しながらこのような実施形態１の可能性をなくすため、あるフェッチ部（第１フェッチ部）が命令データ転送（第１フェッチ）を要求した後であって、かつ第１の命令データ転送が完了する以前に他のフェッチ部（第２フェッチ部）がメモリ１０１に命令データ転送（第２フェッチ）を要求し、第２の命令データ転送が第１命令データ転送よりも先に実行された場合、優先順位制御部４０３は、第１の命令データ転送の優先順位の設定をより高位の順位に更新するものとした。
【００７４】
すなわち、例えば、プロセッサＡがメモリ制御部１０３に対して緊急度３の命令データ転送要求をした後であって、かつ要求が受け付けられる以前にプロセッサＣが緊急度１の命令データ転送を要求したものとする。このような場合、実施形態２では、実施形態１と同様に、緊急度がより高いプロセッサＣの命令データ転送要求を優先し、プロセッサＣがプロセッサＡよりも先に命令データを命令データ転送する。
【００７５】
そして、プロセッサＡの命令データ転送要求の緊急度を１つ高め、緊急度２に設定する。なお、実施形態２では、先に要求された命令データ転送より後に要求された命令データ転送を先に実行する動作を命令データ転送要求の追越しとも記す。
次に、例えばプロセッサＤが、緊急度１の命令データ転送を要求したものとする。このとき、優先順位制御部４０３は、プロセッサＡの命令データ転送要求の緊急度２とプロセッサＤの命令データ転送要求の緊急度１とを比較する。そして、より緊急度が高いプロセッサＤの命令データ転送要求にプロセッサＡよりも高い優先順位に設定する。また、プロセッサＡの命令データ転送要求の緊急度をさらに１つ高めて緊急度１に設定する。
【００７６】
次に、例えばプロセッサＣが、緊急度１の命令データ転送を要求した場合、優先順位制御部４０３は、プロセッサＡの命令データ転送要求の緊急度１とプロセッサＣの命令データ転送要求の緊急度１とを比較する。このとき、プロセッサＡの命令データ転送要求の緊急度とプロセッサＣの命令データ転送要求の緊急度とは同じである。実施形態２では、このとき、先になされた命令データ転送要求を優先するものとし、プロセッサＡの命令データ転送要求の優先順位をプロセッサＣの命令データ転送要求よりも高く設定する。
【００７７】
図９は、実施形態２の要求リストテーブルを例示する図である。図９に示す要求リストテーブルでは、緊急度４のプロセッサＣによる命令データ転送要求が、より緊急度の高い命令データ転送要求よりも高い優先順位に設定されている。このような設定は、比較的緊急度の低かった命令データ転送要求が追越されるたびに緊急度を高め、後になされた緊急度のより高い命令データ転送要求より高い優先順位を獲得したことによってなされたものである。
【００７８】
図１０は、命令データ転送要求の追越しが起こった場合に追越された先の命令データ転送要求の緊急度を高める場合の動作を示すタイミングチャートである。図１０によれば、図７に示したのと同様に、プロセッサＣが３サイクル目で緊急度２の命令データ転送要求を発生している。そして、この要求による命令データ転送が実行される以前、プロセッサＡが、緊急度０の命令データ転送要求を行っている。
【００７９】
このような場合、図１０に示した動作では、図７に示した動作と同様に、メモリ制御部１０３がプロセッサＣの命令データ転送要求に先んじてプロセッサＡに命令データ転送をさせる。ただし、命令データ転送要求の追越しを考慮して優先順位を設定するので、３サイクル目でなされたプロセッサＤの命令データ転送要求の緊急度は２から１に変更される。このため、図１０の例では、プロセッサＣの命令データ転送要求の優先順位は、さらに後になされたプロセッサＢの命令データ転送要求（緊急度１）と同じになる。緊急度が同じである場合、先になされた命令データ転送要求が優先される。このため、メモリ制御部１０３は、プロセッサＣの命令データ転送要求をプロセッサＢの命令データ転送要求に優先して実行する。
【００８０】
以上述べたように、図１０に示した動作は、図７に示した動作よりもプロセッサＣの命令データ転送要求の待機時間を短縮し、比較的緊急度の低い命令データ転送要求が実質的に実行できなくなることを防ぐことができる。
このような実施形態２は、命令データ転送の追越しが発生した場合、先になされた命令データ転送要求の緊急度を高め、プロセッサのメモリ・ストールを抑えつつ、比較的緊急性が低い命令データ転送要求が実質的に実行できなくなることを防ぐことができる。
【００８１】
なお、以上述べた実施形態２では、命令データ転送の追越しが発生したとき、追越された命令データ転送の緊急度を１つ高めるものとした。しかし、実施形態２は、このような構成に限定されるものでなく、プロセッサの仕様や動作、実行する処理に応じていくつ緊急度を高めるものであってもよい。
【図面の簡単な説明】
【００８２】
【図１】本発明の実施形態１、実施形態２に共通のプロセッサを説明するための図である。
【図２】図１に示したプロセッサ本体の構成をより詳細に示した図である。
【図３】図２に示した緊急度決定テーブルの一例を示した図である。
【図４】図１に示したメモリ制御部の構成をより詳細に示した図であって、
【図５】図４に示した実施形態１の要求リストテーブルの一例を示す図である。
【図６】実施形態１の優先順位の設定を変更する処理を説明するためのフローチャートである。
【図７】実施形態１のプロセッサの動作を示すタイミングチャートである。
【図８】実施形態１との比較のため掲げた従来のマルチスレッドプロセッサの動作を示すタイミングチャートである。
【図９】実施形態２の要求リストテーブルの一例を示す図である。
【図１０】実施形態２のプロセッサの動作を示すタイミングチャートである。
【図１１】バンク分けされたメモリにマルチスレッドプロセッサがアクセスする構成を例示した図である。
【符号の説明】
【００８３】
１  プロセッサ本体、１０１  メモリ、１０３  メモリ制御部
１０５ａ，１０５ｂ，１０５ｃ，１０５ｄ  プログラム制御部
１０７ａ，１０７ｂ，１０７ｃ，１０７ｄ  フェッチ部
１０９ａ，１０９ｂ，１０９ｃ，１０９ｄ  フェッチ・バッファ
１１１ａ  フェッチ・バッファ管理部，１１３  デコード部
１１７ａ，１１７ｂ，１１７ｃ，１１７ｄ  レジスタ部
２００，２０１，２０２  バッファ
２０５  分岐条件ステータスレジスタ、２０６  レジスタファイル
２０７  命令データ読み出し制御部、２０８  緊急度決定テーブル
２０９  プログラムカウンタ、２１０  分岐判定部
４０１  プロセッサインターフェイス部、４０２  アドレスデコード部
４０３  優先順位制御部、４０４  要求リストテーブル、４０５  メモリアクセス制御部
【図１】
2006195705.tif 000003
【図２】
2006195705.tif 000004
【図３】
2006195705.tif 000005
【図４】
2006195705.tif 000006
【図５】
2006195705.tif 000007
【図６】
2006195705.tif 000008
【図７】
2006195705.tif 000009
【図８】
2006195705.tif 000010
【図９】
2006195705.tif 000011
【図１０】
2006195705.tif 000012
【図１１】
2006195705.tif 000013