
Microsoft ja Qualcomm valmistelevat parhaillaan kilpailijaa Intelin dominoimalle x86-alustalle tuomalla täysverisen Windows 10:n Snapdragon 835 Mobile PC -alustalle x86-emulaation turvin. Intel on pysynyt asiasta hiljaa jo pitkään, mutta nyt yhtiö on ärjäissyt blogissaan puolustavansa käskykantaansa kaikin tarpeellisin toimin.
Intelin alun perin kehittämä x86-käskykanta on kehittynyt vuosien varrella monin eri lisäyksin. Kaiken alla piilee kuitenkin edelleen yhteensopivuus alkuperäiseen x86-käskykantaan. Intelin lisäksi käskykantaan uusia ominaisuuksia on tuonut muun muassa AMD, joka kehitti esimerkiksi nykyään kaikkialla käytössä olevan 64-bittisen x86-64-laajennoksen.
Intel on pitänyt myös tiukkaa kirjaa yhtiöistä, joille se on myöntänyt x86-lisenssin ja taistellut aina tarpeen tullen asioista oikeusteitse. x86:n alkuvuosina ristilisensointi oli yleinen käytäntö, sillä yksi yritys ei kyennyt täyttämään IBM:n vaatimaa toimitustakuuta, jonka vuoksi lukuisat yritykset saivat valmistaa x86-klooniprosessoreja yleensä luvallisesti, joskin poikkeuksiakin historiasta löytyy.
Muutoksen tuulet puhalsivat vuonna 1990, kun Intel sai muistihallintaan liittyvän patentin, jota se hyödynsi P5- (Pentium) ja P6-ytimissään (Pentium Pro). Siitä seuranneesta prosessorisodasta voi lukea lisää esimerkiksi CPUShackin vanhasta artikkelista. Nykyisin x86-lisenssit löytyvät Intelin lisäksi enää AMD:ltä ja VIA:lta.
Merkittävimpien prosessorisotien jälkeen kuvioihin astui uusi haastaja: Transmeta. Transmetan kehittämä Crusoe-arkkitehtuuri ei perustunut x86-käskykantaan, mutta ajoi sisäisesti Code Morphing Software -virtuaalikonetta, joka käänsi x86-käskyt sen natiiville konekielelle.
Intel mainitsee blogissaan puolustaneensa x86-patenttejaan myös Transmetaa vastaan, mutta todellisuudessa yhtiöt taistelivat oikeudessa vasta paljon myöhemmin yhtiön lopetettua prosessorien valmistuksen ja haastettua Intelin ensin oikeuteen patenttiensa rikkomisesta. Intel vastasi Transmetan haasteeseen vastaavalla patenttirikkomussyytteellä. Transmetan ja Intelin oikeudenkäynnit sovittiin lopulta oikeussalien ulkopuolella ja Intel myöntyi maksamaan yritykselle yhteensä 250 miljoonan dollarin edestä korvauksia.
Transmetan tapaus saattaa olla oleellinen myös lähitulevaisuudessa juuri emulaationäkökulman vuoksi. Intelin mukaan se toivottaa tervetulleeksi lakia noudattavat kilpailijat, mutta blogin sävystä käy selvästi ilmi, ettei se usko Qualcommin ja Microsoftin x86-emulaation laillisuuteen. Edessä lienee siis mielenkiintoiset ajat, sillä nyt Intelillä on vastassaan kaksi yritysjättiä, joista toinen on erittäin oleellisessa roolissa myös Intelin myyntien kannalta.
Kummasti vain x86 otti valta-aseman supertietokoneiden CPU:na, vaikka niissä jos missä ei ole koskaan ollut mitään tarvetta tai järkeä Windows-yhteensopivuudelle.
Tosiaan uudeksi tehoarkkitehtuuriksi tarkoitettu Intelin isolla rahalla HP:n kanssa kehittämä Itaniumkin sai sen verran pahan kolhun x86:n kanssa yhteen ottamisesta ettei siitä koskaan toipunut.
Aikana ennen Muroa senhän piti visioissa lopulta korvata x86:kin.
Sen valmistumiseen mennessä vain x86 prossut olivat jatkaneet kehittymistä ja sitten AMD meni Jim Kellerin kanssa pilaamaan viimeisetkin mahdollisuudet AMD64:llä.
Kovasti on yhteistä x86:n kelvottomuuden julistajilla ja raamattu-hihhulien evoluution kieltämisellä.
Vuosituhannen vaihteen jälkeenhän tuo muutos alkoi tapahtua, että valmistusteknologian kehittymisen tarjoamilla lisätransistoreilla ei enää saanut niin vain reiluja suorituskyvyn parannuksia.
Ja jos kellotaajuuksiakin katsotaan niin johan se Pentium 4 karkeasti saavutti lukemat joissa nykyäänkin ollaan.
Näihin haasteisiin nähden kuitenkin suorituskyky kasvanut aika rajusti sen jälkeen.
Hinnastahan se loppupeleissä on kiinni sen jälkeen kun päästiin 32bit leluista eroon. Rahalla jolla saa laatikollisen jotain IBM Power lastuja tjsp, saa 10 lootallista x86-64 lastuja.
Mulla ei tietysti ole yhtään mitään hajua miten tollaistne HPC laitteiden kohdalla menee lisenssointi maksut IBM:llä, mutta perus palvelimissa maksat lisenssiä jokaisen CPU coren aktivoinnista. Eli vaikka ostat jonku 8 core Power8:n niin entry levelillä käyttis suostuu käyttämään yhtä corea. Sitten kaivat $$$ taskusta, että saat lisää coreja peliin.
x86:tta ei supertietokoneissa ole käytetty vuosiin. x86-64:a on.
Niin tämä.Jos vialla on myös patentti niin ostavat sen niin käsittääkseni intelillä ei pitäisi olla mitään sanomista asiasta?.:)
Ne x86-lisenssit ei ole myytävissä eteenpäin, niitä ei siis saa VIA:lta ostettua mitenkään.
x86-64 on laajennos x86:een, ei eri käskykanta. Kaikki x86-64-prosessorit ovat x86-prosessoreja mutta kaikki x86-prosessorit eivät ole x86-64-prosessoreja.
Toistaiseksi kaikki x86-64 prosessorit ovat x86 prosessoreja mutta tulevaisuudessa välttämättä eivät. Työpöydällä x86:lla on edelleen paljon käyttöä, servereissä ei yhtään. En ihmettelisi mikäli tulevaisuudessa tulisi x86-64 prosessoreita servereihin vailla 32-bit x86 tukea.
En tiedä kuiinka yleisesti asia on tiedossa, mutta (jotkut) Intel/x86-pohjaiset Android-laitteet sisältävät
ARM natiivibinäärien ajamisen mahdollistavan emulaatiototeutuksen. Jostain kantilta katsottuna melko
samantapainen toeutus mitä MS/QC nyt tekevät toiseen suuntaan. Teknisesti tuollaiset emulaatiot eivät
ole kovin monimutkaisia, haasteeksi tulevat suorituskyky ja virrankulutus, mutta nämä seikat ovat dekadeja
yksinkertasempia kuin lakitekninen perseily.
Itse harmittelen sitä etten päässyt näkemään nvidian denveriä käytännössä ajamassa x86 koodia. Jos heidän,
ehkä aika nopealla aikataululla toteuttua arm yhteensopivuutta käyttää mittapuuna, niin intelin atomit olisivat
olleet kovilla denverin kanssa, ei ihme että intel torppas nvidian yhteensopivuussuunnitelmat. Noista "keskusteluista"
löytynee hieman viitekehystä sille miten rauta-avusteinen emulaaio torpattiin, en tiedä miten lakiteknisesti argumentit
kantavat sieltä täysin softalla tehtyyn emulaatioon.
Pitäisiköhän Intelille kertoa että kännyköissä, esim. iPhonella, voi ajaa Intelin x86 koodia emulaatiolla esim. Dosboxilla (iDOS2, ym)…
Näinhän sitä usein väitetään, todellisuus vaan on aivan toinen.
x86-64 on parempi arkkitehtuuri kuin useimmat 80-luvun "hienoista" RISCeistä.
Koodin tiheys on huomattavastui parempi, minkä takia muistia tarvitaan vähemmän ja välimuistien osumatarkkuus on parempi.
ja x86sta puuttuu monet 80-luvun RISCien idioottimaisuuksista:
x86ssa ei ole esimerkiksi mitään delay slotteja(kuten MIPSissä tai SPARCissa) monimutkaistamassa asioita eikä "pyöriviä rekistereitä" , jotka tekevät reksiterien uudelleennimeämisestä ja sen kautta OoOE:stä paljon vaikeampaa, kuten Sparcissa ja itaniumissa
Muistin konsestenssiussäännöt on paljon järkevämmät, nämä mokattiin pahasti useimmissa RISCeissä. Tämä tekee käytännössä moniprosessorijutuista/synkronoinnista helpompaa x86lla kuin noilla 80-luvun RISCiellä.
ja x86ssa on käskyjä, jotka lukee operandinsa suoraan muistista. Tällä säästetään usein rekistereitä ja käskyjä.
Alkuperäisessä 8086ssa toki oli paljon typeryyksiä, mutta näistä käytännössä kaikki on korjattu:
* vain 64 kilotavun suora osoittaminen (korjattu 386ssa 4 gigaan)
* x87-FPU joka toimi rikkinäisellä pinoperiaatteella eikä sallinut vapaata rekisteriaccessia (korjattu SSE/SSE2n myötä)
* vain 8 GPRää (korjattu x86-64n myötä)
Oikeastaan ainoa selkeä huono puoli x86-64ssa on, että käskyjen enkoodaus on melko monimutkainen, mikä monimutkaistaa prosessorin käskydekooderia, se lisää siihen 1-2 liukuhihnavaihetta ja tekee hyvin hankalaksi tehdä x86-dekooderia joka dekoodaa yli neljää käskyä rinnakkain.
Jospa nyt ottaisit edes selvää mitä "mikrokoodi" tarkoittaa.
Nykyaikaisissa x86-prosessoreissa käytetään paljon VÄHEMMÄN mikrokoodia kuin vanhemmissa.
Nykyaikainen x86-prosessori dekoodaa aika suuren osan käskyistä tasan yhdeksi mikro-operaatioksi. Ja näiden käskyjen osalta tämä ei oikeastaan mitenkään eroa siitä, miten RISC-prosessi käskynsä suorittaa.
höpöhöpö.
Emulointi kuulostaa teoriassa helpolta, mutta se on käytännössä ongelmallista, kun käskyillä on hassuja sivuvaikutuksia. Carry bit, flags, eri pyöristysmoodit jne. Näiden hanskaaminen vaatii usein paljon ylimääräistä härväystä, joka on softalla tehtynä hyvin hidasta.
Esim. Transmetan prosessoriin, vaikka se ajoi aivan eri käskykantaa kuin x86, piti rakentaa x87-yhteensopivat pyöristysmoodit yms. koska niiden emulointi olisi ollut aivan järjettömän hidasta.
Samoin DECn Alphassa (joka oli aikoinaan maailman nopein prosessori) oli erikseen lisätty VAX-yheensopivan pyöristysmoodin FPU-käskyt ihan vaan että sillä on helpompi emuloida VAXia.