[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [f-cpu] Status quo

Hi Ralf,

On 03/28/2015 08:19 PM, Ralf Jonas wrote:
Hi Nikolay,
There are software libraries implementing arbitrary precision
arithmetics like libgmp, and they're ported to all major architectures,
including those that don't implement BCD in hardware. So this shouldn't
be a concern.

that's true. But... from this point of view, you can emulate everything
with a library. A turing machine capable device should be sufficient.
A standard PC is - compared to a mainframe - so "slow", because it's
emulating itself to death. Every bit has to be done in software, because
hardware is expensive and difficult to upgrade. An IBM /390 had a simple
8 Bit CPU with 16 MB RAM. The luxury edition contained even two of
these. For all the other jobs the mainframe got it's hardware devices,
even for such simple tasks like reading a record from a file. And even
the standard edition with one cpu served a company with 4.000 terminals.

Imho using libraries like GMP is a necessary evil so you can achieve
your diverse requirements on a general-purpose CPU. Otherwise you'll need a very strange CPU that can achieve "everything" through
specialized CPU instructions - handling SQL queries, garbage
collection, TCP socket handling, image scaling, video compression &
decompression. This is not realistic.

Even if you implement such CPU, it would be incredibly expensive and in
most of the use cases the users won't use most of its features. Talk
about inefficiency.

Today all high-performance designs have either a co-processor or
special application accelerator (usually an IP-core attached to one of
the buses). For your case, you can design an arbitrary precision BCD
accelerator. This will both allow you to calculate faster, and leave
the CPU design... well, generic :D.

> So, what is the main design goal of the f-cpu?

Freedom. Like freedom to make the right design choices, freedom for
everyone to get the design, change it for their needs and redistribute
it at will. It looks like a good enough motivational factor for quite a
bit of people, contributing to all the libre software and hardware
projects around the globe.

Developing a damn cool
cpu is a hard job. But taking a lot of our spare time to develop,
implement, test, program a cpu which is far less state-of-the-art like
some other cpus is not that motivating. It should be better than every
other cpu, I can buy.

As I already said, it's always like this: choose freedom vs
performance. Whatever your choice is, I'll respect it.

Btw, people have somewhat romantic understanding about the current
state of affairs - that every commercial CPU is working perfectly and
is documented perfectly. Well, it's not like this. All big vendors
still keep secrets about their chips (JTAG chains, DDR controllers,
security controllers, Jazelle, on-chip boot ROMs, microcode). And we
have bugs - even today there are CPUs which don't calculate properly,
or which have serious defects in MMU, hyper-threading, cache
controllers, you name it. And what about security - can you trust you
CPU, when it's running a black-box UEFI BIOS and has access to all your

15 years ago there was no other free cpu, so it was the first of it's
kind. But today there are some other free cpus like the OpenRISC 1000
and is successor the OpenRISC 1200. Meanwhile running with ported linux
kernel and libc. You can find them on opencores.org.

Just to clarify:
- DLX was published in 1996, in Patterson's & Hennesy's book "Computer
architecture - a quantitative approach" 2nd edition
- LEON SPARC v7 core was started around 1997
- Jan Gray published XR16 and some other design ideas around 2000
- Plasma was published in 2001
- Yellow Star was designed around 2000-2002 and report published in
2002 (when MIPS Technologies threatened the author and OpenCores for
copyrights violation).

Looks like the idea for soft-core CPU was already in the air when F-CPU
started, but Yann can correct me on this.

Regarding the state of OpenRISC - I agree that the OpenRISC team has
gone a long way to achieve their goals and I deeply respect them. And
there are also other freely available CPU core designs, like
LatticeMico32, MicroBlaze-compatible CPU cores like aeMB and OpenFire,
and even some ARM-compatible cores (well, with old ISAs because ARM is
prosecuting everyone making implementations compatible with the newest
ISAs). Which is very nice because we can learn/evaluate/change them,
and even design something new based on similar ideas. Again, freedom of

Shouldn't it be better than that?

Well, imho the design and it's implementation is as good as the team
behind it. The proper question is - are we good enough to make a better
design than the other teams did :D?

Kind regards,
To unsubscribe, send an e-mail to majordomo@xxxxxxxx with
unsubscribe f-cpu       in the body. http://f-cpu.seul.org/