2013-07-30 2 views
0

저는 C 코드가 x86에서 cpuid로 할 수있는 것처럼 PowerPC에서 프로세서 속성을 쿼리 할 수 ​​있도록 작성하고 싶습니다. 나는 브랜드, 모델, 스테핑, SIMD 너비, 사용 가능한 연산과 같은 것들을 다룬다. 그래서 무언가가 터지기 전에 코드가 호환 가능한 플랫폼에서 사용되고 있다는 런타임 확인이있을 수있다.PowerPC에서 x86 cpuid()와 같은 것을 사용할 수 있습니까?

PowerPC에서이 작업을 수행하는 일반적인 메커니즘이 있습니까? 그렇다면 어디에서 읽을 수 있습니까?

+1

정말 없다 정확한 아날로그, 어떤 특성을 얻기를 원합니까? – Dan

+1

PowerPC 설명서에서 찾을 수없는 경우 PowerPC에서 실행할 수있는 모든 오픈 소스 운영 체제에서 소스를 항상 확인할 수 있습니다. –

+0

감사합니다. 관심있는 속성 목록을 추가했습니다. – mabraham

답변

4

PowerPC에는 x86과 같은 수십 개의 확장/기능이 없습니다. 코어에 의존 할 수있는 특정 권한있는 레지스터를 읽어야합니다.

Linux에서 확인한 결과, PVR에 액세스 할 수 있습니다. 커널을 관리하는 트랩이 있습니다.

Altivec가 지원된다면/proc/cpuinfo를 읽으면 메모리와 L2 캐시 크기가 반환 될 수 있지만 그다지 편리하지는 않습니다.

더 나은 솔루션이 여기에 설명되어 있습니다 : "간부 시간에 프로세스에 전달 된 ELF 인터프리터 정보"를 제공/proc 디렉토리/자기/auxv의 콘텐츠를 사용 http://www.freehackers.org/thomas/2011/05/13/how-to-detect-altivec-availability-on-linuxppc-at-runtime/

.

예는 알티 벡에 관한 것입니다하지만 당신은 ("ASM/cputable.h"를 포함에 나와있는) 다른 기능을 얻을 수 있습니다 ... 32 또는 64 비트 CPU, 알티 벡, SPE, FPU, MMU, 4XX MAC을

마지막으로, 당신은 캐시에 대한 정보 (크기, 행 크기, 연관성, ...)에서 파일을 살펴볼 발견 할 것이다 : /SYS/장치/시스템/CPU/CPU0/캐시를

3

PowerPC에는 CPUID 명령과 아날로그가 없습니다. 가장 가까운 것은 PVR (프로세서 버전 레지스터)을 읽는 것입니다. 이것은 감독자 권한이 부여 된 SPR입니다. 그러나 일부 운영 체제 인 FreeBSD는 사용자 공간 프로세스를 위해이를 트랩하고 실행합니다.

PVR은 읽기 전용이며 특정 프로세서 모델 및 개정판에 대해 고유해야합니다. 이 점을 감안할 때 주어진 CPU가 어떤 기능을 제공하는지 확인할 수 있습니다.

관련 문제