What are 16, 32 and 64-bit architectures?

What do 16-bit, 32-bit and 64-bit architectures mean in case of Microprocessors and/or Operating Systems?

In case of Microprocessors, does it mean maximum size of General Purpose Registers or size of Integer or number of Address-lines or number of Data Bus lines or what?

What do we mean by saying "DOS is a 16-bit OS", "Windows in a 32-bit OS", etc...?

25
задан user366312 29 August 2010 в 10:40
поделиться

6 ответов

Насколько мне известно, технически это ширина целочисленных путей. Я слышал о 16-битных чипах с 32-битной адресацией. Однако на самом деле это ширина адреса. sizeof(void*) составляет 16 бит на 16-битном чипе, 32 бита на 32-битном и 64 бита на 64-битном.

Это приводит к проблемам, поскольку C и C++ допускают преобразования между типами void* и целочисленными, и это безопасно, если целочисленный тип достаточно велик (того же размера, что и указатель). Это приводит к всевозможным небезопасным вещам с точки зрения

void* p = something;
int i = (int)p;

, которые будут ужасно падать и гореть на 64-битном коде (работает на 32-битном), потому что void * теперь вдвое больше, чем int.

В большинстве языков вам придется потрудиться, чтобы учесть ширину системы, над которой вы работаете.

0
ответ дан 28 November 2019 в 21:45
поделиться

Определения являются маркетинговыми терминами, а не точными техническими терминами.

В нечетком техническом термине они больше связаны с архитектурно видимой шириной, чем с любым реальным регистром реализации или шириной шины. Например, 68008 классифицировался как 32-битный ЦП, но имел 16-битные регистры в кремнии и только 8-битную шину данных и 20 нечетных адресных битов.

1
ответ дан 28 November 2019 в 21:45
поделиться

Мой оригинальный ответ ниже, если вы хотите понять комментарии.

Новый ответ

Как вы сказали, есть множество мер. К счастью для многих процессоров, многие меры одинаковы, так что путаницы нет. Давайте посмотрим на некоторые данные (извините за загрузку изображения, я не нашел хорошего способа сделать таблицу в уценке). Table data

Как видите, многие столбцы являются хорошими кандидатами. Однако я бы сказал, что размер регистров общего назначения (зеленый) является наиболее понятным ответом.

Когда процессор сильно различается по размеру для разных регистров, его часто описывают более подробно, например, Motorola 68k описывается как 16/32-битный чип.

Другие утверждали, что ширина шины команд (желтая) также соответствует таблице. Однако я бы сказал, что в современном мире конвейерной обработки для большинства приложений это гораздо менее актуальная мера, чем размер регистров общего назначения.


Исходный ответ

Разные люди могут иметь в виду разные вещи, потому что, как вы говорите, есть несколько мер.Так, например, кто-то, говорящий об адресации памяти, может иметь в виду нечто иное, чем кто-то, говорящий о целочисленной арифметике. Тем не менее, я попытаюсь определить то, что, по моему мнению, является общим пониманием.

Я полагаю, что для ЦП это означает «размер типичного регистра, используемого для стандартных операций» или «размер шины данных» (обычно они эквивалентны).

Я обосновываю это следующей логикой. Z80 имеет 8-битный аккумулятор и 8-битную шину данных, а также 16-битные регистры адресации памяти (IX, IY, SP, PC) и 16-битную адресную шину памяти. А Z80 называется 8-битным микропроцессором. Это означает, что люди обычно должны иметь в виду основной целочисленный арифметический размер или размер шины данных, а не размер адресации памяти.

Дело не в размере инструкций, так как в Z80 (опять же) были 1,2 и 3-байтовые инструкции, хотя, конечно, многобайтовые считывались при многократном чтении. С другой стороны, 8086 представляет собой 16-битный микропроцессор и может считывать 8- или 16-битные инструкции. Поэтому я должен был бы не согласиться с ответами, в которых говорится, что это размер инструкции.

Для операционных систем я бы определил это как «код скомпилирован для работы на ЦП такого размера», поэтому 32-битная ОС имеет код, скомпилированный для работы на 32-битном ЦП (согласно приведенному выше определению).

16
ответ дан 28 November 2019 в 21:45
поделиться

Сколько бит "содержит" ЦП, означает, какова длина слова инструкции. На 32-битном ЦП длина слова такой инструкции составляет 32 бита, что означает, что это ширина, которую ЦП может обрабатывать как инструкции или данные, что часто приводит к шине с такой шириной. По той же причине размер регистров равен длине слова процессора, но часто для разных целей используются регистры большего размера.

В качестве примера возьмем компьютер PDP-8. Это был 12-битный компьютер. Каждая инструкция имела длину 12 бит. Для обработки данных одинаковой ширины аккумулятор также был 12-битным. Но что делает 12-битный компьютер 12-битной машиной, так это длина слова инструкции. У него было двенадцать переключателей на передней панели, с помощью которых его можно было программировать, инструкция за инструкцией.

Это хороший пример, чтобы вырваться из фокуса 8/16/32 бит.

Количество бит также обычно соответствует размеру адресной шины. Поэтому обычно указывается максимальная адресуемая память.

В Википедии этому есть хорошее объяснение:

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

Теперь поговорим об ОС.

В ОС это гораздо меньше связано с фактической «разрядностью» ЦП, обычно это отражает то, как собираются коды операций (для какой разрядности ЦП) и как адресуются регистры (вы можете t загрузить 32-битное значение в 16-битный регистр) и как адресована память. Думайте об этом как о завершенной, скомпилированной программе. Он хранится в виде двоичных инструкций и поэтому должен соответствовать размеру слова процессора. С точки зрения задач он должен иметь возможность обращаться ко всей памяти, иначе он не сможет правильно управлять памятью.

Но дело в том, является ли программа 32-битной или 64-битной (ОС здесь, по сути, является программой), как хранятся ее двоичные инструкции и как адресуются регистры и память. В общем, это касается всех видов программ, а не только ОС. Вот почему у вас есть программы, скомпилированные для 32-битной или 64-битной версии.

7
ответ дан 28 November 2019 в 21:45
поделиться

Когда мы говорим о 2^n-битных архитектурах в информатике, мы в основном говорим о регистрах памяти, размере адресных шин или шинах данных. Основная концепция термина 2^n-битной архитектуры состоит в том, чтобы обозначить, что здесь 2^n бит данных можно использовать для адресации/передачи данных размером 2^n процессами.

0
ответ дан 28 November 2019 в 21:45
поделиться

http://en.wikipedia.org/wiki/64-bit#64-bit_data_models модели данных означают разрядность для языка.

Фраза «OS is x-bit» обычно означает, что ОС была написана для режима x-bit cpu, то есть 64-битная Windows использует длинный режим на x86-64, где регистры 64-битные, а адресное пространство 64-битный, и есть другие явные отличия от 32-битного режима, где обычно регистры имеют ширину 32 бита, а адресное пространство имеет размер 32 бита. На x86 основное различие между 32-битным и 64-битным режимами заключается в наличии сегментации в 32-битном для исторической совместимости.

Обычно ОС пишется с учетом разрядности ЦП, и x86-64 является ярким примером многолетней обратной совместимости — вы можете иметь все, от 16-разрядных программ реального режима до 32-разрядных программ защищенного режима и 64-разрядных программ. биты долговременных программ.

Плюс есть разные способы виртуализации, так что ваша программа может работать как бы в 32-битном режиме, но на самом деле она выполняется вовсе не на x86 ядре.

1
ответ дан 28 November 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: