Jonas Dann, Royden Wagner, Daniel Ritter, Christian Faerber, H. Froening
{"title":"PipeJSON:在fpga上以线速解析JSON","authors":"Jonas Dann, Royden Wagner, Daniel Ritter, Christian Faerber, H. Froening","doi":"10.1145/3533737.3535094","DOIUrl":null,"url":null,"abstract":"JavaScript Object Notation (JSON) gained popularity as a data exchange and storage format. While recent advances on modern CPUs show an improved JSON parsing by using data parallelism with vector instructions, the rigid instruction set and limited pipelining of CPUs prevent parsing performance from reaching the practical limit of memory bandwidth. We present PipeJSON, the first standard-compliant JSON parser to process tens of gigabytes of data per second. It utilizes FPGA hardware to make extensive use of pipelining and can parse multiple characters per clock cycle. To ensure usability in software projects, PipeJSON is written in Data Parallel C++ and achieves 7.95 × speedup over state-of-the-art JSON parsers on CPU, despite data transfer to the FPGA.","PeriodicalId":381503,"journal":{"name":"Proceedings of the 18th International Workshop on Data Management on New Hardware","volume":"14 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2022-06-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"5","resultStr":"{\"title\":\"PipeJSON: Parsing JSON at Line Speed on FPGAs\",\"authors\":\"Jonas Dann, Royden Wagner, Daniel Ritter, Christian Faerber, H. Froening\",\"doi\":\"10.1145/3533737.3535094\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"JavaScript Object Notation (JSON) gained popularity as a data exchange and storage format. While recent advances on modern CPUs show an improved JSON parsing by using data parallelism with vector instructions, the rigid instruction set and limited pipelining of CPUs prevent parsing performance from reaching the practical limit of memory bandwidth. We present PipeJSON, the first standard-compliant JSON parser to process tens of gigabytes of data per second. It utilizes FPGA hardware to make extensive use of pipelining and can parse multiple characters per clock cycle. To ensure usability in software projects, PipeJSON is written in Data Parallel C++ and achieves 7.95 × speedup over state-of-the-art JSON parsers on CPU, despite data transfer to the FPGA.\",\"PeriodicalId\":381503,\"journal\":{\"name\":\"Proceedings of the 18th International Workshop on Data Management on New Hardware\",\"volume\":\"14 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2022-06-12\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"5\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings of the 18th International Workshop on Data Management on New Hardware\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/3533737.3535094\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 18th International Workshop on Data Management on New Hardware","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3533737.3535094","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
JavaScript Object Notation (JSON) gained popularity as a data exchange and storage format. While recent advances on modern CPUs show an improved JSON parsing by using data parallelism with vector instructions, the rigid instruction set and limited pipelining of CPUs prevent parsing performance from reaching the practical limit of memory bandwidth. We present PipeJSON, the first standard-compliant JSON parser to process tens of gigabytes of data per second. It utilizes FPGA hardware to make extensive use of pipelining and can parse multiple characters per clock cycle. To ensure usability in software projects, PipeJSON is written in Data Parallel C++ and achieves 7.95 × speedup over state-of-the-art JSON parsers on CPU, despite data transfer to the FPGA.