gem-universe / blog

0 stars 0 forks source link

[操作系统]26. 输入输出设备 #30

Open supergem3000 opened 7 months ago

supergem3000 commented 7 months ago

26. 输入输出设备 (jyywiki.cn)

输入输出设备原理

CPU如何指挥外部的设备?答案:一根线,连接到CPU上,并提供读写指令。 实际上,对IO设备进行抽象:一个能与CPU交换数据的接口/控制器。 也就是几组约定好功能的线。 如何交换数据?可以把设备寄存器映射到内存某个地址。理论上也就不用给CPU增加额外指令来访问设备。

总线、中断控制器和DMA

总线 面对越来越多的IO设备,如何给未来留点空间? 总线:一个特殊的IO设备。提供设备的注册和地址到设备的转发。这样 CPU 只需要直连一个总线。今天PCI总线肩负了这个任务。总线可以桥接其他总线(例如PCI -> USB)。

中断控制器 CPU有一个中断引脚,收到某个特定的电信号会触发中断,保存寄存器,跳转到中断向量表。

DMA 中断没能解的问题:假设程序希望写入 1 GB 的数据到磁盘,即便磁盘已经准备好,依然需要非常浪费缓慢的循环。能否把 CPU 从执行循环中解放出来? Direct Memory Access (DMA):一个专门执行 “memcpy” 程序的 CPU。

GPU和加速器

I/O 设备和计算机之间的边界逐渐模糊。比如:打印机内部带CPU、DMA是一个只执行memcpy的CPU、等等。这些CPU是专用的,能耗、成本比通用CPU有很大的优势。 GPU便诞生,CPU把绘图的程序和数据告诉GPU,GPU自己加工数据进行绘制,不再经过CPU。 现代GPU也进化成了一个通用计算设备,有显存、支持并行。。。