128-битные вычисления
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2023 г. ) |
Разрядность архитектуры компьютера |
---|
Кусочек |
Приложение |
с плавающей запятой Двоичная точность |
с плавающей запятой Десятичная точность |
В компьютерной архитектуре 128 -битные целые числа , адреса памяти или другие единицы данных — это те, которые имеют ширину 128 бит (16 октетов ). Кроме того, архитектуры 128-битного центрального процессора (ЦП) и арифметико-логического устройства (АЛУ) основаны на регистрах , адресных шинах или шинах данных такого размера.
Утилита общего назначения для домашних вычислений и игр появилась с размером слова 8 бит, т.е. 2 8 =256 слов , естественная единица данных, становятся возможными. Таким образом, ранние 8-битные процессоры ( Zilog Z80 , MOS Technology 6502 , Intel 8088, представленные в 1976–1981 годах компаниями Commodore , Tandy Corporation , Apple и IBM ) открыли эру персональных компьютеров. Многие 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 × 10 38 ) байт, что значительно превышает общий объем данных, собранных, созданных или реплицированных на Земле по состоянию на 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 Модель 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» или октаслово) и 128-битными типами данных с плавающей запятой («H-float» или HFLOAT). Поддержка таких операций была опцией обновления, а не стандартной функцией. Поскольку регистры VAX имели ширину 32 бита, 128-битная операция использовала в памяти четыре последовательных регистра или четыре длинных слова.
Серия ICL 2900 имела 128-битный аккумулятор, а ее набор команд включал 128-битные операции с плавающей запятой и упакованную десятичную арифметику.
Процессор со 128-битными мультимедийными расширениями был разработан исследователями в 1999 году. [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
type, или он может быть реализован с помощью расширения, специфичного для компилятора. Язык программирования Rust имеет встроенную поддержку 128-битных целых чисел (первоначально через LLVM ), которая реализована на всех платформах. [11] 128-битный тип, предоставляемый компилятором C, может быть доступен в Perl через Math::Int128
модуль. [12]
Использование
[ редактировать ]- Универсально уникальные идентификаторы (UUID) состоят из 128-битного значения.
- IPv6 маршрутизирует трафик компьютерной сети по 128-битному диапазону адресов.
- ZFS — 128-битная файловая система.
- 128 бит — это общий размер ключа для симметричных шифров и общий размер блока для блочных шифров в криптографии .
- Машинный интерфейс IBM i определяет все указатели как 128-битные. Инструкции машинного интерфейса при необходимости преобразуются в реальный набор инструкций оборудования, что позволяет изменять базовое оборудование без необходимости перекомпиляции программного обеспечения. Предыдущее оборудование имело набор инструкций CISC с 48-битной адресацией, а нынешнее оборудование — 64-битное PowerPC / Power ISA . В реализации PowerPC/Power ISA первые четыре байта содержат информацию, используемую для идентификации типа объекта, на который ссылаются, а последние восемь байтов используются в качестве адреса виртуальной памяти. [13] Остальные четыре байта не используются и позволят в будущем расширить приложения IBM i до 96-битной адресации без необходимости изменения кода.
- Увеличение размера слова может ускорить работу нескольких прецизионных математических библиотек с приложениями к криптографии и потенциально ускорить алгоритмы, используемые в сложной математической обработке ( численный анализ , обработка сигналов , сложное редактирование фотографий , а также аудио и обработка видео ).
- MD5 — это хэш-функция, создающая 128-битное хеш-значение.
- Apache Avro использует 128-битное случайное число в качестве маркера синхронизации для эффективного разделения файлов данных. [14] [15]
Ссылки
[ редактировать ]- ^ Рейнзель, Дэвид; Ганц, Джон; Райднинг, Джон (ноябрь 2018 г.). «Цифровизация мира от края до ядра» (PDF) . Технология Сигейт . ИДЦ . п. 3. Архивировано (PDF) из оригинала 7 сентября 2021 г. Проверено 14 сентября 2021 г.
- ^ Мид, Карвер А .; Пэшли, Ричард Д.; Бриттон, Ли Д.; Даймон, Ёсиаки Т.; Сандо, Стюарт Ф. младший (октябрь 1976 г.). «128-битный мультикомпаратор» (PDF) . Журнал IEEE твердотельных схем . 11 (5): 692–695. Бибкод : 1976IJSSC..11..692M . дои : 10.1109/JSSC.1976.1050799 . S2CID 27262034 . Архивировано (PDF) из оригинала 3 ноября 2018 г.
- ^ Падегс А (1968). «Структурные аспекты System/360 Model 85, III: Расширения архитектуры с плавающей запятой». IBM Systems Journal . 7 : 22–29. дои : 10.1147/sj.71.0022 .
- ^ Инструкции ассемблера (BS2000/OSD) . 1993.
- ^ Сузуоки, М.; Кутараги, К.; Хирои, Т.; Магоши, Х.; Окамото, С.; Ока, М.; Охба, А.; Ямамото, Ю.; Фурухаси, М.; Танака, М.; Ютака, Т.; Окада, Т.; Нагамацу, М.; Уракава, Ю.; Фьюнью, М.; Кунимацу, А.; Гото, Х.; Хасимото, К.; Иде, Н.; Мураками, Х.; Отагуро, Ю.; Аоно, А. (ноябрь 1999 г.). «Микропроцессор со 128-битным процессором, десятью MAC с плавающей запятой, четырьмя делителями с плавающей запятой и декодером MPEG-2». Журнал IEEE твердотельных схем . 34 (11): 1608–1618. Бибкод : 1999IJSSC..34.1608S . дои : 10.1109/4.799870 .
- ^ Хеннесси, Джон Л .; Паттерсон, Дэвид А. (2003). Компьютерная архитектура: количественный подход (Третье изд.). Издательство Морган Кауфманн. ISBN 1-55860-724-2 .
- ^ Дифендорф, Кейт (19 апреля 1999 г.). «Эмоционально заряженный чип Sony». Отчет микропроцессора . 13 (5). Ресурсы по микродизайну.
- ^ Уотерман, Эндрю; Асанович, Крсте . «Руководство по набору команд RISC-V, том I: Базовая версия ISA 2.2 уровня пользователя» . Калифорнийский университет, Беркли. ЕЭКС-2016-118 . Проверено 25 мая 2017 г.
- ^ «Серия выпусков GCC 4.6 – изменения, новые функции и исправления» . Проверено 25 июля 2016 г.
- ^ Марк Глисс (26 августа 2015 г.). «128-битное целое число – бессмысленная документация?» . GCC-Справка . Проверено 23 января 2020 г.
- ^ «i128 — Ржавчина» . doc.rust-lang.org . Проверено 25 июня 2020 г.
- ^ "Математика::Int128" . Metacpan.org . Проверено 25 июня 2020 г.
- ^ Фрэнк Г. Солтис (1997). Внутри AS/400, второе издание . Дьюк Пресс. ISBN 978-1-882419-66-1 .
- ^ Клеппманн, Мартин (24 января 2013 г.). «Re: Маркеры синхронизации» . Архивировано из оригинала 27 сентября 2015 года.
- ^ «Спецификация Apache Avro 1.8.0» . Фонд программного обеспечения Apache .