معماری مختص دامنه

**معماری مختص دامنه(DSA)،** یک معماری کامپیوتری قابل برنامه‌ریزی است که به طور خاص برای عملکرد بسیار کارآمد در محدوده یک دامنه کاربردی مشخص طراحی شده است.این اصطلاح اغلب در تضاد با معماری‌های همه منظوره، مانند CPUها ، که برای کار بر روی هر برنامه کامپیوتری طراحی شده‌اند، استفاده می‌شود.

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

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

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

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

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

یک نمونهٔ اولیهٔ قابل‌توجه از معماری‌های قابل‌برنامه‌سازیِ خاص‌دامنه، **[[GPU|پردازنده‌های گرافیکی (GPU)]]** هستند. این سخت‌افزارهای تخصصی به‌طور ویژه برای کار در حوزهٔ پردازش تصویر و گرافیک کامپیوتری توسعه داده شدند.این واحدهای پردازشیِ قابل‌برنامه‌ریزی هم در کنسول‌های بازی و هم در رایانه‌های شخصی به‌طور گسترده مورد استفاده قرار گرفتند.با پیشرفت پشتهٔ سخت‌افزار/نرم‌افزار برای GPUهای انویدیا و AMD، این معماری‌ها بیش از پیش برای شتاب‌دهی به وظایف **[[شدیداً موازی (رایانش)|بسیار موازی (Massively Parallel)]] و** کاملاً مستقل (Embarrassingly Parallel) به کار گرفته می‌شوند؛ حتی **خارج از حوزهٔ پردازش تصویر.**

از زمان احیای هوش مصنوعی مبتنی بر یادگیری ماشین در دههٔ ۲۰۱۰، چندین معماریِ خاص‌دامنه برای **تسریع انجام استنتاج (Inference)** در انواع مختلف شبکه‌های عصبی مصنوعی توسعه یافته‌اند.

برخی نمونه‌ها عبارت‌اند از:

* '''TPU'''‌ های شرکت گوگل،
* NVDLA شرکت انویدیا،
* و MLP شرکت ARM.

## دستورالعمل‌هایی برای طراحی DSA
جان هنسی و دیوید پترسون پنج اصل برای طراحی DSA را تشریح کردند که منجر به بهره‌وری بهتر در مساحت و صرفه‌جویی در انرژی می‌شود. هدف در این نوع معماری اغلب کاهش هزینه‌های مهندسی غیرتکراری (NRE) نیز هست تا سرمایه‌گذاری در یک راه‌حل تخصصی بتواند راحت‌تر مستهلک شود.

# به حداقل رساندن فاصله‌ای که داده‌ها جابجا می‌شوند: جابجایی داده‌ها در سلسله مراتب حافظه عمومی به مقدار قابل توجهی انرژی نیاز دارد تا تلاش شود تأخیر دسترسی به داده‌ها به حداقل برسد. در مورد معماری‌های خاص دامنه، انتظار می‌رود که درک دامنه‌های کاربرد توسط طراحان سخت‌افزار و کامپایلر ، امکان ایجاد سلسله مراتب حافظه ساده‌تر و تخصصی‌تر را فراهم کند، جایی که جابجایی داده‌ها تا حد زیادی در نرم‌افزار انجام می‌شود و حافظه‌های سفارشی برای عملکردهای خاص در دامنه وجود دارد.
# منابع ذخیره شده را در واحدهای محاسباتی یا حافظه‌های بزرگتر سرمایه‌گذاری کنید: از آنجایی که می‌توان با حذف بهینه‌سازی‌های معماری عمومی مانند اجرای خارج از ترتیب، پیش‌واکشی ، ادغام آدرس و حدس و گمان سخت‌افزاری، مقدار قابل توجهی از منابع سخت‌افزاری را ذخیره کرد، منابع ذخیره شده باید دوباره برای بهره‌برداری حداکثری از موازی‌سازی موجود، مثلاً با افزودن واحدهای محاسباتی بیشتر یا حل هرگونه مشکل پهنای باند حافظه با افزودن حافظه‌های بزرگتر، سرمایه‌گذاری شوند.
# از ساده‌ترین شکل موازی‌سازی که با دامنه مطابقت دارد استفاده کنید: از آنجایی که دامنه‌های برنامه کاربردی هدف تقریباً همیشه شکلی ذاتی از موازی‌سازی را ارائه می‌دهند، تصمیم‌گیری در مورد چگونگی بهره‌برداری از این موازی‌سازی و نمایش آن در نرم‌افزار مهم است. برای مثال، اگر یک معماری SIMD بتواند در دامنه کار کند، استفاده از آن برای برنامه‌نویس آسان‌تر از یک معماری MIMD خواهد بود.
# کاهش اندازه و نوع داده‌ها به ساده‌ترین نوع مورد نیاز برای دامنه: در صورت امکان، استفاده از انواع داده‌های محدودتر و ساده‌تر مزایای متعددی را به همراه دارد. به عنوان مثال، هزینه انتقال داده‌ها برای برنامه‌های وابسته به حافظه را کاهش می‌دهد و همچنین می‌تواند میزان منابع مورد نیاز برای پیاده‌سازی واحدهای محاسباتی مربوطه را کاهش دهد.
# از یک زبان برنامه‌نویسی مختص دامنه برای انتقال کد به DSA استفاده کنید: یکی از چالش‌های DSAها، سهولت استفاده و به طور خاص‌تر، توانایی برنامه‌نویسی مؤثر معماری و اجرای برنامه‌ها روی آن است. در صورت امکان، توصیه می‌شود از زبان‌های مختص دامنه (DSL) موجود مانند Halide  و TensorFlow  برای برنامه‌نویسی آسان‌تر DSA استفاده کنید. استفاده مجدد از ابزارهای کامپایلر و چارچوب‌های نرم‌افزاری موجود، استفاده از DSA جدید را به طور قابل توجهی قابل دسترس‌تر می‌کند.

## DSA برای شبکه‌های عصبی عمیق
یکی از حوزه‌های کاربردی که DSA بیشترین موفقیت را در آن یافته است، هوش مصنوعی است. به طور خاص، چندین معماری برای شتاب‌دهی شبکه‌های عصبی عمیق (DNN) توسعه داده شده‌اند.  در بخش‌های بعدی، چند نمونه را گزارش می‌دهیم.

### TPU
TPU شرکت گوگل در سال ۲۰۱۵ توسعه داده شد تا فرایند استنتاج شبکه‌های عمیق عصبی (DNN inference) را شتاب دهد، زیرا شرکت پیش‌بینی کرده بود که استفادهٔ روزافزون از جستجوی صوتی باعث می‌شود منابع محاسباتی موردنیاز برای استنتاج شبکه‌های عصبی در آن زمان باید دو برابر شوند.

TPU به‌عنوان یک هم‌پردازنده (co-processor) طراحی شد که از طریق گذرگاه PCIe با سیستم ارتباط برقرار می‌کند تا بتوان آن را به‌سادگی در سرورهای موجود به‌کار گرفت. این تراشه در اصل یک موتور ضرب ماتریسی است که از یک مجموعه‌دستورالعمل پیچیده (CISC ISA) پیروی می‌کند. موتور ضرب از *[[آرایه سیستولیک|اجرای سیستولیک]]* استفاده می‌کند تا مصرف انرژی کاهش یابد و تعداد عملیات نوشتن در حافظهٔ SRAM کمتر شود.

TPU با فرایند ساخت ۲۸ نانومتری تولید شد و با فرکانس ۷۰۰ مگاهرتز کار می‌کرد. بخشی از برنامه که روی TPU اجرا می‌شود، در چارچوب TensorFlow پیاده‌سازی شده است.

TPU عمدتاً با اعداد صحیحِ کم‌دقت (reduced precision integers) محاسبه انجام می‌دهد، که این موضوع نیز به صرفه‌جویی بیشتر در مصرف انرژی و افزایش کارایی کمک می‌کند.

### منجنیق مایکروسافت(Microsoft Catapult)
پروژهٔ Catapult مایکروسافت  یک FPGA را از طریق گذرگاه PCIe به سرورهای مرکز داده متصل کرد، با این ایده که از FPGA برای شتاب‌دهی کاربردهای مختلف در حال اجرا روی سرور استفاده شود. این پروژه از قابلیت پیکربندی‌پذیری مجدد FPGA بهره می‌برد تا بتواند مجموعهٔ گسترده‌ای از برنامه‌ها را با شتاب‌دهی سخت‌افزاری اجرا کند.

برخلاف TPU گوگل، FPGA مورد استفاده در پروژهٔ Catapult باید با زبان‌های توصیف سخت‌افزار مانند Verilog و VHDL برنامه‌نویسی می‌شد. به همین دلیل، یکی از نگرانی‌های اصلی نویسندگان این چارچوب محدود بودن قابلیت برنامه‌پذیری آن بود.

مایکروسافت برای چارچوب Catapult یک شتاب‌دهندهٔ شبکه‌های عصبی کانولوشنی (CNN accelerator) طراحی کرد که هدف اصلی آن شتاب‌دادن به تابع رتبه‌بندی (ranking function) در موتور جستجوی Bing بود.معماریِ پیشنهادی یک طراحی قابل پیکربندی در زمان اجرا (runtime reconfigurable) ارائه می‌داد که بر پایهٔ یک آرایهٔ سیستولیک دو‌بعدی ساخته شده بود.

### NVDLA
NVDLA شتاب‌دهندهٔ استنتاج یادگیری عمیق شرکت انویدیا است. این یک طراحی سخت‌افزاری متن‌باز است که در چندین پیکربندی با پارامترهای قابل تنظیم زیاد در دسترس قرار دارد.مدل Small-NVDLA برای استقرار در محیط‌های با منابع محدود مانند اینترنت اشیاء (IoT) طراحی شده است، جایی که هزینه، مساحت و مصرف انرژی از مهم‌ترین دغدغه‌ها هستند.در مقابل، مدل Large-NVDLA برای محیط‌های محاسبات با کارایی بالا (HPC) مناسب‌تر است.NVDLA همچنین زیرساخت اختصاصی آموزش، ابزارهای کامپایل و پشته نرم‌افزاری زمان اجرا خود را ارائه می‌دهد.

## DSA برای دامنه‌های دیگر
علاوه بر کاربرد در هوش مصنوعی، معماری‌های خاص‌دامنه (DSA) در بسیاری از حوزه‌ها نیز مورد استفاده قرار می‌گیرند، از جمله: محاسبات علمی، پردازش تصویر و شبکه‌های کامپیوتری.

### Pixel Visual Core(PVC)
هسته بصری پیکسل (PVC) یک پردازندهٔ تصویری مبتنی بر ARM است که توسط گوگل طراحی شده است. PVC یک معماری خاص‌دامنه (DSA) چند‌هسته‌ای کاملاً قابل برنامه‌ریزی برای پردازش تصویر، بینایی ماشین و هوش مصنوعی است که برای دستگاه‌های موبایل و در آینده برای اینترنت اشیاء (IoT) طراحی شده است.این تراشه برای اولین بار در گوگل پیکسل ۲ و ۲ XL که در ۱۹ اکتبر ۲۰۱۷ معرفی شدند، ظاهر شد و همچنین در گوگل پیکسل ۳ و ۳ XL نیز به‌کار گرفته شد. از زمان پیکسل ۴، این تراشه با پیکسل نیورال کور (Pixel Neural Core) جایگزین شد.

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

## منابع

رده:مقاله‌های ایجادشده توسط ایجادگر
رده:معماری رایانه