DE102021111195A1 - System und Verfahren zur On-Chip-Speicher- (OCM-) Port-Drosselung für Maschinenlern-Operationen - Google Patents
System und Verfahren zur On-Chip-Speicher- (OCM-) Port-Drosselung für Maschinenlern-Operationen Download PDFInfo
- Publication number
- DE102021111195A1 DE102021111195A1 DE102021111195.1A DE102021111195A DE102021111195A1 DE 102021111195 A1 DE102021111195 A1 DE 102021111195A1 DE 102021111195 A DE102021111195 A DE 102021111195A DE 102021111195 A1 DE102021111195 A1 DE 102021111195A1
- Authority
- DE
- Germany
- Prior art keywords
- port
- ocm
- ports
- access requests
- access
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Static Random-Access Memory (AREA)
- Memory System (AREA)
Abstract
Ein neuer Ansatz betrachtet Systeme und Verfahren zur Unterstützung der Steuerung des Stromverbrauchs eines Speichers auf einem Chip durch Drosselung von Portzugriffsanfragen an den Speicher über einen Speicher-Arbiter auf Grundlage eines oder mehrerer programmierbarer Parameter. Der Speicher-Arbiter ist so konfiguriert, dass er die Anzahl der Ports, die für den gleichzeitigen Zugriff auf den Speicher verwendet werden, auf weniger als die verfügbaren Ports des Speichers beschränkt, wodurch eine adaptive Leistungssteuerung des Chips ermöglicht wird. Es sind zwei Port-Drosselungsschemata aktiviert - strikte Port-Drosselung, die die Anzahl der für den Speicherzugriff gewährten Ports so drosselt, dass sie nicht mehr als eine vom Benutzer konfigurierte maximale Drossel-Port-Anzahl beträgt, und Leaky-Bucket-Port-Drosselung, die die Anzahl der für den Speicherzugriff gewährten Ports so drosselt, dass sie innerhalb eines Bereichs liegt, der auf einer Anzahl von Credit-Token basiert, die in einem Credit-Register geführt werden.
Description
- HINTERGRUND
- Eine der großen Herausforderungen beim System-Level-Design eines Chips ist es, seinen Stromverbrauch so zu steuern, dass er innerhalb einer Reihe von definierten Anforderungen liegt. Da 70 % der Fläche des Chips vom On-Chip-Speicher (OCM) eingenommen werden, der Daten speichert, auf die die Prozessoren/Kerne des Chips zugreifen (lesen und/oder schreiben), ist der OCM die Komponente, die den meisten Strom auf dem Chip verbraucht, da jede Speicheroperation (lesen/schreiben) viel Strom verbraucht. Das Problem des OCM-Stromverbrauchs ist besonders wichtig für ein hardwarebasiertes maschinelles Lernsystem (ML), das typischerweise mehrere Kerne/Subsysteme umfasst, die jeweils ihr eigenes OCM aufweisen. Folglich nehmen OCMs den größten Teil der Chipfläche des hardwarebasierten ML-Systems ein und sind die Hauptquelle für den Stromverbrauch des Chips.
- Die Cache-Leistungsoptimierung wurde für die Energieverwaltung des Chips verwendet. Die meisten aktuellen Energieverwaltungssysteme sind jedoch proprietär und spezifisch für die tatsächliche Konfiguration des Chips. Einige Energieverwaltungsansätze entscheiden sich dafür, die Stromversorgung und den Zugriff auf bestimmte Speicherbänke/Komponenten auf dem Chip abzuschalten, wenn die Speicherbänke nicht verwendet werden. Ein solcher Ansatz schränkt jedoch den Zugriff auf diese Speicherbänke ein, wobei ein solcher Speicherzugriff nicht immer im Voraus vorhersehbar ist, was zu einer Leistungsverschlechterung des Chips führt.
- Die vorstehenden Beispiele aus dem verwandten Bereich des Stands der Technik und die sie betreffenden Beschränkungen sind zur Veranschaulichung gedacht und nicht ausschließlich. Andere Beschränkungen des verwandten Standes der Technik werden beim Lesen der Beschreibung und beim Studium der Zeichnungen deutlich.
- Figurenliste
- Aspekte der vorliegenden Offenbarung sind am besten aus der folgenden detaillierten Beschreibung zu verstehen, wenn sie zusammen mit den begleitenden Figuren gelesen werden. Es wird darauf hingewiesen, dass in Übereinstimmung mit der üblichen Praxis in der Industrie, verschiedene Merkmale sind nicht nach Skalierung gezeichnet. Vielmehr können die Abmessungen der verschiedenen Merkmale zur Verdeutlichung der Diskussion willkürlich vergrößert oder verkleinert werden.
-
1 zeigt ein Beispiel eines Diagramms eines hardwarebasierten programmierbaren Systems/Architektur, das so konfiguriert ist, dass es den Speicherzugriff für Maschinenlernen gemäß einem Aspekt der vorliegenden Ausführungsformen unterstützt. -
2A zeigt ein Beispiel des Pseudocodes unter dem Schema der strikten Port-Drosselung;2B zeigt ein nicht-begrenzendes Beispiel eines Diagramms, das das Schema der strikten Port-Drosselung gemäß einem Aspekt der vorliegenden Ausführungsformen illustriert. -
3A zeigt ein Beispiel des Pseudocodes, der verwendet wird, um die zufällige Port-Zugriffs-Gewährungsmaske in Abhängigkeit von einer vom Benutzer konfigurierten maximalen Drosselzahl im Bereich von 0 bis 7 einzustellen;3B zeigt ein Beispiel eines Diagramms, das das Leaky-Bucket-Port-Drosselungsschema gemäß einem Aspekt der vorliegenden Ausführungsformen illustriert. - AUSFÜHRLICHE BESCHREIBUNG
- Die folgende Offenbarung enthält verschiedene Ausführungsformen oder Beispiele für die Implementierung verschiedener Merkmale des Gegenstands. Zur Vereinfachung der vorliegenden Offenbarung werden im Folgenden spezifische Beispiele für Komponenten und Anordnungen beschrieben. Dies sind natürlich nur Beispiele und sollen nicht einschränkend sein. Darüber hinaus können sich in der vorliegenden Offenbarung Bezugszeichen in den verschiedenen Beispielen wiederholen. Diese Wiederholung dient der Einfachheit und Klarheit und stellt an sich keine Beziehung zwischen den verschiedenen diskutierten Ausführungsformen und/oder Konfigurationen her.
- Bevor verschiedene Ausführungsformen detaillierter beschrieben werden, sollte verstanden werden, dass die Ausführungsformen nicht einschränkend sind, da Elemente in solchen Ausführungsformen variieren können. Es sollte ebenfalls verstanden werden, dass eine bestimmte hier beschriebene und/oder dargestellte Ausführungsform Elemente aufweist, die ohne weiteres von der bestimmten Ausführungsform getrennt und optional mit einer beliebigen von mehreren anderen Ausführungsformen kombiniert oder durch Elemente in einer beliebigen von mehreren anderen hier beschriebenen Ausführungsformen ersetzt werden können. Es sollte auch verstanden werden, dass die hier verwendete Terminologie dem Zweck dient, bestimmte Konzepte zu beschreiben, und die Terminologie ist nicht als einschränkend zu betrachten. Sofern nicht anders definiert, weisen alle hierin verwendeten technischen und wissenschaftlichen Begriffe die gleiche Bedeutung auf, wie sie in der Technik, zu der die Ausführungsformen gehören, allgemein verstanden wird.
- Ein neuer Ansatz betrachtet Systeme und Verfahren zur Unterstützung der Steuerung des Stromverbrauchs einer Speichereinheit, beispielsweise des On-Chip-Speichers (OCM) eines Chips, durch Drosselung von Portzugriffsanfragen an den Speicher über einen Speicher-Arbiter auf Grundlage eines oder mehrerer programmierbarer Parameter. Dabei ist der Speicher-Arbiter so konfiguriert, dass er die Anzahl der Ports, die für den gleichzeitigen Zugriff auf den Speicher verwendet werden, auf weniger als die verfügbaren Ports des Speichers beschränkt, wodurch eine adaptive Leistungssteuerung des Chips ermöglicht wird. In einigen Ausführungsformen sind zwei Port-Drosselungsschemata aktiviert - die strikte Port-Drosselung, die die Anzahl der Ports, die für den Speicherzugriff gewährt werden, so drosselt, dass sie nicht mehr als eine vom Benutzer konfigurierte maximale Drossel-Port-Anzahl beträgt, und die Leaky-Bucket-Port-Drosselung, die die Anzahl der Ports, die für den Speicherzugriff gewährt werden, so drosselt, dass sie innerhalb eines Bereichs liegt, der auf einer Anzahl von Guthaben-Token basiert, die in einem Guthaben-Register geführt werden.
- Der Port-Drosselungs-Ansatz ermöglicht eine adaptive Steuerung des Stromverbrauchs durch den OCM des Chips, so dass er innerhalb eines benutzerspezifischen Limits liegt, während er weiterhin einen ununterbrochenen Zugriff auf die Speicherbänke des OCM für verschiedene Speicheroperationen während einer bestimmten Zeitspanne ermöglicht, indem die Port-Drosselung unter bestimmten Umständen vorübergehend ausgesetzt wird. Darüber hinaus glättet die Port-Drosselung des OCM in der beschriebenen Weise den Stromverbrauch des Chips über die Zeit, um Spitzen und/oder Täler des Stromverbrauchs während desselben Zeitraums zu begrenzen und zu vermeiden. Der Port-Drosselungs-Ansatz ist somit in der Lage, den Zugriff auf die OCMs zu verwalten, um einen großen Teil des Stromverbrauchs des Chips zu kontrollieren und zu reduzieren, während die Auswirkungen einer solchen Port-Drosselung auf die Leistung (beispielsweise die OCM-Zugriffszeit) des Chips gemildert werden.
- Obwohl OCM in den folgenden Erörterungen als nicht einschränkendes Beispiel zur Veranschaulichung des Ansatzes verwendet wird, ist es zu verstehen, dass die Ausführungsformen gleichermaßen auf alle Arten von Speichern angewendet werden können. Darüber hinaus können die Ausführungsformen verallgemeinert und auf jeden Ressourcenzugriff (beispielsweise Speicher, Verarbeitungsleistung usw.) erweitert werden, um den Stromverbrauch zu steuern.
-
1 zeigt ein Beispiel eines Diagramms eines hardwarebasierten programmierbaren Systems/Architektur100 , das so konfiguriert ist, dass es einen energieeffizienten Speicherzugriff für maschinelles Lernen unterstützt. Obwohl die Diagramme die Komponenten als funktional getrennt darstellen, dient diese Darstellung lediglich der Veranschaulichung. Es wird deutlich, dass die in dieser Figur dargestellten Komponenten beliebig kombiniert oder in separate Software-, Firmware- und/oder Hardware-Komponenten aufgeteilt werden können. Des Weiteren wird deutlich, dass solche Komponenten, unabhängig davon, wie sie kombiniert oder aufgeteilt sind, auf demselben Host oder mehreren Hosts ausgeführt werden können, wobei die mehreren Hosts durch ein oder mehrere Netzwerke verbunden sein können. - Im Beispiel von
1 umfasst die Architektur100 einen OCM110 , eine erste Art von Verarbeitungseinheit (beispielsweise POD) 120, eine zweite Art von Verarbeitungseinheit (beispielsweise Processing Engine oder PE) 130 und einen Speicher-Arbiter140 . Jede dieser Komponenten in der Architektur100 ist ein dedizierter Hardwareblock/eine dedizierte Hardwarekomponente, der/die von einem Benutzer an einem Host102 über eine PCIe-Schnittstelle 106 mittels Software-Instruktionen für verschiedene maschinelle Lernoperationen programmiert werden kann. Wenn die Software-Instruktionen ausgeführt werden, wird jede der Hardware-Komponenten zu einer speziell dafür vorgesehenen Hardware-Komponente, um bestimmte maschinelle Lernfunktionen auszuführen. In einigen Ausführungsformen befindet sich die Architektur100 auf einem einzigen Chip, beispielsweise einem System-on-Chip (SOC). - In einigen Ausführungsformen ist der OCM
110 , der eine oder mehrere Speicherfelder/- bänke (nicht dargestellt) umfasst, so konfiguriert, dass er Daten in einer Stream-Art für den Zugriff durch das POD120 und den PE130 für verschiedene ML-Operationen akzeptiert und verwaltet. In einigen Ausführungsformen ist das POD120 so konfiguriert, dass es dichte oder regelmäßige Berechnungen an den Daten im OCM110 durchführt, beispielsweise Matrixoperationen wie Matrixmultiplikation und -manipulation, wobei die Eingangsdaten zu verschiedenen Registersätzen des POD120 gestreamt werden und die Ausgangsdaten über einen anderen Registersatz des POD120 zum OCM110 und/oder zum PE130 gestreamt werden. Der PE130 ist so konfiguriert, dass er spärliche/unregelmäßige Berechnungen und/oder komplexe Datenformtransformationen der Daten im OCM110 und/oder vom POD120 durchführt, beispielsweise Speichertransponierung, Quantisierung, Additionsoperationen, Operationen an unregelmäßigen Datenstrukturen (wie Bäume, Graphen und Prioritätswarteschlangen). - Im Beispiel von
1 weist das OCM110 eine Vielzahl von Ports (oder Speicheragenten) auf, wobei auf jeden Port einzeln durch das POD120 und/oder das PE130 zugegriffen werden kann, um über eine Portzugriffsanfrage auf Daten im OCM110 zuzugreifen (lesen und/oder schreiben). Als nicht einschränkende Beispiele, wie in1 gezeigt, umfassen solche Ports zum OCM110 unter anderem Lesen und Schreiben, die Daten von/zum OCM110 aus einem Speicher104 streamen; POD-Lesen 0 und POD-Lesen 1, die Daten in verschiedene Registersätze des POD120 lesen; POD-Schreiben, das Daten in das OCM110 aus einem Registersatz des POD120 schreibt; PE-Lesen und PE-Schreiben, die Daten zwischen dem OCM110 und dem PE130 lesen bzw. schreiben. Alle diese Ports können die Port-Zugriffsanfragen annehmen, um unabhängig und getrennt auf die Daten im OCM110 zur gleichen Zeit während desselben Taktzyklus zuzugreifen. - In einigen Ausführungsformen wird der Speicher-Arbiter
140 vom Benutzer über den Host konfiguriert/programmiert, wobei der Host102 es einem Benutzer ermöglicht, einen oder mehrere Parameter als Teil einer Speicherzugriffsrichtlinie (beispielsweise OCM) dynamisch zur Laufzeit zu setzen/programmieren. In einigen Ausführungsformen umfassen der eine oder die mehreren Parameter eine maximale Anzahl von Ports, die gleichzeitig Zugriff auf das OCM110 anfordern dürfen, beispielsweise throttle_port_num, um den Stromverbrauch des OCM110 innerhalb eines Budgets zu begrenzen. In einigen Ausführungsformen umfassen der eine oder die mehreren Parameter eine Identifikation (beispielsweise eine benutzerspezifische bevorzugte Port-Maske) eines oder mehrerer Ports, die für den OCM-Zugriff bevorzugt werden und die Port-Zugriffsanfragen an diese Ports nicht gedrosselt werden sollten. In einigen Ausführungsformen weisen der eine oder die mehreren Parameter einen benutzerdefinierten gewichteten Vektor auf, der Prioritäten/Gewichte für einen oder mehrere Ports für den OCM-Zugriff festlegt, und die Port-Zugriffsanfragen zu den Ports mit niedrigeren Prioritäten sollten zuerst gedrosselt werden, und die Port-Zugriffsanfragen zu den Ports mit höheren Prioritäten sollten zuletzt gedrosselt werden oder es sollte vermieden werden, dass sie gedrosselt werden, es sei denn, es ist absolut notwendig. In einigen Ausführungsformen umfassen der eine oder die mehreren Parameter eine benutzerdefinierte Obergrenze für den Gesamtstromverbrauch durch die Port-Zugriffsanforderungen an den OCM110 . In einigen Ausführungsformen ist der Speicher-Arbiter140 so konfiguriert, dass er den einen oder die mehreren Parameter, die vom Host in einem OCM-Register150 des OCM110 eingestellt wurden, beibehält, wobei der eine oder die mehreren Parameter, die im OCM-Register150 gespeichert sind, vom Host so eingestellt und aktualisiert werden können, dass sie zur Laufzeit höher oder niedriger sind, wenn der POD120 und/oder der PE130 über die Portzugriffsanfragen auf das OCM110 zugreifen. - In einigen Ausführungsformen ist der Speicher-Arbiter
140 so konfiguriert, dass er eine Vielzahl von Speicherzugriffsanfragen an den entsprechenden Ports des OCM110 in Form von Port-Zugriffsanfragen an das OCM110 akzeptiert. Wenn es keinen Konflikt gibt (beispielsweise keine Lese- und Schreibanforderungen an dieselbe Speicherbank zur gleichen Zeit), kann der Speicher-Arbiter140 alle diese Anforderungen während desselben Taktzyklus gewähren. Wenn diese Port-Anforderungen jedoch alle gleichzeitig in einem bestimmten Taktzyklus auf verschiedene Speicherbänke im OCM110 zugreifen, könnte die Gewährung all dieser Port-Anforderungen zu viel Strom kosten, und der durch diese Port-Anforderungen verursachte Stromverbrauch muss eingeschränkt werden. - In einigen Ausführungsformen ist der Speicher-Arbiter
140 so konfiguriert, dass er eine oder mehrere der Portzugriffsanfragen drosselt, indem er nur einer Teilmenge solcher Anfragen den Zugriff auf das OCM110 über die entsprechenden Ports zur gleichen Zeit gewährt, um den Stromverbrauch des OCM110 auf Grundlage des einen oder der mehreren im OCM-Register150 eingestellten Parameter zu begrenzen. In einigen Ausführungsformen ist der Speicher-Arbiter140 so konfiguriert, dass er verschiedene Port-Drosselungsschemata annimmt, einschließlich, aber nicht beschränkt auf, strikte Port-Drosselung und Leaky-Bucket-Port-Drosselung, basierend auf der maximalen Anzahl von Ports, die Zugriff auf das OCM110 anfordern dürfen, throttle_port_num, wie unten im Detail beschrieben. In einigen Ausführungsformen ist der Speicher-Arbiter140 so konfiguriert, dass er die benutzerspezifische bevorzugte Port-Maske und/oder den benutzerspezifischen gewichteten Vektor während der Port-Drosselung berücksichtigt, um eine Drosselung der Port-Zugriffsanfragen an bestimmte Ports für den Zugriff auf das OCM110 zu vermeiden. - In einigen Ausführungsformen ist der Speicher-Arbiter
140 so konfiguriert, dass er den einen oder die mehreren Ports, die auf das OCM110 zugreifen dürfen, über eine strenge Port-Drosselung drosselt, wobei der Speicher-Arbiter140 so konfiguriert ist, dass er nur eine Anzahl von Port-Zugriffsanfragen gewährt, die gleich der Drossel-Port-Anzahl ist, wenn die Anzahl der von allen Ports des OCM110 empfangenen Port-Zugriffsanfragen größer ist als die Drossel-Port-Anzahl, die im OCM-Register150 eingestellt ist. In einigen Ausführungsformen ist der Speicher-Arbiter140 so konfiguriert, dass er den Rest der Speicherzugriffsanfragen basierend auf einer Zufallsauswahl unterdrückt, indem er eine Portzugriffs-Gewährungsmaske berechnet, die alle Ports des OCM110 (die ein Bit pro Port darstellt) entsprechend abdeckt (beispielsweise bedeutet 1 Gewährung, 0 Unterdrückung).2A zeigt ein nicht einschränkendes Beispiel des Pseudocodes unter dem oben diskutierten strikten Port-Drosselungsschema und2B zeigt ein nicht einschränkendes Beispiel eines Diagramms, das das strikte Port-Drosselungsschema veranschaulicht. Wie in2A und2B gezeigt, berechnet der Speicher-Arbiter140 bei 200 eine Portzugriffs-Gewährungsmaske, die nur fünf der Portzugriffsanfragen gewährt, und wählt zufällig eine der sechs Portzugriffs-Anfragen aus, die er unter Verwendung einer zufälligen Portzugriffs-Gewährungsmaske rand_5_mask (204 ) unterdrückt, wobei ein zufälliger Port von sechs unterdrückt wird, wenn die throttle_port_num auf fünf gesetzt ist und sechs Speicherzugriffsanfragen eingehen (202 ). Wenn throttle_port_num auf vier gesetzt ist (und mehr als vier eingehende Portzugriffsanfragen vorliegen) (206 ), berechnet der Speicher-Arbiter140 bei 200 eine Portzugriffs-Gewährungsmaske, die vier der Portzugriffsanfragen gewährt, und wählt zufällig zwei der sechs zu unterdrückenden Portzugriffsanfragen aus, indem er eine zufällige Portzugriffs-Gewährungsmaske rand_4_mask (208 ) verwendet, wobei zwei zufällige Ports von sechs unterdrückt werden. Wenn fünf Portzugriffsanfragen eingehen (während die Throttle_port_num auf vier gesetzt ist), berechnet der Speicher-Arbiter140 dennoch eine Portzugriffs-Gewährungsmaske bei 200, die genau vier der Portzugriffsanfragen gewährt, und wählt zufällig eine der fünf zu unterdrückenden Portzugriffsanfragen aus. In einigen Ausführungsformen ist der Speicher-Arbiter140 so konfiguriert, dass er statt der zufälligen Portzugriffs-Gewährungsmaske die benutzerspezifische bevorzugte Port-Maske und/oder den benutzerspezifischen gewichteten Vektor während der Port-Drosselung verwendet, um zu vermeiden, dass die Portzugriffsanfragen an bestimmte Ports gedrosselt werden, um auf das OCM110 zuzugreifen. In einigen Ausführungsformen ist der Speicher-Arbiter140 so konfiguriert, dass er die Anzahl der zu drosselnden Port-Zugriffsanfragen auf einen Grenzwert, beispielsweise nicht mehr als zwei, begrenzt, und zwar aufgrund der zeitlichen Beschränkungen (beispielsweise werden alle Port-Zugriffsanfragen schließlich innerhalb eines bestimmten Zeitraums gewährt) und/oder der Komplexität der möglichen Permutationen, die unter den zu unterdrückenden Port-Zugriffsanfragen auszuwählen sind. Ein nicht einschränkendes Beispiel: Wenn die Throttle_port_num auf weniger als vier eingestellt ist (und es sechs eingehende Port-Zugriffsanfragen gibt) (210 ), ist der Speicher-Arbiter140 so konfiguriert, dass er keine Port-Drosselung durchführt, um sicherzustellen, dass alle Port-Zugriffsanfragen rechtzeitig gewährt werden (212 ). In einigen Ausführungsformen ist der Speicher-Arbiter140 so konfiguriert, dass er die Port-Drosselung wieder aufnimmt, wenn der Gesamtstromverbrauch durch die Speicherzugriffsanfragen die vom Benutzer festgelegte Obergrenze für den Gesamtstromverbrauch überschreitet. - In einigen Ausführungsformen ist der Speicher-Arbiter
140 so konfiguriert, dass er einen oder mehrere Ports, die auf das OCM110 zugreifen dürfen, über eine Leaky-Bucket-Port-Drosselung drosselt, wobei der Speicher-Arbiter140 die Anzahl der Ports, die für den Zugriff auf das OCM110 zugelassen sind, so drosselt, dass sie innerhalb eines bestimmten Bereichs liegt, beispielsweise von 1 bis 5.3A zeigt ein Beispiel des Pseudocodes, der verwendet wird, um die zufällige Portzugriffs-Gewährungsmaske in Abhängigkeit von der Throttle_port_num im Bereich von 0 bis 7 einzustellen, wobei die entsprechende zufällige Portzugriffs-Gewährungsmaske entsprechend 0 bis 6 Portzugriffsanforderungen gewähren würde.3B zeigt ein Beispiel für ein Diagramm, das die Leaky-Bucket-Port-Drosselung veranschaulicht. In einigen Ausführungsformen ist der Speicher-Arbiter140 so konfiguriert, dass er einen Credit-Zähler160 einrichtet, der beim Betrieb im Modus der Leaky-Bucket-Port-Drosselung einen Eimer mit Credit-Tokens aufrechterhält. In einigen Ausführungsformen kann der Credit-Zähler160 als Defizit-Zähler negativ werden. Der Speicher-Arbiter140 ist dann so konfiguriert, dass er eine zufällige Portzugriffs-Gewährungsmaske (302 ) basierend auf der vom Benutzer eingestellten throttle_port_num erstellt. In einigen Ausführungsformen ist der Speicher-Arbiter140 so konfiguriert, dass er anstelle der zufälligen Portzugriffs-Gewährungsmaske die benutzerspezifische bevorzugte Port-Maske und/oder den benutzerspezifischen gewichteten Vektor während der Port-Drosselung verwendet, um eine Drosselung der Portzugriffsanfragen an bestimmte Ports für den Zugriff auf das OCM110 zu vermeiden. - In einigen Ausführungsformen ist der Speicher-Arbiter
140 so konfiguriert, dass er, wenn die Speicherzugriffsanfragen von allen Ports des OCM110 bei jedem Taktzyklus eingehen, zunächst die Anzahl der Port-Zugriffsanfragen mit der angegebenen Throttle_port_num vergleicht. Wie in3B gezeigt, ist der Speicher-Arbiter140 so konfiguriert, dass er, wenn die Gesamtzahl der Portzugriffsanfragen größer ist als die Throttle_port_num (304), die zufällige Portzugriffs-Gewährungsmaske verwendet, um die an einigen der Ports empfangenen Anforderungen auszublenden. Da die Portzugriffs-Gewährungsmaske jedoch zufällig ohne Kenntnis eines Musters der Port-Zugriffs-Anforderungen erstellt wurde, können einige der Port-Zugriffs-Anforderungen übermäßig maskiert und übermäßig gedrosselt werden, was zu einer übermäßigen Drosselung der Port-Zugriffs-Anforderungen führt. Um diesen Effekt zu kompensieren, ist der Speicher-Arbiter140 so konfiguriert, dass er ein Leaky-Bucket-Credit-Schema anwendet, das den Credit-Zähler160 zunächst auf Null setzt und bei jedem Taktzyklus (306 ) zusätzliche Credit-Token in Höhe der Throttle_port_num zum Credit-Zähler160 hinzufügt. Wenn eine Anzahl von Portzugriffsanfragen gewährt wird, ist der Speicher-Arbiter140 so konfiguriert, dass er die Anzahl der gewährten Portzugriffsanfragen berechnet und von den Credit-Token im Credit-Zähler160 subtrahiert (308). Wenn die Ports zum OCM110 übermäßig belastet sind, werden die im Credit-Zähler160 angesammelten Credit-Token positiv. Wenn dies geschieht (der Credit-Zähler160 ist positiv), ist der Speicher-Arbiter140 so konfiguriert, dass er die Port-Drosselung für einen Taktzyklus, d. h. für den nächsten Taktzyklus, vorübergehend deaktiviert/aussetzt. Während dieses nächsten Taktzyklus ist der Speicher-Arbiter140 so konfiguriert, dass er alle Speicherzugriffsanfragen unabhängig von der Throttle_port_num gewährt, indem er alle Bits in der Portzugriffs-Gewährungsmaske auf 1s (310 ) setzt und die Credit-Token im Credit-Zähler160 entsprechend aktualisiert. Dies kann dazu führen, dass mehr Credit-Token verbraucht werden, als sie zugewiesen wurden, wodurch der Credit-Zähler160 negativ wird. In einigen Ausführungsformen ist der Speicher-Arbiter140 so konfiguriert, dass er die Port-Drosselung wieder aufnimmt/aktiviert, wenn der Gesamtstromverbrauch durch die Speicherzugriffsanfragen die vom Benutzer festgelegte Obergrenze für den Gesamtstromverbrauch überschreitet. Sobald die Anzahl der Credit-Token im Credit-Zähler160 negativ wird, ist der Speicher-Arbiter140 so konfiguriert, dass er die Port-Drosselung wieder aktiviert, indem er die Portzugriffs-Gewährungsmaske beim nächsten Zyklus wieder aktiviert. Obwohl das Schema der Leaky-Bucket-Port-Drosselung zu einem vorübergehend hohen Stromverbrauch führen kann, wird die durchschnittliche Anzahl der Port-Zugriffsanfragen, die pro Zyklus gewährt werden, im Laufe der Zeit der Drossel-Port-Anzahl entsprechen, was den Stromverbrauch des OCM110 im Durchschnitt auf den Grenzwert glättet. Beachten Sie, dass die Leaky-Bucket-Port-Drosselung nur von der Gesamtzahl der gewährten Port-Zugriffsanforderungen abhängt und daher keine zeitlichen Abhängigkeiten vom Takt aufweist und keine Logik erfordert, welche Port-Zugriffsanforderungen gewährt oder unterdrückt werden sollen. - Die vorstehende Beschreibung der verschiedenen Ausführungsformen des beanspruchten Gegenstands dient der Veranschaulichung und Beschreibung. Es ist nicht beabsichtigt, erschöpfend zu sein oder den beanspruchten Gegenstand auf die genauen offenbaren Formen zu beschränken. Viele Modifikationen und Variationen sind für den Fachmann auf dem Gebiet der Technik offensichtlich. Die Ausführungsformen wurden ausgewählt und beschrieben, um die Prinzipien der Erfindung und ihre praktische Anwendung bestmöglich zu beschreiben und dadurch den Fachmann in die Lage zu versetzen, den beanspruchten Gegenstand, die verschiedenen Ausführungsformen und die verschiedenen Modifikationen zu verstehen, die für die jeweils in Betracht gezogene Verwendung geeignet sind.
Claims (28)
- Hardwarebasiertes programmierbares System zur Unterstützung eines energieeffizienten Speicherzugriffs für Maschinenlernen (ML), umfassend: einem On-Chip-Speicher (OCM), umfassend: ein oder mehrere Speicherfelder, die so konfiguriert sind, dass sie Daten in einer Stream-Art für den Zugriff durch eine oder mehrere Verarbeitungseinheiten für verschiedene ML-Operationen annehmen und verwalten; eine Vielzahl von Ports, wobei jeder Port der Vielzahl von Ports individuell freigegeben ist, um durch die eine oder mehrere Verarbeitungseinheiten zugreifbar zu sein, um die Daten in dem OCM über eine Port-Zugriffsanforderung einer Vielzahl von Port-Zugriffsanforderungen zu lesen und/oder zu schreiben, wobei jeder Port der Vielzahl von Ports konfiguriert ist, um die Port-Zugriffsanforderung zum Zugriff auf die Daten in dem OCM zur gleichen Zeit während des gleichen Taktzyklus zu akzeptieren; einen Speicher-Arbiter, der konfiguriert ist zum: Akzeptieren der Vielzahl von Port-Zugriffsanforderungen an der entsprechenden Vielzahl von Ports des OCM; Drosseln von einer oder mehreren Port-Zugriffsanforderungen der Vielzahl von Port-Zugriffsanforderungen, indem nur einer Teilmenge solcher Anforderungen der Zugriff auf den OCM über die entsprechenden Ports zur gleichen Zeit basierend auf einem oder mehreren Parametern gewährt wird, um den Stromverbrauch des OCM zu begrenzen.
- Verarbeitungseinheit nach
Anspruch 1 , wobei: die eine oder mehreren Verarbeitungseinheiten eine erste Verarbeitungseinheit umfassen, die so konfiguriert ist, dass sie dichte oder regelmäßige Berechnungen an den Daten in dem OCM durchführt. - Verarbeitungseinheit nach
Anspruch 2 , wobei: die eine oder die mehreren Verarbeitungseinheiten eine zweite Verarbeitungseinheit umfassen, die so konfiguriert ist, dass sie spärliche/unregelmäßige Berechnungen und/oder komplexe Datenformtransformationen der Daten im OCM und/oder von der ersten Verarbeitungseinheit durchführt. - Verarbeitungseinheit nach
Anspruch 1 , wobei: der Speicher-Arbiter von einem Benutzer über einen Host konfiguriert wird, um den einen oder die mehreren Parameter als Teil einer Speicherzugriffsrichtlinie dynamisch zur Laufzeit zu setzen oder zu programmieren, wenn auf den OCM von der einen oder den mehreren Verarbeitungseinheiten über die Port-Zugriffsanfragen zugegriffen wird. - Verarbeitungseinheit nach
Anspruch 1 , wobei: der eine oder die mehreren Parameter eine maximale Anzahl von Ports umfassen, die gleichzeitig Zugriff auf den OCM anfordern dürfen, um den Stromverbrauch des OCM so zu begrenzen, dass er innerhalb eines Budgets liegt. - Verarbeitungseinheit nach
Anspruch 1 , wobei: der eine oder die mehreren Parameter eine benutzerspezifizierte bevorzugte Port-Maske eines oder mehrerer Ports umfassen, die für den OCM-Zugriff bevorzugt werden, wobei die Port-Zugriffsanforderungen an diese Ports nicht gedrosselt werden. - Verarbeitungseinheit nach
Anspruch 1 , wobei: der eine oder die mehreren Parameter einen benutzerspezifizierten gewichteten Vektor aufweisen, der Prioritäten/Gewichte auf einem oder mehreren Ports für den OCM-Zugriff festlegt, und die Port-Zugriffsanforderungen zu den Ports mit niedrigeren Prioritäten zuerst gedrosselt werden und die Port-Zugriffsanforderungen zu den Ports mit höheren Prioritäten zuletzt gedrosselt werden oder es vermieden wird, gedrosselt zu werden, es sei denn, es ist absolut notwendig. - Verarbeitungseinheit nach
Anspruch 7 , wobei: der Speicher-Arbiter so konfiguriert ist, dass er eine benutzerspezifische bevorzugte Port-Maske und/oder den benutzerspezifischen gewichteten Vektor verwendet, um eine Drosselung der Portzugriffsanfragen an bestimmte Ports zu vermeiden, um auf den OCM zuzugreifen. - Verarbeitungseinheit nach
Anspruch 1 , wobei: der eine oder die mehreren Parameter eine benutzerspezifizierte Obergrenze für den Gesamtstromverbrauch durch die Port-Zugriffsanforderungen an den OCM umfassen. - Verarbeitungseinheit nach
Anspruch 1 , wobei: der Speicher-Arbiter so konfiguriert ist, dass er die eine oder mehreren Portzugriffsanfragen über eine strenge Port-Drosselung drosselt, wobei, wenn die Anzahl der von allen Ports des OCM empfangenen Portzugriffsanfragen größer ist als die konfigurierte maximale Anzahl von Ports, die gleichzeitig Zugriff auf das OCM anfordern dürfen, nur eine Anzahl von Portzugriffsanfragen gewährt wird, die gleich der konfigurierten maximalen Anzahl von Ports ist. - Verarbeitungseinheit nach
Anspruch 10 , wobei: der Speicher-Arbiter so konfiguriert ist, dass er den Rest der Portzugriffsanfragen basierend auf einer Zufallsauswahl unterdrückt, indem er eine Portzugriffs-Gewährungsmaske setzt, die alle Ports des OCM abdeckt und entsprechend ein Bit pro Port darstellt. - Verarbeitungseinheit nach
Anspruch 10 , wobei: der Speicher-Arbiter so konfiguriert ist, dass er die Anzahl der zu unterdrückenden Portzugriffsanfragen aufgrund der Zeitbeschränkungen und/oder der Komplexität der möglichen Permutationen zur Auswahl unter den zu unterdrückenden Portzugriffsanfragen begrenzt. - Verarbeitungseinheit nach
Anspruch 1 , wobei: der Speicher-Arbiter so konfiguriert ist, dass er die eine oder die mehreren Port-Zugriffsanfragen über Leaky-Bucket-Port-Drosselung drosselt, wobei der Speicher-Arbiter so konfiguriert ist, dass er die Anzahl der Port-Zugriffsanfragen, die auf den OCM zugreifen dürfen, so drosselt, dass sie innerhalb eines bestimmten Bereichs liegt, basierend auf einem Credit-Zähler, der einen Bucket von Credit-Token verwaltet. - Verarbeitungseinheit nach
Anspruch 13 , wobei: der Speicher-Arbiter so konfiguriert ist, dass er in dem Credit-Zähler zu Beginn null Credit-Token setzt und dem Credit-Zähler bei jedem Taktzyklus zusätzliche Credit-Token hinzufügt, die der konfigurierten maximalen Anzahl von Ports entsprechen, die gleichzeitig Zugriff auf den OCM anfordern dürfen. - Verarbeitungseinheit nach
Anspruch 14 , wobei: der Speicher-Arbiter konfiguriert ist zum Subtrahieren der Anzahl der gewährten Port-Zugriffsanforderungen von den Credit-Token im Credit-Zähler, wenn eine Anzahl von Port-Zugriffsanforderungen gewährt wird; vorübergehenden Deaktivieren der Port-Drosselung für einen Taktzyklus beim nächsten Taktzyklus, wenn die im Credit-Zähler akkumulierten Credit-Token positiv werden, wobei alle Port-Zugriffsanforderungen unabhängig von der konfigurierten maximalen Anzahl von Ports, die gleichzeitig Zugriff auf den OCM anfordern dürfen, gewährt werden; Aktualisieren des Credit-Tokens im Credit-Zähler entsprechend. - Verarbeitungseinheit nach
Anspruch 15 , wobei: der Speicher-Arbiter so konfiguriert ist, dass er die Port-Drosselung durch erneutes Aktivieren einer Portzugriffs-Gewährungsmaske beim nächsten Zyklus wieder aktiviert, sobald die Anzahl der Credit-Token im Credit-Zähler negativ wird. - Verarbeitungseinheit nach
Anspruch 15 , wobei der Speicher-Arbiter so konfiguriert ist, dass er die Port-Drosselung wieder aktiviert, wenn der Gesamtstromverbrauch durch die Speicherzugriffsanfragen eine benutzerspezifizierte Obergrenze für den Gesamtstromverbrauch überschreitet. - Verfahren zur Unterstützung eines energieeffizienten Speicherzugriffs für Maschinenlernen (ML), umfassend: Akzeptieren und Halten von Daten in einem On-Chip-Speicher (OCM) für den Zugriff durch eine oder mehrere Verarbeitungseinheiten für verschiedene ML-Operationen; Freigeben einer Vielzahl von Ports des OCM, wobei jeder Port der Vielzahl von Ports individuell freigegeben wird, um durch die eine oder mehrere Verarbeitungseinheiten zugreifbar zu sein, um die Daten in dem OCM über eine Port-Zugriffsanforderung einer Vielzahl von Port-Zugriffsanforderungen zu lesen und/oder zu schreiben, wobei jeder Port der Vielzahl von Ports konfiguriert ist, um die Port-Zugriffsanforderungen zum Zugriff auf die Daten in dem OCM zur gleichen Zeit während des gleichen Taktzyklus zu akzeptieren; Akzeptieren der Vielzahl von Port-Zugriffsanforderungen an der entsprechenden Vielzahl von Ports des OCM; Drosseln einer oder mehrerer Port-Zugriffsanforderungen der Vielzahl von Port-Zugriffsanforderungen, indem nur einer Teilmenge solcher Anforderungen der Zugriff auf das OCM über die entsprechenden Ports zur gleichen Zeit gewährt wird, basierend auf einem oder mehreren Parametern, um den Stromverbrauch des OCM zu begrenzen.
- Verfahren nach
Anspruch 18 , des Weiteren umfassend: Ermöglichen, dass ein Benutzer einen Speicher-Arbiter über einen Host konfiguriert und/oder programmiert, wobei der Host den einen oder die mehreren Parameter als Teil einer Speicherzugriffsrichtlinie dynamisch zur Laufzeit einstellt, wenn auf den OCM durch die eine oder die mehreren Verarbeitungseinheiten über die Port-Zugriffsanfragen zugegriffen wird. - Verfahren nach
Anspruch 18 , des Weiteren umfassend: Verwenden einer benutzerspezifizierten bevorzugten Port-Maske und/oder eines benutzerspezifizierten gewichteten Vektors, um ein Drosseln der Port-Zugriffsanforderungen auf bestimmte Ports zu vermeiden, um auf den OCM zuzugreifen. - Verfahren nach
Anspruch 18 , des Weiteren umfassend: Drosseln der einen oder mehreren Port-Zugriffsanforderungen über strikte Port-Drosselung, wobei, wenn die Anzahl der von allen Ports des OCM empfangenen Port-Zugriffsanforderungen größer ist als die konfigurierte maximale Anzahl von Ports, die gleichzeitig Zugriff auf das OCM anfordern dürfen, wobei nur eine Anzahl von Port-Zugriffsanforderungen gewährt wird, die gleich der konfigurierten maximalen Anzahl von Ports ist. - Verfahren nach
Anspruch 21 , des Weiteren umfassend: Unterdrücken der restlichen Portzugriffs-Anforderungen auf Basis einer Zufallsauswahl durch Setzen einer Portzugriffs-Gewährungsmaske, die alle Ports des OCM abdeckt und entsprechend ein Bit pro Port darstellt. - Verfahren nach
Anspruch 21 , des Weiteren umfassend: Begrenzen der Anzahl der zu unterdrückenden Port-Zugriffsanforderungen aufgrund der Zeitbeschränkungen und/oder der Komplexität der möglichen Permutationen zur Auswahl unter den zu unterdrückenden Port-Zugriffsanforderungen. - Verfahren nach
Anspruch 18 , des Weiteren umfassend: Drosseln der einen oder mehreren Port-Zugriffsanfragen über Leaky-Bucket-Port-Drosselung, wobei der Speicher-Arbiter so konfiguriert ist, dass er die Anzahl der Port-Zugriffsanfragen, die auf das OCM zugreifen dürfen, so drosselt, dass sie innerhalb eines bestimmten Bereichs liegt, basierend auf einem Credit-Zähler, der einen Bucket von Credit-Token verwaltet. - Verfahren nach
Anspruch 24 , des Weiteren umfassend: Setzen von Null Credit-Token in dem Credit-Zähler, um mit diesem zu beginnen, und Hinzufügen von zusätzlichen Credit-Token, die der konfigurierten maximalen Anzahl von Ports entsprechen, die gleichzeitig Zugriff auf den OCM anfordern dürfen, zu dem Credit-Zähler bei jedem Taktzyklus. - Verfahren nach
Anspruch 25 , des Weiteren umfassend: Subtrahieren der Anzahl der gewährten Port-Zugriffsanforderungen von den Credit-Token im Credit-Zähler, wenn eine Anzahl von Port-Zugriffsanforderungen gewährt wird; vorübergehendes Deaktivieren der Port-Drosselung für einen Taktzyklus beim nächsten Taktzyklus, wenn die im Credit-Zähler angesammelten Credit-Token positiv werden, wobei alle Port-Zugriffsanforderungen gewährt werden, unabhängig von der konfigurierten maximalen Anzahl von Ports, die gleichzeitig Zugriff auf den OCM anfordern dürfen; entsprechendes Aktualisieren der Credit-Token im Credit-Zähler. - Verfahren nach
Anspruch 26 , das des Weiteren umfasst: erneutes Aktivieren der Port-Drosselung durch erneutes Aktivieren einer Portzugriffs-Gewährungsmaske im nächsten Zyklus, sobald die Anzahl der Credit-Token im Credit-Zähler negativ wird. - Verfahren nach
Anspruch 26 , das weiterhin umfasst: erneutes Aktivieren der Port-Drosselung, wenn der Gesamtstromverbrauch durch die Port-Zugriffsanforderungen eine benutzerspezifizierte Obergrenze für den Gesamtstromverbrauch überschreitet.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/864,006 US11287869B2 (en) | 2020-04-30 | 2020-04-30 | System and methods for on-chip memory (OCM) port throttling for machine learning operations |
US16/864,006 | 2020-04-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102021111195A1 true DE102021111195A1 (de) | 2021-11-04 |
Family
ID=78267696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102021111195.1A Pending DE102021111195A1 (de) | 2020-04-30 | 2021-04-30 | System und Verfahren zur On-Chip-Speicher- (OCM-) Port-Drosselung für Maschinenlern-Operationen |
Country Status (2)
Country | Link |
---|---|
US (2) | US11287869B2 (de) |
DE (1) | DE102021111195A1 (de) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11520731B1 (en) * | 2020-11-06 | 2022-12-06 | Amazon Technologies, Inc. | Arbitrating throttling recommendations for a systolic array |
US11442890B1 (en) | 2020-11-06 | 2022-09-13 | Amazon Technologies, Inc. | On-circuit data activity monitoring for a systolic array |
US11816360B2 (en) * | 2022-03-29 | 2023-11-14 | Silicon Motion, Inc. | Method and apparatus for performing data access performance shaping of memory device |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6199127B1 (en) * | 1997-12-24 | 2001-03-06 | Intel Corporation | Method and apparatus for throttling high priority memory accesses |
US6742064B2 (en) * | 2000-05-15 | 2004-05-25 | Goodrich Corp. | Programmable throttle circuit for each control device of a processing system |
US7054968B2 (en) * | 2003-09-16 | 2006-05-30 | Denali Software, Inc. | Method and apparatus for multi-port memory controller |
US20060075184A1 (en) * | 2004-10-01 | 2006-04-06 | Jen-Ying Chen | Synchronous\asynchronous memory device with single port memory unit |
US9141568B2 (en) * | 2011-08-25 | 2015-09-22 | Apple Inc. | Proportional memory operation throttling |
US9146747B2 (en) * | 2013-08-08 | 2015-09-29 | Linear Algebra Technologies Limited | Apparatus, systems, and methods for providing configurable computational imaging pipeline |
US10055807B2 (en) * | 2016-03-02 | 2018-08-21 | Samsung Electronics Co., Ltd. | Hardware architecture for acceleration of computer vision and imaging processing |
US9792397B1 (en) * | 2017-01-08 | 2017-10-17 | Alphaics Corporation | System and method for designing system on chip (SoC) circuits through artificial intelligence and reinforcement learning |
US10409319B2 (en) * | 2017-04-17 | 2019-09-10 | Intel Corporation | System, apparatus and method for providing a local clock signal for a memory array |
US11157287B2 (en) * | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system with variable latency memory access |
US11132319B2 (en) * | 2018-01-12 | 2021-09-28 | Intel Corporation | Timer control for peripheral component interconnect express components implemented with thunderbolt controllers |
US10970080B2 (en) * | 2018-02-08 | 2021-04-06 | Marvell Asia Pte, Ltd. | Systems and methods for programmable hardware architecture for machine learning |
US11687762B2 (en) * | 2018-02-27 | 2023-06-27 | Stmicroelectronics S.R.L. | Acceleration unit for a deep learning engine |
US11316864B2 (en) * | 2019-03-06 | 2022-04-26 | Jpmorgan Chase Bank, N.A. | Method and apparatus for ephemeral roles implementing module |
US10673439B1 (en) * | 2019-03-27 | 2020-06-02 | Xilinx, Inc. | Adaptive integrated programmable device platform |
US11037050B2 (en) * | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US11537436B2 (en) * | 2019-10-02 | 2022-12-27 | Qualcomm Incorporated | Method of configuring a memory block allocation of a machine learning network |
US11212229B2 (en) * | 2019-10-11 | 2021-12-28 | Juniper Networks, Inc. | Employing machine learning to predict and dynamically tune static configuration parameters |
-
2020
- 2020-04-30 US US16/864,006 patent/US11287869B2/en active Active
-
2021
- 2021-04-30 DE DE102021111195.1A patent/DE102021111195A1/de active Pending
-
2022
- 2022-02-11 US US17/669,907 patent/US11687144B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20220164018A1 (en) | 2022-05-26 |
US11687144B2 (en) | 2023-06-27 |
US20210341988A1 (en) | 2021-11-04 |
US11287869B2 (en) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102021111195A1 (de) | System und Verfahren zur On-Chip-Speicher- (OCM-) Port-Drosselung für Maschinenlern-Operationen | |
DE112004001320B3 (de) | Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren | |
DE112012002664B4 (de) | Erhöhen der Energieeffizienz des Turbo-Modus-Betriebs in einem Prozessor | |
DE102012219907B4 (de) | Erhöhen der Speicherkapazität in Systemen mit eingeschränkter elektrischer Leistungsaufnahme | |
DE60118622T2 (de) | Benutzer-konfigurierbares on-chip speichersystem | |
DE102008016181A1 (de) | Prioritätsbasiertes Drosseln für Leistungsaufnahme-Verarbeitungsleistung-Dienstgüte | |
DE102018115131A1 (de) | Reaktives leistungsmanagement für nichtflüchtige speicher-controller | |
DE102005063122A1 (de) | System und Verfahren zum Power Management von mehreren Informationsverarbeitungssystemen | |
DE3810231A1 (de) | Digitalrechner mit programmierbarer dma-steuerung | |
DE102013104328A1 (de) | Aufgabenzuteilung in großen und kleinen Kernen | |
DE112020004661T5 (de) | Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex | |
DE102018119881B4 (de) | Verwaltung einer DRAM-Bankaktivierung | |
DE102013014172A1 (de) | Schutz globaler register in einem multithreaded-prozessor | |
DE102020112531A1 (de) | Operationelle metrische Berechnung für Arbeitsbelastungstyp | |
DE112011103194T5 (de) | Koordinieren von Gerät- und Anwendungsunterbrechungsereignissen zum Plattformenergiesparen | |
DE102010044529A1 (de) | Autonome Subsystem-Architektur | |
DE102017128711A1 (de) | Mehrkernprozessor und Verfahren zur dynamischen Einstellung einer Versorgungsspannung und einer Taktfrequenz | |
DE102011086097A1 (de) | Mehrkanal-Speicher mit eingebetteter Kanalauswahl | |
DE112018005507T5 (de) | Mehrkriterien-energiemanagementschema für gepoolte beschleunigerarchitekturen | |
DE112012004456T5 (de) | Verfahren zum Planen von Arbeitsspeicher-Auffrischungsoperationen unter Einbeziehung von Engergiezuständen | |
DE112017006367T5 (de) | Aufgabenmanagement mit dynamischer Laufzeit | |
DE102020132767A1 (de) | Verwaltung der Dienstgüte (QoS) eines Speichersystems | |
DE112012005572T5 (de) | Ausgleichen einer Bandbreite für mehrere Anforderer, die ein gemeinsam genutztes Speichersystem verwenden | |
DE112016006015T5 (de) | Maximieren der Netzwerk-Fabric-Leistung durch feingranulares Router-Link-Strommanagement | |
DE102020214951A1 (de) | Verfahren zum dynamischen Zuweisen von Speicherbandbreite |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed |