さて、CPU によりロスレス圧縮処理まで終わった画像データが A に保存されます。
その後、A から B に画像を CPU のブロック転送命令により転送しようとします。ですが、仮にこの時に、DMA コントローラが起動していて C へデータを転送していると画像データを A から B に転送することが出来ません。
しかしながら、カメラの連写は進んでいきます。A には写真1枚分のメモリ空間しか有りません。そして、Ducati は最高でも秒間 3.38枚 (ロスレス12bit RAW の場合) しか書き込むことが出来ません。そのため、D3 の秒間最高9枚には追いつくことが出来ません。
では JPEG ではどうでしょうか。JEPG はファイルサイズが 5.7MB です。ということは、A には3枚程度は保存することが可能です。
DMA コントローラが B をロックして C に転送中であっても、ロスレス圧縮12bitRAW より3倍程度時間を稼ぐことが可能です。また、B から Cに転送するデータ量が半分になりますので、DMA コントローラが B をロックしている時間も半分になります。
B のロックが解除された直後に、CPU は A から B へデータをブロック転送します。その速度は理論値最高 4264MB/s にも達するので、Ducati と比較にはなりません。一瞬で終了します。
その後、A を空にしてまた連写を開始し、DMA コントローラは B から C へデータを転送します。ですので、JPEG の場合は途切れずに連写が可能なのだと思います。
私はアマチュアで PC を使っている者ですが、幸いにして PC-9801/9821 のハードウェアをアセンブリ言語で叩いたことがあります。(PC-9801/9821 の技術解説資料なら沢山持っています)
そのため、この程度でしたら想像できますが、なにぶんにもアマチュアな者でプロの方には負けます。
D3 のメモリの使い方は、カタログ数値から逆算するとカメラ全体の DRAM 容量は 512MB, そのうちファームウェアの作業領域が25D6MB, 撮影バッファが 256MB のようです。
PC と同じと考えると、カメラにはメイン CPU の他に、DMA (Direct Memory Access) コントローラが搭載されているはずです。撮影中は CPU がカメラのコントロール及び圧縮に使われているはずのですので、メモリ-メモリ間の転送及び撮影バッファからメモリーカードへの転送は DMA コントローラが一手に引き受けているはずです。
CPU がソフトウェアでメモリ-メモリ間の転送をしていたら無駄なので、それ専用のハードウェアが搭載されていることが多いです。それが DMA コントローラです。
試写はやはり私と同じような結果になりましたね。
D2Hを使っていた時は連続撮影枚数なんて気にしたことはなかったのですが、D3になってDucatiでも不十分と感じるとは、欲求は飽くなきものです…。