Кіріспе

Компьютерлік архитектураның бит ені Компьютерлік архитектурада 64 биттік бүтін сандар, жад адрестері немесе басқа да дерек бірліктері 64 бит енімен сипатталады. Сондай-ақ, 64 биттік орталық процессорлар (CPU) және арифметикалық-логикалық құрылғылар (ALU) процессор тіркелгіштеріне, адрестік шиналарға немесе осы көлемдегі дерек шиналарына негізделген болып табылады. Мұндай процессорды қолданатын компьютер 64 биттік компьютер деп аталады. Бағдарламалық қамтамасыздан қарағанда, 64 биттік есептеу – 64 биттік виртуалды жад адрестерін қолданатын машиналық кодты пайдалануды білдіреді. Дегенмен, барлық 64 биттік командалар жиынтығы 64 биттік виртуалды жад адрестерін қолдамайды; мысалы, x86-64 және AArch64 виртуалды адрестің тек 48 битін ғана қолдайды, ал виртуалды адрестің қалған 16 битінің барлығы нөлдерден (000) немесе бірлерден (111) тұруы керек. Ал кейбір 64 биттік командалар жиынтығы физикалық жад адресінің 64 биттен кемін қолдайды. «64 бит» термині сонымен қатар 64 биттік процессорлардың қалыпты жағдай болып табылатын компьютерлердің буынын сипаттайды. 64 бит – компьютерлік архитектураның, шиналардың, жадтың және CPU-дың белгілі бір кластарын, сондай-ақ оларда жұмыс істейтін бағдарламалық жасақтаманы анықтайтын сөздің мөлшері. 64 биттік CPU-лар 1970 жылдардан бері суперкомпьютерлерде (Cray 1, 1975) және 1990 жылдардың басынан бастап төмендетілген командалар жиынтығына (RISC) негізделген жұмыс станциялары мен серверлерде қолданылып келеді. 2003 жылы 64 биттік CPU-лар x86-64 процессорлары және PowerPC G5 түрінде негізгі PC нарығына енгізілді. 64 биттік тіркелгіш 264 (18 квинтиллионнан астам немесе 1,8 × 1019) әртүрлі мәнді сақтай алады. 64 битте сақталатын бүтін сандардың диапазоны қолданылатын бүтін сандық өрнеуге байланысты. Ең көп таралған екі өрнеу бойынша диапазон (белгісіз) екілік сан ретінде өрнектегенде 0-ден 18 446 744 073 709 551 615-ке дейін (264 − 1) және екілік толықтырғыш ретінде өрнектегенде -9 223 372 036 854 775 808 (-263) -ден 9 223 372 036 854 775 807-ге дейін (263 − 1) болады. Осылайша, 64 биттік жад адрестері бар процессор 264 байтқа (16 эксабайт немесе EiB) байттық жадқа тікелей қол жеткізе алады. Ерекше айтылмаса, 64 биттік компьютерлік архитектурада 64 бит ені бар бүтін сандар мен адрестік тіркелгіштері болады, бұл 64 биттік дерек түрлері мен адрестерді тікелей қолдауға мүмкіндік береді. Алайда, CPU-да сыртқы дерек шиналары немесе тіркелгіштерден өзгеше өлшемдегі адрестік шиналары болуы мүмкін, тіпті одан да үлкен (мысалы, 32 биттік Pentium-да 64 биттік дерек шинасы болған).

Архитектуралық әсерлері

Процессорлық регистрлер әдетте бірнеше топқа бөлінеді: бүтін сан, қозғалатын нүкте, бір команда, көп дерек (SIMD), басқару және көбінесе адрестік арифметика үшін арнайы регистрлер, олар адрестік, индекс немесе базалық регистрлер сияқты әртүрлі қолданыстар мен атауларға ие болуы мүмкін. Дегенмен, қазіргі заманғы құрылымдарда бұл функцияларды көбінесе жалпы мақсаттағы бүтін сандық регистрлер орындайды. Көптеген процессорларда жадтағы деректерді адрестеу үшін тек бүтін сандар немесе адрестік регистрлер ғана қолданылады; басқа типтегі регистрлер қолданылмайды. Сондықтан, бұл регистрлердің мөлшері әдетте тікелей адрестелетін жад көлемін шектейді, тіпті егер кеңірек, мысалы, қозғалатын нүктелік регистрлер болса да. Көптеген жоғары өнімділіктегі 32 биттік және 64 биттік процессорлар (кейбір маңызды ерекшеліктер – ескі немесе кіріктірілген ARM архитектурасы (ARM) және 32 биттік MIPS архитектурасы (MIPS) процессорлары) интеграцияланған, көбінесе, бірақ әрқашан емес, 64 биттік деректерге негізделген қозғалатын нүктелік аппараттық құралдарға ие. Мысалы, x86/x87 архитектурасында 64 биттік (және 32 биттік) қозғалатын нүктелік мәндерді жадқа жүктеуге және сақтауға қабілетті командалар болғанымен, ішкі қозғалатын нүктелік деректер мен регистрлер форматы 80 биттік, ал жалпы мақсаттағы регистрлер 32 биттік. Ал 64 биттік Alpha отбасы 64 биттік қозғалатын нүктелік деректер мен регистрлер форматын және 64 биттік бүтін сандық регистрлерді қолданады.

Тарих

Көптеген компьютерлік нұсқаулар жиынтығы бір бүтін сандық регистрді компьютердің физикалық немесе виртуалды жадының кез келген орнына жад мекенжайын сақтау үшін жасалған. Сондықтан жадқа орналасатын адрестердің жалпы саны көбінесе осы регистрлердің енімен анықталады. 1960 жылдардағы IBM System/360 32 биттік компьютер болды; ол 32 биттік бүтін сандық регистрлерге ие болды, бірақ адрестер үшін тек төменгі 24 битті ғана пайдаланды, нәтижесінде 16 Мб (16 × 10242 байт) адрестік кеңістік пайда болды. 1970 жылдары DEC VAX сияқты 32 биттік суперминикомпьютерлер кең таралды, ал 1980 жылдардың ортасында Motorola 68000 отбасы және Intel 80386 басталатын x86 отбасының 32 биттік мүшелері сияқты 32 биттік микропроцессорлар пайда болды, бұл 32 битті ыңғайлы регистр өлшемі ретінде де-факто консенсусқа айналдырды. 32 биттік адрестік регистр 232 адреске немесе 4 ГБ кездейсоқ сәйкес жадқа (RAM) сілтеме жасауға мүмкіндік берді. Бұл архитектуралар жасалған кезде 4 ГБ жад орнатулардағы әдеттегі көлемнен (4 МБ) әлдеқайда көп болды, сондықтан бұл адрестеу үшін жеткілікті резерв деп есептелді. 4,29 миллиард мекенжай басқа да маңызды себептерге байланысты жұмыс істеу үшін қолайлы мөлшер деп саналды: 4,29 миллиард бүтін сан деректер базасы сияқты қосымшаларда көптеген объектілерге бірегей сілтемелер беруге жеткілікті. 1970 және 1980 жылдардағы Cray 1 сияқты кейбір суперкомпьютерлік архитектуралар 64 битке дейінгі ені бар регистрлерді қолданды және 64 биттік бүтін сандық арифметиканы қолдады, бірақ 64 биттік адрестеуді қолдамады. 1980 жылдардың ортасында Intel i860-тың дамуы басталды және 1989 жылы шығарылды; i860 32 биттік бүтін сандық регистрлерге және 32 биттік адрестеуге ие болды, сондықтан ол толыққанды 64 биттік процессор емес еді, бірақ оның графикалық блогы 64 биттік бүтін сандық арифметиканы қолдады. Дегенмен, 32 биттік стандарт 1990 жылдардың басына дейін қалыпты жағдай болып қалды, сол кезде жадтың құнының үнемі төмендеуі 4 ГБ-қа жуық оперативті жадты орнатуға мүмкіндік берді, ал 4 ГБ шегінен асып түсетін виртуалды жад кеңістіктерін пайдалану белгілі бір мәселелерді шешу үшін қажет болды. Жауап ретінде MIPS және DEC жоғары деңгейдегі жұмыс станциялары мен серверлік машиналар үшін бастапқыда 64 биттік микропроцессор архитектурасын әзірледі. 1990 жылдардың ортасында HAL Computer Systems, Sun Microsystems, IBM, Silicon Graphics және Hewlett Packard өздерінің жұмыс станциялары мен серверлік жүйелері үшін 64 биттік архитектураларды жасады. Бұл үрдіске IBM мейнфреймдері ерекше жатты, олар 32 биттік деректерді және 31 биттік мекенжай өлшемін қолданды; IBM мейнфреймдері 2000 жылға дейін 64 биттік процессорларды қамтыған жоқ. 1990 жылдары тұтынушы электроникасы мен кіріктірілген қосымшаларда арзан 64 биттік микропроцессорлар қолданылды. Атап айтуға болады, Nintendo 64 және PlayStation 2 компьютерлерінде олар жеке компьютерлерде пайда болғанға дейін 64 биттік микропроцессорлар болды. Жоғары деңгейдегі принтерлер, желілік жабдықтар және өнеркәсіптік компьютерлер де Quantum Effect Devices R5000 сияқты 64 биттік микропроцессорларды қолданды. 64 биттік есептеу 2003 жылдан бастап жеке компьютерлерге енді, Apple Macintosh желілеріндегі кейбір модельдер PowerPC 970 процессорларына (Apple G5 деп аталды) ауысқанда және Advanced Micro Devices (AMD) өзінің алғашқы 64 биттік x86 64 процессорын шығарды. Физикалық жад ақырында 32 биттік шектемеге жетті. 2023 жылы ноутбук компьютерлері әдетте 16 ГБ жадпен, ал серверлер 64 ГБ-қа дейін жадпен жабдықталды, бұл 32 биттің 4 ГБ адрестік сыйымдылығынан әлдеқайда көп.

64-бит деректердің уақыт сызығы

1961 жылы IBM 64 биттік дерек сөздерін және 32 немесе 64 биттік нұсқау сөздерін қолданатын IBM 7030 Stretch суперкомпьютерін жеткізді. 1974 жылы Control Data Corporation 64 биттік сөз архитектурасын қолданатын CDC Star 100 векторлық суперкомпьютерін іске қосты (алдыңғы CDC жүйелері 60 биттік архитектураға негізделген). International Computers Limited компаниясы ICL 2900 сериясын 32 бит, 64 бит және 128 бит екілік толықтырғыш бүтін сандармен; 64 бит және 128 бит қозғалатын нүкте сандарымен; 32 бит, 64 бит және 128 бит жинақталған ондық сандармен және 128 биттік аккумуляторлық тіркегішпен іске қосты. Архитектура ICL және Fujitsu машиналарының тізбегі арқылы сақталды. Соңғысы – Fujitsu Supernova, ол 64 биттік Intel процессорларында бастапқы ортаны эмуляциялайды. 1976 жылы Cray Research 64 биттік сөз архитектурасына негізделген және кейінгі Cray векторлық суперкомпьютерлерінің негізін құрайтын алғашқы Cray 1 суперкомпьютерін жеткізді. 1983 жылы Elxsi 6400 параллельді мини-суперкомпьютерін іске қосты. Elxsi архитектурасында 64 биттік дерек тіркегіштері бар, бірақ 32 биттік адрестік кеңістік бар. 1989 жылы Intel Intel i860 қысқартылған нұсқаулар жиынтығы (RISC) процессорын ұсынды. "64 биттік микропроцессор" деп сатылған бұл құрылғы негізінен 32 биттік архитектураға ие болды, ол 64 биттік бүтін сандық операцияларды орындай алатын 3D графикалық блогымен күшейтілді. 1993 жылы Atari компаниясы архитектурасында 64 биттік кеңдіктегі дерек жолдары бар Atari Jaguar бейне ойын консолін ұсынды.

64- биттік адрестің уақыт сызығы

1991 жылы MIPS Computer Systems MIPS III архитектурасын іске асыратын алғашқы 64 бит микропроцессорды, R4000-ды шығарады. CPU IRIS Crimson-нан бастап SGI графикалық жұмыс станцияларында қолданылады. Kendall Square Research өзінің алғашқы KSR1 суперкомпьютерін OSF/1-ді іске асыратын 64 бит RISC процессор архитектурасы негізінде ұсынады. 1992 жылы Digital Equipment Corporation (DEC) PRISM жобасының нәтижесінде пайда болған таза 64 биттік Alpha архитектурасын енгізеді. 1994 жылы Intel 64 биттік IA 64 архитектурасы (Hewlett Packard компаниясымен бірлесіп әзірленген) 32 биттік IA 32 процессорларының ізбасары ретінде жоспарларын жариялайды. Іске қосу 1998-1999 жылдар аралығында күтілді. 1995 жылы Sun 64 биттік SPARC процессорын, UltraSPARC-ты шығарады. Fujitsu компаниясына тиесілі HAL Computer Systems 64 биттік процессор негізінде жұмыс станцияларын шығарады, HAL-дың тәуелсіз әзірленген бірінші буын SPARC64-і. IBM A10 және A30 микропроцессорларын, алғашқы 64 биттік PowerPC AS процессорларын шығарады. IBM сондай-ақ 64 биттік AS/400 жүйесін жаңартады, ол операциялық жүйені, деректер базасын және қосымшаларды түрлендіре алады. 1996 жылы Nintendo MIPS R4000-ның төмен бағалы нұсқасы негізінде жасалған Nintendo 64 бейне ойын консолін ұсынады. HP өзінің 64 биттік PA RISC 2.0 архитектурасының алғашқы PA 8000-ын шығарады. 1998 жылы IBM толық 64 биттік PowerPC/POWER процессорларының POWER3 желісін шығарады. 1999 жылы Intel IA 64 архитектурасы үшін нұсқаулар жиынтығын жариялайды. AMD IA 32 үшін 64 биттік кеңейтімдер жиынтығын x86 64 (кейін AMD64 деп аталды) деп атайды. 2000 жылы IBM өзінің алғашқы 64 биттік z/Architecture мейнфреймін, zSeries z900-ды шығарады. z/Architecture – 32 биттік ESA/390 архитектурасының 64 биттік нұсқасы, 32 биттік System/360 архитектурасының ұрпағы. 2001 жылы Intel IA 64 процессорлар желісін нарыққа шығарудағы бірнеше кешігулерден кейін ұсынады. Қазір Itanium деп таныстырылып, жоғары деңгейдегі серверлерге бағытталған, сатулар күтілгендей болмайды. 2003 жылы AMD өзінің AMD64 архитектурасына негізделген Opteron және Athlon 64 процессорлар желісін ұсынады, бұл x86 негізіндегі алғашқы 64 биттік процессор архитектурасы. Apple сондай-ақ IBM өндірген 64 биттік "G5" PowerPC 970 процессорын таратады. Intel компаниясы Itanium чиптері тек 64 биттік процессорлар болып қала береді деп мәлімдейді. 2004 жылы Intel AMD-нің нарықтағы табысына жауап ретінде IA 32e (кейін EM64T деп аталды, содан кейін Intel 64 деп қайта аталды) деп аталған AMD64 кеңейтімдерінің клонын жасап жатқанын мойындайды. Intel жаңа 64 биттік нұсқаулар жиынтығын қолдайтын Xeon және Pentium 4 процессорлары отбасыларының жаңартылған нұсқаларын шығарады. VIA Technologies Isaiah 64 биттік процессорын жариялайды. 2006 жылы Sony, IBM және Toshiba PlayStation 3, серверлер, жұмыс станциялары және басқа да құрылғыларда қолдануға арналған 64 биттік Cell процессорларын шығара бастайды. Intel Core 2 Duo-ны өзінің мобильді, үстел және жұмыс станциялары желісі үшін алғашқы кең таралған x86 64 процессоры ретінде ұсынады. Бұрынғы 64 биттік кеңейтім процессорлар желілері тұтынушылар нарығында кеңінен қол жетімді болған жоқ (көптеген 64 биттік Pentium 4 / D OEM болды), 64 биттік Pentium 4, Pentium D және Celeron 2006 жылдың соңына дейін жаппай өндірілмеді (жақсы өнімділік пластиналарының көпшілігі серверлер мен мейнфреймдерге бағытталған, ал негізгі ағым 2006 жылға дейін 130 нм 32 биттік процессорлар желісі болып қала берді) және Core 2 пайда болғаннан кейін жақын арада төменгі деңгейге түсті. AMD өзінің алғашқы 64 биттік мобильді процессорын шығарып, 90 нм технологиясымен өндірді. 2011 жылы ARM Holdings ARM архитектурасының алғашқы 64 биттік нұсқасы ARMv8 A-ны жариялайды. 2012 жылы ARM Holdings 2012 жылдың 30 қазанында 64 биттік архитектураға негізделген алғашқы ядролары Cortex A53 және Cortex A57 ядроларын жариялайды. 2013 жылы Apple әлемдегі алғашқы 64 биттік процессоры бар смартфон iPhone 5S-ты жариялайды, ол iPad Air және iPad Mini 2 сияқты чипте A7 ARMv8 A негізделген жүйесін қолданады, бұл әлемдегі алғашқы 64 биттік планшеттік процессор. 2014 жылы Google 64 биттік Tegra K1 чипінде жұмыс істейтін алғашқы Android құрылғысы Nexus 9 планшетін жариялайды. 2015 жылы Apple 64 биттік процессорды пайдаланатын алғашқы iPod Touch A8 ARMv8 A негізделген жүйесімен iPod Touch (6-шы буын) және әлемдегі алғашқы 64 биттік процессормен Apple TV (4-ші буын) ұсынады. 2018 жылы Apple чипте 64 биттік S4 ARMv8 A процессорын негіздеген алғашқы Apple Watch – Apple Watch Series 4-ті жариялайды. 2020 жылы Synopsis ARC ISA-ның алғашқы 64 биттік нұсқасы ARCv3 ISA-ны жариялайды.

64-бит операциялық жүйенің уақыт сызығы

1985 жылы Cray Unix операциялық жүйесінің алғашқы 64 биттік UNICOS-ын шығарды. 1993 жылы DEC Alpha архитектурасына негізделген жүйелері үшін 64 биттік DEC OSF/1 AXP Unix сияқты операциялық жүйені (кейін Tru64 UNIX деп қайта аталды) шығарды. 1994 жылы Silicon Graphics компаниясы IRIX операциялық жүйесінің 6.0 нұсқасына R8000 процессорына қолдауды қосты. 1995 жылы DEC OpenVMS 7.0-ді, OpenVMS-тің Alpha үшін алғашқы толық 64 биттік нұсқасын шығарды. Альфа архитектурасы үшін алғашқы 64 биттік Linux дистрибуциясы шығарылды. 1996 жылы Silicon Graphics компаниясы IRIX операциялық жүйесінің 6.2 нұсқасына 64 биттік режимдегі R4x00 процессорларын қосты. 1998 жылы Sun компаниясы 64 биттік UltraSPARC-ты толық қолдауымен Solaris 7-ді шығарды. 2000 жылы IBM zSeries 64 биттік мейнфреймдер үшін MVS-тен тараған 64 биттік операциялық жүйе z/OS-ты шығарды; z жүйелеріндегі 64 биттік Linux процессор шығарылымын дереу іске қосты. 2001 жылы Linux x86 64-ті толық қолдайтын алғашқы OS ядросы болды (симуляторда, өйткені x86 64 процессорлары әлі шығарылмаған). 2001 жылы Microsoft Windows XP 64 Bit Edition-ды Itanium-ның IA 64 архитектурасы үшін шығарды; ол 32 биттік бағдарламаларды орындау қабаты арқылы іске қоса алады. 2003 жылы Apple компаниясы Mac OS X 10.3 "Panther" операциялық жүйесін шығарды, ол PowerPC 970 процессорларында 64 биттік бүтін сандар арифметикасын қолдайды. Бірнеше Linux дистрибутивтері AMD64-ті қолдаумен шығарылды. FreeBSD AMD64-ті қолдаумен шығарылды. 2005 жылдың 4 қаңтарында Microsoft Windows XP 64 Bit Edition-ды тоқтатты, өйткені IA 64 процессорлары бар компьютерлер өткен қыркүйектен бері қолжетімді емес еді және оны алмастыру үшін Windows-тың x86 64 нұсқаларын жасап жатқанын хабарлады. 31 қаңтарда Sun AMD64 және EM64T процессорларын қолдауымен Solaris 10-ды шығарды. 29 сәуірде Apple Mac OS X 10.4 "Tiger" бағдарламасын шығарды, ол PowerPC 970 процессорлары бар машиналарда 64 биттік командалық жол қолданбаларын шектеулі түрде қолдайды; Intel-ге негізделген Mac-тер үшін кейінгі нұсқалар EM64T процессорлары бар Mac-терде 64 биттік командалық жол қолданбаларын қолдайды. 30 сәуірде Microsoft AMD64 және EM64T процессорлары үшін Windows XP Professional x64 Edition және Windows Server 2003 x64 Edition бағдарламаларын шығарды. 2006 жылы Microsoft Windows Vista-ны шығарды, оның ішінде AMD64/EM64T процессорлары үшін 64 биттік нұсқасы 32 биттік үйлесімділікті сақтайды. 64 биттік нұсқада барлық Windows қолданбалары мен компоненттері 64 биттік, бірақ олардың көпшілігі 32 биттік нұсқаларын плагиндермен үйлесімділік үшін қосады. 2007 жылы Apple Mac OS X 10.5 "Leopard" бағдарламасын шығарды, ол PowerPC 970 немесе EM64T процессорлары бар машиналарда 64 биттік қолданбаларды толық қолдайды. 2009 жылы Microsoft Windows 7-ді шығарды, Windows Vista сияқты AMD64 / Intel 64 процессорлары үшін толық 64 биттік нұсқаны қамтиды; көптеген жаңа компьютерлер әдетте 64 биттік нұсқамен жүктеледі. Microsoft сонымен қатар Windows Server 2008 R2-ні шығарды, бұл тек 64 биттік серверлік операциялық жүйе. Apple Mac OS X 10.6 "Snow Leopard" бағдарламасын шығарды, ол AMD64/Intel64 процессорлары үшін 64 биттік ядромен бірге шығарылады, бірақ тек Apple компьютерлерінің кейбір соңғы модельдері 64 биттік ядроны әдеттегідей іске қосады. Mac OS X 10.6 бағдарламасының көпшілігі 64 биттік болып табылады. 2013 жылы Apple iOS 7-ді шығарды, ол AArch64 процессорлары бар машиналарда 64 биттік бағдарламаларды қолдайтын 64 биттік ядроға ие. 2014 жылы Google Android Lollipop-ты шығарды, бұл Android операциялық жүйесінің 64 биттік процессорларды қолдайтын алғашқы нұсқасы. 2017 жылы Apple iOS 11 жүйесін шығарды, тек AArch64 процессорлары бар машиналарды қолдайды. 64 биттік ядросы бар, ол тек 64 биттік қолданбаларды қолдайды. 32 биттік қолданбалар енді үйлесімсіз. 2018 жылы Apple watchOS 5-ті шығарды, бұл watchOS-тің 64 биттік қолдауды ұсынатын алғашқы нұсқасы. 2019 жылы Apple macOS 10.15 "Catalina" бағдарламасын шығарды, 32 биттік Intel бағдарламаларын қолдауды тоқтатты. 2021 жылдың 5 қазанында Microsoft Windows 11-ді шығарды, ол тек 64 биттік жүйелерді қолдайды, IA 32 жүйелерін қолдауды тоқтатты. 2022 жылы Google Pixel 7-ді шығарды, ол 64 бит емес қолданбаларды қолдауды тоқтатты. Apple watchOS 9 нұсқасын шығарды, бұл watchOS-тің бірінші нұсқасы, ол тек 64 биттік процессорлы Apple Watch модельдерінде (оның ішінде Apple Watch Series 4 немесе одан жаңа, Apple Watch SE (1-ші буын) немесе одан жаңа және жаңадан енгізілген Apple Watch Ultra) жұмыс істейді. Apple Watch Series 3 соңғы 32 биттік процессоры бар Apple Watch моделі ретінде қолдауды тоқтатты.

Өңдеушілердің шектері

64 биттік микропроцессор 16 ЭБ (16 × 10246 = 264 = 18 446 744 073 709 551 616 байт немесе шамамен 18,4 эксабайт) жадты мекенжайлай алады. Дегенмен, барлық нұсқаулар жиынтығы және осы нұсқаулар жиынтығын іске асыратын барлық процессорлар толық 64 биттік виртуалды немесе физикалық адрестік кеңістікті қолдамайды. x86 64 архитектурасы (2016 жылғы дерек бойынша) виртуалды жад үшін 48 битке және кез келген процессор үшін физикалық жад үшін 52 битке дейін мүмкіндік береді. Бұл шектер 256 ТиБ (256 × 10244 байт) және 4 ПиБ (4 × 10245 байт) жад көлемін қамтамасыз етеді. Қазіргі уақытта компьютерде 4 пебибайт жад орнату мүмкін емес (жад чиптерінің физикалық өлшеміне байланысты), бірақ AMD үлкен серверлерді, ортақ жад кластерлерін және физикалық адрестік кеңістіктің басқа да қолданыстарын қарастырды, олар жақын болашақта осы деңгейге жақындауы мүмкін. Осылайша, 52 биттік физикалық мекенжай кеңейтуге жеткілікті мүмкіндік береді, сонымен қатар толық 64 биттік физикалық мекенжайларды іске асырудың қосымша шығындары болмайды. Сол сияқты, 48 биттік виртуалды адрестік кеңістік 4 ГиБ (4 × 10243 байт) 32 биттік шегінен 65 536 (216) есе артық қамтамасыз ету үшін жобаланған, бұл кейінірек кеңейтуге мүмкіндік береді және толық 64 биттік мекенжайларды аударудың артық шығындарына ұшырамайды. Power ISA v3.0 виртуалды жад үшін 64 битті, ал сегменттелген мекенжайға сәйкестендірілген тиімді мекенжай үшін 65 пен 78 бит аралығында мүмкіндік береді, ал кез келген процессор үшін физикалық жад үшін 60 битке дейін мүмкіндік береді. Oracle SPARC Architecture 2015 виртуалды жад үшін 64 битті және кез келген процессор үшін физикалық жад үшін 40 мен 56 бит аралығында мүмкіндік береді. ARM AArch64 виртуалды жады жүйесінің архитектурасы виртуалды жад үшін 48 битті және кез келген процессор үшін физикалық жад үшін 32-ден 48 битке дейін мүмкіндік береді. DEC Alpha спецификациясы виртуалды жады адрестік кеңістігінің кемінде 43 битін (8 ТиБ) қолдауды талап етеді, сондай-ақ қалған қолдаусыз биттер нөлге тең болса, аппараттық тексеру және тоқтату қажет (болашақтағы процессорларда үйлесімділікті сақтау үшін). Alpha 21064 виртуалды жады мекенжай кеңістігінің 43 битін (8 ТиБ) және физикалық жады мекенжай кеңістігінің 34 битін (16 ГиБ) қолдады. Alpha 21164 виртуалды жады адрестік кеңістігінің 43 битін (8 ТиБ) және физикалық жады адрестік кеңістігінің 40 битін (1 ТиБ) қолдады. Alpha 21264 пайдаланушы конфигурациялайтын 43 немесе 48 бит виртуалды жады адрестік кеңістігін (8 ТиБ немесе 256 ТиБ) және 44 бит физикалық жады адрестік кеңістігін (16 ТиБ) қолдады.

Бағдарламалық қамтамасыз етудің қол жетімділігі

64 биттік x86 негізіндегі жүйелерде кейде 32 биттік архитектуралар үшін жазылған бағдарламалық қамтамасыздымалардың баламалары жоқ. Microsoft Windows-тағы ең маңызды мәселе – ескірген аппараттық құрылғыларға арналған үйлесімсіз драйверлер. Көптеген 32 биттік қолданбалы бағдарламалық қамтамасыздыма 64 биттік операциялық жүйеде үйлесімділік режимінде, яғни эмуляция режимінде жұмыс істей алады, мысалы, IA 64 және AMD64 үшін Microsoft WoW64 технологиясы. 64 биттік Windows Native Mode драйверлік ортасы 64 биттік, ол 32 биттік Win32 жүйелік кодын шақыра алмайды (көбінесе Winprinter сияқты, пайдаланушы режиміндегі бағдарламалық қамтамасыздымада нақты аппараттық функциясы эмуляцияланатын құрылғылар). Көптеген құрылғылар үшін 64 биттік драйверлер 2007 жылдың басына дейін (Vista x64) қолжетімді болмағандықтан, Windows-тың 64 биттік нұсқасын пайдалану қиындық тудырды. Алайда, бұл тенденция 64 биттік есептеулерге қарай жылжыды, әсіресе жад бағасы төмендегенде және 4 ГБ-тан астам RAM пайдалану жиілегенде. Көптеген өндірушілер жаңа құрылғыларға 32 биттік және 64 биттік драйверлерді ұсына бастады, сондықтан 64 биттік драйверлердің жетіспеуі мәселе болмай қалды. Көптеген ескі құрылғыларға 64 биттік драйверлер ұсынылмады, сондықтан оларды 64 биттік жүйелерде қолдану мүмкін болмады. Драйверлердің үйлесімділігі ашық кодты драйверлер үшін аз мәселе болды, себебі 32 биттік драйверлерді 64 биттік пайдалану үшін өзгертуге болады. 2007 жылдың басына дейін жасалған аппараттық құралдарды қолдау ашық кодты платформалар үшін қиын болды, себебі пайдаланушылардың саны салыстырмалы түрде аз болды. Windows-тың 64 биттік нұсқалары 16 биттік бағдарламалық қамтамасыздыманы іске қоса алмайды. Дегенмен, көптеген 32 биттік қолданбалар жақсы жұмыс істейді. 64 биттік пайдаланушылар 16 немесе 32 биттік операциялық жүйенің виртуалды машинасының көмегімен 16 биттік қолданбаларды іске қосуға немесе NTVDM-ге баламаларын пайдалануға мәжбүр. Mac OS X 10.4 "Tiger" және Mac OS X 10.5 "Leopard" тек 32 биттік ядроға ие болды, бірақ олар 64 биттік процессорларда 64 биттік пайдаланушы режиміндегі кодты іске қоса алады. Mac OS X 10.6 "Snow Leopard" 32 және 64 биттік ядроларға ие болды және көптеген Mac-терде 64 биттік процессорларда да 32 биттік ядроны пайдаланды. Бұл Mac-терге 64 биттік процестерді қолдауға, сонымен қатар 32 биттік құрылғы драйверлерін қолдауға мүмкіндік берді, бірақ 64 биттік драйверлер мен олармен байланысты өнімділік артықшылықтары болмады. Mac OS X 10.7 "Lion" 64 биттік ядромен көптеген Mac-терде жұмыс істеді, ал OS X 10.8 "Mountain Lion" және одан кейінгі macOS нұсқаларында тек 64 биттік ядро бар. 64 биттік процессорлары бар жүйелерде 32 және 64 биттік macOS ядролары 32 биттік пайдаланушы режиміндегі кодты іске қоса алады, ал macOS Mojave (10.14) нұсқасына дейінгі барлық macOS нұсқаларында 32 биттік қолданбалар пайдаланатын кітапханалардың 32 биттік нұсқалары бар, сондықтан macOS үшін 32 биттік пайдаланушы режиміндегі бағдарламалық қамтамасыздыма сол жүйелерде жұмыс істейді. Apple компаниясы macOS Catalina (10.15) жүйесінде 32 биттік кітапханаларды алып тастады. Linux және көптеген басқа Unix сияқты операциялық жүйелер, сондай-ақ оларға арналған C және C++ құралдар жиынтығы 64 биттік процессорларды көп жылдар бойы қолдады. Бұл платформалар үшін көптеген қолданбалар мен кітапханалар ашық кодты бағдарламалық қамтамасыздыма болып табылады, олар C және C++ тілдерінде жазылған, сондықтан егер олар 64 биттік қауіпсіз болса, оларды 64 биттік нұсқаларға компиляциялауға болады. Бұл кодтық негіздегі тарату моделі, жиі шығарылатын нұсқаларға баса назар аудара отырып, осы операциялық жүйелер үшін қолданбалы бағдарламалық қамтамасыздыманың қолжетімділігін азайтады.

64 биттік деректер үлгілері

32 биттік бағдарламаларда көрсеткіштер мен бүтін сандар сияқты дерек түрлері әдетте бірдей ұзындықта болады. Бұл 64 биттік машиналарда міндетті түрде дұрыс емес. C және оның C++, Objective C сияқты ұрпақтары сияқты бағдарламалау тілдерінде дерек түрлерін араластыру 32 биттік нұсқаларда жұмыс істесе, 64 биттік нұсқаларда жұмыс істемей қалуы мүмкін. 64 биттік машиналардағы C және C-ден туындаған тілдер үшін көптеген бағдарламалау орталарында int айнымалылары әлі де 32 бит, ал ұзын бүтін сандар мен көрсеткіштер 64 бит болады. Бұл LP64 дерек моделі деп аталады, ол "Long, Pointer, 64" дегеннің қысқартылған түрі. Басқа модельдердің бірі – барлық үш дерек түрі 64 бит енімен болатын ILP64 дерек моделі.

+ 64 биттік дерек модельдері

| Datamodel | Pointer | Үлгі операциялық жүйелер |
|---|---|---|
| ILP32 | 16 | 32 | 32 | 64 | 32 x32 және Linux жүйелеріндегі ABI; MIPS N32 ABI |
| LLP64 | 16 | 32 | 32 | 64 | 64 Microsoft Windows (x86 64, IA 64 және ARM64) Visual C++ және MinGW қолданады |
| LP64 | 16 | 32 | 64 | 64 | 64 Unix және Unix-қа ұқсас жүйелердің көпшілігі, мысалы, Solaris, Linux, BSD, macOS. Windows Cygwin қолданғанда; z/OS |
| ILP64 | 16 | 64 | 64 | 64 | 64 HAL Компьютерлік жүйелер Solaris-ті SPARC64-ке порттау |
| SILP64 | 64 | 64 | 64 | 64 | 64 Classic UNICOS (UNICOS/mp және т.б. қарсы) |

Көптеген 64 биттік платформалар бүгінде LP64 моделін қолданады (соның ішінде Solaris, AIX, HP UX, Linux, macOS, BSD және IBM z/OS). Microsoft Windows LLP64 моделін қолданады. LP64 моделінің кемшілігі – ұзын санды int-ке сақтағанда оның мәні қысқаруы мүмкін. Ал керісінше, көрсеткішті ұзын санға түрлендіру LP64-те жұмыс істейді. LLP64 моделінде бұл керісінше дұрыс. Бұл мәселелер толық стандартқа сәйкес келетін кодқа әсер етпейді, бірақ код көбінесе дерек түрлерінің ені туралы жасырын болжамдармен жазылады. Сондықтан C кодында көрсеткіштерді бүтін санға түрлендіргенде (u)intptr_t қолдану ұсынылады, long емес. Бағдарламалау моделі – берілген компиляторға сәйкес таңдалған нұсқау, және бірнеше модель бір операциялық жүйеде бірге болуы мүмкін. Дегенмен, операциялық жүйенің қолданбалық бағдарламалау интерфейсі (API) үшін негізгі модель ретінде таңдалған бағдарламалау моделі әдетте басым болады. Тағы бір маңызды мәселе – құрылғы драйверлері үшін қолданылатын дерек моделі. Драйверлер операциялық жүйенің кодтарының көп бөлігін құрайды (бірақ олардың көп бөлігі операциялық жүйе жұмыс істеп тұрғанда жүктелмеуі мүмкін). Көптеген драйверлер деректерді өңдеу үшін көрсеткіштерді жиі пайдаланады және кейбір жағдайларда тікелей жадқа қол жеткізу (DMA) үшін қолдайтын жабдыққа белгілі бір өлшемдегі көрсеткіштерді жүктеуі керек. Мысалы, 32 биттік PCI құрылғысының драйвері 64 биттік машинаның жадының жоғарғы бөлігіне DMA деректерін жүктеуді сұраса, ол 4 гибибайт шегінен жоғары жадқа деректерді жүктеу үшін операциялық жүйенің сұраныстарын қанағаттандыра алмайды, себебі осы мекенжайларға арналған көрсеткіштер құрылғының DMA тіркелгіштеріне сыймайды. Бұл мәселені DMA үшін драйверлерге сұрау салуларды жасау кезінде OS құрылғының жад шектеулерін есепке алу арқылы немесе кіріс-шығыс жады басқару блогын (IOMMU) пайдалану арқылы шешуге болады.