一、故事前传

在之前的文章中,已经解析了SATA协议的部分相关内容。

较为详细解释请见之前的文章:

1,浅析SATA Physical Layer物理层OOB信号;

2,SATA Link layer链路层解析2.0-2.3;

3,SATA Transport layer链路层解析3.0-3.3;

我们这里主要解析Transport layer Error Reporting机制相关内容。

二、Error Reporting

SATA Spec中提到SATA环境支持ATA error以及SATA error的检测。SATA环境中发生的error大致分为四类:

  1. Command无法正常完成。这部分会记录在ATA的Status/Error register(也可以称为ATA shadow register).

  2. FIS传输错误。这部分记录在SATA定义的Error register.

  3. SATA链路传输error。这部分也记录在在SATA定义的Error register.

  4. HBA(Host Bus Adapter)错误。这部分会记录在SATA定义的Error register或者IO bus register.

从上图我们也可以看到,所有的status和error register都放在HBA。Device也可以检测到Error,但是要上报给Host, 主要途径有两个:

  1. 在command执行过程中发现错误后,Device通过向Host发送Register FIS-D2H来更新ATA status & error

  2. 在FIS传输过程中发生错误,Device向Host发送Primitive基元“R_ERR”。不过,这种情况下,Host不能判断错误的根本原因。

SATA环境下产生的错误可能发生在任何一层,每层检测的status & error类型如下图:

发现了问题,最终还得去解决。对于各层上报的error,根据错误类型以及错误严重程度,应对措施主要有:

  1. 冻结(Freeze)。这个时候就说明了错误的严重性很高,无法修复,需要做reset才能清除错误;

  2. 中断(Abort)。表明错误比较持久,相应的cmd已经失败。需要告诉Host作中断处理。

  3. 重新发送(Retry)。表明错误是短暂并且不影响SATA系统运行,比如CRC error。这个错误如果是在Transport Layer或者以下发生的,由硬件启动retry机制。如果发生在Transport Layer之上了,就要依赖软件启动retry机制。

  4. 追踪/忽略(Track/ignore)。表明这是个可以纠正的错误,不严重,可以忽略。不过,此类error虽然可以被纠正,但是也会对SATA的整体性能产生不利影响。

(1) ATA Status & Error Register

当有ATA error发生时,ATA status会将ERR bit置"1"。如果ERR bit=0, 那么Error register相应的内容均为无效。

Error Register具体定义如下:

(2) SATA定义的相关Error Register

SATA Status(SStatus) Register:

SATA Error(SError) Register:

SATA系列专题之三:3.4 Transport Layer传输层Error处理机制解析相关推荐

  1. SATA系列专题之五:Link Power Management解析

    一.故事前传 在之前的文章中, 我们已经针对SATA的主要结构进行了较为详细的解析,详见前期文章: 1,浅析SATA Physical Layer物理层OOB信号: 2,SATA Link Layer ...

  2. SATA系列专题之六:浅析NCQ原生指令序列

    一.故事前传 在之前的文章中, 我们已经针对SATA相关内容进行了较为详细的解析,如果感兴趣的话,请见之前文章: 1,浅析SATA Physical Layer物理层OOB信号: 2,SATA Lin ...

  3. SATA系列专题之二: 2.2 Link layer链路层加扰/解扰/CRC解析

    一.故事前传 我们之前说到Link layer的结构,link layer的作用大致可以包括以下几点: Frame flow control CRC的生成与检测 对数据与控制字符的Scrmable/D ...

  4. PCIe系列专题之三:3.0 数据链路层概述

    一.故事前传 之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transacti ...

  5. Re:[转]Microsoft .Net Remoting系列专题

    Microsoft .Net Remoting系列专题之一:.Net Remoting基础篇 Microsoft .Net Remoting系列专题之二:Marshal.Disconnect与生命周期 ...

  6. 文件系统系列专题之 Btrfs

    一.Btrfs概述 Btrfs(B-tree 文件系统,通常念成 Butter FS,Better FS或B-tree FS),一种支持写入时复制(COW)的文件系统,运行在 Linux 操作系统上. ...

  7. 【隐私计算笔谈】MPC系列专题(五):Beaver三元组和BMR协议

    [隐私计算笔谈]MPC系列专题(五):Beaver三元组和BMR协议 文章目录 [隐私计算笔谈]MPC系列专题(五):Beaver三元组和BMR协议 Beaver三元组 BMR协议 推荐阅读 [隐私计 ...

  8. 【隐私计算笔谈】MPC系列专题(六):零知识证明和比特承诺

    [隐私计算笔谈]MPC系列专题(六):零知识证明和比特承诺 文章目录 [隐私计算笔谈]MPC系列专题(六):零知识证明和比特承诺 零知识证明 比特承诺 推荐阅读 [隐私计算笔谈]MPC系列专题(一): ...

  9. 【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议

    [隐私计算笔谈]MPC系列专题(四):GMW协议和BGW协议 文章目录 [隐私计算笔谈]MPC系列专题(四):GMW协议和BGW协议 GMW协议 BGW协议 推荐阅读 [隐私计算笔谈]MPC系列专题( ...

  10. 【隐私计算笔谈】MPC系列专题(十五):三方复制秘密分享

    [隐私计算笔谈]MPC系列专题(十五):三方复制秘密分享 文章目录 [隐私计算笔谈]MPC系列专题(十五):三方复制秘密分享 三方复制秘密分享 [隐私计算笔谈]MPC系列专题(一):安全多方计算应用场 ...

最新文章

  1. jquery用添加按钮把数据传送给PHP页面
  2. 每天一道LeetCode-----找到所有被某个字符包围的另一个字符
  3. outlook邮件中图片无显示解决方法
  4. php 点击选择图片上传,php上传多张图片时,选择图片后即可预览的问题
  5. s5pv210开发板、原理图、刷机和数据手册
  6. 织梦网站如何上传服务器还原,织梦系统DedeCMS网站通过数据库备份、还原实现网站整站搬家移植...
  7. Kettle工具使用及总结
  8. coreseek mysql_centos+php+coreseek+sphinx+mysql之一coreseek安装篇
  9. java如何获取全部省市_纯java获取省市区
  10. 两平面直角坐标系之间的相互转换
  11. win10cmd重置系统_win10命令行恢复出厂设置
  12. 接入阿里云OSS--公有云分布式存储
  13. 英语词典软件测试大乐,软件测试和评估(百词斩和扇贝单词)
  14. 专科咋了?5年时间从三流外包到阿里P6,逆袭成功终于肝出了这份大厂Android研发岗中高级面经!
  15. android webview 本地视频播放,javascript – Android WebView不允许加载本地视频文件
  16. 服务器取证——服务器基础知识
  17. Xsolla 解读中国手机游戏支付方式
  18. php制作日历带节日实验目的,PHP做日历
  19. enspar启动失败40_AR启动失败错误代码40终极解决方案
  20. 自动化、智能、机器人-2023-

热门文章

  1. Ubuntu完美安装QQ
  2. 【Ubuntu和本地电脑互传文件】
  3. 互联网专用计算机屏保,5款屏保,让你的电脑在闲置时也与众不同。
  4. 解决XP精简版(无IIS的XP系统)安装IIS服务器的问题
  5. PR-CTS-Specify Clock Tree Synthesis Options
  6. DOSBox安装及使用详解
  7. MC9S12XEP100 CAN通信配置
  8. 软件项目开发流程逻辑图
  9. wordpress用途_8个热门WordPress多用途主题及其炫酷功能
  10. 浅析游戏音效中的虚拟音效