On Apr 25, 2024, at 4:27 PM, Paul Koning via cctalk
<cctalk(a)classiccmp.org> wrote:
Looking at the webpage for the CDC version, I noticed the comment about SB0 B0 vs. NO and
the "lore" about the divide unit. That issue is reported in Thornton's
book. It wouldn't surprise me if it were a real issue on the "preproduction
serial number 3" system where that code was first created.
It clearly was fixed soon after, though. In the 6600 block diagrams manual where the
flow of the execution machinery is documented in detail, it's quite clear that NO does
not do any functional unit reservations (but SB0 does). So at least starting with serial
number 8, and possibly on earlier machines after suitable FCOs were applied, NO is indeed
the preferred pass instruction. On the other hand, 30 bit pass has by convention been
done with SB0 B0+0, suggesting it's faster to do that than to do two NO instructions.
I guess that's right in the absence of increment unit conflicts: 3 minor cycles for
the SB0 vs. 4 for the pair of NO instructions.
paul
Thinking about the NO instruction: it sure seems odd that it takes 3 cycles given that it
doesn't reserve anything. You'd think it would just take up an issue cycle but
nothing else, i.e., 1 minor cycle total. If that were the case then two NO instructions
would be the correct way to do 30 bit padding.
Curious. Something to look at some day.
paul