![]() |
![]() |
Startseite News   NDR-NKC ![]() ![]() ![]() NKC Emulator Z80 Section ![]() ![]() ![]() 68000 Section ![]() ![]() ![]() ![]() ![]() 8088 Section ![]() ![]() Bussysteme Stromversorgung Input / Output Grafikkarten Speicherkarten Massenspeicher Weitere Baugruppen Projekte Dokumentation Datenblätter Glossar Portraits Links Impressum |
Baugruppe PARWELL CoprozessorEine erste Suche im Internet ergab nichts Verwertbares. An dieser Stelle muss ich mich für die Recherchen von Martin bedanken, der tatsächlich einiges gefunden und mir einen Ansatz für weitere Recherchen geliefert hat. Die heutzutage noch verfügbaren Informationen sind trotzdem leider sehr dürftig. Eine ähnliche Karte wurde für den Einsatz in einem IBM PC Computer entwickelt, links zur Beschreibung finden sich weiter unten. Inhaltsverzeichnis
EinsatzmöglichkeitenDie Baugruppe PARWELL ist ein kleiner eigenständiger Computer mit Prozessor, Speicher, Ports und Steuerelektronik, von denen mehrere als Coprozessor zum Einsatz kommen können. Zum Betrieb ist ein Hauptrechner (zum Beispiel CPU68K) notwendig, welcher eine oder mehrere der Coprozessor-Karten steuert. Die eingesetzten Coprozessoren können parallel zum Hauptrechner gleichzeitig Programme bzw. Teile von Programmen ausführen. Auf jeder PARWELL kommt ein Motorola MC 68000 mit einer Taktfrequenz von 12 MHz zum Einsatz. Es können bis zu 128 kByte RAM eingesetzt werden. Um die Rechenleistung der PARWELL sinnvoll nutzen zu können, sollten in einem System mehrere dieser Baugruppen eingesetzt werden. Das zu berechnende Problem muss sich gut in parallele Aufgaben teilen lassen, also in kleinere Unterprogramme mit möglichst gleichem Rechenaufwand. Datentransfers zwischen dem Hauptrechner und den Coprozessoren sollten auf ein Minimum reduzierbar sein, um den Zeitgewinn nicht durch große Datentransfers wieder aufzuheben. Mögliche Probleme sind zu Beispiel
Ursprünglich wurde PARWELL tatsächlich als Coprozessor zum Berechnen von Schach-Stellungen entwickelt. SystemaufbauZum Aufbau eines funktionsfähigen Systems zum Test und Einsatz der Coprozessoren ist nur ein Minimalsystem mit folgenden Komponenten notwendig.
Kommunikation mit PARWELLJede PARWELL wird über einen einzigen freien I/O Port des Hauptrechners gesteuert. Ohne Probleme lassen sich in einem NKC-System mindestens 64 freie Portadressen finden und entsprechend viele PARWELL gleichzeitig ansteuern. Auf jeder PARWELL lassen sich bis zu 128 kByte RAM einsetzen, der Speicher wird einzeln, gemeinsam oder in Gruppen in freie Speicherbereiche des Hauptrechners eingeblendet. Über 8 Jumper wird die Portadresse der PARWELL eingestellt, alle PARWELL müssen auf unterschiedliche Adressen eingestellt werden. Es bietet sich an, die Adressen 0x00 bis 0x3F zu verwenden, je nach Anzahl der verfügbaren PARWELL. Fortlaufende Portadressen vereinfachen die Verwaltung im Hauptprogramm der steuernden CPU. Beim Setzen des Ports durch den Hauptrechner werden nur die Bits 0 und 1 verwendet, dadurch ergeben sich 4 Betriebszustände. Bei gesetztem Bit 0 wird der Coprozessor auf RESET gehalten, bei zurückgesetztem Bit 0 führt der Coprozessor sein Programm aus. Bei gesetztem Bit 1 ist der Speicher des Coprozessors in den Hauptrechner eingeblendet und kann von dort gelesen und beschrieben werden. Ansonsten ist der Speicher ausgeblendet. Nach dem Einschalten sind beide Bits auf jeder PARWELL gesetzt, sodass alle Coprozessoren angehalten sind und alle Speicher parallel eingeblendet sind. Beim Lesen des Ports durch den Hauptrechner werden Statusinformationen zurückgegeben. Dazu kann das Programm auf der PARWELL diese Informationen über den internen Port 0xFF setzen. SpeicherzugriffAuf PARWELL kommen keine ROM-Bausteine zum Einsatz, auszuführende Programme werden vom Hauptprozessor in den RAM-Speicher auf der Baugruppe PARWELL übertragen. Innerhalb des Coprozessors ist der installierte Speicher immer ab Adresse 0x00000000 ansprechbar, die Adresse unter welcher der Speicher im Hauptrechner eingeblendet wird, ist über Jumper einstellbar. Solange der Speicher in den Hauptrechner eingeblendet ist (Bit 1 des Ports gesetzt), kann der Hauptrechner beliebige Daten und Programme an die PARWELL übertragen, indem der Speicherbereich beschrieben wird. Ist der Speicher mehrerer PARWELL gleichzeitig eingeblendet, so werden die Daten gleichzeitig an alle eingeblendeten Coprozessoren übertragen. Prinzipiell ist es auch möglich, verschiedene PARWELL mit unterschiedlichen Programmen zu versorgen. Beim Lesen aus dem eingeblendeten Speicherbereich darf nur eine der installierten PARWELL den Speicher eingeblendet haben. Auf diese Weise lassen sich auch größere Ergebnismengen aus den Coprozessoren lesen. Fotos der PARWELL BaugruppeFoto von der Bestückungsseite: Sehr prominent der MC 68000 in der Keramik-Version am oberen Rand der Platine. Links oben ein Jumper zur Auswahl der eingesetzten RAM-Bausteine, rechts 8 Jumper zum Setzen der Adresse des Ports und 2 Gruppen mit 4 Jumpern zum Einstellen der Basisadresse des Speichers.Prinzipien der ProgrammierungUm die Baugruppe PARWELL nutzen zu können, sind grundsätzlich 2 Programmteile notwendig: - Hauptprogramm zur Steuerung der Coprozessoren - Programm zur Lösung von Teilaufgaben durch die Coprozessoren Das Hauptprogramm / SteuerungsprogrammZusätzlich zu den allgemeinen Aufgaben (Tastaturabfrage, Bildschirmausgabe, usw.) hat das Hauptprogramm mehrere Sachen zu erledigen, die sich in folgende Gruppen aufteilen. Die Initialisierung sollte sich einfach in jedes bestehende Programm integrieren lassen. Initialisierung der Coprozessoren- Anhalten aller Coprozessoren und Einblenden der Speicherbereiche dazu alle Ports der betroffenen PARWELL auf 0x03 setzen - Kopieren des Programmcodes zu allen Coprozessoren vom ROM des Hauptprozessors in den gemeinsamen Speicherbereich - Ausblenden aller PARWELL-Speicherbereiche, RESET beibehalten dazu alle Ports der betroffenen Coprozessoren auf 0x01 setzenTeilprobleme ermitteln Ob ein zu lösendes Problem parallelisierbar ist, lässt sich nicht verallgemeinern. Jedes Problem, welches sich aus vielen gleichen komplexen Rechenschritten zusammensetzt, sollte parallelisierbar sein. Beispiele wurden weiter oben genannt. - Zerlegung des Gesamtproblems in Teilaufgaben zum Beispiel einzelne Schachstellungen, Spalten eines Fractals, ... - Aufbau eines Arrays der Teilaufgaben (offen, aktiv, fertig) korrespondierend zu der Anzahl der TeilaufgabenVerteilung und Auswertung der Teilaufgaben Hier liegen die größten Fallstricke: Um vorhandene Coprozessoren nicht ohne Arbeit warten zu lassen, sollten Ergebnisse der vorangegangenen Berechnungen verarbeitet werden können, während der Coprozessor sich schon mit der nächsten Aufgabe beschäftigt. Dazu bieten sich alternierende Ergebnisbereiche an. - Array testen, ob noch offene Teilaufgaben zu berechnen sind falls keine weiteren offenen Aufgaben verfügbar, Hauptprogramm beenden sonst - In einer Schleife Ports aller Coprozessoren testen 0x00 bedeutet, dass der Coprozessor frei ist - Speicher dieser PARWELL einblenden, RESET senden 0x03 an diesen Coprozessor Port senden - Parameter nicht berechneter Teilaufgaben übertragen - Speicher ausblenden, Berechnung starten 0x00 an diesen Coprozessor senden - 0xFF bedeutet, dass die Teilaufgabe berechnet wurde - Speicher dieser PARWELL einblenden, RESET senden 0x03 an diesen Coprozessor senden - Ergebnisse lesen und verarbeiten zum Beispiel Grafikausgabe oder Schachzug verwerfen - Speicher wieder ausblenden, RESET beibehalten 0x02 an diesen Coprozessor senden UnterprogrammDas Programm für die Coprozessoren muss eigenständig lauffähig sein und für den Ablauf ab Adresse 0x00000000 übersetzt werden. Es muss folgende Punkte erfüllen: - Initialisierung des Stackpointers und Festlegung der Startadresse - Zurücksetzen des Status-Ports 0x00 an Port 0xFF schreiben - Lesen der Parameter für das Teilproblem - Berechnung des Ergebnisses - Setzen des Status-Ports, wenn die Teilaufgabe berechnet wurde 0xFF an den Port 0xFF schreiben - Endlosschleife zum Warten auf eine neue Teilaufgabe PARWELL für IBM-PCFür eine ähnliche Steckkarte zum Einsatz auf einem IBM-PC sind dank Martin komplette Unterlagen verfügbar. Wegen der unterschiedlichen Architektur des PC im Gegensatz zum NKC ergeben sich Abweichungen, die eine Fehleranalyse nicht gerade einfacher machen. DokumentationIm ersten Teil der Beschreibung aus der Zeitschrift MC vom Juli 1989 wird die Hardware der PC-Steckkarte und der Systemaufbau beschrieben. Es ist ein kompletter Schaltplan enthalten.Der zweite Teil vom August 1989 beschäftigt sich mit der Software und der Programmierung unter PASCAL und C. Den Abschluss bildet ein komplette 3D-CAD Programm unter PASCAL, welches den Coprozessor zu 3D-Transformation nutzt.
Theorie und PraxisDa die Karte in gutem Zustand war und Dank Martin weitere Infos verfügbar wurden, habe ich sie erst mal auf meinem Testsystem mit minimaler Bestückung ausprobiert. Gesichert funktionierende Baugruppen CPU68K, ROA64 mit dem Grundprogramm 4.3 und 8 kByte statischem RAM, KEY und GDP64K dienten als Basis-System. Wenn die PARWELL auch nur ähnlich funktioniert wie die Beschreibung der PC-Steckkarte, dann muss irgend etwas defekt sein.
Daher gehe ich davon aus, dass mehrere integrierte Schaltkreise defekt sind. Ohne einen korrekten Schaltplan für meine spezifische Karte wird die Fehlersuche ziemlich kompliziert. Aufruf zur MitwirkungFalls jemand zufällig weitere Informationen findet oder zum Beispiel Dokumentation zur PARWELL für den NKC besitzt, möge er sich bitte bei mir melden. Besonders interessiert bin ich an Originalunterlagen wie zum Beispiel Schaltplan und Aufbauanleitung oder auch Hinweise auf frühere Bezugsquellen und Preise. |