一种ssd主控中的raid核心计算装置及方法

文档序号:1504663 发布日期:2020-02-07 浏览:3次 >En<

阅读说明:本技术 一种ssd主控中的raid核心计算装置及方法 (RAID core computing device and method in SSD master control ) 是由 王运哲 刘大铕 朱苏雁 刘奇浩 刘尚 孙中琳 王资川 于 2019-10-31 设计创作,主要内容包括:本发明公开一种SSD主控中的RAID核心计算装置及方法,所述装置包括状态机、计数器、写地址累加器、读地址累加器、异或运算单元、寄存器D1至D6、双口SRAM,利用状态机、双口SRAM、异或运算单元以及地址累加器电路单元实现RAID核心计算。工作时状态机根据内部状态输出读使能信号和写使能信号至双口SRAM,计数器根据数据处理轮数对循环次数进行递减操作递至状态机;写地址累加器和读地址累加器将实时写地址、读地址发送至双口SRAM,根据状态机状态实现对双口SRAM的读写。本发明在SSD主控芯片内部实现RAID计算,从而实现SSD读写数据恢复。(The invention discloses a RAID core calculation device and method in SSD master control, wherein the device comprises a state machine, a counter, a write address accumulator, a read address accumulator, an exclusive OR operation unit, registers D1-D6 and a double-port SRAM, and the RAID core calculation is realized by utilizing the state machine, the double-port SRAM, the exclusive OR operation unit and an address accumulator circuit unit. When the double-port SRAM works, the state machine outputs a read enabling signal and a write enabling signal to the double-port SRAM according to the internal state, and the counter performs descending operation on the cycle number according to the number of data processing rounds and transfers the cycle number to the state machine; the write address accumulator and the read address accumulator send real-time write addresses and read addresses to the double-port SRAM, and the double-port SRAM is read and written according to the state of the state machine. The invention realizes RAID calculation inside the SSD master control chip, thereby realizing SSD read-write data recovery.)

一种SSD主控中的RAID核心计算装置及方法

技术领域

本发明涉及一种SSD主控中的RAID核心计算装置及方法,属于SSD数据处理领域。

背景技术

在对SSD的读写当中,从Flash颗粒读出数据时,若ECC纠错失败,且read re-try等操作也无法读出正确数据,此时就需考虑如何进行数据恢复。RAID技术可以充分发挥出存储芯片的阵列优势,提供容错功能来确保数据安全性,在某个存储单元出现问题的情况下仍可以继续工作。也就是说可以通过RAID数据SSD读写数据的恢复。现有的RAID都是在SSD主控芯片外的,没有在SSD主控芯片内的RAID核心计算装置和方法。

发明内容

本发明要解决的技术问题是提供一种SSD主控中的RAID核心计算装置和方法,在SSD主控芯片内部实现RAID计算,从而实现SSD读写数据恢复。

为了解决所述技术问题,本发明采用的技术方案是:一种SSD主控中的RAID核心计算装置,包括状态机、计数器、写地址累加器、读地址累加器、异或运算单元、寄存器D1至D6、双口SRAM;

状态机的状态包括IDLE、HDSHK、LDEN、DELAY、LOAD、RDEN、CALC和PIPE,IDLE是空闲状态,HDSHK是本模块与外部模块的握手状态,LDEN是等待数据开始进入状态,DELY是延时一拍状态,LOAD是持续往SRAM写数状态,RDEN是读使能状态,CALC是第一笔异或计算状态,PIPE是持续读写SRAM、持续异或计算的状态;

状态机的输入连接clk、rst、start、req、ack、first信号,start信号是IDLE状态的控制信号,req信号是HDSHK状态的控制信号,first信号是LDEN状态的控制信号,clk和rst是时钟和复位信号;状态机根据内部状态输出读使能信号和写使能信号至双口SRAM,计数器连接循环次数并根据数据处理轮数对循环次数进行递减操作,将递减后的计数值传递至状态机;写地址累加器连接写初始地址并根据写数据拍数进行累加得出实时写地址,将实时写地址发送至双口SRAM;读地址累加器连接读初始地址并根据读数据拍数进行累加得出实时读地址,将实时读地址发送至双口SRAM;双口SRAM设有数据读入和读出接口;外部数据读入至双口SRAM的路径有两条,一条是经过寄存器D1、D2的两拍寄存后写入双口SRAM,另一条是经过寄存器D1一拍寄存后与上轮读出的数据进行异或计算后经过寄存器D2的一拍寄存写入双口SRAM;输入数据有效信号经过寄存器D3、D4的两级寄存并在值为低时拉低写使能信号,last信号依次进入寄存器D5、D6进行两级寄存;

计数器记录循环次数,当完成指定次数后,反馈给状态机,使其回到IDLE状态;

写地址累加器在LOAD和PIPE状态时累加写地址,送给SRAM的写地址端口;

读地址累加器在CALE和PIPE状态时累加读地址,送给SRAM的读地址端口;

异或运算单元负责异或运算,即将从SRAM中读回的上一轮异或结果与从输入端口新进入的数据进行异或得到新的中间异或结果;

D1将输入数据寄存一拍,D2将异或运算单元得到的结果寄存一拍,D3和D4将输入数据有效信号寄存两拍,D5和D6将last信号寄存两拍,双口SRAM负责暂存异或运算的中间结果。

进一步的,第一轮读写操作时,外部数据经过寄存器D1、D2的两拍寄存后写入双口SRAM,第二轮至最后一轮读写操作时,外部数据经过寄存器D1一拍寄存后与上轮读出的数据进行异或计算后经过寄存器D2的一拍寄存写入双口SRAM。

本方法还公开了一种SSD主控中的RAID核心计算方法,本方法基于上述装置,包括以下步骤:

S01)、状态机在IDLE状态时,如果探测到外部的start信号拉高,把循环次数传输至计数器中,状态机进入HDSHK状态;

S02)、状态机在HDSHK状态探测到外部的req信号拉高时,将ack反馈信号拉高,完成握手;然后判断从计数器传来的计数值是否是循环次数的初始值,如果是,执行步骤S03至S05,开启循环的第一轮,只向双口SRAM写数据;如果否,执行步骤S06至S09,开启循环的第二轮至最后一轮,对双口SRAM同时进行读写操作;

S03)、状态机在LDEN状态探测到外部first信号拉高时,表示开始进入有效数据,状态机进入DELY状态;

S04)、状态机在DELY状态,将写初始地址加载到写地址累加器中,状态机进入LOAD状态;

S05)、状态机在LOAD状态,将输出至SRAM的写使能信号拉高,输入数据经过D1、D2两拍延时,被读入到SRAM中写地址累加器所指向的地址,正常流水时写地址累加器持续累加,外部数据持续进入,写使能信号持续为高;流水中断时,输入数据有效信号为低,输入数据有效信号信号经过D3、D4延时两拍,使得写地址累加器停止累加,并拉低写使能信号, SRAM停止写入;流水继续时,写使能信号再拉高,写地址累加器继续累加,直至检测到经过D5、D6延时两拍的last信号拉高,表示第一轮数据全部传输到了双口SRAM当中,计数器减1表示完成1轮数据处理,状态机回到HDSHK状态;

S06)、状态机在RDEN状态,将SRAM的读使能信号拉高,将读初始地址加载到读地址累加器,等待外部first信号拉高时,表示开始进入有效数据,状态机进入CALC状态;

S07)、状态机在CALC状态,SRAM中的读出数据和经由就餐器D1延时一拍的外部数据进入异或运算单元得到异或结果,将异或结果存入D2中,将写初始地址加载到写地址累加器,仍将SRAM的rd_en信号拉高,将读地址累加器进行加1操作,状态机进入PIPE状态;

S08)、状态机在PIPE状态,将SRAM的写使能信号拉高,将寄存器D2中的异或结果写入到SRAM中写地址累加器所指向的地址,将写地址累加器进行加1操作,仍将SRAM的rd_en信号拉高,将读地址累加器进行加1操作,正常流水时读写地址累加器持续累加,外部数据连续进入,读使能和写使能信号持续为高;流水中断时,输入数据有效信号为低,经过D3延时一拍使得读地址累加器停止累加,再经过D4延时一拍使得写地址累加器停止累加以及拉低写信号,停止写SRAM;流水继续时,写信号再拉高,读写地址累加器都继续累加,直至检测到经过D5、D6延时两拍的last信号拉高,表示此轮数据全部与上轮数据异或完成并将结果load到了SRAM当中,计数器减1表示完成1轮数据处理;

S09)、判断计数器计数值是否为0,如果是,则状态机回到IDLE状态,如果否,则重复步骤S06至S08,直至回到IDLE状态。

本发明的有益效果:优点1:对SRAM操作时,读出的是当前时钟周期所对应地址的数据,写入的是上一个时钟周期所对应地址的异或计算结果,因此每个时钟周期都有对SRAM的读写操作和对数据(分别是来自外部的数据与从SRAM中读出的数据)的异或运算。此种方式实现了批量数据流水操作,保证了异或结果输出比原始数据输入只有两个时钟周期的延时。

优点2:异或运算单元前后有D1和D2两组寄存器,留有足够的时序裕量,使得整个装置可以跑到较快的时钟频率上。

优点3:因有data_in_vld信号及其相关逻辑,内部SRAM的读写操作可以暂停,即允许外部进入的数据中断续传,并保证在此种情形下的数据正确性。

附图说明

图1为RAID核心计算装置的原理框图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步的说明。

实施例1

数字异或逻辑的特性是:相同得0,不同得1,任意数与0异或得到本身,与1异或得到相反。因此我们拿之前参与异或的其他项与之前的异或结果来做异或运算则可找回当前丢失的值。具体操作:在program数据后亦将经由本装置得到的异或结果存储在flash当中;在找回数据时,首先读出之前相关的数据(即参与异或的其他项,由raid级别决定)和之前异或结果,再经过异或操作恢复出丢失数据。

利用异或操作的特性,本装置利用状态机、双口SRAM、异或运算单元以及地址累加器电路单元实现RAID核心计算。

如图1所示,本实施例公开的SSD主控中的RAID核心计算装置包括状态机、计数器、写地址累加器、读地址累加器、异或运算单元、D1到D6六组寄存器和一片双口SRAM。各模块的作用具体如下:

状态机包含IDLE、HDSHK、LDEN、DELAY、LOAD、RDEN、CALC和PIPE一共8个状态。IDLE是空闲状态,HDSHK是本模块与外部模块的握手状态,LDEN是等待数据开始进入状态,DELY是延时一拍状态,LOAD是持续往SRAM写数状态,RDEN是读使能状态,CALC是第一笔异或计算状态,PIPE是持续读写SRAM、持续异或计算的状态。

计数器负责记录循环次数,当完成指定次数后,反馈给状态机,使其回到IDLE状态。

写地址累加器负责在LOAD和PIPE状态时累加写地址,送给SRAM的写地址端口。

读地址累加器负责在CALC和PIPE状态时累加读地址,送给SRAM的读地址端口

异或运算单元负责异或运算,即将从SRAM中读回的上一轮异或结果与从输入端口新进入的数据进行异或得到新的中间异或结果。

D1负责将输入数据(data_in)寄存一拍,D2负责将异或运算单元得到的结果寄存一拍,D1和D2保证了异或逻辑单元有足够的时序裕量(time slack);D3和D4是输入数据有效信号(data_in_vld)的两级寄存,间接给了SRAM的输入写使能信号(wr_en),保证了只有有效数据才能写入SRAM;D5和D6是last信号的两级寄存,last信号表示进数结束,两拍延时后反馈给状态机并输出,表示此***作结束。

双口SRAM负责暂存异或运算的中间结果。

具体的,状态机的输入连接clk、rst、start、req、ack、first信号,start信号是IDLE状态的控制信号,start信号拉高时,循环次数最初原始值传输至计数器中,状态机从IDLE状态进入HDSHK状态;req信号是HDSHK状态的控制信号,req信号拉高时,将ack反馈信号拉高,完成握手;first信号是LDEN状态的控制信号,外部first信号拉高时,状态机从LDEN状态进入DELY状态。clk、rst分别是时钟、复位信号。

工作时,状态机输出读使能信号和写使能信号至双口SRAM,计数器连接初始循环次数并根据数据处理轮数进行递减操作,并将递减后的计数值传递至状态机;写地址累加器连接写初始地址并根据写数据拍数进行累加得出实时写地址,并将实时写地址发送至双口SRAM;读地址累加器连接读初始地址并根据读数据拍数进行累加得出实时读地址,并将实时读地址发送至双口SRAM。第一轮读写操作时,外部数据经过寄存器D1、D2的两拍寄存后写入双口SRAM,第二轮至最后一轮读写操作时,外部数据经过寄存器D1后与上轮读出数据进行异或计算后经过寄存器D2的一拍寄存写入双口SRAM,同时从双口SRAM读出数据。输入数据有效信号经过寄存器D3、D4的两级寄存并在值为低时拉低写使能信号,last信号依次进入寄存器D5、D6进行两级寄存。

实施例2

本实施例公开一种SSD主控中的RAID核心计算方法,本方法实施例1所述RAID核心计算装置,具体包括以下步骤:

状态机在IDLE状态:探测到外部的start信号拉高,把循环次数load到计数器当中。状态机进入HDSHK状态。

2. 状态机在HDSHK状态:探测到外部的req信号拉高并将ack反馈信号拉高,完成握手。根据计数器是否为循环次数初始值决定进入LDEN还是RDEN状态。循环的第一轮(循环次数为初始值的情况)是进入LDEN状态,继而进入DELY和LOAD状态,因为第一轮只需向SRAM的写数据;循环的第二轮到最后一轮(循环次数非初始值的情况)都是进入RDEN状态,继而进入CALC和PIPE状态。包括对双口SRAM的同时读写操作。因是第一轮,状态机进入LDEN状态。

3. 状态机在LDEN状态:等待外部first信号拉高,表示开始进入有效数据。状态机进入DELY状态。

4. 状态机在DELY状态:将初始地址加载到写地址累加器中。状态机进入LOAD状态。LDEN和DELY两个状态还起了延时两拍的作用。

5. 状态机在LOAD状态:将SRAM的wr_en信号拉高;输入数据经过了D1D2两拍延时,被存入到SRAM中写地址累加器所指向的地址。正常流水时写地址累加器持续累加,外部数据(data_in)连续进入,wr_en信号持续为高。流水中断时(外部data_in_vld信号为低),data_in_vld信号经过D3D4延时两拍,使得写地址累加器停止累加,并拉低wr_en信号,SRAM停止写入。流水继续时,wr_en信号再拉高,写地址累加器继续累加。直至检测到经过D5D6延时两拍的last信号拉高,表示第一轮数据全部load到了SRAM当中。计数器减1表示完成1轮数据处理。状态机回到HDSHK状态。

6. 状态机在HDSHK状态:探测到外部的req信号拉高并将ack反馈信号拉高,完成握手。根据计数器是否为初值决定进入LDEN还是RDEN状态。因是第二轮,状态机进入RDEN状态。

7. 状态机在RDEN状态:将SRAM的rd_en信号拉高;将初始地址加载到读地址累加器;等待外部first信号拉高,表示开始进入有效数据。状态机进入CALC状态。

8. 状态机在CALC状态: SRAM中的读出数据和经由D1延时一拍的外部数据(data_in)进入异或运算单元得到异或结果,将异或结果存入D2中;将初始地址加载到写地址累加器;仍将SRAM的rd_en信号拉高;将读地址累加器进行加1操作。状态机进入PIPE状态。

9. 状态机在PIPE状态:将SRAM的wr_en信号拉高;将D2中的异或结果写入到SRAM中写地址累加器所指向的地址;将写地址累加器进行加1操作;仍将SRAM的rd_en信号拉高;将读地址累加器进行加1操作。正常流水时读写地址累加器持续累加,外部数据(data_in)连续进入,rd_en和wr_en信号持续为高。流水中断时(外部data_in_vld信号为低),data_in_vld信号经过D3延时一拍使得读地址累加器停止累加,再经过D4延时拍拍使得写地址累加器停止累加以及拉低wr_en信号,停止写SRAM。流水继续时,wr_en信号再拉高,读写地址累加器都继续累加。直至检测到经过D5D6延时两拍的last信号拉高,表示此轮数据全部与上轮数据异或完成并将结果load到了SRAM当中。计数器减1表示完成1轮数据处理。如果计数器记录全部循环完成,则状态机回到IDLE状态,否则状态机回到HDSHK状态。

10. 循环上述步骤6到步骤9直至回到IDLE状态。

以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据包传输装置及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!