首先,这玩意在嵌入式领域太常见了,很多板子上就是焊着一块NAND FLASH,然后操作系统自己负责控制CPU擦写,前面有人说了,Linux就有支持,不止Linux,很多其他嵌入式OS都有,甚至还有第三方厂商专门做这个。
好处,做板子的厂商省事了(焊个片子很简单),坏处,做软件的厂商很麻烦(不同板子的接口不一样,需要软件做适配)。
答案是可行的,但操作系统需要单独配驱动,需要每个板子配一个驱动,而如果是SATA口,只要适配AHCI/ATA驱动就可以了,二者的难度明显不一样。作为一些写嵌入式系统的人,我几乎没见过谁喜欢NFTL/MTD这套代码,逻辑太复杂太难看了,别指望Windows给每个厂商做适配。
并且这样做速度一定就快吗?未必,CPU是比SSD主控性能要好的多,但影响SSD性能的还包括算法、通道数、缓存,这些如果都打包给CPU做的话,反而是一个负担,只有在特定场景下,这么做才有意义。还就就是怎么访问呢?嵌入式用GPIO,x86的架构下还要跟ACPI结合一下吧?掉电管理咋做呢?
现在NAND FLASH的种类繁多,并没有像DDR那样有统一的标准,所以,拿CPU代替SSD主控只会增加系统复杂度。
如果不计一切代价,技术上当然没问题。
毕竟什么主控啊,什么芯片啊,本质上都和 CPU 一样,都是计算器和控制器。只要把针脚引脚接口暴露出来,CPU 当然可以接管控制。
但是奇怪的是,为什么要这么干?
毕竟那么多外围的控制芯片,其最初的目的就是要分担 cpu 的负担。尤其是高速 CPU 和低速外设之间的速度差异,会导致 CPU 性能严重的空耗(每次存取数据都要慢慢等,而不是外部控制器先操作好加载好再通知 CPU)。
我粗略的估计一下的话,这么一来,恐怕50%的性能下降恐怕少不了。如果把所有外设都用 CPU 直接接管,那相当于废掉了 DMA,我觉得就是一夜回到奔一甚至586的水平了。