is1500 datorteknik och komponenter n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
IS1500 Datorteknik och komponenter PowerPoint Presentation
Download Presentation
IS1500 Datorteknik och komponenter

Loading in 2 Seconds...

play fullscreen
1 / 128

IS1500 Datorteknik och komponenter - PowerPoint PPT Presentation


  • 119 Views
  • Uploaded on

IS1500 Datorteknik och komponenter. Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd pollning DMA – Direct Memory Access. CE F10. CE Ö10. tentamen. IS1500 Datorteknik o k http://www.ict.kth.se/courses/IS1500. DC Ö1. DC F1. Digitala komponenter. DC F2. DC Ö2. lab dicom.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'IS1500 Datorteknik och komponenter' - dominy


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
is1500 datorteknik och komponenter

IS1500 Datorteknik och komponenter

Föreläsning 6

Bushantering

In- och utmatning, I/O

Programstyrd pollning

DMA – Direct Memory Access

IS1500 Datorteknik o k, föreläsning CE - F6

slide2

CE F10

CE Ö10

tentamen

IS1500 Datorteknik o khttp://www.ict.kth.se/courses/IS1500

DC Ö1

DC F1

Digitala komponenter

DC F2

DC Ö2

lab dicom

CE F1

CE F2

CE Ö1

CE F3

CE Ö2

Assemblerprogram

CE F4

CE Ö3

lab nios2time

C

CE F5

CE Ö4

hemlab C

In- och utmatning

CE F6

CE Ö5

CE Ö6

lab nios2io

Avbrott och "trap"

CE F7

CE Ö1

lab nios2int

Cacheminnen

CE F8

CE Ö2

hemlab cache

Trådar, synkronisering

CE F9

CE Ö3

hemlab trådar

IS1500 Datorteknik o k, föreläsning CE - F6

2

slide3

CE F10

CE Ö10

tentamen

IS1500 Datorteknik o khttp://www.ict.kth.se/courses/IS1500

DC Ö1

DC F1

Digitala komponenter

DC F2

DC Ö2

lab dicom

CE F1

CE F2

CE Ö1

CE F3

CE Ö2

Assemblerprogram

CE F4

CE Ö3

lab nios2time

C

CE F5

CE Ö4

hemlab C

In- och utmatning

CE F6

CE Ö5

CE Ö6

lab nios2io

Avbrott och "trap"

CE F7

CE Ö1

lab nios2int

Cacheminnen

CE F8

CE Ö2

hemlab cache

Trådar, synkronisering

CE F9

CE Ö3

hemlab trådar

IS1500 Datorteknik o k, föreläsning CE - F6

3

f rel sning 6 inneh ll rubriker
Föreläsning 6Innehåll, rubriker
  • Bus Data Transfer, read/write
  • I/O-enheter, adressering
  • Parallellport, funktion, pollning
  • Serieport, funktion, pollning
  • Timer, funktion, pollning
  • Eko-program, Kommunikations-program
  • Paritetskontroll
  • Disk Storage, Flash Storage
  • DMA – Direct Memory Access

IS1500 Datorteknik o k, föreläsning CE - F6

slide5

Litteraturhänvisningar

  • Exempelsamlig del 5 och 6
  • Lab-PM för Nios2io
  • Kursboken Chap 61—6.6
  • 6.1 Introduction
  • 6.2 Dependability, Reliability, and Availability
  • 6.3 Disk Storage
  • 6.4 Flash Storage
  • 6.5 Connecting ...
  • 6.6 Interfacing ...
  • 6.7 – 6.15 är läsvärt men överkurs än så länge

IS1500 Datorteknik o k, föreläsning CE - F6

programexekvering i tv steg

FETCH

EXECUTE

Programexekveringi två steg

(decode)

(update PC)

IS1500 Datorteknik o k, föreläsning CE - F6

viktiga delar i en dator
Viktiga delar i en dator

CPU

BUS

program

I/O

MEM

data

IS1500 Datorteknik o k, föreläsning CE - F6

bus data transfer viktiga aspekter
Bus Data Transfer viktiga aspekter

CPU

MASTER

BUS

MEMORY

SLAVE

IS1500 Datorteknik o k, föreläsning CE - F6

bus data transfer memory read
Bus Data TransferMemory Read
  • Master - till exempel CPU
  • Slave - till exempel Memory
  • Master levererar Adress (t.ex. PC-value)
  • Master ger läsbegäran (Read Request)
  • Slave levererar Data (Instruction)
  • Slave levererar kvittens (Acknowledge)

(exempel Fetch Instruction och LOAD)

IS1500 Datorteknik o k, föreläsning CE - F6

bus data transfer memory read1
Bus Data TransferMemory Read

1

Address

Read

2

3

Data

(Rd) Ack

4

Vad händer om (Rd) Ack uteblir ?

IS1500 Datorteknik o k, föreläsning CE - F6

slide11

Bus Data TransferMemory Write

  • Master - till exempel CPU
  • Slave - till exempel Memory
  • Master levererar Adress
  • Master levererar Data
  • Master ger skrivbegäran (Write Request)
  • Slave levererar kvittens (Acknowledge)

(exempel STORE)

IS1500 Datorteknik o k, föreläsning CE - F6

bus data transfer memory write
Bus Data TransferMemory Write

1

Address

Write

4

2

6

1

Data

(Wr) Ack

3

5

Vad händer om (Wr) Ack uteblir ?

IS1500 Datorteknik o k, föreläsning CE - F6

bus data transfer asynchronous memory read
Bus Data TransferAsynchronous Memory Read

Address

Read

Data

(Rd) Ack

Asynkront ”any time” ”ingen klocka”

IS1500 Datorteknik o k, föreläsning CE - F6

bus data transfer synchronous memory read
Bus Data TransferSynchronous Memory Read

address memory data

transfer read transfer

Address

Read

Data

(Rd) Ack

clock

Synkront ”exactly on time” ”klocka”

IS1500 Datorteknik o k, föreläsning CE - F6

asynkron synkron buss
Asynkron / synkron buss
  • Asynkron
    • klarar enheter med olika hastigheter
    • bra för långsamma och olika enheter (I/O)
  • Synkron
    • kan ge högre hastighet
    • kan överföra adress och data separat, och utnyttja tiden mellan dem till annat (split-transaction bus)
    • bra för snabba, likadana enheter (minne)

IS1500 Datorteknik o k, föreläsning CE - F6

slide16

Flera SLAVE fungerar brapå olika adresser !

MASTER

BUS

?

?

SLAVE

SLAVE

Adress-avkodare

IS1500 Datorteknik o k, föreläsning CE - F6

slide17

Flera minnen på olika adresser !

CPU

BUS

?

?

MEM

MEM

Adress ditten

Adress datten

Adress-avkodare

IS1500 Datorteknik o k, föreläsning CE - F6

slide18

Flera Slavepå olika adresser !

CPU

BUS

?

?

I/O

MEM

Adress ditten

Adress datten

Adress-avkodare

IS1500 Datorteknik o k, föreläsning CE - F6

slide19

Arbiter

Flera Master fungerar, en Arbiter behövs för att välja mellan dem

Master

Master

BUS

?

?

I/O

MEM

Adress ditten

Adress datten

Adress-avkodare

IS1500 Datorteknik o k, föreläsning CE - F6

slide20

DUAL-CORE

MULTI-CORE / MANY-CORE

CPU

CPU

...

BUS

?

?

I/O

MEM

Adress ditten

Adress datten

Adress-avkodare

20 October 2014

IS1200 Datorteknik, föreläsning 6

IS1500 Datorteknik o k, föreläsning CE - F6

20

bussledningar
Bussledningar
  • Adressledningar

8-64 stycken, för att kunna peka ut varje byte

  • Dataledningar minst 8 bitar, upp till 128 bitar eller mer
  • Kontrolledningar

Read + Write, eller RD/WR och DS

Ack, kan vara gemensam

Bus Request, Bus Grant – vid flera Masters

IRQi - Interrupt ReQuest, en eller många

  • Övrigt

Gnd, Vcc, Clock, Reset, ev. flera

IS1500 Datorteknik o k, föreläsning CE - F6

slide22

Bussledningar (forts.)

  • Långsam Slave kan bromsa läsning/skrivning
    • fördröj Acknowledge, eller
    • inför speciell Hold-signal
  • Tidövervakning, Time-Out
    • om Acknowledge aldrig kommer
  • Bus Error – ingen Acknowledge kom

IS1500 Datorteknik o k, föreläsning CE - F6

slide23

Bussledningar (forts.)

  • Om det finns fler än en Master krävsBus Arbiter (bus-fördelare)
  • Varje Slave måste ha adressavkodareså att högst en enhet svarar på request
  • Referens av oanvänd adress medför...
    • ... Time-Out eftersom ingen enhet ger Acknowledge

IS1500 Datorteknik o k, föreläsning CE - F6

bus data transfer bus error

Time-Out

Time-Out

Bus Data TransferBus Error

MASTER

BusErrror

BUS

SLAVE

IS1500 Datorteknik o k, föreläsning CE - F6

tv typer av adressering
I/O Mapped

Memory och I/O kanha samma adresser

Olika kontroll-signaler för minne och I/O

Speciella instruktioner används för I/O

IN R1,117

OUT R2,118

Två typer av adressering
  • Memory Mapped
  • Memory och I/O harolika adresser
  • Samma kontroll-signaler för minne och I/O
  • Vanliga Load och Store används för I/O

IS1500 Datorteknik o k, föreläsning CE - F6

parallell port
Parallell-port
  • Parallellport brukar ha en multipel av 8 signaler/anslutningar
  • Signalriktning kan vara programmerbar separat för varje signal/pinne
  • Inport består normalt av grindar
  • Utport består normalt av register
  • Handskakningssignaler kan finnas

IS1500 Datorteknik o k, föreläsning CE - F6

in port utan handskakning

IN-PORT

IN-port utan handskakning

IN-DATA

Bus drivkrets

grindar

Dn

INn

EN/RD

.

.

.

.

.

.

.

.

.

IN1

D1

Data

IN0

D0

CPU-BUSS

Control

Adress

EN

IS1500 Datorteknik o k, föreläsning CE - F6

in port med handskakning

IBF

WR

set

Q

clear

RD

Q’

IN-PORT

IN-port med handskakning

IN-DATA

IBF

WR

grindar

Bus drivkrets

EN/RD

Dn

INn

.

.

.

.

.

.

.

.

.

vippa

IBF

Data

IN1

D1

CPU-BUSS

Control

IN0

D0

Adress

EN

IS1500 Datorteknik o k, föreläsning CE - F6

slide29

D

D

D

Q

Q

Q

UT-PORT

cl

cl

cl

Q’

Q’

Q’

UT-portutan handskakning

UT-DATA

Dn

UTn

register

(vippor)

.

.

.

.

.

.

.

.

.

WR

D1

UT1

Data

CPU-BUSS

Control

D0

UT0

Adress

WR

IS1500 Datorteknik o k, föreläsning CE - F6

slide30

OBE

RD

set

Q

clear

WR

Q’

D

D

D

Q

Q

Q

UT-PORT

cl

cl

cl

Q’

Q’

Q’

UT-port med handskakning

UT-DATA

OBE

RD

Dn

UTn

register

(vippor)

.

.

.

.

.

.

.

.

.

WR

vippa

D1

UT1

OBE

Data

CPU-BUSS

Control

D0

UT0

Adress

WR

IS1500 Datorteknik o k, föreläsning CE - F6

de2 board komponenter
DE2-board: komponenter

serieport

USB Blaster

Port

”CPU”

parallellportar

MEM

20 October 2014

IS1200 Datorteknik, föreläsning 4

IS1500 Datorteknik o k, föreläsning CE - F6

31

slide32

de2_pio_redled18 Memory Mapped Addresses

UtPort: 18 röda lysdioder

LEDR17

LEDR4

LEDR5

LEDR6

LEDR7

LEDR8

LEDR3

LEDR2

LEDR1

LEDR0

Delar av

Lab-kortet

0x810

0x814

0x818

0x81C

31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

IS1500 Datorteknik o k, föreläsning CE - F6

slide33

de2_pio_keys4 Memory Mapped Addresses

InPort: 4 återfjädrande tryckomkopplare

KEY3

KEY2

KEY1

KEY0

Delar av

Lab-kortet

0x840

0x844

0x848

0x84C

31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

IS1500 Datorteknik o k, föreläsning CE - F6

slide34

de2_pio_toggles18 Memory Mapped Addresses

InPort: 18 skjutomkopplare

SW14

SW15

SW16

SW17

SW3

SW2

SW1

SW0

Delar av

Lab-kortet

0x850

0x854

0x858

0x85C

31 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

IS1500 Datorteknik o k, föreläsning CE - F6

slide35

de2_pio_greenled9 Memory Mapped Addresses

UtPort: 9 gröna lysdioder

LEDG4

LEDG5

LEDG6

LEDG7

LEDG8

LEDG3

LEDG2

LEDG1

LEDG0

Delar av

Lab-kortet

0xA10

0xA14

0xA18

0xA1C

31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

IS1500 Datorteknik o k, föreläsning CE - F6

slide37

Parallell-portHandskakningssignaler

  • IBF - Input Buffer Full
  • OBE - Outport Buffer Empty
  • IBF och OBE är tillgängliga för program
  • IBF och OBE är tillgängliga för hårdvara

IS1500 Datorteknik o k, föreläsning CE - F6

slide38

Parallell-port (forts.)Handskakningssignaler

  • IBF - Input Buffer Full
  • OBE - Outport Buffer Empty
  • Aktiv signal IBF (full inport)
    • begäran om åtgärd, från omvärlden till CPU/program
    • betyder: “hallå där, nu finns nya indata”
  • Aktiv signal OBE (tom utport)
    • begäran om åtgärd, från omvärlden till CPU/program
    • betyder: “hallå där, leverera nya utdata”
    • (Klarsignal = Readysignal)

IS1500 Datorteknik o k, föreläsning CE - F6

slide39

Parallell-port (forts.)Handskakningssignaler

  • IBF - Input Buffer Full
  • IBF ettställs normalt då omgivningen levererar nya data till inporten
  • IBF nollställs/kvitteras av program, t.ex. vid läsning av inport (implicit bieffekt)eller med egen instruktion (explicit)

IS1500 Datorteknik o k, föreläsning CE - F6

slide40

Parallell-port (forts.)Handskakningssignaler

  • OBE, Output Buffer Empty
  • OBE ettställs normalt då omgivningen har tagit hand om utdata
  • OBE nollställs/kvitteras av program, t.ex. vid skrivning av utport (implicit bieffekt)eller med egen instruktion (explicit)

IS1500 Datorteknik o k, föreläsning CE - F6

slide41

Minnesliknande beteendevid läsning och skrivning

  • Ett värde som skrivs till en viss adress kan sedan läsas från samma adress
  • Skrivning till en adress påverkar ej innehåll på andra adresser
  • Läsning från en adress påverkar ej innehåll på någon adress
  • Annat beteende vid minnesreferenser kallas för icke minnesliknade och bör undvikas

IS1500 Datorteknik o k, föreläsning CE - F6

handskakning med ibf obe fl des schema inv nta ready blockerande i o

OBE=1?

IBF=1?

SKRIV UTDATA

LÄS INDATA

NEJ

NEJ

Nollställ OBE

Nollställ IBF

LÄS OBE

LÄS IBF

JA

JA

AVHOPP

UTHOPP

PÅHOPP

INHOPP

Handskakning med IBF/OBEFlödes-schema, invänta ready(blockerande I/O)

Wait for

READY

Action

&

Acknowledge !

IS1500 Datorteknik o k, föreläsning CE - F6

slide43

OBE=1?

IBF=1?

SKRIV DATAUT

PAR:= DATAIN

NEJ

NEJ

Nollställ OBE och PAR

Nollställ IBF

LÄS OBE

PAR:= -1

PAR:= -1

LÄS IBF

JA

JA

AVHOPP

AVHOPP

PÅHOPP

PÅHOPP

Handskakning med IBF/OBEFlödes-schema, direkt retur(icke blockerande I/O)

IS1500 Datorteknik o k, föreläsning CE - F6

getdata fr n inport rutin med pollning av statusbit blockerande i o
getdata från Inportrutin med pollning av statusbit(blockerande I/O)

# int get_data(void)

define datain 0x...

define status 0x...

define ibfmask 0x...

get_data: load reg1 <-- status

andi reg1 <-- ibfmask

beq get_data

load reg <-- datain

return

IS1500 Datorteknik o k, föreläsning CE - F6

slide45

putdata till Utportrutin med pollning av statusbit(blockerande I/O)

# put_data(data in inreg)

define dataut 0x...

define status 0x...

define obemask 0x...

put_data: load reg1 <-- status

andi reg1 <-- obemask

beq put_data

store dataut <-- data

return

IS1500 Datorteknik o k, föreläsning CE - F6

serie port
Serie-port
  • Används för seriell kommunikation
  • Vanligt är asynkron kommunikation,ett tecken kan komma när som helst
  • Synkron kommunikation finns även,det kommer alltid en ström av bitar

IS1500 Datorteknik o k, föreläsning CE - F6

serieport
Serieport

Sändare

Mottagare

error(s)

Parallella data ut

skiftregister

Seriell kabel

Internet

skiftregister

Parallella data in

IS1500 Datorteknik o k, föreläsning CE - F6

slide48

Serie-portAsynkron kommunikation

  • Varje tecken (bokstav) sänds för sig
  • Ett tecken kodas ofta med 7 bitars ASCII
  • Dessutom tillkommer 1 startbit 1 paritetsbit (opt) udda eller jämn paritet 1, 1,5 eller 2 stoppbitar

IS1500 Datorteknik o k, föreläsning CE - F6

slide49

Serie-portAsynkron kommunikation

Avkänningstidpunkter i mottagaren

x

0

x

x

x

x

x

x

P

1 1 1 1

7-bitars ASCII

1 startbit (0)

1 Paritetsbit (P)

Stoppbit(ar) (1)

Synkroniseringsflank

IS1500 Datorteknik o k, föreläsning CE - F6

synkronisering
Synkronisering
  • Bit-synkroniseringmottagare måste polla mitt i prick
  • Byte-synkroniseringNär börjar nytt tecken (SYN)
  • Block-synkroniseringNär börjar ett nytt block/paket (SOH ...)

IS1500 Datorteknik o k, föreläsning CE - F6

serie port asynkron kommunikation
Serie-portAsynkron kommunikation
  • Bithastighet (kallas felaktigt för baudrate)
  • Teckenlängd (5, 6, 7, 8, …)
  • Paritet On/Off, Even/Odd
  • Antal Stoppbitar (1, 1½, 2) (antal perioder mellan sända tecken)

(baudrate = signaleringshastighet)

IS1500 Datorteknik o k, föreläsning CE - F6

serieport med buffertar
Serieportmed buffertar

Sändare

Mottagare

error(s)

Parallella data ut

TxRdy

En eller flera platser

skiftregister

Seriell kabel

Internet

TxEmpty

skiftregister

RxRdy

En eller flera platser

Parallella data in

IS1500 Datorteknik o k, föreläsning CE - F6

l s fr n serieport rutin med pollning av statusbit blockerande i o
läs från serieportrutin med pollning av statusbit(blockerande I/O)

# int in_char(void)

define data ...

define status ...

define ibfmask ...

in_char: load tmpreg <-- status

andi tmpreg <-- ibfmask

beq in_char

load outreg <-- data

return

IS1500 Datorteknik o k, föreläsning CE - F6

slide54

skriv till serieportrutin med pollning av statusbit(blockerande I/O)

# out_char(data in inreg)

define dataout ...

define status ...

define obemask ...

out_char: load tmpreg <-- status

andi tmpreg <-- obemask

beq out_char

store dataout <-- inreg

return

IS1500 Datorteknik o k, föreläsning CE - F6

slide55

Nios-II uart_0 Memory Mapped Addresses

Både InPort och UtPort: 8 bitars tecken

RxDATA (RD)

TxDATA (WR)

31 16 15 8 7 6 0

0x8600x864

0x868

STATUS

RxRdy (IBF)

TxRdy (OBE)

uart_0 0x860-86F

uart_1 0x880-88F

IS1500 Datorteknik o k, föreläsning CE - F6

slide56

Läs från Serieportsyntetisk Nios-2-kod(blocking)

# int in_char(void) .equ datain, 0x860 # 0x880.equ dataut, 0x864 # 0x884.equ status, 0x868 # 0x888 .equ ibfmask, 0x80 # 0x80 = 0b10000000

in_char: MOVIA r8, datain

in_baa: LDWIOr9, 8(r8) # status=datain+8

ANDI r9, r9, ibfmask

BEQ r9, r0, in_baa

LDWIO r2, 0(r8)

RET

IS1500 Datorteknik o k, föreläsning CE - F6

slide57

Skriv till Serieportsyntetisk Nios-2-kod(blocking)

# void out_char(parameter) .equ datain, 0x860 # 0x880.equ dataut, 0x864 # 0x884.equ status, 0x868 # 0x888 .equ obemask, 0x40 # 0x40=0b01000000

out_char: MOVIA r8, datain

out_baa: LDWIOr9, 8(r8) #status=datain+8

ANDI r9, r9, obemask

BEQ r9, r0, out_baa

STWIO r4, 4(r8) # dataut=datain+4

RET

IS1500 Datorteknik o k, föreläsning CE - F6

laboration 2 eko program
Laboration 2EKO-program

# Skriv ett progam som ekar tecken från tangentbord till terminalfönster

main: call initserial # VID BEHOV

loop: call in_char mov r4, r2 # kopiera tecken

call out_char

br loop

IS1500 Datorteknik o k, föreläsning CE - F6

fl desschema f r eko program

out_char

in_char

init

START

Flödesschema för EKO-program

IS1500 Datorteknik o k, föreläsning CE - F6

fl desschema f r korsvis kommunikation

START

NEJ

in_charx?

JA

send_char

NEJ

rec_charx?

JA

out_char

Flödesschema förkorsvis kommunikation

nytt tecken från tangentbord?om ja: sänd ut tecknet på länkennytt tecken från länken?om ja: skriv tecknet till skärmen

IS1500 Datorteknik o k, föreläsning CE - F6

slide61

EKO-programmed korsvis kommunikation

start: call initserie #initera serieportar vid behov

gettst: call in_charx #tecken från tangentbord ? b”cond” r2, rectst #om ej: hopp till rectst

send: mov r4, r2

call send_char # sänd ett tecken

rectst: call rec_charx #tecken mottaget ? b”cond” r2, gettst #om ej: hopp till gettst

out: mov r4, r2

call out_char #och skriv ut mottaget tecken

br gettst #loopa

IS1500 Datorteknik o k, föreläsning CE - F6

slide62

Läs från Serieportsyntetisk Nios-2-kod(non-blocking)

# int in_char(void) .equ datain, 0x860 # 0x880.equ dataut, 0x864 # 0x884.equ status, 0x868 # 0x888 .equ ibfmask, 0x80 # 0x80 = 0b10000000

in_char: MOVI r2, -1 # ”no-char”

MOVIA r8, datain

LDWIOr9, 8(r8) # status=datain+8

ANDI r9, r9, ibfmask

BEQ r9, r0, no_char

LDWIO r2, 0(r8)

no_char: RET

20 October 2014

IS1500 Datorteknik o k, föreläsning CE - F6

62

slide63

Skriv till Serieportsyntetisk Nios-2-kod(non-blocking)

# void out_char(parameter) .equ datain, 0x860 # 0x880.equ dataut, 0x864 # 0x884.equ status, 0x868 # 0x888 .equ obemask, 0x40 # 0x40=0b01000000

out_char: MOVI r2, -1 # error

MOVIA r8, datain

LDWIO r9, 8(r8) #status=datain+8

ANDI r9, r9, obemask

BEQ r9, r0, not_obe

STWIO r4, 4(r8) # dataut=datain+4 MOVI r2, 0 # yes !!!

not_obe: RET

20 October 2014

IS1500 Datorteknik o k, föreläsning CE - F6

63

hardware timer
Hardware Timer
  • Används för exaktare tidmätning
  • alt1: Counter räknar upp från 0 till value
  • alt2: Counter räknar ner från value till 0
  • Counter ”framme” kallas Time-Out
  • Vid Time-Out ettställs en vippa vars värde finns tillgängligt för program och elektriskt
  • Vippan kan nollställas (hur?)

IS1500 Datorteknik o k, föreläsning CE - F6

counter som r knar fl desschema f r v ntan

Clear TimeOut

Read TimeOut

TimeOut=1?

return

arrive

Counter som räknarFlödesschema för väntan

Wait for

READY

Blocking

NO

YES

Action

&

Acknowledge !

IS1500 Datorteknik o k, föreläsning CE - F6

slide66

K := msek

N := start

K = 0 ?

N = 0 ?

UT-hopp

UT-hopp

IN-hopp

IN-hopp

IN-parameter i r4

K := K - 1

N := N - 1

Flödesschema DELAYmed PROGRAM-LOOP

Program-loop

1 millisekund

Byt ut program-loop

mot timer-loop

JA

JA

NEJ

NEJ

Laboration 1

IS1500 Datorteknik o k, föreläsning CE - F6

slide67

K := msek

K = 0 ?

UT-hopp

IN-hopp

TimeOut=1?

IN-parameter i r4

NO

Clear TimeOut

Read TimeOut

YES

return

arrive

K := K - 1

Flödesschema DELAYmed TIMER

Timer-loop

1 millisekund

JA

NEJ

Laboration 2

IS1500 Datorteknik o k, föreläsning CE - F6

slide68

Nios II Timermed Counter som räknar ner

  • Counter laddas med period
  • Counter minskas med ett vid klockflank
  • Counter=0 medför ettställ Time-Out
  • Counter laddas om vid Time-Out(det tar ett klockpulsintervall)
  • period kan väljas med program

IS1500 Datorteknik o k, föreläsning CE - F6

nios ii timer statusvippa time out
Nios II Timer Statusvippa Time-Out

Statusvippa som kallas Time-Out

  • ettställs vid Time-Outkan pollas av program
  • ska nollställas av program tillgänglig som elektrisk signal

IS1500 Datorteknik o k, föreläsning CE - F6

slide70

Nios II Timer Statusvippa Run

  • Statusvippa som kallas Run

ettställs av program nollställs av program kan pollas av program tillgänglig som elektrisk signal ?

IS1500 Datorteknik o k, föreläsning CE - F6

slide71

Q

Q

D

D

cl

cl

Q’

Q’

Nios II TimerHårdvaru-figur

write from program

load

period

start

copy

zero

counter

read from

program

run

set

-1

copy

clock

time-out

snap-shot

stop

clear

from program

read from program

IS1500 Datorteknik o k, föreläsning CE - F6

slide72

31 16 15 0

0x920

0x924

0x928

0x92C

0x930

0x934

0x938

0x93C

31 16 15 0

Nios II Timer-1 Memory Mapped Addresses

IS1500 Datorteknik o k, föreläsning CE - F6

slide73

ITO

cont

start

stop

Nios II Timer-1 Status / Control etc

run

TO Time-Out

0x920 status

0x924 control

0x928 periodl

0x92C periodh

0x930 snapl

0x934 snaph

15 0

IS1500 Datorteknik o k, föreläsning CE - F6

slide74

Nios II Timer-1 Hardware ”Hokus Pokus”

  • TO - Time Out, bit 0 på adress 0x920
  • run, bit 1 på adress 0x920, is 1 if Counting, else 0
  • Clear Time Out, Write anything to 0x920
  • Continous Counting, ”set” bit 1 at 0x924
  • Start Counting, ”set” bit 2 at 0x924
  • Stop Counting, ”set” bit 3 at 0x924
  • WR to any snapshot => copy Counter to SnapShot
  • (ej komplett information)
  • ”One-Shot” is possible !

IS1500 Datorteknik o k, föreläsning CE - F6

slide75

Nios II Timer-1 More ”Hokus Pokus” (2010)

  • Writing 1 to both START and STOP bits simultaneously produces undefined result
  • The internal Counter is loaded from the Period registers on a write operation to any of the period registers
  • Writing to any of the Period registers stops the internal Counter
  • Restarting the timer with ”full value” requires
  • Write (correct) value to any of the Period registers
  • Set the START bit (possibly once again)
  • Reset the TO bit to 0 if needed (if it is a 1)

IS1500 Datorteknik o k, föreläsning CE - F6

serieport1
Serieport

Sändare

Mottagare

One or more bits are flipped

error(s)

Parallella data ut

skiftregister

Seriell kabel

Internet

skiftregister

Parallella data in

IS1500 Datorteknik o k, föreläsning CE - F6

serial communication error control
Serial communicationError control
  • Error Detectionparity check, requires extra bitsCRC-code, requires extra bits...
  • Error CorrectionECC – Error Correction Code (extra bits)Retransmission protocol (TCP, ...)...

IS1500 Datorteknik o k, föreläsning CE - F6

slide78

Paritet i ett n-bitars ord jämn eller udda paritet

  • Jämn paritet = jämnt antal ettor i ordet
  • Udda paritet = udda antal ettor i ordet
  • FeldetekteringDetekterar alla ”udda-bits-fel” dvs om ett udda antal bitar har växlat värde
  • Felkorrigering, hur då ???
  • Omsändning !!!

IS1500 Datorteknik o k, föreläsning CE - F6

paritetskontroll vid kommunikation
Paritetskontrollvid kommunikation
  • Sändaren kompletterar med en extra bit vars värde sätts så att man får rätt paritet i det ord som sänds
  • Mottagaren kontrollerar att det är rätt paritet i det mottagna ordet

IS1500 Datorteknik o k, föreläsning CE - F6

kartbild av minnet
Kartbild av minnet
  • Adress MEM / IO
  • 0 - 7FF boot_monitor_rom
  • 810-81F de2_pio_redled18
  • 840-84F de2_pio_keys4
  • 850-85F de2_pio_toggles18
  • 860-86F uart_0 (”hyperterminal)
  • 9F0-9FF de2_pio_hex_low28
  • 920-93F timer_1
  • 940-95F timer_2
  • A00-A0F de2_pio_hex_high28
  • A10-A1F de2_pio_greenled9
  • 80 0000-FF FFFF ext_ram, 8 Mbyte ?

IS1500 Datorteknik o k, föreläsning CE - F6

timerkretsen tidm tnig
Timerkretsentidmätnig

Exempel på hur man kan mäta tid för exekvering av t.ex. NextPrime

Kopiera ett snapshot till time0

Kör NextPrime

Kopiera ett snapshot till time1

Skriv ut (tids-) skillnad (time1-time0)

IS1500 Datorteknik o k, föreläsning CE - F6

disk storage
Disk Storage
  • Nonvolatile (information finns kvar)
  • Concentric tracks, 10.000-50.000 st
  • Sectors – 512 byte per sector (4096?)sector number-gap-information-ecc

IS1500 Datorteknik o k, föreläsning CE - F6

disk storage1
Disk Storage

Access time

  • Seek time – move heads to desired track
  • Rotational latency/delay (halfway)
  • Transfer time (70-125 MByte/sec)
  • Controller time

IS1500 Datorteknik o k, föreläsning CE - F6

rotational latency varv tar tid
Rotational latency½ varv tar tid

15000 rpm = 250 varv per sekund

1 varv tar då 4 millisekunder

½ varv tar 2 millisekunder

7500 rpm blir 4 millisekunder

CPU-frekvens 1 GHz motsvarar

1 000 000 000 instruktioner per sekund

1 000 000 instruktioner per millisekund

2 millisekunder   2 miljoner instruktioner

IS1500 Datorteknik o k, föreläsning CE - F6

transfer time
Transfer Time

Transfer time of 512 byte ?

70-125 MByte/sec

~500/100M =~ 5 mikrosekunder

Mycket kortare tid än söktid och rotation

IS1500 Datorteknik o k, föreläsning CE - F6

seek time
Seek Time

Ungefär samma storleksordning som rotational latency

dvs (några) millisekunder

IS1500 Datorteknik o k, föreläsning CE - F6

control time
Control time

Ett antal exekverade instruktioner på en processor med hög CPU-frekvens

Med 100 MHz blir det

100 000 000 instruktioner per sekund

100 000 instruktioner per millisekund

Troligen kortare tid än söktid och rotation

IS1500 Datorteknik o k, föreläsning CE - F6

disk storage page 3 of x
Disk Storage(page 3 of x)

Improvements going on ...

  • Reduction in physical size
  • Increasing Disc density
  • More intelligent interface - ATA SCSI
  • Microprocessor control
  • Built-in caches

IS1500 Datorteknik o k, föreläsning CE - F6

flash storage
Flash Storage
  • Nonvolatile (as disk storage)
  • Smaller than disk storage
  • More power efficient than disk
  • 100-1000 faster read than disk storage
  • Wear out (10.000-100.000)
  • 2-40 times higher price than disk
  • Hybrid hard disk – 1Gbyte Flash ...

IS1500 Datorteknik o k, föreläsning CE - F6

is1500 datorteknik och komponenter1

IS1500 Datorteknik och komponenter

DMA, Direct Memory Access

Detta avsnitt har flyttats till F6 i IS1500

Kurboken Chap 6.6 sidorna 588-595

IS1500 Datorteknik o k, föreläsning CE - F6

block data transfer bdt
Block Data Transfer - BDT
  • Kopiera ett antal enheter (byte/word) ett Block (t.ex. 1024x8)
  • från minne till minne [memcpy(dst,src,num)]
  • från I/O till minne (paket från internet)
  • från minne till I/O (paket till internet)
  • från I/O till I/O (”routing”)

Typexempel mellan MM och SS dvs

mellan Main Memory och Secondary Storage dvs

mellan ”hårddisk och RAM-minne”

IS1500 Datorteknik o k, föreläsning CE - F6

bdt minne till minne
BDT: minne till minne

SrcAddr

DstAddr

MEM

NrOfTransfers

Det behövs 2 adresspekare

Käll-adress och Destinations-adress

Det behövs en räknare, antal kopieringar

Var lagras pekare och räknare ?

I register eller i minne! beroende på metod!

IS1500 Datorteknik o k, föreläsning CE - F6

bdt minne till minne1
BDT: minne till minne

CPU

BUS

I/O

MEM

IS1500 Datorteknik o k, föreläsning CE - F6

bdt minne till i o bdt i o till minne
BDT: minne till I/O BDT: I/O till minne

CPU

BUS

I/O

MEM

IS1500 Datorteknik o k, föreläsning CE - F6

bdt i o till i o
BDT: I/O till I/O

CPU

BUS

I/O

I/O

IS1500 Datorteknik o k, föreläsning CE - F6

bdt block data transfers
BDT - Block Data Transfers

Block Data Transfer utförs i tre olika del-moment

  • Initiera: pekare och räknare, mm
  • Kopiera: en enhet i taget (byte/word)
  • Avsluta: bokföring (i OS) att block är kopierat

(OS = Operativ Systemet)

IS1500 Datorteknik o k, föreläsning CE - F6

bdt block data transfers1
BDT - Block Data Transfers

Block Data Transfer kan utföras med tre olika metoder

1. Program-styrd Block Data Transfer

2. Avbrotts-styrd Block Data Transfer

3. DMA-styrd Block Data Transfer(DMA - Direct Memory Access)

IS1500 Datorteknik o k, föreläsning CE - F6

slide98

1. Program-styrd BDTsource to destination

  • Programstruktur

initiera pekare och räknare

loop: kopiera en enhet (byte/word)

br loop om ej klart

avsluta

IS1500 Datorteknik o k, föreläsning CE - F6

1 programstyrd bdt source to destination
1. Programstyrd BDT source to destination

# Initiera inför programmerad BDT

# pekare och räknare i ”vanliga” CPU-register

movia r8, SrcAddr

movia r9, DstAddr

movia r10, NrOfTransfers

IS1500 Datorteknik o k, föreläsning CE - F6

slide100

1. Program-styrd BDT Memory to Memory

# Kopiera i programslinga

.equ wordsize, 4

ble r10, r0, out # ”empty”

loop: ldw r11, 0(r8) # läs data stw r11, 0(r9) # skriv data addi r8, r8, wordsize # öka läsadress addi r9, r9, wordsize # öka skrivadress subi r10, r10, 1 # minska räknare bgt r10, r0, loop # hoppa om ej klart

out: br avsluta # hopp till OS

IS1500 Datorteknik o k, föreläsning CE - F6

slide101

1. Program-styrd BDTI/O to Memory

Antag att I/O-porten är en ”vanlig” inport med en signal av typen IBF - Input Buffer Full

IBF ettställs varje gång det finns nya data att läsa från inporten

IS1500 Datorteknik o k, föreläsning CE - F6

in port med handskakning1

IBF

WR

set

Q

clear

RD

Q’

IN-PORT

IN-port med handskakning

IN-DATA

IBF

WR

grindar

Bus drivkrets

EN/RD

Dn

INn

.

.

.

.

.

.

.

.

.

vippa

IBF

Data

IN1

D1

CPU-BUSS

Control

IN0

D0

Adress

EN

IS1500 Datorteknik o k, föreläsning CE - F6

bdt i o till minne
BDT: I/O till minne

CPU

DstAddr

SrcAddr

NrOfTransfers

I/O

MEM

IS1500 Datorteknik o k, föreläsning CE - F6

slide104

Block Data TransferI/O to Memory

# Kopiera i programslinga (nästan likadan)

.equ wordsize, 4

loop: call getdata # blocking on IBF stw r2, 0(r9) # skriv data

# addi r8, r8, wordsize # öka ej läsadress

addi r9, r9, wordsize # öka skrivadress subi r10, r10, 1 # minska räknare bgt r10, r0, loop # hoppa om ej klart br avsluta # hopp till OS

IS1500 Datorteknik o k, föreläsning CE - F6

slide105

1. Program-styrd BDT Memory to I/O

Antag att I/O-porten är en ”vanlig” utport med en signal av typen OBE - Output Buffer Empty

OBE ettställs varje gång det går att skriva till utporten

IS1500 Datorteknik o k, föreläsning CE - F6

slide106

Block Data TransferMemory to I/O

# Kopiera i programslinga (nästan likadan)

.equ wordsize, 4

loop: ldw r4, 0(r8) # läs data call putdata # blocking on OBE addi r8, r8, wordsize # öka läsadress

# addi r9, r9, wordsize # öka ej skrivadress

subi r10, r10, 1 # minska räknare bgt r10, r0, loop # hoppa om ej klart br avsluta # hopp till OS

IS1500 Datorteknik o k, föreläsning CE - F6

slide107

Block Data TransferI/O to I/O

# Kopiera i programslinga (nästan likadan)

.equ wordsize, 4

loop: call getdata # blocking on IBF mov r4, r2 # flytta parameter call putdata # blocking on OBE

# addi r8, r8, wordsize # öka ej läsadress

# addi r9,r9, wordsize # öka ej skrivadress subi r10, r10, 1 # minska räknare bgt r10, r0, loop # hoppa om ej klart br avsluta # hopp till OS

IS1500 Datorteknik o k, föreläsning CE - F6

slide108

2. Avbrotts-styrd BDTI/O to Memory

Typ-exempel:

Kopiera från hårddisk till ram-minne

Antag att hårddisken levererar data via en ”vanlig” inport med en signal IBF

IBF ettställs varje gång det finns nya data

IBF genererar avbrottsbegäran, IRQ

IS1500 Datorteknik o k, föreläsning CE - F6

avbrottshantering f renklat
Avbrottshantering(förenklat)

Huvudprogram

InterruptHandler

interrupt

”hopp vid interrupt”

intruktion

retur-adress

”hopp vid retur”

eret

Var placeras returadressen ? i r29 !

Hur utförs hopp till InterruptHandler ? HW (och SW) !

Hur utförs hopp till returadressen ? Med eret !

IS1500 Datorteknik o k, föreläsning CE - F6

2 avbrotts styrd block data transfer source to destination
2. Avbrotts-styrdBlock Data Transfer source to destination

# Initiera inför avbrotts-styrd BDT

# pekare och räknare kan inte lagras i ”vanliga” CPU-register utan måste lagras i minnet.

movia r8, SrcAddr # måste ändras

movia r9, DstAddr # måste ändras

movia r10, NrOfTransfers # måste ändras

IS1500 Datorteknik o k, föreläsning CE - F6

slide111

BDT: I/O till minnemed avbrott (IBF ger IRQ)

CPU

IBF=IRQ

SrcAddr

MEM

DstAddr

NrOfTransfers

I/O

MEM

IS1500 Datorteknik o k, föreläsning CE - F6

2 avbrotts styrd bdt i o to memory
2. Avbrotts-styrd BDT I/O to Memory

Initiera inför avbrotts-styrd BDT

# storei Addr , Imm är ett macro som skriver värdet Imm till minnet på adress Addr

  • storei SrcAddrPoint , SrcAddrValue
  • storei DstAddrPoint , DstAddrValue
  • storei NrOfTransf , NrOfTransfValue

Det behövs alltså 3 reserverade platser i minnet

Det går ej att använda register !? (varför?)

IS1500 Datorteknik o k, föreläsning CE - F6

slide113

2. Avbrotts-styrd BDTI/O to Memory

  • Programstruktur

initiera: programsnutt i OS

kopiera: interrupthandler, inth, anropas vid avbrott dvs då IBF = 1

inth:

kopiera en enhet # se nästa sida eret # retur från int

avsluta: br OS-avsluta # hopp till OS

IS1500 Datorteknik o k, föreläsning CE - F6

slide114

2. Avbrotts-styrd BDTI/O to Memory

# kopiera en enhet # se denna sida

inth: loadia r8, SrcAddrPoint # hämta läsadress

loadia r9, DstAddrPoint # hämta skrivadress

ldw r11, 0(r8) # läs data från INPORT

stw r11, 0(r9) # skriv data till minne

loadia r10, NrOfTranf # hämta räknare

subi r10, r10, 1 # uppdatera räknare

beq r10, r0, avsluta # hopp till OS

# forts.

IS1500 Datorteknik o k, föreläsning CE - F6

slide115

2. Avbrotts-styrd BDT I/O to Memory

  • Avbrottsrutin forts.

# addi r8, r8, wordsize # öka läsadress, nej !

addi r9, r9, wordsize # öka skrivadress, ja !

# storia r8, SrcAddrPoint # skriv EJ tillbak läsadress

storia r9, DstAddrPoint # skriv tillbaks skrivadress

storia r10, NrOfTrans # skriv tillbaks räknare

eret # from interrupt

IS1500 Datorteknik o k, föreläsning CE - F6

slide116

2. BDT: I/O till minnemed avbrott (IBF ger IRQ)

CPU

IBF=IRQ

SrcAddr

MEM

DstAddr

NrOfTransfers

I/O

MEM

IS1500 Datorteknik o k, föreläsning CE - F6

slide117

3. BDT: I/O till minnemed DMA (IBF ger DMARQ)

DMA

BR

BR

Bus

Arbiter

CPU

SrcAddr

DstAddr

BG

BG

NrOfTransfers

DMARQ

MEM

MEM

I/O

IS1500 Datorteknik o k, föreläsning CE - F6

slide118

Bus Arbiter krävsBus Request / Bus Grant

BR

BR

Bus

Arbiter

CPU

DMA

BG

BG

BUS

I/O

MEM

IS1500 Datorteknik o k, föreläsning CE - F6

slide119

Bus-ledningar

Om det finns fler än en Master krävsBus Arbiter (bus-fördelare)

  • Signal (er) av typ Bus Request
  • Signal (er) av typ Bus Grant

IS1500 Datorteknik o k, föreläsning CE - F6

slide120

DMA - Direct Memory Address

  • DMARQ - DMA ReQuest (ny signal)
  • Source Address Register
  • Destination Address Register
  • Byte/Word Count Register
  • Control Register
  • Block Size: Byte Count or End Of Block

IS1500 Datorteknik o k, föreläsning CE - F6

slide121

3. BDT: I/O till minnemed DMA (IBF ger DMARQ)

DMA

BR

BR

Bus

Arbiter

CPU

SrcAddr

DstAddr

BG

BG

NrOfTransfers

DMARQ

MEM

MEM

I/O

IS1500 Datorteknik o k, föreläsning CE - F6

slide122

3. DMA-styrd BDTI/O to Memory

  • Programstruktur

initiera

...

DMA: kopiera en enhet

avsluta: Meddela att det är klart ? Hur? Vart?

IS1500 Datorteknik o k, föreläsning CE - F6

block data transfer i o to memory
Block Data TransferI/O to Memory

# Initiera inför DMA-styrd BDT

# DmaSrc, -Dst, -Nr och -Ctl är memory-mapped register i DMA

storei DmaSrc, SrcAddrVal

storei DmaDst, DstAddrVal

storei DmaNr, NrOfTransfers

storei DmaCtl, DirandSize

IS1500 Datorteknik o k, föreläsning CE - F6

slide124

DMA - Direct Memory Address

Operativsystemets åtgärder för att genomföra BDT med DMA

Initiera: register i DMA och starta DMA

Kopiera: sköts av DMA ”i bakgrunden”med ”cycle stealing på bussen”

Avsluta: Avbrott från DMA leder till

br avsluta # hopp till OS

Bokför att BDT är fullföljd, ”stäng DMA”

IS1500 Datorteknik o k, föreläsning CE - F6

bdt block data transfers2
BDT - Block Data Transfers

Block Data Transfer kan utföras med tre olika metoder

1. Program-styrd Block Data Transferupptar 100% av CPU-tid (sämst metod)

2. Avbrotts-styrd Block Data Transfer upptar < 100% av CPU-tid (bättre)

3. DMA-styrd Block Data Transfer upptar << 100% av CPU-tid (bäst)

IS1500 Datorteknik o k, föreläsning CE - F6

slide126

1. BDT: I/O till minnemed program (pollning av IBF)

CPU

DMA

BR

BR

Bus

Arbiter

DstAddr

SrcAddr

BG

BG

NrOfTransfers

I/O

MEM

MEM

IS1500 Datorteknik o k, föreläsning CE - F6

slide127

2. BDT: I/O till minnemed avbrott (IBF ger IRQ)

DMA

BR

BR

Bus

Arbiter

CPU

BG

BG

IRQ

SrcAddr

MEM

DstAddr

NrOfTransfers

I/O

MEM

IS1500 Datorteknik o k, föreläsning CE - F6

slide128

3. BDT: I/O till minnemed DMA (IBF ger DMARQ)

DMA

BR

BR

Bus

Arbiter

CPU

SrcAddr

DstAddr

BG

BG

NrOfTransfers

DMARQ

I/O

MEM

MEM

IS1500 Datorteknik o k, föreläsning CE - F6