0% acharam este documento útil (0 voto)
4 visualizações47 páginas

Inf 2

O documento aborda o funcionamento e a estrutura dos processadores (CPUs), destacando suas principais unidades, como a Unidade de Controle e a Unidade Lógica e Aritmética. Ele também discute a diferença entre processadores de 32 e 64 bits, suas capacidades de endereçamento, desempenho e segurança, além de mencionar conceitos como multicore, interrupções e diferentes tipos de unidades de processamento, como GPUs e NPUs. Por fim, o texto enfatiza a importância do clock do processador e do CPI na avaliação do desempenho.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
4 visualizações47 páginas

Inf 2

O documento aborda o funcionamento e a estrutura dos processadores (CPUs), destacando suas principais unidades, como a Unidade de Controle e a Unidade Lógica e Aritmética. Ele também discute a diferença entre processadores de 32 e 64 bits, suas capacidades de endereçamento, desempenho e segurança, além de mencionar conceitos como multicore, interrupções e diferentes tipos de unidades de processamento, como GPUs e NPUs. Por fim, o texto enfatiza a importância do clock do processador e do CPI na avaliação do desempenho.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Evandro Dalla Vecchia

Aula 01

PROCESSADOR (CPU)
Um processador, também conhecido como CPU (Central Processing Unit), ou ainda em
português, como algumas bancas cobram, UCP (Unidade Central de Processamento), é o
componente principal de um computador. Por isso, muitas vezes é chamado de cérebro do
computador ou do sistema!

O trabalho principal do CPU é processar dados, executar cálculos e controlar as operações de


outros componentes do sistema, como por exemplo a entrada/saída de dados (teclado, mouse,
monitor etc.).

O processador interpreta e executa as instruções armazenadas na memória do computador,


realizando tarefas como operações matemáticas (adição, subtração etc.), lógicas (AND, OR etc.) e
de controle de fluxo. Quanto melhor for o desempenho do processador, mais rapidamente o
computador terá condições de realizar tarefas e manipular informações.

Os processadores modernos vêm em diferentes arquiteturas, predominantemente RISC (Reduced


Instruction Set Computer), CISC (Complex Instruction Set Computer) ou uma combinação delas.
Além disso, os processadores podem ter vários núcleos (multicore), permitindo a realização de
múltiplas tarefas simultaneamente.

Os componentes essenciais de um processador são:

●​ Unidade de Controle (UC);


●​ Unidade Lógica e Aritmética (ULA);
●​ Registradores;
●​ Interconexão da CPU: barramentos que proporcionam a comunicação entre a UC, ULA e
os registradores.

Obs.: É comum também encontrarmos a cache L1 e L2 no chip do processador, mas não são
componentes essenciais. Estão ali para um melhor desempenho.

Unidade de Controle (UC)

A Unidade de Controle (UC) é responsável por receber instruções pelo barramento de instruções.
As instruções vêm da memória de acordo com o endereço enviado pela UC para a memória
através do barramento de endereço das instruções. A Unidade de Controle não executa as
instruções. Ela as lê, decodifica e passa os comandos para a UCD (Unidade de Ciclo de Dados,
não veremos essa unidade, pois não cai em prova de concurso) determinando como as instruções
devem ser executadas e com quais dados.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 4


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Baseada nesses comandos, a UCD pode buscar os dados necessários na memória, executar as
devidas operações e enviar o resultado de volta para a memória para ser armazenado. Tudo é
controlado de acordo com os comandos internos enviados pela UC, que por sua vez se baseia na
instrução decodificada. Obs.: como a UCD pouco é cobrada em provas de concurso, pode-se
considerar como certa uma questão que diga que a UC é a responsável pela execução.

Tudo isso é controlado por um sinal síncrono de relógio (clock). A cada clock a unidade sabe que
deve executar um passo, passar os dados para quem deve, e se preparar para o próximo passo.
Obviamente que quanto mais rápido for o relógio, mais operações por segundo o processador
consegue executar. A velocidade do relógio é medida em frequência, utilizando a unidade Hertz
(Hz).

Um Hertz significa um passo por segundo. Os processadores atuais trabalham na faixa dos
poucos GHz (bilhão de Hertz, ou de passos por segundo). As instruções podem ser simples
(adição, subtração etc.), mas fazem isso em uma grande velocidade!

Unidade Lógica e Aritmética (ULA)

A Unidade Lógica e Aritmética (ULA) efetua operações, como adição, subtração, “E” lógico
(AND), “OU” lógico (OR) etc. Tais operações são efetuadas sobre suas entradas, produzindo um
resultado no registrador de saída. Depois, esse valor pode ser escrito na memória principal, caso
seja desejado.

Grande parte das instruções pode ser classificada como registrador-memória ou


registrador-registrador. Instruções registrador-memória permitem que palavras1 de memória
sejam buscadas diretamente para a ULA, e armazena a partir da ULA diretamente em memória.
Instruções registrador-registrador buscam dois operandos nos registradores para a ULA, efetua a
operação e armazena o resultado em um dos registradores.

Registradores e Ciclo de Instrução

Os registradores são pequenas memórias (8 a 128 bits - depende do processador) de alta


velocidade que ficam dentro da CPU. Eles armazenam resultados temporários e o controle de
informações, sendo que alguns são de uso geral e outros de uso específico. O registrador mais
importante é o PC (Program Counter), que indica a próxima instrução a ser buscada para
execução. Outro importante é o IR (Instruction Register), que mantém a instrução que está sendo
executada. Os registradores são memórias do tipo SRAM (Static RAM), diferente da memória
principal, que é do tipo DRAM (Dynamic RAM, mas comumente chamada apenas de RAM).

Vamos ver o passo a passo do ciclo conhecido como buscar-decodificar-executar:

1.​ Traz a próxima instrução da memória para o registrador de instrução (IR);


2.​ Altera o registrador contador de programa (PC) para que aponte para a próxima instrução;
3.​ Determina o tipo de instrução trazida;
4.​ Se a instrução utilizar uma palavra na memória, determina onde ela está;
5.​ Traz a palavra para um registrador da CPU, se necessário;

1
Palavras são as unidades de dados movimentadas entre a memória e os registradores. Ex.: palavra de 64 bits.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 5


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

6.​ Executa a instrução;


7.​ Volta à etapa 1, para a execução da próxima instrução.

No passo a passo acima, vimos a função de apenas 2 registradores de uso específico, o PC e o IR


(geralmente os mais cobrados em provas de concurso), mas vamos ver outros que já foram
cobrados também:

●​ PC (Program Counter): contém o endereço de uma instrução a ser lida (a próxima


instrução);
●​ IR (Instruction Register): contém a instrução lida mais recentemente (a instrução atual);
●​ MAR (Memory Address Register): contém o endereço de um local de memória;
●​ MBR (Memory Buffer Register): contém uma palavra de dados para ser escrita na memória
ou a palavra lida mais recentemente.
●​ SP (Stack Pointer): contém o endereço atual do elemento superior da pilha. Essa pilha
armazena informações sobre as sub-rotinas ativas de um programa. Seu principal uso é
registrar o ponto em que cada sub-rotina ativa deve retornar o controle de execução
quando termina a execução;
●​ PSW (Program Status Word): contém códigos de condição e os bits de informação do
status, bit de interrupção habilitado/desabilitado, bit de modo supervisor/usuário. Ou seja,
o PSW contém informações de status, como o nome sugere.

Uma observação importante a ser feita em relação ao PSW, é que o bit de modo
supervisor/usuário serve para definir se uma instrução privilegiada pode ser executada ou não.
Por exemplo, para ter acesso ao hardware, são utilizadas chamadas de sistema (syscalls) do
sistema operacional, as quais exigem a execução de instruções privilegiadas. Um usuário
“comum” não deve conseguir acessar diretamente o hardware, ou outras atividades que exijam a
execução de instruções privilegiadas.

Processadores 32 x 64 bits
A principal diferença entre processadores de 32 bits e 64 bits está na quantidade de dados que
podem ser processados de uma vez. Vamos ver alguns detalhes abaixo.
Tamanho de Palavra:
●​ Processador de 32 bits: Pode processar dados em blocos (“pedaços”) de 32 bits por vez.
Ou seja, pode lidar com números inteiros de até 32 bits = 232 = [Link] valores
possíveis;
●​ Processador de 64 bits: Pode processar dados em blocos (“pedaços”) de 62 bits por vez.
Ou seja, pode lidar com números inteiros de até 64 bits = 264 =
[Link].709.551.616 valores possíveis. Resumindo, um número extremamente
grande!
Capacidade de Endereçamento:
●​ Processador de 32 bits: Pode endereçar até 4 GB de memória RAM (232 = [Link] =
4 Giga). Ou seja, o sistema pode acessar no máximo 4 GB de memória RAM, o que pode
ser um problema na atualidade;
●​ Processador de 64 bits: Possui uma capacidade de endereçamento muito maior,
teoricamente permitindo acessar até 18,4 milhões de terabytes de RAM. Na prática, isso é
muito mais do que qualquer sistema atual necessita!

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 6


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Desempenho e Eficiência:
●​ Processador de 64 bits: Em situações que lidam com grandes conjuntos de dados,
processadores de 64 bits podem oferecer um desempenho superior.
Compatibilidade de Software:
●​ Processador de 32 bits: Pode executar software compilado para sistemas de 32 bits;
●​ Processador de 64 bits: Pode executar tanto software de 32 bits quanto de 64 bits. Porém,
para aproveitar completamente os benefícios de um processador de 64 bits, o software
necessita ser otimizado para essa arquitetura.
Segurança:
●​ Processador de 64 bits: Introduziu alguns recursos de segurança aprimorados que ajudam
a prevenir certos tipos de ataques de software malicioso.
De uma forma resumida, a principal vantagem dos processadores de 64 bits é a capacidade de
lidar com quantidades muito maiores de memória e, em determinadas situações, oferecer um
desempenho melhor.

Alguns conceitos e considerações


A seguir veremos alguns conceitos e características dos processadores.
Núcleos físicos e lógicos: A maioria dos processadores modernos possui núcleos físicos e lógicos.
Os núcleos lógicos vêm da tecnologia de hyper-threading (HT), da Intel, ou SMT (Simultaneous
Multithreading), da AMD. Essas tecnologias permitem que um núcleo físico execute mais de uma
thread simultaneamente.
Litografia: Refere-se ao tamanho dos transistores no chip (ex: 7nm, 5nm, 3nm). Litografias
menores permitem:
●​ Mais transistores no mesmo espaço físico;
●​ Menor consumo de energia;
●​ Maior desempenho por watt.
Suporte à virtualização: Os processadores modernos possuem suporte nativo à virtualização,
como Intel VT-x ou AMD-V, sem a necessidade de hardware adicional. Basta habilitar no
BIOS/UEFI.
Arquiteturas RISC e CISC: A arquitetura RISC (Reduced Instruction Set Computing) é utilizada em
algumas plataformas (como ARM, comum em dispositivos móveis e Apple M1/M2), mas a maioria
dos desktops e servidores utiliza a arquitetura CISC (Complex Instruction Set Computing), como
os processadores x86 e x86-64 da Intel e AMD.

Multicore: múltiplos núcleos (cores) em um processador. Um núcleo (core) é a CPU em um chip,


sendo que um processador multicore inclui dois ou mais núcleos independentes no mesmo chip.
A ideia dos processadores multicore é melhorar o desempenho do processamento, permitindo
que o computador execute várias tarefas simultaneamente. Ou seja, cada núcleo pode executar
suas próprias instruções, processar dados e realizar operações separadamente dos outros
núcleos, o que resulta em um aumento geral no desempenho e na capacidade de resposta do
computador.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 7


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Interrupção: mecanismo pelo qual outros módulos (ex.: E/S) podem interromper a sequência
normal do processamento, ou seja, pode interromper o ciclo de instrução. As interrupções
podem ser causadas por:

●​ Programa, ex.: overflow, divisão por zero;


●​ Timer, gerado pelo temporizador interno do processador;
●​ Controlador de E/S;
●​ Falha de hardware, ex.: erro de paridade de memória.

A execução de um programa só termina se:


●​ A máquina for desligada;
●​ Houver algum tipo de erro irrecuperável;
●​ For encontrada uma instrução que interrompa o computador.

Clock do processador: A velocidade de clock mede o número de ciclos de cálculos por segundo
realizados pela CPU. Por exemplo, um chip com 3,6 GHz (mostrado na figura abaixo) significa que
ele realiza 3,6 bilhões de ciclos por segundo. Em teoria, quanto maior a velocidade de clock,
melhor será o desempenho do dispositivo ao abrir programas e realizar outras ações.

Ciclos por Instrução (CPI): É uma métrica que indica o número médio de ciclos de clock
necessários para executar uma única instrução. É uma medida importante do desempenho do
processador, pois um CPI mais baixo geralmente significa um processador mais rápido e
eficiente. O CPI é calculado dividindo o número total de ciclos de clock utilizados pela
quantidade total de instruções executadas:
CPI = Ciclos Totais / Instruções Totais
Coprocessador: É uma CPU usada para suplementar as funções do processador principal. As
operações realizadas pelo coprocessador podem ser de:
●​ ponto flutuante aritmético;
●​ computação gráfica;
●​ processamento de sinais;
●​ processamento de cadeias de caracteres;

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 8


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

●​ criptografia.
GPU (Graphics Processing Unit): Processador composto por muitos núcleos menores e mais
especializados. Trabalhando em conjunto, os núcleos oferecem desempenho massivo quando
uma tarefa de processamento pode ser dividida.
CPU x GPU: A é adequada para uma ampla variedade de cargas de trabalho. Concentra seu
menor número de núcleos em tarefas individuais e em fazê-las rapidamente. Em relação às GPUs,
além de processamento gráfico, evoluíram para se tornarem também processadores paralelos de
fins gerais, como por exemplo, para quebrar senhas.
NPU (Neural Processing Unit): A Unidade de Processamento Neural (NPU) é especializada em
realizar operações de inteligência artificial (IA) e aprendizado de máquina, simulando redes
neurais. Algumas características essenciais são:
●​ Aceleração de IA, com a execução de cálculos específicos para redes neurais, como
convoluções e multiplicações de matrizes;​ ==26a66d==

●​ Eficiência energética, sendo projetada para ser mais eficiente que CPUs e GPUs para IA;​

●​ Tem seu uso no processamento de visão computacional, reconhecimento de fala e outros


modelos de IA em dispositivos móveis e embarcados.
TPU (Tensor Processing Unit): A Unidade de Processamento Tensorial, desenvolvida pelo Google,
é otimizada para computação de aprendizado profundo usando tensores. Suas características
principais são:
●​ Especialização em TensorFlow: Projetada para acelerar a execução de modelos TensorFlow
(implementações de aprendizado de máquina e aprendizado profundo usando o
framework TensorFlow, desenvolvido pelo Google);​

●​ Processamento de tensores: Otimizada para operações como multiplicação de matrizes e


convoluções em redes neurais profundas;​

●​ Desempenho e eficiência: Supera GPUs em eficiência para tarefas específicas de IA;​

●​ Precisão: O TPU v2 suporta precisão de ponto flutuante de 16 bits e 32 bits, enquanto o


TPU v1 suporta apenas precisão inteira de 8 bits. A inclusão de precisão de 16 bits e 32
bits no TPU v2 permite maior precisão do modelo e flexibilidade ao lidar com diferentes
tipos de cargas de trabalho de aprendizado de máquina.​

TPUs costumam ser utilizados no treinamento e inferência de modelos de aprendizado profundo


em servidores e data centers. Como exemplo, a Google TPU v4 é usada no Google Cloud.
Socket (soquete) do processador: É o local onde o processador é instalado. Cada geração de
processadores possui compatibilidade com um tipo específico de socket. Por exemplo, os chips
Intel Core i3 e i5 da série 4000 são compatíveis com o socket LGA1150. Já os AMD A4, A6 e A8
são compatíveis com o socket FM2. E por aí vai…
ACPI (Advanced Configuration and Power Interface): padrão da indústria que define uma
interface de software e hardware para a gestão de energia e configuração avançada em sistemas

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 9


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

operacionais modernos. Veio para substituir padrões mais antigos, como o APM (Advanced
Power Management), e é amplamente utilizado em computadores e em outros dispositivos que
executam sistemas operacionais como o Windows, Linux e outros. A ACPI permite que um
sistema operacional se comunique de forma eficiente com o hardware para gerenciar recursos
como energia, temperatura, dispositivos de entrada/saída e configuração do sistema.
Processador Vetorial

Como o nome sugere, um processador vetorial é projetado para realizar operações em vetores
de dados de forma eficiente, sendo otimizado para executar instruções em conjuntos de dados
(organizados em vetores), incluindo matrizes, arrays (vetores) ou outros tipos de estruturas de
dados semelhantes. Alguns pontos a serem destacados:

●​ Sua principal característica é a capacidade de executar uma única instrução em múltiplos


elementos de um vetor simultaneamente, em paralelo. Isso significa que não há a
necessidade de verificar conflitos de dados entre essas operações (diferente de
processadores convencionais quando há operações executadas em paralelo);​

●​ Processadores vetoriais são úteis em aplicações que envolvem operações intensivas em


dados, como computação científica, simulações físicas, processamento de imagens e
vídeo, entre outros.

Exemplos de processadores vetoriais incluem o Intel Xeon Phi, o IBM POWER8 e o NVIDIA Tesla,
processadores usados em uma variedade de supercomputadores, servidores e sistemas de alto
desempenho.

Referências Bibliográficas
Monteiro, M. A. Introdução à Organização de Computadores. 5. ed. LTC, 2024.
Stallings, W. Arquitetura e Organização de Computadores. 11. ed. Bookman, 2024.
Tanenbaum, A. S. Organização Estruturada de Computadores. 6. ed. Pearson, 2013.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 10


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

MULTIPROCESSAMENTO / PROCESSAMENTO PARALELO


As especificações para uma arquitetura de computação básica (von Neumann) são aplicadas aos
sistemas que executam de forma sequencial (uma instrução de cada vez). Contrariando o que
dizia von Neumann, vamos ver alguns elementos sobre diferentes tecnologias que são utilizadas
por fabricantes de processadores para a aplicação do paralelismo (mais de uma instrução por
vez). Temos aí a computação paralela!
A computação paralela é caracterizada pelo uso de várias unidades de processamento
(processadores), que trabalham de forma simultânea, com o intuito de otimizar a execução de
uma tarefa. Baseia-se no conceito de “dividir-para-conquistar”.
“Dividir-para-Conquistar” (“Divide and Conquer”): técnica utilizada em processamento paralelo.
Trata-se de uma técnica de algoritmos e estratégia de resolução de problemas que envolve
quebrar um problema complexo em subproblemas menores e mais fáceis de resolver. Cada
subproblema é resolvido independentemente, e as soluções são combinadas para resolver o
problema original. Essa abordagem geralmente facilita a resolução de problemas complexos,
dividindo-os em partes mais gerenciáveis.

O paralelismo tem duas formas gerais:

●​ Nível de instrução: procura-se executar mais instruções por segundo (pipelining);


●​ Nível de processador: mais de uma CPU trabalhando juntas no mesmo problema
(multiprocessamento). A capacidade de ampliar o poder computacional do sistema,
apenas adicionando novos processadores, é denominada escalabilidade.

Taxonomia de Flynn

Essa classificação se refere à maneira como instruções e dados são organizados em um


determinado tipo de processamento. Todos os quatro tipos definidos na taxonomia de Flynn
mencionam os elementos “trem de dados” (conjunto seguido de dados) e “trem de instruções”
(conjunto seguido de instruções a serem executadas). Vamos analisar a tabela abaixo e depois
veremos com detalhes cada um dos tipos.

Single Data Multiple Data

Single Instruction SISD SIMD

Multiple Instruction MISD MIMD

SISD (Single Instruction Single Data): há apenas um conjunto de instruções e um conjunto de


dados. São as máquinas com arquitetura que segue o padrão definido por von Neumann, ou
seja, os processadores executam uma instrução completa por vez, sequencialmente, cada uma
manipulando um dado específico. Era mais utilizado em processadores antigos, como por
exemplo, o 8080/8085, da Intel;

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 67


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

MISD (Multiple Instruction Single Data): tipo de arquitetura que pode utilizar múltiplas instruções
para manipular apenas um conjunto de dados, como por exemplo, um vetor;

SIMD (Single Instruction Multiple Data): o processador opera de maneira que uma única instrução
acessa e manipula um conjunto de dados simultaneamente. Ex.: um comando poderia ser
executado 10 vezes em uma única vez, considerando que a máquina tenha 10 unidades de
cálculo (pelo menos);

MIMD (Multiple Instruction Multiple Data): trata-se da categoria mais avançada, produzindo um
elevado desempenho do sistema de computação. Múltiplas instruções lidam com múltiplos
dados, ao mesmo tempo.

Lei de Amdahl

A Lei de Amdahl (proposta por Gene Amdahl) é um princípio fundamental na computação


paralela, que descreve o impacto da paralelização no desempenho de um sistema. Ela é usada
para calcular o ganho potencial de desempenho ao introduzir processamento paralelo em uma
tarefa. A fórmula básica é:

Onde:

●​ S: aceleração total (speedup) do sistema;


●​ P: fração do programa que pode ser paralelizada (entre 0 e 1);
●​ N: número de processadores (ou unidades paralelas);
●​ (1 - P): fração do programa que é serial (não pode ser paralelizada).

Processamento Superescalar e Superpipelining

O processamento superescalar e superpipelining são duas formas diferentes, mas com o objetivo
comum de proporcionar um maior desempenho dos processadores através de alguma forma de
paralelismo na execução de instruções. Ambos tentam otimizar a técnica de pipeline, porém com
metodologias diferentes.

Mas o que é a técnica de pipeline? Trata-se de uma técnica em que se obtém uma aceleração do
processamento através da possibilidade de se obter a execução de múltiplas instruções ao
mesmo tempo. Na verdade, em um instante de tempo X cada instrução está em uma etapa
diferente de sua execução. Como isso é possível? Cada instrução é dividida em etapas, como por
exemplo, quatro:

1.​ Busca da informação (fetch cycle);


2.​ Decodificação da instrução (instruction decode);
3.​ Execução da operação (execute cycle);
4.​ Escrita do resultado (write back).

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 68


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Agora vamos imaginar uma sequência de quatro instruções:

Em um processamento escalar (sequencial, sem pipeline), ao final do instante de tempo 7 teria


sido executada apenas uma instrução completa e 3/4 da segunda! Com o pipeline, no mesmo
tempo representado na figura, são executadas 4 instruções completas!

Taxa de execução: refere-se à velocidade com que o pipeline processa os dados. Pode ser
medida em termos de quantidade de dados processados por unidade de tempo (ex.: MB/s) ou
em termos de tempo necessário para processar uma unidade específica de dados (ex.: segundos
por item). O número de estágios em um pipeline não determina diretamente a taxa de execução.
Ou seja, não é aumentando a quantidade de estágios que se consegue uma taxa de execução
melhor! Na verdade, o aumento da quantidade de estágios pode levar a desafios de
desempenho e complexidade.

No processamento superescalar procura-se obter um grau pleno de paralelismo, ou seja, são


criadas mais unidades no hardware, como por exemplo, duas unidades de cálculos de inteiros,
duas vias de dados para elas etc.). São criados dois pipelines separados e, então, duas instruções
podem ter sua execução em paralelo de fato, cada uma em um pipeline! As estruturas
superescalares possuem:

●​ Paralelismo de instrução: como já explicado no pipeline simples;


●​ Paralelismo do hardware: possui mais de uma unidade de cálculo, por exemplo.

Vamos ver uma figura que representa a metodologia superescalar (abaixo). Note que ocorre o
paralelismo de instrução, que é dividida em quatro fases, e um paralelismo de hardware,
permitindo duas instruções com a execução da mesma fase de cada uma, simultaneamente.

Agora vamos ver um exemplo de uma arquitetura que utilize cinco fases:

1.​ Busca de instrução;


2.​ Decodificação;

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 69


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

3.​ Busca de operando;


4.​ Execução;
5.​ Gravação do resultado.

Imagine que tenha sido definida uma estrutura superescalar com duplo pipeline, sendo que a
primeira fase é compartilhada entre os dois:

==26a66d==

Agora imagine uma estrutura superescalar com cinco unidades funcionais de execução (fase 4):

Essa estrutura parece ter só vantagens, certo? Errado! Além de necessitar novos componentes
(mais pipeline), as estruturas superescalares devem lidar com alguns tipos de problemas (maior
intensidade do que o pipeline simples). A criação de um programa e sua execução continuam
sendo sequenciais, mas há situações em que uns dependem dos outros, o que impossibilitaria o
uso do paralelismo. Para resolver isso, ou seja, para manter os pipelines o mais ocupados
possível, pode haver a necessidade de alteração, durante a execução, da ordem dos cálculos
(unidades de execução). Depois a sequência é restaurada e o programador nem percebe o que
ocorreu. Os problemas relatados são conhecidos como:

●​ Problemas de dependência de dados (data hazards);


●​ Problemas gerados por estruturas de desvio (control hazards);
●​ Problemas de conflitos entre recursos requeridos.

Os dois primeiros podem ocorrer também no pipeline simples, mas claro que a estrutura
superescalar tende a piorar a situação.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 70


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Distúrbio Estrutural: qualquer evento imprevisto ou mudança que cause uma interrupção na
sequência normal de execução do pipeline. Tais distúrbios podem incluir, por exemplo, a
ocorrência de instruções de controle de fluxo (ex.: desvios condicionais) que podem alterar o
caminho de execução normal do pipeline.

No processamento superpipeline, em vez de duplicar o caminho de execução, como acontece


nas máquinas superescalares, são criados mais estágios (fases), dividindo cada um ao meio (1/2
ciclo de relógio), de modo a obter o início e o término de cada instrução em metade do ciclo de
relógio.

Os processadores MIPS utilizam essa estratégia, com quatro estágios:

1.​ Fetch: busca da instrução;


2.​ ALU: execução da operação na unidade lógica e aritmética;
3.​ Memory: busca de operando na memória (se houver);
4.​ Write: escrita do resultado da operação realizada.

Abaixo são mostradas duas figuras retiradas do livro “Introdução à Organização de


Computadores (Monteiro)”. A primeira mostra como seriam executadas em um pipeline e a
segunda mostra como seria em um processador superpipeline.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 71


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Escalabilidade

A escalabilidade em sistemas paralelos está relacionada à capacidade de um sistema aumentar


seu desempenho à medida que mais recursos (processadores, memória etc.) são adicionados. Ou
seja, um sistema paralelo é escalável se conseguir lidar com uma carga de trabalho maior ou mais
complexa ao aumentar a quantidade de recursos disponíveis. Veremos a seguir alguns conceitos
relacionados à escalabilidade em sistemas paralelos.

Escalabilidade Linear: Um sistema paralelo é considerado linearmente escalável se o aumento


nos recursos resultar em um ganho proporcional no desempenho. Por exemplo, se a quantidade
de processadores quadruplicar, a velocidade de processamento também deve quadruplicar. Na
prática sabemos que isso é improvável, mas o conceito é esse!

Escalabilidade Fraca/Forte: A escalabilidade fraca se refere à capacidade de um sistema lidar


com um problema maior, mantendo o mesmo problema por processador. A escalabilidade forte
refere-se à capacidade de lidar com um problema maior aumentando tanto o número de
processadores quanto o tamanho do problema.

Comunicação e Overhead: Em sistemas paralelos, a escalabilidade pode ser limitada pela


sobrecarga de comunicação entre os processadores. Se a comunicação entre os nós do sistema
se tornar um gargalo, provavelmente haverá diminuição na escalabilidade.

Balanceamento de Carga: A escalabilidade é afetada pelo balanceamento de carga entre os


processadores. Se alguns processadores ficarem ociosos enquanto outros ficam sobrecarregados,
a eficiência do sistema pode diminuir.

De uma maneira geral, alcançar uma boa escalabilidade em sistemas paralelos requer uma
combinação de projeto de hardware eficiente, algoritmos paralelos bem projetados e otimização
de comunicação e balanceamento de carga.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 72


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Acoplamento (Forte / Fraco)

O acoplamento está relacionado à interdependência entre os componentes de um sistema. O


acoplamento pode ser classificado como forte ou fraco, dependendo do grau de
interdependência entre os componentes.

Acoplamento Forte: Os componentes estão fortemente interligados e dependem fortemente uns


dos outros. Mudanças em um componente podem ter um impacto significativo em outros. Um
exemplo é um chip com vários núcleos de processadores (multicore), com o compartilhamento de
cache e/ou outros componentes.

Acoplamento Fraco: Os componentes são menos dependentes uns dos outros. Cada
componente opera de forma independente, conhecendo apenas as interfaces públicas dos
outros componentes. Com isso é possível que os componentes sejam modificados ou
substituídos com menos impacto nos demais.

Sistema de Multiprocessamento Simétrico x Assimétrico

Um Sistema de Multiprocessamento Simétrico (Symmetric Multiprocessing - SMP) é uma


arquitetura na qual dois ou mais processadores compartilham igualmente o acesso a memória e
periféricos. Ou seja, cada processador é capaz de executar qualquer tarefa e pode ser atribuído a
diferentes partes do código ou a diferentes processos simultaneamente.

Sistemas SMP são comuns em servidores e computadores de alto desempenho, onde a


capacidade de executar várias tarefas simultaneamente é fundamental. Para aproveitar
totalmente o potencial de um sistema SMP, o software deve ser projetado para ser paralelizado,
distribuindo tarefas entre os processadores de maneira eficiente, pois isso não é automático!

Os sistemas SMP também podem ser chamados de “tightly-coupled multiprocessors”. Em


tightly-coupled systems, os processadores estão intimamente conectados e compartilham
recursos como memória e barramentos (exatamente o caso dos SMPs). Isso é oposto a
loosely-coupled systems, onde cada processador tem sua própria memória (ex: sistemas
distribuídos ou clusters MPI).

Em um Sistema de Multiprocessamento Assimétrico (Asymmetric Multiprocessing - AMP),


diferentes processadores possuem funções e responsabilidades distintas. Os processadores
podem ser designados para tarefas específicas e não compartilham igualmente a carga de
trabalho.

Os sistemas AMP são comuns em dispositivos incorporados, sistemas embarcados, e em alguns


casos em servidores especializados. Nesse tipo de sistema, o software geralmente é projetado
para tirar vantagem das características específicas de cada processador, sendo mais difícil a
programação.

Em um Sistema AMP com arquitetura mestre-escravo, um processador é designado como o


“mestre” (quem manda, responsável por coordenar e gerenciar as tarefas), enquanto os demais
processadores são considerados “escravos” (os que obedecem, executam tarefas específicas
atribuídas pelo mestre).

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 73


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

VLIW (Very Long Instruction Word)

A técnica VLIW (instruções em palavras muito longas) consiste em criar “instruções de grande
tamanho”, as quais podem “juntar” mais de uma das instruções de máquina de verdade. Quem
faz esse “meio de campo”? O compilador! Ele, ao criar o código-objeto (a ser executado), utiliza
um formato de instrução que inclui mais de uma delas na mesma “instrução” a ser buscada e
decodificada pela CPU (processador). Para isso é necessário que o hardware possua mais
unidades funcionais para as instruções do “pacote”.

Nas máquinas VLIW o emprego do paralelismo é decidido antecipadamente (compilador), ao


contrário dos processadores superescalares, nos quais a escolha dos caminhos é decidida em
tempo de execução (run time). Podemos ver que o esforço maior passa a ser dos compiladores,
tornando mais difícil implementá-los.

Arquiteturas Paralelas: Multiprocessamento e Multicore


As arquiteturas paralelas surgiram com a ideia de melhorar o desempenho de sistemas
computacionais, especialmente quando o aumento da frequência dos processadores começou a
apresentar limitações físicas (superaquecimento e o consumo excessivo de energia). Entre as
principais abordagens de arquiteturas paralelas, destacam-se o multiprocessamento e o
multicore, que veremos a seguir.

Multiprocessamento
No multiprocessamento ocorre a utilização de dois ou mais processadores (CPUs) físicos em um
único sistema computacional, trabalhando de forma simultânea e cooperativa para executar
múltiplas tarefas ou acelerar a execução de uma mesma aplicação. Cada processador possui sua
própria unidade de controle (UC), unidade aritmética e lógica (ULA), e geralmente sua própria
memória cache.
Podem compartilhar um espaço de memória comum (sistemas multiprocessadores simétricos -
SMP) ou podem possuir memórias separadas (sistemas multiprocessadores assimétricos - NUMA).
O multiprocessamento é ideal para a execução de processos independentes ou tarefas que
podem ser divididas em subprocessos paralelos.
Algumas vantagens são:
●​ Aumento significativo de desempenho;​

●​ Melhoria na confiabilidade e na disponibilidade, pois a falha em um processador não


compromete o sistema por completo;​

●​ Capacidade de executar várias tarefas ao mesmo tempo.


Algumas desvantagens são:
●​ Maior complexidade na gerência dos processos;​

●​ Custo mais elevado, pois há a necessidade de múltiplos processadores físicos.


De uma forma geral, o multiprocessamento é comum em servidores e sistemas de alto
desempenho, que demandam enorme capacidade de processamento.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 74


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Multicore
Multicore (múltiplos núcleos) é a integração de dois ou mais núcleos (cores) de processamento
dentro de um mesmo processador físico. Cada núcleo funciona como uma unidade de
processamento independente, capaz de executar suas próprias instruções. Há o
compartilhamento de recursos como barramento, memória cache de nível superior (L2 ou L3) e
unidade de interconexão. Pode haver a execução de threads ou processos paralelos de maneira
eficiente.
Algumas vantagens são:
●​ Eficiência energética, pois múltiplos núcleos podem trabalhar a uma frequência menor, o
que reduz o consumo de energia e dissipação de calor;​

●​ Melhor desempenho em aplicações paralelizáveis;​

●​ Custo-benefício, com melhor desempenho sem a necessidade de múltiplos processadores


físicos.
Algumas desvantagens são:
●​ Dependência de softwares e sistemas operacionais otimizados para o paralelismo;​

●​ Complexidade no desenvolvimento de aplicações que utilizem paralelismo de forma


eficiente.
Processadores com múltiplos núcleos (multicore) predominam na maioria dos dispositivos
modernos, incluindo computadores pessoais, smartphones, entre outros.

Hyper-Threading
Hyper-Threading (HT) é uma tecnologia de paralelismo em nível de hardware desenvolvida pela
Intel. Ela permite que um único núcleo físico de processador execute duas ou mais threads
simultaneamente. Cada núcleo físico é visto pelo sistema operacional como dois processadores
lógicos.
Um núcleo tradicional executa uma thread por vez, utilizando seus recursos internos (unidades de
execução, registradores etc.). Com a tecnologia Hyper-Threading, o núcleo duplica alguns
componentes, como por exemplo os registradores, mas compartilha recursos mais “pesados”,
como por exemplo, a memória cache. Dessa forma, quando uma thread está esperando dados,
por exemplo, de unidades de entrada/saída, a outra thread pode ser executada, melhorando a
utilização dos recursos do processador.
Resumindo:
●​ Sem Hyper-Threading: 1 núcleo físico = 1 thread executada;
●​ Com Hyper-Threading: 1 núcleo físico = 2 threads executadas simultaneamente, com um
melhor aproveitamento dos ciclos de clock.
Vejamos alguns benefícios:
●​ Melhor desempenho, principalmente em cargas de trabalho que envolvem múltiplas
threads (ex.: servidores Web);​

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 75


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

●​ Eficiência de recursos, melhorando o aproveitamento dos recursos internos do


processador e reduzindo o tempo ocioso;
●​ Transparente ao sistema operacional, que “vê” o processador como se ele tivesse o dobro
de núcleos.
É importante deixar claro que:
●​ O HT não é equivalente a um núcleo físico extra, ou seja, o desempenho não dobra;​

●​ Aplicações não paralelizáveis não se beneficiam significativamente;​

●​ Nem todas as arquiteturas ou modelos de processadores suportam HT.


Alguns processadores com a tecnologia Hyper-Threading são: Intel Pentium 4 (a partir do ano
2002), Intel Core i3, i5, i7, i9 (alguns modelos) e Xeon (para servidores). O fabricante AMD não
utiliza o termo Hyper-Threading, mas possui tecnologias semelhantes, como Simultaneous
Multi-Threading (SMT).
GPUs: Arquitetura CUDA e Aplicações em Processamento Vetorial
GPU (Graphics Processing Unit) é um processador especializado no processamento de tarefas
altamente paralelizáveis, como gráficos e cálculos matemáticos. Como o próprio nome sugere, o
processador GPU foi criado para acelerar gráficos, mas evoluiu para se tornar uma poderosa
ferramenta de computação paralela em diversas áreas, como inteligência artificial, cálculos para a
quebra de senha, entre outros.
O trabalho da GPU envolve diversas etapas que são fundamentais para o processamento gráfico
e a renderização de imagens em sistemas computacionais. Entre essas etapas, estão:

●​ Elaboração de elementos geométricos: criação e manipulação de primitivas gráficas como


pontos, linhas, triângulos e polígonos, que compõem os objetos em uma cena 2D ou 3D;​

●​ Aplicação de cores (shading): a GPU calcula e aplica cores, iluminação e sombras nos
objetos para gerar realismo;​

●​ Inserção de efeitos (texturização, efeitos de transparência, reflexos, entre outros) para


enriquecer a qualidade visual das imagens.

Arquitetura CUDA
CUDA (Compute Unified Device Architecture) é uma plataforma e uma API desenvolvida pelo
fabricante NVIDIA que permite o uso de GPU para o processamento geral (não apenas gráficos,
como era a intenção inicial). Com CUDA, programadores podem escrever código em linguagens
como C/C++ e Python (através de bibliotecas) para ser executado diretamente em processadores
GPU. Os componentes da arquitetura CUDA são:
●​ Host (CPU): Onde o programa principal é executado, sendo o responsável por enviar
dados e comandos para a GPU;​

●​ Device (GPU): Executa funções, processando os dados em paralelo;​

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 76


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

●​ Multiprocessadores de Streaming (SMs): Unidades básicas de execução da GPU. Cada SM


contém vários CUDA cores, que executam operações aritméticas;​

●​ Threads, Blocos e Grades: A arquitetura CUDA organiza a execução paralela em


milhares/milhões de threads. As threads são agrupadas em blocos, e blocos formam uma
grade (grid). Cada thread executa uma parte do problema;​

●​ Memória:
○​ Global: acessível a todas as threads, porém mais lenta;
○​ Shared: compartilhada entre threads do mesmo bloco, rápida.
○​ Registers: memória privada de cada thread, muito rápida.
O fluxo de execução CUDA é o seguinte: CPU envia dados para a GPU → CPU chama o kernel
CUDA → GPU executa milhares/milhões de threads em paralelo → GPU retorna resultados para a
CPU.

Aplicação de CUDA em Processamento Vetorial


O processamento vetorial envolve operações matemáticas sobre grandes conjuntos de dados
(vetores e matrizes). Os processadores GPU possuem uma arquitetura massivamente paralela,
então são mais adequados para esse tipo de tarefa. Algumas características são:
●​ Alto grau de paralelismo;​

●​ Melhor aproveitamento de hardware especializado;​

●​ Redução de tempo de execução de tarefas intensivas;​

●​ Integração com linguagens populares;​

●​ Suporte a bibliotecas otimizadas (cuBLAS, cuFFT).


Alguns desafios são:
●​ Gerenciamento de memória, pois a movimentação de dados entre CPU e GPU pode ser
custoso;​

●​ Para otimizar o paralelismo é necessário ajustar a granularidade das tarefas;​

●​ A programação CUDA requer compreensão de modelos paralelos, o que pode levar


algum tempo, pois não é uma prática muito comum para os programadores.
Alguns exemplos de aplicações:
●​ Machine Learning e Deep Learning: O treinamento de redes neurais envolve operações
com grandes tensores (vetores multidimensionais). Frameworks como TensorFlow e
PyTorch utilizam CUDA para acelerar os cálculos;​

●​ Processamento de Imagens e Vídeos: Filtros, detecção de bordas, entre outras tarefas, são
realizadas com operações vetoriais massivas;​

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 77


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

●​ Criptografia e Blockchain: Operações vetoriais na validação de transações e mineração.

CPU x GPU no Processamento Vetorial


Podemos resumir o uso mais adequado com CPU ou GPU através da tabela abaixo.

CPU GPU

Poucos núcleos poderosos. Muitos núcleos simples (CUDA cores).

Ideal para tarefas sequenciais. Ideal para tarefas paralelizáveis.

Cache grande e hierárquico. Memória otimizada para throughput.

Ex. de uso adequado: controle de fluxo. Ex. de uso adequado: multiplicação de matrizes.
​ ​

MPI (Message Passing Interface)


O MPI é um padrão amplamente utilizado para programação paralela distribuída, especialmente
em computação de alto desempenho (HPC). Trata-se de um padrão de comunicação entre
processos, usado principalmente em sistemas distribuídos (clusters, supercomputadores). É
projetado para um alto desempenho, portabilidade e escalabilidade. É utilizado para programar
em linguagens como C, C++, entre outras.

Funcionamento do MPI
Em vez de compartilhar memória, como ocorre em threads, os processos MPI comunicam-se
trocando mensagens, sendo que cada processo possui sua própria memória local. A comunicação
pode ser:

●​ Ponto a ponto (ex: MPI_Send, MPI_Recv);


●​ Coletiva (ex: MPI_Bcast, MPI_Reduce, MPI_Scatter, MPI_Gather).

Como vantagens, temos:

●​ Ideal para sistemas com memória distribuída;


●​ Grande controle sobre comunicação e sincronização;
●​ Padrão altamente escalável, usado em supercomputadores.

Por outro lado, as desvantagens são:

●​ Código mais complexo do que programação com threads, já que o programador precisa
gerenciar toda a lógica de comunicação;
●​ Pode ter overhead de rede, caso seja mal projetado.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 78


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

High Performance Computing (HPC)


HPC nasceu como processamento paralelo, com vários núcleos/CPUs/GPGPUs executando
partes de um problema ao mesmo tempo. Suas características são:

●​ Uso de clusters com múltiplos nós computacionais;


●​ Tarefas divididas em threads ou processos paralelos;
●​ Forte uso de MPI, OpenMP, CUDA, OpenACC;
●​ Foco em baixa latência, alto throughput e sincronização.

Podemos observar que a HPC é essencialmente um ambiente voltado à computação paralela de


alto desempenho, embora também seja utilizada em sistemas distribuídos.

Gerenciamento de Processos (Job Scheduling)


Nos ambientes de High Performance Computing (HPC), diversos usuários submetem tarefas
(jobs) para execução em um conjunto compartilhado de recursos (nós, CPUs, GPUs, memória,
interconexão). Como os recursos são limitados, é necessário um sistema de gerenciamento de
filas (Job Scheduler), responsável por:

●​ organizar jobs em filas;


●​ decidir a ordem de execução;
●​ alocar recursos disponíveis;
●​ monitorar execução;
●​ aplicar políticas de uso.

Alguns dos sistemas mais comuns para o gerenciamento de filas são SLURM, PBS/Torque, LSF e
SGE.

Jobs e Filas
Um job é uma unidade de trabalho submetida ao cluster, definida por:

●​ script que contém comandos;


●​ quantidade de nós/CPUs/GPUs;
●​ tempo de execução solicitado;
●​ memória necessária;
●​ tipo de partição/fila (queue).

As filas (queues ou partitions) organizam jobs conforme a prioridade,o tipo de recurso, a política
de uso e o perfil de workloads (curtos, longos, GPU, alta memória etc.).

Scheduler x Resource Manager


O sistema de filas é composto por duas partes:

●​ Resource Manager: responsável por controlar o estado dos nós, verificar disponibilidade
de CPU, memória e GPU, além de manter informações sobre up/down e utilização. Exs:

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 79


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

SLURM (slurmd), PBS Mom etc.;​

●​ Scheduler: decide qual job é executado primeiro, aplica políticas de prioridade e justiça
(fair-share), utiliza algoritmos para escalonar jobs. Ex: SLURM (slurmctld), Maui/Torque etc.

Submissão, Espera, Execução e Finalização


O ciclo de vida de um job envolve as seguintes etapas:

●​ Submissão: o usuário envia o job;


●​ Enfileiramento: o job aguarda recursos;
●​ Escalonamento: o scheduler decide quando e onde rodar;
●​ Execução: o job é iniciado nos nós alocados;
●​ Finalização: ocorre a liberação de recursos e os logs são armazenados.

Tipos de Filas (Queues / Partitions)


Filas são criadas para organizar jobs por perfis. Vejamos alguns exemplos:

●​ Fila de curta duração (short);


●​ Fila de longa duração (long);
●​ Fila de GPU;
●​ Fila de alta memória (high-mem);
●​ Fila de debug (“pequenos testes”);
●​ Fila de professores;
●​ Fila de alta prioridade (“projetos críticos”).

Cada fila pode ter:

●​ limite de tempo;
●​ limite de CPUs;
●​ permissões específicas.

Prioridades de Execução (Algoritmos)


O escalonador (scheduler) define qual job entra primeiro usando um dos algoritmos:

●​ FIFO (First In, First Out): O primeiro job a entrar é o primeiro a ser executado (uma fila
“comum”). Simples, porém pode causar starvation para jobs curtos se houver jobs longos;​

●​ Fair-Share: Distribui recursos proporcionalmente entre usuários ou grupos. Se um usuário


já consumiu muitos recursos, ganha menor prioridade. Se outro usou pouco, ganha
prioridade maior. O objetivo é o uso justo e equilibrado do cluster;​

●​ Backfilling: Técnica avançada e essencial em HPC. Jobs grandes aguardam recursos


suficientes. O scheduler tenta “encaixar” jobs menores nos “buracos” (gaps) temporários
da agenda de recursos. Não atrasa o job maior, já reservado. Resultado: aumenta o
throughput do cluster e menos recursos ficam ociosos;​

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 80


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

●​ Priority Queueing: Prioridade baseada em:


○​ tempo de espera;
○​ tamanho do job;
○​ tipo (produtivo, teste, manutenção);
○​ fator de urgência.

Solicitação e Alocação de Recursos


O usuário define recursos mínimos. Alguns exemplos (com parâmetros entre parênteses) são:

●​ número de nós (--nodes);


●​ número de tarefas (--ntasks);
●​ CPUs por tarefa (--cpus-per-task);
●​ GPUs (--gres=gpu:2);
●​ tempo (--time=01:00:00);
●​ memória (--mem=64G).

O scheduler verifica a disponibilidade, compatibilidade e políticas da fila.

Threads
No HPC, threads são fundamentais para o paralelismo de memória compartilhada dentro de um
mesmo nó. Enquanto MPI (Message Passing Interface) gerencia o paralelismo entre nós
(distribuído), as threads gerenciam paralelismo intra-nó (local, compartilhado).

Em um cluster HPC, cada nó possui múltiplos núcleos de CPU. Para aproveitar totalmente esses
núcleos, o programa cria threads, cada uma usando um ou mais núcleos. Dessa forma, threads
multiplicam o throughput do código local, reduzindo o tempo total de execução. Ou seja, o
objetivo principal das threads é explorar todos os núcleos disponíveis dentro do nó com
paralelismo eficiente.

Primitivas de sincronização
Em HPC, threads (OpenMP, Pthreads, TBB) e processos distribuídos (MPI) trabalham
simultaneamente. Por isso, a sincronização é essencial para:

●​ garantir consistência;
●​ coordenar tarefas paralelas;
●​ evitar condições de corrida;
●​ assegurar correta troca de dados.

A sincronização é necessária quando:

●​ threads acessam regiões críticas;


●​ múltiplos núcleos atualizam a mesma variável;
●​ etapas precisam acontecer em ordem (pipeline);
●​ processos MPI trocam dados e precisam aguardar uns aos outros;
●​ cada thread deve concluir uma fase antes de outra começar (barreiras).​

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 81


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Abaixo veremos as primitivas de sincronização em HPC:

●​ Mutex (Mutual Exclusion Lock): Evita acesso simultâneo a uma região crítica em memória
compartilhada. Usado em: Pthreads (pthread_mutex), OpenMP (omp critical, omp atomic),
TBB;​

●​ Spinlocks: Um tipo de lock onde a thread fica “girando” (busy-waiting) esperando liberar.
Usado em HPC, pois trocas de contexto são caras e acesso crítico é rápido. Porém,
consomem CPU, devem ser usados em regiões extremamente curtas;​

●​ Barriers (Barreiras): Todas as threads devem chegar ao mesmo ponto antes de prosseguir.
Usado em HPC para fases de algoritmos numéricos: dividir/combinar matrizes, etapas
sincronizadas de simulação, finalização de loops paralelos;​

●​ Semáforos: Muito menos usados do que em sistemas tradicionais, pois são pesados e
exigem chamadas ao kernel. São necessários para coordenar produção/consumo
(pipelines) e limitar acesso a recursos;​

●​ Primitivas Atômicas: Essenciais em HPC para eliminar locks. São importantes em:
atualizações de contadores, reduções, algoritmos lock-free;​

●​ Reduções (Reduction): Construção especializada do OpenMP. Ela evita condição de corrida


(sem necessidade de mutex). É altamente otimizada, sendo usada praticamente em todo
código HPC;​

●​ Comunicação Síncrona no MPI, é forma de sincronização distribuída:

MPI_Send bloqueante → espera o receptor;

MPI_Recv bloqueante → sincroniza com emissor;

MPI_Barrier → todos os processos esperam;

MPI_Bcast, MPI_Gather → sincronizam envio/recebimento;

●​ Memória Coletiva / Fence no MPI-3 RMA, em operações de Remote Memory Access:

MPI_Win_fence;

MPI_Win_lock;

MPI_Win_unlock;

Deadlocks
Deadlocks são mais perigosos no HPC porque:

●​ travam todo o job, consumindo recursos do cluster;


●​ impedem que nós comunicantes avancem;
●​ podem causar timeouts no scheduler.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 82


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Algumas causas de deadlocks em HPC são:

●​ Deadlock por comunicação bloqueante (MPI). Um exemplo clássico:

MPI_Send(...); // espera o receptor

MPI_Recv(...); // receptor também espera o emissor

Se dois processos fizerem isso simultaneamente = IMPASSE (deadlock)!

●​ Deadlock por ordem inconsistente de locks. Entre threads:

thread 1 pega mutex A depois mutex B;

thread 2 pega mutex B depois mutex A

Resultado = IMPASSE (deadlock)!

●​ Deadlock por barreiras. Todas as threads devem chegar à barreira. Se uma thread travar,
abortar ou desviar do caminho, todas as outras ficam presas indefinidamente;​

●​ Falso compartilhamento e degradações extremas. Não trata-se exatamente de deadlock


lógico, mas quando duas threads acessam variáveis vizinhas, competem por linhas de
cache, reduzindo o progresso a quase zero → Isso é chamado livelock e é relevante para
HPC;​

●​ Deadlock por dependências de dados. Em algoritmos paralelos mal particionados:

thread A precisa produzir algo que depende de B;

B depende de A;

Ambas esperam = ciclo de dependência!

Técnicas de Profiling
Profiling é a análise detalhada do desempenho de aplicações paralelas, identificando como o
tempo de execução é distribuído entre cálculos, comunicação, acesso à memória e sincronização,
permitindo otimização de escalabilidade e eficiência.

Como aplicações HPC são massivas (milhares de threads/cores e múltiplos nós), o profiling
precisa ser:

●​ leve (para não distorcer os resultados);


●​ escalável;
●​ detalhado (cache, NUMA, comunicação MPI, GPU);
●​ capaz de lidar com paralelismo maciço.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 83


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Vamos às técnicas de profiling:

●​ Instrumentação: Inserção explícita de coletas de desempenho. Como vantagem, é


detalhado. Como desvantagem, possui um overhead maior. É usado quando a análise fina
é necessária;​

●​ Sampling: Coleta amostras do estado do programa a cada X microsegundos. É muito leve,


usado para workloads grandes;​

●​ Tracing: Registra eventos ao longo do tempo (MPI events, thread states, GPU kernels).
Utilizado para detectar padrões de comunicação e encontrar momentos de ociosidade;​

●​ Roofline Analysis (Moderna, HPC puro): Modelo visual que mostra se a aplicação é limitada
por memória (memory-bound), limitada por CPU (CPU-bound). Utilizada para otimizar
kernels de HPC.

Referências Bibliográficas
Monteiro, M. A. Introdução à Organização de Computadores. 5. ed. LTC, 2024.
Stallings, W. Arquitetura e Organização de Computadores. 11. ed. Bookman, 2024.
Tanenbaum, A. S. Organização Estruturada de Computadores. 6. ed. Pearson, 2013.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 84


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

QUESTÕES COMENTADAS - CEBRASPE


1.​ (CEBRASPE/BNB/2022) Julgue o item seguinte, relativos a execução de instruções,
paralelismo e multiprocessamento em computadores.

A organização de computadores de núcleos separados é mais tolerante a falhas do que a


organização mestre/escravo.

Comentários:

Na organização de núcleos separados (SMP - Symmetric Multiprocessing), todos os


processadores ou núcleos têm acesso igual aos recursos do sistema e podem executar tarefas
independentemente. Se um núcleo falhar, os outros podem continuar operando normalmente,
garantindo maior tolerância a falhas.

Na arquitetura mestre/escravo, o mestre é responsável pelo controle e distribuição das tarefas. Se


o mestre falhar, todo o sistema pode ser comprometido, pois os escravos normalmente não
podem assumir o controle ou realizar tarefas de coordenação.

Gabarito: Certo

2.​ (CEBRASPE/Petrobras/2022) Acerca da arquitetura de computadores, julgue o item


subsequente.

Pipeline é a técnica que divide a execução da instrução em no máximo duas partes, sendo
ambas executadas pelo hardware de forma dedicada e paralela.

Comentários:
Vimos na aula exemplo com 4 ou 5 etapas, mas pode haver pipelines com outras quantidades de
etapas. Vamos relembrar o exemplo de 4 etapas:

1.​ Busca da informação (fetch cycle);


2.​ Decodificação da instrução (instruction decode);
3.​ Execução da operação (execute cycle);
4.​ Escrita do resultado (write back).

Agora vamos imaginar uma sequência de quatro instruções (cada uma com 4 etapas):

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 85


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

MEMÓRIA
Vamos começar o assunto dando uma visão geral sobre memória e depois vamos nos aprofundar,
focando na matéria que costuma ser cobrada em provas de concurso. Vamos lá...

Primeiro vamos ver onde a memória “entra” em um sistema computacional. Sabemos que
hardware é o conjunto de componentes eletrônicos, circuitos integrados e placas, que se
interagem através de barramentos (sistemas de interconexão, ligando os diversos componentes
do computador):

A figura é um resumo de um computador e nela encontramos a memória principal (representada


basicamente pela memória RAM, mas não só por ela, como veremos), dispositivos de
entrada/saída, incluindo a memória secundária (HDs, por exemplo) e, no processador (CPU) e
também próximo a ele, encontramos a memória cache (aquela que melhora o desempenho,
deixando o que é mais acessado mais próximo do processador).

UMA x NUMA

Algumas abordagens sobre o acesso à memória ser uniforme, ou não, são cobrados em provas de
concurso, então vamos ver suas definições a seguir.

• UMA (Uniform Memory Access): todos os processadores possuem acesso a todas as partes
da memória principal (leituras e escritas). O tempo de acesso à memória de um processador
para todas as regiões da memória é o mesmo. Os tempos de acesso de processadores
diferentes são os mesmos;

• NUMA (Non-Uniform Memory Access): todos os processadores possuem acesso a todas as


partes da memória (leituras e escritas). O tempo de acesso à memória de um processador
difere dependendo de qual região da memória é acessada. Isso ocorre para todos os
processadores, porém, para processadores diferentes, as regiões de memória mais lentas
e mais rápidas diferem;

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 120


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

• CC-NUMA (Cache Coherent NUMA): um sistema NUMA no qual a coerência de cache á


mantida entre caches de diversos processadores.

Um sistema NUMA "puro", ou seja, sem coerência de cache, é semelhante a um cluster. Abaixo
podemos ver uma figura com a comparação UMA e NUMA.

Hierarquia de Memória

Existem vários tipos diferentes de dispositivos de armazenamento, com diferentes características


relacionadas ao tempo de acesso, capacidade, aplicabilidade etc. Em conjunto, podemos formar
uma hierarquia, a qual podemos resumir na figura abaixo.

Temos que ter em mente que quanto mais “próximo” do processador (CPU), mais rápido é o
acesso à memória e sabemos que tudo que é melhor (mais rápido) é mais caro! Também podemos
imaginar que o que está dentro da CPU ou muito próximo tende a armazenar menos dados, afinal
de contas quanto mais registradores ou memória cache for colocada dentro do chip do
processador, menos espaço haverá para o próprio processador! Com esse raciocínio fica mais fácil
montar a hierarquia mostrada acima na sua prova, antes de responder questões desse tipo.

Note que há uma linha tracejada separando os discos das mídias óticas. Às vezes pode haver uma
diferença entre memória secundária e memória terciária. A memória secundária não necessita de
operações de montagem (inserção de uma mídia em um dispositivo de leitura/gravação) para

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 121


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

acessar os dados. A memória terciária depende das operações de montagem, como discos óticos,
fitas magnéticas etc. Essa classificação depende de qual literatura o seu examinador elaborar a
prova. Por isso deixei um tracejado, deixando claro que os discos são mais rápidos que mídias
óticas, fitas magnéticas etc. Vamos adotar apenas até a memória secundária, mas fique atento,
pois pode aparecer a memória terciária em sua prova!

Só para ter uma ideia de capacidade de armazenamento, olhando a pirâmide de cima para baixo
(mais próximo do processador ao mais distante), vamos ver alguns exemplos:

• Registrador – 64 bits;
• Memória cache – 6 MB (para o L3, o nível L2 tem menos e o L1 menos ainda!);
• Memória RAM – 16 GB;
• Discos – HD (4 TB), SSD (960 GB);
• Mídias óticas – 650 MB (CD-ROM), 4,7 GB (DVD-ROM).

Memória Principal

A memória principal é a memória indispensável para o funcionamento do computador, pois é onde


ficam os programas e dados a serem executados/processados pelo processador. Quando você
abre o Word e digita um texto, tanto o processo do Word (programa em execução) quanto o texto
digitado ficam na memória principal. Existem dois tipos de memória principal (RAM e ROM) e é
extremamente importante saber diferenciar bem quando o assunto é concurso.

A memória RAM (Random Access Memory – Memória de acesso Aleatório) é a principal memória
de um computador. Ela pode armazenar as informações e instruções necessárias ao processador.
Todas as informações do computador passam por ela e só permanecem lá enquanto houver
energia elétrica, ou seja, trata-se de uma memória volátil! Por isso existe a recomendação para
salvar os dados em alguma mídia (HD, pen drive etc.) a todo momento ou ativar alguma
configuração de salvar automaticamente em determinados períodos de tempo.

Um endereço de memória pode ser referenciado por byte, ou seja, se um computador com
arquitetura de 32 bits possui 4 GB de memória RAM instalados, é possível acessar os endereços
(em hexadecimal) 00000000, 00000001, 00000002, ..., FFFFFFFF. Ah, mas se uma variável do tipo
inteiro possui 2 bytes? Então a variável será referenciada pelo 1º dos 2 bytes que ela ocupa! Ok,
mas e qual é a unidade básica de memória? Cuidado!!!! A unidade básica é o bit (binary digit –
dígito binário), ou seja, através de uma linguagem de programação de baixo nível (C, por exemplo)
é possível escrever um bit!

Os tipos de memória RAM são a DRAM e a SRAM, conforme veremos a seguir.

DRAM (Dynamic Random Access Memory): O termo dinâmico indica que a memória deve ser
constantemente atualizada, ou perderá seu conteúdo. Normalmente é utilizada para a memória

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 122


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

principal em dispositivos de informática. Se um computador ou smartphone for anunciado como


tendo 8 GB, 16 GB, 32 GB de RAM, essa quantidade se refere à DRAM, ou memória principal.

A maior parte da DRAM usada em sistemas modernos é a SDRAM (DRAM síncrona). Os fabricantes
também às vezes usam o acrônimo DDR (ou DDR2, DDR3, DDR4 etc.) para descrever o tipo de
SDRAM usado por um dispositivo. DDR (Double Data Rate) indica taxa de dados dupla, e refere-
se a quantos dados a memória pode transferir em um único ciclo de clock. Ou seja, a transferência
de dados ocorre na borda de subida e na borda de descida do sinal de clock da DRAM. Algumas
imagens são mostradas a seguir.

==26a66d==

Quando você procura em algum site as especificações de um pente de memória RAM, vai
encontrar diversas informações, tais como as mostradas abaixo. A maioria é tranquilo de entender,
mas destaquei em vermelho o valor em MB da taxa de dados de pico (no caso do exemplo seria
12800 MB/s = 12,8 GB).

ESPECIFICAÇÕES
TÉCNICAS

Características:

- Marca: Kingston

- Modelo: KVR16S11S8/4

Especificações:

- Capacidade: 4GB

- Velocidade: 1600MHz

- Tipo: DDR3

- PC3-12800

Uma ação importante é certificar que os pentes de memória se encontram na posição correta e
bem encaixados, o que ocorre quando as travas laterais estiverem por completo prendendo os
pentes.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 123


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

SRAM (Static Random Access Memory): é mais utilizada para o cache do sistema (veremos na parte
específica da aula).

A memória ROM (Read Only Memory – Memória somente para leitura) também é um tipo de
memória principal. As informações dessa memória, não podem ser apagadas, pois seus dados já
vêm gravados de fábrica. São informações preestabelecidas durante a fabricação, como, por
exemplo, as características do hardware.

Que tipo de informações são armazenadas na memória ROM? Aquelas relacionadas ao hardware
do computador, por exemplo. Assim, mesmo desligando a máquina, elas não são perdidas.
Quando você liga seu computador, uma tela preta é mostrada com algumas informações
relacionadas ao hardware. Essa tela é referente a informações da memória ROM!

Os tipos de memória ROM são:

• PROM (Programmable Read-Only Memory): pode ser escrita com dispositivos especiais,
mas não podem mais ser apagadas ou modificadas;
• EPROM (Erasable Programmable Read-Only Memory): pode ser apagada pelo uso
de radiação ultravioleta, permitindo sua reutilização;
• EEPROM (Electrically Erasable Programmable Read-Only Memory): pode ter seu conteúdo
modificado eletricamente, mesmo quando já estiver funcionando em um circuito eletrônico;

Memória ROM

PROM EPROM EEPROM

BIOS (Basic Input/Output System - Sistema Básico de Entrada e Saída): é um aplicativo responsável
pela execução das várias tarefas executadas do momento em que você liga o computador até o
carregamento do sistema operacional instalado na máquina. A partir da BIOS o computador
“saberá” o que fazer ao iniciar o computador. Através do SETUP da BIOS é possível realizar

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 124


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

algumas configurações, como por exemplo definir a ordem de boot (inicialização), a data e horário
do computador, entre outras:

A BIOS é armazenada na memória ROM e fornece suporte básico ao hardware. Realiza o chamado
teste básico para a inicialização do sistema (POST - Power-On Self-Test) e inicializa o sistema
operacional a partir de uma das mídias apontadas (ordem de boot). Por exemplo, se um
computador tiver apenas um HD e a ordem de boot for rede, USB, HD e depois drive de DVD,
então primeiro será buscado um sistema operacional através da rede (deve haver a devida
configuração na placa de rede), depois em alguma mídia conectada na USB, em seguida parte
para o HD e, se não tiver, parte para o drive de DVD. Caso não exista um boot em nenhum local,
um erro será mostrado indicando que não é possível realizar o boot:

Os BIOS da fabricante PHOENIX geralmente utilizam sequências de beeps em que cada série é
composta de três ou quatro sequências. Ah, mas então seria necessário decorar todas elas? Eu
diria que não...já teve questão cobrando isso, mas é muito raro. Vale a pena olha rapidamente no
endereço [Link] apenas para ver a infinidade
de sequências e seus significados e, se aparecer em sua prova, pelo menos dá para eliminar as
alternativas absurdas. Um exemplo é a série 1-3-1-1 (um beep, uma pausa, três beeps, uma pausa,
um beep, uma pausa, um beep e uma pausa mais longa), que descreve a série “Test DRAM
refresh”.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 125


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Também é interessante (porque já foi cobrado em prova) sabermos que é comum encontrar a
opção de habilitar ou desabilitar o FSB (Front Side Bus) spread spectrum (espalhamento espectral)
nas BIOS de computadores pessoais. Habilitar essa opção é útil para reduzir as emissões
eletromagnéticas concentradas na frequência de operação do barramento de interface entre o
processador e o chipset.

Se um computador começa a requerer o ajuste de data/hora cada vez que ele é ligado, por
exemplo, o problema possivelmente é a bateria, pois é ela a responsável por manter a atualização
enquanto o computador estiver desligado:

Essa bateria alimenta a memória CMOS (que guarda os dados de configuração usados no
SETUP). Então, caso seja realizada a gravação de uma informação equivocada através do SETUP,
causando algum erro de configuração do computador, é possível resolver o problema retirando
a bateria da placa-mãe. Dessa forma será permitido que todos os dados sejam novamente
inseridos após a reenergização do circuito.

Memória Cache

Antes de vermos o conceito de memória cache é importante entendermos o princípio da


localidade, que se divide em temporal e espacial. Vejamos...

Princípio da Localidade Temporal: um dado acessado recentemente tem mais chances de ser
usado novamente do que um dado usado há mais tempo. Isso ocorre porque as variáveis de um
programa tendem a ser acessadas diversas vezes durante a execução de um programa, e as
instruções utilizam muitos comandos de repetição (laços) e subprogramas, fazendo com que as
instruções sejam acessadas repetidamente.

Princípio da Localidade Espacial: há uma maior probabilidade de acesso para dados e instruções
em endereços próximos àqueles acessados recentemente. Isso ocorre porque os programas são
sequenciais e usam laços. Quando uma instrução é acessada, a instrução com maior probabilidade
de ser executada na sequência é a instrução logo a seguir dela. Para as variáveis a ideia é a mesma,

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 126


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

pois variáveis de um mesmo programa são armazenadas próximas umas das outras, vetores e
matrizes são armazenados em sequência de acordo com seus índices.

Diante desse princípio, podemos ver o porquê a memória cache fica entre a memória principal
(DRAM) e o processador, sendo que a cache é bem menor e armazena as instruções e dados que
possuem uma maior probabilidade de serem utilizados em seguida:

Na figura aparecem apenas dois níveis (L1 e L2), mas pode haver mais, dependendo do
processador e placa-mãe utilizados. Também podemos ver que a L1 está dividida em duas partes.
Por que isso? Trata-se de uma parte para dados e outra para instruções, o que torna o
desempenho ainda melhor, pois é possível buscar dado e instrução em paralelo.

Com a evolução na velocidade dos processadores, a demanda de velocidade à memória passou a


ser tão grande que seriam necessários caches maiores com velocidades altíssimas de transferência
e baixas latências. Como é muito difícil e caro construir memórias caches com essas características,
elas são construídas em níveis (levels) que se diferem na relação tamanho x desempenho:

• L1: pequena porção de memória estática presente dentro do processador. Em alguns tipos
de processador o L1 é dividido em dois níveis - dados e instruções;

• L2: possui mais memória que o cache L1, é mais um caminho para que a informação
requisitada não tenha que ser buscada na lenta memória principal. Alguns processadores
colocam esse cache fora do processador (questões econômicas, pois um cache grande
implica em maior custo), mas na atualidade o mais comum é ter as caches L1 e L2 dentro
do processador;

• L3: cache externo presente na placa-mãe como uma memória de cache adicional, quando
o L2 está integrado ao núcleo do processador.

Vamos ver um exemplo de um processador de alguns anos atrás, apenas para ter uma noção da
capacidade de armazenamento de cada nível:

Core i7 (2011): L1 = 64 KB por núcleo, L2 = 256 KB por núcleo, L3 = 12 a 20 MB.

Com o uso da memória cache podemos observar que ela ocupa menos de 1% da capacidade da
memória RAM, mas permite obter entre 90 e 95% de taxa de acertos (hits). Quando ocorre uma

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 127


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

ausência (miss) da instrução ou dado na memória cache, uma busca deve ser realizada na memória
RAM. Com essa grande diferença dos tamanhos das memórias cache e principal, é necessário fazer
um mapeamento adequado, de acordo com as estratégias a seguir:

• Mapeamento direto: cada bloco da memória principal é mapeado para uma linha do cache.
Na figura abaixo podemos ver que a cache possui apenas 8 linhas (000 a 111), então todo
bloco com endereço terminado em “001” deve ser mapeado diretamente para a linha
“001” (cor cinza), todo bloco com endereço terminado em “101” deve ser mapeado para
a linha “101” (cor azul), e assim por diante;

• Mapeamento associativo completo: um bloco da memória principal pode ser carregado


para qualquer linha do cache. Há a necessidade de escolher cuidadosamente qual deverá
ser o bloco a ser substituído (políticas de substituição). Existe um campo tag incluído em
cada linha. No exemplo abaixo podemos ver 16 blocos (tags) e em cada bloco há o byte 0
e o byte 1;

• Mapeamento associativo por conjuntos: meio termo entre o direto e o associativo.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 128


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

E quanto ao “material” utilizado na fabricação da memória cache? A SRAM (Static Random Access
Memory) é mais utilizada. É considerada estática porque não precisa ser atualizada, ao contrário
da DRAM, que precisa ser atualizada milhares de vezes por segundo!!! Como resultado, a SRAM
é mais rápida que a DRAM e, obviamente, tudo que é melhor, é mais caro! Por isso a memória
cache possui uma capacidade de armazenamento muito menor que a memória principal. Essa não
necessidade da regeneração (atualização) do circuito ocorre porque são utilizados flip-flops
(espécie de “memória” de apenas um bit – sabendo isso já está bom para sua prova).

Memória Secundária

O que é essa tal de memória secundária, ou memória auxiliar? São memórias que ajudam e
complementam o funcionamento de um sistema computacional. São importantes, mas o
computador pode funcionar sem ela, por isso não é chamada de principal! Esse tipo de memória
armazena dados de forma “permanente”, ou seja, mesmo que a máquina seja desligada, os dados
não são perdidos. Só serão perdidos caso o usuário exclua ou ocorra algum dano físico na mídia
de armazenamento.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 129


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

O exemplo mais conhecido de memória secundária é o HD (hard disk – disco rígido, ou


winchester), o qual possui a função de armazenar dados. Nele são gravados os programas e os
arquivos do computador e possui uma capacidade muito superior à da memória RAM. Os dados
armazenados no HD não são perdidos quando o computador é desligado, ou seja, não é uma
memória volátil. Abaixo é mostrado o interior de um HD. Como é possível observar, discos
rígidos contêm em seu interior um ou mais pratos (discos) com uma cabeça de leitura/gravação
para cada face, que se movimentam presas a um braço. A superfície desses pratos é coberta por
um material magnético, possibilitando a leitura e gravação pelas cabeças.

A figura a seguir apresenta a distribuição lógica em uma face de um prato do disco rígido, onde
é possível observar os elementos básicos para a leitura e a gravação de dados: setor, cluster e
trilha.

Um setor é a menor unidade de armazenamento física do dispositivo, e, em geral, tem capacidade


de 512 bytes (nos discos ópticos pode ser maior como, por exemplo, 2048 bytes), embora discos
rígidos com setores físicos maiores, tais como 4096 bytes, estejam se tornando cada vez mais
comuns.

O cluster é a menor unidade de armazenamento lógica de dados em um dispositivo, podendo ser


formada, geralmente, de 1 a 128 setores (se o setor for de 512 bytes, o cluster varia de 512 bytes
a 64KB, na figura a seguir o cluster foi definido como 1024 bytes, ou seja, 2 setores).

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 130


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Se um arquivo possuir o tamanho maior do que um cluster, ele será distribuído em tantos clusters
quanto forem necessários. Entretanto, um mesmo cluster não poderá armazenar mais de um
arquivo.

Algumas questões cobram o conhecimento em relação às unidades que representam a capacidade


de armazenamento. Vamos a elas:

1 MB = 1 milhão de bytes. Dificilmente você encontrará um HD que utilize a unidade MB, a não
ser que seja um muito antigo, como por exemplo um de 540MB, utilizado no início dos anos 2000;

1 GB = 1 bilhão de bytes. Ainda se encontram HDs (usados) ou novos de 500GB, entre outros;

1 TB = 1 trilhão de bytes. O Terabyte é a unidade mais encontrada para a compra de um HD novo,


a partir de 1TB.

Aos poucos vem surgindo um substituto para o HD, o SSD (Solid State Disk). Trata-se de uma
nova tecnologia de armazenamento que não possui partes móveis e é construído em torno de
um circuito integrado semicondutor, o qual é responsável pelo armazenamento.

Com a eliminação das partes mecânicas (utilizadas em um HD), há redução de vibrações, tornando
os SSDs completamente silenciosos. Outra vantagem é o tempo de acesso reduzido à memória
flash presente nos SSDs em relação aos meios magnéticos e ópticos (obs.: o tipo de memória flash
geralmente utilizado é a NAND – para a prova não precisa saber detalhes, apenas saber que é a
NAND!). O SSD também é mais resistente que os HDs comuns devido à ausência de partes
mecânicas, algo considerado muito importante quando se trata de computadores portáteis.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 131


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Além de SATA e outras interfaces, uma que merece destaque é a M.2, um padrão tanto para
desktops como para notebooks. Extremamente compacto, o formato favorece a criação de
notebooks ultrafinos e tem se tornado uma preferência da indústria (figura abaixo).

O HDD (Hard Disk Drive, muitas vezes chamado apenas de HD) tem como vantagens:

• menor valor de venda, por ser uma tecnologia mais antiga e popular, com maior produção;
• maior espaço de armazenamento.

A desvantagem é o tempo de leitura e escrita maior, devido a ter um funcionamento mecânico


(componentes: atuador, eixo, braço mecânico com cabeça de leitura/gravação, entre outros). O
braço tem que se mover até a trilha correta (seek time) e aguardar o disco rodar até a posição
onde deve começar a leitura ou gravação. Como os discos ficam girando, a velocidade do HD é
medida em rotações por minuto (rpm) e as mais comuns são 5400 rpm e 7200 rpm.

O SSD tem como principais vantagens:

• maior velocidade, pois não possuem partes mecânicas;


• baixo consumo de energia: chega a gastar duas vezes menos energia que um HD
convencional.
A principal desvantagem é o valor de venda (mais caro), mesmo sendo vendido com espaço de
armazenamento menor do que um HD convencional. Isso ocorre porque ainda não atingiu um
grande volume de vendas, para realizar uma produção em massa.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 132


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

1. (COTEC/Prefeitura de Turmalina-MG - 2019) Considerando a configuração básica de um


microcomputador, há um tipo de memória que é instalado entre a CPU e a chamada memória
principal. A capacidade desse tipo de memória é, normalmente, bem menor do que a
capacidade da memória principal. O tipo de memória descrito corresponde à memória

A) RISC.

B) de barramento.

C) cachê.

D) secundária.

Comentários:

A memória cache (pronuncia-se “cachê”, mas na prática a maioria chama de “cash”) é aquela que
fica entra a CPU e a memória RAM. A memória cache é bem mais cara e sua capacidade de
armazenamento é bem menor. Portanto, a alternativa C está correta e é o gabarito da questão.

Gabarito: Letra C

2. (FCC/CLDF - 2018) Em uma arquitetura de sistema computacional típica são utilizados


diferentes tipos e tecnologias de memória hierarquicamente distribuídos. Considerando a
hierarquia da velocidade de acesso, com velocidade crescente, uma correta listagem de
tecnologia de memória é:

A) SSD, SRAM, DRAM e HD.

B) SRAM, DRAM, HD e SSD.

C) HD, DRAM, SRAM e SSD.

D) DRAM, HD, SRAM e SSD.

E) HD, SSD, DRAM e SRAM.

Comentários:

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 133


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Velocidade crescente: do mais lento ao mais rápido, ou seja, da memória secundária em direção
aos registradores. Temos HD e SSD como memória secundária, mas o HD é o mais lento, devido
à sua parte mecânica. Depois temos a memória RAM (DRAM) e a memória cache (SRAM). Os
registradores não são citados na questão. Portanto, a alternativa E está correta e é o gabarito da
questão.

Gabarito: Letra E

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 134


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

PRINCIPAIS PROCESSADORES DO MERCADO


Quando falamos em processadores do mercado, os dois grandes fabricantes que vêm à nossa
cabeça são a Intel e a AMD. E quando falamos em questões para concurso sobre o tema,
praticamente só tem processadores da Intel! De qualquer forma, vamos focar nos dois
fabricantes, mas se tiver que escolher somente um, por falta de tempo, escolha estudar os
processadores da Intel. Procurei fazer um resumão do que já foi abordado em provas de
concurso, além de pontos específicos abordados em editais. Vamos lá...

Intel
Intel Core i3, i5, i7, i9, Celeron, Pentium etc. São vários os nomes de processadores lançados
pela Intel até hoje! A linha mais famosa da Intel é a Core, sendo o i3 o mais básico, o i5
intermediário, o i7 mais completo e o i9 é o top de linha.
O i3 normalmente vem com dois ou quatro núcleos de processamento, enquanto os i5 e i7 vêm
com até seis ou oito, e o i9 ultrapassa todos os limites com até 18 núcleos. Quanto mais núcleos,
mais tarefas o processador pode executar ao mesmo tempo!
A velocidade com que esse processamento é executado também faz diferença. Um i3 de oitava
geração, por exemplo, pode funcionar a 3,6 GHz, enquanto um i5 de oitava geração pode
chegar a 4,3 GHz no modo “turbo”. Um i7 pode chegar a 4,7 GHz e um i9 pode alcançar até 4,8
GHz de frequência.

Gerações

A Intel começou a fabricar essa família de processadores em 2010 e de lá para cá a empresa já


lançou dez gerações de Intel Core (até agosto de 2019). Então não basta analisar um processador
pelo “tipo” dele. Por exemplo, dois computadores podem possuir um i3, mas um de sexta
geração e outro de oitava. É claro que o último tende a ser melhor!
Mas como saber qual a geração do chipset? Aí vem aquela sopa de letrinhas e números que a
Intel coloca logo depois do i3, i5, i7 ou i9. É ele o que, normalmente, determina o quão novo é
aquele modelo. Um processador identificado como Intel Core i3-6XXX pertence à sexta geração,
por exemplo. Um Intel Core i9-8XXX pertence à oitava geração.
É possível encontrar modelos diferentes dentro de uma mesma geração, porém. Nesse caso,
melhor é aquele que tem o maior número de identificação. Um Intel Core i3-6167 é melhor do
que um i3-6100 porque 6167 > 6100, mesmo que ambos sejam da sexta geração.
Para complicar ainda mais o nome, a Intel coloca uma ou duas letras depois de toda essa
numeração. São os chamados “sufixos”: U, Y, T, Q, H ou K. Às vezes, mais de uma dessas letras
aparecem. Elas fazem a diferença entre os modelos de processador também. Três delas têm a ver
com quanto seu PC vai consumir de energia elétrica:
● U: “Ultra Low Power”, modelo que consome menos energia;
● Y: “Low Power”, ainda consome pouco, mas mais do que o U;
● T: “Power Optimized”, para um consumo de energia mediano.
As outras três letras têm especificações mais brandas:
● Q: “Quad-core”, ou seja, quatro núcleos;

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 210


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

● H: “High-Performance Graphics”, quando o chip vem com uma boa GPU integrada;
● K: “Unlocked”, significa que o processador pode ir além de sua velocidade
pré-determinada através de um overclock.
Vamos ver dois exemplos:

Fonte: Olhar Digital.


Mais algumas “letrinhas”:
● G: Inclui placa de vídeo integrada (apenas para laptops);
● M: “Mobile”, modelo exclusivo para laptops;
● C: Possui opção de overclock, soquete LGA 1150, placa de vídeo integrada básica;
● R: Processor de desktop baseado no soquete BGA 1364 com placa de vídeo;
● S: Otimizado para performance;
● X: “Extreme Edition”, performance melhorada.
Às vezes o examinador gosta de cobrar o codinome utilizado pela geração do processador, isso
mesmo! Então vamos ver a lista (note que da 6ª em diante é algum lago – “lake”):
● 1ª geração: Gulftown;
● 2ª geração: Sandy Bridge;
● 3ª geração: Ivy Bridge;
● 4ª geração: Haswell;
● 5ª geração: Broadwell;
● 6ª geração: Skylake;
● 7ª geração: Kaby Lake;
● 8ª geração: Coffee Lake;
● 9ª geração: Coffee Lake;
● 10ª geração: Ice Lake.
Algumas tecnologias utilizadas pelos processadores Intel e que já foram cobradas em provas de
concurso são:
Hyper-Threading (HT): utilizada para computação paralela em processadores x86, faz com que
cada núcleo do processador possa executar mais de um thread de uma única vez, tornando o
sistema mais rápido quando se usam vários programas ao mesmo tempo;
Turbo Boost 2.0: acelera o desempenho do processador e dos gráficos para os picos de carga
permitindo automaticamente que os núcleos do processador trabalhem mais rapidamente do
que a frequência operacional nominal quando estiverem operando abaixo dos limites
especificados para energia, corrente e temperatura. Se o processador entra ou não no estado da
Tecnologia Intel® Turbo Boost 2.0 e o tempo que ele permanece nesse estado dependem da
carga de trabalho e do ambiente operacional;
Dynamic Tuning: conjunto de software e drivers que realizam uma alocação de energia elétrica
dinamicamente, de acordo com a demanda da CPU e GPU;

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 211


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

VT-x: tecnologia de virtualização Intel é um método no qual sistemas operacionais baseados na


plataforma x86 são executados sob outro sistema operacional x86 hospedeiro, com pouca ou
nenhuma modificação do sistema hóspede.

Um termo que aparece às vezes também é litografia, que está ligado ao tamanho dos transistores
(medido em nanômetros - nm). É sabido que quanto mais novo o processador, menor a litografia
==26a66d==

(não sei qual o limite!). Vamos a alguns exemplos das últimas gerações e um exemplo mais antigo
(destaquei em vermelho a geração):
● i7-1065G7 - 10 nm;
● i5-9600T - 14 nm;
● i9-8950HK - 14 nm;
● i3-4330 - 22 nm.
Além da família Core i, não podemos esquecer outros processadores da Intel: Atom, Celeron,
Xeon (para servidores), entre outros.

Intel Xeon

Os processadores Intel Xeon são uma linha de CPUs de alto desempenho, destinada a
servidores, workstations e sistemas embarcados. São processadores reconhecidos por sua
capacidade de lidar com cargas de trabalho intensivas, oferecendo recursos avançados de
segurança, gerenciamento e eficiência energética.
Principais Características
● Grande Quantidade de Núcleos (Cores): Os processadores Xeon oferecem um número
elevado de núcleos, permitindo o processamento paralelo de múltiplas tarefas. Por
exemplo, a 6ª geração de processadores Xeon (denominada “Granite Rapids”) pode
apresentar até 128 núcleos de desempenho (P-cores);

● Suporte a Memória ECC: Os processadores Xeon suportam memória ECC (Error Correction
Code). Esse tipo de memória detecta e corrige erros, garantindo maior confiabilidade em
aplicações críticas;

● Aceleradores Integrados: Alguns modelos incluem aceleradores específicos para tarefas


como inteligência artificial (IA) e aprendizado de máquina, o que melhora o desempenho
dessas aplicações;

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 212


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

● Tecnologias de Segurança Avançadas: Incorporam tecnologias como a Intel Trust Domain


Extensions (TDX), que proporciona isolamento de máquinas virtuais para aumentar a
segurança em ambientes de nuvem.
Gerações Recentes
● Sapphire Rapids (4ª Geração): Introduziu melhorias significativas, como o uso de memória
DDR5 e suporte a PCIe 5.0, além de aceleradores integrados para IA;

● Emerald Rapids (5ª Geração): Trouxe aumento no cache L3 e elevou a contagem máxima
de núcleos de 60 para 64 em comparação com a geração anterior;

● Granite Rapids e Sierra Forest (6ª Geração): Visam atender diferentes segmentos de
mercado, com Granite Rapids focada em alto desempenho e Sierra Forest em eficiência
energética e alta densidade de núcleos.
Aplicações
Os processadores Xeon são utilizados em diversos ambientes que demandam alto desempenho
e confiabilidade, como por exemplo:
● Data Centers: Utilizados para o processamento de grandes volumes de dados e suporte a
serviços em nuvem;

● Estações de Trabalho: Utilizadas por profissionais que necessitam de elevado poder de


computação, como designers e engenheiros;

● Sistemas Embarcados: Utilizados em aplicações industriais e de telecomunicações que


requerem processamento robusto e eficiente.

AMD
Embora a quantidade de questões sobre AMD seja menor do que sobre processadores Intel,
esse assunto é cobrado e merece nossa atenção! Alguns dos processadores da AMD são: EPYC
(para servidor), Ryzen, Athlon, FX, Sempron. Em relação ao Sempron, vale destacar que um dos
principais recursos arquitetônicos é o controlador de memória DDR integrado de alta largura de
banda e baixa latência.
Uma tecnologia utilizada pela AMD (já citada em questões) é a Cool'n'Quiet, que controla o clock
e a voltagem dos processadores, reduzindo-os quando ociosos. Inicialmente introduzida na linha
de Sempron Palermo, esta tecnologia reduz o consumo e a carga de trabalho do cooler do
processador. A tecnologia é similar à criada pela Intel, a SpeedStep, e à “PowerNow!” da própria
AMD. Tais tecnologias são desenvolvidas com foco em portáteis para reduzir o consumo e
aumentar a duração das baterias.

AMD EPYC

O AMD EPYC é uma linha de processadores de alto desempenho, projetada especificamente


para servidores e data centers. São processadores baseados na microarquitetura Zen e são
conhecidos por sua alta eficiência, escalabilidade e desempenho em ambientes que exigem

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 213


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

computação intensa. Alguns dos principais aspectos e características dos processadores AMD
EPYC são mostrados na sequência.
1. Arquitetura e Núcleos (Cores)
● Arquitetura Zen: Os processadores EPYC são baseados na arquitetura Zen. Isso garante
eficiência de energia, melhorias no desempenho por ciclo de clock e maior número de
instruções por clock (IPC);

● Alto Número de Núcleos (Cores): A linha EPYC é conhecida por oferecer processadores
com um grande número de núcleos. Por exemplo, a família de processadores AMD EPYC
de 4ª geração incluem até 128 núcleos “Zen 4” ou “Zen 4c”, com capacidade e largura de
banda de memória excepcionais.
2. Eficiência Energética
Os processadores EPYC são projetados para serem energeticamente eficientes, o que é
fundamental em ambientes de data centers, onde o consumo de energia é uma grande
preocupação. Eles oferecem um bom equilíbrio entre desempenho e consumo de energia,
ajudando as empresas a reduzir custos operacionais.
3. Escalabilidade e Suporte à Memória
● Grande Capacidade de Memória: Nas versões mais recentes, os processadores EPYC
suportam memória DDR4 e DDR5, com capacidades por processador que podem atingir
até 4 TB;

● Largura de Banda de Memória: A arquitetura EPYC inclui suporte para 8 canais de


memória por soquete.
4. PCIe Lanes
Um PCIe Lane é um canal de dados individual dentro de um slot ou conexão PCIe, que permite a
transmissão e recebimento de dados entre a placa-mãe e uma placa de expansão. Uma das
principais vantagens do AMD EPYC é o número de lanes PCIe disponíveis, suportando:
● 128 lanes PCIe 4.0, em versões mais antigas;
● 128 lanes PCIe 5.0, em versões mais recentes.
Essa quantidade elevada é excelente para sistemas que exigem conectividade de alta
velocidade, como soluções de armazenamento NVMe, GPUs, e redes de alta velocidade.
5. Segurança
● AMD Infinity Guard: A linha EPYC oferece uma série de recursos de segurança integrados,
como criptografia de memória e segurança baseada em hardware, auxiliando na proteção
de dados confidenciais e na mitigação de ameaças cibernéticas;

● SEV (Secure Encrypted Virtualization): Este recurso permite que as máquinas virtuais
tenham memória criptografada, oferecendo um nível extra de proteção contra ataques à
infraestrutura de virtualização.
6. Desempenho em Cargas de Trabalho Diversas

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 214


[Link] 217

18611005821 - Luiz Carlos da costa


Evandro Dalla Vecchia
Aula 01

Os processadores AMD EPYC são otimizados para uma ampla variedade de cargas de trabalho,
incluindo:
● Computação em Nuvem: Processamento eficiente e escalável para ambientes de nuvem;

● Virtualização: Alta densidade de núcleos e suporte para criptografia segura de VMs;

● Big Data e Inteligência Artificial (IA): Desempenho massivo para análise de grandes
volumes de dados e execução de modelos de IA;

● HPC (High-Performance Computing): Desempenho robusto para simulações complexas e


cálculos científicos.
7. Principais Gerações
● EPYC Naples (1ª geração): Baseado na arquitetura Zen;
● EPYC Rome (2ª geração): Baseado na arquitetura Zen 2, com suporte a PCIe 4.0;
● EPYC Milan (3ª geração): Baseado na arquitetura Zen 3, com melhorias substanciais de IPC
e eficiência energética;
● EPYC Genoa (4ª geração): Baseado na arquitetura Zen 4, com suporte a DDR5 e PCIe 5.0,
além de aumento no número de núcleos.
8. Vantagens do AMD EPYC
● Maior número de núcleos por processador;
● Melhor relação custo-benefício em várias aplicações, comparado com a Intel (e outros
concorrentes);
● “Forte” suporte para tecnologias de segurança e virtualização;
● Grande capacidade de memória e largura de banda.

1. (COPESE-UFT/UFT/2018) Alguns processadores da família i3, i5, i7 e i9 da Intel


(principalmente os da sétima e oitava gerações) possuem características tecnológicas
interessantes. Sobre as características que podem estar presentes nestes processadores,
assinale a alternativa INCORRETA.
A) A temperatura de junção é a temperatura máxima permitida na matriz do processador.
B) A tecnologia Turbo Boost permite o aumento dinâmico da frequência do processador.
C) A tecnologia VT-x permite a virtualização de registradores e memória principal do tipo Intel
Optane.
D) A tecnologia Hyper-threading da Intel oferece dois segmentos de processamento por núcleo
físico.

Perito Criminal - Curso Regular (Área TI) Arquitetura de Computadores 215


[Link] 217

18611005821 - Luiz Carlos da costa

Você também pode gostar