Article View: fj.os.msdos
Article #170Re: CPU Cache & Kermit 3.13 8 について
From: Fukuzawa Yoshiyuki
Date: Tue, 20 Jun 2000 00:00
Date: Tue, 20 Jun 2000 00:00
30 lines
2499 bytes
2499 bytes
福沢です。 "IIJIMA 'Delmonta' Hiromitsu" <L94102@mail.ecc.u-tokyo.ac.jp> wrote in message news:394CAB49.886C9944@mail.ecc.u-tokyo.ac.jp... > ご存じのように、486 以降のキャッシュを積んだマシンでは、非常に > おおざっぱに言って、いま実行中の近辺のコードを「コードキャッシュ」 > に、最近アクセスしたデータを「データキャッシュ」に保管します。 > > 「実行中にコードを書き換える」ということをやると、その結果は、 > コードではないメモリの書き替えの場合と同様に、データキャッシュに > 保管され、コードキャッシュにはすぐには反映されません。ですから、 > > ○キャッシュのない 386 以下のマシンでは、書き替えた > あとのコードは、書き替え時にメモリ(DRAM)に送られ、 > 実行時にメモリから読み出されるので、きちんと意図した > とおりに実行される > > ○キャッシュのある 486 以降では、書き替え前の内容が > すでにコードキャッシュに入っていると、データキャッシュ > (と DRAM;ただし、Pentium 以降では DRAM への書き込みが > 遅れることがある)に入っている書き替え後の内容ではなく、 > コードキャッシュにある書き替え前の内容が実行される > > ということになってしまいます。 自己書き換えのコードによる問題は、キャッシュではなく パイプラインやプリフェッチによるものだと思っていたんですが。 まぁ原因は一緒ですけども。 うろ覚えなんですが、386でもすぐ近くのコードを書き換えると プリフェッチの影響でうまくいかなかったように記憶しています。
Technical Details
Message-ID:
<8io0ds$sfi$1@newsgw7.odn.ne.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<3948f293_1@news3.prserv.net> <394CAB49.886C9944@mail.ecc.u-tokyo.ac.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 1117a5,af5d54a174f35587 X-Google-Attributes: gid1117a5,public X-Google-Thread: ff2c9,e259f40b091b801d X-Google-Attributes: gidff2c9,public From: "Fukuzawa Yoshiyuki" <lucky2@pop12.odn.ne.jp> Subject: Re: CPU Cache & Kermit 3.13 8 について Date: 2000/06/20 Message-ID: <8io0ds$sfi$1@newsgw7.odn.ne.jp> X-Deja-AN: 636820465 Content-Transfer-Encoding: 7bit References: <3948f293_1@news3.prserv.net> <394CAB49.886C9944@mail.ecc.u-tokyo.ac.jp> X-Priority: 3 Content-Type: text/plain; charset="iso-2022-jp" X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700 X-Complaints-To: news@odn.ad.jp X-Trace: newsgw7.odn.ne.jp 961512700 29170 210.228.200.43 (20 Jun 2000 14:51:40 GMT) Organization: odn.ne.jp X-MSMail-Priority: Normal Mime-Version: 1.0 NNTP-Posting-Date: 20 Jun 2000 14:51:40 GMT Newsgroups: fj.os.msdos,fj.comp.arch