3.3.3 PCI设备对可Cache的存储器空间进行DMA读写

简介: <div class="bct fc05 fc11 nbw-blog ztag"><div> <p style="TEXT-INDENT: 21pt;"><span lang="EN-US" xmllang="EN-US">PCI</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times new roman'; mso

PCI设备向“可Cache的存储器空间”进行读操作的过程相对简单。对于x86处理器或者PowerPC处理器,如果访问的数据在Cache中命中,CPU会通知FSB总线,PCI设备所访问的数据在Cache中。

首先HOST主桥发起存储器读总线事务,并在Request Phase中,提供地址。Snoop AgentSnoop Phase进行总线监听,并通过HIT#HITM#信号将监听结果通知给Response Agent。如果Cache行的状态为E时,Response Agent将提供数据,而CPU不必改变Cache行状态。如果Snoop Agent可以直接将数据提供给HOST主桥,无疑数据访问的延时更短,但是采用这种方法无疑会极大的提高Cache Memory系统的设计难度,因此采用这种数据传送方式的处理器[1]并不多。

如果Cache行的状态为M时,Response AgentResponse Phase阶段,要求Snoop AgentsCache中数据回写到存储器,并将Cache行状态更改为ESnoop AgentsData Phase,将Cache中数据回写给存储器控制器,同时为HOST主桥提供数据。Snoop Agents也可以直接将数据提供给HOST主桥,不需要进行数据回写过程,也不更改Cache行状态,但是采用这种方法会提高Cache Memory系统的设计难度。

如果PCI设备访问的数据没有在Cache中命中,Snoop Agents会通知FSB总线,PCI设备所访问的数据不在Cache中,此时存储器控制器(Response Agent)将在Data PhaseHOST主桥提供数据。

PCI设备向“可Cache的”存储器区域进行写操作,无论对于PowerPC处理器还是x86处理器,都较为复杂。当HOST主桥通过FSB将数据发送给存储器控制器时,在这个系统总线上的所有CPU都需要对这个PCI写操作进行监听,并根据监听结果,合理地改动Cache行状态,并将数据写入存储器。

下文以3?7所示的SMP处理器系统为例,说明PCI设备对“可Cache的存储器空间”进行DMA写的实现过程。

3.3.3 PCI设备对可Cache的存储器空间进行DMA读写 - maoxingbing - 毛毛虫的爹

3?7所示的处理器系统中,存在4CPU,这4CPU通过一条FSB连接在一起,而CPU之间使用MESI协议进行Cache一致性处理,而HOST主桥和存储器控制器与FSB直接相连。HOST主桥向存储器控制器传递数据时,需要处理Cache的一致性。

在这个处理器系统中,当PCI设备,如PCI设备01,进行DMA写操作时,数据将首先到达HOST主桥,而HOST主桥将首先接管该PCI设备数据访问并将其转换为FSB总线事务,并在Request Phase中,提供本次FSB总线事务的地址。CPU将在Snoop Phase对这个地址进行监听,判断当前地址在Cache中的命中情况。

HOST 主桥访问的地址不在 Cache 中命中时,此时在处理器系统中,所有 CPU 都没有驱动 HIT# HITM# 信号, HIT# HITM# 信号都为 1 ,表示 HOST 主桥访问的地址没有在 CPU Cache 中命中, HOST 主桥可以简单地将数据写入存储器。当 HOST 主桥访问的存储器地址在 Cache 中命中时, Cache 行的状态可以为 S E 或者为 M ,此时处理器系统的处理过程相对较为复杂,下一节将专门讨论这种情况。


[1] 目前Cortex A8/A9IntelNehelem处理器支持这种方式。

相关文章
|
网络协议 网络架构
TCP/IP协议中分包与重组原理介绍、分片偏移量的计算方法、IPv4报文格式
本文章讲述了什么是IP分片、为什么要进行IP分片、以及IP分片的原理及分析。分片的偏移量的计算方法,一个IPv4包前三个分片的示例。还讲述了IPv4表示字段的作用,标志位在IP首部中的格式以及各个标志的意义:.........
4728 0
TCP/IP协议中分包与重组原理介绍、分片偏移量的计算方法、IPv4报文格式
|
存储 安全 算法
信息安全基础:密码学与哈希函数
【7月更文挑战第11天】密码学和哈希函数作为信息安全领域的核心技术,在保护数据机密性、完整性和可鉴别性方面发挥着重要作用。通过深入研究密码学的基本概念和哈希函数的特性,我们可以更好地理解和应用这些技术,确保信息在传输和存储过程中的安全性。随着技术的不断发展,密码学和哈希函数的应用也将更加广泛和深入。
|
存储 缓存 弹性计算
重新审视 CXL 时代下的分布式内存
从以太网到 RDMA 再到 CXL,标志着互连技术的重大突破。
|
API Windows 容器
【Azure Fabric Service】Service Fabric 遇见错误信息记录 - The process/container terminated with exit code:2148734499
【Azure Fabric Service】Service Fabric 遇见错误信息记录 - The process/container terminated with exit code:2148734499
137 0
|
JavaScript
【vue】vue 在线编辑、实时预览的代码交互组件 vue-code-view
【vue】vue 在线编辑、实时预览的代码交互组件 vue-code-view
1898 0
|
关系型数据库 Shell 数据库
docker 安装及启动 postgresql 及navicat 连接
使用docker 安装及启动 postgresql 及navicat 连接
2892 0
docker 安装及启动 postgresql 及navicat 连接
|
编解码 物联网
国产MCU-CW32F030开发学习-ST7735 LCD模块
国产MCU-CW32F030开发学习-ST7735 LCD模块
333 0
国产MCU-CW32F030开发学习-ST7735 LCD模块
|
弹性计算 Linux Apache
部署并使用Docker(Alibaba Cloud Linux 3)
本场景带您体验如何在Alibaba Cloud Linux 3.2104 LTS 64位操作系统的云服务器上部署并使用Docker。
|
Linux 程序员 Shell
sysfs文件系统与kobject
sysfs文件系统与kobject
467 0