From: | glen herrmannsfeldt <gah@ugcs.caltech.edu> |
Newsgroups: | comp.compilers |
Date: | Sat, 29 Mar 2014 03:38:01 +0000 (UTC) |
Organization: | Aioe.org NNTP Server |
References: | 14-03-065 14-03-068 14-03-070 14-03-076 14-03-077 |
Keywords: | errors, history, architecture |
Posted-Date: | 29 Mar 2014 00:54:47 EDT |
Ivan Godard <ivan@ootbcomp.com> wrote:
> On 3/28/2014 4:08 PM, mac wrote:
>> Not quite the same. ON defined a handler invoked at the signal site. It
>> could attempt repair and return. more like an interrupt. However, the
>> typical handler did a non-local GOTO to bail out, clearing any calls
>> between the signal and the gone-to label.
>> I still think that the ability to resume can be useful.
> Useful or no, the ability to resume requires retaining the illusion of
> sequential execution. You have no idea how expensive, in power and
> performance, that illusion is. And it's flat-out impossible on wide
> issue machine such as VLIWs.
That is true, and was already true for the IBM 360/91.
But there are different kinds of exception.
There are software generated exceptions (even if the underlying source
is hardware) that can be resumed. As I noted previously PL/I had
ENDPAGE that allows one to print page headers during I/O operations. A
single I/O statement may produce multiple lines of output, and the
ENDPAGE may occur during that output.
CONVERSION (an illegal character in a numeric field) also can
be corrected and resumed.
But yes, resuming hardware exception is complicated. S/360 required
operands to be properly aligned. It was believe that Fortran required
COMMON blocks to be packed, without any padding, even if alignment
requirements were violated. The fix was an interrupt routine to copy
the operand to a properly aligned buffer, preform the offending
instruction, and then return. That worked (though was very slow) for
most S/360 models, but not at all for the 360/91, which allowed for
out-of-order execution. The address reported for the interrupt might
be nowhere near the offending instruction, and more instructions using
the data might have been executed. Most languages now allow for
padding and data to be aligned.
On the other hand, VLIW is pretty much dead. (I have an actual RX2600
Itanium based system, though don't use it much.)
-- glen
Return to the
comp.compilers page.
Search the
comp.compilers archives again.