Electronic – the difference between usb root hub and usb host controller

usbusb deviceusb hub

From the oracle wiki (usb controller):

The USB host controller has an embedded hub called the root hub. The
ports that are visible at the system's back panel are the ports of the
root hub.

What I understand from this is that the root hub merely is a point where all usb hubs come toghether.

-Is the root hub a piece of hardware, or is it a term used to denote the point where all data from usb devices come toghether?

-There are different types of interfaces between the root hub and the controller (UHCI,OHCI,EHCI), is it then correct to think of the controller as a "middleman" between the root hub and the actual computer?

Best Answer

You can have more than one root hub, so no, it is not the point where all hubs come together. It might be more convenient to think of root hub as one of the several starting points for enumeration.

Root hub is a piece of hardware. More specifically, it is a part of host controller (which itself can be either separate chip or a part of chipset).

The interfaces that you mention are Host Controller Interfaces (HCI), i.e. interfaces of host controller, not root hub. Basically they are registers that software can access in order to communicate with host controller.

From the above I don't think term "middleman" is applicable as you pictured it.

UPDATE:

Here is a simple analogue to illustrate to relationships:

A vehicle is a controller. It has an interface (pedals) that software (driver) can use to operate the controller. It also has an engine (root hub) that performs essential part of the car functionality.

You can say that driver operates an engine using pedals, and that would be correct but not precise, because there are quite a few parts between the pedals and an engine. These parts correspond to internal logic circuitry of the controller.

So, more precise statement would be "driver controls the car using pedals, steering wheel and a stick, and since engine is part of the car it does its job share in the whole driving process". In a computer terms that would translate into "software controls the host controller using HCI, and since root hub is part of the host controller it does its job share in supporting USB communication".