Я на самом деле разработал пару процессоров (много лет назад) и имею небольшой опыт в компромиссах.
Чтобы увеличить количество инстанций за цикл (или, что более вероятно, уменьшить количество циклов на инструкцию), вам, как правило, приходится "подбрасывать оборудование" в проблему - добавлять дополнительные вентили, защелки и мультиплексоры. За пределами определенного момента (который был пройден около десяти лет назад) вы должны "выполнять конвейер" и работать над несколькими инструкциями одновременно. Это увеличение сложности не только увеличивает базовые затраты (поскольку стоимость чипа связана с областью, которую он занимает), но также увеличивает вероятность того, что ошибка будет устранена в ходе первоначальной проверки проекта и приведет к неисправному чипу, который должен быть "отдохнувшим" - основной удар по расписанию. Кроме того, увеличение сложности увеличивает нагрузки, так что в отсутствие еще большего количества оборудования длина цикла фактически увеличивается. Вы можете столкнуться с ситуацией, когда добавление оборудования замедляет работу. (На самом деле, я видел, как это произошло в одном случае.)
Кроме того, при конвейерной обработке могут возникать условия, при которых конвейер "разрывается" из-за частых (и непредвиденных) ветвлений и других подобных проблем, что приводит к замедлению процессора для сканирования. Так что есть предел тому, сколько из этого можно сделать продуктивно.
Чтобы ускорить отдельные циклы, вам нужно сделать одну из трех вещей:
- Используйте более быструю технологию ("ежу понятно", если технология доступна, но новые, более быстрые технологии появляются не так часто, как раньше)
- Каким-то образом удалить логику из "критического пути" (возможно, удалив сложную инструкцию из набора команд или добавив другие ограничения на уровне программного обеспечения).
- Уменьшите задержку распространения по самым медленным путям передачи данных (что обычно означает "перебрасывание оборудования" в проблему снова - и снова с возможностью того, что это будет иметь неприятные последствия и замедлит процесс).
Так что это много компромиссов и немного чечетки через минное поле.