This section covers the following topics:
Address Space Overview |
The EV5 address space is divided into two regions using physical address bit [39]. If the address space is clear, then the CPU is accessed to the cached memory space. If it is set, then the accesses are not cached. The uncached space is used to access memory-mapped I/O devices. Mailboxes are not supported. The uncached space contains the CSRs, uncached memory access (for diagnostics), and the PCI address space. The PCI defines three physical address spaces:
In addition to the three PCI address spaces, the CPU's uncached space also is used to generate PCI Interrupt Acknowledge and Special Cycles.
The system can perform two modes of addressing: byte/word disabled (0) and byte/word enabled (1). The mode is controlled by bit 0 (IOA_BEN) of the PYXIS_CTRL1 CSR.
Physical Address Map with Byte/Word Mode Disabled
| CPU Address | Size (GB) |
Selection |
|---|---|---|
| 00.0000.0000 - 01.FFFF.FFFF | 8 | Main Memory |
| 0E.0000.0000 - 0E.FFFF.FFFF | 4 | Dummy Memory Region |
| 80.0000.0000 - 83.FFFF.FFFF | 16 | PCI Sparse Memory Region 0, 512-MB |
| 84.0000.0000 - 84.FFFF.FFFF | 4 | PCI Sparse Memory Region 1, 128-MB |
| 85.0000.0000 - 85.7FFF.FFFF | 2 | PCI Sparse Memory Region 2, 64-MB |
| 85.8000.0000 - 85.BFFF.FFFF | 1 | PCI Sparse I/O Space Region A, 32-MB |
| 85.C000.0000 - 85.FFFF.FFFF | 1 | PCI Sparse I/O Space Region B, 32-MB |
| 86.0000.0000 - 86.FFFF.FFFF | 4 | PCI Dense Memory |
| 87.0000.0000 - 87.1FFF.FFFF | 0.5 | PCI Sparse Configuration Space |
| 87.2000.0000 - 87.3FFF.FFFF | 0.5 | PCI Special/Int. Ack |
| 87.4000.0000 - 87.4FFF.FFFF | 0.25 | PYXIS Main CSRs |
| 87.5000.0000 - 87.5FFF.FFFF | 0.25 | PYXIS Memory Control CSRs |
| 87.6000.0000 - 87.6FFF.FFFF | 0.25 | PYXIS PCI Address Translation |
| 87.7000.0000 - 87.7FFF.FFFF | 0.25 | Reserved |
| 87.8000.0000 - 87.8FFF.FFFF | 0.25 | PYXIS Miscellaneous CSRs |
| 87.9000.0000 - 87.9FFF.FFFF | 0.25 | PYXIS Power Management CSRs |
| 87.A000.0000 - 87.AFFF.FFFF | 0.25 | PYXIS Interrupt Control CSRs |
| 87.B000.0000 - 87.FFFF.FFFF | 1.25 | Reserved |
| Note 1: All addresses in the range of 80.0000.0000 and 8F.FFFF.FFFF are aliased. Address bits 36 through 38 are ignored in the address. | ||
Physical Address Map with Byte/Word Mode Enabled
| CPU Address | Size (GB) |
Selection |
|---|---|---|
| 00.0000.0000 - 01.FFFF.FFFF | 8 | Main Memory |
| 0E.0000.0000 - 0E.FFFF.FFFF | 4 | Dummy Memory Region |
| 80.0000.0000 - 83.FFFF.FFFF | 16 | PCI Sparse Memory Region 0, 512-MB |
| 84.0000.0000 - 84.FFFF.FFFF | 4 | PCI Sparse Memory Region 1, 128-MB |
| 85.0000.0000 - 85.7FFF.FFFF | 2 | PCI Sparse Memory Region 2, 64-MB |
| 85.8000.0000 - 85.BFFF.FFFF | 1 | PCI Sparse I/O Space Region A, 32-MB |
| 85.C000.0000 - 85.FFFF.FFFF | 1 | PCI Sparse I/O Space Region B, 32-MB |
| 86.0000.0000 - 86.FFFF.FFFF | 4 | PCI Dense Memory |
| 87.0000.0000 - 87.1FFF.FFFF | 0.5 | PCI Sparse Configuration Space |
| 87.2000.0000 - 87.3FFF.FFFF | 0.5 | PCI Special/Int. Ack |
| 87.4000.0000 - 87.4FFF.FFFF | 0.25 | PYXIS Main CSRs |
| 87.5000.0000 - 87.5FFF.FFFF | 0.25 | PYXIS Memory Control CSRs |
| 87.6000.0000 - 87.6FFF.FFFF | 0.25 | PYXIS PCI Address Translation |
| 87.7000.0000 - 87.7FFF.FFFF | 0.25 | Reserved |
| 87.8000.0000 - 87.8FFF.FFFF | 0.25 | PYXIS Miscellaneous CSRs |
| 87.9000.0000 - 87.9FFF.FFFF | 0.25 | PYXIS Power Management CSRs |
| 87.A000.0000 - 87.AFFF.FFFF | 0.25 | PYXIS Interrupt Control CSRs |
| 87.B000.0000 - 87.BFFF.FFFF | 0.25 | Reserved |
| 88.0000.0000 - 88.FFFF.FFFF | 4 | PCI Memory Space int8 |
| 98.0000.0000 - 98.FFFF.FFFF (1) | 4 | PCI Memory Space int4 |
| A8.0000.0000 - A8.FFFF.FFFF (1) | 4 | PCI Memory Space int2 |
| B8.0000.0000 - B8.FFFF.FFFF (1) | 4 | PCI Memory Space int1 |
| 89.0000.0000 - 89.FFFF.FFFF | 4 | PCI I/O Space int8 |
| 99.0000.0000 - 99.FFFF.FFFF (1) | 4 | PCI I/O Space int4 |
| A9.0000.0000 - A9.FFFF.FFFF (1) | 4 | PCI I/O Space int2 |
| B9.0000.0000 - B9.FFFF.FFFF (1) | 4 | PCI I/O Space int1 |
| 8A.0000.0000 - 8A.FFFF.FFFF | 4 | PCI Configuration Space, type 0, int8 |
| 9A.0000.0000 - 9A.FFFF.FFFF (1) | 4 | PCI Configuration Space, type 0, int4 |
| AA.0000.0000 - AA.FFFF.FFFF (1) | 4 | PCI Configuration Space, type 0, int2 |
| BA.0000.0000 - BA.FFFF.FFFF (1) | 4 | PCI Configuration Space, type 0, int1 |
| 8B.0000.0000 - 8B.FFFF.FFFF | 4 | PCI Configuration Space, type 1, int8 |
| 9B.0000.0000 - 9B.FFFF.FFFF (1) | 4 | PCI Configuration Space, type 1, int4 |
| AB.0000.0000 - AB.FFFF.FFFF (1) | 4 | PCI Configuration Space, type 1, int2 |
| BB.0000.0000 - BB.FFFF.FFFF (1) | 4 | PCI Configuration Space, type 1, int1 |
| C7.C000.0000 - C7.FFFF.FFFF (2) | 1 | Flash ROM Read/Write Space |
| Note 1: Address bits 37 and 38 are generated by the
EV56 and not by software. Address bits 37 and 38 are used by the EV56 to
indicate to external hardware that this transaction is a byte, word, longword, or quadword operation. Note 2: Read/write to Flash ROM must be done with byte transactions to address range 87.C000.0000 through 87.FFFF.FFFF. All other accesses will produce undefined results. |
||
The CPU has visibility to the complete address space. It can access cached memory, CSRs as well as all the PCI memory, I/O and configuration regions. See Figure 3-1.
The PCI devices have a restricted view of the address space. They can access any PCI device through the PCI memory or PCI I/O space; but they have no access to the PCI configuration space. Furthermore, the system restricts access to the system memory (for DMA operations) through five, programmable "windows" (that is, memory regions) in the PCI memory space. See the figure.
DMA access to the system memory is achieved through "windows" in one of three ways:
The scatter/gather map allows any 8-KB PCI memory address region (page) to be re-directed to any 8-KB cached memory page, as shown below.
PCI address Space |
The system generates 32-bit PCI addresses but accepts both 64-bit address (double address cycle [DAC] ) cycles and 32-bit PCI address (single address cycle [SAC] ) cycles. The process of accessing main memory is as outlined next:
When the system is initialized by the SROM code, the windows are configured as follows:
| PCI Window | Assignment | Size | Comments |
|---|---|---|---|
| 0 | Scatter/Gather | 8-MB | Not used by firmware. MEMCS disabled |
| 1 | Direct Mapped | 1GB | Mapped to 0 to 1-GB of main memory |
| 2 | Disabled | ||
| 3 | Disabled | ||
CPU Address Space |
The following figure shows an overview of the mapping of the 40-bit processor physical address space into memory and I/O space addresses:
39 34 33 32 31
+---+---+---+--+--+--+--+------------------------------+
| | |SBZ| | | | | |
+---+---+---+--+--+--+--+------------------------------+
/\- - - - - - - - - +--------+
| 0 0 x x | | 8-GB Cached
| +--------+ Memory
| | |
<39>=0= Cached |Reserved|
| Memory | |
| Space | |
| | |
| | |
\/ | |
- - - - - - - - - - +--------+ - - - - - -
/\ 0 x x x | | 80.0000.0000 /\
| | | |
| | 16-GB | |
| | | PCI Memory
| | | Sparse Space
| | | 704-MB Max
| +--------+ |
| 1 0 0 x | 4-GB | 84.0000.0000 |
<39>=1= Uncached | | |
| I/O Space +--------+ |
| 1 0 1 0 | 2-GB | 85.0000.0000 \/
| +--------+ - - - - - - -- - -
| 1 0 1 1 | | 85.8000.0000 PCI Sparse
| | | I/O 64-MB
| +--------+
| 1 1 0 x | | 86.0000.0000 PCI Dense
| | | Memory 4-GB
| +--------+
\/ 1 1 1 x | | 87.0000.0000 PCI Config
- - - - - - - - - - +--------+ CSRs, and
flashROM
The preceding figure shows how the CPU address map translates to the PCI address space as well as how the PCI accesses the CPU memory space through DMAs. Notice how the PCI memory space is double-mapped by dense and sparse space. The rationale behind the CPU I/O address map is as follows: (1) To provide 4 GB of dense space to completely map the 32-bit PCI memory space and (2) To provide abundant PCI sparse memory space since sparse-space has byte granularity and is the safest memory-space to use (for example, no prefetching). Furthermore, the larger the space, the less likely software will need to dynamically relocate the sparse space segments. The main problem with sparse space is that it wastes CPU address space (for example, 16 GB of CPU address space maps to 512 MB of PCI sparse space). The system provides three PCI memory, sparse-space regions, allowing 704 MB of total sparse memory space. The three regions are relocatable through the HAE_MEM CSR, and the simplest configuration allows for 704 MB of contiguous memory space. (a) 512 MB region, which may be located in any naturally aligned 512-MB segment of the PCI memory space. This region may be sufficient for software. (b) 128-MB regions, which may be located on any naturally aligned 128-MB segment of the PCI memory space. (c) 64-MB region, which may be located on any naturally aligned 64-MB segment of the PCI memory space. Limit the PCI I/O space to sparse space: although the PCI I/O space can handle 4 GB, the Pentium chip can access only 64 KB. Consequently, most, if not all, PCI devices will not exceed 64 KB for the foreseeable future. The system provides 64 MB of sparse I/O space because the hardware decode is faster. The system provides two PCI IO sparse-space regions: region A, which is 32 MB and is fixed in PCI segment 0-32 MB; and region B, which is also 32 MB, but is relocatable using the HAE_IO register.