دروازه‌سازی ساعت

در معماری رایانه، **دروازه‌سازی ساعت** (به انگلیسی: Clock gating) یک تکنیک پرکاربرد برای مدیریت توان است که در بسیاری از مدارهای همگام به‌منظور کاهش اتلاف توان دینامیک مورد استفاده قرار می‌گیرد. اتلاف توان دینامیک یکی از منابع اصلی هدررفت انرژی در طراحی‌های دیجیتال محسوب می‌شود. سازوکار این روش بدین صورت است که هرگاه مدار یا زیربخشی از آن در حالت بیکار (Idle) باشد، سیگنال ساعت (Clock signal) ورودی به آن بخش قطع می‌شود.

دروازه‌سازی ساعت با «هرس کردن» (Pruning) بخشی از مسیر توزیع درخت ساعت، باعث صرفه‌جویی در مصرف انرژی می‌شود؛ اگرچه این کار به بهای افزودن پیچیدگی و گیت‌های منطقی بیشتر به مدار تمام می‌شود.

فرایند هرس کردن ساعت، بخش‌هایی از مدار را غیرفعال می‌کند تا فلیپ‌فلاپ‌های موجود در آن تغییر وضعیت ندهند. از آنجا که تغییر وضعیت منطقی مستلزم صرف انرژی است، جلوگیری از این تغییرات منجر به کاهش مصرف «توان کلیدزنی» (Switching power) می‌گردد. این تکنیک به‌ویژه در سیستم‌هایی که دارای زمان‌های بیکاری قابل‌توجه یا دوره‌های عدم‌فعالیتِ قابل پیش‌بینی در ماژول‌های خاص هستند، بسیار کارآمد است.

## مولفه‌های مصرف توان
مدارهای دیجیتال از طریق مکانیزم‌های متعددی توان مصرف می‌کنند که معمولاً به دو دسته کلی «دینامیک» (پویا) و «استاتیک» (ایستا) تقسیم می‌شوند. معادله زیر میانگین اتلاف توان در یک مدار سیماس (CMOS) را توصیف می‌کند:

: P_{avg} = P_{dynamic} + P_{short} + P_{leakage} + P_{static}

که در آن:

* **<math>P_{dynamic}</math> (توان دینامیک):** ناشی از شارژ و دشارژ شدن بارهای خازنی در حین تغییر وضعیت‌های منطقی (Logic transitions) است. این توان متناسب با فعالیت کلیدزنی، ظرفیت خازنی، مجذور ولتاژ تغذیه و فرکانس ساعت است.
* **<math>P_{short}</math> (توان اتصال کوتاه):** در هنگام تغییر سیگنال‌ها رخ می‌دهد؛ زمانی که هر دو ترانزیستور PMOS و NMOS به‌طور لحظه‌ای و هم‌زمان روشن می‌شوند و یک مسیر جریان اتصال کوتاه زودگذر بین منبع تغذیه و زمین ایجاد می‌کنند.
* **<math>P_{leakage}</math> (توان نشتی):** ناشی از جریان‌های «زیرآستانه» (Subthreshold) و نشت گیت است که حتی زمان خاموش بودن ترانزیستورها نیز وجود دارند. این مولفه در فناوری‌های «زیرمیکرون عمیق» (Deep submicron) اهمیت فزاینده‌ای پیدا کرده است.
* **<math>P_{static}</math> (توان استاتیک):** شامل توان مصرفی بلوک‌هایی است که همیشه روشن هستند (مانند مدارهای بایاس یا تولیدکننده‌های ولتاژ مرجع) و حتی در شرایط استندبای نیز مصرف می‌شوند.

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

## نقش دروازه‌سازی ساعت در کاهش توان
دروازه‌سازی ساعت (Clock gating) یکی از تکنیک‌های موثر برای کاهش مصرف انرژی است که به‌طور خاص مولفه **توان دینامیک** (P_{dynamic}) را هدف قرار می‌دهد. این کار با کاهش فعالیت‌های کلیدزنی غیرضروری در سیگنال‌های ساعت انجام می‌شود. توان دینامیک را می‌توان با معادله زیر تقریب زد:

: P_{dynamic} = \alpha \cdot C_L \cdot V_{dd}^2 \cdot f

که در آن:

* \alpha: ضریب فعالیت کلیدزنی (Switching activity factor)
* C_L: خازن بار
* V_{dd}: ولتاژ تغذیه
* f: فرکانس ساعت

با قطع کردن سیگنال ساعت در بخش‌هایی از مدار که مورد استفاده نیستند، دروازه‌سازی ساعت مقدار \alpha را کاهش داده و در نتیجه مصرف کل توان دینامیک را پایین می‌آورد. این روش با تکنیک «دروازه‌سازی توان» (Power gating) متفاوت است؛ در تکنیک دروازه‌سازی توان، منبع تغذیه به‌طور کامل قطع می‌شود که منجر به کاهش هم‌زمان چندین منبع اتلاف توان می‌گردد، اما پیچیدگی‌های خاص خود را دارد.

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

مدارهای خارجی می‌توانند سیگنال‌های ساعت و فعال‌سازی را از طریق تکنیکی به نام «فلیپ‌فلاپ‌های دارای پایه فعال‌ساز» (Enabled Flip-Flops) کنترل کنند، یا این سیگنال‌ها می‌توانند به‌صورت داخلی با استفاده از روش‌های سنتی دروازه‌سازی ساعت تولید شوند.
چپ|بندانگشتی|تکنیک فلیپ‌فلاپ‌های فعال‌ساز که برای ایزوله کردن یک بلوک منطقی داخلی استفاده می‌شود.
زمانی که سیگنال کنترلی (CNTRL) فعال می‌شود (مثلاً روی مقدار منطقی ۱ تنظیم می‌شود)، مدار دروازه‌سازی با نگه‌داشتن سیگنال ساعت در یک سطح منطقی ثابت (صفر یا یک)، آن را قطع می‌کند. یکی از پیاده‌سازی‌های رایج برای این کار، استفاده از یک «ترانزیستور عبوری» (Pass-transistor) از نوع CMOS است که توسط سیگنال کنترل معکوس‌شده کنترل می‌شود.

### روش‌های افزودن منطق دروازه‌سازی
منطق دروازه‌سازی ساعت را می‌توان به روش‌های گوناگونی به یک طرح افزود:

* **کدنویسی در سطح RTL:** می‌توان شرایط فعال‌سازی را مستقیماً در کد «سطح انتقال ثبات» (RTL) نوشت. ابزارهای سنتز (Synthesis tools) این شرایط را به‌صورت خودکار به منطق دروازه‌سازی ساعت ترجمه می‌کنند. به این روش، دروازه‌سازی با «دانه‌بندی ریز» (Fine-grained) گفته می‌شود.
* **درج دستی توسط طراح:** طراحان RTL می‌توانند با نمونه‌سازی از سلول‌های خاص کتابخانه به نام «سلول‌های یکپارچه دروازه‌سازی ساعت» (ICG)، ساعتِ ماژول‌ها یا ثبات‌های خاصی را به‌صورت دستی قطع و وصل کنند. این روش معمولاً در سطح ماژول انجام می‌شود.
* **درج نیمه‌خودکار:** ابزارهای خودکارِ دروازه‌سازی ساعت می‌توانند سلول‌های ICG را در کد RTL درج کرده یا شرایط فعال‌سازی را به کد اضافه کنند. این ابزارها معمولاً بهینه‌سازی‌های ترتیبی (Sequential optimizations) را نیز ارائه می‌دهند.

چپ|بندانگشتی|نمودار زمانی رفتار ساعت دروازه‌سازی‌شده (GCLK). وقتی سیگنال کنترل بالا باشد، ساعت غیرفعال می‌شود.
به‌طور کلی، اعمال دروازه‌سازی ساعت با «دانه‌بندی درشت‌تر» (Coarser granularity) منجر به کاهش سربار منابع و صرفه‌جویی بیشتر در مصرف توان می‌شود. باید توجه داشت که هرگونه تغییر در RTL برای بهبود دروازه‌سازی ساعت، منجر به تغییرات عملکردی در طرح خواهد شد (زیرا ثبات‌ها مقادیر متفاوتی را در زمان‌های مختلف نگه می‌دارند) و از این رو، طراحی نیاز به راستی‌آزمایی مجدد خواهد داشت.

## سایر ملاحظات
**دروازه‌سازی ساعت ترتیبی** (Sequential clock gating) فرایندی است که طی آن شرایط فعال‌سازی (Enable conditions) به عناصر ترتیبی بالادست و پایین‌دست مدار گسترش می‌یابد تا امکان قطع کردن ساعت در ثبات‌های بیشتری فراهم شود. این تکنیک باعث می‌شود که دروازه‌سازی از سطح فلیپ‌فلاپ‌های منفرد فراتر رفته و صرفه‌جویی در توان را در بخش‌های بزرگ‌تری از مدار بهینه کند.

تراشه‌هایی که برای کاربردهای مبتنی بر باتری یا توانِ فوق‌العاده پایین (Ultra-low-power) طراحی شده‌اند—مانند تلفن‌های همراه، ابزارهای پوشیدنی و سامانه‌های نهفته—معمولاً چندین راهبرد دروازه‌سازی ساعت را به‌طور هم‌زمان پیاده‌سازی می‌کنند.

* **دروازه‌سازی دستی:** شامل درایورهای نرم‌افزاری است که سیگنال ساعت را برای کنترل‌کننده‌های بیکار (Idle controllers) قطع یا وصل می‌کنند.
* **دروازه‌سازی خودکار:** از مکانیزم‌های سخت‌افزاری استفاده می‌کند تا تشخیص دهد چه زمانی سیگنال ساعت غیرضروری است و آن را به‌صورت پویا خاموش کند.

این رویکردها اغلب در کنار هم و درون یک «درخت فعال‌سازی» عمل می‌کنند. برای مثال، یک گذرگاه (Bus) داخلی یا پل ارتباطی ممکن است از دروازه‌سازی خودکار استفاده کند و تا زمانی که توسط CPU یا موتور دسترسی مستقیم به حافظه (DMA) فراخوانی نشود، ساعت آن غیرفعال باقی بماند. در مقابل، تجهیزات جانبی (Peripherals) متصل به آن گذرگاه، اگر در طراحی یک بورد خاص مورد استفاده نباشند، ممکن است به‌طور دائم خاموش (Gated off) شوند.

## جستارهای وابسته

* دروازه‌سازی توان (Power gating)
* حذف پرش (Glitch removal)
* مقیایس‌بندی پویای فرکانس (Dynamic frequency scaling)
* عملکرد مستقل تجهیزات جانبی (Autonomous peripheral operation)

## منابع

* 
* 
*