Komponenttitekniikat ja hajautettu ohjelmistokehitys. Asynkroniset kierteitetyt järjestelmät

Asynkronista (kutsutaan myös ei-estäväksi) primitiiviksi käytettäessä prosessia ei keskeytetä.

Siten, kun prosessi kutsuu Lähetä-primitiiviseksi, käyttöjärjestelmä palauttaa prosessin hallinnan heti sen jälkeen, kun viesti on asetettu lähetysjonoon tai kun kopio viestistä on luotu. Kun viesti on lähetetty tai kopioitu osoitteeseen turvallinen paikka myöhempää lähetystä varten lähetysprosessi keskeytetään ja siitä ilmoitetaan, että sanomapuskuria voidaan käyttää uudelleen.

Jos viestistä ei luoda kopiota, mahdolliset muutokset viestiin, jotka lähetysprosessi on tehnyt Lähetä-primitiiville kutsun jälkeen, mutta ennen viestin lähettämistä, ovat riskialttiita.

Samoin prosessi jatkuu asynkronisen vastaanottoprimitiivin kutsun jälkeen. Kun viesti saapuu, prosessille ilmoitetaan tapahtumasta keskeytys- tai määräajoin.

Asynkroniset primitiivit tarjoavat tehokkaan ja joustavan pääsyn prosesseihin viestijärjestelmään.

Tämän lähestymistavan haittana on, että tällaisia ​​primitiivejä käyttäviä ohjelmia on vaikea testata ja virheenkorjaus.

Tapahtumat, jotka ovat riippuvaisia ​​ajasta ja joita ei voida tuottaa uudelleen, voivat tulla käsittelemättömiksi ongelmiksi.

Vaihtoehtona on käyttää synkronisia tai, kuten heitä kutsutaan myös, estämään primitiivit.

Kun synkroninen Lähetä-primitiivinen kutsutaan, ohjausta ei palauteta lähetysprosessille ennen kuin viesti on siirretty (epäluotettava palvelu) tai ennen kuin on vastaanotettu kuittaus viestin toimituksesta (luotettava palvelu).

Vastaanoton esto-primitiivi palaa vasta, kun viesti on varatussa puskurissa.

Erilliset menettelypuhelut

RPC (Remote Procedure Call) on muunnelma sanomansiirtomallista.

Nykyään etäproseduuripuhelut ovat yleinen ja laajasti käytetty menetelmä kapseloimaan tiedonsiirto hajautettu järjestelmä... Tämän tekniikan ydin on sallia ohjelmien erilaisia ​​autoja vuorovaikutuksessa toistensa kanssa yksinkertainen puhelu menettelyjä ikään kuin he käyttäisivät samaa konetta.

Siten menettelykutsumekanismia käytetään pääsemään etäkoneen tarjoamiin palveluihin.

Tämän lähestymistavan suosio johtuu seuraavista eduista:

• Menettelypuhelu on yleinen ja hyvin ymmärretty abstraktio.

• Poistettujen menettelykutsujen avulla voit määrittää etärajapinnan nimettyjen operaatioiden joukoksi tietyntyyppisille kohteille. Tällä tavalla käyttöliittymä voidaan dokumentoida selvästi ja selkeästi, ja staattinen kirjoittaminen voidaan suorittaa hajautetussa ohjelmassa.

• Koska käyttöliittymä on standardoitu ja hyvin määritelty, sovellusviestintäohjelma voidaan luoda automaattisesti.

• Koska käyttöliittymä on standardoitu ja hyvin määritelty, kehittäjät voivat kirjoittaa asiakas- ja palvelinmoduuleja, jotka voidaan siirtää muille alustoille ja Käyttöjärjestelmä vain pieni lähdekoodin muutos vaaditaan.

Etäkäytön kutsumekanismia voidaan pitää parannettuna järjestelmänä luotettavaan synkroniseen viestintään.

Yleinen arkkitehtuuri on esitetty kuviossa. 17.11, b ja kuvassa. 17.13 esittää yksityiskohtaisemman kaavion. Soitto-ohjelma suorittaa normaalin menettelykutsun parametreineen koneellaan.

Esimerkiksi: CALL P (X. Y)

Tässä ♦ Р on menettelyn nimi;

♦ X - välitetyt argumentit;

♦ Y - palautusarvot. Se, mitä etämenettelypuhelussa itse asiassa tapahtuu jollakin muulla koneella, voi olla käyttäjälle läpinäkyvää tai läpinäkymätöntä. Niin kutsuttu P-menettelyn toteuttaja tai tynkä on sisällytettävä kutsuprosessin osoiteavaruuteen tai kytkettävä dynaamisesti puhelun aikana.

Stab luo viestin, joka tunnistaa kutsutun menettelyn ja sisältää sen parametrit. Sen jälkeen se lähettää tämän viestin etäjärjestelmään ja odottaa vastausta.

Kun vastaus on vastaanotettu, stub palauttaa ohjauksen kutsuvalle ohjelmalle ja välittää palautusarvot sille. Etäkoneella toinen tynkä liittyy kutsuttuun menettelyyn.

Kun viesti saapuu, tynkä tutkii sen ja muodostaa vastaanotetun menettelyn nimen ja parametrien perusteella tavallisen paikallispuhelun CALL P (X, Y).

Toisin sanoen etämenetelmää kutsutaan paikallisesti ja standardiparametrit välitetään pinon läpi.

Kuva. 17.13. Etäkäytön kutsumekanismi

Asiakkaan ja palvelimen sidonnan avulla voit määrittää etämenettelyn ja sen soittajan välisen suhteen. Sidonta muodostuu sen jälkeen, kun molemmat sovellukset ovat muodostaneet loogisen yhteyden ja ovat valmiita vaihtamaan komentoja ja tietoja.

Sidonta voi olla pysyvä tai ei-pysyvä. Pysymättömässä sidonnassa kahden prosessin välinen looginen yhteys muodostetaan vain etäproseduurikutsun ajaksi.

Heti kun etäproseduuri palauttaa arvot, yhteys suljetaan. Aktiivinen yhteys kuluttaa resursseja, koska molempien osapuolten on ylläpidettävä tietoja tilastaan.

Väliaikaisten yhteyksien käyttö säästää näitä resursseja. Toisaalta yhteyden muodostaminen ja palveludatan vaihtaminen verkon kautta vie aikaa tätä lähestymistapaa ei sovellu etämenetelmiin, joita usein kutsutaan samalla prosessilla.

Pysyvällä sidonnalla etäproseduurikutsulle muodostettu yhteys säilyy, kun etäproseduuri palaa.

Tätä yhteyttä voidaan käyttää myöhempää käyttöä varten etäpuhelut menettelyt. Jos yhteyttä ei käytetä tietyn ajan kuluessa, se katkaistaan. Tämä järjestely on hyödyllinen sovelluksille, jotka tekevät monia RPC: itä.

Tällöin jatkuva sidonta antaa sinulle mahdollisuuden soittaa puheluja ja vastaanottaa niiden tuloksia samalla loogisella yhteydellä.

Ohjatut tasasuuntaajat yksivaiheinen virta

Siltaohjattu tasasuuntaaja kolmivaiheinen virta

Tyristoriryhmien /, // toiminnalle peruutusmuuntimessa on tunnusomaista tasasuuntaus- ja inversiomoodien vaihteleva käyttö niissä. Tyristoriryhmiä on kahta ohjaustapaa - yhteinen ja erillinen.

Yhteisen ohjauksen yhteydessä ampumispulssit syötetään sekä yhden että toisen ryhmän tyristoreihin taajuusmuuttajan kaikissa toimintatiloissa asettamalla yksi ryhmä tasasuuntaustilaan ja toinen kääntömoodiksi. Ryhmien I ja I ohjauskulmat u, ac, vastaavasti, on kytketty tasasuuntaajan ja sisäisen jännitteen keskiarvojen ja al


Synkroniset pulssivaiheohjausjärjestelmät

Muuntimien pulssivaiheohjauksen synkroninen periaate on yleisin. Sille on tunnusomaista sellainen CS-solmujen toiminnallinen yhteys, joka on suunniteltu vastaanottamaan pulsseja ja jossa ohjausimpulssien synkronointi tapahtuu verkkojännitteellä vaihtovirta.

Pohjimmiltaan synkroninen periaate Esitämme ohjausjärjestelmän rakenteen ja sen solmujen toiminnallisen tarkoituksen käyttämällä esimerkkiä ohjauskanavan suorittamisesta muuntimen yhden tyristorin avulla (kuva 6.36). Kanavapiiri sisältää generaattorin vertailujännite GON, nollaelinten NO ja UV-laukaisupulssien vahvistin-muotoilija.

Monivaiheisten muuntimien synkroniset ohjausjärjestelmät voidaan suorittaa moni- ja yksikanavamenetelmillä.

Monikanavaisessa ohjausjärjestelmässä (kuva 6.37) kulmaa a ohjataan kokonaisohjausjännitteestä, kun kukin kanava suoritetaan kuvion tyypin mukaisesti. 6.36.

Kanavien lukumäärä on yhtä suuri kuin muunninpiirin tyristorien lukumäärä (esimerkiksi kolmivaiheisen siltaohjatun tasasuuntaajan ohjausjärjestelmässä kanavien lukumäärä on kuusi). Kun vaiheensiirtolaitteet synkronoidaan asianmukaisesti vaihtovirrasta (vaiheistus), järjestelmä tuottaa ohjauspulsseja tyristoreille vaiheissa a, b, c symmetrisesti luonnollisen polttopisteen suhteen (katso kuva 6.15, c) , jota tarvitaan piirin toimintaan.



Monikanavainen ohjausmenetelmä on yleistynyt ohjausjärjestelmän yksinkertaisuuden, sen solmujen yhtenäistämisen sekä sovellettavuuden vuoksi erityyppisiä muuntimet. Samanaikaisesti tällaisissa järjestelmissä asetetaan lisääntyneitä vaatimuksia vaiheensiirtolaitteiden a = / g (% a) yksittäisten kanavien ohjausominaisuuksien identiteetille koko ohjausjännitteen vaihtelualueella. Ohjausominaisuuksien ero johtaa tyristorin ohjauskanavien kulmien a eroon, säätöpulssien epäsymmetriaan, mikä luo esimerkiksi ohjatuissa tasasuuntaajissa ylimääräisen tasasuuntaisen jännitteen matalataajuisia pulsseja.

Yksikanavaisessa ohjausjärjestelmässä ohjauspulssien vaihesiirtoa ohjataan yhden kanavan kautta käyttäen yhteistä vaiheensiirtolaitetta, jonka pulssit jaetaan sitten piirejä pitkin laukaisupulssien muodostamiseksi kullekin muuntimen tyristorille . Yhteisen vaihesiirtimen käytön ansiosta yksikanavainen järjestelmä pystyy täyttämään korkeimmat vaatimukset pulssien symmetrialta. Ohjausjärjestelmän monimutkaisuuden vuoksi, erityisesti muuntimien ja LPC: n peruuttamiseksi, yksikanavainen menetelmä CS: n rakentamiseksi on harvinaisempi.

Asynkroniset pulssivaiheohjausjärjestelmät

Tarkastelluissa synkronisissa ohjausjärjestelmissä ohjauspulssin (ts. Ohjauskulman a) vastaanottohetki mitataan tietystä syöttöverkon jännitteen pisteestä (esimerkiksi hetkestä, jolloin se ylittää nollan). Tällainen synkronointi verkkojännitteestä suoritetaan vertailujännitegeneraattorin avulla. Kulman a alkuperä joko osuu yhteen synkronointiajan kanssa tai sitä siirretään suhteessa johonkin vakiovaihekulmasta.

Asynkronisissa ohjausjärjestelmissä ohjauspulssien aikayhteydellä vastaaviin pistorasian jännitepisteisiin on apurooli, esimerkiksi sen tarkoituksena on rajoittaa minimi- ja enimmäisarvot ohjauskulmat a. Kaksi ohjauspulssia vastaanotetaan ilman solmujen synkronointia; vaihtojännitteen ohjausjärjestelmät. Vaiheensiirtolaite, joka on perustavanlaatuinen synkronijärjestelmien kannalta, puuttuu täältä.


Vaiheensäätömenetelmä vaihtovirta... Porrastetulle säätömenetelmälle on tunnusomaista amplitudin ( todellinen arvo) Kuormalle syötetty vaihtojännite muuttamatta sen käyrän muotoa. Tämä menetelmä suoritetaan käyttämällä muuntajaa, jonka sekundäärikäämityksen lähdöt on kytketty kuormaan kytkettyjen rinnakkaisten tyristorien kautta (kuva 6.55, a). Tyristoreiden lukitus avautuu, kun vaihtojännite kulkee nollan läpi (kuvat 6.55, b, c). Tehon säätö kuormituksessa (esimerkiksi uunin lämpötilan muuttamiseksi tietyllä alueella ^ suoritetaan ohjausjärjestelmällä, joka antaa selektiivisesti lukituspulssit vastaavaan rinnakkain kytkettyyn rinnakkain kytkettyyn tyristoripariin. suuri numero tyristorit sekä tasaisen tehonsäädön mahdottomuus kuormituksessa ovat tämän ohjausmenetelmän haittoja. Menetelmän etuna on vääristymien puuttuminen verkosta kulutetun virran käyrässä sekä virran vaihesiirto suhteessa syöttöverkon jännitteeseen (puhtaasti aktiivisella kuormalla).

Vaihe-vaiheinen menetelmä vaihtojännitteen säätämiseksi. Vaihe-vaihe-ohjausmenetelmä perustuu jakaminen astui ja vaihemenetelmät säätö. Se toteutetaan kaavion mukaisesti muuntajan kanssa kuvion 1 sisääntulossa. 6.55, a. Muuntajan toissijaisen jännitteen ja 2 (tyristoriparit) vaiheiden lukumäärästä riippuen on kaksi-, kolme-, neljän- ja monivaiheinen vaiheohjaus.

Vaihe-vaihemenetelmän ydin on supistunut vaiheenohjauksen käyttöön sujuva muutos RMS-jännite kuorman yli lähtöjännitteen kussakin vaiheessa

Pulssileveysmenetelmä vaihtojännitteen säätämiseksi päälle alitaajuus. Pulssileveyden säätömenetelmä pienennetyllä taajuudella perustuu kuormalle syötetyn vaihtojännitteen jaksojen lukumäärän muuttamiseen. Sen toteuttamiseksi kaavio kuvion 1 muodosta. 6.47, mutta tai b, sisään. Kuvion 3 jännityskaaviot 6.58 kuvaa vaihtojännitemuuntajan toimintaperiaatetta, kun tätä menetelmää säätö. Tämä menetelmä mahdollistaa kuorman tehon säätämisen alueella 2 Sh n - nolla. Sen haittana on harmonisten esiintyminen verkkovirrassa, jonka taajuudet ovat alle 50 Hz, mikä johtuu verkon energiankulutuksen impulsiivisesta luonteesta. Tämä haitta on suurelta osin heikentynyt, kun se toimii yhteinen verkko usean muuntimen ryhmän vaihtovirta, kun yhden muuntimen virrankulutuksen puute kompensoidaan muiden muuntimien virrankulutuksella.

Olen utelias, mitä async odottaa sisäänrakennettua suoratoistotoimintoa.

Kaikki sanovat, että asynkronointi on paljon parempi suorituskyvyssä, koska se vapauttaa säikeitä, jotka odottavat pitkää vastausta. asynkroninen puhelu... OK ymmärsin.

Harkitse kuitenkin tätä skenaariota.

Minulla on asynkronointimenetelmäA, joka suorittaa asynkronointitoiminnon tietokannassa. Tietokannan api tarjoaa BeginQuery-toiminnon ja QueryCompleted-tapahtuman. Käärin ne tehtävään (käyttäen TaskCompletionSource).

Kysymykseni on, mitä tapahtuu hupun alla BeginQueryn kutsumisen ja QueryCompletedin ampumisen välillä.

Tarkoitan - eikö sinun tarvitse luoda jonkinlainen työntekijä tämän tapahtuman laukaisemiseksi? Hyvin matalalla tasolla on oltava jonkinlainen synkroninen silmukka, joka estää langan lukemisen tuloksen db: stä.

Oletan, että minkä tahansa asynkronisen puhelun pitäisi luoda ketju voidakseen käsitellä vastausta (ehkä odota sitä silmukassa matala taso C ++ ohjainkoodissa).

Joten ainoa "voittomme" on, että soittajan lanka voidaan vapauttaa, kun joku muu lanka tekee työnsä.

Luonko asynkroninen menetelmäpuhelu aina uuden työlangan?

Voiko kukaan vahvistaa ymmärrykseni?

4 vastausta

Kaikki sanovat, että asynkronointi on paljon parempi suorituskyvylle, koska se vapauttaa ketjuja, jotka odottavat vastausta pitkään asynkroniseen puheluun.

Kyllä ja ei. Asynkronoinnin takana on kutsulangan vapauttaminen. Sovelluksissa käyttöliittymä asynkronoinnin tärkein etu on reagointikyky, kun käyttöliittymäketju vapautuu. Palvelinpuolen sovelluksissa asynkronoinnin tärkein etu on skaalautuvuus, koska pyyntövirta vapautuu muiden pyyntöjen käsittelemiseksi.

Siten ainoa "voittomme" on virtaus soittaja voidaan vapauttaa, kun joku muu säie tekee työnsä. Soita aina asynkroninen menetelmä luodaan uusi työnkulku?

Ei. Käyttöjärjestelmän tasolla kaikki I / O-toiminnot ovat asynkronisia. Nämä ovat synkronisia sovellusliittymiä, jotka estävät ketjun, kun pääasynkroninen I / O on käynnissä. Kirjoitin tämän äskettäin blogikirjoituksessa :.

Se luo I / O-pääteportin (IOCP), joka edustaa ulkoisesti käsiteltävää tehtävää, ja säie jatkuu muilla asioilla. Kun IOCP ilmoittaa tehtävän olevan valmis, ketju riippuu IOCP: n tilasta ja jatkaa tehtävän suorittamista.

I / O-portit tarjoavat tyylikkään ratkaisun skaalautuvan kirjoittamisen ongelmaan palvelinsovellukset käyttämällä monisäikeistä ja asynkronista I / O: ta.

Tarkoitan - eikö sinun tarvitse luoda jonkinlainen työntekijä tapahtumaa varten? Hyvin matalalla tasolla on oltava jonkinlainen synkroninen silmukka, joka lukitsee langan lukemisen tuloksen db: stä.

Vaikka sinun pitäisi todella odottaa ytimen objektia (kuten manuaalinen nollaustapahtuma), voit silti muuttaa estävän synkronisen koodin asynkroniseksi ja vapauttaa langan estämisestä (päivitetty: todellinen skenaario).

Esimerkiksi synkroninen koodi:

Void Consume () (var completeMre = new ManualResetEvent (false); producer.StartOperation (completeMre); completeMre.WaitOne (); // blocking wait Console.WriteLine (producer.DequeueResult ());)

Asynkroninen analoginen:

Async Task ConsumeAsync () (var completeMre = new ManualResetEvent (false); producer.StartOperation (completeMre); var tcs = new TaskCompletionSource (); ThreadPool.RegisterWaitForSingleObject (completeMre, (s, t) => tcs.SetResult (producer.DequeueResult ()), null, Timeout.Infinite, true); var tulos = odota tcs.Task; Console.WriteLine (tulos); )

Asynkroninen versio skaalaa yli 64x (MAXIMUM_WAIT_OBJECTS), mikä on enimmäismäärä ytimen objektit, jotka RegisterWaitForSingleObject voi koota odottamaan yhtä säiettä). Tällä tavalla voit soittaa Consume (): lle 64 kertaa rinnakkain ja se estää 64 säiettä. Tai voit soittaa ConsumeAsyncille 64 kertaa ja estää vain yhden ketjun.

Tietokone ilman prosessoria - onko se mahdollista? Miksi ei! Loppujen lopuksi prosessori suorittaa monia erilaisia ​​toimintoja, joiden toteutus voidaan osoittaa muille laitteille. Suorittimen laskennan arkkitehtuuri on rakennettu siten, että prosessori suorittaa suurimman osan toiminnoista. Näin ollen koko tietokoneen laskentateho on keskittynyt prosessoriin, mikä rajoittaa konfigurointimahdollisuuksia tiettyjä tehtäviä... Lisäksi ratkaisut suorittimen laskennan nopeuttamiseksi ovat yhä monimutkaisempia - prosessorin suorittamien toimintojen määrä kasvaa. Tämän seurauksena nykyaikaisten prosessorien suunnittelu on tullut niin monimutkaiseksi, että se asettaa liian korkeat vaatimukset kehitystasolle.

1. Synkroninen laskenta

Kaikki mikrotietokoneet ovat alusta lähtien koostuneet prosessorista, muistista ja oheislaitteista. Lisäksi prosessori on tietokoneen aktiivinen osa, ja muisti ja oheislaitteet noudattavat vain sen komentoja. Ohjelmat ja tiedot tallennetaan muistiin. Oheislaitteet anna prosessorin kommunikoida ulkopuolinen maailma- tässä tarkoitamme käyttäjiä, muita tietokoneita, Kovalevyt ja lisälaitteet. Lisäksi yhdelle koneen ajanjaksolle prosessori voi käyttää vain yhtä muistisolua tai yhtä ulkoista laitetta. Suoritinta käyttävä laskentaprosessi on järjestetty alla olevan kaavion mukaisesti.

  1. Suoritin asettaa tarvittavan muistisolun tai portin osoitteen osoiteväylälle ulkoinen laite.
  2. Ulkoisen laitteen tai muistin on asetettava tietonsa prosessorilta pyytämälle tietoväylälle.
  3. Prosessori, lukenut tiedot tietoväylältä, käsittelee sen, kirjoittamalla sen muistiin tai ulkoiseen laitteeseen. Tässä tapauksessa vastaavat signaalit asetetaan uudelleen ja prosessori synkronoidaan tietokoneen muiden osien kanssa.

Yhden käskyn suorittaminen prosessorissa tai tiedonvaihto prosessorin ja muiden mikropiirien välillä on suoritettava yhdessä järjestelmäsyklissä - ennen kellogeneraattorin seuraavaa pulssia. Siten koko levy tai sen erillinen osa, erityisesti lähellä prosessoria, kulkee synkronisesti ja samanaikaisesti vakaasta tilasta toiseen. Näin tietokone toimii. Koska siinä olevat laskelmat synkronoidaan signaaleilla kellotaajuus, kutsumme tällaisia ​​laskelmia synkronisiksi.

Synkronisen laskennan tärkein haittapuoli on, että monien aktiivisten elementtien on toimittava yhdessä, tottelemalla kellogeneraattorin signaaleja. Kellotaajuuden kasvaessa prosessorin ja sen ympäristön toiminnan koordinointi on vaikeampi. Oikeastaan nykyaikaiset prosessorit tuotetaan yhdellä mikropiirillä tai erityisten prosessorilevyjen muodossa, mutta jopa päämuisti toimii pienemmällä taajuudella. Tätä varten on käytettävä monimutkaisia ​​järjestelmiä siirtymien ennustamiseen, välimuistiin tallentamiseen ja muiden teknisten temppujen keksimiseen. Entä jos prosessoreita on useita ja ne käyttävät samaa muistia?

Tällaisen laskentajärjestelyn avulla on yksinkertaisesti välttämätöntä integroida kaikki tarvittavat toiminnot, mikä vaikeuttaa edelleen mikropiirien seuraavien sukupolvien kehitystä. Suorittimen synkronointi on yksinkertaisesti välttämätöntä muistin osoiteorganisaation vuoksi, jossa jokaisen tavun hakemiseksi muistista sinun on määritettävä sen osoite.

2. Osoittamaton asynkroninen laskenta

Jos haluat hakea tietoja muistista, voit kieltäytyä osoittamasta osoitetta kokonaan. Tätä varten riittää, että käytetään eri tapaa järjestää tiedot, suunnilleen sama kuin päällä Kovalevyt kun data ja ohjelmat ovat tavujen sarja, jossa on otsikko, jonka suostumme kutsumaan paketiksi. Paketteja käsittelevän tietojenkäsittelyjärjestelmän on koostuttava vähintään neljästä peruselementistä:

  • kytkimet, jotka toimittavat paketteja vastaanottajalle;
  • laskennalliset elementit, jotka muuttavat paketteja tiettyjen sääntöjen mukaisesti;
  • muistielementit, jotka tallentavat paketteja ja antavat niitä tarvittaessa;
  • oheislaitteet, jotka tarjoavat tietokonejärjestelmälle liitännän ulkomaailman kanssa.

Kytkimet tarjoavat yhteyden järjestelmän kaikkien osien välillä. He toimittavat paketteja otsikossa määritettyyn määränpäähän. Itse asiassa kytkimet muodostavat verkon - vaihdetun ympäristön, joka yhdistää kaikki järjestelmän elementit yhdeksi kokonaisuudeksi. Lisäksi fyysinen yhteys kytkinten ja elementtien välillä voi olla mikä tahansa - tietojärjestelmä voi sijaita useissa tapauksissa ja toimia yhtenä laitteena. Tätä varten ei tarvita muita parannuksia.

Laskentaelementit jäsentävät paketteja, käsittelevät niihin sisältyvät tiedot ja toimittavat tuloksen kytkettyyn ympäristöön muiden pakettien muodossa. Muistiyksikkö ohjaa pakettien käsittelyä: pyynnöstä se lähettää sen kytkettyyn ympäristöön, tallentaa tietoja saapuvista paketeista ja suorittaa muita toimintoja tietojen tallentamiseksi ja lähettämiseksi. Voit lisätä yhden lisälaite, joka tallentaa tietyt tiedot ja korvaa ne paketissa. Tällaisella laitteella on samanaikaisesti muistilohkon ja laskimen ominaisuudet. Itse asiassa I / O-portit, joihin ulkoiset laitteet on kytketty, on järjestetty samalla tavalla kuin muistilohkot ja eroavat vain komentojen joukosta ja osoitteistuksesta.

Tällainen järjestelmä ei vaadi kaikkien järjestelmäelementtien synkronointia ja jakaa prosessoritoiminnot useiden kesken tietokonelaitteet ja muistilohkot. Siksi kutsumme tällaista järjestelmää asynkroniseksi laskentajärjestelmäksi. Jokainen siinä oleva erillinen lohko suorittaa oman rajoitettu sarja toiminnot ja siksi sillä voi olla yksinkertainen sisäinen rakenne ja se voi toimia riittävän nopeasti ilman synkronointia kaikkien muiden lohkojen kanssa (varsinainen synkronointi suoritetaan vaihdetun ympäristön kautta). Tarkastellaan nyt jokaista asynkronisen elementtiä tietojärjestelmä yksityiskohdissa.

2.1 Kytkimet

Kytkinten päätehtävä on toimittaa paketti vastaanottajalle. Lisäksi, jos vastaanottajia on useita, kytkinten on toimitettava paketti lähimpään. Mekanismit optimaalisen reitin löytämiseksi ovat jo pitkään tunnettuja ja kehitetty vuonna Tietokoneverkot... Jokaisessa lohkossa, joka syöttää paketin vaihdettuun ympäristöön, on määritettävä vain yksi parametri - vastaanottajan osoite. Ei lisäinformaatio ei vaadittu.

Periaatteessa kommunikaatiokanavat kytkinten välillä voivat olla mitä tahansa, mukaan lukien yhden tietokoneen rajojen ylittäminen. Tämän seurauksena tietokoneen käsite on "hämärtynyt", koska jo nyt on mahdollista yhdistää kaksi erillistä laskentayksikköä yhdeksi kokonaisuudeksi yksinkertainen liitäntä yhden laitteen kytkimet toisen kytkimeen. Totta, tämä on mahdollista vain, jos yhtenäinen järjestelmä järjestelmän yksittäisten lohkojen osoittaminen.

On huomattava, että jos tietojärjestelmään on asennettu useita identtisiä laskentayksiköitä, paketti voidaan käsitellä missä tahansa niistä. Siten kytkimen on toimitettava paketti lähimpään vapaaseen lohkoon. Tämän seurauksena kaikilla identtisillä laskennallisilla yksiköillä voi olla sama osoite.

Tämä temppu ei kuitenkaan toimi muistielementtien ja porttien kanssa - jopa samat muistielementit voivat sisältää sekalainen informaatio, ja siksi eroavat toisistaan. Sama koskee ulkoisten laitteiden portteja. Itse asiassa, jos porttien ja muistin osoitteet voivat muuttua dynaamisesti itse kytketyssä ympäristössä, uuden muistilohkon tai ulkoisen laitteen lisäämisen ongelma katoaa. Siten asynkronisesta laskentajärjestelmästä tulee erittäin skaalautuva, ja vain osoitekapasiteetti on raja. Tämän seurauksena, jos valitset yksitavuisen osoitteen, liitettyjen laitteiden määrä rajoitetaan 256: een, vaikka tässäkin tapauksessa on mahdollista lisätä ne laskentayksiköt, joiden osoitteet ovat jo järjestelmässä.

Huomaa, että on parempi liittää kaikki aktiiviset lohkot - tietokoneet, muisti ja ulkoiset laitteet yksisuuntaisten kanavien kautta. Tämä sekä yksinkertaistaa itse lohkojen toteutusta että vähentää konfliktien todennäköisyyttä lohkon ja vaihdetun ympäristön välisessä tietoliikenneväylässä. Osoitteissa on vain uloskäyntejä ympäristöstä. Valitettavasti tulojen ja lähtöjen erottaminen lisää lohkojen nastojen määrää, mikä vaikeuttaa koko järjestelmän fyysistä johdotusta, mutta lisää sen toimintanopeutta - kaksisuuntainen I / O voi hidastaa merkittävästi pakettien siirtymistä tällaisten rajapintojen kautta.

2.2 Muisti

Jotta muistilohkot voivat suorittaa toimintonsa, niiden on tuettava kahta päätyyppiä:

  • syötetään pyydetty paketti vaihdettuun ympäristöön, mahdollisesti argumenttien korvaamisella;
  • Vaihdetusta ympäristöstä saapuvan paketin kirjoittaminen muistilohkoon.

Paketin lisääminen vaihdettuun ympäristöön tarvitaan ohjelmapaketin ajamiseksi. Ohjelmien kutsumisprosessi näyttää seuraavalta: muistilohkoon vastaanotetaan paketti, jossa on kutsutun paketin nimi ja joukko argumentteja. Muistilohko etsii määritettyä pakettia, korvaa siinä olevat argumentit ja lähettää muokatun paketin kytkettyyn ympäristöön. Lisäksi yksi paketti voi käynnistää useita eri paketteja. On huomattava, että yksi argumenteista voi olla vastaanottajan osoite. Tämän seurauksena muistilohko "ei tiedä" onko käynnistettävä paketti ohjelma vai data.

Paketin aloitusmenettelyn aikana muistilohko voi suorittaa argumentin korvausoperaation. Tämä toimenpide on tarpeen muistilohkojen pakettien muokkaamiseksi joustavamman pakkaamisen ja tiedon siirtämisen välillä eri pakettien välillä. Aloituspaketti sisältää joukon argumentteja heti sen nimen jälkeen. Argumentit korvataan merkityissä paikoissa erityinen joukkue, joka koostuu kahdesta osasta: itse korvauskomento ja argumenttinumero, joka korvaa koko rakennelman. Argumenttikorvauskomento on samanlainen kuin epäsuora osoite. Argumenttien korvaustoiminto voidaan kuitenkin poistaa muistilohkosta ja käyttää lisälohkoa - prosessinkäsittelijää, joka tallentaa vain tietoja ja sisällyttää ne sitä varten saapuviin paketteihin.

Muistilohkoon kirjoittaminen on melko ilmeistä - koko paketti omalla nimellään kirjoitetaan muistiin. Kirjoittamisen lisäksi muistilohko voi suorittaa muita toimintoja, kuten pakettien yhdistäminen, poistaminen tai lisääminen; mutta on parempi siirtää nämä toiminnot prosessinkäsittelijään. On huomattava, että asynkroniset laskelmat keskittyvät monisäikeisiin operaatioihin, joten on tarpeen määritellä sopiva lukitusmekanismi, joka hallitsisi konfliktitilanteita, kun kaksi eri säiettä yrittää muokata identtiset solut muisti. Siksi näyttää siltä, ​​että on välttämätöntä järjestää sopivat lukitusmekanismit muistilohkoihin ja langankäsittelijään.

Kun muistilohkoja on useita, ongelma syntyy paketin löytämisestä useisiin muistilohkoihin. Tämä ongelma voidaan ratkaista erityisesti seuraavasti: kaikki muistilohkot tietävät toisistaan ​​ja välittävät pyynnöt paketin aloittamiseksi toiselle muistilohkolle. Yritettäessä aloittaa olematonta pakettia voi kuitenkin tapahtua kaikkien muistilohkojen syklinen luettelointi, joka on täynnä tietojärjestelmän ylikuormitusta. Mutta on mahdollista toteuttaa toinen tapa etsiä tietoja: rekisteröimällä kaikki järjestelmän paketit yhteen paikkaan - nimikirjaan. Kaikki pakettitoiminnot tehdään tämän työkirjan kautta ja siirretään sitten tiettyyn muistilohkoon. Siten enemmän paketteja näkyy vaihdetussa ympäristössä, mutta keskitetty pääsy tietoihin taataan.

2.3 Oheislaitteet

Oheislaitteet: näyttö, näppäimistö, hiiri ja HDD- ovat saatavilla melkein kaikissa nykyaikaisissa tietokoneissa. Laitteilla, jotka suorittavat vain syöttöoperaatioita, ei välttämättä ole omaa osoitetta - niiden ei pitäisi vastaanottaa paketteja. Siten I / O-laitteet on jaettu kahteen tyyppiin - niillä on oma osoite ja joilla ei ole sitä. Tämän seurauksena laajennuskorteilla, jotka muodostavat yhteyden suoraan kytkettyyn ympäristöön, ei voi olla yksi, vaan kaksi tai jopa enemmän nastoja.

Itse asiassa kaikki ulkoiset laitteet moderni tietokone voidaan sovittaa myös asynkroniseen laskentaan. Lisäksi ylimääräistä kytkintä voidaan pitää ulkoisena laitteena, jonka kautta lisälohkot ja reuna. Siten tietokoneen tehoa voidaan lisätä melkein loputtomiin (ainoa rajoitus on pakettien vastaanottajien osoitetila).

Harkitse esimerkiksi näppäimistön kyselyä esimerkkinä tietojärjestelmän ja oheislaitteiden toiminnasta. Oletetaan, että se on järjestetty niin, että näppäimistöohjain tietää vain sen muistilohkon osoitteen, jossa ohjain sijaitsee. Kun käyttäjä kirjoittaa komennon ja painaa Enter-näppäintä, näppäimistöohjain lähettää paketin kytkettyyn muistiin, joka on osoitettu asianomaiselle muistilohkolle ja sisältää ohjaimen nimen ja komennon. Muistilohko käynnistää ohjaimen ja lähettää sen sopivaan laskimeen lisäämällä komennon argumenttina pakettiin. On huomattava, että komentoa voidaan käsitellä monentyyppisillä laskimilla, mutta komennon ensimmäinen jäsentely kuvatussa skenaariossa suoritetaan vain yhdellä tietyllä laitteella.

2.4 Laskentayksiköt

Laskentayksiköillä on yleensä yksi tulo ja yksi lähtö. Itse asiassa laskennallinen yksikkö toimii suodattimena, joka muuntaa paketit tiettyjen sääntöjen mukaisesti. Laskimen komentosarjaa voidaan rajoittaa, mikä takaa yksinkertaisen sisäisen rakenteen ja riittävän suuri nopeus työ. Kukin operaatio voidaan yleensä toteuttaa muodossa erillinen laite, mikä voi merkittävästi nopeuttaa laskutoimituksia, mutta jos tietokoneita on liian paljon, kytketyssä ympäristössä voi syntyä ristiriitoja. Tämän seurauksena laskentajärjestelmä voi osoittautua huonosti hallituksi.

Ilmeisesti on järkevintä tehdä yksi yleinen laskentayksikkö, joka suorittaa pääosan laskutoimitukset kokonaislukuilla, jopa looginen, pakettien ehdollisella alustuksella. Tee lisäksi erillinen lause reaalilukujen laskemiseksi. Erillisissä lohkoissa on mahdollista toteuttaa erityisen aikaa vieviä toimintoja, joita voidaan nopeuttaa laitteistototeutuksella. Tällaisia ​​toimintoja ovat esimerkiksi spektrianalyysi (Fourier-sarjan laajennus), 3D-renderointi, salaus ja muut laskennalliset yksiköt. Kaikki yllä mainitut toiminnot voidaan toteuttaa käyttämällä kokonaislukuja sisältävää yleislaskuria, mutta erikoislaskin voi nopeuttaa merkittävästi koko järjestelmän työtä. Ylimääräisten tietokoneiden avulla voit hienosäätää tietokonetta siten, että sen ominaisuudet vastaavat tiettyä tehtävää.

On huomattava, että eri tietokoneiden komentojärjestelmät voidaan valita optimaalisesti niille annettujen tehtävien ratkaisemiseksi. Tämä yksinkertaistaa sekä tällaisten laitteiden ohjelmaa että itse laskimen sisäistä rakennetta. Tämän seurauksena ohjelmistot ja laitteistot suorittavat tehtävänsä tehokkaammin. Lisäksi uutta tietokonetta lisättäessä ohjelmistoa ei tarvitse vaihtaa - kytkimet itse voivat määrittää järjestelmän toimimaan uuden yksikön kanssa. Siten asynkroninen tietojenkäsittely mahdollistaa erittäin skaalautuvien tietojenkäsittelyjärjestelmien rakentamisen.

Johtopäätös

Asynkronisella laskennalla on hyvät ja huonot puolensa. Niiden tärkein etu on tuloksena olevan tietojenkäsittelyjärjestelmän modulaarisuus, mikä mahdollistaa laitteiston ja ohjelmisto... Lisäksi monisäikeiseen tietojenkäsittelyyn keskittyminen antaa sinulle ennennäkemättömän suorituskyvyn synkroniseen laskentaan.

Synkronisten laskelmien tapauksessa käyttämätön tietokone edelleen suorittaa joitain minimaaliset toimet... Asynkronisissa laskennoissa, tosiasiallisesti käsiteltyjen pakettien puuttuessa, prosessia ei tapahdu tietojärjestelmässä. Jos siis suunnittelet jokaisen asynkronisen tietokoneen yksittäisen lohkon siten, että se sammuu, kun sille ei ole tarkoitettu paketteja, ja käynnistyy, kun ensimmäinen paketti vastaanotetaan, voit vähentää käyttämättömän tietokoneen virrankulutusta.

Asynkroniset laskelmat ovat helpommin toteutettavissa - kaikkia tietokonejärjestelmän osia ei tarvitse synkronoida, mutta riittää, että synkronoidaan vain laitteen ja lähimmän kytkimen välinen tietoliikennekanava. Siten ne voidaan toteuttaa yksinkertaisesti jopa Venäjän olosuhteissa. Tätä varten on tarpeen kehittää spesifikaatio ohjeista kaikille päälohkoille ja vastaava järjestelmä modulaaristen prosessorien muodostamiseksi sekä toteuttaa kaikki ratkaisut laitteistossa.