So I'm trying to get my mind around what the best set-up would be for up to 25 ASIC units. Either the BFL SC singles or bASIC.
What about USB bandwith ? Can you use a couple high quality usb hubs or will they have bandwith issues ?
Bandwidth has less to do with it......., since actual bandwidth is quite small, the REAL issue is the protocol.
In another post I'd recommended that the Chinese ASIC system could potentially scale better, since they have opted to include WIFI/Ethernet.
The problem with USB is that only ONE device can be on the buss at a time AND you have to signal connection & disconnection
Which means as the number of devices grows, so does the buss collisions.
Hubs solve F*** ALL, the same way that building more roads into a city does, all a hub does is increase the potential for collisions.
It is RAW ports that you need, since they decrease the chance of collisions by a power of the number employed.
Two RAW ports decrease the collisions by a power of two over the number of devices.(since you can split the USB tree)
Overall it is very difficult to work out HOW ASICS will impact the USB communication, because so little details have been released.
Consider the Implementation of a SIMPLE buffer scheme for returned nonces.
Take the following.....
Setup one:
Returns EACH nonce when found
Setup Two
Bundles up nonces and returns a batch every second.
consider that we find 5 nonces that are viable,
Setup Two will only negotiate with the USB ONCE every second, therefore the collisions are limited down.
Setup one will attempt to connect & disconnect ATLEAST 5 TIMES with the USB infrastructure, this will seriously impact the distribution of work to other devices, plus it is going to be exponential for each extra device.
Since the Damned ASIC vendors are telling us nothing about how the devices are implemented, we cannot plan ahead or work out anything.
HC
Your idea about how USB works is factually incorrect. Start reading about the technology on wiki which correctly states:
The host controller directs traffic flow to devices, so no USB device can transfer any data on the bus without an explicit request from the host controller. In USB 2.0, the host controller polls the bus for traffic, usually in a round-robin fashion. The throughput of each USB port is determined by the slower speed of either the USB port or the USB device connected to the port.In case you need a translation. The speed of the chain/hub determines how quickly each attached device is polled for transfering data. This operation in double digit milliseconds (around 12 iirc) in most cases, but there do exist some that poll speed is in the single digit. This is for usb 2.0. Furthermore, the signaling method for USB 3.0, while still host-directed, is now asynchronous instead of polling. and drops that access time to each device by a factor of 10.
So no, there's no "attempt to connect and disconnect ATLEAST 5 TIMES" it is in effect a flag that's set on the device (closing the ground line???) that indicates it has data to transfer. Polling would be a query from the usbcontroller to the device asking if it's got data... When that happens and the device has data to send... it transmits.
Also, this is why it's called Universal Serial
Bus it's using the same methods that a data bus on any circuit board uses but to communicate with external devices (and logically instead of physically).
Actually it is NOT factually incorrect... perhaps a little unclear in the wording. (The 5 times WAS AN EXAMPLE OF FINDING 5 nonces, and collisions perhaps would have been better to describe as "work waiting to be serviced" would have been better),
Sometimes I forget that not everyones first language is English, I apologize for my mistake.
I.E
poll slavex...... I have a nonce for you......transfer.. Disconnect... poll next device....... nothing.. back to salve x... I have a nonce for you....
A better solution would be.......
poll slavex...... I have a X nonces for you transfer..disconnect poll next device....... nothing... back to slave x
As I stated at the start... we do not know about HOW they have implemented the USB system.
Even if you took the trouble to do a very basic search of
Wikipidia (god help us....) and from your text I see that you have indeed just copied and pasted from Wikipedia without correctly Citing.
if you read down a bit you would see:
"On-The-Go Supplement 1.3: Released in December 2006.
USB On-The-Go makes it possible for two USB devices to communicate with each other without requiring a
separate USB host. In practice, one of the USB devices acts as a host for the other device."
So it would be possible with such a setup to have a "chain" of devices (two ports) where each device was BOTH a host and a slave, ideally two.
As regards you description of USB and how it relates to how "its based on ANY databus"
"it's using the same methods that a data bus on any circuit board uses but to communicate with external devices (and logically instead of physically "
Sorry Wikipedia
........
Some external devices CAN POLL, and so do most INTERNAL devices (its called interrupts) and in this case the "signaling" is EXTERNAL to the databus using separate control wires (parallel printers are another example, but RS232 can be either)
USB CANNOT do this, because as you stated yourself copied and pasted from wikipidia... it is MASTER/SALVE and has to be " polled in round robin"
Whilst we are on the subject of reading up.......
Jan, Axelson (2005) USB Complete Third Edition. http://picvietnam.com/download/Tutorial/USB_Complete_3rdEdition.pdf
It's a bit out of date... but it will get you up to speed on the subject, look at section 2 and 3.
Look USB is a complex subject, not just the protocol, but how simple design decisions in the controlling software can have a MAJOR impact on the protocol.
HC