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

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

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

~3 min read · Updated Sep 6, 2026

قطعه گمشده: گفتن به Datapath چه کاری انجام دهد

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

سیگنال‌های کنترلی از کجا می‌آیند

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

سیگنال‌های کنترلی کلیدی در یک طرح تک‌سیکلی

تعداد کمی سیگنال کنترلی نماینده نشان می‌دهند این چگونه کار می‌کند.

  • ALUOp به ALU می‌گوید کدام عملیات خاص را انجام دهد، مانند جمع برای محاسبه آدرس یک دستور load یا تفریق برای مقایسه یک شاخه.
  • MemRead و MemWrite خواندن از یا نوشتن به حافظه داده را فعال می‌کنند، که فقط برای دستورات load و store به‌ترتیب فعال هستند.
  • RegWrite نوشتن یک نتیجه دوباره به فایل رجیستر را فعال می‌کند، که برای دستورات محاسباتی و load فعال است اما برای store ها یا شاخه‌ها فعال نیست.
  • Branch نشان می‌دهد آیا دستور فعلی یک شاخه شرطی است، که همراه با نتیجه مقایسه ALU برای تصمیم‌گیری درباره اینکه آیا PC باید با یک آدرس مقصد شاخه به‌روزرسانی شود استفاده می‌شود.
  • MemtoReg از طریق یک مالتی‌پلکسر، انتخاب می‌کند آیا مقداری که در فایل رجیستر نوشته می‌شود از نتیجه ALU می‌آید یا از حافظه داده.

دنبال کردن یک دستور در سراسر منطق کنترلی

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

برای یک دستور "add":
ALUOp = جمع, RegWrite = 1,
MemRead = 0, MemWrite = 0, Branch = 0

برای یک دستور "load":
ALUOp = جمع (محاسبه آدرس),
MemRead = 1, RegWrite = 1, MemtoReg = 1

برای یک دستور "branch":
ALUOp = تفریق (مقایسه),
Branch = 1, RegWrite = 0, MemWrite = 0

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

چرا یک طرح تک‌سیکلی نقطه شروع مفیدی است

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

Written & researched by Dr. Shahin Siami

Related Articles

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

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

Continue

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

Continue

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

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

Continue

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

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

Continue

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

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

Continue

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

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

Continue