Почему количество бит всегда (?) - сила двух?

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

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

47
22 окт. '09 в 15:21
источник поделиться
18 ответов

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

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

23
22 окт. '09 в 15:25
источник

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

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

22
22 окт. '09 в 15:29
источник

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

19
22 окт. '09 в 15:33
источник

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

8
22 окт. '09 в 15:23
источник

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

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

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

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

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

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

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

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

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

6
10 июня '10 в 9:03
источник

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

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

4
22 окт. '09 в 15:32
источник

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

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

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

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

3
22 окт. '09 в 22:23
источник

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

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

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

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

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

2
05 сент. '14 в 15:15
источник

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

1
18 нояб. '16 в 17:14
источник

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

1
22 окт. '09 в 15:30
источник

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

1
22 окт. '09 в 15:41
источник

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

1
22 окт. '09 в 18:19
источник

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

1
22 окт. '09 в 18:04
источник

Возможно, вы можете найти что-то здесь: Binary_numeral_system

0
22 окт. '09 в 17:32
источник

ICL 1900 были все 24 бит (слова). Ставка там не так много людей помнит об этом. Вы делаете?

0
22 окт. '09 в 17:49
источник

Мы просто посмотрим на микроконтроллеры PIC.

0
20 февр. '10 в 22:45
источник

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

0
22 окт. '09 в 15:56
источник

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

0
22 окт. '09 в 17:05
источник

Посмотрите другие вопросы по меткам или Задайте вопрос