Почему количество битов всегда (?) равно степени двойки?

StackOverflow https://stackoverflow.com/questions/1606827

Вопрос

У нас есть 8-битные, 16-битные, 32-битные и 64-битные аппаратные архитектуры и операционные системы.Но не, скажем, 42-битные или 69-битные.

Почему?Является ли это чем-то фундаментальным, что делает 2^n бит лучшим выбором, или это просто совместимость с существующими системами?(Очевидно, что удобно, что 64-битный регистр может хранить два 32-битных указателя или что 32-битный блок данных может содержать 4 байта.)

Это было полезно?

Решение

Во многом это вопрос традиции.Это даже не всегда правда.Например, блоки с плавающей запятой в процессорах (даже современных) имеют 80-битные регистры.И нет ничего, что заставило бы нас использовать 8-битные байты вместо 13-битных.

Иногда это имеет математическое обоснование.Например, если вы решили иметь байт размером N бит и хотите выполнить целочисленное умножение, вам понадобится ровно 2N бит для хранения результатов.Затем вы также хотите складывать/вычитать/умножать эти 2N-битные целые числа, и теперь вам нужны 2N-битные регистры общего назначения для хранения результатов сложения/вычитания и 4N-битные регистры для хранения результатов умножения.

Другие советы

http://en.wikipedia.org/wiki/Word_%28computer_architecture%29#Word_size_choice

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

Частично это вопрос адресации.Наличие N бит адреса позволяет адресовать максимум 2^N бит памяти, и разработчики аппаратного обеспечения предпочитают использовать большую часть этой возможности.Таким образом, вы можете использовать 3 бита для адреса 8-битной шины и т. д.

Почтенный ПДП-10 было 36 бит.

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

В частности, Сеймур Крей и его команда создали множество весьма влиятельных машин с размерами слов и адресов, не превосходящими степень двойки, — 12-битными, 48-битными, 60-битными и т. д.

Удивительно большое количество ранних компьютеров имело 36-битные слова, полностью благодаря тому, что у людей 10 пальцев.В статье «36-бит» в Википедии содержится более подробная информация о взаимосвязи между 10 пальцами и 36 битами, а также ссылки на статьи о многих других исторически важных, но уже не популярных размерах битов, большинство из которых не являются степенью двойки.

Я предполагаю, что

(а) 8-битная адресная память стала популярной, потому что в ней было немного удобнее хранить 7-битный код ASCII. и 4-битный BCD, без неудобной упаковки или потери нескольких бит на символ;и никакая другая ширина памяти не имела большого преимущества.

(б) Как Стивен С.Стил отмечает, что небольшое преимущество умножается на эффект масштаба и рыночные силы — используется больше 8-битной памяти, и поэтому эффект масштаба делает ее немного дешевле, что приводит к использованию еще большего количества 8-битной памяти. в новом дизайне и т.д.

(c) Более широкая ширина шины теоретически делала ЦП быстрее, но размещение всего ЦП на одном кристалле делало его значительно дешевле и, возможно, немного быстрее, чем любая предыдущая система ЦП, состоящая из нескольких частей, с любой шириной шины.Сначала транзисторов едва хватало на 4-битный процессор, затем на 8-битный процессор.Позже, к огромной помпе и «16-битной» маркетинговой кампании, транзисторов едва хватало на 16-битный процессор.Примерно в то время, когда можно было бы ожидать 24-битный процессор...

(d) произошла революция RISC.По какой-то причине первые два RISC-чипа были 32-битными, и люди были приучены думать, что «чем больше битов, тем лучше», поэтому каждый производитель ухватился за 32-битную технологию.Кроме того, IEEE 754-1985 был стандартизирован с использованием 32-битных и 64-битных чисел с плавающей запятой.Были некоторые 24-битные процессоры, но большинство людей никогда о них не слышали.

(д) Из соображений совместимости программного обеспечения производители поддерживали иллюзию 32-битной шины данных даже на процессорах с 64-битной внешней шиной (таких как Intel Pentium, AMD K5 и т. д.) или на материнских платах с 4-битной шириной шины. автобус (автобус ЛПК).

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

Говоря как разработчик аппаратного обеспечения, вы, как правило, хотите спроектировать процессоры с определенными байтовыми границами, то есть кратными 8.В противном случае вам придется либо добавить много неуклюжих схем в 49-битную систему, чтобы заставить ее использовать биты mod-8, либо вы в конечном итоге проигнорируете дополнительные биты, и в этом случае это будет пустой тратой, если только вам не нужен дополнительный бит. для инструкций, чего никогда не бывает в 16-битных или более поздних системах.

Как отмечали другие, в первые дни все было не так однозначно:слова были самых разных размеров.

Но стремление к стандартизации 8-битных байтов также было вызвано технологией микросхем памяти.Раньше многие микросхемы памяти были организованы по одному биту на адрес.Память для n-битных слов была построена с использованием микросхем памяти в группах по n (с соответствующими адресными линиями, связанными вместе, и каждый бит данных каждого чипа вносил свой вклад в один бит n-битного слова).

Поскольку плотность микросхем памяти возросла, производители упаковали несколько микросхем в один корпус.Поскольку наиболее популярные размеры слов были кратны 8 битам, особенно популярна была 8-битная память:это означало, что он также был самым дешевым.По мере того, как все больше и больше архитектур переходило на 8-битные байты, ценовая надбавка за чипы памяти, которые не использовали 8-битные байты, становилась все больше и больше.Подобные аргументы объясняют ходы от 8->16, 16->32, 32->64.

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

Когда-то длина компьютерного слова была кратна 6 битам, поскольку компьютеры обычно использовали 6-битные наборы символов без поддержки строчных букв.

IBM создала для Лос-Аламоса высокопроизводительный компьютер STRETCH, в котором было 64-битное слово.У него была необычная особенность: к отдельным битам в памяти компьютера можно было обращаться напрямую, что заставляло длину слова равняться степени двойки.Он также имел более расширенный набор символов, который позволял включать математические символы (помимо нижнего регистра);они использовались в специальном языке высокого уровня под названием COLASL.

Когда IBM выпустила очень популярный мэйнфрейм System/360, хотя он и не имел битовой адресации, он сохранил восьмибитный байт, в первую очередь для того, чтобы обеспечить эффективное хранение упакованных десятичных величин с точностью до четырех битов до десятичной цифры.Поскольку эта машина была настолько популярна, она оказала большое влияние, и компьютер PDP-11 от DEC был разработан с использованием 16-битного слова и 8-битных символов.PDP-11 также была первой машиной с прямым порядком байтов, а также была очень популярной и влиятельной.

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

Если бы мы по-прежнему использовали 6-битные символы, компьютеры, как правило, имели бы 24-, 48- или 96-битные слова.

С этим, но, возможно, не по причине, я слышал, что конвенция 8 бит в байте потому что именно так IBM создала архитектуру IBM System/360.

Распространенной причиной является то, что вы можете нумеровать свои биты в двоичном формате.Это бывает полезно во многих ситуациях.Например, в операциях побитового сдвига или поворота.Вы можете вращать 16-битное значение в пределах от 0 до 15 бит.Попытка ротации более 16 бит также тривиальна:это эквивалентно повороту на 0 бит.А ротация на 1027 бит равна ротации на 3 бита.В общем, вращение регистра ширины W по N битам равно вращению по N по модулю W, а операция «по модулю W» тривиальна, когда W является степенью 2.

В процессорах 80186, 8086, 8088 и «Реальном режиме» на процессорах 80286 и более поздних версиях использовалась 20-битная система адресации сегментированной памяти.У 80286 было 24 собственные адресные строки, а у 386 и более поздних версий — 32 или 64.

Еще один встречный пример:Микроконтроллеры серии PIC16C8X имеют набор команд шириной 14 бит.

Байт связан с кодировкой символов, в основном западного мира, следовательно, 8 бит.Слово не связано с кодировкой, оно связано с шириной адреса, поэтому оно варьируется от 4 до 80 и т. д. и т. п.

Мой старый добрый калькулятор HP 32S был 12-битным.

Потому что пространство, зарезервированное для адреса, всегда представляет собой фиксированное количество бит.После того, как вы определили фиксированный размер адреса (или указателя), вы хотите извлечь из него максимальную пользу, поэтому вам придется использовать все его значения до тех пор, пока не будет получено наибольшее число, которое он может сохранить.Наибольшее число, которое вы можете получить из числа, кратного биту (0 или 1), всегда является степенью двойки.

Возможно, здесь вы найдете что-нибудь: Двоичная_числовая_система

Все ICL 1900 были 24-битными (словами).Держу пари, что мало кто это помнит.Вы делаете ??

У нас есть, просто посмотрите на микроконтроллеры PIC.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top