ขัดจังหวะ

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา
แหล่งที่มาขัดจังหวะและการจัดการโปรเซสเซอร์

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

อุปกรณ์ฮาร์ดแวร์มักใช้การขัดจังหวะเพื่อระบุการเปลี่ยนแปลงสถานะทางอิเล็กทรอนิกส์หรือทางกายภาพที่ต้องให้ความสนใจ ขัดจังหวะยังเป็นที่นิยมใช้ในการดำเนินการการทำงานแบบ multitasking คอมพิวเตอร์โดยเฉพาะอย่างยิ่งในระบบเวลาจริง ระบบที่ใช้อินเตอร์รัปต์ในลักษณะเหล่านี้เรียกว่าอินเตอร์รัปต์ขับเคลื่อน [2]

ประเภท

อินเตอร์รัปต์ 2 ประเภทในระบบปฏิบัติการ.jpg

อาจมีการออกสัญญาณขัดจังหวะเพื่อตอบสนองต่อเหตุการณ์ฮาร์ดแวร์หรือซอฟต์แวร์ สิ่งเหล่านี้ถูกจัดประเภทเป็นการขัดจังหวะของฮาร์ดแวร์หรือ การขัดจังหวะของซอฟต์แวร์ตามลำดับ สำหรับโปรเซสเซอร์ใด ๆ จำนวนของประเภทการขัดจังหวะจะถูกจำกัดโดยสถาปัตยกรรม

ฮาร์ดแวร์ขัดจังหวะ

การขัดจังหวะของฮาร์ดแวร์เป็นเงื่อนไขที่เกี่ยวข้องกับสถานะของฮาร์ดแวร์ที่อาจส่งสัญญาณโดยอุปกรณ์ฮาร์ดแวร์ภายนอก เช่น สายคำขอขัดจังหวะ (IRQ) บนพีซี หรือตรวจพบโดยอุปกรณ์ที่ฝังอยู่ในตรรกะของโปรเซสเซอร์ (เช่น ตัวจับเวลา CPU ใน IBM System/370) เพื่อสื่อสารว่าอุปกรณ์ต้องการการดูแลจากระบบปฏิบัติการ (OS) [3]หรือหากไม่มี OS จากโปรแกรม "bare-metal" ที่ทำงานบน CPU อุปกรณ์ภายนอกดังกล่าวอาจจะเป็นส่วนหนึ่งของเครื่องคอมพิวเตอร์ (เช่นควบคุมดิสก์ ) หรือพวกเขาอาจจะเป็นภายนอกอุปกรณ์ต่อพ่วงตัวอย่างเช่น การกดแป้นคีย์บอร์ดหรือย้ายเมาส์ที่เสียบเข้ากับPS/2 พอร์ตทริกเกอร์การขัดจังหวะของฮาร์ดแวร์ที่ทำให้โปรเซสเซอร์อ่านตำแหน่งการกดแป้นพิมพ์หรือเมาส์

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

ในหลายระบบ แต่ละอุปกรณ์จะเชื่อมโยงกับสัญญาณ IRQ เฉพาะ ทำให้สามารถระบุได้อย่างรวดเร็วว่าอุปกรณ์ฮาร์ดแวร์ใดกำลังขอรับบริการ และเพื่อเร่งการบริการของอุปกรณ์นั้น

ในระบบที่เก่ากว่าบางระบบ[4] การขัดจังหวะทั้งหมดไปที่ตำแหน่งเดียวกัน และระบบปฏิบัติการใช้คำสั่งพิเศษเพื่อกำหนดลำดับความสำคัญสูงสุดขัดจังหวะการขัดจังหวะแบบเปิดโปงที่ค้างอยู่ ในระบบร่วมสมัยทั่วไปแล้วจะมีประจำการขัดจังหวะที่แตกต่างกันสำหรับแต่ละประเภทของการขัดจังหวะหรือสำหรับแต่ละแหล่งที่มาขัดจังหวะมักจะนำมาใช้เป็นหนึ่งหรือมากกว่าหนึ่งตารางขัดจังหวะเวกเตอร์

การปกปิด

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

สัญญาณขัดจังหวะบางอย่างไม่ได้รับผลกระทบจากรูปแบบการขัดจังหวะ ดังนั้นจึงไม่สามารถปิดใช้งานได้ สิ่งเหล่านี้เรียกว่าการขัดจังหวะแบบ non-maskable (NMI) NMIs บ่งบอกถึงเหตุการณ์ที่มีความสำคัญสูงซึ่งไม่สามารถปฏิเสธภายใต้สถานการณ์ใด ๆ เช่นสัญญาณหมดเวลาจากเวลาจ้องจับผิด

เพื่อปกปิดขัดจังหวะคือการปิดการใช้งานในขณะที่การเปิดโปงขัดจังหวะคือการเปิดใช้งานได้ [5]

การขัดจังหวะปลอม

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

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

การขัดจังหวะที่หลอกลวงอาจเป็นผลมาจากความผิดปกติทางไฟฟ้าเนื่องจากการออกแบบวงจรผิดพลาด ระดับเสียงสูง ครอสทอล์คปัญหาเรื่องเวลา หรืออุปกรณ์ errata ที่ไม่ค่อยเกิดขึ้นบ่อยนัก [6]

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

ซอฟต์แวร์ขัดจังหวะ

โปรเซสเซอร์ร้องขอการขัดจังหวะของซอฟต์แวร์เมื่อดำเนินการตามคำสั่งเฉพาะหรือเมื่อตรงตามเงื่อนไขบางประการ สัญญาณขัดจังหวะของซอฟต์แวร์ทุกตัวเชื่อมโยงกับตัวจัดการการขัดจังหวะโดยเฉพาะ

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

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

วิธีการเรียก

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

ระดับทริกเกอร์

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

โปรเซสเซอร์จะสุ่มตัวอย่างสัญญาณอินพุทอินพุทระหว่างรอบคำสั่งแต่ละรอบ โปรเซสเซอร์จะรับรู้คำขอขัดจังหวะหากมีการยืนยันสัญญาณเมื่อมีการสุ่มตัวอย่าง

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

Edge-triggered

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

การตอบสนองของโปรเซสเซอร์

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

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

การนำระบบไปใช้

อาจใช้การขัดจังหวะในฮาร์ดแวร์เป็นส่วนประกอบที่แตกต่างกับสายควบคุม หรืออาจรวมเข้ากับระบบย่อยของหน่วยความจำ

หากใช้ในฮาร์ดแวร์เป็นส่วนประกอบที่แตกต่างกัน วงจรควบคุมอินเตอร์รัปต์ เช่น Programmable Interrupt Controller (PIC) ของ IBM PC อาจเชื่อมต่อระหว่างอุปกรณ์ขัดจังหวะและพินอินเทอร์รัปต์ของโปรเซสเซอร์ไปยังมัลติเพล็กซ์แหล่งที่มาของการขัดจังหวะหลายแหล่งบนสาย CPU หนึ่งหรือสองสายโดยทั่วไป มีอยู่. หากนำมาใช้เป็นส่วนหนึ่งของการควบคุมหน่วยความจำ , การขัดจังหวะถูกแมปในหน่วยความจำของระบบพื้นที่ที่อยู่

IRQ ที่ใช้ร่วมกัน

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

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

บัสIndustry Standard Architecture (ISA) รุ่นเก่าใช้การขัดจังหวะแบบ edge-triggered โดยไม่ต้องบังคับให้อุปกรณ์สามารถแชร์สาย IRQ ได้ แต่มาเธอร์บอร์ด ISA หลักทั้งหมดมีตัวต้านทานแบบดึงขึ้นบนสาย IRQ ดังนั้นอุปกรณ์ ISA ที่มีพฤติกรรมที่ดีจึงใช้สาย IRQ ร่วมกัน ควรทำงานได้ดีพอร์ตขนานยังใช้การขัดจังหวะขอบเรียก อุปกรณ์รุ่นเก่าจำนวนมากสันนิษฐานว่ามีการใช้สาย IRQ แบบเอกสิทธิ์เฉพาะบุคคล ทำให้ไม่ปลอดภัยในการแบ่งปันทางไฟฟ้า

มี 3 วิธีที่สามารถยกอุปกรณ์หลายเครื่อง "แชร์บรรทัดเดียวกัน" ได้ ประการแรกคือการนำแบบเอกสิทธิ์เฉพาะบุคคล (การสลับ) หรือการเชื่อมต่อแบบเอกสิทธิ์เฉพาะบุคคล (กับหมุด) ถัดไปคือโดยรถประจำทาง (ทั้งหมดที่เชื่อมต่อกับสายเดียวกันการฟัง): การ์ดบนรถบัสต้องรู้ว่าเมื่อใดควรพูดและไม่พูด (เช่น ISA บัส) การพูดสามารถกระตุ้นได้สองวิธี: โดยสลักสะสมหรือโดยลอจิกเกท ประตูลอจิกคาดว่าจะมีการไหลของข้อมูลอย่างต่อเนื่องซึ่งได้รับการตรวจสอบสำหรับสัญญาณหลัก ตัวสะสมจะทำงานเมื่อฝั่งระยะไกลกระตุ้นประตูเกินเกณฑ์เท่านั้น ดังนั้นจึงไม่จำเป็นต้องมีการเจรจาต่อรองความเร็ว แต่ละคนมีข้อได้เปรียบด้านความเร็วเทียบกับระยะทาง โดยทั่วไปแล้วทริกเกอร์คือวิธีการตรวจจับการกระตุ้น: ขอบที่เพิ่มขึ้น, ขอบตก, ธรณีประตู ( ออสซิลโลสโคปสามารถกระตุ้นรูปร่างและเงื่อนไขที่หลากหลาย)

การทริกเกอร์การขัดจังหวะของซอฟต์แวร์ต้องสร้างขึ้นในซอฟต์แวร์ (ทั้งในระบบปฏิบัติการและแอป) แอป 'C' มีตารางทริกเกอร์ (ตารางฟังก์ชัน) ในส่วนหัว ซึ่งทั้งแอปและระบบปฏิบัติการทราบและใช้งานอย่างเหมาะสมซึ่งไม่เกี่ยวข้องกับฮาร์ดแวร์ อย่างไรก็ตาม อย่าสับสนกับการขัดจังหวะของฮาร์ดแวร์ซึ่งส่งสัญญาณไปยัง CPU (CPU กำหนดให้ซอฟต์แวร์จากตารางฟังก์ชัน คล้ายกับการขัดจังหวะของซอฟต์แวร์)

ความยากลำบากในการแบ่งปันบรรทัดขัดจังหวะ

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

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

ไฮบริด

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

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

ข้อความส่งสัญญาณ

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

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

เวกเตอร์การขัดจังหวะที่ส่งสัญญาณข้อความสามารถแชร์ได้ เท่าที่สื่อการสื่อสารพื้นฐานสามารถแชร์ได้ ไม่จำเป็นต้องใช้ความพยายามเพิ่มเติม

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

PCI Expressซึ่งเป็นบัสคอมพิวเตอร์แบบอนุกรม ใช้อินเทอร์รัปต์ที่ส่งสัญญาณข้อความโดยเฉพาะ

กริ่งประตู

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

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

สามารถเปรียบเทียบการขัดจังหวะของออดกับMessage Signaled Interruptsได้ เนื่องจากมีความคล้ายคลึงกันบางประการ

มัลติโปรเซสเซอร์ IPI

ในระบบมัลติโปรเซสเซอร์ โปรเซสเซอร์อาจส่งคำขอขัดจังหวะไปยังโปรเซสเซอร์อื่นผ่านการขัดจังหวะระหว่างโปรเซสเซอร์[a] (IPI)

ประสิทธิภาพ

การขัดจังหวะให้ค่าโสหุ้ยต่ำและเวลาแฝงที่ดีที่โหลดต่ำ แต่จะลดลงอย่างมากที่อัตราการขัดจังหวะที่สูง เว้นแต่จะระมัดระวังในการป้องกันโรคต่างๆ ปรากฏการณ์ที่ประสิทธิภาพของระบบโดยรวมจะขัดขวางอย่างรุนแรงจากปริมาณที่มากเกินไปของการประมวลผลเวลาที่ใช้ในการจัดการการขัดจังหวะจะเรียกว่าพายุขัดจังหวะ

มีรูปแบบต่างๆ ของlivelocksเมื่อระบบใช้เวลาทั้งหมดในการประมวลผลการขัดจังหวะเพื่อแยกงานที่จำเป็นอื่นๆ ภายใต้สภาวะที่รุนแรง การขัดจังหวะจำนวนมาก (เช่น การรับส่งข้อมูลเครือข่ายที่สูงมาก) อาจทำให้ระบบหยุดทำงานโดยสิ้นเชิง เพื่อหลีกเลี่ยงปัญหาดังกล่าวระบบปฏิบัติการต้องกำหนดเวลาการจัดการอินเตอร์รัปต์ของเครือข่ายอย่างระมัดระวังเท่ากับกำหนดเวลาการดำเนินการของกระบวนการ[7]

ด้วยหน่วยประมวลผลแบบ multi-core, ปรับปรุงประสิทธิภาพการทำงานเพิ่มเติมในการจัดการ interrupt สามารถทำได้โดยการได้รับด้านการปรับขนาด (RSS) เมื่อนิคส์ multiqueueถูกนำมาใช้ NIC ดังกล่าวมีคิวการรับหลายรายการที่เกี่ยวข้องกับการขัดจังหวะที่แยกจากกัน โดยการกำหนดเส้นทางอินเตอร์รัปต์แต่ละรายการไปยังคอร์ที่แตกต่างกัน การประมวลผลคำขออินเตอร์รัปต์ที่ถูกทริกเกอร์โดยทราฟฟิกเครือข่ายที่ได้รับโดย NIC เดียวสามารถกระจายไปยังหลายคอร์ได้ ระบบปฏิบัติการสามารถดำเนินการแจกจ่ายอินเตอร์รัปต์ระหว่างคอร์ได้โดยอัตโนมัติ หรือกำหนดเส้นทางของอินเตอร์รัปต์ (ปกติเรียกว่าIRQ affinity ) ได้ด้วยตนเอง[8] [9]

การใช้งานการกระจายการรับส่งข้อมูลโดยใช้ซอฟต์แวร์ล้วนๆ หรือที่รู้จักในชื่อการรับส่งแพ็กเก็ต (RPS) จะกระจายการรับส่งข้อมูลที่ได้รับระหว่างคอร์ต่างๆ ในภายหลังในเส้นทางข้อมูล ซึ่งเป็นส่วนหนึ่งของฟังก์ชันตัวจัดการการขัดจังหวะข้อดีของ RPS เหนือ RSS ได้แก่ ไม่มีข้อกำหนดสำหรับฮาร์ดแวร์เฉพาะ ตัวกรองการกระจายการรับส่งข้อมูลขั้นสูง และอัตราการขัดจังหวะที่ลดลงที่เกิดจาก NIC ข้อเสีย RPS จะเพิ่มอัตราการขัดจังหวะระหว่างโปรเซสเซอร์ (IPI) รับโฟลว์พวงมาลัย (RFS) ใช้แนวทางซอฟต์แวร์เพิ่มเติมโดยการบัญชีสำหรับตำแหน่งแอปพลิเคชัน; การปรับปรุงประสิทธิภาพเพิ่มเติมทำได้โดยการประมวลผลคำขอขัดจังหวะโดยแกนเดียวกันซึ่งแอปพลิเคชั่นเป้าหมายจะใช้แพ็กเก็ตเครือข่ายเฉพาะ [8] [10] [11]

การใช้งานทั่วไป

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

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

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

บางครั้งมีการใช้การขัดจังหวะเพื่อเลียนแบบคำสั่งที่ไม่ได้ใช้งานในคอมพิวเตอร์บางเครื่องในตระกูลผลิตภัณฑ์[12]ตัวอย่างเช่นคำสั่งทศนิยมอาจถูกนำไปใช้ในฮาร์ดแวร์ในบางระบบและจำลองบนระบบที่มีต้นทุนต่ำกว่า ในกรณีหลัง การดำเนินการคำสั่งทศนิยมที่ไม่ได้ใช้งานจะทำให้ข้อยกเว้น "คำสั่งที่ผิดกฎหมาย" หยุดชะงัก ตัวจัดการขัดจังหวะจะใช้ฟังก์ชันจุดลอยตัวในซอฟต์แวร์แล้วกลับไปที่โปรแกรมที่ถูกขัดจังหวะราวกับว่ามีการดำเนินการคำสั่งที่ใช้ฮาร์ดแวร์[13]ซึ่งช่วยให้พกพาซอฟต์แวร์แอปพลิเคชันไปทั่วทั้งสายผลิตภัณฑ์ได้

ขัดจังหวะคล้ายกับสัญญาณที่แตกต่างกันเป็นสัญญาณที่ใช้สำหรับการสื่อสารระหว่างกระบวนการ (IPC) ไกล่เกลี่ยโดยเคอร์เนล (อาจจะผ่านทางสายระบบ) และการจัดการโดยกระบวนการในขณะที่การขัดจังหวะเป็นผู้ไกล่เกลี่ยโดยการประมวลผลและการจัดการโดยเคอร์เนล เคอร์เนลอาจส่งอินเตอร์รัปต์เป็นสัญญาณไปยังกระบวนการที่ทำให้เกิด (ตัวอย่างทั่วไปคือSIGSEGV , SIGBUS , SIGILLและSIGFPE )

ประวัติ

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

ยูนิแวก 1103คอมพิวเตอร์เป็นเครดิตโดยทั่วไปกับการใช้งานที่เก่าแก่ที่สุดของการขัดจังหวะในปี 1953 [15] [ ระบุ ]ก่อนหน้านี้เกี่ยวกับยูนิแวกฉัน (1951) "ล้นเลขคณิตทั้งเรียกการดำเนินการสองสอนประจำการแก้ไขขึ้นที่อยู่ 0, หรือโปรแกรมเมอร์ต้องการทำให้คอมพิวเตอร์หยุดทำงาน" IBM 650 (ปี 1954) เป็น บริษัท ที่เกิดขึ้นครั้งแรกของกำบังขัดจังหวะ[ โต้แย้ง ] แห่งชาติสำนักมาตรฐาน DYSEAC (1954) เป็นครั้งแรกที่จะใช้สำหรับการขัดจังหวะของ I / O IBM 704เป็นครั้งแรกที่จะใช้การขัดจังหวะสำหรับการแก้จุดบกพร่องด้วย "กับดักการโอน" ซึ่งสามารถเรียกใช้รูทีนพิเศษเมื่อพบคำสั่งสาขา ระบบ MIT Lincoln Laboratory TX-2 (1957) เป็นระบบแรกที่จัดให้มีการขัดจังหวะที่มีลำดับความสำคัญหลายระดับ [16]

ดูเพิ่มเติม

หมายเหตุ

  1. ^ เรียกว่าการแตะไหล่บนระบบปฏิบัติการ IBM บางระบบ

อ้างอิง

  1. ^ โจนาธานเบ; อเลสซานโดร รูบินี; Greg Kroah-Hartman (2005) " ลินุกซ์ไดรเวอร์ของอุปกรณ์พิมพ์ครั้งที่สาม, เครื่องจักรงานจัดการบทที่ 10 ขัดจังหวะ" (PDF) โอเรลลี่ มีเดีย . NS. 269 . สืบค้นเมื่อ25 ธันวาคม 2014 . จากนั้นก็แค่ทำความสะอาด เรียกใช้ซอฟต์แวร์ขัดจังหวะ และกลับไปทำงานตามปกติ "งานปกติ" อาจเปลี่ยนไปอันเป็นผลมาจากการขัดจังหวะ (เช่น ตัวจัดการอาจwake_upเป็นกระบวนการ เป็นต้น) ดังนั้นสิ่งสุดท้ายที่จะเกิดขึ้นเมื่อกลับจากการขัดจังหวะคือการจัดตารางเวลาใหม่ของโปรเซสเซอร์
  2. ^ โรเซนธาล, สกอตต์ (พฤษภาคม 1995) "พื้นฐานของการขัดจังหวะ" . เก็บถาวรจากต้นฉบับเมื่อ 2016-04-26 . สืบค้นเมื่อ2010-11-11 .
  3. ^ "ฮาร์ดแวร์ขัดจังหวะ" . สืบค้นเมื่อ2014-02-09 .
  4. ^ "คำสั่งขัดจังหวะ". การควบคุมข้อมูล 3600 คู่มือการใช้งานระบบคอมพิวเตอร์อ้างอิง (PDF) คอนโทรล ดาต้า คอร์ปอเรชั่น กรกฎาคม 2507 น. 4-6. 60021300.
  5. ^ ไป๋ หญิง (2017). วิศวกรรมไมโครคอนโทรลเลอร์ MSP432 กับ: ความรู้พื้นฐานและการประยุกต์ใช้ ซีอาร์ซี เพรส. NS. 21. ISBN 978-1-4987-7298-3. LCCN  201602120 . ในระบบ Cortex-M4 การขัดจังหวะและข้อยกเว้นมีคุณสมบัติดังต่อไปนี้: ... โดยทั่วไปบิตเดียวในการลงทะเบียนหน้ากากใช้เพื่อปิดบัง (ปิดใช้งาน) หรือเปิดปิด (เปิดใช้งาน) การขัดจังหวะ/ข้อยกเว้นบางอย่างที่จะเกิดขึ้น
  6. ^ หลี่ ชิง; เย้า, แคโรไลน์ (2003). แนวคิดแบบ Real-Time สำหรับระบบสมองกลฝังตัว ซีอาร์ซี เพรส. NS. 163. ISBN 1482280825.
  7. ^ เจ้าพ่อเจฟฟรีย์ C .; Ramakrishnan, เคเค (1997). "ขจัดรับ livelock ในเคอร์เนลขัดจังหวะขับเคลื่อน" ธุรกรรม ACM บนระบบคอมพิวเตอร์ 15 (3): 217–252. ดอย : 10.1145/263326.263335 . S2CID 215749380 . สืบค้นเมื่อ2010-11-11 . 
  8. อรรถเป็น ทอม เฮอร์เบิร์ต; Willem de Bruijn (9 พฤษภาคม 2014). "เอกสาร / เครือข่าย / scaling.txt" เอกสารลินุกซ์เคอร์เนล เคอร์เนล. org สืบค้นเมื่อ16 พฤศจิกายน 2014 .
  9. ^ "อินเทล 82,574 Gigabit Ethernet Controller ครอบครัวแผ่นข้อมูล" (PDF) อินเทล . มิถุนายน 2014. p. 1 . สืบค้นเมื่อ16 พฤศจิกายน 2014 .
  10. ^ Jonathan Corbet (17 พฤศจิกายน 2552) "รับแพ็กเก็ตบังคับเลี้ยว" . LWN.net . สืบค้นเมื่อ16 พฤศจิกายน 2014 .
  11. ^ เจค เอดจ์ (7 เมษายน 2010) "รับโฟลว์พวงมาลัย" . LWN.net . สืบค้นเมื่อ16 พฤศจิกายน 2014 .
  12. ^ ทูซู ชาเลช; และคณะ "สิทธิบัตรสหรัฐอเมริกา 5632028 A" . Google ค้นสิทธิบัตร สืบค้นเมื่อ13 ส.ค. 2017 .
  13. ^ Altera Corporation (2009) Nios II Processor อ้างอิง (PDF) NS. 4 . สืบค้นเมื่อ13 ส.ค. 2017 .
  14. ^ Codd เอ็ดการ์เอฟ "Multiprogramming" ความก้าวหน้าทางคอมพิวเตอร์ . 3 : 82.
  15. ^ เบลล์ ซี. กอร์ดอน; นีเวลล์, อัลเลน (1971). โครงสร้างคอมพิวเตอร์: การอ่านและการยกตัวอย่าง แมคกรอว์-ฮิลล์. NS. 46. ISBN 9780070043572. สืบค้นเมื่อ18 ก.พ. 2019 .
  16. ^ สมาเธอร์แมน, มาร์ค. "ขัดจังหวะ" . สืบค้นเมื่อ18 ก.พ. 2019 .

ลิงค์ภายนอก