FPS AP-120B

A Wikipédiából, a szabad enciklopédiából

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.[1][2] 1976-tól kezdve forgalmazták, és 1985-ig körülbelül 4400 darabot adtak el belőle.[3] 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[szerkesztés]

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.[4]

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.[5] 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[szerkesztés]

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[szerkesztés]

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 1,3 kilowatt. Az elektronika a dobozban 15 × 10 inch (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.[6]

Tipikus programozási stílus[szerkesztés]

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[szerkesztés]

Az AP-120B processzor különböző mini- és közepes gépekhez volt csatlakoztatható (IBM–370, PDP–11,[2] Prime 750,[7] Data General NOVA/Eclipse, Raytheon R704/RDS-500, Texas Instruments TI-980, Varian 620,[8] Gould/SEL[9] 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ó[10] rendszerekben használták alacsony költségű gazdaságos bővítményként.

Jegyzetek[szerkesztés]

  1. Charlesworth, Alan A. (Floating Point Systems, Inc.) (1981. szeptember). „An Approach to Scientific Array Processing: The Architectural Design of the AP-120B/FPS-164 Family” (angol nyelven) (pdf). Computer 14 (9), 18-27. o, Kiadó: IEEE. DOI:10.1109/C-M.1981.220595. ISSN 0018-9162. (Hozzáférés: 2015. augusztus 29.)  
  2. a b Charlesworth, Alan A.: An Approach to Scientific Array Processing: The Architectural Design of the AP-120B/FPS-164 Family (angol nyelven) (pdf) pp. 18-27. Computer, IEEE, 1981. szeptember 1.
  3. R. W. Hockney, C. R. Jesshope. 2.5 The FPS AP-120B and derivatives, Parallel Computers 2: Architecture, Programming and Algorithms, 2. kötet, 2 (angol nyelven), Bristol, UK: CRC Press, 206-. o.. isbn 978-0852748114, isbn 0852748116 (1988. január 1.) 
  4. R. W. Hockney, C. R. Jesshope. 2.5.2 Architecture, Parallel Computers 2: Architecture, Programming and Algorithms, 2. kötet, 210. o. 
  5. R. W. Hockney, C. R. Jesshope. 2.5.2 Architecture, Parallel Computers 2: Architecture, Programming and Algorithms, 2. kötet, 212. o. 
  6. R. W. Hockney, C. R. Jesshope. 2.5.1 FPS AP-120B, Parallel Computers 2: Architecture, Programming and Algorithms, 2. kötet, 207-209. o. 
  7. Strohkorb, G. A., Noor, A. K.: Potential of minicomputer/array-processor system for nonlinear finite-element analysis (angol nyelven) (pdf) pp. 11/76. NASA, 1983. június 1.
  8. AP-120B Array Transform Processor / Processor Handbook (angol nyelven) (pdf) pp. 75-94/128. Floating Point Systems, Inc.; Bitsavers, 1976. május 1. „Section 5. Particular host interfaces”
  9. Floating Point Systems AP-120B Array Processor (angol nyelven). The Vintage Computer Forums - Genres - Minis and Mainframes. The Vintage Computer. [2016. március 5-i dátummal az eredetiből archiválva]. (Hozzáférés: 2015. szeptember 12.)
  10. Stephen M. Rainbolt ; John Hines: SPRINT-A High Speed Interactive Array Processing System (angol nyelven). SPIE DigitalLibrary, 1980. július 29. DOI:10.1117/12.959252.

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a FPS AP-120B című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Források[szerkesztés]

További információk[szerkesztés]

Kapcsolódó szócikkek[szerkesztés]