なぜ1541はとても遅かったのですか?
64で使用するために販売されたCommodore1541フロッピーディスクドライブは、歴史的および技術的な理由で悪名高いほど低速でした。
マーケティングは1540との互換性を主張しました。Vic-20で販売されたフロッピードライブは、6522 VIAチップのシフトレジスタが機能しなかったために低速でした。そのため、バイト単位ではなくビット単位で転送する必要がありました。時間。
その後、Vic-20とは異なり、64のビデオチップは8本のアクティブなスキャンラインごとに1本のバスを完全に引き継ぐ必要があるため、さらに遅くなる必要がありました。
さて、これら2つの要因の最悪の組み合わせを考えると、問題を軽減するための開発時間が許されていないため、ドライブが水平ブランクあたり1ビット= 63マイクロ秒しか転送できなくなることがわかります。1 /(63e-6)= 15873ビット/秒= 1984バイト/秒。
しかし、明らかに実際の速度はわずか400バイト/秒でした。
歴史的問題と技術的問題の不幸な組み合わせがあっても、実際の速度が可能と思われる速度の5分の1にすぎなかったのはなぜですか?
回答
ドライブは、水平ブランクごとに1ビット= 63マイクロ秒しか転送できなくなる可能性があります。1 /(63e-6)= 15873ビット/秒= 1984バイト/秒。
これは、1バイト内の送信中のビットレートになりますが、バイトはフレーム化されてハンドシェイクされるため、1バイトあたり平均160 µsが追加されます。結果として(63 * 8) + 160 µs
、またはバイトあたり約664 µsになります。したがって、上位転送速度は1500バイト/秒以下です。
上記の数値は絶対最小値であり、バイト間の時間は1000 µsに達する可能性があり、それでも仕様の範囲内です。追加のターンアラウンドタイムは、コマンドの前とブロック/コマンドの間にあります。次に、1541は反応して応答するのに時間が必要です。そして最後に、C64側も純粋なビット転送を超えた管理を必要とします。これらすべてが合計されます。
しかし、明らかに実際の速度はわずか400バイト/秒でした。
何よりもまず、これらの400バイト/秒は実際のFDドライブからの読み取りに関するものであることを覚えておくことが重要です。実際の頭の動きで、検索の待ち時間、転送、方向転換。よく使用されるテストは、185ブロックのプログラムを読み取ることです。これは、少なくとも10回のトラック変更などを意味します。
機械式ドライブなしで変更されていないC64(スピードローダーなし、すべての元のルーチンが使用されている)を使用した実際の転送速度の優れたベンチマークは、SD2IECインターフェイスである可能性があります。650バイト/秒の平均スループットを提供します。SD2IECは本質的に、シリアルIECを直接処理する8MHzで動作するAtmelATMegaです。その応答と転送時間は可能な最大値に近いです。SD / MMCからの読み取りには、機械的な動き、検索の待ち時間、SD / MMCからコントローラーRAMへの高速データ転送は含まれません。