Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Apost arquitetura, Notas de estudo de Cultura

- - -

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 03/12/2008

lorena-martins-costa-10
lorena-martins-costa-10 🇧🇷

5

(2)

5 documentos

1 / 92

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
DEPARTAMENTO DE ENGENHARIA DE COMPUTAÇÃO E AUTOMAÇÃO INDUSTRIAL
FACULDADE DE ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO
UNIVERSIDADE ESTADUAL DE CAMPINAS
Organização de Computadores
(EA960)
Ivan Luiz Marques Ricarte
http://www.dca.fee.unicamp.br/courses/EA960/
1999
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c

Pré-visualização parcial do texto

Baixe Apost arquitetura e outras Notas de estudo em PDF para Cultura, somente na Docsity!

D EPARTAMENTO DE E NGENHARIA DE C OMPUTAÇÃO E A UTOMAÇÃO I NDUSTRIAL FACULDADE DE E NGENHARIA E LÉTRICA E DE C OMPUTAÇÃO U NIVERSIDADE E STADUAL DE C AMPINAS

Organização de Computadores

(EA960)

Ivan Luiz Marques Ricarte

http://www.dca.fee.unicamp.br/courses/EA960/

1999

Ementa detalhada

Introdução à organização de computadores: Evolução de sistemas computacionais.

Classificação de arquiteturas: Estruturas de computadores. Máquinas de von Neumann. Medidas de avaliação de desempenho. Arquiteturas de alto desempenho.

Sistemas de memória hierárquica: Conceito de hierarquia de memória. Bandwidth , esquemas de endereçamento, memória virtual, paginação. Memória cache.

Sub-sistemas de entrada e saída: características, canais, processadores de E/S.

Princípios de pipelining: pipelines de instrução, pipelines aritméticos, projetos de sistemas pipeli- ne.

Processadores vetoriais: características, exemplos.

Processadores matriciais: características, malhas de comunicação, algoritmos. Processadores as- sociativos.

Multiprocessadores: sistemas fortemente acoplados e fracamente acoplados, exemplos; influências no sistema operacional e em linguagens de programação; algoritmos.

Arquiteturas alternativas: Arquitetura VLSI e Computadores dataflow.

Referências

  1. Livro-texto: Advanced Computer Architecture: Parallelism, Scalability, Programmability Kai Hwang McGraw-Hill 1993, ISBN 0-07-031622-
  2. Computer Architecture: Design and Performance, 2nd. ed. Barry Wilkinson Prentice Hall 1996, ISBN 0-13-518200-X
  3. High-Performance Computer Architecture, 3rd. ed. Harold S. Stone Addison Wesley 1993, ISBN 0-201-52688-

Sumário

Capítulo 1

Introdução à organização de

computadores

O objetivo desse capítulo é apresentar os princípios que regem a organização de computadores. Para tanto, apresenta-se inicialmente alguns aspectos relativos à evolução de sistemas computacionais que tiveram impacto na organização atual de computadores. A motivação para criar máquinas de computação sempre foi, essencialmente, melhorar a veloci- dade de cálculos, uma vez que a velocidade de um “computador humano” é limitada. Adicionalmen- te, buscava-se também reduzir fontes de erros, tais como distrações, descuidos e cansaço.

1.1 Primórdios

A pré-história das máquinas computacionais foi marcada pela criação das máquinas de calcu- lar, tais como a Pascalene (Pascal, 1642–43), o Stepped Reckoner (Leibniz, 1674) e o Engenho a diferenças (Babbage, 1822–1842) [4, 9]. O marco tecnológico que precedeu esta era foi o desen- volvimento da engrenagem para cálculos com mecanismo para detecção de carry (W. Schickard,

  1. [2]. A organização dessas máquinas, de forma geral, assimilava-se ao diagrama apresentado na Figu- ra 1.1.

Entrada/Operando

Somador/Acumulador

Figura 1.1: Organização das máquinas de calcular.

A Pascalene era capaz de realizar adição em cinco dígitos, com engrenagens em dois conjuntos de seis elementos e mecanismo de carry diferenciado daquele de Schickard — aparentemente Blai-

I. L. M. Ricarte EA960: Organização de Computadores

se Pascal (1623–1662) não conhecia esse outro mecanismo quando propôs sua máquina. Diversas cópias da máquina foram feitas, algumas chegando a operar com oito dígitos [2]. O Stepped Reckoner , de Gottfried Wilhelm von Leibniz (1646–1716), apresentava uma engre- nagem cilíndrica em passos, usando a Pascalene como componente. Integrava ainda mecanismos para realizar multiplicação, com operandos de cinco e doze dígitos e resultados de até 16 dígitos. A operação requeria a intervenção do usuário para cada dígito do multiplicador, assim como para a operação do mecanismo de carry , o qual nem sempre apresentava resultados confiáveis [2]. O Difference Engine foi concebido inicialmente por J. H. Mueller em 1786 como uma calcula- dora de propósito geral aplicável a qualquer função que pudesse ser aproximada por um polinômio dado um intervalo de interesse. Posteriormente, Charles Babbage (1792–1871), em Londres, reinven- tou uma máquina baseada no mesmo princípio. A máquina realizava uma única operação aritmética (adição) e implementava um único algoritmo (método das diferenças finitas por polinômios), inte- grando ainda um dispositivo para impressão. A motivação de Babbage em desenvolver o engenho a diferenças foi um projeto do governo francês iniciado em 1794, coordenado pelo Barão Gaspard de Prony para calcular manualmente di- versas tabelas matemáticas. Este trabalho, que incluiu o cálculo de tabela de logaritmos para números naturais entre 1 e 200.000 com 19 casas decimais e o cálculo de tabelas trigonométricas, consumiu cerca de dez anos empregando entre 70 e 100 pessoas, tendo gerado 17 volumes manuscritos de grande porte. Um protótipo de seis dígitos operando com diferenças de segunda ordem (permitindo a tabulação de polinômios quadráticos) foi apresentado em 1832, mas o projeto da máquina completa previa a operação com diferenças de sexta ordem com números de cerca de 20 dígitos. Apesar de consumir cerca de 17000 libras do governo britânico no projeto, Babbage nunca con- cluiu efetivamente o engenho de diferenças, concentrando esforços em outro projeto (o engenho analítico ). O projeto foi oficialmente cancelado pelo governo britânico em 1842. O engenho de dife- renças foi efetivamente construído por outros em versões mais modestas (Scheutz, 1837–1853). Um protótipo operacional do engenho de diferenças foi construído em 1991 (bicentenário do nascimento de Babbage), no Museu da Ciência em Kensington (Inglaterra), usando tecnologia adequada à época de Babbage [2].

1.2 Primeiros Computadores

Os computadores mecânicos utilizam a mesma tecnologia das máquinas de calcular (engrena- gens). Os marcos tecnológicos que precederam esta era da computação foram a introdução de se- quência de cartões perfurados para controle de tear (J.-M. Jacquard, 1801) e a concepção da álgebra booleana (G. Boole, 1854). O Engenho Analítico (Inglaterra, 1834–1871) de Charles Babbage foi o que se pode denominar de o primeiro computador (ou algo mais próximo de uma calculadora programável), não tendo sido efetivamente construído pela ambição excessiva do projeto e falta de interesse de possíveis clientes. Suas características básicas (Figura 1.2):

 capaz de computar qualquer operação matemática

 unidade para quatro operações básicas (Mill) , com dois acumuladores principais e alguns au- xiliares;

c 1999 FEEC/UNICAMP 2

I. L. M. Ricarte EA960: Organização de Computadores

6 segundos, ou um logaritmo ou função trigonométrica em pouco mais de um minuto. As operações eram lidas de uma fitas perfurada (cerca de 7,5cm de largura) comum; o conceito de laço para ope- rações repetitivas era suportando, bastando para isso colar os finais da fita perfurada. Dados eram lidos de fitas, cartões ou registradores com constantes. O Mark I era um equivalente eletromecânico do Engenho Analítico, tendo também se tornado conhecido como o Automatic Sequence Controlled Calculator (IBM ASCC). O orçamento, inicialmente previsto para cerca de US$15K, ultrapassou US$100K, envolvendo grande esforço da equipe de engenharia da IBM. Posteriormente, Aiken cau- sou fúria a Watson (presidente da IBM) querendo assumir só o mérito no desenvolvimento de Mark I, o que motivou Watson a desenvolver máquinas que suplantassem estes esforços iniciais. O Mark III (1951) foi marcado pelo uso de memórias a tambor, um para instruções (capacidade para cerca de 4000 instruções), outros para dados (350 palavras de 16 bits no tambor principal, cerca de 4000 palavras nos tambores secundários) [2].

1.3 Os computadores eletrônicos

Marcos tecnológicos que precederam a era dos computadores eletrônicos foram o desenvolvimen- to da válvula triodo (L. de Forest, 1906) como uma extensão da válvula diodo (J. Fleming, 1904); e o desenvolvimento de circuitos binários baseados em álgebra booleana (G. Stibitz, 1937). John Vincent Atanasoff e Clifford Berry, de Iowa State University , desenvolveram uma calcula- dora eletrônica dedicada para a resolução de sistemas de equações lineares simultâneas, denominado ABC (Atanasoff-Berry Computer). A máquina operava a 60 Hz. O uso de capacitores como disposi- tivos de memória nessa máquina, 60 palavras de 50 bits requerendo refreshing , antecipou a utilização de memórias dinâmicas. A memória secundária usava cartões perfurados, movidos pelo usuário. O processo de perfurar os cartões, por calor, apresentava uma alta taxa de erros, nunca inferior a 0,001% [2]. Atualmente (desde 1973), Atanasoff é reconhecido como o criador do computador mo- derno. Alan Turing, na Inglaterra, fez a especificação de computador mecânico que se tornou operacional em 1940. Um outro projeto, Colossus , foi desenvolvido por T. Flowers e M.H.A. Newman em 1943 com participação de Turing. Colossus foi o primeiro computador completamente eletrônico, tendo sido classificado pelos militares britânicos como segredo militar. Por este motivo, detalhes e características deste projeto permaneceram inacessíveis por cerca de 30 anos, sendo liberados apenas recentemente. Maior impacto teve o Projeto ENIAC (Electronic Numerator, Integrator, Analyzer, and Com- puter) , desenvolvido na Moore School of Electrical Engineering (University of Pennsylvania) entre 1943 e 1946. Esse computador, desenvolvido por John W. Mauchly (1907-80) e J. Presper Eckert (1919- ) e equipe, pesava cerca de 30 toneladas e apresentava um consumo de 140 KW. Utilizava aritmética decimal, com memória de 20 acumuladores de 10 dígitos, cada dígito usando 10 bits para sua representação, armazenados em flip-flops (duas válvulas por bit). A programação era manual, através de 6000 chaves e plugs. A velocidade de operação era cerca de 1000 vezes mais rápida que a do Mark I. Havia unidades separadas para a execução de multiplicações (cerca de 3 ms) e para divisão e raiz quadrada. 104 registros podiam ser usados para constantes de 12 dígitos. Dados po- diam ser entrados através de cartões perfurados, que também eram utilizados para saída. A máquina operava a 100 KHz. A patente para esse projeto só foi outorgada em 1964, mas em 1973 foi revogada, pois J. Mauchly

c 1999 FEEC/UNICAMP 4

I. L. M. Ricarte EA960: Organização de Computadores

reconhecidamente teve contato com o trabalho de Atanasoff, durante uma visita a Iowa. J.P. Eckert era o engenheiro eletrônico que realizava as concepções de J. Mauchly. No projeto ENIAC, realizado através de um convênio militar com o US Army’s Ballistics Research Lab, ele teve papel fundamental em tornar operacional o conjunto de 18000 válvulas, 70000 resistores, 10000 capacitores, 6000 chaves e 1500 relés. Em Fevereiro de 1946, o ENIAC foi revelado para o público, e no verão daquele mesmo ano foi oferecido o curso Theory and Techniques for Design of Electronic Computers , com aulas por Eckert, Mauchly, Stibitz, von Neumann, e Aiken, entre outros. Vários novos projetos surgiram a partir desse curso.

1.4 O conceito de programa armazenado

Os computadores eletrônicos, apesar de representar grande avanço em relação a seus similares eletromecânicos, apresentavam duas grandes limitações: baixa capacidade de memória e longo tempo de programação. A programação do ENIAC, por exemplo, exigia dias de trabalho, uma vez que várias modificações eram necessárias no painel de controle. O Mark I era fácil de “reprogramar” (troca de fita), porém velocidade de leitura de instruções de unidades mecânicas não era adequada à velocidade de processamento dos computadores eletrônicos. O marco para quebrar essa barreira foi a concepção do conceito de programa armazenado, asso- ciada ao projeto EDVAC (Eletronic Discrete Variable Automatic Computer) , um sucessor do ENIAC com “ampla” capacidade de memória e que utilizava aritmética binária (Figura 1.3). A memória do EDVAC era composta por 1K palavras na memória principal (linha de atraso em mercúrio, tecnolo- gia usada em outro projeto, o EDSAC) e 20K palavras de memória secundária (fio magnético). A tecnologia de armazenagem em linha de atraso em mercúrio, embora ampliasse a capacidade de ar- mazenamento em relação aos flip-flops, era lenta, uma vez que convertia os sinais em som, que eram propagados pelo fluido. Entretanto, a sua velocidade de acesso era adequada aos processadores de então. A construção do EDVAC foi concluída em 1952, com cerca de 4000 válvulas, 10000 diodos a cristal, e 1024 palavras de 44 bits em memória ultrasônica; a sua velocidade de relógio era de 1 MHz [2].

Unidade de Controle

Unidade Aritmética

Memória Entrada (^) (Programas e dados) Saída

instruções dados

Figura 1.3: Organização do EDVAC.

Atribui-se normalmente a autoria do conceito de programa armazenado a von Neumann, exclu- sivamente. O motivo é que von Neumann escreveu um relatório de 101 páginas sobre o projeto EDVAC, A First Draft of a Report on the EDVAC , em junho de 1945, onde o conceito é formalmente

c 1999 FEEC/UNICAMP 5

I. L. M. Ricarte EA960: Organização de Computadores

prático. Operava com uma taxa de relógio de 500 KHz. A entrada e saída de dados ocorria através de fita de papel. O primeiro programa armazenado foi imprimir quadrados dos primeiros números inteiros. O BINAC foi projetado como um primeiro passo em direção aos computadores de bordo. Era um sistema com processadores duais (redundantes), com 700 válvulas cada e memória de 512 palavras de 31 bits. Já o UNIVAC tinha uma memória de 1000 palavras de 12 dígitos, com uma memória se- cundária de fitas magnéticas com capacidade de 128 caracteres por polegada. A primeira unidade do UNIVAC foi desenvolvida sob encomenda do Census Bureau norte-americano. O UNIVAC dominou o mercado de computadores na primeira metade dos anos 1950 [2]. O Whirlwind foi desenvolvido por Forrester e equipe para o US Navy’s Office of Research and Inventions. A origem do projeto estava baseada em um simulador de vôo universal, com velocidade de operação adequada a aplicações de tempo real (500K adições ou 50K multiplicações por segun- do). O projeto foi iniciado em setembro de 1943, tornando-se o computador operacional em 1951. Introduziu a tecnologia de memória a núcleos de ferrite (tempo de acesso de 9 s), em 1953, em substituição à memória CRT original de 2048 palavras de 16 bits. O custo total do projeto superou vários milhões de dólares. O IBM 701 estava disponível com memórias CRT de 2048 ou 4096 palavras de 36 bits. O IBM 702 Electronic Data Processing Machine estava voltado para aplicações comerciais (ex- Tape Processing Machine ), tendo sido anunciado em setembro de 1953 e entregue no início de 1955.

1.5 Em direção aos computadores modernos

Ao mesmo tempo em que a tecnologia computacional começava a caminhar, outros desenvol- vimentos tecnológicos que iriam afetar o futuro da computação também surgiam. Alguns marcos tecnológicos dignos de nota incluem a invenção do transistor, desenvolvido nos Bell Labs (J. Bar- deen, W. Brattain e W. Shockley, 1947), com produção pela Texas Instruments a partir de 1954; e posteriormente o desenvolvimento de circuitos integrados (J. Bilby, Texas Instruments, e R. Noyce, Fairchild Semiconductors, 1958). Os primeiros computadores transistorizados incluem:

 protótipos: TX-0 (MIT, 1956) e TX-2;

 DEC PDP-1 (1960), primeiro computador comercial com teclado e monitor de vídeo;

 IBM 7090 e 7094, versões transistorizadas do computador IBM709.

A série IBM7000 marcou a entrada da IBM no mercado de computadores transistorizados. Uma das características inovadoras nesses produtos era a utilização de processadores de entrada e saída (I/O Processors). As características genéricas destes primeiros computadores transistorizados incluiam memórias a núcleo de ferrite e tambores magnéticos, linguagens de programação de alto nível e o conceito de sistemas de computadores. O desenvolvimento de várias dessas máquinas modernas incluiam contribuições à organização do sistema que hoje estão presentes em muitos computadores. Memória virtual foi introduzida no siste- ma Atlas (Inglaterra, 1962); o conceito de uma família de sistemas com periféricos compatíveis foi introduzido com o IBM System360 (1964); e o PDP-8 (1965) foi o minicomputador qu introduziu o

c 1999 FEEC/UNICAMP 7

I. L. M. Ricarte EA960: Organização de Computadores

barramento único compartilhado, além de utilizar módulos transistorizados. Em direção ao processa- mento de alto desempenho, o CDC6600 (1964) continha diversas unidades funcionais e IOPs; o CDC STAR-100 (String Array Computer) fazia uso de pipelines e o ILLIAC-IV era um multiprocessador matricial com 64 unidades de processamento. Os anos seguintes de desenvolvimento de sistemas computacionais foram marcados principal- mente pela utilização de componentes com grau cada vez maior de integração, o que determinou uma das principais questões em relação a arquiteturas de computadores: dentre as funções alocadas a um sistema computacional, o que é alocado ao hardware e o que é alocado ao software? Assim, a década de 1970 foi marcada pela utilização de circuitos integrados em larga escala, como exemplificado pelo Fairchild 3800 (ALU de 8 bits, 1967); pelos microprocessadores Intel 4004 (T. Hoff, S. Mazor e F. Fagin, 1971), 8008 (1972) e 8080 (1973); pelo minicomputador DEC PDP 11/45 (1972), com extenso uso de circuitos em chips ; pelos dispositivos de memória dinâmica de 1 Kbit (Intel 1103, 1971) e 4 Kbit (1974); pelo DEC VAX 11/780 (1978), um minicomputador de 32 bits; e pelos microprocessadores Intel 8086 (1978), de 16 bits, e Motorola 68000 (1979), de 16/32 bits. Algumas funções específicas, como unidades de gerência de memória (MMU) e co- processadores aritméticos, passaram também a ser implementadas em hardware. Na computação de alto desempenho, algumas contribuições dessa década incluem o computador 801 (J. Cocke; IBM, 1975), com arquitetura RISC, e o Cray-1 (S. Cray, 1976), com arquitetura vetorial. Na década de 1980 houve principalmente a continuidade nesse processo iniciado na década an- terior, com uma exploração ainda maior da capacidade de integração de circuitos. Surgiram disposi- tivos de memória dinâmica com maior capacidade: 64 Kbits (1981), 256 Kbit (NEC, 1984), 1 Mbit (IBM, 1984), 4 Mbit e 16 Mbit (1987); e microprocessadores mais poderosos: MC68020 (Motorola, 1984), 80286 (Intel, 1984), 80386 (Intel, 1985), MC68030 (Motorola, 1987), 80486 (Intel, 1989). Os sistemas de alto desempenho passaram a explorar de forma mais intensa o paralelismo, como os Cray X-MP (1982) e Cray-2 (1985); o computador Connection Machine CM-2 (1985), da empresa Thinking Machines; os microprocessadores Transputers T-414 (1985) e T-800, da empresa Inmos. Houve também um investimento em arquiteturas RISC, como marcado pelo processador Motorola 88000 (1988). Os anos 1990 foram marcados pela disponibilização de dispositivos com altíssimo grau de in- tegração, com microprocessadores com grande poder de processamento, tais como iPSC/860 (Intel, 1990), 68040 (Motorola, 1990), Alpha RISC/64 bits (DEC, 1992), Pentium (Intel, 1993). Com- putadores de alto desempenho surgiram, tais como o Cray Y-MP C90 (1991, 16 processadores, 16 GFlops) e o Thinking Machines CM-5; entretanto, o alto custo de tais sistemas podem ter decretado seu fim. Atualmente, multiprocessamento é utilizado em escalas modestas em estações de trabalho e servidores. O desenvolvimento de processadores ópticos ficou como uma promessa não cumprida nessa década, após o desenvolvimento de um protótipo no Bell Labs (1990).

c 1999 FEEC/UNICAMP 8

I. L. M. Ricarte EA960: Organização de Computadores

São características das máquinas von Neumann a utilização do conceito de programa armazena- do, a execução seqüencial de instruções e a existência de um caminho único entre memória e unidade de controle (Figura 2.1).

Sistema de E/S

Memória principal

CPU Registradores

PC

Unidade de controle

ALU

dados/ endereço instruções

Figura 2.1: Arquitetura de máquinas von Neumann.

Durante sua operação, a execução de um programa é uma seqüência de ciclos de máquina von Neumann , compostos por:

  1. Busca da instrução (fetch) : transfere instrução da posição de memória apontada por PC para a CPU
  2. Execução da instrução: a unidade de controle decodifica a instrução e gerencia os passos para sua execução pela ALU Uma variante do modelo básico de máquinas von Neumann é denominado de máquinas Harvard, onde há vias separadas para dados e instruções entre memória principal e CPU (Figura 2.2). A origem do termo vem dos computadores Mark I a Mark IV, desenvolvidos em Harvard, com memórias de dados e instruções separadas.

2.1.2 Máquinas não-von Neumann

As máquinas que não se enquadram na definição de máquinas von Neumann são denominadas máquinas não-von Neumann. Essa categoria é ampla, incluindo sistemas computacionais tais como:

Máquinas paralelas: várias unidades de processamento executando programas de forma cooperati- va, com controle centralizado ou não;

Máquinas de fluxo de dados: não executam instruções de um programa, mas realizam operações de acordo com a disponibilidade dos dados envolvidos;

c 1999 FEEC/UNICAMP 10

I. L. M. Ricarte EA960: Organização de Computadores

Sistema de E/S

endereçoinstrução

Memória principal

CPU Registradores

PC

Unidade de controle

ALU

instrução endereçodados

dados

Figura 2.2: Máquina Harvard

Redes neurais artificiais: também não executam instruções de um programa, trabalhando com um modelo onde resultados são gerados a partir de respostas a estímulos de entrada; e

Processadores sistólicos (VLSI): processamento ocorre pela passagem de dados por arranjo de cé- lulas de processamento executando operações básicas, organizadas de forma a gerar o resultado desejado.

2.2 Avaliação de arquiteturas

Como há um grande número de alternativas para a organização de um computador, é preciso ter mecanismos que permitam realizar a avaliação de cada arquitetura. Algumas medidas básicas de avaliação são necessárias para tanto. O desempenho está usualmente associado à velocidade de execução de instruções básicas (taxas MIPS e FLOPS) ou à velocidade de execução de programas representativos das aplicações (bench- marks). O custo é geralmente analisado não em valor nominal, mas em termos de parâmetros que influen- ciam no custo final: número de pinos, área de chip, número de chips por sistema. O tamanho de programas e dados em geral expressa a capacidade máxima e a eficiência de ocupação do código gerado. Restrições físicas, tais como peso, volume e consumo de potência, também podem ser conside- radas de acordo com a aplicação em vista. A facilidade de programação também pod ser um item importante, tomando em consideração que linguagens de programação são suportadas e que meca- nismos estão presentes para explorar as características de alto desempenho do sistema. Dificilmente uma medida é considerada isoladamente na avaliação de sistemas. A relação custo- desempenho é uma medida de comparação básica. Outra medida usualmente considerada é a ade- quação de uma arquitetura (de propósito geral ou dedicada) à aplicação-alvo.

c 1999 FEEC/UNICAMP 11

I. L. M. Ricarte EA960: Organização de Computadores

 tempo relativo a uma máquina-referência, algumas vezes expressando aqui os valores em ter- mos de média geométrica.

2.2.2 Como melhorar o desempenho?

Antes de mais nada, é preciso determinar que categoria de aplicação estará sendo atendida pelo sistema computacional sob estudo. É muito difícil fazer comparações utilizando valores que, por si, não expressam muita informação. Considere por exemplo o uso da taxa MIPS como um parâmetro de comparação. O valor dessa taxa é computado pela expressão:

M I P S = instr ciclo

 ciclo s

 10 ^6

Para aumentar o valor dessa taxa, as duas estratégias possíveis são:

  1. reduzir número de instruções para executar tarefa; ou
  2. aumentar o número de instruções executadas por ciclo. O problema é que esse valor pode não comparar adequadamente o desempenho efetivo de duas máquinas sob estudo, pois o conceito de “instrução” pode variar significativamente entre sistemas. Outro aspecto que deve ser considerado também na otimização de uma aplicação em um siste- ma computacional é o Princípio de Amdahl. Segundo esse princípio, o impacto de uma otimização realizada sobre o desempenho global do sistema depende da fração da aplicação que está sendo bene- ficiada pela otimização. Assim, melhorar em 100 vezes o desempenho de 10% do sistema representa uma melhoria global de apenas 11%. Quanto menor for a fração atingida pela otimização, menor será o seu imapcto.

2.3 Arquiteturas de alto desempenho

O grande objetivo das técnicas de melhoria de desempenho é reduzir ineficiência. Algumas formas de atingir essa redução incluem: não suportar funções que não serão utilizadas; reduzir ocio- sidade dos componentes; e definir uma organização adequada para o sistema. Por exemplo, é preciso saber quando é melhor utilizar um processador de alto desempenho ou vários processadores para resolver um dado problema.

2.3.1 Aplicações

Técnicas adotadas em sistemas computacionais de alto desempenho dependem fortemente da aplicação. Aplicações que usualmente requerem o uso de técnicas de alto desempenho envolvem:

 computação numérica

- estruturada - não-estruturada

 aplicações de tempo-real

c 1999 FEEC/UNICAMP 13

I. L. M. Ricarte EA960: Organização de Computadores

 E/S intensiva

 atividades de projetos

 capacidade de inteligência artificial

O programa de computação e comunicação de alto desempenho do governo norte-americano (HPCC) identificou algumas aplicações caracterizadas como Grand Challenge Applications [7], tais como:

Tecnologia de gravação magnética: estudar magnetostática e interações de troca para reduzir ruído em discos de alta densidade

Projeto racional de remédios: desenvolver drogas para curar câncer ou AIDS através do bloqueio da ação do HIV

Transporte civil de alta velocidade: desenvolver jatos supersônicos através de modelos computa- cionais de dinâmica dos fluidos executando em supercomputadores

Combustíveis: projetar melhores modelos de motores através de cálculos de cinética química para revelar os efeitos mecânicos dos fluidos

Modelagem oceânica: simulação em ampla escala das atividades oceânicas e troca de calor com fluxos atmosféricos

Anatomia digital: sistemas computacionais operando em tempo-real no apoio à obtenção e análise de imagens clínicas, tomografias e ressonância magnética

Tecnologia para educação: educação de ciências ou engenharia apoiada por simulações computa- cionais em sistemas interconectadas por redes heterogêneas.

Estas são algumas das aplicações que necessitariam de sistemas computacionais com desempe- nho 3T [7]:

 1 Teraflop de poder computacional

 1 Terabyte de memória principal

 1 Terabyte por segundo de capacidade de transferência de entrada e saída

2.3.2 Desenvolvimento das arquiteturas

O projeto de um sistema com arquitetura de alto desempenho oferece diversas alternativas. Em alguns casos, é possível atingir os resultados esperados através da manipulação do algoritmo para melhor ajustá-lo à organização do sistema. Em outros casos, mudanças na organização básica do sistema podem ser necessárias. Há ainda casos onde organizações alternativas, tais como o uso de paralelismo, podem ser mais adequadas. Durante o processo de definição de arquitetura, algumas questões de interesse são:

 Qual o tempo necessário para executar um conjunto de programas representativo da aplicação?

c 1999 FEEC/UNICAMP 14