Baixe o app para aproveitar ainda mais
Prévia do material em texto
INTRODUÇÃO AOS SISTEMAS COMPUTACIONAIS OU DE COMPUTAÇÃO Celso Alberto Saibel Santos, Dr. Dep. de Informática UFES Sala 08 do CT-VII saibel@inf.ufes.br 6 O que é um Sistema? • Sistema: conjunto de componentes que trabalham de maneira coordenada para realizar alguma atividade – “Tecnológicos”: sistema de TV digital, sistema de controle de freios, sistema de injeção eletrônica, sistema de reserva de passagens, sistema de controle de tráfego aéreo, sistema de atendimento automático, sistema distribuído,... – “Não-tecnológicos”: sistema circulatório, sistema respiratório, sistema nervoso, sistema de venda de bilhetes, ... • Abordagem “sistêmica” – Facilita a compreensão do funcionamento como um todo e a participação de cada uma das partes envolvidas 7 Ex: Abordagem Sistêmica – Sistema de Impressão • Por que não está imprimindo? – A impressora está ligada? – A impressora está funcionando e está imprimindo outros documentos ? – Olhar a fila de impressão: • O seu doc está na fila? • Há muitos docs. na fila? – A impressora está instalada? – A impressora está na rede 8 Sistema Nervoso “CÉREBRO” Sistema Sensações e Conhecimento Estímulos (percepção) Usuário (pode ser outro sistema ou componente) 9 O que é um Sistema de Computação? • Sistema que realiza algum tipo de processamento de informações de entrada para gerar algum tipo de saída – O processamento (i.e., a computação) é especificado (a) através de um conjunto de instruções (um programa) que definem o que, quando e como deve ser feito • Sistema (ou máquina) que tem como finalidade processar informação e que suporta alterações à sua funcionalidade através da sua programação – Processar informação (ou realizar computação) significa, abstratamente, transformar elementos de entrada com o objetivo de produzir elementos na saída, de uma forma coerente, desejável e previsível. – O processamento da informação deve produzir resultados úteis a um usuário do sistema. 10 Sistema de Computação “COMPUTADOR” OU “PROCESSADOR” Sistema Saída Entrada Usuário 11 Sistema Computacionais: Outro nível de abstração 12 Primeiros problemas a vista... • Entrada: – Como consigo interagir com o sistema? – Qual a linguagem que ele entende? – Quanto de conhecimento preciso ter para “inserir coisas” no sistema? – Qual o formato ou modalidade devo usar? – ... • Saída: – Qual a linguagem que o usuário entende? – Qual o resultado esperado pelo usuário? – Quanto de conhecimento preciso para entender os resultados produzidos? – Qual o formato, linguagem e modalidade a ser utilizada? – ... 13 Sistemas Computacionais • Um sistema computacional pode ser visto como uma estrutura dividida em 3 componentes: • Hardware e seus Componentes • Software • Dados 14 Sistemas Computacionais • Sistemas computacionais: compostos por subsistemas • Hardware e seus Componentes – Infraestrutura eletrônica-digital para o processamento • Dispositivos de Entrada/Saída • Unidade Central de Processamento • Memória RAM • Interconexões (barramentos) 15 Estudo de Sistemas (Computacionais) • Os sistemas (incluindo os computacionais) são extremamente complexos se forem estudados em todos seus detalhes SOLUÇÃO Diferentes níveis de ABSTRAÇÃO • Abstração: distinção entre as propriedades externas de um componente e os detalhes internos de sua construção. • Ex: • Utilizamos dispositivos elétricos sem entender a sua tecnologia • Beneficiamo-nos de serviços de terceiros sem conhecer com detalhes suas atividades • Ubiquidade é um desejo ainda não atingido para sistemas computacionais 16 17 Sistemas de Numeração: binário e hexadecimal 18 Sistemas de Numeração • Nosso curso: Base binária (base 2) e hexadecimal (base 16) • Representação de Inteiros e Operações Básicas – Soma, subtração e multiplicação • Implementações em hardware [http://www.inf.ufsc.br/ine5365/clteoria.html] • Transformações entre bases de representação • Representação de racionais 19 Sistemas de Numeração • Notação em ponto fixo – Menos utilizada • Notação em ponto flutuante – Nos computadores atuais: – É impossível a representação de números reais em computadores binários digitais porque a representação binária é discreta. – Em qualquer linguagem de programação utilizamos representações que prevêem algum grau de arredondamento. – Notação IEEE 754 (padrão) 20 Por que o uso de notação binária? • Variáveis Booleanas • Podem assumir apenas 2 valores: 0 e 1 • Abstrações: – Lâmpada: acesa (1) ou apagada (0) – Chave: fechada (1) ou aberta (0) – Verdadeiro (1) ou Falso(0) • Representação: – Expressão Lógica – Tabela Verdade – Símbolos (portas lógicas) 21 22 Anotações da Parte 1 OBS: Essas anotações são adaptações do material suplementar (apresentações PPT) ao Livro do Hennessy e Patterson, complementado com material de suporte do Livro do Stallings. Supõe-se que os estudantes tenham noções de lógica digital e linguagem assembly para o entendimento das aulas. 23 Introdução • Campo com mudanças rápidas: – Tubo de vácuo -> transistor -> CI -> VLSI (ver seção 1.4) – Dobrando a cada 1.5 anos: Capacidade de memória Velocidade do processador (Avanços tecnológicos & organização) • Coisas que serão aprendidas: – Como computadores funcionam: fundamentação básica – Como analisar seus desempenhos (ou como não se fazer isso!) – Questões que influenciam computadores recentes (caches, pipelines) • Por que aprender isso? – Você quer ser um “cientista da computação” – Você quer construir softwares (necessidade de desempenho) – Você precisa tomar decisões ou oferecer “expertise” na área 24 O que é um computador? • Componentes: – Entrada (mouse, teclado, USB) – Saída (monitor, impressora) – Memória (disk drives, DRAM, SRAM, CD, DVD, flash memory) – Rede • Foco inicial: o processador (controle e via de dados) – Implementado usando milhões de transistores – Impossível entender “olhando cada transistor” – Precisamos de... 25 Abstração • Removendo camadas temos mais informação • Uma abstração omite detalhes desnecessários, ajudando a reduzir a complexidade Quais detalhes nos parecem familiares nessas abstrações ao lado? swap(int v[], int k) {int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } swap: muli $2, $5,4 add $2, $4,$2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000 Binary machine language program (for MIPS) C compiler Assembler Assembly language program (for MIPS) High-level language program (in C) Como são executados códigos Java e Android? Máquinas virtuais? http://www.differencebetween.com/difference-between-android-and-vs-java/ 26 Instruction Set Architecture • Instruction Set Architecture = Conjunto de Instruções • Uma abstração muito importante – Interface entre nível de hardware e software de baixonível – Padroniza instruções, padrões de bits da linguagem de máquina, etc. – Vantagem: Implementãções diferentes da mesma arquitetura – Desvantagem: As vezes dificulta o uso de “novas invenções” True OU False: Compatibilidade binária é fundamental? • Conjunto de Instruções relativamente recentes: – 80x86/Pentium/K6, PowerPC, DEC Alpha, MIPS, SPARC, HP 27 O que é tratado no Livro • Questões de desempenho (Cap. 2) vocabulário e motivação • Um conjunto de instruções específico (Cap. 3) • Aritmética e construção de uma ULA (Cap. 4) • Construir um processador para executar nossas instruções (Cap. 5) • Pipelining para ganhar desempenho (Cap. 6) • Memória: caches e memória virtual (Cap. 7) • Entrada e Saída - I/O (Cap. 8) Chave para uma boa nota na disciplina: guie-se pelos slides, mas LEIA o Livro texto! 28 Arquitetura Básica dos Computadores Atuais CPU: ALU (datapath) + control Cache I/O Controller I/O Controller I/O Controller Main Memory Graphics display Keyboard main bus interrupts I/O Controller Network 29 Mas nem sempre foi assim ... • Da onde surgiram os computadores atuais? • Já ouviu falar em ábaco e hollerith? • Ábaco – Original do oriente médio – Calculador decimal manual • Herman Hollerith (1860-1929) – Funcionário do Departamento de Recenseamento dos Estados Unidos – Construiu sua Máquina de Recenseamento ou Máquina Tabuladora - 1866 • Utilizava cartão perfurado • Reduziu de 10 para 3 anos o período de realização de censo de 1890 30 Um breve histórico • MARK I – 1944 – Primeiro computador eletromecânico – Desenvolvido pela Universidade de Harvard, com apoio da IBM – Medidas: • 700.000 peças • 800.000 metros de fios • 17 metros de comprimento por 2 metros de altura • 70 toneladas • Soma – 0,3 segundos • Multiplicação – 6 segundos 31 Um breve histórico • ENIAC – 1945 • Primeiro computador eletrônico. • Desenvolvido na Universidade de Pensilvânia. • Projeto do exército dos Estados Unidos para o cálculo da trajetória de projéteis. • Alguns números: – 17.000 válvulas. – 50.000 comutadores. – 70.000 resistências. – Soma – 0,0002 segundos. – Multiplicação – 0,003 segundos. – 111 m3. – 30 toneladas. – Consumo – 100.000 a 200.000 watts. • Programação – conexão de fios tipo painel de telefonista. 32 Um breve histórico Máquina de von Neumann – Proposta em 1946 – Máquina composta por: • Memória (MEM) – Armazena dados, onde alguns destes dados são interpretados como instruções de um programa a ser executado pela CPU – A característica fundamental da máquina de von Neumann é que dados e programas estão armazenados numa mesma memória! • Unidade Central de Processamento (CPU) – Unidade de controle (UC) – Unidade de cálculos aritméticos e lógicos (UAL) – Registrador de instrução (IR) – Ponteiro de instrução (IP) – Registrador de uso geral (acumulador - ACC) • Dispositivos de Entrada e Saída – Base para a maioria das arquiteturas atuais 33 Máquina de von Neumann 34 Voltando à arquitetura Básica Atual... CPU: ALU (datapath) + control Cache I/O Controller I/O Controller I/O Controller Main Memory Graphics display Keyboard main bus interrupts I/O Controller Network 35 Como se fazer entender pelo computador? • “Linguagem” do computador : 100011000001 (bits) – Números binários: base da teoria computacional 1. Primórdios: uso da linguagem nativa em binário!!! 2. Linguagem de Montagem (Assembly) • Montador: traduz uma versão simbólica das instruções para sua representação binária na arquitetura add A, B montador 100011000001 3. Linguagem de Programação de alto-nível • Compilador: traduz instruções de alto-nível para instruções binárias diretamente ou via um montador A + B compilador add A, B montador 100011000001 ou A + B compilador 100011000001 36 Mas é só isso? • Existe ainda um programa que gerencia os recursos da máquina durante a execução dos programas: o SISTEMA OPERACIONAL (SO) • Operações de Entrada/Saída (E/S), “carga” do programa na memória, exceções, etc. • O SO funciona como um gerente dos recursos, escondendo o acesso direto ao hardware dos usuários • Mais ainda: multiprocessamento, gerência de arquivos, processamento distribuído, ... • Assim, existem diversas camadas e serviços disponíveis para auxiliar nossa comunicação com a máquina: – Um modelo em camadas e serviços é uma forma interessante de abstração para a comunicação 37 Uma questão importante!!! • O que é isto? 00000000001000100100000000100000 • Pode ser lido como: 25 + 214 + 217 + 221 = 32 + 16384 + 131072 + 2097152 = 2244640 214 15o. bit 6o. bit 25 ... 20 38 Diálogo com o computador... • Melhor assim? 00000001 00000001 00000010 00001000 0000000 00100000 00000001 00000011 00000100 00001001 0000000 00100000 00000010 00001000 00001001 00000101 0000000 00100010 • O que é isto? 00000001000000010000001000001000000000000100000 00000001000000110000010000001001000000000100000 000000100000100000001001000001010000000 00100010 39 Traduzindo... • E assim? 1 1 2 8 0 32 1 3 4 9 0 32 2 8 9 5 0 34 • Melhorando... add $8, $1, $2 add $9, $3, $4 sub $5, $8, $9 40 Traduzindo mais um pouco... • Melhorando ainda mais... $8 = $1 + $2 $9 = $3 + $4 $5 = $8 - $9 • Claro agora? u = a + b v = c + d x = u - v • Sim, é claro: x = (a+b) - (c+d) 41 Níveis de Representação Programa em Linguagem de Alto-Nível Programa em Linguagem de Montagem Programa em Linguagem de Máquina Especificação do controle de sinais Compilador Montador ou Assembler Interpretação da Máquina x = (a+b) x = x – (c+d) lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 ° ° ALUOP[0:3] <= InstReg[9:11] & MASK Compilador / Interpretador Arquitetura Conjunto de Instruções 42 Implementação em Circuitos Lógica Binária 43 Tecnologia Desempenho e Integração Transistores Lógica de portas CMOS Ligações Célula Complexa 44 Transistor MOS : Base do Funcionamento I ig V+ X 45 Tecnologia básica: CMOS • CMOS: Complementary Metal Oxide Semiconductor – Transistors NMOS (N-Type Metal Oxide Semiconductor) – Transistors PMOS (P-Type Metal Oxide Semiconductor) • Transistor NMOS – Uma tensão alta (HIGH = Vdd) no gate torna o transistor um “condutor” – Uma tensão baixa (LOW = GND) no gate “abre” o circuito • Transistor PMOS – Uma tensão baixa (LOW = GND) no gate torna o transistor um “condutor” – Uma tensão alta (HIGH = Vdd) no gate “abre” o circuito Vdd = 5V GND = 0v Vdd = 5V GND = 0v 46 NOT • Porta Lógica NOT – É a porta Inversora – Operador: Barra, Apóstrofo – Símbolo A , A’ 0 1 1 0 F = A’ A Tabela da Verdade 47 Componentes básicos: Inversor CMOS Operação do Inversor Out In Símbolo Vdd Open Carga Vin Vout Vdd Vdd Vdd Circuito Out In PMOSNMOS Vdd Vdd Saída = 0 Open Descarga Saída = 1 48 Componentes básicos: Portas Lógicas CMOS Vdd A B Out Vdd A B Out Porta NOR A B Out Porta NAND Out A B A B Out 0 0 1 0 1 1 1 0 1 1 1 0 A B Out 0 0 1 0 1 0 1 0 0 1 1 0 49 Circuitos Lógicos • Circuito Combinacional: saídas refletem o estado instantâneo das entradas (ex. somador) • Circuito Seqüencial: progressão de estado em estado ma medida que ocorrem mudanças nas entradas (ex. contador) • Requisitos: – Armazenam estado parcial (memória) – Uso de sinais para promover a transição de um estado a outro (relógios ou clocks). – Exemplo: • Aluno está em determinado estado (na escola) • Move para outro estado (dirige p/ casa) quando a aula termina (evento) às 18:00 horas. 50 Circuitos Seqüenciais: Máquina de Estados • Máquina de estados: progressão do sistema estado atual e função próximo estado • Controle de operações em uma CPU • Mudanças de estados pelo clock: síncronas Estado Corrente Função próximo estado Função saída Entradas Saídas Próximo Estado Clock 51 Armazenando um Programa • Instruções armazenadas como binários • Dados (obviamente??) também armazenados como números binários • Programas e dados são armazenados numa mesma memória: arquitetura von Neumann ULA Registradores M em ó ria P rin cip a l CPU Dados e instruções armazenados na mesma memória … ... então, quando eles são carregados para a CPU, os dados vão para os registradores e as instruções são executadas. 52 Memória na Arquitetura MIPS (Patterson) • Arranjo de palavras – cada palavra contém 32 bits – ... isto é, quatro bytes de 8 bits • Endereços de memória referem-se a palavras ao invés de bytes diretamente • Os endereços podem ser armazenados em palavras • Portanto, cada posição endereçada contém 8 bits – Em geral, as arquiteturas não acessam bits diretamente, mas blocos ou conjuntos de bits – O tamanho dos blocos variam de acordo com os níveis de memória endereçados... 53 Outra possível interpretação!?!? • Uma palavra de memória contém: – Hexadecimal: 41424344 – Binário: 0100 0001 0100 0010 0100 0011 0100 0100 • O que representa? • Código ASCII (ANSI): – ex. ‘A’=65 (0x41), ‘a’= 97, ‘B’=66, ‘C’=67, ... – ‘0’=48, ‘1’=49, ... • Então qual é a resposta? msb lsb 54 ...Resposta • Depende da forma como o endereçamento aos bytes é organizado: – ‘ABCD’ se byte + significativo está no < endereço: big- endian – ‘DCBA’ se byte + significativo está no > endereço: little- endian • Algumas Arquiteturas: • SPARC – big-endian (compatibilidade com a linha 68K usada pela SUN) • MIPS – configura-se em big ou little-endian (interoperabilidade) • IBM – big-endian • Intel 80x86 e VAX – little-endian 55 Exemplo • Implementação little-endian • Endereço do byte = Endereço da palavra + offset (deslocamento) +0 +1 +2 +3 0 1 2 3 4 5 6 7 Palavra 0 4 8 12 16 Endereços de Bytes Offset ‘A’ ‘B’ ‘C’ ‘D’ 41 42 43 44 (Conteúdo em Hexadecimal) ls ms 56 Instruções Básicas de Programas • Conjunto de instruções = linguagem de máquina • Formato da Instrução: opcode [operandos] • Tipos de instrução: – Instruções aritméticas e lógicas (add, sub, AND, OR) – Referência à memória ou Load&store – Desvios Condicionais: if + goto / if-then-else – Desvios Incondicionais ou saltos (jumps) • Conjunto de instruções complexo: CISC – Lógica de controle complexa, microprogramas • Conjunto de instruções reduzido: RISC – Lógica de controle mais simples, muitos registradores, tipos de endereçamento simples 57 Desempenho x Tecnologia • Poder da Tecnologia – Ganho: 1.2 x 1.2 x 1.2 = 1.7 x / ano – Tamanho: miniaturização do transistor ganha 10%/ ano velocidade de chaveamento ganha 1.2 / ano. – Densidade: aumenta 1.2x / ano. – Área da pastilha (die): 1.2x / ano. • A lição da abordagem RISC é deixar o conjunto de instruções (ISA) o mais simples possível: – Ciclo de projeto curto explora de maneira otimizada a tecnologia (~3 anos) – Técnicas de pipeline e previsão de desvios (branches) – Caches on-chip maiores e mais sofisticados 58 Filosofia RISC [Tanembaum]... 1. Regra de base: Simplificar a via de dados – registradores, ULA e barramentos de interconexão; 2. Minimizar tempo de ciclo da via de dados: • Faça o comum executar mais rápido • A simplicidade favorece a regularidade “A perfeição é atingida, não quando não existe nada mais a acrescentar, mas quando não existe nada mais a jogar fora!” [St. Exupéry]
Compartilhar