That's suspiciously low.
Some questions:
1) What happens if you use bigger block sizes, say 16M?
2) Which filesystem you're using? Can it be fragmented? Can you test with raw disk to eliminate any filesystem influence?
3) Is dd running on same NUMA node (CPU socket) as your ioDrive2 PCI-e link?
4) To expand on 3, is there chance for QPI saturation (traffic between CPU sockets)? Have you ensured all the software uses CPU local RAM whenever possible and not access other CPU socket's RAM?
5) Are you sure all PCI-e lanes are active? (Try lspci)