DE112006003298T5 - Durchführen einer auf einen Befehl auf Benutzerebene reagierenden zyklischen Redundanz-Prüfsummenoperation - Google Patents

Durchführen einer auf einen Befehl auf Benutzerebene reagierenden zyklischen Redundanz-Prüfsummenoperation Download PDF

Info

Publication number
DE112006003298T5
DE112006003298T5 DE112006003298T DE112006003298T DE112006003298T5 DE 112006003298 T5 DE112006003298 T5 DE 112006003298T5 DE 112006003298 T DE112006003298 T DE 112006003298T DE 112006003298 T DE112006003298 T DE 112006003298T DE 112006003298 T5 DE112006003298 T5 DE 112006003298T5
Authority
DE
Germany
Prior art keywords
register
processor
data
crc
xor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112006003298T
Other languages
English (en)
Other versions
DE112006003298B4 (de
Inventor
Steven R. Portland King
Frank Cornelius Berry
Michael E. Hillsboro Kounavis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112006003298T5 publication Critical patent/DE112006003298T5/de
Application granted granted Critical
Publication of DE112006003298B4 publication Critical patent/DE112006003298B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/093CRC update after modification of the information word
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/095Error detection codes other than CRC and single parity bit codes
    • H03M13/096Checksums
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/157Polynomial evaluation, i.e. determination of a polynomial sum at a given value

Abstract

Verfahren, umfassend:
Empfangen ankommender Daten in einem Prozessor,
und
Durchführen einer Prüfsummenoperation an den ankommenden Daten in dem Prozessor als Reaktion auf einem Befehl auf Benutzerebene für die Prüfsummenoperation.

Description

  • Hintergrund
  • Die erfindungsgemäßen Ausführungformen beziehen sich auf die Datenverarbeitung und insbesondere auf die Bestimmung von Prüfsummen wie z. B. zyklische Redundanzprüfungen (Cyclic redundancy checks (CRC)).
  • Bei Datenverarbeitungssystemen ist erwünscht, dass die zwischen einer ersten und einer zweiten Stelle übertragenen Daten korrekt empfangen werden, damit die zusätzliche Verarbeitung der Daten auch an der zweiten Stelle korrekt durchgeführt werden kann. Zur Fehlererkennung in der Datenübertragung wird darüber hinaus häufig ein Datenpaket zusammen mit einer Prüfsumme übertragen. Zum Beispiel kann eine CRC-Summe durch eine Sendequelle erzeugt und an die zu übertragenden Daten angehängt werden. Diese Prüfsumme, die entsprechend einer von vielen verschiedenen Algorithmen berechnet werden kann, kann dann mit einer ähnlichen Prüfsumme, die an der Empfangsstelle aus den angekommenen Daten berechnet wird, verglichen werden. Falls die beiden Prüfsummen identisch sind, sind die übertragenen Daten korrekt. Wenn sich jedoch die erzeuge Prüfsumme von der übertragenen Prüfsumme unterscheidet, wird ein Fehler angezeigt. Derartige Prüfsummen kommen in allen Netzwerktechnologien zur Erkennung von Übertragungsfehlern zur Anwendung.
  • Bei verschiedenen Anwendungen gibt es für CRC-Informationen unterschiedliche Implementierungsarten. Die CRC-Berechnungen können zum Beispiel in Hardware oder in Software realisiert werden. Zur Durchführung einer CRC-Berechnung in Hardware ist typischerweise zum Ausführen der CRC-Berechnung in einem System eine dedizierte Hardwaremaschine vorgesehen. Dementsprechend werden Daten, an denen diese CRC- Berechnung vorzunehmen ist, an die Hardwaremaschine zur Berechnung der Prüfsumme, die dann an die Daten, z. B. zur Übertragung durch das System angehängt wird, gesandt. Die Benutzung einer derartigen Offload-Maschine bringt verschiedene Nachteile einschließlich des Overheads der Datensendung an die Maschine mit sich. Weiters ist es schwierig, ein zustandsloses Hardware-Offload durchzuführen. Das heißt, typischerweise sind auch zusätzliche zustandsbasierte Overhead-Daten zu übertragen, wodurch die Komplexität erhöht und der nutzbringende Arbeitsverlauf verlangsamt werden.
  • Da viele Systeme keine derartige Offload-Maschine aufweisen, werden CRC-Berechnungen häufig in Software durchgeführt. Zur Implementierung von CRC-Berechnungen in Software werden typischerweise Verweistabellenschemen angewandt. Derartige Software-Berechnungen von CRC-Werten sind jedoch bekanntlich langsame, rechenintensive Operationen. Darüber hinaus kann die Speicherfläche der Verweistabelle groß sein und sich dadurch auf die Leistung auswirken. Folglich können diese langsamen Berechnungen die Netzwerkleistung beeinträchtigen und weitere Verarbeitungsressourcen verbrauchen. So sind beispielsweise 5 bis 15 Zyklen erforderlich, um eine CRC-Berechnung pro Datenbyte auszuführen. Daraus ergibt sich eine zu niedrige CRC-Leistung der Software für eine allgemeine Anwendung in schnellen Netzwerken.
  • Kurzbeschreibung der Zeichnungen
  • 1 zeigt ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 zeigt ein Blockschaltbild eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3 zeigt ein Blockschaltbild von einem Teil eines Prozessors zur Durchführung einer Prüfsummenoperation gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 4 zeigt ein Blockschaltbild von einem anderen Teil eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 5 zeigt ein Blockschaltbild eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Ausführliche Beschreibung
  • In verschiedenen Ausführungsformen können Prüfsummenoperation durch Anwendung einer Erweiterung der Befehlssatzarchitektur (ISA) zur Berechnung der Prüfsummenwerte durchgeführt werden. Insbesondere kann ein Befehl auf Benutzerebene innerhalb einer ISA vorgesehen werden, um einem Programmierer die unmittelbare Ausführung einer erwünschten Prüfsummenoperation, wie z. B. einer CRC-Operation in einem Universalprozessor (z. B. einer Zentraleinheit (CPU)) über den Befehl zu ermöglichen. Bei der CRC-Operation kann es sich um eine 32-Bit-CRC-Operation (d. h. eine CRC32-Operation, die einen im Folgenden besprochenen 32-Bit aktiven Rest erzeugt) handeln; sie kann in verschiedenen Ausführungsformen z. B. der in einem Ethernet 802.3-Ethernet-Protokoll (herausgegeben im Jahr 2002) des Institute of Electrical and Electronics Engineers (IEEE) oder in anderen Protokollen angewandten CRC entsprechen.
  • In verschiedenen Implementierungen können unterschiedliche Operationscodebefehle zur Durchführung von CRC-Berechnungen an verschiedenen Datengruppen vorgesehen sein. Zum Beispiel können in bestimmten Ausführungsformen die CRC-Berechnungen auf Gruppen von 8, 16, 32 und 64 Bits unter Anwendung verschiedener Operationscodes gestützt sein, obschon der Schutzbereich der vorliegenden Erfindung nicht darauf begrenzt ist. So können CRC-Berechnungen schnell in Hardware durchgeführt werden, ohne dass es Verweistabellen oder dergleichen bedarf. Auch sind die Berechnungen unter Anwendung von generischen, architektonisch sichtbaren Prozessorregistern durch ganzzahlige Operationen durchführbar, die nach verschiedenen Operationscodes ausgeführt werden. Daraus ergibt sich, dass CRCs in einem Prozessor ohne das Erfordernis des Overheads und der Komplexität von Offload-Hardware wie z. B. Netzwerkoffload-Hardware berechnet werden können. Daher ist eine größere Anzahl an Datenübertragungen (z. B. was die Eingaben/Ausgaben (E/A) pro Sekunde betrifft) möglich. Dabei ist zu beachten, dass die Ausführungsformen der vorliegenden Erfindung hier zwar hauptsächlich im Zusammenhang mit CRC-Operationen beschrieben werden, jedoch auch auf die Ausführung anderer Prüfsummenoperation anwendbar sind.
  • Mit Bezug nun auf die 1 wird darin ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das Verfahren 100 kann dazu benutzt werden, eine Prüfsumme mittels eines auf der Prozessor-Hardware, z. B. auf einem Ausführungsbauteil einer Zentraleinheit (CPU), durchgeführten Benutzerbefehls zu ermitteln. Wie in der 1 dargestellt, kann das Verfahren 100 damit beginnen, eine Reihe von Exklusiv-ODER (XOR)-Operationen an Daten in Quell- oder Zielregistern (Block 110) auszuführen. Es ist zu beachten, dass die XOR-Operationen einer polynomischen arithmetischen Operation und insbesondere einer polynomischen Teilung entsprechen können. Die Daten im Quellregister können z. B. den in einer Prozessorpipeline vorhandenen Daten, die vom Prozessor empfangen wurden oder davon zu übertragen sind, entsprechen. Beispielsweise kann eine Datengruppe in einem Puffer, die einer erwünschten Gruppengröße (z. B. 16 Bit, 32 Bit oder dergleichen) entsprechen, dem Quellregister, das ein Universalregister des Prozessors sein kann, zur Verfügung gestellt werden. Als Alternative sind in bestimmten Ausführungsformen die Quelldaten von einem Speicher erhältlich. Das Zielregister kann einer Speicherstelle für einen durch die XOR-Operationen ermittelten aktiven Rest entsprechen. Das Zielregister kann auch ein Universalregister des Prozessors sein.
  • Bei unterschiedlichen Ausführungsformen können die XOR-Operationen mittels dedizierter Hardware in einer Prozessorpipeline ausgeführt werden. Es kann zum Beispiel ein Ausführungsbauteil eines Prozessors, etwa ein ganzzahliges Ausführungsbauteil, durch Schaltungsbauteile erweitert werden, um eine Reihe von XOR-Operationen auszuführen. Beispielsweise können diese Schaltungsbauteile bzw. kann diese Schaltung einem XOR-Baum zur Bearbeitung einer polynomischen Teilung durch ein erwünschtes Polynom entsprechen. Bei verschiedenen Ausführungsformen kann ein Polynom zur Anwendung in den XOR-Operationen mit den logischen Gattern des XOR-Baums fest verdrahtet sein. Darüber hinaus kann der XOR-Baum zur Implementierung der erwünschten Vorverarbeitung und Nachverarbeitung über die XOR-Operationen, z. B. Bitreflexionen und dergleichen, konfiguriert werden. Auch kann die XOR-Baumlogik mehrfache Partitionen umfassen, die jeweils zur Bearbeitung von Operationen an verschiedenen Datengrößen konfiguriert sind.
  • Weiterhin in Bezug auf die 1 kann dann ein Resultat, das einem sich aus den XOR-Operationen ergebenden aktiven Rest entspricht, in einem Zielregister (Block 120) gespeichert werden. Es ist zu beachten, dass das Zielregister nach Initialisierung eines Systems auf einen vorbestimmten Wert, beispielsweise nur Einsen, Nullen oder auf einen anderen derartigen Wert, eingestellt werden kann. Bei der Ausführung von Prüfsummenoperationen wird dieser aktive Rest mit dem Ergebnis der laufenden Prüfsummenoperation ständig aktualisiert. Im Besonderen kann der Rest, der durch die laufende Prüfsummenoperation implementierten polynomischen Teilung im Zielregister gespeichert werden.
  • Danach kann bestimmt werden, ob zusätzliche Quelldaten vorhanden sind (Raute 130). In bestimmten Ausführungsformen kann zum Beispiel ein Puffer Daten enthalten, die von einem System empfangen wurden und deren Prüfsumme nachzuweisen ist. Die Daten können segmentweise in das Quellregister zur Durchführung der Prüfsummenoperation eingespeist werden. Dementsprechend kann in der Raute 130 bestimmt werden, ob sich zusätzliche Quelldaten in diesem Puffer befinden. Wenn dies der Fall ist, kann das nächste Datensegment an das Quellregister geliefert werden, und die Steuerung geht zum oben behandelten Block 110 zurück.
  • Wenn dagegen bei der Raute 130 bestimmt wird, dass keine zusätzlichen Quelldaten vorhanden sind, geht die Steuerung zum Block 140 weiter. Dort ist dann das Resultat der Prüfsummenoperation als der im Zielregister (Block 140) gespeicherte aktuelle Wert (z. B. aktiver Rest) lieferbar. Wie oben diskutiert, kann dieser Prüfsummenwert auf viele verschiedene Weisen gebraucht werden. Beispielsweise kann im Fall von eingegangenen Daten die berechnete Prüfsumme mit einer eingegangenen Prüfsumme verglichen werden, um den korrekten Empfang der Daten zu bestätigen. Bei einer Übertragung kann die Prüfsumme an die zu übertragenden Daten angehängt werden, so dass die Daten auf einer Empfangsseite nachgeprüft werden können. Natürlich können auch andere Anwendungen von Prüfsummen vorkommen, wie z. B. für Hash-Funktionen oder die Erzeugung von Nummern gemäß eines pseudo-zufälligen Nummerierungsschemas.
  • Ein Prozessor zur Durchführung von Prüfsummenoperationen nach einer erfindungsgemäßen Ausführung kann je nach der erwünschten Architektur viele verschiedene Formen annehmen. Auf die 2 verweisend, wird dort ein Blockschaltbild eines Prozessors gemäß einer Ausführung der vorliegenden Erfindung gezeigt. Wie in der 2 dargestellt, umfasst der Prozessor 200 einen Datenweg 205. Der Datenweg 205 kann durch Vorsteuerstufen gesteuert sein, die eine zum Empfang dekodierter Befehle von einem Front-End des Prozessors (nicht in der 2 gezeigt) befähigte Registerpseudonymtabelle (Register alias table (RAT)) 270 umfassen kann. Die RAT 270 kann zum Empfang von Mikrooperationen (μops) vom Front-End und zur Umbenennung der Mikrooperationen für die Ressourcen des Datenwegs eingesetzt werden. Die umbenannten Mikrooperationen können dann auf dem Datenweg 205 an einen Neuordnungspuffer (Reorder buffer (ROB)) 250 geliefert werden. Der ROB 250 kann als eine Registerdatei fungieren, um Mikrooperationen und die entsprechenden Quelloperanden zu speichern, bis die Mikrooperation für die Weitergabe an eine Reservation-Station (RS) 230 bereit ist. Ähnlich kann der ROB 250 auch die entsprechenden Resultate von schon ausgeführten Mikrooperationen speichern. Diese Ergebnisse können im ROB 250 zurückbehalten werden, bis die Mikrooperationen zurückgezogen sind (zu diesem Zeitpunkt wird die ROB-Eintrittsstelle frei).
  • Die Reservation-Station 230 kann zum Speichern der Mikrooperationen benutzt werden, bis deren entsprechende Quelloperanden vorhanden sind und/oder bis die Mikrooperation zur Ausführung in einer Mehrzahl von Ausführungsbauteilen des Datenwegs 205 bereit ist. Die Reservation-Station 230 kann eine Mehrzahl an Abfertigungsanschlüssen umfassen, um Befehle und Daten mit bestimmten Ausführungsbauteilen des Datenwegs 205 zu koppeln. Bei bestimmten Ausführungsformen können in jedem Zyklus vielfache Abfertigungsanschlüsse eingesetzt werden.
  • Wie in 2 dargestellt, umfassen die Ausführungsbauteile im Datenweg 205 ein Adressgenerationsbauteil (Address generation unit (AGU)) 220, ein Integer (INT)-Ausführungsbauteil 222, ein Speicherdaten (STD)-Bauteil 224, ein Gleitkomma (FP)-Ausführungsbauteil 226 und ein Einzelbefehl-Mehrfachdaten (SIMD)-Ausführungsbauteil 228. Wie die 2 zeigt, umfasst das Integer-Ausführungsbauteil 222 weiterhin Logik 221. Die Logik 221 kann zur Durchführung von Prüfsummenoperationen entsprechend einer erfindungsgemäßen Ausführungsform eine oder mehrere Hardwaremaschinen umfassen. Insbesondere kann die Logik 221 zur Durchführung polynomischer arithmetischer und ähnlicher Datenbehandlungen eine Vielzahl von Exklusiv-ODER (XOR)-Logikbäumen umfassen. Bei verschiedenen Ausführungsformen kann die Logik 221 unterschiedliche Hardwaremaschinen umfassen, um CRC-Operationen an Datensegmenten verschiedener Größe vorzunehmen. Beispielsweise kann eine Vielfalt von Befehlen auf Benutzerebene einer ISA jeweils eine CRC-Operation für eine gewisse Datengröße bestimmen. Bei einigen Ausführungsformen kann die Logik 221 zur Durchführung dieser verschiedenen CRC-Operationen eine entsprechende Anzahl getrennter Hardwaremaschinen, die hier auch XOR-Bäume genannt werden, umfassen.
  • Obschon nicht in der 2 gezeigt, können in verschiedenen Ausführungsformen zusätzliche oder verschiedene Ausführungsbauteile vorhanden sein. Nach der Ausführung einer Mikrooperation in einem der Ausführungsbauteile können die Ergebnisdaten an die RS 230 und den ROB 250 zum Speichern, beispielsweise bis zur Zurückziehung, zurückgegeben werden. Daher können sich in einer Ausführungsform die Quell- und Datenregister zur Durchführung einer CRC-Operation in der RS 230 oder im ROB 250 befinden. Obschon nicht in der 2 dargestellt, ist vorauszusetzen, dass zusätzliche Puffer, wie beispielsweise ein Speicherbefehlspuffer (MOB) und weitere Ressourcen im Prozessor 200 vorhanden sein können.
  • Des Weiteren ist vorauszusetzen, dass die Darstellung in der 2 zur Erleichterung der Diskussion bestimmt ist und in unterschiedlichen Ausführungsformen viel mehr Stufen oder unterschiedlich benannte Stufen in einem bestimmten Prozessor vorhanden sein können. Beispielweise kann zum Empfang von Ergebnis für die spätere Lieferung an eine Speicherhierarchie eine Write-Back-Stufe an die Ausführungsbauteile gekoppelt sein. Als Alternative kann bzw. können an die RS 230 ein bzw. mehrere weitere Puffer wie z. B. Speicherpuffer, Ladepuffer und dergleichen gekoppelt sein. Ein Beispiel davon ist die Kopplungsmöglichkeit eines oder mehrer Zurückziehungspuffer an die RS 230 zwecks Speicherung von Mikrooperationen und der damit verbundene Ergebnisdaten bis zur Zurückziehung des zugehörigen Befehls.
  • Es gibt natürlich auch andere Umsetzungsmöglichkeiten. Auf die 3 Bezug nehmend, wird dort ein Blockschaltbild von einem Teil eines Prozessors zur Durchführung einer Prüfsummenoperation gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie aus der 3 zu ersehen ist, wird ein Teil eines Prozessors 300 gezeigt. Insbesondere umfasst der Prozessor 300 einen XOR-Baum 310, ein erstes Register 320 und ein zweites Register 330, von denen alle ein Teil einer Prozessorpipeline sein können. Der XOR-Baum 310 kann in verschiedenen Ausführungsformen unterschiedlich konfiguriert sein. Der XOR-Baum 310 kann zum Beispiel mittels einer Vielzahl von Dreieingangs-XOR-Gattern auf einem ersten Niveau, deren Ausgänge an ähnliche XOR-Gatter auf einem zweiten Niveau u. s. w. gekoppelt sind, implementiert werden. Bei einer derartigen Ausführungsform kann jedes Niveau des XOR-Baums ein Drittel so groß wie das vorhergehende Niveau sein. Es sind natürlich auch andere Konfigurationen möglich.
  • Wie in der 3 weiter gezeigt wird, weist der Prozessor 300 einen Puffer 340 auf, der auch in der Prozessorpipeline sein kann (z. B. als ein Puffer, eine Warteschlange oder dergleichen). Als Alternative kann der Puffer 340 ein zum Prozessor 300 gehörender Cache-Speicher sein. In der Ausführungsform der 3 kann das erste Register 320 einem Quellregister entsprechen, während das zweite Register 330 ein Zielregister sein kann. In verschiedenen Ausführungsformen können diese Register Universalregister im Innern des Prozessors 300 sein. Der Prozessor 300 kann natürlich viele andere Register, eine Logik, Funktionseinheiten und dergleichen beinhalten, und der in der 3 gezeigte Abschnitt dient zur Erleichterung der Darstellung.
  • Wie in der 3 gezeigt, wird zur Durchführung einer Prüfsumme nach einer erfindungsgemäßen Ausführungsform mindestens ein erster Abschnitt des ersten Registers 320 zusammen mit einem Abschnitt des zweiten Registers 330 dem XOR-Baum 310 zur Verfügung gestellt. Bei der in der 3 gezeigten Ausführungsform, welche eine 8-Bit-CRC-Aufsummierung darstellt, wird dem XOR-Baum 310 vom ersten Register 320 ein einzelnes Datenbyte (B0) geliefert, während ein 4-Byte-Abschnitt des zweiten Registers 330 an den XOR-Baum 310 geliefert wird. Dieser 4-Byte-Abschnitt des zweiten Registers 330 kann dem aktiven Rest einer CRC32-Operation entsprechen. Mit diesen Daten kann der XOR-Baum 310 über XOR-Operationen Datenbehandlungen durchführen, um ein einen Restabschnitt beinhaltendes Resultat zu erzeugen. Dieser Restabschnitt kann, wie in 3 gezeigt, der im zweiten Register 330 wieder gespeicherte aktive Rest sein. So können CRC-Operationen effizient in minimaler Zykluszeit und unter Einsatz minimaler Prozessorressourcen durchgeführt werden. In der Ausführungsform der 3 können für 8-Bit-Aufsummierungen dem XOR-Baum 310 zusätzliche Abschnitte des ersten Registers 320 zusammen mit dem aktuellen Inhalt des zweiten Registers (330) (d. h. der 32-Bit aktive Rest) schrittweise geliefert werden. Folglich können zur Ermittlung einer CRC-Prüfsumme an 64 Bits Daten im ersten Register 320 acht Iterationen der XOR-Operationen im XOR-Baum 310 durchgeführt werden, wobei jede ein einziges Datenbyte vom ersten Register 320 zusammen mit dem aktuellen aktiven Rest im zweiten Register 330 nimmt. Falls sich im Puffer 340 zusätzliche durch eine Prüfsumme nachzuprüfende Daten befinden, können die zusätzlichen Daten in das erste Register 320 zur darauffolgenden Verarbeitung im XOR-Baum 310 geladen werden.
  • Es ist zu beachten, dass zur Handhabung von CRC-Berechnungen verschiedener Bitbreiten eine unterschiedliche Hardware vorhanden sein kann. Folglich kann unter weiterem Verweis auf die 2 die Logik 221 andere XOR-Baumstrukturen zur Handhabung dieser CRC-Berechnungen umfassen. Mit Bezug nun auf die 4 wird ein Blockschaltbild von einem anderen Abschnitt eines Prozessors entsprechend einer erfindungsgemäßen Ausführungsform gezeigt. Wie die 4 zeigt, umfasst der Prozessor 300 einen anderen zum Datenempfang vom ersten und zweiten Register 320 bzw. 330 gekoppelten XOR-Baum 410 (z. B. zusätzlich zum XOR-Baum 310 der 3). Wie die 4 weiterhin zeigt, ist der Puffer 340 vorhanden und kann zur Datenlieferung für die CRC-Rechnungen benutzt werden. Zu bemerken ist, dass bei der Ausführungsform der 4 der XOR-Baum 410 für die Handhabung einer 64-Bit-CRC-Aufsummierung konfiguriert ist. Dementsprechend kann der gesamte Inhalt des ersten Registers 320 (d. h. die Bytes B0–B7) zu einem Zeitpunkt an den XOR-Baum 410 zum Bearbeiten in XOR-Operationen mit Daten im zweiten Register 330 gekoppelt sein. Die Ergebnisdaten, deren erwünschter Teil einem aktiven Rest entspricht, werden erneut im zweiten Register 330 gespeichert. Obschon die vorliegende Erfindung mit diesen speziellen Implementierungen in den 3 und 4 beschrieben wird, ist ihr Schutzbereich nicht darauf beschränkt, und in anderen Ausführungsformen können unterschiedliche Hardwarekonfigurationen zur Durchführung von CRC-Operationen vorhanden sein.
  • Mit Bezug nun auf die folgende Tabelle 1 wird eine Auflistung von Befehlsbeispielen einer Befehlssatzarchitektur (ISA) zum Stützen von CRC-Operationen entsprechend verschiedener erfindungsgemäßer Ausführungsformen gezeigt. Wie aus der Tabelle 1 zu ersehen ist, wird jeder Befehl, der mit einem Verweis auf einen Operationscode versehen sein kann, zur Durchführung einer CRC32-Operation unter Einsatz eines Quellregisters und eines Zielregisters benutzt. Wie gezeigt, sind unterschiedliche Varianten möglich, wobei jeder Befehl zum Durchführen der CRC-Operation an einer bestimmten Größe des Zieloperanden und des Quelloperanden dient. Somit wird Bezug nehmend auf die erste Zeile der Tabelle 1 dieser Befehl zum Durchführen einer CRC32-Operation an einem 8-Bit-Quelloperanden und einem 32-Bit-Zieloperanden benutzt. Ähnlich wird die zweite Zeile der Tabelle 1 benutzt, um eine CRC32-Operation an einem 16-Bit-Quelloperanden und einem 32-Bit-Zieloperanden durchzuführen. Ähnlicherweise zeigt die dritte Zeile der Tabelle 1 einen Befehl zur Durchführung einer CRC32-Operation an einem 32-Bit-Quelloperanden und einem 32-Bit-Zieloperanden.
  • Da diese ersten drei Befehle mit maximalen Datensegmenten von 32 Bits durchgeführt werden, ist zu bemerken, dass die Befehle in einer 64-Bit-Betriebsart sowie in einer Altbetriebsart (legacy mode) (d. h. 32-Bit) gültig sind. Dagegen bezeichnen die vierte und fünfte Zeile der Tabelle 1 CRC-Operationen, die an 8-Bit und 64-Bit-Quelloperanden bzw. mit einem 64-Bit-Zieloperanden durchzuführen sind. Daher können diese beiden letzen Befehle nur in einer 64-Bit-Betriebsart durchgeführt werden. Tabelle 1
    Operationscode Befehl Beschreibung
    Code 2 CRC32 r32, r/m8 CRC32 an r/m8 aufsummieren
    Code 1 CRC32 r32, r/m16 CRC32 an r/m16 aufsummieren
    Code 1 CRC32 r32, r/m32 CRC32 an r/m32 aufsummieren
    Code 2 CRC32 r64, r/m8 CRC32 an r/m8 aufsummieren
    Code 1 CRC32 r64, r/m64 CRC32 an r/m64 aufsummieren
  • Bei verschiedenen Ausführungsformen können diese Befehle auf Benutzerebene durch einen Programmierer z. B. als Intrinsics zur Implementierung einer CRC-Operation gemäß dem Flussdiagramm der 1 zum Beispiel angewandt werden.
  • Allgemein kann ein CRC-Befehl auf Benutzerebene folgendermaßen umgesetzt werden. Mit einem Anfangswert in einem ersten Operanden (d. h. einem Zieloperanden), kann ein CRC32-Wert für einen zweiten Operanden (d. h. einen Quelloperanden) aufsummiert und das Ergebnis erneut im Zieloperanden gespeichert werden. Bei unterschiedlichen Implementierungen kann der Quelloperand ein Register oder eine Speicherstelle sein. Der Zieloperand kann ein 32- oder 64-Bit-Register sein. Falls das Ziel ein 64-Bit-Register ist, kann das 32-Bit-Resultat im niedrigstwertigen Doppelwort und 00000000H im höchstwertigen Doppelwort des Registers gespeichert werden.
  • Zu beachten ist, dass der im Zieloperanden gelieferte Ausgangswert eine in einem 32-Bit-Register gespeicherte Doppelwortganzzahl oder das niedrigstwertige Doppelwort eines 64-Bit-Registers sein kann. Um einen CRC32-Wert schrittweise aufzusummieren behält die Software das Resultat der vorhergehenden CRC-Operation im Zieloperanden zurück und führt dann die CRC-Operation erneut mit neuen Eingabedaten im Quelloperanden aus. Folglich nimmt jeder Befehl einen laufenden CRC-Wert im ersten Operanden und aktualisiert den CRC-Wert auf Grundlage des zweiten Operanden. So kann eine CRC über jede erwünschte Datenmenge durch Ausführen der Operation in einer Schleife erzeugt werden, bis alle erwünschten Daten der CRC-Operation unterzogen sind.
  • Bei bestimmten Ausführungsformen werden die im Quelloperanden befindlichen Daten in reflektierter Bitreihenfolge verarbeitet. Das bedeutet, dass das höchstwertige Bit des Quelloperanden als das niedrigstwertige Bit des Quotienten, und so weiter, für alle Bits des Quelloperanden behandelt wird. Gleichermaßen kann das Resultat der CRC-Operation im Zielregister in reflektierter Bitreihenfolge gespeichert werden. Das bedeutet, dass das höchstwertige Bit der sich ergebenden CRC (d. h. Bit 31) im niederstwertigen Bit des Zielregisters (Bit 0) gespeichert wird, und so weiter für alle Bits der CRC.
  • Während verschiedene Implementierungsarten dieser Benutzerbefehle ausführbar sind, zeigen die folgenden Tabellen 2–6 Beispiele von Pseudocode-Darstellungen einer Hardware-Implementierung für einen jeden der Befehle auf Benutzerebene der Tabelle 1. Tabelle 2
    CRC32-Befehl für 64-BIT-Quelloperand und 64-Bit-Zieloperand
    TEMP1[63-0] ← BIT_REFLECT64 (SRC[63-0])
    TEMP2[31-0] ← BIT_REFLECT32 DEST[31-0])
    TEMP3[95-0] ← TEMP1[63-0]<<32
    TEMP4[95-0] ← TEMP2[31-0]<<64
    TEMP5[95-0] ← TEMP3[95-0]XOR TEMP4[95-0]
    TEMP6[31-0] ← TEMP5[95-0]MOD2 11EDC6F41H
    DEST[31-0] ← BIT_REFLECT (TEMP6[31-0])
    DEST[63-32] ← 00000000H
    Tabelle 3
    CRC32-Befehl für 32-BIT-Quelloperand und 32-Bit-Zieloperand
    TEMP1[31-0] ← BIT_REFLECT32 (SRC[31-0])
    TEMP2[31-0] ← BIT_REFLECT32 DEST[31-0])
    TEMP3[63-0] ← TEMP1[31-0]<<32
    TEMP4[63-0] ← TEMP2[31-0]<<32
    TEMP5[63-0] ← TEMP3[63-0]XOR TEMP4[63-0]
    TEMP6[31-0] ← TEMP5[63-0]MOD2 11EDC6F41H
    DEST[31-0] ← BIT_REFLECT (TEMP6[31-0])
    Tabelle 4
    CRC32-Befehl für 16-BIT-Quelloperand und 32-Bit-Zieloperand
    TEMP1[15-0] ← BIT_REFLECT16(SRC[15-0])
    TEMP2[31-0] ← BIT_REFLECT32 DEST[31-0])
    TEMP3[47-0] ← TEMP1[15-0]<<32
    TEMP4[47-0] ← TEMP2[31-0]<<16
    TEMP5[47-0] ← TEMP3[47-0]XOR TEMP4[47-0]
    TEMP6[31-0] ← TEMP5[47-0]MOD2 11EDC6F41H
    DEST[31-0] ← BIT_REFLECT (TEMP6[31-0])
    Tabelle 5
    CRC32-Befehl für 8-BIT-Quelloperand und 64-Bit-Zieloperand
    TEMP1[7-0] ← BIT_REFLECT8 (SRC[7-0])
    TEMP2[31-0] ← BIT_REFLECT32 (DEST[31-0])
    TEMP3[39-0] ← TEMP1[7-0]<<32
    TEMP4[39-0] ← TEMP2[31-0]<<8
    TEMP5[39-0] ← TEMP3[39-0]XOR TEMP4[39-0]
    TEMP6[31-0] ← TEMP5[39-0]MOD2 11EDC6F41H
    DEST[31-0] ← BIT_REFLECT (TEMP6[31-0])
    DEST[63-32] ← 00000000H
    Tabelle 6
    CRC32-Befehl für 8-BIT-Quelloperand und 32-Bit-Zieloperand
    TEMP1[7-0] ← BIT_REFLECT8 (SRC[7-0])
    TEMP2[31-0] ← BIT_REFLECT32 (DEST[31-0])
    TEMP3[39-0] ← TEMP1[7-0]<<32
    TEMP4[39-0] ← TEMP2[31-0]<<8
    TEMP5[39-0] ← TEMP3[39-0]XOR TEMP4[39-0]
    TEMP6[31-0] ← TEMP5[39-0]MOD2 11EDC6F41H
    DEST[31-0] BIT_REFLECT (TEMP6[31-0])
  • Es ist zu beachten, dass die allgemeine Struktur dieser Pseudocode-Stücke die gleiche ist. Zuerst werden die Daten in einem Quellregister bitreflektiert (d. h. dass deren Bits in umgekehrter Bitreihenfolge in ein Temporärregister gegeben werden). Das Zielregister ist ähnlich bitreflektiert. Dann können Verschiebungen und insbesondere Linksschiebungen (shift left) an den bitreflektierten Quell- und Datenoperanden vorgenommen werden. Die sich ergebenden Werte können sodann einer XOR-Operation unterzogen werden. Diese Operation kann einer polynomischen Teilung durch einen gewählten Polynomwert entsprechen. Obschon dieser Wert viele verschiedene Formen in anderen Ausführungen, insbesondere Implementierungen zur Durchführung von CRC32-Operationen, annehmen kann, kann das Polynom 11EDC6F41H entsprechen, obschon der Schutzbereich dieser Erfindung nicht darauf beschränkt ist. Der Rest dieser polynomischen Teilung (d. h. der Rest aus diesem Divisionsmodul 2) wird erneut in den niedrigstwertigen Bits des Zieloperanden in einer bitreflektierten Reihenfolge (z. B. Bits 0–31 von einem 32-Bit- oder 64-Bitregister) gespeichert. Im Fall eines 64-Bit-Registers können die höchstwertigen Bits (MSBs) mit Nullen geladen werden. Es ist davon auszugehen, dass, obschon mit dieser spezifischen Implementierung in Bezug auf die Tabellen 2–6 dargelegt, es auch andere Möglichkeiten gibt, einen CRC-Befehl auf Benutzerebene vorzusehen.
  • Mit der Durchführung gemäß Befehl auf Benutzerebene von CRC-Operationen direkt in einer Prozessorpipeline erübrigt sich die Übersendung von Daten an eine Offload-Maschine. Ähnlich kann die Operation ohne die Vorgabe eines Zustands durchgeführt und somit das Overhead reduziert werden. So kann bei Implementierung in einem Dreizyklusweg eine CRC-Operation in weniger als etwa 0,4 Zyklen pro Byte durchgeführt werden. Dementsprechend ist die Leistung unter Verwendung von Benutzerbefehlen zusammen mit dedizierter Hardware in einer Prozessorpipeline optimierbar. Darüber hinaus kann die Dreizyklus-Wartezeit durch ein Minimum an Flächenbedarf und Energieverbrauch erreicht werden. Die Ausführungsformen der vorliegenden Erfindung können dazu genutzt werden, die Verarbeitung verschiedener Speicherprotokolle, beispielsweise eines Internet Small Computer System Interface (iSCSI)-Protokolls (Protokoll für Internet-Kleinrechner-Systemschnittstellen), bei Geschwindigkeiten von mehr als 10 Gigabits pro Sekunde zu ermöglichen. Weiterhin ermöglichen die Ausführungsformen der vorliegenden Erfindung die Anwendung im Prozessor vorhandener oder eng daran gekoppelter Daten, wodurch der Bedarf an On-Cache-Daten auf Cache verringert wird. So können Daten in einem Prozessorpuffer einem XOR-Baum zugeführt werden, um schnelle, unmittelbare (on-the-fly (OTF)) CRC-Berechnungen zu ermöglichen.
  • Die Ausführungsformen können in vielen verschiedenen Systemtypen implementiert werden. Mit Bezug auf die 5 wird dort ein Blockschaltbild eines Multiprozessorsystems entsprechend einer erfindungsgemäßen Ausführungsform gezeigt. Wie die 5 zeigt, handelt es sich bei dem Multiprozessorsystem um ein Punkt-zu-Punkt-Verbindungssystem, das einen ersten Prozessor 470 und einen mit einer Punkt-zu-Punkt-Verbindung 450 gekoppelten zweiten Prozessor 480 umfasst. Wie die 5 zeigt, kann jeder der beiden Prozessoren 470 und 480 ein Mehrkernprozessor mit ersten und zweiten Prozessorkernen (d. h. Prozessorkerne 474a und 474b und Prozessorkerne 484a und 484b) sein. Obschon sie zwecks Vereinfachung der Darstellung nicht gezeigt werden, können entsprechend einer erfindungsgemäßen Ausführungsform der erste Prozessor 470 und der zweite Prozessor 480 (und insbesondere deren Kerne) im Inneren ihrer Ausführungsbauteile eine XOR-Baumlogik zum Ausführen von CRC-Befehlen auf Benutzerebene aufweisen. Der erste Prozessor 470 umfasst weiterhin einen Speichersteuerungshub (MCH) 472 und Punkt-zu-Punkt(P-P)-Schnittstellen 476 und 478. Ähnlich umfasst ein zweiter Prozessor 480 einen MCH 482 und P-P-Schnittstellen 486 und 488. Wie die 5 zeigt, koppeln MCHs 472 und 482 die Prozessoren an die entsprechenden Speicher und zwar an einen Speicher 432 und einen Speicher 434, welche an die entsprechenden Prozessoren lokal angeschlossene Teilstücke des Hauptspeichers sein können.
  • Der erste Prozessor 470 und der zweite Prozessor 480 können an einen Chipsatz 490 über P-P-Verbindungen 452 bzw. 454 gekoppelt sein. Wie die 5 zeigt, umfasst der Chipsatz 490 die P-P-Schnittstellen 494 und 498. Darüber hinaus umfasst der Chipsatz 490 eine Schnittstelle 492, um den Chipsatz 490 mit einer hochwertigen Grafikmaschine 438 zu verbinden. Bei einer Ausführungsform kann der Advanced-Graphics-Port(AGP)-Bus 439 zum Anschluss der Grafikmaschine 438 an den Chipsatz 490 benutzt werden. Der AGP-Bus 439 kann der am 4. Mai 1998 durch Intel Corporation, Santa Clara, Kalifornien herausgegeben Accelerated Graphics Port Interface Specification, Revision 2.0 entsprechen. Als Alternative kann eine Punkt-zu-Punkt-Verbindung 439 diese Bauteile verbinden.
  • Der Chipsatz 490 kann dagegen auch an einen ersten Bus 416 über eine Schnittstelle 496 angeschlossen sein. In einer Ausführungsform kann der erste Bus 416 ein Peripheral Component Interconnect (PCI)-Bus sein, wie er durch die PCI Local Bus Specification, Production Version, Revision 2.1, vom Juni 1995 definiert ist, oder ein Bus wie der PCI-Express-Bus oder ein anderer Ein-/Ausgabe-Verbindungsbus (E/A) der dritten Generation, obschon der Schutzbereich der vorliegenden Erfindung nicht darauf beschränkt ist.
  • Wie aus der 5 zu sehen ist, können verschiedene E/A-Geräte 414 zusammen mit einer den ersten Bus 416 an den zweiten Bus 420 koppelnden Busbrücke 418 mit dem ersten Bus 416 verbunden werden. Bei einer Ausführungsform kann der zweite Bus 420 ein Bus mit niedriger Stiftzahl (LPC) sein. Verschiedene Geräte können bei einer Ausführungsform an den zweiten Bus 420 angeschlossen sein, darunter auch zum Beispiel eine Tastatur/Maus 422, Kommunikationsgeräte 426 und ein Datenspeicherbauteil 428, das einen Code 430 aufweisen kann. Des Weiteren kann ein Audio-E/A 424 an den zweiten Bus 420 gekoppelt sein. Es ist zu beachten, dass auch andere Architekturen möglich sind. Statt der Punkt-zu-Punkt-Architektur der 5 kann ein System zum Beispiel einen Gruppenbus oder eine andere derartige Architektur implementieren.
  • Ausführungsformen können in Code implementiert und auf einem Datenträger gespeichert werden, auf dem Befehle zum Programmieren eines Systems zur Durchführung der Befehle gespeichert sind. Der Datenträger kann jegliche Art von Disketten, einschließlich flexibler Platten, Bildplatten, CD-ROM-Platten, CD-RW-Platten sowie magneto-optische Platten, Halbleiterbauelemente wie Festwertspeicher (ROMs), Direktzugriffsspeicher (RAMs), wie zum Beispiel dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare Festwertspeicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Festwertspeicher (EEPROMs), magnetische oder optische Karten, oder jede andere Art von Medien, die zum Speichern elektronischer Befehle geeignet sind, umfassen, ist aber nicht darauf beschränkt.
  • Während die vorliegende Erfindung anhand einer begrenzten Anzahl an Ausführungsformen beschrieben wurde, werden sich Fachleute auf dem Gebiet der zahlreichen Modifikationen und Abweichungen davon bewusst sein. Es ist beabsichtigt, dass die beiliegenden Patentansprüche alle derartigen Modifikationen und Abweichungen, die im wahren Geist und Schutzbereich der vorliegenden Erfindung liegen, abdecken.
  • Zusammenfassung
  • In einer Ausführungsform enthält die vorliegende Erfindung ein Verfahren zum Empfangen ankommender Daten in einem Prozessor und Durchführen einer Prüfsummenoperation an den ankommenden Daten in dem Prozessor entsprechend einem Befehl auf Benutzerebene für die Prüfsummenoperation. Zum Beispiel kann eine zyklische Redundanzprüfung in dem Prozessor selbst als Reaktion auf den Befehl auf Benutzerebene berechnet werden. Es werden weitere Ausführungsformen beschrieben und beansprucht.

Claims (27)

  1. Verfahren, umfassend: Empfangen ankommender Daten in einem Prozessor, und Durchführen einer Prüfsummenoperation an den ankommenden Daten in dem Prozessor als Reaktion auf einem Befehl auf Benutzerebene für die Prüfsummenoperation.
  2. Verfahren nach Anspruch 1, das ferner Durchführen der Prüfsummenoperation in einer Pipeline des Prozessors umfasst, wobei der Prozessor einen Universalprozessor aufweist und die Prüfsummenoperation eine zyklische Redundanzprüfung (CRC) umfasst.
  3. Verfahren nach Anspruch 1, das ferner Durchführen der Prüfsummenoperation über eine Hardwaremaschine des Prozessors umfasst, wobei der Prozessor einen Universalprozessor umfaßt.
  4. Verfahren nach Anspruch 3, das ferner Durchführen einer polynomischen Teilung in der Hardwaremaschine als Reaktion auf den Befehl auf Benutzerebene umfasst.
  5. Verfahren nach Anspruch 3, bei dem die Hardwaremaschine einen Exklusiv-ODER (XOR)-Baum, der an ein Quellregister und ein Zielregister angeschlossen ist, umfasst.
  6. Verfahren nach Anspruch 5, das ferner umfaßt: Eingeben in den XOR-Baum der vom Quellregister ankommenden Daten und eines aktuellen Werts, der mindestens in einem Abschnitt des Zielregisters gespeichert ist, Durchführen einer Prüfsummenoperation im XOR-Baum unter Einsatz der ankommenden Daten und des aktuellen Werts, sowie Speichern einer Ausgabe des XOR-Baums im Zielregister.
  7. Verfahren nach Anspruch 6, bei dem die Ausgabe des XOR-Baums einem aktiven Rest der Prüfsummenoperation entspricht.
  8. Verfahren nach Anspruch 7, das ferner den Einsatz eines aktiven Rests als Prüfsumme, wenn ein die ankommenden Daten an das Quellregister liefernder Puffer leer ist, umfasst.
  9. Verfahren nach Anspruch 1, das ferner umfaßt: Laden der ankommenden Daten in ein Quellregister des Prozessors, Reflektieren der ankommenden Daten, und Durchführen mindestens einer Exklusiv-ODER (XOR)-Operation mit den reflektierten ankommenden Daten und den reflektierten Daten aus einem Zielregister, und Speichern in reflektierter Reihenfolge eines Ergebnisses mindestens einer XOR-Operation im Zielregister.
  10. Verfahren nach Anspruch 1, das ferner Durchführen einer Prüfsummenoperation in einem Logikblock des Prozessors unter Einsatz der ankommenden Daten und eines Restwerts und ohne Verweistabelleninformationen umfasst.
  11. Vorrichtung, umfassend: ein erstes Register zum Speichern von Quelldaten, ein zweites Register zum Speichern von Ergebnisdaten, und ein an das erste Register und das zweite Register angeschlossenes Ausführungsbauteil zur Durchführung einer zyklischen Redundanzprüfung (CRC) mit den Quelldaten und den Ergebnisdaten und zur Lieferung von mindestens einem Teil einer Ausgabe des Ausführungsbauteils entsprechend eines aktiven Rests der CRC-Operation an das zweite Register.
  12. Vorrichtung nach Anspruch 11, bei der das Ausführungsbauteil zur Durchführung der CRC-Operation als Reaktion auf einen Befehl auf Benutzerebene dient.
  13. Vorrichtung nach Anspruch 11, bei der das Ausführungsbauteil eine Exklusiv-ODER (XOR)-Baumlogik einer Universalprozessorpipeline umfasst.
  14. Vorrichtung nach Anspruch 13, bei der die XOR-Baumlogik zur Durchführung einer polynomischen Teilung entsprechend eines festen Polynoms dient.
  15. Vorrichtung nach Anspruch 11, bei der das Ausführungsbauteil ein Integerbauteil einer Prozessorpipeline umfasst, wobei das Integerbauteil eine Mehrzahl separater Logikblöcke je zur Durchführung der CRC-Operation an Daten verschiedener Größe umfasst.
  16. Vorrichtung nach Anspruch 15, bei der der Befehl auf Benutzerebene zur Angabe der Größe der Daten, an denen eine CRC-Operation durchzuführen ist, dient.
  17. Gegenstand, der einen maschinenlesbaren Datenträger mit Befehlen aufweist, die bei deren Ausführung durch eine Maschine letztere zur Durchführung eines Verfahrens freigeben, wobei das Verfahren Aufsummieren eines Werts einer zyklischen Redundanzprüfung (CRC-Wert) aus einem Quelloperanden eines ersten Registers und einem Zieloperanden eines zweiten Registers in einem dedizierten Ausführungsbauteil einer Pipeline eines Prozessors, Speichern des aufsummierten CRC-Werts im zweiten Register, und Bestimmen, ob zusätzliche Daten der CRC zu unterziehen sind, umfasst.
  18. Gegenstand nach Anspruch 17, bei dem das Verfahren weiterhin schrittweises Aufsummieren des CRC-Werts und Speichern des schrittweise aufsummierten CRC-Werts im zweiten Register, bis keine Daten mehr der CRC zu unterziehen sind, umfasst.
  19. Gegenstand nach Anspruch 17, bei dem das Verfahren ferner Aufsummieren des CRC-Werts als Reaktion auf einen Befehl einer Befehlssatzarchitektur des Prozessors für die CRC umfasst.
  20. Gegenstand nach Anspruch 19, bei dem das Verfahren ferner Aufsummieren des CRC-Werts in einem von vielen Abschnitten des dedizierten Ausführungsbauteils auf Grundlage einer Größe des Quelloperanden umfasst, wobei der Befehl dazu dient, die Größe des Quelloperanden anzugeben.
  21. System, umfassend: einen Prozessor mit einem ersten und einem zweiten Ausführungsbauteil zum Durchführen von Operationen als Reaktion auf Befehle einer Befehlssatzarchitektur (ISA) für den Prozessor, wobei das erste Ausführungsbauteil eine Hardwaremaschine zum Durchführen von Operationen der zyklischen Redundanzprüfung (CRC) aufweist, der Prozessor ferner ein erstes Register zum Liefern eines Quelloperanden an die Hardwaremaschine und ein zweites Register zum Liefern eines Zieloperanden an die Hardwaremaschine aufweist, und einen an den Prozessor angeschlossenen dynamischen Direktzugriffsspeicher (DRAM).
  22. System nach Anspruch 21, bei dem das erste Ausführungsbauteil ein Integerbauteil und das zweite Ausführungsbauteil ein Gleitkommabauteil umfasst.
  23. System nach Anspruch 21, bei dem der Prozessor einen Puffer aufweist, um Daten an das erste Register zu liefern.
  24. System nach Anspruch 23, bei dem die Hardwaremaschine zur Durchführung einer CRC-Operation an Daten als Reaktion auf einen oder mehrere Befehle der ISA für die CRC-Operation, bis der Puffer leer ist, dient.
  25. System nach Anspruch 24, bei dem die Hardwaremaschine zur Lieferung eines aktiven Rests der CRC-Operation an das zweite Register dient.
  26. System nach Anspruch 21, bei dem die Hardwaremaschine eine Vielzahl von Logikblöcken umfasst, die jeweils eine CRC-Operation an Daten verschiedener Größe durchführen.
  27. System nach Anspruch 26, bei dem die Hardwaremaschine zur Lieferung von Daten an einen von vielen Logikblöcken entsprechend einer bestimmten Datengröße dient, um die CRC-Operation als Reaktion auf einen Befehl der ISA für die CRC-Operation der bestimmten Datengröße durchzuführen.
DE112006003298.4T 2005-12-23 2006-12-07 02.06.2008Durchführen einer auf einen Befehl auf Benutzerebene reagierenden zyklischen Redundanz-Prüfsummenoperation Active DE112006003298B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/316,772 US7958436B2 (en) 2005-12-23 2005-12-23 Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US11/316,772 2005-12-23
PCT/US2006/047234 WO2007078672A2 (en) 2005-12-23 2006-12-07 Performing a cyclic redundancy checksum operation responsive to a user-level instruction

Publications (2)

Publication Number Publication Date
DE112006003298T5 true DE112006003298T5 (de) 2009-01-08
DE112006003298B4 DE112006003298B4 (de) 2021-11-18

Family

ID=38195339

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006003298.4T Active DE112006003298B4 (de) 2005-12-23 2006-12-07 02.06.2008Durchführen einer auf einen Befehl auf Benutzerebene reagierenden zyklischen Redundanz-Prüfsummenoperation

Country Status (6)

Country Link
US (17) US7958436B2 (de)
JP (1) JP5269610B2 (de)
CN (2) CN101305349B (de)
DE (1) DE112006003298B4 (de)
TW (1) TWI360047B (de)
WO (1) WO2007078672A2 (de)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7958436B2 (en) 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US8229109B2 (en) * 2006-06-27 2012-07-24 Intel Corporation Modular reduction using folding
US7827471B2 (en) * 2006-10-12 2010-11-02 Intel Corporation Determining message residue using a set of polynomials
US7852851B2 (en) * 2006-11-10 2010-12-14 Broadcom Corporation Method and system for hash table based routing via a prefix transformation
US8689078B2 (en) 2007-07-13 2014-04-01 Intel Corporation Determining a message residue
US8042025B2 (en) * 2007-12-18 2011-10-18 Intel Corporation Determining a message residue
US7886214B2 (en) * 2007-12-18 2011-02-08 Intel Corporation Determining a message residue
GB2458665B (en) * 2008-03-26 2012-03-07 Advanced Risc Mach Ltd Polynomial data processing operation
CN101527615A (zh) * 2009-04-07 2009-09-09 华为技术有限公司 一种循环冗余校验crc码的实现方法和装置
US8543888B2 (en) * 2009-06-09 2013-09-24 Microchip Technology Incorporated Programmable cyclic redundancy check CRC unit
US8117496B2 (en) * 2009-06-18 2012-02-14 International Business Machines Corporation Detecting and recovering from silent data errors in application cloning systems
US8464125B2 (en) * 2009-12-10 2013-06-11 Intel Corporation Instruction-set architecture for programmable cyclic redundancy check (CRC) computations
US8683307B2 (en) * 2011-05-27 2014-03-25 International Business Machines Corporation Checksum calculation, prediction and validation
CN103795502B (zh) * 2014-02-28 2017-04-12 杭州华三通信技术有限公司 一种数据帧校验码生成方法和装置
CN103984530B (zh) * 2014-05-15 2016-08-17 中国航天科技集团公司第九研究院第七七一研究所 一种提高store指令执行效率的流水线结构及方法
CN104133736A (zh) * 2014-07-29 2014-11-05 江苏宏云技术有限公司 一种矢量crc校验指令的设计方法
US9829899B2 (en) 2014-11-10 2017-11-28 Duke Energy Corporation Apparatuses including utility meter, power electronics, and communications circuitry, and related methods of operation
US20160191678A1 (en) * 2014-12-27 2016-06-30 Jesse C. Brandeburg Technologies for data integrity of multi-network packet operations
US10797722B2 (en) * 2016-06-10 2020-10-06 The Boeing Company System and method for providing hardware based fast and secure expansion and compression functions
US10255132B2 (en) * 2016-06-22 2019-04-09 Advanced Micro Devices, Inc. System and method for protecting GPU memory instructions against faults
CN107145334B (zh) * 2017-04-26 2020-10-09 龙芯中科技术有限公司 常量获取方法、装置、处理器及计算机可读存储介质
CN107544863B (zh) * 2017-06-26 2021-07-20 新华三技术有限公司 一种数据存储方法及装置
DE102017212181A1 (de) * 2017-07-17 2019-01-17 Robert Bosch Gmbh Verfahren und Vorrichtung zum Bestimmen von Prüfsummen, Pufferspeicher und Prozessor
US10594439B2 (en) 2017-09-08 2020-03-17 Huawei Technologies Co., Ltd. Channel encoding method and apparatus in wireless communications to output a polar encoded bit sequence
WO2019047788A1 (zh) 2017-09-08 2019-03-14 华为技术有限公司 编码方法及装置
CN107943611B (zh) * 2017-11-08 2021-04-13 天津国芯科技有限公司 一种快速产生crc的控制装置
CN108540137B (zh) * 2018-03-02 2021-09-03 江西清华泰豪三波电机有限公司 一种循环冗余校验码生成方法与装置
US11468037B2 (en) * 2019-03-06 2022-10-11 Semiconductor Components Industries, Llc Memory device and data verification method
US11809382B2 (en) 2019-04-01 2023-11-07 Nutanix, Inc. System and method for supporting versioned objects
US11226905B2 (en) 2019-04-01 2022-01-18 Nutanix, Inc. System and method for mapping objects to regions
US11029993B2 (en) 2019-04-04 2021-06-08 Nutanix, Inc. System and method for a distributed key-value store
CN111800223B (zh) * 2019-08-15 2023-06-23 北京京东尚科信息技术有限公司 生成发送报文、处理接收报文的方法、装置和系统
CN112445525A (zh) * 2019-09-02 2021-03-05 中科寒武纪科技股份有限公司 数据处理方法、相关设备及计算机可读介质
US11704334B2 (en) 2019-12-06 2023-07-18 Nutanix, Inc. System and method for hyperconvergence at the datacenter
KR20210084871A (ko) 2019-12-30 2021-07-08 삼성전자주식회사 안전 민감 데이터의 무결성 점검 장치 및 이를 포함하는 전자 기기
US11609777B2 (en) 2020-02-19 2023-03-21 Nutanix, Inc. System and method for multi-cluster storage
US20210334284A1 (en) 2020-04-28 2021-10-28 Nutanix, Inc. System and method of querying objects on demand
US11487787B2 (en) 2020-05-29 2022-11-01 Nutanix, Inc. System and method for near-synchronous replication for object store
US11900164B2 (en) 2020-11-24 2024-02-13 Nutanix, Inc. Intelligent query planning for metric gateway
US11822370B2 (en) 2020-11-26 2023-11-21 Nutanix, Inc. Concurrent multiprotocol access to an object storage system
US20220385488A1 (en) 2021-05-31 2022-12-01 Nutanix, Inc. System and method for reconciling consumption data
US11899572B2 (en) 2021-09-09 2024-02-13 Nutanix, Inc. Systems and methods for transparent swap-space virtualization
US11748019B2 (en) * 2021-10-26 2023-09-05 EMC IP Holding Company LLC Method to efficiently transfer support and system logs from air-gapped vault systems to replication data sources by re-utilizing the existing replication streams
US20230140404A1 (en) * 2021-11-02 2023-05-04 Paul Tsyganko System, method, and computer program product for cataloging data integrity
CN115150024B (zh) * 2022-09-02 2022-11-18 无锡沐创集成电路设计有限公司 数据处理方法、装置、设备和介质
CN116861493B (zh) * 2023-08-31 2024-03-29 上海芯联芯智能科技有限公司 一种校验码生成方法、处理器及电子设备

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253428A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US3891974A (en) 1973-12-17 1975-06-24 Honeywell Inf Systems Data processing system having emulation capability for providing wait state simulation function
US4351024A (en) * 1975-04-21 1982-09-21 Honeywell Information Systems Inc. Switch system base mechanism
US4130867A (en) * 1975-06-19 1978-12-19 Honeywell Information Systems Inc. Database instruction apparatus for determining a database record type
US4413319A (en) 1981-03-09 1983-11-01 Allen-Bradley Company Programmable controller for executing block transfer with remote I/O interface racks
US4438512A (en) * 1981-09-08 1984-03-20 International Business Machines Corporation Method and apparatus for verifying storage apparatus addressing
JPH0822448B2 (ja) 1987-06-26 1996-03-06 石川島播磨重工業株式会社 カロ−ゼルリ−ル装置
JP2818415B2 (ja) 1988-05-18 1998-10-30 日本電気株式会社 バッファ記憶装置
JPH0679276B2 (ja) * 1990-08-31 1994-10-05 インターナショナル・ビジネス・マシーンズ・コーポレイション 同一従属型プロセスのスループット増大方法、プロセス生成回路、周期冗長コードジェネレータ、およびコントローラシステム
US5369641A (en) * 1991-11-12 1994-11-29 Storage Technology Corporation Method and apparatus for detecting and correcting errors in data on magnetic tape media
DE69320321T2 (de) 1993-02-05 1998-12-24 Hewlett Packard Co Verfahren und Gerät zum Nachprüfen von CRC-Koden, wobei CRC Teilkode kombiniert werden
US5715278A (en) * 1993-05-11 1998-02-03 Ericsson Inc. Standby power saving in mobile phones
US5645159A (en) * 1994-03-30 1997-07-08 Lauener Engineering, Ltd. Method and apparatus for continuously casting metal
JP2814918B2 (ja) * 1994-07-07 1998-10-27 株式会社デンソー マイクロコンピュータ
US6237074B1 (en) 1995-05-26 2001-05-22 National Semiconductor Corp. Tagged prefetch and instruction decoder for variable length instruction set and method of operation
US5663952A (en) 1995-07-07 1997-09-02 Sun Microsystems, Inc. Checksum generation circuit and method
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5701316A (en) 1995-08-31 1997-12-23 Unisys Corporation Method for generating an internet protocol suite checksum in a single macro instruction
US5946467A (en) * 1996-09-20 1999-08-31 Novell, Inc. Application-level, persistent packeting apparatus and method
US5844923A (en) 1996-10-24 1998-12-01 At&T Corp Fast framing of nude ATM by header error check
US5960012A (en) 1997-06-23 1999-09-28 Sun Microsystems, Inc. Checksum determination using parallel computations on multiple packed data elements
US5974574A (en) * 1997-09-30 1999-10-26 Tandem Computers Incorporated Method of comparing replicated databases using checksum information
US7185266B2 (en) 2003-02-12 2007-02-27 Alacritech, Inc. Network interface device for error detection using partial CRCS of variable length message portions
US6029186A (en) 1998-01-20 2000-02-22 3Com Corporation High speed calculation of cyclical redundancy check sums
US6012063A (en) * 1998-03-04 2000-01-04 Starfish Software, Inc. Block file system for minimal incremental data transfer between computing devices
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
JP2000124811A (ja) * 1998-10-12 2000-04-28 Hitachi Ltd 通信データ処理装置及びデータ受信システム
US6279140B1 (en) 1999-01-07 2001-08-21 International Business Machines Corporation Method and apparatus for checksum verification with receive packet processing
US6191614B1 (en) 1999-04-05 2001-02-20 Xilinx, Inc. FPGA configuration circuit including bus-based CRC register
US6565443B1 (en) 1999-09-14 2003-05-20 Innovative Gaming Corporation System and method for verifying the contents of a mass storage device before granting access to computer readable data stored on the device
US6550002B1 (en) * 1999-11-04 2003-04-15 International Business Machines Corporation Method and system for detecting a flush of an instruction without a flush indicator
US6964008B1 (en) 1999-11-12 2005-11-08 Maxtor Corporation Data checksum method and apparatus
JP2003523682A (ja) * 2000-02-17 2003-08-05 アナログ デバイス インコーポレーテッド Crc、および他の剰余を基本とする符号の生成に用いる方法、装置、製品
US6631488B1 (en) 2000-06-30 2003-10-07 Agilent Technologies, Inc. Configurable error detection and correction engine that has a specialized instruction set tailored for error detection and correction tasks
US6848072B1 (en) 2000-09-19 2005-01-25 Bbn Solutions Llc Network processor having cyclic redundancy check implemented in hardware
US7292586B2 (en) * 2001-03-30 2007-11-06 Nokia Inc. Micro-programmable protocol packet parser and encapsulator
KR100434270B1 (ko) 2001-05-30 2004-06-04 엘지전자 주식회사 가전기기 네트워크 제어시스템
JP4856848B2 (ja) * 2001-10-11 2012-01-18 アルテラ コーポレイション プログラマブルロジックリソース上のエラー検出
US6907466B2 (en) * 2001-11-08 2005-06-14 Extreme Networks, Inc. Methods and systems for efficiently delivering data to a plurality of destinations in a computer network
US7454601B2 (en) 2002-03-28 2008-11-18 Intel Corporation N-wide add-compare-select instruction
JP2003346432A (ja) * 2002-05-22 2003-12-05 Internatl Business Mach Corp <Ibm> データ記憶装置およびデータ処理方法
US8005966B2 (en) * 2002-06-11 2011-08-23 Pandya Ashish A Data processing system using internet protocols
US6957321B2 (en) 2002-06-19 2005-10-18 Intel Corporation Instruction set extension using operand bearing NOP instructions
US7103821B2 (en) * 2002-07-03 2006-09-05 Intel Corporation Method and apparatus for improving network router line rate performance by an improved system for error checking
US7036007B2 (en) 2002-09-09 2006-04-25 Intel Corporation Firmware architecture supporting safe updates and multiple processor types
US7313583B2 (en) * 2002-10-22 2007-12-25 Broadcom Corporation Galois field arithmetic unit for use within a processor
US7327781B2 (en) * 2002-12-17 2008-02-05 Invensys Systems, Inc. Universal intelligent modem
US7421637B1 (en) * 2003-01-16 2008-09-02 Cisco Technology, Inc. Generating test input for a circuit
TWI220962B (en) 2003-01-20 2004-09-11 Mediatek Inc Firmware updating method and related apparatus for checking content of replacing firmware before firmware updating
US7082563B2 (en) 2003-01-31 2006-07-25 Italtel S.P.A. Automated method for generating the cyclic redundancy check for transmission of multi-protocol packets
US7392399B2 (en) 2003-05-05 2008-06-24 Sun Microsystems, Inc. Methods and systems for efficiently integrating a cryptographic co-processor
US7383428B2 (en) 2003-09-11 2008-06-03 International Business Machines Corporation Method, apparatus and computer program product for implementing atomic data tracing
US7826614B1 (en) 2003-11-05 2010-11-02 Globalfoundries Inc. Methods and apparatus for passing initialization vector information from software to hardware to perform IPsec encryption operation
TWI224729B (en) 2003-12-15 2004-12-01 Mediatek Inc Method for determining program code
US7360142B1 (en) 2004-03-03 2008-04-15 Marvell Semiconductor Israel Ltd. Methods, architectures, circuits, software and systems for CRC determination
US8351468B2 (en) * 2004-04-05 2013-01-08 Broadcom Corporation Method and apparatus for downloading content using channel bonding
US7157944B1 (en) * 2004-04-27 2007-01-02 Altera Corporation Differential signal detector methods and apparatus
US7594124B2 (en) * 2004-06-09 2009-09-22 Intel Corporation Cross validation of data using multiple subsystems
US7676655B2 (en) 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7246191B2 (en) * 2005-03-31 2007-07-17 Intel Corporation Method and apparatus for memory interface
US7454667B2 (en) 2005-04-26 2008-11-18 Intel Corporation Techniques to provide information validation and transfer
US7590930B2 (en) * 2005-05-24 2009-09-15 Intel Corporation Instructions for performing modulo-2 multiplication and bit reflection
US7805706B1 (en) * 2005-06-21 2010-09-28 Unisys Corporation Process for optimizing software components for an enterprise resource planning (ERP) application SAP on multiprocessor servers
US8335226B2 (en) * 2005-08-03 2012-12-18 Broadcom Corporation Systems and methods to transmit information among a plurality of physical upstream channels
US7646788B2 (en) 2005-08-03 2010-01-12 The Boeing Company TCP/IP tunneling protocol for link 16
US20070067698A1 (en) 2005-09-19 2007-03-22 King Steven R Techniques to perform prefetching of content in connection with integrity validation value determination
US7523378B2 (en) 2005-09-23 2009-04-21 Intel Corporation Techniques to determine integrity of information
DE102005061394A1 (de) * 2005-12-22 2007-06-28 Robert Bosch Gmbh Fehlertolerantes Prozessorsystem
US7958436B2 (en) 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US7324913B2 (en) 2006-02-01 2008-01-29 International Business Machines Corporation Methods and apparatus for testing a link between chips
US7925957B2 (en) 2006-03-20 2011-04-12 Intel Corporation Validating data using processor instructions
US7865704B2 (en) * 2006-03-29 2011-01-04 Freescale Semiconductor, Inc. Selective instruction breakpoint generation based on a count of instruction source events
US8024708B2 (en) 2006-06-20 2011-09-20 Google Inc. Systems and methods for debugging an application running on a parallel-processing computer system
US8209597B2 (en) 2009-03-23 2012-06-26 Cognitive Electronics, Inc. System and method for achieving improved accuracy from efficient computer architectures
US8521963B1 (en) 2009-09-21 2013-08-27 Tilera Corporation Managing cache coherence
US8464125B2 (en) * 2009-12-10 2013-06-11 Intel Corporation Instruction-set architecture for programmable cyclic redundancy check (CRC) computations
US8417961B2 (en) * 2010-03-16 2013-04-09 Oracle International Corporation Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC)
US8910031B1 (en) * 2011-03-29 2014-12-09 Emc Corporation DIF-CRC based fast hashing

Also Published As

Publication number Publication date
TW200809488A (en) 2008-02-16
CN102708022A (zh) 2012-10-03
CN102708022B (zh) 2015-07-08
US20150155883A1 (en) 2015-06-04
US20170242746A1 (en) 2017-08-24
US20120240016A1 (en) 2012-09-20
US9645884B2 (en) 2017-05-09
US9262159B2 (en) 2016-02-16
US20130191614A1 (en) 2013-07-25
US20130305011A1 (en) 2013-11-14
US20220091926A1 (en) 2022-03-24
WO2007078672A3 (en) 2007-09-13
US20130305118A1 (en) 2013-11-14
US8225184B2 (en) 2012-07-17
JP2009521059A (ja) 2009-05-28
US11048579B2 (en) 2021-06-29
US8775911B2 (en) 2014-07-08
US9116684B2 (en) 2015-08-25
US7958436B2 (en) 2011-06-07
US8775912B2 (en) 2014-07-08
US20160224411A1 (en) 2016-08-04
US8856627B2 (en) 2014-10-07
DE112006003298B4 (de) 2021-11-18
US20110231744A1 (en) 2011-09-22
US20130305116A1 (en) 2013-11-14
US20130305117A1 (en) 2013-11-14
US20130305016A1 (en) 2013-11-14
US20130305015A1 (en) 2013-11-14
US11899530B2 (en) 2024-02-13
US8713416B2 (en) 2014-04-29
US20070150795A1 (en) 2007-06-28
US20200159614A1 (en) 2020-05-21
US8769385B2 (en) 2014-07-01
JP5269610B2 (ja) 2013-08-21
US8775910B2 (en) 2014-07-08
US20130305115A1 (en) 2013-11-14
TWI360047B (en) 2012-03-11
US20140281798A1 (en) 2014-09-18
US10379938B2 (en) 2019-08-13
CN101305349B (zh) 2012-05-02
US8793559B2 (en) 2014-07-29
US8413024B2 (en) 2013-04-02
US8769386B2 (en) 2014-07-01
WO2007078672A2 (en) 2007-07-12
CN101305349A (zh) 2008-11-12

Similar Documents

Publication Publication Date Title
DE112006003298T5 (de) Durchführen einer auf einen Befehl auf Benutzerebene reagierenden zyklischen Redundanz-Prüfsummenoperation
DE102008061062A1 (de) Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE102015002215A1 (de) Sortierbeschleunigungsprozessor, -Verfahren, -Systeme und -Befehle
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE112016005849T5 (de) Hardwarebeschleuniger und Verfahren für zustandsbehafetete Komprimierungs- und Dekomprimierungsoperationen
DE602004004101T2 (de) Bearbeitung von message-digest-befehlen
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE112012007063T5 (de) Zusammenfügen von benachbarten Sammel-/Streuoperationen
DE112013005338T5 (de) Vorrichtung und Verfahren für Beschleunigeraufruf mit geringer Latenz
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE112013005343T5 (de) Befehle für Codierungsalgorithemen mit gleitendem Fenster
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE102015002254A1 (de) Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen
DE102018006744A1 (de) Bitmatrixmultiplikation
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE112016004324T5 (de) Heterogene Kompressionsarchitektur für optimiertes Kompressionsverhältnis
DE102018003612A1 (de) Befehle für Dualzieltyp-Umwandlung-, Akkumulation- mit gemischter Präzision und atomare Speicheroperationen mit gemischter Präzision
DE112016005909T5 (de) Einrichtung und verfahren zum beschleunigen von graphenanalyse
DE102015002253A1 (de) Verfahren und Vorrichtung zum Ausführen mehrerer Multiplikationsoperationen
DE112020003004T5 (de) Dma-scatter- und gather-operationen für nicht zusammenhängenden speicher
DE112017000983T5 (de) System und Verfahren zum Ausführen eines Befehls zum Permutieren einer Maske
DE102014003659A1 (de) Systeme, vorrichtungen und verfahren zum bestimmen eines folgenden niedrigstwertigen maskierungsbits eines schreibmaskenregisters

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R130 Divisional application to

Ref document number: 112006004287

Country of ref document: DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final