Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
WingLion писал(а): одной командой? Это формально то же самое, что команда с префиксом... только префикс получается - короткий литерал Именно. А регистры-то ведь такие, что особо часто их читать и не надо.
[quote="WingLion"]одной командой? Это формально то же самое, что команда с префиксом... только префикс получается - короткий литерал [/quote] Именно. А регистры-то ведь такие, что особо часто их читать и не надо.
|
|
|
|
Добавлено: Сб дек 17, 2011 21:07 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
Хищник писал(а): А у меня сейчас 0-31 кладутся на стек одним тактом. одной командой? Это формально то же самое, что команда с префиксом... только префикс получается - короткий литерал
[quote="Хищник"]А у меня сейчас 0-31 кладутся на стек одним тактом.[/quote]
одной командой? Это формально то же самое, что команда с префиксом... только префикс получается - короткий литерал ;)
|
|
|
|
Добавлено: Сб дек 17, 2011 20:08 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
А у меня сейчас 0-31 кладутся на стек одним тактом.
А у меня сейчас 0-31 кладутся на стек одним тактом. :)
|
|
|
|
Добавлено: Сб дек 17, 2011 19:45 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
Хищник писал(а): Нет, не реализовывать их в памяти, а просто отобразить на адресное пространство. Тогда при выполнении @ мультиплексор подсунет вместо выхода памяти выход регистра. да, но для этого @ надо будет на стек целый адрес положить, а это некузяво... Лучше в команде адресовать нужный регистр, дополнительным полем / параметром / префиксным кодом и т.п. Он ведь всяко короче полного адреса. А тогда в память отражать - лишнее.
[quote="Хищник"]Нет, не реализовывать их в памяти, а просто отобразить на адресное пространство. Тогда при выполнении @ мультиплексор подсунет вместо выхода памяти выход регистра.[/quote]
да, но для этого [b]@[/b] надо будет на стек целый адрес положить, а это некузяво... Лучше в команде адресовать нужный регистр, дополнительным полем / параметром / префиксным кодом и т.п. Он ведь всяко короче полного адреса. А тогда в память отражать - лишнее.
|
|
|
|
Добавлено: Сб дек 17, 2011 19:33 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
WingLion писал(а): Вряд ли это вариант. Ведь регистры еще в процессе работы команд модифицируются, а значит, это дополнительные два цикла с памятью в нагрузку а на команду...
Разве что изначально полагать, что командный цикл - это 3-4 обращения к памяти... Нет, не реализовывать их в памяти, а просто отобразить на адресное пространство. Тогда при выполнении @ мультиплексор подсунет вместо выхода памяти выход регистра.
[quote="WingLion"]Вряд ли это вариант. Ведь регистры еще в процессе работы команд модифицируются, а значит, это дополнительные два цикла с памятью в нагрузку а на команду...
Разве что изначально полагать, что командный цикл - это 3-4 обращения к памяти...[/quote] Нет, не реализовывать их в памяти, а просто отобразить на адресное пространство. Тогда при выполнении @ мультиплексор подсунет вместо выхода памяти выход регистра.
|
|
|
|
Добавлено: Сб дек 17, 2011 19:25 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
Хищник писал(а): Но это тоже вариант. Вряд ли это вариант. Ведь регистры еще в процессе работы команд модифицируются, а значит, это дополнительные два цикла с памятью в нагрузку а на команду... Разве что изначально полагать, что командный цикл - это 3-4 обращения к памяти...
[quote="Хищник"]Но это тоже вариант.[/quote]
Вряд ли это вариант. Ведь регистры еще в процессе работы команд модифицируются, а значит, это дополнительные два цикла с памятью в нагрузку а на команду...
Разве что изначально полагать, что командный цикл - это 3-4 обращения к памяти...
|
|
|
|
Добавлено: Сб дек 17, 2011 19:16 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
dynamic-wind писал(а): Отобразим регистры на память, сэкономим опкод "Экономика должна быть экономной" (с)... Если работа с регистрами не будет отличаться от работы с памятью, зачем такие регистры? Проще сразу с памятью работать.
[quote="dynamic-wind"]Отобразим регистры на память, сэкономим опкод[/quote]
"Экономика должна быть экономной" (с)... Если работа с регистрами не будет отличаться от работы с памятью, зачем такие регистры? Проще сразу с памятью работать.
|
|
|
|
Добавлено: Сб дек 17, 2011 19:15 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
dynamic-wind писал(а): Отобразим регистры на память, сэкономим опкод Мультиплексор сложнее получается, надо еще диапазон адресов проверять. Сейчас критичная по времени цепь проходит как раз от стека к стеку - т.е. через АЛУ, декодер команд, мультиплексор и т.д. Но это тоже вариант. Я вообще сейчас объединил адресные пространства памяти и IO.
[quote="dynamic-wind"]Отобразим регистры на память, сэкономим опкод [/quote] Мультиплексор сложнее получается, надо еще диапазон адресов проверять. Сейчас критичная по времени цепь проходит как раз от стека к стеку - т.е. через АЛУ, декодер команд, мультиплексор и т.д. Но это тоже вариант. Я вообще сейчас объединил адресные пространства памяти и IO.
|
|
|
|
Добавлено: Сб дек 17, 2011 17:18 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
Отобразим регистры на память, сэкономим опкод
Отобразим регистры на память, сэкономим опкод 8)
|
|
|
|
Добавлено: Сб дек 17, 2011 17:05 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
chess писал(а): в обоих случаях на стеке лежит сверху номер регистра( N ), Нет-нет-нет... номер регистра берется из командного потока, и на стек его незачем класть - лишняя потеря времени...
[quote="chess"]в обоих случаях на стеке лежит сверху номер регистра( N ),[/quote]
Нет-нет-нет... номер регистра берется из командного потока, и на стек его незачем класть - лишняя потеря времени...
|
|
|
|
Добавлено: Пт дек 16, 2011 18:43 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
Хищник писал(а): Тогда получается, что после префикса нужна команда, у которой будет неодинаковое воздействие на стек. Потому что в одном случае она должна вместо номера регистра положить его содержимое, а в другом - снять два числа. В одном случае, она должна положить на стек содержимое регистра, в другом отправить одно данное со стека в регистр. И ничего лишнего... номер регистра в опкоде зашит и его "адрес" незачем на стек записывать. По тактам - это ровнехонько один такт в любом случае.
[quote="Хищник"]Тогда получается, что после префикса нужна команда, у которой будет неодинаковое воздействие на стек. Потому что в одном случае она должна вместо номера регистра положить его содержимое, а в другом - снять два числа.[/quote]
В одном случае, она должна положить на стек содержимое регистра, в другом отправить одно данное со стека в регистр. И ничего лишнего... номер регистра в опкоде зашит и его "адрес" незачем на стек записывать.
По тактам - это ровнехонько один такт в любом случае.
|
|
|
|
Добавлено: Пт дек 16, 2011 18:33 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
Хищник писал(а): Тогда получается, что после префикса нужна команда, у которой будет неодинаковое воздействие на стек. Потому что в одном случае она должна вместо номера регистра положить его содержимое, а в другом - снять два числа. Ну правильно в обоих случаях на стеке лежит сверху номер регистра( N ), который берется в качестве префикса, но не весь, а только три младших разряда, а старший разряд надо использовать в качестве недостающего для формирования опкодов 2-х команд SYSTEM@ и SYSTEM! для положить на стек из сист рег. вместо N или взять два значения со стека для положить в сист. регистр. В один такт при этом не влезть.
[quote="Хищник"]Тогда получается, что после префикса нужна команда, у которой будет неодинаковое воздействие на стек. Потому что в одном случае она должна вместо номера регистра положить его содержимое, а в другом - снять два числа.[/quote] Ну правильно в обоих случаях на стеке лежит сверху номер регистра( N ), который берется в качестве префикса, но не весь, а только три младших разряда, а старший разряд надо использовать в качестве недостающего для формирования опкодов 2-х команд SYSTEM@ и SYSTEM! для положить на стек из сист рег. вместо N или взять два значения со стека для положить в сист. регистр. В один такт при этом не влезть.
|
|
|
|
Добавлено: Пт дек 16, 2011 15:56 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
Тогда получается, что после префикса нужна команда, у которой будет неодинаковое воздействие на стек. Потому что в одном случае она должна вместо номера регистра положить его содержимое, а в другом - снять два числа.
Тогда получается, что после префикса нужна команда, у которой будет неодинаковое воздействие на стек. Потому что в одном случае она должна вместо номера регистра положить его содержимое, а в другом - снять два числа.
|
|
|
|
Добавлено: Пт дек 16, 2011 15:10 |
|
|
|
|
|
Заголовок сообщения: |
Re: Системные регистры форт-процессора |
|
|
Кстати, еще один моментик, который может помочь сократить набор.
Пусть "системных регистров" у нас 8 штук, не важно, как они называются, просто 8 регистров, которые надо уметь адресовать, читать и писать.
Если система команд 4-хбитная (к примеру), то любое обращение к такому регистру требует два кода - код команды и адрес. 4-хбитный адрес позволяет задавать одновременно и один из 8 регистров и операцию с ним (чтение/запись).
В таком случае, на системные регистры нужен всего один опкод-префикс - SYSTEM*. И к нему опкод-адрес 0..7 - чтение одного из 8 регистров, 8..15 запись в один из регистров.
Кстати, еще один моментик, который может помочь сократить набор.
Пусть "системных регистров" у нас 8 штук, не важно, как они называются, просто 8 регистров, которые надо уметь адресовать, читать и писать.
Если система команд 4-хбитная (к примеру), то любое обращение к такому регистру требует два кода - код команды и адрес. 4-хбитный адрес позволяет задавать одновременно и один из 8 регистров и операцию с ним (чтение/запись).
В таком случае, на системные регистры нужен всего один опкод-префикс - [b]SYSTEM*[/b]. И к нему опкод-адрес 0..7 - чтение одного из 8 регистров, 8..15 запись в один из регистров.
|
|
|
|
Добавлено: Пт дек 16, 2011 04:20 |
|
|
|
|
|
Заголовок сообщения: |
Системные регистры форт-процессора |
|
|
В раздумьях над тем, как бы выкроить пару опкодов для компактной системы команд, пришла в голову мысль о дополнительном адресном пространстве для системных регистров форт-процессора. С одной стороны, стековая машина сама по себе не подразумевает каких-то системных регистров. С другой, при технической реализации они так или иначе образуются. Приведенные ниже слова могут быть представлены в виде связки N SYSTEM@, где N - номер регистра, а SYSTEM@ (название условное) - слово, кладущее на стек содержимое соответствующего аппаратного регистра, отвечающего за данное состояние.
PC DEPTH RDEPTH R@ I J
Пара >R R> может быть заменена на >R RDROP, но работу со стеком возвратов не удается свести к одной команде с помощью такого приема. Выход, впрочем есть, но он немного "хакерский" - чтение регистра по R@ одновременно снимает число со стека возвратов. Вернуть его туда можно через DUP >R.
В раздумьях над тем, как бы выкроить пару опкодов для компактной системы команд, пришла в голову мысль о дополнительном адресном пространстве для системных регистров форт-процессора. С одной стороны, стековая машина сама по себе не подразумевает каких-то системных регистров. С другой, при технической реализации они так или иначе образуются. Приведенные ниже слова могут быть представлены в виде связки N SYSTEM@, где N - номер регистра, а SYSTEM@ (название условное) - слово, кладущее на стек содержимое соответствующего аппаратного регистра, отвечающего за данное состояние.
PC DEPTH RDEPTH R@ I J
Пара >R R> может быть заменена на >R RDROP, но работу со стеком возвратов не удается свести к одной команде с помощью такого приема. Выход, впрочем есть, но он немного "хакерский" - чтение регистра по R@ одновременно снимает число со стека возвратов. Вернуть его туда можно через DUP >R.
|
|
|
|
Добавлено: Пт дек 16, 2011 01:25 |
|
|
|
|