Яка історія, чому байт - це вісім біт?


86

Що, де історичні сили працюють, компроміси, вирішуючи використовувати групи з восьми біт як основну одиницю?

Колись колись були машини, які використовували інші розміри слів, але сьогодні для не-восьмибітного розряду потрібно шукати музейні експонати, спеціалізовані чіпи для вбудованих додатків та DSP. Як байт вийшов із хаосу та творчості в перші дні комп'ютерного дизайну?

Я можу собі уявити, що менша кількість біт виявиться неефективною для обробки достатньої кількості даних, щоб зробити обчислення можливим, тоді як занадто багато призведе до дорогого обладнання. Чи були в грі інші впливи? Чому ці сили врівноважили вісім біт?

(До речі, якби я міг подорожувати часом, я б повернувся до того, коли "байт" оголосили 8 біт, і переконав усіх зробити 12 біт, підкупивши їх дрібничками початку 21 століття.)


7
Це може бути одне з тих питань, де ми не можемо відповісти на це краще, ніж стара добра Вікіпедія .
Скотт Вітлок

10
То чому б ви віддавали перевагу від 12 біт до 8?
FrustratedWithFormsDesigner

8
Останнє речення жартома? 12-бітний байт був би незручним, оскільки це не потужність 2.
Роб

19
Пам'ять і регістри тоді були не настільки дешевими, тому 8 біт був хорошим компромісом порівняно з 6 або 9 (дроби 36-бітного слова). Крім того, обчислення адреси - це набагато простіше з потужностями 2, і це рахується, коли ви робите логіку із сирих транзисторів у маленьких банках.
Майк Данлаве

9
Використання розмірів слів, які були потужністю 2, не були настільки важливими у "перші дні". DEC-10 мав 36-бітове слово, а серія CDC 6000 мала 60-бітові слова та індекси регістрів з 18 бітами.
Джей Елстон

Відповіді:


75

З 5-бітовими кодами бодо було зроблено багато справді ранньої роботи, але вони швидко стали досить обмежуючими (лише 32 можливі символи, в основному лише великі літери та кілька розділових знаків, але недостатньо «місця» для цифр) .

Звідти досить багато машин пішло на 6-бітні символи. Це все ще було досить неадекватно - якщо ви хотіли великих та малих (англійських) букв та цифр, то залишилися лише два символи для пунктуації, тож у більшості залишився лише один регістр букв у наборі символів.

ASCII визначив 7-бітний набір символів. Це було "досить добре" для багатьох застосувань протягом тривалого часу, а також лягло в основу більшості нових наборів символів (ISO 646, ISO 8859, Unicode, ISO 10646 тощо).

Двійкові комп’ютери мотивують дизайнерів на створення розмірів у два. Оскільки "стандартний" набір символів так чи інакше вимагав 7 біт, не було великого розтягування, щоб додати ще один біт, щоб отримати потужність 2 (і до того часу зберігання стало досить дешевшим, що "витрачало" трохи на більшість символів було і більш прийнятним).

Відтоді набір символів перемістився до 16 та 32 біт, але більшість основних комп'ютерів багато в чому базуються на оригінальному комп'ютері IBM. Знову ж таки, на ринку достатньо задовольнити 8-бітові символи, що навіть якби ПК не досяг свого нинішнього рівня домінування, я не впевнений, що кожен би все-таки зробив би все з більшими символами.

Слід також додати, що ринок досить змінився. На сучасному ринку розмір символів апаратно визначається менше, ніж програмне забезпечення. Windows, Java та ін. Давно перейшли до 16-бітних символів.

Тепер перешкода у підтримці 16- або 32-бітових символів лише мінімальна від труднощів, властивих самим 16- або 32-бітовим символам, і значною мірою від труднощів підтримки i18n в цілому. У ASCII (наприклад) виявлення того, чи є літера великої або малої літери, або перетворення між ними, неймовірно тривіально. У повному обсязі Unicode / ISO 10646 він в основному невимовно складний (до того, що стандарти навіть не намагаються - вони дають таблиці, а не описи). Потім ви додаєте, що для деяких мов / символьних наборів навіть основна ідея верхнього / нижнього регістру не застосовується. Потім ви додаєте до того, що навіть відображення символів у деяких із них є набагато складнішим.

Це все досить складно, що переважна більшість програмного забезпечення навіть не намагається. Ситуація повільно покращується, але повільно - оперативне слово.


9
Я думав, що я прочитав десь 8 з 7-бітового ASCII плюс біт перевірки, який був необхідний, оскільки майже протоколи передачі не були такими ж втратними, як хотіли дизайнери :-).
Мартін Йорк

3
@LokiAstari, Так, це називається бітом паритету, і його можна використовувати для неочищених форм виявлення помилок або відновлення. Вікіпедія: Біт паритету
CVn

2
Не впевнений, що з цим стосується IBM PC. "8 біт на байт" був уже стандартним в епоху CP / M (<1980 р.), Яка почалася в процесорі 8080 (попередник 8086/8 епохи IBM PC)
MSalters

1
@MSalters: Перш за все, це те, що він (можливо) "приголомшив" еволюцію обладнання. Ні, 8-бітний / байт не був новим для ПК, але до цього більшість архітектур замінювали кожні кілька років. ПК значною мірою зупинив це і взяв архітектуру, яка не була навіть особливо прогресивною, коли вона була новою, і зберегла її протягом десятиліть .
Джеррі Труну

2
Поточні набори символів не є 16 або 32 бітами, а також Java та Windows не використовують такі. Поточний набір символів - Unicode, для прямого відображення потрібно 21 біт. Поточне програмне забезпечення використовує кодування на основі 8 (UTF-8), 16 (UTF-16) або 32 (UTF-32) бітових кодових одиниць, поєднуючи кілька кодових одиниць, щоб утворити одну точку коду, де це необхідно, але ці розміри бітів є наслідком обладнання, а не набору символів.
Себастьян Редл

10

Сім біт для інформації ASCII і один для паритету виявлення помилок.


27
7 біт для ASCII і один додатковий біт, який використовувався для всіляких речей
Мартін Бекетт

1
Паритет був дуже важливим при роботі з ранньою пам'яттю. Навіть після переходу до 8-бітових байтів даних були мікросхеми пам'яті з 9 бітами, що дозволили перевірити паритет.
Jim C

1
Це цікаве твердження. Чи є історичні дані, які підтверджують цю ідею?
Давид

6

Перегляньте сторінку Вікіпедії про 8-бітну архітектуру . Хоча набори символів могли бути 5-, 6-, тоді 7-розрядна, основна архітектура процесора / шини пам'яті завжди використовувала потужності 2. Дуже перший мікропроцесор (близько 1970-х) мав 4-бітну шину, що означає, що одна інструкція могла рухатись 4- біти даних між зовнішньою пам'яттю та процесором.

Потім з випуском процесора 8080 8-розрядна архітектура стала популярною, і саме це дало початок набору інструкцій для складання x86, який застосовується і донині. Якщо мені довелося здогадатися, байт походить від цих ранніх процесорів, де мейнстрім публіки почав приймати та грати з ПК, а 8-біт вважався стандартним розміром однієї одиниці даних.

Відтоді розмір шини подвоївся, але він завжди залишався потужністю 2 (тобто 16-, 32- і тепер 64-біт) Насправді, я впевнений, що внутрішня шина сьогоднішньої шини набагато складніша, ніж просто 64 паралельних дроти, але поточна архітектура основного процесора становить 64 біти.

Я б припустив, що завдяки подвійному зростанню (замість того, щоб зростати на 50%) було легше зробити нове обладнання, яке співіснує з існуючими програмами та іншими застарілими компонентами. Так, наприклад, коли вони переходили від 8-біт до 16, тепер кожна інструкція може переміщувати 2 байти замість 1, тому ви заощаджуєте один тактовий цикл, але тоді кінцевий результат той самий. Однак якщо ви перейшли від 8 до 12-бітної архітектури, ви закінчите розбивати оригінальні дані на половинки та керувати цим, що може стати досадною. Це лише здогадки, я насправді не фахівець з обладнання.


5
"Найперший процесор (близько 1970-х) ..." . Вам потрібно прочитати історію обчислень !! Перший процесор для комп’ютера архітектури фон Неймана був побудований під час Другої світової війни ... або раніше (залежно від того, чию версію історії ви вірите.)
Стівен C

а в 19 столітті були обчислювальні пристрої, і я впевнений, що єгиптяни мали якусь калькуляторну каструлю. Ця інформація надійшла зі сторінки Вікіпедії, яку я пов’язав. Як я вже говорив, я не фахівець з обладнання, і я, звичайно, не історик, але якщо ви відчуваєте, що мені так далеко, ви, можливо, захочете оновити цю сторінку вікіпедії.
DXM

Я думаю, що це допоможе, якщо я не накручував посилання під час входу. Я також вибачаюся за те, що сказав "перший процесор". Оскільки я цитував сторінку wiki, я повинен був сказати "перший мікропроцесор". Це я мав на увазі. Вибач за те.
DXM

Рішенням "переделектронного" комп'ютера є сказати сучасний комп'ютер або я вважаю електронний комп'ютер. Навіть сьогодні ви могли побудувати механічний комп'ютер. Тільки до того, як ми почали використовувати електронні поля на свою користь, ми не створили мікропроцесор.
Рамхаунд

8-бітний байт та 16-бітний розмір слів, використовуваний у серії PDP, також можуть зіграти фактор популярності 8-бітових байтів.
Джей Елстон

4

Байт був різним (принаймні) 1, 4, 6, 7, 8, 9, 12, 18, 20 і, можливо, 36 бітами, залежно від того, який комп'ютер ви шукаєте. Я беру тут "байт", щоб означати "найменшу адресується одиницю пам'яті", а не використовуючи будь-яку інтерпретацію, орієнтовану на текст. (Наприклад, процесор Saturn - 64-розрядний процесор, який використовується в популярному калькуляторі рядків HP48SX / GX, адреси пам'яті - в 4-бітних.)

20-бітні байти були надзвичайно поширеними в "машинах IAS", у 50-х роках. 6, 12, 18 (а може й 36) були досить популярними у різних архітектурах у 60-ті, 70-ті та певною мірою 80-ті.

Зрештою, приємне відповідність між "потужностями 2" та "бітами в адресному блоці", схоже, виграло.


І ніколи 10 біт? Все, що я міг знайти в Google, - це кілька останніх процесорів відео - це 10 біт.
rslnx

@khrf Це можливо, я просто не можу згадати жодної архітектури, яка мала його (я здебільшого вважала комп'ютери загального призначення).
Ватін

Так, я також вважаю комп'ютери загального призначення. Це дивно, бо я уявляю, як було б добре з 10-бітовим байтом знати, що ти можеш звернутись до 1 кілобайт з 1 байтом, 1 мегабайт з 2 байтами і т. Д. Звичайно, це просто каприз щодо комфорту :)
rslnx

2

Спочатку трохи уточнення: октети (8-бітні одиниці) насправді не є фундаментальною одиницею в сучасній архітектурі комп'ютерів. Принаймні, не будь-яка більш фундаментальна, ніж інші потужності двох - 2, 4, 16, 32, 64, 128 і т.д. -набори внутрішньо. Наприклад, x86_64 має 64-бітові цілочисельні регістри та 80-бітові регістри з плаваючою точкою. Оперативна пам’ять читається і записується 64-бітними фрагментами, і процесор просто використовує трохи магії, щоб зробити вигляд таким, що ви можете адресувати окремі 8-бітні байти.

Для старих архітектур "байт" вказував розмір шини даних, і як зазначено в оригінальному запитанні, існувало багато різних розмірів шин (4, 5, 6, 8, 12 тощо). Але з 1993 року байт визначається як 8 біт, щоб мати стандартизовану одиницю SI для розмірів даних. Звідси значення "байт" змінилося від того, щоб бути одиницею, залежною від архітектури, до стандартизованої одиниці, незалежної від архітектури.

Таким чином, в даний час байти є стандартною одиницею для адреси та кількісної оцінки даних, але насправді не принципово інакше.

Блок октетів став фактичним стандартом для зберігання, насамперед, через занепокоєння щодо збереження тексту. Для зберігання тексту ідеально потрібно, щоб один байт зберігав один символ. Важливими були два фактори:

  • Наявність одиниць, що мають потужність двох (2, 4, 8, 16, 32 тощо), зручніше при проектуванні цифрових систем.
  • 8-бітного достатньо для зберігання одного символу в наборі символів ASCII (з простором для розширення набору символів для підтримки скажімо кирилиці).

Звичайно, 8-бітових недостатньо для підтримки всіх сценаріїв - для чогось японського потрібно щонайменше 16 біт (а для чого це варто, Unicode - 21 біт), але на той момент біти були дорогими, і більшість цифрових текстів були в діапазон ASCII все одно.

У наші дні текст, як правило, зберігається в кодуваннях змінної ширини, таких як UTF-8, і з такими речами, як Unicode, що поєднує символи, "один байт дорівнює одному символу" вже давно був минулим. Сьогодні байт справді просто стандарт із історичних причин.


1

За моєю інформацією, сам байт слова походить від фрази по вісім, яка складала вісім (8) біт слів. зручність, яку ми знаходимо в 8-бітових словах, - це перетворення в шістнадцяткові значення, оскільки значення 00000000 = 00 & 11111111 = FF (25 грудня для непідписаного та -127 для підписаного) легко робити всі арифметичні операції на такій структурі, включаючи бітові операції.

Я бачу байти (8 біт слів) як природну еволюцію розмірів слів від катастрофічно малих 3 біт до смішно великих 60 біт слів


Я хотів би побачити для цього посилання. Я серйозно сумніваюся в цьому. Тим більше, що слово "байт", як воно використовується в стандарті C і включене в стандарт C ++, не означає "8 біт". 8-бітна кількість - це октет.
gnasher729

0

Байт не повинен бути 8 біт , але, схоже, C і C ++ визначають байт як мінімум 8 біт (хоча це може бути більше). Це питання в Stack Overflow згадує декілька систем, де 1 байт не є 8 бітами.


C ++ чи компілятор ?
Babiker

@Babiker: C ++. Компілятор матиме точне визначення. ( CHAR_BITSмакрос)
MSalters
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.