پرش به محتوای اصلی

خانواده Zen 6 AMD: Feeding the Beast

هکرنیوز۱۴۰۵ آبان ۱۹, سه‌شنبه، ساعت ۲۰:۳۲حدود 11 دقیقه مطالعه

آدرس مقاله: https://chipsandcheese.com/p/amds-zen-6-family-feeding-the-beast آدرس نظرات: https://news.ycombinator.com/item?id=50443090 امتیاز: 257 # نظرات: 108

امروز به بررسی نسل بعدی هسته پردازنده‌های Zen 6 AMD می‌پردازیم. ما تغییرات Zen 5 را بررسی خواهیم کرد و تفاوت‌های Zen 6 و Zen 6c را در مورد رویکرد AMD به ریزمعماری به ما می‌گوید.

از دید پرنده، Zen 6 تکامل طبیعی Zen5 است، با گسترش بسیاری از ساختارهای OoO و بهبودهای تکراری در سراسر هسته. با این حال، کاوش عمیق‌تر داستان متفاوتی را بیان می‌کند، با AMD که به شدت چندین بخش از هسته را دوباره کار می‌کند و من را به یاد تغییرات از Zen 1 به Zen 2 می‌اندازد.

در سطح بالایی، تغییراتی که AMD در برنامه‌های اعداد صحیح ایجاد کرد، برجسته می‌شوند و به طرحی شبیه Zen 3 و Zen 4 بازگشته‌اند.

Zen 5 بهترین پیش‌بینی‌کننده جهت را در میان هسته‌هایی که اندازه‌گیری کرده‌ایم داشت و Zen 6 ظاهرا بر اساس همان پیش‌بینی‌کننده جهت است.

بزرگ‌ترین تفاوتی که می‌بینیم در این است که وقتی پیش‌بینی‌کننده جهت تحت تأثیر قرار می‌گیرد، چه اتفاقی می‌افتد. هر دو هسته تقریبا در یک مکان به دیوار برخورد کرده و از آن عبور می‌کنند، پیش‌بینی‌کننده در حدس زدن داده‌های تصادفی باقی می‌ماند، بنابراین زمان هر شاخه عمدتا نشان‌دهنده مدت زمانی است که هسته برای بازیابی از یک حدس اشتباه طول می‌کشد. این پلاتو تقریبا 3.5 تا 4 ns زمان اضافی به ازای هر شاخه در Zen 5 و تقریبا 3 تا 3.5 ns در Zen 6 دارد، بنابراین Zen 6 برای هر شاخه ای که اشتباه می کند هزینه کمتری می پردازد، که نشان می دهد AMD تاخیر پیش بینی نادرست شاخه را در مقایسه با Zen 5 کاهش می دهد.

Zen 6 همچنین توانایی هسته را برای انجام 2 شاخه در هر چرخه با Zen 6 قادر به انجام 2 شاخه در هر چرخه در حافظه پنهان دستورالعمل L1 بهبود داده است.

وقتی ردپای از L1i فراتر رفت، آنگاه برای بقیه BTB فقط به یک شاخه در هر چرخه کاهش می‌یابد، به جز آزمایش 64B که تا 4 چرخه در هر شاخه برای L2 BTB می‌رسد.

هنگام مقایسه BTB Zen 6 با Zen 5، به نظر می رسد Zen 6 بر روی بهبود سرعت BTB در مقایسه با افزایش ظرفیت تمرکز کرده است.

دقت واحد پیش‌بینی شعبه Zen 6 بسیار شبیه به Zen 5 است و در عین حال سریع‌تر است که با توجه به اینکه Zen 5 قبلا یک Branch Predictor بسیار دقیق داشت، نکته خوبی است.

Zen 6 همان طرح واره خوشه رمزگشایی دوگانه را که Zen 5 معرفی کرد، ارائه می کند، اما برخلاف Zen 5 که در آن یک رشته تنها می تواند به طور موثر از یک خوشه رمزگشا استفاده کند، اکنون با Zen 6 یک رشته می تواند از هر دو خوشه رمزگشایی استفاده کند.

در خارج از L1i، Zen 6 بسیار شبیه به رفتار Zen 5 در سمت دستورالعمل چیزها است.

موتور اجرایی Zen 6 در کل بسیار شبیه به Zen 5 است، اما تفاوت های مهمی وجود دارد که باید به آنها توجه داشت.

در سمت عدد صحیح، Zen 6 رفتار جفت شدن NOP Zen 4 را بازمی گرداند و تا 16 NOP را در هر چرخه بازنشسته می کند. Zen 6 همچنین به پیک توان عملیاتی نظری برای دستورالعمل‌های اعداد صحیح ساده از Zen 5 نزدیک‌تر است و 5.96 افزوده‌های 64 بیتی را در هر چرخه در برابر 5.25 Zen 5 با همان شش ALU حفظ می‌کند.

AMD تعداد واحدهای ضرب عدد صحیح را از سه به دو کاهش داده است و توان عملیاتی PDEP و PEXT نیز از سه دستورالعمل در هر چرخه به دو کاهش یافته است. به گفته AMD، واحد ضرب عدد صحیح سوم Zen 5 هزینه مساحت آن را توجیه نمی کند.

در سمت برداری، واحدهای ممیز شناور بدون تغییر هستند و Zen 6 همچنان دو FADD، FMUL یا FMA 512 بیتی را در هر چرخه مدیریت می‌کند. تغییر در VNNI است، جایی که Zen 6 تعداد واحدها را از دو به چهار دو برابر می‌کند و تست VNNI 512 بیتی ما از 1.99 به 3.88 دستورالعمل در هر چرخه می‌رسد، با Zen 6c مطابق با آن است. دستورالعمل های VNNI برای عملیاتی مانند محاسبه حلقه داخلی استنتاج کوانتیزه و همچنین برای کدک های ویدیویی که از آنها برای فیلترهای ویدیویی استفاده می کنند مفید هستند.

با رفتن به تغییر قابل توجه دیگر، Zen 5 قبلا می‌توانست چهار بار را در هر چرخه انجام دهد، اما آزمایش ما نشان می‌دهد که تنها دو مورد از آنها می‌توانند بارهای برداری باشند، صرف نظر از اینکه 256 یا 512 بیت بار هستند. Zen 6 بارهای 256 بیتی را در هر چرخه به چهار بار در هر دو هسته افزایش می دهد در حالی که بارهای 512 بیتی را در دو می گذارد، بنابراین هر دو عرض اکنون به همان 128 بایت در هر چرخه می رسند که مهم است زیرا اکثر کدهای برداری ارسال شده همچنان AVX1/2 را هدف قرار می دهند.

در گذشته تفاوت بین هسته‌های کلاسیک و هسته‌های متراکم از نظر معماری، برای همه مقاصد، از نظر عملکردی یکسان بود و بیشترین تغییرات در تعداد هسته‌های یک CCD و مقدار حافظه نهان L3 در هر هسته بود. با خانواده Zen 6، این موضوع تغییر کرده است.

با شروع از داخل هسته، تغییرات پس از ارسال micro-op رخ می دهد و ظاهرا پس از صف بار تمام می شود.

تفاوت اصلی بین Zen 6 و Zen 6c در ظرفیت ساختارهای خارج از نظم آنها نهفته است. تعداد زیادی از این ساختارها در Zen 6c بزرگتر هستند و به آن اجازه می دهند در پرواز کار بیشتری داشته باشد و تأخیر بیشتری نسبت به Zen 6 جذب کند. بافر ترتیب مجدد از 576 به 640 ورودی، فایل ثبت اعداد صحیح از 288 به 352، زمانبندی برداری از 138 به 180 به 230 افزایش می یابد.

تفاوت ها نشان می دهد که AMD این دو طراحی را تخصصی کرده است. به نظر می رسد Zen 6 برای فرکانس بالا تنظیم شده است، در حالی که Zen 6c ظرفیت بیشتری برای تحمل تأخیر حافظه نسبتا بالا دارد.

Zen 6 و Zen 6c به ترتیب از CCD های 12 هسته ای و 32 هسته ای استفاده می کنند، اما هر دو 4 مگابایت حافظه نهان L3 در هر هسته ارائه می دهند. این به CCD 12 هسته ای 48 مگابایت حافظه کش L3 و CCD 32 هسته ای 128 مگابایت می دهد.

تأخیر L3 از حدود 47 چرخه در Zen 5 به 55 چرخه در Zen 6 و 66 چرخه در Zen 6c افزایش یافته است. حافظه پنهان بزرگتر و تعداد بیشتر استاپ های مش احتمالا به افزایش کمک می کند. در نانوثانیه، ساعت بالاتر Zen 6 بیشتر افزایش را پنهان می کند، یعنی 10.7 ns در مقابل 10.3 ns در EPYC 9355P مبتنی بر Zen 5، در حالی که ساعت پایین تر Zen 6c و CCX بزرگتر آن را 16.4 ns نشان می دهد.

با حرکت به سمت پهنای باند، می بینیم که Zen 6 رفتار پهنای باند L2 عجیب و غریب Zen 5 را اصلاح می کند، جایی که یک هسته تنها حدود 42 بایت در هر چرخه در بیشتر ظرفیت L2 کشیده می شود، در Zen 6 مسیر خواندن اکنون به طور قابل اعتماد 64 بایت در هر چرخه را ارائه می دهد. بقیه سلسله مراتب کش تا حد زیادی در پهنای باند در هر چرخه بدون تغییر است.

ارسال فروشگاه به بار ظاهرا نسبت به Zen 5 تغییری نکرده است و جایی است که رفتار Zen 6 و Zen 6c دوباره متحد می شود.

یک بار 32 بیتی از همان آدرس یک فروشگاه 64 بیتی با تاخیر عملا صفر تکمیل می شود که به Zen 6 اجازه می دهد دو جفت بار ذخیره وابسته را در هر چرخه مدیریت کند. بارهای کاملا موجود در فروشگاه در 7 چرخه بدون توجه به هم‌ترازی با همپوشانی‌های جزئی با هزینه 14 چرخه تکمیل می‌شوند که مطابق با Zen 5 است.

EPYC 9686F نزدیک به بالای نتایج تخمینی SPEC 2026 تک رشته ای ما است. این پردازنده تقریبا از نظر نرخ صحیح با Ryzen 9 9950X3D2، بالاترین CPU مشتری AMD از نسل قبلی مطابقت دارد و در نرخ ممیز شناور آن را شکست می دهد. در فرکانس 4.1 گیگاهرتز منطبق، 9686F با وجود L3 بسیار بزرگتر قسمت X3D، حدود 4 درصد در عدد صحیح و 11 درصد در ممیز شناور از 9950X3D2 جلوتر است.

EPYC 9996 نیز بی‌تفاوت نیست. این تقریبا با نسل قبلی EPYC 9575F در عملکرد تک رشته ای مطابقت دارد، علیرغم اینکه در ساعت های پایین تر کار می کند و چهار برابر هسته دارد. همچنین به صورت عدد صحیح از Vera NVIDIA جلوتر است و در ممیز شناور حدود 20 درصد از آن جلوتر است.

EPYC 9686F تقریبا در هر آزمون فرعی پیشتاز است و در هر دو مجموعه حدود 18٪ جلوتر از EPYC 9996 به پایان می رسد. امتیاز 6.20 در مقابل 5.25 در عدد صحیح و 10.6 در مقابل 8.99 در ممیز شناور، با برخی از بزرگترین امتیازات آن در 714.cpython، 766.femflow، و 772.marian است.

در مقابل EPYC 9575F مبتنی بر Zen 5، 9996 امتیاز 5.25 در مقابل 5.13 در عدد صحیح و 8.99 در مقابل 9.01 در ممیز شناور دارد در حالی که حدود 900 مگاهرتز کندتر کار می کند. 9996 همچنین از 9686F در 721.gcc و 765.roms برتری دارد، دو آزمون فرعی که در آنها ساعت بالاتر 9686F هیچ مزیتی ندارد.

خرابی از بالا به پایین شکاف های خط لوله در دو تراشه Zen 6 نشان می دهد که برتری 9686F از کجا می آید. نمایه‌های نرخ صحیح در زیرآزمون‌های هسته‌ای تقریبا یکسان به نظر می‌رسند. در 750.sealcrypto، 710.omnetpp، 735.gem5، و 753.ns3، اسلات های بازنشسته تقریبا سهم یکسانی را در هر دو تراشه با اختلاف کمتر از یک درصد دارند.

خرده آزمون های سنگین حافظه، شکاف های بزرگ تری را نشان می دهند. با حرکت از EPYC 9996 به EPYC 9686F، توقف حافظه پشتیبان از 37.9% به 50.0% از اسلات های خط لوله در 729.abc، از 19.0% به 34.1% در 723.llvm و از 24.2% در sqlite به 370.8% افزایش می یابد. سهم اسلات بازنشستگی بر این اساس کاهش می یابد. ساعت پایین‌تر Zen 6c و حافظه پنهان L3 مشترک بزرگ‌تر ممکن است به توضیح سهم کمتر حافظه آن کمک کند.

نمایه های ممیز شناور برای اکثر آزمون های فرعی مشابه به نظر می رسند. سهم بازنشستگی در 731.astcenc، 772.marian، و 767.nest حدود یک درصد یا کمتر متفاوت است، و 709.cactus بیش از نیمی از اسلات های خود را در پهنای باند جلویی هر دو تراشه صرف می کند.

شکاف های بزرگتر دوباره در خرده آزمون های سنگین حافظه ظاهر می شوند. با حرکت از EPYC 9996 به EPYC 9686F، استال حافظه پشتیبان از 42.5% به 55.3% اسلات در 765.roms، از 60.9% به 67.6% در 749.fotonik3d و از 17.8% در lbm 37.8 به 37.8% افزایش می یابد. اینها همچنین تست‌هایی هستند که ساعت بالاتر 9686F کمترین کمک را در آنها می‌کند: این ساعت از 9996 در 765.roms عقب می‌افتد، تقریبا با 749.fotonik3d پیوند می‌خورد، و با وجود کلاک تا حدود 29 درصد بالاتر، حدود 11٪ در 782.lbm پیشتاز است.

اجرای 9686F در 4.1 گیگاهرتز برای مطابقت با 9996 مزیت ساعت را حذف می کند، و تصویر کلی تغییر می کند: 9686F امتیازهای 4.92 و 8.64 را در آن ساعت کسب می کند و Zen 6c را حدود 6.7٪ در هر ساعت در عدد صحیح و 4٪ در ممیز شناور جلوتر می دهد. با همان سرعت ساعت، Zen 6 و Zen 6c در خرده آزمون‌های عدد صحیح محدود به هسته تقریبا یکسان به نظر می‌رسند. در 750.sealcrypto، اسلات‌های بازنشسته 67.3 درصد از کل EPYC 9686F در مقابل 67.6 درصد در EPYC 9996 را تشکیل می‌دهند. پروفایل‌های ممیز شناور نیز در چندین خرده آزمون در ساعت‌های همسان مشابه به نظر می‌رسند.

هر دو تراشه بیش از نیمی از اسلات های خط لوله خود را در پهنای باند جلویی در 709.cactus صرف می کنند. سهام بازنشستگی آنها حدود دو درصد در 722.palm و 766.femflow متفاوت است.

9686F هنوز هم سهم بیشتری از شکاف های خط لوله خود را در حافظه متوقف می کند. استال های حافظه Backend 50.3% در مقابل 42.5% در 9996 در 765.roms، 24.9% در مقابل 17.8% در 782.lbm و 63.3% در مقابل 60.9% در 749.fotonik3d را تشکیل می دهند. حافظه نهان L3 128 مگابایتی Zen 6c احتمالا بیشتر از کش 48 مگابایتی Zen 6 به این درخواست ها پاسخ می دهد و نیاز به دسترسی به حافظه اصلی را کاهش می دهد.

واضح ترین تفاوت در استال های تاخیر frontend است که سهم بسیار بیشتری از اسلات ها را در 9686F در آزمون های فرعی با پایه های کد بزرگ به خود اختصاص می دهند. در 727.cppcheck، این سهم 35.2% در مقابل 16.6% در 9996 است. در 721.gcc، 25.8٪ در مقابل 10.0٪ است. با تطبیق سرعت ساعت و هر دو طراحی دارای ظاهر یکسان، این غرفه‌ها به احتمال زیاد تفاوت‌ها را در سلسله مراتب حافظه پنهان و حافظه منعکس می‌کنند.

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

خانواده Zen 6 به روش‌های مختلفی نسبت به نسل قبلی خود بهبود می‌یابد، یک frontend ارتقا یافته به یک رشته اجازه می‌دهد تا از هر دو رمزگشا استفاده کند، در حالی که یک پیش‌بینی‌کننده شاخه سریع‌تر باعث می‌شود که در موارد مغفول‌پذیری بیشتر بپذیرد، همه با ساختارهای OoO بزرگ‌تر به هم گره خورده‌اند که به آن اجازه می‌دهد تا حافظه را بهتر پنهان کند. همه این‌ها با هم جمع می‌شوند تا ارتقای نسلی را از Zen 5 فراهم کنند.

با این حال، من فکر می کنم تغییر جالب تر، تقسیم بین Zen 6 و Zen 6c است. هسته‌های کلاسیک و متراکم اکنون در موتورهای خارج از دستور متفاوت هستند، به طوری که Zen 6 برای ساعت‌های بالاتر تنظیم شده است و Zen 6c ظرفیت بیشتری برای جذب تاخیر ایجاد می‌کند. شالوده مشترک هنوز مشخص است، اما این تفاوت ها انتخاب بین آنها را بیشتر به رفتار بار کاری وابسته می کند.

نتایج عملکرد نیز دلگرم کننده است و همچنین با تخمین امتیازات تک رشته ای SPEC CPU 2026، EPYC 9686F با حدود 21 درصد در عدد صحیح و 18 درصد در ممیز شناور از EPYC 9575F مبتنی بر Zen 5 پیشی می گیرد. EPYC 9996 با وجود اجرای حدود 900 مگاهرتز کندتر تقریبا با 9575F مطابقت دارد که نتایج قوی برای هر دو طراحی هسته است.

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

خواندن متن کامل در هکرنیوزبه زبان اصلی، در سایت ناشر باز می‌شود
متن اصلی (انگلیسی)

AMD's Zen 6 Family: Feeding the Beast

Article URL: https://chipsandcheese.com/p/amds-zen-6-family-feeding-the-beast Comments URL: https://news.ycombinator.com/item?id=50443090 Points: 257 # Comments: 108

همه‌ی اخبار فناوری