Tagged Command Queuing ( TCQ ) on joissakin ATA- ja SCSI - kiintolevyissä käytetty tekniikka. Tämän tekniikan avulla käyttöjärjestelmä voi lähettää useita luku- ja kirjoituspyyntöjä kiintolevylle. Toiminnassaan ATA TCQ eroaa tehokkaammasta SATA - asemissa käytetystä NCQ -tekniikasta [1] . Mutta SCSI TCQ ei kärsi samoista rajoituksista kuin ATA TCQ.
Ennen TCQ:n keksimistä käyttöjärjestelmä pystyi lähettämään vain yhden pyynnön kerrallaan. Suorituskyvyn parantamiseksi tämän tekniikan on järjestettävä pyynnöt sen omien kiintolevyn toimintaa koskevien näkökohtien perusteella. TCQ:lla levy voi tehdä omat päätöksensä pyyntöjen järjestämisestä (mikä puolestaan vapauttaa käyttöjärjestelmän tästä kuormituksesta). Tämän seurauksena TCQ voi parantaa kiintolevyn yleistä suorituskykyä, jos tekniikka on toteutettu oikein.
Tehokkuuden lisäämiseksi sektorit tulisi käsitellä pään nykyisen sijainnin läheisyydessä, eli lähimpien sektoreiden pyynnöt käsitellään ensin ja kaukaisimmat viimeisenä. Jonoa täydennetään jatkuvasti uusilla pyynnöillä ja valmiit pyynnöt poistetaan, ja jonon uudelleenmäärittely tapahtuu jo ajoitettujen luku-/kirjoituspyyntöjen ja pään sijainnin muutosten mukaisesti. Tarkka järjestysalgoritmi voi riippua ohjaimesta ja itse levystä, kun taas tietokone itse lähettää pyyntöjä vain tarvittaessa, jättäen suoritustiedot ohjaimen harkinnan varaan.
Tätä jonotusmekanismia kutsutaan joskus " hissien hauksi ", koska se on samankaltainen kuin nykyaikaiset hissit liikkuvat rakennuksissa, vastaavat moniin kutsuihin ja käsittelevät niitä liikkeen minimoimiseksi, mikä kuvaa tätä ajatusta varsin selvästi.
Jos kerrosten 5, 2 ja 4 painikkeita painetaan tässä järjestyksessä ja hissi nostetaan ensimmäisestä kerroksesta, vanha hissi kulkee kerrosten läpi pyyntöjen saapumisjärjestyksessä. Nykyaikainen hissi puolestaan käsittelee ja järjestelee pyynnöt pysähtyäkseen kerroksille loogisessa järjestyksessä 2, 4 ja 5 ilman turhia liikkeitä. Levyt ilman jonotusta suorittavat pyynnöt saapumisjärjestyksessä, kuten yllä olevat vanhat hissit. Jonossa olevat asemat suorittavat pyynnöt tehokkaimmassa järjestyksessä. Tämä mahdollistaa suorituskyvyn parantamisen järjestelmissä, joissa on yksi käyttäjä, mutta suurin vaikutus tämän tekniikan käytöstä saavutetaan järjestelmissä, joissa useat käyttäjät työskentelevät samanaikaisesti lähettäen pyyntöjä, jotka on osoitettu kollektiivisesti koko levypinnalle.
SCSI TCQ on ensimmäinen suosituin versio TCQ:sta ja on edelleen suosittu tänään. Sen avulla voit tilata tehtäviä jonossa yhdellä kolmesta eri tavasta [2] :
Jonotilan edessä , jota käytetään yksinomaan SCSI TCQ:ssa, tehtävä sijoitetaan jonon etupuolelle kaikkien muiden tehtävien edelle, mukaan lukien jonon edellisen pään aiemmin ajoitetut tehtävät [2] . [1] [3] . Tätä tilaa ei käytetä laajalti, koska se voi aiheuttaa tietojen puutteen mahdollisissa poikkeamissa.
Järjestetyssä tilassa tehtävän tulee suorittaa välittömästi kaikkien aikaisempien tehtävien jälkeen ja ennen kaikkia uudempia, poissulkematta vain uudempia tehtäviä jonon kärjessä [2] .
Yksinkertainen tila mahdollistaa tehtävien suorittamisen missä tahansa järjestyksessä, joka ei riko kahteen edelliseen tilaan liittyvien tehtävien sääntöjä ja rajoituksia [2] . Kun tehtävän komento suoritetaan, laite lähettää isäntäväyläsovittimelle ilmoituksen, että komento on suoritettu [2] . Joka tapauksessa SCSI TCQ:sta aiheutuu paljon ylimääräisiä kustannuksia keskeytyksiä käytettäessä riippuen SCSI-juuriväyläsovittimeen liitetystä väylästä. PCI-, PCI-X-, PCI Express- ja muiden tämän mahdollistavien väylien tapauksessa DMA :lla vältetään tämä kuormituksen alenemisen kustannuksella. Vanha ISA-väylä vaatii SCSI-sovittimen luomaan keskeytyksiä päästäkseen prosessoriin, jotta kolmannen osapuolen DMA-ohjaimet voivat suorittaa siirron, ja sitten tarvitaan toinen keskeytys ilmoittamaan prosessorille, että jonossa oleva tehtävä on suoritettu [1] , jolloin aiheuttaa melko paljon kuormitusta prosessorille.
SCSI-3-protokolla varaa 64 bittiä käytettäväksi etikettikentässä, mikä mahdollistaa jopa 264 tehtävän mahtumisen yhteen lähetyssarjaan, mikä osoittaa, että jotkin komennot on suoritettava loppuun ennen myöhempien komentojen lähettämistä [2] . Useat SCSI-protokollassa toteutetut protokollat eivät kuitenkaan välttämättä salli kaikkien 64 bitin käyttöä. Esimerkiksi vanha rinnakkais - SCSI sallii vain 8 bittiä tarroille (tunnisteille), iSCSI sallii enintään 32 bittiä ja Fibre Channel jopa 16 bittiä tunnisteille, joissa on varattu 0xFFFF -tunniste . Tämän joustavuuden ansiosta protokollasuunnittelija voi vaihtaa kykyä käsitellä jonoja ja "kustannuksia". Verkot, jotka pystyvät saavuttamaan suuria kokoja, kuten iSCSI-verkot, hyötyvät enemmän bitteistä tarroille, mikä yhdistettynä enemmän levyjä verkossa ja korkeampi latenssi, jonka aiheuttavat samanlaiset verkkokoot, kun taas pienemmissä verkoissa, kuten rinnakkaisissa SCSI-ketjuissa, ei ole tarpeeksi levyjä tai latenssi, joka vaatii suuren määrän bittejä tarroille ja mahdollistaa säästöjä käyttämällä järjestelmiä, jotka tukevat vähemmän bittejä (ne ovat yleensä helpompia toteuttaa ja siksi halvempia tai ne ovat vanhentuneita järjestelmiä).
ATA TCQ kehitettiin yritettäessä tuoda SCSI:n edut ATA-kiintolevyille. Tekniikka on olemassa sekä tavalliselle (rinnakkaiselle) että Serial ATA:lle.
Tämä idea ei onnistunut, koska ATA-väylä oli ISA-väylän muunnelma pienemmällä määrällä nastoja. Ohjelmiston yhteensopivuusvaatimus teki ATA - sovittimista hyvin samankaltaisia kuin ISA - väylälaitteita ilman Bus mastering - tukea . Kun asema on valmis siirtämään tietoja, sen on lähetettävä keskeytyssignaali CPU:lle, odotettava, että prosessori "kysyy" asemalta minkä komennon se on valmis suorittamaan, vastata, että se on valmis suorittamaan sen, odota prosessoria ohjelmoidaksesi väyläsovittimen ohjaamaan epäsuoran DMA :n kautta edellisen komennon tulosten perusteella, odota, että välitetty DMA-ohjain suorittaa komennon, ja sitten on lähetettävä keskeytyssignaali uudelleen prosessorille ilmoittaakseen sille, kun DMA-ohjain on lopettanut suorittamisen. tehtävä, jotta prosessori voi ilmoittaa säikeelle, että pyydetty tehtävä on suoritettu. [1] . Koska keskeytysvastaukset aiheuttavat liikaa ylimääräisiä kustannuksia, suorittimen käyttö lisääntyy nopeasti, kun ATA TCQ on käytössä [1] . Lisäksi, koska keskeytyssignaalin käsittelyaikaa ei voida ennustaa etukäteen, on tilanteita, jolloin levy on valmis siirtämään tietoja, mutta ei voi siirtää niitä, koska sen on odotettava prosessorin vastausta keskeytykseen. signaali, koska hän on vastuussa välitetyn DMA:n asettamisesta [1] .
Siksi tätä standardia toteutetaan erittäin harvoin suorittimen suuren kuormituksen vuoksi ja ilman konkreettista suorituskyvyn parannusta, jolle tämä kaikki olisi järkevää [1] . Tämä standardi tarjoaa jopa 32 odottavaa komentoa laitetta kohti [3] .
SATA NCQ on uusi standardi, joka ei vaadi suorittimen keskeytyssignaaleja. Kuten ATA TCQ:ssa, siinä on jopa 32 raakakomentoa laitetta kohden [1] , mutta se on suunniteltu SATA-sovittimien ominaisuudet ajatellen emuloimatta rinnakkais-ATA-toimintaa samalla kun se tukee suoraa DMA:ta [1] . Keskeytyssignaalien sijaan käytetään seuraavaa kaavaa: ennen kuin työ pakottaa CPU:n ohjelmoimaan DMA-sovittimen, kiintolevy kertoo sovittimelle minkä komennon se haluaa suorittaa, minkä seurauksena sovitin ohjelmoi oman DMA-ohjaimensa. komennossa määritettyjen parametrien mukaisesti aiemmin valittu kiintolevy, jonka jälkeen DMA-ohjain lähettää komennon suorittamiseen tarvittavat tiedot [1] . Vähentääkseen edelleen keskeytysmäärää levy voi viivyttää keskeytyksiä tehtävien valmistumissignaaleilla, kunnes niitä on tarpeeksi lähetettäväksi yhdessä, jolloin CPU voi ilmoittaa useille säikeille kerralla, että niiden tehtävät on suoritettu [1] . Jos toinen tehtävä päättyy tällaisen keskeytyksen lähettämisen jälkeen, sovitin voi korjata valmistumisviestit, jos niitä ei lähetetty prosessorille [1] . Tämä mahdollistaa kiintolevyn laiteohjelmiston vaihtamaan levyn suorituskyvyn ja suorittimen kuormituksen määrittämällä, milloin pidättäytyy äänestämästä verrattuna siihen, milloin lähetät valmistumisviestit [1] .