当前位置: 首页 > news >正文

PCIe TLP | 报头 / 包格式 / 地址转换 / 寄存器 / 配置空间类型

注:本文为 “PCIe TLP” 相关文章合辑。
英文引文,机翻未校。
中文引文,未整理去重。

图片清晰度受引文原图所限。
略作重排,如有内容异常,请看原文。


PCIe - TLP Header, Packet Formats, Address Translation, Config Space, Command Register, Configuration types

Posted by SemiSaga on July 29, 2019

TLP Packet Format:

TLP 报文格式
在这里插入图片描述
FIG: TLP Packet Format.

The Transaction Layer Packet Format is defined as:
事务层数据包格式定义如下:

  • Starts with a Prefix, which is an optional one and,
    以一个可选的前缀开始,

  • TLP Header and then,
    然后是 TLP 头部,

  • With/Without Data Payload,
    接着是数据载荷(可选),

  • At the end of TLP Packet a TLP Digest,
    在 TLP 数据包的末尾是一个 TLP 摘要,

  • The information in TLP Packet Format is distributed as:
    TLP 数据包格式中的信息分布如下:

    • TLP Prefixes.
      TLP 前缀

    • Header (mandatory).
      头部(必选)

    • Data (included when applicable): depends on the transaction type.
      数据(根据事务类型决定是否包含)。

    • TLP Digest (optional).
      TLP 摘要(可选)

在这里插入图片描述
FIG: TLP Byte Information

TLP Header:

TLP 头部:

  • Provides Format of the packet.
    提供数据包的格式。

  • Type of the packet.
    数据包的类型。

  • Length of associated data, if available.
    如果存在,提供相关数据的长度。

  • Transaction Descriptor.
    事务描述符。

  • Address/Routing information
    地址/路由信息

  • Byte enables
    字节使能

  • Message encoding
    消息编码

  • Completion Status
    完成状态

在这里插入图片描述
FIG: Common TLP Header.

  • 32-bit if information.
    32 位信息字段

  • Provides:
    提供以下信息:

    • Format.
      格式
    • TLP Packet Type.
      TLP 数据包类型
    • Traffic Class info.
      流量类别信息
    • Attributes.
      属性
    • T Heads (Presence of TLP Prefix, if present).
      T 头(如果存在 TLP 前缀)
    • TLP Digest.
      TLP 摘要
    • End Point (TLP is Normal or Poisoned).
      端点(TLP 是正常还是被污染的)
    • Address Translation (When memory is available).
      地址转换(当内存可用时)
    • Length (Data Length notation denoted in 32bit words).
      长度(以 32 位字表示的数据长度)
  • Fmt and Type define the Length of a Packet.
    格式和类型定义了数据包的长度

Packet format & Type Encoding:

数据包格式和类型编码:

TLP Type
TLP 类型
Format
格式
Type
类型
Description
描述
MR000 / 0010 0000Memory Read Request
内存读取请求
MRL000 / 0010 0001Memory Read Request Locked
锁定的内存读取请求
MW0100 0000Memory Write Request
内存写入请求
IOR0000 0010I / O Read Request
I/O 读取请求
IOW0100 0010I / O Write Request
I/O 写入请求
CR00000 0100Configuration Read Type 0
配置读取类型 0
CW00100 0100Configuration Write Type 0
配置写入类型 0
CR10000 0101Configuration Read Type 1
配置读取类型 1
CW10100 0101Configuration Write Type 1
配置写入类型 1
Msg0011 0 r2 r1 r0Message Request
消息请求
MsgD0111 0 r2 r1 r0Message Request with Data
带数据的消息请求

Some additional Transaction types are as follows:-
一些额外的事务类型如下:

TLP Type
TLP 类型
Format
格式
Type
类型
Description
描述
Cpl0000 1010Completion without data (0 Bytes)
不带数据的完成(0 字节)
CplD0100 1010Completion with data (data will be present in TLP)
带数据的完成(数据将包含在 TLP 中)
CplLk0000 1011Completion for Locked Memory read without data
锁定内存读取的完成(不带数据)
CplDLk0100 1011Completion for Locked Memory Read
锁定内存读取的完成
FetchAdd010 / 0110 1100Fetch and Add atomic Operation Request
取并加原子操作请求
Swap010 / 0110 1101Unconditional Swap Atomic Operation Request
无条件交换原子操作请求
CAS (Compare and Swap)010 / 0110 1110Compare and swap Atomic Operation
比较并交换原子操作
LPrfx1000 L3 L2 L1 L0Local TLP Prefix
本地 TLP 前缀
EPrfx1001 E3 E2 E1 E0End-End TLP Prefix
端到端 TLP 前缀

TLP Length Encoding:

TLP 长度编码:

Length [9:0]
长度 [9:0]
TLP Data Payload Size
TLP 数据载荷大小
00 0000 00011 DW
00 0000 00102 DW
11 1111 11111023 DW
00 0000 00001024 DW
  • DW: D Words.
    DW:双字

  • All 1s: 1023 D Words.
    全部为 1:1023 个双字

  • All 0s: 1024 D Words are present in the packet.
    全部为 0:数据包中有 1024 个双字

  • Suppose there are 1024 D Words of data, then the Root Complex will divide the data into smaller packets and send them to the EndPoints. If there is a Switch present in between, then the data is forwarded as it is without splitting it into the packets or without any change.
    假设数据有 1024 个双字,那么根复合体会将数据分成更小的数据包并发送到端点。如果中间有一个交换机,则数据将按原样转发,不会将其拆分成数据包或进行任何更改。

Address Formats:

地址格式:
在这里插入图片描述

FIG: 64-bit Address Routing

在这里插入图片描述

FIG: 32-bit Address Routing

Address Translation:

地址翻译:

AT Coding
地址编码
Description
描述
00Default / Untranslated
默认 / 未翻译
01Translation Request
翻译请求
10Translated
已翻译
11Reserved
保留

Routing:

路由:


FIG: ID Routing with 4 DW Header

在这里插入图片描述

FIG: ID Routing with 3 DW Header

  • Data uses Routing information like, Bus Number; Device Number, Function Number, etc to reach a particular endpoint.
    数据使用路由信息,如总线号、设备号、功能号等,到达特定的端点。

  • The Routing type (3 or 4 D Words of Header) depends on the need of TLP digest.
    路由类型(3 或 4 个双字的头部)取决于 TLP 摘要的需求。

  • The Switch checks for Bus Number and Device Number and it forwards the packet to that particular endpoint accordingly in order to perform the Routing during the Run-Time.
    交换机会检查总线号和设备号,并将数据包相应地转发到特定的端点,以在运行时执行路由。

PCIe Configuration Space:
PCIe 配置空间:

在这里插入图片描述
FIG: Configuration Space.

  • 4KB of Space.
    4KB 的空间

  • Starts from 0 to fff.
    从 0 到 fff 开始

  • 0 to 255 (256B) of PCIe Config Space.
    从 0 到 255(256 字节)的 PCIe 配置空间

  • from 100 to fff of Extended PCIe Configuration Space.
    从 100 到 fff 的扩展 PCIe 配置空间

  • While defining legacy PCI compatible mode and O.S., this kind of (0-fff) space is not available.
    在定义传统 PCI 兼容模式和操作系统时,这种(0-fff)空间是不可用的

  • 0-3f is PCIe Compatibility Configuration Space.
    0-3f 是 PCIe 兼容配置空间

  • PCIe Capability Structure determines if Extended Configuration space for PCI is present or not.
    PCIe 功能结构决定了是否存在 PCI 的扩展配置空间

  • 0-ff PCI Configuration Space is analogous to PCIe-PCI and it has different kinds of information.
    0-ff 的 PCI 配置空间类似于 PCIe-PCI,并且包含不同类型的信息

  • Configuration Space can be either of Type-0 or Type-1.
    配置空间可以是 Type-0 或 Type-1

在这里插入图片描述
FIG: Type 0 / 1 Configuration Space

  • Type 0: Used for Endpoints.
    Type 0:用于端点。

  • Type 1: Used for Switches and Root Complex.
    Type 1:用于交换机和根复合体。

  • Common information provided for both type 0/1 is shown above.
    上面显示了 Type 0 和 Type 1 的共同信息。

  • Identification Registers:
    识别寄存器:

  • Device ID:
    设备 ID:

  • Device unique identification value.
    设备的唯一识别值。

  • Vendor ID:
    厂商 ID:

  • Vendor unique identification value.
    厂商的唯一识别值。

PCIe ConfigSpace Command Register:
PCIe 配置空间命令寄存器:

Bit
Register
寄存器
Description
描述
2Bus Master Enable
总线主控使能
Controls the PCIe Endpoint to issue memory / IO request
控制 PCIe 端点发出内存 / I/O 请求
3Special Cycle Enable
特殊周期使能
Not applicable to PCIe
对 PCIe 不适用
4Memory Write and Invalidate
内存写入并使无效
N/A to PCIe
对 PCIe 不适用
5VGA Palette Snoop
VGA 调色板窥探
N/A to PCIe
对 PCIe 不适用
6Parity Error Response
奇偶校验错误响应
Logging of Master Data Parity error
记录主数据奇偶校验错误
7IDSEL
IDSEL
N/A to PCIe
对 PCIe 不适用
8SERR# (S error) Enable
SERR# (S 错误) 使能
Enables reporting of non-fatal & fatal error
启用非致命和致命错误的报告
9Fast back-to-back transaction enable
快速背靠背事务使能
N/A to PCIe
对 PCIe 不适用
10Interrupt Disable
中断禁用
Controls the ability of PCIe function generate interrupts to Root Complex
控制 PCIe 功能向根复合体生成中断的能力

Status Register:

状态寄存器:

Bit
Register
寄存器
Description
描述
3Interrupt Status
中断状态
Set indicates INTx emulation interrupt is pending or if it has been processed by the CPU or Root Complex
设置表示 INTx 模拟中断正在等待处理,或者已被 CPU 或根复合体处理
4Capabilities List
功能列表
Indicates presence of Extended PCIe capability list
表示存在扩展 PCIe 功能列表
566MHz
66MHz
N/A to PCIe
对 PCIe 不适用
7Fast back-to-back enable
快速背靠背使能
N/A to PCIe
对 PCIe 不适用
8Master Data Parity Error
主数据奇偶校验错误
Set by endpoint if parity error response bit in Command Register received by the endpoint
如果端点收到的命令寄存器中的奇偶校验错误响应位被设置,则由端点设置
10:9DEVSEL (Device Select) timing
DEVSEL (设备选择) 定时
N/A to PCIe
对 PCIe 不适用
11Signaled Target Abort
已发出目标中止
Set when a function completes as a Completor Abort Error
当一个功能作为完成者中止错误完成时设置
12Received Target Abort
已接收目标中止
Set when function receives completion with abort
当功能接收到带有中止的完成时设置
13Received Master Abort
已接收主中止
Set when requester receives a completion with unsupported request completion status
当请求者接收到带有不支持的请求完成状态的完成时设置
14Signaled System Error
已发出系统错误
Set when the function sends a fatal or non-fatal error message
当功能发送致命或非致命错误消息时设置
15Detected Parity Error
已检测到奇偶校验错误
Set when function receives poisoned TLPs
当功能接收到被污染的 TLP 时设置

Registers:

寄存器:

  • Cache Line Register
    缓存行寄存器

  • Latency Timer Register
    延迟计时器寄存器

  • Interrupt Line Register
    中断线寄存器

  • Interrupt Pin Register
    中断引脚寄存器

  • Error Register
    错误寄存器

PCI Type-0 Configuration Space:

PCI Type-0 配置空间:

在这里插入图片描述
FIG: Type 0 PCI Configuration Space

  • BAR (Base Address Registers) space is used to map the internal functions or internal memory requests into the corresponding system memory.
    基地址寄存器(BAR)空间用于将内部功能或内部内存请求映射到相应的系统内存。

  • To summarize, Base Address Registers or BAR (offset 10h - 24h)
    总之,基地址寄存器或 BAR(偏移量 10h - 24h):

  • Resources are mapped into memory space using BAR registers.
    使用 BAR 寄存器将资源映射到内存空间。

  • Supports 64bit addressing for any BAR request prefetchable memory.
    支持任何 BAR 请求的 64 位可预取内存地址。

  • Minimum memory space range requested is 128 Bytes. Whenever we are Writing into that BAR Register and Read Back the information, whatever size it supports will be set to 1 and others to 0. With this, we can come to a conclusion of BAR base address 0 and if it needs to be allocated or not (BAR = 0 implies Not in Use).
    请求的最小内存空间范围是 128 字节。当我们写入该 BAR 寄存器并读回信息时,它支持的大小将被设置为 1,其他为 0。通过这种方式,我们可以得出 BAR 基地址 0 是否需要分配的结论(BAR = 0 表示未使用)。

  • Minimum Grant / Maximum Latency Registers (offset 3Eh / 3Fh)
    最小授权 / 最大延迟寄存器(偏移量 3Eh / 3Fh)

  • N/A to PCIe, Hardwired to 00h.
    对 PCIe 不适用,硬连线为 00h。

PCI Type-1 Configuration Space:

PCI Type-1 配置空间:

在这里插入图片描述
FIG: Type 1 PCI Configuration Space

Registers:

寄存器:

  • Base Address Register (offset 10h / 14h)
    基地址寄存器(偏移量 10h / 14h)

  • Primary Bus Number (Root Complex - 0)
    主总线号(根复合体 - 0)

  • Secondary Bus Number (Enumerated during the runtime)
    次级总线号(在运行时枚举)

  • Secondary Latency Timer (N/A for PCIe)
    次级延迟计时器(对 PCIe 不适用)

  • Secondary Status Register (similar to Common Status Register)
    次级状态寄存器(类似于通用状态寄存器)

  • Prefetchable Memory Base / Limit
    可预取内存基址 / 限制

  • Bridge Control Register (used for bridging PCIe to PCI)
    桥接控制寄存器(用于将 PCIe 桥接到 PCI)


PCIe TLP 路由分为几类?都有什么作用

posted @ 2025-01-12 12:25 yooooooo

PCIe TLP(事务层数据包)路由主要分为以下几类及其作用:

1. 基于地址的路由 (Address-Based Routing)

  • 作用:用于内存读写(Memory Read/Write)和输入/输出读写(I/O Read/Write)等事务。TLP 头部包含目标地址,交换机根据该地址将 TLP 转发至正确的设备。

2. 基于 ID 的路由 (ID-Based Routing)

  • 作用:用于配置读写(Configuration Read/Write)和消息事务。TLP 头部包含目标设备的总线号(Bus)、设备号(Device)和功能号(Function),交换机根据这些信息转发 TLP。

3. 隐式路由 (Implicit Routing)

  • 作用:用于特定消息事务,例如电源管理和错误处理。TLP 无需明确的目标地址或 ID,交换机根据 TLP 的类型将其转发至根复合体(Root Complex)或其他指定设备。

总结

  • 基于地址的路由:处理内存和 I/O 事务。
  • 基于 ID 的路由:处理配置和消息事务。
  • 隐式路由:处理特定系统级消息。

这些路由机制确保 TLP 能够准确到达目标设备。


TLP 路由(Routing)基础

发表于 4/3/2018 8:17:03 PM

首先来分析一个例子,如下图所示:

blob.png

当包(Packet)到达 Switch 的输入端口(Ingress Port)时,端口首先会检查包是否有错误,然后根据包的路由(Routing)信息,来做出以下三种处理方式之一:

1、 接受这个包,并自己(Switch)使用它(Internal Use);

2、 将其通过响应的输出端口(Egress Port)转发到下一级 Endpoint(或者下一级 Switch);

3、 拒绝接受这个包。

在前面的文章中多次介绍过,PCIe 总线中一共有三种类型的包:Ordered Sets(命令集包,只在相邻的设备的物理层之间进行传递,不会被转发到其他的设备中)、DLLPs(数据链路层包,只在相邻的设备的数据链路层之间进行传递,不会被转发到其他设备中)和 TLPs(事务层包,可以根据包中的路由信息被转发到其他的设备中)。

  • 实际上不论是 TLPs 还是 DLLPs 都会经过物理层,这里说的 TLP 和 DLLP 指的是包的最初来源分别是事务层和数据链路层,即 DLLP 和上一层的事务层没有什么关系,其内容和作用完全是由数据链路层自己决定的。

  • Endpoint 不仅可以发送 TLP 给其上层的设备(如 Root),也可以发送 TLP 给其他的 Endpoint,当然这需要借助 Switch 来实现。这种传输方式叫做 Peer-to-Peer。

TLP 一共有三种路由方式,分别是 ID 路由(ID Routing,即 BDF Routing)、地址路由(Address Routing,包括 Memory 和 IO)以及模糊路由(Implicitly Routing)。本文将简单介绍一些关于 TLP 路由的基础知识,具体的路由方式将会在接下来的三篇文章中依次进行介绍。

具体采用哪一种路由方式是由 TLP 的类型所决定的,如下表所示:

blob.png

  • AtomicOp 是 PCIe Spec V2.1 新增的内容,有兴趣的可以自行阅读 V2.1 的相关内容。

  • 一般情况下,Message 都是使用模糊路由(Implicitly Routing)的,但是也有 PCIe 设备厂商自定义的 Message 会使用地址路由或者 ID 路由。

可能有的人要有疑惑了,既然 Message 可以使用地址路由或者 ID 路由,为什么还要单独搞出来一个模糊路由呢?原因很简单,使用模糊路由可以广播 Message 到每一个设备,采用其他的路由方式必须明确指定是哪一个设备。

那么 PCIe 中是如何来判断 TLP 的类型的呢?又是如何判断其为 Request 还是 Completion 的呢?实际上是通过 TLP Header 的 Format 和 Type 部分来确定的,如下图所示:

blob.png

blob.png


TLP 路由之 ID Routing

发表于 4/3/2018 8:18:21 PM

ID 路由(ID Routing)有的时候也被称为 BDF 路由,即采用 Bus Number、Device Number 和 Function Number 来确定目标设备的位置。这是一种兼容 PCI 和 PCI-X 总线协议的路由方式,主要用于配置请求(Configuration Request)的路由,在 PCIe 总线中,其还可以被用于 Completion 和 Message 的路由。

前面的文章提到过,TLP 的 Header 有 3DW 的和 4DW 的,其中 4DW 的 Header 一般只用于 Message 中。使用 ID 路由的 TLP Header 以下两张图所示,第一个为 3DW Header,第二个为 4DW Header:

blob.png

blob.png

对于 Endpoint 来说,其只需要检查 TLP Header 中的 BDF 是否与自己的 BDF 一致,如果一致,则认为是发送给自己的,否则便会忽略该 TLP。

** 注:** 很多初学者可能都会有这样的一个疑问:采用 ID 路由的 TLP Header 中并未包含 Requester 的 ID(BDF),那么 Completer 怎么确定 Requester 的位置呢?实际上这个问题并不难回答,因为 ID 路由主要用于配置请求和 Completion,偶尔也用于一些厂商自定义的 Message。首先,配置请求的 Requester 只能是 Root,所以不需要确定其位置;再之,Completion 用于对其他路由方式的回应,如地址路由中包含了 Requester 的 BDF;最后,Message 是 Posted 型的,即其根本不需要 Completion,自然也就不需要 Requester 的 BDF 了。

** 注:** 实际上 PCIe 是一种点对点(Point-to-Point)的通信方式,即每个链路只能连接一个设备,因此大部分情况下使用 5bit 的空间来描述 Device Number 完全是多余的。为此,PCIe Spec 提出了 ARI 格式,这里暂时不详细介绍了,有兴趣的可以自行阅读 PCIe Spec 的相关内容。

对于 Switch 来说,则需要根据 TLP Header 中的 BDF 来判断,这个 TLP 是给自己的还是给自己下属的其他设备的。如下图所示:

blob.png


TLP 路由之 Address Routing

发表于 4/3/2018 8:19:56 PM

地址路由(Address Routing)的地址包括 IO 和 Memory。对于 Memory 请求来说,32bit 的地址使用 3DW 的 Header,64bit 的地址使用 4DW 的 Header。而 IO 请求则只能使用 32bit 的地址,即只能使用 3DW 的 Header。

** 注:** 再次强调,IO 请求是为了兼容早期的 PCI 设备的,在新的 PCIe 设备中禁止使用。

3DW 和 4DW 的 TLP Header 分别如以下两张图所示:

blob.png

blob.png

当 Endpoint 接收到采用地址路由的 TLP 时,其会根据该 TLP Header 中的地址信息和自己的配置空间中的 BAR 寄存器来判断这个 TLP 是不是自己的。如下图所示:

blob.png

Switch 的地址路由机制如下图所示:

blob.png


TLP 路由之 Implicit Routing

发表于 4/3/2018 8:20:57 PM

模糊路由(Implicit Routing,又译为隐式路由)只能用于 Message 的路由。前面的文章中多次提到过,PCIe 总线相对于 PCI 总线的一大改进便是消除了大量的边带信号,这正是通过 Message 的机制来实现的。

PCIE 中的带内(in-band)包和边带信号(side-band)

挣扎着的咸鱼于 2023-07-15 16:05:27 发布

1. 带内(in-band)包

带内包是指在 PCIE 协议中用于数据传输和控制的标准数据包。这些数据包是 PCIE 协议的核心组成部分,用于实现设备之间的通信。常见的带内包类型包括:

  • Memory Read(MemRd):用于从内存中读取数据的请求包。
  • Memory Write(MemWr):用于向内存写入数据的请求包。
  • Message:用于传递特定控制信息或状态信号的数据包。

2. 边带信号(Side-band Signal)

边带信号是指在 PCIE 协议中不通过数据链路传输,而是通过独立的物理引脚进行传输的信号。这些信号通常用于实现一些特定的功能,例如中断请求。边带信号的主要特点包括:

  • 它们是可选信号,不属于 PCIE 协议的强制性组成部分。
  • 它们仅在特定的系统环境中使用,通常局限于处理器系统内部,无法在系统外部使用。

边带信号的定义

根据 PCI 规范,边带信号的定义如下:

任何不属于 PCI 规范定义的信号,但连接两个或多个 PCI 兼容设备,并且仅对这些设备具有特定意义的信号。

边带信号的实例

在 PCI 总线架构中,中断信号 INTA#INTB#INTC#INTD# 是典型的边带信号。这些信号用于向处理器发出中断请求,其电平为低电平有效,并与处理器的中断控制器直接相连。PCI 总线规范并未明确规定这些信号在处理器系统中的具体使用方式,因为它们属于可选信号。
 
image.png

PCIe 定义的 Message 主要有以下几种类型:

・Power Management
・INTx legacy interrupt signaling
・Error signaling
・Locked Transaction support
・Hot Plug signaling
・Vendor‐specific signaling
・Slot Power Limit settings

所有采用模糊路由的 TLP 的 Header 都是 4DW 的,具体如下图所示:

blob.png

其中 Type 决定了模糊路由的类型,具体如下图所示:

blob.png


TLP Header 详解(一)

发表于 4/6/2018 10:15:56 AM

事务层包(TLP)的一般格式如下图所示:

blob.png

前面的文章介绍过,TLP Header 为 3DW 或者 4DW,Data Payload 为 1-1024DW,最后的 TLP Digest(ECRC)是可选的,为 1DW。

TLP Header 在整个 TLP 的位置如下图所示,需要注意的是,TLP Header 的格式和内容都会随着 TLP 的类型和路由方式的改变而改变。

blob.png

TLP 的类型和路由方式由 Fmt 和 Type 所决定,这在前面关于 TLP 路由的文章中已经详细的介绍过。上图显示的是各种不同格式的 TLP Header 的相同的部分。

每一个 Field 的作用与意义如下表所示:

blob.png

blob.png

blob.png

下面分别详细地介绍一下 Byte Enable,在 PCIe 中 Data Payload 的单位是 DW,也就是说数据大小(地址)需要以 DW 作为对齐。但是很多情况下,数据的大小并不是 DW 的整数倍,因此 PCIe 引入了 Byte Enable 来解决这一问题。使用 Byte Enable 需要遵循一下原则:

・Byte Enable 为高电平有效,低电平(0)表示 Data Payload 的对应 Byte 将被认为是无效的,即不被 Completer 使用。

・如果有效数据小于 1DW,则 Last DW Byte Enable 应全部为 0。

・如果 Data Payload 大于 1DW,则 First DW Byte Enable 至少有一位是有效的。

・如果 Data Payload 大于或等于 3DW,则 First DW Byte Enable 和 Last DW Byte Enable 当中的有效位必须是连续的。即这种情况下,Byte Enable 只能用于调整起始地址和结束地址。

・如果 Data Payload 等于 1DW,则 First DW Byte Enable 中的有效位可以是不连续的。

・如果 Data Payload 等于 2DW,则 First DW Byte Enable 和 Last DW Byte Enable 中的有效位都可以是不连续的。

・写请求中的 DW 等于 1,但是 First DW Byte Enable 中没有任何一位是有效的,也是允许的,但是这样的请求对于 Completer 没有任何作用。

・如果读请求 DW 等于 1,但是 First DW Byte Enable 中没有任何一位是有效的,此时 Completer 会返回 1DW 的 Data Payload,只是其中的数据都是无效的。这一方式常备用于 Flush Mechanism。

一个简单的 Byte Enable 使用的例子,如下图所示:

blob.png

关于 TLP 的 Data Payload 有:

・Data Payload 的大小由 TLP Header 中的 Length 决定。

・Data Payload 的数据采用的是 Little Endian,即低字节存放于低地址中。

・Data Payload 的大小并不是有效的数据的大小,有效数据的大小是由 Data Payload 和 Byte Enable 共同决定的。

・当 TLP 类型为 Message 时,Length 一般是保留的(Reserved),除非该 Message 是带有数据的(MsgD)。

・TLP 的 Data Payload 大小不得超过 Max_Payload_Size 的值,该值位于 Device Control Register 中。对于比较大的数据量,因此只能分多次进行发送。对于读请求来说,并没有 Data Payload,也就是说该规则并不适用于读请求。

・需要特别注意的是,起始地址和结束地址之间不能够跨越 4KB 的地址边界。


TLP Header 详解(二)

发表于 4/6/2018 10:19:17 AM

下面用几个具体的例子来讲解 TLP Header 的格式与作用。因为内容较多,所以分为多篇文章分别进行介绍。第一篇(即本文)介绍 IO Request、Memory Request 和 Configuration Request。第二篇文章(即 TLP Header 详解三)介绍 Completion ,第三篇文章(即 TLP Header 详解四)介绍 Message Request。

IO Request

IO Request 的 TLP Header 的格式如下图所示:

blob.png

blob.png

blob.png

Memory Request

Memory Request 的 TLP Header 的格式如下图所示:

blob.png

blob.png

blob.png

blob.png

** 注:**TLP Prefix、ID Based Ordering(IDO)和 TLP Processing Hints(TH)均为 PCIe Spec V2.1 提出的。

Configuration Request

Configuration Request 的 TLP Header 的格式如下图所示:

blob.png

blob.png

blob.png

** 补充说明:关于 Byte Enable 的规则和一个简单的例子如下:**

image.png**
**

image.png


TLP Header 详解(三)

发表于 4/6/2018 10:20:44 AM

Completions

Completions 的 TLP Header 的格式如下图所示:

blob.png

blob.png

blob.png

这里来解释一下 Completion Status Codes

・000b (SC) Successful Completion:表示请求(Request)被正确的处理;

・001b (UR) Unsupported Request:表示请求是非法的或者不能被 Completer 所识别的。在 PCIe V1.1 以及之后的版本将这作为 Advisory Non-Fatal Error;

・010b (CRS) Configuration Request Retry Status:Completer 暂时不能响应的配置请求,需要 Requester 稍后再次尝试;

・100b (CA) Completer Abort:Completer 可以响应该请求,但是却发生了其他的错误,该错误是 Uncorrectable Error。

关于 CplD,需要注意的是:

・前面的文章中多次提到,一个读请求可能会对应多个 CplD(因为 4KB 的地址边界问题,以及 RCB 的限制),但是返回的总的数据量应当与请求的数据量保持一致,否则可能会出现 Completion Timeout 的错误;

・一个 Completion 只能对应于一个 Request;

・IO 和 Configuration 读请求由于一直都是 1DW,因此其一直都只对应一个 Completion;

・当 Completion 中的状态码(Status Codes)为 SC(Successful)之外的状态,则一次传输(事务,Transaction)被终止;

・在处理一个请求多个 CplD 时,应当注意 Read Completion Boundary(RCB),RCB 的值可以是 64Bytes 或者 128Bytes;

・Bridge 和 Endpoint 应设计为 RCB 的大小是可以通过软件修改或控制的;

・在处理一个请求多个 CplD 时,应注意先发送的时低地址的数据,后发送高地址数据。

Requester 接受到 Completion 的处理规则:

・如果 Requester 接收到的 Completion 与自己之前发送的 Request 不一致,则会报错;

・当 Completion 中的状态码不是 SC 或者 CRS 的话,则会报错,并且相关的 Buff 都会被清空;

・当任何非配置请求的 Completion 中的状态码为 CRS 时,都会被认为是非法的,并被认为是 Malformed TLP;


TLP Header 详解(四)

发表于 4/16/2018 8:32:53 PM

PCIe 中的 Message 主要是为了替代 PCI 中采用边带信号,这些边带信号的主要功能是中断,错误报告和电源管理等。所有的 Message 请求采用的都是 4DW 的 TLP Header,但是并不是所有的空间都被利用上了,例如有的 Message 就没有使用 Byte8 到 Byte15 的空间。

Message 请求的 TLP Header 格式如下图所示:

blob.png

blob.png

blob.png

blob.png

上面的表格中提到了,Message 主要有九个类型:

  1. INTx Interrupt Signaling
  2. Power Management
  3. Error Signaling
  4. Locked Transaction Support
  5. Slot Power Limit Support
  6. Vendor‐Defined Messages
  7. Ignored Messages (related to Hot‐Plug support in spec revision 1.1)
  8. Latency Tolerance Reporting (LTR)
  9. Optimized Buffer Flush and Fill (OBFF)

下面将分别进行介绍一下,

INTx Interrupt Messages
中断消息

PCI 2.3 提出了 MSI(Message Signaled Interrupt),但是早期的 PCI 并不支持这一功能,PCIe 为此定义了一种 Virtual Wire 来模拟 PCI 的中断引脚(INTA-INTD)。如下图所示:

blob.png

INTx Message 的使用规则如下:

・They have no data payload and so the Length field is reserved.

・They’re only issued by Upstream Ports. Checking this rule for received packets is optional but, if checked, violations will be handled as Malformed TLPs.

・They are required to use the default traffic class TC0. Receivers must check for this and violations will be handled as Malformed TLPs.

・Components at both ends of the Link must track the current state of the four virtual interrupts. If the logical state of one interrupt changes at the Upstream Port, it must send the appropriate INTx message.

・INTx signaling is disabled when the Interrupt Disable bit of the Command Register is set = 1 (as would be the case for physical interrupt lines).

・If any virtual INTx signals are active when the Interrupt Disable bit is set in the device, the Upstream Port must send corresponding Deassert_INTx messages.

・Switches must track the state of the four INTx signals independently for each Downstream Port and combine the states for the Upstream Port.

・The Root Complex must track the state of the four INTx lines independently and convert them into system interrupts in an implementation‐specific way.

・They use the routing type “Local‐Terminate at Receiver” to allow a Switch to remap the designated interrupt pin when. Consequently, the Requester ID in an INTx message may be assigned by the last transmitter.

Power Management Messages
电源管理消息

blob.png

Power Management Messages 使用规则如下:

・Power Management Messages don’t have a data payload, so the Length field is reserved.

・They are required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

・PM_Active_State_Nak is sent from a Downstream Port after it observes a request from the Link neighbor to change the Link power state to L1 but it has chosen not to do so (Local ‐ Terminate at Receiver routing).

・PM_PME is sent upstream by the component requesting a Power Management Event (Implicitly Routed to the Root Complex).

・PM_Turn_Off is sent downstream to all endpoints (Implicitly Broadcast from the Root Complex routing).

・PME_TO_Ack is sent upstream by endpoints. For switches with multiple Downstream Ports, this message won’t be forwarded upstream until all Downstream Ports have received it (Gather and Route to the Root Complex routing).

Error Messages (错误消息)

blob.png

Error Message 使用规则如下:

・They are required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

・They don’t have a data payload, so the Length field is reserved.

・The Root Complex converts Error Messages into system‐specific events.

Locked Transaction Support

blob.png

Unlock Message 使用规则:

・They are required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

・They don’t have a data payload, and the Length field is reserved.

Set Slot Power Limit Message

blob.png

Set_Slot_Power_Limit Message 使用规则:

・They’re required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

・The data payload is 1 DW and so the Length field is set to one. Only the lower 10 bits of the 32‐bit data payload are used for slot power scaling; the upper payload bits must be set to zero.

・This message is sent automatically anytime the Data Link Layer transitions to DL_Up status or if a configuration write to the Slot Capabilities Register occurs while the Data Link Layer is already reporting DL_Up status.

・If the card in the slot already consumes less power than the power limit specified, it’s allowed to ignore the Message.

Vendor**‐Defined Message 0 and 1**

blob.png

blob.png v

厂商自定义 Message 使用规则:

・A data payload may or may not be included with either type.

・2. Messages are distinguished by the Vendor ID field.

・3. Attribute bits [2] and [1:0] are not reserved.

・4. If the Receiver doesn’t recognize the Message:

・Type 1 Messages are silently discarded

・Type 0 Messages are treated as an Unsupported Request error condition

Ignored Messages

blob.png

Hot Plug Message 使用规则:

・They are driven by a Downstream Port to the card in the slot.

・The Attention Button Message is driven upstream by a slot device.

Latency Tolerance Reporting Message

blob.png

blob.png

LTR Message 使用规则:

・They are required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

・They do not have a data payload, and the Length field is reserved.

Optimized Buffer Flush and Fill Messages

blob.png

blob.png

OBFF Message 使用规则:

・They are required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

・They do not have a data payload, and the Length field is reserved.

・The Requester ID must be set to the Transmitting Port’s ID.


via:

  • PCIe - TLP Header, Packet Formats, Address Translation, Config Space, Command Register, Configuration types
    https://www.semisaga.com/2019/07/pcie-tlp-header-packet-formats-address.html

    • Transaction Layer Packet (TLP) Header Formats
      https://www.intel.com/content/www/us/en/docs/programmable/683647/18-0/transaction-layer-packet-tlp-header-formats.html
  • PCIe TLP 路由分为几类?都有什么作用 - yooooooo - 博客园
    https://www.cnblogs.com/linhaostudy/p/18666862

  • PCIe 扫盲 ——TLP 路由(Routing)基础 - Felix
    https://blog.chinaaet.com/justlxy/p/5100053323

  • PCIe 扫盲 ——TLP 路由之 ID Routing-Felix
    https://blog.chinaaet.com/justlxy/p/5100053324

  • PCIe 扫盲 ——TLP 路由之 Address Routing-Felix
    https://blog.chinaaet.com/justlxy/p/5100053325

  • PCIe 扫盲 ——TLP 路由之 Implicit Routing-Felix
    https://blog.chinaaet.com/justlxy/p/5100053326

    • PCIE 中的带内(in-band)包和边带信号(side-band)是啥?-CSDN博客
      https://blog.csdn.net/m0_61703043/article/details/131740521
  • PCIe 扫盲 ——TLP Header 详解(一)-Felix
    https://blog.chinaaet.com/justlxy/p/5100053352

  • PCIe 扫盲 ——TLP Header 详解(二)-Felix
    https://blog.chinaaet.com/justlxy/p/5100053353

  • PCIe 扫盲 ——TLP Header 详解(三)-Felix
    https://blog.chinaaet.com/justlxy/p/5100053354

  • PCIe 扫盲 ——TLP Header 详解(四)-Felix
    https://blog.chinaaet.com/justlxy/p/5100053463

相关文章:

PCIe TLP | 报头 / 包格式 / 地址转换 / 寄存器 / 配置空间类型

注:本文为 “PCIe TLP” 相关文章合辑。 英文引文,机翻未校。 中文引文,未整理去重。 图片清晰度受引文原图所限。 略作重排,如有内容异常,请看原文。 PCIe - TLP Header, Packet Formats, Address Translation, Conf…...

《AI大模型应知应会100篇》第46篇:大模型推理优化技术:量化、剪枝与蒸馏

第46篇:大模型推理优化技术:量化、剪枝与蒸馏 📌 目标读者:人工智能初中级入门者 🧠 核心内容:量化、剪枝、蒸馏三大核心技术详解 实战代码演示 案例部署全流程 💻 实战平台:PyTor…...

C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 20)

🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录 三…...

【Python生成器与迭代器】核心原理与实战应用

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比二、实战演示环境配置要求核心代码实现案例1:自定义迭代器类案例2:生成器函数案例3:生成器表达式运行结果验证三、性能对比测试方法论量…...

2025年最新嵌入式开发STM32单片机详细教程(更新中)

ARM 处理器架构 ARM 处理器从 1984 ARM-1 发展到 2004 ARM-11 之后,放弃数字命名,用 cortex 来命令处理器产品。 Cortex-A系列 主打高性能 手机,平板,智能电视等 Cortex-R系列 主打实时 汽车,工业控…...

neatchat轻量级丝滑的ai模型web客户端

NeatChat 人工智能模型对话web客户端 前言 此项目是nextchat分支,相比原者更加简洁流畅。 部署 docker部署 name: next-chat services:chatgpt-next-web:ports:- 8080:3000environment:- OPENAI_API_KEYsk-xx543Ef3d- BASE_URLhttps://api.ai.com- GOOGLE_API_K…...

学习黑客分析案例

▶️ Day 2 任务 – 「怪物图鉴」实战 选一条最新安全事件(国内外均可,建议 1 年内) 例:CVE-2024-21887 Ivanti VPN RCE 用下列表格框架,3 句话归纳它的“派系”“CIA 受击点”“一句话原理”: 攻击流派…...

sonar-scanner在扫描JAVA项目时为什么需要感知.class文件

1 概述 SonarQube是一个静态代码分析工具,主要用于检查源代码的质量,包括代码重复、潜在漏洞、代码风格问题等。而SonarScanner是SonarQube的客户端工具,负责将代码进行形态分析,并将结果发送到SonarQube服务器。所以&#xff0c…...

AtCoder Beginner Contest 404(ABCDE)

A - Not Found 翻译: 给您一个字符串S,长度在1 到25 之间,由小写英文字母组成。 输出S 中没有出现的一个小写英文字母。 如果有多个这样的字母,可以输出其中任何一个。 思路: 数组记录存在于 s 中的字母。&#xff08…...

【言语理解】中心理解题目之结构分析

front:中心理解题目之抓住关键信息 3.1 五种常见对策表达方式 3.1.1 祈使或建议给对策 应该(应) 需要(要) eg:……。对此,媒体要做好自我规约。……。 eg:……。然而,两地仅简单承接…...

DeepSeek-Prover-V2-671B:AI在数学定理证明领域的重大突破

文章目录 什么是DeepSeek-Prover-V2-671B?核心技术亮点1. **超大规模参数与高效推理**2. **超长上下文窗口**3. **强化学习与合成数据** 主要应用场景1. **教育领域**2. **科学研究**3. **工程设计**4. **金融分析** 开源与商业化性能表现总结 2025年4月30日&#x…...

React18组件通信与插槽

1、为DOM组件设置Props 在react中jsx中的标签属性被称为Props DOM组件的类属性,为了防止与js中的class属性冲突改成了className DOM组件的style属性 import image from "./logo.svg"; function App() {const imgStyleObj {width: 200,height: 200,};re…...

第15章 对API的身份验证和授权

第15章 对API的身份验证和授权 在构建RESTful API时,确保只有经过身份验证和授权的用户才能访问特定资源是至关重要的。身份验证是确认用户身份的过程,而授权则是决定用户是否有权访问特定资源的过程。在本章中,我们将详细探讨如何在ASP.NET Core Web API中实现身份验证和授…...

【项目归档】数据抓取+GenAI+数据分析

年后这两个月频繁组织架构变动,所以博客很久没更新。现在暂时算是尘埃落定,趁这段时间整理一下。 入职九个月,自己参与的项目有4个,负责前后端开发,测试,devops(全栈/doge)&#xff…...

如何优化MySQL主从复制的性能?

优化MySQL主从复制的性能需要从硬件、配置、架构设计和运维策略等多方面入手。以下是详细的优化方案: 一、减少主库写入压力 1. ‌主库优化‌ 二进制日志(binlog)优化‌: 使用 binlog_formatROW 以获得更高效的复制和更少的数…...

asp.net客户管理系统批量客户信息上传系统客户跟单系统crm

# crm-150708 客户管理系统批量客户信息上传系统客户跟单系统 # 开发背景 本软件是给郑州某企业管理咨询公司开发的客户管理系统软件 # 功能 1、导入客户数据到系统 2、批量将不同的客户分配给不同的业务员跟进 3、可以对客户数据根据紧急程度标记不同的颜色&#xff0c…...

PCIe | TLP | 报头 / 包格式 / 地址转换 / 配置空间 / 寄存器 / 配置类型

注:本文为 “PCIe - TLP” 相关文章合辑。 英文引文,机翻未校。 中文引文,未整理去重。 图片清晰度受引文原图所限。 略作重排,如有内容异常,请看原文。 PCIe - TLP Header, Packet Formats, Address Translation, Co…...

ip和域名

好的,我来依次回答你的问题: 域名和 IP 地址是什么关系? IP 地址 (Internet Protocol Address):可以想象成互联网上每台设备(比如服务器、电脑、手机)的门牌号码。它是一串数字(例如 IPv4 地址 …...

《解锁GCC版本升级:开启编程新世界大门》

《解锁GCC版本升级:开启编程新世界大门》 一、引言:GCC 版本升级的魔法钥匙 在编程的广阔天地里,GCC(GNU Compiler Collection)宛如一座灯塔,为无数开发者照亮前行的道路。它是一款开源且功能强大的编译器集合,支持 C、C++、Objective - C、Fortran、Ada 等多种编程语言…...

前端跨域问题怎么在后端解决

目录 简单的解决方法: 添加配置类: 为什么会跨域 1. 什么是源 2. URL结构 3. 同源不同源举🌰 同源例子 不同源例子 4. 浏览器为什么需要同源策略 5. 常规前端请求跨域 简单的解决方法: 添加配置类: packag…...

生成式 AI 的工作原理

在科技浪潮汹涌澎湃的当下,生成式 AI 宛如一颗璀璨的新星,照亮了我们探索未知的征程。它不再仅仅是科幻电影中的幻想,而是已经悄然融入我们生活的方方面面,从智能客服的贴心应答,到艺术创作的天马行空,生成式 AI 正以一种前所未有的姿态重塑着世界。然而,你是否曾好奇,…...

DeepSeek辅助学术写作之修订与校稿以及发表与推广相关提示词分享祝你顺利毕业~

目录 1.修订与校对 2.发表与推广 大家好这里是AIWritePaper官方账号,官网👉AIWritePaper~ 宝子们可以使用小编精选的“ChatGPT研究论文提示词”集合来创建研究论文。利用ChatGPT的智能回应生成详尽有效的内容,这样可以加快研究论文的策划、…...

叠层阻抗线框

1.阻抗介绍 特性阻抗:又称“特征阻抗”,它不是直流电阻,属于长线传输中的概念。在高频范围内,信号传输过程中,信号沿到达的地方,信号线和参考平面(电源或地平面)间由于电场的建立&am…...

大数据:驱动技术创新与产业转型的引擎

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 在全球数字化转型的浪潮中,大数据已经成为推动各行各业革新的核心力量。随着信息技术的迅猛发展,数据的收集、存储、处理和分析能力不断提升,大数据不仅改变了企业的运营模式,更引领了技术创新和产业结构…...

C++继承基础总结

引言 在编写多个类时,类之间可能会存在多个相同的成员变量,导致代码冗余度过高,C继承的出现,使得我们可以在已有类的基础上构建新类,从而实现代码复用与结构扩展。 一、继承的基本概念 继承是指子类(派生…...

2025年斯诺克世锦赛——“75三杰”在1/4决赛作为对手的概率

“在最近的斯诺克世锦赛中,中国两名球员成功挺进前8强。此外,前8强也出现令人感慨的一幕:75三杰全部进入到了八强,这也是历史第5次,50岁正是打拼的年纪!传奇之旅继续!”——摘自50岁正是打拼的年…...

Python绘制地球的重力地图

文章目录 Boule重力地图从ensaio下载重力数据Boule boule中定义了多种参考椭球,可用于表示地球、火星等星体的重力分布。可通过pip安装 pip install bouleboule中已经定义的椭球如下 椭球GRS80WGS84MARSMERCURYMOONVENUSVESTA星体地球地球火星水星月球金星灶神星这些椭球可直…...

多端定制系统开发:打造高效全平台覆盖的APP解决方案

在移动互联网时代,用户需求日益多样化,企业若想触达更广泛的受众,仅靠单一平台的应用已远远不够。无论是iOS、Android、Web端,还是智能手表、车载设备等新兴终端,多端适配已成为企业数字化转型的刚需。多端定制系统开发…...

WGDI-分析WGD及祖先核型演化的集成工具-文献精读126

WGDI: A user-friendly toolkit for evolutionary analyses of whole-genome duplications and ancestral karyotypes WGDI:一款面向全基因组重复事件与祖先核型演化分析的易用工具集 摘要 在地球上大多数主要生物类群中,人们已检测到全基因组复制&…...

旋转矩阵公式理解

这里给出其中一种理解方法: 设原始直角坐标系下的坐标为(x,y),我们可以将它分解为两个向量(x,0)和(0,y)。接下来将两个向量分别顺时针旋转θ度,二者就会分别变成:(xcosθ,xsinθ)和(-ysinθ,ycosθ)。 也就是说,二者…...

网络Tips20-002

1..某主机接口的IP地址为192.16.7.131/26.则该IP地址所在网络的广播地址是:192 16.7.191 广播地址是指在特定网络上发送广播消息的地址。它用于向网络上的所有设备发送信息。 方法1:广播地址掩码取反和网络地址的或运算 方法2:广播地址将网…...

firewall docker 冲突问题解决(亲测有效)

# 关闭iptables,使用firewall systemctl disable iptables # 禁用服务 systemctl stop iptables # 关闭服务 systemctl status iptables # 查看服务状态 systemctl enable firewalld # 设置防火墙开机自启动 systemctl start firewalld # 开启服务 systemctl s…...

SwiftUI-MLX本地大模型开发(二)

介绍 在 SwiftUI-MLX本地大模型开发一文中,我们已经详细讲了如何利用 MLX 进行本地大模型的开发。但是通过案例可以发现 2 个问题: MLX 内置的大模型数量有限。每次大模型都需要从 HuggingFace 下载。 如何解决这 2 个问题,方案是&#xff1a…...

基于「骑手外卖系统」串联7大设计原则

你说得对!这些设计原则听起来都很抽象、很“玄”,如果不是实际开发过系统,很难理解“到底为什么要这样设计”。 那我现在就用一个你能想象得很清楚的真实例子,帮你把这7个设计原则一一落地到具体情境里,你会一眼明白。…...

泰迪杯特等奖案例学习资料:基于时空图卷积网络的城市排水系统水位精准重建与异常检测

(第十四届泰迪杯数据挖掘挑战赛A题特等奖案例解析) 一、案例背景与核心挑战 1.1 应用场景与行业痛点 城市排水系统(Urban Drainage Network, UDN)是城市基础设施的重要组成部分,其运行效率直接影响防洪排涝能力和水环境质量。然而,实际运维中面临以下难题: 监测数据稀…...

嵌入式Linux应用项目----智能网关

一、网关概述: Linux网关的作用在于,通过蓝牙、LoRa、串口、CAN等接口,与哪些无法连接网络的设备建立联系,将它们的数据转发至服务器。这过程中,网关充当了数据的桥梁,将下级设备所产生的数据发送至服务器。…...

C++ 中的继承

目录 前言 一、继承的概念及定义 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、复杂的菱形继承及菱形虚拟继承 (一)单继承与多继承 (二)菱形继承 …...

【中间件】brpc_基础_用户态线程上下文

文章目录 context介绍1 简单介绍2 主要功能2.1 上下文结构定义2.2 上下文切换实现2.3 协程栈管理2.4 平台兼容性处理2.5 性能优化 3 关键代码逻辑示例3.1 上下文初始化 (bthread_make_fcontext)3.2 上下文切换 (bthread_jump_fcontext) 4 与 BRPC 其他模块的协作5 性能与稳定性…...

蟋蟀的叫声,大自然的温度计

夏夜草丛中,蟋蟀的鸣叫声此起彼伏。有趣的是,它们的叫声频率竟然与气温有关!根据图片中的公式: 气温 ( X 8 ) 5 9 \text{气温} \frac{(X 8) \times 5}{9} 气温9(X8)5​ 只需记录蟋蟀在 15 秒内的鸣叫次数( X X X…...

文献总结:TPAMI端到端自动驾驶综述——End-to-End Autonomous Driving: Challenges and Frontiers

端到端自动驾驶综述 1. 文章基本信息2. 背景介绍3. 端到端自动驾驶主要使用方法3. 1 模仿学习3.2 强化学习 4. 测试基准4.1 真实世界评估4.2 在线/闭环仿真测试4.3 离线/开环测试评价 5. 端到端自动驾驶面临的挑战5.1 多模态输入5.2 对视觉表征的依赖5.3 基于模型的强化学习的世…...

二极管反向恢复的定义和原理

二极管的反向恢复定义 二极管的反向恢复是指二极管从正向导通状态切换到反向阻断状态时,电流从正向变为负向并最终回到零所需的时间。具体过程如下: 正向导通:当二极管正向偏置时,电流可以顺利通过,此时二极管处于导…...

# 基于词袋模型(BoW)的猫狗图像分类实践

基于词袋模型(BoW)的猫狗图像分类实践 在计算机视觉领域,图像分类是一项基础且重要的任务。本文将介绍如何使用词袋模型(Bag of Words, BoW)结合支持向量机(SVM)实现猫狗图像分类。通过详细的代…...

Vscode+git笔记

1.U是untracked m是modify modified修改了的。 2.check out 查看观察 3 status changed 暂存区 4.fetch v 取来拿来 5.orangion 起源代表远程分支 git checkout就是可以理解为进入的意思。...

生成式 AI 的未来

在人类文明的长河中,技术革命始终是推动社会跃迁的核心引擎。从蒸汽机解放双手,到电力点亮黑夜,再到互联网编织全球神经网络,每一次技术浪潮都在重塑人类的生产方式与认知边界。而今天,生成式人工智能(Generative AI)正以一种前所未有的姿态登上历史舞台——它不再局限于…...

进程间通信(IPC)

进程间通信(IPC)是操作系统中非常重要且基础的概念,涉及到不同进程之间如何交换数据和同步操作。下面我会一个一个地详细讲解这几种常见的IPC方式:管道(包含匿名管道和有名管道)、消息队列、共享内存、信号量、Socket通信,内容尽量用通俗易懂的语言,并结合具体原理、优…...

C语言奇幻指南:宏、头文件与变量的秘密世界

&#x1f31f; C语言奇幻指南&#xff1a;宏、头文件与变量的秘密世界 &#x1f31f; 一、写一个“比小”宏&#xff1a;三目运算符的魔法 目标&#xff1a;定义一个宏&#xff0c;返回两个参数中较小的值。 代码&#xff1a; #define MIN(a, b) ((a) < (b) ? (a) : (b))…...

【开源免费】二维码批量识别-未来之窗——C#-仙盟创梦IDE

二维码批量识别工具&#xff0c;借助先进图像识别技术&#xff0c;能快速准确读取大量二维码信息。适用于物流与供应链管理&#xff0c;如库存盘点和货物追踪&#xff1b;可用于资产管理&#xff0c;像固定资产盘点与设备巡检&#xff1b;还能助力数据收集与市场调研&#xff0…...

n8n工作流自动化平台的实操:解决中文乱码

解决问题&#xff1a; 通过ftp读取中文内容的文件&#xff0c;会存在乱码&#xff0c;如下图&#xff1a; 解决方案 1.详见《安装 iconv-lite》 2.在code节点&#xff0c;写如下代码&#xff1a; const iconv require(iconv-lite);const items $input.all(); items.forEa…...

MCP 探索:MCP 集成的相关网站 Smithery、PulseMCP 等

简简单单 Online zuozuo :本心、输入输出、结果 文章目录 MCP 探索:MCP 集成的相关网站 Smithery、PulseMCP 等前言一、MCP 集成基础二、利用热门资源平台集成三、集成常见 MCP 服务四、管理集成的 MCP 能力五、集成示例借鉴六、数据交互与安全管理MCP 探索:MCP 集成的相关网…...

linux的时间轮

时间轮&#xff1a;高效管理海量定时任务的利器 1. 引言&#xff1a;为什么需要时间轮&#xff1f; 在许多应用场景中&#xff0c;我们都需要管理大量的定时任务&#xff0c;例如&#xff1a; 网络连接的超时检测。分布式系统中的心跳检测。缓存条目的过期淘汰。需要延迟执行…...