مقدمه‌ای بر طراحی پردازنده و قوانین منطق دیجیتال

پیش از آنکه یک پردازنده بتواند ساخته شود، طراحان آن باید روی مجموعه‌ای مشترک از قوانین برای نحوه رفتار مدارهای دیجیتال در طول زمان توافق کنند. این مقاله توضیح می‌دهد ساخت یک پردازنده واقعاً چه چیزی را شامل می‌شود، دو دسته گسترده پیاده‌سازی که در این فصل پوشش داده می‌شود، و قراردادهای بنیادین طراحی منطقی که رفتار مدار را قابل‌پیش‌بینی می‌کنند.

طراحی پردازندهقراردادهای طراحی منطقیمنطق ترکیبی و ترتیبی

~3 دقیقه مطالعه · آخرین به‌روزرسانی ۱۵ شهریور ۱۴۰۵

ساخت یک پردازنده واقعاً یعنی چه

فصل‌های پیشین در این مجموعه با پردازنده به‌عنوان مؤلفه‌ای رفتار کردند که صرفاً دستورات را به‌درستی اجرا می‌کند. این فصل آن مؤلفه را باز می‌کند و توضیح می‌دهد آن واقعاً چگونه از مدارهای منطقی دیجیتال پایه ساخته شده، و مسیر از کدگذاری باینری یک دستور تا اقدامات فیزیکی رجیسترها، حافظه، و واحدهای محاسباتی که با هم کار می‌کنند را دنبال می‌کند.

پیاده‌سازی‌های پردازنده در این فصل از طریق دو طراحی مرتبط اما متمایز بررسی می‌شوند: یک Single-Cycle Implementation، جایی که هر دستور دقیقاً در یک سیکل ساعت کامل می‌شود، و یک Pipelined Implementation، جایی که چند دستور به‌طور هم‌زمان در مراحل هم‌پوشان پردازش می‌شوند. درک نسخه تک‌سیکلی ساده‌تر ابتدا، پیچیدگی اضافه‌شده پایپ‌لاینینگ را بعداً بسیار راحت‌تر برای دنبال کردن می‌کند.

دو دسته از منطق دیجیتال

مدارهای دیجیتال مورد استفاده برای ساخت یک پردازنده در دو دسته بنیادین قرار می‌گیرند، و دانستن اینکه یک قطعه مدار به کدام دسته تعلق دارد تعیین می‌کند که چگونه در طول زمان رفتار می‌کند.

  • Combinational Logic خروجی‌هایی تولید می‌کند که فقط به ورودی‌های فعلی بستگی دارند، بدون هیچ حافظه‌ای از ورودی‌های گذشته. یک مدار جمع‌کننده مثالی معمول است: با همان دو مقدار ورودی، همیشه همان مجموع را تولید می‌کند، صرف‌نظر از اینکه قبلاً چه اتفاقی افتاده است.
  • Sequential Logic خروجی‌هایی تولید می‌کند که هم به ورودی‌های فعلی و هم به وضعیت داخلی ذخیره‌شده‌ای از عملیات‌های قبلی بستگی دارند. یک رجیستر مثالی معمول است: خروجی آن به مقداری که پیش‌تر در آن نوشته شده بستگی دارد، نه فقط به آنچه اکنون در حال رخ دادن است.

چرا یک مجموعه مشترک از قراردادهای طراحی ضروری است

ترکیب صحیح مدارهای ترکیبی و ترتیبی نیازمند توافق روی یک مجموعه مشترک از قوانین است، که در مجموع Logic Design Conventions نامیده می‌شوند، که هر بخش پردازنده از آن‌ها پیروی می‌کند.

  • یک Clock Signal یک مرجع زمان‌بندی منظم و تکرارشونده فراهم می‌کند که هماهنگ می‌کند چه زمانی عناصر ترتیبی مجاز به به‌روزرسانی مقادیر ذخیره‌شده خود هستند.
  • Edge-Triggered Clocking یعنی عناصر نگه‌دارنده وضعیت فقط در یک لحظه مشخص و دقیق از سیگنال ساعت مقادیر جدید را می‌گیرند، مانند وقتی ساعت از پایین به بالا تغییر می‌کند، نه به‌طور پیوسته.
  • سیگنال‌ها باید زمان کافی برای پایدار شدن پیش از رسیدن لبه ساعت داشته باشند، چون منطق ترکیبی مقدار کمی اما غیرصفر زمان برای محاسبه خروجی خود پس از تغییر ورودی‌هایش نیاز دارد.

بدون پیروی دقیق از این قراردادها، عناصر ترتیبی می‌توانند مقادیر ناپایدار و نیمه‌تغییریافته را بگیرند، و اثراتی تولید کنند که با تغییر سرعت مدار و ساعت به‌طور غیرقابل‌پیش‌بینی رفتار می‌کنند.

چرا این پایه پیش از ساخت یک datapath اهمیت دارد

هر مداری که در باقی این فصل ساخته می‌شود — از datapath هایی که داده را بین رجیسترها جابه‌جا می‌کنند تا منطق کنترلی که تصمیم می‌گیرد کدام عملیات انجام شود — به این تمایز پایه بین رفتار ترکیبی و ترتیبی، و به پایبندی دقیق به قراردادهای ساعت‌بندی متکی است. رد شدن از این پایه، درک اینکه چرا طراحی‌های بعدی به این شکل ساختاردهی شده‌اند را بسیار سخت‌تر می‌کند.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

خطرهای داده در پایپ‌لاین: Forwarding در مقابل Stalling

هم‌پوشانی اجرای دستورات یک مشکل جدی ایجاد می‌کند وقتی یک دستور به نتیجه‌ای نیاز دارد که دستور قبلی هنوز محاسبه آن را تمام نکرده است. این مقاله توضیح می‌دهد خطرهای داده چه هستند، forwarding چگونه بیشتر آن‌ها را بدون از دست دادن هیچ کارایی حل می‌کند، و چرا برخی موقعیت‌ها همچنان نیاز به توقف پایپ‌لاین دارند.

ادامه

تبدیل یک Datapath تک‌سیکلی به یک Datapath پایپ‌لاین‌شده

هم‌پوشانی اجرای دستورات به بیش از اجرای سریع‌تر همان سخت‌افزار تک‌سیکلی نیاز دارد؛ نیازمند جداسازی فیزیکی هر مرحله پایپ‌لاین با عناصر ذخیره‌سازی و تکرار منطق کنترلی در سراسر مراحل است. این مقاله توضیح می‌دهد رجیسترهای پایپ‌لاین چگونه وضعیت دستور را بین مراحل حفظ می‌کنند و سیگنال‌های کنترلی چگونه همراه با داده در سراسر پایپ‌لاین حرکت می‌کنند.

ادامه

مروری بر پایپ‌لاینینگ: هم‌پوشانی اجرای دستورات

یک پردازنده تک‌سیکلی مقدار عظیمی از زمان بیکاری سخت‌افزار را هدر می‌دهد چون هر دستور باید در طول کندترین دستور ممکن جا شود. این مقاله پایپ‌لاینینگ را به‌عنوان یک راه‌حل معرفی می‌کند، تشبیه کلاسیک خط تولید را توضیح می‌دهد، پایپ‌لاین استاندارد پنج‌مرحله‌ای را تجزیه می‌کند، و توضیح می‌دهد چرا پایپ‌لاینینگ توان عملیاتی دستورات را افزایش می‌دهد بدون اینکه هیچ دستور منفردی را سریع‌تر کند.

ادامه

طراحی منطق کنترلی برای یک پردازنده تک‌سیکلی

یک datapath به‌تنهایی بدون سیگنال‌های کنترلی که به آن بگویند برای هر دستور چه کاری انجام دهد، هیچ کاری نمی‌کند. این مقاله توضیح می‌دهد منطق کنترلی چگونه فیلدهای opcode و function یک دستور را می‌خواند تا سیگنال‌های دقیق مورد نیاز برای مسیریابی درست داده را تولید کند، و مرور می‌کند یک پیاده‌سازی کامل تک‌سیکلی چگونه انواع مختلف دستورات را اجرا می‌کند.

ادامه

ساخت یک Datapath: اتصال رجیسترها، حافظه، و ALU

یک datapath مدار فیزیکی است که داده را در طول اجرای یک دستور از میان پردازنده حرکت می‌دهد. این مقاله بلوک‌های سازنده اساسی سخت‌افزاری مورد نیاز برای fetch، decode، و اجرای دستورات را تجزیه می‌کند، و نشان می‌دهد آن‌ها چگونه به‌هم سیم‌کشی می‌شوند تا یک datapath پردازنده کارآمد، هرچند ساده‌شده، تشکیل دهند.

ادامه

تسریع ضرب ماتریس و درس‌های کلیدی فصل سوم

ضرب ماتریس یکی از رایج‌ترین و حساس‌ترین عملیات از نظر کارایی در محاسبات علمی و یادگیری ماشین است. این مقاله نشان می‌دهد موازی‌سازی زیرکلمه‌ای چگونه این عملیات را در عمل تسریع می‌کند، سپس فصل محاسبات را با پرداختن به تصورات غلط رایج درباره محاسبات کامپیوتری و جمع‌بندی درس‌های اصلی از جمع تا ممیز شناور به پایان می‌رساند.

ادامه