ساخت یک پردازنده واقعاً یعنی چه
فصلهای پیشین در این مجموعه با پردازنده بهعنوان مؤلفهای رفتار کردند که صرفاً دستورات را بهدرستی اجرا میکند. این فصل آن مؤلفه را باز میکند و توضیح میدهد آن واقعاً چگونه از مدارهای منطقی دیجیتال پایه ساخته شده، و مسیر از کدگذاری باینری یک دستور تا اقدامات فیزیکی رجیسترها، حافظه، و واحدهای محاسباتی که با هم کار میکنند را دنبال میکند.
پیادهسازیهای پردازنده در این فصل از طریق دو طراحی مرتبط اما متمایز بررسی میشوند: یک Single-Cycle Implementation، جایی که هر دستور دقیقاً در یک سیکل ساعت کامل میشود، و یک Pipelined Implementation، جایی که چند دستور بهطور همزمان در مراحل همپوشان پردازش میشوند. درک نسخه تکسیکلی سادهتر ابتدا، پیچیدگی اضافهشده پایپلاینینگ را بعداً بسیار راحتتر برای دنبال کردن میکند.
دو دسته از منطق دیجیتال
مدارهای دیجیتال مورد استفاده برای ساخت یک پردازنده در دو دسته بنیادین قرار میگیرند، و دانستن اینکه یک قطعه مدار به کدام دسته تعلق دارد تعیین میکند که چگونه در طول زمان رفتار میکند.
Combinational Logicخروجیهایی تولید میکند که فقط به ورودیهای فعلی بستگی دارند، بدون هیچ حافظهای از ورودیهای گذشته. یک مدار جمعکننده مثالی معمول است: با همان دو مقدار ورودی، همیشه همان مجموع را تولید میکند، صرفنظر از اینکه قبلاً چه اتفاقی افتاده است.Sequential Logicخروجیهایی تولید میکند که هم به ورودیهای فعلی و هم به وضعیت داخلی ذخیرهشدهای از عملیاتهای قبلی بستگی دارند. یک رجیستر مثالی معمول است: خروجی آن به مقداری که پیشتر در آن نوشته شده بستگی دارد، نه فقط به آنچه اکنون در حال رخ دادن است.
چرا یک مجموعه مشترک از قراردادهای طراحی ضروری است
ترکیب صحیح مدارهای ترکیبی و ترتیبی نیازمند توافق روی یک مجموعه مشترک از قوانین است، که در مجموع Logic Design Conventions نامیده میشوند، که هر بخش پردازنده از آنها پیروی میکند.
- یک
Clock Signalیک مرجع زمانبندی منظم و تکرارشونده فراهم میکند که هماهنگ میکند چه زمانی عناصر ترتیبی مجاز به بهروزرسانی مقادیر ذخیرهشده خود هستند. Edge-Triggered Clockingیعنی عناصر نگهدارنده وضعیت فقط در یک لحظه مشخص و دقیق از سیگنال ساعت مقادیر جدید را میگیرند، مانند وقتی ساعت از پایین به بالا تغییر میکند، نه بهطور پیوسته.- سیگنالها باید زمان کافی برای پایدار شدن پیش از رسیدن لبه ساعت داشته باشند، چون منطق ترکیبی مقدار کمی اما غیرصفر زمان برای محاسبه خروجی خود پس از تغییر ورودیهایش نیاز دارد.
بدون پیروی دقیق از این قراردادها، عناصر ترتیبی میتوانند مقادیر ناپایدار و نیمهتغییریافته را بگیرند، و اثراتی تولید کنند که با تغییر سرعت مدار و ساعت بهطور غیرقابلپیشبینی رفتار میکنند.
چرا این پایه پیش از ساخت یک datapath اهمیت دارد
هر مداری که در باقی این فصل ساخته میشود — از datapath هایی که داده را بین رجیسترها جابهجا میکنند تا منطق کنترلی که تصمیم میگیرد کدام عملیات انجام شود — به این تمایز پایه بین رفتار ترکیبی و ترتیبی، و به پایبندی دقیق به قراردادهای ساعتبندی متکی است. رد شدن از این پایه، درک اینکه چرا طراحیهای بعدی به این شکل ساختاردهی شدهاند را بسیار سختتر میکند.