56
Основи рачунарске технике 2

Основи рачунарске технике 2rti.etf.bg.ac.rs/rti/ir2ort2/literatura/ORT2_1_Projektovanje_uredjaja.pdf · ОРТ 2 4/55 Структура дигиталног

Embed Size (px)

Citation preview

Основи рачунарске технике 2

ОРТ2 2/55

Садржај

• Подсетник

– Основни комбинациони модули– Основни секвенцијални модули

• Основни појмови– Структра дигитаног уређаја– Повезивање јединица

• Операциона јединица– Пример: Операција множења – MULU

• Управљачка јединица– Шетајућа јединица– Стандардна секвенцијална мрежа– Бројач корака– Микропрограмска

ОРТ2 3/55

Структура дигиталног уређаја

• Дигитални уређај су прекидачке мреже које реализују једну или више операција над подацима који су представљени у бинарном облику.

• Дигитални уређаји су најчешће толико сложене прекидачке мреже да се пројектовање дигиталних уређаја не може реализовати формалним поступцима синтезе прекидачких мрежа.

ОРТ2 4/55

Структура дигиталног уређаја

• Један од поступака је да се извршавање операције или операција подели на логичке целине које се називају фазе и да за извршавање сваке фазе у дигиталном уређају постоји посебна јединица.

JEDINICA 1 JEDINICA 2 JEDINICA 3 JEDINICA N...

ОРТ2 5/55

Операциона јединица

• Операциона јединица се састоји од комбинационих и секвенцијалних прекидачких мрежа које се према својој функцији могу поделити у три групе.

1. Секвенцијалне прекидачке мреже које служе за памћење бинарних речи којима се дефинишу операције и подаци (регистри и меморије).

2. Комбинационе и секвенцијалне прекидачке мреже које реализују изабрани скуп микрооперација(мултиплексер, сабирач, АЛУ, декодер, ...).

3. Комбинационе и секвенцијалне прекидачке мреже које формирају сигнале логичких услова. (компаратори и бројачи, али и наменске мреже).

ОРТ2 6/55

Операциона јединица

• Операције се разлажу на одређен број корака и то тако да у сваки корак уђе једна или више микрооперација.

• Сваки од корака на које је разложена операција се извршава за време трајања једне периоде сигнала такта, па реализација операција захтева онолико тактова на колико корака је разложена операција.

• Под микрооперацијама се подразумевају операције које се реализују за време трајања једне периоде сигнала такта у комбинационим или секвенцијалним мрежама.

ОРТ2 7/55

Операциона јединица

• Време извршавања операције се добија као производ броја корака на које је операција разложена и вредности периоде сигнала такта.

• Ово време се може смањити

– смањивањем броја корака неопходних за извршавање микрооперација на које је једна операција разложена и

– смањивањем периоде сигнала такта.

ОРТ2 8/55

Операциона јединица

• Уређени низ корака на које је разложена нека операција и логички услови на основу којих се одређује редослед корака дефинишу алгоритам операције.

• За представљање алгоритама операција користе се дијаграми тока који се цртају помоћу операционих и управљачких блокова.

• Операциони и условни блокови се повезују линијама тако да излаз неког блока води на улаз једног и само једног блока.

ОРТ2 9/55

Операциона јединица

• У операциони блок се уписују микрооперације које се реализују у истом кораку алгоритма. Операциони блок има један или више улаза и један излаз.

MIKROOPERACIJE

ОРТ2 10/55

Операциона јединица

• У условни блок се уписује логички услов које дефинише гранање алгоритма.

• Управљачки блок има један или више улаза и два излаза код обичног гранања и више излаза код вишеструког условног скока.

LOGICKIUSLOV

0 1

ОРТ2 11/55

Управљачка јединица

• Управљачка јединица се састоји из секвенцијалних и комбинационих прекидачких мрежа које сагласно алгоритму операције и вредностима сигнала логичких услова који се формирају у операционој јединици генеришу управљачке сигнале за операциону јединицу.

• Ови сигнали одређују које микрооперације и по ком редоследу треба извршавати у операционој јединици да би се као резултат после одређеног броја сигнала такта реализовала операција.

ОРТ2 12/55

Управљачка јединица

• Управљачки сигнали су сигнали којима се у операционој јединици– одређују садржаји који у неком кораку треба да се

пропусте кроз мултиплексере и појаве не излазима мултиплексера,

– одређује која аритметичка или логичка операција треба да се реализује у ALU,

– врши упис у регистре,– инкрементира или декрементира садржај бројача итд.

ОРТ2 13/55

Управљачка јединица

• Управљачка јединица се реализује као секвенцијална мрежа која има онолико стања колико има корака на које је разложена операција.

• Посебно стање секвенцијалне мреже се додељује сваком кораку.

• У зависности од тога како се стање секвенцијалне мреже користи за генерисање управљачких сигнала операционе јединице разликују се две групе реализација управљачких јединица и то реализације са ожиченим и микропрограмским генерисањем управљачких сигнала.

ОРТ2 14/55

Управљачка јединица

• У случају ожичених реализација сигнал декодованог стања секвенцијалне мреже придружен неком кораку се користи за генерисање оних управљачких сигнала операционе јединице који у датом кораку треба да имају вредност 1.

• У случају микропрограмских реализација стање секвенцијалне мреже се користи као адреса микропрограмске меморије из које се чита контролна реч формирана за дати корак и на основу њеног садржаја генеришу одговарајуће вредности управљачких сигнала операционе јединице.

ОРТ2 15/55

Повезивање јединица

• Повезивања регистара се може реализовати на више начина, при чему су они варијанте два основна начина повезивања:– повезивање директним везама и – повезивање магистралом.

ОРТ2 16/55

Повезивање директним везама

0

CLKCLK

n-1

n

R10

n

LD

0

CLKCLK

n-1

n

R11

n

LD ldR11

0

CLKCLK

n-1

n

R12

n

LD ldR12

0

CLKCLK

n-1

n

R13

n

LD ldR13

0

1

2

3

MX

1 00

CLKCLK

n-1

n

R20

n

LD ldR20mxR201 mxR200

R10R11R12R13

0

1

2

3

MX

1 00

CLKCLK

n-1

n

R21

n

LD ldR21mxR211 mxR210

R10R11R12R13

N мултиплексера!

ОРТ2 17/55

Повезивање директним везама

• Добра страна повезивања директним везама је да се у истом кораку могу реализовати микрооперације преноса садржаја од више изворишних регистара до више одредишних регистара

• Лоша страна повезивања директним везама је да је потребан велики број мултиплексера.

ОРТ2 18/55

Повезивање магистралом

0

CLKCLK

n-1

n

R10

n

LD

0

CLKCLK

n-1

n

R11

n

LD ldR11

0

CLKCLK

n-1

n

R12

n

LD ldR12

0

CLKCLK

n-1

n

R13

n

LD ldR13

0

CLKCLK

n-1

n

R20

n

LD ldR20

0

CLKCLK

n-1

n

R21

n

LD ldR21

rdR13

nn

rdR12

nn

rdR11

nn

rdR10

nn

ldR10

N бафера!

ОРТ2 19/55

Повезивање магистралом

• Добра страна повезивања магистралом је да не постоји потреба за мултиплексерима, већ да се уместо њих користе бафери са три стања.

• Лоша страна је да се истовремено не може преносити садржај више од једног изворишног регистара у одредишне регистре.

ОРТ2 20/55

Реализација јединица са једном и више операција

WU

M_EU/WU7..0

...

ZQ

EU

out

M_RU/EU7..0

n

X1EULD

n

n

X2EULD

n

n

XPEULD

n

n

n

n

...

...

RU

Z1EUn

n

ZQNEUn

n

Z2EUn

n

...

EU

nn

n

n

n

ldX1EURUldX2EURU

ldXPEURU

...

stOEURU

OEUcl

OE

US

R

CLK

Q

Q

PU

Z2E

Uou

t

Z1E

Uou

t

...

lc0...r-1

cs0

...s-

1

r s

PREKIDAČKE MREŽE

ldZ1WUEU

stOWUEU

ldZ2WUEU

ldZQWUEU

...

CU

RU (Read Unit)

EU (Execution Unit)

WU (Write Unit)

CU (Control Unit)

PU (Processing Unit)

ОРТ2 21/55

Операција множења – MULU

∑∑−

=

=

⋅⋅=

⋅⋅=⋅=1n

0i

ii

1n

0i

ii 2YX2YXYXP

P(0)=0+X∙Y0∙20

P(1)=P(0)+X∙Y1∙21

... P(i)=P(i-1)+X∙Yi∙2

i

... P(n-1)=P(i-2)+X∙Yn-1∙2

n-1

ОРТ2 22/55

Операција множења – MULU

• Приликом рачунања парцијалног производа чланови се могу груписати и на следећи начин:

• P(i)=P(i-1)+(X∙2i)∙Y i, где је P(0)=0.

• Израз X∙2i се може исказати рекурзивно D(i)=D(i-1)∙2, где је D(0)=X.

• Овим се добије да је P(i)=P(i-1)+D(i)∙Y i, – у случају када је Yi једнако нула даје P(i)=P(i-1), – у случају када је Yi једнако један даје P(i)=P(i-1)+D(i).

ОРТ2 23/55

Операција множења – MULU

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = 0; i < n; i++) {

if ((y & 1) == 0) {

p = p;

} else {

p = p + d;

}

d = d << 1;

y = y >> 1;

}

return p;

}

ОРТ2 24/55

Операција множења – MULU

const int n = ...

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = 0; i < n; i++) {

if ((y & 1) == 0) {

p = p;

} else {

p = p + d;

}

d = d << 1;

y = y >> 1;

}

return p;

}

Dclk

Iclk

cl clP

ld ldP

il 0

ld ldDsl slD

inc incI

cl clI

ir0srsrY Y

ldclkX

ldclk

Pclk

ADD

CMP

L

L

n

Y0

MULUS

clk

RclMULU

Q

ОРТ2 25/55

Операција множења – MULU

const int n = ...

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = 0; i < n; i++) {

if ((y & 1) == 0) {

p = p;

} else {

p = p + d;

}

d = d << 1;

y = y >> 1;

}

return p;

}

Dclk

Iclk

cl clP

ld ldP

il 0

ld ldDsl slD

inc incI

cl clI

ir0srsrY Y

ldclkX

ldclk

Pclk

ADD

CMP

L

L

n

Y0

MULUS

clk

RclMULU

Q

ОРТ2 26/55

Операција множења – MULU

const int n = ...

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = 0; i < n; i++) {

if ((y & 1) == 0) {

p = p;

} else {

p = p + d;

}

d = d << 1;

y = y >> 1;

}

return p;

}

MULU0

1

K0

P <= 0 K1

D <= X K2

I <= 0 K3

L0

1

K4

Y0

0 1

K5

P <= P K6 P <= P + D K7

D <= Dn-2..00 K8

Y <= 0Yn-1..1 K9

I <= I + 1 K10

MULU <= 0K11

ОРТ2 27/55

Операција множења – MULU

const int n = ...

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = 0; i < n; i++) {

if ((y & 1) == 0) {

p = p;

} else {

p = p + d;

}

d = d << 1;

y = y >> 1;

}

return p;

}

MULU0

1

K0

P <= 0 K1

D <= X K2

I <= 0 K3

L0

1

K4

Y0

0 1

K5

P <= P K6 P <= P + D K7

D <= Dn-2..00 K8

Y <= 0Yn-1..1 K9

I <= I + 1 K10

MULU <= 0K11

ОРТ2 28/55

Операција множења – MULU

const int n = ...

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = 0; i < n; i++) {

if ((y & 1) == 0) {

p = p;

} else {

p = p + d;

}

d = d << 1;

y = y >> 1;

}

return p;

}

MULU0

1

K0

P <= 0

K1D <= X

I <= 0

L0

1

K2

Y0

0 1

K3

P <= P K4 P <= P + D K5

D <= Dn-2..00

K6Y <= 0Yn-1..1

I <= I + 1

MULU <= 0K7

ОРТ2 29/55

Операција множења – MULU

const int n = ...

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = 0; i < n; i++) {

if ((y & 1) == 0) {

p = p;

} else {

p = p + d;

}

d = d << 1;

y = y >> 1;

}

return p;

}

MULU0

1

K0

P <= 0

K1D <= X

I <= 0

L0

1

K2

Y0

0 1

K3

P <= P K4 P <= P + D K5

D <= Dn-2..00

K6Y <= 0Yn-1..1

I <= I + 1

MULU <= 0K7

ОРТ2 30/55

Операција множења – MULU

const int n = ...

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = 0; i < n; i++) {

if ((y & 1) == 0) {

p = p;

d = d << 1;

y = y >> 1;

} else {

p = p + d;

d = d << 1;

y = y >> 1;

}

}

return p;

}

MULU0

1

K0

P <= 0

K1D <= X

I <= 0

L0

1

K2

Y0

0 1

K3

K4

D <= Dn-2..00

P <= P + D

K5

Y <= 0Yn-1..1

I <= I + 1

MULU <= 0K6

D <= Dn-2..00P <= P

Y <= 0Yn-1..1

I <= I + 1

ОРТ2 31/55

Операција множења – MULU

const int n = ...

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = 0; i < n; i++) {

if ((y & 1) == 0) {

d = d << 1;

y = y >> 1;

} else {

p = p + d;

d = d << 1;

y = y >> 1;

}

}

return p;

}

MULU0

1

K0

P <= 0

K1D <= X

I <= 0

L0

1

K2

Y0

0 1

K3

K4

D <= Dn-2..00

P <= P + D

K5

Y <= 0Yn-1..1

I <= I + 1

MULU <= 0K6

D <= Dn-2..00

Y <= 0Yn-1..1

I <= I + 1

ОРТ2 32/55

Операција множења – MULU

MULU0

1

T0

clP

T1ldD

clI

L0

1

T2

Y0

0 1

T3

T4

slD

ldP

T5

srY

incI

clMULUT6

slD

srY

incI

ОРТ2 33/55

Операција множења – MULU

inc

ldCNT

clk

DCT0 T1 T2 T3 T4 T5 T6 T7

Сигнали операционе јединице

Сигнали управљачке јединице

clP ldD clI ldP slD srY incI clMULU

MULU

L

Y0

3

3

CNT2..0 ldCNT

ОРТ2 34/55

Операција множења – MULU

inc

ldCNT

clk

DCT0 T1 T2 T3 T4 T5 T6 T7

Сигнали операционе јединице

Сигнали управљачке јединице

clP ldD clI ldP slD srY incI clMULU

MULU

L

Y0

3

3

CNT2..0 ldCNT

ОРТ2 35/55

Операција множења – MULU

Сигнали операционе јединице

ldP =

clP =

ldD =

slD =

clI =

incI =

srY =

clMULU =

T5

T1

T1

T4

T1

T4

T4

T6

+ T5

+ T5

+ T5

ОРТ2 36/55

Операција множења – MULU

Сигнали операционе јединице

ldP =

clP =

ldD =

slD =

clI =

incI =

srY =

clMULU =

T5

T1

T1

T4

T1

T4

T4

T6

+ T5

+ T5

+ T5

Мрежа Мурогов типа

ОРТ2 37/55

Операција множења – MULU

Сигнали управљачке јединице

ldCNT =

CNT2 =

CNT1 =

CNT0 =

T0*MULU

T0*MULU*0

T0*MULU*0

T0*MULU*0

+T2*L

+T2*L*1

+T2*L*1

+T2*L*0

+T3*Y0

+T3*Y0*1

+T3*Y0*0

+T3*Y0*1

+T4

+T4*0

+T4*1

+T4*0

+T5

+T5*0

+T5*1

+T5*0

+T6

+T6*0

+T6*0

+T6*0

ОРТ2 38/55

Операција множења – MULU

Сигнали управљачке јединице

T0*MULU +T2*L

T2*L

T2*L

+T3*Y0

+T3*Y0

T3*Y0

+T4

+T4

+T5

+T5

+T6ldCNT =

CNT2 =

CNT1 =

CNT0 =

ОРТ2 39/55

Операција множења – MULU v2

MULU0

1

T0

clP

T1ldD

clI

L0

1

T2

Y0

0 1

T4

slD

ldP

T5

srY

incI

clMULUT6

slD

srY

incI

ОРТ2 40/55

Операција множења – MULU v2

Сигнали операционе јединице

ldP =

clP =

ldD =

slD =

clI =

incI =

srY =

clMULU =

T5

T1

T1

T4

T1

T4

T4

T6

+ T5

+ T5

+ T5

ОРТ2 41/55

Операција множења – MULU v2

Сигнали управљачке јединице

ldCNT =

CNT2 =

CNT1 =

CNT0 =

T0*MULU

T0*MULU*0

T0*MULU*0

T0*MULU*0

+T2*L

+T2*L*1

+T2*L*1

+T2*L*0

+T2*L*Y0

+T2*L*Y0*1

+T2*L*Y0*0

+T2*L*Y0*0

+T4

+T4*0

+T4*1

+T4*0

+T5

+T5*0

+T5*1

+T5*0

+T6

+T6*0

+T6*0

+T6*0

+T2*L*Y0

+T2*L*Y0*1

+T2*L*Y0*0

+T2*L*Y0*1

ОРТ2 42/55

Операција множења – MULU v2

Сигнали управљачке јединице

ldCNT =

CNT2 =

CNT1 =

CNT0 =

T0*MULU +T2

T2

T2*L

+T4

+T4

+T5

+T5

+T6

T2*L*Y0

ОРТ2 43/55

Операција множења – MULU v2’

MULU0

1

T0

clP

T1ldD

clI

L0

1

T2

Y0

0 1

T4

slD

ldP

T5

srY

incI

clMULUT6

slD

srY

incI

ОРТ2 44/55

Операција множења – MULU v2’

Сигнали операционе јединице

ldP =

clP =

ldD =

slD =

clI =

incI =

srY =

clMULU =

T4

T1

T1

T3

T1

T3

T3

T5

+ T4

+ T4

+ T4

ОРТ2 45/55

Операција множења – MULU v2’

Сигнали управљачке јединице

ldCNT =

CNT2 =

CNT1 =

CNT0 =

T0*MULU

T0*MULU*0

T0*MULU*0

T0*MULU*0

+T2*L

+T2*L*1

+T2*L*1

+T2*L*0

+T4

+T4*0

+T4*1

+T4*0

+T5

+T5*0

+T5*1

+T5*0

+T6

+T6*0

+T6*0

+T6*0

+T2*L*Y0

+T2*L*Y0*1

+T2*L*Y0*0

+T2*L*Y0*1

ОРТ2 46/55

Операција множења – MULU v2’

Сигнали управљачке јединице

ldCNT =

CNT2 =

CNT1 =

CNT0 =

T0*MULU +T2*L

T2*L

T2*L

+T4

+T4

+T5

+T5

+T6+T2*L*Y0

+T2*L*Y0

T2*L*Y0

ОРТ2 47/55

Операција множења – MULU v3

MULU0

1

T0

clP

T1ldD

clI

L0

1

T2

Y0

0 1

T4

slD

ldP

T5

srY

incI

clMULUT6

slD

srY

incI

ОРТ2 48/55

Операција множења – MULU v3

MULU0

1

T0

clP

T1ldD

clI

L0

1

T2

If Y0 then {ldP}

T3slD

srY

incI

If L then {clMULU}

ОРТ2 49/55

Операција множења – MULU

inc

ldCNT

clk

DCT0 T1 T2 T3

Сигнали операционе јединице

Сигнали управљачке јединице

clP ldD clI ldP slD srY incI clMULU

MULU

L

2

2

CNT1..0 ldCNT

Y0

L

ОРТ2 50/55

Операција множења – MULU v3

Сигнали операционе јединице

ldP =

clP =

ldD =

slD =

clI =

incI =

srY =

clMULU =

T3 * Y0

T1

T1

T3

T1

T3

T3

T2 * L

Мрежа Милијевог типа

ОРТ2 51/55

Операција множења – MULU v3

Сигнали управљачке јединице

ldCNT =

CNT1 =

CNT0 =

T0*MULU

T0*MULU*0

T0*MULU*0

+T2*L

+T2*L*0

+T2*L*0

+T3

+T3*1

+T3*0

ОРТ2 52/55

Операција множења – MULU v3

Сигнали управљачке јединице

ldCNT =

CNT1 =

CNT0 =

T0*MULU

T3

0

+T2*L +T3

ОРТ2 53/55

Операција множења – MULU

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = n; i != 0; i--) {

if ((y & 1) == 0) {

p = p;

} else {

p = p + d;

}

d = d << 1;

y = y >> 1;

}

return p;

}

ОРТ2 54/55

Операција множења – MULU

const int n = ...

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = n; i != 0; i--) {

if ((y & 1) == 0) {

p = p;

} else {

p = p + d;

}

d = d << 1;

y = y >> 1;

}

return p;

}

Dclk

Iclk

cl clP

ld ldP

il 0

ld ldDsl slD

dec decI

ld ldI

ir0srsrY Y

ldclkX

ldclk

Pclk

ADD

n

Y0

MULUS

clk

RclMULU

Q

L

ОРТ2 55/55

Операција множења – MULU

const int n = ...

int mulu(int x, int y) {

int p = 0;

int d = x;

for (int i = n; i != 0; i--) {

if ((y & 1) == 0) {

p = p;

} else {

p = p + d;

}

d = d << 1;

y = y >> 1;

}

return p;

}

Dclk

Iclk

cl clP

ld ldP

il 0

ld ldDsl slD

dec decI

ld ldI

ir0srsrY Y

ldclkX

ldclk

Pclk

ADD

n

Y0

MULUS

clk

RclMULU

Q

L

Која је величина регистара и сабирача?

Питања?

Електротехнички Факултет

Универзитет у Београдуhttp://rti.etf.bg.ac.rs/rti/ir2ort2/index.html