Quantcast Laptop Forums and Notebook Computer Discussion - View Single Post - DIY eGPU experiences
View Single Post
Old 04-14-2010, 03:50 PM   #455 (permalink)
nando4
Kopi Luwak Cafe
 
nando4's Avatar
 
Join Date: Dec 2008
Location: YellowBrickRd.AU
Posts: 7,427
Rep Power: 41 nando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond repute
Default Re: DIY ViDock Experiences

x1E/x2E tweak mode on Intel chipsets gain 15-30% performance on odd numbered ports using ATI cards or older NVidia cards (GTX4xx is not affected)

NOTICE: ATI or older NVidia cards using Intel notebook chipsets' mPCIe/expresscard x1 1.0 are underperforming by 15-30%. NVidia's latest GTX4xx cards are not affected as shown here.

Affected Systems: Intel ICH7/8/9M I/O-equipped chipsets below. Video cards tested: ATi HD5750 below and nVidia 9800GT. GTX4xx cards are NOT affected nor are AMD/NVidia chipsets so this problem is because of ATI/NVidia x1 1.0 pci-e handshaking implementation. series-5 chipsets do not see any performance improvement with the tweak below as documented in the DV4-2000+HD5750 implementation.

RECOMMEND: escalate the issue to ATI/NVidia to get a solution. The problem has also been logged on Intel's community support page here and ATI's forum here.

Using ATI cards or older NVidia cards on Intel I/O chipsets' x1 1.0 pci-e ports has handicapped performance requiring setting it to x2 width to get a 15-30% performance improvement. This workaround applies only if the port used for the eGPU occupies an odd numbered port. It would appear that the these older ATI/NVidia cards may be running half-duplex, requiring setting it to x2 width to get the full x1 1.0 bandwidth.

The Nvidia MCP79 chipset based Dell XPS M1340 benchmarks here blitzes all the Intel machines at x1 1.0 speed. It gets full x1 1.0 bandwidth.

The tweak discovered to enable full x1 1.0 speed on a Intel pci-e port requires the mPCIe or expresscard to be an odd numbered port with no device on the next sequential port, eg: port1/port3/port5 with no device on port2/port4/port6. I'm calling this x1E mode, the "E" standing for Intel-Enhanced.

x2E being similar but requires a port1+port2 setup, with either lane3 or lane4 or both having NO physical device attached to them. port1 is set to x4 mode, running with only the first 2 lanes. x2E also offering 15-30% faster performance than x2 alone.

NOTE: if x1E is enabled on port3 or port5, the effect is the same as when x2 is engaged on them - port1 or port3 respectively will also be switched to x2 which in turn render the port2 or/and port4 non-operational.

Background

With the arrival of a PE4H V2 I attempted a x2/x4 link with the DV4, port layout here, hoping that Intel had made a mistake somewhere and I could link say port1+port3 as a dumbed down x4 link working in x2 1.0 mode. It didn't work.

During the testing however a very unusual performance increase was observed. I had set port1 into x2 width and was seeing ~20% better performance. That is *without* connecting a second lane. The 3dmark06 values don't look much different, but delve deeper and see the DV4's SM3.0 value of 3dmark06 has increased from 4344 to 5247 and is *higher* than the i7-620M+HD5750 x1 1.0 implementation's 5085. SM3.0 correlates directly to 3D gaming performance. The RE5 benchmarks improve considerably, dmcv4 dx9 sees a 30% improvement!! In case you were wondering, does setting port1 to be an x4 port with only the single lane connected see any further performance? The answer is no.. it does not.

x2 versus x1E versus x1 link speed, 2GB HD4870 versus 1GB HD5750

See also x1E versus x1 benchmarking and here and here (nVidia).

SystemRAMGPU3dmarkRE5 (*=dx10)dmcv4.scene4PCIScript^2PortsOS
06vant.gvarfixeddx9dx10
T2050-1.6 HP DV2000^13.0HD5750@x267355579 +38.5*18.3*60.155.4Setup 1.xICH7MWin7/32
HD4870.2GB@x26710549940.2*18.1*58.751.9ICH7M
P8600-2.4 HP Pav_DV44.0HD5750@x1E10151 &521564.0 &35.0 &66.3 &
41.8-ICH9MWin7/64RC1
T6600-2.2 Dell Insp_14404.09551 &500460.9 &30.8 &66.7 &42.1 &-ICH9MWin7/32
HD4870.2GB@x1E9188548657.031.251.443.6-
T2050-1.6 HP DV2000^13.0HD5750@x1E66944903 +34.6*17.0*59.943.7-ICH7MWin7/32
P8600-2.4 HP Pav_DV44.0HD5750@x19461 &480552.8 &26.0 &41.7 &36.4 &-ICH9MWin7/64RC1
T6600-2.2 Dell Insp_14404.08997 &443251.6 &25.7 &44.7 &38.0 &-ICH9MWin7/32
HD4870.2GB@x17913457642.422.734.932.1--
T2050-1.6 HP DV2000^13.0HD5750@x165604219 +33.2*16.2*43.836.7-ICH7MWin7/32

&=overclocked HD5750 from 700/1150 to 790/1430
^1 port3 required mPCIe socket to be soldered onto systemboard's pads marked MINI2
^2 only first instance of PCIScript shown, duplicates per system have been removed.
Bold - benchmarking showing x2's superior performance even with a greatly inferior CPU


About HD5750 versus HD4870

We see the HD5xxx series has made more inroads at minimising pci-e bandwidth since the HD5750 outperforms the HD4870 in virtually all cases, particularly on low x1 1.0 bandwith setups. This contradicts what we'd expect. x16 2.0 benchmarks results indicate a HD4870 to be onpar to a HD5770 as shown here.

It is not clear then if 2GB VRAM does have any bandwidth sparing effects as I have suggested in my posts. Would need a direct comparison of the same series card (eg: 1GB HD4870 versus 2GB HD4870 or 1GB HD5850 versus 2GB HD5850) to see how much extra performance 2GB VRAM provides.

Overall I would advise against a HD4xxx card in favor of a more pci-e bandwidth efficient HD5xxx card.

How can I switch my port into x1E mode?

This requires an accessible odd numbered mPCIe or expresscard port with no device connected to a next even port as otherwise it won't work [port1 for DV4, port5 for Inspiron 1440]. If you have limited options, with perhaps a LAN card or some other device occupying a next even port, consider finding the datasheet to figure how to disable it. Or else if can identify Vcc power pin to the chip, it could be possible to do a cut the pin to disconnect it from being on the PCI bus. I really wanted to see if x1E could work on port3 of the DV4 since it's the more convenient expresscard slot, but the LAN card on port4 prevented that. I attempted to write 00 data to the LAN card's PCI space to try to disable it the device was still active. So x1E is only possible on the mPCIe port1 on the DV4.

The no-brainer solution is to use the DIY eGPU Setup USB Bootdisk to switch your port to x2 via the menus, or using 'iport x2 [port]' at the commandline.

Spoiler below details what 'iport x2' does which can be implemented using the older DIY ViDock bootdisk or, if you really want to not use the 'iport' command then can do this manual way using the new DIY eGPU Setup 1.x
Spoiler :
1. Identify RCBA address of your system using .
Quote:
setpci -s 0:1f.0 f0.l
Disregard the trailing 1 treating it as zero. Eg: if setpci returns 0xFED18001 then RCBA is 0xFED18000. This can be done using Baredit in Windows as shown here.

2. If your bios has a next even *enabled* port, (eg: port2/4/6), do steps 3-4 otherwise go to step 5.

3. Add RCBA+0x3418 (that's hex.. can use calc.exe in scientific mode). That's were the function disable register is.

4. Set bit 17/19/21 to 1 to disable port 2/4/6 as visually shown here.

5. Add RCBA+0x224 (that's hex.. can use calc.exe in scientific mode). That's were the port configuration is stored.

6. Add appropriate details below to your DIY ViDock bootdisk PCIScript.
Code:
:: Disable next even port port2/port4/port6 if bios has it enabeld
pt MEM write 4 [RCBA+3418h] [change bit 17/19/21 to 1]

::choose port1 (+ non occupied port2) to be x2 high priority port
pt MEM write 4 [RCBA+224h] 0x81

::choose port3 (+ non occupied port4) to be x2 high priority port
::This also sets port1 to be a x2 port [ no way to prevent this! ]
pt MEM write 4 [RCBA+224h] 0xA2

::choose port5 (+ non occupied port6) to be x2 high priority port
pt MEM write 4 [RCBA+224h] 0xC4

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Examples: create a x1E link. A 20% faster x1.0 link
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: example #1: HP_Pavilion DV4 using mPCIe port 1 
:: 'setpci -s 0:1f.0 f0.l' returns RCBA=0xFED1C001
pt MEM write 4 0xFED1c224 0x81

:: example #2: HP_Pavilion DV2000 using mPCIe port 3
:: 'setpci -s 0:1f.0 f0.l' returns RCBA=0xFED1C001 
:: Disable port2 (as port1 becomes x2 port) and port4 
pt MEM write 4 0xFED1f418 0x3A0061
pt MEM write 4 0xFED1c224 0xA2

:: example #3: Dell Inspiron 1440 using expresscard port5 
:: 'setpci -s 0:1f.0 f0.l' returns RCBA=0xFED18001
pt MEM write 4 0xFED18224 0xC4


What about users that have a PNP system without needing a DIY ViDock bootdisk?

This could only apply if you intend to setup port3 or port5 as a x1E link. port1 is the "root port". Disabling it affects all other devices off port1-port6, so it's not a good idea to use this method on port1. Use the DIY ViDock bootdisk instead to set a x1E port1.

The following worked on the Inspiron 1440 but caused a freeze on the DV4. The DV4 is using the off-limits port1.

1. Disable the port you want to set as x1E and any associated even ports as explained in steps 2-4 above using Baredit like shown here
2. Do a device manager scan or use 'devcon rescan'
3. Change desired port into x2 width by writing one of the following to RCBA+224h using Baredit.: 0x81(port1), 0xA2(port3) or 0xC4(port5).
4. Connect your EC2C or PM3N and power your video card.
5. Enable the port by reversing step 1. When you click "write" in baredit the port is enabled, now in x1E mode.
6. If Win7 doesn't automatically detect the port, do a device manager scan or do 'devcon rescan'

Only this sequence of steps resulted in a stable setup. The sequence above can be scripted. The baredit command can be 'saved', which saves it as \bar_save\bar_edit.ini. Running bar-edit from that directory then executes the commands in bar_edit.ini without user intervention.

Quirks

A standby/resume of the Inspiron 1440 resulted in port5 reverting back to x1 width. DV4 maintained the port state after a standby/resume. Suggest check your port with Everest after a resume to see if your bios is quirked this way.

Last edited by nando4 : 11-17-2011 at 02:02 PM.
nando4 is online now   Reply With Quote