انبارهٔ کنترل

**انبارهٔ کنترل** (به انگلیسی: *Control store*) بخشی از واحد کنترل یک پردازنده است که ریزبرنامهٔ پردازنده را در خود نگه می‌دارد. 
این بخش معمولاً توسط یک ریزتوالی‌گردان (Microsequencer) خوانده می‌شود. 
اگر محتوای انبارهٔ کنترل بدون امکان تغییر ذخیره شده باشد، آن را حافظهٔ فقط‌خواندنی (ROM) یا ذخیره‌ساز فقط‌خواندنی (ROS) می‌نامند؛ 
اما اگر محتوای آن قابل تغییر باشد، چنین سیستمی «انبارهٔ کنترل قابل‌نوشتن» (WCS) نامیده می‌شود.
## پیاده‌سازی
### استفادهٔ اولیه
انباره‌های کنترل در ابتدا به‌صورت آرایه‌هایی از دیود پیاده‌سازی می‌شدند که از طریق رمزگشاهای نشانی مورد دسترسی قرار می‌گرفتند؛ 
روشی که گونه‌ای از حافظه فقط‌خواندنی محسوب می‌شد. 
این سنت به «ماتریس زمان‌بندی برنامه» در رایانهٔ MIT Whirlwind بازمی‌گردد که نخستین‌بار در سال ۱۹۴۷ توصیف شد.

پردازنده‌های مدرن مبتنی بر VLSI به‌جای آرایه‌های دیودی از ماتریس‌هایی از 
ترانزیستور اثر میدان برای ساخت ساختارهای ROM و/یا 
PLA استفاده می‌کنند؛ ساختارهایی که برای کنترل 
پردازنده و نیز ریزتوالی‌گردان داخلی آن در پیاده‌سازی‌های ریزبرنامه‌ای به‌کار می‌روند.

رایانه‌های آی‌بی‌ام سیستم/۳۶۰ از مجموعه‌ای از روش‌های متفاوت برای ساخت انبارهٔ کنترل استفاده می‌کردند:  
در مدل ۳۰ از CCROS (Card Capacitor Read-Only Storage)،  
در مدل ۴۰ از TROS (Transformer Read-Only Storage)،  
و در مدل‌های ۵۰، ۶۵ و ۶۷ از BCROS (Balanced Capacitor Read-Only Storage) بهره گرفته شده بود.

### انباره‌های قابل‌نوشتن
برخی رایانه‌ها با استفاده از «ریزبرنامهٔ قابل‌نوشتن» ساخته شده‌اند؛ 
به این معنا که به‌جای ذخیره‌کردن ریزبرنامه در ROM یا منطقِ سیم‌بندی‌شده، 
ریزبرنامه در نوعی RAM ذخیره می‌شود که انبارهٔ کنترل قابل‌نوشتن یا WCS نام دارد.
رایانه‌هایی از این نوع گاهی «رایانه‌های دارای مجموعه‌دستور قابل‌نوشتن» یا WISC نامیده می‌شوند.

بسیاری از این ماشین‌ها نمونه‌های آزمایشیِ آزمایشگاهی بودند؛ 
از جمله WISC CPU/16 و RTX 32P.

مدل‌های اولیهٔ سامانهٔ System/360 دارای انبارهٔ کنترل فقط‌خواندنی بودند، 
اما در مدل‌های بعدیِ System/360، System/370 و سامانه‌های پس از آن، بخشی یا تمام ریزبرنامه‌ها از طریق فلاپی‌دیسک یا دیگر ابزارهای ذخیره‌سازی DASD در زمان راه‌اندازی 
به یک انبارهٔ کنترل قابل‌نوشتن بارگذاری می‌شد که از حافظهٔ خواندن–نوشتن با سرعت بسیار بالا تشکیل می‌شد.

معماری System/370 قابلیتی به نام «بارگذاری اولیهٔ ریزبرنامه» یا **IML/IMPL** را شامل می‌شود 
که می‌تواند از طریق کنسول، در فرآیند Power On Reset (POR)، یا توسط یک پردازندهٔ دیگر در یک سامانهٔ چندپردازنده‌ای tightly coupled فراخوانی شود. 
این قابلیت به آی‌بی‌ام امکان می‌داد تا اشکالات ریزبرنامه را به‌سادگی در محل (field) برطرف کند.

حتی زمانی‌که بخش عمده‌ای از انبارهٔ کنترل در ROM قرار داشت، 
فروشندگان رایانه معمولاً انبارهٔ کنترل قابل‌نوشتن را به‌عنوان یک قابلیت اختیاری ارائه می‌کردند 
تا مشتریان بتوانند ریزبرنامهٔ دستگاه را مطابق نیاز خود سفارشی کنند. 
برخی فروشندگان — از جمله IBM — از انبارهٔ کنترل قابل‌نوشتن (WCS) برای اجرای ریزکد مربوط به 
قابلیت‌های شبیه‌ساز (emulator)  و همچنین برای انجام عیب‌یابی سخت‌افزاری استفاده می‌کردند.

برخی ماشین‌های تجاری که از ریزبرنامهٔ قابل‌نوشتن استفاده می‌کردند شامل 
سیستم‌های کوچک بَرو (Burroughs Small Systems) در دهه‌های ۱۹۷۰ و ۱۹۸۰، 
پردازنده‌های زیراکس در ماشین‌های لیسپ و ایستگاه‌های کاری Xerox Star، 
خانوادهٔ رایانه‌های DEC VAX 8800 (با نام «Nautilus») و همچنین ماشین‌های Symbolics سری L و G در دههٔ ۱۹۸۰ بودند.

برخی از ماشین‌های PDP-10 ساخت DEC، ریزبرنامهٔ خود را در تراشه‌های SRAM ذخیره می‌کردند 
(به پهنای حدود ۸۰ بیت در ۲٬۰۰۰ واژه) که معمولاً در هنگام روشن‌شدن (power-on) توسط یک پردازندهٔ جلویی دیگر (front-end CPU) بارگذاری می‌شد.

ماشین‌های بیشتری نیز انبارهٔ کنترل قابل‌نوشتنِ قابل‌برنامه‌ریزی توسط کاربر را به‌عنوان یک قابلیت اختیاری ارائه می‌دادند، 
از جمله HP 2100، مدل DEC PDP-11/60 و رایانه‌های سری V-70 ساخت Varian Data Machines.

دو رایانهٔ Mentec M11 و Mentec M1 نیز ریزبرنامهٔ خود را در تراشه‌های SRAM ذخیره می‌کردند 
و همانند نمونه‌های قبلی، هنگام روشن‌شدن آن را از طریق یک پردازندهٔ دیگر بارگذاری می‌نمودند. 
سامانهٔ  Data General Eclipse MV/8000 (با نام «Eagle») نیز دارای انبارهٔ کنترل قابل‌نوشتن مبتنی بر SRAM بود که هنگام روشن‌شدن از طریق یک پردازندهٔ جداگانه بارگذاری می‌شد.

انبارهٔ کنترل قابل‌نوشتن (WCS) چندین مزیت ارائه می‌دهد؛ از جمله سهولت اصلاح و وصله‌کردن 
ریزبرنامه و در برخی نسل‌های سخت‌افزاری، سرعت دسترسی بالاتر در مقایسه با ROM. 
WCSهای قابل‌برنامه‌ریزی توسط کاربر این امکان را فراهم می‌کنند که دستگاه برای کاربردهای خاص 
بهینه‌سازی شود. با این حال، این فناوری یک عیب مهم نیز داشت: 
دیباگ‌کردن برنامه‌ها را دشوارتر می‌کرد و همچنین می‌توانست به کاربران مخرب اجازه دهد تا 
به‌صورت بالقوه سیستم و داده‌ها را مختل کنند.

شماری از سیستم‌ها — از جمله Burroughs Small Systems، پردازندهٔ Rekursiv و تراشهٔ Imsys Cjip — 
از بارگذاری ریزبرنامه‌های متفاوت برای برنامه‌هایی که در زبان‌های برنامه‌نویسی متفاوت نوشته شده بودند 
پشتیبانی می‌کردند؛ به‌گونه‌ای که ریزبرنامهٔ هر زبان، مجموعه‌دستوری متناسب با آن زبان را پیاده‌سازی می‌کرد.

چندین پردازندهٔ شرکت اینتل در خانوادهٔ معماری x86 دارای ریزبرنامهٔ قابل‌نوشتن هستند؛ 
این قابلیت از پردازندهٔ Pentium Pro در سال ۱۹۹۵ آغاز شد. 
این ویژگی امکان داد که اشکالات موجود در ریزکد پردازنده‌های Intel Core 2 و Intel Xeon از طریق نرم‌افزار رفع شوند، 
بدون آنکه نیاز باشد کل تراشه تعویض گردد. چنین اصلاحاتی می‌توانند توسط سیستم‌عامل‌های لینوکس، 
FreeBSD، مایکروسافت ویندوز، یا 
BIOS مادربورد نصب شوند.

### زمان‌بندی، لچ‌کردن و جلوگیری از بروز حالت رقابتی
خروجی‌های انبارهٔ کنترل معمولاً از یک ثبات عبور می‌کنند. خروجی‌هایی که به ریزتوالی‌گردان 
(Sequencer) بازمی‌گردند تا نشانی ریزدستور بعدی را تعیین کنند، باید از نوعی ثبات عبور کنند 
تا از ایجاد یک حالت رقابتی (Race Condition) جلوگیری شود.

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

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

در گذشته امکان خرید EPROMهایی وجود داشت که این بیت‌های ثبات را نیز روی همان تراشه در خود جای داده بودند.

سیگنال ساعت (Clock) که نرخ کلاک ــ یا زمان چرخهٔ سیستم ــ را تعیین می‌کند، عمدتاً این ثبات را کلاک می‌کند.

## منابع



رده:میان‌افزار
رده:سفت‌افزار
رده:پردازش دستورها