JP3644380B2 - プロセッサ制御装置 - Google Patents
プロセッサ制御装置 Download PDFInfo
- Publication number
- JP3644380B2 JP3644380B2 JP2000383258A JP2000383258A JP3644380B2 JP 3644380 B2 JP3644380 B2 JP 3644380B2 JP 2000383258 A JP2000383258 A JP 2000383258A JP 2000383258 A JP2000383258 A JP 2000383258A JP 3644380 B2 JP3644380 B2 JP 3644380B2
- Authority
- JP
- Japan
- Prior art keywords
- tag
- address
- copy
- copy tag
- state
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明はプロセッサ制御装置に関し、特に2次キャッシュを持つ複数のプロセッサがシステムバスに接続されたマルチプロセッサシステムのコピータグを備えるプロセッサ制御装置に関する。
【0002】
【従来の技術】
図13に示すように、複数のプロセッサ400がシステムバス200を介して接続されたマルチプロセッサシステムにおいて、プロセッサ400を制御するためのプロセッサ制御装置100がプロセッサ400とシステムバス200との間に接続され、さらに各プロセッサ制御装置100には、キャッシュコヒーレンシ(データの整合性)を維持するために使用する高速アクセス可能なメモリ(SRAM=Static RAMあるいはSSRAM=Synchronous Static RAMを使用する)でなるコピータグ300が接続されている。また、システムバス200には、メインメモリ(図示せず)を接続制御するメモリ制御部600や、PCIバス(図示せず)等のI/OバスとのブリッジであるI/O制御部700も接続されているが、ここではこれらについては特に言及しない。
【0003】
一般に、プロセッサ400は、短レイテンシでデータアクセスするためのキャッシュという高速メモリを持ち、比較的小容量の1次キャッシュと比較的大容量の2次キャッシュ500という構成をとる。また、さらに大容量の3次キャッシュを持つ場合もあるが、ここでは2次キャッシュ500までを考慮する。これらのキャッシュは、1次キャッシュをプロセッサ400に内蔵、2次キャッシュ500を外付けの高速メモリで実現、あるいは1次キャッシュおよび2次キャッシュ500ともにプロセッサ400に内蔵するといった構造をとるが、ここでは前者(ただし、1次キャッシュは図示されていない)について図示している。先に述べたキャッシュコヒーレンシを維持するために使用する高速メモリは、コピータグ300と呼ばれ、2次キャッシュ500のタグ部のコピーを保持している。
【0004】
2次キャッシュ500は、データそのものを格納する複数のブロックからなるデータ部と、対応するブロックを指し示すためのタグアドレスおよびステートを格納する複数のエントリからなるタグ部とから構成される。アドレスは、図14に示すように、タグアドレスと、インデックスアドレスと、オフセットアドレスとに分割される。インデックスアドレスとは、タグ部のエントリを索引するために使用するアドレスで、2次キャッシュ500の容量に応じてアドレスビット数が決まる。オフセットアドレスとは、2次キャッシュ500のブロックサイズにより決定されるブロック内アドレスで、2次キャッシュ500のアクセスには使用しない。インデックスアドレスおよびオフセットアドレスを除いた部分がタグアドレスで、これがタグ部のエントリに格納される。また、1つのインデックスアドレスに対して複数のタグアドレスを持たせることにより、2次キャッシュ500のヒット率向上を狙った構造をとることもあり、タグアドレスが2つならば2ウェイ構造の2次キャッシュ500となる。
【0005】
図15は、2ウェイ構造の2次キャッシュ500のタグ部を示す。2次キャッシュ500が2ウェイ構造であれば、タグ部も2つ存在し、一方をウェイ0、他方をウェイ1と呼び、それぞれにタグアドレスおよびステートが格納される。ステートとは、タグアドレスの指し示す2次キャッシュ500のブロックデータの状態を表すための情報で、Invalid(2次キャッシュ500のブロックデータは無効)、Shared(2次キャッシュ500のブロックデータは有効だが、他のプロセッサ400の2次キャッシュ500にも同じブロックデータが存在する可能性があり、かつメインメモリ上のブロックデータと同じ)、Exclusive(2次キャッシュ500のブロックデータは有効で、自プロセッサ400の2次キャッシュ500にしかブロックデータが存在せず、かつメインメモリ上のブロックデータと必ずしも同じでない)の3状態がある。あるアドレスにおいて2次キャッシュ500を参照する場合、2つのタグ部に対して同じインデックスアドレスで索引し、得られたタグアドレスおよびステートから、2次キャッシュ500のブロックデータがそのアドレスに対して有効であるか無効であるかを判断する。同一インデックスアドレスに対する2つのタグ部には、それぞれ異なったタグアドレスが格納され、あるタグアドレスに対応する有効なブロックデータは2次キャッシュ500の特定の1箇所のみに存在するように制御される。
【0006】
コピータグ300は、2次キャッシュ500のタグ部のコピーであり、2次キャッシュ500が2ウェイ構造であればコピータグ300も2ウェイ構造をとる。コピータグ300の役割は、2次キャッシュ500に有効なブロックデータが存在するかどうかをプロセッサ400に問い合わせることなくコピータグ300にて判断し、必要な問い合わせのみを行うことにより、プロセッサ400への要求数を減らすことにある。
【0007】
一般的に、マルチプロセッサシステム内でコヒーレンシを維持するために、システムバス200を介して各制御部が2次キャッシュ500のブロックデータの状態確認あるいは更新要求、さらにはデータそのものの転送を実行する。その中で、プロセッサ制御装置100は、プロセッサ400の2次キャッシュ500が持つブロックデータに対して、その状態確認あるいは更新要求、さらにはデータの受け渡しを実行する。
【0008】
システムバス200には、コヒーレンシリクエストと呼ぶコヒーレンシを維持するための要求が発行される。このコヒーレンシリクエストは、そのリクエストが対象とするアドレスとリクエストの種類を示すコマンドとから構成され、コヒーレンシリクエストの種類としては、コヒーレントブロックリードShared(プロセッサ400のロードミスにより実行される2次キャッシュ500のブロック単位のリードで、返却されるデータのステートにSharedを期待する)、コヒーレントブロックリードExclusive(プロセッサ400のストアミスにより実行される2次キャッシュ500のブロック単位のリードで、返却されるデータのステートにExclusiveを期待する)、インバリデート(プロセッサ400のストアヒットにより実行される、他プロセッサ400の2次キャッシュ500に対する無効化要求)がある。
【0009】
プロセッサ制御装置100は、システムバス200からコヒーレンシリクエストを受け取る度に、プロセッサ400の2次キャッシュ500の状態を確認する必要がある。ここで、全てのコヒーレンシリクエストに対してプロセッサ400に2次キャッシュ500の状態を確認することは、プロセッサ400の負荷を上げることになり、性能上好ましくない。そこで、2次キャッシュ500のタグ部のコピーであるコピータグ300をアクセスすることにより、必要なコヒーレンシリクエストに対してのみプロセッサ400に2次キャッシュ500のブロックデータの状態更新あるいはデータの受け渡しを要求することによって、プロセッサ400の負荷を軽減している。
【0010】
コピータグ300は、通常、高速なSRAMあるいはSSRAMで実現し、プロセッサ制御装置100は、コピータグ300をリードあるいはライトすることで、2次キャッシュ500の状態管理を行う。もちろん、コピータグ300の更新を行う場合には、2次キャッシュ500の更新を行うようにプロセッサ400に要求し、常に2次キャッシュ500のタグ部とコピータグ300とが同じ状態となるように制御する。コピータグ300の更新内容は、受信したコヒーレンシリクエストの種類によって異なる。
【0011】
図16を参照して、コピータグ300の更新について説明する。まず、自プロセッサ400が発行したコヒーレンシリクエストの場合、コヒーレントブロックリードSharedならば、プロセッサ400のロードミスが原因となっているため、2次キャッシュ500に有効なブロックデータは存在しない。そのため、コピータグ300に格納されていたタグアドレスおよびステートに関わらず、コヒーレンシリクエストのアドレスから生成したタグアドレスおよびSharedステートに更新する。同様に、コヒーレントブロックリードExclusiveならば、プロセッサ400のロードミスが原因となっているため、2次キャッシュ500に有効なブロックデータは存在しない。そのため、コピータグ300に格納されていたタグアドレスおよびステートに関わらず、コヒーレンシリクエストのアドレスから生成したタグアドレスおよびExclusiveステートに更新する。さらに、コヒーレンシリクエストがインバリデートならば、プロセッサ400のストアヒットが原因となっているため、2次キャッシュ500に有効なブロックデータがSharedステートで存在する。そのため、コピータグ300に格納されていたタグアドレスはそのままで、ステートのみをExclusiveに更新する。
【0012】
一方、他プロセッサ400が発行したコヒーレンシリクエストの場合、コピータグ300に格納されていたタグアドレスがコヒーレンシリクエストのアドレスから生成したタグアドレスと一致し、コヒーレンシリクエストがコヒーレントブロックリードSharedでステートがExclusiveならばステートをSharedに、コヒーレンシブロックリードExclusiveでステートがSharedまたはExclusiveならばステートをInvalidに、インバリデートでステートがSharedならばステートをInvalidにそれぞれ更新する。ここで、インバリデートはプロセッサ400のストアヒットにより実行されるため、他のプロセッサ400が同一キャッシュブロックをExclusiveで持っていることはあり得ない。よって、インバリデートがコピータグ300にExclusiveステートでヒットすることはない。
【0013】
次に、図17を用いて、コピータグ300の動作について説明する。システムバス200は、4ステート(ここでいう「ステート」は、図15でいう「ステート」とは意味が異なる)からなるステートマシンとして動作するバスで、ステートIがリクエストサイクル、ステートIIがアービトレーションサイクル、ステートIIIがアドレスサイクル、ステートIVがデコードサイクルとなっており、この4ステートを繰り返すことで、システムバス200における各種要求およびデータ転送が実現される。コヒーレンシリクエストのアドレスはステートIIIで示され、これを受け取ったプロセッサ制御装置100は、コピータグ300をリードして2次キャッシュ500の該当ブロックデータの状態を確認し、2次キャッシュ500の該当ブロックデータの更新が必要であると判断したならば、プロセッサ400に2次キャッシュ500の該当ブロックデータの更新を要求するとともに、コピータグ300の該当エントリにライトしてタグアドレスおよびステートの更新を実行する。
【0014】
図17において、システムバス200にコヒーレンシリクエスト(t01)が発行されると、プロセッサ制御装置100は、コピータグ300にリード(t03)を行い、タグアドレスおよびステート(t05)を受け取る。続けて、システムバス200にコヒーレンシリクエスト(t05)が発行されると、プロセッサ制御装置100は、コピータグ300にリード(t07)を行い、タグアドレスおよびステート(t09)を受け取る。
【0015】
一方、先のコヒーレンシリクエスト(t01)に対して2次キャッシュ500およびコピータグ300の更新が必要であると判断すると、プロセッサ制御装置100は、コピータグ300に対してライト(t10)を実行し、タグアドレスおよびステート(t11)を出力する。コピータグ300に対するリードとライトとでは、タグアドレスおよびステートの出力される方向が逆になり、その切り替わりタイミングでは信号の衝突を避けるため、プロセッサ制御装置100もコピータグ300もどちらもデータを出力しない期間を1クロックサイクル挿入する必要がある。よって、4ステートのバスサイクルに対してコピータグ300に対するリードおよびライトの実行を1サイクルずつの固定タイミングとして制御している。
【0016】
図17で、「Copy Tag Address」とは、コピータグ300をリードあるいはライトするためのアドレス信号で、インデックスアドレスに相当する。「Copy Tag CS」とは、コピータグ300をリードあるいはライトするためのチップセレクト信号で、アドレス信号の出力に合わせて有効にする。「Copy Tag OE」とは、コピータグ300のリード時にコピータグ300がタグアドレスおよびステートを出力するのを許可するアウトプットイネーブル信号で、ライト時にはコピータグ300からのタグアドレスおよびステートの出力を抑止するために無効にする。「Copy Tag WE」とは、コピータグ300にライトするためのライトイネーブル信号で、ライト時のアドレス出力に合わせて有効にする。「Copy Tag Data」とは、コピータグ300との間でタグアドレスおよびステートをリードあるいはライトするためのデータ信号である。
【0017】
ここで、プロセッサ400の2次キャッシュ500が2ウェイ構造であった場合、コピータグ300もそれに対応してタグアドレスおよびステートを2ウェイ分持つことになる。すると、1つのコヒーレンシリクエストに対して2ウェイ分のタグアドレスおよびステートを読み出す必要があるため、コピータグ300のデータ信号の幅を倍にするか、あるいはSSRAMならば2サイクルのバーストリードを実行する必要がある。
【0018】
【発明が解決しようとする課題】
しかし、上述した従来の技術では、先に説明したようにコピータグ300のリードおよびライトの実行タイミングを固定しているため、バーストリードを実行することができず、コピータグ300のデータ信号の幅を倍にして対処せざるを得ないという問題点があった。
【0019】
さらに、2次キャッシュ500が4ウェイ構造になると、データ信号の幅がさらに倍になるため、プロセッサ制御装置100を構成するLSI(Large Scaled Integration)のピン数増加によるLSIケースの大型化、さらにはコピータグ300として使用するメモリ個数の増加よるメモリ制御信号の負荷増加と基板の実装面積の増加とが不可欠となるという問題点があった。
【0020】
本発明の目的は、LSIのピン数および外部に接続されるメモリの数を増やすことなく、2ウェイあるいはそれ以上のウェイ構造を持つ2次キャッシュに対応できるプロセッサ制御装置を提供することにある。
【0021】
【課題を解決するための手段】
本発明のプロセッサ制御装置は、複数のプロセッサ400がシステムバス200に接続されたマルチプロセッサシステムにおいて、プロセッサ400とシステムバス200との間に接続されるプロセッサ制御装置100が、プロセッサ400の制御を行うとともにシステム内のコヒーレンシを維持するための機能を持つ。
【0022】
このコヒーレンシを維持するための一手段として、コピータグ300と呼ぶ2次キャッシュ500のタグ部のコピーを持ち、プロセッサ400の2次キャッシュ500の状態を管理する方式がある。ここでは、このコピータグ方式を採用し、かつシステムバス200が固定タイミングのステートマシンとして動作する場合について考える。
【0023】
システムバス200が4ステートサイクルからなるステートマシンであるならば、コピータグ300へのリードアクセスおよびライトアクセスも4ステートサイクルで完結するように制御する。つまり、データ信号の転送方向の切り替えに伴う無転送期間を考慮すると、リードおよびライトにはそれぞれ1クロックサイクルしか割り当てられないことになる。ここで、2次キャッシュ500が2ウェイ構造であるならば、コピータグ300もこれに合わせて2ウェイ構造となるため、1回のリードアクセスについて2つのタグアドレスおよびステートを読み出す必要がある。従来の回路ではコピータグ300のデータ幅を倍にして対応していたが、本発明ではデータ幅はそのままで、コピータグ300に対するリードアクセスを2クロックサイクル連続して行うことにより、2つのタグアドレスおよびステートの読み出しに対応している。
【0024】
コピータグ300に対するリードアクセスは、2次キャッシュ500のコヒーレンシ維持に関するコヒーレンシリクエストがシステムバス200に発行された時に必ず実行されるが、ライトアクセスは、そのコヒーレンシリクエストにより2次キャッシュ500の状態更新が必要になった場合にのみ実行される。つまり、リードアクセスは実行されても、ライトアクセスは必ずしも実行されるとは限らない。そこで、ライトアクセスが実行されないタイミングでは、リードサイクルを延長して実行することにより、所望のタグアドレスおよびステートの読み出しを完了させる。
【0025】
これを、図2を用いて説明する。システムバス200にコヒーレンシリクエスト(t01)が発行されると、プロセッサ制御装置100は、コピータグ300へのリードアクセスを計画する。ここで、直前にコヒーレンシリクエストが発行されていないあるいは発行されたが2次キャッシュ500の状態更新の必要がなかった場合には、2クロックサイクル連続してコピータグ300へのリード(t03,t04)を実行する。このリードに対するタグアドレスおよびステートは規定クロックサイクル後にコピータグ300から出力され(t05,t06)、プロセッサ制御装置100は、2次キャッシュ500の該当ブロックデータの状態更新が必要か、つまりコピータグ300へのライトアクセスが必要かを判断する(t07)。さらに、プロセッサ制御装置100は、システムバス200には次のコヒーレンシリクエスト(t05)が発行されており、コピータグ300へのリード(t07)を実行するが、同時に先のコヒーレンシリクエスト(t01)によるコピータグ300へのライトアクセスが必要であると判断されたならば(t07)、2クロックサイクル目のリードは実行しない(t08)。これは、2クロックサイクル目のリード(t08)に対してコピータグ300が出力するタグアドレスおよびステート(t10)と、ライト(t10)によりプロセッサ制御装置100が出力するタグアドレスおよびステート(t11)とが連続することを避けるためである。
【0026】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【0027】
(1)第1の実施の形態
図1は、本発明の第1の実施の形態に係るプロセッサ制御装置100の構成を示す回路ブロック図である。このプロセッサ制御装置100は、図13で説明したマルチプロセッサシステムにおけるのと同様に、システムバス200と、コピータグ300と、プロセッサ400とに接続されている。
【0028】
プロセッサ制御装置100は、システムバス200に発行されたコヒーレンシリクエストのアドレスおよびコマンドを受信するリクエスト受信バッファ110と、リクエスト受信バッファ110中のコヒーレンシリクエストのアドレスをコピータグ300をアクセスするためのインデックスアドレスに変換するアドレス変換部120と、アドレス変換部120により変換されたインデックスアドレスをコピータグ300に対して「Copy Tag Address」として出力するアドレス出力バッファ130と、コピータグ300のリードアクセスおよびライトアクセスを制御するコピータグ制御部140と、コピータグ300からリードされたタグアドレスおよびステートを受信するデータ受信バッファ150と、コヒーレンシリクエストのアドレスおよびコマンドとコピータグ300からリードしたタグアドレスおよびステートとを比較して2次キャッシュ500およびコピータグ300の更新が必要かどうかを判断するアドレス比較部160と、コピータグ300の更新が必要な場合にライトするタグアドレスおよびステートからなるタグアドレスおよびステートを出力するデータ出力バッファ170と、システムバス200に発行されたコヒーレンシリクエストをリトライさせるためのリトライ制御部180と、アドレス比較部160で2次キャッシュ500の更新が必要とされた場合にプロセッサ400へ発行するためのリクエストを生成するリクエスト生成回路190と、そのリクエストを格納するためのリクエスト発行バッファ195とを含んで構成されている。
【0029】
図3は、リクエスト受信バッファ110を説明したもので、コヒーレンシリクエストのアドレスおよびコマンドをそれぞれバッファに格納するとともに、コヒーレンシリクエストを受信したことをコピータグ制御部140に通知する。コマンドは、コヒーレンシリクエストの種類を示し、コヒーレントブロックリードShared(以下、リードShと記す),コヒーレントブロックリードExclusive(以下、リードExと記す),およびインバリデートがある。
【0030】
図4は、アドレス変換部120を説明したもので、コヒーレンシリクエストのアドレスをタグアドレス,インデックスアドレス,およびオフセットアドレスに分類する。オフセットアドレスは、2次キャッシュ500のブロックサイズにより決定されるアドレス下位ビットで、コピータグ300へのアクセスには使用されない。インデックスアドレスは、コピータグ300を索引するためのアドレスで、この部分がコピータグ300への出力アドレスとしてアドレス出力バッファ130に転送される。残りがタグアドレスで、コピータグ300に格納されているタグアドレスと比較する部分である。このインデックスアドレスとタグアドレスとは、キャッシュサイズに応じてその境界が移動するため、数種類のキャッシュサイズに対応するために選択回路121で選択できるようになっている。図4では、4種類のキャッシュサイズに対応した場合を示してある。
【0031】
図5は、コピータグ制御部140を説明したもので、フリップフロップ141a〜141dと、フリップフロップ142a〜142dと、論理積回路143と、論理和回路144と、フリップフロップ145と、否定論理和回路146と、フリップフロップ147と、フリップフロップ148と、フリップフロップ149a〜149dとから構成されている。
【0032】
コピータグ制御部140は、リクエスト受信バッファ110からのコヒーレンシリクエスト受信通知信号とアドレス比較部160からのコピータグ更新指示信号とに従って、コピータグ300のアクセスサイクルを生成する。
【0033】
まず、コピータグ300にリードアクセスあるいはライトアクセスするためのチップセレクト信号(Copy Tag CS)を生成する論理を説明する。
【0034】
コピータグ300をリードアクセスする場合、1クロックサイクル目のリードは、リクエスト受信バッファ110からのコヒーレンシリクエスト受信通知信号そのものを使用する。2クロックサイクル目のリードを行うかどうかは、直後にコピータグ300へのライトアクセスが実行されるかどうかによるので、同コヒーレンシリクエスト受信通知信号をフリップフロップ141aにて保持したものとアドレス比較部160からのコピータグ更新指示信号を論理否定したものとの論理積を論理積回路143にて生成する。コピータグ300にライトアクセスする場合、同コピータグ更新指示信号をフリップフロップ142a,142b,142c,142dと4回保持したものを使用する。よって、コピータグ300のチップセレクト信号は、上記3つの信号の論理和を論理和回路144で生成したものをフリップフロップ145で保持して生成される。
【0035】
次に、コピータグ300からのタグアドレスおよびステート出力を制御するアウトプットイネーブル信号(Copy Tag OE)を生成する論理を説明する。
【0036】
アウトプットイネーブル信号は、プロセッサ制御装置100がデータを出力する、つまりコピータグ300にライトアクセスする時にのみ無効にするので、フリップフロップ142b,142c,142dの出力信号の否定論理和を否定論理和回路146で生成したものをフリップフロップ147で保持して生成される。
【0037】
さらに、コピータグ300へのライトアクセスを指示するライトイネーブル信号(Copy Tag WE)は、フリップフロップ142bの出力信号をフリップフロップ148で保持して生成される。
【0038】
なお、チップセレクト信号,アウトプットイネーブル信号,およびライトイネーブル信号は、いずれも負論理の信号として定義している。
【0039】
また、アドレス比較部160での判断に使用するために、コピータグ制御部140は、フリップフロップ141aの出力信号をフロップフロップ141b,141c,141dと3回保持した信号140sと、論理積回路143の出力信号をフリップフロップ149a,149b,149c,149dと4回保持した信号140tとを出力する。
【0040】
図6は、アドレス比較部160を説明したもので、選択回路161と、一対の比較回路162a,162bと、検出回路163と、ステート生成回路164と、リトライ指示回路165と、バッファ166a,166cと、バッファ166b,166dと、セレクタ167と、バッファ168と、バッファ169とから構成されている。
【0041】
アドレス比較部160は、コピータグ300からリードしたタグアドレスとコヒーレンシリクエストのタグアドレスとを比較し、さらにコピータグ300からリードしたステートとコヒーレンシリクエストのコマンドとによって、2次キャッシュ500およびコピータグ300の更新を判断する。
【0042】
まず、アドレス比較部160は、リクエスト受信バッファ110からのコヒーレンシリクエストのアドレスをバッファ168に、コマンドをバッファ169に保持する。先に説明したように、タグアドレスは、キャッシュサイズに応じてそのビット数が変わるため、選択回路161によりタグアドレスの選択を行う。
【0043】
また、コピータグ300からリードし、データ受信バッファ150に格納されたタグアドレスおよびステートは、リード1クロックサイクル目にリードしたウェイ0のタグアドレスがバッファ166aに、同ステートがバッファ166bにそれぞれ格納される。
【0044】
次に、リード2クロックサイクル目にリードしたウェイ1のタグアドレスがバッファ166cに、同ステートがバッファ166dに格納される。この時の各バッファ166a〜166dへのタイミング信号として、リード1クロックサイクル目はコピータグ制御部140の出力信号140sが、リード2クロックサイクル目は同出力信号140tが使用される。もちろん、リード2クロックサイクル目が実行されなければ、バッファ166cおよび166dには格納されない。選択回路161で選択されたタグアドレスとバッファ166aおよび166cのタグアドレスとは、それぞれ比較回路162aおよび162bで一致比較が行われる。
【0045】
検出回路163は、比較回路162aおよび162bの一致比較結果と、バッファ169に保持したコヒーレンシリクエストのコマンドと、コピータグ300からリードしてバッファ166bおよび166dに格納したステートと、コピータグ制御回路140からの2本の出力信号140sおよび140tとにより、2次キャッシュ500およびコピータグ300の更新が必要であるかどうかを判断し、ステート生成回路164,リトライ指示回路165,セレクタ167,コピータグ制御部140,およびリクエスト生成回路190への各指示信号を生成する。
【0046】
図7を参照すると、検出回路163は、デコーダ163a〜163cと、判定回路163d,163eと、論理和回路163fと、論理積回路163h,163iと、論理積回路163jとから構成されている。
【0047】
検出回路163は、バッファ169からのコマンドをデコーダ163aでデコードし、リードSh,リードExあるいはインバリデートのいずれであるかを決定する。バッファ166bおよび166dからのステートはそれぞれデコーダ163bおよび163cでデコードされ、Invalid,Shared,Exclusiveのいずれのステートであるかを決定する。コマンドのデコード結果およびステートのデコード結果に加え、比較回路162aおよび162bからの一致比較結果から、判定回路163dおよび163eにて2次キャッシュ500およびコピータグ300の更新判定を行う。判定回路163dはウェイ0用で、判定回路163eはウェイ1用であるが、どちらも同一論理回路により構成されている。
【0048】
図8を参照して、判定回路163dおよび判定回路163eの判定論理についてさらに説明する。比較結果がタグアドレス一致で、コマンドがリードShならばステートがExclusiveの場合,コマンドがリードExならばステートがSharedかExclusiveの場合,コマンドがインバリデートならばステートがSharedの場合に、2次キャッシュ500およびコピータグ300の更新を要求する。判定回路163dおよび判定回路163eのそれぞれにおいて更新判定を行うが、両回路から更新要求がくることはない。
【0049】
ウェイ0あるいはウェイ1のどちらかで更新要求が発生すると、コピータグ300の更新が必要となるため、論理和回路163fで論理和をとる。さらに、コピータグ300を2クロックサイクル連続してリードできた時のみ、コピータグ300の更新が有効となるため、コピータグ制御部140からの出力信号140sと出力信号140tとの論理積を論理積回路163hでとり、コピータグ制御部140へのコピータグ更新指示信号は、論理和回路163fの出力信号と論理積回路163hの出力信号との論理積を論理積回路163iで生成したものとなる。
【0050】
逆に、コピータグ300を2クロックサイクル連続してリードできなかった時は、コピータグ制御部140からの出力信号140sと、出力信号140tの論理否定をとったものとの論理積を論理積回路163jで生成して、リトライ指示回路165に通知する。
【0051】
また、ステート生成回路164へはデコーダ163aの出力信号であるコマンドのデコード結果を通知し、セレクタ167へは判定回路163dの更新指示信号を通知し、リクエスト生成回路190へは判定回路163dおよび判定回路163eからそれぞれ2次キャッシュ500の更新指示信号とその時のステートとを通知する。
【0052】
図6の説明に戻って、ステート生成回路164は、コピータグ300の更新時に新しく書き込むステートを生成する。
【0053】
これを、図9を用いて説明する。新しいステートはコヒーレンシリクエストのコマンドの種類に応じて決定され、リードShではSharedに、リードExおよびインバリデートではInvalidになる。
【0054】
リトライ指示回路165は、システムバス200に対するコヒーレンシリクエストのリトライ指示信号を保持する。検出回路163では、コピータグ300のリードで1クロックサイクル目はリードしたが、2クロックサイクル目はリードしなかったことを検出しており、この場合にリトライを実行する。
【0055】
セレクタ167は、データ出力バッファ170に転送するタグアドレスを選択する。コピータグ300へのライトはどちらか一方のウェイに対してのみ実行するため、その時に使用するタグアドレスを選択する必要がある。そのため、検出回路163でウェイ0側の更新が要求された場合にはバッファ166aのタグアドレスを選択し、そうでなければバッファ166cのタグアドレスを選択する。
【0056】
さらに、図1に戻って、リクエスト生成回路190は、2次キャッシュ500の更新が必要な場合に、プロセッサ400に対して発行するリクエストを生成する。プロセッサ400に発行するリクエストは、リクエスト受信バッファ110からのアドレスおよびコマンド,アドレス比較部160からの2次キャッシュ500の更新指示信号およびステートから行う。
【0057】
これを図10を用いて説明する。コヒーレンシリクエストのコマンドがリードShで2次キャッシュ500の更新指示信号があり、コピータグ300からリードしたステートがExclusiveの場合、リクエスト生成回路190は、プロセッサ400に対してインタベンションSharedリクエストを発行する。このインタベンションSharedリクエストは、2次キャッシュ500からのブロックデータ読み出しを要求し、かつその2次キャッシュ500にはブロックデータがSharedステートで残る。
【0058】
コマンドがリードExで2次キャッシュ500の更新指示信号があり、ステートがExclusiveの場合、リクエスト生成回路190は、プロセッサ400に対してインタベンションExclusiveリクエストを発行する。このインタベンションExclusiveリクエストは、2次キャッシュ500からのブロックデータ読み出しを要求し、かつその2次キャッシュ500のブロックデータを無効化する。
【0059】
コマンドがリードExで2次キャッシュ500の更新指示信号があり、ステートがSharedの場合,およびコマンドがインバリデートで2次キャッシュ500の更新指示信号があり、ステートがSharedの場合、プロセッサ400に対してインバリデートリクエストを発行する。このインバリデートリクエストは、2次キャッシュ500のブロックデータを無効化する。
【0060】
次に、このように構成された第1の実施の形態に係るプロセッサ制御装置の動作について、図1,図4〜図7,および図11のタイムチャートを参照して説明する。
【0061】
システムバス200にコヒーレンシリクエストが発行される(t01)と、そのアドレスおよびコマンドはリクエスト受信バッファ110で受信される(t02)。このリクエスト受信バッファ110内のアドレスは直ちにアドレス変換部120に送られ(t02)、選択回路121によりコピータグ300をリードするためのインデックスアドレスに変換される。
【0062】
このインデックスアドレスはアドレス出力バッファ130に送られ、アドレス出力バッファ130は、コピータグ300にアドレスを出力(t03,t04)する。ここでアドレス比較部160からコピータグ300の更新指示信号が出力されていなければ、コピータグ制御部140は、2クロックサイクル連続して(t03,t04)コピータグ300へのチップセレクト信号を有効にする。
【0063】
コピータグ300からは規定のタイミング後にリードに対するタグアドレスおよびステートが出力(t05,t06)され、データ受信バッファ150で受信される。
【0064】
この時、コピータグ制御部140は、1クロックサイクル目のリード実行を示す出力信号140s,および2クロックサイクル目のリード実行を示す出力信号140tをともに有効にする。リードされたタグアドレスおよびステートは、データ受信バッファ150からアドレス比較部160に転送される。
【0065】
アドレス比較部160では、タグアドレスはリクエスト受信バッファ110からのアドレスを選択回路161で選択したタグアドレスと比較回路162aおよび162bで比較される。さらに、検出回路163は、ステートと、リクエスト受信バッファ110からのコマンドと、比較回路162aおよび比較回路162bの一致比較結果とともに判定回路163dおよび判定回路163eにて2次キャッシュ500およびコピータグ300の更新が必要かどうかを判断する。
【0066】
コピータグ300の更新が必要となったならば、セレクタ167で選択したタグアドレス,およびステート生成回路164で生成したステートをデータ出力バッファ170にコピータグ300にライトするためのタグアドレスおよびステートとして格納するとともに、コピータグ制御部140に更新指示信号を通知してコピータグ300へのチップセレクト信号およびライトイネーブル信号をともに有効(t10)にして、アドレス出力バッファ130からアドレスを出力(t10)する。
【0067】
続いて、データ出力バッファ170からタグアドレスおよびステートを出力(t11)してライトを実行する。
【0068】
また、リクエスト生成回路190は、プロセッサ400に対するリクエストを生成し、リクエスト発行バッファ195からプロセッサ400にリクエストを発行する。
【0069】
システムバス200に続けてコヒーレンシリクエストが発行される(t05)と、同様にそのアドレスおよびコマンドがリクエスト受信バッファ110で受信され、アドレス変換部120で変換されたアドレスがアドレス出力バッファ130に格納される。
【0070】
アドレス出力バッファ130は、コピータグ300にアドレスを出力(t07,t08)するが、アドレス比較部160から前のコピータグ300のリードによるコピータグ300の更新指示信号が出力されているため、コピータグ制御部140は、1クロックサイクルのみチップセレクト信号を有効(t07)にするだけで、2クロックサイクル目はチップセレクト信号を無効(t08)にする。この場合、2クロックサイクル目のリード実行を示す出力信号140tが有効にならず、アドレス比較部160からリトライ制御部180に通知して、システムバス200に対してコヒーレンシリクエストのリトライを要求する。
【0071】
以上説明したように、第1の実施の形態によれば、コピータグ300へのライトサイクルの実行を観測してリードサイクルの実行を制御し、コピータグ300へのアクセスを効率化したことにより、LSIのピン数および外部に接続されるメモリの数を増やすことなく、2ウェイ構造を持つ2次キャッシュ500に対応することができる。
【0072】
(2)第2の実施の形態
第1の実施の形態では、コピータグ300のリードが1クロックサイクルしか実行できず、必要なタグアドレスおよびステートの半分しかリードできなかった場合、システムバス200に対してコヒーレンシリクエストのリトライを要求するとしたが、1クロックサイクル分のタグアドレスおよびステートでも判断できる場合がある。2ウェイ構造の2次キャッシュ500であっても、ある特定のアドレスに対する有効なブロックデータは一方のウェイにしか存在しない。そこで、1クロックサイクル分のタグアドレスおよびステートに、そのアドレスに対する有効なタグアドレスおよびステートが格納されていれば、残りのタグアドレスおよびステートには有効なタグアドレスおよびステートは存在しないことになる。このことを利用して1クロックサイクルしかリードが実行できなかった場合でも、必ずしもコヒーレンシリクエストのリトライをせずに完了させることができる。これは、図7の検出回路163を変更することで実現できる。
【0073】
図12を用いて説明する。タグアドレスの一致比較結果とステートおよびコマンドから判定回路163d,163eにてウェイ毎の更新判定をするところまでは、第1の実施の形態と同じである。先に説明したように、1クロックサイクル目にリードされたタグアドレスおよびステートで2次キャッシュ500およびコピータグ300の更新が確定するか、あるいは2クロックサイクルともリードできてかつどちらかのウェイで更新が必要とされた場合にコピータグ300への更新指示信号を出力するので、判定回路163dの出力信号とコピータグ制御部140の出力信号140sとの論理積を論理積回路163kでとった信号と、判定回路163eの出力信号とコピータグ制御部140の出力信号140tとの論理積を論理積回路163lでとった信号との論理和を論理和回路163mで生成した信号がコピータグ制御部140への更新指示信号となる。
【0074】
一方、リトライについては、1クロックサイクル目にリードされたタグアドレスおよびステートで2次キャッシュ500およびコピータグ300の更新が確定するか、もしくは2クロックサイクルともにリードできればリトライする必要はなくなるので、コピータグ制御部140の出力信号140sと出力信号140tの論理否定したものとの論理積を論理積回路163jでとった信号と、判定回路163dの出力信号の論理否定をとった信号との論理積を論理積回路163nで生成した信号とが、リトライ指示回路165への出力となる。
【0075】
第2の実施の形態によれば、コピータグ300へのライトサイクルの実行を観測してリードサイクルの実行を制御し、コピータグ300へのアクセスを効率化したことにより、LSIのピン数および外部に接続されるメモリの数を増やすことなく、2ウェイ構造を持つ2次キャッシュ500に対応することができる。
【0076】
なお、上記各実施の形態では、2次キャッシュ500が2ウェイ構造の場合について説明したが、2ウェイ以上のウェイ構造を持つ2次キャッシュ500の場合にも、アドレス比較部160での処理を2つ以上のタグアドレスおよびステートについて行うことにより、同様の作用および効果を得ることができる。
【0077】
【発明の効果】
本発明による効果は、LSIのピン数および外部に接続されるメモリの数を増やすことなく、2ウェイあるいはそれ以上のウェイ構造を持つ2次キャッシュに対応できることである。その理由は、コピータグへのライトサイクルの実行を観測してリードサイクルの実行を制御することにより、コピータグへのアクセスを効率化したためである。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係るプロセッサ制御装置の構成を示す回路ブロック図である。
【図2】本発明のプロセッサ制御装置の動作を示すタイムチャートである。
【図3】図1中のリクエスト受信バッファのより詳しい構成を示す図である。
【図4】図1中のアドレス変換部のより詳しい構成を示す回路図である。
【図5】図1中のコピータグ制御部のより詳しい構成を示す回路図である。
【図6】図1中のアドレス比較部のより詳しい構成を示す回路図である。
【図7】図6中の検出回路のより詳しい構成を示す回路図である。
【図8】図7中の判定回路の判定論理を説明するテーブルである。
【図9】図6中のステート生成回路が生成するステートを説明するテーブルである。
【図10】図1中のリクエスト生成回路が発行するリクエストを説明するテーブルである。
【図11】第1の実施の形態に係るプロセッサ制御装置の動作を示すタイムチャートである。
【図12】本発明の第2の実施の形態に係るプロセッサ制御装置における検出回路のより詳しい構成を示す回路図である。
【図13】本発明のプロセッサ制御装置が配設されたマルチプロセッサシステムを示す回路ブロック図である。
【図14】アドレスの構成を説明する図である。
【図15】図13中の2ウェイ構造の2次キャッシュのタグ部を説明する図である。
【図16】図13中のコピータグの構成について説明するテーブルである。
【図17】図13中のコピータグの動作について説明するタイムチャートである。
【符号の説明】
100 プロセッサ制御装置
110 リクエスト受信バッファ
120 アドレス変換部
121 選択回路
130 アドレス出力バッファ
140 コピータグ制御部
141a〜141d フリップフロップ
142a〜142d フリップフロップ
143 論理積回路
144 論理和回路
145 フリップフロップ
146 否定論理和回路
147 フリップフロップ
148 フリップフロップ
149a〜149d フリップフロップ
150 データ受信バッファ
160 アドレス比較部
161 選択回路
162a,162b 比較回路
163 検出回路
163a〜163c デコーダ
163d,163e 判定回路
163f 論理和回路
163h,163i 論理積回路
163j 論理積回路
163k 論理積回路
163l 論理積回路
163m 論理和回路
163n 論理積回路
164 ステート生成回路
165 リトライ指示回路
166a,166c バッファ
166b,166d バッファ
167 セレクタ
168 バッファ
169 バッファ
170 データ出力バッファ
180 リトライ制御部
190 リクエスト生成回路
195 リクエスト発行バッファ
200 システムバス
300 コピータグ
400 プロセッサ
500 2次キャッシュ
600 メモリ制御部
700 I/O制御部
Claims (1)
- 2ウェイ構造を持つ2次キャッシュを備える複数のプロセッサが2ウェイ構造を持つコピータグを備えるプロセッサ制御装置を介してシステムバスに接続されたマルチプロセッサシステムの前記プロセッサ制御装置において、
前記システムバスに発行されたコヒーレンシリクエストのアドレスおよびコマンドを受信するリクエスト受信バッファと、
このリクエスト受信バッファに受信されたコヒーレンシリクエストのアドレスをインデックスアドレスに変換するアドレス変換部と、
このアドレス変換部により変換されたインデックスアドレスを前記コピータグに対して出力するアドレス出力バッファと、
前記コピータグのリードアクセスおよびライトアクセスを制御するコピータグ制御部と、
前記コピータグからリードされたタグアドレスおよびステートを受信するデータ受信バッファと、
前記コピータグ制御部を制御して前記コピータグのリードアクセスを2クロックサイクル連続して行うことにより、2ウェイのタグアドレスおよびステートの連続リードに対応し、前記リクエスト受信バッファのコヒーレンシリクエストのアドレスおよびコマンドと前記コピータグからリードした2ウェイのタグアドレスおよびステートとを比較して前記コピータグの更新が必要かどうかを判断するアドレス比較部と、
前記コピータグの更新が必要な場合に前記コピータグにライトするタグアドレスおよびステートを出力するデータ出力バッファと、
前記システムバスに発行されたコヒーレンシリクエストをリトライさせるためのリトライ制御部とを備え、
前記コピータグ制御部が、前記コピータグをリードアクセスする場合、1クロックサイクル目のリード信号は前記リクエスト受信バッファからのコヒーレンシリクエスト受信通知信号そのものを使用し、2クロックサイクル目のリードを行うかどうかを示す信号は同コヒーレンシリクエスト受信通知信号をフリップフロップにて保持したものと前記アドレス比較部からのコピータグ更新指示信号を論理否定したものとの論理積から生成することを特徴とするプロセッサ制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000383258A JP3644380B2 (ja) | 2000-12-18 | 2000-12-18 | プロセッサ制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000383258A JP3644380B2 (ja) | 2000-12-18 | 2000-12-18 | プロセッサ制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002182979A JP2002182979A (ja) | 2002-06-28 |
JP3644380B2 true JP3644380B2 (ja) | 2005-04-27 |
Family
ID=18850943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000383258A Expired - Fee Related JP3644380B2 (ja) | 2000-12-18 | 2000-12-18 | プロセッサ制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3644380B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307160B2 (en) | 2009-01-30 | 2012-11-06 | Sony Corporation | Interface apparatus, calculation processing apparatus, interface generation apparatus, and circuit generation apparatus |
-
2000
- 2000-12-18 JP JP2000383258A patent/JP3644380B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307160B2 (en) | 2009-01-30 | 2012-11-06 | Sony Corporation | Interface apparatus, calculation processing apparatus, interface generation apparatus, and circuit generation apparatus |
Also Published As
Publication number | Publication date |
---|---|
JP2002182979A (ja) | 2002-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5283886A (en) | Multiprocessor cache system having three states for generating invalidating signals upon write accesses | |
US6622214B1 (en) | System and method for maintaining memory coherency in a computer system having multiple system buses | |
US5119485A (en) | Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation | |
US7827354B2 (en) | Victim cache using direct intervention | |
US5903911A (en) | Cache-based computer system employing memory control circuit and method for write allocation and data prefetch | |
JP3281893B2 (ja) | キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム | |
KR100274771B1 (ko) | Smp 버스의 공유 상태에서의 캐시 라인들의 공유 개입 방법 | |
JP2717752B2 (ja) | プロセッサ | |
US5778431A (en) | System and apparatus for partially flushing cache memory | |
US20100064107A1 (en) | Microprocessor cache line evict array | |
US6751705B1 (en) | Cache line converter | |
KR19980079663A (ko) | Smp 버스의 최근 판독 상태에서의 캐시 라인들의 공유 개입 방법 | |
US5918069A (en) | System for simultaneously writing back cached data via first bus and transferring cached data to second bus when read request is cached and dirty | |
JP2000010860A (ja) | キャッシュメモリ制御回路及びプロセッサ及びプロセッサシステム及び並列プロセッサシステム | |
US7117312B1 (en) | Mechanism and method employing a plurality of hash functions for cache snoop filtering | |
JPH0797352B2 (ja) | コンピュータ・システム及び入出力コントローラ | |
JP3068469B2 (ja) | 2次レベルキャッシュメモリシステム | |
US5557622A (en) | Method and apparatus for parity generation | |
JPH03189845A (ja) | 階層メモリ・システムおよびキヤツシユ・メモリ・サブシステム | |
JP3644380B2 (ja) | プロセッサ制御装置 | |
EP0412353A2 (en) | Multiprocessor cache system having three states for generating invalidating signals upon write accesses | |
US6839806B2 (en) | Cache system with a cache tag memory and a cache tag buffer | |
US5696938A (en) | Computer system permitting mulitple write buffer read-arounds and method therefor | |
JPH0529943B2 (ja) | ||
JPH0736170B2 (ja) | マルチプロセッサシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040809 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041008 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041206 |
|
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: 20050111 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050124 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |