아무튼 공부중/system programing

[시프] Address Mapping

멍정 2023. 11. 1. 17:06

Flash Translation Layer(FTL)

Host system과 I/O를 처리할 때 SSD는 flash memory의 특성이 있기 때문에 HDD와 다른 방식으로 처리해야한다.

FTL을 거쳐서 I/O를 처리한다

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을 받을 때는 주소는 임의 지정인가?