Descripción general y pruebas comparativas de PC "Elbrus 401 - PC". Adición - Preguntas y respuestas

Quizás el principal resultado de la publicación de esta revisión , además de familiarizar al público con las primeras impresiones independientes de la nueva computadora, fue el deseo de la propia empresa MCST de revelar más detalles, eliminar los malentendidos y responder las preguntas planteadas en el artículo y en los comentarios al mismo. Algunos de estos problemas son tan fundamentales que merecen un artículo separado y, por lo tanto, requieren un estudio serio. Ahora veremos los que mejor se ajustan al formato de la entrevista.

Vista frontal y lateral de la unidad del sistema Elbrus 401-PCInfa 100%



Contenido




Puntos generales


Para comprender correctamente la posición de la empresa ICST en las siguientes preguntas, es necesario imaginar su pasado, presente y planes para el futuro; aparte de este contexto, algunos hechos pueden parecer extraños.

Históricamente, los principales clientes y consumidores de productos MCST han sido las estructuras de poder. El rango y los volúmenes de producción eran limitados, cada computadora estaba registrada, cada cliente era conocido a simple vista, en sentido figurado. Con un modelo de ventas de este tipo, era necesario y suficiente poner en circulación solo sistemas bien establecidos y certificados, en virtud de los cuales el software de la aplicación se agudizó bruscamente. Cada cliente requería un enfoque personal: consultas calificadas en la selección de equipos y su posterior operación, incluso con la partida de un ingeniero de servicio en el sitio de instalación (en cualquier lugar de la vasta tierra, así como en el mar). Es decir, una "empresa de felpa", excepto quizás con sus propios detalles.

Ahora, el MCST realmente quiere ingresar al mercado civil, primero al sector corporativo, que sin embargo está más cerca de la experiencia actual, y luego al segmento de consumidores, es decir, a las masas más amplias. Está claro que si los clientes comerciales todavía están de alguna manera listos para asumir los costos adicionales (pero no, por supuesto, lo que los clientes tradicionales de MCST están listos para soportar), especialmente cuando las ventajas de elegir una exclusiva costosa son claras, entonces la persona promedio vota con una billetera por el más asequible productos, aceptando un producto de menor calidad y, a veces, una falta total de apoyo del fabricante. E incluso la gente común anhela cosas nuevas: darles una duplicación del número de transistores cada año y medio, la última versión del kernel, las bibliotecas del sistema y los programas de aplicación; y no tan importantecuántos errores antiguos se eliminaron allí y cuántos nuevos aparecieron, cuánto se volvió más pesado el software y cómo ahora se ralentiza en las máquinas de la generación anterior.

La brecha obvia entre lo deseado y lo real se entiende bien en el ICST en todos los niveles: nadie tiene ilusiones de arcoíris de las que se puede salir al instante, por delante de los veloces velocistas y corredores de maratón experimentados, especialmente porque con tales rivales es necesario, como en famoso cuento de hadas, prisa con todas sus fuerzas, solo para mantenerse en su lugar. Ahora no hay dinero ni capacidad de producción para tal avance, ni recursos humanos elementales: el personal es tres órdenes de magnitud inferior al de Intel o Microsoft, y todos tienen que lidiar con eso de inmediato. Incluso para cubrir las estructuras comerciales o presupuestarias, primero es necesario expandir la red de concesionarios y talleres de reparación, para establecer un sistema de capacitación y soporte técnico; ahora el MCST solo busca el camino en busca de socios. Y, por supuesto, se necesitan inversiones financieras:Para poder vender sus computadoras a bajo costo, es necesario reducir el costo de producción, y esto se puede lograr solo con un aumento significativo en los volúmenes: resulta un círculo vicioso, que es muy difícil de romper.

También se entiende que los productos de consumo deben ser tan abiertos, es posible y aconsejable: por ejemplo, que la documentación, las distribuciones de instalación del software y las actualizaciones oportunas, los códigos fuente de estos programas deben estar disponibles de forma gratuita, que una plataforma para consulta pública e intercambio de experiencias, literatura educativa para principiantes y especialistas. Pero esto tampoco aparece por sí solo de la noche a la mañana, y la compañía todavía está en el comienzo del camino para ganarse los corazones y las mentes de los clientes potenciales.

Dado que es difícil abandonar los viejos hábitos, especialmente cuando todavía no existe la práctica de hacer negocios en un entorno completamente diferente, es necesario hacer un descuento en el hecho de que cuando los empleados de la empresa responden más preguntas en el texto, a menudo dicen: "usuario". el tipo de su cliente clásico con el que hay un contacto personal y un contrato directo, y a menudo también un acuerdo adicional de confidencialidad, ese cliente no está interesado en la publicidad y sabe que puede contar con cualquier capricho por su dinero. Pero, como se puede ver en muchas respuestas, esta plantilla ya no se considera la única. Aquí, también, todo se desarrollará gradualmente, paso a paso.

Producción y promoción


¿En qué planta se producen CPU y KPI? ¿En que volúmenes? ¿Es cierto que la producción se reduce (suspende) durante dos años?

Aquí no hay ningún secreto: ahora se producen nuevos microcircuitos solo en Asia. Y si nuestro objetivo es competir seriamente en el mercado libre, todavía no hay alternativa. Otra cosa es que la cuestión natural de la seguridad de la información surge en aplicaciones críticas, pero para una categoría especial de clientes es posible organizar la producción en instalaciones locales en cantidades limitadas, con un nivel de precios adecuado. El primer (y exitoso) proyecto de este tipo es el procesador Elbrus-2SM: sus cristales se producen en la fábrica de Micron en Zelenograd.

La liberación de microcircuitos no se detiene; además, se ajustan constantemente. Simplemente, según los estándares modernos, los volúmenes de menos de mil cristales por año se consideran producción a pequeña escala, y el pedido se realiza solo ocasionalmente, aquí no se necesita un transportador las 24 horas.

Muchos procesadores en esta etapa se dirigen a las necesidades domésticas, tanto mundanas como experimentales. Por ejemplo, recientemente se ensambló un complejo informático de 32 módulos 1U con cuatro procesadores Elbrus-4C cada uno, un total de 512 núcleos. Todos los que tengan tareas interesantes para dicho sistema pueden solicitar un tiempo de máquina. (Brevemente, qué clases de programas se ejecutan de manera más eficiente en la arquitectura E2K, y cómo optimizar su código fuente, se describirán a continuación, y se planea cubrir este tema con más detalle en una publicación separada).

¿A qué volúmenes de producción será posible reducir el costo del kit "placa base + procesador" a un nivel aceptable para una amplia gama de clientes? ¿Qué tan pronto podrá la industria electrónica rusa proporcionar esos volúmenes?

Para alcanzar un nivel de aproximadamente $ 1,000, es necesario producir al menos 10 mil productos terminados anualmente, y avanzar más hacia el comprador solo es posible con un flujo de aproximadamente 100 mil productos por año. Por supuesto, toda la producción debería concentrarse en China, o las fábricas nacionales deberían funcionar muy bien para reducir el costo de la logística y los costos de producción. Ahora todas las placas base fabricadas por MCST están montadas en fábricas rusas.

¿A qué volúmenes de producción se justificará lanzar una versión simplificada del procesador para sistemas de 1 zócalo, sin bloques de interacción entre procesadores y acceso a memoria remota?

Incluso 10 mil cristales al año no justificarán un cambio en la topología. Más bien, tendría sentido deshacerse de las conclusiones no utilizadas, lo que reducirá el área del sustrato, pero en el futuro previsible incluso esto no se justificará.

¿Cuánto costará la licencia del sistema operativo si comienzan las ventas de componentes por separado?

Hasta ahora, dicho esquema de ventas no se ha implementado, pero lo más probable es que se adopte la experiencia de colegas de Alt Linux: para uso personal, el precio definitivamente no será oneroso.

¿Cuándo esperar sistemas prefabricados basados ​​en Elbrus-8C? ¿Están definidas las características de los procesadores futuros? ¿Tendrá el próximo modelo 16 núcleos y una frecuencia de reloj de 2 GHz, por ejemplo?

Los modelos de preproducción de máquinas de un solo procesador basadas en el G8 se pueden ver este verano. El siguiente paso es un ligero aumento en la frecuencia (hasta 1.5 Hz) y una duplicación del número de unidades de cómputo de punto flotante que son la principal fuerza impulsora de esta plataforma; dicho procesador ya se está desarrollando con el nombre de trabajo "Elbrus-8SV". Se planea lanzar un procesador con 16 núcleos en 2020.

¿Por qué el sistema de nombres de hardware y software es tan confuso?

Cuando solo tiene un par de productos básicos en su activo, no es difícil entender la nomenclatura, especialmente para un profesional. Ahora, cuando el espectro de hardware y software se está expandiendo, cuando hay una orientación para el usuario promedio, el sistema de nombres se está llevando gradualmente a una forma que es comprensible para un lego.

Aclaraciones importantesEs incorrecto mencionar la designación "Elbrus 2000", así como la abreviatura "E2K" en el contexto de los productos modernos: el nombre oficial de esta arquitectura de microprocesador es "Elbrus", sin sufijos. El nombre "Elbrus-2000" fue elegido para la arquitectura, que estaban planeando implementar junto con compañías occidentales en 2000. A principios de 1999, un artículo que describía la arquitectura del microprocesador "Elbrus-2000" se imprimió en la revista Microprocessor Report, que apareció en inglés. como "Elbrus-2000", y en forma abreviada - "E2k". La arquitectura actual de Elbrus se ha refinado sustancialmente con respecto a esa arquitectura E2k, esta es la tercera versión, por lo que el uso de la notación anterior no es del todo correcto. TambiénLa abreviatura E2K (con la letra mayúscula "K") puede ser interpretada por los técnicos informáticos ortodoxos como 2048, lo que no tiene ningún valor.

Soporte al usuario


¿Hay documentación electrónica? ¿Planea poner la documentación en el dominio público para su descarga gratuita a cualquier persona que quiera (independientemente del hecho de la compra del equipo)?

La documentación se puede descargar ahora, pero hasta ahora solo se ha enviado un enlace a pedido. Sin embargo, en los próximos meses está previsto lanzar un sitio comunitario y de soporte técnico, donde toda la información será de dominio público. Como estamos hablando de docenas de documentos, tomará algún tiempo.

¿Planeas abrir la bugsilla para que el público la vea? ¿Crear un FAQ, organizar un foro - sitio para un intercambio abierto de experiencia?

No puede simplemente tomar y abrir una bugsilla, donde muchos tickets contienen información "altamente confidencial". Lo más probable es que se cree un bugzilla separado para las masas, disponible para que todos los asistentes puedan verlo y reponerlo. Y la experiencia previamente acumulada en las preguntas más frecuentes se procesará en las Preguntas frecuentes, que también se publicarán en el nuevo sitio de soporte. También habrá un foro, muy probablemente.

¿Qué pasa con la publicación del código fuente para el software adaptado y el envío de parches a la parte superior de un proyecto? ¿Planea aceptar parches de los usuarios? ¿Qué pasa con las recompensas por vulnerabilidades encontradas?

Los códigos fuente no se presentaron para el acceso público simplemente porque los clientes mismos no eran públicos, y la demanda entre ellos de los códigos fuente era pequeña, y quién realmente lo necesitaba no por curiosidad ociosa: envió una solicitud y recibió todo lo que se necesitaba en privado. Está previsto que para el consumidor masivo en el futuro previsible se cree un repositorio público, donde irá todo el código prestado. La compañía no planea abrir sus propios desarrollos, como el compilador LCC; al final, el compilador Intel C ++ (es decir, el MCST lo considera su principal rival en términos de optimizaciones) también está cerrado y se siente bien al mismo tiempo.

Los parches de los usuarios ya son aceptados, hasta ahora, también, en privado, por supuesto. Será difícil imaginar cómo se verá esto cuando se expanda la base de clientes y una oleada de atención por parte de los entusiastas.

Enviar sus cambios a los autores de los proyectos originales es indudablemente algo bueno, pero alguien necesita hacer esto, necesita conocer el enfoque de cada proyecto, para comprender las características de la cultura comunitaria. Una tarea más factible es simplemente compartir todo el código en el dominio público: si hay un "embajador de buena voluntad" que está listo para interactuar con uno u otro, entonces eso es genial. Hasta ahora, el ICST no tiene esa experiencia.

Hardware


¿Cómo usar el adaptador de video integrado en un entorno gráfico? ¿Qué tan cómodo es su rendimiento esperado para el trabajo en 2D?

Iniciar una reconfiguración de la tabla gráfica sería más fácil ejecutando la utilidad xorg-server.postinst . Las funciones de aceleración 3D del adaptador incorporado están completamente ausentes, pero el uso normal de las aplicaciones de escritorio no debería causar ningún inconveniente, ciertamente no es lo mismo que en las computadoras más antiguas. Probablemente, será necesario grabar esto en video y poner un video pequeño, en lugar de mil palabras.

¿Qué tarjetas gráficas discretas, además de la Radeon HD 6450 / R5 230, son compatibles con el sistema operativo? ¿Qué funciones de aceleración de hardware están disponibles para los programas de aplicación a través del controlador disponible en el sistema?

Es compatible con toda la línea moderna de Radeon, compatible con el controlador abierto para Linux. Dado que nVidia está muy triste a este respecto, sus productos no tienen soporte en el sistema operativo Elbrus en este momento.

¿Qué puede explicar las velocidades de lectura y escritura anormalmente bajas de una unidad de estado sólido, que ni siquiera alcanzan el ancho de banda nominal de la interfaz SATA-2 a través de la cual está conectada?

Esta es una limitación conocida del chip 1991VG1YA, que implementa un controlador de interfaz periférica (KPI). Se instalará una versión optimizada del controlador (KPI-2), en la que se resuelve este problema, en los sistemas con los nuevos procesadores Elbrus-8C y Elbrus-1C +.

¿Por qué la computadora Elbrus 401 - PC tiene un disco duro de 1 TB si ni siquiera está configurado en el sistema operativo, y la unidad principal ya ofrece mucho espacio libre?

El propósito obvio del disco duro es almacenar grandes cantidades de datos, que el contingente actual de usuarios demanda. El hecho de que el disco no esté montado en el sistema es una falla, pero no importante: algunos usuarios también reformatean la tarjeta flash para que se adapte a sus necesidades en lugar de la traducción binaria, no puede complacer a todos a la vez.

¿Cuál es el propósito de pintar la fijación por tornillo de una unidad de estado sólido, como un sello de garantía o para evitar el aflojamiento automático?

De hecho, la pintura es principalmente un tapón. El disco se puede desenroscar: no anula la garantía, pero si algo se rompe, los ingenieros de servicio tendrán preguntas naturales para el usuario con respecto a las acciones tomadas.

¿De dónde provienen los identificadores de dispositivos PCI? ¿Por qué muchos dispositivos integrados tienen el mismo código de desarrollador (ID de proveedor) que Intel?

La razón es completamente prosaica, porque el sistema operativo Windows en modo binario es más fácil de sentir como en casa. Sin embargo, debido a su enlace paranoico de códigos de activación al equipo utilizado, este sistema "más amigable" a veces todavía comienza a actuar.

¿Dónde puedo encontrar la descripción del módulo de firmware de arranque confiable Echelon-E?

Hay un malentendido: este producto es puramente software, y es solo un caso especial del "Echelon" MDZ habitual, desarrollado por la asociación científica y de producción homónima. Esta herramienta proporciona arranque de computadora confiable, control de integridad, identificación y autenticación del usuario antes de transferir el control al sistema operativo.

¿El módulo de control remoto IPMI se ofrece como una opción para los servidores Elbrus-4.4 como un desarrollo independiente, o es un producto terminado de fabricación extranjera?

Por supuesto, este es un desarrollo independiente, pero aún no es un producto terminado: el módulo se encuentra en la etapa de depuración.

Sistema operativo


¿Qué sistema de designación de versión se utiliza para el sistema operativo Elbrus?

La respuesta correcta ya se ha dado en el artículo: el número de versión está escrito en el archivo / etc / mcst_version . Esa versión 2.2, que estaba equipada con computadoras del primer lote, en realidad ya no es relevante: ahora es estable 2.3 y en la etapa de lanzamiento del candidato es 3.0 (con el núcleo 3.14).

¿Planea lanzar actualizaciones periódicas que se instalarían automáticamente desde el repositorio público? ¿Por qué no se empaqueta todo el software instalado en el sistema?

Sí, se planea una actualización automática, aunque ahora este proceso sigue siendo manual a pedido. Por supuesto, para esto, todo el software debe ser administrado por el administrador de paquetes, si ahora algo está mal, solo se debe a la depuración del proceso de compilación.

¿No es más fácil portar directamente una de las distribuciones populares de Linux, por ejemplo, la misma Debian?

Esto es exactamente lo que uno de los equipos está haciendo actualmente. De hecho, Debian ofrece quizás la infraestructura más conveniente para crear distribuciones derivadas. Además, Debian ahora tiene la más amplia gama de arquitecturas compatibles, al menos entre la familia Linux, por lo que crear nuevos puertos es lo más lógico sobre esta base. Sin embargo, el procedimiento de transferencia para este kit de distribución no es el más sencillo y sistemático, por lo que debe trabajar duro. Pero cuando el proceso se depura y automatiza, la sincronización con la línea principal será [casi] inmediata. Pero si será posible otorgar a este puerto el estatus oficial es una gran pregunta.

Pero la lista de sistemas operativos compatibles no está planificada para limitarse a una sola opción. El primer paso es esperar el puerto ALT Linux, que no necesita presentación. Además, se está trabajando para adaptar QNX: el sistema operativo en tiempo real protegido por Neutrino-Elbrus ya está funcionando de alguna forma; especifique detalles en los desarrolladores en el centro de competencia "SVD Embedded Systems".

¿Qué tan laborioso es portar el kernel de Linux? ¿Por qué ahora se usa la versión del kernel 2.6.33, no la más nueva, pero al mismo tiempo no es compatible con LTS?

El proceso de portar el kernel de Linux a una plataforma de hardware en particular es bastante laborioso, pero el problema no está en un solo esfuerzo, sino en el hecho de que cada vez hay que comenzar mucho desde el principio, ya que todo fluye, cambia y baraja. Por ejemplo, nos mudamos al kernel 3.14 y comenzamos a experimentar con la rama 4.x, y allí todo cambió nuevamente.

Es poco probable que en el futuro previsible sea posible lograr la adopción de su puerto en la línea principal kernel.org, cuando todo es muy estricto por un lado y bastante caótico por el otro. Por lo tanto, la perspectiva más probable es proporcionar su núcleo a todos los que quieran construir de forma independiente un kit de distribución, que ellos mismos quieren hacer.

¿Qué versiones de kernel (por defecto , nn , rt ) se utilizan mejor para qué fines?

Para las tareas cotidianas, el núcleo predeterminado es obviamente el más adecuado. El núcleo "nn" está destinado a enrutadores de red; allí es más barato manejar las interrupciones. El núcleo "rt" puede planificar el trabajo de los procesos, observando las restricciones en los segmentos de tiempo asignados dentro de los límites establecidos, lo que nos permite hablar sobre los cálculos en tiempo real, no significa "rápido", sino que significa "previsiblemente", aunque a costa de la pérdida de rendimiento; en este caso, el sistema generalmente solo necesita ejecutar el núcleo y la aplicación de destino, así como el conjunto mínimo necesario de servicios en segundo plano.

¿Es posible reiniciar rápidamente el [kernel] del sistema operativo sin reiniciar el hardware? ¿Cómo acelerar el lanzamiento del sistema operativo en particular y de la computadora en general?

No se proporciona un reinicio rápido del sistema operativo sin inicialización de hardware. La inicialización de los equipos se puede acelerar, en primer lugar, de manera obvia: por ejemplo, al deshabilitar o disminuir el tiempo de espera de búsqueda de los servidores ATA a través de Ethernet, solo se necesitan para descargar a través de la red. En segundo lugar, también hay métodos que no son obvios a primera vista: por ejemplo, puede deshabilitar la limpieza de RAM, que generalmente se realiza con fines de seguridad de la información. Bueno, acelerar el lanzamiento del sistema operativo al deshabilitar todos los servicios innecesarios no necesita comentarios.

Software de aplicación


¿Para qué fines se posiciona la versión actual de Firefox 3.6 si muchos sitios que usan tecnologías web modernas no son compatibles?

La versión actual del navegador en la versión actual del sistema operativo Elbrus es 23.0, que es mucho más avanzada en términos de funcionalidad y rendimiento. Por ejemplo, la prueba JetStream ahora se completa con éxito, con una puntuación de 7.8 puntos, no mucho más bajo que el nivel de 8.2 puntos alcanzado por la misma versión de Firefox en modo de traducción binaria x86, que utiliza un compilador JIT completo para JavaScript.

La versión 31.0 también se ejecutó, pero resultó ser peor, más lenta, y decidieron no lanzarla al público. La próxima versión migrada será 44.0.

¿El sistema tiene una implementación de algoritmos criptográficos domésticos (incluidas las versiones actuales) disponibles para programas C / C ++?

Ahora OpenSSL ha sido reemplazado por su rama: LibreSSL, donde la criptografía rusa está oficialmente integrada.

¿Cómo puedo explicar el bajo rendimiento de la máquina virtual Java, demostrado en varias pruebas?

El paquete OpenJDK 1.6.0 fue, en cierto sentido, un "desglose de la pluma": el trabajo en 1.7.0 y 1.8.0 ya está en pleno apogeo, donde logramos aumentar la productividad en 3-4 veces, a juzgar por pruebas como SPECjvm2008. Pero en el caso general, por supuesto, todavía queda mucho por optimizar.

¿Planea portar Mono o .NET en el marco del sistema operativo Elbrus u otro kit de distribución?

Dada la popularidad de esta tecnología, esto es casi inevitable. Pero, teniendo en cuenta los cambios actuales en las relaciones de Microsoft con la comunidad y el futuro incierto del proyecto Mono, existe un deseo natural de esperar un poco cuando las perspectivas se vuelven más claras, para no perder el tiempo en las ramas de desarrollo sin salida.

Mientras tanto, si alguien necesita ejecutar aplicaciones previas al lanzamiento, puede usar el modo de transmisión x86. En realidad, este es uno de los principales propósitos de la tecnología de transmisión: garantizar la compatibilidad durante el período de transición, hasta que la base de software se haya vuelto nativa. Por cierto, ahora el equipo MCST está trabajando activamente para aumentar la eficiencia de la traducción de aplicaciones utilizando compiladores similares justo a tiempo.

¿Cuáles son las perspectivas para Elbrus como plataforma de juegos, dado que en los juegos modernos casi toda la carga recae en la tarjeta de video, y a menudo no se necesita un procesador potente?

Nadie ha hecho esta pregunta en serio. Hasta ahora, si solo el juego no está disponible en los códigos fuente y no es realmente portátil, entonces la única salida es iniciar Windows o Steam OS en modo de transmisión binaria, pero puede haber problemas con la activación de la licencia debido a las peculiaridades del enlace de hardware.

Arquitectura y herramientas de desarrollo


¿Dónde y cómo puedo obtener una guía de referencia detallada para la arquitectura y el conjunto de instrucciones de la máquina?

Ahora toda la documentación se envía a pedido. Pero hay un matiz: el conjunto de instrucciones está abierto, pero la forma de codificar instrucciones en la palabra de comando es información cerrada por razones históricas. La cuestión de la divulgación completa de los detalles arquitectónicos se ha intentado en varias ocasiones para resolver positivamente, pero hasta ahora no se ha tomado una decisión.

Sin embargo, esto no presenta un problema práctico grave, ya que, según el MCST, la información en la documentación disponible es suficiente incluso para la programación de bajo nivel a través de intrínsecos, y generar código de máquina por su cuenta o incluso escribir en el ensamblador E2K es inútil en casi todos los casos , excepto por un círculo muy, muy estrecho de procedimientos del sistema de bajo nivel. Solo el compilador puede tener en cuenta los tiempos de ejecución de las instrucciones y llevar a cabo la optimización tan compleja que se requiere para el uso eficiente de los recursos de dicha arquitectura.

¿Qué tipos de programas (algoritmos) se pueden implementar de manera más eficiente en E2K, incluso en comparación con otras arquitecturas que proporcionan paralelismo implícito?

Inicialmente, Elbrus-2000 fue diseñado como una plataforma de alto rendimiento para la computación de punto flotante, y no hay ningún plan para alejarse de este concepto, sino todo lo contrario: como ya se mencionó, el siguiente paso después de 8C será duplicar el número de unidades de computación de un tipo real. En consecuencia, el camino principal son los programas matemáticos, los cálculos científicos y de producción. Especialmente para tales tareas, la biblioteca de algoritmos EML (biblioteca matemática Elbrus) está desarrollada y optimizada, y el compilador LCC tiene habilidades especiales para transformar algunas plantillas de código fuente en llamadas a esta biblioteca.

Otro punto fuerte es la presencia de un gran archivo de registro: hasta 256 registros están disponibles para el programa en cualquier momento dado, incluida la posibilidad de su cambio de nombre automático. Esto allana el camino para optimizaciones a gran escala. Por ejemplo, en una conocida revisión de CNews, se presentó la prueba gostcrypt.(esta es una implementación privada de uno de los clientes MTsST), en la cual Elbrus-4C casi duplicó el Core i7-2600 a una frecuencia menor; no hay fraudes, pero se concluyó incorrectamente que la razón de esto fue el origen interno del algoritmo GOST 28147-89. De hecho, el secreto del éxito radica en la combinación exitosa de la estructura de este algoritmo con las características cuantitativas de la arquitectura E2K y las capacidades cualitativas del compilador LCC para una optimización profunda. El compilador logró desplegar todo el ciclo de conversión de un solo bloque y conectarlo al conjunto de palabras de comando más pequeño posible, proporcionando trabajo con todos los bloques enteros disponibles, y este fue un resultado tan impresionante.

¿Cómo escribir programas E2K efectivos en C / C ++ y Fortran? ¿Hay un tutorial sobre este tema?

Ya se ha intentado crear una guía de arquitectura, pero los autores profundizaron en la descripción del hardware, creyendo que cualquier lector podría sacar conclusiones obvias de este material: resultó ser aproximadamente lo mismo que se publicó en el famoso libro "Microprocesadores y complejos de computación de la familia Elbrus". . En cuanto a la instrucción para programadores aplicados, por desgracia, hasta ahora todo el conocimiento sagrado se almacena solo en los jefes del personal involucrado en el desarrollo del compilador; a veces comparten sus revelaciones en conferencias en el Instituto de Física y Tecnología de Moscú, pero aún no han madurado para completar resúmenes en forma de libro. Mientras tanto, se recomienda leer las recomendaciones para Itanium como punto de partida: conceptualmente, esta arquitectura es muy similar a E2K.

Brevemente, las técnicas principales se pueden formular de la siguiente manera.
  •   :   (inline),       , —    «». , ,    4  , , ,     .
  • :   likely  unlikely,   pragma loop count,  , .
  • : for, while,    break.
  •     , —     ,    . (   ,       .)
  • : ,    , —  ,   ,  x86. ,  , .
  • Utilice características optimizadas siempre que sea posible, como la biblioteca EML mencionada anteriormente. Como ya se mencionó, el compilador en sí mismo puede reemplazar llamadas de funciones ordinarias con funciones optimizadas, pero no es omnipotente, y es mejor hacer todo explícitamente.

Con más detalle y con ejemplos, estos métodos y otras sutilezas están planeados para ser cubiertos en un artículo separado. El MCST es muy consciente de la importancia de difundir "técnicas secretas" entre los programadores para extraer la máxima productividad de Elbrus, y planea comenzar a transmitir la luz del conocimiento tan pronto como se forme la comunidad y su infraestructura.

¿Existe un conjunto de ejemplos de código fuente en C / C ++ con errores de acceso a la memoria para demostrar cómo la tecnología de ejecución segura de programas permite detectar dichos errores en las etapas de compilación y ejecución?

Por supuesto, existe un conjunto de programas de este tipo, como parte de las herramientas de prueba de regresión, que se llevan a cabo todas las noches. También puede usar ejemplos de la colección SAMATE del American NIST Institute. Sin embargo, para mayor claridad (se planea escribir un artículo separado sobre este tema), probablemente será más fácil escribir "archivos de una sola línea" que ilustren con precisión cada error por separado.

¿Está considerando escribir un backend E2K para el compilador LLVM como una alternativa a LCC que busca ser como GCC?

Las investigaciones en esta dirección se llevaron a cabo, por supuesto, pero el veredicto hasta ahora ha sido bastante negativo: la arquitectura de Elbrus-2000 es difícil de describir utilizando LLVM de la manera óptima. Es decir, se podría lanzar un compilador alternativo, pero el código de máquina que generó perdería LCC en términos de velocidad. Pero la dirección no se considera un callejón sin salida: es posible que con el tiempo el backend a LLVM se realice.

¿Puede LCC mostrar errores y advertencias en la forma aceptada por GCC para que estos mensajes se reconozcan en el entorno de desarrollo (por ejemplo, Qt Creator) en consecuencia?

Por el momento, esto no se proporciona, pero ya se ha iniciado un ticket en bugsilla.

¿Dónde puedo obtener el kit de herramientas de compilación cruzada para E2K desde el espacio de trabajo x86? ¿Existe un proceso inverso: generar código x86 desde el entorno de Elbrus y, de ser así, usar una versión especial de LCC o GCC normal?

Las herramientas de compilación cruzada para E2K (es decir, el compilador LCC que se ejecuta en Linux x86) están disponibles a pedido. El proceso inverso no se proporciona explícitamente: si esto es necesario, puede ejecutar algún sistema x86 en Elbrus en modo de traducción binaria y usar el compilador disponible allí.

¿Qué tecnologías de virtualización son compatibles con la plataforma Elbrus?

No hay soporte en este momento en absoluto. Sin embargo, pronto será posible usar contenedores.

Además, el trabajo para la creación de un núcleo paravirtualizado del sistema operativo y el mecanismo para soportar el hipervisor KVM debería completarse este año, y esta es la reserva principal en la parte dependiente de la arquitectura para implementar una infraestructura de nube completa como OpenStack. Mientras que otras arquitecturas, cuando trabajan en el entorno Qemu / KVM, confían en la virtualización de hardware completa, opcionalmente utilizando controladores virtv paravirtual para E / S e interceptación de instrucciones privilegiadas compatibles con el propio procesador, la parte dependiente de la arquitectura de KVM se está desarrollando para que Elbrus proporcione el paravirtual modo operativo cuando el sistema invitado trabaja en estrecha colaboración con el hipervisor y, en lugar de ejecutar instrucciones privilegiadas, llama a las funciones de la API de hipercall.

Es bien sabido que Intel mejora constantemente su arquitectura y mejora su microarquitectura, al tiempo que aumenta la productividad. ¿Cómo se está desarrollando la arquitectura de Elbrus en esta parte?

El desarrollo se mueve en varias direcciones.
  • El objetivo es mejorar el rendimiento del núcleo del procesador para acelerar las aplicaciones de subproceso único. Esto se logra al aumentar el número de operaciones ejecutadas simultáneamente (implementadas en la próxima 4ta versión del sistema de comando), usando registros más amplios para operaciones en datos vectoriales (implementados en la 5ta versión) y mejorando la jerarquía del subsistema de memoria. Al mismo tiempo, se mantiene la compatibilidad con versiones anteriores de la arquitectura.
  • La segunda dirección es la mejora del microprocesador como sistema en un chip. Con el desarrollo de tecnologías nanométricas más finas en microprocesadores, aumenta el número de núcleos de procesador, aumenta el número de canales de acceso a memoria para mantener el equilibrio del microprocesador, en algunos casos se agregan núcleos gráficos especializados y controladores adicionales para la interacción con dispositivos periféricos.

Finalmente, la mejora del compilador de optimización juega un papel importante, con la ayuda de la cual es posible extraer el paralelismo del programa y transformar el código en capacidades paralelas de la arquitectura, como se ha enfatizado repetidamente, el compilador es en realidad parte de la arquitectura. La reserva de habilidades del compilador está lejos de agotarse; el MCST ve aquí un campo muy amplio para los esfuerzos.

Traducción binaria X86


¿Qué características y limitaciones tiene la traducción binaria?

Este tema merece consideración en otro artículo, pero brevemente la imagen es la siguiente. La transmisión puede ser de dos tipos: a nivel de sistema y a nivel de aplicación. En el primer caso, el sistema operativo invitado proporciona acceso a todo el entorno de hardware de la computadora, y en el segundo, respectivamente, solo las llamadas del sistema se transfieren desde el programa invitado al núcleo del sistema host de Linux. Esto se puede comparar con los emuladores qemu-system-x86_64qemu-i386en consecuencia, sin embargo, el compilador no emula el procesador invitado, sino que inmediatamente vuelve a compilar el código de la máquina invitada en las instrucciones nativas de su arquitectura. Además, la conversión se realiza muchas veces, aumentando gradualmente el grado de optimización para las secciones de código más comunes, y los resultados se almacenan en un caché a largo plazo.

El traductor de nivel de sistema (llamado no oficialmente "dintel" - "el-intel") admite los conjuntos de comandos x86 y x86-64, y el traductor de nivel de aplicación ("rtc", es decir, compilador de tiempo de ejecución) es compatible hasta ahora solo con programas de 32 bits, - La versión de 64 bits está bajo prueba. Sin embargo, la compatibilidad con la arquitectura AMD64 / EM64T no significa soporte automático para todos los nuevos conjuntos de instrucciones que se pueden encontrar en varios procesadores Intel / AMD, como las últimas versiones de SSE, AVX, AES-NI: los indicadores correspondientes en la información de CPUID estarán ausentes.

¿Cómo usar un traductor de nivel de sistema?

Muy simple: cuando inicia su computadora, debe especificar una tarjeta flash como disco de arranque. Si la tarjeta resultó estar vacía, o el propio usuario borró el sistema de transmisión desde allí, puede volver a grabarla en cualquier momento copiando la imagen con el  comando dd .

El traductor de nivel de sistema tiene un BIOS del diseño original y, después de iniciarse, aparece la secuencia POST habitual en la pantalla, durante la cual puede ir al menú de configuración. La mayoría de estas configuraciones son las más comunes, pero también hay otras específicas. Por ejemplo, puede controlar de manera muy flexible la identificación del procesador por CPUID, cambiando no solo los números de familia y modelo o indicadores de capacidad individuales, sino también el nombre del texto; esto es necesario para contrarrestar el comportamiento anticompetitivo de los programas compilados utilizando el compilador Intel C ++. Otra opción específica es la conversión transparente del controlador SATA a PATA para garantizar la compatibilidad con una gama más amplia de sistemas operativos. Pero, a pesar de la presencia de tales "varitas mágicas", el funcionamiento de los sistemas operativos instalados en una máquina x86 real no está garantizado,- Esto es especialmente cierto en Windows con su vinculación de una licencia al hardware y una actitud reverente hacia el controlador de disco del sistema.

¿Cómo usar el traductor de nivel de aplicación?

Aún más simple: al iniciar el programa de traducción, pasarle la ruta a la aplicación invitada y la ruta al directorio raíz del entorno recreado. Toda la pregunta es cómo obtener primero una imagen de este entorno. Hasta ahora, solo se proporciona de manera estándar el entorno de la versión x86 del sistema Elbrus, sin embargo, también se permiten otros. Si al cliente le resulta difícil formar la imagen del sistema deseado de forma independiente, los especialistas del MCST pueden proporcionar la asistencia necesaria.

Desde debajo de una aplicación de invitado en ejecución (por ejemplo, un intérprete de comandos), un usuario puede iniciar otros programas de invitado, de forma completamente transparente. En un momento dado, se pueden lanzar varias instancias del traductor a la vez, y cada instancia puede funcionar en su propio entorno; por lo tanto, por ejemplo, puede probar la misma versión del navegador en diferentes distribuciones o, por el contrario, diferentes versiones del navegador en el mismo sistema (un ejemplo descabellado, por supuesto, pero revela la esencia).

Uno puede cumplir con la afirmación de que en el modo de traducción binaria algunos puntos de referencia comienzan a funcionar incluso más rápido que los ensamblados originalmente para E2K. ¿Para qué clases de programas y bajo qué condiciones es esto posible?

Esto es realmente posible, por ejemplo, cuando la versión nativa del motor JVM o JS solo puede interpretar el código de usuario, y la versión x86 en comparación con ella tiene un compilador JIT completo. Al mismo tiempo, aunque haya múltiples transmisiones, el código de bytes seleccionado para la optimización se compila primero en el lenguaje de máquina x86, luego, después de un tiempo, se vuelve a compilar en E2K (además, tres veces, una vez para cada nivel optimizaciones), de todos modos, la ganancia final de la compilación supera.

En cuanto a los programas nativos de C / C ++, también hay una explicación lógica, incluso dos. Primero, aunque el compilador LCC hace un trabajo titánico de optimizar el código generado, nadie puede garantizar que ningún compilador para x86, especialmente el comercial, no funcione mejor en un caso particular. En segundo lugar, es más probable que un programa bien optimizado para x86 se haya compilado simplemente teniendo en cuenta la creación de perfiles preliminares, mientras que el código fuente se suministró al compilador LCC sin avisos. Pero ceteris paribus, por supuesto, los programas nativos deberían funcionar al menos no más lento que los de difusión; si este no es el caso, se debe enviar un informe de error a los desarrolladores de LCC.

Medida de rendimiento


Según los especialistas de ICST, algunos puntos de referencia previamente populares no pueden revelar realmente el potencial de ninguna de las plataformas existentes. Tome el mismo UnixBench: con el debido respeto a su venerable edad, hace mucho tiempo que está desactualizado y es igualmente inadecuado para cualquier procesador y sistema operativo moderno. Sus dos pruebas dependientes del procesador, Whetstone y Dhrystone, prácticamente no están paralelas y no se pueden ejecutar al menos ninguna ejecución extraordinaria significativa, incluso en arquitecturas con paralelismo explícito, aunque implícito. Y el resto de las pruebas son generalmente "sobre nada", en lugar de ellas es mejor usar algo más específico. La única ventaja de UnixBench es su naturaleza multiplataforma, por lo que todavía se usa hoy en día.

Tampoco debe perder de vista el poderoso poder de la creación de perfiles. Por ejemplo, los resultados de la prueba 7-Zip que parecían sospechosamente altos en la revisión de CNews no son un engaño, sino una consecuencia de una compilación de dos pasos. Otra pregunta es cuánto es útil dicha optimización en el caso general, es decir, en datos de entrada arbitrarios. Por esta razón, apenas tiene sentido perfilar todos los componentes de la prueba Pgbench, porque el rendimiento de Postgresql puede resultar completamente diferente en los datos reales. Pero en el caso de específicamente con 7-Zip, es bastante fácil verificar dos veces: debe realizar otra prueba enviando una colección de varios archivos a la entrada. El único problema es que si los archivos no están estandarizados, repetir la prueba de la misma manera no funcionará para quien lo desee, y habrá aún menos confianza en los resultados publicados.

Debe tener en cuenta que los puntos de referencia sintéticos a menudo se escriben teniendo en cuenta una arquitectura específica (incluso porque sus autores están acostumbrados a pensar de esta manera), o están personalizados para una combinación específica de hardware y compilador. Por ejemplo, la conocida prueba SPECcpu declara objetividad e imparcialidad, sin embargo, en los códigos fuente de la versión 2006 puede encontrar comentarios de que esta o aquella muleta se agregó específicamente para el compilador Intel C ++. ¿Y cómo no se puede sospechar la influencia de un gran vendedor cuando el 90% de los registros representan 36,6 mil resultados publicados?

Las aplicaciones reales tampoco siempre son un indicador, porque las secciones más críticas pueden escribirse completamente en ensamblador x86 o contener muchas inserciones de ensamblador y llamadas a funciones especiales (intrínsecas), para las cuales OpenSSL es un buen ejemplo. Resulta que el código de máquina lamido para brillar se compara con una implementación de lenguaje de alto nivel, cuyo objetivo principal es ser una referencia y no óptimo.

Por lo tanto, una oferta para los lectores: pensemos juntos qué pruebas, artificiales o cercanas a la vida, se pueden hacer para ver qué tan fuerte es Elbrus en sus tareas relevantes. No es necesario que estos programas estén listos, especialmente con respecto a los cálculos matemáticos, porque, por ejemplo, la multiplicación de matrices, también es multiplicación de matrices en África: la complejidad de la tarea es la misma si se realiza mediante bibliotecas optimizadas de EML, BLAS / LAPACK o una función autoescrita. Deja tus ideas en los comentarios.

El autor agradece al personal de ICST por una explicación detallada e interesante.

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


All Articles