"On helpompi vastata kuin olla hiljaa" - loistava haastattelu tapahtumamuistin isän Maurice Herlihyn kanssa

Maurice Herlihy - kahden omistaja Dijkstra-palkinnot. Ensimmäinen on työskentelyä varten "Odotusvapaa synkronointi" (Brown University) ja toinen, uudempi, - "Transaktionaalinen muisti: arkkitehtoninen tuki lukitsemattomille tietorakenteille" (Virginia Tech University). Dijkstra-palkinto myönnetään työstä, jonka merkitys ja vaikutus on ollut näkyvissä ainakin kymmenen vuotta ja Maurice on selvästi yksi alan tunnetuimmista asiantuntijoista. Hän työskentelee tällä hetkellä professorina Brownin yliopistossa ja hänellä on lukuisia saavutuksia, jotka ovat kappaleen mittaisia. Hän tutkii parhaillaan lohkoketjua klassisen hajautetun tietojenkäsittelyn yhteydessä.

Aiemmin Maurice oli jo tullut Venäjälle SPTCC:tä varten (videonauha) ja teki erinomaisen tapaamisen JUG.ru Java-kehittäjäyhteisön kanssa Pietarissa (videonauha).

Tämä habrapost on loistava haastattelu Maurice Herlihylle. Siinä käsitellään seuraavia aiheita:

  • Vuorovaikutus korkeakoulujen ja teollisuuden välillä;
  • Lohkoketjututkimuksen säätiö;
  • Mistä läpimurtoideat tulevat? Suosion vaikutus;
  • Tohtori Barbara Liskovin valvonnassa;
  • Maailma odottaa moniytimistä;
  • Uusi maailma tuo uusia ongelmia. NVM, NUMA ja arkkitehtuurin hakkerointi;
  • Kääntäjät vs. prosessorit, RISC vs CISC, jaettu muisti vs. viestien välitys;
  • Hauraan monisäikeisen koodin kirjoittamisen taito;
  • Kuinka opettaa opiskelijoita kirjoittamaan monimutkaista monisäikeistä koodia;
  • Uusi painos kirjasta "The Art of Multiprocessor Programming";
  • Kuinka tapahtumamuisti keksittiin;   
  • Miksi hajautetun laskennan alalla kannattaa tehdä tutkimusta;
  • Onko algoritmien kehitys pysähtynyt ja miten siitä eteenpäin?
  • Työskentely Brownin yliopistossa;
  • Ero yliopiston ja yrityksen sisäisen tutkimuksen välillä;
  • Hydra ja SPTDC.

Haastattelun suorittaa:

Vitali Aksenov — tällä hetkellä tohtori IST Austriassa ja ITMO-yliopiston tietokonetekniikan laitoksen työntekijä. Tekee tutkimusta kilpailukykyisten tietorakenteiden teorian ja käytännön alalla. Ennen työskentelyä IST:llä hän suoritti tohtorin tutkinnon Paris Diderot -yliopistosta ja ITMO-yliopistosta professori Peter Kuznetsovin johdolla.

Aleksei Fedorov - Tuottaja JUG Ru Groupissa, venäläisessä yrityksessä, joka järjestää konferensseja kehittäjille. Aleksei osallistui yli 50 konferenssin valmisteluun, ja hänen ansioluettelonsa sisältää kaiken Oraclen kehitysinsinöörin tehtävästä (JCK, Java Platform Group) Odnoklassnikin kehittäjäksi.

Vladimir Sitnikov - Insinööri Netcrackerissa. Kymmenen vuotta työtä NetCracker OS:n suorituskyvyn ja skaalautuvuuden parissa. Ohjelmisto on teleoperaattoreiden käyttämä verkko- ja verkkolaitteiden hallintaprosessien automatisointiin. Kiinnostunut Java- ja Oracle Database -suorituskykyongelmista. Yli tusinan virallisen PostgreSQL JDBC -ohjaimen suorituskykyparannuksen kirjoittaja.

Vuorovaikutus korkeakoulujen ja teollisuuden välillä

Alexey: Maurice, olet työskennellyt akateemisessa ympäristössä hyvin pitkään ja ensimmäinen kysymys on akateemisen ja teollisuuden vuorovaikutus. Voitko kertoa, kuinka heidän välinen vuorovaikutus on muuttunut viime aikoina? Mitä tapahtui 20-30 vuotta sitten ja mitä tapahtuu nyt? 

Maurice: Olen aina yrittänyt tehdä tiivistä yhteistyötä kaupallisten yritysten kanssa, koska niillä on mielenkiintoisia ongelmia. He eivät yleensä ole kovin kiinnostuneita tulosten julkaisemisesta tai ongelmiensa yksityiskohtaisista selityksistä maailmanyhteisölle. He ovat kiinnostuneita vain näiden ongelmien ratkaisemisesta. Olen työskennellyt tällaisissa yrityksissä jonkin aikaa. Työskentelin viisi vuotta kokopäiväisesti Digital Equipment Corporationin tutkimuslaboratoriossa, joka oli aiemmin suuri tietokoneyritys. Työskentelin päivän viikossa Sunilla, Microsoftilla ja Oraclella ja tein vähän töitä Facebookissa. Nyt aion jäädä sapattivapaalle (yhdysvaltalaisen yliopiston professori saa pitää tällaisen loman vuodeksi noin kerran kuudessa vuodessa) ja työskentelen Algorand, tämä on kryptovaluuttayhtiö Bostonissa. Tiivis yhteistyö yritysten kanssa on aina ollut ilo, sillä näin oppii uutta ja mielenkiintoista. Saatat jopa olla ensimmäinen tai toinen henkilö, joka julkaisee artikkelin valitusta aiheesta sen sijaan, että kehität asteittain ratkaisuja ongelmiin, joita kaikki muut jo työskentelevät.

Aleksei: Voitko kertoa meille tarkemmin, kuinka tämä tapahtuu?

Maurice: Tietenkin. Tiedätkö, kun työskentelin Digital Equipment Corporationissa, minä ja Elliot Moss, keksimme tapahtumamuistin. Se oli erittäin hedelmällistä ajanjaksoa, jolloin kaikki alkoivat olla kiinnostuneita tietotekniikasta. Rinnakkaisuus mukaan lukien, vaikka moniytimisjärjestelmiä ei vielä ollut olemassa. Aurinko- ja Oracle-päivinä työskentelin paljon rinnakkaisten tietorakenteiden parissa. Työskentelin Facebookissa heidän blockchain-projektinsa parissa, josta en voi puhua, mutta toivon, että se tulee pian julkisuuteen. Ensi vuonna työskentelen Algorandissa älykkäitä sopimuksia tutkivassa tutkimusryhmässä.

Alexey: Blockchainista on tullut erittäin suosittu aihe muutaman viime vuoden aikana. Auttaako tämä tutkimustasi? Ehkä se helpottaa apurahojen saamista tai tarjoaa resursseja alalla toimivilta yrityksiltä?

Maurice: Sain jo pienen apurahan Ethereum-säätiöltä. Blockchainin suosio on erittäin hyödyllinen inspiroimaan opiskelijoita työskentelemään tällä alalla. He ovat erittäin kiinnostuneita siitä ja ovat innoissaan osallistumisesta, mutta joskus he eivät ymmärrä, että ulkopuolelta jännittävältä kuulostava tutkimus osoittautuu todella kovaksi työksi. Olen kuitenkin todella innoissani voidessani käyttää kaikkea tätä mystiikkaa lohkoketjun ympärillä auttaakseni houkuttelemaan opiskelijoita. 

Mutta siinä ei vielä kaikki. Olen useiden blockchain-startup-yritysten neuvottelukunnassa. Jotkut heistä saattavat onnistua, jotkut eivät, mutta on aina erittäin mielenkiintoista nähdä heidän ideoitaan, tutkia niitä ja neuvoa ihmisiä. Jännittävintä on, kun varoittaa ihmisiä tekemästä jotain. Monet asiat tuntuvat aluksi hyvältä idealta, mutta ovatko ne todella?

Blockchain-tutkimuksen säätiö

Vitaly: Jotkut ihmiset ajattelevat, että tulevaisuus on lohkoketjussa ja sen algoritmeissa. Ja muut ihmiset sanovat, että se on vain uusi kupla. Voitko kertoa mielipiteesi tästä asiasta?

Maurice: Suuri osa siitä, mitä blockchain-maailmassa tapahtuu, on väärin, osa on vain huijausta, paljon on yliarvostettua. Uskon kuitenkin, että näillä tutkimuksilla on vankka tieteellinen perusta. Se, että lohkoketjumaailma on täynnä ideologisia eroja, osoittaa jännityksen ja omistautumisen tason. Toisaalta tämä ei ole erityisen hyödyllistä tieteellisen tutkimuksen kannalta. Jos nyt julkaiset artikkelin, jossa puhutaan tietyn algoritmin puutteista, tuloksena oleva reaktio ei ole aina täysin tieteellinen. Usein ihmiset heittävät tunteensa esiin. Luulen, että tämänkaltainen jännitys tällä alalla saattaa tuntua houkuttelevalta joillekin, mutta loppujen lopuksi on olemassa todellisia tieteellisiä ja teknisiä kysymyksiä, joihin on puututtava. Täällä on paljon tietojenkäsittelytiedettä.

Vitaly: Yrität siis luoda perustan lohkoketjututkimukselle, eikö niin?

Maurice: Yritän luoda perustan vankalle, tieteellisesti ja matemaattisesti järkevälle tieteenalalle. Ja osa ongelmaa on se, että joskus sinun täytyy vastustaa joitain muiden ihmisten liian ankaria kantoja ja jättää ne huomiotta. Joskus ihmiset kysyvät, miksi työskentelen alueella, josta vain terroristit ja huumekauppiaat ovat kiinnostuneita. Tällainen reaktio on yhtä merkityksetöntä kuin niiden seuraajien käyttäytyminen, jotka sokeasti toistavat sanojasi. Luulen, että totuus on jossain puolivälissä. Lohkoketjulla on syvällinen vaikutus yhteiskuntaan ja maailmantalouteen. Mutta tämä ei todennäköisesti tapahdu modernin tekniikan ansiosta. Nykyaikaiset teknologiat kehittyvät ja se, mitä tulevaisuudessa kutsutaan lohkoketjuksi, tulee erittäin tärkeäksi. Se ei ehkä edes näytä modernilta lohkoketjulta, se on avoin kysymys.

Jos ihmiset keksivät uusia teknologioita, he kutsuvat sitä jatkossakin lohkoketjuksi. Tarkoitan, aivan kuten tämän päivän Fortranilla ei ole mitään tekemistä 1960-luvun Fortran-kielen kanssa, mutta kaikki kutsuvat sitä Fortraniksi. Sama UNIXille. Se, mitä kutsutaan "lohkoketjuksi", tekee edelleen vallankumouksensa. Mutta epäilen, että tämä uusi lohkoketju on jotain sellaista, mitä kaikki nauttivat käyttämisestä nykyään.

Mistä läpimurtoideat tulevat? Suosion vaikutus

Aleksei: Onko blockchainin suosio johtanut uusiin tuloksiin tieteellisestä näkökulmasta? Lisää vuorovaikutusta, enemmän opiskelijoita, enemmän yrityksiä alueella. Onko tästä suosion kasvusta jo tuloksia?

Maurice: Kiinnostuin tästä, kun joku ojensi minulle virallisen lehtisen yritykselle, joka oli juuri kerännyt melko paljon rahaa. Se kirjoitti aiheesta Bysantin kenraalien tehtävä, jonka olen enemmän kuin tuttu. Se, mitä esitteessä oli kirjoitettu, oli selvästi teknisesti väärin. Ihmiset, jotka kirjoittivat kaiken tämän, eivät oikein ymmärtäneet ongelman taustalla olevaa mallia... ja silti tämä yritys keräsi paljon rahaa. Myöhemmin yritys korvasi tämän esitteen hiljaa paljon oikeammalla versiolla - enkä kerro mikä tämän yrityksen nimi oli. He ovat edelleen lähellä ja voivat hyvin. Tämä tapaus sai minut vakuuttuneeksi siitä, että ensinnäkin lohkoketju on yksinkertaisesti hajautetun tietojenkäsittelyn muoto. Toiseksi pääsykynnys (ainakin silloin, neljä vuotta sitten) oli melko matala. Tällä alalla työskentelevät ihmiset olivat erittäin energisiä ja älykkäitä, mutta he eivät lukeneet tieteellisiä artikkeleita. He yrittivät keksiä tunnettuja asioita uudelleen ja tekivät sen väärin. Nykyään draama on vähentynyt.

Aleksei: Tämä on erittäin mielenkiintoista, koska muutama vuosi sitten meillä oli erilainen suuntaus. Se on vähän kuin etupään kehitys, kun selainpohjaiset käyttöliittymäkehittäjät keksivät uudelleen kokonaisia ​​teknologioita, jotka olivat jo suosittuja taustalla: järjestelmien rakentaminen, jatkuva integrointi ja sen kaltaiset. 

Maurice: Olen samaa mieltä. Mutta tämä ei ole yllättävää, sillä todella läpimurtoideat tulevat aina vakiintuneen yhteisön ulkopuolelta. Vakiintuneet tutkijat, etenkään vakiintuneet akateemikot, eivät todennäköisesti tee mitään todella uraauurtavaa. Seuraavaa konferenssia varten on helppo kirjoittaa esitelmä siitä, kuinka olet hieman parantanut aikaisemman työsi tuloksia. Mene konferenssiin, tapaa ystäviä, puhu samoista asioista. Ja ihmiset, jotka purskahtivat sisään läpimurtoideoilla, tulevat melkein aina ulkopuolelta. He eivät tiedä sääntöjä, he eivät osaa kieltä, mutta siitä huolimatta... Jos olet vakiintuneessa yhteisössä, suosittelen kiinnittämään huomiota uusiin asioihin, johonkin, joka ei sovi kokonaiskuvaan. Tietyssä mielessä voidaan yrittää yhdistää ulkoista, sujuvampaa kehitystä jo ymmärtämiimme menetelmiin. Yritä ensin luoda tieteellinen perusta ja sitten muuttaa sitä niin, että sitä voidaan soveltaa uusiin läpimurtoideoihin. Mielestäni lohkoketju on loistava tuore, häiritsevä idea.

Aleksei: Miksi luulet tämän tapahtuvan? Koska "ulkopuolisilla" ihmisillä ei ole mitään erityisiä esteitä yhteisössä?

Maurice: Tässä on kaava menossa. Jos luet impressionistien historiaa maalauksessa ja taiteessa yleensä, niin kuuluisat taiteilijat hylkäsivät aikoinaan impressionismin. He sanoivat, että se oli jotenkin lapsellista. Sukupolvea myöhemmin tästä aiemmin hylätystä taidemuodosta tuli standardi. Mitä näen alallani: lohkoketjun keksijät eivät olleet kiinnostuneita vallasta, julkaisujen ja viittausindeksin lisäämisestä, he halusivat vain tehdä jotain hyvää. Ja niin he istuivat alas ja alkoivat tehdä sitä. Niistä puuttui tietty tekninen syvyys, mutta se on korjattavissa. On paljon vaikeampaa keksiä uusia luovia ideoita kuin korjata ja vahvistaa riittämättömästi kypsiä. Näiden keksijöiden ansiosta minulla on nyt tekemistä!

Aleksei: Tämä on samanlainen kuin startup-yritysten ja vanhojen projektien välinen ero. Perimme monia ajattelun rajoituksia, esteitä, erityisvaatimuksia ja niin edelleen.

Maurice: Hyvä analogia on hajautettu laskenta. Ajattele lohkoketjua ikään kuin se olisi startuppi ja hajautettu tietotekniikka suurena, vakiintuneena yrityksenä. Hajautettua tietojenkäsittelyä hankitaan ja yhdistetään lohkoketjuun.

Tohtori Barbara Liskovin valvonnassa

Vitaly: Meillä on vielä paljon kysymyksiä! Tutkimme taustaasi ja löysimme mielenkiintoisen tosiasian tohtorin tutkinnostasi. Kyllä, tämä oli kauan sitten, mutta se näyttää olevan tärkeä aihe. Olet suorittanut tohtorintutkinnon itsesi ohjauksessa Barbara Liskov! Barbara tunnetaan hyvin ohjelmointikieliyhteisössä ja yleisesti ottaen hyvin tunnettu henkilö. On loogista, että tutkimuksesi kohdistui ohjelmointikielten alaan. Miten siirryit rinnakkaislaskentaan? Miksi päätit vaihtaa aihetta?

Maurice: Tuolloin Barbara ja hänen ryhmänsä tarkastelivat vain hajautettua tietojenkäsittelyä, mikä oli aivan uusi idea. Oli myös niitä, jotka sanoivat, että hajautettu tietojenkäsittely on hölynpölyä ja että tietokoneiden välinen kommunikointi on turhaa. Yksi hajautetussa laskennassa käsitellyistä ongelmista, joka erottaa sen keskitetystä laskennasta, on vikasietoisuus. Pitkän tutkimuksen jälkeen päätimme, että hajautetun laskennan ohjelmointikielessä on oltava jotain atomitapahtumia, koska et voi koskaan olla varma etäpuhelun onnistumisesta. Kun sinulla on tapahtumat, syntyy samanaikaisuuden hallinnan ongelma. Sitten tehtiin paljon työtä erittäin rinnakkaisten tapahtumatietorakenteiden saamiseksi. Sitten kun valmistuin, menin Carnegie Mellon ja alkoi etsiä aihetta työstettäväksi. Tuli mieleen, että tietojenkäsittely on siirtynyt yksittäisistä tietokoneista tietokoneverkkoihin. Moniprosessorit olisivat luonnollinen jatko edistymiselle - sanaa "moniytiminen" ei vielä ollut olemassa. Ajattelin: mikä vastaa atomitransaktiota moniytimisessä järjestelmässä? Ei todellakaan säännöllisiä tapahtumia, koska ne ovat liian suuria ja raskaita. Ja siitä sain idean linearisoitavuus ja näin keksin koko odotusvapaan synkronoinnin. Tämä oli yritys vastata kysymykseen, mikä on atomitransaktioiden analogi moniprosessorijärjestelmälle, jossa on jaettu muisti. Ensi silmäyksellä tämä teos saattaa näyttää täysin erilaiselta, mutta itse asiassa se on jatkoa samalle teemalle.

Maailma odottaa moniytimistä

Vitaly: Mainitsit, että tuohon aikaan oli hyvin vähän moniytimiä tietokoneita, eikö niin?

Maurice: He eivät vain olleet siellä. Siellä oli useita niin sanottuja symmetrisiä moniprosessoreita, jotka oli periaatteessa kytketty samaan väylään. Tämä ei toiminut kovin hyvin, koska joka kerta kun uusi yritys loi jotain vastaavaa, Intel julkaisi yhden prosessorin, joka oli parempi kuin moniprosessori.

Aleksei: Eikö tämä tarkoita, että muinaisina aikoina se oli enemmän teoreettista tutkimusta?

Maurice: Se ei ollut teoreettinen tutkimus, vaan pikemminkin spekulatiivinen tutkimus. Kaikki tämä ei koskenut työskentelyä monien lauseiden kanssa, vaan esitimme hypoteeseja arkkitehtuurista, jota ei tuolloin ollut olemassa. Tätä varten tutkimus on! Mikään yritys ei olisi tehnyt jotain tällaista, se kaikki oli jotain kaukaisesta tulevaisuudesta. Itse asiassa näin oli vuoteen 2004 asti, jolloin todelliset moniytimiset prosessorit ilmestyivät. Koska prosessorit ylikuumenevat, voit pienentää prosessoria, mutta et voi tehdä siitä nopeampaa. Tämän vuoksi tapahtui siirtyminen moniytimiin arkkitehtuureihin. Ja sitten se merkitsi sitä, että yhtäkkiä kaikille menneisyydessä kehittämillemme käsitteille oli käyttöä.

Aleksei: Miksi arvelet, että moniytimiset prosessorit ilmestyivät vasta XNUMX-luvulla? Joten miksi on niin myöhäistä?

Maurice: Tämä johtuu laitteistorajoituksista. Intel, AMD ja muut yritykset ovat erittäin hyviä prosessorin nopeuden lisäämisessä. Kun jossain vaiheessa prosessoreista tuli niin pieniä, etteivät ne voineet enää nostaa kellotaajuutta, koska prosessorit alkoivat palaa loppuun. Voit tehdä niistä pienempiä, mutta ei nopeampia. Mitä heillä on - hyvin pienen prosessorin sijaan niihin mahtuu kahdeksan, kuusitoista tai kolmekymmentäkaksi prosessoria samaan koteloon, johon aiemmin mahtui vain yksi. Nyt sinulla on monisäikeinen ja nopea viestintä niiden välillä, koska he jakavat välimuistit. Mutta et voi pakottaa heitä juoksemaan nopeammin - siellä on hyvin tarkka nopeusrajoitus. Ne paranevat pikkuhiljaa, mutta eivät enää niin paljon. Fysiikan lait estivät parannuksia.

Uusi maailma tuo uusia ongelmia. NUMA, NVM ja arkkitehtuurihakkerointi

Aleksei: Kuulostaa erittäin järkevältä. Uusien moniytimien prosessorien myötä tuli uusia ongelmia. Odotitko sinä ja kollegasi näitä ongelmia? Ehkä opit niitä etukäteen? Teoreettisissa tutkimuksissa tällaisia ​​asioita ei useinkaan ole kovin helppoa ennustaa. Kun ongelmia ilmeni, miten ne vastasivat sinun ja kollegojesi odotuksia? Vai olivatko ne täysin uusia, ja sinun ja kollegojesi piti viettää paljon aikaa ongelmien ratkaisemiseen sellaisina kuin ne ilmestyivät?

Vitaly: Lisään Aleksein kysymykseen: ennustitko oikein prosessorin arkkitehtuuria opiskellessasi teoriaa?

Maurice: Ei 100%. Mutta mielestäni kollegani ja minä olemme tehneet hyvää työtä ennustaessaan moniytimiä jaetulla muistilla. Mielestäni ennustimme oikein vaikeudet kehittää rinnakkaisia ​​tietorakenteita, jotka toimivat ilman lukkoja. Tällaiset tietorakenteet ovat olleet tärkeitä monille sovelluksille, vaikkakaan ei kaikille, mutta usein todella tarvitset lukkiutumattoman tietorakenteen. Kun keksimme ne, monet väittivät, että tämä oli hölynpölyä, että kaikki toimi hyvin lukkojen kanssa. Ennustimme varsin hyvin, että moniin ohjelmointiongelmiin ja tietorakenneongelmiin tulee valmiita ratkaisuja. Oli myös monimutkaisempia ongelmia, kuten NUMA – epätasainen pääsy muistiin. Itse asiassa niitä ei edes harkittu ennen kuin moniytimiset prosessorit keksittiin, koska ne olivat liian erityisiä. Tutkimusyhteisö työskenteli kysymysten parissa, jotka olivat yleisesti ennakoitavissa. Jotkut tiettyihin arkkitehtuureihin liittyvät laitteisto-ongelmat joutuivat odottamaan siivillä - itse asiassa näiden arkkitehtuurien ilmestyminen. Esimerkiksi kukaan ei todellakaan työskennellyt GPU-kohtaisten tietorakenteiden parissa, koska grafiikkasuoritteita ei ollut silloin olemassa. Vaikka työtä on tehty paljon SIMD, nämä algoritmit olivat valmiita käyttöön heti, kun sopiva laitteisto tuli saataville. Kaikkea on kuitenkin mahdotonta ennakoida.

Aleksei: Jos ymmärrän oikein, NUMA on eräänlainen kompromissi kustannusten, suorituskyvyn ja joidenkin muiden asioiden välillä. Onko ideoita miksi NUMA ilmestyi niin myöhään?

Maurice: Luulen, että NUMA on olemassa muistin tuottamiseen käytetyn laitteiston ongelmien vuoksi: mitä kauempana komponentit ovat, sitä hitaammin niihin pääsee käsiksi. Toisaalta tämän abstraktion toinen arvo on muistin yhtenäisyys. Joten yksi rinnakkaislaskennan ominaisuuksista on, että kaikki abstraktiot ovat hieman rikki. Jos pääsy olisi täysin tasaista, kaikki muisti olisi yhtä kaukana, mutta tämä on taloudellisesti ja ehkä jopa fyysisesti mahdotonta. Siksi tämä konflikti syntyy. Jos kirjoitat ohjelman ikään kuin muisti olisi yhtenäinen, se on todennäköisesti oikein. Siinä mielessä, että se ei anna vääriä vastauksia. Mutta hänen esityksensä ei myöskään saa tähtiä taivaalta. Samoin jos kirjoitat spinlockit Välimuistihierarkiaa ymmärtämättä itse esto on oikea, mutta voit unohtaa suorituskyvyn. Tietyssä mielessä sinun on kirjoitettava ohjelmia, jotka elävät hyvin yksinkertaisen abstraktion päällä, mutta sinun on oikaistava ne ihmiset, jotka antoivat sinulle tuon abstraktion: sinun on tiedettävä, että abstraktion alla on jokin muistihierarkia, että on olemassa bussi sinun ja tämän muistin välillä ja niin edelleen. Siten yksilöllisesti hyödyllisten abstraktioiden välillä on ristiriita, joka johtaa meidät hyvin konkreettisiin ja pragmaattisiin ongelmiin.

Vitali: Entä tulevaisuus? Voitko ennustaa, miten prosessorit kehittyvät seuraavaksi? On ajatus, että yksi vastauksista on tapahtumamuisti. Sinulla on luultavasti jotain muuta varastossa.

Maurice: Edessä on pari suurta haastetta. Yksi on se, että koherentti muisti on ihana abstraktio, mutta se alkaa hajota erikoistapauksissa. Joten esimerkiksi NUMA on elävä esimerkki jostakin, jossa voit edelleen teeskennellä, että yhtenäinen muisti on olemassa. Itse asiassa ei, tuottavuus saa sinut itkemään. Jossain vaiheessa arkkitehtien on hylättävä ajatus yhden muistin arkkitehtuurista; et voi teeskennellä ikuisesti. Tarvitaan uusia ohjelmointimalleja, jotka ovat riittävän helppokäyttöisiä ja riittävän tehokkaita tekemään taustalla olevasta laitteistosta tehokkaan. Tämä on erittäin vaikea kompromissi, koska jos näytät ohjelmoijille arkkitehtuurin, jota laitteistossa todella käytetään, he tulevat hulluiksi. Se on liian monimutkainen eikä kannettava. Jos esität käyttöliittymän, joka on liian yksinkertainen, suorituskyky on huono. Siten on tehtävä monia erittäin vaikeita kompromisseja hyödyllisten ohjelmointimallien tarjoamiseksi, joita voidaan soveltaa todella suuriin moniytimisprosessoreihin. En ole varma, pystyykö kukaan muu kuin asiantuntija ohjelmoimaan 2000-ytimen tietokoneella. Ja ellet harjoita hyvin erikoistunutta tai tieteellistä tietojenkäsittelyä tai kryptografiaa tai jotain vastaavaa, ei ole vieläkään selvää, kuinka se tehdään oikein. 

Toinen vastaava alue on erikoistunut arkkitehtuuri. Grafiikkakiihdyttimiä on ollut olemassa jo pitkään, mutta niistä on tullut klassinen esimerkki siitä, kuinka voit ottaa erikoistuneen tietotekniikan ja käyttää sitä erillisellä sirulla. Tämä lisää omat haasteensa: miten kommunikoit tällaisen laitteen kanssa, miten ohjelmoit sen. Olen viime aikoina työskennellyt alueen ongelmien parissa lähellä muistilaskentaa. Ota pieni prosessori ja liimaa se valtavaan muistiin niin, että muisti toimii L1-välimuistin nopeudella ja kommunikoi sitten laitteen kanssa, kuten TPU – prosessori lataa uusia tehtäviä muistiytimeen. Tietorakenteiden ja kommunikaatioprotokollien suunnittelu tällaista varten on toinen mielenkiintoinen esimerkki. Mukautetut prosessorit ja laitteistot saavat siis parannuksia vielä jonkin aikaa.

Aleksei: Entä haihtumaton muisti (pitkäkestoinen muisti)?

Maurice: Voi, se on toinen loistava esimerkki! NVM muuttaa suuresti tapaamme tarkastella asioita, kuten tietorakenteita. Haihtumaton muisti, tietyssä mielessä, lupaa todella nopeuttaa asioita. Mutta se ei tee elämästä helpompaa, koska useimmat prosessorit, välimuistit ja rekisterit ovat edelleen epävakaita. Kun aloitat törmäyksen jälkeen, tilasi ja muistisi tila eivät ole täsmälleen samat kuin ennen kaatumista. Olen erittäin kiitollinen NVM:n parissa työskenteleville ihmisille - tutkijoille riittää tekemistä vielä pitkään oikeiden ehtojen selvittämisessä. Laskelmat ovat oikein, jos ne selviävät kaatumisesta, jossa välimuistien ja rekisterien sisältö katoaa, mutta päämuisti säilyy ehjänä.

Kääntäjät vs. prosessorit, RISC vs CISC, jaettu muisti vs. viestien välitys

Vladimir: Mitä mieltä olet "kääntäjät vs. prosessorit" -dilemmasta käskysarjan näkökulmasta? Selitän tietämättömille: jos siirrymme vinoon muistiin tai vastaavaan, voisimme käyttää hyvin yksinkertaista komentosarjaa ja pyytää kääntäjää luomaan monimutkaista koodia, joka voi hyödyntää uusia etuja. Tai voimme mennä toisin: toteuttaa monimutkaiset käskyt ja pyytää prosessoria järjestämään ohjeet uudelleen ja tekemään muita käsittelyjä niillä. Mitä mieltä olet siitä?

Maurice: Minulla ei oikeastaan ​​ole vastausta tähän kysymykseen. Tämä keskustelu on jatkunut neljä vuosikymmentä. Välillä oli aikaa lyhennettynä joukko komentoja ja monimutkainen sisällissotia käytiin joukko komentoja. Jonkin aikaa RISC-ihmiset voittivat, mutta sitten Intel rakensi heidän moottorinsa uudelleen siten, että sisäisesti käytettiin supistettua ohjesarjaa ja koko sarja vietiin ulkoisesti. Tämä on luultavasti aihe, jossa jokaisen uuden sukupolven on löydettävä omat kompromissinsa ja tehtävä omat päätöksensä. On erittäin vaikea ennustaa, mikä näistä asioista on parempi. Joten mikä tahansa tekemäni ennustus on totta tietyn ajan ja sitten taas väärä jonkin aikaa ja sitten taas totta.

Aleksei: Kuinka yleistä on teollisuudelle, että jotkin ideat voittavat useita vuosikymmeniä ja häviävät seuraavina? Onko muita esimerkkejä tällaisista säännöllisistä muutoksista?

Maurice: Hajautetun tietojenkäsittelyn aiheesta on ihmisiä, jotka uskovat siihen jaettu muisti ja ihmiset, jotka uskovat viestien vaihto. Aluksi hajautetussa laskennassa rinnakkaislaskenta tarkoittaa viestin välittämistä. Sitten joku huomasi, että jaetun muistin avulla ohjelmointi oli paljon helpompaa. Vastapuoli sanoi, että jaettu muisti on liian monimutkainen, koska se vaatii lukkoja ja vastaavia, joten kannattaa siirtyä kieliin, joissa ei yksinkertaisesti ole muuta kuin viestien välitystä. Joku katsoi, mitä tästä tuli ja sanoi: "Vau, tämä viestintätoteutus näyttää paljon jaetulta muistilta, koska luot paljon ja paljon näitä pieniä moduuleja, ne lähettävät viestejä toisilleen ja he kaikki lukitus"Tehdään parempi jaetun muistin tietokanta!" Kaikki tämä toistetaan yhä uudelleen ja uudelleen, ja on mahdotonta sanoa, että joku osapuolista on ehdottomasti oikeassa. Toinen osapuolista tulee aina hallitsemaan, koska heti kun toinen niistä melkein voittaa, ihmiset yhä uudelleen keksivät tapoja parantaa toista.

Hauraan monisäikeisen koodin kirjoittamisen taito

Aleksei: Tämä on erittäin mielenkiintoista. Esimerkiksi kun kirjoitamme koodia, riippumatta ohjelmointikielestä, meidän on yleensä luotava abstraktioita, kuten soluja, joita voidaan lukea ja kirjoittaa. Mutta itse asiassa tämä voi jollain fyysisellä tasolla näyttää viestin lähettämiseltä laitteistoväylän kautta eri tietokoneiden ja muiden laitteiden välillä. Osoittautuu, että työtä tapahtuu molemmilla abstraktiotasoilla kerralla.

Maurice: On täysin totta, että jaettu muisti on rakennettu viestien välittämiseen - linja-autoihin, välimuistiin ja niin edelleen. Mutta on vaikea kirjoittaa ohjelmia käyttämällä sanomanvälitystä, joten laitteisto valehtelee tarkoituksella ja teeskentelee, että sinulla on jonkinlainen yhtenäinen muisti. Tämä helpottaa yksinkertaisten, oikeiden ohjelmien kirjoittamista ennen kuin suorituskyky alkaa heikentyä. Sitten sanot: näyttää siltä, ​​​​että on aika ystävystyä välimuistin kanssa. Ja sitten alat huolehtia välimuistin sijainnista, ja sieltä se lähtee. Eräässä mielessä hakkeroit abstraktion: tiedät, että se ei ole vain tasaista, yhtenäistä muistia, ja käytät tätä tietoa välimuistiystävällisten ohjelmien kirjoittamiseen. Näin sinun on tehtävä todellisissa ongelmissa. Tämä ristiriita sinulle annetun suloisen, yksinkertaisen, mukavan abstraktion ja taustalla olevan laitteiston hirvittävän monimutkaisen toteutuksen välillä on paikka, jossa jokainen tekee oman kompromissinsa. Minulla on kirja moniprosessoreista ja synkronoinnista, ja jossain vaiheessa aioin kirjoittaa luvun tietorakenteista java.util.concurrent. Jos katsot niitä, esim luettelot, joissa on puutteita Nämä ovat upeita taideteoksia. (Toimittajan huomautus: Java-kielen tuntevien kannattaa ainakin katsoa toteutusta ConcurrentSkipListMap, voit katsoa linkkejä osoitteessa API и lähdekoodi). Mutta minun näkökulmastani olisi vastuutonta näyttää niitä opiskelijoille, koska tällainen tietorakenne on tavallaan kuin kaveri sirkuksessa, joka juoksee narulla karhunkuopan yli. Jos muutat edes yhtä pientä yksityiskohtaa, koko rakenne romahtaa. Tämä koodi on erittäin nopea ja tyylikäs vain siksi, että se on kirjoitettu täydellisesti, mutta pieninkin muutos johtaa täydelliseen epäonnistumiseen. Jos annan tämän koodin esimerkkinä opiskelijoille, he sanovat heti: minäkin pystyn siihen! Ja sitten jokin lentokone syöksyy maahan tai ydinreaktori räjähtää, ja olen syyllinen antamaan heille liikaa tietoa väärään aikaan.

Aleksei: Kun olin vähän nuorempi, yritin monta kertaa tutkia esimerkiksi Doug Leen lähdekoodia, java.util.concurrent, koska se on avoimen lähdekoodin, se on erittäin helppo löytää ja yrittää ymmärtää, mitä siellä tapahtuu. Se ei osoittautunut kovin hyvin: usein on täysin epäselvää, miksi Doug päätti tehdä jotain tällä tavalla, kun kaikki muut tekevät sen eri tavalla. Miten selität nämä asiat opiskelijoillesi? Onko olemassa jokin tietty oikea tapa kuvata esimerkiksi hardcore-algoritmin tiettyjä yksityiskohtia? Miten teet tämän?

Maurice: Piirustusopettajilla on klise, jonka he muistavat ensin: jos haluat piirtää kuten Picasso, sinun on ensin opittava piirtämään yksinkertaisia ​​realistisia kuvia, ja vasta kun tiedät säännöt, voit alkaa rikkoa niitä. Jos aloitat rikkomalla sääntöjä heti, päädyt sotkuun. Ensinnäkin opetan oppilaita kirjoittamaan yksinkertaista, oikeaa koodia huolehtimatta suorituskyvystä. Sanon, että täällä piilee monimutkaisia ​​ajoitusongelmia, joten älä välitä välimuistista, älä välitä muistimalleista, vaan varmista, että kaikki toimii oikein. Tämä on jo tarpeeksi vaikeaa: nykyaikainen ohjelmointi ei sinänsä ole helppoa varsinkaan uusille opiskelijoille. Ja kun heillä on intuitio oikeiden ohjelmien kirjoittamisesta, sanon: katsokaa näitä kahta spinlock-toteutusta: toinen on erittäin hidas, ja toinen ei myöskään ole kovin, mutta parempi. Matemaattisesti nämä kaksi algoritmia ovat kuitenkin samat. Itse asiassa yksi niistä käyttää välimuistin sijaintia. Toinen niistä toimii paikallisesti välimuistissa olevilla tiedoilla, ja toinen suorittaa toistuvasti toimintoja väylän yli. Et voi kirjoittaa tehokasta koodia, jos et ymmärrä, mitä se on, etkä osaa katkaista abstraktiota ja katsoa taustalla olevaa rakennetta. Mutta et voi aloittaa tätä heti. Jotkut ihmiset alkavat tehdä tätä heti ja uskovat omaan nerokseensa, yleensä se päättyy huonosti, koska he eivät ymmärrä periaatteita. Kukaan ei piirrä niin kuin Picasso tai kirjoita ohjelmia kuten Doug Lee, joka on juuri päässyt yliopistosta ensimmäisellä viikollaan. Kestää vuosia saavuttaa tämä tietotaso.

Aleksei: Osoittautuu, että jaat ongelman kahteen osaan: ensimmäinen on oikeellisuus, toinen suorituskyky?

Maurice: Aivan. Ja juuri tässä järjestyksessä. Osa ongelmaa on se, että uudet opiskelijat eivät ymmärrä, että oikeellisuutta on vaikea saavuttaa. Ensi silmäyksellä he sanovat: tämä on tietysti oikein, ei ole muuta kuin nopeuttaa sitä. Joten joskus kerron heille alun perin väärästä algoritmista ikään kuin se olisi oikea.

Kuinka opettaa opiskelijoita kirjoittamaan monisäikeistä koodia

Aleksei: Vain nähdäkseen, voivatko he aistia saaliin?

Maurice: Varoitan aina etukäteen, että joskus ehdotan vääriä algoritmeja. Ei pidä pettää ihmisiä. Suosittelen, että he suhtautuvat tietoon suolalla. Jos kerron jotain ja sanon: "Katso, tämä on ilmeisesti oikein" - tämä on signaali, että jossain he yrittävät pettää sinua, ja sinun pitäisi alkaa kysyä kysymyksiä. Seuraavaksi yritän rohkaista oppilaita jatkamaan kysymysten esittämistä, ja sitten ehdotan: "Mitä tapahtuu, jos jätämme asiat ennalleen?" Ja he näkevät virheen heti. Mutta opiskelijoiden vakuuttaminen siitä, että heidän on huolehdittava oikeellisuudesta, on paljon vaikeampaa kuin miltä ensi silmäyksellä näyttää. Monilla näistä opiskelijoista on ohjelmointikokemus lukiossa, jotkut ovat saaneet työpaikan ja suorittaneet ohjelmoinnin siellä, ja he ovat kaikki täynnä luottamusta. Tämä on jotain armeijan kaltaista: sinun on ensin muutettava heidän mielialaansa, jotta voit saada heidät lähestymään kärsivällisesti esiin tulevien ongelmien ratkaisemista. Tai ehkä se on kuin buddhalaiset munkit: ensin he oppivat järkeilemään oikeellisuudesta, ja kun he ymmärtävät oikeat päättelytavat, he saavat siirtyä seuraavalle tasolle ja alkaa murehtia suorituskykyä.

Aleksei: Eli toisinaan näytät opiskelijoille toimimattomia esimerkkejä, joiden ansiosta saat palautetta siitä, ymmärtävätkö he ongelman olemuksen, löytävätkö he väärän koodin ja väärän tuloksen. Joten tekevätkö opiskelijat sinut yleensä iloiseksi vai surulliseksi?

Maurice: Oppilaat löytävät melkein aina virheen lopulta. Jos he etsivät liian hitaasti, esitän johtavia kysymyksiä, ja tässä on tärkeää ymmärtää, että jos et koskaan petä heitä, he alkavat järjettömästi havaita sanasi lopullisena totuutena. Sitten he kyllästyvät ja alkavat nukahtaa lukiessaan Facebookia kannettavalla tietokoneella tunnilla. Mutta kun kerrot heille etukäteen, että heitä huijataan ja he näyttävät tyhmiltä, ​​jos he eivät tunne temppua, heistä tulee paljon valppaampia. Tämä on hyvä monella tapaa. Haluaisin oppilaiden kyseenalaistavan paitsi ymmärrystään asiasta, myös opettajan auktoriteetin. Ajatuksena on, että opiskelija voi milloin tahansa nostaa kätensä ja sanoa: Minusta se, mitä juuri sanoit, on väärin. Se on tärkeä oppimisväline. En halua, että yksikään opiskelija istuu ja ajattelee hiljaa itsekseen: tämä kaikki näyttää täydelliseltä hölynpölyltä, mutta käden nostaminen on liian pelottavaa, ja joka tapauksessa hän on professori, joten kaikki, mitä hän sanoo, on totta. Siksi, jos heitä varoitetaan etukäteen, että kaikki kerrottu ei välttämättä ole totta, heillä on kannustin kiinnittää materiaaliin enemmän huomiota. Teen selväksi, että on oikein nostaa kätesi ja esittää kysymyksiä. Kysymyksesi saattaa kuulostaa tyhmältä tai naiivilta, mutta näin usein parhaat kysymykset syntyvät.

Aleksei: Erittäin mielenkiintoista. Yleensä ihmisillä on jonkinlainen psykologinen este, joka ei salli heidän esittää kysymyksiä professorille. Varsinkin jos huoneessa on paljon ihmisiä ja kaikki pelkäävät, että typerästä kysymyksestäsi keskusteleminen vie kaikkien näiden ihmisten aikaa. Onko mitään temppuja tämän kanssa?

Maurice: Pysähdyn usein kysymään klassisia kysymyksiä. Onko väite oikea tai kuinka ne ratkaisisivat keskusteltavan ongelman. Tämä on avaintoiminto, varsinkin oppitunnin alussa, kun ihmisillä on hämmennystä sanoa pieninkin asia. Esität opiskelijoille kysymyksen etkä sano enempää. On hiljaisuutta, kaikki jännittyvät hieman, jännitys kasvaa, sitten yhtäkkiä joku ei kestä, murtuu ja sanoo vastauksen. Näin käännät tilanteen toisin: vaikeneminen on vaikeampaa ja hankalampaa kuin vastaaminen! Tämä on tavallinen pedagoginen temppu. Jokaisen opettajan maailmassa pitäisi tietää, miten tämä tehdään.

Aleksei: Nyt meillä on erinomainen otsikko tälle haastattelulle: "On helpompi vastata kuin olla hiljaa."

Vitaly: Anna minun kysyä uudelleen. Työskentelet topologisten todisteiden parissa. Miten sinä edes osallistuit tähän, sillä hajautettu laskenta ja topologia ovat täysin eri asioita!

Maurice: Siellä on piilotettu yhteys. Opiskellessani matematiikkaa opiskelin puhdasta matematiikkaa. Minulla ei ollut varsinaista kiinnostusta tietokoneisiin, ennen kuin opintojeni päättyivät ja jouduin kohtaamaan pakottavan tarpeen etsiä työtä. Opiskelijana opiskelin algebrallista topologiaa. Monta vuotta myöhemmin työskennellessään ongelman parissa nimeltä "k-Set sopimusongelma", Käytin kaavioita ongelman mallintamiseen ja, kuten tuolloin näytti, olin löytänyt ratkaisun. Sinun piti vain istua alas ja kiertää laskua. Yritä löytää sopiva vastaus tästä kaaviosta. Mutta algoritmini ei toiminut: kävi ilmi, että hän juoksi ympyröissä ikuisesti. Valitettavasti kaikkea tätä ei voitu selittää graafiteorian muodollisella kielellä - sillä, jonka kaikki tietojenkäsittelytieteilijät tietävät. Ja sitten muistin, että monta vuotta sitten, topologian luokissa, käytimme käsitettä "yksinkertainen kompleksi", joka on kaavioiden yleistys korkeampiin ulottuvuuksiin. Sitten kysyin itseltäni: mitä tapahtuisi, jos muotoilemme ongelman uudelleen yksinkertaisiksi komplekseiksi? Tästä tuli avainhetki. Käyttämällä tehokkaampaa formalismia ongelma tulee yhtäkkiä paljon yksinkertaisempi. Ihmiset taistelivat sitä vastaan ​​pitkään kaavioiden avulla, mutta he eivät voineet tehdä mitään. Ja vieläkään he eivät voi - oikea vastaus ei osoittautunut algoritmiksi, vaan todisteeksi ongelman ratkaisemisen mahdottomuudesta. Eli tällaista algoritmia ei yksinkertaisesti ole olemassa. Mutta kaikki todisteet mahdottomuudesta perustuu joko yksinkertaisiin komplekseihin tai asioihin, joita ihmiset eivät teeskentele pitävänsä yksinkertaisina komplekseina. Vain siksi, että kutsut jotain uudella nimellä, se ei menetä olemustaan.

Vitaly: Kävi ilmi, että olit vain onnekas?

Maurice: Onnen lisäksi se on myös valmius. Tämä tarkoittaa, että sinun ei pidä unohtaa aiemmin oppimaasi "hyödytöntä". Mitä enemmän hyödyttömiä asioita opit, sitä enemmän ideoita saat, kun kohtaat uuden ongelman. Tällainen intuitiivinen kuvioiden yhteensovittaminen on tärkeää, koska... Tehdään näin, tämä on ketju: aluksi huomasin, että kaaviot eivät toimineet ollenkaan tai eivät toimineet ollenkaan, se muistutti jotain kahdeksan vuoden tapahtumista vuotta sitten ja opiskeluvuosiani, kun tutkimme kaikkia näitä yksinkertaisia ​​komplekseja. Tämä puolestaan ​​antoi minulle mahdollisuuden löytää vanhan topologian oppikirjani ja ladata sen takaisin päähäni. Mutta ilman sitä vanhaa tietoa, en olisi koskaan edistynyt alkuperäisen ongelman ratkaisemisessa.

Uusi painos kirjasta "The Art of Multiprocessor Programming"

Aleksei: Sanoit muutaman sanan kirjastasi. Ei luultavasti ole pahin salaisuus, että kirjoitit maailman tunnetuimman kirjan monisäikeistä, "Moniprosessoriohjelmoinnin taito". Se on jo noin 11 vuotta vanha ja sen jälkeen se on vasta julkaistu  tarkistettu uusintapainos. Tuleeko toinen painos?

Maurice: Hyvä, että kysyit! Se on hyvin pian, kolmen kuukauden kuluttua. Kirjoittajia on kaksi lisää, lisäsimme paljon enemmän materiaalia, paransimme osiota haarukka/liitos rinnakkaisuudesta, kirjoitimme osion MapReduce-sovellukseen, lisäsimme paljon uutta ja heitimme pois tarpeettomia asioita - mikä oli erittäin mielenkiintoista kirjoitushetkellä ensimmäinen painos, mutta se ei ole enää olemassa tänään. Tuloksena oli erittäin vakavasti tarkistettu kirja.

Aleksei: Kaikki on jo tehty, jäljellä on vain vapauttaa se?

Maurice: Pari lukua vaatii vielä työtä. Kustantajamme (jonka luulen jo vihaavan meitä) yrittää edelleen saada viestiä, että meidän pitäisi työskennellä nopeammin. Olemme paljon jäljessä aikataulusta. Teoriassa olisimme voineet tehdä tämän kirjan pari vuotta aikaisemmin.

Aleksei: Onko mahdollisuutta saada uusi versio kirjasta ennen joulua?

Maurice: Tämä on tavoitteemme! Mutta olen ennustanut voittoa niin monta kertaa, ettei kukaan enää usko minua. Sinun ei ehkä kannata luottaa minuun liikaa tässäkään asiassa.

Aleksei: Tämä on joka tapauksessa fantastinen uutinen. Pidin todella paljon kirjan ensimmäisestä painoksesta. Voisi sanoa, että olen fani.

Maurice: Toivon, että uusi painos on palavan innostuksesi arvoinen, kiitos!

Kuinka transaktiomuisti keksittiin

Vitaly: Seuraava kysymys koskee tapahtumamuistia. Ymmärtääkseni olet edelläkävijä tällä alalla, keksit sen aikana, jolloin kukaan ei ajatellut sellaisia ​​asioita. Miksi päätit muuttaa tälle alalle? Miksi kaupat tuntuivat sinulle tärkeiltä? Luulitko, että jonain päivänä ne toteutetaan laitteistossa?

Maurice: Olen tiennyt liiketoimista tutkijapäivistäni lähtien.

Vitaly: Kyllä, mutta nämä ovat erilaisia ​​liiketoimia!

Maurice: Työskentelin Elliott Mossin kanssa estävän jätteenkeräyksen parissa. Ongelmamme oli, että halusimme atomeittain muuttaa muutaman sanan muistissa ja sitten algoritmeista tulisi hyvin yksinkertaisia ​​ja ainakin osa niistä tehostuisi. Käyttämällä vertaa ja vaihtaa varten load-link/store-conditionalrinnakkaisarkkitehtuurin tarjoama, on mahdollista tehdä jotain, mutta se on erittäin tehotonta ja rumaa, koska joutuisi käsittelemään epäsuoraa kerrosta. Haluan muuttaa muistisanoja ja minun on vaihdettava, koska voin muuttaa vain yhtä osoitinta, joten niiden täytyy osoittaa jonkinlaiseen hakemistomaiseen rakenteeseen. Puhuimme siitä, kuinka hienoa olisi, jos voisimme muuttaa laitteistoa niin, että se voisi tehdä samanaikaista tallennusta. Elliott näyttää huomanneen tämän: jos tarkastellaan välimuistin koherenssiprotokollia, ne tarjoavat jo suurimman osan vaadituista toiminnoista. Optimistisessa tapahtumassa välimuistin koherenssiprotokolla huomaa ajoitusristiriidan ja välimuistista tulee mitätön. Mitä tapahtuu, jos spekulatiivisesti suoritat tapahtuman välimuistissasi ja käytät koherenssiprotokollamekanismeja ristiriitojen havaitsemiseen? Spekulatiivinen laitteistoarkkitehtuuri oli helppo suunnitella. Joten kirjoitimme sen aivan ensimmäinen julkaisu tapahtumamuistista. Samaan aikaan yritys, jossa työskentelin, Digital Equipment Corporation, loi uutta 64-bittistä prosessoria nimeltä Alpha. Joten menin ja pidin Alpha-kehitysryhmälle esitelmän hämmästyttävästä tapahtumamuististamme, ja he kysyivät: Kuinka paljon lisätuloja yrityksemme saisi, jos lisäisimme kaiken tämän suoraan prosessoriin? Ja minulla ei ollut mitään vastausta tähän, koska olen tekniikan asiantuntija, en ole markkinoinnin asiantuntija. Minulla ei todellakaan ollut mitään vastausta. He eivät olleet kovin vaikuttuneita siitä, etten tiennyt mitään.

Vitaly: Miljardeja! Sano vain miljardeja!

Maurice: Kyllä, se minun olisi pitänyt sanoa. Nyt, startupien ja kaiken aikakaudella, osaan kirjoittaa liiketoimintasuunnitelman. Että voit valehdella hieman mahdollisen voittosi koosta. Mutta niinä päivinä se vaikutti naiivilta, joten sanoin vain: "En tiedä." Jos tarkastellaan tapahtumamuistia käsittelevän julkaisun historiaa, huomaa, että vuoden kuluttua siihen viitattiin useita, ja sitten noin kymmeneen vuoteen kukaan ei lainannut tätä julkaisua ollenkaan. Lainaukset ilmestyivät noin 2004, jolloin todelliset moniytimet ilmestyivät. Kun ihmiset huomasivat, että rinnakkaiskoodin kirjoittaminen voi ansaita rahaa, aloitettiin uusi tutkimus. Ravi Rajwar kirjoitti artikkelin, joka jollakin tavalla toi transaktiomuistin käsitteen valtavirtaan. (Toimittajan huomautus: Tästä artikkelista on toinen versio, joka julkaistiin vuonna 2010 ja on vapaasti saatavilla PDF-muodossa). Yhtäkkiä ihmiset ymmärsivät tarkalleen, kuinka kaikkea tätä voidaan käyttää, kuinka perinteisiä lukoilla varustettuja algoritmeja voitaisiin nopeuttaa. Hyvä esimerkki jostakin, joka ennen tuntui vain mielenkiintoiselta akateemiselta ongelmalta. Ja kyllä, jos olisit kysynyt minulta tuolloin, ajattelinko tällä kaikella olevan merkitystä tulevaisuudessa, olisin vastannut: tietysti, mutta milloin tarkalleen, ei ole selvää. Ehkä 50 vuoden päästä? Käytännössä tämä osoittautui vain vuosikymmeneksi. On hienoa, kun tekee jotain ja jo kymmenen vuoden kuluttua ihmiset huomaavat sen.

Miksi hajautetun laskennan alalla kannattaa tehdä tutkimusta

Vitaly: Jos puhumme uudesta tutkimuksesta, mitä neuvoisit lukijoille - hajautettua tietojenkäsittelyä vai moniytimistä ja miksi? 

Maurice: Nykyään on helppoa saada moniytiminen prosessori, mutta todellisen hajautetun järjestelmän luominen on vaikeampaa. Aloin työstää niitä, koska halusin tehdä jotain erilaista kuin väitöskirjani. Tämä on neuvo, jonka annan aina uusille opiskelijoille: älä kirjoita jatkoa väitöskirjallesi, vaan yritä mennä uuteen suuntaan. Ja myös monisäikeisyys on helppoa. Voin kokeilla oman haarukkaani, joka pyörii kannettavassani, nousematta sängystä. Mutta jos haluaisin yhtäkkiä luoda todellisen hajautetun järjestelmän, minun pitäisi tehdä paljon työtä, houkutella opiskelijoita ja niin edelleen. Olen laiska ihminen ja työskentelen mieluummin moniytimisillä. Kokeilu moniytimisissä järjestelmissä on myös helpompaa kuin hajautettujen järjestelmien kokeiden tekeminen, koska jopa tyhmässä hajautetussa järjestelmässä on liian monia kontrolloitavia tekijöitä.

Vitaly: Mitä teet nyt tutkiessasi lohkoketjua? Mihin artikkeleihin sinun tulisi kiinnittää huomiota ensin?

Maurice: Ilmestynyt äskettäin erittäin hyvä artikkeli, jonka kirjoitin yhdessä opiskelijani Vikram Sarafin kanssa, erityisesti keskustelua varten osoitteessa Tokenomcs-konferenssi Pariisissa kolme viikkoa sitten. Tämä on artikkeli käytännön hajautetuista järjestelmistä, jossa ehdotamme Ethereumin monisäikeistä tekemistä. Tällä hetkellä älykkäät sopimukset (koodi, joka toimii lohkoketjussa) suoritetaan peräkkäin. Kirjoitimme aiemmin artikkelin, jossa puhuttiin tavasta käyttää spekulatiivisia liiketoimia prosessin nopeuttamiseksi. Otimme paljon ideoita ohjelmiston tapahtumamuistista ja sanoimme, että jos teet nämä ideat osaksi Etherium-virtuaalikonetta, kaikki toimii nopeammin. Mutta tätä varten on välttämätöntä, että sopimuksissa ei ole tietoristiriitoja. Ja sitten oletimme, että tosielämässä ei todellakaan ole tällaisia ​​konflikteja. Mutta meillä ei ollut keinoa ottaa selvää. Sitten meille tuli mieleen, että meillä oli lähes vuosikymmenen todellista sopimushistoriaa käsissämme, joten jätimme Ethereum-lohkoketjun pois ja kysyimme itseltämme: mitä tapahtuisi, jos nämä historialliset tietueet toteutettaisiin rinnakkain? Huomasimme merkittävän nopeuden nousun. Ethereumin alkuaikoina nopeus kasvoi erittäin paljon, mutta nykyään kaikki on hieman monimutkaisempaa, koska sopimuksia on vähemmän ja sarjoittamista vaativien tietojen ristiriitojen todennäköisyys on kasvanut. Mutta kaikki tämä on kokeellista työtä todellisilla historiallisilla tiedoilla. Hienoa lohkoketjussa on, että se muistaa kaiken ikuisesti, joten voimme palata ajassa taaksepäin ja tutkia, mitä olisi tapahtunut, jos olisimme käyttäneet koodin suorittamiseen erilaisia ​​algoritmeja. Miten ihmiset aiemmin olisivat pitäneet uudesta ideastamme? Sellainen tutkimus on paljon helpompaa ja mukavampaa tehdä, koska on olemassa asia, joka valvoo kaikkea ja tallentaa kaiken. Tämä on jo jotain enemmän samanlaista kuin sosiologia kuin algoritmien kehittäminen.

Onko algoritmien kehitys pysähtynyt ja miten tästä eteenpäin?

Vitaly: Viimeisen teoreettisen kysymyksen aika! Tuntuuko kilpailukykyisten tietorakenteiden edistyminen laskevan joka vuosi? Luuletko, että olemme saavuttaneet tasanne tietorakenteiden ymmärtämisessämme vai onko tulossa merkittäviä parannuksia? Ehkä on olemassa fiksuja ideoita, jotka voivat muuttaa kaiken täysin?

Maurice: Olemme saaneet saavuttaa tasannen perinteisten arkkitehtuurien tietorakenteissa. Mutta uusien arkkitehtuurien tietorakenteet ovat edelleen erittäin lupaava alue. Jos haluat luoda tietorakenteita esimerkiksi laitteistokiihdyttimille, GPU:n tietorakenteet ovat hyvin erilaisia ​​kuin CPU:n tietorakenteet. Kun kehität tietorakenteita lohkoketjuille, sinun täytyy tiivistää datapalat ja sitten laittaa ne johonkin esim. Merklen puu, väärennösten estämiseksi. Tällä alueella on ollut viime aikoina vilkasta toimintaa, ja monet ovat tehneet erittäin hyvää työtä. Mutta uskon, että uudet arkkitehtuurit ja uudet sovellukset johtavat uusiin tietorakenteisiin. Vanhat sovellukset ja perinteinen arkkitehtuuri – tutkimiselle ei ehkä ole enää paljon tilaa. Mutta jos poistut syrjäiseltä polulta ja katsot reunojen taakse, näet hulluja asioita, joita valtavirta ei ota vakavasti – siellä kaikkea jännittävää todella tapahtuu.

Vitaly: Siksi minun piti keksiä oma arkkitehtuuri ollakseni erittäin kuuluisa tutkija :)

Maurice: Voit "varastaa" jonkun toisen uuden arkkitehtuurin - se näyttää paljon helpommalta!

Työskentelee Brownin yliopistossa

Vitaly: Voisitko kertoa meille lisää Brownin yliopistomissä olet töissä? Hänestä ei tiedetä paljoa tietotekniikan kontekstissa. Vähemmän kuin esimerkiksi MIT:stä.

Maurice: Brownin yliopisto on yksi Yhdysvaltojen vanhimmista yliopistoista. Luulen, että vain Harvard on hieman vanhempi. Ruskea on osa ns Ivy League, joka on kokoelma kahdeksasta vanhimmasta yliopistosta. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Se on tavallaan vanha, pieni ja hieman aristokraattinen yliopisto. Pääpaino on taiteiden koulutuksessa. Se ei yritä olla kuin MIT, MIT on hyvin erikoistunut ja tekninen. Brown on loistava paikka opiskella venäläistä kirjallisuutta tai klassista kreikkaa ja tietysti tietojenkäsittelytieteitä. Se keskittyy kokonaisvaltaiseen koulutukseen. Suurin osa opiskelijoistamme käy Facebookissa, Applessa, Googlessa – joten uskon, että opiskelijoillamme ei ole vaikeuksia löytää töitä alalta. Menin töihin Browniin, koska olin aiemmin työskennellyt Digital Equipment Corporationissa Bostonissa. Tämä oli yritys, joka keksi monia mielenkiintoisia asioita, mutta kiisti henkilökohtaisten tietokoneiden merkityksen. Vaikean kohtalon omaava yritys, jonka perustajat olivat kerran nuoria vallankumouksellisia, he eivät oppineet mitään eivätkä unohtaneet mitään, ja niin he muuttuivat vallankumouksellisista taantumuksellisiksi noin kymmenessä vuodessa. He tykkäsivät vitsailla, että henkilökohtaiset tietokoneet kuuluivat autotalliin – tietysti hylättyyn autotalliin. On aivan selvää, että joustavammat yritykset tuhosivat ne. Kun kävi selväksi, että yritys oli pulassa, soitin ystävälleni Browniin, joka on noin tunnin päässä Bostonista. En halunnut lähteä Bostonista tuolloin, koska muissa yliopistoissa ei ollut paljon avoimia paikkoja. Tämä oli aikaa, jolloin tietojenkäsittelytieteessä ei ollut niin paljon työpaikkoja kuin nyt. Ja Brownilla oli avaus, minun ei tarvinnut muuttaa kotiani, minun ei tarvinnut muuttaa perhettäni, ja rakastan todella asumista Bostonissa! Niin päätin mennä Browniin. Pidän siitä. Oppilaat ovat ihania, joten en ole koskaan edes yrittänyt mennä muualle. Sapattivapaallani työskentelin Microsoftilla vuoden, kävin vuoden Technionissa Haifassa ja nyt olen Algorandissa. Minulla on monia kollegoita kaikkialla, ja siksi luokkahuoneidemme fyysinen sijainti ei ole niin tärkeä. Mutta tärkeintä ovat opiskelijat, he ovat täällä parhaita. En ole koskaan yrittänyt mennä muualle, koska olen melko onnellinen täällä.

Silti huolimatta Brownin maineesta Yhdysvalloissa, hän on yllättävän tuntematon ulkomailla. Kuten näette, teen nyt kaikkeni korjatakseni tämän tilanteen.

Ero yliopiston ja yrityksen sisäisen tutkimuksen välillä

Vitaly: Okei, seuraava kysymys koskee digitaalisia laitteita. Olit siellä tutkijana. Mitä eroa on työskennellä suuren yrityksen T&K-osastolla ja työskennellä yliopistossa? Mitkä ovat edut ja haitat?

Maurice: Työskentelin kahdenkymmenen vuoden ajan Microsoftilla, työskentelin tiiviisti Sun Microsystemsin, Oraclen, Facebookin ja nyt Algorandin työntekijöiden kanssa. Kaiken tämän perusteella haluan sanoa, että ensiluokkaista tutkimusta on mahdollista tehdä niin yrityksissä kuin yliopistoissakin. Tärkeä ero on, että yrityksessä työskentelet kollegoiden kanssa. Jos minulla tulee yhtäkkiä idea projektista, jota ei vielä ole, minun on vakuutettava kollegani siitä, että tämä on hyvä idea. Jos olen Brownissa, voin kertoa opiskelijoilleni: työstetään antigravitaatiota! He joko lähtevät jonkun muun takia tai ryhtyvät projektiin. Kyllä, minun on löydettävä rahoitus, minun on kirjoitettava apurahahakemus ja niin edelleen. Joka tapauksessa oppilaita tulee aina olemaan paljon, ja voit tehdä päätöksiä yksipuolisesti. Mutta yliopistossa et todennäköisesti työskentele tasosi ihmisten kanssa. Teollisen tutkimuksen maailmassa sinun on ensin saatava kaikki vakuuttuneiksi siitä, että projektisi kannattaa ottaa mukaan. En voi tilata kenellekään mitään. Ja nämä molemmat työskentelytavat ovat arvokkaita, koska jos työskentelet jonkin todella hullun asian parissa ja kollegoitasi on vaikea vakuuttaa, on jatko-opiskelijoiden vakuuttaminen helpompaa - varsinkin jos maksat heille. Jos työskentelet jonkin asian parissa, joka vaatii paljon kokemusta ja syvää asiantuntemusta, tarvitset työtovereita, jotka voivat sanoa "ei, sattuu niin, että ymmärrän tämän alueen ja ideasi on huono, se ei toimi." Tämä on erittäin hyödyllistä ajanhukkaa. Lisäksi, jos teollisuuslaboratorioissa vietät paljon aikaa raporttien kirjoittamiseen, niin yliopistossa vietät tämän ajan yrittäessäsi löytää rahaa. Jos haluan, että opiskelijat pääsevät jonnekin, minun on löydettävä rahat siihen muualta. Ja mitä tärkeämpi asemasi yliopistossa, sitä enemmän sinulla on aikaa käyttää rahan keräämiseen. Joten nyt tiedät, mitä varten työskentelen - ammattimainen kerjäläinen! Kuten yksi niistä munkeista, joka kävelee tarjoilulautasen kanssa. Yleensä nämä kaksi toimintaa täydentävät toisiaan. Siksi yritän elää ja pitää jalat maassa molemmissa maailmoissa.

Vitaly: Vaikuttaa siltä, ​​että yrityksen vakuuttaminen on vaikeampaa kuin muiden tiedemiesten vakuuttaminen.

Maurice: Vaikeampaa ja paljon muuta. Lisäksi se on eri alueilla erilaista: toiset tekevät täysimittaista tutkimusta, kun taas toiset keskittyvät omaan aiheeseensa. Jos menisin Microsoftille tai Facebookille ja sanoisin: tehdään antigravitaatio, he tuskin arvostaisivat sitä. Mutta jos sanoisin täsmälleen saman jatko-opiskelijoilleni, he todennäköisimmin pääsisivät töihin välittömästi, vaikka nyt minulla olisi ongelmia - minun täytyy loppujen lopuksi löytää rahaa tähän. Mutta niin kauan kuin haluat tehdä jotain, joka on yhdenmukainen yrityksen tavoitteiden kanssa, yritys voi olla erittäin hyvä paikka tehdä tutkimusta.

Hydra ja SPTDC

Vitaly: Kysymykseni ovat loppumassa, joten puhutaanpa vähän tulevasta Venäjän matkasta.

Maurice: Kyllä, odotan innolla paluuta Pietariin.

Aleksei: Minulla on kunnia olla kanssamme tänä vuonna. Tämä on toinen kertasi Pietarissa, eikö niin?

Maurice: Jo kolmas!

Aleksei: Ymmärrän, mutta SPTDC - ehdottomasti toinen. Viimeksi kouluun soitettiin SPTCC, olemme nyt vaihtaneet yhden kirjaimen (C kirjaimeen D, Concurrent to Distributed) korostaaksemme, että tänä vuonna on enemmän hajautettuun laskentaan liittyviä alueita. Voitko sanoa muutaman sanan koulun raporteistasi ja Hydra-konferenssi?

Maurice: Koulussa haluan puhua lohkoketjun perusteista ja siitä, mitä voit tehdä sillä. Haluaisin näyttää, että lohkoketjut ovat hyvin samanlaisia ​​kuin meille tuttu monisäikeinen ohjelmointi, mutta niillä on omat vivahteet, ja nämä erot on tärkeää ymmärtää. Jos teet virheen tavallisessa verkkosovelluksessa, se on vain ärsyttävää. Jos kirjoitat bugisen koodin rahoitussovellukseen, joku varastaa varmasti kaikki rahasi. Nämä ovat täysin eri vastuun tasoja ja seurauksia. Puhun hieman työntodistuksesta, älykkäistä sopimuksista, transaktioista eri lohkoketjujen välillä.

Vierelläni työskentelee muita puhujia, joilla on myös sanottavaa lohkoketjusta, ja sovimme koordinoivamme toistemme kanssa, jotta tarinamme sopivat hyvin yhteen. Mutta suunnitteluraporttia varten haluan kertoa laajalle yleisölle ymmärrettävän selityksen siitä, miksi ei pidä uskoa kaikkea mitä kuulet lohkoketjuista, miksi lohkoketjut ovat hieno ala, miten se sopii yhteen muiden tunnettujen ideoiden kanssa ja miksi meidän pitäisi katsoa rohkeasti. tulevaisuuteen.

Aleksei: Lisäksi haluan sanoa, että tämä ei tapahdu tapaamisen tai käyttäjäryhmän muodossa, kuten kaksi vuotta sitten. Päätimme pitää pienen konferenssin lähellä koulua. Syynä on se, että keskustellessamme Peter Kuznetsovin kanssa tajusimme, että koulu on rajoitettu vain sataan, ehkä 120:een. Samaan aikaan on paljon insinöörejä, jotka haluavat kommunikoida kanssasi, osallistua esityksiin ja ovat yleensä kiinnostuneita aiheesta. Tästä syystä olemme luoneet uuden konferenssin nimeltä Hydra. Muuten, onko ideoita miksi Hydra?

Maurice: Koska puhujia on seitsemän? Ja heidän päänsä voidaan leikata irti, ja uudet kaiuttimet kasvavat heidän tilalleen?

Alexey: Loistava idea uusien kaiuttimien kasvattamiseen. Mutta itse asiassa tässä on tarina. Muista legenda Odysseuksesta, jonka välillä hänen täytyi purjehtia Scylla ja Charybdis? Hydra on jotain Charybdisin kaltaista. Tarina on, että kerran puhuin konferenssissa ja puhuin monisäikeistä. Konferenssissa oli vain kaksi kappaletta. Raportin alussa kerroin yleisölle salissa, että heillä on nyt mahdollisuus valita Scyllan ja Charybdisin välillä. Henkieläimeni on Charybdis, koska Charybdisillä on monta päätä ja teemani on monisäikeinen. Näin konferenssien nimet näkyvät.

Joka tapauksessa kysymykset ja aika ovat loppuneet. Joten, kiitos ystävät upeasta haastattelusta, ja nähdään SPTDC Schoolissa ja Hydra 2019:ssä!

Voit jatkaa keskusteluasi Mauricen kanssa Hydra 2019 -konferenssissa, joka pidetään 11.-12 Pietarissa. Hän tulee raportin kanssa "Blockchains ja hajautetun tietojenkäsittelyn tulevaisuus". Lippuja voi ostaa virallisella verkkosivustolla.

Lähde: will.com

Lisää kommentti