またブログに書くのを忘れてたorz
今回から7章の内容に入ったんだけど,前回までのパイプラインが終わってしまったので,なんか盛り下がった感じがするw
以下適当にメモなど。
概要
- 日時:'10/05/23 17:30~21:00
- 場所:短歌会館
- 参加者:3人
- 7.1~7.3読み合わせ+MIPSエミュレータの製作
7.1 はじめに
- 学期末レポートはwikipediaからコピペですね,わかります。
- 2004年時点の1GB当たりのコストだからデータ古くね?
- 最近の博士論文の点数とか言われても,ねぇ?
7.2 キャッシュの基礎
- 近くに置いておけば遠くまで取りに行かなくてもいいよね,とかそんな話。
- ダイレクトマップ方式は元アドレスの下位アドレスをキャッシュのアドレスにそのまま使う。当然かぶるので元の上位アドレスをキャッシュ内に持っていて,これで識別する。
- 小数点以下切捨ての記号を始めてみた。これ一般的に使うの?それともこの本だけ?
- キャッシュミス時の対応としては,単純にストール(nop)してメインメモリからデータが読み出されるのを待つだけ。
- ライトスルー方式:書き込み時,メインメモリとキャッシュの両方を更新。
- ライトバック方式:書き込み時,キャッシュのみ更新。キャッシュが追い出される時,その内容を該当のメインメモリに書き込む。
7.3 キャッシュの性能の測定と改善
- キャッシュミスは滅茶苦茶痛い,とかそんな話。
- ダイレクトマップ方式:メインメモリとキャッシュの対応は固定。
- フルアソシアティブ方式:メインメモリとキャッシュの対応は任意。そのかわりキャッシュ内のどこにあるか分からないので,全部検索しないといけない。
- セットアソシアティブ方式:上記2つの折衷案。キャッシュがセットという単位に分割されていて,メインメモリといずれかのセットとの対応は固定,セット内は任意。
- セット内のブロック数を連想度というらしい。
- ヒット時間とミス率がトレードオフになっている?
- いかにメインメモリへのアクセスを避けるか。
- L1キャッシュは,まだうしろにL2キャッシュが控えているから多少ミスしてもいいのでとにかく急げ!という発想。
- L2キャッシュは,もうあとが無いのでミスしないようにゆっくり頑張れ!という発想。
MIPSエミュレータの製作
- 前回指摘されたことを自分のソースに反映しつつ,これからどうしようか考えてた。
- 命令中の任意のエリアを取ってくるメソッドがあれば便利。こんな感じ?
public int getField(int inst,int endIndex,int beginIndex){
return ((inst << (31 - endIndex)) >>> beginIndex);
}


最近のコメント