《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(1)

前言中曾提到:本章主要说明PCI总线涉及的一些基本知识。

PCI总线作为处理器系统的本地总线,其主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器。但是PCI总线、系统总线和处理器体系结构之间依然存在着紧密的联系。

PCI总线作为系统总线的延伸,其设计考虑了许多与处理器相关的内容,如处理器的Cache共享一致性和数据完整性(Data Consistency,也称Memory Consistency),以及如何与处理器进行数据交换等一系列内容。其中Cache共享一致性数据完整性现代处理器本地总线设计的重点和难点,也是本书将重点讲述的主题之一。

孤立地研究PCI总线并不可取,因为PCI总线仅是处理器系统的一部分深入理解PCI总线需要了解一些与处理器体系结构相关的知识。这些知识是本书侧重描述的,同时也是PCI总线规范忽略(这里忽略并不准确,应该是没有涉及)的内容。脱离实际的处理器系统,不容易也不可能深入理解PCI总线规范。

对于今天的读者来说,PCI总线提出的许多概念略显过时,也有许多不足之处。但在当年,PCI总线与之前存在的其它并行局部总线如ISA、EISA和MCA总线相比,具有许多突出的优点,是一个全新的设计。突出点如下:

(1)PCI总线空间与处理器空间隔离

PCI设备具有独立的地址空间,即PCI总线地址空间该空间与存储器地址空间通过HOST主桥(Host-to-PCI主桥,也称PCI主桥或PCI总线控制器)隔离处理器需要通过HOST主桥才能访问PCI设备,而PCI设备需要通过HOST主桥才能访问主存储器。在HOST主桥中含有许多缓冲,这些缓冲使得处理器总线与PCI总线工作在各自的时钟频率中,互不干扰HOST主桥的存在也使得PCI设备和处理器可以共享主存储器资源

处理器访问PCI设备时,必须通过HOST主桥进行地址转换;而PCI设备访问主存储器时,也需要通过HOST主桥进行地址转换(与上一段中对应)。HOST主桥的一个重要作用就是将处理器访问的存储器地址转换为PCI总线地址。PCI设备使用的地址空间是属于PCI总线域的,这与存储器地址空间不同。

x86处理器对PCI总线域与存储器域的划分并不明晰,这也使得许多程序员并没有明确地区分PCI总线域地址空间和存储器域地址空间。而本书将反复强调存储器地址和PCI总线地址的区别,因为这是理解PCI体系结构的重要内容。

PCI规范并没有对HOST主桥的设计进行约束。每一个处理器厂商使用的HOST主桥,其设计都不尽相同。HOST主桥是联系PCI总线与处理器的核心部件掌握HOST主桥的实现机制是深入理解PCI体系结构的前提

本书将以Freescale(飞思卡尔)的PowerPC处理器和Intel的x86处理器为例,说明各自HOST主桥的实现方式。值得注意的是,本书涉及的PowerPC处理器仅针对Freescale的PowerPC处理器,而不包含IBM的Power和AMCC的PowerPC处理器。而且如果没有特别说明,本书中涉及的x86处理器特指Intel的处理器,而不是其它厂商的x86处理器。

(2)可扩展性

PCI总线具有很强的扩展性。在PCI总线中,HOST桥可以直接推出一条PCI总线,这条总线也是该HOST主桥管理的第一条PCI总线该总线还可以通过PCI桥扩展出一系列PCI总线,并以HOST主桥为根节点最多只能挂接256个PCI设备(包括PCI桥)。

在同一条PCI总线上的设备间可以直接通信,而并不会影响其它PCI总线上设备间的数据通信。隶属于同一棵PCI总线树上的PCI设备,也可以直接通信,但是需要通过PCI桥进行数据转发

PCI桥是PCI总线的一个重要组成部件,该部件的存在使得PCI总线极具扩展性。PCI桥也是有别于其它本地总线的一个重要部件。在“以HOST主桥为根节点”的PCI总线树中,每一个PCI桥下也可以连接一个PCI总线子树,PCI桥下的PCI总线仍然可以使用PCI桥继续进行总线扩展。

PCI桥可以管理这个PCI总线子树,PCI桥的配置空间含有一系列管理PCI总线子树的配置寄存器PCI桥的两端分别连接了两条总线上游总线(Primary Bus)下游总线(Secondary Bus)。其中与处理器距离较近的总线被称为上游总线,另一条被称为下游总线。这两条总线间的通信需要通过PCI桥进行。PCI桥中的许多概念被PCIe总线采纳,理解PCI桥也是理解PCIe体系结构的基础

更多内容请看下回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/578083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java练习之abstract (抽象) final(最终) static(静态) 练习

1:分析总结:写出private、abstract、static、final之间能否联动使用,并写出分析原因 private static final 之间可以任意结合 abstract 不可以与private static final 结合使用 2:关于三个修饰符描述不正确的是(AD) A. static …

Linux操作系统基础知识点

Linux是一种计算机操作系统,其内核由林纳斯本纳第克特托瓦兹(Linus Benedict Torvalds)于1991年首次发布。Linux操作系统通常与GNU套件一起使用,因此也被称为GNU/Linux。它是一种类UNIX的操作系统,设计为多用户、多任务…

计算机组成原理综合6

补码表示: X:1111 1111 1111 1101 Y:1111 1111 1101 1111 Z:0111 1111 1111 1100 转原码表示:从右往左找第一个“1”,左边的所有数值位按位取反 X:1111 1111 1111 1101 1000 0000 00…

常用的快捷键

快捷键能大大提高使用计算机时的效率。以下是一些常用的快捷键,适用于多种操作系统和应用程序: 通用快捷键 复制: Ctrl C (Windows/Linux) | Cmd C (Mac) 粘贴: Ctrl V (Windows/Linux) | Cmd V (Mac) 剪切: Ctrl X (Windows/Linux) | Cmd X (Ma…

Fiber Node的数据结构,以及如何在Reconciliation阶段被使用。

首先,Fiber Node是React用来描述组件树的数据结构,每一个React组件都对应一个Fiber Node。下面是一个Fiber Node的基本结构: const fiber {// 标识这个Fiber Node的类型(函数组件,类组件,DOM节点类型等&a…

OGG-MySQL无法正常同步数据问题分析

问题背景: 用户通过OGG从源端一个MySQL从库将数据同步到目标端的另一个MySQL数据库里面,后面由于源端的从库出现了长时间的同步延时,由于延时差距过大最后选择通过重建从库方式进行了修复 从库重建之后,源端的OGG出现了报错ERROR OGG-0014…

45.常用shell之 unset - 删除环境变量或函数 的用法及衍生用法

unset 是一个在类 Unix 系统的 shell 中常用的命令,用于删除环境变量或 shell 函数。这个命令可以帮助用户管理环境变量,防止不必要的变量干扰或占用资源。以下是 unset 命令的基本用法和一些衍生用法的示例: 基本用法 删除环境变量: unset …

java基础之Java的动态代理如何实现

Java实现动态代理的两种方式 JDK动态代理:Java.lang.reflect 包中的Proxy类和InvocationHandler接口提供了生成动态代理类的能力。Cglib动态代理:Cglib (Code Generation Library )是一个第三方代码生成类库,运行时在内存中动态生成一个子类对…

【Qt-QString】

Qt编程指南 ■ QString■ 编码方式■ 下划线■ 制表符■ arg■ arg 数值转字符串补齐长度■ QString 转换为 char■ QString 转换为 char *■ char * 转换为 QString■ char[] 转换为QString■ char[] 转换为QString■ QByteArray 转换为 QString ■ QByteArray■ QByteArray::…

关于Sneaky DogeRAT特洛伊木马病毒网络攻击的动态情报

一、基本内容 作为复杂恶意软件活动的一部分,一种名为DogeRAT的新开源远程访问特洛伊木马(RAT)主要针对位于印度的安卓用户发动了网络安全攻击。该恶意软件通过分享Opera Mini、OpenAI ChatGOT以及YouTube、Netfilx和Instagram的高级版本等合…

《PySpark大数据分析实战》-19.NumPy介绍ndarray介绍

📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP…

饥荒Mod 开发(二三):显示物品栏详细信息

饥荒Mod 开发(二二):显示物品信息 源码 前一篇介绍了如何获取 鼠标悬浮物品的信息,这一片介绍如何获取 物品栏的详细信息。 拦截 inventorybar 和 itemtile等设置字符串方法 在modmain.lua 文件中放入下面代码即可实现鼠标悬浮到 物品栏显示物品详细信…

适合引流源码声音鉴定神器网站源码,轻松吸引用户关注

源码介绍 声鉴卡HTML5网页源码,完整可运转,调用wx录音,自动判断声音属性,输出结果 安装教程 只需要把源码上传至主机空间就可以 支持上传二级目录访问!提示一下:wxvx打开效果是最佳的源码里面生成二维码…

测试服务器带宽(ubuntu)

apt install python3 python3-pippip3 install speedtest-clispeestest-cli

Debezium发布历史27

原文地址: https://debezium.io/blog/2018/01/25/debezium-0-7-2-released/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Debezium 0.7.2 发布 一月 25, 2018 作者: Gunnar Morling 发…

Hive05_DML 操作

1 DML 数据操作 1.1 数据导入 1.1.1 向表中装载数据(Load) 1)语法 hive> load data [local] inpath 数据的 path [overwrite] into table student [partition (partcol1val1,…)];(1)load data:表示加载数据 &…

数据库添加/删除/修改表字段

目录 添加表字段 删除表字段 修改表字段 添加表字段 要在数据库中添加表字段,可以使用ALTER TABLE语句。 语法如下: ALTER TABLE table_name ADD column_name datatype;其中,table_name是要添加字段的表名,column_name是要添…

目标:三年内练就一口流利的英语

置顶,不删。三年后的今天来评论区分享学习成果

wpf-MVVM绑定时可能出现的内存泄漏问题

文章速览 引言错误示范示例1示例2 坚持记录实属不易&#xff0c;希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区&#xff01; 谢谢~ 引言 正确结构&#xff1a; Model <——> ViewModel <——> View 但很多时候&#xff0c;很容易出现…

前端---表单标签

1. 表单的介绍 表单用于搜集不同类型的用户输入(用户输入的数据)&#xff0c;然后可以把用户数据提交到web服务器 。 2. 表单相关标签的使用 <form>标签 表示表单标签&#xff0c;定义整体的表单区域 <label>标签 表示表单元素的文字标注标签&#xff0c;定义文字…