.NET تاریخچه طولانی در ارائه دسترسی به قابلیتهای سختافزاری اضافی از طریق APIهایی دارد که به طور بومی توسط کامپایلر JIT درک میشوند. این امر از .NET Framework در سال 2014 آغاز شد و با معرفی .NET Core 3.0 در سال 2019 گسترش یافت. از آن زمان، رانتایم به طور تکراری APIهای بیشتری ارائه داده و در هر نسخه از این موضوع بهتر بهره برده است.
پشتیبانی از WebAssembly
WebAssembly، یا به اختصار Wasm، در واقع کدی است که در مرورگر شما اجرا میشود و اجازه میدهد تا یک پروفایل عملکردی بسیار بالاتر از پشتیبانی اسکریپتهای معمول تفسیر شده داشته باشد. به عنوان یک پلتفرم، Wasm شروع به ارائه پشتیبانی زیرین SIMD (دستورالعمل واحد، دادههای چندگانه) کرده است تا الگوریتمهای اصلی را تسریع کند و .NET به تبع آن تصمیم گرفته است تا از این عملکرد از طریق intrinsics سختافزاری پشتیبانی کند.
این پشتیبانی بسیار شبیه به مبانی است که سایر پلتفرمها ارائه میدهند و بنابراین ما به جزئیات قابل توجهی وارد نخواهیم شد. در عوض، میتوانید انتظار داشته باشید که الگوریتمهای چندپلتفرمی موجود شما با استفاده از Vector128<T> به طور ضمنی در جایی که پشتیبانی میشود، فعال شوند. اگر میخواهید از عملکردهای منحصر به فرد Wasm به صورت مستقیم استفاده کنید، میتوانید از APIهایی که توسط کلاسهای PackedSimd و WasmBase در فضای نام System.Runtime.Intrinsics.Wasm ارائه میشوند، استفاده کنید
AVX-512 یک مجموعه ویژگی جدید برای کامپیوترهای x86 و x64 است. این همراه با خود مجموعهای بزرگ از دستورالعملها و عملکردهای سختافزاری جدیدی را به همراه دارد که قبلاً در دسترس نبودند، از جمله پشتیبانی برای 16 رجیستر SIMD اضافی، ماسکینگ اختصاصی و کار بر روی 512 بیت داده در یک زمان. دسترسی به این عملکرد نیازمند یک پردازنده نسبتاً جدید است، یعنی نیازمند Skylake-X یا جدیدتر از اینتل و Zen4 یا جدیدتر از AMD است. به دلیل این، تعداد کاربرانی که میتوانند از این عملکرد جدید بهره ببرند کمتر است، اما بهبودهایی که میتواند به این سختافزار بیاورد همچنان قابل توجه است و ارائه پشتیبانی از آن برای بارهای کاری سنگین داده ارزشمند است. علاوه بر این، JIT به صورت فرصتطلبانه از این دستورالعملها برای کد SIMD موجود استفاده میکند جایی که فایدهای را تشخیص میدهد. برخی مثالها عبارتند از:
