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

Relevanta dokument
Digitalteknik och Datorarkitektur 5hp

rd, rs, rt Digitalteknik och Datorarkitektur 5hp ALU register) 32 bit register b 5 bit 32 Registers 32 bit MIPS is a Register-toregister

Foto: Rona Proudfoot (some rights reserved) Datorarkitektur 1. Datapath & Control. December

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

NUV 647E. Digitalteknik och Datorarkitektur 5hp. 3x12 = 36 2x12 = 24 1x12 = 12 0x12 = 18

Datorsystemteknik DVGA03 Föreläsning 8

Digitalteknik och Datorarkitektur

Grundläggande datavetenskap, 4p

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination

Stack och subrutiner Programmeringskonventionen

Lösningar till tentamen i EIT070 Datorteknik

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

DatorsystemteknikDAVA14 Föreläsning 9

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Lösningar till tentamen i EIT070 Datorteknik

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 2. Programmering i C och assembler MIPS instruktionsarkitektur. Institutionen för elektro- och informationsteknologi, LTH

Det finns en handledning till kortet på hemsidan. AVR STK500.

Mål. Datorteknik. Innehåll. Vad händer med en add-instruktion? Vad händer med en add-instruktion. Instruktioner som bitmönster i minnet

CE_O3. Nios II. Inför lab nios2time

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Digitala System: Datorteknik ERIK LARSSON

Styrteknik: Binära tal, talsystem och koder D3:1

Digitalteknik och Datorarkitektur 5hp

Det finns en hemsida. Adressen är

Kontrollskrivning Mikrodatorteknik CDT S2-704

Tentamen i EIT070 Datorteknik

Sekventiella krestar (minne)

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

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

Datorsystemteknik DAV A14 Föreläsning 1

Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

CE_O1. Nios II. Enkla assembler-instruktioner.

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

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

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

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

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

Datorarkitektur 1. Sekventiella kretsar (minne) December 2008

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Omtentamen i CDT204 - Datorarkitektur

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Digital Aritmetik Unsigned Integers Signed Integers"

Digital- och datorteknik

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Lösningar till tentamen i EIT070 Datorteknik

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

ÖH kod. ( en variant av koden används i dag till butikernas streck-kod ) William Sandqvist

Digital elektronik CL0090

Exempeltentamen Datorteknik, EIT070,

Datorsystemteknik DVGA03 Föreläsning 5

IE1204 Digital Design

Datorarkitekturer med operativsystem ERIK LARSSON

Tenta i Digitalteknik

Närliggande allokering Datorteknik

Datorsystemteknik DVG A03 Föreläsning 3

Tentamen. Datorteknik Y, TSEA28

Datorsystemteknik D. Lösningar till tentamen i kursen EDA330 14/1 2000

Programmering i maskinspråk (Maskinassemblering)

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Programmering i maskinspråk (Maskinassemblering)

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

Tentamen. Datorteknik Y, TSEA28

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

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

Introduktion C-programmering

Datorarkitekturer med operativsystem ERIK LARSSON

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Beijer Electronics AB 2000, MA00336A,

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

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

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

DIGITALA TAL OCH BOOLESK ALGEBRA

F2 Binära tal EDA070 Datorer och datoranvändning

OBS!! Detta är DEL 2 av tentan. För att få ut denna måste du ha lämnat in del 1. Om du inte fått ut del 1 bör du meddela skrivningsvakten. OBS!!

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Styrenheten styrsignalsekvenser programflödeskontroll

Repetition C-programmering

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

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

CE_O2. Nios II. Subrutiner med mera.

Digital- och datorteknik

Digital- och datorteknik

Exempelsamling Assemblerprogrammering

Tentamen PC-teknik 5 p

Tenta i Digitalteknik

Jacquards vävstol, 1801

Datorteknik. Föreläsning 7 Historia och framtid. Institutionen för elektro- och informationsteknologi, LTH

Pipelining i Intel 80486

Tentamen. Datorteknik Y, TSEA28

Transkript:

A basic -bit Select between various operations: OR, AND, XOR, and addition Full Adder Multiplexer Digitalteknik och Datorarkitektur hp Föreläsning : introduktion till MIPS-assembler - april 8 karlmarklund@ituuse Jisses Vi börjar redan få koll på hur vi skulle kunna bygga en - bitars Each register can store bits Input must be in one of these registers 7 8 9 a b MIPS is a Register-toregister architecture Once an is designed, we need to define how it interacts with the rest of the processor Output must go back to a register 7 8 9 c The Von Neuman Model (Stored Program Computer): Data and Instructions both stored in memory 7 8 9 c a b add c, a, b Alternativ notation för c a + b Design Principle - Simplicity favors regularity add $, $8, $ Vi anger med $n vilket register vi menar Detta är ett första exempel på en instruktion skriven i MIPS-assembler Genom en enkel design blir det lättare att få saker och ting att påminna om varandra

add $, $8, $ $ = $8 + $ Verkar vettigast att följa samma mönster när vi definierar subraktion Självklart är det bra om vi kan kolla om saker är lika, till exempel om a == b sub $, $8, $ $ = $8 - $ Ok, nu kan vi addera och subtrahera Favors Simplicity Operander måste hämtas från register och resultat måste skrivas tillbaka till något register Regularity Det blir naturligt att olika instruktioner påminner om varandra A simple -bit comparator seq $, $8, $ A B A == B A XOR B NOT (A XOR B) lika olika olika lika 7 8 9 $8 $ Set EQual Räcker om en input är, dvs ett bitpar är olika så ger NOR-grinden, dvs hela talet är olika Set to if content of $8 is equal to content of $, othervise set to 7 8 9 7 8 9 $ Även denna instruktion följer samma mönster Varför finns det endast st register? Design Principle : Smaller is faster 7 8 9 $8 $ $ 7 8 9 7 8 9

Logic needed here to select registers Det har alltså sina fördelar att vara liten En MIPS-instruktion i närbild bits bits bits bits bits bits register a bit register b bit Registers bit bit op rs rt rd shamt funct bits add $, $7, $8 register c bit bit Med fler register behöver vi fler bitar här mer logik tar mer plats och går långsammare op rs rt rd shamt funct R-type Design Principle : Make the common case fast bits bits bits bits Add Immediate addi $, $8, 77 bits addi $, $8, 77 Det är vanligt att man vill addera konstanter I detta fall adderas 77 till innehållet i register $8 och resultatet lagars i register $ Inte samma -kod som add I-type Hur uppstår data i registren från första början? register a bit register b bit register c bit Registers bit bit bit Minnet består av celler Varje cell har en unik adress En adress består av bitar I det hexadecimala talsystemet kan vi skriva -bitars tal med 8 hexadecimal siffror Address Content xffffffff xfffffffe xfffffffd xfffffffc x x x x Varje cell i minnet kan lagra åtta bitar, dvs en byte Fyra bytes bildar ett ord (word) om bitar

A Ett Ord B C D Intel x8, SPARC och Power PC använder little endian Big Endian: ett ord adresseras med adressen till den mest signifikanta byten Little Endian: ett ord adresseras med adressen till den minst signifikanta byten SPARC och MIPS använder big endian A Ett Ord B C D Vi antar att vi lagrat adressen x I register $8 lw $, ($8) Load Word Denna instruktion hämtar ordet på adress x och lagar det i register $ Address Content xffffffff xfffffffe xfffffffd xfffffffc x7 x x x x x x x Vi antar att vi lagrat adressen x I register $8 Address xffffffff Content Vi antar att vi lagrat adressen x I register $8 Address xffffffff Content xfffffffe xfffffffe lw $, -($8) xfffffffd xfffffffc sw $, ($8) xfffffffd xfffffffc Vi kan ange ett offset x7 Store Word x7 Denna instruktion hämtar ordet på adress: x - x = x och lagar det i register $ x x x x x Denna instruktion sparar innehållet i register $ på adress x x x x x x x x x x Design principle Good design demands good compromises Hittils har alla instruktioner haft lika många fält (regularity) lw $, ($8) Det är dock mycket vanligt att man behöver addera och subrahera konstanter, till exempel i = i + ; sw $, ($8) För att kunna hantera vanliga fall med konstanter får vi på samma sätt som vid konstruktionen av denna ligga-och-cykla-maskin kompromissa med våra tidigare principer I-type

SPIM är en simulator för MIPS Här ser vi innehållet i registren SPIM finns för förutom för Windows även för Unix/Linux Här ser vi innehållet i minnet Här ser vi instruktionerna i det program som körs MIPS delar upp minnet på följande sätt Här lagras data som programmet behöver first_trys En ettiket (label) är ett sätt att referera till en rad i programmet, dvs till en address i minnet main: text globl main addi $t, $zero, addi $t, $zero, add $t, $t, $t Ett direktiv som berättar för assemblatorn att det som följer skall tolkas som ett program Assemblator översätter varje rad till en maskininstruktion och lagrar dessa i text-segmentet i minnet För att SPIM skall veta vart programmet börjar måste det finnas en ettiket med namn main som även deklareras som global seq $t, $t, $t seq $t, $t, $t Här ligger maskinkoden för programmet jr $ra Nur prövar vi att köra programmet i SPIM I Windows kan vi steppa en instruktion i taget genom att trycka på tangent F I Linux/Unix kan vi steppa en instruktion i taget genom att klicka på denna knapp

Maskinkod: x8 Det speciella registret PC (program counter) anger vilken instruktion som skall utföras Här ser vi adressen för varje instrukton Hexadecimalt x x8 x x Decimalt * = 8* * = 8 * = Binärt Här ser vi hur maskinkoden för varje instruktion ser ut ( bitar 8 hexadecimala siffror) Register Register 8 En konstant: -kod för addi aha en I-type instruktion! Aha addi $8, $, to_and_from_memorys Genom att skapa ettketter här kan vi använda dessa för att referera till dessa addresser i datasegmentet senare data x: word y: word z: space text globl main main: la $t, x lw $t, ($t) lw $t, y add $t, $t, $t la $t, z sw $t, ($t) sw $t, ($t) addi $t, $t, sw $t, z jr $ra Ett direktiv som berättar för assemblatorn att det som följer skall tolkas som data och lagras i datasegmentet Här använder vi oss av etiketten x som vi definierat tidigare Genom att skapa ettketter här kan vi använda dessa för att referera till dessa addresser senare Load Address Assemblator vet vilken adress i minnet som etiketten x motsvarar Denna adress läggs i register $t data x: word y: word z: space text globl main main: la $t, x lw $t, ($t) lw $t, y add $t, $t, $t la $t, z sw $t, ($t) motsvarande maskininstruktion sw $t, ($t) addi $t, $t, motsvarande maskininstruktion sw $t, z eller jr flera riktiga $ra maskininstruktioner Ett direktiv som berättar för assemblatorn att vi vill lagra talet som ett ord i datasegmentet Ett direktiv som berättar för assemblatorn att vi vill reservera plats för fyra byte i datasegmentet Det går att använda etiketter direkt tillsammans med Loadoch Store Word Notera dock att även detta självklart är att betrakta som en pseudo-instruktion, dvs det finns ingen Detta är en så kallad pseudo-instruktion, dvs det finns ingen Assemblatorn kan dock översätta pseudoinstruktioner till en Nur prövar vi att köra programmet i SPIM Ser bekant ut nämen är det inte vårt x = och y = Sen följer ett nollat ord, det måste vara z