迅维网

查看: 2637|回复: 20
打印 上一主题 下一主题

64位操作系统,64位CPU,加SSD硬盘,是不是就可以省去内存,让CPU直接读取硬盘里的数据?

[复制链接]
跳转到指定楼层
1#
发表于 2017-11-17 11:24:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 �

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
很久之前就有这个疑问/设想。起初电脑有内存是因为硬盘的存取速度慢(因为是机械硬盘)、32位的寻址空间不够。现在这两个都已经被解决了,那是不是可以设计一个没有内存的电脑,让CPU直接读写硬盘里的数据。硬盘中也可以有一个空间用来swap,放临时变量之类的。 问题是,这里面有什么问题吗?还是有些问题我不知道,这仅仅是我的异想天开? 谢谢

头像被屏蔽
2#
发表于 2017-11-17 11:24:11 | 只看该作者 �
楼主给你看一张图,这是计算机设备各自访问速度
1s(秒) = 1000ms(毫秒) = 1000000 s(微妙) = 1000000000 ns(纳秒)
    CPU 1级缓存 ......................... 0.5 ns    分支预测 ............................ 5 ns    CPU 2级缓存 ......................... 7 ns    互斥锁加锁/释放锁 .................... 25 ns    主内存 .............................. 100 ns    压缩1K数据 ............. ............ 3,000 ns = 3 s    在1G带宽中发送2K数据 ................ 20,000 ns = 20 s    SSD硬盘随机读取...................... 150,000 ns = 150 s    主内存中顺序1M数据 ................... 250,000 ns = 250 s    同一个数据中心来回 ................... 500,000 ns = 0.5 ms    SSD中顺序读取1M数据 .................  1,000,000 ns = 1 ms    硬盘寻址............................  10,000,000 ns = 10 ms    硬盘顺序读取1M数据 .................. 20,000,000 ns = 20 ms     从加拿大发送数据到荷兰再回到加拿大 ... 150,000,000 ns = 150 ms
题主你说的内存应该是指第5项,而ssd硬盘访问是第8项,你看他们访问速度差了1500倍,题主你觉得你的论题还成立吗

文献引用:Every Programmer Should Know These Latency Numbers - DZone Performance

回复 支持 反对

使用道具 举报

3#
发表于 2017-11-17 11:24:11 | 只看该作者 �
1. SSD的IOPS还远远赶不上内存。

一般民用的SSD的IOPS(每秒处理的IO个数)都不高,企业级一般在几十万左右,到百万的很少,最高据说有人造出过900万IOPS的SSD,但是估计民用困难,写比读IOPS要低的多。

内存的IOPS不好算,跟时序有关,但内存的不同bank理论上是可以并发的,多通道速度也可以叠加,算下来内存的IOPS上百万很轻松,千万次估计也不难(看总线设计),搞好的情况下没准可以上亿次(但可能无实际使用价值)。

2. SSD寻址单位太大。

内存可以单字节寻址,SSD一般是一个扇区或者一个数据块(Page,4K-256K不等,看具体芯片),而内存可以单字节寻址,差距太大了,除非给SSD再装上一层缓存,但这样SSD的意义就不大了,缓存可能要很大。

3. SSD读写速度与内存有数量级上差别

顶级的SSD读写速度能上G,但普通内存就可以轻松上G

基本就这几个原因,其中1、2条很致命。

-------------------------------------

补充一点,嵌入式领域有直接拿flash当内存的,准确的说是可执行代码不读进内存,直接在flash上跑,但堆栈之类的动态数据还是用内存的。SSD不当内存用的主要原因还是成本太高,能达到内存读写速度的SSD不是没有,但太贵了,整套方案实现起来不现实。

不排除未来会有技术的进步,但如果内存能被SSD替代,那么肯定也会有更快的东西出现。

回复 支持 反对

使用道具 举报

4#
发表于 2017-11-17 11:24:11 | 只看该作者 �
“起初电脑有内存是因为硬盘的存取速度慢(因为是机械硬盘)、32位的寻址空间不够。”
啥?谁告诉你的?你这个前提就是错误的,所以所有推论都无意义。

在连机械硬盘他爹都不知道在哪里的时候,就已经有内存。所以跟机械硬盘无关。
在8位机他爹都不知道在哪里的时候,就已经有内存。所以跟32位寻址空间不够无关。

内存的好处是,速度快,延迟低。尤其是后者,非常重要。单纯拼速度,DRAM比SSD高一个数量级。拼延迟的话,DRAM是ns级别的,SSD是ms级别的,差两到三个数量级。CPU的工作依赖于低延迟,否则就得像GPU那样高并行高延迟的方式工作了。

回复 支持 反对

使用道具 举报

5#
发表于 2017-11-17 11:24:11 | 只看该作者 �
SSD还是太慢。
但是你可以反过来,把内存做大,提供独立供电电池,做到关机内存数据不丢。
然后把这个内存叫成硬盘。

回复 支持 反对

使用道具 举报

6#
发表于 2017-11-17 11:24:11 | 只看该作者 �
SSD还是太慢

回复 支持 反对

使用道具 举报

7#
发表于 2017-11-17 11:24:11 | 只看该作者 �
思而不学殆啊

回复 支持 反对

使用道具 举报

8#
发表于 2017-11-17 11:24:11 | 只看该作者 �
大概算了一下,速度相当于当年的SDRAM 100MHz,

无非就是慢点,也没啥

-----------------------
根据
@yang shen
提示,考虑到延时问题,SSD带宽虽然够,但是比起RAM延时要大两三个数量级,用起来那不是慢一点两点的问题....是会慢的要死

回复 支持 反对

使用道具 举报

9#
发表于 2017-11-17 11:24:11 | 只看该作者 �
查一下PCM相变存储。

回复 支持 反对

使用道具 举报

10#
发表于 2017-11-17 11:24:11 | 只看该作者 �
SSD 是有写入寿命的,虽然断电能保存,但目前每个block的极限寿命也就是写入10000次左右。考虑先放入变量的的block,遇到频繁读写的应用,估计个把月换一块,不然也是越用体积越小。

其实SSD也是有cache的,cache一般都用DRAM来实现,聪明的你一定猜到了:
SSD目前的速度不可能比DRAM快了吧, 延迟什么的就更不用说了。

回复 支持 反对

使用道具 举报

11#
发表于 2017-11-17 11:24:11 | 只看该作者 �
其实内存的成本很低的,而且最普通的内存速度基本上是ssd极限速度的40倍。所以给你提供另一个思路。现在的无线网络带宽可以达到400mbps,基本上这个下载速度差不多50MB每秒。而普通的机械硬盘读取速度在110MB每秒。使使劲把硬盘去掉吧,全部使用网络云盘怎么样?

回复 支持 反对

使用道具 举报

12#
发表于 2017-11-17 11:24:11 | 只看该作者 �
你还不如让硬盘自带CPU

回复 支持 反对

使用道具 举报

13#
发表于 2017-11-17 11:24:11 | 只看该作者 �
简单放3张图自己对比吧
Intel 730 480GB的跑分图,730的性能不用多说了吧,这是接近满盘的性能,空盘测试还要高些。

这是闪迪至尊超极速 480GB的测试,这是空盘性能。
以上两块盘应该是可以代表SATA盘了,都是绝对旗舰水准的。PCIe+NVMe的盘持续性能、高QD下的随机性能会高些,但是4K QD1的性能不会有太高的提升,目前消费级顶级产品应该是Intel 750,不过我自己没有所以就不上图了,有兴趣的自己搜索下。NVMe的盘我只有一块Intel 600P 256GB,而且因为主板M.2只是X2通道所以也不上图了,没什么本质区别。以上两块盘应该是可以代表SATA盘了,都是绝对旗舰水准的。PCIe+NVMe的盘持续性能、高QD下的随机性能会高些,但是4K QD1的性能不会有太高的提升,目前消费级顶级产品应该是Intel 750,不过我自己没有所以就不上图了,有兴趣的自己搜索下。NVMe的盘我只有一块Intel 600P 256GB,而且因为主板M.2只是X2通道所以也不上图了,没什么本质区别。
这一块内存盘的性能,自己和SSD对比下吧,而且因为要用AS跑分,所以模拟成了硬盘,性能比直接用内存要慢一些,但是也已经足够碾压SSD了。

下面放两张三星840 Pro 128GB开启内存加速与关闭内存加速的跑分对比
开启RAPID(三星SSD可以用内存进行加速)
关闭RAPID关闭RAPID
所以,SSD比内存还是慢太多。现在Intel Optane有种特性就是介于NAND和DRAM之间,不过真正产品还没上市,有兴趣可以自己了解下。所以,SSD比内存还是慢太多。现在Intel Optane有种特性就是介于NAND和DRAM之间,不过真正产品还没上市,有兴趣可以自己了解下。

回复 支持 反对

使用道具 举报

14#
发表于 2017-11-17 11:24:11 | 只看该作者 �
我感觉好像没有DMA的时候,硬盘读写就是CPU重度参与的吧。只不过这是286/386时代的事情了。

回复 支持 反对

使用道具 举报

15#
发表于 2017-11-17 11:24:11 | 只看该作者 �
一个最关键的问题是,ssd不能直接寻址。你读ssd时并不是直接给一个地址,而是要先告诉它读那个block,再读block内的数据。且这些操作都是要靠存在内存里指令实现的。

回复 支持 反对

使用道具 举报

16#
发表于 2017-11-17 11:24:11 | 只看该作者 �
你这个脑洞不仅有人开过,还有人做出来了,那个东西叫做忆阻器(memrister),同时拥有了持久化存储和高速存取的性能。而且别人的脑洞开的更大,修改了整个计算机的架构,自制操作系统等等,这就是HP的 The Machine ,然而因为成本太高,似乎项目失败/延期了。
如果忆阻器的成本降低到能够量产的话,基本上Unix时代也就宣告结束了,很多相关的概念也都不需要了,比如说题主说的swap什么的就都可以扔掉了,直接把内存/硬盘空间映射到虚拟内存里边就能跑了。
顺便一说,最先有的不是硬盘而是内存,硬盘是为了持久化储存数据而出现的,否则的话所有的东西都需要打纸带打出来。

回复 支持 反对

使用道具 举报

17#
发表于 2017-11-17 11:24:11 | 只看该作者 �
把cpu缓存提升到4g,能吊打内存几条街

回复 支持 反对

使用道具 举报

18#
发表于 2017-11-17 11:24:11 | 只看该作者 �
题主,冯诺依曼的棺材板我替你压着呢。

回复 支持 反对

使用道具 举报

19#
发表于 2017-11-17 11:24:11 | 只看该作者 �
这个事情就是重新定义内存就行了嘛。说人话就是把内存改个名字嘛。现在剩下的问题就是解决断电以后信息丢失的问题了。有很多公司,比如IBM,正在致力于解决这个问题。

当然你要是觉得价格也是个问题的话,那就没法聊了。

回复 支持 反对

使用道具 举报

20#
发表于 2017-11-17 11:24:11 | 只看该作者 �
硬盘,SSD这些东西都有一个共同的名字叫外部存储器。
外部存储器属于辅助存储器!外部存储器属于辅助存储器!外部存储器属于辅助存储器!
它的功能一般用于永久保存主存中的数据。我们来回顾一下冯 诺依曼结构:控制器,运算器,存储器,输入设备,输出设备。对吧?
这里的存储器里其实并不包含辅助存储器,就好像打印机并不是计算机必须的输出设备一样。
实际上,在计算机刚启动,内存还没初始化之前,BIOS(现在是UEFI)里的最初级的程序在CPU中运行,那时候只有寄存器可以用(没错,缓存也没完成初始化)。寄存器也是主存的一种!也是一种内存!这个时候 ,你意识中的那个内存是还不能工作的!外存更不用说!
别以为只有主板上那个条型的是内存,寄存器(包括通用寄存器,控制寄存器,还有Bios工程师才用得到的调试寄存器)那都是内存~一二三级缓存也都是内存~
现在的x86-64CPU上一般有A0到A63,一共64根地址线(物理线哦,摸得到的,其实就是引脚啦),D0到D63一共64根数据线。(应该是,好久不做这行忘了)。
所以,,,数据想从外存调入CPU,不好意思没路,得乖乖地从内存走一趟。只有内存才有物理的导线直接拉在CPU上,可以被CPU直接访问。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图


芯片搜索

快速回复