As I mentioned in the previous post, the two basic foundations for my project are to get familiar with the stack processor architecture and to know the exact I/O operations.
I started with a quest for knowledge about the stack processors. Stack Computers: the new wave by Philip J. Koopman was my first station. This book gives an overview about stack processors, how stacks work and their different structures. Moreover, it presents detailed descriptions for some of the stack processors present nowadays. It’s a good book to start with.
Why do we choose stack processors?
In general, stack processors have (among many) the following advantages over the conventional processors:
- They are, Koopman mentioned, ‘reduced operand set computers’ as opposed to ‘reduced instruction set computers’. All operations are done on the top stack elements which makes the processor more simple in design.
- Stack processors support procedure calls efficiently, as the working parameters are always on the stack, thus reducing subroutines overhead.
- It handles interrupts in a simpler way by treating them as hardware-invoked procedure calls, once the interrupt service routine is entered, no registers need to be saved as new data would be pushed on the top of the stack.
However, to determine the architecture of my processor, I still need to figure out the fine operations performed by USB and Ethernet. I’ve already looked through the operations taken place but it needs more time to identify them all and combine them in similar-operation clusters which then serves as the base for the processor architecture design.
Stay tuned for the next post (I/O operations)…