حالت طولانی

در معماری رایانه x86-64، حالت طولانی حالتی است که یک سیستم‌عامل ۶۴ بیتی می‌تواند دسترسی به دستورالعمل‌های ۶۴ بیتی و ثبات‌ها (registers) داشته باشد. برنامه‌های ۶۴ بیتی در یک زیر حالتی به نام ۶۴ بیت اجرا می‌شوند، در حالی که برنامه‌های ۳۲ بیتی و ۱۶ بیتی حالت محافظت شده در حالتی به نام حالت سازگاری اجرا می‌شوند. حالت واقعی یا حالت مجازی ۸۰۸۶ نمی‌تواند بطور طبیعی در حالت طولانی اجرا شود.

بررسی اجمالی

پردازنده x86-64 عیناً به مانند یک پردازنده IA-32 عمل می‌کند که در حال اجرا در حالت واقعی(real mode) یا حالت محافظت (protected mode) است و زیر حالت‌های حالت واقعی و حالت محافظت پشتیبانی می‌شوند زمانی که پردازنده در حالت طولانی(long mode) نیست.
یک بیت در CPUID با فیلد ویژگی‌های توسعه یافته(extended attributes field)نشان دهنده آن است که آیا برنامه‌ها در حالت واقعی (real mode) یا حالت حفاظت شده می‌تواند به حالت طولانی برود یا نه، که برنامه بتواند در حالت طولانی یک پردازنده x86-64 را شناسایی کند. این مشابه ویژگی‌های CPUID است که پردازنده‌های IA-64 اینتل از آن استفاده می‌کنند تا برنامه‌ها را قادر به تشخیص اینکه آیا آنها تحت شبیه‌سازی IA-32 در حال اجرا هستند، کنند. هنگامی که یک کامپیوتر روشن است، CPU در حالت واقعی شروع می‌شود و شروع به بوت شدن می‌کند. سپس سیستم عامل ۶۴ بیتی پردازنده را به حالت Long می‌برد و سپس شروع به پیش بردن نخ‌های اجرایی هسته می‌کند.

محدودیت‌های حافظه

در حالی که اندازه‌های ثبات‌ها به ۶۴ بیت نسبت به معماری قبلی x86 افزایش یافته است، آدرس دهی حافظه تا ۶۴ بیت کامل افزایش نیافته‌است. در حال حاضر، استفاده از کامپیوتر با حافظه کافی برای نیاز به یک ۶۴ بیت کامل برای آدرس دهی، غیرممکن است. تا زمانی که مورد باقی بماند، واحدهای پردازش / ذخیره‌سازی، برچسب‌های حافظه پنهان، MMUها و TLBها بدون هیچ گونه از دست دادن حافظه قابل استفاده، ساده می‌شود. با وجود این محدودیت، نرم‌افزار با استفاده از اشاره گرهای ۶۴ بیتی برنامه‌ریزی شده‌است و بنابراین قادر به استفاده از فضاهای آدرس فزاینده ای می‌شود که توسط پردازنده‌های آینده و سیستم‌های عامل پشتیبانی می‌شوند.

محدودیت‌های فعلی

اولین CPUهایی که معماری x86-64 را اجرا می‌کنند، یعنی CPUهای AMD Athlon 64 / Opteron (K8(آدرس دهی ۴۸ بیتی مجازی(virtual)و ۴۰ بیتی فیزیکی داشتند. 
فضای آدرس مجازی این پردازنده‌ها به دو منطقه ۴۷ بیتی تقسیم می‌شود که یکی از پایین‌ترین آدرس ممکن است و دیگری از بالاترین آدرس به پایین می‌رود. تلاش برای استفاده از آدرسهایی که خارج از این دو محدوده، خطای حفاظت عمومی (general protection fault)ایجاد می‌کند.
حد محدودیت آدرس دهی فیزیکی به آن بستگی دارد که چقدر رم نصب شده توسط کامپیوتر قابل دسترسی است. در یک سیستم چند پردازنده ccNUMA (Opteron) این شامل حافظه ای است که در گره‌های راه دور نصب شده‌است، زیرا پردازنده‌ها می‌توانند به‌طور مستقیم (و حافظه کش) تمام حافظه را بدون توجه به اینکه آیا در گره خانگی یا از راه دور است آدرس دهی کنند. ۱ TBمحدودیت (۴۰ بیتی) برای حافظه فیزیکی برای K8 برای رایانه‌های شخصی عظیم است، اما ممکن است محدودیتی برای استفاده در ابر رایانه‌ها باشد. در نتیجه، میکروارساخت K10 (یا "10h")، آدرس‌های فیزیکی ۴۸ بیتی را اجرا می‌کند و بنابراین می‌تواند تا ۲۵۶ ترابایت از رم راآدرس دهی کند.
هنگامی که نیاز است، میکروارساختار می‌تواند گام به گام بدون عوارض جانبی از نرم‌افزار گسترش یابد و به‌طور همزمان به خاطر پیاده‌سازی اش صرفه جویی در هزینه کند. برای گسترش در آینده، معماری از گسترش فضای آدرس مجازی تا ۶۴ بیت و حافظه فیزیکی تا ۵۲ بیت آدرس دهی پشتیبانی می‌کند.  این اجازه می‌دهد که پردازنده ⁶⁴ 2 بایت (۱۶ اگزابایت) فضای آدرس مجازی و ⁵² 2بایت (۴ پایتا بایتی) فضای آدرس فیزیکی، آدرس دهی کند.