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 PDFInfo
- 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
Links
- 125000004122 cyclic group Chemical group 0.000 title claims description 8
- 238000000034 method Methods 0.000 claims abstract description 22
- 230000004044 response Effects 0.000 claims abstract description 9
- 239000000872 buffer Substances 0.000 claims description 19
- 238000007667 floating Methods 0.000 claims description 2
- 230000015654 memory Effects 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 206010009944 Colon cancer Diseases 0.000 description 1
- 244000208734 Pisonia aculeata Species 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/093—CRC update after modification of the information word
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/095—Error detection codes other than CRC and single parity bit codes
- H03M13/096—Checksums
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/157—Polynomial 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.
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 Verfahren100 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 der1 dargestellt, kann das Verfahren100 damit beginnen, eine Reihe von Exklusiv-ODER (XOR)-Operationen an Daten in Quell- oder Zielregistern (Block110 ) 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 (Block120 ) 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 Raute130 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 Block110 zurück. - Wenn dagegen bei der Raute
130 bestimmt wird, dass keine zusätzlichen Quelldaten vorhanden sind, geht die Steuerung zum Block140 weiter. Dort ist dann das Resultat der Prüfsummenoperation als der im Zielregister (Block140 ) 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 der2 dargestellt, umfasst der Prozessor200 einen Datenweg205 . Der Datenweg205 kann durch Vorsteuerstufen gesteuert sein, die eine zum Empfang dekodierter Befehle von einem Front-End des Prozessors (nicht in der2 gezeigt) befähigte Registerpseudonymtabelle (Register alias table (RAT))270 umfassen kann. Die RAT270 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 Datenweg205 an einen Neuordnungspuffer (Reorder buffer (ROB))250 geliefert werden. Der ROB250 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 ROB250 auch die entsprechenden Resultate von schon ausgeführten Mikrooperationen speichern. Diese Ergebnisse können im ROB250 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 Datenwegs205 bereit ist. Die Reservation-Station230 kann eine Mehrzahl an Abfertigungsanschlüssen umfassen, um Befehle und Daten mit bestimmten Ausführungsbauteilen des Datenwegs205 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 Datenweg205 ein Adressgenerationsbauteil (Address generation unit (AGU))220 , ein Integer (INT)-Ausführungsbauteil222 , ein Speicherdaten (STD)-Bauteil224 , ein Gleitkomma (FP)-Ausführungsbauteil226 und ein Einzelbefehl-Mehrfachdaten (SIMD)-Ausführungsbauteil228 . Wie die2 zeigt, umfasst das Integer-Ausführungsbauteil222 weiterhin Logik221 . Die Logik221 kann zur Durchführung von Prüfsummenoperationen entsprechend einer erfindungsgemäßen Ausführungsform eine oder mehrere Hardwaremaschinen umfassen. Insbesondere kann die Logik221 zur Durchführung polynomischer arithmetischer und ähnlicher Datenbehandlungen eine Vielzahl von Exklusiv-ODER (XOR)-Logikbäumen umfassen. Bei verschiedenen Ausführungsformen kann die Logik221 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 Logik221 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 RS230 und den ROB250 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 RS230 oder im ROB250 befinden. Obschon nicht in der2 dargestellt, ist vorauszusetzen, dass zusätzliche Puffer, wie beispielsweise ein Speicherbefehlspuffer (MOB) und weitere Ressourcen im Prozessor200 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 RS230 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 RS230 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 der3 zu ersehen ist, wird ein Teil eines Prozessors300 gezeigt. Insbesondere umfasst der Prozessor300 einen XOR-Baum310 , ein erstes Register320 und ein zweites Register330 , von denen alle ein Teil einer Prozessorpipeline sein können. Der XOR-Baum310 kann in verschiedenen Ausführungsformen unterschiedlich konfiguriert sein. Der XOR-Baum310 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 Prozessor300 einen Puffer340 auf, der auch in der Prozessorpipeline sein kann (z. B. als ein Puffer, eine Warteschlange oder dergleichen). Als Alternative kann der Puffer340 ein zum Prozessor300 gehörender Cache-Speicher sein. In der Ausführungsform der3 kann das erste Register320 einem Quellregister entsprechen, während das zweite Register330 ein Zielregister sein kann. In verschiedenen Ausführungsformen können diese Register Universalregister im Innern des Prozessors300 sein. Der Prozessor300 kann natürlich viele andere Register, eine Logik, Funktionseinheiten und dergleichen beinhalten, und der in der3 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 Registers320 zusammen mit einem Abschnitt des zweiten Registers330 dem XOR-Baum310 zur Verfügung gestellt. Bei der in der3 gezeigten Ausführungsform, welche eine 8-Bit-CRC-Aufsummierung darstellt, wird dem XOR-Baum310 vom ersten Register320 ein einzelnes Datenbyte (B0) geliefert, während ein 4-Byte-Abschnitt des zweiten Registers330 an den XOR-Baum310 geliefert wird. Dieser 4-Byte-Abschnitt des zweiten Registers330 kann dem aktiven Rest einer CRC32-Operation entsprechen. Mit diesen Daten kann der XOR-Baum310 über XOR-Operationen Datenbehandlungen durchführen, um ein einen Restabschnitt beinhaltendes Resultat zu erzeugen. Dieser Restabschnitt kann, wie in3 gezeigt, der im zweiten Register330 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 der3 können für 8-Bit-Aufsummierungen dem XOR-Baum310 zusätzliche Abschnitte des ersten Registers320 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 Register320 acht Iterationen der XOR-Operationen im XOR-Baum310 durchgeführt werden, wobei jede ein einziges Datenbyte vom ersten Register320 zusammen mit dem aktuellen aktiven Rest im zweiten Register330 nimmt. Falls sich im Puffer340 zusätzliche durch eine Prüfsumme nachzuprüfende Daten befinden, können die zusätzlichen Daten in das erste Register320 zur darauffolgenden Verarbeitung im XOR-Baum310 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 Logik221 andere XOR-Baumstrukturen zur Handhabung dieser CRC-Berechnungen umfassen. Mit Bezug nun auf die4 wird ein Blockschaltbild von einem anderen Abschnitt eines Prozessors entsprechend einer erfindungsgemäßen Ausführungsform gezeigt. Wie die4 zeigt, umfasst der Prozessor300 einen anderen zum Datenempfang vom ersten und zweiten Register320 bzw.330 gekoppelten XOR-Baum410 (z. B. zusätzlich zum XOR-Baum310 der3 ). Wie die4 weiterhin zeigt, ist der Puffer340 vorhanden und kann zur Datenlieferung für die CRC-Rechnungen benutzt werden. Zu bemerken ist, dass bei der Ausführungsform der4 der XOR-Baum410 für die Handhabung einer 64-Bit-CRC-Aufsummierung konfiguriert ist. Dementsprechend kann der gesamte Inhalt des ersten Registers320 (d. h. die Bytes B0–B7) zu einem Zeitpunkt an den XOR-Baum410 zum Bearbeiten in XOR-Operationen mit Daten im zweiten Register330 gekoppelt sein. Die Ergebnisdaten, deren erwünschter Teil einem aktiven Rest entspricht, werden erneut im zweiten Register330 gespeichert. Obschon die vorliegende Erfindung mit diesen speziellen Implementierungen in den3 und4 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 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]) 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]) 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 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 die5 zeigt, handelt es sich bei dem Multiprozessorsystem um ein Punkt-zu-Punkt-Verbindungssystem, das einen ersten Prozessor470 und einen mit einer Punkt-zu-Punkt-Verbindung450 gekoppelten zweiten Prozessor480 umfasst. Wie die5 zeigt, kann jeder der beiden Prozessoren470 und480 ein Mehrkernprozessor mit ersten und zweiten Prozessorkernen (d. h. Prozessorkerne474a und474b und Prozessorkerne484a und484b ) sein. Obschon sie zwecks Vereinfachung der Darstellung nicht gezeigt werden, können entsprechend einer erfindungsgemäßen Ausführungsform der erste Prozessor470 und der zweite Prozessor480 (und insbesondere deren Kerne) im Inneren ihrer Ausführungsbauteile eine XOR-Baumlogik zum Ausführen von CRC-Befehlen auf Benutzerebene aufweisen. Der erste Prozessor470 umfasst weiterhin einen Speichersteuerungshub (MCH)472 und Punkt-zu-Punkt(P-P)-Schnittstellen476 und478 . Ähnlich umfasst ein zweiter Prozessor480 einen MCH482 und P-P-Schnittstellen486 und488 . Wie die5 zeigt, koppeln MCHs472 und482 die Prozessoren an die entsprechenden Speicher und zwar an einen Speicher432 und einen Speicher434 , welche an die entsprechenden Prozessoren lokal angeschlossene Teilstücke des Hauptspeichers sein können. - Der erste Prozessor
470 und der zweite Prozessor480 können an einen Chipsatz490 über P-P-Verbindungen452 bzw.454 gekoppelt sein. Wie die5 zeigt, umfasst der Chipsatz490 die P-P-Schnittstellen494 und498 . Darüber hinaus umfasst der Chipsatz490 eine Schnittstelle492 , um den Chipsatz490 mit einer hochwertigen Grafikmaschine438 zu verbinden. Bei einer Ausführungsform kann der Advanced-Graphics-Port(AGP)-Bus439 zum Anschluss der Grafikmaschine438 an den Chipsatz490 benutzt werden. Der AGP-Bus439 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-Verbindung439 diese Bauteile verbinden. - Der Chipsatz
490 kann dagegen auch an einen ersten Bus416 über eine Schnittstelle496 angeschlossen sein. In einer Ausführungsform kann der erste Bus416 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äte414 zusammen mit einer den ersten Bus416 an den zweiten Bus420 koppelnden Busbrücke418 mit dem ersten Bus416 verbunden werden. Bei einer Ausführungsform kann der zweite Bus420 ein Bus mit niedriger Stiftzahl (LPC) sein. Verschiedene Geräte können bei einer Ausführungsform an den zweiten Bus420 angeschlossen sein, darunter auch zum Beispiel eine Tastatur/Maus422 , Kommunikationsgeräte426 und ein Datenspeicherbauteil428 , das einen Code430 aufweisen kann. Des Weiteren kann ein Audio-E/A424 an den zweiten Bus420 gekoppelt sein. Es ist zu beachten, dass auch andere Architekturen möglich sind. Statt der Punkt-zu-Punkt-Architektur der5 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)
- 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.
- 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.
- Verfahren nach Anspruch 1, das ferner Durchführen der Prüfsummenoperation über eine Hardwaremaschine des Prozessors umfasst, wobei der Prozessor einen Universalprozessor umfaßt.
- Verfahren nach Anspruch 3, das ferner Durchführen einer polynomischen Teilung in der Hardwaremaschine als Reaktion auf den Befehl auf Benutzerebene umfasst.
- Verfahren nach Anspruch 3, bei dem die Hardwaremaschine einen Exklusiv-ODER (XOR)-Baum, der an ein Quellregister und ein Zielregister angeschlossen ist, umfasst.
- 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.
- Verfahren nach Anspruch 6, bei dem die Ausgabe des XOR-Baums einem aktiven Rest der Prüfsummenoperation entspricht.
- 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.
- 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.
- 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.
- 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.
- Vorrichtung nach Anspruch 11, bei der das Ausführungsbauteil zur Durchführung der CRC-Operation als Reaktion auf einen Befehl auf Benutzerebene dient.
- Vorrichtung nach Anspruch 11, bei der das Ausführungsbauteil eine Exklusiv-ODER (XOR)-Baumlogik einer Universalprozessorpipeline umfasst.
- Vorrichtung nach Anspruch 13, bei der die XOR-Baumlogik zur Durchführung einer polynomischen Teilung entsprechend eines festen Polynoms dient.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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).
- System nach Anspruch 21, bei dem das erste Ausführungsbauteil ein Integerbauteil und das zweite Ausführungsbauteil ein Gleitkommabauteil umfasst.
- System nach Anspruch 21, bei dem der Prozessor einen Puffer aufweist, um Daten an das erste Register zu liefern.
- 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.
- System nach Anspruch 24, bei dem die Hardwaremaschine zur Lieferung eines aktiven Rests der CRC-Operation an das zweite Register dient.
- 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.
- 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.
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)
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)
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 |
-
2005
- 2005-12-23 US US11/316,772 patent/US7958436B2/en active Active
-
2006
- 2006-12-07 CN CN2006800422420A patent/CN101305349B/zh active Active
- 2006-12-07 WO PCT/US2006/047234 patent/WO2007078672A2/en active Application Filing
- 2006-12-07 DE DE112006003298.4T patent/DE112006003298B4/de active Active
- 2006-12-07 CN CN201210041335.9A patent/CN102708022B/zh active Active
- 2006-12-07 JP JP2008547301A patent/JP5269610B2/ja active Active
- 2006-12-12 TW TW095146431A patent/TWI360047B/zh active
-
2011
- 2011-04-29 US US13/097,462 patent/US8225184B2/en active Active
-
2012
- 2012-05-31 US US13/484,787 patent/US8413024B2/en active Active
-
2013
- 2013-03-12 US US13/796,032 patent/US8713416B2/en active Active
- 2013-07-12 US US13/940,706 patent/US8856627B2/en active Active
- 2013-07-12 US US13/940,691 patent/US8775911B2/en active Active
- 2013-07-12 US US13/940,659 patent/US8793559B2/en active Active
- 2013-07-12 US US13/940,665 patent/US8769386B2/en active Active
- 2013-07-12 US US13/940,647 patent/US8769385B2/en active Active
- 2013-07-12 US US13/940,696 patent/US8775912B2/en active Active
- 2013-07-12 US US13/940,681 patent/US8775910B2/en active Active
-
2014
- 2014-05-27 US US14/288,261 patent/US9116684B2/en active Active
- 2014-12-22 US US14/579,538 patent/US9262159B2/en active Active
-
2016
- 2016-01-28 US US15/009,152 patent/US9645884B2/en active Active
-
2017
- 2017-05-08 US US15/589,561 patent/US10379938B2/en active Active
-
2019
- 2019-08-12 US US16/538,812 patent/US11048579B2/en active Active
-
2021
- 2021-06-26 US US17/359,537 patent/US11899530B2/en active Active
Also Published As
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 |