Sei sulla pagina 1di 21

P2.

1 ESPECIFICACIN FUNCIONAL
Llus Ters
Instituto de Microelectrnica de Barcelona, IMB-CNM (CSIC)
Universitat Autnoma de Barcelona (UAB)

P2.1

1TIPOSDEINSTRUCCIONES
Sehan definido 8tipos deinstruccin;
Paracada instruccin =>cdigo,lista deparmetros:

Cdigo ylista deparmetros


(ASSIGN_VALUE,k,A)
(DATA_INPUT,k,j)
(DATA_OUTPUT,i,j)
(OUTPUT_VALUE,i,A)
(OPERATION,i, j, k, f)
(JUMP,N)
(JUMP_POS,i,N)
(JUMP_NEG,i,N)

Operacin
Xk :=A;
Xk :=INj;
OUTi :=Xj;
OUTi :=A,
Xk :=f(Xi,Xj);
gotoN;
ifXi>0gotoN;
ifXi<0gotoN;

(OPERATION,i, j, k, f):f es unidentificador deuna operacion (suma,resta,)que uno delosrecursos de


2
clculo puede ejecutar (sedefinir ms adelante)

Ejemplo:sistema decontroldetemperatura.
0:ASSIGN_VALUE,5,10
1:DATA_INPUT,0,0
2:DATA_INPUT,1,1
3:OPERATION,4,0,1,subtract
4:JUMP_NEG,4,7
5:JUMP_POS,4,9
6:JUMP,10
7:OUTPUT_VALUE,0,1
8:JUMP,10
9:OUTPUT_VALUE,0,0
10:DATA_INPUT,3,2
11:DATA_INPUT,2,2
12:OPERATION,4,2,3,subtract
13:OPERATION,4,4,5,subtract
14:JUMP_NEG,4,11
15:JUMP,1

P2.1
(X5:=10)
(X0:=IN0)
(X1:=IN1)
(X4:=X0 X1)
(ifX4<0thengoto7)
(ifX4>0thengoto9)
(goto10)
(OUT0:=1)
(goto10)
(OUT0:=0)
(X3:=IN2)
(X2:=IN2)
(X4:=X2 X3)
(X4:=X4 X5)
(ifX4<0thengoto11)
(goto1)

P2.1

2ESPECIFICACINFUNCIONAL
Sistemadigitalaimplementar:

Ocho entradasdedatos IN(0),IN(1),,IN(7)de8bits;


Ocho salidas dedatos OUT(0),OUT(1),,OUT(7)de8bits;
Una entradainstruccin (instruction) cuyo valorcorresponde auno delosocho tipos
(ASSIGN_VALUE,i,A),(DATA_INPUT,i,j),ysus correspondientes parmetros;
Una salida nmero (number) que selecciona lasiguiente instruccin aejecutar.

nmero

instruccin

programa
4

P2.1

Comentario:
Especificacin inicial (semana 1):
instruccion siguiente definida por un
circuito/programador externo en
funcion decierta condiciones
internas

operaciones

instrucciones

condiciones

Especificacin modificada:
Nmero delainstructionsiguiente
calculado internamente por el
procesador;
programa almacenado en memoria.
(=arcquitectura vonNeumann)
5

Algoritmo:especificacin funcional
number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;

P2.1

X:vectordeclarado previamente.
Nmero decomponentes X:adefinir
posteriormente.
Cada componente Xes unnmero de8bits.
6

(Ejercicio)

P2.1

Asumimos que:
X es unconjunto de16componentes ycada uno puede almacenar unnmero de8bits,
Hayhasta8puertos deentraday8puertos desalida cada uno de8bits,
Elnmero mximo deinstrucciones deunprograma es 256,
Solohay2operaciones distintas paraf:suma yresta.
Cuantas instrucciones distintas sepueden definir?

P2.1

(Solucin)
(ASSIGN_VALUE,k,A)
(DATA_INPUT,k,j)
(DATA_OUTPUT,i,j)
(OUTPUT_VALUE,i,A)
(OPERATION,i, j, k, f)
(JUMP,N)
(JUMP_POS,i,N)
(JUMP_NEG,i,N)

Xk :=A;
Xk :=INj;
OUTi :=Xj;
OUTi :=A,
Xk :=f(Xi,Xj);
gotoN;
ifXi>0gotoN;
ifXi<0gotoN;

16256=4096
168=128
816=128
8256=2048
1616162=8192
256
16256=4096
16256=4096

4096+128+128+2048+8192+256+4096+4096=23,040 instrucciones diferentes.


(214 <23,040<215)
8

RESUMEN

P2.1

Sehadefinido elconjunto deinstrucciones delprocesador;


Hemos introducido laarquitectura vonNeumann;
Sehadetallado laespecificacin funcional delprocesador.

P2.1

10

P2.2 ESPECIFICACIN ESTRUCTURAL


Llus Ters
Instituto de Microelectrnica de Barcelona, IMB-CNM (CSIC)
Universitat Autnoma de Barcelona (UAB)

1DIAGRAMADEBLOQUES
number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;

P2.2
Entradasexternas:
IN0,IN1,,IN7;
instruction;
Salidas externas:
OUT0,OUT1,,OUT7;
number;
Datos internos:X;

Transferencias dedatos:
OUT(i)<=X(j)oA;
number <=(number +1)oN;
X(k)<=A oIN(j) of;
operaciones:f(X(i),X(j)).
12

DATOSINTERNOS

P2.2
Entradasexternas:
IN0,IN1,,IN7;
instruction;
Salidas externas:
OUT0,OUT1,,OUT7;
number;
Datos internos:X;

Transferencias dedatos:
OUT(i)<=X(j)orA;
number <=(number +1)orN;
X(k)<=A orIN(j) orf;
operaciones:f(X(i),X(j)).
13

TRANSFERENCIASDEDATOSyOPERACIONES

P2.2
Entradasexternas:
IN0,IN1,,IN7;
instruction;
Salidas externas:
OUT0,OUT1,,OUT7;
number;
Datos internos:X;

Transferencias dedatos:
OUT(i)<=X(j)orA;
number <=(number +1)orN;
X(k)<=A orIN(j) orf;
operaciones:f(X(i),X(j)).
14

P2.2

DIAGRAMADEBLOQUES

seleccinentrada

seleccinsalida

bancode
registros

programa

{X(i)}
go to

recursosde
clculo

15

P2.2

INSTRUCCIONES(especificacionesadicionales)
Cdigo ylista deparmetros
(ASSIGN_VALUE,k,A)
(DATA_INPUT,k,j)
(DATA_OUTPUT,i,j)
(OUTPUT_VALUE,i,A)
(OPERATION,i, j, k, f)
(JUMP,N)
(JUMP_POS,i,N)
(JUMP_NEG,i,N)

Operacin
Xk :=A;
Xk :=INj;
OUTi :=Xj;
OUTi :=A,
Xk :=f(Xi,Xj);
gotoN;
ifXi>0gotoN;
ifXi<0gotoN;

Solodosoperaciones f:+y;
Bancoderegistros:16registros (i,j, k: sonnmeros de4bits);
nmero mximo deinstrucciones:256 (N es unnmero de8bits).
Lacodificacin deinstrucciones sedefinir ms adelante.
16

2DESCRIPCINDELOSBLOQUES
2.1SELECCINDEENTRADA

seleccinentrada

seleccinsalida

bancode
registros
{X(i)}
go to

recursosde
clculo

P2.2
number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A; number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j); number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
17

(seleccin deentrada)

seleccinentrada

Especificacin funcional
loop
caseinstructionis
when(ASSIGN_VALUE,k,A)=>
to_reg :=A;
when(DATA_INPUT,k,j)=>
to_reg :=IN(j);
when(OPERATION,i,j,k,f)=>
to_reg :=result;
whenothers=>
to_reg :=don'tcare;
endcase;
endloop;

P2.2
number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A; number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j); number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
18

P2.2
2.2SELECCINDESALIDA

seleccinentrada

seleccinsalida

bancode
registros
{X(i)}
go to

recursosde
clculo

number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j); number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A; number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
19

P2.2

(seleccin desalida)

seleccinsalida

Especificacin funcional
loop
caseprogram(number)is
when(DATA_OUTPUT,i,j)=>
OUT(i):=reg;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;
whenothers=>
OUT(i):=OUT(i);
endcase;
endloop;

Salida registrada
(como unelemento dememoria)

number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j); number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A; number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
20

RESUMEN

P2.2

Descripcin estructural =diagrama debloques basado en


Datos internos,
Transferencias dedatos,
Operaciones.

Descripcin funcional delosbloques:


Seleccin deentrada,
Seleccin desalida.

21

Potrebbero piacerti anche