Каковы общие риски трубопроводов трубопроводов? - PullRequest
2 голосов
/ 02 января 2012

Я пытаюсь понять основные понятия об опасностях в трубопроводах. Я знаю, как реализуются трубопроводы, но я не уверен, как опасности влияют на эффективность трубопроводов.

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

Пример. Эффекты поведения Бранча? (не могу найти простое объяснение с диаграммой, которая иллюстрирует, как работает опасность)

1 Ответ

2 голосов
/ 02 января 2012

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

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

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

I / O - это наша самая большая проблема, а не процессор, были изобретены конвейеры для решения проблемы, когда процессор был узким местом.например, прогнозирование ветвления, вызывающее случайные циклы выборки, усугубляет проблему ввода-вывода ...

Ссылка на википедию, предоставленная Саймоном, также говорит о других опасностях, таких как чтение перед записью.Если в исходном коде написано местоположение, то после написания прочитайте его обратно, это то, что должно произойти в коде.Если компилятор и архитектура оборудования и т. Д. Приводят к тому, что это не происходит так, как оно было написано, программное обеспечение может дать сбой / сбой.Проблема может возникать из-за параллельного выполнения, если чтение и запись разделены на разные исполнительные блоки, и в исполняющем модуле чтения содержится меньше материала или что-либо еще, выполняющее чтение до того, как произойдет исполнительный модуль с записью, есть ваша проблема.Это может также легко происходить за пределами ядра процессора, но также и в системе памяти или кеша.Чтение и запись могут осуществляться по разным путям в контроллере памяти, один из которых вызывает чтение строки кэша, а другой - в конце строки в буфере записи, и чтение может произойти первым.Пишет обычно огонь и забывает, вот адрес, вот данные, а посыльный принимает сообщение и все готово.Точно так же, как отправка посылки в FedEx, вот коробка с адресом, моя часть выполнена, но коробка действительно не доставляется в течение нескольких дней.Чтение, вы должны дождаться возвращения результата, который, ну, может быть, значительно дольше для исполнительного блока, будь то в процессоре или контроллере памяти.Все это должно управляться на системном уровне, вы можете решить проблему чтения до записи в параллельном процессоре только для того, чтобы привязанная к нему система памяти работала не так, как вы ожидали, просто потому, что инструкция записи попала в систему памяти до того, какчитайте, вы думаете, что выиграли битву.Вот почему такие решения, как отсрочка отсрочки, часто заканчиваются nops.(системная инженерия, когда речь идет о языках программирования и людях, которые пишут, что код должен включать людей и их способы ведения дел).

Эти опасности, особенно как описано в ссылке в Википедии

http://en.wikipedia.org/wiki/Hazard_(computer_architecture)

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

Скажем, ваш трубопровод - это автомобили, каждый шаг по конвейеру ставит одну вещь на автомобиль, скажем, ветровое стекло или колеса или двигатель, соединенный с шасси и т. Д. Теперь у нас есть десятилетние запасы "точно в срок" и на этом на этой сборочной линии. но в некоторых странах происходит стихийное бедствие, которое влияет на поставку синей краски в мире, и на сборочной линии, которая производит двери, которые питают сборочную линию, на которой производят автомобиль, закончились синие двери. Что вы делаете с синими машинами в очереди? В отличие от получения прерывания данных в цикле чтения, вы должны остановить конвейер, вызвать обработчик прерывания и вернуться к выполнению, начиная с затронутой инструкции или той, которая следует за ней.

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

...