과제
p. 185의 확인 문제 3번 : 다음 설명을 읽고 SRAM에 대한 설명인지 DRAM에 대한 설명인지 쓰세요.
- 주로 캐시 메모리로 활용됩니다. SRAM
- 주로 주기억장치로 활용됩니다. DRAM
- 대용량화하기 유리합니다. DRAM
- 집적도가 상대적으로 낮니다. SRAM
p. 205의 확인 문제 1번 : 다음 보기에 있는 저장 장치들로 저장 장 계층 구 도식화를 채우세요.
레지스터 |
캐시 메모리 |
메모리 |
보조기억장치 |
Ch.07(07-1) RAID의 정의와 종류를 간단히 정리해 보기
- 아래에 공부내용 정리에 포함 :)
메모리
RAM
- 전원을 끄면 저장된 명령어, 데이터가 다 날아가는 휘발성 저장 장치 ↔ HDD, SSD, CD-ROM, USB (비휘발성 저장 장치이자 보조기억장치)
- RAM에는 실행할 대상을 저장한다. 보조 기억장치는 보관할 대상이다.
- RAM의 종류 : DRAM, SRAM, SDRAM, DDR SDRAM
- 램의 용량이 크다는건 많은 프로그램을 동시에 실행하는 데에 유리하다. 그러나 실행속도는 어느순간부터는 증가하지 않는다. 책을 책상에 많이 꺼내놓는다고 빨리 읽을 수 없다.
DRAM
Dynamic RAM. 저장된 데이터가 동적으로 변하는(사라지는) RAM.
우리가 일반적으로 사용하는 메모리.
- 시간이 지나면 저장된 데이터가 사라지기 때문에 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장)해야한다.
- 소비 전력이 낮고, 저렴하고 집적도가 높아서 대용량 설계에 유리하다.
- (집적도가 높다 : 더 작고 빽빽하게 만들 수 있다)
SRAM
Static RAM. 저장된 데이터가 변하지 않는 RAM.데이터 재활성화를 할 이유가 없고 일반적으로 DRAM보다 빠르다.
- 집적도가 낮고, 소비 전력도 크며, 가격도 비싸다.
- 대용량은 필요하지 않지만 빨라야하는 저장 장치. 예를 들면 캐시 메모리에 사용된다.
SDRAM
Synchronous DRAM.
DRAM+SRAM이 아니다! 클럭신호와 동기화된, 발전된 형태의 DRAM
- 클럭 타이밍에 맞춰 CPU와 정보를 주고 받을 수 있다.
DDR SDRAM
Double Data Rate SDRAM. 최근 가장 흔히 사용되는 RAM.
대역폭을 넓혀 속도를 빠르게 만든 SDRAM. - 2차선 도로
- 대역폭 : 데이터를 주고받는 길의 너비
- SDR SDRAM : 한클럭당 하나의 데이터를 주고 받는 SDRAM (Single Data Rate) - 1차선 도로
- DDR2 SDRAM : 4차선 도로 (제곱)
- DDR3 SDRAM : 8차선 도로 (세제곱)
- DDR4 → 16차선 도로
메모리의 주소 공간
물리 주소 : 메모리 하드웨어가 사용하는 주소
논리 주소 : CPU와 실행 중인 프로그램이 사용하는 주소
- 메모리에 저장된 정보는 시시각각 변한다. 때에 따라서 같은 프로그램의 주소가 바뀔 수도 있다. 따라서 물리적인 주소 외에 논리적인 주소가 필요해진다.
→ 그렇다면 물리 주소와 논리 주소간의 변환은 어떻게 하는가?
논리 주소를 물리 주소로 바꾸기
**MMU (메모리 관리 장치)**라는 하드웨어가 CPU와 주소 버스 사이에 위치해있다. 이 때 베이스 레지스터를 사용한다.
- 베이스 레지스터 : 프로그램의 가장 작은 물리 주소 (프로그램의 첫 물리 주소)
- 베이스 레지스터에 저장된 주소 + 논리 주소 = 물리 주소
논리 주소 영역을 벗어나게 명령을 하면? - 메모리 보호 기법
만약 메모장이 1000-1999번지에 있는데 메모장의 1100(상대주소)에 데이터를 바꾸려고 한다면?
→ 한계 레지스터 : 논리 주소 범위를 벗어난 명령어 실행 방지하기 위해서 필요하다.
- 물리 주소의 범위 : 베이스 레지스터 값 이상, 베이스 레지스터 값 + 한계 레지스터 값 미만
캐시 메모리
저장 장치 계층 구조
(왼쪽일수록 빠르고, 용량이 작고, 비싸다.)
레지스터 ↔ 메모리 ↔ 보조기억장치
저장 장치의 명제
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
- 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.
캐시 메모리
CPU와 메모리 사이에 위치하고 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반 저장 장치.
레지스터 ↔ 캐시 메모리 ↔ 메모리 ↔ 보조기억장치
캐시 메모리의 계층
L1 캐시 ↔ L2 캐시 ↔ L3 캐시
(Level 1, Level2, Level 3 Cache로 1일수록 코어와 가깝고 용량이 작다.)
- 일반적으로 L1, L2 캐시는 코어 내부, L3는 코어 외부에 위치한다.
레지스터 ↔ 캐시 메모리 (L1 캐시 ↔ L2 캐시 ↔ L3 캐시) ↔ 메모리 ↔ 보조기억장치
참조 지역성 원리
캐시에는 무엇을 저장할까
캐시 메모리는 CPU가 사용할 법한 대상을 예측하여 저장한다.
- 캐시 히트 : 캐시 메모리 내 데이터가 CPU에 활용될 경우
- 캐시 미스 : 메모리에서 직접 데이터를 가져와야하는 경우
- 캐시 적중률 : 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
- 대체적으로 85% ~ 95% 이상 적중한다.
캐시로 데이터를 가져오는 하나의 원칙 = 참조 지역성 원리
- 시간 지역성 : CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- 공간 지역성 : CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
보조기억장치
하드디스크
자기적인 방식으로 데이터 저장. 자기 디스크(magnetic disk)의 일종.
LP판처럼 원판에 데이터를 저장하고 회전시켜서 뾰족한 리더기로 데이터를 읽는다.
부품
- 플래터 (platter) : 동그란 원판 (N,S극들이 저장되있다.)
- 스핀들 (spindle) : 플래터를 회전시키는 구성 요소
- RAM : 스핀들이 플래터를 돌리는 분당 회전수
- 헤드 (head) : 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소. 플래터 위에서 데이터를 읽고 쓰는 데에 사용하는 바늘.
- 디스크 암 (disk arm) : 헤드를 원하는 위치로 이동시키는 부품
데이터 저장 단위
- 트랙 : 플래터에서 하나의 원
- 섹터 : 피자 조각처럼 나뉜 단위
- 블록 : 하나 이상의 섹터를 묶음
- 실린더 : 여러 겹 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위. 같은 트랙이 연결된 원통.
데이터에 접근할 때 소요 시간
- 탐색 시간 : 해당 트랙까지 헤드를 이동시키는 시간.
- 회전 지연 : 헤드가 있는 곳으로 플래터를 회전시키는 시간.
- 전송 시간 : 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간.
플래시 메모리
USB, SD 카드, SSD.
크게 NAND 플래시 메모리와 NOR 플래시 메모리가 있다. 대용량 처리로 사용되는 장치는 NAND 플래시 메모리이다.
단위
- Cell(셀) : 기본적 메모리 단위
- 페이지 : 셀들이 모여 만들어진 단위
- 블록 : 페이지가 보여 만들어진 단위
- 플레인 : 블록의 모임
- 다이 : 플레인이 모임
페이지의 상태
- Free : 저장된 데이터가 없다.
- Valid : 유효한 데이터 저장 중
- Invalid : 쓰레기값. 유효하지않은 데이터를 저장 중.
- 플래시 메모리는 덮어쓰기가 불가능하다.
- 플래시 메모리의 삭제는 블록 단위로 지원되기 때문에 특정 페이지만 지울 수 없다.
- 가비지 컬렉션 : 쓰레기값을 정리하는 방법
- 유효한 페이지들만 새로운 블록으로 복사하고 기존의 블록을 삭제하는 방식.
플래시 메모리의 종류
- SLC (Single Level Cell) : 한 셀에 1비트를 저장할 수 있는 플래시 메모리
- 한 셀에 2개의 정보 표현 가능. 빠른 입출력, 수명도 긴 편. 그러나 용량 대비 가격이 높다.
- MLC (Multiple Level Cell) : 한 셀에 2비트를 저장
- 한 셀에 4개의 정보를 표현. SLC보다 느리고 수명도 떨어지지만 대용량으로 만들기 유리하고 용량 대비 비교적 저렴하다.
- TLC (Triple Level Cell) : 한 셀에 3비트를 저장
- 대용량화를 하기 유리하다. 용량 대비 가격도 저렴하고 수명은 짧다.
RAID
Redundandt Array of Independent Disks
주로 하드 디스크와 SSD에 사용하는 기술로 데이터의 안정성 혹은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술
RAID 0
여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식
- 스트라이핑 : 분산하여 저장하는 것
- 스트라입 : 줄무늬처럼 분산되어 저장된 데이터
- 단점 : 저장된 정보가 안전하지 않다. 디스크 하나만 고장나면 모든 정보를 읽는데 문제가 된다.
RAID 1
미러링 : 복사본을 만드는 방식. 거울처럼 완전한 복사본을 만든다. 하드 디스크 4개가 있다면 2개가 원본, 2개가 백업.
- RAID 0보다 데이터를 쓰는게 느리고 사용가능한 용량이 줄어드는 단점이 있다. 그러나 복구가 간단하다는 장점이 있다.
RAID 4
오류를 검출하고 복구하기 위한 정보를 저장한 장치를 두는 방식
- 패리티 비트 : 오류를 검출하고 복구하기 위한 정보
- RAID 1보다 적은 하드 디스크로 데이터를 안전하게 보관할 수 있다.
- 새로운 데이터를 저장할 때 패리티를 저장하는디스크에도 데이터를 쓰기 때문에 패리티를 저장한 디스크는 병목이 발생할 수 있다.
RAID 5
패리티 정보를 디스크마다 분산하여 저장하는 방식
RAID 4의 병목 현상을 해소
RAID 6
RAID 5와 비슷하지만 한 디스크에 두 개의 패리티를 두는 방식
입출력장치
장치 컨트롤러
일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다. 전송률의 차이는 CPU, 메모리, 입출력 장치 간의 통신을 어렵게 한다.
(전송률 : 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표)
- 입출력장치는 따라서 컴퓨터에 직접 연결하지 않고 장치 컨트롤러라는 하드웨어를 통해서 연결된다.
- CPU와 입출력 장치 간의 통신을 중개하고 오류 검출, 데이터 버퍼링을 수행한다.
데이터 버퍼링
- CPU와 입출력장치간의 전송률 차이를 완화하는 역할.
- 버퍼링 : 전송률이 높은 장치와 낮은 장치 사이에 주고 받는 데이터를 ‘버퍼’라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
내부 구조
- 데이터 레지스터 : CPU와 입출력 장치 사이의 데이터가 담기는 레지스터. 버퍼 역할을 하고 데이터가 많은 입출력 장치에는 레지스터 대신 RAM을 쓰기도 한다.
- 상태 레지스터 : 입출력 장치가 작업 준비 완료, 작업 완료, 오류 여부 등 상태 저장
- 제어 레지스터 : 입출력 장치가 수행할 내용에 대한 정보, 명령을 저
장치 드라이버
장치 컨트롤러의 동작을 감지하고 제어하여 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램으로 메모리에 저장된다.
프로그램 입출력
프로그램 속 명령어로 입출력장치 제어하는 방법. 대표적으로 메모리 맵 입출력과 고립형 입출력이 있다.
메모리 맵 입출력
메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
- 1024개의 주소를 표현할 수 있다면 512는 메모리 주소를 512개를 장치 컨트롤러의 레지스터를 표현하는데 쓴다거나…
- 메모리에 접근하는 명령어와 입출력 장치에 접근하는 명령어가 다를 필요가 없어진다.
고립형 입출력
메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법
- 메모리에 접근하는 명령어와 입출력장치에 접근하는 명령어가 달라진다.
- 메모리 주소 공간이 축소되지 않는다.
인터럽트 기반 입출력
입출력장치가 CPU에게 인터럽트 요청을 보내면 CPU는 하던 일을 잠시 멈추고 해당 인터럽트를 처리하는 인터럽트 서비스 루틴을 실행한다.
정확하게는 입출력장치에 의한 하드웨어 인터럽트는 입출력장치가 아닌 장치 컨트롤러에 의해 발생한다.
VS 폴링
CPU는 주기적으로 장치 컨트롤러의 상태 레지스터를 확인하며 입출력장치의 상태를 확인한다. 따라서 CPU의 부담이 인터럽트 방식보다 크다.
인터럽트가 동시에 발생한다면
여러 기기의 장치 컨트롤러에서 인터럽트 요청이 발생했다.
간단한 처리는 순서대로 처리하는 것이다. 그러나 현실적으로 모든 인터럽트를 순차적으로 처리할 수 없다. 플래그 레지스터 속 인터럽트 비트의 활성화 유무에 따라 처리방식이 달라진다. 활성화시 (+비활성화 중이지만 무시할 수 없는 인터럽트 발생시) 우선순위 순으로 처리한다.
인터럽트 간에 우선순위를 고려하기
CPU는 인터럽트 우선순위를 고려하여 처리할 수 있다!
프로그램 실행 도중 인터럽트 서비스 루틴 A가 실행되고 B가 실행됐다고 가정하자. 그런데 B가 A보다 우선순위가 높다.
- 프로그램을 멈추고 A가 실행된다.
- A를 멈추고 B를 실행, B 마무리
- 멈췄던 A를 이어서 실행, 마무리
- 프로그램 이어서 시작
프로그래머블 인터럽트 컨트롤러 (PIC)
여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 지금 처리할 하드웨어 인터럽트를 알려주는 장치
- PIC가 장치컨트롤러에서 인터럽트 요청 신호들을 받는다.
- 우선순위 판단 뒤 CPU에 처리해야할 인터럽트 요청 신호를 보낸다.
- CPU에서 인터럽트 확인 신호를 받는다.
- 데이터 버스를 통해 CPU에 인터럽트 벡터를 보낸다.
- CPU는 벡터를 통해 인터럽트 요청의 주체를 알고, 해당 장치의 인터럽트 서비스 루틴 실행.
DMA 입출
입출력장치와 메모리 사이에 전송되는 방식은 프로그램 기반 입출력, 인터럽트 기반 입출력은 CPU를 반드시 거쳐야 한다. 따라서 CPU를 거치지 않고 상호작용하는 입출력 방식의 필요가 있었다.
- 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요하다.
입출력 과정
- CPU는 DMA 컨트롤러에 입출력장치의 주소, 수행할 연산, 읽거나 쓸 메모리의 주소 등 정보로 입출력 작업 명령.
- DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 장치를 수행. 필요하다면 DMA 컨트롤러는 메모리에 직접 접근하여 정보를 읽거나 씀.
- 입출력 작업이 끝나면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업이 끝났음을 알림.
입출력 버스
DMA 컨트롤러와 장치 컨트롤러들을 입출력 버스라는 별도 버스로 연결할 수 있다.
DMA를 위한 시스템 버스를 너무 많이 쓰면 CPU가 시스템 버스를 사용하지 못하기에 길을 비켜줘야한다!
종류 : PCI 버스, PCIe 버스
'컴퓨터구조&운영체제' 카테고리의 다른 글
[혼공컴운] 6주차_가상 메모리 & 파일 시스템 (0) | 2024.02.07 |
---|---|
[혼공컴운] 5주차_프로세스 동기화 & 교착 상태 (0) | 2024.02.02 |
[혼공컴운] 4주차_운영체제 알아가기 (0) | 2024.01.25 |
[혼공컴운] 2주차_CPU 알아가기 (2) | 2024.01.11 |
[혼공컴운] 1주차_컴퓨터 구조 입문하기 (0) | 2024.01.07 |