Page 2 of 2 FirstFirst 1 2
Results 16 to 18 of 18

Thread: Trage thread

  1. #16
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    http://www.hardwaresecrets.com/article/434/4

    Penryn+ 4 bits/cycle en ouder 2bits per cycle. Denk eraan dat doubles in 80 bit worden uitgerekend. Dus dat is nog altijd 20 cycli (ter vergelijking een mul is deels pipelinable en in de orde grootte van 1 cyclusvoor simpele getallen. Een add ook, maar kan meerdere in paralel doen), al zijn er een paar early outs .

    Verder heeft een Core2 IIRC 4 integer en maar 2 copro units. (waarvan er een alleen maar simpleops kan doen).

    Daarnaast komt er nog de ellende overheen die een hogere taal als Delphi toevoegd, een fwait om coprocessor excepties correct af te handelen, en veel Pascal FPU commando's komen niet direct overeen met hun assembler equivalenten (ook al geloven veel mensen dat), hetzij vanwege speciale rounding modes of vanwege het feit dat de assembler varianten maar een beperkt domein gebruiken.

    Als je je geheugen linear processed, moet je redelijk veel ops doen voor je een cache stal krijgt. En dan heb ik nog niet eens over prefetch (al doet delphi dat niet)

    Maar (dynamisch) memory management is veel duurder dan FPU ja. calloc en malloc hebben verder geen vaste inhoud, dus zo'n observatie waardeloos. Heapmanagement hangt heel sterk af van de eisen, de snelste is gewoon nooit geheugen vrijgeven. En nogal wiedes dat dat dan sneller is, dan is een malloc equivalent aan:

    pascal Code:
    1. function malloc(size:ptuint):pointer; inline;
    2. begin
    3.  result:=baseptr;
    4.  inc(baseptr,size); // evt ((size and not 16 )+ 16) voor alignment.
    5. end;

    Wat bij elkaar ook twee integer instructies of zo is (zonder stal, want aliasbaar). Maar ja, dan kan je het niet vrijgeven. Maar goed, als je alleen een kort lopend programma hebt, zoals b.v. een database export transformeren, waarom niet?

  2. #17
    Als je je geheugen linear processed, moet je redelijk veel ops doen voor je een cache stal krijgt
    Yep.. nadat de meeste PC's 512MB intern kregen, heb ik er niet zoveel meer van gemerkt, disk cache. Heap managament moet gewoon rond zitten per cycle (op 0 of 32 bytes ), dan loopt het. Zelfs met 360 meridianen met 12000 punten per meridiaan.. rotatie-geometrie is het werk hier (CNC-code) dat is een hoop gereken, maar de tijdbepalende factor blijft 1) netwerk I/O en 2) double->ascii en vice versa.

    De oude heap management functies zoals malloc waren niet zo ingewikkeld inderdaad. Ik denk dat er nu slimmere algoritmen zijn, die fragmentatie voorkomen.


    Lx
    Minstens ?®?®n hobby naast programmeerwerk is echt noodzakelijk

  3. #18
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Als ik mijn integer berekeningen naar FPU (single) omzet is de performance vele malen slechter. Echter door slim te berekenen (eerst met relatief goedkope heuristiek te bepalen wat belangrijk is), is FPU niet zo'n probleem. De meest voorkomende dingen naar integer of fixed point omzetten, en alleen de delen die mogelijk kritisch zijn qua precisie in FPU.

    De enige twee die wel een probleem waren (een preproces actie op de hele input,100 mbyte/s), waren gelukkig algorithmisch zo simpel dat ik ze omgezet heb naar fixed point SSE2, de enige assembler in mijn applicatie van mijn hand. (ik gebruik wel wat fastcode routines), hetgeen een factor 4-5 opleverde.

    Heap management is meestal veel duurder dan dat, tenzij je dus speciale allocators gebruikt (die meestal niet voor lang draaien bedoeld zijn). Echter door wat pooling, en gecontroleerde groei in grote blokken is dat eenvoudig in de hand te houden.
    Last edited by marcov; 20-Mar-09 at 19:20.

Page 2 of 2 FirstFirst 1 2

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •