جدول محتوا
واحد ALU یا واحد محاسبه و منطق در پردازندهها از قبیل پردازنده های سرور چیست و چه کاربردی دارد؟ ALU که مخفف عبارت Arithmetic Logic Unit است، یک مدار دیجیتالی پیچیده در پردازندههای مرکزی (CPU) میباشد. این واحد مسئول انجام عملیات ریاضی (مانند جمع، ضرب و …) و عملیات منطقی روی دادهها است. در واقع ALU آخرین بخشی از CPU است که محاسبات و پردازشها را روی دادهها انجام میدهد. این واحد با استفاده از کدها و عملوندها، نوع عملیات لازم روی دادهها را تعیین و اجرا میکند. برای آشنایی بیشتر با این واحد محاسباتی با ما همراه باشد.
واحد محاسبه و منطق، ALU چیست؟
واحد محاسبه و منطق به انگلیسی Arithmetic Logic Unit یا (ALU)، یک مدار دیجیتال ترکیبی است که برای انجام عملیات حسابی و منطقی روی اعداد دودویی صحیح طراحی شده است. ALU یکی از اجزای اساسی بسیاری از مدارهای محاسباتی، از جمله واحد پردازش مرکزی CPU و واحد پردازنده گرافیکی ( GPU ) محسوب میشود.
ورودیهای ALU شامل دادههایی هستند که قرار است عملیات روی آنها انجام شود و به این دادهها عملوند ((Operand گفته میشود. خروجی ALU نتیجه این عملیات است. در بسیاری از طراحیها، ALU همچنین دارای ورودیها و خروجیهای وضعیت است که اطلاعاتی درباره وضعیت قبلی یا کنونی را بین ALU و ثباتهای وضعیت خارجی مبادله میکنند. پس از انجام پردازش توسط واحد ALU، اطلاعات در حافظه RAM بارگذاری میشوند. در برخی از پردازندهها ممکن است بیش از یک واحد ALU وجود داشته باشد، بنابراین هر CPU لزوماً فقط یک واحد ALU ندارد.
واحد ALU دسترسی مستقیم به سختافزارهایی مانند کنترلر پردازنده، حافظه RAM، و دستگاههای ورودی/خروجی دارد. دادههای ورودی و خروجی از طریق مسیرهایی به نام Bus منتقل میشوند. دادههای ورودی شامل Instruction Word هستند که خود شامل Operation Code مخفف (Op code)، یک یا چند عملوند، و گاهی همراه با یک Format code میباشد.
Op code به واحد ALU میگوید که کدام عملیات را بر روی دادهها انجام دهد یا چه عملوندهایی را برای محاسبات به کار ببرد. بهعنوان مثال ممکن است دو عملوند با یکدیگر ترکیب شوند یا به طور منطقی با هم مقایسه شوند. Format code نیز ممکن است با Op code ترکیب شود و به ALU بگوید که این دستورالعمل Floating-Point یا Fixed-Point است. خروجی شامل نتیجهای است که در Register به نام Accumulator ذخیره میشود.
Register یا رجیستر (ثبات) در پردازنده چیست؟
بخش ثبتکننده، یک مجموعه کوچک از مکانهایی است که قادر به ذخیره دادهها هستند. این بخش از پردازنده ترکیبی از دروازههای منطقی است که هر کدام قادر به ذخیره یک بیت اطلاعات هستند. هر ثبتکننده دارای دو ورودی (نوشتن و ورودی) و یک خروجی است. ورودی نوشتن برای تغییر دادههای ذخیره شده استفاده میشود. وقتی که ورودی نوشتن غیرفعال است، خروجی ثابت خواهد ماند.
پردازنده دارای یک ثبتکننده برای ذخیره دادههای خروجی است که قبل از ارسال به حافظه اصلی (RAM)، این دادهها به عنوان داده میانی عمل میکنند. ارتباط این دادهها با سایر ثبتکنندهها که توسط گذرگاه (Bus) به پردازنده متصل هستند، برقرار میشود. یک ثبتکننده میتواند دستورالعملها، دادههای خروجی، آدرسهای ذخیرهسازی یا هر نوع دادهای را ذخیره کند.
در پردازندههای با معماری 64 بیتی، Registerها دارای ظرفیت 64 بیت هستند و در پردازندههای با معماری 32 بیتی، Registerها دارای ظرفیت 32 بیت هستند. این Registerها یا ثبتکنندهها به عنوان سریعترین حافظههای یک کامپیوتر شناخته میشوند.
تعریف ALU پردازنده
واحد ALU در پردازندهها بهگونهای طراحی شده است که عملیات محاسباتی را روی دادههای منطقی از نوع اعداد صحیح (Integer) انجام دهد. این واحد بهطور خاص مسئولیت انجام عملیات جمع و تفریق را در پردازنده بر عهده دارد. علاوه بر این، ALU میتواند عملیات ضرب بین دو عدد صحیح را نیز بهسادگی انجام دهد.
عملیات تقسیم در ALU تحت شرایط خاصی انجام میشود و اغلب در پردازندهها این عملیات توسط واحد محاسباتی اعشاری (Floating Point Unit یا FPU) صورت میگیرد. یکی از کاربردهای مهم ALU در پردازنده، انجام محاسبات گرافیکی است.
وظایف ALU پردازنده
وظیفه واحد ALU همانطور که گفته شد، اجرای عملیاتهای حسابی و منطقی است. این واحد در پردازنده عملیات محاسباتی را روی اعداد انجام میدهد و بخشهای منطقی محاسبه را بررسی میکند و سپس نتایج را به پردازنده اصلی ارائه میدهد. عملکرد واحد ALU ترکیبی است، به این معنا که خروجی آن کاملاً به مقادیر ورودی اولیه وابسته است.
در واحد ALU بر اساس پهنای بیتی اختصاصیافته در ساختار پردازنده، امکان انجام عملیاتهای با توان مختلف وجود دارد. بهعنوان مثال یک ALU با گذرگاه 4 بیتی میتواند حداکثر 16 عملیات مختلف را پشتیبانی کند. خروجیهای واحد ALU شامل موارد زیر هستند:
- رقم نقلی: این ارقام معمولاً در عملیاتهای جمع به وجود میآیند.
- رقم قرضی: این ارقام معمولاً در عملیات تفریق رخ میدهند.
- بیت سرریز: بیت سرریز یا Overflow که معمولاً در نتیجه عملیات شیفت باینری ایجاد میشود.
واحد ALU بر اساس استانداردها میتواند عملیاتهای مختلفی را انجام دهد، از جمله:
- اعمال حسابی مانند جمع، جمع با رقم نقلی، تفریق، تفریق با رقم قرضی، محاسبه مکمل دوم یک عملوند، افزایش و کاهش یک واحدی عملوندها
- اعمال منطقی بین بیتها مانند AND، OR و XOR
- اعمال شیفت بیتی، شامل شیفت چپ یا راست منطقی، شیفت حسابی و چرخش
واحد ALU دسترسی مستقیم به سختافزارهای سیستمی دارد، مانند کنترلر پردازنده(Processor Controller)، حافظه RAM، و دستگاههای ورودی و خروجی. این واحد تنها بخشی از پردازنده است که کار واقعی و محاسباتی در آن انجام میشود. در پردازندههای سری اینتل و AMD، واحد ALU وجود دارد، با این تفاوت که در پردازندههای سری اینتل پیچیدگی بیشتری دارد. همچنین، برخی پردازندهها ممکن است چندین واحد ALU داشته باشند.
خروجیهای واحد ALU ممکن است بسته به نوع محاسبه و نوع پردازنده در بخشهای مختلف مورد استفاده قرار گیرند و عموماً روی RAM ذخیره میشوند. واحد ALU خود از دو بخش داخلی تشکیل شده است:
- واحد محاسبه (AU): مسئول انجام محاسبات ریاضی است.
- واحد منطق (LU): مسئول انجام عملیات منطقی روی دادهها است.
نتیجه گیری
با توجه به اطلاعات ارائه شده، میتوان نتیجه گرفت که بخش ثبتکننده در پردازندهها نقش مهمی در ذخیرهسازی دادهها ایفا میکند. این ثبتکنندهها توانایی ذخیره دادههای میانی را دارند که پس از انجام پردازشهای لازم، اطلاعات به حافظه اصلی (RAM) ارسال میشوند. از آنجا که ظرفیت آنها به تعداد بیتهای پردازنده مربوط است، پردازندههای با معماری 64 بیتی از Registerهایی با ظرفیت 64 بیت و پردازندههای با معماری 32 بیتی از Registerهایی با ظرفیت 32 بیت استفاده میکنند. این ثبتکنندهها از طریق Bus با سایر بخشهای پردازنده متصل شده و در انتقال دادهها نقش اساسی دارند، همچنین قابلیت ذخیره انواع مختلف دادهها از جمله دستورالعملها، آدرسها و دادههای خروجی را دارند.