Escolar Documentos
Profissional Documentos
Cultura Documentos
Paralelismo e Pipeline
1 / 30
Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt
Aula
Paralelismo
Algoritmo:
dados
Enquanto (x<a){
x1= x +dx; 3 x u dx 3 y u dx x dx x a
u1= u – 3*x*u*dx – 3*y*dx;
y1= y + u*dx;
n1 * n2 * n4 * n3 * n5 + n9 <
x = x1; dx
y = y1; y
u = u1; n6 * n8 * n7 + teste
} x1
u
n10 - y1
n11 -
Paralelismo inerente ao
processo da aplicação
u1
Enquanto (x<a){
x1= x +dx;
u1= u – 3*x*u*dx – 3*y*dx;
y1= y + u*dx;
x = x1;
y = y1;
u = u1;
}
Opção 2:
Execução por estados!!! n11 -
Estado 4
3 x u dx 3 y u dx x dx x a
n1 * n2 * n4 *
dx
n3 *X n5 + n9 <
y
n6 * n8 * n7 + teste
x1
u
n10 - y1
n11 -
n1 * n2 * n4 * n5 + n9 <
dx Estado 1
y
n6 * n8 * n7 +
Estado 2
Estado1: 3 multiplicadores, u
1 somador e 1 comparador
Estado 2: 2 multiplicadores,
n10 -
1 somador
Estado 3
Estado 3: 1 subtrator
Estado 4: 1 subtrator
n11 -
Estado 4
u1 y1 x1 teste
n1 * n2 *
3 y Estado 1
n6 * * n4 teste
Estado 2
Estado1: 2 multiplicadores, u dx
Estado 2: 2 multiplicadores,
Estado 3: 1 multiplicador e 1 n10 - n8
subtrator *
Estado 3
Estado 4: 1 subtrator, 2 x dx x a
somadores, 1 comparador y
n11 - n7 + n5 + n9 <
Estado 4
u1 y1 x1
teste
n6 * * n4
Estado 2
Estado1: 2 multiplicadores, u dx x dx
Estado 2: 2 multiplicadores,
Estado 3: 1 multiplicador e 1
n10 - n8
*
n5 +
subtrator e 1 somador
Estado 3
Estado 4: 1 subtrator, 1
x a
somador, 1 comparador y
n11 - n7 + <
Estado 4
n9
u1 x1
y1
teste
= 260 ns n9
u1 x1
y1 teste
Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt 14 / 30
Aula
Paralelismo dos Operadores
Sequencial (sem limite de recursos)
X Y U
y a
Tempo de execução: 1 ciclo,
Após o preenchimento do n11 - n7 + <
Estado 4
pipeline que tem profundidade
4. u1 x1 n9
y1
Ex: 1x100ns = 100 ns
u y x teste
clk n6 * * n4
dx Estado 2
u dx x
clk n6 * * n4
dx Estado 2
u dx x
clk n6 * * n4
dx Estado 2
u dx x
clk n6 * * n4
dx Estado 2
u dx x
clk n6 * * n4
dx Estado 2
u dx x
Laboratório 1
24 / 30
Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt
Implementação em VHDL Aula
Comportamental
COMBINACIONAL
process (clock, reset)
variable x1, y1, u1 : std_logic_vector(7 downto 0);
begin
if reset=‘1’ then
x1 := “00010000”;
y1 := “00001110”; clock reset
u1 := “00111010”;
elsif (clock’event and clock=‘1’) then
if (x1<a) then 16
x1:= x +dx; a
u1:= u – 3*x*u*dx – 3*y*dx;
y1:= y + u*dx; dx
end if;
16
x <= x1;
y <= y1;
u <= u1; 16 16 16
end process;
xo <= x; xo yo uo
y0 <= y;
uo <= u;
Comportamental
Resolvendo problema no tamanho dos operandos
process (clock, reset)
variable x1, y1, u1 : integer;
begin
if reset=‘1’ then
x1 := 0;
y1 := 0; clock reset
u1 := 0;
elsif (clock’event and clock=‘1’) then
if (x1<a) then 16
x1:= x +dx; a
u1:= u – 3*x*u*dx – 3*y*dx;
y1:= y + u*dx; dx
end if;
16
x <= conv_std_logic_vector(x1, 16);
y <= conv_std_logic_vector(y1, 16);
u <= conv_std_logic_vector(u1, 16); 16 16 16
end process;
xo <= x; xo yo uo
y0 <= y;
uo <= u;
• Determinar:
– Quantos ciclos de relogio são necessarios para efetuar os 10
laços do algoritmo?
– Qual é o periodo de relogio necessario para o funcionamento?
Comportamental 3 x u dx
PIPELINE
process (clock, reset) n1 * n2 *
3 y Estado 1
variable x1, y1, u1, n1, n2 n6, n4, n10, n8,
n5, n9, n11, n7 : integer; n6 * * n4 Estado 2
begin u dx x dx
if reset=‘1’ then
x1 := 0; y1 := 0; u1 := 0; …. n7:=0; n10 - n8
* n5 + Estado 3
elsif (clock’event and clock=‘1’) then
y x
if (teste=‘1’) then a
n11 - n7 + <Estado 4
n5:= x +dx;
… u1 y1 x1 n9
end if;
x <= conv_std_logic_vector(x1, 16); teste
y <= conv_std_logic_vector(y1, 16); process(clock, reset)
begin
u <= conv_std_logic_vector(u1, 16); If reset=‘1’ then
end process; teste <= ‘1’;
elsif (clock’event and clock=‘1’) then
if x<a then
xo <= x; teste <=‘1’;
else teste <= ‘0’;
y0 <= y; end if;
uo <= u; end if;
end process;
Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt 28 / 30
Aula
Implementação com Pipeline - RTL
process(fiox, fioy)
process (clock, reset) begin
begin fiow <= fiox*fioy;
if reset=‘1’ then multiplicador
end process;
reg <= “00000000”;
elsif (clock’event and clock=‘1’) then
if (p=‘1’) then process(x, a)
reg = fioX; begin
registradores if (x<a) then
end if;
end if; p <= ‘0’;
end process; else
p <= ‘1’; comparador
process(fiox, fioy) end process;
begin
fiow <= fiox+fioy; somador
end process;
process(fiox, fioy)
begin
fiow <= fiox-fioy; subtrador
end process;
• Determinar:
– Quantos ciclos de relogio são necessarios para efetuar os 10
laços do algoritmo?
– Qual é o periodo de relogio necessario para o funcionamento?