1. SSD 기본 기념 및 구조

SSD 를 파악하기 위해 개념 및 구조부터 살펴볼거다. A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation라는 킹갓휼륭하면서도, 읽기 쉬운 논문과 jasmine open ssd flatform 메뉴얼을 참고했다. 이 메뉴얼은 내 연구실 조교님이 자비롭게도 파일을 한글로 번역해줘서 우리모두 쉽게 읽을 수 있다!


1.  ssd 개념 :  요 킹갓 사진이 ssd 의 기본 구조이다. ssd 는 하드디스크와 다르게 물리적으로 움직이는 멍청한 녀석이 아니다. 얘는 태블릿pc나 휴대폰에 들어가는 flash memory의 일종으로, 허접한 하드디스크보다 빠른 uniform random access 방식을 제공한다. (NAND flash memory가 read,write 에 15~200μs (마이크로초(μs) : 1/1,000,000초)를 소모하는 데 반해 하드디스크는 10ms가 걸림) 요즘 컴퓨터 부팅속도가 현저히 빠른것은 이녀석 덕분!

그런데 이녀석은 하드웨어 구조상 기이한 특징을 가지고 있다. 그것은 write 시간이 read 시간보다 현저히 느리다는 것(bandwith problem). NAND flash memory는  1을 0으로 바꾸는 건 되도 0을 1로 바꾸는 게 안된다. 따라서 overwrite 를 하기 위해선, 먼저 지우고 다시 써야한다. 이를테면 01010111 -> 10101010 로 바꾸고 싶다면  01010111 -> 1111111 (erase) -> 10101010 의 과정을 거쳐야 한다. (Erase before Write)
문제는 read/ write 는 page단위로 이뤄지는 반면에 erase는 block 단위로 이루어진다는 것이다. (page=sector, block은 32개의 sector임) 그래서 erase 하는 데 시간 소모가 심각해부린다. 내가 읽은 논문이 바로 이 erase  과정을 조금이라도 줄이고자 이렇쿵저렇쿵 수작을 부리는 내용이다.(FAST)

2. ssd 구조 :
  1. FTL(Flash Transfer Layer)  in ROM
    1.  file system과 NAND flash memory사이의 소프트웨어 계층이다.(코드 써진 부분~)
    2. 이 녀석의 주 목적은 write 할 때 erase 과정을 조금이라도 더 줄이는 것이다. 
    3. 이 녀석은 consistency 와 uniform wear leveling 의 의무를 가지고 있다.
      1. consistency : flash memory 가 갑자기 방전되는 뭐 같은 경우에 대한 대응.
      2. uniform wear leveling : flash memory는 뭐 같은 게, erase 갯수에 제한이 있다. 한 부분만 계속 썼다 지우고, 썼다 지우고 하면 나중에 못쓰게 된다. 따라서 erase를 할 때에도 전체적으로 균일하게 해줘야한다. (block-recycling)
    4. 이 녀석은 꽤나 방대한 분량이라, 앞으로 더욱 추가해 보겠다.
  2. Mapping Table in SRAM
    1.  사실 host 는 ssd를 하드디스크와 같이 보고 logical address를 sector단위로 전달한다. FTL은  mapping table을 보고 이 주소를 flash memory의 physical address로 변환한다. 그렇다면 실제의 physical address가 왜 host가 보는 logical address와 다를까? 이는 FTL이 host의 명령 그대로 그 위치에 write를 하지 않기 때문이다. 왜? 바로 erase의 문제때문이다! 아까 말했듯이 FTL은 erase를 최소한으로 줄일 수 있도록 data 를 저장해야한다. 그러기 위해서는 host가 명령한 그 위치가 아닌, erase를 최소한으로 만들 수 있을 위치를 자체적으로 계산하여 write해야 한다는 것이다. 따라서, 이 간극을 mapping table로써 연결해 준다.
    2. 생각해보자. 만약 이 mapping table을 sector 단위로 한다면, 어떻게 될까? flash memory가 1 GB 이고,  sector size 가 512 byte 라면, 200만개의 sector에 대한 mapping table이 필요하므로, 용량이 커진다. 비싼 SRAM 에겐 너무나 버거운 일. 따라서 mapping table은  block table 도 필요하다. ( hybrid방식 , BAST)
      1. 정리하자면 sector-level mapping table 은 flexible하지만 용량이 너무 크고,
      2. block-level table은 용량이 작아지지만, overwrite가 지나칠 수 있다.(블락단위로만 움직이니까)
    3. 이 내용은 좀더 깊숙히 나중에 다시 다룰 필요가 있으니, 논문을 한바퀴 더 돌리고 와서 다시 다룬다.
  3. Controller : 컴퓨터의 cpu와 같은 녀석으로 생각하면 된다. ftl 의 코드를 실행하는 주체라 볼 수 있다. 
  4. Flash memory :  실제로 데이터가 저장되는 곳이다.










댓글

가장 많이 본 글