2017-05-14 2 views
0

Ich habe das Arria V GX FPGA-Starterkit über PCI Express (PCIE) an einen Computer angeschlossen. Im Kit implementierte ich meinen Direct Memory Access (DMA) -Lese-/Schreibzugriff mithilfe der Pipeline-Übertragung. Der DMA liest die Daten aus dem PC-Speicher und schreibt dann über die PCIE in einen anderen Bereich des PC-Speichers.Warum hat PCI Express eine hohe Latenz im Pipeline-Übertragungsmodus erleiden?

Die verwendete IP ist Avalon-MM Arria V Hard IP für PCIE mit der Konfiguration: Gen1 x8, 32-Bit Avalon-MM Adressbreite. Die Software auf dem PC ist Visual Studio Programmierung von C++ und die Verwendung des 12.0.0 Jungo Windriver.

Das Projekt funktioniert gut, aber die Übertragungsgeschwindigkeit, insbesondere die Lesegeschwindigkeit, ist zu langsam. Ich hatte viele Projekte mit diesem DMA gemacht, also glaube ich nicht, dass das Problem an meinem DMA liegt. Ich habe die Altera SignalTap des Projekts überprüft und herausgefunden, dass: + (Abbildung 1) Es gibt immer über 100 Takte seit dem DMA begann zu lesen (das erste Mal, dass 'lesen' Signal geltend gemacht wird) zu den ersten zurückkehrenden Daten (das erste Mal wird das 'readdatavalid'-Signal bestätigt. + (Abbildung 2) Danach gibt es immer ungefähr 20 bis 50 Standby-Takte zwischen zwei zurückkehrenden Daten, was zu langsam ist.

Mein Entwurf muss die Daten vom PC lesen: (1) sehr wenig Daten (ungefähr 5 bis 10 Daten für jedes Mal); (2) Direktzugriff (deshalb habe ich keine Burst-Übertragung verwendet). Aber jedes Mal, wenn eine neue Übertragungssitzung begann, sind am Anfang über 100 Uhren verschwendet und ich weiß nicht warum. Zusammenfassend kann man sagen, dass Avalons Memory-Mapped-Read-Pipeline ungefähr 200 Takte kostet, um nur 5 Daten aus dem PC-Speicher über PCIE zu lesen.

Meine Fragen sind: (1) Warum werden so viele Uhren in der Pipeline-Übertragung über PCIE verschwendet? (2) Kann ich noch etwas tun, um die Übertragungsrate zu beschleunigen?

Vielen Dank

Antwort

0

PCIE wirklich I/O-Bandbreite zu maximieren, wurde entwickelt, aber nicht Latenz zu minimieren. In meinen Entwürfen habe ich oft eine so lange Latenz für die erste Leseantwort aus dem Systemspeicher gesehen, und ich habe keine Vorschläge, wie man sie reduzieren kann.

Um Leistung von PCIE zu erhalten, müssen Sie die Latenz mit Burst-Übertragungen und Pipelining-Anforderungen entwerfen, so dass Sie viele Anfragen im Flug behalten können, um die Bandbreite zu maximieren.

Verwandte Themen