Microoperações em uma CPU, o que são e como funcionam

Um dos conceitos-chave para entender a arquitetura e o desempenho dos atuais Intel e AMD CPUs é o conceito de microoperações, bem como unidades como seu cache. Neste artigo vamos dizer-lhe de uma forma acessível o que são e porque os processadores de hoje baseiam toda a sua operação neles para alcançar o máximo desempenho possível.

A CPU hoje pode executar um grande número de instruções diferentes, e o faz em frequências até 5,000 vezes maiores que as dos primeiros computadores pessoais. Costumamos pensar e de forma totalmente equivocada que a maior quantidade de MHz ou GHz se deve aos novos de fabricação. A realidade é muito diferente, e é aí que entram as microoperações, que são fundamentais para alcançar o enorme poder computacional dos microprocessadores atuais.

Microoperações em uma CPU

O que são microoperações?

Um dos símiles com a realidade que costumam ser usados ​​para explicar o que é um programa é o símile com uma receita culinária. Em que podemos ver atribuídos em um verbo uma série de ações que temos que realizar. Por exemplo, posso colocar em uma receita que você frita um pedaço de carne na panela, mas para você vai ter que procurar a panela, faça o mesmo com o óleo, coloque o último na panela, espere para que fique quente e coloque o pedaço de carne nele. Como você pode ver, convertemos algo que em princípio é definido por um único verbo em uma série de ações.

Flujo Microoperações

Bem, as instruções de uma CPU podem ser divididas em outras menores que chamamos de microoperações. E por que não microinstruções? Bem, devido ao fato de que uma instrução, apenas segmentando-a em vários ciclos para sua execução, leva vários ciclos de clock para ser resolvida. Uma microoperação, por outro lado, leva um único ciclo de clock.

Instruções Tiempo Pipeline

Uma maneira de obter o máximo de MHz ou GHz é o pipelining, onde cada instrução é executada em vários estágios que duram um ciclo de clock cada. Como a frequência é o inverso do tempo, para obter mais frequência temos que encurtar o tempo. O problema é que se chega ao ponto em que uma instrução não pode mais ser decomposta, o número de estágios no pipeline se torna curto e, portanto, a velocidade de clock que pode ser alcançada é baixa.

Na verdade, eles nasceram com o surgimento da execução fora de ordem da arquitetura Intel P6 e seus processadores derivados, como o Pentium II e III. A razão para isso é que a segmentação do P5 ou Pentium só permitiu que eles chegassem a pouco mais de 200 MHz. Com as microoperações, ao alongar ainda mais o número de estágios de cada instrução, elas ultrapassaram a barreira dos GHz com o Pentium 3 e conseguiram velocidades de clock 16 vezes maiores com o Pentium 4. Desde então, são utilizadas em todos os processadores com execução fora de ordem, independentemente da marca e registro e conjunto de instruções.

Suas CPUs não são x86, nem RISC-V, nem ARM

Nas CPUs atuais, quando as instruções chegam à unidade de controle da CPU para serem decodificadas e atribuídas à unidade de controle, elas são primeiro divididas em várias microoperações diferentes. Isso significa que cada instrução que o processador executa é composta por uma série de micro operações básicas e o conjunto delas em um fluxo ordenado é chamado de microcódigo.

Micro operações CPU

A decomposição de instruções em microoperações e a transformação de programas armazenados em RAM em microcódigo é encontrado hoje em todos os processadores. Então, quando o ISA do seu telefone ARM A CPU ou a CPU x86 do seu PC está executando programas, suas unidades de execução não estão resolvendo instruções com esses conjuntos de registradores e instruções.

Esse processo não só tem as vantagens que explicamos na seção anterior, mas também podemos encontrar instruções que, mesmo dentro da mesma arquitetura e sob o mesmo conjunto de registradores e instruções, são divididas de forma diferente e os programas são totalmente compatíveis. A ideia geralmente é reduzir o número de ciclos de clock necessários, mas na maioria das vezes é para evitar a contenção que ocorre quando há várias solicitações para o mesmo recurso dentro do processador.

O que é o cache micro-op?

O outro elemento importante para alcançar o máximo desempenho possível é o cache de micro-operações, que é posterior às micro-operações e, portanto, mais próximo no tempo. Sua origem pode ser encontrada no cache de rastreamento que a Intel implementou no Pentium 4. É uma extensão do cache de primeiro nível para instruções que armazena a correlação entre as diferentes instruções e as microoperações nas quais foram previamente desmontadas pela unidade de controle .

Microscópio de Cache

No entanto, o ISA x86 sempre teve um problema com relação ao tipo RISC, enquanto este último possui um comprimento de instrução fixo no código, no caso do x86 cada um deles pode medir entre 1 e 15 bytes. Devemos ter em mente que cada instrução é buscada e decodificada em várias micro-operações. Para isso, ainda hoje, é necessária uma unidade de controle de alta complexidade que pode consumir até um terço de sua potência energética sem as otimizações necessárias.

O cache de micro-operação é, portanto, uma evolução do cache de rastreamento, mas não faz parte do cache de instruções, é uma entidade independente de hardware. Em um cache de microoperação, o tamanho de cada um deles é fixado em termos de número de bytes, permitindo, por exemplo, que uma CPU com ISA x86 opere o mais próximo possível de um tipo RISC e reduza a complexidade da unidade de controle e com ela consumo. A diferença do cache de plotagem do Pentium 4 é que o cache de micro-ops atual armazena todos os micro-ops pertencentes a uma instrução em uma única linha.

Como funciona?

O que o cache de microoperações faz é evitar o trabalho de decodificar as instruções, então quando o decodificador acaba de realizar essa tarefa, o que ele faz é armazenar o resultado de seu trabalho no referido cache. Dessa forma, quando for necessário decodificar a instrução a seguir, o que se faz é pesquisar se as microoperações que a formam estão na referida cache. A motivação para fazer isso não é outra senão o fato de que leva menos tempo para consultar a referida cache do que para não decompor uma instrução complexa.

cache microoperaciones como funciona

No entanto, ele funciona como um cache e seu conteúdo é alterado ao longo do tempo à medida que novas instruções chegam. Quando há uma nova instrução no cache de instruções de primeiro nível, o cache de micro-operação é pesquisado se já estiver decodificado. Se não, então prossiga como de costume.

As instruções mais comuns, uma vez decompostas, geralmente fazem parte do cache de micro-operações. O que faz com que menos sejam descartados, porém, é que aqueles cujo uso é esporádico serão mais frequentes, de modo a deixar espaço para novas instruções. Idealmente, o tamanho do cache de microoperação deve ser grande o suficiente para armazenar todos eles, mas deve ser pequeno o suficiente para que a busca nele não acabe afetando o desempenho da CPU.