DE102020117505A1 - Autonomes system zum einreihen von jobs in eine warteschlange für hardware -beschleuniger - Google Patents

Autonomes system zum einreihen von jobs in eine warteschlange für hardware -beschleuniger Download PDF

Info

Publication number
DE102020117505A1
DE102020117505A1 DE102020117505.1A DE102020117505A DE102020117505A1 DE 102020117505 A1 DE102020117505 A1 DE 102020117505A1 DE 102020117505 A DE102020117505 A DE 102020117505A DE 102020117505 A1 DE102020117505 A1 DE 102020117505A1
Authority
DE
Germany
Prior art keywords
tcb
queue
priority level
tcbs
processor
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
DE102020117505.1A
Other languages
English (en)
Inventor
Abhijit Giri
Rajib Sarkar
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 International ULC
Original Assignee
Analog Devices International ULC
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
Priority claimed from US16/661,819 external-priority patent/US11397612B2/en
Application filed by Analog Devices International ULC filed Critical Analog Devices International ULC
Publication of DE102020117505A1 publication Critical patent/DE102020117505A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

Ausführungsformen können sich auf eine elektronische Vorrichtung beziehen, die einen Prozessor, der kommunikationstechnisch mit einem Hardware-Beschleuniger gekoppelt ist, aufweist. Der Prozessor kann dazu ausgebildet sein, basierend auf einer Angabe einer Prioritätsstufe in einem Aufgabensteuerblock (TCB) eine Stelle zu identifizieren, an dem der TCB in eine Warteschlange von TCB eingefügt werden sollte. Der Hardware-Beschleuniger kann Jobs, die sich auf die Warteschlange von TCB beziehen, in einer Reihenfolge, die sich auf die Reihenfolge von TCB innerhalb der Warteschlange bezieht, ausführen. Andere Ausführungsformen weniger Merkmale und können beschrieben oder beansprucht sein.

Description

  • Querverweis auf verwandte Anmeldung
  • Diese Anmeldung beansprucht die Priorität der indischen Patentanmeldung 201941030394 , eingereicht am 27. Juli 2019, und der US-Patentanmeldung 16/661,819, eingereicht am 23. Oktober 2019, die hier durch Bezugnahme vollständig mit aufgenommen sind.
  • Gebiet der Offenbarung
  • Diese Offenbarung bezieht sich allgemein auf das Gebiet der Berechnungstechnik und insbesondere, wenn auch nicht ausschließlich, auf ein System und ein Verfahren zum Einreihen von Jobs in eine Warteschlange in einer Berechnungsvorrichtung.
  • Hintergrund
  • Hardware-Beschleuniger sind in digitalen Signalprozessoren (DSPs) allgegenwärtig, um die häufigsten DSP-Routinen wie endliche Impulsantwort (FIR), unendliche Impulsantwort (IIR), schnelle Fourier-Transformation (FFT) usw. abzustoßen. Obwohl der Gedanke sein kann, die Rechenleistung signifikant zu steigern, gibt es häufig eine hohe Hürde für ihre effektive Verwendung aufgrund der Notwendigkeit, dass der Anweisungsverarbeitungskern Datenströme aufbauen und die Ausführung verfolgen und managen muss. Ein solches kerngetriebenes Management erfordert häufig auch signifikante Anweisungsabläufe. Das macht es sehr schwierig, sie nahtlos in den Datenstrom durch den DSP einzuordnen, wo der Kern und der Beschleuniger die Verarbeitungslast effizient miteinander teilen müssen. Als ein Ergebnis bleiben Beschleuniger ungenutzt, außer wenn der Beschleuniger eine Berechnungsaufgabe um ein Vielfaches schneller im Vergleich zur Kernausführungszeit und dem damit verbundenen Overhead ausführen kann.
  • Figurenliste
    • 1 bildet eine Beispielstruktur eines Aufgabensteuerblocks (TCB) in Übereinstimmung mit verschiedenen Ausführungsformen ab.
    • 2 bildet ein Beispiel für das Einreihen von Jobs in eine Warteschlange in Übereinstimmung mit verschiedenen Ausführungsformen ab.
    • 3 bildet eine beispielhafte Anwendungsprogrammierschnittstelle (API), die verwendet werden kann, um das Einreihen von Jobs in eine Warteschlange in einem Hardware-Beschleuniger auszuführen, in Übereinstimmung mit verschiedenen Ausführungsformen ab.
    • 4 bildet eine weitere beispielhafte API, die verwendet werden kann, um das Einreihen von TCB-Jobs in eine Warteschlange auszuführen, in Übereinstimmung mit verschiedenen Ausführungsformen ab.
    • 5 bildet eine weitere beispielhafte API, die verwendet werden kann, um das Einreihen von TCB-Jobs in eine Warteschlange auszuführen, in Übereinstimmung mit verschiedenen Ausführungsformen ab.
    • 6 bildet eine weitere beispielhafte API, die verwendet werden kann, um das Einreihen von TCB-Jobs in eine Warteschlange auszuführen, in Übereinstimmung mit verschiedenen Ausführungsformen ab.
    • 7 bildet eine weitere beispielhafte API, die verwendet werden kann, um das Einreihen von TCB-Jobs in eine Warteschlange auszuführen, in Übereinstimmung mit verschiedenen Ausführungsformen ab.
    • 8 ist ein Blockdiagramm einer beispielhaften elektrischen Vorrichtung, die einen Hardware-Beschleuniger und einen Prozessor aufweisen kann, die zum Ausführen von Einreihen von TCB-Jobs in eine Warteschlange ausgebildet ist, in Übereinstimmung mit verschiedenen Ausführungsformen.
  • Zusammenfassung der Offenbarung
  • Ausführungsformen können sich auf eine elektronische Vorrichtung beziehen, die einen Prozessor, der kommunikationstechnisch mit einem Hardware-Beschleuniger gekoppelt ist, aufweist. Der Prozessor kann dazu ausgebildet sein, basierend auf einer Angabe einer Prioritätsstufe (priority level) in einem TCB eine Stelle zu identifizieren, an der der TCB in eine Warteschlange von TCB eingefügt werden sollte. Der Hardware-Beschleuniger kann Jobs ausführen, die sich auf die Warteschlange von TCB beziehen, in einer Reihenfolge, die sich auf die Reihenfolge von TCB innerhalb der Warteschlange bezieht.
  • Eine Ausführungsform kann sich auf eine Berechnungsvorrichtung beziehen, die Folgendes aufweist: einen Prozessor zum: Identifizieren in einem TCB einer Angabe einer Prioritätsstufe des TCB; Identifizieren basierend auf der Angabe der Prioritätsstufe einer Stelle in einer Warteschlange von mehreren TCB; und Einfügen des TCB in die Warteschlange an der identifizierten Stelle; und einen Hardware-Beschleuniger, der mit dem Prozessor kommunikationstechnisch gekoppelt ist, wobei der Hardware-Beschleuniger zum Ausführen von Jobs, die sich auf TCB in der Warteschlange der mehreren TCBs beziehen, dient, wobei der Hardware-Beschleuniger dazu dient, einen Job, der sich auf einen TCB bezieht, in Übereinstimmung mit einer Reihenfolge des TCB in der Warteschlange der mehreren TCBs auszuführen.
  • Eine weitere Ausführungsform kann sich auf einen Prozessor beziehen, der Folgendes aufweist: eine Kommunikationsschnittstelle zum Kommunizieren mit einem Hardware-Beschleuniger; und Logik, die mit der Kommunikationsschnittstelle gekoppelt ist, wobei die Logik dient zum: Identifizieren in einem TCB einer Angabe einer Prioritätsstufe des TCB; und Einfügen basierend auf der Angabe der Prioritätsstufe des TCB an einer Stelle in einer Warteschlange von mehreren TCB; wobei der Hardware-Beschleuniger zum Ausführen entsprechender TCBs aus den mehreren TCBs basierend auf ihrer Stelle innerhalb der Warteschlange dient.
  • Eine weitere Ausführungsform kann sich auf ein oder mehrere nichtflüchtige computerlesbare Medien beziehen, die Anweisungen aufweisen, die dann, wenn sie durch eine elektronische Vorrichtung ausgeführt werden, dazu dienen, einen Prozessor der elektronischen Vorrichtung zu veranlassen zum: Identifizieren einer Warteschlange von mehreren TCB, wobei die jeweiligen TCB aus den mehreren TCBs eine Angabe einer Prioritätsstufe der jeweiligen TCB innerhalb der Warteschlange aufweisen, und einen Hardware-Beschleuniger, der dazu dient, einen Job, der sich auf eine entsprechende TCB bezieht, in Übereinstimmung mit der Prioritätsstufe des TCB auszuführen; eine Anwendungsprogrammierschnittstelle (API), die sich auf die Warteschlange bezieht, auszuführen; und die Warteschlange basierend auf der Ausführung der API zu modifizieren.
  • Ausführliche Beschreibung
  • In der folgenden ausführlichen Beschreibung ist auf die begleitenden Zeichnungen Bezug genommen, die einen Teil davon bilden, wobei gleiche Bezugszeichen durchgehend gleiche Teile bezeichnen, und in denen durch Darstellung Ausführungsformen gezeigt sind, in denen der Gegenstand der vorliegenden Offenbarung praktiziert werden kann. Es ist zu verstehen, dass andere Ausführungsformen benutzt werden können und strukturelle oder logische Änderungen vorgenommen werden können, ohne von dem Schutzbereich der vorliegenden Offenbarung abzuweichen. Deshalb ist die folgende ausführliche Beschreibung nicht in einem einschränkenden Sinn zu verstehen.
  • Für die Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „A oder B“ (A), (B) oder (A und B). Für die Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „A, B oder C“ (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
  • Die Beschreibung kann die Ausdrücke „in einer Ausführungsform“ oder „in Ausführungsformen“ verwenden, die sich jeweils auf eine oder mehrere derselben oder verschiedener Ausführungsformen beziehen können. Darüber hinaus sind die Begriffe „umfassen“, „enthalten“, „aufweisen“ und dergleichen, wie sie in Bezug auf Ausführungsformen der vorliegenden Offenbarung verwendet sind, synonym.
  • Der Begriff „gekoppelt mit“, zusammen mit seinen Ableitungen, kann hier verwendet sein. „Gekoppelt“ kann eines oder mehrere aus dem Folgenden bedeuten. „Gekoppelt“ kann bedeuten, dass zwei oder mehr Elemente in direktem physikalischem oder elektrischem Kontakt sind. „Gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente in indirektem Kontakt miteinander sind, sie jedoch immer noch zusammenarbeiten oder miteinander zusammenwirken, und es kann bedeuten, dass ein oder mehr andere Elemente zwischen den Elementen, von denen gesagt ist, dass sie miteinander gekoppelt sind, gekoppelt oder verbunden sind. Der Begriff „direkt gekoppelt“ kann bedeuten, dass zwei oder mehr Elemente in direktem Kontakt sind. In einigen Ausführungsformen kann sich „gekoppelt“ darauf beziehen, dass zwei Elemente physikalisch in unmittelbarer Nähe zueinander platziert sind und einen exklusiven und sehr schnellen Zugriff aufeinander aufweisen.
  • Verschiedene Operationen können als wiederum mehrere diskrete Operationen auf eine Weise beschrieben sein, die am besten zum Verstehen des beanspruchten Gegenstands geeignet ist. Die Reihenfolge der Beschreibung sollte jedoch nicht so gedeutet werden, dass sie impliziert, dass diese Operationen notwendigerweise von der Reihenfolge abhängig sind.
  • Wie er hier verwendet ist, kann sich der Begriff „Modul“ auf eine anwendungsspezifische integrierte Schaltung (ASIC), eine elektronische Schaltung, einen Prozessor (gemeinsam verwendet, dediziert oder Gruppe) oder Speicher (gemeinsam verwendet, dediziert oder Gruppe), die/der ein oder mehrerer Software- oder Firmware-Programme ausführt, die eine kombinatorische Logikschaltung oder andere geeignete Komponenten, die die beschriebene Funktionalität bereitstellen, beziehen, ein Teil davon sein oder sie/ihn enthalten.
  • Wie vorstehend erwähnt können Hardware-Beschleuniger aus einer Vielzahl von Gründen ungenutzt sein. Ein Managementsystem, durch das der Kern spezielle DSP-Aufgaben effizient zu einem dedizierten Hardware-Beschleuniger entladen kann und nachfolgend durch den Hardware-Beschleuniger bei Fertigstellung der Aufgabe benachrichtigt werden kann, kann jedoch nützlich sein. Die Anwendbarkeit eines solchen Systems kann ansteigen, falls das Managementsystem dem Kern ermöglicht, Aufgaben an einen Pool zu übergeben, ohne auf die Fertigstellung des aktuellen Jobs zu warten.
  • Ausführungsformen hier können eine Vielzahl von Vorteilen bieten. Beispielsweise kann ein Hardware-Beschleuniger, der durch ein solches Managementsystem verwaltet wird, einem Prozessor oder Prozessorkern ermöglichen, eine oder mehrere DSP-Aufgaben zu dem Hardware-Beschleuniger zu entladen. Zusätzlich kann ein Hardware-basiertes Warteschlangensystem für den Beschleuniger gegenüber einem Software-basierten Managementsystem vorteilhaft sein, weil ein vollständig Software-basiertes Managementsystem rechen- oder speicherintensiv sein kann, weil der Prozessor den Aufgaben-Pool managen und dem Beschleuniger die nächste Aufgabe zuweisen muss, wenn die aktuelle Aufgabe endet.
  • Allgemein beziehen sich Ausführungsformen hier auf eine Hardware-basierte autonome Jobwarteschlangenmanagementstruktur. Ausführungsformen können eine Anzahl von Elementen enthalten, die verwendet werden können, um die Managementstruktur zu implementieren. Ein solches Element kann sich auf eine verkettete DMA-Infrastruktur beziehen, die verwendet werden kann, um den Hardware-Beschleuniger zu managen. Ein weiteres solches Element kann sich auf eine Übergabe eines neuen Jobs innerhalb der Managementstruktur beziehen. Insbesondere kann die Übergabe eines neuen Jobs durch Erzeugen eines neuen Eintrags in der DMA-Kette ausgeführt werden. Die DMA-Kette kann beispielsweise eine verkettete Liste von TCB sein. Allgemein kann ein TCB als ein Element betrachtet werden, das sich auf einen spezifischen Job bezieht, der durch den Hardware-Beschleuniger auszuführen ist. Jeder TCB kann ein oder mehrere Datenelemente oder Teilfelder aufweisen, die spezifische Konfigurationsdaten zum Gebrauch durch den Hardware-Beschleuniger bei der Ausführung des Jobs aufweisen können. Es ist zu verstehen, dass, obwohl der TCB hier als ein „Aufgabensteuerungsblock“ bezeichnet ist, der TCB in anderen Ausführungsformen durch einen anderen Namen bezeichnet sein kann, wie z. B. als ein „Übertragungssteuerungsblock“.
  • Verschiedene aus den TCB oder Felder davon können modifiziert werden, um Informationen aufzunehmen, die verwendet werden können, um den Warteschlangenmechanismus zu unterstützen. Beispielsweise kann ein TCB einen Zeiger auf einen Eingabe- (I/P-) Puffer aufweisen. Der TCB kann außerdem einen Zeiger auf einen Ausgabe- (O/P-) Puffer aufweisen. Der TCB kann außerdem einen Zeiger auf einen „früheren“ oder „nächsten“ Deskriptor aufweisen, der eine Referenz auf einen vorhergehenden oder nachfolgenden TCB in der DMA-Kette sein kann. Der TCB kann außerdem einen Platzhalter aufweisen, der verwendet werden kann, um eine Systemadresse, die sich auf diesen TCB bezieht, zu speichern. Der TCB kann außerdem eine jobspezifische Berechnungskonfiguration des Hardware-Beschleunigers aufweisen. Der TCB kann außerdem einen Platzhalter aufweisen, einem neuen Zweck zuführen oder wiederverwenden, um den Fertigstellungsstatus zu speichern.
  • In einigen Ausführungsformen können eine oder mehrere APIs verwendet werden, um Warteschlangenmanagementaufgaben wie z. B. die Erzeugung oder Übergabe neuer Jobs, Identifizieren des Status eines existierenden Jobs, Löschen von Jobs usw. auszuführen. Die APIs können diese Aufgaben durch Durchlaufen der verketteten Liste von TCB (beispielsweise unter Verwendung von Informationen, die sich auf die Identifizierung eines letzten Jobs oder TCB einer gegebenen Prioritätsgruppe beziehen), Lesen oder Modifizieren verschiedener TCB oder Felder davon, Einführen oder Entfernen von Einträgen aus der verketteten Liste usw. erledigen.
  • Jobs können dann in der Reihenfolge, in der sie in der verketteten Liste von TCB erscheinen, ausgeführt werden. Allgemein kann die verkettete Liste von TCB separate Abschnitte basierend auf den unterschiedlichen Prioritäten der übergebenen Jobs aufweisen. Als ein Beispiel auf hoher Ebene kann ein Abschnitt mit hoher Priorität von TCB an der Spitze der verketteten Liste von TCB sein, und die Jobs, die sich auf diese TCB beziehen, können zuerst ausgeführt werden. Ein Abschnitt mit mittlerer Priorität von TCB kann dem Abschnitt mit hoher Priorität von TCB folgen. Die Jobs, die sich auf diese TCB mit mittlerer Priorität beziehen, können nach der Ausführung der Jobs, die sich auf die TCB mit hoher Priorität beziehen, ausgeführt werden. Falls ein neuer Job mit einem Flag für hohe Priorität empfangen wird, kann er am Ende des Abschnitts mit hoher Priorität der verketteten Liste von TCB eingefügt werden. Falls der Abschnitt mit hoher Priorität der verketteten Liste beendet ist, dann kann der TCB mit hoher Priorität unmittelbar nach dem aktuell laufenden Job, der sich auf den TCB in dem Abschnitt mit mittlerer Priorität bezieht, eingefügt werden.
  • 1 bildet einen Beispiel-TCB 105 ab, der für einen Hardware-Beschleuniger zur Ausführung bereitgestellt sein kann. Wie zu sehen ist, kann der TCB 105 eine Anzahl von Feldern aufweisen. In einigen Ausführungsformen können die verschiedenen Felder des TCB 105 als „Wörter“ bezeichnet sein, und der TCB 105 kann bis zu 16 Felder aufweisen.
  • Ein weiteres solches Feld kann der Kettenzeiger 104 sein, der beispielsweise als „FWD_CP“ bezeichnet sein kann, um anzugeben, dass er ein Vorwärtskettenzeiger ist. Der Kettenzeiger 104 kann eine Adresse eines nachfolgenden TCB in der verketteten Liste von TCB aufweisen. Nachdem der Hardware-Beschleuniger den Job, der sich auf den TCB 105 bezieht, fertiggestellt hat, kann der Hardware-Beschleuniger die Adresse in dem Kettenzeiger 104 lesen und zu dem nächsten TCB, der durch den Kettenzeiger 104 identifiziert ist, weiter gehen. In einigen Ausführungsformen kann der Bezeichner des nachfolgenden Jobs ein „TCBYS_ADDR“-Bezeichner sein, der eine Systemadresse des nachfolgenden TCB sein kann.
  • Ein weiteres solches Feld kann das JOB_ID-Feld 106 sein Allgemein kann das JOB_ID-Feld 106 ein Platzhalter sein, der verwendet werden kann, um Identifizierungsinformationen zu speichern, die den TCB 105 oder den Job, dem der TCB 105 zugeordnet ist, betreffen. Jeder Job, der durch den TCB beschrieben ist, ist durch den Wert des Felds 106 eindeutig identifiziert. Solche Informationen können durch den Prozessor oder den Hardware-Beschleuniger verwendet werden, um beispielsweise einen Status des Jobs, der sich auf den TCB 105 bezieht, zu identifizieren. Die Identifizierungsinformationen können beispielsweise den TCBYS_ADDR-Bezeichner aufweisen.
  • Ein weiteres solches Feld kann das BACK_CP-Feld 108 sein. Das BACK_CP-Feld 108 kann einen Bezeichner eines früheren TCB in der verketteten Liste von TCB speichern und kann somit als ein Rückwärtskettenzeiger bezeichnet sein. Der Bezeichner des früheren TCB kann beispielsweise der vorstehend mit Bezug auf das JOB_ID-Feld 106 beschriebene Bezeichner sein. Falls jeder TCB in der verketteten Liste von TCB ein BACK_CP-Feld 108, das einen früheren Job identifiziert, und einen Kettenzeiger, der der einen nachfolgenden Job identifiziert, aufweist, dann können die entsprechenden TCB durch Zeigen auf den früheren oder nachfolgenden TCB die verkettete Liste bilden. Diese Felder können im Kombination durch die APIs verwendet werden, um die verketteten Liste von TCB zu durchlaufen, was zur prioritätsbasierten Modifikation der verketteten Liste nützlich sein kann, wie nachstehend genauer beschrieben wird.
  • Ein weiteres solches Feld kann das COMP_CTL-Feld 112 sein Das COMP_CTL-Feld 112 kann eine Anzahl von Teilfeldern 110 aufweisen, die eine jobspezifische Berechnungskonfiguration unterstützen können. Obwohl der Begriff „Teilfelder“ hier verwendet ist, kann in anderen Ausführungsformen das Teilfeld als ein „Flag“ oder ein „Datenelement“ bezeichnet sein.
  • Ein solches Teilfeld kann das FXD-Teilfeld 122 sein. Das FXD-Teilfeld 122 kann angeben, ob der Job Festkommaberechnung oder Gleitkommaberechnung oder einen anderen Typ von Berechnung verwenden sollte. Die verfügbaren Optionen können beispielsweise davon abhängen, wie viele Bits für das FXD-Teilfeld 122 verwendet sind. Ein weiteres solches Teilfeld kann das TC-Teilfeld 124 sein. Das TC-Teilfeld 124 kann verwendet werden, um für den Beschleuniger den Typ der Daten, auf denen er arbeiten soll, oder den Typ der Berechnung, der durch den Hardware-Beschleuniger während der Ausführung des Jobs zu verwenden ist, anzugeben. Ein weiteres solches Teilfeld kann das RND-Teilfeld 126 sein, das einen Rundungsmodus angeben kann, der während der Fertigstellung des dem TCB 105 zugeordneten Jobs zu verwenden ist.
  • Ein weiteres Feld des TCB 105 kann ein COEFF_P-Feld 114 sein. Das COEFF_P-Feld 114 kann eine Referenz auf die Tabelle von Koeffizienten, die durch den Hardware-Beschleuniger während der Ausführung des dem TCB 105 zugeordneten Jobs verwendet werden können, aufweisen. Beispielsweise können in einigen Ausführungsformen mehrere Datenwörter dem COEFF_P-Feld 114 zugeordnet sein. Die Datenwörter können vorgeben, wie das Layout der Koeffiziententabelle in dem Systemspeicher sein soll.
  • Ein weiteres Feld des TCB 105 kann das DATA_O/P_P-Feld 116 sein. Das DATA_O/P_P-Feld 116 kann ein Zeiger zu einem O/P-Puffer sein oder ihn aufweisen. Der O/P-Puffer kann beispielsweise ein Puffer des Hardware-Beschleunigers oder ein Puffer einer elektronischen Vorrichtung, von der der Hardware-Beschleuniger ein Teil ist oder mit dem der Hardware-Beschleuniger kommunikationstechnisch gekoppelt ist, sein. Der O/P-Puffer kann sein, wo der Hardware-Beschleuniger Daten speichern soll, die sich auf die Ausführung oder Fertigstellung des Jobs, dem der TCB 105 zugeordnet ist, beziehen.
  • Ein weiteres Feld des TCB 105 kann das DATA_l/P_P-Feld 118 sein. Das DATA_l/P_P-Feld 118 kann ein Zeiger zu einem I/P-Puffer sein oder ihn aufweisen. Der I/P-Puffer kann beispielsweise ein Puffer des Hardware-Beschleunigers oder ein Puffer einer elektronischen Vorrichtung, von der der Hardware-Beschleuniger ein Teil ist oder mit dem der Hardware-Beschleuniger kommunikationstechnisch gekoppelt ist, sein. Der I/P-Puffer kann sein, wo der Hardware-Beschleuniger Daten empfangen soll, die sich auf die Ausführung des Jobs, dem der TCB 105 zugeordnet ist, beziehen.
  • Ein weiteres solches Feld des TCB 105 kann das CONFIG _CTL-Feld 120 aufweisen. Das CONFIG_CTL-Feld 120 kann zusätzliche Teilfelder 115 aufweisen, die verwendet werden können, um das hier beschriebene prioritätsbasierte Hardware-Beschleunigungsschema zu implementieren. Ein solches Teilfeld kann das ACC_CONFIG-Teilfeld 102 aufweisen. Das ACC_CONFIG-Teilfeld 102 kann Informationen aufweisen, die sich auf Techniken beziehen, die durch den Hardware-Beschleuniger verwendet werden können, um den Job, der sich auf den TCB bezieht, auszuführen. Beispielsweise kann das ACC_CONFIG-Teilfeld 102 den Hardware-Beschleuniger anweisen, ein Filter mit endlicher Impulsantwort (FIR); ein biquadratisches Filter mit unendlicher Impulsantwort (IRR) einer spezifischen Ordnung; ein spezifisches Zeitfenster, das sich auf die Jobausführung bezieht, wobei sich die Fensterlänge auf die Anzahl von Ausgabe-Abtastpunkten, die zu produzieren sind, beziehen kann; oder eine Abtastratenumsetzung, die verwendet werden kann, zu implementieren. Es ist jedoch zu verstehen, dass dieses Beispiele dafür sind, was das ACC_CONFIG-Teilfeld 102 aufweisen kann, und andere Ausführungsformen zusätzliche oder weniger Elemente aufweisen können.
  • Ein weiteres solches Teilfeld kann das PRIO-Teilfeld 128 aufweisen. Das PRIO-Teilfeld 128 kann eine Anzahl von Bits aufweisen, die eine Prioritätsstufe des TCB 105 innerhalb der verketteten Liste von TCB angeben können. Beispielsweise kann das PRIO-Teilfeld 128 ein 1-Bit-Kennzeichen sein, das angeben kann, ob der TCB 105 von einer „hohen“ oder „niedrigen“ Priorität ist. Alternativ kann das PRIO-Teilfeld 128 ein 2-Bit-Kennzeichen sein, das angeben kann, ob der TCB 105 von einer „sehr hohen“, „hohen“, „mittleren“ oder „niedrigen“ Priorität ist.
  • Ein weiteres solches Teilfeld kann das IMASK-Teilfeld 130 aufweisen. Das IMASK-Teilfeld 130 kann angeben, ob bei Fertigstellung des Jobs, dem der TCB 105 zugeordnet sind, ein Interrupt zu dem Prozessor zu senden ist. Im Allgemeinen kann es nicht wünschenswert sein, bei der Fertigstellung jedes Jobs einen Interrupt zu dem Prozessor zu senden, und somit kann dieses Teilfeld als ein Flag dienen, um anzugeben, ob ein Interrupt gewünscht ist.
  • Ein weiteres solches Teilfeld kann das TMASK-Teilfeld 132 aufweisen. Ähnlich zu dem IMASK-Teilfeld 130 kann das TMASK-Teilfeld 132 angeben, ob bei der Fertigstellung des Jobs, dem der TCB 105 zugeordnet ist, ein Trigger zu dem Prozessorteilsystem zu senden ist. Im Allgemeinen kann es nicht wünschenswert sein, bei der Fertigstellung jedes Jobs einen Trigger zu dem Prozessorteilsystem zu senden, und somit kann dieses Teilfeld als ein Flag dienen, um anzugeben, ob ein Trigger gewünscht ist.
  • Ein weiteres solches Teilfeld kann das TWAIT-Teilfeld 134 aufweisen. Im Allgemeinen können, bevor der Prozessor einen neuen TCB an den Job-Pool mit Hilfe des Hinzufügens zu der verketteten Liste übergeben kann, sowohl ein Datenpuffer, der einen oder mehrere Koeffizienten (deren Stelle durch das COEFF_P-Feld 114 angegeben sein kann) beinhaltet, als auch der Eingabedatenpuffer (der die Daten in dem I/P-Puffer sein kann, der durch das DATA_l/P_P-Feld 118 angegeben ist) notwendig sein. Im Allgemeinen kann der Koeffizient statisch sein, aber die Eingabedaten können dynamisch sein. Falls die Eingabedaten nicht verfügbar sind, kann der Hardware-Beschleuniger alte oder beschädigte Daten während der Ausführung des durch den TCB 105 angegebenen Jobs verarbeiten. Falls das TWAIT-Teilfeld für den TCB 105 eingestellt ist, kann dann, wenn der Hardware-Beschleuniger den Job, der sich auf diesen TCB bezieht, ausführt, der Hardware-Beschleuniger auf eine Angabe der IIP-Puffer-Fertigstellung in der Form eines Triggers, der von irgendeiner der Komponenten des Prozessorteilsystems wie z. B. einem DMA, der für die Vorbereitung des Puffers zuständig sein kann, warten. Sobald der Trigger von dem Prozessor empfangen wird, kann der Hardware-Beschleuniger den Eingabe-DMA starten, um Daten zu seinem internen Puffer zu übertragen, so dass er den relevanten Job ausführen kann. Als ein Ergebnis kann ein TCB durch den Prozessor an die verkettete Liste übergeben werden, selbst wenn die entsprechenden Eingabedaten in dem I/P-Puffer zur Zeit der Übergabe durch den Prozessor nicht verfügbar sind.
  • Im Allgemeinen ist zu verstehen, dass der TCB 105 und die relevanten Felder/Teilfelder usw. hier als Beispiele für solche Felder/Teilfelder abgebildet und diskutiert sind, und andere Ausführungsformen können von den abgebildeten abweichen. Beispielsweise können einige TCB zusätzliche oder weniger Felder als abgebildet aufweisen. In einigen Ausführungsformen können sich die beschriebenen Felder von den beschriebenen exakten Parametern unterscheiden. Als ein spezifisches Beispiel kann in einigen Ausführungsformen das PRIO-Teilfeld 128 mehr oder weniger Bits als die beschriebenen 1-Bit- oder 2-Bit-Anordnungen aufweisen. Zusätzlich ist zu verstehen, dass die spezifischen Namen, die in diesem Beispiel gegeben sind, Namen sind, die in einer Ausführungsform verwendet werden könnten, jedoch andere Namen für die spezifischen Felder oder Teilfelder in anderen Ausführungsformen verwendet werden können, während sie immer noch die beschriebene Funktionalität ausführen. Andere Variationen können in anderen Ausführungsformen vorhanden sein.
  • 2 bildet ein Beispiel auf hoher Ebene für das Einreihen von Jobs in eine Warteschlange in Übereinstimmung mit verschiedenen Ausführungsformen ab. Insbesondere bildet 2 ein Beispiel auf hoher Ebene für das Warteschlangeneinreihen eines neu eingeführten TCB in eine verkettete Liste von TCB ab. Jeder der diskutierten TCB kann eine Prioritätsstufe wie die mit Bezug auf das PRIO-Teilfeld 128 diskutierte aufweisen. In diesem speziellen Beispiel sind drei unterschiedliche Prioritätsstufen vorhanden, die in 2 basierend auf unterschiedlicher Schattierung grafisch abgebildet sind. Die drei unterschiedlichen Prioritätsstufen sind eine hohe Priorität 202, eine mittlere Priorität 204 und eine niedrige Priorität 206. Im Allgemeinen sind TCB mit den hohen Prioritätsstufen vor der Ausführung der TCB mit einer mittleren oder niedrigen Prioritätsstufe auszuführen. Ähnlich sind TCB mit den mittleren Prioritätsstufen vor der Ausführung von TCB mit den niedrigen Prioritätsstufen auszuführen.
  • Das System kann einen Prozessor 210 aufweisen, der durch einen Systembus 203 mit dem Hardware-Beschleuniger 205 kommunikationstechnisch gekoppelt ist. Der Systembus 203 kann eine kommunikationstechnische Kopplung sein, die es einem oder mehreren Elementen einer elektronischen Vorrichtung ermöglicht, Datensignale zueinander zu senden oder voneinander zu empfangen. Der Prozessor 210 kann beispielsweise eine zentrale Verarbeitungseinheit (CPU), ein Mehrfach- oder Einfach-Prozessor, ein Kern eines Mehrkernprozessors oder ein anderer Typ eines Prozessors sein. Ähnlich kann der Hardware-Beschleuniger 205 eine Verarbeitungseinheit wie z. B. ein Hardware-Logikblock, der dazu ausgebildet ist, spezielle Funktionen oder eine Gruppe von Funktionen, auszuführen, eine CPU, ein Mehr- oder Einkernprozessor, ein Kern eines Mehrkernprozessors oder ein anderer Typ eines Prozessors sein. Der Prozessor 210 kann ferner Logik zum Ausführen eines oder mehrerer durch einen Computer ausführbaren Befehle, Logik zum Ausführen eines oder mehrerer mathematischer Prozesse oder Berechnungen usw. aufweisen.
  • Das System kann ferner einen Speicher 201 aufweisen. Der Speicher 201 kann ein flüchtiger oder nichtflüchtiger Speicher sein, wie z. B. ein Doppeldatenraten-(DDR-) Speicher, Flash-Speicher, Direktzugriffsspeicher (RAM) oder ein anderer Typ eines Speichers. Insbesondere kann der Speicher 201 einen oder mehrere Puffer wie z. B. die vorstehend diskutierten I/P-Puffer, O/P-Puffer oder COEFF-Puffer aufweisen. Zusätzlich kann der Speicher 210 dazu ausgebildet sein, in Übereinstimmung mit verschiedenen hier diskutierten Ausführungsformen einen oder mehrere TCB in der verketteten Liste von TCB zu speichern. Der Speicher 201 kann mit dem Prozessor 210 und dem Hardware-Beschleuniger 205 durch den Systembus 203 kommunikationstechnisch gekoppelt sein.
  • Einer oder mehrere aus dem Prozessor 210, dem Speicher 201 und dem Hardware-Beschleuniger 205 kann als ein Einchipsystem (SoC), ein Ein-Baugruppen-System (SiP) oder eine andere Konfiguration konfiguriert sein. In einigen Ausführungsformen können zwei oder mehrere aus dem Prozessor 210, dem Speicher 201 und dem Hardware-Beschleuniger 205 Elemente desselben Substrats sein, z. B. Elemente eines Interposers oder einer Leiterplatte (PCB), während in anderen Ausführungsformen jeder aus dem Prozessor 210, dem Speicher 201 und dem Hardware-Beschleuniger 205 auf einem anderen Substrat sein kann. In einigen Ausführungsformen können zwei oder mehrere aus dem Speicher 201, dem Prozessor 210 und dem Hardware-Beschleuniger 205 logische oder physikalische Unterteilungen innerhalb eines einzigen Halbleiters oder eines einzigen Chips sein, während in anderen Ausführungsformen jeder aus dem Speicher 201, dem Prozessor 210 und dem Hardware-Beschleuniger 205 physikalisch voneinander getrennt sind.
  • Der Hardware-Beschleuniger 205 kann dazu ausgebildet sein, Jobs, die sich auf eine Anzahl von TCB in einer verketteten Liste von TCB beziehen, die in dem Speicher 210 gespeichert sind, auszuführen. Die jeweiligen TCB der verketteten Liste von TCB können beispielsweise ähnlich dem TCB 105 sein. Die verkettete Liste von TCB ist in 2 so abgebildet, dass sie früher ausgeführte TCB 214, einen aktuell ausgeführten TCB 218 und TCB 220, die noch auszuführen sind, aufweist.
  • Ein TCB 212 kann durch den Prozessor 210 identifiziert oder erzeugt werden. Der Prozessor 210 kann identifizieren, dass der TCB in die verkettete Liste von TCB einzufügen ist. Das Bereitstellen des TCB 212 für den Hardware-Beschleuniger 205 kann dann eine Anzahl von Nachrichten enthalten, die zwischen dem Prozessor und dem Hardware-Beschleuniger 205 auszutauschen sind. Insbesondere kann es, falls der Hardware-Beschleuniger 205 derzeit einen Job ausführt, der sich auf einen TCB in der Warteschlange bezieht, nicht wünschenswert sein, einen TCB zu der Warteschlange hinzuzufügen, da Modifikation der TCB sowohl durch den Prozessor 210 als auch den Hardware-Beschleuniger 205 zu Konsistenzproblemen führen können. Der Prozessor 210 bei 236 kann einen Anhaltebefehl zu dem Hardware-Beschleuniger 205 senden. Der Anhaltebefehl kann beispielsweise das Schreiben eines Bit in ein Register des Hardware-Beschleunigers 205 enthalten. Der Anhaltebefehl bei 235 kann für den Hardware-Beschleuniger 205 angeben, dass der Hardware-Beschleuniger 205 das Verarbeiten sobald wie machbar pausieren soll. In einigen Ausführungsformen kann das Anhalten eine Anzahl von Zyklen benötigt in dem Fall, in dem beispielsweise der Hardware-Beschleuniger 205 eine Speicherzugriffsoperation initiiert haben kann und danach die Fertigstellung der Speicherzugriffsoperation erwartet. In Reaktion auf den Anhaltebefehl kann der Hardware-Beschleuniger 205 bei 236 eine Anhalte-Quittung bei 238 senden. Die Anhalte-Quittung bei 238 kann angeben, dass der Hardware-Beschleuniger 205 die Operation angehalten hat und auf weitere Anweisungen von dem Prozessor 210 wartet. Der Prozessor 210 kann dann den TCB 212 in die Warteschlange von TCB in dem Speicher 210 einfügen. Das Platzieren eines TCB in der Warteschlange an einem vorgegebenen Platz in Bezug auf die anderen TCB kann beispielsweise das Modifizieren der FWD_CP- 104 und BACK_CP- 106 Felder in einem oder mehreren der TCB in der verketteten Liste von TCB enthalten.
  • Weiter zu der Warteschlange von TCB ist zu sehen, dass eine Anzahl früher ausgeführter TCB 214 vorhanden ist. Die früher ausgeführten TCB 214 können zwei TCB 208 hoher Priorität (d. h. TCB mit einem PRIO-Teilfeld, das angibt, dass sie in Übereinstimmung mit der „hohen“ Priorität auszuführen ist) aufweisen. Die früher ausgeführten TCB 214 können außerdem einen TCB 216 mit mittlerer Priorität (d. h. einen TCB mit einem PRIO-Teilfeld, das angibt, dass er in Übereinstimmung mit der „mittleren“ Priorität nach den TCB hoher Priorität auszuführen ist) aufweisen. Ferner kann der Hardware-Beschleuniger 205 einen Job ausführen, der sich auf einen weiteren TCB 218 mittlerer Priorität bezieht. Die TCB 220, die auszuführen sind, können einen TCB 224 mittlerer Priorität und einen TCB 228 niedriger Priorität (d. h. einen TCB mit einem PRIO-Teilfeld, das angibt, dass er in Übereinstimmung mit der „niedrigen“ Priorität nach den TCB hoher Priorität und mittlerer Priorität auszuführen ist) aufweisen.
  • Die TCB mit der gestrichelten Umrandung geben unterschiedliche Stellen an, wo der TCB 212 in der Warteschlange in Übereinstimmung mit seiner Priorität platziert werden kann. Wie erwähnt ist es nicht möglich, einen Job, der sich auf einen aktuell ablaufenden TCB bezieht, anzuhalten. Deshalb würde der TCB 212, falls er ein TCB mit hoher Priorität ist, dann an der durch den TCB 222 angegebenen Stelle platziert. Somit würde er in der Warteschlange platziert, so dass er verarbeitet würde, und irgendwelche Jobs, die sich auf ihn beziehen, würden vor der Ausführung irgendwelcher anderer Jobs, die sich auf TCB mittlerer Priorität wie z. B. den TCB 224 beziehen, ausgeführt. Mit anderen Worten wäre, weil der aktuell ablaufende TCB 218 ein TCB mittlerer Priorität ist, der TCB 212 hoher Priorität der Nächste in der Warteschlange.
  • Falls jedoch der TCB 212 ein TCB mittlerer Priorität ist, dann würde er an der Stelle in der Warteschlange, der durch den TCB 226 angegeben ist, platziert. Diese Stelle wäre an dem Ende der TCB mittlerer Priorität, jedoch vor irgendwelchen TCB niedriger Priorität. Schließlich würde der TCB 212, falls er ein TCB niedriger Priorität ist, dann an der Stelle in der Warteschlange, der durch den TCB 230 angegeben ist, platziert. Diese Stelle wäre am Ende der TCB niedriger Priorität.
  • Die folgende Tabelle, Tabelle 1, stellt verschiedene Beispiele dafür bereit, wie das prioritätsbasierte Einfügen von Aufgaben in einer Ausführungsform mit drei Prioritätsstufen (hoch, mittel und niedrig) erreicht werden kann. Es ist jedoch zu verstehen, dass diese Tabelle als ein Beispiel auf hoher Ebene vorgesehen ist und andere Ausführungsformen Variationen dieser Tabelle aufweisen können. Tabelle 1
    Prioritätsstufe des derzeit ablaufenden TCB 210 Prioritätsstufe des TCB, der eingefügt werden soll, TCB 212 Stelle des Einfügens
    Hoch Hoch TCB 212 nach dem letzten TCB mit hoher Prioritätsstufe einfügen
    Hoch Mittel TCB 212 nach dem letzten TCB mit mittlerer Prioritätsstufe einfügen
    Hoch Niedrig TCB 212 nach dem letzten TCB mit niedriger Prioritätsstufe einfügen
    Mittel Hoch TCB 212 unmittelbar nach TCB 218 einfügen
    Mittel Mittel TCB 212 nach dem letzten TCB mit mittlerer Prioritätsstufe einfügen
    Mittel Niedrig TCB 212 nach dem letzten TCB mit niedriger Prioritätsstufe einfügen
    Niedrig Hoch TCB 212 unmittelbar nach TCB 218 einfügen
    Niedrig Mittel TCB 212 unmittelbar nach TCB 218 einfügen
    Niedrig Niedrig TCB 212 nach dem letzten TCB mit niedriger Prioritätsstufe einfügen
  • Es ist zu verstehen, dass dieses Beispiel von 2 als ein vereinfachtes Beispiel für prioritätsbasiertes Warteschlangenmanagement vorgesehen ist und andere Beispiele von dem abgebildeten Beispiel abweichen können. Beispielsweise können einige Ausführungsformen mehr oder weniger Prioritätsstufen als in 2 diskutiert und abgebildet aufweisen. Die Anzahl der Prioritätsstufen kann von dem vorstehend diskutierten PRIO-Teilfeld 128 abhängen. Zusätzlich kann die Anzahl von TCB an verschiedenen Prioritätsstufen in unterschiedlichen Anwendungsfällen unterschiedlich sein.
  • Zusätzlich ist der Anwendungsfall von 2 so beschrieben, dass ein TCB 212 in die Warteschlange eingefügt wird. Es ist jedoch zu verstehen, dass andere Modifikationen der Warteschlange möglich sein können. Solche Modifikationen können das Löschen von TCB aus der Warteschlange, Abfragen des Status eines Jobs, der sich auf einen TCB der Warteschlange bezieht, Modifizieren eines TCB in der Warteschlange usw. sein. Im Allgemeinen kann das Management der Warteschlange basierend auf verschiedenen APIs ausgeführt werden, die durch den Prozessor 210 verwendet werden können, um die Warteschlange zu managen. Die 3-7 bilden verschiedene APIs ab, die für das Warteschlangenmanagement verwendet werden können. Ein solches Warteschlangenmanagement durch den Prozessor 210 kann eines oder mehrere aus dem Folgenden enthalten: Erzeugung eines „Jobs“ (z. B. Positionieren eines TCB in dem Speicher), Übergeben des Jobs an die Warteschlange, Einfügen des Jobs an einem angegebenen Platz in der Warteschlange in Bezug auf andere existierende TCB, Löschen des Jobs aus der Warteschlange, Bestimmen des Fertigstellungsstatus eines Jobs usw. Um diese Managementaufgaben auszuführen, kann es nötig sein, dass der Prozessor 210 spezielle auf die Warteschlange bezogenen Informationen speichert, wie z. B. die Speicherreferenz des ersten TCB in der Warteschlange, des ersten TCB in der Warteschlange an einer gegebenen Prioritätsstufe, des letzten TCB in der Warteschlange, des letzten TCB in der Warteschlange an einer gegebenen Prioritätsstufe, oder eine Kombination daraus, und fähig ist, die verketteten Liste der TCB mit Hilfe der zwei Kettenzeigerfelder in jedem TCB (z. B. des Kettenzeigerfelds 104 und des BACK_CP-Felds 108) zu durchlaufen.
  • Allgemein beschreibt 3 eine API, die verwendet werden kann, um einen Job an die Warteschlange zu übergeben. Die API von 3 kann beispielsweise durch den Prozessor 210 ausgeführt werden. Die Syntax des Übergabebefehls, der sich auf die API bezieht, kann Folgendes sein: submit_job(ACC-TCB TCB_x, ACC_TCB TCB_n). „ACC_TCB TCB_x“ kann Informationen aufweisen, die sich auf einen TCB beziehen, der in die Warteschlange eingefügt werden soll. Der TCB kann als „TCB_x“ bezeichnet sein. Die Informationen können ein Zeiger sein, der sich auf TCB_x bezieht, oder sie können der gesamte oder ein Abschnitt des TCB sein. Ähnlich kann „ACC_ TCB TCB_n“ Informationen aufweisen, die sich auf einen TCB in der Warteschlange beziehen, nach dem der TCB_x in die Warteschlange platziert werden soll. Die Informationen können ein Zeiger sein, der sich auf TCB_n bezieht, oder sie können der gesamte oder ein Abschnitt des TCB sein.
  • Anfangs kann die API bei 305 das Überprüfen enthalten, ob der Hardware-Beschleuniger (z. B. der Hardware-Beschleuniger 205) aktiviert ist. Wie es hier verwendet ist, kann sich „aktiviert“ darauf beziehen, ob der Hardware-Beschleuniger dazu ausgebildet ist, TCB anzunehmen / Jobs auszuführen, die sich auf die TCB beziehen. Falls der Hardware-Beschleuniger nicht aktiviert ist, dann kann der Prozessor den Hardware-Beschleuniger 205 mit einer Angabe des ersten TCB, der in der verketteten Liste von TCB verarbeitet werden soll, versorgen. Insbesondere kann der Prozessor ein Kettenzeigerregister CP innerhalb des Hardware-Beschleunigers mit der Adresse des ersten TCB in der Warteschlange aktualisieren. Der Hardware-Beschleuniger kann dann bei 315 aktiviert werden, so dass er den TCB verarbeiten und den Job, dem der TCB zugeordnet ist, ausführen wird. In einigen Ausführungsformen kann dann die bei 305 abgebildete TCB-Übergabe-API neu gestartet werden.
  • Falls jedoch der Hardware-Beschleuniger bei 305 als aktiviert identifiziert wird, kann es wünschenswert sein, dass der Prozessor den Hardware-Beschleuniger bei 320 anhält. Das Anhalten des Hardware-Beschleunigers kann beispielsweise das Senden einer mit Bezug auf das Element 236 von 2 diskutierten Anhalte-Nachricht enthalten. Der Prozessor kann auf die Bestätigung warten, dass der Beschleuniger angehalten hat, durch Überwachen der Anhalte-Quittung, die vorstehend mit Bezug auf Element 238 beschrieben ist. Der Prozessor kann dann bei 325 bestimmen, ob der Hardware-Beschleuniger frei ist. Wie es hier verwendet ist, kann sich „frei“ darauf beziehen, ob der Hardware-Beschleuniger das Verarbeiten aller TCB in einer existierenden Warteschlange von TCB beendet hat. Falls bei 325 bestimmt wird, dass der Hardware-Beschleuniger bei 325 frei ist, dann kann der Hardware-Beschleuniger bei 330 durch den Prozessor durch Schreiben eines oder mehrerer Bit-Felder in den Konfigurationsregistern innerhalb des Hardware-Beschleunigers deaktiviert werden. Diese Deaktivierung kann als ein „Zurücksetzen“ des Hardware-Beschleunigers dienen. Das Kettenzeigerregister CP innerhalb des Hardware-Beschleunigers kann mit der Adresse des TCB bei 335 durch den Prozessor aktualisiert werden, und dann kann der Hardware-Beschleuniger bei 340 erneut aktiviert werden. Das erneute Aktivieren des Hardware-Beschleunigers kann beispielsweise das Ändern des Bit in dem Register, das angibt, dass der Hardware-Beschleuniger anhalten sollte, enthalten, wie vorstehend mit Bezug auf das Element 236 beschrieben ist. Sobald der Hardware-Beschleuniger bei 340 erneut aktiviert ist, kann der Hardware-Beschleuniger seine Funktionen wieder aufnehmen, und zusätzlich kann der Prozessor das Ausführen von Anwendungscode, das sich auf die API, wie hier beschrieben ist, eine andere API oder eine andere Verarbeitungsfunktion bezieht, wieder aufnehmen.
  • Falls jedoch bei 325 bestimmt wird, dass der Hardware-Beschleuniger nicht frei ist, dann kann der Prozessor bei 345 eine API ausführen, die sich auf das Einfügen des TCB in die Warteschlange von TCB bezieht. Die Syntax des Einfügungsbefehls, der sich auf die API bezieht, kann Folgendes sein: insert_job(ACC_TCB TCB_x, ACC_TCB TCB_n). „ACC_TCB TCB_x“ und „ACC_TCB TCB_n“ können ähnlich denjenigen sein, die vorstehend mit Bezug auf 3 beschrieben sind. 4 bildet ein Beispiel der Einfügungs-API ab. Es ist zu verstehen, dass in anderen Ausführungsformen die insert_job-API getrennt von der API von 3 ausgeführt werden kann.
  • Anfangs kann die API bei 405 das Identifizieren enthalten, ob der Zeiger auf TCB_n in der insert_Job-API ein NULL- (0) Wert ist. Falls TCB_n kein NULL-Wert ist, kann die API dann bei 410 das Identifizieren enthalten, ob TCB_n fertiggestellt worden ist. Insbesondere kann die API bei 410 das Identifizieren enthalten, ob der Job, der sich auf TCB_n bezieht, fertiggestellt worden ist, oder ob TCB_n in der Liste früher ausgeführter TCB ist, die bei 214 beschrieben ist. Falls das so ist, dann kann der Hardware-Beschleuniger bei 415 eine Fehlerangabe für den Prozessor bereitstellen. Die Fehlerangabe kann auf der Tatsache beruhen, dass auf einen TCB, der nach einem TCB eingefügt ist, dessen Verarbeitung fertiggestellt ist, nicht durch den Hardware-Beschleuniger zugegriffen wird, und somit der zugeordnete Job niemals ausgeführt werden kann. Der Hardware-Beschleuniger oder der Prozessor können die Operation wie vorstehend beschrieben wieder aufnehmen.
  • Falls jedoch der TCB_n bei 410 nicht als fertiggestellt identifiziert wird, dann kann der Prozessor bei 420 den TCB_n in der Liste der TCB finden. Insbesondere kann der Prozessor einen oder mehrere der TCB in der Liste der TCB abfragen, bis der TCB_n identifiziert ist. Der Prozessor kann dann bei 425 die TCB-Verbindungskette aktualisieren. Das Aktualisieren der Verbindungskette kann beispielsweise das Aktualisieren des Kettenzeigers des TCB, der eingefügt werden soll, Aktualisieren der Kettenzeiger eines oder mehrerer TCB in der Kette, Aktualisieren eines Puffers des Hardware-Beschleunigers, Aktualisieren des Prozessors usw. enthalten. Die Aktualisierungen können dem Zweck dienen, den TCB_n korrekt zu identifizieren. Der Prozessor und der Hardware-Beschleuniger können dann die Operation wie vorstehend beschrieben wieder aufnehmen.
  • Falls bei 405 Wert des Zeigers auf TCB_n in der API ein NULL-Wert ist, kann das angeben, dass TCB_x in die Warteschlange basierend auf seiner Priorität, wie sie in dem PRIO-Feld 128 der TCB-Struktur 105 angegeben ist, einzufügen ist. Als ein Ergebnis kann der Prozessor dann bei 430 prioritätsbasiertes Einfügen des TCB ausführen. Das prioritätsbasierte Einfügen kann das Verwenden von Informationen über einen ersten oder letzten TCB in einem gegebenen Prioritätsabschnitt oder allgemein einer Warteschlange enthalten, um eine Stelle zu identifizieren, an der der TCB eingefügt werden sollte. Als ein Beispiel kann das prioritätsbasierte Einfügen bei 435 das Durchlaufen einer Prioritätstabelle enthalten, um den neuen Job oder den neuen TCB in die Liste der TCB einzufügen. Beispielsweise kann der Prozessor eine Tabelle besitzen oder Zugriff auf sie haben, die sich auf die Liste von TCB bezieht, die eine Prioritätsstufe für jeden TCB oder eine Angabe eines ersten oder letzten TCB eines gegebenen Prioritätsabschnitts angibt. In einigen Ausführungsformen kann der Prozessor Kennzeichen oder Flags besitzen oder Zugriff darauf haben, die einen letzten TCB einer gegebenen Prioritätsstufe angeben. Diese Flags oder Kennzeichen können dazu beitragen, den Zeitraum zu reduzieren, für den das System oder der Hardware-Beschleuniger angehalten wird während TCB-Management ausgeführt wird. Alternativ kann der Prozessor 210 die Kette der TCB im Speicher 201 in 2, beginnend ab dem ersten TCB in der Warteschlange, dem aktuell ablaufenden TCB oder einem anderen TCB, mit Hilfe der Kettenzeigerfelder 104 oder 108 des TCB durchlaufen. Das Durchlaufen kann beispielsweise dem Identifizieren eines letzten TCB in einem gegebenen Prioritätsabschnitt dienen. Es kann die Prioritätsstufe jedes TCB durch Lesen des PRIO-Felds 128 des TCB bestimmen. Es ist zu verstehen, dass, obwohl hier eine Prioritätstabelle beschrieben ist, in anderen Ausführungsformen die Datenstruktur, die sich auf die prioritätsbasierte Organisation der TCB bezieht, unterschiedlich sein kann.
  • Die API kann dann bei 440 zurückkehren und erneut anfangen. Allgemein können APIs durch eine auf dem Prozessor ablaufenden Anwendung einer höheren Ebene aufgerufen werden. Wenn eine API zurückkehrt, kann der Prozessor das Ausführen des verbleibenden Abschnitts des Anwendungscodes „wiederaufnehmen“. Der Hardware-Beschleuniger kann ebenfalls seine Funktion ab dem „angehaltenen“ Zustand wiederaufnehmen, wie vorstehend beschrieben.
  • Der Prozessor 210 kann die verkettete Liste durchlaufen (z. B. unter Verwendung von Informationen über einen letzten TCB einer gegebenen Prioritätsabschnitts oder durch eine anderen Technik), um eine Stelle zu identifizieren, an der der TCB_x platziert werden sollte, wie vorstehend mit Bezug auf 2 beschrieben. Sobald die Stelle identifiziert ist, kann der TCB in die Liste der TCB eingefügt werden. Die API kann dann angeben, dass der TCB erfolgreich in die Liste der TCB eingefügt wurde, beispielsweise durch Zurückgeben eines SUCCESS-Kennzeichens zu der Anwendung höherer Ebene, die den TCB benötigt oder veranlasst haben kann, und das Ausführen anderer Funktionen der Anwendung höherer Ebene wiederaufnehmen.
  • In anderen Ausführungsformen kann es wünschenswert sein, einen existierenden Job oder TCB zu modifizieren. Die Modifikation kann beispielsweise das Ersetzen eines existierenden TCB in der Liste der TCB durch einen anderen TCB, der unterschiedliche Koeffizienten, einen Zeiger zu einem anderen Eingabepuffer usw. aufweist, enthalten. 5 bildet eine Beispiel-API ab, die für einen Job- oder TCB-Modifikationsbefehl verwendet werden kann. Die API kann durch den Prozessor ausgeführt werden. Die Syntax des Modifikationsbefehls, der sich auf die API bezieht, kann Folgendes sein: modify_job(ACC_TCB TCB_n, ACC_TCB TCB_o). „ACC_TCB TCB_n“ kann Informationen enthalten, die sich auf einen neuen TCB („TCB_n“) beziehen, der in die Warteschlange eingefügt werden soll. „ACC_TCB TCB_o“ kann Informationen enthalten, die sich auf einen TCB („TCB_o“) beziehen, der aus der Warteschlange entfernt werden soll. Insbesondere kann TCB_n ein TCB sein, der in die Warteschlange anstelle des TCB_o eingefügt werden soll. Auf diese Weise kann ein existierender TCB (TCB_o) durch Ersetzen dieses TCB durch einen neuen TCB (TCB_n), der aktualisierte Informationen aufweist, modifiziert werden.
  • Die API kann bei 505 Anhalten des Hardware-Beschleunigers enthalten. Das Anhalten kann in Reaktion auf einen Anhaltebefehl stattfinden, wie z. B. den vorstehend mit Bezug auf das Element 236 beschriebenen Anhaltebefehl. Die API kann dann bei 510 das Abfragen des Status eines gegebenen Jobs enthalten. Insbesondere kann der Prozessor 210 bei 510 identifizieren, ob ein Job noch nicht erledigt, fertiggestellt, ablaufend usw. ist. In einigen Ausführungsformen kann die Abfrage bei 510 das Ablaufen einer Abfrage-API beinhalten, was nachstehend mit Bezug auf 7 genauer diskutiert ist.
  • Die API kann dann bei 515 das Bestimmen enthalten, ob das Ergebnis der Abfrage bei 510 angibt, dass TCB_o noch nicht erledigt ist. Ein „noch nicht erledigter“ TCB kann sich auf einen TCB beziehen, der in der Warteschlange für zukünftige Ausführung/Verarbeitung ist, und somit wird ein Job, der sich auf diesen TCB bezieht, derzeit nicht durch den Hardware-Beschleuniger ausgeführt oder ist nicht bereits ausgeführt worden. Mit anderen Worten kann ein noch nicht erledigter TCB in der Warteschlange von TCB sein, die bei 220 ausgeführt werden sollen, wie mit Bezug auf 2 beschrieben ist. Falls der TCB_o nicht noch nicht erledigt ist, dann kann die API bei 520 einen Fehler zurückgeben. Die Fehlerbedingung kann vorhanden sein, weil dann, wenn der TCB_o nicht noch nicht erledigt ist, es nicht möglich sein kann, den Job, der sich auf TCB_o bezieht, durch Ersetzen durch TCB_n zu modifizieren oder zu ersetzen, weil dieser Job bereits ausgeführt worden sein kann. Nachdem die Fehlerbedingung identifiziert und zurückgegeben worden ist, kann die Operation des Hardware-Beschleunigers durch beispielsweise das Verarbeiten des nächsten TCB in der TCB-Warteschlange neu starten.
  • Falls jedoch eine Abfrage bei 510 bei 515 zurückgibt, dass der TCB_o noch nicht erledigt ist, dann kann die API bei 525 das Finden des TCB_o in der Liste nicht erledigter TCB enthalten. Beispielsweise kann der Prozessor 210 die Stelle oder die Adresse des TCB_o in den TCB, die ausgeführt werden sollen 220, identifizieren. Sobald der TCB_o gefunden worden ist, kann der Prozessor bei 530 den TCB_o herauslösen und den TCB_n an seinem Platz platzieren. Eine solche Herauslöseoperation kann beispielsweise das Verändern des Kettenzeiger-FWD_CP-Felds des TCB, der dem TCB_o in der Warteschlange vorausgeht, und Aktualisieren dieses Felds mit der Speicheradresse des TCB_n enthalten. Die Herauslöseoperation kann ferner das Aktualisieren des BACK_CP-Felds des TCB_n mit demselben Wert in dem BACK_CP-Feld des TCB_o enthalten. Die Herauslöseoperation kann außerdem das Aktualisieren des FWD_CP-Felds des TCB_n mit demselben Wert des FWD_CP-Felds des TCB_o und Aktualisieren des BACK_CP-Felds des TCB, auf das FWD_CP von TCB_n Bezug nimmt, durch die Speicheradresse des TCB_n enthalten. In einigen Ausführungsformen kann die API außerdem den zum Speichern des TCB_o verwendeten Speicher freigeben und den Speicher in den Pool freier Speicherblöcke zurückgeben. Schließlich kann die API bei 535 das Zurückgeben eines Statuskennzeichens, dass der TCB_o durch den TCB_n ersetzt worden ist, enthalten, und die Operation des Hardware-Beschleunigers kann erneut starten. Beispielsweise kann ein Kennzeichen zu einem weiteren Logik- oder Verarbeitungselement des Hardware-Beschleunigers oder zu dem Prozessor gesendet werden, das angibt, dass die Ersetzung fertiggestellt ist, und dann kann der Hardware-Beschleuniger das Verarbeiten von TCB in der verketteten Liste von TCB wiederaufnehmen. Die Rückgabe- und Wiederaufnahmefunktion des Elements 535 kann beispielsweise ähnlich der Rückgabe- und Wiederaufnahmefunktion des Elements 440 sein.
  • In einigen Ausführungsformen kann es wünschenswert sein, einen TCB in der verketteten Liste von TCB zu entfernen anstatt ihn zu ersetzen. 6 bildet eine API ab, die durch eine Komponente einer elektronischen Vorrichtung wie z. B. den Prozessor 210 verwendet werden kann, um einen TCB aus der Liste von TCB, die ausgeführt werden sollen 220, zu entfernen. Die Syntax der API kann sein: deletejob (ACC_TCB TCB_d), wobei TCB_d ein TCB sein kann, der verworfen werden soll, und „ACC_TCB TCB_d“ Informationen enthalten kann, die sich auf den TCB_d beziehen.
  • Die API in 6 kann ein oder mehrere Elemente aufweisen, die ähnlich Elementen von 5 sein oder eine oder mehrere Eigenschaften mit ihnen gemeinsam haben können. Insbesondere können die Elemente 605, 610, 615, 620, 625 und 635 jeweils ähnlich den Elementen 505, 510, 515, 520, 525 und 535 von 5 sein oder eine oder mehrere Eigenschaften mit ihnen gemeinsam haben. Einzelheiten dieser Elemente werden zur Vermeidung von Redundanz nicht wiederholt.
  • Wie jedoch zu sehen ist, kann die API von 6, nachdem TCB_d in der Liste der TCB, die auszuführen sind 220, gefunden worden ist, bei 630 das Herauslösen von TCB_d und Verbinden der TCB in der Liste, die vor und nach dem TCB_d waren, enthalten. Insbesondere kann das FWD_CP-Feld des TCB, der dem TCB_d vorausgeht, verändert werden, um auf den TCB zu zeigen, der TCB_d folgt. Ähnlich kann das BACK_CP-Feld des TCB, der TCB_d folgt, verändert werden, um auf den TCB zu zeigen, der TCB_d vorausgeht. Auf diese Weise kann der TCB_d effektiv aus der Liste der TCB, die auszuführen sind bei 220, entfernt werden. In einigen Ausführungsformen kann die API außerdem den zum Speichern des TCB_d verwendeten Speichers freigeben und den Speicher in den Pool freier Speicherblöcke zurückgeben.
  • Wie erwähnt kann es in einigen Ausführungsformen wünschenswert sein, den Status eines TCB in der verketteten Liste von TCB abzufragen. Beispielsweise kann der auf dem Prozessor 210 ablaufende Anwendungscode eine Statusaktualisierung für einen speziellen TCB oder einen speziellen Job von dem Hardware-Beschleuniger anfordern. Als ein weiteres Beispiel können die APIs der 5 oder 6 eine Abfrage an den Elementen 510 oder 610 ausgeben. 7 bildet eine Beispiel-API ab, die in Reaktion auf eine solche Abfrage verwendet werden kann. Die API von 7 kann durch den Prozessor 210 ausgeführt werden. Die Syntax der Abfrage kann beispielsweise query_job(ACC_TCB TCB_q) sein. „ACC TCB TCB_q“ kann Informationen wie z. B. einen Zeiger und eine Adresse usw., die sich auf einen TCB („TCB_q“) beziehen, enthalten.
  • Es wird darauf hingewiesen, dass in einigen Ausführungsformen die APIs einer oder mehrerer der 3-6 den letzten TCB in einer gegebenen Prioritätsstufe beeinflussen können. Beispielsweise kann ein neuer TCB mit einer „hohen“ Priorität nach dem existierenden letzten TCB mit einer „hohen“ Priorität eingefügt werden. Alternativ kann der letzte TCB mit einer gegebenen Priorität ersetzt oder entfernt werden. In dieser Situation können verschiedene Aktualisierungen an den verschiedenen Kettenzeigern, verketteten Listen von TCB usw. ausgeführt werden, um den aktualisierten „letzten TCB“ dieser Prioritätsstufe genau widerzuspiegeln.
  • Die API kann bei 705 Anhalten des Hardware-Beschleunigers enthalten. Das Anhalten des Hardware-Beschleunigers kann ähnlich dem Anhalten sein, das mit Bezug auf die Elemente 320, 505, 605 usw. beschrieben ist. Die API kann dann bei 710 das Identifizieren, ob der TCB_q existiert, enthalten. Mit anderen Worten kann die API identifizieren, ob der TCB_q in der verketteten Liste von TCB lokalisiert werden kann. Falls bei 710 gefunden wird, dass der TCB_q nicht existiert, dann kann die API das Zurückgeben eines Fehlers bei 715 und Wiederaufnahme der Operation enthalten, was beispielsweise ähnlich dem vorstehenden Element 440 sein kann.
  • Falls bei 710 der TCB_q identifiziert wird, dann kann die API bei 720 das Identifizieren, ob der TCB_q fertiggestellt ist, enthalten. Mit anderen Worten kann die API das Identifizieren enthalten, ob der TCB_q in den früher ausgeführten TCB 214 ist. Zusätzlich oder alternativ kann das Identifizieren ob der TCB_q fertiggestellt ist, das Überprüfen eines Fertigstellungs-Flags, das sich auf TCB_q bezieht oder ein Teil davon ist, enthalten. Andere Ausführungsformen können andere Kennzeichen aufweisen, die sich auf die Fertigstellung des TCB beziehen. Falls ja, dann kann die API bei 725 das Zurückgeben einer Angabe, dass der TCB_q fertiggestellt ist, und Wiederaufnehmen der Operation enthalten, wie vorstehend beispielsweise mit Bezug auf das Element 440 beschrieben ist.
  • Falls bei 720 identifiziert wird, dass der TCB_q nicht fertiggestellt worden ist, dann kann die API bei 730 das Identifizieren enthalten, ob der TCB_q abläuft. Wie es hier verwendet ist, kann das „Ablaufen“ angeben, ob der TCB in dem aktiven Zustand, in dem er verarbeitet wird, war oder der Job, auf den sich der TCB bezieht, durch den Hardware-Beschleuniger ausgeführt wurde, bevor der Hardware-Beschleuniger angehalten wurde. Falls bei 730 identifiziert wird, dass der TCB_q abläuft, dann kann die API bei 735 das Zurückgeben einer Angabe, dass der TCB_q abläuft, enthalten und die Operation wiederaufnehmen, wie vorstehend beispielsweise mit Bezug auf Element 440 beschrieben ist. Falls jedoch bei 730 nicht identifiziert wird, dass der TCB_q abläuft, dann kann die API bei 740 das Zurückgeben einer Angabe, dass der TCB_q nicht erledigt ist, enthalten und die Operation wiederaufnehmen, wie vorstehend beispielsweise mit Bezug auf Element 440 beschrieben ist.
  • Es ist zu verstehen, dass die vorstehend beschriebenen APIs als Beispiele für eine Ausführungsform vorgesehen sind und andere Ausführungsformen von den beschriebenen abweichen können. Beispielsweise können andere Ausführungsformen mehr oder weniger Elemente, eine unterschiedliche Syntax usw. aufweisen. In einigen Ausführungsformen können spezielle Elemente in einer anderen Reihenfolge als der in den 3-7 abgebildeten ausgeführt werden. Zusätzlich können, obwohl spezielle aus den APIs oder Elemente davon so beschrieben sein können, dass sie durch den Hardware-Beschleuniger oder den Prozessor ausgeführt werden, in einigen Ausführungsformen ein oder mehrere der APIs oder Elemente davon, die so beschrieben sind, dass sie durch dem Hardware-Beschleuniger ausgeführt werden, durch den Prozessor ausgeführt werden, und umgekehrt. Andere Variationen können in anderen Ausführungsformen vorhanden sein.
  • 8 ist ein Blockdiagramm einer beispielhaften elektrischen Vorrichtung 1800, die einen oder mehrerer Hardware-Beschleuniger aufweisen kann, in Übereinstimmung mit irgendwelchen der hier offenbarten Ausführungsformen. Eine Anzahl von Komponenten sind in 8 so dargestellt, dass sie in der elektrischen Vorrichtung 1800 enthalten sind, jedoch können eine oder mehrere dieser Komponenten weggelassen oder dupliziert sein, wie es für die Anwendung geeignet ist. In einigen Ausführungsformen können einige der oder alle Komponenten, die in der elektrischen Vorrichtung 1800 enthalten sind, an einer oder mehreren Hauptplatinen angeschlossen sein. In einigen Ausführungsformen sind einige dieser oder alle diese Komponenten auf einem einzigen SoC-Baustein hergestellt.
  • Zusätzlich kann in verschiedenen Ausführungsformen die elektrische Vorrichtung 1800 eine oder mehrere der in 8 dargestellten Komponenten nicht aufweisen, sondern die elektrische Vorrichtung 1800 kann eine Schnittstellenschaltungsanordnung zum Koppeln mit der einen oder den mehreren Komponenten aufweisen. Beispielsweise kann die elektrische Vorrichtung 1800 keine Anzeigevorrichtung 1806 aufweisen, sondern kann eine Anzeigevorrichtungs-Schnittstellenschaltungsanordnung (z. B. ein Verbindungselement und eine Treiberschaltungsanordnung) aufweisen, an die eine Anzeigevorrichtung 1806 gekoppelt sein kann. In einer weiteren Gruppe von Beispielen kann die elektrische Vorrichtung 1800 keine Audioeingabevorrichtung 1824 oder keine Audioausgabevorrichtung 1808 aufweisen, sondern kann eine Audioeingabe- oder Audioausgabe-Schnittstellenschaltungsanordnung (z. B. Verbindungselemente und unterstützende Schaltungsanordnung) aufweisen, an die eine Audioeingabevorrichtung 1824 oder eine Audioausgabevorrichtung 1808 gekoppelt sein kann.
  • Die elektrische Vorrichtung 1800 kann eine Verarbeitungsvorrichtung 1802 (z. B. eine oder mehrere Verarbeitungsvorrichtungen) aufweisen. Wie er hier verwendet ist, kann sich der Begriff „Verarbeitungsvorrichtung“ oder „Prozessor“ auf irgendeine/n Vorrichtung oder Abschnitt einer Vorrichtung beziehen, die/der elektronische Daten aus Registern und/oder einem Speicher verarbeitet, um diese elektronischen Daten in andere elektronische Daten zu transformieren, die in Register und/oder einem Speicher gespeichert werden können. Die Verarbeitungsvorrichtung 1802 kann einen oder mehrere DSPs, ASICs, CPUs, Grafikverarbeitungseinheiten (GPUs), Kryptoprozessoren (spezialisierte Prozessoren, die kryptographische Algorithmen innerhalb von Hardware ausführen), Server-Prozessoren oder irgendwelche anderen geeigneten Verarbeitungsvorrichtungen aufweisen. Die elektrische Vorrichtung 1800 kann einen Speicher 1804 aufweisen, der selbst eine oder mehrere Speichervorrichtungen aufweisen kann, wie z. B. flüchtigen Speicher (z. B. dynamischen Direktzugriffsspeicher (DRAM)), nichtflüchtigen Speicher (z. B. Festwertspeicher (ROM)), Flash-Speicher, Festkörperspeicher und/oder ein Festplattenlaufwerk. In einigen Ausführungsformen kann der Speicher 1804 Speicher aufweisen, der einen Baustein mit der Verarbeitungsvorrichtung 1802 gemeinsam verwendet. Dieser Speicher kann als Cache-Speicher verwendet werden und kann eingebetteten dynamischen Direktzugriffsspeicher (eDRAM) oder magnetischen Spinmomentübertragungs-Direktzugriffsspeicher (STT-MRAM) aufweisen. Die Verarbeitungsvorrichtung 1802 kann beispielsweise ähnlich dem Prozessor 210 sein und kann mit einem Hardware-Beschleuniger wie z. B. dem Hardware-Beschleuniger 205 gekoppelt sein.
  • In einigen Ausführungsformen kann die elektrische Vorrichtung 1800 einen Kommunikationschip 1812 (z. B. einen oder mehrere Kommunikationschips) aufweisen. Beispielsweise kann der Kommunikationschip 1812 zum Managen drahtloser Kommunikation für die Übertragung von Daten zu und von der elektrischen Vorrichtung 1800 ausgebildet sein. Der Begriff „drahtlos“ und seine Ableitungen können verwendet sein, um Schaltungen, Vorrichtungen, Systeme, Verfahren, Techniken, Kommunikationskanäle usw. zu beschreiben, die Daten durch Verwendung modulierter elektromagnetischer Strahlung über ein nicht festes Medium kommunizieren können. Der Begriff impliziert nicht, dass die zugeordneten Vorrichtungen keine Drähte enthalten, obwohl das in einigen Ausführungsformen der Fall sein könnte.
  • Der Kommunikationschip 1812 kann irgendeinen/irgendeines aus einer Anzahl von Drahtlosstandards oder -protokollen implementieren, die, ohne jedoch darauf beschränkt zu sein, Standards des „Institute for Electrical and Electronic Engineers“ (IEEE), die Wi-Fi (IEEE 802.11-Familie), IEEE 802.16-Standards (z. B. den Zusatz IEEE 802.16-2005) enthalten, Langzeitentwicklungs- (LTE-) Projekt zusammen mit irgendwelchen Zusätzen, Aktualisierungen und/oder Überarbeitungen (z. B. weiterentwickeltes LTE-Projekt, Ultramobilbreitband- (UMB-) Projekt (auch bezeichnet als „3GPP2“) usw.) enthalten. Mit IEEE 802.16 kompatible Breitbanddrahtloszugangs- (BWA- ) Netze sind allgemein als WiMAX-Netze bezeichnet, ein Akronym, das für „Worldwide Interoperability for Microwave Access“ steht, was ein Zertifizierungsmerkmal für Produkte ist, die Tests auf Konformität und Zusammenwirken für die IEEE 802.16-Standards bestehen. Der Kommunikationschip 1812 kann in Übereinstimmung mit dem Globalen System für Mobilkommunikation (GSM), dem Allgemeinen Paketfunkdienst (GPRS), dem universellen Mobiltelekommunikationssystem (UMTS), dem Hochgeschwindigkeitspaketzugangs- (HSPA), dem weiterentwickelten HSPA- (E-HSPA) oder LTE-Netz arbeiten. Der Kommunikationschip 1812 kann in Übereinstimmung mit Verbesserten Daten für GSM-Weiterentwicklung (EDGE), dem GSM-EDGE-Funkzugangsnetz (GERAN), dem universellen terrestrischen Funkzugangsnetz (UTRAN) oder weiterentwickelten UTRAN (E-UTRAN) arbeiten. Der Kommunikationschip 1812 kann sowohl in Übereinstimmung mit Codemultiplexmehrfachzugriff (CDMA), Zeitmultiplexmehrfachzugriff (TDMA), digitaler verbesserter Schnurloskommunikation (DECT), Weiterentwicklung-Daten optimiert (EV-DO) und Ableitungen davon als auch mit irgendwelchen anderen Drahtlosprotokollen, die als 3G, 4G, 5G und darüber hinaus bezeichnet sind. Der Kommunikationschip 1812 kann in anderen Ausführungsformen in Übereinstimmung mit anderen Drahtlosprotokollen arbeiten. Die elektrische Vorrichtung 1800 kann eine Antenne 1822 zum Unterstützen drahtloser Kommunikation und/oder zum Empfangen anderer drahtloser Kommunikation (wie z. B. AM- oder FM-Radiosendungen) aufweisen.
  • In einigen Ausführungsformen kann der Kommunikationschip 1812 drahtgebundene Kommunikation managen, wie z. B. elektrische, optische oder irgendwelche anderen geeigneten Kommunikationsprotokolle (z. B. Ethernet). Wie vorstehend erwähnt kann der Kommunikationschip 1812 mehrere Kommunikationschips aufweisen. Beispielsweise kann ein erster Kommunikationschip 1812 für Drahtloskommunikation mit kürzerer Reichweite wie z. B. Wi-Fi oder Bluetooth dediziert sein, und ein zweiter Kommunikationschip 1812 kann für Drahtloskommunikation mit größerer Reichweite wie z. B. das globale Positionierungssystem (GPS), EDGE, GPRS, CDMA, WiMAX, LTE, EV-DO oder andere dediziert sein. In einigen Ausführungsformen kann ein erster Kommunikationschip 1812 für Drahtloskommunikation dediziert sein, und ein zweiter Kommunikationschip 1812 kann für drahtgebundene Kommunikation dediziert sein.
  • Die elektrische Vorrichtung 1800 kann eine Batterie/Stromversorgungsschaltungsanordnung 1814 enthalten. Die Batterie/Stromversorgungsschaltungsanordnung 1814 kann eine oder mehrere Energiespeichervorrichtungen (z. B. Batterien oder Kondensatoren) und/oder eine Schaltungsanordnung zum Koppeln von Komponenten der elektrischen Vorrichtung 1800 mit einer Energiequelle separat von der elektrischen Vorrichtung 1800 (z. B. Wechselstromleitung) aufweisen.
  • Die elektrische Vorrichtung 1800 kann eine Anzeigevorrichtung 1806 (oder eine entsprechende Schnittstellenschaltungsanordnung, wie vorstehend diskutiert) aufweisen. Die Anzeigevorrichtung 1806 kann irgendwelche visuellen Indikatoren wie z. B. eine Heads-Up-Anzeigevorrichtung, einen Computer-Monitor, einen Projektor, eine Anzeigevorrichtung mit berührungssensitivem Bildschirm, eine Flüssigkristallanzeigevorrichtung (LCD), eine Leuchtdiodenanzeigevorrichtung oder eine Flachtafelanzeigevorrichtung aufweisen.
  • Die elektrische Vorrichtung 1800 kann eine Audioausgabevorrichtung 1808 (oder eine entsprechende Schnittstellenschaltungsanordnung, wie vorstehend diskutiert) aufweisen. Die Audioausgabevorrichtung 1808 kann irgendeine Vorrichtung aufweisen, die einen hörbaren Indikator erzeugt, wie z. B. Lautsprecher, Kopfhörer oder Ohrhörer.
  • Die elektrische Vorrichtung 1800 kann eine Audioeingabevorrichtung 1824 (oder eine entsprechende Schnittstellenschaltungsanordnung, wie vorstehend diskutiert) aufweisen. Die Audioeingabevorrichtung 1824 kann irgendeine Vorrichtung aufweisen, die ein Signal erzeugt, das für einen Schall repräsentativ ist, wie z. B. Mikrofone, Mikrofonanordnungen oder digitale Instrumente (z. B. Instrumente, die einen digitalen Musikinstrumentenschnittstellen- (MIDI-) Ausgang aufweisen).
  • Die elektrische Vorrichtung 1800 kann eine GPS-Vorrichtung 1818 (oder eine entsprechende Schnittstellenschaltungsanordnung, wie vorstehend diskutiert) aufweisen. Die GPS-Vorrichtung 1818 kann in Kommunikation mit einem satellitenbasierten System sein und kann eine Stelle der elektrischen Vorrichtung 1800 empfangen, wie in der Technik bekannt ist.
  • Die elektrische Vorrichtung 1800 kann eine weitere Ausgabevorrichtung 1810 (oder eine entsprechende Schnittstellenschaltungsanordnung, wie vorstehend diskutiert) aufweisen. Beispiele für die andere Ausgabevorrichtung 1810 können einen Audio-Codec, einen Video-Codec, einen Drucker, einen drahtgebundenen oder drahtlosen Sender zum Bereitstellen von Informationen für andere Vorrichtungen oder eine zusätzliche Speichervorrichtung enthalten.
  • Die elektrische Vorrichtung 1800 kann eine weitere Eingabevorrichtung 1820 (oder eine entsprechende Schnittstellenschaltungsanordnung, wie vorstehend diskutiert) aufweisen. Beispiele für die andere Eingabevorrichtung 1820 können einen Beschleunigungsmesser, ein Gyroskop, einen Kompass, eine Bildaufnahmevorrichtung, eine Tastatur, eine Cursorsteuerungsvorrichtung wie z. B. eine Maus, einen Stift, eine berührungssensitive Kontaktfläche, ein Barcode-Lesegerät, ein „Quick Response“- (QR-) Code-Lesegerät oder ein Hochfrequenzidentifizierungs- (RFID-) Lesegerät enthalten.
  • Die elektrische Vorrichtung 1800 kann irgendeinen gewünschten Formfaktor aufweisen, wie z. B. eine tragbare oder mobile elektrische Vorrichtung (z. B. ein Mobiltelefon, ein Smartphone, eine mobile Internet-Vorrichtung, ein Musikabspielgerät, einen Tablet-Computer, einen Laptop-Computer, einen Netbook-Computer, einen Ultrabook-Computer, einen persönlichen digitalen Assistenten (PDA), einen ultramobilen Personalcomputer usw.), eine elektrische Desktop-Vorrichtung, eine Servervorrichtung oder eine andere vernetzte Berechnungskomponente, einen Drucker, einen Scanner, einen Monitor, eine Set-Top-Box, eine Unterhaltungssteuereinheit, eine Fahrzeugsteuereinheit, einen digitalen Videorecorder oder eine am Körper tragbare elektrische Vorrichtung. In einigen Ausführungsformen kann die elektrische Vorrichtung 1800 irgendeine andere elektronische Vorrichtung sein, die Daten verarbeitet.
  • BEISPIELE FÜR VERSCHIEDENE AUSFÜHRUNGSFORMEN
  • Beispiel 1 enthält ein Verfahren, das Folgendes aufweist: Identifizieren durch eine Komponente einer Berechnungsvorrichtung eines TCB, der sich auf einen Job bezieht, der durch die Komponente auszuführen ist; Identifizieren basierend auf dem TCB einer Prioritätsstufe des Jobs; Einfügen des Jobs in eine Warteschlange von Jobs, die auszuführen sind, basierend auf der identifizierten Prioritätsstufe; und Ausführen des Jobs basierend auf der identifizierten Prioritätsstufe.
  • Beispiel 2 enthält das Verfahren nach Beispiel 1 oder einem anderen Beispiel hier, wobei die Komponente ein Kern oder ein Hardware-Beschleuniger der Berechnungsvorrichtung ist.
  • Beispiel 3 enthält das Verfahren nach Beispiel 1 oder einem anderen Beispiel hier, wobei der Job ein Job ist, der sich auf eine DMA-Anforderung bezieht.
  • Beispiel 4 enthält das Verfahren nach einem der Beispiele 1-3 oder einem anderen Beispiel hier, wobei der Job ein Job mit einer höheren Prioritätsstufe ist und das Einfügen des Jobs mit der höheren Prioritätsstufe in die Warteschlange das Einfügen des Jobs mit der höheren Prioritätsstufe in die Warteschlange, so dass er vor der Ausführung eines Jobs mit einer niedrigeren Prioritätsstufe ausgeführt wird.
  • Beispiel 5 enthält das Verfahren nach Beispiel 4 oder einem anderen Beispiel hier, wobei der Job mit der niedrigeren Prioritätsstufe durch die Komponente der Berechnungsvorrichtung vor der Identifizierung des TCB identifiziert wurde.
  • Beispiel 6 enthält das Verfahren nach Beispiel 4 oder einem anderen Beispiel hier, wobei der Job mit der niedrigeren Prioritätsstufe in die Warteschlange vor dem Einfügen des Jobs mit der höchsten Prioritätsstufe eingefügt wurde.
  • Beispiel 7 enthält das Verfahren nach einem der Beispiele 1-3 oder einem anderen Beispiel hier, wobei das Einfügen des Jobs in die Warteschlange von Jobs, die auszuführen sind, auf der Leistung einer API, die sich auf die Jobs bezieht, basiert.
  • Beispiel 8 enthält das Verfahren nach einem der Beispiele 1-3 oder einem anderen Beispiel hier, wobei die Warteschlange der Jobs, die auszuführen sind, eine Warteschlange mit vier Prioritätsstufen enthält.
  • Beispiel 9 enthält ein oder mehrere nichtflüchtige computerlesbare Medien, die Anweisungen aufweisen, die bei Ausführung der Anweisungen durch ein oder mehrere Elemente einer Berechnungsvorrichtung dienen zum Veranlassen einer Komponente der Berechnungsvorrichtung zum: Identifizieren eines TCB, der sich auf einen Job bezieht, der durch die Komponente auszuführen ist; Identifizieren basierend auf dem TCB einer Prioritätsstufe des Jobs; Einfügen des Jobs in eine Warteschlange von Jobs, die auszuführen sind, basierend auf der identifizierten Prioritätsstufe; und Ausführen des Jobs basierend auf der identifizierten Prioritätsstufe.
  • Beispiel 10 enthält eines oder mehrere nichtflüchtige computerlesbare Medien nach Beispiel 9 oder einem anderen Beispiel hier, wobei die Komponente ein Kern oder ein Hardware-Beschleuniger der Berechnungsvorrichtung ist.
  • Beispiel 11 enthält eines oder mehrere nichtflüchtige computerlesbare Medien nach Beispiel 9 oder einem anderen Beispiel hier, wobei der Job ein Job ist, der sich auf eine DMA-Anforderung bezieht.
  • Beispiel 12 enthält eines oder mehrere nichtflüchtige computerlesbare Medien nach einem der Beispiels 9-11 oder einem anderen Beispiel hier, wobei der Job ein Job mit einer höheren Prioritätsstufe ist und das Einfügen des Jobs mit der höheren Prioritätsstufe in die Warteschlange das Einfügen des Jobs mit der höheren Prioritätsstufe in die Warteschlange, so dass er vor der Ausführung eines Jobs mit einer niedrigeren Prioritätsstufe ausgeführt wird, enthält.
  • Beispiel 13 enthält eines oder mehrere nichtflüchtige computerlesbare Medien nach Beispiel 12 oder einem anderen Beispiel hier, wobei der Job mit der niedrigeren Prioritätsstufe durch die Komponente der Berechnungsvorrichtung vor der Identifizierung des TCB identifiziert wurde.
  • Beispiel 14 enthält eines oder mehrere nichtflüchtige computerlesbare Medien nach Beispiel 12 oder einem anderen Beispiel hier, wobei der Job mit der niedrigeren Prioritätsstufe in die Warteschlange vor dem Einfügen des Jobs mit der höchsten Prioritätsstufe eingefügt wurde.
  • Beispiel 15 enthält eines oder mehrere nichtflüchtige computerlesbare Medien nach einem der Beispiele 9-11 oder einem anderen Beispiel hier, wobei das Einfügen des Jobs in die Warteschlange von Jobs, die auszuführen sind, auf der Leistung einer API, die sich auf die Jobs bezieht, basiert.
  • Beispiel 16 enthält eines oder mehrere nichtflüchtige computerlesbare Medien nach einem der Beispiel 9-11 oder einem anderen Beispiel hier, wobei die Warteschlange der Jobs, die auszuführen sind, eine Warteschlange mit vier Prioritätsstufen enthält.
  • Beispiel 17 enthält eine Einrichtung, die Folgendes aufweist: Mittel zum Identifizieren eines TCB, der sich auf einen Job bezieht, der durch die Komponente auszuführen ist; Mittel zum Identifizieren basierend auf dem TCB einer Prioritätsstufe des Jobs; Mittel zum Einfügen des Jobs in eine Warteschlange von Jobs, die auszuführen sind, basierend auf der identifizierten Prioritätsstufe; und Mittel zum Ausführen des Jobs basierend auf der identifizierten Prioritätsstufe.
  • Beispiel 18 enthält die Einrichtung nach Beispiel 17 oder einem anderen Beispiel hier, wobei die Komponente ein Kern oder ein Hardware-Beschleuniger der Berechnungsvorrichtung ist.
  • Beispiel 19 enthält die Einrichtung nach Beispiel 17 oder einem anderen Beispiel hier, wobei der Job ein Job ist, der sich auf eine DMA-Anforderung bezieht.
  • Beispiel 20 enthält die Einrichtung nach einem der Beispiele 17-19 oder einem anderen Beispiel hier, wobei der Job ein Job mit einer höheren Prioritätsstufe ist und Mittel zum Einfügen des Jobs mit der höheren Prioritätsstufe in die Warteschlange Mittel zum Einfügen des Jobs mit der höheren Prioritätsstufe in die Warteschlange, so dass er vor der Ausführung eines Jobs mit einer niedrigeren Prioritätsstufe ausgeführt wird, aufweisen.
  • Beispiel 21 enthält die Einrichtung nach Beispiel 20 oder einem anderen Beispiel hier, wobei der Job mit der niedrigeren Prioritätsstufe durch die Komponente der Berechnungsvorrichtung vor der Identifizierung des TCB identifiziert wurde.
  • Beispiel 22 enthält die Einrichtung nach Beispiel 20 oder einem anderen Beispiel hier, wobei der Job mit der niedrigeren Prioritätsstufe in die Warteschlange vor dem Einfügen des Jobs mit der höchsten Prioritätsstufe eingefügt wurde.
  • Beispiel 23 enthält die Einrichtung nach einem der Beispiele 17-19 oder einem anderen Beispiel hier, wobei das Einfügen des Jobs in die Warteschlange von Jobs, die auszuführen sind, auf der Leistung einer API, die sich auf die Jobs bezieht, basiert.
  • Beispiel 24 enthält die Einrichtung nach einem der Beispiele 17-19 oder einem anderen Beispiel hier, wobei die Warteschlange von Jobs, die auszuführen sind, eine Warteschlange mit vier Prioritätsstufen enthält.
  • Beispiel 25 enthält eine Einrichtung, die Folgendes aufweist: einen Speicher; und eine Komponente, die mit dem Speicher kommunikationstechnisch gekoppelt ist, wobei die Komponente dient zum: Identifizieren eines TCB, der sich auf einen Job bezieht, der durch die Komponente auszuführen ist; Identifizieren basierend auf dem TCB einer Prioritätsstufe des Jobs; Einfügen des Jobs in eine Warteschlange von Jobs, die auszuführen sind, basierend auf der identifizierten Prioritätsstufe; und Ausführen des Jobs basierend auf der identifizierten Prioritätsstufe.
  • Beispiel 26 enthält die Einrichtung nach Beispiel 25 oder einem anderen Beispiel hier, wobei die Komponente ein Kern oder ein Hardware-Beschleuniger der Berechnungsvorrichtung ist.
  • Beispiel 27 enthält die Einrichtung nach Beispiel 25 oder einem anderen Beispiel hier, wobei der Job ein Job ist, der sich auf eine DMA-Anforderung bezieht.
  • Beispiel 28 enthält die Einrichtung nach einem der Beispiele 25-27 oder einem anderen Beispiel hier, wobei der Job ein Job mit einer höheren Prioritätsstufe ist und das Einfügen des Jobs mit der höheren Prioritätsstufe in die Warteschlange das Einfügen des Jobs mit der höheren Prioritätsstufe in die Warteschlange, so dass er vor der Ausführung eines Jobs mit einer niedrigeren Prioritätsstufe ausgeführt wird.
  • Beispiel 29 enthält die Einrichtung nach Beispiel 28 oder einem anderen Beispiel hier, wobei der Job mit der niedrigeren Prioritätsstufe durch die Komponente der Berechnungsvorrichtung vor der Identifizierung des TCB identifiziert wurde.
  • Beispiel 30 enthält die Einrichtung nach Beispiel 28 oder einem anderen Beispiel hier, wobei der Job mit der niedrigeren Prioritätsstufe in die Warteschlange vor dem Einfügen des Jobs mit der höchsten Prioritätsstufe eingefügt wurde.
  • Beispiel 31 enthält die Einrichtung nach einem der Beispiele 25-27 oder einem anderen Beispiel hier, wobei das Einfügen des Jobs in die Warteschlange von Jobs, die auszuführen sind, auf der Leistung einer API, die sich auf die Jobs bezieht, basiert.
  • Beispiel 32 enthält die Einrichtung nach einem der Beispiele 25-27 oder einem anderen Beispiel hier, wobei die Warteschlange der Jobs, die auszuführen sind, eine Warteschlange mit vier Prioritätsstufen enthält.
  • Beispiel 33 enthält eine Berechnungsvorrichtung, die Folgendes aufweist: einen Prozessor zum: Identifizieren in einem TCB einer Angabe einer Prioritätsstufe des TCB; Identifizieren basierend auf der Angabe der Prioritätsstufe einer Stelle in einer Warteschlange von mehreren TCB; und Einfügen des TCB in die Warteschlange an der identifizierten Stelle; und einen Hardware-Beschleuniger, der mit dem Prozessor kommunikationstechnisch gekoppelt ist, wobei der Hardware-Beschleuniger zum Ausführen von Jobs, die sich auf TCB in der Warteschlange der mehreren TCBs beziehen, dient, wobei der Hardware-Beschleuniger dazu dient, einen Job, der sich auf einen TCB bezieht, in Übereinstimmung mit einer Reihenfolge des TCB in der Warteschlange der mehreren TCBs auszuführen.
  • Beispiel 34 enthält die Berechnungsvorrichtung nach Beispiel 33 oder einem anderen Beispiel hier, wobei die Angabe der Prioritätsstufe ein 2-Bit-Indikator in der TCB ist.
  • Beispiel 35 enthält die Berechnungsvorrichtung nach Beispiel 33 oder einem anderen Beispiel hier, wobei der Prozessor ferner zum Senden einer Anhalteanforderung vor dem Senden des TCB dient.
  • Beispiel 36 enthält die Berechnungsvorrichtung nach einem der Beispiele 33-35 oder einem anderen Beispiel hier, wobei die Warteschlange einen ersten Teilabschnitt von TCB an einer ersten Prioritätsstufe und einen zweiten Teilabschnitt von TCB an einer zweiten Prioritätsstufe, die niedriger ist als die ersten Prioritätsstufe, aufweist und wobei der Hardware-Beschleuniger zum Ausführen von Jobs, die sich auf den ersten Teilabschnitt der TCB beziehen, dient, bevor der Hardware-Beschleuniger Jobs ausführt, die sich auf den zweiten Teilabschnitt der TCB beziehen.
  • Beispiel 37 enthält die Berechnungsvorrichtung nach Beispiel 36 oder einem anderen Beispiel hier, wobei der TCB in der ersten Prioritätsstufe ist und wobei der Prozessor ferner dient zum: Identifizieren einer Prioritätsstufe eines derzeit ablaufenden TCB; und Identifizieren der Stelle in der Warteschlange basierend auf der Prioritätsstufe des derzeit ablaufenden TCB.
  • Beispiel 38 enthält die Berechnungsvorrichtung nach Beispiel 37 oder einem anderen Beispiel hier, wobei die Prioritätsstufe des derzeit ablaufenden TCB die erste Prioritätsstufe ist und wobei die Stelle am Ende des ersten Teilabschnitts der TCB ist.
  • Beispiel 39 enthält die Berechnungsvorrichtung nach Beispiel 37 oder einem anderen Beispiel hier, wobei die Prioritätsstufe des derzeit ablaufenden TCB die zweite Prioritätsstufe ist und wobei die Stelle nach dem derzeit ablaufenden TCB und vor anderen TCB des zweiten Teilabschnitts von TCB ist.
  • Beispiel 40 enthält einen Prozessor, der Folgendes aufweist: eine Kommunikationsschnittstelle zum Kommunizieren mit einem Hardware-Beschleuniger; und Logik, die mit der Kommunikationsschnittstelle gekoppelt ist, wobei die Logik dient zum: Identifizieren in einem TCB einer Angabe einer Prioritätsstufe des TCB; und Einfügen basierend auf der Angabe der Prioritätsstufe eines TCB an einer Stelle in einer Warteschlange von mehreren TCB; wobei der Hardware-Beschleuniger zum Ausführen entsprechender aus den mehreren TCBs basierend auf ihrer Stelle innerhalb der Warteschlange dient.
  • Beispiel 41 enthält den Prozessor nach Beispiel 40 oder einem anderen Beispiel hier, wobei die Angabe der Prioritätsstufe ein 2-Bit-Indikator in der TCB ist.
  • Beispiel 42 enthält den Prozessor nach Beispiel 40 oder einem anderen Beispiel hier, wobei die Angabe der Prioritätsstufe angibt, dass der TCB an einer aus mehreren möglichen Prioritätsstufen ist.
  • Beispiel 43 enthält den Prozessor nach einem der Beispiele 40-42 oder einem anderen Beispiel hier, wobei der TCB ferner eine Angabe, dass der Hardware-Beschleuniger vor dem Verarbeiten des TCB darauf warten soll, einen Trigger von dem Prozessor zu empfangen, eine Angabe, dass der Hardware-Beschleuniger einen Interrupt, der sich auf die Fertigstellung des TCB bezieht, zu dem Prozessor senden soll, oder eine Angabe, dass der Hardware-Beschleuniger einen Trigger, der sich auf die Fertigstellung des TCB bezieht, zu dem Prozessor senden soll, aufweist.
  • Beispiel 44 enthält den Prozessor nach einem der Beispiele 40-42 oder einem anderen Beispiel hier, wobei der TCB ferner eine Angabe eines Typs der Berechnung aufweist, der zu verwenden ist, um den Job, der sich auf den TCB bezieht, auszuführen.
  • Beispiel 45 enthält den Prozessor nach einem der Beispiele 40-42 oder einem anderen Beispiel hier, wobei der TCB ferner eine Angabe eines früheren TCB in der Warteschlange der mehreren TCBs aufweist.
  • Beispiel 46 enthält ein oder mehrere nichtflüchtige computerlesbare Medien, die Anweisungen aufweisen, die dann, wenn sie durch eine elektronische Vorrichtung ausgeführt werden, dazu dienen, einen Prozessor der elektronischen Vorrichtung zu veranlassen zum: Identifizieren einer Warteschlange von mehreren TCB, wobei die jeweiligen TCB aus den mehreren TCBs eine Angabe einer Prioritätsstufe der jeweiligen TCB innerhalb der Warteschlange aufweisen, und wobei ein Hardware-Beschleuniger dazu dient, einen Job, der sich auf eine entsprechende TCB bezieht, in Übereinstimmung mit der Prioritätsstufe des TCB auszuführen; Ausführen einer Anwendungsprogrammierschnittstelle (API), die sich auf die Warteschlange bezieht; und Modifizieren der Warteschlange basierend auf der Ausführung der API.
  • Beispiel 47 enthält das eine oder die mehreren nichtflüchtigen computerlesbaren Medien nach Beispiel 46 oder einem anderen Beispiel hier, wobei sich die API auf das Einfügen eines TCB in die Warteschlange der mehreren TCBs basierend auf einer Angabe einer Prioritätsstufe des TCB bezieht.
  • Beispiel 48 enthält das eine oder die mehreren nichtflüchtigen computerlesbaren Medien nach Beispiel 47 oder einem anderen Beispiel hier, wobei das Einfügen des TCB sich auf ein Flag bezieht, das einen letzten TCB an einer Prioritätsstufe angibt.
  • Beispiel 49 enthält das eine oder die mehreren nichtflüchtigen computerlesbaren Medien nach Beispiel 46 oder einem anderen Beispiel hier, wobei sich die API auf das Löschen einer TCB aus der Warteschlange bezieht.
  • Beispiel 50 enthält das eine oder die mehreren nichtflüchtigen computerlesbaren Medien nach Beispiel 46 oder einem anderen Beispiel hier, wobei sich die API auf eine Modifikation einer TCB der Warteschlange bezieht.
  • Beispiel 51 enthält das eine oder die mehreren nichtflüchtigen computerlesbaren Medien nach Beispiel 46 oder einem anderen Beispiel hier, wobei sich die API auf die Identifizierung eines Ausführungsstatus eines TCB innerhalb der Warteschlange bezieht.
  • Beispiel 52 enthält das eine oder die mehreren nichtflüchtigen computerlesbaren Medien nach Beispiel 46, wobei sich die API auf ein Zurücksetzen des Hardware-Beschleunigers bezieht.
  • Beispiel 53 enthält ein Verfahren zum Ausführen des Gegenstands eines der Beispiele 1-52 oder einer Teilmenge oder Kombination daraus.
  • Beispiel 54 enthält ein oder mehrere nichtflüchtige computerlesbare Medien, die Anweisungen aufweisen, die bei Ausführung der Anweisungen durch ein oder mehrere Elemente einer Berechnungsvorrichtung dazu dienen, eine Komponente der Berechnungsvorrichtung zu veranlassen, den Gegenstand eines der Beispiele 1-52 oder eine Teilmenge oder Kombination daraus auszuführen.
  • Beispiel 55 enthält eine Einrichtung, die eine Schaltungsanordnung zum Ausführen oder Veranlassen des Ausführens des Gegenstands einer der Beispiele 1-52 oder einer Teilmenge oder Kombination daraus aufweist.
  • Beispiel 56 enthält eine Einrichtung, die Mittel zum Ausführen oder Veranlassen des Ausführens des Gegenstands einer der Beispiele 1-52 oder einer Teilmenge oder Kombination daraus aufweist.
  • Verschiedene Ausführungsformen können irgendeine geeignete Kombination der vorstehend beschriebenen Ausführungsformen enthalten, die alternative (Oder-) Ausführungsformen von Ausführungsformen, die vorstehend in verbindender Form (und) beschrieben sind (z. B. kann das „und“ ein „und/oder“), enthalten. Darüber hinaus können einige Ausführungsformen einen oder mehrere Herstellungserzeugnisse (z. B. nichttransitorische computerlesbare Medien) enthalten, die Anweisungen aufweisen, die darauf gespeichert sind, die dann, wenn sie ausgeführt werden, zu Aktionen irgendeiner der vorstehend beschriebenen Ausführungsformen führen. Außerdem können einige Ausführungsformen Einrichtungen oder Systeme enthalten, die irgendein geeignetes Mittel zum Ausführen der verschiedenen Operationen der vorstehend beschriebenen Ausführungsformen aufweisen.
  • Die vorstehende Beschreibung dargestellter Ausführungsformen, einschließlich dessen, was in der Zusammenfassung beschrieben ist, ist nicht als vollständig oder zum Einschränken auf die präzisen offenbarten Formen vorgesehen. Obwohl spezifische Implementierungen von und Beispiele für verschiedene Ausführungsformen oder Konzepte hier zu erläuternden Zwecken beschrieben sind, können verschiedene äquivalente Modifikationen möglich sein, wie Fachleute der relevanten Technik erkennen werden. Diese Modifikationen können im Hinblick auf die vorstehende ausführliche Beschreibung, die Zusammenfassung, die Figuren oder die Ansprüche vorgenommen werden.
  • Gemäß einem Aspekt können sich Ausführungsformen auf eine elektronische Vorrichtung beziehen, die einen Prozessor, der kommunikationstechnisch mit einem Hardware-Beschleuniger gekoppelt ist, aufweist. Der Prozessor kann dazu ausgebildet sein, basierend auf einer Angabe einer Prioritätsstufe in einem Aufgabensteuerblock (TCB) eine Stelle zu identifizieren, an dem der TCB in eine Warteschlange von TCB eingefügt werden sollte. Der Hardware-Beschleuniger kann Jobs ausführen, die sich auf die Warteschlange von TCB beziehen, in einer Reihenfolge, die sich auf die Reihenfolge von TCB innerhalb der Warteschlange bezieht. Andere Ausführungsformen weniger Merkmale und können beschrieben oder beansprucht sein.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • IN 201941030394 [0001]

Claims (20)

  1. Berechnungsvorrichtung, die Folgendes aufweist: einen Prozessor zum: Identifizieren, in einem Aufgabensteuerblock (TCB), einer Angabe einer Prioritätsstufe des TCB; Identifizieren, basierend auf der Angabe der Prioritätsstufe, einer Stelle in einer Warteschlange von mehreren TCBs; und Einfügen des TCB in die Warteschlange an der identifizierten Stelle; und einen Hardware-Beschleuniger, der mit dem Prozessor kommunikationstechnisch gekoppelt ist, wobei der Hardware-Beschleuniger zum Ausführen von Jobs dient, die sich auf TCB in der Warteschlange der mehreren TCBs beziehen, wobei der Hardware-Beschleuniger dazu dient, einen Job, der sich auf einen TCB bezieht, in Übereinstimmung mit einer Reihenfolge des TCB in der Warteschlange der mehreren TCBs auszuführen.
  2. Berechnungsvorrichtung nach Anspruch 1, wobei die Angabe der Prioritätsstufe ein 2-Bit-Indikator in der TCB ist.
  3. Berechnungsvorrichtung nach einem der vorhergehenden Ansprüche, wobei der Prozessor ferner zum Senden einer Anhalteanforderung vor dem Senden des TCB dient.
  4. Berechnungsvorrichtung nach einem der vorhergehenden Ansprüche, wobei die Warteschlange einen ersten Teilabschnitt von TCBs an einer ersten Prioritätsstufe und einen zweiten Teilabschnitt von TCBs an einer zweiten Prioritätsstufe, die niedriger ist als die ersten Prioritätsstufe, aufweist und wobei der Hardware-Beschleuniger zum Ausführen von Jobs, die sich auf den ersten Teilabschnitt der TCBs beziehen, bevor der Hardware-Beschleuniger Jobs ausführt, die sich auf den zweiten Teilabschnitt der TCBs beziehen, dient.
  5. Berechnungsvorrichtung nach Anspruch 4, wobei der TCB an der ersten Prioritätsstufe ist und wobei der Prozessor ferner dient zum: Identifizieren einer Prioritätsstufe eines derzeit ablaufenden TCB; und Identifizieren der Stelle in der Warteschlange basierend auf der Prioritätsstufe des derzeit ablaufenden TCB.
  6. Berechnungsvorrichtung nach Anspruch 5, wobei die Prioritätsstufe des derzeit ablaufenden TCB die erste Prioritätsstufe ist und wobei die Stelle am Ende des ersten Teilabschnitts der TCBs ist.
  7. Berechnungsvorrichtung nach Anspruch 5, wobei die Prioritätsstufe des derzeit ablaufenden TCB die zweite Prioritätsstufe ist und wobei die Stelle nach dem derzeit ablaufenden TCB und vor anderen TCBs des zweiten Teilabschnitts von TCBs ist.
  8. Prozessor, der Folgendes aufweist: eine Kommunikationsschnittstelle zum Kommunizieren mit einem Hardware-Beschleuniger; und Logik, die mit der Kommunikationsschnittstelle gekoppelt ist, wobei die Logik dient zum: Identifizieren in einem Aufgabensteuerblock (TCB) einer Angabe einer Prioritätsstufe des TCB; und Einfügen basierend auf der Angabe der Prioritätsstufe eines TCB an einer Stelle in einer Warteschlange von mehreren TCBs; wobei der Hardware-Beschleuniger zum Ausführen entsprechender aus den mehreren TCBs basierend auf ihrer Stelle innerhalb der Warteschlange dient.
  9. Prozessor nach Anspruch 8, wobei die Angabe der Prioritätsstufe ein 2-Bit-Indikator in der TCB ist.
  10. Prozessor nach Anspruch 8 oder 9, wobei die Angabe der Prioritätsstufe angibt, dass der TCB an einer aus mehreren möglichen Prioritätsstufen ist.
  11. Prozessor nach einem der Ansprüche 8-10, wobei der TCB ferner eine Angabe, dass der Hardware-Beschleuniger vor dem Verarbeiten des TCB darauf warten soll, einen Trigger von dem Prozessor zu empfangen, eine Angabe, dass der Hardware-Beschleuniger einen Interrupt, der sich auf die Fertigstellung des TCB bezieht, zu dem Prozessor senden soll, oder eine Angabe, dass der Hardware-Beschleuniger einen Trigger, der sich auf die Fertigstellung des TCB bezieht, zu dem Prozessor senden soll, aufweist.
  12. Prozessor nach einem der Ansprüche 8-11, wobei der TCB ferner eine Angabe eines Typs der Berechnung aufweist, der zu verwenden ist, um den Job, der sich auf den TCB bezieht, auszuführen.
  13. Prozessor nach einem der Ansprüche 8-12, wobei der TCB ferner eine Angabe eines früheren TCB in der Warteschlange der mehreren TCBs aufweist.
  14. Ein oder mehrere nichtflüchtige computerlesbare Medien, die Anweisungen aufweisen, die dann, wenn sie durch eine elektronische Vorrichtung ausgeführt werden, dazu dienen, einen Prozessor der elektronischen Vorrichtung zur Durchführung der folgenden Schritte veranlassen: Identifizieren einer Warteschlange von mehreren Aufgabensteuerblöcken (TCBs), wobei die jeweiligen TCBs aus den mehreren TCBs eine Angabe einer Prioritätsstufe der jeweiligen TCBs innerhalb der Warteschlange aufweisen und ein Hardware-Beschleuniger dazu dient, einen Job, der sich auf eine entsprechende TCB bezieht, in Übereinstimmung mit der Prioritätsstufe des TCB auszuführen; Ausführen einer Anwendungsprogrammierschnittstelle (API), die sich auf die Warteschlange bezieht; und Modifizieren der Warteschlange basierend auf der Ausführung der API.
  15. Ein oder mehrere nichtflüchtige computerlesbare Medien nach Anspruch 14, wobei sich die API auf das Einfügen eines TCB in die Warteschlange der mehreren TCBs basierend auf einer Angabe einer Prioritätsstufe des TCB bezieht.
  16. Ein oder mehrere nichtflüchtige computerlesbare Medien nach Anspruch 15, wobei sich das Einfügen des TCB auf ein Flag bezieht, das einen letzten TCB an einer Prioritätsstufe angibt.
  17. Ein oder mehrere nichtflüchtige computerlesbare Medien nach einem der Ansprüche 14-16, wobei sich die API auf das Löschen einer TCB aus der Warteschlange bezieht.
  18. Ein oder mehrere nichtflüchtige computerlesbare Medien nach einem der Ansprüche 14-17, wobei sich die API auf die Modifikation einer TCB der Warteschlange bezieht.
  19. Ein oder mehrere nichtflüchtige computerlesbare Medien nach einem der Ansprüche 14-18, wobei sich die API auf die Identifizierung eines Ausführungsstatus eines TCB innerhalb der Warteschlange bezieht.
  20. Ein oder mehrere nichtflüchtige computerlesbare Medien nach einem der Ansprüche 14-19, wobei sich die API auf ein Zurücksetzen des Hardware-Beschleunigers bezieht.
DE102020117505.1A 2019-07-27 2020-07-02 Autonomes system zum einreihen von jobs in eine warteschlange für hardware -beschleuniger Pending DE102020117505A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IN201941030394 2019-07-27
IN201941030394 2019-07-27
US16/661,819 US11397612B2 (en) 2019-07-27 2019-10-23 Autonomous job queueing system for hardware accelerators
US16/661,819 2019-10-23

Publications (1)

Publication Number Publication Date
DE102020117505A1 true DE102020117505A1 (de) 2021-01-28

Family

ID=74098971

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020117505.1A Pending DE102020117505A1 (de) 2019-07-27 2020-07-02 Autonomes system zum einreihen von jobs in eine warteschlange für hardware -beschleuniger

Country Status (2)

Country Link
JP (1) JP7467554B2 (de)
DE (1) DE102020117505A1 (de)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04308939A (ja) * 1991-04-05 1992-10-30 Matsushita Electric Ind Co Ltd 待ち行列挿入方法
JP3760035B2 (ja) * 1996-08-27 2006-03-29 松下電器産業株式会社 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
JP6632709B2 (ja) * 2016-03-24 2020-01-22 富士ゼロックス株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
US10929944B2 (en) * 2016-11-23 2021-02-23 Advanced Micro Devices, Inc. Low power and low latency GPU coprocessor for persistent computing
CN111052084B (zh) * 2017-08-30 2023-10-17 富士胶片株式会社 图像处理装置、图像处理方法以及图像处理程序

Also Published As

Publication number Publication date
JP2022188077A (ja) 2022-12-20
JP7467554B2 (ja) 2024-04-15

Similar Documents

Publication Publication Date Title
DE112011102183B4 (de) Beschleuniger für die Migration virtueller Maschinen
DE112017003294B4 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE102019106669A1 (de) Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen
DE112017004663T5 (de) Mehrfachverbinder-unterstützung für usb-c
DE112010004784T5 (de) Effizientes Laden von Daten in den Speicher eines Rechnersystems
DE112017001808T5 (de) Technologien für einen verteilten hardwarewarteschlangenmanager
DE102013110085A1 (de) Host zum Steuern einer nicht-flüchtigen Speicherkarte, System mit demselben sowie Verfahren zum Betreiben des Hosts und des Systems
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE112010004006T5 (de) Zuverlässige kommunikationen in chipintegrierten netzwerken
CN103617508A (zh) 可配置的业务规则插件扩展装置和业务规则插件扩展方法
DE202014010940U1 (de) Dynamische Shuffle-Rekonfiguration
CN110019063B (zh) 计算节点数据容灾回放的方法、终端设备及存储介质
CN108804197B (zh) 一种动态组件化实现方法、装置、设备及存储介质
US20210026684A1 (en) Autonomous job queueing system for hardware accelerators
DE102022129468A1 (de) Implementierung von objektversionierung und -konsistenz bei skalierung
DE102017119065B4 (de) Aktualisieren eines Speichers
US10198378B2 (en) Faster data transfer with simultaneous alternative remote direct memory access communications
CN109710502B (zh) 日志传输方法、装置及存储介质
CA3094727C (en) Transaction processing method and system, and server
CN113760242B (zh) 一种数据处理方法、装置、服务器和介质
DE112010004562T5 (de) Zuweisung wirksam referenzierbarer global eindeutiger Kennungen in einer Mehrkernumgebung
DE102021117355A1 (de) SSD-verwaltete Host-Schreib-Atomizität mit beliebiger Übertragungslänge
DE102020117505A1 (de) Autonomes system zum einreihen von jobs in eine warteschlange für hardware -beschleuniger
DE112021007528T5 (de) Verfahren zur synchronisierung von speicherdatenbank undrelationaler datenbank eines auf merkmalskennzeichnungen basierenden stromnetzüberwachungssystems
DE102020133663A1 (de) Asset-caching in rechenarchitekturen für cloud-rendering

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009302000

Ipc: G06F0009500000