[컴퓨터구조] 중앙처리장치(CPU)의 구조와 작동 원리

kuku·2023년 1월 14일
2

CS 스터디

목록 보기
2/18

📖중앙처리장치(CPU)의 구조

중앙처리장치(CPU)는 인간의 두뇌에 해당하는 부분으로, 주기억장치에서 프로그램 명령어와 데이터를 읽어와 처리하고 명령어의 수행 순서를 제어한다.

  • ALU(Arithmetic and Logic Unit)
    덧셈, 뺄셈 같은 산술연산과 배타적 논리합, 논리곱, 논리합 같은 논리연산을 수행하는 장치이다. 연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 보낸다.

  • CU(Control Unit)
    Instruction register에 저장된 명령어를 해석하고, 컴퓨터를 구성하는 장치들을 제어할 제어신호를 생성하여 동작을 지시하는 장치이다.

  • Register
    CPU 내부에서 처리할 명령어나 연산에 필요한 데이터, 연산 결과 등을 임시로 저장하는 장치이다. CPU의 종류에 따라 사용할 수 있는 레지스터의 개수와 크기가 다르며, 범용 레지스터와 특수목적 레지스터로 구분할 수 있다.

    • 범용 레지스터 : 연산에 필요한 데이터나 연산 결과를 임시로 저장하는 레지스터
    • 특수목적 레지스터 : 특별한 용도로 사용하는 레지스터
      • MAR(Memory Address Register)
        CPU가 데이터를 읽거나 쓰려는 주기억장치 주소를 저장
      • MBR(Memory Buffer Register)
        주기억장치로부터 읽어온 데이터나 주기억장치에 저장할 데이터를 저장
      • PC(Program Counter)
        다음에 인출(fetch)할 명령어 주소를 저장
      • IR(Instruction Register)
        현재 수행 중인 명령어를 저장(가장 최근에 인출된 명령어 저장)
      • AC(Accumulator)
        연산 결과를 자신에게 다시 누적(accumulation) 시키는 레지스터
      • SP(Stack Pointer)
        기억장치의 스택 영역에서 데이터가 채워진 가장 최근 위치를 저장
  • Internal bus
    CPU 내부 구성 요소 간의 데이터 전달과 연결을 위한 경로

개인용 컴퓨터와 같은 소형 컴퓨터에서는 CPU를 마이크로프로세서라고도 부른다.


📖중앙처리장치(CPU)의 작동 원리

📁CPU 동작 과정

  1. 주기억장치가 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다.
  2. CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고, 결과를 다시 주기억장치에 저장한다.
  3. 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보낸다.
  4. 제어장치는 1~3 과정에서 명령어가 순서대로 실행되도록 각 장치에 제어 신호를 보낸다.

📁Instruction Set

Instruction Set은 CPU가 실행할 명령어의 집합으로, CPU 종류에 따라 형식과 종류가 다르다. 명령어는 연산 코드(OP Code)와 피연산자(Operand)로 구성되어있는 것이 기본적인 형식이다.

  • 연산 코드(OP Code)
    연산 코드는 실행할 연산을 나타낸다. 길이가 n bit일 때, 최대 2^n개의 연산을 정의할 수 있으며, 연산의 종류는 크게 4가지로 나누어진다.

    • 연산 기능 : 산술연산과 논리연산을 수행
    • 제어 기능 : 조건 분기, 무조건 분기 등 명령어의 실행 순서를 제어
    • 데이터 전달 기능 : 레지스터와 주기억장치 또는 레지스터 간의 데이터를 전달
    • 입출력 기능 : 프로그램 및 데이터를 주기억장치에 전달하고, 연산 결과는 출력장치로 전달
  • 피연산자(Operand)
    피연산자에는 연산에 필요한 데이터 및 저장 위치에 대한 정보를 나타낸다.

다음은 MIPS CPU의 명령어 형식이다.

📁Instruction Cycle

CPU는 프로그램을 실행하기 위해 주기억장치에서 명령어를 순차적으로 인출(fetch)하여 해석(decode)하고 실행(execute)하는 과정을 반복한다. CPU가 주기억장치에서 하나의 명령어를 인출하여 실행하는 일련의 과정을 Instruction Cycle이라고 한다.

Instruction Cycle은 크게 명령어 인출 사이클과 명령어 실행 사이클로 나눌 수 있는데, 인출 사이클, 실행 사이클, 간접 사이클, 인터럽트 사이클로 세분화하기도 한다.
인출 사이클과 실행 사이클이 항상 수행되는 반면에, 간접 사이클과 인터럽트 사이클은 간접 주소 지정 방식이 필요할 때나 인터럽트 요구가 있을 때만 수행된다.

❓인출 사이클

인출 사이클은 메모리로부터 명령어를 읽어오는 과정으로, 현재 PC에 있는 주소의 내용을 IR에 가져오게 한다. 내부의 구체적인 마이크로 연산 과정은 다음과 같다.

  1. PC(Program Counter)에 저장되어있는 주소를 MAR로 보낸다. MAR은 기억장치에서 PC에서 받은 주소를 참조하여 해당 주소의 내용을 가져온다.
  2. 기억장치로부터 읽어온 내용(명령어)는 MBR를 통해 들어와 IR로 전달한다.
  3. 다음 명령어를 인출하기 위해 PC의 값을 1 증가시킨다.

❓간접 사이클

인출 사이클을 통해 읽어온 명령어가 간접 주소지정방식인 경우, 실행 사이클 이전에 수행되는 사이클이다. 명령어의 피연산자 부분에 있는 주소를 MAR로 가져와 기억장치의 해당 주소의 내용(유효 주소)를 MBR을 거쳐 IR의 피연산자 부분에 넣어준다.

❓실행 사이클

실행 사이클은 명령어를 실행한다. 먼저, 피연산자를 MAR로 보내어 기억장치에서 데이터를 가져온다. 데이터는 MBR에 저장하고, Op Code에 알맞은 연산을 수행한다.

❓인터럽트 사이클

인터럽트 사이클은 실행 사이클이 끝난 후 수행되는 사이클로, 다음 순서로 예정된 명령어가 아닌 다른 명령어를 실행한다.
일반적인 경우, 실행 사이클이 끝났다면 다시 인출 사이클로 돌아가 PC에 저장되어있는 주소의 명령어를 인출한다. 그러나, 인터럽트 신호가 들어온 경우에는 인터럽트 사이클이 수행된다. 구체적인 수행 과정은 다음과 같다.

  1. 현재 PC(Program Counter)에 저장된 주소를 MBR에 저장한다.
  2. MAR에 SP(Stack Pointer) 값을 넣고, PC에 ISR의 시작주소를 넣는다.
    • ISR(Interrupt Service Routine) : 인터럽트를 처리하는 루틴
  3. MAR을 통해 SP의 주소로 MBR에 저장되어있는 주소(PC에 저장되어있던 기존 주소)를 저장한다.
  4. 인터럽트 처리가 종료된 후 스택에 저장되어있는 주소를 다시 PC에 저장한다.
참고 : https://gyoogle.dev/blog/computer-science/computer-architecture/%EC%A4%91%EC%95%99%EC%B2%98%EB%A6%AC%EC%9E%A5%EC%B9%98%20%EC%9E%91%EB%8F%99%20%EC%9B%90%EB%A6%AC.html, https://velog.io/@almondgood/04.-레지스터, https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ndb796&logNo=220687216382, https://velog.io/@onenewarm/%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9D%B4%ED%81%B4

0개의 댓글