Arlleex 179 7 марта, 2018 Опубликовано 7 марта, 2018 · Жалоба Стало интересно разобраться с 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: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 212 7 марта, 2018 Опубликовано 7 марта, 2018 · Жалоба Из системы команд элементарно следует, что разделение нужно для операций модификации и чтения-записи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 7 марта, 2018 Опубликовано 7 марта, 2018 · Жалоба Ну вот и какой выигрыш тогда от двух раздельных шин? Ведь это как-то достаточно жирно выглядит, протащить 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 0 7 марта, 2018 Опубликовано 7 марта, 2018 · Жалоба Ну вот и какой выигрыш тогда от двух раздельных шин? Ведь это как-то достаточно жирно выглядит, протащить 32 бита до каждого Slave и еще потом замультеплексировать все это... Сделать полноценную двунаправленную шину схемно существенно сложней, чем две однонаправленных. Кроме того, увеличение числа транзисторов, висящих на линии, увеличивает ёмкость линии, а значит, увеличивает время её перехода из одного состояния в другое, т.е. снижает максимально возможную скорость передачи. Так что такое решение объясняется именно схемотехникой, а не логикой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 179 8 марта, 2018 Опубликовано 8 марта, 2018 · Жалоба И действительно, ответ на вопрос был ближе, чем я мог думать. Большое спасибо всем, кто откликнулся :beer: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться