reorder any queued operations. Of course if you really care about your data, you don't really want to turn write cache on.
Also the controller used can have unfortunate interactions. For example the Adaptec SAS controller firmware will never issue more than two queued commands to a SATA drive (even though the firmware will happily accept more from the driver), so even if an attached drive is capable of reordering queued commands, its performance is seriously crippled by not getting more commands queued up. In addition, some drive firmware seems to try to bunch up queued command completions which interacts very badly with a controller that queues up so few commands. In this case turning NCQ off performs better because the drive knows it can't hold off completions to reduce interrupt load on the host – a good idea gone totally wrong when used with the Adaptec controller.
Today SATA NCQ seems to be an area where few combinations work well. It seems so bad to me that a whitelist might be better than a blacklist. That is probably overstating it, but NCQ performance is certainly a big problem.