eSPI自学笔记(一):前言和简介
1981年,IBM生产出以Intel 8088为CPU的面向个人和办公的微型计算机。为了便于对其生产的PC机进行功能扩展,IBM推出了ISA总线。基本上包括鼠标键盘串口在内的低速IO设备都挂在ISA总线上,从ISA总线衍生出来的X-BUS也是类似的功能。(ISA/X-BUS的关系类似于I2C/SMBUS间的关系)。
但是随着CPU频率和工艺的提高,ISA总线逐渐显得不堪重用,不仅传输速率过低,CPU占用率高,而且引脚众多,耗费硬件资源,业界急需一款的新的接口规范方便进行PC机的功能扩展。
终于到1997年9月29日,Intel公布了取代ISA总线的接口方案,并且采取免费开放授权的方式。同ISA总线地址数据分离译码的工作方式不同,新总线采取了类似PCI的地址数据共享译码的方式,信号线数量大幅度降低,工作速率由PCI总线同步驱动。由于其所需的信号引脚位数大幅度降低(7个必需引脚,6个可选引脚),Intel称这个新接口规范为 Low Pin Count(LPC)。
LPC总线面世二十多年来,基本成为了低速外设和PC芯片组之间的专用接口,所面向的设备包括但不限于SuperIO/BMC/EC/80port Debug Card。其中,SuperIO面向Desktop Platform,EC面向Notebook Platform,而BMC面向Server Platform。如下图所示为LPC BUS与芯片组的连接示意图。
注意在早些时候,包含BIOS的Flash芯片也是LPC接口的,或者叫做Firmware Hub,LPC Spec中的Firmware Read/Write 就是针对这类device而定义的。但是受限于容量限制等原因,目前已经很难在主板上见到LPC Flash了,基本上都被SPI Flash所取代。
随着技术的不断迭代,LPC总线也开始显得捉襟见肘。
首先,LPC总线规定定义了7个必需信号和6个可选信号,总共需要占用处理器13个引脚,再加上芯片组和EC/BMC/SIO之间数量众多的sideband信号,管脚资源紧张的系统架构急需一种占用硬件管脚更少的总线通信方式;
再者,LPC现有的实现都是基于3.3V IO电平,不利于低功耗设计;
最后,LPC总线时钟固定为33MHz,总线数据吞吐量最高只能到133Mbps,已经成为了系统的数据瓶颈。
于是到了2016年,Intel又推出新一代总线接口规范Enhanced Serial Peripheral
Interface (eSPI)用于取代LPC。eSPI总线借鉴和复用了SPI总线的电气时钟规范,但是在协议层使用了全新的定义,所以二者无论是从功能还是从应用上完全是两码事,请大家不要单纯因为名字类似就混淆。除了全面兼容LPC总线的作用和功能外,eSPI总线还把OOB(out of band)的SMBUS和SideBand的GPIO都转化给可以在eSPI Bus上传递的In Band Message,除此以外,还可以和chipset实时共享flash。eSPI BUS与Chipset的连接示意图如下:
从中我们可以发现,eSPI BUS在同一组物理总线上传递了四类信息流,为了在保证这四类信息流之间相互独立互不干扰,eSPI Spec引入了Channel的概念。
所谓Channel,引用Spec的原话,其定义为:A channel provides a means to allow multiple independent flows of traffic to share the same physical bus。在协议层面,为每个channel都定义了自己专用的指令和payload格式;在硬件层面,每个channel都有属于自己的data buffer,并且相应的Tx avail和Rx Free状态状态都可以显示到status register中。
上图所示为eSPI SPEC给出的一个概念图,可以看到在图中,定义Channel 0为Perpheral Channel,Channel 1为Virtual Wire Channel,Channel 2为 OOB Message Channel,Channel 3为Flash Access Channel。至于这四个Channel都是起到什么作用,又是怎么在不影响其他Channel的前提下进行数据传输的,我们在后续的内容中会进一步讲解。
更多内容欢迎扫码关注公众号:第五位面壁者
eSPI自学笔记(一):前言和简介相关推荐
- eSPI自学笔记(五):Virtual Wires Channel与Posted/Non-Posted
前几期内容面向的读者为对eSPI毫无概念但是有兴趣了解的工程技术人员,这一期也是本自学笔记的最后一期,所面向的读者为基本已经通读过一遍eSPI Spec,但是对其中一些概念还存在疑虑的朋友们.这一期将 ...
- David Silver强化学习公开课自学笔记——Lec1强化学习简介
本笔记摘自知乎博主旺财的搬砖历险记和叶强,仅用于自学 1.背景介绍 (1)背景 强化学习是多学科多领域交叉的产物,本质是解决决策问题,即学会自动决策,在各个领域体现不同,但都归结为人类如何且为什么能做 ...
- 【自学笔记】前端面试题之CSS(部分HTML)
以下摘抄自 掘金 http://gold.xitu.io/entry/5781b8db0a2b58005765e628/promote?utm_source=baidu&utm_medium= ...
- eSPI自学笔记(三):Run-time Flash Access Channel
上一期内容我们介绍了eSPI Spec中所定义Perpheral Channel的相关内容,这一期将继续探索eSPI Spec中Run-time Flash Access Channel的相关内容.还 ...
- 《Cisco交换机配置与管理完全手册》(第二版)前言和目录
史上最具人气.最受好评的网络设备图书领域"四大金刚"的全新升级版本再现江湖了,他们分别是:<Cisco交换机配置与管理完全手册>(第二版).<H3C交换机配置与管 ...
- 《H3C交换机配置与管理完全手册》(第二版)前言和目录
史上最具人气.最受好评的网络设备图书领域"四大金刚"的全新升级版本再现江湖了,他们分别是:<Cisco交换机配置与管理完全手册>(第二版).<H3C交换机配置与管 ...
- 《Cisco路由器配置与管理完全手册》(第二版)前言和目录
史上最具人气.最受好评的网络设备图书领域"四大金刚"的全新升级版本再现江湖了,他们分别是:<Cisco交换机配置与管理完全手册>(第二版).<H3C交换机配置与管 ...
- pytorch自学笔记
pytorch和tensorflow是机器学习的两大框架,上一篇帖子已经完整梳理了TensorFlow自学的知识点,这一篇把自学pytorch的知识点也整理下来,内容参考了网上很多帖子,不一一引用了, ...
- Spring框架自学笔记
Spring框架自学笔记 第一章 简介 Spring是一套建筑标准,比如承重标准.丈量标准,通风标准等,并规范了结构:框架式结构,浇筑式结构,且定义了建筑的每个组成部分名字与接口,比如电力系统的接口是 ...
- 信息系统项目管理师-自学笔记
软考-信息系统项目管理自学笔记 感谢卢海强老师编写时间2021-06-01 09:39:21 选择说明: 第一章,选择题大约占20分,要看教材的120页左右第2.4-12(项目管理).16(变更).2 ...
最新文章
- 网络管理员比赛回顾04-DHCP
- C++ assert 断言使用
- 低版本IE浏览器不支持前端代码修改属性remove()的解决办法
- golang 检查ip地址格式 是否正确
- inotify+rsync实时同步服务部署
- Redisson 管道批量发送命令流程分析
- 起步,停车——走好你的IT运维管理之路
- 数据库:MySQL相关知识整理,值得收藏!
- nginx反向代理和shiro权限校验产生的404问题
- ios 不被遮挡 阴影_为何你没见到日环食?你不知道的天象常识原来还有这么多 | 返朴...
- CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13
- hadoop应用开发技术..._大数据技术与应用——万物皆可数据化
- UI设计师素材干货|APP底部导航模板
- Python升级后pip命令失效解决方法
- quartus 14.1破解失败解决方案
- 天勤数据结构——绪论
- Ubuntu 局域网下查看ip及计算机名
- 外贸开发信各国发送的最佳时间
- 群晖域名注册_小白瞎折腾 篇九:玩转群晖NAS:域名注册技巧,及SSL证书获取...
- 四、异常(高琪java300集+java从入门到精通笔记)
热门文章
- Git报错The requested URL returned error: 403
- 华为手机真机测试问题 The application could not be installed: INSTALL_FALLED_INTERNAL_ERROR
- bilibili弹幕爬取
- tar -zxvf是什么意思
- 算法导论 2-3 霍纳(Horner)规则的正确性
- python ffmpeg模块_python 模块之-ffmpeg 中文参数对照表
- python实现火车票查询_Python 实现火车票查询工具
- goldendict在线子典 goldendict
- 技术交流:springboot配置阿里云日志服务与log4j2 lookup
- Git清理历史大文件