NDPaw 0 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба Здравствуйте, уважаемые форумчане! Я в PCI-e новичок. Встала передо мной такая задача: нужно преобразовать поток данных от двух PCI Express Gen3 устройств (каждое х8) в один поток данных Gen4 также по x8 линиям. То есть соединить два устройства со скоростями Gen3 в одно со скоростью Gen4. Можно ли это сделать в принципе без кастомных FPGA-узлов? Может есть спец микросхемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба Приветствую! 41 minutes ago, NDPaw said: Я в PCI-e новичок. Встала передо мной такая задача: нужно преобразовать поток данных от двух PCI Express Gen3 устройств (каждое х8) в один поток данных Gen4 также по x8 линиям. Хорошее задание для новичка Ищите по словам "PCIe gen4 switch" У Broadcom вроде есть уже такие решения (вроде как PEX88000 семейство). Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NDPaw 0 10 февраля, 2020 Опубликовано 10 февраля, 2020 (изменено) · Жалоба 6 minutes ago, RobFPGA said: Приветствую! Хорошее задание для новичка Ищите по словам "PCIe gen4 switch" У Broadcom вроде есть уже такие решения (вроде как PEX88000 семейство). Удачи! Rob. Я смотрел аналогичные от Microsemi (PM40100), но вопрос в том, можно ли с помощью свитча "упаковать" потоки со скоростями Gen3 в один поток со скоростью Gen4. Изменено 10 февраля, 2020 пользователем NDPaw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба Приветствую! 8 minutes ago, NDPaw said: но вопрос в том, можно ли с помощью свитча "упаковать" потоки со скоростями Gen3 в один поток со скоростью Gen4. Смотря что вы вкладываете в понятие "упаковать" - Физически они будут "упакованы" в один канал а вот логически так и останутся независимыми потоками. Хотите паковать в один логический? Тут конкретики более нужно. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NDPaw 0 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба 2 minutes ago, RobFPGA said: Приветствую! Смотря что вы вкладываете в понятие "упаковать" - Физически они будут "упакованы" в один канал а вот логически так и останутся независимыми потоками. Хотите паковать в один логический? Тут конкретики более нужно. Удачи! Rob. мне нужно именно физически, но хост должен распознать, что пришло от первого (ушло на первое), а что от второго (ушло на второе) устройства.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба Приветствую! 1 minute ago, NDPaw said: мне нужно именно физически, но хост должен распознать, что пришло от первого (ушло на первое), а что от второго (ушло на второе) устройства.. Так это без проблем - разные endpoint будут слать/получать на разные адреса физ. памяти хоста. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NDPaw 0 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба 1 minute ago, RobFPGA said: Приветствую! Так это без проблем - разные endpoint будут слать/получать на разные адреса физ. памяти хоста. Удачи! Rob. но как будет выглядеть содержимое "упаковки", что то типа - первый бит - это первый бит от первого устройства, второй бит - первый бит от второго, и т.д. просто все это не могу пока уложить в голове Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба Приветствую! 1 minute ago, NDPaw said: но как будет выглядеть содержимое "упаковки", что то типа - первый бит - это первый бит от первого устройства, второй бит - первый бит от второго, и т.д. просто все это не могу пока уложить в голове Тогда вам для начала надо бы почитать как вообще PCie работает - независимо от скорости. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NDPaw 0 10 февраля, 2020 Опубликовано 10 февраля, 2020 · Жалоба 3 minutes ago, RobFPGA said: Приветствую! Тогда вам для начала надо бы почитать как вообще PCie работает - независимо от скорости. Удачи! Rob. да, так и сделаю! Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NDPaw 0 11 февраля, 2020 Опубликовано 11 февраля, 2020 (изменено) · Жалоба Почитал спецификацию PCI Express и даташит на свитч от Microsemi и все равно не понял как получить "смесь" из двух x8 Gen3 так, чтобы она была корректна, ведь там же весь протокол собьется. И как из этой "смеси" можно будет получить информацию о том какое устройство что шлёт. Может есть те, кто именно так делал? Изменено 11 февраля, 2020 пользователем NDPaw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 3 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба Ну так у вас все равно будет видно на шине два устройства, просто они будут сидеть на разных шинах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба Приветствую! 18 minutes ago, NDPaw said: Почитал спецификацию PCI Express и даташит на свитч от Microsemi и все равно не понял как получить "смесь" из двух x8 Gen3 Когда вам по сети Ethernet приходят пакеты - вы же не мучаетесь вопросом как разобрать эту "кашу" ? Так же и на PCIe каждое устройство на шине (endpoint/switch/rootcomplex) имеет уникальный адрес на этой шине. Соответственно можно понять от кого пакет данных пришел и куда он будет отправлен. Ну а в хосте тем более - каждый endpoint будет имеет свой диапазон адресов (в памяти) для прямого чтения записи в endpoint. А если вы используете DMA то вы сами решаете для каждого endpoint - куда в памяти данные будут приняты и откуда из памяти посланы. Если вы сами не хотите ваять switch на FPGA вам в это вникать и не нужно. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 13 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 1 час назад, NDPaw сказал: Почитал спецификацию PCI Express и даташит на свитч от Microsemi и все равно не понял как получить "смесь" из двух x8 Gen3 так, чтобы она была корректна, ведь там же весь протокол собьется. И как из этой "смеси" можно будет получить информацию о том какое устройство что шлёт. Может есть те, кто именно так делал? Упрощенно: когда вы ставите два или более PCIe устройства в разъемы материнской платы, процессор же не сбивается, и никакой "смеси" не возникает. На шине видны несколько устройств и с каждым процессор работает отдельно. Примерно также и в случае внешнего коммутатора - на шине появится устройство-коммутатор, создающее одну, две или более новых шин, на каждой из которых появится по подключенному к коммутатору устройству. На самом деле, в чипсете материнской платы такой коммутатор уже есть (а может и не один), вам просто нужно добавить к нему еще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NDPaw 0 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба Большое спасибо за ваши ответы! Стало немного понятнее. Но все же остался вопрос: хост увидит эти два устройства и будет с ними работать, но с какой скоростью он будет это делать? С Gen3 (сами устройства Gen3) или все таки Gen4 ( нужно ли как то особенно сконфигурировать микросхему свитча)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба Приветствую! 22 minutes ago, NDPaw said: но с какой скоростью он будет это делать? С Gen3 (сами устройства Gen3) или все таки Gen4 ( нужно ли как то особенно сконфигурировать микросхему свитча)? Нужно ли конфигурировать и как именно будете читать в datasheet на конкретный свитч. PCIe физически это point-to-point коннект. Скорость физ. порта задается параметром (в пределах максимально поддерживаемого). Если свитч подерживает Gen4 то например порт к хосту будет работать на Gen4 а несколько портов к endpoint могут работать на Gen1/2/3/ На то от и свитч чтобы таким "непотребством" заниматься. Но вообще скорость PCIe (Gen1/2/3/4) определяет с какой максимальной скоростью может работать конкретный порт. А вот с какой реальной скоростью зависит от конкретной ситуации. При старте PCIe начинает работать на Gen1, x1 потом пытаясь поднять скорость и разрядность коннекта до заданного максимума который поддерживается удаленным партнером по физ. линку. Да и в процессе работы, если число ошибок передачи будет выше порога, скорость коннекта на порте может снизится. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться