64-битные вычисления - 64-bit computing

редактировать
Использование процессоров с размером слова 64 бита

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

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

64-битный регистр может содержать любое из 2 (более 18 квинтиллионов или 1,8 × 10) различных значений. Диапазон целочисленных значений, которые могут быть сохранены в 64-битных значениях, зависит от используемого целочисленного представления. В двух наиболее распространенных представлениях диапазон от 0 до 18 446 744 073 709 551 615 (2 - 1) для представления в виде (беззнакового ) двоичного числа и от -9 223 372 036 854 775 808 (−2) до 9 223 372 036 854 775 807 ( 2-1) для представления как дополнение до двух. Следовательно, процессор с 64-битными адресами памяти может напрямую обращаться к 2 байтам (= 16 эксабайт ) адресуемой байтами памяти.

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

Содержание

  • 1 Архитектурные последствия
  • 2 История
  • 3 Ограничения процессоров
  • 4 Временная шкала 64-битных данных
  • 5 Временная шкала 64-битного адреса
  • 6 Временная шкала 64-битной операционной системы
  • 7 64-битных приложений
    • 7.1 32-битные и 64-битные
    • 7.2 Плюсы и минусы
    • 7.3 Доступность программного обеспечения
  • 8 64-битных моделей данных
  • 9 Текущие 64-битные архитектуры
  • 10 См. Также
  • 11 Примечания
  • 12 Ссылки
  • 13 Внешние ссылки

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

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

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

История

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

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

Некоторые суперкомпьютерные архитектуры 1970-х годов и 1980-е, такие как Cray-1, использовали регистры шириной до 64 бит и поддерживали 64-битную целочисленную арифметику, хотя они не поддерживали 64-битную адресацию. В середине 1980-х разработка Intel i860 начала завершиться выпуском 1989 года (слишком поздно для Windows NT); i860 имел 32-битные целочисленные регистры и 32-битную адресацию, поэтому он не был полностью 64-битным процессором, хотя его графический блок поддерживал 64-битную целочисленную арифметику. Тем не менее, 32 бита оставались нормой до начала 1990-х годов, когда постоянное снижение стоимости памяти привело к установкам с объемом ОЗУ, приближающимся к 4 ГБ, и использование пространств виртуальной памяти, превышающих потолок 4 ГБ, стало желательным для обработки определенных типов. проблем. В ответ на это MIPS и DEC разработали 64-битные микропроцессорные архитектуры, первоначально для высокопроизводительных рабочих станций и серверов. К середине 1990-х годов HAL Computer Systems, Sun Microsystems, IBM, Silicon Graphics и Hewlett Packard разработали 64-битные архитектуры для своих рабочих станций и серверных систем. Заметным исключением из этой тенденции были мэйнфреймы от IBM, которые тогда использовали 32-битные данные и 31-битные адреса; мэйнфреймы IBM не включали 64-битные процессоры до 2000 года. В 1990-х годах несколько недорогих 64-битных микропроцессоров использовались в бытовой электронике и встроенных приложениях. Примечательно, что Nintendo 64 и PlayStation 2 имели 64-битные микропроцессоры до их внедрения в персональных компьютерах. Высококачественные принтеры, сетевое оборудование и промышленные компьютеры также использовали 64-битные микропроцессоры, такие как Quantum Effect Devices R5000. 64-битные вычисления начали проникать на настольные ПК с 2003 года, когда некоторые модели в линейке Macintosh Apple перешли на процессоры PowerPC 970 (Apple называла G5), и AMD выпустила свой первый 64-битный процессор x86-64.

Ограничения процессоров

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

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

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

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

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

DEC Alpha Для спецификации требуется минимум 43 бита адресного пространства виртуальной памяти (8 ТиБ), а аппаратное обеспечение должно проверять и перехватывать, если оставшиеся неподдерживаемые биты равны нулю (для поддержки совместимости с будущими процессорами). Alpha 21064 поддерживал 43 бита адресного пространства виртуальной памяти (8 ТиБ) и 34 бита адресного пространства физической памяти (16 ГиБ). Alpha 21164 поддерживает 43 бита адресного пространства виртуальной памяти (8 ТиБ) и 40 бит адресного пространства физической памяти (1 ТиБ). Alpha 21264 поддерживает настраиваемые пользователем 43 или 48 битов адресного пространства виртуальной памяти (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-битные целочисленные операции.
1993
Atari представляет Atari Jaguar игровая консоль, которая включает в себя некоторые 64-битные тракты данных в своей архитектуре.

Временная шкала 64-битного адреса

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

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

1985
Cray релизы UNICOS, первая 64-битная реализация операционной системы Unix.
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.
1996
Поддержка процессоров R4x00 в 64-битном режиме добавлена ​​Silicon Graphics для IRIX операционной системы в выпуске 6.2.
1998
Sun выпускает Solaris 7 с полной 64-битная UltraSPARC support.
2000
IBM выпускает z / OS, 64-битная операционная система, происходящая от MVS для новых 64-битных мэйнфреймов zSeries ; 64-битная Linux на z Systems следует за выпуском ЦП почти сразу.
2001
Linux становится первым ядром ОС, полностью поддерживающим x86-64 (на симуляторе, поскольку процессоры x86-64 еще не были выпущены).
2001
Microsoft выпускает 64-разрядную версию Windows XP для Itanium Архитектура IA-64, хотя она могла запускать 32-разрядные приложения через уровень выполнения.
2003
Apple выпускает свою Mac OS X 10.3 Операционная система «Пантера», которая добавляет поддержку собственной 64-битной целочисленной арифметики на процессорах PowerPC 970. Несколько выпусков Linux выпускаются с поддержкой AMD64. FreeBSD выпускает с поддержкой AMD64.
2005
4 января Microsoft прекращает выпуск 64-разрядной версии Windows XP, так как ПК с процессорами IA-64 не были доступны с сентября прошлого года и объявляет, что разрабатывает версии Windows x86-64 для ее замены. 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.
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-разрядными.
2011
Apple выпускает Mac OS X 10.7, «Lion», на котором работает 64-разрядная версия. битовое ядро ​​по умолчанию на поддерживаемых машинах. На старых машинах, на которых не может работать 64-битное ядро, работает 32-битное ядро, но, как и в более ранних выпусках, можно запускать 64-битные приложения; Lion не поддерживает машины с 32-битными процессорами. Почти все приложения, поставляемые с Mac OS X 10.7, теперь также являются 64-битными, включая iTunes.
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-битную архитектуру является фундаментальным изменением, как и большинство Операционные системы должны быть значительно изменены, чтобы воспользоваться преимуществами новой архитектуры, поскольку это программное обеспечение должно управлять фактическим оборудованием адресации памяти. Другое программное обеспечение также должно быть перенесено на для использования новых возможностей; старое 32-разрядное программное обеспечение может поддерживаться либо на основании того, что 64-разрядный набор инструкций является надмножеством 32-разрядного набора инструкций, так что процессоры, поддерживающие 64-разрядный набор инструкций, также могут выполнять код для 32-разрядной инструкции установлен, либо с помощью программной эмуляции, либо путем фактической реализации ядра 32-битного процессора в 64-битном процессоре, как в некоторых процессорах Itanium от Intel, которые включают IA-32 ядро ​​процессора для запуска 32-битных приложений x86. Операционные системы для этих 64-битных архитектур обычно поддерживают как 32-битные, так и 64-битные приложения.

Одним из важных исключений является 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, имеют доступ к большему адресному пространству.

Скорость - не единственный фактор, который следует учитывать при сравнении 32-битных и 64-битных процессоров. Такие приложения, как многозадачность, стресс-тестирование и кластеризация - для высокопроизводительных вычислений (HPC) - могут больше подходить для 64-разрядной архитектуры при правильном развертывании. По этой причине 64-битные кластеры широко используются в крупных организациях, таких как IBM, HP и Microsoft.

Резюме:

  • 64-битный процессор лучше всего работает с 64-битным программным обеспечением.
  • 64-битный процессор имеет обратную совместимость и будет работать с большинством 32-битного программного обеспечения.
  • 32-битный процессор несовместим с 64-битным программным обеспечением.

Плюсы и минусы

Распространенное заблуждение состоит в том, что 64-битные архитектуры не лучше 32-битных, если только компьютер имеет более 4 ГиБ оперативной памяти. Это не совсем так:

  • Некоторые операционные системы и определенные конфигурации оборудования ограничивают пространство физической памяти до 3 ГиБ в системах IA-32, так как большая часть области 3-4 ГиБ зарезервирована для оборудования. адресация; см. барьер на 3 ГБ ; 64-битные архитектуры могут адресовать гораздо больше, чем 4 ГиБ. Однако процессоры IA-32 от Pentium Pro и более поздних версий позволяют использовать 36-битное адресное пространство физической памяти с использованием Physical Address Extension (PAE), что дает диапазон физических адресов 64 ГиБ, из которых до 62 ГиБ может использоваться основной памятью; Операционные системы, поддерживающие PAE, не могут быть ограничены 4 ГиБ физической памяти даже на процессорах IA-32. Однако драйверы и другое программное обеспечение режима ядра, особенно более старые версии, могут быть несовместимы с PAE; это было указано как причина того, что 32-разрядные версии Microsoft Windows были ограничены 4 ГиБ физической RAM (хотя обоснованность этого объяснения оспаривается).
  • Некоторые операционные системы зарезервировать части адресного пространства процесса для использования ОС, эффективно уменьшая общее адресное пространство, доступное для отображения памяти для пользовательских программ. Например, 32-битная Windows резервирует 1 или 2 ГиБ (в зависимости от настроек) от общего адресного пространства для ядра, в результате чего для пользовательского режима остается только 3 или 2 ГиБ (соответственно) адресного пространства. Этот предел намного выше в 64-битных операционных системах.
  • Файлы с отображением памяти становятся все труднее реализовывать в 32-битных архитектурах, поскольку файлы размером более 4 ГиБ становятся все более распространенными; такие большие файлы не могут быть легко отображены в памяти в 32-разрядных архитектурах, поскольку только часть файла может быть отображена в адресное пространство за раз, и для доступа к такому файлу с помощью сопоставления памяти отображенные части должны быть заменены и из адресного пространства по мере необходимости. Это проблема, поскольку отображение памяти, если оно правильно реализовано в ОС, является одним из наиболее эффективных методов преобразования диска в память.
  • Некоторые 64-разрядные программы, такие как кодеры, декодеры и программное обеспечение для шифрования, могут значительно выиграть от использования 64-битных регистров, в то время как производительность других программ, таких как программы, ориентированные на трехмерную графику, остается неизменной при переключении с 32-битной на 64-битную среду.
  • Некоторые 64-битные Архитектуры, такие как x86-64, поддерживают больше регистров общего назначения, чем их 32-битные аналоги (хотя это не связано конкретно с длиной слова). Это приводит к значительному увеличению скорости для жестких циклов, поскольку процессору не нужно извлекать данные из кеша или основной памяти, если данные могут уместиться в доступных регистрах.
Пример в C :
int a, b, c, г, д; for (a = 0; a < 100; a++) { b = a; c = b; d = c; e = d; }
Если процессор имеет возможность хранить только два или три значения или переменные в регистрах, ему потребуется переместить некоторые значения между памятью и регистрами, чтобы иметь возможность обрабатывать также переменные d и e; это процесс, который занимает много циклов ЦП.Процессор, который может хранить все значения и переменные в регистрах, может проходить их по циклу без необходимости перемещать данные между регистрами и памятью для каждой итерации.Это поведение можно легко сравнить с виртуальной памятью, хотя любые эффекты зависят от компилятора.

Главный недостаток 64-битных архитектур состоит в том, что по сравнению с 32-битными архитектурами одни и те же данные занимают больше места в памяти (из-за более длинных указателей и, возможно, других типов, и выравнивание). Это увеличивает требования к памяти для данного процесса и может иметь последствия для эффективного использования кэша процессора. Поддержание частичной 32-разрядной модели - один из способов справиться с этим, и в целом он достаточно эффективен. Например, z / O Операционная система S использует этот подход, требуя, чтобы программный код размещался в 31-битных адресных пространствах (старший бит не используется при вычислении адреса на базовой аппаратной платформе), в то время как объекты данных могут необязательно размещаться в 64-битных областях. Не все такие приложения требуют большого адресного пространства или манипулируют 64-битными элементами данных, поэтому эти приложения не получают преимуществ от этих функций.

Доступность программного обеспечения

64-битные системы на базе x86 иногда не имеют эквивалентов программного обеспечения, написанного для 32-битных архитектур. Самая серьезная проблема в Microsoft Windows - несовместимость драйверов устройств для устаревшего оборудования. Большинство 32-разрядных приложений может работать в 64-разрядной операционной системе в режиме совместимости , также называемом режимом эмуляции, например, технология Microsoft WoW64 для IA-64 и AMD64. Среда 64-разрядного драйвера Windows Native Mode работает поверх 64-разрядной NTDLL.DLL, которая не может вызывать 32-разрядный код подсистемы Win32 (часто устройства, фактическая аппаратная функция которых эмулируется в программном обеспечении пользовательского режима, например Winprinters). Поскольку 64-разрядные драйверы для большинства устройств были недоступны до начала 2007 года (Vista x64), использование 64-разрядной версии Windows считалось проблемой. However, the trend has since moved toward 64-bit computing, more so as memory prices dropped and the use of more than 4 GB of RAM increased. Most manufacturers started to provide both 32-bit and 64-bit drivers for new devices, so unavailability of 64-bit drivers ceased to be a problem. 64-bit drivers were not provided for many older devices, which could consequently not be used in 64-bit systems.

Driver compatibility was less of a problem with open-source drivers, as 32-bit ones could be modified for 64-bit use. Support for hardware made before early 2007, was problematic for open-source platforms, due to the relatively small number of users.

64-bit versions of Windows cannot run 16-bit software. However, most 32-bit applications will work well. 64-bit users are forced to install a virtual machine of a 16- or 32-bit operating system to run 16-bit applications.

Mac OS X 10.4 "Tiger" and Mac OS X 10.5 "Leopard" had only a 32-bit kernel, but they can run 64-bit user-mode code on 64-bit processors. Mac OS X 10.6 "Snow Leopard" had both 32- and 64-bit kernels, and, on most Macs, used the 32-bit kernel even on 64-bit processors. This allowed those Macs to support 64-bit processes while still supporting 32-bitдрайверы устройств; хотя не 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++ toolchains для них, имеют поддерживает 64-битные процессоры в течение многих лет. Многие приложения и библиотеки для этих платформ представляют собой программное обеспечение с открытым исходным кодом, написанное на C и C ++, поэтому, если они являются 64-битными, их можно скомпилировать в 64-битные версии. Эта модель распространения на основе исходного кода с акцентом на частые выпуски делает доступность прикладного программного обеспечения для этих операционных систем менее важной проблемой.

64-битные модели данных

В 32-битных программах указатели и типы данных, такие как целые числа, обычно имеют одинаковую длину. Это не обязательно верно на 64-битных машинах. Таким образом, смешивание типов данных в языках программирования, таких как C и его потомков, таких как C ++ и Objective-C, может работать в 32-разрядных реализациях, но не в 64-разрядных. битовые реализации.

Во многих средах программирования для языков C и производных от C на 64-битных машинах переменные intпо-прежнему имеют ширину 32 бита, но длинные целые числа и указатели имеют ширину 64 бита. Они описаны как имеющие модель данных LP64 . Другие модели - это модель данных ILP64, в которой все три типа данных имеют ширину 64 бита, и даже модель SILP64, в которой короткие целые числа также имеют ширину 64 бита. Однако в большинстве случаев требуемые модификации относительно незначительны и просты, и многие хорошо написанные программы можно просто перекомпилировать для новой среды без изменений. Другой альтернативой является модель LLP64, которая поддерживает совместимость с 32-битным кодом, оставляя для intи long32-битные. LL относится к длинному длинному целочисленному типу, который составляет не менее 64 бит на всех платформах, включая 32-битные среды.

64-битные модели данных
Модель данныхshort (integer)intlong (integer)long longуказатели,. size_tПримеры операционных систем
LLP641632326464Microsoft Windows (x86-64 и IA-64) с использованием Visual C ++ ; и MinGW
LP641632646464Большинство Unix и Unix-подобных систем, например, Solaris, Linux, BSD, macOS. Windows при использовании Cygwin ; z / OS
ILP641664646464HAL Computer Системы перенос Solaris на SPARC64
SILP646464646464Classic UNICOS (по сравнению с UNICOS / 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). Устройство DMA в верхние области памяти 64-битной машины не может удовлетворить запросы системы на устройство в памяти выше барьера в 4 гигибайта, поскольку указатели для этих адресов не помещаются в регистры DMA устройства. Эта проблема решается за счет того, что ОС принимает во внимание ограничение памяти устройства при генерации запросов к драйверам для DMA, или за счет использования блока управления памятью ввода-вывода (IOMMU).

Текущие 64-битные архитектуры

По состоянию на май 2018 года 64-битные архитектуры, для которых производятся процессоры, включая:

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

См. Также

Примечания

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

Ссылки

Внешние ссылки

Последняя правка сделана 2021-07-19 04:16:44
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте