Что такое “Инструкции на Цикл”?

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

Например, у меня создалось впечатление, что четыре ядра процессора могли выполнить четыре инструкции на цикл, таким образом, четыре ядра процессора, достигающие 2 ГГц, выполнят 8 миллиардов операций в секунду. Имеет место это?

Я уверен, что это упрощает вещи, но если существует руководство или что-то еще, что я могу использовать для разъяснения меня, я определенно открыт для идей.

23
задан 21.04.2012, 12:47

6 ответов

Ключевыми словами, которые необходимо, вероятно, искать, является CISC, RISC и суперскалярная архитектура.

CISC

В архитектуре CISC (x86, 68000, VAX) одна инструкция мощна, но требуется несколько циклов для обработки. В более старой архитектуре количество циклов было зафиксировано, в наше время количество циклов на инструкцию обычно зависит от различных факторов (удачное обращение в кэш / мисс, предсказание ветвлений, и т.д.). Существуют таблицы для поиска того материала. Часто существуют, также упрощает для фактического измерения, сколько циклов определенная инструкция при определенных обстоятельствах берет (см. счетчики производительности).

Если Вы интересуетесь деталями для Intel, Intel 64 и Справочник Оптимизации IA-32 являются очень хорошим чтением.

RISC

RISC (ARM, PowerPC, SPARC) архитектура обычно означает, что одна очень простая инструкция берет только некоторых (часто только один) цикл.

Суперскалярный

Но независимо от CISC или RISC там суперскалярная архитектура. ЦП не обрабатывает одну инструкцию за другим, но работает над многими инструкциями одновременно, очень как сборочный конвейер.

Последствие: Если Вы просто будете искать циклы для каждой инструкции Вашей программы и затем будете добавлять их всех, то Вы закончите с числом путь к высоко. Предположим, что у Вас есть одноядерный ЦП RISC. Время для обработки единственной инструкции никогда не может быть меньше, чем время одного цикла, но полная пропускная способность может быть несколькими инструкциями на цикл.

22
ответ дан 07.12.2019, 09:48
  • 1
    Мне аналогия "сборочного конвейера" предлагает просто простую конвейерную обработку, не суперскалярную архитектуру. Суперскалярный включает части тиражирования аппаратных средств ЦП (например, этап конвейера, который является узким местом) улучшить пропускную способность. – sblair 26.07.2009, 00:18

Не точно. Цикл, к которому Вы обращаетесь, является тактом и начиная с самого современного конвейера процессоров, требуется несколько тактов для 1 инструкции выполниться. (Это - хорошая вещь, потому что она позволяет другим инструкциям начать выполнение даже, прежде чем 1-я инструкция закончится.) Принятие самого идеального обстоятельства, это, вероятно, были бы приблизительно 8 миллиардов IPC, но все виды вещей происходят как зависимости, пузыри в конвейере, ответвлениях, и т.д. таким образом, оно не всегда удается.

Извините, это слишком сложно для прямого ответа. Jon Stokes делает хорошее задание объяснения его с этой статьей.

3
ответ дан 07.12.2019, 09:48

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

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

2
ответ дан 07.12.2019, 09:48

Ludwig объяснил различие между CISC и RISC, но забыл упоминать, что, в то время как инструкции RISC просты и быстры, они делают мало индивидуально и таким образом, необходимо представить несколько в виде строки вместе, чтобы сделать то же самое как единственную инструкцию в процессоре CISC. В результате некоторые инструкции RISC будут быстрее, другой не будет.

1
ответ дан 07.12.2019, 09:48

Циклы являются больше на базовое понятие. Каждое ядро действительно там владеет циклами параллельно.

0
ответ дан 07.12.2019, 09:48

Путем мне нравится думать о нем, с аналогией прачечной. Инструкции ЦП похожи на загрузки прачечной. Необходимо использовать и шайбу и сушилку для каждой загрузки. Скажем, то, что каждый занимает 30 минут для выполнения. Это - такт. Старые центральные процессоры выполнили бы шайбу, затем выполнили бы сушилку, заняв 60 минут (2 цикла) для окончания каждой загрузки прачечной, каждый раз.

Конвейерная обработка: конвейер - при использовании обоих одновременно - Вы промываете загрузку, затем в то время как он сохнет, Вы промываете следующую загрузку. Первая загрузка берет 2 цикла для окончания, но вторая загрузка закончена после еще 1 цикла. Так, для большинства загрузок только нужен 1 цикл, кроме первой загрузки.

Суперскалярный: Возьмите всю прачечную к Лондромету. Получите 2 шайбы и загрузите их обоих. Когда они будут сделаны, найдите 2 сушилки и используйте их обоих. Теперь можно промыть и высушить 2 загрузки через 60 минут. Это - 2 загрузки в 2 циклах. Каждая загрузка все еще берет 2 цикла, но можно сделать больше из них теперь. Среднее время является теперь 1 загрузкой на цикл.

Суперскалярный с Конвейерной обработкой: Промойте первые 2 загрузки, затем в то время как они сушат, загружают шайбы следующими 2 загрузками. Теперь, первые 2 загрузки все еще берут 2 цикла, и затем следующие 2 закончены после еще 1 цикла. Так, большую часть времени Вы заканчиваете 2 загрузки в каждом цикле.

Несколько ядер: Дайте половину своей прачечной Вашему родительскому элементу, у которого также есть 2 шайбы и 2 сушилки. С вами обоими сотрудничество можно получить вдвое больше сделанное. Это подобно суперскалярному, но немного отличающееся. Вместо Вас имеющий необходимость переместить всю прачечную в и от каждой машины самих, она может сделать это в то же время, что и Вы.

Здорово, мы можем постирать в восемь раз больше вещей, чем прежде за то же количество времени, не имея необходимость создавать более быстрые машины. (Удвойте тактовую частоту: Стиральные машины, которым только требуются 15 минут для выполнения.)

Теперь, давайте говорить о том, как вещи идут не так, как надо:

Конвейерный пузырь: у Вас есть окраска, которая не проявлялась, таким образом, Вы решаете промыть ее снова. Теперь сушилка просто находится там, ожидая чего-то, чтобы сделать.

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

В зависимости от того, как часто идут не так, как надо вещи, мы не сможем всегда получить 4 загрузки, сделанные каждый цикл, таким образом, фактический сделанный объем работы сможет варьироваться.

Предсказание ветвлений: Ну, Вы начинаете стирать вещи на своей чистой одежде в случае, если Вы окрашиваете их позже, таким образом, они будут чистыми уже... хорошо, это - то, где аналогия ломается...

32
ответ дан 07.12.2019, 09:48
  • 1
    Хорошая аналогия. Я собираюсь украсть его. использование – dmckee 17.09.2009, 21:21

Теги

Похожие вопросы