JP2001154845A - キャッシュミスした後のメモリバスアクセス制御方式 - Google Patents
キャッシュミスした後のメモリバスアクセス制御方式Info
- Publication number
- JP2001154845A JP2001154845A JP34101499A JP34101499A JP2001154845A JP 2001154845 A JP2001154845 A JP 2001154845A JP 34101499 A JP34101499 A JP 34101499A JP 34101499 A JP34101499 A JP 34101499A JP 2001154845 A JP2001154845 A JP 2001154845A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- memory bus
- cache
- fetch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
における、外部メインメモリへのアクセスに制限を加え
て、メインメモリへのアクセス効率を高める。 【解決手段】本発明の情報処理装置は、分岐命令のシー
ケンシャル側とターゲット側の命令系列の両方をフェッ
チする命令フェッチ部410,411と、命令フェッチ部から
のフェッチ要求に応答してキャッシュメモリ52またはメ
インメモリ64から命令をフェッチするキャッシュ制御部
54,56と、メインメモリへのアクセスを行うメモリバス
アクセス部60と、フェッチした命令を保持する命令バッ
ファ470,471とを有する。更に、命令バッファに格納さ
れる分岐命令の分岐予測を分岐命令の実行に先行して行
う分岐予測部430,431を有し、キャッシュ制御部54,56
は、分岐命令の分岐方向が未確定の場合に、分岐予測部
からの分岐予測方向に応じて、キャッシュミス後のメイ
ンメモリ52へのメモリバスアクセスが制限される。
Description
により命令フェッチ、命令保持、命令デコード、実行を
行う情報処理装置のメモリバスアクセス方式に関し、特
に分岐成立側命令系列(以下、ターゲット側命令系列)
と分岐非成立側命令系列(以下、シーケンシャル側命令
系列)を、平行してフェッチするデュアル命令フェッチ
型の情報処理システムにおける効率的なメモリバスアク
セス方式を提供する。
命令保持、命令デコード、命令実行を行うマイクロプロ
セッサ(または情報処理装置)は、連続する命令列の命
令フェッチを先行して行って、実行ユニットでの実行ス
テージに空きが発生することをなくし、高速処理を実現
する。しかし、命令系列内に分岐命令が存在する場合
は、その分岐命令の実行を待ってターゲット側命令系列
に分岐するのか、シーケンシャル側命令系列を続けるの
かに従って、次にフェッチする命令系列が異なる。その
結果、一時的に実行ユニットの実行サイクルに空きが生
じる。ここで、ターゲット側命令系列とは、分岐命令を
実行した結果、分岐が成立した時に実行される分岐先の
命令系列であり、シーケンシャル側命令系列とは、分岐
命令を実行した結果、分岐が不成立の時に実行される命
令系列である。
側命令系列とシーケンシャル側命令系列との両方の命令
列に対して、CPUが同時に命令フェッチ要求を出し
て、CPU内の2つの命令バッファにそれぞれ格納する
デュアル命令フェッチ型の情報処理装置が提案されてい
る。このデュアル命令フェッチ型であれば、分岐命令の
実行結果がターゲット側への分岐または非分岐のいずれ
であっても、次に実行される命令系列が命令バッファに
保持されているので、分岐命令の分岐方向の予測ミスに
伴う新たな命令フェッチに伴う実行ステージの遅れをで
きるだけ少なくすることができる。
は、命令フェッチを高速化するために、キャッシュメモ
リを利用する。外部のメモリバスを介してでなければ、
命令やデータ等が格納されている外部のメインメモリか
ら、それらの命令やデータをフェッチすることはできな
い。かかるメモリバスアクセスは、比較的長い時間(多
くのパイプラインサイクル)を要するので、メインメモ
リ内の命令やデータを格納するキャッシュメモリがCP
Uに隣接して設けられる。通常、CPUからの命令フェ
ッチには、キャッシュメモリに対して要求され、フェッ
チされた命令が命令バッファに格納される。キャッシュ
メモリに格納されておらず、キャッシュミスした場合
は、メモリバスを介してメインメモリからフェッチ対象
の命令をフェッチし、命令バッファに格納すると共にキ
ャッシュメモリにも格納する。
メモリから命令フェッチするメモリバスアクセスを頻繁
に行うと、メモリバス内のトラフィックが増大する。か
かるメモリバスのトラフィックの増大は、メモリバスア
クセスの遅延を招く。特に、分岐命令を実行する前の段
階で、実際には実行されないかもしれないターゲット側
またはシーケンシャル側の命令をメインメモリから取得
する結果、分岐命令の実行の結果必要になった命令をメ
インメモリからフェッチすることに、長時間を要するよ
うになるのは、好ましくない。
スアクセスを軽減し、より効率的な命令フェッチを可能
にする情報処理装置のメモリバスアクセス方式を提供す
ることにある。
めに、本発明の一つの側面は、分岐命令のシーケンシャ
ル側とターゲット側の命令系列の両方をフェッチする命
令フェッチ部と、命令フェッチ部からのフェッチ要求に
応答してキャッシュメモリまたはメインメモリから命令
をフェッチするキャッシュ制御部と、メインメモリへの
アクセスを行うメモリバスアクセス部と、フェッチした
命令を保持する命令バッファとを有する情報処理装置に
おいて、前記命令バッファに格納される分岐命令の分岐
予測を分岐命令の実行に先行して行う分岐予測部を有
し、前記キャッシュ制御部は、前記分岐命令の分岐方向
が未確定の場合に、分岐予測部からの分岐予測方向に応
じて、前記メインメモリへのメモリバスアクセスを行う
ことを特徴とする。
実施例では、前記分岐命令の分岐方向が未確定の場合
に、キャッシュ制御部は、分岐命令の分岐予測方向の命
令についてキャッシュミスを起こした場合は、メインメ
モリへのメモリバスアクセスを行って命令フェッチを行
い、分岐予測方向ではない命令についてキャッシュミス
を起こした場合は、メモリバスアクセスを行わないで命
令フェッチを中止する。
ターゲット側にある場合で、シーケンシャル側の命令に
ついてキャッシュミスを起こした場合は、メモリバスア
クセスを行わないで命令フェッチを中止し、第2に、分
岐命令の分岐予測方向がシーケンシャル側にある場合
で、ターゲット側の命令についてキャッシュミスを起こ
した場合は、メモリバスアクセスを行わないで命令フェ
ッチを中止する。それ以外の場合は、キャッシュ制御部
は、メモリバスアクセスを行って命令フェッチを行う。
それ以外の場合は、キャッシュミス後にメモリバスアク
セスを許可する。
実施例では、前記分岐命令の分岐方向が未確定の場合
に、キャッシュ制御部は、分岐命令の分岐予測方向がシ
ーケンシャル側にある場合で、ターゲット側の命令につ
いてキャッシュミスを起こした場合は、メモリバスアク
セスを行わないで命令フェッチを中止する。それ以外の
場合は、キャッシュ制御部は、メモリバスアクセスを行
って命令フェッチを行う。従って、上記第1の実施例と
異なり、第2の実施例では、分岐予測方向がターゲット
側の場合であってシーケンシャル側の命令についてキャ
ッシュミスを起こしたら、メモリバスアクセスにより命
令フェッチを行う。シーケンシャル側の命令フェッチが
キャッシュミスする確率は低く、そのような頻度の少な
いケースにおいてメモリバスアクセスを禁止する必要性
が少ないからである。
の側面は、分岐命令のシーケンシャル側とターゲット側
の命令系列の両方をフェッチする命令フェッチ部と、命
令フェッチ部からのフェッチ要求に応答してキャッシュ
メモリまたはメインメモリから命令をフェッチするキャ
ッシュ制御部と、メインメモリへのアクセスを行うメモ
リバスアクセス部と、フェッチした命令を保持する命令
バッファとを有する情報処理装置において、前記命令バ
ッファに格納される分岐命令の分岐予測を分岐命令の実
行に先行して行う分岐予測部を有し、前記キャッシュ制
御部は、前記分岐命令の分岐方向が未確定の場合に、キ
ャッシュミスしたらメモリバスアクセスを行わないで命
令フェッチを中止し、前記分岐命令が確定している場合
に、当該確定した分岐方向の命令についてキャッシュミ
スしたらメモリバスアクセスを行うことを特徴とする。
向の命令についてのみ、キャッシュミス後のメモリバス
アクセスを行うことになり、メモリバスのトラフィック
スを軽減することができる。即ち、分岐未確定の段階で
は、使用されるか否か不明であるので、キャッシュミス
後のメモリバスアクセスは全面的に禁止する。また、分
岐未確定時のターゲット側の命令は、キャッシュメモリ
に格納されている範囲内で、命令バッファへのプリフェ
ッチが行われる。
施の形態例を説明する。しかしながら、かかる実施の形
態例が、本発明の技術的範囲を限定するものではない。
報処理装置のシステム図である。図1に示された情報処
理装置は、マイクロプロセッサであり、チップ内にCP
U40と、キャッシュメモリユニット50と、メモリバ
スアクセス部60とを有する。メモリバスアクセス部6
0から左側がチップ外であり、外部のメモリバス62を
介してメインメモリ64に接続される。
令を実行する命令デコーダ及び命令実行部49を有す
る。図1に示されたCPU40は、分岐命令のシーケン
ス側とターゲット側との命令を両方、同時にフェッチを
行うデュアル命令フェッチ方式の命令フェッチ部41
0,411を有する。更に、CPU40は、シーケンス
側とターゲット側のフェッチされた命令を格納する命令
バッファ470,471を有し、当該命令バッファの命
令のうち、セレクタ48で選択された側の命令が、命令
デコーダ49に供給される。セレクタ48の選択は、後
述する分岐命令の分岐予測信号S430,S431に従
って行われる。
令実行部49で実行され、図示しない所定のレジスタな
どに実行結果が書き込まれる。命令デコーダ及び命令実
行部49は、分岐命令の分岐先アドレス情報S12を分
岐側アドレス生成部46に供給する。分岐側アドレス生
成部46は、その分岐先アドレス情報S12に従って、
分岐先アドレスA10を生成し、分岐先アドレスバッフ
ァ45に供給する。分岐先アドレスバッファ45は、そ
の供給されたターゲット側の命令のアドレスである分岐
先アドレスを、その後の命令フェッチのために保持す
る。更に、連続側アドレスバッファ44は、シーケンシ
ャル側の命令のアドレスをインクリメントして生成し、
保持する。
れアドレス選択部420,421を有する。アドレス選
択部420,421には、連続側アドレスバッファ44
からシーケンシャル側のアドレスA1が、分岐先アドレ
スバッファ45からターゲット側の分岐先アドレスA2
が、そして、命令実行部49から命令実行の結果生成し
たアドレスA3がそれぞれ供給され、その中から選択さ
れたアドレスが、キャッシュメモリユニット50に命令
フェッチ要求S20と共に供給される。命令フェッチ部
410,411は、命令実行部49から供給される分岐
確定信号S10に応答して、一方がシーケンシャル側の
命令フェッチ部になり、他方がターゲット側の命令フェ
ッチ部になる。また、分岐確定信号S10に従って、命
令フェッチが分岐未確定段階のプリフェッチか、分岐が
確定したあとのフェッチかの区別を、命令フェッチ要求
S20に添付して、キャッシュメモリユニットに与え
る。
シュメモリ52と、キャッシュ制御部54,56を有す
る。キャッシュ制御部54,56は、命令フェッチ部4
10,411からのフェッチ要求S20に応答してキャ
ッシュメモリ52またはメインメモリ64から命令をフ
ェッチする。従って、キャッシュメモリユニット50
は、シーケンシャル側とターゲット側の命令フェッチ要
求を同時に受け付けることができる2ポート形式になっ
ている。キャッシュ制御部54,56は、キャッシュメ
モリ52に対してアドレスADを与えて命令をフェッチ
するが、その命令フェッチに対してキャッシュヒットし
たかキャッシュミスしたかを示すヒット・ミス信号CHM
が、キャッシュメモリ52からそれぞれのキャッシュ制
御部54,56に返信される。
チ要求S20に応答してキャッシュメモリに命令フェッ
チした結果、キャッシュヒットした場合は、そのフェッ
チした命令を、対応する命令バッファ470,471に
供給して格納する。キャッシュ制御部54,56は、キ
ャッシュミスした場合は、後述するアルゴリズムに従っ
て、メインメモリ64から命令をフェッチするようメモ
リバスアクセス部60にメモリバスアクセス要求を行
う。但し、本実施の形態例では、このメモリバスアクセ
スは、分岐未確定の段階では一部制限されている。
リバス62を介してメインメモリ64に接続され、メモ
リバス62の制御を行い、キャッシュ制御部54,56
からのメインメモリ64へのフェッチ要求に応答して、
メモリバスアクセスを行う。メインメモリ64からフェ
ッチされた命令は、それぞれ対応するキャッシュ制御部
54,56に供給され、対応する命令バッファ470,
471に格納されると共に、キャッシュメモリ52にも
記憶される。
要求信号S20に応答して、キャッシュメモリ52から
命令をフェッチしたか、メモリバスアクセスしてメイン
メモリ64から命令をフェッチしたか、或いは命令フェ
ッチを中止したかについての完了通知信号S22を、対
応するアドレス選択部420,421に供給する。
岐予測部430,431を有する。この分岐予測部43
0,431は、命令バッファに格納される命令コードが
有する分岐予測ビットS30,S32に従って、そのフ
ェッチされた分岐命令の分岐予測を行い、分岐予測情報
S430,S431を適宜アドレス選択部420,42
1に供給する。アドレス選択部420,421は、フェ
ッチ要求信号S20に、その分岐予測情報、フェッチ先
アドレス、及び分岐確定か否かの情報を加えて、キャッ
シュ制御部54,56に供給する。
命令フェッチ方式であり、命令列のシーケンシャル側の
命令列とターゲット側の命令列との両方をフェッチし、
命令バッファ470,471に格納する。かかる命令フ
ェッチは、分岐命令が命令実行部49で実行されて分岐
が確定する前の分岐未確定の段階で行われ、そのプリフ
ェッチされたシーケンシャル側とターゲット側の命令列
が、命令バッファ470,471に格納される。従っ
て、分岐命令が実行された結果、いずれの方向に分岐が
確定しても、分岐命令が確定した後の命令のデコードと
実行のステージを、パイプラインのサイクルを乱すこと
なく行うことができる。
岐予測部430,431によってフェッチされた命令の
分岐予測を行い、分岐予測結果S430,S431に応
じて、命令バッファ470,471の一方の命令をデコ
ードする。分岐命令が確定する前に、分岐予測に従って
命令のデコードをすることにより、分岐確定時における
パイプライン処理のサイクルの乱れを少なくすることが
できる。
は、フェッチ要求に応答して、キャッシュメモリ52か
ら命令をフェッチし、キャッシュヒットした場合は、そ
のフェッチした命令を命令バッファに格納し、キャッシ
ュミスした場合は、メモリバスアクセス部60にメモリ
バスアクセス要求を出して、メインメモリ64から命令
をフェッチする。
50内のデータバスは高速であるのに対して、外部にあ
るメモリバス62は、その動作周波数が遅くまたバス幅
も狭い。従って、メモリバスアクセスが頻繁に行われる
とメモリバス62へのトラフィックが増大し、メモリバ
スアクセス自体が時間を要することになる。従って、外
部のメモリバス62へのアクセス頻度を高くすると、例
えば急に必要になった命令のフェッチをメインメモリか
ら行わなければならなくなった時、そのメモリバスアク
セスに時間がかかるという課題を有する。
54,56は、後述する通り、分岐が確定していない場
合は、必要に応じてまたは全て、キャッシュミスした後
のメモリバスアクセスを行わないで命令フェッチを中止
する。
令については、上記のキャッシュミス後のメモリバスア
クセスを行わないで、命令フェッチを中止する。分岐予
測方向でない命令の場合は、その後分岐命令が確定した
時点でその命令フェッチが無駄になる可能性が高いの
で、かかる命令に対するメモリバスアクセスは行わない
ほうが効率的である。但し、分岐予測方向の命令につい
ては、キャッシュミス後にメモリバスアクセスを行う。
ンシャル側であって、ターゲット側の命令についてキャ
ッシュミスを起こした場合は、そのメモリバスアクセス
は行わないで命令フェッチを中止する。但し、分岐予測
の方向がターゲット側であって、シーケンシャル側の命
令についてキャッシュミスを起こした場合は、分岐予測
方向と違う側の命令であっても、メモリバスアクセスを
行って、命令フェッチを完了させる。その理由は、キャ
ッシュミスをしてメモリバスアクセスされる場合は、そ
の命令と連続するアドレスの命令が一括してキャッシュ
メモリ52にフェッチされるので、シーケンシャル側の
命令系列がキャッシュミスを起こす可能性は低い。従っ
て、かかる頻度の低いメモリバスアクセスを許可して
も、メモリバス62のトラフィックの増大にはあまりつ
ながらないからである。第2の実施例の場合、分岐予測
方向の命令に対しては、キャッシュミス後にメモリバス
アクセスを許可する。
の間は、キャッシュヒットした命令のみ命令バッファに
格納し、キャッシュミスしたらメモリバスアクセスは行
わずに命令フェッチを中止し、分岐命令が確定した後に
おいて、キャッシュミスした命令のメモリバスアクセス
を行うようにする。この場合でも、以前にフェッチした
命令がキャッシュメモリに記録されている限り、デュア
ル命令フェッチ方式により、両側の命令をプリフェッチ
して命令バッファに格納することができる。そして、確
実に使用される分岐確定後の分岐方向の命令に対しての
みメモリバスアクセスを行うので、メモリバスへのアク
セス頻度を下げることができる。
ある。前述した通り、CPU40からフェッチ要求S2
0Bが、フェッチアドレスS20Aと分岐予測情報S2
0Cと共に供給される。アドレスS20Aはキャッシュ
メモリ52に供給されると共に、バスアクセスアドレス
保持部72で保持される。また、フェッチ要求信号S2
0Aと分岐予測情報S20Cとは、バスアクセス要否判
定部70に供給される。
ュメモリ52からのキャッシュ・ヒット・ミス信号CHM
によるキャッシュヒット判定結果と、分岐予測情報S2
0Cと、現在シーケンシャル側かターゲット側かのステ
ータスなどに応じて、メモリバスアクセスを要求するか
否かを判定する。また、バスアクセス要否判定部70
は、その判定結果を、バスアクセス要求信号S71とし
てバスアクセス制御部74に供給し、バスアクセス不要
信号S70を完了通知判定部78に供給する。
判定された場合は、バスアクセス制御部74は、バスア
クセス要求信号S71に応答して、メモリバスアクセス
部60にバスアクセス要求信号S76を送ると共に、バ
スアクセスアドレス保持部72に制御信号S75を出力
して、保持しているフェッチアドレスを出力させる。ま
た、上記の判定でメモリバスアクセスが不要と判定され
た場合は、バスアクセス制御部74は、メモリバスアク
セスは行わない。この判定は、上記の実施例1,2,3
のアルゴリズムに従う。
モリ64からデータが返信されたときは、バスアクセス
制御部74は、メモリバスアクセス部60からデータ有
効信号S77を受信し、それに応答して、バスアクセス
完了信号S74を完了通知判定部78に供給する。完了
通知判定部78は、バスアクセス完了信号S74やバス
アクセス不要信号S70に従って、命令をキャッシュメ
モリ52からフェッチしたのか、命令フェッチを中止し
たのか、メモリバスアクセスによりメインメモリからフ
ェッチしたのかの完了通知信号S22を、CPUの命令
フェッチ部に送る。
キャッシュ制御部を介して、キャッシュメモリに格納さ
れると共に、命令バッファにも格納される。
おけるメモリバスアクセスを行わないアルゴリズムにつ
いて、説明する。
フェッチの動作を示す図表である。図表に沿ってその命
令フェッチの動作を説明する。第1の実施例では、 (1)分岐命令の分岐方向が確定していない場合には、 (1-1)分岐予測部による分岐予測方向がターゲット側の
場合には、第1に、シーケンシャル側の命令フェッチ
は、命令キャッシュミスを起こしたら、メモリバスアク
セスしないで、命令フェッチを中止し、メモリバスアク
セスをしない。第2に、ターゲット側の命令フェッチ
は、命令キャッシュミスを起こしたら、メモリバスアク
セスして命令フェッチを完了する。 (1-2)分岐命令実行での分岐予測方向がシーケンシャル
側の場合には、第1に、ターゲット側の命令フェッチ
は、命令キャッシュミスを起こしたら、メモリバスアク
セスしないで、命令フェッチを中止し、メモリバスアク
セスをしない。第2に、シーケンシャル側の命令フェッ
チは、命令キャッシュミスを起こしたら、メモリバスア
クセスして命令フェッチを完了する。 (2)分岐命令の分岐方向が確定している場合には、分
岐方向が確定した側(シーケンシャル側、または、ター
ゲット側)のみを命令フェッチする。その場合は、キャ
ッシュミスを起こしたらメモリバスアクセスして命令フ
ェッチを完了する。
が未確定の間は、分岐予測方向の命令フェッチについて
のみ、キャッシュミス後のメモリバスアクセスを行うこ
とを許可し、分岐予測方向ではない命令フェッチは、キ
ャッシュミス後のメモリバスアクセスは禁止して、無駄
になる可能性の高い命令フェッチのためのメモリバスア
クセスは行わない。いずれの場合でもキャッシュヒット
した場合は、それでフェッチされた命令は命令バッファ
内に格納され、命令フェッチは完了する。
アドレス選択部420,421は、命令フェッチが完了
しなかった命令であって、分岐確定信号S10により分
岐が確定した方向の命令については、改めて命令フェッ
チ要求を出す。この時にキャッシュミスが生じたら、メ
モリバスアクセスを行って必要な命令のフェッチを行
う。そのとき、それに連続する命令列もキャッシュメモ
リ52に格納される。
施例における命令フェッチの動作を示す図表である。図
表に沿ってその命令フェッチの動作を説明する。第2の
実施例では、 (1)分岐命令の分岐方向が確定していない場合には、 (1-1)分岐予測部の分岐予測方向がターゲット側の場合
には、第1に、シーケンシャル側の命令フェッチは、命
令キャッシュミスを起こしたら、メモリバスアクセスし
て、命令フェッチを完了する。第2に、ターゲット側の
命令フェッチは、命令キャッシュミスを起こしたら、メ
モリバスアクセスして、命令フェッチを完了する。 (1-2)分岐命令実行での分岐予測方向がシーケンシャル
側の場合には、第1に、ターゲット側の命令フェッチ
は、命令キャッシュミスを起こしたら、メモリバスアク
セスしないで、命令フェッチを中止し、メモリバスアク
セスをしない。第2に、シーケンシャル側の命令フェッ
チは、命令キャッシュミスを起こしたらメモリバスアク
セスして、命令フェッチを完了する。 (2)分岐命令の分岐方向が確定している場合には、分
岐方向が確定した側(シーケンシャル側、または、ター
ゲット側)のみを命令フェッチする。その場合は、キャ
ッシュミスを起こしたらメモリバスアクセスして命令フ
ェッチを完了する。
ろは、分岐予測方向がターゲット側であってシーケンシ
ャル側の命令フェッチに対してキャッシュミスが生じた
場合は、分岐予測方向とは異なる側の命令ではあるが、
メモリバスアクセスをして命令フェッチを完了すること
にある。かかるケースは、極めて可能性が低いので頻度
が低く、従って、メモリバスアクセスを許可してもメモ
リバスのトラフィックを増大することにはならない。
チの動作を示す図表である。図表に沿ってその命令フェ
ッチの動作を説明する。第3の実施例では、 (1)分岐命令の分岐方向が確定していない場合は、 (1-1)分岐予測部の分岐予測方向がターゲット側の場合
には、第1に、シーケンシャル側の命令フェッチは、命
令キャッシュミスを起こしたら、メモリバスアクセスし
ないで、命令フェッチを中止し、メモリバスアクセスを
しない。第2に、ターゲット側の命令フェッチも、命令
キャッシュミスを起こしたら、メモリバスアクセスしな
いで、命令フェッチを中止し、メモリバスアクセスをし
ない。 (1-2)分岐予測部の分岐予測方向がシーケンシャル側
の場合には、第1に、ターゲット側の命令フェッチは、
命令キャッシュミスを起こしたら、メモリバスアクセス
しないで、命令フェッチを中止し、メモリバスアクセス
をしない。第2に、シーケンシャル側の命令フェッチ
も、命令キャッシュミスを起こしたら、メモリバスアク
セスしないで、命令フェッチを中止し、メモリバスアク
セスをしない。 (2)分岐方向が確定している場合には、分岐方向が確
定した側(シーケンシャル側、または、ターゲット側)
のみを命令フェッチする。この場合、キャッシュミスを
起こしてもメモリバスアクセスしてメインメモリから命
令をフェッチして命令フェッチを完了する。
岐未確定の間は、一切のメモリバスアクセスを禁止し、
分岐方向が確定した命令についてのみメモリバスアクセ
スを許可する。分岐未確定の場合は、メモリバスアクセ
スのよる命令フェッチが無駄になる可能性があるので、
そのメモリバスアクセスを禁止してメモリバスのトラフ
ィックを少なくする。キャッシュメモリには、分岐確定
した命令が予め格納されるので、キャッシュミス自体は
それほど高い確率で発生するものではない。従って、キ
ャッシュメモリからの命令フェッチだけでプリフェッチ
して、命令デコーダにシーケンス側とターゲット側の両
方の命令系列を格納するだけでも、全体のパイプライン
動作をあまり乱すことなく命令の実行を行うことが可能
である。
メモリバスアクセスを減らす方法について説明する。図
6は、第4の実施例における命令フェッチの動作を示す
図表である。図表に沿ってその命令フェッチの動作を説
明する。第4の実施例では、 (1)分岐命令の分岐方向が確定していない場合 (1-1)分岐予測部での分岐予測方向がターゲット側の
場合には、シーケンシャル側の命令フェッチは、命令キ
ャッシュミスを起こしたら、メモリバスアクセスしない
で、命令フェッチを中止し、メモリバスアクセスをしな
い。一方で、ターゲット側の命令フェッチは、命令キャ
ッシュミスを起こしたら、メモリバスアクセスして命令
フェッチを完了する。 (1-2)分岐予測部での分岐予測方向がシーケンシャル
側の場合には、第1に、ターゲット側の命令フェッチ
は、命令キャッシュミスを起こしたらメモリバスアクセ
スして、命令フェッチを完了する。第2に、シーケンシ
ャル側の命令も、命令キャッシュミスを起こしたら、メ
モリバスアクセスして、命令フェッチを完了する。 (2)分岐命令の分岐方向が確定している場合 分岐方向が確定した側(シーケンシャル側、または、タ
ーゲット側)のみを命令フェッチする。この場合は、キ
ャッシュミスに対してメモリバスアクセスを行った命令
フェッチを完了する。
岐未確定の場合は、少なくとも分岐予測方向がターゲッ
ト側であって、シーケンシャル側の命令フェッチでキャ
ッシュミスを起こしたらメモリバスアクセスは行わな
い。これにより、その分だけメモリバスアクセスの回数
を減らすことができる。
時に、任意の命令フェッチに対してメモリバスアクセス
を禁止するようにしても、その分だけメモリバスアクセ
スの回数を減らすことはできる。但し、それに伴って分
岐予測されている方向の命令プリフェッチができない場
合も発生する。メモリバスアクセスの禁止と命令プリフ
ェッチの失敗とのバランスを考慮して、設定することが
望ましい。
セスの禁止と命令プリフェッチの失敗とをある程度バラ
ンスさせている第2の実施例の動作について、図1を参
照して説明する。前提として、シーケンシャル側の命令
フェッチは、ポート0側で行われ、ターゲット側の命令
フェッチは、ポート1側で行われると仮定する。 (1)分岐命令の分岐方向が確定していない場合におい
て、 (1-1)分岐予測部430,431での分岐予測方向がターゲッ
ト側の場合には、シーケンシャル側の命令フェッチは、
CPU40の命令フェッチ部410(Port-0)が命令フェ
ッチ要求S20をキャッシュメモリユニット50内のキャ
ッシュ制御部54(Port-0)に供給し、その命令フェッ
チ要求が命令キャッシュメモリ52に渡される。この命
令フェッチ要求には、フェッチアドレスに加えて、分岐
未確定か否かの情報、分岐予測情報なども添付される。
キャッシュミスを起こしたら、その信号CHMがキャッシ
ュ制御部54に返され、キャッシュ制御部54は、メモ
リバスアクセス部60にメモリバスアクセス要求を出
す。それに応答して、メモリバスアクセス部60はメモ
リバス62にアクセスして、命令を主記憶64から読み
出して、キャッシュ制御部54に渡し、メモリキャッシ
ュ52に書き込み、且つ、CPU40内命令バッファ
(0)470に格納して、命令フェッチを完了する。命令
フェッチ完了信号S22が、命令フェッチ部410に返
信される。
シュミスの頻度はそれほど高くないので、この場合にメ
モリバスアクセスを許可しても全体のメモリバスの効率
を低下させることにはあまりならない。
0内の命令フェッチ部411から命令フェッチ要求をキ
ャッシュ制御部56(Port-1)に供給し、その命令フェ
ッチ要求が命令キャッシュメモリ52に渡される。
キャッシュミスを起こしたら、キャッシュ制御部56
(Port-1)がメモリバスアクセス部60にメモリバスア
クセス要求を出し、メモリバスアクセス部60はメモリ
バス62にアクセスして、命令を主記憶64から読み出
して、キャッシュ制御部56(Port-1)に渡し、キャッ
シュメモリ52に書き込み、且つ、CPU40の命令バッ
ファ(1)471に格納して、命令フェッチを完了する。
そして、命令フェッチ完了信号が命令フェッチ部411
に返信される。
の命令がキャッシュミスしているので、メモリバスアク
セスを許可して、プリフェッチを完了することが、分岐
後のパイプライン動作の乱れを防止することになる。 (1-2)分岐予測部での分岐予測方向がシーケンシャル
側の場合には、ターゲット側の命令フェッチは、CPU4
0内の命令フェッチ部411から命令フェッチ要求がキ
ャッシュ制御部56(Port-1)に出され、その命令フェ
ッチ要求が命令キャッシュメモリに渡される。
キャッシュミスを起こしても、キャッシュ制御部(Port
-1)56がメモリバスアクセス部60にメモリバスア
クセス要求を出さない。その結果、メモリバスアクセス
部60はメモリバスアクセスしない。そして、キャッシ
ュ制御部56は、命令フェッチを中止し、アドレス選択
部421に命令フェッチをキャンセルした結果信号を返
信する。
は、CPU40内の命令フェッチ部410から命令フェッ
チ要求がキャッシュ制御部(Port-0)54に出され、そ
の命令フェッチ要求が命令キャッシュメモリ52に渡さ
れる。
キャッシュミスを起こしたら、キャッシュ制御部54が
メモリバスアクセス部60にメモリバスアクセス要求を
出し、メモリバスアクセス部60はメモリバス62にア
クセスして、命令を主記憶64から読み出して、キャッ
シュ制御部54に返す。キャッシュ制御部54は、その
命令をキャッシュメモリ52に書き込み、且つ、CPUの
命令バッファ(0)470に格納して、命令フェッチを完
了する。 (2)分岐命令の実行により分岐方向が確定している場
合 命令フェッチ部420,421は、分岐命令の実行によ
り分岐方向が確定した側(シーケンシャル側、または、
ターゲット側)のみを、命令フェッチする。その時、分
岐確定方向がシーケンシャル側の場合には、命令フェッ
チ部420が、キャッシュ制御部(Port-0)54を介し
て、メモリバスアクセス部60にバスアクセスを要求す
る。メモリバスアクセス部60は、フェッチ要求された
命令を主記憶64から読み出し、キャッシュ制御部54
を介して、命令バッファ(0)470とキャッシュメモ
リ52に命令を格納して、命令フェッチを完了する。
命令フェッチ部411が、キャッシュ制御部(Port-1)
56を介して、メモリバスアクセス部60にバスアクセ
スを要求する。メモリバスアクセス部60が、フェッチ
要求された命令を主記憶64からを読み出し、キャッシ
ュ制御部56を介して、命令バッファ(1)471に命
令を格納して、命令フェッチを完了する。なお、分岐確
定方向がターゲット側になった時点で、ターゲット側は
シーケンシャル側に、シーケンシャル側はターゲット側
に交代する。
よりメモリバスアクセスが制限された場合の、具体的な
パイプライン動作を示す図表である。この例は、図7の
表の下に示したシーケンシャル側の命令列01〜09と分岐
命令03に対応するターゲット側の命令列51〜54を例にし
て、パイプライン動作を示すものである。この例では、
分岐命令03についての分岐予測は、分岐しない、つまり
シーケンシャル側の方向が予測されている場合である。
される。 P:命令フェッチ要求ステージ:CPUがキャッシュ制
御部に命令フェッチ要求をする。この段階では、分岐未
確定のプリフェッチか、分岐確定後のフェッチかの区別
を付けて命令フェッチ要求される。 T:フェッチステージ:キャッシュメモリでヒットミス
判定を行い命令を取り出す準備をする。 C:命令バッファステージ:命令バッファに命令を取り
こむ。 D:デコードステージ:命令デコーダが命令を解読し制
御信号を生成する。 E:実行ステージ:デコード結果の制御信号に応答して
命令を実行する。 W:書き込みステージ:命令を実行した結果をレジスタ
に書き込む。 M:キャッシュミス:キャッシュミスが発生した。 B:バスアクセス保持ステージ:メモリバスにアクセス
するためアドレスをバスアクセスアドレス保持部にて保
持する。 R:バスアクセス要求ステージ:メモリバスアクセス部
に読み出しリクエストを出す。バスアクセスして命令が
読み出されるまで18サイクルを要すると仮定する。
フェッチ要求ステージP、サイクル2のフェッチステー
ジTによりキャッシュメモリから命令をフェッチするこ
とができ、サイクル3で命令バッファに命令が取り込ま
れる(ステージD)。そして、サイクル5,6,7の3
サイクルで命令が実行される(ステージE)。実行後に
命令実行結果が各種レジスタに書き込まれる(ステージ
W)。
令が命令バッファに取り込まれる。そして、命令01の実
行ステージEが終了した次のサイクル8で、デコードス
テージDで待機していた命令02が実行され(ステージ
E)、実行結果がレジスタに書き込まれる(ステージ
W)。
で、分岐予測部により分岐命令であることが判別され、
分岐方向はシーケンシャル側であると予測される。従っ
て、サイクル6からターゲット側の命令列51、52,53も
命令プリフェッチが開始される。
してパイプラインサイクルを乱すことなく、それぞれの
実行ステージEが実行される。そして、命令08〜10がキ
ャッシュミス(ステージM)を起こしたとする。また、
ターゲット側の命令51〜53もキャッシュミス(ステージ
M)を起こしたとする。
03の分岐が未確定であり、分岐未確定の命令プリフェッ
チとして要求される(ステージP)。そこで、サイクル
10でキャッシュミスを起こすが、第1または第2の実
施例では、分岐予測がシーケンシャル側の時にシーケン
シャル側の命令がキャッシュミスを起こすと、そのメモ
リバスアクセスを許可している。従って、サイクル11
でバスアクセス保持ステージB、サイクル12からバス
アクセス要求ステージRに入る。バスアクセス要求ステ
ージRは、18サイクルを要すると仮定したので、サイ
クル30でフェッチされた命令が命令バッファに格納さ
れ、命令バッファステージCになる。
に後続する命令もメインメモリからフェッチされてキャ
ッシュメモリに格納されるので、命令09以降の命令バッ
ファステージCは、命令08のステージCに続いて起こる
ことになる。
ッシュミスを起こすが、分岐予測方向がシーケンシャル
側であるので、ターゲット側の命令51に対するメモリバ
スアクセスは禁止される。命令52、53も同様にメモリバ
スアクセスは禁止される。従って、命令08がメモリバス
アクセス要求するしたサイクル12では、メモリバスは
空き状態にあり、即メモリバスアクセスを行うことがで
き、サイクル32で命令08が実行される(ステージ
E)。
た後に分岐確定後の命令フェッチステージPを迎えるの
で、キャッシュミスしてもメモリバスアクセスは実行さ
れる。但し、図7の例では、すでに命令08のメモリバス
アクセスでキャッシュメモリに命令11、12が格納されて
いるので、キャッシュミスは起こしていない。
例でも、同様の動作になる。即ち、分岐未確定時の命令
08のプリフェッチに対してキャッシュミスを起こして
も、分岐予測方向側の命令08に対しては、メモリバスア
クセスは許可される。
令08のプリフェッチに対して、キャッシュミス後のメモ
リバスアクセスは禁止される。その場合は、分岐確定後
に再度命令フェッチ部からの命令フェッチに応答して、
キャッシュミス後にメモリバスアクセスにより命令がフ
ェッチされる。その場合のメモリバスアクセスは、高速
に行われる。
限されていない場合の、具体的なパイプライン動作を示
す図表である。この例も、図7の場合と同じ命令列に対
するパイプライン動作を示すものである。
いが、メモリバスアクセスを許可される。従って、サイ
クル10からバスアクセス要求ステージRになってい
る。このステージRは18サイクルを要するので、命令
08がサイクル10でキャッシュミス(ステージM)を起
こしても、メモリバスがビジー状態であり、そのメモリ
バスアクセスRは、サイクル28まで待たされることに
なる。その結果、命令08の実行ステージEは、サイクル
48まで遅れることになる。
では、分岐未確定の段階でのメモリバスアクセスを制限
したので、使用可能性が高い命令に対するメモリバスア
クセスを効率的に行うことができ、パイプラインサイク
ルの乱れを最小限に止めることができる。
形態例に限定されるものではなく、特許請求の範囲に記
載された発明とその均等物にまで及ぶものである。
合の命令フェッチに対して、キャッシュミスした時のメ
インメモリへのアクセスを適宜制限したので、分岐予測
方向の命令や分岐確定後の命令に対するメインメモリへ
のアクセスをより効率的に行うことができる。
システム図である。
す図表である。
す図表である。
す図表である。
す図表である。
セスが制限された場合の、具体的なパイプライン動作を
示す図表である。
す図表である。
Claims (7)
- 【請求項1】分岐命令のシーケンシャル側とターゲット
側の命令系列の両方をフェッチする命令フェッチ部と、
前記命令フェッチ部からのフェッチ要求に応答してキャ
ッシュメモリまたはメインメモリから命令をフェッチす
るキャッシュ制御部と、前記メインメモリへのアクセス
を行うメモリバスアクセス部と、前記フェッチした命令
を保持する命令バッファとを有する情報処理装置におい
て、 前記命令バッファに格納される分岐命令の分岐予測を分
岐命令の実行に先行して行う分岐予測部を有し、 前記キャッシュ制御部は、前記分岐命令の分岐方向が未
確定の場合に、分岐予測部からの分岐予測方向に応じ
て、前記メインメモリへのメモリバスアクセスを行うこ
とを特徴とする情報処理装置。 - 【請求項2】請求項1において、 前記分岐命令の分岐方向が未確定の場合に、前記キャッ
シュ制御部は、前記分岐命令の分岐予測方向の命令につ
いてキャッシュミスを起こした場合は、前記メインメモ
リへのメモリバスアクセスを行って命令フェッチを行
い、分岐予測方向ではない命令についてキャッシュミス
を起こした場合は、メモリバスアクセスを行わないで命
令フェッチを中止することを特徴とする情報処理装置。 - 【請求項3】請求項1において、 前記分岐命令の分岐方向が未確定の場合に、前記キャッ
シュ制御部は、前記分岐命令の分岐予測方向がシーケン
シャル側にある場合で、ターゲット側の命令についてキ
ャッシュミスを起こした場合は、メモリバスアクセスを
行わないで命令フェッチを中止することを特徴とする情
報処理装置。 - 【請求項4】請求項1において、 前記分岐命令の分岐方向が未確定の場合に、前記キャッ
シュ制御部は、前記分岐命令の分岐予測方向に応じて、
キャッシュミス後のメモリバスアクセスを行わないこと
を特徴とする情報処理装置。 - 【請求項5】分岐命令のシーケンシャル側とターゲット
側の命令系列の両方をフェッチする命令フェッチ部と、
前記命令フェッチ部からのフェッチ要求に応答してキャ
ッシュメモリまたはメインメモリから命令をフェッチす
るキャッシュ制御部と、前記メインメモリへのアクセス
を行うメモリバスアクセス部と、前記フェッチした命令
を保持する命令バッファとを有する情報処理装置におい
て、 前記命令バッファに格納される分岐命令の分岐予測を分
岐命令の実行に先行して行う分岐予測部を有し、 前記キャッシュ制御部は、前記分岐命令の分岐方向が未
確定の場合に、命令フェッチについてキャッシュミスし
たらメモリバスアクセスを行わないで命令フェッチを中
止し、前記分岐命令が確定している場合に、当該確定し
た分岐方向の命令についてキャッシュミスした命令のメ
モリバスアクセスを行うことを特徴とする情報処理装
置。 - 【請求項6】請求項5において、 分岐命令の分岐方向が未確定の場合は、キャッシュヒッ
トした命令をプリフェッチして、前記命令バッファに格
納することを特徴とする情報処理装置。 - 【請求項7】請求項5において、 分岐予測部の分岐方向に応じて、前記命令バッファの命
令の前記シーケンシャル側またはターゲット側のいずれ
かの命令が選択されて命令デコードされることを特徴と
する情報処理装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34101499A JP4111645B2 (ja) | 1999-11-30 | 1999-11-30 | キャッシュミスした後のメモリバスアクセス制御方式 |
US09/666,853 US7134004B1 (en) | 1999-09-29 | 2000-09-20 | Processing device for buffering sequential and target sequences and target address information for multiple branch instructions |
KR1020000056979A KR100719420B1 (ko) | 1999-09-29 | 2000-09-28 | 정보 처리 장치 |
US11/444,221 US20060224870A1 (en) | 1999-09-29 | 2006-05-31 | Information processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34101499A JP4111645B2 (ja) | 1999-11-30 | 1999-11-30 | キャッシュミスした後のメモリバスアクセス制御方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001154845A true JP2001154845A (ja) | 2001-06-08 |
JP4111645B2 JP4111645B2 (ja) | 2008-07-02 |
Family
ID=18342425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34101499A Expired - Fee Related JP4111645B2 (ja) | 1999-09-29 | 1999-11-30 | キャッシュミスした後のメモリバスアクセス制御方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4111645B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008029450A1 (fr) * | 2006-09-05 | 2008-03-13 | Fujitsu Limited | Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement |
JP2008529191A (ja) * | 2005-02-03 | 2008-07-31 | クゥアルコム・インコーポレイテッド | 電力的に効率的な命令プリフェッチ機構 |
JP2011028540A (ja) * | 2009-07-27 | 2011-02-10 | Renesas Electronics Corp | 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ |
-
1999
- 1999-11-30 JP JP34101499A patent/JP4111645B2/ja not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008529191A (ja) * | 2005-02-03 | 2008-07-31 | クゥアルコム・インコーポレイテッド | 電力的に効率的な命令プリフェッチ機構 |
JP2012150824A (ja) * | 2005-02-03 | 2012-08-09 | Qualcomm Inc | 電力的に効率的な命令プリフェッチ機構 |
US8661229B2 (en) | 2005-02-03 | 2014-02-25 | Qualcomm Incorporated | Power efficient instruction prefetch mechanism |
WO2008029450A1 (fr) * | 2006-09-05 | 2008-03-13 | Fujitsu Limited | Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement |
JPWO2008029450A1 (ja) * | 2006-09-05 | 2010-01-21 | 富士通株式会社 | 分岐予測ミスリカバリ機構を有する情報処理装置 |
JP2011028540A (ja) * | 2009-07-27 | 2011-02-10 | Renesas Electronics Corp | 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ |
Also Published As
Publication number | Publication date |
---|---|
JP4111645B2 (ja) | 2008-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7386701B2 (en) | Prefetching hints | |
JP4417715B2 (ja) | キャッシュメモリにおける、タグおよびデータアクセスを分断する方法および装置 | |
JPH10232827A (ja) | 先取りキャッシュ書戻しの方法と装置 | |
JPH06318177A (ja) | キャッシュ・ミス・ペナルティを減少させる方法、装置及びコンピュータ・システム | |
JPH02224023A (ja) | 命令ストリーム機能を有するプロセサ制御型インターフェイス | |
JPH10228377A (ja) | 分岐予測する情報処理装置 | |
US20060224870A1 (en) | Information processing device | |
JP2008107983A (ja) | キャッシュメモリ | |
JP2596712B2 (ja) | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 | |
US7111127B2 (en) | System for supporting unlimited consecutive data stores into a cache memory | |
JP4111645B2 (ja) | キャッシュミスした後のメモリバスアクセス制御方式 | |
US5421026A (en) | Data processor for processing instruction after conditional branch instruction at high speed | |
JPH0477344B2 (ja) | ||
CA2159888A1 (en) | Method and system of addressing | |
US6952763B1 (en) | Write before read interlock for recovery unit operands | |
JPH04369061A (ja) | キャッシュメモリの制御方式 | |
JP3729832B2 (ja) | キャッシュメモリ装置 | |
JPH07200406A (ja) | キャッシュシステム | |
US20040103267A1 (en) | Data processor having cache memory | |
JP3761890B2 (ja) | キャッシュメモリ装置 | |
JP4049490B2 (ja) | 情報処理装置 | |
JPH01193938A (ja) | 命令先読み装置 | |
JPH08286914A (ja) | メモリ制御装置 | |
JP2001344152A (ja) | キャッシュメモリ装置 | |
JP2002063154A (ja) | ベクトルメモリアクセス時スカラメモリアクセス命令発行制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061004 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070305 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070417 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070615 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080108 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080206 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080313 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080408 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080408 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110418 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110418 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120418 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130418 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140418 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |