Table of Contents

اصلاح مجدد کد برای سخت افزار مهندسی نسل بعدی

سیستم عامل های سخت افزاری مهندسی با سرعت بی سابقه ای در حال تحول هستند.از معماری های محاسباتی ناهمگن که CPU ها، GPU ها و FPGA ها را به شتاب دهنده های خاص دامنه برای هوش مصنوعی و پردازش سیگنال متصل می کنند، نرم افزار چشم انداز نه تنها کارآمد است، بلکه سازگاری یکپارچه در این سیستم عامل های متنوع دیگر اختیاری نیست - پیش نیاز برای عملکرد، قابلیت اطمینان و کارایی در آینده است که بدون تغییر ساختار اساسی آن، می تواند به عنوان بهبود درک دقیق و همچنین انطباق با توجه به عنوان یک روش های فنی و اصلاح مقررات جدید، به عنوان یک روش های فنی و اصلاح مجدد آن را به عنوان یک روش های فنی و اصلاح و اصلاح و اصلاح و اصلاح مقررات فنی، به عنوان بهبود بخشد.

چرا بازسازی برای سخت افزار بسیار مهم است

تکامل سخت افزار مهندسی

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

کد میراث به عنوان یک مانع

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

بهینه سازی عملکرد و آینده-Proofing

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

استراتژی های کلیدی برای بازسازی موثر

ویژگی های بازی Abstract Hardware

تنها گام موثر بازسازی، جداسازی کد مخصوص سخت افزار در پشت رابط های به خوبی تعریف شده است.استفاده از الگوی Strategy یا الگوی سخت افزاری برای اجازه دادن به backend های مختلف سخت افزار، به عنوان مثال، یک خط لوله پردازش داده ممکن است یک (FLT0) را با پیاده سازی جدید، و پشتیبانی از این نرم افزار را نشان دهد.

بهینه سازی برای Parallelism و Vectorization

حلقه های بازسازی و ساختارهای داده برای افشای موازی گرایی[ویرایش] جایگزینی عملیات متوالی با معادل موازی با استفاده از کتابخانه هایی مانند OpenMP .CUDA] جایگزین عملیات متوالی با استفاده از کتابخانه ها مانند oneAPI .] طرح داده های Restructure از آرایه-Structing به بخش های قابل توجه (Aring) و استفاده از S-Aring) نیاز دارد.

پیاده سازی لایه های انتزاع سخت افزار (HAL)

لایه انتزاعی سخت افزار [HAL] یک API سازگار در سراسر سیستم عامل های مختلف سخت افزار فراهم می کند، کد سطح بالاتر را از جزئیات سطح پایین تنظیم می کند، برای سیستم های جاسازی شده، HAL ممکن است GPIO را مدیریت کند، وقفه ها و تایمر برای محاسبات با عملکرد بالا، می تواند حافظه انتزاعی، تخصیص و هماهنگ سازی دستگاه را به طور معمول اتصال همه آنها را به تماس های دسترسی HIO، و اتصال دهد.

استخدام و اندازه گیری

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

استفاده از مدل سازی و تولید کد

برای اکوسیستم های سخت افزاری پیچیده، استفاده از روش های مبتنی بر مدل را در نظر بگیرید که مشخصات سطح بالا به طور خودکار به کد بهینه شده پلتفرم ترجمه می شوند. Tools مانند MATLAB / DSL یا DSLs (Domain-Specific Languages) می توانند کد تولید برای CPU، GPU و FPGA ها را از یک مدل واحد تولید کنند.

مزایای بازسازی سیستماتیک

مقیاس پذیری و عملکرد

Refactored codebases که موازیism و مقیاس انتزاعی را با ارتقاء سخت افزاری در نظر می گیرد.یک برنامه تک خواندن شده برای استفاده از Multi-threading می تواند سرعت های خطی را در CPU های چند هسته ای مشاهده کند.به طور مشابه، هسته های محاسباتی فشرده را به یک GPU از طریق یک بازده تعاملی یکپارچه از طریق بهبود خروجی های خروجی چشمگیر از طریق خروجی.

کاهش حفظ و نگهداری Overhead

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

آینده-تخر و انقراض

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

قرص های معمول و چگونگی اجتناب از آن

بیش از حد مهندسی کردن انتزاع

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

عدم نظارت بر آزمون و اعتبار

بازسازی ساختار داخلی، که می تواند نقص های ظریف را معرفی کند، یک مجموعه تست قوی را شامل می شود، از جمله تست های واحد، تست های یکپارچه و تست های سخت افزاری-in-the-loop، قبل از شروع، از ادغام مداوم برای اجرای این تست ها در تمام سیستم عامل های هدف پس از هر مرحله بازسازی استفاده کنید.

بازسازی بیش از حد در یک بار

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

بهترین روش ها برای یک طرح بازسازی موفق

ایجاد اهداف و معیارهای شفاف

تعریف آنچه موفقیت به نظر می رسد: کاهش زمان جمع آوری، بهبود نفوذ در یک پلت فرم هدف، یا کاهش زمان برای اضافه کردن یک backend جدید سخت افزار. Quantify این معیارها قبل و بعد از آن برای نشان دادن ارزش به ذینفعان.

دانلود بازی Involve Hardware and Software Team

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

استفاده از ابزار مدرن و استانداردهای

اتخاذ سیستم های ساخت متقابل پلتفرم (CMake، Bazel)، ابزارهای تجزیه و تحلیل استاتیک و فرمت های کد.استفاده از کنترل نسخه به طور گسترده، با شاخه های ویژگی و بررسی کد، از containerization (Docker، Podman) برای ایجاد محیط های ساخت بازتولیدی برای اهداف مختلف سخت افزاری استفاده کنید.

مستند معماری تصمیمات

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

ابزار سازی و تکنیک ها برای حمایت از بازسازی

تحلیل استاتیک و Linting

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

ابزارهای بازسازی خودکار

IDE ها و ابزارهای اختصاصی می توانند بسیاری از مراحل مکانیکی را خودکار کنند: نمادها تغییر نام، استخراج رابط ها و روش های متحرک.برای پایه های کد بزرگ، ابزارهایی مانند Resharper [C#]، Clang-Tidy [F3] (C / C++)، یا [F4:2IDE] ویژگی های سیستم می تواند سرعت بخش ویژوال (5) را تسریع کند.

ادغام مستمر برای اهداف متعدد

تنظیم خط لوله CI که کد را برای هر پلت فرم سخت افزاری هدف جمع آوری و آزمایش می کند، این امر مسائل سازگاری را در اوایل می گیرد.استفاده از ماتریس برای اجرای همان مجموعه تست در x86، ARM و اهداف GPU، اطمینان حاصل می کند که بازسازی هیچ پلتفرمی را شکستن نمی کند.

موضوع در نقطه: بازسازی برای شتاب GPU

یک کتابخانه پردازش تصویر میراث را در ابتدا برای CPU ها طراحی کرده است.کد با حلقه های سریال و ساختارهای داده AoS نوشته شده است.

  1. در این میان، از طریق استفاده از طرح های طراحی شده در یک صفحه ی استفاده می شود.
  2. ساختار داده های بازسازی شده به فرمت SoA برای بهبود دسترسی به حافظه زغال سنگ بر روی GPU.
  3. در این میان، یک بار از سوی دیگر، به سوی ، که به صورت همزمان با استفاده از آن ها کار می کند، استفاده می شود.
  4. اضافه کردن یک OpenMP backend برای سقوط CPU
  5. محاسبه GPU backend و occupancy هسته بهینه شده

نتیجه: سرعت 15x بر روی GPU در حالی که خروجی یکسان را حفظ می کند، سقوط CPU برای اشکال زدایی و سیستم های بدون GPU در دسترس باقی ماند. هزینه انتزاع تقریبا سه سرعت کوچک بود.

منابع خارجی برای خواندن بیشتر

برای درک عمیق تر از اصول بازسازی، به کار نیمه داخلی مارتین Fowler (FLT:0) رجوع کنید: بهبود طراحی کد موجود برای الگوهای انتزاعی سخت افزار [FLT]، سیستم IP Core ARM] [F3: اسناد برای تنظیم عملکرد در سخت افزار مدرن [F] ارائه می دهد [F] و در نهایت راهنمایی دقیق (FLT6:5.

نتیجه گیری

بازسازی سازگاری سخت افزار یک پروژه یک بار نیست، بلکه یک نظم و انضباط مداوم است.با انتزاع وابستگی ها، بهینه سازی برای موازییسم و استفاده از شیوه های سیستماتیک، تیم های مهندسی می توانند پایه های کد های سفت و سخت افزاری را به سیستم های انعطاف پذیر و با کارایی بالا تبدیل کنند که در سیستم های مختلف سخت افزاری رشد می کنند.سرمایه گذاری در بازسازی سود سهام در تعمیر و نگهداری کاهش یافته، سرعت بخشیدن به سرعت بخشیدن به سیستم های مهندسی، به طور موثر ادامه می دهد.