Из Википедии, бесплатной энциклопедии
  (Перенаправлено с 64-битной версии )
Перейти к навигации Перейти к поиску

В компьютерной архитектуры , 64-битных чисел , адресов памяти , или других данных единиц являются те , которые являются 64 битов (8 октетов ) в ширину. Кроме того, архитектуры 64-битного центрального процессора (ЦП) и арифметико-логического устройства (АЛУ) основаны на регистрах процессора , адресных шинах или шинах данных такого размера. 64-битные микрокомпьютеры - это компьютеры, в которых 64-битные микропроцессоры являются нормой. С точки зрения программного обеспечения, 64-битные вычисления означают использование машинного кода.с 64-битными адресами виртуальной памяти . Однако не все 64-битные наборы инструкций поддерживают полные 64-битные адреса виртуальной памяти; x86-64 и ARMv8 , например, поддерживают только 48 бит виртуального адреса, а остальные 16 бит виртуального адреса должны состоять из 0 или 1, а несколько наборов 64-битных инструкций поддерживают менее 64 бит физической памяти. адрес.

Термин « 64-битные» описывает поколение компьютеров, в которых 64-битные процессоры являются нормой. 64 бита - это размер слова, который определяет определенные классы компьютерной архитектуры, шин, памяти и процессоров и, соответственно, программное обеспечение, которое на них работает. 64-разрядные процессоры используются в суперкомпьютерах с 1970 ( Cray-1 , 1975) и в сокращенным набором команд компьютеров (RISC) на основе рабочих станций и серверов с начала 1990 - х годов, в частности в MIPS R4000 , R8000 и R10000 , в Digital Equipment Корпорация (DEC) Alpha ,Sun Microsystems UltraSPARC и IBM RS64 и POWER3 и более поздних версий ЭНЕРГЕТИЧЕСКИЕ микропроцессоры . В 2003 годе , 64-разрядные процессоры были введены в (ранее 32-битном ) основном персональном компьютере рынка в виде x86-64 процессоров и PowerPC G5 , и были введены в 2012 году [1] в архитектуру ARM таргетирования смартфонов и планшет компьютеры , впервые проданные 20 сентября 2013 года, в iPhone 5S с системой ARMv8-A Apple A7 на микросхеме (SoC).

64-битный регистр может содержать любое из 2 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 эксабайт ) памяти с байтовой адресацией .

Без дополнительной квалификации 64-битная компьютерная архитектура обычно имеет целочисленные и адресные регистры процессора шириной 64 бита, что обеспечивает прямую поддержку 64-битных типов данных и адресов. Однако ЦП может иметь внешние шины данных или адресные шины с размером, отличным от размера регистров, даже большего размера (например, у 32-битного Pentium была 64-битная шина данных). [2] Термин может также относиться к размеру низкоуровневых типов данных, таких как 64-битные арифметические числа с плавающей запятой .

Архитектурные последствия [ править ]

Регистры процессора обычно делятся на несколько групп: целочисленные , с плавающей запятой , с одной инструкцией и несколькими данными ( SIMD ), управляющие и часто специальные регистры для адресной арифметики, которые могут иметь различное использование и имена, такие как адрес , индекс или основание. регистры . Однако в современном дизайне эти функции часто выполняются целыми числами более общего назначения.регистры. В большинстве процессоров для адресации данных в памяти можно использовать только целочисленные регистры или регистры адреса; другие типы регистров не могут. Поэтому размер этих регистров обычно ограничивает объем непосредственно адресуемой памяти, даже если есть регистры, такие как регистры с плавающей запятой, которые шире.

Большинство высокопроизводительных 32-битных и 64-битных процессоров (некоторые заметные исключения - это старые или встроенные процессоры ARM-архитектуры (ARM) и 32-битной архитектуры MIPS (MIPS)) имеют интегрированное оборудование с плавающей запятой, которое часто, но не всегда, основано на на 64-битных единицах данных. Например, хотя в архитектуре x86 / x87 есть инструкции, способные загружать и сохранять в памяти 64-битные (и 32-битные) значения с плавающей запятой, внутренние данные с плавающей запятой и формат регистра имеют ширину 80 бит, в то время как универсальный регистры имеют ширину 32 бита. Напротив, 64-битное семейство Alpha использует 64-битные данные с плавающей запятой и формат регистров, а также 64-битные целочисленные регистры.

История [ править ]

Многие компьютерные наборы команд разработаны таким образом, что один целочисленный регистр может хранить адрес памяти в любом месте физической или виртуальной памяти компьютера . Поэтому общее количество адресов в память часто определяется шириной этих регистров. IBM System / 360 в 1960 был одним из первых 32-разрядного компьютера; у него были 32-битные целочисленные регистры, хотя для адресов использовались только младшие 24 бита слова, что давало адресное пространство 16  МиБ [ 16 × 1024 2 байта ]. 32-битные суперминикомпьютеры , такие как DEC VAX, стало обычным явлением в 1970-х годах, а 32-разрядные микропроцессоры, такие как семейство Motorola 68000 и 32-разрядные члены семейства x86, начиная с Intel 80386 , появились в середине 1980-х годов, что сделало 32 -разрядные микропроцессоры чем-то вроде де-факто консенсус как удобный размер регистра.

32-битный регистр адреса означает , что 2 32 адрес, или 4  ГиБли из случайного доступа к памяти (RAM), может быть ссылка. Когда разрабатывались эти архитектуры, 4 ГБ памяти настолько превышали типичные объемы (4 МБ) в инсталляциях, что считалось достаточным запасом для адресации. 4,29 миллиарда адресов считались подходящим размером для работы по другой важной причине: 4,29 миллиарда целых чисел достаточно для назначения уникальных ссылок на большинство объектов в приложениях, таких как базы данных .

Некоторые суперкомпьютерные архитектуры 1970-х и 1980-х годов, такие как Cray-1 , [3], использовали регистры шириной до 64 бит и поддерживали 64-битную целочисленную арифметику, хотя и не поддерживали 64-битную адресацию. В середине 1980-х разработка Intel i860 [4] начала завершаться (слишком поздно [5] для Windows NT) выпуском 1989 года; i860 имел 32-битные целочисленные регистры и 32-битную адресацию, поэтому он не был полностью 64-битным процессором, хотя его графический блок поддерживал 64-битную целочисленную арифметику. [6]Однако 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 [7] и PlayStation 2 имели 64-битные микропроцессоры до их появления в персональных компьютерах. В высокопроизводительных принтерах, сетевом оборудовании и промышленных компьютерах также использовались 64-разрядные микропроцессоры, такие как Quantum Effect Devices R5000 . [ необходима цитата ] 64-битные вычисления начали проникать на настольные ПК с 2003 года, когда некоторые модели AppleЛиния Macintosh перешла на процессоры PowerPC 970 (названные Apple G5 ), а Advanced Micro Devices (AMD) выпустила свой первый 64-битный процессор x86-64 .

Ограничения процессоров [ править ]

В принципе, 64-битный микропроцессор может адресовать 16  EiB ( 16 × 1024 6 = 2 64 = 18 446 744 073 709 551 616 байт , или около 18,4 эксабайт) памяти. Однако не все наборы инструкций и не все процессоры, реализующие эти наборы инструкций, поддерживают полное 64-битное виртуальное или физическое адресное пространство.

Архитектура x86-64 (по состоянию на 2016 год ) допускает 48 бит для виртуальной памяти и, для любого данного процессора, до 52 бит для физической памяти. [8] [9] Эти ограничения допускают размер памяти 256  ТиБ ( 256 × 1024 4 байта ) и 4  ПиБ ( 4 × 1024 5 байтов).), соответственно. В настоящее время ПК не может содержать 4 пебибайта памяти (из-за физического размера микросхем памяти), но AMD предполагала большие серверы, кластеры общей памяти и другие способы использования физического адресного пространства, которые могут приблизиться к этому в обозримом будущем. Таким образом, 52-битный физический адрес предоставляет достаточно места для расширения, не неся при этом затрат на реализацию полных 64-битных физических адресов. Аналогично, 48-битное виртуальное адресное пространство было разработано , чтобы обеспечить 65536 (2 16 ) раз 32-битный предел 4 ГиБ ( 4 × 1024 3 байта ), не допуская возможности для последующего расширения и нести никаких накладных расходов по переводу полный 64-бит адреса.

V3.0 Мощности ISA позволяет 64 бит для эффективного адреса, отображенного на сегментный адрес с между 65 и 78 битами, разрешенным для виртуальной памяти, и для любого данного процессора, до 60 бит для физической памяти. [10]

Архитектура Oracle SPARC 2015 позволяет использовать 64 бита для виртуальной памяти и, для любого данного процессора, от 40 до 56 бит для физической памяти. [11]

ARM AArch64 виртуальная память Архитектура системы позволяет 48 бит для виртуальной памяти и для любого данного процессора, от 32 до 48 бит для физической памяти. [12]

Спецификация DEC Alpha требует поддержки минимум 43 бита адресного пространства виртуальной памяти (8 ТиБ), а аппаратное обеспечение должно проверять и ловить, если оставшиеся неподдерживаемые биты равны нулю (для поддержки совместимости с будущими процессорами). Alpha 21064 поддерживает 43 бита адресного пространства виртуальной памяти (8 ТиБ) и 34 бита адресного пространства физической памяти (16 ГиБ). Alpha 21164 поддерживает 43 бита адресного пространства виртуальной памяти (8 ТиБ) и 40 бит адресного пространства физической памяти (1 ТиБ). Alpha 21264 поддерживает конфигурируемые пользователем 43 или 48 битов адресного пространства виртуальной памяти (8TiB или 256TiB) и 44 бита адресного пространства физической памяти (16TiB).

Временная шкала 64-битных данных [ править ]

1961 г.
IBM поставляет суперкомпьютер IBM 7030 Stretch , который использует 64-битные слова данных и 32- или 64-битные командные слова.
1974 г.
Control Data Corporation запускает векторный суперкомпьютер 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-битную архитектуру, улучшенную за счет 3D-графики, способной выполнять 64-битные целочисленные операции. [13]
1993 г.
Atari представляет игровую консоль Atari Jaguar , которая включает в себя 64-битные тракты данных в своей архитектуре. [14]

Временная шкала 64-битного адреса [ править ]

1991 г.
Компания MIPS Computer Systems производит первый 64-разрядный микропроцессор R4000 , реализующий архитектуру MIPS III , третью версию архитектуры MIPS . [15] ЦП используется в графических рабочих станциях SGI, начиная с IRIS Crimson . Компания Kendall Square Research представила свой первый суперкомпьютер KSR1 на базе проприетарной архитектуры 64-битного процессора RISC под управлением OSF / 1 .
1992 г.
Digital Equipment Corporation (DEC) представляет чистую 64-битную архитектуру Alpha, которая родилась из проекта Prism . [16]
1994 г.
Intel объявляет о планах по созданию 64-битной архитектуры IA-64 (разработанной совместно с Hewlett-Packard ) в качестве преемника 32-битных процессоров IA-32 . Дата запуска была намечена с 1998 по 1999 год.
1995 г.
Sun запускает 64-битный процессор SPARC , UltraSPARC . [17] Компания HAL Computer Systems, принадлежащая Fujitsu, выпускает рабочие станции на базе 64-разрядного процессора, независимо разработанного HAL первого поколения SPARC64 . IBM выпускает микропроцессоры A10 и A30, первые 64-битные процессоры PowerPC AS. [18] IBM также выпускает обновление 64-битной системы AS / 400 , которое может преобразовывать операционную систему, базу данных и приложения.
1996 г.
Nintendo представляет игровую консоль Nintendo 64 , созданную на основе недорогого варианта MIPS R4000. HP выпускает первую реализацию своей 64-битной архитектуры PA-RISC 2.0 , PA-8000 . [19]
1998 г.
IBM выпускает линейку полностью 64-разрядных процессоров PowerPC / POWER POWER3 . [20]
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 также поставляет 64-битный процессор PowerPC 970 G5 производства IBM. Intel утверждает, что ее чипы Itanium останутся ее единственными 64-битными процессорами.
2004 г.
Intel, реагируя на рыночный успех AMD, признает, что разрабатывает клон расширений AMD64 под названием IA-32e (позже переименованный в EM64T, а затем снова переименованный в Intel 64). Intel поставляет обновленные версии своих семейств процессоров Xeon и Pentium 4 , поддерживающие новый 64-битный набор команд.
VIA Technologies представляет 64-битный процессор Isaiah . [21]
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 года. из-за проблемы низкой производительности (большинство пластин с хорошей производительностью предназначались для серверов и мэйнфреймов, в то время как основная часть по-прежнему оставалась линейкой 32-разрядных процессоров с длиной волны 130 нм до 2006 года) и вскоре стала низкой после дебюта Core 2. AMD выпустила свой первый 64-битный мобильный процессор, изготовленный по стандарту 90 нм.
2011 г.
ARM Holdings анонсирует ARMv8-A, первую 64-битную версию архитектуры ARM . [22]
2012 г.
ARM Holdings анонсировала свои ядра Cortex-A53 и Cortex-A57, свои первые ядра, основанные на их 64-битной архитектуре, 30 октября 2012 года. [1] [23]
2013
Apple анонсирует iPhone 5S с первым в мире 64-битным процессором в смартфоне, который использует систему на кристалле A7 ARMv8-A.
2014 г.
Google анонсирует планшет Nexus 9 , первое устройство Android, работающее на 64-битном чипе Tegra K1.

Временная шкала 64-битной операционной системы [ править ]

1985 г.
Cray выпускает UNICOS , первую 64-битную реализацию операционной системы Unix . [24]
1993 г.
DEC выпускает 64-битную Unix-подобную операционную систему DEC OSF / 1 AXP (позже переименованную в Tru64 UNIX) для своих систем, основанных на архитектуре Alpha .
1994 г.
Поддержка процессора R8000 добавлена ​​компанией Silicon Graphics в операционную систему IRIX в версии 6.0.
1995 г.
DEC выпускает OpenVMS 7.0, первую полную 64-битную версию OpenVMS для Alpha. Выпущен первый 64-битный дистрибутив Linux для архитектуры Alpha. [25]
1996 г.
Поддержка процессоров R4x00 в 64-битном режиме добавлена ​​компанией Silicon Graphics в операционную систему IRIX в версии 6.2.
1998 г.
Sun выпускает Solaris 7 с полной 64-битной поддержкой UltraSPARC .
2000 г.
IBM выпускает z / OS , 64-разрядную операционную систему, произошедшую от MVS , для новых 64-разрядных мэйнфреймов zSeries ; 64-разрядная версия Linux на z Systems почти сразу же следует за выпуском ЦП.
2001 г.
Linux становится первым ядром ОС, полностью поддерживающим x86-64 (на симуляторе, поскольку процессоры x86-64 еще не выпущены). [26]
2001 г.
Microsoft выпускает 64-разрядную версию Windows XP для архитектуры Itanium IA-64; он мог запускать 32-битные приложения через уровень выполнения.
2003 г.
Apple выпускает операционную систему Mac OS X 10.3 «Panther», которая добавляет поддержку встроенной 64-битной целочисленной арифметики на процессорах PowerPC 970 . [27] Некоторые Linux дистрибутивы релиз с поддержкой AMD64 . Релизы FreeBSD с поддержкой AMD64.
2005 г.
4 января Microsoft прекращает выпуск 64-разрядной версии Windows XP, поскольку с сентября прошлого года не было компьютеров с процессорами IA-64, и объявляет о разработке версий Windows x86-64 для ее замены. [28] 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.[29]
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-разрядными. [27]
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) и безопасную загрузку . [30]
2013
Apple выпускает iOS 7 , которая на машинах с процессорами AArch64 имеет 64-битное ядро, поддерживающее 64-битные приложения.
2014 г.
Google выпускает Android Lollipop , первую версию операционной системы Android с поддержкой 64-битных процессоров.
2017 г.
Apple выпускает iOS 11 , поддерживающую только машины с процессорами AArch64. Он имеет 64-битное ядро, которое поддерживает только 64-битные приложения. 32-битные приложения больше не совместимы.
2019 г.
Apple выпускает macOS 10.15 «Catalina», отказываясь от поддержки 32-разрядных приложений Intel.

64-битные приложения [ править ]

32-битное против 64-битного [ править ]

Переход с 32-битной на 64-битную архитектуру является фундаментальным изменением, так как большинство операционных систем должны быть значительно изменены, чтобы воспользоваться преимуществами новой архитектуры, потому что это программное обеспечение должно управлять фактическим аппаратным обеспечением адресации памяти. [31] Другое программное обеспечение также должно быть перенесено для использования новых возможностей; старое 32-разрядное программное обеспечение может поддерживаться либо на основании того, что 64-разрядный набор инструкций является надмножеством 32-разрядного набора инструкций, так что процессоры, поддерживающие 64-разрядный набор инструкций, также могут выполнять код для 32-разрядной инструкции. установить, или через программную эмуляциюили фактической реализацией 32-разрядного процессорного ядра в 64-разрядном процессоре, как в некоторых процессорах Itanium от Intel, которые включают в себя процессорное ядро IA-32 для запуска 32-разрядных приложений x86 . Операционные системы для этих 64-битных архитектур обычно поддерживают как 32-битные, так и 64-битные приложения. [32]

Одним из существенных исключений из этого правила является AS / 400 , программное обеспечение для которого скомпилировано в архитектуру виртуального набора команд (ISA), называемую технологически независимым машинным интерфейсом (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-разрядных регистров [ необходима цитата ], в то время как производительность других программ, таких как программы, ориентированные на трехмерную графику, остается неизменной при переключении с 32 -разрядной версии. -bit в 64-битную среду. [ необходима цитата ]
  • Некоторые 64-битные архитектуры, такие как x86-64 , поддерживают более универсальные регистры, чем их 32-битные аналоги (хотя это не связано конкретно с длиной слова). Это приводит к значительному увеличению скорости для жестких циклов, поскольку процессору не нужно извлекать данные из кеша или основной памяти, если данные могут уместиться в доступных регистрах.
Пример на C :
int  a ,  b ,  c ,  d ,  e ; для  ( а  =  0 ;  а  <  100 ;  а ++ ) {  б  =  а ;  c  =  b ;  d  =  c ;  е  =  d ; }
Если процессор может хранить только два или три значения или переменные в регистрах, ему потребуется переместить некоторые значения между памятью и регистрами, чтобы иметь возможность обрабатывать также переменные 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-битных приложений. [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 включают 32-битные версии библиотек, которые будут использовать 32-битные приложения, поэтому 32 -bit программное обеспечение пользовательского режима для macOS будет работать в этих системах.

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 . [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]

Многие 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-битные архитектуры [ править ]

По состоянию на май 2018 года 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 расширения, используемые в Intel 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 :
    • Процессоры IBM POWER4 , POWER5 , POWER6 , POWER7 , POWER8 , POWER9 и IBM A2
  • Архитектура SPARC V9:
    • Процессоры Oracle M8 и S7
    • Процессоры Fujitsu SPARC64 XII и SPARC64 XIfx
  • IBM z / Architecture , 64-разрядная версия архитектуры ESA / 390 , используемая в мэйнфреймах IBM eServer zSeries и System z :
    • IBM z13 и z14
    • Hitachi AP8000E
  • Архитектура HP-Intel IA-64 :
    • Intel, Itanium процессоров
  • MIPS Technologies " MIPS64 архитектура
  • ARM Holdings " AArch64 архитектура
  • Архитектура Эльбруса :
    • Эльбрус-8С
  • Архитектура NEC SX
    • SX-Аврора ЦУБАСА
  • RISC-V

Большинство 64-битных архитектур, которые являются производными от той же 32-битной архитектуры, могут выполнять код, написанный для 32-битных версий, изначально без потери производительности. [ необходима цитата ] Этот вид поддержки обычно называют поддержкой двух арок или, в более общем смысле, поддержкой нескольких арок .

См. Также [ править ]

  • Компьютерная память

Заметки [ править ]

  • Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.

Ссылки [ править ]

  1. ^ a b «ARM запускает серию Cortex-A50, самые энергоэффективные 64-битные процессоры в мире» (пресс-релиз). ARM Holdings . Проверено 31 октября 2012 .
  2. ^ Руководство пользователя процессоров Pentium Том 1: Справочник по процессорам Pentium (PDF) . Intel . 1993 г.
  3. ^ "Справочное руководство по аппаратному обеспечению компьютерной системы Cray-1" (PDF) . Cray Research . 1977 . Проверено 8 октября 2013 года .
  4. ^ Граймс, Джек; Кон, Лес; Бхарадвадж, Раджив (июль – август 1989 г.). «64-разрядный процессор Intel i860: универсальный процессор с возможностями 3D-графики» . Компьютерная графика и приложения IEEE . 9 (4): 85–94. DOI : 10.1109 / 38.31467 . S2CID 38831149 . Проверено 19 ноября 2010 . 
  5. Перейти ↑ Zachary, G. Pascal (1994). Showstopper! Бешеная гонка за создание Windows NT и следующее поколение в Microsoft . Книги Уорнера. ISBN 0-02-935671-7.
  6. ^ "Справочное руководство программиста семейства процессоров i860" (PDF) . Intel . 1991 . Проверено 12 сентября 2019 года .
  7. ^ «NEC предлагает два высокопроизводительных 64-разрядных микропроцессора RISC» (пресс-релиз). NEC . 1998-01-20 . Проверено 9 января 2011 . Версии процессора VR4300 широко используются в бытовых и офисных приложениях автоматизации, включая популярные видеоигры Nintendo 64TM и современные лазерные принтеры, такие как недавно анонсированное и отмеченное наградами семейство принтеров Hewlett-Packard LaserJet 4000.
  8. ^ "AMD64 Programmer's Manual Volume 2: System Programming" (PDF) . Усовершенствованные микроустройства. Декабрь 2016. с. 120.
  9. ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 3A: Руководство по системному программированию, часть 1» (PDF) . Intel. Сентябрь 2016. с. 4-2.
  10. ^ "Power ISA Version 3.0" . IBM . 30 ноября 2015 г. с. 983.
  11. ^ «Oracle SPARC Architecture 2015 Draft D1.0.9» . Oracle . п. 475.
  12. ^ "Справочное руководство по архитектуре ARM ARMv8, для профиля архитектуры ARMv8-A" . С. D4-1723, D4-1724, D4-1731.
  13. ^ "64-битный микропроцессор i860" . Intel. 1989 . Проверено 30 ноября 2010 года .
  14. ^ "История Atari Jaguar" . AtariAge .
  15. Джо Генрих (1994). Руководство пользователя микропроцессора MIPS R4000 (2-е изд.). MIPS Technologies, Inc.
  16. ^ Ричард Л. Сайты (1992). «Архитектура Alpha AXP». Цифровой технический журнал . Корпорация цифрового оборудования. 4 (4).
  17. ^ Gwennap, Линли (3 октября 1994). «UltraSparc раскрывает возможности SPARC». Отчет микропроцессора . Ресурсы MicroDesign. 8 (13).
  18. ^ Бишоп, JW; и другие. (Июль 1996 г.). "PowerPC AS A10 64-битный RISC-микропроцессор". Журнал исследований и разработок IBM . Корпорация IBM. 40 (4): 495–505. DOI : 10.1147 / rd.404.0495 .
  19. ^ Gwennap, Линли (14 ноября 1994). «ПА-8000 сочетает в себе сложность и скорость». Отчет микропроцессора . Ресурсы MicroDesign. 8 (15).
  20. ^ Ф. П. О'Коннелл; SW White (ноябрь 2000 г.). «POWER3: следующее поколение процессоров PowerPC». Журнал исследований и разработок IBM . Корпорация IBM. 44 (6): 873–884. DOI : 10.1147 / rd.446.0873 .
  21. ^ "VIA раскрывает детали ядра процессора Isaiah следующего поколения" . VIA Technologies, Inc. Архивировано из оригинала на 2007-10-11 . Проверено 18 июля 2007 .
  22. ^ «Предварительный просмотр технологии ARMv8» (PDF) . 31 октября 2011 . Проверено 15 ноября 2012 года .
  23. ^ "ARM Keynote: ARM Cortex-A53 и ARM Cortex-A57 64-битные процессоры ARMv8 запущены" . ARMdevices.net . 2012-10-31.
  24. ^ Стефан Берка. «Операционная система Unicos» . www.operating-system.org. Архивировано 26 ноября 2010 года . Проверено 19 ноября 2010 .
  25. ^ Джон "Maddog" Hall (Jun 1, 2000). «Моя жизнь и свободное программное обеспечение» . Linux Journal .
  26. ^ Энди Клин. Перенос Linux на x86-64 (PDF) . Симпозиум по Linux в Оттаве, 2001. Статус: ядро, компилятор, цепочка инструментов. Ядро загружается и работает на симуляторе и используется для портирования пользовательской среды и запущенных программ.
  27. ^ а б Джон Сиракуза. «Mac OS X 10.6 Snow Leopard: обзор Ars Technica» . Ars Technica . п. 5. Архивировано 9 октября 2009 года . Проверено 6 сентября 2009 .
  28. Джорис Эверс (5 января 2005 г.). «Microsoft заменяет Windows XP на Itanium» . Компьютерный мир. Архивировано из оригинального 18 июня 2013 года . Проверено 17 октября 2017 года .
  29. ^ «Microsoft повышает ограничение скорости с выпуском 64-разрядных версий Windows Server 2003 и Windows XP Professional» (пресс-релиз). Microsoft. 25 апреля 2005 . Проверено 10 сентября 2015 года .
  30. ^ «UEFI_on_Dell BizClient_Platforms» (PDF) .
  31. ^ Маши, Джон (октябрь 2006 г.). «Долгий путь к 64 битам» . Очередь ACM . 4 (8): 85–94. DOI : 10.1145 / 1165754.1165766 . Проверено 19 февраля 2011 .
  32. ^ "Windows 7: 64-битная или 32-битная?" . Форумы W7. Архивировано 5 апреля 2009 года . Проверено 5 апреля 2009 .
  33. ^ «Часто задаваемые вопросы о виртуальной машине Java HotSpot» . Sun Microsystems, Inc. Архивировано 10 мая 2007 года . Проверено 3 мая 2007 .
  34. ^ «Описание различий между 32-битными версиями Windows Vista и 64-битными версиями Windows Vista» . Проверено 14 октября 2011 .
  35. Марк Руссинович (21.07.2008). «Расширяя границы Windows: физическая память» . Проверено 9 марта 2017 .
  36. Чаппелл, Джефф (27 января 2009 г.). «Лицензионная память в 32-битной Windows Vista» . geoffchappell.com . РГ: СПС . Проверено 9 марта 2017 .
  37. ^ «Внутренние родные приложения» . Technet.microsoft.com. 2006-11-01. Архивировано 23 октября 2010 года . Проверено 19 ноября 2010 .
  38. Линкольн Спектор (12 августа 2013 г.). «Запустить старую программу на новом ПК» .
  39. ^ Питер Зеебах (2006). «Изучение 64-битной разработки на POWER5: насколько действительно переносим ваш код?» .
  40. ^ Генри Спенсер. «Десять заповедей для программистов на C» .
  41. ^ "История удара и промаха" . Datacenterworks.com . Проверено 19 ноября 2010 .
  42. ^ «Модели данных ILP32 и LP64 и размеры типов данных» . Руководство по программированию z / OS XL C / C ++ .
  43. ^ a b c "64-БИТНЫЕ МОДЕЛИ ПРОГРАММИРОВАНИЯ" . Проверено 5 июня 2020 .
  44. ^ «Использование интерфейса ILP64 против интерфейса LP64» . Intel . Проверено 24 июня 2020 года .
  45. ^ a b «Справочное руководство Cray C / C ++» . Август 1998 г. Таблица 9-1. Отображение типов данных систем Cray Research. Архивировано из оригинального 16 октября 2013 года . Проверено 15 октября 2013 года .
  46. ^ a b «Справочное руководство Cray C и C ++ (8.7) S-2179» . Проверено 24 июня 2020 года .
  47. ^ «Абстрактные модели данных - приложения Windows» . 30 мая 2018.
  48. ^ "ILP32 для AArch64 Whitepaper" . ARM Limited. 9 июня 2015 года. Архивировано 30 декабря 2018 года . Проверено 9 октября 2018 года .
  49. ^ «Устройства Apple в 2018 году» . woachk, исследователь безопасности. 6 октября 2018 г.

Внешние ссылки [ править ]

  • 64-битное руководство по переходу, библиотека разработчика Mac
  • Карпов Андрей. «Сборник примеров 64-битных ошибок в реальных программах» .
  • Килгард, Марк Дж. «Готов ли ваш X-код к работе с 64-разрядной версией?» . Архивировано из оригинала 3 июня 2001 года . Проверено 26 сентября 2012 года .
  • Уроки разработки 64-битных приложений на C / C ++
  • 64-битные модели программирования: почему именно LP64?
  • Архитектура AMD64 (EM64T)