![]() |
Quote:
---------- Post added at 10:26 ---------- Previous post was at 10:19 ---------- Кстати, вполне возможно, что и у ВМ2 нет специального буфера предвыборки, а предвыборка осуществляется, как и у ВМ1 - в основной буфер, но по более продвинутому алгоритму. |
Команды EIS характерны тем, что приёмник всегда регистр, поэтому после загрузки операндов и начала операции - можно начинать предвыборку, т.к. запись результата операции в память гарантированно не потребуется.
Учитывая, что команды EIS были в военных версиях ВМ1 - весьма похоже, что и предвыборка у ВМ1 мало чем отличается от предвыборки ВМ2. А чем вообще предвыборка у ВМ2 может отличаться от предвыборки у ВМ1 ? |
Вот кстати пишут на http://en.wikipedia.org/wiki/PDP-11_architecture#Speed про PDP-11/70
Quote:
|
Quote:
Т.е. при полном попадании в кеш - команда Code:
ADD @TAB1(R0), @TAB2(R1) |
Quote:
Подробно об этом можно почитать в доках на ВМ2, которые я выкладывал. |
Quote:
Достаточно представить себе ( или нарисовать ), как фазы выполнения различных команд соотносятся с тем, что происходит в этот момент на шине, чтобы стало ясно, что большой разницы в алгоритмах предвыборки команд у ВМ1 и ВМ2 быть не может. Главная причина в том, что цикл чтения занимает кучу тактов, поэтому начать предвыборку до завершения любой команды, которая работает с операндами в памяти - невозможно. Но это значит, что предвыборку нельзя начать и до того момента, пока текущая команда не будет раскодирована и не станет ясно, потребуются ли ей дальнейшие циклы шины или нет. Процессор ВМ1 выполняет две последовательных команды TST R0 быстрее, чем одну команду TST (R0). Такое возможно только при наличии предвыборки регистровых команд. |
Quote:
Еще раз повторюсь, ничего не знаю о предвыборке на ВМ1, но она явно должна отличаться. Иначе вообще какой смысл было городить ВМ2) Только из-за нескольких расширенных команд? |
Quote:
И ВМ1 и ВМ2 выполняют регистровые команды ( например, команды TST R0 ) фактически со скоростью чтения памяти - это достигается за счёт того, что пока арифметический блок "переваривает" текущую команду - управляющий блок уже заказывает у интерфейсного блока чтение кода следующей команды. При этом циклы чтения идут на шине непрерывно. Если же команде нужно прочитать операнд ( как, например - в команде TST (R0) ) - то между циклом чтения кода команды и циклом чтения операнда у ВМ1 появляется "просвет" в 1 дополнительный такт. Поэтому, процессор 1801ВМ1 выполняет две команды TST R0 быстрее, чем одну команду TST (R0). Вряд ли у ВМ2 может быть как-то иначе. Возьмём для примера другую команду: MOV (R0),(R1) Где там "внутри команды" ВМ2 может успеть выполнить предвыборку, если во время выполнения этой команды шинные циклы идут почти "без зазора", а после выполнения последнего из них ( запись результата по адресу, находящемуся в R1 ) - команда уже завершена ? Получается, что и в процессе выполнения этой команды механизм предвыборки ВМ1 и ВМ2 работает одинаково. А когда они работают по-разному? Когда процессор ВМ2 может успеть "впихнуть" цикл чтения предвыборки "внутрь" выполнения любой команды, кроме команды EIS.. Не вижу таких вариантов. |
Quote:
|
Quote:
Дело в том, что предвыборка у ВМ1 и ВМ2 начинается только тогда, когда точно известно, что больше обращений к шине у текущей команды не будет. Такое бывает лишь в 2х случаях: 1. Операция начата, а приёмник результата операции - регистр. 2. Запись результата операции в память уже выполнена. Легко заметить, что в обоих этих случаях следующее слово, загружаемое из памяти - команда. |
| All times are GMT +4. The time now is 02:45. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.