128-битные вычисления
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2023 г. ) |
Разрядность архитектуры компьютера |
---|
Кусочек |
Приложение |
с плавающей запятой Двоичная точность |
с плавающей запятой Десятичная точность |
В компьютерной архитектуре 128 -битные целые числа , адреса памяти или другие единицы данных — это те, которые имеют ширину 128 бит (16 октетов ). Кроме того, архитектуры 128-битного центрального процессора (ЦП) и арифметико-логического устройства (АЛУ) основаны на регистрах , адресных шинах или шинах данных такого размера.
Общие утилиты для домашних вычислений и игр появились с 8-битными (но не с 1- или 4-битными) размерами слов, поскольку 2 8 =256 слов , естественная единица данных, становятся возможными. Таким образом, ранние 8-битные процессоры ( Zilog Z80 , 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 615 уникальных слов соответственно, каждый шаг дает значительное преимущество до тех пор, пока не будет достигнуто 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-битную целочисленную арифметику.
Современные чипы графических процессоров (GPU) могут обрабатывать данные по 128-битной шине. [8]
Аппаратное обеспечение [ править ]
Спецификация RISC-V ISA от 2016 года включает резервирование для 128-битной версии архитектуры, но детали намеренно остаются неопределенными, поскольку практического опыта работы с таким большим размером слова еще очень мало. [9]
Программное обеспечение [ править ]
Точно так же, как компиляторы эмулируют, например, 64-битную целочисленную арифметику на архитектурах с размером регистров менее 64 бит, некоторые компиляторы также поддерживают 128-битную целочисленную арифметику. Например, компилятор GCC C версии 4.6 и более поздних версий имеет 128-битный целочисленный тип. __int128
для некоторых архитектур. [10] GCC и совместимые компиляторы сигнализируют о наличии 128-битной арифметики, когда макрос __SIZEOF_INT128__
определяется. [11] Для языка программирования C поддержка 128-бит необязательна, например, через int128_t
type, или он может быть реализован с помощью расширения, специфичного для компилятора. Язык программирования Rust имеет встроенную поддержку 128-битных целых чисел (первоначально через LLVM ), которая реализована на всех платформах. [12] 128-битный тип, предоставляемый компилятором C, может быть доступен в Perl через Math::Int128
модуль. [13]
Использует [ править ]
- Универсально уникальные идентификаторы (UUID) состоят из 128-битного значения.
- IPv6 маршрутизирует трафик компьютерной сети по 128-битному диапазону адресов.
- ZFS — 128-битная файловая система.
- 128 бит — это общий размер ключа для симметричных шифров и общий размер блока для блочных шифров в криптографии .
- Машинный интерфейс IBM i определяет все указатели как 128-битные. Инструкции машинного интерфейса при необходимости преобразуются в реальный набор инструкций оборудования, что позволяет изменять базовое оборудование без необходимости перекомпиляции программного обеспечения. Предыдущее оборудование имело набор инструкций CISC с 48-битной адресацией, а нынешнее оборудование — 64-битное PowerPC / Power ISA . В реализации PowerPC/Power ISA первые четыре байта содержат информацию, используемую для идентификации типа объекта, на который ссылаются, а последние восемь байтов используются в качестве адреса виртуальной памяти. [14] Остальные четыре байта не используются и позволят в будущем расширить приложения IBM i до 96-битной адресации без необходимости изменения кода.
- Увеличение размера слова может ускорить работу нескольких прецизионных математических библиотек с приложениями к криптографии и потенциально ускорить алгоритмы, используемые в сложной математической обработке ( численный анализ , обработка сигналов , сложное редактирование фотографий , а также аудио и обработка видео ).
- MD5 — это хэш-функция, создающая 128-битное хеш-значение.
- Apache Avro использует 128-битное случайное число в качестве маркера синхронизации для эффективного разделения файлов данных. [15] [16]
Ссылки [ править ]
- ^ Рейнзель, Дэвид; Ганц, Джон; Райднинг, Джон (ноябрь 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 . 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). Ресурсы по микродизайну.
- ^ Волигроски, Дон (24 июля 2006 г.). «Графический процессор» . Аппаратное обеспечение Тома . Архивировано из оригинала 11 апреля 2013 года . Проверено 24 февраля 2013 г.
- ^ Уотерман, Эндрю; Асанович, Крсте . «Руководство по набору команд 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 .