0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

看看4种不同类型的CPU漏洞

Codasip 科达希普 来源:PhilippeLuc 2023-04-20 10:06 次阅读

在设计一个复杂的处理器内核时,可能会出现1000到2000个不等的bug,经验告诉我们这是事实,尽管这个数字听上去难以置信。而且并不是所有的bug都是一样的:它们的重要性和带来的后果有很大的不同。这期博文让我们来看看4种不同类型的CPU漏洞,如何找到它们?以及如果我们没有及时找到并击中它们,对用户来说会有着怎么样的后果?

类型一:验证工程师很容易发现的处理器漏洞!

类似在设计过程中忘记写入一个分号的漏洞类型非常容易发现,它通常是在编译时直接发现的。对于此类bug,除了睁大你的眼睛之外,没有其他办法来避免!

可能你会经常听到同事说"哦,这个规范的一部分没有被实现"。这其实是另一种极其容易发现的CPU漏洞,只要有一个明确的测试存在,你就可以用任何像样的测试平台找到它。在这种情况下,行使该功能的第一个简单测试将失败。那么此时处理器验证团队需要做什么?确保详尽健全的测试方式方法是一方面。另一方面,设计团队需要努力仔细阅读规范,并在开发过程中随时关注规范的任何变化。

换句话说,简单的bug是指仅仅通过运行该功能的测试就能发现。它的(坏)行为是系统性的,而不是一个时间条件。详尽的验证是找到这种CPU bug的关键。代码覆盖率可以帮助你,但绝对不够。如果一个功能没有在RTL中编码,覆盖率也就不可能报告它的缺失?此时需要在规范明确的情况下执行代码审查。

类型二:验证团队钟爱的极端案例!

极端案例下的CPU漏洞找起来比较复杂,需要一个强大的测试平台。行使该功能的简单测试用例在有随机延迟的情况下也可以通过。很多时候,当异步事件加入时,就可以发现这些bug。例如,一个中断正好在两条指令之间到达,时间很精确。或者当存储缓冲区想要合并的时候,缓存中的一行被驱逐时。为了解决这些问题,我们需要一个测试平台来处理指令、参数和延迟,从而使所有可能的指令和事件的交错都得到锻炼。很明显,一个好的检查器应该发现任何与预期不同的偏差项。

在这种情况下,不幸的是代码覆盖率完全没用。仅仅是因为bug的条件是几个事件的组合,而这些事件已经被单独覆盖。在这里,条件覆盖或分支覆盖可能会有帮助。但分析起来很痛苦,而且最终也不会有有效的结果。

870fff8e-df07-11ed-bfe3-dac502259ad0.gif

动画显示了4种类型的CPU bug演变过程

测试平台已经发现了简单的bug和几个极端案例。

我们从这些极端案例中汲取经验,以改进测试平台并扩大验证范围。这样做可以使我们发现隐藏漏洞,此时隐藏bug转变为极端bug(或较容易的bug)。

随着bug成群结队的出现,我们可以根据最后发现的bug进一步扩大验证范围。

当我们遇到一个“愚蠢”的bug时,就意味着我们的验证测试已经足够有效了。

类型三:偶然发现的隐匿式CPU 漏洞--或由客户发现的漏洞!

最坏的情况是如果这种隐藏的bug是由客户发现的,或者是偶然发现的(团队内部或在发布之前)。出现这两种情况,这意味着目前的验证方法不足以击中它们。

如果使用不同的测试平台或环境,因为刺激的不同可以找到其他的漏洞。那么我们所说的 "偶然发现 "是什么意思?这里涉及到随机测试平台方法的限制。

在随机刺激下,测试平台通常会产生 "相同 "的东西。如果你掷骰子得到一个随机数,连续10次得到数字6的机会非常少。准确地说,是六千万分之一的机会。对于有100条不同指令的RISC-V CPU来说,一个(可等价的)随机指令发生器每10⁰次只有1次机会产生连续10次相同的指令,这种机率是魔方不同位置数量的两倍...... 在一个10级流水线处理器上,用所有流水线阶段的相同指令来测试它也不是不合理的。如果此时还不调整随机约束,那么只能祝你好运...

类型四:在现实生活中不会出现的“silly bugs”!

如果我们把极端漏洞和隐藏漏洞看得太重,那么最终创建的测试或许有点徒劳。

在连接调试器时,每个周期来回改变字节数,这可能是永远不会出现在消费者产品上的案例,如果一个CPU漏洞的后果对客户来说是不可见的,那么它就不是一个真正的漏洞。如果你在复制文件时故意拔掉U盘,而导致文件被损坏,我认为这不是一个bug。如果某些操作导致USB控制器挂起,那么此时这是一个不容无视bug。

当我们试图扩大验证的范围时,如果出现“silly bugs”,那么我们可能是在错误的地方投入了太多的努力。

872a9d3a-df07-11ed-bfe3-dac502259ad0.png

应用不同的验证技术,在客户之前有效地发现CPU漏洞,是Codasip应用的验证方法。我们使用多个组件测试平台,各种随机测试生成器,随机刺激器,以及其他一些技术来验证我们的产品。并随着项目的发展,发展完善这些技术以拥有一个强大的验证方法。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18604

    浏览量

    224465
  • 发生器
    +关注

    关注

    4

    文章

    1309

    浏览量

    61216
  • RTL
    RTL
    +关注

    关注

    1

    文章

    382

    浏览量

    59265
  • 调试器
    +关注

    关注

    1

    文章

    294

    浏览量

    23477

原文标题:四种不同类型的CPU 漏洞!

文章出处:【微信号:Codasip 科达希普,微信公众号:Codasip 科达希普】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    菜鸟问题,求助不同类型处理方法~

    请问上面的情况如何解决呢?就是两个不同类型的连线端如何连接到一起,或者如何改变为同类型的呢?小弟初学,谢谢您的帮助!
    发表于 07-23 10:08

    4个不同类型的子程序,怎么用条件结构连接?

    4个不同类型的子程序,怎么用条件结构连接,使每次只执行其中一个子程序呢?老是显示部分选择器值无对应分支,不知怎么连接?求助!
    发表于 05-24 14:18

    怎样在labview中显示两同类型的计算器操作面板

    怎样在labview中的前面板上显示两同类型的计算器操作面板,我不会设计前面板的切换,当程序运行起来以后,如何实现在前面板中切换模式(科学型、标准型)。{:4_107:}
    发表于 08-06 16:22

    同类型的开发板怎么用无线传输视频呢?

    同类型的开发板,怎么用无线传输视频呢??一个是stm32采集视频,通过无线把采集的视频传输到别的可以处理视频的开发板上,各位大神有没有思路啊????
    发表于 10-11 09:06

    请问labVIEW中怎么通过express XY图对两同类型的图像同时进行显示?

    `labVIEW中怎么通过express XY图对两同类型的图像同时进行显示?`
    发表于 02-20 22:17

    同类型无触点开关的区别

    同类型无触点开关的性能比较
    发表于 04-15 09:04

    解读不同类型伺服电机相应的控制原理是什么?

    伺服电机的特点有哪些?伺服电机有哪几种类型?不同类型伺服电机相应的控制原理是什么?
    发表于 06-17 10:50

    Android中不同类型的更新是怎么实现的?

    我想知道 Android 中不同类型的更新。目前,在 Android 9 + IMX8QM 上工作请您提供以下更新的文件或详细信息,1.全面更新2. 部分更新3.安全更新4.差异化更新5.安卓更新6.无缝更新 如果可能,请提供实现上述目标的步骤。提前致谢。
    发表于 03-23 09:12

    支持CPU类型

    支持CPU类型 支持CPU类型是指能在该主板上所采用的CPU类型
    发表于 04-26 08:54 548次阅读

    基于不同类型Flash-ROM的Bootloader设计

    基于不同类型Flash-ROM的Bootloader设计
    发表于 10-26 11:41 11次下载
    基于不<b class='flag-5'>同类型</b>Flash-ROM的Bootloader设计

    cpu插槽类型有几种_CPU插槽常见故障及解决

    大家都知道电脑最为核心的部分就是CPU了,CPU只有通过某个接口与主板连接的才能进行工作。CPU经过这么多年的发展,接口的方式多样,目前CPU的接口都是针脚式接口,对应到主板上就有相应
    发表于 04-27 10:06 5340次阅读

    同类型磁翻板液位计的具体应用

    从上述五种不同类型的磁翻板液位计及其应用不难看出,磁翻板液位计在液位测量领域的应用十分广阔。也正因为此,磁翻板液位计在液位测量领域一直广受青睐。
    的头像 发表于 08-16 15:48 2246次阅读

    同类型的网线在速率有什么不同

    网线是网络传输的桥梁,不同的宽带要配不同的网线。根据ISO/IEC11801标准分类,双绞线从诞生以来总共可以大致分为10类,目前市面上主要是超五类往上的网线为主。目前我们常用的就是:超五类网线、六类网线、超六类网线、八类网线。下面跟着科兰通讯看看同类型的网线在速率上有
    的头像 发表于 12-21 09:48 2877次阅读

    同类型的固态继电器

    为了满足各行各业的不同需求,工程师们开发了广泛的固态继电器类型。其中包括可用于交流或直流负载电压的继电器、具有特殊功能的继电器等。本文给您介绍了不同类型的 SSR
    的头像 发表于 03-21 18:02 1939次阅读
    不<b class='flag-5'>同类型</b>的固态继电器

    同类型网线都有哪些差异

    同类型的网线在速率上的差异主要取决于它们的类型和规格。
    的头像 发表于 11-16 14:58 659次阅读