Microarquitetura: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
JISSELEA (discussão | contribs)
atualização
JISSELEA (discussão | contribs)
formatação
Linha 6:
melhorar a velocidade e desempenho de processamento. É por isso que dentro de uma família de processadores, a microarquitetura pode ser atualizada frequentemente, pra melhorar o processamento, mas mesmo assim pode manter a arquitetura do processador.
 
. Uma Microarquitetura é dividida em uma Parte Operativa e uma Parte de Controle.
 
Parte Operativa (ou Caminho de Dados)– Constituída de todos os componentes responsáveis pela execução das operações elementares sobre os dados(transformações nos dados)
Linha 16:
Cada elemento da microarquitetura por sua vez é representado por um esquema que descreve as interconexões de portas lógicas usadas para implementá-lo. Cada porta lógica por sua vez é representado por um diagrama de circuito que descreve as conexões dos transistores usados para implementá-lo em alguma família lógica particular.
 
== Aspectos da microarquitetura ==
 
O caminho de dados em pipeline é o projeto central de dados mais comumente utilizados na microarquitetura hoje. Esta técnica é usada na maioria dos microprocessadores modernos, microcontroladores e DSPs. A arquitetura pipeline permite múltiplas instruções para sobrepor em execução, bem como uma linha de montagem. O pipeline inclui diversas fases, que são fundamentais em projetos microarquitetura, algumas dessas etapas incluem instrução busca, decodificação de instruções, execução e gravação. Algumas arquiteturas incluem outras etapas, tais como acesso à memória. O projeto de pipeline é uma das tarefas centrais microarquiteturais.
 
Linha 38 ⟶ 37:
Testabilidade
 
'''== conceitos microarquiteturais'''Microarquiteturais ==
 
Ciclo de instrução
 
Linha 58 ⟶ 56:
Para complicar esta série de aparência simples de passos é o facto de a hierarquia de memória, que inclui o armazenamento em cache, a memória principal e de armazenamento não-volátil (como discos rígidos, onde as instruções e dados de programas residem), tem sido sempre mais lento do que o próprio processador. Uma quantidade considerável de pesquisa tem sido posta em projetos que evitam esses atrasos, tanto quanto possível. Ao longo dos anos, um objectivo central era de executar mais instruções em paralelo, aumentando assim a velocidade de execução de um programa eficaz. Estes esforços introduziram lógica e estruturas de circuitos complicadas.
 
== Escolha de Conjunto de instruções ==
 
Os conjuntos de instruções mudaram ao longo dos anos, desde inicialmente muito simples, por vezes muito complexos (em vários aspectos). Nos últimos anos, arquiteturas load-store, VLIW e EPIC tem estado em alta. Arquiteturas que estão lidando com paralelismo de dados incluem SIMD e Vetores. Alguns rótulos utilizados para designar classes de arquiteturas de CPU não são particularmente descritivo, especialmente para que o rótulo CISC; muitos projetos iniciais retroativamente denotado "CISC" são na verdade muito mais simples do que os processadores modernos RISC (em vários aspectos).
 
Linha 65 ⟶ 62:
conduta, e uma estratégia simples para reduzir o número de níveis lógicos, a fim de atingir frequências de operação elevadas; instrução cache-memórias compensaram a freqüência de operação superior e inerentemente baixa densidade de código, enquanto os grandes conjuntos de registros foram utilizados para fatorar o máximo de memória (lenta) acessada possível.
 
== Instrução pipelining. ==
 
Uma das primeiras e mais poderosas técnicas para melhorar o desempenho, é a utilização de pipeline de Instrução. Primeiro os designs de processadores realizaram todos os passos acima para uma instrução antes de passar para a próxima. Grandes porções do circuito ficavam ociosa em qualquer etapa; por exemplo, o circuito de descodificação de instruções seria inativo durante a execução e assim por diante.
 
Linha 76 ⟶ 72:
ritmo com a tecnologia de circuito em que se baseiam.
 
== Cache ==
 
Não
demorou muito para que melhorias na fabricação de chips permitiram ainda mais circuitos para ser colocada no die, e os designers começaram a procurar maneiras de usá-lo. Um dos mais comum foi o de acrescentar uma quantidade cada vez maior de memória cache on-die. A Cache serve simplesmente de intermediário entre um operador de um processo e o dispositivo de armazenamento ao qual esse operador acede. A CPU inclui um controlador de cache que automatiza a leitura e a escrita a partir do cache.
Linha 83 ⟶ 78:
Caches e pipeline foram uma combinação perfeita. Anteriormente, isso não faz muito sentido para construir um pipeline que pode correr mais rápido do que a latência de acesso de memória off-chip. Usando a memória de cache on-chip, significou um comprimento muito mais pequeno de tempo. Isso permitiu que as freqüências de operação dos processadores passassem a aumentar a um ritmo muito mais rápido do que a memória off-chip.
 
== Previsão de desvio ==
 
A partir do momento que decodifica a instruções do processador se descoberto que ele encontrou uma instrução de desvio dentro do pipeline e a sua execução for consolidada, todas as instruções posteriores a mesma a que se encontram na fila devem ser abortadas.
 
Técnicas como a previsão de desvios e execução especulativa são usados para diminuir essas penalidades. Previsão de desvios é onde o hardware faz palpites sobre se um determinado será ou não tomado. Projetos modernos têm sistemas de previsão estatísticos e complexos, que assistem os resultados anteriores para prever o futuro com maior precisão. A suposição permite que a pré-busca no hardware de instruções sem esperar que a leitura de registro. Isso pode produzir um melhor desempenho quando o palpite é bom, com o risco de uma enorme pena quando a suposição é ruim porque as instruções têm de ser desfeita.
 
== Superscalar ==
 
As melhorias na fabricação de semicondutores logo permitidos ainda mais portas lógicas para ser utilizado. No esquema acima o processador processa partes de uma única instrução de cada vez. Os programas de computador poderiam ser executados mais rapidamente se várias instruções fossem processados simultaneamente. Isto é o que os processadores superescalares alcançam, por meio da replicação de unidades especializadas, como exemplo unidade de inteiro, unidade de ponto flutuante. A replicação das unidades só foi possível quando a área do die de um processador de um só tema não estendeu os limites do que pode ser fabricado de forma confiável. Ao final de 1980, os projetos superescalares começaram a entrar no mercado.
 
Uma parte específica do pipeline lê uma enorme lista de instruções da memória e entregandos para as diferentes unidades de execução que estão ociosos naquele momento. Os resultados são, então, recolhido e re-ordenados no final.
 
== Execução fora de Ordem ==
 
A Execução Fora-de-ordem permite que uma instrução pronta para ser processada seja executada antes mas não tem os operandos prontos, em seguida, re-ordens os resultados para fazer parecer que tudo aconteceu na ordem programada. Esta técnica também é usada para evitar outras “bolhas”, como uma instrução aguardando um resultado de uma operação de ponto flutuante de longa latência ou outras operações multi-ciclo.
 
== Renomeação de registrador ==
 
Renomeação de registrador refere-se a uma técnica utilizada para evitar a execução serializada desnecessária de instruções do programa por causa da reutilização dos mesmos registros por essas instruções. Suponha que temos dois grupos de instruções que irão utilizar o mesmo registro. Um conjunto de instruções é executado primeiro de deixar o registo para o outro conjunto, mas se o outro conjunto é atribuído a um registo semelhante diferente, ambos os conjuntos de instruções podem ser executadas em paralelo (ou) em série é isso que a renomeação faz.
 
== Multiprocessamento e multithreading [editar]==
 
Arquitetos de computadores tornaram-se frustrado pela crescente incompatibilidade em freqüências de operação da CPU e tempos de acesso a Memória. Nenhuma das técnicas que exploradas em nível de instrução (ILP paralelismo) dentro de um programa poderia compensar as longas “bolhas” que ocorreram quando os dados tiveram que ser obtido a partir da memória principal. Por estas razões, as gerações mais novas de computadores começaram a explorar os níveis mais elevados de paralelismo que existem fora de um único programa ou segmento de programa.
 
Linha 117 ⟶ 107:
Conceitualmente, multithreading é equivalente a uma mudança de contexto no nível do sistema operacional. A diferença é que uma CPU multithreaded pode fazer um interruptor de fio em um ciclo de CPU em vez das centenas ou milhares de ciclos de CPU uma mudança de contexto requer normalmente. Isto é conseguido por meio da replicação do estado hardware (como o contador de registo e arquivo de programa) para cada segmento ativo.
 
Uma outra melhoria é multithreading simultâneo. Esta técnica permite que CPUs superescalares para executar instruções de diferentes programas / threads simultaneamente no mesmo ciclo.{{Referências}}[[Categoria:Arquitetura de computadores]]
 
[[Categoria:Arquitetura de computadores]]