Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Эмуляторы отечественных компьютеров (http://zx-pk.ru/forumdisplay.php?f=61)
-   -   Эмулятор УКНЦ - EmuStudio (http://zx-pk.ru/showthread.php?t=18027)

hobot 19th December 2012 21:44

Quote:

Originally Posted by Patron (Post 560483)
Такой вариант исключён и для ВМ1 и для ВМ2. Они хранят только одно прочитанное слово и это слово всегда команда.

Дело в том, что предвыборка у ВМ1 и ВМ2 начинается только тогда, когда точно известно, что больше обращений к шине у текущей команды не будет. Такое бывает лишь в 2х случаях:

1. Операция начата, а приёмник результата операции - регистр.
2. Запись результата операции в память уже выполнена.

Легко заметить, что в обоих этих случаях следующее слово, загружаемое из памяти - команда.

Мощь!

Titus 20th December 2012 00:06

Quote:

Originally Posted by Patron (Post 560483)
Такой вариант исключён и для ВМ1 и для ВМ2. Они хранят только одно прочитанное слово и это слово всегда команда.

Дело в том, что предвыборка у ВМ1 и ВМ2 начинается только тогда, когда точно известно, что больше обращений к шине у текущей команды не будет. Такое бывает лишь в 2х случаях:

1. Операция начата, а приёмник результата операции - регистр.
2. Запись результата операции в память уже выполнена.

Легко заметить, что в обоих этих случаях следующее слово, загружаемое из памяти - команда.

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

Patron 20th December 2012 00:38

Quote:

Originally Posted by Titus (Post 560622)
Вовсе нет. В начале каждой команды он делает независимо ни от чего выборку следующего за командой слова.

В таком случае ВМ2 будет сильно проигрывать в эффективности ВМ1, потому что ВМ1 не осуществляет предвыборку в начале команд, изменяющих счётчик команд, не осуществляет предвыборку в начале команд, изменяющих следующее слово и т.д., и т.п. ( т.к. ВМ1 вообще не осуществляет предвыборку в начале команд ).

Из-за того, что продолжительность выполнения практически всех команд ВМ1 - почти точно равна продолжительности используемых в этих командах циклов шины ( т.к. при выполнении любой команды циклы идут по шине "сплошняком" ) - чем позже в ход выполнения команды будет "всунут" цикл предвыборки - тем выше будет итоговое быстродействие.

Оптимальная ( с точки зрения итогового быстродействия ) позиция для "всовывания" цикла предвыборки в команду - после завершающего шинного цикла команды, когда уже точно известно - нужна предвыборка или нет. ВМ1 так и делает - начиная предвыборку следующей команды после завершения последнего шинного цикла предыдущей.

Действительно - в описании ВМ2 указано, что изменение следующего слова в команде требует его повторной выборки, т.е. тем самым подразумевается, что это слово было прочитано после кода команды и до выполнения операции.

Но какой от этого выигрыш, кроме неизбежного проигрыша в быстродействии - совершенно не понятно.

Titus 20th December 2012 00:57

Обьясни по шагам методику предвыборки на ВМ1?

У ВМ2 примерно так:

Декодируем и исполняем предвыбранную в предыдущий раз команду, а в это время одновременно читаем слово следующей команды. Если в команде есть цикл обращения к шине, то он будет выполнен как только закончился цикл предвыборки, на сколько я понимаю.

Patron 20th December 2012 01:13

Предвыборка у ВМ1 - для большинства команд ( кроме команд EIS в военных версиях ) - это начало чтения следующей команды в тот момент, когда арифметический блок ещё устанавливает биты PSW в ходе текущей команды. Так ВМ1 экономит по 1 такту на каждой регистровой команде ( или полный цикл чтения на каждой команде EIS { это в теории - для практической проверки нужен ВМ1 с EIS } ). Но на каждой не-регистровой команде ВМ1 теряет по 2 такта ( возможно, по 1 такту - это надо уточнить ) из-за штрафа отмены предвыборки ( опять же в теории - на практике это может быть просто задержка получения исполнительного адреса ).

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

---------- Post added at 23:13 ---------- Previous post was at 23:05 ----------

Кстати, если ВМ2 теряет по циклу чтения на каждой итерации цикла SOB - быстродействие цикла SOB у 5 МГц ВМ1 и 10 МГц ВМ2 должно совпадать. Это, типа - получается этакая супер-совместимость по программным задержкам у ВМ1 и ВМ2 !!!

Titus 20th December 2012 01:23

Quote:

Originally Posted by Patron (Post 560648)
Предвыборка у ВМ1 - для большинства команд ( кроме команд EIS в военных версиях )

Что такое EIS команды, и почему в военной версии?

Patron 20th December 2012 01:33

Quote:

Originally Posted by Titus (Post 560653)
Что такое EIS команды, и почему в военной версии?

ВМ1 (насколько я понял) был разработан с поддержкой команд Mul и Div. Те кристаллы, у которых эти блоки работали без проблем - шли на спецприменения, а у остальных эти команды отключались.

BYTEMAN 20th December 2012 01:34

Quote:

Originally Posted by Patron (Post 560657)
а у остальных эти команды отключались.

типа отбраковка была?

Patron 20th December 2012 01:36

Quote:

Originally Posted by BYTEMAN (Post 560658)
типа отбраковка была?

В названии после ВМ1 шла буква, в зависимости от которой возможности процессоров сильно различались.

Titus 20th December 2012 01:49

Quote:

Originally Posted by Patron (Post 560657)
ВМ1 (насколько я понял) был разработан с поддержкой команд Mul и Div. Те кристаллы, у которых эти блоки работали без проблем - шли на спецприменения, а у остальных эти команды отключались.

Это я помню, уже было где-то на форуме обсуждение процов ВМ1 расшренных. И даже до чего-то там договорились, но не помню уже до чего.
Странно, что какой-то блок мог не получаться. Топология-то везде одинаковая, на всем кристалле.


All times are GMT +4. The time now is 02:45.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.