วันพฤหัสบดีที่ 24 สิงหาคม พ.ศ. 2549

megabyte เท่ากับเท่าไหร่กันแน่?

เมื่อวานได้เข้าประชุมเพื่อร่วมกำหนดคุณสมบัติเฉพาะของคอมพิวเตอร์ของหน่วยงานแห่งหนึ่ง ผมได้เสนอให้กำหนดนิยามของ KB, MB, GB ระหว่างหน่วยความจำของคอมพิวเตอร์ และอื่นๆ ให้แตกต่างกันอย่างชัดเจน อันเนื่องมาจากในเอกสารคุณสมบัติเฉพาะนั้น มีการใช้ MB, GB อยู่ทั้งสองความหมาย แต่ประเด็นนี้ตกไป เพราะกรรมการท่านอื่นเห็นว่าการวัดความจุพวกนี้เป็นการวัดแบบปกติวิสัยอยู่แล้ว ให้ดูตามสเปคของผู้ขายที่ระบุมาได้เลย ซึ่งผมก็ได้แต่ทิ้งข้อคิดเห็นเรื่องความสับสนที่จะเกิดขึ้นในการตรวจรับไว้เท่านั้น จึงขอบันทึกข้อเท็จจริงเรื่องความสับสนดังกล่าว ไว้ที่นี่ เพื่ออ้างอิงต่อไป และได้เข้าไปเพิ่มเติมเนื้อหาเรื่องนี้ใน วิกิพีเดียไทย เรื่อง เมกะไบต์ ไว้อีกทางหนึ่ง



  • สำหรับหน่วยความจำในคอมพิวเตอร์ทุกชนิด เช่น แรม, หน่วยความจำแคช จะมีการอ้างตำแหน่งหน่วยความจำด้วยเลขฐานสองอยู่แล้ว การผลิตหน่วยความจำชนิดนี้ จึงอ้างอิงขนาดเป็นพหุคูณของสอง ได้แก่


    • KB = 210 1,024 bytes

    • MB = 220 = 1,024 x 1,024 = 1,048,576 bytes

    • GB = 230 = 1,024 x 1,024 x 1,024 = 1,073,741,824 bytes


  • สำหรับหน่วยวัดอื่นๆ เช่น ความจุของหน่วยเก็บข้อมูลที่เป็นฮาร์ดแวร์ ได้แก่ ฮาร์ดดิสก์, แผ่นดีวีดี, Flash Drive, SD, MMC, CF, MS, และอื่นๆ รวมทั้งอัตราการส่งข้อมูล ความเร็วสัญญาณนาฬิกา จะอ้างอิงขนาดเป็นพหุคูณของสิบ ได้แก่


    • KB = 103 = 1,000 bytes

    • MB = 106 = 1,000,000 bytes

    • GB = 109 = 1,000,000,000 bytes


  • แบบ floppy disk เช่น ความจุแผ่น floppy disk แบบ 1.44 MB = 1.44 x 1,000 x 1,024 = 1,474,560 bytes

  • แผ่นซีดีรอม เป็นสื่อบันทึกข้อมูลชนิดเดียว ที่ใช้หน่วยเหมือนหน่วยความจำ เช่น ความจุแผ่น CD = 700 MB = 700 x 1,024 x 1,024 = 734,003,200 bytes แต่ในความเป็นจริงจะเป็นค่าประมาณ ค่าจริงๆ จะมากกว่านี้เล็กน้อย นอกจากนี้ ยังขึ้นอยู่กับโหมดการบันทึกด้วย คือการบันทึกข้อมูล จะใช้ sector ละ 2048 ถ้าบันทึกเป็น audio หรือ video cd จะใช้ sector ละ 2336 ทำให้ดูเหมือนบันทึกข้อมูลได้มากกว่าปกติ แต่จริงๆ แล้วการบันทึกข้อมูล ไบต์ที่หายไปจะถูกใช้เป็นข้อมูลสำหรับช่วยแก้ไขข้อผิดพลาด ทำให้ข้อมูลมีความถูกต้องแน่นอนกว่า audio และ video cd


การทดสอบ

เพื่อเป็นการยืนยันว่าการนิยามแบบนี้เป็นไปตามที่กล่าวมา โดยเฉพาะในส่วนของหน่วยเก็บข้อมูล ผมเลยลองโดย

  • เอา flashdrive ตัวหนึ่ง ที่บอกว่ามีขนาด 256 MB มาดูบนลินุกซ์พบว่า ขนาดทาง physical = 255,327,744 bytes = 255.3 MB ไม่ถึง 256 MB ด้วยซ้ำ ถ้าวัดขนาดด้วย MB แบบฐานสองแล้ว จะได้ = 255,327,744 / 1024 / 1024 = 243.5 MiB เมื่อฟอร์แมตแล้ว สามารถใช้ได้จริง 255,057,920 bytes

  • ยืม CF card จาก mrchoke มีขนาด 128 MB เช็คด้วยลินุกซ์ก็พบว่า ขนาดทาง physical = 128,188,416 bytes = 128.2 MB ถ้าวัดขนาดด้วย MB แบบฐานสอง จะได้ = 122.25 MiB

  • ฮาร์ดดิสก์ก็เช่นเดียวกัน และมีการเขียนนิยามของ 1 GB = 1,000,000,000 Bytes ไว้ด้วยบนตัวฮาร์ดดิสก์


ทางออกที่เหมาะสม

การใช้ KB, MB, GB ซึ่งใช้ prefix แบบ SI กับหน่วยความจำนั้นไม่ถูกต้อง เนื่องจากผิดคำนิยาม แต่ก็มีการใช้กันจนชิน เป็นเรื่องปกติ จึงได้มีการกำหนดมาตรฐาน standard IEC prefixes ไว้ โดยถ้าเป็นการวัดหน่วยที่เป็นแบบฐานสอง เช่นการวัดขนาดหน่วยความจำ จะใช้ KiB, MiB, GiB, ... แทน KB, MB, GB, ... ทำให้การระบุหน่วยวัดมีความชัดเจนขึ้น ถ้ามีการใช้ที่แพร่หลาย ปัญหาความสับสนนี้ก็จะหมดไป บนระบบปฏิบัติการลินุกซ์เองก็เริ่มใช้หน่วยเป็้น KiB, MiB, GiB แล้วนะครับ ลองสังเกตดู

1 ความคิดเห็น :

  1. พอดี search เข้ามาเจอคับ บน Linux ของผมมันเขียนหน่วยเป็น MiB GiB เลยสงสัยว่ามันต่างจาก MB GB ธรรมดาอย่างไร พอได้อ่านก็กระจ่างเลยคับ ขอบคุณมากๆ คับ ที่นำความรู้สาระมาให้ได้อ่านกัน :)

    ตอบลบ