さて、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 コントローラです。
忘れて下さい。申し訳ありません。
前提条件として、
・D3 に使われているメモリは DDR2 SDRAM 533MHz 512MB だと思われます。
・このメモリの理論最高転送レート 4264MB/s です。
・このメモリは、読み込みと書き込みが同時には出来ません。
・512MB のうち、内蔵ファームウェアのワークエリアが 256MB, 連写バッファが 256MB だと思われます。
・Ducati の公称転送レートは 45MB/s です。
・DMA (Direct Memory Access) コントローラとはメインメモリと Ducati の間のメモリ転送を司るハードウェアです。起動すると CPU は連写バッファに読み書きすることが出来ません。
・内蔵ファームウェアのワークエリアのうち、写真一枚分の領域である約20MB (ロスレス圧縮14bit RAW が 16.3MBより) を A領域, 連写バッファである256MBを B領域, Ducati を C領域とします。
以上で前提条件は終わります。
さて、CPU によりロスレス圧縮処理まで終わった画像データが A に保存されます。
その後、A から B に画像を CPU のブロック転送命令により転送しようとします。ですが、仮にこの時に、DMA コントローラが起動していて C へデータを転送していると画像データを A から B に転送することが出来ません。
しかしながら、カメラの連写は進んでいきます。A には写真1枚分のメモリ空間しか有りません。そして、Ducati は最高でも秒間 3.38枚 (ロスレス12bit RAW の場合) しか書き込むことが出来ません。そのため、D3 の秒間最高9枚には追いつくことが出来ません。
ということで、13.3(MB) * 9(/s) = 119.7 (MB/s) の速度で書き込まれている B に DMA コントローラが割り込む余地はありません。
では 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 の技術解説資料なら沢山持っています)
そのため、この程度でしたら想像できますが、なにぶんにもアマチュアな者でプロの方には負けます。
どうでしょうか > ALL
間違っていたら随時訂正をしていただけると幸いです。