Kommande spel med Frostbite 2 kräver 64-bitars Windows

Permalänk
Medlem
Skrivet av the_swede:

ParasiteX, nu kan jag inte x64/x86 assembler i huvet, men på vilket sätt får man en prestandaboost på 64bitars processorer (32 bitars program optimerade för 32 bitars system vs 64 bitars program optimerade för 64 bitars system ) ?

Jag är totalt okunnig egentligen men är det inte så att om du har en uträkning som i sig inte får plats att adresseras på 32-bitar måste delas upp och blir väldigt mycket långsammare på 32-bitars gentemot 64-bitars.

Det gör att man kan låta uträkningar osv bli större eftersom de får plats i adresseringsutrymmet i sin helhet vilket kan ge en stor prestandaboost i vissa fall.

Det är dock väldigt sällsynt överlag men det är ett exempel iaf.
Eller har jag fel?
Jag är inte så säker och vill mest få min uppfattning bekräftad eller dementerad av någon som faktiskt är kunnig på riktigt.

Permalänk
Avstängd
Skrivet av thomas_skane:

Bra att jag äntligen får användning för tekniker som jag haft stöd för i 5 år

Då har du varit ganska sen på att köpa hårdvara...

Permalänk

Äntligen. Bara någar XP-stofiler som kommer att klaga. För resten av oss andra kan resultatet bara bli bättre. Större och framför allt bättre banor, bättre grafik mm. Inom gameing så har 32-bits kompobilitet varit en flaskhals länge.

Skrivet av Reckie:

Är konsollerna på väg att bli 64-bitars??

De måste! Om inte nästa generation av spelkonsoller skall var föråldrade redan i vid säljstart så måste de vara 64-bitar.

Visa signatur

Varje svensk medborgare borde ha minst 3 PC/pers där hemma !

Permalänk
Datavetare
Skrivet av RainesX:

Du menar x86...

Rätt term för 32-bitars x86 är IA-32.
Rätt term för 64-bitars är lite mer komplicerat. AMD kallar det för AMD64 och Intel kallar det för Intel64, dessa två är till ~99% kompatibla men de är inte identiska. Många säger därför x86_64 för att mena det subset av 64-bitars instruktioner som fungerar både på Intels och AMDs CPUer.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Luxor ABC80:

De måste! Om inte nästa generation av spelkonsoller skall var föråldrade redan i vid säljstart så måste de vara 64-bitar.

Nästa generations spelkonsoler är redan föråldrade.

Permalänk
Medlem
Skrivet av Thiesen:

Tro det eller ej men det finns fortfarande områden som använder 16bits system i en seriös tillämpning.

Som på mitt jobb t ex. Gammalt dos system som kör på xp 32

Skickades från m.sweclockers.com

Visa signatur

No man is free who is not master of himself

Permalänk
Inaktiv

Första spelen som kräver 64-bits OS/system kommer 10 år efter AMD lanserade första x86-processorn med 64-bits stöd. Synd att det tagit en sådan tid men bra om det nu verkligen börjar komma igång nu.

Jag ser fram emot när mer information kommer släppas om detta. Extra kul om svenska Dice är det företag som puschar på utvecklingen denna gång.

Permalänk
Medlem

Äntligen! Detta uppskattas!

På tiden att de tar steget fullt ut från 32- till 64-bitars.

Visa signatur

Rigg: Corsair Carbide Air 540 | Gigabyte X570 Elite | R7 3700X | Corsair Hydro H70 V1 | 16 GB G.Skill RGB CL16@3200 MHz | Powercolor RX7900 XTX Red Devil | Samsung EVO 960/500 GB | Samsung QVO 870 8TB | Corsair AX860 | Ljud: Monitor Audio GS20 Frontar | Monitor Audio GSLCR Center | KEF Q7 Surround | Epik Legend Subwoofer | Denon 2310 Reciever

Permalänk
Medlem

varför krävs så mycket ram på pc när konsoler klarar sig med 64MB?

Visa signatur

mobo Asus M4A88TD-M EVO/USB3 cpu 1100T kylare Noctua NH-D14
gpu RX 460 passive ram 16GB DDR3 1600MHz ssd Samsung 850 EVO 250GB
psu Corsair AX 850 skärmar 3 * 40" NEC P401

Permalänk
Medlem
Skrivet av Andre_H:

varför krävs så mycket ram på pc när konsoler klarar sig med 64MB?

Inte ens Wii har 64mb minne totalt.

För att besvara din fråga: En PC kör mer krävande spel och program, oftast flera program samtidigt. Därför behövs mer minne.

Visa signatur

Ryzen 5600X | Asus B550-F Gaming | 32GB G.Skill Trident Z 3600mhz | Powercolor 6800 XT | Seasonic Prime TX 850W

Athlon 64, du har alltid en plats i mitt hjärta. <3

Permalänk
Medlem

Synd de två kallas x86 och x64, för hur många gånger har man inte hört från folk som är mindre tekniskt insatta att ett högre nummer måste vara bättre än ett lägre.
Och jag förstår samtidigt de som tänker så, för ofta fungerar branschen precis så, ett grafikkort 6970 är vassare än 6950 etc. Så det BLIR förvirrande för de som inte har samma koll de gånger den regeln inte gäller.

Visa signatur

// Valiant
Dator: Gigabyte G1.Sniper Z97, Intel i7 4.0 Ghz, 8 GB RAM, Radeon R9 200, SB X-Fi, Logitech Z-5500, Win8.1 64-bit
Mobil: LG G Flex (primär), Nokia Lumia 1020 (sekundär)

Permalänk
Medlem
Skrivet av Kilroy:

Jag är totalt okunnig egentligen men är det inte så att om du har en uträkning som i sig inte får plats att adresseras på 32-bitar måste delas upp och blir väldigt mycket långsammare på 32-bitars gentemot 64-bitars.

Det gör att man kan låta uträkningar osv bli större eftersom de får plats i adresseringsutrymmet i sin helhet vilket kan ge en stor prestandaboost i vissa fall.

Det är dock väldigt sällsynt överlag men det är ett exempel iaf.
Eller har jag fel?
Jag är inte så säker och vill mest få min uppfattning bekräftad eller dementerad av någon som faktiskt är kunnig på riktigt.

Ja, om inte ett tal får plats tar det ofta väldigt mycket längre tid att räkna på. Dock har det egentligen inte så mycket att göra med den här diskussionen. Även en gammal pentium hade en 80-bitars beräkningsdel för flyttal. CPUer med SSE har 128-bitars register där den kan räkna på upp till 2st 64 bitars flyttal (brukar heta double i programmeringsspråk) i ett svep osv. Skillnaden med x64 är att default blir 64bits för heltalsberäkningar.

Men framförallt ger x64 ett gäng andra fördelar. Givetvis adresserings-biten med att det blir mycket enklare att komma åt mer än 4GB minne på ett enklare sätt. AMD passade oxå på att lägga till ett par andra saker när dom skapade x64 som inte har alls med 64bitar att göra. Tex fler register vilket gör att kod kan optimeras mycket bättre eftersom register är väldigt mycket snabbare att använda jämfört med annat minne i en dator. Förenklat kan säga att allt som en dator arbetar på måste finnas i ett register. I gamla vanliga 32 bit x86 finns 8 register, så det blir ett väldigt massa flyttande av data fram o tillbaka. Med x64 får man 16 st, så då blir det enklare att hålla det man behöver i registren.

Hela diskussionen, speciellt när det var fight mellan konsollerna om högst bit-tal, blir lätt väldigt fel. Väldigt mycket PR helt enkelt. Processesorer är väldigt komplexa och har inte bara en enda storlek, inte ett enda kommando dom kör osv. Dessutom, hur dom egentligen är implementerade är en helt annan sak. En modern CPU översätter maskinkoden till interna instruktioner som kan vara helt annorlunda. Den kan göra beräkningar i annan ordning är vad man skickat till den tex.

Permalänk
Skrivet av Kilroy:

Jag är totalt okunnig egentligen men är det inte så att om du har en uträkning som i sig inte får plats att adresseras på 32-bitar måste delas upp och blir väldigt mycket långsammare på 32-bitars gentemot 64-bitars.

Det gör att man kan låta uträkningar osv bli större eftersom de får plats i adresseringsutrymmet i sin helhet vilket kan ge en stor prestandaboost i vissa fall.

Det är dock väldigt sällsynt överlag men det är ett exempel iaf.
Eller har jag fel?
Jag är inte så säker och vill mest få min uppfattning bekräftad eller dementerad av någon som faktiskt är kunnig på riktigt.

Jag kan inte heller påstå att jag har jättekoll på x86 eller x64 då de kurser jag läst i datorsystem handlat mest om ARM arkitektur, men grundstenarna borde vara någorlunda samma, så detta ska du nog ta med en nypa salt

Kan absolut tänka mig att som du säger program som använder sig av 64 bitar flyttal får sig en rejäl skjuts vid byte till 64 bitar då dom inte behöver lägga till massa extra instruktioner för att skyffla runt och sätta ihop talen. Men finns det inte instruktioner i sse/sse2/3dnow som ska snabba upp detta redan ?

Sen kan det ju bli så att en 64 bitars processor med samma cache storlek som en 32bitars faktiskt presterar sämre, eftersom det tar dubbelt så mycket plats att lagra en 64 bitars adress. Nu har väll 64bitars processorerna så pass stora cachar i förhållande till de gamla 32 bitar så att detta inte går att mäta riktigt på.

Kör du multiplicering av 2st 64 bitars tal måste du ju fortfarande lagra svaret i high/low register, precis som med 32 bitar då du annars kan få overflow.
Om man har program som gör extremt stora hopp i koden kanske man får sig en liten förbättring, då längden för relativa hopp (som iaf ARMs branch/jump instruktioner är) borde öka betydligt. Någon som kan fylla i mer om hurvida man faktiskt får en prestandaförbättring ?

Visa signatur

min skärm är större än din

Permalänk
Medlem
Skrivet av DragonRapide:

undrar när 128 bit kommer?

När 16 exabytes inte räcker till.

Permalänk
Avstängd

Härligt att en av få utvecklare verkligen utvecklar och inte tvärt om! Skrota Xbox och alla andra tråkboxar så utvecklingen går framåt!

Hur går det med COD motorn förresten? Utvecklingen står lika stilla som uhmmm ,kommer inte på något som står så stilla!

Visa signatur

Core I7 920,Cosair 12gb ddr3,GA-ex58-UD5,Gigabyte GTX580,Corsair HX 850W,Intel X25MG2 160GB,2st WS 2TB@7200,Wacom Intous4 medium.

Permalänk
Avstängd
Skrivet av vb:

Men framförallt ger x64 ett gäng andra fördelar. Givetvis adresserings-biten med att det blir mycket enklare att komma åt mer än 4GB minne på ett enklare sätt. AMD passade oxå på att lägga till ett par andra saker när dom skapade x64 som inte har alls med 64bitar att göra. Tex fler register vilket gör att kod kan optimeras mycket bättre eftersom register är väldigt mycket snabbare att använda jämfört med annat minne i en dator. Förenklat kan säga att allt som en dator arbetar på måste finnas i ett register. I gamla vanliga 32 bit x86 finns 8 register, så det blir ett väldigt massa flyttande av data fram o tillbaka. Med x64 får man 16 st, så då blir det enklare att hålla det man behöver i registren.

Jo men jag kommer ju åt r8-r15 även om jag programmerar i 32-bit. Så just när det kommer till registena så spelar det mindre roll.

Jag har faktiskt svårt att förstå varför så många tycker detta är så jätte bra. Ja de kommer kunna allokera mer minne och det kanske passar dem. Men i många fall behöver man inte 64-bitar så varför då göra programmen 64-bit? På OS nivå är det dock en helt annan sak.

Permalänk
Medlem

Då kanske man slipper den jobbiga mappen som microsoft så gladeligen döpt till Program Files (X86) om något år. Visserligen så lär vi nog vara tvingade till att använda ett "Metro" Gränsnitt med borttagen filhanterare bara för att vi är för dumma för att orientera oss i ett så komplicerat system som Microsoft Windows 15!

Visa signatur

Gammal men bra.

Permalänk
Inaktiv
Skrivet av Thewiruz:

Härligt att en av få utvecklare verkligen utvecklar och inte tvärt om! Skrota Xbox och alla andra tråkboxar så utvecklingen går framåt!

Hur går det med COD motorn förresten? Utvecklingen står lika stilla som uhmmm ,kommer inte på något som står så stilla!

De kommer ju ersättas framöver, dock verkar det dra ut rejält på tiden. Det är bara att glömma att spelkonsollerna skulle försvinna, de kommer alltid finnas kvar. Vill man se spel på PC får man dels köpa spel men även utveckla spel själv om man anser sig veta hur spel ska göras korrekt. Det behövs definitivt nytt folk i spelbranchen och lite nytänk.

Nog för att CoD-motorn behöver bytas ut men att den ändå hållit så länge är ändå rätt imponerande. Det står rätt stilla även hos Bethesda. Skyrims motor är ju även den uråldrig och kraftigt daterad.

Permalänk
Skrivet av Andre_H:

varför krävs så mycket ram på pc när konsoler klarar sig med 64MB?

Det är ju det dom inte gör, och har i princip aldrig gjort. Det är ett evigt klagande från diverse utvecklare över mängden minne på konsoller. De flesta konsol-spelen har blivit väldigt bantade innan release pga detta.

Visa signatur

Intel i7 6700k @4.7Ghz | Be Quet! Dark Rock Pro 3 | Asus Z170 ROG Hero VIII | 32GB DDR4 Corsair Vengeance 3000Mhz | Asus 1080Ti Strix OC | Samsung 950 Pro M.2 250GB, Samsung EVO 850 120GB, Samsung EVO 840 250GB, & Seagate 7200rpm 4TB | Corsair HX 1050W | Fractal Design S | Asus Xonar U7 | Sennheiser PC360 | TrackIR 5 + ProClip | Eizo 27" EV2736W | HTC Vive | Windows 10 Pro

Permalänk
Datavetare
Skrivet av Morkul:

Jo men jag kommer ju åt r8-r15 även om jag programmerar i 32-bit. Så just när det kommer till registena så spelar det mindre roll.

Jag har faktiskt svårt att förstå varför så många tycker detta är så jätte bra. Ja de kommer kunna allokera mer minne och det kanske passar dem. Men i många fall behöver man inte 64-bitar så varför då göra programmen 64-bit? På OS nivå är det dock en helt annan sak.

Du kommer inte åt r8-r15 i 32-bit, i alla fall inte på Windows eller OSX. Kör du Linux så dök det upp en nyhet i 3.4 kärnan, som släpptes för 3 dagar sedan, som kallas x32 ABI och det gör exakt det du nämner: ger dig tillgång till alla 16 register i 32-bitars läge. Lite information on x32 ABI finns här.

Du har rätt i att många säger "jag vill ha 64-bit" utan att egentligen förstå implikationerna av detta. 64-bitar är i praktiken långsammare än 32-bitar i en absolut majoritet av fallen, t.ex. spel, om det inge finns några andra fördelar än att register blivit längre. Anledningen till den lägre hastigheten är att pekare och därmed datastrukturer som innehåller pekare blir större -> tar mer plats i CPU-cache -> mer cache-missar -> långsammare.

Som redan nämnts så gjorde ju AMD ett väldigt gott arbete när de skapade AMD64 (x86_64). Dels dubblerades antal heltals register från 8 till 16, dels dubblerades antal SSE register från 8 till 16 och man gjorde sig av med den gamla x87 FPU stacken, flyttalsberäkningar görs numer via SSE register.
Men 64-bitars övergången innehåller även lite extra förbättringar som inte alls har med övergången till 64-bitar att göra, utan till ABI (Application Binary Interface). ABI är inget AMD bestämt utan något varje OS bestämmer. I Windows skickas nu de 4 första argumenten via register i stället för stacken och på Linux skickas de 6 första argumenten via register i stället för stacken.

Varje funktion som inte anropar en annan funktion kan (i alla fall på Linux men tror Windows har samma optimering) strunta i att skapa en s.k. stack-ram då det alltid finns minst 128 byte som är fria att använda ovanför nuvarande stack, s.k. red-zone. Lite mer info här.

AMD insåg faktiskt redan när de skapade AMD64 att majoriteten av alla program kommer inte ha någon större nytta av 64-bitars. Av den anledningen så är 32-bitar fortfarande den storlek som alla instruktioner arbetar med som förval. Vill man att instruktion ska operar på 8, 16 eller 64 bitar så måste den ha ett s.k. length changing prefix, d.v.s instruktionen blir 1 byte längre om den inte jobbar med 32-bitars tal.

64-bitars addition assembler maskinkod add %rdx, %rax -> 48 01 d0 32-bitars addition assembler maskinkod add %edx, %eax -> 01 d0

Tack vare AMDs genomtänkta design av 64-bit som löste en hel del av de tillkortakommanden som IA-32 (x86) hade så är det faktiskt inte helt ovanligt att 64-bitars program faktiskt är ungefär lika snabba som 32-bit. På andra CPU-arkitekturer som PowerPC, MIPS och SPARC så är 64-bitars varianterna i princip alltid långsammare då man inte har några förbättringar utöver 64-bitars register i stället för 32-bitars register.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Oggyoc:

Det stämmer dock inte. 32-bitars program kan addressera upp till 4 GB RAM, iaf i Windows. Dock måste man ha minne kvar till operativssystemet, så när det gäller x32 av Windows blir det cirka 3 GB till ett enskilt program.

Och den begränsningen i sig gäller bara windows, på *UX har man kunnat ha mer minne rätt länge.
http://en.wikipedia.org/wiki/Physical_Address_Extension

Citat:

...
Microsoft Windows implements PAE if booted with the appropriate option, but current 32-bit desktop editions enforce the physical address space within 4GB even in PAE mode. According to Geoff Chappell, Microsoft limits 32-bit versions of Windows to 4GB as a matter of its licensing policy...

Och 64-bittars har funnits bra mycket längre än fem år, som vissa säger i tråden, jag har bestämt för mig att det var standard 1995 eller så på datorerna jag jobbade med då.

Och när det gäller hastighet är vissa beräkningar rakt av 4x snabbare på 64-bittarsdatorer (bignum-multiplikation och saker som bygger på det, mestadels kryptering)

Permalänk
Avstängd
Skrivet av Yoshman:

Du kommer inte åt r8-r15 i 32-bit, i alla fall inte på Windows eller OSX. Kör du Linux så dök det upp en nyhet i 3.4 kärnan, som släpptes för 3 dagar sedan, som kallas x32 ABI och det gör exakt det du nämner: ger dig tillgång till alla 16 register i 32-bitars läge. Lite information on x32 ABI finns här.

Nu sitter jag i och för sig på ett egenkodat OS för tillfället. Men varför skulle ett OS lägga sig i min assembler kod på den nivån?

Permalänk
Medlem
Skrivet av Morkul:

Nu sitter jag i och för sig på ett egenkodat OS för tillfället. Men varför skulle ett OS lägga sig i min assembler kod på den nivån?

Om inte OS:et sparar dina register när det byter trådar blir inte innehållet i dem direkt tillförlitligt.

Permalänk
Avstängd
Skrivet av cardeci:

Om inte OS:et sparar dina register när det byter trådar blir inte innehållet i dem direkt tillförlitligt.

Förstår inte riktigt vad du menar men om jag nu har tillgång till dem under 32-bit varför skulle OSet blockera att jag använder dem? Jag kan på tok för lite om Windows 7 för att argumentera men det låter ju helt virrigt. Måste fan slänga in en snabb kodrad i något MASM projekt för att kolla va fan som händer.

För den som vill sätta sig in mer i problemet kan läsa: http://download.intel.com/design/processor/manuals/253665.pdf

Permalänk
Datavetare
Skrivet av Morkul:

Nu sitter jag i och för sig på ett egenkodat OS för tillfället. Men varför skulle ett OS lägga sig i min assembler kod på den nivån?

Ok, om du kör egenkodat OS så har du naturligtvis privilegiet att välja ABI själv. Antar att du då kör med 32-bitars pekare trots att ditt kodsegment kör i 64-bitars läge (det är exakt vad x32 ABI gör).

Annars är anledningen i Windows, OSX och Linux (om vi bortser från x32) att en 32-bitars process kör i s.k. compatibility mode. Hela poängen med detta läge är att ge en process illusionen av att den kör på ett 32-bitars system, trots att OS-kärnan kör i 64-bitars läge. Så 32-bitars processer körandes under dessa har helt enkelt bara tillång till op-koderna för IA-32 och där ingår inga register r8-r15.

Edit: Jag som blandat ihop saker, har rättat texten ovan.
En x86_64 CPU som kör i 64-bitars läge körs i long mode. I long mode kan kod-segmentet vara i ett av två lägen

64-bit mode - i detta läge har man tillgång till alla AMD64/Intel64 instruktioner och alla register. ABI bestämmer om pekare än 32-bit eller 64-bit, ABI bestämmer även storleken på C "long". Här skiljer sig Windows med sina 32-bits long (man för använda "int64_t" eller "long long" om man vill ha 64-bitars heltal) från Linux och OSX som kör med 64-bitars "long"
x32 kör också i long mode, men använder ILP32 ("int", "long" och pekare är alla 32-bit, man kan ändå använda 64-bitar via "int64_t").

compatibility mode - i detta läge beter sig CPU som om den körde på en 32-bitars CPU enligt IA-32

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Avstängd
Skrivet av Yoshman:

...text...

Jo ska man vara riktigt noggrann så heter registrerarna R8D - R15D när man är använder dem under 32bit. Dessutom fungerade utmärkt att använda under Windows 7, testade precis bara för att vara säker.

Permalänk
Avstängd
Citat:

För att kunna använda ett 64-bitars operativsystem krävs att processorn har stöd för instruktionsuppsättningen x86-64, vilket i princip alla moderna processorer från Intel och AMD är utrustade med. Microsoft kallar 32-bitarsversionerna för "x86" och 64-bitarsutgåvorna för "x64"

Microsoft är så jävla puckade.
32-bit = x86
64-bit = x64
var finns logiken? LOL

Kalla det för x86-64.

Permalänk
Avstängd

Detta kanske kommer innebära några PC only spel då?

Permalänk
Avstängd
Skrivet av rektor:

Microsoft är så jävla puckade.
32-bit = x86
64-bit = x64
var finns logiken? LOL

Kalla det för x86-64.

Jag tror det kommer ifrån att AMD kallade den första 64-bit processorn för AMD64, sedan blev det helt enkelt i folkmun kallad för X64.

Edit: Kollade upp det en snabbis. Windows XP X64 var just en version som då bara fungerade på AMD64 (Intel hade inga 64 bit cpus ännu). Sedan dess har det hängt med att X64 är 63-bit versionen.

Permalänk
Datavetare
Skrivet av Morkul:

Jo ska man vara riktigt noggrann så heter registrerarna R8D - R15D när man är använder dem under 32bit. Dessutom fungerade utmärkt att använda under Windows 7, testade precis bara för att vara säker.

Om det fungerar under Windows beror det endast på att du kör i 64-bitars läge, d.v.s du kör med LLP64 vilket är det helt normal 64-bitars läget.
Bygger du en 32-bitars binär och kör den på 64-bitars Windows så kan du INTE komma åt r8-r15. Vet inte hur man bygger 32-bitars binärer på 64-bitars Windows, men i OSX och Linux så gör du det genom att skicka med "-m32" till kompilatorn.

Visst, använder du "r8d" så säger du till assemblern att du vill använda instruktionen i 32-bitars läge, men det är INTE vad man menar med att köra processen i 32-bitars läge. Du får fortfarande betala för 64-bitars pekare.

"r8", "r8d", "r8w" och "r8b" är alla samma register, register "r8". Men de talar om att du vill använda instruktionen i 64, 32, 16 eller 8 bitars läge.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer