Julia: 2 Prozessoren mit gleicher ISA

Hallo Forum,

ich habe eigentlich eine Verständnisfrage, aber kam bei uns auch in einer Klausur vor.

Zwei Prozessoren implementieren dieselbe ISA. Haben sie bei der Ausführung des Programms:

a) garantiert denselben Durchsatz b) garantiert dieselbe Latenz c) garantiert dasselbe Ergebnis, wenn sie nicht auf externe Datenquellen zugreifen

Und wie ändert sich die Antwort, wenn wir eine Zusatzbedingung haben, dass beide Prozessoren gleiche Taktfrequenz haben?

Ich hätte erstmal gesagt, dass nichts davon garantiert werden kann. Oder doch c)? Kann mir vielleicht jemand helfen?

Schönen Dank im Voraus!

Julia

  1. Hallo Julia,

    ich nehme an, du meinst diese ISA und nicht diese.

    Der Instruktionssatz ist - wie es die engl. Wikipedia so schön formuliert - „an abstract model of a computer“. Es ist/war also durchaus möglich, Prozessoren mit gleichem Instruktionssatz von bspw. Intel, AMD, Cyrix, NexGen oder Transmeta zu bekommen. Nur zwei davon gibt's heute noch, aber alle haben "Intel-kompatible" Prozessoren gebaut.

    Genauso gut ist es möglich, dass ein Stück Software auf Prozessor X so tut, als sei es ein Prozessor Y, und die Instruktionsbytes eines für Y geschriebenen Programms interpretiert. Auf meinem PC habe ich Emulatoren für den Commodore Amiga und den Atari 800. Die emulieren außer der ISA des 68000 bzw. 6502 Prozessors auch noch die Hardware-Schnittstellen der alten Kisten. Die meisten Programme laufen, und die meisten laufen viel zu schnell =:)

    Insofern ist die Frage nach Durchsatz und Latenz mit einem klaren Nein zu beantworten. Selbst bei gleichem Takt. Die Unterschiede entstehen aus der konkreten Realisierung der ISA. Ich kann bspw. eine Multiplikation mittels eines Microcodes realisieren, der eine schriftliche Multiplikation auf Binärebene implementiert (addieren - schieben - addieren - schieben - etc), oder ich kann ein paar 1000 Transistoren hineinwerfen und eine 32-bit Multiplikation als zweistufige Logik-Schaltung hinklotzen. Die eine braucht 100 Takte oder mehr, die andere einen.

    Die Frage nach dem garantierten Ergebnis ist schwieriger. Die Annahme ist ja, dass die Prozessoren die ISA streng nach Spezifikation implementieren und die Spec hinreichend exakt und vollständig ist. Wenn die Spec beispielsweise nicht exakt festlegt, wie bei Fließkommaoperationen zu runden ist, so dass die Hersteller hier Gestaltungsspielraum haben, können sich Abweichungen einschleichen. Wenn die Spec sagt, dass Fließkommawerte im IEEE-double Format vorzuliegen haben, und es eine ADDMUL Operation gibt, die das Produkt zweier Fließkommawerte auf einen dritten aufaddiert, dann kann es sein dass der eine Prozessor ein 64-bittiges Rechenwerk implementiert und das Multiplikationsergebnis erst rundet und dann aufaddiert, während ein anderer Prozessor ein 80-bittiges Rechenwerk hat und erst nach der Addition rundet. Damit sind dann recht schnell Abweichungen zu erwarten.

    Abgesehen von solchen Spielräumen würde ich in einer Single-Thread Anwendung annehmen, dass das Ergebnis das Gleiche ist (eine Abfrage des Systemtimers, die zu Unterschieden führen kann, würde ich schon als externe Datenquelle sehen). Wenn das ausgeführte Programm Dinge tut, die von der ISA Spec nicht abgedeckt sind, sieht die Sache natürlich anders aus. Angenommen, eine ISA definiert ein Error-Statusbit, das gesetzt wird wenn man durch 0 dividiert. Über den Wert der Ergebnisregister sagt die Spec nichts. Ein Programmierer, der "ausprobiert", was nach Division durch 0 im Ergebnisregister steht und diesen Wert abfragt (z.B. NaN), statt das Statusbit zu prüfen, verlässt die Spec und fliegt auf einer anderen Implementierung ggf. aus der Kurve. Natürlich ist das eine unzureichende Spec. Aber über deren Güte sagt die Aufgabenstellung ja nichts aus...

    In dem Moment, wo die ISA Multithreading erlaubt und das ausgeführte Programm in mehreren schlecht synchronisierten Threads unterwegs ist, ist gar nichts mehr garantiert. Da kann unterschiedliches Timing zu unterschiedlicher Abstimmung der Threads führen und damit zu Race Conditions, die ein garantiert gleiches Ergebnis verhindern.

    Rolf

    --
    sumpsi - posui - clusi
    1. Hallo Rolf,

      vielen Dank für Deine sehr hilfreiche Amtwort! Jetzt weiß ich nicht nur die Antwort auf die Frage, sondern auch das "Warum" :-)

      Noch mal danke und viele Grüße

      Julia