Linear Address Maskingista:
Tämä siis tarkoittaa vaan sitä, että yksi x86-64-arkkitehtuurin erikoisuus, korkeiden bittien "väärinkäytön" kielto perutaan. Kyseessä ei ole mikään "uusi teknisesti hieno ominaisuus" vaan päin vastoin tämä on vain yhden ominaisuuden poiskytkeminen ja paluu yksinkertaisempaan ja luonnollisempaan toimintaan.
Esim. Amigassa ja alkuperäissä macintoshissa oli 68k-prosessori, jossa rekisterit oli 32-bittisiä, mutta muistiosoitteet oli vain 24-bittisiä (maksimi muistiavaruuden koko 16 megaa), ja ylimmät bitit vaan ignorattiin muistiaccesseja tehdessä. Koodarit keksivät, että pointterien ylimpään kahdeksaan bittiinhän on kiva tallettaa jotain metadataa, kun ne ignorataan muistiaccesseja tehdessä, ja monet softat sisälsivät tällaisia kikkailuita.
No, joitain vuosia myöhemmin tuli sitten 68020-prosessori, jossa muistiosoitteet oli täydet 32 bittiä, ja näitä temppuja käyttävät ohjelmat eivät sitten toimineetkaan sillä.
AMD x86-64sta speksatessaan päätti, että vältetään tällaiset yhteensopivuusongelmat kieltämällä tällainen kikkailu, ja kun x86-64een speksattin 48-bittiset virtuaaliosoitteet 4-tasoisilla sivutauluilla, samalla myös määriteltiin, että muistiosoitteen ylimpien 16 bitin on pakko olla samat kuin se ylin varsinainen osoitebitti.
No, jotkut softat KUITENKIN väärinkäyttivät näitä ylimpiä osoitebittejä. Ne vaan sitten kikkailivat siten että ennen kuin dataa accessoitiin sen pointterin kautta, se ylimpien bittien metadata kopioitiin muualle ja ne ylimmät bitit vekslattiin siihen speksin vaatimaan muotoon, mihin sitten kului ylimääräisiä käskyjä, mutta jos virtuaaliosoite onkin oikeasti yli 48-bittinen, softa hajoaa.
ARM speksatessaan 64-bittistä ARMv8 käskykantaa päätyi ratkaisuun, että korkeilla biteillä kikkailua ei kielletä, siinä virtuaaliosoitteen koko on virtuaalimuistisivujen koosta ja sivutaulujen tasomärästä riippuen joko 39,42,48, 52 tai 56 bittiä. Ja esim Apple heti hyödynsi tätä virtuaalikoneidensa/tulkkiensa muistinhallinnassa.
Intel laajensi sivutaulut 4-tasoisista 5-tasoisiksi Ice Lakessa, jolloin virtuaaliosoiteavaruus kasvoi 48sta 57 bittiin. Tämä on kuitenkin uusi toimintatila joka käyttiksen pitää erikseen kytkeä päälle, jos käyttis ei tätä kytke päälle, virtuaaliosoitteet on edelleen 48-bittisiä.
Nyt Intel käytännössä toteaa, että ylimmillä biteillä kikkailun kieltäminen oli huono idea. Kun sitä kikkailua kuitenkin tehdään ja siitä on selvä suorituskykyhyöty joissain tilanteissa, sallitaan sen tekeminen sitten täydellä nopeudella ilman lisäkikkailua. Eli ylimpien 7 tai 16 bitin ei enää tarvikaan olla samat kuin se ylin varsinainen osoitebitti.
Mutta ainakin niiden softien, jotka hajoaa 5-tasoisessa tilassa, määrä on todella paljon pienempi, kun tämä sallittiin vasta nyt. Ja toisaalta, kun nyt mennään 57 bittiin niin sillä selvitään seuraavat parikymmentä vuotta, ennen kuin sivutauluihin pitää tuoda kuudes taso ja osoitteet laajentaa täyteen 64 bittiin, eli jos tästä on jotain yhteensopivuusongelmia tulossa, ne tulee vasta 2040-luvulla. Ja onko x86 enää silloin elossa?