DE112015004626T5 - Konfigurierbares Vorverarbeitungs-Array - Google Patents

Konfigurierbares Vorverarbeitungs-Array Download PDF

Info

Publication number
DE112015004626T5
DE112015004626T5 DE112015004626.7T DE112015004626T DE112015004626T5 DE 112015004626 T5 DE112015004626 T5 DE 112015004626T5 DE 112015004626 T DE112015004626 T DE 112015004626T DE 112015004626 T5 DE112015004626 T5 DE 112015004626T5
Authority
DE
Germany
Prior art keywords
processing
processing units
layer
configurable
array
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.)
Withdrawn
Application number
DE112015004626.7T
Other languages
English (en)
Inventor
Isaac Chase Novet
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.)
Analog Devices Inc
Original Assignee
Analog Devices Inc
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 Analog Devices Inc filed Critical Analog Devices Inc
Publication of DE112015004626T5 publication Critical patent/DE112015004626T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • H04W52/0261Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level
    • H04W52/0287Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level changing the clock frequency of a controller in the equipment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Abstract

Ein skaliertes und konfigurierbares Vorprozessor-Array kann minimale digitale Aktivität erlauben, während harte Echtzeit-Leistungsfähigkeit aufrechterhalten wird. Das Vorprozessor-Array ist speziell dafür ausgelegt, Echtzeit-Sensordaten zu verarbeiten. Die miteinander verbundenen Verarbeitungseinheiten des Arrays können Kontextwechsel, Speicherzugriffe, Hauptprozessor-Eingabe-/-Ausgabezugriffe und Echtzeit-Ereignisverwaltungs-Overhead drastisch verringern.

Description

  • VERWANDTE ANMELDUNG UND PRIORITÄTSANMELDUNG
  • Die vorliegende Anmeldung ist verwandt mit der US-Patentanmeldung 13/859,473, eingereicht am 9.4.2013 mit dem Titel „SENSOR POLLING UNIT FOR MICROPROCESSOR INTEGRATION“, die hiermit durch Bezugnahme vollständig aufgenommen wird, beansprucht aber nicht deren Priorität.
  • Die vorliegende Anmeldung beansprucht Priorität bezüglich der vorläufigen US-Patentanmeldung 62/061,210, eingereicht am 8.10.2014 mit dem Titel „CONFIGURABLE PRE-PROCESSING ARRAY“, die hiermit durch Bezugnahme vollständig aufgenommen wird.
  • TECHNISCHES GEBIET DER OFFENBARUNG
  • Die vorliegende Erfindung betrifft das Gebiet integrierter Schaltungen und insbesondere konfigurierbare Vorverarbeitungs-Arrays.
  • STAND DER TECHNIK
  • Moderne elektronische Vorrichtungen, insbesondere tragbare elektronische Vorrichtungen, sind oft mit vielen Sensoren ausgestattet. Zu diesen Sensoren können ein oder mehrere beliebige der folgenden gehören: Mikrophone, kapazitive Sensoren, Lichtsensoren, Temperatursensoren, Mehrachsen-Beschleunigungsmesser, Kreisel, GPS-Empfänger (Global Positioning System), Feuchtigkeitssensoren, Drucksensoren, chemische Sensoren usw. Beispiele für solche modernen elektronischen Vorrichtungen wären Tablets, Mobiltelefone, Laptops, Handheld-Vorrichtungen, Wearable-Elektronik usw. Viele dieser Sensoren beschaffen oft viele Echtzeitdaten, die ein Hauptprozessor der elektronischen Vorrichtung verarbeiten muss. Die Verarbeitung von Echtzeitdaten unter Verwendung des Hauptprozessors kann viele Datenverarbeitungsressourcen in Anspruch nehmen.
  • ÜBERSICHT
  • Ein skaliertes und konfigurierbares Vorprozessor-Array erlaubt minimale digitale Aktivität, während harte Echtzeit-Leistungsfähigkeit aufrechterhalten wird. Das Vorprozessor-Array ist speziell dafür ausgelegt, Echtzeit-Sensordaten zu verarbeiten. Die miteinander verbundenen Verarbeitungseinheiten des Arrays können Kontextwechsel, Speicherzugriffe, Hauptprozessor-Eingabe-/-Ausgabezugriffe und Echtzeit-Ereignisverwaltungsoverhead drastisch verringern.
  • KURZE BESCHREIBUNG DER ZEICHNUNG
  • Um ein vollständigeres Verständnis der vorliegenden Offenbarung und ihrer Merkmale und Vorteile zu gewährleisten, wird auf die folgende Beschreibung in Verbindung mit den beigefügten Figuren verwiesen, in denen gleiche Bezugszahlen gleiche Teile bezeichnen. Es zeigen:
  • 1 eine beispielhafte Chip-Blockdarstellung eines Hauptprozessors und eines konfigurierbaren Vorverarbeitungs-Arrays gemäß einigen Ausführungsformen der Offenbarung;
  • 2 ein Funktionsdiagramm einer beispielhaften H1-Verarbeitungseinheit gemäß einigen Ausführungsformen der Offenbarung;
  • 3 eine Blockdarstellung eines beispielhaften Interrupt- und Adressenerzeugungsblocks gemäß einigen Ausführungsformen der Offenbarung;
  • 4 eine Blockdarstellung einer H1-Verarbeitungseinheit mit einer einzigen ALU gemäß einigen Ausführungsformen der Offenbarung;
  • 5 eine Blockdarstellung einer H2-Verarbeitungseinheit mit zwei ALU gemäß einigen Ausführungsformen der Offenbarung; und
  • 6 eine Blockdarstellung einer H3-Verarbeitungseinheit mit drei ALU gemäß einigen Ausführungsformen der Offenbarung; und
  • 7 ein Flussdiagramm eines Verfahrens zum Vorverarbeiten von Echtzeit-Sensordatenströmen gemäß einigen Ausführungsformen der Offenbarung.
  • BESCHREIBUNG BEISPIELHAFTER AUSFÜHRUNGSFORMEN DER OFFENBARUNG
  • Stromverbrauchsprobleme beim Verarbeiten von Echtzeit-Sensordaten
  • Wenn ein Hauptprozessor einer elektronischen Vorrichtung viele Streams von Echtzeit-Sensordaten verarbeitet, verbraucht der Hauptprozessor sehr viel Strom, und außerdem würden verfügbare Ressourcen von anderen Prozessen auf dem Hauptprozessor weggenommen. Viele moderne elektronische Vorrichtungen verfügen über begrenzte Stromressourcen (z.B. aufgrund der Batterie), oder selbst wenn diese elektronischen Vorrichtungen am Netz sind, können die Stromanforderungen der elektronischen Vorrichtungen während des Sleep- oder Standby-Modus aus Wirkungsgradgründen sehr strikt sein. Gleichzeitig sind Anwendungen oft „immer eingeschaltet“, insbesondere Anwendungen, die immer die Umgebung oder den Zustand der elektronischen Vorrichtung erfassen. Diese Anwendungen erfordern oft, dass der Hauptprozessor andauernd Echtzeitdaten von diesen Sensoren verarbeitet.
  • Eine solche Datenverarbeitungsarchitektur hat viele Ineffizienzen. Eine Ineffizienz ist der Lade- und Speicheraspekt des Sammelns von Sensordaten und Speicherns der Daten in Speicher, was eine wesentliche Menge an Verarbeitung darstellt. Eine andere Ineffizienz betrifft das Ausführen von Registertransaktionen für eine Kommunikationsschnittstelle (z.B. Versorgung von synchronen Lesevorgängen von Sensordaten). Eine weitere Ineffizienz betrifft Kontextwechsel im Hauptprozessor, auf dem oft viele verschiedene Anwendungen laufen, die verschiedene Kontexte aufweisen (und Kontextwechsel kann Jitter im Benutzererlebnis verursachen). Anhalten eines Prozesses und Wechseln zu einem anderen Prozess durch den Hauptprozessor (einschließlich Speicher-Shuffling) beim Wechseln zwischen Kontexten kann oft zu ineffizienter Verarbeitung von Sensordaten führen.
  • Lösung: Konfigurierbare Vorverarbeitung zur Unterstützung des Hauptprozessors
  • In tragbaren Verbrauchervorrichtungen ist das Sparen von Energie einer von mehreren Faktoren, die zu dem insgesamten Benutzererlebnis beitragen. Gleichzeitig bilden das kontinuierliche oder andauernde Sammeln und Interpretieren von verschiedenen Formen von Sensordaten die Grundlage dafür, wie die tragbare Vorrichtung arbeitet und mit dem Benutzer und der Umgebung in Interaktion tritt. Ein ideales Szenario würde umfassen, dass Sensordaten andauernd abgetastet und vorverarbeitet werden, während sehr wenig Strom verbraucht wird.
  • Um das Problem des Stromverbrauchs anzugehen, setzt eine verbesserte Datenverarbeitungsarchitektur wirksam ein spezialisiertes konfigurierbares Vorverarbeitungs-Array ein, das dafür ausgelegt ist, speziell Sensordaten von mehreren Sensoren (z.B. viele Streams von Echtzeit-Sensordaten) zu verarbeiten. Das spezialisierte konfigurierbare Vorverarbeitungsarray kann digitale Schaltungen zum Verarbeiten von digitalen Daten umfassen. Das Array kann mit Schaltkreisen integriert werden, die mit Sensoren (z.B. Analog-Frontends zur Durchführung von „leichter“ Verarbeitung) eine Schnittstelle bilden. Wenn die Sensoren, das Analog-Frontend und das konfigurierbare Vorverarbeitungs-Array zusammen als ein Erfassungs-Subsystem bereitgestellt sind, kann das Erfassungs-Subsystem Sensordaten sammeln und intelligente Operationen an Sensordaten ausführen, während es nur wenig Strom verbraucht.
  • Ein einzigartiges Merkmal des konfigurierbaren Vorverarbeitungs-Arrays ist seine Segmentierung von Verarbeitungsverantwortlichkeiten zu aufgabenoptimierten Verarbeitungseinheiten und durch die nahtlose Interaktion zwischen Verarbeitungseinheiten über ein konfigurierbares Netzwerk von Verbindungselementen zwischen diesen Verarbeitungseinheiten. Das Overhead wird mittels kooperativer Verarbeitung in der Pipeline-Konfiguration ohne häufige Kontextwechsel im Hauptprozessor minimiert. Das synchrone Sammeln von Daten wird dergestalt durchgeführt, dass fast keine Verarbeitung durchgeführt wird, die nicht zu dem Endziel des Sammelns und Vorbereitens von Daten für die nächste Phase beiträgt (fast alle durchgeführte Verarbeitung trägt zu dem Endziel des Sammelns und Vorbereitens von Daten für die nächste Phase bei). Außerdem entsteht durch die Interaktionen zwischen Pipelines null Overhead. Da das konfigurierbare Vorverarbeitungs-Array in asynchroner Logik implementiert werden kann (die asynchron ohne ein geteiltes oder globales Taktsignal zwischen den Verarbeitungseinheiten arbeitet), würde eine sehr minimale Anzahl von Gattern übergehen, was zu minimaler dynamischer Leistung führt. Die Stärke des Systems besteht darin, dass auf Anweisungsebene die Anzahl der durchzuführenden Posten auf ein Minimum zurückgeschnitten wird, was den Vorteil hat, den insgesamten Stromverbrauch herabzusetzen.
  • Die Lösung führt vorzugsweise eine beliebige oder mehrere der folgenden technischen Aufgaben aus. Eine erste beispielhafte technische Aufgabe ist das kontinuierliche Sammeln von Sensordaten, während der größte Teil des Systems mit annehmbar geringem Stromverbrauch heruntergefahren ist. Eine zweite beispielhafte technische Aufgabe ist das Identifizieren von interessierenden Bereichen in Sensordatenströmen vor dem Aufwecken des Hauptprozessors oder anderer Ressourcen. Eine dritte beispielhafte technische Aufgabe ist das Durchführen von Beschaffungs- und Pipeline-Verarbeitung von Sensordaten, nachdem der Hauptprozessor wach ist. Eine vierte beispielhafte technische Aufgabe besteht darin, dem Hauptprozessor zu erlauben, Mikrocode zugrundeliegender Verarbeitungseinheiten dynamisch umzukonfigurieren, um den Bedürfnissen des Systems zu genügen (Hardware-Threading). Eine fünfte beispielhafte technische Aufgabe ist das Bereitstellen einer vereinfachten Implementierung von Algorithmen durch Erlauben der Verwendung eines (graphischen) Entwicklungswerkzeugs zur Erzeugung von Mikrocode.
  • Matrix miteinander verbundener arithmetisch-logischer Einheiten (ALU), die in Schichten organisiert sind
  • Ein Hauptprozessor kann Prozesse triggern, die selektiv Teile des konfigurierbaren Vorverarbeitungs-Arrays, einer Matrix miteinander verbundener arithmetisch-logischer Einheiten (ALU) aktivieren würden, um Sensoren andauernd zu überwachen. Die Matrix miteinander verbundener ALU kann als asynchrone Verarbeitungseinheiten organisiert werden, die in mehreren Verarbeitungsschichten angeordnet sind. Verschiedene Varianten von Verarbeitungseinheiten mit unterschiedlicher Komplexität werden selektiv merkmalbegrenzt und werden in parallelen Pipelines angeordnet, so dass die Sensordaten durch Pipeline-Stufen nur bis zu dem Punkt ausgewertet werden können, der als nützlich oder nicht nützlich bestimmt wird. Allgemein gesagt würde die niedrigere Verarbeitungsschicht verglichen mit den Verarbeitungseinheiten höherer Verarbeitungsschichten Verarbeitungseinheiten niedrigerer Komplexität aufweisen.
  • Zum Beispiel können Schnittstellen zu den Sensoren durch Verarbeitungseinheiten versorgt werden, die eine grundlegende (einzelne) ALU (das Quantum der Pipeline) aufweisen. In höheren Schichten können Verarbeitungseinheiten zwei oder mehr ALU aufweisen, und die Verbindungselemente dieser Verarbeitungseinheiten (z.B. Datenrouting) können Vereinigung und Verzweigung dynamischer Pipelines ermöglichen. Da die Verarbeitungseinheiten nicht getaktet sind, d.h. die Einheiten asynchron sind, kann der Stromverbrauch signifikant verringert werden, insbesondere in Prozessen mit geringem Lecken.
  • 1 zeigt eine beispielhafte Chip-Blockdarstellung eines Hauptprozessors und eines konfigurierbaren Vorverarbeitungs-Arrays gemäß einigen Ausführungsformen der Offenbarung. In diesem Beispiel zeigt die Chip-Blockdarstellung die H1-Schicht 102, H2-Schicht 104, die H3-Schicht 106 und eine Hauptverarbeitungsschicht 108. Die H1-Schicht 102, die H2-Schicht 104 und die H3-Schicht 106 sind der Verarbeitung des konfigurierbaren Vorverarbeitungs-Arrays zugeordnet. Die Hauptverarbeitungsschicht 108 ist Verarbeitung des Hauptprozessors zugeordnet. Es versteht sich, dass abhängig von der Anwendung mehr oder weniger Schichten vorgesehen werden können. Ferner zeigt das Beispiel eine Anzahl von Verarbeitungseinheiten pro Schicht, aber es versteht sich, dass abhängig von der Anwendung mehr oder weniger Einheiten pro Schicht bereitgestellt werden können. Ein Hauptprozessor verwaltet die Konfiguration der Vorverarbeitungs-Pipelines mittels geeigneter Anweisungen, die diese Verarbeitungseinheiten ausführen können. Die Konfiguration kann z.B. vorschreiben wie Daten durch die Schichten (zwischen Verarbeitungseinheiten jeder Schicht oder zwischen Verarbeitungseinheiten verschiedener Schichten) bewegt werden.
  • Bei einigen Ausführungsformen kann ein konfigurierbares Vorverarbeitungs-Array Vorverarbeitung von Echtzeit-Sensordatenströmen durchführen und den Stromverbrauch eines insgesamten Systems verringern. Das konfigurierbare Vorverarbeitungs-Array wird mit spezialisierten Schaltkreisen implementiert, deren Ausführung von Operationen programmierbar sein kann. Das konfigurierbare Vorverarbeitungs-Array umfasst mehrere erste Verarbeitungseinheiten in einer ersten Verarbeitungsschicht (H1-Schicht 102) zum Verarbeiten von Echtzeit-Sensordatenströmen. Jede einzelne der ersten Verarbeitungseinheiten kann dafür ausgelegt sein, eine oder mehrere erste Verarbeitungsschichtanweisungen von einem Hauptprozessor auszuführen. Das konfigurierbare Vorverarbeitungs-Arrays umfasst außerdem mehrere zweite Verarbeitungseinheiten in einer zweiten Verarbeitungsschicht (H2-Schicht 104) zum Verarbeiten von Ausgangsdaten, die durch die erste Verarbeitungsschicht (H1-Schicht 102) erzeugt werden. Jede einzelne der zweiten Verarbeitungseinheiten kann dafür ausgelegt sein, eine oder mehrere zweite Verarbeitungsschichtanweisungen von dem Hauptprozessor auszuführen. Der Anweisungssatz kann abhängig von der Anwendung unterschiedlich sein. Viele dieser Verarbeitungseinheiten können als mehrere Pipelines parallel arbeiten. Dementsprechend kann die Verarbeitung von vielen Echtzeit-Sensordatenströmen sehr effizient durchgeführt werden.
  • Gegebenenfalls kann das konfigurierbare Vorverarbeitungs-Array auch weitere Verarbeitungsschichten umfassen. Zum Beispiel kann das konfigurierbare Vorverarbeitungs-Array mehrere dritte Verarbeitungseinheiten in einer dritten Verarbeitungsschicht (H3-Schicht 106) zum Verarbeiten von durch die zweite Verarbeitungsschicht (H2-Schicht 104) erzeugten Ausgangsdaten umfassen. Jede einzelne der dritten Verarbeitungseinheiten kann dafür ausgelegt sein, eine oder mehrere dritte Verarbeitungsschichtanweisungen von dem Hauptprozessor auszuführen.
  • Neben den durch die Verarbeitungseinheiten ausgeführten Operationen kann auch das Routen von Daten zwischen verschiedenen Teilen konfigurierbarer Vorverarbeitung programmierbar sein, z.B. durch den Hauptprozessor. In einigen Fällen kann der Hauptprozessor konditionales Datenrouten spezifizieren, wobei das Datenrouten bezüglich der Ausgangsdaten von Verarbeitungseinheiten konditioniert wird. Konditionales Datenrouten erlaubt komplexe Datenverarbeitung durch das konfigurierbare Verarbeitungsarray, z.B. intelligente Erfassung auf der Basis von Daten von mehreren Sensoren. Außerdem erlaubt konditionales Datenrouten vorteilhafterweise Vereinigung oder Aufteilung von Pipelines abhängig von den Sensordaten.
  • Zum Beispiel kann eine erste der zweiten Verarbeitungseinheiten Schaltkreise umfassen, die konditionales Datenrouten zu einem oder mehreren von Folgendem bereitstellen: Speicher, einer zweiten Peer-Verarbeitungseinheit (in der zweiten Verarbeitungsschicht) und einer Verarbeitungseinheit in einer dritten Verarbeitungsschicht. In einigen Fällen kann das konditionale Datenrouten, d.h. wohin die Ausgangsdaten der ersten der zweiten Verarbeitungseinheiten geroutet werden soll, auf Ausgangsdaten der ersten der zweiten Verarbeitungseinheiten basieren.
  • In einigen Fällen kann eine erste der dritten Verarbeitungseinheiten Schaltkreise umfassen, die konditionales Datenrouten zu einem oder mehreren von Folgendem bereitstellen: Speicher, einer dritten Peer-Verarbeitungseinheit (in der dritten Verarbeitungsschicht) und einer Verarbeitungseinheit in einer dritten Verarbeitungsschicht. In einigen Fällen kann das konditionale Datenrouten, d.h. wohin die Ausgangsdaten der ersten der dritten Verarbeitungseinheiten geroutet werden soll, auf Ausgangsdaten der ersten der dritten Verarbeitungseinheiten basieren.
  • Vorteile der parallelen Verarbeitung von Sensordatenströmen
  • Ein einzelner Sensor kann durch eine Pipeline versorgt werden, die an dem Schnittstellenblock in der H1-Schicht 102 beginnt. Somit kann mit mehreren Sensoren durch mehrere Schnittstellenblöcke in der H1-Schicht 102 über jeweilige Pipelines umgegangen werden. Diese Pipelines stellen parallele Verarbeitung mehrerer Streams von Daten bereit, und diese Pipelines können abhängig von der Programmierung des konfigurierbaren Verarbeitungs-Arrays zusammengelegt oder aufgeteilt werden. Speziell kann die mikrocodierte Konfiguration der Pipeline die Pipelines dafür programmieren, periodisch Sensordaten zu sammeln, programmatisch Sensordaten auszuwerten, die von der Zusammenlegung mehrerer Pipelines empfangenen Daten auszuwerten, Datenaufteilung von Pipelines auszuwerten, Verarbeitungseinheiten mit verschiedenen Graden an Verarbeitungskomplexität einzuschalten und auf den höchsten Ebenen der Funktionalität Schleifenbeschleunigung oder Parallelisierungsaufgaben für den Hauptprozessor auszuführen. Aufgrund der Konfigurierbarkeit der dynamischen Pipeline können Ergebnisse der Operationen geteilt und zu anderen Verarbeitungseinheiten umgelenkt werden, um die hochparallele Architektur wirksam einzusetzen.
  • Die Stufen werden auch mit einigen vorteilhaften Merkmalen ausgestattet, um effiziente Verarbeitung von Probendaten ohne die Störung von dem Hauptprozessor bereitzustellen. Zum Beispiel können einige Stufen einer Pipeline abhängig von der Position in der Pipeline eine Schleifen- und/oder Verzweigungsfunktion implementieren (gilt gewöhnlich für Verarbeitungseinheiten in den höheren Schichten). Jede Stufe kann null-Overhead-Schleifen implementieren, was die Effizienz stark vergrößern kann, ohne dass der Hauptprozessor eingreifen oder arbeiten muss. Einige Stufen können sogar null-Zyklus-Sprung, Interrupt und Rückkehr durchführen. In einem anderen Fall können einige Stufen in der Pipeline Daten direkt zur nächsten Stufe weiterleiten, wodurch Datenspeicherzugriffe während des Übergangs eliminiert werden und auch Funktionsaufruf oder potenzielle Prozesskontextwechsel verringert werden. Das Weiterleiten von Ausgangsdaten kann zwischen „Peer“-Verarbeitungseinheiten in derselben Schicht oder von einer Verarbeitungseinheit einer Schicht zu einer anderen Verarbeitungseinheit einer höheren Schicht geschehen. In einem weiteren Fall können diese Verarbeitungseinheiten auch ohne Störung von dem Hauptprozessor in geteilten Speicher schreiben. Das konfigurierbare Vorverarbeitungs-Array kann einen durch die erste Verarbeitungsschicht, die zweite Verarbeitungsschicht und die dritte Verarbeitungsschicht ohne Störung von dem Hauptprozessor zugänglichen geteilten Speicher umfassen. Der geteilte Speicher kann zur Übermittlung von Daten zwischen Verarbeitungsschichten verwendet werden, ohne dass Zyklen oder Ressourcen des Hauptprozessors benutzt werden müssen.
  • Die H1-(unterste)Schicht: Das Quantum des konfigurierbaren Verarbeitungs-Arrays
  • Die in 1 gezeigte H1-Schicht 102, die die niedrigste Schicht der Verarbeitung ist, weist eine begrenzte Implementierung auf. Die H1-Schicht 102 weist für jeden Sensor individuelle Pipelines auf, wobei jede Pipeline einen Schnittstellenblock (z.B. eine jeweilige Sensorschnittstelle) und einen Automaten- bzw. FSM-Block mit geringer Stromaufnahme (hier als „H1-Verarbeitungseinheit“ bezeichnet, die eine einzelne arithmetisch-logische Einheit zur Verarbeitung von Sensordaten umfassen kann) umfasst. Zum Beispiel kann ein Schnittstellenblock über eine serielle Schnittstelle eine Schnittstelle mit einem Beschleunigungsmesser bilden und ein anderer Schnittstellenblock kann über eine andere serielle Schnittstelle eine Schnittstelle mit einem kapazitiven Sensor bilden. Grob ausgedrückt ist diese Schicht „immer eingeschaltet“. Speziell ist die Schicht so ausgelegt, dass sie Sensordaten sammelt und speichert, und in vielen Fällen einfaches Stream-Überwachen implementiert, um Aktivitäten von Interesse anzugeben. Zum Beispiel ist Schwellenwertvergleich eine häufige Stream-Überwachungsfunktion.
  • Bei einigen Ausführungsformen kann eine erste Verarbeitungseinheit in einer ersten Verarbeitungsschicht (H1-Schicht 102) einen Echtzeit-Sensordaten-Stream überwachen, indem eine Schwelle auf den Echtzeit-Sensordaten-Stream angewandt wird. Zum Beispiel kann die erste Verarbeitungseinheit prüfen, ob Datenwerte in dem Echtzeit-Sensordaten-Stream größer als eine Schwelle sind, oder prüfen, ob eine Mindestanzahl von Datenwerten die Schwelle überschritten hat. Wenn dem so ist, hat die erste Verarbeitungseinheit interessierende Aktivität detektiert. Dieser Betriebsmodus ist besonders vorteilhaft, da Sensoren für lange Zeiträume „ruhend“ sein oder keine interessierende Aktivität aufweisen können. Ohne diese Verarbeitungsschicht würde der Hauptprozessor viel Energie mit dem Abfragen des Sensors nach interessierender Aktivität aufwenden.
  • Eine der durch die H1-Schicht 102 ausgeführten technischen Aufgaben ist die Verwaltung des synchronen Sammelns von Daten von einer beliebigen Datenschnittstelle, falls erforderlich Ausführen von milder Vorverarbeitung und so wenig Strom wie möglich zu verbrauchen. Zum Beispiel wird der Rest des Systems „ausgeschaltet“ oder „unbelegt“ gehalten, während die H1-Schicht 102 nach interessierender Aktivität in Sensordaten scannen und die höhere Schicht (z.B. H2-Schicht 104) unterbrechen kann, wenn interessierende Aktivität gefunden wird. Harte Echtzeit-Abtastung mehrerer Sensoren zu garantieren, fängt typischerweise bei einem einzelnen Prozessor unter jeder signifikanten Menge an Last an, ein Problem zu werden. Außerdem ist es für den großen Mechanismus eines Prozessors energieineffizient, einen externen Sensor regelmäßig abzutasten. Die H1-Schicht 102 geht diese Probleme an, indem nur eine Einzeldurchgangsschleife zur Erfassung von Daten von einem Sensor bei Triggerung dazu durchgeführt wird, die empfangenen Daten erforderlichenfalls verarbeitet werden und dann angehalten wird, bis ein anderer der Hauptprozessor eine andere Einzeldurchgangsschleife triggert. Bei einigen Ausführungsformen kann mindestens eine der ersten Verarbeitungseinheiten der ersten Verarbeitungsschicht (H1-Schicht 102) dafür ausgelegt sein, als Reaktion auf ein Freigabesignal eine Einzeldurchgangsausführung von Anweisungen in einem Anweisungsspeicher durchzuführen und nach der Ausführung der Einzeldurchgangsausführung von Anweisungen anzuhalten, bis ein anderes Freigabesignal getriggert wird.
  • 2 ist ein Funktionsdiagramm einer beispielhaften H1-Verarbeitungseinheit gemäß einigen Ausführungsformen der Offenbarung. Die Funktionsblöcke der H1-Verarbeitungseinheit umfassen einen Adressengeneratorblock 202, Anweisungs-Direktzugriffsspeicher (RAM) 204, einen Lese-/Schreib(R/W-)Arbitrierungsblock 202, Arbeitsregister 208, Spezialfunktionsregister 210, Datenrouting 212 und einen ALU-Fallaussageblock 214. Um eine Einzeldurchgangsschleife (eine „Schleife“, die nur einmal iteriert) zu triggern, kann der Hauptprozessor Anweisungen („Mikrocode“) über den R/W-Arbitrierungsblock 206 in den Anweisungs-RAM 204 laden und bewirken, dass dem Adressenerzeugungsblock 202 ein Freigabesignal zugeführt wird. Der Adressenerzeugungsblock 202 kann Schaltkreise umfassen, die die Anweisungen in dem Anweisungs-RAM 204 als Reaktion auf das Freigabesignal sequenziell ausführen können.
  • Die H1-Verarbeitungseinheit kann als ein Grundprozessor mit einem einzigen Interrupt-Vektor betrachtet werden. H1 hält nach dem Abschluss der Anweisungen in der Interrupt-Serviceroutine an und verbraucht keinen dynamischen Strom. Jede Quelle mit der Fähigkeit zum Aufrechterhalten einer Zeitbasis ist geeignet zum Triggern des Freigabesignals von H1; Beispiele wären digitale Zähler, oszillierende analoge Komparatorschaltungen und so weiter. H1 wird vorzugsweise als asynchrone Logik implementiert. Die H1-Verarbeitungseinheit kann ihren eigenen Takt torschalten, wenn die Verarbeitung abgeschlossen ist (torschaltet z.B. einen Takt oder ein Signal der asynchronen Logik, wenn die Ausführung der einen oder mehreren ersten Verarbeitungsschichtanweisungen abgeschlossen ist).
  • Ein Teil einer Anweisung kann Datenrouting steuern, wie etwa Steuerung von Multiplexern zum Laden von ordnungsgemäßen Operanden von den Arbeitsregistern 208 und Spezialfunktionsregistern 210 und zum Schreiben von Daten in die Arbeitsregister 208 und Spezialfunktionsregister 210. Ferner kann ein Teil jeder Anweisung eine entsprechende ALU-Funktion in dem Block der ALU-Fallaussage 214 zur Verarbeitung der Daten auswählen. Die Arbeitsregister 208 werden im Allgemeinen zum Speichern von Zwischenergebnissen der Anweisungen verwendet, und die Spezialfunktionsregister 210 werden im Allgemeinen zum Übermitteln von Daten zu/von Blöcken außerhalb der H1-Verarbeitungseinheit (z.B. Sensorschnittstelle, Speicher des Hauptprozessors, einem zirkularen Puffer zur nächsten Stufe in der Pipeline, einem Register für die nächste Stufe in der Pipeline usw.) verwendet. Der ALU-Fallaussageblock 214 würde im Allgemeinen einen minimalen Anweisungssatz umfassen, wie etwa Anweisungen, die für FIR-Filterung (Finite Impulse Response) und Vergleich optimiert sind, oder andere Anweisungen, die milde Vorverarbeitung von Sensordaten ausführen können. Nachdem er mit den Anweisungen des Anweisungs-RAM 204 fertig ist, kann der Adressenerzeugungsblock 202 sich rücksetzen und zu null (d.h. dem Anfang des Anweisungs-RAM 204) zurückgehen.
  • Verwendung einer zirkularen Warteschlange am Ausgang einer Pipeline-Stufe
  • Wieder mit Bezug auf 1 kann eine zirkulare Warteschlange bereitgestellt werden, um interessierende Abtastwerte oder Daten, die durch eine Verarbeitungseinheit in einer beliebigen der Verarbeitungsschichten erzeugt werden, zu speichern, so dass eine höhere Schicht Daten im Burstmodus lesen kann. Bei einigen Ausführungsformen umfasst die erste Verarbeitungsschicht (H1-Schicht 102) ferner eine zirkulare Warteschlange an einem Ausgang einer (beliebigen) der ersten Verarbeitungseinheiten, wobei eine der zweiten Verarbeitungseinheiten die Ausgangdaten direkt über die zirkulare Warteschlange von der ersten Verarbeitungsschicht abruft. Es können auch andere Verarbeitungseinheiten anderer Schichten (z.B. H2 und H3) eine zirkulare Warteschlange am Ausgang umfassen.
  • Die zirkulare Warteschlange unterscheidet sich von dem direkten Pfad, weil die zirkulare Warteschlange ein Burst-Lesen mehrerer Datenabtastwerte erlaubt und der direkte Pfad ein Lesen nur eines einzigen Datenabtastwerts erlaubt. Das Beispiel zeigt eine zirkulare Warteschlange am Ausgang der H1-Verarbeitungseinheit, aber es versteht sich, dass andere Verarbeitungseinheiten in höheren Schichten auch die zirkulare Warteschlange (zwischen Verarbeitungseinheiten verschiedener Schichten oder zwischen „Peer“-Verarbeitungseinheiten derselben Schicht) umfassen können. Vorteilhafterweise kann einige Verarbeitung, die mehrere Datenabtastwerte benötigt (z.B. schnelle Fouriertransformation) mittels des mit Warteschlange versehenen Pfads schnell mehrere Datenabtastwerte lesen. Die zirkulare Warteschlange erlaubt es einer Verarbeitungseinheit, ohne jegliches Laden und Speichern im Speicher Daten in der Warteschlange zu speichern. Die zirkulare Warteschlange ist effektiv eine Pipeline-Verzögerungsoperation, was weit effizienter als tatsächliche Speicherzugriffe ist.
  • Interrupt- und Adressenerzeugung
  • Die Implementierung der Einzeldurchgangsschleife ist relativ einfach. Für höhere Schichten der Verarbeitung, wie etwa die H2-Schicht 104 und die H3-Schicht 106, können in dem Adressenerzeugungsblock einer Verarbeitungseinheit weitere Schaltkreise bereitgestellt werden, um komplexere Verarbeitung von Sensordaten-Streams bereitzustellen. Die zusätzlichen Schaltkreise können Nullzyklussprung, -interrupt und -rückkehr bereitstellen und können auch Nulllatenzschleifen unter Verwendung eines Schleifenzählers bereitstellen. 3 ist eine Blockdarstellung eines beispielhaften Interrupt- und Adressenerzeugungsblocks gemäß einigen Ausführungsformen der Offenbarung. Der gezeigte komplexere Adressengenerator kann Interrupt-, Sprung- und Rückkehrvektoren („jmpv“, „intv“, „jmprv“ und „intrv“) in den Registern speichern, die ein Programmzähler („PC“) zum Erzeugen des Programmzählers „PCO“ verwenden kann. Die ALU kann auch in den Programmzähler selbst schreiben. Ein solcher Interrupt- und Adressengenerator kann flexibleres Springen bereitstellen als die Einzeldurchgangs-Schleifenausführung der H1-Verarbeitungsschicht.
  • Verschiedene Baukonfigurationen für ALU in einer Verarbeitungseinheit
  • Wieder mit Bezug auf 1 weisen die verschiedenen Schichten der Verarbeitung Verarbeitungseinheiten unterschiedlicher Komplexitäten auf. In der H1-Schicht 102 weist die FSM-Verarbeitungseinheit mit geringer Stromaufnahme eine ALU auf. 4 ist eine Blockdarstellung einer H1-Verarbeitungseinheit mit einer einzigen ALU gemäß einigen Ausführungsformen der Offenbarung. Einzelne ALU-Verarbeitungseinheiten können mit grundlegenden Sammel- und FIFO-Aufgaben (First In First Out) beauftragt werden. Um komplexere Verarbeitung von Daten-Streams bereitzustellen, weisen die höheren Schichten Verarbeitungseinheiten auf, die mehr als eine ALU aufweisen. Es können eine bis drei (oder mehr) ALU zu einer Verarbeitungseinheit kombiniert werden. Bei einigen Ausführungsformen weist mindestens eine der einen oder mehreren ersten Verarbeitungseinheiten (in der H1-Schicht 102) jeweils eine einzige arithmetischlogische Einheit auf, und mindestens die eine oder mehreren zweiten Verarbeitungseinheiten (in der H2-Schicht 104) weisen jeweils zwei arithmetischlogische Einheiten auf. In einigen Fällen weist mindestens eine der dritten Verarbeitungseinheiten jeweils drei arithmetisch-logische Einheiten auf.
  • Zweifach-ALU-FSM-Verarbeitungseinheit in der H2-Schicht
  • Der Zweifach-ALU-FSM in der H2-Schicht 104 kann zwei ALU aufweisen. Zweifach-ALU-FSM-Verarbeitungseinheiten können gut für Vergleich und Analyse zweier Daten-Streams sein. 5 ist eine Blockdarstellung einer H2-Verarbeitungseinheit mit zwei ALU gemäß einigen Ausführungsformen der Offenbarung. Diese Verarbeitungseinheit kann in der H2-Schicht verwendet werden, die komplexe Erkennung bereitstellen kann. Die H2-Schicht entspricht der H2-Schicht 104 in 1, die einen oder mehrere Zweifach-ALU-FSM umfasst (hier als „H2-Verarbeitungseinheit“ bezeichnet). Aus der Figur ist zu sehen, dass die zwei ALU zwei Streams Daten gleichzeitig verarbeiten können. Es ist auch das Vereinigen und Aufteilen der Streams möglich. Die H2-Verarbeitungseinheit ist dafür ausgelegt, in der Lage zu sein, entweder 0, 1 oder 2 Datenquellen zu nehmen und das Routing der Daten zu bestimmen. Die H2-Verarbeitung hält an, bis sie das entsprechende Interrupt-Signal oder Triggersignal empfangen hat, das eine synchrone (Interrupt-)Quelle oder ein Trigger oder ein oder mehrere H1-Daten Bereitschafts-Interrupt-Signale sein kann. H2 nimmt die an ihren Eingängen anwesenden Daten und kann vorherige Abtastwerte oder andere im Speicher gespeicherte Daten untersuchen, um zu bestimmen, ob die nächste Stufe der Pipeline aktiviert werden soll. Der Entscheidungsprozess kann Daten für die nächste Stufe vorverarbeiten.
  • Die Anweisungen für diese Verarbeitungseinheit können vorteilhafterweise ein konditionales Routing auf der Basis der Daten bereitstellen, um zu bestimmen, ob die Ausgangsdaten zum Speicher, einer Peer-H2-Verarbeitungseinheit oder einer H3-Verarbeitungseinheit (oder einer beliebigen Kombination davon) geroutet werden sollen. Dieses wichtige Merkmal, die dynamische Pipeline, basiert auf den Konditionen der Daten und ermöglicht mehreren Algorithmen (Pipelines), dieselbe Verarbeitung auszunutzen, die durch einen bestimmten Verarbeitungsblock durchgeführt wird. Ferner können Verarbeitung oder Operationen an Daten ohne das Overhead des Kontextwechselns zwischen verschiedenen Kontexten geteilt werden (d.h. teilen von Zwischenergebnissen durch Vereinigen oder Verzweigen von Datenausgaben), solange die Anweisungen das konfigurierbare Verarbeitungs-Array ordnungsgemäß programmiert haben.
  • Allgemein ausgedrückt, können die Zweifach-ALU-FSM-Verarbeitungseinheiten in der H2-Schicht komplexere Analyse von Daten durchführen, nachdem H1 interessierende Aktivität detektiert hat. Wenn es keine interessierende Aktivität in der niedrigeren H1-Schicht gibt, schlafen die Verarbeitungseinheiten in der H2-Schicht bzw. halten an, bis Aktivität in der H1-Schicht detektiert wird. Die Verarbeitungseinheiten in der H2-Schicht können interessierende Aktivität in Sensordaten untersuchen und Algorithmen mäßiger Komplexität an mehreren Daten-Streams parallel verarbeiten. Der Code für den Zweifach-ALU-FSM ist mit dem Einzel-ALU-FSM kompatibel, wobei Interna zu zwei ALU und einer Schreibzielsemaphore wechseln. Solcher Code kann in einer Makrosprache oder einem anderen geeigneten Programmierungswerkzeug erzeugt werden.
  • Dreifach-ALU-FSM-Verarbeitungseinheit in der H3-Schicht
  • Der Dreifach-ALU-FSM in der H3-Schicht 106 kann drei ALU aufweisen. Die H3-Schicht entspricht der H3-Schicht 106 in 1, die einen oder mehrere Zweifach-ALU-FSM umfasst (hier als „H3-Verarbeitungseinheit“ bezeichnet). Die Verarbeitungseinheiten in dieser Schicht schlafen, bis gültige Aktivität niedrigerer Schichten oder andere Ereignisse auftreten. Die Dreifach-ALU-Verarbeitungseinheiten können für Übernahme von Hauptprozessor-Rechenaufgaben wie Hardware-Threads gut sein. 6 ist eine Blockdarstellung einer H3-Verarbeitungseinheit mit drei ALU gemäß einigen Ausführungsformen der Offenbarung. Die dritte und letzte Stufe in der Pipeline, der H3-Verarbeitungsblock, ist dafür ausgelegt, kleine Algorithmen zu implementieren, die harte Echtzeit-Leistungsfähigkeit erfordern. Indem sie über drei ALU verfügt, kann die H3-Verarbeitungseinheit Daten-Streams vereinigen und verzweigen. Mit der internen Zusammenlegungsfunktion (die die Ausgaben zweier ALU vereinigt) macht die H3-Verarbeitungseinheit die Verwendung von 1,5 H2-Verarbeitungseinheiten überflüssig.
  • Beispiele für Aufgaben, die durch die H3-Verarbeitungseinheit ausgeführt werden, wären etwa PID-Schleifen (Proportional-Integral-Ableitung), haptische Rückmeldung und ergänzte Audiofunktionen. Diese Stufe der Pipeline kann Algorithmen Echtzeit-Leistungsfähigkeit bereitstellen, und um es dem Hauptprozessor zu erlauben, Betriebsparameter mittels einer Anwendungsprogrammierschnittstelle (API) auf hoher Ebene in Soft-Echtzeit zu steuern. Dies könnte weitere Abstraktion von Sensoren und Algorithmen erlauben, indem bestimmte Algorithmen als Mikrocode für die Pipeline-Stufen implementiert werden. Das Ergebnis ist eine Schicht der Verarbeitung, die dem Hauptprozessor während des Vollbetriebs mit periodischen Verarbeitungsaufgaben helfen kann. Der Code für die H3-Schicht ist im Allgemeinen mit H1- und H2-Schichten kompatibel, und der Hauptprozessor kann die H3-Einheit als Hardware-Thread verwenden, wobei entweder eine in einem Programmierungswerkzeug erzeugte Binärdatei geladen wird, oder durch direktes Laden von erzeugtem Bytecode im Fluge.
  • Software zum Konfigurieren des Vorverarbeitungs-Arrays
  • Bei einigen Ausführungsformen sind die verschiedenen Varianten von Verarbeitungseinheiten abwärtskompatibel, was bedeutet, dass eine Zweifach-Einheit den Code einer Einfach-Einheit ausführen könnte usw. Das Einzelprogrammierungsmodell kann für alle Varianten von Verarbeitungseinheiten bereitgestellt werden, und etwaige fehlende Funktionalität kann somit leicht emuliert werden. Der Coderaum kann begrenzt sein. Man beachte, dass zur Erzeugung des Mikrocodes zum Konfigurieren des Vorverarbeitungs-Arrays zur Optimierung der Wiederverwendung von Verarbeitungseinheiten und für Parallelismus ein Profilierungswerkzeug verwendet werden kann.
  • Das konfigurierbare Vorverarbeitungs-Array ist von einem generischen Coprozessor unterscheidbar
  • In einigen Systemen wird ein hochleistungsfähiger Hauptprozessor gewöhnlich durch Coprozessoren, z.B. Graphikprozessoren, Audioprozessoren, generische kleine Coprozessoren usw. unterstützt. Ein Beispiel hierfür wäre die Aufnahme eines generischen kleinen Prozessors zusammen mit einem Haupt-/Anwendungsprozessor in eine elektronische Vorrichtung, um einige Datenkommunikationsfunktionen für eine Kommunikationsschnittstelle bereitzustellen. Diese Coprozessoren sind gewöhnlich zu sehr fähig und eignen sich nicht besonders für die Verarbeitung von Streams von Sensordaten. Obwohl es viele Gründe für die Verwendung von Standard-Coprozessoren gibt, wie etwa die Vertrautheit mit existierenden Werkzeugketten und IP, erntet die Verwendung von generischen Coprozessoren nicht dieselben Vorteile wie ein Verarbeitungsnetzwerk, das speziell auf Verarbeitung von Sensordaten abzielt.
  • Verfahren zum Vorverarbeiten von Echtzeit-Sensordaten-Streams
  • 7 ist ein Flussdiagramm eines Verfahrens zum Vorverarbeiten von Echtzeit-Sensordaten-Streams gemäß einigen Ausführungsformen der Offenbarung. Das Verfahren zum Vorverarbeiten von Echtzeit-Sensordaten-Streams kann vorteilhafterweise Kontextwechsel eines Hauptprozessors verringern. Mehrere erste Verarbeitungseinheiten in einer ersten Verarbeitungsschicht (H1) eines konfigurierbaren Vorverarbeitungs-Arrays überwachen Echtzeit-Sensordaten-Streams von mehreren Sensoren parallel gemäß einer oder mehreren ersten Verarbeitungsschichtanweisungen von dem Hauptprozessor (Aufgabe 702). Zum Beispiel können die ersten Verarbeitungseinheiten individuell und parallel auf interessierende Aktivität in den Daten-Streams überwachen. Als Reaktion auf Detektion von interessierender Aktivität in den Echtzeit-Sensordaten-Streams durch eine erste der ersten Verarbeitungseinheiten (siehe 704), kann die erste der ersten Verarbeitungseinheit eine zweite Verarbeitungseinheit (Aufgabe 706) in einer zweiten Verarbeitungsschicht (H2) unterbrechen und Ausgangsdaten von der ersten der ersten Verarbeitungseinheiten der zweiten Verarbeitungseinheit in der zweiten Verarbeitungsschicht bereitstellen (Aufgabe 708).
  • Bei einigen Ausführungsformen umfasst Überwachen der Echtzeit-Sensordaten-Streams (Aufgabe 702) Anwenden einer Schwelle auf mindestens einen der Echtzeit-Sensordaten-Streams. Bei einigen Ausführungsformen wendet Überwachung des Echtzeit-Sensordaten-Streams ein (z.B. durch den Hauptprozessor spezifiziertes) Filter auf den Echtzeit-Sensordaten-Stream an, so dass der zweiten Verarbeitungsschicht (H2) zur weiteren Verarbeitung eine gefilterte Version bereitgestellt wird.
  • Bei einigen Ausführungsformen Verarbeitung der Ausgangsdaten von der ersten der ersten Verarbeitungseinheiten durch eine erste der zweiten Verarbeitungseinheiten gemäß einer oder mehreren Verarbeitungsanweisungen der zweiten Schicht von dem Hauptprozessor. Zum Beispiel kann die erste der zweiten Verarbeitungseinheiten „aufwachen“, und zwei ALU in der ersten der zweiten Verarbeitungseinheiten können an den Ausgangsdaten von der ersten der ersten Verarbeitungseinheiten operieren.
  • Zur Bereitstellung komplexer Verarbeitung der Sensordaten-Streams kann das Verfahren konditionales Routen von Ausgangsdaten der ersten der zweiten Verarbeitungseinheiten durch eine erste der zweiten Verarbeitungseinheiten (in H2) zu einem oder mehreren von Folgendem umfassen: Speicher, einer zweiten Peer-Verarbeitungseinheit (in H2) und einer Verarbeitungseinheit in einer dritten Verarbeitungsschicht (H3), auf der Basis von Ausgangdaten der ersten der zweiten Verarbeitungseinheiten.
  • Um Strom zu sparen, umfasst das Verfahren Anhalten einer oder mehrerer der zweiten Verarbeitungseinheiten, bis eine oder mehrere von ersten Verarbeitungseinheiten interessierende Aktivität in den Sensordaten-Streams detektieren. Das Verfahren kann ferner Anhalten einer oder mehrerer der dritten Verarbeitungseinheiten umfassen, bis eine oder mehrere von zweiten Verarbeitungseinheiten interessierende Aktivität in den Daten detektieren.
  • Anwendungen, Varianten und Implementierungen
  • In bestimmten Kontexten können die hier erörterten Merkmale anwendbar sein auf Verbraucher-(tragbare)Vorrichtungen, medizinische Systeme, die Sensoren enthalten, wissenschaftliche Instrumentation, die viele Sensoren enthält, drahtlose und verdrahtete Kommunikation, Radar, der Sensor/Empfänger enthält, industrielle Prozesssteuerung, die Sensoren enthält, Audio- und Videogeräte, die Sensoren enthalten, Instrumentation, die Sensoren enthält, und andere auf digitaler Verarbeitung basierende Systeme mit vielen Sensoren, die viele Streams von Sensordaten erzeugen. Grob gesagt sind die hier beschriebenen Ausführungsformen in vielen Anwendungen anwendbar, bei denen Überwachung von Sensordaten benötigt wird, ohne viel Strom zu verbrauchen. Das konfigurierbare Vorverarbeitungs-Array wird typischerweise verwendet, um einen Hauptprozessor bei der Verarbeitung von Sensordaten-Streams zu unterstützen. Das Array, der Hauptprozessor, können mit einer batteriebetriebenen Vorrichtung gekoppelt sein, die begrenzte Stromressourcen aufweist. In solchen Szenarien ist das konfigurierbare Vorverarbeitungs-Array besonders vorteilhaft, weil es kontinuierliches Überwachen von Sensordaten-Streams ermöglichen kann, während nur sehr wenig Strom verbraucht wird.
  • Neben tragbarer Elektronik sind die hier offenbarten Ausführungsformen auch in Systemen anwendbar, bei denen die Sensoren von dem Hauptprozessor und dem konfigurierbaren Vorverarbeitungs-Array entfernt verteilt sind. Ein Beispiel ist die Verwendung der offenbarten Ausführungsformen mit dem Internet of Things. Im Internet of Things können viele Sensoren (eindeutig identifizierbare Erfassungsvorrichtungen) kommunizierfähig mit dem konfigurierbaren Vorverarbeitungs-Array verbunden werden. Sensordaten können über die Schnittstelle (wie in der H1-Schicht zu sehen ist) als Rahmen oder Pakete von Daten bereitgestellt werden, wobei die Schnittstelle zu den Sensoren in der H1-Schicht eine Kommunikationsschnittstelle, z.B. eine drahtlose Kommunikationsschnittstelle, umfassen kann. Die H1-Verarbeitungseinheit kann für minimale Netzwerkrahmen- oder -paketverarbeitung verwendet werden, wie etwa Entkapselung von Rahmen/Paketen (z.B. Verarbeitung und/oder Entfernung von Headerinformationen), Datenberechnungen in Bezug auf Prüfsumme, andere Netzwerkschichtverarbeitung. Effektiv wird der Hauptprozessor davon entlastet, diese netzwerkbezogenen Funktionen auszuführen, und die H1-Verarbeitungseinheiten können höhere Schichten des konfigurierbaren Vorverarbeitungs-Arrays aktivieren, um die ankommenden Daten von den Sensoren weiter zu verarbeiten (wie etwa Verarbeitung des Nutzinformationsinhalts, Detektieren von interessierender Aktivität in dem Nutzinformationsinhalt oder andere geeignete Anwendungsverarbeitung).
  • Grob gesagt, sind die hier offenbarten Ausführungsformen auf Systeme anwendbar, bei denen Daten von vielen sendenden Vorrichtungen überwacht werden. Eine beliebige oder mehrere dieser Vorrichtungen können bezüglich des Hauptprozessors und des konfigurierbaren Vorverarbeitungs-Arrays lokal sein (z.B. über eine verdrahtete Schnittstelle) oder können von dem Hauptprozessor und dem konfigurierbaren Vorverarbeitungs-Array entfernt sein (z.B. über eine verdrahtete oder drahtlose Schnittstelle). Diese Vorrichtungen können Überwachungsvorrichtungen umfassen, die z.B. in der Gesundheitsversorgungsindustrie, der Anbau-/Landwirtschaftsindustrie, der Automobilindustrie, der Transportindustrie, der Sportindustrie, beim Verfolgen von Personen, beim Verfolgen von Inventar, in der Sicherheitsindustrie usw. verwendet werden. Bei einigen Anwendungen können diese Vorrichtungen Funkgeräte mit geringer Stromaufnahme umfassen, die in der Lage sind, Daten zu der Schnittstelle in dem konfigurierbaren Vorverarbeitungs-Array zu senden. Bei vielen dieser Anwendungen können die Daten Sensordaten oder Daten, die den Zustand des Sensors abtasten (z.B. „lebend“-Status, „Leerlauf“-Status oder „aktiv“-Status) umfassen. Zum Beispiel kann eine Anwendung, die den Status vieler Vorrichtungen überwacht, die konfigurierbare Vorverarbeitung wirksam einsetzen, um den Stromverbrauch des Hauptprozessors herabzusetzen. Bei diesen Anwendungen kann die Anwendung periodisch oder häufig den Status dieser Vorrichtungen erfragen und/oder die Vorrichtungen können den Status periodisch oder häufig zum Hauptprozessor senden. Um den Stromverbrauch zu verringern, kann das Erfragen, Empfangen und Verarbeiten von Statusinformationen für diese Vorrichtungen leicht in dem konfigurierbaren Vorverarbeitungs-Array implementiert werden. Die Verarbeitungseinheiten können auch dafür ausgelegt sein, interessierende Aktivität im Status mit Ursprung von einer Vorrichtung zu detektieren. Die Verarbeitungseinheiten mit mehr Komplexität zum Zusammenlegen von Pipelines (in einigen Fällen zum konditionalen Zusammenlegen) können auch für interessierende Aktivität in Statussen mit Ursprung von vielen Vorrichtungen ausgelegt sein, wodurch Platz für komplexere Erkennung oder Aktivitätsdetektion entsteht.
  • Bei einigen Ausführungsformen umfasst ein Verfahren zum Vorverarbeiten von Echtzeit-Sensordaten-Streams von vernetzten Sensoren Empfangen von Rahmen oder Paketen, die Echtzeit-Sensordaten-Streams umfassen, die von mehreren Sensoren kommen, in einem konfigurierbaren Vorverarbeitungs-Array, das einen Hauptprozessor unterstützt. Mehrere erste Verarbeitungseinheiten in einer ersten Verarbeitungsschicht (H1) des konfigurierbaren Vorverarbeitungs-Arrays können Netzwerkschicht-Verarbeitung an den Rahmen oder den Paketen ausführen, indem die Echtzeit-Sensordaten-Streams von den ersten Verarbeitungseinheiten mehreren zweiten Verarbeitungseinheiten in einer zweiten Verarbeitungsschicht (H2) des konfigurierbaren Vorverarbeitungs-Arrays zugeführt werden. Die zweiten Verarbeitungseinheiten können die Echtzeit-Sensordaten-Streams auf interessierende Aktivität verarbeiten. Jede der zweiten Verarbeitungseinheiten kann eine oder mehrere zweite Verarbeitungsschichtanweisungen von einem Hauptprozessor ausführen. Als Reaktion auf Detektion von interessierender Aktivität in den Echtzeit-Sensordaten können eine oder mehrere der zweiten Verarbeitungseinheiten mindestens eine der dritten Verarbeitungseinheiten in einer dritten Verarbeitungsschicht (H3) unterbrechen, und Ausgangsdaten der zweiten Verarbeitungsschicht werden der mindestens einen der dritten Verarbeitungseinheiten bereitgestellt.
  • Man beachte, dass die oben mit Bezug auf die Figuren besprochenen Aktivitäten für beliebige integrierte Schaltungen gelten, die Signalverarbeitung enthalten, insbesondere diejenigen, die spezialisierte Softwareprogramme oder Algorithmen ausführen können, von denen einige der Verarbeitung von digitalisierten Echtzeit-(Sensor-)Daten zugeordnet sein können. Bestimmte Ausführungsformen können einen Hauptprozessor aufweisen, der Mehrfach-DSP-Signalverarbeitung, Gleitkommaverarbeitung, Signal-/Steuerverarbeitung, Festfunktionsverarbeitung, Mikrocontroller-Anwendungen usw. betrifft.
  • In den obigen Besprechungen der Ausführungsformen können die Verarbeitungseinheiten, Funktionsblöcke, Kondensatoren, Takte, DFF, Teiler, Induktivitäten, Widerstände, Verstärker, Schalter, der digitale Kern, Transistoren und/oder andere Komponenten ohne weiteres ersetzt, substituiert oder anderweitig modifiziert werden, um bestimmten Schaltkreisbedürfnissen zu genügen. Außerdem ist zu beachten, dass die Verwendung von komplementären elektronischen Vorrichtungen, von Hardware, Software usw. eine gleichermaßen machbare Option zur Implementierung der Lehren der vorliegenden Offenbarung bietet.
  • Teile verschiedener Vorrichtungen zum Bereitstellen von konfigurierbarer Vorverarbeitung von Sensordaten können elektronische Schaltkreise zum Ausführen der hier beschriebenen Funktionen umfassen. In einigen Fällen können ein oder mehrere Teile der Vorrichtung durch einen Hauptprozessor bereitgestellt werden, der speziell dafür ausgelegt ist, die hier beschriebenen Funktionen zu triggern. Zum Beispiel kann der Prozessor eine oder mehrere anwendungsspezifische Komponenten umfassen oder kann programmierbare Logikgatter umfassen, die dafür ausgelegt sind, die hier beschriebenen Funktionen zu triggern. Die Schaltkreise können im analogen Bereich, digitalen Bereich oder in einer Mischsignaldomäne arbeiten. In einigen Fällen kann der Hauptprozessor dafür ausgelegt sein, das konfigurierbare Vorverarbeitungsarray dazu zu triggern, die hier beschriebenen Funktionen auszuführen, indem eine oder mehrere auf einem nichttransitorischen Computermedium gespeicherte Anweisungen ausgeführt werden.
  • Bei einer beispielhaften Ausführungsform kann eine beliebige Anzahl elektrischer Schaltungen der Figuren auf einer Platine einer zugeordneten elektronischen Vorrichtung implementiert werden. Die Platine kann eine allgemeine Leiterplatte sein, die verschiedene Komponenten des internen elektronischen Systems der elektronischen Vorrichtung halten kann und ferner Verbinder für andere Peripheriegeräte bereitstellen kann. Spezieller kann die Platine die elektrischen Verbindungen bereitstellen, durch die die anderen Komponenten des Systems elektrisch kommunizieren können. Beliebige geeignete Prozessoren (einschließlich digitaler Signalprozessoren, Mikroprozessoren, Unterstützen der Chipsätze usw.), computerlesbare nichttransitorische Speicherelemente usw. können geeignet auf der Basis von bestimmten Konfigurationsbedürfnissen, Verarbeitungsanforderungen, Computerentwürfen usw. mit der Platine gekoppelt werden. Es können andere Komponenten, wie etwa externe Speicherung, zusätzliche Sensoren, Steuerungen für audiovisuelle Anzeige und Peripherievorrichtungen als Einsteckkarten, über Kabel oder in die Platine selbst integriert angeschlossen sein.
  • Bei einer anderen beispielhaften Ausführungsform können die elektrischen Schaltungen der Figuren als selbstständige Module (z.B. eine Vorrichtung mit zugeordneten Komponenten und Schaltkreisen, die dafür ausgelegt sind, eine spezifische Anwendung oder Funktion auszuführen) oder als Einsteckmodule in anwendungsspezifischer Hardware elektronischer Vorrichtungen implementiert werden. Man beachte, dass bestimmte Ausführungsformen der vorliegenden Offenbarung ohne Weiteres entweder teilweise oder ganz in einer SOC-Kapselung (System on Chip) enthalten sein können. Ein SOC repräsentiert ein IC, das Komponenten eines Computers oder eines anderen elektronischen Systems in einen einzigen Chip integriert. Es kann digitale, analoge, Mischsignal- und oft Hochfrequenzfunktionen enthalten: Diese alle können auf einem einzigen Chipsubstrat bereitgestellt werden. Andere Ausführungsformen wären ein Mehrchipmodul (MCM) mit mehreren getrennten ICs, die sich in einer einzigen elektronischen Kapselung befinden und dafür ausgelegt sind, eng miteinander mit der elektronischen Kapselung in Interaktion zu treten. Bei verschiedenen anderen Ausführungsformen kann das konfigurierbare Vorverarbeitungs-Array als ein oder mehrere Siliziumkerne in anwendungsspezifischen integrierten Schaltungen (ASIC), am Einsatzort programmierbaren Gatearrays (FPGA) und andere Halbleiterchips implementiert werden.
  • Es muss auch angemerkt werden, dass alle hier skizzierten Spezifikationen, Abmessungen und Beziehungen (z.B. die Anzahl der Prozessoren, Logikoperationen usw.) lediglich für die Zwecke des Beispiels und der Lehre angegeben wurden. Solche Informationen können beträchtlich variiert werden, ohne vom Gedanken der vorliegenden Offenbarung oder dem Schutzumfang der angefügten Ansprüche abzuweichen. Die Beschreibungen gelten nur für ein nichteinschränkendes Beispiel und sollten dementsprechend als solches aufgefasst werden. In der obigen Beschreibung wurden beispielhafte Ausführungsformen mit Bezug auf bestimmte Prozessor- und/oder Komponentenanordnungen beschrieben. An solchen Ausführungsformen können verschiedene Modifikationen und Änderungen vorgenommen werden, ohne vom Schutzumfang der angefügten Ansprüche abzuweichen. Die Beschreibung und Zeichnungen sind dementsprechend nicht im einschränkenden, sondern im veranschaulichenden Sinne aufzufassen.
  • Man beachte, dass bei den zahlreichen hier angegebenen Beispielen Interaktion im Hinblick auf zwei, drei, vier oder mehr elektrische Komponenten beschrieben werden kann. Dies ist jedoch lediglich für die Zwecke der Klarheit und des Beispiels geschehen. Es versteht sich, dass das System auf beliebig geeignete Weise konsolidiert werden kann. Gemäß ähnlichen Entwurfsalternativen können beliebige der dargestellten Komponenten, Module und Elemente der Figuren in verschiedenen möglichen Konfigurationen kombiniert werden, die alle offensichtlich in dem allgemeinen Schutzumfang der vorliegenden Beschreibung liegen. In bestimmten Fällen kann es leichter sein, eine oder mehrere der Funktionalitäten einer gegebenen Menge von Flüssen zu beschreiben, indem nur eine begrenzte Anzahl elektrischer Elemente erwähnt wird. Es versteht sich, dass die elektrischen Schaltungen der Figuren und ihre Lehren ohne weiteres skalierbar sind und eine große Anzahl von Komponenten sowie kompliziertere/ausgereiftere Anordnungen und Konfigurationen ermöglichen können. Die angegebenen Beispiele sollten dementsprechend den Schutzumfang nicht beschränken oder die allgemeinen Lehren der elektrischen Schaltungen als potentiell auf unzählige andere Architekturen angewandt nicht behindern.
  • Man beachte, dass in der vorliegenden Beschreibung Erwähnungen verschiedener Merkmale (z.B. Elemente, Strukturen, Module, Komponenten, Schritte, Operationen, Eigenschaften usw.), die in „einer Ausführungsform“, „beispielhafter Ausführungsform“, „Ausführungsformen“, „einer anderen Ausführungsform“, „einigen Ausführungsformen“, „verschiedenen Ausführungsformen“, „weiteren Ausführungsformen“, „alternativer Ausführungsform“ und dergleichen enthalten sind, bedeuten sollen, dass beliebige solcher Merkmale in einer oder mehreren Ausführungsformen der vorliegenden Offenbarung enthalten sind, aber nicht unbedingt in denselben Ausführungsformen kombiniert werden können.
  • Außerdem ist es wichtig, anzumerken, dass die Operationen zur Verarbeitung von Sensordaten, die hier beschrieben werden, nur einige der möglichen Prozesse veranschaulichen, die durch in den Figuren dargestellte Systeme oder in diesen ausgeführt werden können. Einige dieser Operationen können gegebenenfalls weggelassen oder entfernt werden, oder diese Operationen können beträchtlich modifiziert oder geändert werden, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen. Außerdem kann das Timing dieser Operationen beträchtlich geändert werden. Die vorhergehenden Betriebsflüsse wurden als Beispiel und zur Besprechung angegeben. Hier beschriebene Ausführungsformen gewährleisten wesentliche Flexibilität dahingehend, dass beliebige geeignete Anordnungen, Chronologien, Konfigurationen und Timingmechanismen bereitgestellt werden können, ohne von den Lehren der vorliegenden Offenbarung abzuweichen.
  • Fachleute können zahlreiche andere Änderungen, Substitutionen, Abwandlungen, Abänderungen und Modifikationen bestimmen, und es ist beabsichtigt, dass die vorliegende Offenbarung alle solchen Änderungen, Substitutionen, Abwandlungen, Abänderungen und Modifikationen einschließt, die in den Schutzumfang der angefügten Ansprüche fallen. Man beachte, dass alle optionalen Merkmale der oben beschriebenen Vorrichtung auch mit Bezug auf das hier beschriebene Verfahren oder den hier beschriebenen Prozess implementiert werden können und Einzelheiten in den Beispielen an beliebiger Stelle in einer oder mehreren Ausführungsformen verwendet werden können.
  • Beispielhafte Ausführungsformen
  • Beispiel 1 ist ein konfigurierbares Vorverarbeitungs-Array zum Durchführen von Vorverarbeitung mehrerer Sensordaten-Streams, wobei das Array Folgendes umfasst: eine erste Verarbeitungsschicht zum Verarbeiten von Sensordaten-Streams, wobei die erste Verarbeitungsschicht eine oder mehrere erste Verarbeitungseinheiten aufweist, die mit mehreren Sensorschnittstellen verbunden sind, wobei mindestens eine der einen oder mehreren ersten Verarbeitungseinheiten eine einzelne arithmetisch-logische Einheit (ALU) aufweist; und eine zweite Verarbeitungsschicht zum Verarbeiten von Ausgangsdaten von der ersten Verarbeitungsschicht, wobei die zweite Verarbeitungsschicht eine oder mehrere zweite Verarbeitungseinheiten aufweist, die eine oder mehreren zweiten Verarbeitungseinheiten mindestens zwei ALU aufweisen, wobei eine erste der zweiten Verarbeitungseinheiten Schaltkreise umfasst, die konditionales Datenrouting auf der Basis der Ausgangsdaten der Verarbeitungseinheit zu einem oder mehreren von Folgendem umfasst: Speicher, einer zweiten Peer-Verarbeitungseinheit und einer Verarbeitungseinheit in einer dritten Verarbeitungsschicht.
  • In Beispiel 2 kann das Array von Beispiel 1 umfassen, dass die dritte Schicht eine oder mehrere dritte Verarbeitungseinheiten umfasst, wobei jede eine oder mehrere dritte Verarbeitungseinheit drei ALU aufweist.
  • In Beispiel 3 kann das Array von Beispiel 1 oder 2 eine zirkulare Warteschlange an einem Ausgang einer der ersten Verarbeitungseinheiten (oder anderer Verarbeitungseinheiten in anderen Verarbeitungsschichten) umfassen.
  • In Beispiel 4 kann das Array irgendeines der obigen Beispiele umfassen, dass die eine oder mehreren ersten Verarbeitungseinheiten dafür ausgelegt sind, eine Einzeldurchgangsausführung von Anweisungen in einer Schleife als Reaktion auszuführen.
  • In Beispiel 5 kann das Array irgendeines der obigen Beispiele umfassen, dass mindestens eine der einen oder mehreren zweiten Verarbeitungseinheiten einen Interrupt- und Adressengenerator zum Speichern von Interrupt-, Sprung- und Rückkehrvektoren in Registern, die ein Programmzähler zur Erzeugung des Programmzählers verwendet, umfasst.
  • In Beispiel 6 kann das Array irgendeines der obigen Beispiele umfassen, dass mindestens eine der einen oder mehreren zweiten Verarbeitungseinheiten einen Interrupt- und Adressengenerator umfasst, der einen Programmzähler aufweist, der durch die Ausgabe einer ALU der zweiten Verarbeitungseinheit programmierbar ist.
  • In Beispiel 7 kann das Array irgendeines der obigen Beispiele umfassen, dass das Array über eine serielle Schnittstelle mit mehreren Sensoren gekoppelt ist.
  • In Beispiel 8 kann das Array irgendeines der obigen Beispiele umfassen, dass das Array mit einer batteriebetriebenen Vorrichtung gekoppelt ist.
  • In Beispiel 9 kann das Array irgendeines der obigen Beispiele umfassen, dass die eine oder mehreren zweiten Verarbeitungseinheiten anhalten, bis eine oder mehrere erste Verarbeitungseinheiten interessierende Aktivität detektieren.
  • In Beispiel 10 kann das Array irgendeines der obigen Beispiele umfassen, dass eine oder mehrere dritte Verarbeitungseinheiten der dritten Schicht anhalten, bis die eine oder mehreren zweiten Verarbeitungseinheiten interessierende Aktivität detektieren.
  • In Beispiel 11 kann das Array irgendeines der obigen Beispiele umfassen, dass das Array asynchron (ohne einen Takt) arbeitet.

Claims (25)

  1. Konfigurierbares Vorverarbeitungs-Array zum Durchführen von Vorverarbeitung von Echtzeit-Sensordaten-Streams und Verringern des Stromverbrauchs eines Gesamtsystems, wobei das konfigurierbare Vorverarbeitungs-Array Folgendes umfasst: mehrere erste Verarbeitungseinheiten in einer ersten Verarbeitungsschicht zum Verarbeiten von Echtzeit-Sensordaten-Streams, wobei die ersten Verarbeitungseinheiten jeweils ausgelegt sind zum Ausführen einer oder mehrerer erster Verarbeitungsschichtanweisungen von einem Hauptprozessor; und mehrere zweite Verarbeitungseinheiten in einer zweiten Verarbeitungsschicht zum Verarbeiten von durch die erste Verarbeitungsschicht erzeugten Ausgangsdaten, wobei die zweiten Verarbeitungseinheiten jeweils ausgelegt sind zum Ausführen einer oder mehrerer zweiter Verarbeitungsschichtanweisungen von dem Hauptprozessor; wobei eine erste der zweiten Verarbeitungseinheiten Schaltkreise umfasst, die konditionales Datenrouting zu einem oder mehreren von Folgendem bereitstellen: Speicher, einer zweiten Peer-Verarbeitungseinheit und einer Verarbeitungseinheit in einer dritten Verarbeitungsschicht, und das konditionale Datenrouting auf Ausgangsdaten der ersten der zweiten Verarbeitungseinheiten basiert.
  2. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, wobei die erste Verarbeitungsschicht ferner eine zirkulare Warteschlange an einem Ausgang einer der ersten Verarbeitungseinheiten umfasst, wobei eine der zweiten Verarbeitungseinheiten die Ausgangsdaten direkt über die zirkulare Warteschlange von der ersten Verarbeitungsschicht abruft.
  3. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, ferner umfassend: einen geteilten Speicher, der der ersten Verarbeitungsschicht, der zweiten Verarbeitungsschicht und der dritten Verarbeitungsschicht ohne Störung von dem Hauptprozessor zugänglich ist.
  4. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, wobei eine der ersten Verarbeitungseinheiten einen Adressengeneratorblock, einen Anweisungsspeicher, einen Lese- und Schreibarbitrierungsblock, Arbeitsregister zum Speichern von Zwischenergebnissen der einen oder mehreren ersten Schichtverarbeitungsanweisungen, Spezialfunktionsregister zum Übermitteln von Daten, Datenrouting und einen Fallaussageblock der arithmetisch-logischen Einheit umfasst.
  5. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, wobei mindestens eine der ersten Verarbeitungseinheiten ausgelegt ist zum: Ausführen einer Einzeldurchgangsausführung von Anweisungen in einem Anweisungsspeicher als Reaktion auf ein Freigabesignal; und Anhalten nach der Ausführung der Einzeldurchgangsausführung von Anweisungen, bis ein anderes Freigabesignal getriggert wird.
  6. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, wobei mindestens eine der ersten Verarbeitungseinheiten asynchrone Logik umfasst, die einen Takt der asynchronen Logik torschaltet, wenn die Ausführung einer oder mehrerer erster Verarbeitungsschichtanweisungen abgeschlossen ist.
  7. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, wobei mindestens eine der einen oder mehreren zweiten Verarbeitungseinheiten einen Interrupt- und Adressengenerator zum Speichern von Interrupt-, Sprung- und Rückkehrvektoren in Registern, die ein Programmzähler zur Erzeugung des Programmzählers verwendet, umfasst.
  8. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, wobei mindestens eine der einen oder mehreren zweiten Verarbeitungseinheiten einen Interrupt- und Adressengenerator umfasst, der einen Programmzähler aufweist, der durch die Ausgabe einer arithmetisch-logischen Einheit der zweiten Verarbeitungseinheit programmierbar ist.
  9. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, wobei mindestens eine der einen oder mehreren ersten Verarbeitungseinheiten jeweils eine einzige arithmetisch-logische Einheit aufweist und mindestens die eine oder mehreren zweiten Verarbeitungseinheiten jeweils zwei arithmetisch-logische Einheiten aufweisen.
  10. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, wobei eine der zweiten Verarbeitungseinheiten zwei arithmetisch-logische Einheiten zum Verarbeiten von zwei Streams von Daten gleichzeitig aufweist.
  11. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, ferner umfassend: mehrere dritte Verarbeitungseinheiten in der dritten Verarbeitungsschicht zum Verarbeiten von durch die zweite Verarbeitungsschicht erzeugten Ausgangsdaten, wobei die dritten Verarbeitungseinheiten jeweils ausgelegt sind zum Ausführen einer oder mehrerer dritter Verarbeitungsschichtanweisungen von dem Hauptprozessor.
  12. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 11, wobei mindestens eine der dritten Verarbeitungseinheiten jeweils drei arithmetisch-logische Einheiten aufweist.
  13. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 11, wobei die eine der dritten Verarbeitungseinheiten dafür ausgelegt ist, Ausgaben von zwei arithmetisch-logischen Einheiten zu vereinigen.
  14. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, wobei jede der mehreren ersten Verarbeitungseinheiten mit einer jeweiligen Sensorschnittstelle verbunden ist.
  15. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 14, wobei der jeweilige Sensor eine serielle Schnittstelle ist.
  16. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, wobei das Array mit einer batteriebetriebenen Vorrichtung gekoppelt ist.
  17. Konfigurierbares Vorverarbeitungs-Array nach Anspruch 1, wobei das Array asynchron ohne ein geteiltes Taktsignal zwischen den Verarbeitungseinheiten arbeitet.
  18. Verfahren zum Vorverarbeiten von Echtzeit-Sensordaten-Streams und Verringern von Kontextwechsel eines Hauptprozessors, wobei das Verfahren Folgendes umfasst: paralleles Überwachen von Echtzeit-Sensordaten-Streams von mehreren Sensoren durch mehrere erste Verarbeitungseinheiten in einer ersten Verarbeitungsschicht eines konfigurierbaren Vorverarbeitungs-Arrays gemäß einer oder mehreren ersten Verarbeitungsschichtanweisungen von dem Hauptprozessor; und wenn durch eine erste der ersten Verarbeitungseinheiten interessierende Aktivität in den Echtzeit-Sensordaten-Streams detektiert wird, Unterbrechen einer zweiten Verarbeitungseinheit in einer zweiten Verarbeitungsschicht und Bereitstellen von Ausgangsdaten von der ersten der ersten Verarbeitungseinheiten für die zweite Verarbeitungseinheit in der zweiten Verarbeitungsschicht.
  19. Verfahren nach Anspruch 18, wobei Überwachen der Echtzeit-Sensordaten-Streams Anwenden einer Schwelle auf mindestens einen der Echtzeit-Sensordaten-Streams umfasst.
  20. Verfahren nach Anspruch 18, ferner umfassend: Verarbeiten der Ausgangsdaten von der ersten der ersten Verarbeitungseinheiten durch eine erste der zweiten Verarbeitungseinheiten gemäß einer oder mehreren zweiten Schichtverarbeitungsanweisungen von dem Hauptprozessor.
  21. Verfahren nach Anspruch 20, ferner umfassend: Lesen der Ausgangsdaten von der ersten der Verarbeitungseinheiten durch die zweite Verarbeitungseinheit im Burstmodus über eine zirkulare Warteschlange.
  22. Verfahren nach Anspruch 20, ferner umfassend: konditionales Routen von Ausgangdaten der ersten der zweiten Verarbeitungseinheiten durch eine erste der zweiten Verarbeitungseinheiten zu einem oder mehreren von Folgendem: Speicher, einer zweiten Peer-Verarbeitungseinheit und einer Verarbeitungseinheit in einer dritten Verarbeitungsschicht, basierend auf Ausgangsdaten der ersten der zweiten Verarbeitungseinheiten.
  23. Verfahren nach Anspruch 18, ferner umfassend: Anhalten einer oder mehrerer der zweiten Verarbeitungseinheiten, bis eine oder mehrere von ersten Verarbeitungseinheiten interessierende Aktivität detektieren.
  24. Verfahren nach Anspruch 22, ferner umfassend: Anhalten einer oder mehrerer der dritten Verarbeitungseinheiten, bis eine oder mehrere von zweiten Verarbeitungseinheiten interessierende Aktivität detektieren.
  25. Verfahren zum Vorverarbeiten von Echtzeit-Sensordaten-Streams von vernetzten Sensoren, wobei das Verfahren Folgendes umfasst: Empfangen von Rahmen oder Paketen, die von mehreren Sensoren stammende Echtzeit-Sensordaten-Streams umfassen, in einem konfigurierbaren Vorverarbeitungs-Array, das einen Hauptprozessor unterstützt; Ausführen von Netzwerkschichtverarbeitung an den Rahmen oder den Paketen durch mehrere erste Verarbeitungseinheiten in einer ersten Verarbeitungsschicht des konfigurierbaren Vorverarbeitungs-Arrays; Bereitstellen der Echtzeit-Sensordaten-Streams von den ersten Verarbeitungseinheiten für mehrere zweite Verarbeitungseinheiten in einer zweiten Verarbeitungsschicht des konfigurierbaren Vorverarbeitungs-Arrays; Verarbeiten der Echtzeit-Sensordaten-Streams durch die zweiten Verarbeitungseinheiten, wobei jede einzelne der zweiten Verarbeitungseinheiten eine oder mehrere zweite Verarbeitungsschichtanweisungen von einem Hauptprozessor ausführt; und wenn interessierende Aktivität in den Echtzeit-Sensordaten detektiert wird, Unterbrechen mindestens einer der dritten Verarbeitungseinheiten in einer dritten Verarbeitungsschicht und Bereitstellen von Ausgangsdaten der zweiten Verarbeitungsschicht für die mindestens eine der dritten Verarbeitungseinheiten.
DE112015004626.7T 2014-10-08 2015-10-06 Konfigurierbares Vorverarbeitungs-Array Withdrawn DE112015004626T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462061210P 2014-10-08 2014-10-08
US62/061,210 2014-10-08
PCT/US2015/054265 WO2016057531A1 (en) 2014-10-08 2015-10-06 Configurable pre-processing array

Publications (1)

Publication Number Publication Date
DE112015004626T5 true DE112015004626T5 (de) 2017-06-22

Family

ID=55653652

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015004626.7T Withdrawn DE112015004626T5 (de) 2014-10-08 2015-10-06 Konfigurierbares Vorverarbeitungs-Array

Country Status (4)

Country Link
US (1) US20170249282A1 (de)
CN (1) CN107113719B (de)
DE (1) DE112015004626T5 (de)
WO (1) WO2016057531A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US11327475B2 (en) 2016-05-09 2022-05-10 Strong Force Iot Portfolio 2016, Llc Methods and systems for intelligent collection and analysis of vehicle data
US11507064B2 (en) 2016-05-09 2022-11-22 Strong Force Iot Portfolio 2016, Llc Methods and systems for industrial internet of things data collection in downstream oil and gas environment
US11774944B2 (en) 2016-05-09 2023-10-03 Strong Force Iot Portfolio 2016, Llc Methods and systems for the industrial internet of things
US11131989B2 (en) 2017-08-02 2021-09-28 Strong Force Iot Portfolio 2016, Llc Systems and methods for data collection including pattern recognition
CN109669527A (zh) * 2018-12-18 2019-04-23 Oppo广东移动通信有限公司 数据处理方法和电子设备
US20220318638A1 (en) * 2019-08-22 2022-10-06 Google Llc Propagation latency reduction

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5583506A (en) * 1988-07-22 1996-12-10 Northrop Grumman Corporation Signal processing system and method
US5459798A (en) * 1993-03-19 1995-10-17 Intel Corporation System and method of pattern recognition employing a multiprocessing pipelined apparatus with private pattern memory
US6049842A (en) * 1997-05-01 2000-04-11 International Business Machines Corporation Efficient data transfer mechanism for input/output devices
US6032248A (en) * 1998-04-29 2000-02-29 Atmel Corporation Microcontroller including a single memory module having a data memory sector and a code memory sector and supporting simultaneous read/write access to both sectors
US20070270671A1 (en) * 2006-04-10 2007-11-22 Vivometrics, Inc. Physiological signal processing devices and associated processing methods
CN100585353C (zh) * 2007-11-30 2010-01-27 清华大学 基于阵列式超薄柔顺力传感器的曲面层间挤压力监测系统
US8487655B1 (en) * 2009-05-05 2013-07-16 Cypress Semiconductor Corporation Combined analog architecture and functionality in a mixed-signal array
WO2011115769A2 (en) * 2010-03-15 2011-09-22 California Institute Of Technology System and method for cognitive processing for data fusion
US20130103212A1 (en) * 2010-06-30 2013-04-25 Nokia Corporation Method and apparatus for providing context-based power consumption control
CN102665049B (zh) * 2012-03-29 2014-09-17 中国科学院半导体研究所 基于可编程视觉芯片的视觉图像处理系统
US20140031060A1 (en) * 2012-07-25 2014-01-30 Aro, Inc. Creating Context Slices of a Storyline from Mobile Device Data
US9367119B2 (en) * 2012-10-22 2016-06-14 Maxim Integrated Products, Inc. System and method to reduce power consumption in a multi-sensor environment

Also Published As

Publication number Publication date
WO2016057531A1 (en) 2016-04-14
US20170249282A1 (en) 2017-08-31
CN107113719B (zh) 2020-06-23
CN107113719A (zh) 2017-08-29

Similar Documents

Publication Publication Date Title
DE112015004626T5 (de) Konfigurierbares Vorverarbeitungs-Array
EP3404587B1 (de) Cnn-verarbeitungsverfahren und vorrichtung
DE102020120019A1 (de) Proaktive di/dt-spannungs-dachabfall-abschwächung
DE112015002522B4 (de) System-on-a-chip mit always-on-prozessor, der das SOC rekonfiguriert und Nur-Speicher-Kommunikationsmodus unterstützt
DE102020102783A1 (de) Verfahren und einrichtungen zum verbessern einer leistungsdatensammlung einer hochleistungsberechnungsanwendung
DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
DE112017000721T5 (de) Verfahren, einrichtung und befehle für thread-aussetzung auf benutzerebene
DE102014003671A1 (de) Prozessoren, verfahren und systeme zum entspannen der synchronisation von zugriffen auf einen gemeinsam genutzten speicher
DE112013005368T5 (de) Prozessoren, verfahren und systeme für echtzeit-befehlsverfolgung
DE102016116158A1 (de) Verfahren zum Betreiben einer CPU und Verfahren zum Betreiben eines Systems, welches die CPU aufweist
DE112017001704T5 (de) Arbiterbasierte Serialisierung von Prozessor-System-Management-Interrupt-Ereignissen
DE112017004837T5 (de) Systeme und Verfahren zum Differenzieren von Funktionsleistung nach Eingabeparametern
Said et al. Embedded real-time video processing system on FPGA
Podlubne et al. Low power image processing applications on FPGAs using dynamic voltage scaling and partial reconfiguration
Paul et al. Resource-awareness on heterogeneous MPSoCs for image processing
DE102020134345A1 (de) Technologie zum lernen und abladen häufiger speicherzugriffs- und rechenmuster
Liang et al. Evaluating R-based big data analytic frameworks
WO2004088502A2 (de) Verfahren und vorrichtung für die datenverarbeitung
Bergmann et al. A process model for hardware modules in reconfigurable system-on-chip
DE112022000723T5 (de) Verzweigungsvorgang für eine schaltung eines neuronalen prozessors
Reichel et al. An ASIP-based control system for vision chips with highly parallel signal processing
Falcou et al. A parallel implementation of a 3d reconstruction algorithm for real-time vision.
DE112020007283T5 (de) Dockingboard für eine Multiformat-Grafikverarbeitungseinheit
DE112016006987T5 (de) Eingabevorrichtung für elektronische vorrichtungen
Wong et al. Hardware accelerator implementation on FPGA for video processing

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: ANALOG DEVICES, INC., WILMINGTON, US

Free format text: FORMER OWNER: ANALOG DEVICES, INC., NORWOOD, MA, US

R082 Change of representative

Representative=s name: WITTE, WELLER & PARTNER PATENTANWAELTE MBB, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee