AMD Am9511
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.
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]- ↑ 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)
- ↑ 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]- AM9511 Arithmetic Processing Unit / Advanced Micro Devices / Advanced MOS/LSI (angol nyelven) (pdf) pp. 1–12. AMD, 1977. (Hozzáférés: 2014)
További információk
[szerkesztés]- Richard O. parker, Joseph O. Kroeger: Advanced Micro Devices / Algorithm Details for the Am9511 Arithmetic Processing Unit (angol nyelven) (pdf) pp. 1–23. AMD, 1978. [2012. október 4-i dátummal az eredetiből archiválva]. (Hozzáférés: 2014)