[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)
![[혼공컴운] 3주차_컴퓨터 구조 끝(Ch 06 ~ 08)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1753020566648%2Fc2832934-e4d5-45c1-87c8-a1d5f27b2169.png&w=3840&q=75)
06-1) RAM의 특징과 종류
RAM
휘발성 저장 장치
실행할 대상 저장
보조기억장치
비휘발성 저장 장치
보관할 대상 저장
CPU는 보조기억장치에 직접 접근하지 못하고 RAM으로 복사하여 저장한 뒤 실행.
RAM 용량이 적으면 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어지기 때문에 RAM용량이 충분히 크면 많은 데이터를 가져와 미리 RAM에 저장하여 프로그램들을 동시에 빠르게 실행하는데 유리하다.
- 하지만 용량이 필요 이상으로 커졌을 때 속도가 그에 비례하여 증가하지는 않는다.
RAM의 종류
DRAM(Dynamic RAM) : 시간이 지나면 저장된 데이터가 점차 사라지는 RAM
데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장)해야 함.
일반적 메모리로써 사용
소비 전력 낮음.
저렴함.
집적도가 높아 → 대용량 설계 용이
SRAM(Static RAM) : 시간이 지나도 저장된 데이터가 사라지지 않는 RAM
DRAM보다 속도 빠름.
집적도 낮음
소비 전력 큼.
비쌈.
캐시 메모리에서 사용
SDRAM(Synchronous Dynamic Ram) : 클럭 신호와 동기화된, 발전된 형태의 RAM
클럭 타이밍에 맞춰 CPU와 정보를 주고 받을 수 있다.
\= SDR SDRAM
DDR SDRAM(Double Data Rate SDRAM) : 대역폭을 넓혀 속도를 빠르게 만든 SDRAM
- 대역폭 : 데이터를 주고받는 길의 너비
06-2) 메모리의 주소 공간
메모리에는 새롭게 실행되는프로그램이 시시때때로 적재되고
실행이 끝난 프로그램은 삭제되고
같은 프로그램을 실행해도 실행할 때마다 적재되는 주소가 달라질 수 있다.
⇒ 그래서 CPU와 실행 중인 프로그램은 무슨 주소를 사용하는거야?
물리 주소 : 정보가 실제로 저장된 하드웨어상의 주소
- 메모리가 사용
논리 주소 : 실행 중인 프로그램 각각에서 부여된 0번지부터 시작되는 주소
- CPU와 실행 중인 프로그램이 사용
⇒ CPU와 실행 중인 프로그램은 논리 주소를 사용한다. 그럼 메모리와 상호작용은 어떻게 이루어질까?
메모리 관리 장치(MMU) : 논리 주소와 물리 주소 간의 변환
CPU와 주소 버스 사이에 위치
논리 주소 + 베이스 레지스터 값 → 논리주소를 물리 주소로 변환
베이스 레지스터 : 프로그램의 첫 물리 주소
논리 주소 : 프로그램의 시작점으로부터 떨어진 거리
메모리 보호 기법
한계 레지스터 : 논리 주소의 최대 크기를 저장
- CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 커서는 안 된다.
CPU는 메모리에 접근하기 전에
논리 주소가 한계 레지스터보다 작은가? 항상 검사하고
한계 레지스터보다 높은 논리 주소에 접근하려고 할 때 : 인터럽트(트랩) 발생 → 실행 중단
06-3) 캐시 메모리
- 저장 장치 계층 구조 :
CPU에 얼마나 가까운가를 기준으로 계층적으로 나타낸 구조.

캐시 메모리 : CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
CPU와 메모리 사이에 위치
레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치

캐시 메모리는 컴퓨터 내부에 여러 개, CPU(코어)와 가까운 순서대로 계층을 구성.
L1 > L2 > L3 순으로 코어와 가깝다.
용량 : L3 > L2 > L1
속도, 가격 : L1 > L2 > L3
멀티 코어 프로세서에서는 코어마다 L1 캐시와 L2 캐시가 고유한 캐시 메모리 할당, L3는 여러 코어가 공유하는 형태
캐시 메모리는 CPU가 사용할 법한 대상을 예측하여 저장
캐시 히트 : 자주 사용될 것으로 예측한 캐시 메모리 데이터가 CPU에서 활용될 경우
캐시 미스 : 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우
캐시 적중률 :
캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
참조 지역성 원리 : 캐시 메모리는 한 가지 원칙에 따라 메모리로부터 가져올 데이터를 결정
CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리
시간 지역성 : CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향
공간 지역성 : CPU는 접근한 메모리 공간 근처를 접근하려는 경향
- CPU가 실행하려는 프로그램은 보통 관련 데이터들끼리 모여 있음.
07-1) 다양한 보조기억장치
하드 디스크 : 자기적인 방식으로 데이터를 저장하는 보조기억 장치 = 자기 디스크
플래터 : 실질적으로 데이터가 저장되는 곳, N극과 S극 저장(0과 1의 역할)
트랙 : 플래터를 여러 동심원으로 나누었을 때 그중 하나의 원
섹터 : 피자처럼 여러 조각 그중 한 조각, 하드 디스크의 가장 작은 전송 단위(512 ~ 4,096바이트)
스핀들 : 플래터를 회전시키는 구성 요소
- RPM : 스핀들이 플래터를 돌리는 분당 회전수
헤드 : 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소
디스크 암 : 원하는 위치로 헤드를 이동
실린더 : 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위
- 연속된 정보는 보통 한 실린더에 기록
하드 디스크가 저장된 데이터에 접근하는 시간
탐색 시간 : 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
회전 지연 : 헤드가 있는 곳으로 플래터를 회전시키는 시간
전송 시간 : 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간
플래시 메모리 : 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치
범용성 넓은 저장 장치
셀 : 플래시 메모리에서 데이터를 저장하는 가장 작은 단위, (셀이 모여 MB,GB TB)
SLC : 한 셀에 1비트, 한 셀로 두 개의 정보
MLC : 한 셀에 2비트, 한 셀로 네 개의 정보
TLC : 한 셀에 3비트, 한 셀로 여덟 개의 정보
| 구분 | SLC | MLC | TLC |
| 셀당 bit | 1 bit | 2 bit | 3 bit |
| 수명 | 길다 | 보통 | 짧다 |
| 읽기 / 쓰기 속도 | 빠르다 | 보통 | 느리다 |
| 용량 대비 가격 | 높다 | 보통 | 낮다 |
페이지 : 셀들이 모여 만들어진 단위, 읽기와 쓰기 단위
블록 : 페이지가 모여 만들어진 단위, 삭제 단위
플레인 : 블록이 모여 만들어진 단위
다이 : 플레인이 모여 만들어진 단위
다이 > 플레인 > 블록 > 페이지 > 셀
Free 상태 : 새로운 데이터를 저장할 수 있는 상태
Valid 상태 : 이미 유효한 데이터를 저장하고 있는 상태
- 플래시 메모리는 덮어쓰기 안됨.
Invalid 상태 : 유효하지 않은(쓰레기 값) 데이터를 저장하고 있는 상태
⇒ 플래시 메모리는 이런 쓰레기 값을 정리하기 위해 가비지 컬렉션 기능 제공
- 유효한 페이지들만 새로운 블록으로 복사 → 기존 블록 삭제
07-2) RAID의 정의와 종류
RAID
하드 디스크와 SSD를 사용하는 기술
데이터의 안전성, 높은 성능을 위해 여러개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술
RAID 레벨 : RAID 구성 방법
RAID 0
여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식
번갈아 가며 데이터 저장
스트라입(stripe) : 줄무늬처럼 분산되어 저장된 데이터
스트라이핑(striping) 분산하여 저장하는 것.
저장된 데이터를 읽고 쓰는 속도가 빨라짐.
저장된 정보가 안전하지 않음 : 디스크 중 하나에 문제 생기면 해당 디스크의 모든 정보 문제
RAID 1
미러링(mirroring) : 그럼 복사본을 만들자.
데이터 스트라이핑이 사용되었지만 용량 반은 복사본, 사용 가능한 용량이 적어짐.
데이터를 쓸 때 원본, 복사본 두 군에 써서 RAID 0 보다 느림
복사본이 있기 때문에 복구는 매우 간단.
RAID 4
복사본 대신 패리티 비트를 저장한 장치를 두자.
패리티 비트(parity bit) : 오류를 검출하고 복구하기 위한 정보
- 원래는 오류 검출만 가능한데 RAID에서는 오류 수정도 가능함.
RAID 1보다 적은 하드 디스크로도 데이터 안전하게 보관
패리티 디스크의 병목 현상이 발생하는 문제
RAID 5
- 그럼 패리티 정보를 분산하자
RAID 6
RAID 5 와 같은 구성이지만 서로 다른 두 개의 패리티를 두는 방식이 다른점.
- 오류를 검출하고 복구할 수 있는 수단이 두 개
쓰기 속도는 RAID 5보다 느림.
하지만 저장 속도를 희생하더라도 데이터를 안전하게 보관하고 싶을 때 사용하는 방식
08-1) 장치 컨트롤러와 장치 드라이버
입출력 장치는 종류가 너무 많아 정보를 주고 받는 방식을 규격화 하기 어려움.
CPU와 메모리의 데이터는 전송률 ↑, 입출력장치의 데이터 전송률 ↓
- 전송률 : 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표
⇒ 그럼 다양한 외부 장치가 컴퓨터 내부와 어떻게 소통해?
장치 컨트롤러 = 입출력 제어기 = 입출력 모듈
입출력 장치는 장치 컨트롤러라는 하드웨어를 통해 컴퓨터에 연결
CPU와 입출력장치 간의 통신 중개
오류 검출
데이터 버퍼링
- 버퍼링 : 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
데이터 레지스터 : CPU와 입출력장치 사이에 주고받을 데이터 저장 (버퍼 역할)
상태 레지스터 : 입출력 작업 할 준비, 입출력 작업이 완료, 오류는 없는지의 상태 정보 저장
제어 레지스터 : 입출력장치가 수행할 내용에 대한 제어 정보와 명령 저장
장치 드라이버 : 입출력 장치를 연결하기 위한 소프트웨어적인 통로
- 장치 컨트롤러 동작 감지 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고 받을 수 있게 하는 프로그램
08-2) 다양한 입출력 방법
프로그램 입출력 : 프로그램 속 명령어로 입출력장치를 제어하는 방법
메모리 맵 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
- 메모리 접근 명령어 == 입출력장치 접근 명령어
고립형 입출력 : 메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리
메모리 주소 공간이 축소되지 않음
메모리에 접근하는 명령어와는 다른 입출력 명령어를 사용한다.
인터럽트 기반 입출력
장치 컨트롤러에 의해 발생.
순서대로 인터럽트 처리
- CPU가 플래그 레지스터속 인터럽트 비트를 비활성화한 채 인터럽트를 처리하는 경우
우선순위를 반영하여 다중 인터럽트 처리
프로그래머블 인터럽트 컨트롤러 (PIC) 하드웨어 사용
- 하드웨어 인터럽트 요청들의 우선순위 판별 → CPU에게 지금 처리해야 할 일 알려줌.
NMI는 인터럽트 비트가 활성화되어 있는 경우, 혹은 비활성해도 우선 순위가 가장 높아서 가장 먼저 처리 그래서 PIC가 NMI까지 우선순위 판별하지 않음. 불필요. 우선순위 가장 높으니까.
DMA 입출력
입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식
시스템 버스에 연결된 DMA 컨트롤러 하드웨어가 필요
CPU는 오로지 입출력의 시작과 끝에만 관여
근데 시스템 버스는 공용 자원이라 동시 사용이 불가능하다.
메모리에서 DMA로 한 번, DMA에서 장치 컨트롤러로 두 번
사이클 스틸링: CPU 입장에서는 흠…버스에 왜 자꾸 접근하지? 이러한 DMA의 버스 이용
그래서 입출력 버스라는 별도의 버스에 연결하여 해결.
입출력장치(장치 컨트롤러)는 시스템 버스가 아닌 입출력 버스와 연결
PCI버스
PCI Express(PCIe) 버스
숙제!
p 185의 3번
SRAM
DRAM
DRAM
SRAM
p 205의 1번
레지스터
캐시 메모리
메모리
보조기억장치
![[혼공컴운] 6주차_책 한 권을 끝내다니(Ch 14~ 15)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1755441066842%2F4d3a042e-e395-4e14-84c2-725aeabc56ed.png&w=3840&q=75)
![[혼공컴운] 5주차_끝이 보인다(Ch 12 ~ 13)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1754833767926%2F85ea771d-0416-409a-82d9-bcc62b92cf17.png&w=3840&q=75)
![[혼공컴운] 4주차_운영체제 시작(Ch 09 ~ 11)](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1753626546414%2F943e9f66-8c81-4bac-83b6-5797bd83293c.png&w=3840&q=75)