- Aprender
- Computação e TI
- Ciência da computação
- Introdução à ciência da computação
- Como os computadores funcionam
Como os computadores funcionam
BásicoAula 3 de 7 do curso Curso de Introdução à ciência da computação
O que você vai aprender
- Identificar os principais componentes de hardware de um computador, explicar o conceito de programa armazenado por trás da arquitetura de von Neumann e descrever como os barramentos e os dispositivos de entrada e saída conectam tudo.
- Identificar os principais componentes de um computador e o conceito de programa armazenadoDistinguir hardware de software e descrever a arquitetura de von Neumann: um processador, uma memória para instruções e dados, entrada e saída e as conexões entre eles.
- Explicar como os barramentos transportam endereços, dados e sinais de controleDescrever as partes de endereços, dados e controle do barramento de sistema, acompanhar uma leitura e uma escrita na memória e calcular como a largura do barramento limita a memória endereçável e a velocidade de transferência.
- Classificar dispositivos de entrada e saída e explicar como se conectam à CPUClassificar dispositivos por sua função, explicar a conversão entre sinais analógicos e dados digitais e descrever como controladores, drivers, interrupções e acesso direto à memória permitem que dispositivos lentos trabalhem com um processador rápido.
- Identificar os principais componentes de um computador e o conceito de programa armazenado
- Mostrar como transistores e portas lógicas realizam operações com bits, identificar os componentes da CPU, rastrear o ciclo de busca, decodificação e execução e explicar o que torna um processador mais rápido que outro.
- Usar portas lógicas para entender como o hardware realiza operações com bitsLer as tabelas-verdade das portas lógicas básicas, determinar a saída de um pequeno circuito e explicar como portas construídas com transistores somam números e armazenam bits.
- Identificar os componentes da CPU e a função de cada umDescrever a unidade de controle, a unidade lógica e aritmética, os registradores de uso geral e especiais, o clock e os núcleos de processamento, e a função de cada um durante a execução de um programa.
- Rastrear o ciclo de busca, decodificação e execuçãoAcompanhar os passos que a CPU repete para cada instrução, rastrear os registradores durante um programa curto e explicar como saltos e interrupções alteram o que é executado em seguida.
- Explicar o que torna um processador mais rápidoComparar os efeitos da frequência de clock, do número de núcleos, do tamanho da cache e da execução em pipeline e estimar como cada um altera o tempo necessário para uma tarefa.
- Usar portas lógicas para entender como o hardware realiza operações com bits
- Descrever código de máquina e conjuntos de instruções, ler um programa curto em linguagem de montagem e explicar como compiladores, montadores, ligadores e interpretadores transformam código-fonte em um programa em execução.
- Ler código de máquina e linguagem de montagemExplicar o que uma instrução de máquina contém, por que um conjunto de instruções vincula programas a uma família de processadores e como a linguagem de montagem torna o código de máquina legível.
- Explicar como compiladores e interpretadores transformam código-fonte em programas em execuçãoComparar compilação e interpretação, acompanhar as etapas de um arquivo-fonte até um executável e explicar bytecode, máquinas virtuais e por que o mesmo programa pode ser executado em computadores diferentes.
- Ler código de máquina e linguagem de montagem
- Comparar a memória principal com os diferentes tipos de armazenamento secundário, explicar a hierarquia de memória e o uso de cache e escolher um armazenamento adequado para uma tarefa.
- Descrever a memória principal e seu endereçamentoExplicar RAM e ROM, volatilidade, endereços de bytes e unidades de capacidade, e por que um programa precisa estar na memória principal para ser executado.
- Comparar tecnologias de armazenamento secundárioExplicar como discos rígidos, unidades de estado sólido, mídias flash, discos ópticos, fita magnética e armazenamento em nuvem guardam dados e escolher o armazenamento por capacidade, velocidade, custo, durabilidade e portabilidade.
- Explicar a hierarquia de memória e o uso de cacheOrdenar os níveis, dos registradores ao armazenamento de arquivo, por velocidade, tamanho e custo, explicar por que as caches funcionam e calcular como acertos e faltas na cache afetam o tempo médio de acesso.
- Descrever a memória principal e seu endereçamento
- Descrever o que um sistema operacional faz, como um computador inicializa e como o sistema operacional carrega programas na memória, executa-os no processador e os mantém separados.
- Descrever a função do sistema operacionalExplicar como o sistema operacional gerencia o processador, a memória, o armazenamento e os dispositivos, fornece uma interface de usuário e um sistema de arquivos e mantém usuários e programas seguros.
- Acompanhar como um computador inicializa e executa um programaRastrear a sequência de inicialização, acompanhar como o sistema operacional carrega um programa na memória e o inicia e explicar como a memória virtual mantém os programas separados e permite que usem mais memória do que a instalada.
- Descrever a função do sistema operacional
Guia de estudo de Como os computadores funcionam
1Componentes do computador e os caminhos entre eles
Um computador fica mais fácil de entender quando você separa as funções de seus componentes. A entrada traz dados, o processador segue instruções armazenadas, a memória fornece o conteúdo de trabalho e a saída apresenta resultados. As conexões importam tanto quanto os componentes: acompanhe um endereço, um valor e um sinal de controle para ver como um processador acessa a memória e os dispositivos e depois veja como dispositivos mais lentos solicitam atenção.
1.1 Os componentes que fazem um computador funcionar
Um computador aceita entrada, segue instruções para processá-la, armazena dados e produz saída. Essas funções se aplicam tanto a um notebook quanto a um controlador dentro de uma máquina de lavar. A diferença está na tarefa e nos equipamentos conectados a ele.
Componentes físicos e programas
Hardware é o equipamento físico. Software consiste em programas e nos dados com que trabalham. A CPU é o chip do processador, não o gabinete inteiro do computador. Uma placa-mãe a conecta à RAM, ao armazenamento, a uma GPU, à alimentação e às portas de dispositivos. A GPU cuida do desenho e de outros trabalhos que aplicam operações semelhantes a muitos valores. Um celular combina muitas dessas funções em um sistema em um chip (SoC).
A RAM guarda instruções e dados em uso no momento. Uma unidade de armazenamento mantém programas e arquivos salvos sem energia. Em um computador descrito como tendo 16 GB de memória e um SSD de 512 GB, a primeira capacidade descreve a RAM e a segunda descreve o armazenamento. Uma unidade maior não fornece mais RAM de trabalho.
Um programa armazenado como dados
A arquitetura de von Neumann tem uma CPU, memória principal que guarda instruções e dados, dispositivos de entrada e saída e barramentos que os conectam. John von Neumann descreveu esse modelo em 1945 no “First Draft of a Report on the EDVAC”. Sua ideia central é o programa armazenado: instruções são valores binários na memória, prontos para a CPU buscar.
Máquinas anteriores, como o ENIAC, eram configuradas para tarefas com interruptores e cabos. Carregar um novo programa permite que uma máquina de programa armazenado mude de tarefa sem reconectar cabos. O Manchester Baby executou um programa em memória eletrônica regravável em 21 de junho de 1948.
A memória não atribui um significado a cada padrão. O byte 01000001 pode representar o número 65, a letra “A” do ASCII ou parte de uma instrução. O que a CPU ou o programa faz com o padrão determina seu significado. Durante a busca de uma instrução, a CPU trata o padrão buscado como uma instrução.
Por que o processador pode esperar
Instruções e dados compartilham o caminho entre a CPU e a memória principal. A memória também os fornece mais lentamente do que a CPU consegue usá-los. Essa restrição é o gargalo de von Neumann. Assim, um processador rápido pode passar tempo esperando pelo próximo valor. Memórias cache pequenas e rápidas mantêm cópias úteis perto da CPU e reduzem muitas dessas esperas.
| Modelo | Instruções e dados | Consequência útil |
|---|---|---|
| Von Neumann | Compartilham a memória principal e seu caminho | Uma memória guarda uma combinação variável de código e dados. |
| Harvard | Têm memórias e caminhos separados | Uma instrução e um valor de dados podem ser buscados juntos. |
Pequenos microcontroladores e processadores de sinais frequentemente usam um modelo Harvard. CPUs modernas de uso geral combinam as ideias: memória principal compartilhada, mas caches de nível 1 separadas para instruções e dados.
Computadores dentro de outros dispositivos
Um sistema embarcado realiza uma tarefa específica dentro de um dispositivo maior. Um termostato lê um sensor de temperatura, processa a leitura e controla o aquecimento. Seu programa armazenado geralmente permanece em memória não volátil. As funções de processador, memória e entrada e saída continuam presentes, mesmo sem teclado, tela ou um sistema operacional completo de computador de mesa.
Principais conclusões
- Hardware é o equipamento físico; software fornece programas e dados.
- A CPU é um componente distinto da RAM, do armazenamento e do gabinete do computador.
- Um computador de programa armazenado busca instruções binárias guardadas na memória.
- Um padrão de bits recebe seu significado da forma como é usado.
- As caches reduzem a espera causada pelo gargalo entre CPU e memória.
1.2 Como endereços, valores e comandos trafegam
Um processador precisa de três coisas para acessar a memória: uma posição, o valor a transferir e um comando que diga à memória o que fazer. Manter essas funções separadas torna uma transação no barramento muito mais fácil de acompanhar.
Três funções em um barramento de sistema clássico
Um barramento é um caminho de comunicação compartilhado. Em um barramento de sistema paralelo clássico, vários fios ou trilhas de uma placa de circuito transportam bits ao mesmo tempo.
| Parte do barramento | O que transporta | Direção em um acesso da CPU à memória |
|---|---|---|
| Barramento de endereços | A posição a usar | Da CPU para a memória ou um dispositivo |
| Barramento de dados | Uma instrução ou um valor de dados | Para a CPU em uma leitura; a partir da CPU em uma escrita |
| Barramento de controle | Sinais de leitura, escrita, temporização e interrupção | Depende do sinal |
Um endereço identifica uma posição; ele não é o valor armazenado nela. O endereço 200 pode guardar 7 hoje e 9 depois sem mudar de endereço. Uma comparação útil é uma caixa de correio numerada: o número identifica a caixa, enquanto seu conteúdo pode mudar.
Acompanhe uma leitura e uma escrita
Para ler o endereço 200, a CPU coloca 200, em binário 11001000, no barramento de endereços e envia um comando de leitura pelo barramento de controle. A memória devolve o valor naquela posição, aqui 7, pelo barramento de dados. A CPU o copia para um registrador.
Para escrever 9 no endereço 201, a CPU coloca 201 no barramento de endereços, 9 no barramento de dados e um comando de escrita no barramento de controle. A memória substitui o conteúdo da posição 201. Enviar 201 pelo barramento de dados enviaria o valor errado; o endereço e o conteúdo têm funções diferentes.
A largura do endereço limita o número de posições
Com bits de endereço, há endereços diferentes. Se cada endereço identifica um byte, esse também é o número de bytes endereçáveis.
- 16 bits fornecem endereços, ou 64 KiB.
- 32 bits fornecem endereços, ou 4 GiB.
- Aumentar de 20 para 21 bits dobra a capacidade de 1 MiB para 2 MiB.
Cada bit adicional dobra as combinações. Dobrar a quantidade de bits de 16 para 32 multiplica a quantidade de posições por ; não apenas a dobra. Esse cálculo fornece um limite de endereçamento, não a quantidade de RAM realmente instalada.
A largura de dados limita cada transferência
Um caminho de dados de 64 bits transporta 8 bytes em uma transferência. Um caminho de 8 bits precisa de quatro transferências para transportar um valor de 4 bytes. A largura de banda mede quantos dados podem ser transferidos por segundo:
Com 1 bilhão de transferências por segundo, um caminho de 8 bytes transporta 8 bilhões de bytes por segundo, ou 8 GB/s. A largura do endereço controla quantas posições podem ser identificadas; a largura de dados controla quanto é transferido de uma vez.
A palavra de uma CPU é seu tamanho natural de trabalho, normalmente 32 ou 64 bits. Um processador de 64 bits não exige que toda conexão tenha 64 fios. Sua faixa de endereços implementada também pode usar menos de 64 bits.
As conexões modernas mantêm as mesmas funções
Canais de memória, PCI Express e USB substituem um barramento compartilhado por várias conexões. PCI Express e USB são seriais: os bits trafegam um após o outro por pares de fios rápidos. Endereços, valores e comandos são agrupados em mensagens. Eles ainda identificam um destino, transportam conteúdo e coordenam a transferência.
Principais conclusões
- Um endereço identifica uma posição; os dados são o conteúdo transferido.
- Comandos de leitura e escrita trafegam como sinais de controle.
- Um endereço de n bits tem 2ⁿ valores possíveis; o endereçamento por byte torna a capacidade igual a 2ⁿ bytes.
- Cada bit de endereço adicional dobra a faixa de endereços.
- A largura de banda é igual aos bytes por transferência multiplicados pelas transferências por segundo.
- Conexões seriais transportam informações de endereçamento, dados e controle em mensagens.
1.3 Entrada e saída de dados em um computador
Um dispositivo de entrada fornece dados; um dispositivo de saída apresenta um resultado ou age com base nele. A classificação descreve a função do dispositivo no sistema. Ela não descreve a complexidade interna do dispositivo.
Classifique a ação
Teclados, câmeras, microfones, leitores de código de barras e sensores fornecem entrada. Telas, impressoras, alto-falantes e atuadores fornecem saída. Um atuador altera algo físico, como abrir uma válvula ou girar um motor.
Alguns dispositivos fazem as duas coisas. Uma tela sensível ao toque detecta toques e exibe imagens. Um headset combina um microfone com alto-falantes. Um adaptador de rede envia e recebe dados. Unidades de armazenamento também realizam leituras e escritas por controladores de E/S, mas sua principal finalidade é guardar dados, por isso formam a categoria separada armazenamento secundário.
Uma impressora pode conter um processador que transforma uma página em pontos imprimíveis. Ela continua sendo um dispositivo de saída por causa do que faz para o computador. Um mouse sem fio fornece entrada assim como um com fio.
Transforme sinais contínuos em números
Som e temperatura variam continuamente: são sinais analógicos. Um conversor analógico-digital (ADC) mede um sinal em intervalos regulares e codifica as amostras como números. Um conversor digital-analógico (DAC) transforma valores digitais em uma saída analógica, como o sinal que aciona um alto-falante.
Para um canal de áudio amostrado 44.100 vezes por segundo com 16 bits por amostra:
Essa é a taxa de dados das amostras brutas. Cada segundo contém 44.100 medições, e cada medição precisa de 16 bits. A amostragem e a codificação permitem que um computador armazene e processe a gravação.
Controlador de hardware, driver de software
Dispositivos se conectam por portas ou conexões sem fio como USB, HDMI, Bluetooth ou Wi-Fi. Um controlador de dispositivo é um circuito que cuida da comunicação de baixo nível e disponibiliza registradores que a CPU pode ler ou escrever. Um driver de dispositivo é um software que traduz solicitações do SO em comandos para o dispositivo. O controlador é hardware; o driver é software.
Permita que os dispositivos solicitem atenção
Com a consulta periódica, o processador verifica repetidamente um registrador de estado. Isso é simples, mas um dispositivo que geralmente está ocioso pode causar muitas verificações sem resultado útil.
Com uma interrupção, o controlador sinaliza quando precisa de atenção. A CPU conclui a instrução atual no modelo simples de ciclo de instrução, salva o estado interrompido e executa um tratador de interrupção. Depois, restaura o estado salvo e continua. O pressionamento de uma tecla ou a conclusão de uma leitura de disco podem iniciar essa sequência.
Pessoas e muitos dispositivos agem muito mais lentamente que uma CPU. Uma pessoa digita apenas alguns caracteres por segundo, enquanto um processador pode executar bilhões de instruções por segundo. As interrupções permitem que a CPU trabalhe entre eventos.
Em uma transferência grande, o acesso direto à memória (DMA) permite que um dispositivo ou controlador de DMA transfira um bloco diretamente para a RAM ou a partir dela. A CPU configura a operação e trabalha em outra coisa. Uma interrupção de conclusão informa quando o bloco está pronto. O DMA elimina a necessidade de a CPU copiar cada byte; ela ainda participa da preparação e da conclusão da transferência.
Principais conclusões
- Classifique entrada e saída pela ação realizada para o computador.
- Um ADC codifica a entrada analógica amostrada; um DAC produz saída analógica.
- Um controlador é hardware, enquanto um driver é software.
- A consulta periódica verifica repetidamente; uma interrupção sinaliza que é necessária atenção.
- O DMA transfere blocos entre um dispositivo e a RAM sem que a CPU copie cada byte.
2Como um processador realiza seu trabalho
Dentro de um processador, circuitos simples se combinam em uma máquina capaz de seguir um programa. Comece com portas que atuam sobre bits e depois identifique os registradores e sinais de controle que movem uma instrução pela CPU. Um rastreamento curto torna visível a mudança de estado. Frequência de clock, núcleos, caches e pipelines explicam por que executar o mesmo trabalho útil pode levar tempos diferentes em sistemas diferentes.
2.1 Dos interruptores aos cálculos
As operações mais básicas de um computador vêm de circuitos que alternam entre dois níveis de sinal. Uma tensão alta representa 1 e uma tensão baixa representa 0. Esses níveis representam bits; um chip não reconhece o significado de uma foto ou de uma frase.
Portas transformam bits de entrada em uma saída
Um transistor funciona como um interruptor controlado eletronicamente. Pequenos grupos formam portas lógicas, cada uma com uma regra fixa de entrada e saída. Uma tabela-verdade lista todas as combinações de entrada e suas saídas. Com duas entradas há quatro combinações; em geral, entradas precisam de linhas.
A porta NÃO inverte sua única entrada. As portas com duas entradas funcionam da seguinte forma:
| A | B | AND | OR | XOR | NAND | NOR |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
A porta E (AND) exige que as duas entradas sejam 1. A porta OU (OR) exige pelo menos uma, incluindo as duas. A porta OU exclusivo (XOR) exige entradas diferentes. A porta NÃO E (NAND) inverte E; a porta NÃO OU (NOR) inverte OU. Interpretar OU como “uma, mas não ambas” é confundi-la com OU exclusivo.
Para avaliar (A AND B) OR (NOT C) com A = 1, B = 0, C = 0, avance das entradas para a saída. A AND B produz 0. NOT C produz 1. Por fim, 0 OR 1 produz 1. Anote as saídas intermediárias para que a última porta receba as entradas corretas.
Portas somam dígitos binários
Um meio somador recebe dois bits. Sua saída de soma é XOR e sua saída de vai-um é AND. Para duas entradas iguais a 1, o bit de soma é 0 e o bit de vai-um é 1: o resultado de dois bits é 10, que significa 2.
Um somador completo também recebe um vai-um da coluna anterior. Encadear esses circuitos permite que uma ULA some números maiores. Acompanhe 0110 mais 0011 a partir da direita:
- A coluna mais à direita produz 1, sem vai-um.
- A coluna seguinte tem dois 1: escreva 0 e leve 1.
- A seguinte tem 1, 0 e vai-um 1: escreva 0 e leve 1.
- A mais à esquerda tem 0, 0 e vai-um 1: escreva 1.
O resultado é 1001, ou 9. Um vai-um pertence à próxima coluna; descartá-lo altera o valor.
Portas podem armazenar um bit
Realimentação significa devolver a saída de um circuito à sua entrada. Portas NAND ou NOR conectadas de forma cruzada formam um latch que mantém um bit enquanto a energia permanece ligada. Um flip-flop captura um novo bit em uma borda de clock, mantendo as atualizações sincronizadas com o clock do processador. Registradores usam circuitos de armazenamento controlados por clock. Células de cache SRAM usam circuitos do tipo latch; a DRAM armazena carga em capacitores.
NAND e NOR são, cada uma, universais: qualquer um desses tipos de porta, sozinho, pode construir qualquer função lógica. Conectar as duas entradas de uma porta NAND a A resulta em A NAND A, que funciona como NÃO A.
Essas são camadas de abstração. Transistores formam portas; portas formam somadores, registradores e circuitos de controle; estes formam um processador que executa instruções. Uma pessoa que programa pode usar a camada de instruções sem projetar os interruptores abaixo dela.
Principais conclusões
- Tabelas-verdade enumeram todas as combinações de entrada.
- OU inclui o caso em que as duas entradas são 1; OU exclusivo o exclui.
- Avalie um circuito por meio das saídas intermediárias das portas.
- Um meio somador produz uma soma XOR e um vai-um AND.
- A realimentação armazena bits; as bordas de clock controlam as atualizações dos flip-flops.
- NAND e NOR são, cada uma, suficientes para construir qualquer função lógica.
2.2 Os componentes de trabalho do processador
A CPU, ou processador, executa as instruções de um programa. Sua unidade de controle dirige o trabalho, sua unidade lógica e aritmética realiza operações e seus registradores guardam os valores necessários imediatamente. Um clock coordena as mudanças nesses circuitos.
Dirigir e realizar o trabalho
A unidade de controle busca uma instrução, decodifica-a e emite sinais de controle. Ela pode dizer à memória que devolva um valor, selecionar duas entradas para a ULA e permitir que um registrador armazene o resultado. Ela coordena a operação; a ULA faz a operação aritmética ou lógica.
As operações da ULA incluem adição, subtração, comparações, deslocamentos de bits e operações de portas como AND e XOR. Os resultados também atualizam indicadores de estado. Um indicador de zero aponta um resultado zero; um indicador de negativo registra um resultado negativo. Um desvio pode testar um indicador para escolher a próxima instrução.
Registradores guardam o estado imediato de trabalho
Registradores são posições de armazenamento muito pequenas e rápidas dentro do processador. Um registrador de uso geral geralmente guarda uma palavra. Por exemplo, x86-64 oferece 16 registradores de uso geral para inteiros, e ARM de 64 bits oferece 31. Os programas os usam para manter valores perto da ULA.
O processador didático torna visíveis as seguintes funções:
| Registrador | Função |
|---|---|
| Contador de programa, PC | Endereço da próxima instrução a buscar |
| Registrador de endereços de memória, MAR | Endereço para a próxima leitura ou escrita na memória |
| Registrador de dados de memória, MDR | Valor recém-lido ou que será escrito |
| Registrador de instrução, CIR | Instrução que está sendo decodificada e executada |
| Acumulador, ACC | Valor de trabalho e resultado da ULA na máquina didática |
O MDR também é chamado registrador de buffer de memória (MBR). O CIR também é chamado registrador de instrução (IR). Chips reais organizam essas funções de maneiras mais complexas, mas o modelo permite acompanhar o movimento de uma instrução e de seus dados.
O PC guarda um endereço, não um total de instruções concluídas. Um salto pode enviá-lo para trás para repetir um laço. MAR e MDR também são diferentes: um endereço como 10 vai para o MAR; o valor armazenado no endereço 10 vai para o MDR.
Um ciclo de clock é um passo de temporização
A frequência de clock conta pulsos por segundo, medidos em hertz (Hz). Um clock de 3 GHz produz 3 bilhões de ciclos a cada segundo. A duração de um ciclo é:
Um pulso permite que partes de um circuito avancem. Algumas instruções precisam de vários passos de temporização, e processadores modernos sobrepõem o trabalho em várias instruções.
Mais de um núcleo de processamento
Um núcleo de processamento tem os recursos de controle, aritmética, registradores e cache necessários para executar uma sequência de instruções. Quatro núcleos podem executar quatro sequências de uma vez. Um programa se beneficia quando seu trabalho pode ser dividido entre eles; apenas ter quatro núcleos não divide todas as tarefas.
Uma GPU tem muitas unidades de processamento menores, adequadas para realizar operações semelhantes em muitos dados. Desenhar pixels, processar vídeo e fazer alguns cálculos de aprendizado de máquina têm essa forma. Uma CPU é adequada a uma variedade maior de instruções e decisões.
Pense em uma cozinha: a unidade de controle atribui ações, a ULA as realiza, os registradores guardam ingredientes à mão e a memória fornece mais. A CPU segue padrões de bits mecanicamente; o significado útil vem do programa.
Principais conclusões
- A unidade de controle coordena as operações; a ULA realiza operações aritméticas e lógicas.
- Indicadores registram condições como um resultado zero para desvios posteriores.
- PC, MAR, MDR, CIR e ACC guardam partes diferentes do estado atual de trabalho.
- Um ciclo de clock é um passo de temporização, não necessariamente uma instrução concluída.
- Múltiplos núcleos ajudam em trabalhos que podem ser executados em paralelo.
2.3 Acompanhe uma instrução pela CPU
O ciclo de busca, decodificação e execução conecta os componentes do processador em um programa em execução. Cada ciclo busca uma instrução, determina sua operação e a realiza. Um rastreamento registra as mudanças nos registradores e na memória para que cada resultado tenha uma causa visível.
Busque a instrução
No processador simples, a busca segue esta sequência:
- Copie o PC para o MAR.
- Coloque o endereço no barramento de endereços e envie um sinal de leitura de memória.
- Receba a instrução pelo barramento de dados no MDR.
- Copie-a para o CIR.
- Avance o PC para a próxima instrução.
Na máquina didática, cada instrução ocupa uma posição, então o PC aumenta em 1. Um processador com endereçamento por byte avança pelo tamanho da instrução em bytes. Durante a execução, o PC já aponta para além da instrução buscada.
Decodifique e execute
A unidade de controle separa o código de operação, que especifica a operação, do operando, que fornece um valor, registrador ou endereço. Em seguida, envia os sinais necessários para executar a instrução. Um carregamento lê dados, uma adição usa a ULA, um armazenamento escreve dados e um salto altera o PC. Algumas descrições chamam a escrita do resultado de etapa separada de escrita do resultado.
Rastreie um programa completo
A máquina didática tem um acumulador. Aqui, LOAD, ADD e STORE usam endereços de memória como operandos.
Address Instruction Data address Value
0 LOAD 10 10 7
1 ADD 11 11 5
2 STORE 12 12 0
3 HALT
Comece com PC 0. Buscar LOAD 10 muda o PC para 1. A execução coloca o endereço 10 no MAR, lê 7 pelo MDR e define o ACC como 7. O operando 10 identifica uma posição; não é o valor carregado.
Em seguida, ADD 11 é buscada e o PC passa a 2. A posição de memória 11 fornece 5. A ULA soma 7 e 5, deixando o ACC em 12. A busca de STORE 12 avança o PC para 3. A execução coloca o endereço 12 no MAR e o valor 12 no MDR e depois escreve 12 naquela posição. O ACC permanece em 12. Por fim, a busca de HALT avança o PC para 4 e a execução para a máquina didática. Quatro instruções foram executadas.
Desvios substituem o próximo endereço
JUMP 0 coloca 0 no PC durante a execução, independentemente de seu valor anterior. JUMPZ 6 salta somente quando o ACC é zero. Se essa instrução foi buscada no endereço 4, a busca primeiro faz o PC passar a 5. A execução então define o PC como 6 quando o ACC é zero; caso contrário, o PC permanece em 5. É assim que uma sequência pode escolher um caminho ou repetir um laço.
Interrupções e processadores reais
No limite entre instruções nesse modelo, a CPU verifica se há interrupções. Para tratar uma, ela salva o PC e outros registradores de trabalho, executa o tratador e depois restaura o estado salvo. O programa interrompido continua com seus próprios valores e próximo endereço.
Uma CPU não busca um programa-fonte inteiro de uma vez. Ela executa instruções de máquina, frequentemente várias para uma instrução do código-fonte. CPUs modernas sobrepõem e reordenam o trabalho interno, preservando os resultados exigidos pelo programa.
Principais conclusões
- A busca lê a instrução pelo MAR e pelo MDR até o CIR.
- O PC avança durante a busca; a execução de um salto pode substituir esse endereço.
- Um operando de endereço deve ser usado para ler o valor armazenado nele.
- STORE escreve o ACC na memória sem alterar o ACC nessa máquina didática.
- O tratamento de interrupções salva e restaura o estado de trabalho interrompido.
- Processadores reais sobrepõem trabalho enquanto preservam os resultados exigidos pelo programa.
2.4 Por que um programa termina mais cedo
O desempenho de um processador depende do trabalho necessário a um programa e da rapidez com que o computador o conclui. Frequência de clock, trabalho útil por ciclo, tempo de espera e oportunidades de trabalho em paralelo são fatores importantes.
Frequência de clock e uma quantidade fixa de ciclos
Para uma tarefa que exige uma quantidade conhecida de ciclos de clock:
Uma tarefa que precisa de 6 bilhões de ciclos leva 2 segundos a 3 GHz e 1,5 segundos a 4 GHz. A comparação mantém fixa a quantidade de ciclos. Em projetos diferentes de processador, um programa pode precisar de quantidades diferentes de ciclos. Um chip de 3,5 GHz pode, portanto, superar um de 4 GHz ao concluir mais instruções úteis por ciclo.
Frequências de clock mais altas também consomem mais energia e produzem calor. A redução de frequência por aquecimento reduz o clock quando um processador aquece demais. Isso ajuda a explicar por que os ganhos de desempenho vieram de mais do que aumentar os gigahertz.
Núcleos dividem apenas a parte paralela
Suponha que uma tarefa leve 10 segundos em um núcleo. Dois segundos precisam ocorrer em sequência; oito segundos podem ser divididos igualmente entre quatro núcleos. Desconsiderando a sobrecarga de coordenação:
Dividir os 10 segundos inteiros por quatro resulta em 2,5 segundos, mas divide incorretamente o trabalho sequencial. Mesmo uma quantidade ilimitada de núcleos não pode eliminar esses dois segundos. Múltiplos núcleos também ajudam programas separados a ser executados ao mesmo tempo, mesmo quando cada programa usa apenas um núcleo.
Um pipeline sobrepõe etapas
Em um pipeline de três etapas, uma instrução é executada enquanto a seguinte é decodificada e outra é buscada. Cada instrução ainda passa pelas três etapas. O ganho é a conclusão de mais instruções em um período.
Se cada etapa leva um ciclo, dez instruções independentes levam 30 ciclos sem sobreposição. Um pipeline ideal precisa de três ciclos para concluir a primeira instrução e mais um para cada instrução restante:
Um desvio pode tornar inúteis instruções já buscadas. Descartar esse trabalho custa ciclos, por isso os processadores preveem desvios. Dependências reais e esperas pela memória também impedem que um pipeline alcance sempre sua taxa ideal.
Mantenha o processador abastecido
Uma cache guarda cópias próximas de instruções e dados. Mais capacidade útil de cache pode reduzir os acessos à RAM, especialmente quando um programa usa repetidamente um conjunto de trabalho que antes não cabia nela. Se esse conjunto já couber, a capacidade extra pode ajudar pouco.
A largura de banda da memória limita a rapidez com que muitos valores podem chegar. A velocidade do armazenamento importa ao abrir arquivos ou iniciar aplicativos: passar de um disco rígido para um SSD pode reduzir o atraso, mesmo sem mudar a CPU. O tamanho da palavra e as instruções que um processador suporta também afetam os tipos de trabalho adequados.
Mais transistores, usos diferentes
A lei de Moore descreve a observação de Gordon Moore, feita pela primeira vez em 1965 e revisada em 1975, de que a quantidade de transistores dobrava aproximadamente a cada dois anos. Essa tendência histórica não é uma regra de que programas se tornam duas vezes mais rápidos em um intervalo fixo. À medida que a redução de escala desacelerou, projetistas de chips passaram a usar transistores adicionais para núcleos, caches, GPUs e aceleradores especializados. Uma comparação útil pergunta quanto tempo a mesma tarefa leva nas mesmas condições.
Principais conclusões
- Compare o tempo de execução da tarefa real, não apenas a frequência de clock.
- Mais núcleos reduzem apenas o trabalho que pode ser dividido entre eles.
- A execução em pipeline aumenta a vazão ao sobrepor etapas de instruções.
- Cache, largura de banda da memória, armazenamento e calor podem limitar o trabalho útil da CPU.
3Como programas escritos se tornam instruções de máquina
Um programa legível e as instruções que uma CPU executa são formas diferentes do mesmo trabalho pretendido. A linguagem de montagem expõe operações e desvios individuais; compiladores e interpretadores conectam o código de alto nível a essas operações. Acompanhar uma construção mostra por que um arquivo-fonte é diferente de um executável, por que as bibliotecas importam e por que levar software para outra plataforma pode exigir uma nova construção ou um ambiente de execução adequado.
3.1 Ler as instruções executadas por um processador
Código de máquina são instruções binárias para um tipo específico de processador. A linguagem de montagem escreve essas instruções com nomes legíveis. Ambos descrevem operações muito mais próximas do hardware do que uma linguagem de alto nível como Python ou C.
Operações e operandos
Uma instrução contém um código de operação que especifica o que fazer e geralmente um ou mais operandos que especificam o que usar. Um operando pode indicar um registrador ou endereço de memória, ou fornecer um valor diretamente. Seu significado vem do formato definido para a instrução.
Considere uma codificação didática de 8 bits. Os primeiros quatro bits guardam um código de operação; os últimos quatro guardam um endereço. Se LOAD é 0001, então LOAD 10 se torna 0001 1010, pois 10 em decimal é 1010 em binário. Quatro bits para o código de operação permitem códigos de operação. Quatro bits de endereço identificam as posições de 0 a 15. Essa codificação ilustra um formato limitado; os outros rastreamentos da máquina didática usam instruções escritas com endereços maiores.
Uma arquitetura do conjunto de instruções (ISA) define as instruções, codificações e registradores que um processador oferece. x86-64, ARM e RISC-V são exemplos. As instruções A64 do ARM têm 32 bits de comprimento; as instruções x86-64 variam de 1 a 15 bytes. O tamanho da palavra de um processador de 64 bits não determina o comprimento de todas as instruções.
Um laço legível
Um montador transforma mnemônicos e rótulos da linguagem de montagem em código de máquina para uma ISA. Grupos úteis de instruções incluem transferência de dados, aritmética e lógica, fluxo de controle e operações de sistema ou E/S.
Este programa com acumulador faz uma contagem regressiva a partir de 3. SUB 21 subtrai o conteúdo do endereço 21. JUMPZ faz um desvio se o ACC for zero.
0 LOAD 20
1 SUB 21
2 STORE 20
3 JUMPZ 5
4 JUMP 0
5 HALT
20 holds 3; 21 holds 1.
Na primeira passada, LOAD lê 3, SUB deixa 2 e STORE salva 2. O teste de zero falha, então JUMP 0 inicia outra passada. A segunda passada salva 1 e salta de volta. A terceira salva 0, então JUMPZ 5 vai para HALT.
As duas primeiras passadas usam cinco instruções cada. A última usa quatro antes de HALT, que também conta como uma instrução: . Contar apenas as seis linhas escritas deixa de fora as execuções repetidas.
Uma instrução no código-fonte, várias instruções de máquina
Uma instrução de alto nível como total = price + tax pode se tornar operações para carregar um valor, somar outro e armazenar o resultado. Linguagens de alto nível expressam variáveis, escolhas, laços e funções sem nomear cada registrador. A linguagem de montagem geralmente associa cada instrução escrita a uma instrução de máquina e depende diretamente de sua ISA.
Código de máquina para x86-64 não pode ser executado nativamente como código ARM. O código-fonte pode ser recompilado para ARM, ou uma camada de tradução ou emulação pode lidar com a incompatibilidade.
RISC e CISC
Projetos RISC como ARM e RISC-V favorecem instruções simples e regulares. Muitos usam instruções de tamanho fixo, mas RISC-V pode misturar formas compactadas de 16 bits com instruções padrão de 32 bits. Projetos CISC como x86 oferecem instruções mais complexas e de tamanho variável. Processadores x86 modernos dividem as instruções em operações internas mais simples. Esses termos descrevem abordagens de projeto, não garantem que uma máquina seja mais rápida.
Principais conclusões
- Um código de operação seleciona uma operação; os operandos especificam suas entradas ou destinos.
- Uma ISA define o contrato de código de máquina que um processador implementa.
- Um montador traduz mnemônicos legíveis em código de máquina.
- Laços executam algumas instruções repetidamente, por isso a quantidade de execuções difere da quantidade de linhas.
- Programas de alto nível precisam de tradução ou de um interpretador implementado em código de máquina.
- RISC e CISC descrevem estilos de conjunto de instruções, com exceções às regras simples de tamanho.
3.2 Do código-fonte a um programa em execução
Código-fonte é o texto legível de um programa. Um processador executa instruções de máquina, então uma ferramenta precisa fazer a ligação entre eles. Compilação e interpretação descrevem maneiras de fazer isso; muitas implementações reais as combinam.
As ferramentas de tradução
| Ferramenta | Seu trabalho |
|---|---|
| Montador | Traduz linguagem de montagem em código de máquina |
| Compilador | Traduz código para outra forma, frequentemente código de máquina ou bytecode |
| Interpretador | Realiza as operações de um programa enquanto ele é executado |
A maioria dos compiladores trabalha antes de um programa começar. Um compilador em tempo de execução (JIT) trabalha durante a execução. Um interpretador é, ele próprio, um programa em código de máquina: a CPU executa o interpretador, que realiza as operações do programa-fonte.
Acompanhe a construção de um programa em C
O comando clang hello.c -o hello constrói um executável chamado hello a partir de hello.c. Uma ferramenta de construção como make pode organizar comandos do compilador para a pessoa que programa. As etapas principais são:
- Pré-processamento: tratar diretivas como
#include <stdio.h>, incorporando declarações de cabeçalho ao código-fonte. - Compilação: traduzir o código C em operações no nível da linguagem de montagem.
- Montagem: codificar essas operações como código de máquina em arquivos-objeto.
- Ligação: conectar o código-objeto e as referências a bibliotecas para produzir um executável.
Os cabeçalhos descrevem interfaces de bibliotecas; incluir um cabeçalho, por si só, não copia a implementação compilada da biblioteca para o programa. A ligação fornece a conexão com esse código. A ligação estática copia o código necessário das bibliotecas para o executável. A ligação dinâmica registra as dependências de bibliotecas compartilhadas que são carregadas e conectadas quando necessário.
O executável é destinado a uma ISA e a um formato de sistema operacional. Construir para um Mac com ARM e um computador com Windows e x86-64 exige, portanto, construções nativas separadas. Editar o código-fonte também exige reconstruir um executável compilado antes que a alteração tenha efeito.
Erros acontecem em etapas diferentes
Um compilador pode informar erros de sintaxe, como a falta de um ponto e vírgula em C, e erros de tipo onde a linguagem verifica tipos. Uma compilação bem-sucedida não estabelece que o programa resolva o problema correto. Um erro de lógica produz um resultado incorreto. Um erro em tempo de execução ocorre enquanto o programa é executado, como a divisão por um valor de entrada que acaba sendo zero.
Um interpretador simples pode chegar a um erro somente depois que instruções anteriores já foram executadas. Python verifica primeiro a sintaxe de um arquivo inteiro, mas um nome não definido ainda pode causar uma falha somente quando a execução chega a ele. O método de tradução, por si só, não informa quando cada tipo de erro é encontrado.
Bytecode e máquinas virtuais
Java compila o código-fonte em bytecode, instruções para a Máquina Virtual Java (JVM). Cada plataforma compatível fornece sua própria JVM. Ela pode interpretar bytecode e compilar com JIT as partes usadas com frequência em código de máquina da CPU local. O bytecode permanece portável porque a JVM específica da plataforma lida com as diferenças de hardware.
CPython também compila Python em bytecode e o executa com uma máquina virtual. PyPy usa um compilador JIT, e os mecanismos JavaScript dos navegadores também usam compilação JIT. “Compilado” e “interpretado” descrevem implementações, não propriedades permanentes de uma linguagem.
Código nativo compilado antecipadamente geralmente evita trabalho repetido de interpretação. A interpretação torna conveniente o ciclo de editar e executar, enquanto bytecode e JIT combinam portabilidade com otimização durante a execução. Em todos os caminhos, a CPU acaba seguindo instruções de máquina, e o SO carrega o código executável necessário na memória.
Principais conclusões
- Compiladores traduzem código; interpretadores realizam operações durante a execução.
- A construção de um programa em C envolve pré-processamento, compilação, montagem e ligação.
- A ligação estática inclui código de bibliotecas; a ligação dinâmica registra dependências de bibliotecas compartilhadas.
- A compilação pode detectar erros de sintaxe e deixar passar erros de lógica e de tempo de execução.
- O bytecode é executado por uma máquina virtual específica da plataforma.
- A compilação JIT traduz durante a execução; linguagens podem ter implementações diferentes.
- Executáveis nativos dependem tanto de uma ISA quanto de um formato de sistema operacional.
4Memória, armazenamento e cópias rápidas
O lugar onde um computador guarda dados afeta tanto a sobrevivência deles à perda de energia quanto a rapidez com que podem ser usados. Compare a RAM de trabalho com unidades de armazenamento persistente e depois acompanhe a hierarquia dos registradores aos arquivos. As escolhas de armazenamento dependem dos padrões de acesso e da capacidade. O uso de cache explica como um armazenamento pequeno e rápido pode evitar muitos acessos lentos, e uma média ponderada mostra quanto as faltas afetam o resultado.
4.1 Memória de trabalho e seus endereços
A memória principal guarda as instruções e os dados atualmente disponíveis para a CPU. Para um aplicativo comum armazenado em um SSD, o SO primeiro traz o código e os dados necessários para a RAM. A CPU então busca instruções por meio de seu sistema de memória e cache.
RAM, DRAM e SRAM
RAM significa memória de acesso aleatório: uma posição pode ser alcançada sem passar por todas as posições anteriores. A RAM de trabalho comum é volátil, portanto seu conteúdo é perdido sem energia. Salvar um documento copia seus dados para um armazenamento não volátil.
A memória principal usa DRAM, que armazena bits como carga em pequenos capacitores. A carga se dissipa, por isso as células precisam de atualização, normalmente em um intervalo de 64 ms. A SRAM usa circuitos de transistores do tipo latch que mantêm seu estado enquanto alimentados. Ela não precisa de atualização, mas ocupa mais espaço e custa mais por bit. Sua velocidade é adequada às caches do processador.
| Tipo | Armazena um bit usando | Função típica | Mantém o conteúdo sem energia? |
|---|---|---|---|
| DRAM | Carga em um capacitor | Memória principal de trabalho | Não |
| SRAM | Um circuito do tipo latch | Cache da CPU | Não |
| Flash de firmware | Carga retida | Instruções de inicialização | Sim |
A ROM, ou memória somente de leitura, é uma memória não volátil associada a instruções fixas, como o firmware. O firmware UEFI ou BIOS moderno normalmente fica em memória flash atualizável. A capacidade anunciada para arquivos em um celular é armazenamento flash, mesmo quando uma descrição informal a chama de “ROM”; o celular grava arquivos ali regularmente.
Um byte tem um endereço
Na memória endereçável por byte, cada endereço identifica um byte. Um inteiro de 4 bytes que começa no endereço decimal 1000 ocupa as posições 1000, 1001, 1002 e 1003. A próxima posição não usada é 1004. Os endereços são frequentemente escritos em hexadecimal, como 0x7FFE0010, pois o hexadecimal representa padrões de bits de forma compacta.
O endereço identifica onde os bytes são encontrados. Ler o número escrito como endereço é diferente de ler o valor armazenado nesse endereço.
Unidades de capacidade usam dois sistemas
Um byte contém 8 bits. b minúsculo significa bits; B maiúsculo significa bytes.
| Unidade decimal | Bytes | Unidade binária | Bytes |
|---|---|---|---|
| kB | 1.000 | KiB | 1.024 |
| MB | 1.000.000 | MiB | 1.048.576 |
| GB | 1.000.000.000 | GiB | 1.073.741.824 |
| TB | 1.000.000.000.000 | Não se aplica | Não se aplica |
Uma unidade vendida como 1 TB contém bytes. Em GiB, a quantidade é:
Algumas telas de sistemas operacionais identificam essa quantidade binária como “GB”. O número diferente decorre do tamanho da unidade; não é evidência de espaço faltando.
Capacidade é diferente de velocidade do processador
Mais RAM permite que mais programas em execução e dados fiquem prontos ao mesmo tempo. Quando os dados de trabalho excedem a RAM, o SO pode mover páginas para o armazenamento, tornando o acesso mais lento. RAM adicional ajuda nessa falta, mas não aumenta a frequência de clock da CPU. Excluir arquivos salvos libera armazenamento. Fechar programas ou abas desnecessários pode liberar RAM de trabalho.
Principais conclusões
- A RAM de trabalho é volátil; salvar transfere dados para armazenamento não volátil.
- A DRAM exige atualização; a SRAM usa circuitos latch e é adequada para caches rápidas.
- O firmware permanece sem energia e pode ficar em memória flash atualizável.
- Cada endereço em uma memória endereçável por byte identifica um byte.
- GB decimal e GiB binário usam quantidades diferentes de bytes.
4.2 Escolher o armazenamento para a tarefa
O armazenamento secundário mantém programas e arquivos sem energia. Em comparação com a RAM, oferece mais capacidade a um custo menor por byte, com acesso mais lento. Diferentes tecnologias de armazenamento apresentam compromissos entre velocidade, custo, portabilidade e durabilidade.
Discos magnéticos e unidades de estado sólido
Uma unidade de disco rígido (HD ou HDD) armazena padrões magnéticos em pratos giratórios. Uma cabeça móvel busca a trilha correta e depois espera que a parte desejada do prato gire até ficar abaixo dela. Os dois movimentos acrescentam atraso ao acesso.
A 7.200 rotações por minuto, uma volta leva:
A espera média de rotação é de meia volta, cerca de 4,2 ms. Essa é apenas a parte da rotação, não o tempo total de leitura; a busca e a transferência também levam tempo. As peças móveis também tornam um HD em funcionamento vulnerável a choques.
Um SSD armazena carga em células flash e não tem peças móveis. Pequenas leituras aleatórias levam dezenas de microssegundos, em vez dos milissegundos típicos do acesso a um HD. SSDs são silenciosos, resistem a choques e são adequados a computadores portáteis. HDs geralmente oferecem menor custo por terabyte para grandes coleções.
As células flash toleram um número limitado de ciclos de apagamento e gravação. O controlador usa nivelamento de desgaste para distribuir as gravações entre as células. Pendrives, cartões de memória e armazenamento de celulares também usam flash, embora o controlador e a interface afetem seu desempenho.
Discos ópticos e fita
| Mídia | Como armazena ou lê dados | Situação adequada |
|---|---|---|
| CD, DVD, Blu-ray | Um laser lê marcas em uma camada refletiva | Distribuir mídia ou manter um arquivo em discos |
| Fita magnética | Os dados seguem uma sequência ao longo de uma fita comprida | Grandes cópias de segurança e arquivos |
Capacidades típicas são cerca de 700 MB para um CD, 4,7 GB para um DVD de camada única e 25 GB para um disco Blu-ray de camada única. Mídias ópticas são portáteis, mas lentas em comparação com unidades modernas.
A fita oferece baixo custo para grandes arquivos. Seu acesso sequencial significa que a unidade precisa enrolar a fita para alcançar um arquivo distante. Discos e SSDs oferecem acesso direto, alcançando uma posição selecionada sem percorrer todos os dados anteriores. Por isso, a fita é mais adequada a grandes cópias de segurança programadas do que a um aplicativo que abre repetidamente pequenos arquivos espalhados.
Armazenamento em nuvem é um serviço
O armazenamento em nuvem guarda arquivos em equipamentos nos centros de dados de um provedor. As mídias subjacentes continuam sendo SSDs, HDs ou fita. Uma conexão de rede acrescenta atrasos de acesso e transferência. O serviço oferece compartilhamento, acesso remoto e cópias em outro local, com custos recorrentes e dependência dos controles de acesso e da confiabilidade do provedor.
Considere o fator limitante
Tempo de acesso é o atraso antes de os dados começarem a chegar. Taxa de transferência mede a rapidez com que fluem depois disso. Muitas leituras de arquivos pequenos incorrem repetidamente no atraso de acesso; um arquivo grande e contínuo dá mais importância à taxa de transferência.
Um SSD é adequado para os programas em uso em um notebook. HDs são adequados a um servidor que armazena 20 TB de vídeo de forma econômica. Fita ou um arquivo em nuvem é adequado aos registros de longo prazo de uma empresa, enquanto uma unidade USB é prática para transportar arquivos. Escolha considerando capacidade, tempo de acesso, taxa de transferência, custo por byte, consumo de energia, confiabilidade e portabilidade. Ser feito de chips não transforma um SSD em RAM de trabalho: ele continua sendo armazenamento não volátil acessado por um controlador de armazenamento.
Principais conclusões
- O acesso a um HD inclui atraso de busca e de rotação; SSDs não têm peças móveis.
- O nivelamento de desgaste distribui as gravações flash entre as células.
- A fita fornece acesso sequencial e é adequada para grandes arquivos.
- O armazenamento em nuvem usa armazenamento físico acessado por uma rede.
- Tempo de acesso e taxa de transferência medem partes diferentes de uma leitura.
- Escolha o armazenamento pelo padrão de acesso da tarefa e pelas necessidades práticas.
4.3 Manter dados úteis perto da CPU
Um computador combina vários tipos de armazenamento porque acesso rápido, grande capacidade e baixo custo não se encontram em uma única tecnologia. A hierarquia de memória coloca uma pequena quantidade de armazenamento muito rápido perto da CPU e armazenamentos maiores e mais lentos mais distantes.
Os níveis da hierarquia
Do mais rápido e menor para o mais lento e maior, os principais níveis são registradores, cache L1/L2/L3, RAM, SSD, HD e armazenamento de arquivo. O custo por byte geralmente diminui à medida que a capacidade aumenta.
| Nível | Tempo de acesso ilustrativo | Escala típica |
|---|---|---|
| Registradores | Fração de nanossegundo | Alguns kilobytes ou menos |
| Cache L1 | Cerca de 1 ns | Dezenas a centenas de kilobytes por núcleo |
| Cache L2 | Alguns ns | Até alguns megabytes |
| Cache L3 | Cerca de 10–20 ns | Alguns a dezenas de megabytes |
| RAM | Cerca de 50–100 ns | Alguns a dezenas de gigabytes |
| SSD | Cerca de 20–100 µs | Centenas de gigabytes a terabytes |
| HD | Cerca de 5–10 ms | Alguns terabytes |
Esses tempos mostram a escala, não uma especificação fixa para todos os dispositivos. Usando 1 ns para L1, 100 ns para RAM e 10 ms para um disco, a RAM leva cerca de 100 vezes o tempo da L1 e o disco cerca de 100.000 vezes o tempo da RAM.
Acertos, faltas e cópias úteis
Uma cache da CPU usa SRAM para guardar blocos copiados da memória principal. O hardware examina os níveis de cache antes de buscar na RAM. Um acerto encontra o conteúdo solicitado na cache. Uma falta exige uma busca em um nível mais lento e pode trazer uma cópia para a cache.
A taxa de acertos é o número de acertos dividido por todos os acessos. Para 950 acertos em 1.000 acessos, ela é de 95%. Uma falta não significa que os dados estejam ausentes ou danificados; significa que a cópia rápida não estava disponível.
Por que acessos anteriores indicam acessos futuros
Localidade temporal significa que o conteúdo usado recentemente provavelmente será usado de novo em breve. Um laço lê repetidamente um contador e suas próprias instruções. Localidade espacial significa que endereços próximos provavelmente serão usados em breve. A leitura de elementos consecutivos de uma lista segue esse padrão.
Uma cache traz uma linha de cache inteira, normalmente 64 bytes vizinhos, aproveitando a localidade espacial. Vários níveis equilibram capacidade e tempo de busca: uma cache enorme levaria mais tempo para ser pesquisada.
Calcule o atraso médio
Suponha que uma verificação da cache leve 1 ns e um acesso à RAM leve 100 ns. Uma falta custa os dois, então leva 101 ns. Com uma taxa de acertos de 95%:
Com uma taxa de acertos de 80%:
A segunda média é vezes maior. Pondere o custo completo do acerto e o custo completo da falta pela frequência com que cada um ocorre. Esquecer a verificação da cache em uma falta mudaria a resposta desse modelo.
Uso de cache além do processador
O SO mantém conteúdo de arquivos em cache na RAM. Um navegador guarda em cache arquivos da web baixados no armazenamento, e redes de distribuição de conteúdo mantêm cópias perto dos usuários. Todos reutilizam cópias próximas para evitar buscas lentas repetidas. Limpar a cache do navegador remove arquivos do navegador; não limpa os circuitos de cache da CPU. As caches da CPU guardam pequenos blocos de memória, não uma biblioteca organizada de documentos inteiros.
Principais conclusões
- A hierarquia equilibra velocidade e custo por byte com capacidade.
- Um acerto na cache encontra uma cópia rápida; uma falta busca em um nível mais lento.
- A localidade temporal reutiliza conteúdo; a localidade espacial usa endereços próximos.
- O tempo médio de acesso pondera o custo completo dos acertos e das faltas.
- Caches de navegador, arquivos e CPU usam a mesma ideia geral em camadas diferentes.
5Como o sistema operacional põe os componentes para trabalhar
Abrir um aplicativo depende de mais do que um processador e um arquivo de programa. O sistema operacional atribui memória, compartilha o tempo do processador, verifica permissões e oferece serviços de arquivos e dispositivos. Acompanhe a inicialização do firmware ao núcleo e depois acompanhe um editor em execução por suas regiões de memória, eventos de entrada e uma solicitação para salvar. A memória virtual conecta a visão de endereços de cada processo à RAM física que ele tem permissão para usar.
5.1 As tarefas cotidianas do sistema operacional
Um sistema operacional (SO) gerencia o hardware e fornece serviços aos aplicativos. Windows, macOS e Linux atendem a computadores pessoais e servidores; Android e iOS atendem a dispositivos móveis. A área de trabalho visível é apenas uma parte desse trabalho.
Gerenciar recursos e ocultar detalhes do hardware
Como gerenciador de recursos, o SO atribui tempo de processador, memória de trabalho, arquivos e dispositivos a programas e usuários. Como uma abstração, ele fornece operações mais simples que ocultam os detalhes do hardware. Um editor de texto pode solicitar “abrir o arquivo report.txt” sem escolher trilhas de disco ou comandos de dispositivo.
| Função | O que o SO faz |
|---|---|
| Gerenciamento de processos | Inicia, escalona e encerra programas em execução |
| Gerenciamento de memória | Atribui memória e garante a separação |
| Gerenciamento de arquivos | Organiza arquivos, pastas e dados armazenados |
| Gerenciamento de dispositivos | Comunica-se com dispositivos por meio de drivers |
| Segurança | Faz cumprir as regras de contas e permissões |
| Rede | Fornece serviços para troca de dados |
A interface de usuário permite que as pessoas solicitem esse trabalho. Uma interface gráfica do usuário (GUI) usa janelas, ícones, menus e toque ou um ponteiro. Uma interface de linha de comando (CLI) aceita comandos digitados. Comandos como ls no Linux e macOS ou dir no Windows listam arquivos; scripts podem combinar comandos para tarefas repetidas.
O núcleo controla operações privilegiadas
O núcleo é a parte central do SO responsável pelo controle do hardware e pelos recursos protegidos. Os aplicativos são executados em modo usuário com privilégios restritos. O código do núcleo é executado em modo núcleo com privilégios maiores. Um aplicativo solicita um serviço protegido por meio de uma chamada de sistema, por exemplo pedindo ao SO que leia um arquivo.
O núcleo verifica as permissões e realiza a ação permitida. Um aplicativo defeituoso não pode simplesmente usar uma instrução comum do modo usuário para assumir o controle de todos os dispositivos ou ler a memória protegida de outro processo.
Compartilhar o tempo do processador
O escalonador decide qual programa pronto recebe tempo do processador. Turnos curtos em uma única sequência de processamento fazem a reprodução de música e a edição de documentos parecerem simultâneas. Múltiplos núcleos também permitem que trabalhos sejam executados no mesmo momento. Algumas CPUs oferecem suporte a múltiplas threads por hardware dentro de um núcleo, mas o compartilhamento de tempo continua necessário quando há mais trabalho pronto do que o hardware pode executar em conjunto.
Dar nomes a arquivos e drivers a dispositivos
Um sistema de arquivos acompanha o conteúdo dos arquivos e metadados como tamanho, datas e permissões. Pastas formam uma hierarquia; um caminho identifica um arquivo, por exemplo /home/sam/notes.txt no Linux. NTFS, APFS e ext4 são exemplos de sistemas de arquivos.
Excluir um arquivo geralmente remove sua entrada no diretório e libera seu espaço para reutilização. Isso é diferente de sobrescrever deliberadamente cada byte. Dados antigos às vezes podem continuar recuperáveis, especialmente em HDs; uma exclusão normal não garante o apagamento seguro.
Um driver traduz solicitações gerais de dispositivos em comandos que um controlador entende. Drivers padrão atendem a muitos teclados e unidades USB, enquanto alguns dispositivos exigem um driver específico.
Associar o software à sua função
O SO, os drivers e utilitários como ferramentas de cópia de segurança são software de sistema. Navegadores, editores, jogos e planilhas são software aplicativo. Sistemas móveis priorizam duração da bateria, toque e separação entre aplicativos; servidores oferecem suporte a serviços de rede. Um SO de tempo real cumpre prazos de resposta especificados para tarefas de controle. Dispositivos embarcados muito simples podem executar um programa sem um SO completo.
Principais conclusões
- O SO gerencia recursos compartilhados e oculta detalhes do hardware por trás de serviços.
- Chamadas de sistema solicitam serviços do núcleo a partir de aplicativos restritos ao modo usuário.
- O escalonador compartilha o tempo do processador entre trabalhos prontos.
- Sistemas de arquivos acompanham conteúdo, nomes, caminhos e permissões dos arquivos.
- Drivers conectam solicitações gerais do SO a comandos específicos de dispositivos.
- O software de sistema executa e mantém o computador; aplicativos realizam tarefas do usuário.
5.2 Da ligação do computador ao documento salvo
Inicializar um computador e iniciar um aplicativo envolvem etapas diferentes. A inicialização coloca o sistema operacional no controle. O carregamento do aplicativo cria então um processo em execução que usa o processador, a memória e os serviços do SO.
Comece com instruções persistentes
Ao ligar o computador, a RAM de trabalho não tem um programa em execução que possa ser usado. A CPU começa com o firmware armazenado em memória não volátil. Em um PC moderno, o firmware UEFI prepara o hardware e realiza verificações de inicialização, frequentemente chamadas de autoteste de inicialização (POST). Ele seleciona um dispositivo de inicialização e inicia um carregador de inicialização. O carregador de inicialização carrega o núcleo do SO na RAM e transfere o controle a ele. O núcleo prepara o gerenciamento de memória, os drivers e os serviços antes de a tela de login ou a tela inicial aparecer.
Transforme um arquivo de programa em um processo
Um programa é um conjunto de instruções armazenadas. Um processo é uma instância em execução, com memória, estado dos registradores e recursos. Instâncias separadas de um editor podem manter documentos separados, mesmo tendo sido iniciadas a partir do mesmo arquivo de programa.
Para iniciar um aplicativo, o SO verifica o executável e a permissão para executá-lo, cria um espaço de endereços, carrega o código e os dados necessários inicialmente, configura uma pilha e define o endereço de sua instrução inicial. Mais páginas podem ser carregadas quando usadas. O escalonador dá ao processo tempo na CPU, que executa suas instruções de máquina.
Regiões diferentes guardam conteúdos diferentes
| Região | Conteúdo |
|---|---|
| Código | Instruções de máquina |
| Dados | Variáveis globais |
| Heap | Memória solicitada durante a execução do programa |
| Pilha | Chamadas de função ativas, valores locais e endereços de retorno |
Chamar uma função acrescenta informações à pilha; retornar libera a parte dessa chamada. Chamadas repetidas sem um ponto de parada podem esgotar a pilha, causando um estouro da pilha. Um vazamento de memória ocorre quando um programa mantém memória de que não precisa mais, fazendo crescer a quantidade que permanece alocada. Apenas usar uma grande quantidade de memória não é suficiente para diagnosticar um vazamento.
Separe endereços de posições físicas
A memória virtual dá a cada processo seu próprio espaço de endereços. O SO e a unidade de gerenciamento de memória (MMU) da CPU mapeiam endereços virtuais para a RAM física em páginas, frequentemente de 4 KiB. Dois processos podem usar 0x1000 para posições físicas diferentes. As permissões de acesso impedem leituras ou escritas não autorizadas; o SO também pode permitir explicitamente páginas compartilhadas.
Um acesso proibido causa uma falha, que pode encerrar o processo. No Linux ou macOS, um programa em C pode informar uma “falha de segmentação”. Um endereço virtual identifica uma posição no mapa daquele processo, não necessariamente um byte da RAM com a mesma numeração.
Quando a demanda por memória é alta, o SO pode mover páginas inativas para um arquivo de troca ou de paginação no armazenamento. Recuperar uma página usada como exemplo em 100 µs leva cerca de 1.000 vezes o tempo de um acesso à RAM de 100 ns. O movimento repetido de páginas, chamado paginação excessiva, pode dominar o tempo de execução. Reduzir a demanda de memória ativa ou acrescentar RAM pode ajudar.
Acompanhe o pressionamento de uma tecla pelas camadas
Um controlador de teclado sinaliza uma interrupção. O tratador e o driver do SO obtêm o evento e o entregam ao processo do editor. O editor atualiza o documento em sua memória e pede aos serviços gráficos do SO que atualizem a tela. Salvar solicita ao sistema de arquivos que escreva o documento no armazenamento. Quando o processo termina, o SO recupera sua memória e seus recursos. Os dados salvos permanecem; as alterações mantidas apenas na memória do processo desaparecem.
Principais conclusões
- O firmware inicia antes de o carregador de inicialização carregar o núcleo.
- Um processo é uma instância de um programa em execução com seu próprio estado.
- Código, dados, heap e pilha guardam partes diferentes de um processo.
- A memória virtual mapeia endereços de processos para a RAM e faz cumprir as permissões de acesso.
- A troca entre memória e armazenamento usa o armazenamento para páginas; transferências frequentes podem causar paginação excessiva.
- A edição altera a memória de trabalho; salvar escreve o documento no armazenamento.
- O SO recupera os recursos de um processo quando ele termina.
Exercícios resolvidos de Como os computadores funcionam
1Rastrear os caminhos dentro de um computador
13 passos
- 1IntroduçãoAcompanhe uma ação simples
Abrir uma foto envolve várias partes: a entrada solicita a ação, o armazenamento guarda o arquivo, a RAM mantém o conteúdo de trabalho e o processador segue instruções para exibi-lo. As instruções compartilham a memória com os dados, a arquitetura de von Neumann, de modo que uma só máquina pode executar muitas tarefas.
Vamos separar essas funções, rastrear uma transferência de memória e ver como os dispositivos recebem atenção (uma interrupção) sem manter a CPU esperando. Essas funções também descrevem um celular ou um controlador dentro de um dispositivo maior.
- 2ExplicaçãoLocalize os componentes de trabalho
A CPU executa instruções. A RAM guarda as instruções e os dados atuais; um SSD ou HD guarda arquivos persistentes. Dispositivos de entrada fornecem dados, e dispositivos de saída apresentam resultados ou agem com base neles.
A placa-mãe conecta esses componentes. Um celular combina muitas funções em um sistema em um chip. O gabinete inteiro do computador não é a CPU: o processador é um componente dentro do sistema.
- 3Ideia-chaveProgramas são conteúdo da memória
No modelo de von Neumann, uma única memória principal guarda instruções e dados. A CPU busca instruções binárias nela, permitindo que um novo programa carregado dê uma tarefa diferente ao mesmo hardware.
Um padrão de bits não tem significado próprio para a memória. O byte
01000001pode representar 65, a letra “A” do ASCII ou parte de uma instrução. Seu uso fornece a interpretação. - 4DesafioMude a tarefa
Um controlador de temperatura e um notebook contêm processadores, memória e entrada e saída. Por que o controlador é um sistema embarcado e o que permite que o notebook passe da edição de texto para a reprodução de áudio?
---reveal---
O controlador realiza uma tarefa específica dentro de outro dispositivo. O notebook muda de tarefa executando instruções armazenadas diferentes. As funções do hardware permanecem as mesmas enquanto o programa muda o trabalho que realizam.
- 5AnalogiaEscolha uma caixa de correio e depois seu conteúdo
Pense nas posições de memória como caixas de correio numeradas. O endereço seleciona uma caixa; os dados são o que ela contém. Uma leitura solicita seu conteúdo, e uma escrita o substitui.
No barramento de sistema clássico, o barramento de endereços seleciona a posição, o barramento de dados transporta o conteúdo e o barramento de controle transporta o comando de leitura ou escrita. Alterar o conteúdo nunca muda o número da posição.
- 6ExemploLeia o endereço 200
A CPU quer o conteúdo do endereço de memória 200. Ela envia 200 pelo barramento de endereços e ativa um comando de leitura no barramento de controle.
A memória encontra essa posição e coloca seu conteúdo, aqui 7, no barramento de dados. A CPU recebe 7 em um registrador. O endereço fez a seleção; os dados retornados fornecem o valor. Nenhuma escrita ocorre, então o conteúdo da posição 200 permanece 7.
- 7ExplicaçãoConte posições e transferências
Com 16 bits de endereço, uma memória endereçável por byte tem 65.536 posições, ou 64 KiB. Acrescentar um bit de endereço dobra essa faixa.
A largura de dados responde a outra pergunta. Um caminho de 64 bits transfere 8 bytes por transferência. A um bilhão de transferências por segundo, sua largura de banda é 8 GB/s. Mais bits de endereço permitem identificar mais posições; mais bits de dados permitem transferir mais conteúdo em uma transferência.
- 8DesafioSepare as duas larguras
Um sistema didático endereçável por byte tem 11 bits de endereço e um caminho de dados de 16 bits. Quanta memória ele pode endereçar e quantos bytes são transferidos de uma vez?
---reveal---
Ele pode endereçar bytes, ou 2 KiB. O caminho de dados transporta 2 bytes por transferência porque cada byte tem 8 bits. Multiplicar a quantidade de endereços por dois pressuporia incorretamente que cada endereço identifica dois bytes.
- 9ExplicaçãoConverta entre sinais e valores
Um microfone fornece entrada, e um alto-falante fornece saída. O som varia continuamente, enquanto um computador guarda valores digitais. Um ADC amostra a entrada e codifica as medições como números; um DAC converte valores digitais de saída em um sinal analógico.
Uma tela sensível ao toque realiza duas funções: detectar toques fornece entrada e exibir uma imagem fornece saída. Um dispositivo pode conter circuitos de processamento e ainda ser classificado por essa função.
- 10ConexãoControlador e driver trabalham juntos
Um controlador é hardware que se comunica com um dispositivo. Um driver é software que transforma solicitações do SO em comandos para esse controlador.
A consulta periódica pergunta repetidamente se o dispositivo está pronto. Com uma interrupção, o controlador sinaliza quando precisa de atenção. Para um bloco grande, o DMA pode transferir conteúdo entre o dispositivo e a RAM enquanto a CPU trabalha em outra coisa e depois sinalizar a conclusão.
- 11DesafioEvite verificações sem resultado
Um scanner envia uma imagem grande para a RAM. A CPU configura a transferência, continua outra tarefa e recebe um sinal de conclusão. Qual é a contribuição do DMA e qual é a da interrupção?
---reveal---
O DMA transfere o bloco da imagem sem que a CPU copie cada byte. A interrupção anuncia que a transferência terminou para que o SO possa tratá-la. A CPU ainda organiza a transferência; ela simplesmente evita fazer todo o trabalho de mover os bytes.
- 12DesafioRelacione uma leitura a um resultado
Um controlador de estufa lê um valor digital de temperatura para a RAM, calcula uma decisão e abre uma válvula. Quais são sua entrada e sua saída, e o que precisa passar entre a memória e a CPU?
---reveal---
A leitura da temperatura é a entrada, e o acionamento da válvula é a saída. A CPU precisa tanto das instruções de controle armazenadas quanto da leitura da memória. O endereçamento seleciona essas posições, a transferência de dados transporta seu conteúdo e os sinais de controle coordenam o acesso.
- 13RecapitulaçãoLeia o caminho completo
Identifique primeiro a função: entrada, processamento, memória de trabalho, armazenamento persistente ou saída. Depois, distinga a posição selecionada do conteúdo transferido.
Instruções armazenadas dizem à CPU o que fazer; barramentos ou conexões modernas transportam endereçamento, valores e comandos. Controladores e drivers conectam dispositivos, enquanto interrupções e DMA permitem que o trabalho lento ou volumoso dos dispositivos compartilhe um computador rápido de forma eficiente.
2Construir e rastrear uma operação do processador
19 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoTorne a execução visível
- 2ExplicaçãoLeia a regra de uma porta
- 3ExemploProduza um vai-um
- 4DesafioAvalie as saídas intermediárias
- 5ConexãoMantenha um resultado entre etapas
- 6ExplicaçãoAtribua as funções do processador
- 7DesafioMantenha endereço e conteúdo separados
- 8ExplicaçãoBusque antes de usar a instrução
- 9ExemploPrimeira instrução: carregar
- 10ExemploSegunda instrução: somar
- 11ExemploTerceira e quarta: armazenar e parar
- 12DesafioExecute ou ignore um desvio
- 13Ideia-chaveContinue após uma interrupção
- 14ExemploCompare uma quantidade fixa de ciclos
- 15ExemploDivida apenas o trabalho paralelo
- 16ExplicaçãoSobreponha etapas, não significados
- 17DesafioEstime uma nova tarefa paralela
- 18DesafioExplique um pipeline rápido sem trabalho
- 19RecapitulaçãoRelacione bits, estado e tempo
3Acompanhar um programa do texto à execução
13 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoSepare as formas do programa
- 2ExplicaçãoDivida uma instrução em campos
- 3ExplicaçãoIdentifique o contrato do hardware
- 4ExemploConfigure uma contagem regressiva
- 5ExemploConte as execuções, incluindo a saída
- 6DesafioMude o início e rastreie a saída
- 7ExplicaçãoConstrua antes de executar
- 8ConexãoDetermine onde fica o código da biblioteca
- 9DesafioExplique uma construção bem-sucedida com saída incorreta
- 10Ideia-chaveA interpretação também executa código de máquina
- 11DesafioLeve o programa para outra CPU
- 12DesafioRastreie dois caminhos até o mesmo hardware
- 13RecapitulaçãoMantenha clara a função de cada camada
4Comparar memória e calcular efeitos da cache
14 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoFaça duas perguntas sobre dados armazenados
- 2ExplicaçãoSepare conteúdo de trabalho e conteúdo persistente
- 3ExemploLeia a unidade de capacidade
- 4DesafioLocalize o último byte
- 5ExplicaçãoSepare a espera do fluxo
- 6ExemploEncontre uma parte do atraso de um disco
- 7DesafioAssocie o comportamento do armazenamento à necessidade
- 8ExplicaçãoDesça na hierarquia
- 9ConexãoPreveja os próximos bytes úteis
- 10ExemploInclua as duas partes de uma falta
- 11ExemploAltere a taxa de acertos
- 12DesafioCalcule uma nova média de cache
- 13DesafioEscolha a melhoria relevante
- 14RecapitulaçãoAssocie o recurso à necessidade
5Acompanhar a inicialização, o pressionamento de uma tecla e o salvamento
15 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoAcompanhe um editor pelo sistema
- 2ExplicaçãoSolicite um serviço
- 3ExemploCompartilhe o tempo de execução
- 4DesafioIdentifique o limite do SO
- 5ExplicaçãoComece antes do sistema operacional
- 6ExemploCrie a instância em execução
- 7ExplicaçãoDê funções diferentes às regiões de memória
- 8AnalogiaUse um mapa privado de endereços
- 9DesafioMantenha endereços iguais separados
- 10Ideia-chaveO armazenamento pode dar suporte à memória, lentamente
- 11ExemploEntregue o evento de tecla
- 12ExemploSalve para além da duração do processo
- 13DesafioSepare dois tipos de lentidão
- 14DesafioRelacione proteção de processos e salvamento
- 15RecapitulaçãoRastreie os serviços em ordem
Questões de Como os computadores funcionam
Conjunto 1: Conexões, tradução e escolhas de memória10 Questões de Prática
Questão 1 de 10
Mostrar respostaOcultar resposta
Questão 2 de 10
Mostrar respostaOcultar resposta
Questão 3 de 10
JUMPZ 18 é buscada no endereço 7 enquanto o ACC é 4. Qual endereço será buscado em seguida?Mostrar respostaOcultar resposta
Questão 4 de 10
Mostrar respostaOcultar resposta
Questão 5 de 10
0010. Como ADD 13 é codificada?Mostrar respostaOcultar resposta
1101 em binário, então a instrução é 0010 1101. Inverter os campos altera tanto a operação quanto o operando. O operando é um endereço aqui; codificá-lo não exige conhecer o conteúdo armazenado no endereço 13.Questão 6 de 10
Mostrar respostaOcultar resposta
Questão 7 de 10
Mostrar respostaOcultar resposta
Questão 8 de 10
Mostrar respostaOcultar resposta
Questão 9 de 10
Mostrar respostaOcultar resposta
Questão 10 de 10
Mostrar respostaOcultar resposta
Conjunto 2: Componentes, instruções e trabalho cotidiano do computador10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
LOAD 30 e o endereço 30 guarda 14. O PC começa em 8. Quais são os valores do PC e do ACC após a execução dessa instrução?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
LOAD, ADD e outros mnemônicos de linguagem de montagem em instruções binárias. Que tipo de ferramenta é essa?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
0x3000 para dados privados. Uma armazena 9 nele e a outra armazena 22. Por que os dois valores podem permanecer intactos?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 3: Rastrear escolhas e comparar desempenho10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
(A XOR B) AND (NOT C) quando A = 1, B = 1 e C = 0?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
LOAD 40, SUB 41, STORE 40, JUMPZ 5, JUMP 0, HALT nos endereços 0–5. A posição 40 começa em 2 e a posição 41 guarda 1. Começando com o PC em 0, quantas instruções são executadas até HALT, inclusive?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
LOAD 50, SUB 51, JUMPZ 4, ADD 51, STORE 52, HALT nos endereços 0–5. As posições 50 e 51 guardam ambas 6. O que está armazenado em 52 quando ela para?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 4: Diagnosticar o comportamento de sistemas computacionais10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 5: Relacionar instruções, memória e sistema operacional10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
LOAD 19 diretamente?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Travou em uma questão sua? Ajuda com Tarefas
Termos-Chave
A
Acerto e falta na cache
Acesso direto à memória (DMA)
Acumulador
Armazenamento em nuvem
Armazenamento secundário
Arquitetura de von Neumann
Arquitetura do conjunto de instruções (ISA)
Arquitetura Harvard
Á
Área de alocação dinâmica (heap)
B
Barramento
Barramento de controle
Barramento de dados
Barramento de endereços
Bytecode
C
Carregador de inicialização (bootloader)
Chamada de sistema
Ciclo de busca, decodificação e execução
Ciclo de clock
Código de máquina
Código de operação (opcode)
Código-fonte
Compilação em tempo de execução (JIT)
Compilador
Conceito de programa armazenado
Consulta periódica (polling)
Contador de programa
Controlador de dispositivo
Conversor analógico-digital
Conversor digital-analógico
D
Desvio
Disco óptico
Dispositivo de entrada
Dispositivo de saída
Driver de dispositivo
E
Escalonador
Escrita do resultado (write-back)
Estouro da pilha (stack overflow)
Execução em pipeline
Executável
F
Firmware
Fita magnética
Flip-flop
Frequência de clock
H
Hardware
Hierarquia de memória
I
Indicador de estado (flag)
Interface gráfica do usuário (GUI) e interface de linha de comando (CLI)
ls em uma linha de comando para solicitar a listagem de seus arquivos.Interpretador
Interrupção
L
Largura de banda
Latch
Lei de Moore
Ligação estática e dinâmica
Ligador (linker)
Linguagem de montagem (assembly)
Linha de cache
Localidade espacial
Localidade temporal
M
Máquina virtual
Meio somador
10.Memória cache
Memória de acesso aleatório (RAM)
Memória endereçável por byte
Memória RAM dinâmica (DRAM)
Memória RAM estática (SRAM)
Memória somente de leitura (ROM)
Memória virtual
Montador
N
Nivelamento de desgaste
Núcleo de processamento
Núcleo do sistema operacional (kernel)
O
Operando
LOAD 10, o operando é o endereço 10, cujo conteúdo é lido para o acumulador, ACC.P
Página
Paginação excessiva (thrashing)
Palavra
Pilha de execução
Porta E (AND)
Porta lógica
Porta NÃO (NOT)
Porta NÃO E (NAND)
Porta NÃO OU (NOR)
Porta OU (OR)
Porta OU exclusivo (XOR)
Processo
R
Redução de frequência por aquecimento (thermal throttling)
Registrador
Registrador de dados de memória
Registrador de endereços de memória
Registrador de instrução
RISC e CISC
S
Sistema de arquivos
/home/sam/notes.txt identifica um arquivo Linux sem revelar quais blocos de armazenamento o contêm.Sistema em um chip (SoC)
Sistema embarcado
Sistema operacional
Sistema operacional de tempo real
Software
T
Tabela-verdade
Taxa de acertos
Tempo de acesso e taxa de transferência
Transistor
Tratador de interrupção
Troca entre memória e armazenamento (swapping)
U
Unidade de controle
Unidade de disco rígido (HD ou HDD)
Unidade de estado sólido (SSD)
Unidade de gerenciamento de memória (MMU)
Unidade de processamento gráfico (GPU)
Unidade lógica e aritmética (ULA)
V
Vazamento de memória
Sobre esta aula
Crie seus próprios Materiais de Estudo
Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.