One year has passed without any blog post...
Several people asked me what I plan to do next on this A2Z project.
Probably nothing, I will explain why.
Porting Linux ? Retargeting a compiler?
What A2Z is not:
This question was asked several times. Some people consider A2Z as a 100% open source platform which could run a 100% open source Linux. They are wrong, I will explain that.
There is a misunderstanding.
I’m afraid, Linux and a C compiler is totally not feasible.
A2Z lacks many things to achieve the goal of C retargeting and Linux porting.
- A2Z only manages Direct Addressing in hardware. No complex address computation. If you want to implement data stack, recursive functions, then direct addressing is not enough. You cannot retarget a C compiler with only direct addressing (or if you emulate complex addressing modes by software, it would be very very slow).
- A2Z has not interrupt management. You cannot implement/port a pre-emptive multitasking OS (Linux) without interrupt management.
- A2Z has no memory management unit.
- A2Z’s ALU is compatible with nothing.
What A2Z is :
A2Z is “just” a very simple and didactic project. The DIDACTIC aspect is the most important.
I started this project in my mind 3 years ago, the goal was to make things very simple, and start from a blank page. I didn’t want to copy other CPU architectures.
I didn’t want to take the constraints of “being compatible”, or using one existing compiler / language. I wanted a lot of freedom in this project.
Therefore, A2Z is compatible with… nothing.
I don’t think that lots of people have made such usable computer starting really from scratch, from a blank page.
I’m very proud of the result.
Anyway, What’s going next?
I consider A2Z totally finished, so there will be nothing more on A2Z project.
Of course, I have several ideas to improve the A2Z, with the same principle, the same CPU architecture. There is a list:
- Accelerate to 50MHz (currently 25MHz) : I know that it is feasible
- Instruction cache : I could put an instruction cache inside the FPGA, and switch to a faster “Harvard” architecture when the CPU uses it
- Small pipeline : Now that the pipeline concept is clear in my mind, I could improve the CPU with a small (2 steps) pipeline
- Flexible CPU state machine : the state sequencer of the CPU core is currently too simple, too rigid, and wastes a lot of cycles. Making a flexible state machine could improve the computing power.
- Video part : 2D hardware acceleration with sprite management
- Reprogramable graphics palette (256 colours out of 4096) for better pictures rendering
- Ethernet and networking : The idea would be to code a very simple Ethernet card directly inside the FPGA.
BUT… I will not make any of these improvements. I simply don’t have time, and I have already moved to other projects. Robotics and amateur radio projects (F4HDK is my amateur radio callsign). Even if I come back to CPU architecture study sooner or later, it will be with a brand new project.
But I remind you that all the source code is freely available for download, everythink is open source. So you can play with it, improve it. I will be very happy if someone proposes improvements for A2Z. Of course, I can bring support about topics that I have not well documented.