[1] در محصولات الکترونیکی مدرن از سه دیدگاه به طور چشمگیر تکامل یافتهاند.
- مقیاس: استفاده از نرمافزارهای تعبیه شده روی پلتفرمهای سختافزاری استاندارد به طور فزایندهای رایج شده است. یکی از دلایل این موضوع افزایش قیمت تولید تراشههای سفارشی است که تولیدکنندگان را به سمت استفاده از تراشههای رایج در بازار سوق میدهد. این باعث میشود سطح مطلوب کد مورد نیاز برای هر پروژه و تلاش برای تولید آن بالا رود.
- پیچیدگی: معماریهای پردازنده چند هستهای به طور مداوم در حال بهبود هستند و عملکرد و قابلیتهای لازم را برای برآوردن نیازهای محصولات مدرن فراهم میکنند. با این حال کدنویسی این پردازندههای جدید به طور نمایی پیچیدهتر از نسلهای گذشته شده است.
- کیفیت: الزامات عملکرد و کیفیت محصولات الکترونیکی مدرن به طور چشمگیری در حال افزایش است. به عبارتی کیفیت محصولات تلورانس صفر را برای اشکالات پس از تولید نشان میدهد.
در گذشته توسعه و تایید نرمافزار تعبیه شده به طور معمول با اجرای کد روی یک نمونه اولیه از پلتفرم سختافزاری انجام میشد. اینکار تا زمانیکه تیم پروژه به یک سیستم کاری مطمئن دست پیدا کند، ادامه داشت. به همین دلیل این راهحل زمانگیر بوده و از لحاظ کیفیت و سختی کاربرد، غیر قابل اطمینان و نامعتبر است. همچنین این راهکار برای توسعه نرمافزار تعبیه شده نسل بعد غیر عملی است.
از اینرو ارائه پلتفرمهای مجازی میتواند جایگزین مناسبی برای نمونههای سختافزاری باشد. مدلهای نرمافزاری از بخشهای کلیدی در یک پلتفرم پردازنده برای تشکیل یک زیرسیستم اجرایی تشکیل میشوند. این مدلها باید علاوه بر قابلیت اجرای درست کد، دارای یک سطح انتزاعی به منظور ایجاد عملکرد لازم برای تستهای دقیق باشند.
پلتفرمهای مجازی معمولی شامل مجموعهای از «دستورالعملهای دقیق[2]» یا IA، مدلهای پردازنده همراه با بلوکهای حافظه و همچنین لوازم جانبی کلیدی هستند. پلتفرمهای مجازی باید به اندازهای دقیق طراحی شوند که گروه نرمافزار نتوانند ادعا کنند برنامه آنها روی سختافزار واقعی اجرا نشده است. در واقع نرمافزار باید بدون هیچگونه تغییری امکان اجرا روی پلتفرم را مشابه با فضای سختافزاری داشته باشد. پلتفرمهای مجازی ممکن است به ابزارهای توسعه نرمافزار تعبیه شده متصل شوند تا یک محیط جامع را برای تایید و تجزیه و تحلیل کد فراهم کنند.
مزایای پلتفرمهای مجازی در طراحی و توسعه سیستمهای مدرن ترکیبی سختافزار/ نرمافزار عبارتند از:
- توسعه اولیه: معمولا پلتفرمهای مجازی بسیار سریعتر از معادل سختافزاریشان قابل دسترس هستند. این ویژگی اجازه میدهد تا توسعه نرمافزار تعبیه شده اغلب ماهها پیش از زمان ورود محصول به بازار شروع شود.
- قابلیت مشاهده و کنترل: نمونه اولیه سختافزاری دسترسی به نمایش رجیسترهای داخلی و سیگنالها را محدود میکند و هیچ فرصتی برای تغییر یا کنترل سختافزار یا نرمافزار وجود ندارد. اما در پلتفرمهای مجازی ساخته شده، همهی گرهها قابل مشاهده است و ممکن است بخشی از کنترلها در طول اجرا اعمال شوند. این امکان به منظور ایجاد ابزاری قدرتمند برای تایید و صحتسنجی محصول ضروری است.
- ارائه دید کامل: یک پلتفرم مجازی دید کاملی از سیستم میدهد. در هر زمان کاربر میتواند اطلاعات مربوط به هر بخش از سیستم (هسته پردازنده، گذرگاهها، لوارم جانبی، مدلهای محیطی) را دریافت کند و در آخر اطلاعات میتواند در قالبهای مختلف توسط کاربر نهایی مورد تحلیل قرار گیرد.
- قطعیت: از آنجا که توانایی بازسازی متناوب مشکلات و رویدادهای زمانی پیچیده روی سختافزار فیزیکی دشوار است، استفاده از پلتفرم مجازی معقولتر است. یک پلتفرم مجازی در قالب تکرارپذیری یک مورد آزمایشی، قطعیت را نشان میدهد. در واقع کاربر میتواند هر بار یک رفتار مشابه و دقیق را دریافت کند.
- عملکرد و قابلیت دسترسی: پلتفرمهای سختافزاری اغلب در مراحل اولیهی تولید دسترسی محدودی دارند. بنابراین میزان آزمایشی که قابل انجام است، محدود میشود. در صورتیکه پلتفرمهای مجازی میتوانند روی همهی پلتفرمهای محاسباتی موجود تکرار شوند و اجازه استفاده همزمان اعضا در تیمهای بزرگ یا بسیاری از پلتفرمهای تست که موازی هستند، داده میشود. علاوه بر این اگر پلتفرمهای مجازی با دقت ساخته شوند، میتوانند سریعتر از سختافزار نهایی واقعی اجرا شوند و اجازه چرخههای تست گسترده داده شود.
- بهبود تعاملات: یک پلتفرم مجازی تعامل گروه را بهینهسازی میکند. پلتفرم مجازی وضعیت فعلی سیستم طراحی شده را نشان میدهد و به راحتی میتواند بین تیمها به اشتراک گذاشته شود. همچنین پلتفرم مجازی ارتباط و تعامل بین تیمهای طراحی سختافزار و نرمافزار را بهبود میبخشد.
هنگامی که یک مهندس معماری سیستم از رویکرد قدیمی مبتنی بر سختافزار استفاده میکند، ممکن است چند هفته یا ماه برای تعیین پیکربندی بهینه سیستم، زمان نیاز داشته باشد. در این شرایط وی چند مورد آنالیز و معیارهای اجرایی را روی بوردهای مرجع (با فرض در دسترس بودن سختافزار) انجام میدهد، با این حال به دلیل عدم امکان اتصال تمامی بخشهای فیزیکی سیستم موارد و احتمالات بسیاری ممکن است از چشمان او دور بماند. مشکل دیگر این روش عدم امکان استفاده از فناوریهای جدید در معماری به دلیل در دسترس نبودن نمونه اولیه سختافزاری برای طراح است. اما در صورتی که برای یکپارچهسازی همین سیستم از پلتفرم مجازی استفاده شود، فرایند تعیین پیکربندی بهینه میتواند در چند روز انجام شود. در این صورت طراح نیازی به بازطراحی دائم سختافزار نداشته و محدودیتهایی مانند خرید و انتقال سختافزار، اعمال منابع تغذیه و اتصال تجهیزات مختلف به یکدیگر وجود ندارد.
ابزار SIMICS
شرکت ویندریور اخیرا ابزاری با نام Simics را ارائه کرده است که میتواند یک پلتفرم اشتراکی برای توسعه نرمافزار با شبیهسازی کامل سختافزار هدف ایجاد کند. کاربر توسط این ابزار میتواند یک سیستم هدف را بدون هیچگونه تغییری در بخشهای مختلف نرمافزار (همچون بوتلودرها، بایوس، سیستمعامل، بستههای پشتیبانی از بورد، میانافزارها و برنامههای کاربردی) شبیهسازی کند.
طراحی این ابزار به گونهای است که کاربر میتواند یک سیستم کامپیوتری را با هر اندازه و هر سطح از پیچیدگی شبیهسازی کند. ابعاد سیستم هدف میتواند از یک پردازنده کوچک تا یک بورد کامل، یک رک از بوردها، سیستمهای توزیعشده همچون تجهیزات اویونیک، شبکه انتقال داده، سیستمهای کنترل صنعتی یا شبکه تلفن همراه باشد.
شبیهسازی کامل یک سیستم
ابزار Simics علاوه بر شبیهسازی پردازندهها میتواند سایر بخشهای سختافزار مانند، دستگاههای جانبی، دیسکها و شبکهها را معادلسازی کرده و یک مدل سیستمی کامل و صحیح را برای میزبانی از نرمافزار فراهم کند. شبیهسازی در این ابزار بسیار سریع انجام میشود و بارگذاریهای نرمافزاری کاملا مشابه با دنیای واقعی است.
سیستم هدف برای شبیهسازی در Simics میتواند در هر سطحی از پیچیدگی باشد.
پلتفرمهای مجازی ایجاد شده در Simics با انعطافپذیری بالا سرعت توسعه محصول را در تمامی فازهای چرخه تولید شتاب میدهند (شکل زیر). فعالیتهایی مانند تهیه سختافزار، یکپارچهسازی سیستم و تست میتواند پیش از زمان در دسترس بودن سختافزار فیزیکی آغاز شود. علاوه بر این کاربران میتوانند سناریوهای مختلفی را از جنبههای متفاوت به صورت همزمان یا جداگانه برای تست محصول، به شبیهساز اعمال کنند. همانطور که در شکل زیر نشان داده شده است استفاده از Simics به جای سختافزار واقعی میتواند علاوه بر کوتاه کردن زمان توسعه، ریسک و هزینههای پروژه را کاهش داده و کیفیت محصول را افزایش دهد.
افزایش سرعت مراحل توسعه محصول با ایجاد پلتفرم مجازی در Simics
کاهش ریسک، زمان آمادهسازی و هزینههای محصول با ایجاد پلتفرم مجازی در Simics
ابزارهای SIMICS
ابزار Simics شرکت ویندریور شامل تعدادی محصول است که در ترکیب با یکدیگر یک رویکرد ماژولار برای رفع نیازهای مشتری فراهم میکنند.
- Simics Hindsight: این محصول بخش اصلی Simics را تشکیل میدهد. برای اجرا و کنترل شبیهسازیها و مدیریت رابط کاربری این محصول مورد نیاز است. در واقع این مورد به کاربر اجازه بارگذاری پلتفرمها و توابع و همچنین آغاز و توقف اجرای برنامه را میدهد.
- Simics Analyzer: این بخش امکان تحلیل و بررسی و همچنین اشکالیابی برنامههای کاربردی نرمافزاری را فراهم میکند. در حالیکه بخش Hindsight یک نمایش از سختافزار سیستم است، بخش Analyzer تصویری از محتوای نرمافزاری برنامهکاربردی اجرا شده روی سیستمعامل هدف را ارائه میدهد. کاربر از طریق این ابزار میتواند لیست کاملی از فرایندهای سیستم را مشاهده کرده و مطلع شود که هر کدام از پردازندهها و سیستمعاملها در حال اجرای چه چیزی هستند. قابلیت خط زمانی تعریف شده برای این ابزار به کاربر اجازه میدهد تا یک گزارش با عنوان «چه چیزی در کجا و چه موقع اجرا شده است» را برای تمامی فرایندهای سیستم در قالبهای مختلف از جمله گراف زمانی مشاهده کند. همچنین یک قابلیت اشکالیابی برای این ابزار در نظر گرفته شده است که میتواند برای کدهای C و C++ مورد استفاده قرار گیرد.
- Simics Model Builder: این ابزار به کاربر اجازه ایجاد، اصلاح و پیکربندی هر مدل یا پلتفرم مجازی با اندازههای مختلف (از یک بورد با تنها یک CPU تا سیستمهای شبکهای پیچیده و چند هستهای) را میدهد. مدلها میتوانند توسط کدهای C، C++، SystemC و پایتون ایجاد شوند. مدلهای ایجاد شده به منظور محافظت میتوانند توسط برنامه قفل شده و شرکت سازنده میتواند برای سیستمهای باز مدل محصول خود را در قالب یک کتابخانه در دسترس عموم قرار دهد.
- Simics Extension Builder: کاربر با استفاده از این ابزار میتواند محیط Simics را برای یکپارچهسازی با ابزار شبیهسازی دیگر شرکتها توسعه دهد. این کار از طریق تبادل یک API قابل دریافت از این ابزار انجام میشود.
- Simics Accelerator: این ابزار به کاربر این اطمینان را میدهد که صرف نظر از پیچیدگی مدل، شبیهسازی با سرعت کافی انجام میشود و نرمافزار روی یک پلتفرم مجازی دقیقا معادل سختافزار واقعی اجرا میشود. این ابزار منابع کافی را در اختیار همه سختافزارهای مدل شده در برنامه قرار میدهد. این منابع میتواند از طریق هستههای یک پردازنده در رایانه میزبان یا هستههای پردازنده در یک شبکه از رایانهها اختصاص داده شوند.
- مدلها و پلتفرمهای مجازی Simics: شرکت ویندریور به منظور تسهیل فرایند طراحیها، به کاربران استفاده از پلتفرمهای مجازی از پیش پیکربندی شده (PCVP) و پلتفرمهای مجازی اختصاصی مشتری (CSVP) را پیشنهاد میدهد. PCVPها بستههای پیش ساختهای هستند که یک مدل دقیق از بوردهای تجاری استاندارد یا بوردهای مرجع تولید شده توسط شرکتهای مطرح نیمههادی را ارائه میدهند. کاربر میتواند مستقیما از PCVPها و CSVPها استفاده کند یا اینکه اصلاحات مربوط به خود را به آنها اعمال کند.
- کتابخانه مدلها: ابزار Simics شامل یک کتابخانه گسترده از مدلهای مجازی سیستمهای سختافزاری است. حتی در صورتی که مدل سیستم مورد نظر کاربر در کتابخانه موجود نباشد، مدل میتواند توسط شرکت ویندریور یا خود مشتری و از طریق ابزار Model Builder ایجاد شود.
در لیست زیر بخشی از سیستمها و تجهیزاتی که مدلهای آنها در کتابخانه Simics موجود است آورده شده است.
[1] embedded software
[2] Instruction Accurate