реклама на сайте
подробности

 
 
> Скорость чтения Microblaze'ом по шине PLB, помогите пожалуйста разобраться
powerc
сообщение Jan 19 2011, 08:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275



Здавствуйте, это мой первый топик на вашем форуме. Так что прошу сильно не пинать sm.gif

Мой вопрос таков:

У меня имеется digilent nexys2 кит. На нем я поднял микроблэйз (EDK 10.1)
Написал под него программку на Си, которая просто записывает данные в какой-либо периферийный модуль на шине PLB (будь то внешняя память, регистр GPIO). В программе просто бесконечный цикл for и через указатели пишу данные по адресам из xparameters.h (код выложу попозже, т.к. не разобрался еще как его тут правильно добавить).

Так вот, когда программа работает, чтение из абонента шины PLB происходит с частотой 23 периода CLK, а запись - 71 такт CLK. Это с учетом того, что я убрал из проекта дебагер.

Вопрос, собсно, таков: такова ли скорость записи и чтения по шине PLB на самом деле? И что я делаю неправильно для оценки периодичности операции записи и чтения по шине PLB?




Есть еще вопрос.

Я наткнулся на такую информацию на форуме Xilinx:

http://forums.xilinx.com/t5/Embedded-Proce...v460/td-p/24478

Посты 6,7 и 8. Там говорится, что ядро микроблэйз не поддерживает блочную запись и чтение (burst mode).

Правда ли это?


Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 9)
powerc
сообщение Jan 21 2011, 13:58
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275



Ну что, господа, процессор Microblaze не умеет читать из памяти каждый такт CLK?

Или умеет? Ответте кто знает пожалуйста, я всю голову себе сломал уже sad.gif
Go to the top of the page
 
+Quote Post
Leka
сообщение Jan 22 2011, 08:34
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(powerc @ Jan 21 2011, 17:58) *

Спрашивать про быстродействие MicroBlaze/Nios - примерно как в СССР - про секс. maniac.gif

Сообщение отредактировал Leka - Jan 22 2011, 08:39
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Jan 22 2011, 12:26
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(powerc @ Jan 21 2011, 16:58) *
Ну что, господа, процессор Microblaze не умеет читать из памяти каждый такт CLK?

Или умеет? Ответте кто знает пожалуйста, я всю голову себе сломал уже sad.gif


MB умеет читать за 1 такт из памяти, если это блочная память ПЛИС подключённая по шине DLMB и ILMB.

Что касается быстродействия PLB - то оно тормозной очень. Насколько я помню то чтение или запись по PLB занимает примерно 10 тактов шины.

Про 71 такт на запись - мне кажется либо у вас сама программа расположена в медленной памяти (при отключённом кешировании) и много времени уходит на чтение инструкций из памяти, либо вы невключили/отключили оптимизацию в компиляторе и он у вас генерит очень медленный код.

Чтобы писать или читать за 1 такт я обычно использую FSL шину - она очень быстрая и простая как грабли.
В ISE 12.4 уже вроде AXI вместо PLB появилась - вот тут наверное всё гораздо быстрее будет - надо только потестить.




Go to the top of the page
 
+Quote Post
Mad_max
сообщение Jan 22 2011, 12:57
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



23 и 71 такт действительно многовато. Причины Вам уже описали.
При выполнение инструкций из bram или кеша, можно добиться скорости
чтения/записи за 5-6 тактов, как опять же Вам уже сказали.

Шина plb burst транзакций не поддерживает.

Но, если необходимо передавать/принимать большой объем данных и процессор помимо этого обрабатывает еще какие-то задачи, то
используйте DMA. Тогда задача по перекидки данных снимется с и без того хрупких плеч mb.

Plb_ipif поддерживает DMA, как простое, так и Scatter Gather с кольцом дескрипторов.
Go to the top of the page
 
+Quote Post
powerc
сообщение Jan 23 2011, 10:28
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275



VladimirB, Mad_max, спасибо за ответы!


Да, я отключил вовсе оптимизацию, т.к. использовал в программе бесконечный цикл, а если не отключить оптимизацию, то бесконечный цикл компилятором исключается. Программист из меня - как из какашки пуля. sm.gif

Как раз в пятницу включил в проект СDMA- контроллер и начал читать его описание.


Насчет шины AXI - она еще народом особо не изучена, версия реализации сыренькая, и если встретятся какие-то глюки, то мы просто завалим нашу задачу. Да и, насколько я понимаю уже для ARMов предназначена, хотя и может быть использована и в проекте с MB.


>> Plb_ipif поддерживает DMA, как простое, так и Scatter Gather с кольцом дескрипторов.


Никак не возму в толк. DMA я могу добавить в IPIF интерфейс только custon IP или же я могу как-то добавить DMA в IPIF уже готового (допустим EMC) контроллера?


Вобщем на следующей неделе буду пробовать CDMA. О результатах отпишусь. На очереди FSL sm.gif
Go to the top of the page
 
+Quote Post
Дварфик
сообщение Apr 5 2011, 11:22
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 16-06-09
Пользователь №: 50 327



Почему [часто] народ пишет что-то вреде
Цитата
Вобщем на следующей неделе буду пробовать CDMA. О результатах отпишусь.
А на следующей неделе, да и через неделю "не отписывается". Это ж как оборвать на середине книжки словами КОНЕЦ.
Go to the top of the page
 
+Quote Post
powerc
сообщение Apr 12 2011, 14:59
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275



Дварфик, да, извиняюсь. Отписываю.

CDMA я попробовал, снял временные диаграммы. Работает все равно медленно (для моей задачи). Он врубает на шине режим burst (как раз-таки) но читает побайтно и поэтому выкачивает одно 32-разрядное слово за 12 тактов CLK.
FSL пока что не попробовал, занимаюсь сейчас попытками захватить шину PLB интерфейсом Master. Заодно пытаюсь разобраться как моделировать взаимодействие между шиной и своим модулем Master, но пока что ничего путного не накопал. BFM? Да, наверное, но пока не знаю.
Если кто знает как моделировать в EDK подскажите или дайте ссыль на туториал, а то я что-то закопался опять...
Go to the top of the page
 
+Quote Post
powerc
сообщение Apr 13 2011, 06:15
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 17-01-11
Пользователь №: 62 275



Про CDMA отписал в этой теме:

http://electronix.ru/forum/index.php?showt...mp;#entry914662
Go to the top of the page
 
+Quote Post
D-Luxe
сообщение May 14 2011, 21:22
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642



Цитата(VladimirB @ Jan 22 2011, 16:26) *
MB умеет читать за 1 такт из памяти, если это блочная память ПЛИС подключённая по шине DLMB и ILMB.

Что касается быстродействия PLB - то оно тормозной очень. Насколько я помню то чтение или запись по PLB занимает примерно 10 тактов шины.

Про 71 такт на запись - мне кажется либо у вас сама программа расположена в медленной памяти (при отключённом кешировании) и много времени уходит на чтение инструкций из памяти, либо вы невключили/отключили оптимизацию в компиляторе и он у вас генерит очень медленный код.

Чтобы писать или читать за 1 такт я обычно использую FSL шину - она очень быстрая и простая как грабли.
В ISE 12.4 уже вроде AXI вместо PLB появилась - вот тут наверное всё гораздо быстрее будет - надо только потестить.

Тоже сталкивался с этой проблемой только на PowerPC. Чтение занимало порядка 70-80 тактов. Вы мне глаза открыли кэширование надо было включить.


--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти.
(с) Уилл Роджерс
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016