Q:キャッシュのライトスルーモードとコピーバックモードって、どう違うのですか?
A:データキャッシュが有効であるとき、キャッシュの使い方にはライトスルーモードと
コピーバックモードという2種類の方式があります。
これらはメモリへの書き込み方法が異なり、一般的にコピーバックモードの方が高速に動作します。
ライトスルーモードでは、メモリの書き込み動作によって、キャッシュとメモリの両方が同時に更新
されます(68030のキャッシュはこの方式です)。
一方、コピーバックモードでは、メモリへ書き込んだふりをするだけで、実際にはキャッシュだけが更新されます。
このように、コピーバックモードではキャッシュと実際のメモリの内容が食い違うことが特徴です。
コピーバックモードでキャッシュだけに書き込まれたデータをダーティデータと呼びます。
ダーティデータはまだメモリに書き込まれていませんから、キャッシュをクリアしてしまうと
メモリに書き込んだはずのデータがなくなってしまうことになります。
そこで、適当なタイミングでダーティデータをメモリに書き込まなければなりません。
ダーティデータをメモリに書き込む動作をプッシュと呼びます。
プッシュはキャッシュが不足したときにMPUが勝手に行いますが、
プログラムでプッシュを明示することもできます。
なお、プッシュ動作はバースト転送と呼ばれる通常よりも高速な転送方法で行われます。
一般的にコピーバックモードの方が速いのは、実際にメモリへ書き込む回数が
ライトスルーモードよりもずっと少ないからです。コピーバックモードでは、同じアドレスへの
書き込みを何度繰り返しても、それがキャッシュに乗っている限り、
実際にメモリに書き込むのは最後にプッシュするときの1回だけだからです。
Q:パイプラインって何ですか?
A:68060が直接解釈できる機械語のレベルで、1つの命令を実行するには幾つかの
段階があります。命令の読み出し、演算、結果の書き込みなどです。
これらは68060の中の別々の場所で処理されています。
この別々の場所がベルとコンベアで繋がっていると考えて下さい。
ある命令の演算を始めたら、命令を読み出す場所はすぐに次の命令を読み出す作業
にかかるわけです。
このように複数の命令を動作の段階に応じて少しずつずらして同時に実行する様子を
パイプラインと呼びます。
Q:スーパースケーラって何ですか?
A: 68060が直接解釈できる機械語のレベルで、連続する2つの命令を実行するための
仕掛けがスーパースケーラです。68060にはパイプラインが2つあると考えて下さい。
同時に実行できる命令には幾つかの制約がありますが、命令1つ分の所要時間で2つ
の命令が実行できるようになるので処理が速くなります。
Q:ブランチキャッシュって何ですか?
A:条件付の分岐命令が現れると、パイプラインの流れがそこで滞ってしまいます。
なぜなら、分岐命令の直前の命令の演算が終了して条件が求まるまで、
分岐するかどうかわからないため、次の命令をパイプラインに入れられないからです。
そこで、68060では、いちど実行した条件付きの分岐命令の位置と分岐方向を
覚えておいて、次にその命令を実行するときは条件が求まる前に以前進んだ方向の
命令をパイプラインに入れてしまうという手法が使われています。
分岐命令の位置と分岐方向を覚えておくためのキャッシュがブランチキャッシュです。
勿論、分岐方向を間違えたときは分岐命令の直後からやり直さなければなりませんが、
それでも、分岐のための条件が求まるまで待つよりも速くなります。
Q:ローカルメモリって何ですか?
A:060turboのボード上にはSIMMと呼ばれるメモリモジュール(いわゆる増設RAM)
を装着するためのソケットが付いています。ここに取り付けられたSIMMによって提供される
メモリのことを、060turboにおける用語として、ローカルメモリと呼んでいます。
ローカルメモリにアクセスできるのは、ボード上の68060だけです。
(ボード上の68030からはアクセスできません)。
X68030本体のDMACからアクセスできないので、本体メモリとまったく同じに使うことはできません。
例えば、フロッピーディスクのアクセスやADPCMの使用が制限されます。
また、ローカルメモリのアドレスは上位8ビットが0でないため、アドレスを下位24ビットまでに
マスクしてしまうプログラムはローカルメモリを使えません。
ローカルメモリは本体メモリと比較してアクセスが高速です。通常のアクセスで本体よりも
1.5倍、キャッシュのプッシュ時のバースト転送では3倍も速いので、有効に利用すれば
動作速度の向上に繋がります。060turbo.sysではシステム関係の領域の大部分を
ローカルメモリにコピーして使うことができるようになっています。
Q:ハイメモリって何ですか?
A:X680x0で普通に使えるメモリは12MBまでです。
これを増やすには、従来は無視されたアドレスの上位8ビットを使う必要があります。
上位8ビットが0以外の特定の値のときだけアクセスできる増設メモリがX680x0で
いうところのハイメモリです。
060turboではローカルメモリと同じ意味になりますが、ローカルメモリの中でユーザが
使える領域だけをハイメモリと呼ぶ場合がありますので注意してください。