comp.lang.ada
 help / color / mirror / Atom feed
From: Brian Drummond <brian@shapes.demon.co.uk>
Subject: Re: Verified compilers?
Date: Fri, 9 Mar 2012 21:51:50 +0000 (UTC)
Date: 2012-03-09T21:51:50+00:00	[thread overview]
Message-ID: <jjdu1m$r1$3@dont-email.me> (raw)
In-Reply-To: 23491947.985.1331304183125.JavaMail.geo-discussion-forums@ynlt17

On Fri, 09 Mar 2012 06:43:03 -0800, Shark8 wrote:

> On Friday, March 9, 2012 7:56:34 AM UTC-6, Brian Drummond wrote:
>> 
>> There was a lot of interesting hardware at the time. I was intrigued by
>> the similarity between Transputer and Lilith instruction formats, which
>> might be worth re-examining where code density (or making it fit in
>> cache) is important.
>> 
>> - Brian
> 
> Which others of those interesting technologies (or the idea behind them)
> do you suppose was a missed opportunity?

Well, the Linn Rekursiv of course!

Realistically - I don't know. At the time I postulated that RISC (as it 
was then) was a flash in the pan, taking advantage of short term 
opportunities (limited transistor count - wasting some on complex 
decoders or features really could hurt performance) and I still do.

I knew that longer term, some form of CISC would win out - but I imagined 
a cleaner design with hindsight to inform it, not an 8086 with layers 
upon layers of add-ons! And like others here, I regretted that the 80286 
segment debacle got in the way of exploiting segments (or Rekursiv 
objects) to provide so much of the protection we need.

(Aside : I remember a campfire conversation 20 years ago in Wyoming where 
- quite unexpectedly - I met a guy from ARM, when I argued that RISC 
would always have a disadvantage from fixed length instructions : you 
want something like Huffman encoding so the commonest symbols are 
shortest, like push/pop and other 1-byte insts on x86. Fixed instructions 
play to early RISC's limited transistor count; longer term, a few 
thousand gates for decoding aren't even worth counting)

So I think the biggest lost opportunity was that the Hennessy/Patterson 
orthodoxy became so dominant. They're not wrong : you can optimise what 
you have by measuring any feature's benefit, and cost. However...

One trouble is, their measure of benefit tends to be performance (because 
it is easy to measure) and not safety, ease of use, security, bug count, 
ease of debugging (all of which are harder).

Another is, you can't measure a design you haven't built yet. ("Built" 
can include simulation for this purpose). And you can't build a new 
design if you can't prove it will be better. (And even if you build it, 
all the benchmarks are in C, which is too low level to exploit more 
sophisticated hardware) And you can't prove it will be better if you 
can't measure its performance...

So I think it has funneled design to some local peak on the landscape, 
but made it impossible to jump across the valleys to other mountain 
ranges.

In language of the time, the big problem (or "problem") addressed by Lisp 
machines and the Rekursiv - and the Transputer in its own way - was 
"bridging the semantic gap" between high level languages, and the 
primitive machine operations. Alas, we have eliminated the semantic 
gap ... by programming in C.

So the Transputer for example provided means for parallel programming - 
directly supported in hardware, by simple interconnections between 
multiple chips. (Oddly enough, the fact that a single T414 in 1985 ran at 
20MHz when other CPUs struggled to 10MHz seems to have been lost) 
I believe it was also the first CPU to divorce the core clock (20MHz) 
from the motherboard clock (5 MHz) so that faster chips need only change 
the clock multiplier. 

But I digress. Coming back on topic, if the orthodoxy had embraced that, 
we would certainly be a lot further ahead now that transistor budgets are 
screaming for multicore - and the market would need a language that 
really understood multiprocessing...

I'll leave the Rekursiv for another time. It demonstrated a lot of 
unorthodox ideas, many of which have potential value. But it was a 
prototype, developed by a tiny team working fast, focused on the new 
ideas rather than ultimate performance. (So a lot of basic ideas, like 
pipelining or caches, were ignored - unless you could implement them in 
microcode.)

Two things it taught me : (1) you can't beat hardware support when you 
need performance. (2) If the hardware support isn't what you wanted, you 
lose that advantage.

Putting those together in 1990, and revisiting the FPGA, was quite an eye-
opener. Previously, I thought that an ASIC that forgot what it was when 
you switched the power off, was a REALLY DUMB idea...

> I remember reading about the Lisp-Machines that came out, and some of
> the development tools they had. The "step into / modify [executing]
> code" debugging seems worlds ahead of anything I've seen on the *nix
> front (admittedly only a cursory glance) and substantially ahead of the
> windows debuggers. (MS's .NET debugging w/ VS doesn't allow for
> on-the-fly modification; Borland's Delphi debugger allowed you to modify
> variables / registers on-the-fly, IIRC.)

Today you would have to sandbox such a debugger, in such a way that you 
could guarantee its execution of modified code wasn't exploited by bad 
people.

- Brian



  reply	other threads:[~2012-03-09 21:51 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-21 15:42 Verified compilers? Yannick Duchêne (Hibou57)
2012-02-24  1:41 ` Shark8
2012-02-24  8:52   ` Georg Bauhaus
2012-02-24 17:36   ` Peter C. Chapin
2012-03-06  1:27 ` Randy Brukardt
2012-03-06 17:24   ` Shark8
2012-03-06 17:43     ` Dmitry A. Kazakov
2012-03-06 19:03       ` Shark8
2012-03-07  5:33       ` Yannick Duchêne (Hibou57)
2012-03-07  9:12         ` Dmitry A. Kazakov
2012-03-07 17:49           ` Niklas Holsti
2012-03-07 20:17             ` Dmitry A. Kazakov
2012-03-07 23:28               ` Usefulness of Formal Notions in Programming (was: Verified compilers?) Georg Bauhaus
2012-03-08  9:24                 ` Usefulness of Formal Notions in Programming Dmitry A. Kazakov
2012-03-08 10:30                   ` Nasser M. Abbasi
2012-03-08 12:37                     ` Dmitry A. Kazakov
2012-03-08  0:42               ` Verified compilers? Randy Brukardt
2012-03-08  9:25                 ` Dmitry A. Kazakov
2012-03-08 18:10                   ` Niklas Holsti
2012-03-08 20:41                     ` Dmitry A. Kazakov
2012-03-08 18:02               ` Niklas Holsti
2012-03-08 20:40                 ` Dmitry A. Kazakov
2012-03-09  0:44                   ` Georg Bauhaus
2012-03-09 22:13                   ` Niklas Holsti
2012-03-10 10:36                     ` Dmitry A. Kazakov
2012-03-10 20:35                       ` Niklas Holsti
2012-03-11  9:47                         ` Dmitry A. Kazakov
2012-03-11 22:22                           ` Niklas Holsti
2012-03-12  5:12                             ` Niklas Holsti
2012-03-12  9:43                             ` Dmitry A. Kazakov
2012-03-14  8:36                               ` Niklas Holsti
2012-03-14  9:24                                 ` Georg Bauhaus
2012-03-14 11:14                                   ` REAL (was: Verified compilers?) stefan-lucks
2012-03-14 12:59                                     ` REAL Dmitry A. Kazakov
2012-03-14 13:30                                       ` REAL Georg Bauhaus
2012-03-14 13:51                                         ` REAL Dmitry A. Kazakov
2012-03-14 20:37                                           ` REAL Brian Drummond
2012-03-14 21:52                                             ` REAL Dmitry A. Kazakov
2012-03-14 13:52                                         ` REAL georg bauhaus
2012-03-14 17:42                                         ` REAL Jeffrey Carter
2012-03-14 10:14                                 ` Verified compilers? Dmitry A. Kazakov
2012-03-14 20:13                                   ` Niklas Holsti
2012-03-11 10:55                         ` Georg Bauhaus
2012-03-10 13:46                     ` Brian Drummond
2012-03-07  1:00     ` Randy Brukardt
2012-03-07 12:42   ` Stuart
2012-03-08  1:06     ` Randy Brukardt
2012-03-08  9:04       ` Jacob Sparre Andersen
2012-03-08  9:37         ` Dmitry A. Kazakov
2012-03-08 11:23           ` Simon Wright
2012-03-08 12:27             ` Dmitry A. Kazakov
2012-03-08 10:23         ` Brian Drummond
2012-03-08 23:38           ` Bill Findlay
2012-03-09 13:56             ` Brian Drummond
2012-03-09 14:43               ` Shark8
2012-03-09 21:51                 ` Brian Drummond [this message]
2012-03-09 15:49               ` Bill Findlay
2012-03-09 20:34                 ` Brian Drummond
2012-03-09 19:40               ` Jeffrey Carter
2012-03-09 20:39                 ` Brian Drummond
2012-03-09 23:59               ` phil.clayton
2012-03-08 15:23         ` Peter C. Chapin
2012-03-09  2:04         ` Randy Brukardt
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox