И еще на счет таймингов.
Когда-то, когда только писал процессор ВМ2, раскладывал для себя теоретически, как должен работать процессор, чтобы тайминги совпали с теми, что в доке. Получились примерно такие записи. Разложилось весьма хорошо, хотя и не факт, что достоверно:
Код:Timing Legend: Число циклов обращения к памяти может быть только четным, а также число циклов выполнение команды может быть только четным, поскольку синхронизируется относительно CLKO (CLKI/2). Запись для времени < 1T [1..2T]: 12/15 [12/15] тактов: 4 - выдача адреса на шину 1/3 - подготовка данных (зависит от метода адресации) 5 [6] - удержание данных на шине 1 - особождение шины и снятие запросов Чтение для времени < 1T [1..2T]: 8 [10] тактов: 4 - выдача адреса на шину 3 [5] - чтение данных 1 - особождение шины и снятие запросов Чтение-модификация-запись для времени < 1T [1..2T]: 18 [20?] тактов: 4 - выдача адреса на шину 3 [5] - чтение данных 4 - калькуляция и выдача данных шину (может быть больше, если это необходимо) 5 [6] - удержание данных на шине 1 - особождение шины и снятие запросов Безадресное чтение: 4 такта? Разложение времени выполнение команд на примерах, взятых из описания 1801ВМ2, для времени памяти < 1T [1..2T] ALU/MOV rn,rn - 8 [10] 8 [10] - чтение из памяти следующего слова команды в буфер CRB <= 8 - выполнение фунцкии ALU (целиком перекрывается) CLR (Rn) - 20 [22] 8 [10] - чтение из памяти следующего слова команды в буфер CRB <=8 - подготовка адресного указателя (и данных?) для записи (целиком перекрывается) 12 - запись результата в память INC (Rn) - 26 [28] 8 [10] - чтение из памяти следующего слова команды в буфер CRB <=8 - подготовка адресного указателя (целиком перекрывается) 18 [18?] - цикл чтениь-модификация-запись <=4 - ALU (целиком перекрывается) MOV Rn,(Rn) - 20 [22] 8 [10] - чтение из памяти следующего слова команды в буфер CRB <=8 - подготовка адресного указателя и данных для записи (целиком перекрывается) 12 - запись результата в память MOV (Rn),(Rn) - 34 [38] 8 [10] - чтение из памяти следующего слова команды в буфер CRB <=8 - подготовка адресного указателя и данных для чтения (целиком перекрывается) 8 [10] - чтение данных из памяти 6? - подготовка адресного указателя (и данных?) для записи 12 - запись результата в память OR (Rn),(Rn) - 38 [42] 8 [10] - чтение из памяти следующего слова команды в буфер CRB <=8 - подготовка адресного указателя и данных для чтения (целиком перекрывается) 8 [10] - чтение данных из памяти 4? - подготовка адресного указателя для записи 18 [18?] - цикл чтениь-модификация-запись <=4 - ALU (целиком перекрывается) mov #nnnn,r0 - 20 [22?] 8 [10] - чтение из памяти следующего слова команды в буфер DRB 4? - ALU? или, что вероятнее подготовка пререкэширования 8 [10?] - чтение из памяти следующего слова команды в буфер CRB




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