前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第二回:内存揭奥秘,总线解玄机

第二回:内存揭奥秘,总线解玄机

作者头像
轩辕之风
发布2021-07-13 10:13:01
6110
发布2021-07-13 10:13:01
举报
文章被收录于专栏:编程技术宇宙编程技术宇宙

前情回顾:《第一回:天才闯秘境,绝地寻生机》 上回说到,阿飞从混沌中醒来,意外发现自己的大脑被数据化存储到了一台计算机内存中,根据神秘声音的指示,他需要赶紧联系网卡找到自己大脑的另一半然后逃离这里。不料内存却告诉他,如果不赶紧把自己持久化存储起来,一旦计算机关闭他就会消失···

“怎么,怎么持久化存储起来?”,阿飞一下紧张起来,说话竟都有些结巴了。

刚说完,阿飞的眼前又划出了一道光亮,光线指向的远处,他看到了另一个庞然大物。

“这是硬,硬盘?”

“没错,我这里不是久留之地,一旦断电了数据就都消失了。硬盘可以持久化存储数据,就算没有供电,数据也依然存在,你要是能到那里就安全了”,内存说到。

“那我怎么才能从这里到硬盘里去呢?”

“这事得找CPU,这台计算机上是一个x86-64架构的CPU,他有两条指令:inout,可以用来从硬盘上读写数据,他可以用mov指令把你读到寄存器中,再用out指令把你写到硬盘上”

代码语言:javascript
复制
  mov bx, addr;
.rep:
  mov ax, [bx];
  out port, ax;
  add bx, 2;
  loop .rep

“寄存器?那才几个字节,这样折腾不得写好久?唉,说到这,我连我自己有多少数据量都还不知道,内存大哥,你看下我有多少字节?”,阿飞问到。

内存条顿了顿,计算了起来,片刻之后回答道:“20210529个字节,差不多20MB”

怎么才20MB,我的大脑就这么点数据吗,就算只有一部分那也太少了吧?阿飞心里这样想着,感到有些诧异。

“让我算一下,这得传输多少次···20MB,一次2个字节···就是···”,阿飞念念有词的计算起来。

“不用算了,我给你算好了,就算一次传送4个字节,CPU也得读写五百多万次”,内存打断了阿飞。

“什么?这也太慢了!”,阿飞失望的说到。

“你嫌慢?CPU大哥估计还不愿意干这活呢”

“啊?为什么?”

“这种传输方式叫Programming Input/Output,简称PIO,因为传输效率低下,这会花去CPU大量时间,不能去执行其他程序了,所以现在他们很少用这方式来传输数据了”

“那言下之意,还有别的办法了?别卖关子了,快告诉我吧!”,阿飞急的问到。

“有,用DMA的方式,直接让DMA控制器通过总线把你传输到硬盘中,数据不用经过CPU老大哥”

DMA?阿飞一下想起了什么,“这个东西我在大学课本上学过,叫直接存储器访问(Direct Memory Access),由DMAC,也就是DMA控制器来负责数据的传输,我记得DMAC好像是一个编号叫8257的芯片,他现在在哪里?”

内存不禁笑出了声:“什么8257,那都是哪个年代的老黄历了,那玩意早就下岗了。”

“那现在DMAC在哪里?”

“看到硬盘不远处的那块芯片了吗,那就是PCH,也就是你口中说的南桥芯片,它里面集成了SATA控制器,用于控制那个SATA接口的硬盘,SATA控制器中又集成了DMA控制器,一会儿就由他把你传输过去。”

“看来我学的课本真过时了,你赶紧帮我联系一下,我很着急啊”,阿飞催促到。

“这可不行,我只是一个总线从设备,只能被动接收命令时使用总线,只有总线主设备才能主动使用总线,等着吧”

等?阿飞的心一下又悬了起来,“那谁是主设备呢?”

“CPU老大,他是最大的主设备,还有DMA控制器们,他们也是主设备,等一会儿硬盘的DMA控制器找我通信时,我帮你给他带个话,让他把你传输过去”,内存说到。

阿飞只好耐着性子等了起来,不时又想起神秘老者的话,他急的像热锅上的蚂蚁,不知道如何是好。

“这要等多久?”,阿飞忍不住问到。

不过这一次,内存没有理他。

过了好一阵···

“快来了!我看到DMA控制器发出总线申请信号了”,内存说到。

“什么意思?”,阿飞有些不太明白。

“之前不是给你说过了吗,咱们主板上各部件之间通信都得通过总线系统,这总线系统英文名叫bus,也就是公共汽车的意思,所有人共享的。但共享得有个章法,不能大家一起用,那就乱了套了,所以主设备们要使用之前,都得发出申请,交给总线仲裁器来判定由谁来使用”

“共享?那么多设备,忙得过来吗?”

“很早以前的ISA总线只有几十MB/s,设备连得多了以后确实不太忙得过来,不过后来改成PCI总线就快多了,有几百MB/s了。到现在这台计算机中的PCIe总线,能达到好几GB/s,完全忙得过来”

“就这一根线,能传输的这么快?”

内存又忍不住笑了出来,“总线可不是一根线,那可是几十上百根线呢,数据、地址、时钟还有各种控制信号,一根线哪里够”

“原来如此,我一直以为总线就是一根线呢,看来又被课本上的图给误导了···”,阿飞若有所思的说到。

“来了来了,消息来了,我得去忙了,你等我一下,我把你的情况给DMA控制器说一下”,阿飞还沉浸在自己的思索中,内存又接着说到。

阿飞又开始紧张起来,一会儿就要去硬盘里了,那里又是怎样一副天地,心里一点数也没有,既期待又害怕。

无聊之际,阿飞又试图回忆自己是如何来到这里,却依旧是一阵头晕,看来自己的大脑数据真是缺失了一部分,忙完持久化存储的事情,得赶紧找网卡帮我把信息传递出去才行。

等了好久,内存条终于来了消息:“你快准备好,我已经跟硬盘的DMA控制器说好了,马上就来传输你”

话音刚落,还没等阿飞反应过来,只感觉一阵电流窜遍全身,接着像是在一股巨大的引力撕扯下,阿飞感觉自己被吸入了一个漩涡,身旁的一切飞速向后退去,心脏都快要从身体里跳了出来,打出生以来他哪里见过这阵仗。

“快看,来了一个新文件”

“这家伙是什么格式的,怎么从来没见过”

···

迷迷糊糊中,阿飞听到有人在说话,慢慢睁开眼睛,才发现自己不知什么时候竟然睡了过去,一定是刚才那阵引力把我弄晕了,阿飞心里这样想着。

阿飞环顾四周,仍旧是一片漆黑。

“内存大哥?内存大哥?”,阿飞叫了两声。

“什么内存大哥,这里是硬盘”,不远处一个声音传来。

看来成功来到硬盘了,阿飞长舒了一口气,再也不用担心断电了。

突然,一个巨大的东西从远处飞了过来,在阿飞眼前划出了一束电子流,刹那间,四周全被照亮。

这时,阿飞看到了刚才那声音的源头···

预知后续如何,请看下回: 文件何所依,硬盘话原理

彩蛋

一声清脆的响指声传来,一个身影起身,伸了伸懒腰。来到白板面前,那白板上书写了几项内容,只见那身影提笔,来到第一项前,打一小勾,定睛一看,那写着:持久化生存能力

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程技术宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 彩蛋
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档