En studie av två olika 32-bitars adderarstrukturer

Relevanta dokument
Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Digital- och datorteknik, , Per Larsson-Edefors Sida 1

Grindar och transistorer

Talrepresentation. Heltal, positiva heltal (eng. integers)

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Tenta i Digitalteknik

Laboration 6. A/D- och D/A-omvandling. Lunds universitet / Fakultet / Institution / Enhet / Dokument / Datum

Digital IC konstruktion

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

L15 Introduktion modern digital design

Tenta i Digitalteknik

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

Tenta i Digitalteknik

Digital IC konstruktion

DIGITAL ELEKTRONIK. Laboration DE3 VHDL 1. Namn... Personnummer... Epost-adress... Datum för inlämning...

Digital IC konstruktion

Digital Aritmetik Unsigned Integers Signed Integers"

Programmerbar logik (PLD) Programmeringsspråket VHDL Kombinatoriska funktioner i VHDL för PLD Sekvensfunktioner i VHDL för PLD

Digital elektronik CL0090

Digital- och datorteknik

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

DIGITALTEKNIK. Laboration D172

Tenta i Digitalteknik

FÖRELÄSNING 8 INTRODUKTION TILL DESIGN AV DIGITALA ELEKTRONIKSYSTEM

Transistorn en omkopplare utan rörliga delar

VHDL 1. Programmerbara kretsar

Tenta i Digitalteknik

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Laboration Kombinatoriska kretsar

Hambley avsnitt 12.7 (7.3 för den som vill läsa lite mer om grindar) sann 1 falsk 0

INTRODUKTION TILL VIVADO

F1: Introduktion Digitalkonstruktion II, 4p. Digital IC konstruktion. Integrerad krets. System. Algorithm - Architecture. Arithmetic X 2.

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Digitala elektroniksystem

Tentamen i Digital Design

IE1205 Digital Design: F3 : CMOS-kretsen, Implementeringsteknologier. Fredrik Jonsson KTH/ICT/ES

TSEA22 Digitalteknik 2019!

Laboration Kombinatoriska kretsar

Programmerbara kretsar och VHDL 2. Föreläsning 10 Digitalteknik, TSEA22 Oscar Gustafsson Institutionen för systemteknik

Tenta i Digitalteknik

F5 Introduktion till digitalteknik

Digital elektronik och inbyggda system

Det finns en hemsida. Adressen är

Arm Cortex-A8 Pipeline

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Design av digitala kretsar

GPIO - General Purpose Input Output

Grundläggande datavetenskap, 4p

Översikt, kursinnehåll

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

nmosfet och analoga kretsar

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

Digital IC konstruktion

VHDL och laborationer i digitalteknik

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Laboration D184. ELEKTRONIK Digitalteknik. Sekvensnät beskrivna med VHDL och realiserade med PLD

Spekulativ exekvering i CPU pipelining

Simulering med ModelSim En kort introduktion

Digitala System: Datorteknik ERIK LARSSON

Digital IC konstruktion

Simulering med ModelSim En kort introduktion

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

Pipelining i Intel 80486

Cacheminne Intel Core i7

Hantering av hazards i pipelines

Tenta i Digitalteknik

Sekvensnät. William Sandqvist

Processor pipelining genom historien (Intel i9-intel i7)

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

IE1204/IE1205 Digital Design

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Utvecklingen från en 8 bitars till en 16 bitars mikroprocessor

Quine McCluskys algoritm

Laboration D181. ELEKTRONIK Digitalteknik. Kombinatoriska kretsar, HCMOS v 2.1

DEC Alpha instruktions Arkitektur

Föreläsning 4/11. Lite om logiska operationer. Hambley avsnitt 12.7, 14.1 (7.3 för den som vill läsa lite mer om grindar)

Läsminne Read Only Memory ROM

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Laboration D159. Sekvensnät beskrivna med VHDL och realiserade med PLD. Namn: Datum: Epostadr: Kurs:

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

IE1204 Digital Design

IE1205 Digital Design: F6 : Digital aritmetik 2

Digital Design IE1204

Datorarkitekturer med operativsystem ERIK LARSSON

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

F5 Introduktion till digitalteknik

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Digital- och datorteknik

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

IBM POWER4, den första flerkärniga processorn och dess pipelines.

DESIGN AV SEKVENTIELL LOGIK

5:2 Digitalteknik Boolesk algebra. Inledning OCH-funktionen

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

Digital Design IE1204

Antennförstärkare för UHF-bandet

Avståndsmätare. Digitala System EITA Grupp 7. Abdelsalem Yabrag, Abdulhadi kikar, Fredrik Peterson, Jesper Annefors

Datorsystemteknik DVGA03 Föreläsning 8

Lösningförslag till Exempel på tentamensfrågor Digitalteknik I.

Transkript:

En studie av två olika 32-bitars adderarstrukturer Kompromisser mellan hastighet, energiförbrukning och area HUVUDOMRÅDE: Datateknik FÖRFATTARE: Adam Ahlgren, Petter Sainio Berntsson HANDLEDARE: Anna-Karin Carstensen JÖNKÖPING 2016 juni

Detta examensarbete är utfört vid Tekniska Högskolan i Jönköping inom [se huvudområde på föregående sida]. Författarna svarar själva för framförda åsikter, slutsatser och resultat. Examinator: Anders Adlemo Handledare: Anna-Karin Carstensen Omfattning: 15 hp Datum: 2016-06-19 Postadress: Besöksadress: Telefon: Box 1026 Gjuterigatan 5 036-10 10 00 (vx) 551 11 Jönköping

Abstract The purpose of this report is to study two different adder architectures in order to answer when one of the two adder architectures examined in this report is preferable over the other. This study used a qualitative literature study to give a proper theoretical background of how two different adder architectures are constructed. An experimental study is also used in order to see how the different theories studied matches the results from simulations. The two adder architectures chosen to study in this study was ripple-carry and Sklansky adder architectures. In order to study the two adder architectures these were implemented in an arithmetic logic unit (ALU) which were then simulated and compared. The three factors examined were speed, energy consumption and the estimated area. This was simulated in two different cell libraries that are based on 65 nm CMOS technology. The focus of the report is to study at which frequencies the two various adder architectures are preferred over the other. A computer architect who must choose adder architecture for an integrated circuit and reads this report should carry out the simulations and compare the different architectures for each of the various parameters to determine which architecture is best for the specific situation. Keywords ALU, adder, digital electronics, integrated circuits, CMOS, 65 nm

Sammanfattning Studiens syfte är att studera två olika adderararkitekturer för att kunna svara på när en av de två adderararkitektur som valts att undersöka är att föredra framför den andra. I arbetet används en kvalitativ litteraturstudie för att ge en grundlig teoretisk bakgrund om hur olika adderarkitekturer är uppbyggda samt en experimentell studie där de olika teorierna undersökts för att se hur väl teorierna stämmer överens med resultaten ifrån simuleringarna. De två adderararkitekturerna som valdes att studera i denna studie var Ripple-carry och en Sklansky. För att kunna studera de två adderararkitekturerna implementerades de båda i en Aritmetisk Logisk Enhet (ALU) för att sedan simuleras och jämföras. De tre faktorerna som undersöktes var hastighet, energikonsumtion och uppskattad area. Detta undersöktes hos två olika cell-bibliotek som är baserade på 65 nm CMOS-teknologi. Rapportens fokus ligger i att studera vid vilka frekvenser de olika adderararkitekturerna är att föredra. En datorarkitekt som ska välja adderarkitektur till en integrerad-krets och läser denna rapport bör själv utföra simuleringar och jämföra de olika adderararkitekturerna med varandra för de olika parametrarna för att kunna avgöra vilken arkitektur som passar bäst för dennes situation. Nyckelord ALU, adderare, digital elektronik, integrerade-kretsar, CMOS, 65 nm

Innehållsförteckning Abstract... ii Sammanfattning... iii Innehållsförteckning... iv 1 Introduktion... 1 1.1 BAKGRUND... 1 1.2 PROBLEMBESKRIVNING... 1 1.3 SYFTE OCH FRÅGESTÄLLNINGAR... 2 1.4 OMFÅNG OCH AVGRÄNSNINGAR... 2 1.5 DISPOSITION... 2 1.5.1 Metod och genomförande... 2 1.5.2 Teoretiskt ramverk... 3 1.5.3 Empiri... 3 1.5.4 Analys... 3 1.5.5 Diskussion och slutsatser... 3 2 Metod och genomförande... 4 2.1 KOPPLING MELLAN FRÅGESTÄLLNINGAR OCH METOD... 4 2.2 ARBETSPROCESSEN... 4 2.2.1 Förstudie... 4 2.2.2 Informationsinsamling... 5 2.2.3 Implementation... 5 2.2.4 Testning och utvärdering... 5 2.3 ANSATS... 6 2.4 DATAINSAMLING... 6 2.5 DATAANALYS... 6 2.6 TROVÄRDIGHET... 6 2.7 UTVECKLINGSVERKTYG... 7 3 Teoretiskt ramverk... 8 3.1 KOPPLING MELLAN FRÅGESTÄLLNINGAR OCH TEORI... 8 3.2 INSTRUKTIONSUPPSÄTTNING... 8 3.3 ARITMETISK LOGISK ENHET... 9 3.4 VAD ÄR EN ADDERARE?... 10

3.4.1 Halvadderare... 10 3.4.2 Heladderare... 10 3.5 RIPPLE-CARRY ADDER... 11 3.6 CARRY-LOOKAHEAD ADDER... 11 3.7 SYNTETISERING... 13 3.8 CELL-BIBLIOTEK... 13 3.9 TECHNOLOGY MAPPING... 14 3.10 INKREMENTELL OPTIMERING... 14 3.11 VERIFIERING... 15 3.12 ENERGIFÖRBRUKNINGSANALYS... 16 3.12.1 Dynamisk-energiförbrukning... 16 3.12.2 Kortslutnings-energiförbrukning... 16 3.12.3 Statisk-energiförbrukning... 17 4 Empiri... 18 4.1 AREA I RELATION TILL TIDS-RESTRIKTION... 18 4.2 TIDS-RESTRIKTION OCH KRITISK DATAVÄG... 18 4.3 ENERGIFÖRBRUKNING VID SAMMA TIDS-RESTRIKTION... 21 4.4 DYNAMISK ENERGIFÖRBRUKNING... 22 4.5 STATISK ENERGIFÖRBRUKNING... 22 5 Analys... 24 5.1 FRÅGESTÄLLNING 1... 24 5.2 FRÅGESTÄLLNING 2... 24 5.3 FRÅGESTÄLLNING 3... 25 6 Diskussion och slutsatser... 26 6.1 RESULTAT... 26 6.2 IMPLIKATIONER... 27 6.3 BEGRÄNSNINGAR... 27 6.4 SLUTSATSER OCH REKOMMENDATIONER... 27 6.5 VIDARE FORSKNING... 28 Referenser... 29 Bilagor... 31

1 Introduktion Denna rapport är en del av högskoleingenjörsprogrammet med inriktning mot Inbyggda System på Tekniska Högskolan i Jönköping. Arbetet har genomförts på skolan och fokus har legat på att undersöka kompromisser mellan hastighet, energiförbrukning och uppskattad area mellan två olika adderararkitekturer i en 32 bitars Aritmetisk Logisk Enhet (ALU; från engelskans Arithmetic Logic Unit). 1.1 Bakgrund Ett inbyggt system har funktioner där realtidskrav är viktigt, då många applikationer måste säkerställa tillräckligt snabb responstid för att utföra kritiska åtgärder där bråkdelar av en sekund kan vara livsavgörande. Inbyggda system kan finnas i till exempel vitvaror, mobiltelefoner, hemelektronik, bilar, flygplan och satelliter [1]. Inbyggda system är ofta en del av ett större system där hårdvara och mekaniska delar ingår. Dessa system kan skilja sig åt på många plan men gemensamt är att de exekverar kod på en processor (CPU). En CPU måste arbeta tillräckligt snabbt för att utföra kritiska funktioner utan risk att förlora data. För att en processor ska kunna utföra nödvändiga logiska beräkningar använder den sig av en ALU. En ALU är en digital krets som utför aritmetiska och bitvis logiska operationer på binära heltal. Exempel på operationer är addition, subtraktion, AND, och OR [1]. En ALU utför aritmetiska beräkningar med hjälp av en adderarkrets. Det finns olika adderararkitekturer tillgängliga som utnyttjar olika antal logiska grindar, vilket gör att energiförbrukningen skiljer sig åt. En annan viktig del som skiljer dem åt, är hur hög klockfrekvens adderarna kan hantera och fortfarande producera korrekta resultat innan nästa klockpuls. Därför är det viktigt att se hur snabbt man kan klocka olika adderararkitekturer och jämföra energiförbrukning och uppskattad area, då system kanske inte har behov av höga klockfrekvenser utan en lägre energiförbrukning. 1.2 Problembeskrivning En ALU är en viktig komponent i en processor och att förstå hur olika adderararkitekturer påverkar hastighet, energikonsumtion och uppskattad area är viktigt då energiförbrukningen ibland kan vara viktigare än hastigheten. Författarna har som uppgift att implementera två olika digitala adderare för att sedan inkludera dessa i en 32-bitars ALU som fungerar för vanligt förekommande operationer i en processor som använder sig av "Microprocessor without Interlocked Pipeline Stages" (MIPS) instruktionsuppsättning. Exempel på operationer som kommer att implementeras är AND, OR, NOR, XOR, ADD, ADDS, ADDC, SUB samt shift höger/vänster. Syftet är att kunna undersöka vilken adderararkitektur som är att föredra vid särskilda frekvenser. 1

1.3 Syfte och frågeställningar I problembeskrivningen framgår det att det finns ett behov av att undersöka hur olika adderararkitekturer beter sig då en ALU som arbetar vid högre frekvenser kan påverka hela systemet i form av hastighet och energiförbrukning. Detta arbete kommer att fokusera på kompromisser mellan hastighet, energiförbrukning och area mellan olika adderare. Därmed är syftet med denna studie: Att studera två olika adderararkitekturer för att kunna svara på när en av de två adderararkitektur som valts att undersöka är att föredra framför den andra. För att kunna besvara syftet har det brutits ned i tre frågeställningar. Rapporten kommer att fokusera på två olika adderararkitekturer; ripple-carry adder och sklansky adder [13]. För att kunna besvara rapportens huvudsyfte måste dessa implementeras och simuleringar utföras på de olika adderarna i fungerande ALU:er för att ställa dem mot varandra. Dessa valdes eftersom adderare används i majoriteten av all digital elektronik och för att kunna påvisa att det inte endast är hastigheten av komponenten som är viktig. Det finns flera parametrar som spelar roll, som t.ex hur höga frekvenser det går klocka de olika adderararkitekturerna med. Därmed är studiens första frågeställning: Vilken adderararkitektur är effektivast i relation till hastighet, energiförbrukning och uppskattad area? När det är fastställt vilken adderararkitektur som är effektivast i relation till hastighet, energiförbruknng och uppskattad area så är det intressant att veta vilka parametrar som styr valet av vilken arkitektur som bör användas. Därmed är studiens andra frågeställning: Vilka parametrar styr valet av att använda antigen en ripple-carry adder eller en Sklansky adder arkitektur och vilka för- och nackdelar har de båda arkitekturerna? När det är fastställt vilka parametrar som styr valet av att använda sig av en ripple-carry eller en sklansky-adderare så är det intressant att veta hur höga frekvenser de båda implementationerna klarar av att arbeta vid, detta för att se hur många beräkningar per sekund de klarar av att utföra. Därmed är studiens tredje frågeställning: Vilka huvudsakliga parametrar avgör vid vilken frekvens en adderare slutar fungera? För att besvara frågeställningarna och därmed uppfylla syftet kommer en experimentell studie att genomföras. 1.4 Omfång och avgränsningar Detta arbete kommer inte att resultera i någon slutgiltig hårdvara. Fokus ligger på att implementera de olika ALU:erna i det hårdvarubeskrivande språket VHDL och sedan utföra simuleringar på de olika implementationerna för att se hur de olika adderarna påverkar dem. Följande saker ingår i rapporten: information om hur de olika adderarna är uppbyggda för- och nackdelar med de olika adderararkitekturerna. 1.5 Disposition Rapporten är disponerad enligt en rapportmall för examensarbeten vid Tekniska Högskolan i Jönköping. 1.5.1 Metod och genomförande Här beskrivs det i stora drag hur detta examensarbete utförts från början till slut rörande informationsinsamling, genomförande och testning. Till sist beskrivs det hur författarna har gått tillväga för att implementera de olika adderarna i varsin ALU. 2

1.5.2 Teoretiskt ramverk I kapitlet teoretiskt ramverk presenteras den fakta som läsaren bör känna till innan man går igenom rapportens resterande delar. Kapitlet inleds med att beskriva hur en ALU fungerar samt hur de olika adderarna är uppbyggda för att skapa en bättre förståelse för läsaren. 1.5.3 Empiri Här presenteras all empirisk data som ligger till grund för detta examensarbete. 1.5.4 Analys I analysen presenteras de resultat som författarna har kommit fram till genom detta examensarbete. Här presenteras svar på de olika frågeställningarna. 1.5.5 Diskussion och slutsatser Under kapitlet Diskussion och slutsatser delger författarna sina egna åsikter samt vilka slutsatser som man har kommit fram till i rapporten. Man kommer även att ta upp svar som är kopplade till frågeställningar och syftet som rapporten är grundad på. 3

2 Metod och genomförande Detta arbete har utförts med hjälp av en kvalitativ litteraturstudie [2] och därefter genom en experimentell studie [3]. Litteraturstudien för att samla tillräckligt med information och teorier för att kunna bilda oss en teoretisk grund. Därefter har ett par teorier valts ut för att testa dessa genom en experimentell studie, för att avgöra om teorierna stämmer överens med simuleringarna. 2.1 Koppling mellan frågeställningar och metod I följande kapitel beskrivs metoder för datainsamling och dataanalys som används för att besvara studiens frågeställningar. För att besvara studiens första frågeställning Vilken adderararkitektur är effektivast i relation till hastighet, energiförbrukning och uppskattad area? har en experimentellstudie genomförts där simuleringar av de två olika ALU-implementationerna har utförts vid olika klockfrekvenser för att se när de inte längre klarar av att leverera korrekt resultat då den kritiska datavägen är för lång. För att besvara studiens andra frågeställning Vilka parametrar styr valet av att använda antigen en Ripple-carry adder eller en Sklansky adder arkitektur och vilka för- och nackdelar har dessa båda arkitekturer? har litteraturstudier genomförts där författarna sedan analyserar de olika parametrarna. För- och nackdelar hos de olika teorierna verifieras och en slutsats fastställs till frågeställningen med sin grund i vad teorierna beskriver. För att besvara studiens tredje frågeställning Vilka huvudsakliga parametrar avgör vid vilken frekvens en adderare slutar fungera? har en litteraturstudie och en experimentell studie genomförts. Funna artiklars teorier har beskrivits och sedan analyserats. Teorierna jämförs sedan mot den empiriska data som samlats in. 2.2 Arbetsprocessen Detta underkapitel kommer att beskriva hur varje steg i arbetsprocessen genomförts i detalj. Under den praktiska delen av arbetet valde författarna att bryta ner arbetet i flera olika faser som sedan skulle upprepas fram tills det att nödvändig empirisk data erhållits. Det kallas iterativ utveckling, där informationsinsamling, implementering och testning pågår kontinuerligt under arbetets gång [4], [5]. Målet med varje iteration var att alltid inkludera något nytt i designen och när fel påträffades fortsatte arbetet tills det fungerade som tänkt. 2.2.1 Förstudie Det första som utfördes i arbetet var att beskriva bakgrunden bakom adderar-arkitekturerna. Ripple-carry adder, som har en enkel design och Sklansky adder, som har en avancerad design. Efter denna grundläggande information om hur de olika adderarna är uppbyggda och fungerar följer vad som redan är fastställt inom frågeställningar och vad författarna förväntar sig för resultat. Detta beskrivs mer i kapitel tre. De funna artiklarna analyseras utifrån respektive frågeställning och information som ansetts vara relevant för detta arbete har beskrivits under respektive områdeskapitel. Databaser och sökmotorer som använts för att hitta vetenskapliga artiklar till detta arbete är Google Scholar, Scopus och Primo. 4

2.2.2 Informationsinsamling Detta examensarbete har kunnat utföras genom informationsinsamling i form av litteraturstudier som bidragit till underlag för studien och hur de olika adderar-arkitekturerna implementeras. De olika tillvägagångssätten har bestått av: Databaserna PRIMO, Scopus och Google Scholar har använts för att hitta vetenskapliga artiklar. Sökmotorn Google har använts för att hitta hemsidor med relevant information för att implementera en ALU och verifiera korrekt beteende. 2.2.3 Implementation Innan empirisk data kunde erhållas från de experimentella studierna behövde två ALU:er implementeras och testas för att verifiera att de har korrekt funktionalitet. För att kunna verifiera, testa och jämföra våra designer har arbetet genomförts enligt ett traditionellt designflöde för den digitala sidan av integrerade kretsar. De viktigaste stegen i konstruktionsflödet är funktionell verifiering, logisk syntetisering och statisk-tidsanalys [6]. Första steget i konstruktionsprocessen påbörjades genom att designa två separata ALU:er, en som var baserad på en enkel ripple-carry adderare och den andra baserad på en Sklansky adderare. 2.2.4 Testning och utvärdering När de två ALU:erna implementerats behövde verifiering av korrekt funktionalitet utföras och för att göra detta behövdes en testbänk för att sedan köra ALU:erna genom den. Ifall fel upptäcktes av testbänken återgick arbetet tillbaka till ALU-designen för att analysera vad som var fel för att sedan kunna rätta till det. Testningen utfördes genom att köra de båda ALU:erna genom en egen designad testbänk. Testbänken skickade in stimuli från ett verifierat testscenario som den sedan kontrollerade för att verifiera att ALU:erna producerade det förväntade resultatet för den avsedda operationen. Ifall fel påträffades analyseras det varför det uppstod för att sedan korrigera det. 5

Figur 1, Studiens arbetsprocess 2.3 Ansats Studiens syfte är att undersöka hur olika adderararkitekturer förhåller sig till varandra och vilken arkitektur som är effektivast i olika sammanhang. För att uppnå detta syfte har två olika typer av adderare analyserats. 2.4 Datainsamling Denna studies datainsamling har till stor del bestått av experimentella studier vars resultat har uppmäts i simuleringsprogrammet Cadence [8]. Datainsamlingen från litteraturstudier har pågått kontinuerligt under hela arbetets gång. En undersökning har genomförts om hur olika adderare är uppbyggda och sedan hur dessa kan implementeras och analyseras. 2.5 Dataanalys I denna studie har författarna använt sig av en kvalitativ datanalys. Syftet med att göra en kvalitativ datanalys är att beskriva ett visst fall med dess egenskaper och de olika relationerna mellan dessa [2]. 2.6 Trovärdighet För att en studie skall anses trovärdig måste forskaren kunna påvisa att informationen som införskaffats har samlats in på ett seriöst och, för den aktuella problemställningen, relevant sätt. Studien har tillämpat en experimentell studie där två olika adderare implementerats och inkluderats i varsin ALU för att simulera och jämföra resultaten från simuleringarna mot teorier. ALU:erna har verifierats mot ett testscenario för att kontrollera att kretsarna har korrekt funktionalitet. ALU:erna har simulerats för två olika cell-bibliotek som är byggda på 65-nm CMOS-teknologi. Detta för att kunna jämföra hur de olika adderar-arkitekturerna påverkar ALU:ns hastighet, energikonsumtion och area vid olika klockfrekvenser. 6

2.7 Utvecklingsverktyg För att designa och verifiera ALU:er mot en testbänk har författarna använt sig av utvecklingsmiljön Modelsim [7] som är en utvecklingsmiljö för att simulera hårdvarubeskrivningsspråk som VHDL och Verilog. Hårdvarubeskrivningsspråket som ALU:erna implementerats i är VHDL. För att syntetisera, koppla de olika designerna mot specifika cell-bibliotek och utföra tid- och effektsimuleringar har mjukvaran NCSIM logic simulation tool använts, vilket är ett verktyg inkluderat i Inclusive Enterprise Simulator (IES) från Cadence [8]. 7

3 Teoretiskt ramverk I följande kapitel beskrivs teoretisk grund för att besvara studiens frågeställningar. De olika adderarkitekturerna som undersökts kommer att beskrivas i detalj för att ge läsaren en inblick i hur dem fungerar. 3.1 Koppling mellan frågeställningar och teori För att ge en teoretisk grund till frågeställningarna beskrivs först följande områden i det teoretiska ramverket: Instruktionsuppsättning, ALU, vad en adderare är, två olika adderarkitekturer, syntetisering, teknologimappning, inkrementell optimering, energiförbrukningsanalys och cell-bibliotek. För att ge en teoretisk grund till den första frågeställningen Vilken adderararkitektur är effektivast i relation till hastighet, energiförbrukning och uppskattad area? beskrivs följande områden i det teoretiska ramverket: Ripple-carry adder, Carry-lookahead adder och energiförbrukningsanalys. För att ge en teoretisk grund till den andra och tredje frågeställningen Vilka parametrar styr valet av att använda antingen en Ripple-carry adder eller en Sklansky adder arkitektur och vilka för- och nackdelar har de båda arkitekturerna? samt Vilka huvudsakliga parametrar avgör vid vilken frekvens en adderare slutar fungera? beskrivs följande områden i det teoretiska ramverket: Syntetisering, Technology mapping, Inkrementell optimering, Verifiering och cell-bibliotek. 3.2 Instruktionsuppsättning Instruction Set Architecture (ISA) beskriver vilka operationer som finns tillgängliga för processorprogrammering. ISA definierar även processorns maskinkod, det vill säga hur instruktionerna uttrycks som binära sekvenser. MIPS instruktionsuppsättning är en Reduced Instruction Set Computer (RISC) baserad processorarkitektur som utvecklats av MIPS Computer Systems Inc. MIPS är nu en industristandard och en av de ledande instruktionsuppsättningarna för inbyggda system [9]. MIPS instruktionsuppsättning använder sig vanligtvis av en 32-bitars carry lookahead ALU [10] detta för att kunna utföra aritmetiska operationer såsom addition och subtraktion snabbare än vad man hade kunnat med en ripple-carry baserad ALU [10]. 8

3.3 Aritmetisk Logisk Enhet En ALU fungerar som en databehandlingsenhet och är en viktig del i alla processorerarkitekturer. En ALU är en multifunktionell krets som utför en av flera olika funktioner på två binära heltal. En av de viktigaste delarna i en ALU är själva adderarkretsen som gör det möjligt för ALU:n att utföra aritmetiska operationer som addition och subtraktion [11]. Figur 2, Aritmetisk Logisk enhet Exempel på operationer och dess binära motsvarighet nedan: 0001: bitvis AND operation 0010: bitvis OR operation 0011: bitvis NOR operation 0100: bitvis XOR operation 0101: ADD (unsigned, A+B) 0110: ADDS (unsigned A+B, minnesregister C är uppdaterat med additionens överflöde) 0111: ADDC (unsigned, A+B+C, där C är minnesregistret) 1001: shift left 1010: shift right (logical) 1011: shift right (arithmetical, signed) 9

3.4 Vad är en adderare? I digital elektronik är en adderare en krets som utför addition av två heltal. Adderare är inte enbart användbara i ALU:er utan även i andra delar av processorn där de kan användas för att t.ex. beräkna adresser [12]. 3.4.1 Halvadderare För att kunna konstruera en 32-bitars ripple-carry adderare behövs först en 1-bitars adderare. En 1-bitars halvadderare fungerar enligt sanningstabellen i tabell 1. Anledningen till varför den kallas halvadderare är för att den inte tar hänsyn till ifall den skulle få en minnessiffra skickad till sig. Från sanningstabellen i tabell 1 kan vi enkelt se att minnesbiten C (för carry, därav namnet ripple-carry) bestäms genom en AND-funktion och summabiten bestäms genom en XOR-funktion. Genom att förstå hur en halvadderare fungerar kan vi utöka komponenten till en heladderare som även tar hänsyn till minnesbiten. Tabell 1, Sanningstabell halvadderare Insignaler Utsignaler A B C S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 Figur 3, Halvadderare 3.4.2 Heladderare För att skapa en heladderare som även tar hänsyn till en ingående minnesbit (Cin) behövs det fler logiska grindar. Genom att titta på sanningstabellen i tabell 2 för en heladderare kan man finna ett uttryck efter lite härledning. Kretsschemat kan även ses i figur 4 nedan. Tabell 2, Sanningstabell heladderare Insignaler Utsignaler A B Cin Cout S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 Figur 4, Heladderare 10

3.5 Ripple-carry adder Genom att koppla samman flera likadana kretsar i en kedja kan en N-bitars adderare skapas. Carry out på den förgående heladderaren kopplas till nästa heladderares Carry in i kedjan [13]. I figur 5 nedan visas en 4-bitars ripple-carry adderare. Figur 5, 4-bit ripple-carry 3.6 Carry-lookahead adder En carry-lookahead adder är en typ av träd-adderare som används i digitala kretsar. En carrylookahead adderare gör det möjligt att utföra en addition snabbare genom att introducera logik som gör att beräkningstiden för minnesbitarna minskar. Detta kan jämföras med den något enklare men långsammare ripple-carry adderaren där varje minnesbit beräknas samtidigt som summabiten och varje enskild bit måste vänta på att den föregående heladderaren är klar med sin beräkning innan den kan beräkna sin egen summa- och minnesbit. Carry-lookahead adderaren beräknar istället flera minnesbitar före summabiten, detta gör att hela additionen går snabbare på bekostnad av att introducera mer logik som förbrukar mer energi och ger större area[13]. 11

Det finns olika träd-adderararkitekturer och alla har någon för- och nackdel. En ideal trädadderare skulle ha log 2 N logik-nivåer, aldrig ha en utgång som är kopplad till fler än två andra grindar och inte heller ha mer än en cell som är kopplad till föregående logik-nivå [13]. Tyvärr finns det ingen idealisk träd-adderararkitektur tillgänglig då alla arkitekturer närmar sig idealet men de skiljer sig alla i olika avseenden. Sklansky-adderaren använder sig av divide-and-conquer för att reducera fördröjningen till log 2 N steg. Detta sker på bekostnad av antalet fanouts som fördubblas för varje nivå. Det höga antalet fanouts kan orsaka dålig prestanda hos 32- och 64-bitars adderare såvida inte grindarna med högt antal fanouts buffras innan dess signal används [13]. Adderaren använder sig av carry-lookahead logik för att reducera tiden det tar att beräkna minessiffrorna. Den extra logiken gör även att kretsen konsumerar mer energi och tar upp mer yta. Figur 6, Olika logikblock i Sklansky adderaren Figur 7, 16-bitars Sklansky adderare 12

3.7 Syntetisering För att skapa en fysisk design av VHDL-kod måste den vara syntetiserbar. Syntetiserbar innebär att VHDL-kodens funktionalitet går att beskriva i Register-Transfer Level (RTL) kod vilket är representationen av kod i logiska grindar. Först kompileras RTL-koden till ett oberoende cell-bibliotek och en nätlista skapas som är optimerad för den kortaste kritiska datavägen som möjligt, en nätlista är en beskrivning av hur en elektronisk krets är ihopkopplad. När nätlistan har blivit genererad är det möjligt att koppla ihop den till ett visst cell-bibliotek [14]. Det finns en mängd olika cell-bibliotek och de kan vara designade för till exempel låg energiförbrukning eller hastighet [6], [15]. Figur 8, VHDL kod och motsvarande nätlista 3.8 Cell-bibliotek Ett cell-bibliotek är en samling av låg-level elektriska logiska funktioner som NAND, NOR, inverterare och vippor. Cell-bibliotekens representationer av de logiska funktioner är hur transistorerna är ihopkopplade för att fylla den avsedda logik-funktionen som cellen motsvarar [16], [17]. Figur 9, En 2-input CMOS NAND-grind Figur 10, Hur en 2-input CMOS NAND grinds layout ser ut, d.v.s hur den ska kopplas på transistor nivå 13

3.9 Technology mapping Teknologimappning (technology mapping) är processen där en särskild logisk krets är implementerad med hjälp av ett särskilt cell-biliotek. Till varje logisk krets finns det information angående dess area, fördröjning och energiförbrukning. De flesta cell-biblioteken innefattar samma logiska element med olika storlekar för att kunna driva olika stora laster. Detta leder till att om man kopplar sin design till ett särskilt cell-bibliotek optimeras designen för att hamna innanför fördröjnings-restriktionerna med den minsta möjliga energiförbrukningen [18], [19]. 3.10 Inkrementell optimering När nätlistan kopplas till ett särskilt cell-bibliotek placeras grindar ut som gör att nätlistan uppfyller sin funktionalitet med den minsta möjliga energiförbrukningen. Ifall fördröjningsrestriktioner blivit angivna vid påbörjandet av mappning till cell-biblioteket kommer den kritiska datavägen att jämföras mot fördröjnings-restriktionen och ifall designen inte uppfyller kraven kommer en inkrementell optimeringsalgoritm att påbörjas. Den inkrementella optimeringsalgoritmen byter ut små och svaga grindar mot större och kraftigare grindar och kontrollerar sedan om signal-fördröjningen har blivit kortare. Ifall fördröjningen har blivit kortare går den vidare till nästa grind i designen och fortsätter tills den förhoppningsvis uppfyller tids-kraven. Optimeringsalgoritmen gör alltså att designen tar upp mer area och förbrukar mer energi för att uppnå de tids-krav som ställts på kretsen [20]. 14

3.11 Verifiering Designens funktionalitet testas genom alla möjliga scenarion för att säkerställa att den fungerar enligt specifikationerna. För stora och komplicerade kretsar blir det därför i princip omöjligt att verifiera till 100% då antalet möjliga scenarion blir oändligt många [6]. Att upptäcka fel i elektroniska kretsar innan de har tillverkats är ett effektivt sätt att dra ner på utvecklingstid och kostnader. Ett sätt detta görs på är genom att bygga en anordning runt sin prototyp-krets som brukar kallas hårdvaru-testbänk. En hårdvaru-testbänks syfte är att den skall generera input-stimuli till kretsen och sedan granska det genererade resultatet ifall det är korrekt. En testbänk består av tre huvuddelar, stimuli generation, anordningen som ska testas (DUT, från engelskans Device Under Test) och slutligen övervakaren som skall verifiera resultatet [21]. Figur 11, Testbänks-konfiguration med de olika delarna I äldre teknologier var en krets fördröjning längs en särskild väg dominerad av signalfördröjningarna i grindarna och de flesta grindarna hade liknande fördröjning. På grund av detta var det möjligt att estimera fördröjningen av den kritiska datavägen genom att räkna antalet grindar längs den vägen och multiplicera det antalet med ett typiskt grindfördröjningsvärde. Fördröjningen hos en krets var därför känd direkt när syntetisering hade bestämt antalet grindar längs en särskild väg. Denna metod för att beräkna fördröjningen i en krets är med dagens teknologi bristfällig, i nuläget måste ett cell-bibliotek specificeras för att kunna estimera fördröjningen hos en krets [15]. Metoden som används för att beräkna fördröjningen i en krets kallas statisk-tidsanalys (STA, från engelskan static timing analysis). STA är en metod för att estimera den kritiska datavägen hos en krets och därmed estimera hur snabbt man kan klocka kretsen [6]. Den kritiska datavägen är den väg längs en krets där signalfördröjningen är som längst. När den genererade nätlistan har producerats och mappats till ett visst cell-bibliotek är det nödvändigt att verifiera att den uppfyller samma logiska beteende som koden den har genererats från. Detta görs genom att köra nätlistan igenom samma testbänk som koden har verifierats med. Det är viktigt att den genererade nätlistan uppfyller de hastighetskrav som designen estimerats till i den statiska-tidsanalysen. Detta kan göras genom att successivt öka klockfrekvensen på designen när den körs genom testbänken, tills den inte längre klarar av att producera ett korrekt resultat [14]. 15

3.12 Energiförbrukningsanalys Med tanke på hur viktig en krets energiförbrukning kan vara, behöver utvecklingsverktyg kunna uppskatta den estimerade energiförbrukningen. Vid utvärdering av olika designalternativ behövs uppskattningar som indikerar vilket det effektivaste designalternativet är i förhållande till energiförbrukning. Att uppskatta energiförbrukning är mer komplicerat än att uppskatta till exempel area eller fördröjningen av en krets. Eftersom energiförbrukning hos en krets inte enbart är relaterat till topologin utan även beroende på aktiviteten hos signalerna, det vill säga hur ofta signalerna byter tillstånd [22]. Det finns tre olika typer av energiförbrukning i CMOS-kretsar och dessa är följande: Dynamic power (Pdyn) Short-circuitpower (Pshort) Static power (Pstatic) Den totala energiförbrukning är sedan given av summan av dessa tre [13]: 3.12.1 Dynamisk-energiförbrukning P = Pdyn + Pshort + Pstatic Den dynamiska energiförbrukning, Pdyn är relaterad till upp- och urladdningen av lastkapacitansen på grindarnas utgångar. Denna typ av energiförbrukning är den mest dominanta källan till energiförbrukning i CMOS-kretsar. Den dynamiska energiförbrukningen kan beräknas med följande formel [13],[23],[24]: Pdyn = α C Vdd 2 f Där α är aktivitetsfaktorn hos signalerna, det vill säga hur ofta signalerna byter tillstånd per klockpuls [13],[24]. 3.12.2 Kortslutnings-energiförbrukning Kortslutnings-energiförbrukningen, Pshort är relaterad till när grindarna byter tillstånd. När en grinds ingång byter tillstånd är det en väldigt kort tid då både pmos och nmos transistorerna är ledande och skapar en väg från Vdd till jord som kortsluter grinden. Figur 12, Illustration av dynamisk- och kortslutnings-energiförbrukning 16

3.12.3 Statisk-energiförbrukning Den statiska energiförbrukningen, Pstatic beror på strömläckage i MOSFET-transistorerna. Denna typ av energiförbrukning är statisk och beror inte på kretsens aktivitet och den existerar tills kretsen inte länge är spänningsdriven. Denna typ av energiförbrukning existerar eftersom att en MOSFET transistor aldrig kan vara helt avstängd, det finns alltid ström som går igenom transistorn. Denna ström är liten men i stora och komplicerade kretsar med miljontals eller miljarder transistorer blir energiförbrukningen avgörande. Denna typ av energiförbrukning brukade vara försumbar gentemot den dynamiska energiförbrukningen men med teknikens snabba utveckling är det inte längre fallet [22]. Tröskelspänningen (threshold voltage) hos en transistor definieras som den minsta spänning som krävs för att få transistorn att vara ledande. Detta gäller för både nmos och pmos transistorer. För nmos transistorer är tröskelspänningen positiv och för pmos transistorer är den negativ. Lägre tröskelspänningsvärden hos transistorerna gör det möjligt att klocka transistorn snabbare då spänningen inte behöver justeras lika mycket för att byta läge. Ju lägre tröskelspänning en transistor har desto högre är även strömläckaget hos transistorn vilket gör att den statiska energiförbrukning ökar [13]. 17

Area (µm^2) 4 Empiri I arbetet har en experimentell studie genomförts. Den visar hur adderararkitektur påverkar energiförbrukning, area samt hastighet hos en ALU genom att utföra simuleringar med två olika cell-bibliotek. Dessa simuleringsresultat är erhållna efter att syntetiseringsalgoritmer har optimerat designernas nätlistor och sedan har optimeringsalgoritmer körts för att hamna inom de utsatta tids-restriktionerna. Cell-biblioteken som använts är CORE65GPSVT och CORE65LPSVT. CORE65GPSVT är ett General Purpose-bibliotek och CORE65LPSVT är ett Low Power-bibliotek. Båda biblioteken är byggda på 65-nm CMOS-teknologi. Encounter RTL Compiler v.09-10-p104_1 har använts för att syntetisera designerna. 4.1 Area i relation till tids-restriktion Genom att sätta hårdare tids-restriktioner på kretsen kommer en optimeringsalgoritm att gå igenom kretsen och börja byta ut svaga grindar med hög signalfördröjning mot starkare grindar med lägre signalfördröjning. Detta för att försöka hamna inom de utsatta tidsrestriktionerna. Först syntetiserades designerna med restriktioner på 4000 ps och sedan ökades kraven succesivt, för att se hur arean skalas i relation till tids-restriktionerna. 4200 Area in relation to time constraint ALU Ripple-Carry-GP ALU Ripple-Carry-LP ALU Sklansky-GP ALU Sklansky-LP 4000 3800 3600 3400 3200 Time Constraint (ps) 3000 900 1400 1900 2400 2900 3400 3900 Figur 13, Area i relation till tids-restriktioner med olika bibliotek och adderare Simuleringar utfördes med de två olika cell-biblioteken för att se hur de två olika ALU:erna skalades i relation till vad ALU:n hade för hastighetskrav. I figur 13 ovan kan detta ses. Generellt sett ökar arean i relation till hårdare hastighetskrav, detta fenomen analyseras i analys kapitlet. I figur 13 ovan står förkortningarna GP och LP för General Purpose och Low Power respektive. 4.2 Tids-restriktion och kritisk dataväg När designen kopplas till ett särskilt cell-bibliotek försöker optimeringsalgoritmen påverka den kritiska datavägen mot de angivna tids-restriktionerna för att få kretsen att förbruka mindre energi. Under syntetiseringen angavs striktare tids-restriktioner tills optimeringsalgoritmen inte längre klarade av att optimera den kritiska datavägen i kretsen. Resultaten kan ses i tabell 3 och 4 nedan. 18

Tabell 3, Kritisk dataväg med låg-effekts bibliotek Tabell 4, Kritisk dataväg med bibliotek för generella syften Low Power Library (CORE65LPSVT_5.1_nom_1.2V_25C) ALU Ripple-Carry Timing constraint (ps) Timing (ps) No constraint 4181 2000 1992 1900 1900 1800 1800 1700 1700 1600 1600 1500 1500 1400 1416 ALU Sklansky Timing constraint (ps) Timing (ps) No constraint 1824 1000 952 900 892 800 798 700 699 600 600 500 581 General Purpose Library (CORE65GPSVT_5.1_nom_1.1V_125C) ALU Ripple-Carry Timing constraint (ps) Timing (ps) No constraint 2646 1700 1698 1600 1597 1500 1500 1400 1400 1300 1293 1200 1199 1100 1151 ALU Sklansky Timing constraint (ps) Timing (ps) No constraint 950 500 499 450 450 400 400 350 378 Den kritiska datavägen hos den Ripple-carry-baserade ALU:n och den Sklansky-baserade ALU:n kan ses respektive i figur 11 och 12 nedan. Genom att analysera figurerna nedan kan vi se att den kritiska datavägen genom de båda ALU:erna går genom adderarkretsen 19

Figur 14, Kritisk dataväg, ripple-carry-baserad ALU Figur 15, Kritisk dataväg, Sklansky-baserad ALU 20

Power Consumption (µw) Power Consumption (µw) 4.3 Energiförbrukning vid samma tids-restriktion För att kunna göra en rättvis bedömning av de båda designernas energiförbrukning behövde båda designerna syntetiseras för samma tids-restriktion för att optimeras för det utsatta kravet. Simuleringarna har utförts vid samma tids-restriktioner som de båda implementationerna är funktionella vid för de två olika biblioteken. 400 Power consumption Low-Power Library 350 ALU Ripple-Carry ALU Sklansky 300 250 200 Time constraint (ps) 150 1300 1800 2300 2800 3300 3800 Figur 16, Energiförbrukning med lågenergiförbruknings-bibliotek 1100 Power Consumption General Purpose Library ALU Ripple-Carry ALU Sklansky 1000 900 800 700 600 Time Constraint (ps) 500 1000 1500 2000 2500 3000 3500 4000 Figur 17, Energiförbrukning med bibliotek för generella syften 21

Static Power Consumption (µw) Dynamic Power Consumption (µw) 4.4 Dynamisk energiförbrukning 430 Dynamic Power Consumption ALU Ripple-Carry-LP ALU_SKL_LP_DYN ALU Ripple-Carry-GP ALU Sklansky-GP 380 330 280 230 Time Constraint (ps) 180 1300 1800 2300 2800 3300 3800 Figur 18, Dynamisk energiförbrukning hos de olika ALU:erna mod olika bibliotek 4.5 Statisk energiförbrukning 590 Static Power Consumption General Purpose Library ALU Ripple-Carry ALU Sklansky 540 490 440 390 Time Constraint (ps) 340 1300 1800 2300 2800 3300 3800 Figur 19, Statisk energiförbrukning med bibliotek för generella syften 22

Static Power Consumption (µw) 0,25 Static Power Consumption Low Power Library ALU Ripple-Carry ALU Sklansky 0,23 0,21 0,19 0,17 Time Constraint (ps) 0,15 1300 1800 2300 2800 3300 3800 Figur 20, Statisk energiförbrukning med bibliotek för lågenergikonsumtion 23

5 Analys Kapitlet ger svar på studiens tre frågeställningar angående när en av de två adderararkitektur som studerats är att föredra framför den andra genom att behandla insamlad empiri och teoretiskt ramverk. 5.1 Frågeställning 1 Analysen nedan behandlar insamlad empiri och teoretiskt ramverk för att kunna ge svar på frågeställningen: Vilken adderararkitektur är effektivast i relation till hastighet, energiförbrukning och uppskattad area? Vilken adderarkitektur som är effektivast skiljer sig beroende på vad det är för krav som ställs på kretsen. Strävar man efter en låg signalfördröjning hos den kritiska datavägen bör man välja en träd-adderare framför en enkel ripple-carry-adderare. Träd-adderararkitekturerna är konstruerade för att utföra additionen mycket snabbare, vilket gör det möjligt att klocka kretsen snabbare [13]. Vilken adderararkitektur som är effektivast i relation till energiförbrukning skiljer sig beroende på hastighetskrav under syntetisering. Vid en särskild frekvens uppstår en brytpunkt där Sklansky-adderaren konsumerar minst energi. Detta fenomen uppstår på grund av att ripple-carry-adderaren behöver optimeras mycket mer än Sklansky-adderaren då träd-arkitekturen, som Sklansky-adderaren, erhåller sin snabbhet från dess smarta design. Anledningen till detta förklaras under syntetisering [6], [15], technology mapping [16], [17], Inkrementell optimering [20] samt Energiförbrukningsanalys [13] i det teoretiska ramverket. Den enkla adderaren konsumerar mer energi då den behöver ersätta många svaga celler mot starkare celler som har lägre signalfördröjning för att försöka hamna innanför tidsrestriktionerna. Detta gör att energikonsumtionen ökar då de starkare cellerna konsumerar mer energi [20]. Vid lägre frekvenser är därför ripple-carry-adderaren det energieffektivaste alternativet och efter brytpunkten är Sklansky baserade ALU:n effektivast i relation till energiförbrukning. Denna brytpunkt för de två olika cell-biblioteken kan ses i figur 16 och figur 17. Vilken adderararkitektur som är effektivast i relation till uppskattad area följer samma mönster som effektivast energiförbrukning. Vid lägre frekvenser är det ripple-carry baserade ALU:n som har lägst area i relation till kretsens hastighetskrav. Vid högre hastighetskrav behöver små celler bytas ut mot större och kraftigare celler som är fysiskt större och tar upp mer area [20]. Vid en särskild frekvens uppstår en brytpunkt då den ripple-carry-baserade ALU:n inte längre är minst i relation till dess area vilket kan ses i figur 13. 5.2 Frågeställning 2 Analysen nedan behandlar insamlad empiri och teoretiskt ramverk för att kunna ge svar på frågeställningen: Vilka parametrar styr valet av att använda antigen en Ripplecarry adder eller en Sklansky adder arkitektur och vilka för- och nackdelar har dessa båda arkitekturer? Det är flera parametrar som styr valet av adderarkitektur och valet måste göras för enskilda fall beroende på vilka krav som finns på kretsen. Parametrarna som har studerats i denna studie är snabbhet, energiförbrukning och area. Beroende på vilka krav som ställs på adderaren ger de olika för- och nackdelar som behöver övervägas. 24

Fördelarna med att använda en Sklansky-adderare över en enkel ripple-carry adderare är främst att den använder sig av carry-lookahead logik vilket gör det möjligt att klocka kretsen snabbare än vad en enkel ripple-carry-adderare klarar av [13]. Fördelearna med ripple-carry-adderaren är att den är väldigt enkel och snabb att implementera. Ripple-carry-adderaren är även mycket energieffektiv vid lägre frekvenser och tar upp mindre area än en träd-adderare [13]. Carry-lookahead logiken som gör Sklansky-adderaren snabb gör att adderaren tar upp mer area och förbrukar mer energi. Den gör även att Sklansky-adderaren är något mer komplicerad att implementera vilket innebär att utvecklingstiden påverkas [13]. Enkelheten hos den enkla ripple-carry-adderaren är även en nackdel då carry signalen måste gå igenom alla logiknivåer i adderaren. Den kritiska datavägen hos ripple-carry baserade ALU:n och den Sklansky baserade ALU:n kan ses i figur 14 och figur 15 respektive. 5.3 Frågeställning 3 Analysen nedan behandlar insamlad empiri och teoretiskt ramverk för att kunna ge svar på frågeställningen: Vilka huvudsakliga parametrar avgör vid vilken frekvens en adderare slutar fungera? Den kritiska datavägen hos en krets avgör vid vilken frekvens som kretsen slutar fungera. I de två ALU-implementationer som har tagits fram i denna studie går den kritiska datavägen genom adderarkretsen i båda fallen vilket kan ses i figur 14 och figur 15. Den maximala frekvensen som kretsen klarar av att arbeta vid kan beräknas med hjälp av tidsfördröjningen hos kretsens kritiska dataväg genom formeln nedan [13]. Hur låg signalfördröjning de två olika ALU-implementationerna lyckades att optimeras till med de två olika cell-biblioteken kan ses i tabell 3 och tabell 4. 1 T Crit = f Genom att köra nätlistorna genom optimeringsalgoritmer när de väl kopplats till ett specifikt cell-bibliotek byts successivt små och svaga grindar ut mot större och starkare grindar som har lägre signalfördröjning [18]. Detta för att hamna innanför de utsatta tidsrestriktionerna med den minsta möjliga energiförbrukning. Genom att ställa orimliga krav på kretsen kommer optimeringsalgoritmen att optimera kretsen för att hamna under det utsatta tidskravet ifall det är möjligt, vilket gör att kretsens hastighet optimeras för det angivna cellbiblioteket [20]. Val av cell-bibliotek har även en stor påverkan vid vilken frekvens adderarna slutar att fungera då cell-biblioteken som använts i denna studie är optimerade för två olika ändamål. Anledningen till att General Purpose-biblioteket är snabbare än Low Power-biblioteket, är att General Purpose-biblioteket är optimerat för att fungera vid 1.1V istället för 1.2V som Low Power-biblioteket. Detta beror på att transistorernas tröskelspänning är något lägre än för Low Power-biblioteket. Lägre tröskelspänning gör att spänningen inte behöver ändras lika mycket för att transistorn ska slå om [13]. Valet av adderararkitektur och cell-bibiliotek utgör därmed de viktigaste parametrarna för att avgöra vid vilken frekvens en adderare slutar att fungera. 25

6 Diskussion och slutsatser Kapitlet ger en sammanfattande beskrivning av studiens resultat. Vidare beskrivs studiens implikationer och begränsningar. Dessutom beskrivs studiens slutsatser och rekommendationer. Kapitlet avslutas med förslag på vidare forskning. 6.1 Resultat Vilken adderararkitektur är effektivast i relation till hastighet, energiförbrukning och uppskattad area? Den adderararkitektur som är effektivast i relation till hastighet är Sklansky-adderaren. Vilken adderarakitektur som är effektivast i relation till energiförbrukning beror på tidskraven som ställs på kretsen. Upp till en särskild frekvens är ripple-carry-adderaren den adderararkitektur som är energieffektivast och efter denna frekvens är det Sklanskyadderaren som är energieffektivast. Ripple-carry-adderaren använder sig av större celler med mindre fördröjning för att klara av de utsatta tidskraven. Brytfrekvensen skiljer sig mellan de två olika biblioteken, då det ena biblioteket är gjort för låg energiförbrukning medans de andra är gjort för hög hastighet. För Low Power biblioteket uppkommer brytpunkten vid 417 MHz och för General Purpose-biblioteket kommer brytpunkten vid 588 MHz. Ovanför dessa frekvenser är det Sklansky-adderaren som är den mest energieffektiva adderaren. Den adderararkitektur som är effektivast i relation till uppskattad area har också en brytpunkt. Ripple-carry-adderaren är effektivast och tar upp mindre area vid frekvenser under brytpunkten. Sklansky-adderaren tar upp mindre area vid frekvenser över brytpunkten. Brytpunkterna skiljer sig mellan de två olika biblioteken, för Low Power-biblioteket kommer brytpunkten vid 555 MHz och för General Purpose-biblioteket vid 869 MHz. Vilka parametrar styr valet av att använda antigen en Ripple-carry adder eller en Sklansky adder arkitektur och vilka för- och nackdelar har dessa båda arkitekturer? Fördelarna med Sklansky-adderaren är att den använder sig av carry-lookahead logik vilket gör det möjligt att klocka kretsen snabbare. Den stora nackdelen med Sklansky-adderaren är att den har större komplexitet vilket gör att den blir svårare att implementera samt att den använder sig av mer logik vilket gör att den tar upp mer area och förbrukar mer energi vid lägre frekvenser. Fördelarna med ripple-carry-adderaren är att den är enkel, snabb att implementera och enkel att förstå. Den stora nackdelen är att den har en väldigt lång kritisk dataväg vilket innebär att adderaren inte går att klocka lika snabbt som en träd-adderare. Vilka huvudsakliga parametrar avgör vid vilken frekvens som en adderare slutar fungera? Vid vilken frekvens en adderare slutar att fungera är av intresse då denna parameter avgör hur många beräkningar kretsen klarar av att utföra varje sekund. Den huvudsakliga parametern som avgör vid vilken frekvens som en adderare slutar fungera är kopplat till den kritiska datavägen hos adderaren, där val av adderararkitektur och cell-bibliotek har en stor påverkan på den kritiska datavägen. Det är viktigt att veta vid vilken frekvens en adderare slutar fungera vid då kretsen den ingår i ej längre är funktionell eftersom den inte kan utföra aritmetiska och bitvis-logiska operationer. 26

6.2 Implikationer Rapporten fastställer vid vilka frekvenser en träd-baserad adderararkitektur simulerade med två olika 65 nm cell-bibliotek är att föredra framför en enkel ripple-carry-adderararkitektur. Dessa resultat är endast baserade på de två cell-bibliotek som valts ut för detta examensarbete och kan skilja sig vid val av annat bibliotek men beteendet bör vara likartat fast för andra frekvenser. Därför bör adderare jämföras utifrån krav som ställs på kretsen i den specifika implementationen. 6.3 Begränsningar I arbetet har endast adderararkitekturerna Ripple-carry och Sklansky studerats när de implementerats i en ALU för två specifika cell-bibliotek baserade på 65 nm CMOS-teknologi. Det hade varit intressant att även undersöka skillnaderna mellan de olika träd-arkitekturerna som finns tillgängliga och se på vilka sett de skiljer sig och hur mycket det faktiskt skiljer sig mellan de olika träd-arkitekturerna. 6.4 Slutsatser och rekommendationer Arbetets syfte var följande: Att studera två olika adderararkitekturer för att kunna svara på när en av de två adderararkitektur som valts att undersöka är att föredra framför den andra. Genom att analysera olika faktorer hos två olika adderare som har implementerats i varsin ALU som sedan syntetiserats och simulerats med två olika cell-bibliotek som är baserade på 65 nm CMOS-teknologi. Parametrarna som studerats är hastighet, energiförbrukning och uppskattad area. Författarna visar att dessa faktorer är tillräckliga för att kunna avgöra vilken adderararkitektur som är lämpligast. Detta för att kunna rangordna parametrarna och därefter bestämma vilken adderararkitektur som är bäst anpassad för specifikationen. Arbetet har undersökt viktiga parametrar och fastställt vart brytpunkterna ligger för de valda cell-biblioteken hos adderararkitekturerna. Eftersom det möjliggör att avgöra vilken adderare som är att föredra beroende på krav på kretsen, anses rapportens syfte vara uppfyllt. Rekommendationer Om en datorarkitekt väljer mellan en ripple-carry-adderare och en Sklansky-adderare med syftet att kretsen ska klara frekvenser över 1 GHz, är Sklansky-adderaren det självklara valet då den klarar av höga frekvenser och är effektivast i relation till energiförbrukning och uppskattad area. Om syftet är att ta fram en mikrokontroller som endast behöver fungera upp mot ett par MHz bör man istället välja en enkel ripple-carry adderare då den uppfyller hastighetskraven och är avsevärt mycket effektivare i relation till energi och uppskattad area vid låga frekvenser. 27