혼공학습단 10기 - 혼공컴운 (3주차)
3주 차 목표
# | 진도 | 기본 미션 | 선택 미션 |
3주차 (7/17 ~ 7/23) |
Chapter 06 ~ 08 | p. 185의 확인 문제 3번, p. 205의 확인 문제 1번 풀고 인증하기 | Ch.07(07-1) RAID의 정의와 종류를 간단히 정리해 보기 |
컴퓨터 구조는 이것으로 끝~
다음 주부터는 운영체제 시작!
3주 동안 정말 많은 것을 공부하였는데, 또한 단기간에 너무 많은 정보가 들어와 몇 달 뒤면 잊어버리는 것이 아닌지! 하는 생각도 들었다. ㅋㅋㅋ
그러니 혼공학습단이 끝나도 꼭 복습하는 걸로 하자~
기본 미션
p.185 확인 문제 3번
Q. 다음 설명을 읽고 SRAM에 대한 설명인지 DRAM에 대한 설명인지 쓰세요.
보기: SRAM, DRAM
- 주로 캐시 메모리로 활용됩니다. ( 1 )
- 주로 주기억장치로 활용됩니다. ( 2 )
- 대용량 화하기 유리합니다. ( 3 )
- 집적도가 상대적으로 낮습니다. ( 4 )
A. 1: SRAM, 2: DRAM, 3: DRAM, 4: SRAM
p.205 확인 문제 1번
Q. 다음 보기에 있는 저장 장치들로 저장 장치 계층 구조 도식도를 채우세요.
보기: 메모리, 보조기억장치, 캐시 메모리, 레지스터
/ \
/( 1 )\
/ ( 2 ) \
/ ( 3 ) \
/ ( 4 ) \
A. 1: 레지스터, 2: 캐시 메모리, 3. 메모리, 4. 보조기억장치
선택 미션
RAID(Redundant Array of Independent Disks)
여러 물리적 보조기억장치를 하나의 논리적 보조기억장치처럼 사용하는 기술.
RAID 0
데이터를 단순히 나누어, 번갈아 가며 저장하는 구성 방식(스트라이핑(striping)). 데이터를 동시에 입출력할 수 있기 때문에 속도가 향상.
- 스트라입(stripe): 마치 줄무늬처럼 분산되어 저장된 데이터.
But, 하드 디스크 중 하나라도 문제가 생기면 모든 하드 디스크의 정보를 읽는 데 문제가 생길 수 있다.
RAID 1
RAID 0처럼 번갈아가며 저장을 하되, 거울처럼 완전한 복사본을 만든다(미러링(mirroring)).
But, 데이터 복구가 용이해지나 쓰기 속도가 느려지고, 사용 가능한 용량이 적어진다.
RAID 4
RAID 1처럼 완전한 복사본을 만드는 대신, 오류를 검출하고 복구하기 위한 정보(패리티 비트(parity bit))를 저장한다.
But, 패리티 디스크는 항상 정보를 써야 하기 때문에 병목 현상이 생길 수 있다.
RAID 5
패리티 정보를 분산하여 자장 하는 방식. 병목 현상 완화.
But, 여전히 패리티 정보에 문제가 생길 경우 위험성 존재.
RAID 6
두 종류의 패리티를 사용. RAID 5보다 더 안전해짐.
But, RAUD5보다 더 느림
메모
06 - 1 RAM의 특징과 종류
1. RAM은 전원을 끄면 내용이 사라지고, 보조 기억 장치는 보존된다. 이렇게 내용이 사라지는 저장 장치를 휘발성 저장 장치(volatile memory)라고 하고, 보존되는 저장 장치를 비휘발성 저장 장치(non-volatile memory)라 한다.
2. RAM의 용량이 커지면 성능이 늘어난다. 왜? 한 번에 실행할 수 있는 프로그램이 늘어나니까. 보조기억장치에서 프로그램을 꺼내오는 시간만큼 속도가 빨라진다.
3. RAM의 종류
- DRAM(Dynamic RAM): 저장된 데이터가 동적으로 사라지는 RAM. 소비 전력이 비교적 낮고, 저렴하고, 직접도가 높아 대용량으로 설계하기 용이해 일반적으로 사용된다.
- SRAM(Static RAM): 저장된 데이터가 변하지 않는 RAM. DRAM보다 일반적으로 더 빠르다. 대신 소비 전력이 비교적 높고, 비싸고, 직접도가 낮다. 대용량으로 만들 필요는 없지만 속도가 빨라야 할 때 사용된다.(ex 캐시메모리)
- SDRAM(Synchronous DRAM, SDR SDRAM; single Data Rate SDRAM): DRAM의 발전형으로 클럭 신호와 동기화되었다. 클럭에 맞춰 CPU와 정보를 주고받을 수 있음.
- DDR SDRAM(Double Data Rate SDRAM): 현재 제일 대중적으로 사용되는 RAM으로 SDRAM의 발전형. 대역폭(데이터를 주고받는 길의 넓이)을 넓혀 속도를 빠르게 만듦.
- DDR2는 DDR보다 대역폭이 2배 넓다.
06 - 2 메모리의 주소 공간
1. 논리 주소(logical address)는 실행 중인 프로그램 각각에게 부여된(프로그램이 알고 있는) 0번지부터 시장되는 주소, 물리 주소(physical address)는 실제 메모리에 저장된 주소를 나타냄.
2. MMU(메모리 관리 장치, MMU; Memory Management Unit)라는 하드웨어가 논리 주소를 물리 주소로 변환한다. 베이스 레지스터의 기준 주소(프로그램의 가장 작은 물리 주소)에 논리 주소를 더하는 방식.
3. 주소 범위를 벗어나는 명령어를 실행하면 다른 프로그램을 침범하게 됨. 이를 방지하기 위해 한계 레지스터(limit register)가 논리 주소의 최대 크기를 저장함. 만약 CPU가 한계 레지스터보다 높은 논리 주소에 접근하려 하면 인터럽트(트랩)를 발생시켜 실행을 중단한다.
06 - 3 캐시 메모리
1. 저장 장치 계층 구조(memory hierarchy): 저장 장치는 CPU와 가까울수록 빠르다. 속도가 빠르면 용량이 적고 가격이 비싸다. 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조.
2. 캐시 메모리(cache memory): CPU와 메모리 사이에 위치한 SRAM 기반의 저장 장치. 메모리에서 CPU가 사용할 일부 데이터를 캐시 메모리에 가져와서 연산 속도와 메모리 접근 속도를 줄인다.
- 계층적 캐시 메모리(L1 - L2 - L3 캐시): 컴퓨터 내부에 여러 개의 캐시 메모리가 있고, 코어와 가까운 순서대로 계층을 구성한다. 보통 L1 L2는 코어 내부에 위치해 코어별 고유 캐시 메모리로 할당되고, L3는 코어 외부에 위치해 여러 코어가 공유한다.
- 분리형 캐시(Split cache): L1 캐시 메모리를 더 빨리 만들기 위해 명령어만 저장하는 L1I 캐시, 데이터만 저장하는 L1D로 분리하는 경우도 있다.
3. 캐시 메모리는 CPU가 자주 사용할 법한 데이터를 예측해서 저장한다. 이 데이터가 CPU에서 사용될 경우를 캐시 히트(cache hit), 아니라면 캐시 미스(cache miss)라고 한다. 캐시가 히트되는 비율은 캐시 적중률(cache hit ratio)이라고 한다.
- 참조 지역성의 원리(locality of reference, principle of locality): CPU가 메모리에 접근할 때의 주된 경향성
- 시간 지역성(temporal): CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- 공간 지역성(spatial locality): CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
07 - 1 다양한 보조기억장치
1. 하드 디스크(HDD Hard Disk Drive): 자기적인 방식으로 데이터를 읽고 쓸 수 있는 저장 장치.
- 구성 요소
- 플래터(platter)라고 하는 자기성을 가진 원반에 저장된다. 여러 겹으로 이루어짐.
- 스핀들(spindle)이 플래터를 회전시킨다.
- 헤드(head)는 데이터를 읽고 쓰는 구성 요소. 각 플래터 위에 미세하게 떠 있는 바늘같이 생긴 부품.
- 디스크 암(disk arm)은 헤드를 원하는 위치(트랙)로 이동시킴.
- 저장 단위
- 트랙(track): 플래터를 여러 동심원으로 나누었을 때, 그중 하나의 원.
- 섹터(sector): 트랙을 피자 조각처럼 나누었을 때, 그 중 하나의 조각.
- 실린더(cylinder): 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 곳. 연속된 정보는 한 실린더에 기록된다. 디스크 암을 움직이지 않아도 되기 때문.
- 데이터 접근 과정
- 탐색 시간(seek time): 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간.
- 회전 지연(rotational latency): 헤드가 있는 곳으로 플래터를 회전.
- 전송 시간(transfer time): 데이터를 전송하는 시간.
2. 플래시 메모리(flash memory): 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치.
- 셀(cell): 플래시 메모리에서 데이터를 저장하는 가장 작은 단위.
- 셀들이 모여 페이지(page) -> 페이지들이 모여 블록(block) -> 블록이 모여 플레인(plane) -> 플레인이 모여 다이(die)
- 읽기/쓰기는 페이지 단위, 삭제는 블록 단위로 이루어짐. 하드 디스크와는 달리 덮어쓰기가 불가능.
- 페이지의 상태는 Free 상태(어떠한 데이터도 저장하고 있지 않음) / Valid 상태(이미 유효한 데이터를 저장 중) / Invalid 상태(유효하지 않은 쓰레기값을 저장 중)가 있다.
- 덮어쓰기가 불가능하고 삭제는 블록 단위로 이루어져 쓰레기값이 생기기 때문에, 이를 정리하기 위해 플래시 메모리는 가비지 컬렉션(garbage collection) 기능을 제공함.
- SLC(Single Level Cell): 한 셀에 1비트(두 개의 정보)를 저장할 수 있는 플래시 메모리. 빠른 입출력, 긴 수명, 용량 대비 고 가격.
- MLC(Multiple Level Cell): 한 셀에 2비트(네 개의 정보)를 저장할 수 있는 플래시 메모리. SLC보다 느린 입출력, 짧은 수명, 저렴. 시중에서 많이 사용.
- TLC(Triple-Level Cell): 한 셀에 3비트(여덟 개의 정보)를 저장할 수 있는 플래시 메모리. MLC보다 느린 입출력, 짧은 수명, 저렴. 시중에서 많이 사용.
07 - 2 RAID의 정의와 종류
1. RAID(Redundant Array of Independent Disks): 여러 물리적 보조기억장치를 하나의 논리적 보조기억장치처럼 사용하는 기술.
- RAID를 구성하는 방법은 여러 가지가 있고 이를 RAID 레벨이라 표현한다. 대표적으로 RAID 1, RAID 2, RAID 3, RAID 4, RAID 5, RAID 6, RAID 10, RAID 50 등이 있다.
2. RAID 0: 데이터를 단순히 나누어, 번갈아 가며 저장하는 구성 방식(스트라이핑(striping)).
- 스트라입(stripe): 마치 줄무늬처럼 분산되어 저장된 데이터.
- 데이터를 동시에 입출력할 수 있기 때문에 속도가 향상되나, 하드 디스크 중 하나라도 문제가 생기면 모든 하드 디스크의 정보를 읽는 데 문제가 생길 수 있다.
3. RAID 1: RAID 0처럼 번갈아가며 저장을 하되, 거울처럼 완전한 복사본을 만든다(미러링(mirroring)).
- 데이터 복구가 용이해지나 쓰기 속도가 느려지고, 사용 가능한 용량이 적어진다.
4. RAID 4: RAID 1처럼 완전한 복사본을 만드는 대신, 오류를 검출하고 복구하기 위한 정보(패리티 비트(parity bit))를 저장한다.
- 패리티 디스크는 항상 정보를 써야 하기 때문에 병목 현상이 생길 수 있다.
5. RAID 5: 패리티 정보를 분산하여 자장 하는 방식.
- 병목 현상 완화
6. RAID 6: 두 종류의 패리티를 사용.
- RAID 5보다 더 안전하지만 더 느림
08 - 1 장치 컨트롤러와 장치 드라이버
1. 입출력장치는 종류가 많아 정보를 주고받는 방식을 규격화하기 어렵고, 일반적으로 CPU와 메모리의 데이터 전송률(transfer rate, 데이터를 얼마나 빨리 교환할 수 있는지 나타내는 지표)에 비해 입출력장치의 데이터 전송률은 낮아 다루기 까다롭다.
2. 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러(device controller, 입출력 제어기(I/O controller), 입출력 모들(I/O module))라는 하드웨어를 통해 연결됨. 입출력장치는 다음과 같은 역할을 통해 문제들을 해결함.
- CPU와 입출력장치 간의 통신 중개: 번역과 같은 역할
- 오류 검출
- 데이터 버퍼링(buffering, 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞춰줌)
3. 장치 컨트롤러는 버스에 연결되어 정보를 주고받음. 장치 컨트롤러의 내부는 다음과 같다. (상태, 제어 레지스터는 하나의 레지스터로 사용되기도 함)
- 데이터 레지스터: CPU와 입출력 장치 사이에 주고받을 데이터가 담기는 레지스터 (버퍼), 주고받을 데이터가 너무 많아져 레지스터 대신 RAM을 사용하기도 함.
- 상태 레지스터: 입출력장치가 입출력 작업을 할 준비가 되었는지, 완료되었는지, 오류는 없는지 등의 상태 정보 저장.
- 제어 레지스터: 입출력장치가 수행할 내용에 대한 제어 정보.
4. 장치 드라이버(device driver): 장치 컨트롤러의 동작을 감지하고 제어하는 프로그램. 컴퓨터가 연결된 장치의 드라이버를 인식하고 실행할 수 있다면 어떤 장치든 컴퓨터 내부와 정보를 주고받을 수 있음.
08 - 2 다양한 입출력 방법
1. 프로그램 입출력(programmed I/O): 프로그램 속 명령어로 입출력장치를 제어하는 방법. CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어짐.
- 메모리에 저장된 정보를 하드디스크에 백업(쓰기) 과정
- 1. CPU는 하드 디스크 컨트롤러의 제어 레지스터에 쓰기 명령 내보냄.
- 2. 하드 디스크 컨트롤러는 하드 디스크 상태 확인 -> 상태 레지스터에 준비 완료 표시
- 3. CPU는 상태 레지스터를 주기적으로 읽어보며 하드 디스크의 준비 여부 확인 -> 백업할 메모리의 정보를 데이터 레지스터에 쓰기.
- 4. 이후 반복
2. 프로그램 입출력 방식에는 메모리 맵 입출력과 고립형 입출력이 있다.
- 메모리 맵 입출력(memory-mapped I/O): 메모리의 반을 장치 컨트롤러의 레지스터를 표현하는 데 사용하여 메모리의 주소들과 똑같은 형태로 표현하였기 때문에 동일한 명령어를 사용함.
- 고립형 입출력(isolated I/O): 메모리 주소 공간과 분리. 입출력 전용 명령어를 사용하여 메모리 공간을 전부 사용.
- 인터럽트 기반입출력: 하드웨어 인터럽트는 장치 컨트롤러에 의해 발생
3. 동시다발적으로 인터럽트가 일어났을 때
- 1. 순차적 실행: 인터럽트 비트를 비활성화하고 인터럽트를 순차적으로 처리
- 2. 우선순위를 반영: 순차적으로 실행하되 다른 인터럽트의 우선순위가 높다면 처리하고 A로 돌아온다. NMI(Non-Maskable Interrupt, 인터럽트 비트를 비활성화해도 무시할 수 없는 인터럽트) 혹은 인터럽트 비트가 활성화되어 있는 경우. 가장 대중적인 경우는 프로그래머블 인터럽트 컨트롤러(PIC: Programmable Interrupt Controller)가 여러 장치 컨트롤러에 연결되어 인터럽트 우선순위를 판별함.
- 3. DMA(Direct Memory Access) 입출력: CPU를 거치지 않고 입출력장치가 메모리에 직접적으로 접근하는 기능. CPU의 역할을 덜어줌.
- CPU가 DMA 컨트롤러에 입출력 작업 명령, DMA 컨트롤러가 CPU 대신 입출력 작업 수행, 끝나면 CPU에 인터럽트를 건다. 대신 CPU와 DMA컨트롤러는 동시에 시스템 버스를 사용할 수 없어, CPU가 이용하지 않을 때 조금씩 이용하거나 CPU가 잠시 이용하지 않도록 허락을 구함.
- 한 번 메모리에 접근할 때마다 DMA 컨트롤러가 읽고 쓰기 위해 두 번씩 시스템 버스를 이용. 대신 DMA컨트롤러와 장치 컨트롤러들을 입출력 버스(input/output bus)라는 별도의 버스에 연결해 반으로 줄임. 입출력 버스에는 PCI(Peripheral Component Interconnect) 버스, PCI Express(PCle) 버스 등이 있다.
강의
https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl
혼공
혼공컴운 도서 구매하기
https://www.hanbit.co.kr/store/books/look.php?p_code=B9177037040&utm_source=hongong