3.3. Memory Protection Unit
The Nios II processor provides an MPU for operating systems and runtime
environments that desire memory protection but do not require virtual memory
management. For information about memory protection with virtual memory
management, refer to the Memory Management Unit section.
When present and enabled, the MPU monitors all Nios II instruction fetches and data
memory accesses to protect against errant software execution. The MPU is a hardware
facility that system software uses to define memory regions and their associated
access permissions. The MPU triggers an exception if software attempts to access a
memory region in violation of its permissions, allowing you to intervene and handle
the exception as appropriate. The precise exception effectively prevents the illegal
access to memory.
The MPU extends the Nios II processor to support user mode and supervisor mode.
Typically, system software runs in supervisor mode and end-user applications run in
user mode, although all software can run in supervisor mode if desired. System
software defines which MPU regions belong to supervisor mode and which belong to
user mode.
MPU protects user application. Therefore for interrupt service, the system must have
access to the regions that may cause potential violation because MPU generates
exception post access and does not prevent access to the memory region in hardware.
Related Information
Memory Management Unit
on page 37
3.3.1. Memory Regions
The MPU contains up to 32 instruction regions and 32 data regions. Each region is
defined by the following attributes:
•
Base address
•
Region type
•
Region index
•
Region size or upper address limit
•
Access permissions
•
Default cacheability (data regions only)
3.3.1.1. Base Address
The base address specifies the lowest address of the region. The base address is
aligned on a region-sized boundary. For example, a 4-KB region must have a base
address that is a multiple of 4 KB. If the base address is not properly aligned, the
behavior is undefined.
3.3.1.2. Region Type
Each region is identified as either an instruction region or a data region.
3. Programming Model
NII-PRG | 2018.04.18
Nios II Processor Reference Guide
43