Kooprocesszort az ENTERPRISE-ba!
Mint mindannyian tudjuk, az ENTERPRISE mindent elsöprően kitűnő számítógép. Van azonban néhány, magáról megfeledkezett géptársunk (Mandelbrot-ábrákat szeretnek kirajzolni), akik azt a kijelentést engedik meg maguknak, hogy az EP lassú! Ami, ha magunkba nézünk igaz.
A gondok enyhítésére (megoldásról aligha beszélhetünk, mert nincs gyors gép, csak keveset tud a program) Ari Sándor műhelyében született egy koprocesszor-kártya, amelynek a buszkiterjesztő egységhez átigazított változatát ismertetem az alábbiakban.
A kártya "szíve" az Advanced Micro Devices AM9511 aritmetikai processzora (Intel megfelelője a 8231A). Ez egy olyan speciális áramkör, amely csak bizonyos számolási műveleteket (pl. gyökvonás, szögfüggvények számítása) képes elvégezni, azokat azonban sokkal gyorsabban, mint az általános célú mikroprocesszorok.
A szóbanforgó aritmetikai processzor (APU) háromféle: 16 bites fixpontos, 32 bites fixpontos, és 32 bites lebegőpontos számmal dolgozhat. Az ábrázolható lebegőpontos számtartomány a +/-(2.7*1020 ... 9.2*1018 ) és persze a 0.
Az adatregiszterek veremszervezésűek (stack). Egyetlen bejáratuk van, amelyből az utoljára beírt adat olvasható ki először. A verem mérete 16 bájt, nyolc 16 bites, vagy négy 32 bites szám fér bele, amelyeken a FORTH nyelvhez hasonló módon végezhetünk műveleteket.
Az APU működési módja a következő:
- Beírjuk az adatokat az adatregiszterekbe,
- beírjuk az elvégezni kívánt művelet kódját (pl. sin(x)-re 02h) a parancsregiszterbe,
- megvárjuk, amíg az APU elkészül,
- kiolvassuk a művelet eredményét az adatregiszterekből. (A királyi többes itt az általunk, vagy más által (bár az nem olyan jó) írt programot jelenti, amelyet természetesen a főprocesszor, azaz a Z80 hajt végre.)
Lássuk a kártyát! Az APU (U1) adatbuszát U3 illeszti a Z80 adatbuszához. U2 választja ki a megfelelő I/O címeket. Itt is kis ráhagyással dolgoztam (az APU 4 címen látszik egyszerre), de ezáltal az áramkör egyetlen IC-re redukálódott. 50h az adatport címe, 51h pedig a parancsporté. U4 két része állítja elő a kétféle órajelet az AM9511DC (2 MHz), vagy az AM9511-4DC (4 MHz) számára, amelyek közül a JP1-gyel választhatjuk ki a megfelelőt.
U5C a reset-jelet állítja elő az APU számára. U5A és U5B köti össze az APU READY kimenetét a Z80 -WAIT bemenetével. Ezzel a megoldással az APU "megállítja" a Z80-at a számítások időtartamára, így nem kell a programból figyelni státuszbitek nézegetésével, hogy elkészült-é már pl. a gyökvonás. Ha azonban még haladóbbak vagyunk, megtehetjük, hogy párhuzamos működésre vesszük rá a két processzort, és amíg az APU számol, a Z80 pl. képernyőt rajzol. Ehhez JP2-t bontanunk kell (valamint rengeteget és nagyon ügyesen programoznunk!). Ilyenkor az ún. állapotszó - amelyet a parancsport olvasásával kaphatunk meg - 7. bitje mutatja, ha az APU még dolgozik. (A fiam bejön a szobámba, megnézi a 7. bitemet, és máris látja, hogy dolgozom-e, avagy sem.)
A végére maradt a tápfeszültségeket előállító áramkör. Az AM9511 élemedett kora azon is látszik, hogy szerencsétlen a +5 volt mellett még +12 voltot is óhajt a működéséhez. Na, ezt állítja elő a bal alsó sarokban látható T1-T4, D1-D4, U7 komplexum. U6 pedig a már megszokott 5 voltos stabilizátor, némi hidegítő kondenzátorral ellátva.
Most már majdnem mindent tudunk, csak az furdalhatja a tisztelt olvasó oldalát, hogy vajh mennyivel lesz gyorsabb a gépe, ha beszerez egy ilyen kártyát? Ari Sándor összeállított egy táblázatot néhány egyoperandusos lebegőpontos műveletre. A számok 10000 művelet idejét jelentik másodpercben.
művelet |
APU |
BASIC |
APU/BASIC |
SIN |
24 |
592 |
24 |
COS |
24 |
842 |
35 |
TG |
31 |
1704 |
54 |
SQRT |
7 |
1569 |
224 (!) |
ASIN |
39 |
2600 |
66 |
ATAN |
32 |
860 |
27 |
LOG |
28 |
1390 |
49 |
EXP |
28 |
930 |
33 |
Az átlag 64-szeres sebességszorzó (az APU javára).
Végül, akit bővebben érdekel az APU programozása, az Intel Component Data Catalog 1982 című kiadványból tájékozódhat, a 8231A címszó alatt. (Angol nyelvű AM9511A/9512 dokumentáció)
Mészáros Gyula
Enterpress III. évfolyam 4. szám 1992 július-augusztus