06-1. RAM의 특징과 종류
휘발성 저장 장치, 비휘발성 저장 장치, DRAM, SRAM, SDRAM, DDR SDRAM
RAM(메모리)의 특징
- 휘발성 저장 장치(volatile memory) : RAM
- 비휘발성 저장 장치(non-volatile memory) : 보조기억장치(하드 디스크, SSD, CD-ROM, USB 메모리)
➡️ 보조기억장치는 cpu가 직접 접근할 수 없으므로, 보관할 대상을 저장하고, RAM에는 실행할 대상을 저장한다.
➡️ cpu가 실행하고 싶은 프로그램이 보조기억장치에 있으면 RAM으로 복사해 저장한 뒤 실행한다.
RAM의 용량과 성능
RAM 용량이 적다면 보조기억장치에서 실행할프로그램을 자주 가져와야 해 실행 시간이 길어진다.
RAM 용량이 커지면 실행 속도가 증가하기는 하지만, 필요 이상으로 커진다면 속도가 비례해 커지지는 않는다.
RAM의 종류
DRAM
Dynamic RAM의 준말. 시간이 지나면 저장된 데이터가 사라지므로 일정 주기로 다시 저장해야한다.
일반적으로 메모리로 사용하는 RAM이 메모리이다.
- 소비 전력이 비교적 낮다
- 저렴하다
- 집적도가 높아 대용량 설계 시 용이하다
SRAM
Static RAM의 준말. 저장된 데이터가 시간이 지나도 사라지지 않는다.
시간이 지나도 데이터가 사라지지 않는다는 것이지 비휘발성 메모리는 아니다. 전원 꺼지면 저장된 내용이 날아간다.
DRAM보다 속도도 빠르지만 집적도가 낮고, 소비 전력이 크고, 가격이 비싸서 메모리로 사용되는 RAM이 아니다.
✔️ 대용량으로 만들 필요는 없지만 속도가 빨라야 하는 저장장치, 예를 들어 캐시 메모리에 사용된다.
SDRAM(Synchronous Dynamic RAM)
클럭 신호와 동기화된 DRAM, SDR SDRAM(Single Data Rate SDRAM)이라고도 불린다.
클럭 타이밍에 맞춰 CPU와 정보를 주고받을 수 있다.
DDR SDRAM(Double Data Rate SDRAM)
대역폭을 넓혀 속도를 빠르게 만든 SDRAM
✔️ 대역폭(data rate) : 데이터를 주고받는 길의 너비
✔️ 한 클럭에 하나씩 주고받았다면 DDR SDRAM은 한 클럭에 두 번씩 CPU와 데이터를 주고받을 수 있어 전송 속도가 빠르다.
DDR2 SDRAM은 DDR SDRAM보다 대역폭이 두 배 넓은 SDRAM이다.
최근에 흔히 사용하는 메모리는 DDR4 SDRAM으로, SDR SDRAM보다 16배 빠르다.
📌 확인 문제
3. SDRAM이 아니라 SRAM이다! (정오표 확인)
- 주로 캐시 메모리로 사용 : SRAM
- 주로 주기억장치로 활용 : DRAM
- 대용량화하기 유리 : DRAM
- 집적도가 상대적으로 낮음 : SRAM
06-2. 메모리의 주소 공간
물리 주소, 논리 주소, MMU, 베이스 레지스터, 한계 레지스터
물리주소, 논리주소의 개념과 차이, 변환 방법 학습
물리 주소와 논리 주소
메모리에 저장된 정보가 계속해서 변하기 때문에 cpu와 메모리에 저장되어 실행중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 모른다. 같은 프로그램을 실행하더라도 적재되는 주소가 달라질 수 있다.
물리 주소(physical address)
정보가 실제로 저장된 하드웨어상의 주소(메모리와 하드웨어가 사용)
논리 주소(logical address)
cpu와 실행 중인 프로그램이 사용하는 주소로, 실행 중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소
메모리에 게임, 메모장, 크롬이 적재되어 있는데 이들 각각은 다른 프로그램들이 메모리 어디에 저장되어 있는지 알 필요가 없다. 그래서 프로그램들은 0번지부터 시작하는 자신만을 위한 주소인 논리 주소를 갖는다.
✔️ cpu와 메모리가 상호작용 하려면 논리 주소와 물리 주소 간 변환이 이루어져야 한다.
메모리 관리 장치(MMU; Memory Management Unit)
논리 주소를 물리 주소로 변환
cpu와 주소 버스 사이에 위치
cpu가 발생시킨 논리 주소 ➕ 베이스 레지스터 값 🟰 물리 주소
✔️ 베이스 레지스터 : 프로그램의 가장 작은 물리 주소 = 프로그램의 첫 물리 주소
✔️ 논리 주소 : 프로그램의 시작점으로부터 떨어진 거리
메모리 보호 기법
프로그램의 논리 주소 영역을 벗어난 논리 주소 관련 명령은 안된다. 다른 프로그램 주소로 가서 다른 정보를 삭제하거나 수정하게 된다.
한계 레지스터(limit register)
논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향 받지 않도록 보호
✔️ 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 최대 크기를 저장한다.
✔️ 물리 주소 범위 : 베이스 레지스터 값 ~ 베이스 + 한계 레지스터 값
cpu는 메모리에 접근하기 전 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사한다
➡️ 한계 레지스터보다 높은 논리 주소 접근 시 인터럽트 발생시켜 실행을 중단
06-3. 캐시 메모리
저장 장치 계층 구조, 캐시 메모리, 캐시 적중률, 참조 지역성의 원리
저장 장치 계층 구조를 통해 저장 장치의 큰 그림 그리고, cpu와 메모리 사이에 위치한 캐시 메모리 학습
📍 캐시 메모리 : cpu의 연산 속도가 cpu가 메모리에 접근하는 시간보다 빠르기 때문에 이를 극복하기 위해 사용한다
저장 장치 계층 구조
컴퓨터가 사용하는 저장 장치들을 cpu와의 거리를 기준으로 계층적으로 나타낸 것
저장 장치 특징
- cpu와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다
- 속도가 빠른 저장 장치는 용량이 작고, 가격이 비싸다
✔️ 레지스터는 RAM보다 용량이 작지만 접근 시간이 빠르고 가격이 비싸다
✔️ USB 메모리보다 RAM이 접근 시간이 훨씬 빠르지만, 같은 용량 대비 가격이 더 비싸다
➡️ 일반적으로 컴퓨터는 다양한 저장 장치를 모두 사용한다
캐시 메모리(cache memory)
cpu의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위해 사용
cpu와 메모리 사이 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM기반 저장 장치이다
컴퓨터 내부에는 여러 캐시 메모리가 있는데, cpu와 가까운 순서대로 계층을 구성한다.
L1(level 1), L2(level 2)는 코어 내부에, L3(level 3)는 코어 외부에 위치한다.
✔️ cpu는 우선 L1 캐시에 데이터 있는지 보고, 없으면 L2, L3 순으로 검색한다.
멀티 코어 프로세서에서의 구현
보통은 L1, L2 캐시는 코어마다 고유한 캐시 메모리로 할당되고 L3캐시는 여러 코어가 공유하는 형태
분리형 캐시
참조 지역성의 원리(locality of reference, principle of locality)
캐시 메모리가 메모리로부터 가져올 데이터를 결정하는 근거
- 보조 기억 장치 : 전원이 꺼져도 기억할 대상 저장
- 메모리 : 실행 중인 대상 저장
- 캐시 메모리 : cpu가 사용할 법한 대상을 예측해 저장
✔️ 캐시 히트 : 캐시 메모리 내 데이터가 예측과 같게 cpu에서 활용될 경우
✔️ 캐시 미스 : 캐시 메모리에 예측한 데이터가 아닌 메모리에서 필요한 데이터를 직접 가져와야 하는 경우 ➡️ 캐시메모리 이점 활용 못함
캐시 적중률(cache hit ratio)
캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
실제 컴퓨터의 캐시 적중률은 대략 85 ~ 95% 이상
참조 지역성의 원리
- 시간 지역성(temporal locality) : cpu는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다
- 공간 지역성(spatial locality) : cpu는 접근한 메모리 공간 근처를 접근하려는 경향이 있다
➡️ 변수에 값을 저장하면 실행하는 동안 여러 번 사용 -> 시간 지역성
➡️ 비슷한 프로그램끼리, 기능들끼리 모여서 저장되므로, 해당 프로그램들이 모여 있는 공간 근처를 집중적으로 접근 -> 공간 지역성
07-1. 다양한 보조기억장치
하드 디스크, 플래터, 데이터 접근 시간, 플래시 메모리, 페이지, 블록
하드 디스크와 플래시 메모리는 가장 대표적인 보조기억장치 학습
하드 디스크(HDD; Hard Disk Drive)
자기적인 방식으로 데이터를 저장하는 보조기억장치 자기디스크(magnetic disk)라고도 불린다
✔️ 플래터(flatter)
하드 디스크가 실질적으로 저장되는 동그란 원판
자기 물질로 덮여 있어 수많은 N극과 S극을 저장하는데 각각 0과 1의 역할을 한다.
✔️ 스핀들(spindle)
플래터를 회전시키는 구성 요소
스핀들이 플래터를 돌리는 속도 : 분당 회전수를 나타내는 RPM(Revolution Per Minute)로 표현
✔️ 헤드(head)
플래터 위에 떠 있는 채로 데이터를 읽고 쓰는, 바늘같이 생긴 부품이다.
✔️ 디스크 암(disk arm)
헤드는 원하는 위치로 헤드를 이동시킨다. 헤드는 디스크 암에 부착되어 이동한다.
CD나 LP에 비해 많은 양의 데이터를 저장해야 하므로 일반적으로 여러 겹의 플래터로 이루어져 있고 양면을 사용한다. 양면 플래터 사용하면 위 아래로 두개의 헤드가 사용된다.
플래터에 데이터 저장
플래터는 트랙과 섹터 단위로 데이터를 저장한다.
섹터는 하드디스크의 가장 작은 전송 단위이다.
하나의 섹터는 하드 디스크에 따라 차이가 있지만 일반적으로 512바이트 정도의 크기이다. 일부 하드 디스크의 섹터 크기는 4096바이트에 이르기도 한다.
✔️ 실린더 (cylinder) : 여러 겹의 플래터 상에서 같은 트랙에 위치한 곳을 모아 연결한 논리적 단위
➡️ 한 플래터애서 동심원으로 나눈 공간이 트랙, 같은 트랙끼리 연결한 원통 모양의 공간이 실린더
디스크 암을 움직이지 않고 바로 데이터에 접근할 수 있으므로 연속된 정보는 보통 하나의 실린더에 기록된다.
저장된 데이터에 접근하는 시간
- 탐색 시간 : 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
- 회전 지연 : 헤드가 있는 곳으로 플레터를 회전시키는 시간
- 전송 시간 : 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간
📍 탐색 시간과 회전 지연을 단축시키기 위해 RPM 높이는 것도 중요하지만, 참조 지역성, 즉 접근하려는 데이터가 플래터 혹은 헤드를 조금만 옮겨도 접근할 수 있는 곳에 위치해 있는 것이 중요!
✔️ 다중 헤드 디스크
트랙마다 헤드가 있어 탐색 시간이 0이다.
헤드를 움직일 필요가 없는 다중 헤드 디스크를 고정 헤드 디스크라고 하고, 헤드가 있는 곳까지 움직여야 하는 단일 헤드 디스크를 이동 헤드 디스크라고도 부른다.
https://www.youtube.com/watch?v=3owqvmMf6No
플래시 메모리(flash memory)
전기적으로 데이터를 읽고 쓸수 있는 반도체 기반의 저장 장치
USB메모리, SD카드, SSD 모두 플래시 메모리이다. 붉은 박스로 표기한 부분이 플래시 메모리이다.
✔️ 플래시 메모리는 보조기억장치 범주 속한다기보다 주기억장치 ROM에 사용되고, 거의 모든 전자제품에 내장되는 등 널리 사용되는 저장 장치이다.
- NAND 플래시 메모리 : NAND 게이트 기반, 대용량 저장 장치로 많이 사용, 보조기억장치로서의 플래시 메모리
- NOR 플래시 메모리 : NOR 게이트 기반
셀
플래시 메모리에서 데이터를 저장하는 가장 작은 단위이다. 셀이 모여서 MB, GB, TB 용량을 갖는 저장 장치가 된다.
한 셀에 몇비트를 저장하느냐에 따라 종류가 나뉜다.
- SLC(Single Level Cell) : 한 셀에 1비트를 저장
- MLC(Multiple Level Cell) : 한 셀에 2비트 저장
- TLC(Triple Level Cell) : 한 셀에 3비트 저장
➡️ 플래시 메모리의 수명, 속도, 가격에 큰 영향을 끼친다. (플래시 메모리, 하드 디스크도 수명이 있다!)
✔️ SLC
한 셀에 0 1 두 개의 정보를 표현할 수 있는데 다른 방식에 비해 빠른 입출력이 가능하고, 수명도 길다. 다만 용량 대비 가격이 높다. (혼자살면 주거비용이 크게 드는 것과 비슷) 보통 기업에서 사용한다.
✔️ MLC
한 셀로 네 개의 정보 표현할 수 있는데 SLC에 비해 일반적으로 속도 수명은 떨어지는데 한 셀에 두 비트씩 저장이 가능해 MLC 타입은 대용화하기 유리하다. 가격도 저렴. 시중에 사용되는 많은 플래시 메모리가 MLC 타입이다. MLC 보다 떨어지는 것이 TLC
페이지, 블록, 플레인, 다이
셀들이 모여 페이지, 페이지가 모여 블록, 블록이 모여 플레인, 플레인이 모여 다이가 된다.
✔️ 읽기/쓰기 : 페이지 단위
✔️ 삭제 : 블록 단위
➡️ 읽기 쓰기 단위와 삭제 단위가 다른 것이 가장 큰 특징이다
✔️ 페이지 상태
- Free 상태 : 데이터 없어 새로운 데이터 저장 가능한 상태
- Valid 상태 : 유효한 데이터를 저장하고 있는 상태 -> HDD와 다르게 덮어쓰기 불가능해 새 데이터 저장이 어렵다
- Invalid 상태 : 쓰레기값인 유효하지 않은 데이터 저장하고 있는 상태
페이지에 정보를 추가할 때는 그냥 저장하면 되는데, 만약 페이지 안의 정보를 삭제하고 다른 값으로 변경하고 싶으면 페이지를 Invalid 상태로 만들고 페이지의 다른 페이지에 변경된 정보를 저장한다. (덮어쓰기가 불가능하다!)
가비지 컬렉션
Invalid 값은 공간 차지만 하고 있으므로 삭제를 위해 가비지 컬렉션 기능을 사용한다.
- 유효한 페이지들만을 새로운 블록으로 복사
- 기존의 블럭 삭제
➡️ 블록의 모든 유효한 페이지를 새로운 블록으로 옮기고 Invalid 페이지가 남아있는 블록을 삭제
📌 확인 문제
1. 하드 디스크에서 데이터가 저장되는 위치 : 플래터
2. 하드 디스크의 플래터를 돌리는 구성 요소 : 스핀들
3. 하드 디스크에 저장된 데이터를 읽고 쓰는 구성 요소 : 헤드
07-2. RAID의 정의와 종류
RAID 0, RAID 1, RAID 4, RAID 5, RAID 6
여러 보조기억장치를 더욱 안전하고 빠르게 활용하는 방법
RAID(Redundant Array of Independent Disks)는 하드 디스크와 SSD를 사용하는 기술인데, 데이터의 안전성 혹은 높은 성능을 위해 여러 개의 물리적 보조기억장치를 하나의 논리적 보조기억장치처럼 사용하는 기술이다.
RAID의 종류
✔️ RAID 레벨 : RAID 구성 방법
대표적으로 RAID 0, RAID 1, RAID 2, RAID 3, RAID 4, RAID 5, RAID 6이 있고, 이로부터 파생된 RAID 10, RAID 50 등이 있다.
RAID 2 와 RAID 3은 현재 활용되지 않는다.
RAID 0
여러 보조기억장치에 데이터를 단순히 나누어 저장하는 방식
데이터 저장할 때 각 하드 디스크는 아래와 같이 번갈아 가며 데이터를 저장하므로 저장되는 데이터가 HDD 개수만큼 나뉘어 저장된다
마치 줄무늬처럼 분산되어 저장된 데이터를 스트라입(stripe)이라고 하고, 분산하여 저장하는 것을 스트라이핑(striping)이라고 한다.
➡️ 하나의 대용량 저장 장치를 이용했더라면 여러 번에 걸쳐 읽고 썼을 데이터를 동시에 읽고 쓸 수 있어 속도가 빨라진다.
❓ RAID 0 으로 구성된 HDD 중 하나에 문제가 생기면 다른 디스크 정보를 읽는 데 문제가 생긴다. 즉 정보가 안전하지 않다.
RAID 1
복사본을 만드는 방식. 거울처럼 완전한 복사본을 만드는 구성이므로 미러링이라고 부른다.
RAID 0 처럼 스트라이핑이 사용되긴 했지만, 오른쪽의 두 하드디스크는 복사본이다. 쓰기 속도는 0보다 느리지만 복구가 매우 간단하다. 용량이 적어져서 복사본때문에 사용자가 이용을 못한다.
RAID 4
오류를 검출하고 복구하기 위한 정보인 패리티 비트(parity bit)를 저장한 장치를 둔다.
✔️ 오류 검출 패리티 비트
오류 검출만 가능하고 오류 복구는 불가능하지만, RAID에서는 패리티 값으로 오류 수정도 가능하다.
- RAID 4에서는 패리티 정보를 저장한 장치로써 나머지 장치들의 오류를 검출하고 복구한다.
- 패리티 비트는 본래 오류 검출용 정보지만, RAID에서는 오류 복구도 가능하다
RAID 5
패리티 정보를 분산하여 저장하는 방식으로 RAID 4의 문제인 병목 현상을 해소
RAID 4는 새로운 데이터가 저장될 때마다 패리티를 저장하는 디스크에도 데이터를 쓰게되니까 패리티 저장하는 장치에 병목 현상이 발생하므로, 분산해서 저장해 병목현상을 없앤다.
RAID 6
기본적으로 RAID 5와 같은데, 서로 다른 두 개의 패리티를 두는 방식
패리티가 두 개라서 오류 검출하고 복구할 수 있는 수단이 2개라서 RAID 4나 RAID 5보다는 안전한 구성이다.
❓ 새로운 정보를 저장할 때마다 함께 저장할 패리티가 2개이므로 쓰기 속도는 RAID 5보다 느리다.
➡️ 속도 희생하더라도 데이터를 더욱 안전하게 보관하고 싶은 경우 사용!
✔️ 여러 RAID 레벨을 혼합한 방식 : Nested RAID
RAID 10 = RAID 0 + RAID 1
RAID 50 = RAID 0 + RAID 5
정리
- RAID 0 : Striping
- RAID 1 : Mirroring
- RAID 5 : One time distributed parity
- RAID 6 : Two time distributed parity
https://www.2cpu.co.kr/QnA/778204
raid 50 vs raid 6 서로 특장점이 있을텐데 어떤게 안정적인지요? :: 2cpu, 지름이 시작되는 곳!
sfl 제목 내용 제목+내용 회원아이디 회원아이디(코) 이름 이름(코) stx sop and or 검색
www.2cpu.co.kr
08-1. 장치 컨트롤러와 장치 드라이버
장치 컨트롤러, 장치 드라이버
입출력장치는 컴퓨터 외부에 연결되는 장치인데 컴퓨터 내부와 연결되어 있는 방법과 관련해 장치 컨트롤러와 장치 드라이버 학습
보조기억 장치도 포함하는데, 왜냐하면 보조기억장치가 컴퓨터 내부와 정보를 주고받는 방식이 입출력장치와 비슷하기 때문이다.
장치 컨트롤러
❓ 입출력장치는 cpu, 메모리보다 다루기가 까다롭다
- 입출력장치의 종류가 너무 많다(정보 주고받는 방식 규격화가 어렵다)
- 입출력장치의 전송률이 낮다 (transfer rate는 ㅡ데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표)
➡️ 입출력장치는 컴퓨터와 직접 연결되는 것이 아니라 장치 컨트롤러(device controller)라는 하드웨어 통해 연결된다.
➡️ 입출력 제어기, 입출력 모듈 등 다양하게 불린다.
모든 입출력장치는 장치 컨트롤러 통해 컴퓨터 내부와 정보를 주고받는다.
e.g. 하드 디스크도 장치 컨트롤러가 있다.
기능 (일종의 번역가 역할)
- cpu와 입출력장치 간의 통신 중개
- 오류 검출
- 데이터 버퍼링
데이터 버퍼링 : 버퍼링은 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장해 전송률을 비슷하게 맞추는 방법. 전송률 차이를 데이터 버퍼링으로 완화한다.
➡️ 버퍼에 데이터 조금씩 모았다가 한번에 내보니거나, 한번에 많이 받아 조금씩 내보낸다.
내부 구조
1. 데이터 레지스터(data register)
: cpu와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터. 데이터 레지스터가 버퍼 역할을 한다.
주고받는 데이터가 많은 입출력장치는 레지스터 대신 RAM을 사용한다.
2. 상태 레지스터
- 입출력장치가 입출력 작업할 준비 됐는지
- 입출력 작업이 완료되었는지
- 입출력장치에 오류는 없는지
➡️ 상태 정보 저장
3. 제어 레지스터
: 입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장한다.
장치 드라이버
장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
새로운 장치를 컴퓨터에 연결하려면 장치 드라이버 설치가 필수적이다.
프로그램이므로 실행 과정에서 메모리에 저장된다.
✔️ 장치 컨트롤러 : 하드웨어적 통로
✔️ 장치 드라이버 : 소프트웨어적 통로
📍 장치 드라이버를 인식하고 실행하는 주체는 운영체제이므로 운영체제가 장치 드라이버를 인식하고 실행할 수 있어야 컴퓨터 내부와 정보를 주고받을 수 있다.
08-2. 다양한 입출력 방법
프로그램 입출력, 메모리 맵 입출력, 고립형 입출력, 인터럽트 기반 입출력, DMA 입출력, 입출력 버스
가장 보편적인 프로그램 입출력과 인터럽트 기반 입출력 DMA 입출력 알아보기
프로그램 입출력(programmed I/O)
프로그램 속 명령어로 입출력장치 제어
- cpu가 하드 디스크 컨트롤러의 제어 레지스터에 쓰기 명령
- 하드 디스크 컨트롤러가 하드 디스크 상태확인 후 준비된 상태라면 상태 레지스터에 준비완료 표시
- cpu는 상태 레지스터를 주기적으로 보며 하드 디스크의 준비 여부 확인하는데 준비됐음을 알게 되면 데이터 레지스터에 백업할 메머리의 정보를 쓴다.
- 백업이 끝나지 않으면 계속해서 상태 레지스터 확인하고, 쓰기 끝나면 종료
➡️ cpu가 장치 컨트롤러의 레지스터 값을 읽고 쓰면서 이루어진다.
cpu내부가 아닌 외부의 여러 컨트롤러 속 레지스터들을 알기 어려우므로 메모리 맵 입출력과 고립형 입출력을 이용한다.
메모리 맵 입출력
메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주
즉 메모리에 접근하는 명령어와 입출력장치에 접근하는 명령어가 같다.
- 517번지가 메모리상의 주소라면 저장된 정보를 읽음
- 517번지가 프린트 컨트롤러의 상태 레지스터라면 프린터의 상태 확인
고립형 입출력
메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법
메모리 읽기 쓰기 선 이외에 입출력장치 읽기 쓰기 선이 따로 있어서 명령어를 달리 해야한다. 메모리도 주소공간 전부를 이용할 수 있고, 입출력장치도 전부 이용할 수 있다.
인터럽트 기반 입출력
장치 컨트롤러에서 입출력장치에 의한 하드웨어 인터럽트가 발생한다
장치 컨트롤러가 입출력장치 제어하면서 입출력 수행하는 동안 cpu가 다른일을 할 수 있다.
장치 컨트롤러가 입출력 작업 끝내고 cpu에 인터럽트 요청 신호 보내면 cpu가 인터럽트 서비스 루틴을 실행한다
✔️ 폴링
입출력장치의 상태가 어떤지, 처리할 데이터가 있는지 주기적으로 확인하는 방식
인터럽트가 동시에 발생한 경우
현실적으로 전부 순차적으로 해결하기는 어려우므로, 우선순위가 높은 인터럽트 순으로 처리한다.
플래그 레지스터 속 인터럽트 비트가 활성화 되어 있거나, 비활성화돼도 무시할 수 없는 인터럽트인 NMI(Non-Maskable Interrupt) 발생 시 우선순위가 높은 인터럽트부터 처리한다.
➡️ 프로그래머블 인터럽트 컨트롤러(PIC) 하드웨어 이용 (NMI 제외 인터럽트 비트 통해 막을 수 있는 하드웨어 인터럽트 우선순위 조정)
인터럽트 요청의 우선순위를 판별 후 cpu에 지금 처리해야 할 하드웨어 인터럽트를 알려준다.
보통 두계층으로 구성한다.
- PIC가 장치 컨트롤러에서 인터럽트 요청 신호들을 받아들임
- PIC가 인터럽트 우선 순위 판단 후 cpu에 처리해야 할 인터럽트 요청 신호 보냄
- cpu는 PIC에 인터럽트 확인 신호 보냄
- PIC는 데이터 버스를 통해 cpu에 인터럽트 벡터 보냄
- cpu는 인터럽트 벡터 통해 인터럽트 요청의 주체 알게 되고, 해당 장치의 인터럽트 서비스 루틴 실행
DMA 입출력(Direct Memory Access)
입출력장치와 메모리가 cpu를 거치지 않고 상호작용할 수 있는 방식
직접 메모리에 접근 가능하다
시스템 버스에 DMA 컨트롤러라는 하드웨어가 필요하다.
- cpu가 DMA 컨트롤러에 입출력장치의 주소, 수행할연산, 읽거나 쓸 메모리의 주소 등과 같은 정보로 입출력 작업 명령
- DMA 컨트롤러는 cpu대신 장치 컨트롤러와 상호작용하며 입출력 작업 수행
- 필요한 경우 메모리에 직접 접근해 정보를 읽거나 씀
- 입출력 작업이 끝나면 DMA컨트롤러는 cpu에 인터럽트 걸어 작업 끝났음을 알림
➡️ cpu는 오로지 입출력의 시작과 끝에만 관여하면 된다.
❓시스템 버스 동시 사용 불가
❗️DMA 컨트롤러는 cpu가 사용안할때 이용하거나, 일시적으로 cpu에 허락 구해 집중적으로 이용
입출력 버스
데이터를가져오고 장치 컨트롤러로 옮기려면 두번씩 시스템 버스를 사용해야하는데 너무 많이 사용하면 안되므로 입출력 버스에서 해결한다.
장치 컨트롤러들이 입출력 버스를 연결하면 DMA 컨트롤러와 장치 컨트롤러가 서로 데이터 전송할 때는 시스템 버스 이용할 필요가 없어 시스템 버스 사용 빈도를 줄일 수 있다.
PCI 버스, PCI Express(PCIe)버스 등 어려 종류가 있다.
✔️ 대부분은 입출력 버스와 연결되는 통로를 통해 시스템 버스를 타고 cpu와 정보를 주고받는다.
📍 입출력 프로세서(IOP) 혹은 입출력 채널
메모리에 직접 접근, 입출력 명령어 직접 인출, 해석, 실행까지 하는 일종의 입출력 전용 cpu
➡️ cpu가 입출력 채널에게 메모리에 저장된 특정 입출력 명령어 수행하라고 하면 입출력 채널이 해당 입출력 명령어를 인출, 해석, 실행 후 인터럽트 통해 결과를 cpu에 알린다.
'CS > 혼자 공부하는 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[혼공학습단 13기] 6주차 : 가상 메모리 | 파일 시스템 (0) | 2025.02.20 |
---|---|
[혼공학습단 13기] 5주차 : 프로세스 동기화 | 교착 상태 (0) | 2025.02.13 |
[혼공학습단 13기] 4주차 : 운영체제 시작하기 | 프로세스와 스레드 | CPU 스케쥴링 (0) | 2025.02.07 |
[혼공학습단 13기] 2주차 : CPU의 작동 원리 | CPU 성능 향상 기법 (0) | 2025.01.19 |
[혼공학습단 13기] 1주차 : 컴퓨터 구조 시작하기 | 데이터 | 명령어 (0) | 2025.01.16 |