Vue d'ensemble et tests comparatifs du PC "Elbrus 401 - PC". Ajout - Questions et réponses

Peut-être que le principal résultat de la publication de cette revue , en plus de familiariser le public avec les premières impressions indépendantes du nouvel ordinateur, a été le désir de la société MCST elle-même de révéler plus de détails, d'éliminer les malentendus et de répondre aux questions soulevées dans l'article et dans les commentaires. Certaines de ces questions sont si fondamentales qu'elles méritent un article séparé et nécessitent donc une étude sérieuse. Nous allons maintenant examiner ceux qui correspondent le mieux au format de l'entretien.

401-PC   100 %



Table des matières




Général points


Afin de comprendre correctement la position de la société ICST dans les questions ci-dessous, il est nécessaire d'imaginer son passé, son présent et ses plans pour l'avenir - en dehors de ce contexte, certains faits peuvent sembler étranges.

Historiquement, les principaux clients et consommateurs des produits MCST ont été les structures de puissance. La gamme et les volumes de production étaient limités, chaque ordinateur était enregistré, chaque client était connu à vue, au sens figuré. Avec un tel modèle de vente, il était nécessaire et suffisant de ne mettre en circulation que des systèmes bien établis et certifiés, dans le cadre desquels les logiciels d'application étaient nettement affûtés. Chaque client nécessitait une approche personnalisée - des consultations qualifiées dans la sélection des équipements et leur fonctionnement ultérieur, y compris avec le départ d'un ingénieur de maintenance sur le site d'installation (partout dans le vaste territoire, ainsi qu'en mer). C'est-à-dire une "entreprise éponge", sauf peut-être avec ses propres spécificités.

Aujourd'hui, le MCST veut vraiment pénétrer le marché civil - d'abord dans le secteur des entreprises, qui est néanmoins plus proche de l'expérience actuelle, puis dans le segment des consommateurs, c'est-à-dire des masses les plus larges. Il est clair que si les clients commerciaux sont toujours prêts à supporter les coûts supplémentaires (mais pas bien sûr ce que les clients traditionnels du MCST sont prêts à supporter), surtout lorsque les avantages de choisir une exclusivité coûteuse sont évidents, alors la personne moyenne vote avec un portefeuille pour le plus abordable. marchandises, acceptant un produit de qualité inférieure et parfois un manque total de soutien du fabricant. Et même les gens ordinaires ont soif de nouvelles choses - donnez-leur un doublement du nombre de transistors chaque année et demi, la dernière version du noyau, des bibliothèques système et des programmes d'application; et pas si importantcombien d'anciennes erreurs y ont été éliminées et combien de nouvelles sont apparues, combien le logiciel est devenu plus lourd et comment il ralentit maintenant sur les machines de la génération précédente.

L'écart évident entre le souhaité et le réel est bien compris dans l'ICST à tous les niveaux - personne n'a d'illusions arc-en-ciel que vous pouvez instantanément sortir de la batte, devant les vénérables sprinteurs et les coureurs de marathon expérimentés, d'autant plus qu'avec de tels rivaux, il est nécessaire, comme dans célèbre conte de fées, se précipiter de toutes ses forces, juste pour rester en place. Désormais, il n'y a ni argent ni capacité de production pour une telle percée, ni ressources humaines élémentaires - le personnel est trois fois inférieur à celui d'Intel ou de Microsoft, et tout le monde doit y faire face immédiatement. Même pour couvrir les structures commerciales ou budgétaires, il faut d'abord étendre le réseau des concessionnaires et ateliers de réparation, mettre en place un système de formation et de support technique - désormais le MCST ne fait que sonder la voie à la recherche de partenaires. Et, bien sûr, des investissements financiers sont nécessaires:afin de pouvoir vendre leurs ordinateurs à peu de frais, il est nécessaire de réduire les coûts de production, et cela n'est possible qu'avec une augmentation significative des volumes - un cercle vicieux est obtenu, qui est très difficile à briser.

Il est également entendu que les produits de consommation doivent être si ouverts, il est à la fois possible et souhaitable: par exemple, que la documentation, les distributions d'installation des logiciels et les mises à jour opportunes, les codes sources de ces programmes soient disponibles gratuitement, qu'une plate-forme pour consultation publique et échange d'expériences, littérature pédagogique pour débutants et spécialistes. Mais cela aussi n'apparaît pas du jour au lendemain, et l'entreprise est encore au tout début du chemin pour gagner le cœur et l'esprit des clients potentiels.

Puisqu'il est difficile d'abandonner les vieilles habitudes, surtout quand il n'y a toujours pas de pratique de faire des affaires dans un environnement complètement différent, il est nécessaire de faire une remise sur le fait que lorsque les employés de l'entreprise répondent plus loin dans le texte, puis, en disant «utilisateur», ils ont souvent encore le type de son client classique avec lequel il y a un contact personnel et un contrat direct, et souvent aussi un accord de non-divulgation supplémentaire, un tel client lui-même n'est pas intéressé par la publicité et sait qu'il peut compter sur n'importe quel caprice pour son argent. Mais, comme le montrent de nombreuses réponses, ce modèle n'est plus considéré comme le seul. Ici aussi, tout se développera progressivement, pas à pas.

Production et promotion


Dans quelle usine les CPU et les KPI sont-ils produits? Dans quels volumes? Est-il vrai que la production est réduite (suspendue) pendant deux ans?

Il n'y a pas de secret ici: de nouveaux microcircuits ne sont désormais produits qu'en Asie. Et si nous voulons rivaliser sérieusement sur le marché libre, il n'y a pas encore d'alternative à cela. Une autre chose est que la question naturelle de la sécurité de l'information se pose alors dans les applications critiques, mais pour une catégorie spéciale de clients, il est possible d'organiser la production dans des installations locales en quantités limitées - avec un niveau de prix approprié. Le premier (et réussi) projet de ce type est le processeur Elbrus-2SM: ses cristaux sont produits dans l'usine Micron de Zelenograd.

La libération des microcircuits ne s'arrête pas - de plus, ils sont constamment ajustés. Simplement, selon les normes modernes, des volumes de moins de mille cristaux par an sont considérés comme de la production à petite échelle, et la commande n'est faite qu'occasionnellement, un convoyeur 24h / 24 n'est pas nécessaire ici.

À ce stade, de nombreux transformateurs répondent aux besoins domestiques, à la fois banals et expérimentaux. Par exemple, un complexe informatique a été récemment assemblé de 32 modules 1U avec quatre processeurs Elbrus-4C chacun - un total de 512 cœurs. Tous ceux qui ont des tâches intéressantes pour un tel système peuvent demander un temps machine. (Brièvement, quelles classes de programmes sont exécutées le plus efficacement sur l'architecture E2K et comment optimiser votre code source, seront décrites ci-dessous, et il est prévu de couvrir ce sujet plus en détail dans une publication séparée.)

A quels volumes de production sera-t-il possible de réduire le coût du kit «carte mère + processeur» à un niveau acceptable pour un large éventail de clients? Dans combien de temps l'industrie électronique russe sera-t-elle en mesure de fournir de tels volumes?

Pour atteindre un niveau d'environ 1 000 $, il est nécessaire de produire au moins 10 000 produits finis par an, et aller plus loin vers l'acheteur n'est possible qu'avec un flux d'environ 100 000 produits par an. Bien sûr, alors toute la production devrait être concentrée en Chine, ou les usines nationales devraient très bien travailler pour réduire les coûts de logistique et les coûts de production. Désormais, toutes les cartes mères fabriquées par le MCST sont montées dans des usines russes.

À quels volumes de production sera-t-il justifié de publier une version simplifiée du processeur pour les systèmes à 1 socket - sans blocs d'interaction entre processeurs et accès à la mémoire distante?

Même 10 000 cristaux par an ne justifieront pas un changement de topologie. Il serait plutôt judicieux de se débarrasser des conclusions non utilisées, ce qui réduira la surface du substrat, mais dans un avenir prévisible, même cela ne se justifiera pas.

Combien coûtera la licence du système d'exploitation si les ventes de composants commencent séparément?

Jusqu'à présent, un tel système de vente n'a pas été rodé, mais très probablement l'expérience de collègues d'Alt Linux sera adoptée - pour un usage personnel, le prix ne deviendra certainement pas contraignant.

Quand s'attendre à des systèmes prêts à l'emploi basés sur Elbrus-8C? Les caractéristiques des futurs processeurs sont-elles définies? Le prochain modèle aura-t-il 16 cœurs et une fréquence d'horloge de 2 GHz, par exemple?

Des modèles de pré-production de machines à processeur unique basées sur le G8 peuvent être vus cet été. L'étape suivante est une légère augmentation de la fréquence (jusqu'à 1,5 Hz) et un doublement du nombre d'unités de calcul à virgule flottante qui sont la principale force motrice de cette plate-forme - un tel processeur est déjà en cours de développement avec le nom de travail "Elbrus-8SV". Un processeur avec 16 cœurs est prévu pour 2020.

Pourquoi le système de nommage matériel et logiciel est-il si déroutant?

Lorsque vous n'avez que quelques produits de base dans votre actif, il n'est pas difficile de comprendre la nomenclature, en particulier pour un professionnel. Maintenant, lorsque le spectre du matériel et des logiciels s'élargit, lorsqu'il y a une orientation vers l'utilisateur moyen, le système de nommage prend progressivement une forme compréhensible pour un profane.

Précision importante.Il est erroné de mentionner la désignation «Elbrus 2000», ainsi que l'abréviation «E2K» dans le contexte des produits modernes: le nom officiel de cette architecture de microprocesseur est «Elbrus», sans aucun suffixe. Le nom "Elbrus-2000" a été choisi pour l'architecture, qu'ils prévoyaient de mettre en œuvre avec des entreprises occidentales en 2000. Au tout début de 1999, un article décrivant l'architecture du microprocesseur "Elbrus-2000" a été imprimé dans le journal Microprocessor Report, qui avait l'air en anglais. comme "Elbrus-2000", et sous forme abrégée - "E2k". L'architecture Elbrus actuelle a été considérablement affinée par rapport à cette architecture E2k, il s'agit de la troisième version, donc l'utilisation de l'ancienne notation n'est pas entièrement correcte. Aussil'abréviation E2K (avec la lettre majuscule "K") peut être interprétée par les informaticiens orthodoxes comme 2048, ce qui est absolument sans valeur.

Assistance aux utilisateurs


Existe-t-il une documentation électronique? Envisagez-vous de mettre la documentation dans le domaine public en téléchargement gratuit à tous ceux qui le souhaitent (indépendamment du fait d'acheter de l'équipement)?

La documentation peut être téléchargée maintenant, mais jusqu'à présent, un lien n'a été envoyé que sur demande. Cependant, dans les mois à venir, il est prévu de lancer un site communautaire et d'assistance technique, où toutes les informations seront dans le domaine public. Puisque nous parlons de dizaines de documents, cela prendra du temps.

Envisagez-vous d'ouvrir le bugsilla pour une visualisation publique? Créer une FAQ, organiser un forum - site pour un échange ouvert d'expériences?

Vous ne pouvez pas simplement prendre et ouvrir un bugsilla, où de nombreux tickets contiennent des informations «hautement sensibles». Très probablement, un bugzilla séparé sera créé pour les masses, disponible pour visualisation et réapprovisionnement par tous les arrivants. Et l'expérience précédemment accumulée sur les questions les plus fréquemment posées sera traitée dans la FAQ, qui sera également publiée sur le nouveau site de support. Il y aura aussi probablement un forum.

Qu'en est-il de la publication du code source des logiciels adaptés et de l'envoi de correctifs en amont d'un projet? Envisagez-vous d'accepter les correctifs des utilisateurs? Qu'en est-il des récompenses pour les vulnérabilités trouvées?

Les codes sources n'étaient pas présentés pour un accès public simplement parce que les clients eux-mêmes n'étaient pas publics, et la demande parmi eux pour les codes sources était petite, et qui en avait vraiment besoin, pas par simple curiosité - il a envoyé une demande et reçu tout ce qui était nécessaire en privé. Il est prévu que pour le grand public, dans un avenir prévisible, un référentiel public soit créé, où ira tout le code emprunté. La société ne prévoit pas d'ouvrir ses propres développements, tels que le compilateur LCC, - au final, le compilateur Intel C ++ (à savoir, le MCST le considère comme son principal rival en termes d'optimisations) est également fermé et se sent bien en même temps.

Les correctifs des utilisateurs sont déjà acceptés, jusqu'à présent également, en privé, bien sûr. Il sera difficile d'imaginer à quoi cela ressemblera lors de l'élargissement de la clientèle et une vague d'attention de la part des passionnés.

Envoyer vos modifications aux auteurs des projets originaux est sans aucun doute une bonne chose, mais quelqu'un doit le faire, vous devez connaître l'approche de chaque projet, pour comprendre les caractéristiques de la culture communautaire. Une tâche plus réalisable consiste simplement à partager l'intégralité du code dans le domaine public: s'il y a un «ambassadeur de bonne volonté» prêt à interagir avec l'un ou l'autre en amont, c'est parfait. Jusqu'à présent, l'ICST n'a pas une telle expérience.

Matériel informatique


Comment utiliser l'adaptateur vidéo intégré dans un environnement graphique? Dans quelle mesure ses performances sont-elles attendues pour un travail 2D?

Le lancement d'une reconfiguration de la table graphique serait plus simple en exécutant l' utilitaire xorg-server.postinst . Les fonctionnalités d'accélération 3D de l'adaptateur intégré sont totalement absentes, mais l'utilisation normale des applications de bureau ne devrait pas causer d'inconvénients - certainement pas la même que sur les ordinateurs plus anciens. Probablement, il sera nécessaire d'enregistrer cela sur vidéo et de mettre une petite vidéo - au lieu de mille mots.

Quelles cartes graphiques discrètes, en plus de la Radeon HD 6450 / R5 230, sont prises en charge par le système d'exploitation? Quelles fonctions d'accélération matérielle sont disponibles pour les programmes d'application via le pilote disponible dans le système?

Il prend en charge toute la gamme moderne de Radeon, compatible avec le pilote ouvert pour Linux. Comme nVidia est très triste à cet égard, leurs produits ne sont pas pris en charge par le système d'exploitation Elbrus pour le moment.

Qu'est-ce qui peut expliquer les vitesses de lecture et d'écriture anormalement basses d'un disque SSD, qui n'atteignent même pas la bande passante nominale de l'interface SATA-2 par laquelle il est connecté?

Il s'agit d'une limitation connue de la puce 1991VG1YA, qui implémente un contrôleur d'interface périphérique (KPI). Une version optimisée du contrôleur (KPI-2), dans laquelle ce problème est résolu, sera installée dans les systèmes équipés des nouveaux processeurs Elbrus-8C et Elbrus-1C +.

Pourquoi l'ordinateur Elbrus 401 - PC possède-t-il un disque dur de 1 To s'il n'est même pas configuré dans le système d'exploitation et que le disque principal fournit déjà beaucoup d'espace libre?

Le but évident du disque dur est de stocker de grandes quantités de données, ce qui est demandé par le contingent actuel d'utilisateurs. Le fait que le disque ne soit pas monté sur le système est un défaut, mais non significatif: certains utilisateurs reformatent également la carte flash en fonction de leurs besoins au lieu de la traduction binaire, vous ne pouvez pas plaire à tout le monde à la fois.

Quel est le but de peindre la fixation à vis d'un disque SSD, comme joint de garantie ou pour empêcher le desserrage automatique?

En effet, la peinture est avant tout un bouchon. Le lecteur peut être dévissé - cela n'annule pas la garantie, mais si quelque chose se casse, les techniciens de maintenance auront des questions naturelles pour l'utilisateur concernant les mesures prises.

D'où viennent les identifiants de périphériques PCI - pourquoi de nombreux périphériques embarqués ont-ils le même code de développeur (Vendor ID) qu'Intel?

La raison est complètement prosaïque - car le système d'exploitation Windows en mode binaire est plus facile à sentir chez soi. Cependant, en raison de sa liaison paranoïaque des codes d'activation à l'équipement utilisé, ce système «le plus convivial» commence parfois à agir.

Où puis-je trouver la description du module de micrologiciel de démarrage sécurisé Echelon-E?

Il y a un malentendu: ce produit est purement logiciel, et n'est qu'un cas particulier de l'habituel MDZ "Echelon", développé par l'association éponyme scientifique et de production. Cet outil fournit un démarrage informatique fiable, un contrôle d'intégrité, une identification et une authentification de l'utilisateur avant de transférer le contrôle au système d'exploitation.

Le module de commande à distance IPMI est-il proposé en option pour les serveurs Elbrus-4.4 est-il un développement indépendant ou s'agit-il d'un produit fini de fabrication étrangère?

Bien sûr, il s'agit d'un développement indépendant, mais pas encore d'un produit fini - le module est au stade du débogage.

Système d'exploitation


Quel système de désignation de version est utilisé pour le système d'exploitation Elbrus?

La bonne réponse a déjà été donnée dans l'article: le numéro de version est écrit dans le fichier / etc / mcst_version . Cette version 2.2, qui était équipée d'ordinateurs du premier lot, n'est en fait plus pertinente - maintenant, elle est stable 2.3, et au stade de la version candidate, elle est 3.0 (avec le noyau 3.14).

Envisagez-vous de publier des mises à jour régulières qui seraient installées automatiquement à partir du référentiel public? Pourquoi tous les logiciels installés sur le système ne sont-ils pas emballés?

Oui, une mise à jour automatique est prévue, bien que ce processus soit toujours manuel sur demande. Bien sûr, pour cela, tous les logiciels doivent être gérés par le gestionnaire de paquets, si maintenant quelque chose ne va pas, c'est uniquement à cause du débogage du processus de construction.

N'est-il pas plus facile de porter directement l'une des distributions Linux populaires - par exemple, la même Debian?

C'est exactement ce que fait actuellement l'une des équipes. En effet, Debian offre peut-être l'infrastructure la plus pratique pour créer des distributions dérivées. De plus, Debian a maintenant la plus large gamme d'architectures prises en charge, au moins parmi la famille Linux, donc la création de nouveaux ports est la plus logique sur cette base. Cependant, la procédure de portage de ce kit de distribution n'est pas la plus fluide et la plus systématique, vous devez donc travailler dur. Mais lorsque le processus est débogué et automatisé, la synchronisation avec la ligne principale devient [presque] immédiate. Mais s'il sera possible de donner à ce port un statut officiel, c'est une grande question.

Mais la liste des systèmes d'exploitation pris en charge ne devrait pas se limiter à une seule option. La première étape consiste à attendre le port ALT Linux, qui n'a pas besoin d'être présenté. De plus, des travaux sont en cours pour adapter QNX: le système d'exploitation en temps réel protégé par Neutrino-Elbrus fonctionne déjà sous une forme ou une autre; préciser les détails aux développeurs dans le centre de compétence "SVD Embedded Systems".

À quel point le portage du noyau Linux est-il laborieux? Pourquoi la version 2.6.33 du noyau est-elle maintenant utilisée - pas la plus récente, mais en même temps non prise en charge comme LTS?

Le processus de portage du noyau Linux sur une plate-forme matérielle particulière est en fait assez laborieux, mais le problème n'est pas dans un seul effort, mais dans le fait que chaque fois, beaucoup doit être démarré presque depuis le début, car tout circule, change et mélange. Par exemple, nous venons de passer au noyau 3.14 et avons commencé à expérimenter avec la branche 4.x - et là tout a encore changé.

Il est peu probable que dans un avenir prévisible, il soit possible de parvenir à l'adoption de son port dans la ligne principale kernel.org, alors que tout est très strict d'une part et plutôt chaotique de l'autre. Par conséquent, la perspective la plus probable est de fournir leur noyau à tous ceux qui souhaitent construire indépendamment un tel kit de distribution, qu'ils veulent eux-mêmes fabriquer.

Quelles versions du noyau ( par défaut , nn , rt ) sont mieux utilisées à quelles fins?

Pour les tâches quotidiennes, le noyau par défaut est évidemment le mieux adapté. Le noyau "nn" est destiné aux routeurs réseau - là, il est moins coûteux de gérer les interruptions. Le noyau "rt" peut planifier le travail des processus, en observant les restrictions sur les tranches de temps allouées dans les limites établies, ce qui nous permet de parler de calculs en temps réel - ne signifie pas "rapide", mais signifie "de façon prévisible", mais au prix d'une perte de performance; dans ce cas, le système n'a généralement besoin d'exécuter que le noyau et l'application cible, ainsi que l'ensemble minimal nécessaire de services d'arrière-plan.

Est-il possible de redémarrer rapidement le [noyau] du système d'exploitation sans réinitialiser le matériel? Comment accélérer le lancement du système d'exploitation en particulier et de l'ordinateur en général?

Un redémarrage rapide du système d'exploitation sans initialisation matérielle n'est pas fourni. L'initialisation des équipements peut être accélérée, tout d'abord, de manière évidente: par exemple, en désactivant ou en diminuant le délai de recherche des serveurs ATA sur Ethernet, ils ne sont nécessaires que pour le téléchargement sur le réseau. Deuxièmement, il existe également des méthodes qui ne sont pas évidentes à première vue: par exemple, vous pouvez désactiver le nettoyage de la RAM, qui est généralement effectué à des fins de sécurité des informations. Eh bien, accélérer le lancement du système d'exploitation en désactivant tous les services inutiles n'a pas besoin de commentaires.

Logiciels d'application


À quelles fins la version actuelle de Firefox 3.6 est-elle positionnée si de nombreux sites utilisant des technologies Web modernes ne sont pas compatibles avec celle-ci?

La version actuelle du navigateur dans la version actuelle du système d'exploitation Elbrus est 23.0, ce qui est beaucoup plus avancé en termes de fonctionnalités et de performances. Par exemple, le test JetStream est maintenant terminé avec succès, avec un score de 7,8 points - pas beaucoup plus bas que le niveau de 8,2 points atteint par la même version de Firefox en mode de traduction binaire x86, qui utilise un compilateur JIT à part entière pour JavaScript.

La version 31.0 a également fonctionné, mais elle s'est avérée pire, plus lente et ils ont décidé de ne pas la publier. La prochaine version migrée sera la 44.0.

Le système dispose-t-il d'une implémentation d'algorithmes cryptographiques nationaux (y compris les versions actuelles) disponibles pour les programmes C / C ++?

Maintenant OpenSSL a été remplacé par sa branche - LibreSSL, où la cryptographie russe est officiellement intégrée.

Comment puis-je expliquer les faibles performances de la machine virtuelle Java, démontrées dans divers tests?

Le package OpenJDK 1.6.0 était, dans un sens, une «panne du stylo» - le travail sur 1.7.0 et 1.8.0 bat déjà son plein, où nous avons réussi à augmenter la productivité de 3 à 4 fois, à en juger par des tests comme SPECjvm2008. Mais dans le cas général, bien sûr, il reste encore beaucoup à optimiser.

Envisagez-vous de porter Mono ou .NET dans le cadre du système d'exploitation Elbrus ou d'un autre kit de distribution?

Étant donné la popularité de cette technologie, cela est presque inévitable. Mais, compte tenu des changements actuels dans les relations de Microsoft avec la communauté et de l’avenir incertain du projet Mono, il existe un désir naturel d’attendre un peu lorsque les perspectives deviennent plus claires, afin de ne pas perdre de temps sur les branches sans issue du développement.

En attendant, si quelqu'un a besoin d'exécuter des applications de pré-lancement, il peut utiliser le mode de diffusion x86. En fait, c'est l'un des principaux objectifs de la technologie de diffusion - assurer la compatibilité pendant la période de transition, jusqu'à ce que la base logicielle soit devenue native. Soit dit en passant, l'équipe MCST travaille activement pour accroître l'efficacité de la traduction des applications à l'aide de compilateurs juste à temps similaires.

Quelles sont les perspectives d'Elbrus en tant que plate-forme de jeu, étant donné que dans les jeux modernes presque toute la charge tombe sur la carte vidéo et qu'un processeur puissant n'est souvent pas nécessaire?

Personne n'a jamais posé cette question sérieusement. Jusqu'à présent, si seul le jeu n'est pas disponible dans les codes source et n'est pas vraiment portable, la seule solution consiste à démarrer Windows ou Steam OS en mode de diffusion binaire, mais il peut y avoir des problèmes d'activation de licence en raison des particularités de la liaison matérielle.

Outils d'architecture et de développement


Où et comment puis-je obtenir un guide de référence détaillé pour l'architecture et le jeu d'instructions machine?

Maintenant, toute la documentation est envoyée sur demande. Mais il y a une nuance: l'ensemble d'instructions est ouvert, mais le moyen de coder les instructions dans le mot de commande est une information fermée pour des raisons historiques. La question de la divulgation complète des détails architecturaux a été essayée à plusieurs reprises de manière positive, mais jusqu'à présent aucune décision n'a été prise.

Cependant, cela ne présente pas de problème pratique sérieux, car, selon le MCST, les informations de la documentation disponible sont suffisantes même pour une programmation de bas niveau via intrinsèques, et la génération de code machine par vous-même ou même l'écriture dans l'assembleur E2K est inutile dans presque tous les cas , à l'exception d'un cercle très, très étroit de procédures système de bas niveau. Seul le compilateur est capable de prendre en compte les temporisations de l'exécution des instructions et de réaliser l'optimisation complexe requise pour une utilisation efficace des ressources d'une telle architecture.

Quels types de programmes (algorithmes) peuvent être implémentés le plus efficacement sur E2K, y compris en comparaison avec d'autres architectures qui fournissent un parallélisme implicite?

Au départ, Elbrus-2000 a été conçu comme une plate-forme hautes performances pour l'informatique à virgule flottante, et il n'est pas prévu de s'éloigner de ce concept - au contraire, comme déjà mentionné, la prochaine étape après 8C sera de doubler le nombre d'unités de calcul d'un type réel. En conséquence, la voie principale est les programmes mathématiques, les calculs scientifiques et de production. Surtout pour de telles tâches, la bibliothèque d'algorithmes EML (Elbrus math library) est développée et optimisée, et le compilateur LCC a des compétences spéciales pour transformer certains modèles de code source en appels à cette bibliothèque.

Un autre point fort est la présence d'un grand fichier de registre - jusqu'à 256 registres sont disponibles pour le programme à tout moment, y compris la possibilité de leur renommer automatiquement. Cela ouvre la voie à des optimisations à très grande échelle. Par exemple, dans une revue bien connue de CNews, le test gostcrypt a été présenté.(il s'agit d'une implémentation privée de l'un des clients MTsST), dans laquelle Elbrus-4C a presque doublé le Core i7-2600 à une fréquence inférieure - il n'y a pas de fraude, mais il a été conclu à tort que la raison en était l'origine nationale de l'algorithme GOST 28147-89. En fait, le secret du succès réside dans la combinaison réussie de la structure de cet algorithme avec les caractéristiques quantitatives de l'architecture E2K et les capacités qualitatives du compilateur LCC pour une optimisation profonde. Le compilateur a réussi à déployer tout le cycle de conversion d'un seul bloc et à le ramer dans le plus petit ensemble possible de mots de commande, fournissant du travail avec tous les blocs entiers disponibles, et ce fut un résultat tellement impressionnant.

Comment écrire des programmes E2K efficaces en C / C ++ et Fortran? Existe-t-il un tutoriel sur ce sujet?

Une tentative de créer un guide de l'architecture a déjà été faite, mais les auteurs ont ensuite approfondi la description du matériel, croyant que tout lecteur pouvait tirer des conclusions évidentes de ce matériel - il s'est avéré être à peu près le même que celui publié dans le célèbre livre "Microprocessors and Computing Complexes of the Elbrus Family" . Quant à l'instruction pour les programmeurs appliqués, hélas, jusqu'à présent, toutes les connaissances sacrées ne sont stockées que dans les têtes du personnel impliqué dans le développement du compilateur; parfois, ils partagent leurs révélations lors de conférences à l'Institut de physique et de technologie de Moscou, mais ils n'ont pas encore mûri pour remplir des résumés sous la forme d'un livre. En attendant, il est conseillé de lire les recommandations pour Itanium comme point de départ - conceptuellement, cette architecture est très similaire à E2K.

En bref, les principales techniques peuvent être formulées comme suit.
  •   :   (inline),       , —    «». , ,    4  , , ,     .
  • :   likely  unlikely,   pragma loop count,  , .
  • : for, while,    break.
  •     , —     ,    . (   ,       .)
  • : ,    , —  ,   ,  x86. ,  , .
  • Utilisez autant que possible des fonctionnalités optimisées, telles que la bibliothèque EML susmentionnée. Comme déjà mentionné, le compilateur lui-même est capable de remplacer les appels de fonctions ordinaires par des fonctions optimisées, mais il n'est pas omnipotent, et il est préférable de tout faire explicitement.

Plus en détail et avec des exemples, ces méthodes et autres subtilités devraient être couvertes dans un article séparé. Le MCST est bien conscient de l'importance de diffuser les «techniques secrètes» parmi les programmeurs pour extraire la productivité maximale d'Elbrus, et prévoit de commencer à diffuser la lumière des connaissances dès que la communauté et ses infrastructures seront formées.

Existe-t-il un ensemble prêt à l'emploi d'exemples de code source en C / C ++ avec des erreurs d'accès à la mémoire pour montrer comment la technologie d'exécution de programme sécurisée permet de détecter de telles erreurs aux étapes de compilation et d'exécution?

Bien sûr, il existe un tel ensemble de programmes - dans le cadre des outils de test de régression, qui sont effectués tous les soirs. Vous pouvez également utiliser des exemples de la collection SAMATE de l'American NIST Institute. Cependant, pour plus de clarté (il est prévu d'écrire un article séparé sur ce sujet), il sera probablement plus facile d'écrire des «fichiers sur une seule ligne» qui illustrent avec précision chaque erreur séparément.

Envisagez-vous d'écrire un backend E2K pour le compilateur LLVM comme alternative à LCC cherchant à être comme GCC?

Des investigations dans ce sens ont bien entendu été menées, mais le verdict a jusqu'à présent été plutôt négatif: l'architecture d'Elbrus-2000 est difficile à décrire en utilisant LLVM de manière optimale. Autrement dit, un compilateur alternatif pourrait être publié, mais le code machine qu'il générait perdrait LCC en termes de vitesse. Mais la direction n'est pas considérée comme une impasse - il est possible qu'avec le temps, le backend vers LLVM soit néanmoins réalisé.

Le LCC peut-il afficher les erreurs et les avertissements sous la forme acceptée par GCC afin que ces messages soient reconnus en conséquence dans l'environnement de développement (par exemple, Qt Creator)?

Pour le moment, cela n'est pas fourni, mais un ticket a déjà été lancé dans bugsilla.

Où puis-je obtenir la boîte à outils de compilation croisée pour E2K à partir de l'espace de travail x86? Existe-t-il un processus inverse - générant du code x86 à partir de l'environnement Elbrus et, dans l'affirmative, utilisant une version spéciale de LCC ou GCC normal?

Des outils de compilation croisée pour E2K (c'est-à-dire le compilateur LCC fonctionnant sous Linux x86) sont disponibles sur demande. Le processus inverse n'est pas explicitement fourni: si cela est nécessaire, vous pouvez exécuter un système x86 sur Elbrus en mode de traduction binaire et utiliser le compilateur qui y est disponible.

Quelles technologies de virtualisation sont prises en charge sur la plate-forme Elbrus?

Il n'y a aucun support pour le moment. Cependant, il sera bientôt possible d'utiliser des conteneurs.

De plus, les travaux sur la création d'un noyau paravirtualisé du système d'exploitation et du mécanisme de prise en charge de l'hyperviseur KVM devraient être achevés cette année, et c'est la principale réserve de la partie dépendante de l'architecture pour le déploiement d'une infrastructure cloud à part entière telle que OpenStack. Alors que d'autres architectures, lorsqu'elles travaillent dans l'environnement Qemu / KVM, s'appuient sur une virtualisation matérielle complète, utilisant éventuellement des pilotes virtio paravirtuels pour les E / S et l'interception d'instructions privilégiées prises en charge par le processeur lui-même, la partie dépendante de l'architecture de KVM est en cours de développement pour Elbrus afin de fournir le paravirtuel mode de fonctionnement lorsque le système invité travaille en étroite collaboration avec l'hyperviseur et au lieu d'exécuter des instructions privilégiées appelle les fonctions de l'API hypercall.

Il est bien connu qu'Intel améliore constamment son architecture et sa microarchitecture, tout en augmentant la productivité. Comment se développe l'architecture d'Elbrus dans cette partie?

Le développement évolue dans plusieurs directions.
  • L'accent est mis sur l'amélioration des performances du cœur du processeur pour accélérer les applications monothread. Ceci est réalisé en augmentant le nombre d'opérations exécutées simultanément (implémentées dans la prochaine, 4e version du système de commande), en utilisant des registres plus larges pour les opérations sur les données vectorielles (implémentées dans la 5e version), et en améliorant la hiérarchie du sous-système de mémoire. Dans le même temps, la compatibilité avec les versions précédentes de l'architecture est maintenue.
  • La deuxième direction est l'amélioration du microprocesseur en tant que système sur puce. Avec le développement de technologies nanométriques plus fines dans les microprocesseurs, le nombre de cœurs de processeur augmente, le nombre de canaux d'accès à la mémoire augmente pour maintenir l'équilibre du microprocesseur, dans certains cas, des cœurs graphiques spécialisés et des contrôleurs supplémentaires pour l'interaction avec les périphériques sont ajoutés.

Enfin, l'amélioration du compilateur d'optimisation joue un rôle important, à l'aide duquel il est possible d'extraire le parallélisme du programme et de transformer le code en capacités parallèles de l'architecture - comme cela a été souligné à plusieurs reprises, le compilateur fait en fait partie de l'architecture. La réserve de capacité du compilateur est loin d’être épuisée; le MCST voit ici un champ d’efforts très large.

Traduction binaire X86


Quelles sont les fonctionnalités et les limites de la traduction binaire?

Ce sujet mérite d'être examiné dans un article séparé, mais brièvement l'image est la suivante. La diffusion peut être de deux types - au niveau du système et au niveau de l'application. Dans le premier cas, le système d'exploitation invité donne accès à l'ensemble de l'environnement matériel de l'ordinateur et, dans le second, respectivement, seuls les appels système sont transférés du programme invité vers le noyau du système hôte Linux. Ceci peut être comparé aux émulateurs qemu-system-x86_64 et  qemu-i386en conséquence, cependant, le compilateur n'émule pas le processeur invité, mais recompile immédiatement le code machine invité dans les instructions natives de son architecture. De plus, la conversion est effectuée plusieurs fois, augmentant progressivement le degré d'optimisation pour les sections de code les plus courantes, et les résultats sont stockés dans un cache à long terme.

Le traducteur de niveau système (officieusement appelé «lintel» - «el-intel») prend en charge les jeux de commandes x86 et x86-64, et le traducteur de niveau application («rtc», c'est-à-dire le compilateur d'exécution) n'est pour l'instant compatible qu'avec les programmes 32 bits, - La version 64 bits est en cours de test. Cependant, la compatibilité avec l'architecture AMD64 / EM64T ne signifie pas la prise en charge automatique de tous les nouveaux jeux d'instructions qui peuvent être trouvés dans divers processeurs Intel / AMD, tels que les dernières versions de SSE, AVX, AES-NI - les drapeaux correspondants dans les informations CPUID seront absents.

Comment utiliser un traducteur de niveau système?

Très simple: lorsque vous démarrez votre ordinateur, vous devez spécifier une carte flash comme disque de démarrage. Si la carte s'est avérée vide ou que l'utilisateur lui-même a effacé le système de diffusion à partir de là, vous pouvez à nouveau l'enregistrer à tout moment en copiant l'image avec la  commande dd .

Le traducteur de niveau système dispose d'un BIOS de la conception d'origine et après le démarrage, la séquence POST habituelle apparaît à l'écran, pendant laquelle vous pouvez accéder au menu des paramètres. La plupart de ces paramètres sont les plus courants, mais il existe également des paramètres spécifiques. Par exemple, vous pouvez contrôler de manière très flexible l'identification du processeur par CPUID, en changeant non seulement le numéro de famille et le modèle ou les indicateurs de capacité individuels, mais aussi le nom du texte - cela est nécessaire pour contrer le comportement anticoncurrentiel des programmes compilés à l'aide du compilateur Intel C ++. Une autre option spécifique est la conversion transparente du contrôleur SATA en PATA pour assurer la compatibilité avec une plus large gamme de systèmes d'exploitation. Mais, malgré la présence de telles «baguettes magiques», le fonctionnement des systèmes d'exploitation installés sur une vraie machine x86 n'est pas garanti,- Cela est particulièrement vrai de Windows avec sa liaison d'une licence au matériel et une attitude respectueuse envers le pilote de disque système.

Comment utiliser le traducteur de niveau application?

Encore plus simple: en démarrant le programme de traduction, en lui passant le chemin d'accès à l'application invitée et le chemin d'accès au répertoire racine de l'environnement recréé. Toute la question est de savoir comment obtenir d’abord une image de cet environnement. Jusqu'à présent, seul l'environnement de la version x86 du système Elbrus est fourni en standard, mais d'autres sont également autorisés. Si le client a du mal à se faire une image du système souhaité de manière indépendante, les spécialistes du MCST peuvent apporter l'assistance nécessaire.

Sous une application invité en cours d'exécution (par exemple, un interpréteur de commandes), un utilisateur peut lancer d'autres programmes invités - de manière totalement transparente. À un moment donné, plusieurs instances du traducteur peuvent être lancées simultanément, et chaque instance peut fonctionner dans son propre environnement; par conséquent, par exemple, vous pouvez essayer la même version du navigateur dans différentes distributions ou, inversement, différentes versions du navigateur dans le même système (un exemple farfelu, bien sûr, mais il révèle l'essence).

On peut répondre à l'affirmation que dans le mode de traduction binaire, certains benchmarks commencent à fonctionner encore plus rapidement que ceux initialement assemblés pour E2K. Pour quelles classes de programmes et dans quelles conditions est-ce possible?

C'est vraiment possible, par exemple, lorsque la version native du moteur JVM ou JS ne peut interpréter que le code utilisateur, et que la version x86 par rapport à elle a un compilateur JIT à part entière. Dans le même temps, même s'il existe plusieurs diffusions, le code d'octet sélectionné pour l'optimisation est d'abord compilé dans le langage machine x86, puis après un certain temps il est recompilé en E2K (en outre, trois fois, une fois pour chaque niveau optimisations), - de toute façon, le gain final de la compilation l'emporte.

Quant aux programmes natifs C / C ++, il y a aussi une explication logique, même deux. Premièrement, bien que le compilateur LCC fasse un travail titanesque d'optimisation du code généré, personne ne peut garantir qu'aucun compilateur pour x86, en particulier le compilateur commercial, ne fera mieux dans un cas particulier. Deuxièmement, il est plus probable qu'un programme bien optimisé pour x86 ait été simplement compilé en tenant compte du profilage préliminaire, tandis que le code source nu a été envoyé au compilateur LCC sans invites. Mais ceteris paribus, bien sûr, les programmes natifs ne devraient pas fonctionner plus lentement que ceux diffusés - si ce n'est pas le cas, un rapport de bogue doit être envoyé aux développeurs LCC.

Mesure du rendement


Selon les spécialistes de l'ICST, certains benchmarks auparavant populaires ne peuvent vraiment révéler le potentiel d'aucune des plates-formes existantes. Prenez le même UnixBench - avec tout le respect dû à son âge vénérable, il est depuis longtemps dépassé et ne convient pas non plus aux processeurs et systèmes d'exploitation modernes. Ses deux tests dépendants du processeur, Whetstone et Dhrystone, ne sont pratiquement pas parallélisés et ne peuvent pas être exécutés au moins une exécution extraordinaire significative - même sur des architectures avec parallélisme explicite, quoique implicite. Et le reste des tests sont généralement «à peu près rien», au lieu d'eux, il est préférable d'utiliser quelque chose de plus spécifique. Le seul avantage d'UnixBench est sa nature multiplateforme, c'est pourquoi il est toujours utilisé aujourd'hui.

Vous ne devez pas non plus perdre de vue le puissant pouvoir du profilage. Par exemple, les résultats du test 7-Zip qui semblaient étrangement élevés dans la revue CNews ne sont pas un canular, mais la conséquence d'une compilation en deux passes. Une autre question est de savoir dans quelle mesure une telle optimisation est utile dans le cas général, c'est-à-dire sur des données d'entrée arbitraires. Pour cette raison, il n'est guère logique de profiler tous les composants du test Pgbench, car les performances de Postgresql peuvent s'avérer complètement différentes sur des données réelles. Mais dans le cas spécifique de 7-Zip, il est assez facile de revérifier: vous devez effectuer un autre test en soumettant une collection de divers fichiers à l'entrée. Le seul problème est que si les fichiers ne sont pas standardisés, la répétition du test de la même manière ne fonctionnera pas pour quiconque le souhaite, et il y aura encore moins de confiance dans les résultats publiés.

Vous devez savoir que les benchmarks synthétiques sont souvent écrits en fonction d'une architecture spécifique (y compris parce que leurs auteurs sont habitués à penser de cette façon), ou sont personnalisés pour une combinaison spécifique de matériel et de compilateur. Par exemple, le test bien connu SPECcpu déclare l'objectivité et l'impartialité, cependant, dans les codes source de la version 2006, vous pouvez trouver des commentaires selon lesquels telle ou telle béquille a été ajoutée spécifiquement pour le compilateur Intel C ++. Et comment ne pas soupçonner l'influence d'un grand fournisseur alors que 90% des enregistrements représentent 36,6 mille résultats publiés?

Les applications réelles ne sont également pas toujours un indicateur, car les sections les plus critiques peuvent être entièrement écrites dans l'assembleur x86 ou contenir de nombreuses insertions d'assembleur et appels à des fonctions spéciales (intrinsèques), pour lesquelles OpenSSL est un bon exemple. Il s'avère que le code machine léché pour briller est comparé à une implémentation de langage de haut niveau, dont le but principal est d'être une référence, et non optimale.

Par conséquent, une offre aux lecteurs: réfléchissons ensemble aux tests - artificiels ou proches de la vie - qui peuvent être effectués pour voir la force d'Elbrus dans ses tâches pertinentes. Il n'est pas nécessaire qu'il s'agisse de programmes prêts à l'emploi, en particulier en ce qui concerne les calculs mathématiques, car, par exemple, la multiplication matricielle - c'est aussi la multiplication matricielle en Afrique: la complexité de la tâche est la même qu'elle soit exécutée par des bibliothèques EML, BLAS / LAPACK optimisées ou une fonction auto-écrite. Laissez vos idées dans les commentaires.

L'auteur remercie le personnel du STIC pour une explication détaillée et intéressante.

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


All Articles