"Empiriska resultat Àr endast för publicering, de verkliga motiven för verket Àr estetiska." Bra intervju med Michael Scott

"Empiriska resultat Ă€r endast för publicering, de verkliga motiven för verket Ă€r estetiska." Bra intervju med Michael Scott Michael Scott - i 34 Ă„r 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 "ProgrammeringssprÄkpragmatik", hur Àr det med jobbet "Algoritmer för skalbar synkronisering pÄ multiprocessorer med delat minne" 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 Michael-Scott.

Tillsammans med Doug Lee utvecklade han de icke-blockerande algoritmerna och synkrona köerna som driver Java-biblioteken. Genomförande "dubbla datastrukturer" 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 bok av Cormen, Leiserson och Rivest. 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 Charlotte projekt vid University of Wisconsin, dĂ€r ett av de första distribuerade operativsystemen utvecklades. DĂ€r arbetade jag tillsammans med Rafael Finkel (Raphael Finkel) och Marvin Solomon (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 ASPLOS i Boston - detta var i slutet av 80-talet eller början av 90-talet. John Mellor-Crummey (John Mellor-Crummey), en examen frÄn vÄr fakultet. Jag kÀnde honom, men vi hade inte gjort gemensam forskning tidigare. Mary Vernon (Mary Vernon) frÄn Wisconsin höll ett föredrag om ett multiprocessorsystem som de utvecklade i Wisconsin: Wisconsin Multicube. 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 MCS-blockering, 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. ACM-konferenser 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 IEEE, 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 (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 "ProgrammeringssprĂ„kpragmatik") 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 (William Bolosky) och Leonidas Kontotanassis (Leonidas Kontothanassis) 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 "Hur man utvĂ€rderar systemforskning" 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 Sasha Fedorova, 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 (Nationella vetenskapsfonden) 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 (Steven Swanson) skapat ett sĂ„dant partnerskap 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 MCS-blockering Đž Michael-Scott kö (MS), 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 CLH lĂ„s, 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 JSR 166, 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 rapport om Hydra. 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, artikel av Herlihy och Moss (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 disruptor О Aeron. Och det har han ocksÄ Rapportera pÄ vÄr Joker 2015-konferens, videoinspelning tillgÀngligt pÄ YouTube. Han Àr sig lik öppnad denna konferens keynote inspelning 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 i Sarita Adves avhandling. (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). LCRQ-kö. 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 Optane DIMM, 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 jag kommer tala 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 Pjotr ​​Kuznetsov 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 "Dubbla datastrukturer". Biljetter kan köpas pÄ den officiella webbplatsen.

KĂ€lla: will.com

LĂ€gg en kommentar