FWIW
 
On the Hitachi Skyline bipolar mainframe (from 1995), the instruction
processor speeds were:
- RR: 3ns.
- SS: 6-10ns if L2 cached, else 60-80ns if data-fetched from central
storage.
 
On IBM's CMOS G4 mainframes:
- RR: 20ns approx.
- SS: no idea, did not check.
 
IBM said it had 'improved' its CMOS processors since then, but I do not
know whether this includes 'improved' RR times.
 
As regards loops, try to ensure that they fit entirely within the
instruction register (was 128 bytes) to avoid instruction cache faults. 
 
E.g. try something like the following (adjust as required) to see what
happens with instruction cache faults:
WHATEVER CSECT                     OUR ENTRY POINT
         USING WHATEVER,15         USE R15 AS OUR BASE REGISTER
INIT     STM   14,12,12(13)        STORE CALLER'S REGISTERS
         ST    13,SAVEAREA+4       OUR BACKWARD POINTER
         LR    4,13                USE R4 AS TEMP CALLER'S R13
         LA    13,SAVEAREA         USE R13 FOR OUR SAVEAREA
         ST    13,8(4)             CALLER'S FORWARD POINTER
         LHI   4,4096*512          USE R4 AS OUTER LOOP COUNTER
*
OUTLOOP  CNOP  0,4                 OUTER LOOP START
         LHI   5,4096*1024         USE R5 AS INNER LOOP COUNTER
*
INLOOP   CNOP  0,4                 INNER LOOP START
B        CONTINUE                  BRANCH PAST INSTRUCTION CACHE STORAGE
IN       DS    F                   STORAGE INSIDE INSTRUCTION CACHE
CONTINUE DS    0F                  NOW CARRY ON
         ST    5,OUT               STORE R5 OUTSIDE THE INSTRUCTION
CACHE  <--
*        ST    5,IN                STORE R5 INSIDE  THE INSTRUCTION
CACHE  <--
         BCT   5,INLOOP            DECREMENT AND BACK TO INNER LOOP
         BCT   4,OUTLOOP           DECREMENT AND BACK TO OUTER LOOP
FILL     DS    XL(132+WHATEVER-*)  FILL UP THE INSTRUCTION CACHE
OUT      DS    F                   STORAGE OUTSIDE INSTRUCTION CACHE
SAVEAREA DS    18F                 OUR REGISTER SAVE AREA
*
EXIT     L     13,4(13)            RESTORE CALLER'S REGISTERS
         LM    14,12,12(13)
         BR    14                  BACK TO CALLER
         END   WHATEVER            START AT WHATEVER'S EP

An above "ST   5,IN" causes an instruction cache fault at every INLOOP
iteration, which results in approx 20 times more CPU than the "ST   5,OUT".
 
When possible use registers instead of L2 cache for temporary storage,
because registers (RR) are much faster than storage to storage
operations (SS).
 
Avoid MVCL: use MVC iteratively in a loop.
 
HTH. 
 
Cheers, Chris Poncelet (retired sysprog)

 
 
 


On 13/08/2019 16:39, Steve Smith wrote:
> Write good code and forget about instruction timings.  With any luck your
> code will have to perform on several generations of architecture and
> machines.
>
> There's a big difference between B- (base-index-displacement) branches and
> J- (or BR-) (relative address) instructions.  Surely by now, this should go
> without saying.  Regardless of whether they're "faster" or not, they are
> much better, and as that is well-documented, I won't belabor it.
>
> sas
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> .
>


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to