alexPec 6 October 8, 2010 Posted October 8, 2010 · Report post Уважаемые, поясните пожалуйса, не пойму никак. На плане цыклон3 и 16-ти разрядная sram, подключена к ниосу через avalon-mm tristate bridge, младший адрес к памяти не подключен. Она работает правильно, но не пойму почему: работает и 8-ми, и 16-ти и (!внимание) 32-х разрядный доступ (еще раз:память снаружи 16-ти разрядная) Выполняю команду IOWR(RD)_8DIRECT() - пишет/читает по 8 бит, IOWR(RD)_16DIRECT() - пишет/читает по 16 бит, ну думаю щас сделаю 32-х разрядный доступ IOWR(RD)_32DIRECT() - старшее полуслово либо в 0-х либо в единицах будет - нет! пишет и читает по 32 разряда. Другая мысль возникла - драйвером ниос наверно разруливает софтово - написал тест, запись 10 млн.раз один адрес памяти - время абсолютно одинаковое, что при 16-ти, что при 32-х разрядной команде. Посмотрел дизасм - единственная разница при 16 разр. доступе команда sthio, при 32-х команда stwio. А физически то как это происходит? Ну 8-ми разрядный доступ можно разрулить байт-энейблами, а 32-х как? За два цикла пишет чтоли? Тогда почему время при 16 и 32 битном обращении одно и то же? Непонятно! Как то привык я понимать как все происходит, и если не понимаю - боюсь блин! Когда-нибудь непонимание это аукнется ведь! Quote Share this post Link to post Share on other sites More sharing options...
asoneofus 1 October 8, 2010 Posted October 8, 2010 · Report post пАтАму как вАлшеПство (С) Я А с каких пирогов (чем оценили) что одинаково? неуж встроенные ср-ва отладчика? Аль осцилограммка есть? PS уровни абстракции чудеса творят Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 October 8, 2010 Posted October 8, 2010 · Report post А с каких пирогов (чем оценили) что одинаково? неуж встроенные ср-ва отладчика? Аль осцилограммка есть? Я ж пишу, во-первых 10 млн. записей в память происходит за 4,3 сек, что при 16, что при 32 разрядном доступе (оценил секундомером незатейливо), во-вторых, код дизасма смотрел, разница между 16 и 32 разрядным доступом - одна команда соответственно sthio и stwio, подозреваю, что за одинаковое количество времени выполняются они, раз нет разницы в общем времени выполнения. Quote Share this post Link to post Share on other sites More sharing options...
vadimuzzz 0 October 8, 2010 Posted October 8, 2010 · Report post А физически то как это происходит? Ну 8-ми разрядный доступ можно разрулить байт-энейблами, а 32-х как? За два цикла пишет чтоли? Тогда почему время при 16 и 32 битном обращении одно и то же? подозреваю, что даже не 2 такта, а больше. там ведь наверное еще куча слейвов висит на шине. прицепите сигналтап и посмотрите, как транзакции происходят http://www.altera.com/literature/an/an446.pdf. там можно прямо сигналы к памяти смотреть на фоне дизассемблера. Quote Share this post Link to post Share on other sites More sharing options...
torik 0 October 11, 2010 Posted October 11, 2010 · Report post SRAM 16 бит, и пиши в нее хоть 16, хоть 32 слова, ее пропускная способность от этого не меняется. Если пишете 32 бит слова, то где-то появится фифо с входом 32 и выходом 16 бит. Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 October 11, 2010 Posted October 11, 2010 · Report post SRAM 16 бит, и пиши в нее хоть 16, хоть 32 слова, ее пропускная способность от этого не меняется. Если пишете 32 бит слова, то где-то появится фифо с входом 32 и выходом 16 бит. А фифо сопц-билдер сам ставит чтоли? Я то никаких фифо не ставил. И разве фифо не переполнится при постоянной записи (тестовый код, больше проц ничем не занят) 10 млн. раз? Или он wait генерит, пока два полуслова не запишет? Но тогда получается что он и при 16 бит доступе тоже wait генерит - время выполнения одно и тоже. Не рационально как-то. При 16 бит дотсупе wait не нужен по логике то. Эх железки под руками не будет еще 2 недели - отдали пока, посмотреть бы... Quote Share this post Link to post Share on other sites More sharing options...
vadimuzzz 0 October 11, 2010 Posted October 11, 2010 · Report post Эх железки под руками не будет еще 2 недели - отдали пока, посмотреть бы... посмотрите в моделсиме Quote Share this post Link to post Share on other sites More sharing options...
VladimirB 1 October 11, 2010 Posted October 11, 2010 · Report post А фифо сопц-билдер сам ставит чтоли? Я то никаких фифо не ставил. И разве фифо не переполнится при постоянной записи (тестовый код, больше проц ничем не занят) 10 млн. раз? Или он wait генерит, пока два полуслова не запишет? Но тогда получается что он и при 16 бит доступе тоже wait генерит - время выполнения одно и тоже. Не рационально как-то. При 16 бит дотсупе wait не нужен по логике то. Эх железки под руками не будет еще 2 недели - отдали пока, посмотреть бы... Я конечно больше по микробам с PLB специалист, но в ниосах я думаю не лучше - авалон тормозит по полной. Посчитайте сами: 10мегазаписей за 4.3 секунды - это 2.5мегазаписей в секунду. За время пока данные ползут по авалону нормальная SRAM может 20 раз их записать - т.е. как и у микроба всё упирается в производительность шины. Она кстати 32-битная, поэтому на неё разряность данных не влияет. А лишнюю быструю запись в SRAM с секундомером вы не увидите на фоне тормозов. Quote Share this post Link to post Share on other sites More sharing options...
torik 0 October 12, 2010 Posted October 12, 2010 · Report post А фифо сопц-билдер сам ставит чтоли? Да вроде да Quote Share this post Link to post Share on other sites More sharing options...