В компьютерной архитектуре 32 -разрядные вычисления относятся к компьютерным системам с процессором , памятью и другими основными системными компонентами, которые работают с данными в 32- разрядных единицах. [1] [2] По сравнению с меньшей разрядностью, 32-разрядные компьютеры могут выполнять большие вычисления более эффективно и обрабатывать больше данных за такт. Типичные 32-разрядные персональные компьютеры также имеют 32-разрядную адресную шину , что позволяет получать доступ к 4 ГБ оперативной памяти , что намного больше, чем позволяли предыдущие поколения системной архитектуры. [3]
32-битные конструкции использовались с самых первых дней электронных вычислений, в экспериментальных системах, а затем в больших мэйнфреймах и мини-компьютерных системах. Первый гибридный 16/32-битный микропроцессор , Motorola 68000 , был представлен в конце 1970-х годов и использовался в таких системах, как оригинальный Apple Macintosh . Полностью 32-битные микропроцессоры, такие как HP FOCUS , Motorola 68020 и Intel 80386, были запущены в начале-середине 1980-х годов и стали доминирующими к началу 1990-х годов. Это поколение персональных компьютеров совпало с первым массовым внедрением Всемирной паутины и сделало это возможным . Хотя 32-битные архитектуры по-прежнему широко используются в определенных приложениях, рынок ПК и серверов перешел на 64 бита с x86-64 и другими 64-битными архитектурами с середины 2000-х годов, при этом установленная память часто превышает ограничения адресов 32-битной 4G RAM на компьютерах начального уровня. Последнее поколение смартфонов также перешло на 64 бита.
32-битный регистр может хранить 2 32 различных значения. Диапазон целочисленных значений , которые могут храниться в 32 битах, зависит от используемого целочисленного представления . При двух наиболее распространенных представлениях диапазон составляет от 0 до 4 294 967 295 (2 32 − 1) для представления в виде ( беззнакового ) двоичного числа и от −2 147 483 648 (−2 31 ) до 2 147 483 647 (2 31 − 1) для представления в виде дополнения до двух .
Одним из важных последствий является то, что процессор с 32-битными адресами памяти может напрямую обращаться максимум к 4 ГиБ памяти с байтовой адресацией (хотя на практике предел может быть ниже).
Первый в мире электронный компьютер с хранимой программой , Manchester Baby , использовал 32-битную архитектуру в 1948 году, хотя это было всего лишь доказательство концепции и имело небольшую практическую емкость. Он содержал только 32 32-битных слова RAM на трубке Уильямса и не имел операции сложения, только вычитание.
Память, а также другие цифровые схемы и проводка были дорогими в течение первых десятилетий 32-битной архитектуры (с 1960-х по 1980-е годы). [4] Старые 32-битные семейства процессоров (или более простые, дешевые их варианты) могли, следовательно, иметь много компромиссов и ограничений для сокращения расходов. Это мог быть 16-битный ALU , например, или внешние (или внутренние) шины, более узкие, чем 32 бита, ограничивающие размер памяти или требующие больше циклов для выборки инструкций, выполнения или обратной записи.
Несмотря на это, такие процессоры могли быть обозначены как 32-битные , поскольку они все еще имели 32-битные регистры и инструкции, способные манипулировать 32-битными величинами. Например, IBM System/360 Model 30 имела 8-битный ALU, 8-битные внутренние пути данных и 8-битный путь к памяти, [5] а оригинальный Motorola 68000 имел 16-битный ALU данных и 16-битную внешнюю шину данных, но имел 32-битные регистры и 32-битный ориентированный набор инструкций. Дизайн 68000 иногда назывался 16/32-битным . [6]
Однако для новых 32-битных конструкций часто бывает наоборот. Например, процессор Pentium Pro — это 32-битная машина с 32-битными регистрами и инструкциями, которые манипулируют 32-битными величинами, но внешняя адресная шина имеет ширину 36 бит, что дает большее адресное пространство, чем 4 ГБ, а внешняя шина данных имеет ширину 64 бита, в первую очередь для того, чтобы обеспечить более эффективную предварительную выборку инструкций и данных. [7]
Известные архитектуры 32-битных наборов инструкций, используемые в вычислениях общего назначения, включают IBM System/360 , IBM System/370 (которая имела 24-битную адресацию), System/370-XA , ESA/370 и ESA/390 (которая имела 31-битную адресацию), DEC VAX , NS320xx , семейство Motorola 68000 (первые две модели которого имели 24-битную адресацию), 32-битную версию архитектуры Intel IA-32 x86 и 32-битные версии архитектур ARM , [8] SPARC , MIPS , PowerPC и PA-RISC . Архитектуры 32-битных наборов инструкций, используемые для встраиваемых вычислений, включают семейство 68000 и архитектуры ColdFire , x86, ARM, MIPS, PowerPC и Infineon TriCore .
На архитектуре x86 32-битное приложение обычно означает программное обеспечение , которое обычно (не обязательно) использует 32-битное линейное адресное пространство (или плоскую модель памяти ), возможное с 80386 и более поздними чипами. В этом контексте термин появился потому, что DOS , Microsoft Windows и OS/2 [9] изначально были написаны для 8088/8086 или 80286 , 16-битных микропроцессоров с сегментированным адресным пространством, где программы должны были переключаться между сегментами, чтобы достичь более 64 килобайт кода или данных . Поскольку это довольно трудоемко по сравнению с другими машинными операциями, производительность может пострадать. Кроме того, программирование с сегментами имеет тенденцию становиться сложным; специальные far и near ключевые слова или модели памяти должны были использоваться (с осторожностью) не только в языке ассемблера , но и в языках высокого уровня, таких как Pascal , скомпилированный BASIC , Fortran , C и т. д.
80386 и его последователи полностью поддерживают 16-битные сегменты 80286, а также сегменты для 32-битных смещений адреса (используя новую 32-битную ширину основных регистров). Если базовый адрес всех 32-битных сегментов установлен в 0, а сегментные регистры не используются явно, сегментация может быть забыта, и процессор будет выглядеть как имеющий простое линейное 32-битное адресное пространство. Операционные системы, такие как Windows или OS/2, предоставляют возможность запускать 16-битные (сегментированные) программы, а также 32-битные программы. Первая возможность существует для обратной совместимости , а вторая обычно предназначена для использования при разработке нового программного обеспечения . [10]
В цифровых изображениях/картинках 32-бит обычно относится к цветовому пространству RGBA ; то есть 24-битным полноцветным изображениям с дополнительным 8-битным альфа-каналом . Другие форматы изображений также указывают 32 бита на пиксель, например RGBE .
В цифровых изображениях 32-битный формат иногда относится к форматам изображений с высоким динамическим диапазоном (HDR), которые используют 32 бита на канал, всего 96 бит на пиксель. Изображения с 32-битным цветом на канал используются для представления значений, более ярких, чем допускает цветовое пространство sRGB (ярче белого); эти значения затем можно использовать для более точного сохранения ярких бликов при снижении экспозиции изображения или при просмотре через темный фильтр или тусклое отражение.
Например, отражение в нефтяном пятне — это лишь часть того, что видно на зеркальной поверхности. HDR-изображения позволяют отражать блики, которые все еще видны как яркие белые области, а не как тусклые серые формы.
32-битный формат файла — это двоичный формат файла , в котором каждая элементарная информация определяется 32 битами (или 4 байтами ). Примером такого формата является Enhanced Metafile Format .