从零开始讲PCIe(0)——外设与外设总线

news2024/11/27 12:51:27

一、外设

        计算机外设(Peripheral)是指连接到计算机主机以扩展其功能的外部设备。这些设备可以是输入设备、输出设备、存储设备或通信设备等,外设(外围设备)通过输入、输出、存储和通信等方式帮助计算机与用户和其他设备进行交互,使计算机成为更通用、更灵活的工具。下表是一些常见的外设设备:

类别设备类型功能描述
输入设备键盘用于输入文本、数字和符号的主要输入设备。
鼠标常用于图形界面系统,控制屏幕上的光标位置并进行点击操作。
输出设备显示器用于显示文本、图形和视频。
打印机将数字文档转换为纸质输出,分为喷墨打印机、激光打印机、热敏打印机等。
扬声器将数字音频信号转换为模拟声音输出,用于播放音乐、视频等声音。
耳机用于个人音频输出,适用于私密环境下的声音输出。
存储设备硬盘驱动器(HDD)传统的机械硬盘,通过磁性存储数据,容量大,价格相对便宜。
固态硬盘(SSD)基于闪存技术的存储设备,速度快,但价格较高,逐渐取代HDD。
光盘驱动器用于读取和写入光盘数据的设备,现在使用较少。
U盘便携式USB闪存设备,适用于文件的快速转移和存储。
外部硬盘通过USB或Thunderbolt接口连接到计算机的外部存储设备,用于大容量数据存储和备份。
通信设备网卡(NIC)用于连接计算机到网络(如以太网、Wi-Fi)的硬件。
调制解调器将数字信号转换为模拟信号,常用于电话线拨号上网。
路由器用于连接局域网(LAN)和广域网(WAN),管理网络流量。
蓝牙适配器通过蓝牙连接其他设备,如鼠标、键盘或耳机。
USB适配器用于扩展设备的USB接口,增加额外的USB设备支持。
其他专用外设绘图板为设计师和艺术家提供精确的数字绘图输入。
VR设备虚拟现实头戴设备,用于沉浸式虚拟体验。
显卡用于处理图形渲染和3D加速,尤其在游戏、视频编辑和AI计算中性能出色,支持高分辨率显示。

二、外设总线

        计算机外设总线是指连接计算机主板和外部设备的通信通道,用于在计算机和外设之间传输数据、指令和信号。外设总线可以连接多种设备,如存储设备、输入/输出设备、网络设备等。以下是几种常见的计算机外设总线及其特性:

外设总线概述特点应用
PCI由英特尔在1992年推出的并行总线,广泛用于90年代和2000年代初期。32位或64位并行总线,时钟频率33MHz或66MHz,最大带宽533 MB/s,支持多设备共享。网卡、声卡、显卡等设备。
PCI-XPCI的扩展版本,1998年推出,主要用于企业级设备。频率提升至133 MHz,最大带宽1.06 GB/s,向后兼容PCI设备。高性能服务器和工作站。
PCIe目前最主流的外设总线,采用串行通信。每通道带宽从250 MB/s(PCIe 1.0)到8 GB/s(PCIe 6.0),支持全双工通信和热插拔。显卡、固态硬盘(NVMe)、网络卡等。
AGP专为显卡设计的接口,总线用于图形加速。带宽从AGP 1x(266 MB/s)到AGP 8x(2.1 GB/s),适合高性能图形处理。显卡的图形加速,3D图形处理。
USB一种广泛使用的外设连接标准,用于连接外部设备。支持即插即用和低功耗设备,带宽从12 Mbps到40 Gbps(USB 4.0)。键盘、鼠标、存储设备、手机充电等。
SATA用于连接硬盘和光驱的高速串行总线标准。串行传输,带宽从1.5 Gbps到6 Gbps,线缆更长,传输稳定。连接硬盘、固态硬盘、光驱等。
Thunderbolt由英特尔和苹果开发的高速外设连接标准。支持双向数据传输,带宽高达40 Gbps,支持菊花链连接。显示器、外接存储设备、外接显卡等高性能设备。
FireWire高速传输总线,主要用于多媒体设备。传输速率从400 Mbps到800 Mbps,支持实时数据传输和供电。视频设备、音频设备、外接存储等。
I²C用于嵌入式系统和消费电子的低速串行总线标准。低成本、低复杂度,支持多设备挂载,使用SDA和SCL两条线。嵌入式系统、传感器、微控制器之间的通信。
SPI高速串行总线,用于短距离设备通信。全双工通信,使用四条线:MISO、MOSI、SCK、SS,通信速率较高。微控制器、传感器、ADC/DAC、闪存等。
CAN工业控制和汽车电子常用的通信总线。支持分布式控制,传输速率可达1 Mbps,具备纠错机制。汽车电子、工业自动化、机器人等。
HyperTransport高速互联的总线技术,主要用于计算机内部连接。点对点高速串行总线,单向带宽最高可达51.2 GB/s。服务器和高性能计算平台。

三、PCIe总线

        PCIe是目前最主流的外设总线,广泛用于连接显卡、固态硬盘(NVMe)、网络卡等设备,几乎在所有现代PC和服务器中都有应用。PCIe作为外设总线的主要特点包括串行通信、点对点连接、高带宽、全双工通信、通道灵活性、向后兼容、支持热插拔、低延迟与高效率以及高级电源管理。它的灵活性和高性能使其成为现代计算机中用于连接外设的主流接口标准。

3.1 PCI

        PCI (Peripheral Component Interface)总线是在1990年代初开发的,目的是解决当时个人电脑的外设总线不足问题。当时的标准是IBM的AT总线,其他厂商称之为ISA总线。ISA总线适用于设计时的286 16位设备,但对于更新的32位设备及其外设而言,ISA在带宽和功能上都有所不足,尤其是即插即用等改进功能的需求日益增加。此外,ISA使用的大型连接器具有较高的针脚数,增加了硬件设计的复杂性。

        鉴于这些问题,PC厂商意识到需要一种新的总线设计。多个替代总线设计被提出,包括IBM的MCA、EISA(扩展ISA,由IBM的竞争对手作为开放标准提出)和VESA总线(视频电子标准协会,由视频卡厂商为视频设备提出)。然而,这些设计各有其缺点,未能获得广泛认可。

        最终,PCI作为一个开放标准由PC市场的主要参与者组成的一个团体——PCISIG(PCI特别兴趣小组)开发。新开发的总线架构在性能上远超ISA,并定义了每个设备内的一组新寄存器,称为配置空间。这些寄存器使得软件能够查看设备所需的内存和I/O资源,并为每个设备分配不会与系统中其他地址冲突的地址。这些功能——开放设计、高速性能、软件可见性和控制能力——帮助PCI克服了ISA和其他总线的限制。凭借这些优势,PCI很快成为PC中标准的外围总线。      

3.2 PCI-X

        几年后,PCI-X(PCI-扩展)作为PCI架构的逻辑扩展被开发出来,并大幅提升了总线的性能。虽然稍后会详细讨论这些变化,但PCI-X的主要设计目标之一是保持与PCI设备的硬件和软件兼容性,以简化从PCI向PCI-X的迁移过程。后来,PCI-X 2.0修订版进一步提高了速度,达到了最高4 GB/s的原始数据传输率。

        由于PCI-X在硬件上保持了对PCI的向后兼容性,它依然是并行总线,因此继承了并行总线模型所面临的问题。这对我们来说是有趣的,因为并行总线最终会在有效带宽上遇到实际的瓶颈,无法轻易提高速度。PCISIG曾尝试通过PCI-X进一步提高数据传输速率,但这一努力最终被放弃。这个速度瓶颈以及高引脚数量促使了从并行总线模型向新的串行总线模型的转变。

        因此,PCIe(PCI Express)随后被引入,采用串行传输方式,并逐步替代了PCI-X,成为当代计算机的主要扩展总线标准。

        在表1-1中展示了早期总线标准随着时间推移所经历的更高频率和带宽的发展。其中一个有趣的点是时钟频率与总线上的插卡槽数量之间的相关性。由于PCI采用了低功耗信号模型,这意味着在更高的频率下,信号传输路径需要更短,并且总线上的负载(插卡槽)数量也要减少。这是因为在高频率下,长信号线和更多负载会影响信号完整性。

        另一个值得注意的点是,随着时钟频率的增加,允许在共享总线上的设备数量也随之减少。当引入PCI-X 2.0时,由于其高速传输的需求,导致总线不得不转变为点对点互连架构。这种点对点连接模式避免了多个设备共享同一总线带来的信号完整性问题,从而提升了系统的整体性能和数据传输稳定性。

        这种演变反映了技术上的妥协和改进:为了支持更高的传输速度和频率,必须减少总线上的设备数量或者改进总线架构,如从共享总线转向点对点互连。

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

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

相关文章

用Arduino单片机读取PCF8591模数转换器的模拟量并转化为数字输出

PCF8591是一款单芯片,单电源和低功耗8位CMOS数据采集设备。博文[1]对该产品已有介绍,此处不再赘述。但该博文是使用NVIDIA Jetson nano运行python读取输入PCF8591的模拟量的,读取的结果显示在屏幕上,或输出模拟量点亮灯。NVIDIA J…

可解释聚类又“炸出圈”啦!把准3个切入点一路开挂!创新思路一学就会~

可解释聚类是机器学习领域一个非常重要的研究方向,它通过引入解释性强的特征和模型,让我们更直观地理解聚类结果,从而提升聚类分析的准确性和可靠性。 这种方法在一些敏感领域如医疗、金融等非常适用,因为它与传统方法不同&#…

工具模块及项目整体模块框架

文章目录 工具模块logger.hpphelper.hppthreadpool.hpp 核心概念核心API交换机类型持久化⽹络通信消息应答持久化数据管理中心模块虚拟机管理模块交换路由模块消费者管理模块信道管理模块连接管理模块Broker服务器模块消费者管理信道请求模块通信连接模块项⽬模块关系图 工具模…

Oracle SQL语句没有过滤条件,究竟是否会走索引??

答案是:可能走索引也可能不走索引,具体要看列的值可不可为null,Oracle不会为所有列的nullable属性都为Y的sql语句走索引。 例子: create table t as select * from dba_objects; CREATE INDEX ix_t_name ON t(object_id, objec…

MySQL 中的 GTID 复制详解

MySQL 中的 GTID 复制详解 在 MySQL 的复制架构中,GTID(Global Transaction Identifier)复制是一种重要的技术,它为数据库的复制提供了更强大的功能和更高的可靠性。本文将深入探讨 MySQL 中的 GTID 复制是什么,以及它…

OpenCV计算机视觉库

计算机视觉和图像处理 Tensorflow入门深度神经网络图像分类目标检测图像分割OpenCVPytorchNLP自然语言处理 OpenCV 一、OpenCV简介1.1 简介1.2 OpenCV部署1.3 OpenCV模块 二、OpenCV基本操作2.1 图像的基本操作2.1.1 图像的IO操作2.1.2 绘制几何图像2.1.3 获取并修改图像的像素…

时间相关数据的统计分析(笔记更新中)

对事件相关数据的统计思路做一个笔记 可以用作肿瘤生长曲线(Tumor Growth Curve)/某一个药物处理后不同时间点表型的获取类型的数据。 总体来说合适的有两类,一类是以ANOVA为基础的方差分析,重复测量资料的方差分析;…

D - Connect the Dots Codeforces Round 976 (Div. 2)

原题 D - Connect the Dots 思路 直接去做的话会超时, 因此用差分去优化 代码 #include <bits/stdc.h> using namespace std;int f[200020]; int z; int b[11][200020];// 并查集的 find 函数 int find(int x) {return f[x] ! x ? f[x] find(f[x]) : x; }// 检查是…

食品饮料小程序搭建私域会员管理

食品饮料是商超主要经营类目之一&#xff0c;多样化的品牌/厂商/渠道/经销商&#xff0c;客户在消费方面购物渠道和选择范围广&#xff0c;无论厂商还是线下门店/线上电商都需要围绕流量/会员开展生意获得更多营收。 小程序开店基于微信平台生态分享宣传、用户店铺方便购物及提…

Flutter与原生代码通信

文章目录 1. 知识回顾2. 示例代码3. 经验总结我们在上一章回中介绍了通道相关的内容,本章回中将介绍其中的一种通道:MethodChannnel.闲话休提,让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中介绍了通道的概念和作用,并且提到了通道有不同的类型,本章回将其中一…

【C++】类与对象基础概念解析

恭喜你学习完C语言与数据结构的有关内容&#xff0c;现在让我们开始进行对C的学习吧~ &#x1f49d;&#x1f49d;&#x1f49d;如果你对C语言或数据结构还存在疑惑&#xff0c;欢迎观看我之前的作品 &#x1f449;【数据结构】 &#x1f449;【C语言】 目录 一、引言 二、类…

【2024年最新】基于springboot+mysql就业信息管理系统

技术摘要 技术框架&#xff1a;以springboot作为框架&#xff0c;业务模式&#xff1a;B/S模式数据库&#xff1a;MySql作为后台运行的数据库服务器&#xff1a;使用Tomcat用为系统的服务器 系统展示 系统实现功能 本次实现一个就业信息管理系统&#xff0c;通过这个系统能够…

vscode安装及c++配置编译

1、VScode下载 VS Code官网下载地址&#xff1a;Visual Studio Code - Code Editing. Redefined。 2、安装中文插件 搜索chinese&#xff0c;点击install下载安装中文插件。 3、VS Code配置C/C开发环境 3.1、MinGW-w64下载 VS Code是一个高级的编辑器&#xff0c;只能用来写代…

嵌入式系统中qt开发 Qdebug输出中文的时候变成了问号 ??? bulideroot制作的根文件系统

嵌入式系统中qt开发 Qdebug输出&#xff1f;&#xff1f;&#xff1f; bulideroot制作的根文件系统 这个问题我找了三四天了&#xff0c;因为的字符也配置了 /etc/profile中qt的环境变量我也配置了 我的/usr/share/fonts也是有字库的&#xff0c;但是qt输出的中文全是&#…

windows 11 LTSC 26100.1742 官方简体中文版

系统简介 Windows 11 LTSC&#xff08;长期服务通道&#xff09;是一个专为长期稳定性和可靠性设计的Windows 11变体&#xff0c;适合于需要最小更新和更改的关键任务系统和设备。与常规版本相比&#xff0c;LTSC版本的特点是更新频率较低&#xff0c;目的是为了保持系统的稳定…

从零开始掌握YOLOv11:揭秘三大损失函数的理想值(源码+实战)

相关文章&#xff1a; YOLOv1–v11: 版本演进及其关键技术解析-CSDN博客 YOLOv11&#xff1a;重新定义实时目标检测的未来-CSDN博客 Yolo v11目标检测实战1&#xff1a;对象分割和人流跟踪&#xff08;附源码&#xff09;-CSDN博客 YOLOv11目标检测实战2&#xff1a;人流统计…

win10下cuda12.1 +troch2.4.1+vs2022环境下编译安装flash-attn

步骤一 下载项目 先下载 https://github.com/Dao-AILab/flash-attention&#xff0c;然后在conda环境中进入项目目录 步骤二 安装依赖项 执行以下命令&#xff0c;安装cutlass库&#xff0c;该库为编译flash-attn的必须依赖 conda update --force conda conda install conda…

Linux文件重定向文件缓冲区

目录 一、C文件接口 二、系统文件I/O 2.1认识系统文件I/O 2.2系统文件I/O 2.3系统调用和库函数 2.4open( )的返回值--文件描述符 2.5访问文件的本质 三、文件重定向 3.1认识文件重定向 3.2文件重定向的本质 3.3在shell中添加重定向功能 3.4stdout和stderr 3.5如何理…

Java | Leetcode Java题解之第446题等差数列划分II-子序列

题目&#xff1a; 题解&#xff1a; class Solution {public int numberOfArithmeticSlices(int[] nums) {int ans 0;int n nums.length;Map<Long, Integer>[] f new Map[n];for (int i 0; i < n; i) {f[i] new HashMap<Long, Integer>();}for (int i 0;…

深度学习中的优化方法(Momentum,AdaGrad,RMSProp,Adam)详解及调用

深度学习中常用的优化方法包括啦momentum(动量法),Adagrad(adaptive gradient自适应梯度法),RMSProp(root mean square propagation均方根传播算法),Adam(adaptive moment estimation自适应矩估计法) 指数加权平均算法 所谓指数加权平均算法是上述优化算法的基础,其作用是对历…