CN102648456B - 存储器装置及方法 - Google Patents
存储器装置及方法 Download PDFInfo
- Publication number
- CN102648456B CN102648456B CN201080041997.5A CN201080041997A CN102648456B CN 102648456 B CN102648456 B CN 102648456B CN 201080041997 A CN201080041997 A CN 201080041997A CN 102648456 B CN102648456 B CN 102648456B
- Authority
- CN
- China
- Prior art keywords
- memory block
- memory
- place
- address
- crossing
- 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.)
- Expired - Fee Related
Links
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
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
- Executing Machine-Instructions (AREA)
Abstract
公开了一种具有存储器模块(16)的装置,存储器模块包括第一存储器块(22)、第二存储器块(23)、可编程存储位置、和存储器控制器(26)。非易失性存储器的第一存储器块(22)包括多个字位置和耦合到存储器控制器(26)的第一访问端口的地址解码器(201)。地址解码器(201)响应于经由第一访问端口接收地址信息选择多个字位置中的一个用于访问。第二存储器块(23)包括多个字位置和耦合到存储器控制器(26)的第二访问端口的地址解码器(201)。地址解码器(201)响应于经由第二访问端口接收地址信息选择多个字位置中的一个用于访问。存储器控制器(26)包括输入,耦合到可编程存储位置(25),并响应于具有第一值的可编程位置信息,将第一存储器块(22)的第一部分和第二存储器块(23)的第一部分作为交叉存储器、将第一存储器块(22)的第二部分作为非交叉存储器、并将第二存储器块(23)的第二部分作为非交叉存储器进行访问。
Description
技术领域
本公开一般地涉及电子装置以及访问存储器的方法。
背景技术
诸如包括基于指令的处理装置的集成电路的各种数据处理装置访问交叉存储器阵列,与非交叉存储器可达到的访问速率相比,交叉存储器阵列可以提供更高的访问速率。然而,因为以其来访问组织成交叉存储器的存储器阵列从而提高访问速度的管线(pipeline)特性,因而不能以边读边写的方式对组织成交叉存储器的存储器阵列进行访问。为了提供边读边写的存储器能力,与能够以边读边写的方式访问的交叉存储器分离地提供了另外的存储器阵列。
发明内容
根据本发明的一个方面,提供了一种电子装置,包括:存储器模块,包括第一存储器块、第二存储器块、可编程存储位置和存储器控制器;所述第一存储器块包括多个数据单元位置和耦合到所述存储器控制器的第一访问端口的地址解码器,所述地址解码器响应于经由所述第一访问端口接收地址信息而选择所述多个数据单元位置中的一个用于访问;所述第二存储器块包括多个数据单元位置和耦合到所述存储器控制器的第二访问端口的地址解码器,所述地址解码器响应于经由所述第二访问端口接收地址信息而选择所述多个数据单元位置中的一个用于访问;所述可编程存储位置存储配置信息;以及所述存储器控制器包括耦合到所述可编程存储位置的控制端口,所述存储器控制器基于所述可编程配置信息而将所述第一存储器块的第一部分和所述第二存储器块的第一部分作为交叉存储器、作为非交叉存储器、或作为交叉存储器和非交叉存储器的混合进行访问,其中,所述配置信息包括指示要作为交叉存储器访问的所述第一存储器块的所述第一部分的大小的值。
根据本发明的另一个方面,提供了一种方法,包括:从可编程位置读取值,所述值指示成为交叉存储器和非交叉存储器的存储器的分区的大小;基于所述可编程位置处的所述值,将集成电路上的第一存储器块的第一部分和所述集成电路上的第二存储器块的第一部分分区为交叉存储器和非交叉存储器的混合;以及基于所述可编程位置处的所述值,将所述第一存储器块的所述第一部分和所述第二存储器块的所述第一部分作为交叉存储器和非交叉存储器的混合进行访问。
附图说明
图1示出了根据特定实施例的装置的框图;
图2和图3示出了根据特定实施例的基于配置指示符的图1的存储器模块的具体分区;
图4示出了根据特定实施例的图1的存储器模块的框图;
图5示出了根据特定实施例的图4的闪存块的框图;
图6示出了根据特定实施例的图5的存储器控制器的框图;
图7示出了根据特定实施例的图6的闪存接口模块的框图;
图8示出了根据特定实施例的方法的流程图;
图9示出了根据特定实施例的存储器模块的具体分区;
图10和图11示出了根据特定实施例的访问请求的时序图;
图12-16示出了根据特定实施例的各种方法的流程图;以及
图17示出了用于同时的读取请求和写入请求的时序图。
具体实施方式
公开了一种具有存储器模块的装置,其可配置为支持基于配置指示符而改变大小的交叉分区和非交叉分区。参照图1-16将会更好地了解特定实施例。
图1示出了包括集成电路装置101的装置10。根据特定实施例,集成电路装置101包括一个或多个功能模块,其包括可以被集成在公共管芯中的数据处理器11、数据处理器12、数据处理器13、输入/输出(I/O)模块14、存储器模块15、存储器模块16、总线18和总线19。在操作期间,总线18在模块11-16中的每个之间传递信息。总线19与总线18分离,并且在模块11-14和16之间传递信息。为了便于提及,本文中将集成电路装置101称为片上系统(SOC)。
装置10是专用装置,诸如被设计为实现特定应用或通用应用的便携式或非便携式计算装置。例如,装置10可以包括手持式通信装置、数据联网装置、台式计算装置、手持式计算装置等及其组合。数据处理器11-13可以是基于指令的数据处理器,其接收并执行来自存储器的指令,诸如用户所提供的应用程序指令,以实现特定应用。例如,可以从集成在SOC上的存储器(例如,存储器15和16)以及从SOC外部的可以经由I/O模块14访问的存储器(未示出)接收这些指令。存储器模块15和16可以是易失性存储器或非易失性存储器。在本文所描述的特定实施例中,存储器模块15被视为非易失性存储器,可经由总线18对其进行读写,而存储器模块16被视为非易失性闪存,可经由总线18对其读取以及经由总线19对其写入。
存储器模块16包括存储器块22、存储器块23(存储器块22和23)、存储器控制器26、和可编程存储位置(storage location)25。存储器块22和23中每个均包括具有存储器的存储器阵列,所述存储器可由存储器控制器26基于存储在可编程存储位置25中的配置指示符而配置为非交叉存储器、交叉存储器、或者交叉存储器和非交叉存储器的组合。
图2示出了SOC 101的物理地址空间(被称为SOC地址空间200)的分区的特定实施例,该物理地址空间包括0x0-0xFFFF范围内的地址。利用SOC地址空间200的存储器模块16的物理地址空间(被称为存储器模块16地址空间并且被示出为包括地址0x00-0x1F)被映射到在0xY00-0xY1F范围内的SOC地址空间200,其中Y被称为“基地址”,表示与SOC地址地图内的存储器模块16的每个地址相关联的最高位。基地址Y可以是固定值或可编程值。为了便于示出,将图2所示的存储器模块16选为具有五位的地址,可以访问存储器模块16的32个字位置,但将了解的是,存储器模块16一般将包括更大的地址空间,能够访问超过32个与诸如位、字节、字、双字等数据单位相关联的位置。
在操作期间,存储器模块16的32个地址(即地址0x00-0x1f)本身基于可编程存储位置25处的配置指示符而被映射到存储器块22和23处的特定存储器位置,并且因而被视为存储器模块16的物理地址。因此,根据图2所示特定实施例,可编程存储位置25存储有配置指示符,所述配置指示符使存储器模块16的存储器控制器26将存储器模块16地址空间的32个地址转换(例如,映射)到存储器块22和23的32个相应的字位置,以实现两个非交叉存储器分区。具体而言,以存储器模块16的物理地址0x00-0x0F访问的16个存储器位置被映射到0x0-0xF地址范围内的存储器块22的16个字位置,以实现存储器模块16的一个非交叉分区,并且以存储器模块16的物理地址0x10-0x1F访问的16个存储器位置被映射到0x0-0xF地址范围内的存储器块23的16个字位置,以实现存储器模块16的另一个非交叉分区。因此,如图2中在与地址0xY00相关联的地址空间200的位置处示出的标志符0h(0)所表示的,SOC地址0xY00被映射到存储器模块16地址0x00,该地址被映射到存储器块22的地址0x0,其中(0)表示存储器块22的存储器位置被映射到SOC地址,0xY00和标志符的0h表示被映射到该位置的存储器块22的特定存储器位置的十六进制地址。类似地,如SOC地址空间200的地址0xY10处的标志符0h(1)所表示的,SOC地址位置0xY10被映射到存储器块23的地址0x0,其中(1)表示存储器块23的存储器位置被映射到该SOC地址,并且0h表示被映射到该位置的存储器块23的特定存储器位置的十六进制地址。
图3示出了基于在可编程存储位置25处的不同的配置指示符的到存储器块22和23的SOC地址空间200映射。根据图3所示特定实施例,可编程存储位置25存储有配置指示符,该配置指示符使存储器模块16的存储器控制器26如下映射存储器模块16的存储器位置:存储器块22的16个存储器位置的第一部分(例如,前6个位置)被映射为存储器模块16地址范围为0x0-0x5的非交叉分区;存储器块23的16个存储器位置的第一部分(例如,前6个位置)被映射为存储器模块16地址范围为0x6-0xB的非交叉分区,并且其与和存储器块22相关联的非交叉存储器块的存储器模块16地址范围连续;存储器块22的16个存储器位置的第二部分和存储器块23的16个存储器位置的第二部分(例如,每个块的其余10个位置)被映射为存储器模块16地址范围为0x0C-0x1F的交叉分区。因此,SOC地址位置0xY00被映射到存储器块22的物理地址0x0(如标志符0h(0)所表示的),SOC地址位置0xY06被映射到存储器块23的物理地址0x0(参见标志符0h(1)),SOC地址位置0xY0C被映射到存储器块22的物理地址0x6(参见标志符6h(0)),并且SOC地址位置0xY0D被映射到存储器块23的物理地址0x6(参见标志符6h(0))。
图4示出存储器模块16的特定实施例,其包括被称为闪存块并且被标为FLASH BLOCK0的存储器块22、被称为闪存块并且被标为FLASH BLOCK1的存储器块23、存储器26、可编程存储位置25、和多路复用器27。总线18连接到存储器模块16的读取端口,其包括互连181、182和183。总线19连接到存储器模块16的写入端口WR。
存储器控制器26包括:读取端口,其接收读取请求,并且包括被标为RD_CTL的控制部分和被标为RD_ADDR的地址部分,其中该控制部分连接到互连181,并且该地址部分连接到互连182;写入端口,其被标为WR,以用于接收包括控制信息、地址信息和待存储的数据信息的写入请求;第一存储器块访问端口,其包括被标为ADD_0的第一部分、被标为CTL_0的第二部分、和被标为DATA_0的第三部分;第二存储器块访问端口,其包括被标为ADD_1的第一部分、被标为CTL_1的第二部分、和被标为DATA_1的第三部分;以及选择输出。
FLASH BLOCK0包括用于接收读取和写入请求的访问端口,并且包括连接到存储器控制器26的ADD_0的被标为ADDR_FB的第一部分、连接到CTL_0的被标为CTL_FB的第二部分、和连接到DATA_0的第三部分。
FLASH BLOCK1包括用于接收读取和写入请求的访问端口,并且包括连接到存储器控制器26的ADD_1的被标为ADDR_FB的第一部分、连接到CTL_1的被标为CTL_FB的第二部分、和连接到DATA_1的第三部分。FLASH BLOCK0和FLASH BLOCK1可以是彼此的相同实例。
多路复用器27包括连接到FLASH BLOCK0的DATA_FB的被标为DATA_0的数据端口、连接到FLASH BLOCK1的DATA_FB的被标为DATA_1的数据端口、连接到存储器控制器26的选择输出的选择输入、以及连接到互连187以提供在DATA_0和DATA_1其中之一处接收的信息的被标为DATA_OUT的数据端口。
可编程存储位置25可以是与SOC 101的编程模块相关联的寄存器、如稍后将更加详细描述的被映射到存储器模块16的地址空间的存储位置、或者可由存储器控制器26访问的其他类型的存储位置。
图5示出可以表示FLASH BLOCK0和FLASH BLOCK1的闪存块20的实例。闪存块20包括:连接到ADD_x的地址端口ADDR_FB,ADD_x表示图4的存储器控制器26的访问端口ADD_0和ADD_1中任一个;连接到CTL_x的控制端口CTL_FB,CTL_x表示存储器控制器26的访问端口ADD_0和ADD_1中任一个;连接到DATA_x的数据端口DATA_FB,DATA_x表示多路复用器27的数据端口DATA_0和DATA_1中任一个;连接到ADDR_FB的地址解码模块201;连接到CTL_FB的控制模块202;感应放大器204;连接到DATA_FB的闪存阵列203;以及电荷泵205。
图6示出存储器控制器26的特定实施例,其包括闪存接口模块261和写寄存器262。写寄存器262包括寄存器,经由总线19对这些寄存器写入,以在存储器模块16处启动写入请求,例如,编程和擦除操作。闪存接口模块261包括从总线18接收读取请求的存储器控制器26的读取端口、从写寄存器262接收写入请求的被标为WR的写入端口、连接到FLASH BLOCK0的第一存储器块访问端口、以及连接到FLASH BLOCK1的第二存储器块访问端口。
根据特定实施例,在操作期间,闪存接口模块261具有下列特点:对于不同的存储器块的非交叉存储器的分区,支持正交的读取和写入请求;对于交叉存储器分区,例如对于包括FLASH BLOCK0和FLASHBLOCK1两者的存储器位置的分区,或者对于非交叉存储器分区,不支持正交的读取和写入,这是因为经由总线18一次接收一个读取请求,并且FLASH BLOCK0和FLASH BLOCK1由多路复用器27多路复用(图4)以共享连接到总线18的读取端口的公共数据部分;经由总线18对相同闪存块内的存储器位置进行的连续读取导致在读取请求(例如,第二读取请求)的读取周期中产生拖延时段(hold-off period),当对存储器模块16的不同的闪存块中的存储器位置进行连续读取时,在读取请求(例如,第一读取请求)的读取周期中不存在该拖延时段。
如本文中所使用的,关于支持对存储器模块的多个访问请求而使用的术语“正交”意指,没有对影响可以向存储器模块提出任一访问请求的时间的访问请求之间的相关时序加以考虑,并且存储器模块完成访问请求所需要花费的时间也不会基于接收其他访问请求的时间而发生改变。例如,从存储器块22读取信息的对存储器模块16的读取请求与向存储器块23写入信息的对存储器模块16的写入请求是正交的。因此,在此情形中,读取请求的结果被返回到请求装置的时间不受写入请求影响,与接收写入请求的时间无关。因此,由于闪存接口模块261可以同时对FLASH BLOCK0进行读取和对FLASH BLOCK1进行写入,所以对存储器模块16的不同的闪存块的读取和写入是正交的。
图7示出闪存接口模块261和写寄存器262的特定实施例。写寄存器262包括被标为R_WR_ADDR、R_WR_DATA、R_CMD、R_CMD_START和R_STATUS的寄存器。写寄存器262经由互连269而连接到闪存接口模块261的写入端口WR。闪存接口模块261包括地址转换器2611和控制模块2612。控制模块2612包括控制读取请求的读取控制模块和控制写入请求的写入控制模块。
地址转换器2611被连接以用于从包括RD_ADDR的端口、寄存器R_WR_ADDR、控制模块2612接收信息,并且被连接以用于提供信息到ADD_0、ADD_1以及控制模块2612。控制模块2612被连接以用于从包括RD_CTL、RD_DATA的端口、寄存器R_WR_DATA、寄存器R_CMD、寄存器R_CMD_START和寄存器R_STATUS的端口接收信息,并且提供信息到CTL_0、CTL_1、SEL、DATA_0、DATA_1和地址转换器2611。
在操作期间,控制模块2612将监视RD_CTL处的来自总线18的信息和在寄存器R_STATUS处的信息,以确定接收访问请求的时间,例如,在RD_CTL处的读取请求或者寄存器262处的写入请求。响应于接收到读取或写入请求,控制模块2612将与地址转换器2611通信,以经由ADD_0、CTL_0和SEL向FLASH BLOCK0提供访问请求,或者经由ADD_1、CTL_1和SEL向FLASH BLOCK1提供访问请求。在控制模块2612处可以从寄存器262接收的访问请求的示例包括:用于在存储器模块16处存储字的编程请求;用于擦除存储器模块16的特定扇区的擦除扇区请求;用于擦除存储器模块16的一系列扇区的擦除多个扇区请求;和用于擦除存储器模块16的所有扇区的完全擦除请求。控制模块2612将确定存储器模块16的存储器块的当前分区,并且基于所接收的访问请求而向FLASH BLOCK0和FLASH BLOCK1提出一个或多个访问请求。例如:在存储器模块16处接收的写入请求可以通过控制模块2612而被转换为对FLASH BLOCK1和FLASH BLOCK1其中之一的单个写入请求;当正在擦除的扇区被配置为非交叉存储器时,存储器模块16处的擦除扇区访问请求可以被转换为向FLASHBLOCK0和FLASH BLOCK1其中之一提出的单个擦除扇区请求,替代地,当正在擦除的扇区被配置为交叉存储器时,该擦除扇区请求可以被转换为两个擦除扇区访问请求,分别针对FLASH BLOCK0和FLASHBLOCK1中的每个;擦除一系列扇区或者擦除所有扇区的访问请求可以被转换为由控制模块2612向FLASH BLOCK0和FLASH BLOCK1中的每个提供的多个擦除扇区访问请求。
在读取操作期间,控制模块2612将使能地址转换器2611,以确定RD_ADDR处经由总线18接收的SOC地址当前是否被映射到存储器模块16,如果被映射,则地址转换器2611将基于存储在可编程存储位置25处的配置指示符来辨识SOC地址的存储器模块16地址部分是否被映射到FLASH BLOCK0或FLASH BLOCK1的存储器位置。此外,地址转换器2611还将存储器模块16地址转换为当前选择的闪存块的物理地址。将理解的是,使用SOC地址的基础地址部分来确定存储器模块16是否包含正在被访问的存储器位置,并且一旦确定存储器模块16包含正在被访问的存储器位置,SOC地址的基础地址部分就被忽略,以只允许SOC地址的与存储器模块16地址相对应的那个部分被地址转换器2611用于进一步转换。
地址转换器模块2611经由互连269向控制模块2612提供指示符,该指示符辨识存储器模块16的FLASH BLOCK0和FLASH BLOCK1中哪一个被映射到存储器模块16地址。如果控制模块2612确定所指定的闪存块可用于读取操作,例如,既没有同时对其进行访问,也没有同时对其他闪存块进行读取,则控制模块2612将经由CTL_0或CTL_1向所选择的存储器块提供适当的读取控制信号,并且经由ADD_0或ADD_1向所选择的存储器块提供经转换的物理地址。因此,当读取请求是针对FLASH BLOCK0时,经转换的物理闪存块地址将被提供到ADD_0且读取控制信号将被提供到CTL_0,当读取请求是针对FLASH BLOCK1时,经转换的物理闪存块地址将被提供到ADD_1且读取控制信号将被提供到CTL_1。
写入操作是通过经由总线19将写入请求信息存储到写入寄存器262来执行的。例如,将与写入请求相关联的存储器模块16地址存储在被标为R_WR_ADDR的寄存器处,把将要在程序写入请求期间被编程的数据存储在被标为R_WR_DATA的寄存器处,将用以控制写入请求的信息,诸如辨识例如编程或擦除写入请求的写入请求类型的信息,存储在被标为R_CMD的寄存器处,响应于将写入开始指示符存储在被标为R_CMD_START的寄存器处而在存储器模块16处启动实际的写入请求,并且将未决写入请求的状态存储在寄存器R_STATUS处。
响应于写入开始指示符在R_CMD_START处被断言,控制模块2612将使能地址转换器2611,以确定在寄存器R_WR_ADDR处经由总线19接收的SOC地址当前是否被映射到存储器模块16,如果被映射,则地址转换器将基于存储在可编程存储位置25处的配置指示符来辨识SOC地址的存储器模块16地址部分是否被映射到FLASHBLOCK0或FLASH BLOCK1处的存储器位置。此外,地址转换器2611还将存储器模块16地址转换为当前选择的闪存块的物理地址。地址转换器模块2611经由互连269向控制模块2612提供指示符,该指示符辨识存储器模块16的FLASH BLOCK0和FLASH BLOCK1中哪一个被映射到存储器模块16地址。如果控制模块2612确定所指定的正在被写入的闪存块可用于访问,例如,其没有同时被访问,则控制模块2612将经由CTL_0或CTL_1向所选择的存储器块提供适当的写入控制信号,并且经由ADD_0或ADD_1向所选择的存储器块提供经转换的物理地址,并且当该写入请求为程序写入请求时,经由DATA_0或DATA_1向所选择的存储器块提供存储在寄存器R_WR_DATA处的信息。
参照图8的流程图,将更好地理解根据特定实施例的地址转换器2611的操作。图8的流程图假定存储器模块16的闪存存储器位置如图9所示配置,其中闪存块122是存储器块22(FLASH BLOCK0)的特定实施例并且闪存块123是存储器块23的特定实施例(FLASHBLOCK1)。如图所示,闪存块122和闪存块123的每个的最上面部分可配置为非交叉存储器或交叉存储器,闪存块的最下面部分是不可配置的并且出于讨论的目的而假定是非交叉存储器。例如,FLASHBLOCK0包括X+1个扇区,在本文中被称为扇区BLOCK0(0)-BLOCK0(X),并且FLASH BLOCK1包括X+1个扇区,在本文中被称为扇区BLOCK1(0)-BLOCK1(X),其中,闪存块的扇区中的字位置的数目是可以通过单个擦除请求在闪存块处擦除的字位置的最小数目。如图所示,扇区BLOCK0(0)-BLOCK0(X-1)和BLOCK1(0)-BLOCK1(X-1)是可配置存储器位置,并且BLOCK0(X)和BLOCK1(X)是不可配置存储器位置。闪存块122和123在闪存模块处组合形成地址空间124。地址空间124的可配置部分基于配置指示符而以不同的方式映射到BLOCK0和BLOCK1的可配置存储器位置,而存储器模块16地址空间124的不可配置部分不依赖于配置指示符而以相同的方式映射到BLOCK0和BLOCK1的不可配置部分的存储器位置。
在图8的块301,在总线18处收到了映射到存储器模块16地址空间的SOC访问请求。与存储器模块16使用的SOC地址请求相关联的一部分地址被称为存储器模块16地址,其可以通过等式ADDR(MM)=ADDR[N:0](SOC)而从SOC地址例如(ADDR(SOC))确定,其中N+1为与存储器模块16的地址空间相关联的位的数目。例如,就图2和图3而言,N等于四(4)。在块301确定存储器模块16地址是否映射到存储器模块16的地址空间的可配置部分,并且如果存储器模块16地址不与存储器模块16的可配置存储器位置相关联,则流程前进至块311,否则,如果存储器模块16地址与可配置地址相关联,则流程前进至块302。例如,如果正在被访问的存储器模块16位置处于图9的扇区BLOCK0(0)-BLOCK0(X-1)或者BLOCK1(0)-BLOCK1(X-1)的其中之一,则在块301处将会确定存储器模块16地址映射到存储器模块16的可配置部分。
在块302处,基于配置指示符确定存储器模块16的闪存块的非交叉分区的大小(SIZE(FB,NON_INTERLEAVAED))。例如,具有诸如零(0)值或被断言的特定位这样的特定属性的配置指示符可以表明FLASH BLOCK0和FLASH BLOCK1的可配置部分中每个的零个扇区被映射为非交叉存储器,由此存储器模块16的配置可以被认为是非交叉存储器配置或者处于非交叉操作模式下。具有不同属性诸如一(1)值的配置指示符可以表明FLASH BLOCK0和FLASH BLOCK1的可配置部分中每个的一个扇区被映射为非交叉存储器,并且暗示FLASHBLOCK0和FLASH BLOCK1的可配置部分的其余[X-2]个扇区被映射为交叉存储器,由此存储器模块16的配置可以被认为是混合的非交叉和交叉存储器配置或者处于混合操作模式下。X-1的配置指示符可以表明FLASH BLOCK0和FLASH BLOCK1的可配置部分中每个的X-1个扇区(例如,所有可配置扇区)被映射为交叉存储器,因此没有FLASHBLOCK0和FLASH BLOCK1的可配置部分的扇区被映射为非交叉存储器,由此存储器模块16的配置可以被认为是交叉存储器配置或者处于交叉操作模式下。在另一个实施例中,配置指示符可以包括除将要作为非交叉存储器的扇区的数目之外的信息。将理解的是,配置信息包括与交叉存储器大小、非交叉或交叉存储器的地址范围等有关的信息。例如,配置指示符可以包括辨识存储器模块16地址空间内的交叉闪存的起始地址的信息。例如,0x0000的配置指示符可以表明交叉存储器在存储器模块16的物理地址0x0000处开始,例如,交叉存储器配置。配置指示符0x0010可以表明交叉存储器在存储器模块16的物理地址0x0010处开始,例如,混合配置。0xFFFF的配置指示符可以表明存储器模块16的整个可配置部分被配置为交叉存储器,例如,非交叉配置。
在块303处,确定辨识正在被访问的存储器位置的存储器模块16地址(ADDR(MM))是否大于由配置指示符定义的闪存块的非交叉部分的大小的两倍。如果大于,则确定存储器模块16地址正在访问存储器模块16的作为交叉存储器的可配置存储器位置,并且流程前进至块304,否则,如果存储器模块16地址小于或等于闪存块的非交叉部分的大小的两倍,则确定存储器模块16地址正在访问存储器模块16的作为非交叉存储器的可配置存储器位置,并且流程前进至块307。
在块304处,确定存储器模块16地址是奇数的还是偶数的。如果是奇数的,则流程前进至块305。如果是偶数的,则流程前进至块306。
在块305处,将存储器模块16地址ADDR(MM)转换为闪存块地址ADDR(FB),该地址被提供到FLASH BLOCK0,例如偶数的闪存块,以访问存储器字。通过使用存储器模块地址的上N位ADDR[N:1](MM),将存储器模块16地址ADDR(MM)转换为闪存块地址ADDR(FB),其中存储器模块16地址用N+1位表示。在块306处,将存储器模块16地址ADDR(MM)转换为闪存块地址ADDR(FB),该地址被提供到FLASH BLOCK1,例如奇数的闪存块,以访问存储器字。通过使用存储器模块地址的上N位ADDR[N:1](MM),将存储器模块16地址ADDR(MM)转换为闪存块地址ADDR(FB),其中存储器模块16地址用N+1位表示。
在块307处,响应于在块303处确定正在被访问的存储器位置被配置为非交叉存储器,确定存储器模块16地址ADDR(MM)是否大于闪存块的非交叉部分的大小。如果大于,则确定存储器模块16地址正在访问奇数的闪存块的非交叉位置,并且流程前进至块308,否则,如果存储器模块16小于或等于闪存块的非交叉部分的大小,则确定存储器模块16地址正在访问偶数的闪存块的非交叉位置,并且流程前进至块309。
在块308处,将存储器模块16地址ADDR(MM)转换为闪存块地址ADDR(FB),该地址被提供到偶数的闪存块,例如FLASH BLOCK0,以访问存储器字。通过将存储器块地址减去闪存块的非交叉分区的大小SIZE(FB,NON-INTERLEAVED)来转换存储器模块16地址。在块309处,将存储器模块16地址ADDR(MM)转换为闪存块地址ADDR(FB),该地址被提供到奇数的闪存块,例如FLASH BLOCK1,以访问存储器字。块309处的转换使闪存块地址与存储器模块地址相同。
在块311处,响应于确定当前SOC地址与存储器模块16的不可配置存储器位置相关联,地址转换器261以固定方式转换SOC地址,以访问FLASH BLOCK0和FLASH BLOCK1其中之一。不同于对存储器模块16的可配置存储器位置的转换,与不可配置存储器位置相关联的特定存储器模块16地址将被转换为闪存块的特定物理地址,而不依赖于配置指示符。存储器模块16的不可配置部分可以包括非交叉存储器,其存储存储器模块16使用的信息。例如,存储器模块16的非交叉部分可以包括可编程存储位置25,其存储配置指示符。流程前进至块312,以在流程返回到块301之前等待映射到存储器模块16地址空间的下一个SOC地址。
对由闪存接口模块261提供到FLASH BLOCK0和FLASHBLOCK1的访问请求解码,以访问其相应的存储器位置。在操作期间,参照图5,控制模块202将监视CTL_FB处来自存储器控制器261的信息,以确定接收访问请求的时间。响应于接收到访问请求,控制模块202将与闪存块20的其他部分通信,以访问闪存阵列203的存储器位置。在控制模块2612处可以接收的访问请求的示例包括:读取请求;编程请求,其基于DATA_FB处的信息将DATA_FB处的信息编程到闪存阵列203处的字位置;和擦除扇区请求,其擦除闪存阵列203处的特定扇区。在具体实施例中,闪存块的控制模块202不接收或者解码用于擦除访问超过一个扇区的访问的访问请求。而是,存储器模块16的存储器控制器26将响应于接收到这样的请求而提供多个擦除扇区请求。
地址解码模块201连接到ADD_FB,以解码接收的闪存块地址,该地址已通过地址转换器2611转换,并且与闪存块20的其他模块通信,以访问闪存阵列203的字位置,从而访问闪存阵列203的特定存储器位置。地址解码器201可以包括x解码器、y解码器、以及对应的多路复用器。
电荷泵205与闪存块20的其他模块通信,以编程和擦除闪存阵列203的字位置。
感应放大器与闪存块20的其他模块通信,以将存储在字位置的信息提供到DATA_FB。
参照图10的时序图,将更好地理解存储器模块16的操作,图10示出对存储器模块16的不同的存储器块的两个连续的读取请求的时序,其中假定存储器模块16如图2所示配置。当在启动第二读取请求的时间相对于第一读取请求之间没有空闲时间时,读取请求与紧接在之前的读取请求连续。在本示例中,第二读取请求是在第一读取请求之后一个时钟周期启动的。注意,图10的时序图没有示出与读取请求相关联的每个控制信号,而是示出了时钟信号(参见被标为CLK的信号401)、总线18上地址的地址信息(参见被标为SOC_ADDR的信号402)、响应于该地址信息而返回到总线18的信息(参见被标为SOC_DATA的信号404)和由存储器模块16提供到总线18的表明读取操作正处于迟延的信息(参见被标为HOLD_OFF的信号403)之间的关系。
在时间T1,通过将地址和适当的控制信号驱动到总线18上来启动被标为RC1的读取周期。例如,在T1的上升沿之前,从诸如数据处理器13的请求装置将0xY00的SOC地址提供到总线18,其中,Y表示SOC地址空间内存储器模块16的基地址,且SOC地址的后面部分“00”表示SOC地址的对应于存储器模块16地址的那些位,例如,被用以辨识存储器模块16的特定字位置的位。参照图2,地址0xY00映射到存储器模块16的存储器块22,如靠近地址0xY00的标志符(0)所表示的。在时间T2,启动与读取请求RC1连续的被标为RC2的第二读取周期,以访问存储器模块16的存储器块23处的SOC地址0xY10,如图2中靠近地址0xY10的标志符(1)所表示的。与读取周期RC2相关联的读取请求被视为与和读取周期RC1相关联的读取连续,这是因为在读取周期RC1的开始和读取周期RC2的开始之间没有未使用的时间段。换言之,不可能更快地将第二读取请求提供到总线18。因为与和读取周期RC1相关联的地址相比,与读取周期RC2相关联的地址针对存储器模块16的不同的存储块,所以对于读取请求中每一个而言,例如,在中间没有插入未使用的时钟周期的情况下,在每个相应的读取请求读取开始之后一段固定的时间(例如,两个时钟周期),所请求的信息被返回到总线18。换言之,图10所示的访问时间表示最佳情况下的访问时间。因此,在时间T3返回与地址0xY00相关联的数据,并且在时间T4返回与地址0xY10相关联的数据。
图11示出两个连续的读取请求,这两个读取请求除了配置指示符不同以外都与图10的读取请求相同,由此存储器模块16如图3所示配置,并且存储器模块16被分区为非交叉存储器和交叉存储器。在图11的第一读取周期RC1期间,SOC地址0xY00被转换为存储器模块16的相同位置,如通过对图2和图3的与地址0xY00相关联的指示符进行比较而表示的,其对于两种存储器配置而言都为0h(0)。然而,在图11的第二读取周期RC2期间,SOC地址0xY10被转换为存储器模块16的不同的位置。具体而言,对于图3示出的配置,与地址0xY10相关联的存储器位置指示符为8h(0),其表明正在访问存储器块22的地址0x8,而相反,如图2所示,访问的是存储器块23的地址0x0。因为图3的连续的读取周期RC1和RC2访问相同存储器块,例如存储器块22的字位置,所以在时间T2期间由存储器模块16断言信号HOLD_OFF,以向请求装置表明该访问请求将需要额外的时间,例如,该访问请求将会被迟延,直至在HOLD_OFF信号被求反之后的下一个时钟周期的上升沿为止。如图1所示,HOLD_OFF信号产生一个时钟周期的拖延持续时间,从而导致在读取周期RC2开始之后三个时钟周期才提供用于读取周期RC2的数据,并且读取周期RC2比读取周期RC1长一个时钟周期。将理解的是,在特定实施例中示出,相同时间在存储器模块16处不能接收多个读取请求,因此这些读取请求不能是同时的。此外,对相同存储器块的连续的读取请求还会导致拖延时段,而对不同的存储器块的连续的读取请求不会导致拖延时段。因此,将理解的是,读取请求不是相互正交的。
将理解的是,因为连续的地址转换为对相同的存储器块模块的访问请求以用于非交叉存储器访问,所以,当连续的读取请求针对连续的地址时,对存储器模块16的被分区为非交叉存储器的位置的连续的读取请求将产生图11所示的时序。反之,因为连续的地址转换为对不同的存储器块模块的访问请求以用于非交叉存储器访问,所以,当连续的读取请求针对连续的地址时,对存储器模块16的被分区为交叉存储器的位置的连续的读取请求将产生图10所示的时序。
图12示出了根据本公开内容的特定实施例的方法。在块321处,基于配置指示符确定包括第一存储器块和第二存储器块的存储器模块的分区。配置指示符可以是存储在可编程存储位置的值。配置指示符可以表明存储器模块是否被配置为处于非交叉存储器操作模式、交叉存储器操作模式、或者混合存储器操作模式中,其中,所述非交叉存储器操作模式将存储器的第一和第二存储器块的可配置存储器仅分区为非交叉存储器,所述交叉存储器操作模式将存储器的第一和第二存储器块的可配置存储器仅分区为交叉存储器,且所述混合存储器操作模式将存储器的第一和第二存储器块的可配置存储器分区为非交叉存储器和交叉存储器两者。响应于配置指示符表明存储器模块被配置为处于非交叉存储器模式下,流程前进至块322。响应于配置指示符表明存储器模块被配置为处于交叉存储器模式下,流程前进至块325。响应于配置指示符表明存储器模块被配置为处于混合存储器模式下,流程前进至块323。
在块322处,通过地址模块将可配置的第一存储器块的物理地址空间和可配置的第二存储器块的物理地址空间映射到存储器模块的地址空间,来作为非交叉存储器。因此,响应于配置指示符表明非交叉存储器模式,存储器模块将响应于所接收的访问请求,而将可配置的第一存储器块和可配置的第二存储器块作为非交叉存储器来对其进行访问。例如,当第一存储器块被集成为集成电路的一部分、例如包括存储器模块和诸如数据处理装置的外围装置的片上系统(SOC)的一部分时,可配置的第一存储器块的所有物理地址都通过存储器模块映射到存储器模块的连续的地址范围,该地址范围本身被映射到更大的物理地址空间、例如SOC的地址空间(SOC地址空间)的连续的地址范围。类似地,可配置的第二存储器块的所有物理地址都通过存储器模块映射到存储器模块的不同的连续的地址范围,该地址范围本身被映射到不同的连续的SOC地址范围。一般而言,可配置的存储器的第一和第二存储器块的相应的地址范围在存储器模块的地址空间内将是彼此连续的,并且因此在SOC地址空间内是连续的。
在块325处,基于配置指示符,将可配置的第一存储器块的物理地址空间和可配置的第二存储器块的物理地址空间映射到存储器模块的地址空间内的地址范围,作为交叉存储器。例如,通过存储器模块将可配置的第一存储器块的所有物理地址和可配置的第二存储器块的所有物理地址都映射到存储器模块的连续的地址范围,该地址范围本身被映射到SOC地址范围。因此,在存储器模块的可配置地址空间内,与第一存储器块的地址位置相关联的每个地址与和第二存储器块的地址位置相关联的存储器模块地址空间的两个地址连续。注意,将理解的是,交叉存储器的第一个地址和最后一个地址均可以与其他存储器块的仅一个其他存储器位置连续。
在块323处,通过存储器模块将可配置的第一存储器块的物理地址空间的第一部分和可配置的第二存储器块的物理地址空间的第一部分作为非交叉存储器而分别映射到存储器模块的地址空间内的第一地址范围和第二地址范围,并且通过存储器模块将可配置的第一存储器块的物理地址空间的第二部分和可配置的第二存储器块的物理地址空间的第二部分作为交叉存储器而映射到存储器模块的地址空间内的第三地址范围。第一部分和第二部分的大小和位置可以基于配置指示符确定,其中配置指示符可以由用户编程,例如由用户存储,并且可以包括表明第一和第二部分的大小和位置以及操作模式的一个或多个字段。因此,在存储器模块和SOC地址空间内,被映射到第一存储器块的物理地址空间的第一部分的每个地址是连续的,对于被映射到存储器模块的第二存储器块的第一部分的SOC地址和每个存储器模块也是如此。
将理解的是,在混合存储器模式和非交叉存储器模式下,第一存储器块的第一部分和第二存储器块的第一部分都被配置为非交叉存储器,并且在混合存储器模式和交叉存储器模式下,第一存储器块的第二部分和第二存储器块的第二部分都被配置为交叉存储器。将进一步理解的是,可配置地址范围内的存储器模块地址且因而SOC地址可以依据配置指示符来访问存储器模块的不同的存储器位置。换言之,可以依据配置指示符,通过不同的存储器模块地址来访问存储器模块的可配置存储器位置。图13示出了根据本公开内容的特定实施例的方法。在块341处,由用户存储配置指示符,以表明存储器模块的第一和第二存储器块的分区。在一个实施例中,用单个字段表示的配置指示符可以表明存储器模块是否被配置为处于非交叉存储器操作模式、交叉存储器操作模式、和混合存储器操作模式中。此外,还可以用单个字段表明存储器的块的交叉部分或非交叉部分的大小。例如,为零(0)的配置指示符可以表明存储器的第一和第二存储器块中每个的零(0)个可配置扇区将被映射为非交叉存储器。因此,该配置指示符表明存储器模块工作在交叉存储器模式下,并且从SOC存储器空间的基础地址位置处开始,第一和第二存储器块是交叉的。为一(1)的配置指示符表明存储器的第一和第二存储器块中每个的一(1)个可配置扇区被映射为非交叉存储器。该配置指示符表明存储器模块工作在混合存储器模式下,并且从SOC的基础地址位置开始,前两个扇区是非交叉存储器分区,这两个扇区分别来自于两个块,并且其余扇区是交叉存储器分区。在另一个实施例中,单个配置指示符可以表明交叉闪存的起始地址。例如,为0x0000的配置指示符可以表明交叉存储器起始于存储器模块的每个存储器块的物理地址0x0000,从而表明存储器模块工作在交叉存储器模式下。为0x0010的配置指示符可以表明交叉存储器起始于存储器模块的每个存储器块的物理地址0x0010,从而表明存储器模块工作在混合存储器模式下。例如,假设每个存储器模块具有可配置的地址范围0x0000-0xFFFF,则为0x0010的配置指示符可以表明存储器模块的第一和第二存储器块处的存储器范围0x0000-0x000F被作为非交叉存储器而被访问,以及每个块的可配置存储器范围的剩下部分,诸如0x0010。为0xFFFF的配置指示符可以表明存储器模块工作在交叉存储器模式下,由此在存储器模块的可配置地址处没有实现交叉存储器。将理解的是,在其他实施例中,配置指示符可以包括多个字段,例如,一个字段表明存储器操作模式,并且第二个字段表明在混合存储器操作模式下的分区的大小或位置。
图14示出了根据本公开内容的特定实施例的方法。在块361处,由用户存储配置指示符,以表明按照混合存储器模式对存储器模块分区,其包括一个交叉分区和两个非交叉分区,如参照图2所述描述的。
在块362处,在存储器模块的交叉分区处存储应用程序指令。这些应用程序指令是用户指令,其通过通用处理器的处理器核的指令管线(未示出)获取并执行。例如,指令可以由包括存储器模块和通用处理器的SOC的用户提供,以实现与特定应用相关联的功能。
在块363处,将实施写入例程(routine)的用户指令存储在存储器模块的第一存储器块的第一非交叉分区处。可以通过存储在交叉模块处的应用程序代码来调用写入例程。
在块364处,处理器核的管线的获取模块向存储器模块提供读取请求,其导致从存储器模块的交叉分区接收存储在存储器模块的交叉分区处的应用程序指令并通过管线执行应用程序指令。
在块365处,处理器核的管线的获取模块向存储器模块提供读取请求,其导致通过管线接收和执行被存储在存储器模块的交叉分区处的应用程序指令,由此,应用程序指令的执行导致指令流的变化,其使管线的获取模块向存储器模块提供读取请求,其导致存储在第一存储器块的第一非交叉分区处的与写入例程相关联的指令被接收。
在块366处,在管线处执行与所接收的写入例程相关联的指令,以将信息写入到存储器模块的第二存储器块的第二非交叉部分。与所接收的写入例程相关联的指令一经完成,流程就返回到块363,在块363处,从交叉存储器访问与应用程序相关联的进一步的用户指令,并通过管线执行。
图15示出了根据本公开内容的特定实施例的方法,由此将实施写入例程的用户指令存储在存储器模块的第一存储器块的非交叉部分和第二存储器模块的非交叉部分处。写入例程可以是将应用程序指令加载到存储器模块的交叉部分或非交叉部分中的引导加载器指令的一部分。
在块381处,在与存储器模块处于相同集成电路中的通用处理器的指令管线处,执行第一存储器块处的写入例程,以将信息写入到第二存储器块的交叉部分和非交叉部分。
在块382处,在与存储器模块处于相同集成电路中的通用处理器的指令管线处,执行第二存储器块处的写入例程,以将信息写入到第二存储器块的交叉部分和非交叉部分。
在块383处,从在第二存储器块处的写入例程传递控制。例如,当第一和第二存储器块处的写入例程为引导加载器的一部分时,在第一存储器块处的写入例程使应用程序指令被写入到与被配置为交叉或非交叉存储器的第二存储器块相关联的地址,并使控制被传递到第二存储器块处的写入例程之后;并且在第二存储器块处的写入例程使应用程序指令被写入到与被配置为交叉或非交叉存储器的第一存储器块相关联的地址,并且结束时传递控制之后,从引导加载器传递控制。例如,可以传递控制,以执行在块381和382处通过写入例程加载的应用程序指令。
图16示出了根据本公开内容的特定实施例的方法。在块391处,由用户存储配置指示符,以表明按照混合存储模式对存储器模块分区,如参照图12所描述的。
在块392处,将存储器模块的第一存储器块的第一部分和存储器模块的第二存储器块的第一部分作为处于诸如存储器模块的地址地图或者包括存储器模块的SOC的地址地图这样的地址地图的第一地址范围的交叉存储器进行访问,该第一地址范围基于可编程配置指示符。例如,地址范围的大小可以基于由可编程指示符表明的扇区的数目,如前面讨论的。
在块393处,将存储器模块的第一存储器块的第二部分作为处于地址地图的第二地址范围的非交叉存储器进行访问,该第二地址范围也基于可编程指示符。
在块394处,将存储器模块的第二存储器块的第二部分作为处于地址地图的第三地址范围的非交叉存储器进行访问,该第三地址范围也基于可编程指示符。
本文中所描述的实施例的说明和图示旨在提供对各种实施例的结构的一般性了解。说明和图示旨在作为对使用本文中所描述的结构或方法的装置和系统的所有的元件和特征的彻底而全面的描述。在阅读本公开内容时,许多其他实施例对于本领域技术而言会是显而易见的。从本公开内容可以推导出其他实施例并加以使用,使得在不脱离本公开内容的范围的情况下,可以进行结构替换、逻辑替换或者其他改变。据此,本公开内容将要被认为是例示性而非限制性的。例如,本文在图9中描述的特定实施例包括这样的示例,即通过该示例,每个存储器块包括可配置的地址范围和不可配置的地址范围,其中,不可配置的地址范围一直处于不交叉的固定存储器模块地址范围。将理解的是,更替的实施例可以包括具有一直是交叉的不可配置部分的存储器块以及既有一直是交叉的不可配置部分又有一直是非交叉的不可配置部分的存储器块。尽管一般而言,特定交叉类型的不可配置部分将被映射到存储器模块的地址地图的单个连续的地址范围,但将理解的是,不可配置部分也可以被映射到SOC存储器地图的多个不连续的范围。例如,第一存储器块的不可配置的非交叉部分包括多个分区,这多个分区被映射到存储器模块的存储器地图的多个不连续的地址范围。例如,存储器模块可以包括第一存储器块的不可配置的非交叉存储器的第一扇区和第二扇区,其中与第二扇区相比,第一扇区被映射到更靠近存储器模块地址地图的顶部。第一和第二扇区在存储器模块中的映射处之间的地址范围可以包括不可配置的交叉存储器、来自第二存储器块的不可配置的非交叉存储器、可配置存储器、及其组合。
图17示出了存储器模块16的边读边写能力。读取请求RC1类似于前面参照图10描述的读取请求RC1,其中在图17的读取周期RC1期间,SOC地址0xY00被转换为存储器模块16的存储器块22的位置,正在从该位置读取数据。在写入周期WC1开始之前,将在写入周期期间将要访问的地址存储在寄存器R_WR_ADDR处,将待写入的数据存储在寄存器R_WR_DATA处,并且将命令指示符WRITE存储在寄存器R_WR_CMD处,以表明将要进行写入。根据图2的存储器地图,SOC地址0xY10将要被转换为存储器模块16的存储器块23的位置,正在向该位置写入数据。当在时间T1开始时,命令开始指示符被写入寄存器R_CMD_START的时候,写入周期WC1开始。作为响应,存储器模块16将把状态寄存器的状态从IDLE更新为IN PROGRESS以表明写入请求正在被处理。当写入结束之后,状态寄存器R_CMD_STATUS的状态被更新为IDLE。以此方式,存储器模块16支持对不同的非交叉数据块边读边写访问。换言之,对一个非交叉数据存储器块模块16的读取请求与不同的非交叉数据存储器块模块16的写入请求是正交的。
本文中关于存储器块而使用的术语“交叉”意指,对地址范围内连续的地址位置的访问请求是以交替的方式从存储器块和至少一个其他存储器块来进行检索。例如,当对于例如在0x0000-0xFFFF中的给定地址范围,用于访问请求的来自第一存储器块的存储器控制器访问信息具有偶数的地址,并且用于访问请求的来自第二存储器块的访问信息具有奇数的地址时,则第一存储器块为交叉存储器。
本文中关于存储器块而使用的术语“非交叉”意指,对地址范围内连续的地址位置的访问请求是以连续的方式从存储器块检索的。例如,当对于例如在0x0000-0xFFFF中的给定地址范围,用于访问请求的来自相同块的存储器控制连续访问信息具有偶数的地址或奇数的地址,则第一存储器块为非交叉存储器。
为了清楚起见,本文中围绕单独的实施例而描述的某些特征也可以在单个实施例中组合提供。反之,为了简明起见,围绕单个实施例而描述各种特征也可以单独地或者以任何子组合的方式提供。此外,所提及范围内的列明的值包括该范围内的每个值。
上面已经就特定实施例描述了益处、其他优点以及解决问题的方案。然而,这些益处、优点、解决问题的方案以及可以使得益处、优点或者解决方案出现或变得更为明确的任何特征将不被解释为任何或所有权利要求的关键的、必需的或者必不可少的特征。
上述主题将被认为是例示性而非限制性的,并且随附的权利要求书旨在涵盖落入本发明的范围内的任何以及所有这类修改、改进和其他实施例。因而,本发明的范围将由下列权利要求及其等同物的最宽泛的允许的解释来界定,并且将不会受前面的具体描述限制或限定,以达到法律所允许的最大程度。
Claims (20)
1.一种访问存储器的电子装置,包括:
存储器模块,包括第一存储器块、第二存储器块、可编程存储位置和存储器控制器;
所述第一存储器块包括多个数据单元位置和耦合到所述存储器控制器的第一访问端口的地址解码器,所述地址解码器响应于经由所述第一访问端口接收地址信息而选择所述多个数据单元位置中的一个用于访问;
所述第二存储器块包括多个数据单元位置和耦合到所述存储器控制器的第二访问端口的地址解码器,所述地址解码器响应于经由所述第二访问端口接收地址信息而选择所述多个数据单元位置中的一个用于访问;
所述可编程存储位置存储配置信息;以及
所述存储器控制器包括耦合到所述可编程存储位置的控制端口,所述存储器控制器基于所述可编程配置信息而将所述第一存储器块的第一部分和所述第二存储器块的第一部分作为交叉存储器、作为非交叉存储器、或作为交叉存储器和非交叉存储器的混合进行访问,其中,所述配置信息包括指示要作为交叉存储器访问的所述第一存储器块的所述第一部分的大小的值。
2.如权利要求1所述的电子装置,进一步包括:所述存储器控制器响应于所述可编程配置信息包括第一值,而将所述第一存储器块的整个可配置部分作为非交叉存储器并且将所述第二存储器块的整个可配置部分作为非交叉存储器进行访问;以及
所述存储器控制器响应于所述可编程配置信息包括第二值,而将所述第一存储器块的所述整个可配置部分和所述第二存储器块的所述整个可配置部分作为交叉存储器进行访问。
3.如权利要求1所述的电子装置,其中,所述存储器控制器响应于所述可编程配置信息包括第一值,而将所述第一存储器块的可配置部分的第一部分和所述第二存储器块的可配置部分的第一部分作为交叉存储器进行访问以及将所述第一存储器块的可配置部分的第二部分和所述第二存储器块的可配置部分的第二部分作为非交叉存储器进行访问。
4.如权利要求1所述的装置,进一步包括:
第一总线;并且所述存储器模块进一步包括
第一端口,所述第一端口耦合到所述第一总线;以及
多路复用器,所述多路复用器包括第一输入、第二输入、输出和选择输入,所述第一输入耦合到所述第一存储器块的数据输出以接收存储在所述第一存储器块的所述多个数据单元位置中的一个处的信息,所述第二输入耦合到存储器的所述第二存储器块的数据输出以接收存储在所述第二存储器块的所述多个数据单元位置中的一个处的信息,所述输出耦合到所述存储器模块的所述第一端口以提供信息到所述第一总线,所述选择输入耦合到所述存储器控制器以将所述第一输入或所述第二输入中的一个处的信息通信到所述输出。
5.如权利要求4所述的装置,其中,所述存储器模块的所述第一端口进一步被耦合为向所述存储器控制器提供读取请求,以读取存储在所述第一存储器块或所述第二存储器块处的信息,所述第一存储器块和所述第二存储器块可操作为经由所述存储器模块的所述第一端口只可读取。
6.如权利要求4所述的装置,其中,所述存储器模块的所述第一端口进一步被耦合为向所述存储器控制器提供读取请求,以读取存储在所述第一存储器块或所述第二存储器块处的信息;并且所述装置进一步包括
第二总线,所述第二总线耦合到所述存储器模块的第二端口,所述存储器模块的所述第二端口被耦合为向所述存储器控制器提供写入请求,以写入将要存储在所述第一存储器块或在所述第二存储器块处的信息,所述第一和所述第二存储器块可操作为经由所述第二总线只可写入。
7.如权利要求6所述的装置,其中,所述第一存储器块和所述第二存储器块可操作为使得所述第一存储器块的读取时序不受对所述第二存储器块的同时写入的影响。
8.一种访问存储器的方法,包括:
从可编程位置读取值,所述值指示成为交叉存储器和非交叉存储器的存储器的分区的大小;
基于所述可编程位置处的所述值,将集成电路上的第一存储器块的第一部分和所述集成电路上的第二存储器块的第一部分分区为交叉存储器和非交叉存储器的混合;以及
基于所述可编程位置处的所述值,将所述第一存储器块的所述第一部分和所述第二存储器块的所述第一部分作为交叉存储器和非交叉存储器的混合进行访问。
9.如权利要求8所述的方法,其中,将所述第一存储器块的所述第一部分和所述第二存储器块的所述第一部分分区包括访问第一非易失性可编程存储器阵列的第一部分以及访问第二非易失性可编程存储器阵列的第一部分。
10.如权利要求8所述的方法,其中,将所述第一存储器块的所述第一部分和所述第二存储器块的所述第一部分分区包括所述第一存储器块的所述第一部分是第一闪存存储器块的第一扇区以及所述第二存储器块的所述第一部分是第二闪存存储器块的第一扇区,其中扇区表示能够通过单个擦除请求擦除的数据单元的最小数目。
11.如权利要求10所述的方法,包括:基于所述第一存储器块的所述第一部分处的分区的大小,确定所述第一存储器块处的交叉分区的大小和所述第二存储器块处的交叉分区的大小,并且响应于确定所述第一存储器块处的分区的大小,使用所述第一存储器块处的所述交叉分区和所述第二存储器块处的所述交叉分区作为交叉存储器,其中,所述第一存储器块处的所述交叉分区包括所述第一存储器块的所述第一部分,并且所述第二存储器块处的所述交叉分区包括所述第二存储器块的所述第一部分。
12.如权利要求8所述的方法,包括:基于所述第一存储器块的所述第一部分处的分区的大小,确定所述第一存储器块处的交叉分区的大小和所述第二存储器块处的交叉分区的大小,并且响应于确定所述第一存储器块处的分区的大小,使用所述第一存储器块处的所述交叉分区和所述第二存储器块处的所述交叉分区作为交叉存储器,其中,所述第一存储器块处的所述交叉分区包括所述第一存储器块的所述第一部分,并且所述第二存储器块处的所述交叉分区包括所述第二存储器块的所述第一部分。
13.如权利要求12所述的方法,其中,所述第一存储器块具有物理地址范围并且所述第二存储器块具有所述物理地址范围,并且,响应于所述可编程位置处的第一值,所述第一存储器块处的所述交叉分区的大小被确定为整个所述物理地址范围,并且所述第二存储器块处的所述交叉分区的大小被确定为整个所述物理地址范围。
14.如权利要求13所述的方法,其中,所述第一存储器块具有物理地址范围并且所述第二存储器块具有所述物理地址范围,并且,响应于所述可编程位置处的第二值,所述第一存储器块处的所述交叉分区的大小被确定为零,并且所述第二存储器块处的所述交叉分区的大小被确定为零。
15.如权利要求8所述的方法,其中,所述第一存储器块和所述第二存储器块是非易失性可编程存储器,并且进一步包括:
基于所述第一存储器块的所述第一部分处的分区的大小,确定所述第一存储器块处的交叉分区和非交叉分区的大小、和所述第二存储器块处的交叉分区和非交叉分区的大小,并且响应于确定所述第一存储器块处的交叉分区的大小,使用所述第一存储器块处的所述交叉分区和所述第二存储器块处的所述交叉分区作为交叉存储器,并使用所述第一存储器块处的所述非交叉分区和所述第二存储器块处的所述非交叉分区作为非交叉存储器;以及
响应于在设置在对于所述第一存储器块和所述第二存储器块公共的管芯处的数据处理器处执行从所述第一存储器块处的所述非交叉分区访问的用户指令的集合,将信息写入到所述第二存储器块。
16.如权利要求8所述的方法,其中,所述第一存储器块和所述第二存储器块是非易失性可编程存储器,并且进一步包括:
基于所述第一存储器块的所述第一部分处的分区的大小,确定所述第一存储器块处的交叉分区和非交叉分区的大小、和所述第二存储器块处的交叉分区和非交叉分区的大小,并且响应于确定所述第一存储器块处的交叉分区的大小,使用所述第一存储器块处的所述交叉分区和所述第二存储器块处的所述交叉分区作为交叉存储器,并使用所述第一存储器块处的所述非交叉分区和所述第二存储器块处的所述非交叉分区作为非交叉存储器;以及
在设置在对于所述第一存储器块和所述第二存储器块公共的管芯处的数据处理器处,执行从所述第一存储器块处的所述交叉分区和所述第二存储器块处的所述交叉分区访问的用户指令的第一集合;以及
响应于在所述数据处理器处执行从所述第一存储器块处的所述非交叉分区访问的用户指令的第二集合,将信息写入到所述第二存储器块处的所述非交叉分区。
17.如权利要求8所述的方法,其中,所述第一存储器块和所述第二存储器块是非易失性可编程存储器,并且进一步包括:
基于所述第一存储器块的所述第一部分处的分区的大小,确定所述第一存储器块处的交叉分区和非交叉分区的大小、和所述第二存储器块处的交叉分区和非交叉分区的大小,并且响应于确定所述第一存储器块处的交叉分区的大小,使用所述第一存储器块处的所述交叉分区和所述第二存储器块处的所述交叉分区作为交叉存储器,并使用所述第一存储器块处的所述非交叉分区和所述第二存储器块处的所述非交叉分区作为非交叉存储器;
响应于在设置在对于所述第一存储器块和所述第二存储器块公共的管芯处的数据处理器处执行从所述第二存储器块处的所述非交叉分区访问的用户指令的第一集合,将第一用户指令写入到所述第一存储器块处的所述交叉分区;
响应于在所述数据处理器处执行从所述第一存储器块处的所述非交叉分区访问的用户指令的第二集合,将第二用户指令写入到所述第二存储器块的所述交叉分区;以及
在所述数据处理器处,执行从所述第一存储器块处的所述交叉分区以及所述第二存储器块处的所述交叉分区访问的所述第一用户指令和所述第二用户指令。
18.如权利要求8所述的方法,其中,所述可编程存储位置处的所述值指示所述第一存储器块的所述第一部分的扇区的数目。
19.如权利要求8所述的方法,其中:
所述可编程存储位置处的所述值指示所述第一存储器块的所述第一部分的地址,以及
所述地址位于交叉存储器和非交叉存储器之间的边界处。
20.如权利要求8所述的方法,进一步包括:
接收表示所述第一存储器块的所述第一部分或所述第二存储器块的第一部分的位置的地址;以及
将所述地址映射到所述位置,所述映射基于所述第一部分的分区的大小。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/563,259 US8327092B2 (en) | 2009-09-21 | 2009-09-21 | Memory device configurable as interleaved or non-interleaved memory |
US12/563,259 | 2009-09-21 | ||
PCT/US2010/045573 WO2011034673A2 (en) | 2009-09-21 | 2010-08-16 | Memory device and method |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102648456A CN102648456A (zh) | 2012-08-22 |
CN102648456B true CN102648456B (zh) | 2015-04-01 |
Family
ID=43757596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080041997.5A Expired - Fee Related CN102648456B (zh) | 2009-09-21 | 2010-08-16 | 存储器装置及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8327092B2 (zh) |
EP (1) | EP2480976A4 (zh) |
CN (1) | CN102648456B (zh) |
WO (1) | WO2011034673A2 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012230621A (ja) * | 2011-04-27 | 2012-11-22 | Sony Corp | メモリ装置、メモリ制御装置、メモリ制御方法 |
US9396106B2 (en) * | 2011-05-12 | 2016-07-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Advanced management of a non-volatile memory |
GB2493340A (en) * | 2011-07-28 | 2013-02-06 | St Microelectronics Res & Dev | Address mapping of boot transactions between dies in a system in package |
US9256531B2 (en) * | 2012-06-19 | 2016-02-09 | Samsung Electronics Co., Ltd. | Memory system and SoC including linear addresss remapping logic |
US9754648B2 (en) * | 2012-10-26 | 2017-09-05 | Micron Technology, Inc. | Apparatuses and methods for memory operations having variable latencies |
US9740485B2 (en) | 2012-10-26 | 2017-08-22 | Micron Technology, Inc. | Apparatuses and methods for memory operations having variable latencies |
US9245496B2 (en) | 2012-12-21 | 2016-01-26 | Qualcomm Incorporated | Multi-mode memory access techniques for performing graphics processing unit-based memory transfer operations |
US9734097B2 (en) * | 2013-03-15 | 2017-08-15 | Micron Technology, Inc. | Apparatuses and methods for variable latency memory operations |
TWI494849B (zh) * | 2013-05-06 | 2015-08-01 | Phison Electronics Corp | 韌體碼載入方法、記憶體控制器與記憶體儲存裝置 |
US9563565B2 (en) | 2013-08-14 | 2017-02-07 | Micron Technology, Inc. | Apparatuses and methods for providing data from a buffer |
US9727493B2 (en) | 2013-08-14 | 2017-08-08 | Micron Technology, Inc. | Apparatuses and methods for providing data to a configurable storage area |
US9208083B2 (en) | 2013-12-04 | 2015-12-08 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method to interleave memory |
US10365835B2 (en) | 2014-05-28 | 2019-07-30 | Micron Technology, Inc. | Apparatuses and methods for performing write count threshold wear leveling operations |
KR102355573B1 (ko) * | 2014-10-29 | 2022-01-27 | 삼성전자주식회사 | 선형 리맵퍼 및 액세스 윈도우를 포함하는 메모리 시스템 및 시스템 온 칩 |
KR102269899B1 (ko) * | 2015-01-12 | 2021-06-28 | 삼성전자주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
CN107451493A (zh) * | 2016-05-30 | 2017-12-08 | 珠海市微半导体有限公司 | Risc架构保密电路及其方法 |
CN106294546B (zh) * | 2016-07-22 | 2019-04-16 | 北京英诺威尔科技股份有限公司 | 一种内存存储设备端口状态数据的方法 |
US10642497B2 (en) * | 2016-08-31 | 2020-05-05 | International Business Machines Corporation | System, method and computer program product for instantiating blocks of a solid-state disk to include different flash characteristics |
CN106873909B (zh) * | 2017-01-22 | 2020-06-30 | 建荣集成电路科技(珠海)有限公司 | 一种存储访问方法及其系统、存储设备 |
TWI639917B (zh) | 2017-04-25 | 2018-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置及映射表重建方法 |
US10936199B2 (en) * | 2018-07-17 | 2021-03-02 | Silicon Motion, Inc. | Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table |
TWI719779B (zh) * | 2019-12-26 | 2021-02-21 | 新唐科技股份有限公司 | 一次性可編程記憶體裝置及其容錯方法 |
CN113110878A (zh) * | 2020-01-09 | 2021-07-13 | 瑞昱半导体股份有限公司 | 存储器装置及其操作方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226134A (en) * | 1990-10-01 | 1993-07-06 | International Business Machines Corp. | Data processing system including a memory controller for direct or interleave memory accessing |
US5630098A (en) * | 1991-08-30 | 1997-05-13 | Ncr Corporation | System and method for interleaving memory addresses between memory banks based on the capacity of the memory banks |
US6049855A (en) * | 1997-07-02 | 2000-04-11 | Micron Electronics, Inc. | Segmented memory system employing different interleaving scheme for each different memory segment |
EP1122737A1 (en) | 2000-01-31 | 2001-08-08 | STMicroelectronics S.r.l. | Circuit for managing the transfer of data streams from a plurality of sources within a system |
US6625685B1 (en) | 2000-09-20 | 2003-09-23 | Broadcom Corporation | Memory controller with programmable configuration |
US6938133B2 (en) * | 2001-09-28 | 2005-08-30 | Hewlett-Packard Development Company, L.P. | Memory latency and bandwidth optimizations |
US7248596B2 (en) | 2003-02-07 | 2007-07-24 | Fujitsu Limited | Memory interleaving in a high-speed switching environment |
US7793059B2 (en) * | 2006-01-18 | 2010-09-07 | Apple Inc. | Interleaving policies for flash memory |
DE602007010439D1 (de) * | 2006-03-31 | 2010-12-23 | Mosaid Technologies Inc | Flash-speichersystem-steuerverfahren |
-
2009
- 2009-09-21 US US12/563,259 patent/US8327092B2/en not_active Expired - Fee Related
-
2010
- 2010-08-16 CN CN201080041997.5A patent/CN102648456B/zh not_active Expired - Fee Related
- 2010-08-16 EP EP10817624.9A patent/EP2480976A4/en not_active Withdrawn
- 2010-08-16 WO PCT/US2010/045573 patent/WO2011034673A2/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2011034673A2 (en) | 2011-03-24 |
CN102648456A (zh) | 2012-08-22 |
EP2480976A2 (en) | 2012-08-01 |
US20110072190A1 (en) | 2011-03-24 |
EP2480976A4 (en) | 2013-08-07 |
WO2011034673A3 (en) | 2011-06-16 |
US8327092B2 (en) | 2012-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102648456B (zh) | 存储器装置及方法 | |
JP7320902B2 (ja) | メモリの異なるメモリプレーンに同時にアクセスするための装置および方法 | |
CN107408087B (zh) | 用于在存储器存取操作期间同时存取存储器的多个存储器平面的设备及方法 | |
US8825947B1 (en) | System and method for managing data access in non-volatile memory | |
US8140738B2 (en) | Flash memory interface device | |
CN101908379A (zh) | 基于访问时间调整对非易失性半导体存储器的访问 | |
US8996788B2 (en) | Configurable flash interface | |
CN109313620A (zh) | 存储器协议 | |
CN104081372B (zh) | 配置成提供对多个组的同时读/写访问的存储器 | |
KR20140111323A (ko) | 멀티 칩 패키지 nand 플래시 메모리 시스템에서의 디바이스 선택 방식 | |
KR20100100395A (ko) | 복수의 프로세서를 포함하는 메모리 시스템 | |
US20200379546A1 (en) | Dynamic power management network for memory devices | |
CN102456415A (zh) | 半导体存储器件及其操作方法 | |
TW201443896A (zh) | 具有每單元位元可組態能力之方法、裝置及系統 | |
US20180364919A1 (en) | Memory controller | |
CN101944011B (zh) | 运行程序的装置、芯片和方法 | |
US20200293452A1 (en) | Memory device and method including circular instruction memory queue | |
CN202003346U (zh) | 一种多通道的nand flash控制器 | |
CN102446071B (zh) | 取得一存储器状态资讯的接取方法、电子装置及程序产品 | |
US20170168750A1 (en) | Methods for garbage collection in a flash memory and apparatuses using the same | |
US8812810B2 (en) | Memory control apparatus | |
US20090228612A1 (en) | Flexible Bus Interface and Method for Operating the Same | |
JP2012022567A (ja) | キャッシュメモリ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Texas in the United States Patentee after: NXP America Co Ltd Address before: Texas in the United States Patentee before: Fisical Semiconductor Inc. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150401 Termination date: 20200816 |