社会热点

如果CPU缓存足够大的话,是不是可以把系统装进缓存里?

电脑版   2020-11-26 17:53  

如果CPU缓存足够大的话,是不是可以把系统装进缓存里?:这个问题很有意思,所以不请自来答一发。先说能不能把系统装进缓存。我的看法是,把系统装进CPU缓存里的

1

这个问题很有意思,所以不请自来答一发。先说能不能把系统装进缓存。我的看法是,把系统装进CPU缓存里的想法完全可行,因为以现有的技术手段,可以在PC的CPU上做出容量大到装下系统的缓存,但在手机CPU上则不行,至于为什么,后面再说。

CPU和硬盘之间隔着内存和缓存(Cache),速度从大到小依次为CPU/一级缓存>二级缓存>三级缓存>内存>硬盘(备注:二级缓存在CPU内时,运行速度与主频相同,在CPU外时,运行速度降为主频一半,这里假定二级缓存在CPU外)。

各级存储之间的关系可以打个粗浅的比方:硬盘相当于快递仓库,内存相当于快递营业部,二/三级缓存相当于快递三轮车货箱,一级缓存相当于盛着货物(数据)的快递箱。比方不一定精确,能理解就好。

题主的想法是把系统装进缓存,相当于直接把货物放到三轮车货箱,不经过仓库和快递营业部。只要“三轮车货箱”(二/三级缓存)够大,完全可以装下庞大的“货物”(系统)。而以目前的芯片制程工艺,是可以将二/三级缓存做到32个GB,并把它集成到CPU内核外。

一条笔记本用的普通的32GB内存条如下,如果去除封装、周围电路和PCB板,实际芯片面积可能只有整个板子的1/6大。

考虑到缓存是SRAM(Static RAM),属于静态存储器,结构比内存条采用的DRAM(随机动态存储器)复杂,体积是DRAM的6倍,所以32GB容量的SRAM芯片体积差不多就是一根32GB笔记本内存条大小,集成到CPU内核外围后,体积不会太夸张。

我们看到的CPU尤其是电脑CPU,之所以看起来体积不算小,主要是因为封装和引脚撑大了体积,真正的芯片仅比成人指甲盖略大,如上图红框内部分。所以CPU加上32GB二/三级缓存后,整个体积可能并不比下图的“白金至强”大(注意比较至强和人手的大小)。不过这个体积对手机来说还是太大了,能耗也会高到吓人,所以在手机SOC芯片上没有实际操作性。

前面有回答说缓存太大的话,成本会太高。这也不是问题,SRAM仅比DRAM贵4倍,这点开销对土豪来说真不算啥,一般烧友咬咬牙、跺跺脚就能承受。

一句话,在CPU上(CPU内核外)集成能装下系统的缓存,从技术上说可行,从成本上看也并非高不可攀,简单说可以操作。

问题又来了,既然可行,为啥不见英特尔、AMD推出这种产品呢?

答案是,缓存用的SRAM和内存用的DRAM都是易失性存储,一断电,数据清零,你还得重新装操作系统,烦不烦?

有人说,我24小时供电,像服务器那样,应该没问题了吧。

答案是,仍然有问题,CPU每次运算时,并不会用到全部系统代码(实际上也不可能),只会用到很少一部分,换句话说,把系统都装进缓存并不会提升运算速度和数据传输速度,反而会造成资源浪费。

总之,把系统装进缓存,技术可操作,成本也不是问题,唯一的问题是没实用性,这也是芯片大厂们没有推出相关产品的原因。


原创回答,搬运必究。

2

把系统放进CPU缓存是不可能的,因为CPU中的一二三级缓存是SRAM存储结构,这也属于一种RAM随机存取存储器,SRAM只要通电里边的数据就一直会在,但是一旦断电以后里面的数据也没了,这样只要电脑断电或者关机操作系统的文件就会被彻底删除,下次开机也就无法使用系统了。

CPU缓存使用的SRAM的特点就是速度快,而且从一级缓存到三级缓存速度依次递减,容量依次增大,但是CPU缓存最大的缺点就是结构复杂,成本高,占用面积大(一个SRAM需要六个MOSFET),因此我们看到CPU发展几十年来,一二级缓存的容量都保持的非常小,尽管现在有了更大的三级缓存,但是加起来最多也就几十Mb,远远放不下一个操作系统。

当然,为了保证CPU的速度,CPU内部缓存的速度都是非常快的,属于目前速度最快的存储介质,如果能把操作系统安装在缓存里可以获得非常快的运行速度,可惜无论是技术原理还是容量上都无法做到,即使是在未来许多年以后也做不到,所以目前提高系统性能最好的办法还是把系统安装在SSD固态硬盘里,期待未来闪存芯片的性能可以提高到内存的水平吧!

3

不考虑经济性也就是钱的问题,以现在的技术能力,确实可以制造出能装下系统的CPU缓存,但是请相信我,你把系统装进CPU缓存后,结果会让你怀疑人生。

先说缓存(Cache)。缓存是分级的,在手机SOC芯片的CPU中,一般有三级缓存,分别是L1、L2、L3,都是由晶体管构成,区别在于晶体管的多少、大小和复杂程度,但肯定是速度快的缓存,晶体管数量更少、复杂程度更高,更耗电。

那么SOC芯片中,缓存有多大呢?下图是骁龙845的内核X光照片,CPU的三级缓存也就是L3 Cache被我圈出来了,面积占了整个芯片的大约1/70,容量有2MB。

我们假设都将安卓8.0系统装到L3 Cache中。安卓8.0系统大约有1.8GB左右,也就是1800MB,是骁龙845的CPU的L3 Cache的900倍,而L3 Cache的面积大约是整个845芯片的1/70,也就是0.34平方毫米(估算,数字不一定精确,见谅),容量扩大到1.8GB的话,面积大约为304平方毫米,相当于长3.04厘米,宽1厘米,不算夸张啊。考虑到手机还要装应用,流畅运行还要有空闲空间,因此缓存容量至少还要再加1.8GB,总容量达到3.6GB,面积大约为608平方毫米,相当于长3.04厘米,宽2厘米。

芯片封装后才能使用,封装后的面积至少要增加50%,也就是说3.6GB的缓存封装后的总面积至少为912平方毫米,相当于长3厘米,宽3.04厘米,这个面积,现在的手机也能比较轻松装下。

但是由于缓存速度很快,我们都知道,马儿能跑必然能吃,换句话说,3.6GB的缓存耗电量也是上千倍增加,手机估计一会儿就成电炉子了。

即使你解决散热问题,这颗带着超大号缓存的骁龙845速度会不会快到飞起呢?答案令人沮丧,它会从兔子变成乌龟。因为缓存做到这么大,CPU要在一个时钟内访问所有缓存单元,CPU内核不得不降速,而且是好几个数量级的降速,结果就是手机卡顿明显。

花了大笔钱,动用海量技术资源,得到的是一部运行慢吞吞的手机,所以一味增大缓存并不能提高性能,这也是多年来,CPU内核速度在提升,但缓存容量增加缓慢的原因。

4

我看上面的回答都是答非所问的,人家问你能不能装,并没有问你装上后断电了怎么办。

另外还有一大片回答开头就错了说什么空间不够。空间不够吗?单纯论空间大小绰绰有余,大多数稍微好点的cpu L3 cache都达到了10M以上,10M放一个精简的操作系统绰绰有余,不相信的参考你家路由器的系统大小,何况提问者也假设了空间够用的情况下。

但到底能不能装,我个人认为理论上应该能装,尤其是L3 cache就是一个纯数据的 cache,理论上系统能装在内存就能装在L3 cache,但cpu兼不兼容这种场景,操作系统有没有针对这个场景的设计,我能力有限不好说,但我这个回答就是看不惯那一大片答非所问以及直接犯低级错误的。

5

从事软件开发多年,这是一个非常有意思的话题,理论上是可行的但起码要满足两个条件,有这么容量的缓存其实就是不计代价,其二默认的操作系统可以针对缓存进行移植对接。这种想法只是在适用于理想状态下,真是状态下意义不是很大,毕竟成本因素占比还是非常大。未来科技的发展不排除有这种设想,主要因素还是成本方面的问题,现在配置电脑都会带着ssd硬盘,而且ssd硬盘在诞生之初价格也是高的吓人,随着技术的成熟以及产业链的成熟慢慢,成本逐渐下来了。

现在讲下缓存的原理,缓存就是数据交换区,计算机的工作原理是CPU访问的数据都是放置在内存区,如果需要保存操作硬盘来完成,现在常说的运行的程序文件存储在硬盘上,运行的时候在内存上,为了提升效率专门在cpu上集成一个缓冲区,就是我们说到的缓存,cpu的缓存作用就是数据交换区,cpu在访问数据的时候第一优先级先把缓存里面的数据取出来,如果没有再从内存中获取,但这个效率就会下降很多,大家都知道缓存是个好东西,但由于其材质等方面的因素价格要比普通的内存多上好几倍,而且为了不影响cpu的性能体积还不能太大,所以常见的缓存一般都设置的很小,即使很小性能上也会提升许多。

其实这种方式在软件上利用空间换时间的方式,有些大块头的软件为了提升运行的效率提前分配一块内存运行,这样运行的时候直接运行内存中程序,效率就会提升许多,所以无论硬件还是软件都有想通之处,现在的缓存技术已经升级到二级,三级的水准,道理还是相似,就是起到数据缓冲区的作用,而且这里面涉及到一个非常重要的概念,由于数据交换的频度或者调用的次数不一样,对于缓冲区数据的交换需要按照一定的算法规则来实现,不同的缓冲区可能采用不同的算法,不要觉得CPU里面的编程就变少了,只能讲软件无处不在。

多级缓存的原理如果再次深入学习的话,会变得十分复杂,缓存之间还需要固定的通讯格式,如果再加上多核cpu复杂度又是数量级的提升,所以芯片这块国内还是非常大的弱项,主要这项技术需要一个长时间的积累,不是单靠拿出几年的时间就能突击出来的,现在国内能做出来的基本上属于底端芯片,华为的麒麟芯片算是比较高端的了,也是经历多少年的打磨,在技术上距离顶端的还是存在一定的距离,不过随着时间的推移国人早晚会拥有属于自己的芯片技术,毕竟落后的太多了。

所以我们平时在买电脑的时候,一旦想追求点高速度就需要有大的缓存,而且增加一点很小的缓存就能增加不少金钱,所以缓存技术算是cpu里面一项非常重要的技术创新。

希望能帮到你。

6

理论上是可以的,但是考虑到安全性和成本等客观问题,实际中是不会这么做的。

这个问题非常有意思,想要明白其中的缘由,首先需要对计算机的存储模式做以了解。

三级(多级)存储

自从世界上第一台计算机“埃尼阿克”面世,往后所有的计算机都遵循着冯诺·依曼提出的“存储控制原理”。为了更高效的执行命令,设计者们规定了多级存储的模式。

  1. 三级存储(外存):也叫辅存,这种存储是日常中最为常见的,比如说光盘,移动硬盘和U盘。这类存储的容量非常大,可以达到几个T,多用来保存游戏,音乐,视频等数据,断电后可以保留数据。价格相对比较便宜。

  2. 二级存储:这类存储就是我们俗称的内存,可以存放CPU中的运算数据和外部存储器交换的数据,就像中转站一样。需要注意的是,内存保留的数据是暂时的,具有断电易失性。

  3. 一级存储:也成为寄存器,可以理解为“cpu里的存储器”。因为是直接和CPU进行数据往来,所以速度最快,价格也最为昂贵。相应的存储容量也很小,一般只有几个或数十个字节。

高速缓存

当计算机工作时,寄存器,内存,外存每时每刻都在进行数据传输,由于三者可能存在速率不匹配的问题,就会影响到计算机的整体运行速度。高速缓冲存储器(cache)正是为了缓解这个情况而生的。

cache位于CPU和内存之间,规格很小,容量多为几Kbits和几Mbits。通过优化调度等算法,系统的性能会大大改善。

回到问题本身,虽然说目前缓存技术已经比较成熟,甚至有了多级缓存技术,但缓存的容量并没有太大的突破。因为缓存实在是太贵啦!操作系统就以现在最常见的win10为例,32位的win10系统大小为16G,为了保证系统的正常运作,系统盘最少需要20G的空间。如果是64位的操作系统,除却系统固件以外,还需要不少空间来存储注册表之类的其他内容,差不多需要50G的空间!这个大小远不是缓存能够吃得消的。

第二,即使说我们不考虑成本问题,假设真的做出了容量为几十个G的缓存,还是不能直接将系统放进去。就和内存一样,SRAM必须工作在通电的环境下,就像内存一样,如果断电,先前保存的数据就会丢失,即使重新接上电后也不能恢复。


所以说,将系统直接装在缓存里,这个想法很大胆也很有新意,但无论是在经济效益还是安全保障方面,都是不切合实际的。在上述缘由没有得到解决之前,是不可能真正应用到实际生活中当中去的。

7

理论是可以的,但是你要知道一个致命的问题,SRAM的确是速度非常快,如果真的可以把SRAM作为硬盘制造的话,那么系统转进去,那CPU也不用访问内存的缓存了可以直接访问硬盘,我想到那个时候系统的操作速度估计会飞起。但是正是为了让SRAM更快速的读写,SRAM的内部构造要远远复杂于DRAM内存。

一个DRAM内存可能只需要一个电容和一个晶体二极管就搞定了,但是SRAM需要存储单元阵列(core cells array),行/列地址译码器(decode),灵敏放大器(Sense Amplifier),控制电路(control circuit),缓冲/驱动电路(FFIO)这么五个部分才能构成一个存储单位,因此需要放下这么多的元器件,你就可以知道要是用作它作为大量数据村村器一个32GB的芯片得需要多大,即使做出来估计也有大半个手机那么大了,一个512GB的硬盘需要16个这么大的芯片合起来有笔记本那么大了,你就想想吧一个512GB的硬盘都要笔记本那么大,那么一台电脑得要做多大。

上面除了SRAM不能用于高密度集成主流存储器之外,还有一个原因就是其耗电量问题,因为其元器件构成复杂,一个存储单元的耗电量相比较DRAM的好电量就是四到五倍,可想而知,同样存储容量下存储芯片聚合到一块的耗电量有多大,耗电量的增大带来的就是发热问题,估计即使是造出来的这样的芯片,那么每块芯片上面都要放上一个大功率风扇才可以,话题又折了回来了,如果加上风扇的体积,那么一个512GB的硬盘厚度嘛估计就有十几公分,这分明不是硬盘分明是一块诈弹吧,并且你家的电闸也会跳闸了。

当然其带来的速度估计拷贝个100GB的东西也是几秒钟的事情。还有一个就是造假问题,如果是一块SRAM芯片造出来的硬盘估计得个几十万吧至少是这么多。

所以你的设想是好的,但是考虑其本身的一些缺陷问题,其根本不适合做高密度集成的主流存储设备,其目前最成功的应用还是作为各种高速缓存存在,这也是目前计算机制造在成本和性能最完美的平衡,因此不要再搞这样异想天开的设想了。

8

理论上技术上有这个能力,但CPU使用的缓存都是SRAM这种存储器,其特点是速度快但成本非常高,断电则数据丢失,如果把缓存容量提高到能把整个操作系统装进去,那容量至少要4GB以上,那CPU的成本可能提高一百倍,现在一千块钱的CPU要花十万,有几个人买得起这样的CPU呢,再说从系统运行的需要来看也不需要把整个系统都装载进去,只需要把内存管理任务进程管理文件管理这些核心装载进去,CPU根据优化的算法能够预测需要那些数据,CPU预先把这部分数据装载进缓存,只要这个预测达到某个程度使得CPU不空闲下来即可,设计优秀的CPU预测有效率能达到九成以上。

9

就目前的缓存技术来讲,不可能。因为一旦断电之后里面的数据会丢失。

除非将来存储的技术有了新的变化。闪存能够达到和缓存一样的速度。用闪存来当闪存。

10

参考DOS系统,是可以装进去的,另外参考WinPE系统(只读的哦)也是加载到内存中运行,如果缓存够大,当然可以加载到缓存中,比内存速度更快呢。

本文版权归原作者所有,如需商业用途或转载请与原作者联系。

分享

相关信息
 
李靓蕾会原谅王力宏吗

2021-12-30 14:01:01