- หน้าแรก RS
- >
- แบบบทความ
- >
- บทความทั้งหมด
- >
-
หลีกเลี่ยงความล้มเห ...
ส่วนที่ 1 กระบวนการสู่การออกแบบอุปกรณ์ที่น่าเชื่อถือ :การเลี่ยงความผิดพลาด
หลังจากที่เท็กซัส อินสตรูเมนส์, ฟรีสเกล และอินฟินีออนประกาศเปิดตัวอุปกรณ์ควบคุมขนาดเล็ก 'แบบนิรภัย' ไปแล้ว เราขอเสนออุปกรณ์ตัวแรกจากตระกูลที่ผสมผสานทฤษฎีและเทคนิคการปฏิบัติเข้าด้วยกัน ทฤษฎีและเทคนิคเหล่านี้มีบทบาทสำคัญต่อความน่าเชื่อถือและการสร้างข้อมูลซ้ำสำรองในระบบนิรภัยยามวิกฤติ (Safety Critical System)
ในช่วง 5 ปีหลังของคริสตศตวรรษที 20 คำว่า 'คอมพิวเตอร์' ชวนให้นึกถึงความไม่น่าเชื่อถือ เมื่อใดก็ตามที่ระบบทำงานล้มเหลว คอมพิวเตอร์คือต้นเหตุของความผิดพลาดเสมอ บ่อยครั้งที่การกล่าวหานี้เกิดขึ้นอย่างไม่เป็นธรรม จนกระทั่งมันกลายเป็นข้อแก้ตัวแสนสะดวกที่ใช้ปัดความรับผิดชอบเมื่อมนุษย์ทำพลาด ไม่ว่าความผิดพลาดนั้นจะเกิดจากโปรแกรมเมอร์หรือผู้ปฏิบัติการก็ตาม คอมพิวเตอร์กลายเป็นแพะรับบาปเมื่อเราทำพลาด ทุกคนต่างก็พอใจกับข้อแก้ตัวดังกล่าวตราบใดที่ 'ความผิดพลาดของคอมพิวเตอร์' ไม่ก่อให้เกิดการบาดเจ็บหรือเสียชีวิต อย่างไรก็ตาม เทคโนโลยียังคงพัฒนาต่อไปอย่างไม่หยุดยั้ง คอมพิวเตอร์เปลี่ยนรูปแบบมาเป็นอุปกรณ์เคลื่อนที่ภายในรถยนต์ ทำหน้าที่ควบคุมการทำงานอุปกรณ์ต่างๆ ที่ไม่เกี่ยวข้องกับระบบความปลอดภัยในช่วงวิกฤติ เช่น ที่ปัดน้ำฝนหรืออุปกรณ์นำทาง แต่ทุกอย่างเปลี่ยนไปเมื่อเรานำคอมพิวเตอร์มาใช้ในระบบควบคุมการบิน เริ่มจากอากาศยานของกองทัพเป็นอันดับแรก จากนั้นจึงพัฒนามาใช้กับอากาศยานของพลเรือน เช่น Airbus A320 เป็นต้น ในปัจจุบัน ยังมีการติดตั้งอุปกรณ์ควบคุมขนาดเล็กไว้ในรถยนต์ด้วย อุปกรณ์เหล่านี้ทำหน้าที่สร้างความปลอดภัยยามวิกฤติเช่นกัน ไม่ว่าจะเป็นระบบเบรคฉุกเฉินและถุงลมนิรภัย เมื่อไม่นานมานี้ กูเกิ้ลได้สาธิตให้เห็นว่า รถยนต์ไร้คนขับเป็นแนวคิดที่นำมาปฏิบัติได้จริง จากข้อมูลที่กล่าวมาทั้งหมด คุณคิดว่า คนเรามีทัศนคติต่อความผิดพลาดของคอมพิวเตอร์อย่างไรในปัจจุบัน? โชคดีที่ผู้ผลิตเครื่องบินและรถยนต์ตระหนักตั้งแต่ต้นว่า อุบัติเหตุเครื่องบินตกหรือเครื่องบินชนกันบนรันเวย์อาจทำให้มีผู้เสียชีวิตจำนวนมาก ดังนั้นข้อแก้ตัวที่ว่า เหตุการณ์ที่เกิดขึ้น 'เป็นแค่ความผิดพลาดของคอมพิวเตอร์' นั้นไม่ใช่เรื่องที่จะยอมรับกันได้ ในช่วงห้าสิบปีที่ผ่านมา งานวิจัยมากมายศึกษาหาวิธีทำให้คอมพิวเตอร์ 'ไร้ความผิดพลาด' การศึกษาแบ่งออกเป็นสองสาขา สาขาแรกคือการเลี่ยงความผิดพลาด ส่วนอีกสาขาหนึ่งคือ การเพิ่มความชาญฉลาดและความทนต่อความผิดพลาดของเครื่องจักร
ในแง่ของแนวคิด ความน่าเชื่อถือของคอมพิวเตอร์นั้นมีคำจำกัดความที่ไม่ตายตัวและหลากหลายพอๆ กับจำนวนผู้ปฏิบัติการและผู้ใช้งานคอมพิวเตอร์ นอกจากนี้ คำจำกัดความดังกล่าวยังขึ้นอยู่กับระดับมุมมองด้วย ตัวอย่างเช่น ผู้จัดการที่ดูแลการติดตั้งคอมพิวเตอร์อาจมองว่าระบบของเขาน่าเชื่อถือ เพราะโดยรวมแล้ว ปริมาณงานที่ได้ตรงตามข้อกำหนดทุกประการ ในขณะที่ผู้ปฏิบัติการระบบอาจไม่ได้มีความเห็นเช่นนั้นหากเขาจำเป็นต้องแก้ไขข้อผิดพลาดและต้องขอให้วิศวกรบำรุงรักษาเข้ามาเปลี่ยนอุปกรณ์อยู่บ่อยครั้งเพื่อให้ได้ปริมาณงานตามที่กำหนด ส่วนวิศวกรบำรุงรักษาอาจเห็นว่า ระบบนั้นไร้ความน่าเชื่อถือโดยสิ้นเชิง เพราะถึงแม้เขาจะทำการป้องกัน ระบุความผิดพลาดที่อาจเกิดขึ้น และแก้ไขความผิดพลาดอื่นๆ ไปแล้ว แต่ความผิดพลาดก็ยังไม่ 'ลดลง' กระบวนการประเมินความน่าเชื่อถือแบบเดิมของมนุษย์จึงไม่มีประสิทธิภาพพอที่จะใช้ในระบบนิรภัยยามวิกฤติ เช่น ในอุปกรณ์ควบคุมการบิน
คำจำกัดความของความน่าเชื่อถือ
- ความน่าเชื่อถือ คือความเป็นไปได้ที่ระบบจะทำงานที่ได้รับมอบหมายตามเงื่อนไขและระยะเวลาที่กำหนด
- ความผิดพลาด คือ สาเหตุโดยตรงที่ทำให้ระบบไม่สามารถทำงานที่ได้รับมอบหมายอย่างถูกต้อง ความผิดพลาดอาจอยู่ในฮาร์ดแวร์ เวลา หรือในซอฟต์แวร์ (บั๊ค) ก็ได้ นอกจากนี้ ยังอาจเป็นความผิดพลาดที่เกิดขึ้นอย่างถาวร (ฮาร์ด) หรือชั่วคราว
- ความล้มเหลว คือการทำงานที่แตกต่างไปจากข้อกำหนดของระบบเนื่องจากมีความผิดพลาดเกิดขึ้น กล่าวคือ หน่วยประมวลข้อมูลอยู่ในภาวะที่ไม่ถูกต้องหลังจากที่ทำงานอย่างถูกต้องมาตลอด
- ข้อผิดพลาด คือ ความผิดพลาดของเครื่องจักรที่ปรากฏในรูปของการคำนวณผิดพลาดของโปรแกรม
ในการออกแบบระบบ จะต้องคำนึงถึงสาเหตุที่อาจทำให้เกิดความผิดพลาดขึ้น สาเหตุเหล่านี้เรียกว่า "ภัยคุกคาม"
- ภัยคุกคาม หมายถึงภาวะไม่เหมาะสมที่ทำให้เกิดความผิดพลาดขึ้น ซึ่งอาจเป็นข้อผิดพลาดแวดล้อมตามปกติ ข้อผิดพลาดแวดล้อมไม่ปกติ หรือข้อผิดพลาดด้านการออกแบบ
ในการสร้างฟังก์ชั่นคณิตศาสตร์เพื่อแสดงความน่าเชื่อถือของระบบคอมพิวเตอร์ เราได้ตั้งสมมุติฐานหลักสองข้อขึ้นมา สมมุติฐานข้อแรกคือ ความผิดพลาดของอุปกรณ์เกิดขึ้นในลักษณะสุ่ม ดังนั้นจึงเป็นอิสระต่อกันในทางสถิติ ส่วนสมมุติฐานข้อที่สองคือ อัตราความผิดพลาด ซึ่งแสดงจำนวนครั้งที่เกิดความผิดพลาดต่อชั่วโมงนั้น จะคงที่ตลอดอายุการใช้งานของอุปกรณ์ ถึงแม้ว่าสมมุติฐานสองข้อนี้จะไม่แน่นอน แต่สร้างเงื่อนไขบางประการขึ้น ในขณะเดียวกันก็ถูกต้องสมเหตุสมผลสำหรับการนำมาวิเคราะห์ระบบ ข้อสันนิษฐานของแนวคิดเรื่องความเป็นอิสระต่อกันในทางสถิติคือ ความผิดพลาดของอุปกรณ์ชิ้นหนึ่งจะไม่ส่งผลให้อุปกรณ์ข้างเคียงเกิดสภาวะไม่เหมาะสมมากขึ้นจนอาจจะส่งผลให้อัตราความผิดพลาดเพิ่มสูงขึ้น
เมื่อคอมพิวเตอร์ประกอบขึ้นจากทรานซิสเตอร์ รีซิสเตอร์ ฯลณ ความผิดพลาดจากการลัดวงจรของตัวเก็บประจุอาจทำให้ทรานซิสเตอร์โอเวอร์โหลดและส่งผลให้เกิดความผิดพลาดต่อเรียงกันไปในอุปกรณ์ต่างๆ ส่วนตรรกะในวงจรรวมจะอ่อนไหวต่อความเสียหายแบบต่อเรียงกันน้อยกว่าและใกล้เคียงกับแบบจำลองความน่าเชื่อถือมากกว่า จะเห็นได้ว่า อัตราความผิดพลาดจะคงที่หากตัดระยะทดลอง (burn-in) ช่วงแรกและระยะสึกหรอ (wear-out) (ภาพประกอบ 1) ออกไป โดยเราจะพิจารณาเฉพาะส่วนเส้นโค้งที่เป็น 'อ่างราบ' เท่านั้น เนื่องจากการทดลองใช้งานอุปกรณ์ในระยะทดลองควรแก้ไขความผิดพลาดของอุปกรณ์ที่เกิดขึ้นตามธรรมชาติ ข้อผิดพลาดด้านการออกแบบ และโปรแกรม 'บั๊ก' ได้ทั้งหมด ดังนั้น ความน่าเชื่อถือในทางทฤษฎีของโมดูลระบบที่ไม่มีส่วนซ้ำสำรอง (Redundancy) ตามความสัมพันธ์กับเวลา จะกำหนดโดย
R(t) = e-lt โดยที่ I คืออัตราความผิดพลาดคงที่
ผลลัพธ์ที่ได้คือเส้นโค้งเอ็กซ์โปเนนเชียลดังแสดงในภาพประกอบ 2 ในทางทฤษฎีแล้ว โมดูลจะมีความน่าเชื่อถือโดยสมบูรณ์, R(t) = 1 เมื่อเวลา = 0 ซึ่งเป็นช่วงที่ระบบเข้าสู่ช่วงอายุการใช้งานที่อัตราความผิดพลาดคงที่ (ภาพประกอบ 1)
ภาพประกอบ 1 อัตราความผิดพลาดของอุปกรณ์เมื่อเวลาผ่านไป
ภาพประกอบ 2 ความน่าเชื่อถือของระบบแบบทางเดียว
การเลี่ยงความผิดพลาด

"กูเกิ้ลได้สาธิตให้เห็นว่า รถยนต์ไร้คนขับเป็นทฤษฎีที่ปฏิบัติได้จริง"
เดิมที การเลี่ยงความผิดพลาดหรือการทนต่อความผิดพลาดมีเป้าหมายเพื่อเพิ่มค่า MTBF ของระบบด้วยการปรับปรุงค่า MTBF ของโมดูลและส่วนประกอบแต่ละส่วนจนกระทั่งอายุการใช้งานที่กำหนดหรือเวลาปฏิบัติการของอุปกรณ์จะลดลงน้อยกว่าค่า MTBF ของระบบ และเพิ่มโอกาสที่จะระบบจะทำงานสำเร็จเป็น 90-99% โดยทั่วไปแล้ว เวลาปฏิบัติการจะถูกนำมาใช้เป็นฐานในการคำนวณ โดยเฉพาะอย่างยิ่งในอุตสาหกรรมอากาศยานทางทหาร ซึ่งค่า MTBF อาจมีหน่วยเป็นชั่วโมงเท่านั้น การเลี่ยงความผิดพลาดสามารถทำได้หลายวิธีด้วยกัน ได้แก่
- ควบคุมคุณภาพส่วนประกอบ ซึ่งในปัจจุบันหมายถึงการตรวจสอบชิ้นส่วนปลอมแปลงเข้มงวดขึ้น
- ปรับลดค่าพิกัด (de-rating) ของชิ้นส่วนหนัก กล่าวคือ ใช้พลังงานเพียง 10% เท่านั้น
- ใช้ชิ้นส่วนที่มีช่วงอุณหภูมิเทียบเท่าอุณหภูมิการทำงานของยานยนต์และอาวุธยุทโธปกรณ์
- ลดความไม่เหมาะสมทางสภาพแวดล้อมลง เช่น ใช้ระบบทำความเย็น เป็นต้น
- ทำงานโดยใช้อุปกรณ์ให้น้อยที่สุด เช่น เพิ่มประสิทธิภาพการออกแบบ โดยไม่มีความซ้ำซ้อน
เทคนิคเหล่านี้ใช้กันมากในอุตสาหกรรมทางทหารเนื่องจากจำเป็นต้องลดน้ำหนักของอุปกรณ์ลงไม่ว่าจะด้วยวิธีใด ตามปกติแล้ว ข้อควรคำนึงถึงอันดับสองในอุตสาหกรรมทางทหารคือความน่าเชื่อถือของระบบในระยะยาว เนื่องจากระยะเวลา ปฏิบัติการในอุตสาหกรรมทางทหารมักนับเป็นชั่วโมง เป็นนาที หรือแม้แต่วินาทีสำหรับระบบอาวุธ เช่น จรวดมิสไซล์นำวิถี เป็นต้น เมื่อเปรียบเทียบกับการใช้งานในหมู่พลเรือนแล้ว อุตสาหกรรมทหารจะให้ความสำคัญกับระดับการเสื่อมสภาพของระบบมากกว่า กล่าวคือ ระบบจะต้องมีอัตราการเสื่อมสภาพต่ำระหว่างการเก็บรักษาเป็นระยะเวลานานโดยไม่มีพลังงานไปหล่อเลี้ยง
เครื่องบินพลเรือนและและรถยนต์อาจมีเวลาปฏิบัติการสั้นเช่นเดียวกัน แต่ต้นทุนในการออกแบบระบบที่สามารถเลี่ยงความผิดพลาดอาจมีจำกัด โชคดีที่วงจรรวมขนาดใหญ่ทนต่อความผิดพลาดได้ดีโดยไม่ต้องใช้ต้นทุนมหาศาล เช่น ระบบตรวจสอบตัวเอง ระบบ 'สำรอง' ขณะบิน และระบบกู้คืนอัตโนมัติ ในอุตสาหกรรมอื่นๆ นอกเหนือจากอุตสาหกรรมทางทหาร ระบบที่ทนต่อความผิดพลาดไม่เพียงแต่ทำให้นวัตกรรมต่างๆ เช่น รถแบบไร้คนขับ เป็นไปได้ แต่ยังนำไปใช้งานได้อย่างปลอดภัยอีกด้วย
ในส่วนที่ 2 เราจะมาพูดถึงระบบชนิดทนต่อความผิดพลาดทั้งในทางทฤษฎีและการปฏิบัติ รวมทั้งตัวอย่างจากเครื่องบิน Airbus และโครงการสำรวจอวกาศด้วยยานอวกาศและหุ่นยนต์สำรวจดวงดาว
ในเนื้อหาส่วนที่ 1 เราได้พูดถึงการเลี่ยงความผิดพลาดไปแล้ว ในฉบับนี้ เราจะอธิบายเทคนิคการออกแบบฮาร์ดแวร์เพื่อแก้ไขปัญหาความผิดพลาดถาวรและความผิดพลาดชั่วคราวที่เกิดขึ้นกับระบบที่ใช้อุปกรณ์ควบคุมขนาดเล็ก
แนวคิดเรื่องความทนต่อความผิดพลาดเกิดจากข้อสันนิษฐานที่ว่า ความผิดพลาดอาจเกิดขึ้นไม่ว่าเราจะพยายามหลีกเลี่ยงมันมากแค่ไหนก็ตาม
- ระบบแบบปลอดภัยแม้ขัดข้อง (Fail-Safe System) จะไม่สามารถทำงานได้อย่างปลอดภัยหลังระบบตรวจพบความผิดพลาด ระบบจะปิดการทำงานลงในลักษณะที่เราคาดเดาได้ โดยที่ไม่สร้างเอาท์พุตที่ผิดพลาด
- ระบบแบบทนต่อความผิดพลาด (Fault-Tolerant System)จะมาพร้อมกับความสามารถในตัวที่ช่วยให้โปรแกรม ฟังก์ชันอินพุต/เอาท์พุต ทำงานต่อไปได้อย่างถูกต้องในสภาพการณ์ที่เกิดความผิดพลาดในการปฏิบัติงานขึ้น (โดยไม่ต้องอาศัยความช่วยเหลือจากภายนอก)
อย่างไรก็ตาม การนำคำจำกัดความที่ฟังดูง่ายอย่างน่าเหลือเชื่อนี้มาใช้ระบบการทำงานจริงนั้นทำได้ยากมาก สมมุติว่าเกิดความผิดพลาดถาวรหรือความผิดพลาดชั่วคราวขึ้นในระบบ หากเราต้องการให้ระบบ "ทำงานต่อไปอย่างถูกต้อง" แล้ว ระบบจะต้องมีคุณสมบัติตามข้อกำหนดสามข้อต่อไปนี้
-
การตรวจจับข้อผิดพลาด
ระบบจะต้องตรวจจับข้อผิดพลาดของตัวเองได้ - การวิเคราะห์ความผิดพลาด
ระหว่างการใช้งานแอพพลิเคชัน เมื่อระบบตรวจจับข้อผิดพลาดได้ ระบบจะต้องแยกความผิดพลาดไปยังกลุ่มอุปกรณ์หรือโมดูลที่สามารถหลีกเลี่ยง เปลี่ยนใหม่ (ขณะอยู่ภายใต้การควบคุมของหน่วยประมวลผล) หรือปิดการทำงานได้ - การกู้คืนความผิดพลาด
หลังจากที่แยกความผิดพลาดออกไปแล้ว ระบบจะต้องแก้ไขหรือลดผลกระทบที่เกิดขึ้นให้เหลือน้อยที่สุด ในกรณีที่เป็นการผิดพลาดชั่วคราว แค่ 'ลองดำเนินการใหม่อีกครั้ง' ก็อาจจะเพียงพอแล้ว
ตามแนวคิดแล้ว กระบวนการทั้งสามข้อข้างต้นจะต้องเกิดขึ้นโดยเร็วที่สุดเพื่อลดการหยุดชะงักของปริมาณงานให้เหลือน้อยที่สุด ดังนั้นจึงมีการทำส่วนซ้ำสำรองปกป้องข้อมูลในรูปของฮาร์ดแวร์และ/หรือซอฟต์แวร์เพิ่มเติมขึ้นมา เพื่อให้ระบบกู้คืนข้อมูลได้เกือบจะทันทีหลังจากเกิดความผิดพลาดขึ้นตามเป้าหมายในการออกแบบ แต่ในทางปฏิบัติแล้ว เราไม่สามารถคาดการณ์ความผิดพลาดของส่วนประกอบระบบได้หมดทุกประเภท ความผิดพลาดบางอย่างเกิดร่วมกันและเป็นสาเหตุให้เกิดการสูญเสียอย่างร้ายแรง สิ่งที่เราทำได้ก็คือ พยายามลดโอกาสที่จะเกิดความผิดพลาดให้อยู่ในระดับที่ยอมรับได้ วงจรที่ไม่มีส่วนซ้ำสำรอง เช่น วงจรสร้างสัญญาณนาฬิกา ต้องออกแบบเป็นพิเศษเพื่อลดโอกาสที่ความผิดพลาดเพียงอย่างเดียวจะทำให้ระบบอื่นๆ ที่ทนต่อความผิดพลาด ทำงานล้มเหลวตามไปด้วย
ขอบเขตป้องกัน (Coverage) คือ ความน่าจะเป็นแบบมีเงื่อนไข (Conditional Probability) ที่ความผิดพลาดจะถูกตรวจพบและได้รับการแก้ไขอย่างปลอดภัย คำว่า 'ปลอดภัย' ในที่นี้หมายถึง การที่ระบบปิดการทำงานโดยไม่ส่งผลเสียใดๆ (ปลอดภัยแม้ขัดข้อง) หรือ การที่ระบบแยกส่วนประกอบที่ทำงานผิดพลาดออกไปโดยที่ยังทำงานต่อไปได้ (ความทนต่อความผิดพลาดของระบบที่มีส่วนซ้ำสำรอง) ซึ่งอาจเรียกได้อีกอย่างหนึ่งว่า อัตราส่วนความผิดพลาดนิรภัย (Safe Failure Fraction - SFF) ซึ่งจะแสดงค่าเป็นเปอร์เซ็นต์ แน่นอนว่า ในสถานการณ์บางอย่าง แม้ว่าเราจะควบคุมการสูญเสียความสามารถในการทำงานของระบบได้ แต่ก็ยังเป็นเรื่องที่ยอมรับไม่ได้อยู่ดี ลองนึกภาพสิ่งที่จะเกิดขึ้นเมื่อระบบควบคุมอัตโนมัติในรถยนต์แบบไร้คนขับปิดทำงานขณะที่รถแล่นด้วยความเร็วสูง ในกรณีเช่นนี้ ระบบที่ทนต่อความผิดพลาดคือตัวเลือกเพียงข้อเดียวเท่านั้น
แนวคิดเรื่องขอบเขตป้องกันช่วยให้เราประเมินประสิทธิภาพความน่าเชื่อถือในแง่ของความสามารถในการตรวจจับและแก้ไขความผิดพลาดทุกรูปแบบที่อาจเกิดขึ้น หากต้องการให้ระบบมีความน่าเชื่อถือตามคาดการณ์ไว้ ขอบเขตป้องกันจะต้องครอบคลุมความผิดพลาดเกือบทั้งหมด การทนต่อความผิดพลาดและการเลี่ยงความผิดพลาดเป็นเทคนิคที่ใช้ร่วมกันได้และสามารถนำมาผสมผสานกันในอุปกรณ์บางอย่าง การใช้อุปกรณ์ซ้ำซ้อนกันและการติดตั้งโมดูลสำรองไม่ได้ทำให้ระบบมีความน่าเชื่อถือมากขึ้นเสมอไป เพราะความจริงแล้ว การติดตั้งส่วนประกอบคุณภาพต่ำซ้ำซ้อนกันอาจส่งผลให้ประสิทธิภาพการทำหน้าที่ของระบบซ้ำสำรองต่ำกว่าระบบแบบทางเดียว (Simplex System) เสียอีก หากต้องการให้ระบบทนทานต่อความผิดพลาดได้มากที่สุด ควรใช้อุปกรณ์คุณภาพสูงและออกแบบโดยปรับลดพิกัดลง ซึ่งหมายความว่า ระบบจะมีความพร้อมใช้งาน (availability) มากขึ้น และจะมีโอกาสทำงานได้สำเร็จมากขึ้นตามไปด้วยแม้ว่าส่วนประกอบจะเกิดความผิดพลาดขึ้นก็ตาม การใส่ใจปัญหาความพร้อมใช้งานในขั้นตอนการออกแบบเป็นพิเศษแบบนี้นี่เองที่ทำให้ยาน Mars Exploration Rovers ซึ่งถูกปล่อยขึ้นสู่อวกาศได้สำเร็จในปี ค.ศ. 2003 มีอายุการปฏิบัติงานนานกว่าที่คาดการณ์ไว้หลายปีด้วยกัน
ระบบทางเดียวและระบบทางเดียว + ส่วนวินิจฉัย
ระบบแบบทางเดียว หรือ ระบบ 1oo1 (One out of One) ไม่มีฟังก์ชันสำหรับตรวจจับความผิดพลาด และมีโอกาสที่ระบบจะล้มเหลวและเกิดอันตรายขึ้น แต่ในระบบแบบทางเดียว + ฟังก์ชันวินิจฉัย หรือระบบ 1oo1D จะติดตั้งวงจรตรวจสอบไว้เพื่อติดตามการทำงานของหน่วยประมวลผลโดยต้องไม่ต้องใช้ 'ทรัพยากรสิ้นเปลือง' ในระบบประมวลผลทันทียามวิกฤติ (Speed Critical Real-Time System)
ในบางครั้ง ชิปประมวลผลจะมีวอตช์ด็อกไทเมอร์ (Watchdog timer : WDT) รวมอยู่ด้วยหรือติดตั้งไว้ในอุปกรณ์ควบคุม วอตช์ด็อกไทเมอร์ถูกนำมาใช้ตรวจจับความล้มเหลวของหน่วยประมวลผลอย่างแพร่หลาย โดยทั่วไปแล้ว อุปกรณ์ตัวนี้จะบังคับให้ระบบ
รีเซ็ตตัวเองใหม่เมื่อสัญญาณที่โปรแกรมสร้างขึ้นหายไป วอตช์ด็อกไทเมอร์เป็นอุปกรณ์ที่เรียบง่ายมาก และมักจะทำหน้าที่เฝ้าระวังการจ่ายพลังงานด้วย หากต้องการให้ระบบของคุณได้มาตรฐานความปลอดภัย ISO26262 และ IEC61508 ที่กำหนดใหม่ คุณจะเป็นต้องใช้อุปกรณ์ที่สามารถแก้ปัญหาได้ครอบคลุมกว่าเดิม เช่น Yogitech fRCPU สำหรับ MCU ที่ติดตั้ง ARM® Cortex M3 [1] หรือ Infineon CIC61508 Signature Window Watchdog [2] สำหรับหน่วยประมวลผล TriCore™ อุปกรณ์วินิจฉัยเหล่านี้จะเปลี่ยนระบบแบบทางเดียวหรือระบบ 1oo1 ให้เป็นระบบ 1oo1D ซึ่งอาจทำให้ระบบได้มาตรฐาน IEC61508 SIL3 นั่นหมายความว่า ระบบจะมีค่า SFF > 99% และมีเอาท์พุตแบบปลอดภัยแม้ขัดข้อง (Fail-Safe)
อุปกรณ์ควบคุมขนาดเล็กนิรภัย TMS470M ของเท็กซัส อินสตรูเมนส์ เป็นสินค้าในกลุ่ม Hercules™ มาพร้อมกับแกนประมวลผล Cortex-M3 และส่วนตรรกกะสำหรับแก้ไขข้อผิดพลาดและทดสอบตัวเองรวมอยู่ในชิปเดียว อย่างไรก็ตาม อุปกรณ์ตัวนี้ไม่ได้มาตรฐานความปลอดภัย IEC61508 เนื่องจากมีค่า SFF น้อยกว่า 60% ทั้งนี้เป็นเพราะว่า ส่วนตรรกกะตรวจสอบข้อผิดพลาดตรวจจับข้อผิดพลาดชั่วคราวหรือข้อผิดพลาดของระบบซึ่งเกิดจากหน่วยประมวลผลได้ไม่เกิน 60% หากต้องการเพิ่มขอบเขตดังกล่าว สามารถทำได้ด้วยการนำเทคนิคดั้งเดิมมาใช้ นั่นคือ ใช้หน่วยประมวลผลสองตัวขึ้นไปมารันโปรแกรมเดียวกันและเปรียบเทียบเอาท์พุต
ส่วนซ้ำสำรองโมดุลหน่วยประมวลผลหลายตัว
แต่เดิม ส่วนซ้ำสำรองในระบบควบคุมคอมพิวเตอร์หมายถึงระบบที่มีหน่วยประมวลผลสองตัว (DMR หรือ 2oo2) สามตัว (TMR หรือ 2oo3) หรือแม้แต่สี่ตัว (QMR หรือ 2oo4) ซึ่งรันโปรแกรมเดียวกันในแต่ละ 'ล็อคสเต็ป' ส่วนตรรกกะเปรียบเทียบและโหวตจะยินยอมให้เอาท์พุตผ่านไปยังแอคชูเอเตอร์ก็ต่อเมื่อหน่วยประมวลผลส่วนใหญ่เห็นชอบเท่านั้น นั่นหมายความว่า DMR จะไม่ทนต่อความผิดพลาดเพราะส่วนตรรกกะการโหวตไม่สามารถบอกได้ว่าเอาท์พุตไม่ถูกต้อง ผลก็คือ หน่วยประมวลผลทั้งสองตัวจะต้องปิดการทำงานแบบปลอดภัยแม้ขัดข้อง (Fail-Safe) อย่างไรก็ตามระบบ DMR มีค่า SFF > 99% ซึ่งได้มาตรฐาน SIL3 ส่วนในระบบ TMR แม้ว่าหน่วยประมวลผลตัวหนึ่งจะล้มเหลว แต่ระบบยังคงทำงานต่อไปได้หากหน่วยประมวลผลอีกสองตัวที่เหลือยินยอม ระบบ QMR (ภาพประกอบ 1) ควรจะรักษาประสิทธิภาพการทำงานตามปกติไว้ได้แม้ว่าหน่วยประมวลผลสองตัวจะล้มเหลว ระบบที่มีหน่วยประมวลผลสามและสี่ตัวควรมีคุณสมบัติตามเกณฑ์ SIL4 หากมีค่า SFF> 99% เนื่องจากระบบเหล่านี้ทนต่อความผิดพลาด (Fault tolerant)
ภาพประกอบ 1 ระบบแบบทนต่อความผิดพลาด
ที่ใช้ส่วนซ้ำสำรองแบบ 3 โมดูล
อุปกรณ์ควบคุมขนาดเล็ก TMS570LS และ RM48x ที่ใช้แกนประมวลผล Hercules Cortex-R4F ของเท็กซัสอินสตรูเมนส์ ประกอบด้วยหน่วยประมวลผลสองตัวซึ่งรันโปรแกรมเดียวกันในแต่ละล็อคสเต็ป ตัวประมวลผลตัวหนึ่งจะทำหน้าที่ตรวจสอบอุปกรณ์ที่กำหนดให้เป็นบ่าว (Salve) ซึ่งจะผลิตเอาท์พุตออกมาเปรียบเทียบกับเอาท์พุตของอุปกรณ์ที่กำหนดให้เป็นนาย (Master) [3] แต่ระบบส่วนที่เหลือจะใช้เอาท์พุตจากอุปกรณ์ที่กำหนดให้เป็นนายเท่านั้น ดังนั้น เราจึงประกอบระบบ DMR 1oo1 ด้วยอุปกรณ์เพียงตัวเดียวไม่ได้ ในทางกลับกัน เรามีระบบ 1oo1D ที่อาจมีค่า SFF>99% และได้มาตรฐาน IEC612508 SIL3
ความผิดพลาดชั่วคราวและถาวร
หากเกิดข้อผิดพลาดกับระบบตรวจสอบ ข้อผิดพลาดดังกล่าวอาจเกิดขึ้นเพียงครั้งเดียว โดยสาเหตุอาจเกิดจากผลของอนุภาคคอสมิกที่หลงเข้าไปทำให้เซลล์ของ RAM ปั่นป่วน ผลกระทบที่เกิดจากความผิดพลาดชั่วคราวเช่นนี้อาจแก้ไขได้ด้วยการลองเปิดโปรแกรมส่วนที่เป็นสาเหตุให้เกิดข้อผิดพลาดใหม่อีกครั้งหนึ่ง ตามปกติ ระบบจะต้องติดตั้งฟังก์ชันเปิดโปรแกรมใหม่อยู่แล้ว มิฉะนั้นฮาร์ดแวร์จะปิดทำงานโดยไม่จำเป็น การสละเวลาและแรงงานแก้ไขวงจร/ซอฟต์แวร์เหล่านี้ให้ทำงานได้ถูกต้องจะก่อให้เกิดผลลัพธ์ที่น่าพอใจในกรณีที่ระบบทำงานในสภาพแวดล้อมที่เต็มไปด้วยสิ่งรบกวนทางไฟฟ้า อย่างไรก็ตาม ระบบตรวจสอบข้อผิดพลาดจะต้องสามารถตรวจจับความผิดพลาด 'ถาวร' ได้อย่างรวดเร็วด้วย พร้อมทั้งหลีกเลี่ยงการเปิดโปรแกรมใหม่ที่ไม่จำเป็น
การซ้ำสำรองแบบสเตอิกและแบบไดนามิก
โดยทั่วไปแล้ว การซ้ำสำรองโมดูลพื้นฐาน (Basic Modular Redundancy) ที่ติดตั้งวงจรโหวตจะเรียกว่า การซ้ำสำรองแบบ
สเตอิก โดยโมดูลทั้งหมดจะ 'ร้อน' และทำงานอยู่เสมอ โมดูลหน่วยประมวลผลอาจถูกเพิกเฉยหรือปิดการทำงานหากกำลังจะเกิดความผิดพลาดถาวรขึ้น
การซ้ำสำรองแบบไดนามิกต้องใช้หน่วยสำรองข้อมูลทั้งร้อนและเย็น ซึ่งจะเปิดและปิดเมื่อส่วนตรรกกะและ/หรือซอฟต์แวร์ตรวจจับความผิดพลาด การซ้ำสำรองแบบไดนามิกนิยมใช้กันมากในยานอวกาศ [4] และเครื่องบิน Airbus โดยการซ้ำสำรองในเครื่องบินนั้น มาตรการเพิ่มเติมสำหรับป้องกันความผิดพลาดโหมดปกติก็คือ ระบบ Diversity ที่มีโมดูลประมวลผลติดตั้งอยู่บนแพล็ตฟอร์มอุปกรณ์ควบคุมขนาดเล็กหลายแพล็ตฟอร์ม พร้อมทั้งซอฟต์แวร์ที่เขียนขึ้นโดยทีมอิสระ ระบบเหล่านี้มาพร้อมกับโมดูลประมวลผลคู่ 1oo1D ซึ่งปัจจุบันสามารถเปลี่ยนมาใช้ชิปเพียงชิ้นเดียวอย่าง Hercules Dual Core แทนได้ นอกจากนี้คุณยังอาจใช้ชิปสองชิ้นคู่กันเพื่อสร้างระบบ 1oo2D ที่ทนต่อความผิดพลาดตามมาตรฐาน SIL4 ได้ ใน (ภาพประกอบ 2) หน่วยประมวลผลทั้งสองตัวจะ 'ทำงาน' และรับอินพุตเหมือนกัน รวมทั้งใช้คำสั่งรีเซ็ตร่วมกันด้วย เมื่อได้รับคำสั่งให้สลับโมดูล เอาท์พุตของโมดูลสำรองที่สแตนด์บายอยู่จะเข้ามาแทนที่เอาท์พุตของโมดูลที่ล้มเหลว ถึงแม้ว่านาฬิกาของหน่วยประมวลผลจะไม่ได้เดินพร้อมกัน แต่การสลับนี้ควรใช้เวลาเพียงเล็กน้อยเท่านั้น
ภาพประกอบ 2 ระบบแบบทนต่อความผิดพลาดที่ใช้
อุปกรณ์ควบคุมขนาดเล็กนิรภัยซึ่งมีหน่วยประมวลผล 2 ตัว
สรุป
ตลอดเวลาที่ผ่านมา แนวคิดเกี่ยวกับความทนต่อความผิดพลาดมักถูกนำไปใช้ในโครงการที่มีงบประมาณสูงลิ่วอย่างโครงการสร้างอากาศยานและยานอวกาศ เนื่องจากโครงการเหล่านี้ต้องใช้ต้นทุนการพัฒนาจำนวนมหาศาล ปัจจุบันเป็นไปได้ว่าระบบยานยนต์จำเป็นต้องนำเทคนิคดังกล่าวมาใช้เช่นกันเนื่องจากแนวคิดเรื่องรถยนต์ไร้คนขับทำได้จริงบนท้องถนน อย่างไรก็ตาม ความทนต่อความผิดพลาดในอุปกรณ์ยานยนต์และอุปกรณ์อุตสาหกรรมจะต้องมีความน่าเชื่อถือตามมาตรฐานในระดับ นานาชาติ ISO26262 และ IEC61508 ตามลำดับ โชคดีที่อุปกรณ์ควบคุมขนาดเล็ก 'นิรภัย' รุ่นใหม่ ช่วยให้วิศวกรผลิตงานออกแบบที่ได้มาตรฐานเหล่านี้
ข้อมูลอ้างอิง
[1] | www.fr.yogitech.com |
[2] | www.infineon.com |
[3] | www.ti.com |
[4] | เอกสาร: เทคนิคจัดการการซ้ำสำรองสำหรับคอมพิวเตอร์ควบคุมยานอวกาศ, เจ.อาร์. สกลารอฟ, วารสารการวิจัยและการพัฒนา IBM, 1976 |
[5] | เอกสาร: ระบบควบคุมการบินอิเล็กทรอนิกส์ AIRBUS A320/A330/A340, ระบบทนทานต่อความผิดพลาด, โดมินิก บริตซ์, ปาสคาล ทราเวิร์ส, IEEE 1993 |
กลับสู่ด้านบน