موضوع مقاله: واحد محاسبه و منطق | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # واحد محاسبه و منطق | مقدمه: در بسیاری از طراحی‌ها، ای ال یو حاوی ورودی‌ها و خروجی‌های وضعیت یا هر دو نیز هست که به ترتیب اطلاعاتی را در رابطه با وضعیت قبلی یا وضعیت کنونی بین ای ال یو و ثبات‌های وضعیت خارجی منتقل می‌کنند. | ## بخش 1: واحد محاسبه و منطق | سیگنال‌ها ای ال یو دارای طیف‌های وسیعی از شبکه‌های ورودی و خروجی است که رساناهایی الکتریکی هستند و برای انتقال سیگنال‌های دیجیتال بین ای ال یو و مدار خارجی استفاده می‌شوند. هنگامی‌که ای ال یو در حال عملیات است، مدارهای خارجی سیگنال‌هایی را به ای ال یو اعمال می‌کنند و در پاسخ، ای ال یو از طریق خروجی‌هایش سیگنال‌هایی را تولید و به مدار خارجی منتقل می‌کند. هر گذرگاه داده شامل گروهی از سیگنال‌ها است که یک عدد صحیح باینری را منتقل می‌کنند. به‌طور معمول، پهنای گذرگاه (تعداد سیگنال‌های تشکیل دهندهٔ هر گذرگاه) A و B و Y مشابهند و با اندازهٔ کلمهٔ مدار خارجی (مثلاً سی پی یو احاطه گر یا سایر پردازش گرها) منطبق هستند. آپ‌کد ورودی آپ کد یک گذرگاه موازی است که کد انتخاب عملیات را که یک مقدار عددی است به ای ال یو منتقل می‌کند. این مقدار عددی، نوع عملیات حساب یا منطق دلخواه را که قرار است توسط ای ال یو اجرا شود، مشخص می‌کند. اندازهٔ آپ کد (یعنی پهنای گذرگاه آن) نشاندهندهٔ حداکثر تعداد عملیاتی است که توسط ای ال یو قابل انجام است. برای مثال یک آپ کد چهار بیتی می‌تواند تا شانزده عملیات مختلف را در ای ال یو مشخص کند. به‌طور کلی، آپ کد ای ال یو مشابه آپ کد زبان ماشین نیست، اگرچه در برخی موارد، ممکن است به‌طور مستقیم به شکل یک bit field در داخل یک آپ کد زبان ماشین کدگذاری شود. وضعیت خروجی‌ها خروجی‌های وضعیت، سیگنال‌های منفرد مختلفی هستند که حاوی اطلاعاتی پیرامون نتیجهٔ عملیات کنونی ای ال یو هستند. ای ال یوهای دارای کاربرد عمومی، به‌طور معمول حاوی سیگنال‌های وضعیت زیر هستند: رقم انتقالی خارجی (به انگلیسی: carry out): که رقم انتقالی حاصل از عملیات جمع، رقم قرض حاصل از عملیات تفریق، یا بیت سرریز از یک عملیات جابجایی را منتقل می‌کند. زوجیت/فردیت(به انگلیسی: parity): نشان می‌دهد که آیا تعداد زوج یا فردی از بیت‌ها در Y یک منطقی هستند. مجموعهٔ رجیسترهای بیت که خروجی‌های وضعیت را ذخیره می‌کنند معمولاً به شکل یک رجیستر چند بیتی منفرد در نظر گرفته می‌شوند که به آن رجیستر وضعیت یا رجیستر کد وضعیت گفته می‌شود. ورودی‌ها ورودی‌های وضعیت باعث می‌شوند تا اطلاعات اضافه برای ای ال یو در زمان انجام یک عملیات فراهم شود. به‌طور معمول، این ورودی یک بیت انتقالی ورودی منفرد است که همان بیت ذخیره شده از یک عملیات قبلی ای ال یو است. واحد محاسبه و منطق یک مدار منطقی ترکیبی است، به این معنی که خروجی‌های آن در پاسخ به تغییرات ورودی به‌طور غیر همزمان تغییر می‌کند. در عملیات نرمال، سیگنال‌های پایدار به تمام ورودی‌های ای ال یو اعمال می‌شود و هنگامی‌که زمان کافی یا همان زمان تاخیر انتشار (به انگلیسی: propagation delay) گذشته باشد تا سیگنال‌ها در مدار ای ال یو منتشر شوند، آنگاه نتیجهٔ عملیات ای ال یو در خروجی آن ظاهر می‌شود. مدار خارجی متصل به ای ال یو باعث می‌شود تا از پایداری سیگنال‌های ورودی ای ال یو در طی عملیات مطمئن شویم و همچنین زمان کافی به سیگنال‌ها می‌دهد تا قبل از دریافت نتیجهٔ ای ال یو، در مسیر منتشر شوند. به‌طور کلی، مدار خارجی با اعمال سیگنال‌ها به ورودی‌های ای ال یو، آن را کنترل می‌کند. به‌طور معمول، مدار خارجی از منطق ترتیبی برای کنترل عملیات ای ال یو استفاده می‌کند. سرعت و ریتم این مدار ترتیبی توسط یک سیگنال ساعت با فرکانس نسبتاً پایین تنظیم می‌شود تا زمان کافی برای تولید خروجی‌های ای ال یو در بدترین شرایط فراهم باشد. | ## بخش 2: واحد محاسبه و منطق | برای مثال یک سی پی یو با متصل کردن و مسیردهی عملوندها از منبع (که معمولاً رجیسترها هستند) به ورودی‌های عملوند ای ال یو یک عملیات جمع را در ای ال یو آغاز می‌کند و به‌طور همزمان، واحد کنترل یک مقدار مشخص را به ورودی آپ کد ای ال یو می‌دهد تا عمل جمع را انجام دهد. همچنین، به‌طور همزمان، سی پی یو، خروجی حاصل ای ال یو را به یک رجیستر مقصد که مقدار جمع را دریافت می‌کند، وصل و مسیردهی می‌کند. سیگنال‌های ورودی ای ال یو، که تا زمان ساعت بعدی پایدار نگه داشته می‌شوند، در تمام ای ال یو منتشر می‌شوند و به رجیستر مقصد می‌رسند، این در حالی است که سی پی یو منتظر ساعت بعدی است. با فرارسیدن ساعت بعدی، رجیستر مقصد نتیجهٔ ای ال یو را ذخیره می‌کند و از آنجاییکه عملیات ای ال یو کامل شده‌است، ورودی‌های ای ال یو ممکن است برای عملیات بعدی ای ال یو آماده شوند. توابع به‌طور معمول، تعدادی توابع منطقی اساسی و محاسباتی تک بیتی توسط ای ال یوها پشتیبانی می‌شوند. ای ال یوهای پایه ای و با کاربرد عمومی معمولاً از این عملیات پشتیبانی می‌کنند: عملیات حسابی جمع: A و B با هم جمع می‌شوند و حاصلجمع در Y و بیت انتقالی خروجی ظاهر می‌شود. جمع همراه با بیت انتقالی: A و B و بیت انتقالی ورودی با هم جمع می‌شوند و حاصل جمع در Y و بیت انتقالی خروجی ظاهر می‌شود. تفریق: B از A کم می‌شود (یا بالعکس) و تفاوت در Y و بیت انتقالی خروجی ظاهر می‌شود. در چنین مواردی، خروجی Y ممکن است توسط پردازنده نادیده گرفته شود، چون برای پردازنده فقط بیت‌های وضعیت (خصوصاً صفر و منفی) حاصل از عملیات اهمیت دارد. تفریق همراه با بیت قرضی: B از A همراه (یا بالعکس) با قرض (ورودی انتقالی) کم می‌شود و تفریق حاصل در Y همراه با خروجی انتقالی (خروجی قرض) نمایان می‌شود. این عمل به‌طور معمول برای تعیین پریتی عملوند یا مشخص کردن صفر یا منفی بودن عملوند یا وارد کردن عملوند به داخل یک رجیستر پردازنده استفاده می‌شود. ای ال یوهای معمولی فقط می‌توانند عملوند را به اندازهٔ موقعیت یک بیت جابجا کنند، درحالی‌که ای ال یوهای پیچیده با استفاده از جابجاگرهای بشکه ای می‌توانند در یک عملیات عملوند را به تعداد بیت‌های دلخواه جابجا کنند. در تمام عملیات جابجایی تک بیتی، بیت خارج شده از عملوند به شکل خروجی انتقالی نمایان می‌شود. شیفت محاسباتی: عملوند به شکل یک اینتیجر مکمل دو در نظر گرفته می‌شود؛ به این معنی که مهم‌ترین بیت همان بیت علاممت است و حفظ می‌شود. چرخش: عملوند به شکل یک بافر حلقوی از بیت‌ها در نظر گرفته می‌شود؛ بطوریکه کم ارزش‌ترین و با ارزش‌ترین بیت‌های آن به‌طور مؤثری در مجاورت هم هستند. چرخش از طریق بیت انتقالی: بیت انتقالی و عملوند مجموعاً به شکل یک بافر حلقوی از بیت‌ها در نظر گرفته می‌شوند. کاربردها محاسبهٔ چند دقتی در محاسبات جبری اینتیجر، محاسبهٔ دقیق چند مرحله ای، الگوریتمی است که بر روی آن دسته از اینتیجرها صورت می‌گیرد که بزرگتر از اندازهٔ کلمهٔ ای ال یو هستند. به این صورت که، این الگوریتم هر عملوند را به‌صورت یک مجموعهٔ منظم از بخش‌هایی با اندازهٔ ای ال یو که از با ارزش‌ترین به کم ارزش‌ترین (یا بالعکس) مرتب شده‌اند در نظر می‌گیرد. برای مثال، در رابطه با یک ای ال یو ۸ بیتی، عدد صحیح ۲۴ بیتی 0x123456 به سه قسمت ۸ بیتی تقسیم می‌شود: 0x12 (با ارزش‌ترین)، 0x34 ، و 0x56 (کم ارزش‌ترین). از آنجاییکه سایز یک قسمت دقیقاً برابر با سایز کلمهٔ ای ال یو است، ای ال یو می‌تواند مستقیماً روی این قسمت از عملوند محاسبه انجام دهد. الگوریتم از ای ال یو استفاده می‌کند تا مستقیماً روی قسمت‌های خاص عملوند محاسبه انجام دهد و بنابراین یک قسمت مرتبط (یک تکه) از نتیجهٔ چند دقتی را تولید می‌کند. | ## بخش 3: واحد محاسبه و منطق | هر تکه بعد از تولید شدن، در ناحیهٔ مرتبطی از حافظه که به حاصل چند دقتی اختصاص داده شده‌است، نوشته می‌شود. این فرایند برای تمام قسمت‌های عملوند تکرار می‌شود به گونه ای که مجموعهٔ کاملی از قطعات تولید شود که حاصل یک عملیات دقیق چند پاره است. در عملیات محاسباتی (مثلاً جمع یا تفریق)، با فراخوان یک عملیات ای ال یو روی بخش‌های کم ارزش تر عملوند، الگوریتم آغاز می‌شود و بدین گونه یک قطعهٔ کم ارزش و یک بیت انتقالی خروجی تولید می‌شود. الگوریتم، قطعهٔ مورد نظر را در حافظهٔ مربوط می‌نویسد، درحالی‌که ماشین وضعیت پردازنده، به‌طور معمول بیت انتقالی خروجی را در یک رجیستر وضعیت ای ال یو ذخیره می‌کند. الگوریتم سپس سراغ قطعهٔ بعدی از مجموعهٔ هر عملوند می‌رود و عملیاتی را از ای ال یو بر روی این قطعه‌ها همراه با بیت انتقالی ذخیره شده از عملیات قبلی ای ال یو فراخوان می‌کند و در نتیجه قطعه ای دیگر (با ارزش تر) و یک بیت انتقالی خروجی تولید می‌کند. همانند قبل، بیت انتقالی در رجیستر وضعیت ذخیره می‌شود و قطعهٔ تولید شده در حافظهٔ اختصاص داده شده نوشته می‌شود. این فرایند ادامه پیدا می‌کند تا زمانیکه تمام قطعات عملوند پردازش می‌شوند، در نتیجه مجموعهٔ کاملی از قطعات در حافظه تولید می‌شود که همان نتیجهٔ محاسبهٔ چند دقتی است. در عملیات جابجایی چند دقتی، ترتیب پردازش قطعات عملوند بستگی به جهت جابجایی دارد. در عمیات جابجایی رو به چپ، قطعات با ارزش کمتر اول پردازش می‌شوند، چون کم ارزش‌ترین بیت هر قطعه -که از طریق بیت انتقالی ذخیره شده منتقل می‌شود _ باید از با ارزش‌ترین بیت کم ارزش‌ترین عملوندی که پیش از آن به سمت چپ جابجا شده‌است، به‌دست آید. بالعکس، در عملیات جابجایی به راست، عملوندها از بخش با ارزش تر پردازش می‌شوند، چون با ارزش‌ترین بیت هر قطعه باید از کم ارزش‌ترین بیت با ارزش‌ترین عملوندی که پیش از آن به سمت راست جابجا شده به‌دست آید. در عملیات منطقی بیت به بیت (نظیر AND منطقی و OR منطقی)، قطعات عملوند را می‌توان به هر ترتیب دلخواهی پردازش کرد، چون هر قطعه فقط به قطعات عملوند متناظر بستگی دارد (بیت انتقالی ذخیره شده از عملیات پیشین ای ال یو نادیده گرفته می‌شود). عملیات پیچیده اگرچه می‌توان ای ال یو را طوری طراحی کرد که توابع پیچیده را انجام دهد، اما باعث پیچیدگی بیشتر مدار، هزینه و مصرف انرژی بیشتر و اندازهٔ بزرگتر آن می‌شود که این کار در بیشتر موارد به‌طور عملی امکان‌پذیر نیست. در نتیجه، واحد منطق و محاسبه معمولاً محدود به توابع ساده هستند که سرعت اجرای بسیار بالا دارند (یعنی تأخیر انتشار بسیار کوتاه) و مدار پردازندهٔ خارجی با هماهنگ‌کردن مجموعهٔ متوالی از توابع ساده‌تر در ای ال یو، توابع پیچیده را اجرا می‌کند. برای مثال، محاسبهٔ ریشه دوم یک عدد ممکن است به شیوه‌های مختلفی پیاده‌سازی شود که بستگی به پیچیدگی ای ال یو دارد. محاسبه در تنها یک بازهٔ ساعت: یک ای ال یو بسیار پیچیده که ریشه دوم را در طی تنها یک عملیات محاسبه می‌کند. خط لوله محاسبه: گروهی از ای ال یوهای ساده که ریشه دوم را در طی مراحلی محاسبه می‌کنند و نتایج بینابینی در ای ال یو جابجا می‌شوند و شبیه خط تولید یک کارخانه مرتب می‌شوند. این مدار می‌تواند قبل از تمام کردن مورد قبلی عملوندهای جدید را بپذیرد و با سرعتی معادل با سرعت یک ای ال یو ی بسیار پیچیده نتایج را تولید می‌کند، اگرچه نتایج با تأخیری معادل با مجموع تاخیرهای انتشار مراحل ای ال یو به‌دست می‌آید. محاسبهٔ پیمایشی: یک ای ال یو ی ساده که ریشه دوم را از طریق مراحل متعدد و تحت هدایت واحد کنترل محاسبه می‌کند. پیاده‌سازی‌های بالا بترتیب از روش‌های بسیار سریع و بسیار هزینه بر تا روش‌های بسیار کند و با کمترین هزینه ذکر شده‌اند. | ## جمع‌بندی | ریشه دوم در تمام موارد محاسبه می‌شود اما پردازنده‌های دارای ای ال یوهای ساده زمان بیشتری برای محاسبه می‌برند، زیرا عملیات متعددی در ای ال یو باید انجام گردد.