Kann eine CPU mehr als Addieren?
-
Blue-Tiger schrieb:
Aber eine in Hardware gegossene...
Nicht zwangsläufig.
-
Tachyon schrieb:
Blue-Tiger schrieb:
Aber eine in Hardware gegossene...
Nicht zwangsläufig.
Es gibt CPUs, die keine fest verdrahteten (Halb)addierer haben, sondern XOR und AND Micro-Ops ausschicken? Kannst mir ein Beispiel nennen?
-
Tachyon schrieb:
Nicht zwangsläufig.
Die offiziell angegebenen 144-162 Taktzyklen, die ein 8086 zum Dividieren eines 16-Bit-Registers brauchte, sprechen eine deutlich Sprache
-
audacia schrieb:
Tachyon schrieb:
Nicht zwangsläufig.
Die offiziell angegebenen 144-162 Taktzyklen, die ein 8086 zum Dividieren eines 16-Bit-Registers brauchte, sprechen eine deutlich Sprache
Darüber dass heutige CPUs nicht zwangsläufig die Addition in Hardware implementieren?
-
Blue-Tiger schrieb:
Kannst mir ein Beispiel nennen?
Nicht wirklich. Ohne zu suchen könnte ich Dir nicht mal einen Prozessor nennen, bei dem der Microcode nicht gefixt ist.
-
Tachyon schrieb:
Blue-Tiger schrieb:
Kannst mir ein Beispiel nennen?
Nicht wirklich. Ohne zu suchen könnte ich Dir nicht mal einen Prozessor nennen, bei dem der Microcode nicht gefixt ist.
was ist gefixter Microcode?
-
Tachyon schrieb:
Blue-Tiger schrieb:
Kannst mir ein Beispiel nennen?
Nicht wirklich. Ohne zu suchen könnte ich Dir nicht mal einen Prozessor nennen, bei dem der Microcode nicht gefixt ist.
[Achtung Halbwissen]
Trifft das nicht auf alle aktuellen x86 CPUs zu? Gibt ja immer wieder "Microcode Upates" per BIOS oder z.T. sogar Windows Update...
Oder geht's da um was anderes?[/Achtung Halbwissen]
-
Wie macht man auf ner CPU eigentlich nen Vergleich (z.B. jnz (jump no zero))? Ist das irgendwie so ein Transistor der dann schaltet, wenn alle Bits Null sind?
-
jnz schrieb:
Wie macht man auf ner CPU eigentlich nen Vergleich (z.B. jnz (jump no zero))? Ist das irgendwie so ein Transistor der dann schaltet, wenn alle Bits Null sind?
Nein, das macht alles der so komisch an manchen Stellen verunreinigte Halbleiter
-
jnz schrieb:
Wie macht man auf ner CPU eigentlich nen Vergleich (z.B. jnz (jump no zero))? Ist das irgendwie so ein Transistor der dann schaltet, wenn alle Bits Null sind?
normalerweise sind vergleiche subtraktionen (weil man auch bei grösser/kleiner springen will, es werden dann gewisse flags gesetzt). man könnte aber auch xor nehmen, um zu testen, ob zwei werte gleich sind. und dann alle bits mit 'nem 'and' verknüpfen, der output davon bestimmt beim nächsten takt, ob eine andere adresse in den program counter geladen wird, oder ob's ganz normal weitergeht.
-
naja mit AND geht schonmal garkein test gegen 0.
wenn dann mit OR.
-
Doch klar, x and x ist 0 gdw. x=0. Der test-Befehl ist ja genau dafür da. Allerdings ist das trotzdem keine Antwort auf die Frage, die and-Verknüpfung ist ja hier nur ein Vehikel, um das Setzen der Flags zu einem bestimmten Registerwert zu erzwingen. Wenn das anders ginge, würde man es anders machen.
Außerdem stehen die Flag-Informationen theoretisch sowieso zur Verfügung, ein Register "weiß", ob es gerade 0 ist. Nur kann man das leider nur über den Flag-Umweg per Software abfragen.
-
Bashar schrieb:
Außerdem stehen die Flag-Informationen theoretisch sowieso zur Verfügung, ein Register "weiß", ob es gerade 0 ist.
kommt drauf an. manche prozessoren setzen flags schon beim laden irgendwelcher register, andere erst nach ausführung irgendwelcher operationen (arithmetisch, logisch, shift oder sowas).
-
Bashar schrieb:
Doch klar, x and x ist 0 gdw. x=0. Der test-Befehl ist ja genau dafür da. Allerdings ist das trotzdem keine Antwort auf die Frage, die and-Verknüpfung ist ja hier nur ein Vehikel, um das Setzen der Flags zu einem bestimmten Registerwert zu erzwingen. Wenn das anders ginge, würde man es anders machen.
Außerdem stehen die Flag-Informationen theoretisch sowieso zur Verfügung, ein Register "weiß", ob es gerade 0 ist. Nur kann man das leider nur über den Flag-Umweg per Software abfragen.Vielleicht hab ich fricky auch falsch verstanden.
Ich dachte er will die einzelnen Bits eines Wertes miteinander AND verknüpfen, und dann sehen ob "false" rauskommt.
Also quasi für "a == b":
c = a XOR b, und dann Ergebnis = NOT (c(0) AND c(1) AND c(2) AND c(3) ...)
Und da braucht man eben OR und nicht AND.
-
hustbaer schrieb:
Ich dachte er will die einzelnen Bits eines Wertes miteinander AND verknüpfen, und dann sehen ob "false" rauskommt.
ja, du hast recht, war ein blackout von mir, ich hab' mir die '0' irgendwie aus lauter einsen vorgestellt. natürlich braucht man bei positiver logik ein 'nor' und keine 'and', um das Z-flag auf 1 zu setzen, wenn alle bits 0 sind.
-
Tachyon schrieb:
Blue-Tiger schrieb:
Kannst mir ein Beispiel nennen?
Nicht wirklich. Ohne zu suchen könnte ich Dir nicht mal einen Prozessor nennen, bei dem der Microcode nicht gefixt ist.
http://de.wikipedia.org/wiki/Field_Programmable_Gate_Array
Die Gatter der Dinger können beliebig programmiert werden, sodass zum Beispiel wie in diesem Beispiel der Test eines von 4 DES Schlüsseln exakt einen Takt braucht.
-
otze schrieb:
Tachyon schrieb:
Blue-Tiger schrieb:
Kannst mir ein Beispiel nennen?
Nicht wirklich. Ohne zu suchen könnte ich Dir nicht mal einen Prozessor nennen, bei dem der Microcode nicht gefixt ist.
http://de.wikipedia.org/wiki/Field_Programmable_Gate_Array
Die Gatter der Dinger können beliebig programmiert werden, sodass zum Beispiel wie in diesem Beispiel der Test eines von 4 DES Schlüsseln exakt einen Takt braucht.
man sollte diese dinger aber nicht mit prozessoren verwechseln, denn es sind konfigurierbare logikschaltungen. aber, je nach grösse, lassen sich prozessordesigns da reinladen, sogar mehrere. ich denke, dass zukünftige computer, sofern die noch digital funktionieren, auch mit FPGAs o.ä. bestückt sein werden. und dann werden hardwarebeschreibungssprachen wohl auch zum repertoire des gewöhnlichen anwendungsprogrammierers gehören.
-
Bashar schrieb:
audacia schrieb:
Tachyon schrieb:
Nicht zwangsläufig.
Die offiziell angegebenen 144-162 Taktzyklen, die ein 8086 zum Dividieren eines 16-Bit-Registers brauchte, sprechen eine deutlich Sprache
Darüber dass heutige CPUs nicht zwangsläufig die Addition in Hardware implementieren?
Darüber, daß das beim ehrwürdigen Vorfahr der heute meistgebräuchlichen CPU eher nicht der Fall war.</obvious>
-
Ich versteh den Witz immer noch nicht. Naja auch egal.