Jump to content

    
Sign in to follow this  
NDPaw

PCI Express Gen3 to Gen4

Recommended Posts

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

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

Share this post


Link to post
Share on other sites

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

41 minutes ago, NDPaw said:

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

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

Удачи! Rob.  

Share this post


Link to post
Share on other sites
6 minutes ago, RobFPGA said:

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

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

Удачи! Rob.  

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

Edited by NDPaw

Share this post


Link to post
Share on other sites

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

8 minutes ago, NDPaw said:

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

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

Удачи! Rob.

Share this post


Link to post
Share on other sites
2 minutes ago, RobFPGA said:

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

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

Удачи! Rob.

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

Share this post


Link to post
Share on other sites

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

1 minute ago, NDPaw said:

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

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

Удачи! Rob. 

Share this post


Link to post
Share on other sites
1 minute ago, RobFPGA said:

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

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

Удачи! Rob. 

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

Share this post


Link to post
Share on other sites

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

1 minute ago, NDPaw said:

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

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

Удачи! Rob. 

Share this post


Link to post
Share on other sites
3 minutes ago, RobFPGA said:

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

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

Удачи! Rob. 

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

Share this post


Link to post
Share on other sites

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

Edited by NDPaw

Share this post


Link to post
Share on other sites

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

18 minutes ago, NDPaw said:

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

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

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

Удачи! Rob.

Share this post


Link to post
Share on other sites
1 час назад, NDPaw сказал:

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this