- dirbo kompiuterių mokslų profesoriumi Ročesterio universitete ir savo gimtajame Viskonsino-Madisono universitete penkerius metus buvo dekanas. Jis tiria ir moko studentus apie lygiagretųjį ir paskirstytą programavimą bei kalbų dizainą.
Pasaulis Michaelą pažįsta iš vadovėlio , kaip dėl darbo gavo Dijkstra premiją kaip vienas žinomiausių paskirstytojo skaičiavimo srityje. Taip pat galite jį pažinti kaip to paties algoritmo autorių .
Kartu su Dougu Lee jis sukūrė neblokuojančius algoritmus ir sinchronines eiles, kurios maitina Java bibliotekas. Įgyvendinimas JavaSE 6 pagerino našumą 10 kartų ThreadPoolExecutor.
Turinys:
- Ankstyvoji karjera, Ročesterio universitetas. Projektas Šarlotė, Lūšies kalba;
- IEEE Scalable Coherent Interface, MCS blokavimas;
- Išgyvenimas nuolat besikeičiančiame pasaulyje;
- Ar studentai tampa kvailesni? Pasaulinės tendencijos, internacionalizacija;
- Efektyvų darbą su studentais;
- Kaip neatsilikti nuo naujų kursų ir knygų ruošimo;
- Verslo ir akademinės bendruomenės ryšiai;
- Praktinis idėjų įgyvendinimas. MCS, MS, CLH, JSR 166, darbas su Doug Lee ir kt.
- Operacinė atmintis;
- Naujos architektūros. Transakcinės atminties pergalė arti;
- Nekintamoji atmintis, Optane DIMM, itin greiti įrenginiai;
- Kita didelė tendencija. Dvigubos duomenų struktūros. Hidra.
Interviu veda:
Vitalijus Aksenovas — šiuo metu yra IST Austria postdoktorius ir ITMO universiteto Kompiuterinių technologijų katedros narys. Atlieka tyrimus konkurencinių duomenų struktūrų teorijos ir praktikos srityje. Prieš dirbdamas IST, jis įgijo daktaro laipsnį Paryžiaus Didro universitete ir ITMO universitete, vadovaujant profesoriui Peteriui Kuznecovui.
Aleksejus Fiodorovas - Prodiuseris Rusijos įmonėje JUG Ru Group, kuri organizuoja konferencijas kūrėjams. Aleksejus dalyvavo rengiant daugiau nei 50 konferencijų, o jo gyvenimo aprašyme yra viskas, pradedant kūrimo inžinieriumi „Oracle“ (JCK, „Java Platform Group“) ir baigiant kūrėjo pareigomis Odnoklassniki.
Vladimiras Sitnikovas - Netcracker inžinierius. Dešimt metų darbo dėl „NetCracker OS“ našumo ir mastelio – programinės įrangos, kurią telekomunikacijų operatoriai naudoja tinklo ir tinklo įrangos valdymo procesams automatizuoti. Domina Java ir Oracle Database našumo problemos. Daugiau nei tuzino oficialios PostgreSQL JDBC tvarkyklės našumo patobulinimų autorius.
Ankstyvoji karjera, Ročesterio universitetas. Šarlotės projektas, lūšių kalba.
Aleksejus: Pirmiausia norėjau pasakyti, kad Rusijoje mes visi labai mėgstame kompiuterių mokslą, duomenų mokslą ir algoritmus. Tai visiškai nepadoru. Viską perskaitėme . Todėl artėjanti konferencija, mokykla ir pats šis interviu turėtų sulaukti didelio populiarumo. Šiam interviu sulaukėme daug klausimų iš studentų, programuotojų ir bendruomenės narių, todėl esame labai dėkingi už tokią galimybę. Ar kompiuterių mokslas sulaukia tokios pat meilės JAV?
Michael: Mūsų sritis yra tokia įvairi, ji turi tiek daug krypčių ir taip įvairiai veikia visuomenę, kad man sunku jums duoti galutinį atsakymą. Tačiau faktas yra tai, kad per pastaruosius 30 metų tai atnešė didžiulius pokyčius versle, pramonėje, mene ir apskritai visuomenėje.
Виталий: Pradėkime nuo kažko tolimo. Daugelyje universitetų yra kažkas panašaus į vienos konkrečios srities specializaciją. Carnegie Mellon universitetui tai yra lygiagretusis skaičiavimas, MIT – kriptografija, robotai ir daugiagija. Ar Ročesterio universitete yra tokia specializacija?
Michael: Tiesą sakant, sakyčiau, kad CMU ir MIT specializuojasi visose srityse. Mūsų skyrius visą laiką daugiausia dėmesio skyrė dirbtiniam intelektui. Pusė pas mus dirbančių žmonių užsiima dirbtiniu intelektu arba žmogaus ir kompiuterio sąveika – ši dalis yra didesnė nei kituose skyriuose ir taip buvo visada. Tačiau kai mokiausi universitete, neturėjau jokių AI kursų ir niekada nedirbau šioje srityje. Taigi mano skyrius specializuojasi sprendžiant problemą, su kuria aš neturiu nieko bendra. Guodžia tai, kad antra pagal svarbą mūsų skyriaus problema – lygiagretusis ir kelių gijų programavimas, tai yra mano specializacija.
Виталий: Kompiuterių moksle pradėjote dirbti tada, kai tik atsirado kelių gijų programavimo sritis. Jūsų publikacijų sąrašas rodo, kad pirmieji jūsų darbai nagrinėjo gana platų klausimų spektrą: atminties valdymą kelių gijų sistemose, paskirstytas failų sistemas, operacines sistemas. Kodėl toks universalumas? Ar bandėte rasti savo vietą mokslinių tyrimų bendruomenėje?
Michael: Būdamas studentas, dalyvavau Viskonsino universitete, kur buvo sukurta viena pirmųjų paskirstytų operacinių sistemų. Ten dirbau kartu su Rafaeliu Finkeliu () ir Marvinas Solomonas (). Mano disertacija buvo skirta paskirstytų sistemų sisteminės programinės įrangos kalbos kūrimui – dabar visi apie tai pamiršo, ačiū Dievui. Sukūriau Lynx programavimo kalbą, kuri buvo skirta palengvinti serverių kūrimą laisvai susietai paskirstytai operacinei sistemai. Kadangi tuo metu daugiausia užsiėmiau operacinėmis sistemomis, maniau, kad mano karjera daugiausia bus susijusi su jomis. Tačiau Ročesteris buvo labai mažas universitetas, todėl skirtingos grupės ten labai glaudžiai bendravo viena su kita. Ten nebuvo tuzino kitų operacinių sistemų žmonių, su kuriais galėčiau pasikalbėti, todėl visi mano kontaktai buvo su žmonėmis, kurie dirbo visiškai skirtingose srityse. Man tai labai patiko, būti visapusiu man yra didelis privalumas. Jei kalbėtume konkrečiai apie kelių gijų duomenų struktūras ir sinchronizavimo algoritmus, tai aš su jais pradėjau dirbti visiškai atsitiktinai.
IEEE Scalable Coherent Interface, MCS užraktas.
Виталий: Ar galite man papasakoti šiek tiek daugiau apie tai?
Michael: Tai juokinga istorija, kurios nepavargstu visiems pasakoti. Tai įvyko konferencijoje Bostone – tai buvo 80-ųjų pabaigoje arba 90-ųjų pradžioje. Johnas Melloras-Crummey (), mūsų fakulteto absolventas. Pažinojau jį, bet iki tol nebuvome atlikę bendrų tyrimų. Merė Vernon () iš Viskonsino papasakojo apie kelių procesorių sistemą, kurią jie sukūrė Viskonsine: . Šis „Multicube“ turėjo sinchronizavimo mechanizmą aparatinės įrangos lygiu, pavadintą „Q on Sync Bit“, o vėliau jis buvo pervadintas į „Q on Lock Bit“, nes skambėjo kaip „Colby“ sūris, o tai buvo kalambūra. Jei domitės daugiasriegiais mechanizmais, tikriausiai žinote, kad Colby galiausiai tapo IEEE Scalable Coherent Interface standarto sinchronizavimo varikliu. Tai buvo užrakinimo mechanizmas, kuris aparatūros lygiu sukūrė rodykles iš vienos talpyklos į kitą, kad kiekvienas užrakto laikiklis žinotų, kieno eilė. Kai mes su Johnu apie tai išgirdome, pažvelgėme vienas į kitą ir pasakėme: kodėl tai darome aparatūros lygiu? Ar to paties negalima pasiekti naudojant palyginimą ir keitimą? Paėmėme vieną iš klasėje gulinčių sąsiuvinių ir ant jo užsirašėme , o Marija tęsė savo pranešimą. Vėliau tai įgyvendinome, eksperimentavome, idėja pasiteisino ir paskelbėme straipsnį. Tuo metu man ši tema atrodė tik smagus blaškymasis, po kurio planavau grįžti prie operacinių sistemų. Bet tada iškilo kita panaši problema, ir galiausiai sinchronizavimas, kelių gijų ir duomenų struktūros tapo mano specialybe. Kaip matote, visa tai įvyko atsitiktinai.
Виталий: Su MCS blokavimu susipažinau jau seniai, bet iki šiol nežinojau, kad tai tavo darbas, ir nesupratau, kad tai tavo pavardžių akronimas.
Kaip išgyventi nuolat besikeičiančiame pasaulyje?
Aleksejus: Turiu klausimą susijusia tema. Prieš 30 ar 40 metų įvairiose specialybėse buvo daugiau laisvės. Jei norite pradėti karjerą kelių gijų ar paskirstytų sistemų srityje, esate laukiami, jei norite patekti į operacines sistemas, jokių problemų. Kiekvienoje srityje buvo daug atvirų klausimų ir mažai ekspertų. Dabar atsirado siauros specializacijos: nėra vien operacinių sistemų ekspertų apskritai, yra atskirų sistemų specialistai. Tas pats yra su kelių gijų ir paskirstytomis sistemomis. Tačiau problema ta, kad mūsų gyvenimas nėra begalinis, kiekvienas gali skirti tik kelis dešimtmečius tyrimams. Kaip išgyventi šiame naujame pasaulyje?
Michael: Šiuo atžvilgiu nesame ypatingi. Man pasisekė, kad informatikos srityje pradėjau dirbti tada, kai ši sritis buvo „paauglystės“ metais. Kai kurie pamatai jau buvo padėti, bet viskas dar buvo labai nesubrendę. Tokia galimybė pasitaiko nedažnai. Elektrotechnika gyvuoja labai seniai, fizika dar seniau, matematika beveik nuo laikų pradžios. Bet tai nereiškia, kad matematikos srityje niekas nebedaro įdomių atradimų. Vis dar yra daug neišspręstų problemų, tačiau tuo pat metu reikia išmokti daugiau. Teisingai pastebėjote, kad dabar specializacijų yra daug daugiau nei anksčiau, tačiau tai tik reiškia, kad atsiduriame tokioje pačioje situacijoje kaip ir dauguma kitų žmogaus veiklos sričių.
Aleksejus: Mane domina praktiškesnis šio klausimo aspektas. Turiu matematikos išsilavinimą, studijų metais dažnai dalyvaudavau konferencijose, dirbdavau įvairiomis mokslo temomis. Sužinojau, kad niekas iš auditorijos nesuprato mano pranešimų, lygiai taip pat ir kitų žmonių pranešimai buvo suprantami tik jiems patiems. Aukšto lygio temose to nebūna, bet kai tik pradedi į ką nors gilintis, publika nebespėja nuo tavęs. Kaip su tuo susitvarkote?
Michael: Ne visada pavyksta. Neseniai parengiau pranešimą, kuriame per daug gilinausi į technines detales. Kalbai įsibėgėjus tapo aišku, kad didžioji dalis publikos manęs nesupranta, tad teko prisitaikyti prie situacijos skraidydamas. Skaidrių pakeisti nepavyko, todėl nelabai pavyko – taigi, paprastai kalbant, skaidres stengiuosi nenaudoti. Apskritai, mano patarimas yra atsižvelgti į savo auditoriją. Turite žinoti, su kuo kalbate, koks yra jų žinių lygis ir ką jie turi išgirsti, kad įvertintų jūsų darbą.
Виталий: Ar galėtum duoti užuominą, apie ką buvo ši paskaita?
Michael: Tiesą pasakius, norėčiau šios temos nesiplėti, kad likčiau anonimiški. Esmė ta, kad dažnai per daug įsigiliname į problemos, su kuria dirbame, subtilybes, todėl pokalbio pradžioje mums tampa sunku paaiškinti, kodėl problema įdomi ir svarbi ir kaip ji susijusi su problemomis, publika jau žino. Mano pastebėjimais, mokiniams šio įgūdžio išmokti sunkiausia. Ir tai taip pat buvo mano naujausio pranešimo silpnoji vieta. Tinkamai struktūrizuotas pranešimas turėtų nuo pat pradžių rasti kontaktą su auditorija, paaiškinti jiems, kokia tiksliai yra problema ir kaip ji susijusi su jai jau žinomomis temomis. Kiek techninis šis įvadas, priklauso nuo auditorijos. Jei jis visiškai margas, tai ataskaita gali būti daugiapakopė. Įžanga turėtų būti prieinama visiems, o pabaigoje kūrinys gali neatsilikti nuo jūsų, tačiau žmonės, gana gerai susipažinę su jūsų sritimi, galės tai išsiaiškinti.
Ar studentai tampa kvailesni? Pasaulinės tendencijos, internacionalizacija.
Aleksejus: Studentus stebite kelis dešimtmečius. Ar studentai tampa kvailesni ar protingesni nuo dešimtmečio iki dešimtmečio ar metai iš metų? Rusijoje profesoriai nuolat skundžiasi, kad studentai kasmet darosi vis kvailesni, ir tikrai neaišku, ką su tuo daryti.
Michael: Iš mūsų, senų žmonių, tikrai galima išgirsti daug negatyvo. Pasąmoningai turime tendenciją tikėtis, kad studentai įsisavins visą 30 metų patirtį, kurią jau turime. Jeigu aš turiu gilesnį supratimą nei 1985 m., kodėl mokiniai to neturi? Tikriausiai dėl to, kad jiems 20 metų, ką jūs manote? Manau, kad reikšmingiausi pokyčiai per pastaruosius dešimtmečius įvyko demografinėje sudėtyje: dabar turime žymiai daugiau tarptautinių studentų, išskyrus kanadiečius. Anksčiau ten buvo daug kanadiečių, nes esame labai arti Kanados sienos ir studentai iš ten savaitgaliais gali keliauti namo. Tačiau dabar Kanadoje yra daug gerų universitetų, o kanadiečiai nori čia studijuoti žymiai mažiau.
Aleksejus: Ar manote, kad tai vietinė ar pasaulinė tendencija?
Michael: Tiksliai nepamenu kas, bet kažkas pasakė, kad pasaulis plokščias. Mūsų sritis tapo daug tarptautiškesnė. Anksčiau jie buvo rengiami tik JAV, tada jie nusprendė juos rengti kartą per 4 metus kitose šalyse, o dabar jie vyksta visame pasaulyje. Šie pokyčiai paveikė dar labiau , nes ji visada buvo labiau tarptautinė organizacija nei ACM. O programinių kėdžių yra iš Kinijos, Indijos, Rusijos, Vokietijos ir daugelio kitų šalių, nes dabar visur daug kas vyksta.
Aleksejus: Bet, ko gero, yra ir neigiamų tokio internacionalizavimo aspektų?
Michael: Sakyčiau, kad visi neigiami aspektai susiję ne su technologijomis, o su politika. Kadaise pagrindinė problema buvo tai, kad JAV vagia pačius protingiausius ir talentingiausius žmones iš viso pasaulio šalių. O dabar pagrindinė problema yra įvairių šalių politiniai žaidimai dėl vizų ir imigracijos.
Aleksejus: Tai yra, barjerai ir panašūs dalykai. Tai aišku.
Vladimiras: Man asmeniškai įdomu, kokio požiūrio laikotės dėstydami studentams naują dalyką. Galimi įvairūs variantai: pirmiausia galite pabandyti įkvėpti juos išbandyti ką nors naujo, arba galite daugiau dėmesio skirti tam tikros technologijos veikimo detalėms. Kas jums labiau patinka?
Efektyvus darbas su mokiniais
Aleksejus: O kaip rasti prakeiktą balansą tarp pirmo ir antro?
Michael: Problema ta, kad pamokos ne visada vyksta taip, kaip norėčiau. Dažniausiai mokiniams iš anksto duodu skaityti medžiagą, kad jie į ją įsigilintų, kuo geriau suprastų ir suformuluotų klausimus apie tas dalis, kurių negalėjo suprasti. Tada klasėje galite sutelkti dėmesį į sunkiausias akimirkas ir kartu jas tyrinėti. Taip man labiausiai patinka vesti pamokas. Tačiau atsižvelgiant į dabar studentams tenkantį krūvį, ne visada galiu įsitikinti, kad jie pasiruošia iš anksto. Dėl to bendram medžiagos perpasakojimui tenka skirti daug daugiau laiko, nei norėtųsi. Nepaisant to, stengiuosi, kad mūsų pamokos būtų interaktyvios. Kitu atveju lengviau vieną kartą įrašyti vaizdo įrašą, kurį mokiniai galės žiūrėti namuose. Gyvų užsiėmimų esmė yra žmonių sąveika. Klasėje man labiau patinka naudoti kreidą ir lentą, o ne skaidres, išskyrus tam tikrus atvejus, kai diagrama yra per sudėtinga, kad ją būtų galima pavaizduoti lentoje. Dėl to man nereikia laikytis griežto pamokų plano. Kadangi nėra griežtos tvarkos, kuria teikiu medžiagą, tai leidžia man pritaikyti ją auditorijai, atsižvelgiant į gautus klausimus. Apskritai stengiuosi, kad užsiėmimai būtų kuo interaktyvesni, kad mano pateikta medžiaga priklausytų nuo man užduodamų klausimų.
Vladimiras: Tai gerai. Mano patirtis rodo, kad gana sunku priversti klausytojus užduoti klausimus. Net jei iš anksto paprašai užduoti bet kokius klausimus, kad ir kokie kvaili ar protingi jie būtų, jie vis tiek tyli. Kaip su tuo susitvarkote?
Michael: Juoksitės, bet jei pakankamai ilgai stovėsite tylėdami, anksčiau ar vėliau visiems pasidarys nejauku ir kas nors užduos klausimą. Arba galite užduoti paprastą techninį klausimą, atsakydami „taip“ arba „ne“, kad nustatytumėte, ar žmonės supranta, kas ką tik buvo pasakyta. Pavyzdžiui, ar aukščiau pateiktame pavyzdyje yra duomenų lenktynės? Kas taip mano? Kas mano, kad ne? Kas išvis nieko nesupranta, nes iš viso tik pusė rankų pakilo?
Виталий: O jei neteisingai atsakei, esi išmestas iš pamokos :)
Michael: Jei nieko neatsakėte, turėtumėte užduoti klausimą. Turiu suprasti, ką tiksliai studentas turi žinoti, kad atsakytų į klausimą, kurį ką tik uždaviau. Man reikia, kad jie man padėtų jiems padėti. Esu pasiruošęs prie jų prisitaikyti, kad jie suprastų problemą. Bet jei aš nežinau, kas dedasi jų galvoje, aš negaliu to padaryti. Ir jei pakankamai ilgai neduodi studentams ramybės, kartais galiausiai jie užduoda teisingus klausimus, tai yra, leidžiančius pamatyti, kas tiksliai dedasi mokinių galvose.
Aleksejus: Ar šie klausimai kartais veda į idėjas, apie kurias pats anksčiau negalvojote? Ar jie netikėti? Ar jie leidžia pažvelgti į problemą nauju žvilgsniu?
Michael: Yra klausimų, kurie atveria naują medžiagos pateikimo būdą. Dažnai kyla klausimų, dėl kurių kyla įdomių problemų, apie kurias neplanavau kalbėti. Studentai dažnai man sako, kad aš linkęs nukrypti nuo temos, kai tai atsitinka. Ir, anot jų, labai dažnai tai būna įdomiausia pamokos dalis. Labai retai, vos kelis kartus, studentai uždavė klausimus, kurie paskatino naują tyrimų kryptį ir išaugo į straipsnį. Tai daug dažniau nutinka pokalbiuose su mokiniais, o ne pamokų metu, tačiau kartais tai nutinka per pamokas.
Aleksejus: Taigi studentai uždavė jums klausimus, kurių pagrindu tada buvo galima publikuoti straipsnį?
Michael: Taip.
Виталий: Kaip dažnai jūs bendraujate su studentais? Kada jie nori sužinoti daugiau nei buvo aptarta per pamoką?
Michael: Su savo abiturientais – visą laiką. Turiu jų apie 5 ar 6, ir mes nuolat su jais ką nors aptariame. O tokio pobūdžio pokalbiai su mokiniais, kurie tiesiog lanko mano pamokas, nėra labai dažni. Nors norėčiau, kad tai nutiktų dažniau. Įtariu, kad jie tiesiog bijo ateiti į fakultetą darbo valandomis. Kiekvieną semestrą kai kuriems studentams pavyksta įveikti šį psichologinį barjerą, su jais visada labai įdomu pasikalbėti po pamokų. Tiesa, jei visi mokiniai būtų tokie drąsūs, man paprasčiausiai neužtektų laiko. Taigi galbūt viskas veikia taip, kaip turėtų.
Виталий: Kaip sekasi rasti laiko bendrauti su studentais? Kiek žinau, JAV mokytojai turi daug darbo – kreipiasi dėl dotacijų ir panašiai.
Michael: Sąžiningai, darbas su studentais yra mano darbo aspektas, kuris man labiausiai patinka. Taigi aš turiu pakankamai motyvacijos. Didžiąją laiko dalį, kurią praleidžiu savo biure, skiriu visokiems susitikimams. Dabar vasara, todėl mano grafikas ne toks įtemptas, bet mokslo metais kiekvieną dieną nuo 9 iki 17 viską susikroviau. Tiriamasis darbas, apžvalgos, dotacijos – visam tam skirti tik vakarai ir savaitgaliai.
Kaip neatsilikti nuo naujų kursų ir knygų rengimo.
Aleksejus: Ar šiuo metu ir toliau dėstote kokius nors kursus, kuriuos dėstote ilgą laiką? Kažkas panašaus į informatikos įvadą.
Michael: Pirmas dalykas, kuris ateina į galvą, yra programavimo kalbų kursas.
Aleksejus: Kuo šiandieninė šio kurso versija skiriasi nuo to, kas buvo prieš 10, 20, 30 metų? Galbūt čia įdomiau ne konkretaus kurso detalės, o bendros tendencijos.
Michael: Mano programavimo kalbų kursas buvo šiek tiek neįprastas tuo metu, kai jį sukūriau. Aš pradėjau jį skaityti devintojo dešimtmečio pabaigoje, pakeisdamas savo kolegą Dougą Baldwiną (). Kurso tema tik liestiškai buvo susijusi su mano specialybe, bet jam išėjus, buvau geriausia kandidatė dėstyti kursą. Man nepatiko nė vienas tuo metu egzistavęs vadovėlis, todėl šio kurso vadovėlį galiausiai parašiau pati. (Redaktoriaus pastaba: mes kalbame apie knygą) Dabar jis naudojamas daugiau nei 200 universitetų visame pasaulyje. Mano požiūris neįprastas tuo, kad sąmoningai maišo kalbos kūrimo ir įgyvendinimo problemas, skiria daug dėmesio šių aspektų sąveikai visose įmanomose srityse. Pagrindinis požiūris išliko nepakitęs, kaip ir daugelis pagrindinių sąvokų: abstrakcijos, vardų erdvės, moduliškumas, tipai. Tačiau kalbų, kuriomis demonstruojamos šios sąvokos, rinkinys visiškai pasikeitė. Kuriant kursą buvo daug pavyzdžių Pascal, tačiau šiandien daugelis mano studentų apie šią kalbą net negirdėjo. Bet jie žino Swift, Go, Rust, todėl turiu kalbėti apie kalbas, kurios vartojamos šiandien. Be to, dabar studentai puikiai išmano scenarijų kalbas, bet kai pradėjau dėstyti šį kursą, viskas buvo apie kompiliuotas kalbas. Dabar mums reikia daug medžiagos apie Python, Ruby ir net Perl, nes šiais laikais tai yra parašytas kodas, o šiose kalbose vyksta daug įdomių dalykų, įskaitant kalbos dizaino sritį.
Виталий: Tada kitas mano klausimas bus susijęs su ankstesniu. Kaip suspėti šioje srityje? Įtariu, kad tokio kurso atnaujinimas reikalauja daug darbo – reikia suprasti naujas kalbas, suprasti pagrindines mintis. Kaip tai padaryti?
Michael: Negaliu pasigirti, kad man visada pavyksta 100%. Tačiau dažniausiai aš tiesiog darau tai, ką daro visi – skaitau internetą. Jei noriu suprasti Rust, aš jį „Google“, einu į „Mozilla“ puslapį ir perskaitau ten paskelbtą vadovą. Tai yra dalis dalykų, kurie vyksta komercinėje plėtroje. Jeigu mes kalbame apie mokslą, tuomet reikia sekti pranešimus pagrindinėse konferencijose.
Verslo ir akademinės bendruomenės ryšys
Виталий: Pakalbėkime apie verslo ir mokslinių tyrimų ryšį. Jūsų darbų sąraše radau keletą straipsnių apie talpyklos darną. Suprantu, kad talpyklos nuoseklumo algoritmai buvo nestabilūs jų paskelbimo metu? Arba nepakankamai paplitęs. Kiek jūsų idėjos buvo paplitusios praktikoje?
Michael: Nesu tikras, apie kuriuos leidinius kalbate. Aš nemažai dirbau su savo mokiniais Billu Bolosky () ir Leonidas Kontotanassis (1990-ųjų pradžioje apie Neumann mašinų atminties valdymą. Tuo metu verslas dar neturėjo supratimo, kaip tinkamai sukurti kelių procesorių sistemą: ar verta sukurti nuotolinės atminties prieigos palaikymą aparatūros lygmeniu, ar verta atmintis paskirstyti, ar galima įkelti talpyklą iš nuotolinė atmintis, ar reikia operacinėje sistemoje perkelti puslapius? Billas ir Leonidas abu dirbo šioje srityje ir tyrinėjo būdus be nuotolinio talpyklos įkėlimo. Tai nebuvo tiesiogiai susiję su talpyklos suderinamumu, tačiau tai vis dar buvo darbas su NUMA atminties valdymu, o vėliau iš to išaugo modernūs puslapių išdėstymo metodai šiuolaikinėse operacinėse sistemose. Apskritai Billas ir Leonidas atliko svarbų darbą, nors ir ne patį įtakingiausią šioje srityje – tuo metu tuo pačiu darbu dirbo daug kitų žmonių. Vėliau dirbau prie temos, susijusios su talpyklos suderinamumu aparatinės įrangos operacinės atminties kontekste. Grupė, su kuria dirbau spręsdama šią problemą, gavo keletą patentų. Už jų slypi gana įdomios idėjos, bet nemanau, kad jos bus įgyvendintos praktiškai. Vienaip ar kitaip, man sunku spręsti apie jų pelningumą.
Aleksejus: Šiuo atžvilgiu asmeniškesnis klausimas: kiek jums svarbu, kad jūsų idėjos būtų įgyvendintos? O gal apie tai negalvoji?
Michael: Man patinka užduoti šį klausimą interviu su kitais žmonėmis, kandidatais ar kandidatais, norinčiais prisijungti prie fakulteto. Nemanau, kad yra teisingas atsakymas į šį klausimą. Žmonės, kurie daro šaunius dalykus, gali turėti labai skirtingą motyvaciją. Mane problemos traukia todėl, kad man asmeniškai jos įdomios, o ne dėl praktinės naudos. Bet kita vertus, kai koks nors įdomus dalykas vis tiek randa pritaikymą, man tai labai patinka. Taigi čia nėra lengva. Tačiau savo darbo pradžioje mane vis dar skatina ne galutinio panaudojimo pasaulyje idėja, o idėjos harmonija ir noras ją ištirti ir pamatyti, kas iš to išeis. Jei galiausiai tai duoda praktinių rezultatų, puiku.
Aleksejus: Dėl savo išsilavinimo ir patirties jūs geriau nei dauguma sugebate spręsti apie kitų žmonių idėjų vertę. Galite juos palyginti ir nustatyti, kuris su kuriuo geriau veikia. Esu tikras, kad turite nuomonę apie dalykus, kuriuos šiuo metu praktiškai naudoja dideli gamintojai, tokie kaip „Intel“. Jūsų požiūriu, ar teisingas yra šių įmonių kursas?
Michael: Praktika visada sukasi apie tai, kas gali būti komerciškai sėkminga, ty sukurti pelną, ir geriau apie tai paklausti ko nors kito. Mano darbas daugiausia baigiasi publikacijomis, o operacinių sistemų srityje jos vertinamos pagal veiklos rodiklius: greitį, energijos sąnaudas, kodo dydį. Bet man visada atrodė, kad šie empiriniai rezultatai pridedami prie straipsnių tik tam, kad juos būtų galima publikuoti, o tikrieji žmonių darbo motyvai yra estetiški. Tyrėjai sprendimus vertina iš meninės perspektyvos, jiems rūpi, kokios elegantiškos yra idėjos, ir jie stengiasi sukurti kažką geresnio nei esami požiūriai. Tyrėjus skatina asmeniniai, subjektyvūs, estetiniai motyvai. Bet jūs negalite apie tai rašyti pačiame straipsnyje, tai nėra argumentai programos komitetui. Laimei, elegantiški sprendimai dažnai būna greiti ir pigūs. Su keliolika mano kolegų diskutavome šia tema maždaug prieš 15 metų ir galiausiai parašėme apie tai straipsnį. Manau, kad vis dar galite jį rasti dabar, jis vadinamas ar kažkas panašaus, jame yra daugiau nei tuzinas autorių. Tai vienintelis straipsnis, kurio autorius esu aš , todėl jei atliksite jos vardo paiešką mano publikacijų sąraše, rasite tai, ko jums reikia. Jame kalbama apie sistemų tyrimų vertinimą ir elegancijos svarbą.
Aleksejus: Taigi yra skirtumas tarp to, kas moksle ir versle laikoma gerai, standartas. Mokslas įvertina našumą, energijos suvartojimą, TDP, diegimo paprastumą ir daug daugiau. Ar turite galimybę atlikti tokio pobūdžio tyrimus universitete? Ar turite laboratoriją su skirtingomis mašinomis ir skirtingomis architektūromis, kuriose galėtumėte atlikti eksperimentus?
Michael: Taip, mūsų skyriuje yra daug įvairių įdomių mašinų. Dažniausiai jie yra maži, turime nedidelį klasterį ir daug daugiaprocesorių sistemų su skirtingais greitintuvais. Be to, miestelyje yra didžiulis skaičiavimo centras, kuriame dirba kelių dešimčių skirtingų disciplinų mokslininkai. Jame yra apie tūkstantis mazgų ir dvidešimt tūkstančių branduolių, visi „Linux“. Jei reikia, visada galite nusipirkti AWS. Taigi mes neturime didelių apribojimų aparatinei įrangai.
Aleksejus: Kaip buvo prieš trisdešimt metų? Ar tada buvo problemų?
Michael: Tada buvo šiek tiek kitaip. Devintojo dešimtmečio viduryje ir pabaigoje buvo manoma, kad mokslui trūksta skaičiavimo išteklių. Norėdami ištaisyti šią situaciją, Nacionalinis mokslo fondas ) sukūrė koordinuotų eksperimentinių tyrimų programą (Coordinated Experimental Research, CER). Programos misija buvo aprūpinti skaičiavimo infrastruktūrą informatikos katedroms, ir ji pasiekė reikšmingų pokyčių. Už jos suteiktus pinigus mes Ročesterio universitete nusipirkome 1984 mazgų BBN Butterfly 128 m., tai buvo metai prieš man atvykstant. Tuo metu tai buvo didžiausia pasaulyje kelių procesorių sistema su bendra atmintimi. Jis turėjo 128 procesorius, kurių kiekvienas buvo atskiroje pagrindinėje plokštėje, ir užėmė keturis stovus. Kiekvienas procesorius turėjo megabaitą atminties, 128 megabaitai RAM tuo metu buvo neįsivaizduojamas kiekis. Šioje mašinoje pirmą kartą įdiegėme MCS užraktą.
Aleksejus: Taigi, jei gerai suprantu, tai šiuo metu aparatinės įrangos problema išspręsta?
Michael: Apskritai, taip. Yra keletas įspėjimų: pirma, jei kuriate kompiuterio architektūrą lusto lygiu, tai sunku padaryti akademinėje aplinkoje, nes versle yra daug geresnių įrankių. Jei jums reikia ko nors mažesnio nei 10 nanometrų, turėsite jį užsisakyti iš kito asmens. Šioje srityje daug lengviau būti „Intel“ tyrėju. Jei dirbate su optiniais ryšiais lustuose arba su kietojo kūno atmintimi, versle rasite technologijų, kurios dar nėra moksle, todėl turite kurti aljansus. Pavyzdžiui, Stephenas Swansonas () sukurtas naujoms atminties technologijoms. Ši forma ne visada veikia, bet kai kuriais atvejais gali būti gana sėkminga. Be to, sunkesnis yra galingiausių mokslo skaičiavimo sistemų kūrimas. Didžiausi šiuo metu JAV, Japonijoje ir Kinijoje vykdomi superkompiuterių projektai yra orientuoti į verslą.
Praktinis idėjų įgyvendinimas. MCS, MS, CLH, JSR 166, dirbant su Doug Lee ir kt.
Виталий: Jūs jau kalbėjote apie tai, kaip pradėjote dirbti su sinchronizavimo algoritmais. Turite du labai žinomus straipsnius apie и , kurios tam tikra prasme buvo įdiegtos Java. (Redaktoriaus pastaba: galima peržiūrėti visus leidinius ). Ten šis blokavimas buvo įgyvendintas su kai kuriais pakeitimais ir pasirodė , o eilė įdiegta taip, kaip numatyta. Tačiau nuo jūsų straipsnių paskelbimo iki praktinio pritaikymo praėjo daug metų.
Aleksejus: Atrodo, apie 10 metų eilės atveju.
Michael: Prieš šios funkcijos pasirodė Java standartinėje bibliotekoje?
Виталий: Taip. Ką padarėte, kad tai įvyktų? O gal jie nieko nedarė?
Michael: Galiu papasakoti, kaip „MS Queue“ pateko į „Java 5“. Kelerius metus iki jos pasirodymo dirbau su Marko Moyerso grupe „Sun Microsystems“ jų laboratorijoje netoli Bostono. Jis surengė seminarą pažįstamiems žmonėms, kurie sprendžia įdomias daugiagijos problemas, nes norėjo rasti temų, kurias galėtų parduoti jų įmonei. Ten pirmą kartą sutikau Doug Lea. Dougas ir aš bei dar 25 žmonės iš Sun kartu aptarėme Dougo pristatymą , kuris vėliau tapo java.util.concurrent. Pakeliui Dougas pasakė, kad norėtų naudoti MS eilę, tačiau tam jam reikėjo sąsajos eilės elementų skaičiaus skaitiklio. Tai reiškia, kad tai turėjo būti padaryta atskiru metodu, atominiu, tiksliu ir greitu. Aš pasiūliau tiesiog pridėti prie mazgų serijos numerius, paimti pirmojo ir paskutinio mazgo numerius ir atimti vieną iš kito. Dougas pasikasė galvą, pasakė „kodėl gi ne“ ir galiausiai padarė būtent tai. Bibliotekoje aptarėme šio požiūrio įgyvendinimą, tačiau Dougas didžiąją dalį darbo atliko pats. Dėl to jam pavyko sukurti puikų „Java“ daugiasriegio palaikymą.
Aleksejus: Taigi, jei gerai suprantu, .size() metodas turėjo būti standartinės eilės sąsajos dalis, o jo algoritminis sudėtingumas turėjo būti O(1)?
Michael: Taip, be to, reikalingas atskiras skaitiklis.
Aleksejus: Nes jei iškviečiate .size() metodą Java programoje, tikimasi, kad rezultatas bus pasiekiamas iš karto, o ne pagal tikrąjį kolekcijos dydį. Matau, ačiū.
Michael: Po kelerių metų su savo studentu Billu Schereriu dirbau su dvigubomis duomenų struktūromis – iš tikrųjų apie tai ir kalbėsiu . Dougas atėjo pas mus ir pasakė, kad gali juos panaudoti „Java Executor Framework“. Kartu su Billu jie sukūrė du įgyvendinimus – vadinamąsias sąžiningas ir nesąžiningas eiles. Aš konsultavau juos dėl šio projekto, nors nedalyvavau rašant tikrąjį kodą. Dėl to labai išaugo vykdytojų greitis.
Vladimiras: Ar susidūrėte su neteisingu algoritmų įdiegimu ar prašymu pridėti naujų funkcijų? Apskritai praktika turėtų sutapti su teorija, tačiau gana dažnai jos skiriasi. Tarkime, kad parašėte algoritmą ir popieriuje jis veikia, bet žmonės, kurie dalyvauja diegime, pradėjo jūsų prašyti daugiau funkcijų ar kažkokio algoritmo pakeitimo. Ar jums yra buvę tokių situacijų?
Michael: Vienintelis pavyzdys, kai kažkas atėjo pas mane ir paklausė „kaip tai įgyvendinti“, buvo Dougo klausimas, apie kurį jau kalbėjau. Tačiau buvo keletas atvejų, kai buvo atlikti įdomūs pakeitimai, atitinkantys praktinius poreikius. Pavyzdžiui, IBM K42 komanda konvertavo MCS užraktą ir padarė jį standartine sąsaja, todėl nereikėjo perduoti eilės mazgo pirmyn ir atgal į įsigijimo ir išleidimo procedūras. Šios standartinės sąsajos dėka teoriškai graži idėja pradėjo veikti praktiškai. Stebina tai, kad jie niekada nepaskelbė straipsnio apie tai ir, nors gavo patentą, vėliau jo atsisakė. Idėja buvo nuostabi, ir aš stengiuosi apie tai kalbėti, kai tik įmanoma.
Buvo ir kitų atvejų, kai žmonės patobulino mano paskelbtus algoritmus. Pavyzdžiui, MS eilėje yra dviejų žingsnių diegimo mechanizmas, o tai reiškia, kad kritiniame eilės kelyje buvo du CAS. Senesniuose automobiliuose CAS buvo gana brangus. „Intel“ ir kiti gamintojai pastaruoju metu gana gerai jas optimizavo, tačiau kažkada tai buvo 30 ciklų instrukcijos, todėl kritiniame kelyje turėti daugiau nei vieną buvo nepageidautina. Dėl to buvo sukurta kitokia eilė, kuri buvo panaši į MS eilę, bet kuri turėjo tik vieną atominę operaciją kritiniame kelyje. Tai buvo pasiekta dėl to, kad per tam tikrą laikotarpį operacija galėjo užtrukti O (n) laiko, o ne O (1). Tai buvo mažai tikėtina, bet įmanoma. Taip atsitiko dėl to, kad tam tikrais momentais algoritmas pereidavo eilę nuo pradžios iki esamos pozicijos šioje eilėje. Apskritai algoritmas pasirodė labai sėkmingas. Kiek žinau, jis nėra labai plačiai naudojamas, iš dalies dėl to, kad atominėms operacijoms reikia žymiai mažiau išteklių nei anksčiau. Bet idėja buvo puiki. Taip pat man labai patinka Dave'o Dice'o iš Oracle darbas. Viskas, ką jis daro, yra labai praktiška ir jis labai sumaniai naudoja geležį. Jis prisidėjo prie daugelio NUMA žinomų sinchronizavimo algoritmų ir kelių gijų duomenų struktūrų.
Vladimiras: Kai rašote algoritmus ar mokote studentus, jūsų darbo rezultatas nėra matomas iš karto. Bendruomenei reikia šiek tiek laiko susipažinti, tarkime, nauju straipsniu. Naujasis algoritmas ne iš karto randa pritaikymo.
Michael: Toli gražu ne iš karto aišku, ar straipsnis bus reikšmingas, ar ne. Manau, būtų įdomu panagrinėti konferencijose apdovanojimus pelniusius pranešimus. Tai yra, pažiūrėkite į straipsnius, kuriuos programos komitetų žmonės vienu metu laikė geriausiais. Pagal nuorodų skaičių ir įtaką verslui reikia pabandyti apskaičiuoti, kiek iš tikrųjų šie straipsniai turėjo įtakos po 10, 20, 25 metų. Abejoju, ar tarp jų būtų stiprus ryšys. Jis nebus nulis, bet greičiausiai jis bus daug silpnesnis nei mes norėtume. Daugelis idėjų lieka neparemtos ilgą laiką, kol jos tampa plačiai paplitusios. Pavyzdžiui, paimkime operacijų atmintį. Praėjo daugiau nei 10 metų nuo pirminio straipsnio paskelbimo iki to laiko, kai žmonės iš tikrųjų pradėjo su juo statyti mašinas. O iki šios atminties atsiradimo komerciniuose gaminiuose – ir visi 20. Labai ilgai niekas į straipsnį nekreipė dėmesio, o vėliau nuorodų į jį skaičius smarkiai išaugo. Sunku būtų tai numatyti iš anksto. Kita vertus, kartais idėjos įgyvendinamos iš karto. Prieš kelerius metus su Joe Izraelevitzu parašiau straipsnį DISC, kuriame buvo pasiūlytas naujas oficialus nuolatinių duomenų struktūrų, kurios galėtų būti naudojamos sudužus jas paleidžiančiam kompiuteriui, galiojimo apibrėžimas. Straipsnis man patiko nuo pat pradžių, bet pasirodė daug populiaresnis nei tikėjausi. Jį naudojo kelios skirtingos grupės ir galiausiai tapo standartiniu patvarumo struktūrų apibrėžimu. Kas, žinoma, yra malonu.
Vladimiras: Ar yra kokių nors metodų, kuriuos naudojate vertindami? Ar net stengiatės įvertinti savo straipsnius ir mokinius? Kalbant apie tai, ar žmogus, kurį mokėte, eina teisinga kryptimi.
Michael: Kaip ir visi kiti, daugiau dėmesio skiriu tam, ką šiuo metu darau. Vėlgi, kaip ir visi kiti, aš retkarčiais patikrinu „Google Scholar“, kad pamatyčiau, ar mano ankstesni straipsniai yra cituojami, bet tai labiau iš smalsumo. Dažniausiai esu įsigilinęs į tai, ką dabar daro mano mokiniai. Vertinant dabartinį darbą, dalis to yra estetiniai sumetimai, kas elegantiška, o kas ne. O kasdieniame lygmenyje atviri klausimai vaidina didelį vaidmenį. Pavyzdžiui, studentas ateina pas mane su kažkokių rezultatų grafiku, o mes bandome suprasti, iš kur atsirado keistas grafiko elgesys. Apskritai savo darbe nuolat stengiamės suprasti dalykus, kurių dar nesuprantame.
Transakcinė atmintis
Виталий: Gal galime šiek tiek pakalbėti apie transakcinę atmintį?
Michael: Manau, kad verta pasakyti bent šiek tiek, nes įdėjau daug pastangų. Tai tema, kuria turiu daugiau publikacijų nei bet kuri kita. Tačiau tuo pat metu, kaip bebūtų keista, aš visada labai skeptiškai žiūrėjau į transakcinę atmintį. Mano nuomone, (M. Herlihy, J. E. B. Moss) buvo išleistas anksčiau laiko. Dešimtojo dešimtmečio pradžioje jie pasiūlė, kad operacinė atmintis galėtų padėti talentingiems programuotojams dirbti su kelių gijų duomenų struktūromis, kad paprasti programuotojai šias struktūras galėtų naudoti kaip bibliotekas. Tai yra, tai būtų pagalba Dougui Lee atliekant savo JSR 1990. Tačiau operacijų atmintis nebuvo skirta palengvinti kelių gijų programavimą. Tačiau būtent taip jis buvo pradėtas suvokti 166-ųjų pradžioje, kai jis tapo plačiai paplitęs. Jis buvo reklamuojamas kaip būdas išspręsti lygiagretaus programavimo problemą. Toks požiūris man visada atrodė beviltiškas. Operacijų atmintis galėtų tik palengvinti lygiagrečių duomenų struktūrų rašymą. Tai, man atrodo, ji pasiekė.
Apie sudėtingą kelių gijų kodo rašymą
Aleksejus: Labai įdomu. Atrodo, kad tarp įprastų programuotojų ir tų, kurie gali rašyti kelių gijų kodą, yra tam tikras barjeras. Praėjusiais metais kelis kartus kalbėjausi su žmonėmis, kurie diegė kokią nors algoritminę sistemą. Pavyzdžiui, su Martinu Thomsonu, taip pat su programuotojais, dirbančiais su kelių gijų bibliotekomis. (Redaktoriaus pastaba: Martinas Thompsonas yra labai garsus kūrėjas, rašė jis и . Ir jis taip pat turi mūsų konferencijoje Joker 2015, vaizdo įrašas . Jis toks pat šią konferenciją taip pat galima). Pagrindinis iššūkis, pasak jų, yra tai, kad algoritmai būtų greiti ir lengvai naudojami. Tai yra, jie stengiasi įveikti šį barjerą ir pritraukti į šią sritį kuo daugiau žmonių. Ką tu apie tai manai?
Michael: Tai yra pagrindinė kelių gijų problema: kaip pasiekti aukštą našumą nepadidinant sistemos sudėtingumo.
Aleksejus: Nes kai bandoma išvengti sudėtingumo, algoritmas tampa ne toks universalus.
Michael: Svarbiausia čia yra tinkamai suplanuotos abstrakcijos. Man atrodo, kad tai apskritai yra pagrindinis kompiuterinių sistemų, kaip srities, dalykas. Butleris Lampsonas mėgsta vartoti šį terminą ir vadina mus „abstrakcijų prekeiviais“. Paprastos technologijos šiandien neegzistuoja. Mūsų naudojami procesoriai turi 10 milijardų tranzistorių – paprastumas nekyla abejonių. Tuo pačiu metu ISA yra daug paprastesnis nei procesorius, nes labai ilgai dirbome, kad suteiktume jam didelį našumą ir gana paprastą sąsają. Bet ir su ja ne viskas sklandu. Ta pati problema yra su greitintuvais, kurie dabar pasirodo rinkoje. Kyla klausimai – kaip sukurti tinkamą sąsają GPU, šifravimo mechanizmą, suspaudimą, perkodavimo mechanizmą, linijinės algebros mechanizmą ar net lankstesnį FPGA. Kaip sukurti sąsają, kuri palengvintų įrankio naudojimą ir paslepia sudėtingumą? Tai jo neatsikratys, o paslėps nuo paprasto programuotojo.
Aleksejus: Kaip suprantu, mes vis dar turime barjerą suprasti abstrakcijas. Paimkime atminties modelį mūsų mokslo ir technologijų raidos etape, tai yra viena iš pagrindinių abstrakcijų. Jos dėka visi programuotojai yra suskirstyti į dvi grupes: didesnė dalis yra tie, kurie to nesupranta, o mažesnė dalis yra tie, kurie supranta, arba mano, kad supranta.
Michael: Tai geras klausimas – ar tikrai kas nors iš mūsų supranta atminties modelį?
Виталий: Ypač C++.
Michael: Pasikalbėkite su Hansu Boehmu. Jis yra vienas protingiausių mano pažįstamų žmonių, pagrindinis atminties modelių ekspertas. Jis iš karto pasakys, kad daug ko nesupranta. Bet jei grįšime prie abstrakcijų klausimo, tai, mano nuomone, buvo išsakyta svarbiausia mintis atminties modelių srityje per pastaruosius 30 metų. . (Redaktoriaus pastaba: yra visas publikacijų sąrašas ).
Aleksejus: Mano klausimas yra toks: ar ši kliūtis kyla iš pačios koncepcijos prigimties?
Michael: Ne. Sarita priėjo prie išvados, kad pasirinkę tinkamą požiūrį, galite sėkmingai paslėpti visą sudėtingumą, pasiekti aukštą našumą ir suteikti programuotojui paprastą API. Ir jei laikysitės šios API, galite pasiekti nuoseklų nuoseklumą. Manau, kad tai yra tinkamas modelis. Rašykite kodą be duomenų lenktynių ir gaukite nuoseklų nuoseklumą. Žinoma, norint sumažinti lenktynių tikimybę, reikia specialių įrankių, bet tai jau kitas reikalas.
Vladimiras: Ar jūsų karjeroje buvo atvejų, kai problema, kuri atrodė išspręsta, staiga virto katastrofa, ar paaiškėjo, kad ši problema buvo neišsprendžiama? Pavyzdžiui, teoriškai galite apskaičiuoti bet kurį skaičių arba nustatyti, ar bet kuris skaičius yra pirminis. Tačiau praktiškai tai gali būti sunku padaryti naudojant dabartinę aparatinę įrangą, sunku nustatyti skaičius. Ar tau kas nors panašaus nutiko?
Michael: Iš karto nieko panašaus neprisimenu. Buvo atvejų, kai man atrodė, kad tam tikroje srityje nebėra ką veikti, bet tada ten atsitiko kažkas naujo ir įdomaus. Pavyzdžiui, maniau, kad neribotos eilės zona jau pasiekė brandą. Po kelių MNS eilės patobulinimų nieko daug nebeįvyko. Ir tada Morrisonas (Adamas Morrisonas) ir Afekas (Yehuda Afek) išrado . Tapo aišku, kad galima neribota kelių gijų eilė, kur dažniausiai kritiniame kelyje būdavo tik parnešimo ir padidinimo instrukcija. Ir tai leido pasiekti daug geresnių rezultatų. Tai nereiškia, kad mes nežinome, kad paimti ir didinti yra labai naudingas dalykas. Devintojo dešimtmečio pabaigoje Erikas Freudenthalis apie tai rašė savo darbe apie Ultracomputer kartu su Allanu Gottliebu, tačiau tai buvo apie ribotas eiles. Morrisonas ir Afekas neribotoje eilėje galėjo naudoti paimti ir padidinti.
Naujos architektūros. Ar transakcinės atminties pergalė arti?
Vladimiras: Ar ieškote naujų architektūrinių sprendimų, kurie galėtų būti naudingi algoritmams?
Michael: Žinoma, yra daug dalykų, kuriuos norėčiau įgyvendinti.
Vladimiras: Pavyzdžiui, kokios rūšies?
Michael: Visų pirma, keli paprasti aparatinės įrangos lygio operacijų atminties plėtiniai Intel ir IBM procesoriuose. Visų pirma norėčiau, kad su sandoriais nesusijusi apkrova ir parduotuvė, kuri ką tik atsirado, būtų nedelsiant pasiekiama atliekant operacijas. Jie iš karto veda į kilpas atsitinka prieš seką, todėl gali būti sudėtinga. Tačiau jei išlaikote abstrakcijos sluoksnius, yra daug labai įdomių dalykų, kuriuos galite padaryti už sandorio ribų. Nežinau, kaip sunku būtų tai įgyvendinti, bet būtų labai naudinga.
Kitas naudingas dalykas yra talpyklos įkėlimas iš nuotolinės atminties. Manau, anksčiau ar vėliau tai bus padaryta. Ši technologija leis sukurti sistemas su išskaidyta atmintimi. Galima būtų laikyti, tarkime, 100 terabaitų nepastovios atminties stove, o pati operacinė sistema dinamiškai nuspręstų, kurios tos atminties sekcijos turi atitikti fizinę procesorių adresų erdvę. Tai būtų itin naudinga debesų kompiuterijai, nes leistų dideliems atminties kiekiams atlikti užduotis, kurioms to reikia. Manau, kas nors tai padarys.
Виталий: Baigdamas kalbėti apie operacijų atmintį, turiu dar vieną klausimą šia tema. Ar operacijų atmintis galiausiai pakeis standartines kelių gijų duomenų struktūras?
Michael: Ne. Sandoriai yra spekuliacinis mechanizmas. Programavimo lygmenyje tai yra atominės spynos, tačiau viduje tai yra spėlionės. Toks prognozavimas veikia, jei dauguma spėjimų yra teisingi. Todėl operacijų atmintis gerai veikia, kai gijos beveik nesąveikauja viena su kita, ir jums tereikia įsitikinti, kad sąveikos nėra. Bet jei pranešimas prasideda tarp gijų, operacijos yra mažai naudingos. Leiskite paaiškinti, mes kalbame apie atvejį, kai sandoriai yra apvynioti aplink visą atominę operaciją. Jie vis dar gali būti sėkmingai naudojami kaip kelių gijų duomenų struktūrų komponentai. Pavyzdžiui, jei jums reikia trijų žodžių CAS ir jums reikia susieti tris mažus dalykus iš tikrųjų kelių gijų algoritmo, kuris vienu metu veikia su dvidešimt gijų, viduryje. Apskritai operacijos gali būti naudingos, tačiau jos nepanaikins poreikio tinkamai sukurti kelių gijų duomenų struktūras.
Nekintamoji atmintis, Optane DIMM, itin greiti įrenginiai.
Виталий: Paskutinis dalykas, apie kurį norėčiau pakalbėti, yra jūsų dabartinio tyrimo tema: nepastovi atmintis. Ko galime tikėtis šioje srityje artimiausiu metu? Galbūt žinote kokių nors veiksmingų diegimų, kurie jau egzistuoja?
Michael: Nesu aparatūros ekspertas, žinau tik tai, ką skaitau žiniose ir ką man sako kolegos. Visi jau girdėjo, kad „Intel“ parduoda , kurių skaitymo delsa yra 3 kartus ir rašymo delsa 10 kartų didesnė nei dinaminės RAM. Netrukus jų bus galima įsigyti labai didelės apimties versijomis. Juokinga pagalvoti, kad galėtumėte turėti nešiojamąjį kompiuterį su kelių terabaitų baitais adresuojamos RAM. Tikėtina, kad po 10 metų nuspręsime panaudoti šią naują technologiją, kadangi naudojame DRAM – tereikia padidinti garsumą. Tačiau energetinės nepriklausomybės dėka mums atsiveria visiškai naujos galimybės. Galime iš esmės pakeisti saugyklos krūvą, kad nebūtų atskirta tarp baitais adresuojamos darbinės atminties ir blokinės struktūros nuolatinės atminties. Taigi, mums nereikės serializuoti visko, ką reikia perkelti iš vienos programos paleidimo į kitą į blokinės struktūros failus. Iš to galime išvesti daug svarbių principų, turinčių įtakos operacinėms sistemoms, vykdymo aplinkoms ir paskirstytoms duomenų saugykloms. Šioje srityje labai įdomu dirbti. Asmeniškai man sunku nuspėti, prie ko visa tai prives, bet problemos čia labai įdomios. Čia gali būti revoliucinių pokyčių, ir jie labai natūraliai išplaukia iš darbo su daugiasriegiu ryšiu, nes gedimų atkūrimas yra "daugiagijinis" procesas šalia įprasto sistemos veikimo.
Antra pagrindinė tema, su kuria šiuo metu dirbu, yra itin greitų įrenginių valdymas ir saugi prieiga prie įrenginių iš vartotojo erdvės su sistemine politikos kontrole. Pastaraisiais metais pastebima tendencija perkelti prieigą prie įrenginio į vartotojo erdvę. Tai daroma todėl, kad TCP-IP branduolio dėklas negali veikti ant tinklo sąsajos, kuriai reikia naujo paketo kas 5 mikrosekundes, jis tiesiog neatsiliks. Todėl gamintojai suteikia tiesioginę prieigą prie įrenginių. Tačiau tai reiškia, kad operacinė sistema praranda proceso kontrolę ir negali suteikti tinkamos prieigos prie įrenginio konkuruojančioms programoms. Mūsų tyrimų grupė mano, kad šio trūkumo galima išvengti. Šį mėnesį USENIX ATC pateiksime straipsnį apie tai. Tai susiję su darbu, susijusiu su patvarumu, nes ilgaamžė baitais adresuojama nuolatinė atmintis iš esmės yra įrenginys su itin greita įvestimi / išvestimi, kurią reikia pasiekti vartotojo erdvėje. Šis tyrimas leidžia taikyti naujus požiūrius į mikrobranduolius, egzokernelius ir kitus tradicinius bandymus saugiai perkelti funkcijas iš OS branduolio į vartotojo erdvę.
Vladimiras: Baitais adresuojama atmintis yra puiki, tačiau yra fizinis apribojimas – šviesos greitis. Tai reiškia, kad sąveikaujant su įrenginiu neišvengiamai bus delsa.
Michael: Visiškai teisus.
Vladimiras: Ar užteks pajėgumų susidoroti su naujais krūviais?
Michael: Tai puikus klausimas, bet man bus sunku atsakyti. Idėja apdoroti atmintyje gyvavo gana ilgą laiką, ji yra labai įdomi, bet ir labai sudėtinga. Šioje srityje nedirbau, bet būtų puiku, jei ten būtų padaryta kokių nors atradimų. Bijau, kad neturiu ką daugiau pridurti.
Vladimiras: Yra dar viena problema. Naujų, žymiai didesnių RAM kiekių bus neįmanoma sutalpinti į CPU. Todėl dėl fizinių apribojimų ši RAM turi būti izoliuota.
Michael: Viskas priklauso nuo integrinių grandynų gamybos defektų skaičiaus. Jei būtų įmanoma sukurti puslaidininkines plokšteles visiškai be defektų, tada iš jų būtų galima padaryti visą mikroschemą. Tačiau dabar mes nežinome, kaip padaryti, kad mikroschemos būtų didesnės nei pašto ženklai.
Vladimiras: Bet vis tiek kalbame apie didžiulius dydžius, apie centimetrus. Tai neišvengiamai turi įtakos delsai.
Michael: Taip. Dėl šviesos greičio nieko nepadarysi.
Vladimiras: Deja.
Kita didelė tendencija. Dvigubos duomenų struktūros. Hidra.
Виталий: Kiek suprantu, labai greitai pagauni naujas tendencijas. Jūs buvote vienas pirmųjų, pradėjusių dirbti operacinėje atmintyje, ir vienas pirmųjų, pradėjusių dirbti su nepastoviąja atmintimi. Kaip manote, kokia bus kita didelė tendencija? O gal tai paslaptis?
Michael: Jei atvirai, aš nežinau. Tikiuosi pastebėsiu, kai atsiras kažkas naujo. Man pačiam nepasisekė sugalvoti jokios naujos srities, bet šiek tiek pasisekė ir gana anksti galėjau pradėti dirbti naujose, kitų sukurtose srityse. Tikiuosi, man pavyks tai padaryti ateityje.
Aleksejus: Paskutinis šio interviu klausimas bus apie jūsų pasirodymą „Hydra“ ir jūsų veiklą mokykloje. Jei gerai suprantu, tai mokykloje pranešimas bus apie beblokuojančius algoritmus, o konferencijoje apie dvigubas duomenų struktūras. Ar galėtumėte pasakyti keletą žodžių apie šias ataskaitas?
Michael: Iš dalies šias temas jau palietėme su jumis šiame interviu. Tai apie darbą, kurį dirbau su savo mokiniu Billu Schereriu. Jis parašė apie tai disertaciją, o Dougas Lee taip pat prisidėjo prie jo, ir galiausiai jis tapo daugelio gijų sinchroninių eilių „Java“ bibliotekoje dalimi. Tarkime, kad duomenų struktūra skaitoma ir įrašoma be blokavimo, tai yra, kiekviena operacija turi ribotą instrukcijų skaičių kritiniame kelyje. Jei bandote pašalinti duomenis iš tuščio konteinerio arba bandote pašalinti tam tikrus duomenis, kurių nėra šiame konteineryje, iš karto būsite informuoti, kad to padaryti negalima. Tačiau toks elgesys gali būti nepriimtinas, jei gijai tikrai reikia šių duomenų. Tada pirmas dalykas, kuris ateina į galvą, yra sukurti kilpą, kuri nuolat klaus, ar atsirado reikiami duomenys. Bet tada kišasi visi kiti. Be to, taikydami šį metodą galite palaukti 10 minučių, tada ateis kita gija, kuri netyčia pirmiausia gaus reikiamus duomenis. Dvigubos duomenų struktūros vis dar neturi užraktų, tačiau jie leidžia gijomis tinkamai palaukti. Sąvoka „dviguba“ reiškia, kad struktūroje yra arba duomenų, arba duomenų užklausos, pavadinkime juos antiduomenimis. Taigi, jei bandysite ką nors paimti iš tuščio konteinerio, į konteinerį bus įdėta užklausa. Dabar siūlas gali laukti užklausos netrukdydamas niekam kitam. Be to, duomenų struktūra užklausoms priskiria prioritetus, kad gavus jas perduotų tinkamam asmeniui. Rezultatas yra neužrakinamas mechanizmas, kuris vis dar turi formalias specifikacijas ir gerą praktinį veikimą.
Aleksejus: Ko tikitės iš šios duomenų struktūros? Ar tai pagerins našumą visais įprastais atvejais, ar geriau tinka tam tikroms situacijoms?
Michael: Tai naudinga, jei, pirma, jums reikia konteinerio be užrakinimo, o antra, reikia palaukti situacijoje, kai reikia gauti duomenis iš konteinerio, kurio jame nėra. Kiek man žinoma, mūsų sistema užtikrina optimalų elgesį, kai įvykdomos šios dvi sąlygos. Todėl tokiais atvejais rekomenduoju jį naudoti. Pagrindinis neužrakinamų duomenų struktūrų pranašumas yra tai, kad jos išvengia našumo problemų. O laukimas yra labai svarbus daugelyje algoritmų, jei duomenys perduodami iš vienos gijos į kitą.
Виталий: Patikslinu: ar mokykloje ir konferencijoje kalbėsi apie tą patį?
Michael: Mokykloje apskritai apie kelių gijų duomenų struktūras, kurių pagrindiniai principai išdėstyti pamokos pradžioje. Manau, kad auditorija žino, kas yra siūlai, ir yra susipažinę su spynomis. Remdamasis šiomis pagrindinėmis žiniomis, kalbėsiu apie neužrakintas duomenų struktūras. Pateiksiu svarbiausių šios srities problemų apžvalgą, paliesiu tokias temas kaip atminties valdymas. Nemanau, kad bus nieko sudėtingesnio už MS eilę.
Aleksejus: Ar planuojate pamokos pabaigoje mokyti apie dvigubas duomenų struktūras?
Michael: Paminėsiu juos, bet neskirsiu jiems daug laiko. Hidros ataskaita bus skirta jiems. Jis apims projektą, kuris galiausiai pateko į „Java“, taip pat darbą su Joe Israelevičiumi kuriant dvigubą LCRQ eilės variantą ir beveik universalų dvigubų duomenų struktūrų dizainą.
Aleksejus: Taigi paskaitą mokykloje galima rekomenduoti pradedantiesiems, o paskaitą apie dvigubas duomenų struktūras Hidra - jau turintiems patirties?
Michael: Pataisykite mane, jei aš klystu, bet „Hydra“ auditorija bus gana įvairi, įskaitant daugybę „Java“ ekspertų ir apskritai žmonių, kurie nėra konkrečiai susiję su kelių gijų programavimu.
Виталий: Taip tai tiesa.
Aleksejus: Bent jau taip tikimės.
Michael: Šiuo atveju susidursiu su ta pačia problema, su kuria pradėjome šį interviu: kaip padaryti, kad reportažas būtų pakankamai turtingas techninėmis detalėmis ir būtų prieinamas visiems klausytojams.
Виталий: Ar skaitysite pranešimą taip pat, kaip skaitysite paskaitas? Tai yra kalbėtis su publika ir prisitaikyti prie situacijos?
Michael: Bijau, kad taip neišeis, nes ataskaitoje bus skaidrės. Skaidrės yra svarbios, kai klausytojai iš pradžių kalba skirtingomis kalbomis. Daugeliui žmonių bus sunku mane suprasti angliškai, ypač jei kalbu per greitai. Pasirinkau šias temas, nes paprašė manęs pakalbėti apie neužrakinamas duomenų struktūras SPTDC mokykloje; ir tada man prireikė pranešimo Java vartotojų grupės konferencijai ir norėjau pasirinkti kažką, kas būtų įdomu būtent Java programuotojams. Lengviausias būdas buvo kalbėti apie tuos dalykus Java bibliotekoje, kuriuos vienaip ar kitaip turėjau ranka.
Aleksejus: Manome, kad „Hydra“ auditorija jau ką nors žino apie programavimą be užrakto ir galbūt turi patirties šioje srityje. Bet tai tik prielaida, situacija paaiškės pačioje konferencijoje. Bet kokiu atveju, ačiū už jūsų laiką. Esu tikras, kad interviu mūsų skaitytojams bus labai įdomus. Labai ačiū!
Виталий: Ačiū.
Michael: Man bus malonu susitikti su jumis Sankt Peterburge.
Aleksejus: Mes taip pat turime gražų miestą. Ar esi čia buvęs?
Michael: Ne, aš niekada nebuvau Rusijoje. Bet Sankt Peterburgas visada buvo sąraše vietų, kur dar nebuvau, bet kur labai noriu, tad labai apsidžiaugiau kvietimu.
Aleksejus: Beje, pranešėjams turėsime ekskursijų programą. Labai ačiū už pokalbį ir geros dienos!
Tęsti pokalbį su Michaelu galite konferencijoje „Hydra 2019“, kuri vyks 11 metų liepos 12-2019 dienomis Sankt Peterburge. Jis ateis su ataskaita . Bilietus galima įsigyti .
Šaltinis: www.habr.com
