[혼공컴운] 3주

SSSOLLL·2025년 7월 18일
0

혼공컴운 14기

목록 보기
4/7

💡 3주차 (Chapter 06~08) 정리

Chapter 6. 메모리와 캐시 메모리

  • 06-1) RAM의 특징과 종류

    • 특징 : 전원을 끄면 저장된 내용이 모두 날아가는 휘발성 저장장치로 주로 실행할 대상이 저장됨.
      용량이 클수록 많은 프로그램을 동시에 빠르게 실행하는데 유리함 그러나 한계는 존재함

    • 종류 :

      • DRAM: 저장된 데이터가 동적으로 변하는 RAM. 데이터 소멸 방지를 위해 일정 주기로 데이터 재활성화가 요구됨. 저렴하고 집적도가 높아 대용량 설계가 용이해서 일반적으로 사용됨
      • SRAM: 시간이 지나도 저장된 데이터가 사라지지 않는 RAM(그렇다고 비휘발성 메모리는 아님). ERAM보다 일반적으로 속도도 빠름. 집적도가 낮고 소비 전력도 크고 가격도 비쌈
      • SDRAM : 클럭 신호와 동기화된 DRAM. 클럭마다 CPU와 정보를 주고받을 수 있음.
      • DDR SDRAM: 대역폭을 넓혀 속도를 빠르게 만든 SDRAM으로 최근 가장 흔히 사용됨. SDR SDRAM, DDR SDRAM, DDR2 SDRAM... 순으로 대역폭이 두 배 씩 넓어짐. 대역폭은 데이터를 주고받는 길의 너비로 대역폭이 넓을수록 전송속도가 빨라진다.
  • 06-2) 메모리의 주소 공간

    • 물리 주소 : 정보가 실제로 저장된 하드웨어상의 주소. 메모리가 사용함.

    • 논리 주소 : 실행중인 프로그램 각각에 부여된 0번지부터 시작되는 주소. CPU와 실행중인 프로그램이 사용함

    • 논리 주소와 물리 주소 간의 변환: CPU와 주소 버스 사이에 위치함 메모리관리장치(MMU)라는 하드웨어에 의해 수행됨. MMU는 CPU가 발생시킨 논리주소에 베이스 레지스터 값을 더해 물리 주소로 변환시킨다. 베이스 레지스터는 프로그램의 첫 물리주소를 저장하며, 논리주소는 프로그램의 시작점으로부터 떨어진 거리라고 볼 수 있다.

    • 메모리 보호 기법: 한계 레지스터를 통해 메모리를 보호한다. 한계 레지스터는 논리 주소의 최대 크기를 저장하므로 프로그램의 물리 주소 범위는 베이스 레지스터 값 이상, 베이스 레지스터 값 + 한계 레지스터 값 미만의 범위를 갖게 된다. CPU는 메모리 접근 전 접근하고자하는 논리 주소가 한계 레지스터보다 작은지를 검사하여 더 클 경우 인터럽트를 발생시켜 실행을 중단함. 이러한 방식을 통해 메모리를 보호할 수 있음.

  • 06-3) 캐시 메모리

    • 저장 장치 계층 구조 : 컴퓨터가 사용하는 저장 장치들을 CPU에 얼마나 가까운가를 기준으로 계층적으로 나타낸 구조. 위 계층으로 올라갈수록 CPU와 가깝고 빠르나 용량이 작고 비싼 저장장치이며, 아래 계층으로 내려갈수록 CPU와 멀고 용량이 크고 저렴하지만 느린 저장장치이다.

    • 캐시 메모리 : CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치. 메모리의 일부 데이터를 미리 캐시 메모리에 저장하여 CPU가 매번 메모리에 접근할 필요 없이 캐시 메모리를 이용하여 정보를 가져올 수 있도록 함. 이를 통해 캐시 메모리는 CPU의 연산 속도와 메모리 접근 속도의 차이를 줄일 수 있다. 캐시 메모리도 CPU와 가까운 순서대로 계층을 구성함. 코어와 가까운 순서대로 L1, L2, L3 캐시로 나눌 수 있음.

    • 참조 지역성 원리 : CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리. 최근 접근했던 메모리 공간에 다시 접근하려는 경향인 시간 지역성과 접근한 메모리 공간 근처를 접근하려는 경향인 공간 지역성이 있다. 캐시 메모리는 이러한 참조 지역성의 원리에 따라 데이터를 예측하여 캐시 적중률을 높인다.

    • 저장 장치 계층 구조 도식도 및 표

      계층예시속도용량가격 (GB당)
      레지스터CPU 내부 레지스터수 ns 이하수 byte매우 비쌈
      캐시 메모리L1, L2, L3 캐시ns 단위KB~MB매우 비쌈
      메인 메모리DRAM (RAM)수십~수백 nsGB비쌈
      보조 기억 장치SSD, HDD수 msGB~TB저렴
      3차 저장 장치테이프, 광디스크 등수 초 이상수 TB~PB가장 저렴

Chapter 7. 보조기억장치

  • 07-1) 다양한 보조기억장치
    • 하드 디스크 : 자기적인 방식으로 데이터를 저장하는 보조 기억장치

      • 플래터 : 실질적으로 데이터가 저장되는 곳, 하드디스크는 일반적으로 여러겹의 플래터로 이루어짐

      • 스핀들 : 플래터를 회전시키는 구성요소들
        - 헤드 : 플래터를 대상으로 데이터를 읽고 쓰는 부품
        - 디스크암 : 원하는 위치로 헤드를 이동시키는 부품

      • 트랙 : 플래터를 여러 동심원으로 나누었을 때 그 중 하나의 원

      • 섹터 : 트랙의 한 조각으로 하드 디스크의 가장 작은 전송 단위

      • 실린더 : 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위

      • 하드 디스크가 저장된 데이터에 접근하는 시간

        • 탐색 시간: 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
        • 회전 지연: 헤드가 있는 곳으로 플래터를 회전시키는 시간
        • 전송 시간: 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간
    • 플래시 메모리: 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치. 보통 대용량 저장장치로 많이 사용되는 보조기억장치로서의 플래시 메모리는 NAND 플래시 메모리.

    • 플래시 메모리의 타입: 같은 용량의 메모리여도 셀 타입에 따라 차이는 천차만별이다!

      구분SLC (Single-Level Cell)MLC (Multi-Level Cell)TLC (Triple-Level Cell)
      셀당 비트1비트2비트3비트
      수명
      (쓰기 사이클)
      약 100,000회약 3,000~10,000회약 500~3,000회
      속도가장 빠름중간가장 느림
      신뢰성매우 높음보통낮음
      용량낮음중간높음
      단가 (GB당)가장 비쌈중간가장 저렴함
      주요 사용처산업용, 서버용 SSD일반 소비자용 SSD대용량 저장용 USB, SSD
    • 플래시 메모리의 단위: 셀 < 페이지 < 블록 < 플레인 < 다이, 셀이 모여서 페이지, 페이지가 모여서 블록..... 순으로 단위가 커진다.
      읽기/쓰기는 페이지 단위, 삭제는 블록 단위로 이루어짐.

    • 플래시 메모리의 상태:

      • Free : 어떠한 데이터도 저장하지 않는 상태. 새로운 데이터를 저장할 수 있음

      • Valid : 이미 유효한 데이터를 저장하고 있는 상태. 덮어쓰기는 불가능

      • Invalid : 쓰레기값이라 부르는 유효하지 않은 데이터를 저장하고 있는 상태

        *가비지 컬렉션 : 특정 블록 내의 한 페이지만 Invalid 상태인 경우, 해당 페이지만 삭제할 수 없음! 이 경우 플래시 메모리는 유효한 페이지들만을 새로운 블록으로 복사 후, 기존의 블록을 삭제하는 방식으로 쓰레기값을 정리한다. 이러한 기능을 가비지 컬렉션이라고 함.

  • 07-2) RAID의 정의와 종류

    • RAID의 정의 : 데이터의 안전성 혹은 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술. 주로 하드디스크와 SSD를 사용함

    • RAID의 종류 : RAID의 구성방법을 RAID 레벨이라고 표현함. 0,1,4,5,6이 가장 대중적임. 여러 RAID레벨을 혼합한 Nested RAID도 존재함. 각 레벨마다 장단점이 있어 상황에 따라 최적의 RAID 레벨은 달라질 수 있음.

      • RAID 0 : 여러개의 보조기억장치에 데이터를 단순히 나누어 저장하는 방법. 데이터를 읽고 쓰는 속도는 향상되나 그러나 하나의 디스크에만 문제가 생겨도 다른 모든 디스크의 정보를 읽는 데 문제가 생겨 안전성은 낮다.
      • RAID 1 : 복사본을 만드는 방식으로 미러링이라고도 함. 원본, 복사본 두 곳에 쓰기 때문에 속도는 RAID 0보다 느리나 복구가 간단하다. 복사본을 저장하기에 사용 가능 용량이 적어진다.
      • RAID 4 : 오류를 검출하고 복구하기 위한 정보인 패리티 비트를 두는 구성 방식. RAID에서의 패리티 비트는 오류 검출 및 복구가 가능해 RAID보다 적은 하드디스크로도 안전성을 확보한다. 새로운 데이터 저장시 패리티를 저장하는 디스크에도 데이터를 써야해 패리티 저장 장치에 병목 현상이 발생하는 문제가 있음
      • RAID 5 : 패리티 정보를 분산 저장하여 병목 현상을 해소함
      • RAID 6 : 기본적으로는 RAID 5와 같으나 서로 다른 두개의 패리티를 두어 보다 안전한 구성을 가짐. 패리티가 두개라 쓰기 속도는 RAID보다는 느림.

Chapter 8. 입출력장치

  • 08-1) 장치 컨트롤러와 장치 드라이버
    • 장치 컨트롤러 : 입출력장치의 다양성, CPU와 메모리에 비해 낮은 데이터 전송률 때문에 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러라는 하드웨어를 통해 연결됨. 컴퓨터 내부와 정보를 주고받는 하드웨어적 통로. 장치 컨트롤러는 CPU와 입출력 장치의 통신 중개, 오류 검출, 데이터 버퍼링의 역할을 함. 단순하게 정리하면 데이터 레지스터, 상태 레지스터, 제어 레지스터로 구성됨.

      • 데이터 레지스터 : CPU와 입출력장치 사이에 주고받을 데이터를 저장. 버퍼의 역할
      • 상태 레지스터 : 입출력 장치가 작업이 가능한지, 오류는 없는지 등의 상태 정보를 저장.
      • 제어 레지스터 : 입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장
    • 장치 드라이버 : 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램. 소프트웨어적 통로. 컴퓨터가 장치 드라이버를 인식하고 실행할 수 없으면 해당 장치는 컴퓨터 내부와 정보를 주고받을 수 없음. 운영체제에 의해 인식, 실행됨

  • 08-2) 다양한 입출력 방법
    • 프로그램 입출력 : 프로그램 속 명령어로 입출력장치를 제어하는 방법. CPU가 입출력 명령어를 만다면 입출력장치에 연결된 장치 컨트롤러와 상호작용하며 입출력 작업을 수행함. 이 과정은 CPU는 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어지는데 여기에 두가지 방식이 존재함.

      • 메모리 맵 입출력 : 메모리에 접근하기 위한 주소 공간 / 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법.
      • 고립형 입출력 : 메모리를 위한 주소 공간 / 입출력장치를 위한 주소 공간을 분리하는 방법
    • 메모리맵 입출력과 고립형 입출력의 차이

항목메모리맵 I/O고립형 I/O (Isolated)
주소 공간메모리와 I/O 공유 (같은 주소 공간 사용)메모리와 I/O 분리 (분리된 주소 공간 사용)
접근 방식메모리 명령어로 접근I/O 전용 명령어 사용 (in, out)
명령어메모리와 입출력장치에 같은 명령어 사용 가능입출력 전용 명령어 사용
장점구현 단순, 코드 재사용 쉬움메모리 주소 공간이 축소되지 않음
단점메모리 주소 공간이 축소됨명령어가 추가되어 복잡해짐
주로 사용되는 곳RISC 시스템(ARM 등)x86 아키텍처 등

-- 🤔 의문 : 고립형 입출력에서 컴퓨터의 주소 공간이 1024개일 때, 어떻게 메모리도 1024개의 주소공간을 활용하고, 입출력장치도 1024개의 주소 공간을 활용할 수 있다는거지? 공간을 분리한거라면 각각의 메모리가 필요한거아닌가?

-- 💡 NO!: 공간 분리에 대해 잘못 이해하고 있었다. 나는 어쨌든 컴퓨터가 가진 주소 공간 안에서 메모리와 입출력 장치가 그걸 반으로 공유해서 쓰면 메모리맵, 컴퓨터의 주소 공간을 아예 분리해서 사용하면(사실 어떻게 분리하는지도 모르겠지만...) 고립형이라고 생각했다. 근데 이러면 두 방식 다 사실상 컴퓨터의 주소공간을 공유하는 것에 불과한 것... 이미 존재하는 컴퓨터의 주소 공간을 분리한다기보다는, 고립형 입출력은 입출력 장치를 위한 분리된 주소 공간이 따로 있는 것이라고 이해해야함!!!

  • 인터럽트 기반 입출력 : 여러 입출력 장치에서 인터럽트가 동시 발생시 CPU는 인터럽트 간의 우선순위를 고려하여 인터럽트를 처리함. 이렇게 우선순위를 반영하여 다중 인터럽트를 처리하는 방식은 여러가지 있음. 그 예로 PIC(프록그래머블 인터럽트 컨트롤러)가 있음.

  • DMA 입출력 : 위의 두 방식과 달리 입출력장치와 메모리가 CPU를 거치지 않고 직접 상호작용하는 입출력방식. 이를 위해 시스템버스에 연결된 DMA 컨트롤러가 필요함

  • 입출력버스 : 입출력장치와 컴퓨터 내부를 연결 짓는 통로로, 입출력작업 과정에서 시스템버스 사용 횟수를 줄일 수 있음

✅ 기본 숙제

185p 확인문제 3번

205p 확인문제 1번

✅ 추가 숙제

Ch.07(07-2) RAID의 정의와 종류를 간단히 정리해 보기
- 위에 이미 정리해놓음!

0개의 댓글