[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [f-cpu] I'm still in the warmup phase ;-)
I'm speaking German too - but let's stick to English to avoid excluding
should get a simple design running before adding fancy engines.
we've been there before :-)
I can imagine very well -- LOL
Hmmm... Exnor will make equal bits 1 and unequal bits 0 that's well known.
We already have such an engine, sort of:
# load parameters...
loadcons $0x7770632d30303066, r1 # that's "f000-cpu"
loadcons $0x7070707070707070, r2 # that's 8 times a 'p'
# and here we go:
xnor.and.b r1, r2, r3
# matching bytes are 0xff, others 0x00
notice the single-cycle operation :-P
So "and.b" is an FC0 specific feature ANDing all bits in their
Looks great! So in order to check whether a needle is in a haystack
i'll just race throught the memory and compare the xnor.and.b to zero, 8
a bunch. If nonzero, locate it precisely. If we use this in strncmp-like
we'll run databases and such pretty fast. WOW!
I still have to get used again to that Intel-like opcode stuff and
the bytes in the code -- the good old Endian issues. You alredy agreed
opcode for the FC0?
however, the portability problem is very critical.
Ooops! Sounds like we need an abstraction layer. And implies that if we get
[...] The written VHDL code
will need many modifications before running on another board, let
alone another family of FPGA, and not even considering another brand.
it running on CPLDs, we can't use the same VHDL code for the ASIC --
I don't know VHDL yet. I thought it's a connect-this-to-that language that
is independent of the physical layout. Or was that something SPICE-like?
>what do you mean here ?
>Do we need more pseudo-registers for memory access?
That the CPU core looks at the memory through a "window" that looks like
two registers. This can significantly reduce opcode space.
Example: r60 and r61 are the memory access window. Load the address into
If we read from r61, we read the memory at the address given in r60.
in a similar way.
r01 := [0x00000ha150373135]
r60 := 0x00000ha150373135
r01 := r61
Disadvantage: more difficult to see "vom Schiff aus" which MOVE commands use
many clock cycles.
We will need at least 2 (better 3 or 4) windows of that kind, sacrifying
up to 8 registers.
* The majority of computer users needs rather data movers than
computers (i.e. machines performing calculations).
>but did you hear about the "memory bandwidth barreer" ?
>F-CPU is designed to be good at computing, it's a fact.
Yep. Maybe we later add an unit outside the FC0 doing
memory block moves, avoiding occupying the CPU's
memory bus. I think the AMIGA had such an engine.
>btw, welcome aboard :-)
To unsubscribe, send an e-mail to email@example.com with
unsubscribe f-cpu in the body. http://f-cpu.seul.org/