Вопросы о порядке байтов при традиционном 5-ступенчатом проектировании ЦП Mips - PullRequest
0 голосов
/ 02 августа 2020

Я работаю над разработкой традиционного 5-ступенчатого конвейерного процессора MIPS с использованием Verilog на платформе FPGA. В моих справочных материалах показан пример с прямым порядком байтов, а я решил разработать процессор с прямым порядком байтов. Мой вопрос в том, будет ли разница при декодировании инструкций или загрузке / хранении данных и что это конкретно?

Я использовал два X-компилятора, которые с прямым порядком байтов и прямым порядком байтов соответственно, чтобы скомпилировать фрагмент примерного кода сборки следующим образом: введите описание изображения здесь В центре находится прямое преобразование с прямым порядком байтов справа и исходным кодом сборки слева.

Очевидно, что эти два преобразования выполняются в обратном порядке каждого байта на инструкцию, это эффект порядка байтов? Так будет ли модуль декодирования инструкций декодировать инструкции в обратном порядке с разным порядком байтов?

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Мой вопрос: будет ли разница при декодировании инструкций или загрузке / сохранении данных и что это конкретно?

Вы должны объединить байты в слова в памяти инструкций и памяти данных с использованием соответствующего порядка байтов, так что этапы конвейера, включая IF / выборку, ID / декодирование, EX / alu, MEM и WB, не зависят от выбора порядка байтов. соответствующий порядок следования байтов, когда инструкции считываются как 32-битные слова операцией выборки инструкций, и имеет память данных собирать / дизассемблировать байты в соответствующем порядке следования байтов при чтении / записи 32-битных или 16-битных данных из / в cache.

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

0 голосов
/ 02 августа 2020

Будут различия, которые возникают, когда размер доступа для загрузки / сохранения, например, 8-битный, 16-битный, 32-битный, не соответствует размеру собственной шины, например, 8-битный, 16-битный или 32-битный .

Затем порядок байтов определяет, как данные преобразуются во внутренние данные и внешнюю шину и, следовательно, в пространство внешней памяти.

Этот классический пример в Википедии показывает разницу, тогда размер внутренних данных составляет 32 бита, а внешней шины и памяти - 8 бит.

...