Diferença entre instrução, operações e micro-operação (uop) [fechado]

1

Estou tentando entender os intrincados termos relacionados ao desempenho dos processadores.

O desempenho do computador é medido em FLOPS , que é a abreviatura de FLOPs por segundo . FLOPs significa Operações de ponto flutuante .

Agora, por que as operações de ponto flutuante são consideradas para o desempenho de um computador? E quanto às operações inteiras? Existe alguma fonte on-line (citação oficial) que explicaria essa tendência? O Google não me deu nada com minha pesquisa.

Agora, o que exatamente a operação em FLOP significa? Isso significa uma operação matemática como MUL , ADD , DIV etc?

Neste caso, o que seria uma instrução ? Se uma instrução é algo como ADDPD , ADDSD etc, como eu posso ver aqui ( link ), então uma instrução pode levar a muitas operações internas. Seria isso micro-operações ou uops ?

Eu não achei a explicação para a microoperação na Wikipedia útil. Quem explica isso claramente aqui provavelmente terá que melhorar o artigo da Wikipedia também :)

De acordo com o livro de Hennessy / Patterson sobre Arquitetura de Computadores (5ª edição, página 233), o ARM Cortex-A8 (RISC) é capaz de executar duas instruções por relógio. Isso significa que o processador pode executar, por exemplo, um ADDPD e um ADDSD (total = 2 instruções) em um ciclo?

Esta fonte ( link ) afirma o seguinte:

Most microprocessors today can do four (4) FLOPs per clock cycle, that is, 4 FLOPs per Hz.

Eu acredito que o autor está errado. Ele provavelmente implicava em 4 instruções por ciclos , limitando-se a processadores baseados em CISC (Intel, por exemplo). Isso ocorre porque algumas instruções como o FMA no Haswell podem aumentar o desempenho por meio do qual o processador pode processar mais operações por ciclo. Em outras palavras, 1 FMA instrução traduz um par de operações . Estou certo?

IPC significa instrução por ciclo. Quais instruções são referidas aqui? As instruções retiradas pelo processador? Com um contador de hardware, posso contar o número de ciclos da CPU e o número de INST_RETIRED.ANY . Seria esse o caminho certo para calcular o IPC?

Muito obrigado por quaisquer respostas e comentários. Espero que minha pergunta ajude muitas outras almas confusas:)

    
por shailenTJ 08.09.2014 / 13:48

1 resposta

1

Now, why is floating-point operations considered for the performance of a computer. What about integer operations?

As operações de ponto flutuante são apenas uma das várias métricas usadas ao longo dos anos para avaliar o desempenho do computador. A medição de operações de FP é considerada mais aplicável a algumas aplicações do mundo real (como simulações de clima) do que operações inteiras. Se você estivesse avaliando computadores para um aplicativo de banco de dados, provavelmente ignoraria as especificações do FLOPS e focalizaria o desempenho IPS (instruções por segundo) e de E / S.

Now, what exactly does operation in FLOP mean? Does that mean a mathematical operation like MUL, ADD, DIV etc?

A "operação" é a execução da "instrução", que é um código de máquina (isto é, um valor binário), ou um cálculo pelo FPU, unidade de ponto flutuante. O FPU (mais antigo) normalmente é executado de forma assíncrona com a CPU e a ALU, para não impedir a execução de programas que não dependam do resultado do FP.

Note que um computador (por volta de 1980) que não tenha FPU pode ser atualizado com um periférico FPU. A biblioteca FP de rotinas de software que implementaram operações FP fundamentais (adicionar, subtrair, multiplicar, dividir, raiz quadrada etc.) seria substituída por uma biblioteca que invocasse instruções de E / S para acessar o periférico da FPU. Uma interrupção da FPU notificaria a CPU que a operação do FP estava completa.

Os primeiros PCs eram de construção similar. O IBM PC original usava o Intel 8088 microprocessador que não possuía capacidade HW FP. Mas um co-processador matemático do 8087 poderia ser instalado, para que as instruções do FP pudessem ser executadas pelo hardware em vez de serem redirecionadas para rotinas de software. Eventualmente a Intel integrou o co-processador matemático no pacote da CPU para o i486

In this case, what would be an instruction?

"Instrução" não deve ser uma entidade ambígua. É um código de máquina ou um mnemônico do processador.

then one instruction can lead to many internal operations. Would that be micro-operations or uops?

Aparentemente, você está se referindo à microprogramação.
(Costumava haver uma empresa de computadores que fazia o micro programar uma iteração mais abaixo: para o nível de programação nano . Os produtos eram para emulação de CPU.) A microprogramação não é realmente relevante para o desempenho do programa aplicativo. Ou seja, você normalmente não pode reescrever / melhorar a microprogramação como faria em um processador de nanoprograma.

Does that mean that the processor can perform, for example an ADDPD and an ADDSD (total=2 Instructions) in one cycle?

Classificar de. Realizar mais de uma instrução por ciclo de clock requer um pipeline de "unidades de execução". Pense em uma linha de montagem de fabricação (veículo). Em cada estação, uma tarefa específica é executada. No final da linha de montagem (pipeline), apenas um veículo (instrução) é concluído de cada vez. A simultaneidade é escalonada, em vez de sincronizada.

What instructions are referred here?

Cada instrução é um código de máquina.

In other words, 1 FMA instruction translates to a couple of operations. Am I right?

Não, uma instrução está correlacionada a uma operação.

    
por 09.09.2014 / 22:51