O software moderno usa diferentes recursos de CPUs seletivamente?

2

Por exemplo, pode-se ter um executável que usa recursos para processadores Core 2 e, em seguida, usar seletivamente outros recursos para um processador mais antigo? Ou é um requisito para compilar um executável diferente? E se não, isso é verdade para todos os casos?

    
por j riv 18.03.2013 / 23:28

3 respostas

4

É totalmente possível, dependendo dos recursos aos quais você está se referindo, a abordagem é um pouco diferente.

Por exemplo, para um aplicativo matemático, você pode detectar o número de processadores e / ou núcleos e fazer com que cada núcleo manipule partes diferentes do cálculo. A parte difícil é garantir que os dados de dados sejam síncronos ou assíncronos, dependendo da tarefa em questão.

E, como dito antes, como MMX, o SSE2 pode ser verificado e, em seguida, executado por caminhos de código diferentes, algo como:

if (CPU.Supports SSE2) {then use SSE2 Libraries}
else if (CPU.Supports SSE) {Then use SSE Libraries}
else {use pre-SSE LIbraries}

Além disso, para coisas como architechture (x86 x x64), existem algumas maneiras que podem ser manipuladas. Se você usa JAVA ou C #, por exemplo, o compilador JIT pode otimizar o código para qualquer arquitetura quando o aplicativo é iniciado, provavelmente não é tão rápido quanto um aplicativo C ++ nativo e bem otimizado, mas a desvantagem é que com C ++ você teria ter uma versão x64 e x86 separada.

    
por 19.03.2013 / 00:31
2

Você pode ter um executável em que o tempo de execução detecta qual CPU é usada e, em seguida, seleciona a melhor maneira de usá-los. Ofc. Cada uma dessas "melhores maneiras" é pré-compilada. Então você está basicamente usando um programa que foi preparado para usar optimamente alguns poucos conjuntos de instruções / processadores seletivos.

Não há muitos programas que parecem fazer isso, ou pelo menos não muitos que informam ao usuário sobre isso. Ainda assim, existem pelo menos alguns deles, por ex. o executável dnetc .

Se você quiser, pode compará-lo a um livro ou folheto, com um índice declarando:
página 10-20: Portuguese
página 21-42: holandeses página 43-54: inglês dos EUA
página 55-70: dinamarquês
...

Você terá que escrever, no idioma apropriado / conjunto de instruções para cada um deles.

    
por 18.03.2013 / 23:37
0

O kernel do Linux usa técnicas assustadoras, como consertar o kernel em execução, para selecionar o melhor algoritmo para algumas funções muito usadas.

    
por 19.03.2013 / 02:51

Tags