CPU의 비순차적 명령어 처리(Out Of Order Execution)
CPU의 비순차적 명령어 처리(Out Of Order Execution)
2022.03.07결론부터 말하자면, CPU는 코드 즉, 기계어로 번역된 명령어를 처리할때에 순차적으로 처리하지 않을 수 있다는 것이다. 다음의 아주 간단한 코드를 보자. int A = 0; int B = 0; int WatchingA[100000000] = { 0 ,}; int WatchingB[100000000] = { 0 ,}; int main() { A = 4; for (int i = 0; i < 100000000; ++i) { //A의 카운터가 증가하며 값을 기록하기로 한다. A = i; WatchingB[A] = B; } } 실행결과는? 당연히 모든 B의 값을 기록한 WatchingB에 0이 가득 차있다. 원하는 결과가 맞다. 그럼 별 문제가 아직 없다. 무엇이 비순차적이라는 말인가? 그래 그럼 이제 멀티스레드..