نقشه راه جامع مهندسی کامپیوتر
منطق دیجیتال و مدارها
جبر بولی و گیتهای منطقی
در قلب هر پردازنده، تصمیمی ساده در جریان است: درست یا غلط، روشن یا خاموش، ۱ یا ۰. این دنیای دودویی بر اساس یک سیستم ریاضی زیبا به نام جبر بولی کار میکند. این جبر، به جای اعداد بینهایت، تنها با دو مقدار سروکار دارد و قوانینی برای عملیات روی آنها تعریف میکند. این قوانین، زبان مشترک بین نرمافزار و سختافزار هستند.
بلوکهای اصلی سازنده این منطق، «گیتهای منطقی» (Logic Gates) نام دارند. این گیتها مدارهای الکترونیکی کوچکی هستند که یک یا چند ورودی دودویی دریافت کرده و بر اساس یک قانون مشخص، یک خروجی دودویی تولید میکنند. بیایید با اصلیترین آنها آشنا شویم.
| گیت (Gate) | عملکرد (Operation) | نماد (Symbol) | مثال (A=1, B=0) |
|---|---|---|---|
| AND | اگر تمام ورودیها ۱ باشند، خروجی ۱ است. | ||
| OR | اگر حداقل یکی از ورودیها ۱ باشد، خروجی ۱ است. | ||
| NOT | خروجی، عکس ورودی است. | ||
| XOR | اگر ورودیها متفاوت باشند، خروجی ۱ است. |
این گیتهای ساده، الفبای دنیای دیجیتال هستند. درست همانطور که حروف با هم ترکیب شده و کلمات را میسازند، گیتهای منطقی نیز با هم ترکیب میشوند تا مدارهای پیچیدهتری را شکل دهند که قادر به انجام محاسبات هستند. جبر بولی، که توسط پایهگذاری شد، ابزاری قدرتمند برای تحلیل و سادهسازی این مدارها فراهم میکند. با استفاده از قوانینی مانند قوانین دمورگان، مهندسان میتوانند مدارهایی با تعداد گیتهای کمتر طراحی کنند که سریعتر، ارزانتر و کممصرفتر هستند.
ساخت مدارهای ترکیبی
وقتی خروجی یک مدار تنها به ورودیهای لحظهای آن بستگی داشته باشد، آن را یک «مدار ترکیبی» (Combinational Circuit) مینامیم. این مدارها حافظه ندارند و گذشته را به خاطر نمیآورند. هر بار که ورودیها تغییر کنند، خروجی بلافاصله بر اساس همان منطق ثابت محاسبه میشود.
یک مثال کلاسیک و بنیادی از مدارهای ترکیبی، «جمعکننده» (Adder) است. سادهترین عملیات حسابی، یعنی جمع دو بیت، پایهی تمام محاسبات پیچیدهتر است. برای جمع کردن دو عدد چند بیتی، ما به مداری نیاز داریم که بتواند سه بیت را با هم جمع کند: بیت اول، بیت دوم و یک بیت «رقم نقلی» (Carry) از ستون قبلی. این مدار «جمعکننده کامل» (Full Adder) نام دارد.
با کنار هم قرار دادن چندین جمعکننده کامل، میتوانیم جمعکنندههایی برای اعداد بزرگتر (مثلاً ۸ بیتی یا ۶۴ بیتی) بسازیم. این مدارها هسته اصلی در یک پردازنده (CPU) را تشکیل میدهند. ALU مسئول انجام تمام عملیات ریاضی (جمع، تفریق) و منطقی (AND, OR, NOT) است و به نوعی ماشین حساب اصلی کامپیوتر محسوب میشود.
منطق ترتیبی و حافظه
مدارهای ترکیبی قدرتمند هستند، اما یک محدودیت بزرگ دارند: آنها نمیتوانند اطلاعات را «ذخیره» کنند. خروجی آنها همیشه تابعی از ورودی فعلی است. اما کامپیوترها برای انجام کارهای مفید، نیاز به حافظه دارند تا حالت (state) فعلی برنامه یا دادهها را نگهداری کنند. اینجا است که «منطق ترتیبی» (Sequential Logic) وارد میشود.
تفاوت اصلی این است که خروجی یک مدار ترتیبی به ورودیهای فعلی و همچنین به وضعیت قبلی مدار بستگی دارد. این مدارها دارای یک عنصر «حافظه» هستند. بنیادیترین واحد حافظه در مدارهای دیجیتال، فلیپفلاپ (Flip-Flop) است.
یک فلیپفلاپ یک مدار الکترونیکی است که میتواند یک بیت (۰ یا ۱) را تا زمانی که نیاز باشد، در خود ذخیره کند.
فلیپفلاپها انواع مختلفی دارند، اما یکی از رایجترین آنها فلیپفلاپ نوع D است. این مدار یک ورودی داده (D) و یک ورودی ساعت (Clock) دارد. با هر پالس سیگنال ساعت، مقداری که روی ورودی D قرار دارد، در فلیپفلاپ ذخیره شده و در خروجی آن (Q) ظاهر میشود. این مقدار تا پالس بعدی ساعت، ثابت باقی میماند، حتی اگر ورودی D تغییر کند. این رفتار، اساس ذخیرهسازی اطلاعات در سختافزار است.
با کنار هم قرار دادن چندین فلیپفلاپ، میتوان ساختارهای بزرگتری به نام «ثبات» یا «رجیستر» (Register) ایجاد کرد. یک رجیستر ۸ بیتی، از هشت فلیپفلاپ تشکیل شده و میتواند یک بایت داده را در خود ذخیره کند. رجیسترها حافظههای بسیار سریعی هستند که مستقیماً درون پردازنده قرار دارند و برای نگهداری موقت دادههایی که ALU روی آنها کار میکند، استفاده میشوند. در واقع، تمام محاسبات در CPU با خواندن داده از رجیسترها، انجام عملیات در ALU و نوشتن نتیجه در یک رجیستر دیگر انجام میشود.
حالا وقت آن است که دانش خود را در مورد این مفاهیم اساسی بسنجید.
تفاوت اصلی بین یک «مدار ترکیبی» و یک «مدار ترتیبی» چیست؟
وظیفه اصلی «واحد منطق و حساب» (ALU) در یک پردازنده (CPU) چیست؟
درک جبر بولی، گیتهای منطقی، و تفاوت بین مدارهای ترکیبی و ترتیبی، پایهای محکم برای درک چگونگی کارکرد کامپیوتر در پایینترین سطح سختافزاری فراهم میکند. این بلوکهای سازنده، اساس تمام ساختارهای پیچیدهتر در معماری کامپیوتر هستند.
