Forums - Open Redstone Engineers
BFCPU (big - fucking - cpu) - Printable Version

+- Forums - Open Redstone Engineers (https://forum.openredstone.org)
+-- Forum: ORE General (https://forum.openredstone.org/forum-39.html)
+--- Forum: Projects & Inventions (https://forum.openredstone.org/forum-19.html)
+---- Forum: In Progress (https://forum.openredstone.org/forum-20.html)
+---- Thread: BFCPU (big - fucking - cpu) (/thread-5896.html)



BFCPU (big - fucking - cpu) - greatgamer34 - 03-02-2015

BFCPU ehh, what makes it so special?

Well its got 2 Cores! Big Grin

RISC - 16 ISA (https://docs.google.com/spreadsheets/d/1...sp=sharing - This is my personal copy so it may be worded stupidly)

Pipelined
There 32 bytes of shared memory for the cpu to use and have fun with.
8 bit ALU
7 local registers
6 bit prom(there is an 8 bit bus available).
Flag queue - 7 deep(maybe 8 IIRC)
Data stack - 8 deep
7 U/I ports
7 pointer addresses
11 tick Data loop
The clock will be under 20 ticks

The first prototype

[Image: j59YyRe.png]

Full thing updated at 3/2/15

[Image: 0CEtCMr.png]

[Image: 96pAFsZ.png]

imgur album : http://imgur.com/a/kAKYH

Shout-outs to Embizone, and newomaster.
The Alu is embi's 4 tick CLE
The Regs are newos

(still not finished)


RE: BFCPU (big - fucking - cpu) - Nickster258 - 03-03-2015

More information on the instruction set?


RE: BFCPU (big - fucking - cpu) - greatgamer34 - 03-03-2015

Oh my bad, here it is, also i put it in the main post.

https://docs.google.com/spreadsheets/d/1EGOTh42Q9Hb3XkBVUtqOuXe0zrMGtylPRJyfohCXvVk/edit?usp=sharing

This is my personal copy so it may be worded stupidly


RE: BFCPU (big - fucking - cpu) - VoltzLive - 03-05-2015

I would have liked to see some extensible programming possibilities... such as a call/return or at the very least something that replicates it.
Something that would act as an arbiter for the shared cache if you do add extensible programming.


RE: BFCPU (big - fucking - cpu) - jxu - 03-06-2015

Sup GG!

I think this project is fantastic. The server really needs more epic projects, rather than the small quicky CPUs right now. In fact, I suggest making it bigger.

Is that 32 registers (quite a lot) or 32 bytes of RAM? The IS link is broken. @Voltz jump and return commands can effectively be functions.

Best of luck!


RE: BFCPU (big - fucking - cpu) - greatgamer34 - 03-06-2015

I have pointer stuffs. Like 7 pointer regs so I have a few ways of getting around with jumping. I have 7 registers attached to each ALU plus the shared 32 Bytes of memory.


RE: BFCPU (big - fucking - cpu) - greatgamer34 - 03-06-2015

The shared memory is like a shared ram basically. xD


RE: BFCPU (big - fucking - cpu) - Chibill - 03-06-2015

Some interesting stuff on that spreadsheet great.


RE: BFCPU (big - fucking - cpu) - greatgamer34 - 03-07-2015

Lol, in a good or bad way?


RE: BFCPU (big - fucking - cpu) - Chibill - 03-07-2015

Not sure there's seems to be some assignment there..


RE: BFCPU (big - fucking - cpu) - fuirippu - 03-07-2015

Yes, lacks detail on cloning 3/10, otherwise looks awesome.


RE: BFCPU (big - fucking - cpu) - VoltzLive - 03-07-2015

Quote:@Voltz jump and return commands can effectively be functions.

That is exactly the point.... Extensible programming.


RE: BFCPU (big - fucking - cpu) - Konstacon - 03-10-2015

What the hell is U/I. if it is user input im disgusted.

That awkward moment when you dont have a stack pointer


RE: BFCPU (big - fucking - cpu) - LordDecapo - 03-11-2015

Still reading. but I see u have 1 in boxes that should be 001... in excel and open office You can use an apostrophe like this;

'001
and it will disable auto format that drops the 0's, as well as will make the apostrophe unseen.


RE: BFCPU (big - fucking - cpu) - LordDecapo - 03-11-2015

Also, call return are so much easier to just add as an argument in an IS the a function. Speeds it up like 4 fold atleast


RE: BFCPU (big - fucking - cpu) - greatgamer34 - 03-11-2015

What do you mean? Im still fairly un-familiar with call and return. Arent they just for running subroutines? Why not just have a branch to the sub routine?


RE: BFCPU (big - fucking - cpu) - fuirippu - 03-11-2015

(03-11-2015, 07:41 PM)greatgamer34 Wrote: ...call and return. Arent they just for running subroutines? Why not just have a branch to the sub routine?

You're right they "just" run subroutines.... but it saves the programmer work, and saves memory (program space). "Call" is like "branch", but it automagically stores a return address, which means the end of the subroutine is simply a "return" instead of a "jump to <address>".

Sure, I could (among other possibilities)

Code:
PUSH <PC + 4>
JMP <subroutine>

and my subroutine could finish with

Code:
PULL reg0
JMP <reg0>

But you're looking at probably 4-bytes of instruction per call, and another 4-bytes for return. (That's assuming you've got PUSH and PULL instructions). Instead with call and return, you're looking at probably 2-bytes per CALL and 1-byte to return.

It might not sound like much, but how much program memory does the average Redstone computer have?

And then there's the debugging cost: with automagic CALL and RETURN, there's no way for me to screw up and push the wrong return address, or forget to push anything at all.


RE: BFCPU (big - fucking - cpu) - embizone - 03-12-2015

RISC-16 (that's the ISA ur using right? Link is broken) can emulate calls quite adequately with the JALR (jump and link register) instruction. Just jump to an address and save the PC to memory / software stack. Just an extra instruction, unless of course you're implementing software stack then maybe an extra 2.


RE: BFCPU (big - fucking - cpu) - greatgamer34 - 03-12-2015

Well I have 7 registers dedicated for saving pointers to do such a thing. Big Grin


RE: BFCPU (big - fucking - cpu) - fuirippu - 03-12-2015

You're right: it can be done. But with IS-level-support for subroutines, the correct pointer is automatically stored and retrieved. Shorter programs, less bugs. (or, to look at it another way... more work for the hardware engineer, less for the software developer)


RE: BFCPU (big - fucking - cpu) - greatgamer34 - 03-13-2015

Oh I see. So the system I have now will suffice, but for the future, Ill keep this in mind! Big Grin


RE: BFCPU (big - fucking - cpu) - Curiosity85 - 03-15-2015

How many bytes of memory does it have in total?


RE: BFCPU (big - fucking - cpu) - greatgamer34 - 03-16-2015

7 bytes of GPR
7 bytes of SPR(for pointers)
8 bytes of stack
Each "core" has that ^

Then it has a shared 32 byte memory.


RE: BFCPU (big - fucking - cpu) - LordDecapo - 03-16-2015

Question. y SO MANY pointers?
I have 14 registers as well, and some are SPR, but they are only SPR in the program model, so they can tech. Be used as GPR. (Can use any register as a pointer)
most of my SPRs, are on my PCs (2 on each of the 2 PCs) and some on my Timer (2+1 with the +1 being the current time value). I have some other Special purpose memory, but that is RAM mapped.


RE: BFCPU (big - fucking - cpu) - greatgamer34 - 03-22-2015

Update on the project 21-3-15

More than half of the instructions are bug tested.