2013-12-22 3 views
2

64 비트 x86_64 어셈블리 언어로 코드를 작성하고, 다른 대용량 함수 라이브러리를 시작하여 모든 비트 시프트, 논리, 산술, 산술 연산 연산자를 제공하려고합니다. s0128, s0256, s0512, s1024 부호있는 정수 유형 및 f0128, f0256, f0512, f1024 부동 소수점 유형에 대한 함수입니다.어떤 명령어가 piledriver에서 설정합니까?하지만 불도저가 아닙니다.

내 컴퓨터 (ubuntu64 및 win7-64) 모두에 AMD FX-8150 (불도저) CPU가 있습니다. 코드가 수행해야하는 작업을 검토 한 결과 많은 비트 조작 지침이 매우 유용하다는 것을 알게되었습니다.

그러나 웹 사이트에서 공식 AMD 문서를 비롯한 다양한 문서를 읽으면 특정 지침과 명령어 세트가 불도저 CPU (FX-8150) 및/또는 piledriver (FX-8350)에서 지원되는지 여부에 대한 끝없는 모순을 발견하게됩니다. 혼란은 다양한 최근의 비트 조작 명령 및 명령 세트 및 특히 FMA3FMA4 명령 세트와 관련하여 특히 일반적이다. 내 FX-8150FMA3FMA4 지침을 봤는데 프로그래밍과 AMD의 문서가 불도저와 파일 드라이버 모순이를 비교하면서 그들이 잘 작동하기 때문에

가 나는 AMD 문서의 일부가 잘못 알고있다.

필자가 볼 수있는 모든 문서 소스가이 문제에 대해 어느 정도 잘못된 것처럼 보였으 나 아무도 지침 및/또는 명령어 세트가 piledriver (FX-8350)에서 작동하지만 불도저 (FX-8150)에서 작동하지 않는다는 것을 알고 있습니까?

내 문제는 설명서의 유효 기간이므로을 확실히 알지 못하면 일부 문서 을 가리 키지 마십시오. 가장 좋은 대답은 불도저 및 piledriver CPU에서 이러한 명령어 및 명령어 세트를 테스트 한 프로그래머로부터 온 것입니다.

+3

항상 CPUID를 사용하여 기능이 있는지 확인하십시오. –

+1

"FX-8150에서 FMA3 및 FMA4 명령어로 프로그래밍했기 때문에 제대로 작동합니다"- 의심 스럽습니다. Bulldozer에서 FMA3를 사용하고 있습니까? 불도저에는 FMA3이 없습니다. – Mysticial

+0

FMA3 정보 글쎄, 나는 그들과 프로그래밍을 기억하지만, FMA4가 가능하다는 것을 깨달았을 때, 나는 전환했다. 필자는 피연산자를 쓸 필요가 없기 때문에 FMA4 명령은 내 목적에 훨씬 효율적입니다. 또한 프로그래밍 할 때 약 1000 배 더 쉽게 이해할 수 있습니다. FMA3이 작동해야하는 장소를 찾아서 어떤 일이 일어나는지 살펴볼 것입니다. – honestann

답변

0

이미 발견 했으므로 공식 AMD release document (2 페이지)이 실제로 오해의 소지가 있습니다. supported instructions (wrong)

불도저는 FMA4를 지원하지만 하지 FMA3 : 특히,이 테이블 의 첫 번째 행이 잘못입니다. 완전성

불도저에 존재하지 않는 파일 드라이버 지침 BMI, TBM, F16C (이전라는 CVT16) 및 FMA3 (도 here)이다.

불도저에는 FMA3에 대한 확인을 제공해야합니다. 그러나 또한 the GCC Manual을 신뢰할 수 있습니다. Bulldozer 및 Piledriver의 아키텍처 이름은 각각 bdver1bdver1입니다.

더욱이 cpuid 반환 값을 신뢰할 수 있습니다.편의를 위해 나는 잠 베지와 Vishera (바탕 화면 부품) 여기 스크린 샷을 재현하고 있습니다 :

Zambezi and Vishera cores (screenshots from Aida64) 출처 : 단순히 fma FMA3와 FMA4 지원 모두를 지정하기 위해 사용하는 CPUID Dump List

cpuid있다. GCC는 동일한 의미를 따른다. Wikipedia link에서 FMA4 변종이 실제로 FMA3 (이전에 정의 된 fma4 식별자를 삭제할 수 없거나 기존 응용 프로그램을 손상시킬 수 있음) 전에 구현 되었기 때문일 수 있습니다.