计算机的CPU为什么不直接调取硬盘文件,而是要先载入到内存中?

白衣纵马


“极客谈科技”,全新视角、全新思路,伴你遨游神奇的科技世界。


暂且不讨论硬件组成结构上的问题,我们单从数据的传输速度来讨论一下这个问题。

  • 硬盘当做内存使用,也并不是没有这方便的操作,例如电脑中的虚拟内存;

  • 电脑的虚拟内存,仅能够在一定程度上缓解内存的压力,无法真正实现内存的传输速度。

先来了解一下什么是虚拟内存,再看看硬盘和内存之间的差距究竟有多大。

(文后还有其他应用的彩蛋赠送哦!)


虚拟内存的应用

虚拟主要是用来缓解系统内存不足的一种方法,将内存无法处理的数据调入硬盘某个空间。

  • 虚拟内存的作用主要是缓解内存压力,无法真正的替代内存;

  • 电脑若使用超大的内存组合,完全可以取消虚拟内存的设置。


硬盘与内存数据传输之间的差距

1.数据处理延时的问题

电脑的各个设备部件之间的延时可以参考下表:

  • 延时从高到底的排列,依次是机械硬盘、固态硬盘、内存、CPU;

  • 从数据的反应速度上来看,内存明显要优于硬盘。

2.数据读写速度测试

固态硬盘的测试数据可以参看下图:

内存的测试数据可以参看下图:

从测试数据可以看出,两者之间的读写速度根本不在同一个数量级之上,差距相当巨大。


大内存的其他用处

  • 硬盘当做内存使用,并不是一个好的建议;

  • 但是却可以将内存当做硬盘使用,从而体验更快的传输速度。

这里就需要通过使用RamDisk软件来实现,敢兴趣的大内存用户可以下载试用。


关于计算机直接调用硬盘,取消内存的做法,您怎么看?

欢迎大家留言讨论,喜欢的点点关注。



极客谈科技


如此简单的问题,被懂科技的人搅成一桶浆糊。外行更是丈二和尚摸不着头脑。

CPU尽管功能强大,但它只负责运算,没有记录运算结果的功能。因此,电脑一关,它就是一块废铁,里面什么也没有。就象中国的算盘一样,算盘打完,拎起一甩,就什么也没有了。早期最简单的电脑只有CPU,也就是那种儿童玩具电脑,只有CPU,没有内存,当然更没有外存,即各种硬盘、软盘、光盘等。

为了能让CPU做复杂一些的工作,人们就想出来为CPU提供一个舞台、或者叫工作平台,就是内存啦。就象为一个能干的工程师提供一张宽敞的办公桌一样,于是,CPU与内存就成为了最佳搭档,进行各种复杂的操作。电脑电脑,实际上是指它们俩。CPU工作时,它只认内存,从不分心,不管你有多么丰富的外部存储装备(硬盘、光盘、移动硬盘),它理都不理你。

于是,你想,很多应用软件就只能呆在硬盘里。没叫到你,你就永远呆硬盘里,没有出头的日子。只有要用到你这款软件时,你才有资格进驻内存,以便听任CPU摆布。

不过,这种搭配方式带来一个意外收获,即如果不料断电了,CPU和内存里就什么也没有了,成了一堆废铁。而你按装的应用软件仍旧完好无损,它们藏身在硬盘里,大不了重新启动后再次运行它罢了。

所以,从原理结构上说,CPU只对内存进行操作,对硬盘是不闻不问的。有些技术能把硬盘划出一块视其为扩展内存,那是另说,不在此题范围之内。



蓝博格尔


我举个简单的例子:

你从广州去北京,一般的行程就是:

你在广州机场坐飞机,飞到北京机场,然后下飞机,坐车前去目的地。

而你的提问就好像是这样:

为什么要先上飞机再下飞机坐车呢?我直接坐车到北京目的地不就好了吗?

而这个问题关键点也在于此:硬盘的容量虽然很大,但它的读取、写入速度远远比不上内存。所以电脑把需要反复调用的数据载入内存,可以避免反复读取硬盘造成的时间浪费。

在这里,内存就好比起到了“飞机”的作用。你说绕开飞机,直接开车到北京去,这个也是可行的,但只会更慢而不会更快。例如以前电脑的内存容量不足,需要使用硬盘空间“虚拟内存”,这种情况就跟你说的直接硬盘调取文件差不多。


从耗子胖成猪


速度问题,硬盘的速度相对于cpu就是蜗牛对火箭的差异。这样显然不能让cpu等硬盘,那么解决的办法就是cpu发出指令,让dma系统将数据从硬盘中读取到内心里,这期间cpu去干别的事去了。但是内存的速度相对于cpu依然是飞机与火箭的差异。这个时候还需要cpu的内部存管系统将内存的部分内容按照一定规律放到它的L3,L2乃至L1缓存中去。这个时候cpu才开始去理这些数据。如果L1中没有就到L2中去找,L2中没有再到L3中去找,L3中还没有才到内存中去找。中间增加了这么多复杂的步骤,就是为了让cpu多干活,匹配速度之差。


Jagen在路上


含简单的,处理器的速度非常快,如果让CPU直接去处理每个字节没什么毛病,但是我们的存储太慢了,最快的家用ssd最近好像才突破4GB/s(在强调一下家用的),一般我们的家用机械硬盘能上100MB/s就比较不错了。因为cpu处理的速度和存储性能之间有巨大差距,这个差距远远超过疯狂动物城里面那段兔子找树懒查车牌那段了,如果让CPU取直接处理存储的数据CPU要等了,那么我们的电脑就会呈现假死的状态了。所以在一个处理器执行流程中需要什么数据先告诉协处理器(例如:sata控制器)里先把数据放到内存,等数据都正确读取完毕了之后告诉CPU去执行,这样在协处理器处理数据的期间,我们的CPU完全可以去干别的流程了(多线程或多进程)。


蓝鸟啃苹果


因为CPU速度非常快,现在的CPU都是GHz的频率,就连内存都跟不上CPU的速度,所以才会有一级缓存,二级缓存,三级缓存,内存,硬盘这种结构,每一级都比上一级更慢,CPU也不是直接读取内存的数据,主要还是用的自己的缓存,当缓存里面没有的时候才会把内存里的数据加载到缓存里,当内存没有的时候就把硬盘里的数据加载到内存里


魅力小婷姐她二哥


固态硬盘读取速度就算pcie通道的M.2接口读取速度也只有1.5GB/s,而内存存取速度最低也是20GB/s以上,4通道DDR4内存可以达到60GB/s速度,这个差别显而易见了吧。内存的特点就是速度快空间小,硬盘是空间大速度慢,这两个配件就是各有用途,计算机架构不变的话,这两个都会存在。


用户86262


因为 CPU 不是块设备,而硬盘是块设备。读出一个比如4k的块是没有什么用的,它得把一个4k块读到内存中再按32位指令一条条处理。在嵌入式系统中,CPU 的确是直接在 NOR Flash 中片上执行的,因为 NOR Flash 是字符设备,而 NAND Flash 并不支持片上执行,就是因为它也是块设备,SSD 固态般通常就是 NAND Flash。


用户5531801333752


最快的固态盘对比DDR4内存来说也是慢几倍的存在,cpu如果与硬盘直接通讯,肯定会有很高的延迟,这就是原因


Vade


这个问题值得研究,你说cpu是镊子取好呢?还是是吸管?


分享到:


相關文章: