Slashdot Mirror


The Fundamentals Of Cache

Dave wrote to us with an article currently running on SystemLogic that delves into caching, with specific examples taken from the Athlon and PIII processors. It also talks about the different types of cache - fairly technical, but an all around good read.

2 of 60 comments (clear)

  1. Asmheads can check check cache effects easily by mav[LAG] · · Score: 4

    fast:
    mov dx,12
    l1:
    mov cx,32768
    l2:
    mov ax,[0]
    mov ax,[0]
    mov ax,[0]
    dec cx
    jnz l2
    dec dx
    jnz l1

    slow:
    mov dx,12
    l3:
    mov cx,32768
    l4:
    mov ax,[4095]
    mov ax,[8191]
    mov ax,[12287]
    dec cx
    jnz l4
    dec dx
    jnz l3

    Nearly identical loops, except the first one flies and the second one thrashes because it misses the cache 100% of the time. Can you say 10-50 times slower?

    --
    --- Hot Shot City is particularly good.
  2. Efficient use of a cache - App writers fault. by fatphil · · Score: 4

    Unhappy with the performance of someone elses memory hungry code (50-100MB working RAM footprimt) I wrote my own version of the utility. It was only marginally faster than the original. However, I increased the performance by a factor of 10 when I realied that I could cache up jobs to do, then in turn perform those jobs on each 4MB chunk of data (Dec Alpha with 4MB L3 cache). I managed to increase performance even further by aiming the code at the L2 cache instead! The total number of bytes read/written was identical, but simply changing the order in whihc they were done increated performance 12-15 times.

    However, as soon as you do take into account caching issues, you sometimes start making non-portable decisions. (not always though, as generally most architectures have the problem but the lines are simply drawn in different places).

    FatPhil

    --
    Also FatPhil on SoylentNews, id 863