also ein Computer kann ja mehrere Prozessoren haben ,aber er kann auch nur ein Prozessor haben. Die Computer, die wir zu haus haben, besitzen doch generell eher nur ein Prozessor oder bzw. sind doch SISD?
Ja, prinzipiell schon. Wobei die Erweiterungen wie MMX und so dazu fuehren, dass der Rechner auf SIMD kann.
Naja, selbst der 286 hatte schon Befehle wie "movsb" oder "movsw", die eine eingebaute Schleife haben. (Wieferholungspraefix ueber si:di). Das ist auch im Prinzip SIMD.
Warum bringt es nicht viel, wenn man zum beispiel 20 pipelines hat?
Kann das sein, dass einige befehle genutzt werden und somit die verarbeitung gestoppt wird…oder kann in jedem befehlsfluss auf dieselben operatoren zugegriffen werden?
Genau da ist der Haken. Man betrachte eine Berechnung dieser Art:
a = b + c
d = a + e
Die zweite Zeile kann erst ausgefuehrt werden wenn die erste passiert ist. Dass man 20 parallelisierbare Befehle findet ist i.a. eher die seltenheit.
Pro Prozessor hast Du nur *eine* Pipeline.
Der Prozessor hat Phasen (Fetch, Decode, etc), die Pipeline kann maximal so viele Stellen haben (die Laenge der Pipeline), wie der Prozessor Phasen hat. Mehr ist nicht sinnvoll.
Der Durchsatz veraendert sich folgendermassen:
Ohne Pipeline: Ein Befehl braucht (Anzahl Phasen)*(Zeit Pro Phase), um fertig zu werden (wobei die Phasen auch verschieden lang sein koennen, und dann die Rechnung direkt so nicht mehr aufgeht.)
Mit Pipeline passen (Laenge der Pipeline) Anweisungen in die Pipeline. Also maximal (Anzahl Phasen). Damit braucht die einzelne Anweisung (Laenge der Pipeline)*(Zeit pro Phase) (Diesmal wirklich, da alle Phasen in der Laenge angeglichen werden.) Aber pro (Zeit pro Phase) wird eine Anweisung fertig, da (Laenge der Pipeline) Anweisungen gleichzeitig bearbytet werden.
warum stoeren denn sprungbefehle?
Unbedingte Spruenge sind harmlos, da weiss man ja wo es hingeht. Gefaehrlich sind die bedingten Spruenge. Da haengt der Sprung von einem noch zu errechnenden Ergebnis ab. Der Prozessor raet hier (mit ein bisschen Algorithmus), ob der Sprung passieren wird und arbeitet auf gut Glueck shconmal Befehle ab. Im Zweifelsfall hat er sich dann aber verschaetzt und alle Befehle, die shconmal in "weiser" Voraussicht ausgefuehrt wurden sind rueckgaengig zu machen. Das kostet ganz schoen viel Zeit.
Es kostet auch bei unbedingten Spruengen teilweise Zeit. Diese koennen aus einem Gecacheten Speicherbereich hinausgehen, und dann muss die CPU auf den Speicher warten. Aber in der Hauptsache hat Tri natuerlich recht.
irgendwie bin ich zu dumm, um den virtuellen speicher zu verstehen?
Kann mir das jemand mal erklaeren?
Das was Fred sagte, "man kann ihn manchmal abschalten", daran glaube ich nciht. Virtuellen Speicher kannst Du Dir so vorstellen: Es gibt ihn nicht.
Alles was Du hast, ist eine Adressierung, die nicht mit der Adressierung im Physikalischen Speicher uebereinstimmt. Und diese Adressierung nennt man "virtuelle Adressierung". Ueber die virtuelle Adressierung hat das OS ne ganze Menge Macht, und damit wird es moeglich es fuer jedes Programm so aussehen zu lassen, als sei es alleine auf dem Computer. Und auch, als haette jedes Programm fuer sich einen kompletten Adressbereich. Und ueber Seitenfehler kann man Swapspace auf Festplatten benutzen, was allgemeinhin mit "virtuellem Speicher" bezeichnet wird, aber nur mittelbar was mit der virtuellen Adressierung zu tun hat.
Mo