ทำไม 1541 ถึงช้าจัง?

Dec 13 2020

ฟล็อปปี้ดิสก์ไดรฟ์ Commodore 1541 ซึ่งขายเพื่อใช้กับรุ่น 64 นั้นช้าอย่างฉาวโฉ่ด้วยเหตุผลทางประวัติศาสตร์และทางเทคนิค :

  1. การตลาดยืนยันในความเข้ากันได้กับ 1540 ฟลอปปีไดรฟ์ที่ขายพร้อมกับ Vic-20 ซึ่งช้าเนื่องจากการลงทะเบียนกะในชิป 6522 VIA ไม่ทำงานดังนั้นจึงต้องโอนทีละเล็กน้อยแทนที่จะเป็นไบต์ที่ เวลา.

  2. จากนั้นมันก็ต้องช้าลงกว่าเดิมเพราะไม่เหมือนกับ Vic-20 ชิปวิดีโอของ 64 จะต้องเข้ายึดบัสหนึ่งในแปดบรรทัดการสแกนที่ใช้งานอยู่ทั้งหมด

เอาล่ะเมื่อรวมกันในกรณีที่เลวร้ายที่สุดของปัจจัยทั้งสองนี้โดยไม่อนุญาตให้ใช้เวลาในการพัฒนาเพื่อบรรเทาปัญหาเราจะเห็นว่าไดรฟ์สามารถถ่ายโอนได้เพียงหนึ่งบิตต่อช่องว่างแนวนอน = 63 ไมโครวินาที 1 / (63e-6) = 15873 บิต / วินาที = 1984 ไบต์ / วินาที

แต่เห็นได้ชัดความเร็วจริงเป็นเพียง 400 ไบต์ /วินาที

เหตุใดความเร็วจริงจึงเป็นเพียงหนึ่งในห้าของสิ่งที่ดูเหมือนจะเป็นไปได้แม้จะมีปัญหาทางประวัติศาสตร์และทางเทคนิคที่ไม่น่าพึงพอใจ

คำตอบ

14 Raffzahn Dec 13 2020 at 21:29

ไดรฟ์สามารถถ่ายโอนได้เพียงหนึ่งบิตต่อช่องว่างแนวนอน = 63 ไมโครวินาที 1 / (63e-6) = 15873 บิต / วินาที = 1984 ไบต์ / วินาที

นั่นจะเป็นบิตเรตระหว่างการส่งภายในหนึ่งไบต์ แต่ไบต์จะถูกล้อมกรอบและแฮนด์ฮัคซึ่งจะเพิ่มค่าเฉลี่ย 160 µs ต่อไบต์ ส่งผลให้(63 * 8) + 160 µsหรือ ~ 664 µs ต่อไบต์ ดังนั้นความเร็วในการถ่ายโอนส่วนบนจึงค่อนข้างที่หรือต่ำกว่า 1,500 ไบต์ / วินาที

ตัวเลขข้างต้นเป็นค่าต่ำสุดที่แน่นอนเวลาระหว่างถึงไบต์อาจยาวได้ถึง 1,000 s และยังอยู่ในข้อกำหนด เวลาหมุนเวียนเพิ่มเติมอยู่หน้าคำสั่งและระหว่างบล็อก / คำสั่ง ถัดไป 1541 ต้องใช้เวลาในการตอบสนองและตอบสนอง และในที่สุดฝั่ง C64 ก็ต้องการการจัดการที่ผ่านการถ่ายโอนบิตบริสุทธิ์เช่นกัน ทั้งหมดนี้เพิ่มขึ้น

แต่เห็นได้ชัดว่าความเร็วจริงเพียง 400 ไบต์ / วินาที

ก่อนอื่นสิ่งสำคัญคือต้องจำไว้ว่า 400 ไบต์ / วินาทีเหล่านี้เกี่ยวกับการอ่านจากไดรฟ์ FD ในโลกแห่งความเป็นจริง ด้วยการเคลื่อนไหวของศีรษะที่แท้จริงเวลาในการตอบสนองของการค้นหาการถ่ายโอนและการหมุนเวียน การทดสอบที่ใช้บ่อยคือการอ่านโปรแกรมบล็อก 185 ซึ่งหมายถึงการเปลี่ยนแปลงแทร็กอย่างน้อย 10 รายการและอื่น ๆ

เกณฑ์มาตรฐานที่ดีสำหรับอัตราการถ่ายโอนข้อมูลในโลกแห่งความเป็นจริงโดยใช้ C64 ที่ไม่ได้ปรับเปลี่ยน (ตัวโหลดแบบ nospeed รูทีนดั้งเดิมทั้งหมดที่ใช้) ที่ไม่มีไดรฟ์เชิงกลอาจเป็นอินเทอร์เฟซSD2IEC มันมีการส่งผ่านค่าเฉลี่ยของ650 ไบต์ / s SD2IEC โดยพื้นฐานแล้วเป็น Atmel ATMega ที่ทำงานที่ 8 MHz โดยตรงเพื่อจัดการกับอนุกรม IEC เวลาตอบสนองและการถ่ายโอนใกล้เคียงกับค่าสูงสุดที่เป็นไปได้ การอ่านจาก SD / MMC จะไม่มีการเคลื่อนไหวทางกลไกใด ๆ ความหน่วงในการค้นหาและการถ่ายโอนข้อมูลความเร็วสูงจาก SD / MMC ไปยังตัวควบคุม RAM