Jump to content

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

(Перенаправлено с ILP32 )
Шестнадцатеричный дамп таблицы разделов в 64-битном переносимом исполняемом файле. 64-битное слово можно представить как последовательность из 16 шестнадцатеричных цифр.

В компьютерной архитектуре 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 эксабайт или ЭБ) памяти с байтовой адресацией .

Без каких-либо дополнительных уточнений, 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-битным процессором. [ нужна ссылка ]

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

[ редактировать ]

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

Архитектура x86-64 (по состоянию на 2016 г.) ) допускает 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]

64-битные модели данных
Данные
модель
короткий
интервал
интервал длинный
интервал
длинный
длинный
Указатель,
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 г. К 64-битным архитектурам, для которых производятся процессоры, относятся:

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

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Руководство пользователя процессора Pentium, том 1: Справочник данных процессора Pentium (PDF) . Интел . 1993.
  2. ^ «Справочное руководство по аппаратному обеспечению компьютерной системы Cray-1» (PDF) . Крейские исследования . 1977 год . Проверено 8 октября 2013 г.
  3. ^ Граймс, Джек; Кон, Лес; Бхарадвадж, Раджив (июль – август 1989 г.). «64-разрядный процессор Intel i860: процессор общего назначения с возможностями 3D-графики» . IEEE Компьютерная графика и приложения . 9 (4): 85–94. дои : 10.1109/38.31467 . S2CID   38831149 . Проверено 19 ноября 2010 г.
  4. ^ «Справочное руководство программиста семейства процессоров i860» (PDF) . Интел . 1991 год . Проверено 12 сентября 2019 г.
  5. ^ «NEC предлагает два высокопроизводительных 64-битных RISC-микропроцессора» (пресс-релиз). НЭК . 20 января 1998 г. Проверено 9 января 2011 г. Версии процессора VR4300 широко используются в потребительских и офисных приложениях автоматизации, включая популярные видеоигры Nintendo 64TM и современные лазерные принтеры, такие как недавно анонсированное, отмеченное наградами семейство принтеров Hewlett-Packard LaserJet 4000.
  6. ^ «64-битный микропроцессор i860» . Интел. 1989 год . Проверено 30 ноября 2010 г.
  7. ^ «История Atari Jaguar» . АтариЭйдж .
  8. ^ Джо Генрих (1994). Руководство пользователя микропроцессора MIPS R4000 (2-е изд.). МИПС Технологии, Инк.
  9. ^ Ричард Л. Сайтс (1992). «Архитектура Альфа AXP». Цифровой технический журнал . 4 (4). Корпорация цифрового оборудования.
  10. ^ Гвеннап, Линли (3 октября 1994 г.). «UltraSparc повышает производительность SPARC». Отчет микропроцессора . 8 (13). Ресурсы по микродизайну.
  11. ^ Бишоп, JW; и др. (июль 1996 г.). «64-битный RISC-микропроцессор PowerPC AS A10». Журнал исследований и разработок IBM . 40 (4). Корпорация IBM: 495–505. дои : 10.1147/rd.404.0495 .
  12. ^ Гвеннап, Линли (14 ноября 1994 г.). «PA-8000 сочетает в себе сложность и скорость». Отчет микропроцессора . 8 (15). Ресурсы по микродизайну.
  13. ^ Ф. П. О'Коннелл; SW Белый (ноябрь 2000 г.). «POWER3: следующее поколение процессоров PowerPC». Журнал исследований и разработок IBM . 44 (6). Корпорация IBM: 873–884. дои : 10.1147/rd.446.0873 .
  14. ^ «VIA раскрывает подробности процессорного ядра Isaiah следующего поколения» . VIA Technologies, Inc. Архивировано из оригинала 11 октября 2007 г. Проверено 18 июля 2007 г.
  15. ^ «Обзор технологии ARMv8» (PDF) . 31 октября 2011 г. Архивировано из оригинала (PDF) 11 ноября 2011 г. . Проверено 15 ноября 2012 г.
  16. ^ «ARM выпускает серию Cortex-A50, самые энергоэффективные 64-битные процессоры в мире» (пресс-релиз). АРМ Холдингс . Проверено 31 октября 2012 г.
  17. ^ «ARM Keynote: выпущены 64-битные процессоры ARM Cortex-A53 и ARM Cortex-A57 ARMv8» . ARMdevices.net . 31 октября 2012 г.
  18. ^ «Synopsys представляет новый 64-битный IP-процессор ARC» . Архивировано из оригинала 31 марта 2022 года.
  19. ^ Стефан Берка. «Операционная система Unicos» . www.operating-system.org. Архивировано из оригинала 26 ноября 2010 года . Проверено 19 ноября 2010 г.
  20. ^ Джон «Maddog» Холл (1 июня 2000 г.). «Моя жизнь и свободное программное обеспечение» . Linux-журнал .
  21. ^ Энди Клин. Портирование Linux на x86-64 (PDF) . Оттавский симпозиум Linux 2001. Статус: Ядро, компилятор, набор инструментов работают. Ядро загружается и работает на симуляторе и используется для переноса пользовательского пространства и запуска программ.
  22. ^ Jump up to: а б Джон Сиракузы (сентябрь 2009 г.). «Mac OS X 10.6 Snow Leopard: обзор Ars Technica» . Арс Техника . п. 5. Архивировано из оригинала 9 октября 2009 года . Проверено 6 сентября 2009 г.
  23. ^ Джорис Эверс (5 января 2005 г.). «Microsoft отказывается от Windows XP ради Itanium» . Компьютерный мир. Архивировано из оригинала 18 июня 2013 года . Проверено 17 октября 2017 г.
  24. ^ «Microsoft повышает ограничение скорости с появлением 64-разрядных выпусков Windows Server 2003 и Windows XP Professional» (пресс-релиз). Майкрософт. 25 апреля 2005 года . Проверено 10 сентября 2015 г.
  25. ^ «UEFI_on_Dell BizClient_Platforms» (PDF) .
  26. ^ «Руководство программиста AMD64, том 2: Системное программирование» (PDF) . Передовые микроустройства. Декабрь 2016. с. 120.
  27. ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 3A: Руководство по системному программированию, часть 1» (PDF) . Интел. Сентябрь 2016. с. 4-2.
  28. ^ «Power ISA версии 3.0» . ИБМ . 30 ноября 2015 г. с. 983.
  29. ^ «Проект Oracle SPARC Architecture 2015 D1.0.9» . Оракул . п. 475.
  30. ^ «Справочное руководство по архитектуре ARM ARMv8, для профиля архитектуры ARMv8-A» . стр. Д4-1723, Д4-1724, Д4-1731.
  31. ^ Маши, Джон (октябрь 2006 г.). «Долгая дорога к 64 битам» . Очередь АКМ . 4 (8): 85–94. дои : 10.1145/1165754.1165766 .
  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 июля 2008 г.). «Расширяя возможности Windows: физическая память» . Проверено 9 марта 2017 г.
  36. ^ Чаппелл, Джефф (27 января 2009 г.). «Лицензионная память в 32-битной Windows Vista» . geoffchappell.com . ВП: СПС . Проверено 9 марта 2017 г.
  37. ^ «Внутри собственных приложений» . Technet.microsoft.com. 01.11.2006. Архивировано из оригинала 23 октября 2010 года . Проверено 19 ноября 2010 г.
  38. ^ Линкольн Спектор (12 августа 2013 г.). «Запустите старую программу на новом ПК» .
  39. ^ Питер Сибах (2006). «Изучение 64-битной разработки на POWER5: насколько на самом деле переносим ваш код?» . ИБМ .
  40. ^ Генри Спенсер. «Десять заповедей программиста на Си» .
  41. ^ «История удара и ошибки» . Datacenterworks.com . Проверено 19 ноября 2010 г.
  42. ^ «Модели данных ILP32 и LP64 и размеры типов данных» . Руководство по программированию на z/OS XL C/C++ .
  43. ^ Jump up to: а б с «Модели 64-битного программирования» . Проверено 5 июня 2020 г.
  44. ^ «Использование интерфейса ILP64 и интерфейса LP64» . Интел . Проверено 24 июня 2020 г. .
  45. ^ Jump up to: а б «Справочное руководство Cray C/C++» . Август 1998 г. Таблица 9-1. Сопоставление типов данных систем Cray Research. Архивировано из оригинала 16 октября 2013 года . Проверено 15 октября 2013 г.
  46. ^ Jump up to: а б «Справочное руководство Cray C и C++ (8.7) S-2179» . Проверено 24 июня 2020 г. .
  47. ^ «Абстрактные модели данных — приложения Windows» . 30 мая 2018 г.
  48. ^ «Информационный документ ILP32 для AArch64» . АРМ Лимитед. 9 июня 2015 года. Архивировано из оригинала 30 декабря 2018 года . Проверено 9 октября 2018 г.
  49. ^ «Устройства Apple 2018 года» . Воаук, исследователь безопасности. 6 октября 2018 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: fe2856a347f223d866d7bc0aed2a0723__1722597540
URL1:https://arc.ask3.ru/arc/aa/fe/23/fe2856a347f223d866d7bc0aed2a0723.html
Заголовок, (Title) документа по адресу, URL1:
64-bit computing - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)