"É mais fácil responder do que ficar calado" - uma grande entrevista com o pai da memória transacional, Maurice Herlichi


Maurice Herlichi é o vencedor de dois prêmios Dijkstra . A primeira é para trabalhos sobre sincronização sem espera (Brown University) e a segunda, mais recente, é a Memória transacional: suporte arquitetônico para estruturas de dados sem bloqueio (Virginia Tech University). O Prêmio Dijkstra é concedido por obras cujo significado e influência são notáveis ​​há pelo menos dez anos e, obviamente, Maurice é um dos especialistas mais famosos da área. Atualmente, ele trabalha como professor na Brown University e tem muitas realizações para um parágrafo inteiro. Atualmente, ele está envolvido em pesquisa de blockchain no contexto da computação distribuída clássica.


Maurice chegou à Rússia no SPTCC ( vídeo ) e fez uma excelente reunião da comunidade de desenvolvedores Java JUG.ru em São Petersburgo ( vídeo ).


Este habrapost é uma ótima entrevista com Maurice Herlihy. Ele discute os seguintes tópicos:


  • A interação da esfera acadêmica e da indústria;
  • A base para a pesquisa de blockchain;
  • De onde vêm as idéias inovadoras. Influência da popularidade;
  • PhD liderado por Barbara Liskov;
  • O mundo está esperando multicore;
  • Para o novo mundo - novos problemas. NVM, NUMA e arquitetura de hackers;
  • Compiladores contra processadores, RISC vs CISC, memória compartilhada versus passagem de mensagens;
  • A arte de escrever códigos frágeis multiencadeados;
  • Como ensinar os alunos a escrever código multiencadeado complexo;
  • Nova edição de The Art of Multiprocessor Programming;
  • Como a memória transacional foi inventada;
  • Por que vale a pena realizar pesquisas no campo da computação distribuída;
  • O desenvolvimento de algoritmos parou e como viver;
  • Trabalho na Brown University;
  • A diferença entre pesquisa na universidade e dentro da corporação;
  • Hydra e SPTDC.

Entrevistas realizadas por:


Vitaly Aksyonov é atualmente pós-doca no IST Áustria e funcionário do Departamento de Tecnologia da Computação da Universidade ITMO. Envolvido em pesquisa na teoria e prática de estruturas de dados competitivas. Antes de ingressar no IST, ele recebeu um PhD da Universidade de Paris Didro e da Universidade de ITMO, sob a direção do Professor Peter Kuznetsov.


Alexey Fedorov é um produtor do JUG Ru Group, uma empresa russa que organiza conferências para desenvolvedores. Alexey participou da preparação de mais de 50 conferências e, em seu currículo, há qualquer coisa, desde a posição de engenheiro de desenvolvimento na Oracle (JCK, Java Platform Group), e terminando com a posição de devrell em Odnoklassniki.


Vladimir Sitnikov é engenheiro do Netcracker. Por dez anos, ele trabalha no desempenho e na escalabilidade do NetCracker OS, um software usado pelas operadoras de telecomunicações para automatizar os processos de gerenciamento de equipamentos de rede e de rede. Ele está interessado em questões de desempenho do Java e Oracle Database. O autor de mais de uma dúzia de melhorias de desempenho no driver oficial do PostgreSQL JDBC.


A interação da esfera acadêmica e da indústria


Alexei: Moris, você trabalha no ambiente acadêmico há muito tempo e a primeira pergunta é a interação entre os campos acadêmico e industrial. Você poderia nos dizer como as interações entre eles mudaram recentemente? O que aconteceu há 20 a 30 anos e o que está acontecendo agora?


Maurice: Eu sempre tentei trabalhar em estreita colaboração com empresas comerciais, porque elas têm tarefas interessantes. Como regra geral, eles não estão muito interessados ​​em publicar os resultados obtidos ou em explicações detalhadas de seus problemas para a comunidade mundial. Eles só estão interessados ​​em resolver esses problemas. Eu trabalhei por algum tempo nessas empresas. Passei cinco anos trabalhando em período integral em um laboratório de pesquisa na Digital Equipment Corporation, que costumava ser uma grande empresa de computadores. Trabalhei um dia por semana na Sun, na Microsoft, na Oracle e trabalhei um pouco no Facebook. Agora vou tirar férias criativas (licença sabática, um professor de uma universidade americana pode tirar essa licença por um ano em algum lugar em seis anos) e trabalhar em Algorand , essa é uma empresa de criptomoeda em Boston. Trabalhar em estreita colaboração com as empresas sempre foi um prazer, porque é assim que você aprende sobre coisas novas e interessantes. Você pode ser a primeira ou a segunda pessoa a publicar um artigo sobre um tópico de sua escolha, em vez de melhorar gradualmente as soluções para os problemas nos quais todos os outros já estão trabalhando.


Alexei: Você pode nos contar mais sobre como isso acontece?


Maurice: Claro. Sabe, quando trabalhei na Digital Equipment Corporation, eu e Elliot Moss, inventamos a memória transacional. Foi um período muito proveitoso em que todos começaram a se interessar por tecnologia da informação. Simultaneidade, incluindo, embora ainda não existam sistemas com vários núcleos. Nos dias da Sun e da Oracle, trabalhei muito em estruturas de dados paralelas. No Facebook, participei do projeto blockchain, sobre o qual não posso falar, mas espero que em breve se torne público. No próximo ano, na Algorand, trabalharei em um grupo de pesquisa, estudando contratos inteligentes.


Alexei: Nos últimos anos, o blockchain se tornou um tópico muito popular. Isso ajudará sua pesquisa? Talvez isso facilite o recebimento de subsídios ou dê acesso aos recursos de empresas que operam no setor?


Maurice: Eu já recebi uma pequena bolsa da Fundação Ethereum. A popularidade do blockchain é muito útil para inspirar os alunos a trabalhar neste campo. Eles estão muito interessados ​​nisso e estão felizes em participar, mas às vezes não entendem que os estudos que parecem tentadores do lado de fora acabam por incluir um trabalho realmente duro. No entanto, estou muito feliz em usar todo esse misticismo em torno da blockchain, isso ajuda a atrair estudantes.


Mas isso não é tudo. Estou no conselho consultivo de várias startups de blockchain. Alguns deles podem ter sucesso, outros não, mas é sempre muito interessante ver suas idéias, estudá-las e aconselhar as pessoas. O mais emocionante é quando você avisa as pessoas para não fazerem algo. Muito no começo parece uma boa ideia, mas é mesmo?


Fundação de Pesquisa Blockchain


Vitaliy: Alguém pensa que o blockchain e seus algoritmos têm futuro. E outras pessoas dizem que isso é apenas mais uma bolha. Você pode compartilhar sua opinião sobre isso?


Maurice: Muito do que está acontecendo no mundo das blockchains não está funcionando corretamente, algo é apenas uma farsa, muito é superestimado. No entanto, acho que há uma base científica sólida para esses estudos. O fato de o mundo das cadeias de blocos estar cheio de diferenças ideológicas mostra o nível de entusiasmo e dedicação. Por outro lado, não é particularmente benéfico para a pesquisa científica. Agora, se você publicar um artigo que fala sobre as deficiências de um algoritmo específico, a reação resultante nem sempre é totalmente científica. Muitas vezes, as pessoas jogam fora suas emoções. Eu acho que essa agitação nessa área pode parecer atraente para alguns, mas no final, existem questões científicas e de engenharia reais que ainda precisam ser abordadas. Há muita ciência da computação.


Vitaliy: Ou seja, você está tentando estabelecer as bases para a pesquisa de blockchain, certo?


Maurice: Estou tentando estabelecer as bases para uma disciplina sólida, científica e matematicamente. E, em parte, o problema é que, às vezes, é preciso contradizer algumas posições excessivamente duras de outras pessoas e ignorá-las. Às vezes, as pessoas perguntam por que eu trabalho em uma área na qual apenas terroristas e traficantes estão interessados. Tal reação é tão sem sentido quanto o comportamento dos seguidores que repetem cegamente suas palavras. Eu acho que a verdade está em algum lugar no meio. O Blockchain ainda terá um impacto profundo na sociedade e na economia global. Mas, provavelmente, isso não acontecerá graças às tecnologias modernas. Tecnologias modernas se desenvolverão e o que será chamado de blockchain no futuro se tornará muito importante. Talvez nem pareça cadeias modernas, essa é uma pergunta em aberto.


Se as pessoas inventarem novas tecnologias, continuarão chamando de blockchain. Quero dizer, assim como o Fortran de hoje não tem nada a ver com o idioma Fortran dos anos 1960, mas todo mundo continua chamando de Fortran. O mesmo vale para o UNIX. O que é chamado de "blockchain" ainda fará sua revolução. Mas duvido que este novo blockchain se torne semelhante ao que todo mundo gosta de usar hoje.


De onde vêm as idéias inovadoras. Impacto da popularidade


Alexei: A popularidade do blockchain levou a novos resultados do ponto de vista científico? Mais interação, mais estudantes, mais empresas na área. Existem resultados desse crescimento em popularidade?


Maurice: Fiquei interessado nisso quando alguém me entregou o folheto oficial de uma empresa que havia acabado de levantar bastante dinheiro. Escreveu sobre a tarefa dos generais bizantinos , com quem eu estou mais do que familiar. Escrito no folheto estava claramente tecnicamente incorreto. As pessoas que escreveram tudo isso realmente não entenderam o modelo por trás do problema ... e, no entanto, essa empresa levantou muito dinheiro. Posteriormente, a empresa silenciosamente substituiu este folheto por uma opção muito mais correta - e não vou dizer como essa empresa foi chamada. Eles ainda existem e estão indo muito bem. Esse caso me convenceu de que, em primeiro lugar, o blockchain é apenas uma forma de computação distribuída. Em segundo lugar, o limiar de entrada (há pelo menos quatro anos) era bastante baixo. As pessoas que trabalham neste campo eram muito enérgicas e inteligentes, mas não liam artigos científicos. Eles tentaram reinventar coisas famosas e fizeram errado. Hoje o drama diminuiu.


Alexei: Isso é muito interessante, porque há vários anos tivemos uma tendência diferente. É como o desenvolvimento de front-end quando os desenvolvedores de interfaces de navegador reinventaram tecnologias inteiras que já eram populares no back-end: sistemas de construção, integração contínua e tudo mais.


Maurice: Eu concordo. Mas isso não é surpreendente, porque idéias verdadeiramente inovadoras sempre vêm de fora da comunidade existente. É pouco provável que os pesquisadores reconhecidos, especialmente as autoridades do ambiente acadêmico, façam algo verdadeiramente inovador. É fácil escrever um relatório para a próxima conferência sobre como você melhorou levemente os resultados de seu trabalho anterior. Vá para a conferência, junte-se a amigos, fale sobre a mesma coisa. E as pessoas que invadem idéias inovadoras quase sempre vêm de fora. Eles não conhecem as regras, não sabem o idioma, mas mesmo assim ... Se você estiver em uma comunidade existente, aconselho a prestar atenção a coisas novas, a algo que não se encaixa no cenário geral. Em certo sentido, pode-se fazer uma tentativa de combinar desenvolvimentos externos e mais fluidos com métodos que já entendemos. Como primeiro passo, tente criar uma base científica e altere-a para que possa ser aplicada a novas idéias inovadoras. Eu acho que o blockchain é perfeito para o papel de uma nova ideia inovadora.


Alexei: Por que você acha que isso acontece? Porque as pessoas de fora não têm barreiras específicas inerentes à comunidade?


Maurice: Existe algum tipo de padrão. Se você lê a história dos impressionistas na pintura e na arte em geral, então artistas famosos rejeitaram o impressionismo. Eles disseram que era algum tipo de infantilidade. Uma geração depois, essa forma de arte anteriormente rejeitada se tornou o padrão. O que vejo na minha área: inventores de blockchain não estavam interessados ​​em poder, em acabar com publicações e índices de citação, eles só queriam fazer algo de bom. E assim, eles se sentaram e começaram a fazê-lo. Eles careciam de uma certa profundidade técnica, mas é corrigível. É muito mais difícil inventar novas idéias criativas do que corrigir e fortalecer idéias insuficientemente maduras. Graças a esses inventores, agora tenho algo a fazer!


Alexei: Isso é semelhante à diferença entre startups e projetos legados. Herdamos muitas limitações de pensamento, barreiras, requisitos especiais e assim por diante.


Maurice: Uma boa analogia é a computação distribuída. Pense no blockchain como se fosse uma startup e computação distribuída - uma grande empresa estabelecida. A computação distribuída está em processo de compra e fusão com a blockchain.


PhD liderado por Barbara Liskov


Vitaliy: Ainda temos muitas perguntas! Estudamos sua biografia e descobrimos um fato curioso sobre seu doutorado. Sim, foi há muito tempo, mas o tópico parece ser importante. Você fez um doutorado sob a direção da própria Barbara Liskov ! Barbara é muito famosa na comunidade de desenvolvedores de linguagens de programação e, em geral, uma pessoa muito famosa. É lógico que sua pesquisa tenha sido no campo das linguagens de programação. Como você mudou para a computação paralela? Por que você decidiu mudar de assunto?


Maurice: Naquela época, Barbara e seu grupo estavam apenas olhando para a computação distribuída, era uma idéia muito nova. Havia também quem dissesse que a computação distribuída não fazia sentido; a comunicação entre computadores não fazia sentido. Um dos problemas abordados na computação distribuída que os distingue da computação centralizada é a tolerância a falhas. Após uma extensa pesquisa, decidimos que em uma linguagem de programação para computação distribuída, você precisa ter algo como transações atômicas, porque nunca pode ter certeza do sucesso de uma chamada remota. Assim que você tem transações, surge o problema do controle de simultaneidade. Depois, houve muito trabalho para obter estruturas de dados transacionais altamente paralelas. Então, quando me formei, fui para Carnegie Mellon e comecei a procurar um tópico para trabalhar. Ocorreu-me que os cálculos haviam passado de computadores individuais para redes de computadores. Os multiprocessadores se tornariam uma continuação natural do progresso - a palavra "multi-core" ainda não existia. Pensei: qual é o equivalente a transações atômicas para um sistema multinúcleo? Definitivamente transações não comuns, porque são muito grandes e pesadas. Então, cheguei à ideia de linearizabilidade e foi assim que surgiu toda a sincronização sem espera. Esta foi uma tentativa de responder à pergunta sobre o que é um análogo de transações atômicas para um sistema multiprocessador com memória compartilhada. À primeira vista, este trabalho pode parecer muito diferente, mas na verdade é uma continuação do mesmo tópico.


O mundo em antecipação à multicore


Vitaliy: Você mencionou que naquela época havia muito poucos computadores multicore, certo?


Maurice: Eles simplesmente não estavam lá. Havia vários chamados multiprocessadores simétricos que estavam basicamente conectados ao mesmo barramento. Isso não funcionou muito bem, porque toda vez que uma nova empresa criava algo semelhante, a Intel lançava um único processador que era superior ao multiprocessador.


Alexei: Isso significa que antigamente era mais um estudo teórico?


Maurice: Isso não foi teórico, mas sim uma pesquisa especulativa. Tudo isso não se tratava de trabalhar com muitos teoremas; propusemos hipóteses sobre a arquitetura que não existia na época. É para isso que a pesquisa é necessária! Nenhuma empresa teria feito isso, tudo isso era algo de um futuro distante. De fato, isso foi até 2004, quando surgiram processadores reais com vários núcleos. Devido ao superaquecimento dos processadores, você pode tornar o processador ainda menor, mas não pode fazê-lo mais rapidamente. Por esse motivo, houve uma transição para arquiteturas multinúcleo. E então isso significava que de repente havia uma aplicação para todos os conceitos que desenvolvemos no passado.


Alexei: Por que você acha que os processadores multi-core apareceram apenas nos anos 2000? Então, por que tão tarde?


Maurice: Isso ocorre devido a limitações de hardware. Intel, AMD e outras empresas são muito boas em aumentar a velocidade do processador. Quando, em algum momento, os processadores ficaram pequenos o suficiente e não podiam mais aumentar a frequência do relógio, porque os processadores começavam a queimar. Você pode torná-los menores, mas não mais rápidos. O que está em seu poder - em vez de um processador muito pequeno, encaixe oito, dezesseis ou trinta e dois processadores no mesmo volume do gabinete, onde anteriormente apenas um era colocado. Agora você tem multithreading e comunicação rápida entre eles, porque eles compartilham caches. Mas você não pode fazê-los funcionar mais rapidamente - há um limite de velocidade muito específico. Eles continuam a melhorar um pouco, mas não tanto. As leis da física impediram melhorias.


Para o novo mundo - novos problemas. Arquitetura NUMA, NVM e Hacking


Alexey: Isso parece muito razoável. Com os novos processadores multinúcleo, novos problemas surgiram. Você e seus colegas esperavam esses problemas? Talvez você os tenha estudado com antecedência? Nos estudos teóricos, muitas vezes não é muito fácil prever tais coisas. Quando os problemas ocorreram, como eles atenderam às suas expectativas e às de seus colegas? Ou eles eram completamente novos, e você e seus colegas tiveram que gastar muito tempo resolvendo problemas à medida que apareciam?


Vitaliy: Vou acrescentar à pergunta de Alexei: você previu corretamente a arquitetura dos processadores enquanto estudava teoria?


Maurice: Nem todos são 100%. Mas acho que meus colegas e eu fizemos um bom trabalho prevendo multi-core com memória compartilhada. Acho que previmos corretamente as dificuldades no desenvolvimento de estruturas de dados paralelas trabalhando sem bloqueios. Essas estruturas de dados eram importantes para muitos aplicativos, embora não para todos, mas muitas vezes você realmente precisa de uma estrutura de dados sem bloquear. Quando os inventamos, muitos alegaram que isso não fazia sentido e que tudo funciona bem com bloqueios. Previmos bem que haveria soluções prontas para muitos problemas de programação e problemas de estrutura de dados. Houve problemas mais complexos, como NUMA - acesso desigual à memória. De fato, eles nem sequer foram considerados antes da invenção dos processadores com vários núcleos, pois eram muito específicos. A comunidade de pesquisa trabalhou em questões que geralmente eram previsíveis. Alguns problemas de hardware associados a arquiteturas específicas tiveram que esperar nos bastidores - na verdade, a aparência dessas arquiteturas. Por exemplo, ninguém realmente trabalhou em estruturas de dados específicas da GPU porque a GPU não existia na época. Embora muito trabalho tenha sido feito no SIMD , esses algoritmos estavam prontos para uso assim que o hardware adequado apareceu. No entanto, é impossível prever tudo.


Alexei: Se bem entendi, o NUMA é uma espécie de compromisso entre custo, desempenho e outras coisas. Alguma idéia de por que a NUMA chegou tão tarde?


Maurice: Eu acho que o NUMA existe devido a problemas com o hardware usado para criar memória: quanto mais os componentes estiverem, mais lento será o acesso a eles. Por outro lado, o segundo valor dessa abstração é a uniformidade da memória. Portanto, uma das características da computação paralela é que todas as abstrações estão levemente quebradas. Se o acesso fosse idealmente uniforme, toda a memória seria equidistante, mas é economicamente e talvez até fisicamente impossível. Portanto, esse conflito surge. Se você escrever seu programa como se a memória fosse uniforme, provavelmente estará correto. No sentido de que ela não dará as respostas erradas. Mas o desempenho de suas estrelas do céu não será bom. Da mesma forma, se você escrever spinlocks sem entender a hierarquia de cache, o bloqueio em si estará correto, mas você poderá esquecer o desempenho. - , , , , : , , , . , , .


: ? , ? , . , - .


: . , – , . , , NUMA -, , . – , . - , . , , . , , , . . , . , , , . , - 2000- . , - – , .


. , , . : , . near memory computing . , L1-, TPU – . – . , .


: ( non-volatile memory )?


: , ! NVM , , , . , , . , , . , , . , NVM – , . , , , .


, RISC vs CISC, shared memory vs message passing


: « » ? , : - , , . : . ?


: . . , . - RISC- , Intel , , . , , . , . , , , - , .


: , ? ?


: , , . . - , . , – , , , . - , : «, , - , , , – !». , , . , , , .



: . , , , , . - , - . , .


: , – , . , , , - . , . : , . , -. : , , . , . , , – , . , java.util.concurrent . , – . ( : , Java, ConcurrentSkipListMap, API c ). , , , . , . , , . , : ! - , , .


: , , , java.util.concurrent , , , . : , , - , -. ? , ? ?


: , : , , , . , . , . : , , , , . : , . , , : : , – , . , . , . , , . , , , . . , , , . , , . , .


: , : – , – ?


: . , . , , . : , , , . , .



: , ?


: , . . . - : «, » — , - , . , , : « , ?». . , , , . , - , . - : , . : , .


: , , , , , . , ?


: . , , , – . , Facebook . , , , , . . , , . , : , , – . . , - : , , , , , – . , , , . , – . , .


: . , . , , . - , ?


Maurice: Costumo parar e fazer perguntas clássicas. Alguma declaração estará correta ou como eles resolveriam o problema em discussão. Esta é uma ação fundamental, especialmente no início da lição, quando as pessoas ficam com vergonha de dizer um pouco. Você faz uma pergunta aos alunos e não diz mais nada. O silêncio se instala, todo mundo se esforça um pouco, a tensão aumenta e, de repente, alguém não aguenta mais, quebra e diz a resposta. Então você muda a situação: ficar calado se torna mais difícil e inconveniente do que responder! Este é um truque pedagógico padrão. Todo professor do mundo precisa saber como fazer isso.


Alexei: Agora temos um ótimo nome para esta entrevista: "é mais fácil responder do que ficar em silêncio".


Vitaliy: Deixe-me perguntar-lhe outro. Você está trabalhando em evidências topológicas. Como você se envolve nisso, porque a computação distribuída e a topologia são duas coisas diferentes!


Maurice: Existe um relacionamento oculto. Quando eu era estudante e estudei matemática, estudei matemática pura. Eu não tinha um interesse real em computadores até o fim do treinamento e me vi diante da necessidade urgente de procurar trabalho. Como estudante, estudei topologia algébrica. Muitos anos depois, enquanto trabalhava em uma tarefa chamada "Problema do Contrato k-Set" , usei gráficos para modelar o problema e, ao que parecia, encontrei uma solução. Você só tinha que sentar e dar a volta na contagem. Tente encontrar uma resposta adequada nesta coluna. Mas meu algoritmo não funcionou: descobriu-se que ele sempre correria em círculos. Infelizmente, tudo isso não pôde ser explicado pela linguagem formal da teoria dos grafos - a que todos os especialistas no campo da ciência da computação conhecem. E então me lembrei que há muitos anos, enquanto ainda estávamos nas aulas de topologia, usamos o conceito de "complexo simplicial" , que é uma generalização de gráficos para dimensões mais altas. Então me perguntei: o que acontecerá se reformularmos o problema em termos de complexos simples? Este se tornou um ponto chave. Ao usar um formalismo mais poderoso, o problema de repente se torna muito mais fácil. As pessoas lutaram com isso por um longo tempo usando gráficos, mas não puderam fazer nada. E mesmo agora eles não podem - a resposta correta não era o algoritmo, mas a prova da impossibilidade de resolver o problema. Ou seja, esse algoritmo simplesmente não existe. Porém, toda prova de impossibilidade é baseada em complexos simpliciais ou em coisas que as pessoas fingiam não considerar complexos simples. Pelo fato de você ter chamado algo de novo nome, ele não perde sua essência.


Vitaly: Então, você teve sorte?


Maurice: Além da sorte, também é a disponibilidade . Isso significa que você não deve esquecer as coisas "inúteis" estudadas anteriormente. Quanto mais coisas inúteis você aprender, mais idéias você poderá extrair quando enfrentar um novo problema. Essa correspondência intuitiva de padrões é importante, porque ... Vamos lá, esta é a cadeia: no começo, descobri que os gráficos não funcionam de todo ou não funcionam, isso me lembrou de alguns eventos de oito anos atrás e dos meus anos de estudante, quando estudamos todos esses complexos simples . Por sua vez, isso me permitiu encontrar meu antigo livro de topologia e carregá-lo de volta na minha cabeça. Mas se não fosse por esse conhecimento antigo, eu nunca teria avançado na solução do problema original.


Nova edição de The Art of Multiprocessor Programming


Alexei: Você disse algumas palavras sobre o seu livro. Este provavelmente não é o pior segredo que você escreveu o livro multithreading mais famoso do mundo, The Art of Multiprocessor Programming . Ela já tem cerca de 11 anos e, desde então, apenas a reimpressão revisada foi lançada . Haverá uma segunda edição?


Maurice: Que bom que você perguntou! Será muito em breve, daqui a três meses. Existem mais dois autores, adicionamos muito mais material, melhoramos a seção sobre fork / join-parallelism, escrevemos uma seção sobre o MapReduce, adicionamos muitas coisas novas e jogamos fora o desnecessário - que no momento em que escrevemos a primeira edição era muito interessante, mas hoje não está mais lá. O resultado foi um livro muito seriamente revisado.


Alexei: Tudo já foi feito, resta apenas o lançamento?


Maurice: Alguns capítulos ainda precisam ser finalizados. Nosso editor (acho que ele já nos odeia) ainda está tentando transmitir que devemos trabalhar mais rápido. Estamos muito atrasados. Teoricamente, poderíamos ter feito este livro alguns anos antes.


Alexei: Há chances de obter uma nova versão do livro antes do Natal?


Maurice: Esse é o nosso objetivo! Mas previ a vitória tantas vezes que ninguém mais acredita em mim. Você provavelmente não deveria confiar em mim também.


Alexei: De qualquer forma, essa é uma notícia fantástica. Gostei muito da primeira edição do livro. Você poderia dizer que sou fã.


Maurice: Espero que a nova edição seja digna de seu ardente entusiasmo, obrigado!


Como a memória transacional foi inventada?


Vitaliy: A próxima pergunta é sobre memória transacional. Pelo que entendi, você é um pioneiro neste campo, você o inventou em um momento em que ninguém pensava nessas coisas. Por que você decidiu se mudar para esta área? Por que as transações pareciam importantes para você? Você já pensou que eles serão encarnados em ferro?


Maurice: Conheço transações desde estudos de pós-graduação.


Vitaliy: Sim, mas essas são outras transações!


Maurice: Eu trabalhei com Elliott Moss em uma coleta de lixo sem bloqueio. Nosso problema era que queríamos alterar atomicamente algumas palavras na memória, e então os algoritmos se tornariam muito simples, e pelo menos alguns deles se tornariam mais eficientes. O uso de compare-and-swap para load-link / store-condicional fornecido pela arquitetura paralela pode fazer alguma coisa, mas é muito ineficiente e feio porque você precisaria lidar com níveis de indireção. Quero alterar as palavras da memória e preciso alternar, porque só posso alterar um ponteiro, por isso preciso apontá-las para algum tipo de estrutura semelhante a diretório. Conversamos sobre o quão maravilhoso seria se pudéssemos trocar o ferro para que ele pudesse gravar simultaneamente. Elliot parece ter notado isso: se você observar os protocolos de coerência do cache, eles já fornecem a maior parte da funcionalidade necessária. Em uma transação otimista, o protocolo de coerência do cache notará um conflito de sincronização e o cache se tornará inválido . O que acontece se você especulativamente iniciar uma transação no cache e usar os mecanismos do protocolo de coerência para detectar conflitos? A arquitetura especulativa de hardware foi fácil de projetar. Então, escrevemos a primeira publicação sobre memória transacional. Ao mesmo tempo, a empresa em que trabalhei, a Digital Equipment Corporation, estava criando um novo processador de 64 bits chamado Alpha. Fiz uma apresentação para a equipe de desenvolvimento Alpha sobre nossa maravilhosa memória transacional e eles perguntaram: que receita adicional nossa empresa receberá se adicionarmos tudo isso diretamente ao processador? E eu não tinha absolutamente nenhuma resposta para isso, porque sou tecnólogo, não sou especialista em marketing. Eu realmente não tinha nada a responder. Eles não ficaram muito impressionados por eu não saber de nada.


Vitaliy: Bilhões! Apenas diga "bilhões"!


Maurice: Sim, é o que eu deveria ter dito. Agora, na era das startups e tudo isso, sei escrever um plano de negócios. O que você pode mentir um pouco sobre a quantidade de lucro potencial. Mas naquela época parecia ingênuo, então eu apenas disse: "Eu não sei". Se você examinar o histórico de publicações sobre memória transacional, notará que, após um ano, houve várias referências a ele e, durante dez anos, ninguém citou este artigo. As cotações apareceram por volta de 2004, quando multicore real apareceu. Quando as pessoas descobriram que escrever código paralelo pode ganhar dinheiro, novas pesquisas começaram. Ravi Rajwar escreveu um artigo que introduziu o mainstream no conceito de memória transacional de alguma forma. (Nota editorial: o artigo possui uma segunda versão, lançada em 2010 e disponível gratuitamente em PDF ). De repente, as pessoas perceberam como exatamente tudo isso poderia ser usado, como os algoritmos tradicionais de bloqueio acelerado podiam ser acelerados. Um bom exemplo de algo que no passado parecia um problema acadêmico interessante. E sim, se naquela época você me perguntasse se acho que tudo isso será importante no futuro, eu diria: é claro, mas quando exatamente - não está claro. Talvez daqui a 50 anos? Na prática, isso acabou sendo apenas uma década. É muito bom quando você faz alguma coisa e, depois de apenas dez anos, as pessoas percebem.


Por que vale a pena fazer pesquisas no campo da computação distribuída


Vitaliy: Se falarmos sobre novas pesquisas, o que você aconselharia aos leitores - computação distribuída ou multicore e por quê?


Maurice: Hoje em dia é fácil obter um processador multi-core, mas é mais difícil configurar um sistema distribuído real. Comecei a trabalhar neles porque queria fazer algo diferente da minha tese de doutorado. Este é o conselho que sempre dou aos iniciantes: não escreva uma continuação da dissertação - tente seguir uma nova direção. E, no entanto, multithreading é fácil. Posso experimentar no meu próprio garfo rodando em um laptop sem sair da cama. Mas se de repente eu quisesse criar um sistema realmente distribuído, teria que trabalhar muito, atrair estudantes e assim por diante. Eu sou uma pessoa preguiçosa e prefere trabalhar em multicore. Também é mais fácil fazer experiências em sistemas multicore do que em sistemas distribuídos, porque mesmo em um sistema estúpido e distribuído, há muitos fatores que precisam ser controlados.


Vitaliy: O que você está fazendo agora, explorando o blockchain? Quais artigos você deve prestar atenção em primeiro lugar?


Maurice: Recentemente, apareceu um artigo muito bom que escrevi com meu aluno, Vikram Saraf, especificamente para falar na conferência Tokenomcs em Paris, três semanas atrás. Este artigo é sobre sistemas distribuídos práticos nos quais propomos tornar o Ethereum multithread. Agora os contratos inteligentes (código em execução na blockchain) são executados sequencialmente. Escrevemos um artigo anterior que falava sobre como usar transações especulativas para acelerar o processo. Pegamos muitas idéias na memória do software transacional e dissemos que, se você fizer essas idéias parte da máquina virtual Etherium, tudo funcionará mais rápido. Mas, para isso, é necessário que não haja conflitos nos contratos de acordo com os dados. E então sugerimos que na vida real realmente não existem tais conflitos. Mas não tivemos a oportunidade de descobrir. Então nos ocorreu que tínhamos quase dez anos de história de contratos reais em mãos, então descarregamos a blockchain Etherium e nos perguntamos: o que aconteceria se esses registros históricos fossem realizados em paralelo? Encontramos um aumento significativo na velocidade. Nos primeiros dias do Etherium, a velocidade aumentou muito, mas hoje é um pouco mais complicada, porque há menos contratos e há uma maior probabilidade de conflitos por dados que requerem serialização. Mas tudo isso é um trabalho experimental com dados históricos reais. O que é legal na blockchain é que ela se lembra de tudo para sempre, para que você possa voltar no tempo e estudar o que aconteceria se usássemos outros algoritmos para executar o código. Como as pessoas lá, no passado, gostariam da nossa nova ideia. Essa pesquisa é muito mais fácil e agradável, porque existe uma coisa que monitora tudo e registra tudo. Isso já é algo mais semelhante à sociologia do que ao desenvolvimento de algoritmos.


O desenvolvimento de algoritmos parou e como viver


Vitaliy: O tempo da última pergunta teórica! Você acha que as mudanças nas estruturas de dados competitivas estão diminuindo a cada ano? Você acha que chegamos a um patamar no nosso entendimento das estruturas de dados ou haverá alguma melhoria importante? Talvez haja algumas idéias complicadas que podem mudar tudo completamente?


Maurice: Podemos ter atingido um platô em estruturas de dados para arquiteturas tradicionais. Mas as estruturas de dados para novas arquiteturas ainda são uma área muito promissora. Se você deseja criar estruturas de dados, por exemplo, para aceleradores de hardware, as estruturas de dados da GPU são muito diferentes das estruturas de dados da CPU. Ao desenvolver estruturas de dados para blockchains, você precisa misturar os dados e colocá-los em algo como uma árvore Merkle para evitar falsificações. Nesta área, houve um recente aumento de atividade; muitos estão fazendo um trabalho muito bom. Mas acho que acontecerá que novas arquiteturas e novos aplicativos levarão a novas estruturas de dados. Aplicações antigas e arquitetura tradicional - talvez não haja muito espaço para pesquisas por lá. Mas se você sair da trilha batida e olhar além do limite, verá coisas loucas que o mainstream não leva a sério - é aqui que todas as coisas emocionantes realmente acontecem.


Vitaliy: Portanto, para ser um pesquisador muito famoso, tive que inventar minha própria arquitetura :-)


Maurice: Você pode "roubar" a nova arquitetura de outra pessoa - parece ser muito mais fácil!


Empregos na Brown University


Vitaliy: Você poderia nos contar mais sobre a Brown University , onde trabalha? Não se sabe muito sobre ele no contexto da tecnologia da informação. Menos do que o MIT, por exemplo.


Maurice: Brown University é uma das universidades mais antigas dos Estados Unidos. Eu acho que apenas Harvard é um pouco mais velho. Brown faz parte da chamada Ivy League , que é uma coleção de oito das mais antigas universidades. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, PA, Princeton. É uma espécie de universidade antiga, pequena e um pouco aristocrática. O foco está na educação humanitária. Ele não tenta ser como o MIT, o MIT é muito especializado e técnico. Brown é um ótimo lugar para estudar literatura russa ou a língua grega clássica e, é claro, Ciência da Computação. Ele se concentra na educação abrangente. A maioria dos nossos alunos vai para o Facebook, Apple, Google - portanto, acho que nossos alunos não têm problemas em se instalar no setor. Fui trabalhar em Brown, porque antes trabalhei na Digital Equipment Corporation em Boston. Era uma empresa que inventou muitas coisas interessantes, mas negou a importância dos computadores pessoais. Uma empresa com um destino difícil, cujos fundadores eram outrora jovens revolucionários, nada aprenderam e não esqueceram de nada e, portanto, passaram de revolucionários a reacionários por cerca de uma dúzia de anos. Eles gostavam de brincar que os computadores pessoais tinham um lugar na garagem - em uma garagem abandonada, é claro. É óbvio que eles foram destruídos por empresas mais flexíveis. Quando ficou claro que a empresa tinha problemas, liguei para meu amigo de Brown, que ficava a cerca de uma hora de Boston. Eu não queria sair de Boston naquela época, porque não havia muitas vagas em outras universidades. Era uma época em que no campo da Ciência da Computação não havia tantas vagas como agora. Mas Brown teve uma vaga, não tive que me mudar de casa, não tive que mudar minha família e gosto muito de morar em Boston! Então eu decidi ir para Brown. Eu gostei Os alunos são maravilhosos, então nunca tentei ir a outro lugar. Em férias criativas, trabalhei na Microsoft por um ano, fui para Technion em Haifa por um ano e agora estarei em Algorand. Eu tenho muitos colegas em todos os lugares e, portanto, a localização física de nossas aulas de treinamento não é tão importante. Mas o mais importante são os estudantes, eles são os melhores aqui. Eu nunca tentei ir a outro lugar, porque também estou muito feliz aqui.


No entanto, apesar da fama de Brown nos Estados Unidos, ele é surpreendentemente desconhecido no exterior. Como você pode ver, agora estou fazendo o possível para corrigir esse estado de coisas.


A diferença entre a pesquisa na universidade e dentro da corporação


Vitaliy: Bem, a próxima pergunta é sobre equipamento digital. Você era um pesquisador lá. Qual é a diferença entre trabalhar no departamento de P&D de uma grande empresa e trabalhar em uma universidade? Quais são as vantagens e desvantagens?


Maurice: Durante vinte anos, trabalhei na Microsoft, trabalhei em estreita colaboração com funcionários da Sun Microsystems, Oracle, Facebook e agora Algorand. Com base nisso, quero dizer que é possível realizar pesquisas de primeira classe em empresas e na universidade. A diferença importante é que na empresa você trabalha com colegas. Se de repente tive a idéia de um projeto que ainda não existe, devo convencer meus colegas de que essa é uma boa ideia. Se estou em Brown, posso dizer aos meus alunos: vamos trabalhar na antigravidade! Eles vão para outra pessoa ou assumem o projeto. Sim, precisarei encontrar financiamento, preciso escrever um pedido de subsídio e assim por diante. De qualquer forma, sempre haverá muitos alunos e você poderá tomar decisões unilateralmente. Mas na universidade você provavelmente não trabalhará com pessoas do seu nível. , . . , - , – . -, , , «, , , ». . , , , . , - , - . , , . , , – ! , . , . .


: , , .


: , . , -: - , - . Microsoft Facebook : , . , , – . , , .


Hydra SPTDC


: , .


: , .


: , . , ?


: !


: , SPTDC – . SPTCC , (C D, Concurrent Distributed), , , , . Hydra ?


: . , , , . - – . , - . . proof-of-work, -, .


, , , . , , , – , , .


: , , . . , , , 120 . , , , . Hydra . , , ?


: ? , ?


: . , . , ? – . , - . . , . , , – . .


, . , , , , SPTDC Hydra 2019!


Hydra 2019, 11-12 2019 -. «Blockchains and the future of distributed computing» . .

Source: https://habr.com/ru/post/pt458936/


All Articles