Xyla wrote: ↑Tue Apr 23, 2024 9:13 pm
Yes you're absolutely right that compatibility would be higher... but I would think the Firebee compatibility could be improved without dumping the Coldfire, which is also effectively also a member of the 68K CPU family and reaches higher performance than the Motorola 68060.
You say the Coldfire is a member of the 68K family.
Not sure if I would say this .. as the difference of the Coldfire to other 68K CPU are huge and significant.
As you know the 68000 and all other 68K CPUs support BYTE/WORD/LONG operations.
This means programs can manipulate directly BYTEs or WORD or LONGWORDS.
This is a very important and strong feature of 68K instruction set.
And in the ATARI you have lots of BYTE and WORD hardware registers and
of course existing programs use many BYTE and WORD variables,
so BYTE and WORD operations are for sure very numerous in existing software.
The Coldfire generally only support LONG. (with few exceptions).
This is huge difference.
The big strength of the 68000 family are its nice and good Address modes (called also EA modes).
The good address modes make the 68K such a nice CPU to program.
The 68000 family has EA modes like index mode with WORD Index (A0,D0.w) - which the Coldfire not supports.
The missing modes will make old programs often need to emulate the instruction.
Then there is the big difference in supported instruction length:
As you might know the 68000 CPU supports instructions of 2,4,6,8, and 10 Byte length.
The 68030 CPU in the Falcon supports instructions of 2,4,6,8,10,12,14,16,18,20, and 22 Byte length.
The Coldfire support instructions of 2,4, and 6 Byte Length
This is a huge difference and kills many EA modes.
Many typical simple instructions like
move.l #immm,$adr are not supported on Coldfire.
And of course instruction like MOVEM which you use all the time in subroutines to save/restore registers - work differently.
And then there is a number of simply "dropped" instruction like for example DBRA.
DBRA the loop instruction of the 68K family is typically used in every loop in each program.
But its missing on the Coldfire.
Then Bitfield instructions are missing and many other instructions like e.g. MOVEP.
I thin some of these instrucitons like MOVEP are used a lot in existing ATARI software.
The Coldfire can trap on most of the missing instructions/ missing EA modes / missing length support
and a trap handler can emulate then the missing /real 68k instruction.
This works but of course is very slow .. in my experience much slower than an 68060 CPU for running real 68K software.
I think the idea of the Coldfire is to use it in a closed environment if you write all software new.
Like for example if you design a printer and the Coldfire runs the firmware inside it.
And you write all firmware from scratch without the need to run old software.
Then I think the Coldfire is good CPU.
To run old software, like for example Software for the Falcon 68030 CPU
i think this is very hard for the Coldfire as it will have to trap out on a huge number of instructions and will need software emulation a lot..
My experience with Coldfire trap and emulation overhead is that is pretty costly - it literally makes the CPU in the order of ~ 50-100 times slower.
I did a disassembly of the Amiga OS and wrote a program doing a statistic of how many instruction are in the small subset that the Coldfire
can execute without the need of software emulation. The amount of needed software emulation was so high in Amiga OS
that using a Coldfire would have been very slow. And of course there is also the topic of changed behavior of instructions.
There are some operations which the Coldfire does differently .e.g misaligned variables on stack etc - and these things can not be handled by software library help and can cause critical incompatibility.
If you compare the Coldfire V4 with the 68060 CPU...
then the 68060 has the advantage that it supports super scalar = can execute up to 2 instructions per cycle.
The Coldfire V4 is not super-scaler like the 060.. The V4 has a feature that it can sometimes execute some instruction in the EA unit which is not bad but less powerful as the 68060 two ALU units. Also in my use cases the Coldfire was relative weak in memory operations - often much weaker than the 68060 was in our tests. You mentioned GFX operation performance. In our GFX driver there are often areas/functions where the CPU is actually pushing pixels around - and here the memory interface performance of the CPU is a major factor - and I can see that the Coldfire was dissapointing us in this area.
All this said: I think the Coldfire is a very interesting CPU if you start from scratch.. If you develop a new system with new software that not needs to run old software at all.
Therefore I think for the FIREBEE using EMUTOS is a good idea.
With Emutos you can recompile the OS, so that the CPU not needs to trap out and emulate all the time.