(The next milestone will be when you hardware guru guys achieve to use both the internal and the new CPU for a multi-CPU Falcon
Can all registered uses please login, even just for a few minutes..
It helps build a picture where our "good traffic" is coming from..
Thanks :)
It helps build a picture where our "good traffic" is coming from..
Thanks :)
DFB1r4 design discussion thread
-
MegaSTEarian
- Posts: 82
- Joined: Wed Aug 19, 2020 12:56 pm
Re: DFB1r4 design discussion thread
Looks very good
(The next milestone will be when you hardware guru guys achieve to use both the internal and the new CPU for a multi-CPU Falcon
)
(The next milestone will be when you hardware guru guys achieve to use both the internal and the new CPU for a multi-CPU Falcon
Re: DFB1r4 design discussion thread
Yeah, two reasons for that. I gated RAM access to CPUCLK, and I can't remember why. If it was when I was trying to get the DSP to work, it's probably redundant now. Secondly I removed my speed switching hold off* code when debugging the FPU. Now that I've got my independent DSACKx lines, I may not need that either.
So could be one easy optimisation coming up!
BW
* What's my speed switching hold off?
Well, switching from high speed to low speed clock takes up to one full slow cycle to complete, thus incurring an average half-slow-cycle delay on every access to the motherboard. I could perhaps come up with a better clock switching algorithm, but this one seems infeasibly reliable.
However this does cause a ~10% RAM access reduction on average (it's mitigated by the faster processing outside of this).
I postulated that access to the motherboard is fairly often done in longword chunks (not least cache filling during reads), which are two, tightly-packed, bus accesses. If I switch up to full speed immediately on the end of the first cycle, I'll incur a substantial delay in switching down for the second word.
So I normally hold off switching from slow back to fast until XDTACK has been deasserted for two consecutive (slow) cycles. This gives a decent average performance boost to motherboard accesses, but complicates access to AltRAM.
I was concerned it may also affect FPU accesses, so I disabled it.
DFB1 Open source 50MHz 030 and TT-RAM accelerator for the Falcon
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Re: DFB1r4 design discussion thread
There's loads of work that could be done with the firmware. Plenty of optimisations (I've aimed for reliable over fast where there's been a choice) and extra features could be added.JezC wrote: Mon Dec 06, 2021 8:24 am Any more plans for future developments beyond a spin of the PCB?
One example I've just mentioned above -- the mobo access speed is below optimal -- but there's also one wasted cycle in the AltRAM access that a better verilog developer could prune away. The CPLD also has an 8 bit data bus attached that could be used for software-driven options or a speed counter, etc.
But none of these is in the base base spec, so I'm hoping to get a stable next spin and open source the lot of it.
With luck, we'll see forks with all sorts of fancy firmware features.
BW
DFB1 Open source 50MHz 030 and TT-RAM accelerator for the Falcon
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Re: DFB1r4 design discussion thread
ah yeah. Switching from two unrelated clocks can take a couple of cycles complete glitch freeBadwolf wrote: Mon Dec 06, 2021 2:35 pm Well, switching from high speed to low speed clock takes up to one full slow cycle to complete, thus incurring an average half-slow-cycle delay on every access to the motherboard. I could perhaps come up with a better clock switching algorithm, but this one seems infeasibly reliable.
Then when I went to the SEC booster series, I just ran the CPU at full speed all the time. Given the same clock speeds as my V2.X series boosters, running the CPU constantly fast will still increase overall speed which I was a little bit surprised about.
I think it was the PAK boards which also had something like a 90% or 95% ST-RAM speed access. I think it was only the terrible fire series of boards is actually a proper RAM speed access. But I've not looked into this for a long time so memory is a bit fuzzy
Re: DFB1r4 design discussion thread
I did try this extensively. I could get an *almost* reliable system but certain things didn't play nicely. Bus Arb became very hard. Palette switching in games seemed off. It was, on average, faster though.Then when I went to the SEC booster series, I just ran the CPU at full speed all the time. Given the same clock speeds as my V2.X series boosters, running the CPU constantly fast will still increase overall speed which I was a little bit surprised about.
This technique appeals to what little OCD I ever exhibit. It's the way it *should* work and it irks me it doesn't work as well as the bad-bad-naughty way. BUT: reliability first, so I'm OK with my method.
My suspicion is the 90-95% figures are a little bit of an artefact of the way the tests are done, but I might get the stopwatch out on my Frontier Benchmark (my approximation of a general workload) and try a head to head comparison.I think it was the PAK boards which also had something like a 90% or 95% ST-RAM speed access. I think it was only the terrible fire series of boards is actually a proper RAM speed access. But I've not looked into this for a long time so memory is a bit fuzzy![]()
![]()
BW
DFB1 Open source 50MHz 030 and TT-RAM accelerator for the Falcon
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Re: DFB1r4 design discussion thread
OK, so because @exxos keeps needling me about syncing motherboard accesses to clock edges (because he's a big meanie and doesn't like 90% RAM access speeds), this week I've mostly been looking to find a way to keep it all stable whilst letting XAS fall the moment the CPU's ready.
The current status that looks pretty promising:-
Here are the current figures:
Firstly, with regular TOS404 in motherboard ROM:-
Secondly with regular TOS404 in flash ROM:-
And lastly with MAPROM employed to map TOS404 into AltRAM:-
Tests performed and passed so far include:
For reference, here's where I was on Monday:-

(Ignore the headline figure -- the FPU has been reduced to 25MHz to let me fully close the case [the 40MHz oscillator is a bodge and is a bit too tall], so that figure's dragging the headline down, but it's intentional -- look at the individual measurements du choix)
BW
The current status that looks pretty promising:-
- only perform the DSP-enabling UDS/LDS hold-on when actually accessing the DSP;
- don't allow the clock to return to full speed until two full (slow) neg edges post a motherboard access.
Here are the current figures:
Firstly, with regular TOS404 in motherboard ROM:-
Secondly with regular TOS404 in flash ROM:-
And lastly with MAPROM employed to map TOS404 into AltRAM:-
Tests performed and passed so far include:
- GB6 full run
- BadMood first level playthough
- MiNT + networking + ssh + lines.app + Doom in truecolour mode.
For reference, here's where I was on Monday:-
(Ignore the headline figure -- the FPU has been reduced to 25MHz to let me fully close the case [the 40MHz oscillator is a bodge and is a bit too tall], so that figure's dragging the headline down, but it's intentional -- look at the individual measurements du choix)
BW
DFB1 Open source 50MHz 030 and TT-RAM accelerator for the Falcon
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Re: DFB1r4 design discussion thread
Badwolf wrote: Fri Dec 10, 2021 1:56 pm OK, so because @exxos keeps needling me about syncing motherboard accesses to clock edges (because he's a big meanie and doesn't like 90% RAM access speeds), this week I've mostly been looking to find a way to keep it all stable whilst letting XAS fall the moment the CPU's ready.
Yeah now you're too fast
Great work nonetheless!

Re: DFB1r4 design discussion thread
@Bestwolf
Re: DFB1r4 design discussion thread
Cheers, guys.
So I had quake (fpu variant) running under MiNT with a background telnetd connection on the go monitoring the process. It ran for an hour at 50/25 (CPU/FPU MHz) before freezing.
I postulated this was cooking off as I don't have a decent heatsink on my 030 yet. So I reduced the clock to 40/20 and tried again.
This ran happily for two hours before quake itself crashed (telnetd was happily running underneath so I could still use the machine, albeit the screen had frozen). This suggests the first problem was very likely thermal.
So I'm going to call that good enough for this phase of optimisation. No-one's really going to try to run Quake on an 030 (about 2 seconds per frame, if you're interested!) whilst also running background tasks and thermal management is left as an exercise for the reader.
I'm going to move on to building in the bodges to date to a rev5 board, consider building up a second one of these with bodges in from the start to prove it's not a one off and maybe (maybe!) look at squeezing another cycle of the SDRAM if I'm waiting for boards.
I've pretty much got what I wanted to build now.
There are some odd questions that I'd like to investigate in case they show up issues with my board. One is why is EmuTOS not stable under MiNT when AltRAM is enabled, but TOS is? I postulated HD driver differences, so I tried to hack EmuTOS to bootstrap HDDriver like TOS after some tips from Christian but didn't get very far. I have another idea or two there, though.
Anyway. Very pleased.
BW
So I had quake (fpu variant) running under MiNT with a background telnetd connection on the go monitoring the process. It ran for an hour at 50/25 (CPU/FPU MHz) before freezing.
I postulated this was cooking off as I don't have a decent heatsink on my 030 yet. So I reduced the clock to 40/20 and tried again.
This ran happily for two hours before quake itself crashed (telnetd was happily running underneath so I could still use the machine, albeit the screen had frozen). This suggests the first problem was very likely thermal.
So I'm going to call that good enough for this phase of optimisation. No-one's really going to try to run Quake on an 030 (about 2 seconds per frame, if you're interested!) whilst also running background tasks and thermal management is left as an exercise for the reader.
I'm going to move on to building in the bodges to date to a rev5 board, consider building up a second one of these with bodges in from the start to prove it's not a one off and maybe (maybe!) look at squeezing another cycle of the SDRAM if I'm waiting for boards.
I've pretty much got what I wanted to build now.
There are some odd questions that I'd like to investigate in case they show up issues with my board. One is why is EmuTOS not stable under MiNT when AltRAM is enabled, but TOS is? I postulated HD driver differences, so I tried to hack EmuTOS to bootstrap HDDriver like TOS after some tips from Christian but didn't get very far. I have another idea or two there, though.
Anyway. Very pleased.
BW
DFB1 Open source 50MHz 030 and TT-RAM accelerator for the Falcon
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark


