ابتدا بهتره بدونیم که
Instruction
Set
Architecture یا به طور مختصر
ISA به چه معناست؟
به زبان خیلی ساده مجموعه ای از دستورالعمل ها که یک پردازنده قادر به
شناسایی و
اجرای آن هاست.
در دنیای پردازش و داده ها همواره با 2 عنصر سخت افزار و نرم افزار رو به رو هستیم:
نرم افزار مجموعه ایی از
دستورالعمل ها و داده هاست و سخت افزار هم
بستری رو برای پیاده سازی و اجرای نرم افزار فراهم
میکنه از همین رو رابطه بین این 2 اهمیت فوق العاده زیادی داره.
به همین منظور به یک نقشه و طراحی نیاز مندیم تا نرم افزار و سخت افزار را با هم مرتبط وهماهنگ کنیم. پیش از ادامه بحث
بهتره ابتدا نگاهی ساده به عملکرد پردازنده که همان پردازش بر روی داده هاست داشته باشیم. یک پردازنده در واقع مجموعه ای
از دستورالعمل ها را دریافت کرده و سپس آن ها را بر روی داده ها اجرا میکند.
به طور مثال دو داده 3 و 5 موجود است. حال به کمک یک سری از دستورالعمل ها این 2 داده از
حافظه فراخوانی شده و در
ثبات ها
(
حافظه هایی با حجم بسیار کم و سرعت بسیار بالا) قرار میگیرد تا به طور مثال عمل جمع بر روی آن ها انجام می شود:
5=2
+3 و حاصل بر روی ثباتی دیگر ذخیره می شود. پس می بینیم که دستورالعمل ها نقش بسیار مهم در در پردازش را بر عهده دارند.
حال طراحان موظف هستند به گونه ای ساختمان پردازنده را طراحی کنند که این دستورالعمل ها بر روی آن ها اجرا شوند به
عبارت دیگر
بستر اجرای این دستورالعمل ها را به
طور سخت افزاری فراهم کنند به طور مثال طراحی ثبات ها ، مسیرهای پردازش داده و ....
نرم افزار ها هم بر اساس همین طراحی برنامه ریزی می شوند و در واقع باید گفت که
ISA رابط بین سخت افزار و نرم افزار را
فراهم میکند و فاصله بین زبان برنامه نویسی سطح بالا و سخت افزار را پر می کند.
در اصل یک پردازنده فقط قادر به درک 0 و 1 می باشد ، از طرفی برنامه نویسی با زبان ماشین ( 0و1) بسیار دشوار می باشد
برای همین برنامه نویسان از زبان های سطح بالاتر استفاده میکنند که
ISA ها در این میان نقش
واسطه رو ایفا میکنند.
مجموعه دستورالعمل های X86 یکی از معروفترین این ISA ها می باشد که توسط اینتل طراحی شده و در حال حاضر
اکثریت پردازنده های AMD وIntel به گونه ای ساخته و طراحی می شوند که با این دستورالعمل ها سازگار باشند. X86به مرور
زمان تغییرات زیادی کرده و تعمیم های زیادی به دستورالعمل های آن اضافه شده مانند
SSE ،
3Dnow ،
AVX ،
FMA4 و ... .
نقل قول:
دستورالعملهای FMA4 در چه برنامه هایی کاربرد داره ؟
یکی از همین تعمیم های جدید FMA4 می باشد .
Fused
Multiply
Add که از ترکیب کلمات
ترکیب شده =Fused ،
ضرب =Multiply
و
Add به معنای
جمع می باشد که در واقع ترکیبی از عمل جمع و ضرب در این دستورالعمل برای پردازنده تعریف میشود:
d=a+b*c
پسوند