3 คะแนน โดย GN⁺ 2025-03-04 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ในปี 1993 Intel ได้เปิดตัวโปรเซสเซอร์ Pentium ประสิทธิภาพสูง
    • ระหว่างการวิเคราะห์วงจรของ Pentium ได้ค้นพบวงจรซับซ้อนสำหรับการคูณด้วย 3
    • วงจรนี้เป็นส่วนหนึ่งของวงจรตัวคูณทศนิยมลอยตัวของ Pentium โดยทำการคูณเลข 64 บิตบนพื้นฐานเลขฐานแปด
  • ความจำเป็นของการคูณบนพื้นฐานเลขฐานแปด
    • การคูณแบบเลขฐานสองนั้นเรียบง่ายในเชิงแนวคิด แต่ช้า
    • Pentium ใช้การคูณบนพื้นฐานเลขฐานแปดเพื่อลดวงจรและเพิ่มความเร็ว
    • การคูณแบบเลขฐานแปดมีความซับซ้อน เพราะต้องคูณกับตัวเลขตั้งแต่ 0 ถึง 7
  • อัลกอริทึมของ Booth และวงจร ×3
    • ใช้อัลกอริทึมของ Booth เพื่อเพิ่มประสิทธิภาพการคูณ
    • วงจร ×3 ต้องถูกจัดการเป็นกรณีพิเศษในการคูณทศนิยมลอยตัว
    • วงจรนี้ต้องทำงานได้รวดเร็ว และใช้เทคนิคอย่าง carry lookahead เพื่อรีดประสิทธิภาพสูงสุด
  • Carry lookahead และตัวบวกแบบ parallel prefix
    • ตัวบวกแบบ carry lookahead คำนวณบิต carry ทั้งหมดแบบขนาน เพื่อให้การบวกทำได้รวดเร็ว
    • ใช้ตัวบวกแบบ parallel prefix เพื่อทำ carry lookahead เป็นชิ้นส่วนขนาด 8 บิต
    • ใช้อัลกอริทึม Kogge-Stone เพื่อลดดีเลย์และจัดโครงสร้างวงจรอย่างมีประสิทธิภาพ
  • ตัวบวกแบบ carry select
    • ตัวบวกแบบ carry select ทำการบวกสองชุดพร้อมกัน และเมื่อค่า carry ถูกกำหนดก็ให้ผลลัพธ์ได้ทันที
    • Pentium ใช้ตัวบวกแบบ carry select สำหรับแต่ละชิ้นส่วน 8 บิตในวงจร ×3
  • ไดรเวอร์เอาต์พุตแบบ BiCMOS
    • เอาต์พุตของวงจร ×3 ต้องการกระแสสูง และใช้กระบวนการ BiCMOS เพื่อลดการหน่วงของสัญญาณ
    • BiCMOS ผสาน CMOS กับทรานซิสเตอร์แบบไบโพลาร์เข้าด้วยกัน เพื่อให้ได้ประสิทธิภาพสูง
  • สรุป
    • วงจร ×3 ของ Pentium เป็นการออกแบบที่ซับซ้อน และใช้ทรานซิสเตอร์มากกว่าไมโครโปรเซสเซอร์ในอดีต
    • นี่เป็นตัวอย่างที่แสดงให้เห็นว่าความซับซ้อนของโปรเซสเซอร์เพิ่มขึ้นมากเพียงใด

1 ความคิดเห็น

 
GN⁺ 2025-03-04
ความคิดเห็นบน Hacker News
  • ในการจำลองคอมพิวเตอร์แบบตรีนัย มีวิธีแปลงการหารด้วยกำลังของ 3 ให้เป็นการเลื่อนบิตและการบวก

    • สามารถเขียน 1/3 ได้เป็น 1/2 - 1/2(1/3)
    • ทำซ้ำแบบอนันต์ได้เพื่อเขียน 1/3 = -(-1/2)^N
    • ทำได้กับคู่กำลังของ 2 และ 3 แบบใดก็ได้
    • จากสิ่งนี้ สามารถสร้างวงจรหารด้วยค่าคงที่ให้ทำงานในเวลาคงที่โดยใช้เพียงตัวบวกและตัวลบ
  • โปรเซสเซอร์ของเกมอาร์เคด Cinematronics มีแอคคิวมูเลเตอร์ 12 บิตสองตัว

    • คำสั่งคูณจะเลื่อนเป็นค่า 24 บิตแล้วบวกเนื้อหาของหน่วยความจำ
    • รันการคูณต่อเนื่อง 8 ครั้งเพื่อให้ได้ผลลัพธ์ 24 บิต
    • ใช้หลัก ๆ สำหรับการคูณเมทริกซ์ 2x2 เพื่อหมุนพิกัดของวัตถุในเกม
    • ในช่วงกลางทศวรรษ 1970 มีอัตราประมวลผลสูงสุด 5MIPS โดยใช้ชิ้นส่วนซีรีส์ 7400
  • Peter Kogge ได้รับปริญญาเอกจาก Stanford และเป็น IBM Fellow ผู้คิดค้น CPU แบบมัลติคอร์

  • การคูณด้วย 3 ในการคำนวณแอดเดรสเป็นงานที่พบได้บ่อย

    • ทำได้ภายในหนึ่งไซเคิลโดยใช้คำสั่ง LEA
    • จึงเป็นการใช้ทรานซิสเตอร์บัดเจ็ตที่คุ้มค่า
  • ในตัวคูณมีวิธีคูณด้วย 7 โดยคูณด้วย 8 แล้วลบ 1

    • คล้ายกับวงจร carry lookahead
    • เขียนได้เป็น 7 = 8-1, 6 = 8-2, 5 = 8-3, 4 = 8-4
  • ตัวคูณ ×3 มีทรานซิสเตอร์ประมาณ 9,000 ตัว ซึ่งมากกว่าไมโครโปรเซสเซอร์ Z80 ในปี 1976

    • สิ่งนี้แสดงให้เห็นการเติบโตอย่างมหาศาลของความซับซ้อนของโปรเซสเซอร์
    • ปัจจุบันเราไปถึงขีดจำกัดของเทคโนโลยีสารกึ่งตัวนำซิลิคอนแล้ว และถึงเวลาที่ต้องทำงานให้ฉลาดขึ้น
  • ตัวคูณแบบ radix-8 Booth ต้องใช้วงจร x3

    • นี่คือการแลกเปลี่ยนพื้นที่/ประสิทธิภาพเพื่อดัน fmax ให้สูงขึ้น
  • 8086: 29,000

    • 386: 275,000
    • 486: 1.2 million
    • Pentium: 3.1 million
    • NSA เข้ามามีส่วนร่วมหลังปี 2000
  • ข้อเสียของการคูณแบบ radix-8 คือการคูณด้วยตัวเลขตั้งแต่ 0 ถึง 7 มีความซับซ้อน

    • การคูณด้วย 2 เท่ากับการเลื่อนบิตไปทางซ้าย 1 บิต
    • การคูณด้วย 4 เท่ากับการเลื่อนบิตไปทางซ้าย 2 บิต
    • การคูณด้วย 7 แก้ได้ด้วยการคูณด้วย 8 แล้วลบ 1
    • ×3 คำนวณได้จากผลรวมของ 2x และ 1x หรือผลต่างของ 4x และ 1x
    • ถ้าคำนวณ ×6 ได้ง่าย ก็สามารถเลื่อนค่านั้นไปทางขวาเพื่อให้ได้ ×3