1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

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

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

  1. shoo

    shoo New Member

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

    я на выходных память освежал ;) в обоих процах - Z80 и 8080 - по пять флагов. действительно, в Z80 бит четности так себя ведет - при лог операциях - четность, при арифм - переполнение, но в 8080 он всегда показывает только четность (я даже проверил на всякий случай на "кирпичном" INS8080AM). конечно, лучше бы Zylog новый флаг ввели, но тогда бы им пришлось с десяток новых условных переходов ввести, вот они и пожадничали ;) а DAA команда есть в них, нет DAS, AAA и AAS. при вычитании тоже DAA использовали, только нужно было деватки прибавлять (точно не помню). и в IA32 есть флаг N, только он называется AF и как раз этими DAA и DAS и используется.



    Dimaska

    не мучайся с эмуляцией! если ты хочешь записывать числа в троичной системе - любая форт-система это позволит - привожу скрин-шот из страны чудес. (эту страну можно скачать из хипа из темы "славянский вопрос", только под хр/2000 нужно дополнительно кейрус использовать. она хреново отдокументирована, но если поступит хоть одна просьба - отдокументирую: времени ваще голяк). эмуляция ухудшит производительность в 10-100 раз, то есть, основания для хранения чисел в троичном виде должны быть велики. хотя, попробовать можно, но и подводных камней тут много: например, вдруг в таком трите окажется комбинация 11?

    ну, и неск. мыслей за выходные:



    по поводу экзотики: нам в школе на информатике рассказывали и про троичную логику, и про эту машину, и, по-моему, говорили "есть", а не "была" (точно не помню - 1985/86 уч год был, я тогда был еще пионэром). в 80-е годы троичные сигналы применяли некоторые фирмы для управления светодиодными матрицами, именно с целью уменьшения соед. линий.



    по поводу программ без ошибок: сказано уже много...



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

    [​IMG] _1414546159__ALISA.gif
     
  2. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    а насчет 0..2 - это логические названия уровней, а уровни электрически были -Uпит, 0 и +Uпит. это уже кому как нравится.

    например, в сериях 172 и 145 0: 0 вольт, а 1: -27 вольт. можно сделать и десятиричный логический элемент - вообще идеал для нашей привычной системы счисления, однако представляю его сложность и надежность.
     
  3. S_T_A_S_

    S_T_A_S_ New Member

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




    Вот регистр F Z80. видно, что флагов 6:

    <font face="monospace]
    Код (Text):
    1.  
    2. 7  6  5  4  3  2   1  0
    3. S  Z  -  H  - P/V  N  C
    </font><!--face-->

    По i8080 мне что-то лень доку искать, но думаю, что если бы в зилоге изменили поведение флага P после некоторых операций, то совместимость бы пропала. Однако, совместимость была (просто в зилоге добавили "немного" новых команд + регистры).

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



    А что такое "кирпичный" INS8080AM ?



    >




    AF - это флаг полупереноса, его эквивалент выше называется H.

    N - это признак, что предыдущая арифметическая команда - вычитание.

    Анализируя этот флаг, можно "объединить" инструкции daa и das в одну инструкцию, результат работы которой зависит от состояния флага.
     
  4. shoo

    shoo New Member

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

    понял. у меня таже ситуация с Z80 - я на нем никогда не работал, только читал о нем (когда пришло время выбирать - выбрал 386). но все равно, ностальгия бывает по той технике.



    я имел в виду, что не на эмуляторе - у меня на балконе несут боевое дежурство Р100 без винта и "Специалист". на эмуляторе можно наколоться, правда, нашему процу я бы доверил больше - его делали не по лицензии, а содрали послойно (вроде бы), но перетыкать не хотелось ;)
     
  5. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.755
    Т.е. INS8080AM - это оригинальный, не какой-нить КР580ВМ80 ?

    Гы, когда передирали зилог "немного" накосячили - проц не был полностью совместимым
     
  6. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    дело в том, что те компы, которые я собирал, конечно, работали, но выглядели :D :D :D как компы, которые собрал студент мединститута ;) поэтому они лежат в коробке в гараже, а этот я выменял на старый ЕГА монитор и в нем оказался такой вот проц.

    а поведение флага Р в зилоге все-таки изменили - это я внимательней глянул. дока по 8080 - в х86 младший байт флагов один в один соотв. флагам 8080 (у последнего тоже не было N, а интел совмещала х86 со своим процом, а не с зилогом)
     
  7. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.755
    Гм.. век живи, век учись и дураком помрёшь =)



    ЗЫ: я знаю, как выглядят те компы, которые лежат в гараже :D
     
  8. Narkomanius

    Narkomanius New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2003
    Сообщения:
    144
    поприкидывал устройство троичного компутера... не катит.



    для начала один трит стоит около 1.5 бита, но транзисторов на рыло требует вдвое больше, и к тому же сложнее - подложки у транзисторов нужно делать не только заземленными, а еще и запитаными на +U или -U



    так например, +U и -U можно использовать по назначению - они спокойно перебросят КМОП-транзистор, но что делать с 0 вольт? тут можно только включить последовательно 2 транзистора p и n типов, но тогда или подлжку надо подключать к питанию, причем для p к плюсу а для для n к минусу, что значит расположение транзисторов в разных слоях, а такое удовольствие сложно и медленно(длинные провода), либо использовать два транзистора в индуцированным каналом, тогдав подложка на земле, а один транзистор закроется при + другой при -.



    но это значит 4 транзистора на инвертор против 2х, чуть сложнее схема "и" и "или" - 10 транзисторов против 4х.

    но более важна входная емкость - 4C для инвертора и 5C для других элементов.

    плюс выходное сопротивление около 2R для инвертора при 0 на входе, и 3R для остальных. у двоичных 2R max. R-сопротивление открытого транзистора, C - емкость от затвора до подложки.



    время перезарядки кондера пропорционально Uпит*exp(-t/RC)

    для троичного проца будет exp(-4t/15RC), если положить что на момент t0 заряд поднимется до напряжения открытия транзистора Uп, то мы получим

    Uп=Uпит*exp(-t0/RC)=Uпит*exp(-4*t1/15*RC)

    -t0/RC=-4*t1/15*RC

    15*t0/4=t1

    частота на том же напряжении будет ниже в 4(!!!) раза.

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

    грубо говоря 3ичный проц с частотой максимум 800мгц(3200 для двоичных, плюс аццкий прогрев при этом!!), с кэшем вместимостью 6*1.558/10=0.978 от аналогичного по колву транзисторов двоичного кэша...

    а ПАМЯТЬ как собираетесь подключать? на 64битной шине можно использовать 40 тритов, плюс потери порядка 5% от емкости памяти, и хитрая схема кодера/декодера - нельзя просто переводить число из 2ичной в троичную систему - накладно.

    короче на транзисторах выглядит все очень отстойно
     
  9. Narkomanius

    Narkomanius New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2003
    Сообщения:
    144
    даже вот так- в наших условиях без помощи интела и амд частота проца будет около 300 мгц, ну если постараться 600 максимум. в перещете в двоичные - 900. если сделать как я придумал - 4 ядра с общими регистрами, которые блокируются, и распаралеливание по call\ret - максимум

    1200 mips. для двоичных данных - 4800mips.

    конечно ядра будут меньше - 21 трит круче 32бит, но лучше юзать 20, так как шина на 64 бита больше 40 тритов но меньше 41.



    про кэш я наврал, можно сделать аж на 4 транзисторах, ведь выбрана в одни момент 1 ячейка, если вход неинвертирующего усилителя подключить через два ключа - один к выходу другой к шине.. +- за щет питания, опускание к 0 за щет шины и выходов контроллера кэша. соответственно строка кэша в 8 слов будет равна 160 тритов, в кеше на 32Кб строк по 32 байта будет 1024, соответственно поимеем 160*1024/*1.558=31,7Кб 127628 транзисторов, против по аналогичной схеме (4 транзистора на ячейку) 131072 - кэши примерно равны. остается только частота, которая ниже в 4 раза. стоит ли оно того?
     
  10. Narkomanius

    Narkomanius New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2003
    Сообщения:
    144
    и в догонку - тепловыделение пропорционально энергии конденсаторчиков в транзисторах, а она (C*U^2)/2.

    а теперь внимание! если заряженый до +U кондер подключить к -U = при перключении входа с 2 на 0 например = мы получим в 4раза большее тепловыделение, щитая вероятность всех переключений равной



    мы получим 4W в двух случаях(0->2 2->0) и W в оставшихся 4х. среднее (4*2+4)/6=12/6= тепловыделение выростет вдвое!!!
     
  11. Gleber

    Gleber New Member

    Публикаций:
    0
    Регистрация:
    30 сен 2004
    Сообщения:
    13
    Вывод: пора придумывать что-то более подходящее для этой задачи, чем транзисторы :D
     
  12. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
  13. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    может кто-то объяснить вот эту фразу Бруснецова:



    >>"Н. Б.: А что значит трехзначная логика? Знак числа - это какая функция? Трехзначная! Число может быть положительным, отрицательным, а может быть равным нулю.



    я не пойму - при чем здесь знак числа к кол-ву состояний единицы информации (в данном случае трита)?
     
  14. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Мало того, что двоичный код более избыточен, чем троичный для хранения, обработки и передачи информации. Так ещё некоторые двоичные процессоры имеют флаги знака и нуля, которые никогда не могут в результате арифметической\логической операции принять значения S=1 и Z=1 - безусловная избыточность кодирования. ;)
     
  15. Narkomanius

    Narkomanius New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2003
    Сообщения:
    144
    йпт. ВСЕ ДЕЛО В СТОИМОСТИ и ОХЛАЖДЕНИИ! а то бы и 5ричный комп заделали.
     
  16. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
  17. captain cobalt

    captain cobalt New Member

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

    shoo New Member

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

    в смысле математика и материальный мир. нарисуйте троичный регистр на любой элементной базе, и посмотрите: проще ли он будет, чем один или два двоичных.



    "Будем считать, что стоимость схемы с b состояниями пропорциональна b" - на каком основании? а почему не a^b?
     
  19. captain cobalt

    captain cobalt New Member

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

    Пусть кто-нибудь выскажет другие предположения, объяснит, почему они более обоснованны. Ну и, наконец, проделает те же самые вычисления и предъявит результат, какое основание системы счисления наиболее экономично. ;)
     
  20. shoo

    shoo New Member

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

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