next up previous contents index
Next: ตัวอย่างวิธีการคูณ Up: การคูณ Previous: ศัพท์ภาษาคณิตศาสตร์ที่เราไม่ค่อยคุ้นเคย   Contents   Index

ฮาร์ดแวร์ของการคูณแบบลำดับ

ในการที่จะจำลองวิธีการคูณที่เรียนมาในระดับประถมศึกษา สร้างฮาร์ดแวร์ในการคูณสามารถแสดงได้ในรูป 3.5 ซึ่งมีการวางระบบฮาร์ดแวร์เหมือนกับการคำนวณด้วยมือ

สมมุติให้รีจีสเตอร์ที่เก็บตัวคูณ (Multiplier) มีขนาด 32 บิต และผลลัพธ์มีขนาด 64 บิต โดยมีค่าเริ่มต้นเท่ากับ 0 ในการคูณจะเป็นการเลื่อนตัวตั้งไปทางซ้าย ทีละบิตในแต่ละขั้นตอนที่ทำงานคำนวณ เพื่อให้ได้ผลลัพธ์จากการทำงานทั้งสิ้น 32 ขั้นตอน เริ่มจากการนำเอา Multiplicand มาใส่ไว้ใน 32 บิต ทางขวาของรีจีสเตอร์ และค่า 0 ใน 32 บิตทางด้านซ้าย จากนั้นทำการเลื่อนบิตมาทางซ้ายทีละบิต เพื่อนำผลบวกมารวมในผลลัพธ์

Figure 3.5: ฮาร์ดแวร์ของการคูณแบบลำดับแบบแรก
\includegraphics[width=4.5in]{fig/Chapter_3/Figure_3.5.eps}

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

Figure 3.6: วิธีการคูณโดยใช้ฮาร์ดแวร์ในรูป 3.5
\includegraphics[width=4.3in]{fig/Chapter_3/Figure_3.6.eps}

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

จากวิธีการที่นำเสนอ เราสามารถปรับปรุงให้เหลือเพียงหนึ่งวงรอบสัญญาณนาฬิกา ในหนึ่งรอบการคำนวณ โดยการทำการคำนวณแบบขนานในการทำงาน 1. การเลื่อนตัวคูณ และตัวตั้ง 2. 3. การบวกตัวตั้งเมื่อบิตของตัวคูณเป็นหนึ่ง โดยฮาร์ดแวร์ที่ทำการคำนวณดังกล่าวแสดงในรูป 3.7 การปรับปรุงของฮาร์ดแวร์เพิ่มเติมโดยการลดขนาดของ ALU จาก 64 บิต เหลือ 32 บิต

บางครั้งถ้าเป็นการคูณที่ตัวคูณเป็น $2^n$ เราสามารถใช้การ Shift Left ได้

Figure 3.7: ฮาร์ดแวร์ของการคูณแบบลำดับที่ทำการปรับปรุง
\includegraphics[width=4.5in]{fig/Chapter_3/Figure_3.7.eps}



Vara Varavithya 2006-11-06