SlideShare uma empresa Scribd logo
1 de 83
Baixar para ler offline
Arquitetura de Computadores
ACH2055
Aula 05 – Datapath de Ciclo ´Unico
Norton Trevisan Roman
(norton@usp.br)
19 de setembro de 2019
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 1 / 34
Construindo o Datapath
Implementando MIPS
Vamos construir um datapath que rode MIPS
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 2 / 34
Construindo o Datapath
Implementando MIPS
Vamos construir um datapath que rode MIPS
Especificamente, implementaremos:
Referˆencias `a mem´oria (lw e sw)
Instru¸c˜oes l´ogico-aritm´eticas (add, sub, AND, OR e slt)
Desvios (beq e j)
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 2 / 34
Construindo o Datapath
Implementando MIPS
Cada instru¸c˜ao come¸car´a com os mesmos passos:
Armazenamos no contador de programa (PC) o endere¸co de
mem´oria contendo a instru¸c˜ao
Buscamos a instru¸c˜ao na mem´oria
Lemos campos espec´ıficos da instru¸c˜ao, para determinar que
registradores ler
Lemos os registradores selecionados
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 3 / 34
Construindo o Datapath
Implementando MIPS
Cada instru¸c˜ao come¸car´a com os mesmos passos:
Armazenamos no contador de programa (PC) o endere¸co de
mem´oria contendo a instru¸c˜ao
Buscamos a instru¸c˜ao na mem´oria
Lemos campos espec´ıficos da instru¸c˜ao, para determinar que
registradores ler
Lemos os registradores selecionados
Ap´os esses passos, cada instru¸c˜ao segue seu
caminho
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 3 / 34
Construindo o Datapath
Implementando MIPS
Para simplificar, faremos com que cada instru¸c˜ao
rode em um ´unico ciclo de clock
Come¸cando em uma borda do clock e finalizando na borda
seguinte
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 4 / 34
Construindo o Datapath
Implementando MIPS
Para simplificar, faremos com que cada instru¸c˜ao
rode em um ´unico ciclo de clock
Come¸cando em uma borda do clock e finalizando na borda
seguinte
Precisamos ent˜ao definir uma metodologia de
temporiza¸c˜ao
Definindo assim quando os sinais podem ser lidos e quando
podem ser escritos
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 4 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
Vamos assumir um modelo ativado pela borda do
clock
Valores s˜ao atualizados apenas nas bordas do sinal → a
transi¸c˜ao r´apida de voltagem alta para baixa ou vice-versa
No nosso caso, na borda crescente
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 5 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
Vamos assumir um modelo ativado pela borda do
clock
Valores s˜ao atualizados apenas nas bordas do sinal → a
transi¸c˜ao r´apida de voltagem alta para baixa ou vice-versa
No nosso caso, na borda crescente
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 5 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
As mudan¸cas podem ocorrer tanto na borda
ascendente quanto descendente
Depender´a do projeto
O conte´udo somente ser´a atualizado na borda ativa do clock
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 6 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
Todo bloco l´ogico recebe seus dados de um
elemento de mem´oria
Tamb´em conhecidos como elementos de estado, por
conterem um estado
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 7 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
Todo bloco l´ogico recebe seus dados de um
elemento de mem´oria
Tamb´em conhecidos como elementos de estado, por
conterem um estado
Escrevendo sua sa´ıda em outro desses elementos
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 7 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
Sua entrada corresponde ent˜ao aos valores escritos
em um ciclo de clock anterior
Enquanto que suas sa´ıdas poder˜ao ser usadas no ciclo
seguinte
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 8 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
Todos os sinais devem se propagar do elemento 1,
atrav´es do bloco l´ogico, para o elemento 2 no
tempo de um per´ıodo do clock
O tempo necess´ario para os sinais chegarem ao elemento 2
define ent˜ao o comprimento do ciclo do clock
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 9 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
Mais do que isso, os sinais escritos em um elemento
devem ser v´alidos quando a borda ativa ocorrer
Um sinal ´e v´alido se for est´avel (seu valor n˜ao mudar´a at´e
nova mudan¸ca na entrada)
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 10 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
Mais do que isso, os sinais escritos em um elemento
devem ser v´alidos quando a borda ativa ocorrer
Um sinal ´e v´alido se for est´avel (seu valor n˜ao mudar´a at´e
nova mudan¸ca na entrada)
Fornecendo assim entradas v´alidas ao bloco l´ogico seguinte
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 10 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
Isso exige que o per´ıodo do clock tamb´em seja
longo o suficiente para que os sinais no bloco l´ogico
se estabilizem
Para que possam ser ent˜ao armazenados nos elementos com
estado
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 11 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
Temos ent˜ao um limite inferior para o per´ıodo do
clock
Deve ser longo o suficiente para que todas as entradas aos
elementos com estado sejam v´alidas
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 12 / 34
Construindo o Datapath
Metodologia de Temporiza¸c˜ao
Com isso, podemos ler um registrador, passar seu
conte´udo por um bloco l´ogico, e escrever no mesmo
registrador
Tudo no mesmo ciclo de clock
Isso porque as mudan¸cas ocorrem apenas na borda do sinal
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 13 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Agora que temos a metodologia de temporiza¸c˜ao,
vamos ao datapath
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 14 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Agora que temos a metodologia de temporiza¸c˜ao,
vamos ao datapath
Antes de mais nada,
precisamos armazenar
instru¸c˜oes e dados
Precisamos de uma
mem´oria
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 14 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Agora que temos a metodologia de temporiza¸c˜ao,
vamos ao datapath
Antes de mais nada,
precisamos armazenar
instru¸c˜oes e dados
Precisamos de uma
mem´oria Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 14 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Agora que temos a metodologia de temporiza¸c˜ao,
vamos ao datapath
Antes de mais nada,
precisamos armazenar
instru¸c˜oes e dados
Precisamos de uma
mem´oria Fonte: [1]
Al´em do contador de programa, para armazenar o
endere¸co da instru¸c˜ao atual
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 14 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Precisamos tamb´em incrementar o
PC em 4
O endere¸co da pr´oxima instru¸c˜ao
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 15 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Precisamos tamb´em incrementar o
PC em 4
O endere¸co da pr´oxima instru¸c˜ao
Precisamos de um adicionador
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 15 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Precisamos tamb´em incrementar o
PC em 4
O endere¸co da pr´oxima instru¸c˜ao
Precisamos de um adicionador
Fonte: [1]
Para executar uma instru¸c˜ao, precisamos busc´a-la
na mem´oria
E ent˜ao incrementar o PC em 4, preparando assim para a
execu¸c˜ao da pr´oxima instru¸c˜ao
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 15 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Fonte: [1]
Na borda do clock, o
endere¸co armazenado
no PC ´e usado para
acessar a mem´oria
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Fonte: [1]
Durante esse ciclo
do clock, a ins-
tru¸c˜ao armazenada
naquele endere¸co
´e lida da mem´oria
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Fonte: [1]
Enquanto o endere¸co
contido no PC ´e
incrementado em 4
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Fonte: [1]
E enviado nova-
mente ao PC
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
Construindo o Datapath
Buscando uma Instru¸c˜ao
Fonte: [1]
Na pr´oxima borda do
clock, o ciclo reinicia
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 17 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Fonte: [1]
Todas as instru¸c˜oes do tipo R:
Leem 2 registradores (ou 1 registrador e o shift amount)
Usam seus valores para executar uma opera¸c˜ao na ALU
Escrevem o resultado em um registrador
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 17 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Os registradores s˜ao armazenados em um Arquivo
de registradores
Conjunto de registradores que podem ser lidos e escritos a
partir de um n´umero de registro
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Os registradores s˜ao armazenados em um Arquivo
de registradores
Conjunto de registradores que podem ser lidos e escritos a
partir de um n´umero de registro
Fonte: [1]
Arquivo com duas
portas de leitura
e uma de escrita
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Os registradores s˜ao armazenados em um Arquivo
de registradores
Conjunto de registradores que podem ser lidos e escritos a
partir de um n´umero de registro
Fonte: [1]
Para leitura, forne-
cemos o n´umero
do registrador
(at´e 2 registra-
dores diferentes)
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Os registradores s˜ao armazenados em um Arquivo
de registradores
Conjunto de registradores que podem ser lidos e escritos a
partir de um n´umero de registro
Fonte: [1]
Para leitura, forne-
cemos o n´umero
do registrador
(at´e 2 registra-
dores diferentes)
E o conte´udo
desse(s) registra-
dor(es) ´e retornado
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Os registradores s˜ao armazenados em um Arquivo
de registradores
Conjunto de registradores que podem ser lidos e escritos a
partir de um n´umero de registro
Fonte: [1]
Para escrita,
fornecemos
o n´umero do
registrador e o dado
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Os registradores s˜ao armazenados em um Arquivo
de registradores
Conjunto de registradores que podem ser lidos e escritos a
partir de um n´umero de registro
Fonte: [1]
Al´em de um sinal
de clock para
controlar a escrita
no registrador
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Os registradores s˜ao armazenados em um Arquivo
de registradores
Conjunto de registradores que podem ser lidos e escritos a
partir de um n´umero de registro
Fonte: [1]
O arquivo sempre
retorna o conte´udo
dos registradores
cujos n´umeros
est˜ao na entrada
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Os registradores s˜ao armazenados em um Arquivo
de registradores
Conjunto de registradores que podem ser lidos e escritos a
partir de um n´umero de registro
Fonte: [1]
Escritas, contudo,
s˜ao controladas
pelo sinal de escrita
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Os registradores s˜ao armazenados em um Arquivo
de registradores
Conjunto de registradores que podem ser lidos e escritos a
partir de um n´umero de registro
Fonte: [1]
Que precisa ser
ligado, para que
uma escrita ocorra
na pr´oxima borda
do sinal de clock
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Os registradores s˜ao armazenados em um Arquivo
de registradores
Conjunto de registradores que podem ser lidos e escritos a
partir de um n´umero de registro
Fonte: [1]
At´e essa borda
ocorrer, a sa´ıda
continua sendo o
que foi armazenado
no ciclo anterior
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Precisaremos tamb´em de uma ALU, para operar nos
valores dos registradores
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Precisaremos tamb´em de uma ALU, para operar nos
valores dos registradores
Fonte: [1]
Entradas
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Precisaremos tamb´em de uma ALU, para operar nos
valores dos registradores
Fonte: [1]
Bits de opera¸c˜ao
(+, ÷, invers˜ao de
bits, nega¸c˜ao etc)
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Precisaremos tamb´em de uma ALU, para operar nos
valores dos registradores
Fonte: [1]
Resultado da
opera¸c˜ao
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Precisaremos tamb´em de uma ALU, para operar nos
valores dos registradores
Fonte: [1]
Indica que todos
os bits do resul-
tado s˜ao zero
(´util para imple-
mentar branches)
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
Precisaremos tamb´em de uma ALU, para operar nos
valores dos registradores
Fonte: [1]
H´a mais sinais e
sa´ıdas, que veremos
mais adiante
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo R
https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/addInstruction.html
add $3, $5, $1
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 20 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo I
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 21 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo I
Fonte: [1]
Vamos implementar lw e sw
lw $s0, desl($s1)
sw $s0, desl($s1)
Ambas usam o conjunto de registradores e a ALU, para
poderem armazenar dados e calcular endere¸cos
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 21 / 34
Construindo o Datapath
Implementando lw e sw
Tamb´em precisam de uma unidade
para estender o deslocamento de 16
bits para 32 (preservando o sinal)
Para que possa ser somado ao endere¸co
no registrador base
Essa extens˜ao se d´a replicando-se o bit
de sinal do dado de origem nos bits de
maior ordem do dado de destino Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 22 / 34
Construindo o Datapath
Implementando lw e sw
Tamb´em precisam de uma unidade
para estender o deslocamento de 16
bits para 32 (preservando o sinal)
Para que possa ser somado ao endere¸co
no registrador base
Essa extens˜ao se d´a replicando-se o bit
de sinal do dado de origem nos bits de
maior ordem do dado de destino
Al´em, obviamente, de uma mem´oria
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 22 / 34
Construindo o Datapath
Implementando lw e sw
Iremos ler e escrever na
mem´oria
Precisamos de sinais de
controle para leitura e escrita
Al´em do endere¸co e dado de
entrada a ser escrito
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 23 / 34
Construindo o Datapath
Implementando lw e sw
Iremos ler e escrever na
mem´oria
Precisamos de sinais de
controle para leitura e escrita
Al´em do endere¸co e dado de
entrada a ser escrito
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 23 / 34
Construindo o Datapath
Implementando lw e sw
https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/lwInstruction.html
lw $26, 12($30)
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 24 / 34
Construindo o Datapath
Implementando lw e sw
https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/swInstruction.html
sw $2, 12($5)
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 25 / 34
Construindo o Datapath
Implementando beq
E agora implementemos beq
beq reg1, reg2, r´otulo
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 26 / 34
Construindo o Datapath
Implementando beq
E agora implementemos beq
beq reg1, reg2, r´otulo
Como calcular o r´otulo?
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 26 / 34
Construindo o Datapath
Implementando beq
E agora implementemos beq
beq reg1, reg2, r´otulo
Como calcular o r´otulo?
Ocorre que a forma real da instru¸c˜ao ´e
beq reg1, reg2, deslocamento
Ent˜ao o r´otulo ´e calculado como um deslocamento (16 bits)
a partir do endere¸co seguinte `a instru¸c˜ao beq
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 26 / 34
Construindo o Datapath
Implementando beq
beq funciona ent˜ao de modo semelhante a lw e sw
Precisamos estender o deslocamento, para somar ao
registrador base (no caso, PC+4)
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 27 / 34
Construindo o Datapath
Implementando beq
beq funciona ent˜ao de modo semelhante a lw e sw
Precisamos estender o deslocamento, para somar ao
registrador base (no caso, PC+4)
MIPS contudo exige que, antes da extens˜ao, o
deslocamento seja deslocado `a esquerda em 2 bits
Fazendo desse um deslocamento de palavra, n˜ao bytes
E aumentando assim o alcance do deslocamento por um
fator de 4
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 27 / 34
Construindo o Datapath
Implementando beq
Al´em disso, precisamos tamb´em saber qual ser´a a
pr´oxima instru¸c˜ao executada
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 28 / 34
Construindo o Datapath
Implementando beq
Al´em disso, precisamos tamb´em saber qual ser´a a
pr´oxima instru¸c˜ao executada
Se a seguinte ao beq (os argumentos eram distintos)
Caso em que PC = PC + 4
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 28 / 34
Construindo o Datapath
Implementando beq
Al´em disso, precisamos tamb´em saber qual ser´a a
pr´oxima instru¸c˜ao executada
Se a seguinte ao beq (os argumentos eram distintos)
Caso em que PC = PC + 4
Ou a correspondente a endere¸co base + deslocamento (os
argumentos eram iguais)
Caso em que esse novo endere¸co se torna o novo PC
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 28 / 34
Construindo o Datapath
Implementando beq
Al´em disso, precisamos tamb´em saber qual ser´a a
pr´oxima instru¸c˜ao executada
Se a seguinte ao beq (os argumentos eram distintos)
Caso em que PC = PC + 4
Ou a correspondente a endere¸co base + deslocamento (os
argumentos eram iguais)
Caso em que esse novo endere¸co se torna o novo PC
Temos ent˜ao 2 opera¸c˜oes
C´alculo do endere¸co alvo e compara¸c˜ao dos registradores
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 28 / 34
Construindo o Datapath
Implementando beq
Fonte: [1]
beq reg1, reg2, deslocamento
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
Construindo o Datapath
Implementando beq
Fonte: [1]
beq reg1, reg2, deslocamento
Para calcular o
endere¸co de des-
tino do branch,
expandimos o deslo-
camento em 32 bits
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
Construindo o Datapath
Implementando beq
Fonte: [1]
beq reg1, reg2, deslocamento
E o transformamos
em um desloca-
mento de palavra
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
Construindo o Datapath
Implementando beq
Fonte: [1]
beq reg1, reg2, deslocamento
Para ent˜ao calcular
o endere¸co final, a
partir da instru¸c˜ao
seguinte ao beq
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
Construindo o Datapath
Implementando beq
Fonte: [1]
beq reg1, reg2, deslocamento
Os valores para com-
para¸c˜ao s˜ao obtidos
dos registradores
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
Construindo o Datapath
Implementando beq
Fonte: [1]
beq reg1, reg2, deslocamento
Sendo ent˜ao com-
parados na ALU,
via subtra¸c˜ao
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
Construindo o Datapath
Implementando beq
Fonte: [1]
beq reg1, reg2, deslocamento
Assim, se forem
iguais, o sinal
zero ser´a ativado
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
Construindo o Datapath
Implementando beq
Fonte: [1]
beq reg1, reg2, deslocamento
A decis˜ao sobre qual
endere¸co usar no PC
´e tomada por um
controle, com base
na sa´ıda da ALU
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
Construindo o Datapath
Implementando beq
https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/beqInstruction.html
beq $9, $11, 12
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 30 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo J
Fonte: [1]
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 31 / 34
Construindo o Datapath
Implementando instru¸c˜oes do tipo J
Fonte: [1]
Assim como com beq, “j r´otulo” ´e, na verdade,
“j deslocamento”
Deslocamos, em 2 bits `a esquerda, os 26 bits do campo de
endere¸co da instru¸c˜ao (vira deslocamento de palavra)
Substitu´ımos os 28 bits menos significativos de PC+4
(endere¸co seguinte ao j) por esses bits deslocados
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 31 / 34
Construindo o Datapath
Implementando j
Diferentemente de beq, contudo, o deslocamento,
num jump n˜ao ´e relativo
N˜ao h´a a soma ao PC+4
Apenas s˜ao mantidos seus 4 bits mais significativos
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 32 / 34
Construindo o Datapath
Implementando j
Diferentemente de beq, contudo, o deslocamento,
num jump n˜ao ´e relativo
N˜ao h´a a soma ao PC+4
Apenas s˜ao mantidos seus 4 bits mais significativos
No entanto, ainda depende do endere¸co do j
Justamente por manter os 4 bits do PC+4
Isso permite tamb´em que endere¸cos anteriores ao j possam
ser atingidos
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 32 / 34
Construindo o Datapath
Implementando j
https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/jmpInstruction.html
j 512
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 33 / 34
Referˆencias
1 Patterson, D.A.; Hennessy, J.L. (2013): Computer Organization and
Design: The Hardware/Software Interface. Morgan Kaufmann. 5a
ed.
Para detalhes sobre as partes do circuito consulte tamb´em o
Apˆendice B
2 https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/
Simulador de uma arquitetura de ciclo ´unico
3 https://en.wikipedia.org/wiki/Arithmetic_logic_unit
Apanhado interessante sobre a ALU
Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 34 / 34

Mais conteúdo relacionado

Mais de Norton Trevisan Roman

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05Norton Trevisan Roman
 

Mais de Norton Trevisan Roman (20)

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
 

Último

Nós Propomos! Canil/Gatil na Sertã - Amigos dos Animais
Nós Propomos! Canil/Gatil na Sertã - Amigos dos AnimaisNós Propomos! Canil/Gatil na Sertã - Amigos dos Animais
Nós Propomos! Canil/Gatil na Sertã - Amigos dos AnimaisIlda Bicacro
 
Química-ensino médio ESTEQUIOMETRIA.pptx
Química-ensino médio ESTEQUIOMETRIA.pptxQuímica-ensino médio ESTEQUIOMETRIA.pptx
Química-ensino médio ESTEQUIOMETRIA.pptxKeslleyAFerreira
 
Slides Lição 07, Central Gospel, As Duas Testemunhas Do Final Dos Tempos.pptx
Slides Lição 07, Central Gospel, As Duas Testemunhas Do Final Dos Tempos.pptxSlides Lição 07, Central Gospel, As Duas Testemunhas Do Final Dos Tempos.pptx
Slides Lição 07, Central Gospel, As Duas Testemunhas Do Final Dos Tempos.pptxLuizHenriquedeAlmeid6
 
Apresentação sobre Robots e processos educativos
Apresentação sobre Robots e processos educativosApresentação sobre Robots e processos educativos
Apresentação sobre Robots e processos educativosFernanda Ledesma
 
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptxSlides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptxLuizHenriquedeAlmeid6
 
Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...
Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...
Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...LuizHenriquedeAlmeid6
 
QUESTÃO 4 Os estudos das competências pessoais é de extrema importância, pr...
QUESTÃO 4   Os estudos das competências pessoais é de extrema importância, pr...QUESTÃO 4   Os estudos das competências pessoais é de extrema importância, pr...
QUESTÃO 4 Os estudos das competências pessoais é de extrema importância, pr...azulassessoria9
 
Testes de avaliação português 6º ano .pdf
Testes de avaliação português 6º ano .pdfTestes de avaliação português 6º ano .pdf
Testes de avaliação português 6º ano .pdfCsarBaltazar1
 
Acróstico - Maio Laranja
Acróstico  - Maio Laranja Acróstico  - Maio Laranja
Acróstico - Maio Laranja Mary Alvarenga
 
Nós Propomos! Sertã 2024 - Geografia C - 12º ano
Nós Propomos! Sertã 2024 - Geografia C - 12º anoNós Propomos! Sertã 2024 - Geografia C - 12º ano
Nós Propomos! Sertã 2024 - Geografia C - 12º anoIlda Bicacro
 
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdf
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdfROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdf
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdfMarcianaClaudioClaud
 
Power Point sobre as etapas do Desenvolvimento infantil
Power Point sobre as etapas do Desenvolvimento infantilPower Point sobre as etapas do Desenvolvimento infantil
Power Point sobre as etapas do Desenvolvimento infantilMariaHelena293800
 
APRENDA COMO USAR CONJUNÇÕES COORDENATIVAS
APRENDA COMO USAR CONJUNÇÕES COORDENATIVASAPRENDA COMO USAR CONJUNÇÕES COORDENATIVAS
APRENDA COMO USAR CONJUNÇÕES COORDENATIVASricardo644666
 
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptxnelsontobontrujillo
 
História concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdfHistória concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdfGisellySobral
 
Sequência didática Carona 1º Encontro.pptx
Sequência didática Carona 1º Encontro.pptxSequência didática Carona 1º Encontro.pptx
Sequência didática Carona 1º Encontro.pptxCarolineWaitman
 
Tema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdfTema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdfAnaAugustaLagesZuqui
 
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024azulassessoria9
 
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdfAparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdfAbdLuxemBourg
 

Último (20)

Nós Propomos! Canil/Gatil na Sertã - Amigos dos Animais
Nós Propomos! Canil/Gatil na Sertã - Amigos dos AnimaisNós Propomos! Canil/Gatil na Sertã - Amigos dos Animais
Nós Propomos! Canil/Gatil na Sertã - Amigos dos Animais
 
662938.pdf aula digital de educação básica
662938.pdf aula digital de educação básica662938.pdf aula digital de educação básica
662938.pdf aula digital de educação básica
 
Química-ensino médio ESTEQUIOMETRIA.pptx
Química-ensino médio ESTEQUIOMETRIA.pptxQuímica-ensino médio ESTEQUIOMETRIA.pptx
Química-ensino médio ESTEQUIOMETRIA.pptx
 
Slides Lição 07, Central Gospel, As Duas Testemunhas Do Final Dos Tempos.pptx
Slides Lição 07, Central Gospel, As Duas Testemunhas Do Final Dos Tempos.pptxSlides Lição 07, Central Gospel, As Duas Testemunhas Do Final Dos Tempos.pptx
Slides Lição 07, Central Gospel, As Duas Testemunhas Do Final Dos Tempos.pptx
 
Apresentação sobre Robots e processos educativos
Apresentação sobre Robots e processos educativosApresentação sobre Robots e processos educativos
Apresentação sobre Robots e processos educativos
 
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptxSlides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
 
Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...
Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...
Slides Lição 7, Betel, Ordenança para uma vida de fidelidade e lealdade, 2Tr2...
 
QUESTÃO 4 Os estudos das competências pessoais é de extrema importância, pr...
QUESTÃO 4   Os estudos das competências pessoais é de extrema importância, pr...QUESTÃO 4   Os estudos das competências pessoais é de extrema importância, pr...
QUESTÃO 4 Os estudos das competências pessoais é de extrema importância, pr...
 
Testes de avaliação português 6º ano .pdf
Testes de avaliação português 6º ano .pdfTestes de avaliação português 6º ano .pdf
Testes de avaliação português 6º ano .pdf
 
Acróstico - Maio Laranja
Acróstico  - Maio Laranja Acróstico  - Maio Laranja
Acróstico - Maio Laranja
 
Nós Propomos! Sertã 2024 - Geografia C - 12º ano
Nós Propomos! Sertã 2024 - Geografia C - 12º anoNós Propomos! Sertã 2024 - Geografia C - 12º ano
Nós Propomos! Sertã 2024 - Geografia C - 12º ano
 
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdf
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdfROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdf
ROTINA DE ESTUDO-APOSTILA ESTUDO ORIENTADO.pdf
 
Power Point sobre as etapas do Desenvolvimento infantil
Power Point sobre as etapas do Desenvolvimento infantilPower Point sobre as etapas do Desenvolvimento infantil
Power Point sobre as etapas do Desenvolvimento infantil
 
APRENDA COMO USAR CONJUNÇÕES COORDENATIVAS
APRENDA COMO USAR CONJUNÇÕES COORDENATIVASAPRENDA COMO USAR CONJUNÇÕES COORDENATIVAS
APRENDA COMO USAR CONJUNÇÕES COORDENATIVAS
 
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx
5. EJEMPLOS DE ESTRUCTURASQUINTO GRADO.pptx
 
História concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdfHistória concisa da literatura brasileira- Alfredo Bosi..pdf
História concisa da literatura brasileira- Alfredo Bosi..pdf
 
Sequência didática Carona 1º Encontro.pptx
Sequência didática Carona 1º Encontro.pptxSequência didática Carona 1º Encontro.pptx
Sequência didática Carona 1º Encontro.pptx
 
Tema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdfTema de redação - A prática do catfish e seus perigos.pdf
Tema de redação - A prática do catfish e seus perigos.pdf
 
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024
ATIVIDADE 1 - ENF - ENFERMAGEM BASEADA EM EVIDÊNCIAS - 52_2024
 
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdfAparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
Aparatologia na estética - Cavitação, radiofrequência e lipolaser.pdf
 

(ACH2055) Arquitetura de Computadores - Aula 05

  • 1. Arquitetura de Computadores ACH2055 Aula 05 – Datapath de Ciclo ´Unico Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 1 / 34
  • 2. Construindo o Datapath Implementando MIPS Vamos construir um datapath que rode MIPS Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 2 / 34
  • 3. Construindo o Datapath Implementando MIPS Vamos construir um datapath que rode MIPS Especificamente, implementaremos: Referˆencias `a mem´oria (lw e sw) Instru¸c˜oes l´ogico-aritm´eticas (add, sub, AND, OR e slt) Desvios (beq e j) Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 2 / 34
  • 4. Construindo o Datapath Implementando MIPS Cada instru¸c˜ao come¸car´a com os mesmos passos: Armazenamos no contador de programa (PC) o endere¸co de mem´oria contendo a instru¸c˜ao Buscamos a instru¸c˜ao na mem´oria Lemos campos espec´ıficos da instru¸c˜ao, para determinar que registradores ler Lemos os registradores selecionados Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 3 / 34
  • 5. Construindo o Datapath Implementando MIPS Cada instru¸c˜ao come¸car´a com os mesmos passos: Armazenamos no contador de programa (PC) o endere¸co de mem´oria contendo a instru¸c˜ao Buscamos a instru¸c˜ao na mem´oria Lemos campos espec´ıficos da instru¸c˜ao, para determinar que registradores ler Lemos os registradores selecionados Ap´os esses passos, cada instru¸c˜ao segue seu caminho Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 3 / 34
  • 6. Construindo o Datapath Implementando MIPS Para simplificar, faremos com que cada instru¸c˜ao rode em um ´unico ciclo de clock Come¸cando em uma borda do clock e finalizando na borda seguinte Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 4 / 34
  • 7. Construindo o Datapath Implementando MIPS Para simplificar, faremos com que cada instru¸c˜ao rode em um ´unico ciclo de clock Come¸cando em uma borda do clock e finalizando na borda seguinte Precisamos ent˜ao definir uma metodologia de temporiza¸c˜ao Definindo assim quando os sinais podem ser lidos e quando podem ser escritos Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 4 / 34
  • 8. Construindo o Datapath Metodologia de Temporiza¸c˜ao Vamos assumir um modelo ativado pela borda do clock Valores s˜ao atualizados apenas nas bordas do sinal → a transi¸c˜ao r´apida de voltagem alta para baixa ou vice-versa No nosso caso, na borda crescente Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 5 / 34
  • 9. Construindo o Datapath Metodologia de Temporiza¸c˜ao Vamos assumir um modelo ativado pela borda do clock Valores s˜ao atualizados apenas nas bordas do sinal → a transi¸c˜ao r´apida de voltagem alta para baixa ou vice-versa No nosso caso, na borda crescente Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 5 / 34
  • 10. Construindo o Datapath Metodologia de Temporiza¸c˜ao As mudan¸cas podem ocorrer tanto na borda ascendente quanto descendente Depender´a do projeto O conte´udo somente ser´a atualizado na borda ativa do clock Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 6 / 34
  • 11. Construindo o Datapath Metodologia de Temporiza¸c˜ao Todo bloco l´ogico recebe seus dados de um elemento de mem´oria Tamb´em conhecidos como elementos de estado, por conterem um estado Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 7 / 34
  • 12. Construindo o Datapath Metodologia de Temporiza¸c˜ao Todo bloco l´ogico recebe seus dados de um elemento de mem´oria Tamb´em conhecidos como elementos de estado, por conterem um estado Escrevendo sua sa´ıda em outro desses elementos Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 7 / 34
  • 13. Construindo o Datapath Metodologia de Temporiza¸c˜ao Sua entrada corresponde ent˜ao aos valores escritos em um ciclo de clock anterior Enquanto que suas sa´ıdas poder˜ao ser usadas no ciclo seguinte Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 8 / 34
  • 14. Construindo o Datapath Metodologia de Temporiza¸c˜ao Todos os sinais devem se propagar do elemento 1, atrav´es do bloco l´ogico, para o elemento 2 no tempo de um per´ıodo do clock O tempo necess´ario para os sinais chegarem ao elemento 2 define ent˜ao o comprimento do ciclo do clock Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 9 / 34
  • 15. Construindo o Datapath Metodologia de Temporiza¸c˜ao Mais do que isso, os sinais escritos em um elemento devem ser v´alidos quando a borda ativa ocorrer Um sinal ´e v´alido se for est´avel (seu valor n˜ao mudar´a at´e nova mudan¸ca na entrada) Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 10 / 34
  • 16. Construindo o Datapath Metodologia de Temporiza¸c˜ao Mais do que isso, os sinais escritos em um elemento devem ser v´alidos quando a borda ativa ocorrer Um sinal ´e v´alido se for est´avel (seu valor n˜ao mudar´a at´e nova mudan¸ca na entrada) Fornecendo assim entradas v´alidas ao bloco l´ogico seguinte Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 10 / 34
  • 17. Construindo o Datapath Metodologia de Temporiza¸c˜ao Isso exige que o per´ıodo do clock tamb´em seja longo o suficiente para que os sinais no bloco l´ogico se estabilizem Para que possam ser ent˜ao armazenados nos elementos com estado Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 11 / 34
  • 18. Construindo o Datapath Metodologia de Temporiza¸c˜ao Temos ent˜ao um limite inferior para o per´ıodo do clock Deve ser longo o suficiente para que todas as entradas aos elementos com estado sejam v´alidas Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 12 / 34
  • 19. Construindo o Datapath Metodologia de Temporiza¸c˜ao Com isso, podemos ler um registrador, passar seu conte´udo por um bloco l´ogico, e escrever no mesmo registrador Tudo no mesmo ciclo de clock Isso porque as mudan¸cas ocorrem apenas na borda do sinal Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 13 / 34
  • 20. Construindo o Datapath Buscando uma Instru¸c˜ao Agora que temos a metodologia de temporiza¸c˜ao, vamos ao datapath Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 14 / 34
  • 21. Construindo o Datapath Buscando uma Instru¸c˜ao Agora que temos a metodologia de temporiza¸c˜ao, vamos ao datapath Antes de mais nada, precisamos armazenar instru¸c˜oes e dados Precisamos de uma mem´oria Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 14 / 34
  • 22. Construindo o Datapath Buscando uma Instru¸c˜ao Agora que temos a metodologia de temporiza¸c˜ao, vamos ao datapath Antes de mais nada, precisamos armazenar instru¸c˜oes e dados Precisamos de uma mem´oria Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 14 / 34
  • 23. Construindo o Datapath Buscando uma Instru¸c˜ao Agora que temos a metodologia de temporiza¸c˜ao, vamos ao datapath Antes de mais nada, precisamos armazenar instru¸c˜oes e dados Precisamos de uma mem´oria Fonte: [1] Al´em do contador de programa, para armazenar o endere¸co da instru¸c˜ao atual Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 14 / 34
  • 24. Construindo o Datapath Buscando uma Instru¸c˜ao Precisamos tamb´em incrementar o PC em 4 O endere¸co da pr´oxima instru¸c˜ao Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 15 / 34
  • 25. Construindo o Datapath Buscando uma Instru¸c˜ao Precisamos tamb´em incrementar o PC em 4 O endere¸co da pr´oxima instru¸c˜ao Precisamos de um adicionador Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 15 / 34
  • 26. Construindo o Datapath Buscando uma Instru¸c˜ao Precisamos tamb´em incrementar o PC em 4 O endere¸co da pr´oxima instru¸c˜ao Precisamos de um adicionador Fonte: [1] Para executar uma instru¸c˜ao, precisamos busc´a-la na mem´oria E ent˜ao incrementar o PC em 4, preparando assim para a execu¸c˜ao da pr´oxima instru¸c˜ao Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 15 / 34
  • 27. Construindo o Datapath Buscando uma Instru¸c˜ao Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
  • 28. Construindo o Datapath Buscando uma Instru¸c˜ao Fonte: [1] Na borda do clock, o endere¸co armazenado no PC ´e usado para acessar a mem´oria Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
  • 29. Construindo o Datapath Buscando uma Instru¸c˜ao Fonte: [1] Durante esse ciclo do clock, a ins- tru¸c˜ao armazenada naquele endere¸co ´e lida da mem´oria Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
  • 30. Construindo o Datapath Buscando uma Instru¸c˜ao Fonte: [1] Enquanto o endere¸co contido no PC ´e incrementado em 4 Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
  • 31. Construindo o Datapath Buscando uma Instru¸c˜ao Fonte: [1] E enviado nova- mente ao PC Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
  • 32. Construindo o Datapath Buscando uma Instru¸c˜ao Fonte: [1] Na pr´oxima borda do clock, o ciclo reinicia Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 16 / 34
  • 33. Construindo o Datapath Implementando instru¸c˜oes do tipo R Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 17 / 34
  • 34. Construindo o Datapath Implementando instru¸c˜oes do tipo R Fonte: [1] Todas as instru¸c˜oes do tipo R: Leem 2 registradores (ou 1 registrador e o shift amount) Usam seus valores para executar uma opera¸c˜ao na ALU Escrevem o resultado em um registrador Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 17 / 34
  • 35. Construindo o Datapath Implementando instru¸c˜oes do tipo R Os registradores s˜ao armazenados em um Arquivo de registradores Conjunto de registradores que podem ser lidos e escritos a partir de um n´umero de registro Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
  • 36. Construindo o Datapath Implementando instru¸c˜oes do tipo R Os registradores s˜ao armazenados em um Arquivo de registradores Conjunto de registradores que podem ser lidos e escritos a partir de um n´umero de registro Fonte: [1] Arquivo com duas portas de leitura e uma de escrita Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
  • 37. Construindo o Datapath Implementando instru¸c˜oes do tipo R Os registradores s˜ao armazenados em um Arquivo de registradores Conjunto de registradores que podem ser lidos e escritos a partir de um n´umero de registro Fonte: [1] Para leitura, forne- cemos o n´umero do registrador (at´e 2 registra- dores diferentes) Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
  • 38. Construindo o Datapath Implementando instru¸c˜oes do tipo R Os registradores s˜ao armazenados em um Arquivo de registradores Conjunto de registradores que podem ser lidos e escritos a partir de um n´umero de registro Fonte: [1] Para leitura, forne- cemos o n´umero do registrador (at´e 2 registra- dores diferentes) E o conte´udo desse(s) registra- dor(es) ´e retornado Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
  • 39. Construindo o Datapath Implementando instru¸c˜oes do tipo R Os registradores s˜ao armazenados em um Arquivo de registradores Conjunto de registradores que podem ser lidos e escritos a partir de um n´umero de registro Fonte: [1] Para escrita, fornecemos o n´umero do registrador e o dado Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
  • 40. Construindo o Datapath Implementando instru¸c˜oes do tipo R Os registradores s˜ao armazenados em um Arquivo de registradores Conjunto de registradores que podem ser lidos e escritos a partir de um n´umero de registro Fonte: [1] Al´em de um sinal de clock para controlar a escrita no registrador Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
  • 41. Construindo o Datapath Implementando instru¸c˜oes do tipo R Os registradores s˜ao armazenados em um Arquivo de registradores Conjunto de registradores que podem ser lidos e escritos a partir de um n´umero de registro Fonte: [1] O arquivo sempre retorna o conte´udo dos registradores cujos n´umeros est˜ao na entrada Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
  • 42. Construindo o Datapath Implementando instru¸c˜oes do tipo R Os registradores s˜ao armazenados em um Arquivo de registradores Conjunto de registradores que podem ser lidos e escritos a partir de um n´umero de registro Fonte: [1] Escritas, contudo, s˜ao controladas pelo sinal de escrita Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
  • 43. Construindo o Datapath Implementando instru¸c˜oes do tipo R Os registradores s˜ao armazenados em um Arquivo de registradores Conjunto de registradores que podem ser lidos e escritos a partir de um n´umero de registro Fonte: [1] Que precisa ser ligado, para que uma escrita ocorra na pr´oxima borda do sinal de clock Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
  • 44. Construindo o Datapath Implementando instru¸c˜oes do tipo R Os registradores s˜ao armazenados em um Arquivo de registradores Conjunto de registradores que podem ser lidos e escritos a partir de um n´umero de registro Fonte: [1] At´e essa borda ocorrer, a sa´ıda continua sendo o que foi armazenado no ciclo anterior Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 18 / 34
  • 45. Construindo o Datapath Implementando instru¸c˜oes do tipo R Precisaremos tamb´em de uma ALU, para operar nos valores dos registradores Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
  • 46. Construindo o Datapath Implementando instru¸c˜oes do tipo R Precisaremos tamb´em de uma ALU, para operar nos valores dos registradores Fonte: [1] Entradas Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
  • 47. Construindo o Datapath Implementando instru¸c˜oes do tipo R Precisaremos tamb´em de uma ALU, para operar nos valores dos registradores Fonte: [1] Bits de opera¸c˜ao (+, ÷, invers˜ao de bits, nega¸c˜ao etc) Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
  • 48. Construindo o Datapath Implementando instru¸c˜oes do tipo R Precisaremos tamb´em de uma ALU, para operar nos valores dos registradores Fonte: [1] Resultado da opera¸c˜ao Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
  • 49. Construindo o Datapath Implementando instru¸c˜oes do tipo R Precisaremos tamb´em de uma ALU, para operar nos valores dos registradores Fonte: [1] Indica que todos os bits do resul- tado s˜ao zero (´util para imple- mentar branches) Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
  • 50. Construindo o Datapath Implementando instru¸c˜oes do tipo R Precisaremos tamb´em de uma ALU, para operar nos valores dos registradores Fonte: [1] H´a mais sinais e sa´ıdas, que veremos mais adiante Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 19 / 34
  • 51. Construindo o Datapath Implementando instru¸c˜oes do tipo R https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/addInstruction.html add $3, $5, $1 Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 20 / 34
  • 52. Construindo o Datapath Implementando instru¸c˜oes do tipo I Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 21 / 34
  • 53. Construindo o Datapath Implementando instru¸c˜oes do tipo I Fonte: [1] Vamos implementar lw e sw lw $s0, desl($s1) sw $s0, desl($s1) Ambas usam o conjunto de registradores e a ALU, para poderem armazenar dados e calcular endere¸cos Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 21 / 34
  • 54. Construindo o Datapath Implementando lw e sw Tamb´em precisam de uma unidade para estender o deslocamento de 16 bits para 32 (preservando o sinal) Para que possa ser somado ao endere¸co no registrador base Essa extens˜ao se d´a replicando-se o bit de sinal do dado de origem nos bits de maior ordem do dado de destino Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 22 / 34
  • 55. Construindo o Datapath Implementando lw e sw Tamb´em precisam de uma unidade para estender o deslocamento de 16 bits para 32 (preservando o sinal) Para que possa ser somado ao endere¸co no registrador base Essa extens˜ao se d´a replicando-se o bit de sinal do dado de origem nos bits de maior ordem do dado de destino Al´em, obviamente, de uma mem´oria Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 22 / 34
  • 56. Construindo o Datapath Implementando lw e sw Iremos ler e escrever na mem´oria Precisamos de sinais de controle para leitura e escrita Al´em do endere¸co e dado de entrada a ser escrito Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 23 / 34
  • 57. Construindo o Datapath Implementando lw e sw Iremos ler e escrever na mem´oria Precisamos de sinais de controle para leitura e escrita Al´em do endere¸co e dado de entrada a ser escrito Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 23 / 34
  • 58. Construindo o Datapath Implementando lw e sw https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/lwInstruction.html lw $26, 12($30) Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 24 / 34
  • 59. Construindo o Datapath Implementando lw e sw https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/swInstruction.html sw $2, 12($5) Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 25 / 34
  • 60. Construindo o Datapath Implementando beq E agora implementemos beq beq reg1, reg2, r´otulo Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 26 / 34
  • 61. Construindo o Datapath Implementando beq E agora implementemos beq beq reg1, reg2, r´otulo Como calcular o r´otulo? Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 26 / 34
  • 62. Construindo o Datapath Implementando beq E agora implementemos beq beq reg1, reg2, r´otulo Como calcular o r´otulo? Ocorre que a forma real da instru¸c˜ao ´e beq reg1, reg2, deslocamento Ent˜ao o r´otulo ´e calculado como um deslocamento (16 bits) a partir do endere¸co seguinte `a instru¸c˜ao beq Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 26 / 34
  • 63. Construindo o Datapath Implementando beq beq funciona ent˜ao de modo semelhante a lw e sw Precisamos estender o deslocamento, para somar ao registrador base (no caso, PC+4) Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 27 / 34
  • 64. Construindo o Datapath Implementando beq beq funciona ent˜ao de modo semelhante a lw e sw Precisamos estender o deslocamento, para somar ao registrador base (no caso, PC+4) MIPS contudo exige que, antes da extens˜ao, o deslocamento seja deslocado `a esquerda em 2 bits Fazendo desse um deslocamento de palavra, n˜ao bytes E aumentando assim o alcance do deslocamento por um fator de 4 Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 27 / 34
  • 65. Construindo o Datapath Implementando beq Al´em disso, precisamos tamb´em saber qual ser´a a pr´oxima instru¸c˜ao executada Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 28 / 34
  • 66. Construindo o Datapath Implementando beq Al´em disso, precisamos tamb´em saber qual ser´a a pr´oxima instru¸c˜ao executada Se a seguinte ao beq (os argumentos eram distintos) Caso em que PC = PC + 4 Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 28 / 34
  • 67. Construindo o Datapath Implementando beq Al´em disso, precisamos tamb´em saber qual ser´a a pr´oxima instru¸c˜ao executada Se a seguinte ao beq (os argumentos eram distintos) Caso em que PC = PC + 4 Ou a correspondente a endere¸co base + deslocamento (os argumentos eram iguais) Caso em que esse novo endere¸co se torna o novo PC Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 28 / 34
  • 68. Construindo o Datapath Implementando beq Al´em disso, precisamos tamb´em saber qual ser´a a pr´oxima instru¸c˜ao executada Se a seguinte ao beq (os argumentos eram distintos) Caso em que PC = PC + 4 Ou a correspondente a endere¸co base + deslocamento (os argumentos eram iguais) Caso em que esse novo endere¸co se torna o novo PC Temos ent˜ao 2 opera¸c˜oes C´alculo do endere¸co alvo e compara¸c˜ao dos registradores Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 28 / 34
  • 69. Construindo o Datapath Implementando beq Fonte: [1] beq reg1, reg2, deslocamento Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
  • 70. Construindo o Datapath Implementando beq Fonte: [1] beq reg1, reg2, deslocamento Para calcular o endere¸co de des- tino do branch, expandimos o deslo- camento em 32 bits Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
  • 71. Construindo o Datapath Implementando beq Fonte: [1] beq reg1, reg2, deslocamento E o transformamos em um desloca- mento de palavra Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
  • 72. Construindo o Datapath Implementando beq Fonte: [1] beq reg1, reg2, deslocamento Para ent˜ao calcular o endere¸co final, a partir da instru¸c˜ao seguinte ao beq Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
  • 73. Construindo o Datapath Implementando beq Fonte: [1] beq reg1, reg2, deslocamento Os valores para com- para¸c˜ao s˜ao obtidos dos registradores Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
  • 74. Construindo o Datapath Implementando beq Fonte: [1] beq reg1, reg2, deslocamento Sendo ent˜ao com- parados na ALU, via subtra¸c˜ao Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
  • 75. Construindo o Datapath Implementando beq Fonte: [1] beq reg1, reg2, deslocamento Assim, se forem iguais, o sinal zero ser´a ativado Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
  • 76. Construindo o Datapath Implementando beq Fonte: [1] beq reg1, reg2, deslocamento A decis˜ao sobre qual endere¸co usar no PC ´e tomada por um controle, com base na sa´ıda da ALU Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 29 / 34
  • 77. Construindo o Datapath Implementando beq https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/beqInstruction.html beq $9, $11, 12 Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 30 / 34
  • 78. Construindo o Datapath Implementando instru¸c˜oes do tipo J Fonte: [1] Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 31 / 34
  • 79. Construindo o Datapath Implementando instru¸c˜oes do tipo J Fonte: [1] Assim como com beq, “j r´otulo” ´e, na verdade, “j deslocamento” Deslocamos, em 2 bits `a esquerda, os 26 bits do campo de endere¸co da instru¸c˜ao (vira deslocamento de palavra) Substitu´ımos os 28 bits menos significativos de PC+4 (endere¸co seguinte ao j) por esses bits deslocados Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 31 / 34
  • 80. Construindo o Datapath Implementando j Diferentemente de beq, contudo, o deslocamento, num jump n˜ao ´e relativo N˜ao h´a a soma ao PC+4 Apenas s˜ao mantidos seus 4 bits mais significativos Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 32 / 34
  • 81. Construindo o Datapath Implementando j Diferentemente de beq, contudo, o deslocamento, num jump n˜ao ´e relativo N˜ao h´a a soma ao PC+4 Apenas s˜ao mantidos seus 4 bits mais significativos No entanto, ainda depende do endere¸co do j Justamente por manter os 4 bits do PC+4 Isso permite tamb´em que endere¸cos anteriores ao j possam ser atingidos Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 32 / 34
  • 82. Construindo o Datapath Implementando j https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/jmpInstruction.html j 512 Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 33 / 34
  • 83. Referˆencias 1 Patterson, D.A.; Hennessy, J.L. (2013): Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann. 5a ed. Para detalhes sobre as partes do circuito consulte tamb´em o Apˆendice B 2 https://www3.ntu.edu.sg/home/smitha/FYP_Gerald/ Simulador de uma arquitetura de ciclo ´unico 3 https://en.wikipedia.org/wiki/Arithmetic_logic_unit Apanhado interessante sobre a ALU Norton Trevisan Roman (norton@usp.br) 19 de setembro de 2019 34 / 34