Memory: Stores data and programs
1) Capacity (용량)
2) Cost (per bit) (비용)
3) Access time (속도)
modern
1) Smaller, more expensive, fast -> SRAM
2) Larger, cheaper, slower -> DRAM
Memory Hierarchy
빠른 것을 CPU 근처에 (SRAM) -> 하위 계층까지 접근하지 않도록 발전
-> 상위계층 극대화, 하위계층 최소
Locality of reference
: 참조의 지역성 / 지역성의 원리
- 프로그램은 상대적으로 적은 부분의 주소를 접근하려는 경향이 있다.
- 이 부분은 프로그램이 실행될 때마다 변한다.
1) Temporal locality (locality in time): 다시 접근 가능성, interative loops
2) Spatial locality (locality in space): 근처 접근 가능성, arrays, tables
Average Access Time
Hit - 접근하고자하는 데이터가 상위계층에 있는 경우
- H (Hit rate): 상위 계층에서 발견
- T1: 상위계층 접근 시간
- T2: 하위계층 접근 시간
Miss - 상위에 존재 X인 경우 (only in lower level)
Miss rate = 1 - Hit rate
ex)
T1 = 0.1 마이크로세크
T2 = 1 마이크로 세크
H = 0.95
T = T1 * 0.95 + (T1 + T2) * 0.05
=> 0.15 마이크로세크
Hit rate 보다 Miss rate이 중요한 이유
: hit 보다 miss가 났을 경우 소요되는 시간이 더 많음
그러므로 miss를 줄이는 것이 중요하다. (?)
Cache Memory
-motivation: 프로세서는 instruction을 위해 반드시 메모리에 한 번 이상 접근해야한다. 그러나 instruction 수행은 memory cycle time에 의해 제한된다.
이를 위해 캐시에 저장하여 빠른 접근을 가능하게 한다.
Spatial locality
- 블럭 단위로 fetch
--> 가까운 메모리가 같이 블럭 단위로 cache에 올라감
Temporal locality
- 최근에 수행된 instruction이나 data를 cache에 올림
--> 재사용 가능성이 높음
Cache Oraganization
메인 메모리는 2^n개의 주소로 이루어짐
- M개의 fixed block 존재 (2^n / K)
- C개의 슬롯, K개의 word 존재
- line: addr % C
- Tag: addr / C
ex)
1. Direct Mapped
C = 8, M = 32, K = 1
-> 32개의 메인 메모리 주소 존재(32 = 2^n / 1), 8개의 슬롯 존재,
주소의 하위 3비트 (C = 8)는 line 형성, 나머지 비트는 tag 형성
장점: Miss 발생 시 버릴 메모리를 고민할 필요 X
2. 2-Way Set-Associatve
C = 8, M = 32, K = 1
-> 32개의 메인 메모리 주소 존재(32 = 2^n / 1), 8개의 슬롯 존재,
주소의 하위 2비트 (C = 8 / 2)는 line 형성, 나머지 비트는 tag 형성
장점: utilization 측면에서는 이점 발생
단점: 찾을 경우 비용 발생
Cache Read Operation
: CPU가 메모리 주소를 통해 데이터를 읽는 경우
Cache Write Operation
- write - hit
-> hit인 경우 메모리에 접근할 필요가 없음
하지만 write인 경우 메모리 수정이 필요
1) Write - through: write immediately to memory, 캐시 성능 기대 X
2) Write - back: 해당 연산이 끝날 때 까지 memory 수정을 연기
-> 블럭에 dirty bit를 추가하여 수정 여부 비교
-> 메모리에 쓰기 연산 최소화
-> multi-processor와 같이 즉각적인 수정이 필요한 경우 문제 발생, DMA와 같은 단일 환경에서도 마찬가지
Write miss?
1) Write - allocate (load to cache, update line in cache)
-> 쓰는 양이 많다면 좋은 방법
2) No - write - allocate (write straight to memory, do not load into cache)
Typical: Write - back + Write - allocate
I/O Device Overview
I/O controller는 I/O device에게 interface를 제공
- Interface: allows the system software to control its operation
- Internals: responsible for implementing its functionality
초기에는 CPU가 직접 I/O device에 접근, 명령을 지시
-> I/O device의 시작, 끝에 관여 -> idle 한 상태가 되므로 유의미한 일을 할 수 없음
--> 중간에 I/O controller를 중간에 두어 CPU 대신 I/O device를 operation 할 수 있는 하드웨어 도입
3 corresponding to a register
1) Status register: 현재 device의 상태를 읽는다.
2) Control register: device에게 일 수행 명령
3) Data register: device로부터 데이터를 얻는다.
I/O Address Space
1) Port-mapped I/O (I/O instructions) -> 메인 메모리와 별도로 매핑
: I/O device는 각자의 주소 공간을 가진다.
-> isolate되며, 서로 다른 주소 범위를 가짐
-> 추가적인 I/O instruction 주소를 접근하여 trigger
--> 별도의 instruction이 추가됨
2) Memory - mapped I/O
메모리 주소를 같이 사용하는 기법 -> 별도의 instruction 추가 X
동일한 주소 체계
-> 실제 메모리를 사용할 수 없는 경우 발생
I/O Communication
1. Programmed I/O
- repeatedly check the status of I/O module
1) read 명령어를 I/O 모듈에게 전송
2) controller는 command register를 확인
3) 계속해서 loop를 돌리며 상태레지스터를 확인
-> busy-waiting 발생
4) I/O 모듈을 읽고 메모리에 작성
-> device가 빠르면 좋지만 (낮은 latency), 느리다면 비효율적
2. Interrupt - Driven I/O
- CPU가 I/O Controller에게 전송하고, 다른 유용한 일을 수행
-> utilization을 높임, I/O controller의 작업이 끝나면 interrupt를 보내고, status register를 확인한 후 write 진행
--> I/O module의 수행이 끝나면 interrupt를 걸어 busy-waiting을 줄일 수 있음
-> large data에 대해서 interrupt를 계속 유발시키면 mode switch 비용이 발생할 수 있음
3. DMA (Direct Memory Access)
- large data에 대해서 효율이 올라감 => CPU의 개입 최소화
- block 단위의 수행 이후 interrupt 발생
- system bus 상에서 controller와 분리된 형태, 혹은 controller와 통합된 형태로 구현 가
Symmetric Multiprocessors
- 하나의 프로세서 => Uni processor
- 2개 이상의 비슷한 프로세서가 존재 => 단위 시간당 처리 가능 programm 양이 올라감
-> 동일한 프로세스가 존재하여 스케쥴링에 의해 대등한 일처리를 수행한다.
Advanced PIC (APIC) for SMP
PIC보다 새로운 기능 필요 -> 인터럽트를 처리할 처리기가 여러개 필요
-> 적절한 분배를 통해 프로세스를 배치해야함.
local APIC도 따로 발전
'Study > OS' 카테고리의 다른 글
[OS] Process Description and Control I (0) | 2024.04.19 |
---|---|
[OS] Operating System Overview (0) | 2024.04.18 |
[OS] Computer System Overview I (0) | 2024.04.18 |