سخت‌افزار چگونه اعداد را ضرب می‌کند: از منطق ساده تا مدارهای واقعی

ضرب بسیار سخت‌افزارطلب‌تر از جمع است، چون اساساً شامل جمع تکراری و شیفت است. این مقاله الگوریتم مفهومی که سخت‌افزار برای ضرب اعداد باینری استفاده می‌کند را مرور می‌کند، توضیح می‌دهد چرا نتیجه به دو برابر عرض بیتی ورودی‌ها نیاز دارد، و نحوه تفاوت ضرب علامت‌دار با حالت بدون‌علامت را پوشش می‌دهد.

ضرب باینریسخت‌افزار ضرب‌کنندهضرب علامت‌دار

~3 min read · Updated Sep 6, 2026

چرا ضرب گران‌تر از جمع است

جمع دو عدد را در یک عبور واحد از مدار جمع‌کننده ترکیب می‌کند. ضرب اساساً متفاوت است: از نظر ریاضی، ضرب دو عدد معادل انجام یک سری جمع و شیفت بیتی است، که یعنی سخت‌افزار ضرب باید یا عملیات‌های ساده‌تر را چندین بار تکرار کند یا از مدارهای پیچیده‌تری برای انجام کار در گام‌های کمتر استفاده کند.

الگوریتم پایه ضرب

الگوریتم مفهومی که سخت‌افزار دنبال می‌کند، همان فرآیندی است که برای ضرب طولانی اعشاری آموزش داده می‌شود، اما با استفاده از ارقام باینری به‌جای اعشاری.

  • هر بیت از Multiplier را یکی‌یکی بررسی کن، شروع از کم‌ارزش‌ترین بیت.
  • اگر آن بیت ۱ باشد، یک کپی شیفت‌داده‌شده از Multiplicand را به یک مجموع در حال اجرا به نام Product اضافه کن.
  • اگر آن بیت ۰ باشد، جمعی برای آن گام نیاز نیست، اما multiplicand همچنان به چپ شیفت داده می‌شود برای آماده‌سازی برای بیت بعدی.
  • این فرآیند را برای هر بیت از multiplier تکرار کن، و نتیجه را در product جمع کن.

یک تصویرسازی ساده‌شده با استفاده از مقادیر ۴ بیتی کوچک:

Multiplicand: 0010 (2)
Multiplier:   0011 (3)

گام ۱ (بیت ۰ = ۱): Product += 0010
گام ۲ (بیت ۱ = ۱): Product += 0010 شیفت‌داده‌شده به چپ به‌اندازه ۱ (0100)
نتیجه: 0010 + 0100 = 0110 (6)

چرا نتیجه به دو برابر عرض بیتی نیاز دارد

ضرب دو عدد n بیتی می‌تواند نتیجه‌ای تولید کند که برای نمایش بدون از دست دادن اطلاعات، تا 2n بیت نیاز دارد. برای مثال، ضرب دو مقدار ۳۲ بیتی می‌تواند به یک نتیجه کامل ۶۴ بیتی نیاز داشته باشد. به همین دلیل، پردازنده‌ها یا یک رجیستر نتیجه گسترده‌تر برای ضرب تولید می‌کنند یا دستورات جداگانه‌ای برای بازیابی نیمه‌های بالایی و پایینی نتیجه ضرب به‌طور جداگانه فراهم می‌کنند.

ضرب علامت‌دار

هنگام ضرب Signed Numbers نمایش‌داده‌شده در مکمل دو، علامت نتیجه از قوانین معمول ریاضی پیروی می‌کند: ضرب دو مقدار با علامت یکسان نتیجه‌ای مثبت تولید می‌کند، در حالی که ضرب مقادیر با علامت‌های متفاوت نتیجه‌ای منفی تولید می‌کند. سخت‌افزار این را به‌درستی با کار مستقیم با نمایش مکمل دو در سراسر فرآیند ضرب مدیریت می‌کند، بدون نیاز به یک مدار کاملاً جداگانه برای مقادیر علامت‌دار.

چرا این موضوع برای کارایی نرم‌افزار اهمیت دارد

از آنجا که ضرب به گام‌های سخت‌افزاری بیشتری نسبت به جمع نیاز دارد، معمولاً روی بیشتر پردازنده‌ها عملیاتی کندتر است. این بخشی از دلیلی است که چرا کامپایلرها بهینه‌سازی‌هایی مانند جایگزینی ضرب در توان دو با یک شیفت بیتی ساده اعمال می‌کنند، و چرا کد حساس به کارایی گاهی محاسبات را طوری ساختاردهی می‌کند که تعداد عملیات‌های ضرب مورد نیاز را به حداقل برساند.

Written & researched by Dr. Shahin Siami

Related Articles

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

پس از پوشش هر چیزی از موازی‌سازی سطح رشته تا محاسبات در مقیاس انبار، ارزش دارد تصورات غلط پایداری درباره سیستم‌های موازی که حتی مهندسان باتجربه هم گاهی به آن‌ها دارند را اصلاح کنیم. این مقاله به مغالطات رایج درباره مقیاس‌پذیری و سخت‌افزار موازی می‌پردازد، سپس فصل پردازش موازی را با پیوند دادن مسیر کامل از یک دستور منفرد تا یک ساختمان پر از ماشین‌های همکار به پایان می‌رساند.

Continue

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

Continue

بنچمارک کردن چندپردازنده‌ها و مدل‌سازی کارایی موازی

سنجش کارایی یک سیستم موازی نیازمند ابزارها و سنجه‌های متفاوتی نسبت به سنجش یک پردازنده تک‌هسته‌ای است. این مقاله بنچمارک‌های تخصصی مورد استفاده برای ارزیابی سیستم‌های چندپردازنده را پوشش می‌دهد، توضیح می‌دهد چگونه رفتار مقیاس‌پذیری را با افزودن پردازنده‌های بیشتر مدل‌سازی کنیم، و قانون آمدال را در زمینه سنجش کارایی دنیای واقعی بازبینی می‌کند.

Continue

شبکه‌سازی کلاستر: ارتباط با دنیای بیرون

یک کلاستر از ماشین‌ها فقط زمانی مفید است که بتواند به‌طور کارآمد هم داخلی و هم با دنیای بیرون ارتباط برقرار کند. این مقاله لایه‌های شبکه‌سازی درگیر در ارتباط کلاستر، مبادلات بین تأخیر و پهنای باند در مقیاس، و اینکه کلاسترها چگونه به شبکه‌های خارجی و کاربران متصل می‌شوند را پوشش می‌دهد.

Continue

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

فراتر از یک تراشه واحد، موازی‌سازی به کل ساختمان‌های پر از کامپیوترهای مستقلی که با هم کار می‌کنند گسترش می‌یابد. این مقاله گذار از چندپردازنده‌سازی حافظه مشترک به کلاسترهایی از ماشین‌های جداگانه را توضیح می‌دهد، مفهوم محاسبات در مقیاس انبار را معرفی می‌کند، و توپولوژی‌های شبکه که این ماشین‌های مستقل را به‌طور کارآمد متصل می‌کنند را پوشش می‌دهد.

Continue

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

یک GPU ایده SIMD که پیش‌تر در این مجموعه پوشش داده شد را به یک مقیاس افراطی می‌برد، و هزاران رشته سبک را به‌طور هم‌زمان اجرا می‌کند تا حجم عظیمی از داده مستقل را پردازش کند. این مقاله توضیح می‌دهد چرا GPU ها از نظر معماری این‌قدر با CPU متفاوت‌اند، مدل اجرای رشته آن‌ها چگونه کار می‌کند، و چه نوع بارهای کاری بیشترین بهره را از این طراحی می‌برند.

Continue