Skip to content
This repository has been archived by the owner on Sep 17, 2024. It is now read-only.

BBB_cci_mpf

Michael Adler edited this page Sep 18, 2017 · 1 revision

Memory Properties Factory (MPF)

The semantics of CCI-P transactions are deliberately simple. Channel 0 (system memory read) and channel 1 (system memory write) are completely unordered. Unlike traditional CPU memory interfaces, CCI-P even offers no order guarantee for a pair of memory writes to the same address! This decision is dictated by the reality of spatial logic: any FPGA area devoted to guaranteeing memory order takes away area that could be made available to user logic. The platform bitstream (blue bitstream) satisfies only the memory requirements common to all applications. These primitive CCI-P semantics are sufficient for kernels that read state from one buffer, compute and then stream out the result to another buffer. In addition to lack of order, CCI-P addresses are all physical and memory is allocated at page granularity — a restriction that can make large buffer management or pointer sharing with a software process difficult.

Some AFUs may require more complex memory semantics. Applications may depend on ordered read responses or ordered writes to the same address. Other features, such as virtual addressing with large buffer support may also be required.

Even AFUs with complex memory dependencies will likely require only a subset of the available options. Just as CCI-P is designed to minimize FPGA area, an ideal AFU-specific memory interface will implement only the features required by a given AFU. This is the strategy employed by MPF.

MPF is a collection of shims that transform CCI-P. The shims both consume and produce CCI-P structures, transforming the semantics of the interface without significant changes to the interface structures themselves. MPF components include:

MPF Topics

Clone this wiki locally