เฟิร์มแวร์ไมโครโค้ดของโปรเซสเซอร์มีอะไรบ้าง? แก้ไขข้อผิดพลาดใน CPU โปรเซสเซอร์กลางที่ผลิตโดย Intel

ฉันนำเสนอผู้บริจาค BioStar A740G M2L+ (AMD 740G / SB710) และผู้รับ BioStar A740G M2+ (AMD 740G / SB700) เมนบอร์ดที่มีตัวอักษร "L" เป็นมาเธอร์บอร์ดรุ่นใหม่กว่าและรองรับโปรเซสเซอร์ AM3 อย่างเป็นทางการ ซึ่งแตกต่างจากเมนบอร์ดอื่นๆ ซึ่งจำกัดไว้เพียงรองรับโปรเซสเซอร์ AM2+ เท่านั้น ขอเป็น การวิเคราะห์เปรียบเทียบไบออสของพวกเขา
จากสำนักงาน เราโหลดเฉพาะไซต์เท่านั้น การปรับปรุงครั้งล่าสุดเฟิร์มแวร์ BIOS สำหรับเมนบอร์ดแต่ละตัวเหล่านี้:
- สำหรับ A740G M2+ เบต้าล่าสุด A74GM916.BSSสำหรับเดือนกันยายน 2552
- สำหรับ A740G M2L+ - ไฟล์ 74GCU511.BSS- สำหรับเดือนพฤษภาคม 2553

จากนั้น ติดอาวุธให้ตัวเองด้วยยูทิลิตี้ MMTOOL (ฉันใช้เวอร์ชัน 3.22, 3.23 และ 3.26 - ฉันไม่พบความแตกต่างในการทำงาน). หากต้องการทำงานกับ MMTOOL นามสกุลไฟล์เฟิร์มแวร์ BIOS จะต้องเปลี่ยนชื่อเป็น *.rom

ตอนนี้เราเปิดตัว MMTOOL สองไฟล์และโหลดไฟล์เฟิร์มแวร์จากสองแมตลงไป พลัด เราให้ความสนใจกับขนาดที่แตกต่างกันในคอลัมน์ "ขนาดแหล่งที่มา" (และใน "ขนาดใน Rom" ด้วย) ของโมดูล 11 "P6 Micro Code" ในแต่ละเฟิร์มแวร์

ไปที่ส่วน CPU PATCH เพื่อดูการเปรียบเทียบโดยละเอียด:

ไฟล์ผู้บริจาค 74GCU511.rom - cpu_list มี 14 บรรทัดพร้อมรองรับ CPURev.ID + 1 ว่าง (รูปที่ 1)

รุ่นเบต้าของผู้รับ A74GM916.rom - cpu_list มี 13 บรรทัดที่รองรับ CPURev.ID + 1 ว่าง (รูปที่ 2)

หลังจากวิเคราะห์รายการของ BIOS ทั้งสองตัวนี้แล้ว จะเห็นได้ชัดว่าสำหรับเมนบอร์ดรุ่นใหม่นั้น นักพัฒนาได้ใช้แพตช์ล่าสุดสำหรับ โปรเซสเซอร์เอเอ็มดีโดยที่ไมโครโค้ดของสองบรรทัดที่มี CPURev.ID 1043 และ 1062 (ลงวันที่ 31/09/09) ได้รับการแก้ไข และเพิ่มหนึ่งบรรทัดที่มี CPURev.ID 10A0 (ลงวันที่ 2010/02/17)

วิธีที่ 1 - การปรับเปลี่ยนเส้นที่โดดเด่น
บรรทัดที่โดดเด่นทั้งสามบรรทัดนี้แยกมาจากผู้บริจาค 74GCU511.rom - การดำเนินการ "แยกข้อมูลแพตช์" + "ใช้" + 1 บรรทัดว่างสุดท้ายและบันทึกเป็นไฟล์แยกกัน

อันดับแรกในส่วน CPU PATCH ของไฟล์ผู้รับ A74GM916.rom สองบรรทัดที่มีหมายเลข CPURev.ID 1043 และ 1062 (ซึ่งไมโครโค้ดเก่ากว่าที่เราจะแทรกเพิ่มเติม) และบรรทัดว่างสุดท้ายจะถูกลบ - การดำเนินการ "ลบแพทช์ ข้อมูล” + “นำไปใช้” ( รูปที่ 3)

หลังจากนั้น ไมโครโค้ดที่ใหม่กว่าจากไฟล์แพตช์สี่ไฟล์ที่ได้รับก่อนหน้านี้สำหรับ CPURev.ID 1043, 1062, 10A0 และบรรทัดว่างจะถูกแทรกทีละบรรทัด (รูปที่ 4)

โปรดใส่ใจกับขนาด (“ขนาดแหล่งที่มา” และ “ขนาดใน Rom”) ของโมดูล 11 “P6 Micro Code” ก่อนและหลังการใช้การเปลี่ยนแปลงเหล่านี้กับไฟล์ผู้รับ
หลังจากแอปพลิเคชัน ขนาดเหล่านี้สำหรับผู้รับ (รูปที่ 6) จะเหมือนกับขนาดของโมดูลเดียวกันในไฟล์ผู้บริจาค 74GCU511.rom (รูปที่ 5)
เป็นที่น่าสังเกตว่ามันไม่ยากที่จะเข้าใจว่าขนาดโมดูลถูกสร้างขึ้นอย่างไร (แต่ละบรรทัดในส่วน CPU PATCH ใช้เวลา 2,048 ไบต์)

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

วิธีที่ 2 - แก้ไขโดยเปลี่ยนโมดูลทั้งหมด
ที่จริงแล้วนี่คือสิ่งที่อธิบายไว้บนอินเทอร์เน็ตอย่างชัดเจน (เช่นบางส่วน)

ใน MMTOOL เราโหลดไฟล์ผู้บริจาค 74GCU511.rom ไปที่แท็บ "แตกไฟล์" และมองหาบรรทัด "P6 Micro Code" จากนั้นเราเลือกมันในฟิลด์ "ไฟล์โมดูล" เราตั้งชื่อมันว่า ncpucode.bin และรันโมดูลแยก "ในรูปแบบที่ไม่มีการบีบอัด"

ตอนนี้โหลดไฟล์ผู้รับ A74GM916.rom ลงใน MMTOOL ไปที่แท็บ "แทนที่" แล้วมองหาบรรทัด "P6 Micro Code" อีกครั้ง เลือก รอเรียกดู และเลือกโมดูลผู้บริจาคของเรา ncpucode.bin คลิกแทนที่ จากนั้นตกลงที่จะแทนที่โมดูลนี้

โปรดใส่ใจกับขนาด (“ขนาดแหล่งที่มา” และ “ขนาดใน Rom”) ของโมดูล 11 “P6 Micro Code” ก่อนและหลังแทนที่โมดูลนี้ในไฟล์ผู้รับ
หลังจากแอปพลิเคชัน ขนาดเหล่านี้สำหรับผู้รับ (รูปที่ 7) จะเหมือนกับขนาดของโมดูลเดียวกันในไฟล์ผู้บริจาค 74GCU511.rom (รูปที่ 5)

หากเราเปรียบเทียบผลลัพธ์ของทั้งสองวิธี (รูปที่ 6 และรูปที่ 7) จะมีความแตกต่างที่เห็นได้ชัดเจนคือ 10 ไบต์ในที่อยู่ RomLoc ของโมดูล "กำหนดโดยผู้ใช้หรือสงวนไว้" ถัดจาก "P6 Micro Code" ที่อัปเดต โมดูล - บางทีนี่อาจเป็นคุณสมบัติของการทำงานของ MMTOOL...

บทสรุปและคำหลัง.
ด้วยวิธีนี้จากเฟิร์มแวร์ BIOS ที่แตกต่างกันแผ่นที่แตกต่างกัน บอร์ดบนซ็อกเก็ต AM2+ (และแม้แต่ AM3 สำหรับการเปรียบเทียบ) คุณสามารถค้นหาไมโครโค้ดล่าสุดสำหรับ CPURev.ID แต่ละประเภท ทั้งใน Award และ AMI bios จากนั้นรวมเข้าไว้ใน ncpucode.bin เดียว
ต่อจากนั้นมีขนาด 32,768 ไบต์จาก 16 บรรทัด (ไมโครโค้ด) พร้อมวันที่ล่าสุดจากเฟิร์มแวร์ที่ศึกษาของ BIOS ต่างๆ: ด้วย 15 หลากหลายชนิดการแก้ไขโปรเซสเซอร์สำหรับซ็อกเก็ต AM2+ (040A, 0413, 0414, 041B, 0433, 0680, 0C1B, 1000, 1020, 1022, 1040, 1041, 1043, 1062, 10A0) และบรรทัดที่ 16 สำหรับ RevID 0000 (เห็นได้ชัดว่าไม่ใช่ไมโครโค้ดสากลคิว สำหรับ การแก้ไขโปรเซสเซอร์ที่ไม่ได้อธิบายไว้ในบรรทัดอื่น - IMHO เช่นในอนาคต)

ด้วยการรวม ncpucode.bin ของคุณเองโดยการนำเข้าแพตช์ที่จำเป็น (ไมโครโค้ด) สำหรับการแก้ไขโปรเซสเซอร์ที่จำเป็นแต่ละครั้ง คุณสามารถใช้เฟิร์มแวร์ AMI BIOS ใดๆ กับโมดูล "P6 Micro Code" เป็นเฟิร์มแวร์ในห้องปฏิบัติการได้

อย่างไรก็ตามเมื่อบันทึกไฟล์เฟิร์มแวร์พบคุณสมบัติที่ไม่พึงประสงค์ของ MMTOOL - ด้วยเหตุผลบางอย่างยูทิลิตี้ได้เพิ่ม 8 ศูนย์ไบต์ที่ส่วนท้ายของโมดูล "P6 Micro Code" - กลายเป็นขนาด 32776 ไบต์ เมื่อแยกไฟล์ ncpucode.bin ออกจากเฟิร์มแวร์ห้องปฏิบัติการโดยใช้ MMTOOL เดียวกัน ไฟล์เอาต์พุตจะมีขนาด 32776 ไบต์ด้วย
คุณสามารถแก้ไขได้ด้วยโปรแกรมแก้ไขง่ายๆ ที่ทุกคนเข้าถึงได้ แต่ฉันยัง (บังเอิญ) ค้นพบด้วย ทางเลือกอื่น: เมื่อทำการสกัด ยูทิลิตี้สากล BIOS_EXT.EXE ของโมดูลทั้งหมดจากเฟิร์มแวร์ในห้องปฏิบัติการ ไฟล์ ncpucode.bin มีขนาดที่ถูกต้องคือ 32768 ไบต์ - ยูทิลิตี้ BIOS_EXT.EXE นั้นระบุจุดสิ้นสุดของโมดูล "P6 Micro Code" ได้อย่างถูกต้องเมื่อบันทึกลงในไฟล์

หากในทางทฤษฎีชิปเซ็ตและมาเธอร์บอร์ด LGA 775 สามารถรองรับ XEON 771 ได้ แต่ BIOS ดั้งเดิมไม่รองรับและไม่มีการดัดแปลงใด ๆ คุณสามารถแก้ไข BIOS ได้ด้วยตัวเอง

สำคัญ

1. คุณทำการเปลี่ยนแปลงทั้งหมดกับเฟิร์มแวร์ BIOS (โดยปกติจะเป็นไฟล์ .ROM) ด้วยความเสี่ยงและอันตรายของคุณเอง ในกรณีที่เกิดข้อผิดพลาดจะได้รับ "อิฐ" ที่รับประกันจากเมนบอร์ด
2. ขนาดไฟล์ของเฟิร์มแวร์ดั้งเดิมและเวอร์ชันที่แก้ไขจะต้องตรงกับขนาดไบต์

3. อัพเดตเฟิร์มแวร์ ไฟล์ไบออสการกลับไปที่ชิปทำได้โดยใช้ยูทิลิตี้ที่เป็นกรรมสิทธิ์จากผู้พัฒนาเมนบอร์ดเท่านั้น (ต้องดาวน์โหลดจากเว็บไซต์ของผู้ผลิต)
4. ในด้านบน เมนบอร์ดอ่า BIOS นั้นมีโมดูลอัพเดตเฟิร์มแวร์ในตัว (เช่นยูทิลิตี้ EZ Flash 2 สำหรับ ASUS P5Q ในส่วนเครื่องมือ) - ตัวเลือกที่ดีที่สุด

จะทำอย่างไรให้ดีขึ้น:
1. ฉันยังควรค้นหาตัวเลือกสำเร็จรูปที่รองรับ XEON บนอินเทอร์เน็ตหรือไม่
2. ดาวน์โหลดจากเว็บไซต์อย่างเป็นทางการ รุ่นล่าสุดเฟิร์มแวร์และเพิ่มไมโครโค้ด?

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

ก่อนอื่น คุณสามารถประเมินการมีอยู่ของไมโครโค้ด XEON ในเฟิร์มแวร์ BIOS ได้

- รับอิมเมจ AMI BIOS ปัจจุบันผ่าน Universal BIOS Backup ToolKit 2.0
— ดูเนื้อหาของไฟล์ ROM ที่ได้รับผ่าน AMIBCP V 3.37

ตัวเลือกสำหรับไบออส AMI (บริษัท อเมริกัน เมกะเทรนด์)

1. ดาวน์โหลดเวอร์ชันล่าสุด ไบออสจากเว็บไซต์ของผู้ผลิตเมนบอร์ดของคุณ

3. ดาวน์โหลดไมโครโค้ดสำหรับโปรเซสเซอร์ XEON 771: lga771_microcodes

4. ค้นหา CPUID ของโปรเซสเซอร์ของคุณโดยใช้ ไอด้า64หรือโปรแกรมที่คล้ายกัน (ดูเหมือน cpu0001067Ah) ถ้า ไบออสจะถูกเย็บติดก่อนการติดตั้งโปรเซสเซอร์ จากนั้นให้ข้ามขั้นตอนนี้ไป

5. คลายไฟล์เก็บถาวร เอ็มเอ็มทูลและ lga771_ไมโครโค้ดและออกจากไฟล์ที่มีนามสกุล .binเฉพาะไฟล์ที่ขึ้นต้นตรงกับ CPUID ของคอมพิวเตอร์ของคุณ (เช่น cpu0001067a_plat00000044_ver00000a0b_date20100928.bin)

ถ้าเราไม่รู้ว่ารหัสอะไร เราก็จะเย็บทุกอย่าง

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

บี.ไปที่แท็บ (2) แพทช์ซีพียูจากนั้นด้วยปุ่ม (3) เรียกดูให้เปิดไฟล์ .binสอดคล้องกับ CPUID ของคุณ

ค.ปล่อยให้ตัวเลือกเป็นค่าเริ่มต้น "แทรกข้อมูลแพทช์"และกดปุ่ม (4) นำมาใช้.

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

ระบบอินพุตเอาต์พุตพื้นฐาน - ระบบพื้นฐานอินเทอร์เฟซอินพุต/เอาต์พุต ย่อว่า BIOS ชิปขนาดเล็กบนมาเธอร์บอร์ดซึ่งเป็นชิปตัวแรกที่ได้รับการควบคุมเมื่อเปิดพีซี ที่ให้ไว้: การตั้งค่าพื้นฐานพีซีกำลังตรวจสอบส่วนประกอบพีซีเมื่อเริ่มต้น...

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

โปรเซสเซอร์ Intel ทั้งหมดที่มีสถาปัตยกรรม P6 ซึ่งรวมถึงตระกูล Pentium Pro, Pentium II & III, Celeron, Pentium II & III Xeon และ Pentium II Overdrive มีคุณสมบัติที่โดดเด่นเช่น "ไมโครโค้ดที่ตั้งโปรแกรมใหม่ได้" โปรเซสเซอร์เหล่านี้มีความสามารถในการเปลี่ยนไมโครโค้ดเช่น เป็นไปได้ที่จะแก้ไขข้อผิดพลาดในการใช้งานซอฟต์แวร์และวงจรของโปรเซสเซอร์เฉพาะของตระกูล P6 และข้อผิดพลาดในตัวบางอย่างเกือบจะอยู่ในระดับฮาร์ดแวร์ ข้อผิดพลาดอาจปรากฏในขั้นตอนการออกแบบโปรเซสเซอร์ และแก้ไขได้โดยการเปลี่ยนไมโครโค้ด แต่ละตระกูลย่อย (PII, Celeron, PPro, Xeon) มีข้อกำหนด ด้วยการเปิดตัวโปรเซสเซอร์ใหม่แต่ละตัว Stepping (อุปกรณ์ทั้งหมดภายในเหมือนกันภายในขีดจำกัดของการเบี่ยงเบนทางเทคโนโลยี) Intel เผยแพร่การอัปเดตข้อมูลจำเพาะ ซึ่งระบุข้อผิดพลาดที่ตรวจพบและแก้ไข (ความเบี่ยงเบนจากข้อมูลจำเพาะ)

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

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

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

ไมโครโค้ดจะอัพเดตตัวเองเป็นบล็อกข้อมูลขนาด 2 กิโลไบต์ที่แฟลชอยู่ใน BIOS ของระบบ มีบล็อกดังกล่าวสำหรับโปรเซสเซอร์แต่ละตัวที่ก้าวมาจากตระกูล P6 Intel เป็นผู้จัดหาไมโครโค้ดเวอร์ชันล่าสุดให้กับผู้ผลิต BIOS ชั้นนำ ฐานข้อมูลการอัพเดตได้รับการอัปเดตและเปลี่ยนแปลงเมื่อมีโมเดลใหม่และเวอร์ชันไมโครโค้ดพร้อมใช้งาน Intel แนะนำให้อัพเดตเวอร์ชันไมโครโค้ดโดยใช้ยูทิลิตี้ของมันเมื่อติดตั้งโปรเซสเซอร์ใหม่บนเมนบอร์ดหรือหน่วยความจำแฟลชแบบแฟลชเพื่อให้แน่ใจว่า BIOS มีข้อมูลล่าสุด รุ่นล่าสุดไมโครโค้ด โปรแกรมนี้กำหนดโปรเซสเซอร์ที่ใช้ (โดยใช้ CPUID) และค้นหาฐานข้อมูลสำหรับการอัพเดตที่เกี่ยวข้อง หากพบไมโครโค้ดเวอร์ชันใหม่ ยูทิลิตี้นี้จะกะพริบโค้ดใน BIOS ในเครื่องโดยไม่ส่งผลกระทบต่อพื้นที่อื่น ที่. ไม่จำเป็นต้องตั้งโปรแกรมแฟลชทั้งหมดใหม่เพื่อรองรับ CPU ใหม่ ดังเช่นที่เคยเป็นมา Intel จะโพสต์อัพเดตฐานข้อมูลบนเว็บไซต์เป็นระยะๆ

ฐานข้อมูลล่าสุดที่เรามีคือรุ่นปรับปรุง 5.01 และมีเวอร์ชันไมโครโค้ดต่อไปนี้:

โปรเซสเซอร์โปรเซสเซอร์ก้าวการปรับปรุงไมโครโค้ด Rev
โปรเซสเซอร์ Pentium III0x6720x04
โปรเซสเซอร์ Pentium III0x6730x02
โปรเซสเซอร์ Pentium III Xeon0x6720x21
โปรเซสเซอร์ Pentium III Xeon0x6730x22
โปรเซสเซอร์ Pentium II0x6330x34
โปรเซสเซอร์ Pentium II0x6340x35
โปรเซสเซอร์ Pentium II0x6500x32
โปรเซสเซอร์ Pentium II0x6510x30
โปรเซสเซอร์ Pentium II0x6520x14
โปรเซสเซอร์ Pentium II0x6530x01
โปรเซสเซอร์ Pentium II Xeon0x6520x29
โปรเซสเซอร์ Pentium II Xeon0x6530x04
โปรเซสเซอร์ Intel Celeron0x6500x32
โปรเซสเซอร์ Intel Celeron0x6510x30
โปรเซสเซอร์ Intel Celeron0x6600x09
โปรเซสเซอร์ Intel Celeron0x6650x02
โปรเซสเซอร์ Pentium II OverDrivex16320x02
โปรเซสเซอร์ Pentium Pro0x6120xC6
โปรเซสเซอร์ Pentium Pro0x6160xC6
โปรเซสเซอร์ Pentium Pro0x6170xC6
โปรเซสเซอร์ Pentium Pro0x6190xD2

คุณสามารถดาวน์โหลดยูทิลิตี้เวอร์ชันล่าสุดที่แก้ไขไมโครโค้ดได้โดยตรงจากที่นี่: pupdt501.exe (115 Kb)

สามารถดาวน์โหลดฐานข้อมูลเก่า (PEP15.PDB) ได้จากที่นี่: pupdt461.exe (111 KB)

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

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

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

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

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

ของฉัน ประสบการณ์ส่วนตัวจนถึงขณะนี้การทำงานกับโปรแกรมนี้ถูก จำกัด ไว้ที่ 7 กรณีซึ่งเป็นไปได้ที่จะอัปเดตไมโครโค้ดบนเมนบอร์ดเพียงตัวเดียว (Abit LX6 พร้อม PII 233) ในกรณีอื่น BIOS มีไมโครโค้ดเวอร์ชันที่อัปเดตอยู่แล้ว นอกจากนี้เรายังไม่พบ BIOS ที่ไม่รองรับการอัพเดตไมโครโค้ด

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

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

ข้อบกพร่องของ CPU บางอย่างอาจทำให้ Firefox ขัดข้อง ตัวอย่างเช่น เป็นที่ทราบกันว่า Firefox 57 และใหม่กว่าอาจขัดข้องใน CPU Broadwell-U ที่มีไมโครโค้ดเก่าเป็นครั้งคราว ในลักษณะที่ไม่พบในไมโครโค้ด Broadwell-U เวอร์ชันใหม่กว่า

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

หากต้องการมีระบบที่ทันสมัยบน Mac ให้ใช้การอัพเดทระบบ OS X ทั้งหมดและการอัพเดทเฟิร์มแวร์ของ Apple ที่นำเสนอในบานหน้าต่างการอัพเดทของ แอพสโตร์แอป.

หากต้องการอนุญาตให้ Windows โหลดไมโครโค้ดที่อัปเดตลงบน CPU โปรดตรวจสอบให้แน่ใจ วินโดวส์อัพเดตเปิดใช้งานและตั้งค่าให้ติดตั้งการอัปเดต

หากต้องการดูสถาปัตยกรรมไมโครโปรเซสเซอร์และไมโครโค้ดที่ใช้งานอยู่ ให้เรียกใช้คำสั่ง reg query HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0 ในพร้อมท์คำสั่งของ Windows ( คุณสามารถเปิดพรอมต์คำสั่งโดยการกด Windows + R พิมพ์ cmd แล้วกด Return ) บรรทัดที่ชื่อ "VendorIdentifier" จะแสดงผู้จำหน่าย CPU (GenuineIntel สำหรับ Intel หรือ AuthenticAMD สำหรับ AMD) บรรทัดที่มีข้อความว่า "ตัวระบุ" จะให้สถาปัตยกรรมไมโครเป็นตัวเลขสามตัว: "ครอบครัว", "แบบจำลอง" และ "ก้าว" สิ่งเหล่านี้เกี่ยวข้องกับการระบุว่าจุดบกพร่องของ CPU เฉพาะอาจเกี่ยวข้องกับ CPU ในคอมพิวเตอร์ของคุณหรือไม่ บรรทัดที่มีป้ายกำกับ "อัปเดตการแก้ไข" แสดงการแก้ไขไมโครโค้ดปัจจุบัน (สำหรับสถาปัตยกรรมไมโครโดยเฉพาะ) โดยมีศูนย์ทั้งสองด้าน ตัวอย่างเช่น อัปเดตการแก้ไข REG_BINARY 000000001E000000 หมายความว่าการแก้ไขเป็น 1E (เลขฐานสิบหก) บรรทัดที่มีข้อความว่า "การแก้ไขการอัปเดตก่อนหน้า" แสดงการแก้ไขไมโครโค้ดที่โหลดจาก BIOS

หากผู้จำหน่ายคือ GenuineIntel ตระกูลคือ 6 รุ่นคือ 61 และ Stepping คือ 4 เพื่อหลีกเลี่ยงไม่ให้เกิดปัญหากับ Firefox 57 หรือใหม่กว่า การแก้ไขไมโครโค้ดต้องเป็น 1A หรือสูงกว่า

การอัพเดตไมโครโค้ดจะถูกใช้งานเป็นค่าเริ่มต้นหรือไม่นั้นขึ้นอยู่กับการแจกจ่าย Linux และอาจแตกต่างกันสำหรับ CPU ของ Intel และ AMD

  • ในการเผยแพร่บน Debian รวมถึง Ubuntu การอัปเดตไมโครโค้ดสำหรับโปรเซสเซอร์ Intel จัดทำโดยแพ็คเกจ Intel-Microcode และการอัพเดตไมโครโค้ดสำหรับโปรเซสเซอร์ AMD จัดทำโดยแพ็คเกจ amd64-microcode
  • บน Arch การอัปเดตไมโครโค้ดของ AMD จะถูกติดตั้งตามค่าเริ่มต้น แต่การอัปเดตไมโครโค้ดของ Intel จำเป็นต้องมีขั้นตอนพิเศษ
  • บน Fedora การอัปเดตไมโครโค้ดจะถูกติดตั้งตามค่าเริ่มต้น

หากต้องการดูสถาปัตยกรรมไมโครโปรเซสเซอร์และไมโครโค้ดที่ใช้งานอยู่ ให้รันคำสั่ง less /proc/cpuinfo ในเทอร์มินัล บรรทัดที่มีป้ายกำกับ "vendor_id" แสดงผู้จำหน่าย CPU (GenuineIntel สำหรับ Intel หรือ AuthenticAMD สำหรับ AMD) สถาปัตยกรรมไมโครถูกกำหนดเป็นตัวเลขสามตัวบนบรรทัดที่มีป้ายกำกับว่า "ตระกูล cpu" "รุ่น" และ "ก้าว" สิ่งเหล่านี้เกี่ยวข้องกับการระบุว่าจุดบกพร่องของ CPU เฉพาะอาจเกี่ยวข้องกับ CPU ในคอมพิวเตอร์ของคุณหรือไม่ บรรทัดที่มีข้อความว่า "ไมโครโค้ด" จะแสดงหมายเลขการแก้ไขไมโครโค้ด (สำหรับสถาปัตยกรรมไมโครโดยเฉพาะ) ในรูปแบบเลขฐานสิบหก

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

ตัวอย่างเช่น ย้อนกลับไปในเดือนมกราคม ท่ามกลางแพทช์อื่นๆ Intel ได้เปิดตัวการอัปเดตไมโครโค้ดเพื่อต่อต้าน Spectre สำหรับ Broadwell, Haswell, Skylake, ทะเลสาบคาบีและ คอฟฟี่เลค. แต่เกือบจะในทันทีก็ชัดเจนว่าพวกเขานำไปสู่ความล้มเหลวและ ในตอนแรก Intel กล่าวว่าปัญหาดังกล่าวส่งผลต่อชิป Broadwell และ Haswell เท่านั้น แต่ต่อมาได้รับทราบถึงการมีอยู่ของข้อบกพร่องในคอมพิวเตอร์ที่ใช้โปรเซสเซอร์ Skylake, Kaby Lake และ Coffee Lake และพันธมิตรและผู้ใช้จะงดเว้นการติดตั้งแพตช์ในตอนนี้ ในที่สุดในช่วงต้นเดือนกุมภาพันธ์ ไมโครโค้ดเวอร์ชันได้รับการแก้ไขแล้ว แต่สำหรับชิปผู้บริโภคบนมือถือและเดสก์ท็อปของตระกูล Skylake เท่านั้น

หลังจากหนึ่งเดือนของการทดสอบและทดสอบแพทช์อย่างเข้มข้นโดย Intel และพันธมิตรก็ถึงเวลาสำหรับโปรเซสเซอร์ปัจจุบันอื่น ๆ ไม่มากก็น้อย: การอัปเดตไมโครโค้ดได้รับการเผยแพร่สำหรับชิปที่ใช้สถาปัตยกรรม Kaby Lake และ Coffee Lake รวมถึง Skylake - แพลตฟอร์มที่ใช้ซึ่งไม่ได้รับผลกระทบจากการอัปเดตครั้งก่อน เรากำลังพูดถึงโปรเซสเซอร์รุ่นที่ 6, 7 และ 8 อินเทลคอร์ i รวมถึงตระกูล Core X, Xeon Scalable และ Xeon D ล่าสุด

ไมโครโค้ดใหม่จะพร้อมใช้งานในกรณีส่วนใหญ่ผ่านการเปิดตัวเฟิร์มแวร์ใหม่โดย OEM สำหรับเมนบอร์ดและแล็ปท็อป Intel ยังคงสนับสนุนให้ผู้คนอัปเดตระบบของตนอย่างต่อเนื่อง รุ่นปัจจุบันและยังได้เผยแพร่เอกสารที่อธิบายสถานะของการแก้ไขไมโครโค้ดที่คล้ายกันสำหรับผลิตภัณฑ์อื่นๆ รวมถึงชิปรุ่นก่อนๆ ที่เริ่มต้นด้วย 45 nm Core 2 สำหรับชิปเหล่านี้บางตัว กำลังมีการวางแผนแพตช์สำหรับชิปอื่นๆ ที่อยู่ในนั้น ดำเนินการทดสอบล่วงหน้าสำหรับคนอื่นๆ - มีอยู่แล้วในรูปแบบเวอร์ชันเบต้า โดยปกติแล้ว ยิ่งสถาปัตยกรรมเก่ามากเท่าไรก็ยิ่งได้รับเฟิร์มแวร์ป้องกันสเปกตรัมในภายหลังเท่านั้น อย่างไรก็ตาม การอัปเดตไมโครโค้ดสำหรับสถาปัตยกรรม Sandy Bridge, Ivy Bridge, Haswell และ Broadwell ในปัจจุบันไม่มากก็น้อยอยู่ในการทดสอบเบต้าแล้ว นอกจากนี้ ชิป Atom จำนวนหนึ่งและแม้แต่ตัวเร่งความเร็ว Xeon Phi ก็ได้รับแพตช์แล้ว

Intel เล่าว่ามีวิธีอื่นในการต่อสู้กับช่องโหว่ที่ค้นพบในหน่วยการทำนายสาขาในโปรเซสเซอร์สมัยใหม่ ตัวอย่างเช่น Retpoline ซึ่งพัฒนาโดย Google เทียบกับ Spectre CVE-2017-5715 (การฉีดเป้าหมายสาขาหรือการฉีดเป้าหมายเข้าไปในสาขา) สำหรับผู้ที่สนใจข้อมูลเพิ่มเติมเกี่ยวกับ Retpoline และวิธีการทำงาน บริษัทได้เผยแพร่รายงานทางเทคนิคพิเศษ

การอัปเดตไมโครโค้ดป้องกัน Specter ของ Intel จะเริ่มเปิดตัวในรูปแบบของเฟิร์มแวร์ BIOS ใหม่สำหรับมาเธอร์บอร์ดต่างๆ ในอีกไม่กี่วันและสัปดาห์ข้างหน้า ฉันสงสัยว่าพวกเขาจะมีผลกระทบเพิ่มเติมต่อการเสื่อมประสิทธิภาพของระบบปลายทางหรือไม่?