Autor Wątek: Co Programistom Gier Dają Nowe 64 bitowe Procesory ?  (Przeczytany 9438 razy)

Edek

  • Gość
# Październik 30, 2006, 14:01:10
Zdaje sie ze nadchodzi era 64 bitowych procesorów :)
Co Programistom Gier Dają Nowe 64 bitowe Procesory ?
Jak i w czym Powinno sie pisać aplikacje 64 bitowe ?
Co dostajemy jeszcze poza 64 bitowym typem int  ;) ?
Na jakie mozna liczyc przyspieszenie piszac kod pod 64 bity ?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline nameczanin

  • Użytkownik
    • devlog

# Październik 30, 2006, 15:25:46
Nie znam sie, bo mnie to zbytnio ostatnio nie interesuje, ale sadze, ze to nie tylko zaleta 64 bitow moze nam cos pomoc (wczesniej tez moglismy miec 64-bitowe int'y, czemu nie?!), ale i jakies kolejne technologie, tak jak - idac od poczatku - MMX, SSE itd. Poza tym obstaja jeszcze dwa rdzenie. Jakie przyspieszenie? Slyszalem od kumpla, ze jak ma sie odpowiedni system, to naprawde b. duze :)

Jak i w czym - co za roznica. Cos, co kompiluje odopowiednio progsy, to wiadomo ze na pewno MS VC2005. Programistom gier da to IMHO tylko wieksza swobode w optymalizacjach. Wizja kazdego innego bywa zawsze inna.

Edek

  • Gość
# Październik 30, 2006, 16:01:29
Zdaje sie ze nadchodzi era 64 bitowych procesorów :)
Przede wszystkim nadchodzi (już nadeszła) era wielu rdzeni. Rozmiar szyny jest mniej istotny.

Co Programistom Gier Dają Nowe 64 bitowe Procesory ?
Jako, że programiści gier piszą głównie pod Windows, a Windows radzi sobie z 64-oma bitami tak sobie, na razie nic nie daje.

Jak i w czym Powinno sie pisać aplikacje 64 bitowe ?
Dobrze. W dowolnym narzędziu potrafiącym generować kod na platformę.

Co dostajemy jeszcze poza 64 bitowym typem int  ;) ?
Przede wszystkim zwiększony rozmiar pamięci (pow. 4GB) do zaadresowania.

Na jakie mozna liczyc przyspieszenie piszac kod pod 64 bity ?
Proste testy o jakich czytałem wspominały o kilku do kilkunastoprocentowym wzroście.

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Październik 30, 2006, 16:02:46
Przyspieszenie? Nie znam się na sprawach hardware'owych, ale z reguły więcej bitów oznacza nieco wolniejsze działanie, co jest naturalne (większy obszar do zaadresowania).

Poza tym nie musisz każdego wyrazu w zdaniu pisać z dużej litery, wystarczy pierwszy ;).

Edek

  • Gość
# Październik 30, 2006, 16:51:48
Czyli 64 w nazwach nowych procesorow oznacza 64 bitowa szyne adresowa ?
To by sie nawet zgadzalo bo juz pierwsze procesory pentium mialy 64 bitowa szyne danych i 32 bitowa szyne adresowa.
A to zastanawiajace jest ze skoro juz od 10 lat mamy procesory z 64 bitowa szyna danych typy podstawowe w visualu takie jak int czy float sa 32 bitowe. Moze chodzi o kompatybilnosc ze starszymi prockami np 486 ktore posiadaly 32 bitowa szyne danych. Czyli 64 bity w nowych prockach poza nowa przestrzenia adresowa nic nowego nie daja.
Poprawcie mnie jesli sie myle.

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Październik 30, 2006, 16:55:43
Przy okazji: Jak pisać programy, żeby poprawnie kompilowały się i działały także na 64 bitach? Są na ten temat jakieś artykuły albo tutoriale?

Skoro typ int ma teraz mieć 64b, char będzie miał 8b, short 16b, to jaki typ będzie miał 32b? W C++ nie ma nic więcej do dyspozycji.

Czy float i double zostaje w procesorach 64-bitowych taki jaki był?

Offline Kamil Trzciński

  • Użytkownik

# Październik 30, 2006, 17:11:37
long?

Edek

  • Gość
# Październik 30, 2006, 17:18:31
Edek: poczytaj sobie, np. tu [1].

Reg: przede wszystkim jeśli używasz typów jak int to nie powinieneś zastanawiać się nad ich rozmiarem. Jeśli musisz zastanawiać się nad rozmiarem to używaj typów int64_t i podobne (w C99 masz stdint.h, w C++ boost/cstdint.hpp). Oprócz tego stosuj typy takie jak intptr_t, ptrdiff_t. Innymi słowy nie stosuj int wszędzie gdzie popadnie.

[1] http://en.wikipedia.org/wiki/X86-64
« Ostatnia zmiana: Październik 30, 2006, 17:23:22 wysłana przez bies »

Edek

  • Gość
# Październik 30, 2006, 18:27:09
Juz troche bardziej pojmuje technologie 64.
Poprzednie procki poczawszy od Pentium mialy 64 bitowa szyne danych, ale rejestry ogolnego przeznaczenia mialy 32 bitowe. Stad podstawowe typy takie jak int czy float byly 32 bitowe. A w tych nowych prockach rejestry ogolnego przeznaczenia sa juz 64 bitowe a ponadto zwiekszono ich ilosc z 8 do 16. Liczba 128 bitowych rejestrow urzywanych przez instrukcje SIMD rowniez zwiekszyla sie z 8 do 16. Stad wzial sie ten kilkunastoprocentowy przyrost predkosci.
Szyna adresowa zwiekszyla sie z 32 do 48 bitowej , ale nie ma to wplywu na wydajnosc.
Reasumujac programista programujacy w jezyku wysokiego poziomu nie wiele moze zrobic zeby przyspieszyc program, a
o wykorzystanie tych dodatkowych 64 bitowych rejestrów dba juz kompilator.

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Październik 30, 2006, 20:04:22
Skoro typ int ma teraz mieć 64b, char będzie miał 8b, short 16b, to jaki typ będzie miał 32b? W C++ nie ma nic więcej do dyspozycji.

Będzie się nazywał double short albo long short ;).

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Październik 30, 2006, 20:08:07
Cytuj
Co Programistom Gier Dają Nowe 64 bitowe Procesory ?
O ile się dobrze orientuję, doszło trochę nowych rejestrów ogólnego przeznaczenia, dzięki czemu kompilator może lepiej zoptymalizować kod. :)

Cytuj
typ int ma teraz mieć 64b
Z tego, co wiem, to int ma zostać 32-bitowy, a 64 bity ma mieć long.

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Październik 30, 2006, 20:46:41
Przy okazji: Jak pisać programy, żeby poprawnie kompilowały się i działały także na 64 bitach? Są na ten temat jakieś artykuły albo tutoriale?

Skoro typ int ma teraz mieć 64b, char będzie miał 8b, short 16b, to jaki typ będzie miał 32b? W C++ nie ma nic więcej do dyspozycji.

Czy float i double zostaje w procesorach 64-bitowych taki jaki był?

Tak jak napisał bies, ale napiszę to inaczej trochę ;)

AD1. Oprócz tego co napisał bies (przynajmniej nie explicite) - nie zakładaj, że wskaźnik zmieści się w int - to jest główna zasada. Jeśli chodzi o dokumenty to dużo tego jest na stronkach MS'a i AMD
AD2. int ma 32bity, long ma 64
AD3. AFAIK tak

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Październik 31, 2006, 12:29:27
Aha, czyli int zostaje 32-bitowy, long staje się 64-bitowy, void* i wszelkie wskaźniki stają się 64-bitowe, a biblioteka standardowa przedefiniowuje typy takie jak size_t na 64-bitowe? Indeksowanie tablicy i podawanie liczby elementów przy dynamicznej alokacji też pewnie będzie teraz oczekiwało liczby 64-bitowej?

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Październik 31, 2006, 13:21:02
Indeksowanie tablicy i podawanie liczby elementów przy dynamicznej alokacji też pewnie będzie teraz oczekiwało liczby 64-bitowej?

To by było logiczne, bo indeksowanie tablicy to przecież to samo, co adresowanie pamięci, no a jeśli indeksowanie będzie 64-bitowe, to liczba elementów przy dynamicznej alokacji oczywiście też.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Październik 31, 2006, 13:29:24
Cytuj
Indeksowanie tablicy i podawanie liczby elementów przy dynamicznej alokacji też pewnie będzie teraz oczekiwało liczby 64-bitowej?
Tutaj nigdy nie było konkretnych wymagań i zawsze mogłeś indeksować i allokować tablice nawet char'ami. Jak to się będzie odbywało w samym kodzie to już nie wiem, ale kompilator na pewno szczegółowych wymagań tutaj nie narzuci. :)