Co je ' tak zvláštního na x64 vs x86? [uzavřeno]

Zavřeno . Tato otázka vyžaduje podrobnosti nebo jasnost . Momentálně nepřijímá odpovědi.

Komentáře

  • Duplikát stackoverflow.com/questions/607322/… , což bohužel nemohu ' t označit, protože ' s na SO, ne programátoři.
  • @ Matthew Číst: Itanium na trhu výrazně selhal, protože pro ISA bylo notoricky obtížné napsat kompilátory. Trh s HPC se toho vzdal dlouho předtím, než AMD představila své rozšíření.
  • @Mathew, dalo by se říci, že o Intel! Pokud by to nebylo ' t pro zpětnou kompatibilitu, pracovali bychom na procesorech se zdravými instrukčními sadami a pořadí bajtů v síti
  • @Matthew: Už jste se někdy podívali na Itanium instruktážní sada? Jaká noční můra! Přesunutí plánování instrukcí do kompilátoru bylo špatným nápadem. Pokud chcete dobrý 64bitový model, podívejte se na DEC ' s Alpha.
  • @Mathew, nepodceňujte důležitost zpětné kompatibility platformy.

Odpověď

Jediný skutečný rozdíl, který si při použití HLL všimnete, bude velikost kódu, a zjištění, že některé funkce / knihovny ještě nejsou k dispozici pro x64. A kód x64 má tendenci být méně výkonný, alespoň v .NET. Aplikace, na které pracuji, běží asi o 20% rychleji, když kompiluji pro x86. Nevím, jestli je to proto, že používám větší šířku pásma sběrnice pohybující se 8bajtovými veličinami, nebo jestli se děje nějaký „chunking“ na přizpůsobení 32bitových API na 64bitové.

Komentáře

  • Ne tak šířka pásma sběrnice tahů, jako skutečnost, že pokud vypořádat se s 64bitovými veličinami oproti 32bitovým, ' efektivně snížit velikost mezipaměti na polovinu.
  • @Brian: Skvělý bod, neměl jsem ' na to nemyslel.
  • Zejména s referenčním těžkým .NET, kde všechno je ukazatel (reference).

Odpověď

Na úrovni, o které mluvíte (.NET), je velmi malý rozdíl. Pokud používáte zcela spravovaný kód, JIT automaticky zkompiluje váš kód a bude fungovat téměř stejně, s různými výkonnostními charakteristikami. U některých věcí to bude rychlejší (zpracování velkého množství dat, data mohou být zpracována v 64bitových blocích, více registrů k dispozici atd.), A u jiných pomalejší (64bitová data (tj. Ukazatele) je pomalejší načítání do mezipaměti pro začátečníky , což znamená více dat a pomalejší přenosy z hlavní paměti).

Rozdíl se musíte bát, pouze pokud používáte nespravovaný kód. Tento blog má dobré problémy.

Komentáře

  • Nemáte ' 64bitová data, pokud je nezadáte. Ukazatele jsou povýšeny na 64 bitů, ale hloubky a plováky zůstávají stejné. Téměř všechny 32bitové systémy podporují 64bitový float (dvojitý) a mnoho podporovaných 64bitových int (dlouhý dlouhý). 64bit také otevírá novější funkce, včetně více uživatelsky viditelných registrů.
  • @Omega, Ukazatele jsou data. Musí být přesunuty do mezipaměti, aby mohly být použity. Běh na 64 bitech znamená, že každá reference nebo dereference by mohla potenciálně přesunout jeden nebo více z nich do mezipaměti a také rozšiřuje každý objekt, který obsahuje odkazy. Máte ale pravdu, že poloviny prohlášení jsou nesprávné. Změním to. Díky.
  • Podle mých zkušeností nejsou ukazatele ' příliš časté. Ale OOP nedělám ' a měl jsem opravdu bolestivou ranou zkušenost se špatnými ukazateli, takže je používám, pouze pokud je to nezbytně nutné. Ukazatele IMO tedy ' nezabírají příliš mnoho adresního prostoru. Moderní překladače OTOH generují spoustu odvíjení smyček, loupání smyček a speciálního kódu případu, takže velikost kódu může být docela velká.
  • @Omega, pokaždé, když odkazujete na instanci komplexního objektu ve spravovaném jazyce, který používáte ukazatel pod kapotou.

Odpověď

Programy .Net, které budou psány pro 64bitové systémy, budou mít větší adresový prostor, a tak bude mnohem rychlejší než x86-32 bitové programy. Také nejnovější překladače jazyka .NET produkují mnohem optimalizovaný kód. JIT se také v posledních letech vylepšuje a nyní můžete provádět vícejádrovou optimalizaci JIT. Vylepšeny jsou také ladicí programy. Mezitím se pro 64bitové systémy vytváří lepší a optimalizovaný kód.

Komentáře

  • Ve skutečnosti ne.Protože hlavní komentář zmiňovaný před více než rokem, x86-64 má mnohem lepší sadu registrů a nelze jej považovat za " rozšíření ". Adresní prostor dále ' programy nezrychluje. Pak jejich podíl na trhu. 64 bitů v současné době vede, 32 bitů menšina (inventář Steam, srpen 2012).
  • This ( en.wikipedia.org/wiki/X86-64 ) říká, že X86-64 je rozšíření x86. Může to být adresový prostor, který nemá přímý vliv na pomalý běh programů, ale může ovlivnit paměť, která zpomalí běh programu. Ve vývoji 64bitových systémů můžete mít několik dalších úloh, ale ne velkou postavu. Pokud jde o trh práce, ' neuvidíte pouze vyspělé země, ale vezměte do zemí i země třetího světa. Pro dobrou referenci si přečtěte: arstechnica.com/features/2008/09/x86-64 .
  • Vy ' cituje 4 roky starý článek. Dnes, v roce 2012, se dnes nevyrábí prakticky žádné 32bitové procesory x86, což by zahrnovalo low-end CPU ' s zaměřené na země třetího světa.
  • V Země 3. světa, což je velká část světové populace, tyto systémy využívají pravidelně. Nové systémy sice přicházejí, ale míra nákupu není ve srovnání s mobilními systémy dobrá.
  • @Badar Pochybné. V Latinské Americe vidím 64bitové procesory pro počítače s nízkým a středním dosahem. Mám sklon souhlasit s tím, že 32bitové procesory jsou pryč, alespoň pro stolní počítače a notebooky střední třídy.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *