Ничего не понял. Как мне кажется, устанавливать флаги нужно при арифметических операциях (инкремент и сложение). А вот как делать ветвление всё же неясно. Shaos предлагал пропуск одной операции делать. Это пропустить-одну-команду-если-нулевой флаг? Если да, то какой именно флаг? Знака или переполнения?AlexanderZh wrote:Подумав, решил от себя добавить: достаточно будет переходов по состоянию флага, а больше вроде не надо.
Устанавливать/сбрасывать? По моему совсем не нужно. Переход больше-ноль-меньше за одну команду - (опять же, по моему) лишнее в данной реализации.
Давайте думать над железкой (TRIADOR)
Moderator: haqreu
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Re: Давайте думать над железкой
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
Re: Давайте думать над железкой
Условные пропуски - это из RISC. Позволяет иметь всего одну операндную команду безусловного перехода и несколько безоперандных команд пропуска, либо одну операндную команду безусловного перехода и одну операндную команду пропуска.
Как программист: для циклов удобно иметь флаг zero, т.е. досчитали до нуля - вывалились из цикла. Этот же флаг удобен для сравнения двух чисел, если A-B=0, то числа равны.
Как программист: для циклов удобно иметь флаг zero, т.е. досчитали до нуля - вывалились из цикла. Этот же флаг удобен для сравнения двух чисел, если A-B=0, то числа равны.
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Давайте думать над железкой
Спорно. Я по жизни предпочитаю флаг С в циклах - "вывалиться за ноль с заёмом или переносом".jdigreze wrote:для циклов удобно иметь флаг zero, т.е. досчитали до нуля - вывалились из цикла.
Этот же флаг удобен для сравнения двух чисел, если A-B=0, то числа равны.
В жизни встречались ситуации когда в силу стечения непредвиденных факторов программа пропускает
флаг Z - тогда она уйдёт на второй цикл - совершенно не нужный, а по флагу С - этого не случится.
Смешно, но это сработало в совершенно дикой ситуации - когда мы тестировали ранние dll-модели
разработанного на форуме процессора для Proteus.

У меня циклы были по флагу С - поэтому работало всё четко - а тут выяснилось, что в модели
флаг Z выставляется не всегда правильно.

iLavr
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
Re: Давайте думать над железкой
Да, такое возможно, но и без флага Z проблематично работать.Lavr wrote:Спорно. Я по жизни предпочитаю флаг С в циклах - "вывалиться за ноль с заёмом или переносом".
В жизни встречались ситуации когда в силу стечения непредвиденных факторов программа пропускает
флаг Z - тогда она уйдёт на второй цикл - совершенно не нужный, а по флагу С - этого не случится.
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Давайте думать над железкой
А вот пробабушка всея микропроцессоров - PDP-8 - без него как-то обходилась!jdigreze wrote:...но и без флага Z проблематично работать.

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

iLavr
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Давайте думать над железкой
Но тем не менее, объединить C и Z в один троичный флаг вполне можно.
iLavr
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Re: Давайте думать над железкой
А смысл? По знаку можно иметь три разных джампа - jump zero, jump positive, jump negative...
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
Re: Давайте думать над железкой
Да, действительно - здравая мысль!Lavr wrote:Вот это - годная мысль! В троичном компьютере надо мыслить троично!AlexanderZh wrote:А не совмещаются ли флаги C и Z бинарные в один троичный?
Джамп - не джамп, "пропуск" - "не пропуск", но если сделать "пропуск" с операндом, то, имхо, будет очень даже юзабельно. Этакий branch с операндом по выбранным позициям флагов.haqreu wrote:А смысл? По знаку можно иметь три разных джампа - jump zero, jump positive, jump negative...
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Re: Давайте думать над железкой
Граждане, предлагайте, пожалуйста, конкретную реализации в рамках архитектуры 
Расширенная команда операнда не предполагает, но можно его взять из аккумулятора. Как может выглядеть такой бранч?

Расширенная команда операнда не предполагает, но можно его взять из аккумулятора. Как может выглядеть такой бранч?
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Давайте думать над железкой
Я не готов это детально прокомментировать сейчас, но мне казалось, в троичной системе должен бытьhaqreu wrote:По знаку можно иметь три разных джампа - jump zero, jump positive, jump negative...
один условный джамп на три условия.
По крайней мере, к этому нас сподвигала пресловутая "задача о весах"...
Ну, то есть, в зависимость от флага positive, zero, negative джамп "джампает" на два разных адреса
или не "джампает".
Вы не обижайтесь, если мы что-то пишем не то, но я по собственному опыту так понимаю, что мы втроем
несколько по-разному представляем структуру того, что Вы сейчас делаете.
У Вас "железки" на руках, и Вы себе цель представляете лучше всех, причем не только цель, но и возможность
её реализации в реальных железках.
А мы, порой, выглядим как "советы постороннего"...
iLavr
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Re: Давайте думать над железкой
А что это за задача о весах? Я совсем не обижаюсь, зачем мне это, вовсе даже наоборот, учусь. Просто мне не все предложения понятны, вот и пытаюсь понять. Спасибо за предложения!
В рамках предложенной архитектуры настоящий условный переход мне кажется слишком громоздким, поэтому есть два варианта:
1) Сделать просто пропуск одной команды если флаг ненулевой, и не пропускать ничего, если нулевой. В пропущенную команду запрятать безусловный переход.
Этих же команд можно сделать три разные версии (не только для нуля, но и для N и P)
2) Сделать пропуск двух, одной и ни одной команды в зависимости от троичного значения флага. В пропущенные команды запрятать безусловные переходы. Таким образом делается настоящий троичный условный переход, но меньшей кровью.
Оба этих варианта хороши тем, что у них нет операнда (в расширенных командах этой архитектуры операнда не предусматривается).
Вопрос, перпендикулярный выбору типа перехода, сколько флагов нужно и переход по каким флагам нужен. Насколько я понимаю, хорошо бы сделать переход по знаку и по переполнению в арифметических операциях, так?
В рамках предложенной архитектуры настоящий условный переход мне кажется слишком громоздким, поэтому есть два варианта:
1) Сделать просто пропуск одной команды если флаг ненулевой, и не пропускать ничего, если нулевой. В пропущенную команду запрятать безусловный переход.
Этих же команд можно сделать три разные версии (не только для нуля, но и для N и P)
2) Сделать пропуск двух, одной и ни одной команды в зависимости от троичного значения флага. В пропущенные команды запрятать безусловные переходы. Таким образом делается настоящий троичный условный переход, но меньшей кровью.
Оба этих варианта хороши тем, что у них нет операнда (в расширенных командах этой архитектуры операнда не предусматривается).
Вопрос, перпендикулярный выбору типа перехода, сколько флагов нужно и переход по каким флагам нужен. Насколько я понимаю, хорошо бы сделать переход по знаку и по переполнению в арифметических операциях, так?
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Давайте думать над железкой
Задачей о весах обычно иллюстрируют преимущество троичной системы над двоичной.haqreu wrote:А что это за задача о весах?
В том плане, то, что двоичная система проверяет в два условия, троичная система может
проверить в одно. Честно говоря, меня давно интересует, как мы это сделаем, поэтому
и флаг я предлагаю один троичный с троичным джампом. Мне кажется, Shaos, где-то здесь
отвечал на мой вопрос о троичном условном джампе, но то ли мне не понравилось тогда,
то ли я его не до конца понял.
А "задача о весах" - в частности, в нужном ракурсе упоминается здесь:
http://www.computer-museum.ru/articles/precomp/1375/
В УТСС также сокращается количество шагов на операцию ветвления, так для определения, является ли число положительным, отрицательным или равным нулю, при использовании УТСС в ЭВМ понадобится только одно ветвление, а при использовании ДСС два (рис. 4) [3].
You do not have the required permissions to view the files attached to this post.
iLavr
-
- Maniac
- Posts: 318
- Joined: 10 Mar 2017 05:30
Re: Давайте думать над железкой
Нет, безусловный переход входит в набор базовых команд, и имеет прямой аргумент в опкоде. Доп. регистры не нужны.AlexanderZh wrote:А команда джампа подразумевает аргумент в регистре?
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
Re: Давайте думать над железкой
haqreu wrote:Нет, безусловный переход входит в набор базовых команд, и имеет прямой аргумент в опкоде. Доп. регистры не нужны.
Да, так, наверно, будет наиболее удачно.AlexanderZh wrote:По моему, очень удачная идея.haqreu wrote:Сделать пропуск двух, одной и ни одной команды в зависимости от троичного значения флага.