SATA
文章平均质量分 75
古猫先生
长期混迹存储领域,先后供职于知名半导体外企和互联网存储研发,欢迎留言or私信交流~
展开
-
SATA SSD需要NCQ开启吗?
结合上面两点,有很多人对NCQ产生了误解:NCQ是提升HDD性能的,对SATA SSD没有用,且不能开启。小编想说的是:NCQ在整个计算机IO栈中,类似于水闸一样,开启NCQ(一次发送32个命令),关闭NCQ(每次只发送1个命令)。SSD虽然没有机械臂和磁头,但是SSD是多通道的,开启NCQ后,硬盘控制器可以根据数据请求和数据存储区域NAND的分布,利用多通道并发的优势,提升性能。原创 2023-02-13 23:04:31 · 3095 阅读 · 1 评论 -
SATA系列专题之六:浅析NCQ原生指令序列
所以,我们可以看到在上面的sata trace中,分16次发送Data FIS。所以,我们可以看到在上面的sata trace中,分4次发送Data FIS来实现32768 bytes数据的传输。SATA允许硬盘端通过DMA setup FIS直接对Host控制器送出数据传输请求,DMA引擎就可以直接进行资料传输,这个过程中并不需要Host端软件的介入。如果硬盘同时间内完成多组命令,这些命令完成所引起的中断就可以聚集在一起,大幅减少中断的数目,这对于降低中断延迟有极大的贡献。所以,SATA spec提供。原创 2022-09-12 14:40:20 · 3073 阅读 · 2 评论 -
SATA系列专题之五:Link Power Management解析
Host链路层收到Partial/Slumber请求后,进入Partial(L_TPMPartial)或者Slumber(L_TPMSlumber),并发送Primitive基元"PMREQ_P"或者"PMREQ_S"至物理层,这个过程中,会一直发送PMREQ,直至收到物理层的回应(PMACK或者PMNAK);从上面的Protocol中,我们可以看到,一旦进入Partial/Slumber状态,Link Phy就会进入electrical idle。这个过程中会发送4~16个PMACK。原创 2022-09-11 17:31:59 · 1307 阅读 · 0 评论 -
SATA系列专题之四:4.1 Command Layer命令分类详细解析
在之前的文章中, 我们已经介绍了传输层(Transport Layer),链路层(Link Layer)以及物理层(Physical Layer)的相关内容。PIO data-out command的作用是将host memory数据写入device。我们这里主要解析Command layer命令层具体Command相关内容。SATA Transport Layer传输层解析3.0-3.4;SATA Link Layer链路层解析2.0-2.3;SATA Command Layer命令层解析4.0;原创 2022-09-11 17:31:13 · 2196 阅读 · 0 评论 -
SATA系列专题之四:4.0 Command Layer命令层概述
软件下发cmd, 将payload content的资讯,先写到shadow command block register和shadow control block register里;CPU在写Register的时候,会先写在上层的Shadow Register,硬件update之后才会在下层供HW访问的Register开始执行。因为真正生效的执行HW动作的是下面这层,而上面这层只是将CPU(也就是将软件)的信息获取到,等下个硬件周期才会执行。形象的讲上层是下层的Shadow。原创 2022-09-11 17:30:26 · 1032 阅读 · 0 评论 -
SATA系列专题之三:3.4 Transport Layer传输层Error处理机制解析
这个错误如果是在Transport Layer或者以下发生的,由硬件启动retry机制。从上图我们也可以看到,所有的status和error register都放在HBA。SATA Spec中提到SATA环境支持ATA error以及SATA error的检测。表明这是个可以纠正的错误,不严重,可以忽略。不过,此类error虽然可以被纠正,但是也会对SATA的整体性能产生不利影响。在之前的文章中,已经解析了SATA协议的部分相关内容。不过,这种情况下,Host不能判断错误的根本原因。原创 2022-09-11 17:29:37 · 1218 阅读 · 0 评论 -
SATA系列专题之三:3.3 Transport Layer传输层Flow Control机制解析
当接收端Rx buffer快空的时候,会释放HOLD,欢快的告知发送端“快发送数据啦,我现在很空呢~”,同时会发送R_IP。发送端收到接收端R_IP的指示,恢复data传输。当发送端Tx buffer接近空的时候,发送端会给接收端发送Primitive基元“HOLD”,告知接收端,data传输将会被暂停;当接收端Rx buffer快满的时候,发送HOLD给接收端,告知发送端"先不要发送数据了,我快承受不来了,呜呜~"。当发送端接到HOLD之后,会立马发送HOLDA安抚接收端"遵命~传输已中止~"。原创 2022-09-11 17:27:30 · 599 阅读 · 0 评论 -
SATA系列专题之三:3.2 Transport Layer传输层FIS Retry机制解析
当device Link layer解析到传过来的FIS有错误发生时,会返回一个Primitive基元“R_ERR”,告诉Host端:“您刚才传输的FIS出了点问题,麻烦您发送一遍”。当Host端将FIS从Transport Layer传至Link layer的时候,FIS其实在Transport Layer的FIS Tx Buffer有一个备份。上回说到,FIS是一种用于Host和device之间信息传输的机制,每个FIS的格式都是固定的,并且对应唯一的ID,SATA Spec定义了14类FIS ID。原创 2022-09-11 17:26:47 · 705 阅读 · 0 评论 -
SATA系列专题之三:3.1 Transport Layer传输层FIS结构解析
下表中的“i”表示host在收到该FIS以后,如果shadow status register中BSY和DRQ位都为0时,host进入中断等待状态(实际上表明device进入中断等待状态)FIS是一种用于Host和device之间信息传输的机制,每个FIS的格式都是固定的,并且对应唯一的ID,SATA Spec定义了14类FIS ID。当Device接收到一个有效的Register FIS - H2D,检查C bit的内容,然后更新命令寄存器 / 控制寄存器中的内容中,原创 2022-09-11 17:25:58 · 1048 阅读 · 0 评论 -
SATA系列专题之三:3.0 Transport Layer传输层概述
通知Link Layer传送Frame以及获取Link Layer传来的Frame receipt确认信息,(host收到FIS后也会向device发送确认信息的FIS)发送时根据Command的种类及格式构造FIS(Frame Information Structure),接受时检测FIS种类并分解得到有用资讯。后续文章会针对FIS,Flow Control以及Error Reporting三个部分详细解析,敬请期待呀~Oh, man, Come on!管理和流量控制(Flow Control)原创 2022-09-11 17:24:51 · 439 阅读 · 0 评论 -
SATA系列专题之二: 2.3 Link layer链路层 Frame结构以及Primitive基元解析
SATA协议中所有Frame的结构均是包含四个部分:SOF、Payload Data、CRC、EOF原创 2022-09-10 20:28:58 · 408 阅读 · 0 评论 -
SATA系列专题之二: 2.2 Link layer链路层加扰/解扰/CRC解析
资料在进行8b/10b 编码之前,必须先行资料加扰(Scramble)的处理,目的是為了降低EMI(Electromagnetic Interference,电磁干扰)。为单位,如果资料的内容不是Dword的整数倍,需要在资料包的后面用‘0’来补充。对于一个资料包,在SOF后的资料就必须计算其CRC值,在SOF与EOF之间的资料,包括CRC值都需要加扰。8b/10b编解码(已解析,详细见历史文章)反之,在接收方,资料先通过10B/8B解码,,操作结果送往8B/10B编码器编码;,最后计算资料的CRC值。原创 2022-09-10 20:27:28 · 834 阅读 · 0 评论 -
SATA系列专题之二: 2.1 Link layer链路层8b/10b编码解析
x表示输入的原始资料的低5位元,y表示输入的原始资料的高3位元。通俗的讲,也就是8bit原始数据会分成两部分,其低5位进行5B/6B编码,高3位则进行3B/4B编码。当高速串行流动逻辑1或逻辑0有多个位没有产生变化时,信号的转换就会因为电压位阶段关系而造成信号错误,直流平衡的最大好处便是可以克服以上问题。,就是1的位数和0的位数的差值,根据上面3种情况就有对应的3个Disparity0、-2、+2.8b/10b编码是目前高速串行通信中经常用到的一种编码方式,直观的理解就是把。为什么要引入这种机制呢?原创 2022-09-10 20:26:45 · 804 阅读 · 0 评论 -
SATA系列专题之二:2.0 Link layer链路层概述
计算CRC值,加扰(Scramble)和8B/10B编码后,加上SOF和EOF封装成frame ,传递给物理层(Physical layer)。从物理层接收到有效资料时,进行8B/10B解码、解扰(Descramble)以及CRC效验,然后将资料提交到传输层。通过插入各种primitive基元(详细解析请见本篇后面内容)进行流量控制,在成功传递完有效资料后,传输层(transport layer)传送进来FIS,",我们这里主要解析Link layer相关内容。我们先来看看link layer的结构。原创 2022-09-10 20:25:44 · 803 阅读 · 0 评论 -
SATA系列专题之一:浅析Physical Layer物理层OOB信号
COMWAKE同样是有两部分相互间隔组成,一部分是突发长度为160个UI (Unit Interval)约106.7ns的ALIGN,另一部分是长度为160个UI约106.7ns的Idle。主机接收到COMWAKE后,以支援的最低速率连续发送D10.2资料,同时锁存检测接收的资料,当检测到设备发送的ALIGN后,以接收的速率将ALIGN转发给设备。需要注意的是,虽然COMREST和COMINIT形式上是一样的,但COMREST只能从host到device,而COMINIT只能从device到host。原创 2022-09-10 20:24:56 · 1164 阅读 · 0 评论 -
为什么PCI-e比SATA快这么多?
用认真的态度与专业的情怀倾注于存储,欢迎关注我,与我交流哦!PCIe和SATA是两种不同的接口标准,二者的本质的区别是通信架构的不同,PCIe属于全双工模式,而SATA是半双工模式。简单的来说,全双工模式允许数据双向传输,而半双工模式只允许数据单向传输。全双工模式传输的优势就是传输速度快,延迟低。从系统架构上来说,PCIe比SATA要简单。PCIe SSD硬盘在直接连在CPU上,不过,准确的来说,...原创 2018-03-05 15:22:12 · 29062 阅读 · 1 评论 -
一招完美解决SSD系统盘卡顿死机的问题!
小编自从在电脑上配备了一块SATA SSD作为系统盘, 电脑运行比之前的机械硬盘快了很多,浏览网页,玩游戏都很流畅了。可是,最近小编发现电脑经常会出现卡顿,或者重启的时候会卡机,这让小编愉悦的心情平添了一丝失落。于是,小编觉得探索一下问题的根源。根据小编处理SSD案例的经验,小编决定先通过SATA Trace看看,能否会找到问题的端倪。接下来的任务就是搭建SATA tracer平台了,原创 2017-11-08 15:33:53 · 93290 阅读 · 0 评论 -
快来看,SATA秘籍惊现江湖!!!
耗时半月,终于将SATA系列专题连载完毕。SATA专题总共分为六个部分,14篇文章,一万余字。有时候对某个方面的理解,从读懂到写出来确实需要花费精力。在写这个SATA专题的过程中,古猫也是成长不少,之前对SATA一些知识点理解不到位的地方,此时会有更清晰的理解。同时,古猫也希望通过这个SATA专题,可以对那些需要这方面知识的小伙伴们带来些许的帮助。SATA系列专题大纲如下,如有原创 2017-07-26 11:37:39 · 10790 阅读 · 3 评论