Page 3 of 3

Re: Lies, Damned Lies and Benchmarks.

Posted: 04 May 2022, 02:45
by bmwtcu
Nice! Where do I read about Mode 1975?

Re: Lies, Damned Lies and Benchmarks.

Posted: 04 May 2022, 04:17
by at67
bmwtcu wrote: 04 May 2022, 02:45 Nice! Where do I read about Mode 1975?
Search for 1975 in https://github.com/kervinck/gigatron-ro ... ctions.txt

And:

Line 3149: https://github.com/kervinck/gigatron-ro ... dev.asm.py

Code: Select all

xora((1975>>8)^(1975&255))      #26 Poor man\'s 1975 detection
bne(pc()+3)                     #27
bra(pc()+3)                     #28
assert videoZ == 0x0100
st([vReturn])                   #29 DISABLE video/audio/serial/etc
The code detects 1975 as the parameter to sys_SetMode and sets [vReturn] to 0; this effectively switches the bit-banger to no video, no audio, no input, etc: which allows for 521 scanlines x 200 cycles worth of uninterrupted vCPU interpretation per video frame. (which is about double the number of available vCPU cycles compared to mode3, the single scanline mode).

P.S. There are no sync signals in this mode, so your monitor loses sync until you pass -1 back to sys_SetMode.

Re: Lies, Damned Lies and Benchmarks.

Posted: 04 May 2022, 04:40
by veekoo
Like in the OpenGL programming. You first calculate graphics in a frame and only after that you draw the frame.

Re: Lies, Damned Lies and Benchmarks.

Posted: 06 May 2022, 04:49
by veekoo
This 1975 mode could make Mandelbrot faster. New Mandelbrot draws in 1min 17sek in fast screen mode.

Re: Lies, Damned Lies and Benchmarks.

Posted: 27 Oct 2022, 07:34
by veekoo
I tested sieve 0, 1 and 2 C-programs in two screen modes. First was the videotop_v5 mode and second was zombie mode. I timed it with separate clock.
It might take time monitor to get picture after zombie mode.

sieve0 22,26sec 18,55sec
sieve1 21,22sec 17,07sec
sieve2 16,12sec 13,62sec

reference time with Z80 was 14,0sec.

Re: Lies, Damned Lies and Benchmarks.

Posted: 27 Oct 2022, 09:26
by lb3361
veekoo wrote: 27 Oct 2022, 07:34.
It might take time monitor to get picture after zombie mode.
You can instead watch the blinkenlights. When you see the pattern restart, you know that the machine has just exited zombie mode.

Re: Lies, Damned Lies and Benchmarks.

Posted: 27 Oct 2022, 09:37
by veekoo
Good point. Watching the leds I counted:
sieve0 22,26sec 16,05sec -> 1,146 ratio
sieve1 21,22sec 14,55sec -> 1,039 ratio
sieve2 16,12sec 11,13sec -> 0,795 ratio

Re: Lies, Damned Lies and Benchmarks.

Posted: 28 Oct 2022, 03:16
by lb3361
The latest version of GLCC (my repo) has the standard function clock() that makes it far easier to time the code.

In fact there are several functions. The standard function clock(void) defined in <time.h> returns a clock_t which is a long. The returned value has 24 bits which wraps around after about three days. To avoid the overhead of long ints, one can use instead the function _clock(void) defined in <gigatron/libc.h> which returns an unsigned integer but wraps around after about 20 minutes. There is also a function _wait(n) that waits for n frames and returns a bit before the beginning of the vertical blank.

Anyway, timing sieve looks like:

Code: Select all

    unsigned int ticks = _clock();
    // ...compute...
    ticks = _clock() - ticks;
    printf("\n%d %d/60 seconds", ticks/60, ticks % 60);
Of course none of this works in Zombie mode.