Eine solche Besonderheit des Propellers - die gegenüber allen anderen Prozessoren und Mikrocontrollern fehlenden Interrupts - möchte ich hier ein wenig zur Diskussion stellen. Wie kommt man ohne Interrupts aus? In den letzten Monaten habe ich im Internet oft Neugierige und Neulinge erlebt, die sich ob der fehlenden Interrupts gleich wieder abgewendet haben. Aber ist das richtig so, sind die fehlenden Unterbrechungsmöglichkeiten so eine große Behinderung?
Meine provokante These zum Thema: Interrupts sind ein Relikt der Computersteinzeit!

Anders der Propeller: Warum soll ich den Aufwand betreiben und einen einzelnen Prozessor in seiner Arbeit unterbrechen - mit allem damit zusammenhängenden Aufwand an Speicherplatz und Rechenzeit - wenn ich auch einen eigenen Prozessor verwenden kann, welcher sich ganz ausschließlich um diese Aufgabe kümmert? Und gerade durch diese Aufteilung der Arbeit auf wirklich real vorhandene Hardware ergibt sich eine sehr deterministische Reaktionszeit des Systems - ein wichtiger Punkt, wenn es um die Bedienung von zeitkitischer Hardware geht.
Ein oft gelesenes Argument gegen den Propeller: Ohne Interrupts muß man alles im Polling machen! Nun ja, dieser Vorwurf gilt nach meiner persönlichen Meinung nur, wenn man das Problem nur oberflächlich betrachtet.
Auch in einem System mit Interrupts gibt es immer eine Stelle an der letztlich Polling stattfindet. Nehmen wir als Beispiel ein Terminalprogramm, welches über eine serielle Schnitstelle kommuniziert. Sicher findet in einem klassischen System die zeitkritische Bedienung der Schnittstelle selbst per Interrupt statt. Aber das Hauptprogramm, welches die Zeichen dann auf dem Bildschirm darstellt, wird letztlich auch wieder nur per Polling genau jene von der Interruptroutine befüllten Puffer überwachen. Mir fällt keine Anwendung ein, wo es die Mischung von Polling und Interruptmechanismen letztlich nicht gibt. Und mir fällt auch keine Anwenung ein, wo eine klare und saubere Verteilung der Funktionen auf real vorhandene Hardware und Verzicht auf die Krücke "Interrupt" nicht nur Vorteile bringt. Was soll also diese Festhalten am "veralteten" Interruptsystem, mag man an dieser Stelle gleich fragen?
Ein anderer Punkt: Die Aufteilung der Funktionen im Hive. Getrennt muß man die Aufteilung der Funktionen auf drei getrennte Mikrocontroller im Hive betrachten. Es ist sicher sinnvoll zusammengehörige Funktionen quasi als Funktionskomplex zu betrachten und einen solchen Komplex nicht aufzutrennen, bzw. auf mehrere Chips zu verteilen. So ist es gut das sich alle Benutzerschnittstellen in Bellatrix befinden: im Extremfall kann so die gesamte Funktionalität einer Benutzeroberfläche in Bellatrix integriert werden. Die Daten von der Maus um zum Beispiel ein Menü zu bedienen, müßen Bellatrix überhaupt nicht verlassen. Erst die Information ob und welcher Menüpunkt angeklickt wurde muß übertragen werden, um die entsprechende Funktion auszuführen.
Also, wie sieht das mit euch und den Interrupts aus? Sehe ich die Sache so falsch, ist der Propeller und seine Struktur eine Sackgasse oder ein Repräsentant der zukünftigen Entwicklung?