Cred Forums Creates an Architecture
Last digit of first reply determines word size in bytes
Dubs chooses amount of registers
Cred Forums Creates an Architecture
Last digit of first reply determines word size in bytes
Dubs chooses amount of registers
500 registers if dubs
32-bit, that's manageable
4 registers
2^3-1 registers
2 registers
f u c k
cheesus crust
Instruction pointer.
Stack pointer.
I'm interested in how this will turn out.
bump for interest
Well, despite the word size being 32 bits, we could just restrict the stack size to 16 bits and use the upper 16 bits of the stack pointer as a general purpose register.
Maybe you could do something hacky with the instruction pointer too.
I assume this is going to be implemented as a virtual machine for ease.
If dubs instruction pointer increments by value in all general registers added together.
There are no general purpose registers lol.
if this ends in a 16 then we have both of these 2 registers be 16GiB
The word size was already decided to be 4 bytes.
Unpipelined
More CORES
Clock speed is 1Hz
Dynamic RAM only
Only subtract for math
Jumps not supported
Stack pointer increments by one, but decrements by two
ARM clone
>2 32bit registers
wew lad
We can work with this. Stack Pointer and IP. Instruction set is like RPN or Forth. Push and pop to/from memory. All operations work on the stack. Instead of flags, we have a cmpjx operator that combines the comparison and jump.
Oh well. We'll just have a stack machine.
Alright boys, we got a 32-bit word size with two registers
next dubs determines address space
2 kb.
Let's make this fun, next post ending in 8 determines ALU operations
2 bytes.
1 MiB
So close
That really is a platform-dependant thing, isn't it?
4GB, max
sqrt
pow
sin
cos
inc
xor
16 bits
I'm not talking about the memory map, I mean the size of the address bus
sp*2
None.
256GiB.
17.5 bits.
4 bits
1024bit
512 bits
2 bits
not + shift only
add
mul
neg
Also everything is a double float.
flat, like dos
3 bits
I'll make the logo
19 bits
sqrt
No one has declared they'll start on the logo? I guess I'll do it then
Okay, you win, how many bits is the bus though?
4
dot product
cross product
simd add
simd sub
simd mul
simd div
sqrt
vector length
vector normalize
Alright Boys, Cred ForumsCPU specs thus far:
-32 word length
-2 registers
-16 bytes of addressable memory
AND
NOT
You guys work something out
NEG
cons car cadr cdr inc dec xor and nor randmask (xor operation with random bits)
Also, if anyone wants to make a virtual machine of this abomination, feel free.
cube root
and flat, DOS-style memory space ya mook
WINRAR
I might attempt it. Not right now though.
We still need to work out the instruction set.
Right, right
Cred ForumsCPU specs:
32 bit word length
2 registers
16 bytes of flat memory
ALU operations: cons car cadr cdr inc dec xor and nor randmask
9 bits
I'm sure professionals design their CPUs like this, too
>16 bytes of flat memory
IT'S OVER, INTEL IS FINISHED
Okay guys, onto the instruction set, dubs determines the amount of opcodes
2
>16 bytes of flat memory
and by this I meant absolutely /no/ memory protection modes, I want to be able to open my master boot sector in a motherfucking bitmap paint program
Why the hell are cons/car/cadr/cdr in the ALU? They should be in the general ISA, they're all indirect pointer-follow instructions.
Cred Forumscpu confirmed for frankenstein alu containing an entire extra mmu
nand
jne
finally, we can crank out binaries 21 questions style or with binary decision trees
>fewer opcodes than alu operations
uh, guys?
This architecture is fucking useless.
Mate, with the amount of address space we have, your operating system is going to consist of two dots on a 16x2 display
Well... shit.
At least try to be a bit more subtle AMD
Imma be kind and add those opcodes onto the ALU operations
so we have 10 opcodes on a 32 bit word length
god help us
We could make it so the first instruction just counts up the IP and the second instruction executes an instruction based on the IP
Needs more pipelines.
>not bitpacking your display drivers
oh yee of little faith
easy.
Push
Exec
Push pushes a word onto the stack
Exec interprets the word on top of the stack as a sub-opcode and executes it.
Dubs decides on sub-opcodes.
Okay guys, next order of business
Next ten posts determine the operations for each opcode.
spaz (randmasks a random address anywhere in memory)
Forgot to mention that Exec also pops the word from the stack.
jump back one instruction
Jump forwards 3 instructions.
cdr
opens cd-rom tray
Ignore this, use 's idea instead
one isa instruction to switch to a different memory segment
(working around the stupid 16 byte flat address map)
thats the ALU ya mook, and its a lisp machine function
fxor
Got to support floating point, right?
Sub-Opcodes thus far:
spaz (randmasks a random address anywhere in memory)
fxor
Keep em' coming, last digit of this post decides how many more sub-opcodes we do
gcc
Invokes the GCC compiler from host
>different memory segment
what about flat addressing don't you understand
wrong
Too bad, we're XORing floats now.
`nnb`
Writes the content of '99 bottles of beer on the wall' to memory at the specified location, or at least, as much of it as will fit. Intended for shitposting on code golf websites
crank (the architecture now includes two lines out of the machine with enough to produce an arc across the terminals, the crank opcode is intended to shock the user or supply negligible pulses to auxillary doodats)
float don't real in 16 bytes of memory
>2 fucking registers
>16 bytes of flat memory
What the fuck did you expect?
trap
Randomizes the opcode to operation mapping for all but this instruction.
maybe not in IEEE754, but abstractly nobody is stopping you having mantissa/exponent taking up as many bits as you want
not?
Conditional negation based on the result of the previous operator.
>stupid 16 byte flat address map
if you've never thrown and pulled opcodes to and fro video memory your basically subhuman
Complete sub-opcodes:
Alright boys, what's next?
rboot
Reboots the cpu
Isn't that the same as adding a reset button?
rboot2
Reboots the CPU twice, although, it's acceptable for ISA implementations to lose track of the number of resets part-way through executing this operation
Yeah, but it will do wonders with trap and spaz
programmers work on emulator in C or Lisp
engineers figure out how to summon this demon into silicon
Pipelines. How many stages and what goes where.
Ruined
Fine, it's in
Alright, dubs determines the number of pipeline stages
4
512
8
0
Not bad.
let's spend 7 of those on translating between mutually incompatible micro-op isas
>and by this I meant absolutely /no/ memory protection modes, I want to be able to open my master boot sector in a motherfucking bitmap paint program
TempleOS
dubs for reserving half the address space for memory mapped devices.
Next dubs determines what each stage does
Retard here. Is there any way to emulate this abomination?
50/50 chance of
Randomizes a random bit of memory or
Actually executing the instruction and placing it in a random place in memory
Sure, with a VM
Dubs decides on video address space.
variable, dynamically allocatable, default standard VGA (what is it like 400 something by 300?)
pull up programs as bitmaps
No video
How you emulate a processor with a VM?
We only have 16 bytes though..
standard DOS-style VGA; we're designing a processor, not a video driver
keep thinking
1 bit
Each pipeline stage complete a whole fetch/exec/writeback cycle
We can use the many remaining sub-opcodes for setting pixels on the screen! Since a word can contain 4 billion codes.
this \/
fantastic idea
best Cred Forums thread in a long while
How are we implementing it, verilog?
C++
Stick and stones on sand.
It seems no-one has enough skillz to know how pipelines work. Maybe we take the latest post in a few minutes?
I want to purchase this processor.
With this shit? Just pipeline the lovecraftian horror of an ALU
All a VM does is emulate a processor