Shop OBEX P1 Docs P2 Docs Learn Events
VMCOG: Virtual Memory for ZiCog, Zog & more (VMCOG 0.976: PropCade,TriBlade_2,HYDRA HX512,XEDODRAM) - Page 14 — Parallax Forums

VMCOG: Virtual Memory for ZiCog, Zog & more (VMCOG 0.976: PropCade,TriBlade_2,HYDRA HX512,XEDODRAM)

11011121416

Comments

  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 11:09
    YES!!!!!!!!!!!!!!!!

    It took 517,684 probes, but I finally got a read error!
    Tried 517000 errs=0
    Read Error: expected 6AF8 read 023E count 517684    
    

    Now to change the code to dump the TLB on error and stop running!

    Added: Updated VMDEBUG
  • David BetzDavid Betz Posts: 14,516
    edited 2010-09-06 11:19
    What is the purpose of the first repeat loop? If, after initiating a VMCOG operation, we always wait for the operation to complete there is no need to wait again at the start of the next VMCOG call.
    PUB rdvbyte(adr)
      repeat while long[cmdptr]
      long[cmdptr] := (adr<<9)|READVMB
      repeat while long[cmdptr]
      return long[dataptr]
    
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 12:04
    Paranoia during testing :)

    I've disabled it now in my test version, I wanted to see if it made any real difference.

    Currently I am trying the new 'x' diagnostic to see if I can find the problem. I only have one page in the working set, ensuring that 99% of probes cause a page fault.
    David Betz wrote: »
    What is the purpose of the first repeat loop? If, after initiating a VMCOG operation, we always wait for the operation to complete there is no need to wait again at the start of the next VMCOG call.
    PUB rdvbyte(adr)
      repeat while long[cmdptr]
      long[cmdptr] := (adr<<9)|READVMB
      repeat while long[cmdptr]
      return long[dataptr]
    
  • Heater.Heater. Posts: 21,230
    edited 2010-09-06 12:05
    David,

    No idea but Zog does not have any such first wait loop in it's PASM access routines.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 12:08
    Tried 543000 errs=0
    Tried 544000 errs=0
    Tried 545000 errs=0
    Read Error: expected 358C read 023E count 545796
    TLB Contents:
    
        Acesses L D  Hub  (Raw Data) VM_ADDR
        ------- - - ----- ---------- -------
    35: $11D014 - D $7C00 (8E80A23E) $006A00
    
    Re-Read as $358C 
    

    Very interesting!

    vm.rdvword() returned the wrong result... but the re-read gave the correct one, as the second test puts in the correct value.

    I modified 'x' so that it will only run the second test if there is no error in the first... time to run the test again...

    I am attaching the latest vmdebug

    I am MUCH happier now that I can reproduce the problem as it should now be much easier to find the culprit code.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 14:10
    I improved the test some more, forcing each probe to be on a different random page, with only one page in the working set. Hopefully this will reduce the length of each test run.

    update:

    I now also check the initial fill pattern *before* the random test, to make sure the fill went OK.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 17:30
    I THINK I FOUND THE BUG!

    And yes, it was a dumb "clobbering" of a temporary variable... called "temp", that would only occur in shr_hits!

    I am now testing the fix.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 19:00
    I've added VMCOG v0.985 to the first post in this thread, and I've synced VMDEBUG to v0.985 as well.

    This version passed >1.3M probes of the 'x' test before it was stopped by having to reboot due to the USB mouse crashing, and it also completed fib(26) on zog v0.14 with 20 pages. I will now try a few more page sizes!

    I also integrated the latest TRIBLADE_2 code from heater, and if no one finds any problems in the next two days, this will be renamed as VMCOG v1.00

    UPDATE:

    - fibo(26) worked with 5 pages
    - fibo(26) worked with 3 pages

    heater - can you try 0.985? I am pretty sure the bug is fixed! I am running it now!
  • David BetzDavid Betz Posts: 14,516
    edited 2010-09-06 19:30
    That's great news! Congratulations!

    Have you tried all of the memory drivers? I'm having trouble getting the MORPHEUS1 build of this new version to work with my Hydra SRAM board. But it might just be my editing in the pin differences between your board and mine.

    Have you considered adding my pin definition update to the MORPHEUS1 build to make it easier to switch to different pins?

    Thanks,
    David
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 20:01
    Thanks David!

    No, I just got it going a short while ago on PropCade. Tomorrow I will try MORPHEUS1.

    I'll take a peek at your pin definition update too :)
    David Betz wrote: »
    That's great news! Congratulations!

    Have you tried all of the memory drivers? I'm having trouble getting the MORPHEUS1 build of this new version to work with my Hydra SRAM board. But it might just be my editing in the pin differences between your board and mine.

    Have you considered adding my pin definition update to the MORPHEUS1 build to make it easier to switch to different pins?

    Thanks,
    David
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 20:01
    Ahhhh.... finally!

    This was with a 30 page working set.
    ZOG v1.6 (VM, No SD)
    fibo(0) = 0 (0ms)
    fibo(1) = 1 (0ms)
    fibo(2) = 1 (0ms)
    fibo(3) = 2 (0ms)
    fibo(4) = 3 (1ms)
    fibo(5) = 5 (1ms)
    fibo(6) = 8 (3ms)
    fibo(7) = 13 (5ms)
    fibo(8) = 21 (8ms)
    fibo(9) = 34 (14ms)
    fibo(10) = 55 (22ms)
    fibo(11) = 89 (36ms)
    fibo(12) = 144 (59ms)
    fibo(13) = 233 (96ms)
    fibo(14) = 377 (156ms)
    fibo(15) = 610 (253ms)
    fibo(16) = 987 (410ms)
    fibo(17) = 1597 (663ms)
    fibo(18) = 2584 (1074ms)
    fibo(19) = 4181 (1738ms)
    fibo(20) = 6765 (2812ms)
    fibo(21) = 10946 (4550ms)
    fibo(22) = 17711 (7363ms)
    fibo(23) = 28657 (11914ms)
    fibo(24) = 46368 (19278ms)
    fibo(25) = 75025 (31193ms)
    fibo(26) = 121393 (9511ms)
    
    #pc,opcode,sp,top_of_stack,next_on_stack
    #----------
    
    0X000093E 0X00 0X000017B8 0X000009BA
    BREAKPOINT  
    
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 20:12
    New run - removed an 'and' that I added during debugging that was not necessary:
    ZOG v1.6 (VM, No SD)
    fibo(0) = 0 (0ms)
    fibo(1) = 1 (0ms)
    fibo(2) = 1 (0ms)
    fibo(3) = 2 (0ms)
    fibo(4) = 3 (1ms)
    fibo(5) = 5 (1ms)
    fibo(6) = 8 (3ms)
    fibo(7) = 13 (5ms)
    fibo(8) = 21 (8ms)
    fibo(9) = 34 (13ms)
    fibo(10) = 55 (22ms)
    fibo(11) = 89 (35ms)
    fibo(12) = 144 (57ms)
    fibo(13) = 233 (93ms)
    fibo(14) = 377 (151ms)
    fibo(15) = 610 (245ms)
    fibo(16) = 987 (396ms)
    fibo(17) = 1597 (642ms)
    fibo(18) = 2584 (1039ms)
    fibo(19) = 4181 (1681ms)
    fibo(20) = 6765 (2720ms)
    fibo(21) = 10946 (4402ms)
    fibo(22) = 17711 (7123ms)
    fibo(23) = 28657 (11525ms)
    fibo(24) = 46368 (18648ms)
    fibo(25) = 75025 (30174ms)
    fibo(26) = 121393 (7863ms)
    
    #pc,opcode,sp,top_of_stack,next_on_stack
    #----------
    
    0X000093E 0X00 0X000017B8 0X000009BA
    BREAKPOINT                           
    
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 20:20
    Found another minor optimization for RDVMBYTE
    ZOG v1.6 (VM, No SD)
    fibo(0) = 0 (0ms)
    fibo(1) = 1 (0ms)
    fibo(2) = 1 (0ms)
    fibo(3) = 2 (0ms)
    fibo(4) = 3 (1ms)
    fibo(5) = 5 (1ms)
    fibo(6) = 8 (2ms)
    fibo(7) = 13 (4ms)
    fibo(8) = 21 (7ms)
    fibo(9) = 34 (12ms)
    fibo(10) = 55 (20ms)
    fibo(11) = 89 (33ms)
    fibo(12) = 144 (54ms)
    fibo(13) = 233 (88ms)
    fibo(14) = 377 (143ms)
    fibo(15) = 610 (231ms)
    fibo(16) = 987 (374ms)
    fibo(17) = 1597 (606ms)
    fibo(18) = 2584 (981ms)
    fibo(19) = 4181 (1588ms)
    fibo(20) = 6765 (2570ms)
    fibo(21) = 10946 (4159ms)
    fibo(22) = 17711 (6729ms)
    fibo(23) = 28657 (10888ms)
    fibo(24) = 46368 (17618ms)
    fibo(25) = 75025 (28507ms)
    fibo(26) = 121393 (5165ms)
    
    #pc,opcode,sp,top_of_stack,next_on_stack
    #----------
    
    0X000093E 0X00 0X000017B8 0X000009BA
    BREAKPOINT                             
    
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 20:28
    One more quick optimization found in the write common subroutine:
    ZOG 1.6 (VM, No SD)
    fibo(0) = 0 (0ms)
    fibo(1) = 1 (0ms)
    fibo(2) = 1 (0ms)
    fibo(3) = 2 (0ms)
    fibo(4) = 3 (1ms)
    fibo(5) = 5 (1ms)
    fibo(6) = 8 (2ms)
    fibo(7) = 13 (4ms)
    fibo(8) = 21 (7ms)
    fibo(9) = 34 (12ms)
    fibo(10) = 55 (20ms)
    fibo(11) = 89 (33ms)
    fibo(12) = 144 (54ms)
    fibo(13) = 233 (88ms)
    fibo(14) = 377 (143ms)
    fibo(15) = 610 (231ms)
    fibo(16) = 987 (374ms)
    fibo(17) = 1597 (606ms)
    fibo(18) = 2584 (981ms)
    fibo(19) = 4181 (1588ms)
    fibo(20) = 6765 (2570ms)
    fibo(21) = 10946 (4159ms)
    fibo(22) = 17711 (6729ms)
    fibo(23) = 28657 (10888ms)
    fibo(24) = 46368 (17618ms)
    fibo(25) = 75025 (28507ms)
    fibo(26) = 121393 (5165ms)
    
    #pc,opcode,sp,top_of_stack,next_on_stack
    #----------
    
    0X000093E 0X00 0X000017B8 0X000009BA
    BREAKPOINT    
    
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 20:33
    Interesting - performance with a 20 page working set was identical to a 30 page working set!
  • jazzedjazzed Posts: 11,803
    edited 2010-09-06 20:40
    Congratulations!
    Found another minor optimization for RDVMBYTE
    ZOG v1.6 (VM, No SD)
    fibo(0) = 0 (0ms)
    fibo(1) = 1 (0ms)
    fibo(2) = 1 (0ms)
    fibo(3) = 2 (0ms)
    fibo(4) = 3 (1ms)
    fibo(5) = 5 (1ms)
    fibo(6) = 8 (2ms)
    fibo(7) = 13 (4ms)
    fibo(8) = 21 (7ms)
    fibo(9) = 34 (12ms)
    fibo(10) = 55 (20ms)
    fibo(11) = 89 (33ms)
    fibo(12) = 144 (54ms)
    fibo(13) = 233 (88ms)
    fibo(14) = 377 (143ms)
    fibo(15) = 610 (231ms)
    fibo(16) = 987 (374ms)
    fibo(17) = 1597 (606ms)
    fibo(18) = 2584 (981ms)
    fibo(19) = 4181 (1588ms)
    fibo(20) = 6765 (2570ms)
    fibo(21) = 10946 (4159ms)
    fibo(22) = 17711 (6729ms)
    fibo(23) = 28657 (10888ms)
    fibo(24) = 46368 (17618ms)
    fibo(25) = 75025 (28507ms)
    fibo(26) = 121393 (5165ms)
    
    #pc,opcode,sp,top_of_stack,next_on_stack
    #----------
    
    0X000093E 0X00 0X000017B8 0X000009BA
    BREAKPOINT                             
    
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 20:46
    Thank you!

    I can see a few more optimizations if I use more cog memory...
    jazzed wrote: »
    Congratulations!
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 20:54
    Looks like only 6KB of VM are being used - so it should not be surprising that the 12 page working set result is the same as for a 30 page working set.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-06 21:18
    I had to back out of one optimization as it busted paging... however I found an even better one.

    Would you believe it runs in the same time in 6 pages?

    UPDATE:

    Here is the run with a *THREE* page working set:
    ZOG v1.6 (VM, No SD)
    fibo(0) = 0 (4ms)
    fibo(1) = 1 (4ms)
    fibo(2) = 1 (13ms)
    fibo(3) = 2 (21ms)
    fibo(4) = 3 (39ms)
    fibo(5) = 5 (65ms)
    fibo(6) = 8 (87ms)
    fibo(7) = 13 (72ms)
    fibo(8) = 21 (113ms)
    fibo(9) = 34 (132ms)
    fibo(10) = 55 (59ms)
    fibo(11) = 89 (34ms)
    fibo(12) = 144 (55ms)
    fibo(13) = 233 (89ms)
    fibo(14) = 377 (143ms)
    fibo(15) = 610 (232ms)
    fibo(16) = 987 (375ms)
    fibo(17) = 1597 (607ms)
    fibo(18) = 2584 (982ms)
    fibo(19) = 4181 (1589ms)
    fibo(20) = 6765 (2571ms)
    fibo(21) = 10946 (4159ms)
    fibo(22) = 17711 (6730ms)
    fibo(23) = 28657 (10889ms)
    fibo(24) = 46368 (17619ms)
    fibo(25) = 75025 (28508ms)
    fibo(26) = 121393 (5166ms)
    
    #pc,opcode,sp,top_of_stack,next_on_stack
    #----------
    
    0X000093E 0X00 0X000017B8 0X000009BA
    BREAKPOINT
    

    SAME AS WITH 12-30 PAGES FOR THE LARGER FIBO RUNS!
  • Heater.Heater. Posts: 21,230
    edited 2010-09-07 00:15
    Bill,

    Clobbering "temp" you say. One of the oldest classes of bugs in the book "Over aggressively recycling variables". Us "many eyeballs" out here should have been all over that from the beginning in the face of random looking failures. Shame on us.

    Any way, well done, excellent piece of detective work.

    Fibo is also working for me with v0.985. I have tried 20 pages and then 6,5,4,3,2 and 1 pages. It does not slow down until 2 pages!

    Still, this fibo is only a 3K binary of which I know 1K is not used so this is not a surprising result.

    It seems to run fine in 1 page, it's like watching an old teletype, hasn't finished yet.

    That "minor" optimization for RDVMBYTE is actually quite dramatic. From your results:

    before:

    fibo(18) = 2584 (1039ms

    after:

    fibo(18) = 2584 (981ms)

    That's 5.9 or 5.5 percent depending how you look at it.
  • Heater.Heater. Posts: 21,230
    edited 2010-09-07 00:33
    Bill,
    A couple of minor points:

    1) Out of the box vmdebug does not compile when building for TriBlade as some test use vmcog methods that don't exist in that case.

    2) Are you meaning to do away with those first wait loops in the Spin access methods?

    My 1 page fibo run is still running....
  • David BetzDavid Betz Posts: 14,516
    edited 2010-09-07 06:09
    Why is the store through cmdptr done with word[cmdptr] instead of long[cmdptr]. Doesn't this mean that only the low order bits of the $FFFF0000 constant will be stored and hence the repeat loop at the end of my excerpt will never wait even if the initialization of the PASM COG is not complete?
      long[vaddrptr] := lastp-((nump-1)*512) ' singe byte read/writes are the default
      long[dataptr]  := nump        ' singe byte read/writes are the default
      word[cmdptr]   := $FFFF0000
    
    #ifdef XEDODRAM
      longfill(@xmailbox,0,2)       ' ensure command starts as 0
      long[mailbox+12]:= @xmailbox  ' 3rd vmcog mailbox word used for xm interface
      xm.start(@xmailbox)           ' start up inter-cog xmem
    #endif
    
      cognew(@vmcog,mailbox)
    
      fcmdptr  := @fakebox
      fdataptr := fcmdptr+4
      repeat while long[cmdptr]     ' should fix startup bug heater found - it was the delay to load/init the cog
    
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-07 09:36
    Hi heater,

    Thanks. This was VERY hard to find, I had to write the really nasty VM exerciser command 'x' and run it repeatedly before I found a pattern that narrowed the search down enough to find the problem. No shame for anyone, these bugs happen :)

    VMCOG performance is good, as you noted - running fibo at close to 100% speed with a working set only 1/6th the fibo memory footprint!

    Ok, >5% is more than a minor speedup on something like this :)
    Heater. wrote: »
    Bill,

    Clobbering "temp" you say. One of the oldest classes of bugs in the book "Over aggressively recycling variables". Us "many eyeballs" out here should have been all over that from the beginning in the face of random looking failures. Shame on us.

    Any way, well done, excellent piece of detective work.

    Fibo is also working for me with v0.985. I have tried 20 pages and then 6,5,4,3,2 and 1 pages. It does not slow down until 2 pages!

    Still, this fibo is only a 3K binary of which I know 1K is not used so this is not a surprising result.

    It seems to run fine in 1 page, it's like watching an old teletype, hasn't finished yet.

    That "minor" optimization for RDVMBYTE is actually quite dramatic. From your results:

    before:

    fibo(18) = 2584 (1039ms

    after:

    fibo(18) = 2584 (981ms)

    That's 5.9 or 5.5 percent depending how you look at it.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-07 09:39
    re/1

    I have some minor cleanup to do before releasing the magic v1.00 ... as you may have noticed, I use
    VMCOG/VMDEBUG as a generic test platform for all sorts of memory and SPI goodies.

    re/2

    I am considering dumping them. I initially had two sets due to paranoia, and intended to try to remove them around the v1.00 mark :)

    re/1 page fibo

    Is it done yet?
    Heater. wrote: »
    Bill,
    A couple of minor points:

    1) Out of the box vmdebug does not compile when building for TriBlade as some test use vmcog methods that don't exist in that case.

    2) Are you meaning to do away with those first wait loops in the Spin access methods?

    My 1 page fibo run is still running....
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-07 09:39
    David,

    Thanks for spotting a bug! Fixing...
    David Betz wrote: »
    Why is the store through cmdptr done with word[cmdptr] instead of long[cmdptr]. Doesn't this mean that only the low order bits of the $FFFF0000 constant will be stored and hence the repeat loop at the end of my excerpt will never wait even if the initialization of the PASM COG is not complete?
      long[vaddrptr] := lastp-((nump-1)*512) ' singe byte read/writes are the default
      long[dataptr]  := nump        ' singe byte read/writes are the default
      word[cmdptr]   := $FFFF0000
    
    #ifdef XEDODRAM
      longfill(@xmailbox,0,2)       ' ensure command starts as 0
      long[mailbox+12]:= @xmailbox  ' 3rd vmcog mailbox word used for xm interface
      xm.start(@xmailbox)           ' start up inter-cog xmem
    #endif
    
      cognew(@vmcog,mailbox)
    
      fcmdptr  := @fakebox
      fdataptr := fcmdptr+4
      repeat while long[cmdptr]     ' should fix startup bug heater found - it was the delay to load/init the cog
    
  • Heater.Heater. Posts: 21,230
    edited 2010-09-07 10:50
    Bill,
    VMCOG performance is good, as you noted - running fibo at close to 100% speed with a working set only 1/6th the fibo memory footprint!

    I've been thinking about this:

    1) The fibo test only times the execution of the actual fibo call in question, all the extraneous looping and printing is excluded.

    2) The actual fibo routine is small, it has a good chance of fitting within a page if it happens to be in the right position.

    3) The fibo routine uses no data, it's all done on the stack. Apart from the fact that, for some strange reason, results are returned through a pseudo register at address zero.

    So the stuff that we are timing here only needs 3 pages, one for code, one for stack and one for the pseudo register.

    As we see it runs the same speed in 3 pages as 20.

    My measurements on fibo therefore show that the overhead of VMCog when everything is in the working set is 150%. For example:

    fibo(18):

    423ms from HUB
    1074ms from VMCog

    What a sensible benchmark for this is I have no idea. Something with more code and data scattered throughout memory.

    Still in this modern world of processors being much faster than their memory and therefore sprouting huge caches they do say the best optimizations you can do are to arrange for your code and data to stay in cache as much as possible.

    For example, scanning through a two dimensional array can be much faster if you do it in the correct row/column order.
    Is it done yet?

    Ha, no, it may never be.

    Don't worry, it runs fine but, despite the fact this entire building has been rewired over the summer, every time the fridge in this apartment goes on/off it resets my TriBlade. The fridge does not give time for one page fibo to complete.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-07 11:05
    heater,

    By "close to 100% speed" I was referring to basically same speed for 3 or 20 page working set, not comparing to hub-only

    I agree with your analysis, fibo really only seems to need 3 pages, due to "locality of reference" - which is why VM worked on mainframes, and works on PC's, as most of the time, most of the code/data of a program really does not need to be in the working set - and as you point out, it can help a lot to organize data/code in a VM friendly manner.

    I am actually very pleased that VMCOG seems to run at 2/5th the speed of hub-only interpreters!

    I think we need a bunch of benchmarks beside fibo() - the old byte benchmark set comes to mind, I think it included dhrystone and whetstone, which as I recall you have already run.

    I am beginning to think if an LCC re-targeted for ZOG might not be small enough to run under ZOG/VMCOG once I get large VM support going... it would be slow, but it would be so nice to compile C code right on a Prop!

    Re/ 1 page working set - I ran my 'x' test for >1.3M probes before I stopped it, which caused >1.3M page faults...
    Heater. wrote: »
    Bill,

    I've been thinking about this:

    1) The fibo test only times the execution of the actual fibo call in question, all the extraneous looping and printing is excluded.

    2) The actual fibo routine is small, it has a good chance of fitting within a page if it happens to be in the right position.

    3) The fibo routine uses no data, it's all done on the stack. Apart from the fact that, for some strange reason, results are returned through a pseudo register at address zero.

    So the stuff that we are timing here only needs 3 pages, one for code, one for stack and one for the pseudo register.

    As we see it runs the same speed in 3 pages as 20.

    My measurements on fibo therefore show that the overhead of VMCog when everything is in the working set is 150%. For example:

    fibo(18):

    423ms from HUB
    1074ms from VMCog

    What a sensible benchmark for this is I have no idea. Something with more code and data scattered throughout memory.

    Still in this modern world of processors being much faster than their memory and therefore sprouting huge caches they do say the best optimizations you can do are to arrange for your code and data to stay in cache as much as possible.

    For example, scanning through a two dimensional array can be much faster if you do it in the correct row/column order.



    Ha, no, it may never be.

    Don't worry, it runs fine but, despite the fact this entire building has been rewired over the summer, every time the fridge in this apartment goes on/off it resets my TriBlade. The fridge does not give time for one page fibo to complete.
  • Heater.Heater. Posts: 21,230
    edited 2010-09-07 11:26
    By "close to 100% speed" I was referring to basically same speed for 3 or 20 page working set, not comparing to hub-only

    Yeah, it occurred to me that's what you meant right after I posted.

    Don't get me wrong, I think VMCog is doing fine.
    I think we need a bunch of benchmarks beside fibo() - the old byte benchmark set comes to mind, I think it included dhrystone and whetstone, which as I recall you have already run.

    Yep, I'm on it already. Whetstone is a disaster at the moment because it uses software floating point which is huge and slow. I want to provide a floating point support COG using float32. Not much time to play just now.
    I am beginning to think if an LCC re-targeted for ZOG might not be small enough to run under ZOG/VMCOG

    Now who do we know who has the know how to do that?

    It would be great. Actually I was worrying about this recently. Currently C under Zog is totally dependent on the GCC target by ZyLin Inc. That is already based off an old version of GCC. I don't get the impression that ZyLin has the incentive to keep it up to date. Already I can't build the compiler under Ubuntu. Slowly it might rot away.
  • jazzedjazzed Posts: 11,803
    edited 2010-09-07 12:08
    Bill, I plan to port the SDRAM driver to VMCOG. If you can make room,I can put in the fast burst code rather than the slower loop code. Have a look at the last SdramCache.spin file I posted to understand the challenges. If it makes sense performance wise and VMCOG can be expanded to larger backstore memory support, I can drop the cache interface entirely. Consider it a casual challenge :)

    --Steve
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-09-07 12:12
    No worries... VMCog is performing pretty much as I was hoping it would - being able to run large pieces of code with a roughly 2.5x slow down versus not being able to run them at all... BIG WIN.

    Dhrystone is a good start :)

    re/LCC ... Paging BradC....

    btw,

    VMCOG will SCREAM on PropII (when that arrives).

    8x faster pasm, 16x faster hub (compared to p1) without even considering multi-long read/writes...

    I would not be at all surprised if ZOG/VMCOG hit 10MIPS+
    Heater. wrote: »
    Yeah, it occurred to me that's what you meant right after I posted.

    Don't get me wrong, I think VMCog is doing fine.

    Yep, I'm on it already. Whetstone is a disaster at the moment because it uses software floating point which is huge and slow. I want to provide a floating point support COG using float32. Not much time to play just now.

    Now who do we know who has the know how to do that?

    It would be great. Actually I was worrying about this recently. Currently C under Zog is totally dependent on the GCC target by ZyLin Inc. That is already based off an old version of GCC. I don't get the impression that ZyLin has the incentive to keep it up to date. Already I can't build the compiler under Ubuntu. Slowly it might rot away.
Sign In or Register to comment.