第 6 章 バス・サイクル
6.3 メモリ・リード&ライト
データ・ステートを実行する。このステートへ移行する唯一の目的は、バス遷移 がパイプライン動作中ににより引き起こすバス・コンテンションを防止すること にある。
バッファにアドレスおよびデータを保管し、
BRDY#
を戻し、のちにメモリへのス トアを実行する。プロセッサがライト・サイクル中にEWBE#
をネゲートしてサン プリングする場合、EWBE#
がアサートされてサンプリングされるまで、ある活動 を一時停止する。「EWBE#
(外部ライト・バッファの空き)」の項を参照。図45
で は、命令のシリアル化を実行中に二次ライト・サイクルが発生している。プロセッ サはEWBE#
がアサートされてサンプリングされるまで、次のサイクルを遅らす。Read Cycle Write Cycle Write Cycle (Next Cycle Delayed by EWBE#) CLK
A[31:3]
BE[7:0]#
ADS#
M/IO#
D/C#
W/R#
BREQ D[63:0]
DP[7:0]
CACHE#
EWBE#
KEN#
ADDR DATA IDLE ADDR DATA DATA IDLE ADDRDATA DATA IDLE IDLE IDLE IDLE IDLE ADDR
ミスアラインド・シングル転送メモリ・リード&ライト
図
46
に、ミスアラインド(スプリット)メモリ・リードに続くミスアラインド・メモリ・ライトを示す。「
SCYC
(スプリット・サイクル)」の項に定義された通り、アライ メントのとれていないサイクルはすべてミスアラインドと判断される。ミスアラ インド・アクセスに遭遇した場合、プロセッサは、アクセスを完了するために必要 なバス・サイクルのペア(それぞれが、それ自身のADS#
およびBRDY#
を伴う)を決定する。
AMD-K6
プロセッサは、ミスアラインド・メモリ・リードおよびメモリ・ライトを、最 下位バイト(LSB
)を先に、次いで最上位バイト(MSB
)を実行する。表20
に、こ の順序を示す。図46
の最初のメモリ・リード・サイクルでは、プロセッサは最下位 バイトを読み込む。プロセッサがBRDY#
をアサートされた状態でサンプリング した直後に、プロセッサは2
番目のバス・サイクルをドライブして最上位バイトを 読み込み、ミスアラインド転送を完了する。表
20.
ミスアラインド転送時のバス・サイクル・オーダType of Access First Cycle Second Cycle
Memory Read LSBs MSBs
Memory Write LSBs MSBs
同様に、図
46
のミスアラインド・メモリ・ライト・サイクルでは、先ずLSB
がメモリ・バスに転送されている。次のサイクルで、プロセッサが
BRDY#
をアサートされ た状態でサンプリングした後、MSB
はメモリ・バスに書き込まれる。LSB MSB LSB MSB
Memory Read (Misaligned) Memory Write (Misaligned)
CLK A[31:3]
BE[7:0]#
ADS#
M/IO#
D/C#
W/R#
D[63:0]
BRDY#
ADDRDATA DATA IDLE ADDRDATA DATA IDLE ADDR DATA DATA DATAIDLE ADDR DATA DATA DATA IDLE
図
46.
ミスアライメンド・シングル転送メモリ・リード&ライトバースト・リードおよびパイプライン方式バースト・リード
図
47
に、通常のバースト・リード・サイクルおよびパイプライン方式バースト・リード・サイクルを示す。
AMD-K6
プロセッサはCACHE#
とADS#
を一緒にドラ イブし、その時点でのバス・サイクルがバースト・サイクルであることを指定す る。プロセッサが最初のBRDY#
と共にKEN#
をアサートされた状態でサンプリ ングした場合、プロセッサはバースト転送を実行する。バースト転送の間、シス テム・ロジックはBE[7:0]#
を無視し、プロセッサがA[31:3]
上でアサートした開 始アドレスで開始される全8
バイトを戻さなければならない。開始アドレス次第 では、システム・ロジックはバースト内の各転送の連続するクワッドワード・アド レス(A[4:3]
)を(表21
に示す)決定しなければならない。プロセッサは
2
番目、3
番目、および4
番目のクワッドワードが、表21
に示すシーケ ンスで発生することを予期する。表
21.
バースト時のA[4:3]
アドレス生成シーケンスAddress Driven By
Processor on A[4:3]
A[4:3] Addresses of Subsequent Quadwords* Generated By System Logic Quadword 1 Quadword 2 Quadword 3 Quadword 4
00b 01b 10b 11b
01b 00b 11b 10b
10b 11b 00b 01b
11b 10b 01b 00b
Note:
* quadword = 8 bytes
図
47
では、プロセッサは全バースト・リード・サイクルにわたりCACHE#
をドライ ブしている。最初の バースト・リード・サイクルで、プロセッサはA D S #
とCACHE#
をドライブし、次いでADS#
をネゲートするクロック・エッジ後にクロッ ク・エッジに始まる各クロック・エッジでBRDY#
をサンプリングする。プロセッサ はKEN#
を、最初のBRDY#
がアサートされた状態でサンプリングされたクロッ ク・エッジで、アサートされた状態でサンプリングし、32
バイトのバースト・リー ド・サイクルを実行し、計4
つのBRDY#
を予期する。図47
に示されたのは、ウエクロック・エッジで、
NA#
をアサートされた状態でサンプリングしている。NA#
が アサートされるということは、システム・ロジック側がプロセッサに対し、早期に 次のアドレスを出力するよう要求していることを意味する(またパイプライン転 送要求ともいう)。その時点でのサイクルの完了を待たずに、プロセッサは次の バースト・サイクルに対してADS#
および関連する信号をドライブする。パイプ ライン化により、CPU
のサイクル間アイドル・タイムを減少させることができる。DATA1 DATA2 DATA3
Burst Read Pipelined Burst Read
ADDR1 ADDR2 ADDR3
Burst Read CLK
A[31:3]
BE[7:0]#
ADS#
M/IO#
D/C#
W/R#
NA#
D[63:0]
CACHE#
KEN#
BRDY#
DATA DATA DATA DATA
ADDR IDLE ADDRDATA DATA IDLE PIPE-ADATA DATA DATA DATA IDLE
-NA
図
47.
バースト・リードおよびパイプライン方式バースト・リードバースト・ライトバック
図
48
に、バースト・リードおよびそれに続くライトバック・トランザクションを示す。AMD-K6
プロセッサは、下記の条件下でライトバックを開始する。■ リプレースメント:
その時点で有効(
Valid
)エントリで埋められたキャッシュ・ラインに対して キャッシュ・ライン・フィルが開始される場合、プロセッサLRA
アルゴリズム を使用して、リプレースするラインを選択する。修正ステートにあるデータ・キャッシュ・ラインへのリプレースメントが行われる前に、修正されたライン はメモリにライトバックされるよう、スケジューリングされる。
■ 内部スヌープ:
プロセッサは命令キャッシュ・ラインを読み取る場合はいつでもデータ・
キャッシュをスヌープし、またデータ・キャッシュ・ラインを書き込むときはい つでも命令キャッシュをスヌープする。このスヌーピングは、同じアドレスが 両方のキャッシュに保管されていないか、すなわち、自己修正コードの発生 を示す状況がないか、判断するために実行される。スヌープが修正ステー トでデータ・キャッシュをヒットする場合、そのラインは無効化(
Invalidate
)される前にメモリへライトバックされる。
■
WBINVD
命令:WBINVD
命令を実行する場合、プロセッサは修正済み(Modified
)ライン をすべてデータ・キャッシュにライトバックし、両方のキャッシュの全ライン を無効化(Invalidate
)する。■ キャッシュ・フラッシュ:
アサートされた状態の
FLUSH#
をサンプリングすると、プロセッサは、フ ラッシュ・アクノリッジ・ス ペ シャル・サ イク ル を 実 行し 、修 正 済 み(
Modified
)ラインをすべてデータ・キャッシュにライトバックし、両方の キャッシュの全ラインを無効化(Invalidate
)する。プロセッサは、照会またはフラッシュ・サイクル中、ライトバック・サイクルをドラ イブする。図
48
に示すライトバックは、キャッシュ・ライン・リプレースにより引き 起こされたものである。プロセッサはキャッシュ・ラインをフィルするバースト・リード・サイクルを完了させる。バースト・リード・サイクルの直後に、メモリにラ
Burst Read Burst Writeback from L1 Cache CLK
A[31:3]
BE[7:0]#
ADS#
CACHE#
M/IO#
D/C#
W/R#
D[63:0]
KEN#
BRDY#
WB/WT#
DATA DATA DATA DATA IDLE
ADDR ADDR DATA DATA DATA DATA IDLE
図