دوستان اصلا چه فرقی بین این 64 بیتی با 32 بینی هست ؟
فرق 64 بیت و 32 بیت به معماری و نحوه ی ساخت پردازنده بر می گرده.
وقتی کامپیوتر روشن میشه پردازنده در حالت Real Mode شروع به کار می کنه. در این حالت که همون 16 بیتی هست پردازنده عملا فقط می تونه 16 بیت از اطلاعات رو همزمان ذخیره کنه یا ادرس دهی کنه. یعنی عملا 64 کیلوبایت.
--
پیچیده تر بگم، در داخل پردازنده Register هایی وجود داره که مثل یه متغیر در برنامه نویسی عمل می کنن. با این تفاوت که این ها سخت افزاری هستن و امکان زیاد و کم کردن تعدادشون نیست و فقط میشه مقدارشون رو عوض کرد. این Register ها هرکدوم برای وظیفه ی خاصی استفاده می شن و اسم های ثابتی دارن. پردازنده هم مستقیما با این ها کار میکنه. یعنی رجیستری وجود داره که به پردازنده میگه دستور بعدی که باید اجرا بشه در کدوم ادرس از حافظه قرار داره و غیره.
البته این فقط بخشی از موضوع هست و بیشتر از این در حوصله بحث نمی گنجه
--
وقتی سیستم راه اندازی میشه و دستوراتی که توسط بوت لودر اجرا میشه پردازنده رو در حالتی که سیستم عامل مورد نظر قراره درش اجرا بشه تنظیم می کنه. که در سیستم عامل 32 بیتی Protected Mode و در 64 بیتی Long Mode نام داره.
بعد از اون سیستم عامل اجرا میشه و باقی ماجرا که در ادامه بهش میرسم.
در معماری پردازنده های 64 بیتی که توسط شرکت اینتل طراحی شده بود(که اسمشم IA-64 هست) در حالت Long Mode امکان اجرای دستوراتی که برای حالت Protected Mode نوشته شده بود وجود نداشت. یعنی تمام نرم افزار های موجود باید دوباره نوشته میشدن تا قابلیت اجرا در سی پی یو جدید را داشته باشن و در اون صورت قابلیت اجرا در پردازنده های قدیمی تر رو از دست میدادن.
در اینجا AMD وارد میدان میشه و با طراحی معماری جدید به نام AMD64 پردازنده هایی میسازه که قابلیت اجرای دستورات 32 بیتی در حالت Long mode رو میداد. به همین دلیل از این معماری استقبال زیادی می شه و اینتل مجبور میشه تا از این نوع معماری کپی برداری کنه و اسمشم میزاره EM64T که بعدا بهش Intel64 و X86-64 یا X64 هم می گفتن. (قابل توجه دوستانی که می خوان بدونن چرا به 32 بیتی می گن X86 و به 64 بیت می گن X64 . درواقعX86نام معماری پردازنده های 32 بیت اون زمان بود و معماری 64 بیت رو هم که توضیح دادم.)
برگردیم به بحث رجیستر ها. فقط همین قدر می گم که در حالت لانگ مد هر رجیستر حداکثر می تونه 64 بیت داده رو در خودش قرار بده و در Protected mode هم به همین صورت. دلیل این که در حالت 32 بیتی پردازنده نمیتونه بیشتر از 4 گیگابایت رم رو شناسایی کنه هم همین هست که چون هر رجیستر می تونه حداکثر تا عدد 4,294,967,295 در خودش ذخیره کنه (یعنی 2 به توان 32 منهای 1) به همین خاطر هم فقط قادر هست تا این مقدار بایت از حافظه رو ببینه. چون اگر بخواد به رجیستر مربوطه 1 واحد اضافه کنه اون رجیستر (EIP ESI ESPEDI که وظیفه های نگه داری ادرس های حافظه رو دارند) درواقع 0 میشه.
اما در Long mode هر رجیستر قابلیت نگه داری از 64 بیت اطلاعات رو دارن یعنی هر رجیستر قابلیت ذخیره کردن یک عدد به بزرگی 18,446,744,073,709,551,615 رو داره. که این یعنی هرکدم از رجیستر های مربوطه (RDI RIP RSI RSP ) قابلیت ادرس دهی حافظه تا فضای 16 پتابایت رو در تئوری فراهم می کنه.
--
اما در سیستم عامل های ویندوز 64 بیت: زمانی که 64 بیت تازه به میدان اومده بود مایکروسافت یه نسخه از ویندوز اکس پی 64 بیت رو بیرون داد که بیشتر حالت امتحانی داشت و خیلی زود از دور پشتیبانی خارج شد. (حتی سرویس پک 3 هم براش نیومد)
بعد از ویندوز اکس پی. زمانی که مایکروسافت داشن ویندوز ویستا رو مینوشت برنامه های 64 بیتی خیلی کم و نایاب بودن، به همین دلیل مایکروسافت پشتیبانی از پردازنده های 32 بیتی رو قطع نکرد و هسته ی 32 بیتی هم برای ویندوز ویستا نوشت.
همونطوری که گفتم در معماری AMD پردازنده قابلیت اجرای دستورات 32 بیتی رو داشت بنابراین مایکروسافت یک نسخه از هسته ی 32 بیتی در ویندوز های 64 بیتی قرار داد (C:\Windows\system32\kernel32.dll) تا برنامه های 32 بیتی در ویندوز قابل اجرا بشن. نسخه ی 64 بیتی هسته ی ویندوز هم که در C:\windows\syswow64\kernel32.dll قرار داره برای نرم افزار های 64 بیت استفاده میشه.
به همین دلیل هم هست که حداقل رم پیشنهادی ویندوز 64 بیتی از 32 بیتی بیشتر هست.
امیدوارم کامل بوده باشه