コンピュータアーキテクチャの話 (325) エラーの検出方法
GDDR5 DRAMは8ビットのデータにデータバスの値を反転するDBI信号を加えた9ビットデータをBurst Length=8のグループでまとめた72ビットのデータに対して、CRC-8-ATMでチェックビットを計算する。そしてデータを送った後で、EDC信号線を使って8ビットのチェックビットをシリアルに送る。このCRCでは、2ビットのエラーを検出することができる。
受け側では同様にチェックビットを計算し、EDC信号で送られたチェックビットと一致すればエラーなし、一致しなければエラーと判断する。そしてエラーの場合は、送り側に再送を依頼することで誤りを訂正する。
ただし、このCRCによるエラーの検出、訂正はGPUとGDDR5 DRAMの間の信号伝送のエラーに対するもので、メモリの中でのデータ化けを検出する機能はない。なお、JEDECの規格では、読み出し、書き込みともにCRCチェックをサポートすることが可能であるが、すべての機能をサポートすることは必須ではなく、例えばMicronのGDDR5 DRAMのドキュメントでは読み出し側しかCRCをサポートしていないと書かれている。原理的には、チェックビットを格納するメモリがあれば、読み出し時にCRCを計算してメモリの中でのデータ化けを検出することは可能であるが、読み出し時にエラーを検出してもGPUに正しいデータを再送してもらう訳にはいかない(どのアドレスの読み出しに対しても再送ができるためにはメモリに記憶されているすべてのデータをGPUが持っている必要があり、その場合は、そもそも外部のメモリチップは不要である)