AMD64 - kdo doda HW?
Jan Kasprzak
kas na informatics.muni.cz
Úterý Listopad 25 11:31:37 CET 2003
Pavel Janoušek wrote:
: Vy povazujete prechod 32 -> 64 za hladky, ja nikoliv, nejen z duvodu historickych zkusenosti.
:
Nezapomente, ze v dobe 16-bitovych systemu byla vetsina veci psana
v assembleru. Dnes kdy jednak mam programy ktere uz davno na 64-bitovych
systemech bezi a jednak jsou psany v C nebo v necem vyssim, staci uplne
to, ze se v hlavickovych souborech zmeni definice typu off_t, ssize_t
a podobnych a nemusim zadnou 64-bitovost resit. Nechapu proc by me jako
programatora melo zajimat, jak velky mam int nebo long (tedy v pameti;
pokud bych chtel ukladat nejaka takova data na disk, musim to vedet nebo
musim pouzivat typy explicitni delky jako uint32_t). Podle meho nazoru
ve svete PC bude prechod 32->64 bitu _vyrazne_ jednodussi (aspon v Linuxu)
protoze vetsina aplikaci je davno psana bez zavislosti na velikosti typu
int a dalsich (vsimnete si, ze nepisu 64-bitova - IMHO 64-bitova aplikace
je stejne zlo jako 32-bitova nebo 16-bitova).
: No ona Alpha byla taky jen 32-bit po urcitou dobu...
Coze? Neplacejte nesmysly. Alpha je od zacatku 64-bitovy procesor (tim myslim
ze ma registry velke 64 bitu, umi delat 64-bitove aritmeticke operace,
ma 64-bitovy virtualni adresni prostor, atd).
: coby virtualni stroje fine, ale realne na cem se behal (nikoliv experimentoval) bezne Linux?
:
SGI Altix? Ten koupite s Linuxem primo od vyrobce.
: > unsigned long velka_pamat;
: > ...
: > if ((m = malloc (velka_pamat)) == NULL)
: > printf ("nemozem alokovat pamat");
: > else
: > nacitavam_velke_data(m);
: >
: To je hezkla ukazka HODNE PRASACKEHO kodu, ktery jste nejprve odsoudil - je pravda, ze long mate 64-bit - to tak bude vzdy? Pokud se divam do reference ke GLIBC, tak vidim u malloc tuto deklaraci (ANSI C bude vyhovovat vzdy, Vas kod tuto vysadu mit nemusi):
:
: void *malloc(size_t size);
Long je v ANSI C definovan jako nejvetsi numericky typ, se kterym umi
CPU efektivne pracovat. Prasacke to neni, ale lepsi by bylo pouzit size_t.
:
: Tak a ted mi reknete bez testovani a analyzy jak z kristalove koule poznate velikost toho size_t? Bavili jsme se snad o portabilnich programech, dle toho by mely vypadat i programovaci konstrukce... Zajimal by me CISTY zpusob (a bez if - to je prace progamatora, vy tvrdite, ze je to prace pro kompilator) - ja ho nejsem schopen vymyslet, proto se po nem pidim, kdyz rikate jak je to snadne a jak to kompilator zaridi za nas...
:
sizeof(size_t)
: Ne chtel jsem rici, ze jednotny zaklad v Linux kernelu (C & ASM) nestaci, a ze kompilator si nemuze domyslet... proto tam nelze pouzit Intel C, ktery produkuje na modernich Intel CPU kvalitnejsi kod nez GCC (zejmena pokud do toho pocitame SIMD instrukce jakekoli urovne)...
:
Intel C nelze pouzit proto, ze zdrojaky kernelu obsahuji spoustu
GCC-specifickych konstrukci (jak udelate v Intel C pametovou barieru?
Jak reknete ze tato funkce ma jit do jine sekce nez ".text"?).
-Jan Kasprzak
PS.: Zalamujte zpravy na <80 znaku (jak je napsano i v Meta-FAQ),
neda se to po Vas cist.
--
| Jan "Yenya" Kasprzak <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839 Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/ Czech Linux Homepage: http://www.linux.cz/ |
| I actually have a lot of admiration and respect for the PATA knowledge |
| embedded in drivers/ide. But I would never call it pretty:) -Jeff Garzik |
Další informace o konferenci Linux