1.0前言
有一个月没继续写总结了...咳咳咳
周六的天气不错,适合安静的找资料..
1.1背景
1.0 过去
在学校的时候,做开发用比较多的单片机当属X86、ARM的STM32系列。
做到驱动开发的时候,比较明显的是LCD驱动,一般LCD会有串行通信和并行通信。
我们在IO资源充足的情况下都选择了并行通信,在不考虑DMA的情况下,并行的速度快能够节省CPU资源。
毕竟对比X8的并行IO和单总线串行速度差不多碾压了8倍呢!发送单词“abandon.",当并行发送完整个单词串行只发送了一个"a"。
1.1 现在
正如以往的文章介绍,博主以前做的eMMC现在搞UFS,抛开软件层面的命令队列等因素(其实也是重要因素),eMMC是8个IO+CLK的标准并行口,UFS是双线差分串行口,但是在速度上UFS对eMMC取得碾压的优势,eMMC目前已经400MB/s已经达到了极限,而UFS2.1目前是1200MB/s+,从现在高端手机都采用了UFS都可以证实这点。按照之前的说话,串行为什么反而比并行更快了呢?下面进行资料的整理说明。
并行传输技术遭遇发展困境
在当初CPU频率比较低的时候,并行通讯是提升传输速度的一个重要手段,但是今近年来却受到了阻碍。
并行通信是依赖CLK时钟信号同步,当CLK的工作频率不断提高,对于数据线容易出现CRC错误,同时数据线的相互干扰也不断变大,布线长度稍有差异,数据就会以与时钟不同的时序送达对方,这就造成了并行通信难以进行高速化。(码间串扰)
2.
为了提高速度,从X8提升到X16/32也是一个手段,但是随之而来是牺牲CPU资源,以及 电路板面积的扩大,并且数据线还必须紧密结合,增大PCB的设计难度。
3.
时钟信号消耗的功耗极多,带来的噪声也最大。
因此当时钟频率达到一定速度时候,再继续提升对于数据传输造成了极大的困难,eMMC此时最大的时钟频率为200M/S,因此说eMMC的传输速度已经达到了瓶颈,JEDEC为嵌入式存储另寻出路,对此UFS采用了串行方式。
串行通信的发展
1995年,由Compaq、Intel、Microsoft和NEC等几家公司推出的USB接口首次出现在PC机上,1998年起即进入大规模实用阶段。
USB比RS-232C的速度提高了100倍以上,突破了串行口通信的速度瓶颈,而且具有很好的兼容性和易用性。USB设备通信速率的自适应性,使得它可以根据主板的设定自动选择HS(High-Speed,高速,480Mbps)、FS(Full-Speed,全速,12Mbps)和LS(Low-Speed,低速,1.5Mbps)三种模式中的一种。
USB总线还具有自动的设备检测能力,设备插入之后,操作系统软件会自动地检测、安装和配置该设备,免除了增减设备时必须关闭PC机的麻烦。其实就是热拔插嘛。
USB接口之所以能够获得很高的数据传输率,主要是因为其摒弃了常规的单端信号传输方式,转而采用差分信号(differential signal)传输技术,有效地克服了因天线效应对信号传输线路形成的干扰,以及传输线路之间的串扰。
高速串口不需要传时钟来同步数据流,没有时钟周期性的跳变,频谱不会集中,所以噪声干扰少很多。
所有高速串口都采用差分总线传输,外界噪声同时加载到并行传输的两条差分线上,相减之后可以抵消,对外部噪声的抵抗能力强。
没有CRC问题,因为它根本就没有同步时钟,不存在时钟和数据流的对齐问题。
线少,干扰少。串行通信一般是4根线,差分TX+RX。多通道会翻倍。
差分信号技术
高速串行通信都采用差分信号技术。
差分信号技术是20世纪90年代出现的一种数据传输和接口技术,与传统的单端传输方式相比,它具有低功耗、低误码率、低串扰和低辐射等特点,其传输介质可以是铜质的PCB连线,也可以是平衡电缆,最高传输速率可达1.923Gbps。
作为工科Dog,我们知道,在差分电路中,输出电平为正电压时表示逻辑“1”,输出负电压时表示逻辑“0”,而输出“0”电压是没有意义的,它既不代表“1”,也不代表“0”。
干扰信号同时进入相邻的两条信号线时,当两个相同的干扰信号分别进入接收端的差分放大器的两个反相输入端后,他们的差值也就是输出电压为0。所以说,差分信号技术对干扰信号具有很强的免疫力。
END
其实到这里的时候可能大家可能还有疑问,当CPU频率固定的情况下,串行优势再多速度怎么会比并行快,毕竟CPU频率已经摆在那里了。
是的,在低速的情况下(因此前面提到了X86),并行还是占据很大优势,当CPU不断提升频率时,比如达到了1G,并行已经不能通讯了,而这时候串行通信开始体现高速的价值,因此它其实是取决CPU频率,你可以通过提高CPU频率去提升数据传输速率,并不能单纯说谁比谁快。
当然,除了硬件信号,协议层的设计也是一个重要因素。