Motherboard Forums


Reply
Thread Tools Display Modes

Non-deterministic CPU's.

 
 





















omattos
Guest
Posts: n/a

 
      12-10-2008, 01:17 PM


The first rule of digital electronics is they should be predictable -
ie. when the same data is fed into a circuit twice, the output should
be the same every time.

I'm trying to do a thought experiment to see what could happen if this
restriction was to be relaxed for CPU's.

Current CPU's should process every instruction with 100% accuracy.
What if I remove that restriction and say an error may be made in one
in every 1000 instructions. The error could effect anything, from
simple incorrect results of an arithmetic operation to incorrect
branching in the flow of control. After an "incorrect" instruction, I
understand that any further instructions executed could depend on the
"faulty" one, and therefore also produce unexpected results.

My question is what optimizations and speedups could be applied to CPU
design if they were allowed to occasionally produce "wrong" results?

For example I suspect a higher clock speed would be ok, higher
operating temperature range would be possible, on-die defects would be
ok (provided they only affect a few operations), due to more defects
being allowed, feature size could be reduced with the same
manufacturing process, and therefore clock speeds increased further,
and finally I'm guessing operating voltage could be reduced, reducing
power consumption.

My main question is could a CPU design expert take an "out of the air"
estimate how much faster a CPU could be made if it only had to produce
mainly-correct results, and not perfect results?


Before anyone asks why I want such a CPU, it's just a thought
experiment to see how an algorithm that can't be multi-threaded could
be run fastest. By having multiple CPU's running on the same code and
data data and being "synched" every 100 instructions or so, the
current state of each processor could be compared, and a majority
decision taken. Any CPU which isn't in the correct state would be
reset by copying the state of another CPU, and execution would
continue.
 
Reply With Quote
 
omattos
Guest
Posts: n/a

 
      12-10-2008, 06:21 PM
> This kind of redundancy is always be more expensive in time and material
> than reducing the error rate by merely operating components 'in spec'.


I was more thinking of redundancy like this for performance. Say I
have a task that must be completed in 1 second, but takes 2 seconds on
the best currently available processor. The task can't be
parallelized (ie. every part of the task depends on the previous). By
using multiple processors running faster than designed to get the task
done I can get the job done in 1 second. By having multiple
processors running the same job simultaneously, I can check which
result is correct (by a majority vote)

This uses the theory that as the clock speed of the part moves out of
it's designed working region the reliability goes down, and the
further out of the working region, the further it goes down.

 
Reply With Quote
 
Guest
Posts: n/a

 
      12-10-2008, 06:42 PM
"omattos" <> wrote in message news:6057f918-d737-4385-b663-...
> > This kind of redundancy is always be more expensive in time and material
> > than reducing the error rate by merely operating components 'in spec'.

>
> I was more thinking of redundancy like this for performance. Say I
> have a task that must be completed in 1 second, but takes 2 seconds on
> the best currently available processor. The task can't be
> parallelized (ie. every part of the task depends on the previous). By
> using multiple processors running faster than designed to get the task
> done I can get the job done in 1 second. By having multiple
> processors running the same job simultaneously, I can check which
> result is correct (by a majority vote)
>
> This uses the theory that as the clock speed of the part moves out of
> it's designed working region the reliability goes down, and the
> further out of the working region, the further it goes down.


By the time you run duplicated processes and compare them (you'd
need a minimum of three -- and practically speaking, many more --
iterations to satisfy your "majority rules" scenario), you're much better
off doing it once, doing it a bit slower and doing it correctly the first
time.

A task either runs properly or it doesn't. And if it doesn't, predictability
flies out the window (e.g. if a given bit of memory is flaky at a given
speed, it's likely to produce the same errant result multiple times).



 
Reply With Quote
 
Howard
Guest
Posts: n/a

 
      12-11-2008, 01:19 PM
On Wed, 10 Dec 2008 10:21:41 -0800 (PST), omattos <> wrote:
: > This kind of redundancy is always be more expensive in time and material
: > than reducing the error rate by merely operating components 'in spec'.
:
: I was more thinking of redundancy like this for performance. Say I
: have a task that must be completed in 1 second, but takes 2 seconds on
: the best currently available processor. The task can't be
: parallelized (ie. every part of the task depends on the previous). By
: using multiple processors running faster than designed to get the task
: done I can get the job done in 1 second. By having multiple
: processors running the same job simultaneously, I can check which
: result is correct (by a majority vote)
:
: This uses the theory that as the clock speed of the part moves out of
: it's designed working region the reliability goes down, and the
: further out of the working region, the further it goes down.
:

Can you fillin a blank please? What's the application?
 
Reply With Quote
 
Howard Goldstein
Guest
Posts: n/a

 
      12-11-2008, 02:05 PM
On Thu, 11 Dec 2008 08:26:37 -0500, Phil Weldon <> wrote:
: 'Howard' wrote:
: > Can you fillin a blank please? What's the application?
: _____
:
: Gedanenexperiment

I was sort of hoping there'd be a use for it

:
: Phil Weldon
:



: "Howard" <bit-> wrote in message
: news:slrngk24qe.mnv.bit-...
: > On Wed, 10 Dec 2008 10:21:41 -0800 (PST), omattos <>
: > wrote:
: > : > This kind of redundancy is always be more expensive in time and
: > material
: > : > than reducing the error rate by merely operating components 'in spec'.
: > :
: > : I was more thinking of redundancy like this for performance. Say I
: > : have a task that must be completed in 1 second, but takes 2 seconds on
: > : the best currently available processor. The task can't be
: > : parallelized (ie. every part of the task depends on the previous). By
: > : using multiple processors running faster than designed to get the task
: > : done I can get the job done in 1 second. By having multiple
: > : processors running the same job simultaneously, I can check which
: > : result is correct (by a majority vote)
: > :
: > : This uses the theory that as the clock speed of the part moves out of
: > : it's designed working region the reliability goes down, and the
: > : further out of the working region, the further it goes down.
: > :
: >
: > Can you fillin a blank please? What's the application?
:
 
Reply With Quote
 
omattos
Guest
Posts: n/a

 
      12-11-2008, 07:14 PM
>
> Can you fillin a blank please? What's the application? *


The main one is experimentation to take a fresh look at the design of
modern high performance digital electronics. One example of a system
that is currently used and can be "wrong" is branch prediction in
modern CPU's. In most cases, it predicts the branch correctly and
performance is improved, but in some cases it incorectly predicts the
branch and performance is reduced, but the overall effect is an
increase in average performance.

My suggestion is to take this to the next logical step - since the
outcome of the branch prediction doesn't affect the results of the
calculation but instead only the performance, there is no reason it
has to be 100% deterministic. The same can be applied to other parts
of the CPU provided that, as with branch prediction, faults can be
retrospectively detected and corrected. The key to this system would
be effective fault detection (which is easy if you think about it,
since checking the execution history of a core is now a parallel
problem not a serial one), and also effective fault recovery.
Recovery is harder, since effectively you need a way to "roll back" to
the state just before the error occurred - this could include rolling
back main memory, but I believe it's still possible.

The same tech would also have advantages for reducing CPU testing and
development time - it wouldn't matter if you happened to happened to
introduce a "pentium divide bug" (http://www.google.co.uk/search?
q=pentium+divide+bug) since the "detection" code would detect the
error and recalculate the result using a slower failsafe mechanism.
Equivalently bugs could be introduced on purpose to increase speed for
the majority of cases - effectively turn on optimizations that don't
work for corner cases.

I'm really looking to see if this idea has been investigated before
and if it's already proven to not add significantly to performance.

If there isn't a consensus that it simply won't work, I might have a
go by making a simple CPU on an FPGA and re-making it with error
detection and recovery and intentionally introducing both random and
systematic errors into the processing core to see how it behaves.
 
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
AW9D-Max and Intel Quad Core CPU's? S. Smith Intel 0 11-15-2007 10:31 PM
AW9D-Max and Intel Quad Core CPU's S. Smith Abit 0 10-31-2007 04:41 PM
SE7525RP2 - which cpu's? ***** charles Intel 2 04-18-2007 04:23 PM
Overclocked CPU's, estimated life??? say E6400 at 3ghz? Lorans7 Intel 0 03-14-2007 12:54 PM
Removing heatsinks and Xeon CPUs without damage qu0ll Intel 2 01-23-2007 06:05 PM


All times are GMT. The time now is 02:55 PM.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43