> On Apr 22, 2024, at 4:59 PM, Chuck Guzis via cctalk <cctalk@classiccmp.org> 
> wrote:
> 
> On 4/22/24 13:53, Paul Koning via cctalk wrote:
>> In COMPASS:
>> 
>> MORE SA1     A1+B2           (B2 = 2)
>>      SA2     A2+B2
>>      BX6     X1
>>      LX7     X2
>>      SB3     B3-2
>>      SA6     A6+B2
>>      SA7     A7+B2
>>      PL      b3,MORE
> 
> My recollection is that putting the stores at the top of the loop and
> the loads at the bottom managed to save a few cycles.  Of course, you
> have to prime the loop...
> 
> --Chuck

Might well be, I don't remember.  Or moving the SB3 (the loop counter) to be 
right after the loads is probably helpful.  The full answer depends on 
understanding the timing, both of the instructions and of the memory references 
that are set in motion by them. 

I never had my hands on a 6600, only a 6400 which is a single unit machine.  So 
I had to do some thinking to understand why someone would do a register 
transfer with L (shift operation) rather than B (boolean operation) when I 
first saw that in my code reading.  The answer is that both instructions take 
300 ns, but they are in different functional units on the 6600 so they can 
start 100 ns apart.

        paul

Reply via email to