Таңбаланған Бұйрық Кезекшесі: Қатты дискінің өнімділігін арттыру технологиясы
Tagged Command Queuing
Дискідегі деректерді жылдам өңдеу үшін Tagged Command Queuing (TCQ) технологиясы туралы біліңіз. ATA, SCSI және NCQ арасындағы айырмашылықтарды қарастырамыз.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Белгілі бір ATA және SCSI қатты дискілеріне енгізілген технология – Таңбаланған Бұйрық Кезектемесі (TCQ). Ол операциялық жүйеге қатты дискіге бірнеше оқу және жазу сұраныстарын жіберуге мүмкіндік береді. ATA TCQ SATA дискілерінде қолданылатын, тиімдірек Native Command Queuing (NCQ) функциясымен толықтай сәйкес келмейді. SCSI TCQ ATA TCQ-дағы сияқты шектеулерге ұшырамайды. TCQ болмағанда, операциялық жүйе бір уақытта тек бір сұрауды ғана жібере алатын. Өнімділікті арттыру үшін операциялық жүйе сұраулардың ретін қатты дискінің қызметі туралы өзінің қате болуы мүмкін көзқарасына сүйеніп (әйтпесе I/O жоспарлау деп аталады) анықтауға мәжбүр болатын. TCQ арқылы дискі өз сұраныстарын қалай орындау керектігін өзі шеше алады (және операциялық жүйені осыдан босатады). Осылайша, TCQ дұрыс жүзеге асырылған жағдайда қатты дискінің жалпы өнімділігін жақсарта алады.
Tagged Command Queuing (TCQ) is a technology built into certain ATA and SCSI hard drives. It allows the operating system to send multiple read and write requests to a hard drive. ATA TCQ is not identical in function to the more efficient Native Command Queuing (NCQ) used by SATA drives. SCSI TCQ does not suffer from the same limitations as ATA TCQ. Without TCQ, an operating system was limited to sending one request at a time. To boost performance, the OS had to determine the order of the requests based on its own possibly incorrect perspective of the hard drive activity (otherwise known as I/O scheduling). With TCQ, the drive can make its own decisions about how to order the requests (and in turn relieve the operating system from having to do so). Thus TCQ can improve the overall performance of a hard drive if it is implemented correctly.
Шолу
Тиімділікті арттыру үшін секторларға тапсырыс бойынша емес, бас позициясының қазіргі орнына жақындық бойынша қызмет көрсету керек. Кезек үнемі жаңа сұраныстарды қабылдайды, қолданыстағы сұраныстарды орындайды және жояды, сондай-ақ ағымдағы күтіліп тұрған оқу/жазу сұраныстары мен бас позициясының өзгеруіне сәйкес қайта реттейді. Нақты қайта реттеу алгоритмі контроллер мен дискке байланысты болуы мүмкін, бірақ хост-компьютер қажет болған жағдайда ғана сұрау жібереді, ал контроллер бұл мәселенің бәрін шешеді. Бұл кезекке қою механизмі кейде "лифт іздеу" деп аталады, себебі ғимараттағы көптеген шақыруларға қызмет көрсететін және оларды жол жүруді азайту үшін өңдейтін заманауи лифттің бейнесі бұл идеяны жақсы көрсетеді. Егер 5, 2 және 4 қабаттарға баратын түймелерді осы ретпен басқанда лифт 1 қабаттан бастаса, ескі лифт сұралған ретпен қабаттарға барар еді. Ал қазіргі заманғы лифт сұраныстарды 2, 4 және 5 қабаттарға тоқтау үшін логикалық тәртіппен, қажетсіз сапарсыз өңдейді. Кезексіз дисктер сұраныстарды ескі лифт сияқты түскен тәртіппен қызмет көрсетеді; кезектегі дисктер сұраныстарды ең тиімді тәртіппен қызмет көрсетеді. Бұл бір пайдаланушы қолданатын жүйеде өнімділікті сәл жақсарта алады, бірақ көптеген пайдаланушылар диск бетінде әртүрлі сұраныстар жіберетін жүйеде өнімділікті күрт арттыра алады.
For increased efficiency the sectors should be serviced in order of proximity to the current head position, not the order received. The queue is constantly receiving new requests, fulfilling and removing existing requests, and re ordering the queue according to the current pending read/write requests and the changing position of the head. The exact reordering algorithm may depend upon the controller and the drive itself, but the host computer simply makes requests as needed, leaving the controller to handle the details. This queuing mechanism is sometimes referred to as "elevator seeking", as the image of a modern elevator in a building servicing multiple calls and processing them to minimise travel illustrates the idea well. If the buttons for floors 5, 2, and 4 are pressed in that order with the elevator starting on floor 1, an old elevator would go to the floors in the order requested. A modern elevator processes the requests to stop at floors in the logical order 2, 4, and 5, without unnecessary travel. Non queueing disk drives service the requests in the order received, like an old elevator; queueing drives service requests in the most efficient order. This may improve performance slightly in a system used by a single user, but may dramatically increase performance in a system with many users making widely varied requests on the disk surface.
SCSI TCQ
SCSI TCQ – TCQ-ның алғашқы танымал нұсқасы болды және бүгінгі күнге дейін танымал. Ол тапсырмаларды үш түрлі режимнің бірін пайдаланып кезекке қоюға мүмкіндік береді: Бұл режим жиі қолданылмайды, себебі дұрыс пайдаланбаған жағдайда ресурстардың жетіспеуіне алып келуі мүмкін. Реттелген режимде тапсырма, барлық бұрынғы тапсырмалар аяқталғаннан кейін және барлық жаңа тапсырмалар орындала бастағанға дейін орындалуы керек (кезектің жаңа тапсырмаларын ескермегенде). Дегенмен, SCSI протоколын іске асыратын басқа протоколдардың барлығы 64 биттің толық көлемін пайдалануына рұқсат етілмеуі мүмкін. Мысалы, ескі параллель SCSI 8 биттік таңбалау биттерін, iSCSI 32 биттік таңбалау биттерін, ал Fibre Channel 16 биттік таңбалау биттерін, резервтегі таңбалау бітімен бірге қолдануға рұқсат береді. Бұл икемділік протокол жасаушыға кезекке қою мүмкіндігін құнмен салыстыруға мүмкіндік береді. iSCSI желілері сияқты кеңейтілген желілер, желідегі дискілердің көп санымен және мұндай үлкен желілер тудыратын үлкен кешігумен күресу үшін көбірек таңбалау биттерінен пайда көреді, ал параллель SCSI тізбектері сияқты кішкентай желілерде көптеген таңбалау биттерін қажет ететін жеткілікті дискілер немесе кешігу болмайды және аз биттерді қолдайтын жүйеге көшу арқылы ақша үнемдеуге болады.
SCSI TCQ was the first popular version of TCQ and is still popular today. It allows tasks to be entered into a queue using one of three different modes: This mode is not used much because it can cause resource starvation when abused. In ordered mode, a task must execute after all older tasks have completed and before all newer tasks begin to execute (excluding newer head of queue tasks). However, different protocols that implement the SCSI protocol might not permit the use of all 64 bits. For example, older parallel SCSI permits 8 bits of tag bits, iSCSI permits up to 32 tag bits, and Fibre Channel permits up to 16 bits of tag with tag reserved. This flexibility allows the designer of a protocol to trade off queuing ability against cost. Networks that can be large, such as iSCSI networks, benefit from more tag bits to deal with the larger number of disks in the network and the larger latencies such large networks generate, while smaller scale networks, such as parallel SCSI chains, do not have enough disks or latency to need many tag bits and can save money by using a system supporting fewer bits.
ATA TCQ
ATA TCQ, ATA дискілеріне SCSI сияқты пайдалы мүмкіндіктерді әкелу мақсатымен әзірленді. Ол параллель және Serial ATA нұсқаларында қолжетімді. Бұл күш-жігер аса сәтті болмады, себебі ATA шинасы бастапқыда азайтылған контактілі ISA шинасы ретінде құрылды. Бағдарламалық үйлесімділік талаптары ATA хост-буферлік адаптерлерін бірінші тараптық DMA қолданусыз ISA шинасының құрылғылары сияқты жұмыс істеуге мәжбүр етті. Диск деректерді жіберуге дайын болғанда, процессорды үзіліске жіберуі, процессордың дискіге қандай команданы орындауға дайын екенін сұрауын күтуі, орындауға дайын командамен жауап беруі, процессордың хост-буферлік адаптердің үшінші тараптық DMA қозғалтқышын осы команданың нәтижесіне сәйкес бағдарламалауын күтуі, үшінші тараптық DMA қозғалтқышының команданы орындауын күтуі және содан кейін DMA қозғалтқышы тапсырманы аяқтағанда процессорды қайтадан үзіліске жіберіп, оны хабардар етуі керек еді, осылайша процессор сұралған тапсырманы тапсырыс берген тікелей бағдарламаға тапсырма аяқталғаны туралы хабарлай алатын болды. Үзілістерге жауап беру процессор уақытын қолданғандықтан, ATA TCQ қосылғанда процессордың жүктемесі тез өсті. Сонымен қатар, үзіліс қызметінің уақыты болжаусыз болғандықтан, диск деректерді жіберуге дайын болған, бірақ процессор үзіліске жауап беретінге дейін күтуге мәжбүр болғандықтан деректерді жібере алмаған жағдайлар туындады, осылайша процессор үшінші тараптық DMA қозғалтқышын бағдарламалау қажеттігін білуі керек еді. Сондықтан бұл стандарт көбінесе қолданылмады, өйткені ол процессордың жүктемесін арттырды, бірақ өнімділікті жеткілікті деңгейде жақсартпады. Бұл стандарт бір құрылғыға 32 күтіліп тұрған командаға рұқсат береді.
ATA TCQ was developed in attempt to bring the same benefits as SCSI to ATA drives. It is available in both Parallel and Serial ATA. This effort was not very successful because the ATA bus started out as a reduced pin count ISA bus. The requirement for software compatibility made ATA host bus adapters act like ISA bus devices without first party DMA. When a drive was ready for a transfer, it had to interrupt the CPU, wait for the CPU to ask the disk what command was ready to execute, respond with the command that it was ready to execute, wait for the CPU to program the host bus adapter's third party DMA engine based on the result of that command, wait for the third party DMA engine to execute the command, and then had to interrupt the CPU again to notify it when the DMA engine finished the task so that the CPU could notify the thread that requested the task that the requested task was finished. Since responding to interrupts uses CPU time, CPU utilization rose quickly when ATA TCQ was enabled. Also, since interrupt service time can be unpredictable, there are times when the disk is ready to transfer data but is unable to do so because it must wait for a CPU to respond to the interrupt so that the CPU knows that it needs to program the third party DMA engine. Therefore, this standard was rarely implemented because it caused high CPU utilization without improving performance enough to make this worthwhile. This standard allows up to 32 outstanding commands per device.
SATA NCQ
SATA NCQ – ATA TCQ-мен салыстырғанда қажетті CPU үзілістерінің санын күрт азайтатын заманауи стандарт. ATA TCQ сияқты, ол құрылғыға 32 командаға дейін орындауға мүмкіндік береді, бірақ параллель ATA мінез-құлқын имитацияламаған SATA хост-бус адаптерлерінің бірінші тарап DMA-ны қолдау мүмкіндігін пайдалану үшін жасалған. Қатты диск CPU-ны тапсырмадан бұрын тоқтатып, хост-адаптердің DMA қозғалтқышын бағдарламалауға мәжбүрлеудің орнына, хост-адаптерге қандай команданы орындау керектігін айтады, бұл хост-адаптердің енгізілген бірінші тарап DMA қозғалтқышын командада көрсетілген параметрлермен бағдарламалауға мүмкіндік береді. Содан кейін DMA қозғалтқышы команданы орындау үшін қажетті деректерді жылжытады. Үзіліс жүктемесін одан әрі азайту үшін, диск тапсырма аяқталған хабарламаларды бірнешеуін жинап, бірден жіберуге дейін сақтап тұра алады, бұл операциялық жүйеге көптеген процестерге тапсырмалардың аяқталғанын бірден хабарлауға мүмкіндік береді. Егер мұндай үзіліс жіберілгеннен кейін басқа тапсырма аяқталса, хост-адаптері аяқталу хабарламаларын біріктіре алады, егер аяқталу хабарламаларының алғашқы жиынтығы CPU-ға жіберілмесе. Бұл қатты дискінің микропрограммасына дискінің өнімділігі мен CPU-дың жүктелуі арасындағы қарым-қатынасты реттеуге мүмкіндік береді, яғни қашан хабарламаларды сақтау керектігін және қашан жіберу керектігін анықтау арқылы.
SATA NCQ is a modern standard which drastically reduces the number of required CPU interrupts compared to ATA TCQ. Like ATA TCQ, it allows up to 32 outstanding commands per device, but was designed to take advantage of the ability of SATA host bus adapters that are not emulating parallel ATA behavior to support first party DMA. Instead of interrupting the CPU before the task to force it to program the host bus adapter's DMA engine, the hard drive tells the host bus adapter which command it wants to execute, causing the host bus adapter to program its integrated first party DMA engine with the parameters that were included in the command that was selected by the hard drive when it was first issued, and then the DMA engine moves the data needed to execute the command. To further reduce the interrupt overhead, the drive can withhold the interrupt with the task completed messages until it gathers many of them to send at once, allowing the operating system to notify many threads simultaneously that their tasks have been completed. If another task completes after such an interrupt is sent, the host bus adapter can concatenate the completion messages together if the first set of completion messages has not been sent to the CPU. This allows the hard disk firmware design to trade off disk performance against CPU utilization by determining when to withhold and when to send completion messages.