TWI818732B - 記憶體裝置及其操作方法 - Google Patents
記憶體裝置及其操作方法 Download PDFInfo
- Publication number
- TWI818732B TWI818732B TW111135244A TW111135244A TWI818732B TW I818732 B TWI818732 B TW I818732B TW 111135244 A TW111135244 A TW 111135244A TW 111135244 A TW111135244 A TW 111135244A TW I818732 B TWI818732 B TW I818732B
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- program
- data
- conversion circuit
- circuit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1004—Compatibility, e.g. with legacy hardware
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Electrotherapy Devices (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明提供一種記憶體裝置及其操作方法。記憶體裝置包括記憶體控制器、地址轉換電路以及記憶體陣列。記憶體控制器根據應用程式來產生多個候選程式地址中的程式地址。地址轉換電路儲存多個實體地址資料以及多個遮罩資料。此些實體地址資料分別對應此些候選程式地址。地址轉換電路根據程式地址、此些實體地址資料以及此些遮罩資料執行第一邏輯運算以產生實體地址。記憶體控制器根據實體地址對記憶體陣列執行存取動作。
Description
本發明是有關於一種記憶體裝置及其操作方法,特別是關於一種可以將程式地址轉換成不同範圍的實體地址的記憶體裝置及其操作方法。
快閃(Flash)記憶體可以儲存韌體,其中韌體例如是啟動程式(Boot loader)以及其他應用程式(Application)。一般而言,前述的韌體已預先設定啟動的程式(執行)地址(又稱為啟動地址,Booting address)以及其對應的實體地址(Physical Address),因此嵌入於快閃記憶體中的微控制器可以依據程式地址及其對應的實體地址來存取快閃記憶體以執行啟動程式或其他應用程式(以下稱為應用程式)。隨著科技演進,微控制器的架構隨之改變以應用於不同產品生命週期以及安全需求的電子裝置。
舉例來說,對於應用特殊架構(例如是TrustZone)的快閃記憶體而言,當韌體處於開發或除錯階段時,應用程式的程式地址為多重的啟動地址。多重的啟動地址例如是從安全碼(Secure code)變更為非安全碼(Non-secure code)。又例如,對於支援韌體更新的快閃記憶體而言,快閃記憶體被區分為現行庫(Active bank)以及備份庫(Backup bank)。當韌體處於更新階段時,更新的韌體的程式地址為快閃基地址(Base address)。快閃基地址可以在備份庫與現行庫之間互換。然而,經變更或經互換的程式地址與預設的實體地址無法相互對照,而導致微控制器無法正確地存取快閃取記憶體,使得應用程式無法被正確地執行。
本發明實施例提供一種記憶體裝置及其操作方法,能夠將程式地址轉換成不同範圍的實際地址以應用於多重的啟動地址的變更以及快閃基地址的互換,而能夠正確地存取記憶體裝置。
本發明實施例的記憶體裝置包括記憶體控制器、地址轉換電路以及記憶體陣列。記憶體控制器用以根據應用程式來產生多個候選程式地址中的程式地址。地址轉換電路耦接記憶體控制器。地址轉換電路用以儲存多個實體地址資料以及多個遮罩資料。此些實體地址資料分別對應此些候選程式地址。地址轉換電路用以根據程式地址、此些實體地址資料以及此些遮罩資料執行第一邏輯運算以產生實體地址。記憶體陣列耦接記憶體控制器以及地址轉換電路。記憶體控制器用以根據實體地址對記憶體陣列執行存取動作。
本發明實施例另提供一種記憶體裝置的操作方法。操作方法包括以下的步驟。透過記憶體控制器根據應用程式來產生多個候選程式地址中的程式地址。透過地址轉換電路根據程式地址、多個實體地址資料以及多個遮罩資料執行第一邏輯運算以產生實體地址。地址轉換電路用以儲存此些實體地址資料以及此些遮罩資料。此些實體地址資料分別對應此些候選程式地址。透過記憶體控制器根據實體地址對記憶體陣列執行存取動作。
基於上述,本發明實施例的記憶體裝置及其操作方法能夠透過地址轉換電路來對程式地址執行邏輯運算以產生不同範圍的實體地址,而非單純地以映射的方式來產生實體地址。因此,記憶體裝置能夠應用於多重的啟動地址的變更以及快閃基地址的互換以正確地存取記憶體裝置。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
本發明的部份實施例接下來將會配合附圖來詳細描述,以下的描述所引用的元件符號,當不同附圖出現相同的元件符號將視為相同或相似的元件。這些實施例只是本發明的一部份,並未揭示所有本發明的可實施方式。更確切的說,這些實施例只是本發明的專利申請範圍中的範例。
圖1是依據本發明一實施例所繪示的記憶體裝置的方塊圖。記憶體裝置100可以應用於電子裝置中,其中電子裝置可以是手機、平板電腦、筆記型電腦與桌上型電腦等。請參考圖1,記憶體裝置100包括記憶體控制器110、地址轉換電路120以及記憶體陣列130。在本實施例中,記憶體裝置100例如是嵌入式閃存記憶體(Flash Memory)。在一些實施例中,記憶體裝置100例如是嵌入式動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)或嵌入式非揮發性隨機存取記憶體(Non-Volatile Random Access Memory,NVRAM)等。
在本實施例中,記憶體陣列130耦接記憶體控制器110以及地址轉換電路120。在本實施例中,記憶體陣列130可以被區分為多個庫(Bank)以儲存資料。前述的資料例如是利用硬體描述語言(Hardware description languages,例如Verilog HDL或VHDL)或其他合適的編程語言所形成的編程碼(Programming codes)。前述的資料可以用來實現於各種啟動程式或其他應用程式(以下稱為應用程式)的功能。
在本實施例中,記憶體控制器110耦接地址轉換電路120以及記憶體陣列130。記憶體控制器110還耦接電子裝置的處理器(例如是中央處理器,未繪示)。在本實施例中,記憶體控制器110受控於處理器,以透過地址訊號、資料訊號以及讀寫訊號等控制訊號來存取記憶體陣列130,以使處理器根據記憶體陣列130中的編程碼來實現應用程式的功能。在本實施例中,記憶體控制器110例如是閃存記憶體控制器(Flash Memory Controller,FMC)。
在本實施例中,地址轉換電路120耦接在記憶體控制器110與記憶體陣列130之間。在本實施例中,地址轉換電路120可以儲存多個實體地址資料以及多個遮罩資料。實體地址資料分別對應上述地址訊號中的多個候選程式地址,以分別指向記憶體陣列130中所對應的多個庫。
圖2是依據本發明一實施例所繪示的記憶體裝置的操作方法的流程圖。請參考圖1以及圖2,記憶體裝置100可以執行如以下步驟S210~S230來存取記憶體陣列130。在本實施例中,步驟S210~S230可以應用於以下示例性的情況。
在本實施例中,當電子裝置開機時(即,上電),處理器執行啟動程式,以透過記憶體裝置100將對應於此啟動程式的程式地址轉換成實體地址(Physical Address)。在一些實施例中,當電子裝置實現特定功能時,處理器執行所對應的其他應用程式,以透過記憶體裝置100將對應於此其他應用程式的程式地址轉換成實體地址。記憶體裝置100根據經轉換的實體地址來執行存取動作,以使電子裝置執行啟動程式或其他應用程式(以下稱為應用程式)。
具體來說,在步驟S210,透過記憶體控制器110根據處理器所執行的應用程式來產生多個候選程式地址中的程式地址S1。
在步驟S220,透過地址轉換電路120根據程式地址S1、實體地址資料以及遮罩資料執行第一邏輯運算以產生實體地址S2。應注意的是,第一邏輯運算為利用至少一種邏輯閘或邏輯運算子(Logical operator)的運算,而非查詢找查表(Lookup table)等映射操作。
在步驟S230,透過記憶體控制器110根據實體地址S2對記憶體陣列130執行存取動作,以使電子裝置執行應用程式。
在此值得一提的是,記憶體裝置100能夠透過地址轉換電路120來對程式地址S1執行邏輯運算以產生指向記憶體陣列130的實體地址S2,而非單純地以映射的方式來產生實體地址S2。因此,在不變更記憶體控制器110的情況下,透過地址轉換電路120將程式地址S1轉換成對應於記憶體陣列130的各種範圍的地址(即,實體地址S2),而能夠應用TrustZone架構中多重的啟動地址的變更,以及應用韌體更新架構中快閃基地址的互換,以正確地存取記憶體裝置100。
圖3是依據本發明一實施例所繪示的記憶體裝置的方塊圖。請參考圖3,記憶體裝置300包括記憶體控制器310、地址轉換電路320以及記憶體陣列330。圖3所示記憶體裝置300可以參照圖1所示記憶體裝置100的相關說明來類推。
在本實施例中,記憶體陣列330可以被區分為多個庫331_0~331_2以儲存資料。此些庫331_0~331_2中的的資料例如是編程碼,以實現所對應的應用程式的功能。此些庫331_0~331_2具有對應的實體地址S20~S22。具體來說,在本實施例中,對應於啟動程式的編程碼可以儲存在啟動庫331_0中,並具有開機實體地址S20。對應於啟動程式以外的第一應用程式的編程碼可以儲存在現行庫331_1中,並具有現行庫實體地址S21。對應於啟動程式以外的第二應用程式的編程碼可以儲存在備份庫331_2中,並具有備份庫實體地址S22。本實施例的庫331_0~331_2及其對應的實體地址S20~S22的數量以及配置僅為範例,並不以此為限。
在本實施例中,各個實體地址S20~S22包括多個位元值。以32位元的地址為示例說明,實體地址S20~S22的地址範圍例如是0x2000至0x2FFFF。
在本實施例中,記憶體控制器310根據處理器所執行的應用程式來產生多個候選程式地址S10~S12中的一者作為程式地址。具體來說,在本實施例中,記憶體控制器310根據啟動程式產生啟動程式地址S10作為程式地址。記憶體控制器310根據第一應用程式產生候選程式地址S11作為程式地址。記憶體控制器310根據第二應用程式產生候選程式地址S12作為程式地址。本實施例的候選程式地址S10~S12的數量以及配置僅為範例,並不以此為限。
在本實施例中,各個候選程式地址S10~S12包括多個位元值。以32位元的地址為示例說明,候選程式地址S10~S12的地址範圍例如是0x20010000至0x2001FFFF。
在本實施例中,地址轉換電路320包括多級子地址轉換電路321_0~321_N,其中N為正整數。本實施例的多級子地址轉換電路321_0~321_N的數量僅為範例,並不以此為限。具體來說,在本實施例中,多級子地址轉換電路321_0~321_N中的第i級子地址轉換電路321_i耦接記憶體控制器310以及記憶體陣列330,其中i為非負整數。
以i為1作示例說明,第1級子地址轉換電路321_1耦接記憶體控制器310以及記憶體陣列330。第1級子地址轉換電路321_1可以儲存實體地址資料D2、遮罩資料D3以及程式地址資料D1,其中的程式地址資料D1以及實體地址資料D2分別對應於多個候選程式地址S10~S12中的一者,例如是候選程式地址S11。第0級子地址轉換電路321_0、第2級子地址轉換電路321_2以及第N級子地址轉換電路321_N可以參照第1級子地址轉換電路321_1的相關說明並且加以類推,故在此不另重述。應注意的是,第0級子地址轉換電路321_0所儲存的資料D1~D3關聯於啟動程式以及啟動庫331_0。
在本實施例中,第i級子地址轉換電路321_i包括多個暫存器電路(未繪示)。此些暫存器電路分別儲存對應的程式地址資料D1、對應的遮罩資料D3以及對應的實體地址資料D2。在一些實施例中,第i級子地址轉換電路321_i是以多個暫存器電路來被實現。
以i為1作示例說明,第1級子地址轉換電路321_1中的各個暫存器電路例如是32位元的暫存器。此些32位元的暫存器分別儲存程式地址資料D1、實體地址資料D2以及遮罩資料D3。程式地址資料D1、實體地址資料D2以及遮罩資料D3分別包括32位元值,並且對應於作為程式地址的候選程式地址S11。
舉例來說,第1級子地址轉換電路321_1中前述的資料D1~D3以及對應的候選程式地址S11的位元值如表(1)所示。本實施例的資料D1~D3以及候選程式地址S11的位元值僅為範例,並不以此為限。請一併參考圖3以及表(1)。
表(1):
| 資料 | 位元值 |
| 程式地址資料D1(第1級子地址轉換電路321_1) | 0x20010000 |
| 遮罩資料D3(第1級子地址轉換電路321_1) | 0xFFFF0000 |
| 實體地址資料D2(第1級子地址轉換電路321_1) | 0x00020000 |
| 候選程式地址S11 | 0x200103F0 |
應注意的是,遮罩資料D3被用來與其他資料進行邏輯運算,以遮罩部分的位元值並且獲得未被遮罩的其他部分的位元值。舉例來說,在本實施例中,遮罩資料D3包括多個第一位元值(即,「FFFF」)以及多個第二位元值(即,「0000」)。當遮罩資料D3與候選程式地址S11進行及(AND)邏輯運算時,利用此些第一位元值(即,「FFFF」)能夠使候選程式地址S11中所對應的前16位元值(即,「2001」)被取出,並且利用此些第二位元值(即,「0000」)能夠使候選程式地址S11中所對應的後16位元值(即,「03F0」)被遮罩,以獲得邏輯運算結果為0x20010000。
又例如,在本實施例中,當遮罩資料D3的反向(即,「0x0000FFFF」)與候選程式地址S11進行及(AND)邏輯運算時,利用經反向的此些第一位元值(即,「0000」)能夠使候選程式地址S11中所對應的前16位元值(即,「2001」)被遮罩,並且利用經反向的此些第二位元值(即,「FFFF」)能夠使候選程式地址S11中所對應的後16位元值(即,「03F0」)被取出,以獲得邏輯運算結果為0x000003F0。
在本實施例中,地址轉換電路320還包括預設子地址轉換電路322。預設子地址轉換電路322耦接記憶體控制器310以及記憶體陣列330。在本實施例中,預設子地址轉換電路322包括多個暫存器電路(未繪示)。此些暫存器電路分別儲存對應的程式地址資料D1、對應的遮罩資料D3以及對應的實體地址資料D2。在一些實施例中,預設子地址轉換電路322的電路配置與第i級子地址轉換電路321_i的電路配置相同,可以參照第1級子地址轉換電路321_1的相關說明並且加以類推,故在此不另重述。
在本實施例中,地址轉換電路320還包括核心電路323。核心電路323耦接記憶體控制器310、多級子地址轉換電路中321_0~321_N中的暫存器電路、耦接預設子地址轉換電路322中的暫存器電路以及記憶體陣列330。在本實施例中,核心電路323可以根據候選程式地址S10~S12中的一者來與第i級子地址轉換電路321_i及/或預設子地址轉換電路322執行多個邏輯運算,以產生對應的實體地址S20~S22。
在本實施例中,核心電路323包括多個邏輯閘(未繪示)。此些邏輯閘可以分別執行及(AND)邏輯運算以及或(OR)邏輯運算。在一些實施例中,核心電路323是以多個邏輯閘來被實現。在一些實施例中,核心電路323例如是訊號轉換器、現場可程式化邏輯閘陣列(Field Programmable Gate Array,FPGA)、中央處理單元(Central Processing Unit,CPU),或是其他可程式化之一般用途或特殊用途的微處理器(Microprocessor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似裝置或這些裝置的組合,其可載入並執行相關韌體或軟體,以實現本新型創作的邏輯運算功能。
圖4是依據本發明一實施例所繪示的記憶體裝置的操作方法的流程圖。請參考圖3以及圖4,記憶體裝置300可以執行如以下步驟S410~ S450來存取記憶體陣列330。
在步驟S410,記憶體裝置300開始工作。
在本實施例中,當電子裝置開機時,處理器執行啟動程式,並且記憶體控制器310根據啟動程式產生候選程式地址S10~S12中的一者(例如是啟動程式地址S10)作為程式地址。在本實施例中,當電子裝置實現特定功能時,處理器執行所對應的其他應用程式,並且記憶體控制器310根據前述的應用程式產生候選程式地址S10~S12中的一者(例如是候選程式地址S11)作為程式地址。
在步驟S420,核心電路323接收程式地址(例如是啟動程式地址S10或候選程式地址S11)。核心電路323根據所接收的程式地址來與第i級子地址轉換電路執行第二邏輯運算,以判斷核心電路323是否與第i級子地址轉換電路執行第一邏輯運算,其中i的預設值為0。在本實施例中,第二邏輯運算的步驟可以包括以下的步驟S421~S424。
以i為1作示例說明,當電子裝置已開機並且處理器執行應用程式時,核心電路323接收作為程式地址的候選程式地址S11(以下實施例中稱為程式地址S11),並且存取第1級子地址轉換電路321_1中的資料D1~D3。在本實施例中,程式地址S11以及前述的資料D1~D3分別例如是上述的表(1)所示的32位元值資料。
在步驟S421,核心電路323對程式地址S11以及第1級子地址轉換電路321_1中的遮罩資料D3執行及(AND)邏輯運算以產生第二結果。在本實施例中,第二結果包括多個第一位元值以及多個第二位元值。第二結果例如是32位元值資料,並且包括對應於遮罩資料D3的前16位元值資料以及後16位元值資料。
舉例來說,請一併參考表(1),核心電路323透過遮罩資料D3的多個第一位元值(即,「FFFF」)取出程式地址S11中所對應的前16位元值(即,「2001」)。此外,核心電路323透過遮罩資料D3的多個第二位元值(即,「0000」)遮罩程式地址S11中所對應的後16位元值(即,「03F0」)。在本實施例中,經過及(AND)邏輯運算的第二結果例如是0x20010000。
在步驟S422,核心電路323判斷第二結果的多個第一位元值(例如是前16位元值)與程式地址資料D1對應的多個第一位元值(例如是前16位元值)是否相同以產生判斷結果。若是,記憶體裝置300執行步驟S430。若否,記憶體裝置300執行步驟S423。
在步驟S423,當步驟S422的判斷結果為不相同時,表示程式地址S11不是利用第1級子地址轉換電路321_1來被轉換成實體地址S20~S22。此時,核心電路323將i(例如是,1)設定為i+1(例如是,2)以移位至下一級的子地址轉換電路321_2。
在步驟S424,核心電路323判斷i是否大於N,其中N表示為子地址轉換電路321_0~321_N中的最後一級電路。若是,記憶體裝置300執行步驟S440。若否,記憶體裝置300重新執行步驟S420。
在重新執行的步驟S420,當步驟S422的判斷結果為不相同,並且步驟S421中對應的第1級子地址轉換電路321_1為多級子地址轉換電路321_0~321_N中的一者(i沒有大於N)時,核心電路323根據程式地址S11來與第i+1級子地址轉換電路(即,第2級子地址轉換電路321_2)執行第二邏輯運算,以判斷核心電路323是否與此級子地址轉換電路321_2執行第一邏輯運算,並且記憶體裝置300接續執行步驟S421~S424。
在步驟S430,當步驟S422的判斷結果為相同時,表示程式地址S11是利用第1級子地址轉換電路321_1來被轉換成實體地址S20~S22。此時,核心電路323與第i級子地址轉換電路(即,第1級子地址轉換電路321_1)執行第一邏輯運算以產生對應的實體地址S20~S22(例如是實體地址S21)。在本實施例中,第一邏輯運算的步驟可以包括以下的步驟S431~S432,並如以下式(2)所示:
。
式(2)中的實體地址S11以及實體地址S21僅為示例說明。程式地址S11可以是其他的程式地址S10或S12,並且實體地址S21可以是其他所對應的實體地址S20或S22。
在步驟S431,核心電路323對程式地址S11以及第1級子地址轉換電路321_1中的遮罩資料D3的反向執行及(AND)邏輯運算以產生第一結果。
舉例來說,請一併參考表(1),核心電路323透過經反向的遮罩資料D3的多個第二位元值(即,「FFFF」)取出程式地址S11中所對應的後16位元值(即,「03F0」)。此外,核心電路323透過經反向的遮罩資料D3的多個第一位元值(即,「0000」)遮罩程式地址S11中所對應的前16位元值(即,「2001」)。在本實施例中,經過及(AND)邏輯運算的第一結果例如是0x000003F0。
在步驟S432,核心電路323對第一結果以及第1級子地址轉換電路321_1中的實體地址資料D2執行或(OR)邏輯運算以產生實體地址S20~S22中的一者(例如是實體地址S21)。
舉例來說,請一併參考表(1),核心電路323對前述的第一結果(即,0x000003F0)以及實體地址資料D2(即,0x00020000)執行或(OR)邏輯運算以產生實體地址S21(即,0x000203F0)。
應注意的是,在本實施例中,候選程式地址S10~S12為連續的多個地址。候選程式地址S10~S12經執行前述地第一邏輯運算後所產生的多個實體地址S20~S22為不連續的多個地址,以分別指向對應的多個庫331_0~331_2。
在本實施例中,記憶體控制器310根據實體地址S21對現行庫331_1執行存取動作,並在步驟S450結束工作。在一些實施例中,因應不同應用程式的需求,核心電路323可以根據程式地址S11來與第1級子地址轉換電路321_1執行第一邏輯運算而產生實體地址S21以外的其他實體地址(例如是實體地址S22),以使記憶體控制器310根據實體地址S22來存取備份庫331_2。
應注意的是,當電子裝置執行應用程式以實現特定功能時,例如是對韌體更新時,操作者可以預先設定第1級子地址轉換電路321_1對應至現行庫331_1,並且預先設定第2級子地址轉換電路321_2對應至備份庫331_2。舉例來說,在本實施例中,第1級子地址轉換電路321_1中的程式地址資料D1對應於前述的韌體進行編譯時所需的快閃基地址(例如是程式地址S11),並且實體地址資料D2對應於前述的韌體進行編譯時所需的實體地址S21。第2級子地址轉換電路321_2中的程式地址資料D1對應於前述的韌體進行執行時所需的快閃基地址(例如是程式地址S12),並且實體地址資料D2對應於前述的韌體進行執行時所需的實體地址S22。
接續上述的說明,首先,需要被更新的韌體被下載並儲存在備份庫331_2。再者,當韌體完成更新時,操作者可以將第1級子地址轉換電路321_1中的實體地址資料D2與第2級子地址轉換電路321_2中的實體地址資料D2互換,使得韌體執行時所需的實體地址從實體地址S21被換成實體地址S22。如此一來,當電子裝置執行此更新的韌體時能夠存取備份庫331_2。因此,利用經互換的實體地址S21、S22,記憶體裝置300能夠應用快閃基地址的互換以支援更新韌體,並且是以簡便的設定方式來更新韌體,而不需再將更新的韌體從備份庫331_2複製到現行庫331_1中以執行此更新的韌體。
在本實施例中,當電子裝置執行其他應用程式以實現其他特定功能時,操作者可以根據應用程式的需求來設定第N級子地址轉換電路321_N中的實體地址資料D2對應於現行庫331_1以及備份庫331_2以外的其他庫。應注意的是,由於前述的其他庫獨立於現行庫331_1或備份庫331_2,因此前述的其他庫中所儲存的韌體並不會受到現行庫331_1或備份庫331_2中更新中的韌體的影響,而可以用來儲存重要資料。
回到步驟S424,當步驟S422以及S424的判斷結果皆為不相同時,表示步驟S420中第i級子地址轉換電路321_i不為多級子地址轉換電路321_0~321_N中的任一者(即,i大於N)。也就是說,從第0級子地址轉換電路321_0至第N級子地址轉換電路321_N中的各級子地址轉換電路321_0~321_N皆未對應於程式地址S11,因此程式地址S11不是利用多級子地址轉換電路321_0~321_N中的任一者來被轉換成實體地址S20~S22。
在步驟S440,當對應於各級子地址轉換電路321_0~321_N在步驟S422的判斷結果皆為不相同時,核心電路323根據程式地址S11來與預設子地址轉換電路322執行第一邏輯運算。第一邏輯運算可以參照前述步驟S431~S432的相關說明並且加以類推,故在此不另重述。
在另一方面,回到步驟S420,以i為0作示例說明,當電子裝置開機並且處理器執行啟動程式時,核心電路323接收作為程式地址的啟動程式地址S10(以下實施例中稱為程式地址S10),並且存取第0級子地址轉換電路321_0中的資料D1~D3,以與第0級子地址轉換電路321_0執行第二邏輯運算。第0級子地址轉換電路321_0中的資料D1~D3可以參照前述第1級子地址轉換電路321_1中的資料D1~D3的相關說明並且加以類推,故在此不另重述。
在本實施例中,記憶體裝置300接續執行步驟S421、S422、S423、S430以及S431~S440。詳細而言,在步驟S421,核心電路323對程式地址S10以及第0級子地址轉換電路321_0中的遮罩資料D3執行及(AND)邏輯運算以產生第二結果。在步驟S422,核心電路323判斷第二結果的多個第一位元值(例如是前16位元值)與程式地址資料D1對應的多個第一位元值(例如是前16位元值)為相同以接續步驟S430。在一些實施例中,記憶體裝置300在步驟S420並未執行第二邏輯運算,並且忽略步驟S421、S422以及S423,而直接執行步驟S430。
在步驟S430,核心電路323根據程式地址S10來與第0級子地址轉換電路321_0執行第一邏輯運算以產生對應的實體地址S20~S22(例如是啟動實體地址S20)。具體來說,核心電路323根據程式地址S10、第0級子地址轉換電路321_0中的實體地址資料D2以及遮罩資料D3執行第一邏輯運算以產生啟動實體地址S20。第一邏輯運算可以參照前述步驟S431~S432的相關說明並且加以類推,故在此不另重述。此時,記憶體控制器310根據啟動實體地址S20對記憶體陣列330中的啟動庫331_0執行存取動作,並在步驟S450結束工作。
應注意的是,當電子裝置開機並且處理器執行啟動程式時,操作者可以根據不同的開機需求來預先設定第0級子地址轉換電路321_0中的程式地址資料D1以及實體地址資料D2,以支援不同的啟動程式而能夠應用於多重的啟動地址的變更。因此,利用經變更的啟動實體地址S21,記憶體裝置300能夠應用於特殊架構(例如是TrustZone),以使啟動實體地址S21對應於安全碼(Secure code)的啟動庫331_0或對應於非安全碼(Non-secure code)的啟動庫331_0,而能夠方便操作者進行測試或除錯等開發作業。
綜上所述,本發明實施例的記憶體裝置及其操作方法能夠透過地址轉換電路來對程式地址執行邏輯運算以產生各種範圍的實體地址,而非單純地以映射的方式來產生實體地址。因此,記憶體裝置能夠應用於多重的啟動地址的變更以及快閃基地址的互換以正確地存取記憶體裝置。在部分實施例中,透過地址轉換電路將對應於不同庫的實體地址互換能夠避免更新中的韌體受到影響,並且能夠加速韌體的更新作業程式地址。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
100、300:記憶體裝置
110、310:記憶體控制器
120、320:地址轉換電路
130、330:記憶體陣列
321_0~321_N:多級子地址轉換電路
322:預設子地址轉換電路
323:核心電路
331_0~331_2:庫
D1:程式地址資料
D2:實體地址資料
D3:遮罩資料
S210~S230、S410~S450:步驟
S1、S10~S12:程式地址
S2、S20~S22:實體地址
圖1是依據本發明一實施例所繪示的記憶體裝置的方塊圖。
圖2是依據本發明一實施例所繪示的記憶體裝置的操作方法的流程圖。
圖3是依據本發明一實施例所繪示的記憶體裝置的方塊圖。
圖4是依據本發明一實施例所繪示的記憶體裝置的操作方法的流程圖。
100:記憶體裝置
110:記憶體控制器
120:地址轉換電路
130:記憶體陣列
S1:程式地址
S2:實體地址
Claims (9)
- 一種記憶體裝置,包括:一記憶體控制器,用以根據一應用程式來產生多個候選程式地址中的一程式地址;一地址轉換電路,耦接該記憶體控制器,該地址轉換電路用以儲存多個實體地址資料以及多個遮罩資料,其中該些實體地址資料分別對應該些候選程式地址,並且該地址轉換電路用以根據該程式地址、該些實體地址資料以及該些遮罩資料執行一第一邏輯運算以產生一實體地址;以及一記憶體陣列,耦接該記憶體控制器以及該地址轉換電路,其中該記憶體控制器用以根據該實體地址對該記憶體陣列執行一存取動作,其中該地址轉換電路包括:一多級子地址轉換電路,其中該多級子地址轉換電路中的一第i級子地址轉換電路耦接該記憶體控制器以及該記憶體陣列,其中該第i級子地址轉換電路用以儲存對應的各多個程式地址資料、對應的各該實體地址資料以及對應的各該遮罩資料,該些程式地址資料分別對應該些候選程式地址,i為非負整數。
- 如請求項1所述的記憶體裝置,其中該第i級子地址轉換電路包括:多個暫存器電路,分別用以儲存對應的各該程式地址資料、 對應的各該實體地址資料以及對應的各該遮罩資料。
- 如請求項2所述的記憶體裝置,其中該地址轉換電路還包括:一核心電路,耦接該記憶體控制器、該些暫存器電路以及該記憶體陣列,該核心電路用以根據該程式地址來與該第i級子地址轉換電路執行該第一邏輯運算。
- 如請求項3所述的記憶體裝置,其中該核心電路根據該程式地址來與該第i級子地址轉換電路執行該第一邏輯運算的步驟包括:對該程式地址以及對應的各該遮罩資料的反向執行及邏輯運算以產生一第一結果;以及對該第一結果以及對應的各該實體地址資料執行或邏輯運算以產生該實體地址。
- 如請求項3所述的記憶體裝置,其中該核心電路還用以根據該程式地址來與該第i級子地址轉換電路執行一第二邏輯運算,以判斷該核心電路是否與該第i級子地址轉換電路執行該第一邏輯運算。
- 如請求項5所述的記憶體裝置,其中該核心電路根據該程式地址來與該第i級子地址轉換電路執行該第二邏輯運算的步驟包括:對該程式地址以及對應的各該遮罩資料執行及邏輯運算以產生一第二結果,其中該第二結果包括多個第一位元值以及多個第 二位元值;判斷該第二結果的該些第一位元值與對應的各該程式地址資料對應的多個第一位元值是否相同以產生一判斷結果;當該判斷結果為相同時,與該第i級子地址轉換電路執行該第一邏輯運算;以及當該判斷結果為不相同時,根據該程式地址來與該第i+1級子地址轉換電路執行該第二邏輯運算。
- 如請求項6所述的記憶體裝置,其中該地址轉換電路還包括:一預設子地址轉換電路,耦接該記憶體控制器以及該記憶體陣列,該預設子地址轉換電路用以儲存對應的各該程式地址資料、對應的各該遮罩資料以及對應的各該實體地址資料,其中當對應於該多級子地址轉換電路的各該判斷結果皆不相同時,該核心電路根據該程式地址來與該預設子地址轉換電路執行該第一邏輯運算。
- 一種記憶體裝置的操作方法,包括:透過一記憶體控制器根據一應用程式來產生多個候選程式地址中的一程式地址;透過一地址轉換電路根據該程式地址、多個實體地址資料以及多個遮罩資料執行一第一邏輯運算以產生一實體地址,其中該地址轉換電路用以儲存該些實體地址資料以及該些遮罩資料,該些實體地址資料分別對應該些候選程式地址; 透過該記憶體控制器根據該實體地址對一記憶體陣列執行一存取動作,其中該地址轉換電路包括:一多級子地址轉換電路,其中該多級子地址轉換電路中的一第i級子地址轉換電路耦接該記憶體控制器以及該記憶體陣列,其中該第i級子地址轉換電路用以儲存對應的各多個程式地址資料、對應的各該實體地址資料以及對應的各該遮罩資料,該些程式地址資料分別對應該些候選程式地址,i為非負整數。
- 如請求項8所述的操作方法,其中該些候選程式地址為連續的多個地址,該些候選程式地址經執行該第一邏輯運算所產生的多個實體地址為不連續的多個地址。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW111135244A TWI818732B (zh) | 2022-09-16 | 2022-09-16 | 記憶體裝置及其操作方法 |
| CN202211625718.0A CN117724999A (zh) | 2022-09-16 | 2022-12-16 | 内存装置及其操作方法 |
| US18/334,370 US20240095178A1 (en) | 2022-09-16 | 2023-06-13 | Memory device and operating method thereof |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW111135244A TWI818732B (zh) | 2022-09-16 | 2022-09-16 | 記憶體裝置及其操作方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI818732B true TWI818732B (zh) | 2023-10-11 |
| TW202414225A TW202414225A (zh) | 2024-04-01 |
Family
ID=89857553
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW111135244A TWI818732B (zh) | 2022-09-16 | 2022-09-16 | 記憶體裝置及其操作方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20240095178A1 (zh) |
| CN (1) | CN117724999A (zh) |
| TW (1) | TWI818732B (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI854589B (zh) * | 2023-04-11 | 2024-09-01 | 新唐科技股份有限公司 | 微控制器電路和開機控制方法 |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4922415A (en) * | 1984-03-02 | 1990-05-01 | Hemdal Goran A H | Data processing system for converting virtual to real addresses without requiring instruction from the central processing unit |
| TW201525690A (zh) * | 2013-12-27 | 2015-07-01 | Intel Corp | 用以改變安全獨立領域的頁面之位址的處理器、方法、系統及指令 |
| US20170017402A1 (en) * | 2015-07-13 | 2017-01-19 | Hongzhong Zheng | Nvdimm adaptive access mode and smart partition mechanism |
| TW202137011A (zh) * | 2015-07-20 | 2021-10-01 | 美商英特爾股份有限公司 | 用於記憶體位址範圍的支持可組態安全性級別的處理器、方法及電腦可讀取非暫態儲存媒體 |
| TW202141284A (zh) * | 2020-03-24 | 2021-11-01 | 英商Arm股份有限公司 | 使用複數個實體位址空間的裝置及方法 |
| CN114968366A (zh) * | 2019-03-15 | 2022-08-30 | 英特尔公司 | 用于提高高速缓存效率和利用率的系统和方法 |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7991963B2 (en) * | 2007-12-31 | 2011-08-02 | Intel Corporation | In-memory, in-page directory cache coherency scheme |
| US10540100B2 (en) * | 2018-04-10 | 2020-01-21 | Western Digital Technologies, Inc. | Mapping-based wear leveling for non-volatile memory |
-
2022
- 2022-09-16 TW TW111135244A patent/TWI818732B/zh active
- 2022-12-16 CN CN202211625718.0A patent/CN117724999A/zh active Pending
-
2023
- 2023-06-13 US US18/334,370 patent/US20240095178A1/en active Pending
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4922415A (en) * | 1984-03-02 | 1990-05-01 | Hemdal Goran A H | Data processing system for converting virtual to real addresses without requiring instruction from the central processing unit |
| TW201525690A (zh) * | 2013-12-27 | 2015-07-01 | Intel Corp | 用以改變安全獨立領域的頁面之位址的處理器、方法、系統及指令 |
| US20170017402A1 (en) * | 2015-07-13 | 2017-01-19 | Hongzhong Zheng | Nvdimm adaptive access mode and smart partition mechanism |
| TW202137011A (zh) * | 2015-07-20 | 2021-10-01 | 美商英特爾股份有限公司 | 用於記憶體位址範圍的支持可組態安全性級別的處理器、方法及電腦可讀取非暫態儲存媒體 |
| CN114968366A (zh) * | 2019-03-15 | 2022-08-30 | 英特尔公司 | 用于提高高速缓存效率和利用率的系统和方法 |
| TW202141284A (zh) * | 2020-03-24 | 2021-11-01 | 英商Arm股份有限公司 | 使用複數個實體位址空間的裝置及方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN117724999A (zh) | 2024-03-19 |
| TW202414225A (zh) | 2024-04-01 |
| US20240095178A1 (en) | 2024-03-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI788774B (zh) | 用於記憶體損毀偵測的硬體設備和方法 | |
| CN101236487B (zh) | 存储器子系统的多字元储存/读取方法以及其电路 | |
| CN107250993B (zh) | 向量缓存行写回处理器、方法、系统和指令 | |
| TWI407366B (zh) | 具有微代碼之微處理器、在微處理器中儲存資料的方法、以及使用於計算裝置之電腦程式產品 | |
| US12001842B2 (en) | Hardware apparatuses and methods to switch shadow stack pointers | |
| TWI464675B (zh) | 具有整合性資料端序控制機制的資料處理引擎 | |
| CN104981771B (zh) | 基于标量寄存器数据值的向量寄存器寻址和功能 | |
| WO2009114961A1 (zh) | 一种支持x86虚拟机的risc处理器装置及方法 | |
| GB2525473A (en) | Modeless instruction execution with 64/32-bit addressing | |
| US7260717B2 (en) | System and method for performing kernel-mode operations | |
| CN111752476A (zh) | 用于下转换以及交错多个浮点值的装置和方法 | |
| US11354128B2 (en) | Optimized mode transitions through predicting target state | |
| CN104205042A (zh) | 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制 | |
| TWI830927B (zh) | 用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體 | |
| TW201523439A (zh) | 模式相依的頻寬負載至較寬暫存器處理器,方法和系統 | |
| CN104050415B (zh) | 用于系统调用的稳健且高性能的指令 | |
| US10990384B2 (en) | System, apparatus and method for dynamic update to code stored in a read-only memory (ROM) | |
| US10248574B2 (en) | Input/output translation lookaside buffer prefetching | |
| US20190205061A1 (en) | Processor, method, and system for reducing latency in accessing remote registers | |
| TWI818732B (zh) | 記憶體裝置及其操作方法 | |
| US12032485B2 (en) | 64-bit virtual addresses having metadata bit(s) and canonicality check that does not fail due to non-canonical values of metadata bit(s) | |
| CN114490444A (zh) | 用于与缓存数据相对应的元数据的选择性存储的隔离存储器 | |
| CN1253801C (zh) | 具有流水线的计算电路的存储器系统以及提供数据的方法 | |
| CN112540790A (zh) | 用于双空间模式预取器的装置、方法和系统 | |
| WO2022141522A1 (zh) | 一种存储器和计算机 |