본문 바로가기
CS/컴퓨터 구조

컴퓨터 구조 - (6) 보조 기억 장치와 입출력 장치

by 16비트 2023. 1. 27.

1. 하드디스크와 플래시 메모리

  • 하드디스크(HHD)의 구조 : 자기적인 방식으로 데이터를 저장하는 보조기억장치
용어 설명
플래터 자기적인 방식으로 데이터를 저장하는 원판
스핀들 플래터를 회전시키는 요소. 돌리는 속도는 RPM 단위로 표시
헤드 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소
디스크 암 헤드를 원하는 위치로 이동시키는 요소
트랙 자기 디스크 상에서 데이터의 기록, 판독을 할 수 있는 띠 모양의 영역
섹터 섹터는 자체적으로 주소를 가지고 있는 스토리지의 단위. 하나 이상의 섹터를 묶어 블록이라 표현
실린더 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위. 연속된 정보는 디스크 암을 움직이지 않고 바로 데이터에 접근할 수 있기 때문에 보통 한 실린더에 기록된다.
탐색 시간 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
회전 지연 헤드가 있는 곳으로 플래터를 회전시키는 시간
전송 시간 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간

하드 디스크 구조와 데이터에 접근하는 시간

 

  • 플래시 메모리 : 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 보조저장장치.
    • 읽기와 쓰기는 페이지 단위로 이루어지고 삭제는 블록 단위로 이루어 진다.
    • Free상태 : 데이터를 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태
    • Vaild상태 : 유요한 데이터를 저장하고 있는 상태
    • Invalid상태 : 유효하지 않은 데이터를 저장하고 있는 상태. 하드 디스크와 같이 덮어쓰기가 불가능하여 새 데이터를 저장할 수 없다.
    • 가비지 컬렉션 : 유효한 페이지들만을 새로운 블록으로 복사하고 기존의 블록을 삭제하여 공간을 정리하는 기능.

플래시 메모리

플래시메모리 종류 SLC MLC TLC
셀당 bit 1bit 2bit 3bit
수명 길다 보통 짧다
읽기/쓰기 속도 빠르다 보통 느리다
용량 대비 가격 높다 보통 낮다

 

 

2. RAID 정의와 종류

  • RAID : 주로 하드 디스크와 SSD를 사용하는 기술로, 데이터의 안정성 또는 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술.
종류 설명
Linear
RAID
2개 이상의 디스크를 하나처럼 사용한다.
저장할 때는 첫번째 디스크 먼저 채우고, 첫번째 디스크가 꽉 차면 두번째 디스크를 채운다
Raid 0 2개 이상의 디스크를 하나처럼 사용.
Stripping : 저장할 때 첫번째와 두번째를 번갈아가면서 채운다.
두 디스크가 한 번에 (병렬로) 동시 저장되기 때문에 Linear RAID 보다 훨씬 빠르고 나은 성능을 보인다.
디스크 중 하나만 고장나도 모든 데이터가 깨지기 때문에 신뢰성 떨어진다.
Raid 1 2개 이상의 디스크지만 반개의 디스크처럼 사용(디스크 개수가 2개면 1개처럼, 6개면 3개처럼 사용)
2개 디스크에 동일한 데이터를 저장함. 이것을 Mirroring 이라고 한다.
Raid 0 처럼 동시에 쓰기 때문에 속도는 좋다.
두번째 디스크는 백업용 디스크. 두 디스크 중 하나가 데이터 손실이 나도 나머지로 복구가 가능(결함 허용)
하지만 저장 공간이 반으로 떨어지기 때문에 공간 효율성은 나쁘다.
Raid 5 3개 이상의 디스크지만 1개를 뺀 N-1개 디스크처럼 사용하고 하나는 백업용이다.
Raid 1 의 결함허용성과 Raid 0 의 공간효율성을 같이 가져감.
데이터 자체를 저장하여 백업하지 않고 패리티 정보를 (백업용 1개 디스크에) 저장하여 백업
따라서 공간 효율이 좋음 (왜냐면 N개 중에 N-1개의 디스크를 다 사용할 수 있으니까)
여기서 패리티 정보란 2진수 비트의 총 합을 짝수(혹은 홀수)로 만드는 추가 비트임.
아래 이미지는 4개의 디스크를 사용할 때 3개의 디스크에 데이터를 저장하고
나머지 하나 (백업용 디스크)에 패리티비트를 넣는 것을 보여줌.
Raid 6 4개 이상의 디스크지만 2개를 뺀 N-2 개 디스크처럼 사용하고 하나는 백업용이다.
Raid 5 에서 패리티를 하나 더 추가하여 백업 디스크를 하나에서 둘로 늘린 디스크 구조이다.
데이터 자체를 저장하여 백업하지 않고 패리티 정보를 (백업용 2개 디스크에) 저장하여 백업한다.
N개 중에 2개를 사용할 수 없어서 Raid 5 보다 공간 효율은 좋지 않지만 2개 디스크의 결함까지 허용해서 Raid 5 보다 훨씬 안전하다
성능(속력)은 Raid 5 보다 조금 떨어진다.

 

 

3. 장치 컨트롤러와 장치 드라이버

  • 장치 컨트롤러 : CPU와 입출력장치 간의 통신을 중개하고 오류를 검출한다. 또한 전송률을 비슷하게 맞추는 버퍼링을 수행한다.
    • 사용하는 이유) 입출력장치의 종류가 많아 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기 어렵고 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다. 
    • 데이터 레지스터 : CPU와 입출력 사이에 주고받을 데이터가 담기는 레지스터. 버퍼링을 맞출 때 버퍼 역할.
    • 상태 레지스터 : 입출력장치가 입출력 작업을 할 준비 및 작업 완료 여부, 오류 여부 등의 상태 정보가 저장
    • 제어 레지스터 : 입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장

장치 컨트롤러 구조

 

  • 장치 드라이버 : 장치 컨트롤러의 동작을 감시하고 제어함으로써 장치 컨트롤러가 컨퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램. 장치 컨트롤러가 입출력장치를 연결하기 위한 하드웨어적 통로이고 장치 드라이버는 소프트웨어적인 통로

장치 드라이버는 프로그램으로 메모리에 저장

 

 

4. 다양한 입출력 방법

  • 프로그램 입출력 : 프로그램 입출력 작업은 CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어진다. CPU가 입출력장치들의 주소를 아는 방법은 메모리 맵 입출력과 고립형 입출력으로 2가지 방식이 있다. 
    • 메모리 맵 입출력 : 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 입출력 방식.  
    • 고립형 입출력 : 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 곤간을 분리하는 입출력 방식.

메모리 맵 입출력 방식, 고립형 입출력 방식

 

  • 인터럽트 기반 입출력 : CPU가 입출력장치에 처리할 내용을 명령하면 입출력장치가 명령어를 수행하는 동안  CPU는 다른일을 한다. 입출력장치가 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던 일을 멈추고 인터럽트 서비스 루틴을 실행한 뒤 다시 하던 일로 되돌아 온다.
    • PIC : 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 지금 처리해야할 하드웨어 인터럽트는 무엇인지 알려주는 장치. 
    • NMI : 무시할 수 없는 인트럽트로써 우선 순위가 가장 높아 PIC의 우선순위 판별이 불필요하고 바로 처리 시작.

다양한 입출력 장치를 관리하는 PIC

 

  • DMA 입출력 : 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식. 프로그램 기반 입출력과 인터럽트 기반 입출력은 데이터가 반드시 CPU를 거치고 데이터 이동을 CPU가 주도하는데 이러한 CPU 부담을 덜기 위한 방식.
    • 과정) CPU가 DMA 컨트롤러에게 입출력 작업을 명령하면 DMA 컨트롤러가 장치 컨트롤러와 상호작용하며 입출력 작업을 수행한다. 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 쓴다. 입출력 작업이 끝나면 CPU에 인터럽트를 걸어 작업이 끝났음을 알린다.
    • 시스템 버스는 공용 자원이기 때문에 DMA 컨트롤러는 CPU가 시스템 버스를 이용하지 않을 때마다 조금씩 이용하거나, CPU 허락을 받고 집중적으로 사용해야 한다. 
      • 입출력 버스 : 장치 컨트롤러들이 시스템 버스가 아닌 입출력 버스로 DMA 컨트롤러에 연결된다면 시스템 버스의 사용 빈도를 줄일 수 있다.

 

시스템 버스와 입출력 버스

 

댓글