[CS 스터디-OS] 프로세서/메모리/시스템 버스

똘맹·2023년 3월 13일

CS 스터디

목록 보기
1/20
post-thumbnail

이 글은 반효경 교수님의 운영체제 강의 및 교재를 참고합니다.

📢 들어가며

개발자는 컴퓨터를 잘 알아야 하기에.. 매주 CS 스터디를 진행하고 내용을 기록한다. 1~4주차에는 OS, 5~7주차에는 자료구조, 8주차에는 보안에 대해 공부한다. 이번 주에는 프로세서와 메모리, 시스템 버스에 대해 자세히 알아보도록 하자.




1. 프로세서란?

  • 프로세서: 컴퓨터 하드웨어 구성 요소 중 하나로, 컴퓨터 각 부분의 동작을 제어하고 연산을 수행하는 기능을 함. 기본적인 명령어들을 처리하는 논리회로

(1) 프로세서 구성 요소

source: https://kblab.tistory.com/315

사진은 대표적 프로세서인 중앙처리장치(CPU)의 간략한 구조도

  • 제어장치(Control Unit): 소프트웨어를 읽고 하드웨어의 다른 부분으로 신호 전송
  • 연산장치(ALU, Arithmetic Logic Unit): 사칙연산 및 논리연산 처리
  • 레지스터: 프로세서가 바로 사용할 수 있는 데이터를 담고 있는 영역
  • 버스: 신호 전달

폰노이만 아키텍쳐에 의해 만들어진 프로세서라면, 적어도 하나 이상의 ALU와 처리 레지스터를 내장하고 있어야 한다.

프로세서는 코어, 캐시, JTAG 등으로 구성되어 있고, 코어는 각종 연산을 처리하는 프로세서의 핵심 연산 장치이다. 제어장치, 연산장치, 레지스터를 포함한다.

(2) 프로세서 종류

  • CPU(Central Processing Unit)
    중앙처리장치. 핵심적인 컴퓨터의 역할을 전담하는 프로세서

  • MPU(Micro Processor Unit)
    초소형 연산 처리 장치. 주어진 기계어를 해석하고, 연산을 수행하는 기능만 가지고 있는 프로세서. RAM, ROM, I/O 장치 등을 추가하지 않으면 작동이 불가함.

  • MCU(Micro Controller Unit)
    임베디드 애플리케이션을 위해 디자인 된 프로세서. 일반적으로 PC에 비해 성능이 낮고 형상도 다르며, 한 번 프로그래밍하면 코드를 바꿀 일이 거의 없기 때문에 냉장고, 전자레인지 등의 기기에 사용됨.



2. 메모리란?

컴퓨터 내부에는 다양한 기억 장치가 있다. 어차피 다 저장소인데 왜 종류가 다양할까? 이는 각 기억 장치의 저장 단위 당 가격, 성능, 용량이 다양하기 때문이다. 각 요소 간의 trade off를 잘 조절하여 적은 비용으로도 좋은 성능을 얻을 수도 있다.

메모리 계층 구조

source: https://velog.io/@yu-jin-song/CS-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0

(1) 레지스터

CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억 장치. 레지스터는 CPU와 직접 연결되어 있어 연산 속도가 여타의 기억 장치보다 수십 배에서 수백 배까지 빠르다.

CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에, 메모리로 직접 데이터를 전송할 수는 없다. 그래서 연산을 위해서는 반드시 레지스터를 거쳐야 하고, 이를 처리하기 위해 레지스터는 특정 주소를 가리키거나 값을 읽어올 수 있다.

(2) 캐시

캐시는 자주 사용하는 데이터나 값을 미리 복사해 놓을 수 있는 임시 장소로, 시스템 효율성을 위해 사용된다. 비교적 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다. 캐시는 속도가 빠른 장치와 느린 장치 사이에서 속도 차이에 따른 병목 현상을 완화하기 위해서도 사용된다.

다음과 같은 상황에서 캐시가 자주 됨.

  • 원래 데이터를 접근하는 시간이 오래 걸리는 경우
    ex) 서버의 균일한 API 데이터 등
  • 반복적으로 동일한 결과를 돌려주는 경우
    ex) 이미지나 썸네일 등

(3) 메인메모리

메인메모리, 주기억장치, RAM(Random Access Memory)를 혼용하여 사용하나, SRAM은 캐시로 사용되기 때문에 DRAM이라고 표기하는 것이 더욱 정확합니다. CPU가 현재 처리 중인 데이터나 명령만을 일시적으로 저장하는 휘발성 메모리로, 전원이 꺼지면 메인메모리에 저장된 내용들은 모두 사라진다. 따라서 컴퓨터가 꺼진 후에도 데이터를 유지하고 싶다면 데이터를 하드디스크에 저장해야 한다.

게임 등을 처음 실행할 때 "로딩 중..."이라는 메시지를 자주 볼 수 있는데, 이 때 로딩이 뜻하는 것이 바로 하드디스크에서 데이터를 읽어 램으로 전송하는 행위임.

(4) 보조기억장치

보조기억장치는 물리적인 디스크로 연결된 비휘발성 메모리이다. HDD(Hard Disk Drive), SSD(Solid State Drive), USB, CD, DVD 등이 여기에 속한다. 메인메모리와 비교하여 접근에 걸리는 속도가 느리지만, 컴퓨터의 전원을 껐을 때도 저장된 데이터가 영구적으로 유지된다.

HDD는 물리적인 디스크를 고속으로 회전시켜 데이터를 저장하는 장치이다. 디스크에 물리적으로 저장하기 때문에 충격에 약하고, 소음이 발생한다. 크리가 작고 처리 속도가 향상된 SSD의 등장으로 사용이 줄고 있다.

SSD는 반도체 기반의 정보를 저장하는 장치이다. 물리적으로 데이터를 저장하지 않고 전기적으로 데이터를 저장하기 때문에 HDD에 비해 속도가 빠르고 소음도 발생하지 않는다. 전력 소모가 적고 경량화, 소형화 할 수 있다.

(5) MMU

  • MMU(Memory Management Unit): CPU 코어 안에 탑재되어 logical address를 physical address로 매핑해주는 HW device
  • MMU scheme: 사용자 프로세스가 CPU에서 수행되며 생성해내는 모든 주소값에 대해 base register(=relocation register)의 값을 더함
  • user program: logical address만을 다루며 실제 physical address를 볼 수 없고 알 필요도 없음

🔻 동작 예시(Dynamic Relocation)
source: 반효경 교수님 운영체제 강의 교재..

++
Logical vs. Physical Address

  • Logical address(=virtual address)
    • 프로세스마다 독립적으로 가지는 주소 공간
    • 각 프로세스마다 0번지부터 시작
    • CPU가 보는 주소는 logical address

  • Physical address
    • 메모리에 실제 올라가는 위치
    • HW DRAM의 주소

  • 주소 바인딩: 주소를 결정하는 것
    • Symbolic Address -> Logical Address -> Physical address
    • Compile time binding
      • 물리적 메모리 주소(physical address)가 컴파일 시 알려짐
      • 시작 위치 변경 시 재컴파일
      • 컴파일러는 절대코드(absolute code) 생성
    • Load time binding
      • Loader의 책임 하에 물리적 메모리 주소 부여(한 번 올라가면 안바뀜)
      • 컴파일러가 재배치가능코드(relocatable code)를 생성한 경우 가능
    • Run time binding
      • 수행이 시작된 이후에도 프로세스의 메모리 상 위치를 옮길 수 있음
      • CPU가 주소를 참조할 때마다 binding을 점검(address mapping table)
      • 하드웨어적인 지원이 필요(base and limit registers, MMU)

3. 시스템 버스란?

source: https://dheldh77.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%B2%84%EC%8A%A4System-bus

컴퓨터 구성 요소들 간의 데이터 전달을 위한 장치를 뜻한다.

  • Address Bus
    • 메모리 주소나 I/O Unit의 포트 번호를 전달
    • CPU와 Memory는 단방향으로 데이터 전달이 가능한 버스를 이용함으로써 주소 전달은 CPU에서 메모리로만 가능
    • CPU-I/O Unit, Memory-I/O Unit은 양방향으로 데이터 전달이 가능한 버스를 사용
  • Data Bus
    • 데이터 전달
    • 각 구성요소(CPU, Memory, I/O Unit)는 양방향으로 데이터 전달이 가능한 버스를 사용
  • Control Bus
    • 제어 신호 전달
    • Read와 Write신호가 전달
    • 각 구성요소(CPU, Memory, I/O Unit)는 양방향으로 데이터 전달이 가능한 버스를 사용

참고
http://itnovice1.blogspot.com/2019/08/blog-post_99.html
https://velog.io/@yu-jin-song/CS-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0
https://mangkyu.tistory.com/69
https://dheldh77.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%B2%84%EC%8A%A4System-bus

profile
척척학사가 되고 싶은 똘맹

0개의 댓글