首页 > 其他分享 >PCI 总线

PCI 总线

时间:2023-11-07 17:24:48浏览次数:39  
标签:配置 总线 PCI 寄存器 ID 设备

PCI Peripheral Component Interconnect 总线用于建立高性能低成本的局部总线,经过几代的发展,使得传输率从 132M/s 到 528 M/s。PCI 总线满足了低端桌面系统和高端局域网服务器的需求。PCI 总线组件和外接卡是处理器独立的。能有效地过渡到未来的处理器,以及与多处理器架构一起使用,多处理器架构也一样。PCI 总线的一个缺点是单总线最大可以驱动 10 个负载。

1. PCI总线的定义和历史背景

 PCI(Peripheral Component Interconnect) 是一种用于计算机总线的标准接口,最早由英特尔公司推出。它被设计用于连接计算机的主板和外部设备之间,如显卡、网卡、声卡等,并提供高速的数据传输通路。

PCI总线的发展起源于上个世纪90年代初,当时计算机系统对于更高带宽和更快数据传输速率的需求逐渐增加。随着计算机性能的提升,传统的ISA总线已经无法满足高速数据传输的需求,因而推动了PCI总线的出现和发展

2. PCI总线的基本架构

PCI总线采用多总线桥(Multi-Bus Bridge)的设计思路,将计算机系统中的不同总线连接起来。它包含以下几个主要组成部分:

  • 主机桥(Host Bridge):连接CPU和内存总线与PCI总线之间的数据传输。
  • PCI槽(PCI Slots):用于插入各种外部设备的插槽,并与PCI总线进行连接。
  • PCI设备(PCI Devices):外部设备,如显卡、网卡等,通过PCI插槽与计算机系统进行通信。
  • PCI桥接器(PCI Bridges):用于连接不同PCI总线之间以及PCI总线与其他总线之间的数据传输。

3. PCI总线的工作原理

PCI总线的工作原理可以简单地描述为以下几个步骤:

  1. 初始化:计算机开机时,主机桥会对PCI总线上的所有设备进行初始化,并分配唯一的设备号。
  2. 数据传输:PCI总线支持并行传输,通过总线控制信号和地址信号实现数据的传输和控制。
  3. 中断机制:PCI总线提供中断信号,用于设备向主机发送中断请求。
  4. 总线控制和仲裁:PCI总线通过仲裁机制控制总线上各个设备的访问顺序和优先级。

4. PCI总线的特点

PCI总线具有以下几个特点:

  • 高带宽:PCI总线支持32位或64位数据传输,最高带宽可达133MB/s。
  • 热插拔:PCI总线支持热插拔功能,用户可以在计算机运行时插入或拔出PCI设备。
  • 兼容性:PCI总线具有良好的兼容性,可以与不同厂商的设备进行通信。
  • 易于扩展:通过PCI桥接器,可以将多个PCI总线连接起来,扩展系统的设备数量和性能。

5. PCI总线的应用领域

PCI总线广泛应用于各类计算机系统中,特别适合对带宽和速度要求较高的应用场景。以下是几个常见的应用领域:

  • 图形处理:PCI总线被广泛用于连接显卡和图形加速器,提供高速的图形处理能力。
  • 网络通信:PCI总线可以连接各种网络接口卡,用于实现高速网络通信。
  • 视频采集:PCI总线可连接视频采集卡,用于实时采集和处理视频信号。
  • 数据存储:PCI总线可连接高速硬盘控制器,实现快速的数据存储和检索。

PCI 的说明文档 (Specifications)

配置空间

PCI 规范通过单独的配置地址空间为 PCI 总线上的每个设备(或目标)提供了完全由软件驱动的初始化和配置。所有 PCI 设备,除了主机总线桥,都需要为此提供 256 字节的配置寄存器。

PCI 设备先天是小端存储的,这意味着所有多字节字段在较低地址具有最低有效值。这需要一个大端处理器(比如 Power PC)来执行对 PCI 设备读写数据的正确字节交换,包括对配置地址空间的任何访问。

系统必须提供一种允许访问 PCI 配置空间的机制,因为大多数 CPU 没有这种机制。这个任务通常由 Host to PCI Bridge(主机桥) 执行。定义了两种不同的机制来允许软件生成所需的配置访问。配置机制 1 是首选方法,而机制 2 是为了向后兼容而提供的。这里只描述配置机制 1,因为它是未来将使用的唯一访问机制。

配置机制

使用了两个 32 位的 I/O位置,第一个位置 (0xCF8) 被称为 PCI_CONF_ADDR,第二个位置 (0xCFC) 被称为 PCI_CONF_DATA。 PCI_CONF_ADDR 指定需要访问的配置地址,而对 PCI_CONF_DATA 的访问将实际生成配置访问,并将数据传输到 PCI_CONF_DATA 寄存器或从 PCI_CONF_DATA 寄存器得到数据。

PCI 设备结构

PCI 规范定义了 256 字节配置空间寄存器的组织,并为该空间引入了一个特定的模板。图 2 和 3 显示了 256 字节配置空间的布局。所有 PCI 兼容设备必须支持 供应商ID、设备ID、命令和状态、修订ID、类代码 和 报头类型 字段。其他寄存器的实现是可选的,这取决于设备的功能。

  • Device ID(设备 ID):

    标识特定的设备,有效的 ID 由供应商分配

  • Vendor ID(供应商 ID):

    标识设备的制造商。有效的 ID 是由 PCI-SIG  分配的,以确保唯一性,0xFFFF 是一个无效的值,将在读取不存在设备的配置空间寄存器时返回

  • 状态寄存器

    用于记录 PCI 总线相关事件的状态信息 

  • 命令寄存器

    提供对设备生成和响应 PCI 周期的能力的控制。所有设备都支持的唯一功能是,当向该寄存器写入 0 时,除配置空间访问外,都断开设备与 PCI 总线的所有访问连接(见下文)

  • Class Code (类型码):

    一种只读寄存器,它指定设备执行的功能类型

  • Subclass (子类型):

    用于指定设备执行的特定功能

  • Prog IF (Programming Interface Byte 编程接口字节)

    一种只读寄存器,它指定设备具有的寄存器级编程接口(如果有的话)

  • Revision ID (修订 ID):

    为特定设备指定修订标识符。有效的id由供应商分配。

  • BIST (built-in self test 内置自检)

    表示该状态并允许控制设备 BIST

  • Header Type (头类型)

    标识从字节 0x10 开始的头的其余部分的布局,还指定设备是否具有多个功能。其中 0x0 指通用设备,0x1 指 PCI - PCI 桥,0x2 指 CardBus 桥

    如果设置了该寄存器的第 7 位,则设备具有多种功能,否则为单一功能设备

  • Latency Timer (延迟计时器)

    以 PCI 总线时钟为单位指定延迟计时器

  • Cache Line Size (缓存线大小)

    指定系统缓存行大小,以 32 位为单位。设备可以限制其支持的缓存先大小的数量,如果将不支持的值写入该字段,设备的行为将像写入值为 0 一样

  • CardBus CIS 指针

    指向卡信息结构,由 CardBus 和 PCI 之间共享硅的设备使用

  • 中断线

    指定设备的中断引脚连接到系统中断控制器的哪个输入,并且由任何使用中断引脚的设备实现。对于 x86 架构,这个寄存器对应于 PIC IRQ 编号0-15(而不是I/O APIC IRQ编号),0xFF 的值定义没有连接

  • 中断引脚

    指定设备使用的中断引脚。其中:

    • 0x1 是 INTA#
    • 0x2 是 INTB#
    • 0x3 是 INTC#
    • 0x4 是 INTD#
    • 0x0 表示设备没有使用中断引脚
  • 最大延迟时间

    只读寄存器,指定设备需要访问 PCI 总线的频率(以 1/4 微秒为单位)

  • Min Grant

    只读寄存器,指定设备需要的突发周期长度,单位为 1/4 微秒(假设时钟频率为 33 MHz)

  • 功能指针

    指向一个由设备实现的新功能链表的指针(即该函数配置空间的偏移量)。如果状态寄存器(能力列表位)的第 4 位设置为 1,则使用。底部的两位是保留的,并且应该在指针被用来访问配置空间之前被屏蔽。

基址寄存器 Base Address Registers (BAR)

基址寄存器(BAR) 可以用来保存设备使用的内存地址,或端口地址的偏移量。通常,内存地址 BAR 需要位于物理 RAM 中,而 I/O 空间 BAR 可以驻留在任何内存地址(甚至超出物理内存)。要区分它们,可以检查最低位的值。下面的表格描述了两种类型的 BAR:

内存空间 BAR 布局

英文描述
0 Always 0 常为0
1 ~ 2 Type 类型
3 Prefetchable  
4 ~ 31 16 Byte Aligned Base Address 16字节对齐基址

I/O 空间 BAR 布局

英文描述
0 Always 1 常为 1
1 Reserved 保留
2 ~ 31 4-Byte Aligned Base Address 4字节对齐基址

Memory Space BAR Layout 的 Type 字段指定基本寄存器的大小,以及它在内存中的映射位置:

 

标签:配置,总线,PCI,寄存器,ID,设备
From: https://www.cnblogs.com/imreW/p/17815446.html

相关文章

  • VirtIO实现原理——PCI基础
    virtio设备可以基于不同总线来实现,本文介绍基于pci实现的virtio-pci设备。以virtio-blk为例,首先介绍PCI配置空间内容,virtio-pci实现的硬件基础——capability,最后分析PIC设备的初始化以及virtio-pci设备的初始化。PCI配置空间virtio设备作为pci设备,必须实现pcilocalbusspec......
  • SATA基础+更改终端颜色+PCI.ids位置+Linux和Windows的scanf+C语言C++的局部变量与全局
    SATA基础https://zhuanlan.zhihu.com/p/554251608物理信号物理层功能时钟恢复:对于高频传输,一般是采用差分信号传输,并且没有单独的时钟,时钟存在于编码内部串并转换:对于高频传输,串联信号可以做到更高的频率。字节对其:8/10编码转换的10bit对其链路层、传输层链路层和传输......
  • liunx查看网口名称对应网卡型号(PCI地址对照)
    查看所有网络名称ifconfig-a查看对照闪灯对应网口位置ethtool-p网口名称列出所有网口型号及硬件地址lspci|grepethernet分别查看各网口名称对应硬件地址并对应上一步地址值ethtool-i网口名称......
  • CCLINK IEFB总线转ETHERNET/IP网络的协议网关使欧姆龙和三菱的数据互通的简单配置方法
    想要实现CCLINKIEFB总线和ETHERNET/IP网络的数据互通。捷米JM-EIP-CCLKIE是一款ETHERNET/IP从站功能的通讯网关,该产品主要功能是实现CCLINKIEFB总线和ETHERNET/IP网络的数据互通。本网关连接到ETHERNET/IP总线和CCLINKIEFB总线上都可以做为从站使用。网关分别从ETHERNET/IP一侧......
  • CCLINK IEFB总线转ETHERNET/IP网络的协议网关使欧姆龙和三菱的数据互通的简单配置方法
    CCLINKIEFB总线转ETHERNET/IP网络的协议网关使欧姆龙和三菱的数据互通的简单配置方法     想要实现CCLINKIEFB总线和ETHERNET/IP网络的数据互通。捷米JM-EIP-CCLKIE是一款ETHERNET/IP从站功能的通讯网关,该产品主要功能是实现CCLINKIEFB总线和ETHERNE......
  • PLC 和Modbus/串口设备现场总线通信及短信报警解决方案
    在实现Modbus设备与PROFIBUSDP协议PLC通讯的同时可以在手机端实时的接收报警短信,使客户足不出户了解设备与PLC的状态,及时处理现场中的问题。系统组成Modbus转PROFIBUSDP网关PM-160V6.2具有两个串口,一个RS485,一个RS232,他们一个做通讯接口时,另一个就作为IOT接口,该......
  • 基于rk3588----i2c驱动框架学习(2)-总线驱动 algorithm 分析
    rk3588i2calgorithm分析来了来了,上次分析完i2c的驱动框架今天我们就看看i2c的algorithm是如何实现的staticconststructi2c_algorithmrk3x_i2c_algorithm={.master_xfer=rk3x_i2c_xfer,.master_xfer_atomic......
  • 35-Vue脚手架-全局事件总线(使用全局事件总线优化Todo-List案例)
    全局事件总线(GlobalEventBus)1.一种组件间通信的方式,适用于任意组件间通信2.安装全局事件总线newVue({...//生命周期beforeCreate这时vue还未解析模板,初始化的数据监测、数据代理还未开始beforeCreate(){//安装全局事件总线Vue.prot......
  • Intrepid—总线采集测试仿真工具
    产品概述    VehicleSpy是英特佩斯推出的简单易用的高性价比总线工具,包含分析软件和采集调试硬件,具备对各类总线数据的网络监控、诊断、总线分析、数据采集、节点仿真、自动化测试等功能,目前支持的总线类型包含CAN、CANFD、LIN、FlexRay、车载以太网等各类总线格式。 ......
  • AMBA总线架构简介
    于是乎,我们想到了总线,用一个统一的接口协议,设计出一个符合要求的总线,然后将ARM核和各种外设模块挂载在总线上,这样,命令和数据似乎便可以在CPU和外设之间自由穿梭。1AMBA总线AMBA,英文全称为AdvancedMicrocontrollerBusArchitecture,即高级微控制器总线架构。AMBA的简易发展历......