Você está na página 1de 12

IME

Organizao de Computadores
3 Lista de Exerccios

Respostas
Patrick Baptista Amaral de Lara
(patricklara@gmail.com)

Seo de Engenharia de Computao

INSTITUTO MILITAR DE ENGENHARIA


PRAA GENERAL TIBRCIO 80 CEP 22290-270
RIO DE JANEIRO BRASIL

1 Questo
Com relao organizao da memria cache, quantos bits no total so necessaries para uma
cache diretamente mapeada com 32Kbytes de dados e blocos de 8 palavras, considerando um
endereo de 32 bits?
Endereo da memria cache com 32 KBytes de dados (1K clulas de 32 Bytes cada);
1K clulas / endereos: 210 (10 bits para o campo ndice do endereo relativo);
32 Bytes: 25 (5 bits para o campo OFFSET do endereo relativo);
Cada bloco possui 8 palavras e 32 Bytes: 32Bytes / 8 palavras (4 Bytes / palavra).
Endereo 1

bit
validade

TAG

1bit

17bits

DADOS

32 Bytes

Endereo 2

.....
Endereo K

Endereo relativo: Endereo de 32 bits.


Temos 10 bits para o ndice e 5 bits para o OFFSET, sobram 17 bits para etiqueta (TAG).
TAG

17 bits

ndice

OFFSET

10 bits

5 bits

Ento o tamanho da memria cache total ser de:


1K blocos * (17 bits de TAG + (8 palavras x 4 Bytes x 8 bits de dados) + 1 bit validade).
1K blocos * (17 + 256 + 1) = 274 Kbits.

2 Questo
Uma falha de cache caracterizada por uma requisio de dados da cache que no pode ser
atendidada porque os dados no esto presents na cache. Explique detalhadamente o controle do
processador no tratamento de uma falha de cache.
A falha de cache ocorre quando uma requisio de dados da memria cache no pode ser
atendida porque os dados no esto presentes na memria cache.
Se a cache reportar um acerto, o computador continua usando os dados como se nada
tivesse ocorrido.
Caso contrrio, o tratamento da falha de cache feito pela unidade de controle do
processador, e com um controlador separado que inicia o acesso memria e preenche
novamente a memria cache. criado ento um stall, semelhante aos de pipeline, no
processador inteiro, basicamente congelando o contedo dos registradores temporrios e visveis
ao programador, enquanto espera-se a memria.
Se um acesso instruo resultar em uma falha, o contedo do registrador de instruo
ser invlido e para colocar a instruo correta na memria cache necessrio instruir o nvel
inferior na hierarquia de memria a realizar uma leitura. Como o contador do programa
incrementado no primeiro ciclo de clock da execuo nos processadores multiciclo e em pipeline, o
endereo da instruo que gera uma falha de memria cache igual ao valor do contador do
programa menos 4. Assim, uma vez tendo o endereo, a memria principal instruda a fazer
uma leitura. Espera-se a memria responder (o acesso dever levar vrios ciclos) e ento as
words so escritas na memria cache.
As etapas a serem realizadas em uma falha de memria cache de instrues so as seguintes:
a) Enviar o valor do PC (programm counter) original (PC atual 4) para a memria principal
(MP);
b) Instruir a MP a realizar uma leitura e esperar que a memria complete seu acesso;
c) Escrever na entrada da cache, colocando os dados da memria na parte dos dados da
entrada, escrevendo os bits mais significativos do endereo (vindo da ULA) no campo TAG e
ligando o bit de validade; e
d) Reiniciar a execuo da instruo na primeira etapa, o que buscar novamente a instruo,
desta vez encontrando-a na cache acerto.
O controle da cache sobre um acesso de dados basicamente idntico: em uma falha,
simplesmente suspende-se o processador at que a memria responda com os dados.

3 Questo
Dado um projeto de sistemas operacionais generic, defina suscintamente a funcionalidade dos
seguintes blocos abaixo.
(a) Processador de Comandos um programa que transforma comandos do usurio em
comandos a serem executados pelo computador. Um exemplo desse tipo de programa o
Command.com, que acompanhava os antigos computadores equipados com MS-DOS.
(b) Sistema de Arquivos o sistema que cuida do armazenamento dos arquivos em dscos
rgidos e outros dispositivos.
(c) IOCS o sistema de controle de entrada e sada (E/S ou em ingls I/O) trata do
acesso e controle de perifricos de E/S.
(d) Rotina de Tratamento de Interrupes. Existem dois tipos de interrupo: de hardware,
que gerada por um evento fsico qualquer, como o acionamento de uma tecla, ou a
abertura de uma porta, as interrupes de softwares. Em qualquer caso, a ocorrncia de
uma interrupo faz com que o processador pare o que est fazendo e execute uma rotina
previamente programada para cada tipo de interrupo. a rotina de tratamento de
interrupes que identifica a interrupo ocorrida e trata o fluxo convenientemente.
(e) Spooler um dispositivo de armazenamento temporrio, para onde os dados so
enviados enquanto espram sua necessidade em algum perifrico. Um exemplo so os
spoolers de impresso, para onde os dados a serem impresso so enviados rapidamente,
enquanto a impressora, que um perifrico lento, imprime os mesmos.
(f) Despachante o modulo que d controle da CPU ao processo selecionado pelo
escalonador. Ele envolve a troca de context, troca de usurio, seleo da parte apropriada
da memria do pragrama do usurio, etc.
(g) Escalonador a parte do Sistema Operacional que determina quais so os processos que
sero executados a cada instante.

4 Questo
Explique sucintamente a converso dinmica de endereos em um sistema que gerencia sua
memria por segmentao com paginao.
Na segmentao com paginao temos que:
a) cada programa segmentado, ou seja, dividido logicamente em parties ou segmentos:
tabela de segmentos;
b) cada segmento do programa ento paginado, ou seja, dividido em outros segmentos de
tamanho fixo, chamados pginas, que ocupam espaos no contguos na Memria Principal:
tabela de alocao de pginas;
Sendo assim, cada programa possui 1 tabela de segmentos; cada segmento: 1 tabela de
pginas; e cada programa: vrias tabelas de pginas.
O endereo na segmentao com paginao dividido em trs partes: segmento (SEG),
pgina (PAG) e deslocamento (OFFSET), e a converso dinmica de endereos envolve duas
operaes de pesquisa em tabela, de acordo com o esquema abaixo, onde:
a) A partir do campo SEG, localizar na tabela de segmentos em qual pgina aquele segmento foi
alocado: indicao da tabela de pgina;
b) na tabela de pgina indicada, localizar o campo PAG e seu respectivo ponto de carga
(endereo absoluto): endereo absoluto do ponto de carga;
c) A partir deste endereo absoluto do ponto de carga do programa, efetuar o deslocamento
OFFSET, obtendo ento o valor absoluto da instruo desejada: endereo absoluto da
instruo desejada.

Figura 1: converso de endereos segmentao com paginao.

5 Questo
Na arquitetura pipeline, qual a finalidade dos buffers entre os blocos de hardware dos diferentes
subciclos do ciclo de instruo? Caso estes sejam retirados, em que isto afetaria a funcionalidade
desta arquitetura?
Os buffers servem para que os sinais de controle e dados referentes execuo de uma
instruo sejam enviados para os estgios seguintes de sua execuo, de forma que estes no
sejam afetados pelos sinais de controle das novas instrues que entram no pipeline. Eles so
necessrios para a implementao de Forwarding e Stall e sem as suas existncias, o pipeline
seria invivel, porque no teria seus distrbios tratados, e esse encargo teria que ser resolvido via
software, alterando-se a sequncia de instrues e colocando-se nos em locais estratgicos.

6 Questo
O que memria virtual? Como pode a memria virtual melhorar o throughput?
Memria virtual uma tcnica que usa a memria principal (MP) como uma memria
cache para armazenamento secundrio, normalmente implementada com discos magnticos e
visando, principalmente, permitir o compartilhamento seguro e eficiente da memria entre
vrios programas.
Throughput a quantidade de dados transferidos de um lugar a outro, ou a quantidade
de dados processados em um determinado espao de tempo. Pode ser considerada como a taxa
de transferncia efetiva de um sistema, ou seja, sua eficincia.
Para entender melhor, considere um grupo de programas executados ao mesmo tempo
em um computador. A memria total exigida por todos os programas pode ser muito maior do
que a quantidade de memria disponvel no computador, mas apenas uma frao dessa memria
est sendo usada ativamente em um dado momento. A memria principal precisa conter apenas
as partes ativas dos muitos programas, exatamente como uma memria cache contm apenas a
parte ativa de um programa.
Portanto, o princpio da localidade possibilita a utilizao da memria virtual e das caches. A
memria virtual nos permite compartilhar eficientemente o processador e a MP, permitindo que
mais programas sejam executados ao mesmo tempo, aumentando a eficincia do sistema, ou o
seu throughput.
Para permitir que vrios programas compartilhem a mesma memria, se deve ter a capacidade
de proteger os programas uns dos outros, garantindo que um programa s possa ler e escrever
nas partes da memria principal atribudas a ele.
Em resumo, a memria virtual uma memria auxiliar, que funciona como uma extenso
da memria principal. Pode ficar armazenada em discos rgidos, em discos flash ou em outros
dispositivos de velocidade menor, mas em geral com capacidade maior do que o tamanho da
memria principal. Ela funciona como uma extenso da memria principal do computador, e
como permite que mais programas sejam executados ao mesmo tempo, aumenta a eficincia do
sistema (throughput).

7 Questo
O que uma interrupo? Explique a relao entre interrupo e o despachante.
Interrupo um evento de hardware, sendo por exemplo a mudana do estado de um
sinal eltrico, ou um evento de software, como por exemplo a ocorrncia de uma exceo, que
desvia o fluxo de execuo do processador para rotinas pr-determinadas. Pode ser usado, por
exemplo, pelo despachante que, ao receber uma interrupo do relgio do computador, execute a
troca de contexto. Lembrando que o despachante o mdulo que d o controle da CPU ao
processo selecionado pelo escalonador. Ele envolve a troca de contexto, troca de usurio, seleo
da parte apropriada da memria do programa do usurio, etc.

8 Questo
Geralmente, quanto maior a quantidade de programas na memria, maior ser a utilizao do
processador. Explique por qu.
O Sistema Operacional necessita de uma determinada quantidade de ciclos de
processamento para realizar as tarefas necessrias ao escalonamento dos diversos programas em
execuo. Somente um programa pode ocupar a CPU por vez. Todos os demais ficam em estados
latentes, ou na fila de pronto, onde aguardam sua vez na execuo, ou na fila de espera, onde
aguardam o trmino de alguma solicitao feita. Quando um programa tem seu tempo de
execuo esgotado, mas ainda no atingiu o trmino de sua execuo, vai para o final da fila de
pronto, enquanto outro programa ganha sua vez de execuo.
Para no haver perda dos dados processados, o estado dos registradores guardado na
memria, e resgatado imediatamente antes do retorno do programa execuo. A configurao
dos registradores da CPU chamada contexto do programa. Com poucos programas
concorrendo para a CPU, o somatrio do tempo gasto para gerenciar um ciclo completo de
escalonamento pequeno, quando comparado com o tempo de execuo de cada programa. Esse
tempo de utilizao de CPU, que aparentemente perdido pelo usurio, chamado de
overhead.
Quanto mais programas na memria, maior ser o overhead, ento mais tempo de CPU
ser gasto em trocas de contexto e escalonamento dos programas. Ou seja, quanto mais
programas em memria, maior ser a presena do escalonador na CPU, ocupando ciclos de
processamento que poderiam ser gastos com as aplicaes do usurio.

9 Questo
Explique a diferena entre um endereo absoluto e um endereo relativo. Por que ambos os tipos
so necessrios?
A memria um conjunto limitado de semicondutores. Cada clula de memria capaz
de reter informaes, que precisam ser guardadas e recuperadas. Essa recuperao feita atravs
do endereo da clula. O endereo absoluto de uma clula de memria o seu endereo real, o
endereo fsico, do barramento, utilizado pelo hardware. Cada localizao de memria no
computador tem um nico endereo absoluto, ento o endereo absoluto de uma clula de
memria ser sempre o mesmo. Embora imprescindvel para o hardware, o endereo absoluto
inconveniente para o software, principalmente pelos seguintes fatores:
a) a referncia a endereos absolutos pode restringir um programa a um ponto de carga fixo, o
que seria aceitvel em sistemas monousurios, mas em multiprogramao, a especificao de
endereos absolutos pode obrigar o programa a esperar que uma determinada regio da
memria se torne disponvel, o que pode nunca acontecer.
b) outro problema o tamanho da instruo. Uma instruo normalmente consiste no cdigo de
operao e dois operandos, podendo cada um deles ser um endereo na memria principal.
Assim, uma instruo que cite duas localizaes da memria principal teria que conter dois
operandos com, por exemplo, 32 bits cada, perfazendo uma instruo de pelo menos 64 bits.
Com instrues to grandes, seria necessrio muita memria para executar uma simples
funo, alm da transferncia de 64 bits (barramentos de 32 bits) requerer duas operaes de
busca. Mltiplas operaes de busca tomam tempo, o que significa poucas instrues por
segundo.
Ento, o endereo relativo uma soluo muito utilizada, onde os programas so escritos
como se comeassem no endereo 0 e todas as partes de um programa so endereadas
relativamente ao seu ponto de entrada. Quando o programa carregado na memria, o endereo
absoluto de seu ponto de entrada carregado em um registrador base. Quando o programa
executado, e as instrues so localizadas, os endereos nos operandos so expressos em termos
relativos. O endereo absoluto de qualquer localizao referenciada calculado pelo processador
por meio da soma de seu deslocamento com o endereo baixo, como mostrado a seguir:
Registrador-base
Endereo Relativo
BASE
BASE
OFFSET
10000
B
100
Endereo absoluto

10000 + 100

O emprego do endereamento base + deslocamento apresenta vantagens, por exemplo:


a) um programa pode ser relocado na memria a cada vez que carregado. Se o programa for
carregado no endereo absoluto 10000, por exemplo, seu 100 byte estar no endereo absoluto
10100. Se em sua execuo seguinte for carregado na posio 20000, seu 100 byte estar no
endereo absoluto 20100. Em qualquer caso, a referncia ao endereo base mais 100 resultar
no 100 byte do programa.
b) tamanho de instruo reduzido, por no utilizar o endereo absoluto do operando, reduzindo
o tamanho necessrio ao campo operando da instruo.
Como os softwares manipulam endereos relativos, o que permite que um programa seja
armazenado em qualquer posio da memria, j que suas posies relativas sero mantidas em
relao ao endereo base onde ele estiver carregado, e o hardware exige endereos absolutos (a
instruo a ser executada tem os endereos de seus operandos convertidos), a existncia dos dois
tipos de endereos importante para que vrios programas possam ser alocados na memria
simultaneamente de forma mais otimizada. O endereo passa a ser feito por partes fixas, mais as
partes relativas, referentes a distribuio de cada programa na memria.

10 Questo
Por que os sistemas de gerenciamento de memria orientados para pginas so mais fceis de
implementar do que os sistemas de gerenciamento de memria orientados para segmentos?
Tanto a paginao quanto a segmentao so sistemas de gerenciamento da memria que
dividem o programa em segmentos que so alocados posteriormente em parties no contguas
da memria. A principal diferena entre paginao e segmentao relativa ao tamanho deste
segmento.
Na paginao, o segmento tem um tamanho fixo, que o tamanho da pgina, geralmente
de tamanho bem pequeno (8K). A memria fsica (sistema) e a memria lgica (processo) so
divididos em blocos de tamanho fixo e idnticos: blocos fsicos so chamados de frames e
blocos lgicos so chamados de pginas.
Na segmentao, o programa dividido logicamente, ou seja, a alocao de maneira no
fixa, pois o tamanho depende da lgica do programa.
A necessidade de diviso da memria em funo da lgica do programa traz uma
complexidade extra para as implementaes orientadas segmentao. No possvel prever em
quantos segmentos a memria ser dividida. Esta imprevisibilidade torna o algoritmo de
controle excessivamente complexo.
Na paginao, uma vez definido o tamanho da pgina, simples definir a quantidade de
pginas existentes. Desta forma, em alguns casos, a segmentao, mesmo sendo mais eficiente,
preterida, em funo da complexidade envolvida, no desenvolvimento do Sistema Operacional.

11 Questo
Com relao ao Gerenciador de Memria e converso dinmica de endereos, explique
sucintamente:
(a) a diferena entre um endereo absoluto e um endereo relativo e por que ambos os tipos
so necessrios
Como j explicado na resposta da 9 questo, o endereo absoluto o endereo fsico de
hardware. So os endereos utilizados pelo hardware para o acesso memria. O endereo
relativo aquele que corresponde a um local na memria que deve ser traduzido para um
endereo fsico quando o acesso feito. Esta traduo feita pois o endereo relativo
composto por dois campos: BASE, indicando o endereo do registrador-base, que armazena o
endereo absoluto referente ao ponto de carga do programa, e OFFSET, indicando o
deslocamento da instruo referenciada, em relao ao ponto de carga. conveniente para o
software. Ambos os tipos de endereo so necessrios pois a memria pode ser acessada pelo
seu endereo absoluto (acesso ao nvel da mquina) e pelo seu endereo relativo (acesso ao
nvel do programador), sendo este ltimo, um nome ao qual o computador faz corresponder
um determinado endereo fsico. A Unidade Central sempre realiza a converso de
endereos, pois o hardware trabalha com endereos absolutos.
(b) a implementao da alocao dinmica de memria
A alocao dinmica de memria consiste em disponibilizar a diviso dos blocos de
memria de uma maneira dinmica da primeira vez que o acesso realizado. Sendo assim,
em cada novo primeiro acesso, os blocos contidos podem assumir determinados valores no
pr-alocados. Porm, aps este primeiro acesso ser realizado, os blocos permanecem com os
tamanhos alocados dinamicamente at uma reinicializao dos acessos. Podemos definir que
antes do primeiro acesso, o gerenciamento realizado dinmico, e aps isso, passa a ser um
gerenciamento equivalente ao de Parties Variveis.
(c) a implementao da segmentao e a sua converso de endereos
A segmentao divide o espao de endereamento em segmentos, que podem ter
tamanho arbitrrio. Cada segmento definido segundo a lgica e armazenados em espaos
no-contguos da Memria Princial. Quando a segmentao usada com memria virtual, o
tamanho do espao de endereamento de cada segmento pode ser muito grande, e portanto a
memria fsica dedicada a cada segmento no reservada at ser necessria. Na converso de
endereos da segmentao, o endereo relativo que deve ser convertido formado pelo
campo de ndice da Tabela de segmentos e pelo campo OFFSET (deslocamento da instruo).
A partir do ndice da tabela de segmentos, coletado o ponto de carga referente aquele
ndice. Este ponto de carga somado ao campo OFFSET, resultando no endereo absoluto.
(d) a implementao da paginao e a sua converso de endereos
Na paginao o espao de endereamento particionado em blocos de tamanhos iguais
(geralmente 8KB), chamados de pginas. A paginao faz com que a memria fsica
demonstre ser maior do que realmente mapeando o espao de endereamento de memria
fsica a um espao de endereamento de memria virtual, que normalmente armazenado
em disco. Na Converso de endereos da paginao, o endereo relativo que deve ser
convertido formado pelo campo de ndice da Tabela de pginas e pelo campo OFFSET
(deslocamento da instruo). A partir do ndice da tabela de pginas, coletado o ponto de
carga referente aquele ndice. Este ponto de carga somado ao campo OFFSET, resultando no
endereo absoluto.

10

(e) a implementao da segmentao com paginao e a sua converso de endereos


Na segmentao com paginao, cada segmento carregado em um conjunto de pginas
(espao virtual segmentado, e espao fsico divido em pginas). Cada entrada na tabela de
segmentos permite fazer acesso tabela de pginas para esse segmento. Para obter o
endereo real, coletado no segmento referenciado na palavra, o endereo na tabela de
pginas daquele segmento; o ponto de carga da pgina referenciada buscado na tabela de
pginas do segmento; ento, para obter o endereo real, adicionado a este valor o
deslocamento da instruo (OFFSET), juntamente com o ponto de carga da pgina.

12 Questo
Uma falha de cache caracterizada por uma requisio de dados da cache que no pode ser
atendida porque os dados no esto presents na cache. Explique detalhadamente o controle do
processador no tratamento de uma falha de cache.
Questo j explicada na resposta da 2 Questo.

11

13 Questo
Por que um compilador poderia realizar a seguinte otimizao?
/* Antes */
for (j=0; j<20; j++) {
for (i=0; i<20; i++) {
x[i][j]=x[i][j]+1;}}
/* Depois */
for (i=0; i<20; i++) {
for (j=0; j<20; j++) {
x[i][j]=x[i][j]+1;}}
No cdigo denominado Antes, para j = 0, temos i variando de 0 a 20, onde
solicitado, a cada iterao, o elemento de linha i e coluna j: x[i][j].
Na 1 Iterao, j=0 e i=0, sendo x[0][0], aps erro compulsrio, pois o elemento ser
carregado pela primeira vez na cache. Pelo princpio da localidade, so carregados para a
memria cache o bloco contendo o elemento x[0][0] e os elementos prximos a ele, a primeira
linha: 0000000000.
Na 2 Iterao, j=0 e i=1, sendo x[1][0]. Analogamente carregada a segunda linha:
0000000000.
Na 3 Iterao, j=0 e i=2, sendo x[2][0]. Analogamente carregada a terceira linha:
0000000000. O procedimento se repete at serem carregados os primeiros elementos de cada
linha e seus adjacentes.
Devido impossibilidade da memria cache conter blocos suficientes para armazenar
toda a matriz (erro de capacidade), a probabilidade de ocorrer falha de cache em cada acesso
grande, pois a leitura dos dados no se d de cima para baixo e sim, da direita para a esquerda.
Primeira linha: 0000000000
Segunda linha: 0000000000
Terceira linha: 0000000000
...
No cdigo denominado Depois, para i = 0, temos j variando de 0 a 20, onde
solicitado, a cada iterao, o elemento de linha i e coluna j: x[i][j].
Na 1 Iterao, i=0 e j=0, sendo x[0][0], aps erro compulsrio, pois os elementos sero
carregados pela primeira vez na memria cache, e pelo princpio da localidade, so carregados
para a cache o bloco contendo o elemento x[0][0] e os elementos prximos a ele, a primeira
linha: 0000000000.
Na 2 Iterao, i=0 e j=1, sendo x[0][1], onde verifica-se que o segundo elemento j se
encontra na memria cache, pois foi carregado na 1 iterao. Ento, continua na primeira linha:
0000000000.
Na 3 Iterao, i=0 e j=2, sendo x[0][2]. Analogamente, continua na primeira linha:
0000000000.
Ento, com esta pequena inverso na ordem dos ndices dos loops, a probabilidade de
acertos em cada acesso aumentou.
Primeira linha: 0000000000
...

12