Este documento apresenta a construção de um datapath para implementar instruções do tipo MIPS em um único ciclo de clock. Ele discute a metodologia de temporização para garantir que os sinais sejam válidos quando necessário e permite que cada instrução seja executada em um ciclo. O documento descreve como buscar instruções na memória, incrementar o PC, ler registradores e usar a ALU para executar operações aritméticas e lógicas.
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
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
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
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