درود
من کجای بحثم گفتم که FMA3 در نسل قبلی وجود داشته؟اتفاقا من در همون پاراگراف اول تعریف روشنی شرح دادم:
حتی داخل پرانتز با رنگ قرمز مشخص کردم.
(شما آنچنان از FMA3 صحبت می کنید و سمت بهش میدید که مخاطب تصور میکنه با یک پدیده خاصی روبرو هست و قراره فاکتور های یک معماری از نسل Core را نقض کنه. از بدیهیات هست که هر معماری جدید متعاقبا برای توسعه قدرت پردازش حاصل از قدرت طراحی تراشه جدید، از اینستراکشن ست های جدید استفاده میکنه،مثل سندی بریج که اینستراکش ست 256 بیتی AVX رو ارائه کرد.
اینستراکشن FMA3 در HASWELL و FMA4 هم AMD در معماری های 2011 به بعد خود به کار میبره که یک تفاوت کوچیک در استفاده کردن مشترک و غیر مشترک از ثبات انباره دارن و عدد 3 در FMA3 به معنای 3 عملوندی بودن و FMA4 به معنای 4 عملوندی بودن هست که یک مثال برای روشن شدنش شرح میدم:
FMA3
a=a+b*c
FMA4
D=a+b*c
یعنی در FMA3 نتایج در یکی از متغییر های مورد استفاده در عبارت جبری قرار میگیره اما در FMA4 در یک متغیر یا ثبات مستقل. که از لحاظ اشغال رجیستر ها میشه گفت که FM3 بهتر عمل میکنه و در کل، مزایا و معایب خودشون رو دارند.در میحط های توسعه نرم افزار مود Native مثل VC++ 2010 هم قابلیت استفاده از این ست دستور اضافه شده و با توجه به محاسبات ممیز شناور که کلیه زبان های برنامه نویسی حتی اسکریپتی مثل Perl از اون پشتیبانی می کنند،طبیعی هست که در FPU بخواد پردازش بشه و بازهم دستور العمل جدید AVX-2 بیانگر وجود یک معماری جدید از یک نسل واحد در مرحله Tock به نام Haswell .)
از AVX به عنوان یک اینستراکشن ست جدید در معماری سندی بریج یاد کردم که هر معماری جدیدی باید ارائه بده . FMA3 و FMA4 رو هم به عنوان اینستراکشن ست های Haswell و معماری جدید AMD یاد کردم.
من در کجای این بخش که ارائه کردم،دو عملوند رو حذف کردم؟در واقع این بحث جزئی از اصول کلی هستش که یک توییک بهش دادم و هیچ فرقی با اصلش نداره.الان خواستید بگید که نه با یک ثبات هم میشه همه کار هارو کرد و نیازی به 2 عملوند دیگه نیست.
شما میتونید به راحتی چند عدد در آنها جایگذاری کنید و از الگوریتمی که خدمتون عرض کردم هم استفاده کنید.فقط جابجایی محتوای متغیر صورت میگیره و شاخص انتساب و خروجی یکی هست.چون ما سه نوع خروجی در FMA3 میتونیم داشته باشیم.یکی متغیر قبل از "+" و دومی متغیر بعد از "+" و دیگری متغیر بعد از "*" در صورتی که همون A در همه نقاط میتونه حضور داشته باشه .
با این حال حتی اگر فقط قابلیت استفاده از یک متغیر هم باشه بازهم قابلیت پیاده سازی هست و تنها باید اصول رو درک کنید.
a=a+b*c
a=b+a*c
a=b+c*a
Bookmarks