วันจันทร์ที่ 8 กรกฎาคม พ.ศ. 2556

บิตตรวจสอบ (Parity Bit)

PARITY BIT !!!
            
           แพริตีบิต หรือ บิตภาวะคู่หรือคี่  (อังกฤษ: parity bit) หรืออาจเรียกเพียงแค่ แพริตี หมายถึงบิตที่เพิ่มเข้าไปในข้อมูล โดยไม่จำเป็นว่าจะต้องนำไปต่อท้ายหรือขึ้นต้น เพื่อทำให้แน่ใจว่าบิตที่เป็นค่า 1 ในข้อมูลมีจำนวนเป็นเลขคู่หรือเลขคี่ การใช้แพริตีบิตเป็นวิธีที่ง่ายอย่างหนึ่งในการตรวจจับและแก้ไขความผิดพลาด
แพริตีบิตมีสองชนิดคือ แพริตีบิตคู่ (even parity bit) กับ แพริตีบิตคี่ (odd parity bit) ตามข้อมูลในเลขฐานสอง
  • แพริตีบิตคู่ จะมีค่าเป็น 1 เมื่อจำนวนของเลข 1 ในข้อมูลเป็นจำนวนคี่ (ซึ่งจะทำให้จำนวนเลข 1 ทั้งหมดเป็นจำนวนคู่ เมื่อรวมกับบิตนี้)
  • แพริตีบิตคี่ จะมีค่าเป็น 1 เมื่อจำนวนของเลข 1 ในข้อมูลเป็นจำนวนคู่ (ซึ่งจะทำให้จำนวนเลข 1 ทั้งหมดเป็นจำนวนคี่ เมื่อรวมกับบิตนี้)
โดยแท้จริงแล้ว แพริตีบิตคู่เป็นกรณีพิเศษหนึ่งของการตรวจสอบด้วยส่วนซ้ำซ้อนแบบวน (cyclic redundancy check: CRC) เนื่องจากซีอาร์ซีขนาดหนึ่งบิตถูกสร้างขึ้นจากพหุนาม x + 1
ถ้าแพริตีบิตมีตำแหน่งแต่ไม่มีการใช้ มีสองแนวทางคือกำหนดให้เป็น 0 ตลอดเรียกว่า แพริตีว่าง (space parity) หรือกำหนดให้เป็น 1 ตลอดเรียกว่า แพริตีกำหนด (mark parity)


ประวัติโดยรวม

            แต่เดิม "แพริตีแทร็ก" (parity track) ได้เสนอขึ้นเป็นครั้งแรกพร้อมกับแถบแม่เหล็กสำรองข้อมูลใน ค.ศ. 1951 แพริตีในลักษณะนี้เป็นการตรวจสอบด้วยส่วนซ้ำซ้อนแนวตั้งหรือตามขวาง (transverse redundancy check) ซึ่งกระทำผ่านสัญญาณคู่ขนานหลายสัญญาณไขว้ข้ามกัน สิ่งนี้สามารถผสานได้กับแพริตีที่คำนวณโดยบิตหลายบิตที่ส่งมาจากสัญญาณเดียว นั่นคือการตรวจสอบด้วยส่วนซ้ำซ้อนตามยาว (longitudinal redundancy check) ในบัสคู่ขนาน จะมีหนึ่งบิตเพื่อการตรวจสอบด้วยส่วนซ้ำซ้อนตามยาว ต่อสัญญาณคู่ขนานหนึ่งคู่


การตรวจสอบหาความผิดพลาด

              ถ้าหากจำนวนบิตที่เป็นเลขคี่ (รวมทั้งแพริตีบิต) เปลี่ยนไปจากปกติในการส่งผ่านกลุ่มบิตข้อมูล แสดงว่าแพริตีบิตนั้นไม่ถูกต้อง และแสดงให้เห็นว่าเกิดความผิดพลาดในการส่งผ่านข้อมูล ดังนั้นแพริตีบิตจึงสามารถใช้เป็นรหัสตรวจหาความผิดพลาด แต่ไม่เป็นรหัสแก้ไขความผิดพลาด เนื่องจากไม่สามารถวิเคราะห์ได้ว่าบิตไหนบ้างที่ข้อมูลผิดไปจากเดิม รู้แต่เพียงว่าเกิดขึ้นเท่านั้น และเมื่อความผิดพลาดเกิดขึ้นแล้ว ข้อมูลทั้งหมดจะต้องถูกละทิ้งและส่งผ่านมาใหม่ตั้งแต่ต้นโดยอัตโนมัติ ถ้าหากสื่อที่ใช้ส่งผ่านมีสัญญาณแทรกซ้อนมาก การส่งผ่านข้อมูลให้สำเร็จจึงอาจต้องใช้ระยะเวลานาน หรือถึงขั้นไม่สำเร็จไปเลย อย่างไรก็ตาม แพริตีบิตก็มีข้อดีตรงที่เป็นรหัสตรวจสอบที่ใช้เนื้อที่เพิ่มเพียงบิตเดียว และใช้เกต XOR เพียงไม่กี่ตัวเพื่อสร้างบิตนั้นขึ้นมา
            การตรวจสอบแพริตีบิตจะใช้กับการส่งผ่านข้อมูลอักขระแอสกีในบางโอกาส เนื่องจากอักขระแอสกีมีแค่เจ็ดบิต และอีกหนึ่งบิตที่เหลือก็ใช้เป็นแพริตีบิตได้พอดี


การใช้งาน

             การคำนวณแพริตีมีการใช้งานในฮาร์ดแวร์หลายชนิด ไม่ว่าจะใช้เพื่อการดำเนินงานที่เกิดขึ้นซ้ำ ๆ และยุ่งยาก หรือมีไว้เพื่อตรวจหาข้อผิดพลาดอย่างง่าย เนื่องจากมีหลักการคิดที่ไม่ซับซ้อน ตัวอย่างฮาร์ดแวร์เช่น สกัสซีและพีซีไอบัสใช้แพริตีบิตเพื่อตรวจหาความผิดพลาดในการส่งผ่านข้อมูล แคชคำสั่งหลายอย่างในไมโครโพรเซสเซอร์ก็มีการป้องกันด้วยแพริตี เนื่องจากข้อมูลคำสั่งบนแคชเป็นเพียงข้อมูลที่คัดลอกมาจากหน่วยความจำหลัก ซึ่งสามารถลบทิ้งแล้วดึงคำสั่งขึ้นมาใหม่ถ้าพบว่าเกิดข้อผิดพลาดขึ้น
              ในการส่งผ่านข้อมูลแบบอนุกรม รูปแบบปกติจะเป็นข้อมูล 7 บิต แพริตีบิตคู่ 1 บิต และบิตหยุดอีก 1 หรือ 2 บิต รูปแบบนี้สามารถเข้ากันได้อย่างดีกับอักขระแอสกี 7 บิตทุกตัว และสื่อสารเป็นไบต์ขนาด 8 บิตโดยสะดวก รูปแบบอื่น ๆ ก็อาจเป็นไปได้ เช่นข้อมูล 8 บิตกับแพริตีบิตอีก 1 บิต จะทำให้ข้อมูลจริงบนไบต์ขนาด 8 บิตทั้งหมดเลื่อนออกไป
          ในการสื่อสารแบบอนุกรมนี้ แพริตีบิตมักจะถูกสร้างขึ้นและตรวจสอบโดยฮาร์ดแวร์ที่เป็นส่วนต่อประสาน (เช่นยูอาร์ต) และในการรับข้อมูล ผลลัพธ์ที่ได้จะถูกส่งไปยังซีพียู (เช่นเดียวกับระบบปฏิบัติการ) ผ่านทางบิตสถานภาพในเรจิสเตอร์ของฮาร์ดแวร์ส่วนต่อประสานนั้น การกู้คืนข้อผิดพลาดจะกระทำเป็นการส่งผ่านข้อมูลมาอีกครั้ง รายละเอียดของขั้นตอนนั้นถูกควบคุมดูแลโดยซอฟต์แวร์ (เช่นรูทีนไอ/โอของระบบปฏิบัติการ)

แพริตีบล็อก

           แพริตีบล็อกมีการใช้โดยเรดในบางระดับ ส่วนซ้ำซ้อนของข้อมูลจะถูกเก็บไว้ในแพริตีบล็อก ถ้าหากมีไดรฟ์หนึ่งในเรดเกิดผิดพลาด บล็อกข้อมูลและแพริตีบล็อกจะสามารถผสานกันเพื่อสร้างข้อมูลส่วนที่ขาดหายไปขึ้นมาได้ใหม่
เรดระดับ 5            สมมติให้แผนภาพต่อไปนี้เป็นการต่อจานบันทึกแบบเรดระดับ 5 ซึ่งทรงกระบอกแต่ละอันแทนจานบันทึกหนึ่งเครื่อง

     
              กำหนดให้ข้อมูลที่อยู่ในบล็อก A1 = 00000111, A2 = 00000101, และ A3 = 00000000 ส่วนบล็อก Ap
(แพริตีบล็อก) จะถูกสร้างขึ้นจากข้อมูลใน A1 A2 และ A3 นำมาดำเนินการ XOR ต่อกัน ได้ผลลัพธ์เป็น 00000010 ถ้าหากจานบันทึกหมายเลข 1 เกิดล้มเหลว บล็อก A2 ก็จะไม่สามารถเข้าถึงได้ แต่จะสามารถสร้างข้อมูลเดิมกลับมาได้โดยการทำ XOR บล็อกที่เหลือคือ A1 A3 และ Ap นั่นคือ A2 = A1 XOR A3 XOR Ap = 00000101 ซึ่งเท่ากับข้อมูลในตอนแรก

ไม่มีความคิดเห็น:

แสดงความคิดเห็น