معماری های x86 و x64 به دو نوع پرکاربرد معماری مجموعه دستورالعمل (ISA) که توسط اینتل و AMD ایجاد شده اند اشاره دارد. یک ISA رفتار کد ماشین را مشخص می کند و نحوه کنترل CPU را توسط نرم افزار مشخص می کند.
ISA رابط سخت افزاری و نرم افزاری است که مشخص می کند CPU چه کاری و چگونه می تواند انجام دهد.
معماری x86 چیست؟
x86 نوعی ISA برای پردازندههای کامپیوتری است که در ابتدا توسط اینتل در سال 1978 توسعه یافت. معماری x86 بر اساس ریزپردازنده 8086 اینتل (از این رو نام آن x86 می باشد) و نوع 8088 آن است. در ابتدا یک مجموعه دستورالعمل 16 بیتی برای پردازنده های 16 بیتی بود و بعداً به مجموعه دستورالعمل های 32 بیتی رسید. تعداد بیت ها نشان می دهد که CPU چه مقدار اطلاعات می تواند در هر چرخه پردازش کند. به عنوان مثال، یک CPU 32 بیتی تا 32 بیت داده را در هر سیکل ساعت انتقال می دهد. معماری x86 به دلیل قابلیت اجرا بر روی تقریباً هر کامپیوتری، از لپتاپ، رایانههای شخصی خانگی و سرورها، در میان تولیدکنندگان ریزپردازندههای متعدد محبوب شده است. مهم ترین محدودیت معماری x86 این است که می تواند حداکثر 4096 مگابایت رم را مدیریت کند. از آنجایی که تعداد کل ترکیب های پشتیبانی شده 2^32 (4,294,967,295) است، پردازنده 32 بیتی 4.29 میلیارد مکان حافظه دارد. هر مکان یک بایت داده را ذخیره می کند که معادل تقریباً 4 گیگابایت حافظه قابل دسترسی است. امروزه اصطلاح x86 به هر پردازنده 32 بیتی که قادر به اجرای مجموعه دستورات x86 باشد اشاره می کند.
معماری x64 چیست؟
x64 (مخفف x86-64) یک معماری از مجموعه دستورالعمل مبتنی بر x86 است که برای فعال کردن کدهای 64 بیتی گسترش یافته است. اولین بار در سال 2000 منتشر شد و دو حالت کار را معرفی کرد – حالت 64 بیتی و حالت سازگاری، که به کاربران اجازه می دهد برنامه های 16 بیتی و 32 بیتی را نیز اجرا کنند. از آنجایی که کل مجموعه دستورات x86 در x64 پیادهسازی میشود، فایلهای اجرایی قدیمیتر عملاً بدون جریمه عملکرد اجرا میشوند. معماری x64 از مقادیر بسیار بیشتری از حافظه مجازی و فیزیکی نسبت به معماری x86 پشتیبانی میکند و به برنامهها اجازه میدهد تا مقادیر زیادی داده را در حافظه ذخیره کنند. علاوه بر این، x64 تعداد رجیسترهای همه منظوره را به 16 افزایش میدهد و پیشرفتها و عملکردهای بیشتری را ارائه میدهد. معماری x64 می تواند در مجموع از 2^64 بایت استفاده کند که برابر با 16 میلیارد گیگابایت (16 اگزابایت) حافظه است. استفاده بسیار بیشتر از منابع، آن را برای تامین انرژی ابررایانه ها و ماشین هایی که نیاز به دسترسی به منابع گسترده دارند، مناسب می کند. معماری x64 به CPU اجازه می دهد تا 64 بیت داده را در هر چرخه ساعت پردازش کند، بسیار بیشتر از x86.
x86 vs. x64
در حالی که هر دو نوع معماری بر اساس مجموعه 32 بیتی هستند، برخی از تفاوت های کلیدی آنها را برای استفاده های مختلف مناسب می کند. تفاوت اصلی بین آنها میزان داده ای است که می توانند با هر چرخه ساعت مدیریت کنند و عرض رجیستر پردازنده.
پردازنده داده های پرکاربرد را در یک رجیستر برای دسترسی سریع ذخیره می کند. یک پردازنده 32 بیتی در معماری x86 دارای ثبات های 32 بیتی است، در حالی که پردازنده های 64 بیتی دارای ثبات های 64 بیتی هستند. بنابراین، x64 به CPU اجازه می دهد تا داده های بیشتری را ذخیره کند و سریعتر به آنها دسترسی پیدا کند. عرض رجیستر همچنین میزان حافظه ای که کامپیوتر می تواند استفاده کند را تعیین می کند. جدول زیر نمای کلی از تفاوت های کلیدی بین مجموعه معماری x86 و x64 را نشان می دهد:
ویژگی هــا
هر مجموعه معماری دارای ویژگی هایی است که آن را تعریف می کند و در موارد استفاده خاص به آن برتری می دهد. لیست های زیر ویژگی های x64 و x86 را نشان می دهد:
x86
- از معماری محاسباتی مجموعه دستورالعمل های پیچیده (CISC) استفاده می کند.
- دستورالعمل های پیچیده برای اجرا به چرخه های متعدد نیاز دارند.
- x86 رجیسترهای بیشتری در دسترس دارد اما حافظه کمتری دارد.
- با خطوط PIPE LINE کمتری طراحی شده است، اما می تواند آدرس های پیچیده را مدیریت کند.
- عملکرد سیستم با استفاده از رویکرد سخت افزاری بهینه شده است – x86 برای جبران حافظه کم به اجزای فیزیکی متکی است.
- از DEP مبتنی بر نرم افزار (پیشگیری از اجرای داده ها) استفاده می کند.
x64
- دارای قابلیت سازگاری با برنامه های 32 بیتی می باشد.
- فضای آدرس مجازی (تئوری) 2^64 بایت (16 اگزابایت) است. با این حال، تنها بخش کوچکی از محدوده نظری 16 اگزابایتی مورد استفاده قرار میگیرد – حدود 128 ترابایت.
- x64 فایل های بزرگ را با نگاشت کل فایل در فضای آدرس فرآیند پردازش می کند.
- سریعتر از x86 است به دلیل پردازش موازی سریعتر، حافظه 64 بیتی و گذرگاه داده و رجیسترهای بزرگتر.
- پشتیبانی از عملیات همزمان فایل های بزرگ در فضای آدرس های متعدد. علاوه بر این، x64 دو وظیفه x86 را به طور همزمان شبیهسازی میکند و تجربه سریعتری نسبت به x86 ارائه میکند.
- دستورالعمل ها را موثرتر و کارآمدتر بارگذاری می کند.
- از DEP با پشتوانه سخت افزاری (پیشگیری از اجرای داده ها) استفاده می کند.
کاربری
با توجه به ویژگی های مختلف و تفاوت در دسترسی به منابع، سرعت و قدرت پردازش، هر مجموعه معماری برای اهداف مختلفی استفاده می شود:
x86
- بسیاری از رایانه های شخصی دنیا هنوز بر پایه سیستم عامل ها و پردازنده های x86 هستند.
- برای کنسول های بازی استفاده می شود.
- بخشهای رایانش ابری هنوز از معماری x86 استفاده میکنند.
- برنامه ها و برنامه های قدیمی معمولاً بر روی معماری 32 بیتی اجرا می شوند.
- 32 بیت به دلیل سازگاری با تجهیزات صوتی قدیمی هنوز در تولید صدا ترجیح داده می شود.
x64
- تعداد فزاینده ای از رایانه های شخصی از پردازنده های 64 بیتی و سیستم عامل های مبتنی بر معماری x64 استفاده می کنند.
- تمام پردازنده های مدرن موبایل از معماری x64 استفاده می کنند.
- برای استفاده در ابررایانه ها استفاده می شود.
- در کنسول های بازی های ویدئویی استفاده می شود.
- فناوری های مجازی سازی بر اساس معماری x64 هستند.
- برای موتورهای بازی جدیدتر مناسب تر است زیرا سریعتر است و عملکرد بهتری ارائه می دهد.
محدودیت هـــا
در حالی که هر دو ISA دارای محدودیتهایی هستند، x64 یک نوع معماری جدیدتر و کاملتر است. در زیر لیستی از محدودیت های هر دو نوع معماری آمده است:
x86
- دارای یک مجموعه محدود از حافظه آدرس پذیر است.
- سرعت پردازش در مقایسه با x64 کمتر است.
- فروشندگان دیگر برنامه های کاربردی برای سیستم عامل های 32 بیتی توسعه نمی دهند.
- CPU های مدرن به سیستم عامل 64 بیتی نیاز دارند.
- همه دستگاه های روی سیستم (کارت های ویدئویی، بایوس و غیره) رم موجود را به اشتراک می گذارند و حتی حافظه کمتری را برای سیستم عامل و برنامه ها باقی می گذارند.
x64
- سازگاری مناسبی روی دستگاههای قدیمی ندارد.
- عملکرد و سرعت بالای آن معمولاً انرژی بیشتری مصرف می کند.
- بعید است درایورهای 64 بیتی برای سیستم ها و سخت افزارهای قدیمی در دسترس قرار گیرند.
- برخی از نرم افزارهای 32 بیتی به طور کامل با معماری 64 بیتی سازگار نیستند.
x86 بهتره یا x64؟
اگرچه هر دو x86 و x64 دارای مزایایی هستند، آینده محدودیتهایی را تحمل نمیکند، به این معنی که x86 در نهایت به ندرت مورد استفاده قرار میگیرد یا کاملاً حذف میشود. علاوه بر این، x64 بسیار سریعتر است، میتواند حافظه رم بیشتری را اختصاص دهد و دارای قابلیتهای پردازش موازی از طریق گذرگاه داده 64 بیتی است که باعث میشود انتخاب بهتری بین دو نوع معماری باشد. هنگام انتخاب نوع سیستم عامل برای نصب، همیشه بهتر است یک سیستم عامل 64 بیتی نصب کنید زیرا می تواند نرم افزارهای 32 بیتی و 64 بیتی را اجرا کند. از سوی دیگر، سیستم عامل مبتنی بر x86 تنها نرم افزار 32 بیتی را اجرا می کند. به طور کلی، x64 بسیار توانایی بیشتری نسبت به x86 دارد و از تمام رم نصب شده استفاده می کند، فضای هارد دیسک بیشتر، سرعت BUS سریعتر و عملکرد کلی بهتر را فراهم می کند.