スプリットトランザクションバス

シェアードキャッシュやメインメモリのアクセスにかかる時間は、プロセサのサイクルで数えると数10~数100サイクル程度になり、アクセスの開始から終了の時点までコモンバスを占有してしまうと、大部分の時間はシェアードキャッシュやメインメモリのアクセス待ちとなり、バスの使用効率が非常に低くなってしまう。

このため、メモリのReadアクセス要求の送出が終わると、コモンバスでのプロセサとメモリの接続を解除する。そして、メモリのアクセスが終わり、データが準備できると、メモリがバスを要求して接続を確立し、データを送るという方法が取られる。

図3.5 スプリットトランザクションの動作例

図3.5はコマンドバスとデータバスの伝送の様子を示すものであるが、この例では、プロセサ0がコマンドバスを獲得してRC-0 Readコマンド(アドレスを含む)を送り、その次のサイクルには、プロセサ3がコマンドバスを獲得してWC-3 Writeコマンドを送っている。そしてWriteコマンドの場合は書き込みデータを送る必要があるので、プロセサ3はデータバスを獲得して書き込みデータWD-3を送る。一方、RD-0コマンドで動作を開始したメモリがアクセスを終わり、読み出しデータが使用可能になると、データバスを獲得して、そのデータを要求元のプロセサ0に送る。

コマンドの送出からReadデータを受け取るまでを1つのトランザクションとしてバスを占有すると、RC-0に対応するRD-0の転送が終了するまでプロセサ0がデータバスを占有することになり、その後でプロセサ3がWC-3、WD-3を送ることになるが、図3.5のようにコマンドの送出とデータの受け取りを分割して、個別のトランザクションとするスプリットトランザクションバスとすることにより、バスの使用効率を高めることができる。

なお、このような動作を可能にするためには、Readコマンドには要求元のプロセサ番号などのメモリデータの送り先の情報を含めておき、メモリモジュールは、この情報を使ってバスの獲得と送り先のプロセサを指定する機能を持つ必要がある。