CN102053930B - 用于外围组件的命令队列 - Google Patents
用于外围组件的命令队列 Download PDFInfo
- Publication number
- CN102053930B CN102053930B CN201010608774.4A CN201010608774A CN102053930B CN 102053930 B CN102053930 B CN 102053930B CN 201010608774 A CN201010608774 A CN 201010608774A CN 102053930 B CN102053930 B CN 102053930B
- Authority
- CN
- China
- Prior art keywords
- order
- command queue
- grand
- storer
- operand
- 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
Images
Classifications
-
- 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/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Microcomputers (AREA)
- Advance Control (AREA)
- Memory System (AREA)
- Information Transfer Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Abstract
本公开涉及用于外围组件的命令队列。在一个实施例中,外围组件被配置为控制集成电路的外部接口。例如,外围组件可以是诸如闪存接口单元的存储器接口单元。在去向/来自外部接口的数据传送和到外围组件的控制通信之间可共享到外围组件的内部接口。外围组件可包括被配置来存储一组命令以通过接口执行传送的命令队列。控制电路可被耦接至命令队列,并可读取命令和与接口控制器通信以响应于该命令促成通过接口的传送。在一个实施例中,响应于命令队列中的宏命令,宏存储器可存储要执行的命令序列。在一个实施例中,操作数队列可存储由这些命令使用的操作数数据。
Description
技术领域
本发明涉及集成电路领域,更具体地,涉及集成电路中的外围组件中的命令处理。
背景技术
在具有有效数据带宽(data bandwidth)的外围接口控制器中,可能发生的挑战之一是将控制输入从外部处理器提供给外围接口控制器。典型地,与在外围接口控制器和存储器之间传送数据的连接到外围控制器的相同内部接口用于提供来自外部处理器的控制输入(例如,通过向外围接口控制器中的控制寄存器的一系列写入)。在进行数据传送时,外围接口的存储器可以由于数据传送而饱和。因此,为下一组数据传送而设置的控制输入可以被有效锁定,直到当前的数据传送完成为止。在正在提供控制输入的时间期间,由外围接口控制器控制的外部外围接口可以是空闲的。
一种用来减小外设到存储器接口上的争用的机构是要在外围接口控制器中包括处理器,其执行用于控制外围接口控制器硬件的程序。然而,这种机构在多个方面都是昂贵的:在获取处理器的金钱方面(由于分立组件或者可被并入外围接口控制器设计中的知识产权);在包括处理器时由外围接口控制器占据的空间方面;以及在处理器消耗的功率方面。另外,所要执行的程序被存储在系统存储器中,因而指令取出可与外设到存储器接口上的数据传送进行争用。
发明内容
在一个实施例中,集成电路包括被配置为控制该集成电路的外部接口的外围组件。例如,外围组件可以是诸如闪存接口单元的存储器接口单元。在去向/来自外部接口的数据传送和到外围组件的控制通信之间可以共享到外围组件的内部接口。外围组件可以包括命令队列,该命令队列被配置为存储用于执行接口上的传送的一组命令。控制电路可以耦接至该命令队列,并且可以读取命令,并与接口控制器进行通信以促成响应于该命令而在接口上进行的传送。
在一个实施例中,在内部接口上没有正在进行数据传送时,可以将命令队列中的命令下载至命令队列。可以获得命令队列中的命令以执行下一次传送,例如,在当前传送完成时。在一些实施例中,即使面对内部接口上数据传送和控制传送之间的争用,也可以有效地使用内部接口和外部接口。
附图说明
以下的详细描述参照了附图,现在简单说明附图。
图1是集成电路、存储器和闪存的一个实施例的方框图。
图2是图1中所示的闪存接口的一个实施例的方框图。
图3是图示图2中所示的闪存接口控制电路的一个实施例响应于接收到写操作而执行的操作的流程图。
图4是图示闪存接口控制电路所支持的命令的一个实施例的表格。
图5是图示图2中所示的闪存接口控制电路的一个实施例响应于从命令先进先出(FIFO)缓冲器中读取命令而执行的操作的流程图。
图6是宏存储器的示例使用的方框图。
图7是图示由图1中所示的处理器的一个实施例所执行的闪存接口代码的一个实施例的操作的流程图。
图8是包括图1中所示的装置的系统的一个实施例的方框图。
图9是计算机可存取的存储介质的一个实施例的方框图。
具体实施方式
尽管本发明容许各种修改和替代形式,但是在附图中通过示例示出了本发明的具体实施例,并且在此处将对其进行详细描述。但是,应当理解,附图及其详细说明并非意欲将本发明限制为所公开的特定形式,而是相反,其目的是要覆盖落在由所附权利要求限定的本发明的精神和范围内的所有的修改、等同和替代。本文中所用的标题仅出于组织的目的,而非意味着要用于限制说明的范围。整个申请中所使用的词语“可(may)”表示许可的意义(即,意味着具有......的潜在可能),而不是强制的意义(即,意味着必须......)。类似地,词语“包括(include,including,includes)”意味着包括但不限于......。
各种单元、电路或者其它组件可被描述为“被配置来”执行一个或多个任务。在这样的上下文中,“被配置来”是对结构的宽泛描述,一般意为“具有在操作期间执行一个或者多个任务的电路”。同样地,即使在单元/电路/组件当前未开启时,该单元/电路/组件也可以被配置来执行任务。一般来说,形成与“被配置来”相对应的结构的电路可以包括硬件电路和/或存储可执行来实现操作的程序指令的存储器。存储器可包括易失性存储器,诸如静态或者动态随机存取存储器,和/或非易失性存储器,诸如光学或者磁盘存储器、闪存、可编程只读存储器等等。类似地,为了便于说明,各种单元/电路/组件可被描述为执行一个或者多个任务。这样的描述应当被理解为包括措词“被配置来”。记载被配置来执行一个或多个任务的单元/电路/组件明确地不是为了援引35 U.S.C§112第六款针对该单元/电路/组件的解释。
现在参照图1,图1示出了耦接至外部存储器12和一个或者多个闪存设备28A-28B的集成电路10的一个实施例的方框图。在所示的实施例中,集成电路10包括存储器控制器14、系统接口单元(SIU)16、诸如组件18A-18B的一组外围组件、闪存接口单元30、中央DMA(CDMA)控制器20、包括1级(L1)高速缓存24的处理器22、2级(L2)高速缓存26和输入/输出(I/O)处理器(IOP)32。存储器控制器14耦接至存储器12可以耦接到其上的存储器接口,并且存储器控制器14还耦接至SIU 16。在所示的实施例中,CDMA控制器20、L2高速缓存26和处理器22(通过L2高速缓存26)还耦接至SIU 16。L2高速缓存26耦接至处理器22,并且CDMA耦接至组件18A-18B、闪存接口单元30和IOP 32。一个或者多个外围组件18A-18B也可以耦接至外部接口,诸如外围组件18A。在其它的实施例中,其它组件可以直接耦接至SIU 16(例如,其它外围组件)。
CDMA控制器20可被配置为在存储器12、各种外围组件18A-18B和/或闪存接口单元30之间执行DMA操作。各种实施例可以包括任意数量的外围组件和/或通过CDMA控制器20耦接的闪存接口单元30。处理器22(更具体地,由处理器22所执行的指令)可编程CDMA控制器20以执行DMA操作。各种实施例可以以各种方式对CDMA控制器20进行编程。例如,DMA描述符可被写入到存储器12,其描述要被执行的DMA操作,并且CDMA控制器20可以包括可编程来定位存储器12中的DMA描述符的寄存器。可为DMA通道生成多个描述符,并且可按照规定执行在描述符中描述的DMA操作。可替换地,CDMA控制器20可包括可编程来描述要被执行的DMA操作的寄存器,并且对CDMA控制器20进行编程可包括对该寄存器进行写入。
一般来讲,DMA操作可以是由硬件执行的数据从源到目的地的传送,该硬件与执行指令的处理器分离。可以利用由处理器执行的指令来编程该硬件,但是,传送自身独立于处理器中的指令执行而由该硬件执行。源和目的地中的至少一个可为存储器。在一些实施例中,存储器可为系统存储器(例如,存储器12)、闪存设备28A-28B,或者可为集成电路10中的内部存储器。某些DMA操作可将存储器作为源和目的地(例如,存储器12和闪存设备28A-28B之间的DMA操作,或者从存储器12的一个块到另一块的复制操作)。其它DMA操作可将外围组件作为源或者目的地。外围组件可耦接至外部接口,DMA数据在该外部接口上要被传送或者DMA数据在该外部接口上要被接收。例如,外围组件18A可耦接至DMA数据将被传送至其上或者DMA数据要在其上被接收的接口。因而,DMA操作可包括从源读取数据并向目的地写入数据的CDMA控制器20。该数据可以作为DMA操作的一部分流过CDMA控制器20。特别地,DMA的从存储器12读取的DMA数据可流过存储器控制器14,经过SIU16,通过CDMA控制器20到达外围组件18A-18B或者闪存接口单元30(可能在外围组件耦接至的接口上,如果可用的话)。DMA的向存储器写入的数据可以沿相反的方向流动。
在一个实施例中,利用被称作为编程的输入/输出(PIO)操作的读取和/或写入操作,由处理器22和/或IOP 32执行的指令也可与外围组件18A-18B和闪存接口单元30进行通信。PIO操作可具有地址,该地址由集成电路10映射到外围组件18A-18B或者闪存接口单元30(更具体地,映射到寄存器或者组件中的其它可读取/可写入的资源)。地址映射在地址空间中可以是固定的,或者可以为可编程的。可替换地,可以以可以与存储器读取/写入操作区分开的方式(例如,利用与SIU 16上的存储器读取/写入操作不同的命令编码,利用用来指示存储器还是PIO的边带信号或者控制信号,等等),来传输PIO操作。对于这样的实施方式,PIO传输还可以包括地址,该地址在PIO地址空间内识别外围组件18A-18B或者闪存单元30(和所寻址的资源)。
在一个实施例中,对于外围组件18A-18B和闪存接口单元30,PIO操作可利用与CDMA控制器20相同的互连,并可流过CDMA控制器20。因而,PIO操作可被处理器22发布至SIU 16上(在该实施例中,通过L2高速缓存26),到达CDMA控制器20,并到达目标外围组件/闪存接口单元。类似地,IOP 32可将IPO操作发布至CDMA控制器20,CMDA控制器20可将PIO操作通过同样的互连传输至外围组件18A-18B或者闪存接口单元30。
因此,用于DMA操作的去向/来自外围组件18A-18B或者闪存接口单元30的数据传输可同去向/来自相同外围组件18A-18B或者闪存接口单元30的PIO操作发生冲突。例如,闪存接口单元30可通过PIO操作被编程来执行去向/来自闪存设备28A-28B的存储器传送。对于写入操作,CDMA控制器20可对要被写入闪存接口单元30的数据进行DMA。对于读取操作,CDMA控制器20可对要从闪存接口单元30中读取的数据进行DMA。在一个实施例中,闪存设备28A-28D可支持去向/来自这些设备的一页(a page of)数据传送。该页(page)的大小取决于设备,并可与存储器12的用于虚拟至物理地址变换的页的大小不同。例如,通常利用512字节、2048字节和4096字节的页大小。因此,在该上下文中,页可以是存储器设备的数据传送的单位。
闪存接口单元30可被编程来执行一页数据传送,并且CDMA单元20可以执行DMA操作来传送数据。如果要传送多个页,可利用其它PIO操作来编程闪存接口单元30以执行下一个传送。然而,DMA操作可有效地封锁其它PIO操作,直到当前页完成。因而,在针对下一页编程闪存接口单元30的同时经过的时间可导致接口上对于闪存设备的空闲时间。
在一个实施例中,闪存接口单元30可支持命令队列。用于针对要被传送的一组页(a set of pages)编程闪存接口单元30的命令可在命令队列中排队。一旦针对第一页的DMA操作开始,用于针对随后的页编程闪存接口单元30的数据可已经存储在命令队列中。因此,在用于编程闪存接口单元30的PIO操作和用于传送数据的DMA操作之间不存在冲突。由于能够处理来自命令队列的命令以便在CDMA单元30完成针对当前页的DMA操作的同时针对要被传送的下一页配置闪存控制器30的能力,使得可以提高接口对于闪存设备28A-28B的利用率。
在一个实施例中,闪存接口单元30可支持用以存储一个或多个宏的宏存储器(macro memory)。宏可以是通过宏命令而被调用的两个或更多个命令的序列。例如,宏命令可被写入命令队列,并在宏命令由闪存接口单元30执行时可调用该宏。实现频繁利用的命令序列的宏可被下载至宏存储器,从而随后只需下载较少的命令。也就是,宏命令可被写入命令队列,而不是反复写入存储在宏中的命令。在一个实施例中,宏命令可指定宏的起始地址和宏中的字数。一旦已经从宏中读取了该字数并且相应的命令已经被执行,则可以执行命令队列中在该宏命令之后的下一个命令。因此,在宏中可以避免返回命令,从而在一个实施例中允许更多密集的宏。其它实施例可利用起始地址和命令数作为操作数。另外的其它实施例还可实现返回命令,并且宏命令可包括该起始地址(但是不是字/命令计数)作为操作数。在一个实施例中,宏命令还可包括循环计数操作数(loop count operand)。循环计数操作数可指定将要执行的宏的迭代次数。因而,执行宏命令可包括读取在起始地址处开始的多个字并执行这些命令,在继续命令队列中在该宏命令之后的下一个命令之前,将所述命令迭代循环计数次数。
命令队列中的命令和/或宏存储器中的命令可以利用操作数来控制其操作。在某些情形中,操作数可被存储在命令队列中。在其它情形中,操作数可被存储在操作数队列中。命令队列中或者宏存储器中的命令可指定闪存接口单元30从操作数队列中加载操作数并对操作数进行操作。操作数队列可结合宏使用以向通用的宏(generic macro)提供特定于实例(instance-specific)的数据(例如,闪存地址、芯片使能,等等)。类似地,操作数队列可为命令队列中的命令提供操作数。
如本文所用的,存储器传送(memory transfer)可指去向/来自存储器设备(通过到存储器设备的接口)的数据传送。因而,去向/来自闪存设备28A-28B的存储器传送可经过闪存设备28A-28B和闪存接口单元30之间的接口进行。类似地,去向/来自存储器12的存储器传送可经过存储器12和存储器控制器14之间的接口进行。利用由存储器设备定义的协议可进行存储器传送。另外,命令可指一个或多个字节的数据,该数据可被外围组件中的硬件(例如,闪存接口单元30)解释为指定硬件要执行的特定操作。
一般地,外围组件可以是要在具有处理器的集成电路10上包括的任何期望的电路。外围组件可具有定义的功能和接口,该集成电路10的其它组件可借助该功能和接口同外围组件进行通信。例如,外围组件可包括视频组件,诸如显示器控制器、图形处理器等等;音频组件,诸如数字信号处理器、混合器等等;联网组件,诸如以太网媒体存取控制器(MAC)或者无线保真(WiFi)控制器;在各种接口上通信的控制器,诸如通用串行总线(USB)、外设组件互连(PCI)或者其变型,诸如PCI快速(PCI Express,即PCIe)、串行外围接口(SPI)、闪存接口等等。闪存接口单元30可以是外围组件的一个示例,并且本文描述的外围组件的一般特性可应用于闪存接口单元30。
处理器22可实现任何指令集架构(instruction set architecture),并可被配置来执行在该指令集架构中定义的指令。处理器22可以采用任何微架构,包括标量的、超标量的、流水线的、超级流水线的、无序的、有序的、推理的、非推理的微架构等等,或者它们的组合。处理器22可包括电路,并且可选地,可以实现微编码技术。在所示的实施例中,处理器22可包括L1高速缓存24以存储由处理器22利用的数据和指令。可以有分离的L1数据高速缓存和L1指令高速缓存。L1高速缓存(一个或多个)可具有任意容量和组织(集合相关的、直接映射的,等等)。在所示的实施例中,还提供L2高速缓存26。类似于L1高速缓存(一个或多个),L2高速缓存26可具有任意容量和组织。
类似地,IOP 32可执行任意指令集架构,并可被配置来执行在该指令集架构中定义的指令。由IOP 32执行的指令集架构不必与由处理器22所执行的指令集架构相同。在一个实施例中,IOP 32可以是与处理器22相比功率更低、性能更低的处理器。IOP 32可处理各种I/O接口问题(配置外围组件来执行期望的操作、某种错误处理,等等)。IOP 32可执行如下指令:向闪存接口单元30中的命令队列写入命令,向闪存接口单元30中的宏存储器中写入宏,和/或向闪存接口单元30中的操作数队列中写入操作数。IOP 32还可执行用以服务于其它外围组件18A-18B的指令。因而,处理器22可执行其它计算任务,或者如果没有其它计算任务要执行的话可降低功率以节省功率。IOP 32可采用任何微架构,包括标量的、超标量的、流水线的、超级流水线的、无序的、有序的、推理的、非推理的微架构等等,或者它们的组合。IOP 32可包括电路,并且可选地,可实现微编码技术。
SIU 16可以是存储器控制器14、处理器22(通过L2高速缓存26)、L2高速缓存26和CDMA控制器20可经过其进行通信的互连。SIU 16可实现任何类型的互连(例如,总线、包接口、点对点连接,等等)。在一些实施例中,SIU 16可以是层级结构的互连。
存储器控制器14可被配置来接收来自系统接口单元16的存储器请求。存储器控制器14可被配置来存取存储器12以利用为所附的存储器12定义的接口来完成请求(对于写入请求,向存储器12写入接收数据,或者响应于读取请求,提供来自存储器12的数据)。存储器控制器14可被配置为连接任何类型的存储器12,诸如动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、双倍数据速率(DDR、DDR2、DDR3等)SDRAM、RAMBUS DRAM(RDRAM)、静态RAM(SRAM)等等。存储器可被设置为多个存储器组,例如双列直插存储器模块(DIMM)、单列直插存储器模块(SIMM),等等。在一个实施例中,在堆叠封装(package on package,POP)或者叠层芯片(chip-on-chip,COC)配置中一个或多个存储器芯片被附接到集成电路10。
存储器12可包括一个或多个存储器设备。一般地,存储器设备可为任意组件,该组件被设计来根据在写操作中给其提供数据的地址来存储数据,并当在读取操作中利用该地址时提供该数据。上述存储器类型的任何示例都可在存储器设备中实现,并且闪存设备28A-28B也可为存储器设备。存储器设备可以是一个芯片、多个连接至诸如印刷电路板的基底的芯片(例如,SIMM或者DIMM、或者直接连接到IC 10耦接到的电路板)等等。
闪存接口单元30可包括电路,该电路被配置为接收对于闪存设备28A-28B的读取和写入请求,并被配置来连接闪存设备28A-28B以完成读取/写入请求。在一个实施例中,读取/写入请求可源自于CDMA控制器20。闪存接口单元30可通过一个或多个控制寄存器(参见下述图2)被编程来执行去向/来自闪存设备28A-28B(例如,通过PIO操作)的存储器传送。闪存设备28A-28B可为快闪存储器,其是本技术领域中已知的一种非易失性存储器。在其它实施例中,可使用其它形式的非易失性存储器。例如,可采用电池备份(Battery Backup)的SRAM、各种类型的可编程ROM,诸如电可擦除可编程只读存储器(EEPROM)等。在其它实施例中,可利用类似于存储器12的易失性存储器。
尽管当前实施例描述了利用闪存接口单元30中的命令队列(FIFO)、宏存储器和/或操作数队列(FIFO),但是其它实施例可利用任何类型的存储器或者外围接口,在任何外围组件中实现这些特征。
应该注意的是,其它实施例可包括组件的其它组合,所述组件包括图1中所示的组件的子集或者超集和/或其它组件。尽管在图1中示出给定组件的一个实例,但是其它实施例可包括给定组件的一个或者多个实例。
现在参照图2,图2示出了闪存接口单元30的一个实施例的方框图。在所示实施例中,闪存接口单元30包括命令FIFO 40、闪存接口(FMI)控制电路42、宏存储器44、操作数FIFO 46、闪存控制器(FMC)48、一组FMC控制寄存器50、数据缓冲器52A-52B和错误检查/校正(ECC)单元54。命令FIFO40、FMI控制电路42、宏存储器44、操作数FIFO 46和缓冲器52A-52B都耦接至CDMA控制器20的内部接口。FMI控制电路42还耦接至命令FIFO 40、宏存储器44、操作数FIFO 46和FMC控制寄存器50。FMC控制寄存器50还耦接至FMC 48,FMC 48耦接至闪存设备的外部接口。FMC 48还耦接至缓冲器52A-52B。ECC单元54还耦接至缓冲器52A-52B。
FMI控制电路42还被配置为从CDMA控制器20接收PIO操作。一些PIO操作可被引导到命令FIFO 40、宏存储器44或者操作数FIFO 46。例如,PIO写入可被用于向命令FIFO 40写入命令、将宏下载至宏存储器44、或者将操作数写入到操作数FIFO 46。地址可被分配给FIFO 40、宏存储器44和操作数FIFO 46中的每一个,该地址在PIO操作数中可用于寻址所期望的资源。例如,因为FIFO 40和46可以以先进先出的方式操作,因此它们具有单独分配的地址。对该地址的PIO写入可使FMI控制电路42存储数据,该数据被提供来写入在FIFO 40或者46中的下一个开放条目(open entry)中。即,该数据可被附加于FIFO 40或者46的尾部,其中命令或者操作数从FIFO 40或者46的顶部移除。宏存储器44可具有分配给它的地址范围,例如,宏存储器44的每个字的地址。对这些地址的PIO写入可将所提供的数据字存入宏存储器44的所寻址的字中。
FMI控制电路42可处理命令FIFO 40中的命令,以对各种FMC控制寄存器50进行编程以使FMC 48进行去向/来自闪存设备28A-28B的特定存储器传送。在一个实施例中,FMC 48被配置为通过FMC控制寄存器50来接收相对低等级的控制,包括寻址、芯片使能、传送命令等等。命令FIFO 40中的命令可由FMI控制电路42解释,并且FMI控制电路42可对相应的FMC控制寄存器50进行写入。类似地,等待事件的命令可由FMI控制电路42解释,以读取一个或者多个FMC控制寄存器50来检测该事件。在由FMI控制电路42响应于命令进行驱动和/或由FMI控制电路42响应于命令进行监控的一些实施例(在图2中未示出)中,在FMI控制电路42和FMC 48之间还可存在直接控制信号。
FMI控制电路42可被配置为从命令FIFO 40中以其被写入的顺序读取命令。更一般地,可支持命令队列(例如,可以不将命令FIFO 40特别构造为FIFO,以使队列中的每个条目对于FMI控制电路42都是同时可见的)。类似地,操作数FIFO 46可为操作数队列,而FMI控制电路42可响应于命令队列或宏存储器44中的命令,以操作数被写入的顺序从操作数FIFO 46中读取操作数。
如前所述,宏命令可以存在于命令FIFO 40中,而FMI控制电路42响应于该宏命令,可执行来自宏存储器44的命令。在其它的实施例中,宏命令可作为PIO操作被传送至FMI控制电路42。在其它的实施例中,在命令FIFO 40中或者在PIO操作中可碰到宏命令。宏命令可包括宏存储器中的起始地址和指示要从宏存储器44中读取的字的数量的字计数。FMI控制电路42可在读取命令FIFO 40中的下一个命令之前执行宏中的命令。在一个实施例中,除了命令之外,宏中的字还可以包括操作数。其它的实施例可利用命令计数而不是字计数。如上所述,宏命令可还包括循环计数(loop count),并且宏可被迭代由循环计数所指示的次数。
从命令FIFO 40和操作数FIFO 46中读取字可包括FMI控制电路42从FIFO中删除那些字。另一方面,从宏存储器44中读取字可不包括删除该字以使宏可被重复执行。
FMC 48可响应于FMC控制寄存器50的内容执行存储器传送,将从闪存设备28A-28B中读取的数据写入缓冲器52A-52B或者将从缓冲器52A-52B读取的数据写入闪存设备28A-28B。可以以乒乓方式使用缓冲器52A-52B,其中缓冲器52A-52B中的一个被排空时,给另一个填充数据。例如,从闪存设备28A-28B读取可包括FMC 48对缓冲器52A-52B中的一个进行填充,同时缓冲器52A-52B中的另一个正由执行对存储器12的DMA操作的CDMA控制器20排空。向闪存设备28A-28B写入可包括CDMA控制器20用数据填充缓冲器52A-52B中的一个,同时FMC 48排空另一个缓冲器52A-52B。ECC单元54可产生用于向闪存设备28A-28B写入的ECC数据,并可检查用于从闪存设备28A-28B读取的ECC数据。
现在转向图3,图3示出了FMI控制电路42的一个实施例响应于接收到来自CDMA控制器20的PIO操作而执行的操作的流程图。尽管为了便于理解以特定顺序示出了各个模块,但是可采用其它顺序。在FMI控制电路42中可以以组合逻辑并行执行各个模块。例如,图3中所示的判定模块可以是独立的,并被并行执行。模块、模块的组合、和/或整个流程图在多个时钟周期中可以以流水线方式进行。FMI控制电路42可被配置为执行图3中所示的操作。
如果PIO写操作被寻址至命令FIFO 40(判定模块60,“是”分支),FMI控制电路42可被配置为用来自PIO写的数据来更新命令FIFO 40中的下一个条目(模块62)。即,来自PIO写的数据可被附加至命令FIFO 40的尾部。如果PIO写被寻址到宏存储器44(判定模块64,“是”分支),FMI控制电路42可被配置为使用来自PIO写的数据更新宏存储器44中的所寻址的条目(模块66)。如果PIO写被寻址到操作数FIFO 46(判定模块68,“是”分支),FMI控制电路42可被配置为使用来自PIO写的数据更新操作数FIFO 46中的下一个条目(模块70)。即,来自PIO写的数据可被附加至操作数FIFO 46的尾部。如果PIO写被寻址到FMC控制寄存器50中的寄存器(或者在各种实施例中,闪存接口单元30中的其它寄存器—判定模块72,“是”分支),FMI控制电路42可被配置为更新所寻址的寄存器(模块74)。
下面转向图4,图4示出了表格76,表格76说明了可由闪存接口单元30的一个实施例(更具体地,FMI控制电路42)支持的示例性命令集。其它的实施例可支持任何其它的命令集,包括图4中所示的命令的子集、该命令和其它命令的子集、和/或该命令和其它命令的超集。该表格包括列出各个命令的“命令”列、指示用于给定命令的操作数的“操作数”列、和表示由该命令在命令FIFO 40中占据的字的数量的“字”列。
命令的格式可随实施例变化。例如,在一个实施例中,每个命令可包括标识命令集内的命令的操作码字节(即,可通过不同的操作码编码来辨识表格76中的每个条目)。可以利用形成命令的一个或多个字中的剩余字节来指定该命令的操作数。在各种实施例中,命令可被存储在命令FIFO 40或者宏存储器44中。
地址命令(表格76中addr0至addr7)可被用来在到闪存设备28A-28B的接口(简称为闪存接口)上发布地址字节。“addr”后的数字指示以在闪存接口上的地址的字节0开始的已传送的地址字节的数量。在一个实施例中,FMI控制电路42可被配置为中止,直到在执行下一命令之前地址字节已经被传送为止。在一个实施例中,addrX命令可相当于对随后的FMC控制寄存器50进行编程:一个或多个带有地址字节的地址寄存器,和在一个或者多个寄存器中对传送数量和读/写模式进行编程。响应于读/写模式,FMC 48可在闪存接口上传输地址字节,并在FMC控制寄存器50内的状态寄存器中发信号指示地址完成中断。另外,addrX命令可还包括等待、清除和状态寄存器中的地址完成中断。Addr0命令可不同于addr1至addr7命令,不同之处在于地址寄存器和地址传送数量寄存器不被编程。相反,这些寄存器可利用诸如下面描述的load_next_word或者load_from_fifo命令的其它命令被编程。
cmd命令可被用来在闪存接口上发送出闪存接口命令。在一个实施例中,闪存接口命令为一个字节。因此,cmd命令的操作数可以是在闪存接口上传输的命令字节。FMI控制电路42可以被配置为中止,直到在闪存接口上完成cmd命令为止。cmd命令可相当于对带有命令字节的FMC控制寄存器50中的命令寄存器进行编程;在另一FMC控制寄存器50中设定命令模式位;以及等待和清除FMC控制寄存器50内的状态寄存器中的cmd完成中断。响应于命令模式位的设定,FMC 48可被配置为在闪存接口上发送命令字节,并将cmd完成中断写入状态寄存器。
enable_chip命令可被用于写FMC控制寄存器50的芯片使能寄存器,该命令会使得FMC 48基于芯片使能操作数来驱动闪存接口上的芯片使能信号。
xfer_page命令可被用于发起去向/来自闪存设备28A-28B的页传送。响应于xfer_page命令,FMI控制电路42可被配置为在FMC控制寄存器50中设定起始位,并等待和清除在另一FMC控制寄存器50中的页完成中断位。响应于该起始位,FMC 48可被配置为执行指定的页传送,并在完成时设定页完成中断。
可存在由FMI控制电路42支持的各种同步命令。一般地,同步命令可被用来规定FMI控制电路42将要监控的事件,并使FMI控制电路42在执行下一命令之前等待该事件发生(也就是,等待直到FMI控制电路42检测到该事件为止)。因而,同步命令可允许命令序列被再次编程,同步命令可有助于确保正确的定时。例如,多个页传送可被再次编程,同步命令可被用来延迟对用于下一页的FMC控制寄存器50的编程,直到当前页不再需要该寄存器(例如,在该页的最后一个数据被载入缓冲器52A-52B以供读取之后)为止。
在图4的实施例中,同步命令可包括wait_for_rdy、pause、time_wait和wait_for_int。wait_for_rdy命令可被用来在页传送期间监控闪存设备28A-28B的状态。wait_for_rdy命令可包括等待和清除FMC控制寄存器50的状态寄存器中的特定“完成”中断(例如,页完成);使用屏蔽操作数(mask operand)对状态寄存器中的状态字节进行屏蔽;和将屏蔽后的状态字节同条件操作数进行比较。如果屏蔽后的状态字节同条件操作数相匹配,则FMI控制电路42可被配置为执行下一个命令。否则,FMI控制电路42可发信号指示中断(例如,在各种实施例中,发信号给IOP 32或者处理器22),并可停止执行其它命令,直到IOP 32/处理器22处理(service)了该中断为止。
pause命令被用来由FMI控制电路42来暂停命令执行。FMI控制电路42可停止执行命令,直到通过在IOP 32/处理器22上运行的软件在FMC控制寄存器50之一中写入指定的使能位来明确终止暂停为止。
FMI控制电路42可被配置为在多个时钟周期之后通过timed_wait命令来暂停和重新开始。时钟周期的数量被指定为timed_wait命令的操作数。在一些实施例中,timed_wait命令可用于降低闪存接口单元30的速度,这是因为利用命令FIFO 40、宏存储器44和操作数FIFO 46可能带来的性能会超过由闪存设备28A-28B执行活动的速率。
wait_for_int命令可被用于使FMI控制电路42等待指定的中断值。利用“位”操作数,操作数可以指定要等待的中断(irq)和要等待的irq位的状态(例如,设置或清除)。
send_interrupt命令可被用于向IOP 32或处理器22发送指定中断。send_interrupt命令的操作数可以指定中断代码以写入FMC控制寄存器50的中断代码寄存器中,这会使中断被发送。
load_next_word和load_from_fifo命令可被用于对FMC控制寄存器50中的各种寄存器进行编程。这些命令的操作数中的一个是将要被写入的控制寄存器的寄存器地址。响应于load_next_word命令,FMI控制电路42可从命令FIFO40中读取下一个字并将该字写入所寻址的寄存器。响应于load_from_fifo命令,FMI控制电路42可被配置为读取操作数FIFO 46的顶部的字并将该字写入所寻址的寄存器。
宏命令可被用于使得FMI控制电路42从宏存储器44中读取命令。宏命令包括地址操作数、长度操作数和循环计数操作数。地址可识别要从宏存储器44中读取的第一个字,并且长度可识别宏的长度(例如,根据命令的数量或者字的数量)。在一个实施例中,长度为数量字(number words)。循环计数可指示要被执行的宏的迭代的数量。在一个实施例中,循环计数操作数可以比迭代的数量少一(例如,循环计数0为一次迭代,循环计数1为两次迭代,等等)。宏一完成,就可对下一个命令FIFO 42进行读取(也就是,在宏中可没有返回命令)。
poll命令可以针对指定值而对FMC控制寄存器50中的任何寄存器进行轮询(在利用屏蔽字段对从寄存器中读取的值进行屏蔽之后)。FMI控制电路42可轮询寄存器直到检测到指定值为止,然后继续下一个命令。
如以上说明中所指出的,FMI控制电路42可对FMC控制寄存器50内的一个或者多个状态寄存器中记录的各种中断进行监控,作为执行某些命令的一部分。FMI控制电路42可清除该中断并完成对应的命令。在命令FIFO 40中不存在命令时,这些中断可代之以被转发至IOP 32/处理器22(如果被使能的话)。因此,至FMC控制寄存器50的PIO写操作和至IOP 32/处理器22的中断可为用于执行去向/来自闪存设备28A-28B的存储器传送的另一机制。
现在转向图5,图5示出了用于处理命令的FMI控制电路42的一个实施例的操作的流程图。尽管为了便于理解以特定顺序示出了各个模块,但是可采用其它顺序。在FMI控制电路42中可以以组合逻辑并行执行各个模块。模块、模块的组合、和/或整个流程图在多个时钟周期中可以以流水线方式进行。FMI控制电路42可被配置为执行图5中所示的操作。
FMI控制电路42可被配置为从命令FIFO 40中读取命令(模块80)。如果命令不是宏命令(判定模块82,“否”分支),FMI控制电路42可被配置为执行命令(模块84)。命令一完成,FMI控制电路42可被配置为检查用来确定宏是否到达其末端的字计数。如果该命令不是宏的一部分,那么字计数可为0(判定模块86,“否”分支)。FMI控制电路可被配置为检查与宏命令相关联的循环计数。如果命令不是宏的一部分,那么循环计数可为0(判定模块95,“否”分支)。FMI控制电路42可被配置为确定在命令FIFO 40中是否有另一有效命令(判定模块88)。即,FMI控制电路42可被配置为确定命令FIFO 40是否为空。如果存在另一有效命令(判定模块88,“是”分支),FMI控制电路42可被配置为读取和处理下一命令。否则,FMI控制电路42的命令处理电路可为空闲,直到另一有效命令被写入命令FIFO 40(判定模块88,“否”分支)。
如果命令为宏命令(判定模块82,“是”分支),FMI控制电路42可被配置为将字计数初始化为宏命令的长度操作数,和将循环计数初始化为宏命令的循环计数操作数(模块90)。FMI控制电路42还可从宏存储器44中读取命令(模块92)。具体地,在该情形中,FMI控制电路42可从宏存储器44中的作为宏命令的地址操作数提供的地址中读取第一个字。FMI控制电路42可被配置为执行命令(模块84),并可被配置为检查字计数。字计数可大于0(判定模块86,“是”分支),并且FMI控制电路42可被配置为递减字计数和从宏存储器44中读取下一命令(例如,通过递减地址)(模块94和96)。FMI控制电路42可被配置为处理下一命令(转向图5的流程图中的判定模块82)。如果字计数为0(判定模块86,“否”分支),FMI控制电路42可被配置来检查循环计数。如果循环计数大于0(判定模块95,“是”分支),则将要执行宏的另一次迭代。FMI控制电路42可递减循环计数(模块97),重新初始化字计数和宏地址(模块99),并从宏存储器44中读取下一命令(也就是,宏的第一命令)(模块96)。如果字计数和循环计数都为0(判定模块86和88,“否”分支),那么宏完成,而FMI控制电路42可检查命令队列40中的下一有效命令(判定模块88)。
应该注意的是,由于每个命令都要被检验是否为宏命令,所以宏命令也可被存储在宏存储器44中。因此,尽管要被执行的最后一个宏返回至命令FIFO40,从而从宏不会返回至调用它们的宏这一意义上而言不存在真正的嵌套,但是宏可以是“嵌套的”。
现在转向图6,图6示出了利用宏来执行将多页写入到闪存设备28A或者28B的示例的方框图。示出了宏存储器44的内容,包括三段命令。在宏存储器地址0和N-1之间,存储了用于完成写入前一页的宏100的N个字。在宏存储器地址N和N+M-1之间,存储了用于开始写入下一页的宏102的M个字。在宏存储器地址N+M和N+M+P-1之间,存储了用以将最后一页完成写入存储器的宏104的P个字。
在图6中图示了命令FIFO 40中的一组命令,如图6所示,FIFO的开始位于命令FIFO 40的顶部,且FIFO中的随后的命令依次沿命令FIFO 40向下进行。第一命令为宏N,M。该命令调用起始于字N的宏104,并执行M个字(即,如图6中所示的宏102)。因而,第一页的写入就被初始化。随后的页写入可利用宏0,N+M命令来执行。这些命令使得宏100和宏102被执行。前一页的写入可被完成(宏100),而下一页的写入可以开始(宏102)。最后一页可利用宏0,N+M+P命令来写入。该命令使得宏100、102和104被执行,完成从第二页到最后一页的写入(宏100),执行最后一页的写入(宏102),和完成最后一页的写入并关闭闪存设备28A或者28B(宏104)。在该示例中,每个宏命令的循环计数操作数为0(一次迭代)。然而,在图6中的第一个示例之下示出的另一个示例中,循环计数操作数可被用于使命令队列中的命令更加有效。用于第一页的宏N、M命令和用于最后一页的宏0、N+M+P命令的循环计数可仍为0,其规定一次迭代。然而,利用循环计数操作数等于页计数(C)减3的一个宏命令(宏0,N+M)可完成所有中间页的写入。在该实施例中,循环计数为C-3以考虑到第一页和最后一页、以及循环计数操作数比所期望的迭代次数少一的事实。正如宏100、102和104所说明的,通过精心安排宏存储器44中的宏,可得到密集并有效的宏。宏可利用load_from_fifo命令来对每个页写入操作数使用不同的操作数,且用于每页的操作数可在初始化命令FIFO 40中的命令之前被载入操作数FIFO 46中。
宏102中包含的命令可确立要被写入的地址、芯片使能等等。宏100中包含的命令可包括将前一页传送至存储器的xfer_page,以及检查错误和同步下一页传送的各命令(可通过宏102被初始化)。宏104可包括最后的xfer_page命令,以及检查错误和关闭作为写入目标的闪存设备的命令,从而去激活活动的页/区域和/或执行为闪存设备指定的任何其它操作。
现在转向图7,图7示出了要由IOP 32和/或处理器22执行的闪速低码(flashcode)的操作的流程图。尽管为了便于理解以特定顺序示出了各个模块,但是可采用其它顺序。闪速代码可包括在被IOP 32和/或处理器22执行时可实现图7中所示的操作的指令。
闪速代码在集成电路10的运行期间可随时被运行。例如,闪速代码可被执行来初始化闪存接口单元30。闪速代码还可在闪存30已经空闲但是将要被存取的任何时候被执行,以重新配置宏存储器44中的宏,等等。
闪存代码可下载任何期望的宏至宏存储器44(模块110)。如果在宏存储器44中已经存储的宏为期望的宏,或者如果不存在期望的宏,那么就跳过模块110。闪速代码还可下载将被这些命令或者宏利用的任何操作数(模块112),并且如果没有操作数要被下载,就跳过模块112。闪速代码可下载将被执行的命令(模块114),并且可在闪存接口单元30中开始命令执行。如果其它命令准备好被下载(判定模块116,“是”分支),那么闪速代码可下载其它代码(模块114)。如果新的操作数或者宏准备好要被下载(判定模块118,“是”分支),闪速代码可返回至模块110和/或112来下载它们。
系统和计算机可存取存储介质
接着转向图8,图8示出了系统150的一个实施例的方框图。在所示实施例中,系统150包括被耦接至一个或者多个外设154和外部存储器158的集成电路10(来自图1)的至少一个实例。外部存储器158可包括存储器12。还提供电源156,其向集成电路10提供电源电压以及向存储器158和/或外设154提供一个或者多个电源电压。在一些实施例中,可包括集成电路10的多于一个的实例(也可包括多于一个的外部存储器158)。
外设154可包括任意期望的电路,这取决于系统150的类型。例如,在一个实施例中,系统150可以是移动设备(例如,个人数字助手(PDA)、智能电话等等),而外设154可包括适于诸如WiFi(无线保真)、蓝牙、蜂窝、全球定位系统等等之类的各种无线通信的设备。外设154还可包括其它存储装置,包括RAM存储装置、固态存储装置或者磁盘存储装置。外设154可包括诸如显示屏的用户界面设备,包括触摸显示屏或者多触摸显示屏、键盘或者其它输入设备、麦克风、扬声器等。在其它的实施例中,系统150可为任意类型的计算系统(例如,桌面个人电脑、膝上电脑、工作站、上网机(net top)等)。
外部存储器158可包括任何类型的存储器。例如,外部存储器158可以是SRAM、诸如同步DRAM(SDRAM)的动态RAM(DRAM)、双倍数据速率(DDR、DDR2、DDR3等)SDRAM、RAMBUS DRAM等。外部存储器158可包括存储器设备可安装到的一个或多个存储器模块,诸如单列直插存储器模块(SIMM)、双列直插存储器模块(DIMM)等。
现在转至图9,图9示出了计算机可存取存储介质200的方框图。一般来讲,计算机可存取存储介质可包括在使用期间可由计算机存取以向计算机提供指令和/或数据的任何存储介质。例如,计算机可存取存储介质可包括诸如磁介质或者光学介质的存储介质,例如,磁盘(固定的或者可移除的)、磁带、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或者蓝光(Blu-Ray)。存储介质还可包括易失性的或者非易失性存储介质,诸如RAM(例如,同步动态RAM(SDRAM)、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、ROM、闪存、通过诸如通用串口总线(USB)接口之类的外围接口可存取的非易失性存储器(例如,闪存)、闪存接口(FMI)、串行外围接口(SPI)等。存储介质可包括微型机电系统(MEMS),以及通过诸如网络和/或无线链接之类的通信介质可存取的存储介质。图5中的计算机可存取存储介质200可存储闪速代码202,其可包括由IOP 32和/或处理器22处理的代码。闪速代码202可包括指令,当被执行时,该指令实现以上参照图7说明的操作。一般地,计算机可存取存相介质200可存储任何指令集,当被执行时,该指令集实现图7中所示的部分或者所有的操作。而且,计算机可存取存储介质200可存储一个或者多个将被下载至宏存储器44的宏204、一个或多个要被下载至操作数FIFO36的操作数、和/或一个或多个要被下载至命令FIFO 40的命令。载体介质可包括计算机可存取存储介质以及诸如有线或者无线传输的传输介质。
本公开的一个实施例提供了一种控制集成电路中的外部接口的设备,所述设备包括:被配置为在所述外部接口上通信的控制器;被配置为存储多个命令的命令队列,所述命令促成所述外部接口上的传送;和被耦接至所述命令队列和所述控制器的控制电路,其中所述控制电路被配置为从所述命令队列中读取所述多个命令,并被配置为启动所述控制器中相应的操作以执行所述传送。在另一实施例中,所述设备还包括被耦接至所述控制器和所述控制电路的多个控制寄存器,其中所述控制器被配置为响应于所述多个控制寄存器中的内容在所述外部接口上进行通信,并且其中所述多个命令包括一个或者多个促使所述控制电路更新所述多个控制寄存器中的一个或多个寄存器的命令。另一实施例中,所述控制电路被配置为在所述集成电路中的内部接口上接收操作,其中所述操作指示所述多个控制寄存器中的一个的直接更新,并且其中所述控制电路被配置为响应于接收到所述操作,对所述控制寄存器中的一个进行更新。另一实施例中,所述控制电路还被配置为在所述内部接口上接收所述多个命令,并且其中所述控制电路被配置为响应于接收到所述多个命令,将所述多个命令写入所述命令队列中。另一实施例中,所述外部接口是存储器接口,并且其中所述多个命令包括第一命令,所述第一命令使得所述控制器向被耦接至所述存储器接口的一个或多个存储器设备发送地址。另一实施例中,所述多个命令包括第二命令,所述第二命令使得所述控制器向所述一个或者多个存储器设备发送指定的一个或者多个芯片的使能信号。另一实施例中,所述多个命令包括第二命令,所述第二命令使得所述控制器在所述集成电路和所述一个或者多个存储器设备之间传送一页数据。另一实施例中,所述存储器接口为闪存接口。另一实施例中,所述设备还包括被配置为存储第二多个命令的宏存储器,其中响应于执行所述多个命令,所述命令队列中的所述多个命令从所述命令队列中被移除,并且其中即使在所述第二多个命令已经被执行时,所述第二多个命令仍保留在所述宏存储器中。另一实施例中,所述命令队列中的所述多个命令中的至少一个命令为促使所述宏存储器中的命令被执行的宏命令。另一实施例中,所述宏命令指定要被执行的所述宏存储器中的第一命令的地址和以所述第一命令开始的要被读取的字的数量,从而所述第二多个命令排除了用于返回命令队列的返回命令。另一实施例中,所述宏命令还指定循环计数操作数,所述循环计数操作数指示将被执行的所述第二多个命令的迭代的次数。另一实施例中,所述第二多个命令包括第二宏命令,所述第二宏命令指定第二命令在所述宏存储器中的第二地址和要被读取的字的第二数量,并且其中所述控制电路被配置为在执行了以所述第二命令开始的第二数量的字中的命令之后返回到所述命令队列。另一实施例中,所述闪存接口单元包括操作数队列,所述操作数队列被配置为存储能够由所述命令队列和所述宏存储器中的命令存取的操作数数据。另一实施例中,所述设备还包括被配置为将所述多个命令载入到所述命令队列中的处理器。另一实施例中,所述设备还包括被配置为存储第二多个命令的宏存储器,其中所述命令队列中的所述多个命令中的宏命令促使所述第二多个命令被执行,并且其中所述处理器还被配置为将所述第二多个命令载入所述宏存储器中。另一实施例中,所述设备还包括操作数队列,所述操作数队列被配置为存储多个操作数,所述多个操作数能够被所述命令队列中的所述多个命令和所述宏存储器中的所述第二多个命令存取,其中所述处理器被配置为将所述多个操作数载入所述操作数队列中。
本公开的一个实施例提供了一种方法(例如,控制集成电路中的外部接口的方法),所述方法包括:从集成电路的存储器接口单元中的命令队列中读取多个命令;和响应于所述命令队列中的所述多个命令,使控制器在所述集成电路的外部接口上与被耦接至所述外部接口的一个或多个存储器设备通信,其中所述多个命令促使所述一个或者多个存储器设备和所述集成电路之间的存储器传送,其中所述存储器传送包括一页或多页数据。另一实施例中,所述多个命令包括使得所述控制器向所述一个或者多个存储器设备发送地址的第一命令,使得所述控制器向所述一个或多个存储器设备发送一组芯片使能的第二命令,和至少一个使得所述控制器传送一页数据的第三命令。另一实施例中,所述多个命令包括使得所述控制器在接口上向所述一个或者多个存储器设备发送对应命令的第一命令,所述对应命令在存储器接口协议中为所述一个或者多个存储器设备定义。
一旦全面理解了以上的公开内容,大量变型和修改对于那些本领域技术人员而言将是明显的。意欲将以下的权利要求解释为包含所有这样的变型和修改。
Claims (20)
1.一种控制集成电路中的外部接口的设备,所述设备包括:
被配置为在所述外部接口上通信的控制器;
被配置为存储多个命令的命令队列,所述命令促成所述外部接口上的传送;
被配置为存储第二多个命令的宏存储器,其中响应于执行所述命令队列中的所述多个命令,所述多个命令从所述命令队列中被移除,并且其中即使在所述第二多个命令已经被执行时,所述第二多个命令仍保留在所述宏存储器中,其中所述命令队列中的所述多个命令中的至少一个命令为促使所述宏存储器中的命令被执行的宏命令,其中所述宏命令指定要被执行的所述宏存储器中的第一命令的地址和以所述第一命令开始的要被读取的字的数量;和
被耦接至所述命令队列和所述控制器的控制电路,其中所述控制电路被配置为从所述命令队列中读取所述多个命令,并被配置为启动所述控制器中相应的操作以执行所述传送,其中所述控制电路被配置为响应于所述宏命令,从所述宏存储器中读取所述数量的字,并且随后执行所述命令队列中在所述宏命令之后的下一命令而无需所述宏存储器中的返回命令,从而所述第二多个命令排除了用于返回到命令队列的返回命令。
2.根据权利要求1所述的设备,还包括被耦接至所述控制器和所述控制电路的多个控制寄存器,其中所述控制器被配置为响应于所述多个控制寄存器中的内容在所述外部接口上进行通信,并且其中所述多个命令包括一个或者多个促使所述控制电路更新所述多个控制寄存器中的一个或多个控制寄存器的命令。
3.根据权利要求2所述的设备,其中所述控制电路被配置为在所述集成电路中的内部接口上接收操作,其中所述操作指示所述多个控制寄存器中的一个的直接更新,并且其中所述控制电路被配置为响应于接收到所述操作,对所述控制寄存器中的一个进行更新。
4.根据权利要求3所述的设备,其中所述控制电路还被配置为在所述内部接口上接收所述多个命令,并且其中所述控制电路被配置为响应于接收到所述多个命令,将所述多个命令写入所述命令队列中。
5.根据权利要求1所述的设备,其中所述外部接口是存储器接口,并且其中所述多个命令包括第二命令,所述第二命令使得所述控制器向被耦接至所述存储器接口的一个或多个存储器设备发送地址。
6.根据权利要求5所述的设备,其中所述多个命令包括第三命令,所述第三命令使得所述控制器向所述一个或者多个存储器设备发送指定的一个或者多个芯片的使能信号。
7.根据权利要求5所述的设备,其中所述多个命令包括第四命令,所述第四命令使得所述控制器在所述集成电路和一个或者多个存储器设备之间传送一页数据。
8.根据权利要求5所述的设备,其中所述存储器接口为闪存接口。
9.根据权利要求1所述的设备,其中所述宏命令还指定循环计数操作数,所述循环计数操作数指示将被执行的所述第二多个命令的迭代的次数。
10.根据权利要求9所述的设备,其中所述第二多个命令包括第二宏命令,所述第二宏命令指定第二命令在所述宏存储器中的第二地址和要被读取的字的第二数量,并且其中所述控制电路被配置为在执行了以所述第二命令开始的第二数量的字中的命令之后返回到所述命令队列。
11.根据权利要求10所述的设备,还包括操作数队列,所述操作数队列被配置为存储能够由所述命令队列和所述宏存储器中的命令存取的操作数数据。
12.根据权利要求1所述的设备,还包括被配置为将所述多个命令载入到所述命令队列中的处理器。
13.根据权利要求12所述的设备,其中所述处理器还被配置为将所述第二多个命令载入所述宏存储器中。
14.根据权利要求13所述的设备,还包括操作数队列,所述操作数队列被配置为存储多个操作数,所述多个操作数能够被所述命令队列中的所述多个命令和所述宏存储器中的所述第二多个命令存取,其中所述处理器被配置为将所述多个操作数载入所述操作数队列中。
15.一种控制集成电路中的外部接口的方法,所述方法包括:
从所述集成电路的存储器接口单元中的命令队列中读取多个命令,其中所述存储器接口单元还包括存储第二多个命令的宏存储器,其中响应于执行所述命令队列中的所述多个命令,所述多个命令从所述命令队列中被移除,并且其中即使在所述第二多个命令已经被执行时,所述第二多个命令仍保留在所述宏存储器中,其中所述命令队列中的所述多个命令中的至少一个命令为促使所述宏存储器中的命令被执行的宏命令,其中所述宏命令指定要被执行的所述宏存储器中的第一命令的地址和以所述第一命令开始的要被读取的字的数量;
响应于所述宏命令,从所述宏存储器中读取所述数量的字,并且随后执行所述命令队列中在所述宏命令之后的下一命令而无需所述宏存储器中的返回命令,从而所述第二多个命令排除了用于返回到命令队列的返回命令;和
响应于所述命令队列中的所述多个命令,使控制器在所述集成电路的所述外部接口上与被耦接至所述外部接口的一个或多个存储器设备通信,其中所述多个命令促使所述一个或者多个存储器设备和所述集成电路之间的存储器传送,其中所述存储器传送包括一页或多页数据。
16.根据权利要求15所述的方法,其中所述多个命令包括使得所述控制器向所述一个或者多个存储器设备发送地址的第二命令,使得所述控制器向所述 一个或多个存储器设备发送一组芯片使能的第三命令,和至少一个使得所述控制器传送一页数据的第四命令。
17.根据权利要求15所述的方法,其中所述多个命令包括使得所述控制器在接口上向所述一个或者多个存储器设备发送对应命令的第二命令,所述对应命令在存储器接口协议中为所述一个或者多个存储器设备定义。
18.根据权利要求15所述的方法,其中所述宏命令还指定循环计数操作数,所述循环计数操作数指示将被执行的所述第二多个命令的迭代的次数。
19.根据权利要求18所述的方法,其中所述第二多个命令包括第二宏命令,所述第二宏命令指定第二命令在所述宏存储器中的第二地址和要被读取的字的第二数量,并且所述方法还包括:执行以所述第二命令开始的第二数量的字,并且随后响应于所述第二宏命令而返回到所述命令队列。
20.根据权利要求15所述的方法,其中所述存储器接口单元包括操作数队列,所述操作数队列被配置为存储能够由所述命令队列和所述宏存储器中的命令存取的操作数数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/615,587 | 2009-11-10 | ||
US12/615,587 US8131889B2 (en) | 2009-11-10 | 2009-11-10 | Command queue for peripheral component |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102053930A CN102053930A (zh) | 2011-05-11 |
CN102053930B true CN102053930B (zh) | 2014-06-25 |
Family
ID=43530829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010608774.4A Active CN102053930B (zh) | 2009-11-10 | 2010-11-10 | 用于外围组件的命令队列 |
Country Status (11)
Country | Link |
---|---|
US (3) | US8131889B2 (zh) |
EP (1) | EP2330596B1 (zh) |
JP (1) | JP5329515B2 (zh) |
KR (1) | KR101248246B1 (zh) |
CN (1) | CN102053930B (zh) |
AU (1) | AU2010319715B2 (zh) |
BR (1) | BR112012011096B1 (zh) |
HK (1) | HK1158356A1 (zh) |
MX (1) | MX2012005183A (zh) |
TW (1) | TWI472923B (zh) |
WO (1) | WO2011059897A1 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8131889B2 (en) | 2009-11-10 | 2012-03-06 | Apple Inc. | Command queue for peripheral component |
US9021146B2 (en) * | 2011-08-30 | 2015-04-28 | Apple Inc. | High priority command queue for peripheral component |
US20130179614A1 (en) * | 2012-01-10 | 2013-07-11 | Diarmuid P. Ross | Command Abort to Reduce Latency in Flash Memory Access |
US8918680B2 (en) | 2012-01-23 | 2014-12-23 | Apple Inc. | Trace queue for peripheral component |
US9513912B2 (en) | 2012-07-27 | 2016-12-06 | Micron Technology, Inc. | Memory controllers |
KR101988287B1 (ko) | 2012-11-26 | 2019-06-12 | 삼성전자주식회사 | 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법 |
US8954632B2 (en) * | 2012-12-31 | 2015-02-10 | Silicon Laboratories Inc. | System method for regulating an input/output interface by sampling during a time duration associated with I/O states |
EP3333853A1 (en) * | 2013-03-07 | 2018-06-13 | Charles I. Peddle | High speed flash controllers |
KR102254099B1 (ko) | 2014-05-19 | 2021-05-20 | 삼성전자주식회사 | 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템 |
US10437483B2 (en) * | 2015-12-17 | 2019-10-08 | Samsung Electronics Co., Ltd. | Computing system with communication mechanism and method of operation thereof |
KR102643467B1 (ko) | 2016-05-31 | 2024-03-06 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN107564563B (zh) * | 2016-06-30 | 2020-06-09 | 华邦电子股份有限公司 | 存储器装置及其操作方法 |
CN106528458B (zh) * | 2016-11-01 | 2020-09-08 | 广东浪潮大数据研究有限公司 | 一种接口控制器、基板管理控制器及安全系统 |
CN109983538B (zh) * | 2016-11-29 | 2023-06-16 | Arm有限公司 | 存储地址转换 |
CN108829446A (zh) * | 2018-06-04 | 2018-11-16 | 张剑飞 | 基于蓝牙hid实现外设宏功能的方法 |
CN112015527B (zh) * | 2019-05-29 | 2024-03-22 | 闪迪技术有限公司 | 管理从提交队列获取和执行命令 |
US11093244B2 (en) | 2019-08-28 | 2021-08-17 | Micron Technology, Inc. | Command delay |
US11163490B2 (en) * | 2019-09-17 | 2021-11-02 | Micron Technology, Inc. | Programmable engine for data movement |
CN111221756B (zh) * | 2019-11-13 | 2023-06-30 | 北京中航通用科技有限公司 | 一种上位机高效下行数据传输的方法 |
KR102668564B1 (ko) | 2021-06-01 | 2024-05-24 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
US11789658B2 (en) | 2021-04-13 | 2023-10-17 | SK Hynix Inc. | Peripheral component interconnect express (PCIe) interface system and method of operating the same |
US20220327074A1 (en) * | 2021-04-13 | 2022-10-13 | SK Hynix Inc. | PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME |
KR102518317B1 (ko) * | 2021-04-13 | 2023-04-06 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
US20240030401A1 (en) * | 2022-07-21 | 2024-01-25 | Enevate Corporation | Systems and methods for thermal curing of water soluble polymers for silicon dominant anodes |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1918551A (zh) * | 2004-02-05 | 2007-02-21 | 米克伦技术公司 | 用于存储器模块的动态命令和/或地址镜像系统和方法 |
WO2009057955A2 (en) * | 2007-11-01 | 2009-05-07 | Eastwho Co., Ltd. | Apparatus for controlling nand flash memory |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790887A (en) | 1996-02-15 | 1998-08-04 | International Business Machines Corporation | Method and apparatus for processing programmed input/output (PIO) operations in a computer system |
US6201739B1 (en) | 1996-09-20 | 2001-03-13 | Intel Corporation | Nonvolatile writeable memory with preemption pin |
US5822244A (en) | 1997-09-24 | 1998-10-13 | Motorola, Inc. | Method and apparatus for suspending a program/erase operation in a flash memory |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6389479B1 (en) * | 1997-10-14 | 2002-05-14 | Alacritech, Inc. | Intelligent network interface device and system for accelerated communication |
JPH11242632A (ja) * | 1998-02-26 | 1999-09-07 | Hitachi Ltd | メモリ装置 |
US6330656B1 (en) * | 1999-03-31 | 2001-12-11 | International Business Machines Corporation | PCI slot control apparatus with dynamic configuration for partitioned systems |
US8341332B2 (en) | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US6779045B2 (en) | 2001-03-21 | 2004-08-17 | Intel Corporation | System and apparatus for increasing the number of operations per transmission for a media management system |
US6981073B2 (en) | 2001-07-31 | 2005-12-27 | Wis Technologies, Inc. | Multiple channel data bus control for video processing |
KR100448905B1 (ko) | 2002-07-29 | 2004-09-16 | 삼성전자주식회사 | 낸드플래쉬메모리를 시스템구동 및 저장용으로 사용하는장치 |
US7121639B2 (en) | 2002-12-02 | 2006-10-17 | Silverbrook Research Pty Ltd | Data rate equalisation to account for relatively different printhead widths |
FR2863076B1 (fr) * | 2003-11-28 | 2006-02-03 | Bull Sa | Systeme cryptographique haut debit a architecture modulaire. |
US7493426B2 (en) | 2005-01-31 | 2009-02-17 | International Business Machines Corporation | Data communication method and apparatus utilizing programmable channels for allocation of buffer space and transaction control |
KR20080017982A (ko) | 2006-08-23 | 2008-02-27 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그 프로그램 방법 |
JP2008117505A (ja) | 2006-11-03 | 2008-05-22 | Spansion Llc | 半導体装置およびその制御方法 |
KR100843136B1 (ko) | 2006-11-14 | 2008-07-02 | 삼성전자주식회사 | 비휘발성 메모리에서 연산 처리를 제어하는 장치 및 그방법 |
US7627744B2 (en) * | 2007-05-10 | 2009-12-01 | Nvidia Corporation | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
US8533678B2 (en) * | 2007-07-13 | 2013-09-10 | Digi International Inc. | Embedded device program debug control |
US8151100B2 (en) * | 2008-02-06 | 2012-04-03 | Broadcom Corporation | Operating system for a computing device with handheld and extended computing units |
KR101486987B1 (ko) * | 2008-05-21 | 2015-01-30 | 삼성전자주식회사 | 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법 |
US8850103B2 (en) | 2009-08-28 | 2014-09-30 | Microsoft Corporation | Interruptible NAND flash memory |
US8131889B2 (en) | 2009-11-10 | 2012-03-06 | Apple Inc. | Command queue for peripheral component |
-
2009
- 2009-11-10 US US12/615,587 patent/US8131889B2/en active Active
-
2010
- 2010-11-08 MX MX2012005183A patent/MX2012005183A/es active IP Right Grant
- 2010-11-08 WO PCT/US2010/055769 patent/WO2011059897A1/en active Application Filing
- 2010-11-08 BR BR112012011096-9A patent/BR112012011096B1/pt active IP Right Grant
- 2010-11-08 AU AU2010319715A patent/AU2010319715B2/en active Active
- 2010-11-09 TW TW99138554A patent/TWI472923B/zh active
- 2010-11-10 JP JP2010265719A patent/JP5329515B2/ja active Active
- 2010-11-10 KR KR1020100111799A patent/KR101248246B1/ko active IP Right Grant
- 2010-11-10 CN CN201010608774.4A patent/CN102053930B/zh active Active
- 2010-11-10 EP EP10190745.9A patent/EP2330596B1/en active Active
-
2011
- 2011-11-22 HK HK11112635.3A patent/HK1158356A1/xx not_active IP Right Cessation
-
2012
- 2012-01-27 US US13/359,533 patent/US8332543B2/en active Active
- 2012-11-09 US US13/672,989 patent/US8396994B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1918551A (zh) * | 2004-02-05 | 2007-02-21 | 米克伦技术公司 | 用于存储器模块的动态命令和/或地址镜像系统和方法 |
WO2009057955A2 (en) * | 2007-11-01 | 2009-05-07 | Eastwho Co., Ltd. | Apparatus for controlling nand flash memory |
Also Published As
Publication number | Publication date |
---|---|
US8332543B2 (en) | 2012-12-11 |
KR101248246B1 (ko) | 2013-03-27 |
EP2330596A1 (en) | 2011-06-08 |
TWI472923B (zh) | 2015-02-11 |
JP2011146035A (ja) | 2011-07-28 |
JP5329515B2 (ja) | 2013-10-30 |
MX2012005183A (es) | 2012-06-08 |
EP2330596B1 (en) | 2013-07-31 |
KR20110052510A (ko) | 2011-05-18 |
BR112012011096B1 (pt) | 2020-09-24 |
US8131889B2 (en) | 2012-03-06 |
AU2010319715A1 (en) | 2012-05-17 |
US8396994B1 (en) | 2013-03-12 |
US20120124243A1 (en) | 2012-05-17 |
BR112012011096A2 (pt) | 2017-09-19 |
TW201131368A (en) | 2011-09-16 |
WO2011059897A1 (en) | 2011-05-19 |
HK1158356A1 (en) | 2012-07-13 |
US20110113167A1 (en) | 2011-05-12 |
CN102053930A (zh) | 2011-05-11 |
AU2010319715B2 (en) | 2014-06-05 |
US20130080660A1 (en) | 2013-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102053930B (zh) | 用于外围组件的命令队列 | |
CN102968289B (zh) | 用于外围组件的高优先级命令队列 | |
JP5128122B2 (ja) | アドレススペースエミュレーション | |
CN102567109B (zh) | 中断分配方案 | |
US8266369B2 (en) | Flash memory interface | |
CN103034454B (zh) | 柔性闪存命令 | |
US20130179614A1 (en) | Command Abort to Reduce Latency in Flash Memory Access | |
CN104520932A (zh) | 闪存存储器控制器 | |
US20160179388A1 (en) | Method and apparatus for providing programmable nvm interface using sequencers | |
US8918680B2 (en) | Trace queue for peripheral component | |
JP2010501915A (ja) | メモリ用モジュールコマンド構造およびメモリシステム | |
CN101135998A (zh) | 用于调度总线上的命令的方法和装置 | |
US20180275914A1 (en) | Methods for garbage collection and apparatuses using the same | |
CN103092781A (zh) | 闪存接口的有效利用 | |
CN102880574A (zh) | 利用gpio模拟低速并行接口的方法 | |
US20180336147A1 (en) | Application processor including command controller and integrated circuit including the same | |
CN118210561A (zh) | 一种fpga快速加载方法、装置、设备及介质 | |
EA038978B1 (ru) | Устройство прямого отображения адресов данных, располагающихся во внешнем последовательном пзу, в адресное пространство микропроцессорного ядра, компьютерная система и способ передачи данных |
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 |