در نسخهی ۶۴ بیتی ویندوز، معمولاً دو فولدر به نام Program Files و Program Files (x86) موجود است که در هر دو نرمافزارهای نصبشده روی ویندوز قرار میگیرد. اما تفاوت بین این دو پوشه چیست و چرا یک پوشهی واحد برای نصب نرمافزارها وجود ندارد؟ پاسخ کوتاه این است که پوشهی x86 نرمافزارهایی که معماری دستورات ۳۲ بیتی دارند را شامل میشود و پوشهی دیگر برای نرمافزارهای معمولی ۶۴ بیتی در نظر گرفته شده است و در حقیقت محتوای این دو فولدر، متفاوت است.
و سوالات بیشتری مطرح میشود: ویندوز و نرمافزار ۳۲ بیتی بهتر است یا نسخهی ۶۴ بیتی؟ تفاوت چقدر است و کدام بهتر است؟ در ادامه توضیحات بیشتری در مورد ویندوز ۳۲ بیتی و ۶۴ بیتی و تفاوت نرمافزارهای ۳۲ و ۶۴ بیتی که در پوشههای C:\Program Files و C:\Program Files (x86) قرار میگیرند، میدهیم.
تفاوت ویندوز ۳۲ بیتی و ۶۴ بیتی چیست و کدام نگارش بهتر است؟
ویندوز در آغاز تنها یک نگارش داشت و آن هم نگارش ۳۲ بیتی بود. در سیستم عامل ۳۲ بیتی، معماری مجموعه دستورات ۳۲ بیتی است و اساساً از اپلیکیشنی که معماری مجموعه دستورات آن ۳۲ بیتی باشد، پشتیبانی نمیشود. اما منظور از ISA یا معماری مجموعه دستورات چیست؟ پردازنده به جای اجرای تکتک فرآیندهای پردازشی به صورت تکی، چند ریزدستور را در قالب یک مجموعه دستور پردازش میکند تا سرعت کار چند برابر شود و از این رو ISA یا معماری مجموعه دستورات به شکلهای مختلف پدید آمده است. در حقیقت اگر مجموعه دستور وجود نداشت، هیچگاه سرعت پردازندههای امروزی تا این حد پیشرفت نمیکرد و بالا نبود.
x86 معروفترین و پرکاربردترین معماری مجموعه دستورات است که توسط پردازندههای اینتل و ایامدی پشتیبانی میشود. معماری x64 نیز چند سالی است که در تمام پردازندههای اینتل و ایامدی پشتیبانی شده است و ساختار ۶۴ بیتی دارد. در گوشیها و تبلتها، تراشههایی به کار میرود که معماری مجموعه دستورات ARMv7 یا ARMv8 را پشتیبانی میکنند که اولی ساختار ۳۲ بیتی دارد و دومی ساختار ۶۴ بیتی. توجه کنید که نام معماریها معمولاً ارتباطی با ۳۲ یا ۶۴ بیتی بودنشان ندارد و به دلایلی دلخواه انتخاب شده است.
اما کدام معماری مجموعه دستور بهتر است؟ مسلماً معماری ۶۴ بیتی.
طبعاً حالت ۶۴ بیتی بهتر است چرا که میتوان ریزدستورات را در صورت لزوم به صورت بستههای بزرگتر اجرا کرد. مزیتهای دیگری نیز مطرح است، مثل افزایش امنیت و پیشرفتهتر شدن رمزگذاری. مزیت جالب توجه دیگر این است که در معماری ۳۲ بیتی تنها میتوان ۴ گیگابایت حافظهی رم را آدرسدهی کرد که همان ۲ به توان ۳۲ بیت است. اما در نگارش ۶۴ بیتی ویندوز، ۲ به توان ۶۴ بیت حافظه را میتوان استفاده کرد که عملاً شبیه عدد بینهایت به نظر میرسد و به این زودیها رمهایی با این ظرفیت سرسامآور نخواهیم داشت! حتی در ابررایانهها.
آیا سرعت نرمافزار و ویندوز ۶۴ بیتی، ۲ برابر نسخهی ۳۲ بیتی است؟
وقتی از سرعت نرمافزار و ویندوز صحبت میکنیم، فقط یک عامل سرعت پردازش است! سرعت هارددیسک و پورتها و ... هم در بارگذاری نرمافزارها و اموری مثل ذخیره کردن و خواندن داده موثر است. زمانی سرعت دو برابر میشود که سرعت تمام بخشهای سیستم مثل هارددیسک و رم و پورتهای مادربورد و ... ۲ برابر شوند.
اما فرض کنید تمام سرعتها ۲ برابر سریعتر شده است. آیا نرمافزار ۶۴ بیتی ۲ برابر سریعتر اجرا میشود؟
قطعاً سرعت اجرا دو برابر نیست! چرا؟ به دو علت اصلی اشاره میکنیم:
به ندرت مواقعی پیش میآید که سرعت اجرا واقعاً دو برابر باشد چرا که همواره ریزدستورات متنوع هستند و ترکیب به شکل کاملاً بهینه ممکن است. به علاوه برخی منابع سختافزاری در فرآیند پردازش، مستقل از ۳۲ و یا ۶۴ بیتی دستورات عمل میکند. به عنوان مثال مقدار رم سیستم همواره یک ظرفیت مشخص دارد و کش پردازنده که حافظهای میانجی است و دادههایی که احتمالاً لازم میشوند را موقتاً نگهداری میکند تا دسترسی بسیار سریع باشد، همواره ظرفیت مشخصی دارد و مستقل از مقولهی نگارش ۳۲ یا ۶۴ بیتی است.
تفاوت عملکرد نسخهی ۶۴ بیتی و ۳۲ بیتی ویندوز و نرمافزارهای دیگر چقدر است؟ حداکثر ۲۰ تا ۵۰ درصد.
تفاوت واقعی سرعت اجرای پردازشهای سنگین مثل فشردهسازی تعداد زیادی فایل یا کانورت کردن ویدیو و صدا و همینطور رندر کردن یک منظرهی سهبعدی بسیار سنگین، حداکثر ۲۰ تا ۵۰ درصد است. گاهی تفاوت عملکرد به کمتر از ۱۰ یا ۱۵ درصد میرسد.
به بنچمارک عمومی PCMark Vantage که عملکرد کلی سیستم را محک میزند توجه کنید:
در فرآیندی مثل رندر که پردازش سنگینی محسوب میشود، تفاوت بزرگتری میبینیم و معمولاً در مورد تمام پردازندهها و سیستمها، نسخهی ۶۴ بیتی نرمافزارها و ویندوز، انتخاب بهینهتری است.
تفاوت فولدر Program Files و Program Files (x86)
در نسخهی ۳۲ بیتی ویندوز فقط مورد اول را داریم اما در نگارش ۶۴ بیتی که اغلب نرمافزارهای ۳۲ بیتی را پشتیبانی و اجرا میکند، دو پوشه خواهیم داشت. پوشهای با پسوند x86 برای نرمافزارهای ۳۲ بیتی در نظر گرفته شده و همهی فایلهای معمولی و فایلهای exe این نرمافزارها، به صورت خودکار در این پوشه قرار میگیرد. مایکروسافت برای شناسایی سادهتر، این تصمیم را اتخاذ کرده است و در صورت برهم زدن این سیستم نامگذاری، نرمافزارها اغلب با مشکل مواجه خواهند شد.
در حقیقت ویندوز با استفاده از یک شبیهسازی خاص به اسم Windows 32-bit on Windows 64-bit که به اختصار WOW64 گفته میشود، نرمافزار ۳۲ بیتی را در ویندوز ۶۴ بیتی اجرا میکند. هر زمان فایلی موردنیاز باشد، با توجه به اینکه دو پوشهی متفاوت وجود دارد، WOW64 سراغ پوشهی مناسب میرود و همهچیز عادی و خودکار انجام میشود.
به عنوان مثال کتابخانهها (لایبرری) که معمولاً پسوند DLL دارند، به صورت جداگانه برای نرمافزارهای ۳۲ بیتی و ۶۴ بیتی طراحی میشوند. شاید نامشان یکسان باشد اما اگر یک فایل dll را از فولدر نرمافزارهای ۶۴ بیتی به جای نسخهی ۳۲ بیتی همان فایل در مسیری مشابه ولیکن در فولدر نرمافزارهای ۳۲ بیتی قرار دهیم، احتمالاً نتیجه کرش کردن و اجرا نشدن نرمافزار است!
بنابراین وجود دو فولدر متفاوت برای نصب شدن نرمافزارها، همهچیز را ساده و مطمئن میکند و کمترین خطایی در اجرای نرمافزارها خواهیم داشت.
چرا پسوند نام فولدر نرمافزارهای ۳۲ بیتی، x32 نیست؟
شاید این سوال برای شما ایجاد شده که چرا پسوند نام فولدر نرمافزارهای ۳۲ بیتی، x86 است؟
علت با توضیحاتی که در مورد معماری مجموعه دستورات دادیم روشن است. نام معماری x86 و x64 است و ساختار آن به ترتیب ۳۲ بیتی و ۶۴ بیتی. در حقیقت از ابتدا نام معماری اینگونه انتخاب شده و ارتباطی با ساختار دستورات ندارد.
ساده
و اما کمی مرور تاریخچه x86: اینتل با معرفی تراشهای به اسم Intel 8086 برای اولین بار معماری مجموعه دستورات ۳۲ بیتی را مطرح کرده و قبل از آن تراشهها از مجموعه دستورات ۱۶ بیتی پشتیبانی میکردند. خوشبختانه سالها بعد برای نام معماری مجموعه دستورات ۶۴ بیتی، واژهی آشناتر x64 انتخاب شده که معادل ۶۴ بیتی بودن معماری است و به خاطر سپردن آن آسان است.