Ist der 6502 RISC oder CISC? [OT aus: Was, wenn Commodore nie pleite gegangen ...]

Es gibt 48 Antworten in diesem Thema, welches 9.069 mal aufgerufen wurde. Der letzte Beitrag (21. Juli 2019 um 19:44) ist von RalphE.

  • RISC zeichnet sich, unter anderem, dadurch aius, das jeder befehl gleich lang ist und jeder befehl gleich viele takte benötigt (muss nicht UMBEDINGT ein Takt sein!)
    Dadurch lässt sich wesentlich einfacher pipelining implementieren.......
    Und Risc zeichnet sich durch viele allgemeine Register aus .... (für damalige verhaeltnisse ..)

    Und der 6502 hat kein Merkmal davon.

    ink 0,26,0
    ink 1,0,26
    speed ink 1,1
    eine einfache 3d Schrift mit dem passendem Computer :drunk:

    Bitte melde dich an, um diesen Link zu sehen.

  • Dieses Merkmal schliesst den ARM1 aus der RISC-Kategorie aus - LDM/STM brauchen mehr als einen Taktzyklus.

    Es könnten auch 2 Taktzyklen sein, auf jeden Fall alle Befehle gleiche Zahl Taktzyklen im sehr niedrigen einstelligen Bereich. :)

    Manchmal wird es als PLA bezeichnet, manchmal als Decode-ROM.

    Das ist das was ich mit dem Vergleichen von Bitmustern meinte. Das Ding wird aber von einem Automaten gesteuert und all das zusammen ist der Befehlsdecoder.

    "Doppelter Takt" war die ALU im Pentium 4

    Nicht nur. Der Microcode-Befehlsdecoder in den Core-Prozessoren (also bis heute) auch.

    Mal hier, mal da, mal dort. Aber auf jeden Fall auf der Bitte melde dich an, um diesen Link zu sehen.! Und hier Bitte melde dich an, um diesen Link zu sehen.!

  • Es könnten auch 2 Taktzyklen sein, auf jeden Fall alle Befehle gleiche Zahl Taktzyklen im sehr niedrigen einstelligen Bereich. :)


    Aber das ist ja eben nicht erfüllt. Es sind nur meistens 1 Taktzyklus pro Befehl, aber manchmal eben auch 2.


  • Es könnten auch 2 Taktzyklen sein, auf jeden Fall alle Befehle gleiche Zahl Taktzyklen im sehr niedrigen einstelligen Bereich. :)


    LDM und STM brauchen einen Takt pro Register, welches geladen bzw. gespeichert werden soll. Die Auswahl der betroffenen Register erfolgt über ein Bitfeld im Opcode, die Befehle haben also eine variable Ausführungszeit. Man könnte sie auch durch eine Reihe von Einzel-Load/Store-Befehlen ersetzen.

    Zitat

    Das ist das was ich mit dem Vergleichen von Bitmustern meinte. Das Ding wird aber von einem Automaten gesteuert und all das zusammen ist der Befehlsdecoder.


    Die PLA des 6502 ist zentraler Bestandteil dieses Automaten.

    Zitat

    Nicht nur. Der Microcode-Befehlsdecoder in den Core-Prozessoren (also bis heute) auch.


    Muss mir bisher entgangen sein, hast du mal eine Quelle mit mehr Details dafür?

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Ein wichtiges Merkmal von RISC ist auch, dass alle Befehle gleich lang sind. Bei MIPS ist das auch so, zumindest soweit ich die Befehle kenne. Und bei Sparc auch. Beim ARM wird's schon wieder schwammig, gilt aber auch noch weitestgehend.
    Beim 6502 ist das nicht der Fall, also auch hier -> CISC

  • Ein wichtiges Merkmal von RISC ist auch, dass alle Befehle gleich lang sind. Bei MIPS ist das auch so, zumindest soweit ich die Befehle kenne.

    Mit MIPS16e wurde ein Modus mit 16-Bit-Befehlen hinzugefügt (ähnlich wie Thumb bei ARM), mit microMIPS wurde dann noch die Möglichkeit zur Mischung von 16- und 32-Bit-Befehlen ergänzt um sowohl kompakten als auch performanten Code hinzubekommen (ein wenig mit Thumb2 vergleichbar). Das sehe ich allerdings nicht als RISC-Ausschlusskriterium an.

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Dann wäre der AVR ja auch kein RISC aber das ist er. Zitat: Ein Vorteil gegenüber anderen Mikroprozessor-Familien ist, dass sich dank der RISC-Architektur die meistenRegister-Befehle innerhalb eines Systemtakts abarbeiten lassen, ausgenommen Sprung- und Multiplikationsbefehle sowie Zugriffe auf das Speicherinterface (u. a.RAM und I/O-Ports). Somit ist diese Architektur sehr schnell im Vergleich zu anderen.

  • Bevor man sich nun in sinnlosen Diskussionen verliert ob der 6502 CISC oder RISC ist, sollte man zunächst eine sinnlose Diskussion darüber führen, ob nun RISC besser ist oder CISC.
    Ansonsten hat das doch alles keinen Sinn.

  • Ich schlage als Kompromiss BRISK vor, das ist geschmeidiger als CISC aber pomadiger als RISC :prof:

  • Ich bin Computerassi. Aus den Achtzigern. Es kann nur einen geben. Schwarz oder Weiss. Punkt.

  • Bevor man sich nun in sinnlosen Diskussionen verliert ob der 6502 CISC oder RISC ist, sollte man zunächst eine sinnlose Diskussion darüber führen, ob nun RISC besser ist oder CISC.
    Ansonsten hat das doch alles keinen Sinn.


    Das kommt drauf an, was man tun will. Aber in den meisten Systemen ist der Speicherdurchsatz der Flaschenhals, also ist ein Befehlssatz, der in möglichst wenigen Bytes möglichst viel tun kann dort eben besser.

  • CISC: Viele Maschinenbefehle, die überwiegend nicht innerhalb eines Taktzyclusses ausgeführt werden. Das ist auch beim 6502 so, die 1Takt-Befehle kann man wahrscheinlich an einer Hand ablesen, z.B. NOP


    Auch ein NOP (No Operation) braucht schon 2 Taktzyklen :)


    Der 6502 gehört ja zu den ältesten CPUs überhaupt, nur wenn man die Bekannteren von damals nimmt: 4004, 8080, 8085, Z80, 6800, 6502. (...) Man kann aber all diese CPUs nicht als RISC ansehen, nur wieil sie maximal 256 verschiedene Befehle kennen, das ist einfach durch die 8-Bit-Architektur gegeben.


    Ein Z80 hat Bitte melde dich an, um diesen Link zu sehen.

  • Unabhängig davon, wie man RISC genau definiert, so ist der 6502 nun doch ein ganz anderes Dingen als die Prozessoren, die seinerzeit explizit die RISC-Schiene begründeten:

    - variable Befehlslänge, wo puritanische RISC-Designs eine feste Befehlslänge haben. (*)
    - Operationen auf Speicher, wo RISC klassischerweise reine load/store-Architekturen sind (also bei denen nur in Registern gerechnet werden kann)
    - eher spezialisierte Register, wohingegen RISC normalerweise in der Tendenz eher nennenswert viele general-purpose Register vorsieht. Die Akkumulator-Architektur des 6502 ist gänzlich untypisch für RISC.
    - kein festes Kriterium, aber verwandt: Der 6502 ist nicht gepipelined (nicht skalar), schiebt also nicht schon im nächsten Takt den nächsten Befehl nach (auch wenn der 6502 pro Takt schon relativ viel Zeugs tut). Die frühen RISC-Chips waren allesamt gepipelined. Das ist aber kein hartes Kriterium, schließlich *könnte* man den 6502-Befehlssatz auch in einer Pipeline abarbeiten (es gibt sogar 8051-Implementierungen mit Pipeline) - und ich selbst habe schon einen minimalen RISC-V Prozessor entwickelt, der mehrere Takte pro Befehl braucht. Der MIPS-Befehlssatz ist aber ursprünglich stark mit der fünfstufigen Pipeline verwachsen, was man an den Branch Delay Slots erkennen kann.

    Worin sich 6502 und RISC ähneln: "Viel mit wenig erreichen". Das war es aber auch schon.

    Die RISC vs. CISC Diskussion ist übrigens entschieden: Jeder hat gewonnen, weil man gegenseitig lustig Konzepte "klaut".

    (*) wobei bei ARM und MIPS *nachträglich* noch 16-Bit Opcodes eingeführt wurden.

  • Ich denke "Pipelining" bezieht sich im heute gängigen Sinn auf Befehls-Pipelining, also dass der Prozessor verschiedene Teilaufgaben für mehrere Befehle gleichzeitig erledigt. Der 6502 erledigt zwar vergleichsweise viele Teilaufgaben in einem Takt (z.B. verglichen mit dem Z80), aber natürlich nur für einen Befehl. Das ist nicht die Art von Pipelining, mit denen die ersten RISC-Vertreter angetreten sind.

  • Doch, das tut der 6502, schau dir an wie ein LDA #$00 ausgeführt wird. Eigentlich braucht das 3 Zyklen, aber der letzte davon überlappt mit dem Laden des nächsten Befehls.

  • Zumindet wurd der RISC-Klassiker ARM auf einem 6502 entwickelt.
    Soweit ich weiss sogar in BASIC :wink:

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • Doch, das tut der 6502, schau dir an wie ein LDA #$00 ausgeführt wird. Eigentlich braucht das 3 Zyklen, aber der letzte davon überlappt mit dem Laden des nächsten Befehls.

    Okay, dann hat man tatsächlich eine Anmutung von Pipelining. Klar, das ist noch nicht "richtiges" Pipelining (wo bei jedem Takt jede Stufe auf einer Instruktion herumkaut - wenn die Pipeline nicht gerade stallt) - aber deshalb sagst Du ja auch "rudimentär".

  • MIPS wird ja gerne als das ganz klassische Beispiel für einen RISC-Prozessor herangezogen. Wäre eine MIPS-Implementierung, die Mikrocode verwendet, auf einmal ein CISC-Prozessor, obwohl der Befehlssatz beider Implementierungen identisch ist?

    Ja, weil der Prozessor intern ganz anders funktioniert... das Zusammenkürzen/Trimmen des Mikrocodes macht für mich aus einem CISC kein RISC.

    Wissen ist das einzige Gut, das sich beim Teilen vermehrt. Also seid vorsichtig damit!

  • Zumindet wurd der RISC-Klassiker ARM auf einem 6502 entwickelt.
    Soweit ich weiss sogar in BASIC :wink:

    Ja, vermutlich von.... bin schon weg :wink:

    Gruß, Gerd

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.