CN114281393A - 同时编程多个存储器装置的方法与系统 - Google Patents
同时编程多个存储器装置的方法与系统 Download PDFInfo
- Publication number
- CN114281393A CN114281393A CN202110155791.5A CN202110155791A CN114281393A CN 114281393 A CN114281393 A CN 114281393A CN 202110155791 A CN202110155791 A CN 202110155791A CN 114281393 A CN114281393 A CN 114281393A
- Authority
- CN
- China
- Prior art keywords
- controller
- memory devices
- program
- coupled
- outputs
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Stored Programmes (AREA)
Abstract
本发明是关于同时编程运算装置中多个闪存装置的系统与方法。该运算装置包含交换单元,该交换单元包含一个输入与多个输出。该交换单元连接该输入至该多个输出的一个或多个。其中,每一闪存装置都与该交换单元的一输出耦接。控制总线与该交换装置耦接。该控制总线传递控制信号,以选择该多个输出的一个或多个连接至该输入。编程接口总线与该交换单元的输入耦接。控制器与该控制总线及该编程接口总线耦接。该控制器选择该多个存储器装置,以经由该编程接口总线提供程序至该多个存储器装置。
Description
技术领域
总体而言,本发明有关于将映像写入运算装置中的多个闪存。本发明某些方面特别关于一个系统,该系统可有效率地更新储存于多个闪存装置中的数据。
背景技术
服务器(server)在高需求的应用中被大量采用,例如基于网络的系统(networkbased system)或数据中心(data center)。用于计算应用的云端(cloud)的出现,增加了对数据中心的需求。数据中心具有多个服务器,该多个服务器储存数据并运行应用程序,该多个应用程序由远程链接的计算机装置用户存取。一典型的数据中心具有实体机壳结构,伴随电源与通信链接。每一单独的服务器具有多个相同的硬件部件,例如处理器、储存卡、网络接口控制器等。许多硬件部件,例如处理器核心,需要相同的固件例程(firmwareroutines),例如由处理器核心执行的基本输入/输出系统(Basic Input/Output System,BIOS),以进行例如数据输入与输出的功能。
用于硬件部件的固件,例如BIOS固件(BIOS映像(image)),一般储存于服务器主板上的一个串行外围接口(Serial Peripheral Interface,SPI)的电可擦除可编程只读存储器(Electrically Erasable Programmable Read Only Memory,EEPROM)的闪存(flashmemory)装置。储存该BIOS映像的可用空间,取决于EEPROM的空间,依照该EEPROM的硬件设计而定。
为增加相同硬件部件的灵活性与同时操作数量,硬件设计可能使用多个SPIEEPROM,以储存相同硬件部件的相同映像。总体而言,在一计算机装置(例如服务器或交换器系统(switch system))中,有一个或多个SPI闪存,用于支持不同硬件部件。举例而言,部件(例如处理器核心)需要固件,例如开机程序代码、数据程序代码、初始化程序代码,以及其他程序代码。此固件储存在一对应的SPI闪存中。该固件负责进行该中央处理器(CentralProcessing Unit,CPU)或其他关键芯片的开机或初始化操作。
一般而言,现存固件中可能发现程序错误(bug),或新固件版本中可能加入新功能。因此,SPI闪存经常需要覆盖写入新程序代码。若运算装置中有多个闪存,通常将花费冗长时间将新固件写入该多个存储器,因而造成该计算装置过长的停机时间(downtime)。将一新映像写入运算装置中所有SPI闪存所需的时间,是基于该程序数据大小、时钟频率、闪存数量,与其他因素。
闪存装置的容量大小,通常由应用程序的存储器需求、该闪存装置的规格或供货商定义。这些装置参数为不可变更。尽管SPI时钟频率可提升,以提升存储器操作速度,然而这种提升受印刷电路板布局(PCB layout)、走线长度(trace length)与该闪存芯片写入速度的限制。
图1显示一种先前技术系统10,该系统采用传统SPI闪存程序例程(programmingroutine)。该系统10包含一个控制器12、一个多路复用器(multiplexer,MUX)单元14,及一系列SPI闪存16。在此例中,有1至n个SPI闪存。该多个SPI闪存16中,每一个都储存相同数据(例如固件映像),该多个相同数据可由对应的相同硬件部件存取。该MUX单元14准许程序数据输入、并写入该1至n个SPI闪存16中的一选定存储器。该控制器12以一个通用输入/输出(General Purpose Input/Output,GPIO)引脚,与一控制接口20(例如集成电路集成总线(Inter-Integrated Circuit Bus,I2C)界面)耦接。该控制器12以一个SPI总线22,与该MUX单元14耦接。该程序(例如固件映像)由该控制器12经由该SPI总线22送出。一个由该控制器12传送至该控制接口20的信号,选择该MUX单元14一系列输出引脚24中之一。来自该SPI总线22的输入程序,经由该选定的输出引脚24传送,随后该固件被传输至该多个SPI闪存16中,与该选定的输出引脚24相连者。
在此例中,该控制器12依序单独编程每一闪存16。因此,该控制器12首先经由该控制接口20,选择该MUX单元14的一输出引脚24。选定后,该控制器12经由该SPI总线22,传送该程序至与该选定的输出引脚24相连的闪存16。在第一个闪存16被编程时,其余闪存16依序等待编程。该固件映像经由该SPI总线22传送后,一个验证信号从该MUX 14选择的闪存16被传送,以验证该固件映像的一次成功写入。在验证后,该控制器12选择下一存储器装置16,并重复该多个编程及验证动作,直至所有存储器16都接收该固件映像为止。
由于所有闪存16都以同一固件映像编程,因此仅须验证其一的固件映像。在此例中,该多个闪存16以每次一个的方式被编程。该多个闪存16中,每一闪存16在该程序代码完整写入该闪存16的动作获得验证时,都回传一验证信号至该控制器12。写入所有存储器装置的开始至结束时间,包括将该程序代码写入该多个闪存16之一的时间,及在该多个闪存16之一中验证该程序代码的时间。因此,写入所有该多个闪存16所需的总时间,为编程一个闪存的时间,加上验证该程序的时间。此一加总结果的时间,还须乘上闪存16的总数,并加上该MUX 14选择该多个输出的总选择时间。因此,该已知系统10的更新例程,在发布新固件映像至一运算装置上的多个闪存时,将造成可观延迟。
因此,亟需一例程,该例程可高效地编程一运算装置上的多个闪存。亟需一系统,该系统具有一改进的MUX,可处理多个闪存中的任何数量或全部,以用于同时写入固件映像至该多个存储器。还亟需一系统,该系统可控制选定程序存储器的验证程序。
发明内容
本发明的一例为包含一个交换单元(switching unit)的运算系统,该交换单元包含一个输入与多个输出。该交换系统连接该输入至该多个输出中的一个或多个。在多个闪存装置中,每一个都与该交换单元的输出中之一耦接。一控制总线与该交换单元耦接。该控制总线携带一控制信号,以选择该多个输出中的一个或多个,与该输入连接。一程序接口总线与该交换单元的输入耦接。该控制器经由该程序接口总线,提供程序至该多个闪存装置。
该示例系统的进一步实施,是该控制器为一基板管理控制器(BaseboardManagement Controller,BMC)。另一实施是该控制器选择单一存储器装置,经由该程序接口总线传递验证至该控制器。另一实施是该交换单元包含一控制缓存器(controlregister)。该控制缓存器包括多个位,用于选择要与该输入链接的输出,及多个位,用于选择传送验证的单一存储器装置。另一实施是该交换单元为现场可编程门阵列(FieldProgrammable Gate Array,FPGA)、复杂可编程逻辑器件(Complex Programmable LogicDevice,CPLD)、可编程逻辑器件(Programmable Logic Device,PLD)或专用集成电路(Application Specific Integrated Circuit,ASIC)中之一。另一实施是该控制接口为一I2C总线。另一实施是该程序接口总线为一SPI接口。另一实施是该多个存储器装置为SPI闪存。另一实施是该系统包括多个硬件部件。该多个硬件部件中,每一个部件都存取一对应的该多个存储器装置之一。该程序为一固件映像,用于操作该多个硬件部件中每一个部件。另一实施是该系统包含一第二程序接口总线,该总线与该交换单元的输入耦接。该系统包括一第二控制器,该第二控制器与该控制总线及该第二程序接口总线耦接。该第二控制器经由该第二程序接口总线提供程序至该多个存储器装置。另一实施是该系统包括一个与该控制总线耦接的第一扩充卡。该多个存储器装置的第一集合位于该第一扩充卡上。该第一扩充卡包括一个第一交换装置,该第一交换装置具有一个与该交换单元输出之一耦接的输入。该交换装置包括一组输出,每一输出都与一对应的第一集合存储器装置耦接。另一实施是该系统包含一个与该控制总线耦接的第二扩充卡。该多个存储器装置的第二集合位于该第二扩充卡上。该第二扩充卡包括一个第二交换装置,该第二交换装置具有一个与该交换单元输出之一耦接的输入。该第二交换装置包括一组输出,每一输出都与一对应的第二集合存储器装置耦接。
本发明的另一例为一方法,该方法可同时编程一运算系统中的多个存储器装置。一交换单元中的一个或多个输出被选择。该交换单元包括一输入。一控制信号由控制器经由一控制总线被传递至该交换单元,以连接该输入与选定的输出。程序由该控制器提供,经由一程序接口总线传递至该输入。该程序被传递至多个闪存装置。该多个闪存装置中,每一个都与该交换单元的选定输出中之一耦接。
该示例系统的进一步实施,是该控制器为一BMC。该交换单元为FPGA、CPLD、PLD或ASIC中之一。该控制接口为一I2C总线。该多个存储器装置为SPI闪存。另一实施是该方法包括在该多个存储器装置中选择单一存储器装置以传送验证。该程序经由该选定的存储器装置被验证。该验证经由该程序接口总线传递至该控制器。另一实施是该验证为该程序完整验证之一,或该程序的校验和(checksum)。另一实施是该交换单元包括一控制缓存器。该控制缓存器包括多个位,用于选择要与该输入链接的输出,及多个位,用于选择传送验证的单一存储器装置。另一实施是该方法包括多个硬件部件,其中每一部件都存取一对应的该多个存储器装置之一。该程序为一固件映像,用于操作该多个硬件部件中每一个部件。另一实施是该方法包括经由一个第二控制器,选择该交换单元中的一个或多个输出。一控制信号从该第二控制器经由该控制总线传递至该交换单元,以连接该输入与该多个选定的输出。该第二控制器经由该第二程序接口总线提供程序至该输入。该程序被传递至该多个闪存装置。该多个存储器装置中,每一个都与该交换单元中的选定输出之一耦接。
上述概要并非意图表示每一实施例,或本发明的所有方面。反之,前述的概要仅提供部分在此阐述的新颖方面与特征的示例。下文详述的代表性实施例与模式是为实行本发明而列举,若将该多个实施例及模式与附图及附录的权利要求链接,则上述特征与优点,与本发明的其他特征与优点,将显而易见。
附图说明
为达对本发明较佳的理解,建议将下述的代表性实施例,参照附图一同阅读。其中:
图1为一先前技术系统,该系统显示一个提供固件映像至多个闪存装置的顺序;
图2为一示例系统,该系统可更高效地同时提供固件映像至多个闪存装置;
图3为一列表,该列表显示在图2的示例系统中,该改进MUX的控制缓存器的选择;
图4为另一系统,根据本发明的某些方面,该系统可编程多张卡上的闪存;以及
图5为一示例例程的流程图,该例程准许同时写入多个闪存装置。
本发明可作多种改进与其他形式的解释。某些代表性实施例的示例在附图中呈现,并将在此详述。然而,应注意,本发明并非意图限定在已揭示的特定形式。反之,本发明的目的是在涵盖所有落于本发明的精神与范围内的改进、等效及另类系统与方法,其中本发明为附录的权利要求所定义。
具体实施方式
本发明可以多种不同形式实施。代表性实施例显示于附图,并将在此详述。本发明是其原则的示例或图标,而非意图将本发明的广阔方面限制于该多个图示的实施例。进一步而言,若组件与限制在本说明书中揭示,但未明确阐述于权利要求中,则该多个组件与限制不应被并入权利要求中,不论以单独或集体的形式,或以隐含、推论或其他手段。就本详述而言,除非另有否认,否则单数词汇都包含复数词汇,反之亦然;“包含/包括”一词意指“包括但不限于”。此外,表近似的词汇,例如“大约”、“近乎”、“基本上”、“约略”等,可在此用以意指“于”、“接近”、“近于”、“在3-5%内”或“在可接受的制造容许误差内”,或其中的逻辑组合等。
在此揭示的示例包含一系统与方法,该系统与方法可高效地编程多个闪存装置。该编程动作经由一改进的多路复用器发生,该多路复用器准许同一固件映像同时写入多个闪存装置。该程序因此可减少更新固件映像至多个闪存装置所需的时间。
图2显示一示例运算系统100,该运算系统100可高效地同时编程多个SPI闪存装置。该运算系统100可能为一服务器、交换器系统或任何其他运算装置。该系统100包括一控制器112、一MUX单元114,与一系列存储器116a、116b、116c及116n。在本示例中,该多个存储器116a、116b、116c及116n为SPI闪存装置。然而,其他存储器装置,例如micro SD卡、数据存取型闪存(dataflash)与较简单的25Cxx系列SPI EEPROM也可使用。在本示例中,共有1至n个SPI闪存,例如第一存储器116a与最末的存储器116n,该多个SPI闪存的编号为连续。在本示例中,该控制器112为任何合适的控制器装置,例如中央处理器(Central ProcessingUnit,CPU)、微控制器(microcontroller unit,MCU)、基板管理控制器(BaseboardManagement Controller,BMC)等。该控制器112包括不同接口,例如SPI接口、I2C接口、PCIe(Peripheral Component Interconnect Express,高速外设组件互连标准)接口或LPC(lowpin count,低引脚计数)接口,该多个接口使该控制器112可经由总线与其他位于该系统100上的硬件部件通信。该控制器112包括至少一个通用输入/输出(General PurposeInput/Output,GPIO)引脚,该引脚使信号可被该控制器112接收,或传递至该控制器112。
在本示例中,该MUX单元114为一交换装置,传送一输入至一个或多个输出,其中每一输出各连接至该多个存储器116a、116b、116c与116n之一。在本示例中,这些功能被编程在一复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)中。然而,该MUX单元114可能为任何合适的装置,例如现场可编程门阵列(Field Programmable Gate Array,FPGA)、可编程逻辑器件(Programmable Logic Device,PLD)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)或可编程控制器等,该装置使在此描述的功能可进行。该/该多个由该MUX单元114传送该输入的输出,是由一控制缓存器所设定。在本示例中,该MUX单元114具有单一输入124与八个可由该控制缓存器选择的输出126。
该MUX单元114使程序(例如固件映像)可传递至该1至n个SPI闪存中的一个或多个,例如该多个存储器116a、116b、116c与116n。在本示例中,共有八个储存相同数据的SPI闪存,包含该多个存储器116a、116b、116c与116n。例如,可能有八个硬件部件,例如硬件部件118a、118b、118c与118n,该多个硬件部件都使用对应的存储器116a、116b、116c与116n中相同的编程数据操作,并存取该对应存储器中相同的编程数据。例如,储存在该多个存储器116a、116b、116c与116n中的数据可能包含作业固件(operating firmware)、其他映像、程序代码或参数数据。因此,该硬件部件118a在操作时存取储存于该闪存116a中的固件与参数数据。相应地,该硬件部件118b在操作时存取该闪存116b中的固件与参数数据。
该控制器112与一控制接口120耦接,该控制接口120在本示例中为一I2C接口。该控制接口120经由一个该控制器112上的通用输入/输出(General Purpose Input/Output,GPIO)引脚连接。该控制接口120由该控制器112传递控制信号至该MUX单元114。该控制器112也与该MUX的输入124以一SPI总线122耦接。用于该多个闪存116a、116b、116c与116n的该程序(例如固件映像),由该控制器112经由该SPI总线122传递。该控制接口120使该控制器112可设定该MUX单元114中的控制缓存器,以选择该多个输出引脚126中的一个或多个。来自该SPI总线122的输入,经由该/该多个选定的输出引脚126传递。依据该MUX单元114中控制缓存器的选择,该固件映像被传输至该多个SPI闪存116a、116b、116c与116n中的一个或多个。
在本示例中,该控制器112可同时编程该多个闪存116a、116b、116c与116n中的多个。因此,该控制器112首先经由控制接口120设定该MUX单元114中的控制缓存器,以选择该多个输出引脚126连接至该输入124。选定后,该控制器112经由该输入124传送该程序,以编程多个闪存116a、116b、116c与116n。该MUX单元114被设定为同时传送该已接收的程序至该多个选定的输出引脚126。该程序经由该SPI总线122传送后,一验证信号由该多个存储器116a、116b、116c与116n中的第一闪存(由该MUX单元114选择,以进行验证)回传。其他选定供验证的存储器将依序回传其验证信号至该控制器112。因此,该多个存储器116a、116b、116c与116n中选定存储器的总编程时间,为单一存储器的编程时间,加上所有验证信号都被传送所需的时间。
因此,若编程一个闪存装置的所需时间为T,则以上述程序编程n个闪存装置所需的时间也为T。因此,若n个闪存装置使用相同程序(例如固件映像),则可采用上述程序,以同时编程所有闪存装置。因此,编程多个闪存所需的时间,即为编程单一闪存所需的时间,而不论该系统100中闪存的数量为何。
相比于图1中的先前技术示例系统10,图2中运算系统100的示例闪存程序可提供程序至该系统100的闪存中的单一、多个或全部。验证可选择性地对该多个存储器116a、116b、116c与116n中的单一或其他数量的闪存进行。程序可能被完整验证,或以校验和(checksum)验证。编程图2中运算系统100所有闪存所需的时间,为编程单一闪存所需的时间,加上验证时间与受验证的闪存数量的乘积,再加上该MUX单元114的选择时间与受验证的闪存数量的乘积。
在本示例中,该SPI总线122具有四个信号线,包含一个串行时钟线(serial clockline,SCLK)、一个从机选择线(slave select line,SS)、一个主机输出从机输入信号线(master out slave in,MOSI)与一个主机输入从机输出信号线(master in slave out,MISO)。该多个SPI闪存116a、116b、116c与116n具有标准(standard)、双线(dual)与四线(quad)模式。该控制接口120为该控制器112所使用,以通过设定该MUX的控制缓存器,控制该MUX单元114的状态。
因此,该控制器112经由下列程序,将程序数据写入该多个存储器116a、116b、116c与116n中的一个或多个。该控制器112首先设定该MUX控制缓存器,选择要编程的闪存装置(例如116a、116b、116c与116n)的数量。该控制器112还设定该MUX控制缓存器,选择要验证的存储器装置。若在该编程程序中选择默认设定,则该多个闪存的程序将全部被选择,因此不必设定该控制缓存器。该控制器112指定一文件(该文件可能为固件、映像、程序代码或参数数据),以开始该编程程序,并选择验证模式。在本示例中,该验证模式可能为完整固件映像验证,或较快速的校验和程序。在本示例中,默认的验证模式为完整固件映像验证。接着,该控制器112经由该SPI总线122传输该程序(例如固件映像)至该MUX单元114的输入124。该MUX单元114同时传送该编程数据至所有选定的存储器装置,该多个选定的存储器装置与该多个选定的输出126连接。
编程所有该多个选定的存储器装置完成后,该控制器112执行的例程将设定写入该MUX单元114的控制缓存器,以选择该多个存储器116a、116b、116c与116n中,要验证该程序的存储器。每一要验证的存储器依序被选择,此时该控制器112等待由该选定的存储器传出的验证信号。接着,该控制器112更新一状态字段(status field),以显示该必要固件已被写入该多个存储器(例如存储器116a、116b、116c与116n),且对该多个存储器的验证已完成。因此,该控制器112在编程时更新该状态字段的编程状态,并在编程完成后产生一状态报告。
图3显示一表格300,该表格是该MUX控制缓存器的设定,此设定可能由图2中的该控制器112经由该控制接口120进行。在本示例中,该MUX控制缓存器为一个十六位缓存器,然而较大或较小的缓存器也可使用,与须编程的闪存装置数量相对应即可。
如该表格300所示,该缓存器的位12-15(310)预留一空间,以便将该SPI总线122设定为标准模式、双线模式或四线模式。该标准模式是该SPI总线122指明四个逻辑信号(SCLK,CS,MOSI与MISO)。该缓存器的位8-11(320)预留一空间,以便设定要验证的特定输出及其对应的存储器装置。因此,设定0000是选择图2中第一个SPI闪存装置116a进行验证,而设定0111是选择图2中第八个SPI闪存装置116n进行验证。如上所述,该控制器112通过开启与须验证的存储器装置对应的位,启动特定的存储器装置用于验证。因此,若全部八个存储器都须验证,则该控制器112将通过设定该多个位8-11(320)的值,依序逐一启动该多个存储器装置,并从每一存储器装置各接收一验证信号。若仅有部分存储器装置须验证,则该控制器112将通过设定该多个位8-11,逐一在该多个须验证的存储器装置间循环切换。
列于该表格300中的该控制缓存器的位0-7预留一空间,以便选择一特定存储器装置,以从该SPI总线122接收程序。因此,位0(330)可开启第一存储器116a用于编程。位1(332)可开启第二存储器装置116b用于编程。位2(334)可开启第三存储器装置116c用于编程。位3(336)可开启第四存储器装置用于编程。位4(338)可开启第五存储器装置用于编程。位5(340)可开启第六存储器装置用于编程。位6(342)可开启第七存储器装置用于编程。位7(344)可开启第八存储器装置用于编程。以此方式,该控制器112可通过设定该控制缓存器的该/该多个对应的位0-7,同时开启该多个八个存储器装置中的一个、多个或全部用于编程。
图4为另一运算系统400,该系统包含两个控制器410与412,并可同时编程多个闪存装置。该系统400包括一MUX单元414。该多个控制器410与412与一控制接口420耦接,该控制接口使该多个控制器410与412可选择该MUX单元414的输出。在本示例中,该控制器410与一SPI总线422耦接。该控制器412与另一总线耦接,例如PCIe总线424。一个总线转换器单元426将该PCIe总线424的总线信号,转换至第二个与该MUX单元414耦接的SPI总线428。
在本示例中,该MUX单元414为一个被编程为交换器的CPLD。该MUX单元414使程序可由该二输入430与432中之一,传递至一个或多个输出436。该SPI总线422与该输入430耦接。该第二SPI总线428与该输入432耦接。在本示例中,该MUX单元414包括八个输出436。
该系统400包括扩充卡,例如扩充卡440a、440b、440c与440n。任何数量的相同扩充卡都可使用,该多个相同之扩充卡与该扩充卡440a相似即可。该多个扩充卡(例如扩充卡440a、440b、440c与440n)都包括相同的硬件部件,及其对应的闪存装置,例如在该扩充卡440a上的存储器450a、450b与450m。该多个扩充卡上的相同硬件部件,为多个SPI闪存中的相同固件所支持。每一扩充卡(例如该多个扩充卡440a、440b、440c与440n)都连接至该MUX单元414的一输出436。
在本示例中,该扩充卡440a包括一MUX单元442,该MUX单元442具有一输入,该输入与该MUX单元414的输出436之一耦接。该扩充卡440a还与该控制接口420耦接。该MUX单元442的输出与额外的闪存装置450a、450b与450m耦接,该多个额外的闪存装置450a、450b与450m分别与内置于该扩充卡440a上的硬件部件(未显示于图中)对应。
该多个控制器410或412中之一,可编程位于该多个扩充卡(440a、440b、440c与440n中的任何或全部)上的闪存装置。在本示例中,来自该控制器410的程序经由该SPI总线422传递至该MUX单元414。来自该控制器412的程序经由该PCIe总线424传递。该程序由该总线转换器426转换至该第二SPI总线428,再传递至该MUX单元414。或者,该第二控制器412也可能具有一SPI接口,因而可直接经由SPI总线通信。在该多个控制器410与412上的其他种类总线与对应的接口也可使用,搭配一总线转换器(例如该总线转换器426)使用即可。例如,其他接口可能包括USB(Universal Serial Bus,通用串行总线)或LPC接口。
该系统400可同时编程该多个扩充卡440a、440b、440c与440n上的存储器装置。由于该多个扩充卡上的MUX单元(例如MUX单元442)都与该MUX单元414串联,因此该MUX单元414可支持该多个扩充卡440a、440b、440c与440n间之串接,且闪存的数量可通过串联额外的MUX单元而进一步增加。由一控制器(例如该控制器410)送出的控制信号,经由该控制接口420,可选择该多个扩充卡440a、440b、440c与440n中的一个或多个,及其对应的存储器,例如该多个存储器装置450a、450b与450m中的一个或多个。接着,来自该控制器的程序,可能被传送至所有选定的存储器装置。或者,该控制器412可能传送程序至所有选定的存储器装置。经由与上述程序类似的程序,验证可能经由该MUX(例如位于一选定的扩充卡(例如扩充卡440a)上之MUX单元442)上的一控制缓存器,从选定的存储器进行。
该系统400可在对所有该多个存储器装置编程的程序中,实现节省大量时间的目的。例如,一个逐一编程各闪存的传统系统(例如图1的系统10),其编程程序所需时间为T*n*m+S。其中T代表编程与验证单一闪存所需的时间。因此,T为编程单一闪存的时间P加上验证时间V的和。n代表扩充卡的数量。m代表每一扩充卡上闪存的数量。S代表选择时间,可定义为s1*(n-1)+n*s2*(m-1),其中s1为该MUX单元414选择一扩充卡的时间,s2为该MUX单元442选择一闪存的时间。因此,若n=8;m=8;T=1分钟;P=0.5分钟;V=0.5分钟;s1=s2=0.05秒,则编程时间共为
T*n*m+S
=1分钟*8*8+3.15秒
=64分钟3.15秒。
相比之下,若使用在此描述的程序,且s=s1=s2,若未使用验证,则编程时间仅为T或T+s,可在一分钟或一分钟又0.05秒内完成编程。若该多个闪存装置进行验证,则总时间为
T+s*n*(m-1)+V*n*(m-1)
=1分钟+0.05秒*8*(8-1)+0.5分钟*8*(8-1)
=29分钟2.8秒。
因此,揭示的示例编程程序可缩短约一半的总编程时间。
此改进的程序以下述方法进行,可参阅图5中所示的流程。图5为一示例例程的流程图500,该例程由图2中的控制器112执行,以根据本发明的某些方面,同时提供程序(例如固件映像)至存储器装置。图5中的流程图,代表编程多个SPI闪存装置程序的示例机器可读指令(machine readable instructions)。在本示例中,该多个机器可读指令包含算法,供下列装置执行:(a)处理器;(b)控制器;和/或(c)一个或多个合适的其他处理装置。该算法可能以储存在有形媒体(例如闪存、只读存储光盘(Compact Disc Read-Only Memory,CD-ROM)、软盘、硬盘、数字多功能激光视盘(Digital Video(Versatile)Disk,DVD)或其他存储器装置)的软件形式实施。然而,本领域技术人员将可注意到:该算法的全部或部分,也可由处理器以外的装置执行,和/或以固件或专用硬件,以已知的方式实施(例如可以专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)、现场可编程逻辑器件(Field Programmable LogicDevice,FPLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或离散逻辑门等方式实施)。例如,任何或全部该多个接口部件可以软件、硬件或固件实施。此外,由该多个流程图代表的机器可读指令的部分或全部,也可手动实施。此外,尽管该示例算法是参照图5所图示的流程图描述,本领域技术人员将可注意到还可使用多种其他方法实施该多个示例机器可读指令。例如,该多个方块的执行顺序可能改变,和/或部分所述的方块可能改变、删去或合并。
图2中的控制器112首先选择要编程至该多个闪存装置的程序(步骤510)。该程序一般为一固件映像,用以更新储存于该多个闪存中的固件。该控制器112接着经由该控制接口120设定该MUX单元114的控制缓存器,以选择要编程的闪存(步骤512)。该控制器112接着通过从该SPI总线122传送该程序至该MUX单元114的输入,开始编程(步骤514)。编程完成后,该控制器112通过设定该控制缓存器,选择第一个要验证的存储器装置(步骤516)。该存储器装置传送验证信号,接着该控制器接收该验证信号(步骤518)。验证完成后,该控制器112决定是否还有存储器装置须验证(步骤520)。若还有存储器装置须验证,该控制器112将回至先前步骤,选择下一个要验证的存储器装置(步骤516)。所有存储器装置都完成验证后,该控制器112写入一状态报告(步骤522)。在本示例中,该状态报告包含该多个闪存编程结果的信息(并可能表列哪些闪存被编程)、哪些闪存被验证,及该多个编程与验证是否成功。
在此应用中使用的“部件”、“模块”、“系统”等词汇,总体而言指与计算机相关的实体,可能为硬件(例如电路)、硬件与软件的组合、软件或一实体,该实体指一操作的机器,该机器具一个或多个特定功能。例如,一个部件可能为(但不限于)在处理器(例如数字信号处理器)中操作的处理程序、处理器、对象、执行文件、线程、程序和/或计算机。举例而言,一控制器中运行的应用程序,与该控制器都可为一部件。一个或多个部件可能存在于一程序和/或一线程内,一部件也可能局限于一计算机内和/或分布于两个或更多计算机之间。此外,一个“装置”可能以特别设计的硬件、特定化的一般化硬件(通过执行该硬件上的软件,使该硬件可进行特定功能)、储存于计算机可读媒体的软件,或以上结合的形式呈现。
在此使用的词汇,仅为描述特定实施例而使用,而非意图限缩本发明的范围。除非另有明示,否则在此使用的单数词汇“一”、“一个”、“该”也意图包含复数形式。此外,在“实施方式”和/或权利要求中所使用的“包含”、“包括”、“含有”、“具有”、“有”或其变体的词汇,是意图表示开放性(inclusive)的意义,与“含”(comprising)一词类似。
除非另有定义,否则所有在此使用的词汇(包括技术与科学词汇)都与本领域技术人员所已知的意义相同。此外,除非另有明确定义,否则词汇(例如常用辞典中已定义的)应以其于相关技术脉络中一致的意义解释,而不应以理想化或过度正式的形式解释。
以上描述本发明多个实施例,然而,应注意,该多个实施例的呈现仅作为示例,而非限制。尽管已图示与描述本发明一个或多个实施,本领域技术人员在阅读与理解本说明书与附图后,将可知悉等价的改造与改进。此外,尽管本发明的一特定特征可能仅在多个实施之一中被揭示,该特征也可能因特征的合并对任何给定或特定的应用为可预期且有利,而与一个或多个见于其他实施的其他特征合并。因此,本发明的广度及范围不应局限于上述的任何实施例。反之,本发明的范围定义,应与下列权利要求及其等价叙述一致。
[符号说明]
10~主板
12~控制器
14~MUX单元
16~SPI闪存n
20~控制接口(I2C/GPIO等)
22~SPI总线(直接链接)
24~MUX选择的SPIn
100~主板
112~控制器
114~MUX单元
116a~SPI闪存1
116b~SPI闪存2
116c~SPI闪存3
116n~SPI闪存n
118a、118b、118c、118n~硬件部件
120~控制接口(I2C/GPIO等)
122~SPI总线(直接链接)
124~MUX
126~MUX选择的SPIn
300~表格
310~位12-15
320~位8-11
330~位0
332~位1
334~位2
336~位3
338~位4
340~位5
342~位6
344~位7
400~主板
410~控制器1
412~控制器2
414~MUX单元
420~控制接口(I2C/GPIO等)
422~SPI总线(直接链接)
424~PCIe/LPC/USB等
426~总线转换器单元
428~SPI总线(经转换)
430~MUX
436~MUX选择的扩充卡n
440a~扩充卡1
440b~扩充卡2
440c~扩充卡3
440n~扩充卡n
442~MUX单元
450a~SPI闪存1
450b~SPI闪存2
450m~SPI闪存m
500~流程图
510~选择程序
512~选择要编程的存储器
514~开始编程存储器
516~选择要验证的存储器
518~接收验证信号
520~是否还有其他存储器待验证?
522~写入存储器状态
Claims (10)
1.一种运算系统,包括:
一个交换单元,包括一个输入与多个输出,该交换单元可连接该输入至该多个输出的一个或多个;
多个闪存装置,每个都与该交换单元的该多个输出之一耦接;
一个控制总线,与该交换单元耦接,该控制总线传递一控制信号,以选择该多个输出的一个或多个,连接至该输入;
一个编程接口总线,与该交换单元的该输入耦接;以及
一个控制器,与该控制总线及该编程接口总线耦接,该控制器可经由该编程接口总线,提供一程序至该多个闪存装置。
2.如权利要求1所述的系统,其中该控制器可选择该多个存储器装置中的单一存储器装置,经由该编程接口总线传送验证至该控制器。
3.如权利要求2所述的系统,其中该交换单元包括控制缓存器,其中该控制缓存器包括第一多个位,用于选择要连接至该输入的该多个输出,及第二多个位,用于选择要传送验证的该单一存储器装置。
4.如权利要求1所述的系统,还包括多个硬件部件,该多个硬件部件都存取该多个存储器装置的一对应者,其中该程序为固件映像,用于操作该多个硬件部件。
5.如权利要求1所述的系统,还包括:
第二编程接口总线,与该交换单元的输入耦接;以及
第二控制器,与该控制总线及该第二编程接口总线耦接,该第二控制器可选择多个该多个存储器装置,并经由该第二编程接口总线,提供该程序至该多个选定的闪存装置。
6.如权利要求1所述的系统,还包括一个第一扩充卡,与该控制总线耦接,其中该多个存储器装置的第一集合位于该第一扩充卡上,该第一扩充卡包括一第一交换装置,该第一交换装置具有一个与该交换单元输出之一耦接的输入,及一组输出,其中每一输出都与一对应的第一集合存储器装置耦接。
7.如权利要求5所述的系统,还包括一个第二扩充卡,与该控制总线耦接,其中该多个存储器装置的第二集合位于该第二扩充卡上,该第二扩充卡包括一第二交换装置,该第二交换装置具有一个与该交换单元输出之一耦接的输入,及一组输出,其中每一输出都与一对应的第二集合存储器装置耦接。
8.一种在一运算系统中同时编程多个存储器装置的方法,包括:
选择一交换单元的多个输出中的一个或多个,该交换单元包含一输入;
从一控制器经由一控制总线传送一控制信号至该交换单元,以连接该输入至该多个选定的输出;
从该控制器经由编程接口总线,提供一程序至该输入,该程序被传送至多个闪存装置,其中每一该多个闪存装置都与该交换单元的该多个选定的输出之一耦接。
9.如权利要求8所述的方法,还包括:
选择该多个存储器装置的单一存储器装置,传送验证;
经由该选定的存储器装置,验证该程序;以及
经由该编程接口总线,传送该验证至该控制器。
10.如权利要求8所述的方法,还包括:
经由一第二控制器,选择该交换单元的一个或多个输出;
从该第二控制器经由该控制总线传送控制信号至该交换单元,以连接该输入至该多个选定的输出;以及
从该第二控制器经由第二编程接口总线,提供该程序至该输入,该程序被传送至该多个闪存装置,其中每一该多个闪存装置都与该交换单元的该多个选定的输出之一耦接。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/034,880 US11392325B2 (en) | 2020-09-28 | 2020-09-28 | Method and system for parallel flash memory programming |
US17/034,880 | 2020-09-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114281393A true CN114281393A (zh) | 2022-04-05 |
Family
ID=80822470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110155791.5A Pending CN114281393A (zh) | 2020-09-28 | 2021-02-04 | 同时编程多个存储器装置的方法与系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11392325B2 (zh) |
CN (1) | CN114281393A (zh) |
TW (1) | TWI774188B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847082B2 (en) * | 2020-10-13 | 2023-12-19 | Dell Products L.P. | System and method for secure management of non-registered components of an information handling system using a baseboard management controller |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4969134A (en) * | 1988-10-24 | 1990-11-06 | Balderson R Bruce | Electro-optical signaling system |
US20070258298A1 (en) * | 2006-05-04 | 2007-11-08 | Westell Technologies, Inc. | Parallel programming of flash memory during in-circuit test |
TWI349882B (en) * | 2007-09-04 | 2011-10-01 | Quanta Comp Inc | Firmware update system and method for update the same |
US8839007B2 (en) * | 2011-06-17 | 2014-09-16 | Dell Products Lp | Shared non-volatile storage for digital power control |
US8949511B2 (en) * | 2011-09-30 | 2015-02-03 | Hitachi, Ltd. | Nonvolatile semiconductor storage system |
TWI540438B (zh) * | 2011-10-13 | 2016-07-01 | 新唐科技股份有限公司 | 記憶體控制元件 |
US10466923B2 (en) * | 2015-02-27 | 2019-11-05 | Samsung Electronics Co., Ltd. | Modular non-volatile flash memory blade |
US10069625B2 (en) | 2015-09-22 | 2018-09-04 | Quanta Computer Inc. | System and method for automatic key generation for self-encrypting drives |
CN110489365B (zh) | 2016-01-13 | 2023-09-12 | 华为技术有限公司 | 交换设备、外围部件互连高速系统及其初始化方法 |
US9727123B1 (en) | 2016-05-13 | 2017-08-08 | Cypress Semiconductor Corporation | Configurable and power-optimized integrated gate-driver for USB power-delivery and type-C SoCs |
TWI653528B (zh) | 2016-12-14 | 2019-03-11 | 英業達股份有限公司 | 電腦系統及檢測方法 |
CN110515641A (zh) | 2019-08-30 | 2019-11-29 | 西安易朴通讯技术有限公司 | 服务器固件的更新方法、装置及系统 |
US20210124705A1 (en) * | 2019-10-29 | 2021-04-29 | Integrated Device Technology, Inc. | Nand interface device to boost operation speed of a solid-state drive |
US11621045B2 (en) * | 2020-03-04 | 2023-04-04 | Intel Corporation | Non volatile flash memory with improved verification recovery and column seeding |
-
2020
- 2020-09-28 US US17/034,880 patent/US11392325B2/en active Active
-
2021
- 2021-01-14 TW TW110101366A patent/TWI774188B/zh active
- 2021-02-04 CN CN202110155791.5A patent/CN114281393A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TW202213087A (zh) | 2022-04-01 |
US20220100421A1 (en) | 2022-03-31 |
TWI774188B (zh) | 2022-08-11 |
US11392325B2 (en) | 2022-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7085863B2 (en) | I2C device including bus switches and programmable address | |
US6745270B1 (en) | Dynamically allocating I2C addresses using self bus switching device | |
US7890690B2 (en) | System and method for dual-ported flash memory | |
US8756360B1 (en) | PCI-E compatible chassis having multi-host capability | |
US5628027A (en) | Method of determining the configuration of devices installed on a computer bus | |
US20200394076A1 (en) | Information Handling System And Method To Allocate Peripheral Component Interconnect Express (PCIE) Bus Resources | |
JPH06348642A (ja) | マルチプル・バス・ネットワークの初期化方法及びその装置 | |
JPH05197582A (ja) | 動的再構成が可能な多数決システムを有するフォールト・トレラント処理装置 | |
US11216284B2 (en) | Multi-die and multi-core computing platform and booting method therefor | |
EP3382567B1 (en) | Multiple storage devices implemented using a common connector | |
CN110674069B (zh) | 芯片的数字引脚转换电路及方法、芯片 | |
US6611796B1 (en) | Method and apparatus for combining memory blocks for in circuit emulation | |
CN114281393A (zh) | 同时编程多个存储器装置的方法与系统 | |
US6457137B1 (en) | Method for configuring clock ratios in a microprocessor | |
CN101465754A (zh) | 加载复位配置字的方法、设备及通信单板 | |
JPH04358252A (ja) | ワークステーションおよびその構成方法 | |
JP3477306B2 (ja) | 拡張入出力インターフェイス | |
CN113468028B (zh) | 用于计算设备的设备管理方法、计算设备、装置和介质 | |
US20090119420A1 (en) | Apparatus and method for scaleable expanders in systems management | |
JP2023089918A (ja) | デイジーチェーンspi集積回路およびその動作方法 | |
CN107590086B (zh) | 一种通讯连接装置及方法、通讯单板 | |
JP2007507045A (ja) | コンフィグレーション・レジスター・アクセス方法、設定方法、集積回路部品、コンピューター・システム、製品 | |
CN113760800A (zh) | 基于bmc的串口路径选择方法、系统、终端及存储介质 | |
JP2024508592A (ja) | Usbインタフェースの多重化方法、回路、電子機器及び記憶媒体 | |
JP2000330968A (ja) | マイクロコントローラにおける、1つ以上のファンクション回路においてのピン割り当てを再設定する装置および方法 |
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 |