واحد حساب و منطق - Arithmethic Logic Unit
در علم کامپیوتر، واحد حساب و منطق (به اختصار ALU ) یک مدار دیجیتالی است که عملیات های محاسباتی و منتطی را انجام می دهد. ALU بخش بنیادی "واحد پردازش مرکزی" (CPU) یا هر پردازنده ی دیگری است. پردازنده های مرکزی یا پردازنده های گرافیکی مدرن ، شامل ALU های بسیار قدرتمند و پیچیده هستند و ممکن است بیش از یک ALU داشته باشند. اکثر عملیات های پردازنده به وسیله یک یا چند ALU انجام می شود. ALU دیتا را از ریجیستر های ورودی بارگذاری می کند، سپس یک واحد کنترل (Control unit) به ALU می گوید که چه عملیاتی را بر آن اطلاعات انجام دهد. سپس ALU نتایج را بر روی یک ریجیستر خروجی ذخیره می کند. اجزای دیگر این اطلاعات را بین ریجیستر ها و حافظه جابه جا می کنند.
عملیات های ساده :
اکثر ALU ها می توانند این عملیات ها را انجام دهند:
- عملیات های محاسباتی صحیح ( جمع ، تفریق و بعضی ضرب و تقسیم .. )
- عملیات های بیتی منطقی ( AND ، NOT ، OR ، XOR )
- عملیات های انتقال بیتی (Bit-shifting) (انتقال یا چرخش یک کلمه با تعداد مشخصی بیت به راست یا چپ؛ با/بدون گسترش علامت )
عملیات های پیچیده :
مهندسان می توانند واحد حساب و منطق را برای هر عملیاتی طراحی کنند. هر چه قدر که آن پیچیده تر باشد ، به هزینه ، مصرف انرژی و فضای اشغال شده توسط ALU اضافه می شود. پس برای هر پردازنده ، واحد حساب و منطق مناسب طراحی می شود. برای مثال، برای محاسبه جذر (ریشه دوم) یک عدد ممکن است از یکی از روش های زیر استفاده شود :
- محاسبه در یک کلاک (چرخه). طراحی یک ALU فوق العاده پیچیده که ریشه دوم عدد را در یک کلاک محاسبه می کند.
- خط لوله های (pipeline) محاسبه. طراحی یک ALU که ریشه دوم یک عدد را در چند مرحله محاسبه می کند. اطلاعات در یک سری مدار ها که مانند خط تولید یک کارخانه قرار گرفته اند، منتقل می شوند. در این صورت ALU می تواند حتی قبل از پایان محاسبه بر روی عدد اول، عدد بعدی را دریافت کند و مراحل پردازش را به ترتیب بر روی آنها انجام دهد. در این صورت ALU می تواند به سرعت یک ALU تک کلاک (حالت اول) اعداد را پیدا کند؛ البته شاید در ابتدای عملیات تاخیر داشته باشد.
- محاسبه تعاملی. طراحی یک ALU پیچیده که محاسبه ریشه دوم را در چند مرحله انجام می دهد. که معمولا به "کنترل" از طرف یک واحد کنترل پیچیده با ریزکد های داخلی بستگی دارد.
- پردازنده اضافی (Co-processor) . طراحی یک ALU ساده در پردازنده و به کار بردن یک پردازنده مخصوص و نسبتا گران برای مصرف کننده در کنار پردازنده اولیه که یکی از راه های بالا را اجرا می کند.
- کتابخانه های نرم افزاری. که در این روش پردازنده اضافه و مخصوص و شبیه سازی وجود ندارد و برنامه نویسان برای محاسبه ریشه دوم، باید الگوریتم ها را خودشان بنویسند.
- شبیه سازی نرم افزاری. که حالت co-processor را شبیه سازی می کنند. پس هر موقع که یک برنامه بخواهد محاسبات جذر را انجام دهد، شبیه ساز، پردازنده را برای استفاده از پردازنده های مخصوص در صورت وجود، آگاه می کند یا اگر پردازنده ویژه وجود نداشت از سیستم عامل برای انجام محاسبه با استفاده از الگوریتم های نرم افزاری کمک می گیرد.
روش های بالا از سریعترین و پرهزینه ترین به سوی کند ترین و کم هزینه ترین مرتب شده اند. پس اگرچه که ساده ترین کامپیوتر ها می توانند پیچیده ترین فرمول ها را محاسبه کنند، اما آنها معمولا این کار را با تاخیر زیاد و انجام چندین مرحله انجام می دهند. پردازنده های قوی مانند core اینتل یا amd 64 اغلب از روش های 1 ، 2 و 3 برای عملیات های ساده، پیچیده و فوق العاده پیچیده استفاده می کنند.
ورودی های واحد حساب و منطق، دیتا هایی هستند که باید عملیات ها روی آنها انجام شود و یک کد از واحد کنترل که مشخص می کند چه عملیاتی بر روی آنها باید انجام شود. خروجی این واحد، نتایج محاسبات هستند. در بسیاری از طراحی های واحد حساب و منطق ، ALU مجموعه ای از کد ها را تولید می کند/می گیرد (و آنها را به/از یک واحد "ریجیستر وضعیت" می فرستد/ می گیرد) که نشان دهنده ی وضعیت های مختلف مانند ورود، خروج ، سرریز و .. هستند. (wikipedia.org)
+ نوشته شده در شنبه سی ام بهمن ۱۳۸۹ ساعت 22:17 توسط MEC
GENERAL INFORMATION