※ 引述《zzzz8931 (宅男)》之铭言:
: 现在国内的大学工学院计组或计结课程应该很多改教 RISC-V 了吧,
: 这是在美国 Cal 这间学校诞生的指令集,
: 那学生学会了 RISC-V 之后能做什么工作啊?
没想到有人问挂
算是相关产业人员所以来喇赛一下
既然谈职缺,那就来说有哪些地方在用
跟为何要雇用这些人
毕竟大家在资本市场,没有人会散财作没有获利的事情
目前RISC-V最大量被采用的,其实还是MCU/MPU这块
例如存储设备、蓝芽、通讯等等
这块很多IC公司原本有自己的inhouse core/ISA,
但是维护起来很麻烦,你招人进来要train
工具链常常也有一堆陈年臭bug
RISC-V(理想下)可以(在一定程度上)解决这些问题:
有着一个像是Linaro之于ARM的公众平台
提供(相较之下)品质还不错的工具炼、作业系统/driver porting
教材如原po所说,基本上会来这块的多半也会在学校碰过
所以像Q通这类的IC vendor,其实就在逐步采用RISC-V的指令集
(这有公开新闻稿 : https://tinyurl.com/25uxa7c7 )
所以最直接的工作就是会有一些firmware/BSP工程师的刚性需求
但这块的可取代性质高,其实老人也可以在摸个几个星期快速上手
大家打开天窗说亮话,
firmware/BSP code很多时候的effort在于整合、帮忙补洞
senior转职去摸会比junior要补domain knowlege来的好bring up
顶多一些RISC-V自己特有的架构特性需要补比较久
然而,接下来就要说RISC-V自己特有的产业需求了 ——客制化
作为一个新时代的指令集,RISC-V的特点就是模组化与权限阶层化
这点有看过RISC-V规格书的人应该会比较有感觉
我稍微用个很烂的通俗解释 ——
今天假如你跑到一个没人的、新形成的火山荒岛上,
又刚好不在任何国家的国界内
这就是无政府状态,完全没有法律可言
但如果你这岛在某个国家国界里面,
可能就会受到一些最基本的法律限制,例如不可杀人
但你杀了人搞不好也没警察抓你
如果有人开始跑到这岛上,就会开始有政府更深入的立法介入
RISC-V有个最底层最基本的规范框架,即Unprivileged ISA Spec
连这个都不遵循的设计谈不上RISC-V相容
但是一些很简单的micon其实要的东西也不多
反正compiler下一些选项可以编、code可以动,
当RISC-V MCU卖也是卖得起来
(亲身看过)
Unprivileged Spec本身也包含了很多功能性的模组
例如FD即单精/双精度浮点数、B的位元操作......etc
接下来,上面开始跑一些RTOS、跟其他Rich OS
就会开始有Privileged ISA Spec的规范
这时就会有一个RISC-V特有的东西,叫做SBI
它是一个RISC-V特有的概念封装与firmware层
我每次碰到踏入RISC-V领域的新鲜工程师,都会问一件事,
你觉得在RISC-V上面作cache操作是不是CPU ISA spec的责任?
这题答案在会因人而异,我个人的答案是:不是。
RISC-V SBI的规格书提供了一个SBI Call Extension: RFENCE
简单来说,你在RISC-V上面需要作跨核心cache同步
是交给SBI firmware去作操作
至于你这个RISC-V平台要怎么达到这件事情
那是IC/IP vendor的firwmare要提供的
https://github.com/riscv-non-isa/riscv-sbi-doc/blob/master/riscv-sbi.adoc#rfence-extension-eid-0x52464e43-rfnc
作application/OS设计的人的责任,在抽象概念上停在:
我有需要考虑到不同CPU核心的同步问题
我去call一个vendor提供给我的SBI call
下层的firmware会帮我搞定
这点非常不同于任何既有的指令集架构
而这边也就是各家RISC-V开始会有差异的点
例如阿里巴巴的子公司:平头哥半导体的C906/C910等等
就有他自己处理cache操作的设计
接下来还有一个层级,当你想要跑Linux、或著其他的复杂作业系统
RISC-V还有一套叫做Platform spec
他会对于一些上述层级有更加收紧、贴近应用使用场景的管控
这样层层分离,随着你使用的场景越复杂、规格书控管越紧的特性
造就了一个可以在各层级规格书内,进行扩展的可能性
例如你现在想要设计一颗audio DSP,
你不想要一些housekeeping的逻辑、BSP、SDK还要自己刻
所以你选择了类似台湾晶心科技、或著捷克Codasip、美国的SiFive等等IP厂商,
他们提供了最基础的一颗CPU core,
以及他们专用的客制指令集设计框架:
Andes ACE、Codasip CodAL、SiFive SCIE
http://www.andestech.com/en/products-solutions/andes-custom-extension/
https://codasip.com/2021/02/26/what-is-codal/
https://www.sifive.com/technology/scalable-microarchitectures
就可以在上面加上你自己的客制化指令,
来轻松搞出一颗你要的专用处理器,
以及对应的工具链。
ARM是有受到这样的威胁,而推出了所谓的ARM Custom Instructions:
https://www.arm.com/zh-tw/technologies/custom-instructions
但是在先天上就没考虑过这件事情,
可客制化的程度远远不及一开始就在规格书划一块给你玩的RISC-V
如果你是学生没钱,想玩玩看
那我由衷推荐可以去试试看Google的CFU
https://github.com/google/CFU-Playground
以及NeoRV32的Custom extension
https://stnolting.github.io/neorv32/#_zxcfu_custom_instructions_extension_cfu
虽然这个只有提供CPU core的客制,工具链那边你要自己手干inline assembly
或顶多一层很薄的wrapper给你call
但是对学生来说,想要踏进来这是最方便的途径
说了这么一串,重点来了,他的工作内容就是瞄准现在的软硬件整合开发:
一些IC vendor已经嗅到了RISC-V这样的部份,
开始导入这样的设计流程
如果你是懂应用层面有哪些bottleneck、
且有足够的计算机架构知识,知道哪些是可以透过增加客制指令来突破
这种软件硬件通吃的工程师
会有越来越多公开或著不公开的工作出现在市场上
详细的我不能再多说,可以自己观察为什么一些明明是纯软公司
却在一直招软硬整合开发的人