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

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

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

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

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

مروری بر معماری اویونیک

در دهه 70 میلادی سیستم‌های الکترونیک هوایی بر اساس «معماری وابسته

[1]» ارائه می‌شدند. در این معماری هر برنامه نرم‌افزاری نماینده یک تابع سیستم (یا زیر سیستم) نظیر کنترل یک عملگر یا مدیریت خلبان خودکار بود که توسط یک کامپیوتر اختصاصی اجرا می‌شد. نخستین چالش بهینه‌سازی در اوایل دهه 90 با هدف کاهش تعداد کامپیوترها به منظور کاهش حجم، وزن و انرژی و ساده‌سازی تعمیر و نگهداری معماری‌های وابسته ظاهر شد. بنابراین اظهارات اولیه برای ارائه معماری بسیار متمرکز که تحت عنوان معماری «اویونیک ماژولار یکپارچه[2]» (IMA) مرسوم است، در سال 2005 مطرح شد. در این معماری از یک سخت‌افزار مشترک برای اجرای چند برنامه‌ کاربردی اویونیک استفاده می‌شود.

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

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

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

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

  روند اصلی تغییر معماری اویونیک

استفاده از سیستم‌های باز و ساختار شبکه‌ای، روند اصلی تغییر معماری اویونیک

چالش‌ها و وضعیت فعلی اویونیک

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

حرکت از معماری وابسته به معماری IMA چند هسته‌ای
حرکت از معماری وابسته به معماری IMA چند هسته‌ای

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

پردازنده‌های تک هسته‌ای

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

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

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

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

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

در حال حاضر توسعه فناوری چند هسته‌ای برای رفع نیازهای صنایع با الزامات ایمنی قوی در حال ارزیابی است. این همان چیزی است که توسط یک کنسرسیوم متشکل از 30 شرکت از صنایع و دانشگاه‌ها در پروژه‌ای به نام «سیستم‌های چندهسته‌ای در صنایع خودرو، راه‌آهن و اویونیک» (ARAMiS[3]) تحقق یافته است.

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

  • جداسازی: چطور از ایزوله بودن خطا در برنامه‌های کاربردی ترکیبی با تعداد زیادی منابع مشترک به ویژه گذرگاه‌های داده، اطمینان حاصل کرد؟
  • پیش‌بینی‌پذیری: چگونه از مدت زمان اجرای مورد نیاز برنامه‌های مختلفی که روی واحدهای اجرایی متقارن (همزمان) اجرا می‌شوند می‌توان مطمئن شد؟ این در حالیست که منابع مشترک (حافظه، گذرگاه و غیره) به اشتراک گذاشته شده است.
  • یکپارچگی: این مورد می‌تواند ریسک تاثیرات یک یا چند رویدادی ([4]SEE/MEE) را افزایش دهد، در نتیجه آیا شاهد نزول تشعشعات ناشی از کاهش مداوم اندازه ترانزیستورها با وجود مکانیزم‌های پردازنده‌های چند هسته‌ای و افزونگی سیستم‌ها خواهیم بود؟
  • هزینه‌های صدور گواهینامه: چه جنبه‌های دیگری بر هزینه‌های صدور گواهینامه پردازنده‌های چندهسته‌ای تاثیر می‌گذارد؟
  • کارایی: کدام یک از معماری‌های چند هسته‌ای در بهترین حالت بدون هدر رفتن کارایی موجود در زمینه‌های اویونیک استفاده شود؟

 معماری چند هسته‌ای پایه

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

بلوک دیاگرام انتزاعی از معماری چندهسته‌ای

بلوک دیاگرام انتزاعی از معماری چندهسته‌ای

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

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

ایمنی

  • افزونگی یکپارچه داخل پردازنده‌ها
  • تشخیص و تصحیح اثرات تشعشعی روی تمام ماژول‌های حافظه، گذرگاه داده و آدرس
  • ماژول سخت‌افزاری مانند واحد بررسی افزونگی دوره‌ای 32 بیتی (CRC-32) برای بررسی لحظه‌ای اطلاعات جاری در تراشه
  • ژنراتور کلاک داخلی علاوه بر ژنراتور خارجی به عنوان ناظر و پشتیبان‌گیر برای کل پردازنده
  • نظارت‌های مبتنی بر سخت‌افزار برای بررسی یکپارچگی I/O
  • ماژول ایمنی مبتنی بر سخت‌افزار مرکزی

جداسازی

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

  • وجود تنها یک حافظه مشترک به عنوان مسیر ارتباطی
  • اتصال فیزیکی هر واحد جانبی تنها به یک هسته
  • در نظر گرفتن یک بخش اختصاصی از نیمه ‌هادی برای هر هسته
  • حافظه جداگانه برای داده و برنامه در هر هسته
  • مکانیزم حفاظت از حافظه در هر هسته (مانند: [5]MMU/MPU)
  • حالت ناظر ماشین مجازی (Hypervisor) در هر هسته
  • مفهوم Process-ID برای ساده‌سازی پارتیشن‌بندی برای هر هسته
  • حافظه مشترک قابل محافظت در هر هسته یا حتی قابل تنظیم در هر فرآیند
  • کنترل‌کننده زمان وقفه در هر هسته
  • مکانیزم داوری گذرگاه

پیش‌بینی‌‌پذیری

  • حافظه خصوصی و بزرگ برای هر هسته
  • هسته‌های جداگانه قابل تنظیم برای مدیریت ورودی/خروجی
  • اتصال داخلی جداگانه برای دسترسی به واحد‌های ورودی/خروجی جانبی تراشه
  • حافظه کَش قابل پارتیشن‌بندی برای هر هسته

صدور گواهینامه

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

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

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

استفاده از پلتفرم‌های چند هسته‌ای عمومی

در سال 2012 آژانس ایمنی هوایی اتحادیه اروپا در پروژه‌ای با نام مولکورس[6] به بررسی استفاده از پردازنده‌های چند هسته‌ای در سیستم‌های هواپیما پرداخت. نتیجه این پروژه انتشار یک سند 163 صفحه‌ای بود که در آن به طور مفصل ملاحظات این فناوری بیان شده است. در این پروژه قابلیت‌های چند مدل از پردازنده‌های چند هسته‌ای مانند Freescale P4080 (8 هسته)، TMS320C6678 شرکت تگزاس اینسترومنت (8 هسته) و ARM Cortex-A15 (4 هسته) مورد بررسی قرار گرفته است.

Freescale P4080

این پردازنده دارای 8 هسته است که می‌توانند به طور کاملا مستقل فعالیت کنند. در واقع P4080 به منظور پاسخ‌گویی به تقاضاهای فراوان برای پردازنده‌ای با توان محاسباتی بالا طراحی شده است. با این حال P4080 تنها دو کنترل‌کننده حافظه DDR برای 8 هسته به کار می‌گیرد. این مورد به علاوه برخی محدودیت‌های دیگر سبب می‌شود تا پیش‌بینی‌پذیری سیستم بدون انجام برنامه‌نویسی پیچیده امکان‌پذیر نباشد. همچنین P4080 از ویژگی‌های ایمنی مطلوبی مانند کد تصحیح خطا (ECC[7]) برای تمامی نواحی حافظه برخوردار نیست. مشکل دیگر آن عدم ارائه اسناد معتبر (فنی، طراحی، ایمنی و غیره) به ویژه برای بخش‌هایی از پردازنده است که موجب ایجاد چالش هنگام دریافت گواهینامه محصول نهایی می‌شود.

بلوک دیاگرام Freescale P4080

بلوک دیاگرام Freescale P4080

Freescale i.MX6

مثال دیگری از یک پردازنده عمومی بالقوه برای استفاده در سیستم‌های اویونیک پرقدرت، پلتفرم i.MX6 است. هرچند این پلتفرم چندهسته‌ای برای برنامه‌های کاربردی با سطح ایمنی بالا مناسب نیست، اما چند شتاب‌دهنده گرافیکی و رابط‌های نمایشگر، آن را مورد توجه طراحان قرار داده است. این پلتفرم بر پایه 4 هسته ARM Cortex A9 است و از چند پردازنده کمکی بهره می‌برد. این پردازنده در واقع دارای قدرت پردازشی بالایی بوده و برای استفاده در صنعت خودروسازی توسعه یافته است، اما گزینه مطلوبی برای سیستم‌های ایمنی- بحرانی محسوب نمی‌شود. همچنین وجود تعداد زیادی رابط مولتی‌مدیا برای سیستم‌های جانبی که در کاربردهای اویونیک بدون استفاده هستند، امکان بروز خطا خاموش را افزایش می‌دهد.

نتیجه‌گیری

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

[1] Federated Architecture

[2] Integrated modular avionics

[3] Automotive, Railway and Avionics Multicore Systems

[4] Single/Multiple Event Effects

[5] Memory Management Unit/Memory Protection Unit

[6] Use of MULticore proCessORs in airborne Systems (MULCORS)

[7] Error-Correcting Code