"Empiriese resultate is slegs vir publikasie, die werklike motiewe van die werk is esteties." Goeie onderhoud met Michael Scott

"Empiriese resultate is slegs vir publikasie, die werklike motiewe van die werk is esteties." Goeie onderhoud met Michael Scott Michael Scott - reeds 34 jaar oud as professor in Rekenaarwetenskap aan die Universiteit van Rochester, en by sy huis Universiteit van Wisconsin–Madison was hy vir vyf jaar dekaan. Hy doen navorsing oor en leer studente oor parallelle en verspreide programmering en taalontwerp.

Die wêreld ken Michael uit die handboek "Programmering van taalpragmatiek", wat van werk "Algorithmes vir skaalbare sinchronisasie op multiverwerkers met gedeelde geheue" het die Dijkstra-prys ontvang as een van die bekendstes op die gebied van verspreide rekenaars. Jy ken hom dalk ook as die skrywer van daardie einste algoritme Michael-Scott.

Saam met Doug Lee het hy die nie-blokkerende algoritmes en sinchrone rye ontwikkel wat die Java-biblioteke aandryf. Implementering "dubbele datastrukture" in JavaSE 6 het werkverrigting met 10 keer verbeter ThreadPoolExecutor.

Inhoud:

  • Vroeë loopbaan, Universiteit van Rochester. Projek Charlotte, Lynx-taal;
  • IEEE-skaalbare samehangende koppelvlak, MCS-sluiting;
  • Oorlewing in 'n steeds veranderende wêreld;
  • Word studente dommer? Globale neigings, internasionalisering;
  • Effektiewe werk met studente;
  • Hoe om tred te hou met die voorbereiding van nuwe kursusse en boeke;
  • Skakels tussen besigheid en akademie;
  • Praktiese implementering van idees. MCS, MS, CLH, JSR 166, saam met Doug Lee en meer;
  • Transaksionele geheue;
  • Nuwe argitekture. Die oorwinning van transaksionele geheue is naby;
  • Nie-vlugtige geheue, Optane DIMM, ultravinnige toestelle;
  • Die volgende groot tendens. Dubbele datastrukture. Hidra.

Die onderhoud word gevoer deur:

Vitaly Aksenov - tans 'n nadoktoraat by IST Oostenryk en 'n lid van die Departement Rekenaartegnologie aan ITMO Universiteit. Doen navorsing in die veld van teorie en praktyk van mededingende datastrukture. Voordat hy by IST gewerk het, het hy sy PhD van Parys Diderot Universiteit en ITMO Universiteit ontvang onder leiding van professor Peter Kuznetsov.

Alexey Fedorov - Vervaardiger by JUG Ru Group, 'n Russiese maatskappy wat konferensies vir ontwikkelaars reël. Alexey het deelgeneem aan die voorbereiding van meer as 50 konferensies, en sy CV bevat alles van die posisie van 'n ontwikkelingsingenieur by Oracle (JCK, Java Platform Group) tot die posisie van 'n ontwikkelaar by Odnoklassniki.

Vladimir Sitnikov - Ingenieur by Netcracker. Tien jaar se werk aan die werkverrigting en skaalbaarheid van NetCracker OS, sagteware wat deur telekommunikasie-operateurs gebruik word om netwerk- en netwerktoerustingbestuursprosesse te outomatiseer. Stel belang in Java en Oracle Database prestasie kwessies. Skrywer van meer as 'n dosyn prestasieverbeterings in die amptelike PostgreSQL JDBC-bestuurder.

Vroeë loopbaan, Universiteit van Rochester. Charlotte-projek, Lynx-taal.

Alexey: Om mee te begin, wou ek jou vertel dat ons almal in Rusland regtig lief is vir Rekenaarwetenskap, Datawetenskap en algoritmes. Dit is doodgewoon obseen. Ons het alles gelees boek deur Cormen, Leiserson en Rivest. Daarom behoort die komende konferensie, skool en hierdie onderhoud self baie gewild te wees. Ons het baie vrae vir hierdie onderhoud van studente, programmeerders en gemeenskapslede ontvang, so ons is baie dankbaar vir hierdie geleentheid. Kry Rekenaarwetenskap dieselfde liefde in die VSA?

Michael: Ons veld is so divers, dit het soveel rigtings, en dit raak die samelewing op soveel verskillende maniere dat dit vir my moeilik is om vir jou 'n definitiewe antwoord te gee. Maar die feit is dat dit oor die afgelope 30 jaar geweldige veranderings in besigheid, nywerheid, kuns en die samelewing in die algemeen meegebring het.

Виталий: Kom ons begin met iets ver. In baie universiteite is daar iets soos spesialisering in een spesifieke area. Vir die Carnegie Mellon Universiteit is dit parallelle rekenaars, vir MIT is dit kriptografie, robotte en multithreading. Is daar so 'n spesialisasie aan die Universiteit van Rochester?

Michael: Om eerlik te wees, sou ek sê dat CMU en MIT op alle gebiede spesialiseer. Ons departement het nog altyd die meeste aandag aan kunsmatige intelligensie gegee. Die helfte van die mense wat vir ons werk, is betrokke by KI of mens-rekenaar-interaksie – hierdie aandeel is hoër as in ander departemente, en was nog altyd so. Maar toe ek op universiteit was, het ek geen kursusse in KI gehad nie, en ek het nooit in hierdie veld gewerk nie. My departement spesialiseer dus in 'n probleem waarmee ek niks te doen het nie. Die troos is dat die tweede belangrikste probleem vir ons departement parallelle en multi-draad programmering is, dit wil sê my spesialisasie.

Виталий: Jy het in Rekenaarwetenskap begin werk toe die veld van multi-threaded-programmering pas na vore getree het. Die lys van jou publikasies wys dat jou eerste werke oor 'n redelike wye reeks kwessies gehandel het: geheuebestuur in multi-draadstelsels, verspreide lêerstelsels, bedryfstelsels. Hoekom so veelsydigheid? Het jy al probeer om jou plek in die navorsingsgemeenskap te vind?

Michael: As student het ek deelgeneem aan Charlotte projek aan die Universiteit van Wisconsin, waar een van die eerste verspreide bedryfstelsels ontwikkel is. Daar het ek saam met Rafael Finkel gewerk (Raphael Finkel) en Marvin Solomon (Marvin Solomon). My proefskrif was gewy aan die ontwikkeling van 'n taal vir stelselsagteware vir verspreide stelsels - nou het almal daarvan vergeet, en dank God. Ek het die Lynx-programmeertaal geskep, wat bedoel was om dit makliker te maak om bedieners vir 'n losgekoppelde verspreide bedryfstelsel te skep. Aangesien ek op daardie stadium hoofsaaklik by bedryfstelsels betrokke was, het ek aanvaar dat my loopbaan hoofsaaklik daarmee verband hou. Maar Rochester was 'n baie klein universiteit, en as gevolg hiervan het die verskillende groepe daar baie noue interaksie met mekaar gehad. Daar was nie 'n dosyn ander bedryfstelselmense vir my om mee te praat nie, so al my kontakte was met mense wat in heeltemal verskillende gebiede gewerk het. Ek het dit baie geniet, om 'n allrounder te wees is vir my 'n groot voordeel. As ons spesifiek praat oor multi-draad datastrukture en sinchronisasie algoritmes, dan het ek heeltemal per ongeluk daaraan begin werk.

IEEE-skaalbare samehangende koppelvlak, MCS-sluiting.

Виталий: Kan jy my bietjie meer hieroor vertel?

Michael: Dit is 'n snaakse storie wat ek nooit moeg word om vir almal te vertel nie. Dit het op 'n konferensie gebeur ASPLOS in Boston - dit was in die laat 80's of vroeë 90's. John Mellor-Crummey (John Mellor-Crummey), 'n gegradueerde van ons fakulteit. Ek het hom geken, maar ons het nie voorheen gesamentlike navorsing gedoen nie. Mary Vernon (Mary Vernon) van Wisconsin het 'n toespraak gehou oor 'n multiverwerkerstelsel wat hulle in Wisconsin ontwikkel het: Wisconsin Multicube. Hierdie Multicube het 'n sinchronisasiemeganisme op hardewarevlak gehad wat die Q on Sync Bit genoem is, en later is dit herdoop na die Q op Lock Bit omdat dit soos Colby-kaas geklink het, wat 'n woordspeling was. As jy belangstel in multithreading-meganismes, weet jy waarskynlik dat Colby uiteindelik die sinchronisasie-enjin vir die IEEE Scalable Coherent Interface-standaard geword het. Dit was 'n sluitmeganisme wat wysers van een kas na 'n ander op hardewarevlak geskep het sodat elke slothouer geweet het wie se beurt dit was. Toe ek en John hiervan hoor, het ons na mekaar gekyk en gesê: hoekom doen dit op hardeware-vlak? Kan dieselfde ding nie bereik word met vergelyk-en-ruil nie? Ons het een van die notaboeke wat in die klas gelê het geneem en daarop gekrabbel MCS blokkering, terwyl Mary haar verslag voortgesit het. Daarna het ons dit geïmplementeer, geëksperimenteer, die idee was suksesvol, en ons het die artikel gepubliseer. Op daardie tydstip het hierdie onderwerp vir my net 'n prettige afleiding gelyk, waarna ek beplan het om terug te keer na bedryfstelsels. Maar toe het nog 'n probleem in dieselfde lyn ontstaan, en uiteindelik het sinchronisasie, multithreading en datastrukture my spesialiteit geword. Soos jy kan sien, het dit alles per ongeluk gebeur.

Виталий: Ek is al lank vertroud met MCS-blokkering, maar tot nou toe het ek nie geweet dat dit jou werk is nie, en nie verstaan ​​dat dit 'n akroniem vir jou vanne is nie.

Hoe om te oorleef in 'n voortdurend veranderende wêreld?

Alexey: Ek het 'n vraag oor 'n verwante onderwerp. 30 of 40 jaar gelede was daar meer vryheid in verskillende spesialiteite. As jy 'n loopbaan in multithreading of verspreide stelsels wil begin, is jy welkom, as jy by bedryfstelsels wil ingaan, geen probleem nie. Op elke gebied was daar baie oop vrae en min kundiges. Nou spesialisasies het nou na vore gekom: daar is nie net kundiges oor bedryfstelsels in die algemeen nie, daar is spesialiste oor individuele stelsels. Dit is dieselfde met multithreading en verspreide stelsels. Maar die probleem is dat ons lewens nie eindeloos is nie, almal kan net 'n paar dekades aan navorsing wy. Hoe om te oorleef in hierdie nuwe wêreld?

Michael: Ons is nie spesiaal in hierdie opsig nie, dieselfde het een keer in ander gebiede gebeur. Ek was gelukkig dat ek in Rekenaarwetenskap begin werk het toe die veld in sy “tienerjare” was. Sommige fondamente was reeds gelê, maar alles was nog baie onvolwasse. Hierdie geleentheid kom nie gereeld voor nie. Elektriese ingenieurswese bestaan ​​al baie lank, fisika nog langer, wiskunde amper sedert die begin van tyd. Maar dit beteken nie dat niemand meer interessante ontdekkings in wiskunde maak nie. Daar is nog baie oop probleme, maar terselfdertyd moet meer geleer word. Jy is reg om daarop te let dat daar nou baie meer spesialisasies is as wat daar voorheen was, maar dit beteken net dat ons onsself in dieselfde situasie bevind as die meeste ander areas van menslike aktiwiteit.

Alexey: Ek stel belang in die meer praktiese aspek van die kwessie hier. Ek het 'n wiskunde-agtergrond, en tydens my studies het ek gereeld konferensies bygewoon en aan verskeie wetenskaplike onderwerpe gewerk. Ek het ontdek dat niemand in die gehoor my verslae verstaan ​​nie, en op dieselfde manier was die verslae van ander mense net vir hulleself verstaanbaar. Dit is nie die geval in hoëvlak-onderwerpe nie, maar sodra jy in iets begin delf, kan die gehoor jou nie meer byhou nie. Hoe hanteer jy dit?

Michael: Nie altyd suksesvol nie. Ek het onlangs 'n verslag voorberei waarin ek te diep in tegniese besonderhede ingegaan het. Soos die praatjie gevorder het, het dit duidelik geword dat die meeste van die gehoor my nie verstaan ​​nie, so ek moes dadelik by die situasie aanpas. Die skyfies kon nie verander word nie, so dit het nie baie goed uitgekom nie - so, oor die algemeen, probeer ek om nie skyfies te gebruik nie. Oor die algemeen is my raad om jou gehoor in ag te neem. Jy moet weet met wie jy praat, wat hul kennisvlak is en wat hulle moet hoor om jou werk te waardeer.

Виталий: Kan jy vir ons 'n wenk gee waaroor hierdie lesing gegaan het?

Michael: Om eerlik te wees, sal ek verkies om nie oor hierdie onderwerp uit te brei om die betrokke persone anoniem te laat nie. Die punt is dat ons dikwels te diep in die ingewikkeldheid van die probleem waaraan ons werk ingaan, so dit word vir ons moeilik om aan die begin van die praatjie te verduidelik hoekom die probleem interessant en belangrik is en hoe dit verband hou met kwessies wat die gehoor reeds weet. Volgens my waarnemings het studente die moeilikste tyd om hierdie vaardigheid aan te leer. En dit was ook die swak punt van my onlangse verslag. 'n Behoorlik gestruktureerde verslag moet van die begin af kontak met die gehoor vind, aan hulle verduidelik wat presies die probleem is en hoe dit verband hou met onderwerpe wat reeds aan hom bekend is. Hoe tegnies hierdie inleiding is, hang van die gehoor af. As dit heeltemal bont is, kan die verslag multi-stadium wees. Die inleiding moet vir almal toeganklik wees, en teen die einde sal die stuk dalk nie by jou kan byhou nie, maar mense wat relatief vertroud is met jou veld sal dit kan uitvind.

Word studente dommer? Globale neigings, internasionalisering.

Alexey: Jy hou studente al vir 'n paar dekades waar. Word studente van dekade tot dekade of jaar tot jaar dommer of slimmer? In Rusland kla professore voortdurend dat studente elke jaar dommer word, en dit is regtig nie duidelik wat om daaraan te doen nie.

Michael: Jy kan regtig baie negatiwiteit van ons oumense hoor. Onbewustelik is ons geneig om van studente te verwag om al die 30 jaar ondervinding wat ons reeds het, te absorbeer. As ek 'n dieper begrip het as wat ek in 1985 gehad het, hoekom het die studente dit nie? Waarskynlik omdat hulle 20 jaar oud is, wat dink jy? Ek dink die belangrikste veranderinge in die afgelope dekades was in demografiese samestelling: ons het nou aansienlik meer internasionale studente, met die uitsondering van Kanadese. Daar was vroeër baie Kanadese, want ons is baie naby aan die Kanadese grens en studente van daar kan oor naweke huis toe reis. Maar nou is daar baie goeie universiteite in Kanada, en Kanadese verkies om hier te studeer aansienlik minder van hulle kom na die VSA.

Alexey: Dink jy dit is 'n plaaslike neiging of 'n globale een?

Michael: Ek onthou nie presies wie nie, maar iemand het gesê die wêreld is plat. Ons veld het baie meer internasionaal geword. ACM Konferensies Voorheen is hulle uitsluitlik in die Verenigde State gehou, toe het hulle besluit om hulle een keer elke 4 jaar in ander lande te hou, en nou word hulle oor die hele wêreld gehou. Hierdie veranderinge het selfs meer geraak IEEE, aangesien dit nog altyd 'n meer internasionale organisasie as ACM was. En daar is programleerstoele van China, Indië, Rusland, Duitsland en baie ander lande, want daar is nou oral baie aan die gang.

Alexey: Maar, waarskynlik, is daar 'n paar negatiewe aspekte van sulke internasionalisering?

Michael: Ek sou sê dat al die negatiewe aspekte nie verband hou met tegnologie nie, maar met politiek. Eens op 'n tyd was die grootste probleem die feit dat die VSA die slimste en mees talentvolle mense van lande regoor die wêreld steel. En nou is die grootste probleem die politieke speletjies tussen verskillende lande rondom visums en immigrasie.

Alexey: Dit wil sê hindernisse en sulke dinge. Dit is duidelik.

Vladimir: Persoonlik stel ek belang in watter benadering jy volg wanneer jy 'n nuwe vak aan studente onderrig. Daar is verskillende opsies: jy kan eerstens probeer om hulle te inspireer om iets nuuts te probeer, of jy kan meer aandag gee aan die besonderhede van hoe 'n sekere tegnologie werk. Wat verkies jy?

Effektiewe werk met studente

Alexey: En hoe om die verdomde balans tussen die eerste en tweede te vind?

Michael: Die probleem is dat klasse nie altyd verloop soos ek graag wil hê nie. Ek gee gewoonlik vooraf aan studente leesstof sodat hulle daarin delf, dit na die beste van hul vermoë verstaan ​​en vrae formuleer oor daardie dele wat hulle nie kon verstaan ​​nie. Dan kan jy in die klas op die moeilikste oomblikke fokus en dit saam verken. Dit is hoe ek die graagste klas gee. Maar gegewe die las wat nou op studente lê, kan ek nie altyd seker maak dat hulle vooraf voorberei nie. Gevolglik moet jy baie meer tyd aan die algemene oorvertelling van die materiaal bestee as wat jy graag sou wou hê. Ten spyte hiervan probeer ek om ons klasse interaktief te hou. Andersins is dit makliker om een ​​keer 'n video op te neem wat studente dan by die huis kan kyk. Die punt van lewendige klasse is menslike interaksie. In die klas verkies ek om kryt en 'n swartbord eerder as skyfies te gebruik, behalwe in sekere gevalle wanneer 'n diagram te kompleks is om op die bord uit te beeld. Danksy dit hoef ek nie by 'n rigiede lesplan te hou nie. Aangesien daar geen streng volgorde is waarin ek die materiaal gee nie, stel dit my in staat om dit aan te pas by die gehoor na gelang van die vrae wat ek ontvang. Oor die algemeen probeer ek klasse so interaktief moontlik maak, sodat die materiaal wat ek aanbied afhang van die vrae wat aan my gestel word.

Vladimir: Dis wonderlik. In my ervaring is dit nogal moeilik om luisteraars te kry om vrae te vra. Al vra jy vooraf om enige vrae te vra, maak nie saak hoe dom of slim nie, hulle swyg steeds. Hoe hanteer jy dit?

Michael: Jy sal lag, maar as jy lank genoeg in stilte staan, sal almal vroeër of later ongemaklik raak en iemand sal 'n vraag vra. Of jy kan 'n eenvoudige tegniese vraag met 'n ja of nee antwoord vra om te bepaal of mense verstaan ​​wat sopas gesê is. Is daar byvoorbeeld 'n datawedloop in die voorbeeld hierbo? Wie dink so? Wie dink nie? Wie verstaan ​​glad niks, want in totaal het net die helfte van die hande opgegaan?

Виталий: En as jy verkeerd geantwoord het, word jy uit die klas geskop :)

Michael: As jy niks geantwoord het nie, moet jy 'n vraag vra. Ek moet verstaan ​​wat presies die student moet weet om die vraag te beantwoord wat ek sopas gevra het. Ek het hulle nodig om my te help om hulle te help. Ek is gereed om by hulle aan te pas sodat hulle die probleem verstaan. Maar as ek nie weet wat in hulle kop aangaan nie, kan ek dit nie doen nie. En as jy studente nie lank genoeg vrede gee nie, vra hulle soms op die ou end die regte vrae, dit wil sê dié wat my toelaat om te sien wat presies in die studente se koppe aangaan. 

Alexey: Lei hierdie vrae soms tot idees waaraan jy self nie voorheen gedink het nie? Is hulle onverwags? Laat hulle jou toe om in 'n nuwe lig na 'n probleem te kyk?

Michael: Daar is vrae wat 'n nuwe manier van materiaal aanbied oopmaak. Daar is dikwels vrae wat lei tot interessante probleme waaroor ek nie beplan het om oor te praat nie. Studente sê dikwels vir my dat ek 'n neiging het om van die onderwerp af te gaan wanneer dit gebeur. En volgens hulle is dit baie dikwels die interessantste deel van die les. Baie selde, net 'n paar keer, het studente vrae gevra wat 'n nuwe rigting in navorsing aangespoor het en tot 'n artikel gegroei het. Dit gebeur baie meer dikwels in gesprekke met studente eerder as tydens klasse, maar soms het dit tydens klasse gebeur. 

Alexey: Die studente het dus vir jou vrae gevra op grond waarvan dit toe moontlik was om 'n artikel te publiseer?

Michael: Ja. 

Виталий: Hoe gereeld voer jy hierdie gesprekke met studente? Wanneer wil hulle meer leer as wat tydens die les gedek is?

Michael: Met my nagraadse studente - heeltyd. Ek het so 5 of 6 van hulle, en ons bespreek heeltyd iets met hulle. En gesprekke van hierdie soort met studente wat bloot my klasse bywoon, is nie baie algemeen nie. Alhoewel ek wens dit gebeur meer gereeld. Ek vermoed hulle is bloot bang om in kantoorure na die fakulteit te kom. Elke semester slaag sommige studente daarin om hierdie sielkundige struikelblok te oorkom, en dit is altyd baie interessant om na die klas met hulle te praat. Dit is waar, as al die studente so dapper was, sou ek eenvoudig nie genoeg tyd gehad het nie. So miskien werk alles soos dit moet. 

Виталий: Hoe kry jy dit reg om tyd te kry om met studente te kommunikeer? Sover ek weet, het onderwysers in die VSA baie werk – om aansoek te doen vir toelaes en dies meer. 

Michael: Om eerlik te wees, om met studente te werk is die aspek van my werk wat ek die meeste geniet. So ek het genoeg motivering hiervoor. Die meeste van die tyd wat ek in my kantoor deurbring, word bestee aan vergaderings van alle soorte. Dis nou somer, so my skedule is minder besig, maar gedurende die skooljaar het ek elke dag van 9 tot 17 alles gepak. Navorsingswerk, resensies, toekennings – vir dit alles is daar net aande en naweke. 

Hoe om tred te hou met die voorbereiding van nuwe kursusse en boeke.

Alexey: Gaan jy tans voort om enige kursusse te onderrig wat jy al lankal aanbied? Iets soos 'n inleiding tot Rekenaarwetenskap.

Michael: Die eerste ding wat hier by my opkom, is 'n kursus in programmeertale. 

Alexey: Hoe anders is vandag se weergawe van hierdie kursus van wat dit 10, 20, 30 jaar gelede was? Wat dalk hier interessanter is, is nie die besonderhede van 'n bepaalde kursus nie, maar die algemene tendense.

Michael: My kursus oor programmeertale was ietwat ongewoon toe ek dit geskep het. Ek het dit in die laat 1980's begin lees en my kollega, Doug Baldwin (Doug Baldwin). Die onderwerp van die kursus het net tangensieel verband gehou met my spesialiteit, maar toe hy weg is, was ek die beste kandidaat om die kursus te onderrig. Ek het nie gehou van enige van die handboeke wat destyds bestaan ​​het nie, so ek het uiteindelik self die handboek vir hierdie kursus geskryf. (Redakteur se nota: ons praat oor die boek "Programmering van taalpragmatiek") Dit word nou in meer as 200 universiteite regoor die wêreld gebruik. My benadering is ongewoon deurdat dit doelbewus die probleme van taalontwerp en -implementering vermeng, en groot aandag skenk aan die interaksie tussen hierdie aspekte op alle moontlike terreine. Die basiese benadering het onveranderd gebly, so ook baie basiese konsepte: abstraksies, naamruimtes, modulariteit, tipes. Maar die stel tale waarmee hierdie konsepte gedemonstreer word, het heeltemal verander. Toe die kursus vir die eerste keer geskep is, was daar baie voorbeelde in Pascal, maar vandag het baie van my studente nie eens van hierdie taal gehoor nie. Maar hulle ken Swift, Go, Rust, so ek moet praat oor die tale wat vandag gebruik word. Studente is ook nou goed onderlê in skriftale, maar toe ek hierdie kursus begin aanbied het, het dit alles oor saamgestelde tale gegaan. Nou het ons baie materiaal nodig oor Python, Ruby en selfs Perl, want dit is wat kode in deesdae geskryf word, en daar is baie interessante dinge wat in hierdie tale gebeur, ook op die gebied van taalontwerp. 

Виталий: Dan sal my volgende vraag met die vorige een verband hou. Hoe om tred te hou in hierdie gebied? Ek vermoed dat die opdatering van 'n kursus soos hierdie baie werk verg – jy moet nuwe tale verstaan, die hoofgedagtes verstaan. Hoe doen jy dit?

Michael: Ek kan nie daarop spog dat ek altyd 100% slaag nie. Maar die meeste van die tyd doen ek net wat almal doen – lees die internet. As ek Rust wil verstaan, Google dit, gaan na die Mozilla-bladsy en lees die handleiding wat daar geplaas is. Dit is deel van die dinge wat in kommersiële ontwikkeling gebeur. As ons oor wetenskap praat, moet u die verslae by die hoofkonferensies volg. 

Skakel tussen besigheid en akademie

Виталий: Kom ons praat oor die verband tussen besigheid en wetenskaplike navorsing. In jou lys werke het ek verskeie artikels oor kassamehang gevind. Ek verstaan ​​dat die kaskonsekwentheidsalgoritmes onstabiel was toe hulle gepubliseer is? Of nie wydverspreid genoeg nie. Hoe algemeen was jou idees in die praktyk?

Michael: Ek is nie presies seker van watter publikasies jy praat nie. Ek het nogal baie werk saam met my studente Bill Bolosky gedoen (William Bolosky) en Leonidas Kontotanassis (Leonidas Kontothanassis) in die vroeë 1990's oor geheuebestuur van Neumann-masjiene. Op daardie tydstip het besigheid nog nie 'n begrip gehad van hoe om 'n multiverwerkerstelsel behoorlik te maak nie: is dit die moeite werd om ondersteuning te skep vir toegang tot afgeleë geheue op hardewarevlak, is dit die moeite werd om die geheue te versprei, is dit moontlik om die kas te laai vanaf afstandgeheue, of is dit nodig om bladsye in die operasiekamerstelsel te skuif? Bill en Leonidas het albei in hierdie area gewerk en benaderings verken sonder om op afstand kas te laai. Dit was nie direk verwant aan kaskoherensie nie, maar dit was steeds werk op NUMA-geheuebestuur, en gevolglik het moderne benaderings tot bladsyplasing in moderne bedryfstelsels hieruit gegroei. Oor die algemeen het Bill en Leonidas belangrike werk gedoen, hoewel nie die invloedrykste op hierdie gebied nie – daar was destyds baie ander mense wat aan dieselfde ding gewerk het. Later het ek gewerk aan 'n onderwerp wat verband hou met kaskoherensie in die konteks van hardeware transaksionele geheue. Die groep met wie ek aan hierdie probleem gewerk het, het uiteindelik verskeie patente ontvang. Daar is 'n paar interessante idees agter hulle, maar ek dink nie hulle sal uiteindelik in die praktyk geïmplementeer word nie. Op die een of ander manier is dit vir my moeilik om hul winsgewendheid te oordeel. 

Alexey: In hierdie verband, 'n meer persoonlike vraag: hoe belangrik is dit vir jou dat jou idees in die praktyk toegepas word? Of dink jy nie daaraan nie?

Michael: Ek vra graag hierdie vraag in onderhoude met ander mense, aansoekers of kandidate wat by die fakulteit wil aansluit. Ek dink nie daar is 'n korrekte antwoord op hierdie vraag nie. Mense wat cool dinge doen, kan baie verskillende motiverings hê. Ek is aangetrokke tot probleme omdat ek dit persoonlik interessant vind, nie as gevolg van hul praktiese voordele nie. Maar aan die ander kant, wanneer een of ander interessante ding nog toepassing vind, hou ek baie daarvan. Dit is dus nie maklik hier nie. Maar aan die begin van my werk word ek steeds nie gedryf deur die idee van 'n eindgebruik in die wêreld nie, maar deur die harmonie van die idee en die begeerte om dit te verken en te sien wat daarvan kom. As dit uiteindelik praktiese resultate gee, wonderlik. 

Alexey: As gevolg van jou opvoeding en ervaring is jy beter as die meeste in staat om die waarde van ander mense se idees te oordeel. Jy kan hulle vergelyk en bepaal watter werk beter met watter. Ek is seker jy het 'n mening oor dinge wat tans in die praktyk deur groot vervaardigers soos Intel gebruik word. Vanuit jou oogpunt, hoe korrek is die koers wat hierdie maatskappye volg?

Michael: Praktyk draai altyd om wat kommersieel suksesvol kan wees, dit wil sê om wins te skep, en dit is iets waaroor jy beter iemand anders vra. My werk lei meestal tot publikasies, en op die gebied van bedryfstelsels word dit geëvalueer op grond van prestasie-aanwysers: spoed, energieverbruik, kodegrootte. Maar dit het altyd vir my gelyk of hierdie empiriese resultate slegs by artikels gevoeg word sodat dit gepubliseer kan word, en mense se werklike motiewe vir werk is esteties. Navorsers evalueer oplossings vanuit 'n artistieke perspektief, hulle gee om oor hoe elegant die idees is, en hulle probeer iets beter skep as bestaande benaderings. Navorsers word gedryf deur persoonlike, subjektiewe, estetiese motiewe. Maar jy kan nie hieroor in die artikel self skryf nie, hierdie dinge is nie argumente vir die programkomitee nie. Gelukkig is elegante oplossings dikwels ook vinnig en goedkoop. Ek en 'n dosyn van my kollegas het hierdie onderwerp ongeveer 15 jaar gelede bespreek en uiteindelik 'n artikel daaroor geskryf. Ek dink jy kan dit nou nog vind, word dit genoem "Hoe om stelselnavorsing te evalueer" of so iets, dit het meer as 'n dosyn skrywers. Dit is die enigste artikel waarin ek saam die skrywer is Sasha Fedorova, so as jy 'n soektog na haar naam in my lys van publikasies doen, sal jy kry wat jy nodig het. Dit praat oor die evaluering van stelselnavorsing en hoe belangrik elegansie is. 

Alexey: Daar is dus 'n verskil tussen die standaard van wat in die wetenskap en in besigheid as goed beskou word. Die wetenskap evalueer prestasie, kragverbruik, TDP, gemak van implementering, en nog baie meer. Het jy die geleentheid om hierdie tipe navorsing by die universiteit te doen? Het jy 'n laboratorium met verskillende masjiene en verskillende argitekture waarin jy eksperimente kan uitvoer?

Michael: Ja, ons afdeling het baie verskillende interessante masjiene. Meestal is hulle klein, ons het 'n klein groepie en baie multiverwerkerstelsels met verskillende versnellers. Daarbenewens het die kampus 'n groot rekenaarsentrum wat wetenskaplikes van 'n paar dosyn verskillende dissiplines bedien. Dit het ongeveer duisend nodusse en twintigduisend kerne, alles op Linux. As die behoefte ontstaan, kan jy altyd 'n paar AWS koop. Ons het dus geen noemenswaardige beperkings met hardeware nie. 

Alexey: Hoe was dit dertig jaar gelede? Was daar toe probleme?

Michael: Dit was toe 'n bietjie anders. In die middel tot laat 1980's is die wetenskap as 'n tekort aan rekenaarhulpbronne beskou. Om hierdie situasie reg te stel, het die Nasionale Wetenskapstigting (Nasionale Wetenskapstigting) het 'n program van gekoördineerde eksperimentele navorsing geskep (Coordinated Experimental Research, CER). Die program se missie was om rekenaarinfrastruktuur vir Rekenaarwetenskap-departemente te verskaf, en dit het aansienlike veranderinge aangebring. Met die geld wat sy verskaf het, het ons by die Universiteit van Rochester 'n 1984-knoop BBN Butterfly in 128 gekoop, dit was 'n jaar voor ek daar aangekom het. Dit was destyds die wêreld se grootste multiverwerkerstelsel met gedeelde geheue. Dit het 128 verwerkers gehad, elk op 'n aparte moederbord, en het vier rakke beset. Elke verwerker het 'n megagreep geheue gehad, 128 megagrepe RAM was op daardie stadium 'n ondenkbare hoeveelheid. Op hierdie masjien het ons vir die eerste keer MCS-sluiting geïmplementeer. 

Alexey: So, as ek jou reg verstaan, dan is die probleem met die hardeware op die oomblik opgelos? 

Michael: Oor die algemeen, ja. Daar is 'n paar waarskuwings: eerstens, as jy rekenaarargitektuur op die skyfievlak doen, is dit moeilik om in 'n akademiese omgewing te doen, want daar is baie beter gereedskap om dit in besigheid te doen. As jy iets kleiner as 10 nanometer nodig het, sal jy dit by iemand anders moet bestel. Op hierdie gebied is dit baie makliker om 'n navorser by Intel te wees. As jy aan optiese kommunikasie op skyfies of op vastetoestandgeheue werk, sal jy tegnologieë in besigheid vind wat nog nie in die wetenskap is nie, so jy moet alliansies skep. Byvoorbeeld, Stephen Swanson (Steven Swanson) geskep so 'n vennootskap vir nuwe geheuetegnologieë. Hierdie vorm werk nie altyd nie, maar in sommige gevalle kan dit redelik suksesvol wees. Daarbenewens is die ontwikkeling van die kragtigste rekenaarstelsels in die wetenskap moeiliker. Die grootste superrekenaarprojekte tans in die VSA, Japan en China is almal gefokus op besigheid. 

Praktiese implementering van idees. MCS, MS, CLH, JSR 166, saam met Doug Lee en meer.

Виталий: Jy het reeds gepraat oor hoe jy aan sinchronisasie-algoritmes begin werk het. Jy het twee baie bekende artikels oor MCS blokkering и Michael-Scott tou (MS), wat in 'n sekere sin in Java geïmplementeer is. (Redakteur se nota: alle publikasies kan besigtig word по ссылке). Daar is hierdie blokkering met 'n paar veranderinge geïmplementeer en dit het geblyk CLH slot, en die tou is geïmplementeer soos bedoel. Maar baie jare het verloop tussen die publikasie van jou artikels en die praktiese toepassing daarvan. 

Alexey: Dit lyk omtrent 10 jaar in die geval van die tou.

Michael: Voordat hierdie kenmerke in die Java-standaardbiblioteek verskyn het?

Виталий: Ja. Wat het jy gedoen om dit te laat gebeur? Of het hulle niks gedoen nie?

Michael: Ek kan jou vertel hoe MS Queue in Java 5 beland het. 'n Paar jaar voor dit uitgekom het, het ek saam met Mark Moyers se groep by Sun Microsystems in hul laboratorium naby Boston gewerk. Hy het 'n werkswinkel gereël vir mense wat hy ken wat aan interessante probleme in multithreading werk omdat hy onderwerpe wou vind wat hy aan hul maatskappy kon verkoop. Dis waar ek Doug Lea die eerste keer ontmoet het. Ek en Doug en sowat 25 ander mense van Sun het saam Doug se aanbieding oor bespreek JSR 166, wat later java.util.concurrent geword het. Langs die pad het Doug gesê dat hy graag die MS-tou wil gebruik, maar hiervoor het hy 'n teller nodig vir die aantal elemente in die tou vir die koppelvlak. Dit wil sê, dit moes gedoen gewees het deur 'n aparte metode, atoom, akkuraat en vinnig. Ek het voorgestel om bloot reeksnommers by die nodusse te voeg, die nommer van die eerste nodus en die laaste een te neem en een van die ander af te trek. Doug het sy kop gekrap, gesê "hoekom nie," en uiteindelik net dit gedoen. Ons het die implementering van hierdie benadering in die biblioteek bespreek, maar Doug het die meeste van die werk self gedoen. As gevolg hiervan het hy daarin geslaag om uitstekende multithreading-ondersteuning in Java te vestig. 

Alexey: Dus, as ek reg verstaan, moes die .size()-metode deel van die standaard tou-koppelvlak gewees het, en dit moes 'n algoritmiese kompleksiteit van O(1) gehad het?

Michael: Ja, en bykomend hiertoe word 'n aparte teller vereis.

Alexey: Want as jy die .size()-metode in Java roep, word verwag dat die resultaat onmiddellik beskikbaar sal wees en nie gebaseer is op die werklike grootte van die versameling nie. Ek sien, dankie.

Michael: 'n Paar jaar later het ek saam met my student Bill Scherer aan dubbele datastrukture gewerk - om die waarheid te sê, dit is waaroor ek gaan praat verslag oor Hydra. Doug het na ons toe gekom en gesê dat hy hulle in die Java Executor Framework kan gebruik. Hulle het saam met Bill twee implementerings geskep, die sogenaamde billike en onregverdige toue. Ek het hulle oor hierdie projek geadviseer, hoewel ek nie deelgeneem het aan die skryf van die werklike kode nie. Gevolglik het die spoed van eksekuteurs aansienlik toegeneem. 

Vladimir: Het jy verkeerde implementerings van jou algoritmes teëgekom of versoeke om nuwe kenmerke by te voeg? Oor die algemeen behoort praktyk met teorie saam te val, maar dit verskil dikwels. Gestel jy het 'n algoritme geskryf, en op papier werk dit, maar die mense wat by die implementering betrokke is, het jou begin vra vir meer kenmerke of 'n soort aanpassing van die algoritme. Het jy al ooit sulke situasies gehad?

Michael: Die enigste voorbeeld waarin iemand na my toe gekom het en gevra het "hoe om dit te implementeer" was Doug se vraag, waaroor ek reeds gepraat het. Maar daar was 'n paar gevalle waar interessante veranderinge aangebring is om aan praktiese behoeftes te voldoen. Byvoorbeeld, die K42-span by IBM het die MCS-slot omgeskakel en dit 'n standaard-koppelvlak gemaak, sodat dit nie nodig was om die tou-nodus heen en weer na die verkry- en vrystellingroetines deur te gee nie. Danksy hierdie standaard-koppelvlak het 'n idee wat in teorie pragtig was, in die praktyk begin werk. Dit is verbasend dat hulle nooit 'n artikel daaroor gepubliseer het nie, en hoewel hulle 'n patent ontvang het, het hulle dit later laat vaar. Die idee was wonderlik, en ek probeer om daaroor te praat waar moontlik. 

Daar was ander gevalle waar mense verbeterings aangebring het aan die algoritmes wat ek gepubliseer het. Byvoorbeeld, die MS-tou het 'n tweestap-installasiemeganisme, wat beteken het dat daar twee CAS'e op die kritieke pad van die tou was. Op ouer motors was CAS redelik duur. Intel en ander vervaardigers het hulle onlangs redelik goed geoptimaliseer, maar eens op 'n tyd was dit 30-siklus-instruksies, so dit was ongewens om meer as een op die kritieke pad te hê. As gevolg hiervan is 'n ander tou ontwikkel wat soortgelyk was aan die MS-tou, maar wat slegs een atoombewerking op die kritieke pad gehad het. Dit is bereik as gevolg van die feit dat die operasie gedurende 'n sekere tydperk O(n) tyd kon neem, eerder as O(1). Dit was onwaarskynlik, maar moontlik. Dit het gebeur as gevolg van die feit dat die algoritme op sekere oomblikke die tou van die begin tot die huidige posisie in hierdie tou deurkruis het. Oor die algemeen het die algoritme baie suksesvol geblyk te wees. Sover ek weet word dit nie baie wyd gebruik nie, deels omdat atoombedrywighede aansienlik minder hulpbronne as voorheen vereis. Maar die idee was wonderlik. Ek hou ook baie van die werk van Dave Dice van Oracle. Alles wat hy doen is baie prakties en hy gebruik yster baie slim. Hy het 'n hand gehad in baie van die NUMA-bewuste sinchronisasie-algoritmes en multi-draad datastrukture. 

Vladimir: Wanneer jy algoritmes skryf of studente onderrig, is die resultaat van jou werk nie onmiddellik sigbaar nie. Dit neem 'n geruime tyd vir die gemeenskap om vertroud te raak met byvoorbeeld 'n nuwe artikel. Die nuwe algoritme vind nie dadelik toepassing nie. 

Michael: Dit is ver van onmiddellik duidelik of die artikel betekenisvol sal wees of nie. Ek dink dit sal interessant wees om 'n studie te doen van referate wat toekennings by konferensies gewen het. Dit wil sê, kyk na die artikels wat mense op die programkomitees op 'n tyd as die beste beskou het. Jy moet probeer om aan die hand van die aantal skakels en die impak op besigheid te bereken hoe invloedryk hierdie artikels werklik in 10, 20, 25 jaar geblyk het te wees. Ek twyfel of daar 'n sterk korrelasie tussen die twee sal wees. Dit sal nie nul wees nie, maar heel waarskynlik sal dit baie swakker wees as wat ons wil hê. Baie idees bly vir 'n lang tyd onopgeëis voordat dit wydverspreid word. Kom ons neem byvoorbeeld transaksiegeheue. Meer as 10 jaar het verloop vandat die oorspronklike artikel gepubliseer is tot die tyd dat mense eintlik masjiene daarmee begin bou het. En voor die verskyning van hierdie geheue in kommersiële produkte - en al 20. Vir 'n baie lang tyd het niemand aandag gegee aan die artikel nie, en dan het die aantal skakels daarna skerp toegeneem. Dit sal moeilik wees om dit vooraf te voorspel. Aan die ander kant vind idees soms onmiddellik implementering. 'n Paar jaar gelede het ek 'n referaat saam met Joe Izraelevitz vir DISC geskryf wat 'n nuwe formele definisie van geldigheid voorgestel het vir aanhoudende datastrukture wat gebruik kan word nadat die rekenaar wat hulle laat loop, ineenstort. Ek het van die begin af van die artikel gehou, maar dit blyk baie gewilder te wees as wat ek verwag het. Dit is deur verskeie verskillende groepe gebruik en het uiteindelik die standaarddefinisie van volhardingstrukture geword. Wat natuurlik lekker is.

Vladimir: Is daar enige tegnieke wat jy vir assessering gebruik? Probeer jy selfs om jou artikels en jou studente te evalueer? In terme van of die persoon wat jy geleer het in die regte rigting gaan.

Michael: Soos almal gee ek meer aandag aan wat ek op die oomblik doen. Weereens, soos almal, kyk ek af en toe Google Scholar om te sien of my vorige vraestelle aangehaal word, maar dit is meer uit nuuskierigheid. Meestal is ek opgeneem in wat my studente nou doen. Wanneer dit kom by die evaluering van huidige werk, is deel daarvan estetiese oorwegings, wat is elegant en wat nie. En op die alledaagse vlak speel oop vrae 'n groot rol. Byvoorbeeld, 'n student kom na my toe met 'n grafiek van sommige resultate, en ons probeer verstaan ​​waar die vreemde gedrag van die grafiek vandaan kom. Oor die algemeen probeer ons in ons werk voortdurend dinge verstaan ​​wat ons nog nie verstaan ​​nie. 

Transaksionele geheue

Виталий: Miskien kan ons 'n bietjie praat oor transaksionele geheue?

Michael: Ek dink dit is die moeite werd om ten minste 'n bietjie te sê, want ek het baie moeite gedoen. Dit is 'n onderwerp waaroor ek meer publikasies het as enige ander. Maar terselfdertyd was ek, vreemd genoeg, altyd baie skepties oor transaksionele geheue. Na my mening, artikel deur Herlihy en Moss (M. Herlihy, J. E. B. Moss) is voor sy tyd gepubliseer. In die vroeë 1990's het hulle voorgestel dat transaksionele geheue talentvolle programmeerders kan help om aan multi-draad datastrukture te werk, sodat hierdie strukture dan as biblioteke deur gewone programmeerders gebruik kan word. Dit wil sê, dit sal 'n hulp wees vir Doug Lee om sy JSR 166 te doen. Maar transaksionele geheue was nie bedoel om multi-threaded programmering maklik te maak nie. Maar dit is presies hoe dit in die vroeë 2000's begin word het, toe dit wydverspreid geword het. Dit is geadverteer as 'n manier om die probleem van parallelle programmering op te los. Hierdie benadering het nog altyd vir my hopeloos gelyk. Transaksionele geheue kan dit net makliker maak om parallelle datastrukture te skryf. Dit lyk my, is wat sy bereik het. 

Oor die moeilikheid om multi-threaded kode te skryf

Alexey: Baie interessant. Daar blyk 'n sekere hindernis te wees tussen gereelde programmeerders en diegene wat multi-threaded kode kan skryf. Verlede jaar het ek verskeie kere met mense gepraat wat besig was om een ​​of ander algoritmiese raamwerk te implementeer. Byvoorbeeld, met Martin Thomson, sowel as met programmeerders wat aan multi-threaded biblioteke werk. (Redakteur se nota: Martin Thompson is 'n baie bekende ontwikkelaar, het hy geskryf disruptor и Aeron. En hy het ook die verslag by ons Joker 2015-konferensie, video-opname beskikbaar op YouTube. Hy is dieselfde oopgemaak hierdie konferensie keynote opname ook beskikbaar). Die grootste uitdaging, sê hulle, is om die algoritmes vinnig en maklik te gebruik. Dit wil sê, hulle probeer om hierdie hindernis te oorkom en soveel mense as moontlik na hierdie gebied te lok. Wat dink jy daarvan?

Michael: Dit is die hoofprobleem van multithreading: hoe om hoë werkverrigting te bereik sonder om die kompleksiteit van die stelsel te verhoog. 

Alexey: Want wanneer hulle kompleksiteit probeer vermy, word die algoritme minder universeel.

Michael: Die sleutel hier is behoorlik ontwerpte abstraksies. Dit lyk vir my dat dit oor die algemeen die belangrikste ding is vir rekenaarstelsels as 'n veld. Butler Lampson hou daarvan om hierdie term te gebruik, en hy noem ons "handelaars van abstraksies." Eenvoudige tegnologieë bestaan ​​nie vandag nie. Die verwerkers wat ons gebruik het 10 miljard transistors—eenvoud is nie ter sprake nie. Terselfdertyd is die ISA baie eenvoudiger as die verwerker, aangesien ons baie lank gewerk het om dit van hoë werkverrigting en 'n relatief eenvoudige koppelvlak te voorsien. Maar alles is ook nie glad met haar nie. Dieselfde probleem is met versnellers wat nou op die mark verskyn. Vrae ontstaan ​​- hoe om die regte koppelvlak vir die GPU te maak, 'n enkripsiemeganisme, kompressie, 'n transkoderingsmeganisme, 'n lineêre algebrameganisme, of selfs 'n meer buigsame FPGA. Hoe om 'n koppelvlak te skep wat die instrument maklik maak om te gebruik en kompleksiteit verberg? Dit sal nie daarvan ontslae raak nie, maar dit eerder vir 'n eenvoudige programmeerder wegsteek. 

Alexey: Soos ek dit verstaan, het ons steeds 'n hindernis in die verstaan ​​van abstraksies. Kom ons neem die geheue model in ons stadium van ontwikkeling van wetenskap en tegnologie, dit is een van die belangrikste abstraksies. Danksy dit word alle programmeerders in twee groepe verdeel: die grootste deel is diegene wat dit nie verstaan ​​nie, en die kleiner deel is diegene wat verstaan, of dink dat hulle verstaan. 

Michael: Dit is 'n goeie vraag - verstaan ​​enigeen van ons regtig die geheuemodel?

Виталий: Veral in C++.

Michael: Praat een of ander tyd met Hans Boehm. Hy is een van die slimste mense wat ek ken, 'n voorste kenner van geheuemodelle. Hy sal dadelik vir jou sê dat daar baie is wat hy nie verstaan ​​nie. Maar as ons terugkeer na die kwessie van abstraksies, dan is, na my mening, die belangrikste idee op die gebied van geheuemodelle oor die afgelope 30 jaar uitgedruk. in Sarita Adve se proefskrif. (Redakteur se nota: 'n volledige lys van publikasies is beskikbaar по ссылке).

Alexey: My vraag is: kom hierdie hindernis uit die aard van die konsep? 

Michael: Geen. Sarita het tot die gevolgtrekking gekom dat jy met die regte benadering al die kompleksiteit suksesvol kan verberg, hoë werkverrigting kan kry en die programmeerder 'n eenvoudige API kan gee. En as jy hierdie API volg, kan jy konsekwente konsekwentheid bereik. Ek dink dit is die regte model. Skryf kode sonder dataresies en kry opeenvolgende konsekwentheid. Natuurlik, om die waarskynlikheid van wedrenne te verminder, is spesiale gereedskap nodig, maar dit is 'n ander saak. 

Vladimir: Was daar tye in jou loopbaan wanneer 'n probleem wat opgelos gelyk het, skielik in 'n katastrofe verander het, of dit geblyk het dat hierdie probleem onoplosbaar was? Byvoorbeeld, in teorie kan jy enige getal faktoriseer of bepaal of enige getal priem is. Maar in die praktyk kan dit moeilik wees om te doen met die huidige hardeware is dit moeilik om getalle te faktoriseer. Het iets soortgelyks met jou gebeur?

Michael: Ek onthou nie dadelik so iets nie. Daar was al tye wat dit vir my gelyk het of daar niks meer is om te doen in 'n sekere area nie, maar toe gebeur daar iets nuuts en interessants. Ek het byvoorbeeld gedink dat die gebied van onbeperkte toustaan ​​reeds volwassenheid bereik het. Na verskeie verbeterings aan die MNS-ry, het niks meer gebeur nie. En toe het Morrison (Adam Morrison) en Afek (Yehuda Afek) uitgevind LCRQ tou. Dit het duidelik geword dat 'n onbeperkte multi-draad tou moontlik was, waar daar meestal slegs 'n haal-en-inkrement instruksie op die kritieke pad was. En dit het dit moontlik gemaak om 'n orde van grootte beter prestasie te behaal. Dit is nie dat ons nie weet dat haal-en-inkrementeer 'n baie nuttige ding is nie. Eric Freudenthal het hieroor geskryf in sy werk op die Ultracomputer saam met Allan Gottlieb in die laat 1980's, maar dit was oor beperkte toue. Morrison en Afek kon haal-en-inkrementeer op 'n onbeperkte tou gebruik.

Nuwe argitekture. Is die oorwinning van transaksionele geheue naby?

Vladimir: Soek jy nuwe argitektoniese oplossings wat nuttig kan wees vir algoritmes? 

Michael: Natuurlik is daar baie dinge wat ek graag geïmplementeer wil sien. 

Vladimir: Watter soort, byvoorbeeld?

Michael: Eerstens, 'n paar eenvoudige uitbreidings aan ons hardeware-vlak transaksionele geheue in Intel en IBM verwerkers. Ek wil veral hê dat die nie-transaksielading en -winkel wat pas plaasgevind het, onmiddellik binne transaksies beskikbaar moet wees. Hulle lei onmiddellik tot lusse in die gebeur-voor-volgorde, so dit kan moeilik wees. Maar as jy lae van abstraksie handhaaf, is daar baie baie interessante dinge wat jy buite die transaksie kan doen terwyl dit gebeur. Ek weet nie hoe moeilik dit sou wees om dit te implementeer nie, maar dit sal baie nuttig wees. 

Nog 'n nuttige ding is om kas vanaf afgeleë geheue te laai. Ek dink vroeër of later sal dit gedoen word. Hierdie tegnologie sal die skepping van stelsels met gedisaggregeerde geheue moontlik maak. Dit sou moontlik wees om byvoorbeeld 100 teragrepe van nie-vlugtige geheue in 'n rek te hou, en die bedryfstelsel self sal dinamies besluit watter afdelings van daardie geheue moet ooreenstem met die fisiese adresruimte van die verwerkers. Dit sal uiters nuttig wees vir wolkrekenaars, aangesien dit groot hoeveelhede geheue kan verskaf aan die take wat dit benodig. Ek dink iemand sal dit doen.

Виталий: Om klaar te praat oor transaksionele geheue, het ek nog een vraag oor hierdie onderwerp. Sal transaksionele geheue uiteindelik standaard multi-threaded datastrukture vervang?

Michael: Geen. Transaksies is 'n spekulatiewe meganisme. Op die programmeringsvlak is dit atoomslotte, maar binne is dit spekulasies. Sulke voorspelling werk as die meeste van die raaiskote korrek is. Daarom werk transaksionele geheue goed wanneer drade skaars met mekaar in wisselwerking is, en jy moet net seker maak dat daar geen interaksies is nie. Maar as 'n boodskap tussen drade begin, is transaksies van min nut. Laat ek verduidelik, ons praat oor die geval wanneer transaksies om die hele atoomoperasie toegedraai word. Hulle kan steeds suksesvol gebruik word as komponente vir multi-draad datastrukture. Byvoorbeeld, as jy 'n drie-woord CAS nodig het, en jy moet drie klein dingetjies in die middel van 'n werklike multithreaded algoritme wat met twintig drade op dieselfde tyd werk, multithread. Oor die algemeen kan transaksies nuttig wees, maar dit sal nie die behoefte uitskakel om multi-draad datastrukture behoorlik te ontwerp nie. 

Nie-vlugtige geheue, Optane DIMM, ultravinnige toestelle.

Виталий: Die laaste ding waaroor ek graag wil praat, is die onderwerp van jou huidige navorsing: nie-vlugtige geheue. Wat kan ons in die nabye toekoms op hierdie gebied verwag? Weet jy dalk van enige effektiewe implementerings wat reeds bestaan? 

Michael: Ek is nie 'n hardeware-kenner nie, ek weet net wat ek in die nuus lees en wat my kollegas vir my sê. Almal het al gehoor dat Intel verkoop Optane DIMM, wat ongeveer 3 keer die leesvertraging en 10 keer die skryfvertraging as dinamiese RAM het. Hulle sal binnekort in baie groot volume weergawes beskikbaar wees. Dit is snaaks om te dink dat jy 'n skootrekenaar kan hê met verskeie teragrepe byte-adresseerbare RAM. Dit is waarskynlik dat ons oor 10 jaar sal besluit om hierdie nuwe tegnologie te gebruik, aangesien ons DRAM gebruik - verhoog net die volume. Maar danksy energie-onafhanklikheid gaan heeltemal nuwe geleenthede vir ons oop. Ons kan die bergingstapel fundamenteel verander sodat daar geen skeiding is tussen byte-adresseerbare werkgeheue en blokgestruktureerde aanhoudende geheue nie. Ons hoef dus nie alles wat van een program na 'n ander oorgedra moet word na blok-gestruktureerde lêers te serialiseer nie. Hieruit kan ons baie belangrike beginsels aflei wat bedryfstelsels, looptydomgewings en verspreide datawinkels beïnvloed. Hierdie area is baie interessant om in te werk. Persoonlik is dit vir my moeilik om te voorspel waartoe dit alles sal lei, maar die probleme hier is uiters vermaaklik. Daar kan revolusionêre veranderinge hier wees, en dit volg baie natuurlik uit die werk op multithreading, aangesien mislukking herstel 'n "multithreading" proses is naas die normale werking van die stelsel. 

Die tweede hoofonderwerp waaraan ek tans werk, is die bestuur van ultravinnige toestelle en veilige toegang tot toestelle vanaf die gebruikersruimte met sistemiese beleidbeheer. In onlangse jare was daar 'n neiging om toegang tot die toestel na die gebruikersruimte te skuif. Dit word gedoen omdat die TCP-IP-kernstapel nie bo-op 'n netwerkkoppelvlak kan funksioneer wat elke 5 mikrosekondes 'n nuwe pakkie benodig nie, dit sal eenvoudig nie byhou nie. Daarom verskaf vervaardigers direkte toegang tot toestelle. Maar dit beteken dat die bedryfstelsel beheer oor die proses verloor en dit kan nie behoorlike toegang tot die toestel bied vir mededingende toepassings nie. Ons navorsingspan glo dat hierdie tekortkoming vermy kan word. Ons sal hierdie maand 'n artikel hieroor by USENIX ATC hê. Dit hou verband met werk op volharding, aangesien langlewende byte-adresseerbare aanhoudende geheue in wese 'n toestel met ultra-vinnige I/O is wat in die gebruikersruimte verkry moet word. Hierdie navorsing maak nuwe benaderings tot mikrokernele, eksokernele en ander tradisionele pogings moontlik om funksionaliteit veilig van die OS-kern na die gebruikersruimte te skuif. 

Vladimir: Byte-adresseerbare geheue is wonderlik, maar daar is 'n fisiese beperking - die spoed van lig. Dit beteken dat daar onvermydelik 'n vertraging sal wees wanneer daar interaksie met die toestel is. 

Michael: Absoluut reg.

Vladimir: Sal daar genoeg kapasiteit wees om die nuwe vragte te hanteer?

Michael: Dit is 'n uitstekende vraag, maar dit sal vir my moeilik wees om te beantwoord. Die idee van verwerking in geheue bestaan ​​al 'n geruime tyd, dit is baie interessant, maar ook baie kompleks. Ek het nog nie in hierdie area gewerk nie, maar dit sal wonderlik wees as sommige ontdekkings daar gemaak word. Ek is bevrees ek het niks meer om by te voeg nie. 

Vladimir: Daar is nog een probleem. Nuwe, aansienlik groter hoeveelhede RAM sal onmoontlik wees om by die SVE in te pas. Daarom, as gevolg van fisiese beperkings, moet hierdie RAM geïsoleer word. 

Michael: Dit hang alles af van die aantal defekte in die vervaardiging van geïntegreerde stroombane. As dit moontlik was om halfgeleierwafers heeltemal sonder defekte te skep, dan sou dit moontlik wees om 'n hele mikrokring daaruit te maak. Maar nou weet ons nie hoe om mikrobane groter as posseëls te maak nie. 

Vladimir: Maar ons praat steeds van groot groottes, omtrent sentimeters. Dit het onvermydelik 'n impak op latensie. 

Michael: Ja. Daar is niks wat jy aan die spoed van lig kan doen nie. 

Vladimir: Ongelukkig. 

Die volgende groot tendens. Dubbele datastrukture. Hidra.

Виталий: Sover ek verstaan, vang jy baie vinnig nuwe tendense op. Jy was een van die eerstes wat in transaksionele geheue gewerk het, en een van die eerstes wat in nie-vlugtige geheue gewerk het. Wat dink jy sal die volgende groot neiging wees? Of is dit dalk 'n geheim?

Michael: Om eerlik te wees, ek weet nie. Hopelik sal ek kan agterkom wanneer iets nuuts opduik. Ek was nie gelukkig genoeg om enige nuwe veld op my eie uit te vind nie, maar ek het 'n paar geluk gehad en kon redelik vroeg begin werk in nuwe velde wat deur ander geskep is. Ek hoop ek sal dit in die toekoms kan doen.

Alexey: Die laaste vraag in hierdie onderhoud gaan oor jou prestasie by Hydra en jou aktiwiteite by die skool wees. As ek reg verstaan, gaan die verslag by die skool oor blokkeervrye algoritmes handel, en by die konferensie oor dubbele datastrukture. Kan jy 'n paar woorde oor hierdie verslae sê?

Michael: Deels het ons hierdie onderwerpe reeds in hierdie onderhoud met jou aangeraak. Dit gaan oor die werk wat ek saam met my student Bill Scherer gedoen het. Hy het 'n tesis daaroor geskryf, en Doug Lee het ook daartoe bygedra, en dit het uiteindelik deel geword van die multi-draad sinchrone rye in die Java-biblioteek. Kom ons neem aan dat die datastruktuur gelees en geskryf word sonder om te blokkeer, dit wil sê, elke operasie het 'n beperkte aantal instruksies op die kritieke pad. As jy probeer om data uit 'n leë houer te verwyder, of sekere data probeer verwyder wat nie in hierdie houer is nie, word jy dadelik ingelig dat dit nie gedoen kan word nie. Maar hierdie gedrag is dalk nie aanvaarbaar as die draad regtig hierdie data benodig nie. Dan is die eerste ding wat by jou opkom, om 'n lus te skep wat voortdurend sal vra of die nodige data verskyn het. Maar dan is daar inmenging vir almal anders. Daarbenewens, met hierdie benadering, kan jy 10 minute wag, en dan sal 'n ander draad kom, en dit sal per ongeluk eers die nodige data ontvang. Dubbele datastrukture het steeds nie slotte nie, maar dit laat drade toe om behoorlik te wag. Die term "dubbel" beteken dat die struktuur óf data óf versoeke vir data bevat, kom ons noem dit anti-data. So as jy probeer om iets uit 'n leë houer te haal, sal 'n versoek eerder in die houer geplaas word. Nou kan die draad wag vir 'n versoek sonder om iemand anders te steur. Daarbenewens ken die datastruktuur prioriteite toe aan versoeke sodat wanneer dit ontvang word, dit dit aan die regte persoon deurgee. Die resultaat is 'n nie-sluitmeganisme wat steeds 'n formele spesifikasie en goeie werkverrigting in die praktyk het. 

Alexey: Wat is jou verwagtinge van hierdie datastruktuur? Sal dit prestasie in alle algemene gevalle verbeter, of is dit beter geskik vir sekere situasies? 

Michael: Dit is nuttig as jy eerstens 'n houer benodig sonder om te sluit, en tweedens moet jy wag in 'n situasie waar jy data uit die houer moet haal wat nie daarin is nie. Sover my kennis strek, bied ons raamwerk optimale gedrag wanneer aan hierdie twee voorwaardes voldoen word. Daarom beveel ek aan om dit in hierdie gevalle te gebruik. Die grootste voordeel van slotlose datastrukture is dat hulle prestasieprobleme vermy. En wag is baie belangrik in baie algoritmes as data van een draad na 'n ander oorgedra word.

Виталий: Laat ek verduidelik: sal jy by die skool en by die konferensie oor dieselfde ding praat?

Michael: By die skool ek sal praat in die algemeen oor multi-draad datastrukture, met die basiese beginsels uiteengesit aan die begin van die les. Ek neem aan die gehoor weet wat drade is en is vertroud met slotte. Op grond van hierdie basiese kennis sal ek praat oor slotvrye datastrukture. Ek sal 'n oorsig gee van die belangrikste probleme in hierdie area, met betrekking tot onderwerpe soos geheuebestuur. Ek dink nie daar sal iets meer ingewikkeld wees as die MS-ry nie.

Alexey: Beplan jy om aan die einde van jou klas op skool oor dubbele datastrukture te onderrig?

Michael: Ek sal hulle noem, maar ek sal nie veel tyd daaraan spandeer nie. Die Hydra-verslag sal aan hulle opgedra word. Dit sal die projek dek wat uiteindelik in Java gemaak het, sowel as om saam met Joe Israelevich te werk om 'n dubbele variant van die LCRQ-tou te skep, en 'n byna universele ontwerp vir dubbele datastrukture te skep.

Alexey: So die lesing by die skool kan aanbeveel word vir beginners, en die lesing oor dubbele datastrukture op Hydra - vir mense wat reeds 'n bietjie ondervinding het?

Michael: Korrigeer my as ek verkeerd is, maar die gehoor by Hydra sal redelik uiteenlopend wees, insluitend baie Java-kundiges, en in die algemeen mense wat nie spesifiek by multi-threaded-programmering betrokke is nie. 

Виталий: Ja dit is waar.

Alexey: Ons hoop darem so.

Michael: In hierdie geval sal ek gekonfronteer word met dieselfde probleem waarmee ons hierdie onderhoud begin het: hoe om 'n verslag beide voldoende ryk aan tegniese besonderhede en toeganklik vir alle luisteraars te maak.

Виталий: Sal jy 'n verslag gee op dieselfde manier as wat jy lesings gee? Dit wil sê, praat met die gehoor en pas by die situasie aan?

Michael: Ek is bevrees dit sal nie so uitwerk nie, want die berig sal skyfies hê. Skyfies is belangrik wanneer luisteraars aanvanklik verskillende tale praat. Baie mense sal dit moeilik vind om my in Engels te verstaan, veral as ek te vinnig praat. Ek het hierdie onderwerpe gekies omdat Peter Kuznetsov het my gevra om te praat oor slotvrye datastrukture by SPTDC Skool; en toe het ek 'n verslag nodig vir 'n Java-gebruikersgroepkonferensie, en ek wou iets kies wat spesifiek vir Java-programmeerders van belang sou wees. Die maklikste manier was om oor daardie dinge in die Java-biblioteek te praat wat ek op een of ander manier 'n hand gehad het. 

Alexey: Ons neem aan dat die gehoor op Hydra reeds iets weet van slotvrye programmering en dalk 'n bietjie ervaring op hierdie gebied het. Maar dit is slegs 'n aanname dat die situasie op die konferensie self duideliker sal word. In elk geval, dankie vir jou tyd. Ek is seker die onderhoud sal baie interessant wees vir ons lesers. Baie dankie!

Виталий: Dankie. 

Michael: Ek sal bly wees om jou in St. Petersburg te ontmoet. 

Alexey: Ons ook, ons het 'n pragtige stad. Was jy al ooit daar?

Michael: Nee, ek was nog nooit in Rusland nie. Maar St. Petersburg was nog altyd op die lys van plekke waar ek nog nie was nie, maar waarheen ek regtig wil gaan, so ek was baie bly oor die uitnodiging. 

Alexey: Terloops, ons sal 'n program van uitstappies vir sprekers hê. Baie dankie vir die onderhoud, en lekker dag!

Jy kan jou gesprek met Michael voortsit by die Hydra 2019-konferensie, wat op 11-12 Julie 2019 in St. Petersburg gehou sal word. Hy sal met 'n verslag kom "Dubbele datastrukture". Kaartjies kan gekoop word op die amptelike webwerf.

Bron: will.com

Voeg 'n opmerking