龙黑吧 关注:109贴子:2,366
  • 2回复贴,共1

好久没来了,胡扯两句

只看楼主收藏回复

1、RISC-V 必将无敌!RVA22 和之后的 RVA 系列,明显是消费级 CPU 产品方向的设计。ARM 现在终于开始有对手了。延迟了这么久,终于拿出来了一个看上去有希望的中体型指令集和。
2、把 IoT 的人都扔出去!RISC-V 居然设计成只有 4G 程序寻址范围的设计。即便是 64bit 状态下,也只有 4G 的寻址空间!现在的 ABI 直接封死了。社区化开发的问题就是很容易被不同的应用方向而影响导致产品不伦不类。
3、P 扩展还是遥遥无期。V 扩展已经进入 RVA22 的可选,开发中的 RVA23 成为必备扩展。这种思路明显典型的科研思路。
4、还没想好。
5、所以似乎其实 RISC-V 离无敌好像还很远。
从 SiFive 的产品来看,全面化的 AI 支持可能不会被收录。毕竟专用方向不太可能包容到标准化体系内,所以思五的 X280 这种芯片选择了 gc 体系配合自主指令。不过 RISC-V 的轻量模块化设计体现出来了,能让专用计算单元也有标准 CPU 的功能应该能让专用计算芯片有非常灵活的应用方向。


IP属地:北京1楼2023-12-31 00:49回复
    恩,从 2 楼开始,开始做个个人对现在 CPU 产业的评论。
    主要是有段时间没关注国产 CPU 了。
    最近只是看了看 RISC-V 有些体会,感觉 RISC-V 路线,好也不好。
    反正是先要抨击龙芯的 O32 N32 N64 分 ABI 设计,纯纯的延续 MIPS 风格。然而在 risc-v 上,设计层面直接就放弃了 32 位环境的通用化设计。
    Linux 系统 risc-v 的生态定位是直接只有 64 位环境,放弃了 32 位环境的生态。当然 riscv 是有 32 位环境的,但是很明显现在社区都是放弃 32 位环境的状态。
    即便有人说 32 位指针的内存意义。那么对于龙芯的 O32/N32 双路线有怎么说呢?明显龙芯做了个双路线设计。但是实际上又只需要一条。而且从性能上来说 64 位计算性能更好,这个观点来说,O32 没有存在的意义。
    而内存指针内存容量的层面来说,这必然处于数据处理相关行业的层面应用上。不然也不需要这么大规模的指针需求。
    但是数据处理方向,更多的内存意义更大,4G 内存明显是大量数据处理方向的瓶颈了。那么 32 位指针明显又不符合应用需求。纯 64 位环境才是应该的选择方向。这点来说 N32 也没有了存在的意义。
    所以 RISC-V 目前的产业是 Linux 这种通用软件环境配合通用的 64 位硬件。而 32 位的 RISC-V 明显更多的出现在非通用计算领域的嵌入式低成本控制器上。
    这点来说,RISC-V 明显走在了技术思想的前面,而龙芯成了遗老遗少。即便 x86 ,也没有大厂官方支持 x32 这个类 N32 的 ABI。而且现在 x86 也开始逐步放弃 32 位环境了。
    不过我觉得要注意的一点,x86 的 64 位,是在 32 位环境上增量而来。并不是一个全新的体系,这个 ARM/MIPS 等等体系的 32/64 位有本质区别。甚至 aarch64 其实就是一个全新设计的 64 位指令集。
    或者这么说,x86 的 64 位环境下,硬件层面的设计,其实是可以直接运行 32 位的程序指令。当然这里并不是真的能直接运行。毕竟软件环境还是有很大的区别。
    所以,除了 x86 的 32 位本身因素外,其他体系都不应该在讨论 32 位的通用计算了。
    如果真要讨论位数问题,也就是说说 128bit 的时代什么时候来临了。
    虽然 128bit 大家早就用上了。


    IP属地:北京2楼2023-12-31 16:39
    回复
      随着技术的发展,其实 bit 位数已经不能简单体现计算机的设计基础了。
      计算机的位数,更多的还是体现在地址调用层面上。
      然而地址的如何调用,其实也和计算机的位数关系不大。比如指针,典型的就是和位数直接相关。但是其实现在 64 位的计算机,都没有完全实现 64 位的地址空间。而 32 位系统,也可以用扩展方法来超过 32 位的空间访问能力,当然,这样导致了地址访问过程更复杂。
      而更短的内存范围,甚至可以使用指令内的立即数方法,让地址直接写入指令内进行访问。但是这缩小了可用的空间。
      目前来说,bit 长度的设计,更多的还是体现在如何实现最大化效率。
      而 64bit 的空间容量来说,目前来说,还有足够的冗余,并不是急需提升。而真正牵扯到计算的,还是计算机“计算效能”。
      这才是 128bit 早就开始利用上的原因。
      而 128bit 的利用,基于的是 SIMD 技术。也就是一次执行处理多组数据,例如 128bit 可以一次处理 2 个 64bit 数据。
      这样,计算机 CPU 说白了,就是 1 个核心利用 128bit 的 SIMD,在同一个时间实现了 2 个 64bit 的非 SIMD 效能。非常简单的就实现了性能翻倍。
      再配合 CPU 内多组计算单元的同时工作技术(比如把后续的计算任务,提前进行计算,多个计算单元组对实现更宽的 SIMD),单核心很容易的就能实现大规模的数据并行计算,极大的提高了计算效率,提升了“计算效能”。
      不过,随着 SIMD 越来越宽,瓶颈问题就更加的凸显出来。
      因为 CPU 要兼容不同宽度的 SIMD ,就必须对计算指令或者寄存器进行区别命名,防止计算机程序运行错误。导致 128bit 的 SIMD 程序,无法在 512bit 的 SIMD 上面实现 4 倍的性能提升,128bit 的 SIMD 程序,在 512bit 的计算单源上,依然只能进行 128bit 的计算,浪费了硬件的性能。
      这时,曾经的向量计算机思路会来了。
      以前的向量计算机,其实更多的是类似一个工厂流水线,设计好工作过程,从“入料口”灌入数据,从“出料口”就可以得到结果。因为向量是流水线并行作业,每一个步骤连接起来,只要灌入的数据连续不断,流水线就可以连续的高效率计算。
      现在的 RISC-V 和 ARM 都有了这种机制,RISC-V 的是 V 扩展,ARM 的是 SVE2 。
      其实这种流水线机制,在传统的 SIMD 指令体系上是可以实现的。只要区别调用不同的指令,读取对应长度的数据就可以让程序实现批量数据处理。但是这需要针对不同的指令宽度,编写不同的程序,还要根据不同的 CPU 进行区别调用。相对来说,兼容性不如向量机制。不同的 CPU 需要不同的程序,新 CPU 需要新写程序。而向量机制所用的程序都是一样的,实际操作过程由硬件自己控制。
      这样,硬件就可以设计的更灵活,不同方向使用不同的硬件设计,但是又可以共用程序和算法。
      也促进了很多新风格的硬件出现。


      IP属地:北京3楼2024-02-16 13:33
      回复