Перейти к содержанию
    

Здравствуйте, уважаемые форумчане!

Я в PCI-e новичок. Встала передо мной такая задача: нужно преобразовать поток данных от двух PCI Express Gen3 устройств (каждое х8) в один поток данных Gen4 также по x8 линиям. То есть соединить два устройства со скоростями Gen3 в одно со скоростью Gen4. Можно ли это сделать в принципе без кастомных FPGA-узлов? Может есть спец микросхемы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

41 minutes ago, NDPaw said:

Я в PCI-e новичок. Встала передо мной такая задача: нужно преобразовать поток данных от двух PCI Express Gen3 устройств (каждое х8) в один поток данных Gen4 также по x8 линиям.

Хорошее задание для новичка  :biggrin:  Ищите по словам   "PCIe gen4 switch"  У Broadcom  вроде есть уже  такие решения  (вроде как PEX88000 семейство).

Удачи! Rob.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, RobFPGA said:

Приветствую!

Хорошее задание для новичка  :biggrin:  Ищите по словам   "PCIe gen4 switch"  У Broadcom  вроде есть уже  такие решения  (вроде как PEX88000 семейство).

Удачи! Rob.  

Я смотрел аналогичные от Microsemi (PM40100), но вопрос в том, можно ли с помощью свитча "упаковать" потоки со скоростями Gen3 в один поток со скоростью Gen4.

Изменено пользователем NDPaw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

8 minutes ago, NDPaw said:

но вопрос в том, можно ли с помощью свитча "упаковать" потоки со скоростями Gen3 в один поток со скоростью Gen4.

Смотря что вы вкладываете в понятие "упаковать" - Физически они будут "упакованы" в один канал а вот логически так и останутся независимыми потоками. Хотите паковать в один логический?  Тут конкретики более нужно.

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, RobFPGA said:

Приветствую!

Смотря что вы вкладываете в понятие "упаковать" - Физически они будут "упакованы" в один канал а вот логически так и останутся независимыми потоками. Хотите паковать в один логический?  Тут конкретики более нужно.

Удачи! Rob.

мне нужно именно физически, но хост должен распознать, что пришло от первого (ушло на первое), а что от второго (ушло на второе) устройства..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

1 minute ago, NDPaw said:

мне нужно именно физически, но хост должен распознать, что пришло от первого (ушло на первое), а что от второго (ушло на второе) устройства..

Так это без проблем - разные endpoint будут слать/получать на разные адреса физ. памяти хоста. 

Удачи! Rob. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, RobFPGA said:

Приветствую!

Так это без проблем - разные endpoint будут слать/получать на разные адреса физ. памяти хоста. 

Удачи! Rob. 

но как будет выглядеть содержимое "упаковки", что то типа - первый бит - это первый бит от первого устройства, второй бит - первый бит от второго, и т.д. просто все это не могу пока уложить в голове

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

1 minute ago, NDPaw said:

но как будет выглядеть содержимое "упаковки", что то типа - первый бит - это первый бит от первого устройства, второй бит - первый бит от второго, и т.д. просто все это не могу пока уложить в голове

Тогда вам для начала надо бы почитать как вообще PCie работает -  независимо от скорости.  

Удачи! Rob. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, RobFPGA said:

Приветствую!

Тогда вам для начала надо бы почитать как вообще PCie работает -  независимо от скорости.  

Удачи! Rob. 

да, так и сделаю! Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитал спецификацию PCI Express и даташит на свитч от Microsemi и все равно не понял как получить "смесь" из двух x8 Gen3 так, чтобы она была корректна, ведь там же весь протокол собьется. И как из этой "смеси" можно будет получить информацию о том какое устройство  что шлёт. Может есть те, кто именно так делал?

Изменено пользователем NDPaw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так у вас все равно будет видно на шине два устройства, просто они будут сидеть на разных шинах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

18 minutes ago, NDPaw said:

Почитал спецификацию PCI Express и даташит на свитч от Microsemi и все равно не понял как получить "смесь" из двух x8 Gen3

Когда вам по сети Ethernet приходят пакеты - вы же не мучаетесь вопросом как разобрать эту "кашу" ?  Так же и на PCIe  каждое устройство на шине (endpoint/switch/rootcomplex) имеет уникальный адрес на этой шине. Соответственно можно понять от кого пакет данных пришел и куда он будет отправлен.     Ну а в хосте  тем более - каждый endpoint будет имеет свой диапазон адресов (в памяти) для прямого чтения записи в endpoint. А если вы используете DMA то вы сами решаете для каждого  endpoint - куда в памяти данные будут приняты и откуда из памяти посланы. 

Если вы сами не хотите ваять switch на FPGA вам в это вникать и не нужно.   

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, NDPaw сказал:

Почитал спецификацию PCI Express и даташит на свитч от Microsemi и все равно не понял как получить "смесь" из двух x8 Gen3 так, чтобы она была корректна, ведь там же весь протокол собьется. И как из этой "смеси" можно будет получить информацию о том какое устройство  что шлёт. Может есть те, кто именно так делал?

Упрощенно: когда вы ставите два или более PCIe устройства в разъемы материнской платы, процессор же не сбивается, и никакой "смеси" не возникает. На шине видны несколько устройств и с каждым процессор работает отдельно. Примерно также и в случае внешнего коммутатора - на шине появится устройство-коммутатор, создающее одну, две или более новых шин, на каждой из которых появится по подключенному к коммутатору устройству.

На самом деле, в чипсете материнской платы такой коммутатор уже есть (а может и не один), вам просто нужно добавить к нему еще. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Большое спасибо за ваши ответы! Стало немного понятнее. Но все же остался вопрос: хост увидит эти два устройства и будет с ними работать, но с какой скоростью он будет это делать? С Gen3 (сами устройства Gen3) или все таки Gen4 ( нужно ли как то особенно сконфигурировать микросхему свитча)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

22 minutes ago, NDPaw said:

но с какой скоростью он будет это делать? С Gen3 (сами устройства Gen3) или все таки Gen4 ( нужно ли как то особенно сконфигурировать микросхему свитча)?

Нужно ли конфигурировать  и как именно будете читать в datasheet на конкретный свитч. 

PCIe физически это  point-to-point коннект. Скорость физ.  порта  задается  параметром (в пределах максимально поддерживаемого). Если свитч подерживает Gen4  то  например порт к хосту будет работать на Gen4  а  несколько портов к endpoint могут работать на Gen1/2/3/  На то от и свитч чтобы таким "непотребством" заниматься.  :wink2:

Но вообще скорость PCIe (Gen1/2/3/4) определяет с какой максимальной скоростью может  работать конкретный порт.  А вот с какой реальной скоростью зависит от конкретной ситуации. При старте PCIe начинает работать на Gen1, x1 потом пытаясь поднять скорость и разрядность  коннекта до заданного максимума который поддерживается удаленным партнером по физ. линку.  Да и в процессе работы, если число ошибок передачи будет выше порога, скорость коннекта на порте  может снизится. 

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...