OpenCores
URL https://opencores.org/ocsvn/mpmc8/mpmc8/trunk

Subversion Repositories mpmc8

[/] [mpmc8/] [trunk/] [rtl/] [mpmc10/] [README.md] - Diff between revs 5 and 11

Only display areas with differences | Details | Blame | View Log

Rev 5 Rev 11
# MPMC10 - Multiport Memory Controller
# MPMC10 - Multiport Memory Controller
## Overview
## Overview
The multi-port memory controller provides eight access ports with either small streaming read caches or a 64kB shared read cache to the ddr3 ram. The multi-port memory controller interfaces between the SoC and a MIG controller.
The multi-port memory controller provides eight access ports with either small streaming read caches or a 64kB shared read cache to the ddr3 ram. The multi-port memory controller interfaces between the SoC and a MIG controller.
Ports may be customized with parameter settings. Port #5 is setup to handle sprites and is read-only.
Ports may be customized with parameter settings. Port #5 is setup to handle sprites and is read-only.
## New Features
## New Features
* Version 10 of the controller supports a larger system cache and the cache now supports write operations.
* Version 10 of the controller supports a larger system cache and the cache now supports write operations.
* The controller now has an input fifo to queue requests to improve performance.
* The controller now has an input fifo to queue requests to improve performance.
* All ports are now 128-bit.
* All ports are now 128-bit.
* Ports are serviced in a round-robin fashion.
* Ports are serviced in a round-robin fashion.
# Cache / Streaming Cache
# Cache / Streaming Cache
The cache is a 64kB 4-way associative cache which may be shared between ports. The cache line size is 16 bytes. The cache allows ports to read in parallel but only supports a single write port.
The cache is a 64kB 4-way associative cache which may be shared between ports. The cache line size is 16 bytes. The cache allows ports to read in parallel but only supports a single write port.
The streaming caches are much smaller read caches. They are useful when the data is generally read and used only once, as for a frame buffer for instance. The streaming caches are an alternative to making the read cache multi-way associative, and effectively add ways to the cache reads.
The streaming caches are much smaller read caches. They are useful when the data is generally read and used only once, as for a frame buffer for instance. The streaming caches are an alternative to making the read cache multi-way associative, and effectively add ways to the cache reads.
Streaming caches are typically loaded using large data bursts. They are setup for 64 beat bursts which load 1kB of data. Given the large burst size and small cache size there are only a handful of cache tags required which helps to reduce the footprint.
Streaming caches are typically loaded using large data bursts. They are setup for 64 beat bursts which load 1kB of data. Given the large burst size and small cache size there are only a handful of cache tags required which helps to reduce the footprint.
## Suggested Port Usage
## Suggested Port Usage
|Port|Use                             |Port Bits|Common  Cache|Stream Buffer|
|Port|Use                             |Port Bits|Common  Cache|Stream Buffer|
|----|--------------------------------|---------|-------------|-------------|
|----|--------------------------------|---------|-------------|-------------|
| 0  |Frame Buffer / Bitmap Controller|   128   |             |      *      |
| 0  |Frame Buffer / Bitmap Controller|   128   |             |      *      |
| 1  |CPU #1                          |   128   |      *      |             |
| 1  |CPU #1                          |   128   |      *      |             |
| 2  |Ethernet Controller             |   128   |      *      |             |
| 2  |Ethernet Controller             |   128   |      *      |             |
| 3  |Audio Controller                |   128   |             |      *      |
| 3  |Audio Controller                |   128   |             |      *      |
| 4  |Graphics Accelerator            |   128   |      *      |             |
| 4  |Graphics Accelerator            |   128   |      *      |             |
| 5  |Sprite Controller               |   128   |             |      *      |
| 5  |Sprite Controller               |   128   |             |      *      |
| 6  |SD (disk) Controller            |   128   |      *      |             |
| 6  |SD (disk) Controller            |   128   |      *      |             |
| 7  |CPU #2                          |   128   |      *      |             |
| 7  |CPU #2                          |   128   |      *      |             |
## Port Priorities
## Port Priorities
Ports are serviced in a round robin fashion.
Ports are serviced in a round robin fashion.
## Clocks
## Clocks
Each port may have it own clock. Clock domain crossing logic is present for incoming and outgoing signals. The controller's clock typically runs at 1/4 the PHY clock or 100MHz. The port clocks may be a different frequency.
Each port may have it own clock. Clock domain crossing logic is present for incoming and outgoing signals. The controller's clock typically runs at 1/4 the PHY clock or 100MHz. The port clocks may be a different frequency.
## Memory Access
## Memory Access
Memory is accessed in strips of 16 bytes which is the size that MIG interface uses. Specifying multiple strips for reading will use a burst of strips which is a much faster way to access memory.
Memory is accessed in strips of 16 bytes which is the size that MIG interface uses. Specifying multiple strips for reading will use a burst of strips which is a much faster way to access memory.
 
 
 
## Atomic Memory Operations
 
The controller can perform several atomic memory operations including add, swap,
 
and, or, eor, min, max, and shifts. It may also perform the compare-and-swap
 
operation.
 
 
## Address Reservations
## Address Reservations
The controller supports address reservations on memory for imnplementation of semaphores. The CPU must output address reservation set and clear signals to support this.
The controller supports address reservations on memory for imnplementation of semaphores. The CPU must output address reservation set and clear signals to support this.
## Parameters
## Parameters
STREAMn - cause port number 'n' to use a streaming cache instead of the main cache
STREAMn - cause port number 'n' to use a streaming cache instead of the main cache
NAR     - sets the number of outstanding address reservation that are present, this should be a small number (eg. 2)
NAR     - sets the number of outstanding address reservation that are present, this should be a small number (eg. 2)
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.