"Hasil empiris ngan pikeun publikasi, motif nyata karya téh éstétis." Wawancara hébat sareng Michael Scott

"Hasil empiris ngan pikeun publikasi, motif nyata karya téh éstétis." Wawancara hébat sareng Michael Scott Michael témbal - salila 34 taun salaku profésor Élmu Komputer di Universitas Rochester, sarta di imahna Universitas Wisconsin–Madison anjeunna dekan salila lima taun. Anjeunna researches sarta ngajarkeun siswa ngeunaan paralel jeung disebarkeun programming jeung desain basa.

Dunya terang Michael tina buku ajar "Programming Basa Pragmatik", kumaha upami padamelan "Algoritma pikeun sinkronisasi scalable on dibagikeun-memori multiprocessors" narima Hadiah Dijkstra salaku salah sahiji nu kawentar dina widang komputasi disebarkeun. Anjeun ogé tiasa terang anjeunna salaku panulis algoritma éta Michael-Scott.

Kalayan sareng Doug Lee, anjeunna ngembangkeun algoritma non-blocking sareng antrian sinkron anu ngawasa perpustakaan Java. Palaksanaan "struktur data ganda" dina JavaSE 6 ningkat kinerja ku 10 kali ThreadPoolExecutor.

eusi:

  • Karir mimiti, Universitas Rochester. Proyék Charlotte, basa Lynx;
  • IEEE Scalable Koheren Interface, MCS konci;
  • Salamet di dunya anu kantos robih;
  • Naha mahasiswa janten bodo? Tren global, internasionalisasi;
  • Karya éféktif jeung siswa;
  • Kumaha carana tetep nepi ka persiapan kursus anyar jeung buku;
  • Tumbu antara bisnis jeung akademisi;
  • Palaksanaan praktis gagasan. MCS, MS, CLH, JSR 166, gawé bareng Doug Lee tur leuwih;
  • Mémori transaksional;
  • Arsitéktur anyar. Meunangna memori transactional deukeut;
  • memori non-volatile, Optane DIMM, alat ultra-gancang;
  • Trend badag salajengna. Struktur data ganda. Hidra.

Wawancara dilaksanakeun ku:

Vitaly Aksenov — ayeuna postdoc di IST Austria sareng anggota Departemen Teknologi Komputer di Universitas ITMO. Ngalaksanakeun panalungtikan dina widang téori jeung prakték ngeunaan struktur data kalapa. Sateuacan damel di IST, anjeunna nampi gelar PhD ti Universitas Paris Diderot sareng Universitas ITMO dina pangawasan Profesor Peter Kuznetsov.

Alexey Fedorov - Produser di JUG Ru Grup, hiji parusahaan Rusia nu organizes konferensi pikeun pamekar. Alexey ilubiung dina persiapan leuwih ti 50 konferensi, sarta neruskeun na ngawengku sagalana ti posisi insinyur ngembangkeun di Oracle (JCK, Java Platform Grup) ka posisi pamekar di Odnoklassniki.

Vladimir Sitnikov - Insinyur di Netcracker. Sapuluh taun gawé dina kinerja sarta scalability of NetCracker OS, software dipaké ku operator telecom pikeun ngajadikeun otomatis prosés manajemén jaringan jeung alat jaringan. Kabetot dina masalah kinerja Java sareng Oracle Database. Panulis langkung ti belasan perbaikan kinerja dina supir PostgreSQL JDBC resmi.

Karir mimiti, Universitas Rochester. Proyék Charlotte, basa Lynx.

Алексей: Pikeun dimimitian ku, abdi hoyong ngabejaan Anjeun yen di Rusia urang sadayana cinta Élmu Komputer, Élmu Data jeung algoritma. Ieu downright cabul. Kami parantos maca sadayana buku ku Cormen, Leiserson na Rivest. Ku alatan éta, konferensi upcoming, sakola jeung wawancara ieu sorangan kudu jadi pohara populér. Kami nampi seueur patarosan pikeun wawancara ieu ti mahasiswa, programer, sareng anggota komunitas, janten kami nganuhunkeun pisan pikeun kasempetan ieu. Naha Élmu Komputer nampi cinta anu sami di AS?

Michael: Widang kami rupa-rupa, gaduh seueur arah, sareng mangaruhan masarakat dina sababaraha cara anu sesah pikeun kuring masihan anjeun jawaban anu pasti. Tapi nyatana yén éta parantos nyababkeun parobihan anu ageung dina bisnis, industri, seni sareng masarakat sacara umum salami 30 taun ka pengker.

Vitali: Hayu urang mimitian ku hal jauh. Dina seueur paguron luhur aya anu sapertos spésialisasi dina hiji daérah anu khusus. Pikeun Universitas Carnegie Mellon ieu komputasi paralel, pikeun MIT éta kriptografi, robot sareng multithreading. Naha aya spésialisasi sapertos kitu di Universitas Rochester?

Michael: Mun jujur, abdi bakal disebutkeun yen CMU na MIT ngahususkeun dina sagala widang. Departemén kami sok masihan perhatian ka intelijen buatan. Satengah tina jalma anu damel pikeun kami kalibet dina AI atanapi interaksi manusa-komputer - pangsa ieu langkung luhur tibatan di departemén sanés, sareng kantos kitu. Tapi nalika kuring di universitas, kuring henteu ngagaduhan kursus AI, sareng kuring henteu kantos damel di widang ieu. Janten departemén kuring khusus dina masalah anu kuring henteu aya hubunganana. Consolation teh nya eta masalah kadua pangpentingna pikeun departemén urang téh programming paralel jeung multi-threaded, nyaeta, Spésialisasi kuring.

Vitali: Anjeun mimiti digawé di Élmu Komputer nalika widang programming multi-threaded ieu ngan muncul. Daptar publikasi anjeun nunjukkeun yén karya munggaran anjeun diurus ku rupa-rupa masalah: manajemén mémori dina sistem multi-threaded, sistem file anu disebarkeun, sistem operasi. Naha versatility misalna? Naha anjeun nyobian milarian tempat anjeun dina komunitas panalungtikan?

Michael: Salaku murid, kuring milu Proyék Charlotte di Universitas Wisconsin, dimana salah sahiji sistem operasi anu disebarkeun munggaran dikembangkeun. Di dinya kuring gawé bareng jeung Rafael Finkel (Raphael Finkel) jeung Marvin Solomon (Marvin Suleman). disertasi abdi devoted kana ngembangkeun hiji basa keur software sistem pikeun sistem disebarkeun - ayeuna dulur geus poho ngeunaan eta, sarta alhamdulillah. Kuring nyiptakeun basa pamrograman Lynx, anu dimaksudkeun pikeun ngagampangkeun nyiptakeun server pikeun sistem operasi anu disebarkeun sacara bébas. Kusabab dina waktos éta kuring utamina kalibet dina sistem operasi, kuring nganggap yén karir kuring bakal dihubungkeun sareng aranjeunna. Tapi Rochester mangrupikeun universitas anu alit pisan, sareng kusabab ieu, kelompok anu béda-béda aya interaksi anu raket pisan. Henteu aya belasan sistem operasi anu sanés pikeun kuring diajak ngobrol, janten sadaya kontak kuring sareng jalma anu damel di daérah anu béda-béda. Abdi leres-leres resep, janten sadaya-buleud mangrupikeun kauntungan anu ageung pikeun kuring. Lamun urang ngobrol husus ngeunaan struktur data multi-threaded jeung algoritma sinkronisasi, teras kuring mimiti dipake dina eta sagemblengna ku kacilakaan.

IEEE Scalable Koheren Interface, MCS konci.

Vitali: Dupi anjeun tiasa nyarios sakedik langkung seueur ngeunaan ieu?

Michael: Ieu mangrupikeun carita lucu anu kuring henteu bosen nyarioskeun ka sadayana. Éta kajadian dina konperénsi ASPLOS di Boston - ieu dina 80s telat atawa mimiti 90an. John Mellor-Crummey (John Mellor-Crummey), lulusan fakultas urang. Kuring terang anjeunna, tapi kami henteu acan ngalaksanakeun panalungtikan gabungan sateuacanna. Mary Vernon (Mary Vernon) ti Wisconsin masihan ceramah ngeunaan sistem multiprocessor aranjeunna ngamekarkeun di Wisconsin: Wisconsin Multicube. Multicube ieu ngagaduhan mékanisme sinkronisasi dina tingkat hardware anu disebut Q on Sync Bit, sareng engké namina namina Q on Lock Bit sabab disada sapertos kéju Colby, anu mangrupikeun pun. Upami anjeun resep kana mékanisme multithreading, anjeun panginten terang yén Colby ahirna janten mesin sinkronisasi pikeun standar Interface Koheren Scalable IEEE. Ieu mangrupikeun mékanisme ngonci anu nyiptakeun petunjuk tina hiji cache ka anu sanés dina tingkat hardware supados masing-masing anu gaduh konci terang saha anu giliran éta. Nalika John sareng kuring nguping perkawis ieu, urang saling ningali sareng nyarios: naha ngalakukeun ieu dina tingkat hardware? Naha hal anu sami tiasa dihontal nganggo ngabandingkeun-sareng-swap? Kami nyandak salah sahiji buku catetan anu aya di kelas sareng nyerat MCS ngahalangan, bari Mary nuluykeun laporan nya. Salajengna, kami ngalaksanakeunana, ékspérimén, ideu tétéla suksés, sareng kami nyebarkeun tulisan éta. Dina waktos éta, pikeun kuring, topik ieu sigana ngan ukur gangguan anu pikaresepeun, saatos kuring ngarencanakeun uih deui ka sistem operasi. Tapi lajeng masalah sejen sapanjang garis sarua timbul, sarta ahirna sinkronisasi, multithreading, sarta struktur data janten husus abdi. Sakumaha anjeun tiasa tingali, ieu sadayana kajantenan sacara teu kahaja.

Vitali: Kuring geus wawuh jeung MCS blocking pikeun lila, tapi nepi ka ayeuna kuring teu nyaho yén éta téh karya anjeun, jeung teu ngarti yén éta téh mangrupa akronim pikeun ngaran tukang Anjeun.

Kumaha salamet di dunya anu terus-terusan robih?

Алексей: Abdi gaduh patarosan ngeunaan topik anu aya hubunganana. 30 atawa 40 sababaraha taun ka pengker aya leuwih kabebasan dina specialties béda. Upami anjeun hoyong ngamimitian karir dina sistem multithreading atanapi disebarkeun, wilujeng sumping, upami anjeun hoyong lebet kana sistem operasi, henteu aya masalah. Di unggal wewengkon aya loba patarosan kabuka sarta sababaraha ahli. Spésialisasi sempit ayeuna parantos muncul: henteu ngan ukur ahli dina sistem operasi sacara umum, aya spesialis dina sistem individu. Éta sami sareng sistem multithreading sareng disebarkeun. Tapi masalahna nyaéta kahirupan urang henteu sajajalan; sadayana tiasa bakti ngan sababaraha dekade pikeun panalungtikan. Kumaha salamet di dunya anyar ieu?

Michael: Kami henteu khusus dina hal ieu; hal anu sami kajantenan sakali di daérah sanés. Kuring éta untung yén kuring mimiti digawé di Élmu Komputer nalika widang éta dina na "rumaja" taun. Sababaraha pondasi parantos dipasang, tapi sadayana masih teu dewasa. Kasempetan ieu henteu sering datang. Téknik listrik parantos lami pisan, fisika bahkan langkung lami, matematika ampir ti mimiti jaman. Tapi ieu lain hartosna yén euweuh anu nyieun pamanggihan metot dina matematika deui. Masih seueur masalah anu kabuka, tapi dina waktos anu sami, langkung seueur anu kedah diajar. Anjeun leres-leres dicatet yén ayeuna aya seueur spésialisasi anu langkung seueur tibatan anu aya sateuacanna, tapi ieu ngan ukur hartosna urang mendakan diri dina kaayaan anu sami sareng kalolobaan daérah kagiatan manusa.

Алексей: Abdi resep kana aspék anu langkung praktis tina masalah ieu di dieu. Abdi gaduh latar matematika, sareng salami diajar kuring sering ngahadiran konperénsi sareng damel dina sababaraha topik ilmiah. Kuring manggihan yén teu saurang ogé di panongton ngartos laporan kuring, sarta dina cara nu sarua, laporan jalma séjén éta ngan kaharti ku sorangan. Ieu sanés kasus dina topik tingkat luhur, tapi pas anjeun mimiti ngalenyepan hiji hal, panongton henteu tiasa deui ngiringan anjeun. Kumaha anjeun nungkulan ieu?

Michael: Teu salawasna suksés. Kuring nembe disiapkeun laporan nu kuring indit teuing jero kana detil teknis. Salaku omongan maju, janten jelas yén lolobana panongton teu ngarti kuring, jadi kuring kudu adaptasi jeung kaayaan on laleur. Slides henteu tiasa dirobih, janten henteu saé pisan - janten, sacara umum, kuring nyobian henteu nganggo slide. Gemblengna, saran abdi mertimbangkeun panongton Anjeun. Anjeun kudu nyaho saha nu keur diajak ngobrol, naon tingkat pangaweruh maranéhanana, jeung naon maranéhna kudu ngadangu pikeun ngahargaan karya anjeun.

Vitali: Dupi anjeun tiasa masihan kami petunjuk ngeunaan naon ceramah ieu?

Michael: Jujur, kuring langkung resep henteu ngalegaan topik ieu supados ngantepkeun jalma anu ditaroskeun anonim. Intina nyaéta yén urang sering ngalenyepan jero kana masalah anu nuju digarap, janten janten sesah pikeun urang ngajelaskeun dina awal obrolan naha masalah éta menarik sareng penting sareng kumaha hubunganana sareng masalah anu panongton geus nyaho. Nurutkeun observasi kuring, siswa boga waktu hardest diajar kaahlian ieu. Sareng ieu ogé titik lemah tina laporan panganyarna kuring. Laporan anu terstruktur leres kedah, ti mimiti, milarian kontak sareng pamiarsa, ngajelaskeun ka aranjeunna naon masalahna sareng kumaha hubunganana sareng topik anu parantos dipikanyaho. Kumaha teknis bubuka ieu gumantung kana panongton. Upami éta lengkep motley, maka laporan tiasa multi-tahap. bubuka kudu bisa diasupan ka dulur, sarta dina tungtungna sapotong bisa jadi teu bisa tetep nepi ka anjeun, tapi jalma rélatif akrab jeung widang anjeun bakal bisa angka eta kaluar.

Naha mahasiswa janten bodo? Tren global, internasionalisasi.

Алексей: Anjeun geus niténan murid sababaraha dekade. Naha mahasiswa janten bodo atanapi langkung pinter ti dasawarsa ka dasawarsa atanapi taun ka taun? Di Rusia, profésor terus-terusan ngawadul yén murid-muridna janten dumber unggal taun, sareng éta leres-leres henteu écés naon anu kudu dilakukeun ngeunaan éta.

Michael: Anjeun bener bisa ngadéngé loba negativity ti urang heubeul. Subconsciously, urang boga kacenderungan pikeun nyangka siswa nyerep sagala 30 taun pangalaman nu urang geus boga. Upami kuring gaduh pamahaman anu langkung jero tibatan taun 1985, naha mahasiswa henteu gaduh éta? Panginten sabab umurna 20 taun, kumaha saur anjeun? Jigana parobahan paling signifikan dina dasawarsa panganyarna geus di komposisi demografi: urang ayeuna geus nyata leuwih siswa internasional, iwal Canadians. Biasana seueur urang Kanada sabab urang caket pisan kana wates Kanada sareng murid ti dinya tiasa angkat ka bumi dina akhir minggu. Tapi ayeuna aya seueur paguron luhur di Kanada, sareng urang Kanada langkung resep diajar di dieu; sacara signifikan langkung seueur anu sumping ka Amérika Serikat.

Алексей: Naha anjeun pikir ieu téh trend lokal atawa global?

Michael: Kuring teu apal persis saha, tapi ceuk batur yén dunya téh datar. Widang urang parantos janten langkung internasional. ACM Konférénsi Saméméhna, aranjeunna diayakeun sacara éksklusif di Amérika Serikat, teras aranjeunna mutuskeun pikeun nahan aranjeunna sakali unggal 4 taun di nagara-nagara sanés, sareng ayeuna dilaksanakeun di sakumna dunya. Parobahan ieu kapangaruhan malah leuwih IEEE, sabab geus salawasna geus organisasi leuwih internasional ti ACM. Sareng aya korsi program ti Cina, India, Rusia, Jérman sareng seueur nagara-nagara sanés, sabab seueur anu lumangsung di mana waé ayeuna.

Алексей: Tapi, sigana, aya sababaraha aspék négatip tina internasionalisasi sapertos kitu?

Michael: Kuring bakal nyebutkeun yén sakabéh aspék négatip patali teu téhnologi, tapi jeung pulitik. Jaman baheula, masalah utama nyaéta kanyataan yén AS maok jalma anu paling pinter sareng paling berbakat ti nagara-nagara di sakumna dunya. Tur ayeuna masalah utama kaulinan pulitik antara nagara béda sabudeureun visas na imigrasi.

Алексей: Nyaéta, halangan jeung hal kawas éta. Éta jelas.

Владимир: Sacara pribadi, kuring resep kana pendekatan naon anu anjeun lakukeun nalika ngajarkeun mata pelajaran anyar ka murid. Aya pilihan anu béda: anjeun tiasa nyobian heula pikeun mere ilham aranjeunna pikeun nyobian hal anu énggal, atanapi anjeun tiasa langkung nengetan detil kumaha téknologi anu tangtu jalan. Naon anu anjeun pikaresep?

Karya éféktif jeung siswa

Алексей: Na kumaha carana manggihan kasaimbangan damn antara kahiji jeung kadua?

Michael: Masalahna nyaéta kelas henteu salawasna jalan anu kuring pikahoyong. Biasana kuring méré bahan bacaan ti heula ka murid sangkan ngalenyepan, paham kana kamampuhna, jeung ngarumuskeun pertanyaan-pertanyaan ngeunaan bagian-bagian anu can kaharti. Teras di kelas anjeun tiasa difokuskeun momen anu paling hese sareng ngajalajah aranjeunna babarengan. Ieu kumaha kuring paling resep ngajar kelas. Tapi tinangtu beban anu ayeuna aya dina mahasiswa, abdi teu salawasna bisa mastikeun yén maranéhna nyiapkeun sateuacanna. Hasilna, anjeun kudu bakti leuwih waktos ka retelling umum bahan ti anjeun hoyong. Sanaos ieu, kuring nyobian ngajaga kelas urang interaktif. Upami teu kitu, éta langkung gampang pikeun ngarékam pidéo saatos murid tiasa nonton di bumi. Titik kelas hirup nyaéta interaksi manusa. Di kelas, kuring leuwih resep ngagunakeun kapur tulis jeung papan tulis tinimbang slides, iwal dina kasus nu tangtu lamun diagram a teuing kompléks pikeun ngagambarkeun di papan tulis. Hatur nuhun kana ieu, kuring henteu kedah lengket kana rencana pelajaran anu kaku. Kusabab teu aya tatanan anu ketat pikeun kuring masihan bahan, ieu ngamungkinkeun kuring pikeun nyaluyukeun kana pamiarsa gumantung kana patarosan anu kuring tampi. Sacara umum, kuring nyobian ngadamel kelas salaku interaktif sabisa, ku kituna bahan anu kuring dibere gumantung kana patarosan anu ditaroskeun ka kuring.

Владимир: Éta saé. Dina pangalaman abdi, éta rada hese meunang listeners nanya. Sanaos sateuacan naroskeun patarosan naon waé, kumaha bodo atanapi pinter, aranjeunna tetep cicingeun. Kumaha anjeun nungkulan ieu?

Michael: Anjeun bakal seuri, tapi lamun nangtung dina tiiseun cukup lila, gancang atawa engké dulur bakal jadi teu nyaman jeung batur bakal nanya. Atanapi anjeun tiasa naroskeun patarosan téknis anu saderhana kalayan jawaban enya atanapi henteu pikeun nangtukeun naha jalma ngartos naon anu nembé nyarios. Contona, aya lomba data dina conto di luhur? Saha anu nyangka kitu? Anu nyangka henteu? Anu teu ngarti nanaon pisan, sabab dina total ngan satengah leungeun naék?

Vitali: Sareng upami anjeun salah ngajawab, anjeun diusir ti kelas :)

Michael: Upami anjeun teu acan ngawaler nanaon, anjeun kedah naroskeun patarosan. Kuring kudu ngarti naon kahayang murid kudu nyaho pikeun ngajawab patarosan kuring ngan nanya. Abdi peryogi aranjeunna pikeun ngabantosan abdi ngabantosan aranjeunna. Abdi siap adaptasi sareng aranjeunna supados aranjeunna ngartos masalahna. Tapi upami kuring henteu terang naon anu aya dina sirahna, kuring henteu tiasa ngalakukeun éta. Sareng upami anjeun henteu masihan mahasiswa karapihan pikeun waktos anu cekap, sakapeung dina tungtungna aranjeunna naroskeun patarosan anu leres, nyaéta, anu ngamungkinkeun kuring ningali naon anu lumangsung dina sirah murid. 

Алексей: Naha patarosan-patarosan ieu kadang-kadang nyababkeun ideu anu anjeun henteu kantos panginten sateuacanna? Aranjeunna teu kaduga? Naha aranjeunna ngidinan Anjeun pikeun nempo hiji masalah dina lampu anyar?

Michael: Aya patarosan anu muka cara anyar nepikeun materi. Sering aya patarosan anu nyababkeun masalah anu pikaresepeun anu kuring henteu rencana pikeun diomongkeun. Murid sering ngawartosan yén kuring gaduh kacenderungan pikeun kaluar topik nalika ieu kajadian. Sareng, numutkeun aranjeunna, sering pisan ieu mangrupikeun bagian anu paling pikaresepeun dina palajaran. Jarang pisan, ngan sababaraha kali, murid naroskeun patarosan anu nyababkeun arah anyar dina panalungtikan sareng janten tulisan. Ieu kajadian leuwih sering dina paguneman jeung siswa tinimbang salila kelas, tapi aya kalana kajadian salila kelas. 

Алексей: Jadi siswa nanya ka anjeun patarosan dina dasar nu ieu lajeng mungkin mun nyebarkeun artikel?

Michael: Enya. 

Vitali: Sabaraha sering anjeun ngobrol ieu sareng murid? Iraha aranjeunna hoyong diajar langkung seueur tibatan anu dibahas salami palajaran?

Michael: Sareng mahasiswa pascasarjana abdi - sadaya waktu. Kuring boga ngeunaan 5 atawa 6 sahijina, sarta kami ngabahas hal kalayan aranjeunna sadaya waktu. Sareng paguneman sapertos kieu sareng murid anu ngan ukur ngahadiran kelas kuring henteu umum pisan. Sanajan kuring hayang ieu lumangsung leuwih mindeng. Kuring curiga yén maranéhna ngan saukur sieun datang ka fakultas salila jam kantor. Unggal semester, sababaraha mahasiswa junun nungkulan halangan psikologis ieu, sarta sok pisan metot ngobrol jeung aranjeunna sanggeus kelas. Leres, upami sadayana murid anu wani, kuring ngan saukur teu gaduh waktos cekap. Jadi meureun sagalana jalan sakumaha sakuduna. 

Vitali: Kumaha anjeun ngatur pikeun manggihan waktu pikeun komunikasi jeung siswa? Sajauh anu kuring terang, di Amérika Serikat guru gaduh seueur padamelan - ngalamar hibah sareng anu sanés. 

Michael: Jujur, gawé bareng murid mangrupikeun aspék padamelan kuring anu paling kuring resep. Janten kuring gaduh motivasi anu cekap pikeun ieu. Kalolobaan waktu kuring méakkeun di kantor abdi spent dina rapat sagala rupa. Ayeuna nuju usum panas, janten jadwal abdi kirang sibuk, tapi dina taun sakola, unggal dinten ti 9 dugi ka 17 kuring parantos dibungkus sadayana. Karya panalungtikan, ulasan, hibah - pikeun sakabéh ieu aya ngan soré jeung weekends. 

Kumaha carana tetep nepi ka persiapan kursus anyar jeung buku.

Алексей: Dupi anjeun ayeuna nuju ngajar mata kuliah naon waé anu parantos lami diajarkeun? Hal kawas hiji bubuka pikeun Élmu Komputer.

Michael: Hal kahiji anu aya dina pikiran di dieu nyaéta kursus basa program. 

Алексей: Kumaha bédana vérsi kursus ayeuna ayeuna sareng 10, 20, 30 taun ka pengker? Panginten anu langkung narik di dieu sanés detil tina kursus khusus, tapi tren umum.

Michael: Kursus kuring ngeunaan basa pamrograman rada teu biasa nalika kuring nyiptakeunana. Kuring mimiti maca éta dina ahir 1980-an, ngagentos batur sapagawean kuring, Doug Baldwin (Doug Baldwin). Topik kursus ieu ngan tangensial patali jeung husus kuring, tapi nalika anjeunna ninggalkeun, abdi calon pangalusna pikeun ngajarkeun kursus. Abdi henteu resep kana buku ajar anu aya dina waktos éta, janten kuring nyalira nyerat buku ajar pikeun kursus ieu. (Catatan editor: urang ngobrol ngeunaan buku "Programming Basa Pragmatik") Ayeuna dipaké di leuwih ti 200 universitas di sakuliah dunya. Pendekatan kuring teu biasa sabab ngahaja nyampur masalah desain sareng palaksanaan basa, sareng merhatikeun pisan kana interaksi antara aspék ieu dina sadaya daérah anu mungkin. Pendekatan dasarna tetep teu robih, sareng seueur konsep dasar: abstraksi, ruang ngaran, modularitas, jinis. Tapi sakumpulan basa anu nunjukkeun konsép ieu parantos robih. Nalika kursus munggaran dijieun, aya loba conto dina Pascal, tapi kiwari loba murid kuring malah teu ngadéngé basa ieu. Tapi aranjeunna terang Swift, Go, Rust, janten kuring kedah ngobrol ngeunaan basa anu dianggo ayeuna. Ogé, siswa ayeuna ogé versed dina basa scripting, tapi nalika kuring mimiti ngajarkeun kursus ieu, éta sadayana ngeunaan basa disusun. Ayeuna urang kudu loba bahan ngeunaan Python, Ruby komo Perl, sabab ieu téh naon kode ditulis dina poé ieu, sarta aya loba hal metot lumangsung dina basa ieu, kaasup dina widang desain basa. 

Vitali: Lajeng patarosan abdi salajengna bakal patali jeung nu saméméhna. Kumaha tetep di wewengkon ieu? Kuring curiga yén ngamutahirkeun kursus sapertos ieu peryogi seueur padamelan - anjeun kedah ngartos basa anyar, ngartos ideu utama. Kumaha anjeun ngalakukeun ieu?

Michael: Abdi teu tiasa boast yén kuring salawasna suksés 100%. Tapi lolobana waktu kuring ngan ngalakukeun naon dulur sejenna - maca Internet. Upami kuring hoyong ngartos Rust, kuring Google, angkat ka halaman Mozilla sareng baca manual anu dipasang di dinya. Ieu bagian tina hal anu lumangsung dina ngembangkeun komérsial. Lamun urang ngobrol ngeunaan elmu, mangka anjeun kudu nuturkeun laporan dina konferensi utama. 

Link antara bisnis jeung akademisi

Vitali: Hayu urang ngobrol ngeunaan hubungan antara bisnis jeung panalungtikan ilmiah. Dina daptar karya anjeun, kuring mendakan sababaraha tulisan ngeunaan kohérénsi cache. Kuring ngarti yén algoritma konsistensi cache éta teu stabil dina waktos aranjeunna diterbitkeun? Atawa teu cukup nyebar. Kumaha umum éta gagasan anjeun dina prakna?

Michael: Kaula teu yakin kana publikasi nu nuju ngawangkong ngeunaan. Abdi parantos damel sakedik sareng murid abdi Bill Bolosky (William Bolosky) jeung Leonidas Kontotanassis (Leonidas Kontothanassis) dina awal 1990s on manajemén memori mesin Neumann. Dina waktos éta, bisnis henteu acan gaduh pamahaman kumaha leres ngadamel sistem multiprocessor: naha éta patut nyiptakeun dukungan pikeun ngaksés mémori jarak jauh dina tingkat hardware, naha éta pantes pikeun nyebarkeun mémori, naha mungkin pikeun ngamuat cache tina memori jauh, atawa éta perlu mindahkeun kaca dina sistem kamar operasi? Bill sareng Leonidas duanana damel di daérah ieu sareng ngajalajah pendekatan tanpa ngamuat cache jauh. Ieu teu langsung patali jeung kohérénsi cache, tapi masih dianggo dina manajemen memori NUMA, sarta salajengna pendekatan modern pikeun panempatan kaca dina sistem operasi modern tumuwuh tina ieu. Gemblengna, Bill jeung Leonidas ngalakukeun pagawean penting, sanajan teu paling boga pangaruh di wewengkon ieu - aya loba jalma séjén gawé dina hal anu sarua dina waktu éta. Engké, kuring dikeureuyeuh topik nu patali jeung cache kohérénsi dina konteks hardware memori transactional. Grup kuring digarap dina masalah ieu réngsé nepi narima sababaraha patén-patén. Aya sababaraha ide anu pikaresepeun di tukangeunana, tapi kuring henteu nyangka éta bakal dilaksanakeun dina prakték. Hiji cara atanapi anu sanés, sesah pikeun kuring nangtoskeun kauntunganana. 

Алексей: Dina hal ieu, patarosan anu langkung pribadi: kumaha pentingna pikeun anjeun yén ideu anjeun dilaksanakeun? Atawa anjeun teu mikir ngeunaan eta?

Michael: Abdi resep naroskeun patarosan ieu dina wawancara sareng jalma sanés, pelamar atanapi calon anu hoyong gabung di fakultas. Abdi henteu nyangka aya jawaban anu leres pikeun patarosan ieu. Jalma anu ngalakukeun hal anu keren tiasa gaduh motivasi anu béda pisan. Kami katarik masalah sabab kuring pribadi manggihan éta metot, lain kusabab mangpaat praktis maranéhanana. Tapi di sisi anu sanésna, nalika sababaraha hal anu pikaresepeun masih mendakan aplikasi, kuring resep pisan. Jadi teu gampang di dieu. Tapi dina awal karya kuring, kuring masih didorong teu ku pamanggih hiji pamakéan tungtung di dunya, tapi ku harmoni gagasan jeung kahayang pikeun ngajajah eta tur tingal kumaha asalna tina eta. Upami dina tungtungna masihan hasil praktis, saé. 

Алексей: Kusabab pendidikan sareng pangalaman anjeun, anjeun langkung saé tibatan anu seueur pikeun nangtoskeun nilai ideu jalma sanés. Anjeun tiasa ngabandingkeun aranjeunna sareng nangtukeun mana anu langkung saé. Kuring yakin anjeun gaduh pendapat ngeunaan hal-hal anu ayeuna dianggo ku pabrik ageung sapertos Intel. Tina sudut pandang anjeun, kumaha leres kursus anu dilaksanakeun ku perusahaan-perusahaan ieu?

Michael: Prakték salawasna revolves sabudeureun naon bisa suksés komersil, nyaeta, nyieun untung, jeung anjeun hadé nanya ka batur ngeunaan éta. Karya kuring lolobana ngahasilkeun publikasi, sarta dina widang sistem operasi maranéhanana dievaluasi dumasar kana indikator kinerja: speed, konsumsi énergi, ukuran kode. Tapi kuring sok sigana yén hasil émpiris ieu ngan ukur ditambah kana tulisan supados tiasa diterbitkeun, sareng motif nyata jalma pikeun digawé nyaéta éstétis. Panaliti ngevaluasi solusi tina sudut pandang artistik, aranjeunna paduli kumaha ideu anu elegan, sareng aranjeunna nyobian nyiptakeun anu langkung saé tibatan pendekatan anu tos aya. Panalungtik didorong ku pribadi, subjektif, motif éstétis. Tapi anjeun moal tiasa nyerat ngeunaan ieu dina tulisan sorangan; hal ieu sanés alesan pikeun panitia program. Untungna, solusi anu elegan sering ogé gancang sareng murah. Belasan kolega kuring sareng kuring ngabahas topik ieu ngeunaan 15 sababaraha taun ka pengker sareng tungtungna nyerat tulisan ngeunaan éta. Jigana anjeun masih bisa manggihan ayeuna, disebutna "Kumaha carana meunteun panalungtikan sistem" atawa hal kawas éta, éta boga leuwih ti belasan pangarang. Ieu hiji-hijina artikel dimana kuring panulis babarengan jeung Sasha Fedorova, janten upami anjeun milarian nami anjeunna dina daptar publikasi kuring, anjeun bakal mendakan naon anu anjeun peryogikeun. Ieu ceramah ngeunaan evaluating sistem panalungtikan sarta kumaha pentingna elegance. 

Алексей: Jadi aya bédana antara standar naon anu dianggap alus dina elmu jeung dina bisnis. Élmu ngevaluasi kinerja, konsumsi kakuatan, TDP, betah palaksanaan, sareng seueur deui. Naha anjeun ngagaduhan kasempetan pikeun ngalaksanakeun jenis ieu panalungtikan di universitas? Naha anjeun ngagaduhan laboratorium kalayan mesin anu béda sareng arsitéktur anu béda dimana anjeun tiasa ngalaksanakeun percobaan?

Michael: Sumuhun, departemen urang boga loba mesin metot béda. Paling sering aranjeunna leutik, urang boga klaster leutik tur loba sistem multiprocessor kalawan akselerator béda. Salaku tambahan, kampus ngagaduhan pusat komputasi ageung anu ngalayanan para ilmuwan ti puluhan disiplin anu béda. Éta ngagaduhan sakitar sarébu titik sareng dua puluh rébu inti, sadayana dina Linux. Lamun perlu timbul, Anjeun salawasna bisa meuli sababaraha AWS. Janten urang henteu ngagaduhan larangan anu signifikan sareng hardware. 

Алексей: Kumaha tilu puluh taun katukang? Aya masalah harita?

Michael: Da harita mah rada béda. Dina pertengahan nepi ka ahir 1980-an, élmu dianggap kakurangan sumberdaya komputasi. Pikeun ngalereskeun kaayaan ieu, National Science Foundation (Yayasan Élmu Nasional) nyiptakeun program panalungtikan ékspérimén terkoordinasi (Coordinated Experimental Research, CER). Misi program éta nyayogikeun infrastruktur komputasi pikeun departemén Ilmu Komputer, sareng parantos ngahontal parobihan anu signifikan. Kalayan artos anu disayogikeun, kami di Universitas Rochester ngagaleuh BBN Butterfly 1984 knot di 128, ieu sataun sateuacan kuring dugi ka dinya. Waktu éta éta sistem multiprocessor pangbadagna di dunya kalawan memori dibagikeun. Éta ngagaduhan 128 prosesor, masing-masing dina motherboard anu misah, sareng nempatan opat rak. Unggal prosésor miboga mégabyte memori, 128 megabyte RAM éta jumlah unmaginable dina waktu éta. Dina mesin ieu kami nerapkeun MCS konci pikeun kahiji kalina. 

Алексей: Janten, upami kuring ngartos anjeun leres, teras ayeuna masalah sareng hardware parantos direngsekeun? 

Michael: Sacara umum, enya. Aya sababaraha caveats: kahiji, lamun nuju ngalakukeun arsitéktur komputer di tingkat chip, éta hésé ngalakukeun dina lingkungan akademik sabab aya parabot leuwih hadé pikeun ngalakukeun hal eta dina bisnis. Upami anjeun peryogi anu langkung alit ti 10 nanométer, anjeun kedah mesen ti anu sanés. Di daérah ieu langkung gampang janten panalungtik di Intel. Upami anjeun damel dina komunikasi optik dina chip atanapi dina mémori solid-state, anjeun bakal mendakan téknologi dina bisnis anu henteu acan aya dina élmu, janten anjeun kedah nyiptakeun pakumpulan. Contona, Stephen Swanson (Steven Swanson) dijieun partnership kitu pikeun téknologi memori anyar. formulir ieu teu salawasna dianggo, tapi dina sababaraha kasus eta tiasa rada suksés. Sajaba ti éta, dina elmu ngembangkeun sistem komputasi pangkuatna leuwih hese. Proyék superkomputer panggedéna ayeuna di AS, Jepang sareng Cina sadayana fokus kana bisnis. 

Palaksanaan praktis gagasan. MCS, MS, CLH, JSR 166, gawé bareng Doug Lee tur leuwih.

Vitali: Anjeun parantos nyarios kumaha anjeun ngamimitian damel dina algoritma sinkronisasi. Anjeun gaduh dua artikel kawentar ngeunaan MCS ngahalangan и antrian Michael-Scott (MS), nu dina harti dilaksanakeun di Jawa. (Catetan éditor: sadaya publikasi tiasa ditingali link). Aya blocking ieu dilaksanakeun kalawan sababaraha parobahan sarta tétéla Konci CLH, sarta antrian ieu dilaksanakeun sakumaha dimaksudkeun. Tapi mangtaun-taun ngalangkungan antara publikasi tulisan anjeun sareng aplikasi praktisna. 

Алексей: Sigana ngeunaan 10 taun dina kasus antrian.

Michael: Sateuacan fitur ieu muncul dina perpustakaan standar Java?

Vitali: Enya. Naon anu anjeun lakukeun pikeun ngajantenkeun ieu? Atawa teu ngalakukeun nanaon?

Michael: Abdi tiasa ngabejaan ka maneh kumaha MS antrian asup ka Java 5. Sababaraha taun saméméh éta kaluar, Kuring gawé bareng grup Tandaan Moyers 'di Sun Microsystems di lab maranéhanana deukeut Boston. Anjeunna ngatur bengkel pikeun jalma anu anjeunna terang anu damel dina masalah anu pikaresepeun dina multithreading sabab anjeunna hoyong mendakan topik anu tiasa dijual ka perusahaanna. Éta tempat kuring mimiti papanggih Doug Lea. Doug jeung kuring jeung ngeunaan 25 jalma séjén ti Sun anu babarengan nyawalakeun presentasi Doug urang dina JSR 166, nu saterusna jadi java.util.concurrent. Sapanjang jalan, Doug ngomong yén anjeunna hoyong nganggo antrian MS, tapi pikeun ieu anjeunna diperlukeun counter pikeun Jumlah elemen dina antrian pikeun panganteur dina. Nyaéta, ieu kedah dilakukeun ku cara anu misah, atom, akurat sareng gancang. Kuring ngusulkeun ngan saukur nambahkeun nomer serial kana titik, nyokot jumlah titik kahiji jeung panungtungan sarta subtracting hiji ti séjén. Doug scratched sirah na, ngomong "naha henteu," sarta réngsé nepi ngalakukeun ngan éta. Urang bahas ngalaksanakeun pendekatan ieu di perpustakaan, tapi Doug ngalakukeun lolobana karya sorangan. Hasilna, anjeunna junun ngadegkeun rojongan multithreading unggulan di Jawa. 

Алексей: Ku kituna, upami abdi ngartos neuleu, kudu .ukuran () Metoda geus bagian tina panganteur antrian baku, sarta eta kudu boga hiji pajeulitna algorithmic O (1)?

Michael: Sumuhun, jeung sajaba ti ieu, hiji counter misah diperlukeun.

Алексей: Kusabab lamun nelepon metoda .size () dina Java, hasilna diperkirakeun mangrupa sadia langsung teu dumasar kana ukuran sabenerna koleksi. Kuring ningali, hatur nuhun.

Michael: Sababaraha taun ti harita kuring ngusahakeun struktur data ganda sareng murid kuring Bill Scherer - kanyataanna, ieu anu bakal kuring bahas. ngalaporkeun on Hydra. Doug sumping ka kami sareng nyarios yén anjeunna tiasa ngagunakeunana dina Java Executor Framework. Kalayan Bill, aranjeunna nyiptakeun dua palaksanaan, anu disebut antrian adil sareng teu adil. Kuring disarankan aranjeunna dina proyék ieu, sanajan kuring teu ilubiung dina nulis kode nu sabenerna. Hasilna, laju executors geus ngaronjat sacara signifikan. 

Владимир: Dupi anjeun encounters palaksanaan lepat tina algoritma anjeun atanapi requests pikeun nambahkeun fitur anyar? Sacara umum, prakna kedah coincide jeung téori, tapi rada mindeng aranjeunna béda. Anggap anjeun nyerat algoritma, sareng dina kertas tiasa dianggo, tapi jalma-jalma anu kalibet dina palaksanaan mimiti naroskeun anjeun langkung seueur fitur atanapi sababaraha jinis tweaking algoritma. Naha anjeun kantos ngalaman kaayaan sapertos kitu?

Michael: Hiji-hijina conto anu aya anu sumping ka kuring sareng naroskeun "kumaha carana nerapkeunana" nyaéta patarosan Doug, anu kuring parantos nyarios. Tapi aya sababaraha kasus dimana parobahan metot geus dijieun pikeun nyocogkeun kaperluan praktis. Salaku conto, tim K42 di IBM ngarobih konci MCS sareng ngajantenkeun antarmuka standar ku kituna henteu kedah ngaliwat titik antrian mudik kana rutinitas acquire sareng ngaleupaskeun. Hatur nuhun kana antarmuka standar ieu, ide anu saé dina téori mimiti dianggo dina prakték. Éta héran yén aranjeunna henteu kantos nyebarkeun tulisan ngeunaan éta, sareng sanaos nampi patén, aranjeunna teras-terasan ngantunkeunana. Ide éta éndah, sarta kuring nyoba ngobrol ngeunaan eta sabisana. 

Aya kasus séjén dimana jalma-jalma parantos ningkatkeun algoritma anu kuring parantos diterbitkeun. Contona, antrian MS boga mékanisme instalasi dua-hambalan, nu hartina aya dua CASs dina jalur kritis antrian. Dina mobil heubeul, CAS éta rada mahal. Intel sareng pabrikan sanésna parantos ngaoptimalkeun aranjeunna énggal-énggal, tapi sakali-kali ieu mangrupikeun petunjuk 30-siklus, janten gaduh langkung ti hiji dina jalur kritis henteu pikaresepeun. Hasilna, antrian béda dimekarkeun anu sarupa jeung antrian MS, tapi nu miboga ngan hiji operasi atom dina jalur kritis. Ieu kahontal alatan kanyataan yén salila kurun waktu nu tangtu operasi bisa nyandak O (n) waktos, tinimbang O (1). Ieu saperti teu mirip, tapi mungkin. Ieu lumangsung alatan kanyataan yén dina moments tangtu algoritma traversed antrian ti mimiti nepi ka posisi ayeuna dina antrian ieu. Sacara umum, algoritma tétéla suksés pisan. Sajauh anu kuring terang, éta henteu dianggo pisan, sabagéan ageung kusabab operasi atom ngabutuhkeun sumber daya anu langkung sakedik tibatan sateuacanna. Tapi ide éta hébat. Kuring ogé resep karya Dave Dice ti Oracle. Sadayana anu anjeunna laksanakeun praktis pisan sareng anjeunna pinter ngagunakeun beusi. Anjeunna ngagaduhan panangan dina seueur algoritma sinkronisasi NUMA-sadar sareng struktur data multi-threaded. 

Владимир: Nalika anjeun nyerat algoritma atanapi ngajar murid, hasil padamelan anjeun henteu langsung katingali. Komunitas peryogi sababaraha waktos janten wawuh sareng, sebutkeun, tulisan énggal. Algoritma anyar henteu langsung mendakan aplikasi. 

Michael: Ieu tebih ti geuwat jelas naha artikel bakal signifikan atanapi henteu. Jigana bakal jadi istiméwa mun ngalakukeun ulikan ngeunaan makalah nu geus meunang panghargaan dina konferensi. Nyaéta, tingali artikel anu ku jalma-jalma dina panitia program dina hiji waktos dianggap pangsaéna. Anjeun kedah nyobian ngitung ku jumlah tautan sareng dampak kana usaha kumaha pangaruh tulisan ieu leres-leres tétéla dina 10, 20, 25 taun. Kuring ragu bakal aya korelasi kuat antara dua. Éta moal enol, tapi paling dipikaresep éta bakal langkung lemah tibatan anu urang pikahoyong. Loba gagasan tetep unclaimed pikeun lila saméméh maranéhna jadi nyebar. Contona, hayu urang nyandak memori transactional. Leuwih ti 10 taun kaliwat ti waktu artikel aslina ieu diterbitkeun nepi ka waktu jalma sabenerna dimimitian ngawangun mesin jeung eta. Sarta saméméh penampilan memori ieu produk komérsial - sarta sakabeh 20. Pikeun lila teu saurang nengetan artikel, lajeng jumlah Tumbu ka eta ngaronjat sharply. Éta hésé pikeun ngaduga ieu sateuacanna. Di sisi anu sanés, kadang ideu mendakan palaksanaan langsung. Sababaraha taun ka pengker, kuring nyerat makalah sareng Joe Izraelevitz pikeun DISC anu ngusulkeun definisi formal anyar ngeunaan validitas pikeun struktur data pengkuh anu tiasa dianggo saatos komputer anu ngajalankeun aranjeunna nabrak. Kuring resep kana tulisan ti mimiti, tapi tétéla janten langkung populer tibatan anu kuring ngarepkeun. Hal ieu dipaké ku sababaraha grup béda sarta ahirna jadi harti standar struktur kegigihan. Anu, tangtosna, saé.

Владимир: Naha aya téknik anu anjeun anggo pikeun penilaian? Naha anjeun malah nyobian ngaevaluasi tulisan anjeun sareng murid anjeun? Dina hal naha jalma anu anjeun ajar nuju ka arah anu leres.

Michael: Sapertos sadayana, abdi langkung nengetan naon anu kuring lakukeun ayeuna. Sakali deui, sapertos sadayana, kuring sok mariksa Google Scholar pikeun ningali upami makalah-makalah kapungkur kuring dicutat, tapi éta langkung panasaran. Sabagéan ageung kuring nyerep kana naon anu dilakukeun ku murid kuring ayeuna. Lamun datang ka evaluating karya ayeuna, bagian tina éta tinimbangan estetika, naon elegan jeung naon henteu. Sareng dina tingkat sapopoé, patarosan kabuka maénkeun peran anu ageung. Contona, hiji murid datang ka kuring kalayan grafik sababaraha hasil, sarta kami nyobian ngartos mana sababaraha kabiasaan aneh tina grafik asalna. Sacara umum, dina karya urang urang terus-terusan nyobian ngartos hal anu urang teu acan ngartos. 

Mémori transaksional

Vitali: Meureun urang bisa ngobrol saeutik ngeunaan memori transactional?

Michael: Jigana éta patut nyebutkeun sahenteuna saeutik sabab kuring nempatkeun loba usaha kana. Ieu mangrupikeun topik anu kuring gaduh langkung seueur publikasi tibatan anu sanés. Tapi dina waktos anu sareng, cukup Oddly, kuring sok pisan skeptis ngeunaan memori transactional. Dina pendapat abdi, artikel ku Herlihy jeung Moss (M. Herlihy, J. E. B. Moss) diterbitkeun sateuacanna. Dina awal taun 1990-an, aranjeunna ngusulkeun yén mémori transactional bisa mantuan programer berbakat dianggo dina struktur data multi-threaded, ku kituna struktur ieu lajeng bisa dipaké salaku perpustakaan ku programer biasa. Hartina, eta bakal jadi pitulung pikeun Doug Lee ngalakukeun JSR na 166. Tapi memori transactional teu dimaksudkeun pikeun nyieun programming multi-threaded gampang. Tapi ieu persis kumaha eta mimiti katarima dina awal 2000s, nalika eta jadi nyebar. Ieu diémbarkeun salaku cara pikeun ngajawab masalah programming paralel. Pendekatan ieu salawasna sigana teu aya harepan pikeun kuring. Mémori transaksi ngan ukur tiasa ngagampangkeun nyerat struktur data paralel. Ieu, sigana kuring, anu anjeunna kahontal. 

Ngeunaan kasusah nulis kode multi-threaded

Алексей: Pisan metot. Sigana aya halangan anu tangtu antara programer biasa sareng anu tiasa nyerat kode multi-threaded. Taun ka tukang, kuring spoke sababaraha kali kalayan jalma anu ngalaksanakeun sababaraha kerangka algorithmic. Contona, kalawan Martin Thomson, kitu ogé kalawan programer dipake dina perpustakaan multi-threaded. (Catetan éditor: Martin Thompson mangrupikeun pamekar anu kasohor pisan, anjeunna nyerat Ngaganggu и Aeron. Sarta anjeunna ogé boga laporan dina konperénsi Joker 2015 kami, ngarékam pidéo sadia dina YouTube. Anjeunna sami dibuka konferensi ieu rékaman keynote ogé sadia). Tangtangan utama, saurna, nyaéta ngadamel algoritma gancang sareng gampang dianggo. Nyaéta, aranjeunna narékahan pikeun ngatasi halangan ieu sareng narik saloba jalma-jalma ka daérah ieu. Kumaha saur anjeun ngeunaan eta?

Michael: Ieu masalah utama multithreading: kumaha carana ngahontal kinerja tinggi tanpa ngaronjatkeun pajeulitna sistem. 

Алексей: Kusabab nalika aranjeunna nyobian ulah pajeulitna, algoritma jadi kirang universal.

Michael: konci di dieu nyaeta abstraksi dirancang leres. Sigana mah ieu umumna hal utama pikeun sistem komputer salaku widang. Butler Lampson resep ngagunakeun istilah ieu, sareng anjeunna nyauran urang "padagang abstraksi." téknologi basajan teu aya kiwari. Prosesor anu kami anggo gaduh 10 milyar transistor-kesederhanaan henteu janten masalah. Dina waktos anu sami, ISA langkung saderhana tibatan prosésor, sabab kami damel lami pisan pikeun nyayogikeun kinerja anu luhur sareng antarmuka anu saderhana. Tapi henteu sadayana lancar sareng anjeunna ogé. Masalah anu sami nyaéta sareng akselerator anu ayeuna muncul dina pasaran. Timbul patarosan - kumaha carana ngadamel antarmuka anu pas pikeun GPU, mékanisme enkripsi, komprési, mékanisme transcoding, mékanisme aljabar linier, atanapi bahkan FPGA anu langkung fleksibel. Kumaha cara nyiptakeun antarmuka anu ngajantenkeun alat éta gampang dianggo sareng nyumput pajeulitna? Eta moal meunang leupas tina eta, tapi rada nyumputkeun eta ti programmer basajan. 

Алексей: Salaku I ngartos eta, urang masih boga halangan dina pamahaman abstraksi. Hayu urang nyandak modél mémori; dina tahap pamekaran sains sareng téknologi, ieu mangrupikeun salah sahiji abstraksi utama. Hatur nuhun kana éta, sadaya programer dibagi kana dua grup: bagian gedé - jalma anu teu ngarti, sarta bagian leutik - jalma anu ngarti, atawa mikir yén maranéhna ngarti. 

Michael: Éta patarosan alus - naha salah sahiji urang bener ngartos model memori?

Vitali: Utamana dina C ++.

Michael: Ngobrol jeung Hans Boehm sometime. Anjeunna salah sahiji jalma smartest I terang, ahli ngarah dina model memori. Anjeunna bakal langsung nyarioskeun ka anjeun yén seueur anu anjeunna henteu ngartos. Tapi upami urang uih deui kana masalah abstraksi, maka, dina pamanggih kuring, ide anu paling penting dina modél mémori salami 30 taun katukang dikedalkeun. dina disertasi Sarita Adve. (Catetan éditor: daptar lengkep publikasi sayogi link).

Алексей: Patarosan abdi: naha halangan ieu asalna tina alam konsep? 

Michael: Henteu. Sarita dugi ka kacindekan yén kalayan pendekatan anu leres, anjeun tiasa suksés nyumputkeun sagala pajeulitna, kéngingkeun kinerja anu luhur sareng masihan programer API anu sederhana. Sareng upami anjeun nuturkeun API ieu, anjeun tiasa ngahontal konsistensi anu konsisten. Jigana ieu model katuhu. Tulis kode tanpa balapan data sareng kéngingkeun konsistensi sekuen. Tangtosna, pikeun ngirangan kamungkinan balap, peryogi alat khusus, tapi éta sanés masalah. 

Владимир: Dupi aya kali dina karir Anjeun nalika masalah nu seemed direngsekeun dumadakan robah jadi musibah, atawa tétéla yén masalah ieu unsolvable? Contona, dina téori anjeun bisa faktor angka nu mana wae nu atawa nangtukeun naha angka nu mana wae nu prima. Tapi dina prakna ieu tiasa sesah dilakukeun; sareng hardware ayeuna hese faktor nomer. Dupi hal sarupa kajadian ka anjeun?

Michael: Abdi mah emut wae kitu. Aya sababaraha kali kuring sigana teu aya anu kedah dilakukeun di daérah anu tangtu, tapi teras aya anu anyar sareng pikaresepeun kajantenan di dinya. Salaku conto, kuring ngira yén daérah antrian anu henteu terbatas parantos ngahontal kematangan. Saatos sababaraha perbaikan dina antrian MNS, euweuh kajadian deui. Teras Morrison (Adam Morrison) sareng Afek (Yehuda Afek) nimukeun antrian LCRQ. Ieu janten jelas yén hiji antrian multi-threaded taya mungkin, dimana lolobana waktu aya ngan hiji dipulut-na-increment instruksi dina jalur kritis. Sareng ieu ngamungkinkeun pikeun ngahontal tatanan gedéna kinerja anu langkung saé. Ieu lain urang teu nyaho yén dipulut-na-increment mangrupakeun hal pisan mangpaat. Eric Freudenthal wrote ngeunaan ieu dina karyana dina Ultracomputer kalawan Allan Gottlieb dina ahir taun 1980-an, tapi éta ngeunaan antrian kawates. Morrison sareng Afek tiasa nganggo dipulut-na-increment dina antrian anu teu terbatas.

Arsitéktur anyar. Dupi meunangna memori transactional nutup?

Владимир: Naha anjeun milarian solusi arsitéktur énggal anu tiasa mangpaat pikeun algoritma? 

Michael: Tangtu, aya loba hal anu Abdi hoyong ningali dilaksanakeun. 

Владимир: Naon, contona?

Michael: Anu mimiti, sababaraha ekstensi basajan pikeun memori transactional tingkat hardware kami dina prosesor Intel sarta IBM. Khususna, Abdi hoyong beban non-transaksional jeung toko nu ngan lumangsung janten langsung sadia dina transaksi. Aranjeunna langsung ngakibatkeun puteran dina urutan kajadian-saméméh, ngarah bisa hésé. Tapi upami anjeun ngajaga lapisan abstraksi, aya seueur hal anu pikaresepeun anu anjeun tiasa laksanakeun di luar transaksi nalika éta lumangsung. Kuring henteu weruh kumaha hésé ieu bakal dilaksanakeun, tapi bakal mangpaat pisan. 

Hal séjén mangpaat nyaéta ngamuat cache tina mémori jauh. Jigana sooner atanapi engké ieu bakal rengse. Téknologi ieu bakal ngamungkinkeun nyiptakeun sistem kalayan mémori anu dipisahkeun. Ieu bakal mungkin tetep, sebutkeun, 100 terabytes memori nonvolatile dina rak a, sarta sistem operasi sorangan dinamis bakal mutuskeun bagian mana memori nu kudu pakait jeung spasi alamat fisik prosesor. Ieu bakal mangpaat pisan pikeun komputasi awan, sabab bakal ngidinan jumlah badag memori disadiakeun pikeun tugas nu peryogi eta. Jigana batur bakal ngalakukeun eta.

Vitali: Pikeun rengse ngawangkong ngeunaan memori transactional, Kuring boga hiji deui patarosan dina topik ieu. Bakal memori transactional pamustunganana ngaganti struktur data multi-threaded baku?

Michael: Henteu. Transaksi mangrupikeun mékanisme spekulatif. Dina tingkat programming ieu konci atom, tapi di jero aranjeunna spekulasi. Ramalan sapertos kitu tiasa dianggo upami seueur tebakan leres. Ku alatan éta, memori transactional jalan ogé lamun threads boro interaksi saling, jeung anjeun ngan kudu mastikeun yén euweuh interaksi. Tapi lamun pesen dimimitian antara threads, transaksi téh saeutik gunana. Hayu atuh ngajelaskeun, urang ngobrol ngeunaan kasus nalika transaksi dibungkus sabudeureun sakabéh operasi atom. Éta kénéh bisa hasil dipaké salaku komponén pikeun struktur data multi-threaded. Contona, upami anjeun peryogi CAS tilu kecap, jeung anjeun kudu multithread tilu hal leutik di tengah hiji algoritma sabenerna multithreaded anu hade jeung dua puluh threads dina waktos anu sareng. Sacara umum, transaksi tiasa mangpaat, tapi aranjeunna moal ngaleungitkeun kabutuhan leres mendesain struktur data multi-threaded. 

memori non-volatile, Optane DIMM, alat ultra-gancang.

Vitali: Hal panungtungan Abdi hoyong ngobrol ngeunaan topik panalungtikan anjeun ayeuna: memori non-volatile. Naon anu tiasa urang ngarepkeun di daérah ieu dina waktos anu caket? Panginten anjeun terang ngeunaan palaksanaan anu épéktip anu parantos aya? 

Michael: Kaula mah ahli hardware, Kuring ukur nyaho naon kuring maca dina warta jeung naon kolega kuring ngabejaan kuring. Sadayana parantos nguping yén Intel ngajual Optane DIMM, nu boga ngeunaan 3 kali latency maca na 10 kali latency nulis ti RAM dinamis. Aranjeunna baris geura-giru sadia dina versi volume kacida gedéna. Éta lucu mikir yén anjeun tiasa gaduh laptop sareng sababaraha terabyte RAM anu tiasa dialamatkeun bait. Kamungkinan dina 10 taun kami bakal mutuskeun pikeun ngagunakeun téknologi anyar ieu, sabab kami nganggo DRAM - ngan ukur ningkatkeun polumeu. Tapi berkat kamerdikaan énergi, kasempetan lengkep anyar dibuka pikeun urang. Urang fundamentally bisa ngarobah tumpukan gudang ambéh teu aya separation antara memori kerja bait-addressable jeung memori pengkuh blok-terstruktur. Ku kituna, urang moal kudu serialize sagalana nu kudu ditransfer ti hiji program ngajalankeun ka sejen kana file block-terstruktur. Ti ieu urang bisa diturunkeun loba prinsip penting nu mangaruhan sistem operasi, lingkungan runtime, sarta toko data disebarkeun. Wewengkon ieu pikaresepeun pisan pikeun dianggo. Pribadi, hese pikeun kuring pikeun ngaduga naon anu bakal ngakibatkeun ieu, tapi masalah di dieu pisan ngahibur. Meureun aya parobahan revolusioner dieu, sarta aranjeunna nuturkeun pisan alami tina karya dina multithreading, saprak recovery gagalna nyaéta prosés "multithreading" gigireun operasi normal tina sistem. 

Topik utama kadua anu ayeuna nuju digarap nyaéta ngatur alat ultra-gancang sareng ngamankeun aksés ka alat tina ruang pangguna kalayan kontrol kawijakan sistemik. Dina taun-taun ayeuna, aya tren pikeun mindahkeun aksés ka alat ka ruang pangguna. Hal ieu dilakukeun kusabab tumpukan kernel TCP-IP teu tiasa fungsina di luhur antarmuka jaringan anu peryogi pakét énggal unggal 5 mikrodetik; éta ngan saukur moal tetep. Ku alatan éta, produsén nyadiakeun aksés langsung ka alat. Tapi ieu ngandung harti yén sistem operasi leungit kontrol prosés jeung teu bisa nyadiakeun aksés ditangtoskeun ka alat pikeun aplikasi competing. Tim peneliti kami yakin yén kakurangan ieu tiasa dihindari. Kami bakal gaduh tulisan ngeunaan ieu di USENIX ATC bulan ieu. Ieu patalina jeung gawé dina kegigihan, saprak lila-cicing bait-addressable memori pengkuh, dina panggih, hiji alat jeung ultra-gancang I / O nu perlu diaksés dina userspace nu. Panaliti ieu ngamungkinkeun pendekatan anyar pikeun microkernels, exokernels, sareng usaha tradisional anu sanés pikeun aman mindahkeun fungsionalitas tina kernel OS ka ruang pangguna. 

Владимир: memori bait-addressable hébat, tapi aya watesan fisik - laju cahaya. Ieu ngandung harti yén pasti bakal aya reureuh nalika berinteraksi sareng alat. 

Michael: Leres pisan.

Владимир: Bakal aya cukup kapasitas Cope jeung beban anyar?

Michael: Ieu patarosan alus teuing, tapi bakal hésé pikeun kuring ngajawab. Gagasan ngolah mémori parantos lami lami, éta pikaresepeun pisan, tapi ogé rumit pisan. Kuring geus teu digawé di wewengkon ieu, tapi bakal jadi hébat lamun sababaraha pamanggihan dijieun aya. Kuring sieun kuring teu boga nanaon deui pikeun nambahkeun. 

Владимир: Aya hiji deui masalah. Anyar, jumlah RAM anu langkung ageung bakal mustahil pikeun pas kana CPU. Ku alatan éta, alatan watesan fisik, RAM ieu kudu diisolasi. 

Michael: Eta sadayana gumantung kana jumlah defects dina produksi sirkuit terpadu. Lamun éta mungkin nyieun wafers semikonduktor sagemblengna tanpa cacad, éta bakal mungkin nyieun hiji sakabéh microcircuit kaluar tina eta. Tapi ayeuna urang henteu terang kumaha carana ngadamel microcircuits langkung ageung tibatan perangko. 

Владимир: Tapi urang masih ngobrol ngeunaan ukuran badag, ngeunaan séntiméter. Ieu inevitably boga dampak dina latency. 

Michael: Enya. Henteu aya anu tiasa anjeun lakukeun ngeunaan laju cahaya. 

Владимир: Hanjakal. 

Trend badag salajengna. Struktur data ganda. Hidra.

Vitali: Sajauh I ngartos, anjeun nyekel tren anyar pisan gancang. Anjeun salah sahiji nu pangheulana gawé dina mémori transactional, sarta salah sahiji nu pangheulana dianggo dina mémori non-volatile. Naon anu anjeun pikir bakal jadi trend badag salajengna? Atawa meureun éta rusiah?

Michael: Jujur, kuring henteu terang. Mudah-mudahan kuring tiasa perhatikeun nalika aya anu énggal. Kuring geus teu cukup untung mun invent sagala widang anyar sorangan, tapi kuring geus miboga sababaraha tuah tur bisa ngamimitian digawé rada mimiti dina widang anyar dijieun ku batur. Kuring miharep kuring bakal tiasa ngalakukeun ieu dina mangsa nu bakal datang.

Алексей: Patarosan terakhir dina wawancara ieu ngeunaan kinerja anjeun di Hydra sareng kagiatan anjeun di sakola. Mun kuring ngartos neuleu, laporan di sakola bakal ngeunaan algoritma blocking-gratis, sarta dina konferensi ngeunaan struktur data ganda. Dupi anjeun tiasa nyarios sababaraha kecap ngeunaan laporan ieu?

Michael: Sabagéan, kami geus keuna kana jejer ieu sareng anjeun dina wawancara ieu. Éta ngeunaan padamelan anu kuring lakukeun sareng murid kuring Bill Scherer. Manéhna nulis skripsi dina eta, sarta Doug Lee ogé nyumbang ka dinya, sarta ahirna jadi bagian tina antrian sinkron multi-threaded di perpustakaan Java. Hayu urang nganggap yén struktur data dibaca tur ditulis tanpa blocking, nyaeta, unggal operasi ngabogaan sajumlah kawates parentah dina jalur kritis. Upami anjeun nyobian ngahapus data tina wadah kosong, atanapi nyobian ngahapus data anu tangtu anu henteu aya dina wadah ieu, anjeun langsung terang yén ieu henteu tiasa dilakukeun. Tapi kabiasaan ieu bisa jadi teu bisa ditarima lamun thread bener perlu data ieu. Lajeng hal kahiji anu datang ka pikiran nya éta nyieun loop anu bakal terus nanya lamun data diperlukeun geus mucunghul. Tapi lajeng aya gangguan for everyone sejenna. Sajaba ti éta, kalawan pendekatan ieu, anjeun tiasa ngantosan 10 menit, lajeng sababaraha thread sejenna bakal datang, sarta eta ngahaja bakal nampa data diperlukeun munggaran. Struktur data ganda masih teu boga konci, tapi aranjeunna ngidinan threads antosan leres. Istilah "ganda" hartina struktur ngandung boh data atawa requests pikeun data, hayu urang nelepon aranjeunna anti-data. Janten upami anjeun nyobian nyandak barang tina wadah kosong, pamundut bakal dilebetkeun kana wadahna. Ayeuna benang tiasa ngantosan pamundut tanpa ngaganggu saha waé. Salaku tambahan, struktur data masihan prioritas kana pamundut supados nalika nampi, éta dikirimkeun ka jalma anu leres. Hasilna nyaéta mékanisme non-locking anu masih gaduh spésifikasi formal sareng kinerja anu saé dina prakna. 

Алексей: Naon ekspektasi anjeun tina struktur data ieu? Naha éta bakal ningkatkeun kinerja dina sadaya kasus umum, atanapi éta langkung cocog pikeun kaayaan anu tangtu? 

Michael: Mangpaat lamun, firstly, anjeun peryogi wadahna tanpa ngonci, jeung, Bréh, anjeun kudu antosan dina kaayaan dimana anjeun kudu nimba data tina wadahna nu teu aya di dinya. Pikeun pangaweruh pangalusna abdi, kerangka kami nyadiakeun kabiasaan optimal lamun dua kaayaan ieu patepung. Ku alatan éta, dina kasus ieu kuring nyarankeun ngagunakeun éta. Kauntungan utama tina struktur data anu teu dikonci nyaéta ngahindarkeun masalah kinerja. Sareng ngantosan penting pisan dina seueur algoritma upami data ditransfer tina hiji benang ka anu sanés.

Vitali: Hayu atuh netelakeun: anjeun bakal ngobrol ngeunaan hal anu sarua boh di sakola jeung di konferensi?

Michael: Di sakola Kuring bakal nyarita sacara umum ngeunaan struktur data multi-threaded, kalawan prinsip dasar outlined di awal palajaran. Kuring nganggap panongton weruh naon threads sarta akrab jeung konci. Dumasar pangaweruh dasar ieu, kuring bakal ngobrol ngeunaan struktur data bébas konci. Kuring bakal masihan tinjauan masalah anu paling penting di daérah ieu, nyabak kana topik sapertos manajemén mémori. Ku teu sangka bakal aya nanaon leuwih pajeulit batan antrian MS.

Алексей: Naha anjeun badé ngajar ngeunaan struktur data ganda dina tungtung kelas anjeun di sakola?

Michael: Kuring bakal nyebut aranjeunna, tapi kuring moal méakkeun loba waktu on aranjeunna. Laporan Hydra bakal dedicated ka aranjeunna. Bakal nutupan proyék nu antukna dijieun kana Java, kitu ogé gawé bareng Joe Israelevich pikeun nyieun varian ganda tina antrian LCRQ, sarta nyieun desain deukeut-universal pikeun struktur data dual.

Алексей: Jadi kuliah di sakola bisa dianjurkeun pikeun beginners, sarta ceramah dina struktur data ganda dina Hydra - pikeun jalma anu geus boga sababaraha pangalaman?

Michael: Ngalereskeun kuring lamun Abdi lepat, tapi panongton di Hydra bakal rada rupa-rupa, kaasup loba ahli Java, sarta sacara umum jalma anu teu husus aub dina programming multi-threaded. 

Vitali: Leres, leres.

Алексей: Sahenteuna urang miharep kitu.

Michael: Dina hal ieu, kuring bakal Nyanghareupan masalah anu sarua jeung nu urang mimiti wawancara ieu: kumaha carana sangkan laporan duanana sahingga euyeub di rinci teknis na diaksés ka sadaya listeners.

Vitali: Dupi anjeun masihan laporan cara anu sami sareng ceramah anjeun? Nyaeta, ngobrol jeung panongton sarta adaptasi jeung kaayaan?

Michael: Kuring sieun éta moal jalan kaluar, sabab laporan bakal slides. Slides penting lamun listeners mimitina nyarita basa béda. Seueur jalma bakal sesah ngartos kuring dina basa Inggris, khususna upami kuring nyarios gancang teuing. Kuring milih jejer ieu kusabab Peter Kuznetsov tanya kuring ngobrol ngeunaan struktur data bébas konci di Sakola SPTDC; lajeng Abdi peryogi laporan pikeun konferensi grup pamaké Java, sarta kuring hayang milih hiji hal anu bakal dipikaresep husus pikeun programer Java. Cara panggampangna nya éta ngobrol ngeunaan eta hal di perpustakaan Java nu kuring kungsi leungeun dina hiji atawa cara séjén. 

Алексей: Urang nganggap yén panongton on Hydra geus nyaho hal ngeunaan programming bébas konci jeung sugan boga sababaraha pangalaman di wewengkon ieu. Tapi ieu ngan ukur asumsi; kaayaan bakal langkung jelas dina konperénsi éta sorangan. Atoh, hatur nuhun pikeun waktos Anjeun. Kuring yakin wawancara bakal pisan metot pikeun pamiarsa urang. Hatur nuhun pisan!

Vitali: Hatur nuhun. 

Michael: Kuring bakal bungah pendak sareng anjeun di St. 

Алексей: Urang ogé, urang boga kota geulis. Dupi anjeun kantos ka dieu?

Michael: Henteu, kuring henteu pernah ka Rusia pisan. Tapi St. 

Алексей: Ku jalan kitu, urang bakal boga program excursions pikeun speaker. Hatur nuhun pisan pikeun wawancara, sarta boga dinten nice!

Anjeun tiasa neraskeun paguneman anjeun sareng Michael dina konperénsi Hydra 2019, anu bakal dilaksanakeun dina 11-12 Juli 2019 di St. Anjeunna bakal datang kalayan laporan "Struktur data ganda". Tiket bisa dibeuli dina situs wéb resmi.

sumber: www.habr.com

Tambahkeun komentar