Engineer Application - ZBager

Minecraft name: ZBager

What’s a thing you have made which demonstrates sufficient engineering knowledge?:
An 4 bit Instant CPU
4 Bit Pure Harvard architecture
7 registers
32 cells for program memory
4.5 tick clock (2.22hz) for all of command
ALU operations: add, sub, and, or, xor, rsh, lsh, not output (can be done on all operations)
Number Comparison (A>B, A=B, A<B)
Overflow Flag
16 Cells of RAM (with indirect memory access)
Program Memory Layout:
Op. Code - 4 bit
Destination Register - 3 bit
Argument B flag bit - 1 bit
Argument B - 4 bit
Argument A - 3 bit
Op. Code ALU - 4 bit
ALU Output Negation - 1 bit
Conditional Flags - 4 bit
Jump Destination Address - 5 bit
What engineering work went into designing this thing?:
This CPU is a fully functional Turing machine, so it could perform every algorithm as long as it fits into memory.
Architecture allows for utilizing complex commands in one clock tick such as conditional jumps with ALU Operations. Based on Last “Flag” Bit in Arg B can be swapped for 4 bit constant or register address so every single command can be executed with either const or another register for example:
Setting argument A to 4, Destination to 2, Argument B flag bit to 0, Argument B to 3 and OP. Code ALU to 15 will mean
add reg[4], reg[3], reg[2]
But when you take this same exact command and Argument B flag bit will be set to 1 it will be:
add reg[4], 4, reg[2]
Currently CPU is Programmed to sort RAM Cells using bubble sort algorithm

Image(s) and/or video(s) of the device:

Here is whole CPU documentation with more in depth look into command set, example programs, etc.

You are not sufficiently ranked to apply for this position.

Instead, I’d recommend applying to become a Builder.

Sorry for the late response from staff, finally got the vote done on whether someone can go right from Student to Engineer

You got some nice documentation, thats pretty good.
However i would like to point some stuff out before granting an interview.

Much about the Engineer role is about getting out of your comfort zone. I do not think there is much material for discussing choices about how you would have done things differently if it were not for the instant logic and wide instruction width (compared to other 4 bit cpu’s).

Add more logic and bigger units? Sure, it has no cost other than additional lag.
Layout? can have a cost, but the only thing being saved is space.
Instruction set optimisations? why would you if the rom can grow indefinately.

Things i do like you for implementing:
indirect memory access
call and return. Though indirect pc jumps would be nice too.
some predication (only exit if … in 1 instruction)

1 Like


I’d recommend addressing the points Koyarno made in his reply months ago.