Escolar Documentos
Profissional Documentos
Cultura Documentos
ARQUITETURA DE COMPUTADORES Unidade04
ARQUITETURA DE COMPUTADORES Unidade04
Durante o estudo deste módulo falaremos sobre a importância das chamadas máquinas sequenciais de
von Neumann para computação. Falaremos também sobre as máquinas não von Neumann e
finalizaremos decorrendo sobre as características das arquiteturas RISC e CISC, bem como de projetos
recentes utilizando o melhor de cada uma dessas arquiteturas.
No início de nosso estudo sobre arquitetura e organização de computadores, começamos a ver o que é
um sistema computacional, a importância dos seus componentes, que são memórias, processadores,
dispositivos de E/S (entrada e saída) e meios de interconexão. No decorrer do nosso curso também
tivemos oportunidade de estudar que componentes do processador, como controladores, registradores
e coprocessadores, possuem um conjunto de instruções que operam sobre instruções e dados obtidos e
armazenados externamente e organizados em palavras. Vimos que Memórias são formadas
basicamente pela MP (memória principal) e MS (memória secundária), que o valor (custo) associado à
memória está diretamente relacionado à sua velocidade de operação e capacidade de armazenamento.
Os dispositivos de E/S (entrada e saída) são os que representam fisicamente os dados e são geralmente
mais lentos em comparação ao processador. Os meios de interconexão são os responsáveis pela
comunicação entre os componentes por meio dos barramentos que estão sob seu controle. Um dos
problemas que ocorrem é a disputa pelo uso simultâneo dos recursos compartilhados.
02
O resumo que acabamos que ver tem como intuito relembrar conceitos que já estudamos. Para você ter
um rendimento melhor nos estudos é necessário compreender que estes conceitos constituem a base
teórica para entendermos que, tendo por referência o relacionamento e a organização dos
componentes de um sistema computacional, poderemos classificar as máquinas que têm por base von
Neumann e as máquinas chamadas de não von Neumann.
1
102 – Arquitetura de Computadores | Unidade 04
03
Uma característica básica da máquina von Neumann é sua composição. Esta é feita a partir de três
subsistemas básicos, que são: CPU ou UCP, memória principal e sistema de E/S. Observe a figura abaixo:
Vale a pena relembrar que a UCP (Unidade Central de Processamento) é formada pelos seguintes
componentes: unidade de controle (UC), unidade Lógico Aritmética (ALU) e registradores.
04
Podemos destacar que dentre as características principais das máquinas de von Neumann estão:
Há uma sequência de ciclos do modelo da máquina de von Neumann que são a execução de um
programa que faz uma busca da instrução (fetch), que nada mais é que uma transferência da instrução
da posição de memória para a UCP, e a execução da instrução propriamente dita, que consiste na
decodificação da instrução feita pela UC (Unidade de Controle) e a gerência dos passos para sua
execução pela Unidade Lógica Aritmética (ULA).
Outro modelo básico de máquinas von Neumann são as máquinas conhecidas como “máquinas de
Harvard”. A diferença dos modelos pode ser observada pela existência de vias separadas para dados e
2
102 – Arquitetura de Computadores | Unidade 04
instruções entre a MP e UCP, conforme pode ser visualizado na figura abaixo. A origem do termo
“Máquinas de Harvard” surgiu durante a criação dos computadores Mark I a Mark IV, desenvolvidos em
Harvard, que tinham como característica possuir instruções e memórias de dados separadas.
Mark I
Chamado de Mark I (ASCC - Automatic Sequence Controlled Calculator) pela Universidade de Harvard,
este foi o primeiro computador eletromecânico automático de larga escala desenvolvido nos EUA.
Construído em 1944 num projeto da Universidade de Harvard em conjunto com a IBM.
(Fonte: http://pt.wikipedia.org/wiki/Harvard_Mark_I).
Saiba+
O Harvard Mark I, também conhecido como “Harvard-IBM Automatic Sequence Controlled Calculator”,
foi concluído em 1944 pelo renomado engenheiro de computação Howard H. Aiken, tendo tido a
contribuição e ajuda de uma equipe de engenheiros da IBM, que eram chefiados por Clair D. Lake. O
Mark I teve apoio e financiamento da IBM (International Business Machines), bem como, da marinha
americana. O projeto começou no ano de 1937 e o objetivo era construir um computador que ajudasse
na construção de novas armas, no cálculo de trajetórias de artilharia e também decodificar os códigos
secretos do inimigo. O Mark I era muito pesado, chegava a ter aproximadamente 5 toneladas e era
composto por setenta e oito máquinas calculadoras, que eram controladas por dispositivos mecânicos
e elétricos. O computador era operado por meio de uma fita de papel, na qual se armazenavam, por
meio de perfurações, as instruções codificadas. Uma vez inserido o programa, o computador iniciava os
cálculos. O Mark I teve sua utilidade voltada para fins militares e também foi utilizado no
desenvolvimento da bomba atômica. Entre 1947 e 1952, o cientista Howard Aiken construiu versões
melhoradas do Mark I, os Mark II, III e IV.
3
102 – Arquitetura de Computadores | Unidade 04
05
06
3 - AVALIAÇÃO DE DESEMPENHO
Quando avaliamos o custo de um determinado componente precisamos nos atentar aos parâmetros que
mais influenciam o valor final que são: número de pinos, área de chip e número de chips por sistema.
Quando você resolve adquirir um laptop ou um notebook pode utilizar como parâmetro o tamanho, pois
para você um item importante é a facilidade de transporte e uso em viagens.
Será muito difícil avaliar um sistema de maneira isolada, geralmente a comparação básica que fazemos é
o custo e desempenho, que tenha um preço justo e um desempenho aceitável, que possamos assistir a
um filme em HD ou jogar determinado game. Aliás, quando falamos em jogos, o fator desempenho
4
102 – Arquitetura de Computadores | Unidade 04
ganha um vulto maior, pois dependendo do jogo haverá uma alta exigência de recursos como
processador, memória, placa de vídeo dedicada, capacidade de armazenamento e etc. Vamos usar como
exemplo uma propaganda sobre as especificações e vantagens de adquirir um notebook da Marca XYZ:
“Você pode assistir a um filme de sucesso ou bater um recorde em um jogo sem problemas, pois a 4ª
Geração dos Processadores XYZ oferece bateria de longa duração e uma experiência visual
surpreendente para você aproveitar ao máximo seus aplicativos e jogos favoritos...”
FLOPS
Flop(s) é um acrônimo na computação que significa FLoating-point Operations Per Second, que, em
português, quer dizer operações de ponto flutuante por segundo. Isto é usado para determinar o
desempenho de um computador, especificamente no campo de cálculos científicos, que fazem grande
uso de cálculos com ponto flutuante; similar a instruções por segundo.
(Fonte: http://pt.wikipedia.org/wiki/FLOPS)
Benchmark
Em computação, benchmark é o ato de executar um programa de computador, um conjunto de
programas ou outras operações, a fim de avaliar a performance relativa de um objeto, normalmente
executando uma série de testes padrões e ensaios. (Fonte: http://pt.wikipedia.org/wiki/Benchmark).
Tamanho
No caso do tamanho, a avaliação está nas características físicas, exemplo: peso, volume, facilidade de
transporte e consumo de energia. Você também poderá considerar outro fator, por exemplo: para
estudar.
07
- Qual será o tempo necessário para execução de um conjunto de programas de determinada aplicação?
- Qual será o espaço necessário para o armazenamento de um conjunto de programas ou dados?
- Qual será o uso efetivo dos diversos componentes do sistema?
Diante destas perguntas chegamos à conclusão de que não há uma resposta simples. Essas perguntas
exigem uma análise mais ampla, abrangendo o teste com programas (softwares) que exijam
5
102 – Arquitetura de Computadores | Unidade 04
determinada resposta do sistema computacional. Por meio destes testes será possível desenvolver
projetos computacionais com arquitetura de alto desempenho identificando e retirando os possíveis
“gargalos” do sistema. Estes “gargalos” limitam o desempenho como um todo.
Paralelismo
O paralelismo ou também chamado de ILP (Paralelismo em nível de instrução) é uma técnica utilizada
no desenvolvimento de processadores e compiladores que melhoram (aumentam) o desempenho dos
computadores, fazendo que operações como multiplicações de ponto flutuante, adição de inteiros,
escrita e leitura de memória sejam executadas em paralelo. No nível de instruções, o paralelismo é
muito utilizado por arquiteturas de processadores que possuem a capacidade de operar dados ou
executar instruções em paralelo.
08
4 - ARQUITETURA RISC
Tendo por objetivo melhorar a performance, estudos sobre o comportamento da execução de
programas em linguagens de alto nível visam orientar o projeto de um novo tipo de arquitetura para
processadores, o chamado computador com conjunto reduzido de instruções(Reduced Instruction Set
Computes), também conhecido como arquitetura RISC.
Trata-se de uma linha de arquitetura de processadores que favorece um conjunto simples e pequeno
de instruções que levam aproximadamente a mesma quantidade de tempo para serem executadas.
Trata-se de uma linha de arquitetura de processadores que favorece um conjunto simples e pequeno de
instruções que levam aproximadamente a mesma quantidade de tempo para serem executadas.
6
102 – Arquitetura de Computadores | Unidade 04
09
Conforme vimos na lista anterior, é possível adicionar uma inovação muito interessante na arquitetura
de computadores que é chamada deconjunto reduzido de instruções (RISC). Essa arquitetura (RISC)
mudou as tendências da época na arquitetura de computadores.
Mesmo que o sistema RISC tenha sido definido de muitas maneiras por grupos diferentes de projetistas,
a maioria segue os seguintes elementos básicos:
Uma das maneiras de evidenciar a evolução das linguagens de programação foi também a evolução dos
computadores. Com a diminuição do valor (custo) do hardware, houve um aumento do software. Isso
ocorreu devido à diminuição do número de programadores disponíveis para o desenvolvimento de
7
102 – Arquitetura de Computadores | Unidade 04
programas. Sendo assim, o preço do software passou a ser maior, no ciclo de vida de um sistema, do
que o do hardware. Além de apresentar um custo elevado, o software, geralmente, apresenta bugs, o
que diminui a confiança. Infelizmente é comum nos depararmos com situações que programas ou
aplicações apresentam erros inexplicáveis mesmo após vários anos de uso.
Bugs
Bug em inglês quer dizer “defeito”, é um erro no funcionamento de um software ou mesmo do
hardware, também chamado de falha na lógica de um programa. Pode vir a causar comportamentos
inesperados, como resultado incorreto ou comportamento indesejado. São geralmente causados por
erros no próprio código-fonte (código desenvolvido pelo programador).
(Fonte: http://pt.wikipedia.org/wiki/Bug)
10
5 - ARQUITETURA CISC
Há também a arquitetura CISC - Complex Instruction Set Computer, ou Computador com um Conjunto
Complexo de Instruções.
Havia uma tendência para o uso de conjuntos de instruções cada vez mais ricas, incluindo um grande
número de complexas instruções. Essa tendência teve por motivação duas grandes razões: desejo de
otimizar o desempenho e o desejo de simplificação dos compiladores.
Essas razões tinham por fundamentação a adoção da linguagem de alto nível nas atividades de
programação; os projetistas de computadores almejavam projetar máquinas que oferecessem o melhor
suporte possível para as linguagens de alto nível.
Não será nosso objetivo questionar o que motivou alguns projetistas de computadores adotarem a
técnica CISC. O importante é o entendimento que a tecnologia não para, como na canção do Cazuza “o
tempo não para”, a TI também não para. Atualmente, para a TI, as tecnologias ficam obsoletas em um
curto prazo de tempo. Consequentemente, as arquiteturas existentes variam dentro de um espectro,
não podendo ser classificadas em apenas duas categorias, RISC ou CISC, pois é pouco provável que
algum dia haja uma conclusão sobre o tipo de abordagem mais adequada, se uma arquitetura com
reduzido número de instruções (RISC) ou se a arquitetura com um complexo conjunto constituído de
grande quantidade de instruções (CISC).
Compilador
É um programa de sistema que traduz um programa descrito em uma linguagem de alto nível para um
programa equivalente em código de máquina para um processador. Em geral, um compilador não
produz diretamente o código de máquina, mas sim um programa em linguagem simbólica (assembly)
semanticamente equivalente ao programa em linguagem de alto nível. O programa em linguagem
simbólica é então traduzido para o programa em linguagem de máquina através de montadores.
8
102 – Arquitetura de Computadores | Unidade 04
(Fonte: http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node37.html).
11
É interessante observar que mesmo a abordagem CISC tendo por premissa um complexo conjunto de
instruções, ela veio contribuir para a simplificação dos compiladores. Um compilador gera uma
sequência de instruções de máquina para cada comando da linguagem de alto nível. Caso existam
instruções de máquina que se assemelhem aos comandos de linguagens de alto nível, essa tarefa tornar-
se-á mais simples.
Contudo, esse raciocínio vem sendo discutido por pesquisadores adeptos da arquitetura RISC. Eles
descobriram que instruções de máquina complexas frequentemente são mais difíceis de serem
utilizadas, em virtude de o compilador ter de encontrar os casos em que essas instruções estejam
exatamente adequadas a uma dada construção da linguagem. Com o uso de um conjunto complexo de
instruções, fica muito mais difícil a tarefa de melhorar (otimizar) o código gerado. Fica difícil minimizar
seu tamanho, reduzir o número de instruções executadas e melhorar o desempenho da pipeline de
instruções.
Outro argumento utilizado e que merece destaque é a expectativa de que uma arquitetura CISC possa
produzir programas menores e mais rápidos. Programas menores têm duas vantagens. A primeira é
consumir um menor espaço de memória, resultando na economia desse recurso. Como a memória é,
hoje em dia, mais accessível e tornou-se mais barata, essa vantagem deixa de ser tão significativa. A
vantagem mais evidente e importante de programas menores é, consequentemente, contribuir
para melhorar o desempenho.
O problema com essa linha de raciocínio é que não se pode ter certeza de que um programa compilado
para arquitetura CISC será menor que um programa compilado para uma arquitetura RISC
correspondente. Em muitos casos, o programa CISC, expresso em linguagem de máquina simbólica,
pode ter um número menor de instruções, mas o número de bits de memória ocupada pode não ser
significativamente menor.
Melhorar o desempenho
Essa melhoria de desempenho pode acontecer de duas maneiras:
• Primeiro, um menor número de instruções significa menor número de bytes de instruções a serem
buscados.
• Segundo, em um ambiente de paginação, programas menores ocupam um número menor de
páginas, o que reduz a taxa de falta de páginas.
Paginação
Processo de virtualização da memória que consiste na subdivisão da memória física em pequenas
partições (frames), para permitir uma utilização mais eficiente da mesma. As frames da memória física
correspondem a páginas de memória virtual. A alocação de memória é requisitada por páginas, a
menor unidade deste método. Cada página é mapeada numa frame de memória através de um
processo que chama paginação. (http://pt.wikipedia.org/wiki/Mem%C3%B3ria_paginada).
9
102 – Arquitetura de Computadores | Unidade 04
12
Até o momento você deve ter observado as características de cada arquitetura (RISC X CISC) e
provavelmente deve estar pensando ou querendo saber qual delas seria realmente a melhor
arquitetura.
O interessante neste caso não é saber quem é a melhor, mas sim reconhecer que o projeto RISC pode
beneficiar-se com a inclusão de algumas características CISC e o CISC pode beneficiar-se com a inclusão
de algumas características RISC. O resultado é que projetos RISC mais recentes não são RISC “100%”,
assim como projetos CISC incorporam característica RISC.
Sendo assim, não há atualmente processadores que sigam fielmente uma arquitetura específica, RISC ou
CISC. Veja alguns exemplos.
Visando à praticidade, uma vantagem da arquitetura CISC é que já há várias instruções guardadas no
próprio processador, o que viabiliza o trabalho dos programadores que, desta forma, já têm disponível
as instruções necessárias para seus programas. Caso o programador estivesse programando para uma
arquitetura RISC, ele teria mais trabalho, pois as instruções são mais simples e exigiriam muito, caso
houvesse a necessidade de executar algumas tarefas mais complexas. Uma comparação bem
interessante e que ajuda na elucidação seria tentar usar uma calculadora comum (operações básicas)
para fazer cálculos de estatística ou usar a calculadora comum para fazer conversão de base.
13
RESUMO
Durante o estudo desta unidade tivemos a oportunidade de entender as chamadas: máquinas von
Neumann e as não von Neumann. Uma característica básica da máquina von Neumann é sua
composição, a qual é feita a partir de três subsistemas básicos: CPU ou UCP, memória principal e
sistema de E/S. As máquinas que não seguem o modelo de von Neumann são chamadas de máquinas
“não-von Neumann”. Porém, não quer dizer que este modelo seja contra ou antagônico ao modelo de
10
102 – Arquitetura de Computadores | Unidade 04
von Neumann. Um projeto de um sistema com arquitetura de alto desempenho só é possível alterando
os algoritmos para melhor ajustar à organização do sistema. Tendo por objetivo melhorar a
performance, estudos sobre o comportamento da execução de programas em linguagens de alto nível
visam orientar o projeto de um novo tipo de arquitetura para processadores, o chamado computador
com conjunto reduzido de instruções (Reduced Instruction Set Computes) ou também conhecido como
arquitetura RISC. Há também a arquitetura CISC, que era resultado de uma tendência para o uso de
conjuntos de instruções cada vez mais ricas, incluindo um grande número de complexas instruções. Essa
tendência teve por motivação duas grandes razões: desejo de otimizar o desempenho e desejo de
simplificação dos compiladores.
Ao final, concluímos que o mais interessante não é saber quem é a melhor (RISC ou CISC), mas sim
reconhecer que o projeto RISC pode beneficiar-se com a inclusão de algumas características CISC e o
CISC pode beneficiar-se com a inclusão de algumas características RISC. O resultado é que projetos RISC
mais recentes não são RISC “100%”, assim como projetos CISC incorporam características RISC.
1 - COMPUTAÇÃO PARALELA
No decorrer do estudo deste módulo entenderemos que quando falamos em computação paralela
fazemos referência à maneira de realizar vários cálculos (instruções) de maneira simultânea. Falaremos
da organização SMP, que faz referência a vários processadores similares em um mesmo computador,
ligados pelo barramento ou por meio de algum circuito de conexão. Você entenderá que cluster é o
conjunto de máquinas, ligadas entre si, que trabalham juntas como um sistema computacional único,
dando a impressão que é uma única máquina.
Falaremos também do sistema NUMA no qual o tempo gasto para acesso a uma palavra na memória
varia conforme a posição dessa palavra na referida memória. Você verá que computadores
superescalares são máquinas que possuem várias unidades de execução no mesmo processador, sendo
assim, executam em paralelo várias instruções de um mesmo programa. Estudaremos como é uma
organização MIMD, na qual cada processador irá processar todas as instruções para, de forma
adequada, realizar a transformação dos dados. Estudaremos a máquina SISD, a qual possui uma unidade
de controle que oferece uma sequência de instruções para uma unidade de processamento.
Na sequência, estudaremos o modelo PRAM, que é uma extensão do modelo sequencial RAM e também
o mais conhecido dos modelos de computação paralela. Veremos o modelo Bulk Synchronous Parallel
Model (BSP) que foi um dos primeiros a levar em consideração os custos da comunicação e não levar em
conta as características de uma máquina paralela em um número pequeno de parâmetros. E ao final,
veremos também o modelo Coarse Grained Multicomputer (CGM) que é muito similar ao modelo BSP.
11
102 – Arquitetura de Computadores | Unidade 04
02
Caso alguém pedisse sua opinião para melhorar o desempenho de um sistema computacional,
provavelmente você aconselharia a aumentar o número de processadores. Se você teve esta ideia,
muito bem, está correto. A ideia de adicionar mais processadores para trabalharem (executarem) em
paralelo para melhorar a performance diante de uma carga de trabalho é muito bem-vinda. Tanto é,
que, hoje em dia, ao comprarmos uma máquina (computador) notamos que os processadores são, na
maioria das vezes, multicore (processador com mais de um núcleo).
Quando falamos em computação paralela, estamos fazendo referência à maneira de realizar vários
cálculos (instruções) de forma simultânea. Trata-se de dividir um grande problema em problemas
menores, os quais serão processados concorrentemente (paralelamente).
Esta técnica, chamada de paralelismo, é empregada há muito tempo e seu foco sempre foi a
computação de alto desempenho. Atualmente, em virtude da necessidade de criarmos máquinas mais
potentes, de tamanho reduzido e que consumam menos energia elétrica, tornou-se ainda mais
necessário o uso de processadores multinúcleo.
Sistema computacional
Conjunto de dispositivos eletrônicos (hardware) que processam informações de acordo com um
programa (software). O software mais importante é o sistema operacional, porque ele fornece as bases
para a execução das aplicações, às quais o usuário deseja executar. Exemplos de sistemas operacionais
são: GNU/Linux, Microsoft Windows, o IOS da Apple.
(Fonte: http://pt.wikipedia.org/wiki/Sistema_computacional).
03
Reforçando o conceito, um SMP consiste em vários processadores que compartilham uma memória
única ou mesmo um conjunto de memória através do compartilhamento de um barramento ou de outro
tipo de conexão. Esse sistema tem por característica que o tempo de acesso a qualquer região da
12
102 – Arquitetura de Computadores | Unidade 04
memória é praticamente o mesmo para cada processador. O sistema SMP tem esta denominação em
referência tanto quanto ao comportamento do sistema operacional quanto à arquitetura de hardware.
O controle do sistema é feito por um sistema operacional integrado, que estabelece uma
interação entre seus programas e os processadores, em nível de dados, arquivos e de tarefas;
Em virtude de serem simétricos, os processadores poderão desempenhar as mesmas funções;
Tanto por meio de canais distintos ou comuns que provêm caminhos para os dispositivos, todos
os processadores compartilham acesso aos dispositivos de entrada e saída (E/S);
O tempo de acessa à memória é aproximadamente o mesmo para cada processador, isto
ocorre em virtude dos processadores compartilharem as facilidades de E/S e a mesma MP e
estão conectados por um barramento ou outro meio de conexão;
Há dois ou mais processadores similares, com capacidade de computação compatível.
Coerência de cache
Diversas arquiteturas de máquinas paralelas atuais são construídas com processadores produzidos em
larga escala. Essas máquinas paralelas incorporam caches em suas arquiteturas, o que provoca o
problema de coerência de cache, que, em síntese, é a inconsistência de dados. Essa inconsistência é
provocada pelos seguintes motivos:
- múltiplas cópias de mesma posição de memória podem existir em diferentes caches,
- cada processador atualiza sua cópia local, não se preocupando com a existência de outras cópias em
outros processadores;
- cópias de mesmo endereço de memória poderão possuir valores diferentes.
Sistema Operacional
É um sistema que tem por objetivo organizar e controlar os softwares e o hardware tornando possível a
utilização de um computador (máquina).
(Fonte: http://pt.wikipedia.org/wiki/Sistema_operativo)
04
Quando falamos em cluster estamos fazendo referência a um conjunto de máquinas, ligados entre si,
que trabalham juntos como um sistema computacional único, dando a impressão que é uma única
máquina.
13
102 – Arquitetura de Computadores | Unidade 04
Quando falamos no sistema NUMA (Non-Uniform Memory Access ou acesso não uniforme à memória)
estamos fazendo referência a um multiprocessador com memória compartilhada, no qual o tempo gasto
para acesso a uma palavra na memória varia conforme a posição dessa palavra na referida memória.
Então, como o próprio nome sugere, o tempo de acesso a diferentes regiões da memória pode não ser
igual para um processador NUMA. Um grupo de computadores com apenas um processador ou de SMP
independentes podem ser conectados por meio de cabos de rede ou outro tipo de conexão e formarem
um cluster.
Então não se esqueça, o sistema NUMA tem por característica o fato de todos os processadores
possuírem acesso a todas as áreas da MP (memória principal), via operação de armazenamento e de
carga. Sendo assim, o fator tempo de acesso à memória por um processador é diferente conforme a
região utilizada. Isso acontece com todos os processadores, contudo, as regiões de memória na qual o
acesso é mais rápido ou mais lento serão diferentes para diferentes tipos de organização utilizada nos
processadores.
05
Tipicamente, uma máquina é vista como uma máquina sequencial. Grande parte das linguagens de
programação exige a especificação do algoritmo como uma sequência de instruções. Esta visão é que os
processadores executam programas através da execução sequencial de instruções de máquina.
Contudo, esta visão não é totalmente verdadeira. Isso devido ao fato de que ao nível de
microoperações, uma gama de sinais de controle é gerada ao mesmo tempo.
A técnica de Pipeline de instruções é utilizada há um certo tempo, fazendo sobreposição nas operações
de execução e busca de instruções. Esses são exemplos de execução em paralelo das funções.
Essa visão nos remete a uma organização chamada superescalar, que tem por objetivo explorar o
paralelismo ao nível de instrução. Nos chamados computadores superescalares, há várias unidades de
execução no mesmo processador, sendo assim, executam em paralelo várias instruções de um mesmo
programa.
14
102 – Arquitetura de Computadores | Unidade 04
O cientista da computação, o americano Michael J. Flynn foi o criador do primeiro sistema para a
classificação de programas e computadores paralelos e sequenciais, ficando conhecida como
a taxonomia de Flynn, que veremos a seguir.
06
• SISD (Single Instruction Single Data) – “única instrução, único dado”. Significa que apenas um
processador irá executar uma única sequência de instruções, utilizando os dados que estão
armazenados em apenas uma memória. Pertencem a esta categoria os sistemas uniprocessados.
Na estrutura de uma máquina SISD há uma UC (unidade de controle) que oferece uma SI (sequência de
instruções) para uma UP (unidade de processamento). A UP opera sobre uma única SD de uma única
UM (unidade de memória). Na máquina SIMD, há uma única UC, que alimenta múltiplos EP (elementos
de processamento) com somente uma sequência de instruções. Cada elemento de processamento
possui sua própria memória ou compartilha uma memória. Na organização MIMD, há múltiplas UC, cada
qual alimentando seu próprio elemento de processamento com diferentes sequências de instruções.
• SIMD (Single Instruction Multiple Data) – “única instrução múltiplos dados”. Significa que apenas uma
instrução de máquina controla a execução simultânea de determinado número de elementos de
processamento, em passos de execução. Cada elemento de processamento está associado a uma
memória de dados, de tal maneira que cada instrução será executada em cada processador sobre um
conjunto de dados diferentes. Pertencem a esta categoria os processadores matriciais e os vetoriais.
07
15
102 – Arquitetura de Computadores | Unidade 04
• MISD (Multiple Instruction Sigle Data) - “múltiplas instruções único dado”. Significa dizer que
determinada sequência de dados é enviada para um conjunto de processadores, cada processador
executa uma sequência diferente de instruções. Esta estrutura é experimental.
• MIMD (Multiple Instruction Multiple Data) – “múltiplas instruções múltiplos dados”. Significa que
determinado conjunto de processadores simultaneamente executam sequências diferentes de
instrução, sobre conjuntos de dados distintos. Pertencem a esta categoria os SMP, clusters e sistemas
NUMA.
Na organização MIMD, os processadores são utilizados para propósito geral, cada processador irá
processar todas as instruções para, de forma adequada, realizar a transformação dos dados.
08
Para complementar o seu estudo, assista ao vídeo abaixo. Neste vídeo você terá oportunidade de
entender o que motivou o INPE (Instituto Nacional de Pesquisas Espaciais) a investir em um sistema
computacional de alto desempenho para o CPTEC (Centro de Previsão do Tempo e Estudos Climáticos),
16
102 – Arquitetura de Computadores | Unidade 04
que é composto por um cluster de 1,1 mil processadores trabalhando em conjunto e está na lista dos
500 supercomputadores mais rápidos do mundo.
https://www.youtube.com/watch?v=gfBSNxcYRiU
Aproveite também para ler uma pequena reportagem da revista on-line Exame.com, que aborda como a
USP está utilizando os maiores e mais potentes clusters (aglomerado de computadores) do mundo
voltado para pesquisas de astronomia.
http://exame.abril.com.br/tecnologia/noticias/supercomputador-da-usp-estuda-estrelas-
gigantes/
09
4 - CLUSTER: BENEFÍCIOS
Cluster é um grupo de computadores interconectados, trabalhando em conjunto, como um
sistema computacional unificado, dando a impressão de ser um único computador.
Você poderá encontrar outras definições, que dizem: clusters são formados por vários “nós”, sendo que
cada “nó” representa um computador, sendo assim, cluster também poderá ser chamado de conjunto
de “nós” interconectados.
Quando falamos em clusters podemos ver que é uma área muito utilizada e promissora do projeto de
sistemas de computação. Clusters são uma alternativa para multiprocessadores simétricos (SMP), como
abordagem para o provimento de alta disponibilidade e alto desempenho, sendo muito utilizados em
ambiente de servidores.
Servidor
Na TI (Tecnologia da Informação) o termo “servidor” é utilizado para especificar um sistema de
computação centralizado que fornece serviços a uma rede de computadores. Esses serviços podem ser
de vários tipos, como por exemplo: servidor de arquivos (file server) ou de correio eletrônico (mail
server). As máquinas (computadores) que utilizam os serviços de um servidor são chamadas de clientes
ou estações de trabalho clientes. (Fonte: http://pt.wikipedia.org/wiki/Servidor).
17
102 – Arquitetura de Computadores | Unidade 04
10
No ano de 1997 o autor Brewer, no seu livro “Clustering multiply and conquer”, que em uma tradução
simples seria “Cluster: dividir para conquistar”, fala sobre os benefícios do uso de clusters. Fazendo um
“parêntese”, essa expressão “dividir para conquistar” foi utilizada por grandes personagens da história,
como César (Roma) e Napoleão (França), no intuito de explicar uma estratégia de manter os inimigos
divididos, em grupos pequenos, ficando mais fácil dominá-los. Contudo, em nosso “mundo da TI” e mais
especificamente em Cluster, estamos fazendo referência a “dividir as tarefas” entre os processadores,
para “conquistar” uma melhor performance.
Abaixo podemos ver como Brewer relaciona os benefícios alcançados com clusters:
• Escalabilidade incremental;
• Escalabilidade absoluta;
• Melhor relação custo/desempenho;
• Alta disponibilidade.
Tanto cluster como SMP (multiprocessadores simétricos) possuem uma configuração com vários
processadores (múltiplos processadores) para suportar aplicações que exigem alto desempenho. Essas
soluções (cluster e SMP) estão disponíveis no mercado, sendo que a principal vantagem dos sistemas
SMP é a fácil configuração em relação a um cluster.
Fica também claro o que motiva as empresas a investirem em clusters para aplicações de alto
desempenho (exemplo do INPE, visto anteriormente), pois nos quesitos escalabilidade incremental,
escalabilidade absoluta e disponibilidade os clusters são muito mais eficientes e superiores que os SMP.
Escalabilidade Incremental
Na configuração de um cluster é possível adicionar novos computadores, tornado sua expansão
incremental. Dessa maneira, é possível começar com um sistema pequeno e expandir à medida do
aumento das necessidades.
Escalabilidade Absoluta
Capacidade de criação de grandes clusters, com capacidade de executar vários aplicativos de maneira
que ultrapassa várias vezes a capacidade de uma máquina comum. Um cluster pode ser formado por
muitas máquinas, sendo que cada uma constitui um processador ou multiprocessador.
Alta Disponibilidade
Cada nó de um cluster é uma máquina independente, uma falha em qualquer destas máquinas não
significa uma perda total do serviço, pois as outras máquinas mantêm a disponibilidade da aplicação ou
serviço de rede.
18
102 – Arquitetura de Computadores | Unidade 04
11
Há também algumas desvantagens no sistema NUMA, a primeira é que este sistema não se apresenta
de forma transparente como um SMP, havendo necessidade de modificações de software para a
migração de sistemas operacionais e aplicações do sistema SMP para o sistema NUMA. A segunda
desvantagem é a questão da disponibilidade, conforme vimos na comparação Cluster e SMP.
Na grande maioria dos softwares desenvolvidos para máquinas paralelas observam apenas o problema
da paralelização com baixos níveis de comunicação. Contudo, nas máquinas reais, o tempo de
comunicação é, geralmente, mais elevado que o tempo de processamento (computação). Sendo assim,
muitos algoritmos paralelos que na teoria são eficientes, para o modelo PRAM (memórias de acesso
aleatório com mudança de fase), não têm o desempenho que se espera quando implementados em
máquinas paralelas reais.
12
Ao pararmos para pensar, poderemos ver que um computador paralelo é simplesmente um grupo
(coleção) de processadores, geralmente do mesmo tipo, interligados de tal modo que permita a
19
102 – Arquitetura de Computadores | Unidade 04
coordenação de como é feita a troca de dados e também das suas atividades. Essas atividades podem
ser: quando o volume de dados e cálculos é muito grande e necessita-se de rapidez na resolução.
No decorrer do nosso estudo vimos o modelo de computação sequencial de von Neumann, que assume
a existência de apenas uma UCP e uma memória de acesso aleatório (RAM), é possível estabelecer uma
relação entre os desempenhos das implementações e dos seus respectivos algoritmos por meio de
medidas de complexidade de tempo.
No modelo de von Neumann, estas medidas (complexidade de tempo) tornam possível medir de
maneira mais eficiente a performance dos algoritmos sequenciais, servindo como referência para as
implementações. Entretanto, na computação paralela, a mesma relação entre algoritmos e
implementações não há ainda um modelo padrão. Em virtude da presença de vários elementos de
processamento torna a definição de um modelo de computação paralela mais complicado.
13
O modelo PRAM (Parallel Random Access Machine) é uma extensão do modelo sequencial RAM e
também o mais conhecido dos modelos de computação paralela.
Podemos descrevê-lo como um conjunto de processadores que trabalham sob o controle do clock de
maneira síncrona. Cada processador possui uma identificação única e uma memória local própria,
comunicando-se com os demais processadores por meio de uma memória compartilhada.
20
102 – Arquitetura de Computadores | Unidade 04
Apesar de sua importância conceitual e teórica, o modelo PRAM, não consegue espelhar com precisão a
noção de paralelismo. Algumas características que não foram incorporadas ao modelo têm grande
impacto no desempenho das implementações.
Em virtude das limitações do modelo PRAM, outras alternativas surgiram para contornar estes
problemas, estes modelos são chamados realísticos, exemplo, o BSP e o CGM, que veremos a seguir.
Clock
Significa a quantidade de ciclos que um processador é capaz de realizar durante um determinado
tempo. (Fonte: http://pt.wikipedia.org/wiki/Clock)
14
O modelo Bulk Synchronous Parallel Model (BSP), que em uma tradução simples seria “Modelo Paralelo
Síncrono Volumoso”, teve sua proposição feita por Valiant (Leslie Valiant – professor de Harward), no
ano de 1990, foi um dos primeiros em levar em consideração os custos da comunicação e não levar em
conta as características de uma máquina paralela em um número pequeno de parâmetros. Este modelo
tem como objetivo principal servir de ponte entre as necessidades na computação paralela de hardware
e software. Conforme a proposição de Leslie Valiant, este é um dos fatores responsáveis pelo sucesso do
modelo sequencial de von Neumann.
O modelo de máquina BSP consiste de um conjunto de “p” processadores com memória local, trocando
informações por meio de alguma interconexão, gerenciados por um roteador (faz a intermediação
entre um ou mais pontos) e com facilidade de sincronização global. Um algoritmo BSP consiste de uma
sequência de uma quantidade muito grande de passos (superpassos) separados por barreiras de
sincronização.
Há também o modelo Coarse Grained Multicomputer (CGM), que em uma tradução simples seria
“Multicomputador com Granularidade Grossa”, teve sua proposição feita por Dehne et al, no ano de
1993.
O modelo CGM é muito parecido com o modelo BSP, no entanto, é definido em apenas dois
parâmetros:
n = tamanho do problema e
p número de processadores.
21
102 – Arquitetura de Computadores | Unidade 04
O cálculo do custo de um algoritmo CGM é feito pela soma dos tempos obtidos em termos do número
total de rounds de computação local e do número de superpassos, o que seria equivalente ao número
total rodadas de comunicação.
Granularidade grossa
Quando se fala em “coarse grained” (granularidade grossa) é em virtude do tamanho de o problema ser
razoavelmente maior que a quantidade de processadores, ou seja, “tamanho do problema” = “número
de processadores” (n/p = p).
15
Os modelos modernos de computação paralalela, BSP e CGM, têm por objetivo a redução dos custos de
comunicação de maneira muito semelhante e buscam a caracterização de uma máquina paralela por
meio de um conjunto de parâmetros. Podemos destacar que no número de operações de computação
local e no número de superpassos eles são muito semelhantes.
Fazendo referência ao final da década de 1980, observamos que houve o crescimento grande do
desenvolvimento de algoritmos paralelos para o modelo chamado PRAM. Em virtude, infelizmente, dos
resultados teóricos obtidos não serem positivos eles não foram utilizados para implementações nas
máquinas atuais. Na década de 1990, é quando surgem os modelos BSP e CGM. O desenvolvimento de
algoritmos para esses modelos, quando foram implementados nas máquinas atuais, apresentam
resultados satisfatórios de “Tempo do Algoritmo Sequencial Dividido pelo Tempo do Algoritmo Paralelo
com “p” processadores” (speedup) semelhantes ao que havia sendo ensaiado nas análises teóricas.
Os modelos BSP e CGM tornaram possível um progresso considerável na área de algoritmos paralelos,
mas o mais interessante é que ainda há muito a melhorar e que muitas pesquisas ainda serão
necessárias para atingir o estado da arte.
16
RESUMO
Durante nosso estudo você teve oportunidade de conhecer o que é Computação Paralela e sua maneira
de realizar vários cálculos (instruções) simultaneamente. Você compreendeu como é a organização SMP,
que faz referência a vários processadores similares em um mesmo computador, ligados pelo
barramento ou por meio de algum circuito de conexão. Você compreendeu que CLUSTER é o conjunto
de máquinas, ligadas entre si, que trabalham juntas como um sistema computacional único, dando a
impressão que é uma única máquina.
22
102 – Arquitetura de Computadores | Unidade 04
Quando falamos em sistema NUMA estamos fazendo referência a um multiprocessador com memória
compartilhada, no qual o tempo gasto para acesso a uma palavra na memória varia conforme a posição
dessa palavra na referida memória. Você teve oportunidade de saber que computadores superescalares
são máquinas que possuem várias unidades de execução no mesmo processador. Na organização MIMD,
os processadores são utilizados para propósito geral, cada processador irá processar todas as instruções
para, de forma adequada, realizar a transformação dos dados.
Você compreendeu que na estrutura SISD há uma UC (unidade de controle) que oferece uma SI
(sequência de instruções) para uma UP (unidade de processamento). Você também teve oportunidade
de conhecer o que é um sistema NUMA (Acesso não uniforme à memória) que tem por característica
que todos os processadores possuem acesso a todas as áreas da MP (memória principal), via operação
de armazenamento e de carga. Você compreendeu que o modelo PRAM (Parallel Random Access
Machine) é uma extensão do modelo sequencial RAM e também o mais conhecido dos modelos de
computação paralela. Para finalizar você conheceu o modelo Bulk Synchronous Parallel Model (BSP) que
foi um dos primeiros a levar em consideração os custos da comunicação e não levar em conta as
características de uma máquina paralela em um número pequeno de parâmetros e o modelo Coarse
Grained Multicomputer (CGM) que é muito similar ao modelo BSP, no entanto, é definido em apenas
dois parâmetros: em que “n” é o tamanho do problema e “p” número de processadores.
1 - ARQUITETURAS COMPUTACIONAIS
Durante o estudo deste módulo você terá a oportunidade de compreender que os sistemas
computacionais estão cada vez mais elaborados e complexos, requerendo o processamento de grandes
quantidades de informação e os computadores que as processam precisam ter um melhor
balanceamento de carga, uma melhor distribuição na concorrência de tarefas, além da redução do
tempo de resposta ao usuário.
As opções mais usuais para a solução desses problemas são: a utilização de processadores mais rápidos
(cujo custo normalmente é elevado); o desenvolvimento de melhores algoritmos (permitindo agilidade
nas aplicações); ou então, a agregação (clusters) ou distribuição geográfica (grids) dos computadores
locais permite a maximização da eficiência global das aplicações.
Com microprocessadores cada vez mais potentes, com um custo cada vez menor, além do avanço na
tecnologia de comunicação de dados houve a criação de um ambiente favorável para o
desenvolvimento e utilização de sistemas distribuídos.
23
102 – Arquitetura de Computadores | Unidade 04
A computação distribuída ou paralela diz respeito à interligação de vários computadores a uma rede
com a finalidade de compartilhar e coordenar os recursos disponíveis para a solução de problemas
complexos na execução de tarefas.
02
24
102 – Arquitetura de Computadores | Unidade 04
03
25
102 – Arquitetura de Computadores | Unidade 04
Fortemente acoplado
Sistemas fortemente acoplados são aqueles que possuem vários processadores compartilhando uma
memória física. Exemplos: SMP(UMA) e NUMA.
04
A interconexão entre processadores e memória pode ser efetuada por meio de uma barra, que permite
a configuração compartilhada.
05
26
102 – Arquitetura de Computadores | Unidade 04
06
27
102 – Arquitetura de Computadores | Unidade 04
07
08
28
102 – Arquitetura de Computadores | Unidade 04
As máquinas são denominadas servidores de pequeno porte, que visam aumentar o desempenho de
aplicações por meio do compartilhamento do código com uma memória única utilizando fortemente os
processadores disponíveis, provendo maior rapidez nas consultas e atualizações de bancos de dados,
por exemplo. Uma das características dessa arquitetura é que os ambientes não são muito escaláveis,
pois o sistema de interconexão normalmente utilizado é um barramento que fixa a largura da banda e
cria uma limitação.
Fonte: Prof. Dr. Odemir Martinez Bruno – Processamento Paralelo – Slide ICMC – USP
09
A arquitetura de acesso não uniforme à memória – ccNuma (Non-Uniform Memory Access NUMA) tem
a característica de poder escalar centenas de processadores, preservando o modelo de programação
simples de uma configuração SMP. Os processadores podem compartilhar os mesmos dados que estão
armazenados em uma memória global. Há “um retardo para acesso a determinadas partes da memória
por determinados processadores dependendo de suas localizações” (DANTAS, 2005).
As arquiteturas ccNUMA são complexas e suas implementações dependem das soluções de cada
fabricante para a sincronização de acesso e consistência à memória, permitindo um melhor
desempenho da máquina.
29
102 – Arquitetura de Computadores | Unidade 04
10
Cada nó possui uma cópia de sistema operacional, onde as aplicações executam localmente e se
comunicam através de pacotes de troca de mensagem. A escalabilidade desta abordagem é maior, visto
que cada nó tem sua estrutura própria de memória e a interligação de vários nós é efetuada por
dispositivos chamados redes de interconexão, podendo ser implementadas de várias formas de acordo
com sua topologia, seu algoritmo de roteamento, a estratégia de comutação e o controle do fluxo entre
nós.
11
São configurações que agregam computadores existentes nas redes convencionais e possuem grande
poder de escala em virtude disso. Nos ambientes distribuídos os conjuntos de máquinas existentes
permitem configurações diferenciadas de SMPs, MPP, de clusters e grids computacionais. Muitos
autores empregam o termo metacomputador como referência ao uso de sistemas distribuídos como um
grande computador, vide a própria internet que possui máquinas agrupadas para a execução de uma
aplicação.
30
102 – Arquitetura de Computadores | Unidade 04
12
Clusters
É a agregação de computadores de uma forma dedicada ou não dedicada para a execução de aplicações
específicas de uma organização ou que exijam um maior desempenho computacional agregado.
Normalmente, os clusters se encontram geograficamente localizados em uma determinada área da
organização, tendo uma disponibilidade de processadores, memórias e capacidade de armazenamento
específicos para este atendimento.
Nos clusters a escalabilidade é um diferencial, visto que a configuração pode ser aumentada de acordo
com os recursos disponíveis, melhorando o desempenho das aplicações.
31
102 – Arquitetura de Computadores | Unidade 04
13
Grids
Seu maior exemplo é a internet, que está num ambiente no qual diferentes tipos de aplicativos e de
requerimentos de qualidade são tratados de forma equivalente, através dos grids consegue-se
concentrar “toda a potencialidade de recursos e serviços disponíveis na internet para o processamento
de tarefas dos usuários pertencentes a uma ou mais configurações de grid”.
32
102 – Arquitetura de Computadores | Unidade 04
14
4 - ESCALONAMENTO (SCHEDULING)
A taxonomia proposta por Casavant (Casavant & Kuhl, 1988) é a mais abrangente e baseia-se nos tipos
de informações usadas, onde as tarefas serão alocadas, e na forma como serão efetuadas as tomadas de
decisão (centralizadas ou distribuídas) e a obtenção de informações. A classificação hierárquica é
dividida em escalonamento local e global.
33
102 – Arquitetura de Computadores | Unidade 04
15
No escalonamento local, os períodos de tempo de utilização de um único host são chamados de time-
slices e são atribuídos aos processos em execução por meio da política de compartilhamento de tempo
(time-sharing) (TANEMBAUM, 2001).
O escalonamento global é a atividade que determina para qual o elemento o processo será alocado e
executado, podendo ser estático, onde a atribuição do processo é feita antes da execução do programa,
ou dinâmico, onde há a redistribuição de processos entre os elementos de processamento durante a
execução do programa, balanceando a carga (load balancing).
As decisões relativas ao balanceamento de carga podem ser feitas de forma centralizada, distribuída ou
de uma combinação dessas abordagens.
34
102 – Arquitetura de Computadores | Unidade 04
Centralizada
Na forma centralizada (não distribuída), estabelece-se que um único elemento de processamento
recebe as informações de carga, sendo responsável pelo escalonamento em todo o sistema.
Distribuída
Na forma distribuída, cada elemento de processamento tem autonomia para estabelecer sob que
condição ocorre a transferência de um processo.
Combinação
O processo de escalonamento pode ser feito de forma cooperativa, considerando os outros
processadores do sistema, ou não cooperativa (independente).
16
5 - DEPENDABILIDADE
17
35
102 – Arquitetura de Computadores | Unidade 04
18
Meios
Prevenção de falhas
19
Tolerância a falhas
a) Mascaramento: empregado para encobrir ou ocultar as falhas, porém sem apresentar defeito, é a
36
102 – Arquitetura de Computadores | Unidade 04
Há também duas formas intermediárias de tolerância as falhas: o defeito seguro, que garante o estado
seguro do sistema, mas nada diz sobre o seu estado operacional; e, tolerância a falhas sem
mascaramento, onde o sistema permanecerá operacional, mesmo que ingresse num estado inseguro.
a) estrutura;
b) hardware e software;
c) informação;
d) tempo.
Estrutura
Técnica conhecida como N-version programming, que considera duas ou mais versões de um só
algoritmo;
Hardware e software
Replicação de partes componentes de um sistema, ou até mesmo o sistema como um todo, sendo para
alguns a única forma capaz de permitir a tolerância de falhas permanentes;
Informação
Há técnicas que utilizam os códigos de paridade onde a redundância na informação pode ser suficiente;
Tempo
São métodos caracterizados pela repetição da mesma atividade uma ou mais vezes, visto que a causa
do problema é de natureza atemporal. É mais utilizada na detecção de erros que resultem da
ocorrência de falhas transientes.
20
Para tornar um sistema tolerante a falhas há a necessidade do emprego de pelo menos uma das formas
de redundância, sendo que o ponto de partida é a detecção de erros.
Como os erros são uma propriedade do estado do sistema e há testes que podem ser executados para
sua detecção, que devem atender a três propriedades, um tanto difíceis de serem satisfeitas: basear-se
somente nas especificações do sistema, ser completo e correto, possuir independência do sistema com
relação à ocorrência de falhas para evitar erros nos testes.
37
102 – Arquitetura de Computadores | Unidade 04
Outro passo é a recuperação do sistema, cujo objetivo é restaurá-lo a um estado onde não haja erros
detectados e nem falhas ativadas, gerando novos erros. Pode-se realizá-la tanto pelo tratamento dos
erros, quanto das falhas.
O tratamento dos erros (error handling) pode ser efetuado através de:
21
O tratamento de falhas (fault handling) objetiva impedir que falhas identificadas sejam ativadas
novamente e seu tratamento se dá em quatro etapas:
Remoção de falhas
38
102 – Arquitetura de Computadores | Unidade 04
origens das falhas são detectadas; e a correção, em quer as falhas são corrigidas. É importante avaliar se
a técnica implementada será eficiente e há um mecanismo de injeção de falhas (fault injection) que
introduz falhas controladas no sistema para avaliar o comportamento da técnica empregada, sob tais
condições. A remoção de falhas é realizada normalmente por meio de atividades de manutenção
corretiva ou preventiva.
22
Previsão de Falhas
A técnica de previsão de falhas usa avaliação do comportamento do sistema com relação à ocorrência
ou à ativação de falhas e possui dois aspectos:
Ameaças são aspectos que podem ameaçar a dependabilidade de um sistema distribuído e é necessária
a especificação do tipo de ameaça apresentada, por meio da identificação mais precisa de falhas, erros e
defeitos. Há uma relação de dependência entre falhas, erros e defeitos chamada de patologia da falha.
23
A falha é aquilo que ocasiona o erro, provocando no sistema uma transição de estado não planejada,
levando o sistema para o lado do erro.
39
102 – Arquitetura de Computadores | Unidade 04
Quando a falha não apresenta erros é chamada de falha latente, quando produz um erro é chamada de
falha ativa. A latência de falhas é o tempo entre o surgimento da falha e sua ativação.
• falhas de projeto - que podem ter sido geradas a especificações erradas ou incompletas;
• falhas de interação - originadas de ações inadequadas do operador durante a operação e
manutenção;
• falhas físicas - resultantes do envelhecimento dos recursos computacionais existentes, seja por
duração, valor ou extensão.
Um erro é a manifestação da falha, fazendo que o sistema não atue de acordo com sua especificação,
ou seja, é parte de um estado errôneo que constitui uma diferença de um estado válido.
24
Defeito é um erro existente no sistema que alcança a interface do serviço e altera o seu resultado
esperado, ou seja, é um estado indesejado do sistema que pode resultar em um defeito.
A latência de erro é o tempo entre o surgimento de um erro e a manifestação do defeito e sua duração
depende das circunstâncias e do sistema computacional.
Há modos de defeitos (failure modes) ou modelos de defeitos (failure models) que são usados para
classificar os defeitos, em que os parâmetros mais utilizados são o domínio, a percepção pelos usuários
e as consequências no ambiente.
40
102 – Arquitetura de Computadores | Unidade 04
25
RESUMO
Durante o estudo deste módulo você teve a oportunidade de compreender que há inúmeras
possibilidades na arquitetura dos computadores com a finalidade de uniformizar as características dos
sistemas computacionais, porém a taxonomia de Flynn é a mais aceita na área. Vimos que as
arquiteturas ccNUMA são complexas e suas implementações dependem das soluções de cada fabricante
para a sincronização de acesso e consistência à memória, permitindo um melhor desempenho da
máquina. É um tipo de arquitetura fracamente acoplada na qual os computadores são classificados
como multicomputadores e as máquinas possuem configuração massivamente paralelas (MPP),
podendo ser compostas por um conjunto de multiprocessadores, que representam um nó de uma
configuração do tipo multicomputador, com cache e memória local, e há milhares de nós interligados
por dispositivos de interconexão de alta velocidade.
Você estucou que nossa sociedade moderna tem uma grande dependência de sistemas computacionais.
Esta dependência é chamada de dependabilidade. Este conceito diz respeito à capacidade que os
sistemas têm em prestar um serviço no qual se pode justificadamente confiar. Através dos meios da
classificação da dependabilidade consegue-se trabalhar na prevenção, tolerância, remoção ou previsão
das falhas. Assim, podem-se tratar as falhas que geram erros e propagam defeitos. Ao final do módulo,
vimos que, em sistemas de alto desempenho, a “tolerância a falhas” é a capacidade de um sistema
apresentar um comportamento muito bem definido na ocorrência de falhas ativas, utilizando-se de
técnicas que aumentem a segurança e a operacionalidade do sistema.
41
102 – Arquitetura de Computadores | Unidade 04
Durante o estudo deste módulo teremos a oportunidade de entender por que os sistemas
computacionais necessitam de redes de comunicação cada vez mais eficazes, mas que, apesar do
aumento da disponibilidade destas redes, o desempenho das aplicações não tem evoluído na mesma
proporção, visto que são utilizados dispositivos de redes inadequados nos novos projetos de distribuição
de recursos e também de pacotes de softwares.
No modelo tradicional, o sistema operacional acessa uma interface de rede (network interface card -
NIC), podendo ser uma rede local (LAN) ou geograficamente distribuída (WAN), para a realização de uma
aplicação, sendo que a rede é a responsável pelo envio das mensagens para a NIC do computador onde
está a aplicação destinatária, fazendo o caminho inverso.
42
102 – Arquitetura de Computadores | Unidade 04
02
03
Com a oferta maior de banda larga, os custos operacionais têm diminuído e novas aplicações se
beneficiam dessa situação, como:
43
102 – Arquitetura de Computadores | Unidade 04
Tudo o que requer serviços diferenciados, qualidade de serviço, segurança e gerenciamento, necessita
de uma maior quantidade de processamento e consequentemente interfaces de rede que atendam a
essas demandas específicas e não há um desenvolvimento exponencial crescente dos processadores,
sinalizando que se deve buscar uma alternativa para as aplicações que utilizam a rede, minimizando o
baixo rendimento de processador central dos computadores.
Para o processamento de aplicações em rede, normalmente são utilizados os dispositivos FPGA (field
programmable gate arrays) para processamento de baixo nível (hardware) e GPP para os de alto nível
com aplicações mais complexas.
44
102 – Arquitetura de Computadores | Unidade 04
04
3 - PROCESSADORES DE REDE
05
Na 3ª geração de sistemas de rede ou new generation network (NGN), quando uma aplicação envia
mensagens para outra de forma remota, o processo é efetuado diretamente através de uma chamada
de solicitação de transmissão para o processador de rede (NP) e há um processamento na placa de
mensagens recebidas e aí há a entrega para a aplicação.
45
102 – Arquitetura de Computadores | Unidade 04
06
As técnicas que tratam da comunicação das aplicações nas redes podem ser classificadas como:
• ASIC (Application Specific Integrated Circuit): promove um alto desempenho de hardware, porém sem
maior flexibilidade para programação.
• ASIP (Application Specific Instruction Processor): há processador especializado para um domínio
específico de aplicação, gerando um bom balanceamento entre flexibilidade de programação e
desempenho;
• Co-processor – é utilizada para melhorar uma determinada função de uma aplicação, como aplicações
gráficas ou de visualização, porém não há muita flexibilidade de programação;
• FPGA (Field programmable gate arrays): é um “dispositivo semiconductor que pode ser programado
pelo usuário final para execução de uma grande variedade de funções lógicas” (Dantas, 2002). É
programado em nível de portas e pode ser reconfigurado quando da mudança de requisitos de uma
aplicação.
• GPP (General Purpose Processor): possui grande flexibilidade de programação e pequeno
desempenho, por ser um processador de uso geral.
De todas as opções disponíveis, a melhor relação entre flexibilidade e desempenho é na tecnologia ASIP,
visto que permite boa utilização de software aliada ao desempenho de hardware, resultando numa
adaptação mais fácil aos padrões de rede e suas aplicações. Além disso, há uma excelente relação de
custo/benefício entre o desenvolvimento de software e a implementação em hardware.
07
46
102 – Arquitetura de Computadores | Unidade 04
47
102 – Arquitetura de Computadores | Unidade 04
48
102 – Arquitetura de Computadores | Unidade 04
08
Os processadores de rede estão cada vez mais especializados e os dispositivos usados são classificados
em três categorias: núcleo, borda e acesso.
• Núcleo: usado em aplicações que requerem um alto desempenho com menor flexibilidade de
programação, como os roteadores que transferem grandes quantidades de dados sem necessitar de
flexibilidade de programação;
49
102 – Arquitetura de Computadores | Unidade 04
09
• Borda: como as aplicações executadas têm características de programação do nível do usuário final, os
equipamentos requerem certa flexibilidade de programação, com um desempenho menor do que no
tipo núcleo. Os dispositivos de borda tendem à utilização de processadores de rede ASIP;
10
• Acesso: seu foco está no provimento de acesso às redes, através de agregação do tráfego,
encaminhando para uma rede estruturada convencional. Os dispositivos de acesso têm um baixo
desempenho em relação aos demais tipos, porém são mais flexíveis para atender diferentes tipos de
aplicativos, como celulares, tablets e palmtops.
50
102 – Arquitetura de Computadores | Unidade 04
11
5 - DISPOSITIVOS DE INTERCONEXÃO
12
51
102 – Arquitetura de Computadores | Unidade 04
a) Programação de troca de mensagem entre processadores no nível de placa de rede, que possibilita a
criação de configurações de multicomputadores.
b) Abstração de uma memória virtual única (multiprocessador) entre todos os computadores
interligados ao dispositivo.
52
102 – Arquitetura de Computadores | Unidade 04
13
6 - PROTOCOLOS LEVES
Esta abordagem enfoca não só a maximização da utilização da infraestrutura das redes, mas também o
desempenho computacional de aplicações de diferentes naturezas em ambientes distribuídos de redes.
Atualmente, há a utilização de maiores larguras de bandas (band-width) com menor retardo (latency) e
o universo de equipamentos que estão sendo conectados às redes causam impacto nas arquiteturas de
protocolos de redes.
O protocolo da camada da rede IP (internet protocol) é o padrão do ambiente internet, assim como os
protocolos de transporte, TCP (transmission Control Protocol) e UDP (user datagram protocol), que
representam o modo como as aplicações podem solicitar serviços orientados e não orientados à
conexão. Foram projetados num período onde as redes físicas de enlace tinham uma baixa qualidade,
ou seja, com alta frequência de erros nas redes de comunicação devido às condições físicas do meio,
sendo protocolos bastante robustos, e quando utilizados em uma infraestrutura mais adequada de
transmissão apresenta algumas deficiências.
14
Há alguns mecanismos que auxiliam no aproveitamento do uso de rede, porém muitas ferramentas
foram projetadas para redes de comunicação e não para redes locais com altas disponibilidades de
largura de banda e baixo retardo, assim sendo, necessita-se de uma mudança para protocolos mais leves
(lightweight protocols) e mais eficientes, para que a troca de pacotes seja otimizada.
53
102 – Arquitetura de Computadores | Unidade 04
Não há uma correlação direta entre a infraestrutura e o desempenho das aplicações nas redes e os
protocolos de transporte são inadequados para uma evolução das configurações atuais para ambientes
de alto desempenho.
15
54
102 – Arquitetura de Computadores | Unidade 04
55
102 – Arquitetura de Computadores | Unidade 04
16
Dentre os mecanismos do protocolo de transporte, está a função de gerência de conexão, que estuda o
início e término de uma associação de transporte, analisando os aspectos de:
17
RESUMO
Durante nosso estudo tivemos a oportunidade de compreender que houve um incremento na oferta de
largura da banda nos meios físicos de transmissão de concessionárias de telecomunicações e energia
56
102 – Arquitetura de Computadores | Unidade 04
elétrica. Sendo assim, urge fazer com que as aplicações sejam executadas com melhor desempenho,
utilizando um maior volume de dados e fazendo uso de interfaces de rede, sistemas de interconexões de
alta velocidade e protocolos mais leves para que a taxa efetiva de transmissão seja maximizada.
Você compreendeu que tudo o que requer serviços diferenciados, qualidade de serviço, segurança e
gerenciamento, necessita de uma maior quantidade de processamento e consequentemente interfaces
de rede que atendam a essas demandas específicas e não há um desenvolvimento exponencial
crescente dos processadores, sinalizando que se deve buscar uma alternativa para as aplicações que
utilizam a rede, minimizando o baixo rendimento do processador central dos computadores.
Entre todas as opções disponíveis, a melhor relação entre flexibilidade e desempenho é na tecnologia
ASIP, visto que permite boa utilização de software aliada ao desempenho de hardware, resultando
numa adaptação mais fácil aos padrões de rede e suas aplicações. Além disso, há uma excelente relação
de custo/benefício entre o desenvolvimento de software e a implementação em hardware. Esta
abordagem enfoca não só a maximização da utilização da infraestrutura das redes, mas também no
desempenho computacional de aplicações de diferentes naturezas em ambientes distribuídos de redes.
57