Мне нравится думать об этом с помощью аналогии со стиркой. Инструкции ЦП похожи на кучу белья. Вы должны использовать как стиральную машину, так и сушилку для каждой загрузки. Допустим, что каждый занимает 30 минут, чтобы бежать. Это цикл часов. Старые процессоры запускали стиральную машину, затем запускали сушилку, каждый раз занимая 60 минут (2 цикла), чтобы завершить каждую загрузку белья.
Конвейерная обработка: конвейер - это когда вы используете оба одновременно - вы моете загрузку, затем, пока она сушится, вы стираете следующую загрузку. Первая загрузка занимает 2 цикла, но вторая загрузка завершается после еще 1 цикла. Таким образом, большинству нагрузок требуется только 1 цикл, кроме первой загрузки.
Суперскаляр: отнесите все белье в прачечную. Получить 2 шайбы и загрузить их обе. Когда они закончат, найдите 2 сушилки и используйте их оба. Теперь вы можете вымыть и высушить 2 загрузки за 60 минут. Это 2 нагрузки за 2 цикла. Каждая загрузка по-прежнему занимает 2 цикла, но вы можете сделать больше из них сейчас. Среднее время теперь составляет 1 нагрузку за цикл.
Суперскаляр с конвейером: промойте первые 2 загрузки, затем, пока они высыхают, загрузите шайбы следующими 2 загрузками. Теперь первые 2 загрузки по-прежнему занимают 2 цикла, а затем следующие 2 завершаются после еще 1 цикла. Таким образом, большую часть времени вы заканчиваете 2 загрузки в каждом цикле.
Несколько ядер: отдайте половину белья своей матери, у которой также есть 2 стиральные машины и 2 сушилки. Работая вместе, вы можете сделать вдвое больше. Это похоже на суперскаляр, но немного отличается. Вместо того, чтобы вам приходилось переносить все белье на каждую машину самостоятельно, она может сделать это одновременно с вами.
Это замечательно, мы можем стирать в восемь раз больше, чем раньше, за то же время без необходимости создавать более быстрые машины. (Удвойте тактовую частоту: стиральные машины, для работы которых требуется всего 15 минут.)
Теперь давайте поговорим о том, как все идет не так:
Пузырь в трубопроводе: у вас есть пятно, которое не появилось при стирке, поэтому вы решаете вымыть его снова. Теперь сушилка просто сидит там, ожидая что-нибудь сделать.
Cache Miss: Грузовик, который доставляет грязное белье, застрял в пробке. Теперь у вас есть 2 стиральные машины и 2 сушилки, но вы не выполняете работу, потому что вам приходится ждать.
В зависимости от того, как часто что-то идет не так, мы не всегда сможем выполнить 4 загрузки за цикл, поэтому фактический объем выполненной работы может варьироваться.
Предсказание филиала: Ну, вы начинаете стирать свою чистую одежду на случай, если вы испачкаете их позже, чтобы они уже были чистыми ... хорошо, вот где аналогия нарушается ...