HP Saturnus

Saturnus
Photo of HP48SX 1LT8 SoC die containing an embedded Saturn CPU
Foto av den exponerade formen på HP 1LT8 Clarke SoC som innehåller den inbäddade Saturn-mikroprocessorn tillverkad av HP för användning i HP 48SX
Designer Hewlett-Packard
Bits Hybrid 64-bitars GPR, 20-bitars adressbuss, 4-bitars dataväg, 4-bitars minsta ordstorlek
Introducerad 1984
Version "Nivå 2"
Design CISC
Typ Kombination av en lastbutiksarkitektur med några undantag som faller inom register - minnesarkitekturfamiljen
Kodning Variabel
Förgrening Bärbit, "sticky" bit och andra flaggregister
Endianness Lilla Endian
Sidstorlek Ingen MMU eller personsökning tillgänglig
Tillägg Endast tillägg för emulerade ARM -baserade "virtuella" processorer
Öppen Proprietär
Företrädare Nöt
Registrerar
nio 64-bitars GPR- och "scratch"-register, två 20-bitars "datapekare"-register och andra diverse register
Generell mening Fyra 64-bitars GPR
Flytpunkt Inga FPU-register
Vektor Inga vektorregister

Saturn- familjen av 4-bitars ( datapath ) mikroprocessorer utvecklades av Hewlett-Packard på 1980-talet först för HP-71B handdator och sedan för olika HP-kalkylatorer (som börjar med HP-18C ). Det efterträdde Nut -familjen av processorer som användes i tidigare räknare. Det ursprungliga Saturn- chippet användes först i den HP-71B handhållna BASIC -programmerbara datorn, som introducerades 1984. Senare modeller av familjen drev den populära HP 48-serien av miniräknare. HP48SX och HP48S var de sista modellerna som använde äkta Saturn-processorer tillverkade av HP. Senare kalkylatormodeller använde Saturn-processorer tillverkade av NEC. HP 49-serien använde initialt även Saturn CPU, tills NEC -fabriken inte längre kunde tillverka processorn av tekniska skäl 2003. Därför bytte räknarna från och med HP 49g+ -modellen 2003 till en Samsung S3C2410 - processor med en ARM920T kärna (en del av ARMv4T-arkitekturen) som körde en emulator av Saturns hårdvara i mjukvara. År 2000 HP 39G och HP 40G de sista miniräknare som introducerades baserat på den faktiska NEC-tillverkade Saturn-hårdvaran. De sista räknarna baserade på Saturn-emulatorn var HP 39gs , HP 40gs och HP 50g 2006, såväl som 2007 års revision av hp 48gII . HP 50g, den sista kalkylatorn som använder denna emulator, avbröts 2015 när Samsung slutade producera ARM-processorn som den var baserad på.

Arkitektur

Saturn-hårdvaran är en nibble seriell design i motsats till dess Nut- föregångare, som var bit-seriell . Internt har Saturn-processorn fyra 4-bitars databussar som möjliggör nästan 1-cykel per napp med en eller två bussar som fungerar som en källa och en eller två som fungerar som destination. Det minsta adresserbara ordet är en 4-bitars nibble som kan innehålla en binärkodad decimalsiffra (BCD). Vilken dataenhet som helst i registren som är större än en nibble, där änden av nämnda dataenhet faller på en nibble-gräns och starten av nämnda dataenhet börjar vid nibble noll (och även i vissa fall där nämnda dataenhets startposition faller på en nibble-gräns med vissa registerfält t.ex. "M" eller "X"), och som kan vara upp till 64-bitar, kan manövreras som en helhet, men Saturn CPU utför operationen seriellt internt på en nibble-by -naggsbas.

Saturn-arkitekturen har en 64-bitars dataordsbredd och 20-bitars adressbredd, med minne adresserat till 4-bitars ( nibble ) granularitet. Saturn ALU-instruktioner stöder variabel databredd, som arbetar på en till 16 bitar av ett ord. Huvudregistren ( GPR ), tillsammans med de temporära registren, är helt 64-bitar breda, men adressregistren är bara 20-bitar breda. De ursprungliga Saturn CPU-chipsen gav en fyra-bitars extern databuss, men senare Saturn-baserade SoCs inkluderade i chipbusskonvertering till en 8-bitars extern databuss och 19-bitars extern adressbuss.

Saturn-arkitekturen har fyra 64-bitars GPR (General Purpose Register), benämnda A, B, C och D. Dessutom finns det även fem 64-bitars "scratch"-register som heter R0, R1, R2, R3 och R4. Dessa kan bara lagra data. Om det krävs en ALU-operation för data i ett skrapregister måste registret i fråga först överföras till en GPR. Andra register inkluderar ett 1-nibble "pekare"-register som heter P, som vanligtvis används för att välja en nibble i en GPR eller ett urval av nibbles (eller för att justera omedelbar data om en specifik nibble i en GPR, med wrap-around). För minnesåtkomst finns det två 20-bitars datapekarregister benämnda D0 och D1. Saturn-arkitekturen har också ett PC- eller programräknareregister som kan samverka med GPR:erna. Det finns också en 8-nivå, cirkulär, LIFO 20-bitars returstack med namnet RSTK som används när en subrutinanropsinstruktion utfärdas. Dessutom är Saturn CPU utrustad med ett 16-bitars programvarustatusregister som heter ST och ett 1-bitars hårdvarustatusregister med namnet HS, som särskilt innehåller SB- eller "sticky bit"-flaggan som indikerar om en binär 1:a var rätt förskjuten från en GPR. Dessutom har Saturn-arkitekturen ett 12-bitars OUT-register och ett 16-bitars IN-register, som i Yorke och Clarke SoCs, används för att fånga indata från tangentbordet och även styra ljudsignalen. Det finns också ett 1-bitars bärflaggaregister.

Utöver ovanstående har Saturn CPU ett enkelt, oprioriterat avbrottssystem. När ett avbrott inträffar avslutar CPU:n att exekvera den aktuella instruktionen, sparar programräknaren till hårdvarans returstack (RSTK) och hoppar till adressen 0x0000Fh hex, där föregående värde är i nibbles. CPU:n interagerar också med tangentbordets skanningslogik direkt.

Följande diagram visar registren (där varje vit kvadrat är 4-bitar / en nibble förutom Carry-flaggan, som är 1 bit):

"Graphical representation of HP Saturn register fields"

Saturn 64-bitars GPR-registerformat och fält:

HP Saturn registerfält
Bits 63-60 59-56 55-52 51-48 47-44 43-40 39-36 35-32 31-28 27-24 23-20 19-16 15-12 11-8 7-4 3-0
Knapra F E D C B A 9 8 7 6 5 4 3 2 1 0
Fält   XS B
  A
S M X
W
P=0   P
P=7   WP

Data i registren för allmänna ändamål kan nås via fält som faller på nibble-gränser, medan skrapregistren endast tillåter last- och lagringsoperationer. Fälten, som visas i diagrammet ovan, är W (hela 64-bitars GPR), A (de första 5 nibbles av en GPR), S (mest signifikanta nibbles av en GPR), XS (nibble 2 av en GPR), M (nipplar 3-14 av en GPR), X (första 3 nibbles av en GPR) och B (första byten i en GPR). Dessutom finns P-fältet som väljer en nibble från en GPR baserat på P-registrets 4-bitars värde. Det finns också WP-fältet som väljer nibbles 0 till och med nibblet som valts i P-registret. De 64 bitarna (16 nibbles) kan innehålla BCD-formaterade kodade flyttalsnummer som består av ett tecken nibble (som är "9" om talet är negativt), 12 mantissiffror och en 3-siffrig 10-tals komplementexponent lagrad i BCD -format ( ±499). Den interna representationen av BCD-flyttalsvärden är en 15-siffrig mantissa med en teckennibble i ett register kombinerat med en 20-bitars exponent, i 10:s komplementformat, i ett annat register. Användningen av BCD istället för rak binär representation är fördelaktigt för miniräknare eftersom det undviker avrundningsproblem som uppstår vid binär/decimalomvandlingen .

Saturn CPU:s adresser är också nibble-baserade. De tre pekarregistren (inklusive programräknaren ) och adressregistren är 20 bitar breda. På grund av detta kan Saturn-arkitekturen adressera 1 M nibbles eller, motsvarande, 512 K byte. Utöver den storleken (t.ex. i 48GX) används bankväxling .

I både HP 48S/SX och 48G/GX-serien, och även sådana räknare som HP-28S, HP-42S, HP-32SII och HP-20S, är Saturn CPU-kärnan integrerad som en del av en mer komplex integrerad krets (IC) SoC -paket, förutom den ursprungliga HP-71B handdatorn och HP-28C som använde ett separat chip för Saturn-processorn. Dessa paket har kodnamn inspirerade av medlemmarna i Lewis och Clark Expeditionen . Kodnamnet för IC är Clarke i S/SX, efter William Clark , och Yorke i G/GX, efter Clarks manservant . Andra Saturn-baserade IC, som de som används i HP-28S, HP-42S, HP-32SII och HP-20S hade andra kodnamn. Specifikt fick HP-42S och HP-28S SoC kodnamnet Lewis , efter Meriwether Lewis . Andra HP-kalkylatorer som HP-32SII och HP-20S hade SoCs med kodnamnet Sacajawea efter Sacagawea respektive Bert , även om ursprunget till Bert -kodnamnet kan vara okänt.

Exempelkod

Följande är en heltalsimplementering av en BCD-decimal kvadratrotsalgoritm i Saturn Jazz / HP Tools assembly-syntax:

** I det följande antas AW innehålla argumentet (< 1E14). ** Resultatet (IP(SQRT(AW))) är i CW: SETDEC ASL W C=AW A=A+AWA=A+AW A=A+CW ASR W C=0 W P= 13 LC(1) 5 - CSR WP C=C-1 P -- C=C+1 PA=AC W GONC -- A=A+CW CSR WP=P-1 P=P-1 GONC - SETHEX A=CW

Chipset och applikationer

Den ursprungliga Saturn-processorn gav sitt namn till hela instruktionsuppsättningsarkitekturen . Senare chips hade sina egna kodnamn:

ISA-nivå Processorns kodnamn Används i kalkylatormodeller Egenskaper
0 Saturnus (1LF2) HP-44A , HP-71B (1984)
1 Saturnus (1LK7) HP-18C (1986), HP-28C (1987), HP-71B 640 kHz, fler instruktioner
2 Bert (1LU7) HP-10B (1988), HP-20S (1988), HP-21S 640 kHz, 10 KB ROM, 256 byte RAM, LCD-drivrutin
2 Sacajawea (1LR3) HP-14B, HP-22S , HP-32S (1988), HP-32S+ , HP-32SII (1991) 640 kHz, 16 KB ROM, 512 byte RAM, LCD-drivrutin
2 Lewis (1LR2) HP-17B (1988), HP 17BII (1990), HP-19B (1988), HP 19BII (1990), HP-27S (1988), HP-28S (1988), HP-42S (1988) 1 MHz, 64 KB ROM, LCD-drivrutin, minneskontroll, IR- kontroll, 3V CMOS
2 Clarke (1LT8) HP 48SX (1990), HP 48S (1991) 2 MHz, LCD-kontroller, minneskontroller, UART och IR-kontroll, fler instruktioner
2 Yorke 00048-80063 HP 38G (1995), HP 38G+ (1998), HP 39G (2000), HP 40G (2000), HP 48GX (1993) , HP 48G (1993), HP 48G+ (1998), HP 49G (1999) 3,68–4 MHz, LCD-kontroller, minneskontroller, UART- och IR-kontroll, tillverkad av NEC , fler instruktioner, ibland även känd som Saturn 5 -plattformen
? New York HP 48GX prototyp 8 MHz, LCD-kontroll, minneskontroll, UART och IR-kontroll. Detta gjordes endast som en intern HP-prototyp och släpptes aldrig i naturen.
2 Apple -serien ( Big Apple , Mid Apple , Little Apple ) hk 39g+ (2003), HP 39gs (2006), HP 40gs (2006), hp 49g+ (2003), hp 48gII (2003/2007), HP 50g (2006) Virtuell version av Yorke CPU emulerad av medlemmar av 48/75 MHz Samsung S3C2410 -processorfamiljen med ARM920T- kärna (av ARMv4T-arkitekturen) aka Saturn+ med ytterligare virtuella instruktioner

CPU-kodnamnen är inspirerade av medlemmar i Lewis och Clark-expeditionen 1804–1806, USA:s första landvägsexpedition till Stillahavskusten och tillbaka. De virtuella CPU/emulatorkodnamnen var inspirerade av prototypen "New-Yorke" Saturn-baserade 8 MHz SoC som aldrig kom till produktion. Enligt en av ACO-medlemmarna (Australian Calculator Operation) härleddes "Big Apple" från kodnamnet "New-Yorke" för prototypen 8 MHz Saturn-baserade SoC, och som för den ursprungliga författaren verkade antyda en referens till "New York" staden, därav namnen "Big apple", "Mid Apple" och "Little Apple".

Anteckningar

Vidare läsning

externa länkar