Você está na página 1de 18

Universidade Estadual do Piauí – UESPI

Campus de Parnaíba
Curso de Ciência da Computação

Arquitetura e Organização de Computadores

Aula 01 – Introdução a Arquitetura e


Organização de Computadores – AOC

Prof. Francisco Rocha


1

Introdução a AOC
• Computação e camadas de abstração

• A computação é baseada em níveis de abstração.


• Tornam problemas/sistemas complexos em
sistemas mais simples de entender e tratar.
• Cada nível mais interno oferece serviços
aos demais níveis superiores.
– Níveis superiores montam serviços maiores.
• Entre dois níveis adjacentes, existe o que
chamamos de interface.
• Considere um software de aplicação, por exemplo:
– Escrito em alto-nível (C/C++, Java, PHP, Python ...)
– Realiza chamadas a funções de bibliotecas.
– Algumas funcionalidades requerem o auxílio do SO.
– No nível mais baixo, tudo é executado pelo hardware. Ex.: a=a+b; 2
Introdução a AOC
• Visão geral da disciplina

– A maioria das disciplinas de um curso de BCC se preocupa com


aspectos de software.
• Programação, Engenharia de software, Sistemas operacionais,
Inteligência artificial, Compiladores, Banco de dados, etc...
– Poucas tratam do aspecto de hardware.
• Circuitos digitais, Redes de computadores, Arquitetura e
organização de computadores (AOC).
– Na disciplina de AOC, estudaremos aspectos de hardware.
• Como o hardware do computador funciona?
• Como se representa e se processa um dado ou uma instrução?
• Como se acessa e se armazena (R/W) um dado ou uma instrução?
• Como o hardware executa um programa escrito em alto nível?
3

Introdução a AOC
• Finalidade da disciplina (1/2)

– Levar os alunos a compreender como os computadores


funcionam, ou precisamente, como seus componentes de
hardware funcionam (o que fazem e como se comunicam).
– Mas o que queremos dizer com a palavra “computador”?
• Diversos tipos: desktop, servidores, mobile, embarcados.
• Diversos usos: design gráfico, finanças, genética, automóveis.
• Diversos fabricantes: Intel, Apple, IBM, Samsung, Motorola,
Sun.
• Diversas tecnologias subjacentes (implícitas).
• Diferentes custos.

4
Introdução a AOC
• Finalidade da disciplina (2/2)

– Analogia: Pense em um curso sobre “veículos automotivos”


– Existem muitas semelhanças de um veículo para outro.
• Todo carro tem: direção, combustível, motor, pneus, portas ...
– Diferenças de um veículo para outro (particularidades).
• Direção: manual, hidráulica, elétrica ...
• Combustível: gasolina, álcool, diesel, GNV, eletricidade/bateria
• Motor (potência): 1.0, 1.3, 1.4, 1.5, 1.6, 1.8, 2.0, 2.8, 3.0 ...
• Pneus (aro): 13, 14, 15, 16 ... dentre outros.
– Melhor maneira de aprender:
• Concentrar-se em um modelo específico e aprender como
esse modelo funciona.
5

Introdução a AOC
• Definição clássica de AOC

“The term architecture is used here to describe the attributes of a


system as seen by the programmer, i.e., the conceptual structure
and functional behavior as distinct from the organization of the
dataflow and controls, the logic design, and the physical
implementation.”
Gene Amdahl et al., IBM Journal of R&D, April 1964

– O termo “arquitetura” pode ser aplicado em vários níveis:


• Arquitetura de sistema
• Arquitetura de memória
• Arquitetura de interconexão
• Arquitetura de instruções
• Microarquitetura de hardware
6
Introdução a AOC
• O que é “Arquitetura” e “Organização”? (1/2)

– Arquitetura: trata do “o quê” ... dos atributos do sistema que


são visíveis ao programador, ou seja, aqueles que têm impacto
direto sobre a execução lógica de um programa.
– “O que” deve ter: processador, memória, dispositivos de E/S,
barramento, conjunto de instruções, número de bits usado para
representar os tipos de dados, memória cache, endereçamento de
memória e de E/S, operações aritméticas e etc.

– Organização: trata do “como” ... dos detalhes de hardware


transparente ao programador, ou seja, das estruturas internas
de unidades operacionais e suas interconexões que
implementam as especificações da arquitetura.
– “Como” funcionam e se comunicam: os sinais de controle, as
interfaces entre CPU e memória (e os periféricos), a tecnologia de
memória utilizada, formas de multiplicação e etc.
7

Introdução a AOC
• O que é “Arquitetura” e “Organização”? (2/2)

– Exemplo para os termos Arquitetura e Organização:

• Uma decisão de projeto de arquitetura, diz que um hardware


deve (ou não) ter uma instrução de multiplicação.

• Constitui uma decisão de projeto de organização a decisão


se essa instrução de multiplicação será implementada:
– por uma unidade especial de multiplicação (co-processador); ou
– por um mecanismo que usa repetidamente sua unidade de soma.

8
Introdução a AOC
• AOC hoje

– As pesquisas em AOC sempre foram guiadas por avanços


tecnológicos, e como consequência passaram por várias fases:
• Construção de somadores mais rápidos
• Construção de unidades mais rápidas
• Construção de um melhor conjunto de instruções
• Construção de microarquitetura mais eficiente

– Vivemos numa época fascinante para estudo de AOC!


• Estudo de arquiteturas multicore, tecnologias optane, GPUs e
computação quântica afetam todos os níveis de abstração.

Introdução a AOC
• O que é “Computador”? (1/2)

– Equipamento de calcular, constituído de hardware e software.

– Componentes de hardware são divididos em:


• Entrada: recebe dados externos (mouse, teclado, ...)
• Saída: apresenta o resultado (monitor, impressora, ...)
• Memória: armazena os dados (discos, RAM/ROM, cache, ...)
• Processador: processa dados/instruções e controla os demais
componentes (Decodificador, UC, ULA ...)
• Barramento: conecta todos os dispositivos (controle, dado,
instrução, endereço, energia elétrica ...)
10
Introdução a AOC
• O que é “Computador”? (2/2)

– Um computador é uma máquina eletrônica lógica e multinível.

Programável ← Programa ← Instruções

– Representável por uma hierarquia de níveis de abstração.


• Microeletrônica (mais baixo) e
• Software e Sistema Operacional (mais alto)

11

Introdução a AOC
• Níveis de abstração

– O hardware de um computador moderno é um sistema bastante


complexo. Podemos estudá-lo em vários níveis:
• Arquitetura, Microarquitetura, Lógica e Circuitos lógicos.
– Na disciplina, o foco será um nível de macro componentes.
• Consideraremos abstrações como: bit/byte/word da memória,
multiplexador, somador, porta lógica, cache, registrador, etc.
• Sem nos aprofundarmos muito em como estes componentes
são implementados fisicamente (eletrônica).
– Foco:
• como estes componentes são conectados e como funcionam
de uma forma abstrata.
• O que é algo abstrato???
12
Introdução a AOC
• Níveis de abstração

– Nossa disciplina abordará o


que acontece nos níveis da
hierarquia da Arquitetura
até Circuitos.
– Foco principal na CPU (o
caminho de dados e o
controle).
• Implementado por milhões
ou bilhões de componentes.
• Impossível de entender
olhando para todos os
componentes.
– Precisamos de ... Abstração.
13

Introdução a AOC
• Níveis de abstração

– Instruction Set Architecture


(ISA) é a sigla muito usada
em AOC, para tratar da
interface entre hardware e
software.
– Aborda tudo que é preciso
saber para escrever código
para um processador
• Instruções
• Quantidade de registradores
• Organização da memória
• Estrutura dos barramentos,
etc.
14
Introdução a AOC
• Níveis de abstração

– Microarquitetura é uma
implementação específica de
um ISA sob restrições de
projeto e metas.
– Tudo que é feito em
hardware e não fica exposto
para o software.
• Componentes ativos numa
instrução
• Número de estágios do pipeline
• Execução fora de ordem e etc.

– Arquitetura de Computadores
é: ISA + μarq (+hardware)
15

Introdução a AOC
• Níveis de abstração

– Veja ao lado três exemplos de


abstração:
– Uma boa dica pra obter mais
informações é aprofundar‐se nos
componentes.
– Uma abstração omite detalhes
desnecessários e ajuda a entender
a complexidade.
Na figura ao lado, o que a rotina swap(),
inscrita em C realiza?
Indique alguns dos detalhes que
aparecem nestas abstrações familiares?
16
Introdução a AOC
• Níveis de abstração

– É preciso entender abstrações como:


• Software de aplicações
• Software de sistemas (operacionais)
• Linguagem assembly
• Linguagem de máquina
• Aspectos de arquitetura, como cache, memória virtual ...
• Lógica sequencial: máquinas de estado finito
• Lógica combinatória: circuitos aritméticos
• Lógica booleana: 1s e 0s
• Transistores usados para construir portas lógicos (CMOS)
• Semicondutores/silício usados para construir transistores
• Propriedades dos átomos, elétrons e dinâmica quantitativa

Muito o que aprender! Calma, nosso foco não será tudo! 17

Introdução a AOC
• Importância da disciplina AOC

– Por que devemos estudar AOC?


• Como um cientista da computação:
– Entender como um processador funciona abaixo da camada
de software, e como as decisões de hardware afetam o
software
– Desenvolver sistemas mais eficientes: mais rápido, barato,
código menor, menos consumo de energia ...
• Como um programador:
– Desenvolver softwares melhores sabendo como o hardware
funciona (e vice‐versa).
• Como um cliente de uma loja
18
Introdução a AOC
• Importância da disciplina AOC

– Por que devemos estudar AOC?

– Existem diversos motivos:

• Variabilidade de plataformas.
• Rápida evolução.
• Impacto no desempenho do software.
• Impacto no comportamento do software.

19

Introdução a AOC
• Importância da AOC: variedade de plataformas

– Todos os computadores são iguais?


– Existe uma enorme variedade de “tipos” de computadores.
– Eles variam em diversos aspectos:
• Classe de aplicação.
• Recursos.
• Família/Arquitetura.
• Modelo . . .

20
Introdução a AOC
• Importância da AOC: variedade de plataformas

– Podemos dividir os computadores modernos em três classes


de aplicação:
• PCs: Desktops, laptops, ... Em geral, usados por único usuário
por vez; Rodam browsers; Editores de texto, vídeo, imagem e
som; Serviços básicos de escritórios; etc...
• Servidores: de web, e-mail, supercomputadores, mainframes,
... Suportam grandes cargas de trabalho; Diversos usuários
simultâneos; Ênfase em confiabilidade e paralelismo.
• Dispositivos embarcados: Computadores automotivos, TVs,
eletrodomésticos, smartphones, roteadores, ... Número
enorme de aplicações; Hoje, são quase ubíquos; Em geral,
rodam poucas aplicações específicas e relacionadas.
21

Introdução a AOC
• Importância da AOC: variedade de plataformas

– Computadores por classe de aplicação: PCs

22
Introdução a AOC
• Importância da AOC: variedade de plataformas

– Computadores por classe de aplicação: Servidores

23

Introdução a AOC
• Importância da AOC: variedade de plataformas

– Computadores por classe de aplicação: Sist. Embarcados

24
Introdução a AOC
• Importância da AOC: variedade de plataformas

– O gráfico mostra o número de tablets e smartphones fabricados


por ano (até 2012), que reflete a era pós-PC, versus PCs e
telefones celulares tradicionais.

Fonte: Patterson e Hennessy (2014, p. 07) 25

Introdução a AOC
• Importância da AOC: variedade de plataformas

– Segundo notícia extraída do site Agência Brasil:

• Em 2017, foram vendidos 47,7 milhões de smartphones no


BR, superando em 9,7% (43,48 milhões) as vendas em 2016.
– Apesar do aumento, o número representa queda de 12,5%
(6,8 milhões de unidades) na comparação com 2014 – até
agora o melhor ano de vendas de smartphones no país.
• Foram vendidos 5,19 milhões de PCs, notebooks e desktops
juntos, sendo 15,3% a mais que as vendas em 2016.
• A venda de tablets chegou a 3,7 milhões de unidades, 4,8% a
menos do registrado em 2016.
http://agenciabrasil.ebc.com.br/economia/noticia/2018-03/venda-de-aparelhos-celulares-no-brasil-aumenta-97-em-2017
26
Introdução a AOC
• Importância da AOC: variedade de plataformas

– Outras notícias sobre o assunto:


• 2018 - Brasil supera marca de mais de um smartphone por
habitante, diz FGV
https://www.tecmundo.com.br/mercado/129497-brasil-supera-
marca-smartphone-habitante-diz-fgv.htm
• 2019 - Brasil tem 230 milhões de smartphones em uso
https://epocanegocios.globo.com/Tecnologia/noticia/2019/04/bra
sil-tem-230-milhoes-de-smartphones-em-uso.html
• 2019 - Por que ainda existem desktops se há smartphones
e tablets tão poderosos?
https://canaltech.com.br/produtos/por-que-ainda-existem-
desktops-se-ha-smartphones-e-tablets-tao-poderosos-154731/
27

Introdução a AOC
• Importância da AOC: variedade de plataformas

– Cada classe de componente possui seus requisitos:


• Confiabilidade.
• Escalabilidade.
• Tempo de resposta.
• Consumo de energia.
• Tamanho.
• Preço . . .

– Profissionais de TI devem ser capazes de entender estes


requisitos e escolher um hardware capaz de atender suas
necessidades.

28
Introdução a AOC
• AOC: impacto no desempenho do software

– O hardware tem impacto óbvio no desempenho do software.


• Um processador com clock mais alto normalmente executa
programas mais rapidamente.
– Mas existem vários outros fatores mais sutis:
• Organização da memória.
• Tamanho da palavra.
• Grau de paralelismo ...
– Dado um hardware específico, há maneiras específicas de se
escrever software otimizado.
– Dado um software específico, há hardwares mais adequados.

29

Introdução a AOC
• AOC: impacto no funcionamento do software

– O impacto do hardware no software não está confinado apenas


ao desempenho.
– Muitas vezes, um mesmo programa se comporta de formas
diferentes em hardwares diferentes.
– Exemplos de fatores relevantes:
• Ordem de bytes.
• Representação de números em ponto flutuante.
– Não levar em conta estes fatores pode resultar em
comportamentos inesperados/errados.

30
Introdução a AOC
• AOC: capacidade de evolução

– A computação (eletrônica) é uma área relativamente recente


(final da década de 1940), mas a evolução tem ocorrido de
forma muito rápida.

Crescimento da capacidade por chip DRAM ao longo do tempo.


Fonte: Patterson e Hennessy (2014, p. 25) 31

Introdução a AOC
• AOC: capacidade de evolução

– Segundo o site CanalTech (2019):


• Samsung anunciou a produção do seu novo chip LPDDR4X, de
memória DRAM, com maior capacidade para dispositivos móveis.
– Feita sob processadores de 10 nm (10−9 metros).
– Traz 12 GB de RAM em DDR4X e velocidade de 4,266 GB/s.
– Consome 10% menos de bateria.
– Além de mais rápido, o sistema poderá ter capacidade multitarefas.
Não é possív el exibir esta imagem no momento.

https://canaltech.com.br/hardware/samsung-lanca-chip-de-memoria-dram-de-12-gb-para-smartphones-134789/
32
Introdução a AOC
• AOC: capacidade de evolução

– Segundo o site MaisTecnologia.com (2020):


• Samsung anunciou a produção do seu novo chip LPDDR5, de
memória DRAM, com maior capacidade para dispositivos móveis.
– Feita sob processadores de 10 nm (10−9 metros).
– Traz 16 GB de RAM em DDR5 e velocidade de 6,4 GB/s.
Não é possív el exibir esta imagem no momento.

https://www.maistecnologia.com/samsung-iniciou-a-producao-em-massa-da-primeira-dram-movel-de-16-gb-da-industria/
33

Introdução a AOC
• AOC: capacidade de evolução

– A evolução não é apenas quantitativa, memória maior ou clock


mais alto ...

– Ocorrem também evoluções tecnológicas/arquiteturais.


• Memória cache.
• Múltiplos núcleos (multicore).
• Tecnologia SSD.
• ROM apagável, programável.
• Tecnologia GPU
• Processadores quânticos ...

– Ser capaz de acompanhar a evolução é fundamental.

34
Introdução a AOC
• Leituras recomendadas

– PATTERSON, D. A.; HENNESSY, J. L. Organização e Projeto de


Computadores: a interface hardware software. Rio de Janeiro:
Elsevier, 2005. Capítulo 1.

– STALLINGS, W. Arquitetura e Organização de Computadores. 5.ed.


São Paulo: Pearson - Prentice Hall, 2002. Capítulo 1.

– MURDOCCA, M. J; HEURING, V. P. Introdução à Arquitetura de


Computadores. Rio de Janeiro: Elsevier, 2000. Capítulo 1.

35

Você também pode gostar