nVidia GPU内部控制文档.docx
《nVidia GPU内部控制文档.docx》由会员分享,可在线阅读,更多相关《nVidia GPU内部控制文档.docx(87页珍藏版)》请在冰豆网上搜索。
nVidiaGPU内部控制文档
ftp:
//
open-gpu-doc
DeviceControlBlock4.0Specification
Purpose
DeviceControlBlocks(DCBs)arestatictablesusedtodescribetheboardtopologyandconnectionsexternaltotheGPUchip.
Eachboardbuilthasspecificadditionstothecapabilitiesthroughexternaldevices,aswellaslimitationswhereoutputlinesarenotlinkedtodeviceconnectors.DCBsdefinethedevicesconnected,specificinformationneededtoconfigurethosedevices,andtheexternalelectricalconnectionssuchasHDMIandDisplayPort.
DCBsdonottrytoexplainthecapabilitiesofthechipitself.ThatinformationisimplicitintheVBIOS,firmwareanddrivers,whicharebuiltdifferentlyforeachchip.Boththefirmwareandthedriversknowtheinherentcapabilityofeachchip,anduseruntimechoicestodeterminechipdependentcodepaths.
DCBversionanduse
∙DCB1.xisusedwithCore3VBIOS(NV5,NV10,NV11,NV15,NV20).
∙DCB2.x(2.0-2.4)isusedwithCore4andCore4r2VBIOS(NV17,NV25,NV28,NV3x).
∙DCB3.0isusedwithCore5VBIOS(NV4x,G7x).
∙DCB4.0isusedwithCore6,Core7,andCore8VBIOS(G80+).
DeviceControlBlockStructure
The4.0DCBDataStructureconsistsofthefollowingparts:
∙Header-Theversionnumber(0x40forVersion4.0),theheadersize,thesizeofeachDCBEntry(currently8bytes),thenumberofvalidDCBEntries,pointerstodifferenttables,andtheDCBsignature.IfanyofthepointershereareNULL,thenthosetablesareconsideredtobeabsentorinvalid.
∙Deviceentrieslist-Oneforeachdisplayconnector(twoforDVI-Iconnectors).Eachdeviceentryissubdividedintotwomainparts:
DisplayPathInformationandDeviceSpecificInformation.
DeviceControlBlockHeader
Table1.DeviceControlBlockHeader
Name
Bitwidth
Optional/Mandatory
ValuesandMeaning
Version
8
O
Version#oftheDCBHeaderandEntries.DCB4.0willstartwithavalueof0x40here.AversionnumberofzerodirectsthedrivertouseaninternalDCBtable.
HeaderSize
8
M
SizeoftheDCBHeaderinBytes.Forv4.0thiswillbe27bytes.
EntryCount
8
M
NumberofDCBDeviceEntriesimmediatelyfollowingthistable.
EntrySize
8
M
SizeofEachEntryinbytes.WiththestartofDCB4.0,thisfieldshouldbe8.
CommunicationsControlBlockPointer
16
M
PointertotheCommunicationsControlBlock.Inv3.0thiswastheI2CControlBlockPointer.
DCBSignature
32
M
DCBsignature=0x4EDCBDCB.ThisisusedtotellavalidDCBfromaninvalidone.
GPIOAssignmentTablePointer
16
M
PointertotheGPIOAssignmentTable.
InputDevicesTablePointer
16
O
PointertotheInputDevicesTable.
PersonalCinemaTablePointer
16
O
PointertothePersonalCinemaTable.
SpreadSpectrumTablePointer
16
O
PointertotheSpreadSpectrumTable.
I2CDevicesTablePointer
16
O
PointertotheI2CDevicesTable.
ConnectorTablePointer
16
M
PointertotheConnectorTable.
Flags
8
M
SeeDCBFlagsbelow
HDTVTranslationTablePointer
16
O
PointertotheHDTVTranslationTable.Thisstructureisoptional.Ifthestructureisnotneeded,thenthispointercanbesetto0.
SwitchedOutputsTablePointer
16
O
PointertotheSwitchedOutputsTable.Thisstructureisoptional.
An"optional"tablepointerorfieldmaybesettozerotoindicatethatnotableispresent.Ifthestructureisnotneeded,thenthispointercanbesetto0.
Note
Throughoutthisdocument,a"pointer"meansabyteoffsetrelativetothestartoftheVBIOSimage.
DCBFlags
Eachbitflaghasadifferentmeaning.Allundefinedbitsarereservedandmustbesetto0.
DCBFlagBits
∙Bit0-BootDisplayCount:
o0-Only1bootdisplayisallowed.
o1-2bootdisplaysareallowed.
Thesenext2bitsareallusedforVIPconnections.
∙Bits5:
4-VIPlocation.Possiblevaluesare:
o00b-NoVIP.
o01b-VIPisonPinSetA.
o10b-VIPisonPinSetB.
o11b-Reserved
Thesenext2bitsareusedforDistributedRendering(DR)configuration.
∙Bit6-AllcapableDRports:
PinSetA:
o1-PinSetAisroutedtoaSLIFinger.
o0-PinSetAisnotattached.
∙Bit7-AllcapableDRPorts:
PinSetB:
o1-PinSetBisroutedtoaSLIFinger.
o0-PinSetBisnotattached.
Note
APIORportcannotbeusedbothasaDistributedRenderingconnectionandasanOutputDisplayatthesametime.
DCBHeaderVersion4.0Sizes
Thev4.0DCBheaderhasaddedfieldsovertime.
DATE
NewSize
LastInclusiveField
Start
23Bytes
Flags
08-02-06
25Bytes
DCB3.0,HDTVTranslationTablePointer
11-07-06
27Bytes
SwitchedOutputsTablePointer
DCBDeviceEntries
ADCBdeviceentryis64bitswide,twodoublewords.Thefirst32bits,DisplayPathInformation,containthemainroutinginformation.Theirformatiscommontoalldevices.Thesecond32bits,DeviceSpecificInformation,areinterpretedbasedontheTypefieldfromtheDisplayPathInformation.
Thereisonedeviceentryforeachoutputdisplaypath.ThenumberofDCBentriesislistedintheDCBHeader.
Note
ForDVI-Iconnectorstherearetwoentries:
onefortheCRTandonefortheLCD.ThetwodeviceentriessharethesameI2Cport.
DeviceEntriesarelistedinorderofbootpriority.TheVBIOScodewilliteratethroughtheDCBentriesandifadeviceisfound,thenthatdevicewillbeconfigured.Ifnot,theVBIOSmovestothenextindexintheDCB.Ifnodeviceisfound,thefirstCRTonthelistshouldbechosen.
GPUsearlierthanG80havea"mirrormode"featurethatenablesuptotwodisplaydevicestobeenabledbytheVBIOS,andcontrolledthroughthesameVGAregisters.G80andlaterdisplayhardwareonlysupportsonedisplayinVGAmode,andtheVBIOSwillonlyenableonedisplaydevice.
WhenDeviceEntriesarelisted,itisnotallowedtohavetwoentriesforthesameoutputdevice.
DisplayPathInformation
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Rsvd
VD
OutputDevices
BBDR
BDR
Loc
Bus
Connector
Head
EDIDPort
Type
Name
Bitwidth
ValuesandMeaning
Type
4
Displaytype.
EDID
4
EDIDPort.
Head
4
Headbitmask.
Con
4
Connectortableentryindex.
Bus
4
Logicalbus,usedformutualexclusion.
Loc
2
Locationofthefinalstagedevices,on-chiporoff-chip.
BDR
1
Disablesthisasabootdisplayifset.
BBDR
1
Ifset,disablestheabilitytobootifnotdisplayisdetected.
VD
1
Indicatesthisisavirtualdevice.
Rsvd
3
Reserved,setto0.
Type
ThisfielddefinestheTypeofthedisplayusedonthisdisplaypath.Currentlydefinedvaluesare:
∙0=CRT
∙1=TV
∙2=TMDS
∙3=LVDS
∙4=Reserved
∙5=SDI
∙6=DisplayPort
∙E=EOL(EndofLine)-ThissignalstheSWtostopparsinganymoreentries.
∙F=SkipEntry-ThisallowsquickremovalofentriesfromDCB.
EDIDPort
EachnumberreferstoanentryintheCommunicationsControlBlockStructurethatrepresentstheporttouseinordertoquerytheEDID.ThisnumbercannotbeequaltoorgreaterthantheCommunicationControlBlockHeader’sEntryCountvalue,exceptiftheEDIDisnotretrievedviaDDC(overI2CorDPAux).
ForDFPs,iftheEDIDsourceissettostrapsorSBIOS,thenthisfieldmustbesetto0xFtoindicatethatwearenotusingaCommunicationsControlBlockportforthisdevicetogettheEDID.
HeadBitmask
Eachbitdefinestheabilityofthatheadwiththisdevice.
∙Bit0=Head0
∙Bit1=Head1
∙Bit2=Head2
∙Bit3=Head3
GPUsbeforeGK107onlysupporttwoheads.Forthosedevices,bits2and3shouldalwaysbezero.
ConnectorIndex
ThisfieldsignifiesaspecificentryintheConnectorTable.MorethanoneDCBdevicecanhavethesameConnectorIndex.ThisnumbercannotbeequaltoorgreaterthantheConnectorTableHeader’sEntryCountvalue.
Note
IftwoDCBentrieshavethesameConnectorIndex,thatstillallowsthemtobedisplayedatthesametime.Topreventcombinationsbasedontheconnector,usetheBusfield.
Bus
Thisfieldonlyallowsforlogicalmutualexclusionofdevicessothattheycannotdisplaysimultaneously.Thedriverusesthisfieldtodisallowtheuseofacombinationoftwodevicesiftheysharethesamebusnumber.
Location
Thisfieldshowsthelocationofthelastoutputdevicebeforethedataissentofffromourboardtothedisplay.
Currentlydefinedvaluesare:
∙0=OnChip(internal)TVencoder,internalTMDSencoder
∙1=OnBoard(external)DAC,externalTMDSencoder
∙2=Reserved.
BootDeviceRemoved
∙0=Thisdeviceisallowedtobootifdetected.
∙1=Thisdeviceisnotallowedtoboot,evenifdetected.
BlindBootDeviceRemoved
∙0=Thisdeviceisallowedtobootifnodevicesaredetected.
∙1=Thisdeviceisnotallowedtobootifnodevicesaredetected.
DAC/SOR/PIORAssignment(OutputResource)
EachbitdefinestheuseofthisconnectorwithaDACforinternalCRTsandTVs,anSORforinternalDFPs,andaPIORforexternaldeviceslikeTMDS,SDIorTVEncoders.
Currentlydefinedvaluesare:
∙Bit0=DAC0,SOR0,orPIOR0
∙Bit1=DAC1,SOR1,orPIOR1
∙Bit2=DAC2,SOR2,orPIOR2
∙Bit3=DAC3,SOR3,orPIOR3
VirtualDevice
∙0=Thisisaphysicaldevice.
∙1=Thisisavirtualdevice.
Virtualdevicesareusedonlyforremotedesktoprendering.Whensetto1,EDIDPortshouldbesetto0xF(unused)andtheConnectorIndexshouldreferenceanentrywithType="SkipEntry".
ExtraInformation
TheBUSfieldmayreflectonlyalogicallimitationofthebuses.Itcandescribeanactualphysicallimitation,oritmaybesolelyawaytoremovethecombinationb