-
GEGENSTAND DER ERFINDUNG
-
Die vorliegende Offenbarung gehört zu dem Feld von Verarbeitungslogiken, Mikroprozessoren und zugehörigen Befehlssatzarchitekturen, die wenn sie von einem Prozessor oder einer anderen Verarbeitungslogik ausgeführt werden, logische, mathematische oder andere funktionelle Operationen ausführen.
-
BESCHREIBUNG DES STANDES DER TECHNIK
-
Mehrprozessorsysteme werden immer üblicher. Anwendungen von Mehrprozessorsystemen umfassen eine dynamische Domänenteilung bis hin zu Desktop-Computern. Um die Vorteile von Mehrprozessorsystemen zu nutzen, kann der auszuführende Code zur Ausführung durch verschiedene Verarbeitungseinheiten in mehrere Threads geteilt werden. Jeder Thread kann parallel zu einem anderen Thread ausgeführt werden.
-
Das Wählen von verschlüsselten Routinen kann das Wählen von Kompromissen zwischen Sicherheit und Ressourcen sein, die für das Umsetzen der Routine erforderlich sind. Obwohl einige verschlüsselte Routinen nicht so sicher sind wie andere, können die für ihre Umsetzung erforderlichen Ressourcen klein genug sein, um ihre Verwendung in einer Vielfalt von Anwendungen zu ermöglichen, bei denen Computer-Ressourcen wie zum Beispiel Verarbeitungsleistung und Arbeitsspeicher in einem geringeren Maß zur Verfügung stehen wie zum Beispiel in einem Desktop-Computer oder einer größeren Computeranordnung. Die Kosten für ein Umsetzen von Routinen wie zum Beispiel verschlüsselter Routinen können in einer Gateanzahl, einer Anzahl von Gateäquivalenzen, einem Durchsatz, einem Energieverbrauch oder als Herstellungskosten gemessen werden. Zahlreiche verschlüsselte Routinen für eine Verwendung in Computeranwendungen umfassen diejenigen, die bekannt sind als AES, Hight, Iceberg, Katan, Klein, Led, mCrypton, Piccolo, Present, Prince, Twine und EPCBC, obwohl diese Routinen weder unbedingt miteinander kompatibel sind, noch eine unbedingt durch eine andere ersetzt werden kann.
-
Ein faltendes neuronales Netzwerk (Convolutional Neural Network, CNN) ist ein Berechnungsmodell, das in letzter Zeit Bedeutung gewinnt aufgrund seiner Leistungsfähigkeit bei dem Lösen von Problemen an der Mensch-Computer-Schnittstelle wie zum Beispiel dem Verständnis von Bildern. Der Kern des Modells ist ein Mehrstufenalgorithmus, der als Eingang eine große Menge von Eingaben (z. B. Bildpixel) aufnimmt und einen Satz von Transformationen gemäß vordefinierten Funktionen auf die Eingaben anwendet. Die transformierten Daten können in ein neuronales Netzwerk eingespeist werden, um Muster zu erkennen.
-
BESCHREIBUNG DER FIGUREN
-
In den Figuren der begleitenden Zeichnungen werden Ausführungsformen als Beispiele aber nicht als Einschränkungen dargestellt:
-
1A ist ein Blockschaltbild eines beispielhaften Computersystems gemäß einigen Ausführungsformen der vorliegenden Offenbarung, wobei das Computersystem mit einem Prozessor gebildet ist, der Ausführungseinheiten umfassen kann, um einen Befehl auszuführen;
-
1B stellt ein Datenverarbeitungssystem gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar;
-
1C stellt weitere Ausführungsformen eines Datenverarbeitungssystems zum Durchführen von Vergleichsoperationen an Zeichenfolgen dar;
-
2 ist ein Blockschaltbild einer Mikroarchitektur für einen Prozessor gemäß einigen Ausführungsformen der vorliegenden Offenbarung, wobei der Prozessor Logikschaltkreise umfassen kann, um Befehle auszuführen;
-
3A ist ein Blockschaltbild eines Prozessors gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
-
3B ist ein Blockschaltbild einer beispielhaften Umsetzung eines Kerns gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
-
4 ist ein Blockschaltbild eines Systems gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
-
5 ist ein Blockschaltbild eines zweiten Systems gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
-
6 ist ein Blockschaltbild eines dritten Systems gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
-
7 ist ein Blockschaltbild eines Ein-Chip-Systems gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
-
8 ist ein Blockschaltbild einer elektronischen Einheit für ein Verwenden eines Prozessors gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
-
9 stellt eine beispielhafte Ausführungsform eines neuronalen Netzwerksystems gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar.
-
10 stellt eine detailliertere Ausführungsform für das Umsetzen eines neuronalen Netzwerksystems mithilfe einer Verarbeitungseinheit gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar.
-
11 ist eine detailliertere Darstellung einer Verarbeitungseinheit, die gemäß einigen Ausführungsformen der vorliegenden Offenbarung Berechnungen für verschiedene Schichten des neuronalen Netzwerksystems ausführt.
-
12 stellt eine beispielhafte Ausführungsform eines Berechnungsschaltkreises gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar.
-
13A, 13B und 13C sind detailliertere Darstellungen von verschiedenen Komponenten eines Berechnungsschaltkreises.
-
14 ist ein Ablaufplan einer beispielhaften Ausführungsform eines Verfahrens zur Gewichtungsverschiebung gemäß einigen Ausführungsformen der vorliegenden Offenbarung.
-
DETAILLIERTE BESCHREIBUNG
-
Die nachfolgende Beschreibung beschreibt einen Mechanismus für eine Gewichtungsverschiebung für neu konfigurierbare Verarbeitungseinheiten in oder in Zusammenhang mit einem Prozessor, einem virtuellen Prozessor, einer Baugruppe, einem Computersystem oder einer anderen Verarbeitungsvorrichtung. Bei einer Ausführungsform kann dieser Mechanismus für eine Gewichtungsverschiebung in faltenden neuronalen Netzwerken (Convolution Neural Networks, CNN) verwendet werden. Diese CNNs können bei einer weiteren Ausführungsform CNNs mit geringer Genauigkeit umfassen. In der nachfolgenden Beschreibung werden zahlreiche spezifische Einzelheiten wie zum Beispiel eine Verarbeitungslogik, Prozessorarten, Mikroarchitekturbedingungen, Ereignisse, Aktivierungsmechanismen und Ähnliche erläutert, um ein eingehenderes Verständnis der Ausführungsformen der vorliegenden Offenbarung bereitzustellen. Für den Fachmann ist es jedoch selbstverständlich, dass die Ausführungsformen der vorliegenden Erfindung ohne diese spezifischen Einzelheiten in die Praxis umgesetzt werden können. Außerdem wurden bekannte Strukturen, Schaltkreise und ähnliche Elemente nicht im Einzelnen gezeigt, um das Verständnis der Ausführungsform der vorliegenden Offenbarung nicht zu erschweren.
-
Obwohl die nachfolgenden Ausführungsformen in Bezug auf einen Prozessor beschrieben werden, können weitere Ausführungsformen auf andere Arten von integrierten Schaltkreisen und Logikeinheiten anwendbar sein. Ähnliche Techniken und Lehren von Ausführungsformen der vorliegenden Offenbarung können auf andere Arten von Schaltkreisen oder Halbleitereinheiten angewandt werden, die von einem größeren Pipelinedurchsatz und einer verbesserten Leistungsfähigkeit profitieren können. Die Lehren der Ausführungsformen der vorliegenden Offenbarung sind auf jeden Prozessor und jede Maschine anwendbar, die Datenmanipulationen ausführt. Die Ausführungsformen sind jedoch nicht beschränkt auf Prozessoren oder Maschinen, die Datenoperationen von 512 Bit, 256 Bit, 128 Bit und 32 Bit, 16 Bit oder 8 Bit ausführen und kann auf jeden Prozessor und jede Maschine angewandt werden, in der eine Manipulation oder eine Verwaltung von Daten ausgeführt werden kann. Außerdem stellt die nachfolgende Beschreibung Beispiele bereit und die begleitenden Zeichnungen zeigen verschiedene Beispiele jeweils zu Zwecken der Veranschaulichung. Diese Beispiele sind jedoch nicht in einem einschränkenden Sinne zu verstehen, da sie nur dazu dienen, Beispiele von Ausführungsformen der vorliegenden Offenbarung bereitzustellen, aber keinesfalls eine erschöpfende Liste aller möglichen Umsetzungen von Ausführungsformen der vorliegenden Offenbarung bereitstellen.
-
Obwohl die nachfolgenden Beispiele eine Befehlsbehandlung und -verteilung im Zusammenhang mit Ausführungseinheiten und Logikschaltkreisen beschreiben, können weitere Ausführungsformen der vorliegenden Offenbarung durch Daten und Befehle erreicht werden, die auf einem maschinenlesbaren, konkreten Medium gespeichert sind und die, wenn sie von einer Maschine ausgeführt werden, die Maschine veranlassen, Funktionen auszuführen, die mit mindestens einer Ausführungsform der Offenbarung übereinstimmen. Bei einer Ausführungsform sind Funktionen, die Ausführungsformen der vorliegenden Offenbarung zugeordnet sind, in maschinenausführbaren Befehlen verkörpert. Die Befehle können verwendet werden, um einen Universal- oder Spezialprozessor, der mit den Befehlen programmiert sein kann, zu veranlassen, die Schritte der vorliegenden Offenbarung auszuführen. Ausführungsformen der vorliegenden Offenbarung können als ein Computerprogrammprodukt oder eine Software bereitgestellt werden, die ein maschinen- oder computerlesbares Medium umfassen, auf dem Befehle gespeichert sind, die verwendet werden können, einen Computer (oder ein anderes elektronisches Gerät) so zu programmieren, dass eine oder mehrere Operationen gemäß einigen Ausführungsformen der vorliegenden Offenbarung ausgeführt werden. Außerdem könnten Schritte der Ausführungsformen der vorliegenden Offenbarung durch spezifische Hardwarekomponenten, die eine Logik mit festen Funktionen zum Ausführen der Schritte enthalten, oder durch eine beliebige Kombination von programmierten Computerkomponenten und Hardwarekomponenten mit festen Funktionen ausgeführt werden.
-
Befehle die in einer Programmlogik verwendet werden, um Ausführungsformen der vorliegenden Offenbarung auszuführen, können in einem Speicher in dem System wie zum Beispiel einem DRAM, einem Cachespeicher, einem Flashspeicher oder einem anderen Speicher gespeichert werden. Außerdem können die Befehle über ein Netzwerk oder mithilfe anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern und Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form umfassen, ohne auf eine der folgenden beschränkt zu sein, flexible Speicherplatten, optische Speicherplatten, CD-ROMs, magnetooptische Speicherplatten, einen schreibgeschützten Speicher (Read-Only Memory, ROM), einen Direktzugriffsspeicher (Random Access Memory, RAM), einen löschbaren programmierbaren schreibgeschützten Speicher (Erasable Programmable Read-Only Memory, EPROM), einen elektrisch löschbaren programmierbaren schreibgeschützten Speicher (Electrically Erasable Programmable Read-Only Memory, EEPROM), magnetische oder optische Karten, einen Flashspeicher oder einen konkreten maschinenlesbaren Datenspeicher, der bei der Übertragung von Informationen über das Internet mithilfe elektrischer, optischer, akustischer oder in anderer Form verbreiteter Signale (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird. Folglich kann das computerlesbare Medium eine beliebige Art eines konkreten maschinenlesbaren Mediums umfassen, das geeignet ist, elektronische Befehle oder Informationen in einer Form zu speichern oder zu übertragen, die durch eine Maschine (z. B. einen Computer) lesbar ist.
-
Eine Auslegung kann durch verschiedene Stufen gehen, von der Schöpfung über die Simulation bis zur Herstellung. Daten die eine Auslegung darstellen, können die Auslegung in einer Vielzahl von Formen darstellen. Wie es bei Simulationen nützlich sein kann, kann als Erstes die Hardware mithilfe einer Hardwarebeschreibungssprache oder einer anderen funktionellen Beschreibungssprache dargestellt werden. Zusätzlich kann auf einigen Stufen des Auslegungsprozesses ein Modell auf Schaltkreisebene mit Logik- und/oder Transistor-Gates angefertigt werden. Außerdem können die Auslegungen auf einer bestimmten Stufe eine Datenebene erreichen, die das physische Anbringen verschiedener Geräte in dem Hardwaremodell darstellt. In Fällen, in denen einige Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardwaremodell darstellen, Daten sein, die das Vorhandensein oder die Abwesenheit verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken festlegen, die verwendet werden um den integrierten Schaltkreis anzufertigen. Bei jeder Darstellung der Auslegung können die Daten in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Ein Arbeitsspeicher oder ein magnetischer oder optischer Datenspeicher wie zum Beispiel eine Diskette können das maschinenlesbare Medium bilden, um die Informationen zu speichern, die über eine optische oder elektrische Welle übertragen werden, die moduliert oder anderweitig erzeugt wird, um diese Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder das Modell anzeigt oder trägt, in einer Weise übertragen wird, dass ein Kopieren, Puffern oder eine erneute Übertragung des elektrischen Signals ausgeführt wird, kann eine neue Kopie erstellt werden. Somit kann ein Kommunikationsbetreiber oder ein Netzwerkbetreiber einen Artikel wie zum Beispiel Informationen, die in einer Trägerwelle codiert sind und Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpern, zumindest vorübergehend auf einem konkreten maschinenlesbaren Medium speichern.
-
Bei modernen Prozessoren kann eine Anzahl von verschiedenen Ausführungseinheiten verwendet werden, um eine Vielfalt von Codes und Befehlen zu verarbeiten und auszuführen. Einige Befehle können schneller abgeschlossen werden, während andere eine Anzahl von Taktzyklen benötigen, um abgeschlossen zu werden. Je schneller der Durchsatz von Befehlen ist, desto besser ist die Gesamtleistungsfähigkeit des Prozessors. Somit wäre es vorteilhaft, dass möglichst viele Befehle so schnell wie möglich ausgeführt werden. Es können jedoch Befehle vorhanden sein, die eine größere Komplexität aufweisen und die hinsichtlich der Ausführungszeit und der Prozessorressourcen eine größere Anforderung besitzen, wie zum Beispiel Gleitkommazahlenbefehle, Lade-/Speicheroperationen, Datenbewegungen usw.
-
Da für Internet-Text- und Multimedia-Anwendungen komplexere Computersysteme verwendet werden, wurde im Laufe der Zeit eine zusätzliche Prozessorunterstützung eingeführt. Bei einer Ausführungsform kann ein Befehlssatz einer oder mehreren Computerarchitekturen einschließlich Datentypen, Befehlen, Registerarchitektur, Adressiermodi, Speicherarchitektur, Unterbrechungs- und Ausnahmebehandlung, externer Eingänge und Ausgänge (Input/Output, I/O) zugeordnet werden.
-
Bei einer Ausführungsform kann die Befehlssatzarchitektur (Instruction Set Architecture, ISA) durch eine oder mehrere Mikroarchitekturen umgesetzt werden, die Prozessorlogiken und Schaltkreise umfassen können, um einen oder mehrere Befehlssätze umzusetzen. Dementsprechend können Prozessoren mit unterschiedlichen Mikroarchitekturen mindestens einen Teil eines gemeinsamen Befehlssatzes gemeinsam nutzen. Zum Beispiel setzen Intel® Pentium 4 Prozessoren, Intel® CoreTM Prozessoren und Prozessoren von Advanced Micro Devices, Inc. aus Sunnyvale CA nahezu identische Versionen des x86-Befehlssatzes (mit einigen bei neueren Versionen hinzugefügten Erweiterungen) um, obwohl sie unterschiedliche interne Gestaltungen aufweisen. Auf ähnliche Weise können Prozessoren, die von anderen Prozessorentwicklungsfirmen wie zum Beispiel ARM Holdings, Ltd., MIPS, oder ihren Lizenznehmern gestaltet werden, mindestens einen Teil eines gemeinsamen Befehlssatzes gemeinsam nutzen, obwohl sie unterschiedliche Prozessorgestaltungen enthalten. Zum Beispiel kann die gleiche Registerarchitektur der ISA in unterschiedlicher Weise in verschiedenen Mikroarchitekturen mithilfe neuer oder bekannter Techniken umgesetzt werden einschließlich zweckbestimmter physischer Register, eines oder mehrerer dynamisch zugeordneter physischer Register, die einen Registerumbenennungsmechanismus (z. B. die Verwendung einer Register-Aliastabelle (RAT)), einen Neuordnungspuffer (Re-Order Buffer, ROB) und eine Rückordnungsregisterdatei verwenden. Bei einer Ausführungsform können die Register eine oder mehrere Register, Registerarchitekturen, Registerdateien oder andere Registersätze umfassen, die gegebenenfalls von einem Softwareprogrammierer programmiert werden können.
-
Ein Befehl kann ein oder mehrere Befehlsformate umfassen. Bei einer Ausführungsform kann ein Befehlsformat verschiedene Felder (Bitanzahl, Bitstandorte usw.) anzeigen, um unter anderem die auszuführende Operation und die Operanden festzulegen, mit denen die Operation ausgeführt wird. Bei einer weiteren Ausführungsform können einige Befehlsformate durch Befehlsvorlagen (oder Unterformate) zusätzlich definiert werden. Zum Beispiel können die Befehlsvorlagen eines gegebenen Befehlsformats definiert werden, damit sie verschiedene Teilsätze der Felder des Befehlsformats aufweisen und/oder damit ein gegebenes Feld unterschiedlich interpretiert wird. Bei einer Ausführungsform kann ein Befehl mithilfe eines Befehlsformats (und, falls definiert, in einer der Befehlsvorlagen dieses Befehlsformats) ausgedrückt werden und er legt die Operationen und die Operanden fest, mit denen die Operation ausgeführt wird, oder er zeigt diese an.
-
Wissenschaftliche, finanzielle und selbstvektorisierte universelle Anwendungen, Anwendungen zur Erkennung, Wissensentdeckung und Synthese (Recognition, Mining, and Synthesis applications, RMS-Anwendungen) sowie visuelle und Multimedia-Anwendungen (z. B. 2D/3D-Grafiken, Bildverarbeitung, Video-Komprimierung/Dekomprimierung, Spracherkennungsalgorithmen und Audiomanipulation) können es erforderlich machen, dass die gleiche Operation für eine große Anzahl von Datenfeldern ausgeführt wird. Bei einer Ausführungsform bezieht sich ein Befehlsstrom für mehrere Datenströme (Single Instruction Multiple Data, SIMD) auf einen Befehlstyp, der einen Prozessor veranlasst, eine Operation an mehreren Datenelementen auszuführen. Die SIMD-Technologie kann in Prozessoren verwendet werden, die Bits in einem Register logisch in eine Anzahl von Datenelementen mit fester Größe oder mit variabler Größe aufteilen, wobei jedes einen eigenständigen Wert darstellt. Bei einer Ausführungsform können zum Beispiel die Bits in einem 64-Bit-Register als ein Quelloperand organisiert sein, der vier eigenständige 16-Bit-Datenelemente enthält, wobei jedes einen eigenständigen 16-Bit-Wert darstellt. Auf diesen Datentyp kann als „gepackter” Datentyp oder „Vektor”-Datentyp Bezug genommen und auf Operanden dieses Datentyps kann als gepackte Datenoperanden oder Vektoroperanden Bezug genommen werden. Bei einer Ausführungsform kann ein gepacktes Datenfeld oder ein Vektor eine Sequenz von gepackten Datenelementen sein, die ein einem einzigen Register gespeichert sind, und ein gepackter Datenoperand oder ein Vektoroperand kann ein Quell- oder Zieloperand eines SIMD-Befehls (oder eines „gepackten Datenbefehls” oder eines „Vektorbefehls”) sein. Bei einer Ausführungsform legt ein SIMD-Befehl eine einzige Vektoroperation fest, die an zwei Vektoroperanden ausgeführt wird, um einen Zielvektoroperanden (auf den auch als Ergebnisvektoroperand Bezug genommen wird) der gleichen Größe oder einer unterschiedlichen Größe, der gleichen oder einer unterschiedlichen Anzahl von Datenelementen und mit der gleichen oder einer unterschiedlichen Reihenfolge der Datenelemente zu erzeugen.
-
Die SIMD-Technologie wie zum Beispiel, diejenige, die von den Intel® CoreTM Prozessoren, die einen Befehlssatz aufweisen, der x86, MMXTM, Streaming SIMD Erweiterungen (SSE), SSE2, SSE3, SSE4.1 und SSE4.2 Befehle umfasst, den ARM Prozessoren wie zum Beispiel der ARM Cortex®u Prozessorenfamilie, die einen Befehlssatz aufweist, der die Vektorgleitkomma-(Vector Floating Point, VFP) und/oder NEON-Befehle umfasst, und den MIPS Prozessoren eingesetzt wird, wie zum Beispiel der Loongson Prozessorenfamilie, die von dem Institute of Computing Technology (ICT) der Chinesischen Akademie der Wissenschaften entwickelt wurde, hat eine erhebliche Verbesserung bei der Anwendungsleistungsfähigkeit ermöglicht (CoreTM und MMXTM sind eingetragenen Marken oder Marken der Intel Corporation aus Santa Clara, Kalif.).
-
Bei einer Ausführungsform können Zielregisterdaten und Quellregisterdaten generische Begriffe sein, um die Quelle und das Ziel der entsprechenden Daten oder Operation darzustellen. Bei einigen Ausführungsformen können diese von Registern, einem Arbeitsspeicher oder anderen Datenspeicherbereichen umgesetzt werden, die andere Namen oder Funktionen als die dargestellten aufweisen. Bei einer Ausführungsform kann „DEST1” zum Beispiel ein temporäres Speicherregister oder ein anderer Datenspeicherbereich sein, wohingegen „SRC1” und „SRC2” ein erstes und ein zweites Quellspeicherregister oder ein anderer Datenspeicherbereich und so weiter sein können. Bei weiteren Ausführungsformen können zwei oder mehrere der SRC- und DEST-Speicherbereiche verschiedenen Datenspeicherelementen innerhalb des gleichen Speicherbereichs (z. B. einem SIMD-Register) entsprechen. Bei einer Ausführungsform, kann eines der Quellregister auch als ein Zielregister funktionieren, indem zum Beispiel das Ergebnis einer Operation, die mit den ersten und zweiten Quelldaten ausgeführt wurde, in ein oder zwei Quellregister zurückgeschrieben werden, die als Zielregister dienen.
-
1A ist ein Blockschaltbild eines beispielhaften Computersystems gemäß einigen Ausführungsformen der vorliegenden Offenbarung, wobei das Computersystem mit einem Prozessor gebildet ist, der Ausführungseinheiten umfassen kann, um einen Befehl auszuführen. Das System 100 kann eine Komponente wie zum Beispiel einen Prozessor 102 umfassen, um Ausführungseinheiten einschließlich einer Logik zum Ausführen von Algorithmen für das Verarbeiten von Daten gemäß der vorliegenden Offenbarung wie zum Beispiel der hier beschriebenen Ausführungsformen einzusetzen. Das System 100 kann stellvertretend für Verarbeitungssysteme, die auf den PENTIUM® III, PENTIUM® 4, XeonTM, Itanium®, XScaleTM und/oder StrongARMTM Mikroprozessoren beruhen, die von der Intel Corporation aus Santa Clara, Kalifornien, zur Verfügung stehen, obwohl auch andere Systeme (einschließlich PCs, die andere Mikroprozessoren aufweisen, Technik-Workstations, Beistellgeräte (set-top boxes), und Ähnliche) verwendet werden können. Bei einer Ausführungsform kann ein beispielhaftes System 100 eine Version des WINDOWSTM Betriebssystems ausführen, das von der Microsoft Corporation aus Redmond, Washington, zur Verfügung steht, obwohl auch andere Betriebssysteme (z. B. UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können. Somit sind die Ausführungsformen der vorliegenden Offenbarung nicht auf irgendeine spezifische Kombination von Hardwareschaltungen und Software beschränkt.
-
Die Ausführungsformen sind nicht auf Computersysteme beschränkt. Einige Ausführungsformen der vorliegenden Offenbarung können in anderen Einheiten wie zum Beispiel tragbaren Einheiten und eingebetteten Anwendungen verwendet werden. Einige Beispiele tragbarer Einheiten umfassen Mobiltelefone, Internetprotokollgeräte, digitale Kameras, persönliche Datenassistenten (Personal Digital Assistants, PDAs) und tragbare PCs. Zu den eingebetteten Anwendungen können eine Mikrosteuereinheit, ein digitaler Signalprozessor (Digital Signal Processor, DSP), ein Ein-Chip-System, Netzwerkcomputer (NetPC), Beistellgeräte, Netzwerkknoten, Fernnetzschalter (Wide Area Network switches, WAN-Schalter) oder jedes andere System gehören, das eine oder mehrere Befehle gemäß mindestens einer Ausführungsform ausführen kann.
-
Das Computersystem 100 kann einen Prozessor 102 umfassen, der eine oder mehrere Ausführungseinheiten 108 umfassen kann, um einen Algorithmus auszuführen, der mindestens einen Befehl gemäß einer Ausführungsform der vorliegenden Offenbarung ausführt. Eine Ausführungsform kann im Zusammenhang mit einem Ein-Prozessor-Desktopsystem oder einem Serversystem beschrieben werden, aber andere Ausführungsformen können in einem Mehrprozessorsystem enthalten sein. Das System 100 kann ein Beispiel einer „Knoten”-Systemarchitektur sein. Das System 100 kann einen Prozessor 102 für das Verarbeiten von Datensignalen umfassen. Der Prozessor 102 kann einen Computermikroprozessor mit komplexem Befehlssatz (Complex Instruction Set Computer microprocessor, CISC-Mikropropzessor), einen Computermikroprozessor mit eingeschränktem Befehlssatz (Reduced Instruction Set Computer microprocessor, RISC-Mikropropzessor), einen Mikroprozessor mit einem sehr langen Befehlswort (Very Long Instruction Word, VLIW), einen Prozessor, der eine Kombination von Befehlssätzen umsetzt, oder eine beliebige andere Prozessoreinheit wie zum Beispiel einen digitalen Signalprozessor umfassen. Bei einer Ausführungsform kann der Prozessor 102 mit einem Prozessorbus 110 verbunden sein, der Datensignale zwischen dem Prozessor 102 und den Komponenten in dem System 100 übertragen kann. Die Elemente des Systems 100 können herkömmlichen Funktionen ausführen, die dem Fachmann bekannt sind.
-
Bei einer Ausführungsform kann der Prozessor 102 einen internen Cachespeicher der Ebene 1 (Level 1 cache memory, L1-Cachespeicher) 104 umfassen. Abhängig von der Architektur kann der Prozessor 102 einen einzigen internen Cachespeicher oder mehrere Ebenen eines internen Cachespeichers aufweisen. Bei einer weiteren Ausführungsform kann der Cachespeicher außerhalb des Prozessors 102 angebracht sein. Andere Ausführungsformen können abhängig von den speziellen Umsetzungen und Erfordernissen auch eine Kombination sowohl aus internen als auch aus externen Cachespeichern umfassen. Eine Registerdatei 106 kann verschiedene Datentypen in unterschiedlichen Registern einschließlich Ganzzahlenregistern, Gleitkommazahlenregistern, Zustandsregistern und Befehlszeigerregistern speichern.
-
Eine Ausführungseinheit 108, die eine Logik zum Ausführen von Ganzzahlenoperationen und Gleitkommazahlenoperationen umfasst, ist auch in dem Prozessor 102 vorhanden. Der Prozessor 102 kann auch einen Mikrocode-ROM (μ-Code-ROM) umfassen, der den Mikrocode für bestimmte Makrobefehle speichert. Bei einer Ausführungsform kann die Ausführungseinheit 108 eine Logik zum Behandeln eines gepackten Befehlssatzes 109 umfassen. Durch das Einschließen des gepackten Befehlssatzes 109 in den Befehlssatz eines Universalprozessors 102 zusammen mit einer zugehörigen Schaltung zum Ausführen der Befehle können die Operationen, die von vielen Multimedia-Anwendungen verwendet werden, mithilfe gepackter Daten in einem Universalprozessor 102 ausgeführt werden. Durch das Verwenden der vollen Breite eines Prozessordatenbusses für das Ausführen von Operationen an gepackten Daten können somit viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden. Dies kann die Notwendigkeit für ein Übertragen kleiner Dateneinheiten über den Prozessordatenbus überflüssig machen, um eine oder mehrere Operationen an einem Datenelement gleichzeitig auszuführen.
-
Einige Ausführungsformen einer Ausführungseinheit 108 können auch in Mikrosteuereinheiten, eingebetteten Prozessoren, Grafikeinheiten, DSPs und weiteren Arten von logischen Schaltkreisen verwendet werden. Das System 100 kann einen Speicher 120 umfassen. Der Speicher 120 kann als eine dynamische Direktzugriffsspeichereinheit (Dynamic Random Access Memory device, DRAM-Einheit), eine statische Direktzugriffsspeichereinheit (Static Random Access Memory device, SRAM-Einheit), eine Flashspeichereinheit oder eine andere Speichereinheit umgesetzt werden. Der Speicher 120 kann Befehle und/oder Daten speichern, die durch Datensignale dargestellt werden, die von dem Prozessor 102 ausgeführt werden können.
-
Ein Systemlogikchip 116 kann mit dem Prozessorbus 110 und dem Speicher 120 verbunden sein. Der Systemlogikchip 116 kann einen Knoten für eine Speichersteuereinheit (Memory Controller Hub, MCH) umfassen. Der Prozessor 102 kann über den Prozessorbus 110 mit dem MCH 116 in einem Datenaustausch stehen. Der MCH 116 kann einen Speicherpfad mit hoher Bandbreite 118 zum Speicher 120 bereitstellen, um Befehle und Daten zu speichern und um Grafikbefehle, Daten und Texturen zu speichern. Der MCH 116 kann Datensignale zwischen dem Prozessor 102, dem Speicher 120 und anderen Komponenten in dem System 100 leiten und die Datensignale zwischen dem Prozessorbus 110, dem Speicher 120 und dem System-I/O 122 überbrücken. Bei einigen Ausführungsformen kann der Systemlogikchip 116 einen Grafikanschluss zum Verbinden mit einer Grafiksteuereinheit 112 bereitstellen. Der MCH 116 kann durch eine Speicherschnittstelle 118 mit dem Speicher 120 verbunden werden. Die Grafikkarte 112 kann über eine beschleunigte Grafikanschlussverbindung (Accelerated Graphics Port interconnect, AGP-Verbindung) 114 mit dem MCH 116 verbunden werden.
-
Das System 100 kann einen anwendereigenen Knotenschnittellenbus 122 verwenden, um den MCH 116 mit einem Knoten für eine I/O-Steuereinheit (I/O Controller Hub, ICH) 130 zu verbinden. Bei einer Ausführungsform kann der ICH 130 direkte Verbindungen zu einigen I/O-Einheiten über einen lokalen I/O-Bus bereitstellen. Der lokale I/O-Bus kann einen Hochgeschwindigkeits-I/O-Bus zum Verbinden von peripheren Einheiten mit dem Hauptspeicher 120, einem Chipsatz und dem Prozessor 102 umfassen. Einige Beispiele können die Audiosteuereinheit, einen Firmwareknoten (Flash-BIOS) 128, einen drahtlosen Transceiver 126, einen Datenspeicher 124, eine Vorgänger-I/O-Steuereinheit, die einen Benutzereingang und Tastaturschnittstellen enthält, einen seriellen Erweiterungsanschluss wie zum Beispiel einen Universal Serial Bus (USB) und eine Netzwerksteuereinheit 134 umfassen. Die Datenspeichereinheit 124 kann ein Festplattenlaufwerk ein Diskettenlaufwerk, ein CD-ROM-Gerät, eine Flashspeichereinheit oder eine andere Massenspeichereinheit umfassen.
-
Für eine weitere Ausführungsform eines Systems kann ein Befehl gemäß einer Ausführungsform mit einem Ein-Chip-System verwendet werden. Eine Ausführungsform eines Ein-Chip-Systems umfasst einen Prozessor und einen Speicher. Der Speicher für eines dieser Systeme kann einen Flashspeicher umfassen. Der Flashspeicher kann auf dem gleichen Chip wie der Prozessor und die anderen Systemkomponenten angebracht sein. Außerdem können auch weitere Logikblöcke wie zum Beispiel eine Speichersteuereinheit oder eine Grafiksteuereinheit in dem Ein-Chip-System angebracht sein.
-
1B stellt ein Datenverarbeitungssystem 140 dar, das die Prinzipien von einigen Ausführungsformen der vorliegenden Offenbarung umsetzt. Für den Fachmann ist es leicht verständlich, dass die hier beschriebenen Ausführungsformen mit alternativen Verarbeitungssystemen betrieben werden können, ohne vom Umfang der Ausführungsformen der Offenbarung abzuweichen.
-
Das Computersystem 140 umfasst einen Prozessorkern 159 zum Ausführen mindestens eines Befehls gemäß einer Ausführungsform. Bei einer Ausführungsform stellt der Prozessorkern 159 eine Verarbeitungseinheit mit einer beliebigen Architekturart dar einschließlich, ohne darauf beschränkt zu sein, einer CISC-, RISC oder einer VLIW-artigen Architektur. Der Prozessorkern 159 kann auch geeignet sein für die Herstellung in einer oder mehrere Prozesstechnologien und dadurch, dass er auf einem maschinenlesbaren Medium in ausreichender Detaillierung dargestellt wird, kann er geeignet sein, die Herstellung zu erleichtern.
-
Der Prozessorkern 159 umfasst eine Ausführungseinheit 142, einen Registerdateisatz 145 und eine Decodiereinheit 144. Der Prozessorkern 159 kann auch eine zusätzliche (nicht gezeigte) Schaltung umfassen, die für das Verständnis der Ausführungsformen der vorliegenden Offenbarung nicht erforderlich sein muss. Die Ausführungseinheit 142 kann Befehle ausführen, die von dem Prozessorkern 159 empfangen werden. Außer dem Ausführen typischer Prozessorbefehle kann die Ausführungseinheit 142 Befehle aus dem gepackten Befehlssatz 143 ausführen, um Operationen an gepackten Datenformaten auszuführen. Der gepackte Befehlssatz 143 kann Befehle für das Ausführen von Ausführungsformen der Offenbarung und andere gepackte Befehle umfassen. Die Ausführungseinheit 142 kann über einen internen Bus mit einer Registerdatei 145 verbunden sein. Die Registerdatei 145 kann einen Speicherbereich an dem Prozessorkern 159 für das Speichern von Informationen einschließlich Daten darstellen. Wie weiter oben erwähnt wurde, ist es selbstverständlich, dass es nicht kritisch sein muss, dass der Speicherbereich die gepackten Daten speichern kann. Die Ausführungseinheit 142 kann mit der Decodiereinheit 144 verbunden sein. Die Decodiereinheit 144 kann die von dem Prozessorkern 159 empfangenen Befehle in Steuersignale und/oder Mikrocodeeingabepunkte decodieren. Als Reaktion auf diese Steuersignale und Mikrocodeeingabepunkte führt die Ausführungseinheit 142 die entsprechenden Operationen aus. Bei einer Ausführungsform kann die Decodiereinheit den Op-Code des Befehls übersetzen, wodurch angezeigt wird, welche Operation an den in dem Befehl angegebenen Daten ausgeführt werden soll.
-
Der Prozessorkern 159 kann mit dem Bus 141 für einen Datenaustausch mit verschiedenen anderen Speichereinheiten verbunden sein, zu denen zum Beispiel gehören können, ohne auf dies beschränkt zu sein: eine Steuerung für einen synchronen dynamischen Direktzugriffsspeicher (Synchronous Dynamic Random Access Memory, DRAM) 146, eine Steuerung für einen statischen Direktzugriffsspeicher (Static Random Access Memory, SRAM) 147, eine Burst-Flashspeicherschnittstelle 148, eine Steuerung für eine Karte der Personal Computer Memory Card International Association (PCMCIA) oder eine CompactFlash-Karte (CF-Karte) 149, eine Steuerung eines Flüssigkristallbildschirms (Liquid Crystal Display, LCD) 150, eine Steuereinheit eines direkten Speicherzugriffs (Direct Memory Access, DMA) 151 und eine alternative Bushauptschnittstelle 152. Bei einer Ausführungsform kann das Datenverarbeitungssystem 140 auch eine I/O-Brücke 154 für einen Datenaustausch mit verschiedenen I/O-Einheiten über einen I/O-Bus 153 umfassen. Diese I/O-Einheiten können zum Beispiel, ohne auf diese beschränkt zu sein, einen universellen asynchronen Empfänger/Sender (Universal Asynchronous Receiver/Transmitter, UART) 155, einen Universal Serial Bus (USB) 156, einen drahtlosen Bluetooth-UART 157 und eine I/O-Erweiterungsschnittstelle 158 umfassen.
-
Eine Ausführungsform des Datenverarbeitungssystems 140 stellt ein Mobilfunknetzwerk und/oder drahtlose Datenaustauscheinheiten und einen Prozessorkern 159 bereit, die SIMD-Operationen einschließlich einer Vergleichsoperation an Zeichenfolgen ausführen können. Der Prozessorkern 159 kann mit verschiedenen Audio-, Video-, Bild- und Datenaustauschalgorithmen programmiert werden einschließlich diskreter Transformationen wie zum Beispiel einer Walsh-Hadamard-Transformation, einer schnellen Fourier-Transformation (Fast Fourier Transform, FFT), einer diskreten Kosinus-Transformation (Discrete Cosine Transform, DCT) sowie ihren jeweiligen inversen Transformationen; Komprimierungs-/Dekomprimierungstechniken wie zum Beispiel einer Farbraumtransformation, einer Bewegungsschätzung bei einer Videocodierung oder einer Bewegungskompensation bei einer Videodecodierung; und Modulations-/Demodulationsfunktionen (MODEM-Funktionen) wie zum Beispiel einer Pulscode-Modulation (PCM).
-
1C stellt weitere Ausführungsformen eines Datenverarbeitungssystems dar, das SIMD-Vergleichsoperationen an Zeichenfolgen ausführt. Bei einer Ausführungsform kann das Datenverarbeitungssystem 160 einen Hauptprozessor 166, einen SIMD-Coprozessor 161, einen Cachespeicher 167 und ein Eingabe/Ausgabe-System 168 umfassen. Das Eingabe/Ausgabe-System 168 kann optional mit einer drahtlosen Schnittstelle 169 verbunden sein. Der SIMD-Coprozessor 161 kann Operationen einschließlich Befehlen gemäß einer Ausführungsform ausführen. Bei einer Ausführungsform kann der Prozessorkern 170 für die Herstellung in einer oder mehrere Prozesstechnologien geeignet sein und dadurch, dass er auf einem maschinenlesbaren Medium in ausreichender Detaillierung dargestellt wird, kann er geeignet sein, die Herstellung eines ganzen oder Teilen eines Datenverarbeitungssystems 160 einschließlich des Prozessorkerns 170 zu erleichtern.
-
Bei einer Ausführungsform umfasst der SIMD-Coprozessor 161 eine Ausführungseinheit 162 und einen Registerdateisatz 164. Eine Ausführungsform des Hauptprozessors 165 umfasst eine Decodiereinheit 165, um Befehle aus dem Befehlssatz 163 einschließlich von Befehlen gemäß einer Ausführungsform für die Ausführung in der Ausführungseinheit 162 zu erkennen. Bei weiteren Ausführungsformen umfasst der SIMD-Coprozessor 161 auch mindestens einen Teil der Decodiereinheit 165, um Befehle aus dem Befehlssatz 163 zu decodieren. Der Prozessorkern 170 kann auch eine zusätzliche (nicht gezeigte) Schaltung umfassen, die für das Verständnis der Ausführungsformen der vorliegenden Offenbarung nicht erforderlich sein muss.
-
Während des Betriebs führt der Hauptprozessor 166 einen Strom von Datenverarbeitungsbefehlen aus, welche die allgemeinen Datenverarbeitungsoperationen einschließlich einer gegenseitigen Beeinflussung mit dem Cachespeicher 167 und dem Eingabe/Ausgabe-System 168 steuern. Die SIMD-Coprozessorbefehle können in den Strom von Datenverarbeitungsbefehlen eingebettet sein. Die Decodiereinheit 165 des Hauptprozessors 166 erkennt diese SIMD-Coprozessorbefehle, als solche, die von einem beigefügten SIMD-Coprozessor 161 ausgeführt werden sollen. Dementsprechend gibt der Hauptprozessor 166 diese SIMD-Coprozessorbefehle (oder Steuersignale, welche die SIMD-Coprozessorbefehle darstellen) auf den Coprozessorbus 166 aus. Diese Befehle auf dem Coprozessorbus 166 können von jedem beliebigen beigefügten SIMD-Coprozessor empfangen werden. In diesem Fall kann der SIMD-Coprozessor 161 jeden für ihn vorgesehenen SIMD-Coprozessorbefehl akzeptieren und ausführen.
-
Daten können über eine drahtlose Schnittstelle 169 zur Verarbeitung durch die SIMD-Coprozessorbefehle empfangen werden. Bei einem Beispiel kann ein Sprachsignal in der Form eines digitalen Signals empfangen werden, das von den SIMD-Coprozessorbefehlen ausgeführt werden kann, um digitale Audioabtastpunkte wiederherzustellen, die das Sprachsignal darstellen. Bei einem weiteren Beispiel kann ein komprimiertes Audio- und/oder Videosignal in der Form eines digitalen Bitstroms empfangen werden, der von den SIMD-Coprozessorbefehlen ausgeführt werden kann, um digitale Audioabtastpunkte und/oder Einzelbilder eines Bewegungsvideosignals wiederherzustellen. Bei einer Ausführungsform des Prozessorkerns 170 können der Hauptprozessor 166 und ein SIMD-Coprozessor 161 in einem einzigen Prozessorkern 170 integriert sein, der eine Ausführungseinheit 162, einen Registerdateisatz 164 und eine Decodiereinheit 165 umfasst, um Befehle aus einem Befehlssatz 163 einschließlich der Befehle gemäß einer Ausführungsform zu erkennen.
-
2 ist ein Blockschaltbild einer Mikroarchitektur für einen Prozessor 200 gemäß einigen Ausführungsformen der vorliegenden Offenbarung, wobei der Prozessor Logikschaltkreise umfassen kann, um Befehle auszuführen. Bei einigen Ausführungsformen kann ein Befehl gemäß einer Ausführungsform umgesetzt sein, um mit Datenelementen zu arbeiten, welche die Größen eines Bytes, eines Wortes, eines Doppelwortes, eines Vierfachwortes usw. sowie Datenarten wie zum Beispiel eine ganze Zahl oder eine Gleitkommazahl jeweils mit einfacher und doppelter Genauigkeit aufweisen. Bei einer Ausführungsform kann eine in Reihe geschaltete Front-End-Einheit 201 einen Teil des Prozessors 200 umsetzen, der auszuführende Befehle abrufen und die Befehle vorbereiten kann, damit sie später in der Prozessor-Pipeline verwendet werden. Die Front-End-Einheit 201 kann mehrere Einheiten umfassen. Bei einer Ausführungsform ruft eine Befehlsvorababrufeinheit 226 Befehle aus dem Speicher ab und speist die Befehle in eine Befehlsdecodiereinheit 228 ein, die ihrerseits die Befehle decodiert oder übersetzt. Bei einer Ausführungsform decodiert die Decodiereinheit zum Beispiel einen empfangenen Befehl in eine oder mehrerer Operationen, die „Mikrobefehle” oder „Mikrooperationen” (auch Mikro-Ops oder μOps) genannt werden und von der Maschine ausgeführt werden können. Bei weiteren Ausführungsformen zergliedert die Decodiereinheit den Befehl in einen Op-Code und entsprechende Daten und Steuerfelder, die von der Mikroarchitektur verwendet werden können, um Operationen gemäß einer Ausführungsform auszuführen. Bei einer Ausführungsform kann ein Spuren-Cachespeicher 230 die decodierten μOps in programmierten geordneten Sequenzen zusammensetzen oder in eine Spur einer μOp-Warteschlange 234 für eine Ausführung einfügen. Wenn der Spuren-Cachespeicher 230 auf einen komplexen Befehl stößt, stellt der Mikrocode-ROM 232 die μOps bereit, die benötigt werden, um die Operation zu beenden.
-
Einige Befehle können in eine einzige Mikro-Op umgewandelt werden, während andere Befehle mehrere Mikro-Ops benötigen, um die gesamte Operation zu beenden. Wenn bei einer Ausführungsform mehr als vier Mikro-Ops benötigt werden, um einen Befehl zu beenden, kann die Decodiereinheit 228 auf den Mikrocode-ROM 232 zugreifen, um den Befehl auszuführen. Bei einer Ausführungsform kann ein Befehl für ein Verarbeiten in der Befehlsdecodiereinheit 228 in eine kleinere Anzahl von Mikro-Ops decodiert werden. Bei einer weiteren Ausführungsform kann ein Befehl in dem Mikrocode-ROM 232 gespeichert werden, sollte eine Anzahl von Mikro-Ops benötigt werden, um die Operation abzuschließen. Der Spuren-Cachespeicher 230 bezieht sich auf einen programmierbaren Logik-Array (Programmable Logic Array, PLA) für einen Einstiegspunkt, um einen korrekten Zeiger von Mikrobefehlen zum Lesen der Mikrocodesequenzen zu ermitteln, sodass ein oder mehrere Befehle gemäß einer Ausführungsform von dem Mikrocode-ROM 232 beendet werden. Nachdem der Mikrocode-ROM 232 das Sequentialisieren der Mikro-Ops für einen Befehl beendet hat, nimmt die Front-End-Einheit 201 der Maschine das Abrufen der Mikro-Ops aus dem Spuren-Cachespeicher 230 wieder auf.
-
Das Modul für eine nebenläufige Ausführung 203 kann die Befehle für eine Ausführung vorbereiten. Die Logik für eine nebenläufige Ausführung weist eine Anzahl von Pufferspeichern auf, um den Fluss der Befehle zu glätten und neu zu ordnen, sodass ihre Leistungsfähigkeit optimiert wird, während sie durch die Pipeline laufen und ein Zeitplan für ihre Ausführung erstellt wird. Die Zuweisungslogik weist jeder μOp Maschinenpufferspeicher und -ressourcen zu, welche die μOp benötigt, um ausgeführt zu werden. Die Registerumbenennungslogik benennt Logikregister auf Eingaben in einer Registerdatei um. Die vor den Befehlszeitplanern (Speicherzeitplaner, schneller Zeitplaner 202, langsamer/allgemeiner Gleitkommazeitplaner 204 und einfacher Gleitkommazeitplaner 206) angebrachte Zuweisungslogik weist auch jeder μOp der beiden μOp-Warteschlangen, eine für Speicheroperationen und eine für nicht auf den Speicher bezogenen Operationen, eine Eingabe zu. Die μOp-Zeitplaner 202, 204, 206 ermitteln auf der Grundlage der Bereitschaft der abhängigen Operandenquellen der Eingaberegister und der Verfügbarkeit der Ausführungsressourcen, welche die μOps benötigen, um ihre Operation zu beenden, warm ein μOp bereit ist ausgeführt zu werden. Der schnelle Zeitplaner 202 einer Ausführungsform kann jede Hälfte des Haupttaktzyklus planen, während die anderen Zeitplaner nur einmal während eines Hauptprozessortaktzyklus planen können. Die Zeitplaner bestimmen die Abfertigungsanschlüsse, um die Ausführung der μOps zu planen.
-
Die Registerdateien 208, 210 können zwischen den Zeitplanern 202, 204, 206 und den Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224 in dem Ausführungsblock 211 angeordnet sein. Jede der Registerdateien 208, 210 kann Ganzzahlenoperationen bzw. Gleitkommazahlenoperationen ausführen. Jede Registerdatei 208, 210 kann ein Überbrückungsnetzwerk umfassen, das gerade fertiggestellte Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, an neue abhängige μOps überbrücken oder weiterleiten kann. Die Ganzzahlenregisterdatei 208 und die Gleitkommazahlenregisterdatei 210 können auch Daten untereinander austauschen. Bei einer Ausführungsform kann die Ganzzahlenregisterdatei 208 in zwei separate Registerdateien geteilt werden, eine Registerdatei für die zweiunddreißig Bits niedriger Ordnung der Daten und eine zweite Registerdatei für die zweiunddreißig Bits höherer Ordnung der Daten. Die Gleitkommazahlenregisterdatei 210 kann 128-Bit breite Eingaben umfassen, da die Gleitkommazahlenbefehle typischerweise Operanden mit einer Breite von 64 bis 128 Bits aufweisen.
-
Der Ausführungsblock 211 kann die Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224 enthalten. Die Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224 können die Befehle ausführen. Der Ausführungsblock 211 kann die Registerdateien 208, 210 umfassen, welche die Operandenwerte der Ganzzahlendaten und der Gleitkommadaten speichern, die von den Mikrobefehlen zum Ausführen benötigt werden. Bei einer Ausführungsform kann der Prozessor 200 eine Anzahl von Ausführungseinheiten umfassen: eine Adresserzeugungseinheit (Address Generation Unit, AGU) 212, eine AGU 214, eine schnelle arithmetische Logikeinheit (Arithmetic Logic Unit, ALU) 216, eine schnelle ALU 218, eine langsame ALU 220, eine Gleitkommazahlen-ALU 222 und eine Gleitkommazahlenbewegungseinheit 224. Bei einer weiteren Ausführungsform können die Gleitkommazahlenausführungsblöcke 222, 224 Gleitkommazahlen-MMX, -SIMD und -SSE oder andere Operationen ausführen. Bei einer weiteren Ausführungsform kann die Gleitkommazahlen-ALU 222 einen 64-Bit-durch-64-Bit-Gleitkommazahlenteiler umfassen, um Teiler-, Quadratwurzel- und Reste-Mikro-Ops auszuführen. Bei verschiedenen Ausführungsformen können Befehle, die einen Gleitkommazahlenwert beinhalten, mit einer Hardware für Gleitkommazahlen behandelt werden. Bei einer Ausführungsform können die ALU-Operationen zu den Hochgeschwindigkeits-ALU-Ausführungseinheiten 216, 218 weitergegeben werden. Die Hochgeschwindigkeits-ALUs 216, 218 können schnelle Operationen mit einer effektiven Verzögerung von einem halben Taktzyklus ausführen. Bei einer Ausführungsform gehen die komplexesten Ganzzahlenoperationen zu der langsamen ALU 220, da die langsame ALU 220 eine Ausführungshardware für ganze Zahlen für eine Art von Operationen mit langer Verzögerung wie zum Beispiel Multiplizierfunktionen, Verschiebungen, eine Kennzeichnungslogik und eine Verzweigungsverarbeitung umfassen kann. Speicheroperationen zum Laden/Speichem können von den AGUs 212, 214 ausgeführt werden. Bei einer Ausführungsform können die Ganzzahlen-ALUs 216, 218, 220 Ganzzahlenoperationen auf 64-Bit-Operanden ausführen. Bei weiteren Ausführungsformen können die ALUs 216, 218, 220 umgesetzt werden, um eine Vielfalt von Datenbitgrößen einschließlich sechzehn, zweiunddreißig, 128, 256 usw. Bits zu unterstützen. Auf ähnliche Weise können die Gleitkommazahleneinheiten 222, 224 umgesetzt werden, um einen Bereich von Operanden zu unterstützen, die Bits mit unterschiedlichen Breiten aufweisen. Bei einer Ausführungsform können die Gleitkommazahleneinheiten 222, 224 an 128-Bit-breiten gepackten Datenoperanden in Kombination mit SIMD- und Multimedia-Befehlen operieren.
-
Bei einer Ausführungsform können die μOp-Zeitplaner 202, 204, 206 abhängige Operationen abfertigen, bevor das Ausführen des übergeordneten Ladens beendet wurde. Da die μOps spekulativ im Prozessor 200 geplant und ausgeführt werden können, umfasst der Prozessor 200 auch eine Logik zum Behandeln von fehlenden Elementen im Speicher. Wenn eine Datenladung in dem Datencachespeicher fehlt, können abhängige Operationen in der Pipeline am Laufen sein, die den Zeitplaner vorübergehend mit unkorrekten Daten zurückgelassen haben. Ein Wiederholmechanismus spürt Befehle auf, welche die unkorrekten Daten verwenden, und führt sie erneut aus. Nur die abhängigen Operationen müssten wiederholt werden und die unabhängigen Operationen können die Erlaubnis erhalten, beendet zu werden. Die Zeitplaner und der Wiederholmechanismus einer Ausführungsform eines Prozessors sind auch dafür ausgelegt, Anweisungssequenzen für Vergleichsoperationen für eine Textzeichenfolge zu erfassen.
-
Der Begriff „Register” kann sich auf integrierte Prozessorspeicherstandorte beziehen, die als ein Teil der Anweisungen zum Identifizieren von Operanden verwendet werden können. In anderen Worten können Register diejenigen sein, die von außerhalb des Prozessors (aus der Sichtweise eines Programmierers) verwendbar sein können. Bei einigen Ausführungsformen könnten die Register jedoch nicht auf eine spezielle Art eines Schaltkreises beschränkt sein. Stattdessen kann ein Register Daten speichern, Daten bereitstellen und die hier beschriebenen Funktionen ausführen. Die hier beschriebenen Register können durch eine Schaltung innerhalb eines Prozessors mithilfe einer Anzahl von verschiedenen Techniken wie zum Beispiel zugeordneten physischen Registern, dynamisch zugewiesenen physischen Registern, die eine Registerumbenennung verwenden, Kombinationen von zugeordneten und dynamisch zugewiesenen physischen Registern usw. umgesetzt werden. Bei einer Ausführungsform speichern die Ganzzahlenregister 32-Bit-Ganzzahlendaten. Bei einer Ausführungsform enthält eine Registerdatei auch acht Multimedia-SIMD-Register für gepackte Daten. Für die nachfolgenden Erörterungen können die Register als Datenregister verstanden werden, die ausgelegt sind, gepackte Daten aufzubewahren, wie zum Beispiel 64-Bit-breite MMXTM-Register (auf die in einigen Fällen auch als „MM”-Register Bezug genommen wird) in Mikroprozessoren die mit einer MMX-Technologie von der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. Diese MMX-Register, die sowohl in Ganzzahlenform als auch in Gleitkommazahlenform zur Verfügung stehen, können mit gepackten Datenelementen arbeiten, welche die SIMD- und SSE-Anweisungen begleiten. Auf ähnliche Weise können 128-Bit-breite XMM-Register, die sich auf eine SSE2-, SSE3-, SSE4- oder höhere Technologie beziehen (auf die generisch als „SSEx”-Technologie Bezug genommen wird), auch diese gepackten Datenoperanden aufbewahren. Bei einer Ausführungsform ist es beim Speichern von gepackten Daten und Ganzzahlendaten nicht notwendig, dass die Register zwischen diesen beiden Datentypen unterscheiden. Bei einer Ausführungsform können ganze Zahlen oder Gleitkommazahlen entweder in der gleichen Registerdatei oder in verschiedenen Registerdateien enthalten sein. Außerdem können bei einer Ausführungsform die Gleitkommazahlendaten und die Ganzzahlendaten in verschiedenen Registern oder in dem gleichen Register gespeichert werden.
-
Die 3 und 5 können beispielhafte Systeme darstellen, die geeignet sind einen Prozessor 300 zu umfassen, während 4 ein beispielhaftes Ein-Chip-System (System an a Chip, SoC) darstellen kann, das einen oder mehrere der Kerne 302 umfassen kann. Im Stand der Technik sind weitere Systemauslegungen und -umsetzungen für Laptops, Desktops, tragbare PCs, persönliche Datenassistenten, Technik-Workstations, Server, Netzwerkgeräte, Netzwerkknoten, Schalter, eingebettete Prozessoren, DSPs, Grafikgeräte, Videospielgeräte, Beistellgeräte, Mikrosteuereinheiten, Mobiltelefone, tragbare Medienplayer, tragbare Geräte und verschiedene weitere elektronische Geräte bekannt, die ebenfalls geeignet sein können. Wie hier ganz allgemein beschrieben wird, ist grundsätzlich eine große Vielfalt von Systemen oder elektronischen Geräten geeignet, die einen Prozessor und/oder eine andere Ausführungslogik enthalten.
-
4 stellt ein Blockschaltbild eines Systems 400 gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar. Das System 400 kann einen oder mehrere Prozessoren 410, 415 umfassen, die mit einem Knoten für eine Grafikspeichersteuereinheit (Graphics Memory Controller Hub, GMCH) 420 verbunden sind. Die optionale Erscheinungsform der zusätzlichen Prozessoren 415 wird in 4 durch gestrichelte Linien angezeigt.
-
Jeder Prozessor 410, 415 kann eine Version eines Prozessors 300 sein. Es wird jedoch darauf hingewiesen, dass in den Prozessoren 410, 415 keine integrierte Grafiklogik und keine integrierten Speichersteuereinheiten enthalten sein könnten. 4 zeigt, dass der GMCH 420 mit einem Speicher 440 verbunden sein kann, der zum Beispiel ein dynamischer Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) sein kann. Der DRAM kann in mindestens einer Ausführungsform zugehörig zu einem nichtflüchtigen Cachespeicher sein.
-
Der GMCH 420 kann ein Chipsatz oder ein Teil eines Chipsatzes sein. Der GMCH 420 kann mit den Prozessoren 410, 415 in einem Datenaustausch stehen und ein Zusammenwirken zwischen den Prozessoren 410, 415 und dem Speicher 440 steuern. Der GMCH 420 kann auch als eine beschleunigte Busschnittstelle zwischen den Prozessoren 410, 415 und anderen Elementen des Systems 400 funktionieren. Bei einer Ausführungsform steht der GMCH 420 über einen Mehrpunktbus wie zum Beispiel einen Frontside-Bus (FSB) 495 mit den Prozessoren 410, 415 in einem Datenaustausch.
-
Außerdem kann der GMCH 420 mit einer Anzeige 445 (wie zum Beispiel einem Flachbildschirm) verbunden sein. Bei einer Ausführungsform kann der GMCH 420 einen integrierten Grafikbeschleuniger umfassen. Der GMCH 420 kann außerdem mit einem Knoten für eine I/O-Steuereinheit (I/O Controller Hub, ICH) 450 verbunden sein, der verwendet werden kann, um verschiedene periphere Geräte mit dem System 400 zu verbinden. Ein externes Grafikgerät 460 kann ein diskretes Grafikgerät umfassen, das zusammen mit einem anderen Peripheriegerät 470 mit dem ICH 450 verbunden ist.
-
Bei weiteren Ausführungsformen können auch zusätzliche oder unterschiedliche Prozessoren in dem System 400 vorhanden sein. Die zusätzlichen Prozessoren 410, 415 können zum Beispiel zusätzliche Prozessoren, die gleich dem Prozessor 410 sind, zusätzliche Prozessoren, die heterogen oder asymmetrisch zum Prozessor 410 sind, Beschleuniger (wie zum Beispiel Grafikbeschleuniger oder eine digitale Signalprozessoreinheit (DSP-Einheit)), anwenderprogrammierbare Gate-Arrays oder einen beliebigen anderen Prozessor umfassen. Es kann eine Vielfalt von Unterschieden zwischen den physischen Ressourcen 410, 415 hinsichtlich eines Spektrums des Leistungsmaßes vorhanden sein einschließlich der Eigenschaften von Architektur, Mikroarchitektur, Wärmebildung, Leistungsaufnahme und ähnlicher Eigenschaften. Diese Unterschiede können sich selbst wirksam als Asymmetrie und Heterogenität unter den Prozessoren 410, 415 asudrücken. Bei mindestens einer Ausführungsform können die verschiedenen Prozessoren 410, 415 in dem gleichen Chippaket angeordnet sein.
-
5 stellt ein Blockschaltbild eines zweiten Systems 500 gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar. Wie in 5 gezeigt wird, kann das Mehrprozessorsystem 500 ein Punkt-zu-Punkt-Verbindungssystem umfassen und es kann einen ersten Prozessor 570 und einen zweiten Prozessor 580 umfassen, die über eine Punkt-zu-Punkt-Verbindung 550 miteinander verbunden sind. Jeder der Prozessoren 570 und 580 kann eine Version des Prozessors 300 als einer der Prozessoren 410, 415 sein.
-
Obwohl 5 mit zwei Prozessoren 570, 580 gezeigt wird, ist es selbstverständlich, dass der Umfang der vorliegenden Offenbarung nicht darauf beschränkt ist. Bei weiteren Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
-
Die Prozessoren 570 und 580 werden einschließlich integrierter Speichersteuereinheiten (Integrated Memory Controller units, IMCs) 572 bzw. 582 gezeigt. Der Prozessor 570 kann als Teil seiner Bussteuereinheiten auch Punkt-zu-Punkt Schnittstellen (P-P-Schnittstellen) 576 und 578 umfassen; auf ähnliche Weise kann der Prozessor 580 die P-P-Schnittstellen 586 und 588 umfassen. Die Prozessoren 570, 580 können über eine Punkt-zu-Punkt Schnittstelle (P-P-Schnittstelle) 550 mithilfe der P-P-Schnittstellenschaltkreise 578, 588 Informationen austauschen. Wie in 5 gezeigt, verbinden die IMCs 572 und 582 die Prozessoren mit jeweiligen Speichern, insbesondere einem Speicher 532 und einem Speicher 534, die bei einer Ausführungsform Anteile eines Hauptspeichers sein können, der lokal an die jeweiligen Prozessoren angefügt ist.
-
Jeder der Prozessoren 570, 580 kann über individuelle P-P-Schnittstellen 552, 554 mithilfe von Punkt-zu-Punkt-Schnittstellenschaltkreisen 576, 594, 586, 598 Informationen mit einem Chipsatz 590 austauschen. Bei einer Ausführungsform kann der Chipsatz 590 auch über eine Hochleistungsgrafikschnittstelle 539 Informationen mit einem Hochleistungsgrafikschaltkreis 538 austauschen.
-
Ein gemeinsam genutzter (nicht gezeigter) Cachespeicher kann entweder in einem Prozessor oder außerhalb der beiden Prozessoren vorhanden sein, und ist dennoch über eine P-P-Verbindung mit den Prozessoren verbunden, sodass die lokalen Cachespeicherinformationen von einem oder beiden Prozessoren in dem gemeinsam genutzten Cachespeicher gespeichert werden können, wenn ein Prozessor in einen Modus mit geringem Stromverbrauch gesetzt wird.
-
Der Chipsatz 590 kann über eine Schnittstelle 596 mit einem ersten Bus 516 verbunden werden. Bei einer Ausführungsform kann der erste Bus 516 ein Bus für die Verbindung von Peripheriegeräten (Peripheral Component Interconnect Bus, PCI-Bus) oder ein Bus wie zum Beispiel ein PCI-Expressbus oder ein anderer I/O-Verbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Offenbarung nicht darauf beschränkt ist.
-
Wie in 5 gezeigt wird, können verschiedene I/O-Einheiten 514 mit dem ersten Bus 516 zusammen mit einer Busbrücke 518 verbunden werden, welche den ersten Bus 516 mit einem zweiten Bus 520 verbindet. Bei einer Ausführungsform kann der zweite Bus 520 ein Bus mit niedriger Pinanzahl (Low Pin Count bus, LPC-Bus) sein. Verschiedene Geräte können mit dem zweiten Bus 520 verbunden sein einschließlich zum Beispiel einer Tastatur und/oder einer Maus 522, Datenaustauschgeräten 527 und Speichereinheiten 528 wie zum Beispiel einem Laufwerk oder einem anderen Massenspeichergerät, die bei einer Ausführungsform Anweisungen, einen Code und Daten 530 enthalten können. Außerdem kann ein Audio-I/O 524 mit dem zweiten Bus 520 verbunden werden. Es ist zu beachten, dass weitere Architekturen möglich sein können. Zum Beispiel kann in einem System anstatt der Punkt-zu-Punkt-Architektur in 5 ein Mehrpunktbus oder eine andere solche Architektur umgesetzt werden.
-
6 stellt ein Blockschaltbild eines dritten Systems 600 gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar. Gleiche Elemente in den 5 und 6 tragen die gleichen Bezugszeichen und bestimmte Aspekte aus 5 wurden in 6 weggelassen, um ein Erschweren beim Verständnis anderer Aspekte in 6 zu vermeiden.
-
6 zeigt, dass die Prozessoren 670, 680 eine integrierte Speicherlogik und eine I/O-Steuerlogik (Control Logic, CL) 672 bzw. 682 umfassen können. Bei mindestens einer Ausführungsform können die CL 672, 682 integrierte Speichersteuereinheiten umfassen, wie zum Beispiel diejenigen, die in Zusammenhang mit den 3 bis 5 beschrieben werden. Außerdem kann die CL 672, 682 auch eine I/O-Steuerlogik umfassen. 6 zeigt, dass nicht nur die Speicher 632, 634 mit der CL 672, 682 verbunden sind, sondern dass auch die I/O-Geräte 614 mit der Steuerlogik 672, 682 verbunden sind. Vorgänger-I/O-Steuereinheiten 615 können mit dem Chipsatz 690 verbunden sein.
-
7 stellt ein Blockschaltbild eines SoC 700 gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar. Ähnlich Elemente in 3 tragen das gleiche Bezugszeichen. Es ist auch zu beachten, dass Rechtecke aus gestrichelten Linien Merkmale von fortgeschritteneren SoCs darstellen können. Eine Verbindungseinheit 702 kann verbunden sein mit: einem Anwendungsprozessor 710, der einen Satz von einem oder mehreren Kernen 702A–N und einen oder mehrere gemeinsam genutzte Cachespeichereinheiten 706 umfassen kann; einer Systemagenteinheit 711; einer Bussteuereinheit 716; einer integrierten Speichersteuereinheit 714; einem Satz von einem oder mehreren Medienprozessoren 720, die eine integrierte Grafiklogik 708 umfassen können, einem Bildprozessor 724 für ein Bereitstellen einer Standbild- und/oder Videokamerafunktionalität, einem Audioprozessor 726 für ein Bereitstellen einer Hardware-Audiobeschleunigung, und einem Videoprozessor 728 für ein Bereitstellen einer Video-Codierungs/Decodierungsbeschleunigung; einer SRAM-Einheit 730; einer DMA-Einheit) 732; und einer Anzeigeeinheit 740 für ein Verbinden mit einer oder mehreren externen Anzeigen.
-
8 ist ein Blockschaltbild einer elektronischen Einheit 800 für ein Verwenden eines Prozessors 810 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Die elektronische Einheit 800 kann zum Beispiel ein Notebook, ein Ultrabook, einen Computer, einen Towerserver, einen Gestellserver, einen Bladeserver, einen Laptop-Computer, einen Desktop-Computer, einen Tablet-Computer, ein Mobilfunkgerät, ein Telefon, einen eingebetteten Computer oder jede andere geeignete elektronische Einheit umfassen.
-
Die elektronische Einheit 800 kann den Prozessor 810 umfassen, der für einen Datenaustausch mit einer beliebigen geeigneten Anzahl oder Art von Komponenten, peripheren Geräten, Modulen oder Einheiten verbunden ist. Diese Verbindung kann durch jede beliebige geeignete Art eines Busses oder einer Schnittstelle erreicht werden wie zum Beispiel durch einen I2C-Bus, einen Systemverwaltungsbus (System Management Bus, SMBus), einen Bus mit niedriger Pinanzahl (Low Pin Count bus, LPC-Bus), eine SPI, einen hochauflösenden Audiobus (High Definition Audio bus, HDA-Bus), einen Serial Advance Technology Attachment Bus (SATA-Bus), einen USB-Bus (Versionen 1, 2, 3) oder einen universellen asynchronen Empfänger/Sender-Bus (Universal Asynchronous Receiver/Transmitter bus, UART-Bus).
-
Diese Komponenten können zum Beispiel umfassen: eine Anzeige 824, einen berührungsempfindlichen Bildschirm 825, einen Touchpad 830, eine Nahfeldkommunikationseinheit (Near Field Communications unit, NFC-Einheit) 845, einen Sensorknoten 840, einen thermischen Sensor 846, einen Express-Chipsatz (EC) 835, ein Trusted-Platform-Modul (TPM) 838, einen BIOS/Firmware/Flash-Speicher 822, einen DSP 860, ein Laufwerk 820 wie zum Beispiel ein Halbleiterlaufwerk (Solid State Disk, SSD) oder ein Festplattenlaufwerk (Hard Disk Drive, HDD), eine drahtlose lokale Netzwerkeinheit (Wireless Local Area Network unit, WLAN-Einheit) 850, eine Bluetooth-Einheit 852, eine drahtlose Fernnetzwerkeinheit (Wireless Wide Area Network unit, WWAN-Einheit) 856, ein globales Positionsbestimmungssystem (Global Positioning System, GPS), eine Kamera 854 wie zum Beispiel eine USB-3.0-Kamera oder eine Speichereinheit mit niedrigem Stromverbrauch und doppelter Datenrate (Low Power Double Data Rate memory unit, LPDDR-Speichereinheit) 815, die zum Beispiel in einem LPDDR3-Standard umgesetzt wird. Diese Komponenten können jeweils in jeder beliebigen geeigneten Art und Weise umgesetzt werden.
-
Außerdem können bei verschiedenen Ausführungsformen weitere Komponenten für einen Datenaustausch mit dem Prozessor 810 durch die oben erörterten Komponenten verbunden werden. Zum Beispiel können ein Beschleunigungsmesser 841, ein Umgebungslichtsensor (Ambient Light Sensor, ALS) 842, ein Kompass 843 und ein Gyroskop 844 für einen Datenaustausch mit dem Sensorknoten 840 verbunden werden. Ein Wärmesensor 839, ein Lüfter 837, eine Tastatur 846 und ein Touchpad 830 können für einen Datenaustausch mit dem EC 835 verbunden werden. Ein Lautsprecher 863, ein Kopfhörer 864 und ein Mikrofon 865 können für einen Datenaustausch mit einer Audioeinheit 864 verbunden werden, die ihrerseits für einen Datenaustausch mit dem DSP 860 verbunden werden kann. Die Audioeinheit 864 kann zum Beispiel ein Audiocodec und einen Verstärker der Klasse D umfassen. Eine SIM-Karte 857 kann für einen Datenaustausch mit der WWAN-Einheit 856 verbunden werden. Komponenten wie zum Beispiel die WLAN-Einheit 850 und die Bluetooth-Einheit 852 sowie die WWAN-Einheit 856 können in einem Formfaktor der nächsten Generation (Next Generation Form Factor NGFF) umgesetzt werden.
-
Ausführungsformen der vorliegenden Offenbarung enthalten einen Mechanismus für eine Gewichtungsverschiebung für CNNs. Bei einer Ausführungsform können solche Mechanismen umgesetzt werden, um die Verarbeitung der CNNs zu verbessern. Bei weiteren Ausführungsformen können diese Mechanismen auf andere neu konfigurierbare Verarbeitungseinheiten angewandt werden. 9 stellt ein CNN-System 900 dar, das eine Faltungsschicht 902, eine Mittelwertbündelungsschicht 904 und eine vollständig verbundenes neuronales Netzwerk 906 gemäß einigen Ausführungsformen der vorliegenden Offenbarung umfasst. Jede dieser Schichten kann eine einzige Operationsart ausführen. Wenn zum Beispiel die Eingabe eine Bildsequenz 910 ist, kann die Faltungsschicht 902 Filteroperationen 908 auf die Bildpixel 910 anwenden. Die Filteroperationen 908 können als eine Faltung eines Kerns über das gesamte Bild umgesetzt werden, wie es anschaulich in einem Element 912 gezeigt wird, in dem xi-1, xi, ... Eingabewerte (oder Pixelwerte) darstellen und kj-1, kj, kj+1 die Parameter des Kerns darstellen. Die Ergebnisse der Filteroperationen 908 können zusammen addiert werden, um eine Ausgabe aus der Faltungsschicht 902 an die nächste Bündelungsschicht 904 bereitzustellen. Die Bündelungsschicht 904 kann ein Unterabtasten ausführen, um die Bilder 910 auf einen Stapel verkleinerter Bilder 914 zu verkleinern. Die Unterabtastoperationen können durch Mittelwertbildungsoperationen oder durch Maximalwertoperationen erreicht werden. Das Element 916 zeigt anschaulich einen Mittelwert der Eingaben xo, xi, xn. Die Ausgabe der Bündelungsschicht 904 kann in das vollständig verbundene neuronale Netzwerk 906 eingespeist werden, um Mustererkennungen auszuführen. Das vollständig verbundene neuronale Netzwerk 906 kann einen Satz von Gewichtungen 918 auf seine Eingabewerte anwenden und ein Ergebnis als den Ausgang des vollständig verbundenen neuronalen Netzwerks 906 akkumulieren.
-
In der Praxis können die Faltungs- und die Bündelungsschicht mehrmals auf die Eingangsdaten angewandt werden, bevor sie an die vollständig verbundene Schicht übertragen werden. Danach wird der abschließende Ausgangswert geprüft, um zu ermitteln, ob gegebenenfalls ein Muster erkannt wurde. Jede der Faltungs-, Bündelungs- und vollständig verbundenen neuronalen Netzwerkschichten kann mit üblichen Multiplikations- und anschließenden Addieroperationen umgesetzt werden. Algorithmen, die auf Standardprozessoren wie einer CPU oder GPU umgesetzt werden, können eine Ganzzahlen-(oder Festkommazahlen-)Multiplikation und Addition oder eine verschmolzene Multiplikation und Addition (Fused Multiply-Add, FMA) für Gleitkommazahlen umfassen. Diese Operationen beinhalten Multiplikationsoperationen von Eingaben mit Parametern und danach die Addition der Multiplikationsergebnisse. Obwohl die Multiplikations- und Addieroperationen in Mehrkern-CPUs oder Mehrkern-GPUs parallel umgesetzt werden können, nehmen diese Umsetzungen keine einzigartigen Anforderungen für verschiedene Schichten des CNN in Betracht und können somit zu einer höheren Bandbreitenversorgung, einer längeren Verarbeitungsverzögerung und einem größeren Stromverbrauch als notwendig führen. Die Schaltung von CNN-Systemen, die auf einer Universalhardware umgesetzt werden wie zum Beispiel auf Universal-CPUs oder Universal-GPUs, ist nicht dafür ausgelegt, gemäß der Genauigkeitsanforderungen von verschiedenen Schichten neu konfiguriert zu werden, wobei die Genauigkeitsanforderungen gemäß der Anzahl der für die Berechnung verwendet Bits gemessen werden. Um alle Operationen der verschiedenen Schichten zu unterstützen, werden die aktuellen CNN-Systeme in den Hardwareeinheiten gemäß der höchsten Genauigkeitsanforderung bei einfacher oder doppelter Gleitkommagenauigkeit oder bei 32-Bit- oder 16-Bit-Festkommagenauigkeit umgesetzt. Dies kann zu Leistungsschwachen bei der Bandbreite, dem Zeitablauf und dem Stromverbrauch (ihren.
-
Einige Ausführungsformen der vorliegenden Offenbarung können modulare Berechnungsschaltkreise umfassen, die gemäß den Berechnungsaufgaben neu konfiguriert werden können. Darüber hinaus können einige Ausführungsformen der vorliegenden Offenbarung einen Mechanismus für eine Gewichtungsverschiebung für diese Schaltkreise umfassen. Bei einigen Ausführungsformen können diese Mechanismus für eine Gewichtungsverschiebung verwendet werden, dabei können Gewichtungen mit einer geringen Genauigkeit nach oben verschoben werden, und nachdem die Ergebnisse ermittelt wurden, können die Ergebnisse auf ihre ursprüngliche Genauigkeit zurückskaliert werden. Die neu konfigurierbaren Aspekte der Berechnungsschaltkreise können die Genauigkeit der Berechnung und/oder die Art und Weise der Berechnung umfassen. Spezielle Ausführungsformen der vorliegenden Offenbarung können modulare, neu konfigurierbare Berechnungsschaltkreise mit einer variablen Genauigkeit umfassen, um verschiedene Schichten des CNN auszuführen. Jeder der Berechnungsschaltkreise kann gleiche oder ähnlich angeordnete Komponenten umfassen, die optimal auf die unterschiedlichen Anforderungen der verschiedenen Schichten des CNN-Systems angepasst werden können. Auf diese Weise können einige Ausführungsformen der Offenbarung Filterfaltungsoperationen für die Faltungsschicht, Mittelwertbildungsoperationen für die Bündelungsschicht und Skalarproduktoperationen für die vollständig verbundene Schicht ausführen, indem die gleichen Berechnungsschaltkreise wieder verwendet werden, deren Genauigkeiten für die Anforderungen der verschiedenen Berechnungsarten angepasst werden können.
-
10 stellt eine detailliertere Ausführungsform für das Umsetzen eines beispielhaften neuronalen Netzwerks gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar. Bei einer Ausführungsform kann das beispielhafte CNN 900, das einen Mechanismus für eine Gewichtungsverschiebung für CNNs verwendet, mithilfe einer Verarbeitungseinheit 1000 umgesetzt werden. Obwohl die Verarbeitungseinheit 100 als eine Umsetzung des CNN 900 dargestellt wird, kann die Verarbeitungseinheit 1000 andere neuronale Netzwerkalgorithmen wie zum Beispiel herkömmliche neuronale Netzwerke oder Systeme umsetzen, die nur Faltungen ausführen.
-
Einige Ausführungsformen der vorliegenden Offenbarung können eine Verarbeitungseinheit umfassen, die zum Beispiel auf einem Ein-Chip-System umgesetzt werden. Die Verarbeitungseinheit 1000 kann einen Hardwareprozessor umfassen wie zum Beispiel einen Zentralprozessor, einen Grafikprozessor oder einen Universalprozessor oder eine beliebige Kombination davon. Die Verarbeitungseinheit 1000 kann zum Beispiel teilweise durch die in den 1 bis 8 dargestellten Elemente umgesetzt werden. Bei dem Beispiel der 10 kann die Verarbeitungseinheit 1000 einen Prozessorblock 1002, einen Berechnungsbeschleuniger 1004 und einen Bus-/Fabric-/Verbindungssystem 1006 umfassen. Der Prozessorblock 1002 kann außerdem ein oder mehrere Kerne (z. B. P1 bis P4) umfassen, um Universalberechnungen auszuführen und Steuersignale über den Bus 1006 an den Berechnungsbeschleuniger 1004 auszugeben. Der Berechnungsbeschleuniger 1004 kann außerdem eine Anzahl von Berechnungsschaltkreisen (z. B. A1 bis A4) umfassen, von denen jeder neu konfiguriert werden kann, um eine spezielle Berechnungsart für ein CNN-System auszuführen. Bei einer Ausführungsform kann die Neukonfiguration über Steuersignale, die von der Prozessoreinheit 1002 ausgegeben werden, und spezielle an die Berechnungsschaltkreise gelieferte Eingaben erreicht werden. Die Kerne innerhalb der Prozessoreinheit 1002 können über den Bus 1006 Steuersignale an den Berechnungsbeschleuniger 1004 ausgeben, um darin enthaltene Multiplexer so zu steuern, dass ein erster Satz an Berechnungsschaltkreisen innerhalb des Berechnungsbeschleunigers 1004 neu konfiguriert wird, um Filteroperationen für die Faltungsschichten mit ersten vorbestimmten Genauigkeiten auszuführen, dass ein zweiter Satz von Berechnungsschaltkreisen neu konfiguriert wird, um Mittelwertbildungsoperationen für Bündelungsschichten mit zweiten vorbestimmten Genauigkeiten auszuführen, und dass ein dritter Satz von Berechnungsschaltkreisen neu konfiguriert wird, um Berechnungen des neuronalen Netzwerks mit dritten vorbestimmten Genauigkeiten auszuführen. Auf diese Weise kann die Verarbeitungseinheit 1000 auf einem Ein-Chip-System effizient hergestellt werden, während die Berechnung für das CNN in einer Art und Weise ausgeführt werden kann, die den Ressourceneinsatz optimiert. Obwohl der Beschleuniger 1004 als ein vom Prozessorblock 1002 getrennter Schaltkreisblock dargestellt wird, kann der Beschleuniger 1004 bei einer Ausführungsform als ein Teil des Prozessorblocks 1002 hergestellt werden.
-
11 ist eine detailliertere Darstellung einer Verarbeitungseinheit 1000, die gemäß einigen Ausführungsformen der vorliegenden Offenbarung einen Berechnungsbeschleuniger 1004 umfasst, um Berechnungen für verschiedene Schichten des CNN-Systems 900 auszuführen. 11 kann Aspekte eines Ausführungsclusters 1114 darstellen, die aus einem Satz von Berechnungsschaltkreisen gebildet wird, um Elemente für die CNN-Berechnungen zu multiplizieren. Der Ausführungscluster 1114 kann eine Anzahl von Berechnungsschaltkreisen 1118, Verteilungslogiken 1116, 1122 und Verzögerungselementen 1120 umfassen. Die Verteilungslogik 1116 kann die Eingangssignale xi, i = 1, ..., N empfangen, wobei das Eingangssignal aus Bildpixelwerten oder abgetasteten Sprachsignalen bestehen kann. Darüber hinaus kann der Ausführungscluster 1114 durch breite Multiplizierer, zentrale Rechenregister, Addierer und Verschiebeeinheiten umgesetzt werden. Die Verteilungslogik 1116 kann Multiplexer umfassen, um xi an die Eingänge verschiedener Berechnungsschaltkreise 1118 zu übertragen. Neben dem Eingangssignal xi, kann die Verteilungslogik 1116 auch die Gewichtungskoeffizienten wi, 1, ..., N an verschiedene Berechnungsschaltkreisen zuweisen.
-
Die Berechnungsschaltkreise 1118 können auch die Steuersignale ci, i = 1, ..., N, empfangen, die von den Prozessorkernen wie zum Beispiel denjenigen in dem Prozessorblock 1002 ausgegeben werden können. Die Steuersignale ci können die Multiplexer innerhalb der Berechnungsschaltkreise 1118 steuern, um diese Berechnungsschaltkreise neu zu konfigurieren, sodass sie Filter- oder Mittelwertbildungsoperationen mit den gewünschten Genauigkeiten ausführen.
-
Eine Kopie der Ausgabe eines gegebenen Berechnungsschaltkreises 1118 kann durch ein oder mehrere Verzögerungselemente 1120, die ein Auffangregister umfassen können, um den Ausgang während eines vorbestimmten Zeitraums wie zum Beispiel eines Taktzyklus zu speichern, an einen Nächsten der Berechnungsschaltkreis 1118 weitergeleitet werden. Zum. Beispiel kann eine Kopie des Ausgangs des Berechnungsschaltkreises 1118A durch das Verzögerungselement 1120A verzögert werden, bevor sie in einen (nicht gezeigten) nächsten Berechnungsschaltkreis 1118B eingespeist wird. Eine weitere Kopie der Ausgänge der Berechnungsschaltkreise 1118 kann die gewichtete Summe der Eingaben xi, i = 1, ..., N sein. Wenn die Berechnungsschaltkreise 1118 zusammenarbeiten, können sie eine Faltungsschicht oder eine Bündelungsschicht oder eine vollständig verbundene Schicht eines CNN verwirklichen.
-
Die Berechnungsschaltkreise 1118 können jeweils in jeder beliebigen geeigneten Art und Weise umgesetzt werden. Die Berechnungsschaltkreise 1118 können zum Beispiel mithilfe einer geeigneten Kombination aus Multiplizierern, Multiplexer Verzögerungselementen und Addierern umgesetzt werden. Jeder der Berechnungsschaltkreise 1118 kann einen oder mehrerer Eingabewerte akzeptieren. Bei einer Ausführungsform kann jeder der Berechnungsschaltkreise 1118 sechzehn parallele Eingabewerte akzeptieren, um eine modulare und effiziente Berechnung zu erreichen.
-
12 stellt eine beispielhafte Ausführungsform eines Berechnungsschaltkreises 1200 dar, der verwendet werden kann, um einen Berechnungsschaltkreis 1118 vollständig oder teilweise gemäß einigen Ausführungsformen der vorliegenden Offenbarung umzusetzen. Der Berechnungsschaltkreis 1200 kann aus Komponenten gebildet werden, die neu konfiguriert werden können. Der Berechnungsschaltkreis 1200 kann zum Beispiel eine Multiplizier- und Addiereinheit (Multiply-and-Accumulate unit, MAC-Einheit) 1210, eine Signalerweiterungseinheit 1216, einen 4:2-Paralleladdierer mit Übertragsspeicherung (Carry-Save Adder, CSA) 1218, einen Addierer mit einer 24-Bit-Breite 1220 und eine Aktivierungsfunktion 1234 umfassen. Des Weiteren kann der Berechnungsschaltkreis 1200 eine beliebige geeignete Anzahl oder Kombination von Auffangregistern wie zum Beispiel die Auffangregister 1212, 1214, 1230, 1236, 1238 oder 1242 umfassen, um einen Datenaustausch zwischen seinen Elementen bereitzustellen. Bei einer Ausführungsform kann der Berechnungsschaltkreis 1200 Eingänge zum Beispiel von Eingangsdaten 1202 und Gewichtungen 1204 akzeptieren. Bei einer weiteren Ausführungsform kann der Berechnungsschaltkreis 1200 Eingänge von temporaren Daten 1206 akzeptieren. Bei einer weiteren Ausführungsform kann der Berechnungsschaltkreis 1200 Eingänge von einem Skalierungsfaktor 1208 akzeptieren. Jeder Eingang kann in einer beliebigen geeigneten Art und Weise wie zum Beispiel einem Auffangregister umgesetzt werden. Die Gewichtungen 1204 können zum Beispiel durch die Gewichtungen 1118 umgesetzt werden. Die Eingangsdaten 1202 können zum Beispiel von einer Logik zum Teilen einer größeren Eingabe wie zum Beispiel Bildern oder anderen Daten in diskrete Segmente unterteilt werden. Die temporaren Daten 1206 können Daten umfassen, die von einem anderen Berechnungsschaltkreis empfangen wurden. Der Skalierungsfaktor 1208 kann Skalierungsinformationen umfassen, die in Zusammenhang mit den temporären Daten 1206 verwendet werden.
-
Bei einer Ausführungsform kann der Berechnungsschaltkreis 1200 eine arithmetischen 16-Bit-Linksverschiebeeinheit 1240 umfassen, um Eingaben für Berechnungen in dem Berechnungsschaltkreis 1200 hochzuskalieren. Bei einer weiteren Ausführungsform kann der Berechnungsschaltkreis 1200 eine Rechtsverschiebeeinheit und Kürzungslogik 1232 umfassen, um die sich ergebenden Berechnungen des Berechnungsschaltkreises 1200 herunterzuskalieren.
-
Die Gewichtungen 1204 oder Eingangsdaten 1202 können von einer geringen Genauigkeit sein. Bei einer Ausführungsform kann der Berechnungsschaltkreis 1200 Gewichtungen während der Berechnung hochskalieren. Dieses Hochskalieren kann ein Erhöhen der numerischen Genauigkeit umfassen, bei der die Gewichtungen 1204 verwendet werden können. Des Weiteren kann der Grad, bis zu dem die Gewichtungen 1204 hochskaliert wurden, während des Betriebs des Berechnungsschaltkreises 1200 verfolgt werden. Bei einer weiteren Ausführungsform kann der Berechnungsschaltkreis 1200 seine Berechnungen auf dem verschobenen Wert der Gewichtungen 1204 ausführen und andernfalls innerhalb einer erweiterten Darstellung und Genauigkeit betrieben werden. Bei einer weiteren Ausführungsform kann der Berechnungsschaltkreis 1200 das Ergebnis der Berechnung auf die Genauigkeit herunterskalieren, die ursprünglich von den Gewichtungen 1204 verwendet wurde. Dieses umgekehrte Skalieren kann ausgeführt werden, indem die verfolgten Werte verwendet werden, mit denen die Gewichtungen 1204 ursprünglich skaliert wurden.
-
Der Berechnungsschaltkreis 1200 kann ein Hochskalieren und ein Herunterskalieren in Zusammenhang mit einer Faltungsberechnung für das CNN ausführen. Die zahlreichen Schichten eines neuronalen Netzwerks können, wie oben beschrieben, vollständig verbunden sein. Die Faltungsoperation müsste nicht vollständig verbunden sein. Die in diesen Berechnungen enthaltenen Operationen können alle lineare Transformation der Eingangsdaten 1202 sein.
-
Die Gewichtungen 1204 können zum Beispiel während eines Lernprozesses der Funktionen für ein CNN berechnet werden. Die Gewichtungen 1204 können auf der Grundlage von zum Beispiel verschiedenen Filterfunktionen variieren, die zur Verfügung stehen, um auf Bilder angewandt zu werden. Die Gewichtungen 1204 können in einem Arbeitsspeicher oder einem Datenspeicher des Prozessors gespeichert werden, bis sie für eine Verwendung durch den Berechnungsschaltkreis 1200 benötigt werden. Die Eingangsdaten 1202 können aus mehreren Eingangsschichten zum Beispiel der Bilder gelesen werden.
-
Bei einer Ausführungsform können für eine gegebene Schicht die Maximal- und Minimalwerte der Gewichtungen 1204 ermittelt werden. Bei einer weiteren Ausführungsform und auf der Grundlage dieser Ermittlung können die Gewichtungen 1204 hochskaliert werden, um in einen definierten Bereich zu gelangen. Wenn zum Beispiel die Gewichtungen 1204 als positive und negative Brüche kleiner als Eins gegeben sind, können die Gewichtungen 1204 in den Bereich (–1, 1) hochskaliert werden. Eine beliebige geeignete Skalierungstechnik kann verwendet werden. Bei einer weiteren Ausführungsform kann dieses Skalieren ausgeführt werden, indem Funktionen verschoben werden, und dementsprechend mit einer Zweierpotenz skaliert werden. Bei dieser Ausführungsform kann das Linksverschieben einer Zahl diese Zahl hochskalieren und das Rechtsverschieben einer Zahl kann diese Zahl herunterskalieren. Bei verschiedenen Ausführungsformen kann das Skalieren der Gewichtungen 1204 und das Speichern des Skalierungswertes außerhalb des Berechnungsschaltkreises 1200 zum Beispiel durch die Verarbeitungseinheit 1000 ausgeführt werden und an den Berechnungsschaltkreis 1200 geliefert werden. Darüber hinaus können die Gewichtungswerte, die von anderen Schichten verwendet werden, zum Beispiel durch eine arithmetische 16-Bit-Linksverschiebeeinheit 1240 hochskaliert werden.
-
Sobald die Gewichtungen 1204 verschoben wurden, kann der Berechnungsschaltkreis 1200 den Grad speichern, in dem die Gewichtungen 1204 verschoben worden sind. Der Verschiebeprozess kann eine Gleitkommazahlencodierung nachbilden. Der ursprüngliche Wert der Gewichtungen 1204 kann ähnlich sein wie eine Mantisse der Gleitkommazahlenoperationen, während der gespeicherte Skalierungswert ähnlich sein kann wie ein zugehöriger Exponent. Bei einer Ausführungsform kann der Skalierungswert für alle Gewichtungen 1204 während einer einzigen Operation des Berechnungsschaltkreises 1200 gleich sein.
-
Nachdem die Gewichtungen 1204 für eine Faltungsberechnung für die Schicht durch den Berechnungsschaltkreis 1200 verwendet wurden, können die Ergebnisse nach rechts verschoben oder wieder auf die ursprüngliche durch die Gewichtungen 1204 wiedergegebene Genauigkeit herunterskaliert werden. Bei einer Ausführungsform kann dieses Verschieben durch die Rechtsverschiebeeinheit und Kürzungslogik 1232 ausgeführt werden.
-
Obwohl der Berechnungsschaltkreis 1200 die Gewichtungen 1204 mit einer geringen Genauigkeit verwenden kann, können diese Gewichtungen von der Verarbeitungseinheit 1000 mit einer maximalen Genauigkeit wie zum Beispiel mit 32-Bit-Gleitkommazahlen gelernt werden. Die Gewichtungen können für eine Verwendung innerhalb des Berechnungsschaltkreises 1200 hochskaliert werden, um ihre mögliche Genauigkeit auf ein Höchstmaß zu bringen. Nachdem die Gewichtungen für eine Verwendung in den Gewichtungen 1204 hochskaliert wurden, können außerdem Teile der Gewichtungswerte gekürzt werden, um eine gewünschte geringere Genauigkeit beizubehalten. Wenn der Berechnungsschaltkreis 1200 zum Beispiel dabei ist, Gewichtungen mit einer Genauigkeit von acht Bits zu verwenden, können die unteren sechzehn Bits von den Gewichtungen gekürzt werden, bevor sie als die Gewichtungen 1204 bereitgestellt werden. Der Berechnungsschaltkreis 1200 kann zum Beispiel diese Acht-Bit-Gewichtungswerte verwenden, um ein Skalarprodukt, eine Faltung oder andere Berechnungen für das CNN auszuführen. Nach diesen Berechnungen kann der Berechnungsschaltkreis 1200 die Umkehroperation von derjenigen Operation ausführen, die ausgeführt wurde, um die Gewichtungen hochzuskalieren. Der Berechnungsschaltkreis 1200 kann insbesondere die Ergebnisse zum Beispiel mithilfe einer Rechtsverschiebeeinheit und Kürzungslogik 1232 herunterskalieren, um die Werte wieder herunterzuskalieren.
-
Obwohl eine beispielhafte Skalierung zum Beispiel von einem Zweiunddreißig-Bit-Gleitkommazahlenwert auf einen Acht-Bit-Festkommzahlenwert dargestellt ist, kann das Skalieren von jedem beliebigen Wert in einer Fest- oder Gleitkommazahl mit einer höheren Genauigkeit auf einen beliebigen niedrigeren Vorhersagewert in einer Festkommazahlenform ausgeführt werden.
-
Die 13A, 13B und 13C sind detailliertere Darstellungen von verschiedenen Komponenten des Berechnungsschaltkreises 1200 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. 13A ist eine detailliertere Darstellung der MAC-Einheit 1210. Bei gegebenen N Werten von den Eingangsauffangregistern 1302, die ihrerseits von den Eingangsdaten 1202 und den Gewichtungen 1204 kommen können, werden Elemente der Eingangsdaten 1202 und der Gewichtungen 1204 in 1304 paarweise multipliziert und dann in den zentralen Rechenregistern 1306 zusammenaddiert. Die Multiplikationen können durch Hardwarekomponenten erledigt werden, welche die Multiplikationsoperationen von Ganzzahlen- und Festkommazahleneingängen ausführen. Bei einer Ausführungsform können diese Multiplizierer 8-Bit-Festkommazahlenmultiplizierer umfassen. Wenn die Eingangsdaten 1202 und die Gewichtungen 1204 jeweils acht Bit breit sind (und in einem 1.7-Format sind, wobei ein Bit verwendet wird, um das Vorzeichen darzustellen, und sieben Bits verwendet werden, um eine Bruchzahl einer Festkommazahl darzustellen), können sechzehn Eingangspaare von den Eingangsauffangregistern 1302 vorhanden sein.
-
Zurückkehrend zu 12 kann hier bei einer Ausführungsform die MAC-Einheit 1210 die Ergebnisse der Faltungs- und Skalarproduktoperationen an die Auffangregister 1212, 1214 ausgeben. Die Ausgabeform kann ein Bit für das Vorzeichen, zwei Bits für die ganze Zahl und vierzehn Bits für die Bruchzahlen umfassen. Diese Ausgabe kann Teilergebnisse umfassen, die zu anderen Teilergebnissen zum Beispiel von der gleichen Berechnungseinheit 1200, einer anderen Berechnungseinheit oder einem Speicher addiert werden können. Die Teilergebnisse können in einem Sechzehn-Bit-Format gehalten werden. Wenn ein Teilergebnis in den Speicher oder die Berechnungseinheit 1200 gesendet wird, kann es auf ein Acht-Bit-Festkommazahlenformat gekürzt werden, wie weiter unten beschrieben wird.
-
Diese Teilergebnisse können zusätzliche Bits verwenden, um die vergrößerte Genauigkeit handzuhaben. Diese hinzugefügten Bits können als Ganzzahlenteil der Ergebnisse verwendet werden. Mithilfe dieser zusätzlichen Bits können der 4:2-CSA 1218 und der Addierer mit einer 24-Bit-Breite 1220 Werte addieren, die den Ausgabebereich überschreiten, und können somit den Berechnungsschaltkreis 1200 veranlassen, das er in dem Fall eines Überlaufs einen Genauigkeitsverlust vermeidet. Bei einer Ausführungsform können in dem Addierer mit einer 24-Bit-Breite 1220 ein Bit für das Vorzeichen, neun Bits für den Ganzzahlenanteil und vierzehn Bits für den Bruchzahlenantei reserviert werden. Es kann jedoch jedes beliebige geeignete Format verwendet werden einschließlich mehr oder weniger zusätzlicher Bits für den Ganzzahlenanteil.
-
13B ist eine detailliertere Darstellung des Addierers mit einer 24-Bit-Breite 1220, der das Ergebnis der Faltungs- und Skalarproduktoperationen akzeptieren kann, nachdem diese eine Signalerweiterung 1216 durchlaufen haben. Das Ergebnis wird zu den temporären Daten 1206, die aus einer andern Schichtermittlung empfangen wurden, und zu einer vorherigen Iteration des Addierers mit einer 24-Bit-Breite 1220 addiert. Diese Addition kann zum Beispiel von dem 4:2-CSA 1218 ausgeführt werden. Die Ausgaben des 4:2-CSA 1220 können zum Beispiel zwei Ausgaben umfassen, die eine Sequenz von Teilsummenbits und eine Sequenz von Trägerbits umfassen. Die Ganzzahlenkomponenten aus den jeweiligen Eingaben können in einem 10-Bit-Addierer 1308 addiert werden und die Bruchzahlenkomponenten aus den jeweiligen Eingaben können in einem 14-Bit-Addierer 1310 addiert werden. Die Ausgaben 1312, 1314 können an die Rechtsverschiebeeinheit und Kürzungslogik 1232 gesendet werden.
-
Zurückkehrend zu 12 kann hier bei einer Ausführungsform die Rechtsverschiebeeinheit und Kürzungslogik 1232 die Ergebnisse so herunterskalieren, dass sie für eine Verwendung in einem von anderen Elementen wie zum Beispiel anderen Berechnungsschaltkreisen erwarteten Bereich normalisiert sind. Die Werte werden gemäß dem Skalierungsfaktor 1208 herunterskaliert, der für die verwendeten Gewichtungen verwendet wird. Der Skalierungsfaktor 1208 kann dem gleichen Skalierungsfaktor entsprechen, der verwendet wird, um die Gewichtungen hochzuskalieren. Abhängig von der Bestimmung der Daten kann die Rechtsverschiebeeinheit und Kürzungslogik 1232 bei einer weiteren Ausführungsform Bits von den herunterskalierten Ergebnissen abschneiden. Die oberen Bits der Ganzzahlenwerte und die unteren Bits der Bruchzahlenwerte können entfernt werden. Bei einer Ausführungsform kann die Rechtsverschiebeeinheit und Kürzungslogik 1232 Daten in einem 3.7-Format mit einem Vorzeichenbit, zwei Ganzzahlenbits und fünf Bruchzahlenbits ausgeben. Dieses Format kann zum Beispiel von der Aktivierungsfunktion 1234 erwartet werden.
-
13C ist eine detailliertere Darstellung der Rechtsverschiebeeinheit und Kürzungslogik 1232. Die Ganzzahlendaten 1312 (mit einer beispielhaften 10-Bit-Breite) und die Bruchzahlendaten 1314 (mit einer beispielhaften 14-Bit-Breite) können eingegeben werden. Den Bruchzahlendaten 1314 können durch eine Kürzungseinheit für Bruchzahlen 1314 die sieben unteren Bits gekürzt werden. Eine arithmetische 16-Bit-Rechtsverschiebeeinheit 1318 kann die Ganzzahlen- und Bruchzahlendaten gemäß dem Skalierungsfaktor 1208 skalieren. Die Ausgabe kann in einem 10.7-Format erfolgen, das seinerseits durch eine abschließende Kürzung 1322 in ein 3.7-Format für eine Ausgabe gekürzt wird.
-
Zurückkehrend zu 12 kann hier ein Ergebnis, sobald es endgültig ist, an die Aktivierungsfunktion 1234 weitergegeben werden. Von dort kann es letztlich als Ausgabe 1244 weitergegeben werden. Wenn ein Ergebnis nicht endgültig ist, kann es in den Datenspeicher oder den Arbeitsspeicher geschrieben werden oder es kann andernfalls zu einem anderen Berechnungsschaltkreis weitergegeben werden. Diese nicht endgültigen Ergebnisse können ausgegeben werden, um zu temporaren Daten 1206 eines anderen Berechnungsschaltkreises zu werden.
-
Folglich kann bei einer Ausführungsform ein vergrößertes hochskaliertes Ergebnis in dem Berechnungsschaltkreis 1200 beibehalten werden, aber es kann gekürzt werden, wenn ein solches Ergebnis aus dem Berechnungsschaltkreis 1200 ausgegeben wird. Die Gewichtungen 1204 und die Eingangsdaten 1202 könnten zum Beispiel in einer niedrigeren Genauigkeit gehalten werden. Die Teilergebnisse werden in einem Speicher gespeichert, sodass eine zwischenzeitliche Genauigkeit zwischen aufeinanderfolgenden Operationen von verschiedenen Berechnungsschaltkreisen an aufeinanderfolgenden Anteilen der gleichen Schichten nicht verloren geht. Wenn die Teilergebnisse von einem nachfolgenden Berechnungsschaltkreis verwendet werden, können sie durch eine arithmetische 16-Bit-Linksverschiebeeinheit 1240 hochskaliert werden.
-
Steuerinformation zwischen verschiedenen Stufen von Multiplikationsschaltkreisen können in jeder beliebigen geeigneten Art und Weise ausgeführt werden. Eine Verarbeitungseinheit 1000 kann zum Beispiel Register zum Speichern von Gewichtungen und Eingangswerten sowie Multiplexer zum Weiterleiten von Werten zu entsprechenden Multiplikationsschaltkreisen umfassen. Das Weiterleiten von Signalen und eine Koordination zum Auslösen des Betriebs des CNN 900 kann zum Beispiel von den Verteilungslogiken 1116 und 1122 ausgeführt werden.
-
Zum Darstellen der Effekte und des Betriebs des Berechnungsschaltkreises
1200 wird die folgende mögliche Eingangsmatrix betrachtet:
Tabelle 1: Beispielhafte Eingangsmatrix
-
Des Weiteren werden die folgenden beispielhaften Gewichtungen für einen Filter betrachtet, die mit einer vollständigen Genauigkeit von sieben Stellen ermittelt werden. Es ist zu beachten, dass das folgende Beispiel mithilfe von Dezimalwerten erledigt wird, aber bei einer Ausführungsform kann der Berechnungsschaltkreis so betrieben werden, dass er diese Operationen im Binärsystem durchführt.
0,0005672 | 0,0012342 |
0,0023813 | 0,0000291 |
Tabelle 2: Beispielhafter Filter mit einer vollständigen Genauigkeit
-
Ein solcher Filter hat, wenn er auf den beispielhaften Eingang angewandt wird, ein Faltungsergebnis von 0,1704128. Dies ist eine Messbasis zum Vergleich mit anderen Ergebnissen. Die Verwendung einer großen Anzahl von Stellen oder Bits zum Berechnen einer Faltung kann einen zusätzlichen Stromverbrauch sowie größere Prozessorressourcen umfassen. Wenn die Architektur zum Berechnen des Faltungsergebnisses auf weniger Genauigkeitsstellen begrenzt ist, kann die zusätzliche Genauigkeit mithilfe der ursprünglichen Sieben-Stellen-Beobachtung negativ beeinflusst werden. Zum Beispiel kann der gleiche Filter betrachtet werden, wenn er auf eine Genauigkeit von vier Stellen begrenzt wird, wobei angenommen wird, dass die Architektur für das Berechnen einer Faltung wie folgt eingeschränkt ist:
0,0005 | 0,0012 |
0,0023 | 0,0000 |
Tabelle 3: Beispielhafter Filter mit einer 4-Stellen-Genauigkeit
-
Ein solcher Filter kann, wenn er auf den beispielhaften Eingang angewandt wird, ein Faltungsergebnis von 0,1568 aufweisen, was einen Fehler von 7,988% im Vergleich zur Berechnungsbasis aufweist. Der Fehler ist zurückführbar auf den Genauigkeitsverlust bei denn Gewichtungen des Filters, der auf eine Genauigkeit von vier Stellen beschränkt ist.
-
Wie oben beschrieben wurde, kann bei einer Ausführungsform die gleiche Genauigkeit von vier Stellen verwendet werden, um die Daten nach links zu verschieben und alle zusätzlichen Bits zu kürzen. Das Verschieben kann so erledigt werden, dass die Gewichtungen innerhalb des dezimalen (oder binären) Verschiebungsschemas so nah wie möglich an „1” erweitert werden. Die Anzahl der verschobenen Stellen wird gespeichert und dazu verwendet, das Ergebnis zurückzuskalieren. Zum Beispiel werden die Inhalte mit einer vollständigen Genauigkeit der Tabelle 2 als verschoben und gekürzt betrachtet und unten als gewichtungsverschobener Filter dargestellt:
0,0567 | 0,1234 |
0,2381 | 0,0029 |
Tabelle 4: Beispielhafter gewichtungsverschobener Filter mit einer 4-Stellen-Genauigkeit
-
Wie oben erörtert wurde, kann bei einer Ausführungsform die Anzahl der verschobenen Stellen oder Bits für alle Gewichtungen innerhalb einer gegebenen Schicht konstant gehalten werden, selbst wenn einige Gewichtungswerte noch einmal verschoben werden könnten. Zum Beispiel kann „0,2381” nicht noch einmal verschoben werden, ohne die beispielhafte Grenze von [–1, 1] zu überschreiten, dahingegen könnte „0,0029” noch zweimal verschoben werden. Dementsprechend könnten bei einer solchen Ausführungsform einige Gewichtungen noch immer einige führende Nullen umfassen.
-
Ein solcher Filter hätte, wenn er durch den Berechnungsschaltkreis 1200 auf den beispielhaften Eingang angewandt wird, ein unbereinigtes Faltungsergebnis von 17,0368. Ein solches Ergebnis würde nachfolgend von dem Berechnungsschaltkreis 1200 zurück nach rechts verschoben und gekürzt werden. Das Faltungsergebnis kann zum Beispiel 0,1703 sein. Dieses Ergebnis kann einen Fehler von 0,066% aufweisen.
-
14 ist ein Ablaufplan einer beispielhaften Ausführungsform eines Verfahrens 1400 zur Gewichtungsverschiebung gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Das Verfahren 1400 kann Operationen darstellen, die zum Beispiel durch das CNN 900, die Verarbeitungseinheit 1000 oder den Berechnungsschaltkreis 1200 ausgeführt werden. Das Verfahren 1400 kann an jedem beliebigen geeigneten Punkt beginnen und kann in jeder beliebigen geeigneten Reihenfolge ausgeführt werden. Bei einer Ausführungsform kann das Verfahren 1400 bei 1405 beginnen.
-
In 1405 können Gewichtungen gelernt werden, die auf ein CNN angewandt werden. Bei einer Ausführungsform können die Gewichtungen mit einer maximalen Anzahl von Genauigkeitsstellen gelernt werden. In 1410 können diese Gewichtungen in ein festes Intervall skaliert werden. Bei einer Ausführungsform kann diese Skalierung erledigt werden, indem Werte der Gewichtungen nach links verschoben werden, bis die Gewichtungen am besten in das feste Intervall passen. Bei einer weiteren Ausführungsform kann das gleiche Verschieben auf alle Gewichtungen einer gegebenen Schicht angewandt werden, sogar wenn ein zusätzliches Verschieben für einige der Gewichtungen von Vorteil wäre, aber verursachen würde, dass andere das feste Intervall überschreiten.
-
Bei einer Ausführungsform kann in 1415 ein Skalierungsfaktor gespeichert werden, der festlegt, um welchen Wert die Gewichtungen verschoben oder skaliert wurden. In 1420 können die Gewichtungswerte so gekürzt werden, dass sie in eine feste Darstellung mit geringeren Genauigkeiten passen.
-
Bei einer Ausführungsform können 1405 bis 1420 Off-line ausgeführt werden oder bevor eine Faltung, ein Skalarprodukt, ein Filtern oder andere Berechnungen oder Operationen auf den Daten wie zum Beispiel Bildern ausgeführt werden sollen. 1405 bis 1420 können zum Beispiel durch Verarbeitungseinheiten ausgeführt werden. Bei einer weiteren Ausführungsform können 1425 bis 1465 für verschiedene Daten wiederholt ausgeführt werden. 1425 bis 1465 können zum Beispiel durch Berechnungsschaltkreise ausgeführt und durch Verarbeitungseinheiten koordiniert werden.
-
In 1425 können Eingangswerte und Gewichtungswerte empfangen werden. Außerdem können Skalierungswerte empfangen werden, die den Grad anzeigen, bis zu dem die Gewichtungen skaliert werden. Die Eingangswerte und Gewichtungswerte können einen feste Größe und eine niedrigere Genauigkeit aufweisen, als die in der die Gewichtungswerte ursprünglich ermittelt wurden.
-
In 1430 kann ermittelt werden, ob Teilergebnisse zur Verfügung stehen, die vorher durch einen Berechnungsschaltkreis ermittelt wurden, der auf der gleichen Schicht arbeitet. Wenn diese Teilergebnisse zur Verfügung stehen, können die Teilergebnisse bei einer Ausführungsform in der Genauigkeit hochskaliert werden, indem sie gemäß den ermittelten Skalierungsfaktoren nach links verschoben werden. Wenn nicht, kann das Verfahren 1400 zu 1440 weitergehen.
-
In 1440 können die skalierten Gewichtungen verwendet werden, um geeignete Berechnungen wie zum Beispiel eine Faltung oder ein Skalarprodukt an dem Eingang zu ermitteln. Die vorherigen Ergebnisse können auch verwendet werden, wenn sie zur Verfügung stehen.
-
Bei einer Ausführungsform kann in 1445 ermittelt werden, ob die Berechnungen für die Schicht beendet wurden. Wenn nicht, kann das Verfahren 1400 zu 1450 weitergehen. Wenn ja, kann das Verfahren 1400 zu 1455 weitergehen.
-
In 1450 können die Teilergebnisse für zukünftige Berechnungen in der gleichen Schicht gespeichert werden. Wenn diese Ergebnisse in dem gleichen Berechnungsschaltkreis ausgeführt werden, können die Ergebnisse bei einer Ausführungsform in einem Auffangregister in dem Berechnungsschaltkreis gespeichert werden. Wenn diese Ergebnisse in einem anderen Berechnungsschaltkreis ausgeführt werden, können die Ergebnisse bei einer weiteren Ausführungsform teilweise gekürzt werden. Außerdem können die Ergebnisse herunterskaliert werden, indem zum Beispiel ihre Werte um den Skalierungsfaktor nach rechts verschoben werden. Die gekürzten und skalierten Ergebnisse können in einem Speicher oder einem Register gespeichert werden oder andernfalls an einen anderen Berechnungsschaltkreis gesendet werden. Das Verfahren 1400 kann zu 1425 zurückkehren.
-
Bei einer Ausführungsform können die Ergebnisse in 1455 herunterskaliert werden. Die Ergebnisse können herunterskaliert werden, indem sie zum Beispiel um eine Anzahl von Bits oder Stellen, die dem Skalierungsfaktor entsprechen, nach rechts verschoben werden. Bei einer weiteren Ausführungsform können die Ergebnisse in 1460 gekürzt werden. Zum Beispiel können die oberen Ganzzahlenbits und die unteren Bruchzahlenbits gemäß einem erwarteten Ausgabeformat gekürzt werden. In 1465 kann das Ergebnis als der ermittelte berechnete Wert ausgegeben werden, welcher der Schicht zugeordnet ist.
-
In 1470 kann ermittelt werden, ob zum Beispiel die vorherigen Schritte mit zusätzlichen Eingangswerten für eine andere Schicht wiederholt werden. Wenn ja, kann das Verfahren 1400 zu 1425 zurückkehren. Andernfalls kann das Verfahren 1400 beendet werden.
-
Das Verfahren 1400 kann durch beliebige geeignete Kriterien gestartet werden. Obwohl das Verfahren 1400 eine Operation von speziellen Elementen beschreibt, kann das Verfahren 1400 außerdem durch jede beliebige geeignete Kombination oder Art von Elementen ausgeführt werden. Das Verfahren 1400 kann zum Beispiel durch die in den 1 bis 13 dargestellten Elemente oder ein beliebiges anderes System umgesetzt werden, das in der Lage ist, das Verfahren 1400 umzusetzen. Von daher können der bevorzugte Startpunkt des Verfahrens 1400 und die Reihenfolge der Elemente, die in dem Verfahren 1400 enthalten sind, von der gewählten Umsetzung abhängig sein. Bei einigen Ausführungsformen können einige Elemente optional weggelassen, neu organisiert, wiederholt oder kombiniert werden. Außerdem kann das Verfahren 1400 vollständig oder teilweise parallel zueinander ausgeführt werden.
-
Einige Ausführungsformen der hier offenbarten Mechanismen können als Hardware, Software, Firmware oder einer Kombination dieser Umsetzungsansätze umgesetzt werden. Einige Ausführungsformen der Offenbarung können als Computerprogramme oder ein Programmcode umgesetzt werden, die auf programmierbaren Systemen ausgeführt werden, die mindestens einen Prozessor, ein Speichersystem (einschließlich eines flüchtigen und eines nichtflüchtigen Speichers und/oder anderer Speicherelemente), mindestens eine Eingabeeinheit und mindestens eine Ausgabeeinheit umfassen.
-
Der Programmcode kann auf Eingabebefehle angewandt werden, um die hier beschriebenen Funktionen auszuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können in einer bekannten Weise auf eine oder mehrere Ausgabeeinheiten angewandt werden. Für die Zwecke dieser Anmeldung kann das Verarbeitungssystem jedes beliebige System umfassen, das einen Prozessor wie zum Beispiel einen digitalen Signalprozessor (Digital Signal Processor, DSP), eine Mikrosteuereinheit, einen anwendungsspezifischen integrierten Schaltkreis (Application Specific Integrated Circuit, ASIC) oder einen Mikroprozessor aufweist.
-
Der Programmcode kann in einer übergeordneten prozeduralen oder objektorientierte Programmiersprache umgesetzt werden, um mit einem Verarbeitungssystem Daten auszutauschen. Der Programmcode kann, wenn gewünscht, auch in einer Assembler- oder Maschinensprache umgesetzt werden. Tatsächlich sind die hier beschriebenen Mechanismen in ihrem Umfang nicht auf irgendeine spezielle Programmiersprache eingeschränkt. In jedem Fall kann die Sprache eine kompilierte oder übersetzte Sprache sein.
-
Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentative Befehle umgesetzt werden, die in einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken in dem Prozessor darstellt, und die, wenn sie von einer Maschine gelesen werden, die Maschine veranlassen, eine Logik herzustellen, um die hier beschriebenen Techniken auszuführen. Diese als „IP-Kerne” bekannten Darstellungen können in einem konkreten maschinenlesbaren Medium gespeichert werden und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um in die Herstellungsmaschinen geladen zu werden, welche die Logiken oder Prozessoren tatsächlich herstellen.
-
Diese maschinenlesbaren Speichermedien können, ohne auf diese beschränkt zu sein, nichtflüchtige, konkrete Anordnungen von Produkten umfassen, die von einer Maschine oder einer Einheit hergestellt oder gebildet werden einschließlich Speichermedien wie zum Beispiel Festplatten, jede andere Art von Magnetplatten einschließlich flexibler Speicherplatten, optischer Speicherplatten, Compact-Disk-Speicher (Compact Disk Read-Only Memories, CD-ROMs), mehrfach beschreibbarer Compact-Disk-Speicher (Compact Disk Re-Writables, CD-RWs) und magnetooptischer Speicherplatten; Halbleitereinheiten wie zum Beispiel schreibgeschützte Speicher (Read-Only Memories, ROMs), Direktzugriffsspeicher (Random Access Memories, RAMs) wie zum Beispiel statische Direktzugriffsspeicher (Static Random Access Memories, SRAMs), löschbare programmierbare Direktzugriffsspeicher (Erasable Programmable Read-Only Memories, EPROMs), elektrisch löschbare programmierbare Direktzugriffsspeicher (Electrically Erasable Programmable Read-Only Memories, EEPROMs), magnetische oder optische Karten, oder jede beliebige andere Medienart, die geeignet ist elektronische Befehle zu speichern.
-
Folglich können einige Ausführungsformen der Offenbarung auch nichtflüchtige, konkrete maschinenlesbare Medien umfassen, die Befehle enthalten oder die Gestaltungsdaten wie zum Beispiel eine Hardwarebeschreibungssprache (Hardware Description Language, HDL) enthalten, welche die hier beschriebenen Strukturen, Schaltkreise, Vorrichtungen, Prozessoren und/oder Systemmerkmale definiert. Auf diese Ausführungsformen kann auch als Programmprodukte Bezug genommen werden.
-
In einigen Fällen kann ein Befehlswandler verwendet werden, um einen Befehl aus einem Quellbefehlssatz in einen Zielbefehlssatz zu verwandeln. Der Befehlswandler kann zum Beispiel einen Befehl in einen oder mehrere andere Befehle, die von einem Kern verarbeitet werden, übersetzen (z. B. mithilfe einer statischen binären Übersetzung, einer dynamischen binären Übersetzung einschließlich einer dynamischen Kompilierung), umwandeln, nachbilden oder auf andere Weise verwandeln. Der Befehlswandler kann als Software, Hardware, Firmware oder einer Kombination davon umgesetzt werden. Der Befehlswandler kann ein On-line-Prozessor, ein Off-line-Prozessor oder ein teilweise On-line- und teilweise Off-line-Prozessor sein.
-
Somit werden Techniken für das Ausführen eines oder mehrerer Befehle gemäß mindestens einer Ausführungsform offenbart. Obwohl bestimmte beispielhafte Ausführungsformen beschrieben und in den begleitenden Zeichnungen gezeigt wurden, ist es selbstverständlich, dass diese Ausführungsformen rein anschaulich sind und keine Beschränkung für andere Ausführungsformen darstellen, und dass diese Ausführungsformen nicht auf spezifische gezeigte und beschriebene Bauweisen und Anordnungen beschränkt sind, da dem Fachmann nach dem Studium dieser Offenbarung zahlreiche weitere Veränderungen offensichtlich sein werden. In einem Technologiefeld, wie dem vorliegenden, in dem das Wachstum sehr schnell abläuft und weitere Fortschritte nicht einfach vorherzusehen sind, können die Anordnungen und Einzelheiten der offenbarten Ausführungsformen einfach veränderbar sein, was durch die ermöglichten technologischen Fortschritte erleichtert wird, ohne von den Prinzipien der vorliegenden Offenbarung oder dem Umfang der beigefügten Ansprüche abzuweichen.