I/O ポートにアクセスするために自分で作成したドライバーを使用して、Windows 8 x64 で PIO モードでデータを転送できます。(ATA コマンドを使用して) ターゲット ハードディスクの転送モードを PIO 4 に設定しても、(読み取り操作の) 転送速度は 1.2 MB/s を超えません (PIO モードの最大 16 MB/s のうち)。 4に到達する必要があります)。奇妙なことに、ディスクを PIO 0 または 1 に設定しても、速度は同じままです。これが、IDE コントローラのサイクル タイムを変更する必要があると思わせる理由です。しかしここで?どのポートですか? 2 つのチャネルを備えた標準 IDE コントローラがあり、チャネル 0、ATA レジスタ用のポート 0x1F0 から 0x1F7、代替ステータス レジスタ/デバイス制御用のポート 3F6、および BusMaster 用のポート FFA0 から FFAF で作業しているとします。PIO 4 では、PIO 0 の 600 ns の代わりに 120 ns のサイクル時間を使用する必要があることはわかっていますが、
1 に答える
1
ホスト タイミングの設定は ATA 仕様の一部ではないため、この質問に対する答えは、マシンに搭載されている IDE コントローラーの種類によって異なります。具体的な例として、Intel ICHx チップの 1 つで組み込み IDE ポートを使用している場合、IDE タイミングを制御するレジスタは、コントローラーに関連付けられた PCI 構成空間のオフセット 0x40 から 0x41 にあります。他のいくつかのメーカーも、同じ目的でこの同じレジスターを採用しています。
したがって、このレジスタに 0x33 を設定してみて、I/O が高速化するかどうかを確認できます。高速化されている場合は、この規則を処理するコントローラーが用意されています。
0x0- 5 クロックでサンプリングされた IORDY 0x1- 4 クロックでサンプリングされた IORDY 0x2- 3 クロックでサンプリングされた IORDY 0x3- 2 クロックでサンプリングされた IORDY
0x-0 tRecovery 4 クロック 0x-1 tRecovery 3 クロック 0x-2 tRecovery 2 クロック 0x-3 tRecovery 1 クロック
実際には、0x33 を使用すると、最新のドライブで動作するはずです。
于 2013-04-06T12:38:06.947 に答える