Extremely CISC instructions
Paul Koning
paulkoning at comcast.net
Mon Aug 23 20:09:55 CDT 2021
> On Aug 23, 2021, at 8:38 PM, Tom Stepleton via cctalk <cctalk at classiccmp.org> wrote:
>
> Hello,
>
> For the sake of illustration to folks who are not necessarily used to
> thinking about what computers do at the machine code level, I'm interested
> in collecting examples of single instructions for any CPU architecture that
> are unusually prolific in one way or another.
> ...
> Although I don't know it well, I suspect VAX will place well in one way or
> another.
Indeed. Just its addressing modes, with indirection and two separate register indexing operations, are hairy enough. Then consider the decimal arithmetic instructions that might have up to 6 operands.
It also has instructions whose encoding isn't so exotic but what they do is. The CRC instruction is one example, the POLY ones another. Then there are the save and load process context instructions, which copy a rather large data structure full of different items between memory and the CPU privileged state.
Going back a decade or two we have the IBM 1620, in which arithmetic and I/O operations operate on variable length data. That includes floating point (with variable length mantissa). Want to use 40 digit float precision? No problem, you're still just dealing with a single instruction to do the operation. It might take a while, of course...
Not quite so extreme is the Exchange instruction on the CDC 6000 series machines, analogous to the VAX save/load process context instruction but with the two operations done together. That is a big win in that era with core memory, because the whole operation is just one pass through the data structure, doing read of the new state and write back of the old state, 100 nanoseconds per word of state. Unlike the VAX the state struct ("exchange packet") is relatively small, just 16 words.
paul
More information about the cctech
mailing list