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

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

Datapathپردازنده, واکشی دستور,فایل رجیستر

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

یک Datapath واقعاً چه کاری انجام می‌دهد

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

بلوک‌های سازنده اصلی

تعداد کمی مؤلفه ضروری بارها در سراسر datapath ظاهر می‌شوند.

  • Program Counter (PC) رجیستری است که آدرس حافظه دستوری که در حال حاضر اجرا می‌شود را نگه می‌دارد.
  • Instruction Memory دستورات برنامه را ذخیره می‌کند و با استفاده از PC برای واکشی دستور بعدی برای اجرا خوانده می‌شود.
  • Register File مجموعه کوچک و سریع رجیسترهای همه‌منظوره است، که اجازه می‌دهد دو رجیستر خوانده شوند و یکی در طول یک دستور واحد نوشته شود.
  • ALU (Arithmetic Logic Unit) عملیات‌های محاسباتی و منطقی، مانند جمع یا مقایسه، را روی مقادیری که دریافت می‌کند انجام می‌دهد.
  • Data Memory از حافظه دستور جداست و فقط توسط دستورات load و store برای خواندن یا نوشتن مقادیر داده دسترسی‌پذیر است.

واکشی دستور بعدی

هر سیکل دستور به همان شکل شروع می‌شود: مقدار فعلی PC برای خواندن دستور بعدی از حافظه دستور استفاده می‌شود، و هم‌زمان، یک جمع‌کننده کوچک PC را به‌اندازه یک مقدار ثابت افزایش می‌دهد تا به دستور بعدی اشاره کند، مگر اینکه یک branch یا jump این را بعداً در همان سیکل تغییر دهد.

PC → Instruction Memory → دستور واکشی‌شده
PC → Adder (+4 یا +عرض دستور) → مقدار PC بعدی

اجرای یک دستور محاسباتی

برای یک دستور محاسباتی ساده مانند add، datapath دو مقدار رجیستر منبع را از فایل رجیستر می‌خواند، آن‌ها را به ALU برای محاسبه نتیجه تغذیه می‌کند، و آن نتیجه را دوباره در رجیستر مقصد در فایل رجیستر می‌نویسد.

اجرای یک دستور انتقال داده

یک دستور load یا store مسیری مشابه اما متمایز را دنبال می‌کند. ALU نه برای محاسبه یک نتیجه محاسباتی نهایی، بلکه برای محاسبه یک آدرس حافظه با جمع کردن مقدار رجیستر پایه با یک آفست استفاده می‌شود. برای یک load، این آدرس برای خواندن یک مقدار از حافظه داده استفاده می‌شود، که سپس در فایل رجیستر نوشته می‌شود؛ برای یک store، مقداری که از فایل رجیستر خوانده شده در آن آدرس محاسبه‌شده در حافظه داده نوشته می‌شود.

اجرای یک دستور شاخه

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

چرا مالتی‌پلکسرها مورد نیازند

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

از بلوک‌های سازنده تا یک Datapath کارآمد

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

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

مقالات مرتبط

اصول کش: حافظه کوچک و سریع چگونه پیش‌بینی می‌کند بعداً چه چیزی نیاز است

یک کش فقط به این دلیل کار می‌کند که برنامه‌ها تمایل دارند داده یکسان یا نزدیک به هم را به‌طور تکراری دسترسی کنند نه به‌صورت تصادفی. این مقاله اصل محلیت که کش را مؤثر می‌کند را توضیح می‌دهد، یک کش مستقیم‌نگاشت‌شده چگونه داده را با استفاده از یک آدرس مکان‌یابی می‌کند، و در یک hit کش در مقابل یک miss کش چه اتفاقی می‌افتد.

ادامه

سلسله‌مراتب حافظه: چرا کامپیوترها از چند نوع حافظه استفاده می‌کنند

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

ادامه

تصورات غلط رایج درباره طراحی پردازنده و تصویر کلی فصل چهارم

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

ادامه

پایپ‌لاین‌های دنیای واقعی: مقایسه ARM و Intel، و تسریع ضرب ماتریس

مفاهیم نظری پایپ‌لاین در پردازنده‌های تجاری واقعی شکل مشخصی به خود می‌گیرند، که بسته به اهداف طراحی‌شان از نظر عمق پایپ‌لاین و عرض صدور به‌طور گسترده متفاوت‌اند. این مقاله مقایسه می‌کند ARM Cortex-A53 و Intel Core i7 چگونه پایپ‌لاینینگ را متفاوت برای کارایی توان در مقابل کارایی خام پیاده‌سازی می‌کنند، سپس نشان می‌دهد موازی‌سازی سطح دستور چگونه ضرب ماتریس را در عمل تسریع می‌کند.

ادامه

موازی‌سموازی‌سازی سطح دستور: اجرای بیش از یک دستور به‌طور هم‌زمانازی سطح دستور: اجرای بیش از یک دستور به‌طور هم‌زمان

موازی‌سازی سطح دستور: اجرای بیش از یک دستور به‌طور هم‌زمان

ادامه

یک پردازنده پایپ‌لاین‌شده چگونه استثناها را مدیریت می‌کند

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

ادامه