기성 애플리케이션이 Intel 및 AMD 프로세서 모두에서 작동하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/832007

  •  06-07-2019
  •  | 
  •  

문제

제가 이해하지 못하는 것 중 하나는 Intel CPU용으로 컴파일된 코드가 AMD CPU에서 어떻게 작동할 수 있는지입니다.

내 기본 이해는 예를 들어 C 코드를 컴파일하면 컴파일러가 소스 코드를 특정 프로세서에 대한 지침이 있는 기계어로 변환한다는 것입니다.따라서 애플리케이션에서 사용하려는 플랫폼에 맞게 컴파일러로 컴파일해야 합니다.AMD와 Intel용 컴파일러가 필요하지 않고 특정 프로세서용 소프트웨어를 구입해야 하는 이유는 무엇입니까?

나는 AMD 프로세서와 Intel 프로세서가 이전 x86 명령어에서 일부 호환성을 공유한다는 것을 알고 있습니다.내가 알고 싶은 것은 그들이 어떻게 그렇게 하는가 입니다.내 말은, AMD나 Intel이 서로 전화를 걸어 영업 비밀을 알려주는 것과 같지 않은데 어떻게 호환되는 명령어 세트를 만들 수 있습니까?

모든 호환성은 여전히 ​​386 명령 세트를 기반으로 하며 "AMD CPU인 경우 ELSE IF INTEL이 해당 작업을 수행합니다"와 같은 명령문이 많이 포함되어 있습니까?

도움이 되었습니까?

해결책

AMD와 Intel x86 및 x86-64 CPU는 거의 완벽하게 호환됩니다.둘 다 x86과 x86-64를 모두 구현합니다.이들은 각각 고유한 확장(예: MMX 및 3DNow)을 가지고 있지만 컴파일러는 일반적으로 사용자가 지시하지 않는 한 이를 사용하지 않습니다.요즘 AMD와 Intel은 서로의 거의 모든 확장 기능을 지원합니다.차이점에 대해 걱정해야 할 유일한 때는 실제로 낮은 수준의 커널 작업을 수행할 때입니다.

그건 그렇고, 교육 세트는 실제로 "무역 비밀"이 아닙니다. 구현은입니다.두 회사 모두 명령어 세트에 대한 문서를 제작하므로 각자 복사할 수 있습니다.그 이유는 아마도 더 많은 회사가 호환 가능한 칩을 생산하면 이 명령어 세트에 대해 더 많은 소프트웨어가 작성되어 더 많은 사람들이 이 칩을 구입할 것이기 때문일 것입니다.x86/x86-64는 기본적으로 데스크탑의 표준 아키텍처로, 사람들이 Intel 및 AMD 칩을 계속 구매할 것임을 보장합니다.Intel과 AMD는 구현이 매우 다르며 동일한 코드를 실행합니다.

다른 팁

실제로 그들은 교차 라이센스 계약을 맺었습니다.정보와 혁신은 AMD가 386 및 486 프로세서의 두 번째 소스였던 90년대에 Intel에서 AMD로 흘러갔고, Intel이 x86-64 확장을 채택했을 때 AMD에서 Intel로 흘러갔습니다.

또한 이러한 프로세서에 대한 명령 세트는 공개적으로 문서화되어 있습니다.일반적으로 한 공급업체가 새로운 지침 세트를 개발하고 한두 세대 후에 다른 공급업체가 호환 가능한 확장을 구현합니다.그래서 IF 386보다는....특정 공급업체에 관계없이 IF SSE4 IS SUPPORTED ... 라인을 따라 더 많은 내용이 있습니다.

두 공급업체 모두 동일한 명령어 세트를 구현하므로 컴파일된 코드가 기계 명령어로 변환되면 두 칩 모두에서 작동합니다.그러나 공급업체별로 특정할 수 있는 SSE와 같은 일부 특수 명령 세트가 있습니다.애플리케이션의 성능을 향상시키려는 경우 런타임 검사를 수행하여 사용 가능한 경우 이러한 기능을 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top