3

Увеличение количества инструкций за цикл или увеличение количества циклов являются допустимым выбором конструкции для производителей процессоров. Я понимаю теорию, но было бы намного яснее, если бы у меня был какой-то реальный пример из жизни.

Итак, кто-нибудь может дать мне пример, который может принести пользу как от этого выбора дизайна? Например, какое приложение / тип приложения / процесса использует большее количество IPC, а какое - большее число циклов.

2 ответа2

9

Я на самом деле разработал пару процессоров (много лет назад) и имею небольшой опыт в компромиссах.

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

Кроме того, при конвейерной обработке могут возникать условия, при которых конвейер "разрывается" из-за частых (и непредвиденных) ветвлений и других подобных проблем, что приводит к замедлению процессора для сканирования. Так что есть предел тому, сколько из этого можно сделать продуктивно.

Чтобы ускорить отдельные циклы, вам нужно сделать одну из трех вещей:

  1. Используйте более быструю технологию ("ежу понятно", если технология доступна, но новые, более быстрые технологии появляются не так часто, как раньше)
  2. Каким-то образом удалить логику из "критического пути" (возможно, удалив сложную инструкцию из набора команд или добавив другие ограничения на уровне программного обеспечения).
  3. Уменьшите задержку распространения по самым медленным путям передачи данных (что обычно означает "перебрасывание оборудования" в проблему снова - и снова с возможностью того, что это будет иметь неприятные последствия и замедлит процесс).

Так что это много компромиссов и немного чечетки через минное поле.

8

Компьютерный архитектор

Требуется гораздо больше инженерных усилий для увеличения IPC, чем просто увеличение тактовой частоты. Например, конвейерная обработка, кэши, многоядерные процессоры - все вместе введенные для увеличения IPC - становятся очень сложными и требуют много транзисторов.

Хотя максимальная тактовая частота ограничена длиной критического пути данной конструкции, если вам повезет, вы можете увеличить тактовую частоту без какого-либо рефакторинга. И даже если вам нужно уменьшить длину пути, изменения не настолько глубокие, как те, которые необходимы для упомянутых выше методов.

Однако в современных процессорах тактовые частоты уже доведены до экономических пределов. Здесь увеличение скорости происходит исключительно за счет увеличения IPC.

Программист

С точки зрения программиста, это пока проблема, так как он должен приспособить свой стиль программирования к новым системным компьютерным архитекторам. Например, параллельное программирование будет становиться все более и более неизбежным, чтобы использовать преимущества высоких значений IPC.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .