2012-01-02 2 views
2

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

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

Пример: Влияние поведения филиала? (не удалось найти простое объяснение с диаграммой, иллюстрирующей, как работает опасность)

+0

Зачем вам все это? Вы пытаетесь вручную оптимизировать ARM-код asm? Или, может быть, написать конец компилятора? Если вы объясните свою мотивацию, это поможет вам получить более конкретные ответы. –

+0

Просто пытаюсь понять основные понятия конвейерной обработки. Я редактировал свой вопрос, чтобы сделать его более ясным. – NLed

+4

[Статья в Википедии] (http://en.wikipedia.org/wiki/Hazard_ (computer_architecture)) о рисках довольно хороша. –

ответ

2

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

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

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

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

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

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

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

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

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

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

+1

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

+0

Один из лучших ответов, которые я получил здесь. Чак вас так сильно интересует этот очень информативный ответ !!!!! – NLed

+0

Я мог бы написать это намного лучше, но спасибо за комплимент в любом случае ... Передайте его вперед ... Отвечайте на вопросы самостоятельно и продолжайте переполнение стека. –

Смежные вопросы