【转】CPU的快速互联通道(QPI)详解

原文自:http://blog.csdn.net/hipercomer/article/details/27580323

翻译自:http://www.hardwaresecrets.com/article/Everything-You-Need-to-Know-About-The-QuickPath-Interconnect-QPI/610/1

自Intel有CPU开始,便一直采用的是称之为“前端总线(Front Side Bus, FSB)”的外部总线。前端总线是由内存和I/O共享的一条通往CPU的通道。新一代的Intel 处理器将内置内存控制器,所以该处理器将提供两个通道:连接CPU和内存的内存总线(memory bus)以及连接CPU和I/O的I/O总线。这个新增的I/O总线称之为快速互联通道(QuickPath Interconnect, QPI)。本文中,我们将解释其工作原理。

图1 传统Intel处理器架构

图1给出了传统的Intel处理器架构,图2是处理器内置内存控制器的新一代Intel处理器架构。

图2 新一代Intel处理器架构

事实上,AMD从2003年开始便在Athlon 64
CPU中采用相似的架构了。现在,所有AMD的CPU都已经内置内存控制器了。他们使用称之为HyperTransport总线来实现I/O通信。尽管HyperTransport和QPI目标相同、工作机制也类似,不过他们并不兼容。

顺便一提的是,技术上将QPI和HyperTransport并不能称之为总线而只是点对点连接。总线是指允许多个部件同时连接的一组导线。点对点连接指的是仅仅连接两个部件。尽管技术上称它为总线不太对,为了简便起见和我们还是这么叫吧。

接下来我们谈谈QPI的工作原理,和HyperTransport类似,QPI为CPU和芯片组的连接提供了两个通道(lane),如图3所示。这样做,可以让CPU同时接收(读)和发送(写)I/O数据,而传统的FSB是不能实现这个目标的。

图3 快速互联通道提供分离的输入输出路径

说到芯片组,Intel将推行单芯片解决方案。因为在CPU中内置内存控制器几乎等价于将北桥内置到CPU中。图3中的Chipset的功能和南桥类似,功能上就像是一个“I/O集线器(I/O Hub)”或者用Intel的行话称之为“IOH”。

每个通道(lane)一次能传输20个比特位,其中16位为实际数据,4位是冗余纠错码(CRC)。QPI第一个版本的工作频率为3.2GHz并能够在一个时钟周期内传输两个数据(即DDR技术),这使得总线工作频率看起来好像是在6.4GHz(Intel使用GT/s为单位,表示十亿次传输/秒).由于一次可以传输16位,我们可以很容易计算得到一个通道上的数据传输峰值6.4GHzX16bits/8=12.8GB/s。也许有些人说QPI的最大理论峰值为25.6GB/s因为他们考虑两个通道同时提供的带宽。不过我们并不同意这种方法,这就像我们可以说高速公路上限速为130英里每小时因为单向限速为65英里每小时一样毫无意义。

所以和FSB比起来,QPI虽然传输更少的数据但是却可以在更高的频率工作。当前,最快的前端总线频率1600MHz(实际上工作在400MHZ,但是在一个时钟周期内传输四个数据)也能达到12.8GB/s,这和QPI一样快,但是QPI是在每个通道上都提供12.8GB/s。而且FSB要同时传输I/O数据和内存数据,所以QPI可用带宽要更高些。

QPI也比HyperTransport要快。当前HyperTransport能够达到的最大速度为10.4GB/s,但是当前Phenom处理器的只能达到7.2GB/s.所以,Intel
Core i7 CPU的外部总线要比AMD的快78%。其他系列的AMD CPU如Athlon, Athlon
X2的传输频率更低了,仅能达到4GB/s。

图4 差分对传输

顺着电子传输继续往下走,每个位的传输使用差分对(differential
pair),图4所示。所以,每传输一位都要使用两根导线。QPI的两个通道一共使用了84根导线,这几乎是Intel传统CPU中FSB需要的导线数量的一半。所以,第三个有点便是前端总线可以使用更少的导线(第一个优点使将内存和I/O请求分开,第二个有点是将读写路径通道分开)。

QPI使用了和网络架构中很像的分层技术,一共有四层分别是物理层,链路层,路由层和协议层。

接下来我们看看QPI中引入的高级技术。

功耗模式

如图5所示,QPI提供以下两种功耗模式,分别称之为L0和L0s和L1. L0指的是QPI全速运行时的模式,在L0s状态时,为了节省能耗,数据线和驱动这些线的电路将被关掉。在L1状态时,所有的东西都会被关闭。当然,L1的唤醒时间将更长。

图5 功耗管理

可靠模式

我们提到了QPI的数据路径是20位宽,我们并没有提到的是QPI允许每个通道被设置成4个五位宽的小通道,如图6所示。对于服务器市场环境来说,这种分割方法可以提高可靠性。不过对于桌面环境而言,QPI并不提供这个功能。

当这个功能打开后,如果接收器发现其与发射器之间的连接物理上已经被破坏了,它将关闭已经破坏的部分,然后每次传输更少的位数。这显然会降低数据传输速率,但是至少系统不会崩溃。

图6 可靠模式配置

时间: 2024-12-28 01:47:37

【转】CPU的快速互联通道(QPI)详解的相关文章

CPU的快速互联通道(QPI)详解

翻译自:http://www.hardwaresecrets.com/article/Everything-You-Need-to-Know-About-The-QuickPath-Interconnect-QPI/610/1 自Intel有CPU开始,便一直采用的是称之为"前端总线(Front Side Bus, FSB)"的外部总线.前端总线是由内存和I/O共享的一条通往CPU的通道.新一代的Intel 处理器将内置内存控制器,所以该处理器将提供两个通道:连接CPU和内存的内存总线

Android 最火的快速开发框架AndroidAnnotations使用详解

Android 最火的快速开发框架androidannotations配置详解文章中有eclipse配置步骤,Android 最火快速开发框架AndroidAnnotations简介文章中的简单介绍,本篇注重讲解AndroidAnnotations中注解方法的使用. @EActivity 示例: @EActivity(R.layout.main) public class MyActivity extends Activity { } @fragment 示例: @EFragment(R.lay

Android 最火的快速开发框架androidannotations配置详解

以前给大家介绍的xUtils是国内比较火的快速开发框架,但是它的注解机制不是太稳定而且注解可选也比较少,今天给大家介绍一个国外的一个框架主要专注于注解的开发,简化Android代码编写,因为配置注意事项较为复杂,所以先详细介绍一下配置: git官网:https://github.com/excilys/androidannotations 下载完解压目录如上,AndroidAnnotations是源码工程,example是例子工程, 打开\examples\HelloWorldEclipse,如

网络互联参考模型(详解)

转自:真实的归宿  分类: 网络知识(7)  socket网络编程(7)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 网络互联参考模型 1. 什么是协议 为了使数据可以在网络上从源传递到目的地,网络上所有设备需要"讲"相同的"语言" 描述网络通信中"语言"规范的一组规则就是协议 例如:两个人交谈,必须使用相同的语言,如果你说汉语,他说阿拉伯语-- 数据通信协议的定义 决定数据的格式和传输的一组规则或者一组惯例 2.

苹果IOS,与windows Phone7,系统,内存,CPU处理,及后台程序运行,详解微软墓碑机制的系统

关于ios的多任务以及内存管理 看了很多人为自己的可用内存是350mb还是380mb纠结.为了多优化出一点可用内存费脑筋. ios的任务管理和内存管理,跟windows是有很大差别的.很多人习惯于用 windows的思维去看待ios. windows大家都知道,窗口开的越多,系统越慢,为什么呢?因为所有窗口都在运行,cpu占用率高:并且都占内存.可用内存不足还会迫使系统使用硬盘充当虚拟内存,硬盘频繁读写当然会多耗电,并且硬盘速度也比较慢. ios则不同.首先ios的后台任务,除了极少数可以后台运

linux视频处理驱动通道的详解

视频信息是由前端数据采集-->ISP图像处理-->scaler到目标图像大小-->encode-->送给用户(例如电视可显示) 视频数据量大,处理图像环节多.如果每一个环节都把数据存到内存,然后在做下一步的动作.大家应该知道些内存是一个很慢的动作,这样系统效率就非常的低.所以内核驱动程序的好坏直接决定了这个芯片的可用性. 现在市面上主流的芯片厂商都是通过通道技术来实现从图像输入到视频流输出. 通道技术具体实现方式如下,各位同行可以参考. A -- 采集数据 B--图像处理 C--s

使用cpu加速linux命令方法步骤详解 

我们都知道linux系统中 grep, bzip2, wc, awk, sed等等,都是单线程的,只能使用一个CPU内核.那么如何才能使用这些内核? 要想让Linux命令使用所有的CPU内核,我们需要用到GNU Parallel命令,它让我们所有的CPU内核在单机内做神奇的map-reduce操作,当然,这还要借助很少用到的–pipes 参数(也叫做–spreadstdin).这样,你的负载就会平均分配到各CPU上,真的. BZIP2 bzip2是比gzip更好的压缩工具,但它很慢!别折腾了,我

linux sysbench: CPU性能测试详解

网上sysbench教材众多,但没有一篇中文教材对cpu测试参数和结果进行详解.本文旨在能够让读者对sysbench的cpu有一定了解. 小慢哥的原创文章,欢迎转载 1.sysbench基础知识 sysbench的cpu测试是在指定时间内,循环进行素数计算 素数(也叫质数)就是从1开始的自然数中,无法被整除的数,比如2.3.5.7.11.13.17等.编程公式:对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为素数. 2.sysbench安装 # CentOS7下可使用yum安装

Windows下caffe安装详解(仅CPU)

本文大多转载自 http://blog.csdn.net/guoyk1990/article/details/52909864,加入部分自己实战心得. 1.环境:windows 7\VS2013 2.caffe-windows准备 (1)下载官方caffe-windows并解压,将 .\windows\CommonSettings.props.example备份,并改名为CommonSettings.props.如图4所示: 图 4:修改后的CommonSettings.props文件 附带说明