About 2 months ago, Marcel Mitran (current CTO of IBM LinuxOne) and David Edelsohn (current CTO of GCC technology) asked me if we had any documentation to help development teams outside of IBM, that are working with LinuxOne and its related open source ecosystems, in terms of understanding and optimizing for our z microprocessors. Across the development teams, we have published presentations and detail papers in IEEE Micro magazines, IBM's Journal of Research and Development, and other conferences. However, we didn't have any readily available documentation for external use in this specific area. So, I started putting together a presentation (from various sources that I could get my hands on) in this area.
Performance comes from a combination of hardware and software, and best performance is achieved when these are well-matched. My goal is that the presentation can be read and be easily understood by anyone interested in writing/generating code (binary code) for programs that are / will be running in the latest z System mainframes. And as a result of reading this presentation, the reader can have an understanding of the basic mechanics behind the microprocessor, and have a feel on where/how to work the optimizations.
This presentation covers z13 (IBM's latest z machine) in some details, but also included references back to the prior 3 generations: z10, z196 and zEC12. It is by no means a comprehensive document and should only be used as an introduction to our architecture and design. If there are materials (and interests) for an update, either for more in-depth topics, summaries of Q&As (from this forum or other means), or introduction of new machines after z13, a newer version can be published.
Enjoy, and please feel free to add your feedback here.
Lastly, thanks to all the IBMers who had helped reviewing this presentation for content and accuracy. Your help is truly appreciated.