64-битные вычисления
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2023 г. ) |
Разрядность архитектуры компьютера |
---|
Кусочек |
Приложение |
с плавающей запятой Двоичная точность |
с плавающей запятой Десятичная точность |
В компьютерной архитектуре — 64-битные целые числа , адреса памяти или другие данных . единицы [а] это те, которые имеют ширину 64 бита . Кроме того, 64-битные центральные процессоры (ЦП) и арифметико-логические устройства (АЛУ) — это те, которые основаны на регистрах процессора , адресных шинах или шинах данных такого размера. Компьютер , использующий такой процессор, является 64-разрядным компьютером.
С точки зрения программного обеспечения, 64-битные вычисления означают использование машинного кода с 64-битными виртуальной памяти адресами . Однако не все 64-битные наборы команд поддерживают полные адреса 64-битной виртуальной памяти; x86-64 и AArch64 Например, поддерживают только 48 бит виртуального адреса, а остальные 16 бит виртуального адреса должны состоять только из нулей (000...) или всех единиц (111...), а также нескольких 64-битов. Наборы битовых команд поддерживают менее 64 бит адреса физической памяти.
Термин «64-бит» также описывает поколение компьютеров, в которых 64-битные процессоры являются нормой. 64 бита — это размер слова , определяющий определенные классы компьютерной архитектуры, шин, памяти и процессоров и, соответственно, программного обеспечения, которое на них работает. 64-битные процессоры используются в суперкомпьютерах с 1970-х годов ( Cray-1 , 1975), а в на базе компьютеров с сокращенным набором команд (RISC) рабочих станциях и серверах — с начала 1990-х годов. В 2003 году 64-разрядные процессоры были представлены на массовом рынке ПК в виде процессоров x86-64 и PowerPC G5 .
64-битный регистр может содержать любое из двух 64 (более 18 квинтиллионов или 1,8×10 19 ) разные значения. Диапазон целочисленных значений, которые могут храниться в 64 битах, зависит от используемого целочисленного представления . В двух наиболее распространенных представлениях диапазон составляет от 0 до 18 446 744 073 709 551 615 (что соответствует 2 64 - 1) для представления в виде ( беззнакового ) двоичного числа и -9 223 372 036 854 775 808 (-2 63 ) через 9 223 372 036 854 775 807 (2 63 − 1) для представления в виде дополнения до двух . Следовательно, процессор с 64-битными адресами памяти может напрямую обращаться к 2 64 байты (16 эксбибайт или EiB) памяти с байтовой адресацией .
Без каких-либо дополнительных уточнений, 64-битная компьютерная архитектура обычно имеет целочисленные и адресные регистры шириной 64 бита, что обеспечивает прямую поддержку 64-битных типов данных и адресов. Однако ЦП может иметь внешние шины данных или адресные шины с размерами, отличными от регистров, даже больше ( 32-битный Pentium имел 64-битную шину данных). например, [1]
последствия Архитектурные
Регистры процессора обычно делятся на несколько групп: целочисленные , с плавающей запятой , одиночные инструкции, множественные данные (SIMD), управляющие и часто специальные регистры для адресной арифметики, которые могут иметь различное использование и названия, такие как адресные , индексные или базовые регистры . Однако в современных конструкциях эти функции часто выполняются целочисленными регистрами более общего назначения. В большинстве процессоров для адресации данных в памяти можно использовать только целочисленные или адресные регистры; другие типы регистров не могут. Поэтому размер этих регистров обычно ограничивает объем памяти с прямой адресацией, даже если существуют регистры, такие как регистры с плавающей запятой, которые шире.
Большинство высокопроизводительных 32-битных и 64-битных процессоров (некоторыми заметными исключениями являются старые или встроенные ЦП с архитектурой ARM (ARM) и 32-битной архитектурой MIPS (MIPS)) имеют встроенное оборудование с плавающей запятой, которое часто, но не всегда, основано на на 64-битных единицах данных. Например, хотя в архитектуре x86 / x87 есть инструкции, способные загружать и сохранять 64-битные (и 32-битные) значения с плавающей запятой в памяти, внутренние данные с плавающей запятой и формат регистров имеют ширину 80 бит, в то время как общий формат — 80 бит. Регистры назначения имеют ширину 32 бита. Напротив, 64-битное семейство Alpha использует 64-битные данные и формат регистров с плавающей запятой, а также 64-битные целочисленные регистры.
История [ править ]
Многие наборы команд компьютера устроены таким образом, что один целочисленный регистр может хранить адрес памяти компьютера в любом месте физической или виртуальной памяти . Поэтому общее количество адресов памяти часто определяется шириной этих регистров. IBM 1960- х System/360 годов был первым 32-битным компьютером; у него были 32-битные целочисленные регистры, хотя для адресов использовались только младшие 24 бита слова, в результате чего получалось 16 МБ ( 16 × 1024 2 байты ) адресное пространство. 32-битные суперминикомпьютеры , такие как DEC VAX , стали обычным явлением в 1970-х годах, а 32-битные микропроцессоры, такие как семейство Motorola 68000 и 32-битные представители семейства x86 , начиная с Intel 80386 , появились в середине 1970-х годов. 1980-е годы, когда 32 бита стали чем-то вроде фактического консенсуса как удобный размер регистра.
32-битный адресный регистр означал, что 2 32 адреса или 4 ГБ оперативной памяти (ОЗУ). Когда были разработаны эти архитектуры, 4 ГиБ памяти настолько превышали типичные объемы (4 МБ) в установках, что это считалось достаточным запасом для адресации. 4,29 миллиарда адресов считались подходящим размером для работы по другой важной причине: 4,29 миллиарда целых чисел достаточно для назначения уникальных ссылок большинству объектов в таких приложениях, как базы данных .
Некоторые суперкомпьютерные архитектуры 1970-х и 1980-х годов, такие как Cray-1 , [2] использовали регистры шириной до 64 бит и поддерживали 64-битную целочисленную арифметику, хотя и не поддерживали 64-битную адресацию. В середине 1980-х годов Intel i860 [3] разработка началась и завершилась выпуском в 1989 году; i860 имел 32-битные целочисленные регистры и 32-битную адресацию, поэтому он не был полностью 64-битным процессором, хотя его графический модуль поддерживал 64-битную целочисленную арифметику. [4] Однако 32 бита оставались нормой до начала 1990-х годов, когда постоянное снижение стоимости памяти привело к установкам с объемом ОЗУ, приближающимся к 4 ГиБ, а использование пространств виртуальной памяти, превышающих потолок в 4 ГиБ, стало желательным для обработки определенных типов. проблем. В ответ MIPS и DEC разработали 64-битные микропроцессорные архитектуры, первоначально для высокопроизводительных рабочих станций и серверов . К середине 1990-х годов HAL Computer Systems , Sun Microsystems , IBM , Silicon Graphics и Hewlett-Packard разработали 64-битные архитектуры для своих рабочих станций и серверных систем. Заметным исключением из этой тенденции были мэйнфреймы IBM, которые тогда использовали 32-битные данные и 31-битные размеры адресов; мэйнфреймы IBM не включали 64-битные процессоры до 2000 года. В 1990-е годы несколько недорогих 64-битных микропроцессоров использовались в бытовой электронике и встроенных приложениях. Примечательно, что Nintendo 64 [5] а PlayStation 2 имела 64-битные микропроцессоры до их появления на персональных компьютерах. Высокопроизводительные принтеры, сетевое оборудование и промышленные компьютеры также использовали 64-битные микропроцессоры, такие как Quantum Effect Devices R5000 . [ нужна ссылка ] 64-битные вычисления начали проникать на настольные персональные компьютеры с 2003 года, когда некоторые модели линейки Apple Macintosh перешли на процессоры PowerPC 970 (названные G5 Apple ), а компания Advanced Micro Devices (AMD) выпустила свой первый 64-битный процессор. битный x86-64 процессор . Физическая память в конечном итоге достигла 32-битного ограничения. В 2023 году портативные компьютеры обычно оснащались 16 ГБ памяти, а серверы — до 64 ГБ памяти, что значительно превышало емкость адреса в 4 ГБ, составляющую 32 бита.
Временная шкала 64-битных данных [ править ]
- 1961
- IBM поставляет IBM 7030 Stretch суперкомпьютер , который использует 64-битные слова данных и 32- или 64-битные слова инструкций.
- 1974
- Корпорация Control Data запускает векторный суперкомпьютер CDC Star-100 , использующий 64-битную словесную архитектуру (предыдущие системы 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 поставляет первый суперкомпьютер Cray-1 , основанный на 64-битной текстовой архитектуре и лягущий в основу последующих векторных суперкомпьютеров Cray.
- 1983
- Elxsi Elxsi 6400 выпускает параллельный мини-суперкомпьютер . Архитектура Elxsi имеет 64-битные регистры данных, но 32-битное адресное пространство.
- 1989
- Intel представляет компьютерный процессор Intel i860 с сокращенным набором команд (RISC). Продаваемый как «64-битный микропроцессор», он по сути имел 32-битную архитектуру, дополненную трехмерным графическим процессором, способным выполнять 64-битные целочисленные операции. [6]
- 1993
- Atari представляет Atari Jaguar игровую консоль , архитектура которой включает в себя несколько 64-битных путей передачи данных. [7]
Временная шкала 64-битного адреса [ править ]
- 1991
- MIPS Computer Systems производит первый 64-битный микропроцессор R4000 , реализующий архитектуру MIPS III , третью версию архитектуры MIPS . [8] ЦП используется в графических рабочих станциях SGI, начиная с IRIS Crimson . Kendall Square Research представила свой первый суперкомпьютер KSR1, основанный на собственной архитектуре 64-битного RISC-процессора под управлением OSF/1 .
- 1992
- Digital Equipment Corporation (DEC) представляет чистую 64-битную архитектуру Alpha , которая родилась в результате проекта PRISM . [9]
- 1994
- Intel объявляет о планах по созданию 64-битной архитектуры IA-64 (разработанной совместно с Hewlett-Packard ) в качестве преемника своих 32-битных процессоров IA-32 . Была запланирована дата запуска с 1998 по 1999 год.
- 1995
- Sun выпускает 64-битный SPARC процессор UltraSPARC . [10] Fujitsu, принадлежащая HAL Computer Systems, выпускает рабочие станции на базе 64-битного процессора SPARC64 первого поколения, независимо разработанного HAL . IBM выпускает микропроцессоры A10 и A30, первые 64-разрядные процессоры PowerPC AS. [11] IBM также выпускает обновление 64-битной системы AS/400, которое позволяет преобразовать операционную систему, базу данных и приложения.
- 1996
- Nintendo представляет игровую консоль Nintendo 64 , созданную на основе недорогого варианта MIPS R4000. HP выпускает первую реализацию своей 64-битной PA-RISC 2.0 архитектуры — PA-8000 . [12]
- 1998
- IBM выпускает POWER3 линейку 64-битных процессоров PowerPC/ POWER . [13]
- 1999
- Intel выпускает набор инструкций для архитектуры IA-64 . AMD публично раскрывает свой набор 64-битных расширений IA-32 под названием x86-64 (позже получивший название AMD64).
- 2000
- IBM поставляет свой первый 64-битный z/Architecture мэйнфрейм — zSeries z900. z/Architecture — это 64-битная версия 32-битной архитектуры ESA/390 , потомок 32-битной архитектуры System/360 .
- 2001
- Intel отправляет линейку процессоров IA-64 после неоднократных задержек с выходом на рынок. Теперь продажи под брендом Itanium и ориентированы на высокопроизводительные серверы не оправдывают ожиданий.
- 2003
- AMD представляет линейки процессоров Opteron и Athlon 64 , основанные на архитектуре AMD64 , которая является первой 64-битной процессорной архитектурой на базе x86. Apple G5 также поставляет 64-битный процессор PowerPC 970 производства IBM. Intel утверждает, что чипы Itanium останутся ее единственными 64-битными процессорами.
- 2004
- Intel, реагируя на рыночный успех AMD, признает, что разрабатывает клон расширения AMD64 под названием IA-32e (позже переименованный в EM64T, а затем снова переименованный в Intel 64). Intel поставляет обновленные версии своих семейств процессоров Xeon и Pentium 4, поддерживающие новый 64-битный набор команд.
- VIA Technologies анонсирует 64-битный процессор Isaiah . [14]
- 2006
- Sony, IBM и Toshiba начинают производство 64-битного процессора Cell для использования в PlayStation 3 , серверах, рабочих станциях и других устройствах. Intel выпустила Core 2 Duo как первый массовый процессор x86-64 для своей линейки мобильных, настольных компьютеров и рабочих станций. Предыдущие линейки 64-битных процессоров расширения не были широко доступны на потребительском розничном рынке (большая часть 64-битных Pentium 4/D производились OEM), 64-битные Pentium 4, Pentium D и Celeron не были запущены в массовое производство до конца 2006 года. из-за проблемы с низкой производительностью (большинство пластин с хорошей производительностью были предназначены для серверов и мэйнфреймов, в то время как до 2006 года массовая линейка 32-битных процессоров по-прежнему оставалась 130-нм) и вскоре после дебюта Core 2 стала низкосортной. AMD выпустила свой первый 64-битный мобильный процессор, изготовленный по 90-нм техпроцессу.
- 2011
- ARM Holdings анонсирует ARMv8-A, первую 64-битную версию семейства архитектуры ARM . [15]
- 2012
- 30 октября 2012 года ARM Holdings анонсировала свои ядра Cortex-A53 и Cortex-A57, свои первые ядра на основе 64-битной архитектуры. [16] [17]
- 2013
- Apple анонсирует iPhone 5S с первым в мире 64-битным процессором в смартфоне, который использует свою систему на кристалле A7 на базе ARMv8-A наряду с iPad Air и iPad Mini 2 , которые являются первыми в мире 64-битными процессорами. процессор в планшете.
- 2014
- Google анонсирует планшет Nexus 9 , первое устройство Android, работающее на 64-битном чипе Tegra K1.
- 2015
- Apple анонсирует iPod Touch (6-го поколения) , первый iPod Touch, использующий 64-битный процессор A8 на базе ARMv8-A «система-на-чипе» наряду с Apple TV (4-го поколения), который является первым в мире 64-битным процессором. процессор в Apple TV.
- 2018
- Apple анонсирует Apple Watch Series 4 , первые Apple Watch, использующие 64-битный процессор S4 на базе ARMv8-A.
- 2020
- Synopsis анонсирует ARCv3 ISA, первую 64-битную версию ARC ISA . [18]
Хронология 64-битной операционной системы [ править ]
- 1985
- Cray выпускает UNICOS , первую 64-битную реализацию операционной системы Unix . [19]
- 1993
- DEC выпускает 64-битную операционную систему DEC OSF/1 AXP Unix-подобную (позже переименованную в Tru64 UNIX) для своих систем, основанных на архитектуре Alpha .
- 1994
- Поддержка процессора R8000 добавлена компанией Silicon Graphics в IRIX операционную систему в версии 6.0.
- 1995
- DEC выпускает OpenVMS 7.0, первую полную 64-битную версию OpenVMS для Alpha. первый 64-битный дистрибутив Linux для архитектуры Alpha. Выпущен [20]
- 1996
- Поддержка процессоров R4x00 в 64-битном режиме добавлена компанией Silicon Graphics в IRIX операционную систему в версии 6.2.
- 1998
- Sun выпускает Solaris 7 с полной 64-битного UltraSPARC . поддержкой
- 2000
- IBM выпускает z/OS , 64-битную операционную систему, произошедшую от MVS , для новых zSeries 64-битных мэйнфреймов ; 64-битная версия Linux на z Systems следует за выпуском ЦП почти сразу.
- 2001
- Linux становится первым ядром ОС, полностью поддерживающим x86-64 (на симуляторе, поскольку процессоры x86-64 еще не были выпущены). [21]
- 2001
- Microsoft выпускает 64-битную версию Windows XP для архитектуры Itanium IA-64; он мог запускать 32-битные приложения через уровень выполнения.
- 2003
- Apple выпускает операционную систему Mac OS X 10.3 «Panther», в которой добавлена поддержка встроенной 64-битной целочисленной арифметики на процессорах PowerPC 970 . [22] Несколько Linux дистрибутивов выпускаются с поддержкой AMD64 . Выпуски FreeBSD с поддержкой AMD64.
- 2005
- 4 января Microsoft прекращает выпуск 64-разрядной версии Windows XP, поскольку с сентября прошлого года не было компьютеров с процессорами IA-64, и объявляет, что разрабатывает версии Windows x86-64 для ее замены. [23] 31 января Sun выпускает Solaris 10 с поддержкой процессоров AMD64 и EM64T. 29 апреля Apple выпускает Mac OS X 10.4 «Tiger», которая обеспечивает ограниченную поддержку 64-битных приложений командной строки на машинах с процессорами PowerPC 970; более поздние версии для компьютеров Mac на базе Intel поддерживали 64-битные приложения командной строки на компьютерах Mac с процессорами EM64T. 30 апреля Microsoft выпускает Windows XP Professional x64 Edition и Windows Server 2003 x64 Edition для процессоров AMD64 и EM64T. [24]
- 2006
- Microsoft выпускает Windows Vista , включая 64-битную версию для процессоров AMD64/EM64T, сохраняющую 32-битную совместимость. В 64-битной версии все приложения и компоненты Windows являются 64-битными, хотя во многие из них также включены 32-битные версии для совместимости с плагинами .
- 2007
- Apple выпускает Mac OS X 10.5 «Leopard», которая полностью поддерживает 64-битные приложения на машинах с процессорами PowerPC 970 или EM64T.
- 2009
- Microsoft выпускает Windows 7 , которая, как и Windows Vista, включает полную 64-разрядную версию для процессоров AMD64/Intel 64; большинство новых компьютеров по умолчанию загружаются с 64-битной версией. Microsoft также выпускает Windows Server 2008 R2 , первую 64-разрядную серверную операционную систему. Apple выпускает Mac OS X 10.6 «Snow Leopard», которая поставляется с 64-битным ядром для процессоров AMD64/Intel64, хотя только некоторые последние модели компьютеров Apple будут работать с 64-битным ядром по умолчанию. Большинство приложений, входящих в состав Mac OS X 10.6, теперь также являются 64-разрядными. [22]
- 2011
- Apple выпускает Mac OS X 10.7 «Lion», в которой по умолчанию на поддерживаемых машинах работает 64-битное ядро. На старых машинах, которые не могут запускать 64-битное ядро, используется 32-битное ядро, но, как и в более ранних версиях, они все равно могут запускать 64-битные приложения; Lion не поддерживает машины с 32-битными процессорами. Почти все приложения, входящие в состав Mac OS X 10.7, теперь также являются 64-разрядными, включая iTunes.
- 2012
- Microsoft выпускает Windows 8 , которая поддерживает UEFI Class 3 ( UEFI без CSM) и безопасную загрузку . [25]
- 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
- Microsoft выпускает Windows 11 5 октября, которая поддерживает только 64-битные системы, отказавшись от поддержки систем IA-32.
- 2022
- Google выпускает Pixel 7 , в котором прекращена поддержка не64-битных приложений. Apple выпускает watchOS 9 , первую версию watchOS, которая будет работать исключительно на моделях Apple Watch с 64-битными процессорами (включая Apple Watch Series 4 или новее, Apple Watch SE (1-го поколения) или новее, а также недавно представленные Apple Watch Ultra ), отказавшись от нее. поддержка Apple Watch Series 3 как последней модели Apple Watch с 32-битным процессором.
Ограничения процессоров [ править ]
Этот раздел нуждается в дополнительных цитатах для проверки . ( январь 2010 г. ) |
В принципе, 64-битный микропроцессор может адресовать 16 EiB ( 16×1024 6 = 2 64 = 18 446 744 073 709 551 616 байт или около 18,4 эксабайт) памяти. Однако не все наборы команд и не все процессоры, реализующие эти наборы команд, поддерживают полное 64-битное виртуальное или физическое адресное пространство.
Архитектура x86-64 (по состоянию на 2016 г.) [update]) допускает 48 бит для виртуальной памяти и для любого процессора до 52 бит для физической памяти. [26] [27] Эти ограничения допускают объем памяти 256 ТиБ ( 256 × 1024 4 байт ) и 4 ПиБ ( 4 × 1024 5 байты ) соответственно. В настоящее время ПК не может содержать 4 пебибайта памяти (из-за физического размера микросхем памяти), но AMD предусмотрела большие серверы, кластеры с общей памятью и другие варианты использования физического адресного пространства, которые могут приблизиться к этому в обозримом будущем. Таким образом, 52-битный физический адрес предоставляет достаточно возможностей для расширения, не требуя при этом затрат на реализацию полных 64-битных физических адресов. Аналогично, 48-битное виртуальное адресное пространство было спроектировано так, чтобы обеспечить 65 536 (2 16 ) умноженное на 32-битный предел в 4 ГиБ ( 4 × 1024 3 bytes ), что дает место для последующего расширения и не требует дополнительных затрат на трансляцию полных 64-битных адресов.
Power ISA v3.0 допускает 64 бита для эффективного адреса, сопоставленного с сегментированным адресом с допустимыми значениями от 65 до 78 бит для виртуальной памяти и для любого процессора до 60 бит для физической памяти. [28]
Архитектура Oracle SPARC 2015 допускает 64 бита для виртуальной памяти и для любого процессора от 40 до 56 бит для физической памяти. [29]
Архитектура системы виртуальной памяти ARM AArch64 допускает 48 бит для виртуальной памяти и для любого процессора от 32 до 48 бит для физической памяти. [30]
Спецификация 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-битные приложения [ править ]
32-битная версия против 64-битной [ править ]
Переход с 32-битной на 64-битную архитектуру является фундаментальным изменением, поскольку большинство операционных систем должны быть значительно модифицированы, чтобы воспользоваться преимуществами новой архитектуры, поскольку это программное обеспечение должно управлять реальным аппаратным обеспечением адресации памяти. [31] Другое программное обеспечение также необходимо портировать , чтобы использовать новые возможности; более старое 32-битное программное обеспечение может поддерживаться либо потому, что 64-битный набор команд является надмножеством 32-битного набора команд, так что процессоры, поддерживающие 64-битный набор команд, также могут выполнять код для 32-битных инструкций. устанавливается, либо посредством программной эмуляции , либо путем фактической реализации 32-битного процессорного ядра в 64-битном процессоре, как в случае с некоторыми процессорами Itanium от Intel, которые включают процессорное ядро IA-32 для запуска 32-битных приложений x86 . Операционные системы для этих 64-битных архитектур обычно поддерживают как 32-битные, так и 64-битные приложения. [32]
Одним из существенных исключений из этого правила является IBM AS/400 , программное обеспечение для которого скомпилировано в архитектуру виртуального набора команд (ISA), называемую Technology Independent Machine Interface (TIMI); Код TIMI затем преобразуется в собственный машинный код с помощью низкоуровневого программного обеспечения перед выполнением. Программное обеспечение для перевода — это все, что необходимо переписать, чтобы перенести всю ОС и все программное обеспечение на новую платформу, как это произошло, когда IBM перевела собственный набор команд для AS/400 со старого 32/48-битного IMPI на новый 64-битный PowerPC. -AS под кодовым названием Amazon . Набор команд IMPI сильно отличался даже от 32-битного PowerPC, поэтому этот переход был даже более масштабным, чем переход данного набора команд с 32 на 64 бита.
На 64-битном оборудовании с архитектурой x86-64 (AMD64) большинство 32-битных операционных систем и приложений могут работать без проблем совместимости. Хотя большее адресное пространство 64-битных архитектур упрощает работу с большими наборами данных в таких приложениях, как цифровое видео , научные вычисления и большие базы данных , ведутся серьезные споры о том, ли они или их 32-битные режимы совместимости будут быстрее, чем 32-битные системы по сопоставимой цене для других задач.
Скомпилированная программа Java может работать на 32- или 64-битной виртуальной машине Java без каких-либо изменений. Длины и точность всех встроенных типов, таких как char
, short
, int
, long
, float
, и double
, а типы, которые можно использовать в качестве индексов массива, определяются стандартом и не зависят от базовой архитектуры. Программы Java, работающие на 64-битной виртуальной машине Java, имеют доступ к большему адресному пространству. [33]
Скорость — не единственный фактор, который следует учитывать при сравнении 32-битных и 64-битных процессоров. Такие приложения, как многозадачность, стресс-тестирование и кластеризация — для высокопроизводительных вычислений (HPC) — могут больше подходить для 64-битной архитектуры при правильном развертывании. По этой причине 64-битные кластеры получили широкое распространение в крупных организациях, таких как IBM, HP и Microsoft.
Краткое содержание:
- 64-битный процессор лучше всего работает с 64-битным программным обеспечением.
- 64-битный процессор может иметь обратную совместимость , что позволяет ему запускать 32-битное прикладное программное обеспечение для 32-битной версии его набора команд, а также может поддерживать запуск 32-битных операционных систем для 32-битной версии его набора команд. .
- 32-битный процессор несовместим с 64-битным программным обеспечением.
Плюсы и минусы [ править ]
Распространенным заблуждением является то, что 64-битные архитектуры не лучше 32-битных, если только компьютер не имеет более 4 ГиБ оперативной памяти . [34] Это не совсем так:
- Некоторые операционные системы и определенные конфигурации оборудования ограничивают пространство физической памяти до 3 ГиБ в системах IA-32 , поскольку большая часть области 3–4 ГиБ зарезервирована для аппаратной адресации; см. барьер 3 ГиБ ; 64-битные архитектуры могут адресовать гораздо больше, чем 4 ГиБ. Однако процессоры IA-32, начиная с Pentium Pro , допускают 36-битное физической адресное пространство памяти с использованием расширения физических адресов (PAE), что дает диапазон физических адресов 64 ГиБ, из которых до 62 ГиБ может использоваться основной памятью. ; операционные системы, поддерживающие PAE, не могут быть ограничены 4 ГБ физической памяти даже на процессорах IA-32. Однако драйверы и другое программное обеспечение режима ядра, особенно более старые версии, могут быть несовместимы с PAE; это было названо причиной того, что 32-битные версии Microsoft Windows ограничены 4 ГБ физической оперативной памяти. [35] (хотя достоверность этого объяснения оспаривается [36] ).
- Некоторые операционные системы резервируют часть процесса адресного пространства для использования ОС, эффективно уменьшая общее адресное пространство, доступное для отображения памяти для пользовательских программ. Например, 32-битная Windows резервирует 1 или 2 ГиБ (в зависимости от настроек) общего адресного пространства для ядра, в результате чего для пользовательского режима остается только 3 или 2 ГиБ (соответственно) адресного пространства. Этот предел намного выше в 64-битных операционных системах.
- Файлы, отображаемые в памяти, становится все труднее реализовать в 32-битных архитектурах, поскольку файлы размером более 4 ГиБ становятся все более распространенными; такие большие файлы невозможно легко отобразить в памяти в 32-битных архитектурах, поскольку только часть файла может быть отображена в адресное пространство одновременно, а для доступа к такому файлу путем отображения памяти необходимо заменить отображаемые части и из адресного пространства по мере необходимости. Это проблема, поскольку отображение памяти, если оно правильно реализовано в ОС, является одним из наиболее эффективных методов обращения с диском в память.
- Некоторые 64-битные программы, такие как кодеры, декодеры и программы шифрования, могут получить большую выгоду от 64-битных регистров. [ нужна ссылка ] в то время как производительность других программ, например программ, ориентированных на 3D-графику, при переключении с 32-битной на 64-битную среду остается неизменной. [ нужна ссылка ]
- Некоторые 64-битные архитектуры, такие как x86-64 и AArch64 , поддерживают больше регистров общего назначения, чем их 32-битные аналоги (хотя это не связано именно с длиной слова). Это приводит к значительному увеличению скорости для узких циклов, поскольку процессору не нужно извлекать данные из кэша или основной памяти, если данные могут поместиться в доступные регистры.
- Пример на языке C :
int a, b, c, d, e;
for (a = 0; a < 100; a++) {
b = a;
c = b;
d = c;
e = d;
}
- Этот код сначала создает 5 значений: a, b, c, d и e; а затем помещает их в цикл. Во время цикла этот код изменяет значение b на значение a, значение c на значение b, значение d на значение c и значение e на значение d. Это имеет тот же эффект, что и изменение всех значений на a.
- Если процессор может хранить в регистрах только два или три значения или переменные, ему потребуется переместить некоторые значения между памятью и регистрами, чтобы иметь возможность также обрабатывать переменные d и e; это процесс, который занимает много циклов процессора. Процессор, который может хранить все значения и переменные в регистрах, может проходить через них без необходимости перемещать данные между регистрами и памятью для каждой итерации. Такое поведение можно легко сравнить с виртуальной памятью, хотя любые эффекты зависят от компилятора.
Основным недостатком 64-битных архитектур является то, что по сравнению с 32-битными архитектурами те же данные занимают больше места в памяти (из-за более длинных указателей и, возможно, других типов, а также заполнения выравнивания). Это увеличивает требования к памяти для данного процесса и может повлиять на эффективное использование кэша процессора. Поддержание частичной 32-битной модели — один из способов справиться с этой проблемой, и в целом он достаточно эффективен. Например, операционная система z/OS использует этот подход, требуя, чтобы программный код находился в 31-битном адресном пространстве (старший бит не используется при вычислении адреса на базовой аппаратной платформе), тогда как объекты данных могут опционально находиться в 64-битном адресном пространстве. битовые области. Не все такие приложения требуют большого адресного пространства или манипулируют 64-битными элементами данных, поэтому эти приложения не получают преимуществ от этих функций.
Доступность программного обеспечения [ править ]
В 64-битных системах на базе x86 иногда отсутствуют эквиваленты программного обеспечения , написанного для 32-битных архитектур. Самая серьезная проблема в Microsoft Windows — несовместимость драйверов устройств для устаревшего оборудования. Большинство 32-битных прикладных программ могут работать в 64-битной операционной системе в режиме совместимости , также называемом режимом эмуляции , например, технология Microsoft WoW64 для IA-64 и AMD64. Собственный режим 64-битной Windows [37] среда драйверов работает поверх 64-битной версии NTDLL.DLL , который не может вызывать 32-битный код подсистемы Win32 (часто устройства, фактическая аппаратная функция которых эмулируется в программном обеспечении пользовательского режима, например Winprinters). Поскольку 64-битные драйверы для большинства устройств были недоступны до начала 2007 года (Vista x64), использование 64-битной версии Windows считалось сложной задачей. Однако с тех пор тенденция переместилась в сторону 64-битных вычислений, тем более, что цены на память упали, а использование оперативной памяти объемом более 4 ГиБ увеличилось. Большинство производителей начали предоставлять как 32-битные, так и 64-битные драйверы для новых устройств, поэтому отсутствие 64-битных драйверов перестало быть проблемой. 64-битные драйверы не предоставлялись для многих старых устройств, которые, следовательно, нельзя было использовать в 64-битных системах.
Совместимость драйверов была меньшей проблемой для драйверов с открытым исходным кодом, поскольку 32-битные драйверы можно было модифицировать для использования в 64-битных версиях. Поддержка оборудования, выпущенного до начала 2007 года, была проблематичной для платформ с открытым исходным кодом. [ нужна ссылка ] из-за относительно небольшого количества пользователей.
64-битные версии Windows не могут запускать 16-битное программное обеспечение . Однако большинство 32-битных приложений будут работать хорошо. 64-битные пользователи вынуждены устанавливать виртуальную машину 16- или 32-битной операционной системы для запуска 16-битных приложений или использовать одну из альтернатив NTVDM . [38]
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 32-битное ядро использовалось даже на 64-битных процессорах. Это позволило этим компьютерам 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 до macOS Mojave (10.14) включают 32-разрядные версии библиотек, поддерживающих 32-разрядную версию. битные приложения будут использовать, поэтому 32-битное программное обеспечение пользовательского режима для macOS будет работать в этих системах. 32-битные версии библиотек были удалены Apple из macOS Catalina (10.15).
Linux и большинство других Unix-подобных операционных систем, а также C и C++ наборы инструментов для них уже много лет поддерживают 64-битные процессоры. Многие приложения и библиотеки для этих платформ представляют собой программное обеспечение с открытым исходным кодом , написанное на C и C++, поэтому, если они безопасны для 64-разрядных систем, их можно скомпилировать в 64-разрядные версии. Эта модель распространения на основе исходного кода с упором на частые выпуски делает доступность прикладного программного обеспечения для этих операционных систем менее серьезной проблемой.
64-битные модели данных [ править ]
В 32-битных программах указатели и типы данных, такие как целые числа, обычно имеют одинаковую длину. Это не обязательно верно на 64-битных машинах. [39] [40] [41] Таким образом, смешение типов данных в языках программирования, таких как C и его потомках, таких как C++ и Objective-C, может работать в 32-битных реализациях, но не в 64-битных реализациях.
Во многих средах программирования для языков C и языков, производных от C, на 64-битных машинах int
переменные по-прежнему имеют ширину 32 бита, но длинные целые числа и указатели имеют ширину 64 бита. Они описаны как имеющие LP64 модель данных , что является аббревиатурой «Long, Pointer, 64». [42] [43] Другими моделями являются модель данных ILP64 , в которой все три типа данных имеют ширину 64 бита. [44] [43] и даже модель SILP64 , где короткие целые числа также имеют ширину 64 бита. [45] [46] Однако в большинстве случаев необходимые изменения относительно незначительны и просты, и многие хорошо написанные программы можно просто перекомпилировать для новой среды без каких-либо изменений. Другой альтернативой является модель LLP64 , которая сохраняет совместимость с 32-битным кодом, оставляя оба варианта. int
и long
как 32-битный. [47] [43] LL относится к длинному целочисленному типу, который имеет длину не менее 64 бит на всех платформах, включая 32-битные среды.
Существуют также системы с 64-битными процессорами, использующими модель данных ILP32 с добавлением 64-битных длинных целых чисел; это также используется на многих платформах с 32-битными процессорами. Эта модель уменьшает размер кода и размер структур данных, содержащих указатели, за счет гораздо меньшего адресного пространства, что является хорошим выбором для некоторых встроенных систем. Для наборов команд, таких как x86 и ARM, в которых 64-битная версия набора команд имеет больше регистров, чем 32-битная версия, он обеспечивает доступ к дополнительным регистрам без потери места. Это часто встречается в 64-битных RISC-машинах. [ нужна ссылка ] исследован в x86 как x32 ABI и недавно использовался в Apple Watch Series 4 и 5. [48] [49]
Данные модель |
короткий интервал |
интервал | длинный интервал |
длинный длинный |
Указатель, size_t |
Примеры операционных систем |
---|---|---|---|---|---|---|
ИЛП32 | 16 | 32 | 32 | 64 | 32 | х32 и Arm64ilp32 ABI в системах Linux; МИПС N32 АБИ. |
ТОО64 | 16 | 32 | 32 | 64 | 64 | Microsoft Windows (x86-64, IA-64 и ARM64) с использованием Visual C++ ; и МинГВ |
ЛП64 | 16 | 32 | 64 | 64 | 64 | Большинство Unix и Unix-подобных систем, например Solaris , Linux , BSD , macOS . Windows при использовании Cygwin ; з/ОС |
ИЛП64 | 16 | 64 | 64 | 64 | 64 | Порт HAL Computer Systems Solaris на SPARC64 |
SILP64 | 64 | 64 | 64 | 64 | 64 | Классический ЮНИКОС [45] [46] (по сравнению с UNIQUES/mp и т. д.) |
Многие 64-битные платформы сегодня используют модель LP64 (включая Solaris, AIX , HP-UX , Linux, macOS, BSD и IBM z/OS). Microsoft Windows использует модель LLP64 . Недостатком модели LP64 является то, что хранение long
в int
обрезает. С другой стороны, преобразование указателя в long
будет «работать» в LP64. В модели LLP64 все наоборот. Это не проблемы, которые затрагивают код, полностью соответствующий стандартам, но код часто пишется с неявными предположениями о ширине типов данных. Код C должен предпочитать ( u
) intptr_t
вместо long
при преобразовании указателей в целочисленные объекты.
Модель программирования — это выбор, соответствующий конкретному компилятору, и несколько моделей могут сосуществовать в одной и той же ОС. Однако обычно доминирует модель программирования, выбранная в качестве основной модели для интерфейса программирования приложений (API) ОС.
Еще одним соображением является модель данных, используемая для драйверов устройств . Драйверы составляют большую часть кода операционной системы в большинстве современных операционных систем. [ нужна ссылка ] (хотя многие из них могут не загружаться во время работы операционной системы). Многие драйверы активно используют указатели для манипулирования данными, и в некоторых случаях им приходится загружать указатели определенного размера в оборудование, которое они поддерживают, для прямого доступа к памяти (DMA). Например, драйвер для 32-битного PCI-устройства, запрашивающий у устройства передачу данных DMA в верхние области памяти 64-битной машины, не мог удовлетворить запросы операционной системы на загрузку данных с устройства в память, превышающую барьер в 4 . гибибайта , поскольку указатели на эти адреса не помещаются в регистры DMA устройства. Эта проблема решается за счет того, что ОС учитывает ограничения памяти устройства при формировании запросов к драйверам для DMA или за счет использования блока управления памятью ввода-вывода (IOMMU).
Текущие 64-битные архитектуры [ править ]
По состоянию на август 2023 г. [update]К 64-битным архитектурам, для которых производятся процессоры, относятся:
- 64-битное расширение, созданное Advanced Micro Devices (AMD) для архитектуры Intel x86 (позже лицензированное Intel); обычно называемый x86-64 , AMD64 или x64 :
- Расширения AMD AMD64 (используются в Athlon 64 , Opteron , Sempron , Turion 64 , Phenom , Athlon II , Phenom II , APU , FX , Ryzen и Epyc ) процессорах
- Расширения Intel процессорах Intel 64 , используемые в Core 2/i3/i5/i7/i9, некоторых процессорах Atom и более новых Celeron , Pentium и Xeon. процессорах
- Архитектура Intel K1OM, вариант Intel 64 без инструкций CMOV, MMX и SSE, используется в сопроцессорах Xeon Phi (Knights Corner) первого поколения, двоично несовместима с программами x86-64.
- 64-битные расширения VIA Technologies , используемые в VIA Nano . процессорах
- IBM PowerPC / Power ISA :
- Архитектура SPARC V9:
- S7 Процессоры Oracle M8 и
- Fujitsu SPARC64 XII и SPARC64 XIFX Процессоры
- IBM z/Architecture , 64-битная версия архитектуры ESA/390 IBM IBM Z , используемая в мэйнфреймах :
- Процессор IBM Telum и его предшественники
- Хитачи AP8000E
- MIPS Technologies ' MIPS64 Архитектура
- ARM Holdings AArch64 Архитектура
- Эльбрусская архитектура:
- Архитектура NEC SX
- РИСК-V
- АРК (процессор)
Большинство 64-битных архитектур, созданных на основе той же 32-битной архитектуры, могут выполнять код, написанный для 32-битных версий, без потери производительности. [ нужна ссылка ] Этот вид поддержки обычно называют поддержкой двух дуг или, в более общем смысле, поддержкой нескольких дуг .
См. также [ править ]
Примечания [ править ]
- ^, например числа с плавающей запятой .
Ссылки [ править ]
- ^ Руководство пользователя процессора Pentium, том 1: Справочник данных процессора Pentium (PDF) . Интел . 1993.
- ^ «Справочное руководство по аппаратному обеспечению компьютерной системы Cray-1» (PDF) . Крейские исследования . 1977 год . Проверено 8 октября 2013 г.
- ^ Граймс, Джек; Кон, Лес; Бхарадвадж, Раджив (июль – август 1989 г.). «64-разрядный процессор Intel i860: процессор общего назначения с возможностями 3D-графики» . IEEE Компьютерная графика и приложения . 9 (4): 85–94. дои : 10.1109/38.31467 . S2CID 38831149 . Проверено 19 ноября 2010 г.
- ^ «Справочное руководство программиста семейства процессоров i860» (PDF) . Интел . 1991 год . Проверено 12 сентября 2019 г.
- ^ «NEC предлагает два высокопроизводительных 64-битных RISC-микропроцессора» (пресс-релиз). НЭК . 20 января 1998 г. Проверено 9 января 2011 г.
Версии процессора VR4300 широко используются в потребительских и офисных приложениях автоматизации, включая популярные видеоигры Nintendo 64TM и современные лазерные принтеры, такие как недавно анонсированное, отмеченное наградами семейство принтеров Hewlett-Packard LaserJet 4000.
- ^ «64-битный микропроцессор i860» . Интел. 1989 год . Проверено 30 ноября 2010 г.
- ^ «История Atari Jaguar» . АтариЭйдж .
- ^ Джо Генрих (1994). Руководство пользователя микропроцессора MIPS R4000 (2-е изд.). МИПС Технологии, Инк.
- ^ Ричард Л. Сайтс (1992). «Архитектура Альфа AXP». Цифровой технический журнал . 4 (4). Корпорация цифрового оборудования.
- ^ Гвеннап, Линли (3 октября 1994 г.). «UltraSparc повышает производительность SPARC». Отчет микропроцессора . 8 (13). Ресурсы по микродизайну.
- ^ Бишоп, JW; и др. (июль 1996 г.). «64-битный RISC-микропроцессор PowerPC AS A10». Журнал исследований и разработок IBM . 40 (4). Корпорация IBM: 495–505. дои : 10.1147/rd.404.0495 .
- ^ Гвеннап, Линли (14 ноября 1994 г.). «PA-8000 сочетает в себе сложность и скорость». Отчет микропроцессора . 8 (15). Ресурсы по микродизайну.
- ^ Ф. П. О'Коннелл; SW Белый (ноябрь 2000 г.). «POWER3: следующее поколение процессоров PowerPC». Журнал исследований и разработок IBM . 44 (6). Корпорация IBM: 873–884. дои : 10.1147/rd.446.0873 .
- ^ «VIA раскрывает подробности процессорного ядра Isaiah следующего поколения» . VIA Technologies, Inc. Архивировано из оригинала 11 октября 2007 г. Проверено 18 июля 2007 г.
- ^ «Обзор технологии ARMv8» (PDF) . 31 октября 2011 г. Архивировано из оригинала (PDF) 11 ноября 2011 г. . Проверено 15 ноября 2012 г.
- ^ «ARM выпускает серию Cortex-A50, самые энергоэффективные 64-битные процессоры в мире» (пресс-релиз). АРМ Холдингс . Проверено 31 октября 2012 г.
- ^ «ARM Keynote: выпущены 64-битные процессоры ARM Cortex-A53 и ARM Cortex-A57 ARMv8» . ARMdevices.net . 31 октября 2012 г.
- ^ «Synopsys представляет новый 64-битный IP-процессор ARC» . Архивировано из оригинала 31 марта 2022 года.
- ^ Стефан Берка. «Операционная система Unicos» . www.operating-system.org. Архивировано из оригинала 26 ноября 2010 года . Проверено 19 ноября 2010 г.
- ^ Джон «Maddog» Холл (1 июня 2000 г.). «Моя жизнь и свободное программное обеспечение» . Linux-журнал .
- ^ Энди Клин. Портирование Linux на x86-64 (PDF) . Оттавский симпозиум Linux 2001.
Статус: Ядро, компилятор, набор инструментов работают. Ядро загружается и работает на симуляторе и используется для переноса пользовательского пространства и запуска программ.
- ^ Jump up to: а б Джон Сиракузы (сентябрь 2009 г.). «Mac OS X 10.6 Snow Leopard: обзор Ars Technica» . Арс Техника . п. 5. Архивировано из оригинала 9 октября 2009 года . Проверено 6 сентября 2009 г.
- ^ Джорис Эверс (5 января 2005 г.). «Microsoft отказывается от Windows XP ради Itanium» . Компьютерный мир. Архивировано из оригинала 18 июня 2013 года . Проверено 17 октября 2017 г.
- ^ «Microsoft повышает ограничение скорости с появлением 64-разрядных выпусков Windows Server 2003 и Windows XP Professional» (пресс-релиз). Майкрософт. 25 апреля 2005 года . Проверено 10 сентября 2015 г.
- ^ «UEFI_on_Dell BizClient_Platforms» (PDF) .
- ^ «Руководство программиста AMD64, том 2: Системное программирование» (PDF) . Передовые микроустройства. Декабрь 2016. с. 120.
- ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 3A: Руководство по системному программированию, часть 1» (PDF) . Интел. Сентябрь 2016. с. 4-2.
- ^ «Power ISA версии 3.0» . ИБМ . 30 ноября 2015 г. с. 983.
- ^ «Проект Oracle SPARC Architecture 2015 D1.0.9» . Оракул . п. 475.
- ^ «Справочное руководство по архитектуре ARM ARMv8, для профиля архитектуры ARMv8-A» . стр. Д4-1723, Д4-1724, Д4-1731.
- ^ Маши, Джон (октябрь 2006 г.). «Долгая дорога к 64 битам» . Очередь АКМ . 4 (8): 85–94. дои : 10.1145/1165754.1165766 .
- ^ «Windows 7: 64-битная или 32-битная?» . Форумы W7. Архивировано из оригинала 5 апреля 2009 года . Проверено 5 апреля 2009 г.
- ^ «Часто задаваемые вопросы о виртуальной машине Java HotSpot» . Sun Microsystems, Inc. Архивировано из оригинала 10 мая 2007 года . Проверено 3 мая 2007 г.
- ^ «Описание различий между 32-битными версиями Windows Vista и 64-битными версиями Windows Vista» . Проверено 14 октября 2011 г.
- ^ Марк Руссинович (21 июля 2008 г.). «Расширяя возможности Windows: физическая память» . Проверено 9 марта 2017 г.
- ^ Чаппелл, Джефф (27 января 2009 г.). «Лицензионная память в 32-битной Windows Vista» . geoffchappell.com . ВП: СПС . Проверено 9 марта 2017 г.
- ^ «Внутри собственных приложений» . Technet.microsoft.com. 01.11.2006. Архивировано из оригинала 23 октября 2010 года . Проверено 19 ноября 2010 г.
- ^ Линкольн Спектор (12 августа 2013 г.). «Запустите старую программу на новом ПК» .
- ^ Питер Сибах (2006). «Изучение 64-битной разработки на POWER5: насколько на самом деле переносим ваш код?» . ИБМ .
- ^ Генри Спенсер. «Десять заповедей программиста на Си» .
- ^ «История удара и ошибки» . Datacenterworks.com . Проверено 19 ноября 2010 г.
- ^ «Модели данных ILP32 и LP64 и размеры типов данных» . Руководство по программированию на z/OS XL C/C++ .
- ^ Jump up to: а б с «Модели 64-битного программирования» . Проверено 5 июня 2020 г.
- ^ «Использование интерфейса ILP64 и интерфейса LP64» . Интел . Проверено 24 июня 2020 г. .
- ^ Jump up to: а б «Справочное руководство Cray C/C++» . Август 1998 г. Таблица 9-1. Сопоставление типов данных систем Cray Research. Архивировано из оригинала 16 октября 2013 года . Проверено 15 октября 2013 г.
- ^ Jump up to: а б «Справочное руководство Cray C и C++ (8.7) S-2179» . Проверено 24 июня 2020 г. .
- ^ «Абстрактные модели данных — приложения Windows» . 30 мая 2018 г.
- ^ «Информационный документ ILP32 для AArch64» . АРМ Лимитед. 9 июня 2015 года. Архивировано из оригинала 30 декабря 2018 года . Проверено 9 октября 2018 г.
- ^ «Устройства Apple 2018 года» . Воаук, исследователь безопасности. 6 октября 2018 г.
Внешние ссылки [ править ]
- Руководство по переходу на 64-битную версию, Библиотека разработчиков Mac
- Карпов Андрей. «Сборник примеров 64-битных ошибок в реальных программах» .
- Килгард, Марк Дж. «Готов ли ваш X-код к 64-битной версии?» . Архивировано из оригинала 3 июня 2001 года . Проверено 26 сентября 2012 г.
- Уроки по разработке 64-битных приложений на C/C++
- 64-битные модели программирования: почему LP64?
- Архитектура AMD64 (EM64T)