2016-02-06 3 views
1

Итак, я изучаю архитектурные симуляторы (в основном, simplescalar), чтобы выяснить, что на самом деле происходит во внутренних микропроцессорах. Одна замечательная вещь, которую я заметил, это то, что весь трубопровод был написан назад! То есть, в чисто последовательном цикле while, этап обратной записи приходит до стадии эмиссии, которая предшествует стадии декодирования и так далее.Конвейеризация в архитектурных симуляторах

В чем смысл этого? Предположим, что вывод гипотетического этапа fetch() хранится в общем буфере («защелка»), к которому обращается вход этапа decode(). Поскольку это чисто последовательный цикл while, я не вижу проблемы, когда этот запирающий/буфер будет перезаписан. Однако ответы на такие вопросы, как this: утверждают, что имитация конвейера в обратном порядке позволяет избежать этой «проблемы»? Некоторая проницательность/руководство в правильном направлении будут высоко оценены!

ответ

2

Я не знаю Simplescalar очень хорошо, но я видел это в других архитектурных симуляторах.

Внешний контур трубопровода должен представлять собой один цикл процессора. Представьте, что это первый цикл и - для простоты - передний конец имеет ширину. Что произойдет, если каждый этап должен быть выполнен в порядке fetch до commmit?

cycles 1 
- fetch: instruction 1 (place it in fetch/decode latch) 
- decode: instruction 1 (place it in decode/rename latch) 
- rename: instruction 1 (place it in rename/dispach latch) 
- dispatch: instruction 1 (place it in issue queue) 
- issue: instruction 1 
etc... 

Вы не моделировали ничего полезного здесь, так как это не конвейер. Что происходит, когда цикл выполняет каждый этап в порядке commit до fetch?

cycle 1 
- issue: noop 
- dispatch: noop 
- rename: noop 
- decode: noop 
- fetch: instruction 1 (place it in fetch/decode latch) 

cycle 2 
- issue: noop 
- dispatch: noop 
- rename: noop 
- decode: instruction 1 (place it in decode/rename latch) 
- fetch: instruction 2 (place it in fetch/decode latch) 

Это не очень сложная идея, но это помогает упростить симулятор.

+0

Никогда не думал об этом таким образом ... большое спасибо вам, сэр! – nirvanaswap