CN112347003B - 一种高效的闪存颗粒微码控制方法 - Google Patents
一种高效的闪存颗粒微码控制方法 Download PDFInfo
- Publication number
- CN112347003B CN112347003B CN202011355213.8A CN202011355213A CN112347003B CN 112347003 B CN112347003 B CN 112347003B CN 202011355213 A CN202011355213 A CN 202011355213A CN 112347003 B CN112347003 B CN 112347003B
- Authority
- CN
- China
- Prior art keywords
- instruction
- module
- data
- microcode
- sends
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 12
- 239000002245 particle Substances 0.000 title claims abstract description 10
- 239000008187 granular material Substances 0.000 claims description 20
- 238000010586 diagram Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
Abstract
本发明涉及一种高效的闪存颗粒微码控制方法,其包括以下步骤:将微码指令集设置成包括发送命令字指令、闪存颗粒数据写入指令、闪存颗粒数据读取指令、写寄存器指令、跳转指令、延时指令、比较指令、任务切换指令、复制指令、基本运算操作指令、加载寄存器数据指令、以及结束指令;固件发送模块描述符给数据控制模块;所述数据控制模块通过所述描述符获取用于微码执行的第一指针;微码控制模块根据所述第一指针依次执行指令,直到遇到所述结束指令,结束当前操作。
Description
技术领域
本发明涉及闪存控制器技术领域,特别涉及一种高效的闪存颗粒微码控制方法。
背景技术
为了适配各个厂家的闪存颗粒,很多存储控制器都会使用微码控制产生适配该闪存颗粒的时序,一般主要控制包括命令字段的字节数,命令字以及每个字节之间的延时等,微码本身一般不会参与数据调度。
现在闪存颗粒的时序产生逻辑有的是直接用通用的CPU完成,这样CPU的开销太大,大部分是用硬件自定义的微码实现,在硬件实现的微码控制逻辑中一般只用于产生闪存颗粒适配的时序,而其他的操作比如数据调度,查询完成状态等要么是软件控制的,要么是固定的硬件模块控制,如果使用软件控制会加大CPU的负担,硬件固定控制不太灵活。
图1示出了现有技术中的一种闪存颗粒控制模块的结构示意图。如图1所示,以编程流程为例,固件发送模块指令给数据控制模块,数据控制模块解析指令后来做下一步操作,解析数据缓存,检查数据缓存的状态,数据准备好以后通知固件,然后固件根据需要发送微码指针给闪存控制单元,闪存控制单元根据微码指针来执行一段微码,生成闪存颗粒编程所需要的时序,然后固件等待一段时间以后再发送轮训状态的微码,等待一个编程命令的结束。
发明内容
针对现有技术的不足,本发明公开了一种高效的闪存颗粒微码控制方法,其中采用非通用CPU硬件实现的可编程的微码来控制除闪存颗粒时序相关的其他硬件模块,既可以减小CPU的负担,又可以保持灵活性。
具体而言,本发明涉及一种高效的闪存颗粒微码控制方法,其包括以下步骤:
将微码指令集设置成包括发送命令字指令、闪存颗粒数据写入指令、闪存颗粒数据读取指令、写寄存器指令、跳转指令、延时指令、比较指令、任务切换指令、复制指令、基本运算操作指令、加载寄存器数据指令、以及结束指令;
固件发送模块描述符给数据控制模块;
所述数据控制模块通过所述描述符获取用于微码执行的第一指针;
微码控制模块根据所述第一指针依次执行指令,直到遇到所述结束指令,结束当前操作。
其中,所述指令由32bit数据组成。
其中,所述23bit数据中的低4比特被设置用于指示所述指令的类型。
其中,所述指令中的bit数据由硬件完成。
进一步地,所述数据控制模块将解析出来的指令发送给取指模块,并将数据完成状态发送给执行模块;
硬件模块在数据缓存器准备好后将预定寄存器设置为1;
所述取指模块将收到的所述指令发送给译码模块,所述译码模块在解析到比较指令后,将解析信息发送给所述执行模块;
所述执行模块根据来自所述译码模块的解析信息判断是否准备好;
所述取指模块在获取所述比较指令后,继续获取下一条闪存颗粒数据写入指令;
所述译码模块解析所述闪存颗粒数据写入指令的信息,并将解析信息发送给所述执行模块;
所述执行模块将数据从数据缓存器转移到闪存颗粒;
所述取指模块获取任务切换指令,并将其发送给译码模块;
所述译码模块解析所述任务切换指令的信息,并将解析信息发送给所述执行模块;
所述执行模块自动执行轮询状态微码,直到查询到编程状态并送回数据控制模块。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需使用的附图作简单地介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图来获得其他的附图。
图1示出了现有技术中的一种闪存颗粒控制模块的结构示意图;
图2示出了根据本发明的闪存颗粒控制模块的结构示意图。
具体实施方式
在下文中,本发明的示例性实施例将参照附图来详细描述。下面的实施例以举例的方式提供,以便充分传达本发明的精神给本发明所属领域的技术人员。因此,本发明不限于本文公开的实施例。
图2示出了根据本发明的闪存颗粒控制模块的结构示意图。
在本发明的闪存颗粒微码控制方法中,将微码指令集设置成包括以下12种指令:发送命令字(OPC_SEND_CMD_ADDR)、闪存颗粒数据写入(OPC_NAND_DATA_WR)、闪存颗粒数据读取(OPC_NAND_DATA_RD)、写寄存器(OPC_WR_REG)、跳转(OPC_JUMP)、延时(OPC_DELAY)、比较(OPC_COMPARE)、任务切换(OPC_TS)、复制(OPC_COPY)、基本运算操作(OPC_OP)、加载寄存器数据(OPC_LOAD)、以及结束(OPC_END)。其中,每个指令由32bit数据组成,其中低4比特用来指示指令的类型,表示是指令集里面的哪一种指令。
其中,发送命令字(OPC_SEND_CMD_ADDR)、闪存颗粒数据写入(OPC_NAND_DATA_WR)、闪存颗粒数据读取(OPC_NAND_DATA_RD)等指令的定义可以如下表所示:
在本发明中,指令里面所有bit的解析全部由硬件独立完成,由此提高效率。
以编程流程为例,固件发送模块描述符给数据控制模块,数据控制模块通过描述符拿到微码执行的首指针,即操作的第一个指令,接下来微码控制模块会根据首指针依次执行指令,直到遇到OPC_END,表示当前的操作结束。其中,编程流程可以如下:
数据控制模块将解析出来的指令发送到取指模块,同时将数据完成状态发送给执行模块,数据缓存器准备好后,硬件模块会将特定的寄存器设置为1。
取指模块将取到的指令送到译码模块,译码模块解析到OPC_COMPARE以后将解析的信息发送给执行模块。
执行模块通过译码模块的信息来执行判断是否准备好。
取指模块取完OPC_COMPARE的指令后会继续取下一条指令OPC_NAND_DATA_WR。
译码模块解析OPC_NAND_DATA_WR的指令信息发送给执行模块。
执行模块会执行数据从数据缓存器搬到闪存颗粒的操作。
取指模块会取到OPC_TS的指令,发送给译码模块,译码解析出对应的信息后发送给执行模块。
执行模块会在硬件的后台自动执行轮询状态的微码,直到查询到编程状态送回给数据控制模块。
在本发明的控制方法中,整个过程不需要CPU参与,减少CPU的开销,同时由于是微码控制的,什么时候执行对应的微码都是可以配置的。比如调换上述步骤的顺序(如果有必要),在上述步骤中插入新的步骤,只要是硬件支持的指令都是可以的,非常灵活。
在本发明中,微码指令可以参与数据调度以及自动查询完成状态等其他操作;且微码由于都是硬件实现,可以极大的减少CPU的开销,提升闪存颗粒的读写性能,控制器面积也有所减小功耗也会相应减少;此外,本发明的微码指令由于数据调度等操作的执行顺序和指令数据都是可配置的,可以将数据调度等操作变得比一般的硬件实现更加灵活。
尽管前面结合附图通过具体实施例对本发明进行了说明,但是,本领域技术人员容易认识到,上述实施例仅仅是示例性的,用于说明本发明的原理,其并不会对本发明的范围造成限制,本领域技术人员可以对上述实施例进行各种组合、修改和等同替换,而不脱离本发明的精神和范围。
Claims (1)
1.一种高效的闪存颗粒微码控制方法,其包括以下步骤:
将微码指令集设置成包括发送命令字指令、闪存颗粒数据写入指令、闪存颗粒数据读取指令、写寄存器指令、跳转指令、延时指令、比较指令、任务切换指令、复制指令、基本运算操作指令、加载寄存器数据指令、以及结束指令;
固件发送模块描述符给数据控制模块;
所述数据控制模块通过所述描述符获取用于微码执行的第一指针;
微码控制模块根据所述第一指针依次执行指令,直到遇到所述结束指令,结束当前操作;
所述指令由32bit数据组成;
所述32bit数据中的低4比特被设置用于指示所述指令的类型;
所述指令中的bit数据由硬件完成;
所述数据控制模块将解析出来的指令发送给取指模块,并将数据完成状态发送给执行模块;
硬件模块在数据缓存器准备好后将预定寄存器设置为1;
所述取指模块将收到的所述指令发送给译码模块,所述译码模块在解析到比较指令后,将解析信息发送给所述执行模块;
所述执行模块根据来自所述译码模块的解析信息判断是否准备好;
所述取指模块在获取所述比较指令后,继续获取下一条闪存颗粒数据写入指令;
所述译码模块解析所述闪存颗粒数据写入指令的信息,并将解析信息发送给所述执行模块;
所述执行模块将数据从数据缓存器转移到闪存颗粒;
所述取指模块获取任务切换指令,并将其发送给译码模块;
所述译码模块解析所述任务切换指令的信息,并将解析信息发送给所述执行模块;
所述执行模块自动执行轮询状态微码,直到查询到编程状态并送回数据控制模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011355213.8A CN112347003B (zh) | 2020-11-26 | 2020-11-26 | 一种高效的闪存颗粒微码控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011355213.8A CN112347003B (zh) | 2020-11-26 | 2020-11-26 | 一种高效的闪存颗粒微码控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112347003A CN112347003A (zh) | 2021-02-09 |
CN112347003B true CN112347003B (zh) | 2024-05-14 |
Family
ID=74364910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011355213.8A Active CN112347003B (zh) | 2020-11-26 | 2020-11-26 | 一种高效的闪存颗粒微码控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112347003B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578234B (zh) * | 2023-04-27 | 2023-11-14 | 珠海妙存科技有限公司 | 闪存访问系统及方法 |
CN116185892B (zh) * | 2023-04-27 | 2023-07-21 | 珠海妙存科技有限公司 | 闪存控制器及其访问闪存颗粒的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0067556A2 (en) * | 1981-05-22 | 1982-12-22 | Data General Corporation | Digital data processing system |
CN1488105A (zh) * | 2001-01-31 | 2004-04-07 | �Ҵ���˾ | 控制数据处理系统间经由存储器的数据流的方法和装置 |
CN102902644A (zh) * | 2012-09-28 | 2013-01-30 | 忆正科技(武汉)有限公司 | 一种闪存控制器以及闪存控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100869675B1 (ko) * | 2007-02-05 | 2008-11-21 | 지인정보기술 주식회사 | 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법 |
-
2020
- 2020-11-26 CN CN202011355213.8A patent/CN112347003B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0067556A2 (en) * | 1981-05-22 | 1982-12-22 | Data General Corporation | Digital data processing system |
CN1488105A (zh) * | 2001-01-31 | 2004-04-07 | �Ҵ���˾ | 控制数据处理系统间经由存储器的数据流的方法和装置 |
CN102902644A (zh) * | 2012-09-28 | 2013-01-30 | 忆正科技(武汉)有限公司 | 一种闪存控制器以及闪存控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112347003A (zh) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112347003B (zh) | 一种高效的闪存颗粒微码控制方法 | |
CN110634530B (zh) | 芯片的测试系统和测试方法 | |
US10552047B2 (en) | Memory system | |
US9411521B2 (en) | Method and apparatus for improving sequential memory read preformance | |
CN101303884B (zh) | 与非型闪存控制器和读写控制系统及方法 | |
US7836382B2 (en) | Bufferless writing of data to memory | |
CN102609222B (zh) | 基于命令描述符的闪存控制方法 | |
US20180068734A1 (en) | Methods for read retries and apparatuses using the same | |
CN109669729A (zh) | 一种处理器的启动引导方法 | |
US8856497B2 (en) | Central processor for memory tag | |
KR100829788B1 (ko) | 커맨드 디코딩 시스템, 플래시 메모리 커맨드 디코딩시스템 및 이를 이용한 방법 | |
JPH1078889A (ja) | マイクロコンピュータ | |
US20090106509A1 (en) | Memory system and method of driving the same | |
US20030023836A1 (en) | Shadow register array control instructions | |
CN115586867B (zh) | NVMe控制器 | |
US20090198876A1 (en) | Programmable Command Sequencer | |
TWI762908B (zh) | 串接式擴增裝置及包含其之串接式系統 | |
US20030126484A1 (en) | Reduced power option | |
TWI716909B (zh) | 記憶體控制系統及操作記憶體控制系統的方法 | |
US8166228B2 (en) | Non-volatile memory system and method for reading and storing sub-data during partially overlapping periods | |
US20120124272A1 (en) | Flash memory apparatus | |
CN109086003B (zh) | 降低集成电路功耗的方法及其介质接口控制器 | |
US7272680B2 (en) | Method of transferring data between computer peripherals | |
KR20080002419A (ko) | n비트의 CPU 및 이를 이용한 데이터 버스트 리드 방법 | |
CN117043747A (zh) | 用于促进高效的硬件-固件交互的装置、系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |