06-1. RAM의 특징과 종류
주기억장치 구성
RAM의 특징
- 실행할 프로그램의 명령어와 데이터가 저장되는 곳
- 휘발성 저장 장치(volatile memory)
- 전원을 끄면 저장된 명령어와 데이터가 모두 날아감
- RAM
- 참고) 비휘발성 저장 장치(non-volatile memory)
- 전원이 꺼져도 저장된 내요잉 유지됨
- CPU는 보조기억장치에 직접 접근할 수 없다.
- 하드디스크, SSD, CD-ROM, USB와 같은 보조 기억 장치
- 비휘발성 저장장치에는 CPU가 접근할 수 없기 떄문에 비휘발성 저장 장치에는 ‘보관할 대상’을 저장하고, 휘발성 저장 장치인 RAM에는 ‘실행할 대상’을 저장함
RAM의 용량과 성능
- RAM의 용량이 작으면
- 보조기억장치에서 ‘보관할 대상’을 가지고 오는 일이 잦아진다.
- RAM의 용량이 충분히 크다면
- 보조기억장치에서 많은 데이터를 가져와 미리 RAM에 저장해 놓을 수 있어, 여러번 가져오지 않아도 된다.
- 그렇다고 실행속도가 용량에 비례하진 않는다.
RAM의 종류
- DRAM
- 저장된 데이터가 동적으로 사라지는 RAM
- 시간이 지나면 저장된 데이터가 점차 사라진다.
- 데이터의 소멸을 막기위해 일정 주기로 데이터를 다시 저장해야한다.
- 일반적인 RAM이 DRAM으로 구성되어 있다.(소비전력 낮고, 비용도 저렴하고, 집적도가 높기 때문)
- SRAM
- 저장된 데이터가 변하지 않는 RAm
- 시간이 지나도 저장된 데이터가 사라지지 않는다.
- DRAM보다 속도도 빠르다.
- 물론, 전원이 공급되지 않으면 저장된 내용이 날아간다(RAM의 특징)
- SDRAM
- 클럭 신호와 동기화된, 발전된 형태의 DRAM
- 클럭 타이밍에 맞춰 CPU와 정보를 주고받을 수 있다.
- DDR SDRAM
- 최근 가장 흔히 사용되는 RAM
- 대역 폭을 넓혀 속도를 빠르게 만든 SDRAM이다.
- 대역폭이 SDRAM보다 두배 더 넓어 전송 속도가 빠르다.
- 종류
- SDR SDRAM : 한 클럭당 하나의 데이터 주고 받음
- DDR SDRAM : 한 클럭당 두개의 데이터 주고 받음
- DDR2 SDRAM : 한 클럭당 네개의 데이터 주고 받음
- DDR3 SDRAM : 한 클럭단 여덟개의 데이터 주고 받음
06-2. 메모리의 주소 공간
물리주소
- 주소
- 물리주소
- 메모리 하드웨어가 사용하는 주소
- 메모리가 사용하는 주소 = 하드웨어상의 실제 주소(물리주소)
- 논리 주소
- CPU와 실행 중인 프로그램이 사용하는 주소
- CPU와 실행중인 프로그램이 사용하는 주소 = 각각이 프로그램에 부여된 주소(논리 주소)
- 주소의 변환
- 메모리 관리 장치(MMU)
- 논리주소와 물리주소간의 변환을 돕는 장치
- 베이스레지스터
- 프로그램의 가장 작은 물리 주소인 프로그램의 첫 물리 주소를 저장
- 논리 주소
- 프로그램의 시작점(베이스 레지스터에 저장된 값)으로 부터 떨어진 거리
메모리 보호 기법
- 한계 레지스터
- 다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호하는 역할을 담당한다.
- 논리 주소의 최대 크기를 지정한다.
- 접근하고자하는 논리 주소가 한계 레지스터보다 작은지를 검사하여 메모리 내의 프로그램을 보호한다.
06-3. 캐시 메모리
저장 장치 계층 구조
- 저장장치의 명제
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
- 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.
- 저장 장치 계층 구조
- 컴퓨터가 사용하는 저장 장치들은 CPU에 얼마나 가까운지를 기준으로 계층적으로 나타낸것
- 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조이다.
캐시 메모리
- CPU와 메모리 사이에 위치하고 레지스터보다 용량이 크고 메모리보다 빠른 SRAM기반의 저장장치
- CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
- 메모리에서 CPU가 사용할 일부 미리 캐시 메모리로 가지고 와서 활용
- 코어와 가장 가까운 캐시 메모리부터 L1캐시, L2캐시, L3캐시라고 부른다.
참조 지역성 원리
- 캐시 히트
- 자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우
- 캐시 미스
- 자주 사용될 것으로 예측하여 캐시 메모리에 저장했지만, 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우
- 성능 저하의 원인이 된다.
- 캐시 적중률
- 캐시가 히트되는 비율
- 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
- 참조 지역성 원리
- 캐시 메모리가 메모리로부터 가져올 데이터를 결정하는 원리
- CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리
- 원리
- 시간 지역성
- CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- 공간 지역성
- CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
07-1. 다양한 보조 기억 장치
하드 디스크
- 자기적인 방식으로 데이터를 저장한느 보조 기억 장치
- 자기 디스크의 일종으로 지칭하기도 함
- 대용량 저장 장치가 필요한 작업이나 서버실에 자주 출입하는 작업을 할 시 많이 접하게 됨
- CD나 LP와 비슷하게 생겨, 비슷하게 동작함
- 하드 디스크의 구성
- 플래터
- 동그란 원판
- 자기 물질로 덮여 있어 수많은 N극와 S극을 저장한다.(N과 S가 0과 1의 역할을 수행함)
- 스핀들
- 플래터를 회전시키는 구성 요소
- 플래터를 돌리는 속도는 RPM단위로 표현됨
- 헤드
- 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소
- 프랠터 위에서 미세하게 떠 있는 채로 데이터를 읽고 쓰는 바늘같이 생긴 부품
- 디스크 암
- 헤드가 부착되어 있어, 헤드를 원하는 위치로 이동시키는 구성 요소
- 하드 디스크 데이터 저장 방식
- 트랙과 섹터라는 단위로 데이터를 저장
- 트랙
- 플래터를 여러 동심원으로 나누었으때 그중 하나의 원을 트랙이라고 부른다.
- 섹터
- 여러조각으로 나뉜 트랙의 한 조각
- 하드 디스크의 가장 작은 전송 단위
- 하나 이상의 섹터를 묶어 블록이라고 표현하기도 함
- 실린더
- 여러겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위
- 연속된 정보가 기록된다.
- 하드디스크가 저장된 데이터에 접근하는 시간
- 탐색 시간
- 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
- 회전 지연
- 전송 시간
- 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간
- 위 시간들은 성능에 큰 영향을 끼치는 시간들이다.
플래시 메모리
- 플래시 메모리 기반의 보조기억장치
- USB메모리, SD카드, SSD
- 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치
- 플래시메모리의 종류
- NAND 플래시 메모리 : NAND 연산 수행
- NOR 플래시 메모리 : NOR 연산 수행
- 플래시 메모리의 단위
- 셀
- 플래시 메모리의 단위
- 한셀에 1비트를 저장할 수 있는 플래시 메모리 : SLC
- 한 셀로 두개의 정보를 표현할 수 있음
- 수명도 다른 타입에 비해 상대적으로 긴 편이다.
- 비트의 빠른 입출력이 가능
- 데이터를 읽고 쓰기가 매우 많이 반복되며 고성능의 빠른 저장 장치가 필요한 경우 사용
- 한셀에 2비트를 저장할 수 있는 플래시 메모리 : MLC
- 한 셀로 네개의 정보를 표현
- SLC보다 속도와 숨병은 떨어지지만 대용량화하기 유리하다
- 용량 대비 가격이 저렴하여 시중에서 사용되는 플래시 메모리가 이에 속한다.
- 한셀에 3비트를 저장할 수 있는 플래시 메모리 : TLC
- 한 셀로 여덟개의 정보를 표현
- 대용량화 하기 유리하다.
- 앞 두 타입보다 수명과 속도를 떨어지지만 용량 대비 가격도 저렴하다.
- 페이지
- 블록
- 플레인
- 다이
- 플래시 메모리의 상태
- Free
- 어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태
- Valid
- 이미 유효한 데이터를 저장하고 있는 상태
- 이때는 덮어쓰기가 불가능하다.
- InValid
- 쓰레기값(유효하지 않은 데이터)를 저장하고 있는 상태
07-2. RAID의 정의와 종류
RAID의 정의
- RAID
- 하드 디스크와 SSD를 사용하는 기술로 데이터의 안정성 혹은 높은 성능을 위해 여러개의 물리적 보조 기억 장치를 마치 하나의 논리적 보조 기억장치처럼 사용하는 기술
RAID의 종류
- RAID 레벨
- RAID의 구성 방법
- RAID0
- 여러개의 보조 기억 장치에 데이터를 단순히 나누어 저장하는 구성 방식
- 줄무늬처럼 분산되어 저장된 데이터 : 스트라입
- 분산하여 저장하는 것 : 스트라이핑
- 하지만, 저장된 정보가 안전하지 않다는 단점이 발생
- RAID1
- 미러링 : 복사본을 만드는 방식
- RAID0보다는 속도가 드리다.
- 복구가 간단함
- 하지만, 한정된 디스크에서 사용가능한 용량이 적다는 단점이 존재
- RAID2(잘 사용하지 않음)
- RAID3(잘 사용하지 않음)
- RAID4
- 복사본을 만드는 대신 오류를 검출하고 복구하기 위한 정보르 저장한 장치를 두는 구성 방식
- 패리티 비트 : 오류를 검출하고 복구하기 위한 정보
- RAID5
- RAID4에서 어떤 새로운 데이터가 저장될때마다 패리티를 저장하는 디스크에도 데이터를 쓰게 되어 패리티를 저장하는 장치에 병목 현상이 발생함을 개선한 방식
- 패리티 정보를 분산하여 저장하는 구성 방식
- RAID6
- RAID5와 구성은 기본적으로 같으나, 서로 다른 두개의 패리티를 두는 방식
- 오류를 검출하고 복구하는 방식이 2개가 됨
- 속도가 느리지만, 데이터를 안전하게 보관 가능함
08-1. 장치 컨트롤러와 장치 드라이버
장치 컨트롤러(=입출력 제어기, 입출력 모듈)
- 전송률(데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표)의 차이는 입출력 장치간의 통신을 어렵게 한다.
- 위와 같은 이유로 입출력 장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러라는 하드웨어를 통해 연결된다.
- 모든 입출력 자이는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고 받고 장치 컨트롤러는 하나 이상의 입출력 장치와 연결되어 있다.
- 장치 컨트롤러의 역할
- CPU와 입출력 장치간의 통신 중개
- 오류 검출
- 데이터 버퍼링
- 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 공간에 저장하여 전송률을 비슷하게 맞추는 방법
- 장치 컨트롤러의 구조
- 데이터 레지스터
- CPU와 입출력 장치 사이에 주고 받을 데이터가 담기는 레지스터
- 상태 레지스터
- 입추력 장치가 입출력작업을 할 준비가 되었는지, 입출력 작업이 완료되었는지, 입출력 장치에 오류는 없는지 등의 상태 정보를 저장
- 제어 레지스터
- 입출력 장치가 수행할 내용에 대한 제어 정보와 명령을 저장
장치 드라이버
- 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로글매
- 프로그램이므로 실행 과정에서 메모리에 저장됨
08-2. 다양한 입출력 방법
프로그램 입출력
- 프로그램 속 명령어로 입출력 장치를 제어하는 방법
- CPU가 프로그램 속 명령어를 실행하는 과정에서 입출력 명령어를 만나면 CPU는 입출력 장치에 연결된 장치 컨트롤러와 상호작용하며 입출력 작업을 수행
- 입출력장치의 명령어 메모리 저장 방식
- 메모리 맵 입출력
- 메모리에 접근하기 위한 주소 공간과 입출력 장치에 접긓나기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
- 메모리 주소 공간이 축소됨
- 메모리와 입출력 장치에 같은 명령어 사용 가능
- 고립형 입출력
- 메모리를 위한 주소 공간과 입출력 장치를 위한 주소 공간을 분리하는 방법
- 메모리 공간이 축소되지 않음
- 입출력 전용 명령어 사용
인터럽트 기반 입출력
- 인터럽트 기반 입출력
- 인터럽트를 기반으로 하는 입출력
- PIC
- 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 지금 처리해야할 하드웨어 인터럽트는 무엇인지 알려줌
- PIC의 다중 인터럽트 처리 과정
- PIC가 장치 컨트롤러에서 인터럽트 요청 신호를 받아들인다.
- PIC는 인터럽트 우선순위를 판단한 뒤 CPU에 처리해야할 인터럽트 요청 신호를 보낸다.
- CPU는 PIC에 인터럽트 확인 신호를 보낸다.
- PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터를 보낸다.
- CPU는 인터럽트 벡터를 통해 인터럽트의 요청의 주체를 알게 되고, 해당 장치의 인터럽트 서비스 루틴을 실행한다.
DMA 입출력
- DMA
- 입출력 장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식
- 직접 메모리에 접근할 수 있는 입출력 기능
- 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요함
- DMA 입출력 과정
- CPU는 DMA 컨트롤러에 입출력 장치의 주소, 수행할 연산(읽기/쓰기), 읽거나 쓸 메모리의 주소 등과 같은 정보로 입출력 작업을 명령합니다.
- DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행합니다. 이때 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 씁니다.
- 입출력 작업이 끝나면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업이 끝났음을 알립니다.
MISSION
P185 - 3번 문제
(답) 1 - SRAM / 2 - DRAM / 3 - DRAM / 4 - SRAM
P205 - 1번 문제
(답) 1 - 레지스터 / 2 - 캐시 메모리 / 3 - 메모리 / 4 - 보조기억장치