我是一名测试攻城狮。
做了好些年的测试,背负着买房买车,再买房买车的巨大压力,深深的觉得银子就像流水一样不够花。
要测试SSD主控,也需要很多很多不一样的设备,需要花很多很多的银子。
目前市面上的SSD接口挺多,有什么SATA, SAS, PCIe,U.2, M.2, MSATA, GumStick,其实走的前段协议就两大类: SATA/SAS和PCIe。
周末吃饭的时候蛋蛋教育我,一颗SSD主控一般分前,中,后三段,前端就是SATA/SAS, PCIe这些配上AHCI或者NVMe,中段就是FTL,后端就是NAND Flash Controller。
FTL是纯软件实现,测这个基本上不需要什么设备。
后端跟NAND打交道,可以用的一个设备叫逻辑分析仪,以后有空再聊。
今天先聊两种协议分析仪,SATA/SAS Analyzer 和 PCIe Analyzer。
Analyzer是个啥玩意儿?你可以这么理解,以SATA Analyzer为例, SATA Host和SATA SSD之间传输命令和数据,就像两个人在打电话,不在这个线路上的你,正常情况下是听不到的他们说了什么的。
Analyzer就相当于在他们两之间装了一个窃听器,这样你就可以完完整整的知道他们之间的对话,同时他们俩并不会察觉。
SATA/SAS Analyzer的供应商,我知道的主要两家:SerialTek和Lecroy
下图为SerialTek SATA/SAS Analyzer (SATA Gen3的大概可以买一辆奔驰C200)
连在Host 和SSD之间是这么个样子。
抓到的Trace是这个样子
PCIe Analzyer的供应商,我知道的主要三家:Lecroy,SerialTek和Agilent
下图为Lecroy的PCIe Analyzer (PCIe Gen3的大概可以买一辆捷豹XF)
配有各种Interposer卡
连在RC(主机)和EP (PCIe SSD)之间的图,没找到特别合适的。
抓到的Trace是这个样子的(这是一个NVMe读写的命令,Lecory可以帮你解码NVMe,AHCI这种常见的存储协议)
使用PCIe Analyzer可以测量PCIe的PHY,Data Link,Packet还有 Transaction layer. 跟示波器不同,Analyzer可以基于PCIe协议将link上所有Lane上发生的事务都解析出来,并且还提供Trigger(触发)的功能 。
对于Analyzer的一大挑战就是在link power state切换的过程能够快速适应,越早能够实现正确的抓包并解析越好。
这点Debug的时候尤其重要,看一个实际的例子:对一个Register做CfgWr操作,但是结果发现写进去的值不对,而且这个问题只在ASPM enable的时候才会发生(ASPM我们专门有文章介绍)。
Power state切换对于PCIe Transmitter和Receiver来说是属于压力比较大的操作,因此有时会导致link不稳定从而发送错误的包。这种问题debug需要抓trace,而analyzer必须在link从L0s退出进入L0时发送的TLP都抓到,否则就无法查看错误到底在什么地方。而L0S退出的时间非常短,Analyzer需要在link从electrical idle退出后非常短的时间内(几十个FTS)就能正确抓包并解析。
工具是死的,攻城狮是活的,啥时候抓trace,抓哪个阶段,抓的时候满满的红色肿么办,怎么设Trigger,trace肿么分析?
测试攻城狮们,体验身价的时候到了。