DE102022121192A1 - Systeme und verfahren für die prüfung vernetzter geräte - Google Patents

Systeme und verfahren für die prüfung vernetzter geräte Download PDF

Info

Publication number
DE102022121192A1
DE102022121192A1 DE102022121192.4A DE102022121192A DE102022121192A1 DE 102022121192 A1 DE102022121192 A1 DE 102022121192A1 DE 102022121192 A DE102022121192 A DE 102022121192A DE 102022121192 A1 DE102022121192 A1 DE 102022121192A1
Authority
DE
Germany
Prior art keywords
input
circuit
circuitry
network device
test
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022121192.4A
Other languages
English (en)
Inventor
Kshitij Arun Doshi
Francesc Guim Bernat
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102022121192A1 publication Critical patent/DE102022121192A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Es werden Verfahren, Vorrichtungen, Systeme und Herstellungsartikel für die Prüfung vernetzter Geräte offenbart. Ein beispielhaftes Verfahren umfasst das Bestimmen einer an eine programmierbare Netzwerkvorrichtung anzulegenden Eingabe, das Verändern der Eingabe, um eine Eingabevariante zu bestimmen, das Anwenden der Eingabevariante auf die programmierbare Netzwerkvorrichtung und, als Reaktion auf die Feststellung, dass die Eingabevariante die programmierbare Netzwerkvorrichtung veranlasst, in einen erwarteten Zustand einzutreten, das Hinzufügen der Eingabevariante zu einem Testsatz.

Description

  • GEBIET DER OFFENBARUNG
  • Diese Offenbarung bezieht sich allgemein auf das Testen von Informatiksystemen und insbesondere auf Systeme und Verfahren zum Testen von vernetzten Geräten.
  • HINTERGRUND
  • In Rechenzentren, Edge-Systemen, Informatiksystemen usw. wird eine Vielzahl von Hardware- und Softwaresystemen eingesetzt, um Rechenlasten und Aufgaben auszuführen. Einige der Hardware-Systeme können programmierbar sein, so dass eine Art von Programmierung oder Software steuern kann, wie das Hardware-System arbeitet, Daten verarbeitet usw. Einige Rechenvorrichtungen sind mit domänenspezifischen Programmiersprachen programmierbar, die für bestimmte Arten von Hardware und Aufgaben optimierte Konstrukte enthalten. So wird beispielsweise die domänenspezifische Programmiersprache Programming Protocol-independent Packet Processors (P4) für die Programmierung von Hardware zur Weiterleitung von Netzwerkdaten verwendet. Andere Arten von domänenspezifischen Programmiersprachen können Konstrukte enthalten, die für andere Arten von Hardware oder Aufgaben optimiert sind.
  • Figurenliste
    • 1 zeigt einen Überblick über eine Edge-Cloud-Konfiguration für Edge-Computing.
    • 2 zeigt die Betriebsebenen zwischen Endpunkten, einer Edge-Cloud und Cloud-Computing-Umgebungen.
    • 3 zeigt einen beispielhaften Ansatz für Netzwerke und Dienste in einem Edge-Informatiksystem.
    • 4 zeigt einen Rechen- und Kommunikationsanwendungsfall mit mobilem Zugriff auf Anwendungen in einem Edge-Informatiksystem.
    • 5 zeigt ein Beispiel für ein Informatiksystem, das eine Testrechenvorrichtung zur Koordinierung von Prüfungen innerhalb eines Informatiksystems enthält.
    • 6 ist ein Blockdiagramm einer Beispielimplementierung der Testrechenvorrichtung.
    • 7 zeigt ein Verfahren zur Bestimmung von zwei Einstellungen: eine Mutationsversuchswahrscheinlichkeit P und eine Explorationsintensität EI.
    • 8-14 sind Flussdiagramme, die beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellen, die von Prozessorschaltungen ausgeführt und/oder instanziiert werden können, um eine Informatiksystemkomponente zu testen.
    • 15 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform mit einer Prozessorschaltung, die so strukturiert ist, dass sie die beispielhaften maschinenlesbaren Anweisungen der 8-14 ausführt, um die beispielhafte Testrechenvorrichtung der 5 zu implementieren.
    • 16 ist ein Blockdiagramm einer beispielhaften Implementierung der Prozessorschaltung von 15.
    • 17 ist ein Blockdiagramm einer weiteren beispielhaften Implementierung der Prozessorschaltung von 15.
    • 18 ist ein Blockdiagramm einer beispielhaften Softwareverteilungsplattform (z. B. ein oder mehrere Server) zur Verteilung von Software (z. B. Software, die den beispielhaften maschinenlesbaren Anweisungen von 11 entspricht) an Client-Geräte, die mit Endbenutzern und/oder Verbrauchern (z. B zur Lizenzierung, zum Verkauf und/oder zur Nutzung), Einzelhändlern (z. B. zum Verkauf, Wiederverkauf, zur Lizenzierung und/oder zur Unterlizenzierung) und/oder Originalgeräteherstellern (OEMs) (z. B. zur Aufnahme in Produkte, die z. B. an Einzelhändler und/oder an andere Endnutzer wie Direktkunden verteilt werden sollen).
    • 19 gibt einen Überblick über Beispielkomponenten für die Datenverarbeitung, die an einem Datenverarbeitungsknoten in einem Edge-Informatiksystem eingesetzt werden.
    • 20 gibt einen weiteren Überblick über Beispielkomponenten innerhalb einer Rechenvorrichtung in einem Edge-Informatiksystem.
  • Die Figuren sind nicht maßstabsgetreu. Im Allgemeinen werden in den Zeichnungen und der zugehörigen schriftlichen Beschreibung dieselben Referenznummern verwendet, um auf gleiche oder gleichartige Teile hinzuweisen.
  • Sofern nicht ausdrücklich anders angegeben, werden Deskriptoren wie „erster“, „zweiter“, „dritter“ usw. hier verwendet, ohne eine Bedeutung von Priorität, physikalischer Reihenfolge, Anordnung in einer Liste und/oder Ordnung in irgendeiner Weise zu implizieren oder anderweitig anzuzeigen, sondern lediglich als Kennzeichnungen und/oder willkürliche Namen zur Unterscheidung von Elementen für ein leichteres Verständnis der offenbarten Beispiele verwendet. In einigen Beispielen kann der Deskriptor „erste“ verwendet werden, um auf ein Element in der detaillierten Beschreibung zu verweisen, während in einem Anspruch mit einem anderen Deskriptor, wie z. B. „zweite“ oder „dritte“, auf das gleiche Element verwiesen werden kann. In solchen Fällen sollten solche Deskriptoren lediglich dazu dienen, die Elemente eindeutig zu identifizieren, die ansonsten z. B. denselben Namen tragen könnten.
  • Die hier verwendeten Begriffe „ungefähr“ und „etwa“ beziehen sich auf Abmessungen, die aufgrund von Fertigungstoleranzen und/oder anderen Unzulänglichkeiten in der realen Welt nicht exakt sein können. Der hier verwendete Begriff „im Wesentlichen in Echtzeit“ bezieht sich auf ein nahezu augenblickliches Auftreten, wobei es in der realen Welt zu Verzögerungen durch Rechenzeit, Übertragung usw. kommen kann. Sofern nicht anders angegeben, bezieht sich der Begriff „im Wesentlichen in Echtzeit“ auf Echtzeit +/- 1 Sekunde.
  • Wie hierin verwendet, umfasst die Phrase „in Kommunikation“, einschließlich Variationen davon, direkte Kommunikation und/oder indirekte Kommunikation durch ein oder mehrere Zwischenkomponenten und erfordert keine direkte physische (z. B. verdrahtete) Kommunikation und/oder konstante Kommunikation, sondern schließt vielmehr selektive Kommunikation in periodischen Intervallen, planmäßigen Intervallen, aperiodischen Intervallen und/oder einmalige Ereignisse ein.
  • Hierin wird der Begriff „Prozessorschaltung“ so definiert, dass er (i) eine oder mehrere elektrische Spezialschaltungen, die so strukturiert sind, dass sie bestimmte Operationen ausführen, und ein oder mehrere Logikbausteine auf Halbleiterbasis (z. B. elektrische Hardware, die durch einen oder mehrere Transistoren implementiert ist) und/oder (ii) eine oder mehrere elektrische Allzweckschaltungen auf Halbleiterbasis, die mit Befehlen zur Ausführung bestimmter Operationen programmiert sind und ein oder mehrere Logikbausteine auf Halbleiterbasis (z. B. elektrische Hardware, die durch einen oder mehrere Transistoren implementiert ist) umfasst. Beispiele für Prozessorschaltungen sind programmierte Mikroprozessoren, FPGAs (Field Programmable Gate Arrays), die Befehle instanziieren können, CPUs (Central Processor Units), GPUs (Graphics Processor Units), DSPs (Digital Signal Processors), XPUs oder Mikrocontroller und integrierte Schaltungen wie ASICs (Application Specific Integrated Circuits). Eine XPU kann beispielsweise durch ein heterogenes Informatiksystem implementiert werden, das mehrere Arten von Prozessorschaltungen (z. B. einen oder mehrere FPGAs, eine oder mehrere CPUs, einen oder mehrere GPUs, einen oder mehrere DSPs usw. und/oder eine Kombination davon) und Anwendungsprogrammierschnittstelle(n) (API(s)) umfasst, die die Rechenaufgabe(n) dem/denjenigen der mehreren Arten von Verarbeitungsschaltungen zuweisen kann/können, der/die am besten zur Ausführung der Rechenaufgabe(n) geeignet ist/sind.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Fuzzing oder Fuzz-Testing von Software umfasst eine Vielzahl von Techniken zur Mechanisierung der Erzeugung und Anwendung von vernünftig aussehenden, aber ungültigen Eingaben oder von gültigen Eingaben, deren Auftreten unwahrscheinlich ist, in Software-Programmen. Ziel von Fuzz-Testing ist es, Software- und Sicherheitsschwachstellen schnell und umfassend zu identifizieren, und zwar mit einem hohen Nutzen-Kosten-Verhältnis. Fuzz-Testing bietet den Vorteil, dass es die Abdeckung des Software-Codes verbessert, die Software robuster macht und gleichzeitig die Kosten für die Zeit, die Menschen und Computer für die Erstellung und Ausführung von Tests aufwenden, reduziert. Während der typischen Entwicklung und Fehlersuche eines Systems durch Testen des Systems mit Komponententests und Stresstests kann man viele Arten von Lücken in den Tests übersehen. Im Gegensatz dazu können beim Fuzz-Testing viele Mutationen von Tests erzeugt werden, die jene Mängel aufdecken können, die bei herkömmlichen Tests übersehen werden. Software-Fuzz-Testing ist ein sehr aktiver Bereich der Forschung und Produktentwicklung.
  • Die hier offenbarten Systeme und Verfahren nutzen neue Techniken zur Anwendung von Software-Fuzzing auf programmierbare Geräte (z. B. programmierbare Netzwerkvorrichtungen), Protokolle und Cluster-Operationen. Diese Techniken können z. B. bei groß angelegten Clouds (sowohl bei öffentlichen Hyperscale-Clouds als auch bei Edge-Netzwerken) eingesetzt werden, bei denen sich Geräte, Sicherheitseinstellungen, Netzwerk- und Sicherheitssoftware, Kommunikationstopologien usw. häufig ändern. Einige Techniken verwenden softwaregesteuertes Fuzz-Testing, das sowohl auf die historische Abdeckung als auch auf dynamische Änderungen der Abdeckung reagiert.
  • Software steuert die Vernetzung auf zwei Ebenen: 1) auf der Ebene der Ressourcenbereitstellung, die in modernen softwaredefinierten Infrastruktursystemen (SDI) als „Infrastruktur als Code“ betrachtet werden kann, und 2) auf der Ebene des Gerätebetriebs durch domänenspezifische Programmierung. P4 ist zum Beispiel eine domänenspezifische Sprache, mit der Protokolle für den Betrieb von Netzwerkvorrichtungen programmiert werden, indem ihr P4-basierter Code erweitert wird (z. B. „Networking as Code“). Die hier offenbarten Systeme und Verfahren nutzen domänenspezifische Programmierung (z. B. P4) und SDI als Übertragungsmechanismen für die Anwendung von Softwaretestverfahren auf Systeme (z. B. Netzwerke). Solche Systeme und Verfahren erweitern den Stand der Technik beim Fuzz-Testing von Netzwerken und anderen Systemen.
  • Die hier beschriebenen Systeme und Verfahren nutzen neue Techniken, um dynamisches Fuzzing auf der Basis von Rückkopplungen einzusetzen. Es werden Routenexplorationsskripte beschrieben, um kontinuierlich neue Testeingaben (z. B. Testparameter) auf der Grundlage von Änderungen der Netzwerkbedingungen und - konfigurationen zu beeinflussen. In einigen Beispielen wird die Software-Fuzz-Prüfung auf Netzwerkprotokolle und -geräte abgebildet, indem eine P4-basierte Darstellung der Netzwerkprotokolle und -geräte verwendet wird. Lücken zwischen den formalen Spezifikationen des Netzwerkverhaltens und den tatsächlichen Implementierungen in P4 können identifiziert und zur Gestaltung von Testsätzen genutzt werden. Mit P4 können Sandboxes erstellt werden, um Tests mit unterschiedlicher Granularität neben dem übrigen, nicht zu testenden Netzwerk durchzuführen. Anschließend kann das Sandboxing aufgegeben und auf einen anderen Teil des Netzwerks angewendet werden, der aktualisiert und getestet wird.
  • 1 ist ein Blockdiagramm 100, das einen Überblick über eine Konfiguration für Edge-Computing zeigt, die eine Verarbeitungsschicht umfasst, die in vielen der folgenden Beispiele als „Edge-Cloud“ bezeichnet wird. Wie dargestellt, befindet sich die Edge-Cloud 110 an einem Edge-Standort, z. B. einem Zugangspunkt oder einer Basisstation 140, einem lokalen Verarbeitungszentrum 150 oder einer Zentrale 120, und kann daher mehrere Einheiten, Geräte und Ausstattungsinstanzen umfassen. Die Edge-Cloud 110 befindet sich viel näher an den Endpunkt-Datenquellen 160 (z. B. autonome Fahrzeuge 161, Benutzergeräte 162, Geschäfts- und Industriegeräte 163, Videoaufnahmegeräte 164, Drohnen 165, intelligente Städte und Gebäudegeräte 166, Sensoren und IoT-Geräte 167 usw.) als das Cloud-Datenzentrum 130. Rechen-, Speicher- und Speicherressourcen, die an den Rändern der Edge-Cloud 110 angeboten werden, sind entscheidend für die Bereitstellung von Reaktionszeiten mit extrem niedriger Latenz für Dienste und Funktionen, die von den Endpunkt-Datenquellen 160 genutzt werden, und für die Reduzierung des Netzwerk-Backhaul-Verkehrs von der Edge-Cloud 110 zum Cloud-Rechenzentrum 130, wodurch sich neben anderen Vorteilen auch der Energieverbrauch und die Gesamtnetzauslastung verbessern.
  • Rechenleistung, Arbeitsspeicher und Speicherplatz sind knappe Ressourcen, die im Allgemeinen je nach Edge-Standort abnehmen (z. B. stehen an Endgeräten von Verbrauchern weniger Verarbeitungsressourcen zur Verfügung als an einer Basisstation oder in einer Zentrale). Je näher sich der Edge-Standort jedoch am Endpunkt (z. B. dem Benutzergerät) befindet, desto stärker sind Platz- und Energiebeschränkungen zu beachten. Mit Edge Computing wird also versucht, die Menge der für Netzdienste benötigten Ressourcen zu verringern, indem mehr Ressourcen verteilt werden, die sowohl geografisch als auch hinsichtlich der Netzzugangszeit näher beieinander liegen. Auf diese Weise versucht Edge Computing, die Rechenressourcen zu den Arbeitsdaten zu bringen, wo es angebracht ist, oder die Arbeitsdaten zu den Rechenressourcen zu bringen.
  • Im Folgenden werden Aspekte einer Edge-Cloud-Architektur beschrieben, die mehrere potenzielle Einsatzmöglichkeiten abdeckt und Einschränkungen berücksichtigt, die einige Netzwerkbetreiber oder Dienstanbieter in ihren eigenen Infrastrukturen haben könnten. Dazu gehören Konfigurationsvariationen auf der Grundlage des Edge-Standorts (da die Leistung und die Fähigkeiten von Edges auf Basisstationsebene in einem Multi-Tenant-Szenario stärker eingeschränkt sein können), Konfigurationen auf der Grundlage der Art der Rechen-, Speicher-, Fabric-, Beschleunigungs- oder ähnlicher Ressourcen, die Edge-Standorten, Standortschichten oder Standortgruppen zur Verfügung stehen, die Service-, Sicherheits-, Verwaltungs- und Orchestrierungsfunktionen sowie die damit verbundenen Ziele zur Erreichung der Benutzerfreundlichkeit und Leistung von Enddiensten. Diese Bereitstellungen können die Verarbeitung in Netzwerkschichten durchführen, die je nach Latenz, Entfernung und Zeitmerkmalen als „near Edge“, „close Edge“, „local Edge“, „middle Edge“ oder „far Edge“ bezeichnet werden können.
  • Edge Computing ist ein sich entwickelndes Paradigma, bei dem die Datenverarbeitung am oder näher am „Rand“ eines Netzwerks durchgeführt wird, in der Regel durch den Einsatz einer Rechenplattform (z. B. x86- oder ARM-Hardware-Architektur), die in Basisstationen, Gateways, Netzwerkroutern oder anderen Geräten implementiert wird, die viel näher an den Endgeräten liegen, die die Daten erzeugen und verbrauchen. Edge-Gateway-Server können beispielsweise mit Speicherpools und Speicherressourcen ausgestattet sein, um Berechnungen in Echtzeit für Anwendungsfälle mit geringer Latenz (z. B. autonomes Fahren oder Videoüberwachung) für angeschlossene Client-Geräte durchzuführen. So können beispielsweise Basisstationen mit Rechen- und Beschleunigungsressourcen ausgestattet werden, um Dienstlasten für angeschlossene Benutzergeräte direkt zu verarbeiten, ohne dass die Daten über Backhaul-Netzwerke übertragen werden müssen. Ein weiteres Beispiel: Die Hardware für das Netzwerkmanagement in der Zentrale kann durch standardisierte Rechenhardware ersetzt werden, die virtualisierte Netzwerkfunktionen ausführt und Rechenressourcen für die Ausführung von Diensten und Verbraucherfunktionen für angeschlossene Geräte bereitstellt. Innerhalb von Edge-Computing-Netzwerken kann es Szenarien geben, in denen die Rechenressource zu den Daten „verschoben“ wird, sowie Szenarien, in denen die Daten zur Rechenressource „verschoben“ werden. So können z. B. die Rechen-, Beschleunigungs- und Netzwerkressourcen einer Basisstation Dienste bereitstellen, die sich je nach Bedarf an die Arbeitslast anpassen, indem sie ruhende Kapazitäten aktivieren (Abonnement, Kapazität auf Abruf), um Eckfälle oder Notfälle zu bewältigen oder um die Langlebigkeit der eingesetzten Ressourcen über einen wesentlich längeren Lebenszyklus zu gewährleisten.
  • 2 zeigt die Betriebsebenen zwischen Endpunkten, einer Edge-Cloud und Cloud-Computing-Umgebungen. 2 zeigt insbesondere Beispiele für Rechenanwendungsfälle 205, bei denen die Edge-Cloud 110 auf mehreren veranschaulichenden Ebenen der Netzwerkberechnung eingesetzt wird. Die Schichten beginnen mit einer Endpunktschicht (Geräte und Dinge) 200, die auf die Edge-Cloud 110 zugreift, um Aktivitäten zur Datenerstellung, -analyse und -nutzung durchzuführen. Die Edge-Cloud 110 kann sich über mehrere Netzwerkschichten erstrecken, z. B. eine Edge-Geräte-Schicht 210 mit Gateways, Servern vor Ort oder Netzwerkvorrichtungen (Knoten 215), die sich in physisch nahe gelegenen Edge-Systemen befinden; eine Netzwerkzugangsschicht 220, die Basisstationen, Funkverarbeitungseinheiten, Netzwerk-Hubs, regionale Datenzentren (DC) oder lokale Netzwerkvorrichtungen (Geräte 225) umfasst; und alle Geräte, Vorrichtungen oder Knoten, die sich dazwischen befinden (in Schicht 212 nicht im Detail dargestellt). Die Netzwerkkommunikation innerhalb der Edge-Cloud 110 und zwischen den verschiedenen Schichten kann über eine beliebige Anzahl von drahtgebundenen oder drahtlosen Medien erfolgen, einschließlich über nicht dargestellte Verbindungsarchitekturen und -technologien.
  • Beispiele für Latenzzeiten, die sich aus der Entfernung zur Netzwerkkommunikation und den Einschränkungen bei der Verarbeitungszeit ergeben, reichen von weniger als einer Millisekunde (ms) bei der Kommunikation zwischen den Endpunkten (200) über weniger als 5 ms bei den Edge-Geräten (210) bis hin zu 10 bis 40 ms bei der Kommunikation mit Knoten auf der Netzwerkzugangsebene (220). Hinter der Edge-Cloud 110 befinden sich die Schichten des Kernnetzwerks 230 und des Cloud-Rechenzentrums 240, die jeweils eine zunehmende Latenz aufweisen (z. B. zwischen 50-60 ms auf der Kernnetzwerkschicht 230 und 100 oder mehr ms auf der Schicht des Cloud-Rechenzentrums). Infolgedessen ist der Betrieb in einem Kernnetzwerk-Rechenzentrum 235 oder einem Cloud-Rechenzentrum 245 mit Latenzen von mindestens 50 bis 100 ms oder mehr nicht in der Lage, viele zeitkritische Funktionen der Anwendungsfälle 205 zu erfüllen. Jeder dieser Latenzwerte wird zur Veranschaulichung und zum Vergleich angegeben; es versteht sich von selbst, dass die Verwendung anderer Zugangsnetzwerkmedien und -technologien die Latenzzeiten weiter verringern kann. In einigen Beispielen können die jeweiligen Teile des Netzwerks als „close Edge“, „local Edge“, „near Edge“, „middle Edge“ oder „far Edge“-Schichten relativ zu einer Netzwerkquelle und einem Ziel kategorisiert werden. Aus der Perspektive des Kernnetzwerk-Rechenzentrums 235 oder eines Cloud-Rechenzentrums 245 kann z. B. ein zentrales Büro oder ein Inhaltsdatennetz als in einer „Near Edge“-Schicht befindlich betrachtet werden („near“ zur Cloud, mit hohen Latenzwerten bei der Kommunikation mit den Geräten und Endpunkten der Anwendungsfälle 205), während ein Zugangspunkt, eine Basisstation, ein Server vor Ort oder ein Netzwerk-Gateway als in einer „Far Edge“-Schicht befindlich betrachtet werden kann („far“ von der Cloud, mit niedrigen Latenzwerten bei der Kommunikation mit den Geräten und Endpunkten der Anwendungsfälle 205). Es versteht sich, dass andere Kategorisierungen einer bestimmten Netzwerkschicht als „nahe“, „lokale“, „nahe“, „mittlere“ oder „ferne“ Edge auf Latenz, Entfernung, Anzahl der Netzwerksprünge oder anderen messbaren Eigenschaften basieren können, die von einer Quelle in einer der Netzwerkschichten 200-240 gemessen werden.
  • Die verschiedenen Anwendungsfälle 205 können auf Ressourcen zugreifen, die durch eingehende Streams unter Nutzungsdruck stehen, da mehrere Dienste die Edge-Cloud nutzen. Um Ergebnisse mit niedrigen Latenzzeiten zu erzielen, müssen die in der Edge-Cloud 110 ausgeführten Dienste unterschiedliche Anforderungen erfüllen: (a) Priorität (Durchsatz oder Latenz) und Dienstgüte (QoS) (z. B. kann der Datenverkehr für ein autonomes Fahrzeug eine höhere Priorität haben als ein Temperatursensor in Bezug auf die erforderliche Reaktionszeit; oder es kann je nach Anwendung eine Leistungsempfindlichkeit/ein Engpass bei einer Rechen-/Beschleunigungs-, Speicher-, Speicher- oder Netzwerkressource bestehen); (b) Zuverlässigkeit und Ausfallsicherheit (z. B, einige Eingabeströme müssen verarbeitet und der Datenverkehr mit geschäftskritischer Zuverlässigkeit weitergeleitet werden, während andere Eingabeströme je nach Anwendung einen gelegentlichen Ausfall tolerieren können); und c) physische Einschränkungen (z. B. Energie, Kühlung und Formfaktor usw.).
  • Die End-to-End-Service-Sicht für diese Anwendungsfälle beinhaltet das Konzept eines Service-Flusses und ist mit einer Transaktion verbunden. In der Transaktion werden die allgemeinen Serviceanforderungen für die Entität, die den Service in Anspruch nimmt, sowie die zugehörigen Services für die Ressourcen, Workloads, Workflows und die funktionalen und geschäftlichen Anforderungen auf Unternehmensebene aufgeführt. Die mit den beschriebenen „Bedingungen“ ausgeführten Dienste können auf jeder Ebene so verwaltet werden, dass die Einhaltung der vertraglichen Bestimmungen für die Transaktion während des Lebenszyklus des Dienstes in Echtzeit und zur Laufzeit gewährleistet ist. Wenn eine Komponente in der Transaktion ihr vereinbartes Service Level Agreement (SLA) nicht einhält, kann das System als Ganzes (Komponenten in der Transaktion) die Möglichkeit bieten, (1) die Auswirkungen der SLA-Verletzung zu verstehen und (2) andere Komponenten im System zu ergänzen, um das Gesamt-SLA der Transaktion wiederherzustellen, und (3) Schritte zur Abhilfe zu implementieren.
  • Mit diesen Variationen und Dienstmerkmalen im Hinterkopf kann das Edge-Computing innerhalb der Edge-Cloud 110 die Fähigkeit bieten, mehrere Anwendungen der Anwendungsfälle 205 (z. B. Objektverfolgung, Videoüberwachung, vernetzte Autos usw.) in Echtzeit oder nahezu in Echtzeit zu bedienen und auf sie zu reagieren und die Anforderungen an eine extrem niedrige Latenz für diese mehreren Anwendungen zu erfüllen. Diese Vorteile ermöglichen eine ganz neue Klasse von Anwendungen (z. B. virtuelle Netzwerkfunktionen (VNFs), Function as a Service (FaaS), Edge as a Service (EaaS), Standardprozesse usw.), die das herkömmliche Cloud Computing aufgrund von Latenzzeiten oder anderen Einschränkungen nicht nutzen können.
  • Mit den Vorteilen des Edge-Computing sind jedoch auch die folgenden Vorbehalte verbunden. Die Geräte am Edge sind oft ressourcenbeschränkt, weshalb die Nutzung der Edge-Ressourcen unter Druck steht. In der Regel wird dies durch die gemeinsame Nutzung von Arbeitsspeicher und Speicherressourcen durch mehrere Nutzer (Tenants) und Geräte erreicht. Der Edge kann unter Strom- und Kühlungsbeschränkungen leiden, weshalb der Stromverbrauch von den Anwendungen bestimmt werden muss, die den meisten Strom verbrauchen. Bei diesen gepoolten Speicherressourcen kann es zu einem Kompromiss zwischen Leistung und Stromverbrauch kommen, da viele von ihnen wahrscheinlich neue Speichertechnologien verwenden, bei denen mehr Leistung eine größere Speicherbandbreite erfordert. Ebenso ist eine verbesserte Sicherheit der Hardware und der vertrauenswürdigen Root-of-Trust-Funktionen erforderlich, da Edge-Standorte unter Umständen unbemannt sind und sogar eine Zugangsgenehmigung benötigen (z. B. wenn sie an einem Drittstandort untergebracht sind). Solche Probleme werden in der Edge-Cloud 110 in einer Umgebung mit mehreren Mietern, mehreren Eigentümern oder mehreren Zugängen, in der Dienste und Anwendungen von vielen Nutzern angefordert werden, noch verschärft, insbesondere wenn die Netznutzung dynamisch schwankt und sich die Zusammensetzung der verschiedenen Beteiligten, Anwendungsfälle und Dienste ändert.
  • Auf einer allgemeineren Ebene kann ein Edge-Informatiksystem so beschrieben werden, dass es eine beliebige Anzahl von Bereitstellungen auf den zuvor erörterten Schichten umfasst, die in der Edge-Cloud 110 (Netzwerkschichten 200-240) betrieben werden und die Koordinierung von Client- und verteilten Computergeräten ermöglichen. Ein oder mehrere Edge-Gateway-Knoten, ein oder mehrere Edge-Aggregationsknoten und ein oder mehrere Kerndatenzentren können über die verschiedenen Schichten des Netzes verteilt sein, um eine Implementierung des Edge-Informatiksystems durch oder im Namen eines Telekommunikationsdienstleisters („Telco“ oder „TSP“), eines Internet-of-Things-Dienstleisters, eines Cloud-Dienstanbieters (CSP), eines Unternehmens oder einer beliebigen anderen Anzahl von Unternehmen zu ermöglichen. Verschiedene Implementierungen und Konfigurationen des Edge-Informatiksystems können dynamisch bereitgestellt werden, z. B. wenn sie zur Erfüllung von Dienstzielen orchestriert werden.
  • In Übereinstimmung mit den hier dargestellten Beispielen kann ein Client-Rechenknoten als jede Art von Endpunktkomponente, Vorrichtung, Gerät oder andere Sache verkörpert werden, die in der Lage ist, als Produzent oder Konsument von Daten zu kommunizieren. Darüber hinaus bedeutet die Bezeichnung „Knoten“ oder „Gerät“, wie sie im Edge-Informatiksystem verwendet wird, nicht notwendigerweise, dass ein solcher Knoten oder ein solches Gerät in einer Client- oder Agenten-/Mitläuferrolle arbeitet; vielmehr beziehen sich alle Knoten oder Geräte im Edge-Informatiksystem auf einzelne Einheiten, Knoten oder Subsysteme, die diskrete oder verbundene Hardware- oder Softwarekonfigurationen umfassen, um die Edge-Cloud 110 zu ermöglichen oder zu nutzen.
  • So besteht die Edge-Cloud 110 aus Netzwerkkomponenten und Funktionsmerkmalen, die von und in Edge-Gateway-Knoten, Edge-Aggregationsknoten oder anderen Edge-Computing-Knoten auf den Netzwerkschichten 210-230 betrieben werden. Die Edge-Cloud 110 kann daher als jede Art von Netzwerk ausgeführt werden, das Edge-Rechen- und/oder Speicherressourcen bereitstellt, die sich in unmittelbarer Nähe von RAN-fähigen Endgeräten (z. B. mobile Computergeräte, IoT-Geräte, intelligente Geräte usw.) befinden, die hier erörtert werden. Mit anderen Worten: Die Edge-Cloud 110 kann als „Edge“ betrachtet werden, die Endgeräte und herkömmliche Netzzugangspunkte verbindet, die als Eintrittspunkt in die Kernnetze von Dienstanbietern dienen, einschließlich der Netze von Mobilfunkanbietern (z. B. Global System for Mobile Communications (GSM)-Netze, Long-Term Evolution (LTE)-Netze, 5G/6G-Netze usw.), und gleichzeitig Speicher- und/oder Rechenfunktionen bereitstellt. Andere Arten und Formen des Netzzugangs (z. B. Wi-Fi, drahtlose Weitverkehrsnetze, drahtgebundene Netze einschließlich optischer Netze usw.) können auch anstelle von oder in Kombination mit solchen 3 GPP-Trägernetzen verwendet werden.
  • Bei den Netzwerkkomponenten der Edge-Cloud 110 kann es sich um Server, mandantenfähige Server, Appliance-Computing-Geräte und/oder jede andere Art von Computing-Geräten handeln. Die Edge-Cloud 110 kann beispielsweise ein Appliance-Computing-Gerät umfassen, das ein in sich geschlossenes elektronisches Gerät mit einem Gehäuse, einem Chassis, einem Koffer oder einer Schale ist. Unter bestimmten Umständen kann das Gehäuse so dimensioniert sein, dass es von einer Person getragen und/oder transportiert werden kann. Beispielhafte Gehäuse können Materialien enthalten, die eine oder mehrere Außenflächen bilden, die den Inhalt des Gerätes teilweise oder vollständig schützen, wobei der Schutz Wetterschutz, Schutz vor gefährlichen Umgebungsbedingungen (z. B. elektromagnetische Störungen (EMI), Vibrationen, extreme Temperaturen usw.) umfassen und/oder das Eintauchen ermöglichen kann. Beispielhafte Gehäuse können Stromkreise enthalten, um stationäre und/oder tragbare Geräte mit Strom zu versorgen, z. B. Wechselstromeingänge, Gleichstromeingänge, AC/DC-Wandler, DC/AC-Wandler, DC/DC-Wandler, Leistungsregler, Transformatoren, Ladeschaltungen, Batterien, verdrahtete Eingänge und/oder drahtlose Stromeingänge. Beispielhafte Gehäuse und/oder deren Oberflächen können Befestigungselemente enthalten oder mit diesen verbunden sein, um die Befestigung an Strukturen wie Gebäuden, Telekommunikationsstrukturen (z. B. Masten, Antennenstrukturen usw.) und/oder Racks (z. B. Server-Racks, Blade-Halterungen usw.) zu ermöglichen. Beispielhafte Gehäuse und/oder deren Oberflächen können einen oder mehrere Sensoren tragen (z. B. Temperatursensoren, Schwingungssensoren, Lichtsensoren, akustische Sensoren, kapazitive Sensoren, Näherungssensoren, Infrarot- oder andere visuelle Wärmesensoren usw.). Ein oder mehrere solcher Sensoren können in der Oberfläche enthalten sein, von ihr getragen werden oder auf andere Weise in die Oberfläche eingebettet und/oder an der Oberfläche des Gerätes angebracht sein. Beispielhafte Gehäuse und/oder deren Oberflächen können mechanische Verbindungen tragen, wie z. B. Antriebskomponenten (z. B. Räder, Rotoren wie Propeller usw.) und/oder Gelenkkomponenten (z. B. Roboterarme, schwenkbare Anhänge usw.). In manchen Fällen können die Sensoren jede Art von Eingabegeräten umfassen, wie z. B. Benutzerschnittstellen-Hardware (z. B. Tasten, Schalter, Drehknöpfe, Schieberegler, Mikrofone usw.). In manchen Fällen umfassen die Gehäuse Ausgabegeräte, die in ihnen enthalten sind, von ihnen getragen werden, in sie eingebettet und/oder an ihnen befestigt sind. Zu den Ausgabegeräten können Anzeigen, Touchscreens, Leuchten, Leuchtdioden (LEDs), Lautsprecher, Ein-/Ausgabeanschlüsse (z. B. Universal Serial Bus (USB)) usw. gehören. Unter Umständen sind Edge-Geräte Geräte, die im Netz für einen bestimmten Zweck bereitgestellt werden (z. B. eine Ampel), aber über Verarbeitungs- und/oder andere Kapazitäten verfügen können, die für andere Zwecke genutzt werden können. Solche Edge-Geräte können unabhängig von anderen vernetzten Geräten sein und mit einem Gehäuse ausgestattet sein, dessen Formfaktor für ihren Hauptzweck geeignet ist; sie können jedoch für andere Rechenaufgaben zur Verfügung stehen, die ihre Hauptaufgabe nicht beeinträchtigen. Zu den Edge-Geräten gehören Geräte aus dem Internet der Dinge. Das Appliance-Computing-Gerät kann Hardware- und Softwarekomponenten zur Verwaltung lokaler Probleme wie Gerätetemperatur, Vibration, Ressourcennutzung, Updates, Stromversorgungsprobleme, physische und Netzwerksicherheit usw. enthalten. Ein Beispiel für die Hardware zur Implementierung einer Appliance-Computing-Vorrichtung wird in Verbindung mit 15 beschrieben. Die Edge-Cloud 110 kann auch einen oder mehrere Server und/oder einen oder mehrere Multi-Tenant-Server umfassen. Ein solcher Server kann ein Betriebssystem enthalten und eine virtuelle Datenverarbeitungsumgebung implementieren. Eine virtuelle Datenverarbeitungsumgebung kann einen Hypervisor umfassen, der eine oder mehrere virtuelle Maschinen, einen oder mehrere Container usw. verwaltet (z. B. Erzeugen, Bereitstellen, Inbetriebnehmen, Zerstören, Außerbetriebsetzen usw.). Solche virtuellen Computerumgebungen bieten eine Ausführungsumgebung, in der eine oder mehrere Anwendungen und/oder andere Software, Code oder Skripte ausgeführt werden können, während sie von einer oder mehreren anderen Anwendungen, Software, Code oder Skripten isoliert sind.
  • In 3 tauschen verschiedene Client-Endpunkte 310 (in Form von mobilen Geräten, Computern, autonomen Fahrzeugen, Geschäftscomputern und industriellen Verarbeitungsgeräten) Anfragen und Antworten aus, die für die Art der Endpunkt-Netzwerkaggregation spezifisch sind. So können Client-Endpunkte 310 beispielsweise über ein kabelgebundenes Breitbandnetz Zugang zum Netz erhalten, indem sie Anfragen und Antworten 322 über ein lokales Netzsystem 332 austauschen. Einige Client-Endpunkte 310, wie z. B. mobile Rechenvorrichtungen, können über ein drahtloses Breitbandnetz Zugang zum Netz erhalten, indem sie Anfragen und Antworten 324 über einen Zugangspunkt (z. B. einen Mobilfunkmast) 334 austauschen. Einige Client-Endpunkte 310, wie z. B. autonome Fahrzeuge, können den Netzzugang für Anfragen und Antworten 326 über ein drahtloses Fahrzeugnetz durch ein straßengebundenes Netzsystem 336 erhalten. Unabhängig von der Art des Netzzugangs kann der TSP jedoch Aggregationspunkte 342, 344 innerhalb der Edge-Cloud 110 einrichten, um Datenverkehr und Anfragen zu aggregieren. So kann der TSP innerhalb der Edge-Cloud 110 verschiedene Rechen- und Speicherressourcen einsetzen, z. B. an Edge-Aggregationsknoten 340, um angeforderte Inhalte bereitzustellen. Die Edge-Aggregationsknoten 340 und andere Systeme der Edge-Cloud 110 sind mit einer Cloud oder einem Rechenzentrum 360 verbunden, das ein Backhaul-Netzwerk 350 verwendet, um Anfragen mit höherer Latenz von einer Cloud/einem Rechenzentrum für Websites, Anwendungen, Datenbankserver usw. zu erfüllen. Zusätzliche oder konsolidierte Instanzen der Edge-Aggregationsknoten 340 und der Aggregationspunkte 342, 344, einschließlich solcher, die auf einem einzigen Server-Framework bereitgestellt werden, können auch innerhalb der Edge-Cloud 110 oder in anderen Bereichen der TSP-Infrastruktur vorhanden sein.
  • Die hier erörterten Edge-Informatiksysteme und -Anordnungen können in verschiedenen Lösungen, Diensten und/oder Anwendungsfällen im Zusammenhang mit Mobilität eingesetzt werden. 4 zeigt als Beispiel einen vereinfachten Anwendungsfall für Fahrzeugdatenverarbeitung und -kommunikation mit mobilem Zugriff auf Anwendungen in einem Edge-Informatiksystem 400, das eine Edge-Cloud 110 implementiert. In diesem Anwendungsfall können die jeweiligen Client-Rechenknoten 410 als fahrzeuginterne Rechensysteme (z. B. fahrzeuginterne Navigations- und/oder Infotainmentsysteme) in den entsprechenden Fahrzeugen eingesetzt werden, die während der Überquerung einer Fahrbahn mit den Edge-Gateway-Knoten 420 kommunizieren. Die Edge-Gateway-Knoten 420 können beispielsweise in einem straßenseitigen Schrank oder einem anderen Gehäuse untergebracht sein, das in ein Bauwerk mit anderen, separaten mechanischen Funktionen eingebaut ist, das entlang der Fahrbahn, an Straßenkreuzungen oder an anderen Orten in der Nähe der Fahrbahn aufgestellt werden kann. Während die jeweiligen Fahrzeuge die Fahrbahn entlang fahren, kann sich die Verbindung zwischen ihrem Client-Rechenknoten 410 und einem bestimmten Edge-Gateway-Gerät 420 fortpflanzen, um eine konsistente Verbindung und einen konsistenten Kontext für den Client-Rechenknoten 410 aufrechtzuerhalten. Ebenso können sich mobile Edge-Knoten bei Diensten mit hoher Priorität oder entsprechend den Anforderungen an den Durchsatz oder die Latenzauflösung für den/die zugrunde liegenden Dienst(e) zusammenschließen (z. B. im Falle von Drohnen). Die jeweiligen Edge-Gateway-Geräte 420 verfügen über eine Reihe von Verarbeitungs- und Speicherkapazitäten, so dass ein Teil der Verarbeitung und/oder Speicherung von Daten für die Client-Rechenknoten 410 auf einem oder mehreren der Edge-Gateway-Geräte 420 durchgeführt werden kann.
  • Die Edge-Gateway-Geräte 420 können mit einem oder mehreren Edge-Ressourcenknoten 440 kommunizieren, die beispielhaft als Rechenserver, Geräte oder Komponenten an oder in einer Kommunikationsbasisstation 442 (z. B. einer Basisstation eines Mobilfunknetzes) ausgeführt sind. Wie oben beschrieben, verfügen die jeweiligen Edge-Ressourcenknoten 440 über eine Reihe von Verarbeitungs- und Speicherkapazitäten, so dass ein Teil der Verarbeitung und/oder Speicherung von Daten für die Client-Rechenknoten 410 auf dem Edge-Ressourcenknoten 440 durchgeführt werden kann. Beispielsweise kann die Verarbeitung von Daten, die weniger dringend oder wichtig sind, vom Edge-Ressourcenknoten 440 durchgeführt werden, während die Verarbeitung von Daten, die von höherer Dringlichkeit oder Wichtigkeit sind, von den Edge-Gateway-Geräten 420 durchgeführt werden kann (abhängig z. B. von den Fähigkeiten der einzelnen Komponenten oder von Informationen in der Anfrage, die auf die Dringlichkeit oder Wichtigkeit hinweisen). Auf der Grundlage des Datenzugriffs, des Datenstandorts oder der Latenzzeit kann die Arbeit auf Edge-Ressourcenknoten fortgesetzt werden, wenn sich die Verarbeitungsprioritäten während der Verarbeitungsaktivität ändern. Ebenso können konfigurierbare Systeme oder Hardwareressourcen selbst aktiviert werden (z. B. durch einen lokalen Orchestrator), um zusätzliche Ressourcen zur Deckung des neuen Bedarfs bereitzustellen (z. B. Anpassung der Rechenressourcen an die Arbeitslastdaten).
  • Die Edge-Ressourcenknoten 440 kommunizieren auch mit dem Kernrechenzentrum 450, das Rechenserver, Geräte und/oder andere Komponenten umfassen kann, die sich an einem zentralen Ort befinden (z. B. in der Zentrale eines zellularen Kommunikationsnetzes). Das Kernrechenzentrum 450 kann ein Gateway zur globalen Netzwerk-Cloud 460 (z. B. dem Internet) für die Edge-Cloud 110 bereitstellen, die aus den Edge-Ressourcenknoten 440 und den Edge-Gateway-Geräten 420 besteht. Darüber hinaus kann das Kernrechenzentrum 450 in einigen Beispielen eine bestimmte Menge an Verarbeitungs- und Speicherkapazitäten enthalten, so dass ein Teil der Verarbeitung und/oder Speicherung von Daten für die Client-Rechenvorrichtungen im Kernrechenzentrum 450 durchgeführt werden kann (z. B. Verarbeitung von geringer Dringlichkeit oder Wichtigkeit oder hoher Komplexität).
  • Die Edge-Gateway-Knoten 420 oder die Edge-Ressourcenknoten 440 können zustandsabhängige Anwendungen 432 und eine geografisch verteilte Datenbank 434 anbieten. Obwohl die Anwendungen 432 und die Datenbank 434 als horizontal auf einer Schicht der Edge-Cloud 110 verteilt dargestellt sind, können Ressourcen, Dienste oder andere Komponenten der Anwendung vertikal über die gesamte Edge-Cloud verteilt sein (einschließlich eines Teils der Anwendung, der auf dem Client-Rechenknoten 410 ausgeführt wird, und anderer Teile auf den Edge-Gateway-Knoten 420 oder den Edge-Ressourcenknoten 440 usw.). Darüber hinaus kann es, wie bereits erwähnt, auf jeder Ebene Peer-Beziehungen geben, um die Ziele und Verpflichtungen des Dienstes zu erfüllen. Außerdem können die Daten für einen bestimmten Client oder eine bestimmte Anwendung je nach den sich ändernden Bedingungen (z. B. je nach Verfügbarkeit von Beschleunigungsressourcen, nach der Bewegung des Fahrzeugs usw.) von Edge zu Edge verschoben werden. Anhand der „Verfallsrate“ des Zugriffs kann beispielsweise vorhergesagt werden, wer der nächste Eigentümer ist, der den Zugriff fortsetzt, oder wann der Zugriff auf die Daten oder die Datenverarbeitung nicht mehr möglich sein wird. Diese und andere Dienste können in Anspruch genommen werden, um die Arbeit zu vervollständigen, die notwendig ist, um die Transaktion konform und verlustfrei zu halten.
  • In weiteren Szenarien kann ein Container 436 (oder eine Gruppe von Containern) flexibel von einem Edge-Knoten 420 zu anderen Edge-Knoten (z. B. 420, 440 usw.) migriert werden, so dass der Container mit einer Anwendung und Arbeitslast nicht neu erstellt, kompiliert oder interpretiert werden muss, damit die Migration funktioniert. In solchen Fällen kann es jedoch vorkommen, dass einige Korrektur- oder „Swizzling“-Übersetzungsvorgänge durchgeführt werden. Beispielsweise kann sich die physische Hardware des Knotens 440 von der des Edge-Gateway-Knotens 420 unterscheiden. Daher wird die Hardware-Abstraktionsschicht (HAL), aus der der untere Edge des Containers besteht, der physischen Schicht des Edge-Zielknotens neu zugeordnet. Dies kann eine Art von Late-Binding-Technik beinhalten, wie z. B. die binäre Übersetzung der HAL vom nativen Format des Containers in das physische Hardware-Format, oder es kann die Abbildung von Schnittstellen und Operationen beinhalten. Ein Pod-Controller kann zur Steuerung der Schnittstellenzuordnung im Rahmen des Container-Lebenszyklus verwendet werden, was auch die Migration zu/von verschiedenen Hardware-Umgebungen umfasst.
  • In den in 4 dargestellten Szenarien können verschiedene Arten von mobilen Edge-Knoten verwendet werden, wie z. B. ein Edge-Knoten, der in einem Fahrzeug (z. B. einem Auto, einem Lastwagen, einer Straßenbahn, einem Zug usw.) oder einer anderen mobilen Einheit untergebracht ist, da sich der Edge-Knoten entlang der Plattform, auf der er untergebracht ist, zu anderen geografischen Standorten bewegt. Bei der Fahrzeug-zu-Fahrzeug-Kommunikation können einzelne Fahrzeuge sogar als Edge-Netzknoten für andere Fahrzeuge fungieren (z. B. zur Zwischenspeicherung, Berichterstattung, Datenaggregation usw.). Es versteht sich, dass die in verschiedenen Edge-Knoten bereitgestellten Anwendungskomponenten in statischen oder mobilen Einstellungen verteilt sein können, einschließlich der Koordinierung zwischen einigen Funktionen oder Vorgängen an einzelnen Endpunktgeräten oder den Edge-Gateway-Knoten 420, einigen anderen am Edge-Ressourcenknoten 440 und anderen im Kerndatenzentrum 450 oder der globalen Netzwerk-Cloud 460.
  • In weiteren Konfigurationen kann das Edge-Informatiksystem FaaS-Computing-Funktionen durch die Verwendung entsprechender ausführbarer Anwendungen und Funktionen implementieren. In einem Beispiel schreibt ein Entwickler Funktionscode (hier z. B. „Computercode“), der eine oder mehrere Computerfunktionen darstellt, und der Funktionscode wird auf eine FaaS-Plattform hochgeladen, die z. B. von einem Edge-Knoten oder Rechenzentrum bereitgestellt wird. Ein Auslöser, wie z. B. ein Dienstanwendungsfall oder ein Edge-Verarbeitungsereignis, initiiert die Ausführung des Funktionscodes durch die FaaS-Plattform.
  • In einem Beispiel für FaaS wird ein Container verwendet, um eine Umgebung bereitzustellen, in der Funktionscode (z. B. eine Anwendung, die von einem Dritten bereitgestellt werden kann) ausgeführt wird. Der Container kann eine beliebige isolierte Ausführungseinheit sein, z. B. ein Prozess, ein Docker- oder Kubernetes-Container, eine virtuelle Maschine usw. Innerhalb des Edge-Informatiksystems werden verschiedene Rechenzentrums-, Edge- und Endpunktgeräte (einschließlich mobiler Geräte) zum „Hochfahren“ von Funktionen verwendet (z. B. zum Aktivieren und/oder Zuweisen von Funktionsaktionen), die nach Bedarf skaliert werden. Der Funktionscode wird auf dem Gerät der physischen Infrastruktur (z. B. dem Edge-Computing-Knoten) und den zugrunde liegenden virtualisierten Containern ausgeführt. Zum Schluss wird (werden) die Funktion(en) in der Infrastruktur „heruntergefahren“ (z. B. deaktiviert und/oder freigegeben), wenn die Ausführung abgeschlossen ist.
  • Weitere Aspekte von FaaS können die Bereitstellung von Edge-Funktionen in Form von Diensten ermöglichen, einschließlich der Unterstützung entsprechender Funktionen, die Edge-Computing als Dienst unterstützen (Edge-as-a-Service oder „EaaS“). Weitere Merkmale von FaaS können sein: eine granulare Abrechnungskomponente, die es Kunden (z. B. Entwicklern von Computercode) ermöglicht, nur dann zu zahlen, wenn ihr Code ausgeführt wird; gemeinsamer Datenspeicher zur Speicherung von Daten für die Wiederverwendung durch eine oder mehrere Funktionen; Orchestrierung und Verwaltung zwischen einzelnen Funktionen; Verwaltung der Funktionsausführung, Parallelisierung und Konsolidierung; Verwaltung von Container- und Funktionsspeicherräumen; Koordinierung der für Funktionen verfügbaren Beschleunigungsressourcen; und Verteilung von Funktionen zwischen Containern (einschließlich „warmer“ Container, die bereits bereitgestellt oder in Betrieb sind, im Gegensatz zu „kalten“, die initialisiert, bereitgestellt oder konfiguriert werden müssen).
  • Das Edge-Informatiksystem 400 kann einen Edge-Bereitstellungsknoten 444 enthalten oder mit diesem in Verbindung stehen. Der Edge-Bereitstellungsknoten 444 kann Software, wie z. B. die maschinenlesbaren (z. B. computerlesbaren) Befehle 1532 von 15, an verschiedene Empfänger verteilen, um eines der hier beschriebenen Verfahren zu implementieren. Der beispielhafte Edge-Bereitstellungsknoten 444 kann durch einen beliebigen Computerserver, Heimserver, ein Content Delivery Network, einen virtuellen Server, ein Softwareverteilungssystem, eine zentrale Einrichtung, ein Speichergerät, eine Speicherplatte, einen Speicherknoten, eine Dateneinrichtung, einen Cloud-Dienst usw. implementiert werden, der in der Lage ist, Softwareanweisungen (z. B. Code, Skripte, ausführbare Binärdateien, Container, Pakete, komprimierte Dateien und/oder Derivate davon) zu speichern und/oder an andere Rechenvorrichtungen zu übertragen. Die Komponenten des beispielhaften Edge-Bereitstellungsknotens 444 können sich in einer Cloud, in einem lokalen Netzwerk, in einem Edge-Netzwerk, in einem Weitverkehrsnetz, im Internet und/oder an einem anderen Ort befinden, der kommunikativ mit dem/den Empfänger(n) verbunden ist. Bei den empfangenden Parteien kann es sich um Kunden, Clients, Mitarbeiter, Benutzer usw. des Unternehmens handeln, das den Edge-Bereitstellungsknoten 444 besitzt und/oder betreibt. Beispielsweise kann das Unternehmen, das den Edge-Bereitstellungsknoten 444 besitzt und/oder betreibt, ein Entwickler, ein Verkäufer und/oder ein Lizenzgeber (oder ein Kunde und/oder Verbraucher davon) von Softwareanweisungen wie den beispielhaften computerlesbaren Anweisungen 1532 von 15 sein. Bei den Empfängern kann es sich um Verbraucher, Dienstanbieter, Benutzer, Einzelhändler, OEMs usw. handeln, die die Softwareanweisungen zur Verwendung und/oder zum Weiterverkauf und/oder zur Unterlizenzierung erwerben und/oder lizenzieren.
  • In einem Beispiel umfasst der Edge-Bereitstellungsknoten 444 einen oder mehrere Server und ein oder mehrere Speichergeräte/Festplatten. Auf den Speichergeräten und/oder Speicherplatten befinden sich computerlesbare Anweisungen, wie z. B. die computerlesbaren Anweisungen 1532 in 15, wie unten beschrieben. Ähnlich wie die oben beschriebenen Edge-Gateway-Geräte 420 stehen der eine oder die mehreren Server des Edge-Bereitstellungsknotens 444 in Kommunikation mit einer Basisstation 442 oder einer anderen Netzwerk-Kommunikationsentität. In einigen Beispielen reagieren der eine oder die mehreren Server auf Anfragen zur Übertragung der Softwareanweisungen an eine anfragende Partei als Teil einer kommerziellen Transaktion. Die Zahlung für die Lieferung, den Verkauf und/oder die Lizenzierung der Softwareanweisungen kann über den einen oder die mehreren Server der Softwareverteilungsplattform und/oder über eine dritte Zahlungsinstanz abgewickelt werden. Die Server ermöglichen es den Käufern und/oder Lizenzgebern, die computerlesbaren Anweisungen 1532 vom Edge-Bereitstellungsknoten 444 herunterzuladen. Beispielsweise können die Softwareanweisungen, die den beispielhaften computerlesbaren Anweisungen 1432 von 15 entsprechen können, auf die beispielhafte(n) Prozessorplattform(en) heruntergeladen werden, die die computerlesbaren Anweisungen ausführen soll, um die hier beschriebenen Verfahren zu implementieren.
  • In einigen Beispielen können sich die Prozessorplattform(en), die die computerlesbaren Anweisungen ausführen, physisch an verschiedenen geografischen Standorten, Rechtsordnungen usw. befinden. In einigen Beispielen bieten, übertragen und/oder erzwingen ein oder mehrere Server des Edge-Bereitstellungsknotens 444 regelmäßig Aktualisierungen der Softwareanweisungen (z. B. die beispielhaften computerlesbaren Anweisungen 1532 von 15), um sicherzustellen, dass Verbesserungen, Patches, Aktualisierungen usw. verteilt und auf die in den Endbenutzergeräten implementierten Softwareanweisungen angewendet werden. In einigen Beispielen können verschiedene Komponenten der computerlesbaren Anweisungen aus verschiedenen Quellen und/oder auf verschiedene Prozessorplattformen verteilt werden; zum Beispiel können verschiedene Bibliotheken, Plug-ins, Komponenten und andere Arten von Rechenmodulen, ob kompiliert oder interpretiert, aus verschiedenen Quellen und/oder auf verschiedene Prozessorplattformen verteilt werden. Beispielsweise kann ein Teil der Softwareanweisungen (z. B. ein Skript, das an sich nicht ausführbar ist) von einer ersten Quelle verteilt werden, während ein Interpreter (der das Skript ausführen kann) von einer zweiten Quelle verteilt werden kann.
  • Die hier offenbarten Systeme und Verfahren können für die Prüfung beliebiger Komponenten der in den 1-4 dargestellten Informatiksysteme verwendet werden. So kann beispielsweise eine Netzwerkvorrichtung innerhalb der Edge-Cloud 110 getestet werden.
  • 5 zeigt ein Beispiel für ein Informatiksystem 500, das eine Testrechenvorrichtung 518 zur Koordinierung von Prüfungen innerhalb eines Informatiksystems enthält. Das beispielhafte Informatiksystem 500 ist ein softwaredefiniertes Informatiksystem, das vom softwaredefinierten Rechenzentrum 502 gesteuert wird. Das beispielhafte Informatiksystem 500 umfasst das beispielhafte softwaredefinierte Rechenzentrum 502, die beispielhafte Rechenzentrumsstruktur 504, die beispielhaften Rechendienste 506, die beispielhaften Speicherdienste 508, die beispielhaften Netzwerkdienste 510, die beispielhafte Hardware-Infrastruktur, die ein beispielhaftes programmierbares Gerät 514 mit programmierbarem Code 516 umfasst, und die beispielhafte Testrechenvorrichtung 518. Während in 5 ein Rechenzentrum dargestellt ist, kann das programmierbare Gerät 514 ein vernetztes Gerät in jeder Art von Computersystem sein, z. B. ein Edge-System, ein Cloud-System, ein lokales Gerätesystem (z. B. ein Fahrzeug), usw. Darüber hinaus können die hier offenbarten Systeme und Verfahren auf ein solches programmierbares Gerät 514 angewendet werden, das sich in einem beliebigen Informatiksystem befindet, einschließlich der oben genannten Systeme.
  • Das softwaredefinierte Rechenzentrum 502 umfasst die Softwaresysteme zur Steuerung und Koordinierung des Betriebs des Rechensystems 500. Die beispielhafte Rechenzentrumsstruktur 504 ist die Netzwerkkomponente, die die verschiedenen Komponenten des Informatiksystems 500 kommunikativ verbindet. Die beispielhaften Rechendienste 506 ermöglichen die Virtualisierung von Rechenressourcen, z. B. von Verarbeitungsressourcen. Die beispielhaften Speicherdienste 508 ermöglichen die Virtualisierung von Speicherressourcen (z. B. Datenspeicherressourcen). Die beispielhaften Netzwerkdienste 510 bieten eine Virtualisierung der physischen Netzwerkressourcen, um die Ressourcen unter den anfragenden Workloads aufzuteilen.
  • Die beispielhafte Hardware-Infrastruktur 512 besteht aus den physischen Geräten (z. B. Server, Prozessoren, Speicher, Massenspeicher, Netzwerkkomponenten usw.), aus denen das beispielhafte Informatiksystem 500 besteht und die durch die Dienste 506, 508, 510 virtualisiert werden. Zu Beschreibungszwecken wird die beispielhafte Hardware-Infrastruktur 512 so dargestellt, dass sie das programmierbare Gerät 514 umfasst. Das beispielhafte programmierbare Gerät 514 ist eine programmierbare Netzwerkvorrichtung (z. B. ein Switch, Router usw.), die mit dem beispielhaften programmierbaren Code 516 (z. B. P4-Code) programmiert wird.
  • Die beispielhafte Testrechenvorrichtung 518 arbeitet gemäß den hier beschriebenen Systemen und Verfahren, um Informatiksysteme wie das beispielhafte programmierbare Gerät 514 zu steuern und zu testen. Bei der beispielhaften Testrechenvorrichtung 518 handelt es sich um eine virtuelle Maschine, die innerhalb der vom softwaredefinierten Rechenzentrum 502 kontrollierten Umgebung ausgeführt wird. Alternativ kann die Testrechenvorrichtung 518 durch eine dedizierte Rechenvorrichtung (z. B. einen Server) implementiert werden, sie kann auf einem eingebetteten Gerät, einem Personal Computer oder einem der anderen hier beschriebenen Geräte implementiert werden.
  • 6 ist ein Blockdiagramm einer beispielhaften Implementierung der Testrechenvorrichtung 518. Gemäß dem dargestellten Beispiel enthält die Testrechenvorrichtung 518 eine beispielhafte Testabdeckungsmatrix 602, eine beispielhafte Richtlinienverarbeitungsschaltung 604, eine beispielhafte Eingangswahlschaltung 606, eine beispielhafte Mutationsgeneratorschaltung 608 und eine beispielhafte Ergebnisanalysatorschaltung 610.
  • Die beispielhafte Testabdeckungsmatrix 602 ist eine Datenbank. Die Testabdeckungsmatrix 602 kann jedoch durch jede Art von Speicher oder Speichergerät implementiert werden. Die beispielhafte Testabdeckungsmatrix 602 umfasst die P4-Codeabdeckung, Geräte- und Netzwerkzustände, gespeicherte und indizierte Eingaben sowie erwartete Fehler und Anzeigen. Während in 6 eine einzige Testabdeckungsmatrix 602 dargestellt ist, kann eine beliebige Anzahl von Testabdeckungsmatrizen und/oder Speichersystemen verwendet werden. Während der beispielhafte Test-Computing-Server 518 die beispielhafte Testabdeckungsmatrix 602 enthält, kann der beispielhafte Test-Computing-Server 518 zusätzlich oder alternativ auf eine Testabdeckungsmatrix zugreifen, die extern/entfernt vom Test-Computing-Server 518 gespeichert ist.
  • In einigen Beispielen enthält der Test-Computing-Server 518 Mittel zum Speichern. Das Mittel zum Speichern kann beispielsweise durch die Testabdeckungsmatrix 602 implementiert werden. In einigen Beispielen kann die Testabdeckungsmatrix 602 durch einen Speicher, einen Plattenspeicher, einen Cache-Speicher oder eine andere Art von Speicher oder Massenspeicher, der zum Speichern von Daten strukturiert ist, implementiert werden.
  • Die beispielhafte Richtlinienverarbeitungsschaltung 604 verwaltet und verwendet Testrichtlinien und -verfahren. Beispielsweise bestimmt die Richtlinienverarbeitungsschaltung 604 des gezeigten Beispiels Testsequenzen, bestimmt Sequenzen von Mutationen, die von der Mutationsgeneratorschaltung 608 auszuführen sind, wendet die bestimmten Tests und Mutationen von Tests an usw.
  • In einigen Beispielen enthält die Testrechenvorrichtung 518 Mittel zur Handhabung von Richtlinien. Beispielsweise können die Mittel für die Handhabung von Richtlinien durch die Richtlinienverarbeitungsschaltung 604 implementiert werden. In einigen Beispielen kann die Richtlinienverarbeitungsschaltung 604 durch maschinenausführbare Befehle implementiert werden, wie z. B. durch mindestens die Blöcke 830-832 von 8, die von einer Prozessorschaltung ausgeführt werden, die durch die beispielhafte Prozessorschaltung 1512 von 15, die beispielhafte Prozessorschaltung 1600 von 16 und/oder die beispielhafte FPGA-Schaltung 1700 von 17 implementiert werden kann. In anderen Beispielen wird die Richtlinienverarbeitungsschaltung 604 durch andere Hardware-Logikschaltungen, hardware-implementierte Zustandsmaschinen und/oder jede andere Kombination von Hardware, Software und/oder Firmware implementiert. Beispielsweise kann die Richtlinienverarbeitungsschaltung 604 durch mindestens eine oder mehrere Hardware-Schaltungen (z. B. Prozessorschaltungen, diskrete und/oder integrierte analoge und/oder digitale Schaltungen, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker, eine Logikschaltung usw.) implementiert werden, die so strukturiert sind, dass sie die entsprechende Operation ohne die Ausführung von Software oder Firmware durchführen, aber auch andere Strukturen sind geeignet.
  • Die beispielhafte Eingangswahlschaltung 606 wählt Testeingänge (z. B. Testparameter) aus der Testabdeckungsmatrix 602 auf der Grundlage der Richtlinien aus, die von der Richtlinienverarbeitungsschaltung 604 verarbeitet werden.
  • In einigen Beispielen enthält die Testrechenvorrichtung 518 Mittel zur Eingangsauswahl. Die Mittel zur Eingangsauswahl können beispielsweise durch die Eingangswahlschaltung 606 implementiert werden. In einigen Beispielen kann die Eingangswahlschaltung 606 durch maschinenausführbare Befehle implementiert werden, wie z. B. durch mindestens die Blöcke 802-804 und 820 von 8, die durch eine Prozessorschaltung ausgeführt werden, die durch die beispielhafte Prozessorschaltung 1512 von 15, die beispielhafte Prozessorschaltung 1600 von 16 und/oder die beispielhafte FPGA-Schaltung 1700 von 17 implementiert werden kann. In anderen Beispielen wird die Eingangswahlschaltung 606 durch andere Hardware-Logikschaltungen, hardwareimplementierte Zustandsmaschinen und/oder eine andere Kombination aus Hardware, Software und/oder Firmware implementiert. Beispielsweise kann die Eingangswahlschaltung 606 durch mindestens eine oder mehrere Hardware-Schaltungen (z. B. Prozessorschaltungen, diskrete und/oder integrierte analoge und/oder digitale Schaltungen, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker, eine Logikschaltung usw.) implementiert werden, die so strukturiert sind, dass sie die entsprechende Operation ohne die Ausführung von Software oder Firmware durchführen, aber auch andere Strukturen sind geeignet.
  • Die beispielhafte Mutationsgeneratorschaltung 608 erzeugt Mutationen und testet und/oder gibt ein. Die Mutationsgeneratorschaltung 608 kann beliebige Techniken zur Erzeugung von Mutationen über Seed-Eingaben verwenden (z. B. genetische Verfahren, simuliertes Annealing, generatives adversarisches Netzwerk (GAN), rekurrentes tiefes Lernen usw.). Der Umfang der Erkundung (P) und der Grad der Mutation (EI) können von der Richtlinienverarbeitungsschaltung 604 gemäß dem in 7 dargestellten Prozess bestimmt werden, und solche Parameter werden an die Mutationsgeneratorschaltung 608 zur Verwendung bei der Erzeugung einer mutierten Eingabe übergeben.
  • In einigen Beispielen enthält die Testrechenvorrichtung 518 Mittel zur Erzeugung von Mutationen. Die Mittel zur Erzeugung von Mutationen können zum Beispiel durch die Mutationsgeneratorschaltung 608 implementiert werden. In einigen Beispielen kann die Mutationsgeneratorschaltung 608 durch maschinenausführbare Befehle implementiert werden, wie z. B. durch mindestens die Blöcke 816 von 8, die durch eine Prozessorschaltung ausgeführt werden, die durch die beispielhafte Prozessorschaltung 1512 von 15, die beispielhafte Prozessorschaltung 1600 von 16 und/oder die beispielhafte FPGA-Schaltung 1700 von 17 implementiert werden kann. In anderen Beispielen wird die Richtlinienverarbeitungsschaltung 604 durch andere Hardware-Logikschaltungen, hardware-implementierte Zustandsmaschinen und/oder jede andere Kombination von Hardware, Software und/oder Firmware implementiert. Beispielsweise kann die Mutationsgeneratorschaltung 608 durch mindestens eine oder mehrere Hardware-Schaltungen (z. B. Prozessorschaltungen, diskrete und/oder integrierte analoge und/oder digitale Schaltungen, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker, eine Logikschaltung usw.) implementiert werden, die so strukturiert sind, dass sie die entsprechende Operation ohne die Ausführung von Software oder Firmware durchführen, aber auch andere Strukturen sind geeignet.
  • Die beispielhafte Ergebnisanalysatorschaltung 610 analysiert die Prüfergebnisse, um die nächsten Schritte zu bestimmen und anzuweisen. Beispielsweise kann die Ergebnisanalysatorschaltung 610 feststellen, dass eine Testeingabe ein Gerät erfolgreich in einen erwarteten Zustand überführt und somit die Testeingabe in der Testabdeckungsmatrix 602 aufzeichnet. Die Ergebnisanalysatorschaltung 610 kann feststellen, dass die Testeingabe einen Fehler verursacht, der vom Gerät ordnungsgemäß behandelt wird (z. B. nicht abstürzt, eine Fehlermeldung angezeigt wird usw.), und somit die Testeingabe in der Testabdeckungsmatrix 602 aufzeichnen, was anzeigt, dass die Testeingabe zum Testen ungültiger Eingaben, die ordnungsgemäß behandelt werden sollten, nützlich ist. Die Ergebnisanalysatorschaltung 610 kann zusätzlich Benachrichtigungen über Probleme mit den Testeingaben liefern. Wenn beispielsweise eine Testeingabe von einem Gerät nicht ordnungsgemäß verarbeitet wird, kann die Ergebnisanalysatorschaltung 610 eine Benachrichtigung für einen Benutzer/Administrator bereitstellen, damit dieser die Ergebnisse überprüfen kann, um festzustellen, ob die Testeingabe ungültig/unrichtig ist (z. B. im tatsächlichen Betrieb nicht auftreten könnte) oder ob eine Korrektur des Gerätes und/oder seiner Programmierung erforderlich ist (z. B. eine Schwachstelle, ein Fehler, ein Defekt usw. im Gerät durch den Test entdeckt wird).
  • In einigen Beispielen enthält die Testrechenvorrichtung 518 Mittel zur Analyse der Ergebnisse. Die Mittel zur Analyse der Ergebnisse können zum Beispiel durch die Ergebnisanalysatorschaltung 610 implementiert werden. In einigen Beispielen kann die Ergebnisanalysatorschaltung 610 durch maschinenausführbare Befehle implementiert werden, wie z. B. durch mindestens die Blöcke 806-810, 818, 822-828 und 836 von 8, die durch eine Prozessorschaltung ausgeführt werden, die durch die beispielhafte Prozessorschaltung 1512 von 15, die beispielhafte Prozessorschaltung 1600 von 16 und/oder die beispielhafte FPGA-Schaltung 1700 von 17 implementiert werden kann. In anderen Beispielen wird die Ergebnisanalysatorschaltung 610 durch andere Hardware-Logikschaltungen, hardwareimplementierte Zustandsautomaten und/oder jede andere Kombination aus Hardware, Software und/oder Firmware implementiert. Beispielsweise kann die Ergebnisanalysatorschaltung 610 durch mindestens eine oder mehrere Hardware-Schaltungen (z. B. Prozessorschaltungen, diskrete und/oder integrierte analoge und/oder digitale Schaltungen, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker, eine Logikschaltung usw.) implementiert werden, die so strukturiert sind, dass sie die entsprechende Operation ohne die Ausführung von Software oder Firmware durchführen, aber auch andere Strukturen sind geeignet.
  • 7 zeigt ein Verfahren zur Bestimmung von zwei Einstellungen: eine Mutationsversuchswahrscheinlichkeit P und eine Explorationsintensität EI. Bei einem Zustand S (Block 702), in dem sich ein System befinden kann, bestimmen die beiden Einstellungen den Umfang der Erkundung, die durch Fuzzing-Testeingaben durchgeführt wird.
  • Netzwerksysteme können auf zwei Abstraktionsebenen betrachtet werden. Erstens gibt es auf einer höheren Ebene softwaredefinierte Netzwerke (SDN). Automatisierte Softwaretests können auf das Testen von SDNs angewendet werden, wobei die Aktionen der SDN-Steuerungsebene zur Konfiguration von Hosts, Netzwerkkarten (NICs), Switches, Routern usw. in Form von Software erfasst werden.
  • Auf der nächsten Abstraktionsebene gibt es das tatsächliche Verhalten der Bestandteile, das davon abhängt, wie gut die Implementierung dieses Bestandteils (z. B. Netzwerkkarte, Switch, Router, Hub, Firewall usw.) mit einer formalen Spezifikation für diesen Bestandteil übereinstimmt.
  • Die hierin offenbarten Systeme und Verfahren erleichtern die automatisierte Erstellung und Erweiterung von Testeingaben, wenn neuere Software-Verhaltensweisen ans Licht kommen, oder als eine Möglichkeit der kontinuierlichen Erweiterung von Continuation-Integration/Continuous-Delivery (CI/CD)-Testsätzen mit einem Fuzz-Test-Erstellungsdienst; ein Dienst, der Eingangstests und Testergebnisse aus verschiedenen laufenden Testiterationen in verschiedenen Netzwerkclustern empfängt. (Bei diesen verschiedenen Systemen kann es sich entweder um eine Funktionsvalidierung vor der Bereitstellung und eine begrenzte Leistungsvalidierung einer kleinen Anzahl aktualisierter oder aufgerüsteter Komponenten handeln oder um eine Leistungs- und Stabilitätsbewertung nach der Bereitstellung von sehr großen Clustern in der Cloud des Rechenzentrums, der Edge Cloud usw.)
  • Man bedenke, dass der Zustand S (Block 702) ein häufig erreichter (besuchter) Zustand im System sein kann und dass Zustände, die nach Erreichen des Zustands S (Block 702) erreicht werden können, beim normalen Testen (Block 704) leicht reproduziert werden können; wobei beim normalen Testen (im Gegensatz zum erschöpfenden Testen) eine häufig angewandte Testmenge verwendet wird, weil die Menge gängige Netzverhaltensweisen repräsentiert. In diesem Fall werden beide Einstellungen (P, EI) niedrig angesetzt (Block 706, Block 714). Das liegt daran, dass es wenig Sinn macht, immer wieder Zustände zu erreichen und zu erforschen, die leicht durch ein allgemein verfügbares Repertoire an Eingaben für Tests erreicht werden können.
  • Ist es hingegen sehr schwierig oder selten, das System im Zustand S (Block 702) vorzufinden, muss die Anzahl der verschiedenen Variationen (Mutationen) der Tests, die durchgeführt werden, sobald sich das System im Zustand S (Block 702) befindet, erhöht werden. Dies wird durch die Wahl höherer Werte für P erreicht (Block 708). Ähnlich verhält es sich bei allen anwendbaren Eingaben im Zustand S (Block 702) für die Erkundung von Zuständen, die vom Zustand S (Block 702) aus erreichbar sind. Wenn es Zustände gibt, die schwer zu reproduzieren sind, dann sind teurere (kostspielig durchzuführende) Mutationen von Eingaben wünschenswert oder zulässig, und somit wird EI auf einen höheren Wert angehoben (Block 712).
  • Für Zustände mit hoher Mutationsversuchswahrscheinlichkeit P (Block 708) und/oder hoher Explorationsintensität (Block 712) stellt die Richtlinienverarbeitungsschaltung 604 mehr Ressourcen (Speicher, CPUs, Zeit) usw. bereit, so dass mehr Variationen von Eingabetests erzeugt und ausgeübt werden können, sobald ein System zuverlässig in den Zustand S (Block 702) gebracht werden kann. In ähnlicher Weise kann eine große Anzahl von Eingaben, die zu häufiger erreichten Zuständen führen (solche mit niedrigem P (Block 706)), im Laufe der Zeit aus den Testsätzen entfernt werden, um die Abdeckungsdichte und die Testgeschwindigkeit zu maximieren.
  • Selten erreichte Zustände mit hohen Out-Graden (z. B. viele ausgehende Kanten/Pfade) werden ebenfalls mit einem höheren Ressourcenvolumen belegt, so dass die Wahrscheinlichkeit der Ausübung von Codepfaden für selten durchlaufenen Code erhöht wird. Dies bedeutet, dass intensivere Tests von Netzwerken mit mehr Eingabemutationen und mehr Testversuchen abgedeckt werden, indem die Anzahl der mutierten Variablen und die Anzahl der Mutationen von Variablen erhöht wird; dies kann gegebenenfalls durch konkole Ausführung gesteuert werden.
  • Bei einem Netzwerksystem mit programmierbaren Geräten kann das Programmierprotokoll als Brücke genutzt werden. P4 ist eine Open-Source-Programmiersprache, mit der Programmierer bestimmen können, wie Prozessorchips in Netzwerk-Weiterleitungsgeräten wie Switches, Routern und Netzwerk-Schnittstellenkarten arbeiten. Auf diese Weise können die Programmierer jede Schicht des Infrastruktur-Stacks individuell anpassen und sind nicht durch die Hardware, Firmware oder eingebettete Software eines Gerätes eingeschränkt. Bei einem Gerät, das nicht direkt mit P4 programmiert werden kann, wird davon ausgegangen, dass es Tools gibt, die die richtige Konfiguration oder die richtigen Einstellungen und die richtige Firmware oder andere Optionen programmieren, so dass das tatsächliche Verhalten des Gerätes theoretisch dem eines direkt mit P4 programmierten Gerätes ähnelt.
  • Beim Testen in einer solchen Umgebung wird das Softwaresystem, das typischerweise analysiert wird und dessen Zustände kalibriert werden und dessen Abweichungen identifiziert und katalogisiert werden, durch die physische Implementierung dieses Softwaresystems (z. B. die Netzwerkvorrichtung) ersetzt, das Gegenstand dieser Zustandskalibrierungen, Testeingabeerweiterungen usw. ist. Somit können die hierin beschriebenen Systeme und Verfahren die Codeabdeckung des P4-Programms an der physischen Implementierung dieses Programms und nicht an der Software-Implementierung, die das Netzwerkelement programmiert, überprüfen.
  • Obwohl in 6 ein Beispiel für die Implementierung der Testrechenvorrichtung 518 dargestellt ist, können ein oder mehrere der in 6 dargestellten Elemente, Prozesse und/oder Vorrichtungen kombiniert, geteilt, neu angeordnet, weggelassen, eliminiert und/oder auf jede andere Weise implementiert werden. Darüber hinaus können die beispielhafte Richtlinienverarbeitungsschaltung 604, die beispielhafte Mutationsgeneratorschaltung 608, die beispielhafte Eingangswahlschaltung 606, der beispielhafte Ergebnisanalysator 610 und/oder, allgemeiner, die beispielhafte Testrechenvorrichtung 518 von 5 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert werden. So könnte z. B. jede der beispielhaften Richtlinienverarbeitungsschaltung 604, der beispielhaften Mutationsgeneratorschaltung 608, der beispielhaften Eingangswahlschaltung 606, des beispielhaften Ergebnisanalysators 610 und/oder, allgemeiner, der beispielhaften Testrechenvorrichtung 518 von 5 durch Prozessorschaltungen, analoge Schaltungen, digitale Schaltungen, logische Schaltungen, programmierbare Prozessoren, programmierbare Mikrocontroller, Grafikverarbeitungseinheiten (GPUs), digitale(r) Signalprozessor(en) (DSP), anwendungsspezifische(r) integrierte(r) Schaltkreis(e) (ASIC), programmierbare Logikbausteine (PLD) und/oder feldprogrammierbare Logikbausteine (FPLD) wie Field Programmable Gate Arrays (FPGAs) implementiert werden. Wenn einer der Geräte- oder Systemansprüche dieses Patents gelesen wird, um eine reine Software- und/oder Firmware-Implementierung abzudecken, wird/werden hiermit ausdrücklich definiert, dass mindestens eine der beispielhaften Richtlinienverarbeitungsschaltung 604, der beispielhaften Mutationsgeneratorschaltung 608, der beispielhaften Eingangswahlschaltung 606, des beispielhaften Ergebnisanalysators 610 und/oder, allgemeiner, der beispielhaften Testrechenvorrichtung 518 von 5 ein nichtflüchtiges, computerlesbares Speichergerät oder eine Speicherplatte, wie z. B. einen Speicher, eine Digital Versatile Disk (DVD), eine Compact Disk (CD), eine Blu-ray-Disk usw., einschließlich der Software und/oder Firmware enthält. Darüber hinaus kann die beispielhafte Testrechenvorrichtung 518 ein oder mehrere Elemente, Prozesse und/oder Geräte zusätzlich zu oder anstelle der in 6 dargestellten enthalten und/oder kann mehr als eines oder alle der dargestellten Elemente, Prozesse und Geräte enthalten.
  • Flussdiagramme, die beispielhafte Hardware-Logikschaltungen, maschinenlesbare Befehle, in hardware-implementierte Zustandsautomaten und/oder eine beliebige Kombination davon zur Implementierung der Testrechenvorrichtung 518 darstellen, sind in den 8-14 dargestellt. Bei den maschinenlesbaren Anweisungen kann es sich um ein oder mehrere ausführbare Programme oder Teile eines ausführbaren Programms handeln, die von einer Prozessorschaltung ausgeführt werden können, wie z. B. die Prozessorschaltung 1512, die in der beispielhaften Prozessorplattform 1500 gezeigt wird, die unten im Zusammenhang mit 15 und/oder der beispielhaften Prozessorschaltung, die unten im Zusammenhang mit 16 und/oder 17 besprochen wird. Das Programm kann in Software verkörpert sein, die auf einem oder mehreren nicht-übertragbaren, computerlesbaren Speichermedien wie einer CD, einer Diskette, einem Festplattenlaufwerk (HDD), einer DVD, einer Blu-ray-Disk, einem flüchtigen Speicher (z. B. Random Access Memory (RAM) jeder Art usw.) oder einem nicht-flüchtigen Speicher (z. B., FLASH-Speicher, eine Festplatte usw.), die mit einer Prozessorschaltung in einer oder mehreren Hardwarevorrichtungen verbunden sind, aber das gesamte Programm und/oder Teile davon könnten alternativ auch von einer oder mehreren Hardwarevorrichtungen ausgeführt werden, die sich von der Prozessorschaltung unterscheiden und/oder in Firmware oder dedizierter Hardware verkörpert sind. Die maschinenlesbaren Anweisungen können auf mehrere Hardwaregeräte verteilt und/oder von zwei oder mehr Hardwaregeräten (z. B. einem Server und einem Client-Hardwaregerät) ausgeführt werden. Das Client-Hardwaregerät kann beispielsweise durch ein Endpunkt-Client-Hardwaregerät (z. B. ein Hardwaregerät, das einem Benutzer zugeordnet ist) oder ein dazwischenliegendes Client-Hardwaregerät (z. B. ein RAN-Gateway, das die Kommunikation zwischen einem Server und einem Endpunkt-Client-Hardwaregerät ermöglicht) implementiert werden. Ebenso können die nicht transitorischen computerlesbaren Speichermedien ein oder mehrere Medien umfassen, die sich in einem oder mehreren Hardwaregeräten befinden. Obwohl das beispielhafte Programm unter Bezugnahme auf das in den 8-14 dargestellte Flussdiagramm beschrieben wird, können alternativ auch viele andere Verfahren zur Implementierung der beispielhaften Testrechenvorrichtung 518 verwendet werden. Beispielsweise kann die Reihenfolge der Ausführung der Blöcke geändert werden, und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ dazu können beliebige oder alle der Blöcke durch ein oder mehrere Hardware-Schaltungen (z. B. diskrete und/oder integrierte analoge und/oder digitale Schaltungen, ein FPGA, ein ASIC, ein Komparator, ein Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation durchzuführen, ohne Software oder Firmware auszuführen. Die Prozessorschaltkreise können in verschiedenen Netzwerken und/oder lokal auf einem oder mehreren Hardwaregeräten verteilt sein (z. B. ein Single-Core-Prozessor (z. B. eine Single-Core-Zentraleinheit (CPU)), ein Multi-Core-Prozessor (z. B. ein Multi-Core-Prozessor (z. B. eine Multi-Core-CPU) usw.) in einer einzigen Maschine, mehrere Prozessoren, die auf mehrere Server eines Server-Racks verteilt sind, mehrere Prozessoren, die auf ein oder mehrere Server-Racks verteilt sind, eine CPU und/oder ein FPGA, die sich in demselben Gehäuse befinden (z. B. im selben IC-Gehäuse oder in zwei oder mehreren separaten Gehäusen usw.).
  • Die hier beschriebenen maschinenlesbaren Anweisungen können in einem oder mehreren der folgenden Formate gespeichert werden: komprimiertes Format, verschlüsseltes Format, fragmentiertes Format, kompiliertes Format, ausführbares Format, verpacktes Format usw. Maschinenlesbare Anweisungen, wie hierin beschrieben, können als Daten oder eine Datenstruktur (z. B. als Teile von Anweisungen, Code, Repräsentationen von Code usw.) gespeichert werden, die genutzt werden können, um maschinenausführbare Anweisungen zu erzeugen, herzustellen und/oder zu produzieren. Beispielsweise können die maschinenlesbaren Anweisungen fragmentiert und auf einem oder mehreren Speichervorrichtungen und/oder Rechenvorrichtungen (z. B. Servern) gespeichert werden, die sich an denselben oder an verschiedenen Standorten eines Netzwerks oder einer Sammlung von Netzwerken befinden (z. B. in der Cloud, in Edge-Geräten usw.). Die maschinenlesbaren Anweisungen können einen oder mehrere der folgenden Vorgänge erfordern: Installation, Modifikation, Anpassung, Aktualisieren, Kombinieren, Ergänzen, Konfigurieren, Entschlüsselung, Dekomprimierung, Auspacken, Verteilung, Neuzuordnung, Kompilierung usw., um sie durch eine Rechenvorrichtung und/oder eine andere Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Beispielsweise können die maschinenlesbaren Befehle in mehreren Teilen gespeichert werden, die einzeln komprimiert, verschlüsselt und/oder auf separaten Rechnern gespeichert werden, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und/oder kombiniert werden, einen Satz von maschinenausführbaren Befehlen bilden, die eine oder mehrere Operationen implementieren, die zusammen ein Programm wie das hier beschriebene bilden können.
  • In einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert werden, in dem sie von einer Prozessorschaltung gelesen werden können, aber den Zusatz einer Bibliothek (z. B. einer Dynamic Link Library (DLL)), eines Software Development Kit (SDK), einer Application Programming Interface (API) usw. benötigen, um die maschinenlesbaren Anweisungen auf einer bestimmten Rechenvorrichtung oder anderen Vorrichtung auszuführen. In einem anderen Beispiel müssen die maschinenlesbaren Anweisungen u. U. konfiguriert (z. B. Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet usw.) werden, bevor die maschinenlesbaren Anweisungen und/oder das (die) entsprechende(n) Programm(e) ganz oder teilweise ausgeführt werden können. Daher können maschinenlesbare Medien, wie sie hier verwendet werden, maschinenlesbare Anweisungen und/oder Programme enthalten, unabhängig von dem besonderen Format oder Zustand der maschinenlesbaren Anweisungen und/oder Programme, wenn sie gespeichert oder anderweitig im Ruhezustand oder während des Transports sind.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können durch jede vergangene, gegenwärtige oder zukünftige Befehlssprache, Skriptsprache, Programmiersprache usw. dargestellt werden. Beispielsweise können die maschinenlesbaren Anweisungen unter Verwendung einer der folgenden Sprachen repräsentiert werden: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift, usw.
  • Wie oben erwähnt, können die beispielhaften Vorgänge der 8-14 unter Verwendung von ausführbaren Anweisungen (z. B. computer- und/oder maschinenlesbaren Anweisungen) implementiert werden, die auf einem oder mehreren nichttransitorischen computer- und/oder maschinenlesbaren Medien gespeichert sind, wie z. B. optischen Speichergeräten, magnetischen Speichergeräten, einer Festplatte, einem Flash-Speicher, einem Festwertspeicher (ROM), einer CD, einer DVD, einem Cache, einem RAM jeder Art, einem Register und/oder einem anderen Speichergerät oder einer Speicherplatte, in dem/der Informationen für eine beliebige Dauer gespeichert werden (z. B. für längere Zeiträume, dauerhaft, für kurze Zeiträume, zur vorübergehenden Zwischenspeicherung und/oder zum Zwischenspeichern von Informationen). Die Begriffe nichtflüchtiges computerlesbares Medium und nichtflüchtiges computerlesbares Speichermedium werden hier ausdrücklich so definiert, dass sie jede Art von computerlesbarem Speichermedium und/oder Speicherplatte einschließen und die Übertragung von Signalen und Übertragungsmedien ausschließen.
  • „Enthalten“ und „Umfassen“ (und alle Formen und Zeitformen davon) werden hierin als offene Ausdrücke verwendet. Somit, wann immer ein Anspruch eine beliebige Form von „enthalten“ oder „umfassen“ (z. B. umfasst, enthält, umfassend, enthaltend, aufweisend usw.) als Präambel oder innerhalb einer Anspruchsrezitation einer beliebigen Art anwendet, versteht es sich, dass zusätzliche Elemente, Ausdrücke usw. vorhanden sein können, ohne außerhalb des Geltungsbereichs des entsprechenden Anspruchs oder der entsprechenden Rezitation zu fallen. Wie hierin verwendet, wenn die Phrase „mindestens“ („zumindest“) als Übergangsausdruck zum Beispiel in einer Präambel eines Anspruchs verwendet wird, ist sie in der gleichen Weise offen, wie die Ausdrücke „umfassend“ und „enthaltend“ offen sind. Der Begriff „und/oder“ bezieht sich, wenn er z. B. in einer Form wie A, B und/oder C verwendet wird, auf eine beliebige Kombination oder Untermenge von A, B, C, wie (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C oder (7) A mit B und mit C. Wie hier im Zusammenhang mit der Beschreibung von Strukturen, Bauteilen, Gegenständen, Objekten und/oder Dingen verwendet, soll sich die Formulierung „mindestens eines von A und B“ auf Implementierungen beziehen, die (1) mindestens ein A, (2) mindestens ein B oder (3) mindestens ein A und mindestens ein B umfassen. In ähnlicher Weise soll sich die hier im Zusammenhang mit der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendete Formulierung „mindestens eines von A oder B“ auf Implementierungen beziehen, die (1) mindestens ein A, (2) mindestens ein B oder (3) mindestens ein A und mindestens ein B umfassen. Wie hier im Zusammenhang mit der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, soll sich der Ausdruck „mindestens eines von A und B“ auf Implementierungen beziehen, die (1) mindestens ein A, (2) mindestens ein B oder (3) mindestens ein A und mindestens ein B umfassen. In ähnlicher Weise soll sich der Ausdruck „mindestens eines von A oder B“, wie er hier im Zusammenhang mit der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet wird, auf Implementierungen beziehen, die (1) mindestens ein A, (2) mindestens ein B oder (3) mindestens ein A und mindestens ein B umfassen.
  • Wie hierin verwendet, schließen Singular-Referenzen (z. B. „ein“, „einen“, „erste“, „zweite“ usw.) eine Pluralität nicht aus. Der Ausdruck „ein“ oder „ein“ Objekt, wie hierin verwendet, bezieht sich auf eine oder mehrere Anzahlen dieses Objekts. Die Ausdrücke „ein“ (oder „eine“), „ein oder mehrere“ und „mindestens ein“ können hierin austauschbar verwendet werden. Darüber hinaus kann eine Vielzahl von Mitteln, Elementen oder Verfahrenshandlungen, auch wenn sie einzeln aufgeführt sind, z. B. durch dieselbe Stelle oder dasselbe Objekt ausgeführt werden. Zusätzlich, obwohl individuelle Merkmale in unterschiedlichen Beispielen oder Ansprüchen enthalten sein können, können diese möglicherweise kombiniert werden, und die Einbeziehung in unterschiedliche Beispiele oder Ansprüche bedeutet nicht, dass eine Kombination von Merkmalen nicht machbar und/oder vorteilhaft ist.
  • Der Prozess 800 von 8 beginnt, wenn die Eingangswahlschaltung 606 die Seed-Eingabe I0 aus der beispielhaften Testabdeckungsmatrix 602 abruft (Block 802). Bei der Seed-Eingabe I0 kann es sich beispielsweise um eine Eingabe handeln, die bereits durch klassische Testeingaben verfügbar ist, oder um klassische Testeingaben, die durch zusätzliche gültige Tests ergänzt werden, die durch frühere Fuzzing-Anwendungen entdeckt wurden. Die Eingangswahlschaltung 606 wendet die Seed-Eingabe I0 auf ein System (z. B. das programmierbare Gerät 514) an (Block 804). So kann beispielsweise erwartet werden, dass die Seed-Eingabe I0 das System in einen Zustand S versetzt, der auf dem Wissen aus einer Spezifikation oder aus früheren Tests beruht.
  • Die beispielhafte Ergebnisanalysatorschaltung 610 bestimmt, ob das System erfolgreich den Zustand S erreicht hat (Block 806). Wenn das System nicht erfolgreich in den Zustand S übergeht (z. B. weil ein Fehler oder eine Anomalie auftritt), friert die Ergebnisanalysatorschaltung 610 das System ein (Block 808) und sammelt Fehlerdetails (Block 810). Die Fehlerdetails können beispielsweise von einem Menschen analysiert werden, um festzustellen, ob der Seed-Eingabetest erneut als gültige Seed-Eingabe validiert werden muss. Die Steuerung kehrt zum Block 802 zurück, um eine neue Inkarnation des Testprozesses zu beginnen. Die Wahl der nächsten Inkarnation kann je nach Richtlinie variieren. Eine Richtlinie kann beispielsweise vorsehen, dass gewartet wird, bis das System von einem menschlichen Experten aus Block 810 freigegeben wird, nachdem er das Problem, das den Fehler beim Erreichen des Zustands S in Block 806 verursacht hat, behoben hat. Ein anderes Beispiel für eine Strategie kann vorsehen, dass in Block 810 eine Zeit lang gewartet wird und, wenn kein menschlicher Experte eingreift, das System zurückgesetzt wird und dann ein anderer alternativer Eingang I0 gewählt wird, um das System in den Zustand S zu bringen, oder dass ein weiterer alternativer Eingang I0 gewählt wird, um einen anderen gültigen Zustand zu erreichen. Mit anderen Worten, die Richtlinie kann dazu führen, dass der Testprozess immer wieder versucht, ein identifiziertes Problem zu beheben, oder dass weitere Tests durchgeführt werden, ohne endlos darauf zu warten, dass ein menschlicher Experte auftaucht und ein aktuell identifiziertes Problem behebt).
  • Alternativ, wenn das System erfolgreich in den Zustand S übergeht (Block 806), prüft die Ergebnisanalysatorschaltung 610 die Systemkonfiguration (z. B. alle Software-Zustandsvariablen und die Gerätebetriebskonfiguration) (Block 812). Die Eingangswahlschaltung 606 wählt dann zufällig einen Eingang I für den Zustand S aus der Testabdeckungsmatrix 602 aus (Block 814). Die Mutationsgeneratorschaltung 608 bestimmt I' als eine unscharfe Variante des Eingangs I (Block 816). So können beispielsweise beliebige Techniken zur Erzeugung von Mutationen über Seed-Eingaben eingesetzt werden (z. B. genetische Verfahren, simuliertes Annealing, generative adversarische Netzwerke (GAN), rekurrentes Deep Learning usw.). Der Umfang der Erkundung (P) und der Grad der Mutation (EI) können von der Richtlinienverarbeitungsschaltung 604 gemäß dem in 7 dargestellten Prozess bestimmt werden, und diese Parameter werden an die Mutationsgeneratorschaltung 608 zur Verwendung bei der Erzeugung von I' weitergegeben.
  • Das System wird dann in eine Sandbox gestellt, wenn es sich nicht bereits in einer Sandbox befindet (Block 818). Die Eingangswahlschaltung 606 wendet dann I' auf das System im Zustand S an (Block 820). Die Ergebnisanalysatorschaltung 610 stellt fest, ob das System erfolgreich einen neuen gültigen Zustand S' erreicht hat, oder ob das System irgendwelche Fehler behandelt hat (Block 822). Wenn das System den Zustand S' nicht erreicht oder Fehler nicht ordnungsgemäß behandelt hat (z. B. wenn sich das System aufhängt oder abstürzt), protokolliert die Ergebnisanalysatorschaltung 610 den Fehler (Block 824) für eine spätere Analyse, und die Steuerung fährt mit Block 828 fort. Der protokollierte Fehler kann beispielsweise analysiert werden, um festzustellen, ob das System fehlerbereinigt werden muss oder ob die Testeingabe I', die den Fehler verursacht hat, eine ungültige Eingabe ist (z. B. weil sie in der realen Welt nicht auftreten kann).
  • Wenn das System S' erreicht oder Fehler behandelt hat (Block 822), fügt die Ergebnisanalysatorschaltung 610 die unscharfe Eingabe I' dem Testeingabesatz zur Verwendung bei späteren Tests hinzu (Block 826). Wenn z. B. I' einen Fehler oder eine Störung erzeugt hat, die das System korrekt behandelt, oder wenn das System die Testeingabe I' zurückweist, kann die neue Eingabe I' als gültiger Test zur Prüfung der Widerstandsfähigkeit gegenüber problematischen Eingaben hinzugefügt werden.
  • Nach der Protokollierung eines Fehlers (Block 824) oder dem Hinzufügen von I' zum Testsatz (Block 826) veranlasst die Ergebnisanalysatorschaltung 610, dass das System von dem in Block 812 festgelegten Prüfpunkt aus wiederhergestellt wird (Block 828). Wenn der aktuelle Zustand S' ein gültiger Zustand ist, der von I' aus erreicht wurde, könnte das System alternativ vom Zustand S' aus fortfahren, ohne den Kontrollpunkt wiederherzustellen.
  • Die Richtlinienverarbeitungsschaltung 604 stellt dann fest, ob eine maximale Anzahl von Schleifen erreicht wurde (Block 830). Wenn die maximale Anzahl von Schleifen/Wiederholungen nicht erreicht wurde (die maximale Anzahl kann z. B. durch eine Verwaltungsrichtlinie festgelegt werden), erhöht die Richtlinienverarbeitungsschaltung 604 einen Schleifenzähler (Block 832) und die Steuerung fährt mit Block 816 fort, um die Mutationen fortzusetzen. Wenn die maximale Anzahl von Iterationen erreicht ist, wird das System von dem in Block 812 gesetzten Kontrollpunkt aus wiederhergestellt (Block 834). Gemäß dem gezeigten Beispiel veranlasst die Ergebnisanalysatorschaltung 610 das System, die Sandbox zu verlassen (Block 836), und der Prozess endet. Alternativ dazu kann die Steuerung zu Block 814 zurückkehren, um einen neuen Eingang I für die Prüfung auszuwählen.
  • Der Prozess 800 von 8 kann für andere Zustände wiederholt werden, für die die Ausgangspfade nur sehr wenig oder gar nicht getestet werden, um eine umfangreiche Testmatrix zu erstellen.
  • Die durch den Prozess von 8 erstellte umfangreiche Testmatrix kann während der Protokoll- und Geräteimplementierungstests, wie in 9 beschrieben, verwendet werden.
  • Der Prozess von 9 wird durch eine formale Spezifikation oder ein Modell für eine zu prüfende Komponente gesteuert. Die formale Spezifikation kann in einer maschineninterpretierbaren Weise spezifiziert werden, so dass bei einem Ausgangszustand („SA“) und einer beliebigen Testeingabe („I“) der korrekte nächste Zustand („SB“) mechanisch abgeleitet werden kann, indem man einem Entscheidungsbaum (einer Reihe von Regeln oder Bewertungen), einer Abbildung, einer Simulation usw. folgt. Bei einer praktischen Implementierung desselben formalen Modells in Form eines Software-Programms Ω, das auf Hardware ausgeführt wird, kann dieselbe Eingabe die Implementierung (z. B. das Programm) in einen bestimmten Zustand (SB') bringen. Auch wenn die formale Spezifikation besagt, dass die gegebene Eingabe, wenn sie dem formalen Modell zur Verfügung gestellt wird, eine Antwort oder eine Aktion („R“) und/oder einen Fehler („E“) auslösen sollte, kann die tatsächliche Umsetzung der formalen Spezifikation eine Antwort oder eine Aktion („R‘“) und/oder einen Fehler („E‘“) auslösen; wobei ein Fehler „E“ einen Hinweis darauf enthalten kann, dass das formale Modell kein definiertes Verhalten aufweist (aufgrund einer Lücke in der formalen Spezifikation).
  • Der Prozess von 9 beginnt mit dem Bauteil in einem Ausgangszustand SA. Die beispielhafte Eingangswahlschaltung 606 wendet eine Testeingabe auf die Komponente (z. B. eine P4-Implementierung einer Netzwerkkomponente) an (Block 902). Die Eingangswahlschaltung 606 wendet dieselbe Testeingabe auf eine formale Spezifikation an, um das erwartete Ergebnis zu ermitteln (Block 904). Die Ergebnisanalysatorschaltung 610 ermittelt dann eine Differenz zwischen dem Zustand, der sich aus den auf die P4-Implementierung angewendeten Testeingaben ergibt, und dem erwarteten Zustand aus den auf der formalen Spezifikation basierenden Ergebnissen (Block 906). Die Ergebnisanalysatorschaltung 610 ermittelt dann eine Differenz zwischen den Fehlern, die sich aus den auf die P4-Implementierung angewandten Testeingaben ergeben, und den erwarteten Fehlern aus den auf der formalen Spezifikation basierenden Ergebnissen (Block 908). Die Ergebnisanalysatorschaltung 610 ermittelt dann eine Differenz zwischen den Aktionen oder Reaktionen, die sich aus den auf die P4-Implementierung angewandten Testeingaben ergeben, und den erwarteten Aktionen oder Reaktionen aus den auf der formalen Spezifikation basierenden Ergebnissen (Block 910).
  • Die Ergebnisanalysatorschaltung 610 identifiziert dann signifikante Diskrepanzen (Block 912). Die Lücke oder der Abstand zwischen (SB, E und R) einerseits und (SB', E' und R') andererseits wird anhand einer Metrik wie der Kosinusähnlichkeit für numerische Variablen oder einem Ähnlichkeitsmaß für kategorische Variablen bewertet. Eine Diskrepanz kann zum Beispiel signifikant sein, wenn die Abstandsmetrik einen Schwellenwert erreicht.
  • Die beispielhafte Ergebnisanalysatorschaltung 610 korrigiert oder akzeptiert dann signifikante Diskrepanzen (Block 914). Die Prüfung und Bewertung von Diskrepanzen wird als Feedback-Mechanismus genutzt. Diejenigen Diskrepanzen, die signifikant sind, werden entweder korrigiert (in diesem Fall wird festgehalten, dass sie entweder auf der Seite der formalen Spezifikation oder auf der Seite der Implementierung korrigiert werden müssen), oder sie sind nicht korrigierbar (z. B. wird die Implementierung als vertretbar unterschiedlich akzeptiert) und die Testeingabematrix wird entsprechend kommentiert.
  • Gemäß dem dargestellten Beispiel führen verbleibende Diskrepanzen (z. B. wenn weder die formale Spezifikation noch die Implementierung geändert wird) dazu, dass die Menge der Eingabetests neu gefüttert wird (Block 916), so dass die Wahrscheinlichkeit von Tests, die die bekannten Diskrepanzen hervorrufen, verringert wird - z. B. durch Markierung verschiedener Testeingaben oder Mutationen als unproduktiv für die weitere Auswahl in weiteren Iterationen des Fuzzing.
  • 10 veranschaulicht einen kreisförmigen Ablauf zwischen den Analysephasen: Kalibrierung der Erreichbarkeit des Zustands (Block 1002), Erweiterung oder Kultivierung des Testsatzes (Block 1004) und Bewertung der Diskrepanz und Testautomatisierung (Block 1006).
  • Gemäß dem in 10 dargestellten Beispiel wird die Implementierung eines Softwaresystems (z. B. auf der Grundlage des in 9 dargestellten Prozesses) an einem Repository von Testeingaben anhand eines Artefakts gemessen, das die Auswertung der erwarteten Verhaltensweisen und Reaktionen aus einer formalen Spezifikation des Softwaresystems anhand der Testeingaben ermöglicht. Das Repository von Tests umfasst sowohl eine Reihe von Seed-Eingaben als auch verschiedene mutierte Versionen, die mit diesen Seed-Eingaben verknüpft sind. Die Seed-Eingaben und die mutierten Versionen der Seed-Eingaben können nach einem Verfahren aufgebaut werden (z. B. wie in 8 dargestellt), das die Chancen maximiert, seltenere Zustände zu erzeugen und seltenen Zustandsübergangswegen zu folgen. So können beispielsweise die selteneren Zustände und Zustandsübergänge iterativ ermittelt werden, indem die Eingabetests wiederholt entsprechend früherer Statistiken über nicht häufig besuchte Zustände oder Pfade zwischen Zuständen, die von diesen Tests nicht häufig durchlaufen wurden, verändert werden („Fuzzing“). Die Einstellung dieser Wahrscheinlichkeiten und Explorationsintensitäten kann gemäß dem in 7 dargestellten Beispiel erfolgen. 10 veranschaulicht den kreisförmigen Charakter des Flusses zwischen den Verfahren der 7, 8 und 9. Der kreisförmige Ansatz unterstützt ein sich entwickelndes System, das umfangreiche Tests eines Systems ermöglicht (z. B. die Bewertung von Eingaben und Zuständen, die von früheren Systemen nicht getestet werden konnten).
  • Es ist üblich, dass Anwendungen einen gemeinsamen Speichertransport verwenden, wenn sie auf demselben Host untergebracht sind. Anstatt über den Speicher zu kommunizieren, können die Anwendungen über ein Netzwerk kommunizieren, indem sie eine Loopback-Kommunikation aufbauen, bei der die Rx- und Tx-Teile einer Netzwerkkarte im Host so programmiert sind, dass sie miteinander kommunizieren.
  • 11 zeigt ein System 1100 zur Verwendung von Loopback-Verbindungen zum Testen von Netzwerk-Verhaltensweisen. Man bedenke, dass das programmierbare Gerät 1102 auf seine Robustheit geprüft wird. Die normale Funktion des programmierbaren Gerätes 1102 wird von einem programmierbaren Nachbau-Gerät 1104 übernommen (siehe Abbildung). Die Kommunikation vom programmierbaren Gerät 1102 mit einem anderen Gerät (z. B. dem Zielgerät 1108) erfolgt über einen Seitenwagen 1106 (der z. B. außerhalb der Sandbox platziert ist), wobei dieser Seitenwagen 1106 über einen Seitenwagen für die Replik 1109 mit dem programmierbaren Replikationsgerät 1104 verbunden ist. Vom Standpunkt des Zielgerätes 1108 aus gesehen kommuniziert das Zielgerät 1108 mit dem programmierbaren Gerät 1102, aber der Seitenwagen 1106 verlässt sich auf den ununterbrochenen Betrieb des nachgebildeten programmierbaren Gerätes 1104, so dass das nachgebildete programmierbare Gerät 1104 für alle praktischen Zwecke als programmierbares Gerät 1102 auftreten kann. Da die Netzwerk-Verhaltensweisen des programmierbaren Gerätes 1102 ordnungsgemäß getestet werden müssen, wird die Verbindung vom programmierbaren Gerät 1102 zum Seitenwagen 1106 von einem speicherbasierten Transport auf einen loopback-basierten Transport 1110 umgestellt. Bei den Verbindungen zwischen dem Seitenwagen 1106 und dem Seitenwagen für die Nachbildung 1109 kann es sich um jede Art von Transport 1112 und beim Transport zwischen dem Seitenwagen 1106 und dem Zielgerät 1108 um jede Art von Transport 1114 handeln.
  • Die 12-14 veranschaulichen ein Verfahren zur Integrationsprüfung. In 12 wird zunächst die bestehende Testabdeckungsmatrix 602 verwendet (z. B. ohne Fuzzing), und dann werden die Tests wie in 13 und 14 beschrieben erweitert, um die Abdeckung zu erhöhen, falls dies für angemessen erachtet wird. Getestet wird, indem das Netzwerk oder System in verwaltbare Partitionen unterteilt wird und jede Partition „P“ separat in einer Sandbox getestet wird, wobei die Rolle von P einer anderen physischen oder virtuellen Partition Q zugewiesen wird.
  • Der Prozess 1200 von 12 beginnt, wenn die Eingangswahlschaltung 606 das Netzwerk in Partitionen unterteilt (Block 1202). Die Eingangswahlschaltung 606 wählt eine erste Partition P aus (Block 1204). Die Eingangswahlschaltung 606 wählt eine virtuelle Partition Q aus, die als P dient, während P getestet wird (Block 1206). Die Eingangswahlschaltung 606 verschiebt die Zuständigkeiten von P nach Q (Block 1208). Die Eingangswahlschaltung 606 prüft die Konfiguration von P (Block 1210). Die Eingangswahlschaltung 606 versetzt P in einen Anfangszustand (Block 1212) und schaltet P in den Sandkasten (Block 1214).
  • Die Eingangswahlschaltung 606 wählt eine neue Testeingabe J aus der Testmatrix aus (Block 1216). Die Eingangswahlschaltung 606 legt die Testeingabe J auf P (Block 1218). Die Ergebnisanalysatorschaltung 610 aktualisiert die Zustandskalibrierung mit der Ausführung von J (Block 1220). Die Ergebnisanalysatorschaltung 610 ermittelt, ob unerwartete Fehler festgestellt wurden (Block 1222). Wenn unerwartete Fehler festgestellt werden, sammelt die Ergebnisanalysatorschaltung 610 detaillierte Protokolle (Block 1224), reinitialisiert P und stellt es vom Prüfpunkt aus wieder her (Block 1226), löst P aus der Sandbox (Block 1228) und führt Rollen von Q zurück nach P (Block 1230). In einigen Beispielen kann die Ergebnisanalysatorschaltung 610 nach dem Sammeln von Protokollen (Block 1224) auf einen Eingriff durch einen Benutzer warten, bis eine Zeitüberschreitung abläuft, bevor er mit Block 1226 fortfährt.
  • Wenn keine unerwarteten Fehler erkannt werden (Block 1222), bestimmt die Ergebnisanalysatorschaltung 610, ob die Testabdeckung erreicht wurde (Block 1232). Die Ergebnisanalysatorschaltung 610 stellt fest, ob die Tests ausgeschöpft wurden, ohne dass die Abdeckung erreicht wurde (Block 1238). Wenn die Tests noch nicht abgeschlossen sind, kehrt die Steuerung zum Block 1216 zurück, um die Tests fortzusetzen. Wenn die Tests erschöpft sind, ohne dass die Abdeckung erreicht wurde, geht die Steuerung zu Prozess 1300 über, um zusätzliche Testeingaben zu entwickeln.
  • Wenn die Abdeckung erreicht ist, kehrt die Ergebnisanalysatorschaltung 610 zu Block 1232 zurück und führt die Regeln von Q zurück zu P (Block 1234), löst P auf (Block 1236) und die Steuerung kehrt zu Block 1204 zurück, um eine nächste Partition auszuwählen.
  • Der Prozess 1300 von 13 beginnt, wenn die Ergebnisanalysatorschaltung 610 feststellt, ob die Testabdeckung zufriedenstellend ist (Block 1302). Wenn eine zufriedenstellende Abdeckung erreicht ist, kehrt die Steuerung zu Block 1234 zurück. Wenn keine zufriedenstellende Abdeckung erreicht wurde, erweitert der Mutationsgenerator 608 die Testabdeckung (Block 1303). Ein Beispiel für ein Verfahren zur Erweiterung der Testabdeckung ist in 14 dargestellt.
  • Die beispielhafte Ergebnisanalysatorschaltung 610 bestimmt, ob während des Blocks 1303 (Block 1304) Fehler erkannt wurden. Wenn Fehler erkannt wurden, friert die Ergebnisanalysatorschaltung 610 und die Systemkonfiguration ein und löst einen „Coredump“ aus, um Daten zu sammeln (Block 1305). Die Ergebnisanalysatorschaltung 610 wartet auf die Übernahme durch einen Experten (Block 1306). Wenn während des Wartens eine Zeitüberschreitung festgestellt wird (Block 1308), wird die Ergebnisanalysatorschaltung 610 neu initialisiert und die Konfiguration vor dem Test wiederhergestellt (Block 1310), und die Steuerung geht weiter zu Block 1316.
  • Zurück zu Block 1304: Wenn keine Fehler festgestellt werden, bestimmt die Ergebnisanalysatorschaltung 610, ob während der Ausführung von Block 1303 eine Zeitüberschreitung aufgetreten ist. Wenn keine Zeitüberschreitung aufgetreten ist, kehrt die Steuerung zum Block 1302 zurück, um die Schleife fortzusetzen. Wenn eine Zeitüberschreitung aufgetreten ist, sendet die Ergebnisanalysatorschaltung 610 eine Benachrichtigung (Block 1314). Beispielsweise kann eine Benachrichtigung an einen Administrator gesendet werden. Die Ergebnisanalysatorschaltung 610 reinitialisiert und stellt die Konfiguration vor dem Test wieder her (Block 1310).
  • Nachdem die Ergebnisanalysatorschaltung 610 neu initialisiert und die Konfiguration vor dem Test wiederhergestellt hat (Block 1310), löst die Ergebnisanalysatorschaltung 610 die Partition P auf (Block 1316) und migriert die Rollen von der Partition Q zurück zur Partition P (Block 1318).
  • Der Prozess 1400 von 14 beginnt, wenn die Richtlinienverarbeitungsschaltung 604 die von der Prüfung nicht erfassten Zustände {S'} identifiziert (Block 1402). Die Eingangswahlschaltung 606 identifiziert mindestens einen Zustand S, der einem oder mehreren Zuständen in {S'} am nächsten kommt (Block 1404). Die Eingangswahlschaltung 606 identifiziert aus der Testabdeckungsmatrix 602 mindestens eine anfängliche Testeingabe I0, um P in den Zustand S zu bringen, und wendet diese Testeingabe I0 an, um P in den Zustand S zu bringen (Block 1406). Die Ergebnisanalysatorschaltung 610 überprüft das System (Block 1408). Die Eingangswahlschaltung 606 wählt eine Testeingabe I als Seed-Eingabe aus (Block 1410). Die Mutationsgeneratorschaltung 608 erzeugt aus I eine neue Mutation I' (Block 1412). Die Eingangswahlschaltung 606 prüft die Partition P mit I' (Block 1414).
  • Die Ergebnisanalysatorschaltung 610 bestimmt, ob mindestens ein Zustand in {S'} durch Anwendung von I' erreicht wird (Block 1416). Wenn durch Anwendung von I' kein Zustand in {S'} erreicht wird, geht die Steuerung zu Block 1422 über.
  • Wenn mindestens ein Zustand in {S'} durch Anwendung von I' erreicht wird, ergänzt die Ergebnisanalysatorschaltung 610 die Testmatrix um I' (Block 1418). Die Ergebnisanalysatorschaltung 610 aktualisiert die Zustandskalibrierung auf der Grundlage des Verfahrens in 7 (Block 1420). Die Ergebnisanalysatorschaltung 610 stellt von dem in Block 1408 (Block 1422) gesetzten Prüfpunkt aus wieder her. Der Ergebnisanalysator ermittelt dann, ob eine maximale Iterationszahl erreicht wurde (Block 1424). Wenn eine maximale Iterationszahl nicht erreicht wurde, kehrt die Steuerung zum Block 1412 zurück, um die Schleife fortzusetzen. Wenn die maximale Iterationszahl erreicht ist, kehrt die Steuerung zu Block 1304 zurück.
  • 15 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 1500, die so strukturiert ist, dass sie einige oder alle der maschinenlesbaren Anweisungen und/oder Operationen der 8-14 ausführt und/oder instanziiert, um die Testrechenvorrichtung 518 von 5 zu implementieren. Die Prozessorplattform 1500 kann zum Beispiel ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z. B. ein Neuronalnetzwerk), ein Mobilgerät (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet, wie z. B. ein iPad™), ein persönlicher digitaler Assistent (PDA), ein Internetgerät oder eine beliebige andere Art von Rechenvorrichtung sein.
  • Die Prozessorplattform 1500 des dargestellten Beispiels enthält eine Prozessorschaltung 1512. Die Prozessorschaltung 1512 des dargestellten Beispiels ist Hardware. Beispielsweise kann die Prozessorschaltung 1512 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, FPGAs, Mikroprozessoren, CPUs, GPUs, DSPs und/oder Mikrocontroller einer beliebigen Familie oder eines beliebigen Herstellers implementiert werden. Die Prozessorschaltung 1512 kann durch ein oder mehrere Halbleiterbauelemente (z. B. auf Siliziumbasis) implementiert werden. In diesem Beispiel implementiert die Prozessorschaltung 1512 die beispielhafte Richtlinienverarbeitungsschaltung 604, die beispielhafte Eingangswahlschaltung 606, die beispielhafte Mutationsgeneratorschaltung 608 und die beispielhafte Ergebnisanalysatorschaltung 610.
  • Die Prozessorschaltung 1512 des dargestellten Beispiels umfasst einen lokalen Speicher 1513 (z. B. einen Cache, Register usw.). Die Prozessorschaltung 1512 des dargestellten Beispiels steht über einen Bus 1518 mit einem Hauptspeicher in Kommunikation, der einen flüchtigen Speicher 1514 und einen nichtflüchtigen Speicher 1516 enthält. Der flüchtige Speicher 1514 kann durch Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS® Dynamic Random Access Memory (RDRAM®) und/oder eine beliebige andere Art von RAM-Vorrichtung implementiert werden. Der nichtflüchtige Speicher 1516 kann durch Flash-Speicher und/oder eine beliebige andere gewünschte Art von Speichervorrichtung implementiert werden. Der Zugriff auf den Hauptspeicher 1514, 1516 des dargestellten Beispiels wird von einem Speicher-Controller 1517 gesteuert.
  • Die Prozessorplattform 1500 des dargestellten Beispiels enthält auch die Schnittstellenschaltung 1520. Die Schnittstellenschaltung 1520 kann durch Hardware in Übereinstimmung mit einem beliebigen Schnittstellenstandard implementiert werden, z. B. eine Ethernet-Schnittstelle, eine USB-Schnittstelle (Universal Serial Bus), eine Bluetooth®-Schnittstelle, eine NFC-Schnittstelle (Near Field Communication), eine PCI-Schnittstelle und/oder eine PCIe-Schnittstelle.
  • In dem dargestellten Beispiel sind ein oder mehrere Eingabevorrichtungen 1522 mit der Schnittstellenschaltung 1520 verbunden. Die Eingabevorrichtung(en) 1522 gestattet (gestatten) es einem Benutzer, Daten und/oder Befehle in die Prozessorschaltung 1512 einzugeben. Die Eingabevorrichtung(en) 1522 kann (können) zum Beispiel durch einen Audiosensor, ein Mikrofon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, einen Isopoint und/oder ein Spracherkennungssystem implementiert werden.
  • Ein oder mehrere Ausgabevorrichtungen 1524 sind auch mit der Schnittstellenschaltung 1520 des dargestellten Beispiels verbunden. Die Ausgabevorrichtungen 1524 können zum Beispiel durch Anzeigevorrichtungen (z. B. eine Licht emittierende Diode (LED), eine organische Licht emittierende Diode (OLED), ein Flüssigkristalldisplay (LCD), ein Kathodenstrahlröhren-(CRT)-Display, ein In-Place Switching (IPS)-Display, einen Touchscreen usw.), eine a taktile Ausgabevorrichtung, einen Drucker und/oder einen Lautsprecher implementiert werden. Die Schnittstellenschaltung 1520 des dargestellten Beispiels umfasst daher typischerweise eine Grafiktreiberkarte, einen Grafiktreiberchip und/oder eine Grafikprozessorschaltung wie eine GPU.
  • Die Schnittstellenschaltung 1520 des dargestellten Beispiels enthält auch eine Kommunikationsvorrichtung, wie z. B. einen Sender, einen Empfänger, einen Transceiver, ein Modem, ein Residential Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzwerk-Schnittstelle, um den Austausch von Daten mit externen Maschinen (z. B. Rechenvorrichtungen einer beliebigen Art) über ein Netzwerk 1526 zu erleichtern. Die Kommunikation kann zum Beispiel über eine Ethernet-Verbindung, eine Digital Subscriber Line (DSL)-Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein Sichtlinien-Drahtlossystem, ein Mobiltelefonsystem, eine optische Verbindung usw. erfolgen.
  • Die Prozessorplattform 1500 des dargestellten Beispiels enthält auch ein oder mehrere Massenspeichergeräte 1528 zum Speichern von Software und/oder Daten. Beispiele für solche Massenspeichergeräte 1528 sind magnetische Speichergeräte, optische Speichergeräte, Diskettenlaufwerke, HDDs, CDs, Blu-ray-Disk-Laufwerke, RAID-Systeme (Redundant Array of Independent Disks), Festkörperspeichergeräte wie Flash-Speichergeräte und DVD-Laufwerke. Das beispielhafte Massenspeichergerät 1528 enthält die Testabdeckungsmatrix 602.
  • Die maschinenausführbaren Anweisungen 1532, die durch die maschinenlesbaren Anweisungen von 11 implementiert werden können, können im Massenspeicher 1528, im flüchtigen Speicher 1514, im nichtflüchtigen Speicher 1516 und/oder auf einem austauschbaren, nicht transitorischen, computerlesbaren Speichermedium wie einer CD oder DVD gespeichert werden.
  • 16 ist ein Blockdiagramm einer beispielhaften Implementierung der Prozessorschaltung 1512 von 15. In diesem Beispiel wird die Prozessorschaltung 1512 von 15 durch einen Mikroprozessor 1600 realisiert. So kann der Mikroprozessor 1600 beispielsweise eine Multi-Core-Hardware-Schaltung wie eine CPU, einen DSP, eine GPU, eine XPU usw. implementieren. Obwohl er eine beliebige Anzahl von beispielhaften Kernen 1602 (z. B. 1 Kern) enthalten kann, ist der Mikroprozessor 1600 dieses Beispiels ein Mehrkern-Halbleiterbauelement mit N Kernen. Die Kerne 1602 des Mikroprozessors 1600 können unabhängig voneinander arbeiten oder zusammenarbeiten, um maschinenlesbare Befehle auszuführen. Beispielsweise kann Maschinencode, der einem Firmware-Programm, einem eingebetteten Software-Programm oder einem Software-Programm entspricht, von einem der Kerne 1602 oder von mehreren der Kerne 1602 zur gleichen oder zu unterschiedlichen Zeiten ausgeführt werden. In einigen Beispielen wird der Maschinencode, der dem Firmware-Programm, dem eingebetteten Software-Programm oder dem Software-Programm entspricht, in Threads aufgeteilt und parallel von zwei oder mehr Kernen 1602 ausgeführt. Das Software-Programm kann einem Teil oder der Gesamtheit der maschinenlesbaren Anweisungen und/oder Vorgänge entsprechen, die im Flussdiagramm von 16 dargestellt sind.
  • Die Kerne 1602 können über einen beispielhaften Bus 1604 kommunizieren. In einigen Beispielen kann der Bus 1604 einen Kommunikationsbus implementieren, um die Kommunikation mit einem oder mehreren der Kerne 1602 zu ermöglichen. Beispielsweise kann der Bus 1604 mindestens einen I2C-Bus (Inter-Integrated Circuit), einen SPI-Bus (Serial Peripheral Interface), einen PCI-Bus oder einen PCIe-Bus implementieren. Zusätzlich oder alternativ kann der Bus 1604 jede andere Art von Datenverarbeitungs- oder elektrischem Bus darstellen. Die Kerne 1602 können Daten, Befehle und/oder Signale von einem oder mehreren externen Geräten über eine beispielhafte Schnittstellenschaltung 1606 erhalten. Die Kerne 1602 können über die Schnittstellenschaltung 1606 Daten, Anweisungen und/oder Signale an ein oder mehrere externe Geräte ausgeben. Obwohl die Kerne 1602 dieses Beispiels einen beispielhaften lokalen Speicher 1620 (z. B. Level 1 (L1) Cache, der in einen L1-Datencache und einen L1-Befehlscache aufgeteilt sein kann) enthalten, enthält der Mikroprozessor 1600 auch einen beispielhaften gemeinsamen Speicher 1610, der von den Kernen gemeinsam genutzt werden kann (z. B. Level 2 (L2_Cache)), um einen schnellen Zugriff auf Daten und/oder Befehle zu ermöglichen. Daten und/oder Anweisungen können durch Schreiben in den und/oder Lesen aus dem gemeinsamen Speicher 1610 übertragen (z. B. gemeinsam genutzt) werden. Der lokale Speicher 1620 jedes der Kerne 1602 und der gemeinsame Speicher 1610 können Teil einer Hierarchie von Speichergeräten sein, die mehrere Ebenen von Cache-Speicher und den Hauptspeicher (z. B. den Hauptspeicher 1514, 1516 von 15) umfassen. In der Regel haben höhere Speicherebenen in der Hierarchie eine geringere Zugriffszeit und eine kleinere Speicherkapazität als niedrigere Speicherebenen. Änderungen auf den verschiedenen Ebenen der Cache-Hierarchie werden durch eine Cache-Kohärenzpolitik verwaltet (z. B. koordiniert).
  • Jeder Kern 1602 kann als CPU, DSP, GPU usw. oder als jede andere Art von Hardware-Schaltung bezeichnet werden. Jeder Kern 1602 umfasst eine Steuereinheitsschaltung 1614, eine arithmetische und logische (AL) Schaltung (manchmal auch als ALU bezeichnet) 1616, eine Vielzahl von Registern 1618, den L1-Cache 1620 und einen beispielhaften Bus 1622. Andere Strukturen können vorhanden sein. Jeder Kern 1602 kann beispielsweise Schaltungen für eine Vektoreinheit, eine SIMD-Einheit (Single Instruction Multiple Data), eine LSU-Schaltung (Load/Store Unit), eine Verzweigungs-/Sprungeinheitsschaltung, eine FPU-Schaltung (Floating Point Unit) usw. enthalten. Die Steuereinheitsschaltung 1614 umfasst Schaltungen auf Halbleiterbasis, die so aufgebaut sind, dass sie die Datenbewegung innerhalb des entsprechenden Kerns 1602 steuern (z. B. koordinieren). Die AL-Schaltung 1616 umfasst Schaltungen auf Halbleiterbasis, die so strukturiert sind, dass sie eine oder mehrere mathematische und/oder logische Operationen mit den Daten im entsprechenden Kern 1602 durchführen. Die AL-Schaltung 1616 einiger Beispiele führt Operationen auf Ganzzahlbasis durch. In anderen Beispielen führt die AL-Schaltung 1616 auch Gleitkommaoperationen durch. In anderen Beispielen kann die AL-Schaltung 1616 eine erste AL-Schaltung enthalten, die Operationen auf Ganzzahlbasis durchführt, und eine zweite AL-Schaltung, die Gleitkommaoperationen ausführt. In einigen Beispielen kann die AL-Schaltung 1616 als arithmetische Logikeinheit (ALU) bezeichnet werden. Bei den Registern 1618 handelt es sich um Strukturen auf Halbleiterbasis zur Speicherung von Daten und/oder Befehlen, wie z. B. den Ergebnissen einer oder mehrerer der von der AL-Schaltung 1616 des entsprechenden Kerns 1602 durchgeführten Operationen. Zu den Registern 1618 können beispielsweise Vektorregister, SIMD-Register, Allzweckregister, Flaggenregister, Segmentregister, maschinenspezifische Register, Befehlszeigerregister, Steuerregister, Debugregister, Speicherverwaltungsregister, Maschinenprüfregister usw. gehören. Die Register 1618 können in einer Bank angeordnet sein, wie in 16 dargestellt. Alternativ können die Register 1618 auch in einer anderen Anordnung, einem anderen Format oder einer anderen Struktur organisiert werden, einschließlich der Verteilung über den gesamten Kern 1602, um die Zugriffszeit zu verkürzen. Der Bus 1620 kann mindestens einen I2C-Bus, einen SPI-Bus, einen PCI-Bus oder einen PCIe-Bus umfassen
  • Jeder Kern 1602 und/oder, allgemeiner, der Mikroprozessor 1600 kann zusätzliche und/oder alternative Strukturen zu den oben gezeigten und beschriebenen aufweisen. Beispielsweise können eine oder mehrere Taktschaltungen, eine oder mehrere Stromversorgungen, ein oder mehrere Leistungstore, ein oder mehrere Cache-Home-Agents (CHAs), ein oder mehrere konvergierte/gemeinsame Mesh-Stops (CMSs), ein oder mehrere Shifter (z. B. Barrel Shifter) und/oder andere Schaltungen vorhanden sein. Der Mikroprozessor 1600 ist ein Halbleiterbauelement, das so hergestellt wird, dass es viele Transistoren enthält, die miteinander verbunden sind, um die oben beschriebenen Strukturen in einer oder mehreren integrierten Schaltungen (ICs) zu implementieren, die in einem oder mehreren Gehäusen enthalten sind. Die Prozessorschaltung kann einen oder mehrere Beschleuniger enthalten und/oder mit ihnen zusammenarbeiten. In einigen Beispielen werden Beschleuniger durch Logikschaltungen implementiert, um bestimmte Aufgaben schneller und/oder effizienter auszuführen, als dies mit einem Allzweckprozessor möglich ist. Beispiele für Beschleuniger sind ASICs und FPGAs, wie sie hier beschrieben sind. Auch eine GPU oder ein anderes programmierbares Gerät kann ein Beschleuniger sein. Die Beschleuniger können sich auf der Platine der Prozessorschaltung befinden, im selben Chipgehäuse wie die Prozessorschaltung und/oder in einem oder mehreren von der Prozessorschaltung getrennten Gehäusen.
  • 17 ist ein Blockdiagramm einer weiteren beispielhaften Implementierung der Prozessorschaltung 1512 von 15. In diesem Beispiel wird die Prozessorschaltung 1512 durch eine FPGA-Schaltung 1700 implementiert. Die FPGA-Schaltung 1700 kann beispielsweise zur Durchführung von Operationen verwendet werden, die anderenfalls durch den beispielhaften Mikroprozessor 1500 von 15 ausgeführt werden könnten, der entsprechende maschinenlesbare Anweisungen ausführt. Einmal konfiguriert, instanziiert die FPGA-Schaltung 1700 jedoch die maschinenlesbaren Befehle in Hardware und kann daher die Operationen oft schneller ausführen, als dies mit einem Allzweck-Mikroprozessor möglich wäre, der die entsprechende Software ausführt.
  • Genauer gesagt, im Gegensatz zu dem oben beschriebenen Mikroprozessor 1600 von 16 (der ein Allzweckgerät ist, das so programmiert werden kann, dass es einige oder alle maschinenlesbaren Befehle ausführt, die durch das Flussdiagramm in den 8-14 dargestellt werden, dessen Verbindungen und Logikschaltungen jedoch nach der Herstellung feststehen), enthält die FPGA-Schaltung 1700 des Beispiels von 17 Verbindungen und logische Schaltungen, die nach der Herstellung auf unterschiedliche Weise konfiguriert und/oder verbunden werden können, um beispielsweise einige oder alle maschinenlesbaren Befehle zu instanziieren, die durch das Flussdiagramm in den 8-14 dargestellt sind. Insbesondere kann man sich das FPGA 1700 als eine Anordnung von Logikgattern, Verbindungen und Schaltern vorstellen. Die Schalter können so programmiert werden, dass sie die Art und Weise ändern, wie die Logikgatter durch die Verbindungen miteinander verbunden sind, wodurch effektiv eine oder mehrere dedizierte Logikschaltungen gebildet werden (sofern und solange die FPGA-Schaltung 1700 nicht neu programmiert wird). Die konfigurierten Logikschaltungen ermöglichen es den Logikgattern, auf unterschiedliche Weise zusammenzuarbeiten, um verschiedene Operationen an den von den Eingangsschaltungen empfangenen Daten durchzuführen. Diese Vorgänge können einem Teil oder der gesamten Software entsprechen, die im Flussdiagramm der 8-14 dargestellt ist. Die FPGA-Schaltung 1700 kann so strukturiert sein, dass sie einige oder alle maschinenlesbaren Befehle des Flussdiagramms in den 8 bis 14 als dedizierte Logikschaltungen instanziiert, um die diesen Software-Befehlen entsprechenden Operationen analog zu einem ASIC dediziert durchzuführen. Daher kann die FPGA-Schaltung 1700 die Operationen, die einigen oder allen maschinenlesbaren Befehlen der 8-14 entsprechen, schneller ausführen, als der Allzweck-Mikroprozessor dies kann.
  • Im Beispiel von 17 ist die FPGA-Schaltung 1700 so strukturiert, dass sie von einem Endbenutzer mit einer Hardwarebeschreibungssprache (HDL) wie Verilog programmiert (und/oder ein- oder mehrmals umprogrammiert) werden kann. Die FPGA-Schaltung 1700 von 17 enthält eine beispielhafte Ein-/Ausgabeschaltung 1702, um Daten zu/von einer beispielhaften Konfigurationsschaltung 1704 und/oder externer Hardware (z. B. einer externen Hardware-Schaltung) 1706 zu erhalten und/oder auszugeben. Beispielsweise kann die Konfigurationsschaltung 1704 eine Schnittstellenschaltung implementieren, die maschinenlesbare Anweisungen zur Konfiguration der FPGA-Schaltung 1700 oder von Teilen davon erhalten kann. In einigen Beispielen kann die Konfigurationsschaltung 1704 die maschinenlesbaren Anweisungen von einem Benutzer, einer Maschine (z. B. einer Hardware-Schaltung (z. B. einer programmierten oder dedizierten Schaltung), die ein Modell der künstlichen Intelligenz/des maschinellen Lernens (AI/ML) implementieren kann, um die Anweisungen zu erzeugen) usw. erhalten. In einigen Beispielen kann die externe Hardware 1706 den Mikroprozessor 1600 aus 16 implementieren. Die FPGA-Schaltung 1700 umfasst auch eine Reihe von beispielhaften Logikgatterschaltungen 1708, eine Vielzahl von konfigurierbaren beispielhaften Verbindungen 1710 und beispielhafte Speicherschaltungen 1712. Die Logikgatterschaltung 1708 und die Verbindungen 1710 sind konfigurierbar, um eine oder mehrere Operationen zu instanziieren, die zumindest einigen der maschinenlesbaren Befehle der 8-14 und/oder anderen gewünschten Operationen entsprechen können. Die in 17 dargestellte Logikgatterschaltung 1708 wird in Gruppen oder Blöcken hergestellt. Jeder Block enthält elektrische Strukturen auf Halbleiterbasis, die zu logischen Schaltungen konfiguriert werden können. In einigen Beispielen umfassen die elektrischen Strukturen logische Gatter (z. B. Und-Gatter, Oder-Gatter, Nor-Gatter usw.), die grundlegende Bausteine für logische Schaltungen darstellen. Elektrisch steuerbare Schalter (z. B. Transistoren) sind in jeder der Logikgatterschaltungen 1708 vorhanden, um die Konfiguration der elektrischen Strukturen und/oder der Logikgatter zur Bildung von Schaltungen zur Durchführung gewünschter Operationen zu ermöglichen. Die Logikgatterschaltung 1708 kann andere elektrische Strukturen wie Nachschlagetabellen (LUTs), Register (z. B. Flip-Flops oder Latches), Multiplexer usw. umfassen.
  • Bei den Verbindungen 1710 des dargestellten Beispiels handelt es sich um leitende Pfade, Bahnen, Vias oder dergleichen, die elektrisch steuerbare Schalter (z. B. Transistoren) enthalten können, deren Zustand durch Programmierung (z. B. unter Verwendung einer HDL-Befehlssprache) geändert werden kann, um eine oder mehrere Verbindungen zwischen einer oder mehreren der Logikgatterschaltungen 1708 zu aktivieren oder zu deaktivieren, um gewünschte Logikschaltungen zu programmieren.
  • Die Speicherschaltung 1712 des dargestellten Beispiels ist so aufgebaut, dass sie das Ergebnis bzw. die Ergebnisse einer oder mehrerer der von den entsprechenden Logikgattern durchgeführten Operationen speichert. Die Speicherschaltung 1712 kann durch Register oder dergleichen realisiert werden. Im dargestellten Beispiel sind die Speicherschaltungen 1712 auf die Logikgatterschaltungen 1708 verteilt, um den Zugriff zu erleichtern und die Ausführungsgeschwindigkeit zu erhöhen.
  • Die beispielhafte FPGA-Schaltung 1700 von 17 umfasst auch eine beispielhafte dedizierte Betriebsschaltung 1714. In diesem Beispiel umfasst die dedizierte Betriebsschaltung 1714 eine spezielle Schaltung 1716, die zur Implementierung häufig verwendeter Funktionen aufgerufen werden kann, damit diese Funktionen nicht vor Ort programmiert werden müssen. Beispiele für solche Spezialschaltungen 1716 sind Speicher-(z. B. DRAM-) Controller-Schaltungen, PCIe-Controller-Schaltungen, Taktschaltungen, Transceiver-Schaltungen, Speicher und Multiplikator-Akkumulator-Schaltungen. Andere Arten von Spezialschaltungen können vorhanden sein. In einigen Beispielen kann die FPGA-Schaltung 1700 auch eine programmierbare Allzweckschaltung 1718 wie eine beispielhafte CPU 1720 und/oder einen beispielhaften DSP 1722 enthalten. Zusätzlich oder alternativ können andere programmierbare Schaltungen 1718 vorhanden sein, wie z. B. eine GPU, eine XPU usw., die so programmiert werden können, dass sie andere Operationen ausführen.
  • Obwohl die 16 und 17 zwei beispielhafte Implementierungen der Prozessorschaltung 1512 von 15 illustrieren, sind viele andere Ansätze denkbar. Wie bereits erwähnt, können moderne FPGA-Schaltungen beispielsweise eine integrierte CPU enthalten, wie eine oder mehrere der beispielhafte CPUs 1720 in 17. Daher kann die Prozessorschaltung 1512 von 15 zusätzlich durch Kombination des beispielhaften Mikroprozessors 1600 von 16 und der beispielhaften FPGA-Schaltung 1700 von 17 implementiert werden. In einigen derartigen hybriden Beispielen kann ein erster Teil der maschinenlesbaren Befehle, die durch das Flussdiagramm der 8-14 dargestellt sind, von einem oder mehreren der Kerne 1602 der 16 ausgeführt werden, und ein zweiter Teil der maschinenlesbaren Befehle, die durch das Flussdiagramm der 8-14 dargestellt sind, kann von der FPGA-Schaltung 1700 der 17 ausgeführt werden.
  • In einigen Beispielen kann die Prozessorschaltung 1512 von 15 in einem oder mehreren Gehäusen untergebracht sein. Beispielsweise kann die Prozessorschaltung 1600 von 16 und/oder die FPGA-Schaltung 1700 von 17 in einem oder mehreren Gehäusen untergebracht sein. In einigen Beispielen kann eine XPU durch die Prozessorschaltung 1512 von 15 implementiert werden, die sich in einem oder mehreren Gehäusen befinden kann. Die XPU kann beispielsweise eine CPU in einem Gehäuse, einen DSP in einem anderen Gehäuse, eine GPU in einem weiteren Gehäuse und ein FPGA in einem weiteren Gehäuse enthalten.
  • Ein Blockdiagramm zur Veranschaulichung einer beispielhaften Software-Verteilungsplattform 1805 zur Verteilung von Software wie den beispielhaften maschinenlesbaren Anweisungen 1532 von 15 an Hardwaregeräte, die Dritten gehören und/oder von ihnen betrieben werden, ist in 18 dargestellt. Die beispielhafte Software-Verteilungsplattform 1805 kann durch einen beliebigen Computerserver, eine Dateneinrichtung, einen Cloud-Dienst usw. implementiert werden, der in der Lage ist, Software zu speichern und an andere Rechenvorrichtungen zu übertragen. Bei den Dritten kann es sich um Kunden des Unternehmens handeln, das Eigentümer und/oder Betreiber der Software-Verteilungsplattform 1805 ist. Zum Beispiel kann das Unternehmen, das die Software-Verteilungsplattform 1805 besitzt und/oder betreibt, ein Entwickler, ein Verkäufer und/oder ein Lizenzgeber von Software sein, wie z. B. die maschinenlesbaren Anweisungen 1532 von 15. Bei den Dritten kann es sich um Verbraucher, Nutzer, Einzelhändler, OEMs usw. handeln, die die Software zur Nutzung und/oder zum Weiterverkauf und/oder zur Vergabe von Unterlizenzen erwerben und/oder lizenzieren. Im dargestellten Beispiel umfasst die Software-Verteilungsplattform 1805 einen oder mehrere Server und ein oder mehrere Speichergeräte. Die Speichergeräte speichern die maschinenlesbaren Anweisungen 1532, die den oben beschriebenen Beispielen für maschinenlesbare Anweisungen der 8-14 entsprechen können. Der eine oder die mehreren Server der beispielhaften Software-Verteilungsplattform 1805 stehen mit einem Netzwerk 1810 in Verbindung, das einem oder mehreren der oben beschriebenen Internet- und/oder Beispielnetzwerke entsprechen kann. In einigen Beispielen reagieren der eine oder die mehreren Server auf Anfragen zur Übertragung der Software an eine anfragende Partei als Teil einer kommerziellen Transaktion. Die Zahlung für die Lieferung, den Verkauf und/oder die Lizenzierung der Software kann über den einen oder die mehreren Server der Software-Verteilungsplattform und/oder über eine dritte Zahlungsstelle abgewickelt werden. Die Server ermöglichen es Käufern und/oder Lizenzgebern, die maschinenlesbaren Anweisungen 1532 von der Software-Verteilungsplattform 1805 herunterzuladen. Beispielsweise kann die Software, die den maschinenlesbaren beispielhaften Anweisungen (8-14) entsprechen kann, auf die beispielhafte Prozessorplattform 1500 heruntergeladen werden, die die maschinenlesbaren Anweisungen 1532 ausführen soll, um die Testrechenvorrichtung 518 zu implementieren. In einigen Beispielen bieten, übertragen und/oder erzwingen ein oder mehrere Server der Software-Verteilungsplattform 1805 regelmäßig Updates für die Software (z. B. die maschinenlesbaren Anweisungen 1532 von 15), um sicherzustellen, dass Verbesserungen, Patches, Updates usw. verteilt und auf die Software an den Endbenutzergeräten angewendet werden.
  • In weiteren Beispielen kann jeder der Rechenknoten oder -geräte, die unter Bezugnahme auf die vorliegenden Edge-Computing-Systeme und -Umgebungen erörtert werden, auf der Grundlage der in den 19 und 20 dargestellten Komponenten erfüllt werden. Entsprechende Edge-Computing-Knoten können als eine Art Gerät, Vorrichtung, Computer oder sonstiges „Ding“ verkörpert werden, das mit anderen Edge-, Netzwerk- oder Endpunktkomponenten kommunizieren kann. Eine Edge-Rechenvorrichtung kann beispielsweise als ein Personal Computer, ein Server, ein Smartphone, eine mobile Rechenvorrichtung, ein intelligentes Gerät, ein bordeigenes Rechensystem (z. B. ein Navigationssystem), ein in sich geschlossenes Gerät mit einem Gehäuse, einer Hülle usw. oder ein anderes Gerät oder System ausgebildet sein, das die beschriebenen Funktionen ausführen kann.
  • In dem in 19 dargestellten vereinfachten Beispiel umfasst ein Edge-Computing-Knoten 1900 eine Rechen-Engine (hier auch als „Rechenschaltung“ bezeichnet) 1902, ein Eingabe/Ausgabe-(E/A)-Subsystem (hier auch als „E/A-Schaltung“ bezeichnet) 1908, einen Datenspeicher (hier auch als „Datenspeicherschaltung“ bezeichnet) 1910, ein Kommunikationsschaltungs-Subsystem 1912 und optional ein oder mehrere Peripheriegeräte (hier auch als „Peripheriegeräteschaltung“ bezeichnet) 1914. In anderen Beispielen können die jeweiligen Rechenvorrichtungen andere oder zusätzliche Komponenten enthalten, wie sie typischerweise in einem Computer zu finden sind (z. B. ein Display, Peripheriegeräte usw.). Darüber hinaus können in einigen Beispielen eine oder mehrere der dargestellten Komponenten in eine andere Komponente integriert werden oder auf andere Weise einen Teil dieser Komponente bilden.
  • Der Rechenknoten 1900 kann als jede Art von Maschine, Gerät oder Sammlung von Geräten ausgeführt werden, die verschiedene Rechenfunktionen ausführen können. In einigen Beispielen kann der Rechenknoten 1900 als ein einzelnes Gerät wie ein integrierter Schaltkreis, ein eingebettetes System, ein feldprogrammierbares Gate-Array (FPGA), ein System-on-a-Chip (SOC) oder ein anderes integriertes System oder Gerät verkörpert sein. In dem illustrativen Beispiel umfasst der Rechenknoten 1900 einen Prozessor (hier auch als „Prozessorschaltung“ bezeichnet) 1904 und einen Speicher (hier auch als „Speicherschaltung“ bezeichnet) 1906 oder ist als solcher ausgeführt. Der Prozessor 1904 kann als jede Art von Prozessor(en) ausgeführt werden, der in der Lage ist, die hier beschriebenen Funktionen auszuführen (z. B. eine Anwendung auszuführen). Der Prozessor 1904 kann beispielsweise als Multi-Core-Prozessor(en), Mikrocontroller, Verarbeitungseinheit, spezialisierte oder zweckbestimmte Verarbeitungseinheit oder als anderer Prozessor oder Verarbeitungs-/Steuerungsschaltung ausgeführt sein.
  • In einigen Beispielen kann der Prozessor 1904 als FPGA, als anwendungsspezifische integrierte Schaltung (ASIC), als rekonfigurierbare Hardware oder Hardware-Schaltung oder als andere spezialisierte Hardware ausgeführt werden, um die Ausführung der hierin beschriebenen Funktionen zu erleichtern, oder er kann mit diesen gekoppelt sein. In einigen Beispielen kann der Prozessor 1904 auch als spezialisierte x-Processing Unit (xPU), auch bekannt als Data Processing Unit (DPU), Infrastructure Processing Unit (IPU) oder Network Processing Unit (NPU), ausgeführt sein. Eine solche xPU kann als eigenständige Schaltung oder Schaltungspaket ausgeführt, in einen SOC integriert oder mit Netzwerkschaltungen (z. B. in einem SmartNIC oder einem erweiterten SmartNIC), Beschleunigungsschaltungen, Speichergeräten, Speicherplatten oder AI-Hardware (z. B. GPUs, programmierte FPGAs oder ASICs, die auf die Implementierung eines AI-Modells wie eines neuronalen Netzwerks zugeschnitten sind) integriert werden. Eine solche xPU kann so konzipiert sein, dass sie einen oder mehrere Datenströme empfängt, abruft und/oder anderweitig programmiert, um diese zu verarbeiten und spezifische Aufgaben und Aktionen für die Datenströme auszuführen (z. B. das Hosten von Microservices, das Durchführen von Dienstmanagement oder Orchestrierung, das Organisieren oder Verwalten von Server- oder Rechenzentrums-Hardware, das Verwalten von Dienstnetzen oder das Sammeln und Verteilen von Telemetrie), und zwar außerhalb der CPU oder der allgemeinen Verarbeitungs-Hardware. Es versteht sich jedoch von selbst, dass eine xPU, ein SOC, eine CPU und andere Varianten des Prozessors 1904 in Koordination miteinander arbeiten können, um viele Arten von Operationen und Befehlen innerhalb und im Namen des Rechenknotens 1900 auszuführen.
  • Der Speicher 1906 kann als jede Art von flüchtigem (z. B. dynamischer Direktzugriffsspeicher (DRAM) usw.) oder nichtflüchtigem Speicher oder Datenspeicher ausgeführt werden, der die hier beschriebenen Funktionen ausführen kann. Flüchtiger Speicher kann ein Speichermedium sein, das Leistung benötigt, um den Zustand von durch das Medium gespeicherten Daten aufrechtzuerhalten. Nicht einschränkende Beispiele für flüchtige Speicher sind verschiedene Arten von Direktzugriffsspeichern (RAM), wie DRAM oder statische Direktzugriffsspeicher (SRAM). Ein besonderer Typ von DRAM, der in einem Speichermodul verwendet werden kann, ist der synchrone dynamische Direktzugriffsspeicher (SDRAM).
  • In einem Beispiel handelt es sich bei der Speichervorrichtung (z. B. Speicherschaltung) um eine beliebige Anzahl von blockadressierbaren Speichervorrichtungen, z. B. solche, die auf NAND- oder NOR-Technologien basieren (z. B. Single-Level Cell („SLC“), Multi-Level Cell („MLC“), Quad-Level Cell („QLC“), Tri-Level Cell („TLC“) oder andere NAND). In einigen Beispielen umfasst (umfassen) die Speichervorrichtung(en) eine byteadressierbare dreidimensionale Kreuzpunktspeichervorrichtung oder andere byteadressierbare nichtflüchtige Speichervorrichtungen (NVM), wie ein- oder mehrstufige Phasenänderungsspeicher (PCM) oder Phasenänderungsspeicher mit einem Schalter (PCMS), NVM-Vorrichtungen, die Chalkogenid-Phasenänderungsmaterial verwenden (z. B. Chalkogenid-Glas), Widerstandsspeicher einschließlich Metalloxidbasis, Sauerstoffvakanzbasis und Conductive Bridge Random Access Memory (CB-RAM), Nanodrahtspeicher, ferroelektrischer Transistor-Random-Access-Memory (FeTRAM), magnetoresistiver Random-Access-Memory (MRAM), der Memristortechnologie enthält, Spin-Transfer-Torque (STT)-MRAM, ein auf Spintronic Magnetic Junction Memory basierendes Bauelement, ein auf Magnetic Tunneling Junction (MTJ) basierendes Bauelement, ein auf DW (Domain Wall) und SOT (Spin Orbit Transfer) basierendes Bauelement, ein auf Thyristor basierendes Speicherbauelement, eine Kombination der oben genannten Bauelemente oder andere geeignete Speicher. Eine Speichervorrichtung kann auch einen dreidimensionalen Kreuzpunktspeicher (z. B. Intel® 3D XPoint™-Speicher) oder andere byteadressierbare, nichtflüchtige Speichervorrichtungen umfassen. Die Speichervorrichtung kann sich auf den Die selbst und/oder auf ein gehäustes Speicherprodukt beziehen. In einigen Beispielen können 3D-Kreuzpunktspeicher (z. B. Intel® 3D XPoint™-Speicher) eine transistorlose, stapelbare Kreuzpunktarchitektur umfassen, bei der die Speicherzellen an der Kreuzung von Wort- und Bitleitungen sitzen und einzeln adressierbar sind und bei der die Bitspeicherung auf einer Änderung des Volumenwiderstands basiert. In einigen Beispielen kann der gesamte Speicher oder ein Teil des Speichers 1906 in den Prozessor 1904 integriert sein. Der Speicher 1906 kann verschiedene Software und Daten speichern, die während des Betriebs verwendet werden, wie z. B. eine oder mehrere Anwendungen, Daten, die von der/den Anwendung(en) bearbeitet werden, Bibliotheken und Treiber.
  • In einigen Beispielen umfassen widerstandsbasierte und/oder transistorlose Speicherarchitekturen Phasenwechsel-Speicher (PCM) im Nanometerbereich, bei denen sich ein Volumen eines Phasenwechselmaterials zwischen mindestens zwei Elektroden befindet. Teile des beispielhaften Phasenwechselmaterials weisen unterschiedliche Grade an kristallinen Phasen und amorphen Phasen auf, in denen unterschiedliche Grade an Widerstand zwischen den mindestens zwei Elektroden gemessen werden können. In einigen Beispielen ist das Phasenwechselmaterial ein Glas auf Chalkogenidbasis. Solche resistiven Speichergeräte werden manchmal als memristive Geräte bezeichnet, die sich an die Geschichte des Stroms erinnern, der zuvor durch sie geflossen ist. Gespeicherte Daten werden von PCM-Beispielgeräten durch Messung des elektrischen Widerstands abgerufen, wobei die kristallinen Phasen einen relativ geringeren Widerstandswert (z. B. die logische „0“) aufweisen als die amorphen Phasen mit einem relativ höheren Widerstandswert (z. B. die logische „1“).
  • PCM-Geräte speichern beispielsweise Daten über lange Zeiträume (z. B. etwa 10 Jahre bei Raumtemperatur). Schreibvorgänge auf PCM-Bauteile (z. B. Setzen auf logisch „0“, Setzen auf logisch „1“, Setzen auf einen mittleren Widerstandswert) erfolgen durch Anlegen eines oder mehrerer Stromimpulse an die mindestens zwei Elektroden, wobei die Impulse eine bestimmte Stromstärke und Dauer haben. So bewirkt beispielsweise ein langer Schwachstromimpuls (SET), der an die mindestens zwei Elektroden angelegt wird, dass sich das PCM-Bauelement in einem kristallinen Zustand mit geringem Widerstand befindet, während ein vergleichsweise kurzer Hochstromimpuls (RESET), der an die mindestens zwei Elektroden angelegt wird, bewirkt, dass sich das PCM-Bauelement in einem amorphen Zustand mit hohem Widerstand befindet.
  • In einigen Beispielen erleichtert die Implementierung von PCM-Geräten Nicht-Von-Neumann-Rechenarchitekturen, die In-Memory-Computing-Funktionen ermöglichen. Herkömmliche Rechenarchitekturen umfassen im Allgemeinen eine zentrale Verarbeitungseinheit (CPU), die über einen Bus mit einem oder mehreren Speichergeräten verbunden ist. Daher wird eine endliche Menge an Energie und Zeit für die Übertragung von Daten zwischen der CPU und dem Speicher verbraucht, was ein bekannter Engpass bei von-Neumann-Rechenarchitekturen ist. PCM-Geräte minimieren jedoch den Datentransfer zwischen CPU und Speicher und machen ihn in einigen Fällen sogar überflüssig, indem sie einige Rechenoperationen im Speicher durchführen. Anders ausgedrückt: PCM-Geräte speichern nicht nur Informationen, sondern sie führen auch Rechenaufgaben aus. Solche Nicht-von-Neumann-Rechenarchitekturen können Vektoren mit einer relativ hohen Dimensionalität implementieren, um das hyperdimensionale Rechnen zu erleichtern, z. B. Vektoren mit 10.000 Bits. Relativ große Bitbreitenvektoren ermöglichen Computerparadigmen nach dem Vorbild des menschlichen Gehirns, das ebenfalls Informationen analog zu breiten Bitvektoren verarbeitet.
  • Die Rechenschaltung 1902 ist mit anderen Komponenten des Rechenknotens 1900 über das E/A-Subsystem 1908 kommunikativ verbunden, das als Schaltung und/oder Komponenten ausgeführt sein kann, um Eingabe-/Ausgabeoperationen mit der Rechenschaltung 1902 (z. B. mit dem Prozessor 1904 und/oder dem Hauptspeicher 1906) und anderen Komponenten der Rechenschaltung 1902 zu erleichtern. Das E/A-Subsystem 1908 kann beispielsweise als Speicher-Controller-Hubs, Eingabe-/Ausgabesteuerungs-Hubs, integrierte Sensor-Hubs, Firmware-Geräte, Kommunikationsverbindungen (z. B. Punkt-zu-Punkt-Verbindungen, Busverbindungen, Drähte, Kabel, Lichtleiter, Leiterbahnen usw.) und/oder andere Komponenten und Subsysteme zur Erleichterung der Eingabe-/Ausgabevorgänge ausgeführt werden oder diese enthalten. In einigen Beispielen kann das E/A-Subsystem 1908 einen Teil eines System-on-a-Chip (SoC) bilden und zusammen mit dem Prozessor 1904, dem Speicher 1906 und anderen Komponenten der Rechenschaltung 1902 in die Rechenschaltung 1902 integriert werden.
  • Das eine oder die mehreren illustrativen Datenspeichergeräte/Festplatten 1910 können als ein oder mehrere beliebige(s) physische(s) Gerät(e) ausgeführt sein, das/die für die kurz- oder langfristige Speicherung von Daten konfiguriert ist/sind, wie z. B. Speichergeräte, Speicher, Schaltkreise, Speicherkarten, Flash-Speicher, Festplattenlaufwerke (HDDs), Solid-State-Laufwerke (SSDs) und/oder andere Datenspeichergeräte/Festplatten. Einzelne Datenspeichergeräte/Festplatten 1910 können eine Systempartition enthalten, die Daten und Firmware-Code für das Datenspeichergerät/die Festplatte 1910 speichert. Einzelne Datenspeichergeräte/Festplatten 1910 können auch eine oder mehrere Betriebssystempartitionen enthalten, auf denen Datendateien und ausführbare Dateien für Betriebssysteme gespeichert sind, die beispielsweise vom Typ des Rechenknotens 1900 abhängen.
  • Die Kommunikationsschaltung 1912 kann als jede Kommunikationsschaltung, jedes Gerät oder jede Sammlung davon ausgeführt werden, die in der Lage sind, die Kommunikation über ein Netzwerk zwischen der Rechenschaltung 1902 und einer anderen Rechenvorrichtung (z. B. einem Edge-Gateway eines implementierten Edge-Informatiksystems) zu ermöglichen. Die Kommunikationsschaltung 1912 kann so konfiguriert sein, dass sie eine oder mehrere Kommunikationstechnologien (z. B. drahtgebundene oder drahtlose Kommunikation) und zugehörige Protokolle verwendet (z. B. ein zellulares Netzwerkprotokoll, wie z. B. ein 3GPP 4G- oder 5G-Standard, ein drahtloses lokales Netzwerkprotokoll, wie z. B. IEEE 802.11/Wi-Fi®, ein drahtloses Weitverkehrsnetzprotokoll, Ethernet, Bluetooth®, Bluetooth Low Energy, ein IoT-Protokoll, wie z. B. IEEE 802.15.4 oder ZigBee®, Low-Power-Wide-Area-Network- (LPWAN) oder Low-Power-Wide-Area-(LPWA) Protokolle usw.), um eine solche Kommunikation zu bewirken.
  • Die illustrative Kommunikationsschaltung 1912 umfasst einen Netzwerkschnittstellen-Controller (NIC) 1920, der auch als Host Fabric Interface (HFI) bezeichnet werden kann. Die NIC 1920 kann als ein oder mehrere Add-in-Boards, Tochterkarten, Netzwerk-Schnittstellenkarten, Controller-Chips, Chipsätze oder andere Geräte ausgeführt sein, die vom Rechenknoten 1900 zur Verbindung mit einer anderen Rechenvorrichtung (z. B. einem Edge-Gateway-Knoten) verwendet werden können. In einigen Beispielen kann die NIC 1920 als Teil eines System-on-a-Chip (SoC), das einen oder mehrere Prozessoren enthält, oder auf einem Multichip-Paket, das ebenfalls einen oder mehrere Prozessoren enthält, enthalten sein. In einigen Beispielen kann die NIC 1920 einen lokalen Prozessor (nicht gezeigt) und/oder einen lokalen Speicher (nicht gezeigt) enthalten, die beide lokal zu der NIC 1920 sind. In solchen Beispielen kann der lokale Prozessor der NIC 1920 in der Lage sein, eine oder mehrere der hier beschriebenen Funktionen der Rechenschaltung 1902 auszuführen. Zusätzlich oder alternativ kann in solchen Beispielen der lokale Speicher der NIC 1920 in eine oder mehrere Komponenten des Client-Rechenknotens auf der Platinen-, Sockel-, Chip-Ebene und/oder anderen Ebenen integriert werden.
  • Zusätzlich kann in einigen Beispielen ein entsprechender Rechenknoten 1900 ein oder mehrere Peripheriegeräte 1914 enthalten. Solche Peripheriegeräte 1914 können alle Arten von Peripheriegeräten umfassen, die in einer Rechenvorrichtung oder einem Server zu finden sind, wie z. B. Audio-Eingabegeräte, ein Display, andere Eingabe-/Ausgabegeräte, Schnittstellengeräte und/oder andere Peripheriegeräte, je nach dem speziellen Typ des Rechenknotens 1900. In weiteren Beispielen kann der Rechenknoten 1900 durch einen entsprechenden Edge-Computing-Knoten (sei es ein Client, ein Gateway oder ein Aggregationsknoten) in einem Edge-Informatiksystem oder ähnliche Formen von Geräten, Computern, Subsystemen, Schaltungen oder anderen Komponenten verkörpert werden.
  • In einem detaillierteren Beispiel zeigt 20 ein Blockdiagramm eines Beispiels von Komponenten, die in einem Edge-Computing-Knoten 1950 vorhanden sein können, um die hierin beschriebenen Techniken (z. B. Vorgänge, Prozesse, Verfahren und Methodologien) zu implementieren. Dieser Edge-Computing-Knoten 1950 bietet eine nähere Betrachtung der jeweiligen Komponenten des Knotens 1900, wenn er als Teil einer Rechenvorrichtung (z. B. als mobiles Gerät, Basisstation, Server, Gateway usw.) implementiert ist. Der Edge-Computing-Knoten 1950 kann eine beliebige Kombination der hier genannten Hardware- oder logischen Komponenten enthalten und kann ein beliebiges Gerät enthalten, das mit einem Edge-Kommunikationsnetz oder einer Kombination solcher Netze verwendet werden kann, oder mit diesem gekoppelt sein. Die Komponenten können als integrierte Schaltungen (ICs), Teile davon, diskrete elektronische Geräte oder andere Module, Befehlssätze, programmierbare Logik oder Algorithmen, Hardware, Hardware-Beschleuniger, Software, Firmware oder eine Kombination davon im Edge-Computing-Knoten 1950 implementiert werden, oder als Komponenten, die anderweitig in ein Gehäuse eines größeren Systems eingebaut sind.
  • Die Edge-Rechenvorrichtung 1950 kann Verarbeitungsschaltungen in Form eines Prozessors 1952 enthalten, bei dem es sich um einen Mikroprozessor, einen Multi-Core-Prozessor, einen Multithreading-Prozessor, einen Ultra-Niederspannungsprozessor, einen eingebetteten Prozessor, eine xPU/DPU/IPU/NPU, eine spezielle Verarbeitungseinheit, eine spezialisierte Verarbeitungseinheit oder andere bekannte Verarbeitungselemente handeln kann. Der Prozessor 1952 kann Teil eines System-on-Chip (SoC) sein, bei dem der Prozessor 1952 und andere Komponenten in einer einzigen integrierten Schaltung oder einem einzigen Gehäuse untergebracht sind, wie z. B. die Edison™- oder Galileo™-SoC-Boards der Intel Corporation, Santa Clara, Kalifornien. Der Prozessor 1952 kann beispielsweise ein Intel® Architecture Core™-basierter CPU-Prozessor sein, wie ein Quark™, ein Atom™, ein i3, ein i5, ein i7, ein i9 oder ein Prozessor der MCU-Klasse oder ein anderer von Intel® erhältlicher Prozessor. Es kann jedoch eine beliebige Anzahl anderer Prozessoren verwendet werden, z. B. von Advanced Micro Devices, Inc. (AMD®) aus Sunnyvale, Kalifornien, ein MIPS®-basiertes Design von MIPS Technologies, Inc. aus Sunnyvale, Kalifornien, ein ARM®-basiertes Design, das von ARM Holdings, Ltd. oder einem Kunden davon lizenziert wurde, oder deren Lizenznehmer oder Adoptoren. Zu den Prozessoren können Einheiten wie ein A5 - 13-Prozessor von Apple® Inc., ein Snapdragon™-Prozessor von Qualcomm® Technologies, Inc. oder ein OMAP™-Prozessor von Texas Instruments, Inc. gehören. Der Prozessor 1952 und die zugehörigen Schaltungen können in einem Formfaktor mit einem Sockel, einem Formfaktor mit mehreren Sockeln oder in einer Vielzahl anderer Formate bereitgestellt werden, einschließlich begrenzter Hardware-Konfigurationen oder Konfigurationen, die weniger als alle in 20 gezeigten Elemente enthalten.
  • Der Prozessor 1952 kann mit einem Systemspeicher 1954 über eine Zwischenverbindung 1956 (z. B. einen Bus) kommunizieren. Es kann eine beliebige Anzahl von Speichergeräten verwendet werden, um eine bestimmte Menge an Systemspeicher bereitzustellen. Bei dem Speicher 1954 kann es sich beispielsweise um einen Direktzugriffsspeicher (RAM) handeln, der einem Entwurf des Joint Electron Devices Engineering Council (JEDEC) wie den DDR- oder mobilen DDR-Standards (z. B. LPDDR, LPDDR2, LPDDR3 oder LPDDR4) entspricht. In besonderen Beispielen kann eine Speicherkomponente einem von der JEDEC veröffentlichten DRAM-Standard entsprechen, wie JESD79F für DDR SDRAM, JESD79-2F für DDR2 SDRAM, JESD79-3F für DDR3 SDRAM, JESD79-4A für DDR4 SDRAM, JESD209 für Low Power DDR (LPDDR), JESD209-2 für LPDDR2, JESD209-3 für LPDDR3 und JESD209-4 für LPDDR4. Solche Standards (und ähnliche Standards) können als DDR-basierte Standards bezeichnet werden und Kommunikationsschnittstellen der Speichervorrichtungen, die solche Standards implementieren, können als DDR-basierte Schnittstellen bezeichnet werden. In verschiedenen Ausführungen können die einzelnen Speicherbausteine aus einer beliebigen Anzahl verschiedener Gehäusetypen bestehen, wie z. B. Single Die Package (SDP), Dual Die Package (DDP) oder Quad Die Package (Q17P). In einigen Beispielen können diese Geräte direkt auf eine Hauptplatine gelötet werden, um eine Lösung mit geringerem Profil zu bieten, während in anderen Beispielen die Geräte als ein oder mehrere Speichermodule konfiguriert sind, die wiederum über einen bestimmten Anschluss mit der Hauptplatine verbunden sind. Es kann eine beliebige Anzahl von anderen Speicherimplementierungen verwendet werden, wie z. B. andere Arten von Speichermodulen, z. B. Dual-Inline-Speichermodule (DIMMs) verschiedener Sorten, einschließlich, aber nicht beschränkt auf microDIMMs oder MiniDIMMs.
  • Um eine dauerhafte Speicherung von Informationen wie Daten, Anwendungen, Betriebssystemen usw. zu ermöglichen, kann ein Massenspeicher 1958 auch über die Verbindung 1956 mit dem Prozessor 1952 gekoppelt werden. In einem Beispiel kann der Massenspeicher 1958 durch ein Solid-State-Laufwerk (SSDD) realisiert werden. Andere Geräte, die für die Speicherung 1958 verwendet werden können, sind Flash-Speicherkarten wie Secure Digital (SD)-Karten, microSD-Karten, eXtreme Digital (XD)-Fotokarten und dergleichen sowie USB-Flash-Laufwerke (Universal Serial Bus). In einem Beispiel kann die Speichervorrichtung ein Chalkogenidglas, ein NAND-Flash-Speicher mit mehreren Schwellenwerten, ein NOR-Flash-Speicher, ein Einstufen- oder Mehrstufen-Phasenänderungsspeicher (PCM), ein resistiver Speicher, ein Nanodrahtspeicher, ein ferroelektrischer Transistor-Random-Access-Memory (FeTRAM), ein antiferroelektrischer Speicher, ein magnetoresistiver Random-Access-Memory-Speicher (MRAM), der die Memristor-Technologie beinhaltet, sein oder umfassen, Widerstands-Speicher, der die Metalloxid-Basis, die Sauerstoff-Vakanz-Basis und die leitende Brücke Random Access Memory (CB-RAM) enthält, oder Spin-Transfer-Torque (STT)-MRAM, eine auf einem spintronischen magnetischen Übergang (magnetic junction) basierende Vorrichtung, eine auf einem magnetischen Tunnelübergang (MTJ) basierende Vorrichtung, eine auf DW (Domain Wall) und SOT (Spin Orbit Transfer) basierende Vorrichtung, eine auf einem Thyristor basierende Speichervorrichtung oder eine Kombination aus einem der oben genannten, oder ein anderer Speicher.
  • In stromsparenden Implementierungen kann der Massenspeicher 1958 ein On-Die-Speicher oder ein mit dem Prozessor 1952 verbundenes Register sein. In einigen Beispielen kann der Massenspeicher 1958 jedoch auch mit einem Mikro-Festplattenlaufwerk (HDD) realisiert werden. Darüber hinaus kann eine beliebige Anzahl neuer Technologien für den Massenspeicher 1958 zusätzlich zu den beschriebenen Technologien oder an deren Stelle verwendet werden, wie z. B. Widerstandsänderungsspeicher, Phasenänderungsspeicher, holografische Speicher oder chemische Speicher, um nur einige zu nennen.
  • Die Komponenten können über das Interconnect 1956 kommunizieren. Die Verbindung 1956 kann eine beliebige Anzahl von Technologien umfassen, einschließlich der Industriestandardarchitektur (ISA), der erweiterten ISA (EISA), der Peripheral Component Interconnect (PCI), der Peripheral Component Interconnect Extended (PCIx), PCI Express (PCIe) oder einer beliebigen Anzahl anderer Technologien. Bei der Verbindung 1956 kann es sich um einen proprietären Bus handeln, der beispielsweise in einem SoC-basierten System verwendet wird. Es können auch andere Bus-Systeme verwendet werden, z. B. eine I2C-Schnittstelle (Inter-Integrated Circuit), eine SPI-Schnittstelle (Serial Peripheral Interface), Punkt-zu-Punkt-Schnittstellen und ein Energiebus.
  • Die Verbindung 1956 kann den Prozessor 1952 mit einem Transceiver 1966 koppeln, um mit den angeschlossenen Edge-Geräten 1962 zu kommunizieren. Der Transceiver 1966 kann eine beliebige Anzahl von Frequenzen und Protokollen verwenden, wie z. B. Übertragungen mit 2,4 Gigahertz (GHz) nach dem IEEE 802.15.4-Standard, nach dem Bluetooth® Low Energy (BLE)-Standard, wie er von der Bluetooth® Special Interest Group definiert wurde, oder nach dem ZigBee®-Standard, neben anderen. Für die Verbindungen zu den angeschlossenen Edge-Geräten 1962 kann eine beliebige Anzahl von Funkgeräten verwendet werden, die für ein bestimmtes drahtloses Kommunikationsprotokoll konfiguriert sind. So kann beispielsweise eine WLAN-Einheit (Wireless Local Area Network) verwendet werden, um die Wi-Fi®-Kommunikation gemäß der Norm IEEE 802.11 (Institute of Electrical and Electronics Engineers) zu realisieren. Darüber hinaus kann die drahtlose Weitverkehrskommunikation, z. B. nach einem zellularen oder einem anderen drahtlosen Weitverkehrsprotokoll, über eine WWAN-Einheit (Wireless Wide Area Network) erfolgen.
  • Der drahtlose Netzwerk-Transceiver 1966 (oder mehrere Transceiver) kann unter Verwendung mehrerer Standards oder Funkgeräte für die Kommunikation in einem unterschiedlichen Bereich kommunizieren. Beispielsweise kann der Edge-Computing-Knoten 1950 mit Geräten in der Nähe, z. B. in einem Umkreis von etwa 10 Metern, über einen lokalen Transceiver auf der Basis von Bluetooth Low Energy (BLE) oder einem anderen stromsparenden Funkgerät kommunizieren, um Strom zu sparen. Weiter entfernte Edge-Geräte 1962, z. B. innerhalb von etwa 50 Metern, können über ZigBee® oder andere Funkgeräte mit mittlerer Leistung erreicht werden. Beide Kommunikationstechniken können über ein einziges Funkgerät mit unterschiedlicher Leistung oder über getrennte Transceiver erfolgen, z. B. einen lokalen Transceiver mit BLE und einen separaten Mesh-Transceiver mit ZigBee®.
  • Ein drahtloser Netzwerk-Transceiver 1966 (z. B. ein Radio-Transceiver) kann enthalten sein, um mit Geräten oder Diensten in einer Cloud (z. B. einer Edge-Cloud 1995) über lokale oder Weitverkehrsnetzprotokolle zu kommunizieren. Bei dem drahtlosen Netzwerk-Transceiver 1966 kann es sich um einen Low-Power-Wide-Area (LPWA)-Transceiver handeln, der unter anderem den Standards IEEE 802.15.4 oder IEEE 802.15.4g entspricht. Der Edge-Computing-Knoten 1950 kann über einen weiten Bereich mittels LoRaWAN™ (Long Range Wide Area Network) kommunizieren, das von Semtech und der LoRa Alliance entwickelt wurde. Die hier beschriebenen Techniken sind nicht auf diese Technologien beschränkt, sondern können mit einer beliebigen Anzahl anderer Cloud-Transceiver verwendet werden, die eine Kommunikation mit großer Reichweite und geringer Bandbreite ermöglichen, wie z. B. Sigfox und andere Technologien. Darüber hinaus können auch andere Kommunikationstechniken, wie z. B. das in der Spezifikation IEEE 802.15.4e beschriebene Time-Slotted Channel Hopping, verwendet werden.
  • Zusätzlich zu den hier beschriebenen Systemen für den drahtlosen Netzwerk-Transceiver 1966 kann eine beliebige Anzahl anderer Funkverbindungen und Protokolle verwendet werden. Der Transceiver 1966 kann zum Beispiel einen zellularen Transceiver enthalten, der Spreizspektrum-Kommunikation (SPA/SAS) zur Implementierung von Hochgeschwindigkeitskommunikation verwendet. Darüber hinaus kann eine beliebige Anzahl anderer Protokolle verwendet werden, z. B. Wi-Fi®-Netzwerke für die Kommunikation mit mittlerer Geschwindigkeit und die Bereitstellung von Netzwerkkommunikation. Der Transceiver 1966 kann Funkgeräte enthalten, die mit einer beliebigen Anzahl von 3GPP-Spezifikationen (Third Generation Partnership Project) kompatibel sind, wie z. B. Long Term Evolution (LTE) und 5G-Kommunikationssysteme (5th Generation), die am Ende der vorliegenden Offenbarung näher erläutert werden. Ein Netzwerk-Schnittstellencontroller (NIC) 1968 kann enthalten sein, um eine drahtgebundene Kommunikation mit Knoten der Edge-Cloud 1995 oder mit anderen Geräten, wie den angeschlossenen Edge-Geräten 1962 (z. B. in einem Mesh), zu ermöglichen. Die drahtgebundene Kommunikation kann über eine Ethernet-Verbindung erfolgen oder auf anderen Netzwerktypen basieren, wie z. B. Controller Area Network (CAN), Local Interconnect Network (LIN), DeviceNet, ControlNet, Data Highway+, PROFIBUS oder PROFINET und vielen anderen. Eine zusätzliche Netzwerkkarte (NIC 1968) kann eingebaut werden, um die Verbindung zu einem zweiten Netzwerk zu ermöglichen, z. B. eine erste NIC 1968, die die Kommunikation mit der Cloud über Ethernet ermöglicht, und eine zweite NIC 1968, die die Kommunikation mit anderen Geräten über eine andere Art von Netzwerk ermöglicht.
  • In Anbetracht der verschiedenen Arten der Kommunikation zwischen dem Gerät und einer anderen Komponente oder einem Netzwerk kann die von dem Gerät verwendete Kommunikationsschaltung eine oder mehrere der Komponenten 1964, 1966, 1968 oder 1970 enthalten oder von diesen verkörpert werden. Dementsprechend können in verschiedenen Beispielen geeignete Mittel zur Kommunikation (z. B. Empfang, Übertragung usw.) durch solche Kommunikationsschaltungen verkörpert werden.
  • Der Edge-Computing-Knoten 1950 kann eine Beschleunigungsschaltung 1964 enthalten oder mit dieser gekoppelt sein, die durch einen oder mehrere Beschleuniger für künstliche Intelligenz (AI), einen neuronalen Compute-Stick, neuromorphe Hardware, einen FPGA, eine Anordnung von GPUs, eine Anordnung von xPUs/DPUs/IPU/NPUs, ein oder mehrere SoCs, eine oder mehrere CPUs, einen oder mehrere digitale Signalprozessoren, dedizierte ASICs oder andere Formen spezialisierter Prozessoren oder Schaltungen, die für die Ausführung einer oder mehrerer spezieller Aufgaben ausgelegt sind, verkörpert werden kann. Diese Aufgaben können die Verarbeitung von künstlicher Intelligenz (einschließlich maschinellem Lernen, Training, Schlussfolgerungen und Klassifizierungsoperationen), die Verarbeitung visueller Daten, die Verarbeitung von Netzwerkdaten, die Objekterkennung, die Regelanalyse oder dergleichen umfassen. Diese Aufgaben können auch die spezifischen Edge-Computing-Aufgaben für das Dienstmanagement und den Dienstbetrieb umfassen, die an anderer Stelle in diesem Dokument behandelt werden.
  • Die Verbindung 1956 kann den Prozessor 1952 mit einem Sensor-Hub oder einer externen Schnittstelle 1970 koppeln, die zum Anschluss weiterer Geräte oder Subsysteme dient. Die Geräte können Sensoren 1972 enthalten, wie z. B. Beschleunigungsmesser, Füllstandssensoren, Durchflusssensoren, optische Lichtsensoren, Kamerasensoren, Temperatursensoren, Sensoren des globalen Navigationssystems (z. B. GPS), Drucksensoren, Luftdrucksensoren und dergleichen. Der Knotenpunkt oder die Schnittstelle 1970 kann außerdem dazu verwendet werden, den Edge-Computing-Knoten 1950 mit Aktuatoren 1974 zu verbinden, z. B. mit Leistungsschaltern, Ventilaktuatoren, einem akustischen Signalgeber, einer optischen Warnvorrichtung und dergleichen.
  • In einigen optionalen Beispielen können verschiedene Eingabe-/Ausgabegeräte (E/A) im Edge-Computing-Knoten 1950 vorhanden oder mit ihm verbunden sein. So kann beispielsweise ein Display oder ein anderes Ausgabegerät 1984 zur Anzeige von Informationen, wie z. B. Sensormesswerte oder Aktuatorposition, vorgesehen werden. Ein Eingabegerät 1986, wie z. B. ein Touchscreen oder ein Tastenfeld, kann zur Annahme von Eingaben vorgesehen werden. Ein Ausgabegerät 1984 kann eine beliebige Anzahl von Audio- oder visuellen Anzeigeformen umfassen, einschließlich einfacher visueller Ausgaben wie binäre Statusanzeigen (z. B. Leuchtdioden (LEDs) und visuelle Ausgaben mit mehreren Zeichen) oder komplexerer Ausgaben wie Bildschirme (z. B. Flüssigkristallbildschirme (LCD)), wobei die Ausgabe von Zeichen, Grafiken, Multimediaobjekten und dergleichen aus dem Betrieb des Edge-Computing-Knotens 1950 generiert oder erzeugt wird. Eine Anzeige- oder Konsolen-Hardware kann im Zusammenhang mit dem vorliegenden System verwendet werden, um Ausgaben eines Edge-Computing-Systems bereitzustellen und Eingaben zu empfangen, Komponenten oder Dienste eines Edge-Computing-Systems zu verwalten, den Zustand einer Edge-Computing-Komponente oder eines Dienstes zu ermitteln oder eine beliebige andere Anzahl von Management- oder Verwaltungsfunktionen oder Dienstnutzungsfällen durchzuführen.
  • Eine Batterie 1976 kann den Edge-Computing-Knoten 1950 mit Strom versorgen, obwohl er in Beispielen, in denen der Edge-Computing-Knoten 1950 an einem festen Standort montiert ist, über eine an ein Stromnetz gekoppelte Stromversorgung verfügen kann, oder die Batterie kann als Reserve oder für vorübergehende Funktionen verwendet werden. Die Batterie 1976 kann eine Lithium-Ionen-Batterie oder eine Metall-Luft-Batterie wie eine Zink-Luft-Batterie, eine Aluminium-Luft-Batterie, eine Lithium-Luft-Batterie und dergleichen sein.
  • Ein Batterie-Überwachungs-/Ladegerät 1978 kann in den Edge-Computing-Knoten 1950 integriert werden, um den Ladezustand (SoCh) der Batterie 1976 zu überwachen, falls vorhanden. Das Batterie-Überwachungs-/Ladegerät 1978 kann zur Überwachung anderer Parameter der Batterie 1976 verwendet werden, um Ausfallprognosen zu erstellen, z. B. des Gesundheitszustands (SoH) und des Funktionszustands (SoF) der Batterie 1976. Das Batterie-Überwachungs-/Ladegerät 1978 kann eine integrierte Schaltung zur Batterieüberwachung enthalten, wie z. B. einen LTC4020 oder einen LT5990 von Linear Technologies, einen ADT7488A von ON Semiconductor aus Phoenix, Arizona, oder ein IC aus der UCD90xxx-Familie von Texas Instruments aus Dallas, TX. Das Batterie-Überwachungs-/Ladegerät 1978 kann die Informationen über die Batterie 1976 über die Verbindungsleitung 1956 an den Prozessor 1952 übermitteln. Das Batterie-Überwachungs-/Ladegerät 1978 kann auch einen Analog-Digital-Wandler (ADC) enthalten, der es dem Prozessor 1952 ermöglicht, die Spannung der Batterie 1976 oder den Stromfluss von der Batterie 1976 direkt zu überwachen. Die Batterieparameter können verwendet werden, um Aktionen zu bestimmen, die der Edge-Computing-Knoten 1950 durchführen kann, wie z. B. die Übertragungsfrequenz, den Mesh-Netzwerk-Betrieb, die Abtastfrequenz und dergleichen.
  • Ein Stromversorgungsblock 1980 oder eine andere an ein Netz gekoppelte Stromversorgung kann mit dem Batterie-Überwachungs-/Ladegerät 1978 verbunden werden, um die Batterie 1976 zu laden. In einigen Beispielen kann der Leistungsblock 1980 durch einen drahtlosen Leistungsempfänger ersetzt werden, um die Leistung drahtlos zu beziehen, z. B. über eine Ringantenne im Edge-Computing-Knoten 1950. Eine drahtlose Batterieladeschaltung, wie z. B. ein LTC4020-Chip von Linear Technologies (Milpitas, Kalifornien), kann in das Batterie-Überwachungs-/Ladegerät 1978 integriert werden. Die spezifischen Ladestromkreise können auf der Grundlage der Größe der Batterie 1976 und damit des erforderlichen Stroms ausgewählt werden. Das Aufladen kann unter anderem nach dem von der Airfuel Alliance veröffentlichten Airfuel-Standard, dem vom Wireless Power Consortium veröffentlichten Qi-Standard oder dem von der Alliance for Wireless Power veröffentlichten Rezence-Ladestandard erfolgen.
  • Der Massenspeicher 1958 kann Anweisungen 1982 in Form von Software-, Firmware- oder Hardware-Befehlen zur Umsetzung der hier beschriebenen Techniken enthalten. Obwohl diese Anweisungen 1982 als Codeblöcke im Speicher 1954 und im Massenspeicher 1958 dargestellt sind, kann jeder der Codeblöcke durch festverdrahtete Schaltungen ersetzt werden, die beispielsweise in einer anwendungsspezifischen integrierten Schaltung (ASIC) eingebaut sind.
  • In einem Beispiel können die Anweisungen 1982, die über den Speicher 1954, den Massenspeicher 1958 oder den Prozessor 1952 bereitgestellt werden, als nichttransitorisches, maschinenlesbares Medium 1960 verkörpert werden, das einen Code enthält, der den Prozessor 1952 anweist, elektronische Operationen im Edge-Computing-Knoten 1950 durchzuführen. Der Prozessor 1952 kann über die Verbindungsleitung 1956 auf das nicht transitorische, maschinenlesbare Medium 1960 zugreifen. Das nicht transitorische, maschinenlesbare Medium 1960 kann beispielsweise durch die für den Massenspeicher 1958 beschriebenen Geräte verkörpert werden oder spezifische Speichereinheiten wie Speichergeräte und/oder Speicherplatten umfassen, zu denen optische Platten (z. B., digital Versatile Disk (DVD), Compact Disk (CD), CD-ROM, Blu-ray-Disk), Flash-Laufwerke, Disketten, Festplatten (z. B. SSDs) oder eine beliebige Anzahl anderer Hardware-Vorrichtungen, in denen Informationen für eine beliebige Dauer gespeichert werden (z. B. für längere Zeiträume, dauerhaft, für kurze Zeiträume, zur vorübergehenden Zwischenspeicherung und/oder zum Caching). Das nicht transitorische, maschinenlesbare Medium 1960 kann Anweisungen enthalten, die den Prozessor 1952 anweisen, eine bestimmte Abfolge oder einen bestimmten Ablauf von Aktionen durchzuführen, wie sie beispielsweise in den oben dargestellten Flussdiagrammen und Blockdiagrammen von Operationen und Funktionen beschrieben sind. Die hier verwendeten Begriffe „maschinenlesbares Medium“ und „computerlesbares Medium“ sind austauschbar. Wie hierin verwendet, ist der Ausdruck „nichtflüchtiges computerlesbares Speichermedium“ ausdrücklich definiert, eine beliebige Art von computerlesbarer Speichervorrichtung und/oder Speicherdisk einzuschließen und das Verbreiten von Signalen sowie Übertragungsmedien auszuschließen.
  • Ebenfalls in einem spezifischen Beispiel können die Anweisungen 1982 auf dem Prozessor 1952 (separat oder in Kombination mit den Anweisungen 1982 des maschinenlesbaren Mediums 1960) die Ausführung oder den Betrieb einer vertrauenswürdigen Ausführungsumgebung (TEE) 1990 konfigurieren. In einem Beispiel arbeitet die TEE 1990 als geschützter Bereich, der dem Prozessor 1952 für die sichere Ausführung von Befehlen und den sicheren Zugriff auf Daten zugänglich ist. Verschiedene Implementierungen der TEE 1990 und ein zugehöriger sicherer Bereich im Prozessor 1952 oder im Speicher 1954 können z. B. durch die Verwendung von Intel® Software Guard Extensions (SGX) oder ARM® TrustZone® Hardware-Sicherheitserweiterungen, Intel® Management Engine (ME) oder Intel® Converged Security Manageability Engine (CSME) bereitgestellt werden. Andere Aspekte der Sicherheitshärtung, Hardware-Roots-of-Trust und vertrauenswürdige oder geschützte Operationen können in dem Gerät 1950 durch die TEE 1990 und den Prozessor 1952 implementiert werden.
  • Während die in 19 und 20 dargestellten Beispiele beispielhafte Komponenten für einen Rechenknoten bzw. eine Rechenvorrichtung enthalten, sind die hier offenbarten Beispiele nicht darauf beschränkt. Wie hierin verwendet, kann ein „Computer“ einige oder alle der beispielhaften Komponenten der 19 und/oder 20 in verschiedenen Arten von Computerumgebungen enthalten. Beispiele für Computerumgebungen sind Edge-Computing-Geräte (z. B. Edge-Computer) in einer verteilten Netzwerkanordnung, bei der bestimmte teilnehmende Edge-Computing-Geräte heterogene oder homogene Geräte sind. Der hier verwendete Begriff „Computer“ kann einen Personal Computer, einen Server, ein Benutzergerät, einen Beschleuniger usw., einschließlich beliebiger Kombinationen davon, umfassen. In einigen Beispielen umfasst die verteilte Vernetzung und/oder das verteilte Rechnen eine beliebige Anzahl solcher Edge-Computing-Geräte, wie sie in den 19 und/oder 20 dargestellt sind, von denen jedes unterschiedliche Unterkomponenten, unterschiedliche Speicherkapazitäten, E/A-Fähigkeiten usw. umfassen kann. Da einige Implementierungen von verteilten Netzwerken und/oder verteiltem Rechnen mit bestimmten gewünschten Funktionen verbunden sind, enthalten die hier offenbarten Beispiele verschiedene Kombinationen von Komponenten, die in den 19 und/oder 20 dargestellt sind, um die funktionalen Ziele von Aufgaben des verteilten Rechnens zu erfüllen. In einigen Beispielen umfasst der Begriff „Rechenknoten“ oder „Computer“ nur den beispielhaften Prozessor 1904, den Speicher 1906 und das E/A-Subsystem 1908 von 19. In einigen Beispielen stützen sich eine oder mehrere Zielfunktionen einer verteilten Rechenaufgabe(n) auf ein oder mehrere alternative Geräte/Strukturen, die sich in verschiedenen Teilen einer Edge-Netzwerkumgebung befinden, wie z. B. Geräte für die Datenspeicherung (z. B. der beispielhafte Datenspeicher 1910), Eingabe-/Ausgabefähigkeiten (z. B. das/die beispielhafte(n) periphere(n) Gerät(e) 1914) und/oder Netzwerk-Kommunikationsfähigkeiten (z. B. die beispielhafte NIC 1920).
  • In einigen Beispielen sind Computer, die in einer Umgebung mit verteilter Datenverarbeitung und/oder verteilten Netzwerken (z. B. einem Edge-Netzwerk) betrieben werden, so strukturiert, dass sie eine bestimmte Zielfunktionalität auf eine Art und Weise erfüllen, die Rechenzeitverschwendung reduziert. Da ein Computer beispielsweise eine Teilmenge der in den 19 und 20 gezeigten Komponenten enthält, erfüllen solche Computer die Zielfunktionen des verteilten Rechnens, ohne eine Rechenstruktur zu enthalten, die andernfalls ungenutzt und/oder unzureichend ausgelastet wäre. Der Begriff „Computer“, wie er hier verwendet wird, umfasst jede Kombination von Strukturen der 19 und/oder 20, die in der Lage sind, die Zielfunktionen verteilter Rechenaufgaben zu erfüllen und/oder anderweitig auszuführen. In einigen Beispielen sind die Computer so strukturiert, dass die entsprechenden Zielfunktionen des verteilten Rechnens in Abhängigkeit von der dynamischen Nachfrage herunter- oder hochskaliert werden können. In einigen Beispielen werden verschiedene Computer im Hinblick auf ihre Fähigkeit, eine oder mehrere Aufgaben der verteilten Rechenanforderung(en) zu bearbeiten, aufgerufen und/oder anderweitig instanziiert, so dass jeder Computer, der in der Lage ist, die Aufgaben zu erfüllen, mit dieser Rechenaktivität fortfährt.
  • In den dargestellten Beispielen der 19 und 20 enthalten die Rechenvorrichtungen Betriebssysteme. Wie hierin verwendet, ist ein „Betriebssystem“ Software zur Steuerung von beispielhaften Rechenvorrichtungen, wie dem beispielhaften Edge-Computing-Knoten 1900 von 19 und/oder dem beispielhaften Edge-Computing-Knoten 1950 von 20. Beispiele für Betriebssysteme sind unter anderem verbraucherbasierte Betriebssysteme (z. B. Microsoft® Windows® 10, Google® Android® OS, Apple® Mac® OS usw.). Zu den beispielhaften Betriebssystemen gehören auch, aber nicht ausschließlich, branchenorientierte Betriebssysteme wie Echtzeitbetriebssysteme, Hypervisoren usw. Ein beispielhaftes Betriebssystem auf einem ersten Edge-Computing-Knoten kann dasselbe oder ein anderes sein als ein beispielhaftes Betriebssystem auf einem zweiten Edge-Computing-Knoten. In einigen Beispielen ruft das Betriebssystem alternative Software auf, um eine oder mehrere Funktionen und/oder Operationen zu erleichtern, die nicht systemeigen sind, wie z. B. bestimmte Kommunikationsprotokolle und/oder Interpreter. In einigen Beispielen instanziiert das Betriebssystem verschiedene Funktionen, die dem Betriebssystem nicht eigen sind. In einigen Beispielen weisen Betriebssysteme unterschiedliche Grade an Komplexität und/oder Fähigkeiten auf. Ein erstes Betriebssystem, das einem ersten Edge-Computing-Knoten entspricht, umfasst beispielsweise ein Echtzeitbetriebssystem mit besonderen Leistungserwartungen hinsichtlich der Reaktionsfähigkeit auf dynamische Eingabebedingungen, und ein zweites Betriebssystem, das einem zweiten Edge-Computing-Knoten entspricht, umfasst grafische Benutzerschnittstellenfunktionen zur Erleichterung der E/A für den Endbenutzer.
  • Aus dem Vorangegangenen wird ersichtlich, dass beispielhafte Systeme, Verfahren, Geräte und Herstellungsartikel offenbart wurden, die eine verbesserte Prüfung von Informatiksystemkomponenten, wie z. B. programmierbaren Netzwerkvorrichtungen, ermöglichen.
  • Beispielhafte Verfahren, Geräte, Systeme und Herstellungsartikel für die Prüfung vernetzter Geräte werden hier offenbart. Weitere Beispiele und Kombinationen davon weisen die folgenden auf:
  • Beispiel 1 beinhaltet ein nichtflüchtiges computerlesbares Medium, das Anweisungen enthält, die, wenn sie von einer logischen Schaltung ausgeführt werden, die logische Schaltung veranlassen, zumindest eine an eine programmierbare Netzwerkvorrichtung anzulegende Eingabe zu bestimmen, die Eingabe zu verändern, um eine Eingabevariante zu bestimmen, die Eingabevariante an die programmierbare Netzwerkvorrichtung zu übertragen und in Reaktion auf die Bestimmung, dass die Eingabevariante die programmierbare Netzwerkvorrichtung veranlasst, in einen erwarteten Zustand einzutreten, die Eingabevariante zu einem Testsatz hinzuzufügen.
  • Beispiel 2 beinhaltet das nichtflüchtige computerlesbare Medium, wie in Beispiel 1 definiert, wobei die Anweisungen, wenn sie ausgeführt werden, die Logikschaltung veranlassen, eine Testabdeckung für die programmierbare Netzwerkvorrichtung zu bestimmen.
  • Beispiel 3 beinhaltet das nichtflüchtige computerlesbare Medium, wie in Beispiel 1 definiert, wobei die Anweisungen, wenn sie ausgeführt werden, die Logikschaltung veranlassen, eine weitere Eingabevariante auf der Grundlage der Testabdeckung zu bestimmen.
  • Beispiel 4 beinhaltet das nichtflüchtige computerlesbare Medium, wie in Beispiel 1 definiert, wobei die Anweisungen, wenn sie ausgeführt werden, die Logikschaltung veranlassen, die Eingabevariante in einer Testabdeckungsmatrix zu speichern.
  • Beispiel 5 beinhaltet das nichtflüchtige computerlesbare Medium, wie in Beispiel 1 definiert, wobei die Anweisungen, wenn sie ausgeführt werden, die Logikschaltung veranlassen, die Eingabevariante zu dem Testsatz hinzuzufügen, als Reaktion auf die Feststellung, dass die Eingabevariante die programmierbare Vorrichtung veranlasst, einen Fehler zu erkennen.
  • Beispiel 6 beinhaltet das nichtflüchtige computerlesbare Medium, wie in Beispiel 1 definiert, wobei die Anweisungen, wenn sie ausgeführt werden, die Logikschaltung veranlassen, eine virtuelle Partition zu erzeugen, die mit der programmierbaren Netzwerkvorrichtung verbunden ist.
  • Beispiel 7 beinhaltet das nichtflüchtige computerlesbare Medium, wie in Beispiel 6 definiert, wobei die Anweisungen, wenn sie ausgeführt werden, die Logikschaltung veranlassen, Zuständigkeiten einer Partition der programmierbaren Netzwerkvorrichtung auf die virtuelle Partition zu verlagern.
  • Beispiel 8 beinhaltet das nichtflüchtige computerlesbare Medium, wie in Beispiel 7 definiert, wobei die Anweisungen, wenn sie ausgeführt werden, die Logikschaltung veranlassen, Zuständigkeiten der virtuellen Partition auf die Partition der programmierbaren Netzwerkvorrichtung zu verlagern, nachdem die Eingabevariante von der programmierbaren Netzwerkvorrichtung verarbeitet wurde.
  • Beispiel 9 beinhaltet eine Vorrichtung zum Testen eines vernetzten Gerätes, wobei die Vorrichtung eine Schnittstellenschaltung, eine Prozessorschaltung, die mindestens eine Zentraleinheit, eine Grafikverarbeitungseinheit oder einen digitalen Signalprozessor umfasst, wobei die Zentraleinheit, die Grafikverarbeitungseinheit oder der digitale Signalprozessor eine Steuerschaltung zur Steuerung der Datenbewegung innerhalb der Prozessorschaltung aufweist, Arithmetik- und Logikschaltungen zum Ausführen einer oder mehrerer erster Operationen, die Befehlen entsprechen, und ein oder mehrere Register zum Speichern eines Ergebnisses der einen oder mehreren ersten Operationen, der Befehle in der Vorrichtung, ein Field Programmable Gate Array (FPGA), wobei das FPGA Logikgatterschaltungen, eine Vielzahl von konfigurierbaren Verbindungen und Speicherschaltungen enthält, die Logikgatterschaltung und die Verbindungen, um eine oder mehrere zweite Operationen auszuführen, die Speicherschaltung, um ein Ergebnis der einen oder mehreren zweiten Operationen zu speichern, oder eine anwendungsspezifische integrierte Schaltung (ASIC), die eine Logikgatterschaltung enthält, um eine oder mehrere dritte Operationen auszuführen, die Prozessorschaltung, um mindestens eine der ersten Operationen, der zweiten Operationen oder der dritten Operationen auszuführen, um eine Eingangswahlschaltung zu instanziieren, um einen Testparameter auszuwählen, der auf eine programmierbare Netzwerkvorrichtung anzuwenden ist, eine Mutationsgeneratorschaltung, um den Testparameter zu mutieren, um eine Eingabevariante zu bestimmen, die Eingangswahlschaltung, um die Eingabevariante an die programmierbare Netzwerkvorrichtung zu übertragen, und eine Ergebnisanalysatorschaltung, um in Reaktion auf die Bestimmung, dass die Eingabevariante die programmierbare Netzwerkvorrichtung veranlasst, in einen erwarteten Zustand einzutreten, die Eingabevariante zu einem Testsatz hinzuzufügen.
  • Beispiel 10 beinhaltet die in Beispiel 9 definierte Vorrichtung, wobei die Prozessorschaltung ferner dazu dient, eine Richtlinienverarbeitungsschaltung zu instanziieren, um eine Testabdeckung für die programmierbare Netzwerkvorrichtung zu bestimmen.
  • Beispiel 11 beinhaltet die in Beispiel 9 definierte Vorrichtung, wobei die Mutationsgeneratorschaltung eine weitere Eingabevariante auf der Grundlage der Testabdeckung bestimmen soll.
  • Beispiel 12 beinhaltet die in Beispiel 9 definierte Vorrichtung, wobei die Ergebnisanalysatorschaltung die Eingabevariante in einer Testabdeckungsmatrix speichern soll.
  • Beispiel 13 beinhaltet die in Beispiel 9 definierte Vorrichtung, wobei die Ergebnisanalysatorschaltung die Eingabevariante zu dem Testsatz hinzufügen soll, wenn festgestellt wird, dass die Eingabevariante die programmierbare Vorrichtung veranlasst, einen Fehler zu erkennen.
  • Beispiel 14 beinhaltet die in Beispiel 9 definierte Vorrichtung, wobei die Eingangswahlschaltung dazu dient, eine virtuelle Partition zu erzeugen, die der programmierbaren Netzwerkvorrichtung zugeordnet ist.
  • Beispiel 15 beinhaltet die in Beispiel 14 definierte Vorrichtung, wobei die Ergebnisanalysatorschaltung dazu dient, Zuständigkeiten einer Partition der programmierbaren Netzwerkvorrichtung auf die virtuelle Partition zu verlagern.
  • Beispiel 16 beinhaltet die in Beispiel 15 definierte Vorrichtung, wobei die Ergebnisanalysatorschaltung die Zuständigkeiten der virtuellen Partition auf die Partition der programmierbaren Netzwerkvorrichtung verschiebt, nachdem die Eingabevariante von der programmierbaren Netzwerkvorrichtung verarbeitet wurde.
  • Beispiel 17 beinhaltet ein Verfahren zum Testen von vernetzten Komponenten, wobei das Verfahren das Bestimmen einer an eine programmierbare Netzwerkvorrichtung anzulegenden Eingabe, das Fuzzing der Eingabe, um eine Eingabevariante zu bestimmen, das Übertragen der Eingabevariante an die programmierbare Netzwerkvorrichtung und in Reaktion auf die Bestimmung, dass die Eingabevariante die programmierbare Netzwerkvorrichtung veranlasst, in einen erwarteten Zustand einzutreten, das Hinzufügen der Eingabevariante zu einem Testsatz umfasst.
  • Beispiel 18 beinhaltet das in Beispiel 17 definierte Verfahren, das ferner die Bestimmung einer Testabdeckung für die programmierbare Netzwerkvorrichtung umfasst.
  • Beispiel 19 beinhaltet das in Beispiel 17 definierte Verfahren, das ferner die Bestimmung einer weiteren Eingabevariante auf der Grundlage der Testabdeckung umfasst.
  • Beispiel 20 beinhaltet das in Beispiel 17 definierte Verfahren, das ferner das Speichern der Eingabevariante in einer Testabdeckungsmatrix umfasst.
  • Beispiel 21 beinhaltet das in Beispiel 17 definierte Verfahren, das ferner das Hinzufügen der Eingabevariante zu dem Testsatz als Reaktion auf die Feststellung umfasst, dass die Eingabevariante die programmierbare Vorrichtung veranlasst, einen Fehler zu erkennen.
  • Beispiel 22 beinhaltet das in Beispiel 17 definierte Verfahren, das außerdem das Erstellen einer virtuellen Partition umfasst, die mit der programmierbaren Netzwerkvorrichtung verbunden ist.
  • Beispiel 23 beinhaltet das in Beispiel 22 definierte Verfahren, das ferner die Verlagerung von Zuständigkeiten einer Partition der programmierbaren Netzwerkvorrichtung auf die virtuelle Partition umfasst.
  • Beispiel 24 beinhaltet das in Beispiel 23 definierte Verfahren, das ferner die Verlagerung von Zuständigkeiten der virtuellen Partition auf die Partition der programmierbaren Netzwerkvorrichtung umfasst, nachdem die Eingabevariante von der programmierbaren Netzwerkvorrichtung verarbeitet wurde.
  • Obwohl bestimmte beispielhafte System, Verfahren, Vorrichtungen und Herstellungsartikel hierin offenbart worden sind, ist der Umfang der Abdeckung dieses Patents nicht darauf beschränkt. Vielmehr deckt dieses Patent alle System, Verfahren, Vorrichtungen und Herstellungsartikel ab, die ganz in den Umfang der Ansprüche dieses Patents fallen.
  • Die folgenden Ansprüche werden hiermit durch diese Bezugnahme in diese ausführliche Beschreibung aufgenommen, wobei jeder Anspruch für sich allein als eine separate Ausführungsform der vorliegenden Offenbarung steht.

Claims (24)

  1. Nichtflüchtiges computerlesbares Medium, das Befehle enthält, die, wenn sie von einer logischen Schaltung ausgeführt werden, die logische Schaltung zumindest zu Folgendem veranlassen: Bestimmen einer Eingabe, die auf eine programmierbare Netzwerkvorrichtung anzuwenden ist; Mutieren der Eingabe, um eine Eingabevariante zu bestimmen; Übertragen der Eingabevariante an die programmierbare Netzwerkvorrichtung; und als Reaktion auf die Feststellung, dass die Eingabevariante die programmierbare Netzwerkvorrichtung veranlasst, in einen erwarteten Zustand einzutreten, Hinzufügen der Eingabevariante zu einem Testsatz.
  2. Nichtflüchtiges computerlesbares Medium nach Anspruch 1, wobei die Anweisungen, wenn sie ausgeführt werden, die logische Schaltung veranlassen, eine Testabdeckung für die programmierbare Netzwerkvorrichtung zu bestimmen.
  3. Nichtflüchtiges computerlesbares Medium nach einem der vorhergehenden Ansprüche, wobei die Anweisungen, wenn sie ausgeführt werden, die logische Schaltung veranlassen, eine weitere Eingabevariante auf der Grundlage der Testabdeckung zu bestimmen.
  4. Nichtflüchtiges computerlesbares Medium nach einem der vorhergehenden Ansprüche, wobei die Anweisungen, wenn sie ausgeführt werden, die logische Schaltung veranlassen, die Eingabevariante in einer Testabdeckungsmatrix zu speichern.
  5. Nichtflüchtiges computerlesbares Medium, wie in einem der vorhergehenden Ansprüche definiert, wobei die Anweisungen, wenn sie ausgeführt werden, die logische Schaltung veranlassen, die Eingabevariante zu dem Testsatz hinzuzufügen, wenn festgestellt wird, dass die Eingabevariante die programmierbare Vorrichtung veranlasst, einen Fehler zu erkennen.
  6. Nichtflüchtiges computerlesbares Medium, wie in einem der vorhergehenden Ansprüche definiert, wobei die Anweisungen, wenn sie ausgeführt werden, die logische Schaltung veranlassen, eine virtuelle Partition zu erzeugen, die mit der programmierbaren Netzwerkvorrichtung verbunden ist.
  7. Nichtflüchtiges computerlesbares Medium nach Anspruch 6, wobei die Anweisungen, wenn sie ausgeführt werden, die logische Schaltung veranlassen, Zuständigkeiten einer Partition der programmierbaren Netzwerkvorrichtung auf die virtuelle Partition zu verlagern.
  8. Nichtflüchtiges computerlesbares Medium nach Anspruch 7, wobei die Anweisungen, wenn sie ausgeführt werden, die logische Schaltung veranlassen, Zuständigkeiten der virtuellen Partition auf die Partition der programmierbaren Netzwerkvorrichtung zu verlagern, nachdem die Eingabevariante von der programmierbaren Netzwerkvorrichtung verarbeitet wurde.
  9. Vorrichtung zum Testen von vernetzten Geräten, wobei die Vorrichtung Folgendes umfasst: Schnittstellenschaltungen; Prozessorschaltungen mit einem oder mehreren der folgenden Elemente: mindestens eine von einer zentralen Verarbeitungseinheit, einer Grafikverarbeitungseinheit oder einem digitalen Signalprozessor, wobei die mindestens eine von der zentralen Verarbeitungseinheit, der Grafikverarbeitungseinheit oder dem digitalen Signalprozessor eine Steuerschaltung zur Steuerung der Datenbewegung innerhalb der Prozessorschaltung, eine arithmetische und logische Schaltung zur Durchführung einer oder mehrerer erster Operationen, die Befehlen entsprechen, und ein oder mehrere Register zur Speicherung eines Ergebnisses der einen oder mehreren ersten Operationen, der Befehle in der Vorrichtung aufweist; ein Field Programmable Gate Array (FPGA), wobei das FPGA eine Logikgatterschaltung, eine Vielzahl konfigurierbarer Verbindungen und eine Speicherschaltung enthält, wobei die Logikgatterschaltung und die Verbindungen eine oder mehrere zweite Operationen durchführen und die Speicherschaltung ein Ergebnis der einen oder mehreren zweiten Operationen speichert; oder Anwendungsspezifische integrierte Schaltungen (ASIC) mit logischen Gatterschaltungen zur Durchführung einer oder mehrerer dritter Operationen; die Prozessorschaltung, um mindestens eine der ersten Operationen, der zweiten Operationen oder der dritten Operationen zur Instanziierung durchzuführen: Eingangswahlschaltung zur Auswahl eines Testparameters, der auf eine programmierbare Netzwerkvorrichtung anzuwenden ist; Mutationsgeneratorschaltung zum Mutieren des Testparameters, um eine Eingabevariante zu bestimmen, wobei die Eingangswahlschaltung die Eingabevariante an die programmierbare Netzwerkvorrichtung überträgt; und Ergebnisanalysatorschaltung, um als Reaktion auf die Feststellung, dass die Eingangsvariante die programmierbare Netzwerkvorrichtung veranlasst, in einen erwarteten Zustand einzutreten, die Eingangsvariante zu einem Testsatz hinzuzufügen.
  10. Vorrichtung nach Anspruch 9, wobei die Prozessorschaltung ferner eine Richtlinienverarbeitungsschaltung instanziiert, um eine Testabdeckung für die programmierbare Netzwerkvorrichtung zu bestimmen.
  11. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei die Mutationsgeneratorschaltung eine weitere Eingabevariante auf der Grundlage der Testabdeckung bestimmen soll.
  12. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei die Ergebnisanalysatorschaltung die Eingabevariante in einer Testabdeckungsmatrix speichern soll.
  13. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei die Ergebnisanalysatorschaltung die Eingabevariante zu dem Testsatz hinzufügen soll, wenn festgestellt wird, dass die Eingabevariante die programmierbare Vorrichtung veranlasst, einen Fehler zu erkennen.
  14. Vorrichtung nach einem der vorhergehenden Ansprüche, wobei die Eingangswahlschaltung dazu dient, eine virtuelle Partition zu erzeugen, die mit der programmierbaren Netzwerkvorrichtung verbunden ist.
  15. Vorrichtung nach Anspruch 14, wobei die Ergebnisanalysatorschaltung dazu dient, Zuständigkeiten einer Partition der programmierbaren Netzwerkvorrichtung auf die virtuelle Partition zu verlagern.
  16. Vorrichtung nach Anspruch 15, wobei die Ergebnisanalysatorschaltung dazu dient, Zuständigkeiten der virtuellen Partition auf die Partition der programmierbaren Netzwerkeinrichtung zu verlagern, nachdem die Eingabevariante von der programmierbaren Netzwerkeinrichtung verarbeitet wurde.
  17. Verfahren zum Testen vernetzter Komponenten, wobei das Verfahren Folgendes umfasst: Bestimmen einer Eingabe, die auf eine programmierbare Netzwerkvorrichtung anzuwenden ist; Fuzzing der Eingabe, um eine Eingabevariante zu bestimmen; Übertragen der Eingabevariante an die programmierbare Netzwerkvorrichtung; und als Reaktion auf die Feststellung, dass die Eingabevariante die programmierbare Netzwerkvorrichtung in einen erwarteten Zustand versetzt, Hinzufügen der Eingabevariante zu einem Testsatz.
  18. Verfahren nach Anspruch 17, das ferner das Bestimmen einer Testabdeckung für die programmierbare Netzwerkvorrichtung umfasst.
  19. Verfahren nach einem der vorhergehenden Ansprüche, das ferner das Bestimmen einer weiteren Eingabevariante auf der Grundlage der Testabdeckung umfasst.
  20. Verfahren nach einem der vorhergehenden Ansprüche, das ferner das Speichern der Eingabevariante in einer Testabdeckungsmatrix umfasst.
  21. Verfahren nach einem der vorhergehenden Ansprüche, das ferner das Hinzufügen der Eingabevariante zu dem Testsatz als Reaktion auf die Feststellung, dass die Eingabevariante die programmierbare Vorrichtung veranlasst, einen Fehler zu erkennen, umfasst.
  22. Verfahren nach einem der vorhergehenden Ansprüche, das ferner das Erstellen einer virtuellen Partition, die mit der programmierbaren Netzwerkvorrichtung verbunden ist, umfasst.
  23. Verfahren nach Anspruch 22, das ferner die Verlagerung von Zuständigkeiten einer Partition der programmierbaren Netzwerkvorrichtung auf die virtuelle Partition umfasst.
  24. Verfahren nach Anspruch 23, das ferner das Verlagern von Zuständigkeiten der virtuellen Partition auf die Partition der programmierbaren Netzwerkeinrichtung umfasst, nachdem die Eingabevariante von der programmierbaren Netzwerkeinrichtung verarbeitet wurde.
DE102022121192.4A 2021-09-24 2022-08-22 Systeme und verfahren für die prüfung vernetzter geräte Pending DE102022121192A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/485,195 US20220082616A1 (en) 2021-09-24 2021-09-24 Systems and methods for networked device testing
US17/485,195 2021-09-24

Publications (1)

Publication Number Publication Date
DE102022121192A1 true DE102022121192A1 (de) 2023-03-30

Family

ID=80626476

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022121192.4A Pending DE102022121192A1 (de) 2021-09-24 2022-08-22 Systeme und verfahren für die prüfung vernetzter geräte

Country Status (2)

Country Link
US (1) US20220082616A1 (de)
DE (1) DE102022121192A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11770377B1 (en) * 2020-06-29 2023-09-26 Cyral Inc. Non-in line data monitoring and security services
US11822673B2 (en) * 2021-08-05 2023-11-21 International Business Machines Corporation Guided micro-fuzzing through hybrid program analysis
US11729081B2 (en) * 2022-01-20 2023-08-15 International Business Machines Corporation Enhancing software application hosting in a cloud environment
US20240070350A1 (en) * 2022-08-23 2024-02-29 International Business Machines Corporation Workflow simulation with environment simulation
CN115955410B (zh) * 2023-03-13 2023-08-18 国网智联电商有限公司 基于云计算环境的数据可视化建模与匹配方法
CN116467102B (zh) * 2023-05-12 2023-11-14 杭州天卓网络有限公司 一种基于边缘算法的故障检测方法及装置

Also Published As

Publication number Publication date
US20220082616A1 (en) 2022-03-17

Similar Documents

Publication Publication Date Title
DE102021209145A1 (de) Verfahren und vorrichtung zum koordinieren von edge-plattformen
DE102020131613A1 (de) Verfahren, system und produkt zum implementieren von deterministischem on-boarding und planen virtualisierter arbeitslasten für edge-computing.
DE102022121192A1 (de) Systeme und verfahren für die prüfung vernetzter geräte
DE102022203247A1 (de) Disintermedierte Attestierung in einem MEC-Service-MESH-Framework
DE102020128209A1 (de) Automatische Plattformressourcenverwaltung in Edge-Computing-Umgebungen
DE102022212157A1 (de) Absichtsbasierte clusterverwaltung
DE102021209146A1 (de) Adaptive edge-ressourcenverwaltung mit begrenzter dauer
DE112020003742T5 (de) Verfahren, systeme, erzeugnisse und vorrichtungen zur verbesserung von jobplanungseffizienz
CN114253793A (zh) 动态追踪控制
EP4203417A1 (de) Systeme, verfahren, herstellungsartikel und vorrichtung zur end-to-end-hardwareverfolgung in einem edge-netzwerk
DE102021207160A1 (de) Verfahren und einrichtung zur verwaltung der dienstgüte in bezug auf service-level-agreements in einer rechenvorrichtung
DE102022203266A1 (de) Verfahren und einrichtungen zum automatischen aktualisieren von künstliche-intelligenz-modellen für autonome fabriken
DE102022208684A1 (de) Verfahren und einrichtung für resilienz mithilfe digitaler zwillinge
DE102021117809A1 (de) Einrichtungen, Systeme, Fabrikate und Verfahren zur Datenlebenszyklusverwaltung in einer Edge-Umgebung
DE102021211772A1 (de) Verfahren und einrichtung zur ermöglichung von sicherem multikohärentem poolspeicher in einem edge-netzwerk
DE102022203249A1 (de) Mehrfachzugriff-edge-computing- (mec-) fahrzeug-zu-alles-(v2x-) interoperabilitätsunterstützung für mehrere v2x-nachrichtenbroker
DE102021210882A1 (de) Erweitertes peer-to-peer (p2p) mit edge-vernetzung
US20220150125A1 (en) AI Named Function Infrastructure and Methods
DE112020007229T5 (de) Föderiertes mec-framework für kraftfahrzeugdienste
US20220224637A1 (en) Methods and apparatus for traffic control for application-independent service mesh
DE102022121227A1 (de) Dynamische slice-rekonfiguration während fafo(fault-attack-failure-outage)-ereignissen
DE102021209043A1 (de) Methods and apparatus to select a location of execution of a computation
US20220014423A1 (en) Systems, apparatus, and methods for data resiliency in an edge network environment
NL2032817B1 (en) Cross-layer automated fault tracking and anomaly detection
DE102022203111A1 (de) Auf netzwerkfluss basierende hardwarezuweisung