百毫秒级别启动、完成任务、立刻掉电……真正的「响应式」系统,终将到来并且普及_风闻
谁在掌握遥控器-2022-05-01 15:32
微博@逮獭科技:
看到有人在聊操作系统,说说我最近的一个感想。
++++
如果有一块移动硬盘,SSD的,你能不能给他装一块电池,比如cr123这种相机闪光灯电池,1500mAh不可充,要可充的话容量减半。
然后这个东西装上一个新电池,或者充电一次,能用多久?
如果使用频率不高的话,每天备份几张手机照片,偶尔也去上面取点资料。文档,图片之类,不是传大片,这东西能不能大部分时间呆在抽屉里而不是象nas一样插着电?
++++
如果你要远程也能访问,而且是直连,不走hub;能够保持连接的最低功耗模块,目前是1mW以内的,可以保持在线,延迟也是秒级的。
如果有云,它还可以定期去云上ping一下,目前的固件有offload到模块上的做法,就是全程保持网络连接,定期ping云,比如30秒,那么当你出门在外的时候,你的手机连上云,找到你想访问的设备,ui上开始转圈圈,几十秒后连上了。
++++
你可能只想取一张照片。
网卡唤醒了处理器,如果没有xip支持,超级快的系统boot现在也得20秒,挂载了文件系统,找到用户需要的问题,post给云,然后……睡下去吗?睡下去再起来可能又得几十秒一个cycle。hibernate有改善但也并没有太大帮助。
++++
但hibernate至少有个好处,就是,比如这块移动硬盘还挺讲究,用了ntfs文件系统,而不是fat。那么下次起来的时候,起码不用再吭哧吭哧读一边磁盘重新挂载文件系统,如果文件系统驱动考虑到这个使用场景的话,它还可以在睡眠之前扔掉大部分无用的内存。精心设计的低功耗系统有能扔掉几个bank内存省电的做法。
++++
然后我们说到了文件系统;文件系统很高大上对吧,但是我们为什么要在这样的应用里使用文件系统呢?哦,设备也会挂到电脑上用算是一个原因。但本质上,现代操作系统里的重中之重的文件系统,是通用的设计,综合考虑了大量压力下的使用场景,只是没有一个跟iot有关的。
++++
如果网络出口就那么点,100Mbps不得了了,复杂的网络协议栈也不是你需要的,USB这种又耗电又消耗处理器资源的设计也是个垃圾(可能hsic更好一点但支持这个接口的芯片已经消失了),pcie强一点也没强到哪里去。
紧凑的小设备里并不太在意pin count,也不会走很长的线,古早的并口又省电又省ip,这个才是低功耗神需要的,还有内存,DRAM显然是太耗电了,psram在fram流行之前能顶很久,内置sram的超低功耗处理器,比如stm32u5,以及能full sram data retention的情况下只有7uA电流,这个是iot需要的。近年来流行的octo spi,德仪狂搞的pru-icss,nxp的各种接近cpld的flex接口,都在往这个方向跑。
++++
回到最前面说的场景,一个超低功耗的无线模块,一个有一点超低功耗存储缓冲的低功耗处理器系统,一个唤醒速度嗷嗷快的非常powerful的强力CPU,在xip加持下迅速完成重量级工作然后咔嚓一下睡下去,把计算结果交给省电的处理器慢慢传输。
简化的协议栈,无论是设备还是网络,简化的存储,激进的non-volatile cache,检索系统,最好m0+级别的处理器也能去索引系统里找到东西以减少GHz系统的启动和运行。
在这些未来面前,现代操作系统,哈哈,哈哈哈哈。可能还是去移植几个驱动到rtos里更合适吧。
++++
Kernel仍然很好,但可能更需要的不是增加feature,而是可以更容易的切割,维护,代码分析,更换简化的调度器和内存管理,容易配置,等等。
++++
能以百毫秒级启动,完成任务,和立刻掉电deep sleep,的真正的「响应式」系统,终将会到来而且普及。但现在的操作系统实践离我们期望的美好,距离还很远。大部分开发者仍然只关心在乌漆麻黑的房子里和轰鸣的风扇以及大功率空调为伍的操作系统。
但我对这种操作系统一点兴趣也没有。万物进化都是在物质和能量的双重限制下缓慢进行的,没有限制的创造,是艺术,不是工程。