MMX
MMX er en tidlig x86-instruktionsudvidelse til pakkede heltal, som benytter 64-bit registre, der deler arkitektonisk lager med x87-flydende-komma-registerfilen. Den delte tilstand er vigtig, når kode blandes.
Hvad du behøver at vide
MMX er en tidlig x86-instruktionsudvidelse til pakkede heltal, som benytter 64-bit registre, der deler arkitektonisk lager med x87-flydende-komma-registerfilen. Den delte tilstand er vigtig, når kode blandes.
Sådan virker det
MMX-operationer behandler et 64-bit register som pakkede heltalselementer. MMX-registernavnene aliaser x87-registerlageret i stedet for at levere en uafhængig moderne vektortilstand. EMMS markerer x87-tag-tilstanden som tom efter MMX-brug, så senere x87-kode kan bruge flydende-komma-stakken korrekt.
Hvor det er nyttigt
Ældre multimediesoftware kan bruge MMX til mættet byte-aritmetik. Ny kode bruger almindeligvis XMM eller bredere vektorfaciliteter i stedet, hvilket undgår MMX/x87-tilstandsinteraktionen. Eksisterende binære filer kan stadig indeholde MMX, selv på en meget nyere processor.
Sådan kontrolleres understøttelse og aktivering
CPUID.01H:EDX bit 23 enumererer MMX. Ved fejlfinding af ældre kode skal både den faktiske instruktionssekvens og dens EMMS-/tilstandshåndtering undersøges. Et funktionsflag kan ikke fastslå, om en rutine overholder kaldekonventionen korrekt.
En SIMD-funktion beskriver instruktioner, ikke ekstra kerner. Instruktionsformen bestemmer elementbredde, fortegn, afrunding, justering og hvilke baner der interagerer. Software skal bevare ABI'ens registertilstand og bruge et understøttet eksekveringsmiljø.
Hvad funktionen ikke fastslår
MMX er heltals-SIMD, ikke generel 64-bit eksekvering eller x86-64-understøttelse. Det medfører ikke SSE eller senere udvidelser. Manglende oprydning ved blanding af MMX og x87 kan forårsage korrekthedsproblemer, der er uafhængige af, om CPU'en understøtter instruktionerne.
Kompatibilitet og ydeevne i praksis
Senere navne i SSE-familien har separate funktionsbit. For en udrullet binær fil skal det komplette minimale funktionssæt undersøges, inklusive biblioteker og opstartskode. En reservemetode er kun nyttig, hvis der ikke kører nogen ikke-understøttet instruktion forud for udvælgelsestrinnet.
En praktisk tjekliste til verifikation
- Registrer den nøjagtige processor- eller platformsmodel samt de involverede applikations-, OS- og runtime-versioner. Bevar formuleringen af den faktiske fejl eller det faktiske krav.
- Tjek producentreferencen for den nøjagtige model, og undersøg derefter den effektive kapacitet og aktiverede tilstand i det miljø, hvor programmet kører.
- Sammenlign ethvert krav for den valgte binære fil eller backend. En funktion med et lignende navn, et alias eller en bred teknologimærkat er ikke tilstrækkelig.
- Bekræft, at applikationen har valgt den tilsigtede implementering. Brug dens dokumenterede diagnosticering og et understøttet fallback, når kravene ikke er opfyldt.
- Foretag en enkelt understøttet ændring ad gangen, og gentag den samme arbejdsbelastning. Hold den oprindelige konfiguration og gendannelsessti tilgængelig.
Hvis funktionen er anført, men softwaren ikke kan bruge den
Start med den nøjagtige komponent, der fejler. En hardwaredatabase beskriver registreret kapacitet; operativsystemet eller hypervisoren kan udstille et andet effektivt miljø. En illegal-instruction-fejl kræver også undersøgelse af den faktiske fejlbehæftede instruktion og det binære build, fordi korruption eller en urelateret ikke-understøttet instruktion kan frembringe et lignende symptom.
Installer den applikations-, driver- eller runtime-version, der understøttes til den nøjagtige platform, og brug om nødvendigt leverandørens dokumenterede baseline eller fallback-build. En softwareopdatering kan ikke oprette en instruktion, som processoren mangler. Ændringer i firmware og sikkerhedspolitik bør følge systemproducentens procedure og en genopretningsplan frem for en generisk optimeringsopskrift.
Kilder og denne forklaringens omfang
Intel 64 and IA-32 Architectures Software Developer's Manual · x86-64 psABI: niveauer for processorarkitektur og mikroarkitektur
Disse referencer fastlægger arkitektonisk adfærd og softwarekrav. De verificerer ikke uafhængigt enhver funktionsværdi på en tilknyttet hardwaremodelside. For modelunderstøttelse skal du bruge den pågældende sides producentdokumentation og kontrollere den effektive systemkonfiguration. Denne artikel leverer ikke et benchmark, en certificering eller en uafhængig revisionsdato.
Kilder og verificering
Redaktionelt ejerskab: Feex. Ingen uafhængig revisionsdato er registreret. Sådan undersøger vi.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Bind 1 og 2 beskriver de navngivne instruktionsfamilier og CPUID; Bind 3 beskriver tilstands-, sideinddelings-, VMX- og beskyttelseskontroller. Arkitekturdokumentation fastslår ikke understøttelse for en bestemt model.
- x86-64 psABI: niveauer for processorarkitektur og mikroarkitektur · Machine Interface, Processor Architecture: baselinje og kumulativ v2/v3/v4-funktionstabel, kontrol af OS-tilstand og anbefalinger til udrulning.
Var denne artikel nyttig?
Et ja eller nej er nok. Vælg en grund, hvis du vil, eller tilføj en kort bemærkning.
Tak. Det hjælper os med at forbedre denne side.