我可以在Windows 8 x64下以PIO模式傳輸數據,並使用我自己寫入的驅動程序訪問I/O端口。即使我將目標硬盤的傳輸模式(使用ATA命令)設置爲PIO 4,傳輸速度(讀取操作的速度)也不會超過1.2 MB/s(超出PIO模式的〜16 MB/s 4應達到)。奇怪的是,即使我將磁盤設置爲PIO 0或1,速度仍然相同。 這就是我認爲必須改變IDE控制器週期時間的原因。但是哪裏?哪個港口?比方說,我有一個標準的IDE控制器,有兩個通道,我正在處理通道0,ATA寄存器的端口0x1F0到0x1F7,備用狀態寄存器/設備控制的端口3F6以及BusMaster的端口FFA0到FFAF。我知道對於PIO 4,我應該使用120 ns的週期時間,而不是PIO 0的600 ns,但是,我應該在哪裏設置不同的時序?如何設置IDE ATA控制器的PIO週期時序?
2
A
回答
1
這個問題的答案取決於你的機器有什麼樣的IDE控制器,因爲設置主機時序不是ATA規範的一部分。例如,如果您在其中一個Intel ICHx芯片上使用內置IDE端口,則控制IDE時序的寄存器在與控制器相關的PCI配置空間中的偏移量爲0x40至0x41。其他幾家製造商也爲了同樣的目的採用了這個相同的註冊表。所以你可以試着在這個寄存器中加入0x33,看看I/O速度是否會加快 - 如果是,那麼你就有一個控制器來處理這個約定。
0x0- IORDY在5個時鐘 0x1- IORDY在4個時鐘 0x2- IORDY在3個時鐘 0x3- IORDY在2個時鐘
0X-0 tRecovery 4個時鐘 0X-1 tRecovery採樣採樣採樣採樣3時鐘 0x-2 t恢復2時鐘 0x-3 t恢復1時鐘
實際上,使用0x33應該適用於任何現代驅動器。
+0
謝謝,你的回答是正確的。然而,我發現在現代英特爾PCH(ICH是老一代)中,按照英特爾Serie 7芯片組PCH文檔進行註冊,實際上對硬件沒有任何影響,並且僅在軟件兼容性方面保持R/W。 – Jubba 2013-04-06 13:08:45
相關問題
- 1. PCI IDE /(P)ATA差異
- 2. 視圖控制器生命週期
- 3. WebApi控制器生命週期
- 4. ASP.NET MVC控制器生命週期
- 5. 如何在Firebase JobDispatcher中設置週期性任務的週期?
- 6. Rails控制器生命週期
- 7. JQuery的週期,如何設置過渡
- 8. 如何在iphone中設置NSTimeZone日期選擇器控制器
- 9. 如何設置控制器的佈局
- 10. ASP.NET MVC控制器廠生命週期
- 11. 控制器生命週期角度
- 12. 你如何控制Rook服務器的生命週期?
- 13. 控制器中的Rails設置超時
- 14. Swing應用程序中控制器的生命週期
- 15. 如何在控制器中設置到會話的到期時間?
- 16. 如何設置PdfSharp控制器
- 17. 如何設置根視圖控制器
- 18. 設置導航控制器時,根視圖控制器始終設置爲tableViewController
- 19. 如何在控制器中設置定時器?
- 20. 如何在MATLAB中爲週期值設置限制?
- 21. 如何設置控制器的默認區域設置
- 22. 如何將MFC時間/日期控制設置爲24小時制
- 23. ATA值得信賴的命令 - 如何設置libata allow_tpm
- 24. 設置控制器動作超時
- 25. DHTMLX調度器週期性事件控制器代碼
- 26. 如何設置使用Android周視圖時的滾動限制
- 27. 如何在WPF運行時在控件周圍設置邊框?
- 28. AngularJS控制器的生命週期是什麼?
- 29. python中的週期性定時器,小週期
- 30. 定製週期時間
你如何衡量這一點?磁盤傳輸非常突然,您必須等到磁盤旋轉到正確的位置。不要測量延遲。 – 2013-02-20 15:20:36
@HansPassant 看看[鏈接]表格(http://en.wikipedia.org/wiki/Programmed_input/output) – Jubba 2013-02-20 15:29:24