Re: How do you do this?
- From: "Jeff Fox" <fox@xxxxxxxxxxxxxxxxxxx>
- Date: 24 Jun 2006 08:49:50 -0700
rdragomir wrote:
Mr. Jeff Fox has a clear advantage here. The CPUs in the SEAforth chip
transmit and receive data (code here) instruction by instruction (or
even more: words of 4 instructions at one time).
Well sure. Some of that goes back twenty years, and some of it is
an evolution from the last generation that used a network processor
that could send a message and have a network coprocessor
store an addressed incoming message into memory and then
interrupt the CPU to execute it.
And we have done this stuff with serial and parallel and network
interfaces. And everyone else has made forward progress in the
last twenty years too if only that they have a computer that
has faster interconnects and faster CPU than the last one
they had.
And other people will have other advantages, after all you can't
compare things that are exactly alike or they alway will be equal.
Other people have talked about their multi-core 3GHz PC with
hyper speed communication links between processors. They
have the clear advantage here if we are going to make
processor and communication link speed comparisons.
And other people have talked about their mainframes and
Transputers and networks of Linux workstations. So I don't know
how fast or efficient their approach will be since they will
have other advantages.
We can compare the performance of John's tiny embedded
computers running their C code with no OS and sending
the message, waking up executing it to someone's high
end multi-gigahertz mult-core PC. We can compare how
they do a hello world like we have in the past and
we can compare how you do hello world to how I do
hello world.
They instantly wake up
when data is ready, and go to sleep when there is no data. Very simple.
True.
There is no need to make strings, encapsulate them, transmit, receive
You do have to encapsulate, load, transmit. Of course you have to do
that.
an ack, etc. And because the opcodes are forth, there is no
optimisation issue (or I think it doesn't worth it). And here is a
matter of nanoseconds.
It is true that the Forth code is going to compile to one word.
And that one word, in this case, will have to loaded and
directed at the other computer and transmitted to get the
other computer to read it and execute it.
1. over + dup ; \ example forth code like ." hello world."
2. send on 1, execute on 2
It is a generic problem expressing the nature of parallel
programming. We are all living in a world dominated
by parallel programming today and moving into more
of it in the future. This frightens some people who
haven't noticed that their PC has many processors inside
of it and that they the new ones will have more. This
frightens people who haven't realized that Internet is
an example of multiprocessing that they rely on every day.
So I gave a very generic problem expressing the core
example to understand multi-processing. We all do
this stuff every day.
Some do it with browsers and TCP/IP and javascript
running on pages loaded with HTTP etc.
Some do it with multi-core chips from Intel and AMD.
Some do it with transputers.
And I asked other people how they would do it on
their computer. I didn't give any restrictions on what
computer they use, I asked.
I wish I have had a system with more than one processor with this type
of sending code to be executed. 20 microseconds and I could be proud of
it.
I was proud of the fact that it would take 1 microsecond on the old
F21 chips because they were after all cheap low power chips.
But every time I have two micros linked with some type of serial
connection, I quikly invented some sort of simple and very limited
protocol to send some data and commands. Very rudimentary. A couple of
miliseconds at best.
Sure in the old days serial was very slow, 9600 baud! Even 115k is
dialup speed! We used to use parallel cables instead of serial
cables to speed things up, yeah, async serial can be a huge
bottleneck.
I expect people with gigabit ethernet or 6GB/sec links between
the multi-core AMD processors would have the same communication
bootleneck. Hey, those thousand dollar processors do have some
performance advantages over <1$ processors.
So sure, we have sub $1 processors that are going to be faster
than John's sub $1 processors. And they could be slower than
other people high end computers or not depending on how
people would implement their solution. They might say I
am using this simple code on this 6GB/S link and it looks
like this, or they might say, I am using a network protocol
that will deliver the message in two days and it takes this
much code instead.
That's why I asked.
.
- Follow-Ups:
- Re: How do you do this?
- From: rdragomir
- Re: How do you do this?
- References:
- How do you do this?
- From: Jeff Fox
- Re: How do you do this?
- From: rdragomir
- How do you do this?
- Prev by Date: Re: How do you do this?
- Next by Date: Re: What's your favourite forth implementation and why?
- Previous by thread: Re: How do you do this?
- Next by thread: Re: How do you do this?
- Index(es):
Relevant Pages
|