(57)【要約】【課題】分岐命令検出時にも消費電力削減を可能とし、また命令データが格納されているキャッシュウェイの予測精度を向上させる。【解決手段】複数のメモリ１、例えばキャッシュＷＡＹを有する命令キャッシュメモリ２と、分岐命令の分岐条件成立／不成立の予測データを格納するとともに、成立予測の時に複数のメモリ１のうちで、分岐命令のデータが格納されているメモリ１の予測データを格納する手段３と、実行すべき命令が分岐命令である時、その分岐命令に対応するインデックスによって手段３から得られる２つの予測データを用いて、複数のメモリ１に対してリードアクティブ制御信号を出力する手段４とを備える。【選択図】図１
2008217353.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリを有する命令キャッシュメモリと、
分岐命令の分岐条件成立／不成立の予測データと、成立予測の時に前記複数のメモリのうちで、該分岐命令のデータが格納されているメモリの予測データとを格納する分岐予測データ格納手段と、
実行すべき命令が分岐命令である時、該分岐命令に対応するインデックスによって前記分岐予測データ格納手段から得られる前記分岐条件成立／不成立の予測データと、前記メモリの予測データとを用いて、前記複数のメモリに対してリードアクティブ制御信号を出力するリードアクティブ制御手段と
を備えることを特徴とするデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置において、
実行すべき命令のアドレスに対応して、該命令のデータが格納されているメモリを示す信号を前記リードアクティブ制御手段に出力するヒット／ミス判定手段をさらに備え、
実行すべき命令が分岐命令でない時、および分岐命令であるが分岐条件不成立と予測される時、前記リードアクティブ制御手段が、前記命令データ格納メモリを示す信号をそのまま前記リードアクティブ制御信号として出力することを特徴とするデータ処理装置。
【請求項３】
請求項１記載のデータ処理装置において、
実行された分岐命令の分岐条件成立／不成立を示すデータが次々とシフトされて格納されているレジスタの格納内容と、実行すべき分岐命令のアドレスとの排他的論理和をとることによって、前記インデックスを作成し、前記リードアクティブ制御手段に与えるインデックス作成手段をさらに備えることを特徴とするデータ処理装置。
【請求項４】
請求項１記載のデータ処理装置において、
前記分岐条件成立／不成立の予測データが、直前の分岐命令の実行結果としての分岐条件成立／不成立に加えて、さらに該直前の分岐命令に対するメモリ予測の成功／失敗を反映するデータであることを特徴とするデータ処理装置。
【請求項５】
命令キャッシュメモリ内の複数のメモリのリードアクティブ制御方法であって、
実行すべき命令が分岐命令である時、該分岐命令に対応するインデックスによって、該分岐命令の分岐条件成立／不成立の予測データと、成立予測の時に前記複数のメモリのうちで、該分岐命令のデータが格納されているメモリの予測データとを検索し、
該検索の結果に対応して、前記複数のメモリに対するリードアクティブ制御信号を出力すること
を特徴とするメモリのリードアクティブ制御方法。
【請求項６】
実行すべき命令が分岐命令でない時、および分岐命令であるが分岐条件不成立と予測される時、実行すべき命令のアドレスに対応して、該命令のデータが格納されているメモリを示す信号を、そのまま前記複数のメモリに対するリードアクティブ制御信号として出力することを特徴とする請求項５記載のメモリのリードアクティブ制御方法。
【請求項７】
前記分岐命令に対応するインデックスを、過去に実行された分岐命令の分岐条件成立／不成立を示すデータが次々とシフトされて格納されているレジスタの格納内容と、実行すべき分岐命令のアドレスとの排他的論理和をとることによって作成することを特徴とする請求項５記載のメモリのリードアクティブ制御方法。
【請求項８】
前記分岐条件成立／不成立の予測データが、直前の分岐命令の実行結果としての分岐条件成立／不成立に加えて、該直前の分岐命令に対するメモリ予測の成功／失敗を反映する
データであることを特徴とする請求項５記載のメモリのリードアクティブ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に係り、さらに詳しくは複数のＷＡＹを持つ命令キャッシュを備えるマイクロプロセッサや、画像処理プロセッサなどのデータ処理装置と、そのようなデータ処理装置の消費電力削減を行うための複数のＷＡＹに対するリードアクティブ制御方法に関する。
【背景技術】
【０００２】
図１２は、命令キャッシュを有するデータ処理システムの従来例の構成ブロック図である。同図においてマイクロプロセッサ１００は、外部メモリとしての外部ＲＡＭ１０１と接続されている。マイクロプロセッサ１００は、命令を実行する実行ユニット１０２、命令データを一時的に格納するための命令キャッシュユニット１０３、実行すべき命令が分岐命令である時、分岐（条件）の成立／不成立を予測する分岐予測データを出力する動的分岐予測器１０４、外部ＲＡＭ１０１からの命令データ、または命令キャッシュユニット１０３に格納されている命令データを選択して、実行ユニット１０２に与えるセレクタ１０５を備えている。
【０００３】
命令アドレスによって指定され、実行ユニット１０２から要求された命令データが命令キャッシュユニット１０３に格納されていない場合には、対応する命令データが外部ＲＡＭ１０１から読み出され、実行ユニット１０２に供給されるとともに、命令キャッシュユニット１０３にも格納される。
【０００４】
実行ユニット１０２が同じ命令データを要求した場合には、命令キャッシュユニット１０３から対応する命令データが読み出され、セレクタ１０５を介して実行ユニット１０２に供給される。一般に外部ＲＡＭ１０１にアクセスする時間より、命令キャッシュユニット１０３にアクセスする時間のほうが短いため、命令キャッシュユニットを備えることによって、命令を読み出し、実行するまでの時間を短縮することが可能となる。
【０００５】
図１３は、図１２の動的分岐予測器１０４による動的分岐予測方式の従来例の説明図である。この従来例は一般的にＧＳｈａｒｅ方式と呼ばれている。図１２において、分岐命令に対応して分岐（条件）の成立／不成立を予測する動的分岐予測器１０４は、図１３においてプログラムカウンタ１１０、ブランチ・ヒストリー・レジスタ（ＢＨＲ）１１１、排他的論理和演算器（ＸＯＲ）１１２、およびパターン・ヒストリー・テーブル（ＰＨＴ）１１３を備えている。この動的分岐予測器の動作については、非特許文献１に記載されている。なおＰＨＴ１１３は非特許文献１ではカウンタのテーブルと呼ばれている。
【０００６】
図１３において、ＢＨＲ１１１は分岐命令のアドレスに無関係に過去の分岐命令の実行結果を次々とシフトさせて、グローバル分岐履歴として格納するものであり、このＢＨＲ１１１からｍビットのデータが出力され、プログラムカウンタ１１０の出力する命令アドレスｎ（≧ｍ）ビットと、ＸＯＲ１１２によって排他的論理和がとられ、結果としてのｎビットがインデックスとしてＰＨＴ１１３の検索に用いられる。このようにＰＣ１１０の出力ｎビットと、ＢＨＲ１１１の出力ｍビットとの排他的論理和演算の結果をＰＨＴ１１３の検索のためのインデックスとして使用することによって、ＰＨＴ１１３の複数のエントリの一部に分岐予測データ、すなわちプレディクションデータが偏ることなく、分岐命令のアドレスにほぼ１対１に近い形式で、分岐命令に対応する分岐予測データをＰＨＴ１１３に格納することが可能となる。
【０００７】
ＰＨＴ１１３の各エントリに格納されるプレディクションデータはそれぞれ２ビットで
ある。このプレディクションデータは、分岐命令の実行のたびに分岐（条件）の成立／不成立、すなわちＴａｋｅｎ／Ｎｏｔ  Ｔａｋｅｎに対応してその値が変化する。その値は、分岐が成立した時には“１”が加算され、不成立の時には“１”が減算されるカウンタのカウント値に相当する。
【０００８】
図１３の右側は分岐予測データ（プレディクションデータ）の状態遷移の説明図である。非特許文献１では、ＰＨＴ１１３の各エントリに格納される分岐予測データは、対応する分岐命令の直前の実行結果としての分岐成立／不成立に加えて、さらに前回の分岐予測の成功／失敗を反映するデータである。
【０００９】
例えばＳｔｒｏｎｇｌｙ  Ｔａｋｅｎの状態（エントリのデータ１１）は前回の分岐命令の実行結果に対応してその分岐命令が成立と予測されることに加えて、前回の分岐予測が成功したことを示し、これに対してＷｅａｋｌｙ  Ｔａｋｅｎの状態（１０）はその分岐命令に対して分岐成立が予測されるが、前回の予測が失敗であったことを示している。Ｓｔｒｏｎｇｌｙ  Ｎｏｔ  Ｔａｋｅｎ（００）、およびＷｅａｋｌｙ  Ｎｏｔ  Ｔａｋｅｎ（０１）の状態も同様の意味を持っている。
【００１０】
図１２の命令キャッシュユニット１０３が複数のキャッシュＷＡＹを持つ場合には、実行ユニット１０２から要求された命令データがどのＷＡＹに格納されているかを予測して、予測されたＷＡＹだけをチップイネーブルとし、それ以外のＷＡＹをチップディセーブルとすることによって、消費電力を削減し、低消費電力で動作可能な命令キャッシュユニットを持つデータ処理装置が提供される。
【００１１】
図１４は、従来技術としての特許文献１に記載され、低消費電力で動作可能な命令キャッシュユニットの構成ブロック図である。同図の動作を図１５の命令列の例を用いて説明する。図１５には分岐命令を含む命令列の例が示されているが、ここでは連続する４つの命令を１つのブロックとして、この１つのブロックの内部の命令に対しては、対応する命令データが複数のキャッシュＷＡＹのうちでいずれか１つのキャッシュＷＡＹだけに格納されているものとして、図１４の命令キャッシュユニットの動作を説明する。
【００１２】
図１４において命令キャッシュユニットは、命令アドレスを格納する命令アドレスレジスタ１２０、複数のキャッシュＷＡＹに対応する複数の、ここでは２個のキャッシュＲＡＭ１２１０、１２１１、２つのキャッシュＲＡＭ１２１０、１２１１にそれぞれ対応するタグＲＡＭ１２２０、１２２１、２つのタグＲＡＭの出力と命令アドレスレジスタから出力されるタグアドレスとを比較する２つの比較器１２３０、１２３１、命令アドレスの一部としてのブロックオフセットを用いて、ブロックの先頭命令を検出するブロック先頭検出部１２４、２つの比較器１２３０、１２３１の出力、ブロック先頭検出部１２４の出力、および対応するキャッシュＲＡＭ１２１０、１２１１内でタグＲＡＭ１２２０、１２２１によって出力されるアドレスによって指定されるエントリに有効なデータが格納されていることを示し、タグＲＡＭ１２２０、１２２１から出力されるエントリ有効信号を受けて、２つのキャッシュＲＡＭ１２１０、１２１１のいずれかに要求された命令データが格納されている（ヒット）か、いずれにも格納されていない（ミス）かを判定するヒット／ミス判定論理回路１２５、ヒット／ミス判定論理回路１２５から出力される信号であって、各キャッシュＲＡＭ１２１０、１２１１をリードアクティブ、すなわちチップイネーブルにするためのキャッシュＲＡＭリードアクティブ信号を反転させて、負論理（図では○印省略）のチップイネーブル（ＣＥ）端子に与える２つのインバータ１２６０、１２６１、および要求された命令データが格納されているキャッシュＲＡＭ１２１０、１２１１のいずれかから出力される命令データを選択して出力するためのセレクタ１２７を備えている。
【００１３】
図１４の命令キャッシュユニットにおける電力削減効果についてさらに説明する。ヒット／ミス判定論理回路１２５は、ブロック先頭検出部１２４によって１つのブロックの先頭であることが検出された命令のアドレスが与えられたサイクルにおいては、２つのキャッシュＲＡＭ１２１０、１２１１に対するキャッシュＲＡＭリードアクティブ信号をともに“Ｈ”とし、２つのキャッシュＲＡＭをともにチップイネーブルとして、２つのキャッシュＲＡＭからの命令データ読み出しを可能とする。
【００１４】
次の（命令のアドレスが与えられる）サイクルにおいて、ヒット／ミス判定論理回路１２５は比較器とタグＲＡＭのセットのうちで比較器が“Ｈ”を出力し、またタグＲＡＭがエントリ有効信号として“Ｈ”を出力したセットに対応するキャッシュＲＡＭに対してのみ、キャッシュＲＡＭリードアクティブ信号を“Ｈ”のままとし、他方のキャッシュＲＡＭに対するキャッシュＲＡＭリードアクティブ信号を“Ｌ”とする。１つのブロック内のさらに後続の２つの命令アドレスが与えられる２つのサイクルにおいては、同一のリードアクティブ制御状態が維持されることによって、消費電力を削減することが可能となる。なお２つのキャッシュＲＡＭ１２１０、１２１１のいずれにも要求された命令データが格納されていない場合には、ヒット／ミス判定論理回路１２５からキャッシュミス信号が出力され、前述のように外部ＲＡＭ１０１からの命令データの読み込みが行われることになる。
【００１５】
しかしながらこの特許文献１においては、実行ユニットから出力された命令アドレスに対応する命令が分岐命令である時にも、ブロックの先頭命令の検出時と同様に２つのキャッシュＲＡＭはともにチップイネーブル状態とされており、分岐命令検出時には消費電力削減が行われず、電力削減効果が十分でないという問題点があった。
【００１６】
このような複数の命令キャッシュＷＡＹのうちで、要求された命令データが格納されているＷＡＹを予測するための従来技術としての特許文献２では、アクセスされるセット連想メモリのセットに関するセット予測情報を、ブランチ・ターゲット・バッファ、命令キャッシュ、オペランド履歴テーブルなどの様々な位置に格納し、命令やデータのセット連想キャッシュへのアクセス遅延を減少させ、消費電力を削減する技術が開示されている。しかしながらこの技術を実現するために、タグアドレス、ターゲットアドレスなどを格納する容量の大きいブランチ・ターゲット・バッファが必要となり、このように物量の大きな記憶装置を追加することによって、逆に消費電力が増大してしまうという問題点があった。
【００１７】
さらにこのような命令キャッシュのＷＡＹ予測方式の従来技術としての特許文献３には、非シーケンシャル命令をキャッシュするのを容易にするために付加的なキャッシュＷＡＹ予測メモリが提供され、非シーケンシャル命令の処理を行う技術が開示されている。しかしながら特許文献３においては、キャッシュＷＡＹの予測のために１番新しいＷＡＹヒット／ミスの結果が保持されているだけであり、分岐予測やキャッシュＷＡＹ予測の精度として高い精度が期待できないという問題点があった。
【非特許文献１】Ｓ．ＭｃＦａｒｌｉｎｇ：“Ｃｏｍｂｉｎｉｎｇ  Ｂｒａｎｃｈ  Ｐｒｅｄｉｃｔｏｒｓ”，Ｔｅｃｈｎｉｃａｌ  Ｎｏｔｅ  ＴＮ−３６，Ｗｅｓｔｅｒｎ  Ｒｅｓｅａｒｃｈ  Ｌａｂｏｒａｔｏｒｙ（Ｊｕｎｅ  １９９３）
【特許文献１】特開２００２−１９６９８１号公報  「データ処理装置」
【特許文献２】特開２０００−２２２２０５号公報  「セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置」
【特許文献３】特表２００５−５３５９５５号公報  「ジャンプターゲットのための命令キャッシュウェイ予測」
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明の課題は、上述の問題点に鑑み、分岐命令検出時にも消費電力削減を可能とし、またキャッシュＷＡＹの予測精度をさらに向上させることができるデータ処理装置、およびメモリリードアクティブ制御方法を提供することである。
【課題を解決するための手段】
【００１９】
本発明のデータ処理装置は、複数のメモリ、例えば複数のキャッシュＷＡＹを有する命令キャッシュメモリと、分岐命令の分岐条件成立／不成立の予測データを格納するとともに、成立予測の時に複数のメモリのうちで分岐命令のデータが格納されているメモリの予測データとを格納する分岐予測データ格納手段と、実行すべき命令が分岐命令である時、その分岐命令に対応するインデックスによって分岐予測データ格納手段から得られる前記分岐条件成立／不成立の予測データと、前記メモリの予測データとを用いて、複数のメモリに対してリードアクティブ制御信号を出力するリードアクティブ制御手段とを備える。
【００２０】
本発明においては、実行すべき分岐命令に対応して、その命令データが格納されているメモリ、すなわちキャッシュＷＡＹの予測が行われ、その予測結果に対応して命令データが格納されているメモリ、例えばキャッシュＷＡＹに対して、そのメモリをチップイネーブルとするリードアクティブ制御信号が与えられる。他のメモリ、例えばキャッシュＷＡＹに対してはそのメモリをチップディセーブルとするリードアクティブ制御信号が与えられる。これによって分岐命令に対応してもキャッシュＷＡＹの予測が行われ、その予測結果に対応してさらに消費電力削減を行うことが可能となる。
【００２１】
発明の実施の形態においては、実行すべき命令が分岐命令でない時、および分岐命令であっても分岐条件不成立と予測される時には、リードアクティブ制御手段が、図１４で説明した従来方式によって出力されるキャッシュＷＡＹの予測データを、そのままリードアクティブ制御信号として出力することによって、従来と同様の電力削減効果も得られる。
【００２２】
本発明のメモリのリードアクティブ制御方法においては、実行すべき命令が分岐命令である時、前述の分岐予測データ格納手段に格納されている分岐条件成立／不成立の予測データと、前述のメモリの予測データとを検索し、その検索結果に対応して複数の各メモリに対するリードアクティブ制御信号を出力する方法が用いられる。
【発明の効果】
【００２３】
本発明によれば、命令列へのシーケンシャルアクセスの場合の消費電力削減に加えて、分岐命令が検出された場合にも、命令データが格納されているキャッシュＷＡＹ以外のキャッシュＷＡＹの電力消費を抑制することが可能となり、従来技術に比較して、さらにデータ処理装置の消費電力削減効果を大きくすることができる。
【発明を実施するための最良の形態】
【００２４】
図１は、本実施形態におけるデータ処理装置の原理構成ブロック図である。同図においてデータ処理装置は、複数のメモリ１を有する命令キャッシュメモリ２、分岐予測データ格納手段３、リードアクティブ制御手段４、ヒット／ミス判定手段５、およびインデックス作成手段６を備え、さらに図示しない実行ユニットを備える。
【００２５】
分岐予測データ格納手段３は、例えばパターン・ヒストリー・テーブルであり、分岐命令の成立／不成立の予測データと、成立予測の時に複数のメモリ１のうちでその分岐命令のデータが格納されているメモリの予測データとを格納するものである。
【００２６】
リードアクティブ制御手段４は、例えばリードアクティブ制御回路であり、実行すべき命令が分岐命令である時、その分岐命令に対応するインデックス、すなわちインデックス
作成手段６から出力されるインデックスに対応して、分岐予測データ格納手段３から出力される分岐（条件）成立／不成立の予測データとメモリの予測データとを用いて、複数のメモリ１に対してリードアクティブ制御信号を出力するものである。
【００２７】
ヒット／ミス判定手段５は、実行すべき命令のアドレスに対応して、その命令のデータが格納されているメモリを示すデータを、リードアクティブ制御手段４に出力するものであり、リードアクティブ制御手段４は実行すべき命令が分岐命令でない時、および分岐命令であっても分岐が不成立と予測される時、メモリを示すデータをそのままリードアクティブ制御信号として複数のメモリ１に出力する。
【００２８】
以上のように本実施形態においては、リードアクティブ制御手段４によって、複数のメモリ１のうちで、分岐命令のデータが格納されていると予測されるメモリ１だけをアクティブとするためのリードアクティブ制御信号が出力されることによって、他のメモリ１の消費電力が抑制されることになる。
【００２９】
図２は、本実施形態におけるデータ処理システムの構成例である。同図においては、図１２の従来例と同様に、マイクロプロセッサ１０が外部ＲＡＭ１１と接続され、マイクロプロセッサ１０の内部には実行ユニット１２、命令キャッシュユニット１３、および動的分岐予測器１４が備えられている。図１２と比較して、本実施形態における特徴として、動的分岐予測器１４から命令キャッシュユニット１３に対して命令キャッシュのＷＡＹ予測データが与えられる点が基本的に異なっている。
【００３０】
図３は、本実施形態における命令キャッシュユニット１３と動的分岐予測器１４の構成ブロック図である。命令キャッシュユニット１３は、図１４の従来例と同様に、命令アドレスレジスタ２０、命令キャッシュの複数のＷＡＹに対応する複数、ここでは２個のキャッシュＲＡＭ２１０、２１１、各キャッシュＲＡＭに対応するタグＲＡＭ２２０、２２１、タグの比較器２３０、２３１、ブロック先頭検出部２４、ヒット／ミス判定論理回路２５、インバータ２６０、２６１、およびセレクタ２７によって構成されているが、図１４の従来例と異なり、動的分岐予測器１４から出力される分岐予測データが命令キャッシュユニット１３の内部のヒット／ミス判定論理回路２５に与えられる点が基本的に異なっている。
【００３１】
図３において動的分岐予測器１４では、図１３の従来例におけるプログラムカウンタに代わって、命令アドレスレジスタ２０から命令アドレスが与えられ、ブランチ・ヒストリー・レジスタ（ＢＨＲ）２８の出力とＸＯＲ２９によって排他的論理和がとられ、その排他的論理和のデータをインデックスとしてパターン・ヒストリー・テーブル（ＰＨＴ）３０のエントリが検索され、そのエントリに格納されている分岐予測（プレディクション）データがヒット／ミス判定論理回路２５に与えられるとともに、図２において実行ユニット１２に対しても与えられる。図１３の従来例ではパターン・ヒストリー・テーブル（ＰＨＴ）の各エントリに格納されているデータは２ビットであるものとしたが、本実施形態においては後述するように３ビットのデータとなる。なお本発明の特許請求の範囲の請求項３のインデックス作成手段はＢＨＲ２８とＸＯＲ２９とに相当する。
【００３２】
図４は、図３の命令キャッシュユニット１３の内部のヒット／ミス判定論理回路２５の詳細構成ブロック図である。同図においてヒット／ミス判定論理回路２５は２つのＡＮＤゲート３２０、３２１、ＮＯＲゲート３３、２つのＯＲゲート３４０、３４１、およびリードアクティブ制御回路３５によって構成されている。
【００３３】
ＡＮＤゲート３２０、３２１に対しては、図３の２つのキャッシュＲＡＭ２１０、２１１に対応するタグアドレスの比較器２３０、２３１の出力と、タグＲＡＭ２２０、２２１
から出力され、キャッシュＲＡＭ２１０、２１１の中でタグアドレスに対応するエントリに有効な命令データが格納されていることを示すエントリ有効信号とが入力され、これらの入力信号がともに“Ｈ”である時に“Ｈ”が出力される。
【００３４】
ＡＮＤゲート３２０の出力は、ＮＯＲゲート３３、２つのＯＲゲート３４０、３４１に与えられるとともに、セレクタ２７に対して選択制御信号として与えられる。セレクタ２７は、例えばＡＮＤゲート３２０の出力が“Ｈ”である時にキャッシュＲＡＭ２１０から出力された命令データを選択し、また“Ｌ”である時にキャッシュＲＡＭ２１１から出力された命令データを選択する。
【００３５】
ＮＯＲゲート３３にはＡＮＤゲート３２１の出力も与えられ、２つのＡＮＤゲート３２０、３２１の出力がともに“Ｌ”である時にキャッシュミス検出信号、すなわち２つのキャッシュＲＡＭ２１０、２１１のいずれにも対応する命令データが格納されていないことを示す信号が出力され、このキャッシュミス検出信号に対応して図２の外部ＲＡＭ１１から命令データがリードされ、実行ユニット１２に与えられるとともに、命令キャッシュユニット１３にもその命令データが格納される。
【００３６】
２つのＯＲゲート３４０、３４１に対しては、ともにＡＮＤゲート３２０の出力と、ブロック先頭検出部２４の出力とが与えられる。ただし、ＯＲゲート３４１の２つの入力端子のうちで、ＡＮＤゲート３２０の出力が与えられる入力端子は負論理となっている。
【００３７】
ＯＲゲート３４０は、ＡＮＤゲート３２０の出力、またはブロック先頭検出部２４の出力が“Ｈ”である時に、ＷＡＹ０アクティブ信号を“Ｈ”としてリードアクティブ制御回路３５に与える。またＯＲゲート３４１は、ＡＮＤゲート３２０の出力が“Ｌ”であるか、ブロック先頭検出部２４の出力が“Ｈ”である時に、ＷＡＹ１アクティブ信号を“Ｈ”として、リードアクティブ制御回路３５に出力する。
【００３８】
リードアクティブ制御回路３５に与えられるＷＡＹ０アクティブ信号、ＷＡＹ１アクティブ信号は、命令アドレスに対応する命令が、例えば分岐命令でない時に、そのままリードアクティブ制御回路３５から図３のインバータ２６０、２６１に対してキャッシュＲＡＭ＃０リードアクティブ信号、キャッシュＲＡＭ＃１リードアクティブ信号として与えられ、それぞれ対応するキャッシュＲＡＭ２１０、２１１をチップイネーブル状態として、命令データの読み出しを可能とするものである。このためリードアクティブ制御回路３５に対しては、例えば図２には図示しない中央処理装置（ＣＰＵ）から出力される分岐命令検出信号が与えられる。またリードアクティブ制御回路３５に対しては、図３の動的分岐予測器１４の出力としての分岐予測（プレディクション）データも与えられる。リードアクティブ制御回路３５の構成については後述する。なお本発明の請求項２のヒット／ミス判定手段はヒット／ミス判定論理回路２５のうちでリードアクティブ制御回路３５を除く部分に相当し、また命令のデータが格納されているメモリを示す信号はＷＡＹ０アクティブ信号、ＷＡＹ１アクティブ信号に相当する。
【００３９】
図５は、本実施形態における分岐予測データ（プレディクションデータ）の動的分岐予測器からの出力方式の説明図である。同図において、プレディクションデータ出力方式は図１３の従来例とほぼ同様であり、プログラムカウンタ３７の出力としての命令アドレスｎビットと、ブランチ・ヒストリー・レジスタ２７の出力するブランチ・ヒストリー・データｍビットとが、ＸＯＲ２８によって排他的論理和がとられ、その結果のｎビットのデータがインデックスとしてパターン・ヒストリー・テーブル（ＰＨＴ）に与えられ、そのインデックスによって検索されるエントリのデータ３ビットが分岐予測データとして出力される。
【００４０】
図６は、パターン・ヒストリー・テーブルの各エントリに格納される分岐予測データの状態遷移の説明図である。同図を図１３で説明した状態遷移の従来例と比較すると、Ｓｔｒｏｎｇｌｙ  Ｔａｋｅｎの場合の予測データが、図３の２つのキャッシュＲＡＭ２１０、２１１、すなわちＷＡＹ０とＷＡＹ１のいずれかを予測する場合と、いずれのＷＡＹをも予測しない、すなわちキャッシュミスの場合との３つの状態、すなわちＷＡＹ０を予測するプレディクションデータ“１００”、ＷＡＹ１を予測する“１０１”、キャッシュミスを予測する“０１１”の３つに分かれ、分岐命令の実行結果に対応して、各状態に対応するデータの間で状態遷移が行われる点が異なっている。
【００４１】
なお図６において３つのＳｔｒｏｎｇｌｙ  Ｔａｋｅｎの状態、およびＷｅａｋｌｙ  Ｔａｋｅｎの状態との間の状態遷移の契機となるＴａｋｅｎ／ｈｉｔは分岐が成立し、キャッシュＷＡＹの予測がヒットしたことを示し、またＴａｋｅｎ／ｍｉｓｓは分岐が成立し、キャッシュミスが起こった場合も含め、キャッシュＷＡＹの予測が失敗したことを示す。さらに例えばＳｔｒｏｎｇｌｙ  Ｔａｋｅｎ／ＷＡＹ１の状態でＷＡＹ予測が失敗し、ＷＡＹ０をリードアクティブにすべきであった場合にもＳｔｒｏｎｇｌｙ  Ｔａｋｅｎ
Ｃ−ｍｉｓｓの状態に遷移する。またＷｅａｋｌｙ  Ｔａｋｅｎの状態で分岐が成立し、かつ分岐命令のデータがキャッシュから読み出された場合には、ＷＡＹ０、ＷＡＹ１のいずれにヒットしたかが判明するので、その結果に対応した状態遷移が行われる。
【００４２】
図７は、図６の分岐予測データの各状態に対応して、図３の２つのインバータ２６０、２６１に与えられるキャッシュＲＡＭリードアクティブ信号の決定論理の説明図である。同図において分岐命令検出信号が“０”、すなわち命令アドレスレジスタ２０に格納されている命令アドレスに対応する命令が分岐命令でない場合には、リードアクティブ制御回路３５から出力される２つのキャッシュＲＡＭに対するリードアクティブ信号は、リードアクティブ制御回路３５への入力としてのＷＡＹ０アクティブ信号、ＷＡＹ１アクティブ信号となる。
【００４３】
分岐命令検出信号が“１”であっても、分岐予測データが“０００”、または“００１”、すなわち分岐が不成立であることを予測するデータである場合には、分岐命令検出信号が“０”である場合と同様に、キャッシュリードアクティブ信号として、リードアクティブ制御回路３５に入力されるＷＡＹ０アクティブ信号、ＷＡＹ１アクティブ信号がそのまま用いられる。
【００４４】
分岐命令検出信号の値が“１”であり、分岐予測データがＷｅａｋｌｙ  Ｔａｋｅｎであるか、Ｓｔｒｏｎｇｌｙ  Ｔａｋｅｎであってもキャッシュミスであった状態、すなわち“０１０”、または“０１１”の場合には、前回の分岐予測が失敗している状態であり、キャッシュＷＡＹの予測も不安定となるため、２つのキャッシュＲＡＭ２１０、２１１に対応するリードアクティブ信号の値はともに“１”、すなわち“Ｈ”とされ、両方のキャッシュＲＡＭ２１０、２１１がチップイネーブル状態とされる。
【００４５】
最後に分岐命令検出信号の値が“１”であり、Ｓｔｒｏｎｇｌｙ  Ｔａｋｅｎ／キャッシュＷＡＹ０、またはＳｔｒｏｎｇｌｙ  Ｔａｋｅｎ／キャッシュＷＡＹ１を示す“１００”、または“１０１”の予測データに対しては、それぞれ予測ＷＡＹに対応するキャッシュＲＡＭ２１０、２１１をチップイネーブルにするためのリードアクティブ信号が出力される。
【００４６】
図８は、リードアクティブ制御回路の構成例の回路図である。同図においてリードアクティブ制御回路は、７個のＡＮＤゲート４０から４６、４個のＯＲゲート４７から５０、および２つのセレクタ５１、５２から構成されている。
【００４７】
５個のＡＮＤゲート４０から４４に対しては、図５のＰＨＴ２９から出力されるプレディクションデータ、すなわち分岐予測データ３ビットが与えられる。ただしＡＮＤゲート４０に対しては上位２ビットだけが与えられ、このＡＮＤゲートの２つの入力端子はともに負論理となっている。またＡＮＤゲート４１の入力端子のうち、最上位ビットと最下位ビットとの入力端子、ＡＮＤゲート４２の最上位ビットの入力端子、ＡＮＤゲート４３の最下位ビットと中間位置ビットとの入力端子、ＡＮＤゲート４４の中間位置ビットの入力端子はそれぞれ負論理となっている。
【００４８】
その結果、ＡＮＤゲート４０からはＮｏｔ  Ｔａｋｅｎを示す信号が２つのＡＮＤゲート４５、４６に与えられる。これらのＡＮＤゲート４５、４６は分岐予測がＮｏｔ  Ｔａｋｅｎ、すなわち不成立の場合に、それぞれ他方の入力端子に与えられるＷＡＹ０アクティブ信号、ＷＡＹ１アクティブ信号をそれぞれＯＲゲート４９、５０に出力する。
【００４９】
ＯＲゲート４７は、ＡＮＤゲート４１、４２、または４３の出力が“Ｈ”である時、すなわち分岐予測データがＷｅａｋｌｙ  Ｔａｋｅｎ、またはＳｔｒｏｎｇｌｙ  Ｔａｋｅｎ／キャッシュミス、またはＳｔｒｏｎｇｌｙ  Ｔａｋｅｎ／キャッシュＷＡＹ０である時に、ＯＲゲート４９に“Ｈ”を出力する。
【００５０】
ＯＲゲート４８は、分岐予測データがＷｅａｋｌｙ  Ｔａｋｅｎ、またはＳｔｒｏｎｇｌｙ  Ｔａｋｅｎ／キャッシュミス、またはＳｔｒｏｎｇｌｙ  Ｔａｋｅｎ／キャッシュＷＡＹ１である時に、“Ｈ”をＯＲゲート５０に出力する。
【００５１】
ＯＲゲート４９は分岐予測データがＮｏｔ  Ｔａｋｅｎである時にＷＡＹ０アクティブ信号を、また分岐予測データがＷｅａｋｌｙ  Ｔａｋｅｎ、またはＳｔｒｏｎｇｌｙ  Ｔａｋｅｎ／キャッシュミス、またはＳｔｒｏｎｇｌｙ  Ｔａｋｅｎ／キャッシュＷＡＹ０を示す時に、“Ｈ”をセレクタ５１の入力端子１に出力する。
【００５２】
ＯＲゲート５０は、分岐予測データがＮｏｔ  Ｔａｋｅｎである時にＷＡＹ１アクティブ信号を、また分岐予測データがＷｅａｋｌｙ  Ｔａｋｅｎ、またはＳｔｒｏｎｇｌｙ  Ｔａｋｅｎ／キャッシュミス、またはＳｔｒｏｎｇｌｙ  Ｔａｋｅｎ／キャッシュＷＡＹ１である時に、“Ｈ”をセレクタ５２の入力端子１に出力する。
【００５３】
セレクタ５１、５２のそれぞれ他方の入力端子、すなわち入力端子０には、ＷＡＹ０アクティブ信号、ＷＡＹ１アクティブ信号がそれぞれ与えられ、セレクタ５１、５２は分岐命令検出信号の値が“０”であるか“１”であるかに対応して、入力端子０、または１からの信号を選択し、キャッシュＲＡＭに対するリードアクティブ信号として出力する。
【００５４】
図９から図１１は、本実施形態におけるデータ処理装置の動作例のタイムチャートである。本実施形態においても図１５で説明したように、命令の１ブロックは４つの命令で構成されるものとし、命令列に対するシーケンシャルアクセスが行われる場合に１ブロック内の４つの命令に対するキャッシュＷＡＹは変わらないものとして、これらのタイムチャートについて説明する。
【００５５】
図９においては、３サイクル目に分岐命令が検出される。本実施形態では分岐命令が検出された時には、ペナルティとして次の１サイクルにおいて命令データの読み込みは行われず、また２つのキャッシュＷＡＹに対するリードアクティブ信号はともに“Ｌ”とされるものとする。なおこのペナルティを、例えば２サイクル以上とすることも可能である。
【００５６】
この分岐命令に対応してＰＨＴから読み出されたプレディクションデータが“１０１”であり、分岐条件の成立が予測され、またキャッシュＷＡＹとしてＷＡＹ１が予測された
ものとする。この分岐予測データは４サイクル目で出力され、その結果５サイクル目ではＷＡＹ１に対するリードアクティブ信号が“Ｈ”とされるが、ＷＡＹ０に対するリードアクティブ信号は“Ｌ”のままとされる。
【００５７】
本実施形態では、アドレスが与えられたサイクルから３サイクル目に分岐命令の実行結果が判明し、分岐予測が失敗した時にはその失敗を示す信号が“Ｈ”となり、それに対応してＰＨＴのエントリに格納された分岐予測データの更新が行われる。ここでは６サイクル目に分岐が不成立であったことを示す失敗信号が“Ｈ”となり、ＰＨＴのエントリに対しては図６の状態遷移図に対応してＷｅａｋｌｙ  Ｔａｋｅｎを示す“０１０”が格納される。
【００５８】
図９の最下部に従来技術、すなわち特許文献１の技術による消費電力削減効果に加えて、本実施形態による消費電力削減効果が説明されている。すなわち従来技術でブロックの先頭の命令の次のサイクルでリードアクティブ状態が維持されたＷＡＹは、そのブロック内の命令に対してはそのままリードアクティブとされる。すなわち２サイクル目と３サイクル目はＷＡＹ１に対するリードアクティブ信号が“Ｌ”とされることによって消費電力が削減されることになる。同様に６サイクル目から８サイクル目に対しても、リードアクティブとされたＷＡＹだけがアクティブ状態に保たれるために電力の削減効果が実現される。
【００５９】
前述のように４サイクル目では、分岐命令に対するペナルティとして本実施形態では２つのＷＡＹに対するリードアクティブ信号が“Ｌ”とされ、このサイクルで読み出されたプレディクションデータに対応して、５サイクル目でＷＡＹ１に対するリードアクティブ信号が“Ｈ”とされるのに対して、ＷＡＹ０に対するリードアクティブ信号は“Ｌ”に保たれる。従来技術では前述のように、分岐命令が検出された場合には２つのＷＡＹに対するリードアクティブ信号がともに“Ｈ”とされるために、従来技術ではＷＡＹ０に対するリードアクティブ信号も５サイクル目で“Ｈ”とされることになるが、本実施形態では５サイクル目でＷＡＹ０に対するリードアクティブ信号を“Ｌ”とすることによって、さらに電力削減効果が大きくなる。
【００６０】
図１０は、動作例その２に対するタイムチャートである。同図において４サイクル目までの動作は図９におけると同様である。しかしながら５サイクル目において次の分岐命令が読み出され、これに対応して６サイクル目では命令の読み出しは行われず、また２つのＷＡＹに対するリードアクティブ信号はともに“Ｌ”とされる。
【００６１】
この次の分岐命令に対応して、プレディクションデータとして“１００”がＰＨＴから読み出され、この分岐予測データを用いて７サイクル目でＷＡＹ０に対するリードアクティブ信号が“Ｈ”とされるが、ＷＡＹ１に対するリードアクティブ信号は“Ｌ”のままとされ、従来技術に比較して本実施形態では７サイクル目においても消費電力削減効果が得られることになる。なおこの次の分岐命令の実行結果としての分岐条件は“成立”であり、キャッシュＷＡＹの予測も成功であるために分岐予測失敗信号は出力されず、ＰＨＴの更新は行われていない。
【００６２】
図１１の第３の動作例では３サイクル目で与えられた分岐命令に対応するプレディクションデータは“０００”であり、分岐条件の不成立が予測されたため、図１０、１１と異なって４サイクル目での命令データ読み出しの中止と、２つのＷＡＹに対するリードアクティブ信号のディアサートは行われない。これに対して従来技術では分岐命令が検出されると２つのＷＡＹに対するリードアクティブ信号がともに“Ｈ”とされるために、本実施形態ではＷＡＹ１に対するリードアクティブ信号が４サイクル目で“Ｌ”とされる分だけ、さらに消費電力が削減される。
【００６３】
以上本発明の実施形態について詳細に説明したが、本発明の実施形態は以上の記述に限定されることなく、例えばキャッシュのＷＡＹ、すなわち図３のキャッシュＲＡＭは２個でなく、３個以上であっても良いことは当然である。また例えば図８のリードアクティブ制御回路は図７で説明した制御論理を実現できるものであればどのような回路でも良いことは当然である。さらにパターン・ヒストリー・テーブルを検索するためのインデックスの決定方法も図５に説明した方式に限定されることなく、例えば非特許文献１に記載されている各種のインデックス決定方法を利用可能なことも当然である。
【図面の簡単な説明】
【００６４】
【図１】本発明のデータ処理装置の原理構成ブロック図である。
【図２】本実施形態におけるデータ処理システムの構成例のブロック図である。
【図３】本実施形態における命令キャッシュユニットと動的分岐予測器との構成例のブロック図である。
【図４】図３のヒット／ミス判定論理回路の構成例のブロック図である。
【図５】分岐予測データ出力方式の説明図である。
【図６】分岐予測データの状態遷移の説明図である。
【図７】キャッシュＷＡＹに対するリードアクティブ信号の決定論理を説明する図である。
【図８】図４のリードアクティブ制御回路の構成例の回路図である。
【図９】データ処理装置の第１の動作例を示すタイムチャートである。
【図１０】データ処理装置の第２の動作例を示すタイムチャートである。
【図１１】データ処理装置の第３の動作例を示すタイムチャートである。
【図１２】データ処理システムの従来例の構成ブロック図である。
【図１３】動的分岐予測方式の従来例の説明図である。
【図１４】命令キャッシュユニットの従来例の構成を示すブロック図である。
【図１５】データ処理装置によって実行される命令列の例である。
【符号の説明】
【００６５】
１      メモリ
２      命令キャッシュメモリ
３      分岐予測データ格納手段
４      リードアクティブ制御手段
５      ヒット／ミス判定手段
６      インデックス作成手段
１０      マイクロプロセッサ
１１      外部ランダム・アクセス・メモリ
１２      実行ユニット
１３      命令キャッシュユニット
１４      動的分岐予測器
２０      命令アドレスレジスタ
２１      キャッシュＲＡＭ
２２      タグＲＡＭ
２３      比較器
２４      ブロック先頭検出部
２５      ヒット／ミス判定論理回路
２６      インバータ
２７      セレクタ
２８      ブランチ・ヒストリー・レジスタ（ＢＨＲ）
２９      排他的論理和演算器（ＸＯＲ）
３０      パターン・ヒストリー・テーブル（ＰＨＴ）
３５      リードアクティブ制御回路
【図１】
2008217353.tif 000003
【図２】
2008217353.tif 000004
【図３】
2008217353.tif 000005
【図４】
2008217353.tif 000006
【図１２】
2008217353.tif 000007
【図１４】
2008217353.tif 000008
【図１５】
2008217353.tif 000009
【図５】
2008217353.tif 000010
【図６】
2008217353.tif 000011
【図７】
2008217353.tif 000012
【図８】
2008217353.tif 000013
【図９】
2008217353.tif 000014
【図１０】
2008217353.tif 000015
【図１１】
2008217353.tif 000016
【図１３】
2008217353.tif 000017