Cash
용량은 적으나 속도는 빠르다.
for i in range(10):
for j in range(10):
print([[i][j]])
for i in range(10):
for j in range(10):
print([[j][i]])
둘의 속도차이는 분명하다.
[1][][][][]\t[1][][][][]\t[1][][][][]\t[1][][][][]
[1][1][1][1][1]\t[][][][][]\t[][][][][]\t[][][][][]
CPU Pipeline
가시성, 코드 재배치
1) x = 1;
2) y = 4;
**
만약 1), 2)위치의 코드가 서로 연관관계가 없다면 CPU가 Compile간 순서를 마음대로 재배치 할 수 있다.
이는 Single Thread에서는 고려하지 않아도 되는 문제였다.
파이프 라인 == 병렬 처리 방식
stage 1 : Fetch - 메모리에서 instructions(명령)을 가져온다.
stage 2 : Decode - 가져온 명령을 해석한다.
stage 3 : Execute - 해석을 토대로 명령을 실행한다.
stage 4 : Write-back - 실행 결과를 레지스터에 작성한다.