Computer Architecture Lab/Winter2006/KammPuffBili/ThreeMicroDiscussion

< Computer Architecture Lab < Winter2006 < KammPuffBili

SPEAR

16-Bit Load/Store-Architektur mit 32 Integer-Registern und einer dreistufigen Pipeline, die jeweils bis zu 128 kB Code- und Datenspeicher unterstützt. Arithmetische Befehle wie Addition und Subtraktion haben zwei Operanden, Shift/Rotate-Operationen verschieben den Operanden um jeweils 1 Bit. Speicherzugriffe ohne Offset sind mit jedem Register möglich, Speicherzugriffe mit konstantem Offset sind mit den Registern r26-r28 möglich.

Besonderheiten

Branches

Für bedingte Sprünge wird zuerst die Bedingung getestet und das condition flag entsprechend gesetzt, und danch der Sprung in Abhängigkeit von diesem Flag (Bedingung wahr oder falsch) ausgeführt. Diese Vorgehensweise hat den Vorteil, weniger Opcodes für bedingte Befehle zu verbrauchen, allerdings werden 32- oder 64-Bit Vergleiche komplizierter (mann benötigt für jedes Register zwei Vergleichs- und zwei Sprungbefehle, anstatt einem Vergleichs- und zwei Sprungbefehlen).

Alpha 21264/EV6

64-Bit Load/Store-Architektur mit 32 Integer- und 32 Floating-Point-Registern. Die Bezeichnung als "RISC"-Architektur ist etwas irreführend, da eine relativ große Anzahl von Befehlen implementiert sind. Arithmetische Befehle wie Addition und Subtraktion haben drei Operanden, Speicherzugriffe mit konstantem Offset werden mit jedem (Integer-)Register unterstützt. Die Architektur nützt - neben einer 7-stufigen Pipeline - weitere fortgeschrittene Techniken wie die parallele Abarbeitung von bis zu vier Befehlen, Caching und Out-of-Order Execution.

Besonderheiten

Branches

Bei bedingten Sprüngen wird die Sprungbedingung in den Sprungbefehl kodiert, was in kompaktem Code und - da keine Flags geschrieben werden müssen - besserer Parallelisierbarkeit resultiert. Andererseits bringt das aber einen in Hardware vergleichsweise komplexen Befehl mit sich bringt. Subtraktion (bei größer/kleiner/gleich-Vergleichen), Auswertung der Flags und Laden des Sprungziels sind hier ein einziger Befehl.

ATmega 16

Hierbei handelt es sich um eine 8-Bit "RISC"-Architektur mit 32 General-Purpose-Registern. Das Instruction-Set besteht aus 131 Befehlen wovon die meisten in einem Zyklus durchgeführt werden können. In der mir vorliegenden Version kann der CPU mit bis zu 16 MHz getacktet werden. Er besitzt 16K Byte Flashspeicher, 512 Byte EEPROM und 1K Byte SRAM. Arithmentische und Logische Anweisungen haben entweder einen oder zwei Operanden. Klassische Befehle wie "ADD", "SUB", "AND" und dergleichen haben zwei, während "NEG" nur ein Register als Argument annimmt. Die Pipeline ist beim ATmega 16 nur einstufig.

Besonderheiten

Branches

Das Instruction-Set des ATmega 16 unterstützt bedingte Sprünge durch eine Vielzahl an Befehlen. Stellvertretend sei hier "BRCC" genannt, der den Sprung durchführt, wenn das Carry-Flage nicht gesetzt ist (Branch if Carry Cleared). Des Weiteren gibt es noch Befehle die auf das Zero-, Carry-, Halfcarry-, Negative-, T- beziehungswiese das Overflowflag Rücksicht nehmen.

This article is issued from Wikiversity - version of the Saturday, August 16, 2014. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.