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

 
 
 
Reply to this topicStart new topic
> проконсультируйте по Wishbone (или же Avalon, если я не путаю) : как реализуется конвеер?, интересно сравнение с AXI (соединение DATA FLOW)
yes
сообщение Mar 23 2009, 13:11
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



когда-то des00 написал,

http://electronix.ru/forum/index.php?showt...st&p=432497

что я понял так: в wishbone есть возможность реализовать что-то подобное AXI прямому и возвратному пути

но почитав описание wishbone я понял, что транзакция всегда должна быть закончена (возможно RETRY-ем или SPLIT-ом), но пока транзакция активна канал (шина) между этими мастером и слейвом занята никакие другие транзакцие по ней не проодят

то есть при конфигурации DATA FLOW (pipeline) для шины wisbone несколько "открытых" транзакций возможны только между разными парами мастер-слейв

и если какие-то мастер-слейв в середине цепочки держат транзакцию, то обменятся данными (в том же направлении) между узлами расположенными с разных сторон от этой пары нет возможности

так ли это?

или все-таки я чего-то недопонял и такая конфигурация wishbone позволяет испускать мастеру кучу транзакций (не дожидаясь завершения предыдущих), а затем получать ответы слэйвов в out-of-order последовательности (как сделано в AXI)
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 23 2009, 13:41
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(yes @ Mar 23 2009, 07:11) *
когда-то des00 написал,

http://electronix.ru/forum/index.php?showt...st&p=432497

что я понял так: в wishbone есть возможность реализовать что-то подобное AXI прямому и возвратному пути


вы меня не так поняли, я имел в виду что в спецификации на wishbone, в отличие от AMBA AXI рассмотрен рекомендуемый способ конвейеризации по тактовой (Wishbone Register Feedback), а не по dataflow control.

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

Именно это и отсутствие механизма предопределенных бурстов (но это обходится тегами) делает вишбон не подходящим для высоко-производительных систем.


--------------------
Go to the top of the page
 
+Quote Post
yes
сообщение Mar 23 2009, 15:51
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(des00 @ Mar 23 2009, 16:41) *
вы меня не так поняли, я имел в виду что в спецификации на wishbone, в отличие от AMBA AXI рассмотрен рекомендуемый способ конвейеризации по тактовой (Wishbone Register Feedback), а не по dataflow control.

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

Именно это и отсутствие механизма предопределенных бурстов (но это обходится тегами) делает вишбон не подходящим для высоко-производительных систем.


у меня вопрос скорее теоретический:
организация AXI (в виде независимых каналов, в котором для "синхронизации" используются valid/ready (то есть от получателя данных идет только один выход ready)) мне очень нравится и до появления AXI использовал что-то подобное для передачи данных между своими корами (то есть тогда, когда стандартной шины не нужно было)
вряд ли в реальных системах в ближайшее время будет использована AXI (у нас АЗИКовские проекты на AMBA 2.0, в ксайлинсах та же АМБА и иногда кореконнект)

сейчас есть вероятность что буду юзать avalon + nios для альтеры, но альтернативный путь использовать wishbone и mico32 (тут опять же бифуркация - и для латтис и для альтеры)
но все-таки для альтеры вишбон не совсем удобно (да и авалон вроде как то же самое) мне стало интересно - могу ли я организовать для вишбона скоростную конвееризированную передачу - читаю доку и не могу понять как smile.gif, вроде там есть некий механизм таков, но это совсем не те таги, что в AXI...

то есть упираться в вишбон вместо авалона для альтеры смысла нет, и такого конвеера как в AXI нитам нитам нету? так?

и правильно ли я понял - что при обращениях по вишбону (с Wishbone Register Feedback или комбинаторным фидбеком classic) транзакция не может быть один такт (ну то есть при single read/write доступе к слэйву без вэйтстейтов требуется минимум 2 такта - один на "закрытие шины" CYC_O==0 STB_O==0) и конвеерезировать так как в АМБЕ или кореконекте (100% bus utilisation) не возможно? выигрышь в вишбоне может быть только на бёрстах, когда слэйв умеет предсказать адрес?
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 24 2009, 03:11
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата
вроде там есть некий механизм таков, но это совсем не те таги, что в AXI


этот механизм в Wishbone нужен для расширяемости возможности шины, например передачи индексов канала, меток начала пакетов и т.д.

Цитата
то есть упираться в вишбон вместо авалона для альтеры смысла нет, и такого конвеера как в AXI нитам нитам нету? так?


Вы говорите про outstandings transactions. этого в Wishbone нет, так же как и в Avalon. Мастер держит запрос (в любом режиме) до тех пор, пока он не закончиться (либо закончиться фаза записи/чтения в classic, либо будет закончена транзакция с cty == 3'b111).

Цитата
и правильно ли я понял - что при обращениях по вишбону (с Wishbone Register Feedback или комбинаторным фидбеком classic) транзакция не может быть один такт (ну то есть при single read/write доступе к слэйву без вэйтстейтов требуется минимум 2 такта - один на "закрытие шины" CYC_O==0 STB_O==0) и конвеерезировать так как в АМБЕ или кореконекте (100% bus utilisation) не возможно? выигрышь в вишбоне может быть только на бёрстах, когда слэйв умеет предсказать адрес?


нет не правильно, в вишбоне возможна транзакция за 1 такт. для этого в слейве нужно реализовать.

ack_o <= cyc_i & stb_i;

но такой слейв на чтение получается по сути асинхронным, что не всегда возможно реализовать при чтении например с блочной памяти, в отличие от AXI в Wishbone запрещено держать ack_o(ready) в единице, сигналы подтверждения должны формироваться при cyc_i = 1 и stb_i = 1 (classic only).

в Wishbone classic введено понятие Block Write/Read в этом случае транзакции следуют одна за другой без перерывов. При WS = 0 получается 100% использование шины, но тактовая ......

Кстати обратите внимание в Wishbone Register Feedback b3 нет ограничения на диапазон инкремента адреса, в AXI такое ограничение есть.

Цитата
о все-таки для альтеры вишбон не совсем удобно (да и авалон вроде как то же самое)


если вы не используете дополнительных тегов, которых нет в Avalon и выходов err_o, rty_o то Wishbone Master/Slave можно без проблем подцепить к Avalon, поэтому для альтеры без разницы что использовать. Нужно будет только сделать Avalon обертки для Wishbone слейвов.

Вот некоторые наброски по Wishbone которые я сделал когда разбирался с этой шиной

для альтеры моно
Прикрепленные файлы
Прикрепленный файл  _____________Wishbone.txt ( 4.53 килобайт ) Кол-во скачиваний: 76
 


--------------------
Go to the top of the page
 
+Quote Post
yes
сообщение Mar 24 2009, 11:50
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



спасибо за разъяснения, но все-таки уточню вопрос

эти Block Write/Read подразумевают, что операции проводятся между одними и теми же мастером и слейвом?
если мастер хочет сменить слейва или вообще произошел реарбитраж и шиной должен овладеть другой мастер - то обязательно должен быть вставлен цикл с CYC_O==0?

например, пусть есть два блока блочной памяти (разные wishbone слейвы), тактируемой инверсным клоком и формирующим ack_o в том же такте, что и cyc_i/stb_i
может ли мастер, читающий попеременно -1-2-1-2-1- из этих блоков, иметь 100% утилизацию или только 50%?
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 24 2009, 12:22
Сообщение #6


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(yes @ Mar 24 2009, 05:50) *
эти Block Write/Read подразумевают, что операции проводятся между одними и теми же мастером и слейвом?
если мастер хочет сменить слейва или вообще произошел реарбитраж и шиной должен овладеть другой мастер - то обязательно должен быть вставлен цикл с CYC_O==0?


цикл шины заканчивается в момент posedge clk & cyc_i & stb_i & (ack_o | err_o | rty_o), следующий цикл шины может начаться сразу в последующем такте, вставлять паузы не нужно. никаких ограничений на выбираемый слейв нет.

Цитата
например, пусть есть два блока блочной памяти (разные wishbone слейвы), тактируемой инверсным клоком и формирующим ack_o в том же такте, что и cyc_i/stb_i
может ли мастер, читающий попеременно -1-2-1-2-1- из этих блоков, иметь 100% утилизацию или только 50%?


может иметь 100% утилизацию, но если мне память не изменяет wishbone шина синхронная и все устройства должны работать по одному фронту клока.


--------------------
Go to the top of the page
 
+Quote Post
yes
сообщение Mar 25 2009, 17:21
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



посмотрел доку на Avalon ST - похоже на канал AXI

тока у AXI сверху должно быть наворочено дофига (например записываемые данные могут прибыть раньше адреса/команды), но по-моему это правильный путь : шину проще, внутренности модуля хитрее

Цитата(des00 @ Mar 24 2009, 15:22) *
может иметь 100% утилизацию, но если мне память не изменяет wishbone шина синхронная и все устройства должны работать по одному фронту клока.


это я как бы пошутил, что не проблема асинхронного сигнала - часто делали для эмуляции асинхронной памяти внутри модуля инвертированный такт, снаружи выглядит как асинхронный и в один такт шины типа wishbone classic укладывается
тем более для FPGA, где времянка памяти обычно значительно лучше чем у всего остального - само напрашивается smile.gif
Go to the top of the page
 
+Quote Post

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

 


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


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