이 글은 포스텍 김종 교수님의 컴퓨터SW시스템개론(CSED211) 강의를 기반으로 재구성한 것입니다.
이 글에서는 Storage저장매체 중 RAM과 disk에 대해 간단히 살핀다.
Random-Access Memory, RAM
RAM은 자유롭게 내용을 읽고 쓸 수 있는 저장장치이다. 최소단위는 cell이며 하나의 cell에 하나의 bit가 저장된다. 이 cell들이 모여 chip을 이루고, chip들이 모여 memory가 된다.
크게 SRAM과 DRAM으로 나뉜다. 특징으로는 전원이 꺼지면 정보를 잃어버리는 volatile휘발성 메모리이다.
Static RAM
각 cell이 4개 또는 6개의 트랜지스터를 가지고 있으며 내부 루프를 통해 값을 계속 유지시키기 때문에 전원이 유지되는 한 값이 유지되며, cell의 내용을 독립적으로 가지고 있는다. 회로가 계속 돌기 때문에 노이즈나 방사선 등에 둔감한 편이며 DRAM보다 더 빠르고 더 비싸기 때문에 주로 cache에 사용된다.
Dynamic RAM
각 cell에 축전기를 가지고 있으며 축전기를 이용해 bit를 보관하며, 한 cell에 1개의 트랜지스터가 있다. 축전기는 시간이 지나면 방전되기 때문에 지속적으로 재충전해주어야 한다. 축전기를 사용하기 때문에 SRAM보다 노이즈나 방사선 등에 더 민감하고, SRAM보다 느리고 싸다기 때문에 주로 메인 메모리에 사용된다.
Synchronous DRAM
기존 DRAM은 변화가 생기면 빠르게 연산한 후 값을 돌려주는 방식(ascynchronous)이었다면, SDRAM은 CPU의 clock signal과 동시에(scynchronous) 반응하기 때문에 더 빠르다.
Double Data-Rate Synchronous DRAM
메모리 대역폭을 2배로 늘려서 각 핀당, 각 cycle에 2개의 bit를 전송할 수 있다.
Disk Drive
Disk Drive의 구조
디스크의 구조는 위와 같다. 여러 장이 겹쳐 있는 CD를 생각하면 편하다. 얇은 원판을 platter, platter의 한 면을 surface라 하고 회전시키는 축을 spindle이라 한다. 한 장의 platter에 2개의 surface가 있다.
platter는 위 그림과 같이 생겼다. 한 surface에 수많은 track이 동심원을 이루고 있고, 각 track에는 gap으로 구분되는 sector가 있다. 각 track과 sector에는 고유 번호가 있으며 이를 통해 어디를 읽을지 결정한다.
Disk Capacity
disk capacity는 disk에 저장할 수 있는 bit의 개수이다. 몇 가지 개념들의 곱으로 이를 표현한다.
- Capacity = (# of bytes/sector) × (avg. # of sectors/track) × (# of tracks/surface) × (# of surfaces/platter) × (# of platters/disk)
- sector당 byte 개수 * track당 sector 개수 * surface당 track 개수 * platter당 surface 개수 * disk당 platter 개수 = disk capacity.
Disk 탐색 시간
platter와 별개로 disk drive에는 arm이라는 것이 존재한다. spindle과 arm이 이동하면서 arm의 위치에 해당하는 sector의 값을 읽어낸다.
이러한 구조 때문에 어떤 위치를 읽을 때 걸리는 시간은 [해당 정보가 어떤 sector에 위치해 있는지 찾는 시간] + [disk가 회전할 때 걸리는 시간] + [해당 sector를 읽는 시간]으로 표현된다.
- T$_{access}$ : 어떠한 sector를 읽는데 걸리는 시간 = T$_{avg seek}$ + T$_{avg rotation}$ + T$_{avg transfer}$
- T$_{avg seek}$ : 원하는 정보가 어떤 sector에 위치해 있는지 찾는 시간, 평균 3-9ms.
- T$_{avg rotation}$ : 현재 위치부터 해당 sector까지 disk가 회전할 때 걸리는 시간 = $\frac{1}{2} \times \frac{1}{RPM} \times \frac{60s}{1min}$
- T$_{avg transfer}$ : 해당 sector를 읽는 시간 = $\frac{1}{RPM} \times \frac{1}{\text{average number of sectors per track}} \times \frac{60s }{1min}$
- 여기서 RPM은 분당 회전수이다.
Solid State Drive, SSD
disk drive가 원판에 있는 자기 정보를 읽는 방식이었다면, SSD는 반도체에 직접 전기 정보를 저장한다. 소재의 한계로 인해 쓸 수 있는 횟수가 정해져 있다.
최소 단위는 4KB에서 512KB정도 되는 page이며, 약 32개에서 128개의 page로 이루어진 block들의 집합으로 flash memory가 구성된다. 단, 읽고 쓰는 데 최소 단위가 page이기 때문에 작은 데이터를 읽을 때 불필요한 데이터를 읽어온다.
Disk Drive에 비해 장단점은 다음과 같다.
- 장점 : disk drive는 flatter가 회전하기 때문에 소음이 있고 느리다. 반면 SSD는 그런 부분이 없기 때문에 더 빠르고 조용하다.
- 단점 : 쓸 수 있는 회수를 모두 써 버리면 더 이상 데이터를 저장할 수 없다. 또한 Disk Drive에 비해 훨씬 비싸다.
CPU와 Memory/Disk 사이에 일어나는 일
address, data, control signal들이 움직이는 통로인 bus를 통해 CPU와 RAM이 이어져 있다. CPU의 bus interface - I/O bridge - memory 이렇게 bus가 구성되어 있으며 이를 통해 메모리에 값을 읽거나 쓴다.
값을 쓸 때는 CPU가 bus에 [메모리의 어떤 주소에 값을 쓸지]를 bus에 보내면 메모리는 bus에 올라온 신호를 받고 기다린다는 신호를 보낸다. 그러면 CPU는 [메모리에 쓸 값]을 bus에 보내고, 메모리는 bus에 올라온 값을 저장한다.
값을 읽을 때는 CPU가 bus에 [메모리의 어떤 주소에 어떤 값이 있는지]를 bus에 보내면 메모리는 그 신호를 받고 해당 주소에 있는 값을 bus로 보낸다. 그러면 CPU는 bus에 올라온 값을 읽어 register에 저장한다.
'CS > OS' 카테고리의 다른 글
[컴퓨터 SW] Static Linking (0) | 2023.06.17 |
---|---|
[컴퓨터 SW] Cache와 Locality (0) | 2023.06.15 |
[컴퓨터 SW] Buffer Overflow (0) | 2023.06.11 |
[컴퓨터 SW] Array/Structure/Union의 할당과 접근 (0) | 2023.06.11 |
[컴퓨터 SW] Calling Convention (0) | 2023.06.10 |