تعدادی از سایتها رو که بررسی می کردم x86 رو صرفا به عنوان نسخهای از سیستم عامل ویندوز معرفی کردهاند که از رجیسترهای ۳۲ بیتی استفاده میکنه. در صورتیکه یک پردازشگر می تواند متعلق به خانواده x86 باشد اما ۶۴ بیتی باشه. حتی یه پردازشگر می تواند متعلق به خانواده x86 باشد اما ۱۶ بیتی باشه.
ریشه x86 به نام بعضی از CPUهای شرکت اینتل بر میگردد. این شرکت ابتدا CPUای با نام 8086 رو عرضه کرد. بعد از آن مدلهایی عرضه شد که همگی آن ها مانند 8086 به عدد 86 ختم می شدند. 80286، 80386، 80486 و 80586 از جمله مدلهای بعدی این خانواده از CPUها هستند.
در واقع x86 خانوادهای از CPUها است که دارای یک سری از ویژگیهای مشترک هستند. برخی از این ویژگی ها عبارتاند از:
۱- تعداد رجیسترهای مشخصی دارند.
۲- همه پردازشگر ها دستورات (Instruction) یکسانی را پیادهسازی میکنند. این کار کمک می کند که طراحی پردازشگر راحتتر باشد.
۳- برای اجرای برنامه به دستورات کمتری (به زبان اسمبلی) احتیاج دارند.
۴- آنها با نسخه های قدیمیتر سازگار هستند. به این معنی که اگر یک برنامه بر روی یک پردازشگر x86 که در سال ۲۰۰۸ تولید شده اجرا می شده است بر روی پردازشگر x86ای که در سال ۲۰۰۹ تولید شده نیز اجرا خواهد شد. البته عکس این قضیه صادق نخواد بود.
البته x86 تنها خانواده در مجموعه پردازشگرها نیست. ARM خانوادهای دیگه از مجموعه پردازشگرهاست. ویژگی پردازشگرهای ARM مصرف پایین انرژی آنهاست که موجب شده امروزه بیشتر در دستگاه های کوچک مانند موبایل استفاده می شود. معمولا در رایانه های شخصی و سرورها از CPUهای x86 استفاده میشود. هر چند پیش بینی می شود که در آینده سرورهایی که دارای پردازشگرهای ARM باشند نیز استفاده شوند.
در آخر باید یادآوری کنم که وجود دستورات مشترک در CPUها باعث میشود که کسانی که کامپایلر تولید میکنند بر روی خانوادههای کمتری تمرکز کنند و کارشان سادهتر شود. به این دلیل که تعداد CPU هایی که آنها باید کدهای سطح بالایشان را به دستورات آن CPU ها تبدیل کنند به مراتب کمتر میشود.
منابع:
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/x86-architecture
https://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/risccisc/
https://techterms.com/definition/x86
https://whatis.techtarget.com/definition/ARM-processor