TWI678613B - 系統開機碼記憶體管理方法、記憶體裝置及其製造方法 - Google Patents
系統開機碼記憶體管理方法、記憶體裝置及其製造方法 Download PDFInfo
- Publication number
- TWI678613B TWI678613B TW107109176A TW107109176A TWI678613B TW I678613 B TWI678613 B TW I678613B TW 107109176 A TW107109176 A TW 107109176A TW 107109176 A TW107109176 A TW 107109176A TW I678613 B TWI678613 B TW I678613B
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- update
- volatile memory
- memory device
- current
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Stored Programmes (AREA)
- Read Only Memory (AREA)
- Storage Device Security (AREA)
Abstract
記憶體裝置包括具有第一部分及第二部分的區塊的非揮發性記憶體、映射命令位址到非揮發性記憶體的實體位址的位址解碼器及保存目前狀態及執行更新操作的控制電路。目前狀態指示(1)第一部分為儲存資訊的目前區域且第二部分可供更新或(2)第一部分可供更新且第二部分為目前區域。更新操作包括回應於包括寫入命令位址的寫入命令序列,使位址解碼器(1)回應於目前狀態以選擇,映射寫入命令位址至第一部分及第二部分的其中一者及(2)更新所選的第一部分及第二部分的其中一者;及當完成更新,變更目前狀態以指示所選的第一部分及第二部分的其中一者為目前區域。
Description
本發明是有關於一種儲存程式碼的記憶體裝置。特別是,本技術用以管理及升級程式碼,例如儲存於非揮發性記憶體(non-volatile memory)的基本輸入輸出系統(Basic Input/Output System,BIOS)。
一般而言,當計算機系統第一次開機或重啟,軟體中首先被執行的部分是系統開機碼,例如儲存於非揮發性記憶體的基本輸入輸出系統(BIOS)。當開機碼被執行,計算機系統通常會運行一自我測試(self-test)。開機碼也包括用以初始化或控制計算機系統的基本元件的功能,基本元件例如鍵盤、顯示器、各種碟盤機(例如硬碟、磁碟機、CD-ROM、DVD光碟機等)以及各種通訊埠,例如序列埠(例如通用序列匯流排(USB)等)。開機碼可初始化開機引導程序(boot loader),開機引導程序可從適當的所選硬碟中加載作業系統。若沒有有效且具有功能的開機碼,計算機系統將無法開機。
開機碼通常儲存在非揮發性記憶體中,因而不會在每次計算機系統重啟時被擦除,且可於新版本發布時進行更新,例如改進開機碼的效率或功能,或例如修正原本開機碼的錯誤(bug)。隨著時代演進,開機碼的更新也變得更加容易。例如,在新版本的開機碼發布時,許多計算機系統都具備通過網路下載新版本開機碼的自我更新的功能。
由於開機碼的重要性,沒有採取任何預防手段就直接擦除目前的開機碼及下載新版本或直接開始覆蓋目前的開機碼,都是不安全的。這是因為可能會發生電源錯誤或系統錯誤,或下載到損壞的檔案。在沒有安全防護的情況下,用戶可能會面臨目前的開機碼全部或部分被擦除且更新的開機碼還無法用來執行。這將導致用戶的計算機系統無法正常開機。為了完成保存及更新開機碼的程序,傳統的計算機系統採用雙BIOS系統(DualBIOS或twinBIOS)。雙BIOS系統允許下載較新版本的開機碼到另一個備份快閃記憶體。例如,傳統計算機系統包括具有一主BIOS(開機碼)快閃記憶體的主機板(motherboard)及一備份BIOS(開機碼)快閃記憶體(注意,這個技術所用的「主BIOS快閃記憶體」及「備份BIOS快閃記憶體」是不同的,僅是指兩個不同的快閃記憶體,用來儲存開機碼或其他類型的資料)。這些雙BIOS系統下載新的開機碼到備份快閃記憶體。當新的開機代碼完全下載且被驗證,接著計算機系統就會為了下一個開機循環將新的開機碼複製到主快閃記憶體,或是在下一個開機循環以備份快閃記憶體開機。藉由這個架構,雙BIOS系統也能夠保有目前正在運行的開機碼的備份,以便
在發生像是病毒、電源浪湧或突發電源錯誤造成的崩潰事件時,能夠在下一個開機循環執行備份的開機碼。一般而言,主快閃記憶體中的開機碼會被評估,若此開機碼無法通過評估,那麼開機碼將會從備份快閃記憶體中執行。
這種傳統的系統需要用到兩個不同的快閃記憶體來儲存、更新及執行開機碼。計算機系統的主機板上的空間是很珍貴的資源。較新的主機板包括內建繪圖處理器(graphics processors)、音效處理器(audio processors)及許多額外的週邊介面,這使得空間非常吃緊。使用兩個不同的快閃記憶體需要用到主機板上額外的空間。例如,此些快閃記憶體自身需要占用主機板上的空間且也需要額外的電源線、資料線等。近日來,使用開機碼及需要進行開機碼更新的計算機系統的類型不僅限於個人或桌上型計算機,而擴展到可穿戴裝置、電纜及衛星機上盒、媒體中心接收器、物聯網設備、家用電器、汽車部件、伺服器、資料中心等,這些裝置的空間限制都是最受重視的。
因此,需要提供一種系統,這種系統能夠使用雙BIOS型系統,卻不需要兩個不同的快閃記憶體。
本發明的一方面提供一種記憶體裝置。此處所述的記憶體裝置包括一非揮發性記憶體,此非揮發性記憶體配置有一區塊(block),此區塊具有一第一部分及一第二部分,其中第一部分以一第一範圍的實體位址表示,以及第二部分以一第二範圍的實體位址表示。記憶體裝置也包括一位址解碼器,此位址解碼器
將接收的命令位址映射至非揮發性記憶體的實體位址。記憶體裝置也包括控制電路(control circuitry),用以保存一目前狀態,此目前狀態用以指示(1)非揮發性記憶體的第一部分為儲存資訊的一目前區域且非揮發性記憶體的第二部分用來藉由最新的資訊進行更新,或者(2)非揮發性記憶體的第一部分用來藉由最新的資訊進行更新且非揮發性記憶體的第二部分為儲存資訊的一目前區域,且控制電路用以實行更新操作。由控制電路實行的更新操作包括:回應於接收一寫入命令序列,此寫入命令序列包括區塊的一寫入命令位址;致使記憶體解碼器執行(1)映射寫入命令位址至第一部分及第二部分的其中一者,其中係回應於目前狀態以選擇,以及(2)藉由最新的資訊更新所選的第一部分及第二部分的其中一者,更新操作更包括當完成更新所選的第一部分及第二部分的其中一者後,變更目前狀態以指示所選的第一部分及第二部分的其中一者為儲存資訊的目前區域且指示非所選的第一部分及第二部分的其中一者用來藉由最新的資訊進行更新。
本發明的另一方面提供一種記憶體裝置的操作方法。本方法包括在記憶體裝置的一非揮發性記憶體設置一區塊,且此區塊具有一第一部分及一第二部分,其中第一部分以一第一範圍的實體位址表示,以及第二部分以一第二範圍的實體位址表示。此外,本方法包括:映射接收的命令位址至非揮發性記憶體的實體位址,以及保存一目前狀態,此目前狀態用以指示是否(1)非揮發性記憶體的第一部分為儲存資訊的一目前區域且非揮發性記憶體的第二
部分用來藉由最新的資訊進行更新,或者(2)非揮發性記憶體的第一部分用來藉由最新的資訊進行更新且非揮發性記憶體的第二部分為儲存資訊的一目前區域。本方法也包括:實行一更新操作,其中更新操作包括:回應於接收一寫入命令序列,此寫入命令序列包括區塊的一寫入命令位址;致使記憶體解碼器執行(1)映射寫入命令位址至第一部分及第二部分的其中一者,其中係回應於目前狀態以選擇,以及(2)藉由最新的資訊更新所選的第一部分及第二部分的其中一者,且更新操作更包括當完成更新所選的第一部分及第二部分的其中一者後,變更目前狀態以指示所選的第一部分及第二部分的其中一者為儲存資訊的目前區域且指示非所選的第一部分及第二部分的其中一者用來藉由最新的資訊進行更新。
本發明的另一方面提供一種製造記憶體裝置的方法。本方法包括:提供一非揮發性記憶體,此非揮發性記憶體配置有一區塊,此區塊具有一第一部分及一第二部分,其中第一部分以一第一範圍的實體位址表示,以及第二部分以一第二範圍的實體位址表示。本方法也包括:提供及配置一位址解碼器,此位址解碼器將接收的命令位址映射至非揮發性記憶體的實體位址。本方法更包括提供控制電路,用以保存一目前狀態,此目前狀態用以指示(1)非揮發性記憶體的第一部分為儲存資訊的一目前區域且非揮發性記憶體的第二部分用來藉由最新的資訊進行更新,或者(2)非揮發性記憶體的第一部分用來藉由最新的資訊進行更新且非揮發性記憶體的第二部分為儲存資訊的一目前區域,且控
制電路用以實行更新操作。由控制電路實行的更新操作包括:回應於接收一寫入命令序列,此寫入命令序列包括區塊的一寫入命令位址;致使記憶體解碼器執行(1)映射寫入命令位址至第一部分及第二部分的其中一者,其中係回應於目前狀態以選擇,以及(2)藉由最新的資訊更新所選的第一部分及第二部分的其中一者,更新操作更包括當完成更新所選的第一部分及第二部分的其中一者後,變更目前狀態以指示所選的第一部分及第二部分的其中一者為儲存資訊的目前區域且指示非所選的第一部分及第二部分的其中一者用來藉由最新的資訊進行更新。
本發明的其他方面及優點可通過後續的圖式、詳細說明及申請專利範圍進一步了解。
100‧‧‧系統
110‧‧‧主控制器
112‧‧‧通訊匯流排
120‧‧‧記憶體控制器
122‧‧‧通訊匯流排
130‧‧‧記憶體裝置
132‧‧‧匯流排介面
134‧‧‧控制電路
136‧‧‧位址解碼器
137‧‧‧映射表
138‧‧‧狀態邏輯
139‧‧‧非揮發性記憶體
140‧‧‧頁/區塊
142‧‧‧第一部分
143‧‧‧開機碼區域
144‧‧‧第二部分
145‧‧‧更新碼區域
200‧‧‧第一配置
202‧‧‧第二配置
302‧‧‧閂鎖邏輯
304‧‧‧禁止寫入邏輯
402‧‧‧程式碼X
404‧‧‧更新碼X
502~562‧‧‧步驟
600‧‧‧積體電路
602‧‧‧I/O區塊
605‧‧‧時脈產生器
606A‧‧‧映射解碼器
606B‧‧‧X解碼器
607‧‧‧位址產生器
608‧‧‧狀態邏輯
614‧‧‧資料暫存器
620‧‧‧命令邏輯
622‧‧‧狀態機
624‧‧‧SRAM緩衝器
626‧‧‧高電壓產生器
628‧‧‧快閃記憶體陣列
632‧‧‧Y解碼器
634‧‧‧感測放大器
636‧‧‧輸出緩衝器
第1圖繪示用以實行更新操作的一種系統的功能性方塊圖,其中此系統包括一主控制器、一記憶體控制器及一記憶體裝置;第2圖繪示用於依據一更新操作更新一記憶體裝置的一非揮發性記憶體的第一及第二部分的第一及第二配置的功能性方塊圖;第3圖繪示第1圖的系統的部分的功能性方塊圖;第4圖繪示操作於一「雙區域更新模式」的一記憶體裝置的功能性方塊圖;
第5A、5B及5C圖繪示當系統操作於「雙區域更新模式」下,為了執行更新操作的各種操作的流程圖;第6圖繪示一積體電路的簡化方塊圖,此積體電路例如一NOR快閃記憶體裝置,其包括命令邏輯及支援處於雙區域更新模式下的操作的控制電路。
以下將搭配圖式第1~6圖對本發明的實施例進行詳細說明。
第1圖繪示用以實行更新操作的一種系統的功能性方塊圖,其中此系統包括一主控制器(host)、一記憶體控制器及一記憶體裝置。
明確來說,第1圖繪示一系統100的簡化的功能性方塊圖。系統100包括一主控制器110、一通訊匯流排112、一記憶體控制器120、一通訊匯流排122以及一記憶體裝置130。在系統100中,主控制器110執行以邏輯位址讀取及寫入資料的程式。主控制器110通過通訊匯流排112與記憶體控制器120通訊,且記憶體控制器120通過通訊匯流排122與記憶體裝置130通訊。
主控制器110例如是運行一作業系統的一計算機系統。作業系統通過通訊匯流排112傳遞請求(例如寫入及讀取)至記憶體控制器120。
主控制器110與記憶體控制器120之間的通訊匯流排112例如是週邊元件互聯標準(peripheral component interconnect,PCI)匯
流排、快捷週邊元件互聯標準(peripheral component interconnect express,PCIe)匯流排、串行ATA(SATA)及其他可用適合的通訊協定通訊的匯流排。
記憶體控制器120可藉由一微控制單元(microcontroller unit,MCU)中的軟體或其他邏輯結構來實現,或者可藉由專用的記憶體控制器晶片來實現。在其他實施例中,主控制器110與記憶體控制器120可實現在單一的處理器上,或者主控制器110與記憶體控制器120可包括複雜資料處理系統的一部分。記憶體控制器120可作為主控制器110與記憶體裝置130之間的介面。記憶體控制器120的其中一個功能是將高階讀取及寫入請求翻譯為特定記憶體裝置130的命令語言,這種命令語言可用來存取記憶體裝置130上的非揮發性記憶體139。記憶體控制器120可包括一介面層(未繪示),介面層負責以相容於記憶體裝置130及非揮發性記憶體139的方式構成用來執行從記憶體裝置130讀取及寫入記憶體裝置130操作的命令序列。命令序列的構成可藉由將來自主控制器110的邏輯位址翻譯為用於記憶體裝置130的實體位址來完成。
記憶體控制器120藉由通訊匯流排122連接至記憶體裝置130。為了說明的目的,通訊匯流排122可為一通訊系統,此通訊系統於記憶體控制器120及記憶體裝置130之間傳送資料。通訊匯流排122可包括連接到記憶體控制器120及記憶體裝置130的匯流排線(例如實體層連接,像是電線、光纖電纜、無線連接等)。
例如,記憶體控制器120可使用一匯流排結構,此匯流排結構具有多個匯流排線I/O 0~N,且沿著一晶片選擇線(chip select line,CSB)(高態動作(active high)或低態動作(active low))及一時脈線(CK)。通訊匯流排122可包括一串行週邊介面(serial peripheral interface,SPI)匯流排或其他同步串行通訊介面,此些同步串行通訊介面具有下列特徵:一同步時脈線、一晶片選擇線及一或多資料線藉由同步時脈線上的一同步時脈訊號同步。SPI裝置通常使用四線同步串行通訊協定,四線串行通訊協定可在全多工模式(CK、CSB、主進/從出(master in/slave out,MISO)、主出/從進(master out/slave in,MOSI))下通訊。
記憶體裝置130包括一匯流排介面132、控制電路134、一位址解碼器136及非揮發性記憶體139。記憶體裝置的非揮發性記憶體139可為每個記憶胞一位元或每個記憶胞多位元NOR非揮發性快閃記憶體裝置。在其他例子中,非揮發性記憶體139可包括其他類型的非揮發性記憶體裝置,例如每個記憶胞一位元或每個記憶胞多位元NAND非揮發性快閃記憶體裝置、相變化記憶體、磁性記憶體、金屬氧化物可編程電阻記憶體等。
進一步來說,非揮發性記憶體139的一些部分可配置一或多個頁(page)及區塊(block)140用來執行讀取及寫入操作。例如第1圖所示,非揮發性記憶體139的頁及區塊140可包括一第一部分142及一第二部分144。第一部分142及第二部分144可代表非揮發性記憶體139的區域。例如,第一部分142可代表從一確切位址xxx(例如,位址
000000h)開始的一連續範圍的實體位址,且第二部分144可代表從一確切位址yyy(例如位址800000h)開始的另一連續範圍。第二部分144可從第一部分142的終止位址的下一個實體位址開始,或者第一部分142與第二部分144之間有額外空間可保留給其他用途或用於擴展第一部分142及/或第二部分144的範圍。
非揮發性記憶體139可進一步包括第三及第四部分(未繪示)等。如後面搭配第2圖所說明的,第一部分142與第二部分144可做為一集合(或一組)而動作,其中資訊是從二者其中之一中被讀取,直到最新的資訊完全被寫入(以及選擇性地被認證)到兩者中的另一,接著資料可從具有最新的資訊的那個部分被讀取,其中具有較舊的資訊的另一部分可被用在下一個更新寫入最新的資訊。「最新的資訊」可以是改變程式碼的一或多行,或者是將程式碼整個替換掉。這將在非揮發性記憶體139的這兩個部分之間來回運作。上面提到但未繪示的第三及第四部分也可以與第一部分142與第二部分144相同的方式而被使用。在一實施例中,可要求每一「集合」的兩個部分(例如第一部分142與第二部分144)是位在非揮發性記憶體139中不同的區塊(bank)。在另一實施例中,可要求每一「集合」的兩個部分是位在非揮發性記憶體139中同一個區塊(bank)。這些「集合」的部分可藉由邏輯配置或指定於記憶體裝置130上,例如映射或控制電路。
記憶體裝置130的位址解碼器136包括一映射表137,且控制電路134包括狀態邏輯138。映射表137映射通過匯流排介面132從記憶體控制器120接收的命令位址(例如讀取命令位址及寫入命令位
址)至非揮發性記憶體體139的實體位址。狀態邏輯138可用以指示映射表137要讀取或寫入一集合中的哪個部分(例如第一部分142或第二部分144)。在一實施例中,映射表137可像一多工器一樣動作,此多工器回應由狀態邏輯138輸出的一狀態位元(例如用以指示系統100目前確切狀態的一目前狀態位元)以決定要讀取一集合中的哪一個部分以及要寫入一集合中的哪一個部分。控制電路134及/或狀態邏輯138也可指示記憶體裝置130是操作於何種模式。例如,控制電路134及/或狀態邏輯138可決定並指示記憶體裝置130是處於一一般模式或一雙區域更新模式,其中雙區域更新模式下,第一部分142及第二部分144被用來儲存及更新程式碼(例如開機碼)。
狀態邏輯138不需要全部位於控制電路134。例如,一部分的狀態邏輯138可位於記憶體裝置的其他地方,狀態邏輯138所用的狀態位元也是。這個記憶體裝置130的圖示只是為了說明記憶體裝置130中的元件及執行的功能,底下所述的各種操作及資訊可儲存或實行在記憶體裝置130不同部分,系統100也是如此。
包括狀態邏輯138的控制電路134可存取非揮發性記憶體139、執行記憶體讀取及寫入操作以及保存一目前狀態,其中目前狀態用以決定非揮發性記憶體中各集合的哪一個部分(例如第一部分142或第二部分144)要被使用或存取。目前狀態可允許映射表137決定(映射)一集合的哪一部分要被讀取。
在一實施例中,第一部分142及第二部分144用以儲存BIOS或開機碼,目前狀態可被狀態邏輯138用來引導一寫入操作以將
更新的BIOS或開機碼寫入至非揮發性記憶體139的部分的其中之一,使得系統100不會在非揮發性記憶體139的該部分上的更新的程式碼完全更新及驗證完成之前「開機(boot up)」。於下次「開機」(也就是完成更新及驗證之後)時,狀態會被更新且狀態邏輯138結合映射表137會致使系統100從非揮發性記憶體139中具有更新的程式碼的部分開機。這些操作的細節將在底下搭配第2~5C圖進行說明。
控制電路134也可解碼通過匯流排介面132從記憶體控制器120接收的命令序列。這些命令序列可包括對應於操作程式碼(例如讀取、寫入、擦除等)、命令位址及/或資料(例如要被寫入非揮發性記憶體139的資料)。控制電路134根據接收的多個命令序列執行多個操作,並執行邏輯(至少一部分的邏輯)以在非揮發性記憶體139上執行更新程式碼(例如BIOS或開機碼)的更新操作。
更新操作可例如在控制電路134接收到一第一命令序列及當控制電路134接收到一第二命令序列時被執行,其中第一命令序列包括一寫入命令(以寫入/更新資料(例如資料X))及一寫入位址;第二命令序列包括一讀取命令(以讀取資料(例如資料X))。非揮發性記憶體139的頁/區塊140配置有用以執行讀取及寫入的位址。讀取及寫入位址的配置可藉由記憶體裝置130上的邏輯來設定。例如,讀取命令位址可由記憶體裝置130的映射表137指定以讀取資料。就BIOS或開機碼而言,非揮發性記憶體139可包括一開機區塊,此開機區塊包括第一部分142及第二部分144,而讀取命令位址可用以總是從開機區塊中的特定位址讀取資料。相似地,寫入位址可用以寫入開機區塊中的特定位址。
替代地,記憶體控制器120可用以基於記憶體控制器120上的邏輯(部分邏輯)及/或基於主控制器110的作業系統的配置或邏輯將讀取命令位址及寫入命令位址指派(預先配置)給某些操作。
因為從記憶體控制器120接收到的讀取命令位址被位址解碼器136映射到例如非揮發性記憶體139的第一部分142,而使得更新儲存於非揮發性記憶體139上的資料的更新操作能夠被執行。另一方面,從記憶體控制器120接收到的寫入命令位址由位址解碼器136映射到例如非揮發性記憶體139的第二部分144。例如,從非揮發性記憶體139的第一部分142讀取開機碼的一讀取操作可被用在系統100的「開機」期間,而用以更新開機碼的寫入命令繼續將更新的開機碼寫入到非揮發性記憶體139的第二部分144。當寫入操作全部完成時,系統100可藉由從非揮發性記憶體139的第二部分144讀取而使用更新的開機碼或BIOS「開機」。每當開機碼或BIOS被更新(例如新的開機碼被寫入並驗證),這個程序便藉由在第一部分142與第二部分144之間轉換而能夠繼續運行。
在完成資料更新及驗證後,這個更新操作需要記憶體裝置130更新狀態,使得位址解碼器136能夠適當地映射讀取(例如系統開機)及寫入(更新BIOS或開機碼)至合適的部分(例如第一部分142或第二部分144)。換而言之,位址解碼器136與控制電路134的結合實現了切換被映射到讀取位址及寫入位址的非揮發性記憶體139的部分的操作。
第2圖繪示用於依據一更新操作更新一記憶體裝置的一非揮發性記憶體的第一及第二部分的第一及第二配置的功能性方塊圖。
明確來說,第2圖繪示一第一配置200及一第二配置202。根據第一配置200,第1圖的非揮發性記憶體139的第一部分142用以儲存在「開機」期間要讀取的資料(例如開機碼),而非揮發性記憶體139的第二部分144用以寫入更新的資料(例如更新的開機碼)。在第2圖的這個例子中,第一部分142及第二部分144可用以儲存BIOS或開機碼。根據第一配置200,第一部分142包括一開機碼區域143,其中開機碼區域143儲存有在「開機」期間使用的開機碼。第二部分144包括一更新碼區域145,其中更新碼區域145被用來寫入更新的開機碼。這僅僅是本發明的一個示例性範例且不應被限制於BIOS或開機碼。開機碼區域143也可指儲存目前版本的程式碼的一「目前程式碼區域」,而更新碼區域145則是用來儲存「目前程式碼區域」中的程式碼的更新版本。
在第2圖的第一配置200中,非揮發性記憶體139的第一部分142的起始位址被指派從實體位址000000h(十六進位制)(也就是二進位制的0000 0000 0000 0000 0000 0000)開始,而非揮發性記憶體139的第二部分144的起始位址則被指派為從800000h(也就是二進位制的1000 0000 0000 0000 0000 0000)開始。非揮發性記憶體139的第一部分142及/或第二部分144的終止位址被指派為實體位址FFFFFFh(也就是二進位制的1111 1111 1111 1111 1111 1111)。
進一步地,根據第一配置200,當主控制器執行一讀取操作以從非揮發性記憶體139的位址000000h開始讀取開機碼時,會被導向實體位址000000h。再根據第一配置200,當主控制器執行一寫入操作以寫入更新的開機碼到非揮發性記憶體139的位址800000h,會被導向實體位址800000h。
第2圖也繪示了變數bootcode-def(位元)為「致能(enable)」。bootcode-def可為「致能」或「禁能(disable)」。當bootcode-def為「致能」時,記憶體裝置130(第1圖)是處於一雙區域更新模式(例如簡稱「雙模式」),其中在雙模式下,允許在繼續使用目前開機碼時,更新BIOS或開機碼。換言之,當bootcode-def為「致能」時,第一配置200與第二配置202皆被用來讀取/寫入資料(開機碼)。若bootcode-def指示為「禁能」時,記憶體裝置130會操作於一傳統模式,這表示第一配置200與第二配置202皆不會被使用(亦即雙模式被禁用)。換言之,bootcode-def的改變代表啟用或禁用本發明的「雙區域更新模式」。bootcode-def可由用戶設定且bootcode-def的值可儲存於一非揮發性記憶體暫存器(未繪示),像是重要記憶體(critical memory)。第1圖的控制電路134及狀態邏輯138根據bootcode-def操作。「bootcode-def」的命名僅為一個例子,是用來指示被記憶體裝置130用來決定要操作於傳統模式還是雙模式的一個變數。任何其他的命名方式皆可以被使用。
此外,根據第一配置200,變數bootaddr-def等於0。這可代表第一部分142與第二部分144是根據第一配置被使用。在這個例
子中,當bootaddr-def等於0(也就是第一配置),在「開機」期間要被讀取的程式碼(開機碼)是從非揮發性記憶體139中為開機碼指派的最低的位址開始儲存的。此第一配置也可指示程式碼是從非揮發性記憶體139(或非揮發性記憶體139的一區塊)的最高位址或非揮發性記憶體139的特定區塊的最高位址或其他類型的配置開始儲存。bootaddr-def可由用戶設定且可被儲存於一非揮發性記憶體暫存器(未繪示)。第1圖的控制電路134及狀態邏輯138根據變數bootaddr-def操作。同樣地,「bootaddr-def」的命名方式只是一個例子,是用以指示非揮發性記憶體139的哪一個部分儲存要被讀取的目前程式碼,以及非揮發性記憶體139的哪一個部分要被寫入更新的程式碼。
在第一配置200中,當主控制器意圖要從位址000000h(亦即主控制器位址(host-addr)為000000h)讀取目前程式碼,記憶體裝置130從實體位址000000h(亦即記憶體位址(mem-addr)為000000h)開始讀取。當主控制器意圖寫入更新的程式碼到位址800000h(亦即主控制器位址為800000h),記憶體裝置從位址800000h(亦即記憶體位址800000h)開始寫入。
根據第二配置202,非揮發性記憶體139的第二部分144用以儲存在開機期間要被讀取的資料(例如開機碼),且非揮發性記憶體139的第一部分142用以寫入更新的資料(例如更新的開機碼)。此外,當bootcode-def為「致能」且bootaddr-def為1時,記憶體裝置130實行第二配置202。明確來說,在第二配置202中變數bootaddr-def等於1,這可代表第一部分142與第二部分144根據第二配置而被使用。在這個
例子中,當bootaddr-def等於1(也就是第二配置)開機期間要被讀取的程式碼(開機碼)的儲存處是從非揮發性記憶體的最低位址以外的實體位址開始(例如實體位址800000h,不同於第一配置200(第一配置)中的實體位址000000h)。
如第2圖所示,根據第二配置202,當主控制器意圖要從位址000000h(亦即主控制器位址(host-addr)為000000h)讀取目前程式碼,記憶體裝置130從實體位址800000h(亦即記憶體位址(mem-addr)為800000h)開始讀取。當主控制器意圖寫入更新的程式碼到位址800000h(亦即主控制器位址為800000h),記憶體裝置從位址000000h(亦即記憶體位址000000h)開始寫入。
此外,參照第2圖,第一配置200中第一部分142(開機碼區域143)的二進位制位址開始於0000 0000 0000 0000 0000 0000,而在第二配置202中第二部分144(開機碼區域143)的二進位制位址起始於1000 0000 0000 0000 0000 0000。因此,藉由簡易地翻轉位址的最高有效位元,開機碼區域143的實體位址可取決於所執行的配置而改變。如搭配第3圖所描述的更多細節,指定給bootaddr-def的值可致使控制電路134與狀態邏輯138變換實體記憶體位址的最高有效位元,以使得能夠從非揮發性記憶體139中適合的區域讀取程式碼,以及將程式碼更新(寫入)到非揮發系記憶體139中適合的區域。
第3圖繪示第1圖中的部分的功能性方塊圖。
明確來說,第3圖繪示第1圖的系統100的控制電路134、位址解碼器136以及非揮發性記憶體139等部分。請參照第3圖,系統100
可包括位址邏輯300以及閂鎖邏輯302。位址邏輯300與閂鎖邏輯302皆為第1圖中控制電路134的狀態邏輯138第一部分。
bootaddr-def的值如參照第2圖與前文所述的可儲存於一非揮發性記憶體暫存器中。bootaddr-def的值可由閂鎖邏輯302接收。如前面說明的,變數bootaddr-def可為「1」或「0」,用以指示系統100使用第一配置或第二配置操作。第一配置可指第2圖的第一配置200,而第二配置可指第2圖的第二配置202。
每次系統100開機時,閂鎖邏輯302也會接收一上電觸發訊號(power up trigger)。當閂鎖邏輯302接收到上電觸發訊號,會將變數bootaddr設為bootaddr-def的值。例如在系統100的操作期間,bootaddr-def的值可從「1」變更為「0」或從「0」變更為「1」。然而,bootaddr的值將不會被改變直到系統100重啟且上電觸發訊號致使閂鎖邏輯302將bootaddr設為等於bootaddr-def的值。因此,系統100可繼續使用第一配置200進行操作直到系統100重啟。重啟之後,系統100會使用第二配置202進行操作。換言之,單單改變bootaddr-def將不會使得bootaddr改變。需要同時滿足(1)改變bootaddr-def以及(2)重啟系統100(也就是上電觸發訊號)才能使得bootaddr的值改變。
如第3圖所示,位址邏輯300取得變數bootcode-def的值以及一寫入命令的一寫入位址的最高有效位元。變數bootcode-def如前面參照第2圖所說明的。基本上,bootcode-def指示雙區域更新模式(即雙模式)是啟用還是禁用。若雙模式被禁用,系統100將操作在一傳統方法下。若雙模式被啟用,系統100將使用如第2圖所示的兩個不同配
置進行操作。bootcode-def的值可為「0」或「1」,其中如第3圖所示,「0」代表禁用雙模式,「1」代表啟用雙模式。上述的值僅僅是個示例,其意義是可以對調的。
由位址邏輯300獲得的「主控制器寫入位址最高有效位元(host most significant bit of write address)」(或寫入位址可替換為讀取位址)是由主控制器寫入(或讀取)命令標示出的寫入位址(或讀取位址)的最高有效位元。也就是主控制器意圖要寫入的位址的最高有效位元。在這個例子中,第3圖將寫入位址的主控制器最高有效位元標示為「HMSBaddr」。位址邏輯300也接收由閂鎖邏輯302決定的bootaddr的值。位址邏輯300的操作如下所述。
當bootcode-def為禁能,(1)由位址邏輯300輸出的變數「MMSaddr」等於HMSBaddr,且(2)變數bootaddr以及inhibit-write被忽略或不提供功能。當bootcode-def為致能,(1)當bootaddr-def等於「0」(注意,在一個新的上電週期或重啟後bootaddr等於bootaddr-def)變數MMSaddr等於HMSBaddr,而(2)當bootaddr-def等於「1」(注意,在一個新的上電週期或重啟後bootaddr等於bootaddr-def)變數MMSaddr等於HMSBaddr的反相值(inverted value)。
位址解碼器136接收位址邏輯300提供的MMSaddr以及其餘的部分主控制器寫入位址(也就是「寫入位址的主控制器最低有效位元(host least significant bits of write address)」或「HLSBaddr」)。位址解碼器結合MMSaddr與HLSBaddr,並使用映射表137(如第1圖所示)以辨別非揮發性記憶體139的哪個實體位址應該要被存取。例如,
若主控制器發送一寫入命令到位址000000h(即0000 0000 0000 0000 0000 0000),當bootcode-def為致能且bootaddr為1時,位址邏輯136會將由MMSaddr表示的此寫入命令的最高有效位元從「0」翻轉(反相)為「1」,並結合具有「1」的MMSaddr與具有值「000 0000 0000 0000 0000 0000」的HLSBaddr。其結果為「1000 0000 0000 0000 0000 0000」,被映射表137用來定址到對應的實體位址。實質上,位址邏輯300與閂鎖邏輯302致使位址解碼器136使用一配置,以令更新的開機碼被寫入一個不同於目前開機碼的位置(例如第2圖中的第二配置202)。在這個例子中,寫入更新的程式碼是執行在第二部分144(更新碼區域145)上,並從位址800000h(即1000 0000 0000 0000 0000 0000)開始。相同的操作被執行以從非揮發性記憶體139中讀取程式碼。控制電路134能夠判斷一個命令是一個寫入命令還是一個讀取命令,然後導向讀取適當的部分。參數可由控制電路134及/或狀態機(state machine)儲存以區分用於讀取命令及寫入命令的邏輯。在這個例子中,目前程式碼會從第一部分142(開機碼區域143)讀取,並從位址000000h開始。
為了增加一層安全防護,禁止寫入邏輯304被用來避免開機碼區域143在更新碼區域145上的程式碼更新並驗證完成之前被覆寫或擦除。禁止寫入邏輯304接收(1)來自閂鎖邏輯302的bootaddr、(2)來自位址邏輯300的MMSaddr及(3)bootcode-def。基於這些輸入,禁止寫入邏輯304可為開機碼區域143及更新碼區域145致能或禁能一禁止寫入的狀態。明確來說,當bootcode-def為0,也就是雙模式被禁用,inhibir-write及bootaddr將不提供功能。然而,當bootcode-def為1,也
就是雙模式被啟用,禁止寫入邏輯304決定要致能或禁能inhibit-write(也就是inhibit-write設為1或inhibit-write設為0)。例如,禁止寫入邏輯304像XOR閘一般動作,bootaddr及MMSaddr為輸入,inhibit-write的值為輸出。因此,當禁止寫入邏輯304以XOR閘實現時,在bootaddr與MMSaddr有相同的值(例如同為「0」或同為「1」)的情況下,inhibit-write會被致能(也就是inhibit-write的值為1)。反之,在bootaddr與MMSaddr有不同的值(例如一個為「1」,另一個為「0」)的情況下,inhibit-write會被禁能(也就是inhibit-write的值為0)。上述以邏輯實現禁止寫入邏輯304的方式僅僅是一個例子而已,任何其他類型的邏輯對於本領域的技術人員而言都是顯而易見的。對於開機碼區域143而言,當變數inhibit-write為致能(例如inhibit-write為1),開機碼區域143不能被寫入。換言之,儲存有目前開機碼的非揮發性記憶體139的實體位址被設為「唯讀」,以使得目前開機碼無法被覆寫。反之,對於更新碼區域145而言,當變數inhibit-write為禁能(例如inhibit-write為0),更新碼區域145不是「唯讀」而能夠被寫入或擦除。
變數bootaddr及inhibit-write的值無法由用戶設置,只能由系統100或系統100的邏輯設置。此外,這些值可儲存於揮發性或非揮發性記憶體中。
第4圖繪示記憶體裝置操作於雙區域更新模式(也就是雙模式)下的功能性方塊圖。明確來說,第4圖繪示記憶體裝置130包括控制電路134、狀態邏輯138、具有映射表137的位址解碼器136以及非揮發性記憶體139。非揮發性記憶體139可包括多個頁/區塊(未繪示,
請參照第1圖),其中這些頁/區塊包括第一部分142及第二部分144。第4圖中的記憶體裝置130的操作類似於第1圖中的記憶體裝置130的操作,也類似於參照第3圖於上文所做的說明。因此,重複的敘述將被省略。
記憶體裝置130的位址解碼器136部分基於狀態邏輯138執行主控制器發出的讀取/寫入命令位址與非揮發性記憶體139的實體位址之間的映射。此外,如第4圖所示,用來執行讀取及寫入操作的命令序列從記憶體控制器(未繪示)處被接收。讀取操作是以實線表示,寫入操作是以虛線表示,以及位址解碼器136的映射表137執行的映射以點線表示。
如前文提到的,記憶體裝置130的非揮發性記憶體139可包括第一部分142及第二部分144,其中第一部分142從實體位址000000h開始,第二部分144從實體位址800000h開始。不同於主控制器(未繪示)或主控制器運行的軟體所採用的邏輯位址,第一部分142及第二部分144是位於非揮發性記憶體130的頁/區塊上的實體位址。
記憶體裝置130的控制電路134可解碼來自記憶體控制器的命令序列,其中命令序列包括操作程式碼(例如讀取、寫入、擦除等)、命令位址、資料以及其他資訊。基於接收到的命令序列,控制電路134會輸出經過解碼及調整的命令位址。明確來說,接收到的命令序列可包括一讀取命令位址,此讀取命令位址是由位址解碼器136的映射表137預先配置的,用以從非揮發性記憶體139的一特定部分(例如頁的一特定集合)讀取資料,命令序列也可包括寫入命令位址,此寫入命令
位址是由位址解碼器136的映射表137預先配置的,用以寫入資料到非揮發性記憶體139的一特定部分(例如頁的特定集合)。
如第3圖所示,控制電路134的狀態邏輯138包括的邏輯為執行位址邏輯300、閂鎖邏輯302以及禁止寫入邏輯304的操作。明確來說,狀態邏輯138包括保存目前狀態的邏輯,其中目前狀態指示(1)非揮發性記憶體139的第一部分142為儲存資訊的一目前區域(例如一開機碼區域143)且非揮發性記憶體139的第二部分144可用來藉由最新的資訊進行更新(例如更新碼區域145),或(2)非揮發性記憶體139的第二部分144為儲存資訊的一目前區域(例如一開機碼區域143)且非揮發性記憶體139的第一部分142可用來藉由最新的資訊進行更新(例如更新碼區域145)。
控制電路134接收來自主控制器的命令序列以及取得變數(例如參照第3圖所述的bootcode-def、HMSBaddr、HLSBaddr、bootaddr-def、上電觸發訊號等)的值。控制電路134將命令序列解碼並提供經過解碼的命令及命令位址給位址解碼器136,如同參照第3圖所描述的細節。位址解碼器136的映射表137可將讀取命令位址映射(點線)到非揮發性記憶體139中適當的部分。位址解碼器136的映射表137也能將寫入命令位址映射到非揮發性記憶體139中適當的部分。
明確來說,映射表137與狀態邏輯138可被用來執行將讀取命令位址映射到非揮發性記憶體139中適當的部分(例如第一部分142及/或第二部分144)。映射表137與狀態邏輯138也可被用來執行將寫入命令位址映射到非揮發性記憶體139中適當的部分(例如第一部分
142及/或第二部分144)。位址解碼器136的映射表137可為一簡單的表或其他更複雜的形式。此外,映射表137可為專門用來映射寫入部分或讀取部分的位址,或者只用來在雙區域更新模式下操作時映射。如參照第3圖所做的敘述,狀態邏輯138為映射表137及/或位址解碼器136指示哪一個實體位址(例如代表第一部分142及第二部分144起始位址的兩個不同的實體位址)應該要被選擇來進行讀取操作,以及哪一個實體位址應該要被選擇來進行寫入操作。這個由狀態邏輯138提供的指示是基於例如位址邏輯300、閂鎖邏輯302及禁止寫入邏輯304取得及設定的變數的狀態,就如同前面參照第3圖所描述的。
在第4圖所示的實施例中,位址解碼器136的映射表137提供了(1)經過解碼及調整後用來從非揮發性記憶體139的一或多個部分讀取資料的讀取命令位址(讀取命令位址包括在從記憶體控制器處接收的命令序列中)以及(2)非揮發性記憶體139的第一部分142及非揮發性記憶體139的第二部分144之間的轉譯(映射)。相似地,位址解碼器136的映射表137提供了(1)經過解碼及調整後用來寫入資料到非揮發性記憶體139的一或多個部分的寫入命令位址(寫入命令位址包括在從記憶體控制器處接收的命令序列中)以及(2)非揮發性記憶體139的第一部分142及非揮發性記憶體139的第二部分144之間的轉譯(映射)。
如前面提到的,第一部分142與第二部分144可被配置為非揮發性記憶體139的部分的一個集合(即由兩個部分(如第一部分及第二部分組成的集合),後文或稱之為部分集合(set of portions))。在這個例子中,位址解碼器136的映射表137能夠將經過解碼及調整後來自
控制電路134的讀取命令位址映射到部分集合的第一部分142,並能夠將經過解碼及調整後來自控制電路134的寫入命令位址映射到部分集合的第二部分144。如參照第3圖所述,基於變數的狀態及基於主控制器命令位址,狀態邏輯138能根據例如由控制電路134所保存的目前狀態來控制應讀取部分集合中的哪一部分與要寫入部分集合中的哪一部分。需要注意的是,狀態邏輯138與控制電路134可將上述功能執行在不只一組的部分集合上。基於狀態邏輯138保存的目前狀態,映射表137能夠:(1)當根據第2圖的第一配置200開機碼區域143是在第一部分142中,以及根據第二配置202開機碼區域143是在第二部分144中,從開機碼區域143讀取目前程式碼,以及(2)當根據第2圖的第一配置200更新碼區域145是在第二部分144中,以及根據第二配置202更新碼區域145是在第一部分142中,將更新的程式碼寫入到更新碼區域145。
例如,若目前狀態指示非揮發性記憶體139的第一部分142是儲存資訊的目前區域,且非揮發性記憶體139的第二區域144可用來藉由最新的資訊進行更新,則控制電路134與位址解碼器136的結合會解碼、調整並映射讀取命令序列到第一部分142,以及會解碼、調整並映射寫入序列到第二部分144。相反地,若目前狀態指示非揮發性記憶體139的第一部分142可用來藉由最新的資訊進行更新,且非揮發性記憶體139的第二區域144是儲存資訊的目前區域,則控制電路134與位址解碼器136的結合會解碼、調整並映射讀取命令序列到第二部分144,以及會解碼、調整並映射寫入序列到第一部分142。
此外,控制電路134也可保持位址解碼器136持續更新,以使正確的(主控制器)命令序列位址被映射到正確的非揮發性記憶體139的實體位址。
當讀取操作被映射到例如第一部分142,讀取操作可繼續通過記憶體控制器從第一部分142讀取資料,並且最終送到主控制器及運行於主控制器的軟體。不同的時序(various timing)、緩衝與快取機制(未繪示)通常會被施行以協助通過控制器將讀取請求傳送到記憶體裝置130,以及將讀取的資料從記憶體裝置130傳送出來,並最終傳回主控制器(作業系統)。本領域中具有通常知識者應能了解完成此讀取操作所需的不同時序、緩衝與快取機制。
參照第4圖,提供了數個例子,其中包括從記憶體裝置130的第一部分142讀取「程式碼x」402的讀取操作的例子,以及將「更新的程式碼x」寫入記憶體裝置130的第二部分144的例子。明確來說,第4圖繪示的是用來讀取「程式碼x」的命令序列以及用以更新「程式碼x」的命令序列已被接收,上述的命令序列皆來自主控制器/控制器。如背景技術中所述,傳統的記憶體系統是以兩個實體記憶體晶片來儲存開機碼或BIOS。然而,基於本發明所提供的雙更新區域模式的獨特結構,在同一個記憶體裝置130的非揮發性記憶體139中,寫入操作可更新「程式碼x」,且可從中讀取目前的「程式碼x」402。只有在「更新的程式碼x」完成儲存並驗證,系統才會在重啟時從記憶體裝置130中讀取更新的程式碼。由於讀取命令位址會由控制電路134解碼並調整,再由位址解碼器136映射至適當的部分(例如第4圖的第一部分
142),而該部份不同於「更新的程式碼x」404要寫入的部分,故能夠達到上述效果。於是,「新的」或「更新的」版本的「程式碼x」能夠在不遺失「程式碼x」402的情況下被寫入。
當「更新的程式碼x」404儲存至非揮發性記憶體139的第二部分144後,本發明可驗證「更新的程式碼x」404是完整且正確的。當完成驗證,變數bootaddr-def可被變更/更新,以使得在下次重啟時上電觸發訊號會致使閂鎖邏輯302更新bootaddr的值以符合已更新/變更的bootaddr-def。於是,更新的開機碼或BIOS將於開機時從第二部分144中被讀取。由記憶體裝置130執行以驗證更新的程式碼及完成雙區域更新模式的程序的各種操作將在底下搭配第5A、5B及5C圖進一步說明。
第5A、5B及5C圖繪示當系統操作於「雙區域更新模式」下,為了執行更新操作的各種操作的流程圖。明確來說,第5A、5B及5C圖的流程圖500A、500B及500C繪示了記憶體裝置130為了操作在雙區域更新模式下所執行的操作。
請參照第5A圖所繪示的流程圖500A。流程圖500A可由第1~4圖所述的系統100(或其等效物)來執行。在操作502中,系統100執行開機。
在開機之後的操作504中,系統100判斷「lowboot-def」是否等於「boodaddr-def」。變數bootaddr-def已在前文說明,特別是參考第3圖所做的說明。變數「lowboot-def」會在操作512中配置,並在下文進一步說明細節。
若「lowboot-def」等於「bootaddr-def」,系統100執行操作506,其中在操作506中判斷程式碼已經更新。然後系統100在操作508中來到一般系統操作並繼續從非揮發性記憶體139的適當的部分讀取更新的程式碼。
若操作504中「lowboot-def」不等於「bootaddr-def」,系統仍舊設定為運行目前的開機碼(而不是更新的開機碼)。於是,系統100執行操作510,其中操作510檢查變數「eraseOK」是否等於或已被「重設(reset)」。「eraseOK」指示非揮發性記憶體139的部分是否已被擦除。若「eraseOK」已被重設(reset),系統100執行操作512,其中在操作512中bootaddr-def被設定為等於lowboot-def,接著執行操作514以致使重啟或樹立一上電循環(power up cycle)。由於操作512使得lowboot-def等於bootaddr-def,故於下次系統開機的操作502中,操作504的判斷會為「是」,且系統最終會來到操作508的一般系統操作。
在操作510中,若系統100判斷eraseOK不等於或還未被重設(亦即新的開機碼已經快要完成更新,但仍未完成),系統執行操作516以判斷變數「PGMOK」是否等於或已被設定(set)。若PGMOK已被設定,系統100執行操作518,其中系統518中eraseOK會被重設。在操作518之後,系統100執行操作512及上述後續操作。
在操作516中,若系統100判斷PGMOK不等於或未被設定(亦即開機碼的更新未完成),系統100執行操作520以將lowboot-def設定為等於bootaddr-def。
接著,在操作522A中,系統100更新程式碼,如第5B圖所示。在第5B圖中,流程圖500B是延續操作522B中程式碼的更新。接著,在操作524中,lowboot-def的值會被反相或翻轉,例如「1」變更為「0」及「0」變更為「1」。
在操作524之後,系統100執行操作526以判斷變數「eraseOK」是否已被設定。若eraseOK已被設定,系統100執行操作528以判斷所有內容是否為空白,接著執行操作530或程序A 536,其中程序A 536會在第5C圖中進一步說明細節。操作530中,系統100開始更新程式碼。系統100會在操作532中定期檢查程式碼是否已完成更新。若程式碼還未完成更新,系統100會繼續執行操作530。當在操作532中判斷程式碼已經完成更新,系統100會執行程序B 534,其中程序B 534會在第5C圖中進一步說明細節。
回到操作526,當系統100判斷eraseOK還未被設定,系統100將會執行操作538以擦除更新碼區域(例如第1~3圖所示的更新碼區域145)。在操作540中,系統100判斷更新碼區域是否已完全擦除。若更新碼區域未完全擦除,系統100會繼續執行操作538,並意圖再次擦除更新碼區域。
在操作540中,若系統100判斷更新碼區域已完全擦除,系統100會執行操作544以設定eraseOK(也就是eraseOK等於set)。接著,如同前文所述的,系統100將執行操作530,並且當程式碼完成更新時,最終來到程序B 534。
請參照第5C圖,繪示了程序A 536(接續第5B圖),當在操作528(請參照第5B圖)中,系統100判斷(更新碼區域的)所有的內容不是空白的,系統100會接著執行操作546。在操作546中,系統100將儲存於更新碼區域的新的開機碼與被用來更新在更新碼區域中的開機碼的新的開機碼進行比較,以判斷儲存於更新碼區域的新的開機碼是否正確。
在操作548中,若儲存於更新碼區域的新的開機碼被判斷為是正確的,系統100會執行操作550以檢查所有的新的開機碼是否全部儲存於更新碼區域(亦即檢查新的開機碼的最後一位元組是否有儲存在更新碼區域中)。若所有的新的開機碼並非全部儲存在更新碼區域,系統回頭繼續執行操作546。若所有的新的開機碼全部儲存在更新碼區域,操作繼續來到程序B 534,然後執行操作552。需要注意的是,若操作532中程式碼的更新完全完成(參照第5B圖),會跳到程序B 534,並執行操作552。
在操作552中,系統100設定PGMOK並重設eraseOK。接著,系統在操作554中將bootaddr-def設定為等於lowboot-def(也就是bootaddr-def=lowboot-def)。接著,系統100在操作556中重啟或樹立一上電循環,這將致使系統100執行第5A圖中的系統開機操作502。
回到操作548,若儲存於更新碼區域的所有的新的開機碼不是正確的,系統100會執行操作558。在操作558中,系統100檢查以確認更新碼區域的剩餘空間是否為空白的。若更新碼區域的剩餘空
間不是空白的,系統100會跳到程序C 522,致使系統100執行第5B圖中的操作538。操作538已在前文搭配第5B圖敘述過,故此處不再贅述。
相反地,若所有的剩餘區域是空白的,系統100藉由繼續更新更新碼區域中的程式碼執行操作560。系統100會繼續在操作560中檢查程式碼的更新是否完成。若未完成,操作560會繼續。當操作560中程式碼更新完成(亦即操作562,判斷程式碼是否完成升級),系統100會跳到程序B 534,這將致使系統100執行操作552,其中操作522的細節已在前文說明。若操作562判斷操作560未完成,操作560便會繼續升級程式碼,而系統100將不會跳到程序B 534直到程式碼升級完成。需要注意的是,在操作556執行重啟後,操作502將開始系統開機。由於第5C圖的操作554將bootaddr-def設定為等於lowboot-def,第5A圖的操作504的判斷將為「是」,而系統100將繼續執行操作506及508。
第6圖繪示一積體電路的簡化方塊圖,此積體電路例如一NOR快閃記憶體裝置,其包括命令邏輯及支援處於雙區域更新模式下的操作的控制電路。積體電路600可實現於一單一晶片。例如,第1、3及4圖的記憶體裝置130的部分或全部的元件(及其執行的操作)可被包括在積體電路600中。替代地,第1圖的記憶體控制器120的部分元件(及其執行的操作)可被包括在積體電路600。
輸入輸出(I/O)區塊602示出兼容於串行週邊介面(serial peripheral interface,SPI)標準的一同步串列介面(serial interface),且I/O區塊602具有標準接腳(pins)。CS#為晶片選擇,可對應到前文所述
的CSB(chip select bar)線。當CS#為低準位時,裝置就會被選擇。RESET#訊號允許裝置被重設,終止目前運行的程序並重設狀態機。GND與VDD分別為接地及電源供應。在標準的SPI中,SI及SO分別為串行資料輸入及串行資料輸出。在雙SPI(Dual SPI)操作下,SI及SO改為雙向輸入輸出接腳:SIO0及SIO1。在四SPI(Quad SPI)操作下,SIO2及SIO3可用來高速傳輸。上述僅僅為一個示例而已,其他的接腳配置也是可行的。串行時脈SCLK 604(或者也可以是CK 604)同樣被提供。積體電路上的時脈產生器605為命令邏輯620及其他元件產生時脈訊號。在這個實施例中,時脈產生器605接收來自SLCK 604接腳的SLCK。由I/O區塊602代表的匯流排介面可支援雙倍資料率(double data rate,DDR)或單倍資料率(single data rate,SDR)協定。
其他類型的串行介面可被用在各種實施例中。不同於NOR快閃記憶體的記憶體技術也可以被運用。
在一些例子中,此處所述的用於指示命令序列開始及結束的控制訊號可為區塊602中匯流排線上的一或多個訊號。例如,在一些實施例中,CS#或RESET#可被切換,像是在一第一過度期由低準位轉為高準位,在一第二過渡期由高準位轉為低準位。替代地或額外地,一終止事件可由晶片控制邏輯於內部產生。
狀態邏輯608包括電路及邏輯,此些電路及邏輯用以保存一目前狀態以及執行第1圖的狀態邏輯138及/或控制電路134實行的部分或全部的邏輯。目前狀態指示是否(1)NOR快閃記憶體陣列628的第一部分為儲存資訊的一目前區域且NOR快閃記憶體陣列628
的第二部分用來藉由最新的資訊進行更新,或者(2)NOR快閃記憶體陣列628的第一部分用來藉由最新的資訊進行更新且NOR快閃記憶體陣列628的第二部分為儲存資訊的一目前區域。NOR快閃記憶體628可配置有多個頁/區塊,此些頁/區塊具有第一部分及第二部分。第一部分及第二部分可來自相同的區塊(bank)或可來自不同的區塊(bank)。如前文所述,除了此兩個部分的集合外也可包括其他兩兩部分所組成的集合(例如第三部分及第四部分)。而在本實施例中,只有第一部分與第二部分所組成的一第一集合會被說明。這個架構下的兩兩部分所組成的集合及目前狀態的細節皆已在前文搭配第1~4圖說明。
狀態邏輯608可包括能夠指示NOR快閃記憶體陣列628的哪一個部分被指派給目前程式碼(例如開機碼區域143)及哪一個部分被指派用來更新(例如更新碼區域145)的邏輯。例如,狀態邏輯608保存的目前狀態可指示第一部分142為開機碼區域143或第二部分144為開機碼區域143,這取決於變數bootaddr-def的值。此外,狀態邏輯608保存的目前狀態可指示第二部分144為更新碼區域145或第一部分142為更新碼區域145。如前文所述,當存在其他兩兩部分組成的集合時,狀態邏輯608將會持續追蹤其他兩兩部分組成的集合中哪一部分是開機碼區域及/或哪一部分是更新碼區域。更明確來說,如參照HMSBaddr及參照第3圖所做的描述,狀態邏輯608對主控制器位址的最高有效位元執行反相或翻轉。如前文所述,由狀態邏輯608反相HMSBaddr會使得系統寫入
第一部分及/或第二部分,或從第一部分及/或第二部分讀取。狀態邏輯608可從位址產生器607或積體電路600的其他元件取得第一部分及第二部分的實體位址。如參照第1~4圖所做的說明,狀態邏輯138的功能可被狀態邏輯608實現。
映射解碼器606A執行例如包括映射表137的位址解碼器136的操作,這些操作可參照前面針對第1~4圖所做的說明。特別是,映射解碼器606A實現基於狀態邏輯608提供的狀態及將命令位址映射到實體記憶體(例如NOR快閃記憶體陣列628)的頁及區塊(bank)(部分)的實體位址的邏輯。映射解碼器606A可基於一映射表(例如第1、3及4圖的映射表137)及基於邏輯(例如第1、3及4圖的狀態邏輯138)將讀取命令位址及寫入命令位址映射到實體記憶體的頁及區塊(bank)(部分)的實體位址。
與積體電路600的其他電路及邏輯結合的映射解碼器606A執行第1~5圖中描述的雙區域更新模式。部分重複描述在此會被省略。特別需要注意的是,狀態邏輯608、映射解碼器606A以及積體電路600中其他元件的組合可執行第5A、5B及5C圖所示的流程圖500A、500B及500C的操作。換言之,狀態邏輯608及映射解碼器606A根據第5A~5C圖所示的操作藉由寫入/讀取快閃BIOS陣列的適當部分(例如第一部分及第二部分)執行來回交替(ping-ponging)。
位址產生器607包括的電路可用來為存取NOR快閃記憶體陣列628而提供實體位址序列。
在一些實施例中,資料暫存器614可作為命令序列輸入到儲存部分的緩衝器。資料及參數可被儲存在支援可中斷寫入操作及其他操作的SRAM緩衝器624中。在一些例子中,資料暫存器614可為SRAM緩衝器624第一部分。
積體電路600也可包括命令邏輯620及控制電路,其中命令邏輯620可產生內部控制訊號,控制電路例如支援偏壓電路的狀態機622。高電壓產生器626產生任何需要的高電壓,可例如用於讀取、編程或擦除操作。命令邏輯620執行命令程序,其中命令程序指讀取、寫入、擦除或與其相關的資料。在本實施例中,包括狀態機622的控制電路在命令邏輯的致能下執行存取記憶體陣列628的內嵌程式、擦除及寫入操作。
除了映射解碼器606A之外,記憶體陣列628包括X解碼器606B及Y解碼器632,且資料訊號通過感測放大器634輸出。輸出緩衝器636可保存從記憶體輸出的輸出資料。
在第6圖所示的例子中,命令序列包括從I/O區塊602中的SIO接腳接收的由位元組(bytes)組成的序列。命令邏輯620可包括邏輯來解碼操作程式碼,發送起始位址到位址計數器,並提供控制訊號以設定及初始化命令序列中標示的內嵌程序,包括使用狀態機622的寫入(例如編程及擦除)及讀取程序。第6圖例子是一個使用串行匯流排介面的串行快閃裝置,用來存取序列資料。串行匯流排介面包括至少一同步時脈訊號CK、資料訊號以及至少一晶片選擇訊號CSB,其中儲存
資料的儲存單位的寬度大於或等於一位元。在使用串行匯流排介面的情況下,前文所述的命令序列是可以被支援的。
這種配置可用以支援兼容於串行週邊介面標準匯流排架構的匯流排,其中CS對應於SPI低態動作(active low)晶片選擇(chip select)CSB,CK對應於SPI串行時脈(serial clock)SCLK;埠0(port 0)對應於SPI主出/從進埠(master-out/slave-in port,MOSI port),埠1(port 1)對應於SPI第一主進/從出埠(first master-in/slave-out port,MISO1 port),埠2(port 2)對應於SPI第二主進/從出埠(second master-in/slave-out port,MISO2 port),以及埠3(port 3)對應於SPI第三主進/從出埠(third master-in/slave-out port,MISO3 port)。本發明的技術可用在任何標準及非標準匯流排結構,包括例如I2C。
本領域的技術人員可清楚地了解本圖只是用來說明其中一個實施例而已;如本文描述的支援可中斷寫入命令序列的裝置可與本圖有很大的不同,例如包括不同元件或以不同的連接方式等。
第6圖所示的實施例包括一NOR快閃記憶體陣列628,NOR快閃記憶體陣列628是用以儲存開機碼或BIOS或其他類型非揮發性資訊的記憶體陣列。然而,其他類型的記憶體系統也可被採用,包括相變化記憶體(phase change memory,PCM)、電阻式記憶體(resistive memory element memory,ReRAM or RRAM)、NAND快閃記憶體及磁阻式記憶體(magnetoresistive memory)等。此外,其他類型的記憶體系統也可被採用,包括揮發性記憶體,例如DRAM。
本文說明了多個由記憶體裝置或記憶體控制器所執行的邏輯的流程圖。所述邏輯可使用處理器編程及儲存於記憶體的計算機程式來實現,所述計算機程式可被計算機系統存取,且可被處理器、專用邏輯硬體或專用邏輯硬體與計算機程式的結合執行,其中專用邏輯硬體包括現場可編程積體電路、以電路實現的狀態機等。對於本文中的所有流程圖,許多步驟可以被組合在一起、平行(並行)執行或者以不同的順序執行,而不會影響所能達到的功能。在一些情況下,讀者將理解到只有在進行了某些其他更改時,重新排列步驟才能獲得相同的結果。在其他情況下,讀者也將理解到只有在滿足某些條件時,重新排列步驟才能達到相同的結果。此外,本文裡的流程圖僅示出有助於理解本發明的相關步驟。可以理解的是,在所示出的步驟之前、之後及之間可加入用於完成其他功能的許多額外步驟。
雖然本發明已藉由參考實施例及各種例子對細節說明如上,然可以理解的是此些例子僅是作為說明之用,並非用來限制本發明。本領域的技術人員將能輕易地在本發明的精神和所附申請專利範圍的範疇內進行修改和組合。申請專利範圍如下所述。
Claims (20)
- 一種記憶體裝置,包括:一非揮發性記憶體,配置有一區塊,該區塊具有一第一部分及一第二部分,其中:該第一部分以一第一範圍的實體位址表示;以及該第二部分以一第二範圍的實體位址表示;一位址解碼器,用以將接收到的命令位址映射到該非揮發性記憶體的實體位址;以及控制電路,用以保存一目前狀態,該目前狀態用以指示是否(1)該非揮發性記憶體的該第一部分為儲存資訊的一目前區域且該非揮發性記憶體的該第二部分可用來藉由最新的資訊進行更新,或者(2)該非揮發性記憶體的該第一部分可用來藉由該最新的資訊進行更新且該非揮發性記憶體的該第二部分為儲存資訊的該目前區域,該控制電路也用以執行一更新操作,包括:回應於接收到包括有該區塊的一寫入命令位址的一寫入命令序列,致使該位址解碼器執行(1)回應於該目前狀態以選擇,將該寫入命令位址映射至可用來藉由該最新的資訊進行更新的該第一部分及該第二部分的其中一者,以及(2)以該最新的資訊更新所選的該第一部分及該第二部分的其中一者;以及當所選的該第一部分及該第二部分的其中一者完成更新,變更該目前狀態以指示所選的該第一部分及該第二部分的其中一者為儲存資訊的該目前區域以及指示非所選的該第一部分及該第二部分的其中一者可用來藉由該最新的資訊進行更新。
- 如申請專利範圍第1項所述之記憶體裝置,其中非所選的該第一部分及該第二部分的其中一者係為寫入保護直到該目前狀態被變更為指示非所選的該第一部分及該第二部分的其中一者可用來藉由該最新的資訊進行更新。
- 如申請專利範圍第1項所述之記憶體裝置,其中:所選的該第一部分及該第二部分維持解鎖以寫入直到該目前狀態被變更為指示所選的該第一部分及該第二部分的其中一者為儲存資訊的該目前區域;以及在該目前狀態變更後,所選的該第一部分及該第二部分的其中一者係為寫入保護。
- 如申請專利範圍第1項所述之記憶體裝置,其中該非揮發性記憶體的該區塊係為一開機區塊。
- 如申請專利範圍第4項所述之記憶體裝置,其中該目前區域係為非所選的該第一部分及該第二部分的其中一者,用以儲存目前開機碼,該目前開機碼係用以啟動一計算機系統。
- 如申請專利範圍第5項所述之記憶體裝置,其中:一區域,係為可用來藉由該最新的資訊進行更新,該區域係來自所選的該第一部分及該第二部分的其中一者;以及用以更新該區域的該最新的資訊係為更新的開機碼。
- 如申請專利範圍第6項所述之記憶體裝置,其中該更新操作進一步包括:維持儲存該目前開機碼的該目前區域為寫入保護以避免執行一寫入操作,直到該目前狀態變更完成。
- 如申請專利範圍第6項所述之記憶體裝置,其中該更新操作進一步包括:維持儲存該目前開機碼的該目前區域為寫入保護以避免執行一寫入操作,直到映射、資訊更新及該目前狀態變更完成。
- 如申請專利範圍第1項所述之記憶體裝置,其中該更新操作進一步包括:當該目前狀態變更完成時,擦除非所選的該第一部分及該第二部分的其中一者的內容,其中非所選的該第一部分及該第二部分的其中一者係被指示為可用來藉由該最新的資訊進行更新。
- 如申請專利範圍第1項所述之記憶體裝置,其中該更新操作致使該位址解碼器將該寫入命令位址映射至該第一部分及該第二部分的其中一者時,係藉由(1)反相接收到的該寫入命令位址的一最高有效位元,以及(2)保留接收到的該寫入命令位址的該最高有效位元。
- 如申請專利範圍第10項所述之記憶體裝置,其中該控制電路決定要反相該最高有效位元或要保留該最高有效位元時,係根據一狀態指示,該狀態指示用以指示要執行一第一配置或執行一第二配置。
- 如申請專利範圍第11項所述之記憶體裝置,其中當該狀態指示係指示該第一配置時,該控制電路保留該最高有效位元,以及當該狀態指示係指示該第二配置時,該控制電路反相該最高有效位元。
- 如申請專利範圍第10項所述之記憶體裝置,其中無論該最高有效位元被反相或被保留,所接收到的該寫入命令位址的該最高有效位元係被與該寫入命令位址的其餘位元組合在一起。
- 如申請專利範圍第13項所述之記憶體裝置,其中所接收到的該寫入命令位址的該最高有效位元與該寫入命令位址的其餘位元的組合係由該位址解碼器接收,以將該寫入命令位址的該最高有效位元與該寫入命令位址的其餘位元的組合映射至對應於該寫入命令位址的該最高有效位元與該寫入命令位址的其餘位元的組合的該第一部分及該第二部分的其中一者,並以該最新的資訊更新所述該第一部分及該第二部分的其中一者。
- 如申請專利範圍第1項所述之記憶體裝置,其中該更新操作進一步包括:在變更該目前狀態之前,驗證該最新的資訊的正確性。
- 如申請專利範圍第15項所述之記憶體裝置,其中驗證寫入至所選的該第一部分及該第二部分的其中一者的該最新的資訊的正確性時,係藉由比較以及判斷以下兩者之間的差異:(1)寫入至所選的該第一部分及該第二部分的其中一者的該最新的資訊,以及(2)儲存於其他地方的該最新的資訊。
- 一種用於操作一記憶體裝置的方法,包括:在該記憶體裝置的一非揮發性記憶體配置具有一第一部分及一第二部分的一區塊,其中:該第一部分以一第一範圍的實體位址表示;以及該第二部分以一第二範圍的實體位址表示;由一位址解碼器將接收到的命令位址映射到該非揮發性記憶體的實體位址;以及保存一目前狀態,該目前狀態用以指示是否(1)該非揮發性記憶體的該第一部分為儲存資訊的一目前區域且該非揮發性記憶體的該第二部分可用來藉由最新的資訊進行更新,或者(2)該非揮發性記憶體的該第一部分可用來藉由該最新的資訊進行更新且該非揮發性記憶體的該第二部分為儲存資訊的該目前區域;以及執行一更新操作,包括:回應於接收到包括有該區塊的一寫入命令位址的一寫入命令序列,致使該位址解碼器執行(1)回應於該目前狀態以選擇,將該寫入命令位址映射至可用來藉由該最新的資訊進行更新的該第一部分及該第二部分的其中一者,以及(2)以該最新的資訊更新所選的該第一部分及該第二部分的其中一者;以及當所選的該第一部分及該第二部分的其中一者完成更新,變更該目前狀態以指示所選的該第一部分及該第二部分的其中一者為儲存資訊的該目前區域以及指示非所選的該第一部分及該第二部分的其中一者可用來藉由該最新的資訊進行更新。
- 如申請專利範圍第17項所述之方法,其中該更新操作進一步包括:當該目前狀態變更完成時,擦除非所選的該第一部分及該第二部分的其中一者的內容,其中非所選的該第一部分及該第二部分的其中一者係被指示為可用來藉由該最新的資訊進行更新。
- 一種製造一記憶體裝置的方法,包括:提供一非揮發性記憶體,配置有一區塊,該區塊具有一第一部分及一第二部分,其中:該第一部分以一第一範圍的實體位址表示;以及該第二部分以一第二範圍的實體位址表示;提供及配置一位址解碼器,用以將接收到的命令位址映射到該非揮發性記憶體的實體位址;以及提供控制電路,用以保存一目前狀態,該目前狀態用以指示是否(1)該非揮發性記憶體的該第一部分為儲存資訊的一目前區域且該非揮發性記憶體的該第二部分可用來藉由最新的資訊進行更新,或者(2)該非揮發性記憶體的該第一部分可用來藉由該最新的資訊進行更新且該非揮發性記憶體的該第二部分為儲存資訊的該目前區域,該控制電路也用以執行一更新操作,包括:回應於接收到包括有該區塊的一寫入命令位址的一寫入命令序列,致使該位址解碼器執行(1)回應於該目前狀態以選擇,將該寫入命令位址映射至可用來藉由該最新的資訊進行更新的該第一部分及該第二部分的其中一者,以及(2)以該最新的資訊更新所選的該第一部分及該第二部分的其中一者;以及當所選的該第一部分及該第二部分的其中一者完成更新,變更該目前狀態以指示所選的該第一部分及該第二部分的其中一者為儲存資訊的該目前區域以及指示非所選的該第一部分及該第二部分的其中一者可用來藉由該最新的資訊進行更新。
- 如申請專利範圍第19項所述之方法,其中該更新操作進一步包括:當該目前狀態變更完成時,擦除非所選的該第一部分及該第二部分的其中一者的內容,其中非所選的該第一部分及該第二部分的其中一者係被指示為可用來藉由該最新的資訊進行更新。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/868,896 US10445088B2 (en) | 2018-01-11 | 2018-01-11 | System boot code clone |
US15/868,896 | 2018-01-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201931115A TW201931115A (zh) | 2019-08-01 |
TWI678613B true TWI678613B (zh) | 2019-12-01 |
Family
ID=61192657
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107109176A TWI678613B (zh) | 2018-01-11 | 2018-03-16 | 系統開機碼記憶體管理方法、記憶體裝置及其製造方法 |
TW107137817A TWI703498B (zh) | 2018-01-11 | 2018-10-25 | 記憶體裝置與電子裝置的啟動程式載入方法 |
TW108100560A TWI722361B (zh) | 2018-01-11 | 2019-01-07 | 系統開機碼記憶體管理方法、記憶體裝置與應用其之電子系統 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107137817A TWI703498B (zh) | 2018-01-11 | 2018-10-25 | 記憶體裝置與電子裝置的啟動程式載入方法 |
TW108100560A TWI722361B (zh) | 2018-01-11 | 2019-01-07 | 系統開機碼記憶體管理方法、記憶體裝置與應用其之電子系統 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10445088B2 (zh) |
EP (1) | EP3511826B1 (zh) |
CN (3) | CN110032520B (zh) |
TW (3) | TWI678613B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI768316B (zh) * | 2020-03-30 | 2022-06-21 | 旺宏電子股份有限公司 | 記憶體裝置以及安全開機的記憶體管理方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI666556B (zh) * | 2018-03-27 | 2019-07-21 | 緯創資通股份有限公司 | 電子裝置及其操作方法 |
KR102646630B1 (ko) * | 2018-10-01 | 2024-03-11 | 삼성전자주식회사 | 시스템 런타임 환경에서 dram 셀 상의 라이트 보호 커맨드를 발행하는 방법 |
EP4004742A4 (en) * | 2019-07-31 | 2023-04-19 | Hewlett-Packard Development Company, L.P. | UPDATES TO A FLASH MEMORY BASED ON DETERMINATION OF BITS |
FR3105854A1 (fr) * | 2019-12-31 | 2021-07-02 | Stmicroelectronics (Rousset) Sas | Système embarqué |
CN111338668B (zh) * | 2020-02-14 | 2022-05-10 | 支付宝(杭州)信息技术有限公司 | 用于实时计算中的代码升级的方法及装置 |
CN113495808A (zh) * | 2020-04-01 | 2021-10-12 | 旺宏电子股份有限公司 | 存储器装置以及安全开机的存储器管理方法 |
US11734018B2 (en) * | 2020-07-17 | 2023-08-22 | Western Digital Technologies, Inc. | Parallel boot execution of memory devices |
TWI805946B (zh) | 2020-09-29 | 2023-06-21 | 瑞昱半導體股份有限公司 | 內嵌式系統及控制非揮發性記憶體之方法 |
TWI755184B (zh) | 2020-12-03 | 2022-02-11 | 聯陽半導體股份有限公司 | 電子裝置及其開機方法 |
US11550494B2 (en) * | 2021-02-03 | 2023-01-10 | Macronix International Co., Ltd. | Method to support high reliability multiple times program non-volatile configuration setting |
FR3128543B1 (fr) * | 2021-10-26 | 2023-12-22 | Sagemcom Broadband Sas | Procede de verrouillage d’une memoire non-volatile reinscriptible et dispositif electronique mettant en œuvre ledit procede |
US11797230B2 (en) * | 2021-12-14 | 2023-10-24 | Hewlett-Packard Development Company, L.P. | Bios variables storage |
CN116700061B (zh) * | 2023-04-12 | 2024-05-03 | 广东为辰信息科技有限公司 | 一种基于安全启动技术的快速启动方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080141016A1 (en) * | 2006-12-07 | 2008-06-12 | Lung-Chiao Chang | Computer System and Related Method for Preventing Failure of Updating BIOS Programs |
TW201011647A (en) * | 2008-09-05 | 2010-03-16 | Asustek Comp Inc | Method for updating basic input/output system and method for repairing thereof |
TW201319942A (zh) * | 2011-11-04 | 2013-05-16 | Asrock Inc | 更新韌體方法與開機方法及使用其之電子裝置 |
US20140089561A1 (en) * | 2012-09-26 | 2014-03-27 | Kiran Pangal | Techniques Associated with Protecting System Critical Data Written to Non-Volatile Memory |
TW201502991A (zh) * | 2014-08-28 | 2015-01-16 | Felicity Taiwan Corp | 具spi介面的sata儲存裝置、應用該sata儲存裝置之開機方法及基本輸入輸出系統程式碼更新方法 |
TW201710888A (zh) * | 2015-09-04 | 2017-03-16 | 神雲科技股份有限公司 | 電腦裝置及其開機方法 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282675B1 (en) | 1997-08-06 | 2001-08-28 | Macronix International Co., Ltd. | Fault-tolerant architecture for in-circuit programming |
US6275931B1 (en) | 1998-06-22 | 2001-08-14 | Elsag International N.V. | Method and apparatus for upgrading firmware boot and main codes in a programmable memory |
US6205548B1 (en) * | 1998-07-31 | 2001-03-20 | Intel Corporation | Methods and apparatus for updating a nonvolatile memory |
US6473856B1 (en) * | 1999-06-30 | 2002-10-29 | International Business Machines Corporation | Gold code backup for corrupt boot code recovery |
US6748480B2 (en) | 1999-12-27 | 2004-06-08 | Gregory V. Chudnovsky | Multi-bank, fault-tolerant, high-performance memory addressing system and method |
US6748457B2 (en) * | 2000-02-03 | 2004-06-08 | Realtime Data, Llc | Data storewidth accelerator |
US6757838B1 (en) * | 2000-10-13 | 2004-06-29 | Hewlett-Packard Development Company, L.P. | Hardware independent implementation of computer system BIOS recovery |
US6651188B2 (en) | 2001-06-29 | 2003-11-18 | Intel Corporation | Automatic replacement of corrupted BIOS image |
US7017004B1 (en) * | 2002-03-29 | 2006-03-21 | Microsoft Corporation | System and method for updating contents of a flash ROM |
US7089549B2 (en) * | 2002-04-01 | 2006-08-08 | International Business Machines Corp. | Updating flash memory |
JP2004013719A (ja) * | 2002-06-10 | 2004-01-15 | Fujitsu Ltd | 多重化された不揮発性メモリの更新回路、及び多重化された不揮発性メモリの更新方法 |
TW200506731A (en) * | 2003-08-05 | 2005-02-16 | Via Tech Inc | Computer system with multiple basic input/output system (BIOS) memory blocks |
US8667249B2 (en) * | 2004-12-22 | 2014-03-04 | Intel Corporation | Systems and methods exchanging data between processors through concurrent shared memory |
US9003000B2 (en) * | 2006-07-25 | 2015-04-07 | Nvidia Corporation | System and method for operating system installation on a diskless computing platform |
CN100504782C (zh) * | 2006-12-18 | 2009-06-24 | 纬创资通股份有限公司 | 避免基本输出入系统程序更新失败的计算机系统 |
CN100501679C (zh) * | 2007-02-27 | 2009-06-17 | 华为技术有限公司 | 一种电子设备 |
US20090006834A1 (en) * | 2007-06-29 | 2009-01-01 | Michael Rothman | Proxied firmware updates |
WO2009052525A1 (en) | 2007-10-19 | 2009-04-23 | Virident Systems, Inc. | Managing memory systems containing components with asymmetric characteristics |
CN101667128B (zh) * | 2008-09-05 | 2013-11-06 | 华硕电脑股份有限公司 | 更新与修复基本输入输出系统的方法 |
US8266408B2 (en) | 2009-03-17 | 2012-09-11 | Memoir Systems, Inc. | System and method for storing data in a virtualized high speed memory system |
US8397039B2 (en) * | 2010-02-12 | 2013-03-12 | Symantec Corporation | Storage systems and methods |
TWI443507B (zh) * | 2011-12-05 | 2014-07-01 | Giga Byte Tech Co Ltd | 自動修復系統及其自動修復方法 |
CN103186434A (zh) * | 2011-12-31 | 2013-07-03 | 国民技术股份有限公司 | 恢复基本输入输出系统的方法及系统 |
US8880962B2 (en) * | 2012-04-24 | 2014-11-04 | International Business Machines Corporation | Maintenance planning and failure prediction from data observed within a time window |
KR101991905B1 (ko) * | 2012-07-19 | 2019-06-24 | 삼성전자주식회사 | 불휘발성 메모리, 불휘발성 메모리의 읽기 방법 및 불휘발성 메모리를 포함하는 메모리 시스템 |
US9158683B2 (en) | 2012-08-09 | 2015-10-13 | Texas Instruments Incorporated | Multiport memory emulation using single-port memory devices |
US9378572B2 (en) * | 2012-08-17 | 2016-06-28 | Intel Corporation | Shared virtual memory |
CN104102585B (zh) * | 2013-04-03 | 2017-09-12 | 群联电子股份有限公司 | 映射信息记录方法、存储器控制器与存储器储存装置 |
US10019358B2 (en) | 2015-03-20 | 2018-07-10 | Vixs Systems Inc. | Bank address remapping to load balance memory traffic among banks of memory |
US10055296B2 (en) * | 2015-10-30 | 2018-08-21 | Quanta Computer Inc. | System and method for selective BIOS restoration |
CN106776376B (zh) * | 2015-11-24 | 2019-08-06 | 群联电子股份有限公司 | 缓冲存储器管理方法、存储器控制电路单元及存储装置 |
CN106814968B (zh) * | 2015-11-27 | 2020-03-17 | 群联电子股份有限公司 | 存储器管理方法与系统及其存储器存储装置 |
-
2018
- 2018-01-11 US US15/868,896 patent/US10445088B2/en active Active
- 2018-01-30 EP EP18154123.6A patent/EP3511826B1/en active Active
- 2018-03-16 TW TW107109176A patent/TWI678613B/zh active
- 2018-03-20 CN CN201810232378.2A patent/CN110032520B/zh active Active
- 2018-10-25 TW TW107137817A patent/TWI703498B/zh active
- 2018-10-26 CN CN201811264242.6A patent/CN110032403B/zh active Active
-
2019
- 2019-01-07 TW TW108100560A patent/TWI722361B/zh active
- 2019-01-10 CN CN201910024870.5A patent/CN110032405B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080141016A1 (en) * | 2006-12-07 | 2008-06-12 | Lung-Chiao Chang | Computer System and Related Method for Preventing Failure of Updating BIOS Programs |
TW201011647A (en) * | 2008-09-05 | 2010-03-16 | Asustek Comp Inc | Method for updating basic input/output system and method for repairing thereof |
TW201319942A (zh) * | 2011-11-04 | 2013-05-16 | Asrock Inc | 更新韌體方法與開機方法及使用其之電子裝置 |
US20140089561A1 (en) * | 2012-09-26 | 2014-03-27 | Kiran Pangal | Techniques Associated with Protecting System Critical Data Written to Non-Volatile Memory |
TW201502991A (zh) * | 2014-08-28 | 2015-01-16 | Felicity Taiwan Corp | 具spi介面的sata儲存裝置、應用該sata儲存裝置之開機方法及基本輸入輸出系統程式碼更新方法 |
TW201710888A (zh) * | 2015-09-04 | 2017-03-16 | 神雲科技股份有限公司 | 電腦裝置及其開機方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI768316B (zh) * | 2020-03-30 | 2022-06-21 | 旺宏電子股份有限公司 | 記憶體裝置以及安全開機的記憶體管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110032405A (zh) | 2019-07-19 |
US20190212999A1 (en) | 2019-07-11 |
EP3511826B1 (en) | 2022-03-16 |
CN110032403A (zh) | 2019-07-19 |
CN110032520A (zh) | 2019-07-19 |
CN110032403B (zh) | 2022-02-22 |
EP3511826A1 (en) | 2019-07-17 |
TW201931115A (zh) | 2019-08-01 |
TWI703498B (zh) | 2020-09-01 |
TW201937367A (zh) | 2019-09-16 |
TWI722361B (zh) | 2021-03-21 |
CN110032405B (zh) | 2022-03-15 |
US10445088B2 (en) | 2019-10-15 |
CN110032520B (zh) | 2021-06-29 |
TW201931111A (zh) | 2019-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI678613B (zh) | 系統開機碼記憶體管理方法、記憶體裝置及其製造方法 | |
US11216214B2 (en) | Memory system and operation method thereof | |
US10866797B2 (en) | Data storage device and method for reducing firmware update time and data processing system including the device | |
US8296467B2 (en) | Single-chip flash device with boot code transfer capability | |
US6754765B1 (en) | Flash memory controller with updateable microcode | |
JP4524309B2 (ja) | フラッシュメモリ用のメモリコントローラ | |
US7886141B2 (en) | Method and systems for advanced reprogrammable boot codes and in-application programming of embedded microprocessor systems | |
US10620879B2 (en) | Write-while-read access method for a memory device | |
US6711059B2 (en) | Memory controller | |
TWI514408B (zh) | 於裝置開機期間處置來自非揮發性記憶體之錯誤 | |
TWI437494B (zh) | 記憶卡、包含該記憶卡的記憶體系統以及其操作方法 | |
US11281549B2 (en) | Storage device and method of operating storage device | |
US10977050B2 (en) | Method for managing system boot code memory, memory device and electronic system using the same | |
CN111399752B (zh) | 不同类型存储单元的控制装置及方法 | |
US8527733B2 (en) | Memory system | |
WO2013020954A1 (en) | Method for improving booting of a computing device | |
US8738847B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
US20050055530A1 (en) | Method and apparatus for protecting a specific memory section | |
US20180307424A1 (en) | Updating a memory | |
JP7457248B2 (ja) | 記憶装置 | |
EP3961451B1 (en) | Storage device |