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

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

Хотя в настоящее время нет основных процессоров общего назначения, предназначенных для работы со 128-битными целыми числами или адресами, у ряда процессоров есть специальные способы работы с 128-битными порциями данных.

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

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

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 году.

IBM System / 370 можно считать первым простой 128-битный компьютер, так как он используется 128-битный с плавающей точкой регистров. Большинство современных процессоров имеют наборы инструкций с одной инструкцией, несколькими данными (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-битную арифметику с плавающей запятой и упакованную десятичную арифметику.

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

Dreamcast и PlayStation 2 среди поколения Шестого видео игровых консолей используются термин «128-битный» в своем маркетинге , чтобы описать свои возможности. Процессор Playstation 2 имел 128-битные возможности SIMD . Ни одна из консолей не поддерживала 128-битную адресацию или 128-битную целочисленную арифметику.

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

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

Чипы графического процессора (ГП) обычно перемещают данные по 128-битной шине.

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

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

Использует

использованная литература