ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컴퓨터 구조 (2)
    프로그래밍/CS 2024. 8. 5. 01:06

    RAM(Random Axxess Memory) - 휘발성 저장장치 : 전원 꺼지면 저장된 내용 지워짐

    램 크기 클수록 많은 프로그램을 동시에 빠르게 실행하는데 유리함 = 성능에 영향 끼침

    • DRAM(Dynamic RAM) : 시간 지나면 점차 저장된 데이터가 사라짐 = 주로 메인 메모리로 사용
    • SRAM(Static RAM) : 시간 지나도 저장된 데이터 사라지지 않음 (단, 전원 꺼지면 지워짐) = 주로 캐시 메모리로 사용
    • SDRAM(Synchromous Dynamic RAM) : 클럭과 동기화된 DRAM = 클럭 타이밍에 맞춰 CPU와 정보 교환 가능  =SDRSDRAM(Single Data Rate SDRAM)이라고도 함
    • DDR SDRAM(Double Data Rate SDRAM) : 대역폭을 넓혀 속도를 높인 SDRAM
      • DDR2 SDRAM : DDR SDRAM 대역폭 2배
      • DDR3 SDRAM : DDR2 SDRAM 대역폭 2배 = DDR SDRAM 대역폭 4배

    ROM(Read Only Memory) - 비휘발성 저장장치 : 전원 꺼져도 저장된 내용 유지됨

    • Mask ROM : 가장 기본적인 형태의 ROM, 제조 광정에서 저장할 내용을 미리 기록
    • PROM(Programmable ROM) : 데이터를 한 번 새길 수 있는 ROM = 한 번에 한해 사용자가 직접 원하는 데이터를 써넣을 수 있음
    • EPROM(Erasable PROM) : 자외선 혹은 전기를 이용해 지우고 다시 저장 가능한 PROM
    • UVEPROM(Ultra-Violet Erasable PROM) : 자외선 이용해 데이터 지울 수 있는 PROM
    • EEPROM(Electrically Erasable PROM) : 전기 신호를 이용해 데이터를 지울 수 있는 PROM
    • 플래시 메모리 : EEPROM의 발전된 저렴한 반도체 기반의 저장장치 = 범용성 넓은 저장장치

     

     

    엔디안 : 연속해서 저장해야 하는 바이트를 저장하는 순서

     

    빅 엔디안 : 낮은 번지 주소부터 시작해 상위 바이트부터 저장하는 방식

    1A2B 3C4D를 빅 엔디안 방식으로 저장하면 1A, 2B, 3C, 4D 순으로 저장

    일상적으로 읽고 쓰는 숫자 체계와 동일하기 때문에 메모리 값을 직접 읽기 편리함 = 디버깅이 편리함

     

    리틀 엔디안 : 낮은 번지 주소부터 시작해 하위 바이트부터 저장하는 방식

    1A2B 3C4D를 리틀 엔디안 방식으로 저장하면 4D, 3C, 2B, 1A 순으로 저장

    수치 계산(자리 올림 등)이 편리함

     

    서로 다른 시스템 간에 데이터 전송 시 엔디안 고려해야 함

    NUXI Problem : 엔디안을 고려하지 않아 UNIX가 NUXI로 보인 문제

    < 오늘날 데이터를 네트워크 전송 시 빅 엔디안으로 통일시킴>

     

     

    물리 주소 : 실제 메모리의 하드웨어 상의 주소

    논리 주소 : CPU와 실행 중인 프로그램이 사용하는 주소 (0번지부터 시작)

    <모든 프로그램은 0번지부터 시작하는 각자의 논리 주소 사용>

     

    주소 변환 : MMU(Memory Management Unit) 사용해서 논리 주소와 물리 주소 변환함

    <MMU 기본 동작(베이스 레지스터 활용한 주소 변환)>

    베이스 레지스터 - 기준 주소 저장

    논리 주소 = 기준 주소로부터 떨어진 거리

    => 기준 주소 + 논리 주소 = 물리 주소

    + 한계 레지스터 : 프로그램 크기 저장 - 기준 주소 + 논리 주소 결괏값이 한계 레지스터에 저장된 값보다 크면 접근 차단함

     

     

    CPU와 가까운 저장 장치는 빠르고 먼 저장 장치는 느림

    속도가 빠른 저장 장치는 용량이 작고, 비쌈

    => 빠른 접근 속도와 큰 용량은 양립하기 어려움

     

    캐시 메모리 : CPU와 메모리 간의 속도 차를 극복하기 위해 개발됨 = CPU와 메모리 사이에 위치함

    레지스터보다 용량 크고 메모리보다 빠른 SRAM 기반, CPU에서 사용할 법한 정보 예측해서 미리 가져와 저장함

    • L1(Level 1) 캐시 메모리 : CPU와 가깝고 용량 작음
    • L2(Level 2) 캐시 메모리
    • L3(Level 3) 캐시 메모리 : CPU와 멀고 용량 큼

    분리형 캐시 : L1D(데이터 저장) + L1I(명령어 저장)

    캐시 히트율 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

     

    참조 지역성의 원리(locality of reference)

    1. 시간 지역성 : CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있음
    2. 공간 지역성 : CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있음

    캐시 친화적 코드 = 캐시 미스가 최소화되는 코드 = 시간 지역성/공간 지역성을 준수하는 코드

     

     

    보조기억장치

     

    하드 디스크 드라이브(하드디스크, HDD)

    • 플래터 : 실질적으로 데이터가 저장되는 부분
    • 스핀들 : 플래터를 회전시키는 부분
    • 헤드 : 플래터의 데이터를 읽고 쓰는 부분
    • 디스크 암 : 헤드를 옮기는 부분

    <복수의 헤드와 플래터가 있는 경우도 많고, 플래터의 양면을 쓰는 경우도 많음>

     

    • 트랙 : 플래터 상의 동심원
    • 섹터 : 트랙을 나눈 단위 (가장 작은 단위)
    • 실린더 : 여러 개의 트랙을 모은 단위
    • 블록 : 실제 입출력이 수행되는 단위

    하드디스크 지연시간

    • 탐색 시간 : 헤드를 원하는 트랙까지 이동시키는 시간
    • 회전 지연 : 원하는 섹터를 헤드까지 회전시키는 시간
    • 전송 시간 : 데이터를 송수신하는 시간

     

    플래시 메모리 : 반도체 기반의 저장장치 - 범용성 매우 넓음

    NAND 플래시 메모리, NOR 플래시 메모리 중 NAND 플래시 메모리가 일반적으로 사용됨

    • 솔리드 스테이트 드라이브(Solid-State Drive, SSD)
    • USB 메모리
    • SD 카드

    플래시 메모리 저장단위

    • 셀(cell) : 플래시 메모리의 가장 작은 저장 단위, 한 셀에 몇 비트까지 저장 가능한지에 따라 플래시 메모리 종류 나뉨
    • SLC : 한 셀에 한 비트 저장 가능
    • MLC : 한 셀에 두 비트 저장 가능
    • TLC : 한 셀에 세 비트 저장 가능
    • QLC : 한 셀에 네 비트 저장 가능

    <한 셀에 저장 가능한 비트 수 늘어날수록 수명 짧아지고, 속도 느려지고, 안정성 낮아지고, 가격 싸짐>

    셀 모이면 페이지 - 페이지 모이면 블록

    + 읽기/쓰기는 페이지 단위로 작업, 삭제는 블록 단위로 작업

     

    보조기억장치는 수명이 정해져 있음 = 중요한 데이터들을 좀 더 안전하게 저장할 방법 필요함

    RAID : 데이터의 안전성, 높은 성능을 위해 여러 보조기억장치를 하나처럼 사용 가능한 기술

     

    RAID 레벨 : RAID를 구성하는 방법

    RAID 0 : 데이터를 단순히 보조기억장치에 나누어 저장하는 구성 방식 => 성능은 개선, 신뢰성은 감소

    = 하드디스크 하나가 고장 나게 되면 온전한 데이터를 유지할 수 없게 되기 때문에 신뢰성 감소함

    + 데이터가 줄무늬처럼 저장된다는 의미에서 스트라이핑이라고도 함

     

    RAID 1 : 복사본을 만드는 방식 = 미러링

    복사본 생성 = 쓰기 성능 감소, 저장 공간 감소

    복사본으로 복구가 용이함 = 신뢰성 증가

     

    RAID 4 : 오류 검출용 비트인 패리티 비트(parity bit)를 저장하는 장치를 따로 두는 방식

    아예 똑같이 복사하는 게 아니기 때문에 RAID 1에 비해 적은 하드 디스크로도 신뢰성 증가 가능

    => 단, 패리티 비트를 저장한 디스크 병목 현상 증가

    패리티 비트 : 오류 검출용 비트로 데이터 복구는 불가능함
    홀수 패리티 : 전체 1의 개수가 홀수가 되도록 패리티 비트를 정하는 방식
    짝수 패리티 : 전체 1의 개수가 짝수가 되도록 패리티 비트를 정하는 방식
    <<단점 : 2개 이상의 비트에 문제 발생 시 오류 검출 어려워짐>>

     

    RAID 5 : 패리티 비트를 분산하여 저장하는 방식 = RAID 4의 병목 현상을 해소하는 방식

     

    RAID 6 : 패리티 비트를 두 개 두는 방식 = RAID 4, 5보다 신뢰성 증가 => 쓰기 성능 감소

     

    nested RAID : 여러 RAID 구성 방식을 합친 방식

    ex. RAID 10 (RAID 1 + RAID 0), RAID 50 (RAID 5 + RAID 0)

     

     

    장치 컨트롤러 : CPU와 입출력 장치 간의 통신 중개, 오류 검출, 데이터 버퍼링을 통한 전송률 자치 완화

    장치 드라이버 : 장치 컨트롤러를 동작시키기 위한 특별한 프로그램 = 운영체제의 일부로 포함되어 있는 경우 많음

    <<입출력이란 CPU가 장치 컨트롤러와 정보를 주고받는 것>>

     

    CPU와 장치 컨트롤러가 정보를 주고받는 방법

    1. 프로그램 입출력 : 입출력 명령어를 기반으로 입출력을 수행하는 방법
    2. 인터럽트 기반 입출력 : 인터럽트를 기반으로 입출력을 수행하는 방법
    3. DMA 기반 입출력 : DMA(Direct Memory Access)를 기반으로 입출력을 수행하는 방법
    DMA (직접 메모리 접근) : 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식
    - 직접 메모리에 접근 가능 => CPU 사이클 절약으로 성능 향상

    단, CPU 입장에서는 시스템 버스를 사용할 사이클을 도둑맞은 것과 같은 효과 발생 = 사이클 스틸링
    => 입출력 전용 버스인 입출력 버스 생김 = 장치 컨트롤러에 접근할 때 시스템 버스 사용하지 않아도 됨
    ex. PCI Express

    입출력 채널 : 입출력 전용 프로세서로 입출력 명령어 해석부터 실행까지 전담 => CPU 부담 감소

    '프로그래밍 > CS' 카테고리의 다른 글

    운영체제 (2)  (0) 2024.08.31
    운영체제 (1)  (0) 2024.08.06
    컴퓨터 구조 (1)  (0) 2024.07.25
Designed by Tistory.