"Asil empiris mung kanggo publikasi, motif nyata saka karya iku estetis." Wawancara apik karo Michael Scott

"Asil empiris mung kanggo publikasi, motif nyata saka karya iku estetis." Wawancara apik karo Michael Scott Michael Scott - kanggo 34 taun minangka profesor Ilmu Komputer ing Universitas Rochester, lan ing omahe Universitas Wisconsin–Madison dheweke dadi dekan limang taun. Dheweke nyelidiki lan mulang siswa babagan desain program lan basa sing paralel lan disebarake.

Donya ngerti Michael saka buku teks "Pragmatik Bahasa Pemrograman", opo maneh kerja "Algoritma kanggo sinkronisasi sing bisa diukur ing multiprosesor memori bareng" nampa Bebungah Dijkstra minangka salah siji sing paling misuwur ing bidang komputasi terdistribusi. Sampeyan bisa uga ngerti dheweke minangka penulis algoritma kasebut Michael-Scott.

Bebarengan karo Doug Lee, dheweke ngembangake algoritma non-blocking lan antrian sinkron sing nguwasani perpustakaan Jawa. Implementasine "struktur data ganda" ing JavaSE 6 kinerja apik dening 10 kaping ThreadPoolExecutor.

Isi:

  • Karir awal, Universitas Rochester. Project Charlotte, basa Lynx;
  • Antarmuka Koheren IEEE Scalable, ngunci MCS;
  • Slamet ing donya sing tansah ganti;
  • Apa siswa dadi goblok? Tren global, internasionalisasi;
  • Karya efektif karo siswa;
  • Kepiye carane nyiapake kursus lan buku anyar;
  • Link antarane bisnis lan akademisi;
  • Implementasi gagasan praktis. MCS, MS, CLH, JSR 166, nggarap Doug Lee lan liyane;
  • Memori transaksional;
  • Arsitèktur anyar. Kamenangan memori transactional wis cedhak;
  • Memori non-molah malih, Optane DIMM, piranti ultra-cepet;
  • Tren gedhe sabanjure. Struktur data ganda. Hydra.

Wawancara ditindakake dening:

Vitaly Aksenov - saiki dadi postdoc ing IST Austria lan anggota Departemen Teknologi Komputer ing Universitas ITMO. Nindakake riset ing bidang teori lan praktik struktur data kompetitif. Sadurunge kerja ing IST, dheweke nampa gelar PhD saka Universitas Paris Diderot lan Universitas ITMO ing sangisore pengawasan Profesor Peter Kuznetsov.

Alexey Fedorov minangka produser ing JUG Ru Group, perusahaan Rusia sing ngatur konferensi kanggo pangembang. Alexey melu nyiapake luwih saka 50 konferensi, lan resume ngandhut kabeh saka posisi insinyur pembangunan ing Oracle (JCK, Java Platform Group) kanggo posisi pangembang ing Odnoklassniki.

Vladimir Sitnikov iku insinyur ing Netcracker. Kanggo sepuluh taun, dheweke wis nggarap kinerja lan skalabilitas NetCracker OS, piranti lunak sing digunakake dening operator telekomunikasi kanggo ngotomatisasi proses manajemen peralatan jaringan lan jaringan. Kasengsem ing masalah kinerja Java lan Oracle Database. Penulis luwih saka rolas dandan kinerja ing driver PostgreSQL JDBC resmi.

Karir awal, Universitas Rochester. Proyek Charlotte, basa Lynx.

Alexey: Kanggo miwiti, aku pengin pitutur marang kowe yen ing Rusia kita kabeh tresna banget karo Ilmu Komputer, Ilmu Data lan algoritma. Iku pancen saru. Kita wis maca kabeh buku dening Cormen, Leiserson lan Rivest. Mulane, konferensi sing bakal teka, sekolah lan wawancara iki dhewe kudu populer banget. Kita nampa akeh pitakonan kanggo wawancara iki saka siswa, programer, lan anggota komunitas, mula kita matur nuwun banget kanggo kesempatan iki. Apa Ilmu Komputer entuk katresnan sing padha ing AS?

Michael: Lapangan kita macem-macem, akeh arah, lan mengaruhi masyarakat kanthi macem-macem cara, mula angel kanggo menehi jawaban sing pasti. Nanging kasunyatane wis nggawa owah-owahan gedhe ing bisnis, industri, seni lan masyarakat umume sajrone 30 taun kepungkur.

Vitali: Ayo miwiti karo soko adoh. Ing pirang-pirang universitas, ana spesialisasi ing salah sawijining wilayah tartamtu. Kanggo Carnegie Mellon University iki komputasi paralel, kanggo MIT iku kriptografi, robot lan multithreading. Apa ana spesialisasi kaya ing Universitas Rochester?

Michael: Jujur, aku bakal ngomong sing CMU lan MIT spesialis ing kabeh wilayah. Departemen kita tansah menehi perhatian paling akeh marang intelijen buatan. Setengah saka wong sing kerja kanggo kita melu AI utawa interaksi manungsa-komputer - bagean iki luwih dhuwur tinimbang ing departemen liyane, lan mesthi kaya ngono. Nanging nalika aku ana ing universitas, aku ora duwe kursus AI, lan aku ora tau kerja ing bidang iki. Dadi departemenku spesialis ing masalah sing aku ora duwe apa-apa. Panglipur yaiku masalah paling penting nomer loro kanggo departemen kita yaiku program paralel lan multi-threaded, yaiku spesialisasiku.

Vitali: Sampeyan miwiti kerja ing Ilmu Komputer nalika bidang pemrograman multi-threaded mung muncul. Dhaptar publikasi sampeyan nuduhake manawa karya pisanan sampeyan ngatasi masalah sing cukup akeh: manajemen memori ing sistem multi-threaded, sistem file sing disebarake, sistem operasi. Apa versatility kuwi? Apa sampeyan wis nyoba golek papan ing komunitas riset?

Michael: Dadi mahasiswa, aku melu Proyek Charlotte ing Universitas Wisconsin, ngendi siji saka sistem operasi mbagekke pisanan dikembangaké. Ing kana aku kerja bareng karo Rafael Finkel (Raphael Finkellan Marvin Solomon (Marvin Sulaiman). Disertasiku dikhususake kanggo pangembangan basa kanggo piranti lunak sistem kanggo sistem sing disebarake - saiki kabeh wong wis lali babagan iki, lan matur nuwun marang Gusti Allah. Aku nggawe basa pamrograman Lynx, sing dimaksudake kanggo nggawe server luwih gampang kanggo sistem operasi sing disebarake. Wiwit ing wektu iku aku utamané melu ing sistem operasi, Aku nganggep sing karir bakal utamané disambungake karo wong-wong mau. Nanging Rochester minangka universitas sing cilik banget, lan amarga iki, klompok-klompok sing beda-beda ing kana sesambungan banget karo saben liyane. Ora ana wong sistem operasi liyane sing bisa diajak ngobrol, mula kabeh kontakku karo wong sing kerja ing wilayah sing beda-beda. Aku pancene sante, dadi kabeh-rounder iku kauntungan gedhe kanggo kula. Yen kita ngomong khusus babagan struktur data multi-threaded lan algoritma sinkronisasi, banjur aku miwiti nggarap kanthi ora sengaja.

Antarmuka Koheren IEEE Scalable, ngunci MCS.

Vitali: Apa sampeyan bisa ngomong sethithik babagan iki?

Michael: Iki crita lucu sing ora bosen dakcritakake kabeh. Iku kedaden ing konferensi ASPLOS ing Boston - iki ing pungkasan 80s utawa awal 90s. John Mellor-Crummey (John Mellor-Crummey), lulusan fakultas kita. Aku ngerti dheweke, nanging kita durung nindakake riset bareng sadurunge. Mary Vernon (Mary Vernon) saka Wisconsin menehi pirembagan babagan sistem multiprosesor sing dikembangake ing Wisconsin: Wisconsin Multicube. Multicube iki nduweni mekanisme sinkronisasi ing tingkat hardware sing diarani Q on Sync Bit, lan banjur dijenengi Q ing Lock Bit amarga muni kaya keju Colby, sing ana pun. Yen sampeyan kasengsem ing mekanisme multithreading, sampeyan bisa uga ngerti yen Colby pungkasane dadi mesin sinkronisasi kanggo standar Interface Coherent Scalable IEEE. Iki minangka mekanisme ngunci sing nggawe penunjuk saka siji cache menyang liyane ing tingkat hardware supaya saben wadhah kunci ngerti sapa sing dadi. Nalika John lan aku krungu bab iki, kita padha nyawang lan ngandika: kok nindakake iki ing tingkat hardware? Apa ora bisa ditindakake kanthi nggunakake comparison-and-swap? Kita njupuk salah siji saka notebook lying ing kelas lan scribbled ing MCS pamblokiran, nalika Maryam nerusake laporane. Salajengipun, kita nindakaken, eksperimen, ide kasebut sukses, lan kita nerbitake artikel kasebut. Ing wektu iku, kanggo kula, topik iki mung minangka gangguan sing nyenengake, sawise aku ngrancang bali menyang sistem operasi. Nanging banjur ana masalah liyane ing garis sing padha, lan pungkasane sinkronisasi, multithreading, lan struktur data dadi spesialisasiku. Kaya sing sampeyan ngerteni, kabeh iki kedadeyan kanthi ora sengaja.

Vitali: Aku wis menowo MCS pamblokiran kanggo dangu, nanging nganti saiki aku ora ngerti sing iku karya, lan ora ngerti sing iku akronim kanggo jeneng mburi.

Kepiye carane bisa urip ing jagad sing saya ganti?

Alexey: Aku duwe pitakonan babagan topik sing gegandhengan. 30 utawa 40 taun kepungkur ana luwih bebas ing macem-macem spesialisasi. Yen sampeyan pengin miwiti karir ing multithreading utawa sistem disebarake, sampeyan olèh, yen sampeyan pengin njaluk menyang sistem operasi, ora masalah. Ing saben wilayah ana akeh pitakonan mbukak lan sawetara ahli. Spesialisasi sempit saiki wis muncul: ora mung ahli ing sistem operasi umume, ana spesialis ing sistem individu. Iku padha karo multithreading lan sistem disebarake. Nanging masalahe yaiku urip kita ora telas; saben wong mung bisa nyinaoni sawetara dekade kanggo riset. Kepiye carane bisa urip ing jagad anyar iki?

Michael: Kita ora khusus ing babagan iki; kedadeyan sing padha ing wilayah liyane. Aku begja sing aku miwiti makarya ing Ilmu Komputer nalika lapangan ana ing "remaja" taun. Sawetara pondasi wis dilebokake, nanging kabeh isih durung diwasa. Kesempatan iki ora asring teka. Teknik listrik wis suwe banget, fisika malah luwih suwe, matematika meh wiwit wiwitan. Nanging iki ora ateges ora ana sing nggawe penemuan menarik ing matematika maneh. Isih akeh masalah sing mbukak, nanging ing wektu sing padha, luwih akeh sing kudu dipelajari. Sampeyan bener kanggo Wigati sing saiki ana akeh liyane spesialisasi saka ana sadurunge, nanging iki mung ateges sing kita temokake dhéwé ing kahanan sing padha karo wilayah liyane aktivitas manungsa.

Alexey: Aku kasengsem ing aspek luwih praktis saka masalah kene. Aku duwe latar mburi matématika, lan nalika sinau aku kerep nekani konferensi lan makarya ing macem-macem topik ilmiah. Aku nemokake manawa ora ana wong sing ngerti laporanku, lan kanthi cara sing padha, laporan wong liya mung bisa dingerteni. Iki ora kedadeyan ing topik-topik tingkat dhuwur, nanging yen sampeyan miwiti nyelidiki, pamirsa ora bisa ngetutake sampeyan. Kepiye cara sampeyan ngatasi iki?

Michael: Ora mesthi sukses. Aku bubar nyiapake laporan sing aku jero banget babagan rincian teknis. Nalika dhiskusi kasebut maju, dadi cetha yen akeh penonton ora ngerti aku, mula aku kudu adaptasi karo kahanan sing ana ing kono. Slide ora bisa diowahi, dadi ora apik banget - dadi, umume, aku nyoba ora nggunakake slide. Sakabèhé, saranku kanggo nimbang pamirsa. Sampeyan kudu ngerti sapa sing diajak ngomong, apa tingkat kawruh, lan apa sing kudu dirungokake kanggo ngapresiasi karya sampeyan.

Vitali: Apa sampeyan bisa menehi pitunjuk babagan apa ceramah iki?

Michael: Jujur, aku luwih seneng ora nggedhekake topik iki supaya ora anonim. Intine kita kerep banget nyepelekake masalah sing lagi digarap, mula dadi angel kanggo nerangake ing wiwitan pirembagan apa sebabe masalah kasebut menarik lan penting lan kepiye hubungane karo masalah sing ditindakake. penonton wis ngerti. Miturut pengamatan kula, siswa paling angel sinau katrampilan iki. Lan iki uga titik lemah saka laporan anyarku. Laporan sing disusun kanthi bener kudu, wiwit wiwitan, golek kontak karo pamirsa, nerangake apa persis masalah kasebut lan kepiye hubungane karo topik sing wis dingerteni. Carane teknis introduksi iki gumantung marang pamirsa. Yen wis rampung motley, banjur laporan bisa multi-tataran. Pambuka kudu bisa diakses dening kabeh wong, lan ing pungkasan potongan kasebut bisa uga ora bisa ngetutake sampeyan, nanging wong sing wis kenal karo lapangan sampeyan bakal bisa ngerteni.

Apa siswa dadi goblok? Tren global, internasionalisasi.

Alexey: Sampeyan wis ngamati siswa pirang-pirang dekade. Apa siswa dadi dumber utawa luwih pinter saka dasawarsa nganti dekade utawa taun nganti taun? Ing Rusia, profesor terus-terusan sambat yen siswa dadi dumber saben taun, lan pancen ora jelas apa sing kudu ditindakake.

Michael: Sampeyan bisa krungu akeh negatif saka kita wong tuwa. Tanpa sadar, kita duwe kecenderungan ngarepake para siswa nyerep kabeh pengalaman 30 taun sing wis ana. Yen aku duwe pangerten sing luwih jero tinimbang taun 1985, kenapa para siswa ora duwe? Mbokmenawa amarga umure 20 taun, apa sampeyan mikir? Aku mikir owah-owahan sing paling penting ing dekade pungkasan yaiku komposisi demografi: saiki kita duwe siswa internasional sing luwih akeh, kajaba wong Kanada. Biyen ana akeh wong Kanada amarga kita cedhak banget karo tapel wates Kanada lan siswa saka kana bisa mulih ing akhir minggu. Nanging saiki ana akeh universitas sing apik ing Kanada, lan wong Kanada luwih seneng sinau ing kene.

Alexey: Apa sampeyan mikir iki minangka tren lokal utawa global?

Michael: Aku ora ngelingi persis sapa, nanging ana sing ngomong yen donya iku warata. Lapangan kita wis dadi luwih internasional. Konferensi ACM Sadurungé, padha dianakaké sacara eksklusif ing Amerika Serikat, banjur mutusaké kanggo nyekeli saben 4 taun sepisan ing negara liya, lan saiki lagi dianakaké ing saindhenging donya. Owah-owahan kasebut kena pengaruh luwih akeh IEEE, amarga wis tansah dadi organisasi internasional luwih saka ACM. Lan ana kursi program saka China, India, Rusia, Jerman lan akeh negara liyane, amarga saiki ana akeh sing kedadeyan ing endi wae.

Alexey: Nanging, mbokmenawa, ana sawetara aspek negatif saka internasionalisasi kuwi?

Michael: Aku bakal ngomong yen kabeh aspek negatif ora ana hubungane karo teknologi, nanging politik. Biyen, masalah utama yaiku nyatane yen AS nyolong wong sing paling pinter lan paling bakat saka negara-negara ing saindenging jagad. Lan saiki masalah utama yaiku game politik ing antarane macem-macem negara ing sekitar visa lan imigrasi.

Alexey: Yaiku pepalang lan liya-liyane. Wis cetha.

Vladimir: Secara pribadi, aku kepengin weruh pendekatan apa sing sampeyan gunakake nalika mulang mata pelajaran anyar kanggo siswa. Ana macem-macem opsi: sampeyan bisa nyoba pisanan kabeh kanggo menehi inspirasi kanggo nyoba soko anyar, utawa sampeyan bisa mbayar manungsa waé liyane kanggo rincian carane teknologi tartamtu bisa digunakake. Apa sing luwih disenengi?

Karya efektif karo siswa

Alexey: Lan carane golek imbangan peduli antarane pisanan lan kaloro?

Michael: Masalahe yaiku kelas ora mesthi mlaku kaya sing dakkarepake. Biasane aku menehi materi wacan kanggo siswa luwih dhisik supaya bisa ngerteni, ngerti kanthi maksimal, lan ngrumusake pitakonan babagan bagean sing ora bisa dingerteni. Banjur ing kelas sampeyan bisa fokus ing wektu sing paling angel lan njelajah bebarengan. Iki carane aku paling seneng mulang kelas. Nanging amarga beban sing saiki ana ing siswa, aku ora tansah bisa nggawe manawa dheweke nyiapake luwih dhisik. Akibaté, sampeyan kudu nyawisake wektu luwih akeh kanggo nyritakake maneh materi saka sing dikarepake. Senadyan iki, aku nyoba supaya kelas kita interaktif. Yen ora, luwih gampang ngrekam video yen siswa bisa nonton ing omah. Titik kelas urip yaiku interaksi manungsa. Ing kelas, aku luwih seneng nggunakake kapur lan blackboard tinimbang minger, kajaba ing kasus tartamtu nalika diagram banget Komplek kanggo nggambarake ing Papan. Thanks kanggo iki, aku ora kudu tetep nganggo rencana pelajaran sing kaku. Amarga ora ana urutan sing ketat kanggo menehi materi, mula aku bisa ngatur kanggo pamirsa gumantung saka pitakonan sing daktampa. Umumé, aku nyoba nggawe kelas minangka interaktif sabisa, supaya materi sing aku sajikake gumantung saka pitakonan sing dijaluk marang aku.

Vladimir: Apik banget. Ing pengalamanku, cukup angel kanggo njaluk pamireng kanggo takon. Sanadyan takon rumiyin kanggo takon apa wae, bodho utawa pinter, dheweke tetep meneng. Kepiye cara sampeyan ngatasi iki?

Michael: Sampeyan bakal ngguyu, nanging yen sampeyan meneng cukup suwe, cepet utawa mengko kabeh bakal ora kepenak lan ana sing takon. Utawa sampeyan bisa takon pitakonan teknis prasaja kanthi jawaban ya utawa ora kanggo nemtokake manawa wong ngerti apa sing diomongake. Contone, ana lomba data ing conto ing ndhuwur? Sapa sing ngira? Sapa sing ora mikir? Sapa sing ora ngerti apa-apa, amarga total mung setengah tangan munggah?

Vitali: Lan yen sampeyan salah wangsulan, sampeyan diusir saka kelas :)

Michael: Yen sampeyan durung mangsuli apa-apa, sampeyan kudu takon. Aku kudu ngerti persis apa sing kudu dingerteni siswa kanggo mangsuli pitakon sing dakkarepake. Aku butuh wong-wong mau nulungi aku. Aku siap adaptasi karo dheweke supaya ngerti masalah kasebut. Nanging yen aku ora ngerti apa sing ana ing sirahe, aku ora bisa nindakake. Lan yen sampeyan ora menehi katentreman siswa kanggo wektu sing cukup suwe, kadhangkala ing pungkasan dheweke takon pitakonan sing bener, yaiku, sing ngidini aku ndeleng apa sing kedadeyan ing sirah siswa. 

Alexey: Apa pitakonan-pitakonan iki kadhang-kadhang nuwuhake gagasan-gagasan sing durung panjenengan pikirake sadurunge? Apa padha ora dikarepke? Apa padha ngidini sampeyan ndeleng masalah ing cahya anyar?

Michael: Ana pitakonan sing mbukak cara anyar kanggo menehi materi. Asring ana pitakonan sing nyebabake masalah sing menarik sing ora dakrencanakake. Siswa asring ngandhani yen aku duwe karep kanggo metu saka topik nalika kedadeyan kasebut. Lan, miturut wong-wong mau, asring banget iki minangka bagéan paling menarik saka pawulangan. Arang banget, mung kaping pirang-pirang, siswa takon pitakonan sing nyebabake arah anyar ing riset lan tuwuh dadi artikel. Iki kedadeyan luwih asring ing obrolan karo siswa tinimbang ing kelas, nanging kadhangkala kedadeyan nalika kelas. 

Alexey: Dadi murid-murid takon pitakon-pitakon sing adhedhasar apa banjur bisa nerbitake artikel?

Michael: Nggih. 

Vitali: Sepira kerepe sampeyan ngobrol karo siswa? Kapan dheweke pengin sinau luwih akeh tinimbang apa sing dibahas sajrone pawulangan?

Michael: Karo mahasiswa pascasarjana - kabeh wektu. Aku duwe bab 5 utawa 6 wong, lan kita ngrembug soko karo wong-wong mau kabeh wektu. Lan obrolan kaya iki karo siswa sing mung mlebu kelasku ora umum. Senajan aku pengin iki kedaden luwih kerep. Aku curiga yen dheweke mung wedi teka ing fakultas nalika jam kantor. Saben semester, sawetara siswa bisa ngatasi alangan psikologis iki, lan mesthi menarik banget kanggo ngobrol karo dheweke sawise kelas. Bener, yen kabeh siswa padha wani, aku mung ora duwe cukup wektu. Dadi mungkin kabeh bisa mlaku kaya sing dikarepake. 

Vitali: Kepiye carane sampeyan bisa nemokake wektu kanggo komunikasi karo siswa? Satemene aku ngerti, ing Amerika Serikat guru akeh gawean - nglamar dana lan liya-liyane. 

Michael: Jujur, nggarap siswa minangka aspek kerja sing paling disenengi. Dadi aku duwe motivasi sing cukup kanggo iki. Umume wektu sing dakwenehake ing kantor digunakake kanggo rapat-rapat kabeh jinis. Saiki lagi musim panas, dadi jadwalku kurang rame, nanging nalika taun sekolah, saben dina jam 9 nganti 17 aku wis kebak kabeh. Karya riset, review, hibah - kabeh iki mung ana ing wayah sore lan akhir minggu. 

Kepiye carane nyiapake kursus lan buku anyar.

Alexey: Sapunika panjenengan nglajengaken kursus-kursus ingkang sampun dangu panjenengan wulang? Soko kaya introduksi kanggo Ilmu Komputer.

Michael: Bab pisanan sing dipikirake ing kene yaiku kursus basa pemrograman. 

Alexey: Piye bedane kursus saiki karo kursus 10, 20, 30 taun kepungkur? Mbok menawa sing luwih menarik ing kene dudu rincian kursus tartamtu, nanging tren umum.

Michael: Kursusku babagan basa pemrograman rada ora biasa nalika aku nggawe. Aku wiwit maca ing pungkasan taun 1980-an, ngganti kancaku, Doug Baldwin (Doug Baldwin). Topik kursus kasebut mung ana gandhengane karo spesialisasiku, nanging nalika dheweke lunga, aku dadi calon sing paling apik kanggo mulang kursus kasebut. Aku ora seneng karo buku teks sing ana ing wektu kasebut, mula aku nulis buku pelajaran kanggo kursus iki dhewe. (Cathetan editor: kita ngomong babagan buku "Pragmatik Bahasa Pemrograman") Saiki digunakake ing luwih saka 200 universitas ing saindenging jagad. Pendekatanku ora biasa amarga sengaja nyampurake masalah desain lan implementasine basa, lan menehi perhatian gedhe marang interaksi antarane aspek kasebut ing kabeh wilayah sing bisa ditindakake. Pendekatan dhasar tetep ora owah, kayadene akeh konsep dhasar: abstraksi, spasi jeneng, modularitas, jinis. Nanging pesawat saka basa kang nuduhake konsep iki wis diganti kabeh. Nalika kursus pisanan digawe, ana akeh conto ing Pascal, nanging saiki akeh siswa sing durung krungu babagan basa iki. Nanging dheweke ngerti Swift, Go, Rust, mula aku kudu ngomong babagan basa sing digunakake saiki. Uga, para siswa saiki wis ngerti basa skrip, nanging nalika aku miwiti mulang kursus iki, kabeh babagan basa sing disusun. Saiki kita butuh akeh materi babagan Python, Ruby lan malah Perl, amarga iki kode sing ditulis ing jaman saiki, lan ana akeh perkara menarik sing kedadeyan ing basa kasebut, kalebu ing babagan desain basa. 

Vitali: Lajeng pitakenan kula salajengipun badhe gayut kaliyan ingkang rumiyin. Carane tetep ing wilayah iki? Aku curiga yen nganyari kursus kaya iki mbutuhake akeh karya - sampeyan kudu ngerti basa anyar, ngerti ide utama. Kepiye carane nindakake iki?

Michael: Aku ora bisa gumunggung yen aku tansah sukses 100%. Nanging umume aku mung nindakake apa sing ditindakake wong liya - maca Internet. Yen aku pengin ngerti Rust, aku Google, menyang kaca Mozilla lan maca manual sing dikirim ing kana. Iki minangka bagean saka kedadeyan ing pangembangan komersial. Yen kita ngomong babagan ilmu, mula sampeyan kudu ngetutake laporan ing konferensi utama. 

Link antarane bisnis lan akademisi

Vitali: Ayo kita ngomong babagan hubungan antara bisnis lan riset ilmiah. Ing dhaptar karya sampeyan, aku nemokake sawetara artikel babagan koherensi cache. Aku ngerti yen algoritma konsistensi cache ora stabil nalika diterbitake? Utawa ora cukup nyebar. Carane umum padha gagasan ing laku?

Michael: Aku ora yakin manawa publikasi sing sampeyan gunakake. Aku wis rampung sawetara karya karo murid-muridku Bill Bolosky (William Boloskylan Leonidas Kontotanassis (Leonidas Kontothanassis) ing awal taun 1990-an ing manajemen memori mesin Neumann. Ing wektu iku, bisnis durung duwe pangerten carane mlaku nggawe sistem multiprocessor: apa iku worth nggawe support kanggo ngakses memori remot ing tingkat hardware, iku worth nggawe memori mbagekke, iku bisa kanggo mbukak cache saka memori remot, utawa iku perlu kanggo mindhah kaca ing kamar operasi? Bill lan Leonidas loro-lorone makarya ing wilayah iki lan njelajah pendekatan tanpa ngemot cache remot. Iki ora ana hubungane langsung karo koherensi cache, nanging isih bisa digunakake ing manajemen memori NUMA, lan pendekatan modern kanggo penempatan kaca ing sistem operasi modern tuwuh saka iki. Sakabèhé, Bill lan Leonidas nindakake pakaryan penting, sanajan dudu sing paling berpengaruh ing wilayah iki - ana akeh wong liya sing nggarap perkara sing padha nalika iku. Mengko, aku nggarap topik sing ana gandhengane karo koherensi cache ing konteks memori transaksional hardware. Klompok aku kerjo karo masalah iki rampung munggah nampa sawetara paten. Ana sawetara ide sing menarik, nanging aku ora mikir bakal ditindakake ing praktik. Siji cara utawa liyane, angel kanggo aku ngadili bathi. 

Alexey: Ing babagan iki, pitakonan sing luwih pribadi: sepira pentinge ide sampeyan dileksanakake? Utawa sampeyan ora mikir babagan iki?

Michael: Aku seneng takon pitakonan iki nalika wawancara karo wong liya, pelamar utawa calon sing pengin mlebu fakultas. Aku ora mikir ana jawaban sing bener kanggo pitakonan iki. Wong sing nindakake perkara sing keren bisa duwe motivasi sing beda banget. Aku kepincut karo masalah amarga aku pribadi nemokake dheweke menarik, ora amarga keuntungan praktis. Nanging ing sisih liya, nalika sawetara perkara sing menarik isih nemokake aplikasi, aku seneng banget. Dadi ora gampang ing kene. Nanging ing wiwitan karya, aku isih didorong ora dening gagasan babagan panggunaan pungkasan ing donya, nanging kanthi harmoni ide lan kepinginan kanggo njelajah lan ndeleng apa sing kedadeyan. Yen ing pungkasan menehi asil praktis, apik. 

Alexey: Amarga saka pendhidhikan lan pengalaman sampeyan, sampeyan luwih bisa ngira-ngira nilai saka gagasan wong liya. Sampeyan bisa mbandhingake lan nemtokake apa sing luwih apik. Aku manawa sampeyan duwe mratelakake panemume bab sing saiki digunakake ing laku dening manufaktur gedhe kaya Intel. Saka sudut pandang sampeyan, kepiye cara sing ditindakake perusahaan kasebut?

Michael: Laku tansah muter babagan apa sing bisa sukses kanthi komersial, yaiku, nggawe bathi, lan luwih becik sampeyan takon marang wong liya babagan iki. Karyaku biasane ngasilake publikasi, lan ing bidang sistem operasi dievaluasi adhedhasar indikator kinerja: kacepetan, konsumsi energi, ukuran kode. Nanging tansah ketoke kanggo kula asil empiris iki ditambahake kanggo artikel mung supaya padha bisa diterbitake, lan motif nyata wong kanggo karya iku estetis. Peneliti ngevaluasi solusi saka perspektif artistik, padha peduli babagan carane elegan gagasan, lan padha nyoba kanggo nggawe soko luwih apik saka pendekatan ana. Peneliti didorong dening motif pribadi, subyektif, estetis. Nanging sampeyan ora bisa nulis babagan iki ing artikel kasebut dhewe. Untunge, solusi elegan asring uga cepet lan murah. A rolas saka kolega lan aku rembugan topik iki bab 15 taun kepungkur lan rampung munggah nulis artikel bab iku. Aku sampeyan isih bisa nemokake saiki, diarani "Cara ngevaluasi riset sistem" utawa kaya sing, wis luwih saka rolas penulis. Iki mung artikel sing aku dadi penulis bebarengan Sasha Fedorova, dadi yen sampeyan nggoleki jenenge ing dhaptar publikasi, sampeyan bakal nemokake apa sing sampeyan butuhake. Ngomong babagan ngevaluasi riset sistem lan kepiye pentinge keanggunan. 

Alexey: Dadi ana bedane antarane standar apa sing dianggep apik ing ilmu lan bisnis. Ilmu kasebut ngevaluasi kinerja, konsumsi daya, TDP, gampang ditindakake, lan liya-liyane. Apa sampeyan duwe kesempatan kanggo nindakake riset jinis iki ing universitas? Apa sampeyan duwe laboratorium kanthi macem-macem mesin lan arsitektur sing beda-beda ing ngendi sampeyan bisa nindakake eksperimen?

Michael: Ya, departemen kita duwe macem-macem mesin sing menarik. Paling asring padha cilik, kita duwe kluster cilik lan akeh sistem multiprocessor karo akselerator beda. Kajaba iku, kampus kasebut duwe pusat komputasi gedhe sing nglayani para ilmuwan saka pirang-pirang disiplin ilmu. Wis udakara sewu simpul lan rong puluh ewu inti, kabeh ana ing Linux. Yen perlu, sampeyan bisa tuku sawetara AWS. Dadi kita ora duwe watesan sing signifikan karo hardware. 

Alexey: Kaya apa telung puluh taun kepungkur? Apa ana masalah banjur?

Michael: Wektu iku rada beda. Ing pertengahan nganti pungkasan taun 1980-an, ilmu pengetahuan dianggep kekurangan sumber daya komputasi. Kanggo ngatasi kahanan kasebut, Yayasan Ilmu Nasional (Yayasan Ilmu Nasional) nggawe program riset eksperimen terkoordinasi (Coordinated Experimental Research, CER). Misi program kasebut yaiku nyedhiyakake infrastruktur komputasi kanggo departemen Ilmu Komputer, lan wis entuk owah-owahan sing signifikan. Kanthi dhuwit sing diwenehake, kita ing Universitas Rochester tuku BBN Butterfly 1984 knot ing 128, iki setaun sadurunge aku teka ing kana. Ing wektu iku sistem multiprocessor paling gedhé ing donya karo memori sambungan. Wis 128 prosesor, saben ing motherboard kapisah, lan dikuwasani papat rak. Saben prosesor duwe memori megabyte, 128 megabyte RAM minangka jumlah sing ora bisa dibayangake nalika iku. Ing mesin iki, kita ngetrapake kunci MCS kanggo pisanan. 

Alexey: Dadi, yen aku ngerti sampeyan bener, banjur ing wayahe masalah karo hardware wis ditanggulangi? 

Michael: Umumé, ya. Ana sawetara caveats: pisanan, yen sampeyan nindakake arsitektur komputer ing tingkat chip, iku angel kanggo nindakake ing lingkungan akademisi amarga ana pribadi luwih apik kanggo nindakake ing bisnis. Yen sampeyan butuh sing luwih cilik tinimbang 10 nanometer, sampeyan kudu pesen saka wong liya. Ing wilayah iki luwih gampang dadi peneliti ing Intel. Yen sampeyan nggarap komunikasi optik ing chip utawa memori solid-state, sampeyan bakal nemokake teknologi ing bisnis sing durung ana ing ilmu pengetahuan, mula sampeyan kudu nggawe aliansi. Contone, Stephen Swanson (Steven Swanson) digawe kemitraan kuwi kanggo teknologi memori anyar. Wangun iki ora tansah bisa, nanging ing sawetara kasus bisa cukup sukses. Kajaba iku, ing ilmu, pangembangan sistem komputasi paling kuat luwih angel. Proyek superkomputer paling gedhe saiki ing AS, Jepang lan China kabeh fokus ing bisnis. 

Implementasi gagasan praktis. MCS, MS, CLH, JSR 166, nggarap Doug Lee lan liya-liyane.

Vitali: Sampeyan wis ngomong babagan carane sampeyan miwiti nggarap algoritma sinkronisasi. Sampeyan duwe rong artikel sing misuwur banget babagan MCS pamblokiran и Antrian Michael-Scott (MS), kang ing pangertèn iki dileksanakake ing Jawa. (Cathetan editor: kabeh publikasi bisa dideleng link). Ing kana pamblokiran iki ditindakake kanthi sawetara owah-owahan lan ternyata kunci CLH, lan antrian dileksanakake kaya sing dikarepake. Nanging pirang-pirang taun liwati antarane publikasi artikel sampeyan lan aplikasi praktis. 

Alexey: Iku misale jek bab 10 taun ing kasus antrian.

Michael: Sadurunge fitur-fitur kasebut muncul ing perpustakaan standar Jawa?

Vitali: Nggih. Apa sing sampeyan tindakake kanggo nggawe iki kelakon? Utawa padha nindakake apa-apa?

Michael: Aku pitutur marang kowe carane MS Queue mlebu ing Jawa 5. Sawetara taun sadurunge metu, Aku kerjo karo klompok Mark Moyers ing Sun Microsystems ing Lab cedhak Boston. Dheweke nganakake lokakarya kanggo wong-wong sing dheweke kenal sing nggarap masalah menarik ing multithreading amarga dheweke pengin golek topik sing bisa didol menyang perusahaan. Ing kana aku pisanan ketemu Doug Lea. Doug lan aku lan bab 25 wong saka Sun padha bebarengan ngrembug presentation Doug ing JSR 166, sing banjur dadi java.util.concurrent. Sadawane dalan, Doug ngandika yen dheweke pengin nggunakake antrian MS, nanging iki perlu counter kanggo nomer unsur ing antrian kanggo antarmuka. Tegese, iki kudu ditindakake kanthi cara sing kapisah, atom, akurat lan cepet. Aku disaranake mung nambah nomer serial menyang kelenjar, njupuk nomer simpul pisanan lan pungkasan lan subtracting siji saka liyane. Doug garuk-garuk sirahe, ngandika "kok ora,"Lan rampung munggah mung sing. We rembugan ngleksanakake pendekatan iki ing perpustakaan, nanging Doug nindakake paling karya piyambak. Akibaté, dheweke bisa nggawe dhukungan multithreading sing apik banget ing Jawa. 

Alexey: Dadi, yen aku ngerti bener, kudu .size () cara wis bagéan saka antarmuka antrian standar, lan iku kudu duwe kerumitan algorithmic O (1)?

Michael: Ya, lan saliyane iki, counter kapisah dibutuhake.

Alexey: Amarga yen sampeyan nelpon cara .size () ing Jawa, asil samesthine kasedhiya langsung lan ora adhedhasar ukuran nyata saka koleksi. Aku weruh, matur nuwun.

Michael: Sawetara taun sabanjure aku nggarap struktur data dual karo muridku Bill Scherer - nyatane, iki sing bakal dakkandhakake. laporan babagan Hydra. Doug teka kanggo kita lan ngandika sing bisa digunakake ing Java Executor Framework. Bebarengan karo Bill, dheweke nggawe rong implementasine, sing diarani antrian sing adil lan ora adil. Aku menehi saran babagan proyek iki, sanajan aku ora melu nulis kode nyata. Akibaté, kacepetan eksekutor saya tambah akeh. 

Vladimir: Apa sampeyan nemoni implementasi algoritma utawa panjaluk sing salah kanggo nambah fitur anyar? Umumé, praktik kudu cocog karo teori, nanging asring beda-beda. Upamane sampeyan nulis algoritma, lan ing kertas kerjane, nanging wong-wong sing melu implementasine wiwit takon sampeyan luwih akeh fitur utawa sawetara jinis tweaking algoritma kasebut. Apa sampeyan tau ngalami kahanan kaya ngono?

Michael: Siji-sijine conto sing ana wong sing teka lan takon "carane ngetrapake" yaiku pitakonan Doug, sing wis dakkandhakake. Nanging ana sawetara kasus sing owah-owahan menarik wis digawe kanggo cocog karo kabutuhan praktis. Contone, tim K42 ing IBM ngowahi kunci MCS lan nggawe antarmuka standar supaya ora perlu ngliwati simpul antrian bolak-balik menyang rutin ndarbeni lan ngeculake. Thanks kanggo antarmuka standar iki, idea sing ayu ing teori wiwit bisa ing laku. Iku ngageti sing padha tau nerbitaké artikel bab iku, lan senajan padha nampa paten, padha mengko nilar. Ing idea iki apik banget, lan aku nyoba kanggo pirembagan bab iku sabisa. 

Ana kasus liyane ing ngendi wong wis nggawe dandan kanggo algoritma sing wis diterbitake. Contone, antrian MS duwe mekanisme instalasi rong langkah, sing tegese ana rong CAS ing jalur kritis antrian. Ing mobil lawas, CAS cukup larang. Intel lan manufaktur liyane wis ngoptimalake kanthi apik, nanging biyen iki minangka instruksi 30-siklus, saengga ora ana luwih saka siji ing jalur kritis. Akibaté, antrian beda dikembangaké sing padha karo antrian MS, nanging mung siji operasi atom ing path kritis. Iki digayuh amarga kasunyatan sing sajrone wektu tartamtu operasi bisa njupuk O (n) wektu, tinimbang O (1). Iku ora mungkin, nanging bisa. Iki kedadeyan amarga kasunyatane ing wektu tartamtu algoritma ngliwati antrian saka wiwitan nganti posisi saiki ing antrian iki. Umumé, algoritma kasebut dadi sukses banget. Sa adoh aku ngerti, iku ora banget digunakake, sebagéyan amarga operasi atom mbutuhake sumber daya Ngartekno kurang saka sadurunge. Nanging ide kasebut apik banget. Aku uga seneng banget karo karya Dave Dice saka Oracle. Kabeh sing ditindakake pancen praktis lan dheweke nggunakake wesi kanthi pinter. Dheweke duwe tangan ing akeh algoritma sinkronisasi NUMA lan struktur data multi-threaded. 

Vladimir: Nalika sampeyan nulis algoritma utawa mulang siswa, asil karya sampeyan ora langsung katon. Komunitas butuh sawetara wektu kanggo kenal, umpamane, artikel anyar. Algoritma anyar ora langsung nemokake aplikasi. 

Michael: Iku adoh saka langsung cetha apa artikel bakal pinunjul utawa ora. Aku mikir bakal menarik kanggo sinau babagan makalah sing menang penghargaan ing konferensi. Yaiku, deleng artikel sing dianggep paling apik dening panitia program ing sawijining wektu. Sampeyan kudu nyoba ngetung kanthi jumlah tautan lan pengaruhe babagan bisnis kepiye pengaruh artikel kasebut ing 10, 20, 25 taun. Aku mangu bakal ana korélasi kuwat antarane loro. Ora bakal nol, nanging kemungkinan bakal luwih lemah tinimbang sing dikarepake. Akeh gagasan tetep ora diklaim kanggo dangu sadurunge padha nyebar. Contone, ayo njupuk memori transaksional. Luwih saka 10 taun liwati saka wektu artikel asli diterbitake kanggo wektu wong bener miwiti mbangun mesin karo. Lan sadurunge munculé memori iki ing produk komersial - lan kabeh 20. Kanggo wektu sing suwe ora ana sing menehi perhatian marang artikel kasebut, banjur jumlah pranala menyang tambah akeh banget. Iku bakal angel kanggo prédhiksi iki ing advance. Ing tangan liyane, kadhangkala gagasan nemokake implementasine langsung. Sawetara taun kepungkur, aku nulis kertas karo Joe Izraelevitz kanggo DISC sing ngusulake definisi resmi anyar babagan kesahihan kanggo struktur data sing terus-terusan sing bisa digunakake sawise komputer sing mlaku dheweke tabrakan. Aku seneng artikel kasebut wiwit wiwitan, nanging dadi luwih populer tinimbang sing dakkarepake. Iki digunakake dening sawetara klompok sing beda-beda lan pungkasane dadi definisi standar struktur kegigihan. Kang, mesthi, becik.

Vladimir: Apa ana teknik sing digunakake kanggo penilaian? Apa sampeyan malah nyoba ngevaluasi artikel lan siswa sampeyan? Ing babagan apa wong sing diwulang iku arep ing arah sing bener.

Michael: Kaya wong liya, aku luwih nggatekake apa sing daklakoni saiki. Maneh, kaya wong liya, aku sok-sok mriksa Google Scholar kanggo ndeleng manawa makalahku sing kepungkur dikutip, nanging luwih penasaran. Paling-paling aku sregep karo apa sing ditindakake murid-muridku saiki. Nalika nerangake evaluasi karya saiki, bagean kasebut minangka pertimbangan estetis, apa sing elegan lan apa sing ora. Lan ing tingkat saben dina, pitakonan mbukak nduweni peran gedhe. Contone, mahasiswa teka kula karo grafik saka sawetara asil, lan kita nyoba kanggo ngerti ngendi sawetara prilaku aneh saka graph teka saka. Umumé, ing karya kita tansah nyoba kanggo mangerteni bab-bab sing durung ngerti. 

Memori transaksional

Vitali: Mungkin kita bisa ngomong sethitik bab memori transactional?

Michael: Aku iku worth ngandika paling sethithik amarga aku sijine akeh gaweyan menyang. Iki minangka topik sing aku duwe publikasi luwih akeh tinimbang liyane. Nanging ing wektu sing padha, cukup aneh, aku tansah mamang babagan memori transaksional. Miturut panemuku, artikel dening Herlihy lan Moss (M. Herlihy, J. E. B. Moss) diterbitake luwih dhisik. Ing wiwitan taun 1990-an, dheweke ngusulake yen memori transaksional bisa mbantu programer sing duwe bakat nggarap struktur data multi-threaded, supaya struktur kasebut bisa digunakake minangka perpustakaan dening programer biasa. Sing, iku bakal bantuan kanggo Doug Lee nindakake JSR 166. Nanging memori transactional ora dimaksudaké kanggo nggawe program multi-Utas gampang. Nanging iki persis carane wiwit dirasakake ing awal 2000s, nalika nyebar. Iki diiklanake minangka cara kanggo ngatasi masalah pemrograman paralel. Pendekatan iki tansah ketoke ora duwe pengarep-arep kanggo kula. Memori transaksional mung bisa nggawe luwih gampang kanggo nulis struktur data paralel. Iki, misale jek kula, apa dheweke entuk. 

Babagan kangelan nulis kode multi-threaded

Alexey: Apik banget. Kayane ana alangan tartamtu antarane programer biasa lan sing bisa nulis kode multi-threaded. Taun kepungkur, aku ngomong kaping pirang-pirang karo wong sing ngetrapake sawetara kerangka algoritma. Contone, karo Martin Thomson, uga karo programer nggarap perpustakaan multi-threaded. (Cathetan editor: Martin Thompson minangka pangembang sing misuwur banget, dheweke nulis disruptor и Aeron. Lan dheweke uga duwe laporan ing Joker kita 2015 konferensi, ngrekam video kasedhiya ing YouTube. Dheweke uga padha dibukak konferensi iki rekaman intine uga kasedhiya). Tantangan utama, ujare, nggawe algoritma kanthi cepet lan gampang digunakake. Yaiku, dheweke nyoba ngatasi alangan iki lan narik akeh wong menyang wilayah kasebut. Apa sampeyan mikir babagan iki?

Michael: Iki minangka masalah utama multithreading: carane entuk kinerja dhuwur tanpa nambah kerumitan sistem. 

Alexey: Amarga nalika padha nyoba supaya kerumitan, algoritma dadi kurang universal.

Michael: Tombol ing kene yaiku abstraksi sing dirancang kanthi bener. Iku misale jek kula sing iki umume bab utama kanggo sistem komputer minangka lapangan. Butler Lampson seneng nggunakake istilah iki, lan dheweke nyebut kita "pedagang abstraksi." Teknologi prasaja ora ana saiki. Prosesor sing digunakake duwe 10 milyar transistor - kesederhanaan ora ana pitakonan. Ing wektu sing padha, ISA luwih prasaja tinimbang prosesor, amarga kita kerja suwe banget kanggo nyedhiyakake kinerja dhuwur lan antarmuka sing relatif prasaja. Nanging ora kabeh lancar karo dheweke. Masalah sing padha karo akselerator sing saiki katon ing pasar. Pitakonan muncul - carane nggawe antarmuka sing tepat kanggo GPU, mekanisme enkripsi, kompresi, mekanisme transkoding, mekanisme aljabar linier, utawa malah FPGA sing luwih fleksibel. Kepiye carane nggawe antarmuka sing nggawe alat kasebut gampang digunakake lan ndhelikake kerumitan? Ora bakal nyingkirake, nanging ndhelikake saka programer sing prasaja. 

Alexey: Nalika aku ngerti, kita isih duwe alangan kanggo mangerteni abstraksi. Ayo njupuk model memori ing tahap pangembangan ilmu pengetahuan lan teknologi, iki minangka salah sawijining abstraksi utama. Thanks kanggo iki, kabeh programer dipérang dadi rong klompok: bagean sing luwih gedhe yaiku sing ora ngerti, lan sing luwih cilik yaiku sing ngerti, utawa mikir sing ngerti. 

Michael: Pitakonan sing apik - apa ana sing ngerti model memori?

Vitali: Utamané ing C++.

Michael: Dhiskusi karo Hans Boehm arang-arang. Dheweke iku salah siji saka wong pinter aku ngerti, pakar anjog ing model memori. Dheweke bakal langsung ngandhani yen ana akeh sing ora dingerteni. Nanging yen kita bali menyang masalah abstraksi, mula, miturut pendapatku, ide sing paling penting ing bidang model memori sajrone 30 taun kepungkur wis ditulis. ing disertasi Sarita Adve. (Cathetan editor: dhaptar lengkap publikasi kasedhiya link).

Alexey: Pitakonanku: apa alangan iki asale saka sifat konsep kasebut? 

Michael: Ora. Sarita teka menyang kesimpulan yen kanthi pendekatan sing bener, sampeyan bisa ndhelikake kabeh kerumitan, entuk kinerja dhuwur lan menehi programer API sing prasaja. Lan yen sampeyan tindakake API iki, sampeyan bisa entuk konsistensi konsisten. Aku iki model tengen. Tulis kode tanpa balapan data lan entuk konsistensi urutan. Mesthine, kanggo nyuda kemungkinan balapan, butuh alat khusus, nanging iki liyane. 

Vladimir: Apa ana wektu ing karir sampeyan nalika masalah sing katon wis rampung dumadakan dadi malapetaka, utawa dadi masalah iki ora bisa diatasi? Contone, ing teori sampeyan bisa faktor sembarang nomer utawa nemtokake apa nomer prima. Nanging ing laku iki bisa dadi angel kanggo nindakake karo hardware saiki iku angel kanggo faktor nomer. Apa kedadeyan sing padha karo sampeyan?

Michael: Aku ora langsung kelingan sing kaya ngono. Ana wektu nalika aku rumangsa ora ana sing bisa ditindakake ing wilayah tartamtu, nanging ana kedadeyan sing anyar lan menarik. Contone, aku mikir yen area antrian tanpa wates wis tekan kadewasan. Sawise pirang-pirang dandan ing antrian MNS, ora ana sing kedadeyan maneh. Banjur Morrison (Adam Morrison) lan Afek (Yehuda Afek) nemokke LCRQ antrian. Dadi cetha yen antrian multi-Utas sing ora ana watesan bisa ditindakake, ing ngendi umume mung ana instruksi njupuk-lan-nambah ing jalur kritis. Lan iki ndadekake bisa entuk urutan gedhene kinerja sing luwih apik. Iku ora kita ora ngerti yen njupuk-lan-nambah iku bab banget migunani. Eric Freudenthal nulis babagan iki ing karyane ing Ultracomputer karo Allan Gottlieb ing pungkasan taun 1980-an, nanging babagan antrian winates. Morrison lan Afek bisa nggunakake fetch-and-increment ing antrian tanpa wates.

Arsitèktur anyar. Apa kamenangan memori transactional cedhak?

Vladimir: Apa sampeyan nggoleki solusi arsitektur anyar sing bisa migunani kanggo algoritma? 

Michael: Mesthi, ana akeh bab sing aku pengin ndeleng kaleksanan. 

Vladimir: Tuladhanipun kados pundi?

Michael: Kaping pisanan, sawetara ekstensi prasaja kanggo memori transaksional tingkat hardware ing prosesor Intel lan IBM. Utamane, aku pengin mbukak lan nyimpen non-transaksional sing mung kedadeyan langsung kasedhiya ing transaksi. Dheweke langsung mimpin menyang puteran ing urutan sing kedadeyan-sadurunge, saengga bisa dadi angel. Nanging yen sampeyan njaga lapisan abstraksi, ana akeh perkara sing menarik sing bisa ditindakake ing njaba transaksi nalika kedadeyan kasebut. Aku ora ngerti carane angel iki bakal kanggo ngleksanakake, nanging bakal banget migunani. 

Bab liya sing migunani yaiku ngemot cache saka memori remot. Aku mikir cepet utawa mengko iki bakal rampung. Teknologi iki bakal ngidini nggawe sistem kanthi memori sing dipisahake. Iku bakal bisa kanggo nyimpen, ngomong, 100 terabyte memori nonvolatile ing rak, lan sistem operasi dhewe bakal mbosenke arep kang bagean saka memori sing kudu cocog karo papan alamat fisik saka prosesor. Iki bakal migunani banget kanggo komputasi awan, amarga bakal ngidini akeh memori diwenehake kanggo tugas sing mbutuhake. Aku wong bakal nindakake.

Vitali: Kanggo rampung ngomong bab memori transactional, Aku duwe siji liyane pitakonan ing topik iki. Bakal memori transactional pungkasanipun ngganti struktur data multi-Utas standar?

Michael: Ora. Transaksi minangka mekanisme spekulatif. Ing tingkat pemrograman iki minangka kunci atom, nanging ing njero ana spekulasi. Prakiraan kasebut bisa digunakake yen akeh tebakan sing bener. Mulane, memori transactional bisa uga nalika Utas meh ora sesambungan karo saben liyane, lan sampeyan mung kudu nggawe manawa ora ana interaksi. Nanging yen pesen diwiwiti ing antarane benang, transaksi ora ana gunane. Ayo kula nerangake, kita ngomong babagan kasus nalika transaksi dibungkus kabeh operasi atom. Padha isih bisa kasil digunakake minangka komponen kanggo struktur data multi-threaded. Contone, yen sampeyan butuh CAS telung tembung, lan sampeyan kudu multithread telung bab cilik ing tengah algoritma saestu multithreaded sing dianggo karo rong puluh Utas ing wektu sing padha. Umumé, transaksi bisa migunani, nanging ora bakal ngilangi kabutuhan kanggo ngrancang struktur data multi-threaded kanthi bener. 

Memori non-molah malih, Optane DIMM, piranti ultra-cepet.

Vitali: Ing bab pungkasan aku kaya kanggo pirembagan bab topik riset saiki: memori non-molah malih. Apa sing bisa kita ngarepake ing wilayah iki ing mangsa ngarep? Sampeyan bisa uga ngerti babagan implementasine efektif sing wis ana? 

Michael: Aku dudu ahli hardware, aku mung ngerti apa sing diwaca ing warta lan apa sing diomongake karo kanca-kancaku. Kabeh wong wis krungu yen Intel adol Optane DIMM, sing duwe babagan 3 kaping latensi maca lan 10 kaping latensi nulis tinimbang RAM dinamis. Bakal kasedhiya ing versi volume gedhe banget. Iku lucu kanggo mikir sing bisa duwe laptop karo sawetara terabyte RAM byte-addressable. Kemungkinan ing 10 taun kita bakal mutusake nggunakake teknologi anyar iki, amarga kita nggunakake DRAM - mung nambah volume. Nanging thanks kanggo kamardikan energi, kesempatan anyar mbukak kanggo kita. Kita dhasar bisa ngganti tumpukan panyimpenan supaya ora ana pamisahan antarane memori kerja bait-addressable lan memori ngengkel blok-kastruktur. Mangkono, kita ora perlu serialize kabeh sing kudu ditransfer saka siji program mbukak liyane menyang file blok-struktur. Saka iki, kita bisa entuk akeh prinsip penting sing mengaruhi sistem operasi, lingkungan runtime, lan nyimpen data sing disebarake. Wilayah iki menarik banget kanggo digarap. Secara pribadi, angel kanggo prédhiksi apa sing bakal ditindakake, nanging masalah ing kene pancen nyenengake. Ana uga owah-owahan revolusioner kene, lan padha tindakake banget alamiah saka karya ing multithreading, wiwit Recovery Gagal punika "multithreading" proses jejere operasi normal saka sistem. 

Topik utama nomer loro sing saiki dakgarap yaiku ngatur piranti sing cepet banget lan ngamanake akses menyang piranti saka ruang pangguna kanthi kontrol kebijakan sistemik. Ing taun-taun pungkasan, ana tren kanggo mindhah akses menyang piranti menyang ruang pangguna. Iki rampung amarga tumpukan kernel TCP-IP ora bisa dienggo ing ndhuwur antarmuka jaringan sing mbutuhake paket anyar saben 5 mikrodetik ora bakal tetep. Mulane, manufaktur nyedhiyakake akses langsung menyang piranti. Nanging iki tegese sistem operasi ilang kontrol proses lan ora bisa nyedhiyani akses sing tepat kanggo piranti kanggo aplikasi saingan. Tim riset kita percaya yen kekurangan iki bisa dihindari. Kita bakal duwe artikel babagan iki ing USENIX ATC wulan iki. Iku gegandhengan karo karya ing terus-terusan, amarga memori ngengkel byte-addressable dawa-urip iku, ing intine, piranti karo ultra-cepet I / O sing kudu diakses ing userspace. Panaliten iki ndadekake pendekatan anyar kanggo microkernels, exokernels, lan upaya tradisional liyane kanggo mindhah fungsi kanthi aman saka kernel OS menyang ruang pangguna. 

Vladimir: memori Byte-addressable gedhe, nanging ana watesan fisik - kacepetan cahya. Iki tegese mesthi ana wektu tundha nalika sesambungan karo piranti kasebut. 

Michael: Pancen bener.

Vladimir: Apa ana kapasitas sing cukup kanggo ngatasi beban anyar?

Michael: Iki minangka pitakonan sing apik banget, nanging aku bakal angel mangsuli. Gagasan ngolah ing memori wis ana sawetara wektu, menarik banget, nanging uga rumit. Aku wis ora makarya ing wilayah iki, nanging bakal dadi gedhe yen sawetara panemon padha digawe ana. Aku wedi aku ora duwe apa-apa maneh kanggo nambah. 

Vladimir: Ana masalah siji maneh. Anyar, jumlah RAM sing luwih gedhe bakal ora bisa pas karo CPU. Mulane, amarga watesan fisik, RAM iki kudu diisolasi. 

Michael: Iku kabeh gumantung ing jumlah cacat ing produksi sirkuit terpadu. Yen sampeyan bisa nggawe wafer semikonduktor tanpa cacat, mula bisa nggawe kabeh microcircuit. Nanging saiki kita ora ngerti carane nggawe microcircuits luwih gedhe tinimbang prangko. 

Vladimir: Nanging kita isih ngomong babagan ukuran gedhe, kira-kira sentimeter. Iki mesthi duwe pengaruh ing latensi. 

Michael: Nggih. Ora ana sing bisa ditindakake babagan kacepetan cahya. 

Vladimir: Sayange. 

Tren gedhe sabanjure. Struktur data ganda. Hydra.

Vitali: Sa adoh aku ngerti, sampeyan nyekel tren anyar cepet banget. Sampeyan salah siji sing pisanan bisa ing memori transactional, lan salah siji sing pisanan bisa ing memori non-molah malih. Apa sampeyan mikir bakal dadi tren gedhe sabanjure? Utawa mbok menawa iku rahasia?

Michael: Jujur, aku ora ngerti. Muga-muga aku bisa ngerteni yen ana sing anyar. Aku wis ora cukup Bejo kanggo invent sembarang lapangan anyar ing dhewe, nanging aku wis sawetara luck lan bisa miwiti makarya cukup awal ing lapangan anyar digawe dening wong liya. Muga-muga aku bisa nindakake iki ing mangsa ngarep.

Alexey: Pitakonan pungkasan ing wawancara iki yaiku babagan kinerja sampeyan ing Hydra lan aktivitas sampeyan ing sekolah. Yen aku ngerti kanthi bener, laporan ing sekolah bakal babagan algoritma sing ora bisa diblokir, lan ing konferensi babagan struktur data ganda. Apa sampeyan bisa ngomong sawetara tembung babagan laporan kasebut?

Michael: Sebagean, kita wis ndemek topik kasebut karo sampeyan ing wawancara iki. Iku bab karya aku karo mahasiswa Bill Scherer. Dheweke nulis tesis, lan Doug Lee uga nyumbang, lan pungkasane dadi bagian saka antrian sinkron multi-Utas ing perpustakaan Jawa. Ayo nganggep yen struktur data diwaca lan ditulis tanpa diblokir, yaiku, saben operasi nduweni instruksi winates ing jalur kritis. Yen sampeyan nyoba mbusak data saka wadhah kosong, utawa nyoba mbusak data tartamtu sing ora ana ing wadhah iki, sampeyan langsung dilaporake yen iki ora bisa ditindakake. Nanging prilaku iki bisa uga ora bisa ditampa yen thread pancene mbutuhake data iki. Banjur bab pisanan sing dipikirake yaiku nggawe loop sing bakal terus takon yen data sing dibutuhake wis katon. Nanging banjur ana gangguan kanggo wong liya. Kajaba iku, kanthi pendekatan iki, sampeyan bisa ngenteni 10 menit, banjur sawetara thread liyane bakal teka, lan ora sengaja bakal nampa data sing dibutuhake dhisik. Struktur data dual isih ora duwe kunci, nanging ngidini benang ngenteni kanthi bener. Istilah "dobel" tegese struktur kasebut ngemot data utawa panjaluk data, ayo diarani anti-data. Dadi yen sampeyan nyoba njupuk soko saka wadhah kosong, panjalukan bakal dilebokake ing wadhah kasebut. Saiki thread bisa ngenteni panjalukan tanpa ngganggu wong liya. Kajaba iku, struktur data menehi prioritas kanggo panjaluk supaya nalika ditampa, ditransfer menyang wong sing bener. Asil minangka mekanisme non-locking sing isih nduweni spesifikasi formal lan kinerja apik ing praktik. 

Alexey: Apa sing dikarepake saka struktur data iki? Apa bakal nambah kinerja ing kabeh kasus umum, utawa luwih cocog kanggo kahanan tartamtu? 

Michael: Iku migunani yen, sepisanan, sampeyan kudu wadhah tanpa ngunci, lan, sareh, sampeyan kudu ngenteni ing kahanan ngendi sampeyan kudu njupuk data saka wadhah sing ora ana. Kanggo ngerti sing paling apik, kerangka kita nyedhiyakake prilaku sing optimal nalika rong kondisi kasebut ditemoni. Mulane, ing kasus iki aku nyaranake nggunakake. Kauntungan utama saka struktur data tanpa kunci yaiku supaya ora ana masalah kinerja. Lan nunggu penting banget ing akeh algoritma yen data ditransfer saka siji thread menyang liyane.

Vitali: Ayo kula njlentrehake: apa sampeyan bakal ngomong babagan sing padha ing sekolah lan ing konferensi?

Michael: Ing sekolah Aku bakal ngomong ing umum babagan struktur data multi-threaded, karo prinsip dhasar mbatesi ing wiwitan pawulangan. Aku nganggep pamirsa ngerti apa benang lan kenal karo kunci. Adhedhasar kawruh dhasar iki, aku bakal ngomong babagan struktur data tanpa kunci. Aku bakal menehi ringkesan masalah sing paling penting ing wilayah iki, ndemek topik kaya manajemen memori. Aku ora mikir bakal ana sing luwih rumit tinimbang antrian MS.

Alexey: Apa sampeyan arep mulang babagan struktur data ganda ing pungkasan kelas ing sekolah?

Michael: Aku bakal sebutno wong, nanging aku ora bakal nglampahi akeh wektu ing wong. Laporan Hydra bakal darmabakti kanggo wong-wong mau. Bakal nutupi proyek sing pungkasane mlebu ing Jawa, uga nggarap Joe Israelevich kanggo nggawe varian ganda saka antrian LCRQ, lan nggawe desain universal kanggo struktur data dual.

Alexey: Dadi kuliah ing sekolah bisa dianjurake kanggo pamula, lan kuliah ing struktur data pindho ing Hydra - kanggo wong sing wis sawetara pengalaman?

Michael: Mbenerake yen aku salah, nanging pamirsa ing Hydra bakal cukup mawarni-warni, kalebu akeh ahli Jawa, lan umume wong sing ora khusus melu program multi-threaded. 

Vitali: Iya bener.

Alexey: Saora-orane kita ngarep-arep.

Michael: Ing kasus iki, aku bakal ngadhepi karo masalah padha karo kang kita miwiti Interview iki: carane nggawe laporan loro cekap sugih ing rincian technical lan diakses kanggo kabeh pamireng.

Vitali: Apa sampeyan bakal menehi laporan kanthi cara sing padha karo ceramah? Yaiku ngomong karo pamirsa lan adaptasi karo kahanan?

Michael: Aku wedi yen ora bakal bisa, amarga laporan bakal ana slide. Slide penting nalika pamireng wiwitane nganggo basa sing beda. Akeh wong bakal angel ngerti aku nganggo basa Inggris, utamane yen aku ngomong cepet banget. Aku milih topik iki amarga Pyotr Kuznetsov takon kula kanggo pirembagan bab struktur data kunci-free ing SPTDC School; banjur aku needed laporan kanggo konferensi grup panganggo Jawa, lan aku wanted kanggo milih soko sing bakal kapentingan khusus kanggo programer Jawa. Cara sing paling gampang yaiku ngomong babagan perkara-perkara ing perpustakaan Jawa sing dakkarepake kanthi cara liya. 

Alexey: Kita nganggep manawa pamirsa ing Hydra wis ngerti babagan program tanpa kunci lan bisa uga duwe pengalaman ing wilayah iki. Nanging iki mung asumsi bakal dadi luwih jelas ing konferensi kasebut. Oalah, matur nuwun kanggo wektu sampeyan. Aku yakin wawancara bakal menarik banget kanggo para pamaca. Matur nuwun sanget!

Vitali: Matur nuwun. 

Michael: Aku bakal seneng ketemu sampeyan ing St. 

Alexey: Kita uga, kita duwe kutha ayu. Apa kowe tau neng kene?

Michael: Ora, aku ora tau menyang Rusia. Nanging St. 

Alexey: Miturut cara, kita bakal duwe program wisata kanggo speaker. Matur nuwun kanthi sanget kanggo wawancara, lan dina sing apik!

Sampeyan bisa nerusake obrolan karo Michael ing konferensi Hydra 2019, sing bakal dianakake ing 11-12 Juli 2019 ing St. Dheweke bakal teka karo laporan "struktur data ganda". Tiket bisa dituku ing situs web resmi.

Source: www.habr.com

Add a comment