中文 英语

分区驱动器架构注意事项

专家讨论,第1部分:芯片架构师何时以及如何优先考虑分区?

受欢迎程度

设计分区有多种原因。其一是复杂性,因为分而治之更快更简单,尤其是第三方IP。第二个原因与功能有关,对功能进行划分,使每个功能的大小合适,可能会更有效。第三个问题涉及性能,内存使用和处理可以根据功能优先级进行划分。还有不同类型的分区。

半导体工程坐下来探讨这些问题与雷蒙德Nijssen,系统工程副总裁Achronix;Baum首席执行官Andy Ladd;Dave Kelf,首席营销官Breker;Rod Metcalfe, Digital & Signoff group的产品管理组总监节奏;Mark Olen,产品营销组经理Mentor,西门子的一项业务;Tom Anderson,技术营销顾问OneSpin;和德鲁·温嘉德,公司的首席技术官超音速.以下是那次讨论的节选。

SE:分区是一个非常复杂的主题,因为分区有不同类型。从系统层面,你如何从架构上决定在哪里放置什么,如何根据各种原因划分不同的部分?当架构师正在进行设计时,他们如何围绕分区划分决定优先级?

Nijssen通常情况下,建筑师完全从上到下地解决一个问题,所以他们有“这个功能,那个功能”。“他们知道数据在系统中的流动,但他们还没有考虑最终如何返回到实际的硬件,无论是cpu、ASIC块、fpga还是其他东西。所以他们首先会假设他们可以做任何他们想做的事,但当然他们不能完全忽视现实。在某种程度上,他们必须将其分解成多个部分,这就是分区工作开始的地方,他们开始进行架构设计。“这个东西必须进入FPGA,但如果我把它放入FPGA,那么它就会像每秒几tb的数据在这个块和那个块之间流动。“所以这个块也必须被拉到这个FPGA中。但是现在FPGA都被填满了,所以我必须把别的东西拿出来。这已经像是架构级别的分区任务了。它是自上而下的,越来越多地意识到实际的硬件功能和市场上的东西。你不能假设你会有一个(简单的)芯片,所有的内存都将处于on-die状态。有很多这样的任务,从上到下,开始被拉进系统架构。 Those are all partitioning tasks, where different parts of the system are getting mapped to a different part of the system.

梅特卡夫:在建筑方面,我们划分了很多不同的东西。但即使在片上系统级别,也需要进行分区,我们经常看到的一件事是,从架构的角度来看,分区很好,但从实现的角度来看,并不总是很好。通常情况下,重新分区发生在您获得初始分区之后,然后您必须更改它以实现物理实现。

SE:你重新划分到什么程度?

梅特卡夫:这真的发生在心流的早期,因为一旦你做出了承诺,以后就很难撤销了。但是您可以使用您的逻辑分区并开始重新划分物理限制,然后您将开始片上系统开发,因为您可能还拥有无法控制的IP。那必须是一个独立的分区。分区不一定只是架构上的事情。这是一种重新划分,以后可能会用到。

安德森我想补充四个重要方面。一个涉及到您将要使用的IP块。在大多数芯片中,人们很早就决定了他们将使用什么处理器,多少个处理器,这些都是非常基本的决定加上任何变化。您甚至需要在架构分析的早期阶段就意识到这些问题。第二个方面是如何将它们连接到顶级总线结构。现在和过去几年的一个热门话题是芯片上的网络,通过使用一堆由完全异步总线连接的独立芯片来减少总线结构,解决了一些旧的验证和实现挑战。这往往很早就决定了。权力是第三个方面。功率域是目前市面上所有芯片的基础,无论你在制造什么。人们想要更多的电力,有很多技术,但大多数都可以归结为随着时间的推移,在整个区块上关闭或降低低电压的电力。 That’s not decided quite as early, but it’s in the minds of the architects pretty early on because power is very much a part of the system specification. The last thing is the notion of designing with verification in mind, and maybe even changing your design a little bit with verification in mind. It’s something that’s been floating around for a while. I’m not convinced that it happens very often, but being in the verification space. Maybe using a NoC is one way to reduce the verification problem. So you have a bunch of blocks you really can verify independently, you verify the bus formally, make sure the protocol is right, and maybe you don’t actually do a whole lot with that whole chip as a monolithic verification entity. Those are the different dimensions as I see them.

Kelf我们看到正在发生的一件事,回到整个便携式刺激的事情,是当你从设计的角度划分芯片时,很难从验证的角度划分。所以每块都是单独测试的,非常彻底。创建了许多UVM测试来解决所有这些问题。然后是片上系统。有一个阶段是基础设施验证,在这个阶段,你要确保事物正确连接,区块基本正常工作。如果你有缓存一致性的要求,那就都被排除了。诸如此类的事情。然后在此基础上进行软件测试,启动Linux,诸如此类的事情。我们发现,尽管你可以划分设计,但在那些独立的博客中划分验证场景或者试图通过分解来减少验证负载几乎是不可能的。那么你如何创建这个高级场景并围绕芯片进行驱动测试并实现这一切呢? It’s now becoming a really big problem, and as you add more of these blocks, trying to figure the verification plan out is very tough—and un-partitionable.

拉德架构师必须在性能和电源方面做出决定,所以他们不仅要确保硬件是正确的,而且电源的软件管理也要正确。他们在没有大量数据的情况下做出了很多决定,这些决定是在设计周期的很晚的时候才做出的,那时他们还不能真正说,‘我们能实现目标吗?他们怎么知道自己在软件和硬件方面都做出了正确的决定?然后当它最终被实施时,他们会是正确的吗?如果他们不得不重新调整分区,那就太晚了。他们不再有灵活性了。

Wingard回到你最初的问题,我几乎从来没有遇到过一个系统架构师能够灵活地从一张白纸开始。几乎每个系统都是其他系统的迭代。所以虽然每个人都想要这种抽象的,自上而下的东西,但对大多数人来说这不是现实。分区仍然非常重要,但是优秀的系统架构师都是抽象大师。他们可以在最高级别上理解系统,以及他们不允许更改的组件。他们可以深入到那些他们需要改变的地方,要么是因为有一个新的功能,要么是因为上次有一些东西太强大了,每当他们试图描述正在发生的事情和他们要优化的事情时,它就会闪烁着红色。所以这些划分的选择是非常谨慎的。作为NoC提供商,我们希望能够尽早做出分区决策,因此关于逻辑分区和物理分区之间差异的讨论对我们来说是非常真实的。通常都是围绕着权力。建筑师可能会说,‘我有这些基本的权力领域,我需要担心。’ And then the physical team says, ‘Well, that’s great, this part of the power domain is over here, and this part of it is over there, and logically that’s okay, but we’re going to have to restructure the netlist automatically as we go to build the thing. A good thing about NoC technology is we have a sufficiently abstract model of communication that we’re in a position to do that and hopefully protect all the performance work that’s been done in the architecture to that point. We’re also a provider of power control technology, and there’s a full dual in that domain as well that the control of those different power domains and the clock domains and everything else is also very fundamental to the partitioning of the system—especially when we start to think about extremely low power modes where battery life is dependent upon how much of the chip is always powered.

克拉我也在验证和测试方面工作了很长一段时间。分区并不是什么新鲜事。我记得在20世纪80年代和90年代,我们为可测试性进行划分——为测试设计。如何划分扫描链?如何划分同步与异步逻辑?如何划分内存用于内置自检或LFSR MISRs[线性反馈移位寄存器,多个输入签名寄存器]用于逻辑内置自检。所以这可能是早期为分区而设计,需要考虑的架构问题之一。我们已经进入了设计,我不知道是否验证,电源优化,时钟机制,控制,以及能够打开和关闭时钟,这也是与电源有关的。但看看所有这些,然后是整个可移植的刺激,这是在系统级别上以某种方式重新使用分区ip级刺激的能力。信不信由你,我们看到的是另一代的DFX,它是为安全而设计的,这是我们看到我们的客户如何划分ASIL A, ASIL B, ASIL C, ASIL D级别的另一个领域。 ‘How do I automatically synthesize and partition safety mechanism controllers? How do I understand how to automatically inject triple-level redundancy voting mechanisms in my high risk areas?’ All of these things are starting to creep into the architectural analysis area. And you said you’ve never seen someone start from a blank sheet of paper. There’s always some kind of requirement, whether it was DFT or design for verification, or design for power/performance, and now design for safety. There’s always some kind of level of requirement that’s early on—functional safety, data mining and machine learning.

安德森在混合中加入安全是一个好主意,因为如果你看看我们在这些安全依赖领域所遵循的标准,比如航空航天中的自动驾驶汽车等等,它们都有这种安全关键逻辑的概念。它有特殊的规则。它必须防止在野外出现随机错误,等等。你必须能够识别出这是什么,这会影响你的划分。这是我要特别处理的透明盒子。我得专门分析一下。在这个芯片被接受之前,甚至需要有人进行外部认证。

SE:当你不是从一张白纸开始时,你能重新划分设计中你不能改变的部分吗?这是可能的吗,还是说你做得太过火了?这对其余设计和架构的决策有什么影响?

Wingard作为一名工程师,我必须紧跟“不能”这个词。“我们总是可以改变的。问题是成本是多少?那堵墙有多陡?我需要多少级别的管理批准?我可以去买新版的处理器核心。这样会更好,也会让我的工作更简单,但总有人得开一张大支票,总有人得让某些东西变得坚硬诸如此类。我们总是惊讶于我们在客户基础中发现的聪明程度。你认为很难重新划分的事情,人们会找到方法来做。有时这并不是一个纯粹的重新划分。在过去,分区是关于硬件与软件的,而我们发现,在每一个层次上都有一个洋葱,现在在每一个层次上都有硬件与软件的权衡。 So you may have the audio subsystem, which has its own hardware/software tradeoffs, and that audio subsystem goes into this next level subsystem. And then you got this…and we’ve got many layers of this because we’ve got programmable processors all over the place. So one of the things we find is that sometimes the re-partitioning choice is to say, ‘I can’t change the bulk of this, but I can pull that function out of it. That software function that was running in this part, I can take that and I can move that over to something else, and maybe that helps me from a power perspective.’ So now there is this big honking thing so that when he’s doing the main function, he’s got to be turned on, he doesn’t have to be turned on all the time, and maybe I can optimize around my power envelope by moving this task someplace else. Maybe I’ll move that task into dedicated hardware or programmable hardware.

梅特卡夫:这是一个非常好的观点,因为分区决策变得比过去更加复杂。正如你所说,这不是一个新的讨论,但现在我们有3D芯片。晶圆被粘在了一起,所以现在在一个骰子上分区的同时,也在另一个骰子上分区。所以你的重用案例是一个很好的例子因为你可以保持一个骰子不变因为你不想碰它。另一个放在它上面的骰子,你可以在上面加一些IP来加快算法的速度,所以你不仅仅是在一个骰子内部进行分区。你可以在多个骰子上进行分区,然后整个重用的事情就变得更加有趣了。



留下回复


(注:此名称将公开显示)

Baidu