An Overview on Graph Memory Engine – Part 3 of 3

By Michael Miller

Chief Technology Officer

MoSys, Inc.

MoSys has developed Application-Specific Accelerator Platforms for growing applications that require functions such as packet filtering, packet forwarding and data analytics. Each platform includes an application-specific Virtual Accelerator Engine and software for programing the engine. The software works as an adaption layer between new and existing software environments and the Virtual Accelerated Engines. The Graph Memory Engine (GME) represents a specific memory of the family of Virtual Accelerator Engines developed to accelerate the processing of data structures. This can be represented as graphs. Part 1 of this blog focused on the execution of GME technology. Part 2 featured API and GME implementations. Now Part 3 will cover RLT, GME interface and platform details.

Graph Execution

The data on the graph execution side is inputted as a vector of bits which can be accessed with a bit position which is an offset from the lsb and a size expressed in bits. The input can be organized as bytes (B0 to B2n-1) and words dependent on the implementation but should always be thought of as a bit vector with a maximum size of 512b (n=6) stored as a Big Endian structure.


The GME API is implemented as described above and directly translates into GM and GME configuration. There are other functions for initializing the GME_API to allocate memory etc.

The GME will use the graph ID to identify the first node which specifies the first operation to be performed. From there, the GME walks the graph executing which ever operation is specified by the current node. The Thread ID is used to specify both a unique context. In the single thread mode of the software, it is not returned. However, in the RTL implementations it is returned. Upon start of execution, there is a local context which will be cleared, including the space for the return vector. It is assumed there could be a global context which persists between graph executions for implementing such things as counters.

RTL Module Interface

The RTL Module uses two styles of interface: Streaming for input and output vectors and memory read/write interface for the actual GM.

The control plane interface will come through the read/write channels. The address space of the interface is broken into two: Direct Map access of the GM in raw format and Register Space for atomic access to nodes stored in the GM. The Direct Map is meant for debugging purposes and will vary by implementation and memory type.  The Register Space is common between all implementations. 

Development and Evaluation Platform

The GME can be evaluated as a software version of a hardware version using development cards plugged into servers with PCIe busses. Initial FPGA hardware deployments can be found on the MoSys Cheetah accelerator development card and the Intel S10 MX. Centos operating system hosts a MoSys development environment name Coaster which provides a Python shell to be used as a development and evaluation environment. Demonstration code, out of the box, can be run on the development card to ensure proper installation and operation.

Developers have access to the GME API in Python language in order to create and run test cases of their own. The hardware version provides a time stamp environment to measure latency and throughput.

Packet Classification Platform

A platform is composed of Software to configure the GME, adaption layer software and the family of GME implementations from pure software on a server to FPGA hardware with PHE and implementations in-between. The platform also includes drivers and GME versions that can run on MoSys’ Accelerator Development Kit boards plugged into a PCIe slot in a server where the GME runs in a PHE.

Additional Resources:

Part 1 of this blog focused on the execution of GME technology. Part 2 featured API and GME implementations. Finally, Part 3 covered RLT, GME interface and platform details. If you are looking for more technical information or need to discuss your technical challenges with an expert, we are happy to help. Email us and we will arrange to have one of our technical specialists speak with you.  You can also sign up for updates. Finally, please follow us on social media so we can keep in touch.

Share on social media