Для каждого чтения:
ЦП декодирует инструкцию, выясняет, что ему нужно, и в конечном итоге отправляет запрос на чтение по шине или каналу. Предположим, что это стоит 1 цикл ЦП.
шина или канал, который использует ЦП, вероятно, не будет шиной 33 МГц, которую использует устройство (поскольку ЦП 2 ГГц с ОЗУ 33 МГц просто неправдоподобен). Обычно имеется быстрая локальная шина (или быстрый набор ссылок), соединяющая ЦП, ОЗУ и другие компоненты (маршрутизаторы, мосты); затем более медленные автобусы с другой стороны. Допустим, требуется 2 такта быстрой шины, чтобы запрос ЦП на чтение был перенаправлен с быстрой шины на шину 33 МГц устройства; а также предположим, что 2 такта быстрой шины эквивалентны 4 тактам процессора.
когда запрос на чтение поступает на шину 33 МГц устройства; эта шина 32-битная, но сам запрос на чтение будет состоять из нескольких полей - например. может быть поле типа перехода и 32-битное адресное поле (и, возможно, начало/конец для синхронизации и, возможно, CRC для обнаружения ошибок и..). Предположим, что требуется 2 цикла шины (по 1 циклу шины для каждого поля), чтобы запрос на чтение дошел до устройства.
после того, как устройство получит запрос на чтение, ему необходимо его декодировать и выяснить, что делать. Это может занять еще несколько циклов шины (но это действительно зависит от самого устройства), но давайте представим, что это занимает 2 цикла.
в конечном итоге устройство отправит обратно прочитанный ответ. Вероятно, это будет более крупный пакет (например, поле типа транзакции, 32-битное поле адреса, затем 64-битные данные, разделенные на два 32-битных поля). Допустим, для этого требуется 4 цикла шины, чтобы вернуться к маршрутизатору/мосту на быстрой шине.
на быстрой шине, возможно, мы можем ожидать, что ответ на чтение будет эквивалентен 6 циклам ЦП, чтобы вернуться к ЦП.
как только ответ на чтение возвращается в ЦП, ЦП может потратить еще 1 цикл на выполнение инструкции.
Если все это сложить, получится 1 + 4 + 4 + 1 = 10 циклов процессора плюс 2 + 2 + 4 = 8 циклов шины. Теперь нам нужно преобразовать циклы шины в циклы ЦП — 2 ГГц / 33 МГц = 60,606, поэтому мы можем сказать, что 1 цикл шины эквивалентен 61 циклу ЦП (округляя в большую сторону, потому что вы не можете получить долю цикла ЦП); а 8 циклов шины эквивалентны 488 циклам ЦП.
Теперь мы можем подключить это и сказать, что для завершения одного чтения может потребоваться 10 + 488 = 498 циклов ЦП. Есть 5 чтений, поэтому это может занять в 5 раз больше времени, поэтому может потребоваться 2440 циклов ЦП.
Итак... мы собрали кучу недостающей информации, и 2440 циклов процессора не являются одним из вариантов. В этом случае естественно попытаться угадать, почему вопрос бессмысленен. Недостающая информация подразумевает, что вопрос игнорировал различные важные вещи, и поэтому разумно предположить, что неправильный ответ, который вопрос считает правильным, будет меньше, чем любой правильный ответ, что вопрос неверен (и меньше, чем ответ мы получили от заполнения недостающей информации). Это предположение приводит нас к d. Approximately 1200 CPU cycles
.
С предполагаемым ответом мы можем работать в обратном направлении. Если предполагаемый ответ - 1200 циклов и есть 5 инструкций, то это будет 240 циклов ЦП на инструкцию. Если 1 цикл шины эквивалентен 61 циклу ЦП; тогда 240 циклов ЦП будут примерно эквивалентны 4 циклам шины (без учета времени, затрачиваемого на декодирование инструкции и т. д. в ЦП, что, вероятно, незначительно). Теперь мы можем представить, что, возможно, запрос на чтение имеет 32-битный адрес и ничего больше (нет типа транзакции), а может быть, ответ на чтение имеет 32-битный адрес и 64-битное значение и ничего больше (без типа транзакции). Конечно, это полная ерунда (отсутствие маршрутизатора/моста подразумевает, что ОЗУ либо 33 МГц, либо не существует; отсутствие типа транзакции означает, что нет очевидного способа определить, является ли что-либо на шине запросом или ответом, чтением или транзакцией). запись или любой другой вид транзакции — например, IRQ, или код ошибки, или когерентный трафик, или ..; отсутствие времени для устройства определить, что делать, означает, что устройство нашло способ для электроники превысить скорость света).
person
Brendan
schedule
17.12.2020