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

《PCI Express体系结构导读》随记 —— 第I篇 第3章 PCI总线的数据交换(8)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第3章 PCI总线的数据交换(7)

3.3 与Cache相关的PCI总线事务

PCI总线规范定义了一系列与Cache相关的总线事务,以提高PCI设备与主存储器进行数据交换的效率,即DMA读写的效率。当PCI设备使用DMA方式向存储器进行读写操作时,一定需要经过HOST主桥,而HOST主桥通过FSB总线(在许多处理器中,HOST主桥与FSB之间还存在SoC平台总线)向存储器控制器进行读写操作时,需要进行Cache共享一致性操作

PCI设备与主存储器进行的Cache共享一致性增加了HOST主桥的设计复杂度。在高性能处理器中Cache状态机的转换模型十分复杂。而HOST主桥是FSB上的一个设备,需要按照FSB规定的协议处理这个Cache一致性,而多级Cache的一致性和状态转换模型一直是高性能处理器设计中的难点

不同的HOST主桥处理PCI设备进行的DMA操作时,使用的Cache一致性的方法并不相同。因为Cache一致性操作不仅与HOST主桥的设计相关更是主要与处理器和Cache Memory系统设计密切相关

PowerPC和x86处理器可以对PCI设备所访问的存储器进行设置,其设置方法并不相同。其中,PowerPC处理器,如MPC8548处理器,可以使用Inbound寄存器的RTT字段和WTT字段,设置在PCI设备进行DMA操作时,是否需要进行Cache一致性操作,是否可以将数据直接写入Cache中;而x86处理器则可以使用MTRR(Memory Type Range Registers)设置物理存储器区间的属性,是否为可Cache空间

但是与PowerPC处理器相比,x86处理器在处理PCI设备的Cache一致性上略有不足,特别是网络设备与存储器系统进行数据交换的效率。因为x86处理器所重点优化的是PCIe设备,目前x86处理器使用的IOAT(I/O Acceleration Technology)技术,极大增强了PCIe设备与主存储器进行数据通信的效率。但是这种技术仍然不能与一些Data Plane处理器,如XLP832,P4080处理器优化I/O访问的技术相提并论。毕竟x86处理器所适用的领域依然是PC、服务器等计算和控制领域,并不是Data Plane处理器领域。

下文分别讨论在PowerPC与x86处理器中,PCI设备进行DMA写操作时,如何进行Cache一致性操作。

3.3.1 Cache一致性的基本概念

PCI设备对可Cache的存储器空间进行DMA读写的操作的过程较为复杂,有关Cache一致性的话题可以独立成书。而不同的处理器系统使用的Cache Memory的层次结构和访问机制有较大的差异,这部分内容也是现代处理器系统设计的重中之重。

本节仅介绍在Cache Memory系统中与PCI设备进行DMA操作相关的一些最为基础的概念。在多数处理器系统中,使用了以下概念描述Cache一致性的实现过程:

1. Cache一致性协议

2. HIT#和HITM#信号

3. Cache一致性协议中使用的Agent

4. FSB的总线事务

欲知详情,请看下回。

相关文章:

  • Linux Driver | 设备树开发之初识设备树
  • Android14 InputManager-ANR原理
  • 华清远见作业第四十一天——Qt(第三天)
  • Redis高性能原理
  • 掌握Docker:让你的应用轻松部署和管理
  • 使用openai-whisper实现语音转文字
  • 外汇天眼:外汇交易不可不知的8大风险!
  • 欧放ER-2024年1月 AI论文速递
  • Draw.io绘制UML图教程
  • vue3新特性-defineOptions和defineModel
  • 2024 Sora来了!“手机Agent智能体”也来了!
  • MyBatis Plus:自定义typeHandler类型处理器
  • Autodesk CAD如何建立图层方框?
  • Python学习笔记——PySide6设计GUI应用之UI与逻辑分离
  • git中将所有修改的文件上传到暂存区
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • LintCode 31. partitionArray 数组划分
  • PAT A1120
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 基于 Babel 的 npm 包最小化设置
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 双管齐下,VMware的容器新战略
  • 思维导图—你不知道的JavaScript中卷
  • 一道闭包题引发的思考
  • 自制字幕遮挡器
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • (02)vite环境变量配置
  • (30)数组元素和与数字和的绝对差
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (4)logging(日志模块)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (转) Android中ViewStub组件使用
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET 分布式技术比较
  • .net 获取url的方法
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .NET开源项目介绍及资源推荐:数据持久层
  • .net连接MySQL的方法
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @Controller和@RestController的区别?
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [Angular] 笔记 18:Angular Router
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [C#]DataTable常用操作总结【转】
  • [CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理
  • [Flexbox] Using order to rearrange flexbox children
  • [Git 1]基本操作与协同开发
  • [hdu 2826] The troubles of lmy [简单计算几何 - 相似]