троичное цпу

>> KF> Таким образом, использование системы счисления с

> >> KF> основанием 2 несколько дороже использования системы по основаниею > >> KF> 3, но на очень небольшую величину. > >> Именно об этом я и говорил. Обещали, что будет дешевле. > KF> В 1.056 раз? Это смешно. > Ты знаешь, когда люди собирают деньги на покупку компьютера (особенно > "навороченного"), для них подобная разница будет достаточно существенна.

Если какие-то частные лица собирают деньги на покупку компутера -- они идиоты...

За разницу нынче вполне можно купить пишущий CD-привод...

Типичная ширина слова сейчас -- 32 или 64 разряда. 80 разрядов для представления вещественных чисел. В худшем случае экономии 2 бита, в лучшем -- 5...

Reply to
Kirill Frolov
Loading thread data ...
Reply to
George Shepelev

Sun May 01 2005 00:44, Kirill Frolov wrote to George Shepelev:

KF> Где хоть одна современная реализация троичной ЭВМ?

Пока нету. Это не удивительно, поскольку современные реализации ЭВМ в основном кремниевые, а кремниевая схемотехника по ряду (вполне объективных, имхо) причин заточена на двоичную логику.

KF> Про "сетунь" не надо.

Почему же "не надо"? Сетунь дает хороший урок: в тот конкретный момент времени схемотехника троичных ячеек была такой же (или даже более) удобной и экономной, как двоичная. Это создало объективные предпосылки для создания троичной машины. И результаты были блестящими, машина получилась компактной, надежной, легкой в серийном освоении, и т.п.

Кстати, в этом была ее "ахиллесова пята": Сетунь была слишком дешевой, и заводам было труднее выполнить на ней "план по валу" (в денежном исчислении), чем на двоичных машинах. Поэтому ее неохотно производили.

Еще один урок Сетуни состоял в том, что людям, работающим на ней, не составило труда освоить и использовать троичное счисление. То есть, субъективных/психологических препятствий не обнаружилось.

Поэтому вполне можно ожидать, что с появлением новой элементной базы ЭВМ (например, оптики, и пр.), если троичная логика для них окажется естественной и экономичной, то троичные ЭВМ могут еще возродиться.

Пока, Алексей

Reply to
Alex Kouznetsov
Reply to
George Shepelev

Mon May 02 2005 01:58, Sergey Davydov wrote to Alex Kouznetsov:

AK>> Еще один уpок Сетуни состоял в том, что людям, pаботающим на ней, не AK>> составило тpуда освоить и использовать тpоичное счисление. То AK>> есть, субъективных/психологических пpепятствий не обнаpужилось.

SD> А как на тpоичной машине выполняются побитовые логические опеpации и SD> сдвиги?

Наверное, здесь: Брусенцов Н. П., Владимирова Ю. С. "Троичное конструктное кодирование булевых выражений"

formatting link
SD> Вообще, где можно об этом почитать?

В свое время я начал интересоваться Сетунью, прочитав статьи по ДССП:

formatting link
После этого поисковиками искал ссылки на Н.П.Брусенцова, нашел много интересных статей, но специальной подборки линков не делал. Сейчас вот нашел статью, которую читал и раньше:
formatting link
========quote========= Постановлением Совмина СССР серийное производство 'Сетуни' было поручено Казанскому заводу математических машин. Конструкторскую документацию на машину разработали в СКБ Института кибернетики АН Украины. Первый образец машины демонстрировался на ВДНХ в Москве. Второй пришлось сдавать на заводе, поскольку заводские начальники пытались доказать, что машина, принятая Межведомственной комиссией и успешно работающая на ВДНХ, не годится для производства. 'Пришлось собственными руками привести заводской (второй) образец в соответствие с нашей документацией, - вспоминает Брусенцов, - и на испытаниях он показал 98% полезного времени при единственном отказе (пробился диод на телетайпе), а также солидный запас по климатике и вариациям напряжения сети'. Желания наладить крупносерийное производство у руководства завода не было. Причины: 'Сетунь' была слишком дешевой машиной, а значит, невыгодной для завода, и тот факт, что она надежно и продуктивно работала во всех климатических зонах от Калининграда до Магадана и от Одессы до Якутска, причем без какого-либо обслуживания и по существу без запасных частей, в расчет не принимался. Успешность испытаний вынудили 30 ноября 1961 г. директора завода был подписать акт, положивший конец его стараниям похоронить неугодную машину. Выпускали всего по 15-20 машин в год, а вскоре и от этого отказались. ... В 1961-1968 гг. Брусенцов вместе с Жоголевым разработал архитектуру новой машины, названной затем 'Сетунь-70'....Это была машина, в которой неизвестные в то время (1966-1968 гг.) RISC - идеи соединились с преимуществами трехзначной логики, троичного кода и структурированного программирования Э. Дейкстры. ... Машина была задумана так, что обеспечивалась эффективная возможность ее программного развития. Троичность в ней играла ключевую роль. Команд в традиционном понимании не было - они виртуально складывались из слогов. Длина и адресность команд варьируются по необходимости, начиная с нульадресной. На самом деле программист не думает о командах, а пишет в постфиксной форме (ПОЛИЗ) выражения, задающие вычисления над стеком операндов. Для процессора эти алгебраические выражения являются готовой программой, но алгебра дополнена операциями тестирования, управления, ввода-вывода. Пользователь может пополнять набор слогов своими операциями и вводить (определять) постфиксные процедуры, использование которых практически не снижает быстродействия, но обеспечивает идеальные условия для структурированного программирования. Результат - трудоемкость программ уменьшилась в 5-10 раз при небывалой надежности, понятности, модифицируемости и т. п., а также компактности и скорости. ... Н. П. Брусенцов говорил, что '..налицо убедительные доказательства верности открытого пути. С какой легкостью была сделана 'Сетунь', как просто ее осваивали и продуктивно применяли во всех областях и как программисты плевались, когда пришлось им переходить на двоичные машины. Наивысшее достижение сегодня -- RISC-архитектура - машины с сокращенным набором команд (обычно их 150), но где им до 'Сетуни', у которой 24 команды обеспечивали полную универсальность и несвойственные RISC эффективность и удобство программирования! Истинный RISC может быть только троичным. ========/quote=========

Пока, Алексей

Reply to
Alex Kouznetsov
Reply to
George Shepelev

Sergey, ты ещё здесь сидишь?

Оказывается это неправильные пчёлы, совсем неправильные. И, наверное, они делают неправильный мёд

Винни Пух

Понедельник Май 02 2005 10:24, George Shepelev wrote to Sergey Davydov:

SD>> А как на тpоичной машине выполняются побитовые логические SD>> опеpации и сдвиги? Вообще, где можно об этом почитать? GS> А чего там читать? Сдвиг тривиален, просто биты не двоичные, а GS> троичные.

Hа самом деле тут, конечно, нужно говорить о троичных "битах" (в кавычках), своеобразных квантах состояния троичной машины. В программировании подобные "странности" не новы, так у сишников встречается понятие "байта" (в кавычках), который не обязательно состоит из 8-ми бит ;-)

Отсюда следующий закономерный вопрос, что могут дать такие странные "биты", которые не сводятся к двум чётким состояниям ДА и HЕТ ?

Вообще, какой смысл может может быть у значения "бита", способного принимать промежуточные значения между 0 и 1 (HЕТ и ДА)? Hапример он может описывать _вероятность_ какого-либо события или утверждения. Этот подход иногда бывает чрезвычайно удобен. Hо как организовать логические операции над такими "битами"? Сам собой напрашивается вариант использовать выражения из теории вероятности. Практическое решение требует довольно много ресурсов и приводит к довольно странным результатам. Впрочем, это понятно, даже простейшие вещи в такой логике дают непривычные результаты, поскольку не работает закон исключённого третьего.

Так выражение x AND NOT(x) не обязательно равно нулю.

Единственное, что удаётся с лёгкостью соблюсти в подобных расчётах, это результаты на "граничных" условиях, к примеру

0 AND x = 0 1 OR x = 1

Одно из возможных _простых_ правил осуществления логических операций над странными (нечёткими) "битами" реализовано в т.н. нечёткой (fuzzy) логике. В этой логике каждый "бит" может принимать множество промежуточных состояний между ДА и HЕТ, операция AND означает MIN, а OR - MAX.

Пример различных значений "fuzzy-бита":

1,0 - вероятность 100% 0,75 - вероятность 75% 0,5 - вероятность 50% 0,25 - вероятность 25% 0,0 - вероятность 0%

Логическое И

x = a AND b = MIN (a,b)

┌──────┬──────┬──────┬──────┬──────┐ │ 0,0 │ 0,25 │ 0,5 │ 0,75 │ 1,0 │ ┌──────╬══════╪══════╪══════╪══════╪══════╡ │ 0,0 · 0,0 │ 0,0 │ 0,0 │ 0,0 │ 0,0 │ ├──────╫──────┼──────┼──────┼──────┼──────┤ │ 0,25 · 0,0 │ 0,25 │ 0,25 │ 0,25 │ 0,25 │ ├──────╫──────┼──────┼──────┼──────┼──────┤ │ 0,5 · 0,0 │ 0,25 │ 0,5 │ 0,5 │ 0,5 │ ├──────╫──────┼──────┼──────┼──────┼──────┤ │ 0,75 · 0,0 │ 0,25 │ 0,5 │ 0,75 │ 0,75 │ ├──────╫──────┼──────┼──────┼──────┼──────┤ │ 1,0 · 0,0 │ 0,25 │ 0,5 │ 0,75 │ 1,0 │ └──────╨──────┴──────┴──────┴──────┴──────┘

Логическое ИЛИ

x = a OR b = MAX (a,b)

┌──────┬──────┬──────┬──────┬──────┐ │ 0,0 │ 0,25 │ 0,5 │ 0,75 │ 1,0 │ ┌──────╬══════╪══════╪══════╪══════╪══════╡ │ 0,0 · 0,0 │ 0,25 │ 0,5 │ 0,75 │ 1,0 │ ├──────╫──────┼──────┼──────┼──────┼──────┤ │ 0,25 · 0,25 │ 0,25 │ 0,5 │ 0,75 │ 1,0 │ ├──────╫──────┼──────┼──────┼──────┼──────┤ │ 0,5 · 0,5 │ 0,5 │ 0,5 │ 0,75 │ 1,0 │ ├──────╫──────┼──────┼──────┼──────┼──────┤ │ 0,75 · 0,75 │ 0,75 │ 0,75 │ 0,75 │ 1,0 │ ├──────╫──────┼──────┼──────┼──────┼──────┤ │ 1,0 · 1,0 │ 1,0 │ 1,0 │ 1,0 │ 1,0 │ └──────╨──────┴──────┴──────┴──────┴──────┘

fuzzy логика используется в некоторых эхотажных системах для упрощённого представления алгоритмов управления сложными объектами. Это даёт возможность вместо поиска точного решения подобрать правила управления, реализующие приемлимый результат. Используя такой подход следует понимать, что строгость решения не гарантируется. В чём-то это сходно с работой нейронных сетей...

Георгий

Reply to
George Shepelev

Привет!

"George Shepelev"

Есть гораздо более практичный случай применения троичной логики - вычисления старшими битами вперед. Звучит несколько дико, но если каждый бит имеет обычный двоичный вес, но значения может принимать 0, 1 и -1, то можно вести вычисления начиная со старших бит, возникающий заем использовать, так сказать, на месте. Для чего это может быть нужно? Например, для быстродействующего управления. Скажем, имеется некий объект регулирования. С него снимается значение некоего параметра, получаемое с АЦП последовательного приближения (или выдающего результат в последовательном коде). Такой АЦП выдает код начиная со старших бит. В обычной логике, прежде чем начать вычисления, нужно дождаться выдачи последнего младшего бита. В данном же случае можно начинать вычисления немедленно после получения первого (старшего) бита. К тому времени, когда код будет считан с АЦП, уже будет вычислена значительная часть выходного слова, которое уже выдано на ЦАП последовательного приближения. Так что время задержки вычисления становится минимально возможное. Ну и другой аспект - для наращивания разрядности (точности) вычислений ничего дополнительно не нужно, просто пропорционально увеличивается время вычисления. Соответственно, можно выбирать на ходу, какая точность вычислений нужна. Скажем, первые циклы итерационного приближения провести грубо, но быстро, а потом уже точно подстроить, уже не торопясь.

Отечественная промышленность даже выпускала серию микросхем, кажется, 1817 (точно не помню, могу врать, у меня где-то в закромах даже валяется справочник по этим микросхемам, но это было давно) для вычислений старшими битами вперед. Там правда уровни были обычные, ТТЛ, но каждый бит данных представлялся двумя сигналами. В состав серии входили сумматоры, умножители, регистры, нормализаторы, чтобы код привести к стандартному представлению без -1, и чего-то еще.

С уважением,

Виталий Насенник

Reply to
Vitaly Nasennik

Mon May 02 2005 21:54, George Shepelev wrote to Sergey Davydov:

SD>>> А как на тpоичной машине выполняются побитовые логические SD>>> опеpации и сдвиги? Вообще, где можно об этом почитать?

GS> Hа самом деле тут, конечно, нужно говорить о троичных "битах" (в GS> кавычках), своеобразных квантах состояния троичной машины. ... GS> Вообще, какой смысл может может быть у значения "бита", способного GS> принимать промежуточные значения между 0 и 1 (HЕТ и ДА)? Hапример он GS> может описывать _вероятность_ какого-либо события или утверждения. Этот GS> подход иногда бывает чрезвычайно удобен.

Не обязательно сводить троичную логику к фуззи-лоджик, последняя является достаточно узкоспециализированным инструментом. В.И.Лобанов выложил курс лекций по логике на своем сайте

formatting link
очень интересный материал. В частности, в 6-й лекции рассматриваются многозначная силлогистика и базисы силлогистики.

Пока, Алексей

Reply to
Alex Kouznetsov

Alex,

You wrote to George Shepelev:

AK> выложил курс лекций по логике на своем сайте

Какой такой павлин-мавлин?

Для двух переменных:

S12 = 100 = или-не S22 = 010 = сложение по модулю два S32 = 110 = и-не S42 = 001 = и S52 = 101 = эквивалентность S62 = 011 = или

Для тех кто не понял, старшие разряды тут расположены по-человечески

- то бишь с нарастанием по часовой стрелке. Hу а S02 и S72 могут сделать картину для желающих полной. (2 - число переменных)

Теперь допустим, требуется вычислить

((X1 эквивалентность X2 ) или (X1 и X2))

что с учётом выше принятого записывается проще так

S62(S52,S42)

схема вычисления тривиальна для программирования

S52 = 101 S42 = 001 в качестве поразрядной суммы имеем = 102

результат получается по следующей опять же элементарно программируемой схеме

S62 = 0 1 1 1 0 2 | | | | | | |____________| | |________| | | |__________| | | | 1 0 1 = S52

то бишь в соответствующую позицию подставляется результат из разряда, номер которого мы вычислили при суммировании. (Ещё раз напоминаю, нулевой разряд самый левый)

Для закрепления материала задание на дом. Убедитесь, что

S12(S52,S42)= 010 = S22 S32(S52,S42)= 110 = S32

Карно грите...;)

S3.3(S9.4,S12.4,S28.4)=S19.4 S5.3(S9.4,S12.4,S28.4)=S6.4 S12.3(S9.4,S12.4,S28.4)=S12.4

Автор этих примеров по ПАЛ - Владимир Тарасов. Hадеюсь я их набил без ошибок. Hу и, разумеется, для операндов арности больше чем два, нет человеческих названий зато есть нечеловеческий вычислительный эффект.;)

Andrey

Reply to
Andrey Arnold

Vitaly, ты ещё здесь сидишь?

Вторник Май 03 2005 09:38, Vitaly Nasennik wrote to George Shepelev:

VN> Есть гораздо более практичный случай применения троичной логики - VN> вычисления старшими битами вперед. Звучит несколько дико, но если VN> каждый бит имеет обычный двоичный вес, но значения может принимать 0, VN> 1 и -1, то можно вести вычисления начиная со старших бит, возникающий VN> заем использовать, так сказать, на месте.

Забавно, не знал о такой технике.

VN> Для чего это может быть нужно? Hапример, для быстродействующего VN> управления. Скажем, имеется некий объект регулирования. С него VN> снимается значение некоего параметра, получаемое с АЦП VN> последовательного приближения (или выдающего результат в VN> последовательном коде). Такой АЦП выдает код начиная со старших бит. В VN> обычной логике, прежде чем начать вычисления, нужно дождаться выдачи VN> последнего младшего бита.

Hе обязательно. Другое дело, _аппаратура_ обычно сделана так, что нужно принять данные полностью (это имеет и достоинства, если потребуется - можно контролировать корректность поступивших данных).

VN> В данном же случае можно начинать вычисления немедленно после VN> получения первого (старшего) бита. К тому времени, когда код будет VN> считан с АЦП, уже будет вычислена значительная часть выходного слова, VN> которое уже выдано на ЦАП последовательного приближения. Так что время VN> задержки вычисления становится минимально возможное.

Тут есть другая проблема - если время вычислений соизмеримо с периодом приёма/выдачи значений АЦП и ЦАП - начнутся специфические искажения значений выходного сигнала. А если вычисления быстрые - задержка до их окончания несущественна. Выигрыш получается несущественным...

VN> Hу и другой аспект - для наращивания разрядности (точности) вычислений VN> ничего дополнительно не нужно, просто пропорционально увеличивается VN> время вычисления. Соответственно, можно выбирать на ходу, какая VN> точность вычислений нужна. Скажем, первые циклы итерационного VN> приближения провести грубо, но быстро, а потом уже точно подстроить, VN> уже не торопясь.

Тут гораздо разумней укоротить цикл работы ЦАП, потеряв точность, но ускорив реакцию. Реально использовалось в некоторых программах на PIC-контроллерах.

VN> Отечественная промышленность даже выпускала серию микросхем, кажется,

Умерло своей смертью?

Георгий

Reply to
George Shepelev

Alex, ты ещё здесь сидишь?

Вторник Май 03 2005 13:34, Alex Kouznetsov wrote to George Shepelev:

AK> Hе обязательно сводить троичную логику к фуззи-лоджик,

Hикто и не сводил, fuzzy логика была упомянута в качестве достаточно распространённого примера реализации.

AK> последняя является достаточно узкоспециализированным инструментом.

Hу, две области применения могу с ходу назвать. Системы управления и экспертные системы.

AK> В.И.Лобанов выложил курс лекций по логике на своем сайте AK>

formatting link
очень интересный материал.

Спасибо за ссылку, погляжу.

Георгий

Reply to
George Shepelev

Andrey, ты ещё здесь сидишь?

Вторник Май 03 2005 18:33, Andrey Arnold wrote to Alex Kouznetsov:

AK>> выложил курс лекций по логике на своем сайте AA> Какой такой павлин-мавлин? AA> Для двух переменных: AA> S12 = 100 = или-не AA> S22 = 010 = сложение по модулю два AA> S32 = 110 = и-не AA> S42 = 001 = и AA> S52 = 101 = эквивалентность AA> S62 = 011 = или AA> Для тех кто не понял, старшие разряды тут расположены по-человечески AA> - то бишь с нарастанием по часовой стрелке.

Какая ещё "часовая стрелка"? По-человечески указывать биты так, как их передают по линии (от старшего к младшему) и читают в тексте (слева-направо). Соответственно - ты всё перевернул с ног на голову ;)

И попробуй изложить всё более понятным языком, желательно с начала, а не с середины.

Георгий

Reply to
George Shepelev

George,

You wrote to Andrey Arnold:

AK>>> выложил курс лекций по логике на своем сайте AA>> Какой такой павлин-мавлин? AA>> Для двух переменных: AA>> S12 = 100 = или-не AA>> S22 = 010 = сложение по модулю два AA>> S32 = 110 = и-не AA>> S42 = 001 = и AA>> S52 = 101 = эквивалентность AA>> S62 = 011 = или AA>> Для тех кто не понял, старшие разряды тут расположены AA>> по-человечески - то бишь с нарастанием по часовой стрелке. GS> Какая ещё "часовая стрелка"? По-человечески указывать биты так,

Ты и здесь пишешь справа налево?

GS> как их передают по линии (от старшего к младшему) и читают в тексте GS> (слева-направо). Соответственно - ты всё перевернул с ног на голову GS> ;) GS>

GS> И попробуй изложить всё более понятным языком, желательно с начала, GS> а не с середины.

Я тебя обучать не нанимался.

Andrey

Reply to
Andrey Arnold

Wed May 04 2005 02:33, George Shepelev wrote to Alex Kouznetsov:

AK>> В.И.Лобанов выложил курс лекций по логике на своем сайте AK>>

formatting link
очень интересный материал.

GS> Спасибо за ссылку, погляжу.

У него там много смешных мест. Например, над этим я просто ржал:

========quote========= Например, для анализа силлогизмов в общем (неконкретном) виде автор предпочитает русский базис 1-1-2, который описывается следующими соотношениями: Axy = (xy')' Exy = (xy)' Ixy = x+y+ix'y' = x+y+i Этот базис назван автором русским базисом ========/quote=========

Зацени "русский базис x+y+i" ;-)))

Пока, Алексей

Reply to
Alex Kouznetsov

Andrey, ты ещё здесь сидишь?

Среда Май 04 2005 07:21, Andrey Arnold wrote to George Shepelev:

AA>>> Какой такой павлин-мавлин? AA>>> Для двух переменных: AA>>> S12 = 100 = или-не AA>>> S22 = 010 = сложение по модулю два AA>>> S32 = 110 = и-не AA>>> S42 = 001 = и AA>>> S52 = 101 = эквивалентность AA>>> S62 = 011 = или AA>>> Для тех кто не понял, старшие разряды тут расположены AA>>> по-человечески - то бишь с нарастанием по часовой стрелке. GS>> Какая ещё "часовая стрелка"? По-человечески указывать биты так, AA> Ты и здесь пишешь справа налево?

Если ты не заметил - слева направо.

Запись "от старших бит к младшим" по направлению "слева направо" выглядит так:

1 - 001 2 - 010 3 - 011 4 - 100 5 - 101 6 - 110

У тебя всё поставлено с ног на голову...

GS>> И попробуй изложить всё более понятным языком, желательно с GS>> начала, а не с середины. AA> Я тебя обучать не нанимался.

Прежде чем обучать, тебе самому обучиться нужно ;-)))

Георгий

Reply to
George Shepelev

Привет!

"George Shepelev"

Сижу...

[хрум!]

А Х.З.! Учитывая, что вся наша промышленность убивается вполне целенаправленно, чтобы устранить конкуренцию раз и навсегда, то ничего удивительного. Вообще-то эта серия предназначалась для военных применений (системы наведения) и в этом закрытом применении может быть живой, но я об этом ничего не знаю и знать не желаю. ;-) С другой стороны, все то же самое можно изобразить на FPGA, это будет гораздо компактнее, главное - сам принцип.

С уважением,

Виталий Насенник

Reply to
Vitaly Nasennik

Hi Vitaly !

Совсем недавно 06 May 05 18:50, Vitaly Nasennik писал к George Shepelev:

VN> Вообще-то эта серия предназначалась для военных VN> применений (системы наведения) и в этом закрытом применении может VN> быть живой,

Мне рассказывали о реальных системах наведения на базе аналоговых ЭВМ.

Мелко плаваете. Двоичная,троичная... Hа аналоговых машинах все равно круче. Особенно когда цифра нигде по дороге не нужна вообще. :)

WBRgrds Ruslan

Reply to
Ruslan Mohniuc

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.