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 에 최정 저장하게 되는 과정을 거친다










반응형

+ Recent posts