تداخل در پردازنده چند‌هسته‌ای

تداخل در پردازنده چند‌هسته‌ای

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

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

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

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

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

یک معماری استاندارد برای سیستم‌های اویونیک آینده

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

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

از این‌رو بدون یک راه‌حل کلی برای کاهش تداخلات چند‌هسته‌ای، هرگونه تغییر نرم‌افزار یا بهینه‌سازی نیاز به آزمایش‌های مجدد و تجزیه‌و‌تحلیل کل سیستم دارد که این برخلاف اهداف IMA است.

نمایشگر چندمنظوره شرکت کالینز

شکل 1- نمایشگر چندمنظوره شرکت کالینز با طراحی چند‌هسته‌ای

کانال تداخل

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

حتی اگر سیگنال‌‌های کنترلی یا جریان داده مستقیمی بین برنامه‌ها در یک سیستم چندهسته‌ای وجود نداشته باشد، کوپلینگ در سطح پلتفرم وجود دارد که می‌تواند باعث اختلال در برنامه‌ها شود. طبق سند منتشر شده (CAST-32A) توسط تیم ارزیابی نرم‌افزار در FAA، این ویژگی پلتفرم که می‌تواند باعث ایجاد تداخل بین برنامه‌های مستقل شود، کانال تداخل (Interference Channel) نامیده می‌شود.

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

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

کانال تداخل در معماری چندهسته‌ای

شکل 2- مثالی ساده یک کانال تداخل در معماری چندهسته‌ای

استانداردهای نظامی اویونیک

استاندارد DO-178C یک سند معتبر است که FAA و EASA از آن برای کلیه صدور گواهینامه سیستم‌های نرم‌افزاری در پلتفرم‌های هوانوردی غیرنظامی استفاده می‌کنند. پس از گذشت سال‌ها، این استاندارد تبدیل به یک سند طلایی برای سیستم‌های اویونیک نظامی نیز شده است. پیچیدگی‌های این سند باعث شد تا FAA مکمل CAST-32A را با عنوان «پردازنده‌های چندهسته‌ای» به آن اضافه کند. تجزیه و تحلیل زمان‌بندی هدف اصلی این مکمل است. طراحی سیستم بر اساس این سند مستلزم شواهدی است که نشان می دهد همه اجزای نرم‌افزار میزبان به درستی کار می‌کنند و زمان کافی برای تکمیل اجرای آنها هنگام کار در محیط چندهسته‌ای وجود دارد.

همچنین در آوریل سال 2019 اداره صلاحیت پرواز ارتش ایالات متحده یک سند با عنوان «نیازمندی‌های صلاحیت پرواز در پردازنده‌های چندهسته‌ای[1]» منتشر کرد که هدف آن تعیین مجموعه‌ای از نیازمندی‌های اولیه برای سیستم‌های اویونیک چندهسته‌ای است. در نهایت سیستم‌های دنبال‌کننده این سند باید اجرای قطعی وظایف را در یک محیط چندهسته‌ای تضمین کنند.

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

تاثیر تداخل چندهسته‌ای

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

در ساده‌ترین حالت با داوری منصفانه در دسترسی به منابع، دو هسته سعی در دستیابی همزمان به منابع مشترک با روشی یکسان دارند، بنابراین هرکدام نیمی از پهنای باند آن منبع را دریافت می‌کنند. به طور مشابه چهار هسته می‌توانند یک چهارم از پهنای باند را اشغال کنند. از این‌رو داشتن یک برنامه کاربردی در بالاترین سطح تضمین طراحی (DAL A) 4 برابر بیشتر طول می‌کشد که این بسیار نامناسب است. همچنین در بدترین شرایط، دسترسی‌ها همیشه یکسان نیست و داوری همیشه عادلانه نخواهد بود.

شکل 3 نمونه ای از پهنای باند دسترسی به حافظه برای برنامه‌های کاربردی DAL A و DAL C روی پردازنده‌های مختلف را نشان می‌دهد که سعی در دسترسی همزمان به DRAM دارند.

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

 پهنای‌باند دسترسی به حافظه

شکل 3- مثالی از پهنای‌باند دسترسی به حافظه برای دو برنامه کاربردی با سطح تضمین طراحی A و C

راه‌حل‌های جایگزین برای کاهش تداخلات

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

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

موتور دستیابی مستقیم به حافظه (DMA) منبعی است که مدیریت دقیق‌تری دارد. کامپیوترهایی که موتور DMA دارند، نسبت به کامپیوترهای بدون موتور DMA، می‌تواند اطلاعات را به/یا از دستگاه‌ها با سربار بسیار کمتری برای پردازنده انتقال دهند.

اما بخش عمده‌ای از تداخلات چندهسته‌ای را نمی‌توان از بین برد فقط می‌توان کاهش داد. رویکردهای کاهشی می‌تواند بسیار متفاوت باشد، از «فقط با آن مقابله کنید» تا «کنترل خودکار و دقیق دسترسی به منابع مشترک» که استفاده از منابع مشترک را به‌طور دقیق نظارت و کنترل می‌کند.

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

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

استفاده از قابلیت‌های سیستم‌عامل

طراحان سیستم‌عامل‌ها در تلاش برای ارائه راه‌کارهای ساده در برای کاهش تداخلات پلتفرم‌های چندهسته‌ای هستند. از این میان سیستم‌عامل‌هایی همچون VxWorks، Integrity و lynxOS توانسته‌اند با ارائه نسخه‌هایی مختص سیستم‌های چندهسته‌ای و سازگار با استانداردهای هوانوردی، سهم زیادی از بازار صنایع اویونیک را از آن خود کنند.به عنوان مثال سیستم‌عامل بلادرنگ NTEGRITY®-178 tuMP™  به صراحت برای پاسخگویی به چالش‌های استفاده از بیشتر پردازنده، قابلیت حمل برنامه و عملکرد واقعی IMA طراحی شده است. ضمن اینکه تداخل چندهسته‌ای را کاهش می‌دهد، نیازمندی‌های یک سیستم‌عامل برای عملیات ایمنی-بحرانی سطح DAL A در استانداردDO-178B/C  را تامین می‌کند. این سیستم‌عامل بلادرنگ روی معماری‌های Arm، Intel و Power در دسترس است و اصول کلیدی IMA که شامل ادغام، قابلیت حمل، پایداری و استفاده مجدد هستند را برای فعال کردن قابلیت‌های بیشتر و کاهش هزینه چرخه عمر ارائه می‌دهد.

می‌توان گفتINTEGRITY-178 tuMP  یک سیستم عامل با اطمینان بالاست که از نظر ایمنی و امنیت تایید شده است. این سیستم عامل پارتیشن‌بندی فضای حافظه، زمان پردازش و منابع پردازنده را برای اطمینان از انجام برنامه‌های ایمنی-بحرانی به‌صورت بلادرنگ فراهم می‌کند.

جمع‌بندی

استفاده از پردازنده‌های چندهسته‌ای Arm، Intel و Power در سیستم‌های امنیتی و ایمنی-بحرانی معماری اویونیک ماژولار یکپارچه، به دلیل تغییرات اساسی در زمان اجرای بدترین حالت که ناشی از درگیری برای دسترسی به منابع مشترک است، چالش‌هایی را برای ایمنی ایجاد می‌کند. تاثیر چنین مداخلات چندهسته‌ای می‌تواند قابل توجه باشد و از این‌رو کاهش تداخلات بهترین کار برای پشتیبانی از سیستم‌عامل است.

راه‌حل‌هایی مانند کنترل دانه ریز پهنای باند سیستم می‌تواند باعث کاهش تداخلات شود. در کنار این رویکرد، استفاده از سیستم‌عامل‌هایی مانند INTEGRITY-178 به طراحان کمک می‌کند ضمن استفاده از ابزارهای مختلف برای کاهش تداخلات، زمان و هزینه‌های توسعه سیستم را کاهش دهند.

منابع:

https://www.rapitasystems.com/multicore-timing

http://interactive.aviationtoday.com/interference-poses-biggest-challenge-to-using-multicore-processors-in-avionics/

https://www.ghs.com/download/whitepapers/GHS_multicore_interference.pdf

[1] Multi-Core Processor (MCP) Airworthiness Requirements

اگر مطلب برای شما مفید بود آن را در شبکه‌های اجتماعی به اشتراک بگذارید. بسترهای خود را انتخاب کنید!

سایر مقالات علمی و محتوای آموزشی پژوهشکده اویونیک