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. Ó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.
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.
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.
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 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ásaiUtasí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:
Jegyzetek
Fordítás
Források
További információk
Kapcsolódó szócikkek AMD Intel 8231
Kategória:AMD mikroprocesszorok Kategória:Koprocesszorok