FPGA JSON Parser PipeJSON Parallel Processing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Central processing unit (CPU) based JSON parsers face performance bottlenecks due to rigid instruction sets and limited pipelining, limiting their ability to achieve optimal JSON parsing performance, especially when processing large volumes of data.

Innovation Solution

Implementing a JSON parser on field programmable gate arrays (FPGAs) that utilizes extensive AVX-equivalent loop unrolling and deep pipelining, combined with a simdjson-based tokenizer, to enable data parallelism and efficient processing of JSON documents, resulting in the PipeJSON system.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If CPU-based JSON parsers are used, then the system is simple to implement, but the parsing speed is limited due to rigid instruction sets and limited pipelining

Engineering Contradiction:
ImproveJSON parsing speedVSAvoidparser architecture complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The patent replaces the traditional CPU-based mechanical parsing system with an FPGA-based parallel processing system. The FPGA implementation uses hardware logic circuits to perform parsing operations in parallel, substituting the sequential mechanical instruction execution of CPUs with concurrent hardware operations, achieving up to 7.95× speedup.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The JSON parsing process is divided into multiple independent pipeline stages including character classification, token identification, value extraction, and structure building. Each stage operates independently and concurrently on different parts of the input data, enabling deep pipelining and maximizing throughput by processing multiple characters per clock cycle.

Inventive Principle:
Principle #1Segmentation

2Productivity

If CPU-based parsers with limited pipelining are used, then the device complexity is low, but the productivity is limited

Engineering Contradiction:
Improvedata processing throughputVSAvoidpipeline architecture complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The FPGA parser implements continuous processing through deep pipelining where multiple pipeline stages operate simultaneously on different data elements. As soon as one stage completes processing a character, it immediately begins processing the next character, ensuring continuous useful action without idle cycles and achieving tens of gigabytes per second throughput.

Inventive Principle:
Principle #20Continuity of useful action

3Speed

If extensive loop unrolling and deep pipelining are implemented on FPGA, then parsing performance increases significantly, but the device complexity increases

Engineering Contradiction:
Improveparsing speedVSAvoidFPGA logic complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The patent transitions from sequential processing in the time dimension (CPU) to parallel processing in the spatial dimension (FPGA). By distributing parsing operations across multiple parallel pipeline stages implemented as hardware logic, the system achieves massive throughput by utilizing the spatial parallelism capability of FPGAs rather than being constrained by sequential time-based execution.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS12182095B2Parsing JSON on field programmable gate arrays
Publication Date: 2024.12.31 SAP SE
  • US12182095B2 patent drawing
  • US12182095B2 patent drawing
  • US12182095B2 patent drawing

AI summary

A method may include parsing, using a JavaScript Object Notation (JSON) parser implemented on a field programmable gate array (FPGA), a JSON document. The parsing includes dividing an input string comprising the JSON document into one or more data blocks and annotating the characters included in each data block a bitmap for each data block. String characters included in the data blocks may be identified, based on the bitmap associated with each data block, for writing to a string array. Numeric characters included in the data blocks may be transformed, based on the bitmap associated with each data block, into integers value for writing to an integer array or float values for writing to a float array. A tape including a binary representation of the JSON document may be generated based on the bitmap associated with each data block. Related systems and computer program products are also provided.