Thank you for mentioning the issue with CS/CDS. I have always understood that if you use PLO anywhere to serialize access to an area, you must use it everywhere to serialize access to that area. It's nice to know that the transactional facility serializes it against CS as well. I wish I had access to a processor to play with it.
I always understood that the reason PLO did a memory serialization at the end of a PLO was to insure that any processors that were referencing the swap word(s) in a compare and swap would get consistent results; either the swap value(32, 64 or 128) before the swap or after the swap. Since the swap value is always stored last and provided you always loaded the swap value first, you would either get the correct swap and store values and the subsequent PLO would succeed or you would get an outdated swap value with inconsistent store values and the subsequent PLO would return a CC to re-drive. I have written software traces for PLO and my observations have supported this understanding of the POM's description of PLO and memory serialization. Is this your understanding? I often use 128 bit operations with consecutive words and double words to perform some sophisticated operations. I've understood about double word consistency. I've always assumed that PLO 128 bit required quad-word alignment for 128 bit operations for the same reason. I always load the swap value (in any flavor compare and swap and store) first. I always use a LMG (even if its consecutive words) and I always insure that the primary counter is in the first double word. I've read the POM many times looking for any references to quad-word consistency. It doesn't really matter because of the way I design PLO compare and swaps but I was wondering if there was quad-word consistency as well? -----Original Message----- From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of Peter Relson Sent: Wednesday, November 06, 2013 6:37 AM To: [email protected] Subject: Re: Serialization without Enque One of the shortcomings of PLO (unlike TBEGIN(C) ) is that PLO in general serializes only against other uses of PLO. It does not serialize against CS on the same storage, for example. However, cache considerations and doubleword consistency still come into play. A LM of 2 words of a doubleword is done with what is referred to as "doubleword consistency". That matters. If you need to load two consecutive words and you can arrange that those two words are in the same doubleword, it can be to your advantage. It's why in a doubleword serialized by CDS you do not typically (if ever) want to load both of the individual words consecutively (as you might get results that come half from one CDS and half from another CDS); you want to use LM. Peter Relson z/OS Core Technology Design ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
