Flash Translation Layer(FTL)
Host system과 I/O를 처리할 때 SSD는 flash memory의 특성이 있기 때문에 HDD와 다른 방식으로 처리해야한다.
flash memory 특징
- Asymmetric operation units (reads/writes가 blocks단위로 지우고 page 단위로 작성
- Program-after-erase property(덮어쓰기가 안됨)
- Limited flash memory lifetime(수명이 제한적임-> 아마 wear leveling관련?)
Various Functionalities(Modules) of FTL
- Address mapping
- Garbage collestion(GC)
- wear leveling //femu에서 제공하지 않음!
- Block / page alloction, bad block management
etc..
Why SSDs Need Address Mapping?
- ssd는 덮어쓸 수 없어서 clean page에 기록됨.
- write는 아무곳이나 적으면 되지만 read는 주소를 찾아야한다.
- 그래서 FTL의 address mapping table에서 정보를 갖고 있다.
Device's Physical Address
- page : 읽기 쓰기의 최소 단위 //한 줄
- PPN(Physical Page Number) : 물리적 페이지의 번호? #으로 나눈다?
- PBN(Physical Block Number) : 물리적 블럭 번호?
I/O's Logical Address
page를 모아서 block을 만들고 block을 모아서 SSD를 만든다!
- block == sector : 일반적으로 512bytes
- LBA(logical block address) : #으로 sector가 시작된다.
- I/O request에서 필요한 정보
1. type : read or write
2. address(LBA) : the starting sector #
3. size : read/write를 위한 sectors의 #
LBAs Aligned to Page Size
: page 수에 뭦춰서 LBA를 정렬하자.
- LPN(Logical Page Number) : LBA page size에 맞춰서 자른 덩어리..?
- I/O가 요청되면 LPN으로 변환하여 메모리에 접근한다.
- LPN = LBA % page_size //LBA에 주소가 있으니까?
Larger or Smaller I/O Sizes
작은 자리에 큰 값을 넣으면 쪼개서 넣고
큰 값을 작은 자리에 보내면 DRAM이 수정해주고
아무튼 읽기쓰기는 page단위라서 DRAM이 도와줄거다~..?
Mapping between LPN and PPN( Logical Page -> Physical Page)
I/O에서 LPN위치로 값을 넘겨주면 mapping table에서 ppn값을 찾고 ppn 값을 통해서 flash memory의 위치에 데이터를 전달한다.
-> clean page에만 적을 수 있으니 아무튼 업데이트도 해주면서 잘 정보를 전달해야한다.
A Read Process
1. I/O 요청을 받는다.
2. LBA를 LPN으로 변경해준다.
(LPN = LBA % page_size)
3. LPN가 PPN을 찾아준다.
4. 찾은 값을 리턴해준다.
A Write Process 1
1. LBA를 LPN으로 변환한다.
2. LPN가 PPN을 찾아준다.
3. SSD는 덮어쓰기가 안되기 때문에 PPN위치에 값이 있다면 다른 위치에 넣어준다.
4. Mapping table에 값을 새로 넣어 준 위치를 알려준다.(update)
용어 정리
-> I/O가 주는 정보는 이거?
- LBA(Logical Block Address) : Logical Block
- LPN(Logical Page Number) : Logical Page
-> ssd에 접근할 때 필요한 정보는 이거?
- PPN(Physical Page Number) : Physical Page
- PBN(Physical Block Number) : Physical Block
host system이 HDD의 형식으로 I/O를 주기 때문에 SSD는 읽을 수 있도록 FTL에서 mapping table을 사용하여 처리한다.
+ LBA 값은 어떤 형식으로 오는가? input을 받을 때는 주소는 임의 지정인가?
'아무튼 공부중 > system programing' 카테고리의 다른 글
[시프] GC from a Performance Standpoint (0) | 2023.11.02 |
---|---|
[시프] Garbage Collection (1) | 2023.11.01 |
[시프] SSD BASIC (0) | 2023.09.20 |
[시프] Storage Evaluation Methodology | Performance Metrics (0) | 2023.09.15 |
[시프]Data Stroage & I/O (0) | 2023.09.08 |