我看到这种成分编程论点有点令人困惑,所以让我用凿子分享我的故事。
我有一个长期的个人
项目 在高级数据结构的区域。它'主要是一个个人研究和乐趣的源泉,但我有一些非琐碎的生产经验。这个想法有点类似于凿子/ rocetetchip,而不是产生硬件,而不是发电'm生成特定于应用程序
数据存储和处理引擎 基于高级要求。实施非常不同,Memoria正在使用C ++ TMP,因为它的成分曲线核心甚至没有凿子差不多's one.
由于高CPU成本,高级数据结构被认为是不切实际的。数据通常以某种压缩格式存储在内存中,因此每个访问操作可能在其时间复杂度的O-估计中具有非常大的隐藏常数。 OOO有很多帮助,但并不是't真正的区别。然而,潜力是巨大而非常吸引人的。例如,我们可以使用压缩的多维空间树(每个节点的空间复杂度)来编码功能逼近并使用它而不是多层的感知(模数维度的诅咒)。感知物具有线性复杂性,形成隐藏层中的参数的数量,但空间树具有对数复杂性。功率受限用例的巨大差异。
计算密集型应用程序需要特殊的硬件,从另一侧,必须具有软件驱动的设计。或者
软件硬件共同设计,如果我不'误用了这个术语。我试图跳入HDL区域以开发Memoria的应用程序加速器,但实际上HDL是另一个全职+作业。和我'm已经有两个(常规工作和个人项目)。无论如何,没有与HBM内存的FPGA,以及我的所有这样的事情'M与内存界限交谈。但最近我可以用8GM HBM购买Alveo U50,这是一个像我这样的爱好者的游戏更换者。另外,Arty A7-100作为一个"starter kit".
很短的故事短,我能够在几个周末在我的arty a7-100上运行的DDR3在我的ARTY A7-100上运行定制版本的RV64多核设置。零对英雄。原始自由SDK不为E310软RISC-V核提供DDR3(因为它'S MCU),我必须自己解决问题。重要的是,我在设计空间内有很多自由。我可以实施单身"fat"OOO核心,甚至是多芯SOC,或多芯(U50 + ON U50)的小型核心系统,配备了专用加速器。
后者是最重要的。给定特定的问题,我可以推断它需要的硬件加速(矩阵乘法,FP-contensic,整数,内存密集,以前的一些特定内存层级等的一些组合)和
生成 用于RVXX核心的特定加速器,以及
软件部分.
这是软件硬件共同设计的(在列表中我看到它是怎么看的)。 Chisel + Rocketchip负责硬件部分。但为了更好地了解这项技术,应该进入更大的过程的背景下,有多个发电机负责系统的不同方面。
凿子,作为独立技术,即使为自己也不令人印象深刻。 Scala对Metaprogramming很好,正如我上面所说的那样,但不幸的是它's not
够好了鉴于现代要求。 Scala.'S构建工具仍然基于好老"make"80日的范式,但现在"on steroids"。我们所需要的是基于全功能的基于数据平台,具有精确的外部自动化和集成的RESTful API,将整个构建过程与通过此API的所有中间工件一起公开到像IDE这样的外部工具,我们需要在中间的顶部需要可扩展的分析数据。与今天'S Scala您将难以在IDE中正常运行的Rocketchip。新兴语言更广告模式是正确的方式,但它'仍在婴儿期间。 C ++无处可靠近和Scala,但我'm working to
解决这种情况.
当然,凿子的整个凿子不是HDL本身,而不是Scala。它 'S利用中间代表预处理进行各种自动化任务的先进软件工程实践正在进入传统保守的硬件设计和工程。凿子只是早期的鸟类之一。更好的事情即将到来。感谢Rocketchip,我可以在几个周末在我的项目中跳动全新的地区。是的,它'是活着的好时机