My favorite (not!) is MODESET which generates (IIRC) in-line data and a branch 
around it and a LOAD from storage. I know it is nothing but it just annoyed me 
so much that I created my own that uses LHI and no branch.

Charles


-----Original Message-----
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On 
Behalf Of Keith Moe
Sent: Wednesday, August 1, 2018 3:58 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Instruction/Data Cache Usage (was EQU *)

"(working storage or stack storage)"

I interpret this is mean storage that is being ALTERED, not CONSTANTS.  I would 
think that duplicate unchanged cache lines in the instruction and data caches 
would not have the same SERIOUS penalty as altering data would.  But I am not a 
hardware engineer nor do I know if this is true or not.  

I've noticed that IBM has been changing many of their macros to generate fewer 
inline constants with branches around them and use more literals (which can 
sometime surprise you with unexpected addressability problems when the data 
suddenly move from being very local) presumably to reduce the double cache 
usage (with or without the move/copy penalty), but one of the most glaring 
mixture of instructions and data that is (potentially) updated are the CVTEXIT 
and CVTBRET instructions.  Programs invoked via system linkage have Register 14 
pointing to CVTEXIT.  The CVT is in the read/write nucleus and is not even 
cache line aligned!

Reply via email to