ایستگاه رزرو

'این صفحه در حال ویرایش است لطفا حذف نشود'

en : Reservation station

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

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

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

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

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

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

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

## منابع
معماری کامپیوتر: یک رویکرد کمی ، جان ال. هنسی، دیوید ای. پترسون، ۲۰۱۲ ( ) "3.4 غلبه بر خطرات داده با زمانبندی پویا"، صفحات 172-180
The Reservation Stations, HASE Project, Institute for Computing Systems Architecture, School of Informatics, University of Edinburgh, 2003

CS6290 Tomasulo’s Algorithm Archived 2014-12-08 at the Wayback Machine, Georgia Tech
Computer Architecture: A Quantitative Approach, John L. Hennessy, David A. Patterson, 2012 (ISBN 9780123838728) "3.4 Overcoming Data Hazards with Dynamic Scheduling", p 172-180
The Reservation Stations, HASE Project, Institute for Computing Systems Architecture, School of Informatics, University of Edinburgh, 2003

رده:پردازش دستورها

## رفرنس
شبیه‌ساز «Tomasulo’s Algorithm» در پروژهٔ HASE (دانشگاه ادینبرو)
* جزوهٔ معماری خارج از ترتیب (Georgia Tech)