DE102021109468A1 - Hardware beschleuniger mit analog-inhaltlichem adressierbarem speicher (a-cam) für entscheidungsbaumrechnung - Google Patents

Hardware beschleuniger mit analog-inhaltlichem adressierbarem speicher (a-cam) für entscheidungsbaumrechnung Download PDF

Info

Publication number
DE102021109468A1
DE102021109468A1 DE102021109468.2A DE102021109468A DE102021109468A1 DE 102021109468 A1 DE102021109468 A1 DE 102021109468A1 DE 102021109468 A DE102021109468 A DE 102021109468A DE 102021109468 A1 DE102021109468 A1 DE 102021109468A1
Authority
DE
Germany
Prior art keywords
cam
decision tree
feature
path
nodes
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
DE102021109468.2A
Other languages
English (en)
Inventor
Catherine Graves
Can Li
Kivanc Ozonat
John Paul Strachan
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE102021109468A1 publication Critical patent/DE102021109468A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • G11C15/046Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements using non-volatile storage elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/243Classification techniques relating to the number of classes
    • G06F18/24323Tree-organised classifiers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/06Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using single-aperture storage elements, e.g. ring core; using multi-aperture plates in which each individual aperture forms a storage element
    • G11C11/06007Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using single-aperture storage elements, e.g. ring core; using multi-aperture plates in which each individual aperture forms a storage element using a single aperture or single magnetic closed circuit
    • G11C11/06014Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using single-aperture storage elements, e.g. ring core; using multi-aperture plates in which each individual aperture forms a storage element using a single aperture or single magnetic closed circuit using one such element per bit
    • G11C11/0605Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using single-aperture storage elements, e.g. ring core; using multi-aperture plates in which each individual aperture forms a storage element using a single aperture or single magnetic closed circuit using one such element per bit with non-destructive read-out
    • G11C11/06057Matrixes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/412Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger using field-effect transistors only
    • G11C11/4125Cells incorporating circuit means for protecting against loss of information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die hier beschriebenen Beispiele beziehen sich auf ein System zur Entscheidungsbaumberechnung, in dem ein Hardware-Beschleuniger für einen Entscheidungsbaum in Form eines analogen, inhaltsadressierbaren Speicherarrays (a-CAM) implementiert ist. Der Hardware-Beschleuniger greift auf einen Entscheidungsbaum zu. Der Entscheidungsbaum besteht aus mehreren Pfaden und jeder Pfad der mehreren Pfade enthält einen Satz von Knoten. Jeder Knoten des Entscheidungsbaums ist mit einer Merkmalsvariablen von mehreren Merkmalsvariablen des Entscheidungsbaums verbunden. Der Hardware-Beschleuniger kombiniert mehrere Knoten aus der Menge der Knoten mit einer gleichen Merkmalsvariablen zu einem kombinierten Einzelknoten. Platzhalterwerte werden für Merkmalsvariablen, die nicht in jedem Pfad ausgewertet werden, ersetzt. Jeder kombinierte Einzelknoten, der mit jeder Merkmalsvariablen verbunden ist, wird auf eine entsprechende Spalte im a-CAM-Array und die mehreren Pfade des Entscheidungsbaums auf Zeilen des a-CAM-Arrays abgebildet.

Description

  • HINTERGRUND
  • Ein inhaltsadressierbarer Speicher („CAM“) ist eine Art von Rechenspeicher, bei dem der Zugriff auf die gespeicherten Daten nicht über den Speicherort, sondern über den Inhalt erfolgt. Ein „Wort“ oder „Tag“ wird in das CAM eingegeben, das CAM sucht nach dem Tag in seinem Inhalt und wenn es gefunden wird, gibt das CAM die Adresse des Ortes zurück, an dem sich der gefundene Inhalt befindet.
  • Die Hardware des CAM unterstützt den Vergleich eines Eingangsmusters mit den in den CAM-Zellen gespeicherten Daten. Der Speicher, der die Daten im CAM speichert, führt auch die Such- oder Vergleichsoperation an der gleichen Stelle durch, wodurch der teure Datentransfer zwischen verschiedenen Einheiten in herkömmlicher Hardware entfällt.
  • Figurenliste
  • Die Zeichnungen enthalten Beispiele und/oder Implementierungen, die mit der Beschreibung übereinstimmen; die Beschreibung ist jedoch nicht auf die in den Zeichnungen enthaltenen Beispiele und/oder Implementierungen beschränkt.
    • 1 veranschaulicht ein System zur Berechnung von Entscheidungsbäumen gemäß den Beispielen der vorliegenden Offenbarung.
    • 2 zeigt ein Beispiel für einen Entscheidungsbaum gemäß Beispielen der vorliegenden Offenlegung.
    • 3 zeigt eine Neuformulierung des Entscheidungsbaums von 2, gemäß Beispielen der vorliegenden Offenbarung.
    • 4 zeigt ein analoges, inhaltsadressierbares Speicher-Array (a-CAM), das für die Implementierung des Entscheidungsbaums von 3 verwendet wird, in Übereinstimmung mit Beispielen der vorliegenden Offenbarung.
    • 5 ist ein beispielhaftes Flussdiagramm, das ein Verfahren zur Implementierung eines Entscheidungsbaums im a-CAM-Speicherarray gemäß den Beispielen der vorliegenden Offenbarung darstellt.
    • 6 ist ein Flussdiagramm, das ein Verfahren zur Verarbeitung einer Abfrage unter Verwendung des a-CAM-Speicherarrays gemäß den Beispielen der vorliegenden Offenbarung darstellt.
    • 7 zeigt eine Beispiel-Rechenumgebung, die ein nicht-transitorisches computerlesbares Medium gemäß einem Beispiel der vorliegenden Offenbarung implementiert.
  • DETAILLIERTE BESCHREIBUNG
  • Die folgende detaillierte Beschreibung bezieht sich auf die beigefügten Zeichnungen. Wo immer es möglich ist, werden in den Zeichnungen und der folgenden Beschreibung ähnliche Bezugszeichen verwendet, um auf gleiche oder ähnliche Teile zu verweisen. Es ist jedoch ausdrücklich zu verstehen, dass die Zeichnungen nur der Veranschaulichung und Beschreibung dienen. Obwohl in diesem Dokument mehrere Beispiele beschrieben sind, sind Modifikationen, Anpassungen und andere Implementierungen möglich. Im Interesse der Übersichtlichkeit werden in dieser Spezifikation nicht alle Merkmale einer tatsächlichen Implementierung beschrieben. Bei der Entwicklung einer solchen konkreten Implementierung können zahlreiche implementierungsspezifische Entscheidungen getroffen werden, um die spezifischen Ziele der Entwickler zu erreichen, wie z. B. die Einhaltung systembezogener und geschäftsbezogener Einschränkungen, die von einer Implementierung zur anderen variieren werden. Darüber hinaus wird man verstehen, dass ein solcher Entwicklungsaufwand, auch wenn er komplex und zeitaufwendig ist, für Fachleute, die über die Vorteile dieser Offenbarung verfügen, ein Routineunterfangen ist. Dementsprechend schränkt die folgende detaillierte Beschreibung die offenbarten Beispiele nicht ein. Stattdessen kann der richtige Umfang der offengelegten Beispiele durch die beigefügten Ansprüche definiert werden.
  • Die hier verwendete Terminologie dient nur zur Beschreibung von Ausführungsbeispielen und ist nicht als einschränkend zu verstehen. Die hier verwendeten Singularformen „ein“, „eins“ und „die“ schließen auch die Pluralformen ein, sofern aus dem Kontext nicht eindeutig etwas anderes hervorgeht. Der hier verwendete Begriff „Mehrzahl“ ist definiert als zwei oder mehr als zwei. Wie hierin verwendet, bedeutet der Begriff „umfasst“ einschließlich, aber nicht beschränkt auf, der Begriff „einschließlich“ bedeutet einschließlich, aber nicht beschränkt auf. Der Begriff „basierend auf“ bedeutet zumindest teilweise basierend auf.
  • Ansätze des maschinellen Lernens erfordern in einigen Anwendungen Domänenwissen und historisches Fachwissen. Beispiele für solche Bereiche sind die Verfolgung mehrerer Ziele bei der Überwachung, Robotik, Cybersecurity-Systeme, Entscheidungsfindung, situative Intelligenz mit multimodalen Eingaben (Medizin, autonome Fahrsysteme), globale Systemmodellierung (Grundwassermodelle, intelligente Fabriken, Roboter-/AUV-Flotteneinsätze) für Risiko-/Fehlerbewertungen und vorausschauende Wartung. Die Implementierung eines neuronalen Netzwerks für diese Anwendungen kann schwierig sein, da die Trainingsdaten in diesen Bereichen begrenzt sein können und diese Bereiche eine kritische Entscheidungsfindung erfordern. Mit zunehmender Rechenleistung, die das Training von baumbasierten Ensemble-Methoden ermöglicht, können verschiedene Anwendungen Ensemble-Modelle für die Entscheidungsfindung verwenden.
  • Ensemble-Baummodelle sind ein Ansatz des maschinellen Lernens für Klassifizierungs-, Vorhersage-, Regressions- und Empfehlungsaufgaben in verschiedenen Anwendungen. Die baumbasierten Ensemble-Modelle sind einfach zu trainieren, arbeiten gut mit kleineren Datensätzen und können fehlende Daten berücksichtigen. Darüber hinaus kann das Ensemble-Baum-basierte Modell eine vernünftige Interpretierbarkeit für Domänenexperten beibehalten, um es zu überprüfen und zu verstehen. Ein digitaler inhaltsadressierbarer Speicher (CAM), wie hier beschrieben, wird mit statischen Random-Access-Memory-Zellen (SRAM) oder Memristor-basierten Technologien implementiert. Während der Suche nach einem Eingabemuster können SRAM-Zellen parallel betrieben werden, was zu einem massiven Durchsatz bei Anwendungen in der Echtzeitüberwachung des Netzwerkverkehrs, Zugriffskontrolllisten („ACL“), Assoziativspeichern usw. führt. Die Ensemble-Baum-basierten Modelle, die CAMs verwenden, haben mehrere Vorteile für Klassifizierung und Regression in verschiedenen realen Anwendungen, aber die Modelle können schwierig für eine schnelle Laufzeit ohne Genauigkeitsverlust in Standard-SRAM- und Memristor-basierten Technologien zu optimieren sein. Darüber hinaus können die CAM-Zellen (In-SRAM-Hardware) unter hohem Stromverbrauch, großem Flächenbedarf und hohen Kosten leiden. Wenn Entscheidungsbäume mit kürzeren oder weniger Bäumen implementiert werden, kann die Genauigkeit des Entscheidungsbaums beeinträchtigt werden. Bei einigen realen Anwendungen kann jedoch ein Bereich von Werten als Übereinstimmung für ein Eingabemuster angesehen werden. In einigen Beispielimplementierungen kann eine größere Anzahl von CAM-Zellen verwendet werden, um eine digitale CAM für einen Wertebereich zu implementieren, was zu einem größeren Ressourcenverbrauch führen kann. Zum Beispiel kann eine Hardware-Implementierung zur Beschleunigung der Entscheidungsbaum-Inferenz unter Verwendung von Field Programmable Gate Arrays (FPGA) unter hohem Stromverbrauch und minimalen Leistungsverbesserungen leiden.
  • Eine analoge CAM („a-CAM“) Array-Schaltung sucht mehrstufige Spannungen und speichert analoge Werte in einem nichtflüchtigen Speicher (z. B. Memristor). Jede analoge Zelle kann einen Bereich von Werten speichern. Daher kann jede analoge Zelle eine Funktion implementieren, die mehreren digitalen CAM-Zellen entspricht, was bei der Implementierung bestimmter CAM-basierter Funktionen zu erheblichen Vorteilen in Bezug auf Fläche und Energieeinsparung führt. Die a-CAM-Schaltung kann mit mehrstufigen digitalen Standardwerten oder direkt mit analogen Signalen angesteuert werden, was zusätzliches Potenzial für eine erhöhte Funktionalität bietet und die Notwendigkeit einer teuren Analog-Digital-Wandlung überflüssig macht. Insbesondere gibt jede a-CAM-Zelle eine Übereinstimmung aus, wenn eine analoge Eingangsspannung mit einem bestimmten Bereich übereinstimmt, der für die entsprechende a-CAM-Zelle definiert ist.
  • Die hier beschriebenen Beispiele können sich auf ein System zur Entscheidungsbaumberechnung beziehen, bei dem ein Entscheidungsbaum in einem analogen, inhaltsadressierbaren Speicher-Array (a-CAM) für ein System zur Entscheidungsbaumberechnung unter Verwendung eines Hardware-Beschleunigers implementiert wird. Der Hardware-Beschleuniger greift auf einen in dem a-CAM-Array zu implementierenden Entscheidungsbaum zu. Der Entscheidungsbaum kann mehrere Pfade enthalten und jeder Pfad der mehreren Pfade kann einen Satz von Knoten enthalten. Jeder Knoten des Entscheidungsbaums kann mit einer Merkmalsvariablen von mehreren Merkmalsvariablen des Entscheidungsbaums verknüpft sein. Für jeden Pfad kann der Hardware-Beschleuniger mehrere Knoten in der Menge der Knoten, die die gleiche Merkmalsvariable haben, zu einem kombinierten Einzelknoten zusammenfassen. In jedem Pfad werden Merkmalsvariablen, die in der Knotenmenge von nicht ausgewertet werden, durch einen Platzhalterwert ersetzt. Die mehrfachen Merkmalsvariablen werden auf Spalten des a-CAM-Arrays abgebildet und die mehrfachen Pfade des Entscheidungsbaums werden auf Zeilen des a-CAM-Arrays abgebildet.
  • 1 zeigt ein System zur Entscheidungsbaumberechnung 100. Das Entscheidungsbaum-Berechnungssystem 100 umfasst einen Prozessor 102, einen Hardware-Beschleuniger 106, einen Entscheidungsbaum 104, ein maschinenlesbares Medium 108, ein-CAM-Array 110 und einen Speicher 112. Der Prozessor 102 kann als ein oder mehrere Mikroprozessoren, Mikrocomputer, Mikrocontroller, digitale Signalprozessoren, zentrale Verarbeitungseinheiten, Zustandsmaschinen, logische Schaltungen und/oder beliebige Geräte, die Signale auf der Grundlage von Betriebsanweisungen manipulieren, implementiert sein.
  • Der Entscheidungsbaum 104 kann in dem Speicher 112 gespeichert werden. In einer alternativen Implementierung kann der Entscheidungsbaum 104 in einem Hauptspeicher (nicht dargestellt) des Entscheidungsbaumberechnungssystems 100 gespeichert sein. Der Entscheidungsbaum 104 kann von dem Entscheidungsbaumberechnungssystem 100 von einem externen Server oder einem System empfangen werden. In einer alternativen Implementierung kann der Entscheidungsbaum 104 von einem Compiler (nicht gezeigt) generiert werden, der im Entscheidungsbaumberechnungssystem 100 vorhanden ist. Die Entscheidungsbäume für die Implementierung können Ensemble-Baum-basierte Klassifikatoren umfassen, einschließlich Random Forests (RF), Extreme Gradient Boost Trees usw. Der Entscheidungsbaum 104 kann mit einer realen Anwendung verbunden sein, die Klassifizierungsmerkmale hat, die analog oder mit geringer Genauigkeit sind. Entscheidungsbäume 104 können Modelle sein, die zur Vorhersage von Ereignisergebnissen in realen Anwendungen verwendet werden. Zum Beispiel können Entscheidungsbaummodelle mit der Vorhersage eines Waldbrandes durch Auswertung von Temperatur und Windgeschwindigkeit verbunden sein. In einem anderen Beispiel können Daten, die sich auf eine Person beziehen, einschließlich Alter/Bildung/Einkommen einer Person, mit einem Entscheidungsbaummodell für die Kreditwürdigkeitsprüfung ausgewertet werden.
  • Der Hardware-Beschleuniger 106 kann so konfiguriert sein, dass er Befehle (d. h. Programmier- oder Softwarecode) ausführt, die in dem maschinenlesbaren Medium 108 gespeichert sind, um die Funktionen des Entscheidungsbaum-Berechnungssystems 100, wie hier beschrieben, durchzuführen. In einer Beispielimplementierung kann der beispielhafte Hardware-Beschleuniger 106 mehrere integrierte Schaltungen enthalten, wie die beispielhaften integrierten Schaltungen. Die integrierten Schaltkreise können anwendungsspezifische integrierte Schaltkreise (ASICs), Field Programmable Gate Arrays (FPGAs) oder andere Very Large Scale Integrated Circuits (VLSIs) umfassen. Die integrierten Schaltkreise des beispielhaften Hardware-Beschleunigers 106 können speziell optimiert sein, um eine diskrete Teilmenge von Computerverarbeitungsoperationen durchzuführen oder eine diskrete Teilmenge von computerausführbaren Befehlen in einer beschleunigten Weise auszuführen. In 1 kann der beispielhafte Hardware-Beschleuniger 106 so konfiguriert oder hergestellt werden, dass der Entscheidungsbaum 104 auf einem CAM-Array 110 im Speicher 112 implementiert wird.
  • Das a-CAM-Array 110 ist für den Entscheidungsbaum 104 im Speicher 112 unter Verwendung des Hardware-Beschleunigers 106 implementiert. Der Speicher 112 ist ein nichtflüchtiger Speicher, der mit Technologien aufgebaut ist, die z. B. einen resistiven Schaltspeicher (d. h. Memristor), einen Phasenwechselspeicher, einen magnetoresistiven Speicher, einen ferroelektrischen Speicher, eine andere resistive Direktzugriffsspeichereinrichtung (Re-RAM) oder Kombinationen dieser Technologien umfassen. CAM-Zellen können in Technologien implementiert werden, die es ermöglichen, dass das CAM seinen Inhalt auch dann behält, wenn die Stromversorgung unterbrochen oder anderweitig entfernt wird. Somit bleiben die Daten eines CAMs „bestehen“ und können als sogenannter „nichtflüchtiger Speicher“ fungieren.
  • Das a-CAM-Array 110 ist eine dedizierte Hardware, auf der der Entscheidungsbaum 104 implementiert ist. Das a-CAM-Array 110 ist eine Sammlung von a-CAM-Zellen, die Informationen des Entscheidungsbaums 104 speichern. Das a-CAM-Array 110 wird nach der Umformulierung des Entscheidungsbaums 104 implementiert. Die Umformulierung stellt sicher, dass die Speicherdichte hoch und der vom a-CAM-Array 110 für die Aufnahme der Informationen des Entscheidungsbaums 104 verwendete Bereich minimal ist. Detailliertere Informationen zur Umformulierung des Entscheidungsbaums 104 und zur Implementierung des a-CAM-Arrays 110 sind in den 4, 5 und 6 in der nachfolgenden Beschreibung dargestellt.
  • Obwohl das Entscheidungsbaum-Berechnungssystem 100 als eigenständiges System gezeigt wurde, sollte verstanden werden, dass das Entscheidungsbaum-Berechnungssystem 100 Teil eines Internet-of-Things (IoT)-Geräts oder eines beliebigen Rechengeräts sein kann, das mit einem Host über Netzwerkgeräte kommuniziert.
  • 2 zeigt ein Beispiel eines Entscheidungsbaums 200, gemäß Beispielen der vorliegenden Offenbarung. Der Entscheidungsbaum 200 besteht aus einem Wurzelknoten 202, Zweigen 204, 206, 208, 210, 212, 214; und Blattknoten mit Klassifizierungsergebnissen (Klasse 0, Klasse 1, Klasse 2 und Klasse 3). Der Entscheidungsbaum 200 wird von oben nach unten durchlaufen. Der Entscheidungsbaum 200 hat mehrere Pfade, und jeder Pfad umfasst einen Satz von Knoten, der mit dem Wurzelknoten 202 beginnt und den Baum 200 nach unten durchläuft, bis ein Blattknoten erreicht wird. Jeder Knoten enthält einen binären Schwellenwert einer einzelnen Merkmalsvariablen, nach dem die zu analysierenden Eingabedaten ausgewertet werden, um zu bestimmen, ob nach rechts oder links verzweigt werden soll, wenn man die Baumstruktur abwärts geht. In einigen Fällen kann jeder Knoten mehrere Schwellenwerte für eine Merkmalsvariable enthalten. Ein Merkmalsvektor besteht aus Merkmalsvariablen 216 (f1, f2, f3 und f4) der Daten, die zur Klassifizierung der Daten ausgewertet werden. An jedem Knoten werden die Eingangsdaten mit der Merkmalsvariablen des Knotens mit einem vordefinierten Schwellwert verglichen. Basierend auf diesem Vergleich wird der als nächstes auszuwertende Knoten im Entscheidungsbaum 200 ausgewählt. Beispielsweise kann eine Auswertung am Knoten 202 zu einer Weiterführung zum Verzweigungsknoten 204 oder zum Verzweigungsknoten 206 führen. So werden, beginnend am Ursprung 202 und fortfahrend bis zum Erreichen eines Blattknotens, an jedem Verzweigungsknoten Eingabedaten ausgewertet, die sich auf Merkmalsvariablen 216 beziehen, und zum entsprechenden Folgeknoten weitergeführt. Jeder Blattknoten repräsentiert eine Datenklasse/Klassifikation oder ein Merkmal. Durch Traversieren des Entscheidungsbaums 200 vom Ursprungsknoten zu einem Blattknoten kann eine Bestimmung einer Klasse oder eines Merkmals der Eingabedaten vorgenommen werden. Der Zugriff auf den Entscheidungsbaum 200 erfolgt durch den Hardware-Beschleuniger 106 aus einem Hauptspeicher (in 1 nicht dargestellt) des Entscheidungsbaum-Berechnungssystems 100. In einigen Ausführungsformen kann das Entscheidungsbaum-Berechnungssystem 100 auf den Entscheidungsbaum 200 von einem Server oder einem anderen Gerät zur Erzeugung von Entscheidungsbäumen zugreifen. Die Länge der einzelnen Pfade im Entscheidungsbaum und die Anzahl der Knoten in jedem Pfad können auf den Benutzerpräferenzen während der Konfiguration eines Entscheidungsbaums basieren. Die Anzahl der Knoten in jedem Pfad (Tiefe des Entscheidungsbaums) und die Anzahl der zu bewertenden Merkmalsvariablen können auf den zu klassifizierenden Daten basieren. Obwohl 2 der Übersichtlichkeit halber einen einfachen Entscheidungsbaum mit drei Knoten in jedem Pfad, vier Merkmalsvariablen und acht Entscheidungspfaden (Bäumen) zeigt, ist zu beachten, dass Entscheidungsbäume eine wesentlich höhere Anzahl von Knoten, Merkmalsvariablen und Entscheidungspfaden haben können. Zum Beispiel kann eine Objektverfolgungsanwendung einen Entscheidungsbaum mit 1.000-20.000 Pfaden, 4-64 Knoten in jedem Pfad und 100-1.000 Merkmalsvariablen verwenden. Der Entscheidungsbaum kann 100.000 bis 20 Millionen Knoten haben.
  • 3 zeigt eine Neuformulierung des Entscheidungsbaums 200 aus 2 gemäß Beispielen der vorliegenden Offenbarung. Jeder Pfad (Wurzel- zu Blattpfad) für den Entscheidungsbaum 200 entspricht einer Kette von Knoten. Zum Beispiel kann die in 2 gezeigte Kette von Knoten 202, 206, 214 und 216 als ein erster Pfad oder ein erster Baum im Entscheidungsbaum 200 betrachtet werden. In 3 ist 302 ein einzelner Pfad des Entscheidungsbaums 200. Wenn dieselbe Merkmalsvariable (z. B. f1) in mehreren Knoten eines einzelnen Pfades vorhanden ist, werden die beiden Schwellenwertregeln für die Knoten, die dieselbe Merkmalsvariable auswerten, zu einem einzigen Knoten zusammengefasst. Knotenmerkmalwerte (auch als Merkmalsschwellwertregeln bezeichnet), die mit demselben Merkmal verknüpft sind, können kombiniert werden. Dieser Kombinationsschritt wird für jede der Merkmalsvariablen in jedem Pfad des Entscheidungsbaums 200 durchgeführt. In 2 gibt es z. B. einen Pfad, in dem die Merkmalsvariable f1 mit zwei Knotenschwellenwerten (f1 <0,2 und f1 <0,5) im Wurzel-Blatt-Pfad in der fünften Spalte dargestellt ist. Diese beiden Schwellenwerte von f1 können zu einem einzigen Knoten (0,2 <= f1 < 0,5) kombiniert werden, wie in Pfad 304 in 3 angegeben. Der einzelne Knoten entspricht einem Bereich von Werten einer Merkmalsvariablen f1 in der Menge der Knoten eines Pfades des Entscheidungsbaums 200.
  • Bezug nehmend auf 1 kann der Hardware-Beschleuniger 106 die Menge der Knoten in jedem Pfad der mehreren Pfade neu anordnen. Durch die Neuordnung der Knotenmenge in jedem Pfad werden die Entscheidungsknoten des Entscheidungsbaums 300 mit mehreren Merkmalsvariablen in jedem Pfad in der gleichen Reihenfolge angeordnet. Die neu geordneten Mehrfach-Merkmalsvariablen in der Menge der Knoten in jedem Pfad entsprechen einer Reihenfolge der Mehrfach-Merkmalsvariablen, die dem a-CAM-Array 110 zugeordnet sind. In 3 zeigt jede Spalte, dass die mehrfachen Merkmalsvariablen in der gleichen Reihenfolge ausgewertet werden. Zum Beispiel umfasst im Pfad 302 die Reihenfolge der ausgewerteten Merkmalsvariablen f1, gefolgt von f2, f3 und f4. Im Pfad 304 umfasst die Reihenfolge der ausgewerteten Merkmalsvariablen die Merkmalsvariablen f1, gefolgt von f2, f3 und f4.
  • In einigen Beispielimplementierungen kann der Hardware-Beschleuniger 106 einen Platzhalterwert für eine Merkmalsvariable ersetzen, die in der Menge der Knoten an jedem Pfad des Entscheidungsbaums 200 nicht ausgewertet wird. Der Platzhalter kann als „don't care“ bezeichnet werden und wird durch ein „X“ dargestellt. Bei der Suche nach einem Eingabemuster im a-CAM-Array 400 wird jede Zelle mit „X“ eine Übereinstimmung liefern. In 3 zeigt ein X einen „don't care“-Knoten für Merkmalsvariablen an, die in den Pfaden des Entscheidungsbaums 200 nicht ausgewertet werden. So wird z. B. im ersten Pfad (erste Spalte von 3) die Merkmalsvariable f3 nicht ausgewertet und wurde durch ein „X“ ersetzt. Durch die Ersetzung des Platzhalters für nicht ausgewertete Merkmalsvariablen und die Neuordnung der Knotenmenge in jedem Pfad kann der umformulierte Entscheidungsbaum 300 direkt auf das a-CAM-Array 400 abgebildet werden.
  • 4 zeigt das a-CAM-Array 400, das für die Implementierung des umformulierten Entscheidungsbaums 300 von 3 gemäß den Beispielen der vorliegenden Offenbarung verwendet wird.
  • Eine analoge CAM-Zelle kann eine Funktion implementieren, die mehreren digitalen CAM-Zellen entspricht, was bei der Implementierung bestimmter CAM-basierter Funktionen zu erheblichen Vorteilen bei der Flächen- und Leistungseinsparung führt. Im Gegensatz zu digitalen CAMs, bei denen die Speicherung eines Wertebereichs mehrere CAM-Zellen erfordert, kann jede a-CAM-Zelle im a-CAM-Array 400 einem Wertebereich zugeordnet werden. Jede a-CAM-Zellenschaltung kodiert eine untere und obere Grenze eines gespeicherten Wertes oder Bereichs unter Verwendung des Memristorleitwerts. Die a-CAM-Zelle zeigt eine „Übereinstimmung“ nur an, wenn der Suchwert innerhalb des programmierten Bereichs der a-CAM-Zelle liegt.
  • Daher kann eine CAM-Zelle verwendet werden, um mehrere diskrete Pegel zu speichern und kann ein direkter funktionaler Ersatz für mehrere digitale Ternary-CAM-Zellen (TCAM) sein (z. B. kann eine a-CAM-Zelle acht diskrete Pegel speichern) oder beliebige Bereiche von kontinuierlichen Werten. Das a-CAM-Array 400 umfasst mehrere a-CAM-Zellen. Das a-CAM-Array 400 ermöglicht die Programmierung von Multilevel-Spannungen und speichert analoge Werte in einem nichtflüchtigen Speicher (z. B. Memristor). Die a-CAM-Schaltung kann mit Standard-Multipegel-Digitalwerten oder direkt mit Analogsignalen angesteuert werden, was zusätzliches Potenzial für eine erhöhte Funktionalität bietet und gleichzeitig die Notwendigkeit einer teuren Analog-Digital-Wandlung (A/D) beseitigt. Insbesondere gibt die a-CAM-Zelle eine Übereinstimmung aus, wenn die analoge Eingangsspannung einem bestimmten Bereich entspricht, der für die a-CAM-Zelle vordefiniert ist.
  • Die Kette aus mehreren Merkmalsvariablenknoten jedes Pfades des Entscheidungsbaums 300 wird auf Spalten des a-CAM-Arrays 400 abgebildet. In einer Beispielimplementierung ist jede Spalte des a-CAM-Arrays 400 mit einer anderen Merkmalsvariablen des Entscheidungsbaums 300 verknüpft. Zum Beispiel sind in 4 die vier Spalten des a-CAM-Arrays 400 mit mehreren Merkmalsvariablen f1, f2, f3 und f4 verknüpft. In einer anderen Beispielimplementierung können je nach größerer Genauigkeit für einen bestimmten Merkmalsvektor mehrere Spalten des a-CAM-Arrays auf eine einzige Merkmalsvariable abgebildet werden.
  • Der Hardware-Beschleuniger 106 kann jeden Wurzel-Blatt-Pfad des Entscheidungsbaums 300 auf eine Zeile des a-CAM-Arrays 400 abbilden. Jeder Knoten, der eine Merkmalsvariable in jedem Pfad des Entscheidungsbaums 300 auswertet, kann Eingaben von einer entsprechenden Datenzeile des a-CAM-Arrays 400 erhalten. Jede a-CAM-Zelle in einer Zeile kann einem Knoten eines bestimmten Pfades entsprechen und kann mit einer Merkmalsvariablen assoziiert sein. Außerdem kann jede a-CAM-Zelle einen analogen Wert oder einen analogen Bereich speichern, der mit der Merkmalsschwelle des Knotens verbunden ist. In einigen Beispielen kann der Wertebereich ein Bereich von kontinuierlichen Werten sein.
  • Die in den a-CAM-Zellen gespeicherten Daten können abgefragt werden, z. B. über die Datenleitungen DL1-DL4. Obwohl es sich bei dem in 4 gezeigten a-CAM-Array 400 um ein beispielhaftes 4 x 8-Array handelt, können je nach Datensatz und Genauigkeitsanforderungen des Entscheidungsbaums auch unterschiedlich große a-CAM-Arrays 400 verwendet werden. In einigen Beispielen kann die Genauigkeit eines Entscheidungsbaums durch Hinzufügen weiterer Merkmalsvariablen oder durch Erhöhung der Anzahl der Pfade erhöht werden.
  • Die Breite des a-CAM-Arrays kann erweitert werden, um zusätzliche Merkmalsvariablen unterzubringen. Die Höhe des a-CAM-Arrays kann erweitert werden, um zusätzliche Pfade des Entscheidungsbaums aufnehmen zu können. In einigen Fällen basiert die Genauigkeit des Entscheidungsbaums auf der Genauigkeit der Merkmalsvariablen. Zum Beispiel können bestimmte Merkmalsvariablen eine höhere Präzision erfordern. Zum Beispiel kann f1 eine höhere Präzision erfordern und 3 Spalten eines 3-Bit-CAMs benötigen. f2 kann binär sein und f5 kann fünf Werte haben, die auf ein 3-Bit-CAM abgebildet werden.
  • In einigen Fällen können mehrere a-CAM-Arrays 400 kombiniert werden, um eine große Entscheidung zu ermöglichen. Die Größe des a-CAM-Arrays 400 kann auf der Anzahl der Pfade, Merkmale und der erforderlichen Genauigkeit basieren. Ein Entscheidungsbaum zur Identifizierung von Verkehrsschildern kann z. B. 2.000 Knoten mit 64 Pfaden und 256 Merkmalen enthalten. Jeder Pfad ist auf 6 Merkmale begrenzt. Zur Umsetzung dieses Entscheidungsbaummodells können 25 einzelne a-CAM-Arrays (Größe 50 x 400) kombiniert werden.
  • Jedes a-CAM-Array 400 besteht aus a-CAM-Zellen (Speicherzellen) mit mindestens einer dreipoligen Speichervorrichtung. Die Dreipol-Speichereinrichtung kann eine nichtflüchtige Speichereinrichtung sein, die ein Feldeffekttransistor (FET) sein kann, wie z. B. ein ferroelektrischer Feldeffekttransistor (FeFET). Das a-CAM-Array 400 sucht in dem nichtflüchtigen Speicher nach mehrstufigen Spannungen und gespeicherten Analogwerten. Eine analoge Zelle kann eine Funktion implementieren, die mehreren digitalen CAM-Zellen entspricht, was zu erheblichen Vorteilen bei der Flächen- und Leistungseinsparung führt.
  • In einer Beispielimplementierung kann das a-CAM-Array 400 mit mehrstufigen digitalen Standardwerten oder direkt mit analogen Signalen angesteuert werden, was zusätzliches Potenzial für erhöhte Funktionalität bietet, während die Notwendigkeit einer teuren Analog-Digital-Wandlung entfällt. Dies bietet zusätzliches Potenzial für eine erhöhte Funktionalität, wenn die Notwendigkeit einer teuren Analog-Digital-Wandlung entfällt. Wenn die a-CAM-Zelle eine elektronische Schaltung auf Memristor-Basis enthält, kann die Leistungseinsparung signifikant sein und erlaubt den a-CAM-Zellen, verallgemeinerte Berechnungen und andere neuartige Anwendungsszenarien durchzuführen.
  • In einer Beispielimplementierung kann das a-CAM-Array 400 mit nichtflüchtigen Resistive-Random-Access-Memory-Zellen (Re-RAM) in einem Re-RAM-Array 402 kombiniert werden. Diese Art der Implementierung reduziert die vom a-CAM-Array 400 verbrauchte Gesamtleistung. Im Vergleich zu rein digitalen SRAMbasierten Schaltungen, die in digitalen CAMs verwendet werden, können mit der in 4 beschriebenen Implementierung größere Entscheidungsbäume mit höherer Leistungseinsparung in der Hardware realisiert werden. Darüber hinaus kann das analoge CAM-Array als Ersatz für ein digitales CAM verwendet werden, um relativ höhere Speicherdichten und eine geringere Leistungsaufnahme zu erreichen. Anwendungen, die eine Entscheidungslogik verwenden, können eine ähnliche Architektur wie das Beispiel des a-CAM-Arrays 400 für die Verarbeitung nutzen, um einen relativ geringeren Stromverbrauch und eine höhere Speicherdichte zu erreichen.
  • 5 ist ein beispielhaftes Flussdiagramm, in dem ein Verfahren 500 zur Implementierung eines Entscheidungsbaums 300 im a-CAM-Speicherarray 400 dargestellt ist. In einigen Implementierungen können ein oder mehrere Blöcke des Verfahrens 500 im Wesentlichen gleichzeitig oder in einer anderen Reihenfolge als dargestellt ausgeführt werden. In einigen Implementierungen kann ein Verfahren mehr oder weniger Blöcke als dargestellt enthalten. In einigen Implementierungen können Blöcke des Verfahrens 500 kombiniert werden. Das in 5 gezeigte Verfahren 500 kann in Form von ausführbaren Anweisungen, die auf einem maschinenlesbaren Medium 108 gespeichert sind und von einer Verarbeitungsressource (z. B. wie dem Hardware-Beschleuniger 106) ausgeführt werden, und/oder in Form von elektronischen Schaltungen implementiert werden. In einigen Implementierungen kann das Verfahren 500 durch den Prozessor 102 des Entscheidungsbaum-Berechnungssystems 100 ausgeführt werden.
  • In Block 502 kann der Hardware-Beschleuniger 106 unter Bezugnahme auf das Entscheidungsbaum-Berechnungssystem 100 von 1 auf einen Entscheidungsbaum, z. B. den Entscheidungsbaum 200, aus dem Speicher 112 zugreifen. In einer Beispielimplementierung kann der Entscheidungsbaum 200 von einer externen Rechenvorrichtung empfangen und im Speicher 112 des Entscheidungsbaumberechnungssystems 100 gespeichert werden. Der Entscheidungsbaum 200 kann mehrere Pfade haben und jeder Pfad kann einen Satz von Knoten haben. An jedem Knoten kann eine Merkmalsvariable des Entscheidungsbaums 200 basierend auf einem vordefinierten Wert für die Merkmalsvariable in dem Knoten eines Pfades ausgewertet werden. Der Entscheidungsbaum 200 kann mehrere Merkmalsvariablen haben.
  • In einer Beispielimplementierung kann das Entscheidungsbaumberechnungssystem 100 einen vorkonfigurierten Entscheidungsbaum 104 für reale Anwendungen haben. Zu den Beispielanwendungen aus der realen Welt können alle Anwendungen gehören, die eine Entscheidungslogik verwenden, z.B. Waldbrandvorhersage, Kreditwürdigkeitsprüfung, medizinische Diagnose, usw. Die Entscheidungsbäume, die mit diesen realen Anwendungen verbunden sind, können gut ohne Normalisierung der Merkmalswerte funktionieren, da das erforderliche Genauigkeitsniveau nicht so hoch sein kann. Darüber hinaus kann der Entscheidungsbaum 104 die Ersetzung fehlender Daten mithilfe von Platzhaltern ermöglichen, verschiedene Arten von Merkmalsvariablen behandeln und resistent gegen Überanpassung sein.
  • In Block 504 kann die Menge der Knoten in jedem Pfad neu geordnet werden, um die mehreren Merkmalsvariablen zu organisieren, die mit der Menge der Knoten des Entscheidungsbaums 200 verbunden sind. Die neu geordneten Mehrfachvariablen-Entscheidungsknoten in jedem Pfad entsprechen einer Sequenz der Merkmalsvariable, die dem a-CAM-Array 400 zugeordnet ist. Diese Art der Neuordnung ermöglicht die parallele Verarbeitung jeder Zeile des a-CAM-Arrays 400, da die den Knoten in jedem Pfad zugeordneten Merkmale für jeden Pfad des Entscheidungsbaums in der gleichen Reihenfolge angeordnet werden können. Außerdem kann jeder Merkmalsvariablenwert aus jedem eingehenden Merkmalsvektor parallel entlang der a-CAM-Zellen in einer Spalte ausgewertet und klassifiziert werden, indem jeder Entscheidungsbaumpfad parallel durchlaufen wird.
  • In Block 506 können mehrere Merkmalsschwellenwerte, die mit einer Bruchvariablen aus der Menge der Knoten in jedem Pfad verbunden sind, zu einem einzigen Knoten kombiniert werden. Diese Kombination mehrerer Knoten wird durchgeführt, wenn ein und dasselbe Merkmal an mehreren Knoten eines einzelnen Pfades ausgewertet wird. Der kombinierte Einzelknoten wird berechnet, indem die Merkmalsschwellenwerte der Merkmalsvariablen an den mehreren Knoten, die innerhalb eines einzelnen Pfades kombiniert werden, kombiniert werden. Dieser Kombinationsschritt wird für jeden Pfad des Entscheidungsbaums 200 durchgeführt. Durch diesen Kombinationsschritt werden die für die Implementierung des Entscheidungsbaums 300 erforderlichen a-CAM-Zellen im a-CAM-Array 400 reduziert.
  • In Block 508 kann ein Platzhalterwert (X) für ein nicht ausgewertetes Merkmal in der Menge der Knoten in jedem Pfad des Entscheidungsbaums 200 eingesetzt werden. Die Platzhalterwerte zeigen an, dass die Eingabe immer als Übereinstimmung für eine a-CAM-Zelle betrachtet wird, wenn das „don't care“ in der a-CAM-Zelle implementiert ist. Wenn in der a-CAM-Zelle der Bereich der maximalen Programmierspannung zwischen Vmin und Vmax liegt, wird die a-CAM-Zelle als Speicherung einer „don't care“-Bedingung betrachtet, die durch einen Wert „X“ dargestellt wird.
  • In Block 510 kann jeder der kombinierten Einzelknoten, der einer Merkmalsvariablen zugeordnet ist, auf eine entsprechende Spalte des a-CAM-Arrays 400 abgebildet werden. Die kombinierten Merkmalsschwellenwerte des Entscheidungsbaums 300 in Form von kombinierten Einzelknoten werden auf die entsprechende Spalte des a-CAM-Arrays 400 abgebildet. Jede a-CAM-Zelle im a-CAM-Array 400 ist so konfiguriert, dass sie einen Analogwert oder einen Analogbereich speichert, der einer Merkmalsvariablen des Entscheidungsbaums 300 zugeordnet ist. Jede a-CAM-Zelle in einer Spalte des a-CAM-Arrays 400 ist mit einer einzelnen Merkmalsvariablen verbunden. In einigen Beispielen kann jede a-CAM-Zelle in einer bestimmten Spalte des a-CAM-Arrays 400 mit der gleichen Merkmalsvariablen verknüpft sein. In 4 entspricht jede a-CAM-Zelle in der ersten Spalte des a-CAM-Arrays 400 dem Merkmalswert der Merkmalsvariablen f1 in einem entsprechenden Pfad des Entscheidungsbaums 300.
  • Der in jeder a-CAM-Zelle zu speichernde Analogwert oder Analogbereich wird über die Datenleitung (DL) der entsprechenden Spalte empfangen. Der Analogbereich kann ein kontinuierliches Intervall mit einer unteren Grenze und einem oberen Band sein. Der Analogbereich jeder a-CAM-Zelle stellt einen akzeptablen Bereich für eine Übereinstimmung im Knoten des Entscheidungsbaums 300 dar. Der analoge Bereich stellt den Merkmalsschwellenwert einer Merkmalsvariablen dar, die mit dem Knoten des Entscheidungsbaums 300 verbunden ist. Jeder Wert zwischen einer „hohen Spannungsgrenze“ und einer „niedrigen Spannungsgrenze“ oder innerhalb eines Bereichs kann als Übereinstimmung mit einem Eingangswert betrachtet werden. Diese hohen und niedrigen Werte werden durch die Programmierung der dreipoligen Speicherbausteine der a-CAM-Zelle festgelegt, die hier als Vhigh und Vlow bezeichnet werden können. Vhigh und Vlow legen die Grenzen des Wertebereichs fest, der in der Zelle gespeichert werden kann, so dass die Zelle analoge Werte speichern kann. Eine Speicherzelle in a-CAM kann jeden Wert zwischen dem durch Vhigh definierten Wert und dem durch Vlow definierten Wert speichern. Wenn Vhigh=Vmax, wobei Vmax die maximale programmierbare Spannung eines dreipoligen Speicherbausteins ist, und Vlow=Vmin, wobei Vmin die minimale programmierbare Spannung eines dreipoligen Speicherbausteins ist, dann kann der gespeicherte Wert als „X“ dargestellt werden.
  • Darüber hinaus ist jede Spalte des a-CAM-Arrays 400 so konfiguriert, dass sie einen Eingangswert empfängt, der mit einer abgebildeten Merkmalsvariablen verknüpft ist. Der Eingangswert ist ein analoger Spannungseingang, der über die Datenleitungen zu den a-CAM-Zellen in der Spalte des a-CAM-Arrays 400 empfangen wird. Der Eingangswert kann auf eine an die Datenleitungen angelegte Spannungsamplitude abgebildet werden.
  • In Block 512 umfasst das Verfahren 500 die Abbildung der mehreren Pfade des Entscheidungsbaums auf Zeilen des a-CAM-Arrays. Jeder Wurzel-Blatt-Pfad des Entscheidungsbaums 300 mit einem entsprechenden Satz von Knoten wird auf entsprechende Zeilen des a-CAM-Arrays 400 abgebildet. Jeder Knoten eines Pfades ist mit einer einzelnen a-CAM-Zelle in der Zeile verbunden. Die in Block 510 und 512 ausgeführten Schritte können kombiniert und gleichzeitig ausgeführt werden.
  • Das Hinzufügen weiterer Zeilen und Spalten zum a-CAM-Array 400 kann die Genauigkeit der durch den Entscheidungsbaum gelieferten Klassifizierung und die Genauigkeit der Merkmalsvariablen erhöhen. Darüber hinaus können große Entscheidungsbäume unter Verwendung mehrerer a-CAM-Arrays 400 eingebunden werden. Die Erweiterung des a-CAM-Arrays 400 in der Breite mit zusätzlichen Spalten kann es ermöglichen, dass Merkmalsvariablen, die eine höhere Präzision erfordern, auf mehrere zusätzliche Spalten abgebildet werden. Die Erweiterung des a-CAM-Arrays 400 in der Höhe kann es ermöglichen, Entscheidungsbäume mit einer großen Anzahl von Verzweigungen unter Verwendung mehrerer a-CAM-Arrays zu implementieren.
  • 6 ist ein beispielhaftes Flussdiagramm, das ein Verfahren 600 zur Verarbeitung einer Abfrage unter Verwendung des a-CAM-Speicherarrays 400 gemäß den Beispielen der vorliegenden Offenbarung darstellt. In einigen Implementierungen können ein oder mehrere Blöcke des Verfahrens 600 im Wesentlichen gleichzeitig ausgeführt werden. In einigen Implementierungen kann ein Verfahren mehr oder weniger Blöcke enthalten, als dargestellt sind. In einigen Implementierungen können Blöcke des Verfahrens 600 kombiniert werden. Das in 6 gezeigte Verfahren 600 wird von dem a-CAM-Array 400 ausgeführt, wenn ein Eingangsmuster mit einem Satz von Eingangswerten zur Klassifizierung empfangen wird.
  • In Block 602 kann das a-CAM-Array 400 ein Eingabemuster mit einem Satz von Eingabewerten in einer Suchanfrage empfangen. Jeder Eingangswert kann einer einzelnen Merkmalsvariablen zugeordnet sein, die auf eine entsprechende Spalte des a-CAM-Arrays 400 abgebildet wird. Jeder Eingangswert kann eine analoge Eingangsspannung oder ein digitaler Wert sein.
  • In einer Beispielimplementierung können die a-CAM-Zellen im a-CAM-Array 400 einzeln über die Datenleitungen (DL) durchsuchbar sein. Jeder Eingangswert in der Menge der Eingangswerte ist mit einer Merkmalsvariablen eines Merkmalsvektors verknüpft und die a-CAM-Zellen in einer Spalte des a-CAM-Arrays 400 können mit derselben Merkmalsvariablen verknüpft sein.. Die analogen Eingangsmuster, die dem Satz von Eingangswerten entsprechen, werden über eine Vielzahl von Datenleitungen in das a-CAM-Array 400 geladen. In einigen Beispielen wird anstelle einer Vielzahl von Datenleitungen eine Vielzahl von Suchleitungen verwendet. Jede a-CAM-Zelle empfängt den Eingangswert über ihre entsprechende Datenleitung.
  • Insbesondere gibt jede CAM-Zelle eine Übereinstimmung aus, wenn die analoge Eingangsspannung mit einem bestimmten Bereich übereinstimmt, der von der a-CAM-Zelle definiert wird. Jede a-CAM-Zelle führt zwei analoge Vergleiche durch: ‚größer als‘ und ‚kleiner als‘. ' Bei jeder CAM-Zelle wird eine Eingangsdatenleitungsspannung mit zwei verschiedenen Analogwerten gleichzeitig verglichen. Eine große Anzahl von Eingangswerten kann in einer einzigen a-CAM-Zelle untergebracht werden, indem der Wert für die zulässige Spannung mit ‚größer als‘ und ‚kleiner als‘ festgelegt wird. Diese Art von analogen Vergleichen in einer einzigen a-CAM-Zelle kann die Verarbeitungszeit und den Energieverbrauch im Vergleich zu einem digitalen CAM erheblich reduzieren.
  • In Block 604 kann ein Satz von a-CAM-Zellen in jeder Reihe des a-CAM-Arrays 400 identifiziert werden, in denen der Eingangswert innerhalb des zulässigen Bereichs einer entsprechenden a-CAM-Zelle liegt. In 4 zum Beispiel hat die erste Reihe des a-CAM-Arrays 400 vier a-CAM-Zellen, die analoge Bereiche speichern, die jeweils den Merkmalsvariablen f1, f2, f3 und f4 zugeordnet sind.
  • In Block 606 umfasst das Verfahren 600 das Bestimmen von Ergebnissen der Suchabfrage für jede Abfrage basierend auf der Identifizierung des Satzes der a-CAM-Zellen in jeder Zeile. Die Ergebnisse aus jeder Zeile werden in einem Re-RAM-Array gespeichert. Die Ergebnisse der Klassifizierung aus jeder Zeile sind über die Vergleichszeile (ML1-8) vorhanden. Die Vergleichsergebnisse bestehen aus einer Übereinstimmung oder einer Nichtübereinstimmung. Das Ergebnis besteht aus einer Übereinstimmung, wenn die Menge der Eingangswerte in die akzeptablen Bereiche der entsprechenden a-CAM-Zellen in der entsprechenden Zeile des a-CAM-Arrays 400 fällt. Im Falle einer Übereinstimmung bleibt die Übereinstimmungslinie (ML) der entsprechenden Zeile hoch geladen.
  • In Beispiel 4 werden die Eingänge für die Merkmalsvariablen (f1, f2, f3 und f4) über die Datenleitungen (DL1 bis DL4) empfangen. Der Satz von Eingangswerten, der an jeder Spalte des a-CAM-Arrays 400 empfangen wird, ist oben in jeder Spalte in BILD.4 dargestellt (f1=0,3, f2=0,0, f3=0,5 und f4=0,75.) Diese Eingangswerte können auf Spannungen abgebildet und entlang der Datenleitungen angelegt werden. Betrachtet man die erste Zeile im a-CAM-Array 400 und die empfangenen Eingangswerte für jede Merkmalsvariable der Merkmalsvariablen, so kann man feststellen, dass in der ersten a-CAM-Zelle der akzeptable Bereich f1<0,2 ist. Der an den ersten a-CAM-Zellen empfangene Eingangswert (f1 =0,3) liegt nicht innerhalb des akzeptablen Bereichs der ersten a-CAM-Zelle. Die zu f2, f3 und f4 gehörenden Eingangswerte liegen jedoch innerhalb des zulässigen Bereichs der zweiten, dritten und vierten a-CAM-Zelle der ersten Reihe. Der an der a-CAM-Zelle empfangene Eingangswert wird mit dem gespeicherten zulässigen Bereich der a-CAM-Zelle verglichen. In Beispiel 4 fallen die an den a-CAM-Zellen der siebten Reihe des Arrays empfangenen Eingangswerte (f1, f2, f3 und f4) in den in den a-CAM-Zellen gespeicherten akzeptablen Bereich, und das Ergebnis zeigt eine Übereinstimmung in der Übereinstimmungszeile 402 an. Das Klassifizierungsergebnis 402 (Klasse 2) wird als ein Ausgang des a-CAM-Arrays 400 im Entscheidungsbaum-Berechnungssystem 100 bereitgestellt.
  • Die Klassifizierungsergebnisse können in einem einzigen Zyklus durch eine schnelle, stromsparende Anpassung der Eingangswerte (analog oder digital) erzeugt werden. Wenn das a-CAM-Array 400 mit einer Memristor-basierten Schaltung implementiert wird, können zudem die Betriebsenergie und die benötigte Fläche weiter minimiert werden.
  • 7 zeigt ein Beispielsystem 700, das ein nicht-transitorisches, maschinenlesbares Medium 704 gemäß den Beispielen der vorliegenden Offenbarung implementiert. Das maschinenlesbare Speichermedium 704 kann von einem Rechnersystem, wie dem System 700, verwendet werden. In einer Implementierung kann das System 700 den Hardware-Beschleuniger 702 enthalten, der kommunikativ mit dem maschinenlesbaren Speichermedium 704 verbunden ist. Das maschinenlesbare Speichermedium 704 kann z. B. ein internes Speichergerät sein. In einer Implementierung enthält das maschinenlesbare Speichermedium 704 einen Satz von computerlesbaren Anweisungen, wie z. B. Anweisungen, die dem Hardware-Beschleuniger 702 entsprechen. Auf den Satz von Anweisungen (706, 708, 710, 712, 714 und 716) kann durch den Hardware-Beschleuniger 702 zugegriffen werden und er kann zur Implementierung des a-CAM-Arrays 400 im Speicher des Systems 100 ausgeführt werden.
  • Beispielsweise veranlassen die Anweisungen bei der Ausführung in Block 706 den Hardware-Beschleuniger 702, auf einen Entscheidungsbaum zuzugreifen, wobei der Entscheidungsbaum mehrere Pfade enthält. Jeder Pfad der mehreren Pfade besteht aus einem Satz von Knoten. An jedem Knoten wird eine Merkmalsvariable eines Merkmalsvektors unter Verwendung eines für den Knoten vordefinierten Merkmalsschwellenwerts bewertet.
  • In Block 708 veranlassen die ausgeführten Befehle den Hardware-Beschleuniger 702, die Menge der Knoten in jedem gegebenen Pfad neu anzuordnen, um die mehreren Merkmalsvariablen des Entscheidungsbaums für jeden gegebenen Pfad in der gleichen Reihenfolge zu organisieren. Die Merkmalsvariablen werden in jedem Pfad in der gleichen Reihenfolge angeordnet.
  • In Block 710 veranlassen die ausgeführten Befehle den Hardware-Beschleuniger 702, für jeden gegebenen Pfad der mehreren Pfade mehrere Knoten aus dem Satz von Knoten mit einer gleichen Merkmalsvariablen zu einem kombinierten Einzelknoten zu kombinieren. Der Kombinationsschritt wird ausgeführt, um mehrere Merkmalsschwellenwerte, die mit einer Bruchvariablen aus der Menge der Knoten in jedem Pfad verbunden sind, zu einem kombinierten Einzelknoten zu kombinieren.
  • In Block 712 veranlassen die Anweisungen bei ihrer Ausführung den Hardware-Beschleuniger 702, einen Platzhalterwert für eine Merkmalsvariable zu ersetzen, die in der Menge der Knoten jedes gegebenen Pfades im Entscheidungsbaum nicht ausgewertet wird.
  • In Block 714 veranlassen die Anweisungen bei ihrer Ausführung den Hardware-Beschleuniger 702, die mehreren Merkmalsvariablen auf Spalten des a-CAM-Arrays abzubilden.
  • In Block 716 veranlassen die Anweisungen bei ihrer Ausführung den Hardware-Beschleuniger 702, die mehreren Pfade des Entscheidungsbaums auf Zeilen des a-CAM-Arrays abzubilden.
  • In der vorstehenden Beschreibung sind zahlreiche Details aufgeführt, um ein Verständnis des hier offengelegten Gegenstands zu ermöglichen. Die Implementierung kann jedoch auch ohne einige oder alle dieser Details durchgeführt werden. Andere Implementierungen können Modifikationen, Kombinationen und Variationen der oben beschriebenen Details umfassen. Es ist beabsichtigt, dass die folgenden Ansprüche solche Modifikationen und Variationen abdecken.

Claims (20)

  1. Ein Verfahren zur Entscheidungsbaumberechnung, wobei das Verfahren umfasst: Zugreifen auf einen Entscheidungsbaum durch einen Hardware-Beschleuniger, wobei der Entscheidungsbaum mehrere Pfade umfasst und jeder Pfad der mehreren Pfade einen Satz von Knoten umfasst, und wobei jeder Knoten des Satzes von Knoten mit einer Merkmalsvariablen von mehreren Merkmalsvariablen in dem Entscheidungsbaum verbunden ist; Kombinieren, durch den Hardware-Beschleuniger, für jeden Pfad der mehreren Pfade, mehrerer Knoten unter dem Satz von Knoten mit einer gleichen Merkmalsvariablen zu einem kombinierten Einzelknoten, und wobei jeder kombinierte Einzelknoten mit einer Merkmalsvariablen der mehreren Merkmalsvariablen verbunden ist; Ersetzen eines Platzhalterwertes für eine nicht ausgewertete Merkmalsvariable in der Menge der Knoten jedes Pfades der mehreren Pfade im Entscheidungsbaumpfad durch den Hardwarebeschleuniger; Abbilden jedes kombinierten Einzelknotens, der mit jeder Merkmalsvariablen von mehreren Merkmalsvariablen in jedem Pfad assoziiert ist, durch den Hardware-Beschleuniger auf eine entsprechende Spalte eines analogen inhaltsadressierbaren Speicherarrays (a-CAM), wobei das a-CAM-Array aus a-CAM-Zellen besteht und wobei jede a-CAM-Zelle mindestens einen analogen Bereich oder einen analogen Schwellenwert speichert, der mit einer gegebenen Merkmalsvariablen der mehreren Merkmalsvariablen assoziiert ist, und wobei die gegebene Merkmalsvariable mit der Merkmalsvariablen übereinstimmt, die auf eine entsprechende Spalte des a-CAM-Arrays abgebildet ist; und Abbilden der mehreren Pfade des Entscheidungsbaums durch den Hardware-Beschleuniger auf Zeilen des a-CAM-Arrays, wobei jeder Pfad der mehreren Pfade einen Wurzel-zu-Blatt-Pfad umfasst, der dem Satz von Knoten zugeordnet ist, und wobei jeder Wurzel-zu-Blatt-Pfad auf eine entsprechende Zeile des a-CAM-Arrays abgebildet wird.
  2. Verfahren nach Anspruch 1, wobei das Kombinieren mehrerer Knoten aus dem Satz von Knoten mit einer gleichen Merkmalsvariablen zu einem kombinierten Einzelknoten das Kombinieren mehrerer Merkmalsschwellenwerte, die mit mindestens einer Merkmalsvariablen der mehreren Merkmalsvariablen über den Satz von Knoten in jedem Pfad verbunden sind, für jeden Pfad der mehreren Pfade in dem Entscheidungsbaum zu einem kombinierten Einzelknoten umfasst.
  3. Verfahren nach Anspruch 1, wobei das Verfahren vor dem Abbilden jedes kombinierten Einzelknotens, der mit jeder Merkmalsvariablen von mehreren Merkmalsvariablen verknüpft ist, auf eine entsprechende Spalte des a-CAM-Arrays das Umordnen des Satzes von Knoten in jedem Pfad umfasst, wobei das Umordnen des Satzes von Knoten die mehreren Merkmalsvariablen des Entscheidungsbaums in derselben Reihenfolge für jeden Pfad organisiert, und wobei die umgeordneten mehreren Merkmalsvariablen, die mit einem Satz von Knoten in jedem Pfad verknüpft sind, einer Sequenz von Merkmalsvariablen entsprechen, die auf Spalten des a-CAM-Arrays abgebildet werden.
  4. Verfahren nach Anspruch 1, wobei jeder gespeicherte Analogbereich in jeder a-CAM-Zelle ein kontinuierliches Intervall mit einer unteren Grenze und einer oberen Grenze umfasst, die einen Akzeptanzbereich für eine Übereinstimmung darstellen, wobei jeder gespeicherte Analogbereich der a-CAM-Zelle ein Merkmalsschwellenwert einer Merkmalsvariablen ist.
  5. Verfahren nach Anspruch 4, wobei jeder gespeicherte analoge Bereich in jeder a-CAM-Zelle jeder Zeile in dem a-CAM-Array ein akzeptabler Bereich ist, der einer Merkmalsvariablen zugeordnet ist, die einem gegebenen Knoten der Menge von Knoten in jedem Pfad der mehreren Pfade des Entscheidungsbaums zugeordnet ist, und wobei jeder Merkmalsvariablen mindestens einer von einem binären Schwellenwert oder mehreren Schwellenwerten an dem gegebenen Knoten zugeordnet ist.
  6. Das Verfahren nach Anspruch 1, wobei das Verfahren ferner umfasst: Empfangen eines Satzes von Eingabewerten in einer Suchabfrage am a-CAM-Array, wobei jeder gegebene Eingabewert des Satzes von Eingabewerten mit einer kombinierten Merkmalsvariablen verknüpft ist, die auf eine gegebene Spalte der Spalten des a-CAM-Arrays abgebildet ist; Identifizieren eines Satzes von a-CAM-Zellen in jeder Zeile des a-CAM-Arrays, in dem der gegebene Eingangswert in den akzeptablen Bereich einer entsprechenden a-CAM-Zelle fällt; und als Reaktion auf die Identifizierung des Satzes von a-CAM-Zellen, Ermitteln von Ergebnissen der Suchanfrage für jede Zeile des a-CAM-Arrays.
  7. Verfahren nach Anspruch 6, wobei ein Ergebnis der Suchabfrage eine Übereinstimmung umfasst, wenn der Satz von Eingabewerten in die akzeptablen Bereiche von entsprechenden a-CAM-Zellen in einer einzelnen Zeile des a-CAM-Arrays fällt.
  8. Verfahren nach Anspruch 6, wobei das Identifizieren eines Satzes von a-CAM-Zellen in jeder Zeile des a-CAM-Arrays, in dem die gegebenen Eingangswerte in den akzeptablen Bereich einer entsprechenden a-CAM-Zelle fallen, das Vergleichen des an a-CAM-Zellen empfangenen Eingangswerts mit dem in den a-CAM-Zellen gespeicherten analogen Bereich umfasst, wobei jede a-CAM-Zelle den Eingangswert von einer entsprechenden Datenleitung des a-CAM-Arrays empfängt.
  9. Ein System zur Implementierung eines Entscheidungsbaums, das Folgendes umfasst: einen Hardware-Beschleuniger; ein maschinenlesbares Medium, das Befehle speichert, die, wenn sie von dem Hardware-Beschleuniger ausgeführt werden, den Hardware-Beschleuniger veranlassen,: auf einen Entscheidungsbaum zuzugreifen, wobei der Entscheidungsbaum aus mehreren Pfaden besteht und jeder Pfad der mehreren Pfade aus einem Satz von Knoten besteht, und wobei jeder Knoten des Satzes von Knoten mit einer Merkmalsvariablen von mehreren Merkmalsvariablen in dem Entscheidungsbaum verbunden ist; für jeden Pfad der mehreren Pfade mehrere Knoten aus dem Satz von Knoten mit einer gleichen Merkmalsvariablen zu einem kombinierten Einzelknoten zu kombinieren, und wobei jeder kombinierte Einzelknoten mit einer Merkmalsvariablen der mehreren Merkmalsvariablen verknüpft ist; einen Platzhalterwert für eine nicht ausgewertete Merkmalsvariable in der Menge der Knoten des jeweiligen Pfades der Mehrfachpfade im Entscheidungsbaum zu ersetzen; Abbilden jedes kombinierten Einzelknotens, der mit jeder Merkmalsvariablen der mehreren Merkmalsvariablen in jedem Pfad verbunden ist, auf eine entsprechende Spalte eines analogen inhaltsadressierbaren Speicherarrays (a-CAM-Array), wobei das a-CAM-Array aus a-CAM-Zellen besteht und wobei jede a-CAM-Zelle mindestens einen analogen Bereich oder einen analogen Schwellenwert speichert, der mit einer gegebenen Merkmalsvariablen der mehreren Merkmalsvariablen verbunden ist, und wobei die gegebene Merkmalsvariable mit der Merkmalsvariablen übereinstimmt, die auf eine entsprechende Spalte des a-CAM-Arrays abgebildet wird; und Abbilden der mehrfachen Pfade des Entscheidungsbaums auf Zeilen des a-CAM-Arrays, wobei jeder Pfad der mehrfachen Pfade aus einem Wurzel-zu-Blatt-Pfad besteht, der mit dem Satz von Knoten verbunden ist, und wobei jeder Wurzel-zu-Blatt-Pfad jedes Pfads auf eine entsprechende Zeile des a-CAM-Arrays abgebildet wird.
  10. System nach Anspruch 9, wobei die a-Cam-Zellen aus einer Memristor-basierten a-CAM-Schaltung bestehen.
  11. System nach Anspruch 9, wobei der Hardware-Beschleuniger ferner so konfiguriert ist, dass er für jeden Pfad der mehreren Pfade im Entscheidungsbaum mehrere Merkmalsschwellenwerte, die mit mindestens einer Merkmalsvariablen der mehreren Merkmalsvariablen über den Satz von Knoten in jedem Pfad verbunden sind, zu einem kombinierten einzelnen Knoten kombiniert.
  12. System nach Anspruch 9, wobei der Hardware-Beschleuniger vor dem Abbilden jedes kombinierten Einzelknotens, der mit jeder Merkmalsvariablen von mehreren Merkmalsvariablen verbunden ist, auf eine entsprechende Spalte des a-CAM-Arrays konfiguriert ist, um: Umordnen des Satzes von Knoten in jedem Pfad der mehreren Pfade, wobei das Umordnen des Satzes von Knoten die mehreren Merkmalsvariablen des Entscheidungsbaums in einer gleichen Reihenfolge für jeden Pfad organisiert, und wobei die umgeordneten mehreren Merkmalsvariablen, die einem Satz von Knoten in jedem Pfad zugeordnet sind, einer Sequenz mehrerer Merkmalsvariablen entsprechen, die auf Spalten des a-CAM-Arrays abgebildet sind.
  13. System nach Anspruch 9, wobei jeder gespeicherte Analogbereich in jeder a-CAM-Zelle ein kontinuierliches Intervall mit einer unteren Grenze und einer oberen Grenze umfasst, die einen Akzeptanzbereich für eine Übereinstimmung darstellen, wobei jeder gespeicherte Analogbereich einer a-CAM-Zelle ein Merkmalsschwellenwert einer Merkmalsvariablen ist.
  14. System nach Anspruch 13, wobei jeder gespeicherte analoge Bereich in jeder a-CAM-Zelle jeder Zeile in dem a-CAM-Array ein akzeptabler Bereich ist, der einer Merkmalsvariablen eines gegebenen Knotens der Menge von Knoten in jedem Pfad der mehreren Pfade des Entscheidungsbaums zugeordnet ist, wobei jeder Merkmalsvariablen mindestens einer von einem binären Schwellenwert oder mehreren Schwellenwerten an dem gegebenen Knoten zugeordnet ist.
  15. Das System nach Anspruch 9, wobei das a-CAM-Array so konfiguriert ist, dass es: einen Satz von Eingabewerten in einer Suchabfrage empfangen, wobei jeder gegebene Eingabewert des Satzes von Eingabewerten mit einer kombinierten Merkmalsvariablen verknüpft ist, die auf eine gegebene Spalte der Spalten des a-CAM-Arrays abgebildet ist; Identifizieren eines Satzes von a-CAM-Zellen in jeder Zeile des a-CAM-Arrays, in dem die gegebenen Eingangswerte in den akzeptablen Bereich einer entsprechenden a-CAM-Zelle fallen; und als Reaktion auf die Identifizierung des Satzes von a-CAM-Zellen Ergebnisse der Suchabfrage für jede Zeile des a-CAM-Arrays bestimmen.
  16. System nach Anspruch 15, wobei die Ergebnisse der Suchabfrage eine Übereinstimmung umfassen, wenn der Satz von Eingabewerten in die akzeptablen Bereiche von entsprechenden a-CAM-Zellen in einer einzelnen Zeile des a-CAM-Arrays fällt, und wobei die Ergebnisse der Suchabfrage aus jeder Zeile in einem Re-RAM-Array in einem nichtflüchtigen Speicher gespeichert werden.
  17. Ein Hardware-Beschleunigersystem, das einen Entscheidungsbaum implementiert, umfassend: ein analoges Content Addressable Memory (a-CAM) Array; ein maschinenlesbares Medium, das Befehle speichert, die, wenn sie von dem a-CAM-Array ausgeführt werden, das a-CAM-Array dazu veranlassen: einen Satz von Eingabewerten in einer Suchabfrage zu empfangen, wobei jeder gegebene Eingabewert des Satzes von Eingabewerten mit einer Merkmalsvariablen verknüpft ist, die auf eine gegebene Spalte von Spalten des a-CAM-Arrays abgebildet ist; Identifizieren eines Satzes von a-CAM-Zellen in jeder Zeile des a-CAM-Arrays, in dem die gegebenen Eingangswerte in den akzeptablen Bereich einer entsprechenden a-CAM-Zelle fallen; und als Reaktion auf die Identifizierung des Satzes von a-CAM-Zellen Ergebnisse der Suchabfrage für jede Zeile des a-CAM-Arrays zu bestimmen.
  18. Hardware-Beschleunigersystem nach Anspruch 17, wobei die Ergebnisse der Suchabfrage eine Übereinstimmung umfassen, wenn der Satz von Eingabewerten in die akzeptablen Bereiche von entsprechenden a-CAM-Zellen in einer einzelnen Zeile des a-CAM-Arrays fällt.
  19. Hardwarebeschleunigersystem nach Anspruch 17, wobei die Ergebnisse der Suchanfrage aus jeder Zeile des a-CAM-Arrays in einem Re-RAM-Array in einem nichtflüchtigen Speicher gespeichert werden.
  20. Das Hardware-Beschleunigersystem nach Anspruch 17, wobei jede a-CAM-Zelle den Eingangswert von einer entsprechenden Datenleitung des a-CAM-Arrays empfängt.
DE102021109468.2A 2020-10-15 2021-04-15 Hardware beschleuniger mit analog-inhaltlichem adressierbarem speicher (a-cam) für entscheidungsbaumrechnung Pending DE102021109468A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/071,924 2020-10-15
US17/071,924 US11615827B2 (en) 2020-10-15 2020-10-15 Hardware accelerator with analog-content addressable memory (a-CAM) for decision tree computation

Publications (1)

Publication Number Publication Date
DE102021109468A1 true DE102021109468A1 (de) 2022-04-21

Family

ID=80929616

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021109468.2A Pending DE102021109468A1 (de) 2020-10-15 2021-04-15 Hardware beschleuniger mit analog-inhaltlichem adressierbarem speicher (a-cam) für entscheidungsbaumrechnung

Country Status (3)

Country Link
US (1) US11615827B2 (de)
CN (1) CN114372496B (de)
DE (1) DE102021109468A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10998047B1 (en) 2020-01-15 2021-05-04 Hewlett Packard Enterprise Development Lp Methods and systems for an analog CAM with fuzzy search
US11615827B2 (en) * 2020-10-15 2023-03-28 Hewlett Packard Enterprise Development Lp Hardware accelerator with analog-content addressable memory (a-CAM) for decision tree computation
US11561607B2 (en) * 2020-10-30 2023-01-24 Hewlett Packard Enterprise Development Lp Accelerating constrained, flexible, and optimizable rule look-ups in hardware
TWI806642B (zh) * 2022-06-02 2023-06-21 旺宏電子股份有限公司 類比內容定址記憶體裝置、類比內容定址記憶體晶胞及其資料搜尋比對方法
US11790243B1 (en) * 2022-06-30 2023-10-17 International Business Machines Corporation Ferroelectric field effect transistor for implementation of decision tree

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6208542B1 (en) 1998-06-30 2001-03-27 Sandisk Corporation Techniques for storing digital data in an analog or multilevel memory
CA2273665A1 (en) 1999-06-07 2000-12-07 Mosaid Technologies Incorporated Differential sensing amplifier for content addressable memory
US6288922B1 (en) 2000-08-11 2001-09-11 Silicon Access Networks, Inc. Structure and method of an encoded ternary content addressable memory (CAM) cell for low-power compare operation
US7050317B1 (en) 2002-03-15 2006-05-23 Integrated Device Technology, Inc. Content addressable memory (CAM) devices that support power saving longest prefix match operations and methods of operating same
US6985372B1 (en) * 2002-04-23 2006-01-10 Alta Analog, Inc. Analog content addressable memory (CAM) employing analog nonvolatile storage
US7272684B1 (en) 2002-06-26 2007-09-18 Netlogic Microsystems, Inc. Range compare circuit for search engine
US7206212B1 (en) 2002-08-13 2007-04-17 Netlogic Microsystems, Inc. Content addressable memory (CAM) device with entries having ternary match and range compare functions
EP1526548A1 (de) 2003-10-22 2005-04-27 STMicroelectronics S.r.l. Verbessertes Verfahren und Schaltung zur Bitleitungsentladung für Halbleiterspeicher
US7831607B2 (en) 2006-12-08 2010-11-09 Pandya Ashish A Interval symbol architecture for programmable intelligent search memory
US8165924B2 (en) 2007-11-27 2012-04-24 Sony Corporation Virtual shopping center
WO2011088526A1 (en) 2010-01-25 2011-07-28 Idatamap Pty Ltd Improved content addressable memory (cam)
US9269411B2 (en) * 2012-03-14 2016-02-23 Broadcom Corporation Organizing data in a hybrid memory for search operations
US8654555B2 (en) 2012-06-04 2014-02-18 Raytheon Company ROIC control signal generator
US8897047B2 (en) 2012-09-28 2014-11-25 Intel Corporation Associative memory oscillator array
US10332008B2 (en) * 2014-03-17 2019-06-25 Microsoft Technology Licensing, Llc Parallel decision tree processor architecture
US10051093B2 (en) 2015-03-09 2018-08-14 Fortinet, Inc. Hardware accelerator for packet classification
TWI579860B (zh) 2015-03-23 2017-04-21 國立成功大學 一種記憶細胞及具該記憶細胞的內容可定址記憶體
US10340007B2 (en) 2015-06-05 2019-07-02 King Abdullah University Of Science And Technology Resistive content addressable memory based in-memory computation architecture
US9543013B1 (en) 2015-06-05 2017-01-10 University Of South Florida Magnetic tunnel junction ternary content addressable memory
US9613701B2 (en) 2015-08-24 2017-04-04 Freescale Semiconductor, Inc. Ternary content addressable memory (TCAM) with programmable resistive elements
JP6592310B2 (ja) 2015-09-01 2019-10-16 ルネサスエレクトロニクス株式会社 半導体装置
WO2017155544A1 (en) * 2016-03-11 2017-09-14 Hewlett Packard Enterprise Development Lp Hardware accelerators for calculating node values of neural networks
US9721661B1 (en) 2016-07-21 2017-08-01 Hewlett Packard Enterprise Development Lp Content addressable memories
US9934857B2 (en) 2016-08-04 2018-04-03 Hewlett Packard Enterprise Development Lp Ternary content addressable memories having a bit cell with memristors and serially connected match-line transistors
US11152067B2 (en) 2018-08-30 2021-10-19 Sandisk Technologies Llc Content addressable memory with spin-orbit torque devices
CN109637571B (zh) 2018-12-21 2020-11-20 成都海光集成电路设计有限公司 三态内容可寻址存储器搜索线分割控制装置、系统和方法
US10847238B2 (en) 2019-02-13 2020-11-24 Hewlett Packard Enterprise Development Lp Analog, non-volatile, content addressable memory
CN110191135B (zh) 2019-06-11 2021-09-21 杭州迪普信息技术有限公司 Acl配置方法、装置、电子设备
US10896731B1 (en) * 2019-07-30 2021-01-19 Hewlett Packard Enterprise Development Lp Content addressable memory circuits with threshold switching memristors
US10998047B1 (en) * 2020-01-15 2021-05-04 Hewlett Packard Enterprise Development Lp Methods and systems for an analog CAM with fuzzy search
US11615827B2 (en) * 2020-10-15 2023-03-28 Hewlett Packard Enterprise Development Lp Hardware accelerator with analog-content addressable memory (a-CAM) for decision tree computation
US11561607B2 (en) * 2020-10-30 2023-01-24 Hewlett Packard Enterprise Development Lp Accelerating constrained, flexible, and optimizable rule look-ups in hardware

Also Published As

Publication number Publication date
US20220122646A1 (en) 2022-04-21
CN114372496A (zh) 2022-04-19
CN114372496B (zh) 2024-05-10
US11615827B2 (en) 2023-03-28

Similar Documents

Publication Publication Date Title
DE102021109468A1 (de) Hardware beschleuniger mit analog-inhaltlichem adressierbarem speicher (a-cam) für entscheidungsbaumrechnung
DE69423228T2 (de) Unüberwachtes klassifizierungsverfahren mit neuronalem netzwerk mit back propagation
DE69217047T2 (de) Verbesserungen in neuronalnetzen
Teng et al. Research on application of machine learning in data mining
DE69014613T2 (de) Genetische synthese von neuronalen netzwerken.
DE10035043A1 (de) Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen
DE102021000950A1 (de) Vereinheitlichtes Framework zur multimodalen Ähnlichkeitssuche
DE102021004562A1 (de) Abwandlung von Szenengraphen auf Grundlage von Befehlen in natürlicher Sprache
DE112020002693T5 (de) Verringerung der berechnung in neuralen netzwerken mit selbstmodifizierendem code
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE102020133266A1 (de) Technologien zur Verfeinerung von stochastischen Ähnlichkeitssuchekandidaten
Kampouridis et al. On the investigation of hyper-heuristics on a financial forecasting problem
DE112021005910T5 (de) Schnellere abdeckungskonvergenz mit automatischer testparameterabstimmung bei eingeschränkter zufallsverifikation
DE68921214T2 (de) ZUR SPEICHERUNG VON ZWEI ZUGEHöRIGEN DATENEINHEITEN ANGEPASSTES SPEICHERSYSTEM.
DE112021000251T5 (de) Verfahren zum auswählen von datensätzen zum aktualisieren eines moduls mit künstlicher intelligenz
EP3736749A1 (de) Verfahren und vorrichtung zur ansteuerung eines geräts mit einem datensatz
DE102019112186A1 (de) Doppelladebefehl
Victor et al. Intelligent Data Analysis and Machine Learning: are they really equivalent concepts?
Ning Short-term prediction of the csi 300 based on the bp neural network model
DE102020132591A1 (de) Auswählen von rechenkernvarianten unter verwendung neuronaler netzwerke
DE112021001565T5 (de) Sortieren von datenelementen eines bestimmten satzes von datenelementen
Ali et al. Predicting performance of classification algorithms
EP1170678B1 (de) Verfahren und Vorrichtung zur automatischen Suche relevanter Bilddatensätze
Drews Junior et al. A machine learning approach to predict the pink shrimp harvest in the patos lagoon estuary
Ramakrishnan C4. 5

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication