» »

Intel dosegel končno hitrost

1
2
»

Brane2 ::

Bi še jaz nekaj pristavil o Motoroli, ko se že tako zanimate zanjo.

Tisti "super-duper" CPU je bil, danes že slavni 68000. Stvar je gate parala takrat in za QLom sem ob asemblerju preživel neskončno število ur. Ta procesor me je fasciniral. Kakšen dosežek za takratne čase ! Za tiste, ki niso vedeli, številka označuje približno število trenzistorjev v osnovnem modelu- 68.000 tranzistorjev je imela zadeva.

Kar se kompatibilnosti tiče, rečeno ni povsem res. Motorola 68000 resda ni binarno združljiva s staro 8-bitno serijo 6800, vendar:

- njeno vodilo zna emulirati staro vodilo 6800ke, torej v sili lahko na 68000ko priklopimo vso staro periferijo

- je bil "nov" CPU toliko hitrejši od starega, da ga lahko emulira. Ob splavitvi je Motorola predstavila softver za konverzijo 6800- kode v 68000 kodo. Stvar ni preevedla čisto vsega povsem korektno, vendar v zadovoljivi meri, da se ni nihče pretirano sekiral.

68000tko ni pokopala kakršnakoli napačna odločitev snovalcev, ampak gomila napak trapastega sektorja za marketing, zelo slaba vlaganja v razvoj in obešanje na največje kupce teh čipov- vojsko, proizvajalce mainframeov in pozneje seveda Applea. Design je bil tako dober, da ga je MC vsakih nekaj let malo polepšala, prepakirala in znova prodala folku "muda za bubrege". Folk je to trpel, vendar so jo počasi prehiteli vsi po vrsti. Zadnji znani čip v tej seriji je bila 68040-tka, ki je bila generacijsko v razredu 486tke (djeanjsko pa veliko višje).

68060-tka je sicer tudi izšla, in je bila pravi screamer, a se ni prijela ker se je Apple takrat že odločil, da bodo preskočili z 68040 direkt na PowerPC serijo.

Danes živi 68000-tka kolikor toliko neokrnjena samo še v osnovni izvedbi- kot MC68SEC000, ki jo je užitek videti in pa skozi ColdFire serijo- ki pa je zelo predelana (utrgani vsi zahtevnejši deli- vse kar je zahtevalo preveč tranzistorjev in mW štroma, brez nekaterih manj pomembnih ukazov).

Aja, dokončni žebelj v krsto 68000tke je bil zabit v trenutku, ko se njihov famozni program "Iridium" ni posrečil. Zmetali so ogromne denarje v tistih 100 satelitov in to jim je zadalo težek udarec.

Motorola je prešla iz svetovne CPU velesile v bolj perifernega igralca.
On the journey of life, I chose the psycho path.

Tear_DR0P ::

Brane2 hvala za tvoj post. Jst se nism več spomnu točnih podatkov, zato jih rajš nisem navaju. Je blo pa to to kar sm mislu.
"Figures don't lie, but liars figure."
Samuel Clemens aka Mark Twain

TribesMan ::

Vsi ki se vedno upate da se bo zgodil cudez, in da bomo imeli Pemtium M CPUje za desktop okolje, se motite...
Predvcerjasnjim sem bil na Intelovi tiskovni konferenci v Koloseju, in vse kar bomo ugledali do nekje sredine leta 2005 bodo malo nabildani Prescotti z 2MB cachea in se nekaj dodatki... Skratka nic sokantnega. Takoimenovana serija 6x0 se bo pojavila skupaj z microsoftovim XP 64 bit edition, delovala pa bo na frekvencah od 3000 do 3800MHz, CPUje bomo se vedno vlagali v LGA775 lezisca, vendar le v plosce ki bodo podpirale 1066FSB... Tko da o kaksni kompatibilnosti za nazaj ni mogoce govoriti. Najvec casa so baje porabili za zmanjsevanje porabe elektrike, sam kolikor sem jaz razumel zadevo gre zgolj za to, da bo v CPUje vgrajena ena enhanced speedstep tehnologija... tko da poraba med full loadom ne bo nic manjsa... kar je potrdil tudi predavatelj.

No v drugi polovici 2005 pa se pricakujejo prvi dual core CPUji... Sam to bo namenjeno bolj server in workstation platformam... za mainstream uporabo se bodo zaceli uporabljati kasneje. Je bilo pa potrjeno, da bodo dual core CPUji na voljo za vse platforme... od prenosnikov pa do Itanium streznikov...

Pentium M pa samo za mobilce...

LP

TribesMan
Moj kompjuter dela: KVIIIIK ... KVIIIK ... KVIIIK.

Ko ga navijem dela: KVIKKVIKKIVKKVIK. :)

dr.J ::

@ Xenon74:
> Kaj bi se zgodilo, če bi primerjali Athlon 64 pri 2GHz z 2MB L2 z Pentium M 2GHz z 2MB L2?

Jaz sem preizkusil notebooka (Pentium M 1.4 GHz, 1 MB L2 cache, 32 bit) in pa Opterona 242 (1.6 GHz, 1 MB L2 cache, 32 in 64 bit), in sicer sem prevedel en zelo floating-point intenziven program z najnovejšim Intelovim prevajalnikom. OS je bil x86-64 Linux (FC2).

Rezultat:
Pentium 2 min 16 sekund
Opteron 1 min 56 sekund (64 bit)
Opteron 2 min 17 sekund (32 bit)

Seveda sem omogočil optimizacijo kode za Pentium M procesorje, medtem ko se moral Opteron zadovoljiti s P4 flagom (sse2) in pa EM64T podporo. Zdaj se lahko oceni rezultate za 2 GHz primerka. Drugi prevajalniki kažejo še večjo razliko 32 : 64 bit, a so časi računanja kljub temu daljši. Pač ima Intel ta čas enega najboljših prevajalnikov.

Brane2 ::

Kaj bi dobil, če bi probal z gcc3.4.3 z -march=opteron -O3 ?

Ali misliš, da je gcc tako daleč zadaj, da se tudi te optimizacije ne splačajo ?
On the journey of life, I chose the psycho path.

dr.J ::

Program je napisan v Fortranu90, tako da gcc zaenkrat odpade.

Kar pa sem prevedel z gccjem in primerjal z intelovo kodo, je bila gccjeva tudi do 2x počasnejša. ampak to je že nakj časa nazaj, ko še ni bilo opteronov.

Zheegec ::

Dokler je cross-breed med 32 in 64 biti ni mnogovredna.

Potem pa raje hitro prodaj svoj Pentium/AthlonXP procesor, saj sta oba popolnoma 16-bitno x86 kompatibilna procesorja.
AMD64 deluje v 64-bit, uporablja več registrov, ki so sedaj resnično GPR (vse to seveda v 64-bit)
Vsi 32-bit x86 procesorji na trgu (torej vsi Athlon64, Pentium, Celeron, AthlonXP, Athlon procesorji in starejši) pa se od 16-bit procesorjev razlikujejo samo po tem, da so 32-bit (torej 32-bit GPR) in čisto nič drugega.

Povedano drugače - po tvoji logiki je Athlon64 bolj 64-bit procesor, kot je Pentium 4 32-bit procesor :D
"božja zapoved pravi; <Spoštuj očeta in mater>,
ne govori pa o spoštovanju sodstva."
Janez Janša, 29.04.2014

Bistri007 ::

8080, 8085 - kao asemblersko kompatibilna z 8086.

8086, 8087 fpu, 8088 (počasnejši 8086)

186: ukaz enter ipd.

LETO 1984
286 ima 24-bitno adresiranje (16MB rama) in zaščiten način

LETO 1985
386 se od 286 razlikuje to tem da ima:
- 32-bitno vodilo (386DX), 386SX je imela 16-bitno
- še V8086 način (poleg zaščitenega in realnega)
- CR in DR registre
- 32 bitne operande (samo v protected mode)

LETO 1989
486 je 386 z vgrajenim 387 in pipeliningom

LETO 1994
Pentium je 486 s supersklarnostjo (V in U pipa) ter izboljšanim V8086 načinom (hitrejše klicanje interruptov)
Ene par ukazov: CPUID, RDTSC

MMX, 3DNow!, SSE1 - SSE3 so dodatni ukazi, ki so pomapirani na 0F, F2 in F3.

Še malo pejstanja iz EM64T dokumenta od Intela:
http://www.intel.com/technology/64bitextensions
4.2.1. Coding Rules Affecting 64-bit Mode
4.2.1.1. Use Legacy 32-Bit Instructions When The Data Size Is 32 Bits

64-bit mode makes 16 general purpose 64-bit registers available to applications. If application data size is 32 bits, however, there is no need to use 64-bit registers or 64-bit arithmetic.
The default operand size for most instructions is 32 bits. The behavior of those instructions is to make the upper 32 bits all zeros.
For example, when zeroing out a register, the following two instruction streams do the same thing but the 32-bit version saves one instruction byte:
32-bit version xor eax, eax ;
Performs xor on lower 32bits and zeros the upper 32 bits.

64-bit version
xor rax, rax ;Performs xor on all 64 bits

This optimization holds true for the lower 8 general purpose registers: EAX, ECX, EBX, EDX, ESP, EBP, ESI, EDI.

To access the data in registers r9-r15, the REX prefix is required. Using the 32-bit form there does not reduce code size.
Assembly/Compiler Coding rule
Use the 32-bit versions of instructions in 64-bit mode to reduce code size unless the 64-bit version is necessary to access 64-bit data or additional registers.

4.2.1.2. Use the Extra Registers to Reduce Register Pressure
64-bit mode makes 8 additional 64-bit general purpose registers and 8 additional XMM registers available to applications.
To access the additional registers, the single byte REX prefix is necessary. Using 8 additional registers can prevent the compiler from needing to spill values onto the stack. The potential increase in code size due to the REX prefix, however, can increase cache misses and this can work against the benefit of using extra registers to access the data (when data comes from the register instead of from memory).
When the 8 additional registers are not needed, refrain from using the registers that require REX prefix. This keeps the code size smaller.

Assembly/Compiler Coding rule
When they are needed to reduce register pressure, use the 8 extra general purpose registers and 8 extra XMM registers for floating-point.

Kakšne so že prednosti AMD64/EM64T poleg adresiranja terabajtov virtualne memorije? Celoštevilsko računanje s ciframi večjimi od miljardo? Kdo pa to rabi razen Srbov, ko so imeli inflacijo? 8 dodatnih registrov, za dostop do katerih moraš narediti prefix, ki podaljša in upočasni kodo? :)
To pravi stric INTEL, katerega kompajlerje vsi hvalijo :D
Največja napaka desetletja je bila narejena 4. novembra 2008
Oni so goljufali in Alah je goljufal, Alah je najboljši prevarant. (Koran 3:54)
Citiraj svetega očeta Benedikta XVI. in postani "persona rudis"...

Brane2 ::

In tu Intel kvasi precejšnje neumnosti, verjetno samo zato ker E64T pe nimajo in ker jih verjetno tudi compiler še ne podpira tako dobro kot IE32.

Štosi, ki jih kažejo, niso nič novega in se v IA32 uporabljajo že od časa 386tk. Kao, uporabljaj čimkrajše ukaze brez prefixov, da bo koda "gostejša".

To je danes bolj teoretična prednost. Ja, prišpara ti par byteov v cacheu in s tem ti daje par milipromilov večjo verjetnost, da bo koda v caheu, ko ji boš rabil in to je vse. S tem bi lahko mogoče strašili folk v času 386-tk, ki so imele parsto byteov cachea, ne pa sedaj, ko je ta parsto Kb in več.

Intel lahko serucka kolikor hoče a več UNIVERZALNIH registrov je definitivno prednost. Tako za compiler kot za končni učinek. To se vidi v praksi in tu ne rabiš teorij.

64-bitna AMD64 tehnologija je dobra za:

- delo z večjimi integerji, kar lahko včasih pomeni, da ne rabiš denimo floata

- delo z večjimi količinami RAMa in swap-a. Na 32 bitih stvari postanejo zelo tesne že veliko pred 4 Gb mejo. Takrat tudi swap izgubi pomen, saj lahko zaseda samo prostor, kjer ni RAM-a. Če RAM zaseda že ves naslovni prostor, kam lahko butneš swap ? Ja, vem, okrog tega se da priti s triki, a to pomeni izgubo časa...

- delo z več procesorji v NUMA okolju, kjer na 32-bitnih modelih zaenkrat še ni pametne alternative, pa tudi ne vem, če bi bila v praksi uporabna. Če ima vsak procesor par Giga RAMa v NUMA-i, lahko skupni RAM zlahka preseže tistih 4 Gb in uide iz dosega enega 32-bitnega CPUja...

- delo z relokatibilno kodo. -fPIC opcija lahko na IA32 kar nekaj upočasni kodo, na AMD64 pa ne in jo imam stalno vklopljeno. Relokatibilna koda pomeni manj težav pri sožitju več medsebojno odvisnih dinamično linkanih programov in je na Linuxu praktično nuja vsaj za libraryje.

-lažje klicanje funkcij z podatki v ragistrih, kar pomeni manj zgubljenega časa za pripravo podatkov. NA IA32 se tudi to da, vendar je stvar boleči kompromis, saj je registrov malo...
On the journey of life, I chose the psycho path.

Brane2 ::

Aja, še to:


To pravi stric INTEL, katerega kompajlerje vsi hvalijo


Ne hvalijo vsi Intlovih compilerjev. Ne bom trdil sam nič določenega, ker sem tu še bolj zelen, a drugi niso enotni, da bi bil Intel dbest.

Ja, za nekatere stvari je hitrejši od gccja, se pa da najti kar nekaj stvari, kjer je počasnejši.

Poleg tega, gcc je naredil v 3.4 seriji kar nekaj napredka in nisem ziher, da bi Intel lahko, sploh pa na AMD64 ohranil tako razliko.

AMD64 je lepši stroj z manj ozkimi grli in je verjetno zato manj odvisen od kakovosti compilerja...
On the journey of life, I chose the psycho path.

Bistri007 ::

Omejitev je 4GB na task (TSS). Vsak task ima svoj CR3 register. Windowsi temu rečejo 'thread' in vsak izmed njih lahko naslavlja 2GB pomnilnika.

Fora PAE je to, da lahko procesor naredi 36-bitno fizično adreso (preko paginga), kar efektivno pomeni, da lahko procesor naslovi 64GB RAMA.
Tako da tisto tvoje glede swapa ni umestno.

AMDjev procesor pač ne more narediti čudežev. Tarejo ga iste težave.
Kaj pa praviš na to, da veliki večini ukazov sploh nimaš 64-bitnih immediatov??? No, saj RISC procesorji vse nalagajo z memorije samo...
64-bitnost pa taka. AMD64 je marketinški trik, ne pa tehnologija.
>:D ;(

64-bit intiger namesto floata. Ja, pa ja. :))
Pa saj P4 ima že zdaj (za računanje) 128-bitne SSE registre. 64-bitni splošnonamenski ukazi so čista neumnost.
Največja napaka desetletja je bila narejena 4. novembra 2008
Oni so goljufali in Alah je goljufal, Alah je najboljši prevarant. (Koran 3:54)
Citiraj svetega očeta Benedikta XVI. in postani "persona rudis"...

Brane2 ::

Shit, napisal sem soliden odgovor, pa ga je server spet požrl z žalitvijo, da bosancev brez osebne ne spusti gor... ;(( ;((

V glavnem, here we go again:


omejitev je 4GB na task (TSS). Vsak task ima svoj CR3 register. Windowsi temu rečejo 'thread' in vsak izmed njih lahko naslavlja 2GB pomnilnika.


Torej je praktična meja veliko nižje od 4 GB ? Kako bi torej s takim stroje delal 4 Gb po threadu ?
KAko bi recimo z njim odprl 8 Gb podatkovno bazo ?


Fora PAE je to, da lahko procesor naredi 36-bitno fizično adreso (preko paginga), kar efektivno pomeni, da lahko procesor naslovi 64GB RAMA.



"Fore" PAE ni. PAE je bil fora leta 1987 v času prvih Spectrumov 128, C-128tk, Amstradov itd.
Videt bi moral, kako je Sir Clive izpeljal preklapljanje ROMov na SPekiju v Interfaceu 1... >:D
Skratka, nič novega. Stvar je vulkanizerska flika. Ni se obnesla kot trajna rešitev takrat in ne bo se obnesla sedaj- iz natanko istih vzrokov. Ko ti address spacea zmanjka, v bistvu ne pomaga nič drugega kot večji address space.

Switchanje pomnilniških bank je vedno slabo, koliko točno pa je odvisno od pohlevnosti aplikacije. Poleg tega, od takratnih strojev nihče ni zahteval 10 hkrati tekočih aplikacij v požrešnem okenskem okolju ob brezhibnem pečenju CDja ali DVDja.

Če bi bilo to tako zabavno tudi MS nikoli ne bi zapustil segmentiranega DOS okolja. Če rabiš več rama, pač rezerviraš več 64K segmentov, right ? Le zakaj niso ostali DOS kompatibilni.... :\
In zakaj hudiča so vsi zapustili Z-80 (ajde v redu, Z-280 recimo da MMU rabimo)?



Tako da tisto tvoje glede swapa ni umestno.


Heh. Pol praviš, da so npr. razvijalci Linux kernela butasti ? Kako bi v tem modelu swapa swapal page na istih virtualnih naslovih dveh (ali bognedaj več) taskov ? Sja bi imela oba pagea isti naslov. Ja, lahko bi jih ločil recimo po PID. A kaj bi naredil v primeru, da sta taska povezana in da preko tega pagea komunicirata ?

Poleg tega, če se grež VM, moraš imeti vedno ažurno in hitro dostopno bazo pageov, možnost hitrega sortiranja in iskanja pageov. Dodatne značke samo komplicirajo stvari. Saj ne rečem da se ne da, samo stane svoj čas...


AMDjev procesor pač ne more narediti čudežev. Tarejo ga iste težave.


AMDjeve težave so veliko nad nivojem glavobolov IA32.


Kaj pa praviš na to, da veliki večini ukazov sploh nimaš 64-bitnih immediatov??? No, saj RISC procesorji vse nalagajo z memorije samo...


KAj pa praviš na to, da sem ta CPU dobil za 60 kSIT sedaj že skoraj eno leto nazaj in da stroj z dvemi takimi CPUji ZELO lepo dela, tudi v Winsih ? Kakšen "pravi" stroj lahko dobiš za ta denar v lokalni štacuni in kaj da od sebe ? Aja, da ne pozabim, v tem denarju je tudi praktično cel Northbridge z DVOKANALNIM ram kontrolerjem in trije HT linki...

Kar se assemblerja tiče, se v to še nisem spuščal a se definitvno mislim.
Vem pa, da je AMD znal narediti megastičen CPU že DOLGO pred tem, ko so naredili prvi klon intlove 386tke.
če so kake omejitve v stroju , so v imenu hitrostnih optimizacij in zagotovo obstaja solidna alternativa.
Je že tako, da v svetu Ghz ne moreš gledat samo na baročne obline in lepoto ampak je kralj učinkovitost.



64-bitnost pa taka. AMD64 je marketinški trik, ne pa tehnologija.
>:D ;(


Ta "marketinški trik" nam dela tako lepo, da ne gremo nazaj na P4.


64-bit intiger namesto floata. Ja, pa ja. :))


Integer ima lahko pred floatom vrsto prednosti:

-ponavadi je več int kot float enot, ker so cenejše
- int operacije imajo manjšo latenco. Float enota ti že lahko dela 1 CPI, vendar za prvi ukaz rabiš kar nekaj taktov, da stvar "zalaufa". Če nimaš steady streama flat operacij ali če moraš čakati na konec operacije, je to lahko problem.

- pogojni ukazi na osnovi floatov so ponavadi nerodni. Obstaja v glavnem samo primerjava večje-manjše. Integerej lahko primerjaš na različne načine. Lahko se greš večje-manjše, lahko primerjaš določen(e) bit(e), lahko se greš logične operacije ali kaj četrtega. 64-bitni integerji so lahko torej dobri tam, kjer rabiš ločljivost, vendar so ti floati prepočasni/pretogi itd.


Pa saj P4 ima že zdaj (za računanje) 128-bitne SSE registre. 64-bitni splošnonamenski ukazi so čista neumnost.


SSE ne more nadomestiti splošnonamenskega registra. Prvič lahko na njih izvajaš omejeno število ukazov in drugič, uporabni so praktično samo za izvajanje vektorskih operacij. Težko bi SSE register racionalno upoprabil kot števec klasične programske zanke, ki bi bi hkrati indeksni register v neko polje, denimo.
On the journey of life, I chose the psycho path.

slemo ::

Mene pa zanima kakšne so razlike med motorolo 68000 in intel 8086.
1
2
»


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

AMD izdal nova Phenoma II (strani: 1 2 )

Oddelek: Novice / Procesorji
548203 (5931) rgv45vg4t335
»

Intel predstavil nove procesorje (strani: 1 2 )

Oddelek: Novice / Procesorji
548026 (5288) Azrael
»

Večina AM2 plošč ne podpira Phenom procesorjev (strani: 1 2 3 )

Oddelek: Novice / Procesorji
13511291 (7481) x45
»

AMD Phenom (strani: 1 2 )

Oddelek: Novice / Procesorji
629303 (5463) Brane2
»

Intel Prescott, Socket T (strani: 1 2 )

Oddelek: Strojna oprema
906206 (4038) Zheegec

Več podobnih tem