C에서 선언한 변수들은 스택, 동적으로 할당된것은 heap 에 있게 되고 그것들이 메모리영역에 올라와 있게 되고
만약
int a=3,b=7, c;
c = a + b;
의 연산을 한다고 할 경우
먼저 데이터들 a, b 를 캐쉬 그리고 캐쉬에서 General Register 들로 옮겨야 한데 이때 옮기는 역할을 하는 것이
LSU 가 하게 된다 (올리기도 내리기도 한다)
이때 올라간 데이터가 정수라면 ALU 를 통해서 만약 올라간 데이터가 float 이면 FPU 를 통해서 연산되고
현재는 정수임으로 ALU 에서 연산된다고 할 경우 + 에 해당하는 명령어의 경우는 이러한 연산 명령어들이 모여 있는 곳인
명령어 세트에서 가져와 L1 Instruction cache(L1 명령어 캐쉬) 로 로드 된다음 이 명령어를 ALU 로 이동시킨다음 두 변수와 연산한
결과를 다시 레지스터에 저장한다음 이 값을 다시 LSU 를 통해서 메모리영역 변수 C 에 최정 저장하게 되는 과정을 거친다
반응형
'운영체제 & 병렬처리 > TBB & SIMD' 카테고리의 다른 글
simd 명령어의 의미 (p + operation + type) (0) | 2018.02.13 |
---|---|
CPU 의 이해2 - E(A~D)X,...,XMM0~7,~15 (Register Bank) (0) | 2018.02.09 |
Intel SSE(Streaming SIMD Extensions 기술[SSE,SSE2, SSE3, SSE4] (0) | 2018.02.09 |
SIMD 연산구조와 성능 (0) | 2018.02.09 |
Pack 과 Package (0) | 2018.02.09 |