you
you
you
you
you
you
but in sum you can see a few hundred lines
that all want to be connected somehow
how do you connect them?
you can go here now and you can do the circuit in principle in the way we have learned so far
you call the corresponding components create function and pass on all the previously created signal values
have fun
you can do it, you can't do it without errors
you see here alone at the house bridge, that's a size of 50 buses or signals in some form
you have to cable them all correctly, one single cable wrong, of course nothing works
what do we do in the V-Machine project?
we do it there, we really paint it with the G-Scam, I don't know if you know it from the G-DAR suite
that's a circuit plan painting program, so thought to really paint circuit plans
and then we have a little tool that takes this circuit plan and ultimately builds something out of it
a kind of, as you have now learned in principle, that the individual components are instantiated
and when instantiating they get all the parameters passed on to which bus they should be cabled
then we can just paint like this, press the buttons and then we have a C-Page that is half a kilometer long with all the calls in it
how does that look with the system?
the system should be configurable, components and buses are known at the first run, if you want to configure it
and there are extremely many components, you could imagine
in our context you don't necessarily have to assume that a virtual system is exactly one PC
that can also be connected to a network PC, if I want to test a new configuration of my web server
then I just need a server and I need a client and I need a network cable in between
so it's not just one computer that I want to do it afterwards, but several
and then you can imagine, yes, there are also damn many components
so if you really screw every PC together from individual parts, then that's quite a lot of individual parts
and you don't know about compile time
that's the philosophy of QEMU, BOX, whatever they are called, they say if you need two PCs, then start QEMU twice
on the one hand, of course, speaks for itself, if you then do two PCs and each PC has a CPU, then start the simulator twice
then you have two processes and accordingly two virtual CPUs
so you really have a multi-core computer, which is often the question today, you also have the double performance
but one problem with the whole thing is that Linux, Unix of course doesn't know that these simulations belong together
and what can happen here, that one virtual machine runs and the other is scheduled, which is stored on a board, no space left
then of course it can be that you somehow send network packages to the others, but they don't react
if everything is in one process, that can't happen, then half of it is not swapped
we will talk about time later, then that will be a topic
if it's about time, as I've seen, to do it correctly, then it will be with the method that I split it into two processes, nothing
because I have no influence on who does what
but otherwise you're right, in this example, server and client
and on the internet you don't know how long it takes, then you can do that quite well
as you can see, there are many possibilities to connect all the small chip parts to chips
there are many possibilities to bring chips to a board and to build a system from components
but what you take from that, you choose something, there are many possibilities
you've got to know them, but all of them have their pros and cons
the more I compile together, the more chances I have to optimize a compiler
Presenters
Zugänglich über
Offener Zugang
Dauer
01:31:51 Min
Aufnahmedatum
2015-11-04
Hochgeladen am
2019-05-06 16:29:03
Sprache
de-DE
Vorgestellt werden verschiedene Virtualisierungs-Ansätze:
-
Emulation
-
Just-In-Time-Compiler
-
Para-Virtualisierung
-
Bibliotheks-basierte Virtualisierung
-
OS-Virtualisierung
Lernziele und Kompetenzen:
Studierende, die das Modul erfolgreich abgeschlossen haben:
-
erläutern verschiedene Motivationen für den Einsatz von VMs
-
unterscheiden verschiedene VMs
-
klassifizieren verschiedene Ziele unterschiedlicher VMs (z.B. Performance, Konfigurierbarkeit, Genauigkeit, ...)
-
hinterfragen verschiedene Simulationansätze für MMUs
-
erstellen virtuelle Komponenten und Busse
-
strukturieren Callbacks und entsprechendes Forwarding und Caching
-
unterscheiden zwischen Architektur, Chip und Komponente
-
klassifizieren unterschiedliche Just-In-Time-Compiler-Ansätze
-
erzeugen JIT Code aus vorgefertigten Code-Teilen
-
bewerten unterschiedliche JIT-Code-Optimierungen
-
erläutern Probleme bei der JIT-Code-Invalidierung
-
nennen JIT Probleme mit Exceptions/Interrupts sowie berechnete Sprüngen und Return-Instruktionen
-
unterscheiden verschiedene JIT Cache-Verwaltungen
-
beschreiben Möglichkeiten der Fehlerinjektion durch VMs
-
entwickeln ein an JIT angepasstes virtuelles "Hardware"-Design
-
erläutern die Java-VM Instruktionssatz-Architektur
-
nutzen Hardware-basierte Virtualisierung
-
entwickeln Verfahren zum Ausfiltern bestimmter Befehle
-
erläutern Probleme der Speicherverwaltung bei HW-basierter Virtualisierung
-
nutzen User-Mode-Emulation zur Paravirtualisierung
-
diskutieren Möglichkeiten von Debuggern für die Umleitung von System-Calls und die Ausfilterung von Befehlen
-
nutzen einen Hypervisor zur Paravirtualisierung
-
unterscheiden verschiedene Ansätze zur Geräteverwaltung in paravirtualisierten Systemen
-
erläutern Betriebssystem-basierte Virtualisierung
-
entwickeln unterschiedliche Bibliotheks-basierte Virtualisierungen
-
erläutern Probleme beim Speicher-Layout bei Bibliotheks-basierte Virtualisierung
-
konzipieren Personalities für Bibliotheks-basierte Virtualisierungen
-
beurteilen Probleme bei der korrekten Zeit-Simulation
-
nennen Ideen für die dynamische Anpassung der Zeit-Simulation
-
klassifizieren bekannte VMs (z.B. VICE, FAUmachine, QEMU, Bochs, JVM, KVM, User-Mode-Linux, Xen, VServer, Wine)
-
diskutieren in der Gruppe Vor- und Nachteile von bestimmten VM-Ansätzen
-
entwickeln selbst CPU-Emulationen
-
entwickeln selbst Geräte-Emulationen
-
verteilen Implementierungsaufgaben in ihrer Gruppe