먼저 정리하게 된 계기는... 내가 게임(발로란트)를 D드라이브에 깔았는데 너무 느려서 확인해보니 D드라이브가 HDD여서 로딩 시간이 오래걸린 거였다.
분명히 배웠던건데 잘 기억이 안나서 다시 정리해보려한다.
HDD란?
Hard Disk Drive의 약자로, HDD는 자기 디스크(플래터)와 기계적 부품(스핀들, 헤드 등)을 이용해 데이터를 저장하고 읽는다. 데이터를 읽고 쓰기 위해 플래터가 회전하고 헤드가 움직이므로, 물리적인 동작이 포함된다.
여기서 말하는 물리적인 동작이 가장 중요한데, 이 점때문에 전기적으로 데이터를 저장하는 SSD보다 접근시간이 느려지게 된다.
다음과같은 구조로 이루어져있고, Spindle을 통해 원판이 회전하고, Disk Head를 통해 Platter위의 정보를 읽는다. Disk arm는 움직일 수 있어서 Platter가장자리 뿐만아니라 안쪽까지 데이터가 저장된다.
동작 원리
![]() |
![]() |
위와 같은 동작으로 원하는 데이터를 접근하며, Spindle을통해 원판이 회전하고, Arm를 통해 원하는 배열로 이동한다.
데이터 접근시간을 위와 같이 나타낼 수가 있는데,
앞서말한 Arm를 통한 데이터 찾는 과정을 Seek Time, 회전을 통해 데이터를 찾는 과정을 rotation Time으로 표현한다.
그리고 찾은 데이터를 전송하는 시간을 Transfer Time이라고 한다면, 이 시간들의 합이 데이터 접근시간 I/O Time이라고 할 수 있다.
특징
위와같은 물리적 특징을 이용해 효율적인 데이터 저장을 위해 몇가지 방법을 사용한다.
1. Track Screw
위와같이, 보통 데이터는 순서를 가지고 연속적으로 위치해야, 다음데이터를 빠르게 접근할 수 있다. 예를들어 1~11까지 하나의 데이터라고 하면 위와같은 구조를 가지면 Seek Time없이 Rotate 동작만을 가지고 데이터를 빠르게 읽을 수 있다.
그런데 1~12데이터를 읽는경우는 Arm을 움직여야하는 동작이 생긴다.
이 과정의 시간을 최소화하기 위해 디스크는 그대로 회전하는 상태로, Arm가 움직이는 과정을 가지게하는 것이다.
그럼 Arm가 움직이는 시간때문에 몇칸 지나있을것이다. 이때의 타이밍을 계산해 그 지점을 12로 만들어 저장하는 것을 Track Screw라고 한다.
2. Multi-zoned
이거는 별거 아니고, 물리적인 이유때문에 가장자리 트랙으로 갈수록 원주가 길어지므로 데이터를 저장할 수 있는 구역의 길이가 길어진다.
위의 그림을 보면 안쪽 트랙에는 8개의 구역이 존재하지만 동일한 간격으로 놓았을때 바깥쪽 트랙은 12개 구역을 가질 수 있다.
3. Cache
메모리에는 항상 캐시가 있는거 같다.
메인 메모리인 DRAM도 CPU의 빠른 접근을 위해 캐시가 있듯이, 디스크에서 많이 쓰는 데이터를 Cache(Track Buffer)에 저장해놓고 빠르게 접근한다.
SSD랑 RAM에 대해서도 언젠가 정리를 해보면 좋겠다.