Az AMD Am9511 Arithmetic Processing Unit (APU) egy AMD gyártmányú, korai 8 bites aritmetikai feldolgozóegység, amely az 1970-es évek második felétől volt a piacon. Az AMD Am9511 1977-ben mutatta be. A korabeli 8 bites mikroprocesszorok és mikrovezérlők szinte mindegyikéhez csatlakoztatható koprocesszorként, amelyekkel együttműködve megnöveli a numerikus feldolgozás teljesítményét.

Adatsíne 8 bites, szabványos 24 tűs tokozású csipként készült, +12 és +5 voltos tápfeszültséget igényel. Fejlett n-csatornás szilíciumkapus, monolitikus MOS LSI technológiával készült.[1] Órajelfrekvenciája a modelltől függően 2, 3, és (az „A” verzióban) 4 MHz lehetett.

A csip perifériaként lett megvalósítva, tehát a központi processzor kiad egy feladatot a csipnek, ami később egy külön szignállal jelzi, hogy elkészült és az eredmény készen áll az átvitelre; ezáltal a központi processzorral párhuzamosan működik.[1][2]

Két változata volt, az első az 1977-ben megjelent Am9511-es alapmodell, ennek maximális órajele 3 MHz lehetett, majd az 1979-ben bemutatott Am9511A jelű egység, amelyben a 4 MHz-es órajel mellett javítottak a szinkron/aszinkron átviteli rendszeren is. A sikeres koprocesszor-kialakítást az Intel is licencelte az AMD-től, és 8231 és 8231A jelöléssel gyártotta 1979-től.[2]

Az eszköz 16 és 32 bites fixpontos (integer) és 32 bites (egyszeres pontosságú) lebegőpontos adatokon képes műveleteket végezni; ezen a három típuson a négy alapműveletet (összeadás, kivonás, szorzás, osztás) és az előjelváltást, ezen felül képes a lebegőpontos adattípuson a négyzetgyökvonás, szinusz, koszinusz, tangens, ezek inverzei, természetes és tízes alapú logaritmus, exponenciális (ex) függvények és a hatványozás (lebegőpontos alappal és kitevővel) számítására. Rendelkezik adatkonverziós utasításokkal, valamint DMA és programozott I/O adatátviteli lehetőségekkel is.[1]

Az eszközt egy mikroprogramozott vezérőegység irányítja, amely a 8 bites kétirányú adatsínnel, a sínvezérlő és interfész vezérlővonalakkal csatlakozik a fő processzorhoz. Belsőleg az operandusokat egy 8 elemű veremben tárolja, a verem rekeszeinek mérete 16 bites, tehát egy rekesz egy egyszeres pontosságú fixpontos adatot tárol. A 32 bites adatok két rekeszt foglalnak el, tehát a veremben egyszerre pl. 4 lebegőpontos szám lehet. A számításokhoz az eszköz kívülről nem elérhető munkaregisztereket és állapotregisztert is felhasznál. ALU-ja és belső adatsíne 16 bites. A verem legfelső két eleme akkumulátorként szolgál a műveletek eredményének számára, az adattípustól függően.

Utasítások szerkesztés

Az eszköz minden utasítása 8 bites. Az utasításokban 5 bit (0-tól 4-ig) kódolja a műveletet, 2 bit jelzi a művelet adattípusát (5. bit: egész vagy lebegőpontos, 6. bit: egyszeres vagy kétszeres pontosság), a legmagasabb 7-ik bit pedig azt jelzi, hogy a parancs végrehajtása után ki kell-e adni szervizkérelmet, azaz kell-e jelezni a vezérlő processzornak.

Az Am9511 utasításai
Utasításkód Mnemonik Leírás
 7 6 5 4 3 2 1 0. bitek
Fixpontos 16 bites
  sr 1 1 0 1 1 0 0    SADD TOS hozzáadása NOS-hoz, eredmény a NOS-ba, pop stack.
  sr 1 1 0 1 1 0 1    SSUB TOS kivonása NOS-ból, eredmény a NOS-ba, pop stack.
  sr 1 1 0 1 1 1 0    SMUL NOS szorzása TOS-val. Eredmény alsó fele a NOS-ba, pop stack.
  sr 1 1 1 0 1 1 0    SMUU NOS szorzása TOS-val. Eredmény felső fele a NOS-ba, pop stack.
  sr 1 1 0 1 1 1 1    SDIV NOS osztása TOS-val, eredmény a NOS-ba, pop stack.
Fixpontos 32 bites
  sr 0 1 0 1 1 0 0    DADD TOS hozzáadása NOS-hoz, eredmény a NOS-ba, pop stack.
  sr 0 1 0 1 1 0 1    DSUB TOS kivonása NOS-ból, eredmény a NOS-ba, pop stack.
  sr 0 1 0 1 1 1 0    DMUL NOS szorzása TOS-val. Eredmény alsó fele a NOS-ba, pop stack.
  sr 0 1 1 0 1 1 0    DMUU NOS szorzása TOS-val. Eredmény felső fele a NOS-ba, pop stack.
  sr 0 1 0 1 1 1 1    DDIV NOS osztása TOS-val, eredmény a NOS-ba, pop stack.
Lebegőpontos 32 bites
  sr 0 0 1 0 0 0 0    FADD TOS hozzáadása NOS-hoz, eredmény a NOS-ba, pop stack.
  sr 0 0 1 0 0 0 1    FSUB TOS kivonása NOS-ból, eredmény a NOS-ba, pop stack.
  sr 0 0 1 0 0 1 0    FMUL NOS szorzása TOS-val, eredmény a NOS-ba, pop stack.
  sr 0 0 1 0 0 1 1    FDIV NOS osztása TOS-val, eredmény a NOS-ba, pop stack.
Származtatott lebegőpontos funkciók
  sr 0 0 0 0 0 0 1    SQRT TOS négyzetgyöke, eredmény a TOS-ba.
  sr 0 0 0 0 0 1 0    SIN TOS szinusza, eredmény a TOS-ba.
  sr 0 0 0 0 0 1 1    COS TOS koszinusza, eredmény a TOS-ba.
  sr 0 0 0 0 1 0 0    TAN TOS tangense, eredmény a TOS-ba.
  sr 0 0 0 0 1 0 1    ASIN TOS inverz szinusza, eredmény a TOS-ba.
  sr 0 0 0 0 1 1 0    ACOS TOS inverz koszinusza, eredmény a TOS-ba.
  sr 0 0 0 0 1 1 1    ATAN TOS inverz tangense, eredmény a TOS-ba.
  sr 0 0 0 1 0 0 0    LOG TOS 10-es alapú logaritmusa, eredmény a TOS-ba.
  sr 0 0 0 1 0 0 1    LN TOS természetes (e alapú) logaritmusa, eredmény a TOS-ba.
  sr 0 0 0 1 0 1 0    EXP Exponenciális függvény (ex) a TOS-ból, eredmény a TOS-ba.
  sr 0 0 0 1 0 1 1    PWR NOS a TOS hatványon, eredmény a NOS-ba, pop stack.
Adatkezelő utasítások
  sr 0 0 0 0 0 0 0    NOP Nincs művelet
  sr 0 0 1 1 1 1 1    FIXS TOS konverziója lebegőpontosról 16 bites fixpontos formátumra
  sr 0 0 1 1 1 1 0    FIXD TOS konverziója lebegőpontosról 32 bites fixpontos formátumra
  sr 0 0 1 1 1 0 1    FLTS TOS konverziója 16 bites fixpontos formátumról lebegőpontosra
  sr 0 0 1 1 1 0 0    FLTD TOS konverziója 32 bites fixpontos formátumról lebegőpontosra
  sr 1 1 1 0 1 0 0    CHSS TOS-ban lévő 16 bites fixpontos operandus előjelének váltása
  sr 0 1 1 0 1 0 0    CHSD TOS-ban lévő 32 bites fixpontos operandus előjelének váltása
  sr 0 0 1 0 1 0 1    CHSF TOS-ban lévő lebegőpontos operandus előjelének váltása
  sr 1 1 1 0 1 1 1    PTOS Push a TOS-ban levő 16 bites fixpontos értéket a NOS-ba (másolás)
  sr 0 1 1 0 1 1 1    PTOD Push a TOS-ban levő 32 bites fixpontos értéket a NOS-ba (másolás)
  sr 0 0 1 0 1 1 1    PTOF Push a TOS-ban levő lebegőpontos értéket a NOS-ba (másolás)
  sr 1 1 1 1 0 0 0    POPS Pop a TOS-ban levő 16 bites fixpontos értéket, a NOS lesz az új TOS
  sr 0 1 1 1 0 0 0    POPD Pop a TOS-ban levő 32 bites fixpontos értéket, a NOS lesz az új TOS
  sr 0 0 1 1 0 0 0    POPF Pop a TOS-ban levő lebegőpontos értéket, a NOS lesz az új TOS
  sr 1 1 1 1 0 0 1    XCHS Cserélje fel a TOS-ban és a NOS-ban levő 16 bites fixpontos értékeket
  sr 0 1 1 1 0 0 1    XCHD Cserélje fel a TOS-ban és a NOS-ban levő 32 bites fixpontos értékeket
  sr 0 0 1 1 0 0 1    XCHF Cserélje fel a TOS-ban és a NOS-ban levő lebegőpontos értékeket
  sr 0 0 1 1 0 1 0    PUPI Lebegőpontos „ ” értéke a TOS-ba, push művelet.

Ahol:

  • TOS: Top on Stack, verem teteje
  • NOS: Next on Stack, verem tetejét követő elem, verem második eleme
  • sr: service request, szervizkérelmet jelző bit
  • több utasítás megváltoztatja egy vagy több veremrekesz értékét, így a verem legalja elveszhet

Forrás:[1]

Jegyzetek szerkesztés

  1. a b c d AM9511 Arithmetic Processing Unit / Advanced Micro Devices / Advanced MOS/LSI (angol nyelven) (pdf) pp. 1–12. AMD, 1977. (Hozzáférés: 2014)
  2. a b Arithmetic Processors: Then and Now (angol nyelven). CPU Shack, 2010. szeptember 23. (Hozzáférés: 2014) „It is best described as a scientific calculator on a chip.”

Fordítás szerkesztés

Ez a szócikk részben vagy egészben az AMD Am9511 című spanyol 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