Mitä ' on niin erikoista x64: ssä vs x86: ssa? [suljettu]

Suljettu . Tämä kysymys tarvitsee yksityiskohtia tai selkeyttä . Se ei tällä hetkellä hyväksy vastauksia.

Kommentit

  • Kohteen stackoverflow.com/questions/607322/… , jota en valitettavasti voi ' t merkitä, koska se ' s SO: lla, ei ohjelmoijilla.
  • @Matthew Read: Itanium epäonnistui näyttävästi markkinoilla, koska ISA: lle oli tunnetusti vaikea kirjoittaa kääntäjiä. HPC-markkinat olivat kaikki luopuneet siitä jo kauan ennen kuin AMD esitteli laajennuksensa.
  • @Mathew voit sanoa sen Intelistä! Jos se ei ollut ' t takautuvaa yhteensopivuutta varten, työskentelisimme prosessoreilla, joissa on järkevät käskysarjat ja verkkotavujärjestys
  • @Matthew: Oletko koskaan katsonut Itaniumia käyttöohjeet? Mikä painajainen! Käskyjen ajoituksen siirtäminen kääntäjälle oli huono idea. Jos haluat hyvän 64-bittisen mallin, katso DEC ' s -alfaa.
  • @Mathew, älä aliarvioi taaksepäin yhteensopivan alustan merkitystä.

vastaus

Ainoa todellinen ero, jonka huomaat käyttäessäsi HLL-koodia, on koodin koko, ja havaitaan, että joitain ominaisuuksia / kirjastoja ei ole vielä saatavana x64: lle. Niin, ja x64-koodi on yleensä vähemmän suorituskykyinen, ainakin .NET-verkossa. Sovellus, jolla työskentelen, toimii noin 20% nopeammin, kun käännän x86: ta. En tiedä, johtuuko se siitä, että käytän enemmän väyläkaistanleveyttä siirtäessäsi 8 tavun määriä ympäri tai jos siellä on jonkin verran ”paloja” päällä 32-bittisten sovellusliittymien mukauttamiseksi 64-bittisiksi.

Kommentit

  • Ei niinkään siirtojen väyläkaistanleveys kuin se, että jos Jos käsittelet 64-bittisiä määriä verrattuna 32-bittisiin, ' olet tosiasiallisesti puolittanut välimuistin koot.
  • @Brian: Erinomainen asia, minulla ei ollut ' ei ajatellut sitä.
  • Erityisesti viitepainotteisen .NET-verkon kanssa, jossa kaikki on osoitin (viite).

Vastaus

Tasolla, josta puhut (.NET), ero on hyvin pieni. Kun käytät täysin hallittua koodia, JIT kokoaa koodisi automaattisesti ja se toimii melkein samalla tavalla, erilaisilla suorituskykyominaisuuksilla. Joistakin asioista se on nopeampaa (paljon tietoja käsiteltäessä, tietoja voidaan käsitellä 64-bittisissä paloissa, enemmän rekistereitä jne.), Ja toisille hitaammin (64-bittistä dataa (ts. Osoittimia) ladataan hitaammin välimuistiin aloittelijoille , mikä tarkoittaa enemmän tietoja ja hitaampia siirtoja päämuistista).

Sinun on todella huolehdittava erosta vain, kun käytät hallitsematonta koodia. Tässä -blogissa on paljon ongelmia.

Kommentit

  • Sinulla ' ei ole 64-bittistä dataa, ellet määritä sitä. Osoittimet ylennetään 64-bittisiksi, mutta intit ja kellukkeet pysyvät ennallaan. Lähes kaikki 32-bittiset järjestelmät tukevat 64-bittistä kelluvaa (kaksinkertaista) ja monet tukevat 64-bittistä int (pitkä pitkä). 64-bittinen avaa myös uudemmat ominaisuudet, mukaan lukien enemmän käyttäjille näkyviä rekistereitä.
  • @Omega, Osoittimet ovat tietoja. Ne on siirrettävä käytettävään välimuistiin. 64-bittinen suorittaminen tarkoittaa, että jokainen viittaus tai poikkeama voi mahdollisesti siirtää yhden tai useamman näistä välimuistiin, ja se myös laajentaa kaikkia viitteitä sisältäviä objekteja. Mutta olet oikeassa siinä, että lauseen puolikkaat ovat virheelliset. Muutan sitä. Kiitos.
  • Kokemukseni mukaan viitteet ' eivät ole kovin yleisiä. Mutta en tee ' ei OOP: ta, ja minulla oli todella tuskallinen varhainen kokemus huonoista osoittimista, joten käytän niitä vain silloin, kun se on ehdottoman välttämätöntä. Joten IMO-osoittimet eivät vie paljon osoitetilaa. OTOH: n nykyaikaiset kääntäjät tuottavat paljon silmukan purkamista, silmukan kuorintaa ja erikoistapauskoodia, joten koodin koosta voi tulla melko suuri.
  • @Omega, aina kun viittaat monimutkaiseen objektiinstanssiin hallitulla kielellä, jota käytät osoitin konepellin alla.

Vastaa

64-bittisille järjestelmille kirjoitettavat .Net-ohjelmat ovat suurempi osoitetila, joten se on paljon nopeampi kuin x86-32-bittiset ohjelmat. Myös uusimmat .NET-kielen kääntäjät tuottavat paljon optimoitua koodia. JIT on myös parantunut viime vuosina, ja nyt voit tehdä JT-moniytimisen optimoinnin. Debuggereita parannetaan myös. Samaan aikaan parempaa ja optimoitua koodia tuotetaan 64-bittisille järjestelmille.

Kommentit

  • Ei oikeastaan.Kuten ylimmässä kommentissa viitattiin yli vuosi sitten, x86-64: llä on huomattavasti parempi rekisterisarja, eikä sitä voida pitää " laajennuksena ". Seuraavaksi osoitetila ei tee ohjelmista nopeampi '. Sitten heidän markkinaosuutensa. 64 bittiä on tällä hetkellä johtava, 32 bittiä vähemmistö (Steam-luettelo, elokuu 2012).
  • Tämä ( fi.wikipedia.org/wiki/X86-64 ) sanoo, että X86-64 on x86: n laajennus. Osoiteavaruus ei vaikuta suoraan hitaasti ajettaviin ohjelmiin, mutta voi vaikuttaa muistiin, mikä tekee ohjelmasta hitaan. 64-bittisten järjestelmien kehittämisessä sinulla voi olla muutama työpaikka lisää, mutta et ole iso luku. Työmarkkinoilla älä ' näe vain edistyneitä maita, mutta vie myös kolmannen maailman maat maihin. Hyvää viitteitä varten tarkista: arstechnica.com/features/2008/09/x86-64 .
  • Sinä ' lainaa uudelleen 4 vuotta vanhaa artikkelia. Nykyään, vuonna 2012, ei ole käytännössä yhtään 32-bittistä x86-prosessoria, ja tämä johtaa alemman tason suorittimiin ', jotka on tarkoitettu kolmannen maailman maihin.
  • Kolmannen maailman maat, jotka muodostavat suuren osan maailman väestöstä, käyttävät näitä järjestelmiä säännöllisesti. Vaikka uusia järjestelmiä tuleekin, mutta ostoaste ei ole hyvä verrattuna matkaviestinjärjestelmiin.
  • @Badar epäilevä. Näen 64-bittiset prosessorit matalan ja keskitason tietokoneille täällä Latinalaisessa Amerikassa. Olen yleensä samaa mieltä siitä, että 32-bittiset suorittimet ovat poissa, ainakin työasemille ja keskitason kannettaville tietokoneille.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *