통신을 위해 PCIe를 PCIe로 직접 연결

통신을 위해 PCIe를 PCIe로 직접 연결

PCIe x1 - PCIe x1 케이블을 사용하여 Fedora를 실행하는 두 개의 마더보드를 연결하려는 상황이 있습니다. 두 개의 마더보드는 1cm의 거리를 두고 나란히 배치됩니다. 연결의 목적은 마치 이더넷을 통해 연결된 것처럼 컴퓨터 1의 응용 프로그램이 컴퓨터 2의 다른 응용 프로그램과 통신할 수 있도록 하는 것입니다.

컴퓨터 1은 이더넷을 통해 네트워크에 연결되어 있으며 컴퓨터 1을 통해 컴퓨터 2에 대한 네트워크 액세스가 필요합니다.

이더넷 케이블을 사용하여 컴퓨터를 연결하고 컴퓨터 1의 두 포트를 브리지하면 해결책이 있다는 것을 깨달았습니다. 그러나 후면 패널 포트가 아닌 마더보드 헤더를 사용하여 두 대의 컴퓨터를 연결하고 싶은 타당한 이유가 있습니다.

또한 각 PCIe 포트의 이더넷 장치에 PCIe를 연결하고 그 사이에 짧은 이더넷 케이블을 연결할 수 있다는 것도 깨달았습니다. 하지만 나는 이런 복잡성을 원하지 않습니다.

간단한 포트-포트 케이블과 함께 PCIe x1 온보드 포트를 사용하여 이 솔루션을 구현할 수 있는지 궁금합니다.

또 다른 방법은 COM 포트를 사용하는 것이지만, 읽은 내용에 따르면 PCIe를 사용하면 더 나은 성능을 얻을 수 있다고 합니다.

답변1

실제로 COM 포트에 비해 PCIe를 사용하면 더 나은 성능을 얻을 수 있습니다. 단일 PCIe v3.x 링크 Mbps를 사용하는 7880에 비해 엄청나게 빠른 COM 포트를 사용하면 0.92Mbps를 얻을 수 있습니다.

불행하게도 단순한 포트 간 케이블은 여기서는 가능한 솔루션이 아닙니다.

카드 슬롯의 PCIe 포트는 다음 전용입니다.하류 포트, 해당 장치와 통신해야 합니다.업스트림 포트PCIe 카드 자체에 있습니다. 하나의 다운스트림 포트를 다른 다운스트림 포트에 연결하려고 하는데 이는 PCIe 표준에서 허용되지 않습니다.

이 문제를 해결할 수 있다고 해도 두 컴퓨터 각각이 다른 컴퓨터의 시스템 버스에 제한 없이 직접 액세스할 수 있다는 의미입니다. 기본적으로 더 이상 두 대의 별도 컴퓨터로 간주되지 않고 두 절반 사이에 상당히 심각한 병목 현상이 있는 단일 NUMA 시스템과 비슷합니다(단일 PCIe x1 연결만 사용하는 경우). 시스템의 두 부분 사이에 액세스를 동기화할 수 있는 방법이 없으면 매우 어려운 프로그래밍 문제를 해결하기 위해 하드웨어 복잡성을 희생하게 됩니다. 두 부분 모두 독립적으로 작동하도록 설계된 일반 마더보드이므로 필요한 최소한의 하드웨어 동기화 수정도 불가능할 수 있습니다.

그러나 당신이 달성하려는 개념은 새로운 것이 아닙니다.불투명한 다리.Linux 커널에서는 이러한 기능을 지원하는 인프라가 커널 버전 3.9부터 존재합니다.가지다이제 NTB의 하드웨어 구현이 지원됩니다.(이것들은 대부분 상당히 중요한 서버급 하드웨어의 일부라는 것을 알 수 있습니다). ntb_netdevNTB 링크를 매우 빠른 이더넷 장치처럼 보이게 만드는 드라이버 도 있습니다 .

따라서... 아이디어를 구현하려면 기존 NTB 칩 몇 가지를 연구하고 필요에 맞는 것을 선택하고 이를 위한 PCB를 설계하고(고주파 신호를 처리하세요!) 이를 구축하고 Linux 커널에 필요한 패치를 개발해야 합니다. 구체적인 구현을 지원하고 결국 모든 것을 디버깅합니다.

정말 놀라운 하드웨어 엔지니어는 이를 "간단하다"고 말할 수 있지만 여러 데이터 센터를 솔루션으로 채울 계획이 없는 일반 사람에게는 짧은 이더넷 케이블이 훨씬 더 간단할 것입니다.

관련 정보