Hva ' er så spesielt med x64 vs x86? [lukket]

Stengt . Dette spørsmålet trenger detaljer eller klarhet . Det aksepteres for øyeblikket ikke svar.

Kommentarer

  • Duplikat av stackoverflow.com/questions/607322/… , som jeg dessverre kan ' t flagge fordi det ' er på SO, ikke programmerere.
  • @Matthew Les: Itanium mislyktes spektakulært på markedet fordi ISA var notorisk vanskelig å skrive kompilatorer for. HPC-markedet hadde bare gitt opp det lenge før AMD introduserte utvidelsene sine.
  • @Mathew kan du si det om Intel! Hvis det ikke var ' t for bakoverkompatibilitet, ville vi jobbet med CPUer med fornuftige instruksjonssett og nettverksbytebestilling
  • @Matthew: Har du noen gang sett på Itanium Instruksjonssett? For et mareritt! Å flytte instruksjoner som var planlagt til kompilatoren, var en dårlig idé. Hvis du vil ha en god 64-biters modell, se DEC ' s Alpha.
  • @Mathew, ikke undervurder viktigheten av at en plattform er bakoverkompatibel.

Svar

Den eneste virkelige forskjellen du ville merke når du bruker en HLL, blir kodestørrelse, og oppdage at noen funksjoner / biblioteker ikke er tilgjengelige for x64 ennå. Oh, og x64-koden har en tendens til å være mindre effektiv, i det minste under .NET. Appen jeg jobber med kjører omtrent 20% raskere når jeg kompilerer for x86. Jeg vet ikke om det er fordi jeg bruker mer bussbåndbredde som flytter 8 byte mengder rundt, eller om det er noe «klump» som går videre for å tilpasse 32-biters API til 64-bit.

Kommentarer

  • Ikke så mye bussbåndbredden til trekkene som det faktum at hvis du håndtere 64-biters mengder mot 32-bit, har du ' effektivt kuttet størrelsen på cache i to.
  • @Brian: Utmerket poeng, jeg hadde ikke ' t tenkte på det.
  • Spesielt med referansetung .NET der alt er en peker (referanse).

Svar

På det nivået du snakker om (.NET) er det veldig liten forskjell. Når du bruker fullstendig administrert kode, vil JIT automatisk kompilere koden din, og den fungerer ganske likt, med forskjellige ytelsesegenskaper. For noen ting vil det være raskere (behandling av mye data, data kan behandles i 64 bit biter, flere register tilgjengelig osv.), Og for andre er tregere (64 bit data (dvs. pekere) sakte å laste inn i hurtigbufferen til å begynne med , noe som betyr mer data og langsommere overføringer fra hovedminnet).

Du trenger bare å bekymre deg for forskjellen når du bruker ikke-administrert kode. Denne bloggen har en god kjøring av problemene.

Kommentarer

  • Du har ikke ' 64bit-data med mindre du spesifiserer det. Pekere promoteres til 64bits, men ints og floats forblir de samme. Nesten alle 32-biters systemer støtter 64-biters float (dobbel), og mange støtter 64bit int (lang lang). 64bit åpner også for de nyere funksjonene, inkludert flere brukersynlige registre.
  • @Omega, pekere er data. De må flyttes inn i hurtigbufferen som skal brukes. Å kjøre på 64 bit betyr at hver referanse eller referanse potensielt kan flytte en eller flere av disse til cachen, og det utvider også alle objekter som inneholder referanser. Men du har rett i at utsagnshalvdelene er feil. Jeg vil endre det. Takk.
  • Etter min erfaring er pekere ' t veldig vanlig. Men jeg gjør ikke ' OOP, og jeg hadde en veldig smertefull tidlig opplevelse med dårlige pekere, så jeg bruker dem bare når det er absolutt nødvendig. Så IMO-pekere tar ikke ' t opp veldig mye adresseplass. OTOHs moderne kompilatorer genererer masse loop-avrulling, loop-peeling og spesiell case-kode, slik at kodestørrelsen kan bli ganske stor.
  • @Omega, hver gang du refererer til en kompleks objektforekomst i et administrert språk du bruker en peker under panseret.

Svar

. Net-programmene som skal skrives for 64-biters systemer vil ha større adresseplass, og det vil være mye raskere enn x86-32 bit baserte programmer. Også de nyeste .NET Language-kompilatorene produserer mye optimalisert kode. JIT er også forbedret de siste årene, og nå kan du gjøre JIT-optimalisering med flere kjerner. Feilsøking forbedres også. I mellomtiden produseres bedre og optimalisert kode for 64bit-baserte systemer.

Kommentarer

  • Egentlig ikke.Som det ble henvist til i toppkommentaren for over et år siden, har x86-64 et vesentlig bedre registersett og kan ikke betraktes som en " -utvidelse ". Deretter gjør adresseområdet ikke ' t programmene raskere. Deretter deres markedsandel. 64 bits er for tiden, 32 bits minoriteten (Steam-inventar, aug 2012).
  • Dette ( en.wikipedia.org/wiki/X86-64 ) sier X86-64 er en utvidelse av x86. Kan være adresseområdet påvirker ikke programmer som kjører sakte direkte, men kan påvirke minne som vil gjøre programmet kjørt sakte. I 64-biters systemutvikling har du kanskje få flere jobber, men ikke en stor figur. For arbeidsmarkedet, se ikke ' bare avanserte land, men ta også tredjeland i land. For god referanse, sjekk ut: arstechnica.com/features/2008/09/x86-64 .
  • Du ' siterer en 4 år gammel artikkel. Det er praktisk talt ingen 32 bits x86-prosessorer produsert i dag, i 2012, og som inkluderer low-end CPU ' rettet mot land i tredje verden.
  • I Tredje verdens land, som er en stor andel av verdens befolkning, de bruker disse systemet regelmessig. Selv om nye systemer kommer, men kjøpesatsen er ikke bra sammenlignet med mobile systemer.
  • @Badar Tvilsom. Jeg ser 64-biters prosessorer for datamaskiner med lave og mellomtone her i Latin-Amerika. Jeg pleier å være enig i at 32-biters CPUer er borte, i det minste for stasjonære og bærbare datamaskiner i mellomklassen.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *