  In this paper, we present FLiMS, a highly-efficient and simple parallel
algorithm for merging two sorted lists residing in banked and/or wide memory.
On FPGAs, its implementation uses fewer hardware resources than the
state-of-the-art alternatives, due to the reduced number of comparators and
elimination of redundant logic found on prior attempts. In combination with the
distributed nature of the selector stage, a higher performance is achieved for
the same amount of parallelism or higher. This is useful in many applications
such as in parallel merge trees to achieve high-throughput sorting, where the
resource utilisation of the merger is critical for building large trees and
internalising the workload for fast computation. Also presented are efficient
variations of FLiMS for optimizing throughput for skewed datasets, achieving
stable sorting or using fewer dequeue signals. Additionally, FLiMS is shown to
perform well as conventional software on modern CPUs supporting
single-instruction multiple-data (SIMD) instructions, surpassing the
performance of some standard libraries for sorting.
