0.8 CPU가 일하는 방법

ARA JO·2022년 6월 24일
0

CPU가 일하는 방법

  1. 프로그램카운터(PC - 시작점!) 에 명령어가 어떤 주소에 담겨있는지 확인
    (CPU가 수행해야할 다음 명령어가 담긴 주소를 가지고 있음)

-> 시작점이 필요하다는 것을 기억해두자!

  1. 메모리 주소 레지스터로 PC의 주소가 들어간다. (ex. 100번지)

  2. 메모리 데이터 레지스터로 데이터 읽어온다.

  • 읽어온 데이터가 LOAD 10이네?
  1. 명령어니까 명령어 레지스터에 올려!

  2. 프로그램 카운터가 올라간다.
    (명령어 주소로 찾아가서 데이터도 가져왔으니까 미리 다음꺼를 준비해두자!)

  3. 명령어 레지스터의 명령어를 제어장치로 올라가서 디코드한다. (해독)

  • LOAD 10: 10번지에 있는 데이터를 로드해라.
  1. 10번지에 있는 데이터를 가져오려면 메모리 주소 레지스터에 10을 넣어주고,

  2. 10번지를 찾아가서 메모리 데이터 레지스터에 데이터를 담아와 from 메모리

  3. 어큐뮬레이터 (<- ALU와 밀접하게 연결) 에 데이터 넣어

---- 100번지의 LOAD 10 끝 ----

다시 프로그램 카운터로 가서 101 번지에 대한 위의 절차 (1~5)

  1. 명령어 레지스터의 명령어를 제어장치로 올려서 디코드한다 -> ADD 명령어네?
  2. ADD니까 어큐뮬레이터의 값(이전)을 ALU로 올리자!
  3. 11번지에 있는 애를 읽어와서 ... 어큐뮬레이터에 저장!
  4. ADD 였으니까 얘(4)도 ALU로 올리자
  5. ALU는 얘를 더해줘
  6. 더한 결과는 어큐뮬레이터로 간다

---- 101번지의 ADD 11 끝 ----

PC로 가서 102번지....(1~5)

  1. 명령어 레지스터의 명령어를 제어장치로 올려서 디코드한다 -> STORE 명령어네?
  2. 메모리 주소 레지스터에 12번지를 올리자!
  3. 어큐뮬레이터의 값메모리 데이터 레지스터로 가져온다.
  4. 메모리 주소 레지스터에 있는 번지(12)에 메모리 데이터 레지스터의 값(7)을 저장한다!

---- 102 번지의 STORE 12 끝 ----

PC로 가서 103번지에 대한 절차
아무것도 없네?

---- 종료


수업 외 내용

자료형 맛보기

  • int : -2147483648 ~ +2147483647

  • unsigned int : 0 ~ 4294967295

  • long long int : -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,80

  • float : +-3.4 x 10^38 ~ +-3.4 x 10^38

  • double (=long float): +- 1.7x10^308 ~ +- 1.7x10^308
    - float보다 두 배의 저장 공간

    • %.11lf 를 사용하면 소수점 이하 11자리까지 출력된다.
  • 16진수 출력시 %x는 소문자로, %X는 대문자로!

profile
Sin prisa pero sin pausa (서두르지 말되, 멈추지도 말라)

0개의 댓글