答案1
USB 绝对不是学习基本 I/O 的最佳方式。它不是基础的,实际上它是一个非常先进和复杂的界面。它的规格并不广泛普及(你必须付费),等等。不过,让我描述一下照片上的设备以及它的缓冲区在哪里。
您看到的两个芯片是:上面的一个(上面有“TAIWAN”)是 Renesas μPD720210,4 端口 USB 3.0 集线器,而另一个(上面有“CHINA”)是 Renesas μPD720201,PCIe gen2 USB 3.0 xHCI 接口,内置 4 端口集线器。我建议您谷歌搜索它们的标记以查找和探索它们的数据表。
它们以菊花链形式连接,您可以轻松识别连接各种组件的电线。例如,您将看到的配置lsusb -t
是两个外部端口(USB1 和 USB2)和内部端口出现在根集线器后面,第二个集线器连接到根集线器的剩余端口,并且它有四个端口,这些端口都是此卡上的外部端口(USB3 到 USB6)。(这是“7 端口 USB 集线器”的典型结构;我见过许多不同的此类设备,它们恰好都是菊花链中的两个 4 端口集线器。)
SATA 电源连接器仅用于供电;出于同样的原因,在旧的此类卡上,我们有 IDE 电源连接器(俗称“Molex 连接器”,尽管这也是 Molex 的发明)。
最后,是缓冲区。这个术语恰好存在一些歧义:
- 在电子学中,缓冲器是一种电路,用于调整源和接收器的阻抗和/或净化数字信号。针对不同的任务,有不同类型的缓冲器。事实上,这两种芯片都包含一些不同类型的电子缓冲器。
- 在计算机科学中,缓冲区是可以暂时保存数据的专用内存,在这种情况下,要么接收数据直到应用程序(OS)请求它,要么将要传输的数据放在这里。
“缓冲区”一词在第一个芯片数据表中只出现过一次,上下文是“为 I/O 缓冲区提供电源的引脚”。第二个芯片更复杂,因为它具有 PCIe 接口,该接口具有内存映射的寄存器,并且它实际上有一些 I/O 缓冲区。最好阅读 xHCI 规范以更好地了解如何访问 USB 缓冲区;例如,您可以查看此芯片的 Linux 驱动程序的源代码。它将揭示一些关于其工作原理的见解。