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

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

3天内不再提示

CCIX错误控制和状态结构概述

安芯教育科技 来源:老秦谈芯 作者:老秦谈芯 2022-08-23 18:13 次阅读

7.RAS概述

PCIe错误分为可校正的错误(Correctable Error)和不可校正的错误(Uncorrectable Error), Uncorrectable又分为致命的(Fatal)和非致命的(Nonfatal)。可校正错误可以自动地被硬件识别并被自动的校正或恢复。非致命错误可能会导致特定的传输变得不可靠,但是链路和硬件的其他功能不受影响。设备驱动软件提供恢复机制,并不会影响到链路和其他设备的运行。致命错误会导致链路和硬件异常,只有通过系统软件进行复位操作实现恢复。

7.1 硬件故障分类

三类硬件故障(Fault):

同步且精确的CPU异常(exception),这些异常可能是由于数据中止、指令预取中止,或由于访问某个故障地址时出现硬件故障而导致的某种形式的总线错误。

异步和不精确的CPU异常,可能由CPU内部的不可纠正错误(Uncorrected Error,UE)、可纠正错误(Corrected Error,CE)或外部总线错误触发。

异步和不精确的系统异常或中断,这些异常发生在CPU子系统之外,一般通过中断线或者消息中断(MSI)报告给CPU,通知CPU发生硬件故障。

7.2 硬件错误传播

主机系统和CCIX设备可以有类似的组件集:

不同类型的存储

不同类型的缓存和寄存器

处理单元(Processing Elements)

一致性互连

上述每个组件都可能消耗、产生或是检测硬件错误。这些硬件错误可能与ECC、命令故障、传输错误、解码错误、逻辑错误、超时/看门狗等有关。

当数据中毒(poisoned)时,错误可能会在整个系统中从一个实体传播到另一个实体,这可能是由处理单元,或者缓存/监听逻辑启动的事务触发的。下图展示了有毒数据如何流经连接到CCIX设备的主机系统。

0ae99f0e-22ca-11ed-ba43-dac502259ad0.png

CCIX规范只规定了如何报告和处理CCIX错误。

7.3 CCIX协议错误报告(Protocol Error Reporting,PER)

有两类硬件故障(Fault)可以引起CCIX硬件错误(Error):

PCIe传输错误,通过标准的PCIe机制报告

CCIX协议错误(CCIX Protocol Errors ,PER),在设备端通过CCIX PER消息报告,并记录到CCIX DVSEC空间;在主机端,错误被报告给错误代理,错误代理向CPU报告错误

7.3.1 PER消息格式

PER消息格式:

0b0db2e0-22ca-11ed-ba43-dac502259ad0.png

其中的PER Type字段的含义是:

0x0:Memory Error Type Structure

0x1:Cache Error Type Structure

0x2:ATC Error Type Structure

0x3:Port Error Type Structure

0x4:CCIX Link Error Type Structure

0x5:Agent Internal

在规范的7.3.3 – 7.3.8章节有具体介绍。

7.3.2 PER日志结构

CCIX PER日志用于报告会导致协议错误的硬件故障。协议错误通常与特定的CCIX协议组件(即CCIX链路、端口、HA、SA或RA)相关。每个日志结构开始的偏移量(字节数)由各种能力结构的错误日志偏移量表示。

0b2b3bc6-22ca-11ed-ba43-dac502259ad0.png

每个日志头由256位组成。DW0和DW1表示错误日志属性字段。DW2和DW3提供错误的故障地址。DW4提供错误的错误地址掩码长度。DW5-7保留供将来使用。后面的具体结构说明全都略去。

7.4 CCIX错误控制和状态结构

CCIX在两个级别提供错误控制机制:

Level 1:CCIX设备错误控制和状态(每个CCIX设备)

Level 2:组件错误控制和状态(根据CCIX协议组件)

必须禁用CCIX设备中所有错误控制和状态寄存器的重置值。主机软件必须明确启用CCIX设备和每个CCIX协议组件的错误报告。启用后,默认情况下,除非软件设置了掩码位,否则错误将被不能被屏蔽。

7.4.1 错误控制寄存器定义

设备和组件的控制寄存器如下:

0b4234de-22ca-11ed-ba43-dac502259ad0.png

7.4.2 设备错误控制流程

本章节介绍错误屏蔽规则和启动时启用错误的流程,略过。

8.地址翻译服务(Address Translation Services)

ATS机制是在PCIe中定义的。简单介绍一下,为节省CPU资源,PCIe设备常采用DMA方式访问内存。Root Complex需要将DMA请求进行一次地址转换才能将访问到真实物理存储地址。进行地址转换可以防止非法DMA请求,并且有利于实现虚拟化传输。但是,RC进行DMA地址转换是需要时间的,相较于不进行地址转换,显然进行DMA地址转换会增加DMA访问的时间。为了减小地址转换的影响,设计人员常常在需要进行地址转换的地方添加地址转换缓存(Address Translation Cache,ATC)。需要设备设计出具有良好的ATC机制,包括ATC的预测、地址翻译请求的长度、发送翻译请求的时机等。

8.1 介绍

CCIX请求代理(RA)发出的内存请求时使用的是物理地址。因此与RA关联的加速器功能(Accelerator Functions,AFs)必须向RA提供物理地址。但是软件使用的是虚拟地址,所以AFs需要执行地址转换。

请求代理不可以向CCIX链路发出带有未翻译虚拟地址的内存请求,因为这可能会违反基于页表的安全性或虚拟化。

AF可以使用两种方法来转换虚拟地址。第一种是使用PCIe定义的地址转换服务变体从主机系统获取地址转换。第二种方法是让AF包含一个MMU,以支持主机系统页表格式。

8.2 ATS

PCIe格式的ATS转换请求、转换完成、失效请求、页面请求和页面响应通过VC0发送。除CCIX VC外,可以在任何VC上发送失效响应。

8.3 无效语义

略过。

8.4 内存类型

除了获取翻译后的页面地址外,CCIX请求代理还需要内存类型信息,以便与内存正确交互。内存类型信息决定了CCIX链路上支持的操作类型,以及数据是否可以在本地缓存。

带有内存属性的ATS翻译完成的格式和定义如下:

0b5931a2-22ca-11ed-ba43-dac502259ad0.png

其中Mem[2:0]的定义如下:

0b6f2f52-22ca-11ed-ba43-dac502259ad0.png

关于Reodering,Early write acknowledge这些在之前的文章中介绍过。

至此,CCIX规范的内容大致粗过一遍,其中PCIe部分基本都略过了,有的地方介绍了一点概念性知识。真需要用到CCIX的时候,还是多看协议。



审核编辑:刘清

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

    关注

    31

    文章

    5292

    浏览量

    119802
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10803

    浏览量

    210793
  • PCIe
    +关注

    关注

    15

    文章

    1200

    浏览量

    82345

原文标题:技术分享 | CCIX(九)

文章出处:【微信号:Ithingedu,微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RS-52SH磁性开关的结构和工作状态

    磁性开关具有结构简单、体积小、便于控制等优点,并且能够在各种环境条件下稳定工作。其工作原理基于磁场的变化和电磁感应,通过控制电路的通断来实现对设备的精确控制
    的头像 发表于 11-06 13:10 54次阅读

    接口的控制状态寄存器什么作用

    接口的控制状态寄存器(Control and Status Registers,简称CSR)是计算机系统中用于控制和监控硬件设备操作的寄存器。它们是硬件设备与其驱动程序之间的桥梁,允许软件
    的头像 发表于 10-17 10:42 228次阅读

    TAS2563设备特性和控制概述

    电子发烧友网站提供《TAS2563设备特性和控制概述.pdf》资料免费下载
    发表于 10-08 11:49 0次下载
    TAS2563设备特性和<b class='flag-5'>控制</b><b class='flag-5'>概述</b>

    CAN总线错误状态的种类

    CAN总线错误状态的种类主要包括以下几种,每种状态都反映了CAN总线网络中节点或总线的不同错误情况,以及相应的通信能力和限制。
    的头像 发表于 09-03 14:17 689次阅读

    用于控制器局域网的可配置错误发生器

    电子发烧友网站提供《用于控制器局域网的可配置错误发生器.pdf》资料免费下载
    发表于 08-27 09:59 0次下载
    用于<b class='flag-5'>控制</b>器局域网的可配置<b class='flag-5'>错误</b>发生器

    一文读懂CAN通讯错误

    CAN总线通信技术广泛应用于多个行业,是每个总线设计工程师必学的一个通讯网络。然而,对于CAN通信中的错误帧,许多人仅停留在表面了解,缺乏深入理解,这导致许多工程师在面对总线通信故障时感到无从下手
    的头像 发表于 06-12 08:24 2436次阅读
    一文读懂CAN通讯<b class='flag-5'>错误</b>帧

    一文读懂CAN控制错误处理的原理

    CAN通讯的错误帧到底是如何被界定的?本文带你轻松了解!错误标定检测到错误条件的站通过发送错误标志指示错误。对于“
    的头像 发表于 04-26 08:25 1481次阅读
    一文读懂CAN<b class='flag-5'>控制</b>器<b class='flag-5'>错误</b>处理的原理

    介绍一个IC设计错误案例:可读debug寄存器错误跨时钟

    本文将介绍一个跨时钟错误的案例如图所示,phy_status作为一个多bit的phy_clk时钟域的信号,需要输入csr模块作为一个可读状态寄存器
    的头像 发表于 03-11 15:56 456次阅读
    介绍一个IC设计<b class='flag-5'>错误</b>案例:可读debug寄存器<b class='flag-5'>错误</b>跨时钟

    TC275由于错误帧太多了,导致进入busoff状态怎么解决?

    由于错误帧太多了,导致进入busoff状态,这时候需要怎么才能恢复,退出busoff状态?节点控制寄存器Node x Control Register 中的INIT(Node Init
    发表于 02-18 06:03

    AD2S1210错误检测中有一种叫失配错误,这种错误存在于电机的哪种状态?是否独立存在?

    错误检测中有一种叫失配错误,这种错误存在于电机的哪种状态?是否独立存在? 以我的理解是进入电机的两路正余弦信号相差过大,然而这并不是失配错误
    发表于 12-12 07:36

    AD7799状态寄存器读取错误是怎么回事?

    状态寄存器读数有两种状态8A(1000 1010)与4A(0100 1010),按照官方DataSheet,第一位判断数据准备状态,第二位是错误位,8A数据没有准备好,未报错,4A数
    发表于 12-08 06:52

    invalid synrax是什么错误

    “invalid synrax” 是英语中的拼写错误,正确的拼法是 “invalid syntax”。语法错误是指程序代码中出现了不符合编程语言规则的语法结构,导致编译器无法理解和编译代码。 语法
    的头像 发表于 11-28 15:59 7768次阅读

    脚本错误scripterror怎么解决

    “脚本错误”(Script Error)通常是在运行或尝试运行一段脚本或程序时出现的错误。这种错误可能源于许多不同的原因,包括语法错误、运行环境问题、依赖库缺失等。解决脚本
    的头像 发表于 11-26 14:46 7614次阅读

    c语言代码错误怎么找

    当我们编写C语言代码时,常常会遇到一些错误。这些错误可能是语法错误,逻辑错误或者是运行时错误。无论是什么类型的
    的头像 发表于 11-24 10:05 3427次阅读

    实战经验 | 一个 Flash 编程错误标志的探析

    FLASH时, 发现 FLASH 的状态寄存器显示编程错误(如图 1 所示). 问题是当前代码还没有开始擦除和编程, 怎么就有了编程错误标志了呢 ? 如果不将此错误标志清除, 后续的
    的头像 发表于 11-10 17:45 914次阅读