π ΠΡΠ°ΡΠΊΠΎ
AHCI (Advanced Host Controller Interface) β ΡΡΠ°Π½Π΄Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ SATA-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠΌ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ DMA.
π§ ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
AHCI ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ΅Π³ΠΈΡΡΡΡ, ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° SATA. Π―Π²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΡΡΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρ Disk Controller ΠΈ OS kernel, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΠ‘ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π΄ΠΈΡΠΊΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
- NCQ (Native Command Queuing)
- Hot plug (Π³ΠΎΡΡΡΠ΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ SATA-ΡΡΡΡΠΎΠΉΡΡΠ²)
- DMA-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π΄Π°Π½Π½ΡΡ
- Π£ΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΈ BIOS
Π Π°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ²Π΅ΡΡ PCI/PCIe ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· HBA (Host Bus Adapter).
βοΈ ΠΠ΄Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ
Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|
SSD | ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΠ‘ |
UEFI | ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ² Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ AHCI |
Windows | Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π΄ΠΈΡΠΊΠΎΠ² |
Desktops | ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π³ΠΎΡΡΡΠ΅ΠΉ Π·Π°ΠΌΠ΅Π½Ρ ΠΈ NCQ |
π» ΠΡΠΈΠΌΠ΅Ρ (ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ Π½Π° ΡΡΠΎΠ²Π½Π΅ OS/driver)
// ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΡΠ° AHCI
ahci_port->cmd = 0x1; // Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ
ahci_port->ci |= (1 << slot); // ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ»ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
π§© ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ
Π‘ΡΡΡΠΊΡΡΡΠ° | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|
HBA Memory Registers | Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°ΠΌΠΈ, ΡΡΠ°ΡΡΡΠ°ΠΌΠΈ, Π±ΡΡΠ΅ΡΠ°ΠΌΠΈ |
Command List | ΠΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠΎΠΌΠ°Π½Π΄ (NCQ) |
Command Table | ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ DMA |
Received FIS | ΠΡΠ²Π΅ΡΡ ΠΎΡ Π΄ΠΈΡΠΊΠ° (Frame Information Structure) |
Ports (0β31) | ΠΠΎ 32 ΠΏΠΎΠ΄ΠΊΠ»ΡΡΡΠ½Π½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² |
π Π‘Ρ Π΅ΠΌΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ
+-----------+ +---------+ +------------+
| OS | β DMA | HBA | β FIS | SATA Disk |
| Driver | | (AHCI) | | (HDD/SSD) |
+-----------+ +---------+ +------------+
β ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
-
Π‘ΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ SATA-Π΄ΠΈΡΠΊΠ°ΠΌ
-
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ (NCQ), DMA, Π³ΠΎΡΡΡΠ΅ΠΉ Π·Π°ΠΌΠ΅Π½Ρ
-
Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΠΠ‘ ΠΈ BIOS
β ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
-
ΠΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ SSD: Π²ΡΡΠΎΠΊΠΈΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΈ ΡΠ·ΠΊΠ°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ
-
Π£ΡΡΠ°ΡΠ΅Π²Π°Π½ΠΈΠ΅: Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ NVMe Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
-
ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π½ΠΎΡΡΠ±ΡΠΊΠ°Ρ )