Milyen ' különlegesség az x64 és az x86 között? [zárt]

Zárt . Ehhez a kérdéshez részletekre vagy egyértelműségre van szükség . Jelenleg nem fogadja el a válaszokat.

Megjegyzések

  • A stackoverflow.com/questions/607322/… , amelyet sajnos nem tudok ' t megjelölni, mert ' az SO-n, nem a programozók.
  • @Matthew Read: Az Itanium látványosan kudarcot vallott a piacon, mert az ISA-nak köztudottan nehéz volt fordítóit írni. A HPC piac jóval azelőtt, hogy lemondott volna róla, még azelőtt, hogy az AMD bemutatta bővítményeit.
  • @Mathew ezt mondhatnánk az Intelről! Ha nem lett volna ' t a visszamenőleges kompatibilitás érdekében, akkor észszerű utasításkészletekkel és hálózati bájtsorrenddel rendelkező CPU-kkal dolgoznánk. utasításkészlet? Micsoda rémálom! Az utasítások ütemezésének mozgatása a fordítóhoz rossz ötlet volt. Ha jó 64 bites modellt szeretnél, akkor nézd meg a DEC ' s Alpha verziót.
  • @Mathew, ne becsüld le a platform visszafelé kompatibilitás fontosságát.

Válasz

Az egyetlen valódi különbség, amelyet észrevett a HLL használata során, a kód mérete lesz, és annak felfedezése, hogy egyes szolgáltatások / könyvtárak még nem állnak rendelkezésre x64-re. Ja, és az x64 kód általában kevésbé teljesít, legalábbis a .NET alatt. Az az alkalmazás, amin dolgozom, körülbelül 20% -kal gyorsabban fut, amikor lefordítom az x86-ot. Nem tudom, hogy ez azért van-e, mert több busz sávszélességet használok, ha 8 bájtnyi mennyiséget mozgatok, vagy van-e némi „csomósodás”. a 32 bites API-k 64 biteshez való adaptálásához.

Megjegyzések

  • Nem annyira a mozdulatok busz sávszélessége, mint az a tény, hogy ha 64 bites és 32 bites mennyiségek kezelésével ' hatékonyan kettévágta a gyorsítótár méretét.
  • @Brian: Kiváló pont, nem volt ' nem gondoltam erre.
  • Különösen a referencia-nehéz .NET esetében, ahol minden mutató (hivatkozás).

Válasz

Az Ön által beszélt szinten (.NET) nagyon kevés a különbség. Ha teljesen kezelt kódot használ, a JIT automatikusan lefordítja a kódot, és nagyjából ugyanúgy fog működni, különböző teljesítményjellemzőkkel. Bizonyos dolgoknál gyorsabb lesz (sok adat feldolgozása, az adatok feldolgozása 64 bites darabokban, több regiszter elérhető stb.), Másoknál lassabban (a 64 bites adatok (azaz mutatók) lassabban töltődnek be az indítók gyorsítótárába , ami több adatot és lassabb átvitelt jelent a fő memóriából).

Csak akkor kell aggódnia a különbség miatt, ha nem felügyelt kódot használ. Ennek a blognak jó a problémája.

Megjegyzések

  • Ha nem adja meg, akkor <

nem rendelkezik 64 bites adatokkal. A mutatókat 64 bitesre emelik, de az ints és az úszók változatlanok maradnak. Szinte az összes 32 bites rendszer támogatja a 64 bites lebegést (kettős), és sok a 64 bites intet (hosszú hosszú). A 64 bites megnyitja az újabb szolgáltatásokat is, köztük több felhasználó számára látható regisztert.

  • @Omega, A mutatók adatok. Helyezni kell őket a gyorsítótárba. A 64 bites futtatás azt jelenti, hogy minden hivatkozás vagy hivatkozás potenciálisan egy vagy többet áthelyezhet a gyorsítótárba, és kiterjeszti minden hivatkozást tartalmazó objektumot is. De abban igazad van, hogy az állítás fele helytelen. Ezen változtatok. Köszönöm.
  • Tapasztalatom szerint a mutatók ' nem túl gyakoriak. De nem csinálok OOP ' t, és nagyon fájdalmas korai tapasztalatom volt a rossz mutatókkal kapcsolatban, ezért csak akkor használom őket, ha feltétlenül szükséges. Tehát az IMO-mutatók nem foglalnak el nagyon sok címterületet. Az OTOH modern fordítói rengeteg hurokbontást, hurokhámozást és speciális esetkódot generálnak, így a kódméret meglehetősen nagy lehet.
  • @Omega, minden egyes alkalommal, amikor egy összetett objektumpéldányra hivatkozik az Ön által használt felügyelt nyelven mutató a motorháztető alatt.
  • Válasz

    A 64 bites rendszerekhez írt .Net programok nagyobb címtartomány, így sokkal gyorsabb lesz, mint az x86-32 bites alapú programok. Szintén a legújabb .NET Language fordítók sok optimalizált kódot állítanak elő. A JIT az utóbbi években szintén továbbfejlesztett, és mostantól elvégezheti a többmagos JIT optimalizálást. A hibakeresőket is fejlesztjük. Eközben jobb és optimalizált kód készül a 64 bites alapú rendszerek számára.

    Megjegyzések

    • Nem igazán.Amint a legfrissebb megjegyzés több mint egy éve hivatkozott rá, az x86-64 sokkal jobb regiszterkészlettel rendelkezik, és nem tekinthető " kiterjesztésnek ". Ezután a címtér nem ' nem teszi a programokat gyorsabbá. Aztán a piaci részesedésüket. 64 bit vezet jelenleg, 32 bit a kisebbség (Steam-készlet, 2012. augusztus).
    • Ez ( hu.wikipedia.org/wiki/X86-64 ) szerint az X86-64 az x86 kiterjesztése. Lehet, hogy a címtér nem befolyásolja a közvetlenül lassan futó programokat, de a memóriát, ami a program futtatását lassítja. A 64 bites rendszerek fejlesztésében lehet, hogy van még néhány munkahelye, de nem nagy szám. A munkaerőpiac számára ne csak a fejlett országokat lássa, hanem a harmadik világ országait is vigye be az országokba. A jó tájékoztatás érdekében nézze meg: arstechnica.com/features/2008/09/x86-64 .
    • Ön ' újra idéz egy 4 éves cikket. Gyakorlatilag nincs 32 bites x86-os processzor, amelyet ma, 2012-ben gyártottak, és ez a harmadik világ országaira irányuló alacsony kategóriájú CPU ' processzorokat eredményezi.
    • A harmadik világ országai, amelyek a világ népességének nagy hányada, rendszeresen használják ezeket a rendszereket. Annak ellenére, hogy új rendszerek jönnek, de a vásárlási arány nem megfelelő a mobil rendszerekhez képest.
    • @Badar kétséges. Látok 64 bites processzorokat alacsony és középkategóriás számítógépekhez itt, Latin-Amerikában. Hajlamos vagyok egyetérteni azzal, hogy a 32 bites CPU-k eltűntek, legalábbis asztali és középkategóriás laptopok esetében.

    Vélemény, hozzászólás?

    Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük