[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[oc] Re: Merlin Hybrid System



On Sun, Dec 09, 2001 at 06:04:04PM -0600, Jim Dempsey wrote:
> 
> ----- Original Message -----
> From: "Andreas Bombe" <bombe@informatik.tu-muenchen.de>
> To: <cores@opencores.org>
> Sent: Saturday, December 08, 2001 9:32 PM
> Subject: [oc] Re: Merlin Hybrid System
>
> > You're claiming magic SMP without code support.  That I've understood.
> >
> 
> From the outside viewpoint (e.g. that detected from the operating system)
> there is a single processor capable of running but only one thread.
> Internaly
> there are multiple processors that are capable of fooling the observation of
> what the processor has done.
> 
> While not disclosing what I am doing to some extent you can see this
> effect on an Intel processor. The processor sucks in some number of
> instructions for decoding. From the outside viewpoint is the instruction
> pointer just after the last byte read? It is not there yet. Now assume
> an interrupt occures while this wad of instructions are inside the pipeline.
> You could flush the pipeline and un-roll the instruction pointer backwards.
> You could defer honoring the interrupt until you got room in the pipeline.
> You could start sucking in interrupt code while you complete execution
> of code in the pipeline. All of this could occure without regard to what
> teh operating system may think has happened.

The OS thinks that a single thread of instructions is executed
sequentially.  What really happens is that instructions are reordered
and executed in parallel, sure, but only in a way where the logical view
of single-thread/sequential can be maintained.

There is _one_ logical IP and it advances inst by inst, only redirected
by branches.  Everything before the IP is done and commited.  That is
what the OS sees.

Multithreading means multiple IPs, and you can't hide that fact.  Before
you bring speculative execution of branches as a counter example, that
doesn't work.  On speculative execution all but one thread are thrown
away when the branch is resolved.

> As indicated earlier, a system (e.g. Windows) has many programs running.

But the CPU has just one running:  The operating system.  The OS in turn
runs programs, but that is just an abstract concept and not visible to
the CPU.

Your problem stays at multi-threading a single program.

> > How can you tell it's effective without benchmarking it?
> >
> 
> For a particular circumstance you could, using hypethectiicals, compute
> the effectiveness. In practice, what you experience is much different.
> 
> How would you suggest I benchmark a mathmatical model of my WinME
> system running AutoCad, WinAmp, DVD player, email, SETI and ten other
> apps at the same time. This is way beyond the scope of a small fish like me.

Why benchmark a model instead of an emulation/simulation?

> Intel, AMD, Transmeta et al have the where with all to do this. I would
> like to do this without getting picked to the bone.

You won't get them to do anything but file your letters under "crackpot"
if you tell them that you can magically multi-thread programs.  Whatever
it is you want to do, I strongly suspect you misapplied the term and
that you'd fare better and be taken more seriously with a more
appropriate name.

-- 
Andreas Bombe <bombe@informatik.tu-muenchen.de>    DSA key 0x04880A44
--
To unsubscribe from cores mailing list please visit http://www.opencores.org/mailinglists.shtml