I/O 포트에 액세스하기 위해 직접 작성한 드라이버로 Windows 8 x64에서 PIO 모드로 데이터를 전송할 수 있습니다. 대상 하드 디스크 (ATA 명령 사용)의 전송 모드를 PIO 4로 설정해도 읽기 작업의 전송 속도는 1.2 MB/s를 초과하지 않습니다 (16 MB/s에서 PIO 모드 4에 도달해야 함). 이상하게도 디스크를 PIO 0 또는 1로 설정하더라도 속도는 동일하게 유지됩니다. 이것이 IDE 컨트롤러의주기 시간을 변경해야한다고 생각하게합니다. 하지만 어디? 어떤 포트입니까? 예를 들어, 두 개의 채널이있는 표준 IDE 컨트롤러가 있다고 가정하고, 채널 0, 포트 0x1F0 ~ 0x1F7, 포트 3F6에 대한 대체 상태 레지스터/장치 제어 및 포트 FFA0 ~ FFAF BusMaster에 대해 작업하고 있다고 가정 해 봅시다. PIO 4의 경우 600 ns의 PIO 0 대신 120 ns의 사이클 시간을 사용해야하지만 다른 타이밍을 설정해야하는 위치는 어디입니까? 호스트 타이밍을 설정하면 ATA 사양의 일부가 아니므로이 질문에IDE ATA 컨트롤러의 PIO주기 타이밍을 설정하는 방법은 무엇입니까?
답변
대답은 당신이 당신의 컴퓨터에있는 IDE 컨트롤러의 어떤 종류에 따라 달라집니다. 특정 예를 들어, Intel ICHx 칩 중 하나에서 내장 IDE 포트를 사용하는 경우 IDE 타이밍을 제어하는 레지스터는 컨트롤러와 연관된 PCI 구성 공간의 0x40에서 0x41 오프셋에 있습니다. 다른 여러 제조업체도 같은 목적으로이 같은 레지스터를 채택했습니다.
그래서 당신은이 레지스터에 0x33을 고집 시도하고 I/O가 가속화하면 볼 수 있습니다 - 그것은 않는 경우에, 당신은이 규칙을 처리하는 컨트롤러를 가지고있다.
0x0- IORDY는 0x1- IORDY가 0x2- IORDY가 0x3- IORDY 2 개 클럭
0X-0 tRecovery 4 클록 0X -1- tRecovery 샘플링 3 클럭으로 샘플링 4 클록 샘플링 5 개 클럭에서 샘플링 3 클럭 0x-2 복구 2 클럭 0x-3 복구 1 클럭
실제로 0x33을 사용하면 모든 최신 드라이브에서 작동합니다.
감사합니다, 당신의 대답은 정확에서 테이블에서보세요. 그러나 인텔 Serie 7 칩셋 PCH 설명서에 따르면 레지스터가 실제로 하드웨어에 아무런 영향을 미치지 않고 소프트웨어 호환성 만 위해 R/W가 유지되는 최신 인텔 PCH (ICH는 구세대)에서 발견되었습니다. – Jubba
- 1. ATA/IDE 인터럽트를 알리는 올바른 방법은 무엇입니까?
- 2. PCI IDE/(P) ATA 차이점
- 3. 컨트롤러의 기본보기를 설정하는 방법은 무엇입니까?
- 4. AngularJS에서 다른 컨트롤러의 변수를 설정하는 방법은 무엇입니까?
- 5. UINavigationController에서 루트보기 컨트롤러의 원점을 설정하는 방법은 무엇입니까?
- 6. SAPUI5에서 컨트롤러의 목록 분류기를 설정하는 방법은 무엇입니까?
- 7. 스레드 타이밍을 확인하는 방법은 무엇입니까?
- 8. ATA 명령의 직접 제어
- 9. 석영 스케쥴러 타이밍을 조정하는 방법은 무엇입니까?
- 10. 키 누르기 이벤트의 타이밍을 기록하는 방법은 무엇입니까?
- 11. abbr 태그 타이밍을 제어하는 방법은 무엇입니까?
- 12. SQL 쿼리 타이밍을 계산하는 방법은 무엇입니까?
- 13. CSS 애니메이션 타이밍을 조정하는 방법은 무엇입니까?
- 14. 안드로이드에서 실행 타이밍을 테스트하는 방법은 무엇입니까?
- 15. 텍스트/타이밍을 쉽게 선택할 수있는 C++ 코딩 환경/IDE?
- 16. IDE Aptana Studio에서 보이는 .gitignore를 설정하는 방법은 무엇입니까?
- 17. ATA TRIM 사양?
- 18. ATA 신뢰할 수있는 명령은
- 19. Ember js DS.FixtureAdapter를 사용하여 컨트롤러의 모델을 설정하는 방법은 무엇입니까?
- 20. 컨트롤러의 magento cron 작업 및 init 동작을 설정하는 방법은 무엇입니까?
- 21. 네비게이션 컨트롤러의 루트에있는 UITextField 텍스트를 설정하는 방법은 무엇입니까?
- 22. 컨트롤러의 콘텐츠 속성을 해당 경로가없는 모델 배열에 설정하는 방법은 무엇입니까?
- 23. lanvel 5.3에서 런타임시 컨트롤러의 .env에 DB_Database 필드를 설정하는 방법은 무엇입니까?
- 24. ATA 신뢰할 수있는 명령 - libata allow_tpm을 설정하는 방법
- 25. 조건부로 탐색 컨트롤러의 루트보기 컨트롤러를 설정하는 방법
- 26. 컨트롤러의 요소를 인쇄하는 방법은 무엇입니까?
- 27. Mac Os X에서 매일 셸 스크립트를 실행하거나 타이밍을 설정하는 방법은 무엇입니까?
- 28. Eclipse Scala-IDE + Spring-IDE 플러그인을 함께 사용하는 방법은 무엇입니까?
- 29. VB.NET에서 스플래시 화면의 5 초 타이밍을 설정하는 방법
- 30. 부모보기 컨트롤러의 버튼을 누르면보기 컨트롤러의 메소드를 호출하는 방법은 무엇입니까?
어떻게 측정하나요? 디스크 전송은 매우 폭발적이므로 플래터가 올바른 위치로 돌 때까지 기다려야합니다. 대기 시간을 측정하지 마십시오. –
@HansPassant 은 [링크] (http://en.wikipedia.org/wiki/Programmed_input/output) – Jubba