Hadmut Danisch

Ansichten eines Informatikers

The astonishing PicoPuter

Hadmut
8.5.2022 22:53

Nein. Nicht das sehr klein geratene Männchen der Pute.

PicoPuter.

Es geht um Softwarearchäologie.

Ein Leser hat sich erinnert, dass ich als Hiwi und als Diplomarbeit Transputer programmiert habe. Das war Anfang der 90er ein Hype, weil man damit kleine, kompakte Prozessoren mit etwas eingebautem Speicher alleine oder mit etwas RAM dran betreiben und über vier eingebaute schnelle serielle Schnittstellen miteinander kommunizieren lassen konnte. Die konnten auch über die Schnittstelle das Programm laden, brauchten also kein ROM oder ähnliches. War eine tolle Zeit, und mit der zugehörigen Sprache OCCAM habe ich bezüglich Parallelisierung viel gelernt, auch wenn solche Dinge wie Rekursion damit nicht möglich waren, weil Prozeduren sich niemals selbst aufrufen konnten, auch nicht indirekt. Jede Prozedur konnte exakt angeben, wieviel Stack sie maximal belegt, womit der Compiler schon während der Kompilationszeit prüfen und sicherstellen konnte, dass das Programm auf Transputern einer gegebenen Speichergröße lauffähig ist und eine statische Speichereinteilung vornehmen konnte. Grundsätzlich eine primitive Sprache, aber eben eine Sprache mit eingebauter Parallelisierung und Kommunikation mit anderen Prozessoren.

Ich hatte damals verschiedene Rechenprobleme damit bearbeitet, Radon-Transformation und sowas. Viel Aaaah und Ooooh habe ich aber nur für das bekommen, was ich eigentlich erst mal nur zum Lernen und Testen als erstes ernsthaftes Programm gschrieben hatte: Apfelmännchen rechnen, weil trivial zu parallelisieren. Damals waren die gerade groß in Mode, aber eine Sun rechnete schon sehr, sehr lange, um ihren tollen Farbbildschirm voll zu kriegen. Und mit den Transputern konnte man bei den meisten anfänglichen Rechentiefen gerade noch gut sehen, wie sich das Bild aufbaut, so schnell waren die im Vergleich zur Sun.

Letztlich ist die Technik aber schon lange tot. War toll zum Lernen und zur Fortentwicklung der Informatik, aber zu teuer und nicht stark genug, um dann noch mit den x86-Prozessoren usw. mitzuhalten. Prozessoren mit mehreren Kernen haben das Prinzip dann sowieso erledigt. Man konnte sie aber leider auch nicht gut beschleunigen, weil man dann Probleme mit der Abwärme bekommen hat, und der Hersteller die dann auch irgendwie nicht weiterentwickelt hat.

Leider, leider, leider habe ich meine alten Transputer-Programme auch nicht aufgehoben.

Ein Leser hat mich nämlich auf diesen famosen Artikel hingewiesen.

Wer es noch nicht weiß: Raspberry Pi (die Firma hinter selbigem Rechner) hat vor einiger Zeit als Konkurrenz zu Arduino, ESP32 usw. einen kleinen Microcontroller, einen Prozessor auf einem Platinchen mit allerlei Ein- und Ausgängen in der Preislage von 4 Euro herausgebracht. (Ich habe einen, aber einzeln mit Versand und so dann deutlich mehr als 4 Euro bezahlt.) Die haben dafür einen eigenen Prozessor, den RP2040, auf ARM-Basis entwickelt.

The Raspberry Pi Pico is a surprisingly capable device at $4 apiece, and one of its less well-known features is its eight programmable IO state-machines on board. As programmer-archaeologist Andrew Menadue wrote in a blog post:

While I was looking at the RP2040, it suddenly occurred to me that the four links on a transputer could be implemented using the eight PIO state machines on an RP2040. Each state machine handles data in one direction, leaving the processor(s) free for other work. What other work? Well, how about running an emulator of a transputer on the core?

Ich wusste gar nicht, dass auf dem Ding programmierbare State Machines mit drauf sind. Tolle Idee. Da fallen mir einige Ideen ein.

So he went and made it happen. One of each Pico’s 133MHz ARM Cortex M0+ cores runs a modified version of the T4 transputer emulator, and the PIO state machines run the os-link inter-processor communications channels, separately and without burdening the CPU.

These inter-chip channels were one of the key features of the revolutionary transputer processors, as The Reg mentioned when it profiled the device’s lead architect a decade ago. Transputers were used to build multiprocessor computers where each microprocessor had its own local memory, along with fast links to its four neighboring chips, which was suited for parallel processing. It was nifty for the 1980s.

Ist das geil. Die emulieren nicht nur den Prozessor, sondern über diese State Machines auch die vier Schnittstellen der Transputer, und zwar voll kompatibel:

One of many remarkable elements of his setup is that he used original Inmos IMSC011 silicon to connect the transputer links to a PC via an Arduino, and he’s also demonstrated his interface talking equally well to original transputer hardware.

Scharf.