TWI492054B - 快閃記憶體的模擬方法與模擬器 - Google Patents
快閃記憶體的模擬方法與模擬器 Download PDFInfo
- Publication number
- TWI492054B TWI492054B TW101141022A TW101141022A TWI492054B TW I492054 B TWI492054 B TW I492054B TW 101141022 A TW101141022 A TW 101141022A TW 101141022 A TW101141022 A TW 101141022A TW I492054 B TWI492054 B TW I492054B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- memory
- processing unit
- simulator
- data processing
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2924/00—Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
- H01L2924/10—Details of semiconductor or other solid state devices to be connected
- H01L2924/11—Device type
- H01L2924/14—Integrated circuits
- H01L2924/143—Digital devices
- H01L2924/1434—Memory
- H01L2924/1435—Random access memory [RAM]
- H01L2924/1438—Flash memory
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L2924/00—Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
- H01L2924/10—Details of semiconductor or other solid state devices to be connected
- H01L2924/11—Device type
- H01L2924/14—Integrated circuits
- H01L2924/143—Digital devices
- H01L2924/1434—Memory
- H01L2924/145—Read-only memory [ROM]
- H01L2924/1451—EPROM
- H01L2924/14511—EEPROM
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
- Software Systems (AREA)
Description
本發明是有關於一種快閃記憶體的模擬方法以及此用此模擬方法的模擬器。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,一個快閃記憶體會耦接至一個記憶體控制器,並由此記憶體控制器下達指令。然而,在一些應用中,記憶體控制器會耦接至不同記憶體類型的快閃記憶體,而不同記憶體類型的快閃記憶體可能有不同的物體特性或內部運作。當記憶體控制器與快閃記憶體之間的運作發生錯誤時,不容易發現是由於記憶體控制器的運作發生錯誤或是快閃記憶體的運作發生錯誤。因此,如何產生一個用以模擬快閃記憶體的模擬器,使得此模擬器可被控制且可以支援不同的記憶體類型,為此領域技術人員所關心的議題。
本發明的範例實施例中提出一種快閃記憶體的模擬
方法與模擬器,可以使模擬器支援不同的記憶體類型。
本發明一範例實施例提出一種快閃記憶體的模擬方法。此方法用於模擬器,而此模擬器用以耦接至一記憶體控制器。此模擬方法包括:設定一預設反應條件;提供多個指令集,其中每一個指令集是對應至一個記憶體類型;接收來自記憶體控制器的第一指令;根據第一指令辨識上述指令集中的第二指令;判斷第二指令是否符合預設反應條件;根據預設反應條件,取得對應第二指令的第一訊號;以及傳送第一訊號至記憶體控制器。
在一範例實施例中,上述的第二指令為寫入指令,並且寫入指令是指示寫入第一資料至第一記憶體位址。此模擬方法更包括:將第一資料儲存至模擬器中的一個暫存記憶體;透過模擬器的一個非快閃記憶體介面傳送中斷訊號、寫入指令與第一記憶體位址至一個資料處理單元,其中資料處理單元用以根據預設反應條件產生上述的第一訊號;以及由資料處理單元透過非快閃記憶體介面從暫存記憶體中讀取第一資料並且將第一資料儲存至資料處理單元中。
在一範例實施例中,上述的第二指令為一讀取指令,並且讀取指令是指示讀取第二記憶體位址。此模擬方法更包括:透過模擬器的非快閃記憶體介面傳送中斷訊號、讀取指令與第二記憶體位置至資料處理單元,其中資料處理單元用以根據預設反應條件產生第一訊號;以及由資料處理單元透過非快閃記憶體介面將對應於第二記憶體位址的
第二資料寫入至模擬器的暫存記憶體中。
在一範例實施例中,上述的模擬方法更包括:提供記憶體控制器所述記憶體類型的其中之一的辨識資訊。
在一範例實施例中,上述的指令集包括第一指令集,第一指令集包括多個第三指令。其中根據第一指令辨識指令集中的第二指令的步驟包括:根據一個指標從一個佇列中取得第一指令;判斷第一指令是否符合第三指令的其中之一;若第一指令符合第三指令的其中之一,更新指標;以及若第一指令不符合第三指令的其中之一,維持指標不變。其中第一指令符合的第三指令為第二指令。
在一範例實施例中,上述的模擬方法更包括:若第一指令符合第三指令的其中之一,產生一重置訊號。其中重置訊號指示開始辨識佇列中的第四指令,而第四指令的佇列順序是在第一指令的佇列順序之後。
在一範例實施例中,上述的模擬方法更包括:若第一指令符合第三指令的其中之一,傳送一忙碌訊號給記憶體控制器。
在一範例實施例中,上述的模擬方法更包括:若第一指令符合第三指令的其中之一,傳送一中斷訊號給資料處理單元以通知第二指令。
以另外一個角度來說,本發明一範例實施例提出一種模擬器,用以模擬快閃記憶體。此模擬器包括:快閃記憶體介面、偵測器、處理器與非快閃記憶體介面。快閃記憶體介面是用以耦接至記憶體控制器,並且接收來自記憶體
控制器的第一指令。偵測器是耦接至快閃記憶體介面,用以提供多個指令集。其中每一個指令集是對應至一記憶體類型,並且偵測器用以根據第一指令辨識這些指令集中的第二指令。處理器是耦接至偵測器。非快閃記憶體介面是耦接至處理器,用以耦接至一資料處理單元。資料處理單元用以設定一預設反應條件,並且判斷第二指令是否符合預設反應條件。處理器用以根據預設反應條件,取得對應第二指令的第一訊號,並且傳送第一訊號至記憶體控制器。
在一範例實施例中,上述的第二指令為寫入指令,並且此寫入指令是指示寫入第一資料至第一記憶體位址。此外,模擬器更包括一暫存記憶體。處理器更用以將第一資料儲存至暫存記憶體,並且透過非快閃記憶體介面傳送中斷訊號、寫入指令與第一記憶體位址至資料處理單元。資料處理單元用以根據預設反應條件產生第一訊號。並且,資料處理單元會透過非快閃記憶體介面讀取暫存記憶體中的第一資料,並且將第一資料儲存至資料處理單元中。
在一範例實施例中,上述的第二指令為讀取指令,並且此讀取指令是指示讀取第二記憶體位址。處理器會透過非快閃記憶體介面傳送中斷訊號、讀取指令與第二記憶體位置至資料處理單元。資料處理單元用以根據預設反應條件產生第一訊號,並且資料處理單元會透過非快閃記憶體介面將對應於第二記憶體位址的第二資料寫入至暫存記憶體中。
在一範例實施例中,上述的處理器更用以提供記憶體
控制器所述記憶體類型的其中之一的辨識資訊。
在一範例實施例中,上述的指令集包括第一指令集,而第一指令集包括多個第三指令。上述的偵測器包括子單元,並且此子單元包括指標產生器、多工器、指令分析器與比較器。指標產生器是用以產生一指標。多工器是耦接至指標產生器,用以根據指標從一佇列中取得第一指令。指令分析器是耦接至多工器,用以分析第一指令以產生分析結果。比較器,耦接至指令分析器與指標產生器,用以根據此分析結果判斷第一指令是否符合第三指令的其中之一。若第一指令符合第三指令的其中之一,指標產生器用以更新指標。其中第一指令符合的第三指令為第二指令。若第一指令不符合第三指令的其中之一,指標產生器用以維持指標不變。
在一範例實施例中,上述的子單元還包括一重置訊號產生器。若第一指令符合第三指令的其中之一,重置訊號產生器用以產生重置訊號。此重置訊號指示開始辨識佇列中的第四指令,並且第四指令的佇列順序是在第一指令的佇列順序之後。
在一範例實施例中,上述的子單元還包括一忙碌訊號產生器。若第一指令符合第三指令的其中之一,忙碌訊號產生器用以傳送一忙碌訊號給記憶體控制器。
在一範例實施例中,上述的子單元還包括一中斷訊號產生器。若第一指令符合第三指令的其中之一,中斷訊號產生器用以傳送中斷訊號給資料處理單元以通知第二指
令。
基於上述,本發明範例實施例所提出的模擬方法與模擬器,可以支援不同的記憶體類型。並且,每一個記憶體類型所對應的指令集可以被更新。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組與記憶體控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1是繪示記憶體儲存裝置的概要方塊圖。
請參照圖1,記憶體儲存裝置100包括連接器102、記憶體控制器104與可複寫式非揮發性記憶體模組106。
連接器102是用以耦接至主機系統101。主機系統101會下達指令給記憶體儲存裝置100。在本範例實施例中,連接器102是相容於序列先進附件(Serial Advanced Technology Attachment,SATA)標準。然而,必須瞭解的是,本發明不限於此,連接器102亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、高速周邊零件連接介面
(Peripheral Component Interconnect Express,PCI Express)標準、通用序列匯流排(Universal Serial Bus,USB)標準、安全數位(Secure Digital,SD)介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick,MS)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、崁入式多媒體儲存卡(Embedded Multimedia Card,eMMC)介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、小型快閃(Compact Flash,CF)介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。
記憶體控制器104用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令,並且根據主機系統101的指令在可複寫式非揮發性記憶體模組106中進行資料的寫入、讀取與抹除等運作。另一方面,欲寫入至可複寫式非揮發性記憶體模組106的資料會經由記憶體控制器104轉換為可複寫式非揮發性記憶體模組106所能接受的格式。
可複寫式非揮發性記憶體模組106(亦稱快閃記憶體)是耦接至記憶體控制器104,並且用以儲存主機系統101所寫入之資料。可複寫式非揮發性記憶體模組106具有實體抹除單元108(0)~108(A)。例如,實體抹除單元108(0)~108(A)可屬於同一個記憶體晶粒(die)或者屬於不同的記憶體晶粒。每一實體抹除單元分別具有複數個實體程式化單元,並且屬於同一個實體抹除單元之實體程式化
單元可被獨立地寫入且被同時地抹除。例如,每一實體抹除單元是由128個實體程式化單元所組成。然而,必須瞭解的是,本發明不限於此,每一實體抹除單元是可由64個實體程式化單元、256個實體程式化單元或其他任意個實體程式化單元所組成。
更詳細來說,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資料的最小單元。每一實體程式化單元通常包括資料位元區與冗餘位元區。資料位元區包含多個實體存取位址用以儲存使用者的資料,而冗餘位元區用以儲存系統的資料(例如,控制資訊與錯誤更正碼)。在本範例實施例中,每一個實體程式化單元的資料位元區中會包含4個實體存取位址,且一個實體存取位址的大小為512位元組(byte,B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體存取位址,本發明並不限制實體存取位址的大小以及個數。例如,實體抹除單元為實體區塊,並且實體程式化單元為實體頁面或實體扇。
在本範例實施例中,可複寫式非揮發性記憶體模組106為多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組,即一個記憶胞中可儲存至少2個位元資料。然而,本發明不限於此,可複寫式非揮發性記憶體模組106亦可是單階記憶胞(Single Level Cell,SLC)NAND型快閃
記憶體模組、複數階記憶胞(Trinary Level Cell,TLC)NAND型快閃記憶體模組、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
圖2是根據一範例實施例繪示模擬快閃記憶體的系統示意圖。
請參照圖2,模擬器200耦接至記憶體控制器104與資料處理單元250。模擬器200是用以模擬可複寫式非揮發性記憶體模組106的行為。特別的是,模擬器可以支援不同的記憶體類型。例如,單階記憶胞NAND型快閃記憶體模組、多階記憶胞NAND型快閃記憶體模組與複數階記憶胞NAND型快閃記憶體模組可屬於不同的記憶體類型。或者,不同的製造商所製造出的可複寫式非揮發性記憶體模組106可屬於不同的記憶體類型。值得注意的是,不同的記憶體類型可對應到不同的指令集,而不同的指令集之間可能不相容。舉例來說,某一製造商所定義的寫入指令可能不同於另一個製造商所定義的寫入指令。然而,模擬器200會提供多個記憶體類型所對應的多個指令集,並且這些指令集可以被更新。
資料處理單元250包括一或多個處理器與一個記憶單元,並且資料處理單元250會設定一個預設反應條件。若資料處理單元250接受到來自於模擬器200的一個指令,資料處理單元250會判斷此指令是否符合此預設反應條件並且根據此預設反應條件產生一個第一訊號。此外,資料處理單元250會將此第一訊號傳送給模擬器200。舉例來
說,若預設反應條件為對第n個寫入指令產生一寫入失敗的回應,其中n為正整數,則當資料處理單元250從模擬器200接收了一個寫入指令,而此寫入指令是要寫入一筆資料至一個實體程式化單元。而,則資料處理單元250會根據此預設反應條件判斷此寫入指令是否為從模擬器200接收到的第n個指令,其中n為正整數。若此寫入指令為第n個指令,則資料處理單元250會產生代表寫入失敗的第一訊息,並且將第一訊息傳送給模擬器200。然而,資料處理單元250也可以設定其他的預設反應條件,也可以根據預設反應條件產生讀取錯誤訊息、讀取成功訊息或寫入成功訊息,本發明並不在此限。值得注意的是,在本範例實施例中,資料處理單元250中可能不去執行真正寫入的程序,而直接回覆寫入失敗,或資料處理單元250不具有實體程式化單元,上述代表寫入失敗的第一訊息是模擬出來的。
具體來說,模擬器200包括了快閃記憶體介面202、偵測器210、處理器220、非快閃記憶體介面230與暫存記憶體240。
快閃記憶體介面202是用以耦接至記憶體控制器104。例如,快閃記憶體介面202會包括一或多個腳位與至少一個匯流排。記憶體控制器104會致能這些腳位並將資料放在匯流排上,藉此傳送一個指令給模擬器200。
偵測器210耦接至快閃記憶體介面202。偵測器210是用以接收來自記憶體控制器104的指令(亦稱第一指
令),並且根據此第一指令辨識模擬器200所提供的多個指令集中的一個第二指令。例如,偵測器210中包括了子單元211~214。每一個子單元211~214是對應至一個指令集,而每一個指令集中還包括多個指令。當偵測器210接收到第一指令以後,子單元211會判斷此第一指令是否符合所對應的多個指令的其中之一。相同的,子單元212~214也會判斷第一指令是否符合所對應的多個指令的其中之一。然而,在其他實施例中,偵測器210中可包括數目更多或更少的子單元,本發明並不在此限。
處理器220是用以控制模擬器200的整體操作。例如,處理器220是微處理器。然而,在其他實施例中,處理器220也可以是可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)或可程式化邏輯裝置(Programmable Logic Device,PLD)。
非快閃記憶體介面230耦接至處理器220,並且用以耦接至資料處理單元250。在本實施例中,非快閃記憶體介面230相容於USB標準。然而,在其他範例實施例中,非快閃記憶體介面230也可是相容於PATA標準、IEEE 1394標準、PCI Express標準、SATA標準、SD介面標準、UHS-I介面標準、UHS-II介面標準、MS介面標準、MMC介面標準、eMMC介面標準、UFS介面標準、CF介面標準、IDE標準、或其他適合的無線通訊標準(例如,WiFi或藍芽通訊)。
暫存記憶體240耦接至偵測器210、處理器220與非
快閃記憶體介面230,用以儲存資料或指令。其中,在本範例實施例中,模擬器200可為一顆晶片,即將快閃記憶體介面202、偵測器210、處理器220、非快閃記憶體介面230與暫存記憶體240以系統單晶片(System-on-a-chip,SoC)或系統構裝(system in package,SiP)的方式封裝在一顆晶片中。
當模擬器200耦接至記憶體控制器104以後,處理器220會透過快閃記憶體介面202與記憶體控制器104交換多個訊息。例如,處理器220會決定模擬器200所要模擬的一個記憶體類型,並且傳送此記憶體類型的辨識碼資訊給記憶體控制器104。記憶體控制器104可以根據此辨識資訊判斷模擬器200是屬於SLC或是MLC型的快閃記憶體。或者,記憶體控制器104也可以根據此辨識資訊得到一個快閃記憶體的製造商辨識碼。得到辨識資訊以後,記憶體控制器104會傳送符合模擬器200所模擬的記憶體類型的指令給模擬器200。
記憶體控制器104可透過快閃記憶體介面202上的接腳與匯流排傳送一個指令給模擬器200。例如,記憶體控制器104會致能一個寫入接腳,並且在匯流排上傳送一個指令辨識碼。模擬器200偵測到寫入接腳被致能以後會從匯流排讀取指令辨識碼。接著,記憶體控制器104會透過匯流排傳送一個記憶體位址與所要寫入的第一資料給模擬器200。藉此,記憶體控制器104可以將一個寫入指令傳送至模擬器200。換言之,此寫入指令會包括一個指令辨
識碼欄位、一個記憶體位址欄位與一個資料欄位,分別儲存指令辨識碼、記憶體位址與第一資料。在模擬器200接收到一個指令以後,子單元211~214會辨識此指令是否符合對應的指令集。
圖3是根據一範例實施例繪示一個子單元的操作示意圖。
請參照圖3,子單元211是對應至某一個記憶體類型,而指令集360會包括對應於此記憶體類型的多個指令。子單元211包括指標產生器320、多工器330、指令分析器340、比較器350、忙碌訊號產生器370、重置訊號產生器380與中斷訊號產生器390。其中多工器330耦接至指標產生器320,指令分析器340耦接至多工器330,並且比較器350耦接至指令分析器340與指標產生器320。
若子單元211從記憶體控制器104接收到一個指令,會將此指令儲存在佇列310當中。例如,子單元211是先接收到指令311,再接收到指令312。其中指令312的佇列順序是在指令311的佇列順序之後。在此範例實施例中,佇列310是儲存在暫存記憶體240當中。然而,在其他範例實施例中,佇列310也可以是儲存在子單元211的一個記憶體當中,本發明並不在此限。
指標產生器320會產生一個指標,多工器330會根據此指標從佇列310中選擇一個指令並將此指令傳送給指令分析器340。在此假設多工器330選擇了指令311。指令分析器340會分析指令311以產生一個分析結果。例如,指
令分析器340會判斷指令311中包括了指令辨識碼欄位,記憶體位址欄位,以及資料欄位。指令分析器340會將此分析結果傳送給比較器350。比較器350會根據此分析結果判斷指令311是否符合指令集360所包括的多個指令(亦稱第三指令)的其中之一。例如,比較器350會判斷指令集360中每一個指令的指令辨識碼是否相同於指令311的指令辨識碼。比較器350也可以進一步判斷指令集360中的指令是否有相對應的記憶體位址欄位與資料欄位。若比較器350判斷指令311符合指令集360中的一個指令(亦稱第二指令),則比較器350會驅動指標產生器320以更新指標(例如,將指標加上1),而更新後的指標用以指向佇列310中的下一個指令(例如,指令312)。若比較器350判斷指令311不符合指令集360中的任何一個指令,則指標產生器320會維持指標不變。
此外,若比較器350判斷指令311符合指令集360中的第一指令,忙碌訊號產生器370、重置訊號產生器380與中斷訊號產生器390會產生對應的訊號。例如,若指令311符合指令集360中的一個寫入指令,則忙碌訊號產生器370會產生一個忙碌訊號並傳送給記憶體控制器104,用以表示模擬器200正在處理一個指令,並不能接收其他訊號。另外,重置訊號產生器380會產生一個重置訊號,此重置訊號是用以指示開始辨識佇列310中的下一個指令。例如,重置訊號可用以改變子單元211中的變數或指標。另一方面,中斷訊號產生器390會產生一個中斷訊號,
此中斷訊息是用以傳送給資料處理單元250以通知辨識出的第二指令。
請參照回圖2,若偵測器210所辨識出的指令為寫入指令,處理器220會將此寫入指令所要寫入的第一資料儲存在暫存記憶體240中。處理器220也會將中斷訊號產生器390所產生的中斷訊息、此寫入指令、此寫入指令所要寫入的記憶體位址(亦稱第一記憶體位址)傳送給資料處理單元250。資料處理單元250會判斷寫入指令是否符合預設反應條件,並且根據預測條件產生一個第一訊號。資料處理單元250會將此第一訊號傳送給處理器220。並且,資料處理單元250會發送一個讀取指令給非快閃記憶體介面230,藉此從暫存記憶體240中讀取第一資料。資料處理單元250會將此第一資料儲存在資料處理單元250當中的記憶單元(例如,一個揮發性記憶體或是硬碟)。接下來,偵測器210會致能快閃記憶體介面202中的一個準備好/忙碌(Ready/Busy)接腳。記憶體控制器104偵測到準備好/忙碌接腳被致能以後,記憶體控制器104可繼續下達另一個指令給模擬器200。
另一方面,若偵測器210所辨識出的指令為讀取指令,處理器220會將中斷訊號產生器390所產生的中斷訊息、此讀取指令,此讀取指令所要讀取的記憶體位址(亦稱第二記憶體位址)傳送給資料處理單元250。接收到此讀取指令以後,資料處理單元250會判斷此讀取指令是否符合預設反應條件,並且根據預測條件產生第一訊號。此外,
資料處理單元250也會取得對應於第二記憶體位址的第二資料。例如,資料處理單元250會在其中的一個記憶單元中紀錄每一個記憶體位址所對應的資料,資料處理單元250可以根據第二記憶體位址從記憶單元中取得第二資料。接著,資料處理單元250會下達一個寫入指令給非快閃記憶體介面230,藉此將第二資料寫入至暫存記憶體240。偵測器210會致能快閃記憶體介面202中的準備好/忙碌接腳。若記憶體控制器104偵測到準備好/忙碌接腳被致能,會致能快閃記憶體介面202中的一個讀取接腳,藉此偵測器210會將第二資料透過快閃記憶體介面202傳送給記憶體控制器104。
在另一範例實施例中,資料處理單元250所執行的步驟是由處理器220所執行,而資料處理單元250可被實作為一個外部記憶體。並且,處理器220會將寫入指令所要寫入的第一資料儲存在此外部記憶體當中。
圖4是根據一範例實施例繪示快閃記體的模擬方法的流程圖。
請參照圖4,在步驟S402中,設定一預設反應條件。在步驟S404中,提供多個指令集,其中每一個指令集是對應至一記憶體類型。在步驟S406中,接收來自記憶體控制器的第一指令。在步驟S408中,根據第一指令辨識上述指令集中的第二指令。在步驟S410中,判斷是否符合預設反應條件。在步驟S412中,根據預設反應條件,取得對應第二指令的一訊號。在步驟S414中,傳送此訊
號至記憶體控制器。
值得注意的是,在此範例實施例中,步驟S402、S410與S412可以由資料處理單元250或是處理器220執行,並且圖4中各步驟可以有其他的執行順序(例如,步驟S402可以被執行於步驟S408之後),本發明並不在此限。然而,圖4中各步驟已說明如上,在此便不再贅述。
綜上所述,本發明範例實施例所提出的模擬方法與模擬器,可以支援不同的記憶體類型,並且這些記憶體類型的指令集可被更新。此外,回應給記憶體控制器的訊號是根據預設反應條件所產生。因此,此模擬器的使用會更有彈性。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100‧‧‧記憶體儲存裝置
101‧‧‧主機系統
102‧‧‧連接器
104‧‧‧記憶體控制器
106‧‧‧可複寫式非揮發性記憶體
108(0)~108(A)‧‧‧實體抹除單元
200‧‧‧模擬器
202‧‧‧快閃記憶體介面
210‧‧‧偵測器
211~214‧‧‧子單元
220‧‧‧處理器
230‧‧‧非快閃記憶體介面
240‧‧‧暫存記憶體
250‧‧‧資料處理單元
310‧‧‧佇列
311、312‧‧‧指令
320‧‧‧指標產生器
330‧‧‧多工器
340‧‧‧指令分析器
350‧‧‧比較器
360‧‧‧指令集
370‧‧‧忙碌訊號產生器
380‧‧‧重置訊號產生器
390‧‧‧中斷訊號產生器
S402、S404、S406、S408、S410、S412、S414‧‧‧可複寫式非揮發性記體的模擬方法的步驟
圖1是繪示記憶體儲存裝置的概要方塊圖。
圖2是根據一範例實施例繪示模擬快閃記憶體的系統示意圖。
圖3是根據一範例實施例繪示一個子單元的操作示意圖。
圖4是根據一範例實施例繪示快閃記憶體的模擬方法的流程圖。
S402、S404、S406、S408、S410、S412、S414‧‧‧快閃記憶體的模擬方法的步驟
Claims (15)
- 一種快閃記憶體的模擬方法,用於一模擬器,其中該模擬器用以耦接至一記憶體控制器,該模擬方法包括:設定一預設反應條件;提供多個指令集,其中每一該些指令集是對應至一記憶體類型;接收來自該記憶體控制器的一第一指令;根據該第一指令辨識該些指令集中的一第二指令;判斷該第二指令是否符合該預設反應條件;根據該預設反應條件,取得對應該第二指令的一第一訊號;傳送該第一訊號至該記憶體控制器;以及提供該記憶體控制器該些記憶體類型的其中之一的一辨識資訊,且於該接收來自該記憶體控制器的該第一指令的步驟中,該第一指令是屬於該其中之一記憶體類型的指令。
- 如申請專利範圍第1項所述之模擬方法,其中該第二指令為一寫入指令,並且該寫入指令是指示寫入一第一資料至一第一記憶體位址,該模擬方法更包括:將該第一資料儲存至該模擬器中的一暫存記憶體;透過該模擬器的一非快閃記憶體介面傳送一中斷訊號、該寫入指令與該第一記憶體位址至一資料處理單元,其中該資料處理單元用以根據該預設反應條件產生該第一訊號;以及 由該資料處理單元透過該非快閃記憶體介面從該暫存記憶體中讀取該第一資料並且將該第一資料儲存至該資料處理單元中。
- 如申請專利範圍第1項所述之模擬方法,其中該第二指令為一讀取指令,並且該讀取指令是指示讀取一第二記憶體位址,該模擬方法更包括:透過該模擬器的一非快閃記憶體介面傳送一中斷訊號、該讀取指令與該第二記憶體位置至一資料處理單元,其中該資料處理單元用以根據該預設反應條件產生該第一訊號;以及由該資料處理單元透過該非快閃記憶體介面將對應於該第二記憶體位址的一第二資料寫入至該模擬器的一暫存記憶體中。
- 如申請專利範圍第1項所述之模擬方法,其中該些指令集包括一第一指令集,並且該第一指令集包括多個第三指令,其中根據該第一指令辨識該些指令集中的該第二指令的步驟包括:根據一指標從一佇列中取得該第一指令;判斷該第一指令是否符合該些第三指令的其中之一;若該第一指令符合該些第三指令的其中之一,更新該指標,其中該第一指令符合的該第三指令為該第二指令;以及若該第一指令不符合該些第三指令的其中之一,維持該指標不變。
- 如申請專利範圍第4項所述之模擬方法,更包括:若該第一指令符合該些第三指令的其中之一,產生一重置訊號,其中該重置訊號指示開始辨識該佇列中的一第四指令,其中該第四指令的一佇列順序是在該第一指令的一佇列順序之後。
- 如申請專利範圍第4項所述之模擬方法,更包括:若該第一指令符合該些第三指令的其中之一,傳送一忙碌訊號給該記憶體控制器。
- 如申請專利範圍第4項所述之模擬方法,更包括:若該第一指令符合該些第三指令的其中之一,傳送一中斷訊號給一資料處理單元以通知該第二指令。
- 一種模擬器,用以模擬一快閃記憶體,該模擬器包括:一快閃記憶體介面,用以耦接至一記憶體控制器,並且接收來自該記憶體控制器的一第一指令;一偵測器,耦接至該快閃記憶體介面,用以提供多個指令集,其中每一該些指令集是對應至一記憶體類型,並且該偵測器用以根據該第一指令辨識該些指令集中的一第二指令;一處理器,耦接至該偵測器;以及一非快閃記憶體介面,耦接至該處理器,用以耦接至一資料處理單元,其中該資料處理單元用以設定一預設反應條件,並且判斷該第二指令是否符合該預設反應條件,其中該處理器用以根據該預設反應條件,取得對應該 第二指令的一第一訊號,並且傳送該第一訊號至該記憶體控制器,且該處理器更用以提供該記憶體控制器該些記憶體類型的其中之一的一辨識資訊。
- 如申請專利範圍第8項所述之模擬器,其中該第二指令為一寫入指令,該寫入指令是指示寫入一第一資料至一第一記憶體位址,該模擬器更包括:一暫存記憶體,其中,該處理器更用以將該第一資料儲存至該暫存記憶體,並且透過該非快閃記憶體介面傳送一中斷訊號、該寫入指令與該第一記憶體位址至該資料處理單元,其中,該資料處理單元用以透過該非快閃記憶體介面讀取該暫存記憶體中的該第一資料,並且將該第一資料儲存至該資料處理單元中。
- 如申請專利範圍第8項所述之模擬器,其中該第二指令為一讀取指令,並且該讀取指令是指示讀取一第二記憶體位址,該模擬器更包括:一暫存記憶體,其中,該處理器透過該非快閃記憶體介面傳送一中斷訊號、該讀取指令與該第二記憶體位置至該資料處理單元,其中該資料處理單元透過該非快閃記憶體介面將對應於該第二記憶體位址的一第二資料寫入至該暫存記憶體中。
- 如申請專利範圍第8項所述之模擬器,其中該些指令集包括一第一指令集,該第一指令集包括多個第三指 令,該偵測器包括一子單元,並且該子單元包括:一指標產生器,用以產生一指標;一多工器,耦接至該指標產生器,用以根據該指標從一佇列中取得該第一指令;一指令分析器,耦接至該多工器,用以分析該第一指令以產生一分析結果;以及一比較器,耦接至該指令分析器與該指標產生器,用以根據該分析結果判斷該第一指令是否符合該些第三指令的其中之一,若該第一指令符合該些第三指令的其中之一,該指標產生器用以更新該指標,其中該第一指令符合的該第三指令為該第二指令,若該第一指令不符合該些第三指令的其中之一,該指標產生器用以維持該指標不變。
- 如申請專利範圍第11項所述之模擬器,其中該子單元還包括一重置訊號產生器,若該第一指令符合該些第三指令的其中之一,該重置訊號產生器用以產生一重置訊號,其中該重置訊號指示開始辨識該佇列中的一第四指令,並且該第四指令的一佇列順序是在該第一指令的一佇列順序之後。
- 如申請專利範圍第11項所述之模擬器,其中該子單元還包括一忙碌訊號產生器,若該第一指令符合該些第三指令的其中之一,該忙碌訊號產生器用以傳送一忙碌訊號給該記憶體控制器。
- 如申請專利範圍第11項所述之模擬器,其中該子單元還包括一中斷訊號產生器,若該第一指令符合該些第三指令的其中之一,該中斷訊號產生器用以傳送一中斷訊號給該資料處理單元以通知該第二指令。
- 如申請專利範圍第8項所述之模擬器,其中該快閃記憶體介面、該偵測器、該處理器、該非快閃記憶體介面與一暫存記憶體是以系統單晶片(System-on-a-chip)或系統構裝(system in package)的方式封裝。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101141022A TWI492054B (zh) | 2012-11-05 | 2012-11-05 | 快閃記憶體的模擬方法與模擬器 |
US13/723,114 US9858366B2 (en) | 2012-11-05 | 2012-12-20 | Simulator and simulating method for flash memory background |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101141022A TWI492054B (zh) | 2012-11-05 | 2012-11-05 | 快閃記憶體的模擬方法與模擬器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201418982A TW201418982A (zh) | 2014-05-16 |
TWI492054B true TWI492054B (zh) | 2015-07-11 |
Family
ID=50623165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101141022A TWI492054B (zh) | 2012-11-05 | 2012-11-05 | 快閃記憶體的模擬方法與模擬器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9858366B2 (zh) |
TW (1) | TWI492054B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI585769B (zh) * | 2015-10-23 | 2017-06-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及快閃記憶體之偵測方法 |
US10423568B2 (en) * | 2015-12-21 | 2019-09-24 | Microsemi Solutions (U.S.), Inc. | Apparatus and method for transferring data and commands in a memory management environment |
TWI590051B (zh) * | 2016-06-21 | 2017-07-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
TWI607448B (zh) * | 2016-09-07 | 2017-12-01 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 |
CN107818808B (zh) * | 2016-09-14 | 2023-09-12 | 群联电子股份有限公司 | 数据写入方法、存储器控制电路单元与存储器存储装置 |
CN108804272B (zh) * | 2018-05-25 | 2021-08-27 | 深圳市德明利技术股份有限公司 | 一种高速的闪存模拟器及其模拟方法 |
JP2023091307A (ja) * | 2021-12-20 | 2023-06-30 | キオクシア株式会社 | 半導体装置および制御方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075395A1 (en) * | 2004-10-01 | 2006-04-06 | Lee Charles C | Flash card system |
TWI302652B (en) * | 2005-10-14 | 2008-11-01 | Via Tech Inc | Monitoring system and monitoring method for monitoring a chip and a memory |
TW201227745A (en) * | 2010-12-16 | 2012-07-01 | Asolid Technology Co Ltd | Development system for a flash memory module |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6142682A (en) * | 1997-06-13 | 2000-11-07 | Telefonaktiebolaget Lm Ericsson | Simulation of computer processor |
TW490637B (en) * | 2001-01-16 | 2002-06-11 | Ind Tech Res Inst | Memory emulator for simulating memory components of different interface specification and not restrained to memory space |
US7277978B2 (en) * | 2003-09-16 | 2007-10-02 | Micron Technology, Inc. | Runtime flash device detection and configuration for flash data management software |
US7739472B2 (en) * | 2005-11-22 | 2010-06-15 | Sandisk Corporation | Memory system for legacy hosts |
JP2009526294A (ja) * | 2006-02-09 | 2009-07-16 | フリースケール セミコンダクター インコーポレイテッド | メモリ素子を有する電子デバイス及びその動作方法 |
CN101256469A (zh) | 2007-03-02 | 2008-09-03 | 群联电子股份有限公司 | 具有仿真系统的闪存及其方法 |
US7813210B2 (en) * | 2007-08-16 | 2010-10-12 | Unity Semiconductor Corporation | Multiple-type memory |
US7739562B2 (en) * | 2007-08-17 | 2010-06-15 | International Business Machines Corporation | Programmable diagnostic memory module |
US7593284B2 (en) * | 2007-10-17 | 2009-09-22 | Unity Semiconductor Corporation | Memory emulation using resistivity-sensitive memory |
US7822913B2 (en) * | 2007-12-20 | 2010-10-26 | Unity Semiconductor Corporation | Emulation of a NAND memory system |
US8117587B1 (en) * | 2008-06-03 | 2012-02-14 | Richard Paul Testardi | Microcontroller-resident software development environment supporting application-level asynchronous event handling, interactive debugging and pin variables for embedded systems |
US9026424B1 (en) * | 2008-10-27 | 2015-05-05 | Juniper Networks, Inc. | Emulation of multiple instruction sets |
US20100250875A1 (en) * | 2009-03-25 | 2010-09-30 | Silicon Laboratories Inc. | Eeprom emulation using flash memory |
US8458565B2 (en) * | 2011-02-07 | 2013-06-04 | Texas Instruments Incorporated | Flash-based EEPROM emulation using error correction control |
WO2013101224A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Platform independent isa emulator as middleware |
-
2012
- 2012-11-05 TW TW101141022A patent/TWI492054B/zh active
- 2012-12-20 US US13/723,114 patent/US9858366B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060075395A1 (en) * | 2004-10-01 | 2006-04-06 | Lee Charles C | Flash card system |
TWI302652B (en) * | 2005-10-14 | 2008-11-01 | Via Tech Inc | Monitoring system and monitoring method for monitoring a chip and a memory |
TW201227745A (en) * | 2010-12-16 | 2012-07-01 | Asolid Technology Co Ltd | Development system for a flash memory module |
Also Published As
Publication number | Publication date |
---|---|
TW201418982A (zh) | 2014-05-16 |
US20140129206A1 (en) | 2014-05-08 |
US9858366B2 (en) | 2018-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI492054B (zh) | 快閃記憶體的模擬方法與模擬器 | |
TWI551991B (zh) | 記憶體管理方法與系統及其記憶體儲存裝置 | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
US9519436B1 (en) | Memory erasing method, memory controller, and memory storage apparatus | |
TWI584291B (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
TW201729099A (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
US10437484B2 (en) | Data protecting method, memory control circuit unit and memory storage device | |
TWI486765B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
TW201346551A (zh) | 資料處理方法、記憶體控制器與記憶體儲存裝置 | |
CN111078146B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
TWI591640B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI616807B (zh) | 資料寫入方法以及儲存控制器 | |
CN107045890B (zh) | 数据保护方法、存储器控制电路单元及存储器存储装置 | |
US9733832B2 (en) | Buffer memory accessing method, memory controller and memory storage device | |
US10871909B2 (en) | Block management method, memory control circuit unit and apparatus using mapping tables and block recognition machine learning with block parameters as training data | |
TW201432709A (zh) | 控制方法、連接器與記憶體儲存裝置 | |
TWI494944B (zh) | 記憶體模組偵測方法、記憶體控制電路單元及儲存裝置 | |
US20170139593A1 (en) | Buffer memory management method, memory control circuit unit and memory storage device | |
CN103823704A (zh) | 闪存的模拟方法与模拟器 | |
TWI573033B (zh) | 資料搜尋方法、記憶體儲存裝置及記憶體控制電路單元 | |
US9268554B2 (en) | Controlling method, memory controller, and data transmission system | |
CN112802512B (zh) | 存储控制器以及存储装置初始化方法 | |
TW201810283A (zh) | 記憶體抹除方法、記憶體控制電路單元及記憶體儲存裝置 | |
TW201730889A (zh) | 資料程式化方法、記憶體控制電路單元及記憶體儲存裝置 |