迅维网

标题: 64位操作系统,64位CPU,加SSD硬盘,是不是就可以省去内存,让CPU直接读取硬盘里的数据? [打印本页]

作者: darny    时间: 2017-11-17 11:24
标题: 64位操作系统,64位CPU,加SSD硬盘,是不是就可以省去内存,让CPU直接读取硬盘里的数据?
很久之前就有这个疑问/设想。起初电脑有内存是因为硬盘的存取速度慢(因为是机械硬盘)、32位的寻址空间不够。现在这两个都已经被解决了,那是不是可以设计一个没有内存的电脑,让CPU直接读写硬盘里的数据。硬盘中也可以有一个空间用来swap,放临时变量之类的。 问题是,这里面有什么问题吗?还是有些问题我不知道,这仅仅是我的异想天开? 谢谢
作者: wsm123123    时间: 2017-11-17 11:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: pybbs    时间: 2017-11-17 11:24
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替代,那么肯定也会有更快的东西出现。
作者: discuznt    时间: 2017-11-17 11:24
“起初电脑有内存是因为硬盘的存取速度慢(因为是机械硬盘)、32位的寻址空间不够。”
啥?谁告诉你的?你这个前提就是错误的,所以所有推论都无意义。

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

内存的好处是,速度快,延迟低。尤其是后者,非常重要。单纯拼速度,DRAM比SSD高一个数量级。拼延迟的话,DRAM是ns级别的,SSD是ms级别的,差两到三个数量级。CPU的工作依赖于低延迟,否则就得像GPU那样高并行高延迟的方式工作了。
作者: nshukwrd    时间: 2017-11-17 11:24
SSD还是太慢。
但是你可以反过来,把内存做大,提供独立供电电池,做到关机内存数据不丢。
然后把这个内存叫成硬盘。
作者: 爱上阿南    时间: 2017-11-17 11:24
SSD还是太慢
作者: keajoo    时间: 2017-11-17 11:24
思而不学殆啊
作者: inmyhome    时间: 2017-11-17 11:24
大概算了一下,速度相当于当年的SDRAM 100MHz,

无非就是慢点,也没啥

-----------------------
根据
@yang shen
提示,考虑到延时问题,SSD带宽虽然够,但是比起RAM延时要大两三个数量级,用起来那不是慢一点两点的问题....是会慢的要死
作者: donaldjackie    时间: 2017-11-17 11:24
查一下PCM相变存储。
作者: 2支棒棒糖    时间: 2017-11-17 11:24
SSD 是有写入寿命的,虽然断电能保存,但目前每个block的极限寿命也就是写入10000次左右。考虑先放入变量的的block,遇到频繁读写的应用,估计个把月换一块,不然也是越用体积越小。

其实SSD也是有cache的,cache一般都用DRAM来实现,聪明的你一定猜到了:
SSD目前的速度不可能比DRAM快了吧, 延迟什么的就更不用说了。
作者: 传奇私服cdegeq    时间: 2017-11-17 11:24
其实内存的成本很低的,而且最普通的内存速度基本上是ssd极限速度的40倍。所以给你提供另一个思路。现在的无线网络带宽可以达到400mbps,基本上这个下载速度差不多50MB每秒。而普通的机械硬盘读取速度在110MB每秒。使使劲把硬盘去掉吧,全部使用网络云盘怎么样?
作者: pybbs    时间: 2017-11-17 11:24
你还不如让硬盘自带CPU
作者: oLjwRgTm    时间: 2017-11-17 11:24
简单放3张图自己对比吧
Intel 730 480GB的跑分图,730的性能不用多说了吧,这是接近满盘的性能,空盘测试还要高些。
v2-01923e0f8a178f18b67b109d1f185724_hd.jpg
登录/注册后看高清大图

这是闪迪至尊超极速 480GB的测试,这是空盘性能。
v2-56eee78af501fbb80caf93bb00b82c36_hd.jpg
登录/注册后看高清大图
以上两块盘应该是可以代表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了。
v2-59b846e615fb649071227df90c2977e9_hd.jpg
登录/注册后看高清大图

下面放两张三星840 Pro 128GB开启内存加速与关闭内存加速的跑分对比
开启RAPID(三星SSD可以用内存进行加速)
v2-707e0c43ac8262b7953e608b75918f68_hd.jpg
登录/注册后看高清大图
关闭RAPID关闭RAPID
v2-3c4fa53dc736cf9d5e64aae222d02137_hd.jpg
登录/注册后看高清大图
所以,SSD比内存还是慢太多。现在Intel Optane有种特性就是介于NAND和DRAM之间,不过真正产品还没上市,有兴趣可以自己了解下。所以,SSD比内存还是慢太多。现在Intel Optane有种特性就是介于NAND和DRAM之间,不过真正产品还没上市,有兴趣可以自己了解下。
作者: shichg123    时间: 2017-11-17 11:24
我感觉好像没有DMA的时候,硬盘读写就是CPU重度参与的吧。只不过这是286/386时代的事情了。
作者: cdixeji    时间: 2017-11-17 11:24
一个最关键的问题是,ssd不能直接寻址。你读ssd时并不是直接给一个地址,而是要先告诉它读那个block,再读block内的数据。且这些操作都是要靠存在内存里指令实现的。
作者: inmyhome    时间: 2017-11-17 11:24
你这个脑洞不仅有人开过,还有人做出来了,那个东西叫做忆阻器(memrister),同时拥有了持久化存储和高速存取的性能。而且别人的脑洞开的更大,修改了整个计算机的架构,自制操作系统等等,这就是HP的 The Machine ,然而因为成本太高,似乎项目失败/延期了。
如果忆阻器的成本降低到能够量产的话,基本上Unix时代也就宣告结束了,很多相关的概念也都不需要了,比如说题主说的swap什么的就都可以扔掉了,直接把内存/硬盘空间映射到虚拟内存里边就能跑了。
顺便一说,最先有的不是硬盘而是内存,硬盘是为了持久化储存数据而出现的,否则的话所有的东西都需要打纸带打出来。
作者: keajoo    时间: 2017-11-17 11:24
把cpu缓存提升到4g,能吊打内存几条街
作者: cGtLUxYT    时间: 2017-11-17 11:24
题主,冯诺依曼的棺材板我替你压着呢。
作者: ylzhang    时间: 2017-11-17 11:24
这个事情就是重新定义内存就行了嘛。说人话就是把内存改个名字嘛。现在剩下的问题就是解决断电以后信息丢失的问题了。有很多公司,比如IBM,正在致力于解决这个问题。

当然你要是觉得价格也是个问题的话,那就没法聊了。
作者: 爱上阿南    时间: 2017-11-17 11:24
硬盘,SSD这些东西都有一个共同的名字叫外部存储器。
外部存储器属于辅助存储器!外部存储器属于辅助存储器!外部存储器属于辅助存储器!
它的功能一般用于永久保存主存中的数据。我们来回顾一下冯 诺依曼结构:控制器,运算器,存储器,输入设备,输出设备。对吧?
这里的存储器里其实并不包含辅助存储器,就好像打印机并不是计算机必须的输出设备一样。
实际上,在计算机刚启动,内存还没初始化之前,BIOS(现在是UEFI)里的最初级的程序在CPU中运行,那时候只有寄存器可以用(没错,缓存也没完成初始化)。寄存器也是主存的一种!也是一种内存!这个时候 ,你意识中的那个内存是还不能工作的!外存更不用说!
别以为只有主板上那个条型的是内存,寄存器(包括通用寄存器,控制寄存器,还有Bios工程师才用得到的调试寄存器)那都是内存~一二三级缓存也都是内存~
现在的x86-64CPU上一般有A0到A63,一共64根地址线(物理线哦,摸得到的,其实就是引脚啦),D0到D63一共64根数据线。(应该是,好久不做这行忘了)。
所以,,,数据想从外存调入CPU,不好意思没路,得乖乖地从内存走一趟。只有内存才有物理的导线直接拉在CPU上,可以被CPU直接访问。
作者: redfree    时间: 2017-11-17 11:24
我来给你形象解释一下为什么不能用SSD做内存
比如我有一个1秒能做60个各种汉堡的机器(CPU),要把汉堡在1分钟内送到5000米外的若干柜台(硬盘 声卡 网卡 显卡等等),我的A号员工快银(一级缓存)能够在1秒内把60个汉堡分类,哪个是麻辣鸡腿堡哪个是巨无霸,然后分类交给50米外的绿巨人(二级缓存),绿巨人把分好类的汉堡根据订单交给950米若干个钢铁侠的战衣(内存),钢铁侠的战衣把个个订单送到4000米柜台手上(总线)。任务完成。

那为什么不都快银送就好了呢?因为快银贵啊全用快银请不起,而且快银请多了不协调会撞车反而耽误时间。
机械硬盘 1T 400块 固态硬盘 128G 400块 内存8G 400块   你来自己算一下 一个128G的一级缓存多少钱,看看自己还买得起CPU不




欢迎光临 迅维网 (https://www.chinafix.com/) Powered by Discuz! X3.4