سخت‌افزار چگونه جمع و تفریق انجام می‌دهد و سرریز را تشخیص می‌دهد

سخت‌افزار چگونه جمع و تفریق انجام می‌دهد و سرریز را تشخیص می‌دهد

جمع باینریتشخیص سرریزمدار جمع‌کننده

~3 min read · Updated Sep 6, 2026

چرا محاسبات ریاضی به طراحی سخت‌افزاری دقیق نیاز دارند

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

یک مدار برای هم جمع و هم تفریق

به‌جای ساخت دو مدار جداگانه، سخت‌افزار یک مدار Adder واحد را برای هر دو عملیات استفاده مجدد می‌کند. این کار به‌دلیل نحوه نمایش اعداد در Two's Complement امکان‌پذیر است، که پیش‌تر در این مجموعه بحث شد: تفریق یک عدد معادل جمع کردن نقیض آن است.

a − b = a + (−b)

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

سرریز چیست و چرا اهمیت دارد

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

قوانین سرریز برای اعداد علامت‌دار و بدون علامت متفاوت‌اند

اینکه یک نتیجه خاص سرریز محسوب شود یا نه، به نحوه تفسیر اعداد بستگی دارد.

  • برای Unsigned Numbers، سرریز زمانی رخ می‌دهد که جمع نتیجه‌ای تولید کند که به بیت‌های بیشتری از آنچه موجود است نیاز دارد — از نظر مفهومی، یک carry خارج از با اهمیت‌ترین بیت.
  • برای Signed Numbers، سرریز به‌طور خاص زمانی رخ می‌دهد که جمع دو عدد مثبت نتیجه‌ای منفی تولید کند، یا وقتی جمع دو عدد منفی نتیجه‌ای مثبت تولید کند — نشانه‌ای از اینکه نتیجه واقعی از نظر بزرگی برای جا شدن درست، بیش از حد بزرگ بوده است.

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

RISC-V چگونه سرریز را مدیریت می‌کند

RISC-V در اینجا یک رویکرد طراحی عمدی اتخاذ می‌کند: دستورات محاسباتی معمولی مانند add و sub به‌طور خودکار در سرریز علامت‌دار trap نمی‌کنند یا exception بلند نمی‌کنند. در عوض، تشخیص سرریز، در صورت نیاز، به‌طور صریح توسط نرم‌افزار با استفاده از دستورات مقایسه اضافی مدیریت می‌شود، که سخت‌افزار محاسباتی هسته را ساده نگه می‌دارد و با اصل طراحی پیشین یعنی سریع کردن حالت رایج و واگذاری شرایط نادرتر و پیچیده‌تر به نرم‌افزار سازگار است.

چرا این تمایز در عمل اهمیت دارد

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

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