Overclock.net banner
1261 - 1264 of 1264 Posts

·
Registered
Joined
·
128 Posts
Feel free to elaborate on your calcs.
Well i was talking about this on other site generally for all processors, so i took into account this number, given that intel cpus have lowest polling interval - 50us (so i heard). Let me ask you a question, i though usb controller was located on a motherboard, but than i heard someone talking about cpu. As you can find specifications for that in Intel datasheets per chipset - ucode said. This would imply it is in motherboard. Just to clear this up, so i refer to this correctly!

Yes you can disable interrupt moderation on Intel motherboards, as far as i know. Not sure on some chipsets tho! I have Z390 and i have all zeroes already at 0x20 offset, after double clicking 0x10 - in 32 bit mode. But i found no specifications for "Maximum Interrupt interval" for Z390 chipset in intel datasheet pch something, which was only doc listed under this chipset! So i should have that disabled. But i heard, that AMD has much higher polling rate, so can this be edited on amd too? And probably most people won't be comfortable editing this, or they don't know about it!

So to my value: when you move your mouse, it is sent through usb. USB interrupt controller will poll mouse each 50us constantly, but don't know when you will move your mouse! I need to make quick turn...

This is XHCI datasheet: https://www.intel.com/content/dam/w...ensible-host-controler-interface-usb-xhci.pdf

I heard from ucode, or someone, that Intel usb controller is by default set to 50 us of polling rate. And interrupt moderation can be disabled, question is: what is top limit? From XHCI datasheet i quote:
"Interrupts/sec = (250×10-9sec × IMODI) -1 For example, if the IMODI is programmed to 512, the host controller guarantees the host will not be interrupted by the xHC for at least 128 microseconds from the last interrupt. The maximum observable interrupt rate from the xHC should not exceed 8000 interrupts/sec."

Again i don't know, if they refer to when IMODI is set to 512 aka polling every 128us, than interrupt rate should not exceed 8000 interrupts/sec. Or they refer to interrupt controller, that it is not able to poll faster than 8000 interrupts/sec max. !? I read that someone was saying 8k is maximum possible interrupt rate of USB controller too. We need to clear this up! Also what is strange 1/8000 is 0.00125s. But they talk about 128us polling rate, which != 8000 polling rate, that's confusing! Seems like this means 8k is the top limit...

So now i can explain: because you will need interrupts to be handled by OS <125us. So you can utilize your 8k polling rate! I took into account 50us, which i heard is default polling rate of Intel usb controller. Polling is done constantly, it doesn't know when you will move your mouse in real life! So what if it occurs 1us, after 50us interval. That would add max. 49us, until next polling interval occurs. So 125-49=76. Than my understanding is, that usb controller will send interrupt to a cpu! Than OS schedules DPC and has to handle that in less than 76 us for it to render in your game. Not to even mention timer resolution window, which allows update code to the cpu, occurs only each 0.5ms, so there will be some interrupts missed!!! Which were handled, after timer resolution window occurred! These systems are out of sync, so there will be random variations, even at this polling rate, much less significant than on 500/1000, but still. Ofc. this will be still huge help, than 500/1000hz for 360hz monitors. But: lets say your motherboard has like 300us DPC latency, than this will be a lot of worse! I don't know what is average, it differs greatly. Some asus 500$ motherboards have problem with DPC latency and go even to 1ms...

So question is... your 360hz monitor will render frames like each 2.7 ms instead of 6.9 ms (144hz) and if you have like 300 DPC latency and timer resolution windows is 0.5ms max, than it is possible it will skip couple packets. Which could make your mouse movement jittery, because it is more frequently updated on the monitor. Sometimes you will get near to latest position, but sometimes you get position from couple mouse frames back. Dunno i am 144hz pleb :D

So we know interrupt moderation of Intel usb controller can be completely turned off. Question is, is it even capable of more than 128/125us aka 8k polling rate? So if you move a mouse, right after poll occurs - you will have to wait max 127us, before next poll occurs, so last mouse position is sent to a cpu!

Correct me if, i am wrong. I am not usb engineer, i got my information from intel datascheets and users on a forums and internet...
 

·
Registered
Joined
·
128 Posts
Yep i couldn't find these anywhere too, ucode listed this for x99 chipset, or how it calls. But i found this in specification of XHCI controller from 2019 in my previous post listed.

EDIT: sorry for double post, i thought it was last post, it showed next to my previous post ***? BTW i shared my findings about interrupt affinity and priority in my 2nd previous post.
 

·
Registered
Joined
·
31 Posts
Has anyone tried using a logic analyzer to measure a mouse's polling precision? Seem to me like if the difference between mice comes from the actual mice themselves then a logic analyzer would be a superior tool to a PC running an OS. They can be found fairly cheap too compared to other external HW benchmark solutions.

A random one from Aliexpress for $7


Edit: Buy a USB extension cable as well. Cut the extension cable open and hook it up to the logic analyzer. Now testing different mice should be as easy as plug and play. Unless the mice have to be connected to an OS, in which case you can still branch out from the extension cable and record the signals being sent back and forth between the mice and PC.
maybe you would find this interesting, doesn't seem useful for my polling rate though, unless I wanted to cheat or something.

 
1261 - 1264 of 1264 Posts
Top