Троичный компутер. Алиса в стране чудес.

Тема в разделе "WASM.ZEN", создана пользователем Dimaska, 3 дек 2004.

  1. Dimaska

    Dimaska New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2004
    Сообщения:
    21
    Адрес:
    Russia
    Недавно наткнулся на интересную статью:



    http://www.computery.ru/upgrade/numbers/2004/175/history_175.htm



    Интервью с создателем троичной ЭВМ. Сетунь называлась. Наш соотечественник сделал такую в 50-х годах еще. Почему три? Один бит для положительных чисел, один для отрицательных и один для нолика. Была выпущена небольшая партия. Хм, все работало...

    Цитата:



    "Когда Дейкстра выступил с идеей структурного программирования, мы увидели, что сделали машину как раз для реализации его идеи. Программирование на "Сетунь-70" было даже не структурированное, а структурирующее. Программы получались легко читаемыми и осваиваемыми, легко модифицированными. Главное, что программы не подвергались отладке, а делалась так называемая контрольная сборка. После того как программу сверху вниз написали, ее проходили снизу вверх. В хороших КБ всегда так делается - типичный конструкторский прием. После этого программа оказывается, как правило, безошибочной. Позднее "Сетунь-70" была эмулирована на двоичных машинах в форме диалоговой системы структурного программирования ДССП."



    Меня самого такие факты наводят на мысль - а есть ли истина в точных науках, когда возможны такие радикальные альтернативные пути? И уместно-ли вообще выражение -

    точные науки? IMHO занятно.
     
  2. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Просто подкину несколько ссылок по теме:



    hттp://www.computer-museum.ru/histussr/12.htm

    hттp://www.hardnsoft.ru/magazine.php?issue=108&article=613

    hттp://college.biysk.secna.ru/muskomp/setun.htm

    hттp://www.icfcst.kiev.ua/SYMPOSIUM/Proceedings/Brusentsov.doc
     
  3. Dimaska

    Dimaska New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2004
    Сообщения:
    21
    Адрес:
    Russia
    captain cobalt:

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



    himself:

    "Почему три? Один бит..."

    Каламбур получился. В троичной арифметике используются триты.

    Наверное будет лучше сказать: "одна сущность для положительных чисел, одна для..." :)



    Господи, ну почему РОЛ так тормозит, а? :dntknw:((((
     
  4. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    в форте есть переменная BASE, так вот туда можно записать любое число, в том числе и 3, и баловаться в троичной системе. когда я писал форт (для 580ВМ80), то разрешил все символы латинского алфавита, те, теоретически мог пользоваться 10+26=36-ричной системой, но я пробовал только 17-ричную (просто интересно было ;)
     
  5. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Наиболее поразителен следующий факт:



    В i8008-derived архитектурах, в том числе IA32 есть четыре флага:

    -- нуля

    -- переноса

    -- знака

    -- переполнения



    Такое их количество объясняется существованием разных в форматов для знаковых и беззнаковых чисел.



    В "Сетунь" числа всегда знаковые и функции всех вышеперечисленных флагов с успехом выполняет один троичный флаг (обозначаемый ω).
     
  6. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    если в сетуни есть умножение, то переполнение тоже должно быть. в 8080 не было умножения, и переполнения тоже не было, так как сложением/вычитанием нельзя переполнить больше чем на один бит (который попадает в перенос)



    а если числа всегда знаковые, то это сужает их диапазон, так как в некоторых задачах все числа натуральные, а разрядов вечно не хватает.



    но от троичной системы веет конечно чем-то таинственным ;)
     
  7. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Переполнение возникает при сложении / вычитании знаковых чисел.

    Флаг назывался Parity/Overflow (P/V). для операций типа add/sub - overflow, or/and - parity.
     
  8. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    Читал математическое доказательство, что троичная система самая компактная. Книжка "Системы счисления"
     
  9. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine


    это в сетуни?

    в 8080 я такого не помню (может в Z80, но я на нем не успел повышивать, и я слышал в некоторых клонах также было умножение, но без переполнения - 8-битные исходные и 16-битный результат)

    помню только 5 флагов - ноль, знак, перенос/заем, частичный перенос (для даа ;) и четность.



    доб: а если OF у х86, то почему "назывался"?
     
  10. Dimaska

    Dimaska New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2004
    Сообщения:
    21
    Адрес:
    Russia
    Shoo:

    >"если в сетуни есть умножение, то переполнение тоже должно быть..."



    Товарищи, если создатель говорит, программы получаются безошибочние, то это воистину Дзен! Да нет, вроде, я конечно могу ошибаться, но переполнение происходит не из-за умножения, правда с асмом я незнаю как быть:



    "В старых языках программирования (фортран и т.п.) при обращении к элементам массива компилятор, как правило, не предусматривает проверок, выходит ли индекс за границы массива. В другом старом языке — C, где с массивами можно работать с помощью указателей — подобные проверки вообще могут быть невозможны. В таких условиях, если происходит ошибочное обращение к несуществующим элементам массива, то программа просто считывает содержимое ячеек памяти, никакого отношения к данному массиву не имеющих, либо записывает туда какую-то информацию, портя содержимое других переменных, возможно, в других программах, и затем продолжает свою работу, уже скорее всего бессмыссленную.

    Когда было обнаружено, насколько велика доля ошибок, связаных с выходом за границы массивов, в компиляторы стали добавлять возможность включать в код проверку индексов на предмет выхода за границы массива. Но это обычно делается, только если компилятор работает в специальном "отладочном" режиме."



    Т.е. в продвинутых высокоуровневых языках такой проблемы вообще нет!

    Взято отсюда:

    http://www.inr.ac.ru/~info21/blackbox/disciplina/arr_bounds_checks.htm



    >"в форте есть переменная BASE, так вот туда можно записать любое число, в том числе и 3, и баловаться в троичной системе"



    А ты уверен что баловался именно в троичной систем?

    Исли я не прав, то заранее извиняюсь, но ты кажется работал с 17-ю битами. А в сетуни используются имено триты. Это уже не Булева логика. В троичной машине действуют совершенно отличные от привычной математики законы. И если ты так запросто мог баловаться с троичной логикой - то ты просто гений в своей области я снимаю перед тобой шляпу.



    >"а если числа всегда знаковые, то это сужает их диапазон..."

    Мы имем дело не с битами, а триты позволяют меньшим их количеством кодировать числа - диапазон на самом деле расширяется. Или 2^32 или 3^32 - есть разница?

    Для построения троичной машины потребовалось в несколько раз меньше логический элементов при равной вычислительной мощности с двоичной.



    Да уж, таинственног там столько, что аж дух захватывает...
     
  11. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    Dimaska

    1.ну, я ваще имел ввиду исключительно асм, а точнее даже не асм, а работу процессора. мне известна команда bound в х86, но я не видел, чтобы ею пользовались, тк она вызывает прерывание.

    2.у меня нет специального математического образования, но баловался я в разных системах. например, если в base записать +3, а потом сделать 2 2 + ., то машина писала мне 11. это в какой системе, если не в троичной? а то что это число хранилось как 0000000000000100b - это и так понятно, ведь я ж не на сетуни баловался. а вот в 17-ричной системе больше нигде не побалуешься, так как известные мне форт-системы не позволяли использовать для цифр символы больше F, а в моем форте я позволил до Z. то есть, можно было записать в base 36, тогда ZZ было бы 36*35+35=(много)

    3.насчет одно трита на все флаги - тут нужно поприкидывать - пока для меня это слишком абстрактно, может, похожу по твоим ссылкам.

    4.а насчет того что меньше логических элементов - так зато элементы сами сложнее. это то троичную логику и погубило, как и то, что она нечетная.
     
  12. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    да, кстати о тритах - я вроде слышал, что пол. импенданс - 1, отрицат - -1, а 0 - 0, а ты что-то говоришь о трех битах. ну щас уже не разберусь, тк у нас кон раб дня :lol:
     
  13. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine


    я имел ввиду системы с осн. больше 16, так как далее начинался конфликт со встроенными словами, тк в форте число не обязано начинаться с нуля (ну по край мере те что я видел)
     
  14. Gleber

    Gleber New Member

    Публикаций:
    0
    Регистрация:
    30 сен 2004
    Сообщения:
    13
    Полазил я по этим страничкам (+ google, + яндекс), вот только не нашёл ешё ничего чётко описывающего троичную логику (прежде всего операции). Не могли бы вы ссылочку подбросить об этом?
     
  15. Gleber

    Gleber New Member

    Публикаций:
    0
    Регистрация:
    30 сен 2004
    Сообщения:
    13
    Ага, вот ещё тема на Васме где троичная логика обсуждалсь:

    http://www.wasm.ru/forum/index.php?action=vthread&topic=2416&forum=10&page=-1



    Хмм... а может бы сделать эмулятор Сетуни ? :) Частичное его описание есть на одной из страничек... Написали же Гатес и Алан эмулятор компа, которого никогда не видели :)
     
  16. Dimaska

    Dimaska New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2004
    Сообщения:
    21
    Адрес:
    Russia
    Gleber:

    Так ведь уже был сделан эмулятор для микрокомпутеров, называлось это - Диалоговая система структурированного программирования. Была сделана в 1980-1982 гг. Для наших ДВК'шек.

    Вот ссылка на нее:

    http://www.computer-museum.ru/histsoft/dssp.htm



    >"...вот только не нашёл ешё ничего чётко описывающего троичную логику (прежде всего операции)"

    А ты думаешь зачем я Алису в теме упомянул?

    Льюис Кэролл в 25 лет стал магистром математики. Странные он сказки пишет, правда? Все его работы были из области логики - троичной, вот только понять их - эта та еще, задачка :)



    Еще у Дейкстры что-то есть что-то по этому поводу, только что скачал, буду смотреть...



    Я уже налазился по яндексу - материала хватает, прочитатать бы это все, да и еще понять...



    shoo:

    >"у меня нет специального математического образования"

    А мне так математика буквально с детсва не давалась... :dntknw:

    Единственная тройка в аттестате.



    >"... так зато элементы сами сложнее. это то троичную логику и погубило, как и то, что она нечетная."



    Вообще-то Брусенцов писал что можно на современных интегральных схемах сделать троичный вентиль, только деталей я не понял, может у тебя получится?



    Элементы то сложнее, как и сама троичная логика, только с друго стороны эта логика ближе человеческому мышлению, понять ее легче.

    Для первой версии Сетунчика даже ассемблер придумывать не стали, мол и так, троичный код очень нагляден. Гуманитарии прогаммы составляли на нем. Нонсенс...



    Еще у того способа которым программы безглючые делали есть интересная связь в фортом, потом распишу, когда обмозгую эту мысль до конца.
     
  17. Gleber

    Gleber New Member

    Публикаций:
    0
    Регистрация:
    30 сен 2004
    Сообщения:
    13
    Всётаки нашёл я что-то подходяшее : http://www.aymara.org/ternary/ternary.pdf

    Основы там прописаны...



    Dimaska, я имел в виду эмулятор на нашы PC, под виндой или линухом - пофиг, а просто чтобы разобраться с троичной логикой и такими же компьютерами на практике :) Авось что-то интересное из этого выйдет.
     
  18. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    >в форте есть переменная BASE, так вот туда можно записать любое число, в том числе и 3, и баловаться в троичной системе. когда я писал форт (для 580ВМ80), то разрешил все символы латинского алфавита, те, теоретически мог пользоваться 10+26=36-ричной системой, но я пробовал только 17-ричную (просто интересно было ;)





    В Форте значение BASE влияет только на операции ввода-вывода и на исполнение слов, выполняемых в режиме интерпретации. А так все переменные хранятся как обычные двухбайтные (в оригинале) или четырехбайтные (в современных версиях) значения. И значения там используются из интервала [0..2], а не [-1..1]. Так что это совсем другая история.
     
  19. Narkomanius

    Narkomanius New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2003
    Сообщения:
    144
    офигенное усложнение кстати - 4 транзистора на инвертор, вместо двух.

    для ядра проца еще ничо, но вот кэш!!!!

    вместо 256Кб - будет даже не 128, так как емкость удваивается, а время експонента. 64К L2+ 8-4K L1 = жестоко будет.
     
  20. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    shoo >




    Вот я про него и говорю. Чётность - для команд or, and, xor

    Для команд сложения и вычитания он работал как флаг переполнения. И в зилоге, и в 8080.



    Ещё 6й флаг - N - флаг сложения/вычитания, он использовался неявно командой daa, т.к её действия различны после сложения и вычитания. Почему-то на IA-32 от этого флага отказались, и сделали отдельные инструкции daa / das.