Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос о микро-архитектуре MIPS1
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Разработка цифровых, аналоговых, аналого-цифровых ИС
FROL_256
Здравствуйте, уважаемые форумчане!
Мой вопрос:

Мы знаем что в MIPS конвейер устроен таким образом: F D X M W

Причем, на операции с АЛУ отводится 1 клок, а на операции с памятью, как правило, 2 клока.
И смысл F D X M W конвейера именно в том, чтобы на 1 клоке посчитать смещение через АЛУ, а на 2 уже реализовать выборку из памяти, это понятно.

Однако, АЛУ ведь тоже довольно тяжелая вешь, почему бы не разбить его на 2 стадии.
На первой стадии мы просто вычисляем все что нужно - то есть все варианты операций. На 2-ую стадию перенесим все мультиплексоры (включая bypass), которые выбирают нужный результат и записывают его куда надо.

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

Поэтому интересует:
1) Насколько такая идея оправдана?
2) Где обычно находится боттлнек в MIPS конвейере? Возможно, ваш личный опыт.

Спасибо!

PS: больно не бейте, я в этом деле любитель sm.gif
yes
с МИПСом не работал (если не секрет - сами пишете или взяли какой готовый?)
но из опыта: если не для ПЛИС, то ожидания памяти/шины кэш-промахи и т.п. сильно тормозит.
операцию записи можно вынести в отдельный буффер - ну то есть отложеные записи, но тогда нужно и поддерживать асинхронные исключения по ошибкам записи.
а чтение нужно ждать...

ну и АЛУ в кремнии (не ПЛИС) обычно самое быстрое - критических путей там нет, а вот всякие памяти (таги кэша, регистры и т.п.) отъедают много времени, поэтому, имхо, и для "простых" операций отводят лишний такт, а не для логики - и так успевает

если интересно, советую по TMS320C6000 почитать описание конвеера - весьма занимательно : spru733a.pdf
FROL_256
Спасибо! sm.gif

Пишу свой, но не совсем MIPS, делаю MIPS-like. Со своей системой команд, более минималистичной.
В мипсе мне не нравятся некоторые вещи ... например почему нету команды сложения с переносом но зато есть команда вытаскивания флага переноса.
это на мой взляд довольно странно.
yes
не готов обсуждать специфику ISA MIPS (давно было дело), но по-моему, плотность кода и эффективность DMIPS у ARM/SPARC/MIPS одинакова (ес-сно не THUMB и MIPS16)
PPC вроде повеселее, но она и сложнее преизрядно.
SPARC на некотором коде побыстрее, но цена - огромный регистровый файл (реже лазит в память)
kleverd
Цитата(FROL_256 @ Jul 22 2014, 00:46) *
Пишу свой, но не совсем MIPS, делаю MIPS-like. Со своей системой команд, более минималистичной.
В мипсе мне не нравятся некоторые вещи ... например почему нету команды сложения с переносом но зато есть команда вытаскивания флага переноса.
это на мой взляд довольно странно.


А, если не секрет, каков смысл в этом деянии?
Набор команд изменится, существующие компиляторы станут несовместимы с Вашим творением.
Или написание собственного компилятора также входит в план?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.