Übersicht und Vergleichstest des PC "Elbrus 401 - PC". Ergänzung - Fragen und Antworten
Vielleicht war das Hauptergebnis der Veröffentlichung dieser Rezension neben der Bekanntmachung der ersten unabhängigen Eindrücke des neuen Computers durch die Öffentlichkeit der Wunsch des MCST-Unternehmens selbst, weitere Details preiszugeben, Missverständnisse zu beseitigen und die im Artikel und in den Kommentaren dazu aufgeworfenen Fragen zu beantworten. Einige dieser Themen sind so grundlegend, dass sie einen separaten Artikel verdienen und daher ernsthaft untersucht werden müssen. Jetzt werden wir uns diejenigen ansehen, die am besten in das Interviewformat passen.

Inhalt
Allgemeine Punkte
Um die Position des ICST-Unternehmens in den folgenden Fragen richtig zu verstehen, ist es notwendig, sich seine Vergangenheit, Gegenwart und Pläne für die Zukunft vorzustellen - abgesehen von diesem Kontext können einige Fakten seltsam aussehen.In der Vergangenheit waren die Hauptkunden und Verbraucher von MCST-Produkten Machtstrukturen. Das Sortiment und das Produktionsvolumen waren begrenzt, jeder Computer wurde registriert, jeder Kunde war im übertragenen Sinne durch das Sehen bekannt. Mit einem solchen Verkaufsmodell war es notwendig und ausreichend, nur etablierte und zertifizierte Systeme in Umlauf zu bringen, unter denen Anwendungssoftware stark geschärft wurde. Jeder Kunde benötigte einen persönlichen Ansatz - qualifizierte Beratung bei der Auswahl der Ausrüstung und deren anschließendem Betrieb, einschließlich der Abreise eines Servicetechnikers am Installationsort (überall auf dem weiten Land sowie auf See). Das heißt, ein "Frottierunternehmen", außer vielleicht mit seinen eigenen Besonderheiten.Jetzt will das MCST wirklich in den zivilen Markt eintreten - zuerst in den Unternehmenssektor, der dennoch näher an den aktuellen Erfahrungen liegt, und dann in das Verbrauchersegment, dh in die breitesten Massen. Es ist klar, dass, wenn Geschäftskunden bereit sind, die zusätzlichen Kosten zu tragen (aber natürlich nicht das, was die traditionellen Kunden des MCST zu tragen bereit sind), insbesondere wenn die Vorteile der Wahl eines teuren Exklusivprodukts klar sind, die durchschnittliche Person mit einem Geldbeutel für das günstigste stimmt Waren, die einem Produkt von geringerer Qualität und manchmal einem völligen Mangel an Unterstützung durch den Hersteller zustimmen. Und selbst gewöhnliche Menschen sehnen sich nach neuen Dingen - verdoppeln Sie die Anzahl der Transistoren alle anderthalb Jahre, die neueste Version des Kernels, der Systembibliotheken und der Anwendungsprogramme. und nicht so wichtigWie viele alte Fehler wurden dort beseitigt und wie viele neue sind aufgetreten, wie viel schwerer wurde die Software und wie verlangsamt sie sich jetzt auf den Maschinen der vorherigen Generation.Die offensichtliche Kluft zwischen dem Gewünschten und dem Realen ist im ICST auf allen Ebenen gut verstanden - niemand hat Regenbogenillusionen, die man sofort aus dem Ruder laufen kann, vor ehrwürdigen Sprintern und erfahrenen Marathonläufern, zumal es bei solchen Rivalen notwendig ist, wie in berühmtes Märchen, eile mit aller Kraft, nur um an Ort und Stelle zu bleiben. Jetzt gibt es weder Geld noch Produktionskapazität für einen solchen Durchbruch noch elementare Humanressourcen - das Personal ist drei Größenordnungen niedriger als das von Intel oder Microsoft, und jeder muss sich sofort darum kümmern. Selbst um kommerzielle oder budgetäre Strukturen abzudecken, ist es notwendig, zunächst das Netzwerk von Händlern und Reparaturwerkstätten zu erweitern, ein Schulungs- und technisches Support-System einzurichten - jetzt prüft das MCST nur noch den Weg auf der Suche nach Partnern. Und natürlich sind finanzielle Investitionen erforderlich:Um ihre Computer kostengünstig verkaufen zu können, müssen die Produktionskosten gesenkt werden, und dies ist nur mit einer signifikanten Volumensteigerung erreichbar - es stellt sich ein Teufelskreis heraus, der sehr schwer zu durchbrechen ist.Es besteht auch das Verständnis, dass Verbraucherprodukte so offen sein müssen, dass es sowohl möglich als auch ratsam ist: Zum Beispiel, dass Dokumentation, Installationsverteilungen von Software und zeitnahe Updates dafür, die Quellcodes dieser Programme kostenlos zur Verfügung stehen sollten, dass eine Plattform für öffentliche Konsultation und Erfahrungsaustausch, Bildungsliteratur für Anfänger und Fachkräfte. Aber auch dies scheint nicht über Nacht von alleine zu sein, und das Unternehmen steht noch am Anfang des Weges, um die Herzen und Gedanken potenzieller Kunden zu gewinnen.Da es schwierig ist, alte Gewohnheiten aufzugeben, insbesondere wenn es immer noch keine Praxis gibt, in einem völlig anderen Umfeld Geschäfte zu machen, ist es notwendig, einen Rabatt auf die Tatsache zu gewähren, dass Mitarbeiter des Unternehmens, wenn sie Fragen weiter im Text beantworten, häufig noch „Benutzer“ sagen Der Typ seines klassischen Kunden, mit dem es einen persönlichen Kontakt und einen direkten Vertrag gibt, und oft auch eine zusätzliche Geheimhaltungsvereinbarung. Ein solcher Kunde selbst ist nicht an Werbung interessiert und weiß, dass er für sein Geld auf jede Laune zählen kann. Wie aus vielen Antworten hervorgeht, wird diese Vorlage jedoch nicht mehr als die einzige angesehen. Auch hier wird sich Schritt für Schritt alles allmählich entwickeln.Produktion und Förderung
In welchem Werk werden CPU und KPI produziert? In welchen Bänden? Stimmt es, dass die Produktion für zwei Jahre eingeschränkt (ausgesetzt) wird?
Hier gibt es kein Geheimnis: Neue Mikroschaltungen werden nur noch in Asien hergestellt. Und wenn wir ernsthaft auf dem freien Markt konkurrieren wollen, gibt es noch keine Alternative dazu. Eine andere Sache ist, dass dann die natürliche Frage der Informationssicherheit in kritischen Anwendungen auftaucht, aber für eine spezielle Kategorie von Kunden ist es möglich, die Produktion in lokalen Einrichtungen in begrenzten Mengen zu organisieren - mit einem angemessenen Preisniveau. Das erste (und erfolgreichste) Projekt dieser Art ist der Elbrus-2SM-Prozessor: Seine Kristalle werden im Micron-Werk in Zelenograd hergestellt.Die Freisetzung von Mikroschaltungen hört nicht auf - außerdem werden sie ständig angepasst. Nach modernen Maßstäben werden Mengen von weniger als tausend Kristallen pro Jahr einfach als Kleinproduktion angesehen, und die Bestellung wird nur gelegentlich aufgegeben, ein Förderer rund um die Uhr wird hier nicht benötigt.Viele Prozessoren in dieser Phase gehen auf häusliche Bedürfnisse ein, sowohl weltliche als auch experimentelle. So wurde kürzlich ein Computerkomplex aus 32 1U-Modulen mit jeweils vier Elbrus-4C-Prozessoren zusammengesetzt - insgesamt 512 Kerne. Jeder, der interessante Aufgaben für ein solches System hat, kann sich für eine Maschinenzeit bewerben. (Im Folgenden wird kurz beschrieben, welche Programmklassen in der E2K-Architektur am effizientesten ausgeführt werden und wie Sie Ihren Quellcode optimieren können. Es ist geplant, dieses Thema in einer separaten Veröffentlichung ausführlicher zu behandeln.)Ab welchem Produktionsvolumen können die Kosten für das „Motherboard + Prozessor“ -Kit auf ein Niveau gesenkt werden, das für eine breite Palette von Kunden akzeptabel ist? Wie schnell wird die russische Elektronikindustrie in der Lage sein, solche Mengen bereitzustellen?
Um ein Niveau von etwa 1.000 US-Dollar zu erreichen, müssen jährlich mindestens 10.000 fertige Produkte hergestellt werden, und eine weitere Annäherung an den Käufer ist nur mit einem Fluss von etwa 100.000 Produkten pro Jahr möglich. Natürlich sollte dann die gesamte Produktion in China konzentriert sein, oder inländische Fabriken sollten sehr gut funktionieren, um die Logistikkosten zu senken und die Produktionskosten zu senken. Jetzt werden alle vom MCST hergestellten Motherboards in russischen Fabriken montiert.Bei welchem Produktionsvolumen ist es gerechtfertigt, eine vereinfachte Version des Prozessors für 1-Socket-Systeme freizugeben - ohne Interprozessor-Interaktionsblöcke und Zugriff auf den Remote-Speicher?
Selbst zehntausend Kristalle pro Jahr rechtfertigen keine Änderung der Topologie. Vielmehr wäre es sinnvoll, die nicht verwendeten Schlussfolgerungen zu beseitigen, die die Substratfläche verringern, aber in absehbarer Zukunft wird sich auch dies nicht rechtfertigen.Wie viel kostet die Lizenz für das Betriebssystem, wenn der Verkauf von Komponenten separat beginnt?
Bisher wurde ein solches Verkaufsprogramm noch nicht eingeführt, aber höchstwahrscheinlich werden die Erfahrungen von Kollegen von Alt Linux übernommen - für den persönlichen Gebrauch wird der Preis definitiv nicht belastend.Wann erwarten Sie vorgefertigte Systeme auf Basis von Elbrus-8C? Sind die Merkmale zukünftiger Prozessoren definiert? Wird das nächste Modell beispielsweise 16 Kerne und eine Taktfrequenz von 2 GHz haben?
In diesem Sommer sind Vorproduktionsmodelle von Einzelprozessor-Maschinen auf Basis des G8 zu sehen. Der nächste Schritt ist eine leichte Erhöhung der Frequenz (bis zu 1,5 Hz) und eine Verdoppelung der Anzahl der Gleitkomma-Recheneinheiten, die die Hauptantriebskraft dieser Plattform darstellen. Ein solcher Prozessor wird bereits unter dem Arbeitsnamen "Elbrus-8SV" entwickelt. Ein Prozessor mit 16 Kernen soll 2020 freigegeben werden.Warum ist das Hardware- und Software-Benennungssystem so verwirrend?
Wenn Sie nur ein paar grundlegende Produkte in Ihrem Vermögen haben, ist es nicht schwierig, die Nomenklatur zu verstehen, insbesondere für einen Fachmann. Wenn nun das Spektrum an Hardware und Software erweitert wird und sich der durchschnittliche Benutzer orientiert, wird das Benennungssystem allmählich in eine Form gebracht, die für Laien verständlich ist.Wichtige Klarstellung.Es ist falsch, die Bezeichnung „Elbrus 2000“ sowie die Abkürzung „E2K“ im Zusammenhang mit modernen Produkten zu erwähnen: Der offizielle Name dieser Mikroprozessorarchitektur lautet „Elbrus“ ohne Suffixe. Der Name "Elbrus-2000" wurde für die Architektur gewählt, die sie zusammen mit westlichen Unternehmen im Jahr 2000 implementieren wollten. Anfang 1999 wurde im englischsprachigen Microprocessor Report Journal ein Artikel über die Architektur des Mikroprozessors "Elbrus-2000" gedruckt als "Elbrus-2000" und in abgekürzter Form - "E2k". Die aktuelle Elbrus-Architektur wurde in Bezug auf diese E2k-Architektur erheblich verfeinert. Dies ist die dritte Version, sodass die Verwendung der alten Notation nicht ganz korrekt ist. Außerdem,Die Abkürzung E2K (mit dem Großbuchstaben "K") kann von orthodoxen Computertechnikern als 2048 interpretiert werden, was absolut wertlos ist.Benutzerunterstützung
Gibt es elektronische Dokumentation? Planen Sie, die Dokumentation für jeden, der dies wünscht, öffentlich zugänglich zu machen (unabhängig von der Tatsache, dass Geräte gekauft wurden)?
Die Dokumentation kann jetzt heruntergeladen werden, bisher wird jedoch nur ein Link auf Anfrage gesendet. In den kommenden Monaten ist jedoch die Einrichtung einer Community- und technischen Support-Website geplant, auf der alle Informationen öffentlich zugänglich sein werden. Da es sich um Dutzende von Dokumenten handelt, wird es einige Zeit dauern.Planen Sie, die Bugsilla für die Öffentlichkeit zugänglich zu machen? FAQ erstellen, Forum - Site für einen offenen Erfahrungsaustausch organisieren?
Sie können nicht einfach eine Bugsilla nehmen und öffnen, bei der viele Tickets „hochsensible“ Informationen enthalten. Höchstwahrscheinlich wird ein separater Bugzilla für die Massen erstellt, der allen Ankömmlingen zur Ansicht und Auffüllung zur Verfügung steht. Die zuvor gesammelten Erfahrungen mit den am häufigsten gestellten Fragen werden in den FAQ verarbeitet, die auch auf der neuen Support-Website veröffentlicht werden. Es wird höchstwahrscheinlich auch ein Forum geben.Was ist mit dem Veröffentlichen des Quellcodes für angepasste Software und dem Senden von Patches an den Upstream eines Projekts? Planen Sie Patches von Benutzern zu akzeptieren? Was ist mit Belohnungen für gefundene Schwachstellen?
Die Quellcodes waren nicht für den öffentlichen Zugang ausgelegt, nur weil die Kunden selbst nicht öffentlich waren und die Nachfrage unter ihnen nach den Quellcodes gering war und wer sie wirklich brauchte, nicht aus müßiger Neugier - er schickte eine Anfrage und erhielt alles, was privat benötigt wurde. Es ist geplant, dass in absehbarer Zeit für den Massenverbraucher ein öffentliches Repository eingerichtet wird, in das der gesamte geliehene Code übertragen wird. Das Unternehmen plant nicht, eigene Entwicklungen wie den LCC-Compiler zu eröffnen. Am Ende ist auch der Intel C ++ - Compiler (der MCST betrachtet ihn als seinen Hauptkonkurrenten in Bezug auf Optimierungen) ebenfalls geschlossen und fühlt sich gleichzeitig gut an.Patches von Nutzern werden natürlich auch privat bereits akzeptiert. Es wird schwer vorstellbar sein, wie dies aussehen wird, wenn der Kundenstamm erweitert wird und die Aufmerksamkeit der Enthusiasten steigt.Das Senden Ihrer Änderungen an die Autoren der ursprünglichen Projekte ist zweifellos eine gute Sache, aber jemand muss dies tun. Sie müssen den Ansatz für jedes Projekt kennen, um die Merkmale der Community-Kultur zu verstehen. Eine praktikablere Aufgabe besteht einfach darin, den gesamten Code öffentlich zugänglich zu machen: Wenn es einen „Goodwill-Botschafter“ gibt, der bereit ist, mit dem einen oder anderen Upstream zu interagieren, ist das großartig. Bisher hat das ICST keine solche Erfahrung.Hardware
Wie verwende ich den integrierten Videoadapter in einer grafischen Umgebung? Wie komfortabel ist die erwartete Leistung für 2D-Arbeiten?
Das Einleiten einer Neukonfiguration der Grafiktabelle ist am einfachsten, wenn Sie das Dienstprogramm xorg-server.postinst ausführen . Die 3D-Beschleunigungsfunktionen des integrierten Adapters fehlen vollständig, aber die normale Verwendung von Desktop-Anwendungen sollte keine Unannehmlichkeiten verursachen - sicherlich nicht die gleichen wie bei älteren Computern. Wahrscheinlich wird es notwendig sein, dies auf Video aufzuzeichnen und ein kleines Video zu platzieren - anstelle von tausend Wörtern.Welche diskreten Grafikkarten werden neben der Radeon HD 6450 / R5 230 vom Betriebssystem unterstützt? Welche Hardwarebeschleunigungsfunktionen stehen Anwendungsprogrammen über den im System verfügbaren Treiber zur Verfügung?
Es unterstützt die gesamte moderne Radeon-Linie, die mit dem offenen Treiber für Linux kompatibel ist. Da nVidia in dieser Hinsicht sehr traurig ist, werden ihre Produkte derzeit vom Elbrus-Betriebssystem nicht unterstützt.Was kann die ungewöhnlich niedrigen Lese- und Schreibgeschwindigkeiten eines Solid-State-Laufwerks erklären, das nicht einmal die nominelle Bandbreite der SATA-2-Schnittstelle erreicht, über die es angeschlossen ist?
Dies ist eine bekannte Einschränkung des 1991VG1YA-Chips, der einen Peripherieschnittstellen-Controller (KPI) implementiert. Eine optimierte Version des Controllers (KPI-2), in der dieses Problem gelöst ist, wird in Systemen mit den neuen Prozessoren Elbrus-8C und Elbrus-1C + installiert.Warum verfügt der Elbrus 401 - PC über eine 1-TB-Festplatte, wenn diese nicht einmal im Betriebssystem konfiguriert ist und das Hauptlaufwerk bereits viel freien Speicherplatz bietet?
Der offensichtliche Zweck der Festplatte besteht darin, große Datenmengen zu speichern, die vom aktuellen Benutzerkontingent nachgefragt werden. Die Tatsache, dass die Festplatte nicht auf dem System installiert ist, ist ein Fehler, aber kein wesentlicher: Einige Benutzer formatieren die Flash-Karte auch neu, um sie ihren Anforderungen anzupassen, anstatt eine binäre Übersetzung durchzuführen. Sie können nicht alle gleichzeitig zufrieden stellen.Was ist der Zweck des Lackierens der Schraubbefestigung eines Halbleiterantriebs, als Garantiedichtung oder um ein Selbstlockern zu verhindern?
In der Tat ist die Farbe in erster Linie ein Stopper. Das Laufwerk kann abgeschraubt werden - die Garantie erlischt nicht. Wenn jedoch etwas kaputt geht, haben die Servicetechniker natürliche Fragen an den Benutzer bezüglich der ergriffenen Maßnahmen.Woher kommen die PCI-Gerätekennungen - warum haben viele integrierte Geräte denselben Entwicklercode (Vendor ID) wie Intel?
Der Grund ist völlig prosaisch - weil sich das Windows-Betriebssystem im Binärmodus leichter zu Hause fühlt. Aufgrund der paranoiden Bindung von Aktivierungscodes an die verwendeten Geräte beginnt dieses „freundlichste“ System jedoch manchmal noch zu funktionieren.Wo finde ich die Beschreibung des vertrauenswürdigen Echelon-E-Boot-Firmware-Moduls?
Es gibt ein Missverständnis: Dieses Produkt ist reine Software und nur ein Sonderfall der üblichen MDZ "Echelon", die vom gleichnamigen Wissenschafts- und Produktionsverband entwickelt wurde. Dieses Tool bietet vertrauenswürdigen Computerstart, Integritätskontrolle, Identifizierung und Authentifizierung des Benutzers, bevor die Kontrolle auf das Betriebssystem übertragen wird.Ist das als Option für Elbrus-4.4-Server angebotene IPMI-Fernbedienungsmodul eine eigenständige Entwicklung oder handelt es sich um ein fertiges Produkt ausländischer Herstellung?
Dies ist natürlich eine eigenständige Entwicklung, aber noch kein fertiges Produkt - das Modul befindet sich in der Debugging-Phase.Operationssystem
Welches Versionsbezeichnungssystem wird für das Elbrus-Betriebssystem verwendet?
Die richtige Antwort wurde bereits im Artikel gegeben: Die Versionsnummer ist in der Datei / etc / mcst_version geschrieben . Diese Version 2.2, die mit Computern aus dem ersten Stapel ausgestattet war, ist eigentlich nicht mehr relevant - jetzt ist sie stabil 2.3 und im Release Candidate-Stadium 3.0 (mit Kernel 3.14).Planen Sie regelmäßige Updates, die automatisch aus dem öffentlichen Repository installiert werden? Warum ist nicht die gesamte auf dem System installierte Software verpackt?
Ja, ein automatisches Update ist geplant, obwohl dieser Vorgang auf Anfrage immer noch manuell erfolgt. Dazu muss natürlich die gesamte Software vom Paketmanager verwaltet werden. Wenn jetzt etwas nicht stimmt, liegt dies nur am Debuggen des Erstellungsprozesses.Ist es nicht einfacher, eine der beliebten Linux-Distributionen direkt zu portieren - zum Beispiel denselben Debian?
Genau das macht derzeit eines der Teams. In der Tat bietet Debian die vielleicht bequemste Infrastruktur zum Erstellen von Derivatverteilungen. Darüber hinaus verfügt Debian jetzt über die größte Auswahl an unterstützten Architekturen, zumindest in der Linux-Familie. Daher ist das Erstellen neuer Ports auf dieser Basis am logischsten. Das Portierungsverfahren für dieses Verteilungskit ist jedoch nicht das reibungsloseste und systematischste, sodass Sie hart arbeiten müssen. Wenn der Prozess jedoch debuggt und automatisiert wird, erfolgt die Synchronisierung mit der Hauptleitung [fast] sofort. Ob es jedoch möglich sein wird, diesem Hafen den offiziellen Status zu verleihen, ist eine große Frage.Es ist jedoch nicht geplant, die Liste der unterstützten Betriebssysteme auf eine Option zu beschränken. Der erste Schritt besteht darin, den ALT Linux-Port zu erwarten, der keiner Einführung bedarf. Außerdem wird an der Anpassung von QNX gearbeitet: Das durch Neutrino-Elbrus geschützte Echtzeitbetriebssystem funktioniert bereits in irgendeiner Form. Geben Sie Details bei Entwicklern im Kompetenzzentrum "SVD Embedded Systems" an.Wie mühsam ist die Portierung des Linux-Kernels? Warum wird jetzt die Kernel-Version 2.6.33 verwendet - nicht die neueste, aber gleichzeitig nicht als LTS unterstützt?
Das Portieren des Linux-Kernels auf eine bestimmte Hardwareplattform ist eigentlich ziemlich mühsam, aber das Problem liegt nicht in einem einzigen Versuch, sondern in der Tatsache, dass jedes Mal fast von Anfang an viel gestartet werden muss, da alles fließt, sich ändert und mischt. Zum Beispiel sind wir gerade zum 3.14-Kernel übergegangen und haben angefangen, mit dem 4.x-Zweig zu experimentieren - und dort hat sich alles wieder geändert.Es ist unwahrscheinlich, dass es in absehbarer Zeit möglich sein wird, die Übernahme seines Ports in der Hauptlinie kernel.org zu erreichen, wenn einerseits alles sehr streng und andererseits ziemlich chaotisch ist. Daher besteht die wahrscheinlichste Aussicht darin, allen, die ein solches Distributionskit, das sie selbst herstellen möchten, unabhängig bauen möchten, ihren Kern zur Verfügung zu stellen.Welche Kernelversionen ( Standard , nn , rt ) werden für welche Zwecke besser verwendet?
Für alltägliche Aufgaben ist der Standardkernel offensichtlich am besten geeignet. Der Kernel "nn" ist für Netzwerkrouter gedacht - dort ist es billiger, Unterbrechungen zu behandeln. Der Kern "rt" kann die Arbeit von Prozessen planen, wobei die Beschränkungen der zugewiesenen Zeitscheiben innerhalb der festgelegten Grenzen beachtet werden, was es uns ermöglicht, über Berechnungen in Echtzeit zu sprechen - bedeutet nicht "schnell", sondern "vorhersehbar", wenn auch auf Kosten des Leistungsverlusts; In diesem Fall muss das System normalerweise nur den Kernel und die Zielanwendung sowie die minimal erforderlichen Hintergrunddienste ausführen.Ist es möglich, den [Kernel] des Betriebssystems schnell neu zu starten, ohne die Hardware neu zu initialisieren? Wie kann der Start des Betriebssystems im Besonderen und des Computers im Allgemeinen beschleunigt werden?
Ein schneller Neustart des Betriebssystems ohne Hardware-Initialisierung ist nicht vorgesehen. Die Initialisierung von Geräten kann zum einen auf offensichtliche Weise beschleunigt werden: Durch Deaktivieren oder Verringern des Suchzeitlimits von ATA über Ethernet-Server werden sie nur zum Herunterladen über das Netzwerk benötigt. Zweitens gibt es auch Methoden, die auf den ersten Blick nicht offensichtlich sind: Sie können beispielsweise die Bereinigung des Arbeitsspeichers deaktivieren, die normalerweise aus Gründen der Informationssicherheit durchgeführt wird. Um den Start des Betriebssystems durch Deaktivieren aller unnötigen Dienste zu beschleunigen, sind keine Kommentare erforderlich.Anwendungssoftware
Für welche Zwecke ist die aktuelle Version von Firefox 3.6 positioniert, wenn viele Websites, die moderne Webtechnologien verwenden, nicht damit kompatibel sind?
Die aktuelle Version des Browsers in der aktuellen Version des Elbrus-Betriebssystems ist 23.0, was in Bezug auf Funktionalität und Leistung wesentlich weiter fortgeschritten ist. Zum Beispiel ist der JetStream-Test jetzt mit einer Punktzahl von 7,8 Punkten erfolgreich abgeschlossen - nicht viel niedriger als die 8,2 Punkte, die dieselbe Version von Firefox im binären x86-Übersetzungsmodus erzielt, der einen vollwertigen JIT-Compiler für JavaScript verwendet.Version 31.0 lief ebenfalls ein, erwies sich jedoch als schlimmer und langsamer und sie beschlossen, sie nicht für die Öffentlichkeit freizugeben. Die nächste migrierte Version wird 44.0 sein.Verfügt das System über eine Implementierung von inländischen kryptografischen Algorithmen (einschließlich aktueller Versionen), die für C / C ++ - Programme verfügbar sind?
Jetzt wurde OpenSSL durch seinen Zweig LibreSSL ersetzt, in dem die russische Kryptographie offiziell integriert ist.Wie kann ich die geringe Leistung der virtuellen Java-Maschine erklären, die in verschiedenen Tests demonstriert wurde?
Das OpenJDK 1.6.0-Paket war gewissermaßen eine „Panne des Stifts“ - die Arbeit an 1.7.0 und 1.8.0 ist bereits in vollem Gange, wo wir es geschafft haben, die Produktivität nach Tests wie SPECjvm2008 um das 3-4-fache zu steigern. Aber im allgemeinen Fall gibt es natürlich noch viel zu optimieren.Planen Sie, Mono oder .NET im Rahmen des Elbrus-Betriebssystems oder eines anderen Distributionskits zu portieren?
Angesichts der Popularität dieser Technologie ist dies fast unvermeidlich. Angesichts der aktuellen Veränderungen in den Beziehungen von Microsoft zur Community und der ungewissen Zukunft des Mono-Projekts besteht jedoch der natürliche Wunsch, eine Weile zu warten, bis die Aussichten klarer werden, um keine Zeit mit den Sackgassen der Entwicklung zu verschwenden.In der Zwischenzeit kann jemand den x86-Broadcast-Modus verwenden, wenn er Anwendungen vor dem Start ausführen muss. Tatsächlich ist dies einer der Hauptzwecke der Broadcast-Technologie - die Kompatibilität für die Übergangszeit sicherzustellen, bis die Softwarebasis nativ geworden ist. Übrigens arbeitet das MCST-Team jetzt aktiv daran, die Effizienz der Übersetzung von Anwendungen mithilfe ähnlicher Just-in-Time-Compiler zu steigern.Was sind die Aussichten für Elbrus als Spieleplattform, da in modernen Spielen fast die gesamte Last auf die Grafikkarte fällt und ein leistungsstarker Prozessor oft nicht benötigt wird?
Niemand hat diese Frage jemals ernsthaft gestellt. Wenn bisher nur das Spiel nicht in den Quellcodes verfügbar und nicht wirklich portabel ist, besteht der einzige Ausweg darin, Windows oder Steam OS im binären Broadcast-Modus zu starten. Aufgrund der Besonderheiten der Hardwarebindung kann es jedoch zu Problemen bei der Lizenzaktivierung kommen.Architektur- und Entwicklungswerkzeuge
Wo und wie kann ich ein detailliertes Referenzhandbuch für Architektur und Maschinenanweisungssatz erhalten?
Jetzt wird die gesamte Dokumentation auf Anfrage gesendet. Aber es gibt eine Nuance: Der Befehlssatz ist offen, aber die Art und Weise, Befehle im Befehlswort zu codieren, ist aus historischen Gründen eine geschlossene Information. Die Frage der vollständigen Offenlegung architektonischer Details wurde wiederholt versucht, positiv zu lösen, aber bisher wurde keine Entscheidung getroffen.Dies stellt jedoch kein ernstes praktisches Problem dar, da laut MCST die Informationen in der verfügbaren Dokumentation selbst für die einfache Programmierung über Intrinsics ausreichen und das Generieren von Maschinencode auf eigene Faust oder sogar das Schreiben in E2K Assembler in fast allen Fällen nutzlos ist mit Ausnahme eines sehr, sehr engen Kreises von Systemprozeduren auf niedriger Ebene. Nur der Compiler kann den Zeitpunkt der Ausführung von Anweisungen berücksichtigen und eine so komplexe Optimierung durchführen, wie sie für die effiziente Nutzung der Ressourcen einer solchen Architektur erforderlich ist.Welche Arten von Programmen (Algorithmen) können auf E2K am effizientesten implementiert werden, auch im Vergleich zu anderen Architekturen, die implizite Parallelität bieten?
Ursprünglich war Elbrus-2000 als Hochleistungsplattform für Gleitkomma-Computing konzipiert, und es ist nicht geplant, von diesem Konzept abzuweichen - im Gegenteil: Wie bereits erwähnt, besteht der nächste Schritt nach 8C darin, die Anzahl der Recheneinheiten eines realen Typs zu verdoppeln. Dementsprechend sind mathematische Programme, wissenschaftliche und Produktionsberechnungen der Hauptweg. Speziell für solche Aufgaben wurde die EML-Algorithmusbibliothek (Elbrus Math Library) entwickelt und optimiert, und der LCC-Compiler verfügt über besondere Fähigkeiten, um einige Quellcodevorlagen in Aufrufe dieser Bibliothek umzuwandeln.Eine weitere Stärke ist das Vorhandensein einer großen Registerdatei - dem Programm stehen zu einem bestimmten Zeitpunkt bis zu 256 Register zur Verfügung, einschließlich der Möglichkeit ihrer automatischen Umbenennung. Dies ebnet den Weg für sehr umfangreiche Optimierungen. Zum Beispiel erschien in einem bekannten CNews-Test der Gostcrypt- Test(Dies ist eine private Implementierung von einem der MCST-Clients), bei der Elbrus-4C den Core i7-2600 mit einer niedrigeren Frequenz fast verdoppelte - es gibt keine Betrugsfälle, aber es wurde fälschlicherweise der Schluss gezogen, dass der Grund dafür der inländische Ursprung des Algorithmus war GOST 28147-89. Tatsächlich liegt das Erfolgsgeheimnis in der erfolgreichen Kombination der Struktur dieses Algorithmus mit den quantitativen Merkmalen der E2K-Architektur und den qualitativen Fähigkeiten des LCC-Compilers zur Tiefenoptimierung. Der Compiler hat es geschafft, den gesamten Konvertierungszyklus eines einzelnen Blocks bereitzustellen und ihn in den kleinstmöglichen Satz von Befehlswörtern zu rammen, wodurch die Arbeit mit allen verfügbaren Ganzzahlblöcken ermöglicht wurde. Dies war ein beeindruckendes Ergebnis.Wie schreibe ich effektive E2K-Programme in C / C ++ und Fortran? Gibt es ein Tutorial zu diesem Thema?
Es wurde bereits versucht, einen Leitfaden für die Architektur zu erstellen, aber die Autoren haben sich dann eingehend mit der Beschreibung der Hardware befasst und waren der Ansicht, dass jeder Leser offensichtliche Schlussfolgerungen aus diesem Material ziehen kann - es stellte sich heraus, dass es ungefähr das gleiche ist, wie es im berühmten Buch "Mikroprozessoren und Rechenkomplexe der Elbrus-Familie" veröffentlicht wurde. . Was die Anweisungen für angewandte Programmierer betrifft, so ist leider bisher alles heilige Wissen nur in den Köpfen der Mitarbeiter gespeichert, die an der Entwicklung des Compilers beteiligt sind. manchmal teilen sie ihre Enthüllungen bei Vorlesungen am Moskauer Institut für Physik und Technologie, aber sie sind noch nicht gereift, um Abstracts in Form eines Buches auszufüllen. In der Zwischenzeit wird empfohlen, die Empfehlungen für Itanium als Ausgangspunkt zu lesen - konzeptionell ist diese Architektur E2K sehr ähnlich.Kurz gesagt können die Haupttechniken wie folgt formuliert werden.- : (inline), , — «». , , 4 , , , .
- : likely unlikely, pragma loop count, , .
- : for, while, break.
- , — , . ( , .)
- : , , — , , x86. , , .
- Verwenden Sie nach Möglichkeit optimierte Funktionen, z. B. die oben genannte EML-Bibliothek. Wie bereits erwähnt, kann der Compiler selbst Aufrufe gewöhnlicher Funktionen durch optimierte ersetzen, ist jedoch nicht allmächtig und es ist besser, alles explizit zu tun.
Im Detail und mit Beispielen sollen diese Methoden und andere Feinheiten in einem separaten Artikel behandelt werden. Das MCST ist sich der Bedeutung der Verbreitung „geheimer Techniken“ unter Programmierern bewusst, um maximale Produktivität aus Elbrus herauszuholen, und plant, das Licht des Wissens zu tragen, sobald sich die Community und ihre Infrastruktur gebildet haben.Gibt es eine vorgefertigte Reihe von Quellcodebeispielen in C / C ++ mit Speicherzugriffsfehlern, um zu demonstrieren, wie die Technologie der sicheren Programmausführung das Abfangen solcher Fehler in der Kompilierungs- und Ausführungsphase ermöglicht?
Natürlich gibt es eine solche Reihe von Programmen - als Teil von Regressionstest-Tools, die jede Nacht durchgeführt werden. Sie können auch Beispiele aus der SAMATE-Sammlung des American NIST Institute verwenden. Aus Gründen der Übersichtlichkeit (es ist geplant, einen separaten Artikel zu diesem Thema zu verfassen) ist es wahrscheinlich einfacher, „einzeilige Dateien“ zu schreiben, die jeden Fehler separat genau veranschaulichen.Denken Sie darüber nach, ein E2K-Backend für den LLVM-Compiler als Alternative zu LCC zu schreiben, um wie GCC zu sein?
Untersuchungen in diese Richtung wurden natürlich durchgeführt, aber das Urteil war bisher eher negativ: Die Architektur von Elbrus-2000 ist mit optimaler Verwendung von LLVM schwer zu beschreiben. Das heißt, ein alternativer Compiler könnte veröffentlicht werden, aber der von ihm generierte Maschinencode würde LCC in Bezug auf die Geschwindigkeit verlieren. Die Richtung wird jedoch nicht als Sackgasse betrachtet - es ist möglich, dass das Backend für LLVM im Laufe der Zeit dennoch realisiert wird.Kann LCC Fehler und Warnungen in der von GCC akzeptierten Form anzeigen, damit diese Nachrichten in der Entwicklungsumgebung (z. B. Qt Creator) entsprechend erkannt werden?
Im Moment ist dies nicht vorgesehen, aber ein Ticket wurde bereits in Bugsilla gestartet.Woher bekomme ich das Cross-Compilation-Toolkit für E2K aus dem x86-Arbeitsbereich? Gibt es einen umgekehrten Prozess - das Generieren von x86-Code aus der Elbrus-Umgebung und wenn ja, unter Verwendung einer speziellen Version von LCC oder eines regulären GCC?
Cross-Compilation-Tools für E2K (d. H. Der LCC-Compiler unter x86 Linux) sind auf Anfrage erhältlich. Der umgekehrte Vorgang ist nicht explizit vorgesehen: Wenn dies erforderlich ist, können Sie ein x86-System auf Elbrus im binären Übersetzungsmodus ausführen und den dort verfügbaren Compiler verwenden.Welche Virtualisierungstechnologien werden auf der Elbrus-Plattform unterstützt?
Derzeit gibt es überhaupt keine Unterstützung. Es wird jedoch bald möglich sein, Container zu verwenden.Darüber hinaus sollten in diesem Jahr die Arbeiten zur Erstellung eines paravirtualisierten Kernels des Betriebssystems und des Mechanismus zur Unterstützung des KVM-Hypervisors abgeschlossen werden. Dies ist die Hauptreserve im architekturabhängigen Teil für die Bereitstellung einer vollwertigen Cloud-Infrastruktur wie OpenStack. Während andere Architekturen bei der Arbeit in der Qemu / KVM-Umgebung auf eine vollständige Hardwarevirtualisierung angewiesen sind und optional virtuelle paravirtuelle Treiber für die E / A und das Abfangen privilegierter Anweisungen verwenden, die vom Prozessor selbst unterstützt werden, wird der architekturabhängige Teil von KVM für Elbrus entwickelt, um die paravirtuelle bereitzustellen Betriebsmodus, wenn das Gastsystem eng mit dem Hypervisor zusammenarbeitet und statt privilegierter Anweisungen die Hypercall-API-Funktionen aufruft.Es ist bekannt, dass Intel seine Architektur und Mikroarchitektur ständig verbessert und gleichzeitig die Produktivität steigert. Wie entwickelt sich die Architektur von Elbrus in diesem Teil?
Die Entwicklung bewegt sich in mehrere Richtungen.- Der Schwerpunkt liegt auf der Verbesserung der Leistung des Prozessorkerns, um Single-Thread-Anwendungen zu beschleunigen. Dies wird erreicht, indem die Anzahl der gleichzeitig ausgeführten Operationen (implementiert in der nächsten 4. Version des Befehlssystems) erhöht wird, breitere Register für Operationen an Vektordaten verwendet werden (implementiert in der 5. Version) und die Hierarchie des Speichersubsystems verbessert wird. Gleichzeitig bleibt die Kompatibilität mit früheren Versionen der Architektur erhalten.
- Die zweite Richtung ist die Verbesserung des Mikroprozessors als System auf einem Chip. Mit der Entwicklung feinerer Nanometertechnologien in Mikroprozessoren steigt die Anzahl der Prozessorkerne, die Anzahl der Speicherzugriffskanäle, um das Gleichgewicht des Mikroprozessors aufrechtzuerhalten. In einigen Fällen werden spezielle Grafikkerne und zusätzliche Controller für die Interaktion mit Peripheriegeräten hinzugefügt.
Schließlich spielt die Verbesserung des optimierenden Compilers eine bedeutende Rolle, mit deren Hilfe es möglich ist, Programmparallelität zu extrahieren und den Code in parallele Fähigkeiten der Architektur umzuwandeln - wie wiederholt betont wurde, ist der Compiler tatsächlich Teil der Architektur. Die Fähigkeitsreserve des Compilers ist bei weitem nicht erschöpft, das MCST sieht hier ein sehr weites Feld für Anstrengungen.X86-Binärübersetzung
Welche Funktionen und Einschränkungen hat die binäre Übersetzung?
Dieses Thema verdient die Berücksichtigung in einem separaten Artikel, aber kurz ist das Bild wie folgt. Es gibt zwei Arten von Broadcasting - auf Systemebene und auf Anwendungsebene. Im ersten Fall bietet das Gastbetriebssystem Zugriff auf die gesamte Hardwareumgebung des Computers, und im zweiten Fall werden jeweils nur Systemaufrufe vom Gastprogramm an den Kernel des Linux-Hostsystems übertragen. Dies kann mit den Emulatoren qemu-system-x86_64 und qemu-i386 verglichen werdenDementsprechend emuliert der Compiler den Gastprozessor jedoch nicht, sondern kompiliert den Gastcomputercode sofort neu in die nativen Anweisungen seiner Architektur. Darüber hinaus wird die Konvertierung viele Male durchgeführt, wodurch der Optimierungsgrad für die gängigsten Codeabschnitte schrittweise erhöht wird, und die Ergebnisse werden in einem Langzeitcache gespeichert.Der Übersetzer auf Systemebene (inoffiziell "Sturz" - "el-Intel" genannt) unterstützt die Befehlssätze x86 und x86-64, und der Übersetzer auf Anwendungsebene ("rtc", dh Laufzeit-Compiler) ist bisher nur mit 32-Bit-Programmen kompatibel. - Die 64-Bit-Version wird derzeit getestet. Die Kompatibilität mit der AMD64 / EM64T-Architektur bedeutet jedoch nicht, dass alle neuen Befehlssätze, die in verschiedenen Intel / AMD-Prozessoren wie den neuesten Versionen von SSE, AVX, AES-NI enthalten sind, automatisch unterstützt werden. Die entsprechenden Flags in den CPUID-Informationen fehlen.Wie verwende ich einen Übersetzer auf Systemebene?
Ganz einfach: Wenn Sie Ihren Computer starten, müssen Sie eine Flash-Karte als Startdiskette angeben. Wenn sich herausstellt, dass die Karte leer ist oder der Benutzer das Broadcast-System selbst von dort gelöscht hat, können Sie sie jederzeit erneut aufzeichnen, indem Sie das Bild mit dem Befehl dd kopieren .Der Übersetzer auf Systemebene verfügt über ein BIOS des ursprünglichen Designs. Nach dem Start wird die übliche POST-Sequenz auf dem Bildschirm angezeigt, in der Sie zum Einstellungsmenü wechseln können. Die meisten dieser Einstellungen sind die häufigsten, aber es gibt auch bestimmte. Sie können beispielsweise die Prozessoridentifikation sehr flexibel anhand der CPUID steuern und dabei nicht nur die Familien- und Modellnummern oder die einzelnen Fähigkeitsflags, sondern auch den Textnamen ändern. Dies ist erforderlich, um dem wettbewerbswidrigen Verhalten von Programmen entgegenzuwirken, die mit dem Intel C ++ - Compiler kompiliert wurden. Eine weitere spezielle Option ist die transparente Konvertierung des SATA-Controllers in PATA, um die Kompatibilität mit einer größeren Anzahl von Betriebssystemen sicherzustellen. Trotz des Vorhandenseins solcher „Zauberstäbe“ kann der Betrieb von Betriebssystemen, die auf einem echten x86-Computer installiert sind, nicht garantiert werden.- Dies gilt insbesondere für Windows mit seiner Bindung einer Lizenz an Hardware und einer ehrfürchtigen Haltung gegenüber dem Systemdatenträgertreiber.Wie verwende ich einen Übersetzer auf Anwendungsebene?
Noch einfacher: Starten Sie das Übersetzungsprogramm, übergeben Sie ihm den Pfad zur Gastanwendung und den Pfad zum Stammverzeichnis der neu erstellten Umgebung. Die ganze Frage ist, wie man sich zuerst ein Bild von dieser Umgebung macht. Bisher wird standardmäßig nur die Umgebung der x86-Version des Elbrus-Systems mitgeliefert, andere sind jedoch ebenfalls zulässig. Wenn es dem Kunden schwer fällt, sich unabhängig ein Bild vom gewünschten System zu machen, können die Spezialisten des MCST die notwendige Unterstützung leisten.Unter einer laufenden Gastanwendung (z. B. einem Befehlsinterpreter) kann ein Benutzer andere Gastprogramme vollständig transparent starten. Zu einem bestimmten Zeitpunkt können mehrere Instanzen des Übersetzers gleichzeitig gestartet werden, und jede Instanz kann in ihrer eigenen Umgebung arbeiten. Daher können Sie beispielsweise dieselbe Version des Browsers in verschiedenen Distributionen oder umgekehrt verschiedene Versionen des Browsers im selben System ausprobieren (ein weit hergeholtes Beispiel natürlich, aber es zeigt das Wesentliche).Man kann der Behauptung begegnen, dass im binären Übersetzungsmodus einige Benchmarks noch schneller funktionieren als die ursprünglich für E2K zusammengestellten. Für welche Programmklassen und unter welchen Bedingungen ist dies möglich?
Dies ist beispielsweise dann wirklich möglich, wenn die native Version der JVM- oder JS-Engine nur Benutzercode interpretieren kann und die x86-Version im Vergleich dazu über einen vollwertigen JIT-Compiler verfügt. Gleichzeitig wird der für die Optimierung ausgewählte Bytecode, obwohl es mehrere Broadcasts gibt, zuerst in die x86-Maschinensprache kompiliert und nach einiger Zeit erneut in E2K kompiliert (außerdem dreimal einmal für jede Ebene) Optimierungen) - jedenfalls überwiegt der endgültige Gewinn aus der Zusammenstellung.Für native C / C ++ - Programme gibt es auch eine logische Erklärung, sogar zwei. Erstens, obwohl der LCC-Compiler den generierten Code auf titanische Weise optimiert, kann niemand garantieren, dass ein Compiler für x86, insbesondere der kommerzielle, in einem bestimmten Fall nicht besser abschneidet. Zweitens ist es wahrscheinlicher, dass ein gut optimiertes Programm für x86 einfach unter Berücksichtigung der vorläufigen Profilerstellung kompiliert wurde, während der bloße Quellcode ohne Eingabeaufforderung dem LCC-Compiler zugeführt wurde. Aber ceteris paribus sollten native Programme zumindest nicht langsamer arbeiten als Broadcast-Programme. Ist dies nicht der Fall, sollte ein Fehlerbericht an die LCC-Entwickler gesendet werden.Leistungsmessung
Laut ICST-Spezialisten können einige bisher beliebte Benchmarks das Potenzial einer der vorhandenen Plattformen nicht wirklich aufzeigen. Nehmen Sie das gleiche UnixBench - bei allem Respekt vor seinem ehrwürdigen Alter ist es längst veraltet und für moderne Prozessoren und Betriebssysteme gleichermaßen ungeeignet. Die beiden prozessorabhängigen Tests, Whetstone und Dhrystone, sind praktisch nicht parallelisiert und können zumindest auf Architekturen mit expliziter Parallelität, wenn auch implizit, nicht ohne nennenswerte außergewöhnliche Ausführung ausgeführt werden. Und der Rest der Tests handelt im Allgemeinen von „nichts“. Stattdessen ist es besser, etwas Spezifischeres zu verwenden. Der einzige Vorteil von UnixBench ist seine plattformübergreifende Natur, weshalb es heute noch verwendet wird.Sie sollten auch die mächtige Kraft der Profilerstellung nicht aus den Augen verlieren. Zum Beispiel sind die Ergebnisse des 7-Zip-Tests, die im CNews-Test verdächtig hoch erschienen, kein Scherz, sondern eine Folge einer Zusammenstellung mit zwei Durchgängen. Eine andere Frage ist, wie nützlich eine solche Optimierung im allgemeinen Fall ist, dh bei beliebigen Eingabedaten. Aus diesem Grund ist es kaum sinnvoll, alle Komponenten des Pgbench-Tests zu profilieren, da sich die Postgresql-Leistung bei realen Daten möglicherweise als völlig anders herausstellt. Bei 7-Zip ist die Überprüfung jedoch recht einfach: Sie müssen einen weiteren Test durchführen, indem Sie eine Sammlung verschiedener Dateien an die Eingabe senden. Das einzige Problem ist, dass, wenn die Dateien nicht standardisiert sind, das Wiederholen des Tests auf die gleiche Weise für niemanden funktioniert, der dies wünscht, und das Vertrauen in die veröffentlichten Ergebnisse noch geringer ist.Sie sollten sich bewusst sein, dass synthetische Benchmarks häufig mit Blick auf eine bestimmte Architektur geschrieben werden (auch weil ihre Autoren daran gewöhnt sind, so zu denken) oder an eine bestimmte Kombination aus Hardware und Compiler angepasst werden. Zum Beispiel erklärt der bekannte SPECcpu-Test Objektivität und Unparteilichkeit. In den Quellcodes der Version 2006 finden Sie jedoch Kommentare, dass diese oder jene Krücke speziell für den Intel C ++ - Compiler hinzugefügt wurde. Und wie kann man den Einfluss eines großen Anbieters nicht ahnen, wenn 90% der Datensätze 36,6 Tausend veröffentlichte Ergebnisse ausmachen?Reale Anwendungen sind auch nicht immer ein Indikator, da die kritischsten Abschnitte entweder vollständig in x86-Assembler geschrieben werden können oder viele Assembler-Einfügungen und Aufrufe von Sonderfunktionen (Intrinsics) enthalten, für die OpenSSL ein gutes Beispiel ist. Es stellt sich heraus, dass der zum Lecken geleckte Maschinencode mit einer Hochsprachenimplementierung verglichen wird, deren Hauptzweck darin besteht, eine Referenz zu sein, und die nicht optimal ist.Daher ein Angebot an die Leser: Lassen Sie uns gemeinsam überlegen, welche künstlichen oder lebensnahen Tests durchgeführt werden können, um festzustellen, wie stark Elbrus in seinen relevanten Aufgaben ist. Es ist nicht erforderlich, dass dies vorgefertigte Programme sind, insbesondere im Hinblick auf mathematische Berechnungen, da es sich beispielsweise um Matrixmultiplikation handelt - es handelt sich auch um Matrixmultiplikation in Afrika: Die Komplexität der Aufgabe ist gleich, unabhängig davon, ob sie von optimierten EML-, BLAS / LAPACK-Bibliotheken oder einer selbstgeschriebenen Funktion ausgeführt wird. Hinterlassen Sie Ihre Ideen in den Kommentaren.Der Autor dankt den ICST-Mitarbeitern für eine detaillierte und interessante Erklärung. Source: https://habr.com/ru/post/de391259/
All Articles