(57)【要約】【課題】複数のプログラムを同時に実行するプロセッサにおいて、キャッシュミスによる影響をより効果的に抑える。【解決手段】複数のプログラムを同時に実行するプロセッサにおいて、主記憶装置またはキャッシュから第１と第２のプログラムの命令語が読み出され、読み出された命令語は第１の記憶手段にキューイングされる。第２と第３の記憶手段は、それぞれ、第１と第２のプログラムに含まれる命令語の実行に要するサイクル数見積りのための実行サイクル数見積り情報を記憶し、第１と第２のキャッシュミス予測器は、それぞれ、実行サイクル数見積り情報をそれぞれ読み出す。命令語のスケジューリング位置は、この実行サイクル数見積り情報の内容に従って決定される。好ましくは、実行サイクル数見積り情報は、キャッシュミスの検出／非検出に応じて動的に変更される。【選択図】図１
2010026583.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムを同時に実行するプロセッサであって、
前記複数のプログラムの中の第１のプログラムの実行位置を示す第１のプログラムカウンタと、
前記複数のプログラムの中の第２のプログラムの実行位置を示す第２のプログラムカウンタと、
第１のプログラムカウンタの内容により主記憶装置またはキャッシュから第１のプログラムの命令語を読み出す第１の命令読み出し機構と、
第２のプログラムカウンタの内容により主記憶装置またはキャッシュから第２のプログラムの命令語を読み出す第２の命令読み出し機構と、
第１及び第２の命令読み出し機構により読み出された命令語をキューイングするための第１の記憶手段と、
第１の記憶手段から取り出した命令語のうちロード機能を有する命令を、キャッシュにアクセスして実行するキャッシュ制御機構と、
第１の記憶手段から取り出した命令語により、ロード機能により取り出したデータを用いて演算を行う演算機構と、
第１のプログラムに含まれる命令語の実行に要するサイクル数見積りのための実行サイクル数見積り情報を記憶する第２の記憶手段と、
第２のプログラムに含まれる命令語の実行に要するサイクル数見積りのための実行サイクル数見積り情報を記憶する第３の記憶手段と、
第１のプログラムカウンタの内容により第２の記憶手段のエントリ位置を特定して実行サイクル数見積り情報を読み出す第１のキャッシュミス予測器と、
第２のプログラムカウンタの内容により第３の記憶手段のエントリ位置を特定して実行サイクル数見積り情報を読み出す第２のキャッシュミス予測器と、
第１および第２の命令読み出し機構から入力される命令語を第１の記憶手段にキューイングする命令スケジュール機構であって、前記命令語が、前記キャッシュ制御機構によって処理される第１の命令語の実行結果を必要とし前記演算機構によって処理される第２の命令語である場合、前記第１の命令語に対応する、第１または第２のキャッシュミス予測器からの前記実行サイクル数見積り情報の内容に従って、第１の記憶手段における前記第２の命令語のスケジューリング位置を決定し、一方、前記実行サイクル数見積り情報に従うとスケジューリング可能な位置が存在しない場合には前記第２の命令語のスケジューリングを保留する命令スケジュール機構と
を備えることを特徴とするプロセッサ。
【請求項２】
請求項１に記載されたプロセッサであって、
前記キャッシュ制御機構は、第１の記憶手段から取り出した命令語についてキャッシュミスを検出した場合には、前記命令語の実行サイクル数見積り情報を記憶している第２または第３の記憶手段における前記命令語のエントリ位置に、キャッシュミス検出情報を送り、第２または第３の記憶手段は、前記キャッシュミス検出情報を受け取ると、前記命令語の実行サイクル数見積り情報を増加させまたは最大値に飽和させ、前記キャッシュ制御機構は、前記命令語についてキャッシュミスを検出しない場合には、第２または第３の記憶手段の前記命令語のエントリ位置に、キャッシュミス非検出情報を送り、第２または第３の記憶手段は、前記キャッシュミス非検出情報を受け取ると、前記命令語の実行サイクル数見積り情報を減少させまたは最小値に飽和させることを特徴とするプロセッサ。
【請求項３】
請求項２に記載されたプロセッサであって、
第１の記憶手段は、キューイングされる命令語を、その命令語がどのプログラムに属するかを示す情報とともに記憶し、
さらに、第１および第２のプログラムの中の１つのプログラムに属する命令語が一定時間に実行された数を測定する第１の測定手段を備え、
前記第１の測定手段により測定された実行数がしきい値より小さい場合に、前記第２および第３の記憶手段の中の他方は、記憶されている命令語の実行サイクル数見積り情報を増加することを特徴とするプロセッサ。
【請求項４】
請求項１または２に記載されたプロセッサであって、
さらに、第１のプログラムと第２のプログラムのうちいずれを優先的に実行するかを指定する情報を記憶し、前記キャッシュ制御機構に送る第４の記憶手段を備え、
第１の記憶手段は、キューイングされる命令語を、その命令語がどのプログラムに属するかを示す情報とともに記憶し、
さらに、第４の記憶手段によって指定されたプログラムが走行中である場合における、第４の記憶手段によって指定されずかつキャッシュミスの発生頻度がしきい値より低いプログラムの走行時間と、第４の記憶手段によって指定されずかつキャッシュミスの発生頻度がしきい値より高いプログラムの走行時間との第１の比と、第４の記憶手段によって指定されたプログラムが走行中でない場合における、第４の記憶手段によって指定されずかつキャッシュミスの発生頻度がしきい値より低い前記プログラムの走行時間と、第４の記憶手段によって指定されずかつキャッシュミスの発生頻度がしきい値より高い前記プログラムの走行時間との第２の比を測定する第２の測定手段を備え、
前記命令スケジュール機構は、第１の比が第２の比より小さいと第２の測定手段が測定したとき、第１の比を第２の比よりも大きくするようにスケジューリングを行うことを特徴とするプロセッサ。
【請求項５】
請求項１または２に記載されたプロセッサであって、
第１の記憶手段は、キューイングされる命令語を、その命令語がどのプログラムに属するかを示す情報とともに記憶し、
さらに、第１のプログラムと第２のプログラムのうちいずれを優先的に実行するかを指定する情報を記憶し、前記キャッシュ制御機構に送る第４の記憶手段と、
第４の記憶手段によって指定されたプログラムに属する命令語が一定時間に実行された数を測定する第３の測定手段を備え、
前記第３の測定手段は、測定された前記実行数がしきい値より低い場合に、当該事象をイベントにより通知することを特徴とするプロセッサ。
【請求項６】
請求項１または２に記載されたプロセッサであって、
第１の記憶手段は、キューイングされる命令語を、その命令語がどのプログラムに属するかを示す情報とともに記憶し、
さらに、第１のプログラムと第２のプログラムのうちいずれを優先的に実行するかを指定する情報を記憶し、前記キャッシュ制御機構に送る第４の記憶手段と、
第４の記憶手段によって指定されたプログラムに属する命令語が一定時間に実行された数を測定する第３の測定手段と、
第４の記憶手段によって指定されないプログラムに属する命令語の実行を一時的に停止させる停止手段とを備え、
前記第３の測定手段は、測定された前記実行数がしきい値より低い場合には、前記停止手段に、第４の記憶手段によって指定されないプログラムの実行を一時的に停止させることを特徴とするプロセッサ。
【請求項７】
請求項１または２に記載されたプロセッサであって、
第１の記憶手段は、キューイングされる命令語を、その命令語がどのプログラムに属するかを示す情報とともに記憶し、
さらに、複数のプログラムのうちいずれを優先的に実行するかを指定する情報を記憶し、前記キャッシュ制御機構に送る第４の記憶手段と、
第４の記憶手段によって指定されないプログラムに属する命令語が一定時間に実行された数を測定する第４の測定手段と、
第４の記憶手段によって指定されないプログラムごとに命令語の実行を一時的に停止させる停止手段を備え、
前記第４の測定手段は、測定された前記実行数がしきい値より低い場合には、前記停止手段に、指定されない個々のプログラムの実行を一時的に停止させることを特徴とするプロセッサ
【請求項８】
請求項１または２に記載されたプロセッサであって、
さらに、第１のプログラムと第２のプログラムのうちいずれを優先的に実行するかを指定する情報を記憶し、前記キャッシュ制御機構に送る第４の記憶手段を備え、
第１の記憶手段は、キューイングされる命令語を、その命令語がどのプログラムに属するかを示す情報とともに記憶し、
前記キャッシュ制御機構は、第４の記憶手段によって指定されたプログラムに属さない命令語を実行し、かつ、その実行においてキャッシュミスを検知した場合、キャッシュミス検知情報を前記命令スケジュール機構に通知し、
前記命令スケジュール機構は、前記キャッシュミス検知情報を受け取った場合に、第１の記憶手段において、実行された前記命令語が属するプログラムにおいて、前記命令語の実行結果を必要とする命令語を含む後続命令を特定し、全て消去する
ことを特徴とするプロセッサ。
【請求項９】
請求項８に記載されたプロセッサであって、
前記命令スケジュール機構は、前記キャッシュミスが解消されたとの情報を前記キャッシュ制御機構から通知されると、第１の記憶手段に対して、消去した前記後続命令のキューイングを再開することを特徴とするプロセッサ。
【請求項１０】
請求項８に記載されたプロセッサであって、
前記キャッシュ制御機構が、第４の記憶手段によって指定されたプログラムに属さない前記第１の命令語を実行し、かつ、キャッシュミスを検知した場合であっても、前記命令スケジュール機構は、第２または第３の記憶手段から読み出した前記第２の命令語の実行サイクル数見積り情報に従うと前記第２の命令語のスケジューリング可能な位置が存在しない場合には、前記第１の命令語が属するプログラムを構成する命令語の消去を行わないことを特徴とするプロセッサ。
【請求項１１】
請求項８に記載されたプロセッサであって、
さらに、第４の記憶手段によって指定されたプログラムに属する命令語が一定時間に実行された数を測定する第３の測定手段を備え、
前記命令スケジュール機構は、測定された前記実行数がしきい値より小さい場合に、第１の記憶手段において、前記命令語が属しないプログラムに属する命令語を特定し、全て消去することを特徴とするプロセッサ。
【請求項１２】
請求項８に記載されたプロセッサであって、
さらに、第４の記憶手段によって指定されたプログラムに属する命令語が一定時間に実行された数を測定する第３の測定手段を備え、
前記測定手段により測定された前記実行数がしきい値より小さい場合に、当該事象をイベントにより通知することを特徴とするプロセッサ。
【請求項１３】
請求項１または２に記載されたプロセッサであって、さらに、
第１のプログラムと第２のプログラムのうちいずれを優先的に実行するかを指定する情報を記憶する第４の記憶手段と、
キューイングされている外部キャッシュリクエストを、前記外部キャッシュリクエストがどのプログラムに属するかを示す情報とともに記憶する外部キャッシュリクエストキューと、
第４の記憶手段により指定されたプログラムに属さない命令語により外部キャッシュミスを検知した場合に、前記外部キャッシュリクエストキューの中から、前記指定されたプログラムに属さない命令語に関連する外部キャッシュリクエストを特定し消去する外部キャッシュコントローラと
を備えることを特徴とするプロセッサ。
【請求項１４】
請求項１または２に記載されたプロセッサであって、
さらに、第１のプログラムと第２のプログラムのうちいずれを優先的に実行するかを指定する情報を記憶する第４の記憶手段と、
キューイングされている人出力リクエストを、前記入出力リクエストキューがどのプログラムに属するかを示す情報とともに記憶する入出力リクエストキューと、
第４の記憶手段により指定されたプログラムに属さない命令語により入出力待ちを検知した場合に、前記入出力リクエストキューの中から、前記指定されたプログラムに属さない命令語に関連する入出力リクエストを特定し消去する入出力コントローラと
を備えることを特徴とするプロセッサ。
【請求項１５】
請求項１３または１４に記載されたプロセッサであって、さらに、第４の記憶手段(優先フラグ)によって指定されたプログラムに属する命令語が一定時間に実行された数を測定する第３の測定手段を備え、前記第３の測定手段は前記実行数がしきい値より小さいことを検出したときに、当該事象をイベントにより通知することを特徴とするプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプログラムを同時に実行するプロセッサに関する。
【背景技術】
【０００２】
現在までに、大規模サーバや高性能ワークステーションに使われる高性能プロセッサは、ほとんどホモジニアス・マルチスレッド型プロセッサへ移行している。このような利用環境では、システム全体のスループット向上が重視され、ＯＳはゆるやかなプロセススケジューリングによりプロセス間の公平性を保障するのが一般的である。一方、組み込み機器の多機能化および高性能化に伴い、組み込み機器用プロセッサについても、マルチスレッド型プロセッサへの移行が始まっている。ただし、低消費電力でなければならない点、および、特定のプロセス（音声、画像などの処理）については最低性能の保障が要求される点が、従来型のホモジニアス・マルチプロセッサシステムと異なっている。
【０００３】
複数のプログラムを同時に実行するプロセッサにおいて、低電力化に関しては、異種命令混在実行方式が採用できる。ここで、最低性能保障の障害となるのが、予測できないキャッシュミスによる性能低下である。キャッシュミスによる影響を抑えて最低性能を保障するための従来の技術について以下に説明する。
【０００４】
（１）１つの手法では、プロセスごとにキャッシュを分割する。しかし、キャッシュ分割により各スレッドが利用できるキャッシュ容量が半減すること自体、キャッシュミスを増加させるので、この手法は本末転倒である。
【０００５】
（２）Jichuan Chanらによる論文（Cooperative Cache Partitioning for Chip Multiprocessors (ICS2007)）に記載された手法では、共有キャッシュのまま、キャッシュの利用区分を変化させる。すなわち、マルチコアの共有キャッシュの割り付けを動的に変更してQoS保障を図る。キャッシュの利用区分を変化させることにより、ある範囲のワーキングセットの組合せに対してミス率を若干下げることは可能である。しかし、キャッシュミス自体を制御できないので、QoS保障が粗い。
【０００６】
（３）A. Fedorovaらによる論文（Improving Performance Isolation on Chip Multiprocessors via an OS Schedule (PACT0007)）に記載された手法では、ＯＳのスケジューラによって性能保障をしないプロセスの優先度を意図的に下げてQoS保障を図る。ＯＳが特定プロセスでないプロセスの優先度を下げることで、なるべく多くのタイムスライスを特定プロセスに集中できるが、優先度が低いプロセスの実行が極端に低下する危険があり、ある一定以上に性能を保障することが困難である。
【０００７】
（４）特開２００１−３５６９０３号公報に記載された手法では、キャッシュミス発生時に後続命令をパイプラインからすべてフラッシュすることにより、キャッシュミスによる悪影響を削減し、QoS保障を図る。しかし、この手法では、ストールの原因になっているかどうかにかかわらず、全ての命令をフラッシュするため、フラッシュが不要な場合にもフラッシュするので、フラッシュされたプロセスの性能が悪化しすぎてしまうという問題がある。
【０００８】
したがって、複数のプログラムを同時に実行するプロセッサにおいて、キャッシュミスによる影響をより効果的に抑えることが望まれる。また、特定のプロセスについての最低性能保障を効果的に行えることが望まれる。
【特許文献１】特開２００１−３５６９０３号公報
【非特許文献１】Jichuan Chan and Gurindar S. Sohi, Cooperative Cache Partitioning for Chip Multiprocessors, ICS2007, p242 (ACM)
【非特許文献２】A. Fedorova, M. Seltzer, and M.D. Smith，Improving Performance Isolation on Chip Multiprocessors via an OS Scheduler, PACT2007, p25 (IEEE Computer Society)
【非特許文献３】片岡晶人、中西正樹、山下茂、中島康人、VLIW型命令キューを持つOROCHIの命令スケジューリング機構、情報研報、2007-ARC-172,pp.25-30(2007)
【非特許文献４】中田尚、中島康彦、異種命令混在実行のためVLIW型命令キューの設計、IPSJ SIG Technical Report, 2007-ARC-175, pp.89-94(2007)
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、複数のプログラムを同時に実行するプロセッサにおいて、キャッシュミスによる影響を抑えることである。
【課題を解決するための手段】
【００１０】
本発明に係るプロセッサは、複数のプログラムを同時に実行するプロセッサである。このプロセッサは、前記複数のプログラムの中の第１のプログラムの実行位置を示す第１のプログラムカウンタと、前記複数のプログラムの中の第２のプログラムの実行位置を示す第２のプログラムカウンタと、第１のプログラムカウンタの内容により主記憶装置またはキャッシュから第１のプログラムの命令語を読み出す第１の命令読み出し機構と、第２のプログラムカウンタの内容により主記憶装置またはキャッシュから第２のプログラムの命令語を読み出す第２の命令読み出し機構と、第１及び第２の命令読み出し機構により読み出された命令語をキューイングするための第１の記憶手段と、第１の記憶手段から取り出した命令語のうちロード機能を有する命令を、キャッシュにアクセスして実行するキャッシュ制御機構と、第１の記憶手段から取り出した命令語により、ロード機能により取り出したデータを用いて演算を行う演算機構と、第１のプログラムに含まれる命令語の実行に要するサイクル数見積りのための実行サイクル数見積り情報を記憶する第２の記憶手段と、第２のプログラムに含まれる命令語の実行に要するサイクル数見積りのための実行サイクル数見積り情報を記憶する第３の記憶手段と、第１のプログラムカウンタの内容により第２の記憶手段のエントリ位置を特定して実行サイクル数見積り情報を読み出す第１のキャッシュミス予測器と、第２のプログラムカウンタの内容により第３の記憶手段のエントリ位置を特定して実行サイクル数見積り情報を読み出す第２のキャッシュミス予測器と、第１および第２の命令読み出し機構から入力される命令語を第１の記憶手段にキューイングする命令スケジュール機構であって、前記命令語が、前記キャッシュ制御機構によって処理される第１の命令語の実行結果を必要とし前記演算機構によって処理される第２の命令語である場合、前記第１の命令語に対応する、第１または第２のキャッシュミス予測器からの前記実行サイクル数見積り情報の内容に従って、第１の記憶手段における前記第２の命令語のスケジューリング位置を決定し、一方、前記実行サイクル数見積り情報に従うとスケジューリング可能な位置が存在しない場合には前記第２の命令語のスケジューリングを保留する命令スケジュール機構とを備える。
【００１１】
好ましくは、さらに、第１のプログラムと第２のプログラムのうちいずれを優先的に実行するかを指定する情報を記憶し、キャッシュ制御機構に送る第４の記憶手段を備える。第１の記憶手段は、キューイングされる命令語を、その命令語がどのプログラムに属するかを示す情報とともに記憶する。キャッシュ制御機構は、第４の記憶手段によって指定されたプログラムに属さない命令語を実行し、かつ、その実行においてキャッシュミスを検知した場合、キャッシュミス検知情報を命令スケジュール機構に通知する。命令スケジュール機構は、このキャッシュミス検知情報を受け取った場合に、第１の記憶手段において、実行された前記命令語が属するプログラムにおいて、前記命令語の実行結果を必要とする命令語を含む後続命令を特定し、全て消去する。
【発明の効果】
【００１２】
キャッシュミス予測機構による命令スケジューリングにより、キャッシュ制御機構と演算機構の各々に対して命令語が発行される時刻の差を動的に変化させるので、演算効率を維持しつつキャッシュミスの影響を隠蔽できる。
また、キャッシュミスによるストール発生時に選択的に命令をフラッシュするので、ストールを防止できる。
【発明を実施するための最良の形態】
【００１３】
以下、添付の図面を参照して発明の実施の形態を説明する。本発明の実施の形態では、複数のプログラムを同時に実行するプロセッサにおいて、キャッシュミスによる影響を抑えるため、また、キャッシュミスが起きても特定のプロセスについて最低性能の保障をするため、種々の対策を個別にまたは組み合わせて実行する。
【００１４】
図１は、複数のプログラムを同時に実行するプロセッサの第１の実施形態の構成を示す。このプロセッサは、第１と第２の命令読み出し機構１０，１２を含む。各々の命令読み出し機構１０，１２は、命令フェッチ機構（ＩＦ）と命令デコード機構（ＩＤ）を含む。第１の命令読み出し機構１０は、第１のプログラムの実行位置を示す第１のプログラムカウンタ１４の内容により主記憶装置またはキャッシュから第１のプログラムの命令語を読み出し、第２の命令読み出し機構１２は、第２のプログラムの実行位置を示す第２のプログラムカウンタ１６の内容により主記憶装置またはキャッシュから第２のプログラムの命令語を読み出す。図１に示す例では、命令１次キャッシュ１８、データ１次キャッシュ２０、２次キャッシュ２２および主記憶装置２４が用いられる。命令スケジュール機構２６，２８は、それぞれ命令読み出し機構１０，１２から受け取った命令語をスケジューリングして、命令キューを登録する記憶手段３０にキューイングする。以下では、記憶手段３０に記憶された命令キューも参照数字３０で表す。命令キュー３０は、命令スケジュール機構２６，２８がスケジューリングした命令語を登録するための記憶装置（記憶手段）である。命令キュー３０は、複数のキューからなり、複数の命令語が命令キュー３０から並列に発行される。キャッシュ制御機構３２は、命令キュー３０から並列に発行される命令語のうち、ロード命令／ストア命令を実行する実行部である。ロード機能を有する命令は、データ１次キャッシュ２０にアクセスして実行される。また、複数の演算機構３４，３６は、命令キュー３０から取り出した命令語により、キャッシュ制御機構３２がロード機能により取り出したデータを用いて演算を行う演算器(ＡＬＵ)である。演算機構３４，３６は、異なる演算を行うが、同じ演算を行ってもよい。なお、キャッシュ制御機構３２も、演算機構３４，３６と同様に、命令キュー３０からの命令を実行する実行部であるが、ここでは、キャッシュ２０にアクセスする点で区別している。キャッシュ制御機構３２は、キャッシュ２０からキャッシュミスの有無の情報を受け取る。なお、図示していないが、各演算結果を他の演算器の入力などに直接に入力するためのバイパスが装備されている。
【００１５】
第１の命令読み出し機構１０と第２の命令読み出し機構１２は、この実施形態では互いに異種の命令を処理するが、同種の命令を処理するものであってもよい。たとえば、第１の命令読み出し機構１０は、ＯＳや一般アプリケーションに適した汎用の命令（たとえばＡＲＭ命令）を処理し、第２の命令読み出し機構１２は、メディアアプリケーションに適した命令（たとえばＦＲＶ命令）を処理する。メディアアプリケーションでは高い命令レベルの並列性が期待されるが、ＯＳや一般アプリケーションではそのような並列性は期待されない。そこで、複数のプログラムのうち、優先的に実行されるべきプログラムを指定する優先フラグ３８を記憶する記憶手段を設ける。以下では、記憶手段に記憶された優先フラグも参照数字３８で表す。たとえば、メディアアプリケーションについて最低性能を保障したい場合、優先フラグ３８に、メディアアプリケーションのためのプログラムを優先することを指定しておく。命令スケジュール機構２６，２８は、優先フラグ３８に基づいて、指定されたプログラム（優先プログラム）の命令のキューイングを優先的に行う。各々の演算結果を他の演算器の入力に直接入力するためのバイパスを装備することにより、１サイクルにより演算が完了できる命令の間にレジスタ依存関係が存在する場合においても、毎サイクル演算を実行できる。命令キュー３０からの命令を受け取り実行するキャッシュ制御機構３２と演算機構３４，３６が実行する命令の間には依存関係があるため、スケジュール機構２６，２８が命令キュー３０内でスケジューリングする命令の位置に制約がある。
【００１６】
ここでは、異種命令を効率的に低消費電力で処理するため、命令キュー３０はＶＬＩＷ型命令キューとして構成し、全体の動作周波数の向上や消費電力の削減を図る（片岡晶人ほか、VLIW型命令キューを持つOROCHIの命令スケジューリング機構、情報研報、2007-ARC-172,pp.25-30(2007)、および、中田尚ほか、異種命令混在実行のためVLIW型命令キューの設計、IPSJ SIG Technical Report, 2007-ARC-175, pp.89-94(2007)参照）。ＶＬＩＷ型命令キューは、演算器ごとに入り口が分かれていて、各エントリは、デコーダ側から演算器側に向かうシフトレジスタである。命令語のキューイングは任意の位置に可能である。第１の命令読み出し機構１０は、汎用の命令を単純な内部命令に分解して、スケジューリングを容易にする。命令キュー３０では、異種の命令が混在してスケジューリングされる。命令スケジュール機構２６，２８は、リネームステージにおいてマップテーブルで命令の間の依存関係を検査し、命令キュー３０の適切な位置にスケジューリングする。依存関係がなければ、既に命令が入っている位置より前方にキューイングできる。同一タイミングでスケジューリングされる命令の間に依存関係がある場合は、命令順において後方になるようにスケジューリングする。命令は一旦入った場所からは移動できない。また、命令の間の追い越しができない。命令発行は常に命令キュー３０の演算器側の端のみから行う。命令が発行されると、命令語は演算器側に１つシフトされる。命令キュー３０に登録する際に命令スケジュール機構２６，２８により命令スケジューリングを行うことにより、命令発行機構および演算器周辺回路が単純化される。
【００１７】
命令スケジュール機構２６，２８は、命令読み出し機構１０，１２からの情報にしたがって、命令を投入するべき演算器３２〜３６につながっているキューを選択する。同じキューを使用する命令が２個以上ある時は、命令順で早いものを優先する。この結果衝突した命令とそれ以降の命令のスケジューリングは次以降に行われる。次に、マップテーブル（図示しない）からの情報にしたがって、全てのソースオペランドが供給される位置を見つける。なお、ソースオペランドが供給される位置を見つけるためには、ＶＬＩＷ型命令キューの各エントリのデスティネーションレジスタ番号とソースレジスタ番号の一致比較を行い、できるだけ演算器に近いエントリを探すことになる。ただし、バイパスが使用できない演算器、すなわち、ロード命令からのオペランド供給は１サイクル遅れることを考慮する必要がある。命令発行の際には、図示しないディスパッチ／リードステージにおいて、ＶＬＩＷ型命令キューの演算器側の端のエントリが発行可能かどうかを検査し、発行可能であればレジスタ値を読み出し、演算器の入力バッファに投入する。このＶＬＩＷキュー３０では、ロード命令がキャッシュミスを起こした場合、後続命令がキャッシュ制御機構３２を使用するか、ロード結果を使用するまで、命令発行を継続できる。
【００１８】
第１の実施形態のプロセッサでは、キャッシュミスによる影響を抑えるため、簡素な構成のキャッシュミス予測機構を命令スケジュール機構２６，２８に付加し、キャッシュミス予測を考慮して命令スケジューリングを行う。具体的には、２つのキャッシュミス予測機構は、２つのプログラムに対応して、第２の記憶手段４０と第１のキャッシュミス予測器４４からなり、また、第３の記憶手段４２と第２のキャッシュミス予測器４６からなる。第２の記憶手段４０と第３の記憶手段４２は、それぞれ、第１のプログラムおよび第２のプログラムに含まれる命令語の実行に要するサイクル数見積りのための実行サイクル数見積り情報をテーブルに記憶し、第１のキャッシュミス予測器４４および第２のキャッシュミス予測器４６は、それぞれ、第１のプログラムカウンタ１４および第２のプログラムカウンタ１６の内容により第１の記憶手段４０および第２の記憶手段４２のエントリ位置を特定して実行サイクル数見積り情報を読み出す。命令スケジュール機構２６，２８は、スケジューリングの際に、この実行サイクル数見積り情報を用いてキューイングを行い、キャッシュ制御機構３２と演算機構３４，３６に対して命令語が発行される時刻の差を動的に変化させる。第１の記憶手段４０および第２の記憶手段４２に記憶される各命令語の実行サイクル数見積り情報は、あらかじめ適当な値に設定しておく。
【００１９】
具体的には、命令読み出し機構１０，１２がフェッチした命令語が、キャッシュ制御機構３２によって処理される第１の命令語の実行結果を必要とし演算機構３４，３６によって処理される第２の命令語である場合、命令スケジュール機構２６，２８は、記憶手段４０，４２から読み出した、第１の命令語に対応する実行サイクル数見積り情報の内容に従って、命令キュー３０における第２の命令語の位置をあらかじめ離すようにスケジューリングする。また、実行サイクル数見積り情報に従うと命令キュー３０にスケジューリング可能な位置が存在しない場合には、命令スケジュール機構２６，２８は第２の命令語のスケジューリングを保留する。すなわち、命令の間隔を十分に離すだけの余地がなければスケジューリングしない。これにより、第１、第２の記憶手段４０，４２に記憶されている実行サイクル数見積り情報に応じて命令の間隔をキャッシュミスの影響を受けないように離すことができるので、キャッシュミスによる影響を隠蔽できる。
【００２０】
第２の実施形態のプロセッサでは、図１に示すプロセッサの構成において、第２の記憶手段４０または第３の記憶手段４２は、キャッシュミスの検出情報および非検出情報に応じてキャッシュミス予測情報を適当な値に更新する。具体的には、キャッシュ制御機構３２は、命令キュー３０から取り出した命令語についてキャッシュミスを検出した場合、前記命令語の実行サイクル数見積り情報を記憶している第２または第３の記憶手段４０，４２における命令語のエントリ位置に、キャッシュミス検出情報を送り、キャッシュミスを検出しない場合、そのエントリ位置に、キャッシュミス非検出情報を送る。第２または第３の記憶手段４０，４２は、キャッシュミス検出情報を受け取ると、その命令語の実行サイクル数見積り情報を増加または最大値に飽和させ、逆に、キャッシュミス非検出情報を受け取ると、その命令語の実行サイクル数見積り情報を減少または最小値に飽和させる回路を備える。これにより、その命令語の実行サイクル数見積り情報は、キャッシュミス発生の状況（ミス率）に応じてキャッシュミスが生じない最小値に動的に変更される。したがって、命令スケジュール機構２６，２８は、後続命令をスケジューリングする位置を、記憶手段４０，４２における実行サイクル数見積り情報に基づいて、キャッシュミスが生じないと予測される適当な位置に動的に変更できる。これにより、記憶手段４０，４２に記憶される実行サイクル数見積り情報の値を、動的に最適な値に調整できる。
【００２１】
以上のようにキャッシュミスを予測して命令語のスケジューリングを行うことにより命令語発行の際のキャッシュミスを防止するが、予測ミスによりキャッシュミスが起こることがある。特に、同時に実行する複数のプログラムの中に最低性能の保障（QoS保障）を行うプログラム（たとえばマルチメディアアプリケーション）がある場合、最低性能を保障するため、そのプログラムの実行の際にキャッシュミスが頻発しないようにしなければならない。そこで、図２に示す第３の実施形態のプロセッサでは、命令キュー３０において、キューイングされる命令語５０は、その命令語がどのプログラムに属するかを示す種別フラグ５２とともに記憶しておく。さらに、優先プログラムに属しない命令語が一定時間に実行された数を測定する第１の測定手段４８を備える。第１の測定手段４８により測定された実行数が増加または減少するにつれ、非優先プログラムに対応する記憶手段３８、４０は、その内部での命令語の実行サイクル数見積り情報を増加または減少する。測定された実行数に対応する実行サイクル数見積り情報の増減の関係はあらかじめ設定されていて、実行サイクル数見積り情報は、これを用いて増減される。
【００２２】
上述のキャッシュミス予測にもかかわらず予測ミスが頻発する状況下では最低性能の維持が困難となる。そこで、図３に示す第４の実施形態のプロセッサでは、最低性能保障を効率的に行うため、優先プログラムに属さない命令語の実行においてキャッシュミスが起こると、優先でないプログラム（非優先プログラム）に属する、その命令語以降の命令流を命令キュー３０の中で選択的にフラッシュ（消去）して、キャッシュミスを起こしたロード命令に依存している命令が原因で発行停止（ストール）が発生しないようにする。この選択的フラッシュにより、優先プログラムへの干渉を排除して、優先プログラムの命令流の発行停止要因を取り除く。
【００２３】
具体的には、図３に示すように、命令キュー３０において、キューイングされる命令語５０が、その命令語がどのプログラムに属するかを示す種別フラグ５２とともに記憶される。そして、非優先プログラムに属する命令語の実行においてキャッシュミスが起こると、優先フラグ３８と種別フラグ５２とが不一致の命令（すなわち非優先プログラムの命令語）のみを選択的にフラッシュする。すなわち、キャッシュ制御機構３２は、優先フラグ３８により指定された優先プログラムに属さない命令語を実行する際にキャッシュミスを検知した場合、キャッシュミス検知情報を命令スケジュール機構２６，２８に通知する。命令スケジュール機構２６，２８には、選択的フラッシュ機構が設けられている。選択的フラッシュ機構は、キャッシュミス検知情報を受け取ると、命令キュー３０において、キャッシュミスを起こした命令語が属するプログラムにおいて、その命令語の実行結果を必要とする命令語を含む後続命令を特定し、すべて消去する。好ましくは、命令スケジュール機構２６，２８は、キャッシュミスが解消されたとの情報をキャッシュ制御機構３０から通知されると、命令キュー３０に対して、消去した後続命令のキューイングを再開する。
【００２４】
第５の実施形態では、図３に示すプロセッサにおいて、たとえば、キャッシュ制御機構３０が優先プログラムに属さない命令語である第１の命令語を実行し、かつ、キャッシュミスを検知した場合であっても、第１の命令語の実行結果を必要とする第２の命令語のスケジューリング可能な位置が命令キュー３０に存在しない場合は、優先でないプログラムにおける後続命令のキューイングを保留する。すなわち、第１の命令語を処理した命令スケジュール機構２６，２８は、キャッシュ制御機構３０からキャッシュミスの検知を通知されたとき、記憶手段４０，４２から読み出した第２の命令語の実行サイクル数見積り情報に従うと命令キュー３０に第２の命令語のスケジューリング可能な位置が存在しないと判断した場合、第１の命令語が属するプログラムを構成する命令語のうち、第１の命令語の実行結果を必要とする命令語を含む後続命令のキューイングを保留する。こうして優先でないプログラムの実行を一時的に停止させることにより、優先プログラムの実行速度を一定に維持できる。
【００２５】
第６の実施形態のプロセッサでは、図４に示すように、第１の実施形態で用いられるキャッシュミス予測機構に加えて，キャッシュ制御機構３０からキャッシュミスの有無の通知を受け取る第２の測定手段６０を備え、キャッシュミスの測定結果に応じて命令語のスケジューリングを行う。具体的には、第２の測定手段６０は、たとえば一定の期間において、優先フラグ３８によって指定された優先プログラムが走行中である場合における、優先フラグ３８によって指定されずかつキャッシュミスの発生頻度がしきい値より低い非優先プログラムの走行時間とキャッシュミスの発生頻度がしきい値より高い非優先プログラムの走行時間の第１の比と、優先フラグ３８によって指定された優先プログラムが走行中でない場合における、優先フラグ３８によって指定されずかつキャッシュミスの発生頻度がしきい値より低い非優先プログラムの走行時間とキャッシュミスの発生頻度がしきい値より高い非優先プログラムの走行時間の第２の比を、測定する。第２の測定手段６０は、ソフトウェアとして実装してもよい。この測定結果に対応して、命令スケジュール機構２６，２８は、命令キュー３０における命令語のスケジューリングにおいて、第１の比が第２の比よりも大きくなるようにする。これにより、優先フラグ３８により指定されない非優先プログラムにおけるキャッシュミスの発生頻度に依存せずに、優先フラグ３８により指定される優先プログラムの走行中における優先プログラムの実行速度を一定に維持する。好ましくは、第４の実施形態におけるように、非優先プログラムに属する命令語の実行においてキャッシュミスを起きると、命令スケジュール機構２６，２８は、非優先プログラムにおいて、キャッシュミスを起こした命令語の実行結果を必要とする命令語を含む後続命令を特定し、すべて消去する。
【００２６】
第７の実施形態のプロセッサでは、図５に示すように、第１の実施形態で用いられるキャッシュミス予測機構に加えて，優先フラグ３８によって指定された優先プログラムに属する命令語が一定時間に実行された数を測定する第３の測定手段６２を備える。そして、測定された実行数がしきい値より低い場合、当該事象をイベントにより通知する。この通知に対応する制御のための制御レジスタまたは命令セットをＯＳが用意していれば、ＯＳのスケジューラ制御を併用できる。通知を受けたＯＳは、必要に応じて、スケジューラでのＱｏＳ維持に切り換える。好ましくは、さらに、第４の実施形態におけるように、非優先プログラムに属する命令語の実行においてキャッシュミスを起きると、非優先プログラムにおいて、キャッシュミスを起こした命令語の実行結果を必要とする命令語を含む後続命令を特定し、すべて消去する。
【００２７】
第８の実施形態のプロセッサでは、図６に示すように、第１の実施形態で用いられるキャッシュミス予測機構に加えて，第３の測定手段６２に加えて、さらに、命令読み出し機構１０，１２は、優先フラグ３８によって指定されない非優先プログラムに属する命令語の実行を一時的に停止させる停止手段６４を備える。第３の測定手段６２は、測定された実行数がしきい値より低いことを検出した場合には、停止手段６４に、その旨を通知する。停止手段６４は、この通知に対応して、非優先プログラムの命令スケジューリングを一時的に停止させる。これにより、優先プログラムの実行速度が一定に維持される。
【００２８】
第９の実施形態のプロセッサでは、第４の実施形態で説明した選択的フラッシュに加えて、さらに、図７に示すように、優先フラグ３８によって指定された優先プログラムに属する命令語が一定時間に実行された数を測定する第３の測定手段６２を備え、測定結果に対応して優先プログラムの命令語の選択的フラッシュをすることにより、非優先プログラムにおけるキャッシュミスの発生頻度にかかわらず、優先プログラムの実行速度を一定に保つ。具体的には、第３の測定手段６２から、測定された実行数がしきい値より低いことが通知されると、命令スケジュール機構２６，２８は、命令キュー３０において、優先フラグ３８と種別フラグ５２とが不一致の命令語（すなわち非優先プログラムの命令語）のみを選択的にフラッシュする。
【００２９】
第１０の実施形態のプロセッサでは、優先フラグ３８によって指定されない複数の非優先プログラムが実行される。図８に示すように、第１の実施形態で用いられるキャッシュミス予測機構に加えて，非優先プログラムに属する命令語が一定時間に実行された数を測定する第４の測定手段６６を備えるとともに、命令読み出し機構１０，１２は、非優先プログラムごとに、命令語のスケジューリングを一時的に停止させる停止手段６８を備える。第４の測定手段６６は、測定された実行数がしきい値より低いことを検出した場合には、停止手段６８に通知し、停止手段６８は、個々の非優先プログラムのスケジューリングを一時的に停止する。この一時的停止により、優先プログラムまたは複数の非優先プログラムの中の特定の非優先プログラムの実行速度を一定に維持する。
【００３０】
第１１の実施形態のプロセッサでは、第４の実施形態で説明した選択的フラッシュに加えて、さらに、図９に示すように、優先フラグ３８によって指定された優先プログラムに属する命令語が一定時間に実行された数を測定する第３の測定手段６２を備える。第３の測定手段６２は、測定された実行数がしきい値より低い場合、すなわち、優先プログラムの実行速度を一定に維持することが困難であることを検出した場合、当該事象をイベントにより通知する。これらの機構を制御するための制御レジスタまたは命令セットをＯＳが用意していれば、ＯＳのスケジューラ制御を併用できる。すなわち、通知を受けたＯＳは必要に応じてスケジューラでのＱｏＳ維持に切り換える。
【００３１】
次に、第１２の実施形態のプロセッサについて説明する。このプロセッサは、第１の実施形態で用いられるキャッシュミス予測機構に加えて，図１０に示すように、外部キャッシュリクエストキューを登録する記憶手段７４を備える。以下では、記憶手段７０に記憶された外部キャッシュキューも参照数字７４で表す。外部リクエストキュー７４では、キューイングされている外部キャッシュリクエスト７０が、外部キャッシュリクエストがどのプログラムに属するかを示す情報である種別フラグ７２とともに、キューイングされる。外部キャッシュは、この例では２次キャッシュ２２である。外部キャッシュコントローラ７６は、外部リクエストキュー７４からの外部キャッシュリクエストを実行する。しかし、優先フラグ３８により指定された優先プログラムに属さないロード命令により外部キャッシュミスを検知した場合には、外部キャッシュリクエストキュー７４の中から該当する外部キャッシュリクエストを特定し、後続の２次リクエストをフラッシュ（消去）する。非保障側のリクエストを選択的にフラッシュすることにより、非優先側の命令の２次キャッシュミスによる優先プログラムの実行への干渉を排除して、優先プログラムのＱｏＳを維持する。
【００３２】
次に、第１３の実施形態のプロセッサについて説明する。このプロセッサは、第１の実施形態で用いられるキャッシュミス予測機構に加えて，図１１に示すように、入出力リクエストキューを登録する記憶手段８４を備える。以下では、記憶手段８４に記憶された入出力リクエストキューも参照数字８４で表す。入出力リクエストキュー８４には、外部の入出力装置との入出力リクエスト８０が、その入出力リクエストがどのプログラムに属するかを示す情報である種別フラグ８２とともにキューイングされる。入出力コントローラ８６は、入出力リクエストキュー８４に対応して入出力リクエスト８０を実行するが、優先フラグ３８により指定された優先プログラムに属さない命令語により入出力待ちを検知した場合には、入出力リクエストキュー８４の中で該当する入出力リクエストを特定し消去する。すなわち、性能低下の原因が外部入出力装置へのリクエストであった場合、非保障側のリクエストを選択的にキャンセルする。これにより、優先プログラムのＱｏＳを維持する。
【００３３】
好ましくは、第１２と第１３の実施形態において、優先フラグ３８によって指定された優先プログラムに属する命令語が一定時間に実行された数を測定する第３の測定手段６２を備える。第３の測定手段６２は、測定された実行数がしきい値より低いことを検出したときに、当該事象をイベントにより通知する。これにより、これらの機構を制御するための制御レジスタまたは命令セットをＯＳが用意していれば、ＯＳのスケジューラ制御を併用できる。すなわち、通知を受けたＯＳは、必要に応じてスケジューラでのＱｏＳ維持に切り換える。
【００３４】
以上に説明したように、本発明の上述の種々の実施形態において、（１）キャッシュミス予測機構による命令スケジューリング、（２）キャッシュミスによるストール発生時の選択的命令フラッシュ、（３）非優先プログラムの実行を一時的に停止させることによる優先プログラムの一定の実行速度の維持などの、互いに独立した処理が種々の形態で組み合わされている。このような発明の種々の特徴は、いうまでもなく、個別に、また、種々の組合せとして、具体化できる。
【００３５】
また、発明の実施形態では、命令キューとして、ＶＬＩＷキューを用いたが、これに限定されない。また、複数のプログラムとして、異種命令の場合について説明しているが、同種命令でもよい。同種命令でも優先側を判断する機構があれば、本発明の優先的な処理が適用できる。また、組み込み機器用プロセッサでないプロセッサでも、個々のコアを異種命令混在実行とする場合は、本発明が適用できる。
【図面の簡単な説明】
【００３６】
【図１】第１の実施形態のプロセッサのブロック図
【図２】第３の実施形態のプロセッサのブロック図
【図３】第４の実施形態のプロセッサのブロック図
【図４】第６の実施形態のプロセッサのブロック図
【図５】第７の実施形態のプロセッサのブロック図
【図６】第８の実施形態のプロセッサのブロック図
【図７】第９の実施形態のプロセッサのブロック図
【図８】第１０の実施形態のプロセッサのブロック図
【図９】第１１の実施形態のプロセッサのブロック図
【図１０】第１２の実施形態のプロセッサの１部のブロック図
【図１１】第１３の実施形態のプロセッサの１部のブロック図
【符号の説明】
【００３７】
１０、１２  命令読み出し機構、    １４、１６  プログラムカウンタ、    １８  命令１次キャッシュ、    ２０  データ１次キャッシュ、    ２２  ２次キャッシュ、    ２４  主記憶装置、    ２６，２８  命令スケジュール機構、    ３０  命令キュー（第１の記憶手段）、    ３２  キャッシュ制御機構、    ３４，３６  演算機構、    ３８  優先フラグ、    ４０  第２の記憶手段、    ４２  第３の記憶手段、    ４４、４６  キャッシュミス予測器、    ５０  命令語、    ５２  種別フラグ、    ６０  第２の測定手段、    ６２  第３の測定手段、    ６４  停止手段、６６  第４の測定手段、    ６８  停止手段、    ７０  外部キャッシュリクエスト、    ７２  種別フラグ、    ７４  外部キャッシュリクエストキュー、    ７６  外部キャッシュコントローラ、    ８０  入出力リクエスト、    ８２  種別フラグ、    ８４  入出力リクエストキュー、    ８６  入出力コントローラ。
【図１】
2010026583.tif 000003
【図２】
2010026583.tif 000004
【図３】
2010026583.tif 000005
【図４】
2010026583.tif 000006
【図５】
2010026583.tif 000007
【図６】
2010026583.tif 000008
【図７】
2010026583.tif 000009
【図８】
2010026583.tif 000010
【図９】
2010026583.tif 000011
【図１０】
2010026583.tif 000012
【図１１】
2010026583.tif 000013