Почему двоичные, а не троичные вычисления?
разве объект с тремя состояниями не способен мгновенно удерживать больше информации и обрабатывать большие значения? Я знаю, что процессоры в настоящее время используют массивные сети ворот XOR, и это нужно будет переработать.
поскольку мы находимся в 64 бит (мы можем представить 2^63 возможных состояния), вычисляя эквивалент троичная поколение смогло поддержать номер с 30 больше журнала мест десятков (3^63-2^63).
Я полагаю, что так же легко обнаружить разность потенциалов между +1 и 0, как это между -1 и 0.
некоторые compexity оборудования, потребляемая мощность, или плотность чипа свести на нет любые выгоды в хранилище и вычислительные мощности?
17 ответов
гораздо сложнее создавать компоненты, которые используют более двух состояний / уровней / что угодно. Например, транзисторы, используемые в логике, либо закрыты и не ведут вообще, либо широко открыты. Их полуоткрытие потребует гораздо большей точности и использования дополнительной мощности. Тем не менее, иногда для упаковки большего количества данных используется больше состояний, но редко (например, современная флэш-память NAND, модуляция в модемах).
Если вы используете более двух состояний, вам нужно чтобы быть совместимым с binary, потому что остальной мир использует его. Три отсутствует, потому что преобразование в двоичный потребует дорогостоящего умножения или деления с остатком. Вместо этого вы переходите непосредственно к четырем или к высшей степени из двух.
эти практические причины, почему это не делается, но математически вполне возможно построить компьютер на троичной логике.
здесь много дезинформации. Binary имеет простой переключатель включения / выключения. Тринарий / троица может использовать один из 2 режимов: сбалансированный ака -1, 0, +1 или неуравновешенный 0, 1, 2, но не просто включен или выключен, или, правильнее, имеет 2 состояния "on".
с расширением волоконной оптики и экспансивного оборудования, ternary фактически приведет нас к гораздо более экспансивному и более быстрому состоянию для гораздо более низкой стоимости. Современное кодирование все еще может использоваться (так же, как 32-битное программное обеспечение все еще может использоваться на 64-битном аппаратное обеспечение) в сочетании с новыми троичными кодами, по крайней мере, изначально. Просто нужно раннее оборудование, чтобы проверить, какая часть информации проходит, или программное обеспечение, чтобы объявить заранее, если это немного или Трит. Код может быть отправлен через 3 штуки за раз вместо современных 2 для той же или меньшей мощности.
с волоконно-оптическим оборудованием вместо современного двоичного процесса включения/выключения он будет определяться 0=off и другими 2 переключателями как ортогональные поляризации света. Как для безопасности это может быть фактически сделано более безопасным для человека, поскольку каждый ПК или даже пользователь настроен на определенные поляризационные "спецификации", которые должны быть отправлены/получены только между Пользователем и назначением. То же самое касается "ворот" с другим оборудованием. Им не нужно было бы быть больше, просто иметь возможность для 3 возможностей вместо 2.
были даже некоторые теории и даже, возможно, начать некоторые тесты на эффект Джозефсона, который позволит тройные ячейки памяти, использующие циркулирующие сверхпроводящие токи, по часовой стрелке, против часовой стрелки или выключены.
при прямом сравнении тернарная является целочисленной базой с наибольшей экономикой радикса, за которой следуют двоичные и четвертичные. Даже некоторые современные системы используют тип троичной логики, он же SQL, который реализует троичную логику как средство обработки содержимого нулевого поля. SQL использует NULL для представления отсутствующих данных в базе данных. Если поле не содержит определенного значения, SQL предполагает это означает, что фактическое значение существует, но в данный момент оно не записано в базе данных. Обратите внимание, что отсутствующее значение не совпадает ни с числовым значением нуля, ни со строковым значением нулевой длины. Сравнение чего-либо с NULL-даже другого NULL-приводит к неизвестному состоянию истины. Например, выражение SQL "City =' Paris ' "разрешает значение FALSE для записи с" Chicago " в поле City, но оно разрешает значение UNKNOWN для записи с полем null City. Другими словами, в SQL, в неопределенное поле представляет потенциально любое возможное значение: отсутствующий город может представлять или не представлять Париж. Именно здесь тринар логика используется с современными бинарными системами, хотя и грубыми.
конечно, мы могли бы хранить больше данных за бит, так же, как наша десятичная система счисления может содержать гораздо больше данных в одной цифре.
но это также увеличивает сложность. Бинарные ведет себя очень хорошо во многих случаях, что делает его очень легко манипулировать. Логика для двоичного сумматора намного проще, чем для троичных чисел (или, если на то пошло, десятичных).
вы не сможете волшебным образом хранить или обрабатывать больше информации. Оборудование придется быть настолько больше и сложнее, что это более чем компенсирует большую емкость.
многое из этого связано с тем, что в конечном итоге биты представлены в виде электрических импульсов, и проще построить оборудование, которое просто дифференцирует "заряженный" и "не заряженный", и легко обнаруживать переходы между состояниями. Система, использующая три состояния, должна быть немного более точной в различении между "заряженным", "частично заряженным" и "без заряда". Кроме того," заряженное "состояние не является постоянным в электронике: энергия начинает" истекать " в конце концов, поэтому "заряженное" состояние варьируется в фактическом" уровне " энергии. В системе с тремя состояниями это тоже необходимо учитывать.
Ну, во-первых, нет меньшей единицы информации, чем бит. работа с битами является самым основным и фундаментальным способом обработки информации.
возможно, более сильная причина заключается в том, что его гораздо проще сделать электрические компоненты, которые имеют два стабильных состояния, а не три.
в сторону: ваша математика немного не так. в 64-значном тринар-номере есть приблизительно 101.4 двоичных цифр. Объяснение: самый большой 64-значный номер тринария 3433683820292512484657849089280 (3^64-1). чтобы представить это в двоичном формате, требуется 102 бита: 101011010101101101010010101111100011110111100100110010001001111000110001111001011111101011110100000000
Это легко понять, log2 (3^64) составляет около 101.4376
есть также теории, которые предполагают, что волоконная оптика может использовать частоты света (i.e.цвет), чтобы дифференцировать состояния, тем самым позволяя почти бесконечное (в зависимости от разрешения блока обнаружения) количество базовых возможностей.
логические цепи наверняка feesible для любой базы, но давайте используем пример троичной:
для ворот ТРИНАРИЯ XOR он может быть исключительным для одного (или любого) из трех сравниваемых состояний или одного из трех других состояний. Он также может связать два из трех состояний вместе для двоичного вывода. Возможности увеличиваются буквально в геометрической прогрессии. Конечно, это потребует более сложного аппаратного и программного обеспечения, но сложность должна уменьшить размер и, что более важно, мощность (читай тепла). Есть даже разговор об использовании тринария в нано-вычислительной системе, где есть микроскопический "удар"," дыра "или" неизмененный", чтобы представить три состояния.
прямо сейчас, мы находимся в своего рода QWERTY типа проблема. Qwerty был разработан, чтобы быть неэффективным из-за проблемы с механикой набора текста, которая больше не существует, но каждый, кто использует клавиатуры сегодня научился использовать систему qwerty, и никто не хочет ее менять. Тринари и более высокие базы когда-нибудь прорвутся через эту проблему, когда мы достигнем физических ограничений двоичных вычислений. Может быть, еще двадцать лет, но мы все знаем, что мы не можем продолжать удваивать возможности каждые полтора года навсегда.
ответ Screwball является правильным и исправляет некоторые из искажений, предлагаемых здесь. Те, кто ответил О дробных положительных значениях, полностью пропустили концепцию троичной системы, которая основана на 0, +1 и -1. Когда русские впервые построили его в 1950-х годах, конкуренция между СССР и США была интенсивной. Я подозреваю, что политика между ними имела много общего с возможной популярностью двоичного файла США над троичным в СССР.
из того что я читал, есть некоторые троичные компьютеры в использовании. Некоторые из них используются в Московском университете, другие-в лабораториях IBM. Есть упоминания и о других, но я не могу понять, насколько они серьезны, или просто для экспериментов или игры. По-видимому, они намного дешевле в строительстве, и они используют гораздо меньше энергии для работы.
еще одним серьезным препятствием является то, что существует гораздо большее количество логических операций, которые необходимо определить. Число операторов определяется по формуле b^(b^i), где b-база, а i-количество входных данных. Для двух входных двоичных систем это работает до 16 возможных операторов. Не все из этого обычно снабжены в стробах и некоторые стробы покрывают больше чем одно условие, однако все их можно снабдить с 3 или более из стандартных стробов. Для двух входных троичных система это число намного выше о 19683. Хотя некоторые из этих вентилей были бы похожи друг на друга, в конечном счете способность проектировать базовые схемы вручную была бы почти невозможна. В то время как даже первокурсник инженерный студент способен проектировать основные двоичные схемы в своей голове.
Я считаю, что это по двум причинам (пожалуйста, поправьте меня, если я ошибаюсь): во-первых, потому что значение 0 и 1 на самом деле не является текущим/текущим или чем-то похожим. Шум довольно высок, и электронные компоненты должны уметь различать, что значение, колеблющееся, скажем, от 0.0 до 0.4, равно нулю, а от 0.7 до 1.2-единице. Если вы добавляете больше уровней, вы в основном делаете это различие более сложным.
во-вторых: вся булева логика немедленно перестанет делать чувство. И поскольку вы можете реализовать sum из булевых ворот, а из sum-любую другую математическую операцию, лучше иметь что-то, что хорошо сопоставляется с практическим использованием для математики. Какова будет логическая таблица истинности для произвольной пары false/maybe / true?
многое из этого связано, я уверен, с проверкой ошибок цифровых сигналов. Например, в квантовых вычислениях эта задача практически невыполнима, но не невыполнима, чтобы добиться выполнения принципа неклонирования, но также и из-за того, что количество состояний увеличивается. Для двух состояний процесс проверки ошибок не тривиален, но относительно прост. Для трех состояний проверка ошибок становится бесконечно сложнее. Это также почему аналоговые компьютеры с почти бесконечным количество штатов было исключено.
Если вы заинтересованы в квантовых вычислениях, хотя посмотрите на упаковку сферы и квантовую проверку ошибок, некоторые довольно аккуратные вещи там.
Я думаю, что троичный будет более эффективным. Просто она так и не стала популярной. Бинарный вышел на сцену, и теперь переход на троичный был бы изменением всего, что мы знаем.
чтобы схема работала в чем угодно, кроме двоичного кода, Вы должны определить, как будут представлены другие состояния. Вы предложили систему -1, 0 и +1, но транзисторы не работают, Они любят, чтобы их напряжение или ток шел только в одном направлении. Для создания 3-разрядного бита потребуется 2 транзистора, но вы можете сделать 2 двоичных бита из тех же транзисторов и иметь 4 состояния вместо 3. Binary просто более практичен на низком уровне.
Если вы пытались установить пороговые значения на схеме и использование 0, +1, +2 вместо этого вы сталкиваетесь с другим набором проблем. Я не знаю достаточно, чтобы вдаваться в детали, но для логических схем это просто больше проблем, чем стоит, особенно когда индустрия полностью посвящена двоичному уже.
существует одна область, где несколько уровней используются для получения более 2 состояний на бит:MLC флэш-память. Даже там количество уровней будет силой 2 так, что выход сможет быть легко преобразуется в двоичный для использования остальной частью системы.
конечно, но троичный " бит " (тет?) было бы сложнее, вы все равно хранили бы тот же объем информации, только в base3 вместо base2, и мощность, если компоненты двух состояний-это простота. Почему бы просто не пойти вперед и сделать 10-state base10
двоичные вычисления связаны с двоичными и, или и не гейтами, их огромной простотой и способностью объединяться в произвольно сложные структуры. Они являются краеугольным камнем буквально всей обработки вашего компьютер.
Если бы был серьезный случай, чтобы переключиться на троичный или десятичный, то они бы. Это не случай "они пробовали это так, и он просто застрял"
Если мы используем 3 состояния, то основная проблема, возникающая из-за этого, -
- Если мы используем однополярный сигнал, то запас шума уменьшится, следовательно, увеличится частота битовых ошибок.
- для униполярного сигнала, чтобы поддерживать постоянный уровень шума, мы должны увеличить источник питания, и, следовательно, потребление энергии увеличится.
- Если мы используем биполярный сигнал, то общий размах сигнала будет увеличиваться, тем самым увеличивая потери.
- дополнительные слой в разнослоистом PCB должен быть добавлен к учету отрицательного качания в двухполярных сигналах.
надеюсь, я убедителен
Я думаю, что это больше связано с программируемостью, условными утверждениями и эффективным использованием и функциональностью транзисторов, чем что-либо еще. Может быть очевидно, что вложенное IF истинно, если есть ток через схему, но как программа знает, что делать, если решение может быть достигнуто тысячами различных маршрутов? Это интересно в отношении ИИ, где память и обучение гораздо важнее, чем грубая вычислительная мощность.