CSDN太慢不能忍,CPU 拿硬盘和网卡开刀了!


CSDN太慢不能忍,CPU 拿硬盘和网卡开刀了!
本文插图
作者 | 轩辕之风
来源 | 编程技术宇宙
总线技术
我是CPU一号车间的阿Q , 最近为了一件事儿搞得我挺烦的 。
当初我们CPU工厂刚刚来到主板上建厂时 , 那时候主板上的单位还不多 , 跟我们打交道最多的就是内存那家伙了 。
后来 , 键盘、鼠标、硬盘、网卡、声卡、显卡等等设备纷纷入驻主板 , 这块土地变得越来越热闹起来 。
CSDN太慢不能忍,CPU 拿硬盘和网卡开刀了!
本文插图
不过 , 他们的到来并没有影响我们的地位 , 毕竟我们是中央处理器 , 所有人都得听我们指挥 。
为了和主板上这些家伙们通信 , 我们花了重金铺了一条线路 , 主板上家家户户都连上了这条线路 , 我们把它叫做总线 , 虽然说是一条 , 但实际上它包含了传输数据的数据总线 , 传输地址的地址总线和进行控制管理的控制总线 。
这样一来 , 各单位就能一起聊天了 。 不过这线路是共用的 , 大家不能都一起传数据 , 那就乱套了 。 为了统一管理 , 我们设立了一个新的单位叫总线控制器 , 这个单位来统一管理总线 , 大家要通信就得找它申请 , 这就叫做总线仲裁 。
CSDN太慢不能忍,CPU 拿硬盘和网卡开刀了!
本文插图
不过啊 , 主板上的单位之间的速度还是千差万别的 , 像内存就比硬盘、网卡这些单位快多了(当然 , 跟我们CPU车间的工作速度那还是不能比) , 不仅如此 , 不同单位他们的接口还千差万别 , 用一套总线矛盾就日益明显了 , 后来就变成了多级总线 , 让慢的跟慢的玩 , 快的跟快的玩 , 最后大家再用一个东西把不同总线连接起来 , 这个东西就是桥!
主板上后来出现了两个著名的桥 , 一个离我们CPU很近的叫北桥 , 内存那家伙和我们通信就会经过它 , 另一个离我们远一点的叫南桥 , 那些慢一些的I/O设备就通过南桥接进来 。 再后来 , 随着我们CPU工厂的壮大 , 直接把北桥收购了 , 现在变成了我们厂里的一个部门了 。
PIO模式
现在我们可以和这些I/O设备通信了 , 就拿硬盘来说吧 , 它有I/O端口 , 我们提供了in和out两条指令 , 就可以对它进行读写数据了 。 这种通信的方式叫做可编程输入输出模型 , Programming Input/Output Model , 简称PIO 。
CSDN太慢不能忍,CPU 拿硬盘和网卡开刀了!
本文插图
我们是整个主板上的核心 , 俗话说得好 , 能力越大 , 责任越大 , 但有时候真心觉得有点累 。
随着越来越多的设备接入主板 , 越来越多的程序需要等待我们去执行 , 工作量大的压的我们喘不过气来 。
尤其是随着技术进步 , 我们CPU工厂的速度越来越快 , 与硬盘的读写速度之间的差距越来越拉大 , 我们还用这种方式通信就太浪费我们的时间了 。
DMA技术
这几天 , 我们几个车间的Leader私下聚在一起讨论起这个事情来 。
“阿Q , 你不觉得现在我们花了太多时间再读写硬盘上了吗 , 这家伙慢不是他的错 , 扯我们后腿这就是他的错了啊 。 传输一次数据 , 我们要执行好多次I/O端口读写 , 我们宝贵的时间都浪费在这上面了!” , 二号车间的虎子一脸幽怨的说到 。
CSDN太慢不能忍,CPU 拿硬盘和网卡开刀了!
本文插图
“嗨 , 我最近也为这事发愁呢 , 程序越来越多 , 读写硬盘的时间越来越多了 , 尤其是那个叫MySQL的 , 老让我访问硬盘 , 可累死我了 。 ”
没想到我俩都憋了一肚子苦水呢 。
这时 , 平日里爱拍老板马屁的八号车间老大说了一句话:“你们说的问题确实存在 , 这工作太没技术含量了 , 就是个体力活嘛 , 要不咱给老板说说 , 让他外包出去吧”