Lädt...


🔧 Dia 12 - 1.2 Oito grandes ideias sobre arquitetura de computadores


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

Esse post fala sobre o capítulo 1.2 do livro "Organização e Projeto de Computadores: Interface Hardware/Software"

-

1 - Projete pensando na "Lei de Moore"

Lei de Moore é uma observação feita por Gordon Moore, cofundador da Intel, em 1965. Essa lei declara que os recursos do circuito integrado dobram a cada 18 a 24 meses. O livro nesse trecho alega: Como projetos de computador podem durar anos, os recursos disponíveis por chip podem facilmente dobrar ou quadruplicar entre o inicio e o final do projeto, então o ideal, é que antecipemos onde a tecnologia estará quando terminarmos o projeto.

Fazendo algumas pesquisas, achei uma matéria no Terra explicando que a Lei de Moore está desacelerando, pois os desafios físicos e de engenharia estão tornando cada vez mais difícil manter o ritmo de miniaturização dos transistores.

2 - Use a abstração para simplificar o projeto

Nesse trecho é dito como tivemos que inventar técnicas para nos tornar mais produtivos, se não, o tempo de projeto aumentaria de modo insustentável quando os recursos aumentassem pela Lei de Moore. Então, uma técnica de produtividade é a abstração, os detalhes de baixo nível são ocultados, enquanto oferece um modelo mais simples de alto nível. (Um exemplo para melhor entendimento, são as infinitas bibliotecas em Python escritas em C.)

3 - Torne o caso comum veloz

"Tornar o caso comum veloz costuma melhorar mais o desempenho do que otimizar o caso raro."
O caso comum é mais fácil de melhorar. Por ser comum, ele é mais simples. Saber o que é o "caso comum" será ensinado seções mais a frente no livro.

4 - Desempenho pelo paralelismo

Esse conceito também será aprofundado ao decorrer do livro, mas basicamente consiste em mais desempenho realizando operações em paralelo.

5 - Desempenho pelo pipelining

É um padrão de paralelismo. Darei um exemplo:
Imagine uma fábrica de carros com 5 estágios:

  • Chassis montado.
  • Motor instalado.
  • Pintura aplicada.
  • Interior montado.
  • Teste realizado.

Se a fábrica não utilizar pipelining, cada carro terá que passar por todos os cinco estágios antes que o próximo carro comece. Se cada estágio demorar uma hora, para montar o primeiro carro vai demorar cinco. Para otimizar isso, após o primeiro carro terminar o estágio um, será adicionado outro carro nesse estágio, enquanto o primeiro carro segue a pipeline, e assim funcionará sucessivamente.

6 - Desempenho pela predição

Esse é um conceito que honestamente não consegui entender pela definição do livro, então busquei outras fontes:

Um exemplo é a predição de desvio, técnica usada em processadores para melhorar o desempenho ao prever o caminho que o código seguirá em instruções condicionais (if, switch). Em vez de esperar pela avaliação da condição, o processador faz uma previsão e continua executando instruções antecipadamente. Se a previsão estiver correta, o desempenho melhora porque o processador não fica ocioso. Se errada, ele apenas descarta as instruções incorretas. Isso reduz o tempo ocioso e aumenta a eficiência do sistema, especialmente em loops e condições frequentes.

7 - Hierarquia de memórias

É um conceito que organiza diferentes tipos de memórias de um sistema em níveis com diferentes velocidades e capacidades. Utilizando memórias mais rápidas e menores (cache) para armazenar dados frequentemente acessados e memórias mais lentas (disco rígido/SSD) para armazenar grandes volumes de dados menos utilizados.

Um exemplo disso em sistemas web, é quando utilizamos o Redis para realizar o cache de uma listagem frequentemente acessada pelo client. Isso reduz o tempo de resposta e o overhead de buscar novamente os dados no banco de dados.

8 - Estabilidade pela redundância

"Além de rápidos, os computadores precisam ser estáveis."

Em um serviço web por exemplo, isso pode se assemelhar a redes de servidor em cluster, onde há vários servidores que hospedam o serviço, e se caso um deles falhe, outro servidor assume a função. Nesses clusters é possível inclusive adicionar balanceadores de carga que distribuem requisições entre servidores. Caso um servidor fique sobrecarregado ou inativo, as requisições são direcionados a outro servidor.

...

🔧 Dia 12 - 1.2 Oito grandes ideias sobre arquitetura de computadores


📈 182.61 Punkte
🔧 Programmierung

🔧 Comunicação, comunidade e tecnologia: detalhes sobre dia a dia de uma pessoa Tech Community Manager


📈 53.75 Punkte
🔧 Programmierung

🔧 Uma visão básica de Arquitetura de Computadores 🖥️


📈 49.44 Punkte
🔧 Programmierung

🔧 Dia 11 - [1.1 Introdução] - Organização e Projeto de Computadores: Interface Hardware/Software


📈 46.04 Punkte
🔧 Programmierung

🔧 10 Livros para Aprendizado Avançado sobre Redes de Computadores


📈 45.56 Punkte
🔧 Programmierung

🔧 Tudo o que você precisa saber sobre a arquitetura BEM CSS


📈 39.08 Punkte
🔧 Programmierung

🔧 Um pouco sobre Arquitetura Hexagonal


📈 39.08 Punkte
🔧 Programmierung

🔧 Como o Figma Virou Parte do Meu Dia a Dia no Front-End


📈 36.15 Punkte
🔧 Programmierung

🔧 Go, Gemini e Alexa: Como criar automações para o seu dia a dia


📈 36.15 Punkte
🔧 Programmierung

🔧 Segunda parte: Definiciones/Conceptos del día a día


📈 36.15 Punkte
🔧 Programmierung

🔧 Sesgo de Supervivencia: Entendiendo y Aplicando en el Día a Día de un Programador


📈 36.15 Punkte
🔧 Programmierung

🔧 Como reduzir o "copia & cola" no seu dia-a-dia com Code Generators


📈 36.15 Punkte
🔧 Programmierung

🔧 Dia 6 - Fim do snake game e materiais que achei sobre física computacional.


📈 35.68 Punkte
🔧 Programmierung

🔧 Discussão sobre o Advent of Code 2022 - Dia 3: Complexidade de operações em estruturas de dados


📈 35.68 Punkte
🔧 Programmierung

🔧 Discussão sobre o Advent of Code 2022 - Dia 2: Sequência de condições


📈 35.68 Punkte
🔧 Programmierung

🔧 Domínio próprio: Ideias de empreendedorismo para ganhar dinheiro em 2025


📈 32.65 Punkte
🔧 Programmierung

🔧 Papo e Ideias: Conectando Tecnologia e Negócios!


📈 32.65 Punkte
🔧 Programmierung

🔧 Fundamentos Em Redes de Computadores - A Rede


📈 27.96 Punkte
🔧 Programmierung

🔧 O que são Redes de Computadores e suas Topologias


📈 27.96 Punkte
🔧 Programmierung

🔧 Entendendo o MTU nas Redes de Computadores


📈 27.96 Punkte
🔧 Programmierung

🔧 Computação não depende da existencia de computadores [PT-BR]


📈 27.96 Punkte
🔧 Programmierung

🔧 Historias de éxito con AWS: Cómo grandes empresas están transformando sus negocios


📈 26.52 Punkte
🔧 Programmierung

🔧 Les applications des grandes compagnies téléphoniques : innovation ou frein pour les PME et startups ?


📈 26.52 Punkte
🔧 Programmierung

🔧 Mundos grandes 100% On-Chain. ¿Es posible?


📈 26.52 Punkte
🔧 Programmierung

🔧 Simples Mudanças, Grandes Impactos: Como Fortalecer a Segurança da Sua Aplicação Laravel


📈 26.52 Punkte
🔧 Programmierung

📰 Parada en boxes: gobernanza del dato y sostenibilidad, los grandes retos de la F1


📈 26.52 Punkte
📰 IT Security Nachrichten

🔧 O Poder das Tarefas: Como Pequenas Entregas Levam a Grandes Resultados


📈 26.52 Punkte
🔧 Programmierung

📰 Las grandes tecnológicas se comprometen a adoptar nuevas prácticas de seguridad para la IA


📈 26.52 Punkte
📰 IT Security Nachrichten

🔧 Uma introdução à Arquitetura orientada a eventos


📈 21.48 Punkte
🔧 Programmierung

🔧 Construindo um web server em Assembly x86, parte II, história e arquitetura


📈 21.48 Punkte
🔧 Programmierung

matomo