SSD의 Nand 삭제 블록 크기를 결정하는 방법은 무엇입니까?


14

나는 최근 Crucial M500 240GB SSD (20nm NAND)를 집어 들고 파티션을 나누는 가장 좋은 방법을 찾으려고 노력하고 있습니다. 현재 fdisk -cusector에서 시작하는 중 2048입니다.

nand page size16KB 라고 생각합니다 .

나는 nand erase block size그것이 무엇인지 찾을 수 없습니다 .

누구 든지이 특정 SSD 시리즈 파티션에 대한 이것 또는 일반적인 조언에 대한 대답을 알고 있습니까?


1
드라이브를 열고 NAND 칩의 부품 번호를 검색해야 할 수도 있습니다.
LawrenceC

답변:


8

이 정보는 때때로 SSD 제조업체 사양에 게시되지만 다른 경우에는 특히 CF 또는 SD 메모리 카드에는 없습니다. Google을 사용하여 조사를 수행 한 다른 사람을 검색하는 데 부족한 경우 FlashBench를 사용하여 직접 평가 해 볼 수 있습니다. 여기에서 다운로드하십시오 : https://github.com/bradfa/flashbench

이 도구는 SSD에서 임의 읽기를 수행하고 읽기 시간을 표시하는 테이블을 플로팅합니다. (삭제 된 모든 페이지를 읽는 것은 종종 컨트롤러 칩에 의해 시뮬레이션되기 때문에 SSD에 이미 약간의 쓰기를 수행 했어야합니다.) 블록 크기별로 시간의 구분을 찾아서 지우기 블록 크기를 유추 할 수 있습니다. 다음은 샘플입니다 README.

== 지우기 블록 및 페이지 크기를 추측합니다 ==

''flashbench -a <device>''

이것은 다양한 크기의 경계에서 작은 읽기를 수행하는 간단한 읽기 전용 테스트입니다. 예:

$ sudo ./flashbench -a /dev/mmcblk0  --blocksize=1024
align 134217728 pre 735µs       on 1.08ms       post 780µs      diff 324µs
align 67108864  pre 736µs       on 1.05ms       post 763µs      diff 300µs
align 33554432  pre 722µs       on 1.04ms       post 763µs      diff 294µs
align 16777216  pre 727µs       on 1.05ms       post 772µs      diff 302µs
align 8388608   pre 724µs       on 1.04ms       post 768µs      diff 299µs
align 4194304   pre 741µs       on 1.08ms       post 788µs      diff 317µs
align 2097152   pre 745µs       on 950µs        post 811µs      diff 171µs
align 1048576   pre 745µs       on 945µs        post 807µs      diff 169µs
align 524288    pre 743µs       on 936µs        post 799µs      diff 165µs
align 262144    pre 746µs       on 948µs        post 809µs      diff 171µs
align 131072    pre 737µs       on 935µs        post 804µs      diff 165µs
align 65536     pre 735µs       on 925µs        post 796µs      diff 159µs
align 32768     pre 735µs       on 925µs        post 800µs      diff 157µs
align 16384     pre 745µs       on 911µs        post 781µs      diff 148µs
align 8192      pre 785µs       on 808µs        post 725µs      diff 53.3µs
align 4096      pre 784µs       on 788µs        post 779µs      diff 5.85µs
align 2048      pre 787µs       on 793µs        post 789µs      diff 4.65µs

이것은 2의 제곱 정렬 블록의 경계를 중심으로 2 개의 1024 바이트 읽기를 수행하는 액세스 시간을 보여줍니다. 128MB 단위의 끝 부분을 읽는 데 약 735 마이크로 초가 걸리고,이 장치의 마지막 블록을 다음 블록의 첫 번째 블록과 함께 읽는 데 약 1080 마이크로 초가 걸리고 128MB 단위의 처음 두 블록을 읽는 데 약 780 마이크로 초가 걸립니다.

여기서 가장 흥미로운 숫자는 마지막 숫자이며, 두 번째 숫자와 첫 번째와 세 번째 평균의 차이는 324 마이크로 초입니다. 이 숫자는 4MB에서 128MB 사이의 모든 장치에서 거의 동일하게 유지됩니다.

그러나 2MB에서 16KB까지 마지막 열의 값이 훨씬 낮습니다. 이것은 4MB 경계에서 메모리 카드가하는 모든 것이 다른 경계에서 발생하지 않음을 나타냅니다. 여기서 교육받은 추측은 4MB가 세그먼트 또는 할당 단위 크기라고도하는 지우기 블록 크기라는 것입니다. 이 삭제 블록 크기는이 테스트 다음에 나오는 다른 테스트에서 사용해야합니다.

마찬가지로 16KB와 8KB 경계가 모두 특별합니다. 이에 대한 논리적 설명은 카드에 8KB 페이지가 있지만 다중 평면 액세스를 사용하여 두 개의 8KB 페이지를 동시에 읽을 수 있다는 것입니다.

일부 카드는 특정 블록 크기의 액세스를 사용하여 명확한 패턴 만 표시하고 다른 카드는 패턴을 표시하지 않으므로 숫자를 다르게 결정해야합니다.

또한 완전히 지워지지 않은 카드는 미리 지워진 세그먼트의 액세스 시간이 쓰여진 것과 다르기 때문에 다른 동작을 보일 수 있습니다.


2

또 다른 시도는 실제 블록 크기의 배수 인 경계에 정렬하는 것입니다.

이 개념에서는 1MB 경계에 정렬하는 것이 가장 일반적이므로 블록 크기가 4KB인지 16KB인지는 중요하지 않습니다. 이것들은 모두 2M 이하 1M 이하의 곱셈이므로 그 경계에 정렬하면 모두 맞습니다.

그러나이 개념을 적용하는 것은 정렬하는 대상에 따라 다릅니다. 대용량 저장 장치를 시작할 때 1MB를 잃어 버리는 것은 다른 시나리오에서는 여러 번 잃어 버릴 수도 있지만 완전히 수용 할 수 있습니다.


1

지우기 블록 크기는 정렬에 영향을 미치지 않으며 M500은 가비지 수집을 지원하므로 성능에 문제가 없습니다. 마이크론 사이트에서이 PDF 의 두 번째 페이지를 참조하면 M500에 사용 된 NAND를 기준으로 지우기 블록 크기를 결정하는 데 도움이됩니다.

얼라인먼트에 관한 조언은이 환상적인 슈퍼 유저 포스트 를 확인하십시오 .

페이지의 스크린 샷은 다음과 같습니다. 여기에 이미지 설명을 입력하십시오


2
이 경우,이 다이어그램에서 소거 블록 크기는 어디에 주어 집니까?
hbogert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.