프로세서 보조 기능
Processor supplementary capability![]() | 이 글은 관련된 주제에 대해 고도로 전문화된 한 가지 측면만을 설명한다.. (2009년 10월) 에는 될 수 |
![]() | 이 글은 특정 청중에게만 관심을 가질 수 있는 과도한 양의 복잡한 세부사항을 포함할 수 있다..(2018년 2월) (이 메시지를 하는 하고 의 포함 에 될 수 정보를 하십시오 |
프로세서 보조 기능은 설계가 시장에 처음 도입된 후 기존 중앙처리장치(CPU) 설계에 추가된 기능이다.
보조 기능은 프로세서 설계의 유용성을 증가시켜 경쟁사와 보다 유리하게 경쟁할 수 있고 소비자에게 업그레이드의 이유를 제공하는 동시에 원래 설계와 역호환성을 유지한다.
CPU 보조 명령 기능은 대개 8비트 또는 16비트 CPU에 적용되지 않는데, 이러한 CPU 중 많은 CPU가 마이크로컨트롤러로 사용되기 때문이다.최신 32비트 및 64비트 CPU에서 프로세서 보조 기능은 기본적인 핵심 기능으로 간주되므로 FPU(Floating Point Unit) 또는 MMU(Memory Management Unit)로 확장되지 않는다.그러나 MMU와 FPU의 핵심 기능에 대한 확장은 CPU 확장으로 간주될 수 있다.
역사적 추리
보충 지침 기능은 항상 CPU 제품군의 모든 CPU에 걸쳐 의무적이지 않은 고정된 명령 집합을 의미하는 것으로 가정되어 왔다.추가 지침은 해당 제품군 내의 모든 프로세서에서 찾을 수 없다.[1]CPU의 보조 기능을 사용하고자 하는 프로그래머는 몇 가지 선택사항에 직면하게 된다.
보조 명령 프로그래밍 옵션
- 운영 체제(커널)와 시스템 프로그래머(프로그램)는 시스템 소프트웨어가 해당 기능을 의무적으로 사용하도록 설계할 수 있으며, 따라서 해당 기능이 있는 최신 프로세서에서만 실행될 수 있다.
- 반면에 시스템 프로그래머는 기존 소프트웨어 라이브러리를 작성하거나 사용하여 실행 중인 프로세서에 특정 기능(또는 명령어 집합)이 있는지 여부를 결정할 수 있다.
필요한 지침이 없을 경우(대개 느리거나 덜 바람직하지 않은) 대체 기법으로 후퇴할 수 있고 그렇지 않으면 프로그램이 기능성을 감소시키도록 설정할 수 있다.
- 다른 경우에, 운영 체제는 종종 성능이 저하되지만 구형 프로세서에 대한 새로운 기능을 모방할 수 있다.
최저 공통분모 전략을 사용함으로써(프로세서 보조 기능의 사용을 피함) 프로그램은 동일한 아키텍처의 모든 기계에 걸쳐 휴대할 수 있다.[2]
영향을 받는 CPU 제품군
x86, 68000 및 MIPS와 같은 일부 인기 프로세서 아키텍처는 수 세대에 걸친 설계에 걸쳐 많은 새로운 기능이 도입되었다.
이러한 기능 중 일부는 프로그래머에 의해 광범위하게 채택되어 소비자 업그레이드에 박차를 가하고 이전 세대의 프로세서를 쓸모없게 만들었다.
x86 기능 플래그
VME | 가상 8086 모드 향상 |
DE | 확장 디버깅 |
PSE | 페이지 크기 확장 |
TSC | 타임스탬프 카운터 |
MSR | RDMSR 및 WRMSR 지원 |
PAE | 물리적 주소 확장 |
MCE | 컴퓨터 검사 예외 |
CXS | CMPXCHG8B 지침(Double Compare-and-swap 및 Transactional Syncryption Extensions 참조) |
에이픽 | APIC on Chip(APIC 참조) |
MTRR | 메모리 유형 범위 레지스터 |
PGE | PTE 전역 비트(페이지 표 참조) |
MCA | 머신 체크 아키텍처 |
CMOV | 조건부 이동 및 비교 지침(FCMOV 참조) |
플래그에 표시되지 않는 보조 기능
포함(전체 목록이 아님):
프로세서 보조 지침
프로세서 보조 지침은 제품군 내의 특정 프로세서에 구현되었지만 특정 제품군 내의 모든 프로세서에는 존재하지 않는 지시사항이다.
IA-32
다음 지침은 IA-32 아키텍처에 대한 프로세서 보조 지침으로 간주된다.이러한 지침은 이후 생산 프로세서에 추가되었으며 원래의 IA-32 명령 집합에 포함되지 않는다.이러한 지침을 포함하는 프로그램은 IA-32 제품군의 모든 기계에서 올바르게 작동하지 않을 수 있다.
bswap | 바이트 스왑 |
cmov | 조건부 이동 |
cmova | |
cmovae | |
cmovb | |
cmovbe. | |
cmovc | |
cmove | |
cmovg | |
cmovge | |
cmovl | |
cmovle | |
cmovna | |
cmovnae | |
cmovnb. | |
cmovnbe. | |
cmovnc | |
cmovng | |
cmovnge | |
cmovnl | |
cmovnle | |
cmovno. | |
cmovnp | |
cmovns | |
cmovnz | |
cmovo | |
cmovp | |
cmovpe | |
cmovpo | |
cmovs | |
cmovz | |
물렁물렁한 | |
fcmov | 부동 소수 조건부 이동 |
에코미 | |
노플의 | |
rdpmc | 읽기 성능 모니터 수 |
rdtsc. | 타임스탬프 카운터를 읽다 |
syscall | |
sysenter | |
sysecxit | |
sysret | |
ud2 | 소프트웨어 테스트만을 위한 정의되지 않은 지침 |
엑스세이브 | 프로세서 확장 상태 저장 |
xrstor | 프로세서 확장 상태 복원 |
FPU 및 MMU 기능
FPU(Floating Point Unit) 연산 공동 처리 기능은 80486DX 시리즈 이후 모든 x86 프로세서에서 사용할 수 있다.FPU 및 MMU 명령 집합(x86 제품군)은 핵심 CPU 기능에 중요하기 때문에 도입 이후 보충 지침으로 간주되지 않았다.