首页 > 其他分享 >21天教你学会PCIe专栏(5)--事务层(Transaction Layer)

21天教你学会PCIe专栏(5)--事务层(Transaction Layer)

时间:2024-11-12 10:51:04浏览次数:3  
标签:天教 事务 Transaction 21 配置 发送 PCIe 请求 设备

目录

第5天:事务层(Transaction Layer)

课程目标

课程内容

1. 事务层概述

2. 事务类型

3. 请求和响应机制

4. 事务层的配置和管理

5. 实际应用示例

课后练习

结语


第5天:事务层(Transaction Layer)

课程目标
  • 理解PCIe事务层的基本概念和功能
  • 掌握事务类型及其工作原理
  • 了解请求和响应机制
  • 掌握事务层的配置和管理
课程内容
1. 事务层概述

1.1 定义

  • 事务层(Transaction Layer, TL):PCIe事务层位于数据链路层之上,负责管理和协调PCIe设备之间的事务,包括数据传输、配置管理和中断处理。
  • 功能
    • 事务管理:发起和处理各种事务,如读请求、写请求、配置读写等。
    • 地址映射:将事务地址映射到正确的设备和寄存器。
    • 事务排序:确保事务按正确的顺序执行,避免冲突和死锁。
    • 错误处理:处理事务执行过程中的错误和异常。
2. 事务类型

2.1 读请求(Read Request)

  • 定义:读请求用于从目标设备读取数据。
  • 格式
    • 请求头(Request Header):包含事务类型、地址、标签等信息。
    • 数据(Data):可选,用于携带额外的信息。
  • 过程
    • 发送请求:发起设备发送读请求到目标设备。
    • 处理请求:目标设备接收到读请求后,读取指定地址的数据。
    • 发送响应:目标设备发送读响应,包含读取的数据。
    • 接收响应:发起设备接收到读响应,处理读取的数据。

2.2 写请求(Write Request)

  • 定义:写请求用于向目标设备写入数据。
  • 格式
    • 请求头(Request Header):包含事务类型、地址、标签等信息。
    • 数据(Data):包含要写入的数据。
  • 过程
    • 发送请求:发起设备发送写请求到目标设备。
    • 处理请求:目标设备接收到写请求后,将数据写入指定地址。
    • 发送完成确认:目标设备发送写完成确认(Completion)。
    • 接收确认:发起设备接收到写完成确认,表示写操作成功。

2.3 配置读写(Configuration Read/Write)

  • 定义:配置读写用于访问设备的配置空间。
  • 格式
    • 请求头(Request Header):包含事务类型、地址、标签等信息。
    • 数据(Data):可选,用于携带写入的数据。
  • 过程
    • 发送请求:发起设备发送配置读写请求到目标设备。
    • 处理请求:目标设备接收到配置读写请求后,读取或写入配置空间。
    • 发送响应:目标设备发送配置读响应,包含读取的数据(如果是读请求)。
    • 接收响应:发起设备接收到配置读响应,处理读取的数据。

2.4 消息(Message)

  • 定义:消息用于传递控制信息,如中断请求、错误报告等。
  • 类型
    • 中断消息(Interrupt Message):用于传递中断请求。
    • 错误报告消息(Error Reporting Message):用于报告错误信息。
    • 边界消息(Boundary Message):用于同步多个设备之间的操作。
3. 请求和响应机制

3.1 请求标识符(Tag)

  • 定义:每个事务请求都有一个唯一的标识符(Tag),用于区分不同的事务。
  • 作用
    • 事务跟踪:通过Tag跟踪事务的执行状态。
    • 事务排序:确保事务按正确的顺序执行。

3.2 响应类型

  • 定义:响应类型用于指示事务的结果。
  • 类型
    • 完成(Completion):表示事务成功完成。
    • 错误完成(Error Completion):表示事务执行过程中发生错误。
    • 不确定完成(Uncertain Completion):表示事务结果不确定,可能需要重试。

3.3 事务排序

  • 定义:事务排序确保事务按正确的顺序执行,避免冲突和死锁。
  • 机制
    • 事务队列:每个设备维护一个事务队列,按顺序处理事务。
    • 优先级管理:根据事务的优先级管理事务的执行顺序。
4. 事务层的配置和管理

4.1 配置空间(Configuration Space)

  • 定义:配置空间是每个PCIe设备的一个固定大小的寄存器区域,用于存储设备的配置信息。
  • 访问方式:通过配置读写事务访问设备的配置空间。
  • 主要寄存器
    • 头部(Header):包含设备的基本信息,如供应商ID、设备ID、类代码等。
    • 基地址寄存器(Base Address Registers, BARs):用于映射设备的内存和I/O空间。
    • 中断线路寄存器(Interrupt Line Register):用于配置中断线路。

4.2 中断管理

  • 定义:中断管理用于处理设备的中断请求。
  • 类型
    • INTx中断:传统的中断机制,通过中断线路传递中断请求。
    • MSI(Message Signaled Interrupts):基于消息的中断机制,通过写入特定地址传递中断请求。
    • MSI-X:扩展的MSI机制,支持更多的中断向量。

4.3 事务层的状态机

  • 定义:事务层使用状态机来管理事务的执行状态,确保事务的正确性和可靠性。
  • 状态
    • Idle:空闲状态,等待事务请求。
    • Request:处理事务请求,发送请求帧。
    • Response:处理事务响应,接收响应帧。
    • Completion:处理事务完成,发送完成确认。
    • Error:处理事务错误,发送错误报告。
5. 实际应用示例

5.1 显卡读写操作

  • 读操作:主机通过读请求从显卡读取帧缓冲区的数据。
  • 写操作:主机通过写请求向显卡写入渲染指令和数据。

5.2 存储设备读写操作

  • 读操作:主机通过读请求从存储设备读取数据块。
  • 写操作:主机通过写请求向存储设备写入数据块。

5.3 网络设备中断处理

  • 中断请求:网络设备通过MSI或MSI-X机制发送中断请求。
  • 中断处理:主机接收到中断请求后,处理网络事件。
课后练习
  1. 绘制事务流程图:绘制一个完整的PCIe读请求和写请求的事务流程图,标注各个步骤和对应的帧格式。
  2. 配置空间练习:查找一个PCIe设备的配置空间寄存器手册,列出主要寄存器的功能和地址。
  3. 讨论题:事务排序在PCIe事务管理中有什么重要作用?它是如何工作的?
结语

通过今天的学习,你应该对PCIe事务层的基本概念、事务类型、请求和响应机制、配置和管理有了深入的了解。接下来的课程将深入探讨PCIe的配置空间、中断机制和其他高级功能,帮助你在实际工作中更好地应用PCIe技术。期待明天的学习!

标签:天教,事务,Transaction,21,配置,发送,PCIe,请求,设备
From: https://blog.csdn.net/xiaoheshang_123/article/details/143704719

相关文章

  • HDU - 4821 String
    给定字符串\(S\)。求有多少长\(M\timesL\)的子串,使得将其划分成\(M\)个长度为\(L\)的字符串\(S_1,S_2,\dotsS_M\)互不相同。\(1\leM\timesL\le|S|\le10^5\)。从\(0\)起下标。显然这些字符串的起始位置在模\(L\)意义下相同。不妨枚举这个值\(r\in[......
  • comp9021 olygons Python
    Assignment2,Trimester3,2024Generalmatter1.1.Aims.Thepurposeoftheassignmentisto:designandimplementaninterfacebasedonthedesiredbehaviourofanapplicationprogram;practicetheuseofPythonsyntax;developproblemsolvingsk......
  • CVE-2021-21311
    CVE-2021-21311今天要记录的是ssrf,cve编号为CVE-2021-21311Adminer是一个PHP编写的开源数据库管理工具,支持MySQL、MariaDB、PostgreSQL、SQLite、MSSQL、Oracle、Elasticsearch、MongoDB等数据库。在其4.0.0到4.7.9版本之间,连接ElasticSearch和ClickHouse数据库时存在一处......
  • 代码随想录算法训练营第二十二天| leetcode77. 组合、leetcode216.组合总和III、leetc
    1leetcode77.组合题目链接:77.组合-力扣(LeetCode)文章链接:代码随想录视频链接:带你学透回溯算法-组合问题(对应力扣题目:77.组合)|回溯法精讲!_哔哩哔哩_bilibili思路:开始想循环,感觉行不通,然后看了视频,就嗯理解了一些感觉跟递归的思路确实差不多1.1回溯三部曲回溯的方法首......
  • 理解@Transactional
    在SpringBoot中,@Transactional注解仍然是Spring框架提供的一个核心注解,用于声明式事务管理。SpringBoot通过自动配置和简化配置,使得在SpringBoot应用程序中使用@Transactional注解变得更加方便。本文将深入探讨@Transactional注解在SpringBoot中的使用方法、......
  • 第21节 arkts 如何读取普通文件
    在ArkTS中读取普通文件可以通过以下几种方式:使用@ohos.fileio模块@ohos.fileio模块提供了一系列用于文件操作的接口,可以用于读取普通文件。以下是一个简单的示例,展示如何读取一个文本文件的内容:importfileiofrom'@ohos.fileio';@Entry@Componentstruct......
  • 「杂题乱刷2」CF1219G
    题目链接CF1219GHarvester解题思路就是个嗯分讨题。发现最终选择的方案总共就以下五种情况:选\(4\)行\(0\)列。选\(3\)行\(1\)列。选\(2\)行\(2\)列。选\(1\)行\(3\)列。选\(0\)行\(4\)列。对于第一,五种情况,直接取每行或每列的前四大值......
  • Spring学习笔记_30——事务接口PlatformTransactionManager
    PlatformTransactionManager是Spring框架中事务管理的核心接口,它负责管理事务的创建、提交和回滚等操作。源码/**Copyright2002-2020theoriginalauthororauthors.**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethis......
  • 安装Mixly2.0 RC4和CP210x驱动
    Mixly(米思齐)是一款图形化编程软件。用户可以通过拼接积木块的方式来编写程序。目前为止,Mixly已经支持Arduino,micropython,python等编程语言。简介Mixly(米思齐)是在北京师范大学傅骞博士团队组织开发的一款国内自主研发,且免费开源的图形化编程工具。在国内外都掀起创客教育的......
  • CF1821
    建议结合独立思考使用本题解。A没什么价值略去。B有一个序列\(a\),通过把它的一个子区间进行升序排序生成了\(b\)。现在给出\(a,b\),求出可以通过该操作使\(a\)变为\(b\)的最长子区间的左右端点,输出任意一个。\(n\le2\times10^5\)如果存在一个位置,使得\(a_{p}\neq......