- som professor i datavetenskap vid University of Rochester, och vid sitt hem University of WisconsinâMadison var han dekanus i fem Ă„r. Han forskar och undervisar studenter om parallell och distribuerad programmering och sprĂ„kdesign.
VÀrlden kÀnner till Michael frÄn lÀroboken , hur Àr det med jobbet fick Dijkstra-priset som ett av de mest kÀnda inom omrÄdet distribuerad datoranvÀndning. Du kanske ocksÄ kÀnner honom som författaren till just den algoritmen .
Tillsammans med Doug Lee utvecklade han de icke-blockerande algoritmerna och synkrona köerna som driver Java-biblioteken. Genomförande i JavaSE 6 förbÀttrade prestandan med 10 gÄnger ThreadPoolExecutor.
InnehÄll:
- Tidig karriÀr, University of Rochester. Projekt Charlotte, Lynx sprÄk;
- IEEE Scalable Coherent Interface, MCS-lÄsning;
- Ăverlevnad i en stĂ€ndigt förĂ€nderlig vĂ€rld;
- Blir eleverna dummare? Globala trender, internationalisering;
- Effektivt arbete med studenter;
- Hur man hÀnger med i utarbetandet av nya kurser och böcker;
- LÀnkar mellan nÀringsliv och akademi;
- Praktisk implementering av idéer. MCS, MS, CLH, JSR 166, arbetar med Doug Lee och mer;
- Transaktionsminne;
- Nya arkitekturer. Segern för transaktionsminnet Àr nÀra;
- Icke-flyktigt minne, Optane DIMM, ultrasnabba enheter;
- NĂ€sta stora trend. Dubbla datastrukturer. Hydra.
Intervjuer genomförs av:
Vitaly Aksenov â för nĂ€rvarande postdoc vid IST Ăsterrike och medlem av avdelningen för datorteknik vid ITMO University. Bedriver forskning inom omrĂ„det teori och praktik av konkurrenskraftiga datastrukturer. Innan han arbetade pĂ„ IST tog han sin doktorsexamen frĂ„n Paris Diderot University och ITMO University under ledning av professor Peter Kuznetsov.
Alexey Fedorov Àr producent pÄ JUG Ru Group, ett ryskt företag som anordnar konferenser för utvecklare. Alexey deltog i förberedelserna av mer Àn 50 konferenser, och hans CV innehÄller allt frÄn positionen som utvecklingsingenjör pÄ Oracle (JCK, Java Platform Group) till positionen som utvecklare pÄ Odnoklassniki.
Vladimir Sitnikov Àr ingenjör pÄ Netcracker. I tio Är har han arbetat med prestanda och skalbarhet hos NetCracker OS, programvara som anvÀnds av telekomoperatörer för att automatisera processer för hantering av nÀtverk och nÀtverksutrustning. Intresserad av prestandaproblem i Java och Oracle Database. Författare till över ett dussin prestandaförbÀttringar i den officiella PostgreSQL JDBC-drivrutinen.
Tidig karriÀr, University of Rochester. Charlotte-projektet, Lynx-sprÄk.
Alex: Till att börja med ville jag berÀtta att vi alla verkligen Àlskar datavetenskap, datavetenskap och algoritmer i Ryssland. Det Àr rent obscent. Vi har lÀst allt . DÀrför borde den kommande konferensen, skolan och den hÀr intervjun i sig bli vÀldigt populÀr. Vi fick mÄnga frÄgor till den hÀr intervjun frÄn studenter, programmerare och community-medlemmar, sÄ vi Àr mycket tacksamma för denna möjlighet. FÄr datavetenskap samma kÀrlek i USA?
Michael: VÄrt omrÄde Àr sÄ mÄngsidigt, det har sÄ mÄnga riktningar och det pÄverkar samhÀllet pÄ sÄ mÄnga olika sÀtt att det Àr svÄrt för mig att ge dig ett definitivt svar. Men faktum Àr att det har Ästadkommit enorma förÀndringar inom nÀringslivet, industrin, konsten och samhÀllet i stort under de senaste 30 Ären.
ĐĐžŃалОĐč: LĂ„t oss börja med nĂ„got avlĂ€gset. PĂ„ mĂ„nga universitet finns det nĂ„got som specialiserar sig inom ett visst omrĂ„de. För Carnegie Mellon University Ă€r detta parallell berĂ€kning, för MIT Ă€r det kryptografi, robotar och multithreading. Finns det en sĂ„dan specialisering vid University of Rochester?
Michael: För att vara Ă€rlig skulle jag sĂ€ga att CMU och MIT Ă€r specialiserade pĂ„ alla omrĂ„den. VĂ„r avdelning har alltid Ă€gnat mest uppmĂ€rksamhet Ă„t artificiell intelligens. HĂ€lften av de personer som arbetar för oss Ă€r engagerade i AI eller interaktion mellan mĂ€nniska och dator â denna andel Ă€r högre Ă€n pĂ„ andra avdelningar, och har alltid varit sĂ„. Men nĂ€r jag gick pĂ„ universitetet hade jag inga kurser i AI, och jag jobbade aldrig inom det hĂ€r omrĂ„det. SĂ„ min avdelning Ă€r specialiserad pĂ„ ett problem som jag inte har nĂ„got att göra med. Trösten Ă€r att det nĂ€st viktigaste problemet för vĂ„r avdelning Ă€r parallell och flertrĂ„dig programmering, det vill sĂ€ga min specialisering.
ĐĐžŃалОĐč: Du började arbeta inom datavetenskap nĂ€r omrĂ„det flertrĂ„dad programmering precis vĂ€xte fram. Listan över dina publikationer visar att dina första verk handlade om ett ganska brett spektrum av frĂ„gor: minneshantering i flertrĂ„dade system, distribuerade filsystem, operativsystem. Varför sĂ„dan mĂ„ngsidighet? Har du försökt hitta din plats i forskarsamhĂ€llet?
Michael: Som student deltog jag i vid University of Wisconsin, dĂ€r ett av de första distribuerade operativsystemen utvecklades. DĂ€r arbetade jag tillsammans med Rafael Finkel () och Marvin Solomon (). Min avhandling Ă€gnades Ă„t utvecklingen av ett sprĂ„k för systemprogramvara för distribuerade system â nu har alla glömt det, och tack och lov. Jag skapade programmeringssprĂ„ket Lynx, som var tĂ€nkt att göra det lĂ€ttare att skapa servrar för ett löst kopplat distribuerat operativsystem. Eftersom jag pĂ„ den tiden frĂ€mst Ă€gnade mig Ă„t operativsystem antog jag att min karriĂ€r frĂ€mst skulle vara kopplad till dem. Men Rochester var ett mycket litet universitet, och pĂ„ grund av detta interagerade de olika grupperna dĂ€r mycket nĂ€ra varandra. Det fanns inte ett dussin andra operativsystem-folk dĂ€r för mig att prata med, sĂ„ alla mina kontakter var med mĂ€nniskor som arbetade inom helt andra omrĂ„den. Jag gillade det verkligen, att vara en allrounder Ă€r en stor fördel för mig. Om vi ââpratar specifikt om flertrĂ„diga datastrukturer och synkroniseringsalgoritmer, sĂ„ började jag arbeta med dem helt av en slump.
IEEE Scalable Coherent Interface, MCS-lÄsning.
ĐĐžŃалОĐč: Kan du berĂ€tta lite mer om detta?
Michael: Det hÀr Àr en rolig historia som jag aldrig tröttnar pÄ att berÀtta för alla. Det hÀnde pÄ en konferens i Boston - detta var i slutet av 80-talet eller början av 90-talet. John Mellor-Crummey (), en examen frÄn vÄr fakultet. Jag kÀnde honom, men vi hade inte gjort gemensam forskning tidigare. Mary Vernon () frÄn Wisconsin höll ett föredrag om ett multiprocessorsystem som de utvecklade i Wisconsin: . Denna Multicube hade en synkroniseringsmekanism pÄ hÄrdvarunivÄ som kallas Q on Sync Bit, och senare döptes den om till Q pÄ Lock Bit eftersom det lÀt som Colby cheese, vilket var en ordlek. Om du Àr intresserad av multithreading-mekanismer vet du förmodligen att Colby sÄ smÄningom blev synkroniseringsmotorn för IEEE Scalable Coherent Interface-standarden. Detta var en lÄsmekanism som skapade pekare frÄn en cache till en annan pÄ hÄrdvarunivÄ sÄ att varje lÄshÄllare visste vems tur det var. NÀr John och jag hörde talas om detta tittade vi pÄ varandra och sa: varför gör vi det hÀr pÄ hÄrdvarunivÄ? Kan inte samma sak uppnÄs med jÀmför-och-byt? Vi tog en av anteckningsböckerna som lÄg i klassrummet och klottrade pÄ den , medan Mary fortsatte sin rapport. DÀrefter implementerade vi det, experimenterade, idén visade sig vara framgÄngsrik och vi publicerade artikeln. PÄ den tiden, för mig, verkade detta Àmne bara vara en rolig distraktion, varefter jag planerade att ÄtergÄ till operativsystem. Men sedan uppstod ett annat problem i samma linje, och sÄ smÄningom blev synkronisering, multitrÄdning och datastrukturer min specialitet. Som du kan se hÀnde allt detta av en slump.
ĐĐžŃалОĐč: Jag har varit bekant med MCS-blockering lĂ€nge, men tills nu visste jag inte att det var ditt arbete, och förstod inte att det var en akronym för dina efternamn.
Hur överlever man i en stÀndigt förÀnderlig vÀrld?
Alex: Jag har en frÄga om ett relaterat Àmne. För 30 eller 40 Är sedan var det mer frihet i olika specialiteter. Om du vill börja en karriÀr inom multithreading eller distribuerade system Àr du vÀlkommen, om du vill komma in i operativsystem, inga problem. Inom varje omrÄde fanns mÄnga öppna frÄgor och fÄ experter. SnÀva specialiseringar har nu vuxit fram: det finns inga bara experter pÄ operativsystem i allmÀnhet, det finns specialister pÄ enskilda system. Det Àr samma sak med multithreading och distribuerade system. Men problemet Àr att vÄra liv inte Àr oÀndliga, alla kan bara Àgna nÄgra decennier Ät forskning. Hur överlever man i denna nya vÀrld?
Michael: Vi Àr inte speciella i detta avseende, samma sak hÀnde en gÄng i andra omrÄden. Jag hade turen att jag började arbeta inom datavetenskap nÀr fÀltet var i "tonÄren". En del grunder hade redan lagts, men allt var fortfarande vÀldigt omoget. Denna möjlighet kommer inte ofta. Elektroteknik har funnits vÀldigt lÀnge, fysik Ànnu lÀngre, matematik nÀstan sedan tidernas begynnelse. Men det betyder inte att ingen lÀngre gör intressanta upptÀckter inom matematiken. Det finns fortfarande mÄnga öppna problem, men samtidigt behöver mer lÀras. Du har rÀtt i att konstatera att det nu finns mÄnga fler specialiseringar Àn vad det fanns tidigare, men detta betyder bara att vi befinner oss i samma situation som de flesta andra omrÄden av mÀnsklig verksamhet.
Alex: Jag Àr intresserad av den mer praktiska aspekten av frÄgan hÀr. Jag har en matematikbakgrund och under mina studier har jag ofta varit pÄ konferenser och arbetat med olika vetenskapliga Àmnen. Jag upptÀckte att ingen i publiken förstod mina rapporter, och pÄ samma sÀtt var andra mÀnniskors rapporter bara förstÄeliga för dem sjÀlva. SÄ Àr det inte i Àmnen pÄ hög nivÄ, men sÄ fort du börjar fördjupa dig i nÄgot kan publiken inte lÀngre hÀnga med dig. Hur hanterar du detta?
Michael: Inte alltid framgÄngsrik. Jag utarbetade nyligen en rapport dÀr jag gick för djupt in pÄ tekniska detaljer. Allt eftersom samtalet fortskred stod det klart att de flesta av publiken inte förstod mig, sÄ jag var tvungen att anpassa mig till situationen i farten. Bilderna gick inte att Àndra, sÄ det blev inte sÄ bra - sÄ generellt sett försöker jag att inte anvÀnda bilder. Sammantaget Àr mitt rÄd att ta hÀnsyn till din publik. Du mÄste veta vem du pratar med, vad deras kunskapsnivÄ Àr och vad de behöver höra för att uppskatta ditt arbete.
ĐĐžŃалОĐč: Kan du ge oss en hint om vad den hĂ€r förelĂ€sningen handlade om?
Michael: För att vara Àrlig, skulle jag föredra att inte utvidga detta Àmne för att lÀmna personerna i frÄga anonyma. PoÀngen Àr att vi ofta gÄr för djupt in i det problem vi arbetar med, sÄ det blir svÄrt för oss att i början av talet förklara varför problemet Àr intressant och viktigt och hur det relaterar till frÄgor som publiken redan vet. Enligt mina observationer har eleverna svÄrast att lÀra sig denna fÀrdighet. Och detta var ocksÄ den svaga punkten i mitt senaste betÀnkande. En ordentligt strukturerad rapport bör redan frÄn början hitta kontakt med publiken, förklara för dem exakt vad problemet Àr och hur det relaterar till Àmnen som redan Àr kÀnda för den. Hur teknisk denna introduktion Àr beror pÄ publiken. Om den Àr helt brokig kan rapporten vara flerstegs. Introduktionen bör vara tillgÀnglig för alla, och i slutet kanske verket inte kan hÀnga med dig, men personer som Àr relativt bekanta med ditt omrÄde kommer att kunna lista ut det.
Blir eleverna dummare? Globala trender, internationalisering.
Alex: Du har observerat elever i flera decennier. Blir eleverna dummare eller smartare frÄn decennium till decennium eller Är till Är? I Ryssland klagar professorer stÀndigt pÄ att studenterna blir dummare för varje Är, och det Àr verkligen inte klart vad de ska göra Ät det.
Michael: Man kan verkligen höra mycket negativitet frÄn oss gamla. Undermedvetet har vi en tendens att förvÀnta oss att eleverna ska ta till sig alla de 30 Ärs erfarenhet som vi redan har. Om jag har en djupare förstÄelse Àn vad jag hade 1985, varför har inte eleverna det? Förmodligen för att de Àr 20 Är, vad tror du? Jag tror att de mest betydande förÀndringarna under de senaste decennierna har varit i den demografiska sammansÀttningen: vi har nu betydligt fler internationella studenter, med undantag för kanadensare. Tidigare var det mÄnga kanadensare eftersom vi ligger vÀldigt nÀra den kanadensiska grÀnsen och studenter dÀrifrÄn kan resa hem pÄ helgerna. Men nu finns det mÄnga bra universitet i Kanada, och kanadensare föredrar att studera hÀr, betydligt fÀrre av dem kommer till USA.
Alex: Tror du att detta Àr en lokal trend eller en global?
Michael: Jag kommer inte ihÄg exakt vem, men nÄgon sa att vÀrlden Àr platt. VÄrt omrÄde har blivit mycket mer internationellt. Tidigare hölls de uteslutande inom USA, sedan bestÀmde de sig för att hÄlla dem en gÄng vart fjÀrde Är i andra lÀnder, och nu hÄlls de över hela vÀrlden. Dessa förÀndringar pÄverkade Ànnu mer , eftersom det alltid har varit en mer internationell organisation Àn ACM. Och det finns programstolar frÄn Kina, Indien, Ryssland, Tyskland och mÄnga andra lÀnder, för det hÀnder mycket överallt nu.
Alex: Men förmodligen finns det nÄgra negativa aspekter av en sÄdan internationalisering?
Michael: Jag skulle sÀga att alla negativa aspekter inte relaterar till teknik, utan till politik. En gÄng i tiden var huvudproblemet det faktum att USA stal de smartaste och mest begÄvade mÀnniskorna frÄn lÀnder runt om i vÀrlden. Och nu Àr huvudproblemet det politiska spelet mellan olika lÀnder kring visum och immigration.
Alex: Det vill sÀga barriÀrer och sÄnt. Kusten Àr klar.
vladimir: Personligen Àr jag intresserad av vilket förhÄllningssÀtt du tar nÀr du undervisar i ett nytt Àmne för elever. Det finns olika alternativ: du kan först av allt försöka inspirera dem att prova nÄgot nytt, eller sÄ kan du Àgna mer uppmÀrksamhet Ät detaljerna i hur en viss teknik fungerar. Vad föredrar du?
Effektivt arbete med elever
Alex: Och hur hittar man den jÀkla balansen mellan ettan och tvÄan?
Michael: Problemet Àr att klasserna inte alltid gÄr som jag skulle vilja. Jag brukar ge eleverna lÀsmaterial i förvÀg sÄ att de fördjupar sig i det, förstÄr det efter bÀsta förmÄga och formulerar frÄgor om de delar som de inte kunde förstÄ. Sedan kan du i klassen fokusera pÄ de svÄraste ögonblicken och utforska dem tillsammans. Det Àr sÄ jag gillar att hÄlla klasser mest. Men med tanke pÄ den belastning som nu ligger pÄ eleverna kan jag inte alltid se till att de förbereder sig i förvÀg. Som ett resultat mÄste du Àgna mycket mer tid Ät den allmÀnna ÄterberÀttelsen av materialet Àn du skulle vilja. Trots detta försöker jag hÄlla vÄra klasser interaktiva. Annars Àr det lÀttare att spela in en video en gÄng som eleverna sedan kan titta pÄ hemma. PoÀngen med levande klasser Àr mÀnsklig interaktion. I klassen föredrar jag att anvÀnda krita och en svart tavla snarare Àn diabilder, utom i vissa fall nÀr ett diagram Àr för komplext för att avbilda pÄ tavlan. Tack vare detta behöver jag inte hÄlla mig till en stel lektionsplan. Eftersom det inte finns nÄgon strikt ordning i vilken jag ger materialet, gör detta att jag kan skrÀddarsy det till publiken beroende pÄ vilka frÄgor jag fÄr. I allmÀnhet försöker jag göra klasserna sÄ interaktiva som möjligt, sÄ att materialet jag presenterar beror pÄ de frÄgor som stÀlls till mig.
vladimir: Det Ă€r toppen. Enligt min erfarenhet Ă€r det ganska svĂ„rt att fĂ„ lyssnare att stĂ€lla frĂ„gor. Ăven om du i förvĂ€g ber om att fĂ„ stĂ€lla nĂ„gra frĂ„gor, hur dumma eller smarta Ă€n Ă€r, sĂ„ Ă€r de fortfarande tysta. Hur hanterar du detta?
Michael: Du kommer att skratta, men om du stÄr tyst tillrÀckligt lÀnge kommer alla förr eller senare att bli obekvÀma och nÄgon stÀller en frÄga. Eller sÄ kan du stÀlla en enkel teknisk frÄga med ett ja eller nej svar för att avgöra om folk förstÄr vad som just sas. Finns det till exempel ett datarace i exemplet ovan? Vem tror det? Vem tror inte? Vem förstÄr ingenting alls, för totalt gick bara hÀlften av hÀnderna upp?
ĐĐžŃалОĐč: Och om du svarat fel sĂ„ blir du utslĂ€ngd ur klassen :)
Michael: Om du inte har svarat pÄ nÄgot bör du stÀlla en frÄga. Jag mÄste förstÄ exakt vad eleven behöver veta för att svara pÄ frÄgan jag just stÀllde. Jag behöver dem för att hjÀlpa mig att hjÀlpa dem. Jag Àr redo att anpassa mig till dem sÄ att de förstÄr problemet. Men om jag inte vet vad som hÀnder i deras huvuden sÄ kan jag inte göra det. Och om man inte ger eleverna ro under tillrÀckligt lÄng tid, ibland stÀller de i slutÀndan de rÀtta frÄgorna, det vill sÀga sÄdana som gör att jag kan se exakt vad som pÄgÄr i elevernas huvuden.
Alex: Leder dessa frĂ„gor ibland till idĂ©er som du sjĂ€lv inte hade tĂ€nkt pĂ„ tidigare? Ăr de ovĂ€ntade? TillĂ„ter de dig att se pĂ„ ett problem i ett nytt ljus?
Michael: Det finns frÄgor som öppnar för ett nytt sÀtt att presentera material. Det finns ofta frÄgor som leder till intressanta problem som jag inte tÀnkt prata om. Elever sÀger ofta till mig att jag har en tendens att gÄ utanför Àmnet nÀr detta hÀnder. Och enligt dem Àr detta vÀldigt ofta den mest intressanta delen av lektionen. Mycket sÀllan, bara nÄgra fÄ gÄnger, stÀllde eleverna frÄgor som ledde till en ny riktning i forskningen och vÀxte till en artikel. Detta hÀnder mycket oftare i samtal med elever snarare Àn under lektionerna, men ibland hÀnde det under lektionerna.
Alex: SÄ eleverna stÀllde frÄgor till dig utifrÄn vilka det sedan var möjligt att publicera en artikel?
Michael: Ja.
ĐĐžŃалОĐč: Hur ofta har du dessa samtal med elever? NĂ€r vill de lĂ€ra sig mer Ă€n vad som behandlades under lektionen?
Michael: Med mina doktorander - hela tiden. Jag har ungefĂ€r 5 eller 6 av dem, och vi diskuterar nĂ„got med dem hela tiden. Och samtal av det hĂ€r slaget med elever som helt enkelt gĂ„r pĂ„ mina lektioner Ă€r inte sĂ€rskilt vanliga. Ăven om jag önskar att detta hĂ€nde oftare. Jag misstĂ€nker att de helt enkelt Ă€r rĂ€dda för att komma till fakulteten under kontorstid. Varje termin lyckas vissa elever övervinna denna psykologiska barriĂ€r, och det Ă€r alltid vĂ€ldigt intressant att prata med dem efter lektionen. Det Ă€r sant att om alla elever var lika modiga skulle jag helt enkelt inte ha tillrĂ€ckligt med tid. SĂ„ kanske allt fungerar som det ska.
ĐĐžŃалОĐč: Hur lyckas du hitta tid att kommunicera med eleverna? SĂ„ vitt jag vet har lĂ€rare i USA mycket arbete - att söka bidrag och liknande.
Michael: Ărligt talat, att arbeta med studenter Ă€r den aspekt av mitt jobb som jag tycker mest om. SĂ„ jag har tillrĂ€ckligt med motivation för detta. Den mesta tiden jag spenderar pĂ„ mitt kontor gĂ„r Ă„t till möten av alla slag. Det Ă€r sommar nu, sĂ„ mitt schema Ă€r mindre spĂ€ckat, men under lĂ€sĂ„ret, varje dag frĂ„n 9 till 17 har jag allt packat. Forskningsarbete, recensioner, anslag â till allt detta finns bara kvĂ€llar och helger.
Hur man hÀnger med i förberedelserna av nya kurser och böcker.
Alex: FortsÀtter du för nÀrvarande att undervisa i nÄgra kurser som du har undervisat lÀnge? NÄgot som en introduktion till datavetenskap.
Michael: Det första som kommer att tÀnka pÄ hÀr Àr en kurs i programmeringssprÄk.
Alex: Hur annorlunda Àr dagens version av den hÀr kursen frÄn vad den var för 10, 20, 30 Är sedan? Det som kanske Àr mer intressant hÀr Àr inte detaljerna i en viss kurs, utan de allmÀnna trenderna.
Michael: Min kurs i programmeringssprĂ„k var nĂ„got ovanlig nĂ€r jag skapade den. Jag började lĂ€sa den i slutet av 1980-talet och ersatte min kollega Doug Baldwin (). Ămnet för kursen var bara tangentiellt relaterat till min specialitet, men nĂ€r han slutade var jag den bĂ€sta kandidaten att undervisa i kursen. Jag gillade inte nĂ„gon av lĂ€roböckerna som fanns pĂ„ den tiden, sĂ„ det slutade med att jag skrev lĂ€roboken till den hĂ€r kursen sjĂ€lv. (Redaktörens anmĂ€rkning: vi pratar om boken) Den anvĂ€nds nu pĂ„ mer Ă€n 200 universitet runt om i vĂ€rlden. Mitt tillvĂ€gagĂ„ngssĂ€tt Ă€r ovanligt genom att det medvetet blandar problemen med sprĂ„kdesign och implementering, och lĂ€gger stor vikt vid samspelet mellan dessa aspekter inom alla möjliga omrĂ„den. Det grundlĂ€ggande tillvĂ€gagĂ„ngssĂ€ttet har förblivit oförĂ€ndrat, liksom mĂ„nga grundlĂ€ggande begrepp: abstraktioner, namnutrymmen, modularitet, typer. Men uppsĂ€ttningen sprĂ„k som dessa begrepp demonstreras med har förĂ€ndrats helt. NĂ€r kursen först skapades fanns det mĂ„nga exempel i Pascal, men idag har mĂ„nga av mina elever inte ens hört talas om detta sprĂ„k. Men de kan Swift, Go, Rust, sĂ„ jag mĂ„ste prata om sprĂ„ken som anvĂ€nds idag. Dessutom Ă€r eleverna nu vĂ€l bevandrade i skriptsprĂ„k, men nĂ€r jag började undervisa i den hĂ€r kursen handlade allt om sammanstĂ€llda sprĂ„k. Nu behöver vi mycket material om Python, Ruby och till och med Perl, för det hĂ€r Ă€r vad kod skrivs i dessa dagar, och det hĂ€nder mĂ„nga intressanta saker pĂ„ dessa sprĂ„k, inklusive inom sprĂ„kdesign.
ĐĐžŃалОĐč: DĂ„ kommer min nĂ€sta frĂ„ga att vara relaterad till den föregĂ„ende. Hur ska man hĂ€nga med pĂ„ det hĂ€r omrĂ„det? Jag misstĂ€nker att det krĂ€vs mycket arbete för att uppdatera en sĂ„dan hĂ€r kurs â du mĂ„ste förstĂ„ nya sprĂ„k, förstĂ„ huvudidĂ©erna. Hur gör du det hĂ€r?
Michael: Jag kan inte skryta med att jag alltid lyckas till 100 %. Men för det mesta gör jag bara det som alla andra gör â lĂ€ser internet. Om jag vill förstĂ„ Rust sĂ„ googlar jag det, gĂ„r till Mozilla-sidan och lĂ€ser manualen som finns dĂ€r. Detta Ă€r en del av de saker som hĂ€nder inom kommersiell utveckling. Om vi ââpratar om vetenskap, dĂ„ mĂ„ste du följa rapporterna pĂ„ huvudkonferenserna.
LÀnk mellan nÀringsliv och akademi
ĐĐžŃалОĐč: LĂ„t oss prata om kopplingen mellan nĂ€ringsliv och vetenskaplig forskning. I din lista över verk hittade jag flera artiklar om cachekoherens. Jag förstĂ„r att cachekonsistensalgoritmerna var instabila nĂ€r de publicerades? Eller inte tillrĂ€ckligt utbredd. Hur vanliga var dina idĂ©er i praktiken?
Michael: Jag Àr inte riktigt sÀker pÄ vilka publikationer du pratar om. Jag har gjort en hel del arbete med mina elever Bill Bolosky () och Leonidas Kontotanassis () i början av 1990-talet om minneshantering av Neumann-maskiner. Vid den tiden hade företag Ànnu inte en förstÄelse för hur man korrekt gör ett multiprocessorsystem: Àr det vÀrt att skapa stöd för Ätkomst till fjÀrrminne pÄ hÄrdvarunivÄ, Àr det vÀrt att distribuera minnet, Àr det möjligt att ladda cachen frÄn fjÀrrminne, eller Àr det nödvÀndigt att flytta sidor i operationssalen? Bill och Leonidas arbetade bÄda i det hÀr omrÄdet och utforskade tillvÀgagÄngssÀtt utan fjÀrrcacheladdning. Detta var inte direkt relaterat till cachekoherens, men det var fortfarande arbete med NUMA-minneshantering, och senare vÀxte moderna metoder för sidplacering i moderna operativsystem frÄn detta. Sammantaget gjorde Bill och Leonidas ett viktigt arbete, Àven om det inte var det mest inflytelserika inom detta omrÄde - det fanns mÄnga andra som arbetade med samma sak vid den tiden. Senare arbetade jag med ett Àmne relaterat till cachekoherens i samband med hÄrdvarutransaktionsminne. Gruppen jag arbetade med pÄ detta problem fick till slut flera patent. Det finns nÄgra ganska intressanta idéer bakom dem, men jag tror inte att de kommer att genomföras i praktiken. PÄ ett eller annat sÀtt Àr det svÄrt för mig att bedöma deras lönsamhet.
Alex: I detta avseende en mer personlig frÄga: hur viktigt Àr det för dig att dina idéer omsÀtts i praktiken? Eller tÀnker du inte pÄ det?
Michael: Jag Àlskar att stÀlla den hÀr frÄgan i intervjuer med andra mÀnniskor, sökande eller kandidater som vill gÄ med pÄ fakulteten. Jag tror inte att det finns ett korrekt svar pÄ denna frÄga. MÀnniskor som gör coola saker kan ha vÀldigt olika motivation. Jag attraheras av problem för att jag personligen tycker att de Àr intressanta, inte pÄ grund av deras praktiska fördelar. Men Ä andra sidan, nÀr nÄgon intressant sak fortfarande finner tillÀmpning, gillar jag det verkligen. SÄ det Àr inte lÀtt hÀr. Men i början av mitt arbete drivs jag fortfarande inte av idén om en slutanvÀndning i vÀrlden, utan av idéns harmoni och viljan att utforska den och se vad som kommer av den. Om det i slutÀndan ger praktiska resultat, bra.
Alex: PÄ grund av din utbildning och erfarenhet kan du bÀttre Àn de flesta bedöma vÀrdet av andras idéer. Du kan jÀmföra dem och avgöra vilken som fungerar bÀst med vilken. Jag Àr sÀker pÄ att du har en Äsikt om saker som för nÀrvarande anvÀnds i praktiken av stora tillverkare som Intel. Ur din synvinkel, hur korrekt Àr den kurs som dessa företag tar?
Michael: Ăvning kretsar alltid kring vad som kan vara kommersiellt framgĂ„ngsrikt, det vill sĂ€ga skapa vinst, och det Ă€r bĂ€st att du frĂ„gar nĂ„gon annan om det. Mitt arbete resulterar mest i publikationer och inom omrĂ„det operativsystem utvĂ€rderas de utifrĂ„n prestandaindikatorer: hastighet, energiförbrukning, kodstorlek. Men det föreföll mig alltid som om dessa empiriska resultat lĂ€ggs till artiklar bara för att de ska kunna publiceras, och mĂ€nniskors verkliga motiv för arbete Ă€r estetiska. Forskare utvĂ€rderar lösningar ur ett konstnĂ€rligt perspektiv, de bryr sig om hur eleganta idĂ©erna Ă€r och de försöker skapa nĂ„got bĂ€ttre Ă€n befintliga tillvĂ€gagĂ„ngssĂ€tt. Forskare drivs av personliga, subjektiva, estetiska motiv. Men du kan inte skriva om detta i sjĂ€lva artikeln, det hĂ€r Ă€r inga argument för programkommittĂ©n. Som tur Ă€r Ă€r eleganta lösningar ofta ocksĂ„ snabba och billiga. Ett dussin av mina kollegor och jag diskuterade detta Ă€mne för ungefĂ€r 15 Ă„r sedan och slutade med att skriva en artikel om det. Jag tror att du fortfarande kan hitta den nu, heter den eller nĂ„got liknande, den har mer Ă€n ett dussin författare. Detta Ă€r den enda artikeln dĂ€r jag Ă€r författare tillsammans med , sĂ„ om du gör en sökning pĂ„ hennes namn i min publikationslista hittar du det du behöver. Den talar om att utvĂ€rdera systemforskning och hur viktigt elegans Ă€r.
Alex: SÄ det finns en skillnad mellan standarden pÄ vad som anses vara bra inom vetenskapen och i nÀringslivet. Vetenskapen utvÀrderar prestanda, strömförbrukning, TDP, enkel implementering och mycket mer. Har du möjlighet att bedriva den hÀr typen av forskning vid universitetet? Har du ett laboratorium med olika maskiner och olika arkitekturer dÀr du kan utföra experiment?
Michael: Ja, vÄr avdelning har mÄnga olika intressanta maskiner. Oftast Àr de smÄ, vi har ett litet kluster och mÄnga multiprocessorsystem med olika acceleratorer. Dessutom har campus ett enormt datacenter som betjÀnar forskare frÄn flera dussin olika discipliner. Den har ungefÀr tusen noder och tjugo tusen kÀrnor, allt pÄ Linux. Om behovet uppstÄr kan du alltid köpa lite AWS. SÄ vi har inga betydande begrÀnsningar med hÄrdvara.
Alex: Hur var det för trettio Är sedan? Var det problem dÄ?
Michael: Det var lite annorlunda dÄ. I mitten till slutet av 1980-talet ansÄgs vetenskapen sakna datorresurser. För att ÄtgÀrda denna situation, National Science Foundation ) skapade ett program för samordnad experimentell forskning (Coordinated Experimental Research, CER). Programmets uppdrag var att tillhandahÄlla datorinfrastruktur för datavetenskapsavdelningar, och det har uppnÄtt betydande förÀndringar. Med pengarna hon gav köpte vi pÄ University of Rochester en 1984-knops BBN Butterfly 128, det hÀr var ett Är innan jag kom dit. PÄ den tiden var det vÀrldens största multiprocessorsystem med delat minne. Den hade 128 processorer, var och en pÄ ett separat moderkort, och upptog fyra rack. Varje processor hade en megabyte minne, 128 megabyte RAM var en ofattbar mÀngd pÄ den tiden. PÄ den hÀr maskinen implementerade vi MCS-lÄsning för första gÄngen.
Alex: SÄ, om jag förstÄr dig rÀtt, Àr problemet med hÄrdvaran löst för tillfÀllet?
Michael: I allmÀnhet, ja. Det finns nÄgra varningar: för det första, om du gör datorarkitektur pÄ chipnivÄ Àr det svÄrt att göra i en akademisk miljö eftersom det finns mycket bÀttre verktyg för att göra det i affÀrer. Om du behöver nÄgot mindre Àn 10 nanometer mÄste du bestÀlla det frÄn nÄgon annan. Inom detta omrÄde Àr det mycket lÀttare att vara forskare pÄ Intel. Om du arbetar med optisk kommunikation pÄ chips eller pÄ solid-state-minne, kommer du att hitta teknologier i nÀringslivet som Ànnu inte Àr inom vetenskapen, sÄ du mÄste skapa allianser. Till exempel, Stephen Swanson () skapat för ny minnesteknik. Denna form fungerar inte alltid, men i vissa fall kan den vara ganska framgÄngsrik. Dessutom Àr utvecklingen av de mest kraftfulla datorsystemen inom vetenskapen svÄrare. De största superdatorprojekten för nÀrvarande i USA, Japan och Kina Àr alla inriktade pÄ affÀrer.
Praktisk implementering av idéer. MCS, MS, CLH, JSR 166, arbetar med Doug Lee och mer.
ĐĐžŃалОĐč: Du har redan pratat om hur du började arbeta med synkroniseringsalgoritmer. Du har tvĂ„ mycket kĂ€nda artiklar om Đž , som pĂ„ sĂ€tt och vis implementerades i Java. (Redaktörens anmĂ€rkning: alla publikationer kan ses ). DĂ€r implementerades denna blockering med vissa Ă€ndringar och det visade sig , och kön implementerades som avsett. Men det gick mĂ„nga Ă„r mellan publiceringen av dina artiklar och deras praktiska tillĂ€mpning.
Alex: Det verkar ungefÀr 10 Är i fallet med kön.
Michael: Innan dessa funktioner dök upp i Java-standardbiblioteket?
ĐĐžŃалОĐč: Ja. Vad gjorde du för att fĂ„ detta att hĂ€nda? Eller gjorde de ingenting?
Michael: Jag kan berÀtta hur MS Queue kom in i Java 5. NÄgra Är innan det kom ut arbetade jag med Mark Moyers grupp pÄ Sun Microsystems i deras labb nÀra Boston. Han organiserade en workshop för personer han kÀnde som arbetade med intressanta problem inom multithreading eftersom han ville hitta Àmnen som han kunde sÀlja till deras företag. Det var dÀr jag först trÀffade Doug Lea. Doug och jag och cirka 25 andra personer frÄn Sun diskuterade tillsammans Dougs presentation om , som senare blev java.util.concurrent. PÄ vÀgen sa Doug att han skulle vilja anvÀnda MS-kön, men för detta behövde han en rÀknare för antalet element i kön för grÀnssnittet. Det vill sÀga, detta borde ha gjorts med en separat metod, atomÀr, exakt och snabb. Jag föreslog att man helt enkelt skulle lÀgga till serienummer till noderna, ta numret pÄ den första noden och den sista och subtrahera den ena frÄn den andra. Doug kliade sig i huvudet, sa "varför inte", och det slutade med att han gjorde just det. Vi diskuterade att implementera detta tillvÀgagÄngssÀtt i biblioteket, men Doug gjorde det mesta sjÀlv. Som ett resultat lyckades han etablera utmÀrkt multithreading-stöd i Java.
Alex: SÄ, om jag förstÄr rÀtt, borde .size()-metoden ha varit en del av standardkögrÀnssnittet, och den borde ha haft en algoritmisk komplexitet pÄ O(1)?
Michael: Ja, och utöver detta krÀvs en separat rÀknare.
Alex: För om du anropar metoden .size() i Java förvÀntas resultatet bli tillgÀngligt omedelbart och inte baserat pÄ den faktiska storleken pÄ samlingen. Jag förstÄr tack.
Michael: NÄgra Är senare arbetade jag pÄ dubbla datastrukturer med min elev Bill Scherer - det Àr faktiskt det hÀr jag kommer att prata om . Doug kom till oss och sa att han kunde anvÀnda dem i Java Executor Framework. Tillsammans med Bill skapade de tvÄ implementeringar, de sÄ kallade rÀttvisa och orÀttvisa köerna. Jag gav dem rÄd om detta projekt, Àven om jag inte deltog i att skriva sjÀlva koden. Som ett resultat har hastigheten för exekutörer ökat avsevÀrt.
vladimir: Har du stött pÄ felaktiga implementeringar av dina algoritmer eller förfrÄgningar om att lÀgga till nya funktioner? I allmÀnhet bör praktiken sammanfalla med teori, men ganska ofta skiljer de sig Ät. Anta att du skrev en algoritm, och pÄ pappret fungerar den, men personerna som Àr involverade i implementeringen började be dig om fler funktioner eller nÄgon form av justering av algoritmen. Har du nÄgonsin haft sÄdana situationer?
Michael: Det enda exemplet dÀr nÄgon kom till mig och frÄgade "hur man implementerar det" var Dougs frÄga, som jag redan pratat om. Men det har förekommit nÄgra fall dÀr intressanta förÀndringar har gjorts för att passa praktiska behov. Till exempel konverterade K42-teamet pÄ IBM MCS-lÄset och gjorde det till ett standardgrÀnssnitt sÄ att det inte fanns nÄgot behov av att skicka könoden fram och tillbaka till rutinerna för förvÀrv och slÀpp. Tack vare detta standardgrÀnssnitt började en idé som var vacker i teorin att fungera i praktiken. Det Àr förvÄnande att de aldrig publicerade en artikel om det, och Àven om de fick ett patent övergav de det senare. Idén var underbar, och jag försöker prata om den nÀr det Àr möjligt.
Det har funnits andra fall dÀr mÀnniskor har gjort förbÀttringar av de algoritmer jag har publicerat. Till exempel har MS-kön en installationsmekanism i tvÄ steg, vilket innebar att det fanns tvÄ CAS pÄ den kritiska vÀgen till kön. PÄ Àldre bilar var CAS ganska dyra. Intel och andra tillverkare har optimerat dem ganska bra nyligen, men en gÄng i tiden var det 30-cyklers instruktioner, sÄ att ha mer Àn en pÄ den kritiska vÀgen var inte önskvÀrt. Som ett resultat utvecklades en annan kö som liknade MS-kön, men som bara hade en atomoperation pÄ den kritiska vÀgen. Detta uppnÄddes pÄ grund av att operationen under en viss tidsperiod kunde ta O(n) tid, snarare Àn O(1). Det var osannolikt, men möjligt. Detta hÀnde pÄ grund av det faktum att algoritmen vid vissa ögonblick korsade kön frÄn början till den aktuella positionen i denna kö. Generellt sett visade sig algoritmen vara mycket framgÄngsrik. SÄ vitt jag vet Àr det inte sÀrskilt flitigt anvÀnt, bland annat för att atomoperationer krÀver betydligt mindre resurser Àn tidigare. Men idén var jÀttebra. Jag gillar ocksÄ verkligen arbetet av Dave Dice frÄn Oracle. Allt han gör Àr vÀldigt praktiskt och han anvÀnder jÀrn vÀldigt smart. Han hade ett finger med i mycket av de NUMA-medvetna synkroniseringsalgoritmerna och flertrÄdiga datastrukturer.
vladimir: NÀr du skriver algoritmer eller undervisar elever Àr resultatet av ditt arbete inte direkt synligt. SamhÀllet behöver lite tid för att bli bekant med, sÀg, en ny artikel. Den nya algoritmen hittar inte omedelbart tillÀmpning.
Michael: Det Àr lÄngt ifrÄn direkt klart om artikeln kommer att ha betydelse eller inte. Jag tycker att det skulle vara intressant att göra en studie av artiklar som vunnit priser pÄ konferenser. Det vill sÀga titta pÄ de artiklar som folk i programnÀmnderna en gÄng ansÄg vara bÀst. Du mÄste försöka berÀkna hur inflytelserika dessa artiklar verkligen visade sig vara pÄ 10, 20, 25 Är utifrÄn antalet lÀnkar och pÄverkan pÄ verksamheten. Jag tvivlar pÄ att det skulle finnas ett starkt samband mellan de tvÄ. Det blir inte noll, men troligtvis blir det mycket svagare Àn vad vi skulle vilja. MÄnga idéer förblir outtagna under lÄng tid innan de fÄr stor spridning. LÄt oss till exempel ta transaktionsminne. Det gick mer Àn 10 Är frÄn det att den ursprungliga artikeln publicerades till det att folk faktiskt började bygga maskiner med den. Och före uppkomsten av detta minne i kommersiella produkter - och alla 20. Under mycket lÄng tid var det ingen som uppmÀrksammade artikeln, och sedan ökade antalet lÀnkar till den kraftigt. Det skulle vara svÄrt att förutse detta i förvÀg. à andra sidan, ibland hittar idéer genomförande omedelbart. För nÄgra Är sedan skrev jag en artikel med Joe Izraelevitz för DISC som föreslog en ny formell definition av giltighet för bestÀndiga datastrukturer som kan anvÀndas efter att datorn som kör dem kraschar. Jag gillade artikeln frÄn första början, men den visade sig vara mycket mer populÀr Àn jag förvÀntade mig. Det anvÀndes av flera olika grupper och blev sÄ smÄningom standarddefinitionen av bestÀndighetsstrukturer. Vilket sÄklart Àr trevligt.
vladimir: Finns det nÄgra tekniker som du anvÀnder för bedömning? Försöker du ens att utvÀrdera dina artiklar och dina elever? NÀr det gÀller om personen du undervisat gÄr Ät rÀtt hÄll.
Michael: Som alla andra lÀgger jag mer uppmÀrksamhet pÄ vad jag gör för tillfÀllet. à terigen, som alla andra, kollar jag ibland Google Scholar för att se om mina tidigare uppsatser citeras, men det Àr mer av nyfikenhet. För det mesta Àr jag uppslukad av vad mina elever gör nu. NÀr det gÀller att utvÀrdera aktuellt arbete Àr en del av det estetiska övervÀganden, vad som Àr elegant och vad som inte Àr det. Och pÄ det vardagliga planet spelar öppna frÄgor en stor roll. Till exempel kommer en elev till mig med en graf över nÄgra resultat, och vi försöker förstÄ varifrÄn nÄgot konstigt beteende i grafen kom. I allmÀnhet försöker vi i vÄrt arbete stÀndigt förstÄ saker som vi Ànnu inte förstÄr.
Transaktionsminne
ĐĐžŃалОĐč: Vi kanske kan prata lite om transaktionsminne?
Michael: Jag tycker att det Àr vÀrt att sÀga Ätminstone lite eftersom jag lÀgger mycket kraft pÄ det. Det hÀr Àr ett Àmne som jag har fler publikationer om Àn nÄgon annan. Men samtidigt var jag konstigt nog alltid vÀldigt skeptisk till transaktionsminne. Enligt min Äsikt, (M. Herlihy, J. E. B. Moss) publicerades före sin tid. I början av 1990-talet föreslog de att transaktionsminne kunde hjÀlpa begÄvade programmerare att arbeta med flertrÄdiga datastrukturer, sÄ att dessa strukturer sedan kunde anvÀndas som bibliotek av vanliga programmerare. Det vill sÀga, det skulle vara en hjÀlp för Doug Lee att göra sin JSR 166. Men transaktionsminnet var inte avsett att göra flertrÄdsprogrammering enkel. Men det var precis sÄ det började uppfattas i början av 2000-talet, nÀr det fick stor spridning. Det annonserades som ett sÀtt att lösa problemet med parallell programmering. Detta tillvÀgagÄngssÀtt har alltid verkat hopplöst för mig. Transaktionsminne kan bara göra det lÀttare att skriva parallella datastrukturer. Det tycks mig vara detta som hon uppnÄdde.
Om svÄrigheten att skriva flertrÄdig kod
Alex: Mycket intressant. Det verkar finnas en viss barriÀr mellan vanliga programmerare och de som kan skriva flertrÄdad kod. Förra Äret pratade jag flera gÄnger med personer som implementerade nÄgot algoritmiskt ramverk. Till exempel med Martin Thomson, sÄvÀl som med programmerare som arbetar med flertrÄdiga bibliotek. (Redaktörens anmÀrkning: Martin Thompson Àr en mycket kÀnd utvecklare, skrev han О . Och det har han ocksÄ pÄ vÄr Joker 2015-konferens, videoinspelning . Han Àr sig lik denna konferens ocksÄ tillgÀnglig). Den största utmaningen, sÀger de, Àr att göra algoritmerna bÄde snabba och enkla att anvÀnda. Det vill sÀga, de försöker övervinna denna barriÀr och locka sÄ mÄnga mÀnniskor som möjligt till detta omrÄde. Vad tycker du om det?
Michael: Detta Àr huvudproblemet med multithreading: hur man uppnÄr hög prestanda utan att öka komplexiteten i systemet.
Alex: För nÀr de försöker undvika komplexitet blir algoritmen mindre universell.
Michael: Nyckeln hĂ€r Ă€r korrekt designade abstraktioner. Det förefaller mig som att detta generellt sett Ă€r det viktigaste för datorsystem som fĂ€lt. Butler Lampson gillar att anvĂ€nda denna term, och han kallar oss "handlare av abstraktioner." Enkla tekniker finns inte idag. Processorerna vi anvĂ€nder har 10 miljarder transistorer â enkelhet Ă€r uteslutet. Samtidigt Ă€r ISA mycket enklare Ă€n processorn, eftersom vi arbetat vĂ€ldigt lĂ€nge för att ge den hög prestanda och ett relativt enkelt grĂ€nssnitt. Men allt Ă€r inte smidigt med henne heller. Samma problem Ă€r med acceleratorer som nu dyker upp pĂ„ marknaden. FrĂ„gor uppstĂ„r - hur man gör rĂ€tt grĂ€nssnitt för GPU, en krypteringsmekanism, komprimering, en omkodningsmekanism, en linjĂ€r algebramekanism eller till och med en mer flexibel FPGA. Hur skapar man ett grĂ€nssnitt som gör verktyget lĂ€tt att anvĂ€nda och döljer komplexitet? Det kommer inte att bli av med det, utan snarare dölja det för en enkel programmerare.
Alex: Som jag förstÄr det har vi fortfarande en barriÀr nÀr det gÀller att förstÄ abstraktioner. LÄt oss ta minnesmodellen; i vÄrt utvecklingsstadium av vetenskap och teknik Àr detta en av de viktigaste abstraktionerna. Tack vare det Àr alla programmerare indelade i tvÄ grupper: den större delen Àr de som inte förstÄr det, och den mindre delen Àr de som förstÄr, eller tror att de förstÄr.
Michael: Det Àr en bra frÄga - förstÄr nÄgon av oss verkligen minnesmodellen?
ĐĐžŃалОĐč: Speciellt i C++.
Michael: Prata med Hans Boehm nÄgon gÄng. Han Àr en av de smartaste mÀnniskorna jag kÀnner, en ledande expert pÄ minnesmodeller. Han kommer genast att berÀtta för dig att det Àr mycket han inte förstÄr. Men om vi ÄtervÀnder till frÄgan om abstraktioner, sÄ uttrycktes enligt min mening den viktigaste idén inom omrÄdet minnesmodeller under de senaste 30 Ären . (Redaktörens anmÀrkning: en komplett lista över publikationer finns tillgÀnglig ).
Alex: Min frÄga Àr: kommer denna barriÀr frÄn sjÀlva begreppets natur?
Michael: Nej. Sarita kom fram till att med rÀtt tillvÀgagÄngssÀtt kan du framgÄngsrikt dölja all komplexitet, fÄ hög prestanda och ge programmeraren ett enkelt API. Och om du följer detta API kan du uppnÄ konsekvent konsekvens. Jag tror att detta Àr rÀtt modell. Skriv kod utan datarace och fÄ sekventiell konsekvens. Naturligtvis, för att minska sannolikheten för racing, behövs specialverktyg, men det Àr en annan sak.
vladimir: Har det funnits tillfÀllen i din karriÀr nÀr ett problem som verkade löst plötsligt förvandlades till en katastrof, eller det visade sig att det hÀr problemet var olösligt? Till exempel, i teorin kan du faktorisera vilket tal som helst eller avgöra om nÄgot tal Àr primtal. Men i praktiken kan detta vara svÄrt att göra, med nuvarande hÄrdvara Àr det svÄrt att faktorisera siffror. Har nÄgot liknande hÀnt dig?
Michael: Jag kommer inte direkt ihÄg nÄgot sÄdant. Det har funnits tillfÀllen dÄ det verkade för mig att det inte fanns nÄgot kvar att göra i ett visst omrÄde, men sedan hÀnde nÄgot nytt och intressant dÀr. Till exempel trodde jag att omrÄdet med obegrÀnsad kö redan hade nÄtt mognad. Efter flera förbÀttringar av MNS-kön hÀnde inte mycket lÀngre. Och sedan uppfann Morrison (Adam Morrison) och Afek (Yehuda Afek). . Det blev tydligt att en obegrÀnsad flertrÄdig kö var möjlig, dÀr det mesta av tiden bara fanns en hÀmta-och-ökningsinstruktion pÄ den kritiska vÀgen. Och detta gjorde det möjligt att uppnÄ en storleksordning bÀttre prestanda. Det Àr inte sÄ att vi inte vet att hÀmta-och-öka Àr en mycket anvÀndbar sak. Eric Freudenthal skrev om detta i sitt arbete med Ultradatorn med Allan Gottlieb i slutet av 1980-talet, men det handlade om begrÀnsade köer. Morrison och Afek kunde anvÀnda hÀmta-och-öka pÄ en obegrÀnsad kö.
Nya arkitekturer. Ăr transaktionsminnets seger nĂ€ra?
vladimir: Letar du efter nya arkitektoniska lösningar som kan vara anvÀndbara för algoritmer?
Michael: Naturligtvis finns det mÄnga saker som jag skulle vilja se implementerade.
vladimir: Vilken sort till exempel?
Michael: Först och frÀmst nÄgra enkla tillÀgg till vÄrt transaktionsminne pÄ hÄrdvarunivÄ i Intel- och IBM-processorer. I synnerhet skulle jag vilja att den icke-transaktionella belastningen och butiken som just har intrÀffat Àr omedelbart tillgÀnglig inom transaktioner. De leder omedelbart till loopar i hÀnder-före-sekvensen, sÄ de kan vara svÄra. Men om du upprÀtthÄller lager av abstraktion finns det mÄnga mycket intressanta saker du kan göra utanför transaktionen medan den pÄgÄr. Jag vet inte hur svÄrt detta skulle vara att genomföra, men det skulle vara vÀldigt anvÀndbart.
En annan anvÀndbar sak Àr att ladda cache frÄn fjÀrrminnet. Jag tror att detta kommer att göras förr eller senare. Denna teknik kommer att möjliggöra skapandet av system med disaggregerat minne. Det skulle vara möjligt att behÄlla till exempel 100 terabyte bestÀndigt minne i ett rack, och operativsystemet sjÀlvt skulle dynamiskt bestÀmma vilka delar av det minnet som ska motsvara processorernas fysiska adressutrymme. Detta skulle vara extremt anvÀndbart för cloud computing, eftersom det skulle tillÄta stora mÀngder minne att tillhandahÄllas för de uppgifter som behöver det. Jag tror att nÄgon kommer att göra det.
ĐĐžŃалОĐč: För att avsluta med att prata om transaktionsminne har jag ytterligare en frĂ„ga om detta Ă€mne. Kommer transaktionsminne sĂ„ smĂ„ningom att ersĂ€tta standard flertrĂ„diga datastrukturer?
Michael: Nej. Transaktioner Àr en spekulativ mekanism. PÄ programmeringsnivÄ Àr dessa atomlÄs, men inuti Àr de spekulationer. SÄdana prognoser fungerar om de flesta gissningar Àr korrekta. DÀrför fungerar transaktionsminne bra nÀr trÄdar knappast interagerar med varandra, och du behöver bara se till att det inte finns nÄgra interaktioner. Men om ett meddelande startar mellan trÄdarna Àr transaktioner till liten nytta. LÄt mig förklara, vi talar om fallet nÀr transaktioner lindas runt hela atomoperationen. De kan fortfarande framgÄngsrikt anvÀndas som komponenter för flertrÄdiga datastrukturer. Till exempel, om du behöver ett treords CAS, och du behöver flertrÄda tre smÄ saker mitt i en verkligt flertrÄdad algoritm som fungerar med tjugo trÄdar samtidigt. I allmÀnhet kan transaktioner vara anvÀndbara, men de kommer inte att eliminera behovet av att korrekt designa flertrÄdade datastrukturer.
Icke-flyktigt minne, Optane DIMM, ultrasnabba enheter.
ĐĐžŃалОĐč: Det sista jag skulle vilja prata om Ă€r Ă€mnet för din nuvarande forskning: icke-flyktigt minne. Vad kan vi förvĂ€nta oss inom detta omrĂ„de inom en snar framtid? Kanske kĂ€nner du till nĂ„gra effektiva implementeringar som redan finns?
Michael: Jag Àr ingen hÄrdvaruexpert, jag vet bara vad jag lÀser i nyheterna och vad mina kollegor sÀger till mig. Alla har redan hört att Intel sÀljer , som har cirka 3 gÄnger lÀslatens och 10 gÄnger skrivlatens Àn dynamiskt RAM. De kommer snart att finnas tillgÀngliga i versioner med mycket stora volymer. Det Àr lustigt att tÀnka pÄ att du skulle kunna ha en bÀrbar dator med flera terabyte byteadresserbart RAM-minne. Det Àr troligt att vi om 10 Är kommer att besluta oss för att anvÀnda denna nya teknik, eftersom vi anvÀnder DRAM - bara öka volymen. Men tack vare energioberoende öppnar sig helt nya möjligheter för oss. Vi kan fundamentalt Àndra lagringsstacken sÄ att det inte finns nÄgon separation mellan byteadresserbart arbetsminne och blockstrukturerat persistent minne. Vi behöver alltsÄ inte serialisera allt som behöver överföras frÄn ett program som körs till ett annat till blockstrukturerade filer. Ur detta kan vi hÀrleda mÄnga viktiga principer som pÄverkar operativsystem, runtime-miljöer och distribuerade datalager. Det hÀr omrÄdet Àr vÀldigt intressant att arbeta inom. Personligen Àr det svÄrt för mig att förutse vad allt detta kommer att leda till, men problemen hÀr Àr extremt underhÄllande. Det kan finnas revolutionerande förÀndringar hÀr, och de följer mycket naturligt av arbetet med multithreading, eftersom felÄterstÀllning Àr en "multithreading"-process bredvid den normala driften av systemet.
Det andra huvudÀmnet jag för nÀrvarande arbetar med Àr att hantera ultrasnabba enheter och sÀker Ätkomst till enheter frÄn anvÀndarutrymmet med systemisk policykontroll. Under de senaste Ären har det funnits en trend att flytta Ätkomsten till enheten till anvÀndarutrymmet. Detta görs eftersom TCP-IP-kÀrnstacken inte kan fungera ovanpÄ ett nÀtverksgrÀnssnitt som behöver ett nytt paket var 5:e mikrosekund, det kommer helt enkelt inte att hÀnga med. DÀrför ger tillverkare direkt Ätkomst till enheter. Men detta innebÀr att operativsystemet tappar kontrollen över processen och det kan inte ge korrekt Ätkomst till enheten för konkurrerande applikationer. VÄrt forskarteam anser att denna brist kan undvikas. Vi kommer att ha en artikel om detta pÄ USENIX ATC den hÀr mÄnaden. Det Àr relaterat till arbete med persistens, eftersom lÄnglivat byte-adresserbart persistent minne i huvudsak Àr en enhet med ultrasnabb I/O som mÄste nÄs i anvÀndarutrymmet. Denna forskning möjliggör nya tillvÀgagÄngssÀtt för mikrokÀrnor, exokernelar och andra traditionella försök att sÀkert flytta funktionalitet frÄn OS-kÀrnan till anvÀndarutrymmet.
vladimir: Byteadresserbart minne Àr bra, men det finns en fysisk begrÀnsning - ljusets hastighet. Detta innebÀr att det oundvikligen kommer att uppstÄ en fördröjning vid interaktion med enheten.
Michael: FullstÀndigt rÀtt.
vladimir: Kommer det att finnas tillrÀckligt med kapacitet för att klara de nya lasterna?
Michael: Det hÀr Àr en utmÀrkt frÄga, men det blir svÄrt för mig att svara pÄ. Idén om att bearbeta i minnet har funnits ganska lÀnge, det Àr vÀldigt intressant, men ocksÄ vÀldigt komplext. Jag har inte arbetat inom det hÀr omrÄdet, men det skulle vara fantastiskt om nÄgra upptÀckter gjordes dÀr. Jag Àr rÀdd att jag inte har nÄgot mer att tillÀgga.
vladimir: Det finns ett problem till. Nya, betydligt större mÀngder RAM kommer att vara omöjliga att passa in i CPU:n. DÀrför, pÄ grund av fysiska begrÀnsningar, mÄste detta RAM-minne isoleras.
Michael: Allt beror pÄ antalet defekter i produktionen av integrerade kretsar. Om det var möjligt att skapa halvledarskivor helt utan defekter, skulle det vara möjligt att göra en hel mikrokrets av den. Men nu vet vi inte hur man gör mikrokretsar större Àn frimÀrken.
vladimir: Men vi pratar fortfarande om enorma storlekar, ungefÀr centimeter. Detta har oundvikligen en inverkan pÄ latensen.
Michael: Ja. Det finns inget du kan göra Ät ljusets hastighet.
vladimir: TyvÀrr.
NĂ€sta stora trend. Dubbla datastrukturer. Hydra.
ĐĐžŃалОĐč: Vad jag förstĂ„r fĂ„ngar man upp nya trender vĂ€ldigt snabbt. Du var en av de första som arbetade i transaktionsminne, och en av de första som arbetade i icke-flyktigt minne. Vad tror du blir nĂ€sta stora trend? Eller kanske det Ă€r en hemlighet?
Michael: För att vara Àrlig sÄ vet jag inte. Förhoppningsvis kommer jag att kunna mÀrka nÀr nÄgot nytt dyker upp. Jag har inte haft turen att uppfinna nÄgot nytt fÀlt pÄ egen hand, men jag har haft lite tur och kunnat börja jobba ganska tidigt inom nya fÀlt skapade av andra. Jag hoppas att jag kommer att kunna göra detta i framtiden.
Alex: Den sista frÄgan i den hÀr intervjun kommer att handla om din prestation pÄ Hydra och dina aktiviteter i skolan. Om jag förstÄr det rÀtt kommer rapporten pÄ skolan att handla om blockeringsfria algoritmer, och pÄ konferensen om dubbla datastrukturer. Kan du sÀga nÄgra ord om dessa rapporter?
Michael: Delvis har vi redan berört dessa Àmnen med dig i den hÀr intervjun. Det handlar om det arbete jag gjorde med min elev Bill Scherer. Han skrev en avhandling om den, och Doug Lee bidrog ocksÄ till den, och den blev sÄ smÄningom en del av de flertrÄdiga synkrona köerna i Java-biblioteket. LÄt oss anta att datastrukturen lÀses och skrivs utan blockering, det vill sÀga att varje operation har ett begrÀnsat antal instruktioner pÄ den kritiska vÀgen. Om du försöker ta bort data frÄn en tom container, eller försöker ta bort viss data som inte finns i denna container, informeras du omedelbart om att detta inte kan göras. Men detta beteende kanske inte Àr acceptabelt om trÄden verkligen behöver dessa data. Sedan Àr det första som kommer att tÀnka pÄ att skapa en loop som stÀndigt kommer att frÄga om nödvÀndig data har dykt upp. Men sedan finns det störningar för alla andra. Dessutom, med det hÀr tillvÀgagÄngssÀttet, kan du vÀnta 10 minuter, och sedan kommer nÄgon annan trÄd, och den kommer av misstag att fÄ nödvÀndig information först. Dubbla datastrukturer har fortfarande inga lÄs, men de tillÄter trÄdar att vÀnta ordentligt. Termen "dubbel" betyder att strukturen innehÄller antingen data eller förfrÄgningar om data, lÄt oss kalla dem antidata. SÄ om du försöker hÀmta nÄgot frÄn en tom behÄllare, kommer en begÀran att lÀggas i behÄllaren istÀllet. Nu kan trÄden vÀnta pÄ en förfrÄgan utan att störa nÄgon annan. Dessutom tilldelar datastrukturen prioriteringar till förfrÄgningar sÄ att nÀr de tas emot skickar den dem till rÀtt person. Resultatet Àr en icke-lÄsande mekanism som fortfarande har en formell specifikation och bra prestanda i praktiken.
Alex: Vilka förvÀntningar har du pÄ den hÀr datastrukturen? Kommer det att förbÀttra prestandan i alla vanliga fall, eller Àr det bÀttre lÀmpat för vissa situationer?
Michael: Det Àr anvÀndbart om du för det första behöver en behÄllare utan lÄsning, och för det andra behöver du vÀnta i en situation dÀr du behöver hÀmta data frÄn behÄllaren som inte finns i den. SÄ vitt jag vet ger vÄrt ramverk optimalt beteende nÀr dessa tvÄ villkor Àr uppfyllda. DÀrför rekommenderar jag att du anvÀnder den i dessa fall. Den största fördelen med lÄslösa datastrukturer Àr att de undviker prestandaproblem. Och att vÀnta Àr mycket viktigt i mÄnga algoritmer om data överförs frÄn en trÄd till en annan.
ĐĐžŃалОĐč: LĂ„t mig förtydliga: kommer du att prata om samma sak bĂ„de i skolan och pĂ„ konferensen?
Michael: I skolan i allmÀnhet om flertrÄdade datastrukturer, med de grundlÀggande principerna som beskrivs i början av lektionen. Jag antar att publiken vet vad trÄdar Àr och Àr bekanta med lÄs. UtifrÄn denna grundlÀggande kunskap kommer jag att prata om lÄsfria datastrukturer. Jag ska ge en översikt över de viktigaste problemen inom detta omrÄde, och berör Àmnen som minneshantering. Jag tror inte det blir nÄgot mer komplicerat Àn MS-kön.
Alex: Planerar du att undervisa om dubbla datastrukturer i slutet av din klass i skolan?
Michael: Jag kommer att nÀmna dem, men jag kommer inte lÀgga mycket tid pÄ dem. Hydra-rapporten kommer att tillÀgnas dem. Det kommer att tÀcka projektet som sÄ smÄningom kom in i Java, samt att arbeta med Joe Israelevich för att skapa en dubbel variant av LCRQ-kön och skapa en nÀstan universell design för dubbla datastrukturer.
Alex: SÄ förelÀsningen i skolan kan rekommenderas för nybörjare, och förelÀsningen om dubbla datastrukturer pÄ Hydra - för personer som redan har lite erfarenhet?
Michael: RÀtta mig om jag har fel, men publiken pÄ Hydra kommer att vara ganska mÄngsidig, inklusive mÄnga Java-experter och i allmÀnhet mÀnniskor som inte Àr specifikt involverade i flertrÄdsprogrammering.
ĐĐžŃалОĐč: Ja det Ă€r sant.
Alex: Vi hoppas det Ätminstone.
Michael: I det hÀr fallet kommer jag att stÀllas inför samma problem som vi började den hÀr intervjun med: hur man gör en rapport bÄde tillrÀckligt rik pÄ tekniska detaljer och tillgÀnglig för alla lyssnare.
ĐĐžŃалОĐč: Kommer du att ge en rapport pĂ„ samma sĂ€tt som du hĂ„ller förelĂ€sningar? Det vill sĂ€ga prata med publiken och anpassa sig efter situationen?
Michael: Jag Àr rÀdd att det inte kommer att fungera sÄ, eftersom rapporten kommer att ha bilder. Slides Àr viktiga nÀr lyssnare initialt talar olika sprÄk. MÄnga kommer att ha svÄrt att förstÄ mig pÄ engelska, speciellt om jag pratar för snabbt. Jag valde dessa Àmnen pga bad mig prata om lÄsfria datastrukturer pÄ SPTDC School; och sedan behövde jag en rapport för en Java-anvÀndargruppskonferens, och jag ville vÀlja nÄgot som skulle vara av intresse specifikt för Java-programmerare. Det enklaste sÀttet var att prata om de dÀr sakerna i Java-biblioteket som jag hade en hand pÄ ett eller annat sÀtt.
Alex: Vi antar att publiken pÄ Hydra redan kan nÄgot om lÄsfri programmering och kanske har lite erfarenhet inom detta omrÄde. Men detta Àr bara ett antagande, situationen kommer att bli tydligare pÄ sjÀlva konferensen. Hur som helst, tack för din tid. Jag Àr sÀker pÄ att intervjun kommer att vara mycket intressant för vÄra lÀsare. Tack sÄ mycket!
ĐĐžŃалОĐč: Tack.
Michael: Jag kommer att vara glad att trÀffa dig i St. Petersburg.
Alex: Vi ocksÄ, vi har en vacker stad. Har du nÄgonsin varit hÀr?
Michael: Nej, jag har aldrig varit i Ryssland alls. Men St. Petersburg har alltid funnits pÄ listan över platser dÀr jag inte har varit Ànnu, men dit jag verkligen vill Äka, sÄ jag blev vÀldigt glad över inbjudan.
Alex: Vi kommer förresten att ha ett program med utflykter för talare. Tack sÄ mycket för intervjun och ha en trevlig dag!
Du kan fortsÀtta ditt samtal med Michael pÄ Hydra 2019-konferensen, som kommer att hÄllas den 11-12 juli 2019 i St. Petersburg. Han kommer med en rapport . Biljetter kan köpas .
KĂ€lla: will.com
