Сколько и сколько циклов размера потребуется для выполнения длинного слова, переданного в ЦП

Задача для архитектуры ColdFire процессора MCF5271:

вопрос

Я не понимаю, сколько и каких циклов размера потребуется для передачи длинного слова в ЦП или передачи слова. Я читаю таблицу и не вижу связи? Любые комментарии очень ценятся. Я приложил 2 примера с ответами.

Размер шины данных

1 ответ

Решение

Руководство MCF5271 обсуждает внешний интерфейс процессора в главе 17. Процессор реализует адресно-байтовое адресное пространство с 32-битной внешней шиной данных. Сигналы D[31:0] представляют шину данных, сигналы A[23:0] представляют адресную шину, а сигналы BS[3:0] (активный низкий уровень) представляют сигналы разрешения байтов. Несмотря на то, что шина данных имеет 32-разрядную ширину, подключенный к ней модуль памяти может иметь 32-разрядную, 16-разрядную или 8-разрядную ширину. Это называется размером порта памяти. На рисунке 17-2 из этой главы показано, как все эти сигналы связаны друг с другом.

введите описание изображения здесь

Таблица 17-2 из той же главы показывает поддерживаемые размеры передачи (определяется сигналом TSIZ[1:0]).

введите описание изображения здесь

Адресные сигналы A[0] и A 1 определяют выравнивание передачи. Выравнивание памяти определено в разделе 17.7 той же главы.

Поскольку операнды могут находиться на любой границе байта, в отличие от кодов операций, они могут быть смещены. Байт-операнд правильно выровнен по любому адресу, слово-операнд смещено по нечетному адресу, а длинное слово смещено по адресу, не кратному четырем. Хотя MCF5271 не устанавливает ограничений на выравнивание для операндов данных (включая относительную адресацию данных счетчика программ (ПК)), для смещенных операндов требуются дополнительные циклы шины.

Собрав всю эту информацию вместе, мы можем легко определить, сколько циклов требуется для передачи 1-байтового, 2-байтового, 4-байтового элемента данных в любое место памяти (выровненное или выровненное) через порт памяти размером 1 байт, 2-байтовый или 4-байтовый.

Давайте рассмотрим пример с картинки, которую вы прикрепили. Как сохранить длинное слово по адресу 0x0000003 через 32-битный порт памяти? Сосредоточьтесь на строках, где размер порта 32-битный. У нас A[1:0] = 11. Поэтому сначала необходимо выполнить однобайтовую передачу с BS[3:0] = 1110. Остальные три байта необходимо переместить в местоположения 0x0000004 (A[1:0] = 00), 0x0000005 (A[1:0] = 01) и 0x0000006 (A[1:0] = 10). Это может быть сделано либо с помощью трех однобайтовых передач (что займет три цикла), либо с помощью одной двухбайтовой передачи с последующей однобайтовой передачей (которая займет два цикла).

Другие вопросы по тегам