Здравствуйте, уважаемые форумчане!
Мой вопрос:
Мы знаем что в MIPS конвейер устроен таким образом: F D X M W
Причем, на операции с АЛУ отводится 1 клок, а на операции с памятью, как правило, 2 клока.
И смысл F D X M W конвейера именно в том, чтобы на 1 клоке посчитать смещение через АЛУ, а на 2 уже реализовать выборку из памяти, это понятно.
Однако, АЛУ ведь тоже довольно тяжелая вешь, почему бы не разбить его на 2 стадии.
На первой стадии мы просто вычисляем все что нужно - то есть все варианты операций. На 2-ую стадию перенесим все мультиплексоры (включая bypass), которые выбирают нужный результат и записывают его куда надо.
Как мне стало казаться, это многое упростит и улучшит. Во-первых, меньше bypass-а и проще определять, когда процессор простаивает а когда, нет, т.к. все команды занимаю 2 клока и точка.
Во-вторых, алу станет меньше и возможно вырастет частота ... но я понимаю что здесь надо считать конечно на практике и наверное многое зависит от того как память будет реализована.
Поэтому интересует:
1) Насколько такая идея оправдана?
2) Где обычно находится боттлнек в MIPS конвейере? Возможно, ваш личный опыт.
Спасибо!
PS: больно не бейте, я в этом деле любитель