책- 정리/프로그래머가 몰랐던 멀티코어 CPU이야기

6장. 프로세스 기본 동

jinkwon.kim 2018. 5. 22. 01:39
728x90
반응형

프로세스 기본 동작


1. 프로세의 동작 이란? 

  - 명령어를 처리하여 해당 명령어 맞게 레지스터 및 메모리의 상태릐 변화 시키는 것이라고 볼수 있다. 


2. 프로세스의 명령어 처리 과정(5단계)

  1) 명령어 인출 (Instruction Fetch, IF)

  2) 명령어 해독 (Instruction Decoding, ID)

  3) 피연산잘 인출 (Operands Fetch, OF)

  4) 명령어 실행 ( instruction Execution, EX)

  5) 결과 저장 ( Operand Store, OS 또는 write back,WB)


3. 각 명령어 처리 과정 상세 설명

  1) 명령어 인출 (Instruction Fetch, IF)

- PC(Program counter) 또는 IP(Instruction Pointer Register)가 가리키는 곳의 명령어를 가져와 byte 큐에 넣고,
  다음 명령어를 가져오기 위한 다음 멸령어의 위치를 계산한다. 

- 이때 PC에 또는 IP에 들어있는 주소는 프로세스 상에서 사용하는 가상 메모리의 주소를 가지고있다. 이를 무리
  메모리로 변환해주는 작업이 필요한데, 이를 빠르게 해주는 녀석이(Memory Management Unit, MMU)라 한다.

  또한 MMU를 보조하는 녀석이 TLB(Translation lookaside buffer)라는 것이 있다, TLB는 MMU에서 반복되는 

  주소를 cache화 해놓은 buffer라고 보면된다. 


- 그리고 다음 명령어를 알아내는것은 결코 쉽지 않다. 왜냐하면, 현재 명령어에 따라서 다음 변령어 위치가 변경
  될수 있기 때문이다. 예를 들면 현재 명령어가 분기 문이면, 다음 명령어를 현재 명령어 결과를 봐야 알수 있기 

  때문이다. 


  2) 명령어 해독 (Instruction Decoding, ID)

- 단순히 가져온 명령어를 해독하는 것이다. 

- 구체적으로 해야 하일은 가져온 명령어에서, Opcode, Operand, 계산 결과가 저장될 목적지 주소, 주소 모드, 
  분기 문이라면 분기 목적지를 알아낸다. 


  3) 피연산잘 인출 (Operands Fetch, OF)

    - 명령어에서 사용되는 피연산자를 읽은다. 

    - 피연산자는 주소 모드에 따라 (1) 레지스터 몯, (2) 상수 , (3)메모리 주소로 번연이 된다. 

    ex) ld     r0, [ sp + 8 ]  ;; 메모리 메모리 주소 계산과 메모리 내용읽기

        add   r1, r0, 10      ;; 레지스터와 상수 읽기 

        st     [ sp + 4], r1   ;; 메모리 주소 계산과 레지스터 읽기

        jz     r1, 100         ;; (jump if zero) 레지스터 및 상수 읽기 


  4) 명령어 실행 ( instruction Execution, EX)

- 명령어 실행 

- 명령어 실행시에는 한정된 자원을 사용해야 되므로 리소스 할당 문제를 고려해야한다.(이미 고려되서 돌아감)


  5) 결과 저장 ( Operand Store, OS 또는 write back,WB)

- 지금 까지 구한 레지 스터 정보를 레지스터에 저장한다. 


4. 명령어 처리시 발생 할수 있는 예외 상황

  1) segmentation fault  또는 Access violation

    - 읽을 권한이 없는 메모리 영역에 읽기시를 시도하면 발생한다. 

  2) 프로세서는 보통 예외(Exception)과 인터럽트(Interrupt)로 구분해서 예외적인 상황을 외부로 알린다

    (1) 예외(Exception)

      - 동기적으로 발생되며, 페이지 폴트 등을 예로 들수 있다. 

    (2) interrupt

 - Hard ware interrupt(비동기적)를 예를 들면, 키보드 입력을 예를 들수있다. 

 - Soft ware interrupt는 사용자가 명령어 발생시키는 것이다. 

      - 멀티 태스킹 또한 타이머가 발생시키는 interrupt로 구현된다.



 




728x90
반응형