Path: utzoo!attcan!uunet!bu.edu!husc6!spdcc!ima!cfisun!stardent!wright From: wright@stardent.Stardent.COM (David Wright @stardent) Newsgroups: comp.arch Subject: Re: PR1ME 32I mode Message-ID: <1990Oct20.221803.5973@Stardent.COM> Date: 20 Oct 90 22:18:03 GMT Organization: Stardent Computer, Newton MA Lines: 112 In article , pcg@cs.aber.ac.uk (Piercarlo Grandi) writes: (>ok> -- Richard O'Keefe) >ok> (Piercarlo Grandi) writes: >pcg> Incidentally, I think a lot of the sophistication in hw >pcg> architectures is there only because of the pride and whim of the hw >pcg> designer ... e.g. the MV/8000 rings, the Pr1me I32 mode, etc... >pcg> "The soul of a new machine" I think is quite revealing on this (the >pcg> 'no mode bit' struggle!). >ok> That's odd, the story I heard from someone wearing a PR1ME badge was >ok> that 32I mode existed because a very large potential customer >ok> demanded it. Not true. The idea originally came from Bill Poduska (one of Prime's founders, now CEO of Stardent). (This was told to me by one of the designers on the scene at the time, Mike Sporer.) >Maybe. But it was never supported... Or maybe it was just because the >architects were ex-MIT/Honeywell/Multics people, even if the original >founders were actually very much into Fortran on the original Honeywell >minis (another sad story -- Digital was not first there). It is not true that 32I mode was never supported, just that it was not used until quite late in the game. By the way, the name of the company is Prime, not Pr1me or PR1ME, so could we all stop being just ever so cute about it? Thank you. >ok> I'm sure that PR1ME's architects were overjoyed to have a chance of >ok> getting the taste of 32V out of their mouths... >Oh yeah, but for a long time 32V was *the* thing. I think indeed they >just did it for personal pride reasons or similar. I very much doubt >that even nowadays PRIMOS (any left? :->) and its languages run in 32I >mode as a matter of course. Well, you are wrong, pal. F77, in particular, produces its best code in 32I mode. Mark Johnson (hi, Mark!) has already discussed Prime and Unix and some of the other history, but nobody has talked much about the instruction set itself, so I guess I'll do that. As has been noted, Prime was founded by a bunch of Honeywell expatriates, and the first machine (Prime 100) was basically a ripoff architecture of the Honeywell 316. As Honeywell added more instructions in its later machines, so did Prime. In fact, there are a lot of instruction modes (many quite similar) on Prime. I no longer have my architecture manual, since I don't work there any more, but I am sure of 16S mode (the original), 16R mode, 32R mode, and 64R. (I'm pretty sure I'm leaving a couple out, but essentially none of this code is used any more, though it can still be run.) These all reflect the size of the address space and the instructions supported. Up to the Prime 300, these were single address spaces of no more than 16 bits (in 64R mode you did get 16 bits). The P400 was the turning point, and introduced 64V mode. 64V provides virtual addressing, with 4096 segments of 64KW (16-bit words) each. It's still a single-accumulator architecture with a couple of index registers. Nascent within the P400, but not enabled, was 32I mode. It had the same address space model, but provided 8 general registers, and 2 (rather than 1) floating point regs. 32I mode was not debugged at FCS, so the first machine that had working 32I mode was the P500, or maybe the P450 (this was all before my time there). 32I mode worked (more or less) in all subsequent machines. However, because Prime uses the same (and I mean identical) OS on the entire product line, you couldn't use 32I mode in Primos as long as the P400 was still a supported product. I finally kicked the "kill the P400" program into gear in 1984 and there is now 32I mode code in Primos (as of Rev 22). I know it's there, because I put it there. (There's more in Rev. 22.1.) There are still a few areas in Primos in which you can't use 32I mode, but that's just a software flaw I didn't have time to fix. The biggest problem is that the system programming language compilers don't generate 32I code, or at least they didn't 18 months ago when I left Prime. >I would have used of course 32I mode. I was told that would not work; >they said that PRIMOS did not use it, nobody used it (in practice only >by special option the Fortran compiler), and so it had never been >debugged, and so was not reliable, and they doubted very much one could >make the machine work fully in 32I mode. They were actually very >embarassed by this, because it meant that theirs were not really 32 bit >systems. Oh, they were 32-bit systems, unless you insist on defining 32-bit systems as "must have general register architectures", which isn't a definition I would care to defend. The embarassment was because the mode didn't completely work. Although I think the only known bugs were some weirdies like unaligned floating loads that crossed page boundaries and page-faulted on the latter part of the operand didn't restart correctly (on the P750/850, that is). The integer instructions worked fine. >If they had been less myopic they could have established a significant >presence in the UNIX market. Unclear. The 50 Series is not a good Unix (or C) engine because the address space isn't really flat and pointer arithmetic doesn't work the way you'd expect. (Primos is still a better OS than Unix in a number of ways, though. I enjoyed working on it.) -- David Wright, Former Primos Wizard, and not officially representing Stardent Computer Inc wright@stardent.com or uunet!stardent!wright I'd explain it to you, but your head would explode. -- Steven Wright