Archiv verlassen und diese Seite im Standarddesign anzeigen : Befehlssätze
Hallo
Ich wollte mal fragen wofür die Befehlssätze da sind und was sie machen.
Wenn jemand einen Link hat in dem das steht was jeder Befehlssatz macht könnte er ihn ja hier reinposten.
danke
Das ist die Sprache die ein Prozessor versteht.
BlackBirdSR
2004-09-23, 13:16:04
Ein Befehlssatz ist einfach eine Anzahl an Befehlen, welche z.B eine CPU versteht.
Wenn man der CPU aus diesem Satz einen Befehl gibt, arbeitet sie nach dessen Regeln.
SSE oder MMX sind Zusätze zum Befehlssatz der x86-CPUs (Pentium Athlon etc)
Danke für die promte Antwort.
:)
Negative Creep
2004-09-23, 20:17:47
Befehlssätze sind quasi rechenabfolgen nach welchen der CPU bestimmte Aufgaben und Befehle verarbeitet. Das Betriebssystem "übersetzt" die Anwendungsspeziefischen Aufgaben in Befehlssätze des CPUs, so das er damit arbeiten kann.
Die Befehlssätze verschiedener Prozessorklassen sind unterschiedlich. Der Athlon XP hat zum Beispiel 3D Now+, was ein P4 nicht hat.
Außerdem muss das OS die Befehlssätze des CPUs beherrschen:
Bsp: Man kann kein Windwos auf Apple PCs installieren oder kein DOS auf AmigaRechener (Die CPUs wurden glaube von Motorola geferiht) installieren kann, weil der CPU eine andere Sprache wie das OS "Spricht".
mrdigital
2004-09-23, 21:01:25
Befehlssätze sind quasi rechenabfolgen nach welchen der CPU bestimmte Aufgaben und Befehle verarbeitet. Das Betriebssystem "übersetzt" die Anwendungsspeziefischen Aufgaben in Befehlssätze des CPUs, so das er damit arbeiten kann.
Die Befehlssätze verschiedener Prozessorklassen sind unterschiedlich. Der Athlon XP hat zum Beispiel 3D Now+, was ein P4 nicht hat.
Außerdem muss das OS die Befehlssätze des CPUs beherrschen:
Bsp: Man kann kein Windwos auf Apple PCs installieren oder kein DOS auf AmigaRechener (Die CPUs wurden glaube von Motorola geferiht) installieren kann, weil der CPU eine andere Sprache wie das OS "Spricht".
uhh da sind aber viele Halbwahrheiten drin...
Übersetzt wird ein Quellcode (in einer Programmiersprache geschrieben) von einem Compiler in die jeweilige Maschinensprache (die sich aus dem befehlssatz zusammensetzt)
Darüber hinaus gibt es bestimmte Erweiterungen dieser Maschienensprache / dieses befehlssatztes, namentlich sind das MMX, SSE1/2/3, 3DNow(+)
Maschinensprachen sind immer an eine bestimme Architektur gebunden (sie stellt quasi das "Frontend", die Benutzerschnittstelle zur CPU dar). Es ist aber möglich sehr unterschiedliche Architekturen zu konsturieren, die "nach vorne" die selbe Maschienensprache sprechen.
Thanatos
2004-09-24, 22:15:53
Würde mich mal interessieren.......
Was beschleunigt denn der 3dnow+ Befehlssatz, oder was profitiert davon?
Spiele/3d anwendungen ?
BlackBirdSR
2004-09-24, 23:19:26
Würde mich mal interessieren.......
Was beschleunigt denn der 3dnow+ Befehlssatz, oder was profitiert davon?
Spiele/3d anwendungen ?
3dnow arbeitet wie SSE mit Gleitkommazahlen.
Beschleunigt werden alle Berechnungen, die man vektorisieren kann.
D.h die Rechnungen müssen mit 32Bit Genauigkeit zufrieden sein, und man muss Stücke finden, die die gleiche Rechenvorschrift nutzen aber nicht voneinander abhängig sind.
Profitieren würden davon sicherlich eine Menge Anwendungen und Spiele.
Es ist nur ein Mörderaufwand, den zu machen kaum einer gewillt ist.
Wieso wird es eigentlich schneller, da ja "moderne" CPUs einen RISC-Kern haben, der alle komplizierten Befehle doch in einfache zerlegt haben wollen sollte, möchten dürfte.:conf2:
BlackBirdSR
2004-09-25, 00:15:43
Wieso wird es eigentlich schneller, da ja "moderne" CPUs einen RISC-Kern haben, der alle komplizierten Befehle doch in einfache zerlegt haben wollen sollte, möchten dürfte.:conf2:
sorry, das habe ich nicht ganz verstanden :(
sorry, das habe ich nicht ganz verstanden :(
Naja, es gibt den RISC-Kern, der einfache Befehle bevorzugt (der sich in den verschiedenen K7-Versionen z.B. nicht groß berändert hat???). Und drumherum ist irgend so ne "Hülle", die jetzt mal eben um SSE-Befehle erweitert wird. Aber berechnen muss es am Ende ja doch der RISC-Kern?
BlackBirdSR
2004-09-25, 01:06:49
Naja, es gibt den RISC-Kern, der einfache Befehle bevorzugt (der sich in den verschiedenen K7-Versionen z.B. nicht groß berändert hat???). Und drumherum ist irgend so ne "Hülle", die jetzt mal eben um SSE-Befehle erweitert wird. Aber berechnen muss es am Ende ja doch der RISC-Kern?
Es geht ja darum, wie SSE Befehle bearbeitet werden.
Normalerweise kannst du pro Takt maximal nur 1 Additions und einen Multiplikationsbefehl mit der FPU erledigen. (beim K7/8)
Mit SSE kannst du durch SIMD maximal 2ADD 2MUL berechnen, hast also theoretisch den doppelten Durchsatz.
Das hat wenig mit dem RISC Kern an sich zu tun.
SSE kann 4 gleichzeitige Berechnungen machen, nur SSE2 ist auf 2 beschränkt.
Aber berechnen muss es am Ende ja doch der RISC-Kern?
Auch RISC CPUs können Vektoreinheiten haben. Siehe Altivec beim PowerPC.
Thanatos
2004-09-25, 17:08:22
3dnow arbeitet wie SSE mit Gleitkommazahlen.
Profitieren würden davon sicherlich eine Menge Anwendungen und Spiele.
Es ist nur ein Mörderaufwand, den zu machen kaum einer gewillt ist.
Wer es dann nicht besser diese befehle zu maximieren und voll auszuschöpfen um mehr leistung zu bekommen, statt immer mehr megaherz zu haben??Da diese Technik im moment sowieso etwas im stocke ist.
BlackBirdSR
2004-09-25, 17:13:26
Wer es dann nicht besser diese befehle zu maximieren und voll auszuschöpfen um mehr leistung zu bekommen, statt immer mehr megaherz zu haben??Da diese Technik im moment sowieso etwas im stocke ist.
Die Alternative ist genauso im Stocken.
Es ist den Aufwand nicht mehr wert (bei x86) noch mehr Befehle gleichzeitig ausführen zu lassen.
Der Durschnitt liegt vielleicht bei 1.5-2.3 Befehlen/Takt. Und das auch nur wenn man ziemlich weit oben ansetzt.
Das Problem kann man aber auch nicht so einfach lösen. Also bleibt nur Takt oder eben mehr Threads auf einmal. Ergo (S)MT und MultiCore.
Das gehört zwar nicht unbedingt in diesen Thread, aber kann der .Net Jitter für SSE/3dnow kompilieren?
Nein, der bekommt soweit ich weiß noch nichtmal den FPU Code gescheit hin im Moment.
Außerdem hat ein JITC sehr wenig Zeit zum übersetzen, da is keine Zeit für lange Analysen.
Wenn dann hätten sie das SIMD schon im Bytecode einbauen müssen, was AFAIK auch nicht der Fall ist.
Lokadamus
2004-09-25, 21:23:51
Naja, es gibt den RISC-Kern, der einfache Befehle bevorzugt (der sich in den verschiedenen K7-Versionen z.B. nicht groß berändert hat???). Und drumherum ist irgend so ne "Hülle", die jetzt mal eben um SSE-Befehle erweitert wird. Aber berechnen muss es am Ende ja doch der RISC-Kern?mmm...
Ich kann mit meinem beschränkten Wissen nur mal kurz raten:
Es gibt eine ganze Reihe von X86- Befehlen, welche zuerst in Form von Cisc und ab dem Pentium in Risc umgesetzt worden sind. Der Vorteil hierbei war nur der höhere Output in Form von Takten pro Befehlsausführung. Die Idee dabei war, dass die meisten verwendeten Befehle sich auf mov's und andere simple Befehle beschränkten. Komplexe Befehle, wo CISC schneller war, beschränkten sich auf einen verhältnismässig schwachen Anteil von ca. 5 - 25 % pro Anwendung, wenn überhaupt. Diese Feststellung hatte man damals schon bei Motorola? gemacht und darum das RISC- Design genommen (ob sie es entwickelt haben, weiss ich nicht).
Der Co- Prozessor (die FPU) selber hat seinen eigenen Befehlssatz bekommen, womit weder RISC noch CISC etwas anfangen können. Damit trotzdem alles reibungslos ablaufen konnte, gab es die Befehle, womit der CPU einfach gesagt wird, dieser Befehl geht an die FPU, geht dich weiter nichts an und du machst den nächsten Befehl. Sobald ein Ergebnis von der FPU da sein sollte, die CPU ihre Aufgaben aber schon erledigt hatte, konnte man der CPU einfach sagen, warte auf die FPU, bis sie fertig ist. So konnte man bei richtiger Programmierung einen reibungslosen und optimierten Ablauf erreichen, die CPU wurde solange mit anderen Sachen beschäftigt, bis die FPU etwas ausgerechnet hat.
Da MMX und SSE auf die FPU aufbauen, denke ich, hat sich beí der Abarbeitung der Befehle in der Form, dass die CPU gerne wartet, nichts verändert.
Sollte ich mich irren, korrigiert mich ...
Wow freut mich ja das soviele was über dieses Themas wissen :)
Kennt jemand von euch eine Seite wo die Befehlssätze aufgelistet sind und was sie machen??
Wäre schon das mal zu erfahren was die ganzen Befehlssätze machen.
danke
mrdigital
2004-09-26, 16:07:20
Der Befehlsatz jeder CPU muss ein paar elementare Operationen beinhalten, damit man sinnvolles mit der CPU machen kann. Das sind Ladebefehle, also Operationen, die Daten aus dem Speicher in ein Register und umgekehrt bewegen. Das sind einfache arithmetische Operationen (mindestens die Addition) und dann wär es auch noch schön, wenn man bestimmte Konditionen abfragen kann (war das Ergebniss der letzten Operation Null oder gabs einen Überlauf) und dann braucht man noch Sprungbefehle (damit kann man dann in Verbindung mit den konditionalen Tests if-then-else Konstruktionen machen). Simple Bitoperationen (AND, OR, XOR ...) wären auch schön, aber wenn man schon addieren kann, dann fallen die als "Abfallprodukt eh dabei an. Mehr brauchts nicht, um einen primitiven, aber sinnvollen Prozessor zu bauen. Die ganzen Befehle, die über das genannte hinausgehen (ich hab hoffentlich nichts wichtiges vergessen ;)) sind "Luxus" und machen das Leben leicher, bzw sorgen dafür, dass man bestimmte Vorgänge schneller / effizienter lösen kann. Welche Befehle es dann im Detail sind, hängt von der Verwendeten Architkektur ab. x86 ist eigentlich im wesentlichen das, was ein 386er konnte (uhh ja ich weiss, das ist "schwammig";)). Aber hier gibts den mal zu lesen: http://developer.intel.com/design/pentium/manuals/24319101.pdf
Lokadamus
2004-09-26, 19:25:50
Wow freut mich ja das soviele was über dieses Themas wissen :)
Kennt jemand von euch eine Seite wo die Befehlssätze aufgelistet sind und was sie machen??
Wäre schon das mal zu erfahren was die ganzen Befehlssätze machen.
dankemmm...
Wenn es dich wirklich so sehr interessiert, dann kannst du eigentlich anfangen, dir ein Buch über Assembler zu besorgen. Die wohl besten sind Ge-Packt von mitp- Verlag (Ge-Packt ist eine Reihe, darunter müsste auch ein Buch über Assembler bei sein) und "Das Assemblerbuch" von Trutz irgendwas aus dem Addison- Wesley Verlag.
Alternativ gibt es über Google einige Tutorials für Assembler, wo die wichtigsten Befehle erklärt werden.
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.