A Closer Look at HP PA-RISC [ General Information Manual ] MPE/iX 5.0 Documentation
General Information Manual
A Closer Look at HP PA-RISC
Additional information about PA-RISC is provided below. For more
details, please refer to the HP Precision Architecture Data Sheet.
Instruction set
PA-RISC defines 140 instructions. Each instruction is 32 bits long and
has a fixed format. To minimize complexity and to enable the machine to
be cycled as quickly as possible, the instruction set directly supports
only simple functions. Nonetheless, some of the PA-RISC instructions
provide functions that typically would require multiple instructions on
conventional systems. For example, the add and branch instruction
performs a calculation and a conditional branch in a single cycle. Such
a function on conventional systems typically requires multiple
instructions.
Floating-point instructions
Floating-point calculations are specified by compilers for any high-level
language variables declared by the programmer as real numbers. In
particular, engineering, scientific, and statistical applications often
use floating-point data types. PA-RISC supports single-precision
(32-bit), double-precision (64-bit), and quadruple-precision (128-bit)
arithmetic operations. Floating-point calculations can be performed in
software by a sequence of integer calculations and conversions, but they
can be executed much faster by the floating-point coprocessor hardware.
With a floating-point coprocessor, floating-point calculations can be
performed while the CPU continues to execute in parallel, thus allowing
PA-RISC to provide high performance for applications that use
floating-point calculations.
Data types
PA-RISC supports 16- and 32-bit integers, either signed or unsigned.
Characters are stored as 8-bit quantities, conforming to the ASCII
standard for values 0 through 127 and HP's 8-bit extended Roman 8
character set for values 128 through 255. PA-RISC supports both packed
and unpacked decimal data representations. Single, double, and
quadruple-word floating-point operands are represented in accordance with
the ANSI/IEEE 754-1985 standard.
CPU register set
There are 32 available general-purpose registers, each 32 bits wide, for
holding operands and results of processor computations. Additionally, a
total of 32 control and status registers are available in the CPU for
interrupt processing, virtual memory access protection, and other system
functions. CPU status is maintained in the 32-bit processor status word
(PSW), which reflects the state of key CPU flags and status bits.
Two CPU registers are used to point to the next instruction to be
executed. The instruction address space register (IA Space) points to
the 4-Gbyte space that holds the next instruction. The instruction
address offset register (IA Offset) points to the location within that
space that holds the instruction.
Virtual memory
Virtual memory allows the programmer to use a memory space that is
actually many times larger than the physical memory installed in the
system. The advantage of a virtual memory scheme is that a programmer
generally does not have to be concerned about program or data size
limitations in available memory space. The huge virtual address space
available on the 900 Series systems is fully supported by the operating
system.
Virtual memory is organized as a set of more than four billion linear
regions divided into over 65,000 spaces, with each space 4 Gbytes in
length. Spaces are further divided into fixed-length, 2-Kbyte pages,
which can hold code, data, or both. Space registers hold either 16 bits
(for 48-bit addressing) or 32 bits (for 64-bit addressing), and they are
used to point to the virtual space to be accessed. The specific location
within a space is specified by a 32-bit quantity called the byte offset.
With eight space registers available in the CPU, multiple spaces can be
supported simultaneously.
Figure A-6. Virtual Memory Organization
Virtual address translation
The 48-bit or 64-bit virtual address generated by the processor must be
translated into a physical address that will be transmitted to physical
memory to access the desired code or data. Virtual addresses are
translated to physical addresses by the translation lookaside buffer
(TLB) hardware in the processor. Conceptually, the TLB can be thought of
as a table containing translations for recently accessed virtual pages.
Figure A-7. Virtual Address Translation
Virtual memory access protection
The TLB hardware supports protection mechanisms to ensure that the
currently executing process can perform only the code, data, or I/O
accesses for which it is authorized. Included in the access-checking
mechanisms are four privilege levels. Protection parameters associated
with each page define the privilege level required to access that page
and the types of accesses permitted. For each requested access, these
privilege parameters are checked against the privilege level of the
currently executing process to ensure that the process has sufficient
authorization to perform that access. Additionally, within each
protection access level, there is a 15-bit protection identifier
associated with each page. This identifier, maintained by the operating
system and checked by the TLB hardware, provides the flexibility for data
and code sharing while providing a high level of protection against
unauthorized accesses.
MPE/iX 5.0 Documentation