저장소 조건부 명령을 발견했을 때 x86 프로세서가 수행하는 작업을 찾으려고합니다. 예를 들어 파이프 라인의 프론트 엔드가 실속하고 프론트 엔드가 멈추고 SC를 실행하기 전에 ROB 버퍼가 비워 질 때까지 대기합니까? 기본적으로는 ... 비 투기가 될x86은 어떻게 조건부 명령어를 저장합니까?
감사
저장소 조건부 명령을 발견했을 때 x86 프로세서가 수행하는 작업을 찾으려고합니다. 예를 들어 파이프 라인의 프론트 엔드가 실속하고 프론트 엔드가 멈추고 SC를 실행하기 전에 ROB 버퍼가 비워 질 때까지 대기합니까? 기본적으로는 ... 비 투기가 될x86은 어떻게 조건부 명령어를 저장합니까?
감사
A (일반) x86 프로세서는 당신이 언급 한 것들 중 어느 것도하지 않습니다를 프로세서를 강제 않습니다. 그것은 하나의 명령어를 다른 명령어보다 먼저 가져오고 실행합니다.
다른 모든 것은 투명하게 처리되며 사용자가보고있는 프로세서에 따라 크게 달라 지므로 질문에 일반적인 대답이 없습니다.
실속 문제와 관련된 방법에 관심이 있으시면 위키 피 디아 페이지 x86에서 시작해야합니다 (언급 한대로 이름을 바꾸려면 등록하십시오. 해당되지 않은 분기에서 결과를 버리십시오).
나는 CMOVcc
지침을 언급하고 있다고 생각합니다.
old value = mem[dest address]
if (condition)
mem[dest address] = new value
else
mem[dest address] = old value
조건 부분은 다음과 같은 하드웨어로 구현 될 수있다
조건부 저장을 구현 나는 이전의 x86 프로세서에 대해 잘 모르지만, 현대 사람들은 (그들과 순서가 투기 된 이래) :
cond
|\ |
----| \|
new | \
| | dest
| |---------
| | |
__|/ |
| |/ |
| |/ |
|____________|
그래서 추측을 깨뜨릴 필요가 없습니다. 가게 은 실제로이됩니다. 조건은 기록 할 데이터가 이전 값인지 또는 새 값인지 결정합니다.