Что, где действуют исторические силы, какие компромиссы нужно сделать, решая использовать группы из восьми бит в качестве фундаментальной единицы?
Когда-то были машины, использующие слова других размеров, но сегодня, не считая восьмибитности, вы должны обратить внимание на музейные экспонаты, специализированные чипы для встроенных приложений и DSP. Как байт эволюционировал из хаоса и творчества первых дней компьютерного дизайна?
Я могу себе представить, что меньшее количество битов будет неэффективно для обработки достаточного количества данных, чтобы сделать вычислительные возможности осуществимыми, в то время как слишком много битов привело бы к дорогостоящему оборудованию. Были ли другие влияния в игре? Почему эти силы уравновешены до восьми бит?
(Кстати, если бы я мог путешествовать во времени, я бы вернулся к тому моменту, когда «байт» был объявлен как 8-битный, и убедил всех сделать его 12-битным, подкупив их некоторыми безделушками 21-го века ».)
Ответы:
Большая часть действительно ранней работы была проделана с 5-битными кодами бодо, но они быстро стали весьма ограничивающими (всего 32 возможных символа, поэтому в основном только заглавные буквы и несколько знаков препинания, но недостаточно «пробела» для цифр) ,
Оттуда довольно много машин перешли на 6-битные символы. Это было все еще довольно неадекватно - если вы хотели использовать заглавные и строчные (английские) буквы и цифры, оставалось только два символа для пунктуации, так что у большинства все еще был только один регистр букв в наборе символов.
ASCII определил 7-битный набор символов. Это было «достаточно хорошо» для многих применений в течение долгого времени и послужило основой для большинства новых наборов символов (ISO 646, ISO 8859, Unicode, ISO 10646 и т. Д.)
Бинарные компьютеры побуждают дизайнеров делать размеры в два раза больше. Так как «стандартный» набор символов в любом случае требовал 7 бит, добавить еще один бит, чтобы получить степень 2, было не так уж и сложно (к тому времени хранилище стало достаточно дешевым, чтобы «тратить» немного на большинство символов) было также более приемлемым).
С тех пор наборы символов перешли на 16 и 32 бита, но большинство обычных компьютеров в значительной степени основаны на оригинальном IBM PC. Опять же, достаточно рынка достаточно удовлетворено 8-битными символами, и даже если бы компьютер не достиг нынешнего уровня доминирования, я не уверен, что все все равно сделают все с более крупными символами.
Я также должен добавить, что рынок сильно изменился. На текущем рынке размер символов меньше определяется аппаратным обеспечением, чем программным обеспечением. Windows, Java и т. Д. Давно перешли на 16-битные символы.
Теперь помеха в поддержке 16- или 32-разрядных символов лишь минимальна из-за трудностей, присущих самим 16- или 32-разрядным символам, и в значительной степени из-за сложности поддержки i18n в целом. В ASCII (например) определение того, является ли буква заглавной или строчной, или преобразование между ними, является невероятно тривиальным. В полном Unicode / ISO 10646 это в основном неописуемо сложно (до такой степени, что стандарты даже не пытаются - они дают таблицы, а не описания). Затем вы добавляете тот факт, что для некоторых языков / наборов символов даже основная идея верхнего / нижнего регистра не применима. Затем вы добавляете тот факт, что даже отображение символов в некоторых из них намного сложнее.
Это все достаточно сложно, что подавляющее большинство программного обеспечения даже не пытается. Ситуация медленно улучшается, но медленно это оперативное слово.
источник
Семь битов для информации ASCII и один для четности с обнаружением ошибок.
источник
Взгляните на страницу Википедии о 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-битную архитектуру, вы закончите разбивать исходные данные на две части и управлять ими, что может стать раздражающим. Это всего лишь догадки, я не специалист по аппаратному обеспечению.
источник
Байт по-разному (как минимум) 1, 4, 6, 7, 8, 9, 12, 18, 20 и, возможно, 36 бит, в зависимости от того, на каком компьютере вы смотрите. Я беру здесь «байт», чтобы обозначить «наименьшую адресуемую единицу памяти», а не какую-либо тексто-ориентированную интерпретацию. (Например, процессор Saturn, 64-разрядный процессор, используемый в популярной линейке калькуляторов HP48SX / GX, адресует память в полубайтах - 4 бита.)
В 50-х годах 20-разрядные байты были чрезвычайно распространены в «машинах IAS». 6, 12, 18 (и, возможно, 36) были довольно популярны в различных архитектурах в 60-х, 70-х и в некоторой степени 80-х годов.
В конце концов, хорошее соответствие между «степенями 2» и «битами в адресуемой единице», похоже, победило.
источник
Сначала немного пояснения: октеты (8-битные блоки) на самом деле не являются фундаментальной единицей в современных компьютерных архитектурах. По крайней мере, не более фундаментально, чем другие степени двух - 2, 4, 16, 32, 64, 128 и т. Д. Октеты были фундаментальной единицей для 8-битных процессоров (отсюда и название!), Но современные архитектуры обычно работают с большими битами -находит внутри. Например, x86_64 имеет 64-битные целочисленные регистры и 80-битные регистры с плавающей запятой. ОЗУ читается и записывается в 64-битных блоках, а процессор просто использует немного магии, чтобы создать впечатление, что вы можете обращаться к отдельным 8-битным байтам.
Для более старых архитектур «байт» указывал размер шины данных, и, как говорится в первоначальном вопросе, существовало много разных размеров шины (4, 5, 6, 8, 12 и т. Д.). Но с 1993 года байт был определен как 8 битов, чтобы иметь стандартизированную единицу СИ для размеров данных. Следовательно, значение «байт» изменилось с архитектурно-зависимой единицы на независимую от архитектуры стандартизированную единицу.
Таким образом, в наши дни байты являются стандартной единицей для адресации и количественной оценки данных, но в действительности они не являются принципиальными.
Блок октетов стал стандартом де-факто для хранения данных, главным образом из-за опасений по поводу хранения текста. Для хранения текста вы в идеале хотите, чтобы один байт сохранял один символ. Важными были два фактора:
Конечно, 8-битных данных недостаточно для поддержки всех сценариев - для чего-то вроде японского языка требуется как минимум 16-битный код (и для чего стоит Unicode - 21-битный), но на тот момент биты были дорогими, и большая часть цифрового текста находилась в диапазон ASCII в любом случае.
В наши дни текст, как правило, хранится в кодировках переменной ширины, таких как UTF-8, и с такими вещами, как Unicode, объединяющий символы, «один байт равен одному символу» давно ушел в прошлое. Сегодня байт действительно является стандартом по историческим причинам.
источник
Согласно моей информации, само слово «байт» было получено из фразы «восемь», которая состояла из восьми (8) битовых слов. удобство, которое мы находим в 8-битных словах, - это преобразование в шестнадцатеричные значения, так как со значением 00000000 = 00 и 11111111 = FF (25 декабря для без знака и -127 для со знаком) легко выполнять все арифметические операции с такой структурой, включая побитовое операции.
Я вижу байты (8-битные слова) как естественную эволюцию размеров слов от катастрофически маленьких 3-битных до смешно больших 60-битных слов
источник
Байт не должен быть 8 битами , но кажется, что C и C ++ определяют байт как минимум 8 бит (хотя это может быть больше). В этом вопросе о переполнении стека упоминается несколько систем, в которых 1 байт не равен 8 битам.
источник
CHAR_BITS
макро)