하드 디스크 블록 모델 판독 시간 계산


8

교수님은 블록 모델을 사용하여 하드 디스크에서 데이터 검색을 계산하는 방법에 대한 슬라이드를 게시했습니다. 사양은 다음과 같습니다.

  • 7200 분당 회전 수
  • 5ms SEEK
  • 전송 속도 80MB / s
  • 블록 모델 : 블록 크기 4KB

나는 그가 어떻게 다음 계산을했는지 또는 일부 숫자의 출처를 이해하지 못합니다.

5ms + 1000/240 ms + 0.05ms = 9.216ms 블록 읽기

누구가 1000 / 240ms와 0.05ms가 어디서 왔는지 말해 줄 수 있습니까?

편집 : 숫자가 완전히 잘못 된 경우 어떻게하면됩니까?


세 가지 구성 요소가 있습니다. 검색 시간, 데이터가 판독 헤드 아래에서 회전하는 시간 (완전한 회전 시간의 절반을 평균으로 사용함) 및 전송 시간.
David Marshall

실제로 네 번째 구성 요소가 있는데, "전송 시간"은 겹치지 않는 두 가지 고유 한 작업입니다. 먼저 플래터에서 섹터 버퍼로 읽습니다. 그런 다음 드라이브 인터페이스 (예 : SATA)를 통해 섹터 버퍼에서 호스트로 다시 전송됩니다. 이 두 가지 전송이 동시에 발생할 수 있다는 오해가 널리 퍼져 있습니다. 그들은 할 수 없어. 섹터 데이터는 읽은 후 그리고 호스트로 전송되기 전에 유효성을 검사해야합니다. @Hennes는 이것을 무시 된 항목의 일부로 언급합니다.
톱밥

거의 모든 사람이 더 나은 탐색 시간을 잘 이해하지 못합니다. 탐색 시간은 선형 함수가 아니라 실린더 수에 따른 곡선입니다. 탐색 (음성 코일 액추에이터 사용)은 가속 단계와 감속 단계로 구성되며, 탐색이 충분히 길면 그 사이의 최대 속도 단계로 구성됩니다. 평균 시간이 추구 해야하는 가중치 만이 가능한 풀 스트로크 추구하지만, 2 * (NCYL-1) 단일 트랙 2 * (NCYL-2) 2 트랙이 추구 ... 그리고 NCYL "추구", 노력에 대한 계정에 헤드 이동이 필요없는 제로 시간.
톱밥

답변:


11

해당 디스크의 전송 속도는 80 MiB / s 또는 81920 kiB / s 또는 20480 블록 / s입니다. 여기에서는 교수님이 한 것처럼 보이므로 초당 20,000 블록으로 반올림합니다. 이것은 방정식의 마지막 항을 설명하면서 블록을 전송하는 데 0.05ms에 해당합니다.

마지막으로, 탐색 시간 (드라이브 헤드를 트랙으로 이동시키는 시간) 외에도 디스크 자체 의 회전 대기 시간 도 있습니다 . 최악의 경우 7200RPM에서 1 회전을 기다려야하지만 평균적으로 절반 회전 또는 4.166ms (7200RPM = 120rev / sec = 8.333ms / rev)를 기다려야합니다.

따라서 하나의 블록을 컴퓨터로 전송하려면 동등한 Seek Time+ Rotational Latency+를 기다려야합니다 Transfer Time.

5 ms + 4.166 ms + 0.05 ms = 9.216 ms

솔리드 스테이트 드라이브의 경우 고려해야 할 회전 대기 시간은 없지만 여전히 플래시 메모리에서 섹터의 내용을 처리하는 측정 시간과 전송 시간 (버스에 의해 크게 제한됨)이 여전히 있습니다 데이터 자체를 전송하는 데 사용됩니다 (예 : SATA).

따라서 일반적 으로 드라이브 의 단일 섹터 를 읽는 총 액세스 시간 은 다음과 같습니다 (소프트웨어 무시).

Rotational/Hard Drive:  Seek Time + Rotational Latency + Transfer Time

Solid-State Drive:      Seek Time + Transfer Time

5

5 밀리 하기 하드 디스크가 올바른 궤도에 머리를 이동합니다 (오른쪽 머리도 시간 만하는 당신의 교수 소요 뭔가. 무시를 선택합니다) 시간이 시간입니다 추구합니다.


헤드가 올바른 트랙 위에 있으면 올바른 섹터가 R / W 헤드 아래를 통과 할 때까지 기다려야합니다. 우리는 그것이 7200 RPM 드라이브라는 것을 알고 있습니다. 그 의미는:

  • 최악의 경우 데이터가 방금 전달되었으므로 전체 회전을 기다려야합니다.
  • 가장 좋은 경우에는 데이터 섹터가 도착한 것입니다. 모두 행복합니다.
  • 에서 평균 경우 드라이브는 반 회전을 기다릴 필요가있다.

7200 RPM 드라이브에서 전체 드라이브 회전 시간을 확보하려면 다음을 수행하십시오.

  • 분당 7200 회전 (일명 7200 RPM)
  • 또는 초당 7200/60 번.
  • 또는 초당 120 회.
  • 또는 단일 회전 얻어 1 / 120 번째 초한다.
  • 8.3 ms입니다

따라서 반 회전은 반 시간이 걸릴해야 1 / 240 번째 초한다.

1 초는 1000ms입니다

이것은 당신이다 1000 / (240) MS.


이 모든 것은 드라이브가 데이터를 읽기 시작할 때까지의 시간입니다. 여전히 그것을 읽고 호스트에게 전달해야합니다.

드라이브에서 읽는 것이 보통 전달하는 것보다 훨씬 빠르므로 느린 부분에 중점을 두겠습니다.

주어진 것은 :

1) 80 MB / s 전송 속도
2) 블록 모델 : 블록 크기 4KB

  • 1 초에 80MiB 또는 1 초에 80 * 1024 KiB 또는 4 * 20 * 1024 KiB / 초
  • 20480으로 나눕니다.
  • 당 4킬로바이트 1 / 20480 번째 초.
  • 또는 0.488281 ms, 최신 0.05 ms 입니다.


이 답변은 다음을 무시합니다.

  1. 드라이브는 데이터를 전송하기 전에 데이터를 읽어야하므로 약간 느려집니다.
  2. 그러나 플래터에서 데이터를 읽는 속도에 대한 정보는 없습니다. (이는 회전 속도, 판독 할 데이터의 길이, 체크섬 데이터의 길이 및 섹터 간 갭의 문제이다.) (4KiB는 "헤더 (header) | 갭"의 8 회 판독 또는 단일 판 독일 수있다.
  3. 또한 데이터가 이미 드라이브 캐시에있을 수 있음을 무시합니다.
  4. 그리고 체크섬을 계산하는 데 시간이 걸리지 않는다고 가정합니다.

이것은 플래터 읽기와 (인터페이스) 전송을 구분하는 디스크 전송 시간에 대한 올바른 언급을 처음 본 것입니다. "체크섬"은 실제로 짧은 버스트 오류를 감지 하고 수정할 수있는 ECC (오류 수정 코드)입니다 .
톱밥
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.