NO317739B1 - Apparat for utforelse av multiplis±r/add±roperasjoner pa pakkede data - Google Patents

Apparat for utforelse av multiplis±r/add±roperasjoner pa pakkede data Download PDF

Info

Publication number
NO317739B1
NO317739B1 NO19980873A NO980873A NO317739B1 NO 317739 B1 NO317739 B1 NO 317739B1 NO 19980873 A NO19980873 A NO 19980873A NO 980873 A NO980873 A NO 980873A NO 317739 B1 NO317739 B1 NO 317739B1
Authority
NO
Norway
Prior art keywords
data
multiplier
data elements
processor
bit
Prior art date
Application number
NO19980873A
Other languages
English (en)
Other versions
NO980873L (no
NO980873D0 (no
Inventor
Stephen A Fisher
Tuan H Bui
Alexander D Peleg
Millind Mittal
Larry M Mennemeier
Benny Eitan
Carole Dulong
Eiichi Kowashi
Wolf Witt
Chu Derrick Lin
Ahmet Bindal
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
Priority claimed from US08/522,067 external-priority patent/US6385634B1/en
Application filed by Intel Corp filed Critical Intel Corp
Publication of NO980873D0 publication Critical patent/NO980873D0/no
Publication of NO980873L publication Critical patent/NO980873L/no
Publication of NO317739B1 publication Critical patent/NO317739B1/no

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • 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
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7857Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) using interleaved memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/4806Computations with complex numbers
    • G06F7/4812Complex multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Discrete Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Holo Graphy (AREA)
  • Hair Curling (AREA)

Description

Oppfinnelsen angår spesielt fagfeltet datamaskinsystemer. Mer spesifikt angår den området med operasjoner på pakkede data.
BESKRIVELSE AV BESLEKTET TEKNIKK
I typiske datamaskinsystemer er det implementert prosessorer for å operere på verdier som er representert av et stort antall bits (f .eks. 64) ved anvendelse av instruksjoner som produserer et resultat. Eksekvering av en adderingsinstruksjon vil for eksempel legge sammen en første 64-bits verdi og en andre 64-bits verdi og lagre resultatet som en tredje 64-bits verdi. Multimedia-applikasjoner (for eksempel applikasjoner som er rettet mot databasert sam-arbeid (CSC-integrering av telekonferanser med datamanipulasjon i forskjellige medier) 2D/3D grafikk, bildebehandling, bildekomprimering/dekomprimering, gjenkjennelsesalgoritmer og lydmanipulasjon) krever imidlertid manipulering med store mengder data som kan være representert med et lite antall bits. Grafiske data og lyddata krever for eksempel typisk 8 eller 16 bits . Hver av
disse multimedia-applikasjonene må ha en eller flere algoritmer, som hver krever et antall operasjoner. En algoritme kan for eksempel kreve en addér-, sammenlikn- og skiftoperasjon.
For å forbedre effektiviteten for multimedia-applikasjoner (samt andre applikasjoner med de samme karakteristikkene), kan prosessorer benytte pakkede dataformater. Et pakket dataformat er et hvor bitsene som typisk anvendes for å representere en enkelt verdi deles inn i et antall dataelementer med fast størrelse, som hvert representerer en separat verdi. Et 64-bits register kan for eksempel deles inn i to 32-bits elementer som hvert representerer en separat 32-bits verdi. I tillegg gir disse prosessorene instruksjoner for separat å manipulere, som respons på en enkelt instruksjon, hvert element i disse pakkede datatypene parallelt. En addér-instruksjon for en datapakke legger for eksempel sammen tilhørende dataelementer f ra en første og en andre datapakke. Dersom en multimediaalgoritme omfatter en løkke som inneholder fem operasjoner som skal utføres på et stort antall dataelementer, er det således ønskelig å pakke inn dataene og utføre disse operasjonene parallelt gjennom å anvende datapakke-instruksjoner. På denne måten kan disse prosessorene prosessere multimedia-applikasjoner mer effektivt.
Dersom imidlertid løkken av operasjoner inneholder en operasjon som ikke kan utføres av prosessoren på pakkedataene (dvs. prosessoren mangler en tilhørende instruksjon), må dataene pakkes ut for å få utført operasjonen. Dersom multimedia-algoritmen for eksempel krever en addér-operasjon og den tidligere beskrevne datapakke-addér-operasjonen ikke er tilgjengelig, må pro-grammereren pakke ut både den første datapakken og den andre datapakken (dvs. separere elementene som utgjør både den første og den andre datapakken), legge sammen de separerte elementene individuelt og deretter pakke inn resultatene for videre prosessering som pakke. Prosesseringstiden som er nødvendig for å utføre slik ut- og innpakking opphever ofte ytelsesfordelen som ligger i pakkede dataformater. Det er derfor ønskelig i et datamaskinsystem å inkorporere ett sett av datapakke-instruksjoner som omfatter alle nødvendige operasjoner for typiske multimediaalgoritmer. På grunn av det begrensede minneområdet (die area) for dagens generelle mikroprosessorer, er imidlertid antallet instruksjoner som kan legges til begrenset. Det er derfor ønskelig å finne opp instruksjoner som både er generelle (dvs. instruksjoner som kan anvendes over et bredt spekter av multimediaalgoritmer) og har best ytelsesfordel.
En teknikk for å frembringe operasjoner for anvendelse i multimedia-algoritmer er å kople en separat digital signaleringsprosessor (DSP) til en eksisterende allbruksprosessor (f.eks. Intel® 486 fabrikkert av Intel Corporation, Santa Clara, CA). Denne prosessoren allokerer jobber som kan utføres ved anvendelse av pakkede data (f.eks. bildeprosessering) til DSP-en.
En slik DSP inkluderer en multiplisér-akkumulér instruksjon som legger resultatet fra multiplikasjon av to verdier til en akkumuleirngsverdi. (se Kawakami, Yuichi et al., "A Single-Chip Digital Signal Processor for Voiceband Applications", IEEE International Solid-State Circuits Conference, 1980, s. 40-41). Et eksempel på multiplisér-akkumulér operasjonen for denne DSP-en er vist nedenfor i tabell 1, hvor instruksjonen utføres på dataverdiene A1 og B1 som aksesseres hhv. som Kilde 1 og Kilde2.
En begrensning ved denne instruksjonen er den dårlige effektiviteten-dvs. den opererer kun på 2 verdier og en akkumuleringsverdi. Å multiplisere og akkumulere to sett med 2 verdier krever for eksempel at følgende operasjoner utføres serielt: 1) multiplisér og akkumulér den første verdien fra det første settet, den første verdien fra det andre settet, og en akkumuleringsverdi som er null for å generere en midlertidig akkumuleringsverdi; 2) multiplisér og akkumulér den andre verdien fra det første settet, den andre verdien fra det andre settet, og den midlertidige akkumuleringsverdien for å generere resultatet;
En annen DSP inkluderer en multiplisér-akkumulér instruksjon som opererer på to sett med to verdier og en akkumuleringsverdi (se "Digital Signal Processor with Parallel Multipliers", patent nr. 4 771 470 - betegnes her "Ando et al."-referansen). Et eksempel på multiplisér-akkumulér instruksjonen for denne DSP-en er vist nedenfor i tabell 2, hvor instruksjonen utføres på dataverdiene Ai, A2, Bi og B4 som hhv. aksesseres som Kilde 1-4.
Ved anvendelse av denne teknikken multipliseres to sett på 2 verdier og legges deretter til en akkumuleringsverdi i én instruksjon.
Denne multiplisér-akkumulér instruksjonen har begrenset generell an-vendbarhet fordi den alltid legger til akkumuleringsverdien. Det er derfor van-skelig å anvende instruksjonen for andre operasjoner enn multiplisér-akkumulér. For eksempel anvendes ofte multiplikasjon av komplekse tall i multimedia-applikasjoner. Multiplikasjon av to komplekse tall (f.eks. rih og r2i2) ut-føres på følgende måte:
Denne DSP-en kan ikke multiplisere to komplekse tall ved å anvende én multiplisér-akkumulér instruksjon.
Begrensningene ved denne multiplisér-akkumulér instruksjonen kommer klarere frem når resultatet av en slik beregning trengs i en påfølgende multiplikasjon istedet for en akkumuleringsverdi. Dersom for eksempel realdelen ble beregnet ved anvendelse av DSP-en, måtte akkumuleringsverdien initialiseres til null for å beregne et korrekt resultat. Deretter må akkumuleringsverdien igjen initialiseres til null før imaginærdelen kan beregnes. For å utføre en ny multiplikasjon av det resulterende komplekse tallet og et tredje komplekst tall (f.eks. r3,i3) må det resulterende komplekse tallet settes sammen og lagres i det ak-septable minneformatet og akkumuleringsverdien må igjen initialiseres til null. Deretter kan den komplekse multiplikasjonen utføres som beskrevet ovenfor. I hver av disse operasjonene er ALU-en, som er reservert til akkumuleirngsver-dien, overflødig maskinvare og ekstra instruksjoner er nødvendig for å reini-tialisere denne akkumuleringsverdien. Disse ekstra instruksjonene ville ellers ha vært unødvendige.
En ytterligere begrensning ved denne teknikken er at dataene må aksesseres gjennom et kostbart flerportsminne. Dette er fordi multiplikatorene er forbundet direkte med dataminner. Mengden av parallellitet som kan utnyttes er derfor sterkt begrenset av kostnadene for mellomforbindelsen, og det faktum at denne mellomforbindelsen ikke er avkoplet fra instruksjonen.
Ando et al-referansen beskriver også at et alternativ til denne kostbare mellomforbindelsen er å introdusere en forsinkelse for hvert påfølgende data- t par som skai multipliseres. Denne løsningen reduserer enhver ytelsesfordel til de som gis av løsningen som tidligere er vist i tabell 1.
Ideen med flerportsminne eller parallell aksessering av minnet medfører vider bruk av multiple adresser. Denne eksplisitte bruken av en adresse for hvert fikspunkt viser klart at hovedideen med pakkede data ikke anvendes i denne teknikken.
Fra EP-A-0308124 (Visual information technologies, Inc.) er det dessuten kjent en høyhastighetsbildebehandlingsdatamaskin. Denne inneholder en rekke parallelle bildeprosessorer som styres av instruksjoner i et lager.
OPPSUMMERING AV OPPFINNELSEN
I samsvar med foreliggende oppfinnelse er det tilveiebrakt en prosessor som omfatter: - en registerfil for å lagre en første datapakke og en andre datapakke som hver inneholder fire initielle dataelementer, hvor hvert av de initielle dataelementer i den første datapakken tilsvarer et initielt dataelement i den andre datapakken, slik at det frembringes fire par med initielle dataelementer, - en dekoder for å dekode en instruksjon som spesifiserer den første og den andre datapakken som operander, og - en krets koplet til registerfilen og dekoderen, hvor kretsen som respons på instruksjonen multipliserer sammen de tilsvarende initielle dataelementer i den første og den andre datapakken for å generere tilsvarende mellom-dataelementer, hvilke mellom-dataelementer settes sammen i par til to sett. Prosessoren kjennetegnes ved at kretsen adderer mellom-dataelementene i hvert av de to settene for å generer to resultat-dataelementer, hvor hvert av de to resultat-dataelementene gir høyere presisjon enn de initielle dataelementene, og lagrer som resultat av eksekvering av den ene instruksjonen, de to resultat-dataelementene i ett register i registerfilen som en tredje datapakke, hvor den tredje datapakken inneholder bare de to resultat-dataelementene.
Fordelaktige utførelsesformer av oppfinnelsen fremgår av de vedføyde uselvstendige patentkravene 2- 15.
KORT BESKRIVELSE AV FIGURENE
Figur 1 illustrerer et datamaskinsystem med en utførelsesform av oppfinnelsen. Figur 2 illustrerer en registerfil i prosessoren ifølge en utførelsesform av oppfinnelsen. Figur 3 er et flytdiagram som illustrerer de generelle trinnene som følges av prosessoren for å manipulere data ifølge en utførelsesform av oppfinnelsen. Figur 4 illustrerer pakkede datatyper ifølge en utførelsesform av oppfinnelsen. Figur 5a illustrerer representasjoner av pakkede data i registeret ifølge en utførelsesform av oppfinnelsen. Figur 5b illustrerer representasjoner av pakkede data i registeret ifølge en utførelsesform av oppfinnelsen. Figur 5c illustrerer representasjoner av pakkede data i registeret ifølge en utførelsesform av oppfinnelsen. Figur 6a illustrerer et format for et kontrollsignal for å angi at det anvendes pakkede data ifølge en utførelsesform av oppfinnelsen. Figur 6b illustrerer et andre format for et kontrollsignal for å angi at det anvendes pakkede data ifølge en utførelsesform av oppfinnelsen. Figur 7 er et flytdiagram som illustrerer trinn for å utføre en multiplisér-addér operasjon på pakkede data ifølge en utførelsesform av oppfinnelsen. - - Figur 8 illustrerer en krets for å utføre multiplisér-addér operasjoner på pakkede data ifølge en utførelsesform av oppfinnelsen. Figur 9a-9e illustrerer et Wallace-tre for å utføre summering og reduk-sjon av delproduktene for en utførelsesform av foreliggende oppfinnelse. Figur 10a-10af illustrerer en utførelsesform av en krets som implementerer Wallace-treet i figurene 9a-9e for en utførelsesform av foreliggende oppfinnelse. Figur 11 illustrerer en krets for å utføre multiplisér-addér operasjoner på pakkede data ifølge en utførelsesform av oppfinnelsen.
DETALJERT BESKRIVELSE
I den følgende beskrivelsen blir det lagt frem en rekke spesifikke detaljer for å gi en skikkelig forståelse av oppfinnelsen. Det er imidlertid underforstått at oppfinnelsen kan praktiseres uten disse spesifikke detaljene. I andre tilfeller er velkjente kretser, strukturer og teknikker ikke vist for å unngå å tilsløre oppfinnelsen.
DEFINISJONER
For å gi et grunnlag for forståelse av beskrivelsen av utførelsesformene av oppfinnelsen, gis følgende definisjoner.
Bit X til Bit Y :
definerer er underfelt i binærtall. Bit seks til bit null i bitgruppen 001110102 (representert i toerbasis) representerer for eksempel underfeltet 1110102- Indeksen V som etterfølger et binærtall angir toerbasis. IOOO2 er derfor det samme som 810, mens Fi6 tilsvarer 15io. Rx: er et register. Et register er enhver anordning som kan lagre og levere data. Ytterligere funksjonalitet for et register er beskrevet nedenfor. Et register er ikke nødvendigvis inkludert i den samme blokken.(die).eller.i den samme, pakken som. prosessoren. SRC1.SRC2 og DEST: identifiserer lagerområder (f.eks. minneadresser, registre, osv.) Kildel -i og resultat1-i: - - -
representerer data.
OVERSIKT
Denne søknaden beskriver en apparatur i en prosessor som utfører multiplisér-addér operasjoner på pakkede data. I en utførelsesform utføres to multiplisér-addér operasjoner ved anvendelse av en enkelt multiplisér-addér instruksjon som vist nedenfor i tabell 3a og 3b--Tabell 3a viser en forenklet re-presentasjon av den beskrevne multiplisér-addér operasjonen, mens tabell 3b viser et eksempel av den beskrevne multiplisér-addér operasjonen på bit-nivå.
Den beskrevne utførelsesformen av multiplisér-addér operasjonen multipliserer således tilhørende 16-bits dataelementer i Kilde 1 og Kilde2 og genererer fire 32-bits mellomresultater. Disse 32-bits mellom resultatene summeres i par, hvilket produserer to 32-bits resultater som pakkes inn i sine respektive elementer i en resultatpakke. Som blir ytterligere beskrevet senere, kan alternative utførelsesf ormer variere antall bits i dataelementene, mellomresultatene og resultatene. I tillegg kan alternative utførelsesf ormer variere dataelementene som anvendes, antallet mellomresultater som genereres og antall elementer i den resulterende datapakken.
DATAMASKINSYSTEM
Figur 1 illustrerer et eksempel på et datamaskinsystem 100 ifølge en utførelsesform av oppfinnelsen. Datamaskinsystem 100 inkluderer en buss 101, eller en annen form for maskin- eller programvare for kommunikasjon, for å kommunisere informasjon og en prosessor 109 som er koplet til buss 101 for å prosessere informasjon. Prosessor 109 representerer en sentralproses-seringsenhet av en hvilken som helst type arkitektur, inklusive en CISC eller RISC type arkitektur. Datamaskinsystem 100 inkluderer videre et RAM eller en annen dynamisk lagringsanordning (betegnet hovedminne 104), som er koplet til buss 101 for å lagre informasjon og instruksjoner som skal eksekveres av prosessor 109. Hovedminne 104 kan også benyttes til å lagre midlertidige variabler eller annen mellomliggende informasjon under eksekvering av instruksjoner av prosessor 109. Datamaskinsystem 100 inkluderer også et ROM 106 og/eller en annen statisk lagringsanordning som er koplet til buss 101 for å lagre statisk informasjon og instruksjoner for prosessor 109. Datalagringsanordning 107 er koplet til buss 101 for å lagre informasjon og instruksjoner.
Figur 1 viser også at prosessor 109 inkluderer en eksekveirngsenhet 130, en multiplisér-addér enhet 145, en registerfil 150, et hurtigbuffer 160, en dekoder 165 og en intern buss 170. Prosessor 109 inkluderer selvfølgelig ytterligere kretser som ikke er nødvendig å kjenne til for å forstå oppfinnelsen.
Eksekveringsenhet 130 anvendes for å eksekvere instruksjoner som mottas av prosessor 109.1 tillegg til å gjenkjenne instruksjoner som typisk er implementert i generelle allbruksprosessorer, gjenkjenner eksekveringsenhet
130 instruksjoner 142 i pakket instruksjonssett 140 for å utføre operasjoner på pakkede dataformater.-Rakket instruksjonssett-140-inkluderer-instruksjoner for å gjennomføre multiplisér-addér operasjoner. I tillegg kan pakket instruksjonssett 140 også inkludere instruksjoner for å kunne utføre en pakkingsoperasjon, en utpakkingsoperasjon, en addér-pakke operasjon, en murtiplisér-pakke operasjon, en skift-pakke operasjon, en sammenlikn-pakke operasjon, en elementtellingsoperasjon og et sett av logiske pakkeoperasjoner (inklusive pakke-AND, pakke-AND-NOT, pakke-OR og pakke-XOR) som beskrevet i "A Set of Instructions for Operating on Packed Data" inlevert , med serienr. Eksekveringsenhet 130 inkluderer videre multiplisér-addér enhet 145 for å utføre multiplisér-addér operasjoner.
Eksekveringsenhet 130 er koplet til registerfil 150 via intern buss 170. Registerfil 150 representerer et lagringsområde for prosessor 109 for å lagre informasjon, inklusive data. Eksekveringsenhet 130 er videre koplet til hurtigbuffer 160 og dekoder 165. Hurtigbuffer 160 benyttes til å lagre data og/eller kontrollsignaler fra for eksempel hovedminne 104. Dekoder 165 benyttes til å dekode instruksjoner som mottas fra prosessor 109 til kontrollsignaler og/eller mikrokode-inngangspunkter. Som respons på disse kontrollsignalene og/eller mikrokode-inngangspunktene utfører eksekveringsenhet 130 de angjeldende operasjonene. Dersom det for eksempel mottas en adderingsinstruksjon, forår-saker dekoder 165 at eksekveringsenhet 130 utfører den nødvendige addi-sjonen. Dekoder 165 kan realiseres med et hvilket som helst antall forskjellige mekanismer (f.eks. en oppslagstabell, maskinvare, en PLA osv.). Nåreksek-veringen av de forskjellige instruksjonene for dekoderen og eksekveringsen-heten er representert ved en rekke if-then uttrykk, er det således underforstått at eksekveringen av en instruksjon ikke krever en seriell prosessering av disse uttrykkene. Enhver mekanisme for logisk å gjennomføre denne if-then proses-seringen betraktes å være innenfor oppfinnelsens rekkevidde.
Figur 1 viser i tillegg at en datalagringsanordning 107, så som en mag-netplate eller en optisk plate, og dens tilhørende pratedrev, kan koples til datamaskinsystem 100. Datamaskinsystem 100 kan kan også via buss 101 koples til en skjermanordning 121 for å vise informasjon for en datamaskinbruker. Skjermanordning 121 kan inkludere en systembuffer, spesialiserte grafikkgjengivelsesanordninger, et katodestrålerør og/eller en flatskjerm. En alfanumerisk inngangsanordning 122, som inkluderer alfanumeriske og andre taster, er typisk koplet til buss 101 for å kommunisere informasjon og kommandovalg til prosessor 109. En annen type inngangsanordning for brukeren er kursorkontroll 123, så som en mus, en styreball, en penn, en berøringsskjerm eller piltaster for å kommunisere retningsinformasjon og kommandovalg til prosessor 109, og for å styre kursorbevegelsen på skjermanordning 121. Denne inngangsanordningen har typisk to frihetsgrader langs to akser, en første akse (f.eks. x) og en andre akse (f.eks. y), som gjør at anordningen kan spesifisere posisjoner i planet. Denne oppfinnelsen skal imidlertid ikke begrenses til inngangsanordninger med kun to frihetsgrader.
En annen anordning som kan være koplet til buss 101 er en utskriftsan-ordning 124 som kan anvendes til å skrive instruksjoner, data eller annen informasjon på et medie så som papir, film eller tilsvarende medier. I tillegg kan datamaskinsystem 100 være koplet til en anordning for lydopptak og eller av-spilling 125, så som en lyddigitaliserer som er koplet til en mikrofon for å lagre informasjon. Anordningen kan videre inkludere en høytaler som er koplet til til en digital-til-analog (D/A) konverter for å avspille de digitaliserte lydsignalene.
Datamaskinsystem 100 kan også være en terminal i et nettverk av data-maskiner (f.eks. et LAN). Datamaskinsystem 100 vil da være et undersystem i nettverket. Datamaskinsystem 100 inkluderer eventuelt en bildedigitaliseringsanordning 126. Bildedigitaliseringsanordning 126 kan anvendes for å pakke inn bilder som kan overføres til andre i nettverket.
I en utførelsesform kan prosessor 109 i tillegg ha støtte for et instruksjonssett som er kompatibelt med x86-instruksjonssettet som benyttes av eksisterende prosessorer (så som Pentium® prosessoren) fabrikkert av Intel Corporation, Santa Clara, California. I en utførelsesform støtter således prosessor 109 alle operasjonene som støttes i IA™-lntel Architecture, som er definert ved Intel Corporation, Santa Clara, California (se Micro<p>rocessors. Intel Data Books volum 1 og volum 2, 1992 og 1993 og som er tilgjengelige fra Intel of Santa Clara, California). Prosessor 109 kan således støtte eksisterende x86-operasjoner i tillegg til operasjonene i oppfinnelsen. Selv om oppfinnelsen er beskrevet som inkorporert i et x86-basert instruksjonssett, kan alternative utførelsesf ormer inkorporere oppfinnelsen i andre instruksjonssett. Oppfinnelsen-kan for-eksempel-inkorporeres-ien 64-bits prosessor ved anvendelse av et nytt instruksjonssett.
Figur 2 illustrerer prosessorens registerfil ifølge en utførelsesform av oppfinnelsen. RegisterfiM 50-anvendes for å lagre informasjon, inklusive kon-troll/status-informasjon, heltallsdata, flyttallsdata og pakkede data. I utførel-sesformen som er vist i figur 2 inkluderer registerfilen 150 heltallsregistre 201, registre 209, statusregistre 208 og instruksjonspekerregister 211. Statusregistre 208 angir status for prosessor 109. Instruksjonspekerregister 211 lagrer adressen til den neste instruksjonen som skal eksekveres. Heltallsregistre 201, registre 209, statusregistre 208 og instruksjonspekerregister 211 er alle koplet til intern buss 170. Eventuelle andre registre vil også være koplet til intern buss 170.
I en utførelsesform anvendes registrene 209 for både pakkede data og flyttallsdata. I en slik utførelsesform må prosessor 109, til enhver tid, enten be-handle reg istrene 209 som om de er stakk- refererte flyttallsregistre eller ikke stakk-refererte datapakkeregistre. I denne utførelsesf ormen er det inkludert en mekanisme som gjør at prosessor 109 kan skifte mellom å operere registrene 209 som stakk-refererte flyttallsregistre og ikke stakk-refererte datapakkeregistre. I en annen slik utførelsesform kan prosessor 109 samtidig operere registrene 209 som ikke stakk-refererte flyttallsregistre og datapakkeregistre. Som et annet eksempel kan de samme registrene i en annen utførelsesform anvendes for å lagre heltallsdata.
Det kan selvfølgelig også gjennomføres alternative utførelsesf ormer for å inneholde flere eller færre registersen. En alternativ utførelsesform kan for eksempel inkludere et separat sett med flyttallsregistre for å lagre flyttallsdata. Som et annet eksempel kan en alternativ utførelsesform inkludere et første sett med registre, hvert for å lagre kontroll/status-informasjon og et andre sett med registre, som hvert kan lagre heltalls-, flyttalls- og pakkede data. For oversik-tens skyld skal ikke registre i en utførelsesform begrenses i betydning til en spesifikk type krets. Et register i en utførelsesform trenger kun å kunne lagre og levere data og utføre funksjonene som er beskrevet her.
De forskjellige registersettene (f.eks. heltallsregistrene 201 og registrene 209) kan inkludere forskjellig antall registre og/eller registre med forskjellig størrelse. I en utførelsesform lagrer heltallsregistrene 201 for eksempel tretti-to bits, mens. registrene 209 lagrer åtti bits (alle åtti bitsene benyttes for å lagre flyttallsdata, mens kun seksti-fire bits benyttes for pakkede data). I tillegg inneholder registrene 209 åtte registre, R0212a til R7212h. RA2A2a, R2212b og -R3212C er eksempler på individuelle registre i registrene 209. Tretti-to bits av et register i registrene 209 kan flyttes inn i et heltallsregister i heltallsregistrene 201. Likeledes kan en verdi i et heltallsregister flyttes inn i tretti-to bits i et register i registrene 209.1 en annen utførelsesform inneholder heltallsregistrene hver 64 bits, og 64 bits med data kan således flyttes mellom heltallsregisteret 201 og registrene 209.
Figur 3 er et flytdiagram som illustrerer de generelle trinnene som gjen-nomføres av prosessoren for å manipulere data ifølge en utførelsesform av oppfinnelsen. Det vil si, figur 3 illustrerer trinnene som følges av prosessor 109 når den utfører en operasjon på pakkede data, utfører en operasjon på upakkede data eller utfører en annen operasjon. Slike operasjoner inkluderer for eksempel en innlastingsoperasjon for å laste inn i et register i registerfil 150 data fra hurtigbuffer 160, hovedminne 104, ROM 106 eller datalagringsanordning 107.
Ved trinn 301 mottar dekoder 165 et kontrollsignal fra enten hurtigbuffer 160 eller buss 101. Dekoder 165 dekoder kontrollsignalet for å bestemme hvilke operasjoner som skal utføres.
Ved trinn 302 aksesserer dekoder 165 registerfil 150 eller en plass i minnet. Registre i registerfil 150, eller adresser i minnet, aksesseres avhengig av registeradressen som er spesifisert i kontrollsignalet. For en operasjon på pakkede data kan for eksempel kontrollsignalet inkludere adressen til registrene SRC1, SRC2 og DEST. SRC1 er adressen til det første kilderegisteret. SRC2 er adressen til det andre kilderegisteret. I noen tilfeller er SRC2-adressen valgfri, siden ikke alle operasjoner krever to kildeadresser. Dersom SRC2-adressen ikke er nødvendig for en operasjon, anvendes kun SRC1 -adressen. DEST er adressen til destinasjonsregisteret hvor resultatdataene lagres. I en utførelsesform anvendes også SRC1 eller SRC2 som DEST. SRC1, SRC2 og DEST er beskrevet mer utfyllende i forbindelse med figur 6a og figur 6b. Datene som er lagret i de tilhørende registrene henvises til som hhv. Kilde 1, Kilde2 og Resultat. Hver av disse dataene har en lengde på seksti-fire bit. Len annen.utførelsesfoimav-oppfinnelsen.kan-hvilket som helst av, eller alle, registrene SRC1, SRC2 og DEST definere en minneadresse i det adres-serbare minneområdet i prosessor 109. SRC1 kan for eksempel identifisere en -minneadresse i hovedminnet 104, mens SRC2 identifiserer et første register i heltallsregistrene 201 og DEST identifiserer et andre register i registrene 209. For å forenkle beskrivelsen her, vil oppfinnelsen bli beskrevet i forbindelse med aksessering av registerfil 150. Disse aksesseringene kunne imidlertid like gjeme ha vært til minnet.
Ved trinn 303 tillates eksekveringsenhet 130 å utføre operasjonen på de aksesserte dataene. Ved trinn 304 lagres resultatet tilbake i registerfil 150 som spesifisert av kontrollsignalet.
DATA OG LAGRINGSFORMATER
Figur 4 illustrerer pakkede datatyper ifølge en utførelsesform av oppfinnelsen. Tre formater for pakkede data er illustrert; Pakket bitgruppe 401, pakket ord 402 og pakket dobbelord 403. Pakket bitgruppe, ifølge en utførelsesform av oppfinnelsen, er seksti-fire bits lang og inneholder åtte dataelementer. Hvert dataelement er en bitgruppe lang. Generelt er et dataelement en individuell datamengde som er lagret i et enkelt register (eller på en minneadresse) med andre dataelementer av samme lengde. I en utførelsesform av oppfinnelsen er antall dataelementer som er lagret i et register seksti-fire bits delt på lengden i bits for et dataelement.
Pakket ord 402 er seksti-fire bits langt og inneholder fire ord-dataelementer 402. Hvert ord 402 inneholder seksten bits med informasjon.
Pakket dobbeltord 403 er seksti-fire bits langt og inneholder to dobbeltord-dataelementer 403. Hvert dobbeltord 403 inneholder tretti-to bits med informasjon.
Figur 5a til 5c illustrerer representasjonen av pakkede data i et register ifølge en utførelsesform av oppfinnelsen. Registerrepresentasjonen 510 av en pakket fortegnsløs bitgruppe (unsigned packed byte) illustrerer lagringen av en pakket fortegnsløs bitgruppe 401 i et av registrene R0212a til R7212h. Informasjon for hver bitgruppe-dataelement lagres i bit syv til bit null for bitgruppe null, i bit femten til bit åtte for bitgruppe en, bit tjuetre til bit seksten for bitgruppe to, bit trettien til bit tjuefire for bitgruppe tre, bit trettini til bit trettito for bitgruppe fire,
.bit.førtisyv.til.bit.førti.for_bitgruppe.fem,.bit femtifem til bit.førtiåtte forbitgruppe seks, bit sekstitre til bit femtiseks for bitgruppe syv. Alle tilgjengelige bits brukes således i registeret. Denne lagringsmåten øker prosessorens lag-ringseffektivitet. 1 tillegg, med åtte dataelementer som aksesseres,-kan det nå
utføres en operasjon på åtte dataelementer samtidig. Registerrepresentasjonen 511 av en pakket bitgruppe med fortegn (signed packed byte) illustrerer lagringen av en pakket bitgruppe 401 med fortegn. Merk at den åttende bit i hver bitgruppe angir fortegnet.
Registerrepersentasjonen 512 av et fortegnsløst pakket ord (unsigned packed word) illustrerer hvordan ord tre til ord null lagres i et av registrene i registrene 209. Bit femten til bit null inneholder datainformasjon for ord null, bit trettien til bit seksten inneholder datainformasjon for ord en, bit førtisyv til bit trettito inneholder datainformasjon for ord to og bit sekstitre til bit førti åtte inneholder datainformasjon for ord tre. Registerrepresentasjonen 513 av et pakket ord med fortegn ( signed packed word) er tilsvarende som registerrepresentasjonen 512 av et fortegnsløst dataord. Merk at den sekstende bit i hvert dataord angir fortegnet.
Registerrepresentasjonen 514 av et fortegnsløst pakket dobbeltord (unsigned packed doubleword) illustrerer hvordan registrene 209 lagrer to doble ord. Dobbeltord null lagres i bit trettien til bit null i registeret. Dobbeltord en
lagres i bit sekstitre til bit trettito i registeret. Registerrepresentasjonen 515 av et pakket dobbeltord med fortegn (signed packed doubleword) er tilsvarende som registerrepresentasjonen 512 av et pakket fortegnsløst dobbeltord. Merk at den nødvendige fortegnsbiten er den trettiandre bit i hvert dobbeltord.
Som tidligere nevnt kan registrene 209 anvendes både for pakkede data og flyttallsdata. I denne utførelsesf ormen av oppfinnelsen vil den individuelle programprosessoren 109 kunne måtte holde rede på hvorvidt et gitt register, f.eks. Ro212a, lagrer pakkede data eller flyttallsdata. I en alternativ utførelses-form kan prosessor 109 lese typen av data som lagres i individuelle registre i registrene 209. Denne alternative utførelsesformen kunne da generere feil dersom det for eksempel forsøkes å utføre en addisjonsoperasjon for pakkede data på flyttallsdata.
KONTROLLSIGNALEORMATER
Det følgende beskriver en utførelsesform av formatene for kontrollsignalene som anvendes av prosessor 109 for å manipulere pakkede data. I en utførelsesform av oppfinnelsen er kontrollsignalene representert ved trettito bits. Dekoder 165 kan motta kontrollsignalet fra buss 101.1 en annen utførel-sesform kan dekoder 165 også motta slike kontrollsignaler fra hurtigbuffer 160.
Figur 6a illustrerer et kontrollsignalformat for å angi bruk av pakkede data ifølge en utførelsesform av oppfinnelsen. Operasjonsfettet OP 601, bit trettien til bit tjueseks, gir informasjon om operasjonen som skal utføres av prosessor 109; for eksempel pakkeaddisjon osv. SRC1 602, bit femogtyve til bit tyve, gir kilderegisteradressen, et register i registerene 209. Dette kilderegisteret inneholder den første datapakken, Kildel, som skal anvendes under eksekveringen av kontrollsignalet. Tilsvarende inneholder SRC2 603, bit nitten til bit fjorten, adressen til et register i registrene 209. Dette andre kilderegisteret inneholder datapakken Kilde2, som skal anvendes under eksekveringen av kontrollsignalet. DEST 605, bit fem til bit null, inneholder adressen til et register i registrene 209. Dette destinasjonsregisteret lagrer resultat-datapakken Resultat, fra datapakke-operasjonen.
Kontrollbits SZ 610, bit tolv og tretten, angir lengden på dataelementene i kilderegistrene for den første og den andre datapakken. Dersom SZ610 er lik 012 er datapakken formattert som pakket bitgruppe 401. Dersom SZ610 er lik 102 er datapakken formattert som pakket ord 402. SZ 610 lik 002 eller 112 er reservert. I en annen utførelsesform kan imidlertid en av disse verdiene benyttes til å angi pakket dobbeltord 403.
Kontrollbit T 611, bit elleve, angir hvorvidt operasjonen skal utføres i utfyllingsmodus. Dersom T 611 er lik en, utføres det en utfyllingsoperasjon. Dersom T 611 er null, utføres det ingen utfyllingsoperasjon. Utfyllingsoperasjoner vil bli beskrevet senere.
Kontrollbit S 612, bit ti, angir om det er en operasjon med fortegn. Dersom S 612 er lik en, utføres det en operasjon med fortegn. Dersom S 612 er lik null, utføres det en operasjon uten fortegn.
Figur 6b illustrerer et andre kontrollsignalformat for å angi bruken av pakkede data ifølge en utførelsesform av oppfinnelsen. Dette formatet tilsvarer det generelle heltalls-opcode formatet som er beskrevet i "Pentium Processor
-Family.User^s Manual" som er-tilgjengelig.fra Intel Corporation,-Literature Sales, P.O. Box 7641, Mt. prospect, IL, 60056-7641. Merk at OP 601, SZ 610, T 611 og S 612 alle er kombinert i et stort felt. For noen kontrollsignaler er bit tre til bit fenrSRC1-602.1 en utførelsesform,-hvor det er en SRC1 602-adresse, svarer bit tre til bit fem også til DEST 605.1 en alternativ utførelsesform, hvor det er en SRC2 603 adresse, svarer bit null til bit to også til DEST 605. For andre kontrollsignaler, så som en pakke-skift operasjon, representerer bit tre til bit fem en utvidelse av opcode-feltet. I en utførelsesform lar denne utvidelsen en programmerer inkludere en direkteverdi med kontrollsignalet, så som en skift-telleverdi (shift count value). I en utførelsesform følger direkteverdien bak kontrollsignalet. Dette er beskrevet mer i detalj i "Pentium Processor Family Usefs Manual", i appendiks F, sidene F-1 til F-3. Bit null til bit to representerer SRC2 603. Dette generelle formatet muliggjør registe r-ti l-reg iste r, minne-til-register, register-ved-minne, register-ved-register, register-ved-direkteverdi og register-til- minne adressering. I en utførelsesform kan dette generelle formatet også
tillate heltallsregister-til-register og register-til-heltallsregister registeradres-sering.
BESKRIVELSE AV UTFYLLINGSMODUS
Som tidligere nevnt angir T 611 hvorvidt operasjonene eventuelt utfyller.
I tilfeller hvor resultatet av en operasjon, mens utfyllingsmodus er aktivt, går utenfor dataformatets rekkevidde {underflow eller overflow), blir resultatet trunkert. Trunkering betyr at resultatet settes til den største eller den minste verdien som er mulig dersom et resultat går ut over dataformatets minimums- eller maksimumsverdi. Ved underflow trunkerer utfyllingen resultatet til lavest mulig verdi og ved overflow til høyest mulig verdi. Rekkevidden for hvert dataformat er vist i tabell 4.
Som nevnt ovenfor angir T 611 hvorvidt det utføres utfyllingsoperasjoner. Derfor, når dataformatet unsigned byte anvendes, og resultatet av en operasjon = 258 og utfyllingsmodus er aktivt, vil resultatet bli trunkert til 255 før det lagres i operasjonens destinasjonsregister. Tilsvarende, dersom resultatet av en operasjon = -32999 og prosessor 109 anvender dataformatet signed word, og med utfyllingsmodus aktivt, vil resultatet bli trunkert til -32768 før det lagres i operasjonens destinasjonsregister.
MULTIPLISÉR- ADDÉR OPERASJONEN
I en utførelsesform av oppfinnelsen inneholder registeret SRC1 pakkede data (Kildel), registeret SRC2 pakkede data (Kilde2) og registeret DEST vil
—inneholde-resultatet-(Resultat)-som-fremkommer-ved-å-utføre en multiplisér-addér operasjon mellom Kildel og Kilde2.1 det første trinnet i multiplisér-addér
operasjonen vil Kildel få hvert dataelement uavhengig multiplisert med det til-hørende elementet i Kilde2 for å generere et sett av respektive mellomresultater. Disse mellomresultatene summeres parvis for å generere resultatet av multiplisér-addér operasjonen.
I en utførelsesform av oppfinnelsen opererer multiplisér-addér operasjonen på pakkede data med fortegn, og trunkerer resultatene for å unngå overflows. I tillegg opererer operasjonen på pakkede ord og resultatet er et pakket dobbelord. Alternative utførelsesf ormer kan imidlertid tillate operasjonen for andre typer pakkede data.
Figur 7 er et flytdiagram som illustrerer trinnene for å utføre multiplisér-addér operasjoner på pakkede data ifølge en utførelsesform av oppfinnelsen.
Ved trinn 701 dekoder dekoder 165 kontrollsignalet som er mottatt av prosessor 109. Dekoder 165 dekoder således operasjonskoden for en multiplisér-addér operasjon.
Ved trinn 702 aksesserer dekoder 165, via intern buss 170, registrene 209 i registerfil 150 gitt adressen til registrene SRC1 602 og SRC2 603. Registrene 209 leverer de pakkede dataene som er lagret i registeret SRC1 602 (Kildel) og de pakkede dataene som er lagret i registeret SRC2 603 (Kilde2) til eksekveringsenhet 130. Det vil si. at registrene 209-kommuniserer de pakkede dataene til eksekveringsenhet 130 via intern buss 170.
Ved trinn 703 lar dekoder 165 multiplisér-addér enhet 145 i eksekveringsenhet-130-utføre instruksjonen. I trinn 714 gjøres-følgende. Kildel sine bits femten til null multipliseres med Kilde2 sine bits femten til null og det genereres et første 32-bits mellomresultat (Mellomresultat 1). Kildel sine bits tretti-en til seksten multipliseres med Kilde2 sine bits tretti-en til seksten og det genereres et andre 32-bits mellomresultat (Mellomresultat 2). Kildel sine bits førti-syv til tretti-to multipliseres med Kilde2 sine bits førti-syv til tretti-to og det genereres et tredje 32-bits mellomresultat (Mellomresultat 3). Kildel sine bits seksti-tre til ført i-åtte multipliseres med Kilde2 sine bits seksti-tre til ført i-åtte og det genereres et fjerde 32-bits mellomresultat (Mellomresultat 4). Mellomresultat 1 legges til Mellomresultat 2 og utgjør bits null til tretti-en i resultatet og Mellomresultat 3 legges til Mellomresultat 4 og utgjør bits seksti-tre til tretti-to i resultatet.
Forskjellige utførelsesformer kan utføre multiplikasjonene og addi-sjonene serielt, parallelt eller i en kombinasjon av serielle og parallelle operasjoner.
Ved trinn 720 lagres resultatet i registeret DEST.
MULTIPLISÉR- ADDÉR KRETS FOR PAKKEDE DATA
I en utførelsesform kan multiplisér-addér operasjonene eksekveres på mange dataelementer under det samme antallet klokkesykluser som en enkelt multiplikasjon mellom upakkede data. For å oppnå eksekvering med samme antall klokkesykluser anvendes parallellitet. Det vil si at registrene blir satt til å utføre multiplisér-addér operasjonene på dataelementene samtidig.
Til oppsummering illustrerer figur 8 en krets for å utføre multiplisér-addér operasjoner på pakkede data ifølge en utførelsesform av oppfinnelsen. Operasjonskontroll 800 prosesserer kontrollsignalet for multiplisér-addér instruksjonene. Operasjonskontroll 800 sender ut signaler til Enable 880 for å styre pakke-multiplisérer-addérer 801.
Pakke-multiplisérer-addérer 801 tar følgende inngangsdata : Kildel [63:0] 831, Kilde2[63:0] 833 og Enable 880. Pakke-multiplisérer-addérer 801 inkluderer fire 16x16multiplikatorskretser: 16x16 multiplikator A 810,16x16 multiplikator B 811,16x16 multiplikator C 812 og 16x16 multiplikator D 813. 16x16 multiplikator A 810 tar som inngangsdata Kildel [15:0] og Kilde2 [15:0]. 16x16 multiplikator B 811 tar som inngangsdata Kildel [31:16] og Kilde2 [31:16]. 16x16 multiplikator C 812 tar som inngangsdata Kildel [47:32] og Kilde2 [47:32]. 16x16 multiplikator D 813 tar som inngangsdata Kildel [63:48] og Kilde2 [63:48]. De 32-bits mellomliggende resultatene som genereres av 16x16 multiplikator A 810 og 16x16 multiplikator B811 mottas av adderer 1350, mens de 32-bits mellomliggende resultatene som genereres av 16x16 multiplikator C812 og 16x16 multiplikator D813 mottas av adderer 851.
Adderer 850 og adderer 851 legger sammen sine respektive 32-bits inngangsdata. Utgangen fra adderer 850 (dvs. Resultat-bitsene 31 til null i resultatet) og utgangen fra adderer 851 (dvs. Resultat-bitsene 63 til 32 i resultatet) kom bineres til det 64-bits resultatet og kommuniseres til Resultat-registeret
871.
I en utførelsesform utgjøres hver av addererene 851 og 850 av en 32-bits adderer med passende overføringsforsinkelser. Alternative utførelsesf ormer kan imidlertid realisere adderer 850 og adderer 851 på en hvilken som helst måte.
Det å utføre en ekvivalent til denne multiplisér-addér operasjonen med DSP-prosessoren fra tidligere teknikk, som er beskrevet med referanse til tabell 2, krever en instruksjon for å nulle ut akkumuleringsverdien og fire akkumule-ringsinstruksjoner.
I en utførelsesform av multiplisér-addér enhet 145 ifølge foreliggende oppfinnelse er hver 16-bits multiplikator som anvendes for multiplikasjons-operasjonene på pakkede data implementert ved anvendelse av en 2-bits Booth-algoritme. Hovedoppgaven til Booth-algoritmen i multiplikatorer er å redusere antallet delprodukter som skal summeres. Færre delprodukter reduserer kravet til maskinvare og minneområde for multiplikatoren. Tabell 5 nedenfor beskriver en vanlig 16-bits multiplikasjonsprosess hvor det genereres 16 delprodukter. Hvert delprodukt skiftes en bit mot venstre og inneholder enten alle "0"-leddene eller en eksakt kopi av multiplikanden, avhengig av hvorvidt den respektive bit i multiplikatoren er "1" eller "0". Et 32-bits resultat genereres ved å summere alle 16 delproduktene bit for bit.
På den annen side; 2-bits Booth-multiplikatoren som er vist nedenfor i tabell 6 virker på en annen måte. I dette tilfellet er det totalt 8 delprodukter og " h"veft"délpfodukt"er"17 Bits langt Hvert delprodukt har sin egen Booth-innkoder som gir innholdet i det respektive delproduktet. I alternative utførelsesf ormer kan andre Booth-innkoderskjemaer anvendes til å velge delprodukter.
Én typisk 2-bits Booth-innkoder har fem utganger, som er for null, pluss 1, pluss 2, minus 1 og minus 2 operasjoner. Dens sannhetstabell er gitt nedenfor i tabell 6.
Som beskrevet i tabell 6 er yk+1, yk og yk-1 nabo-multiplikatorbits i ned-adgående signifikansnivå. Tabell 7 nedenfor beskriver ytterligere formen på delproduktene ifølge utgangene fra Booth-innkoderen.
I stedet for å fortegnsutvide delproduktene anvendes det en fortegns-genereringsmetode for å redusere antallet Carry Same Address (CSA'er) som er nødvendige for delproduktsreduksjon. Tabell 8 viser fremgangsmåten for fortegnsgenerering. Komplementet til fortegnsbiten i et delprodukt prependeres til partialproduktet. To ener-bits blir da prependert til komplementet til fortegnsbiten.
I en utførelsesform inneholder hver Booth-innkoder 3 nabo-multiplikatorbits (yO er den minst signifikante bit og y15 er den mest signifikante bit av multiplikatorbitsene). Formen på delproduktet bestemmes av 17 velgere og en negeringskrets som er tilkoplet en partikulær Booth-innkoder. Databit-sene i velgerne inneholder to nabo-multiplikatorbits, deres komplementer og Vcc (for nulloperasjonen). De valgte utgangene går deretter gjennom en laby-rint av et delprodukts-reduksjonstre, ofte betegnet et Wallace-tre.
Når alle delproduktene er funnet starter summasjonen av disse. Wallace-treet utgjøres av full-addere og halv-addere. Figurene 9a til 9e illustrerer Wallace-treet mens det utfører summasjonen og reduksjonen av delproduktene for en utførelsesform av foreliggende oppfinnelse, og som er implementert i hver av de fire 16-bits multiplikatorene i multiplisér-addér enhet 145. Som illustrert blir åtte delprodukter redusert til seks delprodukter, deretter til fire delprodukter, deretter til tre delprodukter og til slutt til to delprodukter.
Mer spesifikt, som illustrert i figurene 9a til 9e, representerer indeksene i hver rad bits i et delprodukt (asei5, as15, a14-a0). Hver rad representerer et individuelt delprodukt. Negh-nega representerer +1 -delen av et toer-komplement, for hvert delprodukt. Dersom en gitt Booth-innkodet bit i multiplikatoren er negativ, er derfor det tilhørende delproduktets "neg"-bit lik 1, som sendes videre til neste rad.
I tillegg, som videre illustrert i figurene 9a til 9e, representerer S<posisjon><addernr> suiD-delen av en carry-save adder. <addemr.> angir hvilken rad av addere sum tilhører. Addere er nummerert fra topp til bunn i figurene 9a-9e.
<posisjon> angir hvilken bit-posisjon (0....31) som denne adderen opererer på. S42 er for eksempel summen for en carry-save adder 2 som opererer på bit-posisjon 4.
C<Posis|onxnivå> representerer overføringsdelen i en carry-save adder. <ievei> angir den respektive raden av addere for overføringen. <p0sisjofi> angir hvilken bit-posisjon (0....31) som denne adderen opererer på. En carry-save adder kan være en full-adder eller en halv-adder. En full-adder legger sammen 3 bits. En halv-adder legger sammen to bits.
Figurene 9a-9e illustrerer videre implementasjonen av fortegns-genereringsmetoden som tidligere er beskrevet. Som illustrert genererer for-tegnsgenereringsmetoden en '1 i bit-posisjon 16 i raden over den første delproduktsraden. I den siste delproduktsraden, dersom det mest signifikante Booth-innkodede tallet er negativt, genereres det en 1 i en rad under fordi delproduktet blir toer-komplementert. Denne prosessen vil typisk kreve ti rader i stedet for åtte. Jo flere rader en multiplikasjon har, desto mer maskinvare er nødvendig for å redusere delproduktene til to tall som en carry-propagate adder kan legge til i.
Binærmultiplikasjon utføres imidlertid gjennom addisjon. Når to tall adderes, er tallenes rekkefølge likegyldig. Resultatet blir det samme uavhengig av hvilket tall som kommer først. Dette prinsippet benyttes i Wallace-treet for å redusere antallet nødvendige carry-save operasjoner. Spesifikt, i en utførel-sesform, flyttes eneren i bit-posisjon 16 i den første raden i figur 9a ned til bit-posisjon 16 i den siste raden i figur 9, som også inneholder negh. Følgelig er det et lavere krav til maskinvare for å utføre reduksjonen, siden det anvendes færre rader. Figur 9b illustrerer resultatet fra første reduksjonsnivå. Boksene angir hvilke bits carry-save adderene opererer på. Et antall bits flyttes rundt for å få plass til alt i seks rader. For eksempel flyttes bit dsei5 til den første raden. Cse-is flyttes til femte rad. En bit må imidlertid kun flyttes opp eller ned i den samme bit-posisjonen. Fra figur 9b til 9c er antallet rader redusert til 4. Fra figur 9c til 9e er antallet rader redusert til 3. Til slutt reduserer en ytterligere rad med carry-save addere antallet rader til 2, som vist i figur 9e. Figurene 10a-10f illustrerer en utførelsesform av en krets, som utgjøres av full-addere og halv-addere, som implementerer Wallace-tre diagrammet som er illustrert i figurene 9a-9e. Figur 11 illustrerer en utførelsesform av et blokkdiagram av enheten. To identiske 16-bits multiplikatorer er illustrert. Multiplikatorene kan utføre multiplisér-addér operasjonen enten på bit 0-31 eller bit 63-32. Det vil også gis ytterligere to 16-bits multiplikatorer, med en veldig lik struktur som multiplikatorene som er illustrert, for å komplettere multiplisér-addér enhet 145. Som illustrert gjennomfører hver multiplikator en 16-bits multiplikasjon, hvilket resulterer i to delprodukter, på 1,5 klokkesykluser. I den neste halve klokkesyklusen, som er den lave fasen i den 34. syklusen, summeres igjen de fire delproduktene som er generert av multiplikatorene 1110 og 1120 av en 4:2 CSA 1130 (Sumres og coutres). De valgte dataene latches sammen med delproduktene i multiplikator 1120.1 den høye fasen av den 35. klokkesyklusen genererer CPA 1140 et 32-bits resultat ved å addere resultat-delproduktene. Den siste oppdelingen av 32-bits summen utføres av en muxlatch utenfor fub-en og de valgte dataene skrives tilbake under den lave fasen i klokkesyklus 35.
I en utførelsesform kjører multiplisér-addér enheten med et 3-forsin-keIse-1-gjennomløp skjema. Sagt på en annen måte, enhet 145 krever 3 klokkesykluser for å fullføre en jobb i tilfeller med en strøm av inngangsdata som ikke er organisert i en pipeline. Alle inngangene til enhet 145 legges i en buffer, hvilket gir veldig liten kapasitet til verden utenfor.
Selv om dataene er tilgjengelige ved inngangene til enhet 145 ved be-gynnelsen av 321, er det ikke sikkert at de er gyldige før 33H begynner. Multiplikasjonen begynner derfor ved starten på 33H. Under 33H går de stabile og gyldige dataene ved multiplikand-inngangene gjennom forsinkelseselementene og latches av hhv. latcher 1160 og 1170. Samtidig går dataene ved multiplikator-inngangene gjennom inngangsbufrene og Booth-innkoderene 1165 og 1175 og latches av latcherene 1180 og 1182. På dette tidspunktet er dataene i både multiplikator- og multiplikandbanene perfekt synkronisert med hverandre. 1331 går dataene gjennom bitvelgerarrayet og et sett med full-addere som utgjør den første delen av Wallace-treet og blir gyldige før oppstartstiden for latcherene 1180 og 1182. Antallet delprodukter er på dette tidspunkt redusert fra 8 til 4.134H går dataene gjennom et andre sett av full-addere som utgjør resten av Wallace-treet og blir gyldige og stabile ved enden på 34H før de latches av latcherene 1184 og 1186.
Som forklart tidligere går dataene under 34L gjennom 4:2 kompressor 1130 (to full-addere i serie) og en 2-1 mux 1135 for det siste delproduktsvalget. Dataene blir gyldige ved slutten av 34L før de latches av latch 1190. Under 35H blir de to delproduktene ved utgangen fra latch 1190 til slutt redusert til en vektor med summene.-Denne vektoren med summene deles opp og latches av en mux-latch-boundary, latch 1195, utenfor enhet 145.1 35L er dataene klare for tilbakeskriving.
Som tidligere beskrevet legger de tidligere multiplisér-addér instruksjonene alltid resultatene fra multiplikasjonen til en akkumuleirngsverdi. Denne akkumuleringsverdien blir en flaskehals for andre operasjoner enn multiplikasjon og akkumulering (for eksempel må akkumuleringsverdien nulles hver gang det er nødvendig med et nytt sett av operasjoner som ikke skal ha med den forrige akkumuleringsverdien). Denne akkumuleringsverdien blir også en flaskehals dersom operasjoner, så som avrunding, må utføres før akkumulering.
Til motsetning overfører ikke den beskrevne multiplisér-addér operasjonen en akkumuleringsverdi. Disse instruksjonene er derfor enklere å anvende over et bredt spekter av algoritmer. I tillegg kan program-pipelining anvendes for å oppnå sammenliknbart gjennomløp. For å illustrere muftiplisér-addér instruksjonens allsidighet, beskrives flere multimedia-algoritmer nedenfor. Noen av disse multimedia-algoritmene anvender ekstra pakkedata-instruksjoner. Operasjonen til disse ekstra pakkedata-instruksjonene er vist i relasjon til de beskrevne algoritmene. For ytterligere beskrivelse av disse datapakke-instruksjonene, se "A Set of Instructions for Operating on Packed Data" inn-levert , serienr.. Selvfølgelig kan andre datapakke-instruksjoner også anvendes. I tillegg er et antall trinn som krever bruk av generelle prosessorinstruksjoner for å styre dataoverføring, løkker og betingel-sesuttrykk utelatt i de følgende eksemplene.
1) Multiplikasjon av komplekse tall
Den beskrevne multiplisér-addér instruksjonen kan anvendes for å multiplisere to komplekse tall i én enkelt instruksjon som vist i tabell 10a. Som tidligere beskrevet utføres multiplikasjon av to komplekse tall (f.eks. nh og r2i2) et-terfølgende formel:
Realdel = nr2 - M2
Imaginærdel = ni2 + r2i2
Dersom denne instruksjonen implementeres for å bli fullført i en klokkesyklus, kan oppfinnelsen multiplisere to komplekse tall hver klokkesyklus.
Som et annet eksempel viser tabell 10b instruksjonen som anvendes for å multiplisere tre komplekse tall.
1) Multiplisér- akkumulér Operasjoner
De beskrevne multiplisér-addér instruksjonene kan også anvendes til å multiplisere-akkumulere verdier. To sett på fire dataelementer (A^ og B1-4) kan for eksempel multipliseres og akkumuleres som vist nedenfor i tabell 11.1 en utførelsesform er hver av instruksjonene som er vist i tabell 6 konstruert for å fullføres over en klokkesyklus.
Dersom antallet dataelementer i hvert sett overstiger 8 og er et multiplum av 4, krever multiplikasjon og akkumulering av disse færre instruksjoner hvis de utføres som vist i tabell 12 nedenfor.
Som et annet eksempel viser tabell 13 den separate multiplikasjonen og akkumuleringen av settene A og B og settene C og D, idet hvert av disse inkluderer 2 dataelementer.
Som et annet eksempel viser tabell 14 den separate multiplikasjonen og akkumuleringen av settene A og B og settene C og D, idet hvert av disse inkluderer 4 dataelementer.
3) Algoritmer for prikkprodukt
Prikkprodukt (også betegnet indreprodukt) anvendes i signalprosessering og matriseoperasjoner. Prikkproduktet anvendes for eksempel når en beregner matriseprodukter, operasjoner på digitale filtre (så som FIR og MR filtrering) og ved beregning av korrelasjonssekvenser. Siden mange talekom-primeringsalgoritmer (f.eks. GSM, G.728, CELP og VSELP) og Hi-Fi komprime-ringsalgoritmer (f.eks. MPEG og underbåndskoding) i en stor utstrekning be-nytter digitalfiltrering og korrelasjonsberegninger, vil det å øke effektiviteten på beregning av prikkprodukter øke ytelsen for disse algoritmene.
Prikkproduktet mellom to sekvenser A og B, med lengde N, er definert som :
Beregningen av et prikkprodukt gjør utstrakt bruk av multiplisér-addér operasjonen hvor tilhørende elementer fra hver av sekvensene multipliseres og resultatene akkumuleres for å danne resultatet av prikkproduktet.
Beregningen av prikkproduktet kan utføres ved anvendelse av multiplisér-addér instruksjonen. Dersom for eksempel den pakkede datatypen som inneholder fire 16-bits elementer anvendes, kan beregningen av prikkproduktet utføres på to sekvenser som hver inneholder fire verdier ved å: 1) aksessere de fire 16-bits verdiene fra sekvensen A for å generere Kildel ved å anvende en move-instruksjon; 2) aksessere de fire 16-bits verdiene fra sekvensen B for å generere Kilde2 ved å anvende en move-instruksjon; og 3) utføre multiplikasjon og akkumulering som tidligere beskrevet ved anvendelse av instruksjonene multiplisér-addér, pakke-addér og skift.
For vektorer med flere enn bare noen få elementer anvendes metoden som er vist i tabell 9 og de endelige resultatene adderes til slutt. Andre hjelpe-instruksjoner inkluderer pakke- OR og XOR instruksjoner for å initialisere ak-kumulatorregisteret, pakke-skift instruksjoner for å skifte vekk uønskede verdier i det siste trinnet av beregningen. Det utføres løkkekontrolloperasjoner ved anvendelse av instruksjoner som allerede finnes i prosessor 109 sitt instruksjonssett.
4) Algoritmer for diskret cosinustransformasion
Diskret cosinustransform (DCT) er en velkjent funksjon som anvendes i mange signalprosesseirngsalgoritmer. Spesielt video- og bildekomprimerings-algoritmer gjør utstrakt bruk av denne transformasjonen.
I bilde- og videokomprimeirngsalgoritmer anvendes DCT tii å transfor-mere en blokk med pikseller fra den romlige representasjonen til en frekvens-representasjon. I frekvensrepresentasjonen deles bildeinformasjonen inn i fre-kvenskomponenter, hvor noen er viktigere enn andre. Komprimeringsalgorit-men fjerner selektivt de komponentene som ikke har særlig betydning for det rekonstruerte bildeinnholdet. På denne måten oppnås komprimering.
Det finnes mange gjennomføringer av DCT. Den mest populære er en slags hurtig transformeringsmetode som er basert på Fast Fourier transform
(FFT) funksjonen. I den hurtige transformasjonen brytes en transformasjon av orden N ned i en kombinasjon av transformer av orden N/2 og resultatet orga-niseres tilbake. Denne dekomponeringen kan utføres til den laveste transfor-men av orden 2 nås. Denne elementære 2-transformasjonskjernen betegnes ofte butterfly-operasjonen. Butterfly-operasjonen uttrykkes som følger:
hvor a, b, c, og d betegnes koeffisienter, x og y er inngangsdataene og X og Y er transformasjonens utgangsdata.
Multiplisér-addér operasjonen gjør at DCT-beregningen kan utføres ved anvendelse av pakkede data på følgende måte : 1) aksessering av de to 16-bits verdiene som representerer x og y for å generere Kildel (se tabell 10 nedenfor) ved anvendelse av instruksjonene move og unpack; 2) generering av Kilde2 som vist i tabell 10 nedenfor - Merk at kilde2 kan gjenbrukes over et antall butterfly-operasjoner; og 3) utføring av en multiplisér-addér instruksjon ved anvendelse av Kildel og Kilde2 for å generere resultatet (se tabell 15 nedenfor).
I noen tilfeller er koeffisientene i butterfly-operasjonen lik 1.1 disse tilfellene degenererer butterfly-operasjonen til kun adderinger og subtraheringer som kan utføres ved hjelp av instruksjonene pakke-addér og pakke-subtrahér.
Et lEEE-dokument spesifiserer nøyaktigheten som den inverse DCT-transformasjonen må utføres med for bildedrøfting. (Se IEEE Curcuits and Systems Society, "IEEE Standard Specifications for the Implementation of 8x8 Inverse Discrete Cosine Transform," IEEE Std, 1180-1990, IEEE Inc. 345 East 47th St., NY, NY 10017, USA 18. mars 1991). Kravet til nøyaktighet tilfreds-stilles av den beskrevne multiplisér-addér instruksjonen siden den anvender 16-bits inngangsdata og genererer 32-bits utgangsdata.
På denne måten kan den beskrevne multiplisér-addér instruksjonen anvendes for å forbedre effektiviteten til en rekke forskjellige algoritmer, inklusive algoritmer som krever multiplikasjon av komplekse tall, algoritmer som krever transformasjoner og algoritmer som krever multiplisér-akkumulér operasjoner. Som et resultat kan denne multiplisér-addér instruksjonen anvendes i en generell multibruksprosessor for å forbedre effektiviteten til et større antall algoritmer som de beskrevne tidligere instruksjonene.
Selv om oppfinnelsen er beskrevet med flere utførelsesf ormer, vil fagfolk forstå at oppfinnelsen ikke er begrenset til de beskrevne utførelsesf ormene. Fremgangsmåten og apparatet ifølge oppfinnelsen kan benyttes med modi-fikasjoner og endringer innenfor tankegangen og rekkevidden til de vedføyde patentkravene. Beskrivelsen er kun å betrakte som en illustrasjon av oppfinnelsen, og er således ikke på noen måte begrensende.

Claims (15)

1. Prosessor (109), omfattende: - en registerfil (150) for å lagre en første datapakke og en andre datapakke som hver inneholder fire initielle dataelementer, hvor hvert av de initielle dataelementer i den første datapakken tilsvarer et initielt dataelement i den andre datapakken, slik at det frembringes fire par med initielle dataelementer, - en dekoder (165) for å dekode en instruksjon som spesifiserer den første og den andre datapakken som operander, og - en krets (145) koplet til registerfilen (150) og dekoderen (165), hvor kretsen som respons på instruksjonen multipliserer sammen de tilsvarende initielle dataelementer i den første og den andre datapakken for å generere tilsvarende mellom-dataelementer, hvilke mellom-dataelementer settes sammen i par til to sett, karakterisert ved at kretsen (145) adderer mellom-dataelementene i hvert av de to settene for å generer to resultat-dataelementer, hvor hvert av de to resultat-dataelementene gir høyere presisjon enn de initielle dataelementene, og lagrer som resultat av eksekvering av den ene instruksjonen, de to resultat-dataelementene i ett register i registerfilen (150) som en tredje datapakke, hvor den tredje datapakken inneholder bare de to resultat-dataelementene.
2. Prosessor (109) ifølge krav 1, karakterisert ved at hvert av de fire initielle dataelementene innbefatter 16 databrter, hvert av de to mellom-dataelementene innbefatter 32 databrter, og hvert av de to resultat-dataelementene innbefatter 32 databiter.
3. Prosessor (109) iføIge krav 1, karakterisert ved at kretsen (145), som respons på instruksjonen, samtidig multipliserer de tilsvarende initielle dataelementer i den første og den andre datapakken for å generere tilsvarende mellom-dataelementer.
4. Prosessor (109) ifølge krav 3, karakterisert ved at kretsen (145), som respons på instruksjonen, samtidig multipliserer i en og samme syklus de tilsvarende initielle dataelementer i den første og den andre datapakken for å generere tilsvarende mellom-dataelementer.
5. Prosessor (109) ifølge krav 4, karakterisert ved at kretsen (145), som respons på instruksjonen, samtidig multipliserer i en og samme klokkesyklus de tilsvarende initielle dataelementer i den første og den andre datapakken for å generere tilsvarende mellom-dataelementer.
6. Prosessor (109) ifølge krav 1, karakterisert ved at kretsen (145) er en multipliserer/adderer-krets med en første (813), annen (812), tredje (811) og fjerde (810) multipliserer, hvor hver multipliserer mottar et tilsvarende sett av dataelementene; og hvor multipliserer/adderer-kretsen videre innbefatter en første adderer (851) koplet til den første multiplisereren og den andre multiplisereren, samt en andre adderer (850) koplet til den tredje multiplisereren og den fjerde multiplisereren.
7. Prosessor (109) ifølge krav 6, karakterisert ved at de to resultat-dataelementene i den tredje datapakken inneholder dobbelt så mange biter som dataelementene i den første og den andre datapakken.
8. Prosessor (109) ifølge krav 7, karakterisert ved at multipliserer/adderer-kretsen (145) innbefatter en første Carry-Save Adderer (CSA) som er koplet til den første (813) og den andre (812) multiplisereren, idet nevnte første CSA mottar to delprodukter generert av den første multiplisereren (813) og dessuten mottar to delprodukter generert av den andre multiplisereren (112), idet nevnte første CSA genererer et første sett av to delprodukter, og en andre CSA koplet til den tredje (811) og den fjerde (810) multiplisereren, idet den annen CSA mottar to delprodukter generert av den tredje multiplisereren (811) og dessuten mottar to delprodukter generert av den fjerde multiplisereren (810), og hvor denne andre CSA genererer et andre sett av to delprodukter.
9. Prosessor (109) ifølge krav 8, karakterisert ved at hver multipliserer utfører minst en 16-biters multiplikasjon som resulterer i to delprodukter.
10. Prosessor (109) ifølge krav 9, karakterisert ved at hver av multiplisereme velger åtte delprodukter og hver multipliserer innbefatter fire nivåer med CSA-er.
11. Prosessor (109) ifølge krav 10, karakterisert ved at hvert av de fire nivåer med CSA-er innbefattet i hver multipliserer, innbefatter et første nivå for å redusere de åtte delproduktene til seks delprodukter, et andre nivå for å redusere de seks delproduktene til fire delprodukter, et tredje nivå for å redusere fire delprodukter til tre delprodukter, og et fjerde nivå for å redusere de tre delproduktene til to delprodukter.
12. Prosessor (109) ifølge krav 10, karakterisert ved at den første addereren (851) er koplet til den nevnte første CSA, og den første addereren (851) genererer en sum av de to delproduktene som genereres av den første CSA; og den andre addereren (850) er koplet til den nevnte andre CSA, og den andre addereren (850) genererer en sum av de to delprodukter som genereres av den annen CSA.
13. Prosessor (109) ifølge krav 8, karakterisert ved at hver multipliserer implementerer en 2-bit Booth-inkoding for å velge et sett av åtte delprodukter.
14. Prosessor (109) ifølge krav 13, karakterisert ved at hver multipliserer implementerer en fortegnsgenereringsfunksjon som erstatning for fortegnsutvidelse av delproduktene.
15. Prosessor (109) ifølge krav 14, karakterisert ved at hver av de nevnte multiplisereme flytter en ekstra bit som genereres av fortegnsgenereringsfunksjonen, til en tilhørende ledig bitposisjon i en separat delproduktrad.
NO19980873A 1995-08-31 1998-02-27 Apparat for utforelse av multiplis±r/add±roperasjoner pa pakkede data NO317739B1 (no)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/522,067 US6385634B1 (en) 1995-08-31 1995-08-31 Method for performing multiply-add operations on packed data
US08/606,212 US6035316A (en) 1995-08-31 1996-02-23 Apparatus for performing multiply-add operations on packed data
PCT/US1996/012799 WO1997008610A1 (en) 1995-08-31 1996-08-07 An apparatus for performing multiply-add operations on packed data

Publications (3)

Publication Number Publication Date
NO980873D0 NO980873D0 (no) 1998-02-27
NO980873L NO980873L (no) 1998-04-28
NO317739B1 true NO317739B1 (no) 2004-12-13

Family

ID=27060694

Family Applications (1)

Application Number Title Priority Date Filing Date
NO19980873A NO317739B1 (no) 1995-08-31 1998-02-27 Apparat for utforelse av multiplis±r/add±roperasjoner pa pakkede data

Country Status (15)

Country Link
EP (1) EP0847552B1 (no)
JP (2) JP3750820B2 (no)
CN (2) CN100465874C (no)
AU (1) AU717246B2 (no)
BR (1) BR9610285A (no)
CA (1) CA2230108C (no)
DE (1) DE69624578T2 (no)
HK (1) HK1012513A1 (no)
HU (1) HUP9900030A3 (no)
IL (1) IL123241A (no)
MX (1) MX9801571A (no)
NO (1) NO317739B1 (no)
PL (1) PL325231A1 (no)
RU (1) RU2139564C1 (no)
WO (1) WO1997008610A1 (no)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1049025B1 (en) * 1998-01-21 2009-08-19 Panasonic Corporation Method and apparatus for arithmetic operations
US7392275B2 (en) 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US7395302B2 (en) 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
EP2267596B1 (en) * 1999-05-12 2018-08-15 Analog Devices, Inc. Processor core for processing instructions of different formats
JP4136432B2 (ja) * 2002-04-15 2008-08-20 松下電器産業株式会社 図形描画装置
CN1310130C (zh) * 2003-03-12 2007-04-11 中国科学院声学研究所 一种乘法器的重构运算方法及可重构乘法器
US7424501B2 (en) 2003-06-30 2008-09-09 Intel Corporation Nonlinear filtering and deblocking applications utilizing SIMD sign and absolute value operations
US7930336B2 (en) * 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7995845B2 (en) 2008-01-30 2011-08-09 Qualcomm Incorporated Digital signal pattern detection and classification using kernel fusion
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8103858B2 (en) * 2008-06-30 2012-01-24 Intel Corporation Efficient parallel floating point exception handling in a processor
US8239442B2 (en) * 2008-08-08 2012-08-07 Analog Devices, Inc. Computing module for efficient FFT and FIR hardware accelerator
CN101706712B (zh) * 2009-11-27 2011-08-31 北京龙芯中科技术服务中心有限公司 浮点向量乘加运算装置和方法
CN102541814B (zh) * 2010-12-27 2015-10-14 北京国睿中数科技股份有限公司 用于数据通信处理器的矩阵计算装置和方法
US8909687B2 (en) * 2012-01-19 2014-12-09 Mediatek Singapore Pte. Ltd. Efficient FIR filters
DE102013209657A1 (de) * 2013-05-24 2014-11-27 Robert Bosch Gmbh FMA-Einheit, insbesondere zur Verwendung in einer Modellberechnungseinheit zur rein hardwarebasierten Berechnung von Funktionsmodellen
CN103677739B (zh) * 2013-11-28 2016-08-17 中国航天科技集团公司第九研究院第七七一研究所 一种可配置的乘累加运算单元及其构成的乘累加运算阵列
JP6371855B2 (ja) * 2014-03-26 2018-08-08 インテル・コーポレーション プロセッサ、方法、システム、プログラム、及び非一時的機械可読記憶媒体
RU2562411C1 (ru) * 2014-12-10 2015-09-10 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Кубанский государственный технологический университет" (ФГБОУ ВПО "КубГТУ") Устройство для вычисления модуля комплексного числа
RU2653310C1 (ru) * 2017-05-24 2018-05-07 федеральное государственное бюджетное образовательное учреждение высшего образования "Воронежский государственный университет" (ФГБОУ ВО "ВГУ") Устройство для умножения числа по модулю на константу
CN109117114B (zh) * 2018-08-16 2023-06-02 电子科技大学 一种基于查找表的低复杂度近似乘法器
US20220019407A1 (en) * 2020-07-14 2022-01-20 Taiwan Semiconductor Manufacturing Company, Ltd. In-memory computation circuit and method
CN113010146B (zh) * 2021-03-05 2022-02-11 唐山恒鼎科技有限公司 一种混合信号乘法器
CN113076083B (zh) * 2021-06-04 2021-08-31 南京后摩智能科技有限公司 数据乘加运算电路

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN85107063A (zh) * 1985-09-27 1987-01-31 耿树贵 整数多功能叠接单元的阵列乘法器
JPS6297060A (ja) * 1985-10-23 1987-05-06 Mitsubishi Electric Corp デイジタルシグナルプロセツサ
US4985848A (en) * 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
CA1311063C (en) * 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
US5047973A (en) * 1989-04-26 1991-09-10 Texas Instruments Incorporated High speed numerical processor for performing a plurality of numeric functions
JP3210420B2 (ja) * 1992-06-25 2001-09-17 キヤノン株式会社 整数上の乗算回路

Also Published As

Publication number Publication date
CN100465874C (zh) 2009-03-04
JPH11511577A (ja) 1999-10-05
CA2230108C (en) 2000-12-12
MX9801571A (es) 1998-05-31
IL123241A0 (en) 1998-09-24
CN1549106A (zh) 2004-11-24
JP3750820B2 (ja) 2006-03-01
JP4064989B2 (ja) 2008-03-19
DE69624578T2 (de) 2003-09-04
EP0847552B1 (en) 2002-10-30
WO1997008610A1 (en) 1997-03-06
DE69624578D1 (de) 2002-12-05
CA2230108A1 (en) 1997-03-06
CN1107905C (zh) 2003-05-07
EP0847552A4 (en) 2000-01-12
AU6951196A (en) 1997-03-19
NO980873L (no) 1998-04-28
HK1012513A1 (en) 1999-08-06
JP2006107463A (ja) 2006-04-20
EP0847552A1 (en) 1998-06-17
HUP9900030A3 (en) 1999-11-29
RU2139564C1 (ru) 1999-10-10
AU717246B2 (en) 2000-03-23
BR9610285A (pt) 1999-03-16
PL325231A1 (en) 1998-07-06
HUP9900030A2 (hu) 1999-04-28
IL123241A (en) 2001-10-31
NO980873D0 (no) 1998-02-27
CN1200821A (zh) 1998-12-02

Similar Documents

Publication Publication Date Title
NO317739B1 (no) Apparat for utforelse av multiplis±r/add±roperasjoner pa pakkede data
KR100329339B1 (ko) 압축데이터에의한승산-가산연산수행장치
US7395298B2 (en) Method and apparatus for performing multiply-add operations on packed data
US5859997A (en) Method for performing multiply-substrate operations on packed data
US7430578B2 (en) Method and apparatus for performing multiply-add operations on packed byte data
JP3711147B2 (ja) パック・データを処理する1組の命令
US8346838B2 (en) Method and apparatus for efficient integer transform
RU2263947C2 (ru) Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных
US8463837B2 (en) Method and apparatus for efficient bi-linear interpolation and motion compensation

Legal Events

Date Code Title Description
MM1K Lapsed by not paying the annual fees