CPU สื่อสารกับ GPU อย่างไรก่อนโหลดไดรเวอร์ [ซ้ำ]


24

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


คำตอบ:


34

"มีคำแนะนำพื้นฐานบ้างไหม ... " ใช่แล้ว GPU ทั้งหมดจะต้องใช้อินเทอร์เฟซที่เรียบง่ายอย่างใดอย่างหนึ่ง - พวกมันดั้งเดิมเกินไปที่จะเรียกว่า "ชุดคำสั่ง" - เฟิร์มแวร์แพลตฟอร์ม ("BIOS" หรือ "UEFI") และไดรเวอร์ที่มาพร้อมกับระบบปฏิบัติการ . ตัวเลือกปกติของ "ส่วนต่อแบบง่าย" ในปัจจุบันคือ "VGA" ("Video Graphics Array") ซึ่งเป็นส่วนต่อประสานระดับการลงทะเบียนที่กำหนดไว้สำหรับการ์ดวิดีโอของมาตรฐานนั้น (ตอนนี้อายุ 30 ปีขึ้นไป!)

ตัวอย่างเช่นหาก Device Manager บนระบบ Windows ระบุรหัสกราฟิกการ์ดเป็น "Microsoft Basic Video Adapter" ระบบปฏิบัติการไม่สามารถค้นหาไดรเวอร์เฉพาะสำหรับการ์ดและโหลดไดรเวอร์ที่เข้ากันได้กับ VGA แทน

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

มาตรฐาน VGA รองรับโหมดกราฟิกความละเอียดต่ำและโหมดข้อความเพียงเล็กน้อยเท่านั้นและไม่เกี่ยวข้องกับสิ่งที่ฉันเรียกว่า "โปรแกรมที่กำลังทำงาน" หรือแม้แต่ "คำแนะนำ" บน GPU โดยพื้นฐานแล้วเฟิร์มแวร์ระบบหรือ "ไดรเวอร์วิดีโอพื้นฐาน" เพียงแค่นำมันเข้าสู่โหมดที่ต้องการแล้วเขียนบิตเป็นบิตแมป บิตในบิตแมปตรงกับพิกเซลบนหน้าจอโดยตรง การคำนวณทางคณิตศาสตร์ใด ๆ ที่ต้องทำเพื่อวาดเส้นหรือเส้นโค้งจะทำใน CPU ซึ่งเป็นวิธีระดับต่ำและช้ามากเพื่อทำให้รายการปรากฏบนหน้าจอ แต่ก็เพียงพอสำหรับการแสดงจากและการโต้ตอบอย่างง่าย ๆ กับเฟิร์มแวร์สำหรับการติดตั้งระบบปฏิบัติการและหน้าจอเริ่มต้นกระบวนการบู๊ต ฯลฯ

Wikipedia: Video Graphics Array


1
สถานการณ์ทั้งหมดนั้นซับซ้อน การ์ด "VGA" ตัวแรกนั้นมีจำนวน จำกัด เป็นเวลานานที่ Windows NT ต้องการการสนับสนุน 800x600 แต่ใช่เพียง 16 สี มันดูแย่มาก! ดูบทความ Wikipedia ที่ฉันเชื่อมโยง
เจมี่ Hanrahan

9
Windows มีแนวโน้มที่จะใช้VESA BIOS Extentions (VBE)สำหรับอะแดปเตอร์พื้นฐาน VBE ได้รับการสนับสนุนอย่างกว้างขวางและรองรับสี 16-24 บิตและสูงถึง 1600x1200 พิกเซล
8bittree

3
มันจะไม่เป็นส่วนขยาย VESA BIOS เนื่องจาก Windows จะไม่เรียกใช้รหัส BIOS / UEFI สำหรับสิ่งใด ๆหลังจากการบู๊ตสเต็ปเร็วที่สุด
เจมี่ Hanrahan

2
ฉันเห็นคอมพิวเตอร์บางเครื่องรวมถึงแล็ปท็อปของฉันที่หน้าจอบูตของ Windows "จุดหมุน" เริ่มต้นที่ความละเอียดต่ำมาก (320x200 ฉันจะบอกว่าโหมด 256 สีของ VGA) แล้วเปลี่ยนเป็นความละเอียดสูงขึ้นอย่างรวดเร็ว
Artelius

1
แม้แต่ 800x600 ที่ 16 สีนั้นเกินความสามารถของ VGA VGA ขยายสูงสุดที่ 640x480 16 สี อย่างไรก็ตามผู้ผลิตชิปกราฟิกได้ก้าวข้ามสิ่งนี้และจะเพิ่มโหมด "SuperVGA" หรือที่รู้จักในชื่อ SVGA ซึ่งจะเพิ่มสีสันและความละเอียดในขณะที่ยังมีโหมดที่เป็นกรรมสิทธิ์ของตนเอง VESA เข้ามาหาวิธีมาตรฐานในการเข้าถึงโหมดที่เป็นกรรมสิทธิ์เหล่านี้ แต่นี่เป็นช่วงเวลาที่พีซีเริ่มถูกขับเคลื่อนด้วย GUI เป็นหลักและไดรเวอร์จึงเป็นตัวเลือกที่ดี มันก็เป็นเช่นกันเมื่อการเร่งความเร็ว 3D เริ่มที่จะถูกเพิ่มเข้ามาดังนั้นในขณะที่การ์ดส่วนใหญ่สามารถใช้งานร่วมกับ VESA ได้ไม่มีใครพูดถึงมัน
trlkly

16

ฉันจะพยายามล้าง "voodoo" ที่อยู่เบื้องหลังทั้งหมดนี้โดยอธิบายว่าฮาร์ดแวร์เก่าทำงานอย่างไร GPU สมัยใหม่ไม่ทำงานเช่นนี้ แต่เลียนแบบอินเทอร์เฟซของซีพียูกับกราฟิกการ์ด

TL; DR

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

รายละเอียด:

ในยุค 80 คอมพิวเตอร์ที่บ้านมีชิปกราฟิก "โง่" จริงๆที่มีพฤติกรรมบางอย่างคงที่ มันจะสมเหตุสมผลที่สุดถ้าฉันไปทางท่อถอยหลัง

จอภาพ CRT

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

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

DAC

ชิปกราฟิกมีตัวแปลง "ดิจิทัลเป็นอนาล็อก" ( อุปกรณ์ไฟฟ้าทั่วไป ) ค่าดิจิตอลที่แปลงแล้วนี้ (เช่น 2, 4 หรือ 8 บิต) เป็นแรงดันไฟฟ้าที่สามารถจ่ายให้กับจอภาพ

การสแกน

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

โหมดวิดีโอ

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

สามโหมด VGA ที่สำคัญคือ:

  • โหมดข้อความ 80 (ish) สี 80x25 (นี่คือหน้าจอการโหลด BIOS เป็นหลัก)
  • โหมดความละเอียดสูง 16 สี 640x480
  • โหมดสีคุณภาพสูง 256 สี 320x200

พิกเซลจิตรกรรม

อย่างคร่าวๆขึ้นอยู่กับระบบกราฟิกไปป์ไลน์มีหน้าตาดังนี้:

ตำแหน่งพิกเซลปัจจุบัน⇒ประมวลผลอักขระ / แบบอักษร / สไปรท์ / พิกเซล / ข้อมูลการกำหนดค่า values ​​ค่าพิกเซล⇒จานสี⇒ DAC

เป็นขั้นตอนที่ 2 ที่ต้องอ่านจากที่ตั้งของ RAM สองแห่ง ตัวอย่างเช่นใน Text Mode อักขระ 1 ไบต์จะถูกค้นหา สิ่งนี้จะจัดทำดัชนีลงในตารางแบบอักษร บิตจะถูกค้นหาจากตารางนี้เพื่อระบุว่าพิกเซลนั้นควรเป็นสีพื้นหน้าหรือสีพื้นหลัง ไบต์ที่สามจะถูกดึงเพื่อให้ได้สีพื้นหน้า / พื้นหลังนั้น โดยรวมแล้ว 3 ไบต์อ่านจาก RAM

แต่ "การไหล" นี้เป็นชุดของวงจรคงที่แบบเรียบง่ายที่เรียงกันอย่างดีการไหลที่เพิ่งอธิบาย

อินเตอร์เฟสบัสหน่วยความจำ

ซีพียูของ Intel มีสิ่งดั้งเดิมที่น่ารำคาญที่เรียกว่าบัส IO แต่มันไม่สำคัญดังนั้นฉันจะแกล้งทำเป็นว่าไม่มี

CPU เข้าถึง RAM โดยกระจายเสียงคำขอ READ หรือ WRITE และที่อยู่บนบัสหน่วยความจำ แม้ว่าส่วนใหญ่ของที่อยู่ที่ถูกต้องล้วงเอาการตอบสนองจากแรมช่วงบางอย่างจะถูกจัดการโดยอุปกรณ์แทน ตัวอย่างเช่นการอ่านจากที่อยู่บางแห่งอาจให้ข้อมูลเกี่ยวกับการกดแป้นคีย์บอร์ด

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

ด้วย VGA นั้นจริง ๆ แล้วมี RAM บนการ์ดกราฟิกเนื่องจากคุณสามารถกำหนดค่าการ์ดกราฟิกให้ประมวลผลข้อมูลล่วงหน้าก่อนที่จะถูกเขียนลงใน RAM กราฟิกเพื่อเพิ่มประสิทธิภาพในบางสถานการณ์

VESA

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.