Нет, тут есть принципиальная разница - между снятием READY и ожиданием RPLY.
При ожидании RPLY у ВМ1 запускается внутренний таймер, и если по истечении таймера ответ не получен - возникает исключение.
Такой подход позволяет реализовать простейший PnP и программно определить есть что-то по интересующему адресу или нет.
Более того, можно принципиально реализовать интересные вещи типа Substrative Decoding.
I/O порты это вообще очень страшная вещь, стоившая индустрии миллиарды долларов, и эти счета до сих пор полностью не оплачены.
Digital на самом деле сделала крутейший шаг вперед выкинув адресное пространство портов и включив устройства в адресное пространство памяти, унифицировав транзакции шины. Да, когда у вас нет защиты памяти, и всего 64К мгновенно доступны по произвольному адресу - втыкать устройства в это пространство страшно и не очень надежно. Но в DEC понимали что защита памяти будет, обязательно будет, и рискнули сделать унификацию - они умели думать на пару шагов вперед. Нету на шинах DECа адресного пространства портов. Это делает транзакции на шине полностью унифицированными и их количество минимальным - схемы декодирования упростились намного, DMA стал унифицированным и прочее. А вот x86, например, до сих пор цепляется за отдельное адресное пространство портов и все время платил за это свою цену - отдельный тип транзакций, отдельные схемы декодирования, отдельные шины, отдельные инструкции. Дальше-больше, отдельный тип транзакций PCI, типы BAR. Скорости растут, появляются новые шины, и везде это гемор с отдельным классом транзакций I/O портов тянется, взымая свою плату с процессоров, чипсетов и софта. Но шины все быстрее - синхронные протоколы, последовательные каналы, пакетный обмен, и на этом - все, I/O наконец умирает, например в шине AXI таких транзакций нет. Теоретически можно тегировать, но никто с этим уже не заморачивается. И вот уже спецификация SR-IOV говорит что устройства с I/O BAR не подлежат виртуализации. Почему? "Идите на@#й со своими I/O портами, вот почему" - ласково сказали разработчики рут-комплексов, виртуальных функций, IOMMU/VT-d и гипервизоров. В-общем, I/O порты на заре индустрии имели смысл, но потом они собрали кровавую жатву обратной совместимости, и местами все еще продолжают собирать, хотя сегодня изоляция адресных пространств реализуется совсем другими методами. Ото я загнул?
Да, про IM2 я подзабыл, так что признаем что умеет, да.
Да, это правда, ВМ1 не самая быстрая реализация команд PDP-11. Первый блин, к тому же реализованный на микроавтомате сделанном для другой архитектуры. ВМ2 - "работа над ошибками", при сопоставимом транзисторном бюджете работает намного лучше - предвыборка, предекодер, простой конвейер, блок арифметики, вылизанная микропрограмма.
Да все можно, но это будет другая архитектура. И опять-таки, надо смотреть не на братьев Марио, а в завтра - проблема памяти решается, объемов кода решается, а моноширинная система команд остается. И на этом сегодня стоят и ARM-ы и RISC V - декодер проще, конвейер проще, перформанс на такт выше. Но PDP-11 - это чуть другое, не RISC, да, но свой бонус от ортогональной системы команд он тоже получил - первые PDP-11 удалось собрать на мелкой логике.






Ответить с цитированием