中文 英语

分区驱动器架构注意事项

与会专家,第3部分:各子系统的系统;异构系统;re-partitioning。

受欢迎程度

半导体工程坐下来讨论分区与雷蒙德Nijssen,系统工程副总裁Achronix;Baum首席执行官Andy Ladd;Breker首席营销官戴夫•凯尔夫(Dave Kelf);Rod Metcalfe, Digital & Signoff group的产品管理组总监节奏;Mark Olen,产品营销组经理Mentor是西门子旗下的企业;Tom Anderson,技术营销顾问OneSpin;以及Sonics的CTO Drew Wingard (Sonics于2019年3月被Facebook收购)。以下是那次讨论的节选。如需查看第一部分,请单击在这里.查看第二部分,单击在这里

SE:当涉及到所有参与者都不同的复杂系统时,你如何知道不会出现多个系统组件陷入僵局的情况?

梅特卡夫这是非常重要的一点,因为这也发生在芯片级系统上。很多次我听到人们说,‘我们在这个片上系统上需要的是一个3千兆赫的CPU。这将解决我们所有的问题,但只要你有一个3 GHz的CPU,问题往往转移到其他地方。如果你不能在CPU上获取数据,它就会在很多时候处于空闲状态;也许GPU架构会更好。这种对高速cpu的执着只是分区问题的一部分。你可以非常快速地完成分区的一部分,但如果没有其他的东西,它就不会做太多所以分区,相对而言,针对所有不同的分区是同样重要的。你不希望一件事情做得很快,而其他事情都跟不上。

SE:在异构环境中,就实际需要进行的分区和所需的测试平台而言,这与非异构环境有何不同?作为一名建筑师,你是如何看待这个问题的?

Nijssen这是完全不同的,因为它要复杂得多。假设你可以用一个处理器,一个运算符可以做所有的事情,那么我就需要知道那一个,我需要非常了解它,然后我就可以推理我的系统,它会如何表现,但如果场上的每个球员都会以不同的方式做出反应,那么对于你加的每一个,它都不是相加的,它是乘法的;它变得如此多维,这使得我们很难推断系统的性能,或者系统的完整性,稳健性,坦率地说,系统的正确性。

SE:那么,你会怎么做呢?

Wingard:早期的soc都是异构的,它们必须是异构的。这并不是说人们不知道他们可以放下一组处理器来解决这个问题;这不是一个选择。这个骰子太大了;它不可能达到这个成本。我们最早的一些芯片是最初的数字电视芯片,这种转变有大量的能量处理元素。我必须会做MPEG,我必须能拿出漂亮的图片。我必须有一个显示控件,每一个都有自己的图像处理管道,它们必须以某种方式拼接在一起,因为它是视频,数据集太大了,无法保存在芯片上,所以它们都必须把内存打得很烂。他们有所有这些问题。他们有优雅的解决方案吗? Heck no, but what architects are good at is abstraction and so you have to come up with sufficiently conservative assumptions about the behavior. If you do worst case assumptions, most of these chips don’t work. So the architect has to do sufficiently conservative assumptions about what the actual behavior is going to be and they provision their system based upon those. And then yes, they come back and take a look at it at the end. But none of these people had the luxury of having software that ran on these chips before they were back in the lab; that software wasn’t ready for a long time afterwards. Were there surprises? Of course there were surprises but the best architects figured out what the best way was to be concerned with. And I don’t think that fundamental model changes much, but now we’ve got hierarchies of systems of subsystems of [subsystems], and of course it gets more complex. What I think we lacked then, and lack now, is a semi formal way of describing these interactions. So I would like to have the equivalent of static timing analysis for performance. I would like to have static performance analysis. I don’t think the math is that hard. I think it’s getting the models out of the creators of the different components, some of which will be IP vendors, and some of which would be a person on your design team who can actually describe, ‘I work okay if I’m going to generate traffic that looks a bit like this and as long as I get responses that look something like that, then I’m okay.’ And then you could automatically validate that that’s true when you build the blocks and then I could build a system level performance model that would be formally correct.

拉德:这是可以用于提高性能的基于事务的排队模型吗?

Wingard排队模型的问题是它们没有——因为动态RAM的性能特征是依赖于地址模式的,所以你会得到非常不同的行为,不仅仅是基于事务的数量,而是基于它们使用的地址。如果我们三个都试图在同一块内存上生成地址,那么性能就会很糟糕。

拉德你能不能把这种拥堵现象加入到排队模型中?

Wingard你可以,如果你能理解它,但同样,你必须进入那里。

Kelf:这就是便携式刺激计划的用武之地。Portable Stimulus被宣传为模拟和模拟的可移植性(https://www.accellera.org/activities/working-groups/portable-stimulus),这很好,但实际上是垃圾。我认为它是在试图补充你刚才所说的几乎是一种半正式的方式来描述真正的高性能SoC场景在一个级别上,你可以驱动测试,包括排队,但不只是从排队模型的角度来考虑,而是从一个完整的场景模型来处理控制和数据,同时查看大量内存交互,地址,缓存一致性,以及SoC级别上的所有这些事情,它允许你通过驱动C测试和事务来真正榨干SOC,而不需要在上面运行操作系统,甚至是赤裸裸的真实软件测试。你可以把它看作是一个替代品——几乎是——通过提供场景模型来生成软件测试,同时还有硬件测试,并在一个完整的模型中提炼出SoC。这就是我们正在努力做的。

克拉它被称为“便携式刺激”,但它可能是最容易误导人的标签之一,因为它实际上是一种行为的声明性规范,聪明的工具可以从中产生刺激,但它不是刺激本身。它实际上是一个基于BNF (Backus-Naur表单)的,半正式的行为描述,它实际上允许分区,因为你可以写你的Arm核心描述,你可以写你的PCI Express事务生成器,我可以写USB接口。我们可以划分我们的验证挑战并测试所有这些东西,然后我们可以把它们放在SoC级别上,然后你可以在顶部写一个高级C代码生成器来控制所有这些,所以我们不需要多线程。

Nijssen单个分区的困难之一是它们的行为现在变得越来越动态。缓存的例子很好。该块的计时和性能行为取决于不同cpu上正在运行的内容;它依赖于工作负载。现在在我的验证中,我是否必须集成这些程序的所有可能的交互,这些程序可能在GPU, CPU, FPGA上运行,无论什么,这可能是在同一条缓存线上,或者只是一个混合保持缓存脏,并影响其他的性能,它有一定的QoS保证交付。这样做的问题在于,分割本身的前提是我可以把它们分开,它们生活在自己的世界里,我可以在那里做我的事情,验证它们,实现它们,然后把它们放在一起,然后有一个系统来实现它的性能。我认为我们要指出的是事实并非如此。它们相互作用,它们以一种非常剧烈的方式改变彼此的行为或性能所以分区本身就像一个错误的名称或评估错误的期望至少你可以把这些块分成不同的分区。如果客户改变了他们的工作量,就会有惊喜发生。你认为他们今天会把这个芯片放在一件事情上,以一种方式,明天他们就会在其他事情上做它,或者其他客户出现,或者某个黑客试图进行DoS攻击——这些都是人们希望有性能保证的事情。 In datacenters, for example, they want to have 100.0% of Ethernet throughput. No matter what the packet size scenarios are, you have to guarantee 100.0% regardless of what else might be going on. How do you do that? With all these systems whose behavior is now becoming more and more independent?

安德森“可移植的刺激方案”的承诺,可移植的不是刺激方案,而是模式。我观察到的一件事是,当这项技术开始流行并被更广泛地使用时,人们用于模型的分区通常与实际设计不太相似,而这有一些优点。你有更多的灵活性在你接近最高级别的验证和评估性能和权力的方式,以及我们谈论过的所有其他事情。你必须有一些模型来运行来得到这些答案。您可能有自己的体系结构C模型,它也可能与分区非常不同。这是下一层,可以进行更详细的分析。它仍然没有完全绑定到物理分区。这是一个抽象层次,在可移植刺激空间中具有很大的价值。

Kelf:验证的分区,你确实有这些单独的测试,针对各个块,但是,当涉及到做整个SoC测试时,你可能会在一个块上使用一个检查器,以确保它仍然正常运行,但这些SoC测试是非常不同的,所以现在你是在SoC级别建模。你不能真的把它划分开来,你必须想到一个贯穿整个场景的场景,实际上Tom所描述的几乎就是最佳点,也是这些东西被使用最多的地方,也就是跨这些分区的缓存一致性和性能。而不是试图找出所有单独的测试,找到所有单独的极端情况,基本上你描述了整个事情的高级模型,然后让工具以许多不同的方式工作这个模型,找到许多不同的测试,在模拟器上运行它,这样你就可以运行许多测试,然后尝试解决其中一个棘手的情况。

SE:实际上,这一切的发展前景如何?

Nijssen这真是太复杂了。子系统中的子系统中的子系统相互影响。您不可能在您客户的客户的客户将来可能运行的所有不同工作负载上运行模拟。这里的结论是:无论你是否像你想的那样做对了,你都会犯错。也许这是因为它是不可行的;你不能让整个宇宙的相互作用都在进行。问题是,你该怎么做?你已经制作了硅,你不能等到你有了所有可能的场景和组合,这些场景和组合都是通过仿真或其他建模技术验证的,无论这些技术有多强大。你必须发布你的产品,你可能会出错。你会怎么做? The problem is with the partitioning because these effects spillover between partitions. How do you make your system flexible enough that after silicon goes out you will be able to make that change after you learn, after the new workloads become available that weren’t even available when you were designing or even specified in your market requirements document when you got it. The question is how you add that flexibility to your system so you can adapt to this changing environment.

Wingard:作为NoC提供商,我们必须永远这样做。Dave谈到的不同的场景是我们的客户必须建造多模式设备的前沿和中心,所以我们在仲裁系统中有可编程性,在我们的安全系统中,诸如此类的东西,所以你可以优化模式,但你也可以在实际软件在实际系统上实际板上运行时设置保证金并决定如何分配保证金。这是我们一直担心的问题。

梅特卡夫:分区对调度也有影响。我们之前讨论过不同类型的分区;从实现的角度来看,设计一个包含64个相同东西的芯片与设计一个包含64个不同东西的芯片是完全不同的。当设计师做出分区决定时,他们经常说,‘我可以用这个非常奇怪的硬件来做这件事,但如果我只用CPU来做,我可以更快一点。这是人们每天在做出分割决定时面临的限制之一。

Wingard:实际上,这是我们发现的非常有趣的事情,在这些设计的顶层,那些分区的选择可以或多或少地严格基于后端团队选择使用的设计流程,我们已经看到了一些例子——因为我们是芯片人——“我们希望所有事情都得到优化”,包括时间表。因此,我们遇到了这样的情况:我们付出了巨大的努力,试图构建一个逻辑上可以跨越整个芯片的单片网络结构,但它在物理上将被划分为许多不同的部分。当我们遇到一个施加了早期限制的流(其中引脚列表不能更改)时,我们发现的结果与我们最终使用一个允许更改的流时完全不同。我很想知道,我想您更喜欢客户选择鼓励灵活性的流程,因为我从未见过一个编译零引脚分区幸存下来。存在的证据是,它根本不起作用,但仍然有人似乎想继续这样做。我有点惊讶,这竟然是首选路线。

梅特卡夫方法是非常重要的,这在很大程度上取决于客户和设计。但再一次,回到营销要求,你可以设计任何你想要的,如果你有足够的时间,但营销人员会说,‘我需要在年底前完成这件事。我需要做出什么样的妥协才能让它在年底实现?“好吧,你最好不要那样分割,因为如果你那样分割的话,到年底我们就准备不好了。这个进度组件来自于工程学科之外的力量,但它在交付方面同样重要。

安德森有很多东西是从外面进来的。有一件事我想提一下,已经提过几次了,那就是重新分区。你尽你最大的努力,知道会有一些迭代,认为你已经锁定了它,然后你在项目的后期出现了一些事情,让你不得不回头重新考虑它。也许是竞争对手有一个新功能,你必须添加,或者硅供应商回来,说他们在一些新工艺上错了。你是怎么处理的?在这个阶段,什么最有可能把你搞砸,然后你又该如何应对呢?

Wingard我们围绕发电机打造产品。我的RTL人员不编写RTL,他们编写生成RTL的Python,我们专门在EDA环境中进行了封装,因为作为一个集成了大型芯片的人,在我知道那些东西在那里之前。我们测量的是需要多少分钟才能回到我昨天的位置,所以我们试图建立这项技术。

克拉:从分区的角度来看,我们所处理的问题——我认为我们所有人——是系统架构师倾向于关注设计意图,而分区主要是实现,不仅如此,而且主要是实现。因此,在意图和实现之间有一座桥梁,幸运的是,有了这座桥梁,我们所有人都有了工作。



留下回复


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

Baidu