Что такое конвейер?как это увеличивает скорость исполнения? - PullRequest
11 голосов
/ 04 марта 2012

Я считаю, что нет никаких глупостей, если это вас беспокоит.У меня есть вопрос о конвейерной обработке?

Что такое конвейерная обработка?

Теория говорит:инструкция до завершения первой инструкции. конвейерная обработка приводит к более быстрой обработке , поскольку ЦПУ не нужно ждать одну инструкцию для завершения машинного цикла. "

Мой вопрос касаетсяя работаю в однопроцессорной системе, где одновременно может выполняться только одна инструкция, как это возможно, что одновременная операция получения следующей инструкции выполняется, когда мой процессор занят?Если мне не хватает концептуальной ясности, пожалуйста, осветите меня.Если есть отдельное оборудование, которое выполняет одновременную обработку, что это?Пожалуйста, объясните.

Ответы [ 5 ]

10 голосов
/ 04 марта 2012

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

Представьте, что вы хотите реализовать инструкцию «добавить-немедленно» MIPS, addi $d, $s, $t, которая добавляетцелое число сохраняется в регистре с именем $s до целого числа $t, непосредственно закодированного в инструкции, и сохраняет результат в регистре с именем $t.Подумайте о том, что вам нужно сделать, чтобы сделать это.Вот один из способов его разбить (например, только это не обязательно соответствует реальному оборудованию):

  1. Разобрать инструкцию (в двоичном коде), чтобы узнать, какая это инструкция.
  2. Как только вы узнаете, что это инструкция addi, проанализируйте регистры источника и назначения и литеральное целое число, которое нужно добавить.
  3. Считайте соответствующий регистр и вычислите сумму его значения инепосредственное целое число.
  4. Запишите результат в именованный регистр результатов.

Теперь запомните, все это должно быть встроено в аппаратное обеспечение, то есть с каждым из них связаны физические схемы.вещи.И если вы выполняете одну инструкцию за раз, три четверти этих цепей будут сидеть без дела, ничего не делая все время.Конвейерная обработка использует это наблюдение: если процессору необходимо выполнить две addi инструкции подряд, то он может:

  1. определить первую
  2. проанализировать первую,и идентифицируйте второй с цепями, которые в противном случае были бы простаивающими
  3. Добавьте первый и проанализируйте второй
  4. Запишите первый и добавьте второй
  5. Записатьвторой

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

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

9 голосов
/ 04 марта 2012

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

5 голосов
/ 04 марта 2012

Вместо того, чтобы пытаться втиснуть годичный университетский курс в это текстовое поле, я укажу вам учебник, в котором подробно объясняется весь этот предмет:

Hennessy, John L .; и Паттерсон, Дэвид А. Компьютерная архитектура, пятое издание: количественный подход . Морган Кауфман.

3 голосов
/ 05 марта 2012

Подумайте о тех Как это сделано или других телевизионных шоу, где вы видите фабрику в действии.Подумайте о том, что вы, возможно, читали или видели об автомобильном заводе.«Автомобиль» движется по заводу, начиная с рамы или кузова, и к нему добавляются вещи.Если бы вы сидели снаружи здания, то увидели бы шины и банки с краской, рулоны из проволоки и стали, входящие в здание, и постоянный поток автомобилей.Тот факт, что это единая (однопроцессорная) фабрика, не означает, что она не может иметь сборочную линию (конвейер).Однопроцессор с конвейером фактически не является обязательным, выполняя одну инструкцию за раз, так же как автомобиль на заводе не изготавливает одну машину за раз.Небольшая часть конструкции этого автомобиля происходит на каждой станции, через которую он проходит, аналогично выполнение вашей программы происходит немного на каждой станции в конвейере.

Типичными простыми этапами в конвейере являются выборка, декодирование и выполнение, три этапа.для выполнения одной инструкции требуется три такта, минимум (обычно намного больше из-за медленного ввода-вывода), скажем, три этапа в конвейере.Пока инструкция a находится в фазе выполнения, у вас есть команда b, которая декодируется, и команда c извлекается.Возвращаясь к автозаводу, они могут производить «одну машину каждые 7 минут», что не означает, что на изготовление машины уходит 7 минут, на изготовление машины может уйти неделя, но они заводят новую каждые 7 минут, и в среднемвремя на каждой станции таково, что вы можете выкатывать одну дверь каждые 7 минут.То же самое и здесь, с конвейером это не означает, что вы можете извлекать, декодировать и выполнять все три шага с тактовой частотой для процессора.Как и на фабрике, это скорее обычная вещь.Если вы можете передавать каждый из этапов конвейера с тактовой частотой процессора, то он будет выполнять одну инструкцию за такт (если она предназначена для этого).в наши дни вы не можете быстро передавать данные / инструкции, а также возникают задержки в конвейере и т. д., из-за которых вам приходится начинать сначала или отбрасывать часть прогресса, а некоторые - резервировать.подход к выполнению инструкций в процессоре.

0 голосов
/ 04 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...