24.05.2014 Views

AIX Version 4.3 Differences Guide

AIX Version 4.3 Differences Guide

AIX Version 4.3 Differences Guide

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

For <strong>AIX</strong>, and the applications that run on <strong>AIX</strong>, the 64-bit PowerPCs have two<br />

important attributes. They are very fast when running as 32-bit processors, and<br />

they offer the opportunity of running a 64-bit environment. <strong>AIX</strong> <strong>4.3</strong> exploits these<br />

attributes separately. There are two different execution environments in <strong>AIX</strong> <strong>4.3</strong>,<br />

the 32-bit execution environment and the 64-bit execution environment. These<br />

two environments are only available for 64-bit hardware. There is no 64-bit<br />

execution environment on 32-bit hardware.<br />

Generally, the <strong>AIX</strong> <strong>4.3</strong> kernel remains 32-bit, and only selected parts, such as the<br />

Virtual Memory Manager, are upgraded to be aware of the 64-bit address space.<br />

This means that the number of <strong>AIX</strong> kernels remains two (uniprocessor and<br />

multiprocessor).<br />

Although there were a number of choices regarding the basic data types of 64-bit<br />

processes, the choice that was made by the Aspen working group, formed by<br />

XOPEN, and a consortium of hardware vendors is called LP64, short for<br />

Long-Pointer 64. This is commonly also called the 4/8/8 model, which stands for<br />

the Integer/Long/Pointer type sizes. The benefit of this configuration is that it<br />

provides 64-bit addressing with 8-byte pointers, large object support (8-byte<br />

longs), and backward compatibility (4-byte integers). Other alternatives included<br />

an 8/8/8 solution, called ILP64, and the LLP64 that were not adapted. Obviously,<br />

the choice for <strong>AIX</strong> was LP64.<br />

3.2 64-Bit Core Design<br />

As stated, the kernel of the <strong>AIX</strong> operating systems remains 32-bit. To allow 64-bit<br />

applications to run and use memory in the 64-bit address space, extensions to<br />

the kernel were introduced. This is discussed in Section 3.2.2, “System Calls” on<br />

page 37. A fundamental change was also introduced in the object module format<br />

that basically enables executables to overcome the size limit of 2 32 bytes. The<br />

subsection on XCOFF addresses these changes.<br />

The implications for device drivers of 64-bit and 32-bit devices in a 64-bit<br />

execution environment are explained in Section 3.2.4, “Device Drivers” on page<br />

49.<br />

The loading of 64-bit modules is shared between kernel-space code and<br />

user-space code. The changes to the loader are discussed in 3.2.5, “Loader” on<br />

page 51.<br />

The Virtual Memory Manager is one of the key parts of the operating system<br />

when it comes to large address space and mapping of virtual to real memory. The<br />

consequences are summarized in the last part of this section.<br />

3.2.1 Segment Register Mapping<br />

Since the 64-bit hardware uses 64-bit effective addresses while operating in<br />

64-bit execution mode, keeping sixteen segment registers would have required<br />

increasing the size of segments proportionally to allow for the increased address<br />

space. This is less useful to applications than increasing the number of segments<br />

in a process' address space. Therefore, segmentation on the 64-bit hardware<br />

remains in units of 256 megabytes. In 64-bit execution mode, the sixteen<br />

segment registers used for 32-bit addressing are replaced with a segment table<br />

(analogous to the hardware page table) that contains up to 256 of the most<br />

64-Bit Enablement 33

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!