注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
saijierhu的个人空间 https://home.eeworld.com.cn/space-uid-718016.html [收藏] [复制] [分享] [RSS]
日志

NCQ Native Command Queuing 本地命令队列

已有 1846 次阅读2016-8-9 17:10 |个人分类:SSD| SSD, 固态硬盘, 控制器, 命令

 

NCQ(Native Command Queuing 本地命令队列)SATA规范支持的一种新的功能,它是一种使硬盘内部优化工作负荷执行顺序,通过对内部队列中的命令进行重新排序实现智能数据管理,改善硬盘因机械部件而受到的各种性能制约,以发挥硬盘最高的效率、使延迟最小化。

NCQ命令具有连续发送,低延时,需批量处理等特性。

 

遇到的问题:

    NCQ命令下发时,通常是以命令队列的方式下发,也就是发送一连串的NCQ命令,通常最多为32个,但每次下发并不能确定一个NCQ命令队列中包含几个要处理的命令。

    接收每个NCQ命令后,要回D2H FIS

    要处理NCQ命令队列时,首先要回DMA SETUP FIS,每个命令执行完毕后要发送SET DEVICE BIT命令;

当遇到下列问题时,整个命令队列将会出现卡死现象:

1.  不确定HOSTNCQ命令队包含几个命令时,DEVICE要进行处理,回DMA SETUP FIS命令,

2.  此时正好有新的NCQ命令下发,HOST此时需要的是D2H FIS,而DEVICE 回的命令是DMA SETUP FIS.原有的NCQ命令队列被打乱,出现异常。

解决方法

由于NCQ的特殊性,因此其解析命令的路径与普通命令有区别,NCQ命令的解析需放置在ISR中,以保证能够及时的接收下一次到来的NCQ命令,并且不干扰正常命令处理流程,以及其他命令的执行。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章