Что такое 16, 32 и 64-разрядные архитектуры?

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

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

Что мы имеем в виду, говоря "DOS is a 16-bit OS", "Windows in a 32-bit OS" и т.д.??

21
задан anonymous 29 авг. '10 в 13:40
источник поделиться
7 ответов

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

Новый ответ

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

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

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

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


Оригинальный ответ

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

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

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

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

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

16
ответ дан Nick Fortescue 29 авг. '10 в 13:46
источник поделиться

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

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

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

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

Хорошее объяснение этого в Wikipedia:

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

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

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

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

7
ответ дан polemon 29 авг. '10 в 14:23
источник поделиться

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

"OS-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
ответ дан berkus 31 авг. '10 в 1:19
источник поделиться

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

1
ответ дан htmldrum 27 дек. '12 в 21:27
источник поделиться

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

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

1
ответ дан hotpaw2 29 авг. '10 в 13:56
источник поделиться

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

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

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

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

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

0
ответ дан Puppy 29 авг. '10 в 13:44
источник поделиться

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

0
ответ дан Saurabh 29 авг. '10 в 13:54
источник поделиться

Другие вопросы по меткам