Intel AHCI driver, queueprioritycontrol?

Discussion in 'PC Hardware' started by burfadel, May 6, 2010.

  1. burfadel

    burfadel MDL EXE>MSP/CAB

    Aug 19, 2009
    2,627
    3,856
    90
    #1 burfadel, May 6, 2010
    Last edited by a moderator: Apr 20, 2017
    I'm wondering about the queueprioritycontrol option in the Intel AHCI driver, its been in there for a long time over its drivers releases.

    The line I am referring to is:
    Code:
    HKR,Parameters,queuePriorityEnable,%REG_DWORD%,0
    Its disabled by default, set by the 0 at the end of the line (1 is enabled). This option can of course be seen/changed in the registry as well.

    What does this setting do? It sounds like a priority control for the NCQ queueing, such that higher priority items in the queue get done first. If this is the case, how come is it always disabled, or so it seems, and what does it actually prioritise?

    If its always disabled, whats the point of having the setting there in the first place, and more importantly the code to control the setting?

    Is it the case that its disabled by default for better compatibility with older AHCI devices? Original SATA drives weren't anything more than an IDE drive with a SATA bridge, even those that aren't so old and are SATA 2!

    Before someone answers 'if its always default as disabled then there's a reason so leave it' or something along those lines, I will state again, why put the code and the option there in the first place? My question is what does it do, and is there any benefit from enabling it? - I have all true native SATA drives, that use Serial ATA8-AST transport mode and ATA8-AST interfaces.

    I asked someone I know, a couple of his drives only 2 years old has Parallel ATA8-AST transport and ATA/ATAPI-7 interface, even though a 'SATA 2' drive, was one of those IDE drives with a SATA interface whacked on. I'm talking in a situation of purely have true SATA drives. I do apologise for going on about this point, but its a valid one and possibly pertains to the question!
     
  2. burfadel

    burfadel MDL EXE>MSP/CAB

    Aug 19, 2009
    2,627
    3,856
    90
    Like I originally suspected above, it seems its disabled by default as it may actually hinder performance on SATA bridge drives. NCQ (a feature of SATA) was found to reduce performance on some original SATA drive due to the bridge. Since all my drives now only have the Serial ATA8-AST interface/transport modes and not the older Parallel ATA/ATAPI-7 (yes they were SATA2 drives!), I believe enabling this option is beneficial. I've been running it since after the last post and it seems fine, and in cases where there may be multiple read/writes occurring it may be fractionally faster?

    NCQ basically is a queueing or read/write requests, and instead of being in the order that was requested, its order is changed to read/write the data in an order that minimises head & rotation movement.

    Imagine the data:
    ABCDEFGHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXIJKLMNOP

    If the requests were originally in order HIFNBOCAP, the queue priority optimises the read to:
    FHBINOPCA (example of concept only), which minimises the head and rotation needed, hence improveing throughput. The out of order data then can be held in the drive cache, in my case 32MB, and then sent to the operating system in the original order HIFNBOCAP.

    Therefore, the feature is beneficial. NCQ is enabled by default, I believe what queueprioritycontrol function does is improve on the standard algorithm?