ในขณะที่ซีพียูในปัจจุบันทั้งหมดดูเหมือนจะใช้วิธีการวนซ้ำตามที่aterrel แนะนำแต่ก็มีงานบางอย่างที่ทำในวิธีการที่ไม่ทำซ้ำ ส่วนจุดที่มีความแม่นยำตัวแปรและรูตสแควร์พูดถึงการดำเนินการที่ไม่ซ้ำของการแบ่งจุดลอยตัวและสแควร์รูทในFPGAโดยใช้ตารางการค้นหาและการขยายตัวเทย์เลอร์
ฉันสงสัยว่าเทคนิคแบบเดียวกันอาจทำให้การดำเนินการเหล่านี้ลดลงเป็นรอบเดียว (ปริมาณงานหากไม่เกิดความล่าช้า) แต่คุณมีแนวโน้มที่จะต้องใช้ตารางการค้นหาขนาดใหญ่และทำให้พื้นที่อสังหาริมทรัพย์ขนาดใหญ่ของซิลิคอนทำไม่ได้ .
ทำไมถึงเป็นไปไม่ได้?
ในการออกแบบ CPU นั้นมีข้อเสียมากมายที่ต้องทำ ฟังก์ชั่นความซับซ้อน (จำนวนทรานซิสเตอร์) ความเร็วและการใช้พลังงานล้วน แต่มีความสัมพันธ์กันและการตัดสินใจในระหว่างการออกแบบสามารถส่งผลกระทบอย่างมากต่อประสิทธิภาพการทำงาน
โปรเซสเซอร์ที่ทันสมัยอาจจะมีหลักหน่วยจุดลอยซึ่งอุทิศทรานซิสเตอร์เพียงพอในซิลิกอนที่จะดำเนินการส่วนจุดลอยในรอบเดียวแต่มันจะไม่น่าจะมีการใช้งานที่มีประสิทธิภาพของทรานซิสเตอร์เหล่านั้น
จุดลอยตัวทวีคูณทำให้การเปลี่ยนแปลงนี้เกิดขึ้นซ้ำแล้วซ้ำอีกไม่ใช่ทศวรรษที่ผ่านมา ทุกวันนี้รอบเดียวทวีคูณและทวีคูณเป็นเรื่องธรรมดาแม้ในโปรเซสเซอร์มือถือ
ก่อนที่มันจะกลายเป็นการใช้งบประมาณของทรานซิสเตอร์อย่างมีประสิทธิภาพทวีคูณเช่นเดียวกับการหารมักจะทำโดยวิธีการวนซ้ำ กลับมาแล้วประมวลผล DSP ทุ่มเทอาจอุทิศส่วนใหญ่ของซิลิกอนของพวกเขาให้เป็นหนึ่งเดียวได้อย่างรวดเร็วสะสมคูณ (MAC)หน่วย ซีพียู Core2duo มีความหน่วงแฝงทวีคูณเท่ากับ 3 (ค่าออกมาจากไพพ์ไลน์ 3 รอบหลังจากเข้าไป), แต่สามารถมี 3 ทวีคูณในการบินพร้อมกัน, ทำให้เกิดปริมาณงานที่รอบเดียว, ในขณะที่หน่วย SSE2 สามารถ เพิ่ม FP หลายตัวในรอบเดียว
แทนที่จะทุ่มเทพื้นที่ขนาดใหญ่ของซิลิกอนเป็นหน่วยแบ่งวงจรเดี่ยวซีพียูสมัยใหม่มีหลายหน่วยซึ่งแต่ละหน่วยสามารถทำงานแบบขนาน แต่เหมาะสำหรับสถานการณ์เฉพาะของตนเอง ในความเป็นจริงเมื่อคุณคำนึงถึงคำแนะนำSIMDเช่นSSEหรือกราฟิกรวม CPU ของSandy Bridgeหรือ CPU ในภายหลังอาจมีหน่วยแบ่งทศนิยมจำนวนมากบน CPU ของคุณ
หากการแบ่งจุดลอยตัวทั่วไปมีความสำคัญต่อซีพียูสมัยใหม่มันอาจสมเหตุสมผลที่จะอุทิศพื้นที่ซิลิคอนให้เพียงพอสำหรับรอบเดียวอย่างไรก็ตามผู้ผลิตชิปส่วนใหญ่ตัดสินใจอย่างชัดเจนว่าพวกเขาสามารถใช้ประโยชน์จากซิลิคอนนั้นได้ดีขึ้นโดยใช้ประตูเหล่านั้นสำหรับสิ่งอื่น ๆ . ดังนั้นการทำงานหนึ่งครั้งจะช้าลง แต่โดยรวม (สำหรับสถานการณ์การใช้งานทั่วไป) CPU นั้นเร็วกว่าและ / หรือสิ้นเปลืองพลังงานน้อยกว่า