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

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

3天内不再提示

处理器可能发生死锁或者数据丢失

LL-LING宁 来源:LL-LING宁 作者:LL-LING宁 2022-08-02 15:09 次阅读

由于此错误,存储缓冲器可能进入所有现有写入都无法继续执行的状态。此状态可能会导致下列问题:

流水线执行备份,并阻止执行任何指令。

如果按特定顺序执行访问,则将恢复指令执行,但写入数据将会丢失

受影响的配置:

如按下列任一序列发生下述状况,则会发生此错误:

序列 1:

1) 使用数据高速缓存 ECC 来实现处理器,并启用高速缓存 ECC。

2) 处理器访问存储器位置,但此操作在 L1 数据高速缓存中未命中,导致读取并分配缓存行。

3) 处理器对回写可缓存位置执行写入,此操作在步骤 [2] 中的行填充 (linefill) 之前命中,但在行填充之后未命中。此写入操作会在步骤 [2] 重新分配行之前的周期内执行其高速缓存查找操作。

4) 随后,处理器会对步骤 [3] 中写入的缓存行执行读取和写入。此读取和写入操作可按任意顺序执行。写入的双字不同于步骤 [3] 中写入的双字。

序列 2:

1) 使用数据高速缓存 ECC 来实现处理器,并启用高速缓存 ECC。

2) 处理器读取回写可缓存存储器位置,但此操作在 L1 数据高速缓存中未命中,导致读取并分配缓存行,但不检测任何 ECC 错误。

3) 处理器对步骤 [2] 中读取的缓存行执行写入。在高速缓存中查找地址时,由于标签 RAM (tag-RAM) 中存在 ECC 错误,因此结果显示命中。

4) 随后,处理器对步骤 [2] 中读取的缓存行执行进一步写入,但写入的双字不同于步骤 [3] 中写入的双字。

5) 后续推理缓存读取同样检测到 ECC 错误。此读取操作可对相同的高速缓存集执行,因此会检测到相同的错误,或者也可对不同高速缓存集执行读取,在此情况下则需要第二个 ECC 错误才能满足此条件。

此外,这两组条件都要求两次访问之间存在特定的时序关系,因此,受到 AXI 总线上的传输事务时序以及存储缓冲器中其它正在执行的写入操作的影响。

如果上述任一序列发生后,发生如下操作,则将不会发生死锁:

1) 读取操作在高速缓存中未命中,导致行填充,并且

2) 对步骤 [1] 中读取的缓存行执行 2 次或 2 次以上的读取操作。

2 次写入的双字必须不同,但其中一次写入的双字可与步骤 [1] 中读取的双字相同。单一存储指令可生成 2 次此类写入,前提是该指令未自然对齐。

如果发生此状况,则部分写入数据可能丢失。并且后续可能还会向高速缓存分配不可缓存 (Non-cacheable) 或器件 (Device) 写入请求。

注:以上所有数值交叉引用均表示参考列表中的项。

解决方案

影响:

如果发生此错误,处理器将发生死锁或数据丢失。发生死锁时,处理器可生成中断,但最终在处理程序代码中将发生数据丢失或死锁。

根据大量现场器件的经验证明,此错误被分类为罕见。此问题仅在一个工程上出现过,其故障时间不仅长而且易变。

变通方法:

您可通过将 ACTLR.DBWR(位 [14])设置为 1 来避免此错误。对于向标准存储器多次突发写入数据的行为,此设置会禁用其内部传输最优化操作。

此外,此设置还会禁用直写和不可缓存的标准存储器(但不包括回写存储器)的处理器生成的 AXI 突发。

将该位设置为 1 可能降低处理器写入标准存储器的性能。在基准测试中,平均性能降低比例小于 1%,但执行大型块写入的例程(例如,memset 或 memcpy)时影响显著增大。

此变通方法对于 memset 和 memcpy 的影响与 L2 存储器系统的性能和特性以及所使用的指令序列密切相关。

如果您的应用允许,您也可以通过禁用高速缓存 ECC 来避免此错误。禁用方法为将 ACTLR.CEC(位 [5:3])设置为 b100。

此变通方法不会降低处理器性能,但禁用 ECC 会影响可靠性。

受影响的配置:

所有 Versal 器件。

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

    关注

    68

    文章

    18261

    浏览量

    222085
  • 数据
    +关注

    关注

    8

    文章

    6511

    浏览量

    87588
  • ECC
    ECC
    +关注

    关注

    0

    文章

    90

    浏览量

    20375
收藏 人收藏

    评论

    相关推荐

    国产GPU搭配国产处理器平台主机

    处理器gpu
    GITSTAR 集特工控
    发布于 :2024年03月27日 14:11:32

    嵌入式处理器架构有哪些

    计算机或处理器的RAM元件用于临时存储程序数据或指令。数据可以随时写入 RAM,处理器 RAM 的一个重要特征是它在断电时会丢失日期。RAM
    的头像 发表于 02-09 07:29 2453次阅读

    java死锁产生的条件

    Java死锁是指多个线程因为互相等待对方释放资源而无法继续执行的情况。当线程处于死锁状态时,程序会无限期地等待资源,无法继续执行下去,从而导致整个系统的停滞。要理解并避免Java死锁的产生,首先需要
    的头像 发表于 12-04 13:42 184次阅读

    redis分布式锁死锁处理方案

    中,Redis分布式锁也可能遭遇死锁问题,即多个线程相互等待对方释放锁的情况。本文将详细介绍Redis分布式锁死锁的原因,并提供解决死锁的多种策略。 一、Redis分布式锁的基本机制
    的头像 发表于 11-16 11:44 501次阅读

    死锁的现象及原理

    组件如何放入自己的项目里?把代码末两个Debug部分删除,在你的项目里添加下面两句代码即可使用死锁检测组件。 init_hook (); start_check (); 1. 死锁的现象以及
    的头像 发表于 11-10 16:32 211次阅读
    <b class='flag-5'>死锁</b>的现象及原理

    死锁的产生因素

    一、死锁的概念 操作系统中的死锁是指: 如果在一个进程集合中的每个进程都在等待只能有该集合中的其它进程才能引起的事件,而无限期陷入僵持的局面称为死锁。 二、死锁的产生因素 1、系统拥有
    的头像 发表于 11-09 09:37 468次阅读
    <b class='flag-5'>死锁</b>的产生因素

    如何处理重现使用仿真发现的死锁漏洞

    在上一部分中,我们重点讨论了在组件上设置形式验证的最佳实践。那么现在设置已经准备就绪,协议检查器可以避免不切实际的情况(这也有助于发现一个新漏洞),基本抽象也可以提高性能。现在的任务便是如何处理重现
    的头像 发表于 11-02 09:17 240次阅读
    如何<b class='flag-5'>处理</b>重现使用仿真发现的<b class='flag-5'>死锁</b>漏洞

    TFT Crosstalk分析 几种水平和垂直Crosstalk的可能发生的原因

    由于TFT LCD 的架构,是以像素在水平和垂直方向上展开成阵列,因此TFT LCD 中所发生的Crosstalk 现象,也会是水平或是垂直的,以下举出几种水平和垂直Crosstalk 的可能发生
    的头像 发表于 10-30 10:48 1296次阅读
    TFT Crosstalk分析 几种水平和垂直Crosstalk的<b class='flag-5'>可能发生</b>的原因

    青稞处理器资料分享

    )、精简的两线和单线调试接口、“WFE”指令、物理内存保护(PMP)等特色功能,详细说明可参考青稞微处理器手册。 特色功能 1.硬件压栈(HPE) 稞处理器开启硬件压栈后,当发生中断,硬件自动将
    发表于 10-11 10:42

    Linux内核死锁lockdep功能

    的编程思路,也不可能避免会发生死锁。在Linux内核中,常见的死锁有如下两种: 递归死锁:如在中断延迟操作中使用了锁,和外面的锁构成了递归死锁
    的头像 发表于 09-27 15:13 361次阅读
    Linux内核<b class='flag-5'>死锁</b>lockdep功能

    如何解决I2C器件死锁的问题?

    时,会导致整个系统崩溃。在本文中,我们将讨论如何解决I2C器件死锁的问题。 什么是I2C器件死锁? I2C总线上的死锁是指两个或多个从属设备同时试图与主控设备进行通信,但由于某种原因无法完成通信,导致系统停滞不前。
    的头像 发表于 09-12 11:18 1529次阅读

    PLC数据丢失如何找回?

    如果PLC数据丢失,以下是一些可能的方法来尝试找回数据: (1)备份恢复:如果您有先前的备份数据,可以尝试从备份中恢复
    的头像 发表于 09-05 10:30 1772次阅读

    使用M051的I2C发生死锁如何解决?

    各位好,我在使用M051的I2C时出现死锁,不知怎么解决。请问大家,有谁遇到过这个问题没有,请指教下,谢谢了。
    发表于 08-25 06:33

    如何将ELA-500与Arm DS 1.0版一起使用

    处理器可能会因为锁定而停止工作,也称为死锁。 当处理器向系统中无法响应或处理请求的位置发起内存事务时,就会出现一种常见的
    发表于 08-12 07:25

    ARMv8-M处理器故障处理和检测

    ,或意外操作,如无效输入数据或操作员错误。 •内存损坏,杂散辐射和其他影响可能导致存储的数据在RAM中被破坏。 ARMv8‑M处理器的功能可以使软件管理甚至纠正一些错误条件,并提醒设备
    发表于 08-02 06:28