"Es más fácil responder que guardar silencio": una gran entrevista con el padre de la memoria transaccional, Maurice Herlichi


Maurice Herlichi es el ganador de dos premios Dijkstra . El primero es para trabajar en Sincronización sin esperas (Brown University) y el segundo, más reciente, es Memoria transaccional: Soporte arquitectónico para estructuras de datos sin bloqueo (Virginia Tech University). El Premio Dijkstra se otorga a obras cuya importancia e influencia han sido notables durante al menos diez años y, obviamente, Maurice es uno de los especialistas más famosos en el campo. Actualmente trabaja como profesor en la Universidad de Brown y tiene muchos logros para un párrafo completo. Actualmente se dedica a la investigación de blockchain en el contexto de la informática distribuida clásica.


Anteriormente, Maurice llegó a Rusia en SPTCC ( video ) e hizo una excelente reunión de la comunidad de desarrolladores de Java JUG.ru en San Petersburgo ( video ).


Este habrapost es una gran entrevista con Maurice Herlihy. Discute los siguientes temas:


  • La interacción de la esfera académica y la industria;
  • La base para la investigación de blockchain;
  • ¿De dónde vienen las ideas innovadoras? Influencia de la popularidad;
  • Doctorado dirigido por Barbara Liskov;
  • El mundo está esperando multinúcleo;
  • Al nuevo mundo: nuevos problemas. NVM, NUMA y arquitectura de hacking;
  • Compiladores contra procesadores, RISC vs CISC, memoria compartida vs paso de mensajes;
  • El arte de escribir código frágil multiproceso;
  • Cómo enseñar a los estudiantes a escribir código complejo de subprocesos múltiples;
  • Nueva edición de El arte de la programación multiprocesador;
  • Cómo se inventó la memoria transaccional;
  • Por qué vale la pena realizar una investigación en el campo de la computación distribuida;
  • Se ha detenido el desarrollo de algoritmos y cómo vivir;
  • Trabaja en la Universidad de Brown;
  • La diferencia entre la investigación en la universidad y dentro de la corporación;
  • Hidra y SPTDC.

Entrevistas realizadas por:


Vitaly Aksyonov es actualmente un post-dock en IST Austria y un empleado del Departamento de Tecnología Informática de la Universidad ITMO. Dedicado a la investigación en la teoría y práctica de estructuras de datos competitivas. Antes de unirse a IST, recibió un doctorado de la Universidad de París Didro y la Universidad de ITMO bajo la dirección del profesor Peter Kuznetsov.


Alexey Fedorov es productor de JUG Ru Group, una compañía rusa que organiza conferencias para desarrolladores. Alexey participó en la preparación de más de 50 conferencias, y en su currículum hay algo desde el puesto de ingeniero de desarrollo en Oracle (JCK, Java Platform Group), hasta el puesto de devrell en Odnoklassniki.


Vladimir Sitnikov es ingeniero en Netcracker. Durante diez años, ha estado trabajando en el rendimiento y la escalabilidad del sistema operativo NetCracker, un software utilizado por los operadores de telecomunicaciones para automatizar los procesos de gestión de redes y equipos de red. Está interesado en los problemas de rendimiento de Java y Oracle Database. El autor de más de una docena de mejoras de rendimiento en el controlador JDBC oficial de PostgreSQL.


La interacción de la esfera académica y la industria.


Alexei: Moris, has trabajado en el entorno académico durante mucho tiempo y la primera pregunta es la interacción entre los campos académico e industrial. ¿Podría decirnos cómo han cambiado las interacciones entre ellos últimamente? ¿Qué pasó hace 20-30 años y qué está pasando ahora?


Maurice: Siempre intenté trabajar en estrecha colaboración con empresas comerciales, porque tienen tareas interesantes. Ellos, por regla general, no están muy interesados ​​en publicar los resultados obtenidos o en explicaciones detalladas de sus problemas a la comunidad mundial. Solo están interesados ​​en resolver estos problemas. Trabajé durante algún tiempo en tales empresas. Pasé cinco años trabajando a tiempo completo en un laboratorio de investigación en Digital Equipment Corporation, que solía ser una gran empresa de informática. Trabajé un día a la semana en Sun, en Microsoft, en Oracle, y trabajé un poco en Facebook. Ahora me voy de vacaciones creativas (licencia sabática, un profesor de una universidad estadounidense puede tomarse esa licencia por un año en algún lugar en seis años) y trabajar en Algorand , esta es una empresa de criptomonedas en Boston. Trabajar en estrecha colaboración con las empresas siempre ha sido un placer, porque así es como aprende cosas nuevas e interesantes. Puede ser la primera o la segunda persona en publicar un artículo sobre un tema de su elección, en lugar de mejorar gradualmente las soluciones a los problemas en los que todos los demás ya están trabajando.


Alexei: ¿Puedes contarnos más sobre cómo sucede esto?


Maurice: por supuesto. Sabes, cuando trabajaba en Digital Equipment Corporation, yo y Elliot Moss, inventamos la memoria transaccional. Fue un período muy fructífero cuando todos comenzaron a interesarse en la tecnología de la información. Concurrencia incluida, aunque todavía no existían sistemas multinúcleo. En los días de Sun y Oracle, trabajé mucho en estructuras de datos paralelas. En Facebook, participé en su proyecto blockchain, del que no puedo hablar, pero espero que pronto se haga público. El año que viene, en Algorand, trabajaré en un grupo de investigación, estudiando contratos inteligentes.


Alexei: En los últimos años, blockchain se ha convertido en un tema muy popular. ¿Esto ayudará a su investigación? ¿Quizás facilitará la recepción de subvenciones o dará acceso a los recursos de las empresas que operan en la industria?


Maurice: Ya recibí una pequeña donación de la Fundación Ethereum. La popularidad de blockchain es muy útil para inspirar a los estudiantes a trabajar en este campo. Están muy interesados ​​en esto y están felices de participar, pero a veces no entienden que los estudios que suenan tentadores desde el exterior incluyen un trabajo realmente duro. Sin embargo, estoy muy feliz de usar todo este misticismo en la cadena de bloques, ayuda a atraer estudiantes.


Pero eso no es todo. Estoy en el consejo asesor de varias startups de blockchain. Algunos de ellos pueden tener éxito, otros no, pero siempre es muy interesante ver sus ideas, estudiarlas y aconsejar a las personas. Lo más emocionante es cuando le adviertes a la gente que no haga algo. Mucho al principio parece una buena idea, pero ¿es realmente así?


Fundación de Investigación Blockchain


Vitaliy: Alguien piensa que la cadena de bloques y sus algoritmos tienen futuro. Y otras personas dicen que esto es solo otra burbuja. ¿Puedes compartir tu opinión sobre esto?


Maurice: Mucho de lo que está sucediendo en el mundo de las cadenas de bloques no funciona correctamente, algo es solo una estafa, muchas cosas están sobrevaloradas. Sin embargo, creo que hay una base científica sólida para estos estudios. El hecho de que el mundo de las cadenas de bloques esté lleno de diferencias ideológicas muestra el nivel de entusiasmo y dedicación. Por otro lado, no es particularmente beneficioso para la investigación científica. Ahora, si publica un artículo que habla sobre las deficiencias de un algoritmo particular, la reacción resultante no siempre es completamente científica. A menudo las personas arrojan sus emociones. Creo que tal revuelo en esta área puede parecer atractivo para algunos, pero al final, hay problemas científicos y de ingeniería reales que aún no se han abordado. Hay mucha informática.


Vitaliy: Es decir, estás tratando de sentar las bases para la investigación de blockchain, ¿verdad?


Maurice: Estoy tratando de sentar las bases para una disciplina sólida, científica y matemáticamente sólida. Y en parte el problema es que a veces hay que contradecir algunas posiciones demasiado duras de otras personas e ignorarlas. A veces la gente pregunta por qué trabajo en un área en la que solo los terroristas y los traficantes de drogas están interesados. Tal reacción no tiene sentido como el comportamiento de los seguidores que repiten ciegamente tus palabras. Creo que la verdad está en algún punto intermedio. Blockchain seguirá teniendo un profundo impacto en la sociedad y la economía global. Pero, probablemente, esto no sucederá gracias a las tecnologías modernas. Se desarrollarán tecnologías modernas y lo que se llamará blockchain en el futuro será muy importante. Tal vez ni siquiera se vea como blockchains modernos, esta es una pregunta abierta.


Si las personas inventan nuevas tecnologías, continuarán llamándolo blockchain. Quiero decir, al igual que el Fortran de hoy no tiene nada que ver con el idioma Fortran de la década de 1960, pero todos siguen llamándolo Fortran. Lo mismo vale para UNIX. Lo que se llama una "cadena de bloques" aún hará su revolución. Pero dudo que esta nueva cadena de bloques sea similar a lo que a todos les gusta usar hoy.


¿De dónde vienen las ideas innovadoras? Impacto de popularidad


Alexei: ¿La popularidad de blockchain ha dado lugar a nuevos resultados desde un punto de vista científico? Más interacción, más estudiantes, más empresas en el área. ¿Hay algún resultado de este crecimiento en popularidad?


Maurice: Me interesé en esto cuando alguien me entregó el folleto oficial de una empresa que acababa de recaudar bastante dinero. Escribió sobre la tarea de los generales bizantinos , con quienes estoy más que familiarizado. Escrito en el folleto era claramente técnicamente incorrecto. Las personas que escribieron todo esto realmente no entendieron el modelo detrás del problema ... y, sin embargo, esta compañía recaudó mucho dinero. Posteriormente, la compañía reemplazó silenciosamente este folleto con una opción mucho más correcta, y no diré cómo se llamaba esta compañía. Todavía existen y les está yendo muy bien. Este caso me convenció de que, en primer lugar, el blockchain es solo una forma de computación distribuida. En segundo lugar, el umbral de entrada (al menos hace cuatro años) era bastante bajo. Las personas que trabajan en este campo eran muy enérgicas e inteligentes, pero no leían artículos científicos. Intentaron reinventar cosas famosas y lo hicieron mal. Hoy el drama ha disminuido.


Alexei: Esto es muy interesante, porque hace varios años teníamos una tendencia diferente. Esto es un poco como el desarrollo front-end cuando los desarrolladores de la interfaz del navegador reinventaron tecnologías completas que para entonces ya eran populares en el back-end: sistemas de compilación, integración continua y todo eso.


Maurice: estoy de acuerdo. Pero esto no es sorprendente, porque las ideas verdaderamente innovadoras siempre provienen de fuera de la comunidad existente. Es poco probable que los investigadores reconocidos, especialmente las autoridades en el entorno académico, hagan algo realmente innovador. Es fácil escribir un informe para la próxima conferencia sobre cómo ha mejorado ligeramente los resultados de su trabajo anterior. Ir a la conferencia, reunirse con amigos, hablar sobre lo mismo. Y las personas que rompen con ideas innovadoras casi siempre provienen del exterior. No conocen las reglas, no conocen el idioma, pero de todos modos ... Si está dentro de una comunidad existente, le aconsejo que preste atención a cosas nuevas, a algo que no encaja en el panorama general. En cierto sentido, se puede intentar combinar desarrollos externos más fluidos con métodos que ya entendemos. Como primer paso, intente crear una base científica y luego cámbiela para que pueda aplicarse a nuevas ideas innovadoras. Creo que blockchain es perfecto para el papel de una nueva idea innovadora.


Alexei: ¿Por qué crees que esto sucede? ¿Porque las personas "externas" no tienen barreras específicas inherentes a la comunidad?


Maurice: Hay algún tipo de patrón. Si lees la historia de los impresionistas en la pintura y el arte en general, en algún momento los artistas famosos rechazaron el impresionismo. Dijeron que era una especie de infantilismo. Una generación después, esta forma de arte previamente rechazada se convirtió en el estándar. Lo que veo en mi área: los inventores de blockchain no estaban interesados ​​en el poder, en liquidar publicaciones e índice de citas, solo querían hacer algo bueno. Y así, se sentaron y comenzaron a hacerlo. Carecían de cierta profundidad técnica, pero es reparable. Es mucho más difícil proponer nuevas ideas creativas que corregir y fortalecer ideas insuficientemente maduras. Gracias a estos inventores, ¡ahora tengo algo que hacer!


Alexei: Esto es similar a la diferencia entre startups y proyectos heredados. Heredamos muchas limitaciones de pensamiento, barreras, requisitos especiales, etc.


Maurice: Una buena analogía es la computación distribuida. Piense en la cadena de bloques como si fuera una startup y una informática distribuida, una gran empresa establecida. La informática distribuida está en proceso de compra y fusión con la cadena de bloques.


Doctorado dirigido por Barbara Liskov


Vitaliy: ¡Todavía tenemos muchas preguntas! Estudiamos tu biografía y encontramos un hecho curioso sobre tu doctorado. Sí, fue hace mucho tiempo, pero el tema parece ser importante. ¡Tienes un doctorado bajo la dirección de Barbara Liskov misma! Barbara es muy famosa en la comunidad de desarrolladores de lenguajes de programación y, en general, una persona muy famosa. Es lógico que su investigación haya estado en el campo de los lenguajes de programación. ¿Cómo te cambiaste a la computación paralela? ¿Por qué decidiste cambiar de tema?


Maurice: En ese momento, Barbara y su grupo solo estaban mirando la computación distribuida, era una idea muy nueva. También hubo quienes dijeron que la informática distribuida no tenía sentido; la comunicación entre computadoras no tenía sentido. Uno de los problemas abordados en la informática distribuida que los distingue de la informática centralizada es la tolerancia a fallas. Después de una extensa investigación, decidimos que en un lenguaje de programación para computación distribuida, debe tener algo como transacciones atómicas, porque nunca puede estar seguro del éxito de una llamada remota. Tan pronto como tenga transacciones, surge el problema del control de concurrencia. Luego hubo mucho trabajo para obtener estructuras de datos transaccionales altamente paralelas. Luego, cuando me gradué, fui a Carnegie Mellon y comencé a buscar un tema para trabajar. Se me ocurrió que los cálculos habían pasado de computadoras individuales a redes de computadoras. Los multiprocesadores se convertirían en una continuación natural del progreso: la palabra "multinúcleo" aún no existía. Pensé: ¿cuál es el equivalente de las transacciones atómicas para un sistema multinúcleo? Definitivamente no son transacciones ordinarias, porque son demasiado grandes y pesadas. Y entonces llegué a la idea de linealización y así fue como se me ocurrió toda la sincronización sin esperas. Este fue un intento de responder a la pregunta de qué es un análogo de las transacciones atómicas para un sistema multiprocesador con memoria compartida. A primera vista, este trabajo puede parecer muy diferente, pero de hecho es una continuación del mismo tema.


El mundo en anticipación de multinúcleo


Vitaliy: Mencionaste que en ese momento había muy pocas computadoras multinúcleo, ¿verdad?


Maurice: Simplemente no estaban allí. Hubo varios llamados multiprocesadores simétricos que estaban básicamente conectados al mismo bus. Esto no funcionó muy bien, porque cada vez que una nueva empresa creaba algo similar, Intel lanzaba un único procesador que era superior al multiprocesador.


Alexei: ¿Esto significa que en esos viejos tiempos, era más un estudio teórico?


Maurice: Esto no fue una investigación teórica, sino más bien especulativa. Todo esto no se trataba de trabajar con muchos teoremas; más bien, presentamos hipótesis sobre la arquitectura que no existía en ese momento. ¡Esto es para lo que se necesita investigación! Ninguna compañía habría hecho algo así; todo esto era algo del futuro lejano. De hecho, esto fue hasta 2004, cuando aparecieron los procesadores multinúcleos reales. Debido al hecho de que los procesadores se sobrecalientan, puede hacer que el procesador sea aún más pequeño, pero no puede hacerlo más rápido. Debido a esto, ha habido una transición a arquitecturas multinúcleo. Y luego esto significó que de repente hubo una aplicación para todos los conceptos que desarrollamos en el pasado.


Alexei: ¿Por qué crees que los procesadores multinúcleo aparecieron solo en la década de 2000? Entonces, ¿por qué tan tarde?


Maurice: Esto se debe a limitaciones de hardware. Intel, AMD y otras compañías son muy buenas para aumentar la velocidad del procesador. Cuando en algún momento los procesadores se volvieron lo suficientemente pequeños y ya no pudieron aumentar la frecuencia del reloj, porque los procesadores comenzarían a quemarse. Puedes hacerlos más pequeños, pero no más rápidos. Lo que está en su poder: en lugar de un procesador muy pequeño, coloque ocho, dieciséis o treinta y dos procesadores en el mismo volumen de la caja, donde anteriormente solo se colocaba uno. Ahora tiene una comunicación multiproceso y rápida entre ellos, porque comparten cachés. Pero no puede hacer que funcionen más rápido: hay un límite de velocidad muy específico. Continúan mejorando un poco, pero no tanto. Las leyes de la física se interponían en el camino de las mejoras.


Al nuevo mundo: nuevos problemas. Arquitectura NUMA, NVM y Hacking


Alexey: Eso suena muy razonable. Con los nuevos procesadores multi-core, han surgido nuevos problemas. ¿Tú y tus colegas esperaban estos problemas? ¿Quizás los estudiaste por adelantado? En estudios teóricos, a menudo no es muy fácil predecir tales cosas. Cuando ocurrieron los problemas, ¿cómo cumplieron sus expectativas y las de sus colegas? ¿O eran completamente nuevos, y usted y sus colegas tuvieron que pasar mucho tiempo resolviendo problemas a medida que aparecían?


Vitaliy: Agregaré a la pregunta de Alexei: ¿predijiste correctamente la arquitectura de los procesadores mientras estudiabas teoría?


Maurice: No todos son 100%. Pero creo que mis colegas y yo hicimos un buen trabajo prediciendo múltiples núcleos con memoria compartida. Creo que predijimos correctamente las dificultades para desarrollar estructuras de datos paralelas que funcionen sin bloqueos. Dichas estructuras de datos fueron importantes para muchas aplicaciones, aunque no para todos, pero a menudo realmente se necesita una estructura de datos sin bloqueo. Cuando los inventamos, muchos afirmaron que esto no tenía sentido, y que todo funciona bien con cerraduras. Pronosticamos bien que habría soluciones listas para muchos problemas de programación y problemas de estructura de datos. Hubo problemas más complejos, como NUMA : acceso desigual a la memoria. De hecho, ni siquiera se consideraron antes de la invención de los procesadores multinúcleo, ya que eran demasiado específicos. La comunidad investigadora trabajó en temas que generalmente eran predecibles. Algunos problemas de hardware asociados con arquitecturas específicas tuvieron que esperar en las alas; de hecho, la apariencia de estas arquitecturas. Por ejemplo, nadie realmente trabajó en estructuras de datos específicas de GPU porque la GPU no existía entonces. Aunque se realizó mucho trabajo en SIMD , estos algoritmos estuvieron listos para su uso tan pronto como apareció el hardware adecuado. Sin embargo, es imposible prever todo.


Alexei: Si entiendo correctamente, NUMA es una especie de compromiso entre costo, rendimiento y algunas otras cosas. ¿Alguna idea de por qué NUMA llegó tan tarde?


Maurice: Creo que NUMA existe debido a problemas con el hardware utilizado para crear memoria: cuanto más lejos están los componentes, más lento es el acceso a ellos. Por otro lado, el segundo valor de esta abstracción es la uniformidad de la memoria. Por lo tanto, una de las características de la computación paralela es que todas las abstracciones están ligeramente rotas. Si el acceso fuera idealmente uniforme, toda la memoria sería equidistante, pero es económica y quizás incluso físicamente imposible. Por lo tanto, surge este conflicto. Si escribe su programa como si la memoria fuera uniforme, lo más probable es que sea correcto. En el sentido de que ella no dará las respuestas incorrectas. Pero la actuación de sus estrellas desde el cielo no atrapará. Del mismo modo, si escribe spinlocks sin comprender la jerarquía de caché, el bloqueo en sí será correcto, pero puede olvidarse del rendimiento. - , , , , : , , , . , , .


: ? , ? , . , - .


: . , – , . , , 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: A menudo me detengo y hago preguntas clásicas. ¿Alguna afirmación será correcta o cómo resolverían el problema en discusión? Esta es una acción clave, especialmente al comienzo de la lección, cuando la gente se avergüenza de decir aunque sea un poco. Usted hace una pregunta a los alumnos y no dice nada más. Se establece el silencio, todos se esfuerzan un poco, la tensión aumenta, y de repente alguien no puede soportarlo, se quiebra y dice la respuesta. Entonces le da la vuelta a la situación: ¡guardar silencio se vuelve más difícil e inconveniente que responder! Este es un truco pedagógico estándar. Todo maestro en el mundo necesita saber cómo hacer esto.


Alexei: Ahora tenemos un gran nombre para esta entrevista: "es más fácil responder que permanecer en silencio".


Vitaliy: Déjame preguntarte otro. Estás trabajando en evidencia topológica. ¿Cómo te involucras en esto, porque la informática distribuida y la topología son dos cosas diferentes!


Maurice: Hay una relación oculta. Cuando era estudiante y estudié matemáticas, estudié matemáticas puras. No tenía un interés real en las computadoras hasta que finalizó la capacitación, y me encontré con la urgente necesidad de buscar trabajo. Como estudiante, estudié topología algebraica. Muchos años después, mientras trabajaba en una tarea llamada "problema de acuerdo de k-set" , utilicé gráficos para modelar el problema y, al parecer, encontré una solución. Solo tenías que sentarte y dar la vuelta al conde. Intenta encontrar una respuesta adecuada en esta columna. Pero mi algoritmo no funcionó: resultó que siempre correría en círculos. Desafortunadamente, todo esto no puede explicarse por el lenguaje formal de la teoría de grafos, el que todos los expertos en el campo de la informática saben. Y luego recordé que hace muchos años, mientras aún estábamos en clases de topología, utilizamos el concepto de "complejo simplicial" , que es una generalización de gráficos a dimensiones superiores. Entonces me pregunté: ¿qué sucederá si reformulamos el problema en términos de complejos simpliciales? Esto se ha convertido en un punto clave. Cuando se usa un formalismo más poderoso, el problema de repente se vuelve mucho más fácil. La gente luchó durante mucho tiempo con los gráficos, pero no pudo hacer nada. Sí, y ahora no pueden, la respuesta correcta no fue el algoritmo, sino la prueba de la imposibilidad de resolver el problema. Es decir, tal algoritmo simplemente no existe. Pero cada prueba de imposibilidad se basa en complejos simpliciales o en cosas que la gente pretendía no considerar complejos simpliciales. Por el hecho de que llamaste a algo un nombre nuevo, no pierde su esencia.


Vitaly: Entonces, ¿tuviste suerte?


Maurice: Además de la suerte, también está listo . Esto significa que no debes olvidar las cosas "inútiles" estudiadas anteriormente. Mientras más cosas inútiles aprendas, más ideas puedes extraer cuando te enfrentas a un nuevo problema. Una coincidencia de patrones tan intuitiva es importante porque ... Hagámoslo, esta es la cadena: al principio descubrí que los gráficos no funcionan en absoluto o no funcionan en absoluto, me recordó algunos eventos de hace ocho años y mis años de estudiante, cuando estudiamos todos estos complejos simpliciales . A su vez, esto me permitió encontrar mi antiguo libro de texto de topología y volver a cargarlo en mi cabeza. Pero si no fuera por ese viejo conocimiento, nunca habría avanzado en la solución del problema original.


Nueva edición de El arte de la programación multiprocesador


Alexei: Dijiste algunas palabras sobre tu libro. Probablemente este no sea el peor misterio que escribió el libro de subprocesos múltiples más famoso del mundo, The Art of Multiprocessor Programming . Ella ya tiene unos 11 años y desde entonces solo se ha publicado una reimpresión revisada . ¿Habrá una segunda edición?


Maurice: ¡Qué bueno que lo hayas preguntado! Será muy pronto, dentro de tres meses más o menos. Hay dos autores más, agregamos mucho más material, mejoramos la sección sobre fork / join-parallelism, escribimos una sección en MapReduce, agregamos muchas cosas nuevas y descartamos lo innecesario, que al momento de escribir la primera edición era muy interesante, pero hoy ya no está allí. El resultado fue un libro muy seriamente revisado.


Alexei: Todo ya está hecho, ¿solo queda por estrenar?


Maurice: Todavía hay que completar un par de capítulos. Nuestro editor (creo que ya nos odia) todavía está tratando de transmitir que debemos trabajar más rápido. Estamos muy retrasados. Teóricamente, podríamos haber hecho este libro un par de años antes.


Alexei: ¿Hay alguna posibilidad de obtener una nueva versión del libro antes de Navidad?


Maurice: ¡Ese es nuestro objetivo! Pero he predicho la victoria tantas veces que nadie más me cree. Probablemente no deberías confiar en mí también en este asunto.


Alexei: En cualquier caso, esta es una noticia fantástica. Realmente me gustó la primera edición del libro. Se podría decir que soy fanático.


Maurice: Espero que la nueva edición sea digna de tu ardiente entusiasmo, ¡gracias!


¿Cómo se inventó la memoria transaccional?


Vitaliy: La siguiente pregunta es sobre la memoria transaccional. Según tengo entendido, eres un pionero en este campo, lo inventaste en un momento en que nadie pensaba en esas cosas. ¿Por qué decidiste mudarte a esta área? ¿Por qué las transacciones le parecieron importantes? ¿Alguna vez has pensado que estarán encarnados en hierro?


Maurice: Conozco transacciones desde estudios de posgrado.


Vitaliy: Sí, ¡pero estas son otras transacciones!


Maurice: Trabajé con Elliott Moss en una recolección de basura sin bloqueo. Nuestro problema era que queríamos cambiar atómicamente algunas palabras en la memoria, y luego los algoritmos se volverían muy simples, y al menos algunos de ellos serían más eficientes. Usar compare-and-swap para load-link / store-conditional proporcionado por la arquitectura paralela puede hacer algo, pero es muy ineficiente y feo porque tendrías que lidiar con niveles de indirección. Quiero cambiar las palabras de memoria y necesito cambiar porque solo puedo cambiar un puntero, así que necesito señalarlas a algún tipo de estructura similar a un directorio. Hablamos sobre lo maravilloso que sería si pudiéramos cambiar la plancha para que pudiera grabar simultáneamente. Elliot parece haber notado esto: si observa los protocolos de coherencia de caché, ya proporcionan la mayor parte de la funcionalidad necesaria. En una transacción optimista, el protocolo de coherencia de la memoria caché notará un conflicto de sincronización y la memoria caché dejará de ser válida . ¿Qué sucede si especulativamente comienza una transacción en su caché y usa los mecanismos de protocolo de coherencia para detectar conflictos? La arquitectura especulativa de hardware fue fácil de diseñar. Así que escribimos la primera publicación sobre memoria transaccional. Al mismo tiempo, la compañía para la que trabajaba, Digital Equipment Corporation, estaba creando un nuevo procesador de 64 bits llamado Alpha. Así que fui e hice una presentación para el equipo de desarrollo de Alpha sobre nuestra maravillosa memoria transaccional y me preguntaron: ¿qué ingresos adicionales recibirá nuestra empresa si agregamos todo esto directamente al procesador? Y no tenía absolutamente ninguna respuesta a esto, porque soy tecnólogo, no soy especialista en marketing. Realmente no tenía nada que responder. No estaban muy impresionados de que no supiera nada.


Vitaliy: ¡Miles de millones! ¡Solo di "miles de millones"!


Maurice: Sí, eso es lo que debería haber dicho. Ahora, en la era de las startups y todo eso, sé cómo escribir un plan de negocios. ¿Qué puede mentir un poco sobre la cantidad de ganancia potencial? Pero en aquellos días parecía ingenuo, así que solo dije: "No sé". Si observa el historial de publicaciones sobre la memoria transaccional, notará que después de un año había varios enlaces y, durante aproximadamente diez años, nadie citó este artículo en absoluto. Las citas aparecieron alrededor de 2004, cuando apareció el multinúcleo real. Cuando la gente descubrió que escribir código paralelo puede hacer dinero, comenzó una nueva investigación. Ravi Rajwar escribió un artículo que introdujo la corriente principal al concepto de memoria transaccional de alguna manera. (Nota editorial: el artículo tiene una segunda versión, lanzada en 2010 y disponible gratuitamente como PDF ). De repente, la gente se dio cuenta de cómo se podía usar exactamente todo esto, cómo se podían acelerar los algoritmos tradicionales de bloqueo acelerado. Un buen ejemplo de algo que en el pasado parecía un problema académico interesante. Y sí, si en esos días me preguntaras si creo que todo esto será importante en el futuro, diría: por supuesto, pero cuándo exactamente, no está claro. Tal vez en 50 años? En la práctica, esto resultó ser solo una década. Es muy agradable cuando haces algo, y después de solo diez años, la gente lo nota.


Por qué vale la pena investigar en el campo de la computación distribuida


Vitaliy: Si hablamos de nuevas investigaciones, ¿qué le aconsejarías a los lectores: computación distribuida o multinúcleo y por qué?


Maurice: En estos días es fácil obtener un procesador multinúcleo, pero es más difícil configurar un sistema distribuido real. Empecé a trabajar en ellos porque quería hacer algo diferente de mi tesis doctoral. Este es el consejo que siempre doy a los principiantes: no escribas una continuación de la disertación, trata de ir en una nueva dirección. Y sin embargo, el subprocesamiento múltiple es fácil. Puedo experimentar con mi propio tenedor corriendo en una computadora portátil sin levantarme de la cama. Pero si de repente quisiera crear un sistema distribuido real, tendría que hacer mucho trabajo, atraer estudiantes, etc. Soy una persona perezosa y preferiría trabajar en multinúcleo. Los experimentos en sistemas multinúcleo también son más fáciles de hacer que en sistemas distribuidos, porque incluso en un sistema distribuido estúpido hay muchos factores que deben controlarse.


Vitaliy: ¿Qué estás haciendo ahora, explorando la cadena de bloques? ¿A qué artículos debe prestar atención en primer lugar?


Maurice: Recientemente apareció un muy buen artículo que escribí con mi alumno, Vikram Saraf, específicamente por hablar en la conferencia Tokenomcs en París hace tres semanas. Este artículo trata sobre sistemas distribuidos prácticos en los que proponemos hacer Ethereum multiproceso. Ahora los contratos inteligentes (código que se ejecuta en la cadena de bloques) se ejecutan secuencialmente. Escribimos un artículo anteriormente que hablaba sobre cómo usar las transacciones especulativas para acelerar el proceso. Tomamos muchas ideas de la memoria del software transaccional y dijimos que si hace que estas ideas formen parte de la máquina virtual Etherium, entonces todo funcionará más rápido. Pero para esto es necesario que no haya conflictos en los contratos según los datos. Y luego sugerimos que en la vida real realmente no existen tales conflictos. Pero no tuvimos la oportunidad de averiguarlo. Entonces se nos ocurrió que teníamos casi diez años de historia de contratos reales a mano, por lo que descargamos la cadena de bloques Etherium y nos preguntamos: ¿qué pasaría si estos registros históricos se realizaran en paralelo? Encontramos un aumento significativo en la velocidad. En los primeros días de Etherium, la velocidad aumentó mucho, pero hoy es algo más complicado, porque hay menos contratos y hay una mayor probabilidad de conflictos sobre los datos que requieren serialización. Pero todo esto es un trabajo experimental con datos históricos reales. Lo bueno de blockchain es que recuerda todo para siempre, por lo que puede retroceder en el tiempo y estudiar lo que sucedería si utilizáramos otros algoritmos para ejecutar el código. Cómo a las personas allí, en el pasado, les gustaría nuestra nueva idea. Dicha investigación es mucho más fácil y más agradable, porque hay una cosa que monitorea todo y registra todo. Esto ya es algo más similar a la sociología que al desarrollo de algoritmos.


Se ha detenido el desarrollo de algoritmos y cómo vivir


Vitaliy: ¡El tiempo de la última pregunta teórica! ¿Siente que los cambios en las estructuras de datos competitivas se están reduciendo cada año? ¿Cree que hemos llegado a una meseta en nuestra comprensión de las estructuras de datos, o habrá alguna mejora importante? ¿Quizás hay algunas ideas engañosas que pueden cambiar todo por completo?


Maurice: Es posible que hayamos alcanzado una meseta en las estructuras de datos para arquitecturas tradicionales. Pero las estructuras de datos para nuevas arquitecturas siguen siendo un área muy prometedora. Si desea crear estructuras de datos, por ejemplo, para aceleradores de hardware, las estructuras de datos para la GPU son muy diferentes de las estructuras de datos para la CPU. Cuando desarrollas estructuras de datos para blockchains, debes trocear los datos y luego colocarlos en algo así como un árbol Merkle para evitar falsificaciones. En esta área, ha habido un aumento reciente en la actividad; muchos están haciendo un muy buen trabajo. Pero creo que sucederá que nuevas arquitecturas y nuevas aplicaciones conduzcan a nuevas estructuras de datos. Aplicaciones antiguas y arquitectura tradicional: tal vez no haya mucho espacio para la investigación allí. Pero si te sales de los caminos trillados y miras por encima del borde, verás cosas locas que la corriente principal no toma en serio: aquí es donde realmente ocurren todas las cosas emocionantes.


Vitaliy: Por lo tanto, para ser un investigador muy famoso, tuve que inventar mi propia arquitectura :-)


Maurice: Puedes "robar" la nueva arquitectura de otra persona, ¡parece ser mucho más fácil!


Empleos en Brown University


Vitaliy: ¿Podrías contarnos más sobre Brown University , dónde trabajas? No se sabe mucho sobre él en el contexto de la tecnología de la información. Menos que sobre MIT, por ejemplo.


Maurice: Brown University es una de las universidades más antiguas de los Estados Unidos. Creo que solo Harvard es un poco mayor. Brown es parte de la llamada Ivy League , que es una colección de ocho de las universidades más antiguas. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, PA, Princeton. Es una especie de universidad antigua, pequeña y ligeramente aristocrática. La atención se centra en la educación humanitaria. Él no trata de ser como el MIT, el MIT es muy especializado y técnico. Brown es un gran lugar para estudiar literatura rusa o el idioma griego clásico y, por supuesto, Ciencias de la Computación. Se centra en la educación integral. La mayoría de nuestros estudiantes van a Facebook, Apple, Google; por lo tanto, creo que nuestros estudiantes no tienen problemas para establecerse en la industria. Fui a trabajar a Brown, porque antes trabajaba en Digital Equipment Corporation en Boston. Fue una empresa que inventó muchas cosas interesantes, pero negó la importancia de las computadoras personales. Una compañía con un destino difícil, cuyos fundadores fueron una vez jóvenes revolucionarios, no aprendieron nada y no olvidaron nada, y por lo tanto se convirtieron de revolucionarios en reaccionarios durante aproximadamente una docena de años. Les gustaba bromear diciendo que las computadoras personales tenían un lugar en el garaje, en un garaje abandonado, por supuesto. Es obvio que fueron destruidos por empresas más flexibles. Cuando quedó claro que la empresa tenía problemas, llamé a mi amigo de Brown, que estaba a una hora de Boston. No quería irme de Boston en ese momento, porque no había muchas vacantes en otras universidades. Era una época en la que en el campo de la informática no había tantas vacantes como ahora. Pero Brown tenía una vacante, no tenía que mudarme de mi casa, no tenía que mudar a mi familia, ¡y realmente me gusta vivir en Boston! Entonces decidí ir a Brown. Me gustó Los estudiantes son maravillosos, así que nunca intenté ir a otro lado. En unas vacaciones creativas, trabajé en Microsoft durante un año, fui a Technion en Haifa por un año y ahora estaré en Algorand. Tengo muchos colegas en todas partes y, por lo tanto, la ubicación física de nuestras clases de entrenamiento no es tan importante. Pero lo más importante son los estudiantes, son los mejores aquí. Nunca intenté ir a ningún otro lado, porque aquí también soy muy feliz.


Sin embargo, a pesar de la fama de Brown en los Estados Unidos, es sorprendentemente desconocido en el extranjero. Como puede ver, ahora estoy haciendo todo lo posible para corregir este estado de cosas.


La diferencia entre la investigación en la universidad y dentro de la corporación


Vitaliy: Bueno, la siguiente pregunta es sobre equipos digitales. Eras investigador allí. ¿Cuál es la diferencia entre trabajar en el departamento de I + D de una gran empresa y trabajar en una universidad? ¿Cuáles son las ventajas y desventajas?


Maurice: Durante veinte años logré trabajar en Microsoft, trabajé estrechamente con empleados de Sun Microsystems, Oracle, Facebook y ahora Algorand. En base a todo esto, quiero decir que es posible realizar investigaciones de primera clase en empresas y en la universidad. La diferencia importante es que en la empresa trabajas con colegas. Si de repente se me ocurre la idea de un proyecto que aún no existe, debo convencer a mis colegas de que es una buena idea. Si estoy en Brown, entonces puedo decirles a mis alumnos: ¡trabajemos en antigravedad! Ellos irán a otra persona o se encargarán del proyecto. Sí, tendré que encontrar financiación, tendré que escribir una solicitud de subvención, etc. En cualquier caso, siempre habrá muchos estudiantes y podrá tomar decisiones unilateralmente. Pero en la universidad lo más probable es que no trabajes con personas de tu nivel. , . . , - , – . -, , , «, , , ». . , , , . , - , - . , , . , , – ! , . , . .


: , , .


: , . , -: - , - . 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/458936/


All Articles