В этом разделе много научных статей. Вы можете попробовать искать в Интернете. Я сделал поиск «Сортировка сетей» и придумал множество сравнений различных алгоритмов и насколько хорошо они интегрировались в ПЛИС.
Выбранный вами алгоритм будет в значительной степени зависеть от того, какой параметр наиболее важен для оптимизации, например, латентности, области и т. Д. Другим важным фактором является сохранение значений в начале и в конце сортировки. Если они хранятся в регистрах, все могут быть доступны сразу, но если вы должны прочитать их из памяти с ограниченной шириной, вы должны также учитывать это в своей реализации, потому что тогда вам придется сортировать значения в потоке , и переставьте этот поток, прежде чем сохранять его обратно в память.
Лично я бы подумал о некотором постоянном времени, таком как merge-sort, который имеет постоянное время сортировки, поэтому вы можете легко назначить сортировку для массива фиксированного размера. Однако я не уверен, насколько хорошо это масштабируется или работает с произвольными размерами массивов. Вероятно, вам придется установить верхний предел размера массива, и этот подход лучше всего работает, если все данные хранятся в регистрах.
Одинаковая книга, упомянутая на странице Википедии: http://en.wikipedia.org/wiki/Batcher_odd%E2%80%93even_mergesort – Codename