Difference between revisions of "ZSeries"

From Lazarus wiki
Jump to navigationJump to search
(Inline constants etc. probably supported by S/390 G3.)
(Note on GCC/Linux requirement)
Line 17: Line 17:
 
These limitations were likely to be particularly severe if a compiler was translating machine-generated source, where functions/procedures might be very large.
 
These limitations were likely to be particularly severe if a compiler was translating machine-generated source, where functions/procedures might be very large.
  
More recent versions of the S/390, probably the G3 manufactured after September 1996, enhance the 32-bit instruction set to allow inline literals and PC-relative jumps. These restrictions do not exist on more recent implementations of the architecture, e.g. the 64-bit zSeries systems.
+
More recent versions of the S/390, probably the G3 manufactured after September 1996, enhance the 32-bit instruction set to allow inline literals and PC-relative jumps. These restrictions do not exist on more recent implementations of the architecture, e.g. the 64-bit zSeries systems, note that GCC v4 and Linux 2.6 appear to assume that the hardware is at least G5 i.e. no older than 2000.
  
 
It is possible to simulate a 32- or 64-bit system using the Hercules emulator, and IBM make machine time available to developers porting code to their systems.
 
It is possible to simulate a 32- or 64-bit system using the Hercules emulator, and IBM make machine time available to developers porting code to their systems.

Revision as of 10:27, 2 December 2010

IBM uses the zSeries designation to indicate an implementation of the system architecture that includes the System/360 (1964), System/370 (1970), System/390 (1990) and others.

The CPU uses a proprietary CISC architecture unrelated to other processors such as the PowerPC which is used in IBM's iSeries (AS/400) and pSeries (RS/6000) systems. Note that these designations are basically marketing terms and as such are somewhat fluid.

The original S/360 architecture had 32-bit integer registers and a 24-bit address space. This has been extended first to support a 31-bit address space and later to support 64-bit registers and address space. In addition many models support paged/expanded memory.

In the 1990s Linux was ported onto the S/390, almost invariably running as a guest/virtualised operating system in the context of a "traditional" host OS. In addition GCC was ported, the paper below discussing some of the problems that were encountered.

Porting GCC to the IBM S/390 Platform

Notable points from this paper are that older versions of the S/390 and its predecessors had two significant limitations that were tolerable when the systems were programmed in assembler but caused significant problems for automatic code generation:

  • Literals had to be in tables rather than inline. Tables were limited to 4K.
  • There were no PC-relative jumps.

These limitations were likely to be particularly severe if a compiler was translating machine-generated source, where functions/procedures might be very large.

More recent versions of the S/390, probably the G3 manufactured after September 1996, enhance the 32-bit instruction set to allow inline literals and PC-relative jumps. These restrictions do not exist on more recent implementations of the architecture, e.g. the 64-bit zSeries systems, note that GCC v4 and Linux 2.6 appear to assume that the hardware is at least G5 i.e. no older than 2000.

It is possible to simulate a 32- or 64-bit system using the Hercules emulator, and IBM make machine time available to developers porting code to their systems.

Installing Debian under Hercules

Community development system

Whether this is relevant to FPC/Lazarus is arguable since the architecture is already supported by GCC Pascal and Pascal-XSC.