อ่าน 7 นาที
ตัวควบคุมการขัดจังหวะแบบตั้งโปรแกรมได้ขั้นสูง
ตัว ควบคุมการขัดจังหวะแบบตั้งโปรแกรมได้ขั้นสูง ( APIC ) เป็นตระกูลของ ตัวควบคุมการขัดจังหวะแบบตั้งโปรแกรมได้ ที่พัฒนาโดย Intel ดังชื่อที่บ่งบอก APIC นั้นล้ำหน้ากว่า...
ตัวควบคุมการขัดจังหวะแบบตั้งโปรแกรมได้ขั้นสูง
ตัวควบคุมการขัดจังหวะแบบตั้งโปรแกรมได้ขั้นสูง ( APIC ) เป็นตระกูลของตัวควบคุมการขัดจังหวะแบบตั้งโปรแกรมได้ที่พัฒนาโดยIntelดังชื่อที่บ่งบอก APIC นั้นล้ำหน้ากว่า ตัวควบคุมการขัดจังหวะแบบตั้งโปรแกรมได้ 8259 (PIC) ของ Intel โดยเฉพาะอย่างยิ่งช่วยให้สามารถสร้าง ระบบ มัลติโปรเซสเซอร์ได้ เป็นหนึ่งในหลายๆ การออกแบบทางสถาปัตยกรรมที่มุ่งแก้ปัญหาประสิทธิภาพการกำหนดเส้นทางการขัดจังหวะในระบบคอมพิวเตอร์มัลติโปรเซสเซอร์
APIC เป็นสถาปัตยกรรมแบบแยกส่วน โดยมีส่วนประกอบภายใน (LAPIC) ที่มักจะรวมอยู่ในตัวประมวลผลเอง และมี APIC สำหรับการรับส่งข้อมูล (I/O APIC) เป็นตัวเลือกบนบัสระบบ APIC ตัวแรกคือ 82489DX ซึ่งเป็นชิปแยกที่ทำหน้าที่ทั้งเป็น APIC ภายในและ APIC สำหรับการรับส่งข้อมูล 82489DX ทำให้สามารถสร้าง ระบบ มัลติโปรเซสเซอร์แบบสมมาตร (SMP) ด้วย โปรเซสเซอร์ Intel 486และPentium รุ่นแรกๆ ได้ ตัวอย่างเช่น ระบบ SMP 486 แบบสองทางอ้างอิงใช้ชิป 82489DX สามตัว โดยสองตัวเป็น APIC ภายในและอีกหนึ่งตัวเป็น APIC สำหรับการรับส่งข้อมูล เริ่มตั้งแต่ โปรเซสเซอร์ P54Cฟังก์ชัน APIC ภายในถูกรวมเข้ากับซิลิคอนของโปรเซสเซอร์ Intel APIC สำหรับการรับส่งข้อมูลโดยเฉพาะตัวแรกคือ Intel 82093AA ซึ่งมีจุดประสงค์สำหรับระบบที่ใช้ PIIX3
ภาพรวม
ระบบ APIC ของ Intel ประกอบด้วยสองส่วน คือAPIC เฉพาะที่ (LAPIC) และ APIC สำหรับการรับส่งข้อมูล ( I/O APIC ) โดยมี LAPIC หนึ่งตัวในแต่ละ CPU ในระบบ ในการใช้งานครั้งแรกสุด ( 82489DX ) LAPIC เป็นวงจรแยกชิ้น ต่างจากการใช้งานในชิปประมวลผลของ Intel ในภายหลัง โดยทั่วไปจะมี I/O APIC หนึ่งตัวสำหรับแต่ละบัสอุปกรณ์ต่อพ่วงในระบบ ในการออกแบบระบบดั้งเดิม LAPIC และ I/O APIC จะเชื่อมต่อกันด้วยบัส APIC เฉพาะ แต่ระบบรุ่นใหม่กว่าจะใช้บัสระบบสำหรับการสื่อสารระหว่างส่วนประกอบ APIC ทั้งหมด
APIC แต่ละตัว ไม่ว่าจะเป็นชิปแยกหรือรวมอยู่ใน CPU ก็มีรีจิสเตอร์เวอร์ชันที่มีหมายเลขเวอร์ชันสี่บิตสำหรับการใช้งาน APIC เฉพาะของมัน ตัวอย่างเช่น 82489DX มีหมายเลขเวอร์ชัน APIC เป็น 0 ในขณะที่เวอร์ชัน 1 ถูกกำหนดให้กับ APIC รุ่นแรกที่รวมอยู่ในโปรเซสเซอร์ Pentium 90 และ 100 [ 1 ] : 3-5
ในระบบที่มีPIC รุ่น 8259นั้น 8259 อาจเชื่อมต่อกับ LAPIC ในโปรเซสเซอร์บูตสแตรป (BSP) ของระบบ หรือ APIC สำหรับอินพุต/เอาต์พุตตัวใดตัวหนึ่งของระบบ หรือทั้งสองอย่างก็ได้ อย่างไรก็ตาม ในทางตรรกะแล้ว 8259 จะเชื่อมต่อเพียงครั้งเดียวในแต่ละครั้งเท่านั้น
APIC แบบแยกส่วน
ชิป Intel APIC รุ่นแรก 82489DX ซึ่งออกแบบมาเพื่อใช้กับ โปรเซสเซอร์ Intel 80486และ Pentium รุ่นแรกๆ นั้น แท้จริงแล้วคือ APIC ภายนอกที่มีทั้งฟังก์ชันภายในและ I/O ในวงจรเดียวกัน ข้อกำหนด Intel MP 1.4 เรียกชิปนี้ว่า "APIC แบบแยก" ซึ่งแตกต่างจาก "APIC แบบรวม" ที่พบในโปรเซสเซอร์ Pentium ส่วนใหญ่[ 1 ] : 1-4 ชิป 82489DX มีสายอินเตอร์รัปต์ 16 สาย[ 2 ]และยังมีข้อบกพร่องที่อาจทำให้สูญเสียอินเตอร์รัปต์ ISA บางส่วน[ 3 ]
ในระบบมัลติโปรเซสเซอร์ 486 แต่ละ CPU จะต้องจับคู่กับ 82489DX ของตัวเอง นอกจากนี้ยังต้องใช้ 82489DX เสริมเป็น I/O APIC อีกด้วย 82489DX ไม่สามารถจำลอง 8259A (XT-PIC) ได้ ดังนั้นจึงต้องรวมชิปเหล่านี้ไว้ด้วยเพื่อความเข้ากันได้กับรุ่นก่อนหน้า[ 1 ] : 5-3 82489DX บรรจุอยู่ในแพ็คเกจ PQFP 132 พิน[ 2 ]มีจำหน่าย ในราคา 26 ดอลลาร์สหรัฐต่อ 1,000 หน่วยในปริมาณมาก[ 4 ]
APIC ท้องถิ่นแบบบูรณาการ
ตัวจัดการการขัดจังหวะภายในเครื่อง (LAPIC) ทำหน้าที่จัดการการขัดจังหวะภายนอกทั้งหมดสำหรับโปรเซสเซอร์เฉพาะบางตัวในระบบ SMP นอกจากนี้ยังสามารถรับและสร้างการขัดจังหวะระหว่างโปรเซสเซอร์ (IPI) ระหว่าง LAPIC ได้อีกด้วย LAPIC ตัวเดียวอาจรองรับเวกเตอร์ การขัดจังหวะที่ใช้งานได้สูงสุด 224 เวกเตอร์จาก APIC สำหรับอินพุต/เอาต์พุต โดยเวกเตอร์หมายเลข 0 ถึง 31 จากทั้งหมด 0 ถึง 255 สงวนไว้สำหรับการจัดการข้อยกเว้นโดยโปรเซสเซอร์ x86
โปรเซสเซอร์ Intel ทั้งหมดที่เริ่มต้นด้วยสถาปัตยกรรมไมโคร P5 ( P54C ) มี APIC ในตัว[ 5 ] [ 6 ]อย่างไรก็ตาม หาก APIC ในตัวถูกปิดใช้งานในโปรเซสเซอร์ P5 จะไม่สามารถเปิดใช้งานใหม่ได้ด้วยซอฟต์แวร์ ข้อจำกัดนี้ไม่มีอยู่ในโปรเซสเซอร์ P6และรุ่นต่อๆ มา[ 6 ]
ด้วยการเปิดตัวPentium 4 HTและPentium Dทำให้แต่ละคอร์ CPU และแต่ละเธรด CPU มี LAPIC ในตัว
คุณสมบัติ Message Signaled Interrupts (MSI) ของข้อกำหนด PCI 2.2 และรุ่นต่อมาไม่สามารถใช้งานได้หากไม่ได้เปิดใช้งาน APIC ในพื้นที่[ 7 ]การใช้ MSI ช่วยลดความจำเป็นในการใช้ I/O APIC นอกจากนี้ ยังรองรับการขัดจังหวะได้มากถึง 224 รายการในโหมด MSI และไม่อนุญาตให้แชร์ IRQ [ 8 ] : 10–11
ตัวจับเวลา APIC
ข้อดีอีกประการหนึ่งของ APIC ในพื้นที่คือยังให้ตัวจับเวลาที่มีความละเอียดสูง (ประมาณหนึ่งไมโครวินาทีหรือดีกว่า) ซึ่งสามารถใช้งานได้ทั้งในโหมดช่วงเวลาและโหมดครั้งเดียว[ 6 ]
ตัวจับเวลา APIC ประสบปัญหาการยอมรับในช่วงแรก เอกสารของ Microsoft จากปี 2002 (ซึ่งสนับสนุนให้ใช้High Precision Event Timerแทน) วิจารณ์ตัวจับเวลา LAPIC ว่ามี "ความละเอียดต่ำ" และระบุว่า "ซิลิคอนของนาฬิกามีข้อบกพร่องมากในบางครั้ง" [ 9 ]อย่างไรก็ตาม ตัวจับเวลา APIC ถูกใช้โดยWindows 7เมื่อ เปิดใช้งาน การทำโปรไฟล์และโดยWindows 8 ในทุกกรณี (ก่อนที่ Windows 8 จะอ้างสิทธิ์แต่เพียงผู้เดียวในตัวจับเวลานี้ โปรแกรมบางโปรแกรมเช่น CPU-Zก็ใช้ตัวจับเวลานี้เช่นกัน) ภายใต้ Microsoft Windows ตัวจับเวลา APIC ไม่ใช่ทรัพยากรที่สามารถแชร์ได้[ 10 ]
การขัดจังหวะแบบไม่เป็นคาบที่เสนอโดยตัวจับเวลา APIC ถูกใช้โดย คุณสมบัติ เคอร์เนลแบบไม่มีจังหวะของเคอร์เนล Linux คุณสมบัติเสริมแต่เป็นค่าเริ่มต้นนี้เป็นคุณสมบัติใหม่ในเวอร์ชัน 2.6.18 เมื่อเปิดใช้งานบนคอมพิวเตอร์ที่มีตัวจับเวลา APIC เคอร์เนลจะไม่ใช้ตัวจับเวลาช่วงเวลาที่ตั้งโปรแกรมได้8253สำหรับการรักษาเวลา[ 11 ]เอกสารของVMwareระบุว่า "ซอฟต์แวร์ไม่มีวิธีที่เชื่อถือได้ในการกำหนดความถี่ โดยทั่วไป วิธีเดียวที่จะกำหนดความถี่ของตัวจับเวลา APIC ในเครื่องคือการวัดโดยใช้ตัวจับเวลา PIT หรือ CMOS ซึ่งให้ผลลัพธ์โดยประมาณเท่านั้น" [ 12 ]
I/O APICs
I/O APIC ประกอบด้วยตารางการเปลี่ยนเส้นทาง ซึ่งใช้ในการกำหนดเส้นทางการขัดจังหวะที่ได้รับจากบัสอุปกรณ์ต่อพ่วงไปยัง APIC ในพื้นที่หนึ่งตัวหรือมากกว่านั้น I/O APIC รุ่นแรกๆ (เช่น 82489DX, SIO.A และ PCEB/ESC) รองรับสายการขัดจังหวะเพียง 16 สาย แต่รุ่นต่อมา เช่น 82093AA (ชิปแยกต่างหากสำหรับ PIIX3/PIIX4) รองรับสายการขัดจังหวะได้ถึง 24 สาย[ 8 ] : 10–11 มันถูกบรรจุในรูป แบบPQFP 64 พิน[ 13 ] 82093AA มักจะเชื่อมต่อกับPIIX3 / PIIX4และใช้ PIC 8259 แบบดั้งเดิมที่รวมอยู่ในตัว[ 13 ] ICH1 ได้รวม I/O APIC ไว้ แล้ว I/O APIC ที่รวมอยู่ในชิปเซ็ตสมัยใหม่อาจมีสายการขัดจังหวะมากกว่า 24 สาย[ 14 ]
จากการทดสอบประสิทธิภาพของ Intel ในปี 2009 โดยใช้Linuxพบว่า I/O APIC ช่วยลดความหน่วงของการขัดจังหวะได้เกือบสามเท่าเมื่อเทียบกับการจำลอง 8259 (XT-PIC) ในขณะที่การใช้ MSI ช่วยลดความหน่วงได้มากกว่านั้นอีกเกือบเจ็ดเท่าเมื่อเทียบกับ XT-PIC พื้นฐาน[ 8 ] : 19
ตัวแปร
xAPIC เปิดตัวพร้อมกับPentium 4ในขณะที่x2APICเป็นตัวควบคุมการขัดจังหวะแบบโปรแกรมได้รุ่นล่าสุดของ Intel ซึ่งเปิดตัวพร้อมกับสถาปัตยกรรมไมโคร Nehalemในเดือนพฤศจิกายน 2551 [ 15 ] การปรับปรุงที่สำคัญของ x2APIC มุ่งเน้นไป ที่จำนวน CPU ที่รองรับและประสิทธิภาพของอินเทอร์เฟซ
ปัจจุบัน x2APIC ใช้ 32 บิตในการกำหนดแอดเดรสให้กับซีพียู ทำให้สามารถกำหนดแอดเดรสให้กับซีพียูได้สูงสุด2³²⁻¹ ตัว โดยใช้โหมดปลายทางทางกายภาพ ส่วนโหมดปลายทางเชิงตรรกะทำงานแตกต่างออกไปและมีการนำคลัสเตอร์เข้ามาใช้ โดยในโหมดนี้ สามารถกำหนดแอดเดรสให้กับ โปรเซสเซอร์ ได้สูงสุด2²⁰⁻¹⁶ ตัว
อินเทอร์เฟซที่ได้รับการปรับปรุงช่วยลดจำนวนการเข้าถึงรีจิสเตอร์ APIC ที่จำเป็นสำหรับการส่งการขัดจังหวะระหว่างโปรเซสเซอร์ (IPIs) ด้วยข้อได้เปรียบนี้KVMสามารถและจำลอง x2APIC สำหรับโปรเซสเซอร์รุ่นเก่าที่ไม่รองรับทางกายภาพ และการสนับสนุนนี้ถูกเปิดเผยจากQEMUย้อนกลับไปถึงConroeและแม้แต่โปรเซสเซอร์ AMD Opteron G-series (ซึ่งทั้งสองรุ่นไม่รองรับ x2APIC โดยธรรมชาติ) [ 16 ] [ 17 ]
APICvเป็นชื่อทางการค้าของ Intel สำหรับ การสนับสนุน การจำลองเสมือนด้วยฮาร์ดแวร์ที่มุ่งลดภาระการขัดจังหวะในระบบปฏิบัติการแขก APICv เปิดตัวใน ซีรี่ส์โปรเซสเซอร์ Ivy Bridge-EPซึ่งวางจำหน่ายในชื่อ Xeon E5-26xx v2 (เปิดตัวปลายปี 2013) และ Xeon E5-46xx v2 (เปิดตัวต้นปี 2014) [ 18 ] [ 19 ] AMD ประกาศเทคโนโลยีที่คล้ายกันชื่อAVIC [ 20 ] [ 21 ]ซึ่งมีให้ใช้งานในโปรเซสเซอร์ตระกูล 15h รุ่น 6Xh (Carrizo)และรุ่นใหม่กว่า[ 22 ]
ปัญหา
มีข้อบกพร่องที่ทราบกันดีอยู่หลายประการในการใช้งานระบบ APIC โดยเฉพาะอย่างยิ่งในส่วนที่เกี่ยวข้องกับวิธีการเชื่อมต่อ8254 BIOS ที่มีข้อบกพร่อง อาจไม่ตั้งค่าการกำหนดเส้นทางการขัดจังหวะอย่างถูกต้อง หรือให้ ตาราง ACPIและตาราง Intel MultiProcessor Specification (MPS) ที่ไม่ถูกต้อง
APIC อาจเป็นสาเหตุของความล้มเหลวของระบบได้เช่นกัน หากระบบปฏิบัติการไม่รองรับอย่างถูกต้อง ในระบบปฏิบัติการรุ่นเก่า มักจะต้องปิดใช้งาน I/O และ APIC ในเครื่อง แต่ถึงแม้ว่าปัจจุบันจะไม่สามารถทำได้แล้วเนื่องจากระบบมัลติโปรเซสเซอร์แบบสมมาตรและ ระบบ มัลติคอร์ แพร่หลายมากขึ้น แต่ข้อบกพร่องในเฟิร์มแวร์และระบบปฏิบัติการก็เกิดขึ้นได้ยากแล้วในปัจจุบัน
การแข่งขัน
AMDและCyrix เคยเสนอสถาปัตยกรรม OpenPIC ที่ มีวัตถุประสงค์คล้ายคลึงกันซึ่งรองรับโปรเซสเซอร์ได้มากถึง 32 ตัว[ 23 ]โดยได้รับการสนับสนุนอย่างน้อยในเชิงประกาศจากIBMและCompaqในช่วงประมาณปี 1995 [ 24 ]อย่างไรก็ตาม ไม่มีเมนบอร์ด x86 ใดที่วางจำหน่ายพร้อมกับ OpenPIC [ 25 ]หลังจากความล้มเหลวของ OpenPIC ในตลาด x86 AMD จึงได้รับใบอนุญาต APIC ของ Intel สำหรับ โปรเซสเซอร์ AMD Athlonและโปรเซสเซอร์รุ่นต่อมา
อย่างไรก็ตาม IBM ได้พัฒนาตัวควบคุมการขัดจังหวะมัลติโปรเซสเซอร์ (MPIC) โดยอิงตามข้อกำหนดรีจิสเตอร์ OpenPIC [ 26 ] MPIC ถูกใช้ใน การออกแบบที่ใช้ PowerPCรวมถึงของ IBM เช่น ในระบบRS/6000 บางระบบ [ 27 ]แต่ยังใช้โดย Apple จนถึงPower Mac G5ของ พวกเขา [ 28 ] [ 29 ]
ดูเพิ่มเติม
- การขัดจังหวะระหว่างโปรเซสเซอร์ (IPI)
- ขัดจังหวะ
- ตัวจัดการการขัดจังหวะ
- ความหน่วงของการขัดจังหวะ
- ข้อความแจ้งเตือนการขัดจังหวะ (MSI)
- อินเตอร์รัปต์ที่ไม่สามารถปิดกั้นได้ (NMI)
อ่านเพิ่มเติม
- คู่มือสำหรับนักพัฒนาซอฟต์แวร์สถาปัตยกรรม Intel IA-32 เล่ม 3A: คู่มือการเขียนโปรแกรมระบบ ส่วนที่ 1 บทที่ 10
ลิงก์ภายนอก
- ข้อมูลจำเพาะของ Intel 64 Architecture x2APIC (PDF)
- ข้อมูลเพิ่มเติมเกี่ยวกับสถาปัตยกรรม Intel x2APIC สามารถดูได้ในคู่มือสำหรับนักพัฒนาซอฟต์แวร์ของสถาปัตยกรรม Intel 64 และ IA-32
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ตัวควบคุมการขัดจังหวะแบบตั้งโปรแกรมได้ขั้นสูง
ตัว ควบคุมการขัดจังหวะแบบตั้งโปรแกรมได้ขั้นสูง ( APIC ) เป็นตระกูลของ ตัวควบคุมการขัดจังหวะแบบตั้งโปรแกรมได้ ที่พัฒนาโดย Intel ดังชื่อที่บ่งบอก APIC นั้นล้ำหน้ากว่า...
ภาพรวม
ระบบ APIC ของ Intel ประกอบด้วยสองส่วน คือ APIC เฉพาะที่ (LAPIC) และ APIC สำหรับการรับส่งข้อมูล ( I/O APIC ) โดยมี LAPIC หนึ่งตัวในแต่ละ CPU ในระบบ ในการใช้งานครั้งแรกสุด ( 82489DX ) LAPIC เป็นวงจรแยกชิ้น ต่างจากการใช้งานในชิปประมวลผลของ Intel ในภายหลัง...
APIC แบบแยกส่วน
ชิป Intel APIC รุ่นแรก 82489DX ซึ่งออกแบบมาเพื่อใช้กับ โปรเซสเซอร์ Intel 80486 และ Pentium รุ่นแรกๆ นั้น แท้จริงแล้วคือ APIC ภายนอกที่มีทั้งฟังก์ชันภายในและ I/O ในวงจรเดียวกัน ข้อกำหนด Intel MP 1.
APIC ท้องถิ่นแบบบูรณาการ
ตัวจัดการการขัดจังหวะภายในเครื่อง (LAPIC) ทำหน้าที่จัดการการขัดจังหวะภายนอกทั้งหมดสำหรับโปรเซสเซอร์เฉพาะบางตัวในระบบ SMP นอกจากนี้ยังสามารถรับและสร้าง การขัดจังหวะระหว่างโปรเซสเซอร์ (IPI) ระหว่าง LAPIC ได้อีกด้วย LAPIC ตัวเดียวอาจรองรับเวกเตอร์ การขัดจังหวะ...