본문 바로가기
허브 살리기 프로젝트

SSD Sequantial Read/Write

by jay-choe 2024. 1. 30.

 

HDD와 SSD를 비교하는 글들을 보면 HDD는 구조상 헤드가 데이터를 읽거나 쓰는 위치로 이동하는 탐색시간 (Seek Time) 때문에 임의의 위치에 있는 데이터를 접근하려면 (Random Access) 시간이 오래 걸리며 SSD는 기계의 움직임이 없어서 더 빠르다고 한다.

 

여기서 처음 들었던 의문은 SSD는 기계의 움직임이 없으므로 Random Access나 Sequantial Access나 비슷한 시간이 걸리지 않을까? 라는 점이다.

 

하지만 SSD 제품들의 성능 지표를 보면 순차 접근과 랜덤 접근으로 나뉘어있다.

어느 한 SDD 제품의 성능 지표

 

읽기나 쓰기나 차이가 비슷하기 때문에 순차 읽기만 보면

 

우선 단위가 달라서 순차 읽기와 랜덤 읽기를 맞춰주기 위해 IOPS를 MB/S 단위로 변환해준다.

 

IOPS로 나타내는 I/O 단위는 일반적으로 4KB를 사용하기 때문에 다음의 식으로 변환할 수있다.

 

98000(Random Read IOPS) * (1024 * 4) / (1024 * 1024) = 382.8125

 

즉 98000 IOPS는 382.8125MB/s 로 변환 될 수 있다.

 

그러면 순차 읽기는 560MB/s 인데 확실히 랜덤 읽기가 느리다는 것을 SSD 성능 지표에서 볼 수 있다.

 

그렇다면 SSD에서는 왜 순차 접근이 더 빠를까?

 

해당 질문에 대해서 괜찮은 답변이 있어서 가져왔다.

 

 

 

요약하면 SSD에 있는 컨트롤러가 실제 데이터가 있는 물리 주소로 변환하는 과정에서

순차 읽기는 1번만 변환하면 이후로 데이터 사이즈만큼 접근하면 되지만 (연속 된 블록에 저장되어 있으니까)

 

랜덤 읽기는 매번 주소 변환하는 과정이 필요하다는 것이다.

 

그렇다면 주소 변환 과정의 오버헤드가 어떤식으로 존재하는지 SSD의 내부 구조를 더 살펴보도록 하자

 

 

Architecture

 

 

 

Flash Memory Package

 

 

Block & Page

 

 

위 그림에서 보는바와 같이 SSD에서는 블록과 페이지 단위로 데이터가 저장이 된다.

 

 

이를 HDD랑 연관지어보면 트랙은 블록으로 볼 수 있을 것이고, 섹터는 페이지로 볼 수 있을 것이다.

 

운영체제나 파일시스템들은 HDD에서 사용하는 섹터를 기반으로 동작을한다고 한다.

 

하지만 구조적인 문제로 SSD에서 사용하는 페이지를 섹터로 직접적으로 사용할 수 없다고 한다.

 

보는바와 같이 수행하는 작업이 섹터와 페이지 기반이 다르기 때문에 직접적으로 사용할 수 없다.

 

 

FTL(Flash Translation Layer) - 플레시 변환 계층

 

이런 문제를 해결하기 위해서 SSD는 컨트롤러 단계에서 FTL이라는 컴포넌트를 사용해 물리적인 블록과 페이지 위에 논리적인 섹터 구조를 구현하는 방식을 사용한다

 

이를 통해 기존의 섹터 기반의 파일 시스템, 운영체제, 프로그램들이 문제없이 SSD를 사용할 수 있게 만들어준다.

 

 

 

이 중간 계층에서 여러가지 역할을 하지만 확인해볼 것은 Logical to physical Mapping 이다.

즉 논리 주소를 물리 주소로 매핑하는 역할을 FTL에서 한다.

 

 

 

해당 메핑 테이블은 DRAM에 존재하며

 

이 메핑 테이블은 페이지 혹은 블록 단위로 저장한다고 한다.

 

순차적인 논리 주소 접근은 이 매핑 과정이 최적화 되어 있다고 한다.

 

순차적인 데이터 접근 시, FTL은 연속된 논리 주소가 대응하는 연속된 물리적 주소로 매핑될 가능성이 높다. 이는 매핑 과정을 단순화하고 가속화할 수 있고, 매 I/O 작업마다 별도의 매핑 조회를 수행할 필요가 줄어든다고한다.

 

물론 여러가지 다른 요소들도 있겠지만 해당 이유가 가장 와닿아서 정리했다.

 

 

 

 

참고

https://sunacom.tistory.com/128

https://www.quora.com/Why-does-sequential-write-have-better-performance-than-random-write-in-SSDs

https://cappleblog.co.kr/

https://medium.com/@develicit/ssd%EC%9D%98-%EA%B5%AC%EC%A1%B0-99afa6aba098

https://news.ycombinator.com/item?id=12162665