EEJournal

专题文章
现在就订阅

XMOS:使用RISC-V在软件中定义soc

我的大学学位在美国被称为合作课程。这代表着“合作教育”,指的是一种平衡课堂理论与实践经验的课程。在英国有两种类型的此类课程。其中一种类型被称为“瘦三明治”,因为它包括在大学内外交替的6周时间。另一种类型,也就是我吃的,被称为“厚三明治”,因为它需要更长的时间。我记得,我们上了一年大学,在外面工作了6个月,又回到学校工作了一年,在外面工作了第二个6个月,然后回到学校度过了最后一年。这一切在当时似乎花了很长时间,但现在回头看,它似乎飞逝而过。

我的第一段工作经历是在一个叫菲尔顿(Filton)的小镇上的罗尔斯·罗伊斯(Rolls-Royce)航空航天(Aerospace)工厂,这个小镇位于布里斯托尔市(Bristol)以北约5.5英里处。我在布里斯托尔度过了一段美好的时光,这是一个美丽而历史悠久的大都市,有许多美丽而历史悠久的酒吧,出售漂亮的历史酒杯苹果烈酒苹果酒(一种非常烈性的啤酒,聪明人只喝一小杯——如果我是聪明人就好了)。遗憾的是,我在那里完成培训后再也没有回到布里斯托尔,这是大约45年前我写下这些话的时候。

我之所以提到这一点,是因为这家公司XMOS总部设在布里斯托尔。在过去的几年里,只要我在英国,他们就会邀请我去拜访他们。问题是,无论何时我在英国,都是去看望我亲爱的老母亲,她不让我离开她的视线。

为什么我要在XMOS上胡言乱语?假设您希望创建一个用于物联网(IoT)的新设备。您将需要某种类型的处理器,有几个选项可供您选择。例如,您可以决定使用一个常用的现成微控制器单元(MCU)或应用程序处理器(AP)。

这里的问题是,物联网的特征表明,你将无法找到一个完美匹配的MCU或AP。它要么拥有比你需要的更多的功能,在这种情况下,你将最终为你永远不会使用的功能付费;要么它不会拥有你想要的所有功能,在这种情况下,你将不得不增加你的材料清单(BOM),增加一个或多个额外的设备(皱眉)。

另一种选择是创建片上系统(SoC)设备。这可能包含一个或多个ARM处理器核心以及一堆其他知识产权(IP)块。好处是这将产生一个非常快的处理解决方案。缺点是,你可能需要三到四年的时间才能完成录制,花费高达5000万美元。还有一种可能性是,当你终于把芯片拿在手里时,你的产品所瞄准的市场可能已经朝着与你的时髦新设备不兼容的方向发展了(超级皱着眉头)。

还有一种选择是使用现场可编程门阵列(FPGA),如果您能够接触到具有FPGA设计专业知识的熟练硬件设计工程师,那么这是非常好的选择。这里的问题是这些男人和女孩供不应求。我不确定确切的比例,但我不会惊讶于每个FPGA设计师对应100多个软件开发人员。事实上,如果你告诉我比例是1000比1,我也不会感到震惊。

所有这些都让我们回到了XMOS的小伙子们和他们的XCORE设备上。它们比传统的mcu更强大,比ap更便宜,可以买到现成的(不像soc),并且可以由传统的软件开发人员使用(不像fpga)。

我以前写过关于XMOS的文章(请参见离语音控制又近了一步而且智能事物和健谈的人的新一代语音接口).您可能还记得,XMOS是一家无晶圆厂半导体公司,开发多核微控制器,能够同时执行实时任务,实现极端数字信号处理(DSP)、人工智能(AI)和机器学习(ML)应用程序,并管理控制流程。XMOS微控制器的特点是它们完全确定(可预测)的行为。

让我们的大脑围绕这个问题最简单的方法是通过一个方便的图表,如下所示。

XCORE架构(来源:XMOS)

我们从一个tile开始,它有一个标量、浮点(FP)、向量、控制和通信流水线处理器。这个tile有自己的本地紧密耦合内存(不是缓存)。与tile相关联的还有八个硬件线程。设备上有两个这样的磁贴,每个磁贴都有64个通用输入/输出(GPIO)引脚。这些瓦片可以通过高性能的交换结构相互通信。观察一下,这个开关结构也呈现给了外界(我们将很快回到这一点)。

需要注意的一点是,线程不涉及传统意义上的上下文切换。这些都是硬件线程——每个线程都有自己的寄存器文件,维护自己的状态,并有自己的内存访问权。从本质上讲,每个线程都拥有自主运行所需的一切;它只是碰巧共享了处理管道,但是它共享管道的方式是完全确定的。

正如我在之前的一篇专栏文章中所写:“XCORE架构在硬件上提供了许多通常在实时操作系统(RTOS)中看到的元素。这包括任务调度程序、计时器、I/O操作和通道通信。通过消除时间不确定性的来源(中断、缓存、总线和其他共享资源),XCORE设备可以为许多应用程序提供确定性和可预测的性能。任务通常可以在纳秒内响应外部I/O或计时器等事件。这使得编程XCORE设备可以执行硬实时任务,否则需要专用的硬件。”

如果仔细观察上面的图表,你会看到USB和MIPI的物理层,但没有USB或MIPI的IP功能块(物理层提供与外界的模拟接口)。这是因为所有常规通信函数(如USB)和接口函数(如MIPI)——以及无数其他函数——都是以软件库的形式提供的,其中每个函数最终都在一个或多个硬件线程上运行。这意味着开发人员可以为当前项目选择所需的精确功能组合。

除了XCORE体系结构的灵活性(一切都是在软件中设计的)和确定性(它就像在硬件中实现的RTOS一样)之外,真正的区别之一是它的可伸缩性。如果开发人员决定在未来的产品实现中需要更强大的处理能力,他们可以简单地添加一个或多个XCORE芯片,通过外部呈现的交换结构连接。几年前,作为概念验证(PoC)来演示这种可伸缩性,XMOS的人员创建了一种名为XMP64的板子,它具有8 × 8的XCORE芯片阵列,每个芯片有4个瓦,每个瓦有8个硬件线程。这就像你拥有2048个处理器一样(你听到的远处的“砰”声是我的大脑在爆炸)。

再看一下上面的图表。你发现了什么意外的事情吗?是的!你说对了!硬件线程携带RISC-V注释。这是因为XMOS的伙计们最近宣布他们的设备的下一个化身,第四代XCORE架构,将兼容RISC-V。

这是个大新闻。他们曾想过用他们的第三代架构来做这件事,但在当时(大约2017年),他们觉得RISC-V的广泛采用并不是不可避免的。XMOS的使命一直是尽可能使使用他们的设备成为常态,以确保最大的开发人员受众能够充分利用这项技术。他们现在相信RISC-V会被广泛采用不可避免,这就是为什么新的XCORE架构是兼容RISC-V的。

所有这一切的最终结果是,开发人员将能够使用熟悉的RISC-V工具享受熟悉的RISC-V体验,同时创造高度差异化的结果。这些新的兼容RISC-V的XCORE设备预计将在今年晚些时候上市,对于我来说已经等不及了。你说呢?

关于“XMOS:使用RISC-V在软件中定义soc”的13个想法

  1. 你能列举几个“熟悉的”RISC-V工具吗?
    “所有这一切的最终结果是,开发人员将能够使用熟悉的RISC-V工具享受熟悉的RISC-V体验,同时创造高度差异化的结果。”

    1. 我们发布的编译链将建立在LLVM项目对RISC-V ISA的现有支持之上。这为我们提供了C/ c++编译器、链接器和汇编/反汇编器,这些将是熟悉的,并且仍然支持对指令集的xcore扩展。还有许多针对RISC-V目标的模拟和调试工具。

        1. 我听说了很多关于HLS的优点,但我也听说它并不像人们希望的那样容易使用(不完全是一键式的)。

          1. 你好,马克斯。这里有一些我用于调试的赋值表达式。和我想象的一样简单。main()是为了引起编译器的注意,实际上什么也不做。

            main ()
            Z = 2 * 3 - 4 * 5;
            A = 11 + 12 * 13 - (14 + 15) * 10;
            X = 2 * 3 + 4 * 5;
            Y = Y + 1;
            X = 5 - 10;
            B = 4 + 6 - 17;
            Y = 2 + 3 * 4 - 4;
            X = 2 * 3 + 4 * 5;
            Y = 2 + 3 * 4 - 4;
            Y = 0;
            Y = 2 + 3 * 4 - 4;
            Y = Y + 2;
            Y = Y + 1;
            X = 2 * 3 + 4 * 5;
            A = 11 + 12 * 13 - (14 + 15) * 10;
            Y = Y + 1;

            我使用c# API在Visual Studio IDE的调试模式下读取、解析和计算。这背后的秘密是编译器使用抽象语法树和基于堆栈的计算,HLS可能从来没有考虑过。

            和我想象的一样简单。

            编译器和Visual Studio都是免费开放源码使用的,如果我知道怎么做,我会把我的源代码作为开放源码添加进去。

            另一个项目是计算布尔表达式的条件赋值表达式。

            这对你这种人来说很有吸引力。

    1. 好吧,基于他们有数百家公司使用这些设备的事实,我会说“相当多”。但是,我将再次要求XMOS的人员做出回应。

      1. 你好,马克斯。我的道歉-我是在传统意义上的多线程,但你已经覆盖了。

        但我不认为有必要分享任何东西。

        我选择使用FPGA,它需要3个嵌入式内存块和几百个lut来实现一个非常快的“线程”,因为内存是全双端口的,每个“线程”都有独立的内存,允许内存实际用作寄存器。

        (这是我找不到的原型,我正忙着创建一个新的设计,花费了太长时间)
        我将继续努力。

  2. 我希望看到一个现代的微内核操作系统(在Rust中)能够利用这一点,即使它是在容器中运行Linux以获得采用。也会喜欢sailfishhos手机运行这个

    1. 不需要操作系统。RUST是否使用AST?像Roslyn这样使用AST并提供API的编译器就足够了。

      我知道微软是一个肮脏的词,但我在这里告诉大家,c#编译器API包括一个“SyntaxWalker”是非常有用的。

      哦,但是它使用了一个堆栈,一个堆栈可以溢出是一个常见的回答…那又怎样?每个编译器都使用堆栈,并且通常从堆栈中分配内存。我的设计使用一个内存块的堆栈,如果它溢出没有伤害(除非它是一个bug)

留下回复

有特色的博客
2023年3月27日
Spectre EMIR, Voltus-XFi内部的模拟引擎,提供红外降和电磁电流分析。在对报告的客户问题的审查中,发现许多Spectre EMIR问题可以通过适当的准备和设置来避免。最常见的问题是幽灵EMIR…
2023年3月23日
探索AI芯片架构,了解AI的需求和应用程序如何在处理器、内存芯片等方面塑造AI优化的硬件设计。为什么AI需要新的芯片架构这篇文章首先出现在芯片设计的新视野....上
2023年3月10日
一个经过验证的指南,使项目经理成功地接管正在进行的项目,并完成工作!

有特色的视频

第一个CXL 2.0 IP互操作性演示与遵从性测试

Synopsys对此

在本视频中,高级研发工程师Rehan Iqbal将指导您通过Synopsys CXL IP通过合规测试,并演示我们与Teladyne LeCroy Z516锻炼器的无缝互操作性。这个首创的互操作性演示证明了Synopsys致力于提供可靠的IP解决方案。

点击这里了解更多关于Synopsys CXL的信息

特色粉笔谈话亚博里的电子竞技

Matter & NXP
多年来,我们不断增长的物联网生态系统的互操作性一直是一个挑战。但是新的物质标准正试图改变这一切。它不仅能让家庭更智能,而且我们的设计也能让生活更轻松。在本集Chalk Talk中,来自NX亚博里的电子竞技P的Amelia Dalton和Sujata Neidig研究了Matter将如何通过提高互操作性、简化开发并提供全面的安全和隐私方法来彻底改变物联网。他们还讨论了Matter的路线图,以及恩智浦的Matter参考平台如何帮助您开始下一个物联网设计。
2022年9月20日
23887的浏览量
Baidu