Что такое 16, 32 и 64-битные архитектуры? - PullRequest
24 голосов
/ 29 августа 2010

Что означают 16-битные, 32-битные и 64-битные архитектуры в случае микропроцессоров и / или операционных систем?

Что касается микропроцессоров, означает ли это максимальный размер General Purpose Register с или размер Integer или число Address-line с или число Data Bus line с или что?

Что мы подразумеваем под словами "DOS is a 16-bit OS", "Windows in a 32-bit OS" и т. Д ...?

Ответы [ 7 ]

17 голосов
/ 29 августа 2010

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

Новый ответ

Как вы говорите, существуют различные меры.К счастью, для многих процессоров многие меры одинаковы, поэтому нет путаницы.Давайте посмотрим на некоторые данные (извините за загрузку изображений, я не смог найти хороший способ сделать таблицу в уценке).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-битном процессоре (согласно определению выше).

7 голосов
/ 29 августа 2010

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

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

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

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

Хорошее объяснение этого можно получить по адресу Wikipedia :

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

Теперь давайте поговорим об ОС.

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

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

2 голосов
/ 27 декабря 2012

Разница заключается в ширине набора команд, передаваемых в регистр общего назначения для работы.16 бит могут работать с 2 байтами, 64 с 8 байтами команды за раз.Вы часто можете увеличить пропускную способность процессора, выполняя более плотные инструкции за такт.

1 голос
/ 31 августа 2010

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 голос
/ 29 августа 2010

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

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

0 голосов
/ 29 августа 2010

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

0 голосов
/ 29 августа 2010

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

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

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

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

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

...