Regarding item 2: Circa 1984 when 370/XA was announced, I was working for an 
IBM competitor (Amdahl), and we did a fairly thorough analysis of the rationale 
for the 31-bit architecture. Somewhere around 1981, IBM had extended the real 
addressability of the 370 architecture with 26-bit real addressing, but this 
did nothing to extend the 16-bit virtual limits of individual address spaces 
... and it was a very short-lived dodge around what was really needed.

One of the key design features of 370/XA was the ability of a problem-state 
program to switch between 24- and 31-bit addressing mode without any 
operating-system assistance. To that end, BASSM and BSM were introduced with 
the intent that they be the principle call/return instructions for all new 
programs. (see SA22-7085-01 p. 5-9). In order to make this fly without a 
drastic redesign of call/return conventions, there needed to be a way to retain 
and restore the AMODE of the caller ... without any additional baggage in the 
register save area. Stealing bit 0 of an otherwise 32-bit address was the easy 
solution. (And, of course, few people imagined needing more than 2 G-bytes 
virtual back then.)

With the advent of z/Architecture, a similar means of problem-state linkage — 
and AMODE switching — was needed, but now it had to accommodate three AMODEs. 
Utilizing bit 63 of the instruction address (which, because instructions are 
always on a halfword boundary, could never be used to address an instruction) 
proved to be an interesting hack to accommodate the 64-bit AMODE.

Had the 370/XA designers used the rightmost bit of the instruction address (bit 
31 at the time) for the AMODE 24/31 differentiator, it might have provided 4 
G-byte address spaces and extended the life of XA and ESA for a few more years. 
In that case, z/Architecture could have used bit 0 of the instruction address 
for the 64-bit indicator. With 20-20 hindsight, this might have made more sense 
since XA only extended addressing by 128 times, whereas z/Architecture extended 
addressing by a factor of 8 billion, so stealing bit 0 of a z/Architecture 
address seems to make more sense.

However, 20 years after the introduction of z/Architecture — and nearly 40 
years after the introduction of 370/XA, this is water over the dam / under the 
bridge / down the drain (pick your analogy).

Reply via email to