主記憶にアクセスしないロード・ストアのテスト方法

 デバックのため、急遽設計部門でテストプログラムを作ることになった。テストプログラム開発担当の部署に頼んでいる時間的余裕がなかったのだ。
 問題のテスト方法はロード・ストアが発生する。これに悩んだ。なぜなら、主記憶にアクセスするためにはメモリコントローラの初期化が必要で、いままでやったことがなかったからだ。これを今から作るとなると何をデバックしているのかわからなくなってしまう恐れがあった。
 そこで思いついたのはキャッシュのステートを騙してストア動作時に主記憶へアクセスに行かず、プロセッサ内部で完結するように細工すること。こうすればプロセッサのみの初期化だけでよい。テストプログラムの骨組みとなるコードは持っている。
 テスト環境を整理すると、マルチプロセッサ対応のMOESIキャッシュプロトコルを実装しているプロセッサで、1個だけがテスト対象。キャッシュのステートによっては主記憶への掃き出しが発生してしまいハングアップしてしまう。
 ここでキャッシュのタグを操作し、Exclusiveステートとした。こうしておけばキャッシュへの書き込みをしても主記憶と一致しているとみなされ、実メモリへのアクセスは発生しない。
 このようにしてテストプログラムを作成し、ストア動作を頻発させて論理障害を発見することができた。
 このテスト方法の考え方は後に重要となる。LSIテスタで試験を抜けてしまう不良チップを選別するのに、キャッシュ上のみで動作するプログラムが作成された。当然、チップのみで計算機システムには接続されていない。これにより動作周波数を上げてチップの試験を行うことができる。

 実はテストプログラムを作るときに最初勘違いをしていて、Modifiedステートにして作っていた。キャッシュのデータはdirtyなので主記憶に書き出されてしまう。ストア命令を実行したとたんハングアップしてしまった。

MOESIプロトコルの元となるMESIプロトコルの説明
http://ja.wikipedia.org/wiki/MESIプロトコル

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック