"Det er lettere Ă„ svare enn Ă„ tie" - et flott intervju med faren til transaksjonsminnet, Maurice Herlihy

Maurice Herlihy - eier av to Dijkstra-priser. Den fÞrste er for arbeid med "Ventefri synkronisering" (Brown University) og den andre, nyere, - "Transaksjonsminne: Arkitektonisk stÞtte for lÄsefrie datastrukturer" (Virginia Tech University). Dijkstra-prisen gis for arbeid hvis betydning og innflytelse har vÊrt synlig i minst ti Är og Maurice er Äpenbart en av de mest kjente spesialistene pÄ feltet. Han jobber for tiden som professor ved Brown University og har en rekke prestasjoner som er et avsnitt langt. Han forsker for tiden pÄ blokkjede i sammenheng med klassisk distribuert databehandling.

Tidligere hadde Maurice allerede kommet til Russland for SPTCC (videoopptak) og gjorde et utmerket mĂžte med JUG.ru Java-utviklerfellesskapet i St. Petersburg (videoopptak).

Denne habraposten er et flott intervju med Maurice Herlihy. Den diskuterer fĂžlgende emner:

  • Samspill mellom akademia og industri;
  • Foundation for Blockchain Research;
  • Hvor kommer banebrytende ideer fra? PĂ„virkning av popularitet;
  • PhD under veiledning av Barbara Liskov;
  • Verden venter pĂ„ multi-core;
  • En ny verden gir nye problemer. NVM, NUMA og arkitekturhacking;
  • Kompilatorer vs prosessorer, RISC vs CISC, delt minne vs meldingsoverfĂžring;
  • Kunsten Ă„ skrive skjĂžr flertrĂ„dskode;
  • Hvordan lĂŠre elevene Ă„ skrive kompleks flertrĂ„dskode;
  • Ny utgave av boken «The Art of Multiprocessor Programming»;
  • Hvordan transaksjonsminne ble oppfunnet;   
  • Hvorfor det er verdt Ă„ forske innen distribuert databehandling;
  • Har utviklingen av algoritmer stoppet, og hvordan gĂ„ videre;
  • Jobber ved Brown University;
  • Forskjellen mellom forskning ved et universitet og innenfor et selskap;
  • Hydra og SPTDC.

Intervjuet er utfĂžrt av:

Vitaly Aksenov — for tiden post-doc ved IST Østerrike og ansatt ved Institutt for datateknologi ved ITMO University. Utfþrer forskning innen teori og praksis av konkurrerende datastrukturer. Fþr han jobbet ved IST, mottok han sin doktorgrad fra Paris Diderot University og ITMO University under veiledning av professor Peter Kuznetsov.

Alexey Fedorov - Produsent ved JUG Ru Group, et russisk selskap som arrangerer konferanser for utviklere. Alexey deltok i utarbeidelsen av mer enn 50 konferanser, og CV-en hans inkluderer alt fra stillingen som utviklingsingeniĂžr hos Oracle (JCK, Java Platform Group) til stillingen som utvikler hos Odnoklassniki.

Vladimir Sitnikov - IngeniÞr hos Netcracker. Ti Ärs arbeid med ytelsen og skalerbarheten til NetCracker OS, programvare som brukes av telekomoperatÞrer for Ä automatisere administrasjonsprosesser for nettverk og nettverksutstyr. Interessert i ytelsesproblemer i Java og Oracle Database. Forfatter av mer enn et dusin ytelsesforbedringer i den offisielle PostgreSQL JDBC-driveren.

Samspill mellom akademia og industri

Alexey: Maurice, du har jobbet i et akademisk miljĂž i veldig lang tid, og det fĂžrste spĂžrsmĂ„let er samspillet mellom den akademiske og industrielle sfĂŠren. Kan du snakke om hvordan interaksjonene mellom dem har endret seg i det siste? Hva skjedde for 20-30 Ă„r siden og hva skjer nĂ„? 

Maurice: Jeg har alltid prĂžvd Ă„ jobbe tett med kommersielle selskaper fordi de har interessante problemer. De er som regel ikke sĂŠrlig interessert verken i Ă„ publisere resultatene sine eller i detaljerte forklaringer av problemene deres til verdenssamfunnet. De er bare interessert i Ă„ lĂžse disse problemene. Jeg jobbet for slike selskaper en stund. Jeg brukte fem Ă„r pĂ„ fulltid i et forskningslaboratorium hos Digital Equipment Corporation, som pleide Ă„ vĂŠre et stort dataselskap. Jeg jobbet en dag i uken hos Sun, hos Microsoft, hos Oracle, og jobbet litt pĂ„ Facebook. NĂ„ skal jeg ut pĂ„ sabbatspermisjon (en professor ved et amerikansk universitet har lov til Ă„ ta en slik permisjon i ett Ă„r omtrent en gang hvert sjette Ă„r) og jobbe i Algorand, dette er et kryptovalutaselskap i Boston. Å jobbe tett med bedrifter har alltid vĂŠrt en fornĂžyelse fordi det er slik man lĂŠrer om nye og interessante ting. Du kan til og med vĂŠre den fĂžrste eller andre personen som publiserer en artikkel om et valgt emne, i stedet for Ă„ jobbe med gradvis Ă„ forbedre lĂžsninger pĂ„ problemer som alle andre allerede jobber med.

Alexey: Kan du fortelle oss mer detaljert hvordan dette skjer?

Maurice: SelvfÞlgelig. Du vet, da jeg jobbet i Digital Equipment Corporation, jeg og Elliot Moss, oppfant vi transaksjonsminne. Det var en veldig fruktbar periode da alle begynte Ä interessere seg for informasjonsteknologi. Parallellisme, inkludert, selv om flerkjernesystemer ennÄ ikke eksisterte. I lÞpet av Sun- og Oracle-dagene jobbet jeg mye med parallelle datastrukturer. PÄ Facebook jobbet jeg med blokkjedeprosjektet deres, som jeg ikke kan snakke om, men jeg hÄper det blir offentlig snart. Neste Är, pÄ Algorand, skal jeg jobbe i en forskningsgruppe som studerer smarte kontrakter.

Alexey: Blockchain har blitt et veldig populÊrt tema de siste Ärene. Vil dette hjelpe forskningen din? Kanskje vil det gjÞre det lettere Ä fÄ tilskudd eller gi tilgang til ressurser fra bedrifter som opererer i bransjen?

Maurice: Jeg har allerede mottatt et lite stipend fra Ethereum Foundation. Populariteten til blockchain er svĂŠrt nyttig for Ă„ inspirere studenter til Ă„ jobbe med dette feltet. De er veldig interessert i det og er spente pĂ„ Ă„ engasjere seg, men noen ganger skjĂžnner de ikke at forskningen som hĂžres spennende ut pĂ„ utsiden viser seg Ă„ involvere hardt arbeid. Jeg er imidlertid veldig spent pĂ„ Ă„ bruke all denne mystikken rundt blockchain for Ă„ tiltrekke studenter. 

Men det er ikke alt. Jeg sitter i advisory board for flere blockchain-oppstart. Noen av dem kan lykkes, noen av dem kanskje ikke, men det er alltid veldig interessant Ä se ideene deres, studere dem og gi rÄd til folk. Det mest spennende er nÄr du advarer folk mot Ä gjÞre noe. Mange ting virker som en god idé i begynnelsen, men er de virkelig?

Foundation for Blockchain Research

Vitaly: Noen tror at fremtiden ligger hos blokkjeden og dens algoritmer. Og andre sier at det bare er en ny boble. Kan du dele din mening om denne saken?

Maurice: Mye av det som skjer i blokkjedeverdenen er feil, noe er bare svindel, mye er overvurdert. Jeg tror imidlertid det er et solid vitenskapelig grunnlag for disse studiene. Det faktum at blockchain-verdenen er full av ideologiske forskjeller viser nivÄet av spenning og dedikasjon. PÄ den annen side er ikke dette spesielt gunstig for vitenskapelig forskning. NÄ, hvis du publiserer en artikkel som snakker om manglene til en bestemt algoritme, er den resulterende reaksjonen ikke alltid fullstendig vitenskapelig. Ofte kaster folk ut fÞlelsene sine. Jeg tror at denne typen spenning i dette omrÄdet kan virke attraktiv for noen, men til syvende og sist er det virkelige vitenskapelige og tekniske problemer som mÄ tas opp. Det er mye informatikk her.

Vitaly: SĂ„ du prĂžver Ă„ legge grunnlaget for blockchain-forskning, ikke sant?

Maurice: Jeg prÞver Ä legge grunnlaget for en solid, vitenskapelig og matematisk forsvarlig disiplin. Og en del av problemet er at noen ganger mÄ du motsi noen av de altfor harde posisjonene til andre mennesker og ignorere dem. Noen ganger spÞr folk hvorfor jeg jobber i et omrÄde der bare terrorister og narkotikasmuglere er interessert. En slik reaksjon er like meningslÞs som oppfÞrselen til fÞlgere som blindt gjentar ordene dine. Jeg tror sannheten ligger et sted i midten. Blockchain vil ha en dyp innvirkning pÄ samfunnet og den globale Þkonomien. Men dette vil sannsynligvis ikke skje takket vÊre moderne teknologi. Moderne teknologier vil utvikle seg og det som vil bli kalt blockchain i fremtiden vil bli svÊrt viktig. Det ser kanskje ikke engang ut som moderne blokkjeder, det er et Äpent spÞrsmÄl.

Hvis folk finner opp nye teknologier, vil de fortsette Ä kalle det blockchain. Jeg mener, akkurat som dagens Fortran ikke har noe med Fortran-sprÄket fra 1960-tallet Ä gjÞre, men alle fortsetter Ä kalle det Fortran. Samme for UNIX. Det som kalles "blockchain" vil fortsatt gjÞre sin revolusjon. Men jeg tviler pÄ at denne nye blokkjeden vil vÊre noe som alle liker Ä bruke i dag.

Hvor kommer banebrytende ideer fra? PÄvirkning av popularitet

Alexey: Har populariteten til blockchain fÞrt til nye resultater fra et vitenskapelig synspunkt? Mer samhandling, flere studenter, flere bedrifter i omrÄdet. Er det allerede noen resultater fra denne Þkningen i popularitet?

Maurice: Jeg ble interessert i dette da noen ga meg en offisiell flyer for et selskap som nettopp hadde samlet inn ganske mye penger. Den skrev om oppgaven til de bysantinske generalene, som jeg er mer enn kjent med. Det som sto i brosjyren var tydeligvis teknisk feil. De som skrev alt dette forsto egentlig ikke modellen bak problemet... og likevel samlet dette selskapet inn mye penger. Deretter byttet selskapet i det stille ut denne brosjyren med en mye mer korrekt versjon - og jeg vil ikke si hva navnet pÄ dette selskapet var. De er fortsatt rundt og har det veldig bra. Denne hendelsen overbeviste meg om at for det fÞrste er blockchain ganske enkelt en form for distribuert databehandling. For det andre var inngangsterskelen (i hvert fall for fire Är siden) ganske lav. Menneskene som jobbet i dette feltet var veldig energiske og intelligente, men de leste ikke vitenskapelige artikler. De prÞvde Ä gjenoppfinne kjente ting og gjorde det feil. I dag har dramatikken blitt mindre.

Alexey: Dette er veldig interessant, for for noen Ă„r siden hadde vi en annen trend. Det er litt som frontend-utvikling, da nettleserbaserte frontend-utviklere gjenoppfant hele teknologier som allerede var populĂŠre i back-end: bygge systemer, kontinuerlig integrasjon, slike ting. 

Maurice: Jeg er enig. Men dette er ikke overraskende, for virkelig banebrytende ideer kommer alltid utenfor det etablerte samfunnet. Etablerte forskere, spesielt etablerte akademikere, vil neppe gjÞre noe virkelig banebrytende. Det er lett Ä skrive en artikkel til neste konferanse om hvordan du forbedret resultatene av tidligere arbeid litt. GÄ pÄ en konferanse, kom sammen med venner, snakk om de samme tingene. Og menneskene som bryter inn med banebrytende ideer kommer nesten alltid utenfra. De kan ikke reglene, de kan ikke sprÄket, men likevel... Hvis du er innenfor et etablert fellesskap, rÄder jeg deg til Ä ta hensyn til nye ting, til noe som ikke passer inn i helhetsbildet. PÄ en mÄte kan man forsÞke Ä kombinere eksterne, mer flytende utviklinger med metoder som vi allerede forstÄr. Som et fÞrste skritt, prÞv Ä etablere et vitenskapelig grunnlag, og endre det sÄ slik at det kan brukes pÄ nye gjennombruddsideer. Jeg tror at blockchain er flott for Ä vÊre en frisk, forstyrrende idé.

Alexey: Hvorfor tror du dette skjer? Fordi folk "utenfor" ikke har noen spesifikke barrierer iboende i samfunnet?

Maurice: Det er et mÞnster pÄ gang her. Hvis du leser historien til impresjonistene innen maleri og kunst generelt, sÄ avviste kjente kunstnere en gang impresjonismen. De sa det var litt barnslig. En generasjon senere ble denne tidligere avviste kunstformen standarden. Det jeg ser i mitt felt: oppfinnerne av blockchain var ikke interessert i makt, i Þkende publikasjoner og sitasjonsindeks, de ville bare gjÞre noe bra. SÄ de satte seg ned og begynte Ä gjÞre det. De manglet en viss mengde teknisk dybde, men det kan fikses. Det er mye vanskeligere Ä komme opp med nye kreative ideer enn Ä korrigere og styrke utilstrekkelig modne. Takket vÊre disse oppfinnerne har jeg nÄ noe Ä gjÞre!

Alexey: Dette ligner pÄ forskjellen mellom startups og eldre prosjekter. Vi arver mange begrensninger for tenkning, barrierer, spesielle krav og sÄ videre.

Maurice: En god analogi er distribuert databehandling. Tenk pÄ blockchain som om det var en oppstart og distribuert databehandling som et stort, etablert selskap. Distribuert databehandling er i ferd med Ä bli anskaffet og slÄtt sammen med blockchain.

PhD under veiledning av Barbara Liskov

Vitaly: Vi har fortsatt mange spÞrsmÄl! Vi undersÞkte bakgrunnen din og kom over et interessant faktum om doktorgraden din. Ja, dette var lenge siden, men det ser ut til Ä vÊre et viktig tema. Du mottok doktorgraden din under veiledning av deg selv Barbara Liskov! Barbara er veldig godt kjent i programmeringssprÄkmiljÞet, og en veldig kjent person generelt. Det er logisk at forskningen din var innen programmeringssprÄk. Hvordan byttet du til parallell databehandling? Hvorfor bestemte du deg for Ä endre tema?

Maurice: PÄ den tiden sÄ Barbara og gruppen hennes bare pÄ distribuert databehandling, som var en veldig ny idé. Det var ogsÄ de som sa at distribuert databehandling var tull og at datamaskiner som kommuniserte med hverandre var meningslÞst. Et av problemene som tas opp i distribuert databehandling som skiller det fra sentralisert databehandling er feiltoleranse. Etter mye forskning bestemte vi oss for at et distribuert programmeringssprÄk for databehandling mÄtte ha noe som atomtransaksjoner fordi du aldri kan vÊre sikker pÄ at en ekstern samtale vil lykkes. NÄr du har transaksjoner, oppstÄr problemet med samtidighetshÄndtering. Deretter var det mye arbeid med Ä skaffe svÊrt parallelle transaksjonelle datastrukturer. SÄ, da jeg ble uteksaminert, dro jeg til Carnegie Mellon og begynte Ä lete etter et emne Ä jobbe med. Det gikk opp for meg at databehandling har flyttet fra individuelle datamaskiner til nettverk av datamaskiner. Multiprosessorer ville vÊre en naturlig fortsettelse av fremgangen - ordet "multi-core" eksisterte ennÄ ikke. Jeg tenkte: hva tilsvarer atomtransaksjoner for et flerkjernesystem? Definitivt ikke vanlige transaksjoner fordi de er for store og tunge. Og det var slik jeg kom pÄ ideen lineariserbarhet og det var slik jeg kom opp med hele den ventefrie synkroniseringen. Dette var et forsÞk pÄ Ä svare pÄ spÞrsmÄlet om hva som er analogen til atomtransaksjoner for et multiprosessorsystem med delt minne. Ved fÞrste Þyekast kan dette verket se helt annerledes ut, men faktisk er det en fortsettelse av samme tema.

Verden venter pÄ multi-core

Vitaly: Du nevnte at det pÄ den tiden var veldig fÄ multi-core datamaskiner, ikke sant?

Maurice: De var bare ikke der. Det var flere sÄkalte symmetriske multiprosessorer, som i utgangspunktet var koblet til samme buss. Dette fungerte ikke veldig bra fordi hver gang et nytt selskap opprettet noe lignende, ville Intel gi ut en enkelt prosessor som var overlegen multiprosessoren.

Alexey: Betyr ikke dette at det i de gamle tider var mer et teoretisk studium?

Maurice: Det var ikke en teoretisk studie, men snarere en spekulativ studie. Alt dette handlet ikke om Ä jobbe med mange teoremer; snarere la vi frem hypoteser om en arkitektur som ikke eksisterte pÄ den tiden. Det er dette forskning er til for! Ingen bedrift ville ha gjort noe slikt; det hele var noe fra en fjern fremtid. Faktisk var dette tilfellet frem til 2004, da ekte flerkjerneprosessorer dukket opp. Fordi prosessorer overopphetes, kan du gjÞre prosessoren enda mindre, men du kan ikke gjÞre den raskere. PÄ grunn av dette var det en overgang til flerkjernearkitekturer. Og sÄ betydde det at det plutselig var bruk for alle konseptene vi hadde utviklet tidligere.

Alexey: Hvorfor tror du flerkjerneprosessorer dukket opp fÞrst pÄ XNUMX-tallet? SÄ hvorfor er det sÄ sent?

Maurice: Dette skyldes maskinvarebegrensninger. Intel, AMD og andre selskaper er veldig flinke til Ă„ Ăžke prosessorhastigheten. NĂ„r prosessorene pĂ„ et tidspunkt ble smĂ„ nok til at de ikke lenger kunne Ăžke klokkehastigheten fordi prosessorene ville begynne Ă„ brenne ut. Du kan gjĂžre dem mindre, men ikke raskere. Hva er i deres makt - i stedet for en veldig liten prosessor, kan de fĂ„ plass til Ă„tte, seksten eller trettito prosessorer i samme volum av kabinettet, der tidligere bare Ă©n kunne passe. NĂ„ har du multithreading og rask kommunikasjon mellom dem fordi de deler cacher. Men du kan ikke tvinge dem til Ă„ lĂžpe fortere – det er en helt bestemt fartsgrense. De fortsetter Ă„ forbedre seg litt etter litt, men ikke sĂ„ mye lenger. Fysikkens lover sto i veien for forbedringer.

En ny verden gir nye problemer. NUMA, NVM og arkitekturhacking

Alexey: HÞres veldig fornuftig ut. Med nye multi-core prosessorer kom nye problemer. Forventet du og kollegene dine disse problemene? Kanskje du studerte dem pÄ forhÄnd? I teoretiske studier er det ofte ikke sÄ lett Ä forutsi slike ting. NÄr problemer oppsto, hvordan oppfylte de forventningene dine og kollegene dine? Eller var de helt nye, og du og kollegene dine mÄtte bruke mye tid pÄ Ä lÞse problemer slik de dukket opp?

Vitaly: Jeg vil legge til Alexeys spÞrsmÄl: spÄdde du prosessorarkitekturen riktig mens du studerte teorien?

Maurice: Ikke 100 %. Men jeg synes kollegene mine og jeg har gjort en god jobb med Ă„ forutsi multikjerner med delt minne. Jeg tror vi riktig forutsĂ„ vanskelighetene med Ă„ utvikle parallelle datastrukturer som opererer uten lĂ„ser. Slike datastrukturer har vĂŠrt viktige for mange applikasjoner, selv om ikke alle, men ofte er det man egentlig trenger en ikke-lĂ„sende datastruktur. Da vi fant opp dem var det mange som hevdet at dette var tull, at alt fungerte bra med lĂ„ser. Vi spĂ„dde ganske godt at det ville vĂŠre ferdige lĂžsninger for mange programmeringsproblemer og datastrukturproblemer. Det var ogsĂ„ mer komplekse problemer, som f.eks NUMA – ujevn tilgang til minne. Faktisk ble de ikke engang vurdert fĂžr flerkjerneprosessorer ble oppfunnet fordi de var for spesifikke. ForskermiljĂžet jobbet med spĂžrsmĂ„l som generelt var forutsigbare. Noen maskinvareproblemer knyttet til spesifikke arkitekturer mĂ„tte vente i kulissene - faktisk utseendet til disse arkitekturene. For eksempel jobbet ingen egentlig med GPU-spesifikke datastrukturer fordi GPUer ikke eksisterte den gang. Selv om det er gjort mye arbeid med SIMD, var disse algoritmene klare til bruk sĂ„ snart passende maskinvare ble tilgjengelig. Det er imidlertid umulig Ă„ forutse alt.

Alexey: Hvis jeg forstÄr det riktig, er NUMA et slags kompromiss mellom kostnader, ytelse og noen andre ting. Noen ideer om hvorfor NUMA kom ut sÄ sent?

Maurice: Jeg tror at NUMA eksisterer pÄ grunn av problemer med maskinvaren som brukes til Ä produsere minne: jo lenger unna komponentene er, jo tregere er det Ä fÄ tilgang til dem. PÄ den annen side er den andre verdien av denne abstraksjonen minneensartethet. SÄ en av egenskapene til parallell databehandling er at alle abstraksjonene er litt Þdelagte. Hvis tilgangen var helt ensartet, ville all hukommelse vÊrt like langt, men dette er Þkonomisk, og kanskje til og med fysisk, umulig. Derfor oppstÄr denne konflikten. Hvis du skriver programmet ditt som om minnet var ensartet, vil det mest sannsynlig vÊre riktig. I den forstand at det ikke vil gi feil svar. Men opptredenen hennes vil heller ikke fange stjernene fra himmelen. PÄ samme mÄte hvis du skriver spinlocks Uten Ä forstÄ cachehierarkiet vil selve blokkeringen vÊre riktig, men du kan glemme ytelsen. PÄ en mÄte mÄ du skrive programmer som lever pÄ toppen av en veldig enkel abstraksjon, men du mÄ overliste menneskene som ga deg den abstraksjonen: du mÄ vite at under abstraksjonen er det et eller annet hierarki av minne, at det er en buss mellom deg og dette minnet, og sÄ videre. Dermed er det en viss konflikt mellom individuelt nyttige abstraksjoner, noe som fÞrer oss til veldig konkrete og pragmatiske problemer.

Vitaly: Hva med fremtiden? Kan du forutsi hvordan prosessorer vil utvikle seg neste gang? Det er en ide om at et av svarene er transaksjonsminne. Du har sikkert noe annet pÄ lager.

Maurice: Det er et par store utfordringer fremover. Den ene er at sammenhengende hukommelse er en fantastisk abstraksjon, men den begynner Ă„ bryte sammen i spesielle tilfeller. SĂ„, for eksempel, er NUMA et levende eksempel pĂ„ noe der du kan fortsette Ă„ late som om det eksisterer enhetlig hukommelse. Egentlig nei, produktivitet vil fĂ„ deg til Ă„ grĂ„te. PĂ„ et tidspunkt vil arkitekter mĂ„tte forlate ideen om en enkelt minnearkitektur; du kan ikke late som for alltid. Det vil vĂŠre behov for nye programmeringsmodeller som er enkle nok Ă„ bruke og kraftige nok til Ă„ gjĂžre den underliggende maskinvaren effektiv. Dette er et veldig vanskelig kompromiss, for hvis du viser programmerere arkitekturen som faktisk brukes i maskinvaren, blir de gale. Det er for komplisert og ikke bĂŠrbart. Hvis du presenterer et grensesnitt som er for enkelt, blir ytelsen dĂ„rlig. Derfor vil mange svĂŠrt vanskelige avveininger mĂ„tte gjĂžres for Ă„ gi nyttige programmeringsmodeller som kan brukes for virkelig store flerkjerneprosessorer. Jeg er ikke sikker pĂ„ at andre enn en spesialist er i stand til Ă„ programmere pĂ„ en 2000-kjerners datamaskin. Og med mindre du driver med veldig spesialisert eller vitenskapelig databehandling eller kryptografi eller noe sĂ„nt - er det fortsatt ikke helt klart hvordan du gjĂžr det riktig. 

Et annet lignende omrĂ„de er spesialiserte arkitekturer. Grafikkakseleratorer har eksistert lenge, men de har blitt noe av et klassisk eksempel pĂ„ hvordan du kan ta en spesialisert type databehandling og kjĂžre den pĂ„ en dedikert brikke. Dette gir sine egne utfordringer: hvordan du kommuniserer med en slik enhet, hvordan du programmerer den. Jeg har nylig jobbet med problemer i omrĂ„det nĂŠr minnedatabehandling. Du tar en liten prosessor og limer den til en stor del av minnet slik at minnet kjĂžrer med L1 cache-hastighet og deretter kommuniserer med en enhet som f.eks. TPU – prosessoren er opptatt med Ă„ laste nye oppgaver inn i minnekjernen din. Å designe datastrukturer og kommunikasjonsprotokoller for denne typen ting er et annet interessant eksempel. SĂ„ tilpassede prosessorer og maskinvare vil fortsette Ă„ se forbedringer i en stund.

Alexey: Hva med ikke-flyktig minne (ikke-flyktig minne)?

Maurice: Å, det er nok et godt eksempel! NVM vil i stor grad endre mĂ„ten vi ser pĂ„ ting som datastrukturer. Ikke-flyktig minne, pĂ„ en mĂ„te, lover Ă„ virkelig fĂ„ fart pĂ„ ting. Men det vil ikke gjĂžre livet enklere fordi de fleste prosessorer, cacher og registre fortsatt er flyktige. NĂ„r du starter etter en krasj, vil ikke tilstanden og minnetilstanden din vĂŠre nĂžyaktig den samme som fĂžr krasj. Jeg er veldig takknemlig for de som jobber pĂ„ NVM - det vil vĂŠre mye for forskere Ă„ gjĂžre i lang tid for Ă„ finne ut riktighetsforhold. Beregninger er korrekte hvis de kan overleve et krasj der innholdet i cacher og registre gĂ„r tapt, men hovedminnet forblir intakt.

Kompilatorer vs prosessorer, RISC vs CISC, delt minne vs meldingsoverfĂžring

Vladimir: Hva synes du om "kompilatorer vs. prosessorer"-dilemmaet fra et instruksjonssett synspunkt? La meg forklare for de som ikke vet: Hvis vi gÄr til skjevt minne eller noe lignende, kan vi bruke et veldig enkelt sett med kommandoer og be kompilatoren generere kompleks kode som kan dra nytte av de nye fordelene. Eller vi kan gÄ den andre veien: implementere komplekse instruksjoner og be prosessoren om Ä omorganisere instruksjonene og gjÞre andre manipulasjoner med dem. Hva synes du om det?

Maurice: Jeg har egentlig ikke noe svar pÄ det spÞrsmÄlet. Denne debatten har pÄgÄtt i fire tiÄr. Det var en tid da mellom forkortet et sett med kommandoer og komplisert borgerkriger ble utkjempet av et sett med kommandoer. En stund vant RISC-folket, men sÄ bygget Intel om motorene sine slik at et redusert sett med instruksjoner ble brukt internt, og hele settet ble eksportert eksternt. Dette er sannsynligvis et tema der hver ny generasjon mÄ finne sine egne kompromisser og ta sine egne beslutninger. Det er veldig vanskelig Ä forutsi hvilke av disse tingene som vil bli bedre. SÄ enhver spÄdom jeg kommer med vil vÊre sann i en viss tid, og deretter falsk igjen en stund, og sÄ sann igjen.

Alexey: Hvor vanlig er det for industrien at noen ideer vinner i flere tiÄr og taper i de neste? Finnes det andre eksempler pÄ slike periodiske endringer?

Maurice: PÄ temaet distribuert databehandling er det folk som tror pÄ delt minne og folk som tror pÄ meldinger. Til Ä begynne med, i distribuert databehandling, betyr parallell databehandling at meldinger sendes. SÄ oppdaget noen at det var mye lettere Ä programmere med delt minne. Den motsatte siden sa at delt minne er for komplisert, fordi det krever lÄser og lignende, sÄ det er verdt Ä flytte til sprÄk der ingenting annet enn meldingsoverfÞring bare eksisterer. Noen sÄ pÄ hva som kom ut av dette og sa, "wow, denne meldingsimplementeringen ser mye ut som delt minne, fordi du lager mange og mange av disse smÄ modulene, de sender meldinger til hverandre, og de alle forrigling"La oss lage en bedre database for delt minne!" Alt dette gjentas om og om igjen, og det er umulig Ä si at en av partene definitivt har rett. En av sidene vil alltid dominere fordi sÄ snart en av dem nesten vinner, finner folk opp igjen og igjen mÄter Ä forbedre den andre pÄ.

Kunsten Ä skrive sprÞ flertrÄdskode

Alexey: Dette er veldig interessant. For eksempel, nÄr vi skriver kode, uansett hvilket programmeringssprÄk, mÄ vi vanligvis lage abstraksjoner som celler som kan leses og skrives. Men faktisk, pÄ et fysisk nivÄ, kan dette se ut som Ä sende en melding over en maskinvarebuss mellom forskjellige datamaskiner og andre enheter. Det viser seg at arbeid skjer pÄ begge abstraksjonsnivÄer samtidig.

Maurice: Det er helt sant at delt minne er bygget pĂ„ meldingsoverfĂžring – busser, cacher og sĂ„ videre. Men det er vanskelig Ă„ skrive programmer ved Ă„ bruke meldingsoverfĂžring, sĂ„ maskinvaren lyver bevisst og later som om du har en slags enhetlig hukommelse. Dette vil gjĂžre det lettere for deg Ă„ skrive enkle, riktige programmer fĂžr ytelsen begynner Ă„ bli dĂ„rligere. Da vil du si: det ser ut som det er pĂ„ tide Ă„ bli venner med cachen. Og sĂ„ begynner du Ă„ bekymre deg for plasseringen av cachen, og derfra gĂ„r det. PĂ„ en mĂ„te hacker du abstraksjonen: du vet at det ikke bare er flatt, enhetlig minne, og du kommer til Ă„ bruke den kunnskapen til Ă„ skrive cache-vennlige programmer. Dette er hva du mĂ„ gjĂžre i reelle problemer. Denne konflikten mellom den sĂžte, enkle, fine abstraksjonen du har fĂ„tt og den fryktelig komplekse implementeringen av den underliggende maskinvaren er der alle vil inngĂ„ sitt eget kompromiss. Jeg har en bok om multiprosessorer og synkronisering, og pĂ„ et tidspunkt skulle jeg skrive et kapittel om datastrukturer i java.util.samtidig. Hvis du ser pĂ„ dem, f.eks lister med mangler Dette er fantastiske kunstverk. (RedaktĂžrens merknad: De som er kjent med Java-sprĂ„ket bĂžr i det minste ta en titt pĂ„ implementeringen Concurrent SkipListMap, du kan se pĂ„ lenkene pĂ„ API Đž kildekode). Men fra mitt stĂ„sted ville det vĂŠrt uansvarlig Ă„ vise dem til studenter, for en slik datastruktur er pĂ„ en mĂ„te som en fyr i et sirkus som lĂžper pĂ„ stram tau over en bjĂžrnegrop. Hvis du endrer bare en liten detalj, vil hele strukturen kollapse. Denne koden er veldig rask og elegant bare fordi den er skrevet perfekt, men den minste endringen vil fĂžre til fullstendig feil. Hvis jeg gir denne koden som eksempel til studenter, vil de umiddelbart si: Det kan jeg ogsĂ„! Og sĂ„ vil et fly havarere eller en atomreaktor eksplodere, og jeg vil vĂŠre skyldig i Ă„ gi dem for mye informasjon til feil tid.

Alexey: Da jeg var litt yngre, prÞvde jeg mange ganger Ä studere Doug Lees kildekode, for eksempel, java.util.samtidig, fordi det er Äpen kildekode, er det veldig enkelt Ä finne og prÞve Ä forstÄ hva som skjer der. Det viste seg ikke veldig bra: ofte er det helt uklart hvorfor Doug bestemte seg for Ä gjÞre noe pÄ denne mÄten nÄr alle andre gjÞr det annerledes. Hvordan forklarer du disse tingene til elevene dine? Er det en spesiell korrekt mÄte Ä beskrive spesifikke detaljer om en hardcore-algoritme, for eksempel? Hvordan gjÞr du dette?

Maurice: TegnelÊrere har en klisjé som de husker fÞrst: Hvis du vil tegne som Picasso, mÄ du fÞrst lÊre Ä tegne enkle realistiske bilder, og fÞrst nÄr du kjenner reglene kan du begynne Ä bryte dem. Begynner du med Ä bryte reglene med en gang, havner du i et rot. FÞrst lÊrer jeg elevene hvordan de skriver enkel, riktig kode uten Ä bekymre seg for ytelsen. Det jeg sier er at det er komplekse tidsproblemer som lurer her, sÄ ikke bekymre deg for cacher, ikke bekymre deg for minnemodeller, bare sÞrg for at alt fungerer som det skal. Dette er allerede vanskelig nok: moderne programmering er ikke lett i seg selv, spesielt for nye studenter. Og nÄr de har en intuisjon om hvordan de skal skrive de riktige programmene, sier jeg: se pÄ disse to spinlock-implementeringene: den ene er veldig treg, og den andre er heller ikke veldig, men bedre. Matematisk er imidlertid de to algoritmene de samme. Faktisk bruker en av dem cache-lokalitet. En av dem kjÞrer pÄ lokalt bufrede data, og den andre utfÞrer gjentatte ganger operasjoner pÄ tvers av bussen. Du kan ikke skrive effektiv kode hvis du ikke forstÄr hva det er, og ikke vet hvordan du skal bryte abstraksjonen og se pÄ den underliggende strukturen. Men du vil ikke kunne begynne Ä gjÞre dette med en gang. Det er folk som begynner Ä gjÞre dette med en gang og tror pÄ sitt eget geni, vanligvis ender det dÄrlig fordi de ikke forstÄr prinsippene. Ingen tegner som Picasso eller skriver programmer som Doug Lee som er fersk fra college den fÞrste uken. Det tar Är Ä nÄ dette kunnskapsnivÄet.

Alexey: Det viser seg at du deler problemet i to deler: den fĂžrste er korrekthet, den andre er ytelse?

Maurice: Akkurat. Og akkurat i den rekkefÞlgen. Noe av problemet er at nye elever ikke forstÄr at korrekthet er vanskelig Ä oppnÄ. Ved fÞrste Þyekast sier de: dette er Äpenbart riktig, det gjenstÄr bare Ä fÄ fart pÄ det. SÄ noen ganger forteller jeg dem om en opprinnelig feil algoritme som om den var riktig.

Hvordan lÊre elevene Ä skrive kompleks flertrÄdskode

Alexey: Bare for Ă„ se om de kan fornemme fangsten?

Maurice: Jeg advarer alltid pÄ forhÄnd om at noen ganger vil jeg foreslÄ feil algoritmer. Du bÞr ikke lure folk. Jeg foreslÄr at de tar informasjonen med en klype salt. Hvis jeg forteller noe og sier: "se, dette er Äpenbart riktig" - dette er et signal om at et sted prÞver de Ä lure deg, og du bÞr begynne Ä stille spÞrsmÄl. Deretter prÞver jeg Ä oppmuntre elevene til Ä fortsette Ä stille spÞrsmÄl, og sÄ foreslÄr jeg: «Hva vil skje hvis vi lar ting vÊre som de er?» Og de ser umiddelbart feilen. Men Ä overbevise elevene om at de trenger Ä bekymre seg for riktigheten er mye vanskeligere enn det ser ut ved fÞrste Þyekast. Mange av disse elevene kommer med programmeringserfaring pÄ videregÄende, noen har fÄtt jobb og har drevet med programmering der, og de er alle fulle av selvtillit. Dette er noe sÄnt som hÊren: du mÄ fÞrst endre humÞret deres for Ä overbevise dem om Ä tÄlmodig nÊrme seg Ä lÞse problemer som oppstÄr. Eller kanskje det er som buddhistiske munker: fÞrst lÊrer de Ä resonnere om korrekthet, og nÄr de fÞrst forstÄr mÄtene Ä resonnere om korrekthet pÄ, fÄr de lov til Ä gÄ videre til neste nivÄ og begynne Ä bekymre seg for ytelse.

Alexey: Det vil si at noen ganger viser du studenter eksempler som ikke fungerer, takket vÊre at du fÄr tilbakemelding som viser om de forstÄr essensen av problemet, om de kan finne feil kode og feil resultat. SÄ gjÞr studenter deg vanligvis glad eller trist?

Maurice: Studenter finner nesten alltid feilen til slutt. Hvis de sÞker for sakte, stiller jeg ledende spÞrsmÄl, og her er det viktig Ä forstÄ at hvis du aldri lurer dem, vil de begynne Ä tankelÞst oppfatte ordene dine som den ultimate sannheten. Da vil de kjede seg og begynne Ä sovne mens de leser Facebook pÄ den bÊrbare datamaskinen i timen. Men nÄr du forteller dem pÄ forhÄnd at de vil bli lurt, og de vil se dumme ut hvis de ikke aner et triks, blir de mye mer ÄrvÄkne. Dette er bra pÄ forskjellige mÄter. Jeg vil gjerne at elevene ikke bare stiller spÞrsmÄl ved deres forstÄelse av problemstillingen, men ogsÄ stiller spÞrsmÄl ved lÊrerens autoritet. Tanken er at en elev nÄr som helst kan rekke opp hÄnden og si: Jeg synes det du nettopp sa er feil. Det er et viktig lÊringsverktÞy. Jeg vil ikke at noen av studentene skal sitte og tenke stille for seg selv: alt dette virker fullstendig tull, men Ä rekke opp hÄnden er for skummelt, og uansett er han professor, sÄ alt han sier er sannheten. Derfor, hvis de pÄ forhÄnd blir advart om at ikke alt som fortelles nÞdvendigvis er sant, har de et insentiv til Ä vÊre mer oppmerksom pÄ materialet. Jeg gjÞr det klart at det er greit Ä rekke opp hÄnden og stille spÞrsmÄl. SpÞrsmÄlet ditt kan hÞres dumt eller naivt ut, men det er ofte slik de beste spÞrsmÄlene oppstÄr.

Alexey: Veldig interessant. Vanligvis har folk en slags psykologisk barriere som ikke tillater dem Ä stille et spÞrsmÄl til en professor. Spesielt hvis det er mange mennesker i rommet, og alle er redde for at det Ä diskutere det dumme spÞrsmÄlet ditt vil ta all tid til disse menneskene. Finnes det noen triks for Ä takle dette?

Maurice: Jeg stopper ofte opp og stiller klassiske spĂžrsmĂ„l. Om en pĂ„stand ville vĂŠre riktig, eller hvordan de ville lĂžse problemet som diskuteres. Dette er en nĂžkkelhandling, spesielt i begynnelsen av en leksjon nĂ„r folk er flaue over Ă„ si selv den minste ting. Du stiller elevene et spĂžrsmĂ„l og sier ikke noe mer. Det er stillhet, alle blir litt anspente, spenningen vokser, sĂ„ er det plutselig noen som ikke tĂ„ler det, bryter sammen og sier svaret. Slik snur du situasjonen: Å fortsette Ă„ tie blir vanskeligere og upraktisk enn Ă„ svare! Dette er et standard pedagogisk triks. Hver lĂŠrer i verden bĂžr vite hvordan dette skal gjĂžres.

Alexey: NĂ„ har vi en utmerket tittel for dette intervjuet: "det er lettere Ă„ svare enn Ă„ tie."

Vitaly: La meg spĂžrre igjen. Du jobber med topologiske bevis. Hvordan ble du i det hele tatt involvert i dette, for distribuert databehandling og topologi er helt forskjellige ting!

Maurice: Det er en skjult forbindelse der. Da jeg var student og studerte matematikk, studerte jeg ren matematikk. Jeg hadde ingen reell interesse for datamaskiner fĂžr studiene tok slutt, og jeg ble mĂžtt med det presserende behovet for Ă„ sĂžke jobb. Som student studerte jeg algebraisk topologi. Mange Ă„r senere, mens du arbeider med et problem kalt "k-Set-avtaleproblem", brukte jeg grafer for Ă„ modellere problemet, og som det sĂ„ ut pĂ„ den tiden, hadde jeg funnet en lĂžsning. Du mĂ„tte bare sette deg ned og gĂ„ rundt tellingen. PrĂžv Ă„ finne et passende svar pĂ„ denne grafen. Men algoritmen min fungerte ikke: det viste seg at han ville lĂžpe i sirkler for alltid. Dessverre kunne ikke alt dette forklares pĂ„ grafteoriens formelle sprĂ„k – det som alle dataforskere kjenner. Og sĂ„ husket jeg at for mange Ă„r siden, tilbake i topologitimer, brukte vi konseptet "enkelt kompleks", som er en generalisering av grafer til hĂžyere dimensjoner. SĂ„ spurte jeg meg selv: hva ville skje hvis vi omformulerte problemet i form av enkle komplekser? Dette ble nĂžkkelĂžyeblikket. Ved Ă„ bruke en kraftigere formalisme blir problemet plutselig mye enklere. Folk kjempet mot det i lang tid ved Ă„ bruke grafer, men de kunne ikke gjĂžre noe. Og selv nĂ„ kan de ikke - det riktige svaret viste seg Ă„ ikke vĂŠre en algoritme, men et bevis pĂ„ umuligheten av Ă„ lĂžse problemet. Det vil si at en slik algoritme rett og slett ikke eksisterer. Men ethvert bevis pĂ„ umulighet basert enten pĂ„ enkle komplekser eller pĂ„ ting som folk lot som om de ikke betraktet enkle komplekser. Bare fordi du kaller noe et nytt navn, mister det ikke essensen.

Vitaly: Det viser seg at du bare var heldig?

Maurice: Foruten flaks, er det det ogsÄ beredskap. Dette betyr at du ikke bÞr glemme de "unyttige" tingene du har lÊrt tidligere. Jo flere unyttige ting du lÊrer, jo flere ideer kan du trekke ut nÄr du stÄr overfor et nytt problem. Denne typen intuitiv mÞnstertilpasning er viktig fordi... La oss gjÞre dette, dette er en kjede: fÞrst oppdaget jeg at grafene ikke fungerte i det hele tatt eller ikke fungerte i det hele tatt, det minnet meg om noe fra hendelsene i Ätte Är siden og mine studentÄr, da vi studerte alle disse enkle kompleksene. Dette tillot meg igjen Ä finne min gamle topologi-lÊrebok og laste den inn i hodet mitt igjen. Men hvis det ikke var for den gamle kunnskapen, ville jeg aldri ha gjort noen fremskritt i Ä lÞse det opprinnelige problemet.

Ny utgave av boken "The Art of Multiprocessor Programming"

Alexey: Du sa noen ord om boken din. Det er sannsynligvis ikke den verste hemmeligheten at du skrev verdens mest kjente bok om multithreading, "Kunsten Ă„ programmere flere prosessorer". Den er allerede rundt 11 Ă„r gammel og siden den gang har den bare blitt utgitt  revidert opptrykk. Kommer det en andre utgave?

Maurice: Det er bra du spurte! Det vil vĂŠre veldig snart, om tre mĂ„neder eller sĂ„. Det er to forfattere til, vi la til mye mer materiale, forbedret avsnittet om gaffel/skjĂžteparallellisme, skrev et avsnitt om MapReduce, la til mye nytt og kastet ut unĂždvendige ting – noe som var veldig interessant i skrivende stund den fĂžrste utgaven, men finnes ikke lenger i dag. Resultatet ble en svĂŠrt seriĂžst revidert bok.

Alexey: Alt er allerede gjort, alt som gjenstÄr er Ä gi det ut?

Maurice: Et par kapitler trenger fortsatt litt arbeid. Utgiveren vÄr (som jeg tror allerede hater oss) prÞver fortsatt Ä fÄ frem budskapet om at vi bÞr jobbe raskere. Vi ligger langt bak skjema. Teoretisk sett kunne vi ha gjort denne boken et par Är tidligere.

Alexey: Noen sjanse til Ä fÄ en ny versjon av boken fÞr jul?

Maurice: Dette er mÄlet vÄrt! Men jeg har spÄdd seier sÄ mange ganger at ingen tror meg lenger. Du bÞr nok ikke stole for mye pÄ meg i denne saken heller.

Alexey: I alle fall er dette fantastiske nyheter. Jeg likte den fĂžrste utgaven av boken veldig godt. Du kan si at jeg er en fan.

Maurice: Jeg hÄper den nye utgaven vil vÊre verdig din inderlige entusiasme, takk!

Hvordan transaksjonsminne ble oppfunnet

Vitaly: Det neste spÞrsmÄlet handler om transaksjonsminne. SÄ vidt jeg forstÄr er du en pioner pÄ dette feltet, du fant det opp i en tid da ingen tenkte pÄ slike ting. Hvorfor bestemte du deg for Ä flytte inn pÄ dette feltet? Hvorfor virket transaksjoner viktige for deg? Trodde du at de en dag ville bli implementert i maskinvare?

Maurice: Jeg har visst om transaksjoner siden studiedagene mine.

Vitaly: Ja, men dette er forskjellige transaksjoner!

Maurice: Jeg jobbet med Elliott Moss om ikke-blokkerende sÞppelinnsamling. Problemet vÄrt var at vi Þnsket Ä atomisk endre noen fÄ ord i minnet, og da ville algoritmene bli veldig enkle, og i det minste noen av dem ville bli mer effektive. Ved hjelp av sammenlign og bytt for load-link/store-conditionalgitt av den parallelle arkitekturen, er det mulig Ä gjÞre noe, men det er veldig ineffektivt og stygt fordi du mÄ forholde deg til lag med indirekte. Jeg vil endre minneord og jeg mÄ bytte fordi jeg bare kan endre én peker, sÄ de mÄ peke pÄ en slags kataloglignende struktur. Vi snakket om hvor flott det ville vÊre om vi kunne endre maskinvaren slik at den kunne gjÞre samtidige opptak. Elliott ser ut til Ä ha lagt merke til dette: Hvis du ser pÄ protokoller for cache-koherens, gir de allerede det meste av den nÞdvendige funksjonaliteten. I en optimistisk transaksjon vil cache-koherensprotokollen legge merke til at det er en tidskonflikt og cachen vil bli ugyldig. Hva skjer hvis du spekulativt kjÞrer en transaksjon pÄ hurtigbufferen din og bruker koherensprotokollmekanismene for Ä oppdage konflikter? Spekulativ maskinvarearkitektur var enkel Ä designe. SÄ vi skrev den den aller fÞrste utgivelsen om transaksjonsminne. Samtidig laget selskapet jeg jobbet for, Digital Equipment Corporation, en ny 64-bits prosessor kalt Alpha. SÄ jeg gikk og holdt en presentasjon for Alpha-utviklingsgruppen om vÄrt fantastiske transaksjonsminne, og de spurte: Hvor mye ekstra inntekt ville selskapet vÄrt fÄ hvis vi la alt dette direkte til prosessoren? Og jeg hadde absolutt ikke noe svar pÄ dette, fordi jeg er teknolog, jeg er ingen markedsfÞringsspesialist. Jeg hadde egentlig ingenting Ä svare pÄ. De var ikke veldig imponert over at jeg ikke visste noe.

Vitaly: Milliarder! Bare si milliarder!

Maurice: Ja, det er det jeg burde ha sagt. NÄ, i en tid med startups og alt mulig, vet jeg hvordan jeg skal skrive en forretningsplan. At du kan lyve litt om stÞrrelsen pÄ din potensielle fortjeneste. Men pÄ den tiden virket det naivt, sÄ jeg sa bare: "Jeg vet ikke." Hvis du ser pÄ historien til publikasjonen om transaksjonsminne, vil du legge merke til at det etter et Är var flere referanser til den, og i omtrent ti Är var det ingen som siterte denne artikkelen i det hele tatt. Sitatene dukket opp rundt 2004, da ekte multikjerner dukket opp. Da folk oppdaget at det Ä skrive parallell kode kunne tjene penger, begynte ny forskning. Ravi Rajwar skrev en artikkel, som pÄ en eller annen mÄte introduserte konseptet transaksjonsminne til mainstream. (RedaktÞrens merknad: Det er en andre versjon av denne artikkelen, utgitt i 2010 og fritt tilgjengelig som PDF). Plutselig innsÄ folk nÞyaktig hvordan alt dette kunne brukes, hvordan tradisjonelle algoritmer med lÄser kunne akselereres. Et godt eksempel pÄ noe som tidligere virket som et interessant akademisk problem. Og ja, hvis du hadde spurt meg pÄ det tidspunktet om jeg trodde at alt dette ville bli viktig i fremtiden, ville jeg ha sagt: selvfÞlgelig, men nÞyaktig nÄr er ikke klart. Kanskje om 50 Är? I praksis viste dette seg Ä vÊre bare et tiÄr. Det er veldig hyggelig nÄr man gjÞr noe og etter bare ti Är legger folk merke til det.

Hvorfor det er verdt Ă„ forske innen distribuert databehandling

Vitaly: Hvis vi snakker om ny forskning, hva vil du rĂ„de leserne til – distribuert databehandling eller multi-core og hvorfor? 

Maurice: I disse dager er det enkelt Ă„ fĂ„ en flerkjerneprosessor, men det er vanskeligere Ă„ sette opp et ekte distribuert system. Jeg begynte Ă„ jobbe med dem fordi jeg Ăžnsket Ă„ gjĂžre noe annet enn doktorgradsavhandlingen min. Dette er rĂ„det jeg alltid gir til nye studenter: ikke skriv en fortsettelse av avhandlingen din – prĂžv Ă„ gĂ„ i en ny retning. Og multithreading er ogsĂ„ enkelt. Jeg kan eksperimentere med min egen gaffel som kjĂžrer pĂ„ den bĂŠrbare datamaskinen uten Ă„ komme meg ut av sengen. Men hvis jeg plutselig ville lage et reelt distribuert system, mĂ„tte jeg gjĂžre mye arbeid, tiltrekke meg studenter og sĂ„ videre. Jeg er en lat person og vil heller jobbe med multi-core. Eksperimentering pĂ„ flerkjernesystemer er ogsĂ„ enklere enn Ă„ gjĂžre eksperimenter pĂ„ distribuerte systemer, fordi selv i et dumt distribuert system er det for mange faktorer som mĂ„ kontrolleres.

Vitaly: Hva gjÞr du nÄ, forsker pÄ blockchain? Hvilke artikler bÞr du vÊre oppmerksom pÄ fÞrst?

Maurice: Dukket nylig opp veldig bra artikkel, som jeg skrev sammen med min elev, Vikram Saraf, spesielt for en samtale kl Tokenomcs-konferanse i Paris for tre uker siden. Dette er en artikkel om praktiske distribuerte systemer, der vi foreslÄr Ä gjÞre Ethereum flertrÄdet. For tiden utfÞres smarte kontrakter (kode som kjÞrer pÄ blokkjeden) sekvensielt. Vi skrev en artikkel tidligere som snakket om en mÄte Ä bruke spekulative transaksjoner for Ä fremskynde prosessen. Vi tok mange ideer fra programvaretransaksjonsminnet og sa at hvis du gjÞr disse ideene til en del av den virtuelle Etherium-maskinen, vil alt fungere raskere. Men for dette er det nÞdvendig at det ikke er datakonflikter i kontraktene. Og sÄ antok vi at i det virkelige liv er det egentlig ingen slike konflikter. Men vi hadde ingen mÄte Ä finne ut av det. SÄ gikk det opp for oss at vi hadde nesten et tiÄr med ekte kontraktshistorie pÄ hendene, sÄ vi dumpet Ethereum-blokkjeden og spurte oss selv: hva ville skje hvis disse historiske postene ble utfÞrt parallelt? Vi fant en betydelig hastighetsÞkning. I de tidlige dagene av Ethereum Þkte hastigheten veldig mye, men i dag er alt noe mer komplisert, fordi det er fÊrre kontrakter og sannsynligheten for konflikter om data som krever serialisering har blitt hÞyere. Men alt dette er eksperimentelt arbeid med ekte historiske data. Det fine med blokkjeden er at den husker alt for alltid, slik at vi kan gÄ tilbake i tid og studere hva som ville ha skjedd hvis vi hadde brukt forskjellige algoritmer for Ä kjÞre koden. Hvordan ville folk tidligere ha likt vÄr nye idé? Slik forskning er mye enklere og morsommere Ä gjÞre, fordi det er en ting som overvÄker alt og registrerer alt. Dette ligner allerede noe mer pÄ sosiologi enn pÄ utvikling av algoritmer.

Har utviklingen av algoritmer stoppet og hvordan gÄ videre?

Vitaly: Tid for det siste teoretiske spÞrsmÄlet! FÞles det som om fremgangen i konkurrerende datastrukturer avtar hvert Är? Tror du vi har nÄdd et platÄ i vÄr forstÄelse av datastrukturer eller vil det bli noen store forbedringer? Kanskje det er noen smarte ideer som kan endre alt fullstendig?

Maurice: Vi kan ha nĂ„dd et platĂ„ i datastrukturer for tradisjonelle arkitekturer. Men datastrukturer for nye arkitekturer er fortsatt et svĂŠrt lovende omrĂ„de. Hvis du vil lage datastrukturer for for eksempel maskinvareakseleratorer, sĂ„ er datastrukturene for en GPU svĂŠrt forskjellige fra datastrukturene for en CPU. NĂ„r du utvikler datastrukturer for blokkjeder, mĂ„ du hash biter av data og deretter sette dem inn i noe som Merkle tre, for Ă„ forhindre forfalskning. Det har vĂŠrt en bĂžlge av aktivitet pĂ„ dette omrĂ„det i det siste, med mange som har gjort veldig godt arbeid. Men jeg tror det som vil skje er at nye arkitekturer og nye applikasjoner vil fĂžre til nye datastrukturer. Eldre applikasjoner og tradisjonell arkitektur - det er kanskje ikke mye rom for utforskning lenger. Men hvis du gĂ„r utenfor allfarvei og ser utover kantene, vil du se sprĂž ting som mainstream ikke tar pĂ„ alvor – det er der alle de spennende tingene virkelig skjer.

Vitaly: Derfor, for Ä vÊre en veldig kjent forsker, mÄtte jeg finne opp min egen arkitektur :)

Maurice: Du kan "stjele" andres nye arkitektur - det virker mye enklere!

Jobber ved Brown University

Vitaly: Kan du fortelle oss mer om Brown Universityhvor jobber du? Ikke mye er kjent om ham i sammenheng med informasjonsteknologi. Mindre enn om MIT, for eksempel.

Maurice: Brown University er et av de eldste universitetene i USA. Jeg tror bare Harvard er litt eldre. Brown er en del av den sĂ„kalte Ivy League, som er en samling av Ă„tte eldste universiteter. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvania, Princeton. Det er liksom et gammelt, lite og litt aristokratisk universitet. Hovedfokuset er pĂ„ liberal kunstutdanning. Det prĂžver ikke Ă„ vĂŠre som MIT, MIT er veldig spesialisert og teknisk. Brown er et flott sted Ă„ studere russisk litteratur eller klassisk gresk, og selvfĂžlgelig informatikk. Den fokuserer pĂ„ omfattende utdanning. De fleste av studentene vĂ„re gĂ„r til Facebook, Apple, Google – sĂ„ jeg tror studentene vĂ„re ikke har noen problemer med Ă„ finne en jobb i bransjen. Jeg gikk pĂ„ jobb hos Brown fordi jeg tidligere hadde jobbet i Digital Equipment Corporation i Boston. Dette var et selskap som fant opp mange interessante ting, men benektet viktigheten av personlige datamaskiner. Et selskap med en vanskelig skjebne, hvis grunnleggere en gang var unge revolusjonĂŠre, de lĂŠrte ingenting og glemte ingenting, og sĂ„ gikk de fra revolusjonĂŠre til reaksjonĂŠre i lĂžpet av et dusin Ă„r. De likte Ă„ spĂžke med at personlige datamaskiner hĂžrte hjemme i garasjen - en forlatt garasje, selvfĂžlgelig. Det er helt Ă„penbart at de ble Ăždelagt av mer fleksible selskaper. Da det ble klart at selskapet var i trĂžbbel, ringte jeg en venn av meg i Brown, som ligger omtrent en time utenfor Boston. Jeg Ăžnsket ikke Ă„ forlate Boston pĂ„ den tiden fordi det ikke var mange Ă„pninger ved andre universiteter. Dette var en tid da det ikke var sĂ„ mange jobber innen informatikk som det er nĂ„. Og Brown hadde en Ă„pning, jeg trengte ikke Ă„ flytte hjem, jeg trengte ikke Ă„ flytte familien min, og jeg elsker virkelig Ă„ bo i Boston! Det var slik jeg bestemte meg for Ă„ gĂ„ til Brown. Jeg liker det. Elevene er fantastiske, sĂ„ jeg har aldri prĂžvd Ă„ gĂ„ et annet sted. I lĂžpet av sabbatsperioden jobbet jeg i Microsoft i ett Ă„r, gikk pĂ„ Technion i Haifa i et Ă„r, og nĂ„ skal jeg vĂŠre i Algorand. Jeg har mange kolleger overalt og derfor er ikke den fysiske plasseringen av klasserommene vĂ„re sĂ„ viktig. Men det viktigste er elevene, de er best her. Jeg har aldri prĂžvd Ă„ gĂ„ et annet sted fordi jeg er ganske fornĂžyd her.

Til tross for Browns berÞmmelse i USA, er han overraskende ukjent i utlandet. Som du kan se, gjÞr jeg nÄ alt jeg kan for Ä rette opp denne tilstanden.

Forskjellen mellom forskning ved et universitet og innenfor et selskap

Vitaly: Ok, neste spÞrsmÄl er om digitalt utstyr. Du var der som forsker. Hva er forskjellen mellom Ä jobbe i FoU-avdelingen i et stort selskap og Ä jobbe ved et universitet? Hva er fordelene og ulempene?

Maurice: I tjue Ă„r jobbet jeg i Microsoft, jobbet tett med ansatte i Sun Microsystems, Oracle, Facebook og nĂ„ Algorand. PĂ„ bakgrunn av alt dette vil jeg si at det er mulig Ă„ drive fĂžrsteklasses forskning bĂ„de i bedrifter og ved universiteter. Den viktige forskjellen er at man i en bedrift jobber med kollegaer. Hvis jeg plutselig har en idĂ© til et prosjekt som ennĂ„ ikke eksisterer, mĂ„ jeg overbevise mine jevnaldrende om at dette er en god idĂ©. Hvis jeg er pĂ„ Brown, kan jeg fortelle elevene mine: la oss jobbe med antigravitasjon! De vil enten reise til noen andre eller ta pĂ„ seg et prosjekt. Ja, jeg mĂ„ finne finansiering, jeg mĂ„ skrive en stipendsĂžknad og sĂ„ videre. Uansett vil det alltid vĂŠre mange studenter, og man vil kunne ta avgjĂžrelser ensidig. Men pĂ„ universitetet vil du mest sannsynlig ikke jobbe med folk pĂ„ ditt nivĂ„. I en verden av industriell forskning mĂ„ du fĂžrst overbevise alle om at prosjektet ditt er verdt Ă„ ta fatt pĂ„. Jeg kan ikke bestille noe til noen. Og begge disse mĂ„tene Ă„ jobbe pĂ„ er verdifulle, for hvis du jobber med noe virkelig sprĂžtt og kollegene dine er vanskelige Ă„ overbevise, er det lettere Ă„ overbevise avgangsstudenter – spesielt hvis du betaler dem. Hvis du jobber med noe som krever mye erfaring og dyp ekspertise, sĂ„ trenger du kollegaer som kan si «nei, det hender at jeg forstĂ„r pĂ„ dette omrĂ„det og ideen din er dĂ„rlig, den vil ikke fungere.» Dette er veldig nyttig med tanke pĂ„ Ă„ kaste bort tid. Dessuten, hvis du i industrielle laboratorier bruker mye tid pĂ„ Ă„ skrive rapporter, bruker du denne tiden pĂ„ et universitet pĂ„ Ă„ finne penger. Hvis jeg vil at studenter skal kunne gĂ„ et sted, mĂ„ jeg finne pengene til det et annet sted. Og jo viktigere posisjonen din ved universitetet er, jo mer tid mĂ„ du bruke pĂ„ Ă„ samle inn penger. SĂ„ nĂ„ vet du hva jeg jobber for - en profesjonell tigger! Som en av de munkene som gĂ„r rundt med en offerplate. Generelt utfyller disse to aktivitetene hverandre. Det er derfor jeg prĂžver Ă„ leve og holde fĂžttene pĂ„ bakken i begge verdener.

Vitaly: Det ser ut til at det er vanskeligere Ă„ overbevise et selskap enn Ă„ overbevise andre forskere.

Maurice: Vanskeligere, og mye mer. Dessuten er det forskjellig pÄ forskjellige omrÄder: noen driver fullskala forskning, mens andre fokuserer pÄ emnet sitt. Hvis jeg gikk til Microsoft eller Facebook og sa: la oss lage antigravitasjon, ville de neppe satt pris pÄ det. Men hvis jeg sa nÞyaktig det samme til avgangsstudentene mine, ville de mest sannsynlig komme i jobb med en gang, selv om jeg nÄ ville fÄ problemer - jeg mÄ tross alt finne penger til dette. Men sÄ lenge du Þnsker Ä gjÞre noe som er i trÄd med selskapets mÄl, kan det selskapet vÊre et veldig bra sted Ä forske.

Hydra og SPTDC

Vitaly: SpÞrsmÄlene mine nÊrmer seg slutten, sÄ la oss snakke litt om den kommende turen til Russland.

Maurice: Ja, jeg gleder meg til Ă„ reise tilbake til St. Petersburg.

Alexey: Jeg er beĂŠret over Ă„ ha deg med oss ​​i Ă„r. Dette er andre gang du er i St. Petersburg, ikke sant?

Maurice: Allerede den tredje!

Alexey: Jeg forstĂ„r, men SPTDC – definitivt den andre. Sist gang ble skolen ringt SPTCC, har vi nĂ„ endret Ă©n bokstav (C til D, Concurrent to Distributed) for Ă„ understreke at det er flere omrĂ„der spesielt knyttet til distribuert databehandling i Ă„r. Kan du si noen ord om rapportene dine pĂ„ skolen og Hydra konferanse?

Maurice: PÄ skolen vil jeg snakke om det grunnleggende om blokkjede og hva du kan gjÞre med det. Jeg vil gjerne vise at blokkjeder ligner veldig pÄ den flertrÄdede programmeringen vi er kjent med, men med sine egne nyanser, og disse forskjellene er viktige Ä forstÄ. Hvis du gjÞr en feil i en vanlig nettapplikasjon, er det bare irriterende. Hvis du skriver buggy-kode i en finansapplikasjon, vil noen definitivt stjele alle pengene dine. Dette er helt forskjellige nivÄer av ansvar og konsekvenser. Jeg skal snakke litt om proof-of-work, om smarte kontrakter, om transaksjoner mellom ulike blokkjeder.

Det vil vÊre andre foredragsholdere som jobber ved siden av meg som ogsÄ har noe Ä si om blockchain, og vi ble enige om Ä koordinere med hverandre slik at historiene vÄre passer godt sammen. Men for ingeniÞrrapporten vil jeg fortelle et bredt publikum en forstÄelig forklaring pÄ hvorfor du ikke skal tro alt du hÞrer om blokkjeder, hvorfor blokkjeder er et flott felt, hvordan det passer inn med andre kjente ideer, og hvorfor vi frimodig bÞr se til fremtiden.

Alexey: I tillegg vil jeg si at dette ikke vil finne sted i formatet til en treff- eller brukergruppe, slik det var for to Ă„r siden. Vi bestemte oss for Ă„ holde en liten konferanse i nĂŠrheten av skolen. Årsaken er at etter Ă„ ha kommunisert med Peter Kuznetsov, innsĂ„ vi at skolen er begrenset til bare hundre, kanskje 120 personer. Samtidig er det mange ingeniĂžrer som Ăžnsker Ă„ kommunisere med deg, delta pĂ„ presentasjoner og generelt er interessert i temaet. Derfor har vi opprettet en ny konferanse kalt Hydra. Forresten, noen ideer om hvorfor Hydra?

Maurice: Fordi det blir syv foredragsholdere? Og hodene deres kan kuttes av, og nye hĂžyttalere vil vokse i stedet for dem?

Alexey: Flott idĂ© for Ă„ utvikle nye hĂžyttalere. Men faktisk er det en historie her. Husk legenden om Odyssevs, hvor han mĂ„tte seile mellom Scylla og Charybdis? Hydra er noe sĂ„nt som Charybdis. Historien er at jeg en gang snakket pĂ„ en konferanse og snakket om multithreading. Det var bare to spor pĂ„ denne konferansen. I begynnelsen av reportasjen fortalte jeg publikum i salen at de nĂ„ har et valg mellom Scylla og Charybdis. Åndedyret mitt er Charybdis fordi Charybdis har mange hoder og temaet mitt er flertrĂ„ding. Slik vises navn pĂ„ konferanser.

Vi har uansett gÄtt tom for spÞrsmÄl og tid. SÄ takk, venner, for et flott intervju, og vi sees pÄ SPTDC School og Hydra 2019!

Du kan fortsette samtalen med Maurice pÄ Hydra 2019-konferansen, som avholdes 11.-12. juli 2019 i St. Petersburg. Han kommer med en rapport "Blokkjeder og fremtiden for distribuert databehandling". Billetter kan kjÞpes pÄ den offisielle hjemmesiden.

Kilde: www.habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster