搜尋此網誌

2011年4月23日 星期六

[AHCI]暫存器對應表

HBA Memory Registers[譯自AHCI 1.0]


PCI Configuration Space[對於軟體開發者,黃色部分比較重要]


Start (hex)
End (hex)
Symbol Name
00
03
ID Identifiers
04
05
CMD Command Register
06
07
STS Device Status
08
08
RID Revision ID
09
0B
CC Class Codes
0C
0C
CLS Cache Line Size
0D
0D
MLT Master Latency Timer
0E
0E
HTYPE Header Type
0F
0F
BIST Built In Self Test (Optional)
10
23
BARS Other Base Address Registres (Optional)
24
27
ABAR

AHCI Base Address

2C
2F
SS Subsystem Identifiers
30
33
EROM Expansion ROM Base Address (Optional)
34
34
CAP Capabilities Pointer
3C
3D
INTR Interrupt Information
3E
3E
MGNT Min Grant (Optional)
3F
3F
MLAT Max Latency (Optional)

Start
End
Description
00h
23h
Generic Host Control
24h
9Fh
Reserved
A0h
FFh
Vendor Specific registers
100h
17Fh
Port 0 port control registers
180h
1FFh
Port 1 port control registers
200h
FFFh
(Port 2 – Port 29 port control registers)
1000h
107Fh
Port 30 port control registers
1080h
10FFh
Port 31 port control registers


3.1 Generic Host Control
接下來是HBA欄位中暫存器的應用。
Start
End
Symbol
Description
00h
03h
CAP
Host Capabilities
04h
07h
GHC
Global Host Control
08h
0Bh
IS
Interrupt Status
0Ch
0Fh
PI
Ports Implemented
10h
13h
VS
Version
14h
17h
CCC_CTL
Command Completion Coalescing Control
18h
1Bh
CCC_PORTS
Command Completion Coalsecing Ports
1Ch
1Fh
EM_LOC
Enclosure Management Location
20h
23h
EM_CTL
Enclosure Management Control

3.1.1 Offset 00h: CAP – HBA Capabilities
HBA對裝置軟體的暫存器基本功能指示。
Bit
Type
Reset
Description
31
RO
Impl.
Spec
Supports 64-bit Addressing(S64A):
30
RO
Impl.
Spec
Supports Native Command Queuing (SNCQ):
29
RO
Impl.
Spec
Supports SNotification Register (SSNTF):
28
RO
HwInit
Supports Mechanical Presence Switch(SMPS): 當設定為’1’時,在HBA它的Port支援機器存在切換,供使用在熱插拔的操作。當清除為0,不支援此函式。這值被載入經由OS初使化以前的BIOS
27
RO
HwInit
Supports Staggered Spin-up (SSS): 當設定為’1’時,在HBA它的Port支援交錯安排連結上,供使用在平衡動力尖峰。當清除為0,不支援此函式。這值被載入經由OS初使化以前的BIOS
26
RO
Impl.
Spec
Supports Aggressive Link Power Management (SALP): 當設定為’1’時,當沒有命令被處理,HBA會支援自動引發連接需求變成局部(Partial)或睡眠(Slumber)狀態。當清除為’0’,當這個功能不被支援時,軟體將PxCMD.ALPE和PxCMD.ASP位元看成保留。參考8.3.1.3章節。
25
RO
Impl.
Spec
Supports Activity LED (SAL):
24
RO
Impl.
Spec
Supports Command List Override (SCLO):
23:20
RO
Impl.
Spec
Interface Speed Support (ISS):
19
RO
0
Supports Non-Zero DMA Offsets (SNZO):
18
RO
Impl.
Spec
Supports AHCI mode only(SAM):
17
RO
Impl.
Spec
Supports Port Multiplier (SPM): 指示是否HBA可支援Port Multiplier。當被設定時,支援Port Multiplier用基本命令切換。當清除為’0’時,Port Multiplier不被支援,以及Port Multiplier可能不附屬於HBA。
16
RO
0
FIS-based Switching Supported (FBSS):
15
RO
Impl.
Spec
PIO Multiple DRQ Block (PMD):
14
RO
Impl.
Spec
Slumber State Capable (SSC):指示是否 HBA有支援轉換成睡眠(Slumber)狀態。當清除為0,軟體不允許HBA去啟動轉換成睡眠(Slumber)狀態經由有效率的連接電源管理,也不允許PxCMD.ICC區域去啟動轉換成睡眠(Slumber)狀態在每個Port,還有PxSCTL.IPM區域在每個Port必須程式不允許裝置啟動睡眠(Slumber)需求。當設定為’1’,將能夠支援HBA與裝置啟動睡眠(Slumber)。
13
RO
Impl.
Spec
Partial State Capable (PSC): 指示是否 HBA有支援轉換成局部(Partial)狀態。當清除為0,軟體不允許HBA去啟動轉換成局部(Partial)狀態經由有效率的連接電源管理,也不允許PxCMD.ICC區域去啟動轉換成睡眠(Slumber)狀態在每個Port,還有PxSCTL.IPM區域在每個Port必須程式不允許裝置啟動局部(Partial)需求。當設定為’1’,將能夠支援HBA與裝置啟動局部(Partial)。
12:08
RO
Impl.
Spec
Number of Command Slots (NCS):
07
RO
Impl.
Spec
Command Completion Coalescing Supported (CCCS): 當設定為’1’,指示HBA支援Command Completion Coalescing相同的定義在11節。當Command Completion Coalescing被支援,HBA會執行CCC_CTL與CCC_PORTS總體HBA暫存器。當清除為’0’, 指示HBA不支援Command Completion Coalescing和CCC_CTL與CCC_PORTS總體HBA暫存器不被執行。
06
RO
Impl.
Spec
Enclosure Management Supported (EMS):
05
RO
Impl.
Spec
Supports External SATA (SXS):
04:00
RO
Impl.
Spec
Number of Ports(NP):




Offset 04h: GHC – Global HBA Control
Bit
Type
Reset
Description
31
RW/RO
Impl.
Spec
AHCI Enable (AE):
30:03
RO
0
Reserved
02
RO
0
MSI Revert to Single Message (MRSM):
01
RW
0
Interrupt Enable (IE):
00
RW1
0
HBA Reset (HR):
0 = 不影響
1 = Controller和全部的Port重新Reset。


Offset 08h – Interrupt Status Register
這暫存器指示這些屬於Port內部控制器擁有中斷的判定與服務需求。
Bit Type Reset Description
31:0
RWC
0
Interrupt Pending Status (IPS): 如果設定,指示符合Port有中斷的判定。在中斷之後,軟體會使用這資訊去決定哪些Port的服務需求。
IPS[x] bit只被定義對於Port是執行狀態,或是對於命令完成組合中斷定義在CCC_CTL.INT。所有其他bit被保留。


Offset 0Ch: PI – Ports Implemented

Bit Type Reset Description
31:0
RO
HwInit
Port Implemented (PI):



3.1.5 Offset 10h: VS – AHCI Version
HBA履行支援,這暫存器指示主要的和次要的AHCI說明的版本。上層2 bytes表示主要版本編號,下層2 bytes表示次要版本編號。例如:3.12將表示如00030102h。三種有效的說明版本:0.95, 1.0, 1.1。

3.1.5.1 VS Value for 0.95 Compliant HBAs
Bit Type Reset Description
31:16
RO
0000h
Major Version Number (MJR): 指示主要版本是”0”
15:00
RO
0905h
Minor Version Number (MNR): 指示次要版本是“95”

3.1.5.2 VS Value for 1.0 Compliant HBAs
Bit Type Reset Description
31:16
RO
0001h
Major Version Number (MJR): 指示主要版本是”1”
15:00
RO
0000h
Minor Version Number (MNR): 指示次要版本是“00”

3.1.5.3 VS Value for 1.1 Compliant HBAs
Bit Type Reset Description
31:16
RO
0001h
Major Version Number (MJR): 指示主要版本是”1”
15:00
RO
0100h
Minor Version Number (MNR): 指示次要版本是“10”


3.1.6 Offset 14h: CCC_CTL – Command Completion Coalescing Control
Command Completion Coalescing控制暫存器是使用對HBA欄位設定配置Command Completion Coalescing特徵。
執行注意:HBA狀態變數(範例包含hCccComplete和hCccTimer)是使用來描述要求表面上可看見的行為。執行不是需要對內部狀態值而是直接相對應到這變數。

Bit Type Reset Description
31:16
RW
1
Timeout Value(TV): Timeout數值是詳細指示在1 millisecond間格。這計數器的準確性將是中心的5%。hCccTimer是載入這Timeout數值。在選擇的Port當Command是未完成hCccTimer是只會被減少。相同的定義在11.2節。當hCccTimer減少成0,這HBA將CCC中斷用信號發出。在每個CCC中斷言明,hCcccTimer被Reset會變成Timeout的數值。0的Timeout數值將被保留。
15:8
RW
1
Command Completions(CC): 命令完成指示之數量以至於必須去產生CCC Interrupt。hCccComplete為HBA上的一個Interrupt command completion counter。每一段時間中在這些Port只要有命令完成時hCccComplete都會有遞增。當hCccComplete等於command completions value時,CCC interrupt的信號會發出。每個CCC interrupt都會將Interrupt command completion counter重置成0。當命令完成指示之數量等於0時將Disable CCC interrupt,i.e.這個例子中,CCC interrupt只會發生於Timer。
7:3
RO
Impl
Spec
Interrupt(INT): 詳細指明中斷的使用經由CCC特徵。在對應到Ports Implemented(PI) register的bit存在設定成0時,這個中斷可能標記成未使用。此方式在控制器上CCC interrupt對應到未執行的Port interrupt。當Interrupt發生時,這IS.IPS[INT] bit將還是被設定為1。MSI這領域也詳細指明Interrupt vector的使用。
2:1
RO
0h
Reserved
0
RW
0h
Enable(EN): 當清除為’0’, Command Completion Coalescing特徵被除能與沒有CCC中斷會產生。當設定為’1’, Command Completion Coalescing特徵被致能與CCC中斷會發生基於Timeout或命令結束情況。當EN被清除成’0’,軟體將只能改變TV和CC區域內容。這bit從’0’變為’1’則進入傳送狀態,任何對於TV和CC區域數值的更新將會見效。


3.1.7 Offset 18h: CCC_PORTS – Command Completion Coalescing Ports
這Command Completion Coalescing的Port暫存器是使用去詳細指示Port,當CCC_CTL.EN = ‘1’時,是接合CCC特徵相同的Port。

Bit Type Reset Description
31:0
RW
0
Ports (PRT): 這暫存器的位元是有意義。每個bit都相對於一個各別的Port,在bit 0相對於Port 0。如果bit是設成’1’,相當於Port是Command Completion Coalescing特徵部份。如果bit是設成’0’,相當於Port不是Command Completion Coalescing特徵部份。在暫存器Bits設定成1,相對應於Port Implemented register(0x0C) bits也必須設定為1。內部一個計時器增加(1 millisecond)時,這個區域將更新數值後得到結果。



沒有留言:

張貼留言