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

برای شبیه‌سازی سخت‌افزار رایانه در لایه سیستم، لطفاً به شبیه‌سازی کامل سیستم رجوع کنید.

انواع شبیه‌سازی ریزمعماری
-------------------------

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

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

علاوه بر انواع ورودی، مقدار جزییات نیز می‌توان برای طبقه‌بندی شبیه‌سازی استفاده شود. به‌طور دقیق‌تر، نرم‌افزاری که یک ریزپردازنده را با استفاده از اجرای یک برنامه به صورت چرخه به چرخه شبیه‌سازی می‌کند، به‌عنوان شبیه‌ساز دقیق چرخه (cycle-accurate simulator) شناخته می‌شود، در حالی که شبیه‌ساز مجموعه دستورالعمل‌ها فقط اجرای یک برنامه بر روی یک ریزپردازنده را با استفاده از یک زمان‌بندی‌کننده دستور العمل‌ها با زمان‌بندی‌های بزرگ مدل‌سازی می‌کند. اکثر کلاس‌های علوم کامپیوتر در معماری کامپیوتر با تجربیات عملی، شبیه‌سازهای مجموعه دستورالعمل را به عنوان ابزاری برای آموزش استفاده می‌کنند، در حالی که شبیه‌سازهای دقیق چرخه به دلیل پیچیدگی‌ها و مصرف منابع، بیشتر برای پروژه‌های تحقیقاتی به کار می‌روند.

موارد کاربرد
------------

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

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

مثال‌ها
-------

* سایه (شبیه‌ساز مجموعه دستورالعمل مبتنی بر ردیابی)
* SimpleScalar (شبیه‌ساز مبتنی بر اجرا، چرخه دقیق)
* SPIM (محور اجرا، شبیه‌ساز مجموعه دستورالعمل)
* SMTSIM (شبیه‌ساز مبتنی بر اجرا، چرخه دقیق)

منابع
-----

1. ↑  Uhlig, R. A. , & Mudge, T. N. (2004). Trace-Driven Memory Simulation: A Survey. *ACM Computing Surveys*, 29(2), 128-170.
2. ↑  Burger, D. , & Austin, T. M. (1997). The Simplescalar Tool Set Version 2.0. *Computer Architecture News*, 25(3), 13-25.
3. ↑  Skadron, K. (1996). A Microprocessor Survey Course for Learning Advanced Computer Architecture. In Proceedings of the 2002 ACM SIGCSE Conference, 152-156.
4. ↑  Cmelik, R. F. , & Keppel, D. (1994). Shade: A Fast Instruction-Set Simulator for Execution Profiling. *ACM SIGMETRICS Performance Evaluation Review*, 22(1), 128-137.
5. ↑  Austin, T. , Larson, E. , & Ernst, D. (2002). SimpleScalar: An Infrastructure for Computer System Modeling. *IEEE Computer Magazine*, 35(2), 59-67.
6. ↑  Patterson, D. A. , & Hennessy, J. L. (2011). *Computer Organization and Design: The Hardware/Software Interface*, Morgan Kaufmann.
7. ↑  Tullsen, D. M. (1996). Simulation and Modeling of a Simultaneous Multithreading Processor. In Proceedings of the 22nd Annual Computer Measurement Group Conference.

پیوند به بیرون
--------------

* وب سایت رسمی SimpleScalar
* وب سایت رسمی SPIM
* شبیه ساز SMTSIM Multithreading