发明名称 一种提高固态硬盘数据传输效率的方法
摘要 本发明涉及一种提高固态硬盘数据传输效率的方法,属于计算机数据存储技术领域。本发明方法通过采用一种基于双向循环链表实现的数据缓冲机制和一种仿堆栈型LRU(Least Recently Used,最近最少使用算法)缺页调度算法,有效解决了固态硬盘地址不对齐的问题,从而提高数据传输效率。
申请公布号 CN103198021B 申请公布日期 2015.08.05
申请号 CN201310135328.X 申请日期 2013.04.18
申请人 北京理工大学 发明人 张全新;朱瑞瑾;李元章;王文明;马忠梅;张雪兰;谭毓安
分类号 G06F12/02(2006.01)I 主分类号 G06F12/02(2006.01)I
代理机构 代理人
主权项 一种提高固态硬盘数据传输效率的方法,用于主机与固态硬盘之间的数据传输,所述固态硬盘包括控制芯片、内存芯片和闪存芯片;其特征在于:其具体实施步骤为:步骤1:在固态硬盘的内存中创建1个空闲页双向循环链表、1个整页双向循环链表、1个零碎页双向循环链表和1个缓冲区;所述空闲页双向循环链表有N个节点,N为正整数;所述空闲页双向循环链表中的每个节点包含1个指针;所述整页双向循环链表和零碎页双向循环链表均为空;所述整页双向循环链表和零碎页双向循环链表中的每个节点都有一个标志量,用符号Flag表示,Flag用于表示该节点指向的缓存区中的页面是否修改过,设置Flag=0;所述整页双向循环链表中的每个节点包含1个指针;所述零碎页双向循环链表中的每个节点包含2个指针,分别称为头指针和尾指针;所述缓冲区的大小为所述固态硬盘的页面大小的N倍;步骤2:将步骤1中创建的缓冲区分为N个页面,每个缓冲区页面的大小与所述固态硬盘的页面大小相同;然后依次使所述空闲页双向循环链表第1个节点的指针指向缓冲区第1个页面的起始地址,使所述空闲页双向循环链表第2个节点中的指针指向缓冲区第2个页面的起始地址,以此类推,使所述空闲页双向循环链表第N个节点中的指针指向缓冲区第N个页面的起始地址;步骤3:当主机请求对所述固态硬盘进行读/写操作时,根据请求的读/写地址查找读/写操作页是否缓存在固态硬盘的缓存区中;若固态硬盘的缓冲区中有该读/写操作页的缓存,则直接在该读/写操作页的缓存上进行读/写操作,并在写操作后,设置该节点的标志量Flag=1;若固态硬盘的缓冲区中没有该读/写操作页的缓存,则判断空闲页双向循环链表是否为空,如空闲页双向循环链表为空,则采用缺页调度算法进行缺页调度操作,然后执行步骤4的操作;如空闲页双向循环链表不为空,则执行步骤4的操作;所述缺页调度算法具体为:第a步:判断整页双向循环链表是否为空,如不为空,则从整页双向循环链表的尾部选择一个标志量Flag=1的节点,将该节点称为待写回整页节点;将该待写回整页节点中指针指向的缓冲区中的页内容写入固态硬盘的闪存中;然后为空闲页双向循环链表增加一个新节点,并使该新节点的指针指向待写回整页节点中指针指向的地址;再从整页双向循环链表中删除该待写回整页节点;如果整页双向循环链表为空,则执行第b步的操作;第b步:从零碎页双向循环链表的尾部选择一个标志量Flag=1的节点,将该节点称为待写回零碎页节点;将该待写回零碎页节点中指针指向的缓冲区中的页内容写入固态硬盘的闪存中;然后为空闲页双向循环链表增加一个新节点,并使该新节点的指针指向待写回零碎页节点中指针指向的地址;再从零碎页双向循环链表中删除该待写回零碎页节点;步骤4:判断步骤3中所述对读/写操作页的操作是对该页的整页操作还是部分操作,如果是对整页操作,则从空闲页双向循环链表中摘出一个节点插入到整页双向循环链表,将该节点称为新增整页节点;然后根据步骤3中所述主机对固态硬盘进行读/写操作的地址,将该读/写操作页的内容从闪存中读入到新增整页节点中的指针指向的内存缓冲区页面;在该读/写操作页的缓存上进行读/写操作,并在写操作后,设置该节点的标志量Flag=1;如果进行的是部分操作,则从空闲页双向循环链表中摘出一个节点,并为零碎页双向循环链表增加一个节点,将该节点称为新增零碎页节点,使新增零碎页节点的头指针指向从空闲页双向循环链表中摘出的节点中指针指向的页面的起始地址;然后根据步骤3中所述主机对固态硬盘进行读/写操作的地址,将该读/写操作页的内容从闪存中读入到新增零碎页节点中头指针指向的内存缓冲区页面;在该读/写操作页的缓存上进行读/写操作,并在写操作后,设置该节点的标志量Flag=1;最后,使新增零碎页节点的头指针指向缓冲区中该读/写操作页的非空第一个字节的地址,使新增零碎页节点的尾指针指向该读/写操作页的非空最后一个字节的地址。
地址 100081 北京市海淀区中关村南大街5号