— som professor i datalogi ved University of Rochester og fungerede som dekan for University of Wisconsin-Madison i fem år. Han forsker i og underviser i parallel og distribueret programmering og sprogdesign.
Verden kender Michael fra lærebogen , hvad med arbejdet modtog Dijkstra-prisen som en af de mest berømte inden for distribueret databehandling. Du kender ham måske også som forfatteren af netop den algoritme. .
Sammen med Doug Lee udviklede han de ikke-blokerende algoritmer og synkrone køer, der driver Java-bibliotekerne. JavaSE 6 har forbedret ydeevnen med 10 gange ThreadPoolExecutor.
Indhold:
- Tidlig karriere, University of Rochester. Charlotte-projektet, lynx-sprog;
- IEEE skalerbar kohærent grænseflade, MCS-lås;
- Overlevelse i en verden i konstant forandring;
- Bliver studerende dummere? Globale tendenser, internationalisering;
- Effektivt arbejde med elever;
- Hvordan man holder sig opdateret på nye kurser og bøger;
- Forbindelse mellem erhvervsliv og akademia;
- At sætte idéer i praksis. MCS, MS, CLH, JSR 166, samarbejde med Doug Lee og flere;
- Transaktionel hukommelse;
- Nye arkitekturer: Transaktionshukommelse er tæt på sejr;
- Ikke-flygtig hukommelse, Optane DIMM, ultrahurtige enheder;
- Den næste store trend. Dobbelte datastrukturer. Hydra.
Interviewet er foretaget af:
Vitaly Aksenov — er i øjeblikket postdoc ved IST Østrig og medlem af afdelingen for computerteknologier på ITMO Universitet. Han forsker inden for teori og praksis om parallelle datastrukturer. Før han kom til IST, modtog han sin ph.d. fra universitetet Paris Diderot og ITMO Universitet under vejledning af professor Petr Kuznetsov.
Alexey Fedorov - Producer hos JUG Ru Group, en russisk virksomhed, der arrangerer konferencer for udviklere. Alexey deltog i forberedelsen af mere end 50 konferencer, og hans CV omfatter alt fra stillingen som udviklingsingeniør hos Oracle (JCK, Java Platform Group) til stillingen som udvikler hos Odnoklassniki.
Vladimir Sitnikov - Ingeniør hos Netcracker. Ti års arbejde med ydeevnen og skalerbarheden af NetCracker OS, software, der bruges af teleoperatører til at automatisere netværks- og netværksudstyrsstyringsprocesser. Interesseret i Java og Oracle Database-ydelsesproblemer. Forfatter til mere end et dusin præstationsforbedringer i den officielle PostgreSQL JDBC-driver.
Tidlig karriere, University of Rochester. Charlotte-projektet, Lynx-sprog.
AlexeyFørst og fremmest ville jeg fortælle dig, at vi i Rusland alle elsker datalogi, datalogi og algoritmer. Til det uanstændige punkt. Vi læser alle sammen Så den kommende konference, skolen og selve dette interview burde blive meget populært. Vi modtog mange spørgsmål til dette interview fra studerende, programmører og medlemmer af lokalsamfundet, så vi er meget taknemmelige for denne mulighed. Er datalogi lige så elsket i USA?
MichaelVores felt er så forskelligartet, det har så mange retninger, og det påvirker samfundet på så mange forskellige måder, at det er svært for mig at give dig et endegyldigt svar. Men faktum er, at det har medført enorme forandringer i erhvervslivet, industrien, kunsten og samfundet generelt i løbet af de sidste 30 år.
VitaliLad os starte med noget mere fjerntliggende. Mange universiteter har en slags specialisering inden for ét bestemt område. For Carnegie Mellon er det parallel computing; for MIT er det kryptografi, robotteknologi og multithreading. Findes der en lignende specialisering på University of Rochester?
MichaelHelt ærligt vil jeg sige, at CMU og MIT er store på alt. Vores afdeling har altid været meget optaget af AI. Halvdelen af vores folk arbejder med AI eller HCI, hvilket er en højere andel end de fleste afdelinger, og det har det altid været. Men da jeg gik på universitetet, havde jeg ingen kurser i AI, og jeg har aldrig arbejdet med det. Så min afdeling er meget optaget af et problem, som jeg ikke har nogen erfaring med. Den gode nyhed er, at det næstvigtigste problem i vores afdeling er samtidig og multitrådet programmering, hvilket er mit ekspertiseområde.
VitaliDu begyndte at arbejde inden for datalogi, da feltet multithreaded programmering lige var ved at spire frem. At dømme ud fra listen over dine publikationer er det tydeligt, at dine første værker omhandlede en ret bred vifte af problemstillinger: hukommelsesstyring i multithreaded systemer, distribuerede filsystemer, operativsystemer. Hvorfor så alsidighed? Forsøgte du at finde din plads i forskningsmiljøet?
MichaelSom studerende deltog jeg i på University of Wisconsin, hvor et af de første distribuerede operativsystemer blev udviklet. Der arbejdede jeg sammen med Raphael Finkel () og Marvin Solomon (). Min afhandling handlede om at designe et systemsoftwaresprog til distribuerede systemer - det er heldigvis næsten glemt nu. Jeg skabte et programmeringssprog kaldet Lynx, der skulle gøre det nemmere at skrive servere til et løst koblet distribueret operativsystem. Da jeg mest arbejdede med operativsystemer på det tidspunkt, antog jeg, at min karriere mest ville være inden for operativsystemer. Men Rochester var et meget lille universitet, og på grund af det interagerede de forskellige grupper der meget tæt med hinanden. Der var ikke et dusin andre operativsystemfolk, jeg kunne tale med, så alle mine kontakter var med folk, der arbejdede inden for helt andre områder. Jeg nød det virkelig; at være generalist er en stor fordel for mig. Hvad angår multithreaded datastrukturer og synkroniseringsalgoritmer, begyndte jeg at arbejde på dem helt ved et tilfælde.
IEEE skalerbar kohærent grænseflade, MCS-lås.
VitaliKan du uddybe dette lidt mere?
MichaelDet her er en sjov historie, som jeg aldrig bliver træt af at fortælle alle. Det skete på en konference. i Boston - det var i slutningen af 80'erne eller begyndelsen af 90'erne. John Mellor-Crummie var til stede ved konferencen (), en kandidat fra vores afdeling. Jeg kendte ham, men vi havde ikke tidligere udført fælles forskning. Mary Vernon () fra Wisconsin holdt et foredrag om et multiprocessorsystem, de var ved at udvikle i Wisconsin: Denne Multicube havde en hardwaresynkroniseringsmekanisme kaldet Q on Sync Bit, og den blev senere omdøbt til Q on Lock Bit, fordi det lød som Colby-ost, så det var et ordspil. Hvis du er til multithreading, ved du sikkert, at Colby med tiden blev synkroniseringsmekanismen for IEEE Scalable Coherent Interface-standarden. Det var en låsemekanisme, der skabte pointere fra en cache til en anden på hardwareniveau, så hver låseholder vidste, hvis tur det var. Da John og jeg hørte om dette, kiggede vi på hinanden og sagde, hvorfor gøre dette på hardwareniveau? Kan vi ikke gøre det samme med sammenligning og bytte? Vi tog en af de notesbøger, der lå rundt omkring i klasseværelset, og skrev den ned. , mens Mary fortsatte sin tale. Vi implementerede det senere, eksperimenterede, ideen virkede, og vi udgav artiklen. På det tidspunkt virkede emnet som en sjov distraktion for mig, hvorefter jeg planlagde at vende tilbage til operativsystemer. Men så opstod et andet problem i samme retning, og til sidst blev synkronisering, multithreading og datastrukturer mit hovedspecialitet. Som du kan se, skete det hele ved et tilfælde.
VitaliJeg har været bekendt med MCS-blokering i lang tid, men indtil nu vidste jeg ikke, at det var dit arbejde, og jeg var ikke klar over, at det var et akronym for dine efternavne.
Hvordan overlever man i en verden i konstant forandring?
AlexeyJeg har et relateret spørgsmål. For 30 eller 40 år siden var der mere frihed inden for forskellige specialer. Hvis du vil starte en karriere inden for multithreading eller distribuerede systemer, så gør det endelig. Hvis du vil arbejde med operativsystemer, er der intet problem. Der var mange åbne spørgsmål og få eksperter på hvert område. Nu er der snævre specialiseringer: der er ingen eksperter i operativsystemer generelt, der er specialister i individuelle systemer. Det samme gælder for multithreading og distribuerede systemer. Men problemet er, at vores liv ikke er uendelige, hver person kan kun bruge et par årtier på forskning. Hvordan overlever man i denne nye verden?
MichaelVi er ikke specielle i denne henseende, det samme skete inden for andre områder på et eller andet tidspunkt. Jeg var heldig, at jeg begyndte at arbejde inden for datalogi, da feltet var i sine "teenageår". Nogle af fundamenterne var allerede lagt, men alt var stadig meget umodent. Sådan en mulighed kommer ikke særlig ofte. Elektroteknik har eksisteret i meget lang tid, fysik endnu længere, matematik næsten siden tidernes morgen. Men det betyder ikke, at ingen gør interessante opdagelser inden for matematik længere. Der er stadig mange åbne problemer, men samtidig er vi nødt til at lære mere. Du bemærkede med rette, at der nu er mange flere specialiseringer, end der plejede at være, men det betyder kun, at vi har befundet os i samme situation som de fleste andre områder af menneskelig aktivitet.
AlexeyJeg er interesseret i et mere praktisk aspekt af spørgsmålet her. Jeg har en baggrund i matematik, og under mine studier deltog jeg ofte i konferencer og arbejdede med forskellige videnskabelige emner. Jeg oplevede, at mine foredrag ikke blev forstået af nogen i publikum, og på samme måde var andre menneskers foredrag kun forståelige for dem selv. Dette er ikke tilfældet med emner på højt niveau, men så snart man begynder at fordybe sig i noget, holder publikum op med at følge med. Hvordan bekæmper man dette?
MichaelIkke altid med succes. Jeg holdt for nylig et foredrag, hvor jeg blev lidt for teknisk. Undervejs blev det tydeligt, at størstedelen af publikum ikke forstod mig, så jeg måtte tilpasse mig undervejs. Slides ville ikke ændre sig, så det var ikke særlig vellykket - derfor prøver jeg generelt ikke at bruge slides. Generelt er mit råd at tage hensyn til dit publikum. Du skal vide, hvem du taler til, deres vidensniveau, og hvad de har brug for at høre for at værdsætte dit arbejde.
VitaliKan du give mig et hint om, hvad dette foredrag handlede om?
MichaelFor at være ærlig, foretrækker jeg ikke at gå i dybden med dette emne for at holde de pågældende personer anonyme. Pointen er, at vi ofte går for dybt ind i de indviklede problemer, vi arbejder med, så det bliver svært at forklare i begyndelsen af foredraget, hvorfor dette problem er interessant og vigtigt, og hvordan det relaterer sig til de problemstillinger, som publikum allerede kender. Efter min erfaring er dette den sværeste færdighed for studerende. Og dette var også det svage punkt i mit seneste foredrag. Et velstruktureret foredrag bør skabe kontakt til publikum fra starten, forklare dem præcis, hvad problemet er, og hvordan det relaterer sig til de emner, de allerede kender. Hvor teknisk denne introduktion er, afhænger af publikum. Hvis den er meget mangfoldig, kan foredraget være i flere etaper. Introduktionen bør være tilgængelig for alle, og ved slutningen af delen er det måske ikke længere muligt at følge med dig, men folk, der er relativt bekendt med dit felt, vil være i stand til at finde ud af alt.
Bliver studerende dummere? Globale tendenser, internationalisering.
AlexeyDu har observeret studerende i flere årtier. Bliver studerende dummere eller klogere fra årti til årti eller fra år til år? I Rusland klager professorer konstant over, at studerende bliver dummere hvert år, og det er simpelthen uklart, hvad man skal gøre ved det.
MichaelMan kan høre en masse negativitet fra os gamle fyre. Vi har en underbevidst tendens til at forvente, at studerende har alle de 30 års erfaring, som vi allerede har. Hvis jeg har en dybere forståelse, end jeg havde i 1985, hvorfor har studerende det så ikke? Sandsynligvis fordi de er 20 år gamle, hvad med det? Jeg tror, at den mest betydningsfulde ændring i de seneste årtier er demografien: Vi har mange flere internationale studerende nu, med undtagelse af canadiere. Der plejede at være mange canadiere, fordi vi er så tæt på grænsen til Canada, og studerende derfra kunne tage hjem i weekenderne. Men nu er der mange gode universiteter i Canada, og canadiere foretrækker at studere derhjemme, og der er betydeligt færre af dem, der tager til USA.
AlexeyTror du, at dette er en lokal eller global trend?
MichaelJeg husker ikke præcis hvem, men nogen sagde, at verden er flad. Vores region er blevet meget mere international. fandt sted udelukkende i USA, så besluttede de at afholde dem i andre lande hvert 4. år, og nu finder de sted over hele verden. Disse ændringer har påvirket endnu flere , fordi det altid har været en mere international organisation end ACM. Og der er programledere fra Kina, Indien, Rusland, Tyskland og mange andre lande, fordi der sker meget overalt nu.
AlexeyMen der er vel nogle negative aspekter ved en sådan internationalisering?
MichaelJeg vil sige, at alle de negative aspekter ikke er relateret til teknologi, men til politik. Engang var hovedproblemet, at USA stjal de klogeste og mest talentfulde mennesker fra lande over hele verden. Og nu er hovedproblemet de politiske spil mellem forskellige lande omkring visa og immigration.
AlexeyDet vil sige barrierer og den slags. Forstået.
VladimirPersonligt er jeg nysgerrig omkring din tilgang, når du underviser elever i et nyt emne. Der er forskellige muligheder: Du kan forsøge at inspirere dem til at prøve noget nyt, eller du kan være mere opmærksom på detaljerne i, hvordan en bestemt teknologi fungerer. Hvad foretrækker du?
Effektivt arbejde med elever
AlexeyOg hvordan finder man den forbandede balance mellem det første og det andet?
MichaelProblemet er, at timerne ikke altid går, som jeg gerne vil have dem. Jeg giver normalt eleverne læsestof på forhånd, så de kan absorbere det, forstå det bedst muligt og stille spørgsmål om de dele, de ikke forstår. Så kan klassen fokusere på de sværeste dele og udforske dem sammen. Det er sådan, jeg kan lide at undervise. Men i betragtning af den arbejdsbyrde, som eleverne har i øjeblikket, får jeg ikke altid lavet det arbejde, de har lavet på forhånd. Som følge heraf er jeg nødt til at bruge meget mere tid på generelle opsummeringer, end jeg gerne ville. På trods af dette forsøger jeg at holde vores timer interaktive. Ellers er det nemmere bare at optage en video én gang, som eleverne kan se derhjemme. Live-timer handler om menneskelig interaktion. Jeg foretrækker at bruge kridt og en tavle i klassen i stedet for slides, undtagen i sjældne tilfælde, hvor et diagram er for komplekst til at sætte på tavlen. På den måde behøver jeg ikke at holde mig til en fast lektionsplan. Da der ikke er nogen streng rækkefølge, hvori jeg præsenterer materialet, giver det mig mulighed for at tilpasse mig publikum afhængigt af de spørgsmål, jeg modtager. Generelt forsøger jeg at gøre undervisningen så interaktiv som muligt, så det materiale, jeg præsenterer, afhænger af de spørgsmål, jeg bliver stillet.
VladimirDet er fantastisk. Min erfaring er, at det er ret svært at få spørgsmål fra publikum. Selv hvis man beder dem på forhånd om at stille spørgsmål, uanset hvor dumme eller kloge de er, så forbliver de stadig tavse. Hvordan håndterer man det?
MichaelDu vil grine, men hvis du står der stille længe nok, vil alle før eller siden blive utilpasse, og nogen vil stille et spørgsmål. Eller du kan stille et simpelt teknisk ja/nej-spørgsmål for at afgøre, om folk forstod, hvad der lige blev sagt. Er der for eksempel et datakapløb i eksemplet ovenfor? Hvem tænker ja? Hvem tænker nej? Hvem forstår slet ikke noget, fordi kun halvdelen af hænderne gik op?
VitaliOg hvis du svarer forkert, bliver du smidt ud af klassen :)
MichaelHvis du ikke har svaret på noget, så er jeg nødt til at stille et spørgsmål. Jeg er nødt til at finde ud af, hvad eleven skal vide for at besvare det spørgsmål, jeg lige har stillet. Jeg har brug for, at de hjælper mig med at hjælpe dem. Jeg er villig til at tilpasse mig dem, så de kan finde ud af det. Men hvis jeg ikke ved, hvad der foregår i deres hoveder, kan jeg ikke gøre det. Og hvis jeg holder eleverne på tæerne længe nok, ender de nogle gange med at stille de rigtige spørgsmål, spørgsmål, der giver mig mulighed for at se, hvad der foregår i deres hoveder.
AlexeyFører disse spørgsmål nogle gange til idéer, som du ikke selv havde tænkt på før? Er de uventede? Giver de dig mulighed for at se på et problem i et nyt lys?
MichaelDer er spørgsmål, der åbner op for en ny måde at præsentere materialet på. Der er ofte spørgsmål, der fører til interessante problemer, som jeg ikke havde planlagt at tale om. Studerende fortæller mig ofte, at jeg har en tendens til at komme væk fra emnet, når det sker. Og ifølge dem er dette ofte den mest interessante del af undervisningen. Meget sjældent, bogstaveligt talt et par gange, har studerende stillet spørgsmål, der har ført til en ny retning i forskningen og er vokset til en artikel. Dette sker meget oftere i samtaler med studerende end i undervisningen, men det er sket lejlighedsvis i undervisningen.
AlexeySå de studerende stillede dig spørgsmål, som senere kunne bruges som grundlag for en artikel?
Michael: Ja.
VitaliHvor ofte har du disse samtaler med eleverne? Når de vil vide mere end det, der blev fortalt i timen?
MichaelMed mine kandidatstuderende – hele tiden. Jeg har omkring 5 eller 6 af dem, og vi diskuterer ting med dem hele tiden. Men den slags samtaler med studerende, der bare deltager i mine timer – ikke særlig ofte. Selvom jeg gerne ville have, at det skete oftere. Jeg har en mistanke om, at de simpelthen er bange for at komme til fakultetet i kontortiden. Hvert semester formår nogle studerende at overvinde denne psykologiske barriere, og det er altid meget interessant at tale med dem efter timerne. Men hvis alle de studerende var så modige, ville jeg simpelthen ikke have nok tid. Så måske fungerer alt, som det skal.
VitaliHvordan finder du tid til at kommunikere med eleverne? Så vidt jeg ved, har lærerne i USA meget arbejde - stipendieansøgninger og lignende.
MichaelHelt ærligt, det at arbejde med studerende er den del af mit job, jeg nyder mest. Så jeg har nok motivation til det. Det meste af den tid, jeg bruger på mit kontor, går med alle mulige slags møder. Det er sommer nu, så skemaet er mindre travlt, men i løbet af skoleåret er hver dag fra 9 til 17 fuld. Research, evalueringer, legater - kun aftener og weekender er tilbage til alt dette.
Hvordan man holder sig opdateret på nye kurser og bøger.
AlexeyEr der nogle kurser, du har undervist i længe, som du stadig underviser i? Noget i retning af introduktion til datalogi.
MichaelDet første, der falder mig ind her, er et kursus i programmeringssprog.
AlexeyHvor forskellig er nutidens version af dette kursus fra den, der var for 10, 20, 30 år siden? Måske er det mere interessante her ikke detaljerne i et bestemt kursus, men de generelle tendenser.
MichaelMit kursus i programmeringssprog var noget usædvanligt, da jeg oprettede det. Jeg overtog kurset i slutningen af 1980'erne og erstattede dermed min kollega, Doug Baldwin (). Kurset var kun marginalt relateret til min specialisering, men da han forlod kurset, var jeg den bedste person til at undervise i det. Jeg kunne ikke lide nogen af de lærebøger, der fandtes på det tidspunkt, så jeg endte med at skrive lærebogen til kurset selv. (Redaktørens note: Dette handler om bogen) Det bruges nu på over 200 universiteter verden over. Min tilgang er usædvanlig, idet den bevidst blander sprogdesign og implementeringsproblemer og lægger stor vægt på samspillet mellem disse aspekter på alle mulige områder. Den grundlæggende tilgang er forblevet den samme, ligesom mange af kernekoncepterne: abstraktioner, navnerum, modularitet, typer. Men sættet af sprog, som disse koncepter demonstreres med, har ændret sig fuldstændigt. Da kurset først blev oprettet, havde det mange eksempler i Pascal, og i dag har mange af mine studerende aldrig engang hørt om Pascal. Men de kender Swift, Go, Rust, så jeg er nødt til at tale om de sprog, der er i brug i dag. De studerende er nu også velbevandrede i scriptsprog, og da jeg begyndte at undervise i dette kursus, handlede det hele om kompilerede sprog. Nu har vi brug for en masse materiale om Python, Ruby og endda Perl, fordi det er det, folk skriver kode i nu om dage, og der sker en masse interessante ting i disse sprog, herunder inden for sprogdesign.
VitaliSå vil mit næste spørgsmål være relateret til det foregående. Hvordan holder man sig opdateret på dette område? Jeg har en mistanke om, at det kræver en masse arbejde at opdatere sådan et kursus - man skal forstå nye sprog og hovedideerne. Hvordan klarer man det?
MichaelJeg kan ikke sige, at jeg altid lykkes 100% med dette. Men det meste af tiden gør jeg bare, hvad alle andre gør - læser på internettet. Hvis jeg vil forstå Rust, skriver jeg det i Google, går til Mozilla-siden og læser manualen, der er lagt ud der. Det er i forhold til ting, der sker inden for kommerciel udvikling. Hvis vi taler om videnskab, så skal du her følge foredragene på store konferencer.
Forbindelsen mellem erhvervslivet og den akademiske verden
VitaliLad os tale om forbindelsen mellem forretning og forskning. I din liste over artikler fandt jeg adskillige artikler om cache-kohærens. Så vidt jeg forstår, var cache-kohærensalgoritmer ustabile på tidspunktet for deres udgivelse? Eller ikke udbredte nok. Hvor bredt accepterede var dine ideer i praksis?
MichaelJeg er ikke helt sikker på, hvilke publikationer du taler om. Jeg har arbejdet en del med mine studerende, Bill Bolosky () og Leonidas Kontotanassis () i begyndelsen af 1990'erne, hvor han arbejdede med hukommelsesstyring til Neumann-maskiner. På det tidspunkt var der en del forvirring i branchen om, hvordan man korrekt lavede et multiprocessorsystem: Skal man indbygge hardwareunderstøttelse til fjernhukommelsesadgang, skal man distribuere hukommelsen, skal man indlæse cache fra fjernhukommelsen, eller skal man flytte sider rundt i operativsystemet. Bill og Leonidas arbejdede begge inden for dette område og udforskede tilgange, der ikke involverede fjerncacheindlæsning. Det var ikke direkte relateret til cache-kohærens, men det var stadig arbejde med NUMA-hukommelsesstyring, og det førte til sidst til moderne tilgange til sideplacering i moderne operativsystemer. Så Bill og Leonidas udførte noget vigtigt arbejde, dog ikke det mest indflydelsesrige arbejde på dette område - der var mange andre mennesker, der arbejdede på det på det tidspunkt. Senere arbejdede jeg med cache-kohærens i forbindelse med hardware-transaktionshukommelse. Den gruppe, jeg arbejdede med på dette problem, endte med at få et par patenter. Der er nogle interessante ideer bag dem, men jeg tror ikke, de vil blive implementeret i praksis. Under alle omstændigheder er det svært for mig at bedømme deres rentabilitet.
AlexeyI den forbindelse et mere personligt spørgsmål: hvor vigtigt er det for dig at få dine ideer implementeret i praksis? Eller tænker du slet ikke over det?
MichaelJeg elsker at stille dette spørgsmål i interviews med andre mennesker, ansøgere eller kandidater til stillinger i afdelingen. Jeg tror ikke, der er et rigtigt svar på dette spørgsmål. Folk, der laver fede ting, kan have meget forskellige motivationer. Jeg er tiltrukket af problemer, fordi jeg personligt finder dem interessante, ikke på grund af deres praktiske anvendelse. Men på den anden side, når noget interessant finder en anvendelse, kan jeg virkelig godt lide det. Så det er ikke så simpelt. Men i begyndelsen af arbejdet er jeg stadig drevet, ikke af ideen om den endelige anvendelse i verden, men af ideens sammenhæng og ønsket om at udforske den og se, hvad der kommer ud af den. Hvis det i sidste ende giver et praktisk afkast, så er det fantastisk.
AlexeyPå grund af din uddannelse og erfaring er du bedre i stand til end de fleste at vurdere værdien af andres ideer. Du kan sammenligne dem og finde ud af, hvad der fungerer bedst med hvad. Jeg er sikker på, at du har en mening om de ting, der i øjeblikket bruges i praksis af store producenter som Intel. Er den vej, disse virksomheder går, efter din mening, den rigtige?
MichaelPraksis drejer sig altid om, hvad der kan have kommerciel succes, det vil sige skabe profit, og det må du hellere spørge en anden om. Mit arbejde ender for det meste med publikationer, og inden for operativsystemer evalueres de ud fra ydeevnemålinger: hastighed, strømforbrug, kodestørrelse. Men det har altid forekommet mig, at disse empiriske resultater kun tilføjes til artikler, så de kan publiceres, og de virkelige motiver for folks arbejde er æstetiske. Forskere evaluerer løsninger fra den kunstneriske side, de er interesserede i, hvor elegante ideerne er, og de forsøger at skabe noget bedre end eksisterende tilgange. Forskere er drevet af personlige, subjektive, æstetiske motiver. Men man kan ikke skrive om dette i selve artiklen, for programudvalget er disse ting ikke argumenter. Heldigvis er elegante løsninger oftest også hurtige og billige. Vi diskuterede dette emne sammen med et dusin af mine kolleger for omkring 15 år siden og skrev til sidst en artikel om det. Jeg tror, du stadig kan finde det nu, det hedder ... eller noget i den stil, den har mere end et dusin forfattere. Dette er den eneste artikel, hvor jeg er forfatter sammen med , så hvis du søger efter hendes navn i min publikationsliste, finder du det, du leder efter. Den handler om at evaluere systemforskning og hvor vigtig elegance er.
AlexeySå der er forskel på standarden for, hvad der betragtes som et godt resultat inden for videnskab og i erhvervslivet. Inden for videnskab evalueres ydeevne, strømforbrug, TDP, implementeringsvenlighed og mange andre ting. Har I mulighed for at udføre denne form for forskning på universitetet? Har I et laboratorium med forskellige maskiner og forskellige arkitekturer, hvor I kan udføre eksperimenter?
MichaelJa, vores afdeling har mange forskellige interessante maskiner. Oftest er de små, vi har en lille klynge og mange multiprocessorsystemer med forskellige acceleratorer. Derudover er der et kæmpe computercenter på campus, der betjener forskere fra flere dusin forskellige discipliner. Det har omkring tusind noder og tyve tusind kerner, alle på Linux. Hvis der er behov, kan man altid købe noget AWS. Så vi har ingen væsentlige begrænsninger med hardware.
AlexeyOg hvordan var tingene for tredive år siden? Var der problemer dengang?
MichaelDet var lidt anderledes dengang. I midten til slutningen af 1980'erne var der en opfattelse af, at videnskaben manglede computerressourcer. For at afhjælpe denne situation oprettede National Science Foundation ) oprettede programmet Coordinated Experimental Research (CER). Målet med dette program var at levere computerinfrastruktur til datalogiafdelinger, og det gjorde en betydelig forskel. Med de penge, de stillede til rådighed, købte vi en 1984-node BBN Butterfly på University of Rochester i 128, et år før jeg ankom dertil. På det tidspunkt var det det største shared-memory multiprocessor-system i verden. Det havde 128 processorer, hver på sit eget bundkort, og det optog fire racks. Hver processor havde en megabyte hukommelse, 128 megabyte RAM var en ufattelig mængde på det tidspunkt. Vi implementerede først MCS-låsning på denne maskine.
AlexeySå hvis jeg forstår dig korrekt, er hardwareproblemet løst på nuværende tidspunkt?
MichaelGenerelt set, ja. Der er et par forbehold: for det første, hvis man arbejder med computerarkitektur på chipniveau, er det svært at gøre det i den akademiske verden, fordi der findes meget bedre værktøjer til det i erhvervslivet. Hvis man har brug for noget mindre end 10 nanometer, er man nødt til at outsource det. Det er meget nemmere at være forsker hos Intel på det område. Hvis man arbejder med optisk kommunikation på chips eller solid-state-hukommelse, finder man teknologier i erhvervslivet, der endnu ikke findes i den akademiske verden, så man er nødt til at danne alliancer. For eksempel, Stephen Swanson () oprettet til nye hukommelsesteknologier. Denne form fungerer ikke altid, men i nogle tilfælde kan den være ret succesfuld. Derudover er udviklingen af de mest kraftfulde computersystemer inden for videnskab vanskeligere. De største projekter med supercomputere, som i øjeblikket er i USA, Japan og Kina, er alle koncentreret inden for erhvervslivet.
At sætte idéer i praksis. MCS, MS, CLH, JSR 166, samarbejde med Doug Lee og flere.
VitaliDu har allerede fortalt om, hvordan du begyndte at arbejde med synkroniseringsalgoritmer. Du har to meget berømte artikler om и , som på en måde blev implementeret i Java. (Redaktørens bemærkning: alle publikationer kan ses Der blev denne blokering implementeret med nogle ændringer, og det viste sig , og køen blev implementeret som tilsigtet. Men der gik mange år mellem udgivelsen af dine artikler og deres praktiske anvendelse.
AlexeyDet virker som omkring 10 år i tilfældet med køen.
MichaelFør disse funktioner dukkede op i Java-standardbiblioteket?
VitaliJa. Hvad gjorde du for at få dette til at ske? Eller gjorde du ingenting?
MichaelJeg kan fortælle dig, hvordan MS-køen kom ind i Java 5. Et par år før det udkom, arbejdede jeg med Mark Moyers' gruppe hos Sun Microsystems i deres laboratorium uden for Boston. Han havde organiseret en workshop for folk, han kendte, som arbejdede med interessante problemer i multithreading, fordi han ville finde emner, han kunne sælge til sin virksomhed. Det var der, jeg mødte Doug Lea første gang. Doug og jeg og omkring 25 andre personer fra Sun diskuterede Dougs præsentation om , som til sidst blev til java.util.concurrent. Undervejs sagde Doug, at han ville bruge MS-køen, men at han havde brug for en tæller til grænsefladen for at kunne gøre det. Det betød en separat metode, der var atomar, præcis og hurtig. Jeg foreslog blot at tilføje serienumre til noderne, tage den første node og den sidste node og trække den ene fra den anden. Doug kløede sig i hovedet, sagde "hvorfor ikke", og til sidst gjorde han netop det. Vi diskuterede at implementere denne tilgang i et bibliotek, men Doug udførte det meste af arbejdet selv. Han endte med at gøre Java-understøttelse af multithreading fantastisk.
AlexeySå hvis jeg forstår det korrekt, burde .size()-metoden have været en del af standardkøgrænsefladen, og den burde have haft en algoritmisk kompleksitet på O(1)?
MichaelJa, og derudover kræves en separat måler.
AlexeyFordi hvis du kalder .size()-metoden i Java, forventes resultatet at være tilgængeligt med det samme, ikke afhængigt af samlingens faktiske størrelse. Forstået, tak.
MichaelEt par år senere arbejdede jeg med duale datastrukturer med min studerende Bill Scherer - det er det, min opgave handler om. Doug kom til os og sagde, at han kunne bruge dem i Java Executor Framework. Sammen med Bill skabte han to implementeringer, såkaldte fair og unfair køer. Jeg var konsulent på dette projekt, selvom jeg ikke deltog i at skrive koden. Som følge heraf steg hastigheden af executors betydeligt.
VladimirHar du nogensinde stødt på forkerte implementeringer af dine algoritmer eller anmodninger om at tilføje nye funktioner? Generelt bør praksis stemme overens med teori, men de adskiller sig ofte. Lad os sige, at du har skrevet en algoritme, og på papiret virker den, men de personer, der implementerer den, er begyndt at bede dig om flere funktioner eller en form for tilpasning af algoritmen. Har du nogensinde oplevet sådanne situationer?
MichaelDet eneste eksempel, hvor jeg nogensinde er blevet kontaktet og spurgt "hvordan man implementerer det", er Dougs spørgsmål, som jeg allerede har dækket. Men der har været et par tilfælde, hvor der er foretaget interessante ændringer for at imødekomme praktiske behov. For eksempel konverterede K42-teamet hos IBM MCS-låsen og lavede en standardgrænseflade, så der ikke var behov for at sende kønoden frem og tilbage mellem erhvervelses- og frigivelsesrutinerne. Denne standardgrænseflade fik det, der i teorien var en smuk idé, til at fungere i praksis. Overraskende nok udgav de aldrig en artikel om det, og de fik et patent, men det blev senere opgivet. Det var en fantastisk idé, og jeg prøver at tale om det, når det er muligt.
Der var andre tilfælde, hvor folk forbedrede de algoritmer, jeg udgav. For eksempel har MS-køen en to-trins opsætningsmekanisme, hvilket betød, at der var to CAS'er på køens kritiske sti. På gamle maskiner var CAS'er ret dyre. Intel og andre har optimeret dem ret godt på det seneste, men på et tidspunkt var de instruktioner med 30 cyklusser, så det var uønsket at have mere end én på den kritiske sti. Så de designede en fin kø, der lignede MS-køen, men kun havde én atomoperation på den kritiske sti. De gjorde dette ved at tillade en operation at tage O(n) tid over en given tidsperiode i stedet for O(1). Dette var usandsynligt, men muligt. Dette skyldtes, at algoritmen på visse punkter ville gennemløbe køen fra begyndelsen til den aktuelle position i køen. Samlet set var det en meget god algoritme. Så vidt jeg ved, bruges den ikke særlig bredt, dels fordi atomoperationer er meget billigere, end de plejede at være. Men det var en god idé. Jeg kan også virkelig godt lide Dave Dice's arbejde hos Oracle. Alt, hvad han gør, er meget praktisk, og han bruger hardware meget klogt. Han har haft en finger med i spillet i forbindelse med mange NUMA-bevidste synkroniseringsalgoritmer og multi-threaded datastrukturer.
VladimirNår du skriver algoritmer eller underviser studerende, er resultaterne af dit arbejde ikke umiddelbart synlige. Fællesskabet har brug for lidt tid til at blive bekendt med, for eksempel, en ny artikel. En ny algoritme finder ikke øjeblikkelig anvendelse.
MichaelDet er ikke umiddelbart klart, om en artikel vil være betydningsfuld eller ej. Jeg synes, det ville være interessant at lave en undersøgelse af artikler, der har vundet priser på konferencer. Det vil sige at se på de artikler, som folk i programudvalg på det tidspunkt anså for at være de bedste. Vi bør forsøge at beregne, baseret på antallet af citater og deres indflydelse på erhvervslivet, hvor indflydelsesrige disse artikler virkelig var 10, 20, 25 år senere. Jeg tvivler på, at der ville være en stærk korrelation mellem disse to parametre. Den vil ikke være nul, men den vil højst sandsynligt være meget svagere, end vi kunne ønske os. Mange ideer forbliver ubrugte i lang tid, før de vinder indpas. Tag for eksempel transaktionel hukommelse. Fra det tidspunkt, hvor den originale artikel blev udgivet, indtil folk rent faktisk begyndte at bygge maskiner med den, gik der mere end 10 år. Og før denne hukommelse dukkede op i kommercielle produkter, gik der hele 20 år. I meget lang tid var der ingen, der var opmærksomme på artiklen, og så steg antallet af citater til den pludselig. Det ville være svært at forudsige dette på forhånd. På den anden side finder ideer nogle gange implementering med det samme. For et par år siden skrev jeg en artikel sammen med Joe Izraelevitz for DISC, der foreslog en ny formel definition af korrekthed for persistente datastrukturer, som kunne bruges efter at computeren, der kørte dem, gik ned. Jeg kunne godt lide artiklen fra starten, men den viste sig at være meget mere populær, end jeg havde forventet. Flere forskellige grupper tog den til sig, og den blev til sidst standarddefinitionen af persistente strukturer. Hvilket er dejligt.
VladimirBruger du nogen evalueringsteknikker? Forsøger du at evaluere dine opgaver og dine studerende? Med hensyn til om den person, du underviste, bevæger sig i den rigtige retning.
MichaelLigesom alle andre er jeg mere opmærksom på, hvad jeg laver i øjeblikket. Igen, ligesom alle andre, tjekker jeg af og til Google Scholar og ser, om mine tidligere artikler er citeret, men det er mest af nysgerrighed. Mest af alt er jeg opslugt af, hvad mine studerende laver nu. Med hensyn til vurdering af nuværende arbejde handler det delvist om æstetik, hvad der er elegant, og hvad der ikke er. Og i det daglige spiller åbne spørgsmål en stor rolle. For eksempel kommer en studerende til mig med en graf over nogle resultater, og vi prøver at forstå, hvor en eller anden mærkelig opførsel af grafen kommer fra. Generelt forsøger vi i vores arbejde konstant at forstå ting, som vi endnu ikke forstår.
Transaktionel hukommelse
VitaliMåske skulle vi tale lidt om transaktionel hukommelse?
MichaelJeg synes, det er værd at sige i det mindste lidt, fordi jeg har lagt en masse kræfter i dette. Det er det emne, jeg har publiceret om mere end noget andet. Men samtidig har jeg mærkeligt nok altid været meget skeptisk over for transaktionel hukommelse. Efter min mening, (M. Herlihy, JEB Moss) blev udgivet før sin tid. I begyndelsen af 1990'erne foreslog de, at transaktionshukommelse kunne hjælpe talentfulde programmører med at skrive multitrådet datastrukturer, så disse strukturer derefter kunne bruges som biblioteker af almindelige programmører. Det vil sige, at det ville være en hjælp for Doug Lees, der arbejdede på deres JSR 166. Men transaktionshukommelse var ikke beregnet til at gøre multitrådet programmering let. Og det var præcis, hvordan det blev opfattet i begyndelsen af 2000'erne, da det vandt popularitet. Det blev udråbt som en måde at løse problemet med parallel programmering. Denne tilgang virkede altid håbløs for mig. Transaktionshukommelse kunne kun gøre parallelle datastrukturer lettere at skrive. Og det, tror jeg, er det, den opnåede.
Om kompleksiteten ved at skrive flertrådet kode
AlexeyMeget interessant. Der synes at være en barriere mellem almindelige programmører og dem, der kan skrive multithreaded kode. I det sidste år har jeg talt flere gange med folk, der har implementeret et algoritmisk framework. For eksempel med Martin Thomson, og også med programmører, der arbejder på multithreaded-biblioteker. (Redaktørens note: Martin Thomson er en meget kendt udvikler, han skrev и Og han har også på vores konference Joker 2015, videooptagelse Han er den samme. denne konference, (også tilgængelig). Ifølge dem er den største udfordring, at algoritmerne er både hurtige og nemme at bruge. Det vil sige, at de forsøger at overvinde denne barriere og tiltrække så mange mennesker som muligt til dette område. Hvad synes du om dette?
MichaelDette er hovedproblemet ved multithreading: hvordan man opnår høj ydeevne uden at øge systemets kompleksitet.
AlexeyFordi når de forsøger at undgå kompleksitet, bliver algoritmen mindre generel.
MichaelDet vigtigste her er korrekt designede abstraktioner. Jeg tror, det er det vigtigste for computersystemer som felt generelt. Butler Lampson bruger gerne dette udtryk, og han kalder os "abstraktionshandlere". Der findes ingen simple teknologier i dag. De processorer, vi bruger, har 10 milliarder transistorer - der kan ikke tales om enkelhed her. Samtidig er ISA meget enklere end processoren, da vi har arbejdet i meget lang tid på at sikre høj ydeevne og en relativt simpel grænseflade til den. Men ikke alt går glat med den. Det samme problem med acceleratorer, der nu dukker op på markedet. Spørgsmål opstår - hvordan laver man den rigtige grænseflade til GPU'en, krypteringsmekanismen, komprimeringen, omkodningsmekanismen, lineær algebramekanismen eller endda en mere fleksibel FPGA. Hvordan laver man en grænseflade, der sikrer brugervenlighed af værktøjet og skjuler kompleksiteten? Ikke slippe af med den, men skjule den for den gennemsnitlige programmør.
AlexeySom jeg forstår det, har vi stadig en barriere i forståelsen af abstraktioner. Lad os tage hukommelsesmodellen, som på vores udviklingstrin inden for videnskab og teknologi er en af de vigtigste abstraktioner. Takket være den er alle programmører opdelt i to grupper: størstedelen er dem, der ikke forstår den, og den mindre del er dem, der gør, eller tror, de gør.
MichaelDet er et godt spørgsmål - forstår nogen af os virkelig hukommelsesmodellen?
VitaliIsærligt i C++.
MichaelTal med Hans Boehm engang. Han er en af de klogeste mennesker, jeg kender, en førende ekspert i hukommelsesmodeller. Han vil fortælle dig med det samme, at han ikke forstår meget af det. Men hvis vi går tilbage til spørgsmålet om abstraktioner, så er den vigtigste idé inden for hukommelsesmodeller i de sidste 30 år efter min mening udtrykt af (Redaktørens bemærkning: en komplet liste over publikationer er tilgængelig) ).
AlexeyMit spørgsmål er: stammer denne barriere fra selve konceptets natur?
MichaelNej. Sarita kom til den konklusion, at hvis man gør det rigtigt, kan man med succes skjule al kompleksiteten, få høj ydeevne og give programmøren en simpel API. Og hvis man følger den API, kan man opnå sekventiel konsistens. Jeg tror, det er den rigtige model. Skriv kode uden datakapløb, og man får sekventiel konsistens. For at reducere sandsynligheden for datakapløb har man selvfølgelig brug for specialværktøjer, men det er et andet spørgsmål.
VladimirHar der været tilfælde i din karriere, hvor et problem, der syntes løst, pludselig udviklede sig til en katastrofe, eller hvor problemet viste sig at være uløseligt? For eksempel kan du i teorien faktorisere et hvilket som helst tal eller afgøre, om et hvilket som helst tal er primtal. Men i praksis kan dette være vanskeligt at gøre; det er vanskeligt at faktorisere tal med den hardware, der findes i dag. Er noget lignende nogensinde sket for dig?
MichaelJeg kan ikke lige komme i tanke om noget lignende med det samme. Der har været tidspunkter, hvor jeg troede, at der ikke var mere at lave i et bestemt område, og så skete der noget nyt og interessant. For eksempel troede jeg, at området med ubegrænsede køer allerede var modent. Efter et par forbedringer af MNS-køen skete der ikke noget særligt. Og så opfandt Morrison og Afek Det blev klart, at man kunne have en ubegrænset flertrådet kø, der kun havde en "fetch-and-increment"-instruktion på den kritiske sti det meste af tiden. Og det kunne give en størrelsesorden bedre ydeevne. Det er ikke fordi, vi ikke vidste, at "fetch-and-increment" var en virkelig fed ting. Eric Freudenthal havde skrevet om det i sin Ultracomputer-artikel med Allan Gottlieb i slutningen af 1980'erne, men det var for begrænsede køer. Morrison og Afek var i stand til at bruge "fetch-and-increment" i en ubegrænset kø.
Nye arkitekturer: Er transaktionel hukommelse tæt på at vinde?
VladimirHolder du øje med nye arkitektoniske løsninger, der kan være nyttige for algoritmer?
MichaelDer er selvfølgelig mange ting, jeg gerne vil se implementeret.
VladimirOg hvilke, for eksempel?
MichaelFørst og fremmest nogle simple udvidelser til vores transaktionelle hukommelse på hardwareniveau i Intel- og IBM-processorer. Især vil jeg gerne gøre ikke-transaktionelle indlæsninger og lagre, der lige er sket, umiddelbart tilgængelige i transaktioner. De fører øjeblikkeligt til cyklusser i "happens-before"-sekvensen, så de kan være vanskelige. Men hvis man opretholder lag af abstraktion, er der mange meget interessante ting, man kan gøre uden for en transaktion, mens den sker. Jeg ved ikke, hvor svært det ville være, men det ville være meget nyttigt.
En anden nyttig ting er at indlæse cache fra fjernhukommelse. Jeg tror, at dette vil ske før eller siden. Denne teknologi vil give dig mulighed for at bygge systemer med disaggregeret hukommelse. Du kan f.eks. have 100 terabyte ikke-flygtig hukommelse i et rack, og operativsystemet vil dynamisk bestemme, hvilke sektioner af den hukommelse der skal knyttes til processorernes fysiske adresserum. Dette ville være meget nyttigt til cloud computing, fordi det ville give dig mulighed for at stille store mængder hukommelse til rådighed for de opgaver, der har brug for det. Jeg tror, at nogen vil gøre dette.
VitaliFor at afslutte diskussionen om transaktionel hukommelse har jeg endnu et spørgsmål om dette emne. Vil transaktionel hukommelse med tiden erstatte standard multithreaded datastrukturer?
MichaelNej. Transaktioner er en spekulativ mekanisme. På programmeringsniveau er de atomlåse, men under kølerhjelmen er de spekulationer. Denne forudsigelse fungerer, hvis de fleste gætter er korrekte. Så transaktionshukommelse fungerer godt, når tråde næsten ikke interagerer med hinanden, og du bare vil sikre dig, at der ikke er nogen interaktion. Men hvis en besked starter mellem tråde, er transaktioner af ringe nytte. Lad mig forklare, dette er tilfældet, når transaktioner er viklet rundt om hele den atomare operation. De kan stadig bruges med succes som byggesten til multitrådet datastrukturer. For eksempel, hvis du har brug for en tre-ords CAS, og du vil multitrådet tre små ting midt i en ægte multitrådet algoritme, der opererer på tyve tråde på én gang. Så transaktioner kan være nyttige, men de eliminerer ikke behovet for korrekt at designe multitrådet datastrukturer.
Ikke-flygtig hukommelse, Optane DIMM, superhurtige enheder.
VitaliDet sidste, jeg gerne vil tale om, er dit nuværende forskningsemne: ikke-flygtig hukommelse. Hvad kan vi forvente på dette område i den nærmeste fremtid? Måske kender du til eksisterende effektive implementeringer?
MichaelJeg er ikke hardwareekspert, jeg ved kun, hvad jeg læser i nyhederne, og hvad mine kolleger fortæller mig. Alle har allerede hørt, at Intel sælger , som har omkring 3 gange læseforsinkelsen og 10 gange skriveforsinkelsen i forhold til DRAM. De vil snart være tilgængelige i meget store kapaciteter. Det er sjovt at tænke på, at man vil kunne have en bærbar computer med adskillige terabyte byte-adresserbar RAM. Det er meget muligt, at vi om 10 år beslutter os for at bruge denne nye teknologi på samme måde, som vi bruger DRAM - bare for at øge kapaciteten. Men fordi den er ikke-flygtig, åbner den op for en helt ny verden af muligheder. Vi kan fundamentalt ændre lagringsstakken, så der ikke er nogen adskillelse mellem byte-adresserbar arbejdshukommelse og blokstruktureret persistent hukommelse. Så vi behøver ikke at serialisere alt, hvad vi har brug for at overføre fra et program til det næste, til blokstrukturerede filer. Der er mange vigtige principper, der kan udledes af dette, som påvirker operativsystemer, runtime og distribueret lagring. Det er et meget interessant område at arbejde i. Personligt er det svært for mig at forudsige, hvad alt dette vil føre til, men problemerne er meget interessante. Der kan være revolutionerende ændringer her, og de følger meget naturligt af arbejdet med multithreading, da gendannelse efter crash er en "multithreaded" proces sideløbende med systemets normale drift.
Det andet hovedemne, jeg arbejder med, er håndtering af ultrahurtige enheder og sikker adgang til enheder fra brugerområdet med systemkontrol over politik. I de senere år har der været en tendens til at flytte enhedsadgang ind i brugerområdet. Dette gøres, fordi kernens TCP-IP-stakk ikke kan fungere oven på en netværksgrænseflade, der har brug for en ny pakke hvert 5. mikrosekund, den vil simpelthen ikke følge med. Så producenter giver direkte adgang til enheder. Men det betyder, at operativsystemet mister kontrollen over processen, og det kan ikke give ordentlig adgang til enheden for konkurrerende applikationer. Vores forskergruppe mener, at denne ulempe kan undgås. Vi vil have en artikel om det på USENIX ATC denne måned. Det er relateret til arbejdet med persistens, da holdbar byte-adresserbar persistent hukommelse i bund og grund er en superhurtig I/O-enhed, der skal leveres i brugerområdet. Disse studier muliggør nye tilgange til mikrokerner, exokerner og andre traditionelle forsøg på sikkert at flytte funktionalitet fra OS-kernen til brugerområdet.
VladimirByte-adresserbar hukommelse er fantastisk, men der er en fysisk begrænsning - lysets hastighed. Og det betyder, at der uundgåeligt vil være en forsinkelse, når man interagerer med enheden.
MichaelHelt rigtigt.
VladimirVil der være tilstrækkelig kapacitet til at klare de nye belastninger?
MichaelDet er et godt spørgsmål, men det er svært for mig at svare på. Ideen om in-memory-processering har eksisteret i lang tid, det er meget interessant, men også meget komplekst. Jeg har ikke arbejdet inden for det område, men det ville være fantastisk, hvis der var nogle opdagelser der. Jeg er bange for, at jeg ikke har mere at tilføje.
VladimirDer er et andet problem. De nye, betydeligt større mængder RAM vil ikke kunne være i CPU'en. Derfor skal denne RAM isoleres på grund af fysiske begrænsninger.
MichaelHer afhænger alt af antallet af defekter i produktionen af integrerede kredsløb. Hvis det var muligt at fremstille halvlederwafere helt uden defekter, ville det være muligt at fremstille et mikrokredsløb udelukkende ud fra det. Men nu ved vi ikke, hvordan man fremstiller mikrokredsløb større end frimærker.
VladimirMen vi taler stadig om enorme størrelser, omkring centimeter. Dette påvirker uundgåeligt forsinkelsen.
MichaelJa. Der er intet, du kan gøre ved lysets hastighed.
VladimirDesværre.
Den næste store trend. Dobbelte datastrukturer. Hydra.
VitaliSom jeg forstår det, er du meget hurtig til at opfange nye tendenser. Du var en af de første til at arbejde med transaktionel hukommelse, og en af de første inden for ikke-flygtig hukommelse. Hvad tror du bliver den næste store trend? Eller er det måske en hemmelighed?
MichaelHelt ærligt, jeg ved det ikke. Jeg håber, jeg kan få øje på noget nyt, når det dukker op. Jeg har ikke været så heldig at opfinde nye områder på egen hånd, men jeg har været så heldig at begynde at arbejde tidligt med nye områder skabt af andre. Jeg håber, jeg kan gøre det i fremtiden.
AlexeyDet sidste spørgsmål i dette interview vil handle om dit foredrag på Hydra og din klasse på skolen. Hvis jeg har forstået det korrekt, vil foredraget på skolen handle om ikke-blokerende algoritmer, og på konferencen om duale datastrukturer. Kan du sige et par ord om disse foredrag?
MichaelVi har allerede berørt nogle af disse emner i dette interview. Det handler om arbejde, jeg lavede med min studerende Bill Scherer. Han skrev en afhandling om det, og Doug Lee bidrog også til det, og det blev til sidst en del af de multithreadede synkrone køer i Java-biblioteket. Lad os sige, at du læser og skriver til en datastruktur uden at låse, så hver operation har et begrænset antal instruktioner på den kritiske sti. Hvis du forsøger at hente data ud af en tom container eller forsøger at hente specifikke data, der ikke er i den container, fortæller den dig straks, at det ikke kan. Men den adfærd kan være uacceptabel, hvis en tråd virkelig har brug for disse data. Så er det første, der falder dig ind, at oprette en løkke, der konstant spørger, om de nødvendige data er dukket op. Men så er der interferens for alle andre. Med den tilgang kan du også vente 10 minutter, og så vil en anden tråd komme og ved et uheld hente de nødvendige data først. Dobbelte datastrukturer har stadig ingen låse, men de tillader tråde at vente ordentligt. Udtrykket "dual" betyder, at strukturen enten indeholder data eller anmodninger om data, lad os kalde dem anti-data. Så hvis du forsøger at hente noget fra en tom container, vil en anmodning i stedet blive placeret i containeren. Nu kan en tråd vente på en anmodning uden at forstyrre andre. Derudover prioriterer datastrukturen anmodninger, så når den modtager dem, sender den dem videre til den rigtige person. Dette er en låsefri mekanisme, der har en formel specifikation og god ydeevne i praksis.
AlexeyHvad er dine forventninger til denne datastruktur? Vil den forbedre ydeevnen i alle typiske tilfælde, eller er den bedre egnet til bestemte situationer?
MichaelDet er nyttigt, hvis du for det første har brug for en container uden låsning, og for det andet har brug for at vente i en situation, hvor du har brug for at udtrække data fra containeren, som ikke er i den. Så vidt jeg ved, giver vores struktur optimal opførsel, hvis disse to betingelser er opfyldt. Så i disse tilfælde anbefaler jeg at bruge den. Den største fordel ved datastrukturer uden låsning er, at de gør det muligt at undgå problemer med ydeevnen. Og ventetid er meget vigtig i mange algoritmer, hvis der overføres data fra en tråd til en anden.
VitaliLad mig præcisere: vil I tale om det samme både i skolen og på konferencen?
MichaelI skolen om multithreaded datastrukturer generelt, med en grundlæggende introduktion i begyndelsen af lektionen. Jeg antager, at publikum ved, hvad tråde er, og er bekendt med låse. Med udgangspunkt i denne grundlæggende viden vil jeg tale om låsefri datastrukturer. Jeg vil give et overblik over de vigtigste problemstillinger på dette område, hvor jeg berører emner som hukommelsesstyring. Jeg tror ikke, der vil være noget mere komplekst end en MS-kø.
AlexeyPlanlægger du at gennemgå dobbelte datastrukturer i slutningen af din time i skolen?
MichaelJeg vil nævne dem, men jeg vil ikke bruge meget tid på dem. Der vil være et foredrag om Hydra dedikeret til dem. Det vil handle om det projekt, der til sidst kom ind i Java, og om at arbejde med Joe Israelevich for at skabe en dual version af LCRQ-køen, og om at skabe en næsten universel konstruktion til duale datastrukturer.
AlexeySå forelæsningen på skolen kan anbefales til begyndere, og forelæsningen om duale datastrukturer på Hydra - til folk, der allerede har en vis erfaring?
MichaelRet mig hvis jeg tager fejl, men publikummet på Hydra vil være ret forskelligartet, inklusive en masse Java-eksperter og folk, der ikke specifikt laver multithreaded programmering.
VitaliJa, det er sandt.
AlexeyDet håber vi i hvert fald.
MichaelI dette tilfælde vil jeg stå over for det samme problem, som vi indledte dette interview med: hvordan man laver en rapport, der både er tilstrækkeligt teknisk detaljeret og tilgængelig for alle lyttere.
VitaliVil du fremlægge rapporten, mens du holder forelæsninger? Det vil sige, tale med publikum og tilpasse dig situationen?
MichaelJeg er bange for, at det ikke vil fungere på den måde, fordi foredraget vil have slides. Slides er vigtige, når publikum i starten taler forskellige sprog. Mange mennesker vil have svært ved at forstå mig på engelsk, især hvis jeg taler for hurtigt. Jeg valgte disse emner fordi bad mig om at tale om låsefri datastrukturer på SPTDC-skolen; og så var der behov for et foredrag til en Java-brugergruppekonference, og jeg ville gerne vælge noget, der specifikt ville være af interesse for Java-programmører. Den nemmeste måde var at tale om ting i Java-biblioteket, som jeg havde en del erfaring med.
AlexeyVi antager, at publikum på Hydra allerede ved noget om låsefri programmering og måske har en vis erfaring på dette område. Men dette er kun en antagelse, situationen vil blive klarere på selve konferencen. Under alle omstændigheder tak for din tid. Jeg er sikker på, at vores læsere vil finde interviewet meget interessant. Mange tak!
VitaliTak.
MichaelJeg vil med glæde møde dig i Skt. Petersborg.
AlexeyVi har også en smuk by. Har du nogensinde været her?
MichaelNej, jeg har aldrig været i Rusland overhovedet. Men Sankt Petersborg har altid været på listen over steder, jeg ikke har været endnu, men virkelig gerne vil besøge, så jeg var meget glad for invitationen.
AlexeyForresten, vi vil have et program med udflugter for talerne. Mange tak for interviewet, og hav en god dag!
Du kan fortsætte kommunikationen med Michael på Hydra 2019-konferencen, som afholdes den 11.-12. juli 2019 i Skt. Petersborg. Han vil komme med en rapport. . Billetter kan købes .
Kilde: www.habr.com
