PCI Express体系结构导读(1)

之前两篇介绍PCI的文章都没有仔细看下去,感觉介绍的视角不适合我,偏PCI规范本身。要从处理器的角度了解PCIE总线,现在来看这本强哥推荐的《PCIE体系结构导读》

前言

1)深入理解处理器体系结构是理解PCI总线的重要基础,超越PCI自身,去理解系统的局部总线。

2004年开始PCIE取代PCI和AGP,成为局部总线工业标准。

PCI 并行共享架构, PCIE串行

刚刚接触PCI不要去读规范文档,规范文档适合查阅,不便于学习。

2)第一篇,PCI总线基础知识

第二篇,PCIE相关概念

第1章, posted,non-posed, split 数据传送方式,很重要

第2章,PCI桥,PCI的精华

第3章,数据传送方式,与cache相关和预读机制

第4,5章,PCIE通述,x86的RC

第6,7章,PCIE的事务层,链路层,物理层,物理层是核心,中国工程师最没机会接触的内容

第9章,流控的管理和策略

第10章,MSI和MSI-X中断机制,X86架构多用MSI-X,许多嵌入式处理器仍用MSI

第11章,PCIE中的序

第12章,linux驱动实现过程, capric和cornus卡

第13章,PCI与虚拟化技术

第三篇,linux系统中PCI的使用

-----------------------

第1章  PCI基本知识

1)PCI (peripheral componet interconnect), 属于局部总线(local bus),主要功能是连接外部设备。由intel提出。

ISA->PCI->PCIE, PCIE继承PCI的设计思路;

还有各种相关规范:PCMCIA、PC Card、miniPCI 、 compactPCI(用于有背板的大型系统)、PCI-to-PCI桥规范、PCI-X(频率更高)

PCI-to-PCI桥 (PCI桥)、PCIE-to-PCI桥(PCIe桥)、Host-to-PCI主桥(HOST主桥,PCI主桥,PCI总线控制器)

2)PCI总线空间和处理器空间隔离

通过HOST主桥隔离,其中有许多缓冲,使得他们工作在各自的时钟频率

主桥的作用是将处理器访问的存储器地址转换为PCI总线地址 (重要)

以freescale的power PC和intel的x86处理器为例说明HOST主桥的实现方式。

3)可扩展

HOST主桥引出PCI总线,PCI通过PCI桥扩展,形成PCI总线树,1课树最多256个PCI设备

PCI 桥的配置空间有管理其子树的配置寄存器

4)动态配置

PCI设备的地址可由系统软件动态分配,解决地址冲突,实现“即插即用”; ISA还需要跳线

每个PCI设备都有独立的配置空间,其中有设备在总线中使用的基地址(物理地址)。

5)总线带宽

PCI,32位、33MHZ的为132MB/s, EISA为33MB/s

6) 共享总线机制

PCI设备通过仲裁后获得PCI总线使用,才能传输,不需要处理器干预。

7)中断机制

PCI设备通过四根中断请求信号 INTA~D#向处理器提交中断请求。配置空间中有这四根信号的信息。还有MSI机制

X86,PowerPC, MIPS, ARM都把PCI作为标准局部总线,PCI设备:网卡,声卡,硬盘控制器等

ARM使用SoC平台总线,即AMBA总线,连接片内设备,但还是有AMBA-to-PCI桥

1.1 PCI总线组成结构

1)HOST主桥

PCI设备通过HOST主桥访问主存,即DMA操作,cache一致性模块会监听,然后改变cache状态。

数据交换:处理器访问PCI设备的地址空间; PCI使用DMA访问主存

PowerPC处理器和主桥在一个芯片,x86主桥在北桥中;

2)PCI设备

三类:PCI主设备、从设备、桥设备

PCI设备可以是主也可以是从,统称PCI Agent, PCI网卡、显卡、声卡都是。

3)HOST处理器

HOST主桥中有许多寄存器,x86中有0xCF8和0xCFC两个I/O端口 访问PCI设备的配置空间;

powerPC中则是CFG_ADDR和CFG_DATA来访问;

4)PCI总线的负载

1.2 PCI的信号定义

1)PCI设备通过一些信号与PCI总线相连:地址/数据信号,控制信号,仲裁信号,中断信号等

每个设备都有CLK信号,用于同步数据传递

2)地址和数据信号

a. AD[31:0]信号,复用地址和数据信号,先传地址,再传数据;

突发传输,一个地址周期后,多个数据周期

b. PAR信号,为地址数据信号线提供奇偶校验位

c. C/BE[3:0]#信号

地址周期,该信号表PCI总线的信号

数据周期,表示字节选通信号

目前多数PCI设备不支持I/O地址空间,仅支持存储器地址空间

3)控制信号,作用是保证数据的正常传递

a. FRAME#信号, 指示一个PCI总线事务的开始和结束。低有效

b. IRDY#信号, 由主设备驱动,表主设备的数据准备好了

c. TRDY#信号,由目标设备驱动,表目标设备数据准备完毕;

d. STOP#信号,目标设备请求主设备停止当前事务

e. IDSEL信号,配置读写总线事务时,选择PCI目标设备

f. DEVSEL#信号,目标设备准备好

g. LOCK#信号, 将目标设备的存储器和IO资源锁定,禁止其他主设备访问。避免使用,因为影响传送效率

4)仲裁信号, REQ#和GNT#

每条PCI总线都有一个总线仲裁器(PCI桥中). 先是主设备发REQ#给仲裁,然后GNT#会有效就获得了使用权

5)中断请求

INTA#, INTB#, INTC#, INTD# , 低有效,PCI设备向处理器提交中断请求,驱动的ISR清除中断后,PCI设备将信号置高,结束中断。

通过一个规则(中断路由表)得知来自不同PCI设备的中断请求

1.3 PCI总线的存储器读写总线事务

1)PCI设备只有在系统软件初始化配置空间后,才能被访问

2)配置空间初始化后,该设备就拥有一个独立的PCI总线地址空间,即BAR(base address register) 中描述的空间

3)Posted和Non-Posted数据传送方式

Posted方式:主设备传数,到PCI桥时,由桥来接管下发。减少阻塞。

Non-Posted: 数据必须到达目的地才能结束总线事务。PCI总线使用Delayed总线缓解这种方式的拥塞。

只有存储器写(PMW)可以采用posted事务,而存储器读,IO读写,配置读写只能Non-posted事务

4)HOST处理器访问PCI设备

包括两方面: HOST处理器向PCI设备发起存储器和IO读写请求

HOST处理器对PCI设备进行配置读写

a. PCI设备的配置空间中,共6个BAR,可以存放I/O地址空间,存储器地址空间,等PCI总线地址空间,是PCI总线域的物理地址。

b. x86有独立的IO空间,可以把PCI的IO地址映射到存储器域的IO地址空间,通过IN,OUT对存储器域IO访问,

HOST主桥又转换为PCI域的IO地址,最后访问到PCI设备的IO. 两个域的I/O地址相同;

而PowerPC则把PCI设备的IO映射到存储器地址

5)PCI设备读写主存

PCI设备与主存进行数据交换的过程被称为DMA. 按照我们的9056驱动来看,处理器读写PCI设备也可以DMA

6)Delayed方式

用于缓解non-posted拥塞,分为delay读写请求和delay读写完成

处理器传给主桥后,启用retry周期,就释放总线了。delayed读请求DRR,读完成DRC

虽然有提升,但重试周期也会消耗PCI总线,所以PCI-X和PCIE升级为split事务,发送端将non-posted发给接收端

然后接收端主动将数据传递给发送端

1.4 中断机制

两种:INTA/B/D#信号和MSI

1) x86使用APIC中断控制器,powerPC使用MPIC中断控制器

中断控制器有外部中断请求引脚IRQ_PINx#, BIOS的中断路由表记录INTx信号和中断控制器的连接关系

多数设备仅使用INTA,PCI配置空间interrupt pin寄存器记录了该设备究竟用哪个INTx信号。

INTx属于边带信号,即这些信号在PCI总线中是可选信号,只能在处理系统内部使用,PCI桥不会处理这些边带信号

中断路由表:由BIOS保存两者间的映射关系

2)中断的同步

INTx与CLK信号无关,涉及异步

如当设备DMA写主存,ISR中收到INTx时,并不意味着数据已经写入主存,因为数据传递需要通过HOST主桥和PCI桥,才能到主存。

(即两个路径,无法确定哪个信息率先到达)

所以ISR中要先读中断状态寄存器,这个读保证了数据已经到达主存,(利用了PCI总线的“序”机制)

3) MSI中断机制

实际上是存储器写事务,是某段存储器地址范围,数据事先安排好的,含有中断向量号。HOST主桥会翻译这个写事务为中断请求给处理器

PCI-X和PCIE必须支持MSI,PCI不一定

1.5 PCI-X总线简介

1) 频率可达533MHZ

2)split事务,requester和completer,和delayed比,数据是由completer主动传递的,而不是通过requester通过多次重试得到的。

3)目标设备可以将主设备发的命令锁存,在下一个时钟周期进行译码操作。提高了效率

很少有基于PCI-X的设备

时间: 2024-11-06 03:46:29

PCI Express体系结构导读(1)的相关文章

《PCI EXPRESS体系结构导读》读书笔记之前言

声明几点: 1.做这个读书笔记,并没有抄袭的主观愿望,只是想增添阅读的乐趣,也方便以后查阅: 2.感谢<PCI EXPRESS体系结构导读>这本书的作者王齐先生: 3.在读这本书之前,我对PCI EXPRESS一无所知,只用过PCI转RS232的板子用于扩展PC的外设: 4.本读书笔记中肯定会有一些我自己的感悟的想法: 总线规范与一般介绍体系结构书籍的关系 PCISIG (PCI Special Interest Group)制定了一系列PCI和PCI EXPRESS总线相关的规范,这些规范所

《PCI EXPRESS体系结构导读》读书笔记之第 1 章 PCI总线的基本知识(3)

PCI总线的中断机制 中断信号与中断控制器的连接关系 中断信号与PCI总线的连接关系 PCI桥规范并没有要求桥片传递其下PCI设备的中断请求.事实上多数PCI桥也没有为下游PCI总线提供中断引脚INTx#,管理其下游的PCI设备. 而同时又说,在PCI EXPRESS中的中断机制,用的是MSI中断机制.所以这种外部中断引脚的中断机制我就暂时不看了. 版权声明:本文为博主原创文章,欢迎垂询 email: [email protected]

《PCI EXPRESS体系结构导读》读书笔记之第 I 篇 PCI体系结构概述(篇前言)

PCI (Peripheral Component Interconnect,外部设备互连总线),在处理器体系结构中,属于局部总线(Local Bus).局部总线是相对于系统总线而言的,其主要功能是连接外部设备. 版权声明:本文为博主原创文章,欢迎垂询 email: [email protected]

PCI Express

1.1课题研究背景 在目前高速发展的计算机平台上,应用软件的开发越来越依赖于硬件平台,尤其是随着大数据.云计算的提出,人们对计算机在各个领域的性能有更高的需求.日常生活中的视频和图像信息包含大量的数据,对此计算机对这些海量信息的实时处理.高效传输和大容量存储都是今后计算机发展的趋势和目标. 总线是由多个部件和设备所共享的,是计算机通信接口的重要技术.为了简化硬件电路设计.简化系统结构,通常用一组线路配置适当的接口电路,与各部件和外围设备连接,这组共用的连接线路称为总线.采用总线结构便于部件和设备

Ubuntu 16.04 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller” 不能上网

来源:http://forum.ubuntu.org.cn/viewtopic.php?f=116&t=463646 1.执行如下命令 uname -a sudo lspci -knn sudo lshw -C network ifconfig ping 192.168.1.1 -c 4 tail /var/log/syslog -n 20 2.查看状态: [email protected]:~$ uname -aLinux gofox-To-be-filled-by-O-E-M 3.13.0-

PCI Express(五) - Xilinx wizard

原文地址:http://www.fpga4fun.com/PCI-Express5.html Xilinx makes using PCI express easy - they provide a free PCI Express core (called "Endpoint Block Plus") and a wizard to configure it, all that in their free version of ISE - ISE WebPack. So let's

PCI Express(四) - The transaction layer

原文出处:http://www.fpga4fun.com/PCI-Express4.html 感觉没什么好翻译的,都比较简单,主要讲了TLP的帧结构 In the transaction layer, we receive "packets". There is a 32-bits bus and the packets arrive on the bus (packet lengths are always multiples of 32-bits). Maybe one packe

PCI Express(六) - Simple transactions

原文地址:http://www.fpga4fun.com/PCI-Express6.html Let's try to control LEDs from the PCI Express bus. Xilinx's "Endpoint Block Plus" core allows us to work at the transaction layer level, so it's just going to take us a few lines of code.Instead of

PCI Express(三) - A story of packets, stack and network

原文出处:http://www.fpga4fun.com/PCI-Express3.html Packetized transactions PCI express is a serial bus. Or is it? From the computer's perspective, it is a conventional bus where read and write transactions can be achieved. The trick is that all operation