Fundamentos de Computação - I/O 2
(Técnico - Tec. da Informação - EPE 2006 CESGRANRIO)
2. Uma máquina possui instruções de 16 bits e endereços de 4 bits. Do conjunto total de instruções, 15 referenciam 3 endereços, 14 referenciam 2 endereços e 16 não apresentam referência a endereço. Qual é o número máximo de instruções que referenciam 1 endereço que esta máquina pode ter?
a) 7
b) 16
c) 31
d) 63
e) 128
Resposta: C
Foi dado que a máquina possui instruções de 16 bits e endereços de 4 bits.
No caso das instruções que referenciam 3 endereços, 12 bits da instrução guardarão o endereço e 4 bits guardarão o opcode. Digamos que os bits mais significativos sejam os do opcode, e os bits menos significativos sejam os bits dos endereços. No caso das instruções que referenciam 3 endereços, temos 4 bits de opcode, que fornecem 16 opções distintas de opcode, das quais 15 são utilizadas p/ esse tipo de instrução. Logo, o opcode que resta é utilizado nos demais tipos de instrução (digamos que o opcode 0000 é o opcode que resta). Temos assim o seguinte esquema:
Para instruções que referenciam 2 endereços, foi dado que elas são 14 no total. Como os primeiros 4 bits devem ser 0000 (opcode restante do caso anterior, e que permite identificar que esta instrução não é uma instrução da classe anterior), sobra apenas os 4 próximos bits de opção p/ opcodes. No total, temos então 16 opcões de opcode. Como foi dado que apenas 14 instruções referenciam 2 endereços, então sobram 2 opcodes nesse campo (digamos: 0000 e 0001). Temos assim o seguinte esquema:
O próximo dado do exercício é que existem 16 instruções que não referenciam endereço. Com esse dado, podemos concluir que essas instruções são provenientes da variação de apenas 4 bits (que na nossa convenção, corresponde aos últimos 4 bits), os quais tem seu valor variando de 0 a 15.
Chegamos finalmente às instruções que referenciam 1 endereço. Essas instruções terão a seguinte forma:
Os valores 0000 e 0001 no segundo campo são as opções de opcode que sobraram das instruções que referenciam 2 endereços. Assim, para cada um desses 2 casos, temos 16 opções distintas de opcode, o que daria um total de 32 instruções distintas nessa categoria. Entretanto, não podemos esquecer que 1 opcode desses deve ser utilizado p/ identificar as instruções que não referenciam endereços. Então, digamos que para o segundo campo igual a 0000, todos os 16 opcodes podem ficar para instruções de 1 endereço, mas para o segundo campo igual a 0001, 15 opcodes são usados para instruções desse tipo e um opcode (digamos, 0000) p/ identificar o caso de instruções que não referenciam endereços. Assim, temos para as instruções que não referenciam endereços:
Ou seja, o número máximo de instruções que referenciam 1 endereço que esta máquina pode ter são 31 instruções. Portanto, letra C.
2. Uma máquina possui instruções de 16 bits e endereços de 4 bits. Do conjunto total de instruções, 15 referenciam 3 endereços, 14 referenciam 2 endereços e 16 não apresentam referência a endereço. Qual é o número máximo de instruções que referenciam 1 endereço que esta máquina pode ter?
a) 7
b) 16
c) 31
d) 63
e) 128
Resposta: C
Foi dado que a máquina possui instruções de 16 bits e endereços de 4 bits.
No caso das instruções que referenciam 3 endereços, 12 bits da instrução guardarão o endereço e 4 bits guardarão o opcode. Digamos que os bits mais significativos sejam os do opcode, e os bits menos significativos sejam os bits dos endereços. No caso das instruções que referenciam 3 endereços, temos 4 bits de opcode, que fornecem 16 opções distintas de opcode, das quais 15 são utilizadas p/ esse tipo de instrução. Logo, o opcode que resta é utilizado nos demais tipos de instrução (digamos que o opcode 0000 é o opcode que resta). Temos assim o seguinte esquema:
Código: |
E = bits de endereço X = bits de instrução --------------------------- XXXX | EEEE | EEEE | EEEE | --------------------------- |
Para instruções que referenciam 2 endereços, foi dado que elas são 14 no total. Como os primeiros 4 bits devem ser 0000 (opcode restante do caso anterior, e que permite identificar que esta instrução não é uma instrução da classe anterior), sobra apenas os 4 próximos bits de opção p/ opcodes. No total, temos então 16 opcões de opcode. Como foi dado que apenas 14 instruções referenciam 2 endereços, então sobram 2 opcodes nesse campo (digamos: 0000 e 0001). Temos assim o seguinte esquema:
Código: |
E = bits de endereço X = bits de instrução --------------------------- 0000 | XXXX | EEEE | EEEE | --------------------------- |
O próximo dado do exercício é que existem 16 instruções que não referenciam endereço. Com esse dado, podemos concluir que essas instruções são provenientes da variação de apenas 4 bits (que na nossa convenção, corresponde aos últimos 4 bits), os quais tem seu valor variando de 0 a 15.
Chegamos finalmente às instruções que referenciam 1 endereço. Essas instruções terão a seguinte forma:
Código: |
E = bits de endereço X = bits de instrução --------------------------- 0000 | 0000 | XXXX | EEEE | --------------------------- ou --------------------------- 0000 | 0001 | XXXX | EEEE | --------------------------- |
Os valores 0000 e 0001 no segundo campo são as opções de opcode que sobraram das instruções que referenciam 2 endereços. Assim, para cada um desses 2 casos, temos 16 opções distintas de opcode, o que daria um total de 32 instruções distintas nessa categoria. Entretanto, não podemos esquecer que 1 opcode desses deve ser utilizado p/ identificar as instruções que não referenciam endereços. Então, digamos que para o segundo campo igual a 0000, todos os 16 opcodes podem ficar para instruções de 1 endereço, mas para o segundo campo igual a 0001, 15 opcodes são usados para instruções desse tipo e um opcode (digamos, 0000) p/ identificar o caso de instruções que não referenciam endereços. Assim, temos para as instruções que não referenciam endereços:
Código: |
E = bits de endereço X = bits de instrução --------------------------- 0000 | 0001 | 0000 | XXXX | --------------------------- |
Ou seja, o número máximo de instruções que referenciam 1 endereço que esta máquina pode ter são 31 instruções. Portanto, letra C.
Comentários