Escolar Documentos
Profissional Documentos
Cultura Documentos
Definições:
Linguagem de Máquina
Circuitos eletrônicos reconhecem e executam diretamente um conjunto limitado de instruções
simples
Para escolher instruções:
• simplicidade
• consistência
• desempenho
• Sua utilização é tediosa/ complexa
Outra linguagem de uso mais simples e agradável através de 2 métodos:
• tradução
• interpretação
Geração 1 – Válvulas
John Mauchley (1907 – 1980) e Presper Eckert (1919 – 1995) construíram o ENIAC em 1946
1º computador eletrônico
-18.000 válvulas e 1.500 relés
-30 toneladas / 20 registradores
-Consumia 140 quilowatts
-Programação em 6.000 chaves
Arquitetura de Von Neumann - Considerado o “pai” do computador:
ENIAC e a Arquitetura de von Neumann. Disponível em:
<https://www.youtube.com/watch?v=egPA39zBDys>.
Colaborador do projeto ENIAC, matemático John von Neumann (1903 – 1957) perfeiçoamento
do ENIAC, o IAS.
É creditada a von Neumann a definição de uma arquitetura de computadores com programa
armazenado, utilizado até hoje.
21 instruções de 20 bits,
2 campos 8 bits (cod. de operação); 1 campo de 12 bits,(endereços de 000 a 999)
Modo repetitivo, cada ciclo com dois subciclos:
ciclo de busca
ciclo de execução
Geração 2 – Transistores
Eletrônica moderna: surgiu em 1947, John Bardeen (1908-1991), Walter Brattain (1902-1987),
e
William Shockley (1910-1989), Bell e (AT&T) criaram o transistor.-A DEC lançou PDP-1
-Unidades aritméticas e lógicas e de controle mais complexas
-Linguagens de programação de nível superior
-CDC (1964) o CDC 6600 voltado para o processamento científico
• Escala de Integração
• Desde 1980
• Miniaturização dos componentes internos e avanços relacionados com a integração
• Quantos transistores podem integrar um único chip?
Aplicação
Arquitetura e Organização de Computadores
IAS – Máquina de Von Neumann
Descreva seus componentes
1-Hardware de entrada e saida
2-Unidade Central de Processamento
3-Unidade Lógica e Aritimetica
4-Unidade de Controle
5-Dados e Instruções
6-Memoria Principal
Aula 2
Processadores (CPU)
-Barramentos podem ser internos e externos à CPU, como ilustra a figura a seguir
Registradores
PC – Program Counter
IR – Instruction Register
Organização da CPU
-Caminho de Dados composto por:
-Registradores (1 a 32)
-ULA (Unidade Lógica e Aritmética)
Efetua operações simples
-Diversos barramentos
Execução de Instrução
CPU executa cada instrução em série de pequenas etapas
As etapas são:
Entrada/Saída
I/O (Input/Output)
Responsável pela transferência:
de dados externos para o computador (entrada)
do resultado do processamento “informação” para o usuário (saída)
Características das E/S
-Velocidade de transferência muito variável
-Atividades de E/S são assíncronas
-Qualidade dos dados pode ser incerta
-Transferências podem ser interrompidas (pausa)
Barramento
-Responsável pela comunicação entre os elementos computacionais
Lógica Digital
• Álgebra de Boole
• Funções
• Operadores e Operações
• Portas
• Propriedades
Álgebra de Boole
A Álgebra de Boole é aplicável ao projeto dos circuitos lógicos e funciona baseada em
princípios da lógica formal, uma área de estudo da filosofia.
Um dos pioneiros no estudo da lógica formal foi Aristóteles (384-322 AC), que publicou um
tratado sobre o tema denominado "De Interpretatione".
Boole percebeu que poderia estabelecer um conjunto de símbolos matemáticos para substituir
certas afirmativas da lógica formal. Publicou suas conclusões em 1854 no trabalho. “Uma
Análise Matemática da Lógica”
Claude B. Shannon mostrou (em sua tese no MIT) que o trabalho de Boole poderia ser
utilizado para descrever a operação de sistemas de comutação telefônica. As observações de
Shannon foram divulgadas em 1938 no trabalho "Uma Análise Simbólica de Relés e Circuitos
de Comutação".
-Desenvolvida pelo matemático britânico George Simon Boole (1815 – 1864) para estudo da
lógica.
-Definida sobre um conjunto de dois elementos: (0, 1) (baixo, alto) (falso, verdadeiro)
-Seus elementos, a princípio, não tem significado numérico.
-Postulados: se x é uma variável booleana então:
• Se x ≠ 0 => x = 1
• Se x ≠ 1 => x = 0
A Tabela Verdade
• Tabela Verdade relaciona os resultados (saída) de uma função lógica para todas as
combinações possíveis de suas variáveis (entrada).
Z = f(A, B) = A + B
Operações e Operadores
-São definidas algumas operações elementares (básicas) na álgebra booleana:
• Operação “Não” (NOT)
• Operação “E” (AND)
• Operação “Ou” (OR)
-Definidas também algumas operações complementares na álgebra booleana:
• Operação NAND
• Operação NOR
• Operação “Ou-Exclusivo” (Exclusive-Or ou XOR)
• Operação XNOR
As variáveis booleanas são repre- sentadas por letras maiúsculas, A, B, C,... e as funções pela
notação f(A,B,C,D,...)
Portas Lógicas
Precedência das Operações
O uso de parêntesis altera a precedência “normal” dos operadores, como na álgebra comum.
Portas Lógicas Fundamentais
Porta Lógica NOT
É a porta Inversora ,
Operador: Barra, Apóstrofe A, A
Propriedade Associativa
(A.B).C=A.(B.C)=A.B.C
(A+B)+C=A+(B+C)=A+B+C
(A?B)?C=A?(B?C)=A?B?C
Identidades importantes
A.B + A.B’ = A
(A + B) . (A + B’) = A
A.(A + B) = A
A.(A’ + B) = AB
A.B + A’.C = (A + C) . (A’ + B)
Identidades
Dualidades
Princípio Especial (álgebra booleana)
Para uma equação booleana qualquer, ao trocar as operações E (.) e operações OU (+) entre
si assim como valores 0 e 1 entre si, obtém-se uma equação igualmente válida.
Dualidades
Equivalência de Operações
Qualquer função lógica pode ser expressa em termos das operações AND, OR e NOT
SINTESE
Lógica Digital
-Álgebra de Boole
-Funções
-Operadores e Operações
-Portas
-Propriedades
-Computadores são construídos com base em chips de circuito integrado que contêm
minúsculos elementos comutadores denominados portas.
-As portas mais comuns são AND, OR, NAND, NOR, e NOT. Circuitos Simples podem ser
montados ao se combinar diretamente portas individuais.
-Circuitos mais complexos são multiplexadores, demultiplexadores, codificadores,
decodificadores, deslocadores e ULA.
-As leis da álgebra booleana podem ser usadas para transformar circuitos de uma forma para
outra. Em muitos casos é possível produzir circuitos mais econômicos dessa maneira.
Aula 4
Microprocessadores
• Introdução à microprogramação
• Microprocessadores
• Caminho de dados
• Watchdog
Microprocessamento
• Poucas inovações significativas na AOC desde o primeiro computador com programa
armazenado na memória (1950)
Unidade de controle microprogramada
• Um dos maiores avanços desde o nascimento do computador
• Sugerida por Wilkes (1951)
• Introduzida pela IBM S/360 (1964)
Maurice Vincent Wilkes (26 Junho 1913 – 29 Novembro 2010)
Famílias de Computadores
Wilkes, em 1951, sugeriu unidade de controle microprogramada
• Um dos maiores avanços desde o nascimento do computador
• Introduzida pela IBM na linha Sytem/360 em 1964
• A microprogramação facilita a tarefa de projetar e implementar a unidade de controle e
oferece suporte para o conceito da família de computadores.
• Além da IBM, a DEC (PDP-8) também introduziu o conceito de família de computadores
que desvincula uma arquitetura de máquina de suas implementações
• Integradores disponibilizam ao mercado computadores com a mesma arquitetura mas
com desempenho e preço diferentes
Microprogramação
• Primeiros computadores digitais (1945) com apenas dois níveis: ISA e lógico digital
Circuitos lógico digitais:
• complicados
• difíceis de entender e montar
• não confiáveis
Maurice Wilkes (1951)
• sugeriu simplificar o hardware com o projeto de computador de 3 níveis
• Máquina com interpretador embutido, imutável (o microprograma) com a função de
executar programas de nível lSA por interpretação
• Execução de microprogramas com conjunto limitado de instruções (instruções ISAs
muito maiores)
• Economia de circuitos eletrônicos (válvulas eletrônicas)
• Redução no número de válvulas, aumentando a confiabilidade
• Principais máquinas (década 70) interpretavam o nível ISA por microprograma
Anos dourados da microprogramação
• Décadas de 60 e 70
• Microprogramas dominavam
• Eram cada vez mais lentos devido a serem mais volumosos
Controle do caminho de dados por hardware
• Instruções executadas diretamente sem microprograma
• Reduz o conjunto de instruções
• Máquinas mais rápidas
• Para o programador, não importa o modo de implementação da instrução, o que
importa é a velocidade
• No nível ISA usa instrução como se fosse uma instrução de hardware, despreocupado
com ela
Microprocessador
• Segundo o dicionário Michaelis, “Conjunto de elementos da unidade central de
processamento, normalmente contidos num único chip de circuito integrado, o qual,
combinado com outros chips de memória e de entrada/saída, constituirá um
microcomputador.”
• Definido pelo Google como: “circuito integrado constituído por unidade de controle,
registradores e unidade aritmética e lógica, capaz de obedecer a um conjunto
predeterminado de instruções e de ser utilizado como unidade central de
processamento de um microcomputador.”
O ciclo do processador
• A operação dos computadores consiste em executar instruções sequenciais (uma após a outra)
• A execução de instruções é subdividida nas seguintes etapas:
código usando PC
1-Buscar a instrução na memória no segmento de
2-Incrementar o contador de programa
3-Decodificar a instrução buscada
4-Buscar os dados necessários na memória e/ou nos registradores do processador
5-Executar a instrução
6-Armazenar os resultados da instrução na memória e/ou registradores
7-Voltar à etapa 1 para iniciar a instrução seguinte
Síntese
Aula 5
ISA – Instruction Set Architecture
• Visão geral
• Tipos de dados
• Formatos e tipos de instruções
• Endereçamento
Sistemas Operacionais
▪ Visão geral de sistema operacional
▪ Objetivos e funções de sistemas operacionais
▪ Tipos de sistemas operacionais
Endereçamento de Instrução
Instruções possuem operandos e o endereçamento especifica onde eles (operandos) estão
Modos de endereçamento como os bits de um campo de endereço são
interpretados para encontrar o operando
Aula 6
Visão Geral do Paralelismo
Embora os computadores continuem a ficar cada vez mais rápidos, as demandas
impostas a eles estão crescendo no mínimo com a mesma rapidez
Em suma, seja qual for a capacidade de computação disponível, para muitos usuários, em
especial nas áreas da ciência, engenharia e industrial, ela nunca será suficiente
Portanto, para enfrentar problemas cada vez maiores, os arquitetos de computadores estão
recorrendo cada vez mais a computadores paralelos
Apesar de talvez não ser possível construir uma máquina com uma única CPU é com
tempo de ciclo de 0,001 ns, pode ser perfeitamente viável construir uma com
1.000 CPUs com um tempo de ciclo de 1 ns cada
O paralelismo pode ser introduzido em vários níveis
No nível mais baixo, ele pode ser adicionado ao CHIP da CPU por pipeline e projetos
superescalares com várias unidades funcionais
Também pode ser adicionado por meio de palavras de instrução muito longas com
paralelismo implícito
Várias CPUs podem ser reunidas no mesmo chip
Juntas, essas características podem equivaler, talvez, a um fator de 10 vezes em
desempenho em relação a projetos puramente sequenciais
No nível seguinte, placas extras de CPU com capacidade de processamento adicional
podem ser acrescentadas a um sistema
Funções especializadas, como: processamento de rede, de multimídia ou criptografia
Para conseguir um fator de cem, de mil, ou de milhão, é necessário replicar CPUs inteiras e
fazer que todas elas funcionem juntas com eficiência
Essa ideia leva a grandes multiprocessadores e multicomputadores (clusters)
É possível envolver organizações inteiras pela Internet e formar grades de computação
fracamente acopladas
Esses sistemas estão apenas começando a surgir, mas têm um potencial interessante para
o futuro.
Duas CPUs próximas, em termos computacionais, são fortemente acopladas,Quando
longe uma da outra, são fracamente acopladas
Paralelismo no CHIP
Um modo de aumentar a produtividade de um chip é conseguir que ele faça mais coisas ao
mesmo tempo, Em outras palavras, explorar o paralelismo
Alguns modos de aumentar a velocidade por paralelismo no chip, incluídos paralelismo no
nível da instrução, multithreading e mais de uma CPU no Chip
Técnicas diferentes, mas cada uma delas ajuda à sua própria maneira
Paralelismo no Nível da Instrução
Um modo de paralelismo no nível mais baixo é emitir múltiplas instruções por ciclo de clock
Há duas CPUs de emissão múltipla
Processadores superescalares
Processadores VLIW
Paralelismo
CPUs superescalares são capazes de emitir múltiplas instruções para as unidades de
execução em um único ciclo de clock
O número real de instruções emitidas depende do projeto do processador, bem como das
circunstâncias correntes
O hardware determina o número máximo que pode ser emitido, Em geral, duas a seis
instruções
Se a instrução precisa de unidade funcional não disponível ou um resultado ainda não foi
calculado, ela não será emitida
A outra forma de paralelismo no nível da instrução é encontrada em processadores VLIW
(Very Long Instruction Word)
Na forma original, máquinas VLIW tinham palavras longas que continham instruções que
usavam múltiplas unidades funcionais
Projeto muito rígido
Nem toda instrução utiliza todas unidades funcionais, resultando em muitas NO-OP inúteis,
usadas como filtro
Modernas máquinas VLIW têm modo de marcar grupo de instruções que formam um
conjunto com bit “final de grupo”
O processador pode buscar o grupo inteiro e emiti-lo de uma vez só
Cabe ao compilador preparar grupos de instruções compatíveis
VLIW transfere do tempo de execução para o tempo de compilação o trabalho de
determinar quais instruções podem ser emitidas em conjunto
Essa opção simplifica o hardware e o torna mais rápido
Permite que se montem pacotes melhores do que o hardware poderia montar durante o
tempo de execução
O paralelismo no nível da instrução não é a única forma de paralelismo de baixo nível
Outra forma é o paralelismo no nível da memória, no qual há múltiplas operações de memória no ar ao
mesmo tempo
Multithreading, Multiprocessadores e Coprocessadores
Multithreading no chip
Multiprocessadores com um único chip
Coprocessadores
Processadores de rede
Processadores de mídia
Criptoprocessadores
Multiprocessadores e Multicomputadores
Multiprocessadores de memória compartilhada
Multiprocessadores versus
Multicomputadores
Multiprocessadores
Computador paralelo – todas CPUs compartilham memória comum
Todos os processos que funcionam juntos podem compartilhar um único espaço de endereço virtual
mapeado para a memória comum
Qualquer processo pode ler/escrever uma palavra de memória apenas executando uma instrução. Nada
mais é preciso.
O hardware faz todo resto
Modelo de fácil entendimento pelos programadores e é aplicável a uma ampla faixa de problemas
Multicomputadores
Arquitetura paralela – todas CPUs possuem sua própria memória privada, acessível somente por ela e
nenhuma outra
Também denominado sistema de memória distribuída
O aspecto fundamental que distingue um multicomputador de multiprocessadores é que a CPU de um
multicomputador tem sua própria memória local privada, a qual pode acessar apenas executando LOAD
e STORE
CPUs em multicomputador não se comunicam lendo e escrevendo na memória comum
Mensagens usando rede de interconexão
Exemplos de multicomputadores: IBM BlueGene/P, Red Storm,
cluster Google
Cluster, Escalonamento e Desempenho
Computação de Cluster
Outro estilo de multicomputador
Centenas de milhares de PCs ou estações de trabalho conectadas por uma placa de rede
Dois tipos: o centralizado e o descentralizado
O centralizado é um cluster de estações de trabalho ou PCs montado em uma grande estante em uma
sala
Máquinas homogêneas sem periféricos, exceto placas de rede
Clusters descentralizados consistem em estações de trabalho ou PCs espalhados por um prédio ou
campus
Ociosos por muitas horas do dia
Conectados por uma LAN
Heterogêneos com conjunto completo de periféricos
Clusters são conjuntos pequenos, com cerca de 500 PCs
Contudo, também é possível construir clusters muito grandes com PCs de prateleira, como o Google faz
Escalonamento
Programadores podem criar jobs com facilidade, requisitando várias CPUs e executando durante
períodos substanciais de tempo
Quando várias requisições independentes estão disponíveis vindas de diferentes usuários, cada uma
necessitando um número diferente de CPUs por períodos detempos diferentes,
o cluster precisa de um escalonador paradeterminar qual job é executado
Um algoritmo mais sofisticado requer quecada job apresentado especifique seu formato, isto é,
quantas CPUs ele quer durante quantos minutos
Esquema especialmente eficaz quando jobssão apresentados durante o dia para execução a noite, o
escalonador tem as informações e pode executá-los na melhor ordem
Desempenho
O ponto principal de um computador paralelo é a velocidade de execução –mais rápido que uma
máquina com único processador
• Se não cumprir, não vale a pena o ter
• Deve ser eficiente em relaçãoao custo
• Para mensurar, são utilizadas métricas de hardware e software