nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 04:38



Reply to topic  [ 410 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 28  Next
Давайте думать над железкой (TRIADOR) 
Author Message
Maniac

Joined: 10 Mar 2017 05:30
Posts: 318
Reply with quote
AlexanderZh wrote:
Подумав, решил от себя добавить: достаточно будет переходов по состоянию флага, а больше вроде не надо.
Устанавливать/сбрасывать? По моему совсем не нужно. Переход больше-ноль-меньше за одну команду - (опять же, по моему) лишнее в данной реализации.


Ничего не понял. Как мне кажется, устанавливать флаги нужно при арифметических операциях (инкремент и сложение). А вот как делать ветвление всё же неясно. Shaos предлагал пропуск одной операции делать. Это пропустить-одну-команду-если-нулевой флаг? Если да, то какой именно флаг? Знака или переполнения?


03 Oct 2017 13:59
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Условные пропуски - это из RISC. Позволяет иметь всего одну операндную команду безусловного перехода и несколько безоперандных команд пропуска, либо одну операндную команду безусловного перехода и одну операндную команду пропуска.

Как программист: для циклов удобно иметь флаг zero, т.е. досчитали до нуля - вывалились из цикла. Этот же флаг удобен для сравнения двух чисел, если A-B=0, то числа равны.


03 Oct 2017 18:10
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
jdigreze wrote:
для циклов удобно иметь флаг zero, т.е. досчитали до нуля - вывалились из цикла.
Этот же флаг удобен для сравнения двух чисел, если A-B=0, то числа равны.

Спорно. Я по жизни предпочитаю флаг С в циклах - "вывалиться за ноль с заёмом или переносом".
В жизни встречались ситуации когда в силу стечения непредвиденных факторов программа пропускает
флаг Z - тогда она уйдёт на второй цикл - совершенно не нужный, а по флагу С - этого не случится.

Смешно, но это сработало в совершенно дикой ситуации - когда мы тестировали ранние dll-модели
разработанного на форуме процессора для Proteus. :lol:
У меня циклы были по флагу С - поэтому работало всё четко - а тут выяснилось, что в модели
флаг Z выставляется не всегда правильно. :wink:

_________________
iLavr


04 Oct 2017 03:06
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Lavr wrote:
Спорно. Я по жизни предпочитаю флаг С в циклах - "вывалиться за ноль с заёмом или переносом".
В жизни встречались ситуации когда в силу стечения непредвиденных факторов программа пропускает
флаг Z - тогда она уйдёт на второй цикл - совершенно не нужный, а по флагу С - этого не случится.
Да, такое возможно, но и без флага Z проблематично работать.


04 Oct 2017 03:44
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
jdigreze wrote:
...но и без флага Z проблематично работать.

А вот пробабушка всея микропроцессоров - PDP-8 - без него как-то обходилась! :lol:

_________________
iLavr


04 Oct 2017 04:00
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
AlexanderZh wrote:
А не совмещаются ли флаги C и Z бинарные в один троичный?

Вот это - годная мысль! В троичном компьютере надо мыслить троично! :kruto:

_________________
iLavr


04 Oct 2017 04:08
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Но тем не менее, объединить C и Z в один троичный флаг вполне можно.

_________________
iLavr


04 Oct 2017 04:30
Profile
Maniac

Joined: 10 Mar 2017 05:30
Posts: 318
Reply with quote
А смысл? По знаку можно иметь три разных джампа - jump zero, jump positive, jump negative...


04 Oct 2017 04:32
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Lavr wrote:
AlexanderZh wrote:
А не совмещаются ли флаги C и Z бинарные в один троичный?

Вот это - годная мысль! В троичном компьютере надо мыслить троично! :kruto:
Да, действительно - здравая мысль!
haqreu wrote:
А смысл? По знаку можно иметь три разных джампа - jump zero, jump positive, jump negative...

Джамп - не джамп, "пропуск" - "не пропуск", но если сделать "пропуск" с операндом, то, имхо, будет очень даже юзабельно. Этакий branch с операндом по выбранным позициям флагов.


04 Oct 2017 06:14
Profile
Maniac

Joined: 10 Mar 2017 05:30
Posts: 318
Reply with quote
Граждане, предлагайте, пожалуйста, конкретную реализации в рамках архитектуры :)
Расширенная команда операнда не предполагает, но можно его взять из аккумулятора. Как может выглядеть такой бранч?


04 Oct 2017 06:16
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
haqreu wrote:
По знаку можно иметь три разных джампа - jump zero, jump positive, jump negative...

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

Вы не обижайтесь, если мы что-то пишем не то, но я по собственному опыту так понимаю, что мы втроем
несколько по-разному представляем структуру того, что Вы сейчас делаете.
У Вас "железки" на руках, и Вы себе цель представляете лучше всех, причем не только цель, но и возможность
её реализации в реальных железках.
А мы, порой, выглядим как "советы постороннего"...

_________________
iLavr


04 Oct 2017 07:10
Profile
Maniac

Joined: 10 Mar 2017 05:30
Posts: 318
Reply with quote
А что это за задача о весах? Я совсем не обижаюсь, зачем мне это, вовсе даже наоборот, учусь. Просто мне не все предложения понятны, вот и пытаюсь понять. Спасибо за предложения!

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

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

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

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


04 Oct 2017 07:23
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
haqreu wrote:
А что это за задача о весах?
Задачей о весах обычно иллюстрируют преимущество троичной системы над двоичной.
В том плане, то, что двоичная система проверяет в два условия, троичная система может
проверить в одно
. Честно говоря, меня давно интересует, как мы это сделаем, поэтому
и флаг я предлагаю один троичный с троичным джампом. Мне кажется, Shaos, где-то здесь
отвечал на мой вопрос о троичном условном джампе, но то ли мне не понравилось тогда,
то ли я его не до конца понял.

А "задача о весах" - в частности, в нужном ракурсе упоминается здесь:
http://www.computer-museum.ru/articles/precomp/1375/
Quote:
В УТСС также сокращается количество шагов на операцию ветвления, так для определения, является ли число положительным, отрицательным или равным нулю, при использовании УТСС в ЭВМ понадобится только одно ветвление, а при использовании ДСС два (рис. 4) [3].
Attachment:
weighted-triple_5.jpg
weighted-triple_5.jpg [ 8.22 KiB | Viewed 10503 times ]

_________________
iLavr


04 Oct 2017 08:22
Profile
Maniac

Joined: 10 Mar 2017 05:30
Posts: 318
Reply with quote
AlexanderZh wrote:
А команда джампа подразумевает аргумент в регистре?


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


04 Oct 2017 12:27
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
haqreu wrote:
Нет, безусловный переход входит в набор базовых команд, и имеет прямой аргумент в опкоде. Доп. регистры не нужны.

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


04 Oct 2017 17:56
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 410 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 28  Next

Who is online

Users browsing this forum: No registered users and 15 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.