stringtranslate.com

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

В архитектуре компьютера 128-битные целые числа , адреса памяти или другие единицы данных — это те, которые имеют ширину 128 бит (16 октетов ). Кроме того, 128-битные архитектуры центрального процессора (ЦП) и арифметико-логического устройства (АЛУ) — это те, которые основаны на регистрах , адресных шинах или шинах данных такого размера.

Общие домашние вычисления и игровые утилиты появились при 8-битных размерах слов, поскольку 2 8 =256 слов , естественная единица данных, стала возможной. Ранние 8-битные процессоры (такие как Zilog Z80 и MOS Technology 6502 , использовавшиеся в 1977 году в PET , TRS-80 и Apple II ) открыли эру персональных компьютеров. Многие 16-битные процессоры уже существовали в середине 1970-х годов. В течение следующих 30 лет переход к 16-битным, 32-битным и 64-битным вычислениям позволил, соответственно, 2 16  = 65 536 уникальных слов, 2 32  = 4 294 967 296 уникальных слов и 2 64  = 18 446 744 073 709 551 616 уникальных слов, каждый шаг предлагал значимое преимущество, пока не было достигнуто 64 бита. Дальнейшие преимущества испаряются от 64-битных к 128-битным вычислениям, поскольку число возможных значений в регистре увеличивается примерно с 18 квинтиллионов (1,8 × 10 19 ) до 340 ундециллионов (3,4 × 10 38 ), поскольку так много уникальных значений никогда не используются. Таким образом, с регистром, который может хранить 2 128 значений, никаких преимуществ перед 64-битными вычислениями не возникает ни в домашних вычислениях, ни в играх. Процессоры с большим размером слова также требуют больше схем, они физически больше, потребляют больше энергии и выделяют больше тепла. Таким образом, в настоящее время нет основных процессоров общего назначения, созданных для работы со 128-битными целыми числами или адресами, хотя ряд процессоров имеют специализированные способы работы со 128-битными фрагментами данных и приведены в § История.

Представление

Процессор с 128-битной байтовой адресацией мог напрямую адресовать до 2 128 (более3,40 × 1038 ) байт, что значительно превысит общий объем данных, полученных, созданных или воспроизведенных на Земле по состоянию на 2018 год, который оценивается примерно в 33  зеттабайта ( более 2,74 байта  ). [1]

128-битный регистр может хранить 2 128 (более 3,40 × 10 38 ) различных значений. Диапазон целочисленных значений, которые могут храниться в 128 битах, зависит от используемого целочисленного представления . В двух наиболее распространенных представлениях диапазон составляет от 0 до 340 282 366 920 938 463 463 374 607 431 768 211 455 (2 128 − 1) для представления в виде ( беззнакового ) двоичного числа и от −170 141 183 460 469 231 731 687 303 715 884 105 728 (−2 127 ) до 170,​141,​183,​460,​469,​231,​731,​687,​303,​715,​884,​105,​727 (2 127 − 1) для представления в виде дополнения до двух .

Числа с плавающей точкой четверной точности (128 бит) могут хранить 113-битные числа с фиксированной точкой или целые числа без потери точности (в частности, 64-битные целые числа). Числа с плавающей точкой четверной точности также могут представлять любую позицию в наблюдаемой вселенной с точностью не менее микрометра. [ необходима цитата ]

Числа с плавающей точкой Decimal128 могут представлять числа, содержащие до 34 значащих цифр.

История

128-битный мультикомпаратор был описан исследователями в 1976 году. [2]

IBM System/360 Model 85 [ 3] и IBM System/370 и их последователи поддерживают 128-битную арифметику с плавающей точкой.

Мейнфреймы серий Siemens 7.700 и 7.500 и их последователи поддерживают 128-битную арифметику с плавающей точкой. [4]

Большинство современных ЦП имеют наборы инструкций SIMD ( Streaming SIMD Extensions , AltiVec и т. д.), где 128-битные векторные регистры используются для хранения нескольких меньших чисел, таких как четыре 32-битных числа с плавающей точкой. Затем одна инструкция может работать со всеми этими значениями параллельно. Однако эти процессоры не работают с отдельными числами длиной 128 двоичных цифр; только их векторные регистры имеют размер 128 бит.

DEC VAX поддерживал операции с 128-битными целыми ('O' или octaword) и 128-битными типами данных с плавающей точкой ('H-float' или HFLOAT). Поддержка таких операций была опцией обновления, а не стандартной функцией. Поскольку регистры VAX имели ширину 32 бита, 128-битная операция использовала четыре последовательных регистра или четыре длинных слова в памяти.

Серия ICL 2900 имела 128-битный аккумулятор, а ее набор инструкций включал 128-битную арифметику с плавающей точкой и упакованную десятичную арифметику.

В 1999 году исследователи разработали процессор с 128-битными мультимедийными расширениями. [5]

Среди шестого поколения игровых консолей Dreamcast и PlayStation 2 использовали термин 128-бит в своем маркетинге для описания своих возможностей. Процессор Playstation 2 имел 128-битные возможности SIMD. [6] [7] Ни одна из консолей не поддерживала 128-битную адресацию или 128-битную целочисленную арифметику.

Аппаратное обеспечение

Спецификация RISC-V ISA от 2016 года включает резервирование для 128-битной версии архитектуры, но детали намеренно остаются неопределенными, поскольку пока еще слишком мало практического опыта работы с такими большими размерами слов. [8]

Программное обеспечение

Точно так же, как компиляторы эмулируют, например, 64-битную целочисленную арифметику на архитектурах с размером регистра менее 64 бит, некоторые компиляторы также поддерживают 128-битную целочисленную арифметику. Например, компилятор GCC C 4.6 и более поздние версии имеют 128-битный целочисленный тип __int128для некоторых архитектур. [9] GCC и совместимые компиляторы сигнализируют о наличии 128-битной арифметики, когда __SIZEOF_INT128__определяется макрос. [10] Для языка программирования C поддержка 128-битной арифметики является необязательной, например, через int128_tтип, или она может быть реализована с помощью расширения, специфичного для компилятора. Язык программирования Rust имеет встроенную поддержку 128-битных целых чисел (первоначально через LLVM ), которая реализована на всех платформах. [11] 128-битный тип, предоставляемый компилятором C, может быть доступен в Perl через Math::Int128модуль. [12]

Использует

Ссылки

  1. ^ Рейнсел, Дэвид; Ганц, Джон; Райднинг, Джон (ноябрь 2018 г.). «Цифровизация мира от периферии до ядра» (PDF) . Seagate Technology . IDC . стр. 3. Архивировано (PDF) из оригинала 7 сентября 2021 г. . Получено 14 сентября 2021 г. .
  2. ^ Мид, Карвер А .; Пэшли, Ричард Д.; Бриттон, Ли Д.; Даймон, Ёсиаки Т.; Сандо, Стюарт Ф. младший (октябрь 1976 г.). "128-битный мультикомпаратор" (PDF) . IEEE Journal of Solid-State Circuits . 11 (5): 692–695. Bibcode : 1976IJSSC..11..692M. doi : 10.1109/JSSC.1976.1050799. S2CID  27262034. Архивировано (PDF) из оригинала 3 ноября 2018 г.
  3. ^ Падегс А (1968). «Структурные аспекты System/360 Model 85, III: Расширения для архитектуры с плавающей точкой». IBM Systems Journal . 7 : 22–29. doi :10.1147/sj.71.0022.
  4. ^ Инструкции по ассемблеру (BS2000/OSD). 1993.
  5. ^ Сузуоки, М.; Кутараги, К.; Хирои, Т.; Магоши, Х.; Окамото, С.; Ока, М.; Охба, А.; Ямамото, Ю.; Фурухаси, М.; Танака, М.; Ютака, Т.; Окада, Т.; Нагамацу, М.; Уракава, Ю.; Фьюнью, М.; Кунимацу, А.; Гото, Х.; Хасимото, К.; Иде, Н.; Мураками, Х.; Отагуро, Ю.; Аоно, А. (ноябрь 1999 г.). «Микропроцессор со 128-битным процессором, десятью MAC с плавающей запятой, четырьмя делителями с плавающей запятой и декодером MPEG-2». Журнал IEEE твердотельных схем . 34 (11): 1608–1618. Бибкод : 1999IJSSC..34.1608S. дои : 10.1109/4.799870.
  6. ^ Хеннесси, Джон Л .; Паттерсон, Дэвид А. (2003). Архитектура компьютера: количественный подход (третье изд.). Morgan Kaufmann Publishers. ISBN 1-55860-724-2.
  7. ^ Дифендорф, Кит (19 апреля 1999 г.). «Эмоционально заряженный чип Sony». Microprocessor Report . 13 (5). Ресурсы микродизайна.
  8. ^ Waterman, Andrew; Asanović, Krste . "Руководство по набору инструкций RISC-V, том I: Базовый пользовательский уровень ISA версии 2.2". Калифорнийский университет в Беркли. EECS-2016-118 . Получено 25 мая 2017 г.
  9. ^ "GCC 4.6 Release Series – Changes, New Features, and Fixes" . Получено 25 июля 2016 г. .
  10. ^ Марк Глисс (26 августа 2015 г.). «128-битное целое число – бессмысленная документация?». GCC-Help . Получено 23 января 2020 г. .
  11. ^ "i128 – Rust". doc.rust-lang.org . Получено 25 июня 2020 г. .
  12. ^ "Math::Int128". metacpan.org . Получено 25 июня 2020 г. .
  13. ^ Фрэнк Г. Солтис (1997). Внутри AS/400, второе издание. Duke Press. ISBN 978-1-882419-66-1.
  14. ^ Клеппманн, Мартин (24 января 2013 г.). "Re: Synchronization Markers". Архивировано из оригинала 27 сентября 2015 г.
  15. ^ "Спецификация Apache Avro 1.8.0". Apache Software Foundation .