موضوع مقاله: افزونه‌بردار پیشرفته | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # افزونه‌بردار پیشرفته | مقدمه: افزونه بردار پیشرفته (AVX، که همچنین به عنوان افزونه جدید Sandy Bridge خوانده می‌شود)، افزونه معماری مجموعه دستورالعمل های x86 برای ریزپردازنده‌های اینتل و AMD است که توسط اینتل در مارس ۲۰۰۸ پیشنهاد شده‌است و برای اولین بار توسط اینتل در پردازنده سندی بریج در Q1 2011 پشتیبانی شد؛ و بعد AMD با پردازنده بلدوزر در 2011 Q3 عرضه کرد. | ## بخش 1: افزونه‌بردار پیشرفته | هر ثبات YMM شامل موارد زیر است: هشت ثبات ۳۲ بیتی برای اعداد ممیز شناور تک دقت یا چهار ثبات ۶۴ بیتی برای اعداد ممیز شناور دو دقت. به عنوان مثال، یک دستور SSE با استفاده از فرم دو عاملی معمولی a = a + b را اکنون می‌توان با استفاده از یک فرم غیر مخرب سه عملوندی با حفظ هر دو عملوند مرجع به فرمc = a + b، جایگزین کرد. نسخه‌های ۱۲۸ بیتی می‌توانند برای بهبود کدهای قدیمی بدون نیاز به گسترش فشرده سازی، و با دوری از دشواری‌های رفتن از SSE به AVX، سریعتر از برخی از پیاده‌سازی‌های اولیه AMD برای AVX باشند. دستورالعمل‌های جدید این دستورالعمل‌های AVX علاوه بر آن‌هایی هستند که پسوندهای ۲۵۶ بیتی از دستورالعمل SSE 128 بیتی قدیمی را دارند؛ اکثر آن‌ها در هر دو حالت ۱۲۸ بیتی و ۲۵۶ بیتی قابل استفاده هستند. به‌طور متناوب، هر عدد از عناصر را از یک عملگر ثبات برداری SIMD بر روی یک عملگر حافظه بردار می‌نویسد و عناصر باقی مانده از عملگر حافظه را بدون تغییر رها می‌کند. در معماری پردازنده AMD Jaguar، این دستورالعمل با یک عملوند حافظه زمانیکه ماسک صفر است ۳۰۰ کلاک طول می‌کشد، در آن حالت دستورالعمل هیچ کاری انجام نمی‌دهد. این‌ها دستورالعمل‌های ۲۵۶ بیتی در خط هستند، به این معنی که آن‌ها در تمام ۲۵۶ بیت یعنی دو ۱۲۸ بیتی جداگانه کار می‌کنند، بنابراین نمی‌توانند در خطوط ۱۲۸ بیتی تغییر مسیر داده شوند. VPERM2F128 الحاق بردار ۱۲۸ بیتی از دو عملوند مرجع ۲۵۶ بیتی به یک عملوند مقصد ۲۵۶ بیتی، با در نظر گرفتن عدد ثابت به عنوان انتخابگر. | ## بخش 2: افزونه‌بردار پیشرفته | پشتیبانی کامپایلر و اسمبلر جی‌سی‌سی با نسخه ۴٫۶ آغاز می‌شود (هرچند شاخه ۴٫۳ با پشتیبانی خاصی وجود دارد) و مجموعه کامپایلر اینتل با نسخه ۱۱٫۱ پشتیبانی از AVX آغاز کرد. کامپایلر ویژوال استودیو ۲۰۱۰ / ۲۰۱۲ پشتیبانی از AVX را از طریق توابع ذاتی و / قوس: سوئیچ AVX انجام می‌دهد. پشتیبانی از سیستم عامل AVX ثبات-وضعیت جدیدی را از طریق ثبات‌های YMM 256 بیتی اضافه می‌کند، بنابراین برای حفظ و بازگرداندن رجیسترهای AVX از میان سوئیچ‌های متنی، نیاز به پشتیبانی صحیح سیستم عامل وجود دارد. نسخه‌های سیستم عامل زیر از پشتیبانی از AVX برخوردارند: دراگون‌فلای بی‌اس‌دی: پشتیبانی در اوایل ۲۰۱۳ اضافه شد. فری‌بی‌اس‌دی: پشتیبانی در یک پچ افزوده شده در تاریخ ۲۱ ژانویه ۲۰۱۲ اضافه شد، که در نسخه ۹٫۱ باقی مانده منتشر شد لینوکس: پشتیبانی از نسخه کرنل ۲٫۶٫۳۰، در تاریخ ۹ ژوئن ۲۰۰۹ منتشر شد. macOS: پشتیبانی در ۱۰٫۶٫۸ (برفی پلنگ) به روز رسانی منتشر شده در تاریخ ۲۳ ژوئن ۲۰۱۱ اضافه شده‌است. به‌طور متناوب، هر عدد از عناصر را از یک عملگر ثبت‌کننده بردار SIMD به یک عملگر حافظه بردار می‌نویسد و عناصر باقی مانده از عملگر حافظه را بدون تغییر باقی می‌گذارد. VPERM2I128 الحاق چهار عنصر بردار ۱۲۸ بیتی از دو عملوند مرجع ۲۵۶ بیتی را به یک عملوند مقصد ۲۵۶ بیتی، با در نظر گرفتن یک عدد ثابت به عنوان انتخابگر. | ## بخش 3: افزونه‌بردار پیشرفته | این شیوه ۴ عملوند، ۷ ثبات opmask جدید ۶۴ بیتی، حالت حافظه اسکالر با پخش خودکار، کنترل صحیح گرد کردن اعداد و حالت آدرس دهی حافظه جابجایی فشرده فراهم می‌کند. طول ثبات‌ها به ۵۱۲ بیت افزایش می‌یابد و تعداد کل ثبات‌ها در حالت x86-64 به ۳۲ عدد (ثبات‌های ZMM0-ZMM31) افزایش می‌یابد. AVX-512 شامل چندین افزونه است که به معنای آن نیست که همه آن‌ها توسط تمام پردازنده‌ها پشتیبانی می‌شوند. مجموعه دستورالعمل اضافه شده شامل موارد زیر است: بنیاد AVX-512- چندین دستورالعمل جدید اضافه می‌کند و بیشتر دستورات۳۲ بیتی و ۶۴ بیتی SSE-SSE4.1 و AVX/AVX2 را با کدگذاری EVEX برای پشتیبانی از ثبات‌های ۵۱۲ بیتی، ماسک‌های عملیاتی، پخش پارامتر، گرد کردن نهفته اعداد و کنترل استثناءها گسترش می‌دهد. دستورالعمل‌های دستکاری بایت AVX-512 2 (VBMI2) بار، ذخیره و الحاق کلمه/بایت به وسیله شیفت. انیشتین @ Home با استفاده از AVX در برخی از برنامه‌های توزیع شده خود که برای امواج گرانشی جستجو می کنند. | ## جمع‌بندی | رمزگذارهای ویدئویی x264 و x265 می‌توانند AVX2 یا AVX-512 را برای سرعت بخشیدن به رمزگذاری استفاده کنند.