CPU와 메모리

꿀떡냠·2024년 5월 6일

CPU의 구성과 동작

CPU의 기본구성

  • CPU는 산술논리 연산장치, 제어장치, 레지스터로 구성된다.

  • 산술논리 연산장치

    • 데이터를 연산하는 장치(ALU Arithmetic and Logic Unit)
    • 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산과 AND, OR같은 논리 연산을 수행한다.
  • 제어장치
    - CPU에서 작업을 지시하는 부분

  • 레지스터

    • 작업에 필요한 데이터를 CPU 내부에 보관하는 곳
    • 계산을 하기 위해 가져온 데이터를 저장하거나, 계산의 중간값을 임시로 보관하거나 작업을 진행하기 위해 필요한 정보를 보관한다.

CPU의 명령어 처리 과정

1 LOAD mem(100), register 2 // 메모리 100번지 내용을 R2로 이동
2 LOAD mem(120), register 3 // 메모리 200번지 내용을 R3로 이동
3 ADD register 5, register 2, register 3 // R2와 R3를 더한 후 R5에 임시저장
4 MOVE register 5 mem(160) // R5 결과를 메모리 160번지에 저장
  1. 제어장치는 메모리 100번지의 있는 값(2)를 레지스터 2으로 옮기라는 명령을 내린다.
  2. 제어장치는 메모리 120번지에 있는 값(3)을 레지스터 3으로 옮기라는 명령을 내린다.
  3. 레지스터 2와 3의 값을 산술논리 연산장치(ALU)로 보내서 더하라는 명령을 내린다. 결과 값 5는 레지스터 5에 임시 보관된다.
  4. 레지스터 5의 값을 메모리 160번지로 옮기라는 명령을 내린다.

레지스터의 종류

  • 데이터 레지스터(DR:Data Register) : 데이터를 임시 보관할 때 사용한다. 범용 레지스터 또는 일반 레지스터라고 부른다.
  • 주소 레지스터(AR:Adress Register) : 데이터 또는 명령어가 저장된 메모리의 주소는 주소 레지스터에 저장된다.
  • 특수 레지스터 : 사용자가 임의로 변경할 수 없는 불가시 레지스터
    • 프로그램 카운터(PC) : 프로그램 카운터는 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에 알려준다. 다음에 실행할 명렁어 주소를 가리키기 때문에 명령어 포인터라고도 한다.
    • 명령어 레지스터(IR) : 현재 실행중인 명령어를 저장한다. 제어 장치는 명령어 레지스터에 있는 명령을 해석한 후 외부 장치에 적절한 제어 신호를 보낸다.
    • 메모리 주소 레지스터(MAR) : 메모리에서 데이터를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정할 때 사용된다. 명령어를 처리하는 과정에서 필요한 메모리 주소를 이 레지스터에 넣으면 메모리 관리자가 인식하여 해당 메모리 위치의 데이터를 가져오거나 해당 메모리 위치에 데이터를 저장한다.
    • 메모리 버퍼 레지스터(MAR) : 메모리에서 가져온 데이터나 메모리로 옮겨갈 데이터를 임시로 저장한다. 메모리 버퍼 레지스터는 항상 메모리 주소 레지스터와 함께 동작한다.
    • 상태 레지스터(PSR : Program Status Register)
      - 조건에 따라 다른 코드가 실행되는 if와 같은 분기문장에 사용된다.
      - 프로그램 상태 레지스터는 산술논리 연산장치(ALU)와 연결되며, 연산결과를 임시로 저장한다.
      - 플래그 레지스터, 상태 레지스터, 컨디션 레지스터라고도 부른다.

동작원리 :'LOAD mem(100), register 2'

① 프로그램 카운터(PC)에는 실행해야하는 코드 행 번호 1이 저장되어 있다. 1이 제어장치로 전송되면 1행이 실행된다. 1행은 LOAD mem(100), register 2라고 가정하면, 명령어 레지스터(IR)에는 ROAD가 탑재된다.
② 제어장치가 명령어 레지스터(IR)에 있는 명령 LOAD를 해석하여 메모리 100번지에 있는 데이터를 가져오라는 제어신호를 보낸다.
③ 메모리 주소 레지스터는 100이 저장된다. 메모리에 있는 데이터를 CPU로 옮기는 일은 메모리 관리자가 담당한다. 메모리 관리자는 메모리 주소 레지스터에 있는 100을 읽은 후 메모리 주소 100번지에 저장된 값 2를 메로리 버퍼 레지스터로(MBR)로 보낸다. 레지스터는 CPU가 관리하는 영역이기 때문에 메모리 관리자가 숫자 2를 레지스터로 직접 옮길 수 없다.
④ 제어장치는 메모리 버퍼 레지스터에 저장된 값2를 레지스터로 2로 옮긴다.

버스의 종류

  • CPU와 메모리, 주변장치는 시스템 버스를 사용하여 데이터를 주고받는다. 시스템 버스안 데이터에는 작업을 지시하는 제어신호, 메모리의 위치 정보를 알려주는 주소를 포함한다.
  • 시스템 버스의 종류 : 제어 버스, 주소 버스, 데이터 버스
버스의 종류와 구조

  • 제어 버스
    • 제어장치와 연결된 버스이다.
    • CPU가 메모리와 주변장치에 제어 신호(읽기신호, 쓰기신호 등)을 보내기 위해 사용힌다.
    • 메모리와 주변장치에서도 작업이 완료되거나 오류가 발생하면 제어신호를 보내기 때문에 양방향 통신한다.
  • 주소 버스
    • 메모리 주소 레지스터와 연결된 버스이다.
    • 데이터를 읽거나 쓸때 메모리나 주변장치에 위치 정보(주소)를 보내기 위해 사용한다.
    • 단방향 : CPU에서 주변 장치로 나가는 주소 정보만 있다.
  • 데이터 버스
    • 메모리 버퍼 레지스터와 연결 버스이다.
    • 데이터의 이동이 양방향으로 이뤄진다.

CPU 비트의 의미

  • 버스의 대역폭한 번에 전달 할 수 있는 데이터의 최대크기 이다.
  • 흔히 34bit, 64bit CPU라고 하는데, 34bit와 64bit가 한 번에 처리할 수 있는 데이터 크기를 나타내는 것이다.
  • 레지스터 크기와 버스의 대역폭, 레지스터의 크기, 메모리에 한 번에 저장할 수 있는 크기가 동일하다.
  • CPU가 한번에 처리할 수 있는 데이터의 크기를 워드(word) 라고 한다.
  • 34bit CPU에서 1워드는 34bit를 의미한다.

메모리의 종류와 부팅

  • 폰노이만 구조의 컴퓨터에서 모든 프로그램은 메모리에 올라와야 실행될 수 있다.

메모리의 종류

  • 읽거나 쓸수 있는 램(RAM Random Access Memory)
    • 휘발성 메모리
      1. 동적램 DRAM(Dynamic RAM) : 일정 시간이 지나면 사라진다. 일정시간마다 다시 재생해야한다.
      2. 정적램 SRAM(Static RAM): 전력이 공급되는 동안에 데이터는 보관된다. 속도는 빠르지만 가격이 비싸다.
      3. 메인메모리는 DRAM, 캐시같은 고속 메모리는 SRAM을 사용한다.
      4. SDRAM(Synchronous Dynamic RAM) : DRAM이 발전된 형태로 클록 틱(펄스)이 발생할 때마다 데이터를 저장하는 동기 DRAM이다.
    • 비휘발성 메모리 : FRAM(Ferroelectric RAM), PARM(Phase change RAM)
      1. 플래시 메모리
        • 전력이 없어도 데이터를 보관하는 저장장치로 사용된다.
        • 디지털카메라, MP3 플레이어, USB 드라이버에서 사용된다.
        • 플래시 메모리는 각 소자마다 최대사용횟수가 정해져있어 SD카드나 USB 드라이버를 오래 사용하면 성능이 저하되거나 데이터를 유실 할 수 있다.
      2. SSD
        • 가격이 비싸지만 빠른 데이터 접근 속도, 저전력, 높은 내구성이라는 장점을 가지고 있다.
        • 노트북, 스마트폰에서 많이 사용된다.

메인 메모리를 휘발성 메모리를 사용하는 이유?

  • 메인 메모리를 비활성 메모리를 사용하는 경우 데이터 보관을 위해 메모리 내부가 복잡해지고 속도가 느려진다. 그리고 가격이 비싸지기 때문에 메인 메모리는 휘발성 메모리를 사용한다.
  • 읽기만 가능한 롬(ROM Read Only Memory)
    • 전력이 끊겨도 데이터 보관이 가능하다.
    • 데이터를 한 번 저장하면 바꿀 수 없다.
    • 일반적으로 바이오스(BIOS : Basic Input/Output System)를 롬에 저장한다.
    1. 마스크 롬(mask ROM) : 데이터를 지우거나 쓸 수 없다.
    2. PROM(Progrmmable ROM) : 전용 기계를 사용하여 데이터를 한 번만 저장할 수 있다.
    3. EPROM(Erasable Programmable ROM) : 데이터를 여러번 쓰고 지울 수 있지만 가격이 비싸다.

메모리 보호

  • 일괄 작업 시스템에서는 메모리가 운영체제 영역과 사용자 영역으로 명확하게 구분되어있다.

  • 하지만 현재 시분할 기법을 사용하는 대부분의 운영체제에서는 사용자 영역이 여러개의 작업 공간으로 나뉘어 있다.

  • 어떤 작업이 다른 작업의 영역을 침범하지 않도록 메모리 보호는 중요한 문제이다.

  • 메모리를 보호하기 위해서 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터에 저장한다.

  • 현재 진행 중인 작업의 시작 메모리 주소부터 마무리 주소까지의 차이를 한계 레지스터에 저장한다.

  • B 작업이 데이터를 읽거나 쓸 때마다 CPU는 해당 작업이 경계 레지스터와 한계 레지스터의 주소 값 안에서 이루어지는지 검사한다.

  • 만약 두 레지스터 주소의 영역을 벗어난다면 메모리 오류와 관련된 신호가 발생한다.(인터럽트)

  • 인터럽트란 프로세스 실행 도중 예기치 않은 상황이 발생할 때 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것을 말한다.

  • 메모리 영역을 벗어나 인터럽트가 발생하는 경우 운영체제는 해당 프로그램을 강제 종료 시킨다.

부팅

  • 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정을 부팅이라고 한다.
  • 컴퓨터 전원을 키면 롬에 저장된 바이오스가 실행된다.
  • 바이오스는 CPU, 메모리, 하드디스크, 키보드, 마우스와 같은 주요 하드웨어가 제대로 작동하는 확인한다. 이상이 있으면 삐 소리와 함께 오류 메시지를 출력한다.
  • 바이오스는 하드웨어를 점검한 후 하드디스크의 마스터 부트 레코드에 저장된 작은 프로그램을 메모리로 가져와 실행한다.
  • 마스터 부트 레코드는 하드디스크의 첫 번째 섹터를 가리키며 운영체제를 실행하기 위한 코드인 부트스트랩이 저장되어있다.
  • 부트스트랩 코드는 하드디스크에 저장된 운영체제를 메모리로 가져와 실행하는 역할을 하는 프로그램이다.
profile
백엔드 개발자로 살아남기

0개의 댓글