ListExerc_AV2_2014-2s_parte02 - SOLUCOES
9 pág.

ListExerc_AV2_2014-2s_parte02 - SOLUCOES


DisciplinaArquitetura e Organização de Computadores1.260 materiais7.481 seguidores
Pré-visualização3 páginas
Arquitetura e Organização de Computadores \u2013 Univ. Estácio de Sá \u2013 Prof. Affonso C. Jr
Lista de revisão para a AV2 \u2013 parte 2 \u2013 novembro 2014 \u2013 versão COM soluções
1) Considerando o que você aprendeu durante o curso, tente responder, resumidamente: como podemos dividir/classificar os tipos de informação que são armazenados e manipulados pelos computadores digitais?
Resp: toda informação manipulada e armazenada por computadores digitais encontra-se no formato binário (sequencias de bits). Mas ela pode ter diferentes significados, dependendo do local, do momento e do contexto. Basicamente, pode ser: instruções, dados e endereços (alguns consideram endereço como um tipo de dado, também). Instruções dependem muito do tipo de processador.
Dados podem ser, resumidamente: numéricos e não-numéricos. Dados numéricos podem ser divididos basicamente em: números inteiros e números não-inteiros (em geral, representados no formato \u201cponto-flutuante\u201d). Dados não-numéricos podem ser: alfa-numéricos (caracteres e strings) e lógicos (V ou F). E, eventualmente, endereços de outros dados (usados em algumas situações, na programação).
De modo esquemático, temos:
Informações digitais binárias:
	- Instruções
	- Dados (incluindo endereços)
		- Dados Numéricos
			Inteiros
			Decimais/reais (\u201cponto-flutuante\u201d)
		- Dados não-numéricos
			Caracteres e cadeias de caracteres (\u201cstrings\u201d)
			Lógico (ou \u201cbooleano\u201d)
Endereços de Memória
Obs: Outra classificação possível seria:
Informações digitais binárias (manipuladas pela CPU):
	- Endereços de memória
	- Palavras (conteúdo) de memória
- Instruções
- Dados
			- Numéricos
				- Inteiros
				- Decimais/reais (\u201cponto-flutuante\u201d)
			- Não-numéricos
				Caracteres e cadeias de caracteres (\u201cstrings\u201d)
				Lógico (ou \u201cbooleano\u201d)
				Endereços de outros dados (** são os \u201cponteiros\u201d, em programação)
2) Qual é a função básica do carregador (ou loader), parte do Sistema Operacional, e que tarefas são envolvidas na execução desta função?
Resp: A função do loader é carregar os programas na memória principal e iniciar sua execução. Este trabalho envolve ao menos 3 tarefas:
a \u2013 copiar o conteúdo do programa de um local fonte para a memória (os bytes que compõem instruções e dados);
b \u2013 alocar (reservar) espaço em memória para os dados (a maioria das variáveis ainda não possui um valor neste momento);
c \u2013 recalcular os endereços (referências) de memória (de variáveis e instruções de desvio, etc), que em geral são endereços relativos;
d \u2013 por fim, colocar o endereço da 1.a instrução do programa no PC (Programa Counter, ou CI).
3) Considere a fórmula básica para estimativa do tempo de CPU de um programa (vista em nossos slides sobre CPU), abaixo.
Responda:
Um programa com processamento altamente determinístico está prestes a ser executado. O compilador varreu o programa e detectou: 200 instruções simples (de um ciclo \u2013 consomem apenas um ciclo em sua execução); 200 instruções médias (dois ciclos); 100 instruções longas (quatro ciclos). Sabendo-se que este programa será executado em uma máquina com clock de 100 MHz, quanto tempo deverá levar a execução deste programa?
Calcule o termpo de um ciclo de clock para esta máquina (T = 1/freqüência), como em exercício na lista para a AV1. Some as instruções multiplicadas pelos ciclos de clock de cada tipo (ex: 200 x 1 + 200 x 2 + ...) para obter o total de ciclos de clock, e por fim, multiplique o n.o de ciclos pelo tempo de um ciclo.
4) Barramentos paralelos (que transmitem simultaneamente com 8, 16, 32, 64 bits...) são obrigatoriamente mais rápidos do que barramentos seriais? Ilustre sua resposta com um exemplo.
Não. A princípio, pode parecer que um barramento com 8 a 128 fios ou trilhas paralelas sempre será mais rápido do que um serial. Se compararmos ambos como mesmo clock, sim. Entretanto, problemas e limitações de engenharia na transmissão paralela (como, por exemplo, o atraso ou delay, na velocidade de diferentes fios paralelos, que por geralmente serem obrigados a fazer \u2018curvas\u2019 nas placas, acabam por ter comprimentos diferentes) impedem que sejam adotados \u2018clocks\u2019 (freqüências) muito altos. Já as conexões seriais têm conseguido adotar clocks cada vez mais altos, já superando, em vários casos, as taxas de transferência dos barramentos paralelos. O grande exemplo atualmente é o da moderna conexão PCIe (PCI Express \u2013 nome comercial adotado para uma conexão serial ponto a ponto, que pouco tem a ver com o barramento PCI, e nem é considerado exatamente um barramento), que veio para substituir barramentos e slots PCI e AGP, já evoluiu e está na versão 3.0 e chega a funcionar em até 8GHz.
(Conexões PCIe 3.0, em 16X e a 8GHz transmitem até 16.000 MB/s !!!).
** Para saber mais, leia: http://www.clubedohardware.com.br/artigos/Tudo-o-que-Voce-Precisa-Saber-sobre-a-Conexao-PCI-Express/1060 
5) Um arquivo com exatamente 2 GB dever ser transmitido da CPU para um módulo de E/S, através de um barramento paralelo, síncrono, com largura 32, clock de 200MHz, e que realiza apenas uma transferência por ciclo de clock. Ignorando-se possíveis atrasos, quanto tempo levará a transferência deste arquivo?
6) Assinale cada uma das características de arquitetura (CPU / conjunto de instruções) abaixo com um \u2018C\u2019 (caso seja mais comum em projetos de máquinas CISC), ou com um \u2018R\u2019 (caso seja mais comum em projetos de máquinas RISC).
[C] Conjunto grande de instruções
[C] Instruções executadas por microcódigo
[R] Instruções com formato fixo
[C] Diversos formatos de instrução
[R] Apenas um, ou poucos ciclos de máquina p/ instrução
[R] Uso intensivo de pipeline
[R] Instruções executadas diretamente pelo HW (hardwired)
[C] Instruções pederosas, de \u2018alto nível\u2019 (mais próximas aos comandos de linguagens alto nível)
[C] Uso pouco efetivo de pipeline
[C] Vários ciclos de máquina p/ instrução
[R] Conjunto reduzido de intruções básicas
[R] Poucos modos de endereçamento
[R] Muitos registradores
[C] Diversos modos de endereçamento
7) Assinale cada uma das \u2018famílias\u2019, ou linhas de processadores abaixo com um \u2018C\u2019 (caso sejam mais influenciadas pela filosofia CISC), ou com um \u2018R\u2019(caso sejam mais influenciadas pela filosofia RISC).
[C] família \u2018x86\u2019 / Pentium (Intel e concorrentes)
[C] DEC VAX
[R] MIPS
[C] Motorola 68xxx
[R] PA-RISC
[R] Arquitetura Power (incluindo PowerPC)
[R] SPARC (SUN)
[R] IBM RS-6000
[R] DEC Alpha (DEC)
[R] ARM
8) Diga quais são os modos de endereçamento usados em cada uma das instruções abaixo:
Sintaxe (formato)	Efeitos (em termos de micro-arquitetura) Resposta
a) LDAI oper 		; acc ( oper					modo imediato	
b) LDAM oper		; acc ( (oper)				modo (direto em) memória
c) ADD op1, op2	; regs[op1] ( regs[op1] + regs[op2]	(direto em) registrador, em ambos
d) SUB oper		; acc ( acc + mp[ oper ]			(direto em) memória
e) LDIM oper		; acc ( ( (oper) )				indireto em memória
f) ADD r, op2		; regs[r] ( regs[r] + (op2)		(direto) em registrador e em memória
g) LDAX rx, ender	; acc ( mp[ ender + regs[ rx ] ]		indexado (ou base + índice)
h) JMP oper		; (\u201cjump\u201d) pc ( oper			direto em memória, ou imediato
i) BRZ	oper		; (\u201cbranch if zero\u201d) if acc = 0, pc ( oper	direto em memória, ou imediato
j) CPYR op1, op2 	; regs[ op1 ] ( mp[ op2 ]		(direto) em registrador e em memória
k) ADD			; acc ( mp[tos]; acc ( acc + mp[tos+1]; 
tos ( tos-2; mp[tos] ( acc; 
tos ( tos \u2013 1	 
(** onde tos é o \u201ctop of stack\u201d)		endereçamento \u201cem pilha\u201d
\ufffd
9) O que é a pilha de memória (por vezes chamada pilha de hardware) utilizada na execução de programas? Quais sãos as principais operações que podem ser efetuadas sobre a pilha, em qualquer arquitetura?
Resp: a pilha é uma área de memória onde os dados são inseridos e retirados segundo o critério de entrada e saída LIFO (last in, first out \u2013 o úlimo a entrar será o primeiro a sair). Geralmente a base da pilha está em um endereço