大师的抽象

是什么使一个系统设计师比另一个更好?

受欢迎程度

优秀的系统设计师是一个独特的品种。虽然它很容易区分的特征定义一个好的从弱者,这是很难决定谁拥有这些特质考验之前,或是否或如何教他们。

然而,这绝对是一个特定的角度,优秀的系统设计师共同之处。关键是工作能力与许多不同的抽象级别,进入一个系统,在晶体管级开始。

“好系统设计师抽象的大师,”德鲁Wingard说,首席技术官超音速说。“他们能够识别这些部分的设计,他们看到风险,或新创建必需的,或者类似的东西。在这些地区,他们有技能隧道通过抽象层深达必要说服自己去上班。他们没有做到。不过要说服自己去上班,然后他们需要信心黑盒几乎所有其他部分他们确定是安全或稳定。有一个很好的类比,在传统的软件模型库的事情,和能够适应函数,你没有写,因为他们在图书馆一些软件,你刚刚拿起。你需要隧道到正确的抽象级别说服自己你有解决问题的办法。这是我们应该做更多的芯片设计,在块级别,在SoC级别,在不同阶段。”

高级产品管理组主管弗兰克Schirrmeister系统和验证小组节奏,指的是这些类型的工程师“长袍和凉鞋。”“这些通常的人你永远不会期待,有时他们并不那么容易处理,因为他们都解决了这个问题你想与他们讨论他们的博士论文了。”

营销副总裁保罗•霍林沃独立半导体认为,一个好的系统设计是结合了一个不寻常的人的结合能力。“有足够的技术深度理解的影响他们的决定,但广度能够看到系统在其上下文的要求。这是不寻常的。这就是为什么你没有找到太多好的系统架构师。我们教专业早期这些天,所以你会发现很多人会真的擅长的一个方面,但他们不一定会看到大局。”

优秀的系统设计师还需要一个广泛的硬件和软件技巧,根据杰森·安德鲁斯,产品经理周期模型手臂。“基地是一个很好的了解计算机体系结构和软件开发。了解软件与硬件是关键。重要的是不仅要选择正确的IP设计基于参考手册,也理解它如何配置和程序得到最好的结果。架构师使用手臂周期模型常常把模型放在一起调查系统性能却发现系统没有提供文档中提供的结果。该决议通常是一些IP配置和软件编程更改。”

具体地说,系统设计硬件/软件以外的边界扩展到包括从高级系统描述下来实现。系统设计者必须有一个好的理解的实现过程和影响能力,性能,和区域(PPA),他说。

工作展开
现在系统设计需要越来越多的关于安全的知识。系统设计者必须了解安全和不安全的操作模式的细节,如何划分优先级中断,并构建系统不仅工作可靠性,但防止安全漏洞和恶意代码。

安德鲁斯指出,最好的系统设计师也积累了大量知识基础在一个特定的领域,例如移动设计或网络。“这知识库给他们工作负载分析的经验和直觉,性能压力点。在大多数领域,知识是后天习得的增量的项目和设计过程是精致和额外的用例添加到建立一个更好的理解权衡和性能指标。”

他的导师工作与高中学生设计机器人时,项目经理Darrell Teegarden机电一体化在系统性红斑狼疮systemvision.com团队导师图形说,这些技能是很难确定的。“我见过的超级明星,我见过的人你可能会认为是超级明星但谁不是。的不同之处在于这种超越抽象的能力,但仍可以去细节。那些超级明星的人能,超越期望,能够做到这一点。”

是否这是一个人格特质或一种习得的行为是很困难的。“你会看到一些孩子很聪明难以置信,他们不一定能做到这一点,“Teegarden说。“然后,你会看到另一个孩子,我有一个孩子我已经指导了4年——也许是B / B +的学生,不是一个巨星否则,不是AP课程,不是很先进,他非凡的。技能是自主学习能力,这是一个无畏,他们没有意识到他们不应该能够做到这一点。这样的人,他们只是不减速足够长的时间,认为他们不应该自己能算出来。这是下一代的一部分,智能手机的孩子,他们本能地转向资源已经使用在过去的几年里,只是不知道任何不同。他们并不真正想看的书。他们非常足智多谋。的事情在能够这样做的人。”

良好的系统设计可以教吗?
当涉及到的技能需要一个好的系统设计师,以及是否可以教这些技能,爱德华·李教授加州大学伯克利分校说没有人知道答案,但他指出,好的设计师和弱设计师之间有巨大的差异。生产率的差别可以数量级。

有趣的是,他说他没有能够发现任何其他相关人格特质。一些好的设计师是书呆子,他们中的一些人是外向和爱交际。一切都结束了。

一件事非常一致的光谱系统设计师,当他们设计好,设计工件本身,是否这是一个程序或硬件设计,形成了一个故事,你可以阅读,李说。“这是部分的能力清楚地表达自己的语言被设计。一个程序写的一个好的设计师通常是非常可读的。你可以阅读它像一个文本,而一个程序写的疲软的设计师没有一致性。例如,它可能把事情分成功能,没有人能真正解释什么函数,程序员不解释,只是一些特别功能,真的没有任何逻辑把它变成一个模块。与此同时,一个好的设计师,一个单一的、描述的函数可以清楚地理解句子。他们并不总是把这句话放在代码,所以他们不一定文档他们在做什么。但是当你困惑通过他们所做的一切,你可以看到有一个句子解释什么模块化的这一块。在某种意义上,这就是我意思形成的叙述。块都有一个角色,可以解释说,而疲软的设计师往往会偶然发现一个设计通过迭代试错的方法。 They try something, it doesn’t work. They try something else, it doesn’t work. By the time they get something working, they don’t really know why it works, they just stop there and leave it done. A good designer will always be able to explain to you why it works.”

虽然有一个明确的技能需要解决下一代挑战在系统设计中,他不认为当前的教育体系是特别好结构创造出好设计师。

“的一个挑战是,它似乎更难教好的设计在传统课堂里设置。在某些方面你可以利用技术来帮助一些。例如,软件设计,静态分析工具,分析(圈)的一段代码的复杂性。这些都是定量措施指标有时更好的或者贫穷的设计。他们没有很好的指标,但总比没有好。真正的挑战是分析设计工件由一个学生,首先,它需要的人是一个很好的设计师看,这不会发生。你有一个大的编程课,助教可能不是好设计师自己,他们会评估代码使用自己的复选框列表,真的不是比自动化工具是什么做的。他们也可能会运用自己的偏见,并不是实质性的。好的设计可以教,但我知道的唯一方式就是更像一个学徒的风格,”李继续说道。

为此,他指着一位博士后,曾在他的团队,他认为是一个杰出的设计师和设计的一个杰出的老师。这个博士后Lee认为是非常有效的技术,这是一个结构化的方法设计评论周围人集团生产的代码,目标是为每个人学会批判性阅读设计。

“学习阅读设计方法是一种非常有效的方法来学习如何创建良好的设计,”李说。“这是这一过程的阅读别人的东西已经创建并试图找出什么是好的,什么是坏,什么可以改善,潜在缺陷在哪里可能潜伏在背景。只是对别人的问自己这些问题可以是非常有用的在构建自己的设计,更好的设计。”

另一个技术李的博士后强调是总是吃两片设计(模块、程序、对象,等等)与短的文本描述它们的功能在整个系统中,他回忆道。“文本描述的构建过程实际上是在某些方面你设计的批判性分析的过程,因为如果你不能在一个句子描述什么函数,它可能不是一个周密的函数。你做错了什么你的保理设计成模块,因为如果你不能解释这个模块在系统中的作用。大量的时间在这些设计评审,他有一个很好的方式来组织这样的作者的代码总是存在,但作者从未要求捍卫他的设计,而事实上在这些设计已经明确禁止评论。此外,作者可以完全忽视他们的任何反馈,所以他们本质上有完整的权力。他们的角色在设计审查只是解释事情不是已经明显在设计构件。我看到很多次的作者的代码来实现,他们已消化这件事都错了,因为他们无法解释组件的作用。在某种程度上,他能让他们思考这些事情在这些方面是有效的。但这是一个过程,不规模。”

导师图形的Teegarden建议基于项目的学习可能是前进的方向,让学生为他们学习正确的上下文或发现他们需要必要的多学科技能。

库尔特·舒勒,负责营销的副总裁Arteris认为,良好的系统设计技巧可以教。但他说,特别是在大公司,工程师往往在狭窄的领域工作。“有一些人或一些人(通常是一个很小的团体)考虑整个系统,但替补席上工程师正在一个非常狭窄的组件。他们正在处理一个特定的驱动程序,或者我只是担心HDMI RTL。他们处理一个非常狭窄的部分,这是他们的整个生活。”

他问题将会发生什么如果工程师不专业,有更多说的系统是什么,以及设计是否真的与自顶向下的方法更有效,这是大多数公司都有今天。

同时,ARM的安德鲁斯认为工程师曾在特定学科如RTL设计或软件需要拓展,在其他领域获得经验。“这可能是一个艰巨的任务,因为它通常需要倒退为了前进。很难找到人与技能足够广泛的系统设计,因为许多工程师只有在嵌入式软件,RTL设计、FPGA设计、或董事会设计,不能轻易地跨越理解更广泛的硬件/软件的关系。”

当前的工程师来说,好消息是,总是会有一个设计团队需要为所有类型的人:那些认为高水平,以及那些深入研究细节。“项目成功和失败的区别在于是否有一个人或者两个人会在高抽象级别,并且可以帮助分配和直接,因此个人可以只关注单个任务,“Teegarden说。



留下一个回复


(注意:这个名字会显示公开)

Baidu