Перейти к содержанию
    

Вопросы по шинной архитектуре

Стало интересно разобраться с Cortex-M3 поглубже, так сказать.

У ARM есть презентационный pdf-файлик, в котором есть следующая картинка:

image.jpg

 

Ну, в общем-то, криво-косо, но примерно оно так укладывается на реализованную систему команд и диаграмму работы конвейера. Криво-косо, наверное потому, что рисунок выше не претендует на полноту информации и, в общем-то, часть, возможно, важной информации не отражена.

В общем, есть вот на рисунке Write Data Register и Read Data Register. И вот они заходят на один из портов чтения/записи регистрового файла. Данные регистры, насколько моя логика смогла представить, необходимы для реализации команд Load/Store. Дальше я был удивлен, что шины данных (именно данных) реально две - первая шина данных записи, вторая - шина данных чтения. И действительно, Cortex-M3 реализует шинную инфраструктуру согласно протоколу AMBA 3 AHB-Lite Protocol. В ней действительно шин данных две:

image.jpg

 

Буквально наискосок пролистав данный документ, стало понятно (а может плохо смотрел?), что сигнал RW физически один - то есть подчиненное устройство (Slave, см. документ), например, встроенная SRAM-память микроконтроллера, всего лишь осуществляет запись и чтение по различным шинам, и в один момент времени этого делать не могут (нельзя поставить двухпортовую память, например). Ну вот и какой выигрыш тогда от двух раздельных шин? Ведь это как-то достаточно жирно выглядит, протащить 32 бита до каждого Slave и еще потом замультеплексировать все это... В голове, конечно, много разных мыслей на этот счет, но все это лишь догадки.

Гуру, отзовитесь, пожалуйста :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из системы команд элементарно следует, что разделение нужно для операций модификации и чтения-записи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вот и какой выигрыш тогда от двух раздельных шин? Ведь это как-то достаточно жирно выглядит, протащить 32 бита до каждого Slave и еще потом замультеплексировать все это...

Во втором документе есть прямой ответ на вопрос в главе 6.1 Data buses

Separate read and write data buses are required to implement an AHB-Lite system without using tristate drivers.

Видимо при этом экономятся такты на переключение направления шины.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вот и какой выигрыш тогда от двух раздельных шин? Ведь это как-то достаточно жирно выглядит, протащить 32 бита до каждого Slave и еще потом замультеплексировать все это...

 

Сделать полноценную двунаправленную шину схемно существенно сложней, чем две однонаправленных. Кроме того, увеличение числа транзисторов, висящих на линии, увеличивает ёмкость линии, а значит, увеличивает время её перехода из одного состояния в другое, т.е. снижает максимально возможную скорость передачи. Так что такое решение объясняется именно схемотехникой, а не логикой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И действительно, ответ на вопрос был ближе, чем я мог думать.

Большое спасибо всем, кто откликнулся :beer:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...