논문 리뷰 : A SPACE-EFFICIENT FLASH TRANSLATION LAYER FOR COMPACTFLASH SYSTEMS

도건우·2024년 1월 9일

논문 리뷰 

목록 보기
5/13
post-thumbnail

제목

A SPACE-EFFICIENT FLASH TRANSLATION LAYER FOR COMPACTFLASH SYSTEMS

Abstract

Abstract

플래시 메모리는 낮은 전력 소비와 충격에 강한 특성으로 모바일 전자제품의 저장 장치로써 중요성을 갖고 있다. 하지만 플래시 메모리는 쓰기 작업 전에 지우기 작업이 선행되어야 하고, 이 작업은 쓰기 작업보다 훨씬 큰 단위에서 수행될 수 있다는 기술적인 도전에 직면했다.

이러한 기술적인 도전에 대응하기 위해 FTL이라는 중간 소프트웨어 계층이 사용되어 호스트 시스템의 논리적 주소를 플래시 메모리의 물리적 주소로 리디렉션한다.

이전 방식은 보통 쓰기 단위의 페이지와 지우기 단위의 블록으로 주소 변환을 수행했지만 본 논문에서는 두 가지 다른 단위의 주소 변환을 결합하는 FTL 설계를 제안한다.

Background

Background

플래시 메모리는 프로그래밍 명령과 데이터 주소의 시퀀스를 칩에 전달하여 데이터를 쓸 수 있다. 작은 크기와 낮은 전력 소비가 역시나 매우 중요한 장점이다. 그리고 진정한 무작위 방식으로 엑세스할 수 있다는 장점이 있기 때문에 높은 잠재력을 가지고 있다.

플래시 메모리는 읽기,쓰기, 지우기 작업의 3가지 기본 작업이 적용됩니다. 읽기 및 쓰기 작업의 단위를 페이지라고 하며, 페이지 크기에 따라 다양한 크기로 고정된다. 지우기 작업의 경우, 단위를 블록이라고 하여 일반적으로 4KB - 128KB로 설정된다.

FTL와 플래시 메모리

플래시 메모리에서는 반드시 지우기 작업이 앞서야 한다. 이는 쓰기 작업보다 큰 차원으로 오랜 시간이 소요된다는 특징이 있다. 또한 지우기 작업은 쓰기 작업보다 큰 단위에서만 수행될 수 있다. 이로 인해 잠재적인 성능이 크게 저하되며,전원이 꺼져 데이터가 손실될 수 있는 무결성 문제가 발생할 수 있다.

이로 인해 호스트와 플래시 메모리 사이 중간 소프트웨 레이어인 FTL이 도입되었다. FTL은 호스트로부터 각 쓰기 요청을 미리 지워진 플래시 메모리의 빈 위치로 리디렉션한다. 이 기술은 지우기 전에 쓰기의 제한을 해소하는데 도움이 되지만, 빈 위치를 준비하고 주소 변환 정보를 유지하기 위한 추가적인 작업과 저장 공간이 필요하다는 문제가 발생한다.

Internal organization of a CompactFlash system

CompactFlash 시스템의 내부 구조를 나타낸다. 플래시 메모리를 사용하는 메모리 카드 포맷 중 하나이다. SRAM은 주소 변환에 필요한 데이터 구조를 저장하고, 주소 변환에 사용되는 매핑 테이블 등의 정보를 보관한다.

CompatFlash 시스템은 플래시 트랜잭션 레이어 코드를 실행하는 컨트롤러를 포함한다. 이 컨트롤러는 주소 변환 및 작업을 관리한다.

블록 수준 주소 매핑에서는 논리 주소가 논리 블록 주소와 블록 오프셋으로 나누어지며, 매핑 과정에서는 논리 블록 주소만이 플래시 메모리에서 물리 블록 주소로 변환된다. 블록 수준 주소 매핑은 매핑된 물리적 블록의 오프셋이 논리 블록과 동일해야 한다는 문제가 있지만, 훨씬 작은 매핑 테이블이 필요하다는 장점이 있다.

뿐만 아니라 블록 수준 매핑 테이블의 크기는 페이지와 달리 선형적으로 증가하지 않는다. 따라서 블록 수준 주소 매핑이 메모리 사용 측면에서 효율적인 해결책이 될 수 있다.

로그 블록을 기반으로 하는 FTL 디자인

효율적인 작은 크기 쓰리 처리

작은 크기의 쓰기 작업을 효과적으로 처리할 수 있다. 쓰기 작업이 로그 블록에 순차적으로 기록되므로 플래시 메모리의 특성을 최대한 활용가능 하다.

긴 순차적인 쓰기 성능 향상

연속적인 데이터를 로그 블록에 기록하면 플래시 메모리의 성능을 최적화하고 높은 처리량을 유지할 수 있다.

작은 매핑 테이블 크기

로그 블록 스킴은 몇 개의 페이지 수준으로 관리되는 블록을 도입하여 매핑 테이블의 크기를 제한한다. 이는 SRAM 요구량을 줄여 메모리 사용 효율성을 향상시킨다.

데이터 일관성 보장

제안된 스킴은 매핑 정보의 업데이트를 단일 원자적 쓰기 작업으로 수행함으로써 전원 차단과 같은 예기치 못한 상황에서도 데이터의 일관성을 보장한다.

로그 블록

논문에서 고안된 스키마는 대부분의 블록을 블록 수준에서 관리하며, 미세한 페이지 수준에서는 소수의 고정된 블록을 관리한다. 로그 블록은 데이터 블록에 대한 작은 크기의 쓰기를 위한 임시 저장소로 사용된다. 데이터 블록의 페이지 업데이트 요청 시 미리 지워진 무료 블록 풀에서 로그 블록이 할당되고 업데이트는 로그 블록의 첫 번째 페이지부터 점진적으로 수행된다. 각 쓰기에는 페이지의 논리 주소도 연관된 각 페이지에 대한 예비 영역에 저장되기 때문에, 페이지에 대한 쓰기와 함께 예비 영역에 대한 쓰기도 추가적인 오버헤드 없이 동시에 수행될 수 있다.

각 로그 블록에 대한 페이지 수준의 매핑 테이블을 SRAM에 유지한다. 이를 통해 시스템 시작 시 각 로그 블록의 각 페이지에 대한 예비 영역에 저장된 논리 주소를 스캔하여, 각 쓰기 시에 최신 페이지를 가르키도록 업데이트한다.

병합 작업의 효율성은 블록 당 페이지 수를 기반으로 계산한다. 이 작업은 n 페이지 읽기/쓰기 작업 및 두 블록 지우기 작업이 포함된다. 이 과정은 하나의 무료 블록을 사용하여 두 개의 무료 블록을 생성하며, 이는 두 지우기 작업당 하나의 무료 블록을 생성하는 효율성을 제공한다.

병합 단계

  1. 무료 블록 풀에서 지워진 블록 할당
  2. 새 블록 각 페이지를 최신 페이지 내용으로 채움
  3. 새 블록을 업데이트된 데이터 블록으로 지정
  4. 이전 데이터 블록과 로그 블록을 무료 블록 풀로 반환

맵 블록

NAND 형식 플래시 메모리에서 몇 바이트를 읽는 비용은 전체를 읽는 비용과 동일하기 때문에 시간과 전력이 낭비된다. 그래서 매핑 테이블은 일반적으로 SRAM에 존재해야 한다.

제안한 방식에서 매핑 테이블은 빠른 시작과 온디멘드 검색을 가능케 하기 위해 맵 블록이라고 하는 전용 블록에 저장된다. 페이지 수준에서 맵 블록이 각 페이지를 매핑 테이블에 점진적 업데이트를 저장한다. 맵 디렉토리라고 부르는 것이 SRAM에 유지되며, 전통적인 페이지 테이블 구조와 유사하지만, 플래시 메모리에 저장된 매핑 테이블의 업데이트를 바로 수행할 수 없기 때문에 맵이 각 업데이트마다 변경된다는 차이가 있다.

매핑 테이블의 업데이트

업데이트 과정은 페이지를 소비하기 때문에 결국 사용된 맵 블록을 회수하는 매커니즘이 제공되어야 한다. 우리의 방식은 간단하게 맵 블록을 순환 방식으로 사용하며, 현재 사용 중인 맵 블록이 고갈되기 전에 다음 블록이 클리닝되도록 해야 한다.

고수준 트랜잭션 원자성을 하드 디스크 기반의 저장 계층에 유사하게 고려가능


결과를 통해 제안된 로그 블록 방식이 모든 경우에서 우수한 성능을 보이는 것을 확인할 수 있다.

Conclusion

  1. 로그 블록 스키마
  2. 맵 블록 도입
  3. 순차적 쓰기 최적화
  4. 웨어 레벨링 및 블록 교체

이러한 개선사항들을 통해 효과적으로 처리 및 성능 향상을 도출하였다.

0개의 댓글