Довольно простой фундаментальный, хотя и наивный вопрос:
Будет ли иметь 4 состояния на «бит», а не 2, в два раза больше места? В случае, если это не ясно, я имею в виду, как если бы каждая «структура хранения», а не только представляющая 2 значения (база 2: 0, 1), могла бы представлять 4 значения (база 4: 0, 1, 2, 3 ).
Ответы:
Слово, которое вы ищете, это не «бит», а «символ». «Символ» - это слово, используемое для описания процесса отображения аппаратных сигналов (таких как напряжения или магнитные структуры) в логические биты. Если символ может иметь 4 состояния, он может кодировать информацию в 2 бита.
Конечно, мы ничего не говорим об использовании ресурса символа в этом аргументе. Если вы отправляете символы по проводам в виде напряжений, различные символы выглядят все более и более похожими, когда вы увеличиваете количество состояний на символ. Если у меня есть провод 0-5 В и 2 состояния на символ (1 бит), мои два состояния - 0 В и 5 В, с 5 В между каждым символом. Если у меня такой же провод, но я кодирую 4 состояния на символ (2 бита), мои состояния будут 0В, 1,66В, 3,33В и 5В. Это 1,66 В между каждым символом. Теперь шуму проще испортить мой сигнал.
Существует закон, связывающий их, известный как закон Шеннона, который связывает ширину полосы (в битах) с частотой ошибок, возникающих из-за шума на линии. Оказывается, есть предел тому, сколько бит вы можете втиснуть в провод. Использование большего количества символов приводит к большему количеству ошибок, что требует большего исправления ошибок.
Мы используем эту технику в реальной жизни. Цифровое телевидение использует QAM-64 с 64 состояниями (и, следовательно, 6 бит на символ). Ethernet использует 4 уровня напряжения, поэтому 2 бита на символ.
Редактировать: я использовал скорость передачи битов, а не хранилище, потому что более распространено видеть символы с большим количеством состояний при передаче, чтобы я мог сделать историю более ясной. Если кто-то хочет конкретно взглянуть на хранилище и хранилище в одиночку, можно посмотреть на многоуровневые ячейки во флэш-памяти, как кто-то где-то упоминал в комментариях. Такая память использует точно такой же подход, сохраняя 3 бита как 16 различных уровней заряда конденсатора. (или больше!)
источник
Одна ячейка четвертичной памяти может хранить ровно столько же информации, сколько две ячейки двоичной памяти:
Итак, если у вас одинаковое количество ячеек памяти, но они четвертичные, то у вас вдвое больше памяти. Но если эта четырехъядерная ячейка занимает вдвое больше места на чипе, то никакой выгоды нет.
Или иначе, если бы у вас был 1 гигакад на некоторое четвертое хранилище, он мог бы хранить столько же информации, сколько 2 гигабита обычной двоичной памяти, потому что каждый квад мог быть выражен двумя битами.
В каком-то смысле вся эта линия представляет лишь академический интерес. Вы уже можете думать, что микросхемы памяти хранят, например, 2 ^ 32 ячейки состояния, потому что вы не можете извлечь из них 1 бит, вы всегда получаете полное слово. И если в будущем кто-то придумает способ хранить это слово в физических ячейках с 4 состояниями более эффективно, чем в ячейках с 2 состояниями, то это будет использоваться, но оно не будет видно вне чипа памяти, оно все равно будет обрабатывать только слова с полной памятью, которые могут иметь, например, 2 ^ 32 различных состояния.
источник
В базовой теории да. На самом деле, нет, потому что мы все равно не храним данные в битах (на жестких дисках). Корт Аммон очень хорошо освещает проблемы передачи данных. ОЗУ, кэш-память и твердотельные накопители хранят данные в виде битов, но жесткие диски отличаются друг от друга в силу характера их физического материала и наших усилий по упаковке на них большего количества данных. Большая часть данных все еще хранится на жестких дисках, поэтому я сосредоточусь на них. Я выйду далеко за рамки объяснения, которое вы найдете в большинстве источников, но постараюсь привести источники там, где могу. Эти источники должны быть извлечены из древних глубин Интернета, потому что это - в значительной степени - действительно забытое знание.
Во-первых, жесткие диски хранят информацию с магнитными полями на поверхности жестких дисков. Головка привода считывает их, ощущая поток от изменения в этом поле - это гораздо легче измерить, чем фактическое направление и сила магнитного поля. но если поле состоит из 50 одинаковых сегментов подряд, на самом деле он не может сосчитать, что их было 50 - он считывает всплеск потока при чтении первого сегмента, а затем некоторое время не изменяет поток и не может отслеживать время достаточно точно, чтобы быть уверенным, что поле было неизменным для 50 сегментов.
Итак, основная (упрощенная) модель заключается в том, чтобы хранить немного как пару магнитных полей. Первый всегда будет переключением от предыдущего сегмента, а второй будет переворотом, чтобы представлять 1, или не будет отражением 0. 0 Время привода достаточно точное, чтобы распознать разницу между одним всплеском потока и двумя всплесками потока в сегменте. Этот формат называется частотной модуляцией. Это дает четкие сигналы, НО это означает, что для каждого бита памяти требуется два места на диске - это очень неэффективно. Так что ни у одного жесткого диска не было этой самой простой формы кодирования; вместо этого он использовал простые приемы сжатия. Самым простым является Modified Frequency Modulation, который изменяет схему так, что дополнительный магнитный переворот используется, только если 0 предшествует другой 0. Это позволяет инженерам втиснуть почти вдвое больше данных в одно и то же пространство, и, таким образом, оно использовалось на первых жестких дисках и является форматом на гибких дисках. После этого была разработана более продвинутая система Run Length Limited с аналогичной общей идеей, в которую я не буду вдаваться, потому что она становится намного более сложной и существует несколько реализаций.
Но сегодня мы не используем такую систему. Вместо этого мы используем систему под названием Частичный ответ, максимальное правдоподобие (PRML). PRML требует, чтобы головка считала длину и собрала магнитный образец, затем сравнивает его с эталонным набором сохраненных образцов, чтобы определить, какой из них подходит лучше всего. Он отказывается от всей концепции всплесков потока и вместо этого использует сопоставление с образцом (я упрощаю, но оно того стоит), и шаблон соответствует набору битов. Он использует шумовые фильтры и другие технологии для устранения потенциальных ошибок. Лучше всего думать о нем как о сложном сигнале, а жесткий диск знает, как преобразовать каждый сигнал в набор битов. В этом смысле данные на самом деле хранятся больше в аналоговом формате, чем в цифровом,
Лучшее руководство по этому вопросу находится по адресу http://www.pcguide.com/ref/hdd/geom/data.htm (нажмите кнопку «Далее» несколько раз, чтобы прочитать все), и есть несколько других источников - в основном из люди, создавшие огромные хранилища компьютерных знаний, о которых никто не знает. Приличный дополнительный источник (который, насколько я могу судить, хороший, но не вполне совершенный на 100%) находится по адресу http://www.tomshardware.com/reviews/hard-drive-magn-storage-hdd,3005-6.html.
TL; DR: жесткие диски не хранят данные в формате, подобном единице и нулю; вместо этого они используют сложную обработку сигналов, чтобы втиснуть сигналы в наименьшее возможное пространство и декодировать его при чтении. Таким образом, они действительно независимы от базы.
Я не удивлюсь, что в какой-то момент попытка хранения на базе 4 была предпринята на SSD или RAM. Все зависит от физики и химии материалов. Инженеры и ученые будут толкать эти материалы настолько далеко, насколько смогут, и будут следовать по любому маршруту, дающему лучшие результаты.
источник
Да, наличие большего количества состояний позволит каждой «ячейке» памяти или каждому символу в линии передачи данных переносить больше информации.
Но бесплатного обеда не существует, нам нужно уметь различать эти состояния. Оказывается, легко создавать двоичные логические элементы и гораздо сложнее создавать элементы, которые различают, обрабатывают и восстанавливают более двух логических уровней.
И тогда есть проблема ослабленных сигналов. В двухуровневой системе вы можете просто спроектировать свой порог так, чтобы он работал с ослаблением в худшем случае, в системе с четырьмя состояниями, где ожидается значительное ослабление, вам необходимо адаптировать свои пороги к конкретному ослаблению вашей системы, а не только к худшему случай ослабления На практике это означает, что вам необходимо добавить систему измерения затухания в вашу систему связи.
Все , что сказал , что есть ситуации , когда дополнительная сложность делает смысл. Многие твердотельные накопители теперь используют более двух уровней на одну флэш-ячейку (известную как MLC или TLC), современные высокоскоростные протоколы связи также почти всегда используют многоуровневые кодировки.
источник
Возможно, вам будет интересно узнать, что русские разработали чип, который был троичным , а не двоичным. Это означает , что каждый символ может иметь значение
-1
,0
или1
. Таким образом, каждый физический вентиль может хранить «три» значения, а не «два».Как вы начинаете подозревать, может быть более эффективный способ реализации базовой системы нумерации. (Хотя эта способность выразить это более эффективно зависит от нашей способности к физическому изготовлению на материале.) Оказывается, что константа
e
, основание натурального бревна (~ 2.71828), имеет лучшую экономию радиуса, затем 3, затем 2, затем 4.Радикальная экономия - это количество цифр, которое вы можете представить, и сколько символов вам нужно, чтобы сделать это.
Например, математическое число три представлено как
3
в базе 10, но как11
в базе 2 (двоичная). База 10 может выражать большие числа с меньшим количеством символов, чем двоичная банка, но таблица символов базы 10 в 5 раз больше (0 ... 9), чем таблица символов базы 2 (0, 1). Сравнение выразительной мощности с размером набора символов называется «экономия радиуса» (основанием является номер базы, например, 2 в двоичной системе или «база 2»). Естественный вопрос, который следует, где я хочу быть с точки зрения этого компромисса? Какой номер я должен принять как основание? Могу ли я оптимизировать соотношение между выразительной силой и размером набора символов?Если вы посмотрите на диаграмму в статье по основам экономики в Википедии, вы можете сравнить экономику различных баз. В нашем примере экономия радиуса базы 2 равна 1,0615, а экономия базы 10 - 1,5977. Чем меньше число, тем лучше, поэтому база 2 более эффективна, чем база 10.
Ваш вопрос о базе 4 имеет эффективность 1,0615, что соответствует размеру базы 2 (или двоичного кода), поэтому принятие его над базой 2 дает в среднем только один и тот же размер хранилища на число.
Если вам интересно, то есть ли идеальное число для принятия в качестве базы, эта диаграмма показывает вам, что это не целое число, а математическая константа
e
(~ 2.71828), которая является наилучшей с экономией 1,0. Это означает, что это эффективно, насколько это возможно. Для любого набора чисел, в среднем, basee
даст вам лучший размер представления, учитывая его таблицу символов. Это лучший "удар за доллар".Итак, хотя вы и думаете, что ваш вопрос, возможно, прост и прост, на самом деле он немного сложен и очень важен для рассмотрения при проектировании компьютеров. Если бы вы могли спроектировать идеальный дискретный компьютер, использование базы 4 предлагает ту же сделку - такое же пространство для затрат - как двоичный файл (база 2); использование базы 3, или троичной системы, предлагает более выгодную сделку по сравнению с двоичным (и русские создали физический работающий компьютер с представлением базы 3 в транзисторах); но в идеале вы должны использовать базу е. Я не знаю, построил ли кто-нибудь работающий физический компьютер с базой e, но математически он мог бы предложить лучшее пространство по сравнению с двоичным и троичным - фактически лучшее предложение из всех действительных чисел.
источник
Вы поверите, что я могу закодировать общую сумму человеческих знаний одним совпадением?
Если я закодирую немного в одном совпадении, символы могут выглядеть так:
С достаточным количеством матчей я могу сказать что угодно. Но я могу сказать вдвое больше с тем же совпадением, если добавлю еще два символа. Который может выглядеть так:
Вдвое больше информации с таким же матчем! А почему бы не? Ну зачем останавливаться? Поверните каждый символ на 45 градусов, и мы снова удвоимся. 30, 15, и так далее. Вскоре у меня достаточно символов, чтобы я мог сказать что угодно и что угодно только с одним совпадением! Как только я это сделаю, у нас возникнет проблема. Что говорит этот матч?
Как вы можете быть уверены, какой именно символ сейчас? Сколько времени вам нужно, чтобы быть уверенным? Это руб. Чем больше символов я добавляю, тем больше нужно усилий, чтобы разграничить их.
Если мы говорим о матче, то конечно. Но, даже если это не замедлило нашу скорость чтения совпадений, теперь мы занимаем больше места на моей кухне. Это всегда что-то.
источник
Если бы бит имел 4 состояния вместо двух в символе (бит), то да, у вас было бы вдвое больше памяти. Это может или не может занять вдвое больше места, в зависимости от используемой технологии.
Есть реальный пример, который у вас перед глазами каждый день: Ethernet (который не является памятью, но он аналогичен в том, что касается передачи данных), у вас есть, среди прочего, обычная «быстрая сеть Ethernet» на 100 Мбит 100BASE -TX, и у вас есть 1GbE Ethernet.
Очевидно, что 1GbE требует в 10 раз более высоких частот, чем 100 Мбит (поскольку для 100 Мбит требуется в 10 раз более высокая частота, чем 10 Мбит), поэтому вам также нужны более дорогие кабели. Очевидно.
Ой ... это совсем не так .
100 Мбит Ethernet передает по двум кабельным парам на 100 МГц, тогда как GbE передает 125 МГц по 4 кабельным парам.
Подождите, значит, GbE действительно только в 2 1/2 раза быстрее, чем 100 Мбит Ethernet? Я получаю только 250 Мбит / с?
Нет, он также использует 5-PAM-кодирование, которое может кодировать 2,32 бит на импульс на кабельную пару, из которых 2 бита используются в качестве фактической информации, а оставшаяся часть делает сигнал более устойчивым к шуму. Благодаря этим дробным битам 1000BASE-T также может отбрасывать кодирование 8B10B.
Таким образом, вы удвоили количество проводов и немного увеличили частоту, но вы получаете пропускную способность в 10 раз больше!
Теперь , если вы думали , что это чистая магия, посмотрим, как цифрового кабельного телевидения работ , и если вы все еще не уверены, посмотрите в ADSL, который использует 32768-QAM для кодирования 15 бит в одном символе.
Тот же старый медный провод, тот же частотный диапазон, через который проходит в 15 раз больше материалов.
РЕДАКТИРОВАТЬ:
Еще один очень очевидный пример из реальной жизни, о котором я полностью забыл (поскольку он, очевидно, слишком очевиден!), Который у вас перед глазами каждый день, - это USB-разъемы.
Те, которые обычно используют флэш-память MLC . Что это такое? Это тип ячейки памяти, в которой хранится один из четырех разных уровней заряда. Это самая маленькая единица, к которой вы можете получить доступ на аппаратном уровне. Таким образом, вы могли бы сказать, что ваши «биты» действительно имеют 4 состояния (они не имеют , вы действительно просто получаете два бита вместо одного, и вы все равно можете читать только целые сектора с устройства ... но вы можете поспорить с этим сюда).
То же количество клеток, но вдвое больше памяти. Дешевле, меньше, несколько менее надежно, но ... в первую очередь, дешевле .
источник
Наличие 4 символов на одну цифру вместо двух означает, что вы можете хранить вдвое больше информации в одной цифре. Однако по мере увеличения количества цифр вы можете хранить экспоненциально больше информации:
Любые n цифр в базе 2 могут кодировать 2 ^ n состояний, тогда как база 4 может кодировать 4 ^ n.
источник
(4^n) / (2^n) = 2^n
Это означает, что вы можете представлять экспоненциально (в2^n
разы) больше состояний, но это только в два раза (log2(4^n) / log2(2^n) = 2n / n = 2
) больше памяти. Помните, чтоstorage capacity in bits = log2(number of states)