Computer Architecture Lab/Summer2006/PitterDeinhart/ThreeDesigns

< Computer Architecture Lab < Summer2006 < PitterDeinhart

DREI MIKROPROC. ARCHITEKTUREN:

1. SPEAR (www.ecs.tuwien.ac.at/spear)

Quellen:

http://www.ecs.tuwien.ac.at/spear/downloads/papers/Handbook.pdf

SPEAR bedeutet Scaleabel Processor for Embedded Applications in Real-Time Environments. Wurde auf TU Wien E182-2 mit besonderen Augenmerk auf Anpassbarkeit und Echtzeitfähigkeit entwickelt.

Blockschaltbild:

[INSERT spear-blockschalt.png]

Speicher:

Bis zu 128KB addressierbar. Im Prozessorkern selber 4KB Befehls- und Datenspeicher.

Maschinenbefehle und Daten sind immer 16 Bit breit, Speicher wird Wortweise angesprochen.

Register:

Es gibt 32 Register auf die alle Befehle zugreifen koennen, 6 davon haben spezielle Aufgaben (3x Framepointer, 2x Unterprogramme, 1x Trap/ISR

Pipeline:

Der SPEAR hat eine 3-stufige Pipeline.

Befehlssatz:

Es gibt 80 Befehle, einige davon sind bedingte Befehle. Alle sind 16 Bit breit. Mit diesen kann man z.b. ein Register mit einem anderen oder einer Konstante vergleichen (CMP_EQ). Abhaengig vom ergebnis kann man dann z.b. ein bedingtes move verwenden (MOV_CT bzw. MOV_CF .. Contition True/False).

Es gibt 2 load Befehle: LDL: 000nnnnnnnnrrrrr LDH: 001nnnnnnnnrrrrr

Es gibt 29 Befehle die mit 2 Registern oder einem Register und einer 5Bit Konstante arbeiten, z.b.:

MOV_CT: 100011rrrrrRRRRR (contitional move) ADDI_CT: 100100nnnnnrrrrr (Contitional add)

Weitere 7 Befehle arbeiten mit einer 4Bit Konstante und einem Register, z.b.:

BCLR r1,n4: 1010001nnnnRRRRR (clears n4-th bit in r1)

Weitere 32 Befehle operieren nur auf einem Register, z.b.:

NOT: 10110000000rrrrr NOT_CT: 10111100000rrrrr (conditional not)

Dazu gibt es noch 3 Jump Befehle, die ein 10Bit Offset verwenden, z.b.:

JMPI_CT: 111010aaaaaaaaaa (continal relative jump)

Schliesslich gibt es noch 3 Befehle um den Program Counter aus einem bestimmten register neu zu setzen (return from subroutine). z.b.:

RTSX: 1011111101011101 (register 29 -> program counter)

Zuletzt sind noch NOP(No Operation) und IllOp(Illegal Opcode) zu erwähnen: NOP: 1111111000000000 IllOp: 1111111111111111

2. ATMEL ATMEGA16

Quellen:

Blockschaltbild:

[INSERT atmega16-blockschalt.png]

Speicher:

Der ATmega16 hat 16KB flash, 512B EEPROM, 1KB SRAM.

Register:

32 8Bit breite General Purpose Working Registers, wobei 6 davon als 3 16Bit registern (X,Y,Z) verwendet werden koennen. Diese koennen z.b. zur Addressierung benutzt werden.

Dazu gibt es noch ein Status Register und einen Stack Pointer.

Pipeline:

Die Pipeline hat nur einen einzigen Schritt.

Befehlssatz:

Der ATMEGA16 hat 131 Befehle, die meisten davon kann er in einem einzigen Clock-Cycle verarbeiten.


Die meisten Befehle sind 16 Bit breit. Nur JMP und CALL sind 32 Bit breit, und brauchen daher einen Clock-Cycle mehr:

JMP: 1001010kkkkk110k kkkkkkkkkkkkkkkk

     (jumps to any address in 4M words program memory)

CALL: 1001010kkkkk111k kkkkkkkkkkkkkkkk

Die normale, 16 Bit breiten Instructionen sehen z.b. so aus:

IN: 10110AAdddddAAAA (loads data from io space A into register d) OUT: 10111AArrrrrAAAA INC: 1001010ddddd0011 (increments register d)

Was auffällt ist, dass die einzelnen Bits etwas verstreut angeordnet sind. TODO FIXME: warum ist das so?


3. Intel 8051 Microcontroller

Quellen:

Der Befehlssatz ist stark auf die Lösung von Steuerungsaufgaben zugeschnitten, doch neben speziellen Befehlen zur Einzelbitverarbeitung stehen auch Befehle zur Multiplikation und Division zur Verfügung.

Blockschaltbild:

[INSERT 8051.png]

Speicher:

384 Bytes internes RAM. 256 Bytes davon beherrbergen die Registerbänke und den Stack. Weiters ist der 128 Bytes umfassende SFR-Speicherbereich darin enthalten. Darin befinden sich die Prozessorregister und die Steuerregister für die Tore, die Interruptlogik, die Timer und die D/A und A/D-Wandler.

Der Programmspeicher kann maximal 65535 Speicherzellen = 64kByte umfassen.

Die Prozessorregister der 8051 CPU:

Die Prozessorregister gehören schaltungstechnisch zu der CPU, jedoch liegen sie bei der 8051 CPU im Adreßraum des RAM-Speichers, der sich auf dem Chip befindet. Dadurch ergibt sich die besondere Möglichkeit, die Register einmal über die zugehörigen Sonderbefehle zu erreichen, aber auch über Adressen des internen Speicherraumes. Die Register sind 8-Bit lang, Ausnahme der DPTR und der nur indirekt zugängliche PC, beide sind 16-Bit lang.

Im ProgramStatusWord der 8051-Controller befinden sich folgende flags:

Befehle des 8051:

1. Transportbefehle
2. Arithmetische und logische Befehle
3. Sprungbefehle

Die 5 Adressierungsarten des 8051:

Die Adressierungsarten werden an dem Befehl mov (move - bewege nach) erläutert, der bei der Intel-Assemblermnemonik in folgender Weise benutzt wird, mov Ziel, Quelle

This article is issued from Wikiversity - version of the Monday, February 01, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.