Como determinar se a placa Linux está usando FPU de hardware ou não?

6

Estou usando uma placa Linux embarcada baseada em um antigo chip Freescale ARM. Como posso determinar se o interpretador Python está usando o FPU do hardware no chip ou não?

Meu / proc / cpuinfo é:

Processor       : ARM926EJ-S rev 5 (v5l)
BogoMIPS        : 179.81
Features        : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 5
    
por SeanLabs 14.02.2015 / 19:47

2 respostas

6

No mundo do ARM, do ARMv4 ao ARMv7, o suporte a ponto flutuante é chamado de VFP e o suporte de hardware para ele aparece na linha Features de /proc/cpuinfo ou na mensagem VFP support de log impressa pelo kernel durante a inicialização. (No ARMv8 é apenas "FP").

Em /proc/cpuinfo em um Allwinner A20 isso dá:

Features    : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm 

(veja os vários recursos vfp ) e no log de inicialização:

VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 4

Se o VFP não for totalmente suportado, o kernel fará o login

VFP support v0.3: not present

ou

VFP support v0.3: no double precision support

Quanto a saber se o seu interpretador Python é capaz de usar isso, parece depender principalmente da arquitetura da sua distribuição ARM Linux. Se eu entendi as coisas corretamente, o Debian básico armel não usará o FPU, Debian armhf (e Raspbian armhf ) irá; o antigo Debian arm variant usava instruções de FPU, mas estas eram emuladas se o hardware não as suportasse. Em armel você pode instalar kernels ou bibliotecas C com suporte a FPU (embora nenhuma biblioteca C pareça estar disponível nos repositórios Debian).

    
por 16.02.2015 / 07:21
1

Tente

awk '$1 == "fpu" { print $3 ; }' /proc/cpuinfo

que dão

yes
yes

você não pode refinar com

 awk '$1 == "fpu" { print $3 ; exit ;}' /proc/cpuinfo

para ter apenas um sim.

Um mero grep renderia (flags line abbledged)

fpu         : yes
fpu_exception       : yes
flags               : fpu vme de pse tsc msr pae mce cx8 apic sep mtr ...
fpu         : yes
fpu_exception       : yes
flags               : fpu vme de pse tsc msr pae mce cx8 apic sep mtr ...

infelizmente eu não tenho um FPU menos Linux para fazer o teste, talvez um dono do rapsberry?

    
por 15.02.2015 / 10:47