转http://blog.chinaaet.com/justlxy/p/5100057990

前面在介绍PCIe物理层逻辑子层的文章中,有提到过弹性缓存(Elastic Buffer,又称为CTC Buffer或者Synchronization Buffer)。其本质上是一种FIFO,主要用于解决跨时钟域问题。当然,PCIe的弹性缓存还用于补偿时钟误差(Compensate for the clock differences)。实际上,除了PCIe,弹性缓存还广泛应用于其它的高速串行接口——USB、InfiniBand、Fibre Channel、Gigabit Ethernet等基于SerDes的应用。

由于PCIe采用的基于8b/10b的嵌入式源同步时钟,接收端存在两个时钟域:一个是通过CDR从数据流中解析出来的时钟,用该时钟对数据进行采样;另一个是本地时钟域,用于其他的逻辑的。借助弹性缓存(FIFO),可以实现数据在这两个时钟域的转换。

以PCIe Gen1为例,链路上的数据速率为2.5Gbps。但实际上,任何晶振(或者其他频率发生器)都是有误差的,PCIe Spec允许的误差范围为±300ppm(Parts Per Million)。即,链路上实际的频率范围为2.49925GHz~2.50075GHz。借助弹性缓存,通过删除或者插入SKP Ordered Set可以消除链路频率误差的影响。如下图所示:

需要注意的是PCIe Spec并没有规定弹性缓存的具体位置,设计者可以将弹性缓存放在8b/10b解码器之前,也可以把弹性缓存放在8b/10b解码器之后。不过,Mindshare的建议是将弹性缓存放置于8b/10b解码器之前的。

当本地时钟域的时钟(Local Clock)的速度比数据流通过CDR解析出的时钟(Recovered Clock)的时钟要快时,且弹性缓存即将被读空之前,可以向SKP Ordered Set中插入1~2个SKP。如下图所示:

当本地时钟域的时钟(Local Clock)的速度比数据流通过CDR解析出的时钟(Recovered Clock)的时钟要慢时,且弹性缓存即将溢出之前,可以从SKP Ordered Set中移除1~2个SKP。如下图所示:

需要特别注意的是,Intel提出的PIPE规范(并非PCI-SIG强制的规范,具体参考前面关于PIPE的文章)中,只允许每次从一个SKP Ordered Set中插入或者移除一个SKP。如果需要插入或者移除两个SKP,则需要对两个SKP Ordered Set进行操作。如下图所示:

PCIe扫盲——弹性缓存(Elastic Buffer/ CTC Buffer)相关推荐

  1. PCIe扫盲系列博文连载目录

    转载自 http://blog.chinaaet.com/justlxy PCIe扫盲系列博文连载目录篇(第一阶段) 1.前言篇:PCIe扫盲--PCIe简介:http://blog.chinaaet ...

  2. 缓存系列之一:buffer、cache与浏览器缓存

    缓存系列之一:buffer.cache与浏览器缓存 一:缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较快的一方起到一个加速访问速度较慢的一方的作用,比如CPU的一级.二级缓存是保 ...

  3. pcie握手机制_【博文连载】PCIe扫盲——Ack/Nak 机制详解(一)

    原标题:[博文连载]PCIe扫盲--Ack/Nak 机制详解(一) 前面在数据链路层入门的文章中简单地提到过Ack/Nak机制的原理和作用,接下来的几篇文章中将对Ack/Nak机制进行详细地介绍. A ...

  4. NodeJS文档之Buffer(1)-Buffer的简介

    Buffer 在ECMAScript 2015(ES6)中引入TypedArray之前,JavaScript中没有读取或操作二进制数据流的机制. Buffer类作为Node.js标准API的一部分被引 ...

  5. 固定布局(fixed layout)、流体布局(fluid layout)、弹性布局(elastic layout)、响应布局(responsive layout)理解和技巧归纳

    关于web页面布局,首先简单了解一下固定布局(fixed layout).流体布局(fluid layout).弹性布局(elastic layout).响应布局(responsive layout) ...

  6. Ring Buffer (circular Buffer)环形缓冲区简介

    https://blog.csdn.net/langeldep/article/details/8888582 关于环形缓冲区的知识,请看这里 http://en.wikipedia.org/wiki ...

  7. 高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据...

    原文链接:http://tecdat.cn/?p=23378 1 介绍 在本文中,我们将研究以下主题 证明为什么低维预测模型在高维中会失败. 进行主成分回归(PCR). 使用glmnet()进行岭回归 ...

  8. freertos学习02-队列 stream buffer message buffer

    1.freertos数据传递简介 在freertos中,各个模块都是独立的任务,那么任务之间怎么进行大量的数据通信呢?在V10版本给出了三种方法. 队列queue,发送固定长度的数据串 stream ...

  9. PCIe扫盲系列博文连载目录篇(第一阶段)

    转载地址:http://blog.chinaaet.com/justlxy/p/5100053251 本文为PCIe扫盲系列博文连载目录篇(第一阶段),所谓第一阶段就是说后面还有第二阶段和第三阶段-- ...

最新文章

  1. MyPython--进阶篇--异常
  2. 基于 Ubuntu 搭建微信小程序服务
  3. 从菜鸟成为数据科学家的养成方案
  4. springMVC---处理模型数据方法 *
  5. 如何在Eclipse里显示BPMN格式的流程图
  6. 【计算机组成原理笔记】计算机的基本组成
  7. 《信号与系统学习笔记》—z变换(二)
  8. 解决微擎框架出现Could not resolve: cloud.zhifun.cc (Domain name not found)问题
  9. 车企号脉,资本试药,出行服务带病也要上场
  10. 计算投资指数基金的预期收益率
  11. layui前端项目打包方法_layui封装模块基础教程
  12. 非标产品和标准产品的区别(关于3C)
  13. python处理pdf文件的程序_Python处理PDF文档-拆分合并
  14. wireguard如何配置----服务端
  15. Games on a CD CodeForces - 727E(双hash)
  16. java 去掉前后逗号_java 怎样去掉最后面那个逗号
  17. 区间DP--LeetCode5498石子游戏
  18. 国仁网络资讯:视频号怎么剪辑制作视频;都有哪些剪辑软件好用。
  19. 什么是URL和URI
  20. 金庸小说之金銮殿点将

热门文章

  1. 点评阿里云盛大云代表的云计算IaaS产业
  2. 设计FMEA步骤三:功能分析
  3. GetMessage PeekMessage
  4. jQuery删除元素---remove()与empty()
  5. 事务上的等待事件 —— enq: TM - contention
  6. 华为VS谷歌:万物互联,谁主沉浮?
  7. kube-scheduler
  8. Dependency check配置Mysql数据库存储nvd数据
  9. 根据文件模板实现预览、生成word、pdf、excel(后端-项目)
  10. 数据泄漏检测和溯源技术