Давайте думать над железкой (TRIADOR)

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

haqreu
Maniac
Posts: 318
Joined: 10 Mar 2017 05:30

Re: Давайте думать над железкой

Post by haqreu »

AlexanderZh wrote:Подумав, решил от себя добавить: достаточно будет переходов по состоянию флага, а больше вроде не надо.
Устанавливать/сбрасывать? По моему совсем не нужно. Переход больше-ноль-меньше за одну команду - (опять же, по моему) лишнее в данной реализации.
Ничего не понял. Как мне кажется, устанавливать флаги нужно при арифметических операциях (инкремент и сложение). А вот как делать ветвление всё же неясно. Shaos предлагал пропуск одной операции делать. Это пропустить-одну-команду-если-нулевой флаг? Если да, то какой именно флаг? Знака или переполнения?
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: Давайте думать над железкой

Post by jdigreze »

Условные пропуски - это из RISC. Позволяет иметь всего одну операндную команду безусловного перехода и несколько безоперандных команд пропуска, либо одну операндную команду безусловного перехода и одну операндную команду пропуска.

Как программист: для циклов удобно иметь флаг zero, т.е. досчитали до нуля - вывалились из цикла. Этот же флаг удобен для сравнения двух чисел, если A-B=0, то числа равны.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Давайте думать над железкой

Post by Lavr »

jdigreze wrote:для циклов удобно иметь флаг zero, т.е. досчитали до нуля - вывалились из цикла.
Этот же флаг удобен для сравнения двух чисел, если A-B=0, то числа равны.
Спорно. Я по жизни предпочитаю флаг С в циклах - "вывалиться за ноль с заёмом или переносом".
В жизни встречались ситуации когда в силу стечения непредвиденных факторов программа пропускает
флаг Z - тогда она уйдёт на второй цикл - совершенно не нужный, а по флагу С - этого не случится.

Смешно, но это сработало в совершенно дикой ситуации - когда мы тестировали ранние dll-модели
разработанного на форуме процессора для Proteus. :lol:
У меня циклы были по флагу С - поэтому работало всё четко - а тут выяснилось, что в модели
флаг Z выставляется не всегда правильно. :wink:
iLavr
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: Давайте думать над железкой

Post by jdigreze »

Lavr wrote:Спорно. Я по жизни предпочитаю флаг С в циклах - "вывалиться за ноль с заёмом или переносом".
В жизни встречались ситуации когда в силу стечения непредвиденных факторов программа пропускает
флаг Z - тогда она уйдёт на второй цикл - совершенно не нужный, а по флагу С - этого не случится.
Да, такое возможно, но и без флага Z проблематично работать.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Давайте думать над железкой

Post by Lavr »

jdigreze wrote:...но и без флага Z проблематично работать.
А вот пробабушка всея микропроцессоров - PDP-8 - без него как-то обходилась! :lol:
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Давайте думать над железкой

Post by Lavr »

AlexanderZh wrote:А не совмещаются ли флаги C и Z бинарные в один троичный?
Вот это - годная мысль! В троичном компьютере надо мыслить троично! :kruto:
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Давайте думать над железкой

Post by Lavr »

Но тем не менее, объединить C и Z в один троичный флаг вполне можно.
iLavr
haqreu
Maniac
Posts: 318
Joined: 10 Mar 2017 05:30

Re: Давайте думать над железкой

Post by haqreu »

А смысл? По знаку можно иметь три разных джампа - jump zero, jump positive, jump negative...
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: Давайте думать над железкой

Post by jdigreze »

Lavr wrote:
AlexanderZh wrote:А не совмещаются ли флаги C и Z бинарные в один троичный?
Вот это - годная мысль! В троичном компьютере надо мыслить троично! :kruto:
Да, действительно - здравая мысль!
haqreu wrote:А смысл? По знаку можно иметь три разных джампа - jump zero, jump positive, jump negative...
Джамп - не джамп, "пропуск" - "не пропуск", но если сделать "пропуск" с операндом, то, имхо, будет очень даже юзабельно. Этакий branch с операндом по выбранным позициям флагов.
haqreu
Maniac
Posts: 318
Joined: 10 Mar 2017 05:30

Re: Давайте думать над железкой

Post by haqreu »

Граждане, предлагайте, пожалуйста, конкретную реализации в рамках архитектуры :)
Расширенная команда операнда не предполагает, но можно его взять из аккумулятора. Как может выглядеть такой бранч?
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Давайте думать над железкой

Post by Lavr »

haqreu wrote:По знаку можно иметь три разных джампа - jump zero, jump positive, jump negative...
Я не готов это детально прокомментировать сейчас, но мне казалось, в троичной системе должен быть
один условный джамп на три условия.
По крайней мере, к этому нас сподвигала пресловутая "задача о весах"...
Ну, то есть, в зависимость от флага positive, zero, negative джамп "джампает" на два разных адреса
или не "джампает".

Вы не обижайтесь, если мы что-то пишем не то, но я по собственному опыту так понимаю, что мы втроем
несколько по-разному представляем структуру того, что Вы сейчас делаете.
У Вас "железки" на руках, и Вы себе цель представляете лучше всех, причем не только цель, но и возможность
её реализации в реальных железках.
А мы, порой, выглядим как "советы постороннего"...
iLavr
haqreu
Maniac
Posts: 318
Joined: 10 Mar 2017 05:30

Re: Давайте думать над железкой

Post by haqreu »

А что это за задача о весах? Я совсем не обижаюсь, зачем мне это, вовсе даже наоборот, учусь. Просто мне не все предложения понятны, вот и пытаюсь понять. Спасибо за предложения!

В рамках предложенной архитектуры настоящий условный переход мне кажется слишком громоздким, поэтому есть два варианта:

1) Сделать просто пропуск одной команды если флаг ненулевой, и не пропускать ничего, если нулевой. В пропущенную команду запрятать безусловный переход.
Этих же команд можно сделать три разные версии (не только для нуля, но и для N и P)

2) Сделать пропуск двух, одной и ни одной команды в зависимости от троичного значения флага. В пропущенные команды запрятать безусловные переходы. Таким образом делается настоящий троичный условный переход, но меньшей кровью.

Оба этих варианта хороши тем, что у них нет операнда (в расширенных командах этой архитектуры операнда не предусматривается).
Вопрос, перпендикулярный выбору типа перехода, сколько флагов нужно и переход по каким флагам нужен. Насколько я понимаю, хорошо бы сделать переход по знаку и по переполнению в арифметических операциях, так?
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Давайте думать над железкой

Post by Lavr »

haqreu wrote:А что это за задача о весах?
Задачей о весах обычно иллюстрируют преимущество троичной системы над двоичной.
В том плане, то, что двоичная система проверяет в два условия, троичная система может
проверить в одно
. Честно говоря, меня давно интересует, как мы это сделаем, поэтому
и флаг я предлагаю один троичный с троичным джампом. Мне кажется, Shaos, где-то здесь
отвечал на мой вопрос о троичном условном джампе, но то ли мне не понравилось тогда,
то ли я его не до конца понял.

А "задача о весах" - в частности, в нужном ракурсе упоминается здесь:
http://www.computer-museum.ru/articles/precomp/1375/
В УТСС также сокращается количество шагов на операцию ветвления, так для определения, является ли число положительным, отрицательным или равным нулю, при использовании УТСС в ЭВМ понадобится только одно ветвление, а при использовании ДСС два (рис. 4) [3].
weighted-triple_5.jpg
You do not have the required permissions to view the files attached to this post.
iLavr
haqreu
Maniac
Posts: 318
Joined: 10 Mar 2017 05:30

Re: Давайте думать над железкой

Post by haqreu »

AlexanderZh wrote:А команда джампа подразумевает аргумент в регистре?
Нет, безусловный переход входит в набор базовых команд, и имеет прямой аргумент в опкоде. Доп. регистры не нужны.
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: Давайте думать над железкой

Post by jdigreze »

haqreu wrote:Нет, безусловный переход входит в набор базовых команд, и имеет прямой аргумент в опкоде. Доп. регистры не нужны.
AlexanderZh wrote:
haqreu wrote:Сделать пропуск двух, одной и ни одной команды в зависимости от троичного значения флага.
По моему, очень удачная идея.
Да, так, наверно, будет наиболее удачно.