솔리드 스테이트 스토리지는 무엇을 추구합니까?


13

기계식 저장 장치를 사용하면 저수준 디스크 작동으로 seek()인해 하드 드라이브 헤드가 디스크의 지정된 영역에서 읽을 수 있도록 특정 위치로 이동합니다.

SD 카드, 플래시 드라이브 및 SSD와 같은 솔리드 스테이트 스토리지를 사용하면 하드웨어의 움직이는 부분이없고 전기 신호 만 있습니다.

NAND 비 휘발성 RAM 기술이 하드웨어의 기본이라고 가정하면 seek()실제로 그러한 장치의 하드웨어 수준에서 어떤 기능을 수행합니까?

분명히하기 위해 이미 다음과 같은 일이 발생한다는 것을 알고 있습니다.

  1. 사용자 공간 프로그램은 seek()시스템 호출 또는 OS 특정 기능을 호출합니다.

  2. 커널은 시스템 호출을 해석하고 SATA 컨트롤러에 메시지를 보내

  3. SATA 컨트롤러는 명령을 해석하고 솔리드 스테이트 인 연결된 디스크 장치에 문의하도록 지시합니다 (또는 솔리드 스테이트임을 인식하지 못하거나 지시조차하지 않는 것이 좋습니다).

  4. 어떻게 하지 않는 고체 상태 장치는 않습니다, 알고있다 ??? "찾기"명령으로

운영 체제에 따라 다른 세부 정보가있는 경우 커널 버전 3.2를 사용하는 상대적으로 표준 데스크탑 버전의 GNU / Linux로 가정하십시오.


2
나는 그것이 큰 지방 NOP를한다고 생각합니다. 농담으로, SSD 드라이브라면 가능한 한 빨리 일이 일어나도록하기 위해 캐시에 "예방 적"판독을하겠습니다. 그러나 이것은 내가 조금이라도 알지 못하는 것에 대한 모호한 추측 일 뿐이므로, 소금 한
알로 가져 가십시오

"검색"작업이 더 이상 저수준 스토리지 인터페이스에서 사용되지 않는다고 생각합니다. 존재하는 경우 다음 I / O 작업을 위해 저장된 위치 만 변경하면됩니다.
David Schwartz

답변:


4

리눅스를 언급한다면, 탐색은 여전히 ​​필요한 바이트 수만큼 앞으로 나아갑니다. 예를 들면 다음과 같습니다.

dd if=/dev/zero of=/dev/sdb bs=512 SEEK=2

디스크 시작 부분에 1024 바이트를 0으로 복사하기 시작합니다. sdb가 sd 카드인지 ssd 드라이브인지는 중요하지 않습니다. 추상화 라는 작은 것 때문에 실제 메커니즘은 하위 수준에서 처리됩니다.

최신 정보

지금 무슨 말을하는지 봅니다. 내 sd 카드 예제에 따라 플래시 메모리는 pages 라는 것을 사용하며 페이지 는 특정 크기로 제공됩니다. 탐색이 이루어지면 OS는 명령을 sd 카드 / 카드 컨트롤러로 보내 읽기 및 쓰기를 위해 특정 페이지 로 이동합니다 .


파일에서 논리적으로 진행 되지만 추상적 인 "블록"이라는 관점에서 파일에 대한 논리적 영향을 제외하고는 하드웨어가 실제로 검색하라는 지시를받을 때 다른 작업을 수행합니까? lseek()필요한 경우 시스템 호출을 특정 예로 볼 수 있습니다 . 이 시스템 호출은 논리적 검색을 수행 할뿐만 아니라 기계식 디스크를 처리 할 때 HDD 헤드가 움직이게하므로 SSD의 기능은 무엇입니까?
allquixotic

@allquixotic 내 답변을 업데이트했습니다.
MDMoore313

1
물리적으로 회전하는 하드 드라이브에서도 OS는 LBA X를 얻기 위해 드라이브에 명령 (SCSI 명령, ATA / SATA 명령 또는 USB 대용량 저장 명령)을 보냅니다. 호스트는 실제로 드라이브를 어떤 레벨이든 드라이브의 펌웨어가 그렇게합니다. 스토리지 명령에 대한 응답으로 SSD 펌웨어의 기능에 대한 아이디어가 필요하면 Jasmine OpenSSD 프로젝트의 사양을 찾아보십시오.이 중 일부는 매우 낮은 수준의 설명입니다.
LawrenceC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.