Arquitectura de Computadores
Lic. Matemática & Ciências da Computação, 1º ano
2005/2006
Docente responsável: A.J.Proença

 

FAQ's

Funcionamento da disciplina | Avaliação e Projecto | Questões relativas a aulas | Questões de índole laboratorial 

Ultima Modificação: 03 Abr 2006

 

 departamento de informática

 

Funcionamento da disciplina

(16-Mar-06)
"Quando uma pessoa tem um azar e não pode vir a uma aula (indisposição ou outro motivo pessoal), como pode justificar a falta?"

Basta enviar um email ao docente com a identificação e justificação, no prazo de uma semana após ter faltado, indicando no assunto - MCC/AC justificação de falta - e aguardando uma confirmação do docente (máx. 2 ou 3 dias) de que o pedido foi recebido e aceite.
No caso de uma sessão TP, mais importante que justificar uma falta, é tentar arranjar disponibilidade para vir assistir (e participar) na mesma sessão, mas de uma outra qualquer turma; e neste caso não tem falta...
 

(16-Mar-06)
"Posso usar sempre este e-mail (não institucional) para comunicar com o professor sempre que tenha alguma dúvida ou tenho que usar obrigatoriamente o e-mail fornecido pela universidade?"

Sempre que eu precisar de contactar um/a estudante (individualmente ou pela lista dos inscritos à disciplina) irei usar o endereço institucional; contudo, não levanto qq objecção em ler msg's que venham de outros locais (mas recomendo SEMPRE a indicação de MCC/AC no assunto), e poderei mesmo fazer um reply para esse endereço não-institucional, se for cómodo e não me for explicitamente pedido para não o fazer.
 

Topo...


Avaliação e Projecto

(03-Abr-06)
"De acordo com o modelo de avaliação aprovado, se já estou eliminado dos testes, então não vale a pena fazer e entregar os TPC's..."

De acordo com o modelo aprovado, tem razão: a entrega não vai ajudar na classificação final. Mas o fazer os TPC's ajuda sempre!
Contudo, como incentivo a um trabalho continuado ao longo do semestre, vou considerar na avaliação final a componente de participação ao longo do semestre de TODOS os estudantes, mesmo aqueles que optem por serem avaliados apenas no período de exames.
Recordo, que esta componente apenas é usada se ela efectivamente contribuir para melhorar a classificação; caso contrário, a média final apenas entra em consideração com as componentes teórica (teste ou exame, peso 2/3) e prática (projecto integrado, peso 1/3).
 

(03-Abr-06)
"...é permitido resolver os testes quinzenais sem que estes sejam corrigidos, apenas como uma preparação extra para o exame final"

Recomendo que todos façam isso, essencialmente como forma de se autoavaliarem em condições de stress. Como normalmente se faz a correcção logo a seguir do teste (com a participação de todos), é mais uma forma de todos os interessados se aperceberam o porquê do seu desempenho, quer seja ele positivo ou negativo; e ajuda também a ter uma noção mais clara dos conceitos considerados essenciais para aprovação na disciplina, e de quais os aspectos que o docente mais valoriza numa correcção (por ex., saber que é mais importante um raciocínio coerente, que um resultado aritmeticamente correcto).
 

(16-Mar-06)
"Quanto à disciplina de AC, quando é que os alunos vão poder decidir qual o método de avaliação que mais lhes convém (modelo de avaliação durante o semestre versus modelo misto)?"

De acordo com o RIAPA e com o que ficou definido como avaliação em AC este ano, há que ter em consideração o seguinte:
 - existem 2 "elementos de avaliação" (artº 5º, RIAPA) em AC: "testes" e "trabalhos experimentais";
 - o "elemento" "trabalhos experimentais" é do "tipo" "avaliação periódica" (artº 4º);
 - o "elemento" "testes" pode ser do "tipo" "avaliação periódica" ou "avaliação final" (artº 4º);
 - cada estudante pode optar entre "teste periódico" ou "exame final", tendo sempre o direito a um exame de recurso;
 - a indicação de qual o tipo de teste (periódico ou final) que um estudante pretende optar, deveria ocorrer, em princípio, antes da entrega do 1º teste periódico.
Contudo, uma vez que vários estudantes não estavam conscientes deste modo de tomada de decisão (e respectiva consequência), este ano irei considerar que um estudante optará por ser avaliado por testes periódicos se entregar o 2º teste.
 

(16-Mar-06)
"Torna-se um pouco complicado distinguir o que é exclusivo da avaliação de AC (Fase 1 do Projecto), nomeadamente temos as seguintes dúvidas:
a) Pretende que se analise o modelo do relatório proposto, ou seja, que analisemos o modelo Tex que está na Caracterização do Projecto?
b) E, pretende-se que os parágrafos a escrever sobre os temas escolhidos, sejam apresentados em LaTex? Caso afirmativo como deve estar estruturado o relatório que inclui esses parágrafos?
c) Qual é o problema que é referido no ponto 2?
d) Qual é o ambiente de trabalho que temos que especificar?
e)O trabalho de AC, para além dos parágrafos sobre os temas, o que deve conter exactamente?"

Pretende-se com esta fase do projecto testar as competências dos estudantes na elaboração de um relatório coerente em LaTeX, satisfazendo um conjunto mínimo de regras, e executando adicionalmente algumas tarefas relativas a AC e a PI.
Para quem não está inscrito em PI, os objectivos da fase 1 do projecto mantêm-se, embora o conteúdo do relatório possa ser ligeiramente diferente. Eis os pontos que defendo que deverão estar presentes no relatório para quem estiver nesta situação:
 - o relatório deverá conter as seguintes secções: Resumo, Introdução, Ambiente de Trabalho, Resolução de um Problema em Programação, Conclusões, e, eventualmente, Referências e Anexo(s);
 - as secções específicas de PI (aqui reduzidas a "Resolução de um Problema...") poderão ser substituídas por um texto curto em que descreva, de modo sucinto, a análise, especificação, concepção, codificação e teste de um programa em C que tenha feito algures no passado (até pode incluir a listagem do código em anexo); a avaliação que irei fazer irá assentar essencialmente na qualidade da comunicação da mensagem;
 - a parte "técnica" específica de AC será a descrição do ambiente de trabalho que utiliza actualmente no desenvolvimento e teste de programas em C; na descrição da configuração do hardware utilizado, acrescentar os parágrafos que detalham um tema específico de AC (os que foram expressamente pedidos no enunciado da fase 1), os quais deverão ser inseridos de forma elegante e coerente com o resto texto;
 - repito novamente, que a descrição do "ambiente de trabalho" deve ser feito de tal modo que permita a alguém reproduzir integralmente o ambiente que utilizaram e obter exactamente os mesmos resultados na execução do mesmo código; de notar que eu indiquei que esta capacidade de reproduzir o ambiente também se deverá manter se o teste da aplicação contiver medidas de desempenho e/ou análise do código binário gerado.
 

Topo...


Questões relativas a aulas (conceitos, aplicação de conceitos, ...)

(15-Mar-05)
"Os processadores da AMD utilizam a mesma arquitectura dos da Intel, ou seja, a IA32? E porque é que dizem que os da AMD são melhores
do que os da Intel? É por causa da cache?"

Quando se afirma que um dado processador segue a Arquitectura da Intel de 32-bits (cuja sigla em inglês é IA-32), o que se está a afirmar é que esse processador está conforme a especificação da Arquitectura do Conjunto de Instruções (cuja sigla em inglês é ISA, Instruction Set Architecture) de uma dada família de processadores de 32 bits, que um fabricante (Intel) tornou pública e que assumiu, de certa maneira, a forma de padrão ou norma (em inglês, standard).
Deste modo, qualquer fabricante poderá construir um processador IA32 sem ter de pagar royalties a ninguém, desde que o seu processador execute o mesmo conjunto de instruções produzindo o mesmo resultado. Poderá construir um processador mais rápido, mais pequeno, mais barato ou mesmo que consuma menos energia; depende agora do nicho de mercado que pretenda atacar, sob o ponto de vista comercial.
Voltando agora ao caso dos processadores do concorrente da Intel, a AMD: há vários pormenores da arquitectura interna de um processador que podem variar, quando o objectivo é melhorar o desempenho, sendo os principais os relacionados com a eficácia das formas de paralelismo ao nível da instrução (cuja sigla em inglês é ILP, Instruction Level Parallelism) - com destaque para pormenores de implementação do pipeline, da superescalaridade, e da computação vectorial, muito usada em aplicações multimédia - e com a redução dos tempos de acesso à memória - com destaque para a organização e tamanho de cada um dos níveis de cache (estas questões de ILP e organização/hierarquia de memória serão cobertos mais adiante).
Com tantas variáveis, não é possível afirmar qual dos processadores é melhor, pois muito depende da aplicação (algoritmo, codificação, escolha do compilador e dos parâmetros de compilação), da organização da memória primária, da eficiência dos circuitos de interface entre o processador e os restantes circuitos/módulos do computador (a este conjunto de circuitos chama-se normal e simplesmente, "conjunto de circuitos", ou en inglês, chipset), da organização e velocidade de transporte de informação dos barramentos de ligação, etc., etc.
Existem vários sites na Web onde são feitos vários testes a configurações de computadores baseados em diferentes processadores (exemplos de sites: ExtremeTech.com, Tom's Hardware Guide, ZDNet UK Reviews, Ars Technica, Ace's Hardware, SysOpt.com, Computer Reviews, ... ou então uma lista de sites em Technical Evaluations and Product Reviews), e neles é visível como as variações de desempenho variam tanto de aplicação para aplicação...
 

(26-Fev-05)
"Numa das primeiras aulas que o professor leccionou, falou de como o computador faz a conversão para o sistema de numeração binário. Deu exemplos como transformar texto (caracteres alfanuméricos) e números (inteiros e reais). Gostaria de saber, a título de curiosidade, como é k um computador interpreta os sons e os transmite ao utilizador?"

Vamos por partes:
a) Como é que o som pode ser representado de uma forma digital (ou numérica)? Sugiro que visite este sítio na Web.
b) Como é que o som pode ser representado digitalmente de uma maneira eficiente, ocupando pouco espaço mas perdendo pouca qualidade com a compressão? Sugiro que visite este sítio na Web.
c) Como é que um computador produz os sons que depois seguem para os auscultadores ou colunas? Sugiro que visite este sítio na Web.
d) E como é que as colunas transformam esses sinais em sons? Os links anteriores têm sugestões para encontrar uma resposta...
 

(26-Fev-05)
"Como é que um computador transmite informação para um outro computador no outro lado do mundo?"

Estão aqui muitos conceitos de base envolvidos, e quase todos eles mais relacionados com as comunicações do que com a arquitectura de um computador. Contudo, julgo ser possível apresentar algumas sugestões de leituras (na Web) que permitem a obtenção de alguns conhecimentos rudimentares (mas rigorosos) sobre o modo como algumas das comunicações funcionam.
Vejamos como:
 - comunicações entre 2 (ou mais) computadores na mesma casa: este sítio expõe os conceitos principais sobre redes domésticas de computação, com links para locais com informação complementar; obviamente que uma das actuais opções mais atractivas é a opção sem-fios (com informação aqui);
 - comunicações com o resto do mundo, usando um fornecedor de serviços de Internet (ISP, Internet Service Provider): opção mais em conta poderá ser aproveitar a linha telefónica existente em casa, e usar um modem (mais informações aqui) para estabelecer uma comunicação assíncrona em série (mais informações aqui); se quiser aproveitar a linha telefónica e usá-la simultaneamente para voz e dados com maior largura de banda, então poderá optar por um serviço de ADSL (mais informação aqui); alternativamente, se tiver um serviço de TV por cabo, poderá tb usufruir dessa infra-estrutura de comunicações usando um cable modem (mais informação aqui).
 

(26-Fev-05)
"Como é que funcionam os métodos de compactar ficheiros?"

Esta é realmente uma pergunta que não tem uma resposta imediata, uma vez que os diversos algoritmos existentes estão muito ligados, não apenas ao tipo de ficheiros que se pretende compactar, e tb ao destino dos mesmos. Se o destino é uma outra máquina, então o algoritmo mais adequado é um, mas se forem para serem recebidos por pessoas, então os algoritmos tomam em consideração as diferentes capacidades de iludir os nossos sentidos (a técnica para iludir a nossa audição é diferente da da nossa visão...).
Assim, sugiro:
 - uma introdução às técnicas de compressão de ficheiros aqui;
 - uma visita a estes sítios que analisam de técnicas de compressão de imagem e de som.
 

(26-Out-04)
"O IP e o SP não são a mesma coisa? As instruções não estão na stack? E a stack onde está, no processador?"

Estas questões mostram alguma confusão na mente de quem as colocou, e requerem uma urgente explicação, uma vez que é indispensável a correcta compreensão do que é uma stack e como funciona, para perceber como é que as funções e procedimentos num paradigma imperativo são implementados ao nível da linguagem máquina, e para mais tarde compreender o funcionamento do sistema operativo.
Em primeiro lugar, o IP é um registo do processador que contém um valor numérico (binário) que não é mais que o valor do endereço de memória onde se encontra a próxima instrução que o processador vai executar; por isso se chama a este registo o "apontador de instrução" (do inglês instruction pointer). E a zona de memória onde normalmente as instruções são guardadas não tem nada a ver com a stack.

Por outro lado, a stack  é uma estrutura de dados (em português designa-se por "pilha", no sentido em que objectos podem ser empilhados no topo de uma pilha, ou retirados do topo de uma pilha), normalmente localizada na memória (actualmente quase todas as arquitecturas de processadores a localizam na memória primária). Mas é uma estrutura de dados que é tão usada, e que é tão importante que exista suporte ao nível do hardware na arquitectura do processador, que alguns processadores possuem instruções específicas no seu instruction set para manipularem directamente esta estrutura (nomeadamente para a inserção e remoção de elementos da estrutura).
Como sabem, e se pensarem em termos de listas (PP1...), é possível acrescentar novos elementos a uma lista numa extremidade, e retirá-los da mesma extremidade, ou da outra extremidade. Se se retirar da mesma extremidade estamos perante uma pilha (ou stack); se se retirar da outra extremidade estamos perante uma fila de espera (ou queue).
Que tipo de suporte precisamos do hardware para melhorar a eficiência na utilização destas estruturas? Que o hardware se encarregue de fazer automaticamente a gestão dos apontadores para o topo da pilha ou dos apontadores para o princípio e o fim da fila de espera.
A arquitectura do IA-32 apenas suporta no seu ISA a manipulação de pilhas, através das instruções de inserção (
push) ou remoção (pop) de elementos de uma pilha, mantendo sempre actualizado o apontador para o valor que se encontra no topo da pilha (que em inglês se diz stack pointer, o SP).
Assim, uma operação de
pop corresponde a ler o valor que se encontra na memória no endereço especificado pelo SP, actualizando de seguida esse apontador (i.e., incrementando o SP de tantas unidades quantas o nº de células que ocupava o valor que se leu), enquanto um push
corresponde a começar por incrementar o SP para a próxima posição livre acima do topo da pilha (de tantas unidades quantas as células que necessita o valor a ser lá colocado) e depois a escrever nesse endereço de memória o valor que se pretendia colocar no topo da stack.

Durante o estudo do ISA do IA-32 estas noções ficarão muito mais claras, uma vez que os diversos exemplos irão ilustrar a utilização da stack.
 

(25-Out-04)
"Estou confuso: afinal qual é a diferença entre um registo e uma célula de memória?"

Conceptualmente, ambos são são circuitos electrónicos que são usados para armazenar electronicamente um dado valor, permitindo as operações de leitura e escrita (com excepções).
Há várias diferenças; vou tentar apresentar uma lista de algumas, apenas em termos de funcionalidade e ordenadas pela sua importância:
 - os registos estão no CPU e têm uma ligação muito forte com as unidades funcionais que dentro do CPU efectuam operações (aritméticas, lógicas, de vírgula flutuante, ...); as células são os elementos da memória que apenas armazenam valores;
 - a dimensão dos registos está normalmente associada à arquitectura do processador (e às características das unidades que efectuam operações), e à sua vocação: se o processador é para cálculo científico de elevado rigor que exija tratamento de inteiros com 64 bits, então estes registos armazenam valores de 64 bits; se é para computação mais comum, então o normal hoje em dia é usar processadores de 32 bits, em que os registos para inteiros são de 32 bits; se é necessário trabalhar com reais, o habitual hoje em dia é os processadores suportarem pelo menos a representação de precisão dupla da norma IEEE 754, logo registos de FP de 64 bits; se o processador é usado em sistemas embebidos com alguma complexidade, os registos de inteiros poderão ter 16 bits, e os de FP poderão ser de 32 ou 64 bits; nalguns casos de microcontroladores muito simples, os registos de inteiros poderão até ser só de 8 bits;
 - as células de memória são a porção mais pequena de memória para a qual é possível especificar uma localização numérica (um endereço); em tempos a dimensão das células variava com o fabricante/tipo de computador; actualmente todos os sistemas de computação usam memórias em que a célula tem um tamanho fixo de 8 bits (a dimensão óptima para armazenar um caracter ASCII com algumas especificidades de linguagem, como os acentos da língua portuguesa);
 - para especificar um registo ou uma célula de memória, é preciso indicar a sua localização/endereço; a partir da altura em que se distingue uma registo de uma célula, e havendo poucos registos disponíveis ao programador no processador, o nº de bits necessário para especificar um registo é bem menor que o nº de bits necessário para especificar uma célula de memória, o que faz com que o formato de uma instrução seja bem mais curto cada vez que se especifica um registo em vez de uma célula; por ex., se só houver 8 registos (ou 32) no processador, só serão precisos 3 bits (ou 5) para especificar um qq desses registos, enquanto que para escolher uma célula de memória entre 4G possíveis células, serão precisos 32 bits para especificar a sua localização;
 - as operações que normalmente se efectuam sobre uma célula são apenas de leitura ou escrita, e referem-se sempre à totalidade do conteúdo da célula; quanto aos registos, é possível manipular apenas parte do conteúdo da célula (ver-se-á quando se analisar um instruction set).

As outras diferenças têm a ver com aspectos electrónicos de implementação, que não vou referir agora.
 

(14-Out-04)
"Num dos TPC's o professor pede "Converta para binário 0xFF1F"; o "x" representa o sinal da multiplicação (sendo 0xFF1F um nº em hexadecimal), é a letra "x" minúscula (sendo 0xFF1F uma palavra em ASCII ou Unicode) ou tem outro significado não descrito anteriormente?"

Essa nomenclatura é a usada no C: o prefixo "0x" indica que a sequência de caracteres que se segue representa o conjunto de "algarismos" de um nº no sistema de numeração hexadecimal. Isto evita a utilização de um índice no fim do nº (neste caso o índice 16), uma vez que um ficheiro com um programa em C é um ficheiro de puro texto, no qual não é possível especificar atributos de texto (neste caso, uma string em índice).
 

 

Topo...


Questões de índole laboratorial (IA-32, Linux, ferrramentas Gnu, ...)

 

Topo...

 


Página mantida por aproenca@di.uminho.pt
Ultima Modificação: 03 Abr 2006