Az FPS AP-120B egy 38 bites, futószalagos működésű tömbprocesszor, amelyet úgy terveztek, hogy különböző gazdagépekhez (például a DEC PDP–11-eshez) illesztve gyors, nagy teljesítményű számítóegységként működjön. 1975-ben jelent meg, a Floating Point Systems cég tervezte és gyártotta. 1976-tól kezdve forgalmazták, és 1985-ig körülbelül 4400 darabot adtak el belőle. Az eszköz felépítését különféle jelfeldolgozó algoritmusokban előforduló műveletek – ilyenek a konvolúció, a gyors Fourier-transzformáció, lineáris egyenletrendszerek megoldása, mátrix- és vektorműveletek – elemzése alapján alakították ki, mivel a cél az ehhez hasonló algoritmusok és ezeken keresztül a kép- és jelfeldolgozó programok gyorsítása volt. A gyorsítás érdekélben további tervezési megoldásokat is alkalmaztak, az adatátvitelt DMA használatával valósították meg.
A processzor ciklusideje 167 nanoszekundum, ami 6 MHz-es órajelnek felel meg. Mivel képes ciklusonként két lebegőpontos eredményt előállítani, egyet az összeadóból és a másikat a szorzóegységből, a processzor elméleti teljesítménye 12 megaFLOPS.
Architektúra A processzor több szinkronizáltan és párhuzamosan működő feldolgozó egységből épül fel. Utasításszava 64 bites, amely mezőkre (csomagokra) van felosztva, ezek pedig a gép moduljainak szóló utasításokat tartalmaznak. Ez az utasításszó-felépítés a VLIW, azaz a nagyon hosszú utasításszót alkalmazó felépítésekben használatos utasításszerkezetre hasonlít, annak egyik előfutára. A gép moduljai a következők: 16 bites aritmetikai-logikai egység (ALU), 38 bites lebegőpontos összeadó (FADD, két fokozatú), 38 bites lebegőpontos szorzó (FMUL, három fokozatú), két „jegyzettömb”-regiszter, az adatok fogadására a memóriából.
Az egység többfajta saját memóriát is tartalmaz: programmemória: max. 4K 64 bites szó, ciklusideje 50 ns, 16 db 16 bites gyors átmeneti regiszter (scratch-pad, S-pad), a címek és indexek tárolására, táblamemória: max. 64K 38 bites szó, ciklusideje 167 ns, lehet csak olvasható és írható-olvasható; ez a memória a Fourier-transzformációban használt függvények, pl. szinusz és koszinusz, számításához használt táblázatokat és gyakran használt állandókat tartalmaz; 2 × 32 db 38 bites regisztertömb (data pad), ez a tár az átmeneti lebegőpontos eredmények tárolására szolgál, fő adatmemória, mérete 64K szó, egy szó 38 adatbit + 3 paritásbitből áll; 4 bites lapcímzéssel max. 1M szó méretűre bővíthető.
A processzor független 38 bites adatutakkal rendelkezik a két szorzó és két összeadó egységhez, amelyek a fő adatmemóriához, az adatregiszterekhez vagy a táblamemóriához kapcsolódhatnak. További három adatút szolgál a kimenetek kezelésére, amelyek visszacsatolhatják a két futószalag kimenetét a bemeneteikre, vagy az adatregiszterekhez és a főmemóriához kapcsolódhatnak. A több adatút lehetővé teszi minden egyes órajelciklus alatt egy operandus olvasását az adatregiszterekből és egy eredmény visszaírását az adatregiszterekbe.
A fő adatmemória 8K vagy 32K szó méretű blokkokból áll (fizikailag ezek nagyméretű, memória-IC-kkel szerelt kártyák), amelyek két független memóriablokkra vannak felosztva: az egyik bank a páros, a másik a páratlan című szavakat tartalmazza. Ez gyorsítja a tipikus szekvenciális memóriahozzáférést. A memóriahozzáférés ciklusideje 500 ns a normál memória esetén, és 333 ns az opcionális gyors memóriánál. Ha a memóriahozzáférések a normál memória esetén 3, a gyors memória esetén 2 órajelciklusonként következhetnek egymás után, azonban egy páros és egy páratlan című memóriahozzáférés (vagy két különböző bankra irányuló hozzáférés) közvetlenül egymás után állhat, így lehetséges ciklusonként egy adat elérése. Végeredményben az elérhető memóriahozzáférési ciklusidő a normál memória esetén 333 ns, a gyors memória esetén 167 ns. Foglalt memóriarekeszek elérésekor a processzor várakozik, amíg az adott címen lévő adat elérhetővé nem válik.
A lebegőpontos aritmetikai modulok többfokozatú processzorok, amelyeket közvetlenül nekik szóló explicit utasítások vezérelnek. A két fokozatú összeadóban egy assembler utasítás – pl. FADD DX, DY – betölti az adatokat a DX és DY jegyzettömb-regiszterből az összeadó első fokozatába. Egy rákövetkező FADD utasítás szükséges ahhoz, hogy a eredmény megjelenjen az összeadó kimenetén. Ez a második FADD lehet üres, argumentumok nélküli utasítás is, vagy lehet a soron következő számítási művelet. Az utasítások ilyen elrendezésével a FADD műveletek sorozata végrehajtható a futószalagon úgy, hogy minden utasításciklusban egy újabb eredmény képződik, és minden összeadás továbbra is két ciklust igényel.
A szorzóegység felépítése hasonló, az egy három fokozatú egység. A szorzási művelet elkezdéséhez egy FMUL DX, DY utasítást igényel, amelyet két újabb FMUL utasításnak kell követnie az eredmény előállításához. A futószalag gondos programozása lehetővé teszi ciklusonként egy eredmény előállítását, miközben mindegyik számítási művelet önmagában három ciklust vesz igénybe.
A maximális hatékonyság érdekében a számítások a hardverrel együtt járó assembler nyelven programozhatók.
Egy Fortran-változat is rendelkezésre állt a feladatok koordinálására valamint a gazdaszámítógép és a tömbprocesszor közötti adatátvitel vezérlésére.
Keresőtáblázatok A tipikus jelfeldolgozó alkalmazások támogatása céljából az eszközt előre számított szinusz és koszinusz értékeket tartalmazó beépített keresőtáblákkal látták el. A 0-tól a π/2 radiánig terjedő szögekhez tartozó szinusz és koszinusz értékek váltakozó címeken voltak tárolva, hogy a táblából való kiolvasás során a hardver képes legyen kihasználni a memória átlapolt elrendezéséből adódó gyorsítást. A többi szöghöz tartozó érték a jól ismert szabályok alkalmazásával számítható a keresőtáblázat értékeiből.
Fizikai jellemzők A tömbprocesszor egy különálló dobozban helyezkedik el, saját tápegységgel és hűtéssel. Súlya 160 font, azaz kb. 72 kg. Mérete megfelel a szabványos EIA 19 colos rack paramétereinek, ebben 29 inch magasságú helyet foglal. Fogyasztása . Az elektronika a dobozban (38,1 × 25,4 cm) méretű függőlegesen elhelyezett nyomtatott áramköri kártyákon helyezkedik el, a kártyák kihúzhatók.
Tipikus programozási stílus A gép programozása kissé szokatlan, mivel a programot szinkron párhuzamos feldolgozási architektúra hajtja végre. A gépnek szóló utasítássorozat három szakaszra osztható: adatfeltöltés – a futószalagot adatokkal feltöltő utasítások, fő számítási utasításhurok, a futószalagot kiürítő utasítások. Az alapvető programozási módszer a következőkben összegezhető: Írjuk fel a legrövidebb utasítássorozatot, amely elvégzi a kívánt számítás egy példányát, megengedve a kétciklusos memória-késleltetést, a lebegőpontos modulok meghajtását explicit FADD és FMUL utasításokkal vezérelve. Vizsgáljuk meg a sorozatot és határozzuk meg a számítást ismétlődő (repetitív) módon elvégző programhurkot (loop) és az azt alkotó utasítások minimális számát. Ennek során figyelni kell az erőforrás-ütközésekre. Például az eredmények mozgatására szolgáló adatsín csak egy adatszót mozgathat ciklusonként. Ebben a lépésben tipikusan több próbálkozásra van szükség. Helyezzük a teljes utasítássort egy ciklusba, amelyben a számításokat FADD és FMUL utasítások végzik a futószalagon. A ciklus kezdete előtt adjuk hozzá a párhuzamos folyamatkezdő utasításokat, ha szükséges. Az utolsó lépés a következőképpen valósul meg: tegyük fel, hogy az egész számítás 15 ciklust igényel, és a minimális programhurok hossza 5 ciklus. Az első 5 utasításszó megkezdi a számítás első iterációját. A második 5 szót tartalmazza mind az 1. iteráció, és a 2. iteráció eleje párhuzamosan. Ez általában az 1. iteráció elejét alkotó műveletek másolata. A következő 5 szó tartalmazza az 1. iteráció végső lépéseit, a 2. iteráció közepét, és a 3. iteráció elejét. Ez az öt szó alkotja annak a huroknak a törzsét, amely addig ismétlődik, amíg a kívánt számú adatelemet fel nem dolgozta.
Alkalmazása
Az AP-120B processzor különböző mini- és közepes gépekhez volt csatlakoztatható (IBM–370, PDP–11, Prime 750, Data General NOVA/Eclipse, Raytheon R704/RDS-500, Texas Instruments TI-980, Varian 620, Gould/SEL stb.), az adott géphez készült cserélhető interfészkártyán keresztül, mint egyfajta külső koprocesszor. Jellemzően diagnosztikai orvosi, csillagászati képalkotó/képfeldolgozó rendszerekben, avionikai és radar-adatfeldolgozó rendszerekben használták alacsony költségű gazdaságos bővítményként.
Jegyzetek
Fordítás
Források Parallel Computers Two: Architecture, Programming and Algorithms, by Roger W. Hockney, C. R. Jesshope. CRC Press, 1988, , Page 206 ff. Google Könyvek, id. mű, 206. o.
További információk – programozói kézikönyv, a Bitsavers archívumában
Kapcsolódó szócikkek Multiflow Trace (1987) Cydrome Cydra5 (1987)
Kategória:Mikroprocesszorok Kategória:Koprocesszorok Kategória:Párhuzamos számítástechnika