ฉันจะพยายามล้าง "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 เป็นการ์ดที่เข้าใจผิดได้ว่าการ์ดทุกใบจะเลียนแบบ