2-2.[os] CPU와 메모리

CPU의 기본구성

  • CPU: 요리사
  • 산술논리 연산장치: 요리
  • 작업 지시: 제어장치
  • 레지스터: 재료 임시 보관

산술논리 연산장치

  • CPU에서 데이터를 연산하는 장치
    • 산술연산(+,-,x,&)
    • 논리연산(AND, OR)

제어장치

  • CPU에서 작업을 지시하는 부분

레지스터

  • CPU 내에 데이터임시로 보관하는 곳

변수명: 데이터를 저장할 수 있는 메모리 주소의 다른 이름

  • CPU: 기계어(machine code: 0과 1의 2진수)만 인식함
  • 코드를 실행하려면 컴파일러를 이용하여 기계어로 바꿈
  • 레지스터: CPU가 연산을 하려면 필요한 데이터를 CPU로 가져와 임시로 보관

image.png

흐름

  • 메모리: 메모리에서 레지스터로 데이터를 가져옴
  • 레지스터
  • 산술논리 연산장치: 연산
  • 레지스터: 결과값 레지스터 저장
  • 메모리: 레지스터에 저장된 값을 메모리로 옮김

레지스터

image.png

가시 레지스터(user-visible register)

  • 사용자 프로그램에 의해 변경됨

    • 데이터 레지스터(DR): 메모리에서 가져온 데이터를 임시 보관
    • 주소 레지스터(AR): 데이터 또는 명령어가 저장된 메모리의 주소

특수 레지스터

  • 사용자가 임의로 변경할 수 없음
  • 사용자 불가 레지스터 (user-invisible register)

    • 프로그램 카운터(PC)
    • CPU는 다음에 어떤 명령어를 처리해야 할지 알아야 한다
    • 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에 알려준다
    • = 명령어 포인터 (다음에 실행할 명령어의 주소를 가리키기 때문에)

    • 명령어 레지스터(IR)

    • 현재 실행 중인 명령어를 저장

    • 메모리 주소 레지스터(MAR)

    • 메모리에서 데이터를 가져오거나 보낼 때 주소를 지정하기 위해 사용
    • 명령어를 처리하는 과정에서 필요한 메모리 주소를 여기에 넣으면 메모리 관리자가 이를 인식하여 해당 메모리 위치의 데이터를 가져오거나 해당 메모리 위치에 데이터를 저장

    • 메모리 버퍼 레지스터(MBR)

    • 메모리에서 가져온 데이터나 메모리로 옮겨 갈 데이터를 임시로 저장

image.png

흐름:

  • 프로그램 카운터
  • 명령어 레지스터
  • 메모리 주소 레지스터
  • 메모리 버퍼 레지스터

버스

  • CPU와 메모리, 주변 장치 간에 데이터를 주고받을 때 사용
  • 다음 작업을 지시하는 제어 신호 + 메모리의 위치 정보를 알려주는 주소 + 처리할 데이터

image.png

제어 버스

  • 다음 작업을 지시하는 제어 신호를 보냄
  • 읽기, 쓰기 신호
  • CPU의 제어장치 <-> 제어버스 <-> 메모리

주소 버스

  • 위치 정보 전달
  • 어느 위치에서 작업할 것인지 메모리에게 알려준다
  • CPU의 메모리 주소 레지스터 -> 주소버스 -> 메모리

데이터 버스

  • 데이터가 목적지까지 이동
  • CPU의 메모리 버퍼 레지스터 , 메모리 <-> 데이터버스 <-> 주변장치

image.png

버스의 대역폭

  • 한 번에 전달할 수 있는 데이터의 최대 크기
  • ex) 32bit, 64bit
  • 버스의 대역폭 = 레지스터의 크기 = 메모리에 한 번에 저장할 수 있는 데이터의 크기
  • 워드(word): CPU가 한 번에 처리할 수 있는 데이터의 최대 크기
  • 64bit CPU의 1워드는 64bit

메모리

  • 모든 프로그램은 메모리에 올라와야 실행될 수 있다

bit

  • 메모리를 이루는 소자 하나의 크기
  • 0 또는 1이 저장된다

메모리 = 램 or 롬

(RAM, Random Access Memory)

  • 읽거나 쓸 수 있다
  • 무작위로 데이터를 읽어도 저장된 위치와 상관없이 같은 속도로 데이터를 읽을 수 있다

(ROM, Read Only Memory)

읽기만 가능

image.png

휘발성 메모리(volatility memory):

  • DRAM (Dynamic RAM, 동적 램)
    • 저장된 0과 1의 데이터가 일정 시간이 지나면 사라져 다시 일정 시간마다 재생해야한다
    • ex) 메인메모리
  • SRAM (Static RAM, 정적 램)
    • 전력이 공급되는 동안 남아있다
    • 속도는 빠르지만 가격이 비싸다
    • ex) 캐시
  • SDRAM (Synchronous Dynamic Random Access Memory)
    • DRAM이 발전된 형태

비휘발성 메모리:

  • 램은 전력이 끊겨도 데이터가 안 사라짐

  • 플래시 메모리(flash memory)

    • 전력이 없어도 데이터를 보관하는 저장장치
    • ex) 디지털카메라,MP3 플레이어, USB 드라이버
    • 플래시 메모리의 각 소자는 최대 사용 횟수가 제한되어 보통 소자 하나당 몇 천 번에서 만번 정도 사용하면 제 기능을 잃는다
    • SD 카드나 USB 드라이버를 오래 사용하면 성능이 저하되거나 데이터를 잃어버릴 수 있다
  • FRAM (Ferroelectric RAM)

  • PRAM (Phase change RAM)

    • 전력이 끊겨도 데이터를 보관하는 것이 장점
    • 데이터를 한 번 저장하면 바꿀 수 없다
    • 빈 CD는 CD-ROM이라고함

메모리 보호

  • CPU는 현재 진행 중인 작업의 메모리 시작 주소경계 레지스터 (bound register)에 저장한 후 작업한다.
  • 현재 진행 중인 작업이 차지하고 있는 메모리의 크기 (마지막 주소까지의 차이)를 한계 레지스터(limit register)에 저장
  • 두 레지스터의 주소 범위를 벗어나는지 하드웨어적으로 점검

image.png

  • 작업이 데이터를 읽거나 쓸 때마다 CPU는 해당 작업이 경계 레지스터와 한계 레지스터의 주소값 안에서 이루어지는지 검사
  • 값 벗어남 -> 인터럽트 -> 모든 작업 중단 -> 처리

부팅

  • 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정
  • 운영체제도 CPU에 의해 실행되는 프로그램이기 때문에 당연히 메모리 에 올라와야 한다

image.png

  • 전원을 켬 -> 바이오스 실행 -> (하드디스크 -> 마스터 부트 레코드 -> 부트스트랩 코드) ->

  • 바이오스 - CPU, 메모리, 하드디스크, 키보드, 마우스와 같은 주요 하드웨어가 제대로 작동하는지 확인

  • 마스터 부트 레코드 (Master Boot Record, MBR): 하드디스크의 첫 번째 섹터, 운영체제를 실행하기 위한 코드인 부트스트랩(bootstrap)이 이곳에 저장되어 있다

  • 부트스트랩 코드: 운영체제를 메모리로 가져와 실행하는 역할을 하는 작은 프로그램

  • 하드디스크의 마스터 부트 레코드에 있는 부트스트랩이 메모리에 올라오면 하드디스크에 저장된 운영체제를 메모리로 불러온다

Did you find this article valuable?

Support Software Engineer at Your Service by becoming a sponsor. Any amount is appreciated!