Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы по шинной архитектуре
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Arlleex
Стало интересно разобраться с Cortex-M3 поглубже, так сказать.
У ARM есть презентационный pdf-файлик, в котором есть следующая картинка:


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


Буквально наискосок пролистав данный документ, стало понятно (а может плохо смотрел?), что сигнал RW физически один - то есть подчиненное устройство (Slave, см. документ), например, встроенная SRAM-память микроконтроллера, всего лишь осуществляет запись и чтение по различным шинам, и в один момент времени этого делать не могут (нельзя поставить двухпортовую память, например). Ну вот и какой выигрыш тогда от двух раздельных шин? Ведь это как-то достаточно жирно выглядит, протащить 32 бита до каждого Slave и еще потом замультеплексировать все это... В голове, конечно, много разных мыслей на этот счет, но все это лишь догадки.
Гуру, отзовитесь, пожалуйста rolleyes.gif
Plain
Из системы команд элементарно следует, что разделение нужно для операций модификации и чтения-записи.
Baser
Цитата(Arlleex @ Mar 7 2018, 18:31) *
Ну вот и какой выигрыш тогда от двух раздельных шин? Ведь это как-то достаточно жирно выглядит, протащить 32 бита до каждого Slave и еще потом замультеплексировать все это...

Во втором документе есть прямой ответ на вопрос в главе 6.1 Data buses
Цитата
Separate read and write data buses are required to implement an AHB-Lite system without using tristate drivers.

Видимо при этом экономятся такты на переключение направления шины.
SII
Цитата(Arlleex @ Mar 7 2018, 19:31) *
Ну вот и какой выигрыш тогда от двух раздельных шин? Ведь это как-то достаточно жирно выглядит, протащить 32 бита до каждого Slave и еще потом замультеплексировать все это...


Сделать полноценную двунаправленную шину схемно существенно сложней, чем две однонаправленных. Кроме того, увеличение числа транзисторов, висящих на линии, увеличивает ёмкость линии, а значит, увеличивает время её перехода из одного состояния в другое, т.е. снижает максимально возможную скорость передачи. Так что такое решение объясняется именно схемотехникой, а не логикой.
Arlleex
И действительно, ответ на вопрос был ближе, чем я мог думать.
Большое спасибо всем, кто откликнулся beer.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.