Home Instrumentierung So testen Sie PVI Express-Speicherperipheriegeräte in der realen Welt effektiv

So testen Sie PVI Express-Speicherperipheriegeräte in der realen Welt effektiv

Ein wichtiger Teil der Entwicklung von Speichergeräten ist die Testphase der Interoperabilität. Das übergeordnete Ziel besteht darin, durch einen vollständigen Test sicherzustellen, dass das zu testende System (SUT) die Qualitäts- und Designspezifikationen erfüllt. Die Auswahl der geeigneten Testwerkzeuge und deren Vergleich mit Systemtestspezifikationen kann manchmal zu einer unvollständigen Abdeckung der durchzuführenden Tests führen, wenn die Einschränkungen der Testwerkzeuge nicht gut verstanden werden. Dies gilt insbesondere für neuere PCI Express (PCIe)-Hostschnittstellen von Speichergeräten. Die Datenkommunikation hat mit dieser Technologie einen gewaltigen Sprung gemacht: Um die Leistung zu steigern, wurden die Protokollstrukturen weiter entwickelt. Im Gegensatz zu früheren Generationen von Speicherperipheriegeräten verwenden diese neuen Strukturen Datenschutzverschlüsselungsmechanismen, um die Übertragungszuverlässigkeit zu gewährleisten. Beispielsweise sind Speicherbefehlsstrukturen für Protokolle wie Non-Volatile Memory (NVM) Express, SATA Express und SCSI Express jetzt codiert und in der PCI-Express-Nutzlast enthalten. Es ist wirklich diese Änderung, die das Testen komplizierter macht. Die Testwerkzeuge der Vergangenheit dienen nicht mehr dazu, die Arbeit zu erledigen.

Im Laufe der Jahre wurden viele Testtechnologien von Designern und Interoperabilitätstestingenieuren verwendet, um zu bestimmen, wie sich ihre neuen Geräte verhalten werden, sobald sie in der realen Welt eingeführt werden. Variationen in den Testtechniken und der Auswahl von Werkzeugen für jede Methodik basierten auf der Einzigartigkeit der Protokollattribute und der Zuverlässigkeit des Tests bei der Durchführung der erforderlichen und/oder gewünschten Aufgabe. Ein gutes Beispiel hierfür wäre die Verwendung von „Inline-Fehlerinjektoren“ durch Speicheringenieure und -techniker, um verschiedene Echtzeitprobleme im Zusammenhang mit dem Protokoll wie Serial Attached SCSI (SAS) zu identifizieren.

"Online Error Injectors" oder "Jammers", wie sie genannt werden, sind Geräte, die den Protokollverkehr in einer Verbindung zwischen zwei Knoten oder in einem Link manipulieren oder beeinträchtigen. 

Speichergeräte Hosts und Geräte (auch Initiatoren und Ziele genannt) sind ein gutes Beispiel. Störsender erzeugen absichtlich Fehlerbedingungen in einer sehr gut kontrollierten Weise von Designern, um Fehlererkennungs- und Wiederherstellungsroutinen auf neuen Geräten zu testen. Es ist wichtig, zusätzliche Änderungen der Situation oder Änderung der Übertragungseigenschaften während des Einfügens des Fehlers zu verhindern, da sonst die Testergebnisse unsicher sind.

Ein sehr üblicher Testplan besteht darin, eine Liste von Tests zu erstellen, die beschreiben, wie wichtige Fehlerbedingungen erzeugt werden, und die Kriterien, die verwendet werden, um zu bestimmen, ob die Antworten auf den Fehlerreiz gültig sind oder nicht. Diese Szenarien werden auf dem Testrechner implementiert und auf dem System Under Test (SUT) ausgeführt. Einfache Tests können vom Einfügen/Löschen von Ablaufverfolgungen bis zum Ersetzen einer "guten" Statusantwort durch eine "Fehler"-Statusantwort reichen. All dies geschieht mit dem Ziel festzustellen, wann das System den Fehler erkennt und korrekt auf den geschaffenen Zustand reagiert. 

Durch ein sorgfältiges Testsystem müssen die Fehlerbehebungsmechanismen kontinuierlich verfeinert werden, bis das Gerät unter normalen und Stress-Betriebsbedingungen einen zuverlässigen Betrieb bietet. Das übergeordnete Ziel besteht darin, durch umfassende Testabdeckung sicherzustellen, dass das SUT Design- und Qualitätsspezifikationen erfüllt.

Jammer-Testfähigkeiten 

Der Störsender wird normalerweise durch direkte Verdrahtung zwischen dem Initiator und dem Ziel verbunden. Ideale Störsender sind im SUT elektrisch unsichtbar und nicht störend. Abhängig vom Verkehrssteuerungsplan des Protokolls und der Einführung spezifischer Fehlerbedingungen können die Reaktionen des Systems auf verschiedene Kommunikationsausfallszenarien getestet werden. 

Der wirkliche Vorteil des Störsenders besteht darin, dass er Fehlertests einschließlich der folgenden Funktionen durchführen kann:

 

1. Inline Fehler in eine Situation der realen Welt einfügen:.

a. Bitfehlerinjektion

b. CRC-Modifikation

c. Rahmenmodifikation

d. Primitive Modifikation

und. Link verbinden oder trennen

F. Out-of-Band(OOB)- und Speed ​​Negotiation Window(SNW)-Modifikation

2. Überprüfen Sie, ob sich das SUT von Fehlerbedingungen ohne Datenverlust oder -beschädigung erholt.

 

Diese einfache Testmethodik macht dieses Tool unverzichtbar in der Protokollkommunikation, die in Speichersystemen verwendet wird. Parallele ATA-, SCSI-, Fibre Channel- und SAS/SATA-Testumgebungen erfordern diese Arten von Tools, um die Leistung des Geräts im System zu bestimmen und wie gut es reagiert, wenn es unter nicht idealen Busbedingungen arbeitet.

Der Grund, warum Störsender in traditionellen Speicheranwendungen so effektiv waren, war, dass sie eine einfachere Testmethode ermöglichten. Früher war in der Computerindustrie die Speicherkommunikation zwischen einem Initiator-Host und Zielgeräten weniger kompliziert, 

Wenn ein Skript vom Host gesendet wurde, gab das Ziel ein Statuscode-Byte zurück, das angibt, dass der Befehl erfolgreich war, ein Fehler aufgetreten ist oder das Ziel damit beschäftigt war, andere Anforderungen zu bedienen. 

Dann wurde es an den nächsten Befehl in der Sequenz weitergegeben oder erneut übertragen, bis die Nachricht schließlich erfolgreich war. Starre Flachbandkabel wurden verwendet, um Datenübertragungen mit niedrigen Geschwindigkeiten zu übertragen, und die Längen waren durch Nebensprechgeräusche von den Kabeln selbst begrenzt. Ungefähr zu dieser Zeit wurde der Störsender zu einem Standardwerkzeug für Speichertestanwendungen. Der Prozess der Einrichtung eines Jam-Szenarios war nicht kompliziert mit den wenigen Schutzmechanismen des Protokolls, um durch Modifizierung des Online-Datenverkehrs einzugreifen.

Testen von Speicherprotokollen in der Vergangenheit.

 

Als sich die Datenkommunikation zu seriellen Protokollübertragungen entwickelte, änderten sich die Dinge vom Standpunkt der Datenintegrität. Speicher führte schließlich „Peer-to-Peer“-Architekturen ein und entfernte sich von gemeinsam genutzten Kanälen, um die Geschwindigkeit zu erhöhen und die Treiberkomplexität und -kosten zu reduzieren. Differenzsignale, 8b/10b-Codierungen und Ausrichtungsprimitive wurden verwendet, um Rauschprobleme in der Bitübertragungsschicht zu reduzieren. 

In der Link-Layer-Trace-Informationsstruktur (FISs) wurden Pakete erstellt, die Nutzlastinformationen oder Datenmechanismen enthalten, die ein höheres Maß an Link-Steuerung bieten, als es in früheren parallelen ATA-Steuerungssystemen vorhanden war. Sobald die Daten auf der Verbindungsschicht verarbeitet sind, verarbeitet die Transportschicht die FIS-Informationen und sendet die Datenlast (Nutzlast) zur Ausführung an die Befehlsschicht.Diese Datenstrukturen werden zum Mittelpunkt von Datenplänen.Verifizierungstests. 

Störsender waren ideal zum Testen dieser Datenstrukturen und wurden von der Speicherindustrie weit verbreitet verwendet. Da die Schnittstellen dieser Protokolle an Komplexität und Geschwindigkeit zugenommen haben, mussten viele der Funktionen der Störsender überarbeitet werden oder ihre Analysefähigkeiten wurden reduziert, wodurch ihre Gesamtfähigkeit und Effektivität verringert wurden. In den letzten Jahren hat die Speicherbranche PCI-Express-basierte SSD-Schnittstellen wie NVMe, SATA Express und SCSI Express eingeführt, um die Anforderungen einer kontinuierlichen Leistungssteigerung durch Reduzierung von Protokolllatenzen zu erfüllen. Die neuen Protokolle verwenden verschlüsselte Datenschutzmechanismen, die eine zuverlässige Datenübertragung gewährleisten, wie es diese Hochleistungsschnittstellen erfordern. 

PCI Express verwendet die folgenden Datenschutzmechanismen zusätzlich zu den vorhandenen Merkmalen der physikalischen Schicht, wie z. B. differenzielle Signalisierung, verschlüsselte Datenübertragung und breites Taktspektrum. Testmethoden, die rund um PCI Express (PCIe) entwickelt wurden, umfassen Protokollanalysatoren und Protokollgeneratoren, um kontrollierte Teststimuli für Host- und Gerätesysteme zu erzeugen. 

Der Generator ist flexibel genug, um eine Low-Level-Emulation von Host- und Geräte-PCIe bereitzustellen. Mit dem Generator können Sie Stresstests und komplexe Fälle durchführen, die den Protokollverkehr steuern, einschließlich Geschwindigkeitsänderungen, Spurbreite, Flusskontrolle, TLP- und DDP-Transaktionen. Darüber hinaus können verschiedene Fehlerbedingungen durch einfache Skripttechniken erzeugt werden.

 Logischerweise besteht ein anhaltendes Interesse der Speichervalidierungsgemeinschaft an der Verwendung früherer Methoden und Geräte zur Validierung von PCIe-Speichersystemen. Angetrieben von diesem Wunsch wurden erste Anstrengungen unternommen, einen PCIe-Störsender zu definieren und zu entwickeln. Aufgrund der durch das PCIe-Protokoll auferlegten Einschränkungen wie Protokollbereitstellungsmechanismen und Befehls-/Steuerungs-Kapselungsstrukturen war das Ergebnis dieser Bemühungen ein Team, dem es insgesamt an Testbarkeit und Effektivität beim Testen von PCIe-Systemen sehr mangelte der ursprünglichen Funktionen, die ich realisieren musste. Folglich stellten viele Designer und Interop-Testingenieure die Verwendung von Störsendern ein und suchten nach effektiveren Implementierungen. 

Dementsprechend haben viele Designer und Interoperabilitätstestingenieure die Verwendung des Störsenders eingestellt und sind zu effektiveren Testwerkzeugimplementierungen übergegangen. Diese neuen Methoden sind mittlerweile in der Branche der Server, Workstations, Add-in-Karten und eingebetteten Systeme weit verbreitet. Es ist klar, dass das PCI-Express-Protokoll selbst über ausreichende Mechanismen verfügt, um zuverlässige Punkt-zu-Punkt-Datenübertragungen bereitzustellen. Speicherdaten und Befehlsstrukturen für Protokolle wie NVMe, SATA Express und SCSI Express sind jetzt codiert und in der PCIe-Datennutzlast enthalten. Diese Payloads sind jetzt in PCIe-Paketen (oder Frames) hochgradig geschützt und werden fehlerfrei an ihr endgültiges Ziel geliefert. 

Aufgrund dieser Datenschutzfunktionen des PCI-Express-Protokolls sind störende Datenstrukturen zum Testen von Hosts oder Geräten nicht sinnvoll. Die folgende Liste enthält einige der Fehlerinjektorbeschränkungen, die Entwickler in PCIe-Störsendern implementiert hatten.

 

Barrieren mit PCIe-Störsendern in Speicheranwendungen

 

Es gibt zwei große Hürden, die ein Störsender überwinden muss, um ein gültiges PCIe-Testwerkzeug zu sein.

Die erste besteht darin, zu injizieren, ohne den Liefermechanismus des Protokolls zu unterbrechen. Wenn ein PCIe-Störsender zwischen einem Gerät und einem Host platziert wird, müssen alle PHY-, Link- und Transaktionspakete den Störsender durchlaufen, um verarbeitet zu werden. Der Störsender braucht Zeit, um jedes Paket einzeln zu decodieren und zu verarbeiten, um die spezifische Struktur zu finden, die beschädigt oder modifiziert werden soll. Diese Verzögerung wirkt sich auf die strengen ACK-Latenzanforderungen der Datenschutzmechanismen des PCIe-Protokolls aus. 

Wenn der Störsender viel Latenz hinzufügt, wird jedes TLP-Paket mehrmals als Wiederholung gesendet, wenn die ACK-Rückantwortzeit abläuft. Die ständige Wiederholung von TLPs verschlechtert die Verbindungsleistung, destabilisiert die normale Verkehrsübertragung und führt Systemverhaltensänderungen ein, die außerhalb des Bereichs der kontrollierten Fehlereinfügung liegen.

Die zweite zu überwindende Hürde ist das Blockieren von Befehlen und Kontrollstrukturen. In früheren Protokollen enthielt der Protokollheader Befehls- und Steuerinformationen. Während der Übertragung wurde dieser Header (der von den Nutzdaten getrennt ist) gelesen und dann möglicherweise durch den Störsender während der Ausführung der vorprogrammierten Fehlerumgebung manipuliert. PCIe-Speicherprotokolle verhalten sich mit diesen Befehls- und Steuerinformationen sehr unterschiedlich, da sie jetzt in der Nutzlast (nicht im Header) des Transaction Layer Packet (TLP) enthalten sind. Tatsächlich sind alle Befehle, Daten und Warteschlangeninformationen in der Datennutzlast enthalten. In vielen Bereichen dieser neuen Technologie ist dies ein wichtiger Aspekt des Protokolls, den Entwickler testen wollen. Erschwerend kommt hinzu, dass ein einzelner Befehl nun eine große Anzahl von TLP-Paketen umfassen kann. Für einen Störsender kann das Modifizieren eines bestimmten Speicherbefehls oder Datenelements bedeuten, dass er eine große Anzahl von TLP-Paketen erfassen muss. Jedes TLP-Paket sollte dekodiert, die extrahierten Nutzlasten zusammengesetzt werden, um den angezeigten Befehl zu erstellen, und den Inhalt des Zielelements vor der Modifikation korrekt identifizieren. Dann sollte die Sequenz wieder zusammengesetzt werden, um die ursprüngliche Paketstruktur beizubehalten und sie an die entsprechende laufende Verbindung umzuleiten.Zusätzlich muss der Störsender eine Kopie der PCIe-Umgebung unterhalten, um zu verstehen, wo sich die registrierte Basisadresse befindet, und um den Ausgangspunkt aller Registrierungen zu identifizieren von Transaktionen in der Memory Map, damit es funktioniert,

Die Zeit, die ein Störsender dafür benötigt, wirkt sich auf die Gesamtlatenz der Übertragung zwischen dem Initiator und dem Ziel aus. Aus diesen Gründen wirkt sich das Hinzufügen eines Störsenders auf eine Verbindung aus. Hier ist ein Beispiel für einen einfachen ATA-Befehl, der auf 48 separate TLP-Pakete aufgeteilt ist.

 

Beste Methode zum Testen von PCIe-Speicher

 

Da PCIe-Datennutzlasten durch ausgeklügelte Protokollschutzmechanismen geschützt sind, werden alle Störsendertests am besten auf eine Teilmenge der PCIe-Verbindungsschicht gerichtet. Um einen vollständigen Test zu erhalten, muss ein PCIe-Protokolltester ein integraler Bestandteil des Testaufbaus sein. Die Verwendung eines PCIe-Exerciser ermöglicht es Benutzern, einen umfassenden Test zu erstellen, der Befehls- und Speicherdaten sowie einen vollständigen Test der PCIe-Link- und Transaktionsschichten abdeckt.

Ein Trainierender kann eine Host-Festplatte oder ein Gerät in einem Speichersystem emulieren. Dadurch kann das SUT während des Testens streng kontrolliert werden, ohne seine Leistung oder die ACK-Latenzanforderungen einer PCIe-Verbindung zu beeinträchtigen. 

Die Host- oder Geräteemulation ist ein wichtiger Bestandteil der PCIe-Tests und -Validierung der letzten drei Generationen von PCIe-Geräten. Die Trainierenden unterstützen jetzt die Funktionen der neuen PCIe-Speicherschnittstellen, einschließlich Warteschlangenverwaltung, Türklingelregister und NVMe/SCSI/ATA-Befehle.

Es sind Gerätetreiber verfügbar, die eine vollständige Emulation auf Systemen ermöglichen, um das BIOS-Verhalten unter Berücksichtigung der Fehlerbehandlung zu testen. Die Trainierenden arbeiten mit vordefinierten Skript- und Steuerungsmethoden. Jede Methode kann schnell Testergebnisse liefern, die den Anforderungen des Testplans entsprechen.

Um Ihr PCIe-Testsystem richtig zu konfigurieren, ist es wichtig auszuwählen, welche Testwerkzeuge den Interessenbereich am besten abdecken.

Die Kosten sind ein wichtiger Faktor bei der Auswahl der Prüfgeräte, um die maximale Prüfkapazität für die getätigte Investition zu erhalten. Moderne Design- und Testlabore für PCIe-Validierungslösungen integrieren Protokollanalysatoren und Übungsgeräte in ihre Systeme, um die größtmögliche Testabdeckung zu erzielen. Protokollanalysatoren werden verwendet, um den Bus zu überwachen, während mehrere Übungsgeräte Interoperabilitäts- und Belastungstests bieten. PCIe-Störsender werden aufgrund ihrer begrenzten Fähigkeit, Hochgeschwindigkeits-SSDs und andere PCIe-basierte Speichergeräte zu testen, nicht als gültig angesehen.


Stichworte
Speicherperipherie