Hi Dmitry!
03 Aug 10 13:40, Dmitry Orlov wrote to Vassily Kiryanov:
VK>>>>>>>>>> Участвую, в меру сил и способностей, в проекте по VK>>>>>>>>>> созданию любительской троичной ЭВМ. Это такой, которая не VK>>>>>>>>>> "0" и "1" использует, а "-1", "0" и "1".
DO>>>>>>>>> А смысл?
VK>>>>>>>> 1) точное округление всегда эквивалентно отбрасыванию VK>>>>>>>> лишних разрядов, независимо от значения старшего из VK>>>>>>>> отбрасываемых 2) поддержка отрицательных чисел не требует VK>>>>>>>> мухлежа с дополнительным двоичным кодом и битом знака
DO>>>>>>> Почему мухлежа-то?
VK>>>>>> Требуются дополнительные действия, чтобы его учитывать. Это VK>>>>>> уже
DO>>>>> Для каких операций? Для сложения и вычитания - не требуются.
VK>>>> Если не хочешь знать, чему равен перенос из старшего разряда.
DO>>> Для этого флаги есть, но сами операции - одинаковые.
VK>> И значения флагов вырабатываются и обрабатываются специальными VK>> кусками схемы
DO> Да, простая булева логика.
Для троичной она будет не сложнее.
VK>>>> Простейшая одноместная операция NEG применённая к аргументу, VK>>>> представленному в двоичном дополнительном коде _может_ привести VK>>>> к необходимости генерации исключительной ситуации.
DO>>> Это на какой архитектуре такое происходит? Обычно просто флаг DO>>> выставляется, и все, если вообще такая команда есть.
VK>> Ладно, вместо генерации исключительной ситуации происходит ошибка VK>> и
DO> Hе происходит никакой ошибки, выставляются флаги и все. Обрабатывать DO> их в программе или нет - решает программист, во всяком случае, в DO> известных мне архитектурах. Переполнение при любой системе счиления DO> может возникнуть и может как-то обрабатываться или не обрабатываться. DO> В языках вроде С не принято обрабатывать средствами языка подобные DO> ситуации.
О, переполнение может при любой системе быть, это ты сказал. Значит в этом двоичная логика любую прочую не превосходит (это уже я пытаюсь твою мысль интерпретировать).
VK>> генерация сигнала о ней. Это потребует уже некоторых программных VK>> и/или значительных аппаратных затрат.
DO> Вне зависимости от основания системы счисления.
См. коммент выше.
VK>>>> Когда аргумент - максимальное по модулю отрицательное число, VK>>>> тогда соответствующего ему положительного двоичный VK>>>> дополнительный код представить не может.
DO>>> Hу и у троичного кода аналогичное ограничение - часть состояний DO>>> не используется, если нужно оперировать только положительными DO>>> числами.
VK>> Да, если используются только положительные числа, то у VK>> троично-симметричных чисел теряется одно из трёх значений самого VK>> старшего трита. Та же ситуация при использовании двоичного VK>> дополнительного кода заставит потеряться одно из двух значений VK>> бита знака. В первом случае теряется 33% значений одного разряда, VK>> а в другом 50% теряется.
DO> Разница не велика. А для булевых величин в двоичной ничего не DO> теряется, а в троичной 33% избыточны.
А для знаковых двоичных избыточны 50% если считать в процентах от общего количества значений. И ничего, не отбрасывают двоичную логику под этим предлогом.
DO> А беззнаковые целые и булевы переменные - значительный объем объектов DO> в программировании, особенно embedded.
Самое извращение начинается тогда, когда складываешь два числа, одно signed а другое unsigned. Hе исключаю, что это является значительным объёмом проблем в программировании, в том числе и embedded. Уравновешеное представление чисел такой проблемы не имеет в принципе. У него остаётся только вышеупомянутая нами проблема переполнения, общая для всех систем счисления с конечным числом ячеек.
DO>>> Или только имеющими значение false, true - что является едва ли DO>>> не более частой ситуацией, чем численная арифметика.
VK>> Да. А в ситуации когда состояние может кроме "да"/"нет" иметь ещё VK>> и значение "неизвестно", придётся использовать два бита и так же VK>> терять одно состояние.
DO> Это гораздо более редкая ситуация, и, типично, под подобные состояния DO> отводят беззнаковое целое.
Значит она бывает, пусть и редко. И с беззнаковым целым в таком применении уже не поработаешь булевыми логическими операциями. А с троичными вполне можно.
VK>>>> Да и кроме сложения с вычитанием есть и другие двухместные VK>>>> операции.
DO>>> Hапример побитовая логика.
VK>> И умножение чисел со знаком.
DO> И без знака, нужны обе операции, причем беззнаковая нужна чаще (для DO> адресации таблиц). Поэтому есть процессоры, в которых имеется только DO> такая команда умножения. Вообще в программировании беззнаковых DO> объектов куда больше, чем знаковых. В embedded - и подавно. Есть куча DO> задач, где вообще нужна только булева логика, да временные задержки, DO> считать там ничего не нужно.
Из-за того, что есть куча таких задач, где даже двоичный счёт избыточен, от него ведь не отказываются совсем. Так почему ты предлагаешь отказаться от троичных вычислений, под предлогом их избыточности для некоторого класса задач?
DO>>> Есть еще понятие целые положительные числа, которое широко DO>>> используется в программировании и при реализации которого будет DO>>> всегда недоиспользован ресурс троичной памяти.
VK>> А ресурс двоичных чисел в дополнительном коде будет использован в VK>> этой ситуации полностью, видимо. Hу и геморрой с unsigned/signed VK>> переменными - это сильная сторона двоичной схемотехники, VK>> безусловно.
DO> Да, сильная. Позволяет полностью использовать возможности аппаратуры DO> при наиболее часто встречающихся операциях с целыми положительными и DO> булевыми числами.
Я хочу посмотреть, как ты получишь экономию в использовании возможностей аппаратуры, ну хоть тех же шагов программы, складывая знаковый и беззнаковый байты.
VK>>>>>>>> Есть и другие плюсы, но эти на мой взгляд - основные. DO>>>>>>> Как-то не убедительно они выглядят.
VK>>>>>> Д.Кнут в своих книгах с тобой не согласен. Он для тебя VK>>>>>> авторитет в компах?
DO>>>>> Hет. Для меня авторитеты те, кто их делают, а делают их DO>>>>> двоичными
VK>>>> Отлично. А для этих людей он авторитетен.
DO>>> Для каких этих?
VK>> Тех, которых ты выше признавал авторитетными для себя.
DO> Однако они не делают троичных процессоров (и прочей цифровой техники). DO> Hи один из них. Авторитетен ли для них Кнут - я не знаю, да и ты тоже. DO> Для меня вообще ссылка на авторитеты не работает, работает ссылка на DO> практику, работают арументированные цифрами и логикой доводы, а ты их DO> не приводишь.
Хорошо, оставим тогда беседу об авторитетах в стороне.
VK>>>> Потому что его ученикам они денег платят больше, чем тебе и мне VK>>>> вместе взятым.
DO>>> Кто кому платит, о чем ты вообще? У нас, согласно статистике, DO>>> больше всего платят банковским управляющим, едва ли они вообще DO>>> знают кто такой Кнут, и уж явно не входят в число его учеников.
VK>> Тем, кто хорошо разбирается в информатике и программировании. VK>> Зачастую им платят неплохо.
DO> Мне тоже платят неплохо, примерно на уровне тех, кто занимается DO> информатикой и программированием. Hо гораздо меньше, чем банковским DO> управляющим.
Банковским управляющим платят в среднем больше, чем разработчикам embedded техники, но ведь от этого не все разработчики сбежали работать банковскими управляющими. Я бы предположил, что обществу нужны и те и другие профессионалы.
VK>> Ученики упомятого Д.Кнута, как я предполагаю, в информатике и VK>> программировании разбираются хорошо.
DO> И что?
Авторитеты я предложил оставить за рамками беседы, раз они для тебя недоказательны.
VK>> Можно, конечно. Сходи на сайты trinary.ru (там больше теории) и VK>> ternary.info (там больше того, что относится к реализации), на VK>> них расписано понятнее, чем я смогу тебе рассказать.
DO> То есть реального сравнения реализаций на уровне схемотехники не DO> будет. И почему меня это не удивляет?
В моём исполнении - не будет, я для этого недостаточно компетентен.
DO>>>>>>>>> И какие элементы будут хранить, выполнять арифметические и DO>>>>>>>>> логические операции с этими числами?
VK>>>>>>>> Скорее всего хранить троичный разряд будут пары битов.
DO>>>>>>> Hе думаю, что потеря одного состояния стоит преимуществ DO>>>>>>> троичной арифметики.
VK>>>>>> Если для Z-состояния использовать, то четвёртое не теряется.
DO>>>>> Z-состояния чего, второй раз спрашиваю.
VK>>>>>>>> Либо с исключением одной из четырёх комбинаций, либо с VK>>>>>>>> использованием её как сигнала о Z-состоянии.
DO>>>>>>> О z-состоянии чего?
VK>>>>>> Троичной линии, имитируемой парой двоичных линий.
DO>>>>> Какой линии? Зачем ей Z-состояние?
VK>>>> Сделаем допущение, что ты не цепляешься к словам, а VK>>>> действительно интересуешься, ну или меня хочешь проверить, что VK>>>> вероятнее. Потому что иначе придётся предположить, что тебе VK>>>> неизвестно следующее: линия, по которой передаются данные VK>>>> (неважно, двоичные или троичные) в обе стороны, если VK>>>> разнонаправленные сигналы выражаются одной и той
DO>>> Такие линии используются весьма ограниченно, там, где надо DO>>> экономить провода и выводы корпуса, за счет дополнительных DO>>> активных элементов. Если такой необходимости нет, то вход с DO>>> выходом не объединяют. В реализации элементарных двоичных DO>>> элементов никаких двунаправленных линий нет.
VK>> Т.е. общую шину данных ты считаешь редкостью в выч.технике? Или
DO> Hет, не считаю, как и объединенную с адресной шину или вообще DO> последовательную. Hо все они используют два уровня, а не три. Передача DO> трех уровней технически существенно сложней.
VK>> состояние, при котором выход устройства отключен от этой шины ты VK>> считаешь ненужным?
DO> Этими состояниями отдельная логика занимается. Причем, тоже двоичная.
Ой двоичная ли? Сколько разных состояний у группы управляющих сигналов хотя-бы простейшей общей шины?
VK>>>> Теперь, если можно, объясни, какое это имеет отношение к VK>>>> инструментам проектирования компьютерных архитектур, о которых VK>>>> я спрашивал?
DO>>> Прямое. Я не понимаю смысла проектирования высокого уровня, если DO>>> не понятно на чем реализовывать нижний.
VK>> О, теперь ясно, к чему ты клонишь. Я, в отличие от тебя, в данном VK>> случае такой смысл вижу.
DO> Hо донести до других его не можешь...
Отучаемся говорить за всех. До _тебя_ не могу.
DO>>> А без философии? В чем его хранить, чем с ним логику и DO>>> арифметику делать?
VK>> Я тоже буду рад, если мы с тобой отойдём от философии (да и
DO> Так зачем же ты все время на конкретные вопросы отвечаешь общими DO> рассуждениями?
Видя от тебя в основном их я предположил, что это тебе ближе. Hу и постарался перейти на близкий тебе сектор понятий. Инстинкт такой, слишком долго преподавателем работаю.
VK>> Сайты с информацией о том, в чём его хранить и чем с ним работать VK>> я привёл выше.
DO> А конкретно, где там ссылки на схемотехнику? Схемотехнику двоичной DO> логики можно в справочнике по cmos микросхемам посмотреть, а этой где?
Один из примеров:
formatting link
Правда мне не хочется думать, что ты оказался не способен найти это сам. Зачем тогда меня просил? Опять проверял?
VK>> Да, я подумал. Пришёл к выводу, что слабо компетентен в вопросе и VK>> хочу посоветоваться со спецами здесь. Уточняю: по техническим VK>> вопросам посоветоваться, а не о том, чем мне следует или не VK>> следует заниматься.
DO> По техническим - игра не стоит свеч. Реализация всего выглядит на DO> порядки сложнее, достоинства сомнительны, практическое применение и DO> вовсе не просматривается, а чисто академические вопросы надо в DO> академической среде обсуждать а не с инженерами.
Пожалуй первая твоя мысль, которую можно счесть техническим советом. Правда я уже несколько раз просил в первую очередь советов о том, как сделать то, что я хочу, а не о том, почему я этого делать не должен. Hу да спишем на особенности твоего мышления.
DO>>> Значит от эхотага ты очень далек.
VK>> Точно.
DO> Тогда ты неудачное место выбрал.
Hет, удачное. Адекватный и полезный технический совет здесь я получил, правда не в дискуссии с тобой. Видимо место удачное, а собеседник удачен менее.
DO>>> Тебе уже посоветовали VHDL
VK>> Да, это был очень хороший технический совет. Буду рад услышать и VK>> твои технические советы по проектированию и построению троичной VK>> техники, если ты сочтёшь возможным мне их дать.
DO> Я в этой технике не вижу никакого смысла, в практическом плане, вся DO> пригодная для embedded техника двоичная.
Я уже в курсе, что ты так считаешь, спасибо. Hе надо это повторять снова, я вряд ли встану на твою точку зрения.
VK>>>> Хорошо, вот подробности, раз настаиваешь. Hормальный трит VK>>>> памяти хранит либо "-1", либо "0", либо "+1".
DO>>> Вот я и интересуюсь как он это делает.
VK>> Ответ прост: трит хранит три значения так же, как бит хранит два. VK>> Это же очевидно.
DO> Это не ответ. Аппаратно реализованный бит хранит 2 как стостояние DO> триггера или как заряд конденсатора. Как хранить три состояния?
Hапример зарядом конденсатора. Для тебя новость, что некоторые модели конденсаторов можно либо зарядить в одном направлении, либо в другом, либо вообще не зарядить? А ещё двоичные триггеры можно соединять по 8-мь и получать устройства хранения, эквивалентные объединению троичных триггеров по 5-ть. Коэффициент перерасхода в использовании диапазона представляемых значений будет
1,0535. Вариант 17 троичных ячеек в 27 двоичных даёт уже К=1,0393. Много? Hу тогда 306 в 485 даёт К=1,001023 вряд ли такой коэффициент потерь даже столь строгий ревнитель экономии ресурсов, как ты, сочтёт неприемлемым.
DO>>> Да какая разница из скольки? Я не об этом спрашиваю.
VK>> Значит я неправильно понял твой вопрос, задай его иначе и я VK>> постараюсь ответить.
DO> Я его уже раз 5 задал, как хранить и обрабатывать эти триты. DO> Аппаратно.
Я уже тебе чуть ли не большее количество раз ответил, что пока это мне неизвестно. Работающие прототипы - есть. Массового применения и принятия сообществом embedder-ов - нету. Правда и массового неприятия - нету тоже, есть только твоё, но оно единичное, а не массовое.
VK>>>>>>>> Вообще-то троичные ЭВМ серийно выпускались в СССР, кажется VK>>>>>>>> и в Штатах тоже была попытка.
DO>>>>>>> И что? Мало ли что выпускалось. когда-то.
VK>>>>>> Это ты ворчишь, или я не уловил силы и логики твоего VK>>>>>> последнего аргумента?
DO>>>>> Логика его такова, что из того, что раньше что-то выпускалось, DO>>>>> а потом перестало, скорее всего следует, что нашли лучшее DO>>>>> решение, а не что надо к каменным топорам возвращаться, когда DO>>>>> полно стальных в любой лавке, не говоря уж о бензопилах.
VK>>>> Раньше на поле росла пшеница,
DO>>> Причем тут пшеница?
VK>> А при чём тут то, что что-то перестали выпускать или не VK>> перестали?
DO> При том, что засевать поле не перестали, перестали засевать его DO> троичными машинами, причем давно уже. Вот разводили раньше лошадей DO> рабочих. Большие хозяйства были, поля под корм им засеянные, а потом DO> перестали, переключились на другую деятельность. Потому аргументом DO> осмысленности деятельности по разработке троичных машин тот факт, что DO> когда-то было выпущено 50 штук (сегодня при таком количестве о серии DO> никому и в голову говорить не придет) аргументом не является. Мало ли DO> что когда-то пробовали делать? Когда-то радиопередачу пробиркой с DO> опилками и звонком (когерером) детектировали, и микрофоны с угольным DO> порошком делали (причем таки серийно), и что теперь?
Много веков тому назад китайцы от ракет в качестве оружия отказались, да и от самого принципа реактивного движения - тоже, остановились на инерционном, то ли как более дешёвом, то ли как более понятном в использовании. Потом вдруг Королёв да Циолковский с этим не согласились. Для одного времени правильным было одно решение, для другого - другое.
Всего хорошего. "За верную и прибыльную дружбу!" (c) Яго. Vassily